diff --git a/.docker/Dockerfile b/.docker/Dockerfile index 614d81e17..c062b7c3c 100644 --- a/.docker/Dockerfile +++ b/.docker/Dockerfile @@ -32,5 +32,3 @@ RUN conda run -p /env python -m pip install --no-deps /pkg SHELL ["conda", "run", "-p", "/env", "/bin/bash", "-c" ] RUN python -m ipykernel install --name cell2mol --display-name "cell2mol env" USER ${NB_USER} - - diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 000000000..cf5244956 --- /dev/null +++ b/.gitattributes @@ -0,0 +1 @@ +tests/fixtures/*.cell filter=lfs diff=lfs merge=lfs -text diff --git a/.github/actions/setup/action.yml b/.github/actions/setup/action.yml new file mode 100644 index 000000000..228bd9098 --- /dev/null +++ b/.github/actions/setup/action.yml @@ -0,0 +1,23 @@ +name: "Setup dev environment" +description: "Setup Python development environment with uv" + +inputs: + uv-version: + description: "Version of uv to install" + required: false + default: "0.8.17" + +runs: + using: "composite" + steps: + - name: Install uv + uses: astral-sh/setup-uv@v6.7.0 + with: + version: ${{ inputs.uv-version }} + enable-cache: true + cache-dependency-glob: uv.lock + + - name: Set up Python + uses: actions/setup-python@v5.4.0 + with: + python-version-file: pyproject.toml diff --git a/.github/workflows/code-quality.yml b/.github/workflows/code-quality.yml new file mode 100644 index 000000000..b4fd0a54e --- /dev/null +++ b/.github/workflows/code-quality.yml @@ -0,0 +1,36 @@ +name: Code quality checks + +on: + push: + pull_request: + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +jobs: + ci: + name: Lint & Test + runs-on: ubuntu-24.04 + steps: + - uses: actions/checkout@v5 + with: + lfs: true + + - name: Setup environment + uses: ./.github/actions/setup + + # TODO: add ruff check + # - name: Ruff check + # run: uv run --dev ruff check cell2mol --output-format=github + + - name: Ruff format + run: uv run --dev ruff format --check + + - name: Pre-commit hooks + if: ${{ !cancelled() }} + run: SKIP=ruff-format uv run --dev pre-commit run --all-files + + - name: Run unit tests + if: ${{ !cancelled() }} + run: uv run --group test pytest diff --git a/.github/workflows/python-package-conda.yml b/.github/workflows/python-package-conda.yml deleted file mode 100644 index 44416f821..000000000 --- a/.github/workflows/python-package-conda.yml +++ /dev/null @@ -1,45 +0,0 @@ -name: Python Package using Conda - -on: [push] - -jobs: - build-linux: - runs-on: ubuntu-latest - defaults: - run: - shell: bash -l {0} - strategy: - max-parallel: 5 - - steps: - - uses: actions/checkout@v2 - - name: Set up Python 3.9 - uses: actions/setup-python@v2 - with: - python-version: 3.9 - - name: Add conda to system path - run: | - # $CONDA is an environment variable pointing to the root of the miniconda directory - echo $CONDA/bin >> $GITHUB_PATH - - name: Install dependencies - run: | - conda env create -n cell2mol --file environment.yml - source activate cell2mol - - name: Lint with flake8 - run: | - source activate cell2mol - conda list - conda install flake8 - # stop the build if there are Python syntax errors or undefined names - flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics - # exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide - flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics - - name: Install cell2mol - run: | - source activate cell2mol - pip install . - - name: Test with pytest - run: | - source activate cell2mol - conda install pytest - pytest --verbose diff --git a/.gitignore b/.gitignore index b62e0f177..3868a681c 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,5 @@ +*.out + __pycache__/ *.pyc .coverage @@ -5,6 +7,7 @@ __pycache__/ .pytest_cache .ipynb_checkpoints/* .ipynb_checkpoints/ +playground/* # Distribution/packaging build/ diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml new file mode 100644 index 000000000..5eaca6032 --- /dev/null +++ b/.pre-commit-config.yaml @@ -0,0 +1,20 @@ +default_stages: [pre-commit, commit-msg] + +repos: + - repo: https://github.com/pre-commit/pre-commit-hooks + rev: v6.0.0 + hooks: + - id: check-case-conflict + - id: check-json + - id: check-merge-conflict + - id: check-symlinks + - id: check-toml + - id: end-of-file-fixer + - id: trailing-whitespace + + - repo: https://github.com/astral-sh/ruff-pre-commit + rev: v0.13.1 + hooks: + # - id: ruff-check + # args: [--fix] + - id: ruff-format diff --git a/.python-version b/.python-version new file mode 100644 index 000000000..24ee5b1be --- /dev/null +++ b/.python-version @@ -0,0 +1 @@ +3.13 diff --git a/.vscode/extensions.json b/.vscode/extensions.json new file mode 100644 index 000000000..5d21c814d --- /dev/null +++ b/.vscode/extensions.json @@ -0,0 +1,5 @@ +{ + "recommendations": [ + "charliermarsh.ruff" + ] +} diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 000000000..618aa6a17 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,6 @@ +{ + "editor.formatOnSave": true, + "[python]": { + "editor.defaultFormatter": "charliermarsh.ruff" + } +} diff --git a/App.ipynb b/App.ipynb index fdcff1f64..a5a59a5d1 100644 --- a/App.ipynb +++ b/App.ipynb @@ -38,7 +38,6 @@ } ], "source": [ - "import numpy as np\n", "import cell2mol\n", "from ipywidgets import interactive, widgets, HTML, Button\n", "from typing import Callable, Any\n", @@ -47,26 +46,21 @@ "import markdown\n", "import codecs\n", "import pickle\n", - "from IPython.display import display, FileLink, clear_output\n", + "from IPython.display import display, FileLink\n", "from contextlib import contextmanager\n", - "from io import StringIO \n", + "from io import StringIO\n", "import sys\n", "import py3Dmol\n", - "import rdkit\n", - "from rdkit import Chem\n", - "from rdkit.Chem import AllChem\n", - "from rdkit.Chem import Draw\n", - "from rdkit.Chem.Draw import IPythonConsole\n", "\n", "\n", - "warnings.simplefilter('ignore')\n", + "warnings.simplefilter(\"ignore\")\n", "html_description = markdown.markdown(\"\"\"\n", "cell2mol is able to analyze cif files containing crystallographic unit cell information and provide a chemical interpretation of the individual molecular species. Run the entire notebook and use the widget to proceed through the four tabs sequentially.\"\"\")\n", - "description=HTML(html_description)\n", + "description = HTML(html_description)\n", "\n", "pre_accordion = widgets.Accordion()\n", "pre_accordion.children = [description]\n", - "pre_accordion.set_title(0, 'Description')\n", + "pre_accordion.set_title(0, \"Description\")\n", "pre_accordion.selected_index = None\n", "pre_accordion" ] @@ -89,14 +83,16 @@ "\n", "# Define some basic functionalities\n", "\n", + "\n", "class Capturing(list):\n", " def __enter__(self):\n", " self._stdout = sys.stdout\n", " sys.stdout = self._stringio = StringIO()\n", " return self\n", + "\n", " def __exit__(self, *args):\n", " self.extend(self._stringio.getvalue().splitlines())\n", - " del self._stringio # free up some memory\n", + " del self._stringio # free up some memory\n", " sys.stdout = self._stdout\n", "\n", "\n", @@ -104,236 +100,299 @@ " def __init__(self, action: Callable[bool, Any], WidgetOut, **kwargs):\n", " super(ExecutionButton, self).__init__(**kwargs)\n", " self.action = action\n", - " self.tooltip='Click me to run'\n", - " self.description='Run'\n", - " self.icon='fa-check'\n", + " self.tooltip = \"Click me to run\"\n", + " self.description = \"Run\"\n", + " self.icon = \"fa-check\"\n", " self.output = WidgetOut\n", " self.on_click(self.__on_click)\n", - " \n", + "\n", " @contextmanager\n", " def show_loading(self):\n", - " self.description = 'Running...'\n", - " self.icon = 'fa-stop'\n", + " self.description = \"Running...\"\n", + " self.icon = \"fa-stop\"\n", " yield\n", - " self.description = 'Ready to run again'\n", - " self.icon = 'fa-check'\n", - " \n", + " self.description = \"Ready to run again\"\n", + " self.icon = \"fa-check\"\n", + "\n", " def __on_click(self, b):\n", " with self.show_loading():\n", " toprint = self.action(run=True, out=self.output)\n", - " with self.output :\n", + " with self.output:\n", " for line in toprint:\n", " print(line)\n", "\n", - "def printing_text (cell, output):\n", + "\n", + "def printing_text(cell, output):\n", " dicts = {}\n", " list_show = []\n", " for idx, mol in enumerate(cell.moleclist):\n", - " if mol.type == \"Complex\": \n", + " if mol.type == \"Complex\":\n", " if mol.formula in dicts.keys():\n", - " dicts[mol.formula] +=1 \n", + " dicts[mol.formula] += 1\n", " else:\n", " dicts[mol.formula] = 1\n", " list_show.append(idx)\n", "\n", " for idx, mol in enumerate(cell.moleclist):\n", - " if mol.type == \"Other\": \n", + " if mol.type == \"Other\":\n", " if mol.formula in dicts.keys():\n", - " dicts[mol.formula] +=1 \n", + " dicts[mol.formula] += 1\n", " else:\n", " dicts[mol.formula] = 1\n", " list_show.append(idx)\n", "\n", " for i in list_show:\n", - " mol=cell.moleclist[i]\n", - " if mol.type == \"Complex\": \n", - " output.extend([f\"[Complex] Formula : {mol.formula}\\t(occurrence : {dicts[mol.formula]})\"])\n", + " mol = cell.moleclist[i]\n", + " if mol.type == \"Complex\":\n", + " output.extend(\n", + " [\n", + " f\"[Complex] Formula : {mol.formula}\\t(occurrence : {dicts[mol.formula]})\"\n", + " ]\n", + " )\n", " output.extend([f\" total charge : {mol.totcharge}\"])\n", " output.extend([\"\"])\n", "\n", - " if mol.hapticity == False :\n", + " if mol.hapticity == False:\n", " for met in mol.metalist:\n", " output.extend([f\" >> Metal : {met.label}\"])\n", " output.extend([f\" Metal oxidation state : {met.totcharge}\"])\n", - " output.extend([f\" coordination number: {met.coordination_number}\"])\n", - " output.extend([f\" metal-coordinating atoms: {met.coordinating_atoms}\"])\n", - " output.extend([f\" coordination geometry: {met.geometry}\\t(*deviation value : {met.deviation})\"])\n", - " output.extend([\" *deviation value: closer to 0, less distortion in a given geometry\"]) \n", - " else :\n", + " output.extend(\n", + " [f\" coordination number: {met.coordination_number}\"]\n", + " )\n", + " output.extend(\n", + " [f\" metal-coordinating atoms: {met.coordinating_atoms}\"]\n", + " )\n", + " output.extend(\n", + " [\n", + " f\" coordination geometry: {met.geometry}\\t(*deviation value : {met.deviation})\"\n", + " ]\n", + " )\n", + " output.extend(\n", + " [\n", + " \" *deviation value: closer to 0, less distortion in a given geometry\"\n", + " ]\n", + " )\n", + " else:\n", " for met in mol.metalist:\n", " output.extend([f\" >> Metal : {met.label}\"])\n", " output.extend([f\" Metal oxidation state : {met.totcharge}\"])\n", - " output.extend([f\" Haptic ligand(s) bound to metal. Coordination number and geometry not shown\"])\n", + " output.extend(\n", + " [\n", + " \" Haptic ligand(s) bound to metal. Coordination number and geometry not shown\"\n", + " ]\n", + " )\n", " output.extend([\"\"])\n", "\n", " for lig in mol.ligandlist:\n", " output.extend([f\" >> Ligand Formula : {lig.formula}\"])\n", " output.extend([f\" charge : {lig.totcharge}\"])\n", - " if lig.hapticity == True :\n", + " if lig.hapticity == True:\n", " output.extend([f\" hapticity: {lig.hapttype}\"])\n", - " else : \n", + " else:\n", " output.extend([f\" denticity: {lig.totmconnec}\"])\n", " output.extend([f\" smiles: {lig.smiles}\"])\n", " output.extend([\"\"])\n", "\n", - " elif mol.type == \"Other\" :\n", - " output.extend([f\"[Other] Formula : {mol.formula}\\t(occurrence : {dicts[mol.formula]})\"])\n", + " elif mol.type == \"Other\":\n", + " output.extend(\n", + " [\n", + " f\"[Other] Formula : {mol.formula}\\t(occurrence : {dicts[mol.formula]})\"\n", + " ]\n", + " )\n", " output.extend([f\" charge: {mol.totcharge}\"])\n", " output.extend([f\" smiles: {mol.smiles}\"])\n", "\n", " return output\n", - " \n", - "def printing_structure (natoms, labels, coord):\n", - " if natoms >=2 :\n", - " xyz = f'''{natoms}\\n\\n'''\n", + "\n", + "\n", + "def printing_structure(natoms, labels, coord):\n", + " if natoms >= 2:\n", + " xyz = f\"\"\"{natoms}\\n\\n\"\"\"\n", " for l, c in zip(labels, coord):\n", - " xyz += f'''{l} {c[0]} {c[1]} {c[2]}\\n''' \n", - " # print(xyz) \n", - " xyzview = py3Dmol.view(width=400,height=400)\n", - " xyzview.addModel(xyz,'xyz')\n", - " xyzview.setStyle({'stick':{}})\n", - " xyzview.setBackgroundColor('0xeeeeee')\n", - " xyzview.animate({'loop': 'backAndForth'})\n", + " xyz += f\"\"\"{l} {c[0]} {c[1]} {c[2]}\\n\"\"\"\n", + " # print(xyz)\n", + " xyzview = py3Dmol.view(width=400, height=400)\n", + " xyzview.addModel(xyz, \"xyz\")\n", + " xyzview.setStyle({\"stick\": {}})\n", + " xyzview.setBackgroundColor(\"0xeeeeee\")\n", + " xyzview.animate({\"loop\": \"backAndForth\"})\n", " xyzview.zoomTo()\n", " xyzview.show()\n", - " else :\n", + " else:\n", " pass\n", - " \n", - "def printing_structure_cell (cell):\n", + "\n", + "\n", + "def printing_structure_cell(cell):\n", " dicts = {}\n", " list_show = []\n", " for idx, mol in enumerate(cell.moleclist):\n", - " if mol.type == \"Complex\": \n", + " if mol.type == \"Complex\":\n", " if mol.formula in dicts.keys():\n", - " dicts[mol.formula] +=1 \n", + " dicts[mol.formula] += 1\n", " else:\n", " dicts[mol.formula] = 1\n", " list_show.append(idx)\n", "\n", " for idx, mol in enumerate(cell.moleclist):\n", - " if mol.type == \"Other\": \n", + " if mol.type == \"Other\":\n", " if mol.formula in dicts.keys():\n", - " dicts[mol.formula] +=1 \n", + " dicts[mol.formula] += 1\n", " else:\n", " dicts[mol.formula] = 1\n", " list_show.append(idx)\n", "\n", " for i in list_show:\n", - " mol=cell.moleclist[i]\n", - " if mol.type == \"Complex\": \n", - " print(f\"[Complex] Formula : {mol.formula}\\t(occurrence : {dicts[mol.formula]})\")\n", + " mol = cell.moleclist[i]\n", + " if mol.type == \"Complex\":\n", + " print(\n", + " f\"[Complex] Formula : {mol.formula}\\t(occurrence : {dicts[mol.formula]})\"\n", + " )\n", " print(f\" total charge : {mol.totcharge}\")\n", " printing_structure(mol.natoms, mol.labels, mol.coord)\n", " print(\"\")\n", - " \n", - " if mol.hapticity == False :\n", + "\n", + " if mol.hapticity == False:\n", " for met in mol.metalist:\n", " print(f\" >> Metal : {met.label}\")\n", " print(f\" metal oxidation state : {met.totcharge}\")\n", " print(f\" coordination number: {met.coordination_number}\")\n", " print(f\" metal-coordinating atoms: {met.coordinating_atoms}\")\n", - " print(f\" coordination geometry: {met.geometry}\\t(*deviation value : {met.deviation})\")\n", - " print(\" *deviation value: closer to 0, less distortion in a given geometry\") \n", + " print(\n", + " f\" coordination geometry: {met.geometry}\\t(*deviation value : {met.deviation})\"\n", + " )\n", + " print(\n", + " \" *deviation value: closer to 0, less distortion in a given geometry\"\n", + " )\n", " print(\"\")\n", - " else :\n", + " else:\n", " for met in mol.metalist:\n", " print(f\" >> Metal : {met.label}\")\n", " print(f\" metal oxidation state : {met.totcharge}\")\n", - " print(\" Haptic ligand(s) bound to metal. Coordination number and geometry not shown\")\n", + " print(\n", + " \" Haptic ligand(s) bound to metal. Coordination number and geometry not shown\"\n", + " )\n", " print(\"\")\n", - " \n", + "\n", " for lig in mol.ligandlist:\n", " print(f\" >> Ligand Formula : {lig.formula}\")\n", " print(f\" charge : {lig.totcharge}\")\n", - " if lig.hapticity == True :\n", + " if lig.hapticity == True:\n", " print(f\" hapticity: {lig.hapttype}\")\n", - " else :\n", + " else:\n", " print(f\" denticity: {lig.totmconnec}\")\n", " print(f\" smiles: {lig.smiles}\")\n", " print(\"\")\n", " printing_structure(lig.natoms, lig.labels, lig.coord)\n", "\n", - "\n", - " elif mol.type == \"Other\" :\n", - " print(f\"[Other] Formula : {mol.formula}\\t(occurrence : {dicts[mol.formula]})\")\n", + " elif mol.type == \"Other\":\n", + " print(\n", + " f\"[Other] Formula : {mol.formula}\\t(occurrence : {dicts[mol.formula]})\"\n", + " )\n", " print(f\" charge: {mol.totcharge}\")\n", " print(f\" smiles: {mol.smiles}\")\n", "\n", - " printing_structure(mol.natoms, mol.labels, mol.coord) \n", - " \n", + " printing_structure(mol.natoms, mol.labels, mol.coord)\n", + "\n", + "\n", "#############################\n", "# STEP 1: Choose and upload, define widgets\n", "#############################\n", "\n", "Widget1UploadConfiguration = widgets.FileUpload(\n", - " accept='.cif', # Accepted file extension e.g. '.cif'\n", - " multiple=False, # True to accept multiple files upload else False\n", - " wait=True\n", + " accept=\".cif\", # Accepted file extension e.g. '.cif'\n", + " multiple=False, # True to accept multiple files upload else False\n", + " wait=True,\n", ")\n", "\n", - "examples = ('Transition metal complex', 'cell2mol/test/cif/AJEPIP.cif'),\n", - "widget_choose_filename = widgets.Dropdown(options=examples,description='Structure:')\n", + "examples = ((\"Transition metal complex\", \"cell2mol/test/cif/AJEPIP.cif\"),)\n", + "widget_choose_filename = widgets.Dropdown(options=examples, description=\"Structure:\")\n", "\n", "Widget1Out = widgets.Output()\n", + "\n", + "\n", "def chooseAndPlotConfigurationAltOutput(filename):\n", " Widget1Out.clear_output()\n", - " #with Widget1Out:\n", + " # with Widget1Out:\n", " # plot_from_file(filename)\n", - " \n", - "Widget1ExampleConfiguration = interactive(chooseAndPlotConfigurationAltOutput, filename=widget_choose_filename)\n", + "\n", + "\n", + "Widget1ExampleConfiguration = interactive(\n", + " chooseAndPlotConfigurationAltOutput, filename=widget_choose_filename\n", + ")\n", + "\n", "\n", "# This function updates the dropdown list when a new file is uploaded\n", "def updateWidget1ExampleConfiguration(*args):\n", " uploaded = next(iter(Widget1UploadConfiguration.value))\n", - " cif_content = codecs.decode(uploaded['content'], encoding=\"utf-8\")\n", + " cif_content = codecs.decode(uploaded[\"content\"], encoding=\"utf-8\")\n", " print(cif_content)\n", - " cif_name = uploaded['name']\n", - " mypath=\"./uploaded/\"\n", - " with open(mypath + cif_name, 'w') as f: \n", + " cif_name = uploaded[\"name\"]\n", + " mypath = \"./uploaded/\"\n", + " with open(mypath + cif_name, \"w\") as f:\n", " f.write(cif_content)\n", - " found_files=[]\n", + " found_files = []\n", " for f in os.listdir(mypath):\n", " found_files.append(f)\n", " all_files = found_files\n", " widget_choose_filename.options = all_files\n", - " \n", "\n", - "Widget1UploadConfiguration.observe(updateWidget1ExampleConfiguration,names='value')\n", - "Widget1ExamplesAndUpload = widgets.HBox([Widget1ExampleConfiguration,Widget1UploadConfiguration])\n", - "Widget1Text = HTML(markdown.markdown(\"\"\"\n", + "\n", + "Widget1UploadConfiguration.observe(updateWidget1ExampleConfiguration, names=\"value\")\n", + "Widget1ExamplesAndUpload = widgets.HBox(\n", + " [Widget1ExampleConfiguration, Widget1UploadConfiguration]\n", + ")\n", + "Widget1Text = HTML(\n", + " markdown.markdown(\"\"\"\n", "Choose a structure from the examples or upload your own in .cif format [https://en.wikipedia.org/wiki/Crystallographic_Information_File].\n", - "\"\"\"))\n", - "Widget1 = widgets.VBox([Widget1Text,Widget1ExamplesAndUpload,Widget1Out])\n", + "\"\"\")\n", + ")\n", + "Widget1 = widgets.VBox([Widget1Text, Widget1ExamplesAndUpload, Widget1Out])\n", "\n", - "Widget2Text = HTML(markdown.markdown(\"\"\"\n", + "Widget2Text = HTML(\n", + " markdown.markdown(\"\"\"\n", "Will run cell2info on the cif file selected in the drop down menu in the previous tab. Should run almost instantaneously. When finished, output will be printed below, then go to next tab!\n", - "\"\"\"))\n", - "Widget2BottomText = HTML(markdown.markdown(\"\"\"\n", + "\"\"\")\n", + ")\n", + "Widget2BottomText = HTML(\n", + " markdown.markdown(\"\"\"\n", "cell2info output:\n", - "\"\"\"))\n", - "Widget2Out = widgets.Output(layout={'border': '1px solid black'})\n", - "Widget3Text = HTML(markdown.markdown(\"\"\"\n", + "\"\"\")\n", + ")\n", + "Widget2Out = widgets.Output(layout={\"border\": \"1px solid black\"})\n", + "Widget3Text = HTML(\n", + " markdown.markdown(\"\"\"\n", "Will run cell2mol on the info file obtained in the previous tab from the cif file in the first tab. Takes some time to run. When finished, output will be printed below.\n", - "\"\"\"))\n", - "Widget3BottomText = HTML(markdown.markdown(\"\"\"\n", + "\"\"\")\n", + ")\n", + "Widget3BottomText = HTML(\n", + " markdown.markdown(\"\"\"\n", "cell2mol output:\n", - "\"\"\"))\n", - "Widget3Out = widgets.Output(layout={'border': '1px solid black'})\n", + "\"\"\")\n", + ")\n", + "Widget3Out = widgets.Output(layout={\"border\": \"1px solid black\"})\n", "\n", - "Widget4Text = HTML(markdown.markdown(\"\"\"\n", + "Widget4Text = HTML(\n", + " markdown.markdown(\"\"\"\n", "Will display the cell2mol interpreted molecules in 3D.\n", - "\"\"\"))\n", - "Widget4Out = widgets.Output(layout={'border': '1px solid black'})\n", - "Widget4BottomText = HTML(markdown.markdown(\"\"\"\n", - "\"\"\"))\n", + "\"\"\")\n", + ")\n", + "Widget4Out = widgets.Output(layout={\"border\": \"1px solid black\"})\n", + "Widget4BottomText = HTML(\n", + " markdown.markdown(\"\"\"\n", + "\"\"\")\n", + ")\n", "\n", "\n", - "Widget5Text = HTML(markdown.markdown(\"\"\"\n", + "Widget5Text = HTML(\n", + " markdown.markdown(\"\"\"\n", "You can download the resulting cell file, from which you can run your own analysis.\n", - "\"\"\"))\n", - "Widget5BottomText = HTML(markdown.markdown(\"\"\"\n", - "\"\"\"))\n", - "Widget5Out = widgets.Output(layout={'border': '1px solid black'})\n", + "\"\"\")\n", + ")\n", + "Widget5BottomText = HTML(\n", + " markdown.markdown(\"\"\"\n", + "\"\"\")\n", + ")\n", + "Widget5Out = widgets.Output(layout={\"border\": \"1px solid black\"})\n", "\n", "# Widget6Text = HTML(markdown.markdown(\"\"\"\n", "# Clear output\n", @@ -342,94 +401,108 @@ "# \"\"\"))\n", "# Widget6Out = widgets.Output(layout={'border': '1px solid black'})\n", "\n", + "\n", "#############################\n", "# STEP 2: Run cell2info\n", "#############################\n", "def run_cell2info(run=False, out=None):\n", - " if run :\n", + " if run:\n", " cif_name = widget_choose_filename.value\n", - " if \"/\" in cif_name :\n", + " if \"/\" in cif_name:\n", " cif_name = cif_name.split(\"/\")[-1]\n", " refcode = cif_name.split(\"/\")[-1].split(\".\")[-2]\n", - " info_name = cif_name.replace('.cif', '.info')\n", - " err_name = cif_name.replace('.cif', '.err')\n", + " info_name = cif_name.replace(\".cif\", \".info\")\n", + " err_name = cif_name.replace(\".cif\", \".err\")\n", " input_path = \"./uploaded/\" + cif_name\n", " info_path = \"./uploaded/\" + info_name\n", " error_path = \"./uploaded/\" + err_name\n", - " cell_path = \"./Cell_\" + refcode +'.gmol'\n", + " cell_path = \"./Cell_\" + refcode + \".gmol\"\n", " with Capturing() as output:\n", " cif_2_info(input_path, info_path, error_path)\n", " error = False\n", - " with open(error_path, 'r') as err:\n", + " with open(error_path, \"r\") as err:\n", " for line in err.readlines():\n", " if \"Error\" in line:\n", " output.extend([line])\n", " error = True\n", - " if error :\n", - " output.extend([f\"Parsing of .cif file {cif_name} failed due to the error above.\"])\n", - " else :\n", - " output.extend([f\"Infofile {info_name} generated from {cif_name} succesfully.\"])\n", + " if error:\n", + " output.extend(\n", + " [f\"Parsing of .cif file {cif_name} failed due to the error above.\"]\n", + " )\n", + " else:\n", + " output.extend(\n", + " [f\"Infofile {info_name} generated from {cif_name} succesfully.\"]\n", + " )\n", " return output\n", "\n", + "\n", "#############################\n", "# STEP 3: Run cell2mol on infofile\n", "#############################\n", "def run_cell2mol(run=False, out=None):\n", - " if run :\n", + " if run:\n", " cif_name = widget_choose_filename.value\n", - " if \"/\" in cif_name :\n", + " if \"/\" in cif_name:\n", " cif_name = cif_name.split(\"/\")[-1]\n", " refcode = cif_name.split(\"/\")[-1].split(\".\")[-2]\n", - " info_name = cif_name.replace('.cif', '.info')\n", - " err_name = cif_name.replace('.cif', '.err')\n", + " info_name = cif_name.replace(\".cif\", \".info\")\n", + " err_name = cif_name.replace(\".cif\", \".err\")\n", " input_path = \"./uploaded/\" + cif_name\n", " info_path = \"./uploaded/\" + info_name\n", " error_path = \"./uploaded/\" + err_name\n", - " cell_path = \"./Cell_\" + refcode +'.gmol'\n", + " cell_path = \"./Cell_\" + refcode + \".gmol\"\n", " output = []\n", " if os.path.exists(info_path):\n", " with Capturing() as output:\n", " cell = cell2mol(info_path, refcode, \"./uploaded/\", 3)\n", - " save_cell(cell, 'gmol', \"./uploaded/\")\n", + " save_cell(cell, \"gmol\", \"./uploaded/\")\n", " # This line removes cell2mol output from printout, it should be extend not redefine\n", " output = [f\"For input {cif_name}\"]\n", " output = printing_text(cell, output)\n", " else:\n", - " output.extend([f\"Please, wait until cell2info has finished for this input. Could not find {info_name}.\"])\n", + " output.extend(\n", + " [\n", + " f\"Please, wait until cell2info has finished for this input. Could not find {info_name}.\"\n", + " ]\n", + " )\n", " return output\n", "\n", + "\n", "#############################\n", "# STEP 4: Display structures\n", - "############################# \n", - " \n", + "#############################\n", + "\n", + "\n", "def display_mol(run=False, out=None):\n", - " if run :\n", + " if run:\n", " with Capturing() as output:\n", " path = find_gmol(run=run)\n", " cell = pickle.load(open(path, \"rb\"))\n", " with out:\n", " printing_structure_cell(cell)\n", - " return output \n", + " return output\n", + "\n", "\n", "#############################\n", "# STEP 5: Set up download of gmol files\n", - "############################# \n", + "#############################\n", "def find_gmol(run=False):\n", - " if run :\n", + " if run:\n", " cif_name = widget_choose_filename.value\n", - " if \"/\" in cif_name :\n", + " if \"/\" in cif_name:\n", " cif_name = cif_name.split(\"/\")[-1]\n", " refcode = cif_name.split(\"/\")[-1].split(\".\")[-2]\n", - " cell_path = \"./uploaded/Cell_\" + refcode +'.gmol'\n", + " cell_path = \"./uploaded/Cell_\" + refcode + \".gmol\"\n", " output = []\n", " if os.path.exists(cell_path):\n", " print(f\"Found cell file in {cell_path}\")\n", " return cell_path\n", " else:\n", - " return None \n", + " return None\n", " else:\n", " return None\n", "\n", + "\n", "class DownloadFileLink(FileLink):\n", " html_link_str = \"{link_text}\"\n", "\n", @@ -453,8 +526,9 @@ " ]\n", " )\n", "\n", + "\n", "def display_fl(run=False, out=None):\n", - " if run :\n", + " if run:\n", " with Capturing() as output:\n", " path = find_gmol(run=run)\n", " filename = path.split(\"/\")[-1]\n", @@ -467,24 +541,55 @@ " display(fl)\n", " return output\n", "\n", + "\n", "#############################\n", "# STEP 6: Clear all the output\n", - "############################# \n", - " \n", - "def clear (run=False, out=None, *some):\n", - " if run :\n", + "#############################\n", + "\n", + "\n", + "def clear(run=False, out=None, *some):\n", + " if run:\n", " with out:\n", - " output=[]\n", + " output = []\n", " for i in some:\n", - " i.clear_output() \n", + " i.clear_output()\n", " output.extend([\"All the output was cleared\"])\n", " return output\n", "\n", - "Widget2 = widgets.VBox([Widget2Text, ExecutionButton(run_cell2info, Widget2Out), Widget2BottomText, Widget2Out]) \n", - "Widget3 = widgets.VBox([Widget3Text, ExecutionButton(run_cell2mol, Widget3Out), Widget3BottomText, Widget3Out])\n", - "Widget4 = widgets.VBox([Widget4Text, ExecutionButton(display_mol, Widget4Out), Widget4BottomText, Widget4Out])\n", - "Widget5 = widgets.VBox([Widget5Text, ExecutionButton(display_fl, Widget5Out), Widget5BottomText, Widget5Out]) \n", - "# Widget6 = widgets.VBox([Widget6Text, ExecutionButton(clear(Widget2Out, Widget3Out, Widget4Out, Widget5Out), Widget6Out), Widget6BottomText, Widget6Out]) \n", + "\n", + "Widget2 = widgets.VBox(\n", + " [\n", + " Widget2Text,\n", + " ExecutionButton(run_cell2info, Widget2Out),\n", + " Widget2BottomText,\n", + " Widget2Out,\n", + " ]\n", + ")\n", + "Widget3 = widgets.VBox(\n", + " [\n", + " Widget3Text,\n", + " ExecutionButton(run_cell2mol, Widget3Out),\n", + " Widget3BottomText,\n", + " Widget3Out,\n", + " ]\n", + ")\n", + "Widget4 = widgets.VBox(\n", + " [\n", + " Widget4Text,\n", + " ExecutionButton(display_mol, Widget4Out),\n", + " Widget4BottomText,\n", + " Widget4Out,\n", + " ]\n", + ")\n", + "Widget5 = widgets.VBox(\n", + " [\n", + " Widget5Text,\n", + " ExecutionButton(display_fl, Widget5Out),\n", + " Widget5BottomText,\n", + " Widget5Out,\n", + " ]\n", + ")\n", + "# Widget6 = widgets.VBox([Widget6Text, ExecutionButton(clear(Widget2Out, Widget3Out, Widget4Out, Widget5Out), Widget6Out), Widget6BottomText, Widget6Out])\n", "\n", "#############################\n", "# Put widget in tab\n", @@ -492,13 +597,13 @@ "\n", "children = [Widget1, Widget2, Widget3, Widget4, Widget5]\n", "# children = [Widget1, Widget2, Widget3, Widget4, Widget5, Widget6]\n", - "tab = widgets.Tab() #layout=widgets.Layout(width='800px', height='800px'))\n", + "tab = widgets.Tab() # layout=widgets.Layout(width='800px', height='800px'))\n", "tab.children = children\n", - "tab.set_title(0, 'Upload file')\n", - "tab.set_title(1, 'Run cell2info')\n", - "tab.set_title(2, 'Run cell2mol')\n", - "tab.set_title(3, 'Visualize molecules')\n", - "tab.set_title(4, 'Download cell file')\n", + "tab.set_title(0, \"Upload file\")\n", + "tab.set_title(1, \"Run cell2info\")\n", + "tab.set_title(2, \"Run cell2mol\")\n", + "tab.set_title(3, \"Visualize molecules\")\n", + "tab.set_title(4, \"Download cell file\")\n", "# tab.set_title(5, 'Clear output')" ] }, @@ -583,23 +688,19 @@ "html_acknowledgments = markdown.markdown(\"\"\"\n", "* Funding from the NCCR MARVEL funded by the SNSF.\n", "\"\"\")\n", - "acknowledgments=widgets.VBox([\n", - " HTML(html_acknowledgments)\n", - "])\n", + "acknowledgments = widgets.VBox([HTML(html_acknowledgments)])\n", "\n", "html_howtocite = markdown.markdown(\"\"\"\n", "Please cite the cell2mol paper~!\n", "\"\"\")\n", - "howtocite=widgets.VBox([\n", - " HTML(html_howtocite)\n", - "])\n", + "howtocite = widgets.VBox([HTML(html_howtocite)])\n", "\n", - "post_children=[acknowledgments,howtocite]\n", + "post_children = [acknowledgments, howtocite]\n", "post_accordion = widgets.Accordion(layout=widgets.Layout())\n", - "#print(post_accordion.layout.keys)\n", + "# print(post_accordion.layout.keys)\n", "post_accordion.children = post_children\n", - "post_accordion.set_title(0, 'Acknowledgments')\n", - "post_accordion.set_title(1, 'How to cite')\n", + "post_accordion.set_title(0, \"Acknowledgments\")\n", + "post_accordion.set_title(1, \"How to cite\")\n", "post_accordion.selected_index = None\n", "post_accordion" ] diff --git a/CHANGELOG.md b/CHANGELOG.md index 8db11e52a..48eac4b4e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,7 +5,7 @@ All notable changes to cell2mol will be documented in this file. [Unreleased dev version] [1.0.1] - 10/10/2022 -- Ligand "smiles" now does not display H atoms added in the protonation state. +- Ligand "smiles" now does not display H atoms added in the protonation state. - Old Ligand "smiles" with protonation H atoms now called "smiles_with_H" - Variable name change: "object" in ligand and molecule classes is now "rdkit_mol" - Removed Legacy code in function "define_sites" diff --git a/CITATION.cff b/CITATION.cff new file mode 100644 index 000000000..3f889a988 --- /dev/null +++ b/CITATION.cff @@ -0,0 +1,43 @@ +cff-version: 1.2.0 +message: "If you use this software, please cite it using the metadata from this file." +title: "lcmd-epfl/cell2mol: Unit Cell to Molecule Interpretation" +license: GPL-3.0+ +repository-code: https://github.com/lcmd-epfl/cell2mol/ +type: software +version: v2.0.0-rc1 +date-released: 2025-12-09 +authors: +- affiliation: LCMD EPFL + family-names: Cho + given-names: Yuri + orcid: https://orcid.org/0000-0002-8133-2490 +- affiliation: Institut de Química Avançada de Catalunya + family-names: Vela + given-names: Sergi + orcid: https://orcid.org/0000-0002-3431-2470 +- affiliation: LCMD EPFL + family-names: Graux + given-names: Romain + orcid: https://orcid.org/0000-0002-2465-3175 +- family-names: Laplaza + given-names: Rubén + orcid: https://orcid.org/0000-0001-6315-4398 + affiliation: LCMD EPFL +preferred-citation: + title: "cell2mol: encoding chemistry to interpret crystallographic data" + year: 2022 + type: article + doi: 10.1038/s41524-022-00874-9 + authors: + - family-names: Vela + given-names: Sergi + orcid: https://orcid.org/0000-0002-3431-2470 + - family-names: Laplaza + given-names: Rubén + orcid: https://orcid.org/0000-0001-6315-4398 + - family-names: Cho + given-names: Yuri + orcid: https://orcid.org/0000-0002-8133-2490 + - family-names: Corminboeuf + given-names: Clemence + orcid: https://orcid.org/0000-0001-7993-2879 diff --git a/LICENSE_cif2cell b/LICENSE_cif2cell deleted file mode 100644 index 94a9ed024..000000000 --- a/LICENSE_cif2cell +++ /dev/null @@ -1,674 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 3, 29 June 2007 - - Copyright (C) 2007 Free Software Foundation, Inc. - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The GNU General Public License is a free, copyleft license for -software and other kinds of works. - - The licenses for most software and other practical works are designed -to take away your freedom to share and change the works. By contrast, -the GNU General Public License is intended to guarantee your freedom to -share and change all versions of a program--to make sure it remains free -software for all its users. We, the Free Software Foundation, use the -GNU General Public License for most of our software; it applies also to -any other work released this way by its authors. You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -them if you wish), that you receive source code or can get it if you -want it, that you can change the software or use pieces of it in new -free programs, and that you know you can do these things. - - To protect your rights, we need to prevent others from denying you -these rights or asking you to surrender the rights. Therefore, you have -certain responsibilities if you distribute copies of the software, or if -you modify it: responsibilities to respect the freedom of others. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must pass on to the recipients the same -freedoms that you received. You must make sure that they, too, receive -or can get the source code. And you must show them these terms so they -know their rights. - - Developers that use the GNU GPL protect your rights with two steps: -(1) assert copyright on the software, and (2) offer you this License -giving you legal permission to copy, distribute and/or modify it. - - For the developers' and authors' protection, the GPL clearly explains -that there is no warranty for this free software. For both users' and -authors' sake, the GPL requires that modified versions be marked as -changed, so that their problems will not be attributed erroneously to -authors of previous versions. - - Some devices are designed to deny users access to install or run -modified versions of the software inside them, although the manufacturer -can do so. This is fundamentally incompatible with the aim of -protecting users' freedom to change the software. The systematic -pattern of such abuse occurs in the area of products for individuals to -use, which is precisely where it is most unacceptable. Therefore, we -have designed this version of the GPL to prohibit the practice for those -products. If such problems arise substantially in other domains, we -stand ready to extend this provision to those domains in future versions -of the GPL, as needed to protect the freedom of users. - - Finally, every program is threatened constantly by software patents. -States should not allow patents to restrict development and use of -software on general-purpose computers, but in those that do, we wish to -avoid the special danger that patents applied to a free program could -make it effectively proprietary. To prevent this, the GPL assures that -patents cannot be used to render the program non-free. - - The precise terms and conditions for copying, distribution and -modification follow. - - TERMS AND CONDITIONS - - 0. Definitions. - - "This License" refers to version 3 of the GNU General Public License. - - "Copyright" also means copyright-like laws that apply to other kinds of -works, such as semiconductor masks. - - "The Program" refers to any copyrightable work licensed under this -License. Each licensee is addressed as "you". "Licensees" and -"recipients" may be individuals or organizations. - - To "modify" a work means to copy from or adapt all or part of the work -in a fashion requiring copyright permission, other than the making of an -exact copy. The resulting work is called a "modified version" of the -earlier work or a work "based on" the earlier work. - - A "covered work" means either the unmodified Program or a work based -on the Program. - - To "propagate" a work means to do anything with it that, without -permission, would make you directly or secondarily liable for -infringement under applicable copyright law, except executing it on a -computer or modifying a private copy. Propagation includes copying, -distribution (with or without modification), making available to the -public, and in some countries other activities as well. - - To "convey" a work means any kind of propagation that enables other -parties to make or receive copies. Mere interaction with a user through -a computer network, with no transfer of a copy, is not conveying. - - An interactive user interface displays "Appropriate Legal Notices" -to the extent that it includes a convenient and prominently visible -feature that (1) displays an appropriate copyright notice, and (2) -tells the user that there is no warranty for the work (except to the -extent that warranties are provided), that licensees may convey the -work under this License, and how to view a copy of this License. If -the interface presents a list of user commands or options, such as a -menu, a prominent item in the list meets this criterion. - - 1. Source Code. - - The "source code" for a work means the preferred form of the work -for making modifications to it. "Object code" means any non-source -form of a work. - - A "Standard Interface" means an interface that either is an official -standard defined by a recognized standards body, or, in the case of -interfaces specified for a particular programming language, one that -is widely used among developers working in that language. - - The "System Libraries" of an executable work include anything, other -than the work as a whole, that (a) is included in the normal form of -packaging a Major Component, but which is not part of that Major -Component, and (b) serves only to enable use of the work with that -Major Component, or to implement a Standard Interface for which an -implementation is available to the public in source code form. A -"Major Component", in this context, means a major essential component -(kernel, window system, and so on) of the specific operating system -(if any) on which the executable work runs, or a compiler used to -produce the work, or an object code interpreter used to run it. - - The "Corresponding Source" for a work in object code form means all -the source code needed to generate, install, and (for an executable -work) run the object code and to modify the work, including scripts to -control those activities. However, it does not include the work's -System Libraries, or general-purpose tools or generally available free -programs which are used unmodified in performing those activities but -which are not part of the work. For example, Corresponding Source -includes interface definition files associated with source files for -the work, and the source code for shared libraries and dynamically -linked subprograms that the work is specifically designed to require, -such as by intimate data communication or control flow between those -subprograms and other parts of the work. - - The Corresponding Source need not include anything that users -can regenerate automatically from other parts of the Corresponding -Source. - - The Corresponding Source for a work in source code form is that -same work. - - 2. Basic Permissions. - - All rights granted under this License are granted for the term of -copyright on the Program, and are irrevocable provided the stated -conditions are met. This License explicitly affirms your unlimited -permission to run the unmodified Program. The output from running a -covered work is covered by this License only if the output, given its -content, constitutes a covered work. This License acknowledges your -rights of fair use or other equivalent, as provided by copyright law. - - You may make, run and propagate covered works that you do not -convey, without conditions so long as your license otherwise remains -in force. You may convey covered works to others for the sole purpose -of having them make modifications exclusively for you, or provide you -with facilities for running those works, provided that you comply with -the terms of this License in conveying all material for which you do -not control copyright. Those thus making or running the covered works -for you must do so exclusively on your behalf, under your direction -and control, on terms that prohibit them from making any copies of -your copyrighted material outside their relationship with you. - - Conveying under any other circumstances is permitted solely under -the conditions stated below. Sublicensing is not allowed; section 10 -makes it unnecessary. - - 3. Protecting Users' Legal Rights From Anti-Circumvention Law. - - No covered work shall be deemed part of an effective technological -measure under any applicable law fulfilling obligations under article -11 of the WIPO copyright treaty adopted on 20 December 1996, or -similar laws prohibiting or restricting circumvention of such -measures. - - When you convey a covered work, you waive any legal power to forbid -circumvention of technological measures to the extent such circumvention -is effected by exercising rights under this License with respect to -the covered work, and you disclaim any intention to limit operation or -modification of the work as a means of enforcing, against the work's -users, your or third parties' legal rights to forbid circumvention of -technological measures. - - 4. Conveying Verbatim Copies. - - You may convey verbatim copies of the Program's source code as you -receive it, in any medium, provided that you conspicuously and -appropriately publish on each copy an appropriate copyright notice; -keep intact all notices stating that this License and any -non-permissive terms added in accord with section 7 apply to the code; -keep intact all notices of the absence of any warranty; and give all -recipients a copy of this License along with the Program. - - You may charge any price or no price for each copy that you convey, -and you may offer support or warranty protection for a fee. - - 5. Conveying Modified Source Versions. - - You may convey a work based on the Program, or the modifications to -produce it from the Program, in the form of source code under the -terms of section 4, provided that you also meet all of these conditions: - - a) The work must carry prominent notices stating that you modified - it, and giving a relevant date. - - b) The work must carry prominent notices stating that it is - released under this License and any conditions added under section - 7. This requirement modifies the requirement in section 4 to - "keep intact all notices". - - c) You must license the entire work, as a whole, under this - License to anyone who comes into possession of a copy. This - License will therefore apply, along with any applicable section 7 - additional terms, to the whole of the work, and all its parts, - regardless of how they are packaged. This License gives no - permission to license the work in any other way, but it does not - invalidate such permission if you have separately received it. - - d) If the work has interactive user interfaces, each must display - Appropriate Legal Notices; however, if the Program has interactive - interfaces that do not display Appropriate Legal Notices, your - work need not make them do so. - - A compilation of a covered work with other separate and independent -works, which are not by their nature extensions of the covered work, -and which are not combined with it such as to form a larger program, -in or on a volume of a storage or distribution medium, is called an -"aggregate" if the compilation and its resulting copyright are not -used to limit the access or legal rights of the compilation's users -beyond what the individual works permit. Inclusion of a covered work -in an aggregate does not cause this License to apply to the other -parts of the aggregate. - - 6. Conveying Non-Source Forms. - - You may convey a covered work in object code form under the terms -of sections 4 and 5, provided that you also convey the -machine-readable Corresponding Source under the terms of this License, -in one of these ways: - - a) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by the - Corresponding Source fixed on a durable physical medium - customarily used for software interchange. - - b) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by a - written offer, valid for at least three years and valid for as - long as you offer spare parts or customer support for that product - model, to give anyone who possesses the object code either (1) a - copy of the Corresponding Source for all the software in the - product that is covered by this License, on a durable physical - medium customarily used for software interchange, for a price no - more than your reasonable cost of physically performing this - conveying of source, or (2) access to copy the - Corresponding Source from a network server at no charge. - - c) Convey individual copies of the object code with a copy of the - written offer to provide the Corresponding Source. This - alternative is allowed only occasionally and noncommercially, and - only if you received the object code with such an offer, in accord - with subsection 6b. - - d) Convey the object code by offering access from a designated - place (gratis or for a charge), and offer equivalent access to the - Corresponding Source in the same way through the same place at no - further charge. You need not require recipients to copy the - Corresponding Source along with the object code. If the place to - copy the object code is a network server, the Corresponding Source - may be on a different server (operated by you or a third party) - that supports equivalent copying facilities, provided you maintain - clear directions next to the object code saying where to find the - Corresponding Source. Regardless of what server hosts the - Corresponding Source, you remain obligated to ensure that it is - available for as long as needed to satisfy these requirements. - - e) Convey the object code using peer-to-peer transmission, provided - you inform other peers where the object code and Corresponding - Source of the work are being offered to the general public at no - charge under subsection 6d. - - A separable portion of the object code, whose source code is excluded -from the Corresponding Source as a System Library, need not be -included in conveying the object code work. - - A "User Product" is either (1) a "consumer product", which means any -tangible personal property which is normally used for personal, family, -or household purposes, or (2) anything designed or sold for incorporation -into a dwelling. In determining whether a product is a consumer product, -doubtful cases shall be resolved in favor of coverage. For a particular -product received by a particular user, "normally used" refers to a -typical or common use of that class of product, regardless of the status -of the particular user or of the way in which the particular user -actually uses, or expects or is expected to use, the product. A product -is a consumer product regardless of whether the product has substantial -commercial, industrial or non-consumer uses, unless such uses represent -the only significant mode of use of the product. - - "Installation Information" for a User Product means any methods, -procedures, authorization keys, or other information required to install -and execute modified versions of a covered work in that User Product from -a modified version of its Corresponding Source. The information must -suffice to ensure that the continued functioning of the modified object -code is in no case prevented or interfered with solely because -modification has been made. - - If you convey an object code work under this section in, or with, or -specifically for use in, a User Product, and the conveying occurs as -part of a transaction in which the right of possession and use of the -User Product is transferred to the recipient in perpetuity or for a -fixed term (regardless of how the transaction is characterized), the -Corresponding Source conveyed under this section must be accompanied -by the Installation Information. But this requirement does not apply -if neither you nor any third party retains the ability to install -modified object code on the User Product (for example, the work has -been installed in ROM). - - The requirement to provide Installation Information does not include a -requirement to continue to provide support service, warranty, or updates -for a work that has been modified or installed by the recipient, or for -the User Product in which it has been modified or installed. Access to a -network may be denied when the modification itself materially and -adversely affects the operation of the network or violates the rules and -protocols for communication across the network. - - Corresponding Source conveyed, and Installation Information provided, -in accord with this section must be in a format that is publicly -documented (and with an implementation available to the public in -source code form), and must require no special password or key for -unpacking, reading or copying. - - 7. Additional Terms. - - "Additional permissions" are terms that supplement the terms of this -License by making exceptions from one or more of its conditions. -Additional permissions that are applicable to the entire Program shall -be treated as though they were included in this License, to the extent -that they are valid under applicable law. If additional permissions -apply only to part of the Program, that part may be used separately -under those permissions, but the entire Program remains governed by -this License without regard to the additional permissions. - - When you convey a copy of a covered work, you may at your option -remove any additional permissions from that copy, or from any part of -it. (Additional permissions may be written to require their own -removal in certain cases when you modify the work.) You may place -additional permissions on material, added by you to a covered work, -for which you have or can give appropriate copyright permission. - - Notwithstanding any other provision of this License, for material you -add to a covered work, you may (if authorized by the copyright holders of -that material) supplement the terms of this License with terms: - - a) Disclaiming warranty or limiting liability differently from the - terms of sections 15 and 16 of this License; or - - b) Requiring preservation of specified reasonable legal notices or - author attributions in that material or in the Appropriate Legal - Notices displayed by works containing it; or - - c) Prohibiting misrepresentation of the origin of that material, or - requiring that modified versions of such material be marked in - reasonable ways as different from the original version; or - - d) Limiting the use for publicity purposes of names of licensors or - authors of the material; or - - e) Declining to grant rights under trademark law for use of some - trade names, trademarks, or service marks; or - - f) Requiring indemnification of licensors and authors of that - material by anyone who conveys the material (or modified versions of - it) with contractual assumptions of liability to the recipient, for - any liability that these contractual assumptions directly impose on - those licensors and authors. - - All other non-permissive additional terms are considered "further -restrictions" within the meaning of section 10. If the Program as you -received it, or any part of it, contains a notice stating that it is -governed by this License along with a term that is a further -restriction, you may remove that term. If a license document contains -a further restriction but permits relicensing or conveying under this -License, you may add to a covered work material governed by the terms -of that license document, provided that the further restriction does -not survive such relicensing or conveying. - - If you add terms to a covered work in accord with this section, you -must place, in the relevant source files, a statement of the -additional terms that apply to those files, or a notice indicating -where to find the applicable terms. - - Additional terms, permissive or non-permissive, may be stated in the -form of a separately written license, or stated as exceptions; -the above requirements apply either way. - - 8. Termination. - - You may not propagate or modify a covered work except as expressly -provided under this License. Any attempt otherwise to propagate or -modify it is void, and will automatically terminate your rights under -this License (including any patent licenses granted under the third -paragraph of section 11). - - However, if you cease all violation of this License, then your -license from a particular copyright holder is reinstated (a) -provisionally, unless and until the copyright holder explicitly and -finally terminates your license, and (b) permanently, if the copyright -holder fails to notify you of the violation by some reasonable means -prior to 60 days after the cessation. - - Moreover, your license from a particular copyright holder is -reinstated permanently if the copyright holder notifies you of the -violation by some reasonable means, this is the first time you have -received notice of violation of this License (for any work) from that -copyright holder, and you cure the violation prior to 30 days after -your receipt of the notice. - - Termination of your rights under this section does not terminate the -licenses of parties who have received copies or rights from you under -this License. If your rights have been terminated and not permanently -reinstated, you do not qualify to receive new licenses for the same -material under section 10. - - 9. Acceptance Not Required for Having Copies. - - You are not required to accept this License in order to receive or -run a copy of the Program. Ancillary propagation of a covered work -occurring solely as a consequence of using peer-to-peer transmission -to receive a copy likewise does not require acceptance. However, -nothing other than this License grants you permission to propagate or -modify any covered work. These actions infringe copyright if you do -not accept this License. Therefore, by modifying or propagating a -covered work, you indicate your acceptance of this License to do so. - - 10. Automatic Licensing of Downstream Recipients. - - Each time you convey a covered work, the recipient automatically -receives a license from the original licensors, to run, modify and -propagate that work, subject to this License. You are not responsible -for enforcing compliance by third parties with this License. - - An "entity transaction" is a transaction transferring control of an -organization, or substantially all assets of one, or subdividing an -organization, or merging organizations. If propagation of a covered -work results from an entity transaction, each party to that -transaction who receives a copy of the work also receives whatever -licenses to the work the party's predecessor in interest had or could -give under the previous paragraph, plus a right to possession of the -Corresponding Source of the work from the predecessor in interest, if -the predecessor has it or can get it with reasonable efforts. - - You may not impose any further restrictions on the exercise of the -rights granted or affirmed under this License. For example, you may -not impose a license fee, royalty, or other charge for exercise of -rights granted under this License, and you may not initiate litigation -(including a cross-claim or counterclaim in a lawsuit) alleging that -any patent claim is infringed by making, using, selling, offering for -sale, or importing the Program or any portion of it. - - 11. Patents. - - A "contributor" is a copyright holder who authorizes use under this -License of the Program or a work on which the Program is based. The -work thus licensed is called the contributor's "contributor version". - - A contributor's "essential patent claims" are all patent claims -owned or controlled by the contributor, whether already acquired or -hereafter acquired, that would be infringed by some manner, permitted -by this License, of making, using, or selling its contributor version, -but do not include claims that would be infringed only as a -consequence of further modification of the contributor version. For -purposes of this definition, "control" includes the right to grant -patent sublicenses in a manner consistent with the requirements of -this License. - - Each contributor grants you a non-exclusive, worldwide, royalty-free -patent license under the contributor's essential patent claims, to -make, use, sell, offer for sale, import and otherwise run, modify and -propagate the contents of its contributor version. - - In the following three paragraphs, a "patent license" is any express -agreement or commitment, however denominated, not to enforce a patent -(such as an express permission to practice a patent or covenant not to -sue for patent infringement). To "grant" such a patent license to a -party means to make such an agreement or commitment not to enforce a -patent against the party. - - If you convey a covered work, knowingly relying on a patent license, -and the Corresponding Source of the work is not available for anyone -to copy, free of charge and under the terms of this License, through a -publicly available network server or other readily accessible means, -then you must either (1) cause the Corresponding Source to be so -available, or (2) arrange to deprive yourself of the benefit of the -patent license for this particular work, or (3) arrange, in a manner -consistent with the requirements of this License, to extend the patent -license to downstream recipients. "Knowingly relying" means you have -actual knowledge that, but for the patent license, your conveying the -covered work in a country, or your recipient's use of the covered work -in a country, would infringe one or more identifiable patents in that -country that you have reason to believe are valid. - - If, pursuant to or in connection with a single transaction or -arrangement, you convey, or propagate by procuring conveyance of, a -covered work, and grant a patent license to some of the parties -receiving the covered work authorizing them to use, propagate, modify -or convey a specific copy of the covered work, then the patent license -you grant is automatically extended to all recipients of the covered -work and works based on it. - - A patent license is "discriminatory" if it does not include within -the scope of its coverage, prohibits the exercise of, or is -conditioned on the non-exercise of one or more of the rights that are -specifically granted under this License. You may not convey a covered -work if you are a party to an arrangement with a third party that is -in the business of distributing software, under which you make payment -to the third party based on the extent of your activity of conveying -the work, and under which the third party grants, to any of the -parties who would receive the covered work from you, a discriminatory -patent license (a) in connection with copies of the covered work -conveyed by you (or copies made from those copies), or (b) primarily -for and in connection with specific products or compilations that -contain the covered work, unless you entered into that arrangement, -or that patent license was granted, prior to 28 March 2007. - - Nothing in this License shall be construed as excluding or limiting -any implied license or other defenses to infringement that may -otherwise be available to you under applicable patent law. - - 12. No Surrender of Others' Freedom. - - If conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot convey a -covered work so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you may -not convey it at all. For example, if you agree to terms that obligate you -to collect a royalty for further conveying from those to whom you convey -the Program, the only way you could satisfy both those terms and this -License would be to refrain entirely from conveying the Program. - - 13. Use with the GNU Affero General Public License. - - Notwithstanding any other provision of this License, you have -permission to link or combine any covered work with a work licensed -under version 3 of the GNU Affero General Public License into a single -combined work, and to convey the resulting work. The terms of this -License will continue to apply to the part which is the covered work, -but the special requirements of the GNU Affero General Public License, -section 13, concerning interaction through a network will apply to the -combination as such. - - 14. Revised Versions of this License. - - The Free Software Foundation may publish revised and/or new versions of -the GNU General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - - Each version is given a distinguishing version number. If the -Program specifies that a certain numbered version of the GNU General -Public License "or any later version" applies to it, you have the -option of following the terms and conditions either of that numbered -version or of any later version published by the Free Software -Foundation. If the Program does not specify a version number of the -GNU General Public License, you may choose any version ever published -by the Free Software Foundation. - - If the Program specifies that a proxy can decide which future -versions of the GNU General Public License can be used, that proxy's -public statement of acceptance of a version permanently authorizes you -to choose that version for the Program. - - Later license versions may give you additional or different -permissions. However, no additional obligations are imposed on any -author or copyright holder as a result of your choosing to follow a -later version. - - 15. Disclaimer of Warranty. - - THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY -APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT -HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY -OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, -THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM -IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF -ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. Limitation of Liability. - - IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS -THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY -GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE -USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF -DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD -PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), -EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF -SUCH DAMAGES. - - 17. Interpretation of Sections 15 and 16. - - If the disclaimer of warranty and limitation of liability provided -above cannot be given local legal effect according to their terms, -reviewing courts shall apply local law that most closely approximates -an absolute waiver of all civil liability in connection with the -Program, unless a warranty or assumption of liability accompanies a -copy of the Program in return for a fee. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -state the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . - -Also add information on how to contact you by electronic and paper mail. - - If the program does terminal interaction, make it output a short -notice like this when it starts in an interactive mode: - - Copyright (C) - This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, your program's commands -might be different; for a GUI interface, you would use an "about box". - - You should also get your employer (if you work as a programmer) or school, -if any, to sign a "copyright disclaimer" for the program, if necessary. -For more information on this, and how to apply and follow the GNU GPL, see -. - - The GNU General Public License does not permit incorporating your program -into proprietary programs. If your program is a subroutine library, you -may consider it more useful to permit linking proprietary applications with -the library. If this is what you want to do, use the GNU Lesser General -Public License instead of this License. But first, please read -. diff --git a/LICENSE_xyz2mol b/LICENSE_xyz2mol deleted file mode 100644 index b1f1928cb..000000000 --- a/LICENSE_xyz2mol +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2018 Jensen Group - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/README.md b/README.md index bdf53a6dd..2473fef9c 100644 --- a/README.md +++ b/README.md @@ -17,18 +17,18 @@ Program that interprets .cif files of molecular crystals and retrieves structura - Atomic coordinates, labels - Total molecular charge, and formal atomic charges, including metal oxidation states -- Connectivity network as defined by either the adjacency matrix or the bond-order matrix +- Connectivity network as defined by either the adjacency matrix or the bond-order matrix -The program generates a so-called "cell" object, with hierarchical information on the unit cell. "Cells" have "Molecules". Molecules that hold a transition metal are considered a "Complex". Complexes are made of "Ligands" and "Metals". "Ligands" are made of "Groups" of connected "Atoms". +The program generates a so-called "cell" object, with hierarchical information on the unit cell. "Cells" have "Molecules". Molecules that hold a transition metal are considered a "Complex". Complexes are made of "Ligands" and "Metals". "Ligands" are made of "Groups" of connected "Atoms". -"Complexes", "Ligands", "Metals" and "Groups" host the information of their constituent "Atoms". That way, cell2mol provides a very in-depth interpretation of unit cells, which can be particularly useful to generate controlled databases for Quantum Chemistry and Machine Learning applications. +"Complexes", "Ligands", "Metals" and "Groups" host the information of their constituent "Atoms". That way, cell2mol provides a very in-depth interpretation of unit cells, which can be particularly useful to generate controlled databases for Quantum Chemistry and Machine Learning applications. -The code runs on pure python with minimal dependencies: +The code runs on pure python with minimal dependencies: - `numpy` - `scipy` - `pandas` - `networkx` -- `RDkit` +- `RDkit` For portability, we provide an exemplary conda environment in `environment.yml` which can be used to construct a conda environment with all necessary dependencies by running: @@ -46,13 +46,13 @@ python c2m_driver.py [-h] -i FILENAME [-s STEP] You can also execute: -```python +```python python setup.py install ``` to install cell2mol as a python module. Afterwards, you can call cell2mol as: -```python +```python python -m cell2mol [-h] -i FILENAME [-s STEP] ``` @@ -78,7 +78,7 @@ A flowchart of the entire process is given below: Few chemical patterns tend to be poorly interpreted by cell2mol, because of inconsistencies in either cell2mol itself, or in xyz2mol. -cell2mol determines the bond order between atoms based on their connectivity, typical atomic valence electrons of the atoms involved, and the most plausible total charge of the molecule. cell2mol is inevitably incorrect if there is an extra electron or radical chemical species. Other known ligands with wrong interpretations are the triiodide (I3-), and azide (N3-) ions. Future development of cell2mol will aim a fixing those errors. If users identify other common misinterpretations, please contact the authors. +cell2mol determines the bond order between atoms based on their connectivity, typical atomic valence electrons of the atoms involved, and the most plausible total charge of the molecule. cell2mol is inevitably incorrect if there is an extra electron or radical chemical species. Other known ligands with wrong interpretations are the triiodide (I3-), and azide (N3-) ions. Future development of cell2mol will aim a fixing those errors. If users identify other common misinterpretations, please contact the authors. --- diff --git a/cell2mol/.DS_Store b/cell2mol/.DS_Store deleted file mode 100644 index 5008ddfcf..000000000 Binary files a/cell2mol/.DS_Store and /dev/null differ diff --git a/cell2mol/Fe_mono_m_ox_5486.pkl b/cell2mol/Fe_mono_m_ox_5486.pkl deleted file mode 100644 index f878f55a6..000000000 Binary files a/cell2mol/Fe_mono_m_ox_5486.pkl and /dev/null differ diff --git a/cell2mol/__main__.py b/cell2mol/__main__.py index 8a9184ef3..7a792426f 100644 --- a/cell2mol/__main__.py +++ b/cell2mol/__main__.py @@ -1,16 +1,4 @@ -#!/usr/bin/env python -from __future__ import absolute_import - -import os -import sys -import cell2mol -#from cell2mol import c2m_driver -# from cell2mol import new_c2m_driver -from cell2mol import final_c2m_driver - -if __package__ == "": - path = os.path.dirname(os.path.dirname(__file__)) - sys.path.insert(0, path) +from cell2mol.cli import main if __name__ == "__main__": - sys.exit() + main() diff --git a/cell2mol/__pycache__/__init__.cpython-39.pyc b/cell2mol/__pycache__/__init__.cpython-39.pyc deleted file mode 100644 index 11752bbf2..000000000 Binary files a/cell2mol/__pycache__/__init__.cpython-39.pyc and /dev/null differ diff --git a/cell2mol/__pycache__/c2m_module.cpython-39.pyc b/cell2mol/__pycache__/c2m_module.cpython-39.pyc deleted file mode 100644 index 6f8925894..000000000 Binary files a/cell2mol/__pycache__/c2m_module.cpython-39.pyc and /dev/null differ diff --git a/cell2mol/__pycache__/cell_reconstruct.cpython-39.pyc b/cell2mol/__pycache__/cell_reconstruct.cpython-39.pyc deleted file mode 100644 index add72fd47..000000000 Binary files a/cell2mol/__pycache__/cell_reconstruct.cpython-39.pyc and /dev/null differ diff --git a/cell2mol/__pycache__/cellconversions.cpython-39.pyc b/cell2mol/__pycache__/cellconversions.cpython-39.pyc deleted file mode 100644 index fe004c69f..000000000 Binary files a/cell2mol/__pycache__/cellconversions.cpython-39.pyc and /dev/null differ diff --git a/cell2mol/__pycache__/cif2cell_ESPInterfaces.cpython-39.pyc b/cell2mol/__pycache__/cif2cell_ESPInterfaces.cpython-39.pyc deleted file mode 100644 index cf73a2337..000000000 Binary files a/cell2mol/__pycache__/cif2cell_ESPInterfaces.cpython-39.pyc and /dev/null differ diff --git a/cell2mol/__pycache__/cif2cell_spacegroupdata.cpython-39.pyc b/cell2mol/__pycache__/cif2cell_spacegroupdata.cpython-39.pyc deleted file mode 100644 index e7e3fd30e..000000000 Binary files a/cell2mol/__pycache__/cif2cell_spacegroupdata.cpython-39.pyc and /dev/null differ diff --git a/cell2mol/__pycache__/cif2cell_uctools.cpython-39.pyc b/cell2mol/__pycache__/cif2cell_uctools.cpython-39.pyc deleted file mode 100644 index 9290a77a8..000000000 Binary files a/cell2mol/__pycache__/cif2cell_uctools.cpython-39.pyc and /dev/null differ diff --git a/cell2mol/__pycache__/cif2cell_utils.cpython-39.pyc b/cell2mol/__pycache__/cif2cell_utils.cpython-39.pyc deleted file mode 100644 index c549681ce..000000000 Binary files a/cell2mol/__pycache__/cif2cell_utils.cpython-39.pyc and /dev/null differ diff --git a/cell2mol/__pycache__/cif2info.cpython-39.pyc b/cell2mol/__pycache__/cif2info.cpython-39.pyc deleted file mode 100644 index 985804908..000000000 Binary files a/cell2mol/__pycache__/cif2info.cpython-39.pyc and /dev/null differ diff --git a/cell2mol/__pycache__/elementdata.cpython-39.pyc b/cell2mol/__pycache__/elementdata.cpython-39.pyc deleted file mode 100644 index b64e938c4..000000000 Binary files a/cell2mol/__pycache__/elementdata.cpython-39.pyc and /dev/null differ diff --git a/cell2mol/__pycache__/formal_charge.cpython-39.pyc b/cell2mol/__pycache__/formal_charge.cpython-39.pyc deleted file mode 100644 index 702e1f841..000000000 Binary files a/cell2mol/__pycache__/formal_charge.cpython-39.pyc and /dev/null differ diff --git a/cell2mol/__pycache__/hungarian.cpython-39.pyc b/cell2mol/__pycache__/hungarian.cpython-39.pyc deleted file mode 100644 index 7c1cecf23..000000000 Binary files a/cell2mol/__pycache__/hungarian.cpython-39.pyc and /dev/null differ diff --git a/cell2mol/__pycache__/missingH.cpython-39.pyc b/cell2mol/__pycache__/missingH.cpython-39.pyc deleted file mode 100644 index 83dd15f9e..000000000 Binary files a/cell2mol/__pycache__/missingH.cpython-39.pyc and /dev/null differ diff --git a/cell2mol/__pycache__/readwrite.cpython-39.pyc b/cell2mol/__pycache__/readwrite.cpython-39.pyc deleted file mode 100644 index a5bab062a..000000000 Binary files a/cell2mol/__pycache__/readwrite.cpython-39.pyc and /dev/null differ diff --git a/cell2mol/__pycache__/tmcharge_common.cpython-39.pyc b/cell2mol/__pycache__/tmcharge_common.cpython-39.pyc deleted file mode 100644 index 0fb13c919..000000000 Binary files a/cell2mol/__pycache__/tmcharge_common.cpython-39.pyc and /dev/null differ diff --git a/cell2mol/__pycache__/xyz2mol.cpython-39.pyc b/cell2mol/__pycache__/xyz2mol.cpython-39.pyc deleted file mode 100644 index 3032a0ad3..000000000 Binary files a/cell2mol/__pycache__/xyz2mol.cpython-39.pyc and /dev/null differ diff --git a/cell2mol/args.py b/cell2mol/args.py new file mode 100644 index 000000000..89f95aec6 --- /dev/null +++ b/cell2mol/args.py @@ -0,0 +1,115 @@ +#!/usr/bin/env python + +import argparse +import logging +import os +import numpy as np + + +def parsing_arguments(): + """ + Parse command-line arguments. + + Returns: + args (argparse.Namespace) + """ + + parser = argparse.ArgumentParser( + prog="cell2mol", + description=( + "Interprets a crystallography file and extracts molecular information" + ), + ) + + parser.add_argument( + "-i", + "--input", + dest="filepath", + type=str, + required=True, + help="Path to the input file (.cif or .xyz)", + ) + + parser.add_argument( + "-t", + "--type", + dest="system_type", + type=str, + choices=["reference", "unitcell", "molecule"], + required=True, + help="Type of system to interpret: reference (Wyckoff sites), unitcell, or molecule", + ) + + parser.add_argument( + "--cell-para", + dest="cell_para", + type=float, + nargs=6, + help="Cell parameters (a, b, c, alpha, beta, gamma) for unit cell in .xyz file", + ) + + parser.add_argument( + "--charge", + dest="charge", + type=int, + help="Total charge of a molecule in .xyz file", + ) + + parser.add_argument( + "--cif-bond-info", + dest="cif_bond_info", + action="store_true", + help="Use CIF _geom_bond information to generate adjacency matrix", + ) + + parser.add_argument( + "--log-level", + default="INFO", + choices=["DEBUG", "INFO", "WARNING", "ERROR"], + help="Logging verbosity level", + ) + + parser.add_argument( + "--print-config", + action="store_true", + help="Print runtime configuration and exit", + ) + args = parser.parse_args() + + # ---------------------------- + # Validation logic + # ---------------------------- + ext = os.path.splitext(args.filepath)[1].lower() + + if ext not in (".cif", ".xyz"): + parser.error( + "Invalid input file format. Only .cif and .xyz files are supported." + ) + + cell_para = None + if args.filepath.endswith(".xyz") and args.system_type == "unitcell": + if args.cell_para is None: + parser.error("Cell parameters must be provided for unit cell in .xyz file") + cell_para = np.array(args.cell_para) + + args.cell_para = cell_para + + # ---------------------------- + # Logging configuration + # ---------------------------- + + # FORMAT = "%(asctime)s | %(levelname)-8s | %(name)-30s:%(funcName)-30s | %(message)s" + # FORMAT = "%(funcName)-30s | %(message)s" + FORMAT = "%(levelname)-9s %(name)-40s %(funcName)-40s | %(message)s" + logging.basicConfig( + level=getattr(logging, args.log_level), + format=FORMAT, + filename="cell2mol.log", + filemode="w", + force=True, + ) + return args + + +if __name__ == "__main__": + args = parsing_arguments() diff --git a/cell2mol/c2m_driver.py b/cell2mol/c2m_driver.py deleted file mode 100644 index 87eef3b97..000000000 --- a/cell2mol/c2m_driver.py +++ /dev/null @@ -1,153 +0,0 @@ -#!/usr/bin/env python - -import sys -import os -# Import modules -from cell2mol.helper import parsing_arguments -from cell2mol.c2m_module import cell2mol -from cell2mol.cif2info import cif_2_info -from cell2mol.classes import cell -from cell2mol.read_write import readinfo, prefiter_cif, writexyz -from cell2mol.other import handle_error -import ase.io -from cell2mol.cell_operations import frac2cart_fromparam -from cell2mol.cell_operations import cart2frac - -# if __name__ != "__main__" and __name__ != "cell2mol.c2m_driver": sys.exit(1) -if __name__ == "__main__" or __name__ == "cell2mol.c2m_driver": - - input, isverbose, isquiet = parsing_arguments() - current_dir = os.getcwd() - input_path = os.path.normpath(input) - dir, file = os.path.split(input_path) - root, extension = os.path.splitext(file) - root = root.split(".") - name = root[0] - - stdout = sys.stdout - stderr = sys.stderr - - # Filenames for output and cell object - cell_fname = os.path.join(current_dir, "Cell_{}.cell".format(name)) - ref_cell_fname = os.path.join(current_dir, "Ref_Cell_{}.cell".format(name)) - output_fname = os.path.join(current_dir, "cell2mol.out") - - ##### Deals with the parsed arguments for verbosity ###### - if isverbose and not isquiet: debug = 2 - elif isverbose and isquiet: debug = 0 - elif not isverbose and isquiet: debug = 0 - elif not isverbose and not isquiet: debug = 1 - - ##### Deals with files ###### - if os.path.exists(input_path): - ## If the input is a .cif file, then it is converted to a .info file using cif_2_info from cif2cell - if extension == ".cif": - # Pre-filtering of the .cif file - prefiter_cif(input_path) - errorpath = os.path.join(current_dir, "cif2cell.err") - infopath = os.path.join(current_dir, "{}.info".format(name)) - # if error exist : sys.exit(1) - # Create .info file - cif_2_info(input_path, infopath, errorpath) - # Checks errors in cif_2_info - with open(errorpath, 'r') as err: - for line in err.readlines(): - if "Error" in line: sys.exit(1) - - ## If the input is an .info file, then is used directly - elif extension == ".info": infopath = input_path - else: sys.exit(1) - - output = open(output_fname, "w") - sys.stdout = output - - ################################ - ### PREPARES THE CELL OBJECT ### - ################################ - version = "2.0" - print(f"cell2mol version {version}") - print(f"INITIATING cell object from info path: {infopath}") - print(f"Debug level: {debug}") - # Reads reference molecules from info file, as well as labels and coordinates - labels, pos, ref_labels, ref_fracs, cellvec, cellparam = readinfo(infopath) - atoms = ase.io.read(input_path) - - # Get Cartesian coordinates - cartesian_coords = atoms.get_positions("center") - - # Get atomic symbols (labels) - atomic_labels = atoms.get_chemical_symbols() - - print("Checking atomic labels and coordinates") - print("Atomic labels:", len(atomic_labels), "from ase", len(labels), "from cif2cell") - print("Cartesian coordinates:", len(cartesian_coords), "from ase", len(pos), "from cif2cell") - if len(atomic_labels)==len(labels) and len(cartesian_coords)==len(pos): - pass - else: print("Atomic labels and coordinates are inconsistent") - writexyz(current_dir, "Cell_{}_ase.xyz".format(name), atomic_labels, cartesian_coords) - writexyz(current_dir, "Cell_{}_cif2cell.xyz".format(name), labels, pos) - # Initiates cell - # newcell = cell(name, labels, pos, cellvec, cellparam) - newcell = cell(name, atomic_labels, cartesian_coords, cellvec, cellparam) - # Loads the reference molecules and checks_missing_H - # TODO : reconstruct the unit cell without using reference molecules - # TODO : reconstruct the unit cell using (only reconstruction of) reference molecules and Space group - newcell.get_reference_molecules(ref_labels, ref_fracs, cov_factor=1.3, debug=debug) - ref_pos = frac2cart_fromparam(ref_fracs, cellparam) - writexyz(current_dir, "Ref_All_{}.xyz".format(name), ref_labels, ref_pos) - writexyz(current_dir, "Ref_All_frac_{}.xyz".format(name), ref_labels, ref_fracs) - if not newcell.has_isolated_H: newcell.check_missing_H(debug=debug) - newcell.assess_errors(ref=True) - newcell.save(ref_cell_fname) - for idx, ref in enumerate(newcell.refmoleclist): - writexyz(current_dir, "Ref_Molecule_{}_{}.xyz".format(name, idx), ref.labels, ref.coord) - writexyz(current_dir, "Ref_Molecule_{}_frac_{}.xyz".format(name, idx), ref.labels, cart2frac(ref.coord, cellvec)) - # sys.exit(0) - ###################### - ### CALLS CELL2MOL ### - ###################### - print(f"ENTERING cell2mol with debug={debug}") - cell = cell2mol(newcell, reconstruction=True, charge_assignment=True, spin_assignment=True, debug=debug) - cell.assess_errors() - print("*** Cell ***") - cell.save(cell_fname) - print(cell) - print("*** Reference molecules ***") - print(cell.refmoleclist) - # print("*** Molecules ***") - # for idx, mol in enumerate(cell.moleclist): - # if mol.iscomplex: - # print(f"{idx}: {mol.subtype}({mol.type}) {mol.formula} {mol.is_haptic=} {mol.totcharge=} {mol.spin=}") #\n {mol.adjnum=}\n {mol.madjnum=} \n {mol.smiles=}") - # # print(mol.adjnum) - # for lig in mol.ligands: - # print(f"|- {lig.subtype}({lig.type}) {lig.formula} {lig.is_haptic=} {lig.denticity=} {lig.totcharge=}")# \n {lig.smiles=}") - # # print(f"|- {lig.connected_idx}") - # # print(lig.groups) - # for group in lig.groups: - # print(f"|-- {group.subtype} ({group.type}) {group.formula} {group.is_haptic=} {group.denticity=} {group.closest_metal.label}") - # for met in group.metals: - # print(f"|--- {met.label} {met.mconnec=}") - # print("") - # for metal in mol.metals: - # print(f"|# {metal.subtype}({metal.type}) {metal.label} {metal.coord_nr=} {metal.coord_geometry} {metal.charge=} {metal.spin=} {metal.coord_sphere_formula} {metal.mconnec=} {metal.connec=}") - # # print(f"|# {metal.get_coord_sphere_formula()}") - # # print(f"|# {metal.coord_sphere_formula}") - # # print(f"|# {metal.mconnec=} {metal.connec=}") - # # print(metal.metal_adjacency) - # # for bond in metal.bonds: - # # print(f"|--- {bond}") - # else: - # print(f"{idx}: {mol.subtype}({mol.type}) {mol.formula} {mol.totcharge=} {mol.spin=}\n {mol.smiles}") - # print("") - - output.close() - sys.stdout = stdout - - # Error handling - case = cell.error_case - error_fname = os.path.join(current_dir, f"error_{case}.out") - error = open(error_fname, "w") - sys.stdout = error - handle_error(case) - error.close() - sys.stdout = stdout \ No newline at end of file diff --git a/cell2mol/c2m_module.py b/cell2mol/c2m_module.py deleted file mode 100644 index a19aaf2da..000000000 --- a/cell2mol/c2m_module.py +++ /dev/null @@ -1,52 +0,0 @@ -#!/usr/bin/env python - -import time -from cell2mol.other import handle_error - - -################################################################################## -################################## MAIN ########################################## -################################################################################## -def cell2mol(newcell: object, reconstruction: bool=True, charge_assignment: bool=True, spin_assignment: bool=True, debug: int=1) -> object: - - if reconstruction: - tini = time.time() - if not newcell.has_isolated_H and not newcell.has_missing_H: - # Cell Reconstruction - newcell.reconstruct(debug=debug) - - if newcell.error_get_fragments: return newcell - elif newcell.error_reconstruction: return newcell - else: - tend = time.time() - if debug >= 1: print(f"\nCell Reconstruction Finished Normally. Total execution time: {tend - tini:.2f} seconds") - else: - return newcell - - if charge_assignment: - tini = time.time() - - if not newcell.error_reconstruction: - newcell.assign_charges(debug=debug) - - if newcell.error_empty_poscharges : return newcell - elif newcell.error_multiple_distrib : return newcell - elif newcell.error_empty_distrib : return newcell - elif newcell.error_prepare_mols : return newcell - else : - newcell.create_bonds(debug=debug) - tend = time.time() - if debug >= 1: print(f"Charge Assignment Finished Normally. Total execution time: {tend - tini:.2f} seconds") - # newcell.predict_metal_ox(debug=debug) # predict metal oxidation state using Random Forest model - else: - return newcell - - if spin_assignment: - if not newcell.error_prepare_mols: - tini = time.time() - newcell.assign_spin(debug=debug) - tend = time.time() - if debug >= 1: print(f"\nTotal execution time for Spin Assignment: {tend - tini:.2f} seconds") - else: - return newcell - return newcell diff --git a/cell2mol/cell_operations.py b/cell2mol/cell_operations.py deleted file mode 100755 index 21e45af40..000000000 --- a/cell2mol/cell_operations.py +++ /dev/null @@ -1,186 +0,0 @@ -#!/usr/bin/env python - -import numpy as np - -####################################################### -def frac2cart_fromcellvec(frac_coord, cellvec): - """ Convert fractional coordinates to cartesian coordinates - Parameters: - frac_coord (list): list of fractional coordinates - cellvec (list): list of cell vectors - Returns: - cartesian (list): list of cartesian coordinates - """ - cartesian = [] - for idx, frac in enumerate(frac_coord): - xcar = (frac[0] * cellvec[0][0] + frac[1] * cellvec[1][0] + frac[2] * cellvec[2][0]) - ycar = (frac[0] * cellvec[0][1] + frac[1] * cellvec[1][1] + frac[2] * cellvec[2][1]) - zcar = (frac[0] * cellvec[0][2] + frac[1] * cellvec[1][2] + frac[2] * cellvec[2][2]) - cartesian.append([float(xcar), float(ycar), float(zcar)]) - return cartesian - -####################################################### -def frac2cart_fromparam(frac_coord, cellparam): - """ Convert fractional coordinates to cartesian coordinates - Parameters: - frac_coord (list): list of fractional coordinates - cellparam (list): list of cell parameters - Returns: - cartesian (list): list of cartesian coordinates - """ - - a = cellparam[0] - b = cellparam[1] - c = cellparam[2] - alpha = np.radians(cellparam[3]) - beta = np.radians(cellparam[4]) - gamma = np.radians(cellparam[5]) - - volume = (a*b*c* np.sqrt(1- np.cos(alpha) ** 2 - np.cos(beta) ** 2 - np.cos(gamma) ** 2 + 2 * np.cos(alpha) * np.cos(beta) * np.cos(gamma))) - - m = np.zeros((3, 3)) - m[0][0] = a - m[0][1] = b * np.cos(gamma) - m[0][2] = c * np.cos(beta) - m[1][0] = 0 - m[1][1] = b * np.sin(gamma) - m[1][2] = c * ((np.cos(alpha) - np.cos(beta) * np.cos(gamma)) / np.sin(gamma)) - m[2][0] = 0 - m[2][1] = 0 - m[2][2] = volume / (a * b * np.sin(gamma)) - - cartesian = [] - for idx, frac in enumerate(frac_coord): - xcar = frac[0] * m[0][0] + frac[1] * m[0][1] + frac[2] * m[0][2] - ycar = frac[0] * m[1][0] + frac[1] * m[1][1] + frac[2] * m[1][2] - zcar = frac[0] * m[2][0] + frac[1] * m[2][1] + frac[2] * m[2][2] - cartesian.append([float(xcar), float(ycar), float(zcar)]) - return cartesian - -############################;########################### -def translate(vector, coords, cellvec): - newcoord = [] - for idx, coord in enumerate(coords): - newx = ( - coord[0] - + vector[0] * cellvec[0][0] - + vector[1] * cellvec[1][0] - + vector[2] * cellvec[2][0] - ) - newy = ( - coord[1] - + vector[0] * cellvec[0][1] - + vector[1] * cellvec[1][1] - + vector[2] * cellvec[2][1] - ) - newz = ( - coord[2] - + vector[0] * cellvec[0][2] - + vector[1] * cellvec[1][2] - + vector[2] * cellvec[2][2] - ) - newcoord.append([float(newx), float(newy), float(newz)]) - return newcoord - -####################################################### -def cart2frac(cartCoords, cellvec): - """ Convert cartesian coordinates to fractional coordinates - - Parameters: - cartCoords (list): list of cartesian coordinates - cellvec (list): list of cell vectors - Returns: - fracCoords (list): list of fractional coordinates - """ - - latCnt = [x[:] for x in [[None] * 3] * 3] - for a in range(3): - for b in range(3): - latCnt[a][b] = cellvec[b][a] - - fracCoords = [] - detLatCnt = det3(latCnt) - - for i in cartCoords: - aPos = ( - det3( - [ - [i[0], latCnt[0][1], latCnt[0][2]], - [i[1], latCnt[1][1], latCnt[1][2]], - [i[2], latCnt[2][1], latCnt[2][2]], - ] - ) - ) / detLatCnt - bPos = ( - det3( - [ - [latCnt[0][0], i[0], latCnt[0][2]], - [latCnt[1][0], i[1], latCnt[1][2]], - [latCnt[2][0], i[2], latCnt[2][2]], - ] - ) - ) / detLatCnt - cPos = ( - det3( - [ - [latCnt[0][0], latCnt[0][1], i[0]], - [latCnt[1][0], latCnt[1][1], i[1]], - [latCnt[2][0], latCnt[2][1], i[2]], - ] - ) - ) / detLatCnt - fracCoords.append([aPos, bPos, cPos]) - return fracCoords - -####################################################### -def det3(mat): - """ Calculate the determinant of a 3x3 matrix - - Args: - mat (list): list of 3x3 matrix - Returns: - determinant (float): determinant of the matrix - """ - return ( - (mat[0][0] * mat[1][1] * mat[2][2]) - + (mat[0][1] * mat[1][2] * mat[2][0]) - + (mat[0][2] * mat[1][0] * mat[2][1]) - - (mat[0][2] * mat[1][1] * mat[2][0]) - - (mat[0][1] * mat[1][0] * mat[2][2]) - - (mat[0][0] * mat[1][2] * mat[2][1]) - ) - -####################################################### -def translate(vector, coords, cellvec): - """ Translate coordinates by a vector - Parameters: - vector (list): list of vector components - coords (list): list of coordinates - cellvec (list): list of cell vectors - Returns: - newcoord (list): list of translated coordinates - """ - - newcoord = [] - for idx, coord in enumerate(coords): - newx = ( - coord[0] - + vector[0] * cellvec[0][0] - + vector[1] * cellvec[1][0] - + vector[2] * cellvec[2][0] - ) - newy = ( - coord[1] - + vector[0] * cellvec[0][1] - + vector[1] * cellvec[1][1] - + vector[2] * cellvec[2][1] - ) - newz = ( - coord[2] - + vector[0] * cellvec[0][2] - + vector[1] * cellvec[1][2] - + vector[2] * cellvec[2][2] - ) - newcoord.append([float(newx), float(newy), float(newz)]) - - return newcoord \ No newline at end of file diff --git a/cell2mol/cell_reconstruction.py b/cell2mol/cell_reconstruction.py deleted file mode 100644 index 2d988beac..000000000 --- a/cell2mol/cell_reconstruction.py +++ /dev/null @@ -1,605 +0,0 @@ -import numpy as np -import os -import itertools -from cell2mol.cell_operations import translate -from cell2mol.other import additem, absolute_value -from cell2mol.connectivity import compare_species, count_species, split_species, arrange_data_for_reorder -from cell2mol.hungarian import reorder -from cell2mol.elementdata import ElementData -from cell2mol.read_write import writexyz - -elemdatabase = ElementData() - -####################################################### -def tmatgenerator(centroid, thres=0.40, full=False, debug: int=0): - # This function generates a list of the translations that a fragment should undergo depending on the centroid of its fractional coordinates - # For instance, if the centroid of a fragment is at 0.9 in any given axis, it is unlikely that a one-cell-length translation along such axis (resulting in 1.9) would help. - # Also, a fragment right at the center of the unit cell (centroid=(0.5, 0.5, 0.5) is unlikely to require reconstruction - # The threshold defines the window. If thres=0.4, the function will suggest positive translation for any fragment between 0 and 0.4, and negative translation between 0.6 and 1.0. - # If full is asked, then all translations are applied - - tmax = 1 - thres - tmin = thres - - if not full: - tmatrix = [] - tmatrix = additem((0, 0, 0), tmatrix) - - # X positive - if centroid[0] >= tmax: - tmatrix = additem((-1, 0, 0), tmatrix) - if centroid[1] >= tmax: - tmatrix = additem((-1, -1, 0), tmatrix) - tmatrix = additem((0, -1, 0), tmatrix) - if centroid[2] >= tmax: - tmatrix = additem((-1, -1, -1), tmatrix) - tmatrix = additem((0, -1, -1), tmatrix) - tmatrix = additem((0, 0, -1), tmatrix) - if centroid[2] <= tmin: - tmatrix = additem((-1, -1, 1), tmatrix) - tmatrix = additem((0, -1, 1), tmatrix) - tmatrix = additem((0, 0, 1), tmatrix) - if centroid[1] <= tmin: - tmatrix = additem((-1, 1, 0), tmatrix) - tmatrix = additem((0, 1, 0), tmatrix) - if centroid[2] >= tmax: - tmatrix = additem((-1, 1, -1), tmatrix) - tmatrix = additem((0, 1, -1), tmatrix) - tmatrix = additem((0, 0, -1), tmatrix) - if centroid[2] <= tmin: - tmatrix = additem((-1, 1, 1), tmatrix) - tmatrix = additem((0, 1, 1), tmatrix) - tmatrix = additem((0, 0, 1), tmatrix) - if centroid[2] >= tmax: - tmatrix = additem((-1, 0, -1), tmatrix) - tmatrix = additem((0, 0, -1), tmatrix) - if centroid[2] <= tmin: - tmatrix = additem((-1, 0, 1), tmatrix) - tmatrix = additem((0, 0, 1), tmatrix) - - if centroid[1] >= tmax: - tmatrix = additem((0, -1, 0), tmatrix) - if centroid[2] >= tmax: - tmatrix = additem((0, -1, -1), tmatrix) - tmatrix = additem((0, 0, -1), tmatrix) - if centroid[2] <= tmin: - tmatrix = additem((0, -1, 1), tmatrix) - tmatrix = additem((0, 0, 1), tmatrix) - - if centroid[2] >= tmax: - tmatrix = additem((0, 0, -1), tmatrix) - - if centroid[0] <= tmin: - tmatrix = additem((1, 0, 0), tmatrix) - if centroid[1] <= tmin: - tmatrix = additem((1, 1, 0), tmatrix) - tmatrix = additem((0, 1, 0), tmatrix) - if centroid[2] <= tmin: - tmatrix = additem((1, 1, 1), tmatrix) - tmatrix = additem((0, 1, 1), tmatrix) - tmatrix = additem((0, 0, 1), tmatrix) - if centroid[2] >= tmax: - tmatrix = additem((1, 1, -1), tmatrix) - tmatrix = additem((0, 1, -1), tmatrix) - tmatrix = additem((0, 0, -1), tmatrix) - if centroid[1] >= tmax: - tmatrix = additem((1, -1, 0), tmatrix) - tmatrix = additem((0, -1, 0), tmatrix) - if centroid[2] >= tmax: - tmatrix = additem((1, -1, -1), tmatrix) - if centroid[2] <= tmin: - tmatrix = additem((1, -1, 1), tmatrix) - if centroid[2] <= tmin: - tmatrix = additem((1, 0, 1), tmatrix) - tmatrix = additem((0, 0, 1), tmatrix) - if centroid[2] >= tmax: - tmatrix = additem((1, 0, -1), tmatrix) - tmatrix = additem((0, 0, -1), tmatrix) - - if centroid[1] <= tmin: - tmatrix = additem((0, 1, 0), tmatrix) - if centroid[2] <= tmin: - tmatrix = additem((0, 1, 1), tmatrix) - tmatrix = additem((0, 0, 1), tmatrix) - if centroid[2] >= tmax: - tmatrix = additem((0, 1, -1), tmatrix) - tmatrix = additem((0, 0, -1), tmatrix) - if centroid[2] <= tmin: - tmatrix = additem((0, 0, 1), tmatrix) - - if (centroid[0] > tmin) and (centroid[0] < tmax): - if centroid[1] <= tmin: - tmatrix = additem((0, 1, 0), tmatrix) - if centroid[2] >= tmax: - tmatrix = additem((0, 1, -1), tmatrix) - if centroid[2] <= tmin: - tmatrix = additem((0, 1, 1), tmatrix) - if centroid[1] >= tmax: - tmatrix = additem((0, -1, 0), tmatrix) - if centroid[2] >= tmax: - tmatrix = additem((0, -1, -1), tmatrix) - if centroid[2] <= tmin: - tmatrix = additem((0, -1, 1), tmatrix) - if centroid[2] <= tmin: - tmatrix = additem((0, 0, 1), tmatrix) - if centroid[1] >= tmax: - tmatrix = additem((0, -1, 1), tmatrix) - if centroid[1] <= tmin: - tmatrix = additem((0, 1, 1), tmatrix) - if centroid[2] >= tmax: - tmatrix = additem((0, 0, -1), tmatrix) - if centroid[1] >= tmax: - tmatrix = additem((0, -1, -1), tmatrix) - if centroid[1] <= tmin: - tmatrix = additem((0, 1, -1), tmatrix) - elif full: - x = [-1, 0, 1] - tmatrix = [p for p in itertools.product(x, repeat=3)] - - tmatrix.sort(key=absolute_value) - - return tmatrix - -####################################################### -def classify_fragments(blocklist: list, refmoleclist: list, debug: int=0): - init_natoms = 0 - moleclist = [] - fraglist = [] - Hlist = [] - - ## Prepares Blocks - for b in blocklist: - if debug >= 2: print(f"CLASSIFY_FRAGMENTS, preparing block\n{b.formula}") - if not hasattr(b,"centroid"): b.get_centroid() - if not hasattr(b,"element_count"): b.set_element_count() - if not hasattr(b,"numH"): b.numH = b.set_element_count()[4] + b.set_element_count()[3] #"Hidrogen + Deuterium atoms" - ## Prepares Reference Molecules - for ref in refmoleclist: - if debug >= 2: print(f"CLASSIFY_FRAGMENTS, preparing reference\n{ref.formula}") - if not hasattr(ref,"element_count"): ref.set_element_count() - if not hasattr(ref,"numH"): ref.numH = ref.set_element_count()[4] + ref.set_element_count()[3] #"Hidrogen + Deuterium atoms" - - # Classifies blocks and puts them in 3 bags. (1) Full molecules, (2) partial molecules=fragments, (3) Hydrogens - for idx, block in enumerate(blocklist): - if (block.natoms == 1) and (block.numH == 1): - block.subtype = "H" - Hlist.append(block) - else: - found = False - for ref in refmoleclist: - issame = compare_species(ref, block) - if issame: - block.subtype = "molecule" - moleclist.append(block) - found = True - if not found: - block.subtype = "fragment" - fraglist.append(block) - - if debug > 0: print(f"CLASSIFY_FRAGMENTS. {len(blocklist)} Blocks sorted as (Molec, Frag, H): {len(moleclist)} {len(fraglist)} {len(Hlist)}") - return moleclist, fraglist, Hlist - - -####################################################### -def fragments_reconstruct(moleclist: list, fraglist: list, Hlist: list, refmoleclist: list, cellvec: list, factor: float=1.3, metal_factor: float=1.0, debug: int=0): - ## Moleclist is the list of species which have been identified as 'complete' molecules - ## Fraglist is the list of species which are not 'complete' molecules - ## Hlist is the list of species that are only H atoms - ## Refmoleclist is the list of species that are identified as reference molecules (that is, molecules that will appear in the unit cell once reconstructed) - Warning = False - # Reconstruct Heavy Fragments - if len(fraglist) > 1: - print("") - print("##############################################") - print("FRAG_RECONSTRUCT.", len(fraglist), "molecules submitted to SEQUENTIAL with Heavy") - print("##############################################") - newmols, remfrag = sequential(fraglist, refmoleclist, cellvec, factor, metal_factor, "Heavy", debug) - print(f"FRAG_RECONSTRUCT. {len(newmols)} molecules and {len(remfrag)} fragments out of SEQUENTIAL with Heavy") - moleclist.extend(newmols) - print(f"FRAG_RECONSTRUCT. {remfrag=}") - # After the first step, fraglist is made of the remaining molecules in the first step, and the list of H atoms - fraglist = [] - fraglist.extend(remfrag) - fraglist.extend(Hlist) - else: print(f"Only {len(fraglist)} heavy fragments. Skipping Heavy"); remfrag = fraglist.copy() - - # Reconstruct Hydrogens with remaining Fragments - if len(remfrag) > 0 and len(Hlist) > 0: - print("FRAG_RECONSTRUCT.", len(fraglist), "fragments submitted to sequential with All") - if debug >= 2: - for frag in fraglist: - print("FRAG_RECONSTRUCT.", frag.formula, frag.subtype, frag.labels) - - finalmols, remfrag = sequential(fraglist, refmoleclist, cellvec, factor, metal_factor, "All", debug=2) - moleclist.extend(finalmols) - print(f"FRAG_RECONSTRUCT. {moleclist=}") - print(f"FRAG_RECONSTRUCT. {remfrag=}") - # if len(remfrag) > 0: - # for i, mol in enumerate(moleclist): - # writexyz(os.getcwd(), f"moleclist_{i}.xyz", mol.labels, mol.coord) - # for i, rem in enumerate(remfrag): - # writexyz(os.getcwd(), f"remfrag_{i}.xyz", rem.labels, rem.coord) - if len(remfrag) > 0: Warning = True; print("FRAG_RECONSTRUCT. Remaining after Hydrogen reconstruction",remfrag) - elif len(moleclist) == 0: Warning = True; print("FRAG_RECONSTRUCT. No Molecules after Hydrogen reconstruction", moleclist) - else: Warning = False; print("FRAG_RECONSTRUCT. No remaining Molecules after Hydrogen reconstruction") - elif len(remfrag) > 0 and len(Hlist) == 0: - Warning = True - print("FRAG_RECONSTRUCT. WARNING: There are remaining Fragments and no H in list") - elif len(remfrag) == 0 and len(Hlist) > 0: - Warning = True - print("FRAG_RECONSTRUCT. WARNING: There are isolated H atoms in cell") - - # In moleclist, now there is a mix between molecules that were already complete (non-fragmented), and molecules that have been reconstructed - # The former were identified in the cell.get_moleclist() function, and have cell as parent. - # The latter have been constructed by merging fragments, and do not have cell as parent, but have the cell_indices stored in mol.cell_indices - # Here we homogenize the situation by adding the cell_indices variable to all molecules - for mol in moleclist: - if not hasattr(mol,"cell_indices"): - if mol.check_parent("cell"): - mol.cell_indices = mol.get_parent_indices("cell") - - return moleclist, Warning - -####################################################### -def assign_subtype(mol: object, references: list) -> str: - for ref in references: - issame = compare_species(mol, ref) - if issame: - if ref.iscomplex: return "Complex" - else: return "Other" - # If not in references - if mol.iscomplex: return "Complex" - else: return "Other" - -####################################################### -def sequential(fragmentlist: list, refmoleclist: list, cellvec: list, factor: float=1.3, metal_factor: float=1.0, typ: str="All", debug: int=2): - # Crappy function that controls the reconstruction process. It is called sequential because pairs of fragments are sent one by one. Ideally, a parallel version would be desirable. - # Given a list of fragments(fragmentlist), a list of reference molecules(refmoleclist), and some other minor parameters, the function sends pairs of fragments and evaluates if they... - # ...form a bigger fragment. If so, the bigger fragment is evaluated. If it coincides with one of the molecules in refmoleclist, than it means that it is a full molecule that requires no further work. - # ...if it does not, then it means that requires further reconstruction, and is again introduced in the loop. - # typ is a variable that defines how to combine the fragments. To speed up the process, this function is called twice in main. - # -First, to combine heavy fragments among themselves (typ="Heavy") - # -Second, to combie heavy fragments with H atoms (typ="All") - #:return molecsfoundlist, remainingfragments: lists of molecules and fragments, respectively, saved as objects - - if debug >= 1: print("Entered sequential with", len(fragmentlist), "fragments to reconstruct") - - # Finds How many atoms, at max, can a molecule have. It is used to skip meaningless combinations - maxatoms = 0 - for ref in refmoleclist: - if ref.natoms > maxatoms: - maxatoms = ref.natoms - - molecsfoundlist = [] - remainingfragments = [] - ################################################### - #### INPUT THAT CONTROLS THE ITERATIVE PROCESS #### - ################################################### - threshold_tmat = 0.40 - increase_tmat = 0.20 - niter = 1 - maxiter = 3000 - lastiter = 0 - lastitermargin = maxiter - ################################################### - - ################################################### - # Lists (list1 and list2) are created here depending on variable "typ" - ################################################### - for frag in fragmentlist: - if not hasattr(frag,"frac_centroid"): frag.get_centroid() - frag.tmatrix = tmatgenerator(frag.frac_centroid, threshold_tmat) - - remlist = [] - Hlist = [] - for frag in fragmentlist: - if (frag.natoms == 1) and (frag.numH == 1): - frag.subtype = "H" - Hlist.append(frag) - else: - frag.subtype = "Heavy" - remlist.append(frag) - if debug >= 1: print("Found",len(remlist),"and",len(Hlist),"Heavy and Hydrogen fragments, respectively") - if typ == "Heavy": - list1 = remlist.copy() - list2 = remlist.copy() - elif typ == "All": - list1 = remlist.copy() - list2 = Hlist.copy() - - ## Initial Fragment indices for each list - Frag1_toallocate = 0 - Frag2_toallocate = 0 - - ################# - ### MAIN LOOP ### - ################# - while (len(list1) > 0) and (len(list2) > 0): - - ################# - # This part decides which molecules in the two lists are sent to combine - ################# - STOP = False - Last_Attempt = False - - if niter > 1: Frag2_toallocate += 1 - if (Frag2_toallocate > len(list2) - 1): # Reaches the end of the second list. Restarts 2nd and advances 1st - Frag1_toallocate += 1 - Frag2_toallocate = 0 - if (Frag1_toallocate > len(list1) - 1): # Reaches the end of the first list. Restarts both - Frag1_toallocate = 0 - Frag2_toallocate = 0 - if typ == "Heavy": - if Frag1_toallocate == Frag2_toallocate: Frag2_toallocate += 1 - if typ == "Heavy": - if (Frag1_toallocate >= len(list1) - 1) and (Frag2_toallocate >= len(list2) - 2): STOP = True - elif typ == "All": - if (Frag1_toallocate >= len(list1) - 1) and (Frag2_toallocate >= len(list2) - 1): STOP = True - ################# - - ################# - # This part handles sublist, keeplist1 and keeplist2. They are necessary to handle the results of the function "Combine", which is called later. - ################# - if debug >= 1: print(" ") - if debug >= 1: print("Fragments to allocate:",Frag1_toallocate,Frag2_toallocate,"out of",len(list1)-1,len(list2)-1) - sublist = [] - keeplist1 = [] - keeplist2 = [] - if typ == "Heavy": - for i in range(0, len(list1)): - if i == Frag1_toallocate: sublist.append(list1[i]) - elif i != Frag2_toallocate: keeplist1.append(list1[i]) - for i in range(0, len(list2)): - if i == Frag2_toallocate: sublist.append(list2[i]) - elif i != Frag1_toallocate: keeplist2.append(list2[i]) - elif typ == "All": - for i in range(0, len(list1)): - if i == Frag1_toallocate: sublist.append(list1[i]) - elif i != Frag1_toallocate: keeplist1.append(list1[i]) - for i in range(0, len(list2)): - if i == Frag2_toallocate: sublist.append(list2[i]) - elif i != Frag2_toallocate: keeplist2.append(list2[i]) - if debug >= 2: - print(f"sublist", len(sublist), [s.formula for s in sublist] ) - print("list1", len(list1), [s.formula for s in list1]) - print("list2", len(list2),[s.formula for s in list2]) - print(f"keeplist1", len(keeplist1), [s.formula for s in keeplist1]) - print(f"keeplist2", len(keeplist2), [s.formula for s in keeplist2]) - print("") - ################# - # This part evaluates that the fragments that are going to be combined, can form one of the reference molecules. The resulting number of atoms is used. - ################# - if list1[Frag1_toallocate].natoms + list2[Frag2_toallocate].natoms > maxatoms: - if debug >= 1: print("SEQUENTIAL",typ,"SKIPPED",list1[Frag1_toallocate].natoms,"and",list2[Frag2_toallocate].natoms) - else: - if debug >= 1: print("SEQUENTIAL",typ,"iteration",niter,"with",len(list1),"and",len(list2),"Remaining in each list") - if debug >= 1: print("SEQUENTIAL",typ,"sending",list1[Frag1_toallocate].labels,"and",list2[Frag2_toallocate].labels,"to combine") - - ################# - # Here, the function "combine" is called. It will try cell translations of one fragment, and check whether it eventually combines with the second fragment into either a bigger fragment or a molecule - ################# - goodlist, avglist, badlist = combine(sublist, refmoleclist, cellvec, threshold_tmat, factor, metal_factor, debug=debug) - if debug >=2 : - print("SEQUENTIAL: goodlist", len(goodlist), [g.formula for g in goodlist]) - print("SEQUENTIAL: avglist", len(avglist), [a.formula for a in avglist]) - print("SEQUENTIAL: badlist", len(badlist), [b.formula for b in badlist]) - ################# - # This part handles the results of combine - ################# - if (len(goodlist) > 0) or (len(avglist) > 0): - # it means that the function combine worked. Thus, it restarts the fragments to allocate - lastiter = niter - Frag1_toallocate = 0 - Frag2_toallocate = 0 - - # Adds the found molecule to the appropriate list - for g in goodlist: - molecsfoundlist.append(g) - if debug >= 1: print(f"SEQUENTIAL: Found molecule {g.formula}") - - # Reconstructs list1 and list2 - list1 = [] - list2 = [] - for a in avglist: - list1.append(a) - if typ == "Heavy": list2.append(a) - - if len(badlist) > 1: - if typ == "Heavy": - list1.append(badlist[0]) - list1.append(badlist[1]) - list2.append(badlist[0]) - list2.append(badlist[1]) - elif typ != "Heavy": - list1.append(badlist[0]) - list2.append(badlist[1]) - for k1 in keeplist1: - list1.append(k1) - for k2 in keeplist2: - list2.append(k2) - - if len(list1) + len(list2) == 0: - print("FINISHED succesfully") - break - - if typ == "Heavy": - if len(list1) == 1: - for l in list1: - remainingfragments.append(l) - print("FINISHED with Remaining Fragment") - break - - if (len(list1) == 0) and (len(list2) == 0): - print("FINISHED succesfully") - break - - ################# - # This part decides whether the WHILE loop must finish. - ################# - niter += 1 - if niter > maxiter: STOP = True - if niter > (lastiter + lastitermargin): STOP = True - if not STOP: continue - else: - if (threshold_tmat <= (1.0 - increase_tmat)) or Last_Attempt: - STOP = False - threshold_tmat += increase_tmat - if threshold_tmat >= 1: Last_Attempt = True - if not Last_Attempt: - maxsize = 0 - for l in list1: - l.tmatrix = tmatgenerator(l.centroid, threshold_tmat) - if len(l.tmatrix) > maxsize: maxsize = len(l.tmatrix) - for l in list2: - l.tmatrix = tmatgenerator(l.centroid, threshold_tmat) - if len(l.tmatrix) > maxsize: maxsize = len(l.tmatrix) - if debug >= 1: print(" Increased Threshold_tmat. Now:", threshold_tmat) - if debug >= 1: print(" Maxsize of the translation matrix is=", maxsize) - elif Last_Attempt: - for l in list1: - l.tmatrix = tmatgenerator(l.centroid, threshold_tmat, full=True) - for l in list2: - l.tmatrix = tmatgenerator(l.centroid, threshold_tmat, full=True) - if debug >= 1: print("Trying Full Tmatrix for all Items in list") - - niter = 1 - Frag1_toallocate = 0 - Frag2_toallocate = 0 - else: - for l in list1: - if debug >= 1: print("Sequential: list1 end:", l.labels) - remainingfragments.append(l) - for l in list2: - if typ == "All" and debug >= 1: print("Sequential: list2 end:", l.labels) - if typ == "All": remainingfragments.append(l) - break - - return molecsfoundlist, remainingfragments - -####################################################### -def combine(tobemerged: list, references: list, cellvec: list, threshold_tmat: float, cov_factor: float, metal_factor: float, debug: int=0): - from cell2mol.classes import molecule - - goodlist = [] ## List of molecules coming from the two fragments received - avglist = [] ## List of bigger fragments coming from the two fragments received - badlist = [] ## List of fragments as they entered the function - - ## Merges the coordinates of both fragments, and finds species - newmolec = merge_fragments(tobemerged, references, cellvec, cov_factor, metal_factor, debug=debug) - if newmolec is not None and debug >= 1: print("COMBINE. received molecule:", newmolec, "from merge fragments") - - ## Steric Clashes, or more than one fragment retrieved - if newmolec is None: - badlist.append(tobemerged[0]) - badlist.append(tobemerged[1]) - - ## Single specie retrieved - if newmolec is not None: - newmolec.get_fractional_coord(cellvec) - newmolec.get_centroid() - newmolec.tmatrix = tmatgenerator(newmolec.frac_centroid, threshold_tmat) - - found = False - for ref in references: - if not found: - if (newmolec.natoms == ref.natoms) and (newmolec.eleccount == ref.eleccount) and (newmolec.formula == ref.formula): - dummy1, dummy2, map12 = reorder(ref.labels, newmolec.labels, ref.coord, newmolec.coord) - - reordered_labels = [newmolec.labels[i] for i in map12] - reordered_coord = [newmolec.coord[i] for i in map12] - reordered_radii = [newmolec.radii[i] for i in map12] - reordered_frac_cood = [newmolec.frac_coord[i] for i in map12] - reordered_cell_indices = [newmolec.cell_indices[i] for i in map12] - - reordered_newmolec = molecule(reordered_labels, reordered_coord, reordered_radii) - reordered_newmolec.cell_indices = reordered_cell_indices - reordered_newmolec.set_fractional_coord(reordered_frac_cood) - reordered_newmolec.set_adjacency_parameters(cov_factor, metal_factor) - reordered_newmolec.set_atoms(create_adjacencies=True, debug=2) - - if reordered_newmolec.iscomplex: - reordered_newmolec.split_complex() - reordered_newmolec.get_hapticity(debug=debug) - for lig in reordered_newmolec.ligands: - lig.get_denticity(debug=debug) - for met in reordered_newmolec.metals: - met.get_coordination_geometry(debug=debug) - if debug >= 1: print(f"COMBINE: {reordered_newmolec.formula=}") - if debug >= 1: print(f"COMBINE: {reordered_newmolec=}") - - issame = compare_species(reordered_newmolec, ref, debug=debug) - if issame: ## Then is a molecule that appears in the reference list - found = True - reordered_newmolec.subtype = ref.subtype - goodlist.append(reordered_newmolec) - if debug >= 1: print(f"COMBINE: Fragment {reordered_newmolec.formula} added to goodlist with {reordered_newmolec.cell_indices=}") - if not found: ## Then it is a fragment. A bigger one, but still a fragment - newmolec.subtype = "Rec. Fragment" - avglist.append(newmolec) - if debug >= 1: print("COMBINE: Fragment", newmolec.formula, "added to avglist") - - return goodlist, avglist, badlist - -####################################################### -def merge_fragments(frags: list, refs: list, cellvec: list, cov_factor: float=1.3, metal_factor: float=1.0, debug: int=0): - from cell2mol.classes import molecule - - # finds biggest fragment and keeps it in the original cell - sizes = [] - for f in frags: - size = f.natoms - sizes.append(size) - keep_idx = np.argmax(sizes) - if keep_idx == 0: move_idx = 1 - elif keep_idx == 1: move_idx = 0 - keep_frag = frags[keep_idx] - move_frag = frags[move_idx] - if debug > 0: print("MERGE_FRAGMENTS: keep_idx", keep_idx) - if debug > 0: print("MERGE_FRAGMENTS: move_idx", move_idx) - if debug > 0: print("MERGE_FRAGMENTS: move_frag.tmatrix", move_frag.tmatrix) - - #applytranspose = list(itertools.product(*move_frag.tmatrix)) - #print("applytranspose", applytranspose) - if len(move_frag.tmatrix) == 0: return None - for t in move_frag.tmatrix: - if debug > 0: print("MERGE_FRAGMENTS: translation", t) - ## Applies Translations and each time, it checks if a bigger molecule is formed - ## meaning that the translation was successful - reclabels = [] - reclabels.extend(keep_frag.labels) - reclabels.extend(move_frag.labels) - reccoord = [] - reccoord.extend(keep_frag.coord) - if t == (0, 0, 0): reccoord.extend(move_frag.coord) - else: reccoord.extend(translate(t, move_frag.coord, cellvec)) - - ## Evaluate if we get only one fragment. If so, we're ok: - numspecs = count_species(reclabels, reccoord, cov_factor=cov_factor, debug=debug) - if debug > 0: print("MERGE_FRAGMENTS: count_species found", numspecs) - if numspecs != 1: continue - blocklist = split_species(reclabels, reccoord, cov_factor=cov_factor, debug=debug) - if blocklist is None: continue - else: - if len(blocklist) != 1: continue - if len(blocklist) == 1: - newmolec = molecule(reclabels, reccoord) - newmolec.cell_indices = blocklist[0] - newmolec.set_adjacency_parameters(cov_factor, metal_factor) - newmolec.set_adj_types() - newmolec.set_element_count() - newmolec.get_adjmatrix() - newmolec.get_centroid() - newmolec.get_metal_adjmatrix() - return newmolec - return None - - - return ( - (mat[0][0] * mat[1][1] * mat[2][2]) - + (mat[0][1] * mat[1][2] * mat[2][0]) - + (mat[0][2] * mat[1][0] * mat[2][1]) - - (mat[0][2] * mat[1][1] * mat[2][0]) - - (mat[0][1] * mat[1][0] * mat[2][2]) - - (mat[0][0] * mat[1][2] * mat[2][1])) - - diff --git a/cell2mol/test/ACEYOW/cif2cell.err b/cell2mol/charge/__init__.py similarity index 100% rename from cell2mol/test/ACEYOW/cif2cell.err rename to cell2mol/charge/__init__.py diff --git a/cell2mol/charge/charge_balancer.py b/cell2mol/charge/charge_balancer.py new file mode 100644 index 000000000..b11d4e3d3 --- /dev/null +++ b/cell2mol/charge/charge_balancer.py @@ -0,0 +1,312 @@ +import logging +import itertools +from typing import List +from cell2mol.charge.utils import aromatic_info +from cell2mol.write_results import log_charge_state_details +from cell2mol.charge.specie_assigner import assign_charge_to_specie + +logger = logging.getLogger(__name__) + + +def balance_unitcell_charge(refcell, unitcell): + """ + Resolves and assigns charges to unique species to ensure unit cell neutrality. + """ + logger.info("=" * 40) + logger.info(" Get Unique Species and Balance Charges ") + logger.info("=" * 40) + + # check error flags + if unitcell.error_reconstruction: + logger.warning(" Not proceed due to reconstruction error.") + return refcell, unitcell + + if refcell.error_get_poscharges: + logger.error(" Not proceed due to no charge states for some unique species.") + return refcell, unitcell + log_charge_state_details(unitcell, refcell) + + # Charge Balancing + expanded_species_charges, unique_species_charges = resolve_charge_distributions( + unitcell.unique_indices, refcell.unique_species + ) + + dist_count = len(expanded_species_charges) + unitcell.error_multiple_distrib = dist_count > 1 + unitcell.error_empty_distrib = dist_count == 0 + + # If the primary attempt failed (too many or empty results), try heuristics. + # if dist_count != 1: + # retry_expanded, retry_charges = [], [] + # if unitcell.error_multiple_distrib: + # logger.info( + # "Ambiguity found (%d distributions). Retrying with Aromaticity preference ...", + # dist_count, + # ) + # retry_expanded, retry_charges = resolve_charge_distributions( + # unitcell.unique_indices, + # refcell.unique_species, + # aromatic=True, + # ) + # elif unitcell.error_empty_distrib: + # logger.info( + # "No valid distribution found. Retrying with Rare Metal Oxidation States...", + # dist_count, + # ) + # retry_expanded, retry_charges = resolve_charge_distributions( + # unitcell.unique_indices, + # refcell.unique_species, + # rare=True, + # ) + + # # Evaluate retry results + # retry_count = len(retry_expanded) + # if len(retry_expanded) == 1: + # logger.info("Retry success. Valid distribution found.") + # expanded_species_charges = retry_expanded + # unique_species_charges = retry_charges + # unitcell.error_multiple_distrib = False + # unitcell.error_empty_distrib = False + # else: + # # Update flags based on retry failure (e.g., still multiple or still empty) + # unitcell.error_multiple_distrib = retry_count > 1 + # unitcell.error_empty_distrib = retry_count == 0 + + # Final Error Check + if unitcell.error_multiple_distrib or unitcell.error_empty_distrib: + logger.error( + "Balance charges failed. Flags in distribution: Multiple=%s, Empty=%s", + unitcell.error_multiple_distrib, + unitcell.error_empty_distrib, + ) + return refcell, unitcell + + # Assign charges to the unique species only. + # Then propagate to refcell.refmoleclist later by refcell.assign_charges() + final_charges = unique_species_charges[0] + for specie, charge in zip(refcell.unique_species, final_charges): + assign_charge_to_specie(specie, charge) + + return refcell, unitcell + + +def balance_molecule_charge(molecule, input_charge: int = 0, second_try: bool = True): + """ + Resolves and assigns charges to unique species in the single molecule + to achieve the target input_charge. + """ + if molecule.unique_species is None: + molecule.get_unique_species() + if molecule.selected_cs is None: + molecule.get_selected_cs() + + molecule.error_get_poscharges = None in molecule.selected_cs + if molecule.error_get_poscharges: + logger.error("No charge states available for some species.") + return molecule + + unique_indices = [spec.unique_index for spec in molecule.species_list] + # Primary search + expanded_species_charges, unique_species_charges = resolve_charge_distributions( + unique_indices, molecule.unique_species, input_charge=input_charge + ) + + # Refinement for the retry logic inside balance_molecule_charge + # if len(expanded_species_charges) != 1 and second_try: + # logger.info("Retrying with fallbacks...") + + # # Capture the retry results + # res_expanded, res_unique = [], [] + # if len(expanded_species_charges) > 1: + # res_expanded, res_unique = resolve_charge_distributions( + # unique_indices, + # molecule.unique_species, + # input_charge=input_charge, + # aromatic=True, + # ) + # elif len(expanded_species_charges) == 0: + # res_expanded, res_unique = resolve_charge_distributions( + # unique_indices, + # molecule.unique_species, + # input_charge=input_charge, + # rare=True, + # ) + + # # If the retry found a unique solution, update the main variables + # if len(res_expanded) == 1: + # expanded_species_charges, unique_species_charges = res_expanded, res_unique + + # Update state flags based on final results + dist_count = len(expanded_species_charges) + molecule.error_multiple_distrib = dist_count > 1 + molecule.error_empty_distrib = dist_count == 0 + + if molecule.error_multiple_distrib or molecule.error_empty_distrib: + logger.error( + "Balance charges failed. Error in distribution: Multiple=%s, Empty=%s", + molecule.error_multiple_distrib, + molecule.error_empty_distrib, + ) + return molecule + + final_charges = unique_species_charges[0] + for specie, charge in zip(molecule.unique_species, final_charges): + assign_charge_to_specie(specie, charge) + for ref_specie in molecule.species_list: + if specie.unique_index == ref_specie.unique_index: + assign_charge_to_specie(ref_specie, charge) + return molecule + + +def resolve_charge_distributions( + unique_indices, + unique_species, + input_charge: int = 0, + rare: bool = False, + predict: bool = False, + aromatic: bool = False, +): + """ + Computes all valid charge distributions that sum to the target input_charge. + """ + + species_charge_options: List[List[int]] = [] + + # Gather Charge options per unique specie + for idx, spec in enumerate(unique_species): + options = [] + + if spec.subtype == "metal": + options = _get_metal_options(spec, rare, predict) + else: + options = _get_ligand_options(spec, aromatic) + + if not options: + logger.error( + "Unique Species %s (Index %d) has no valid charge options.", + spec.formula, + idx, + ) + return [], [] + + species_charge_options.append(options) + + logger.debug("Charge options per unique specie: %s", species_charge_options) + logger.debug("Unique indices mapping: %s", unique_indices) + + # Generate Combinations and Filter + expanded_species_charges = [] + unique_species_charges = [] + + combinations = list(itertools.product(*species_charge_options)) + logger.debug("Generated %d charge combinations.", len(combinations)) + + for combo in combinations: + expanded_dist = [combo[u_idx] for u_idx in unique_indices] + + # Check if total charge matches input + if sum(expanded_dist) == input_charge: + expanded_species_charges.append(expanded_dist) + unique_species_charges.append(combo) + + logger.debug( + "Found valid distribution (charge %d): %s", input_charge, expanded_dist + ) + + logger.debug("expanded_species_charges: %s", expanded_species_charges) + logger.debug("unique_species_charges: %s", unique_species_charges) + logger.debug( + "Final Count: %d valid distributions found.", + len(expanded_species_charges), + ) + + return expanded_species_charges, unique_species_charges + + +def _get_metal_options(spec, rare: bool, predict: bool) -> List[int]: + """Determines valid oxidation states for metal species.""" + all_possible_m_ox = [0, 1, 2, 3, 4, 5, 6, 7] + + if rare: + rare_states = [x for x in all_possible_m_ox if x not in spec.possible_cs] + logger.debug("RARE METAL OXIDATION STATES: %s %s", spec.formula, rare_states) + return rare_states + + # if predict: + # predicted_charge = predict_metal_ox(spec) + # return [predicted_charge] + + return list(spec.possible_cs) + + +def _get_ligand_options(spec, aromatic: bool) -> List[int]: + """Determines valid charges for ligand species, optionally filtering by aromaticity.""" + possible_cs = spec.possible_cs + + if not possible_cs: + return [] + + if len(possible_cs) == 1: + return [possible_cs[0].corr_total_charge] + + if aromatic: + return _filter_by_aromaticity(spec, possible_cs) + + return [cs.corr_total_charge for cs in possible_cs] + + +def _filter_by_aromaticity(spec, possible_cs) -> List[int]: + """Selects charge states that maximize aromatic atoms, then aromatic rings.""" + aromatic_stats = [] + for cs in possible_cs: + # Get indices of added protons + added_indices = [ + i + for i, n_added in enumerate(cs.protonation.site_proton_counts) + if n_added > 0 + ] + + info = aromatic_info(cs.rdkit_obj, added_indices) + aromatic_stats.append( + { + "charge": cs.corr_total_charge, + "smiles": cs.smiles, + "atoms": info["Aromatic atoms"], + "rings": info["Number of aromatic rings"], + "obj": cs, + } + ) + + atoms_counts = [x["atoms"] for x in aromatic_stats] + rings_counts = [x["rings"] for x in aromatic_stats] + + logger.debug(" aromatic_counts: %s %s", spec.formula, atoms_counts) + logger.debug(" aromatic_ring: %s %s", spec.formula, rings_counts) + + # If no aromaticity anywhere, return all options + if all(count == 0 for count in atoms_counts): + return [x["charge"] for x in aromatic_stats] + + # 1. Filter by Max Aromatic Atoms + max_atoms = max(atoms_counts) + candidates = [x for x in aromatic_stats if x["atoms"] == max_atoms] + + candidate_indices = [possible_cs.index(c["obj"]) for c in candidates] + logger.debug( + " Primary indices with max aromatic atoms (%d): %s", + max_atoms, + candidate_indices, + ) + + # 2. Filter by Max Aromatic Rings (among those with max atoms) + max_rings = max(c["rings"] for c in candidates) + best_candidates = [c for c in candidates if c["rings"] == max_rings] + + # Logging details for best candidates + if logger.isEnabledFor(logging.DEBUG): + indices = [possible_cs.index(c["obj"]) for c in best_candidates] + logger.debug(" Max aromatic rings (%d) at indices: %s", max_rings, indices) + for c in best_candidates: + logger.debug(" - Selected: %s (Charge: %s)", c["smiles"], c["charge"]) + + return [c["charge"] for c in best_candidates] diff --git a/cell2mol/charge/charge_state_resolver.py b/cell2mol/charge/charge_state_resolver.py new file mode 100644 index 000000000..c1dd62b16 --- /dev/null +++ b/cell2mol/charge/charge_state_resolver.py @@ -0,0 +1,781 @@ +import numpy as np +from collections import defaultdict +from cell2mol.classes.charge_state import ChargeState +import logging +from cell2mol.operations import reorder_element +from cell2mol.charge.utils import ( + METAL_OXIDATION_STATES, + FULLERENES, + MANUAL_CHARGE_ASSIGN_SPECIES, + aromatic_info, +) +from cell2mol.elementdata import ElementData +from cell2mol.charge.xyz2mol import ( + get_proto_mol, + AC2mol, + chiral_stereo_check, +) +from rdkit import Chem +from rdkit.Chem import rdchem + +logger = logging.getLogger(__name__) +elemdatabase = ElementData() + + +def enumerate_possible_charge_states(spec: object): + """ + Generates valid charge states for a given specie. + Charge states are only generated for: + - ligands + - non-complex molecules + Args: + spec: The Specie object. + Returns: + A list of selected ChargeState objects, or None if no valid states found. + """ + + # 1. Check for protonation states + if spec.protonation_states is None: + spec.get_protonation_states() + + if not spec.protonation_states: + logger.warning("No protonation states available for %s", spec.formula) + return None + + # 2. Filter: Only process Ligands or Non-complex Molecules + # (Skip complex molecules, metals, etc.) + is_processable = (spec.subtype == "ligand") or (spec.is_non_complex_molecule) + if not is_processable: + logger.debug( + "Skipping enumeration for subtype: %s (%s)", spec.subtype, spec.formula + ) + return None + + # Handle special cases first + # Manual Assignments + if spec.formula in MANUAL_CHARGE_ASSIGN_SPECIES: + return [generate_manual_charge_state(spec)] + + # Fullerenes + if spec.formula in FULLERENES: + logger.debug( + "Skipping charge state enumeration for fullerene: %s", spec.formula + ) + return None + + # Haptic Ligands + is_haptic_c8 = ( + spec.subtype == "ligand" + and len(spec.groups) == 1 + and spec.groups[0].haptic_type == ["eta8(C8)"] + ) + if is_haptic_c8: + ch_state = generate_charge_state(-1, spec.protonation_states[0]) + return [ch_state] + + for prot in spec.protonation_states: + logger.debug( + "Detailed info Protonation State formula: %s Number of protons added: %d Mode : %s", + prot.formula, + prot.n_protons_added, + prot.mode, + ) + logger.debug("detailed: %s\n%s", prot.formula, prot) + if not prot.status: + logger.warning( + "Invalid protonation state found %s (status=%s)", + prot.formula, + prot.status, + ) + logger.debug("detailed: %s\n%s", prot.formula, prot) + + # 3. Enumeration Loop + valid_charge_states = [] + for prot in spec.protonation_states: + # Get list of integer charges to attempt for this specific protonation + candidate_charges = get_candidate_charges(prot) + + for charge in candidate_charges: + # Attempt to build the RDKit object and state + charge_state = generate_charge_state(charge, prot) + + if charge_state: + valid_charge_states.append(charge_state) + logger.debug( + " [Success] %s | Protonation: %s | Charge: %d | Added atoms: %d | SMILES: %s", + spec.formula, + prot.formula, + charge, + prot.n_protons_added, + charge_state.smiles, + ) + else: + logger.debug( + " [Failed] %s | Protonation: %s | Charge: %d | Added atoms: %d", + spec.formula, + prot.formula, + charge, + prot.n_protons_added, + ) + + # 4. Final Selection / Filtering + best_candidates = identify_best_charge_states(valid_charge_states) + + return best_candidates if best_candidates else None + + +def generate_charge_state( + charge: int, + prot: object, + allow_charged_fragments: bool = True, + embed_chiral: bool = True, + ref_uncorr_atom_charges: list | None = None, +): + """ + Generates molecular connectivity and atomistic charges from 3D coordinates + using xyz2mol, then validates chirality and resonance. + """ + # If protonation state is invalid, do not allow charged fragments + if not prot.status: + logger.warning( + "Protonation state invalid for %s, skipping charge state generation.", + prot.formula, + ) + return None + + logger.debug( + "Protonation Formula: %s | Target Charge: %d | Allow charged fragments: %s | N Protons Added: %d", + prot.formula, + charge, + allow_charged_fragments, + prot.n_protons_added, + ) + + # AC2mol returns a list of RDKit molecule objects and bond order (BO) matrix + # from the adjacency (AC) matrix + new_mols, BO = AC2mol( + mol=get_proto_mol(prot.atnums), + AC=prot.adjmat, + atoms=prot.atnums, + charge=charge, + allow_charged_fragments=allow_charged_fragments, + ) + + # Early Exit if no candidates found + if not new_mols: + logger.warning(f"No mol found for charge {charge}") + return None + + # Stereo and Chirality Validation + if embed_chiral: + if not all(chiral_stereo_check(mol) for mol in new_mols): + logger.error("Chirality check failed for one or more candidates") + return None + + rdkit_obj = new_mols[0] # use the first candidate as default + atom_charges = [] + total_charge = 0 + for i, atom in enumerate(rdkit_obj.GetAtoms()): + if ref_uncorr_atom_charges is not None: + ref_q = ref_uncorr_atom_charges[i] + if atom.GetFormalCharge() != ref_q: + logger.debug( + "Correcting atom %d (%s) %d -> %d", + i, + atom.GetSymbol(), + atom.GetFormalCharge(), + ref_q, + ) + atom.SetFormalCharge(ref_q) + q = atom.GetFormalCharge() + atom_charges.append(q) + total_charge += q + + # Final Validation and Resonance Search + smiles = Chem.MolToSmiles(rdkit_obj) + is_correct = check_rdkit_obj_connectivity(rdkit_obj, prot.natoms, charge) + + logger.debug( + "Generated ChargeState | SMILES: %s | Total Charge: %d | Correct: %s", + smiles, + total_charge, + is_correct, + ) + charge_state = ChargeState.from_positional( + status=is_correct, + uncorr_total_charge=total_charge, + uncorr_atom_charges=atom_charges, + rdkit_obj=rdkit_obj, + smiles=smiles, + charge_tried=charge, + allow=allow_charged_fragments, + protonation=prot, + ) + + if is_correct: + charge_state = get_best_resonance_state(charge_state) + + return charge_state + + +def check_rdkit_obj_connectivity(mol: Chem.Mol, natoms: int, charge: int) -> bool: + """ + Validates the chemical sanity of an RDKit molecule object by checking + valences, lone pairs, and bond connectivity. + """ + pt = Chem.GetPeriodicTable() + is_correct = True + + for i in range(natoms): + atom = mol.GetAtomWithIdx(i) + symbol = atom.GetSymbol() + formal_charge = atom.GetFormalCharge() + # Old : valence = atom.GetTotalValence() + try: + # New RDKit API (2024.03+) + valence = atom.GetValence(Chem.ValenceType.TOTAL) + except AttributeError: + # Fallback for older RDKit versions if ValenceType doesn't exist + valence = atom.GetTotalValence() + + # Calculate lone pairs: (Valence Electrons - Formal Charge - Shared Electrons) / 2 + num_valence_electrons = pt.GetNOuterElecs(atom.GetAtomicNum()) + lone_pairs = (num_valence_electrons - formal_charge - valence) / 2 + + # 1. Lone Pair Sanity Check + if lone_pairs not in [0, 1, 2, 3, 4]: + logger.debug("Lone pair error at atom %d (%s): %f", i, symbol, lone_pairs) + is_correct = False + + # 2. Aromaticity & Bond Consistency Check + # We check total shared electrons (valence) against the RDKit valence model + is_aromatic = atom.GetIsAromatic() + + if not is_aromatic: + try: + # New RDKit API + explicit = atom.GetValence(Chem.ValenceType.EXPLICIT) + implicit = atom.GetValence(Chem.ValenceType.IMPLICIT) + except AttributeError: + # Old RDKit API + explicit = atom.GetExplicitValence() + implicit = atom.GetImplicitValence() + + # Check if calculated shared electrons match expected valence + if valence != explicit + implicit: + logger.debug("Valence mismatch at atom %d (%s)", i, symbol) + is_correct = False + + # 3. Total Electron Count Check + # Shared electrons + electrons in lone pairs + charge should equal outer shell count + calc_total_elecs = valence + (int(lone_pairs) * 2) + formal_charge + if calc_total_elecs != num_valence_electrons: + logger.debug("Total electron count mismatch at atom %d (%s)", i, symbol) + is_correct = False + + # logger.debug( + # "Charge: %d | Atom: %2d %2s | Q: %2d | V: %2d | LP: %2d | Correct: %s", + # charge, + # i, + # symbol, + # formal_charge, + # valence, + # lone_pairs, + # is_correct, + # ) + + return is_correct + + +def get_best_resonance_state(charge_state: object) -> object: + """ + Checks for resonance alternatives and returns the best state found. + """ + prot = charge_state.protonation + rdkit_obj = charge_state.rdkit_obj + charge_tried = charge_state.uncorr_total_charge + natoms = prot.natoms + + try: + # Generate resonance structures + ## We use UNCONSTRAINED_ANIONS/CATIONS if the system is highly charged + ## suppl = rdchem.ResonanceMolSupplier(rdkit_obj, rdchem.ResonanceFlags.ALLOW_INCOMPLETE_OCTETS) + suppl = rdchem.ResonanceMolSupplier(rdkit_obj) + num_res = len(suppl) + except Exception as e: + logger.error("ResonanceMolSupplier failed for %s: %s", prot.parent.formula, e) + return charge_state + + if num_res <= 1: + return charge_state + + # The ResonanceMolSupplier ranks structures; index 0 is generally the most 'stable' + best_res_mol = suppl[0] + if best_res_mol is None: + return charge_state + + # Canonical SMILES comparison to see if the structure actually changed + original_smiles = Chem.MolToSmiles(rdkit_obj, canonical=True) + best_smiles = Chem.MolToSmiles(best_res_mol, canonical=True) + logger.debug("Resonance check for %s: found %d forms", prot.parent.formula, num_res) + logger.debug(" Original: %s", original_smiles) + logger.debug(" Best : %s", best_smiles) + + if original_smiles == best_smiles: + return charge_state + logger.info("Resonance form updated for %s", prot.parent.formula) + + # Extract properties from the best resonance candidate + atom_charges = [a.GetFormalCharge() for a in best_res_mol.GetAtoms()] + total_charge = sum(atom_charges) + + # Perform a sanity check on the new connectivity/valence + is_correct = check_rdkit_obj_connectivity(best_res_mol, natoms, charge_tried) + + # Return the updated ChargeState object + return ChargeState.from_positional( + is_correct, + total_charge, + atom_charges, + best_res_mol, + best_smiles, + charge_tried, + True, # allow + prot, + ) + + +def get_candidate_charges(prot: object) -> list: + """ + Determines the range of formal charges to test for a specific protonation state. + Uses chemical heuristics based on formula, denticity, and atom connectivity. + """ + spec = prot.parent + formula = spec.formula + + # Quick returns for simple cases + if formula in {"C-O", "H2-O", "C-N", "C-S", "C-Se", "C-Te", "C-P", "C-As", "C-Sb"}: + return [0] + if formula in {"F", "Cl", "Br", "I"}: + return [-1] + + logger.debug( + "Evaluating %s (%s) | Number of protonation states: %d", + spec.formula, + spec.subtype, + len(spec.protonation_states), + ) + # Determine max charge ranges + if spec.subtype == "molecule" and spec.is_non_complex_molecule: + maxcharge = 3 + elif spec.subtype == "ligand": + # Count terminal oxygens not coordinateed to metals (e.g., in carboxylates or sulfonates) + num_noncoordinated_oxygen = sum( + 1 for a in spec.atoms if a.label == "O" and a.mconnec == 0 and a.connec == 1 + ) + + if not spec.is_haptic: + if spec.denticity is None: + spec.get_denticity() + maxcharge = ( + spec.denticity + num_noncoordinated_oxygen - prot.n_protons_added + ) + else: + maxcharge = 2 + + # Constraints: maxcharge should not exceed atom count, clamped between 2 and 4 + if all(a.mconnec < 2 for a in spec.atoms): + maxcharge = min(maxcharge, spec.natoms) + + maxcharge = max(2, min(maxcharge, 4)) + + # If protons were added and it's not nitrosyl, favor neutrality + if not spec.is_nitrosyl and prot.n_protons_added > 0: + maxcharge = 0 + else: + maxcharge = 0 + + # Generate Charge List (e.g., maxcharge=2 -> [0, -1, 1, -2, 2]) + charges = [0] + for m in range(1, int(maxcharge) + 1): + charges.extend([-m, m]) + + return charges + + +def generate_manual_charge_state(spec): + """Generates a ChargeState for special species using formula-based lookups.""" + # 1. Configuration Registry + REGISTRY = { + "O4-Cl": ("Cl", "[O-]Cl(=O)(=O)=O", -1), + "N3": ("central", "[N-]=[N+]=[N-]", -1), + "I3": ("central", "I[I-]I", -1), + "N2": (None, "N#N", 0), + "I4": (None, "I[I-][I-]I", -2), + "I5": (None, "II[I-]II", -1), + "I6": (None, "I[I-]II[I-]I", -2), + "H": (None, "[H-]", -1), + } + + formula = spec.formula + target_atom, smiles, charge = REGISTRY.get(formula, (None, None, 0)) + + # 2. Handle specific NO Logic + if formula == "N-O": + target_atom = "O" + is_bent = getattr(spec, "NO_type", "") == "Bent" + smiles, charge = ("[N-]=O", -1) if is_bent else ("[N]=O", 0) + + # 3. Determine Atom Ordering + order = list(range(spec.natoms)) + new_order = order + + if target_atom: + for idx, atom in enumerate(spec.atoms): + # 'central' means the atom connected to two others of the same type + if target_atom == "central": + adj_labels = [ + spec.get_parent("molecule").labels[a] for a in atom.adjacency + ] + if adj_labels.count(atom.label) == 2: + new_order = reorder_element(order, 1, idx) + break + # Specific label match (e.g., "Cl" in O4-Cl) + elif atom.label == target_atom: + new_order = reorder_element(order, 1, idx) + break + + # 4. RDKit Processing + mol = Chem.MolFromSmiles(smiles, sanitize=False) + mol = Chem.RenumberAtoms(mol, new_order) + mol = Chem.RemoveHs(mol) + + atom_charges = [a.GetFormalCharge() for a in mol.GetAtoms()] + total_charge = sum(atom_charges) + + logger.debug( + "Manual Charge: %s | SMILES: %s | Order: %s", formula, smiles, new_order + ) + + return ChargeState.from_positional( + True, + total_charge, + atom_charges, + mol, + smiles, + charge, + True, + spec.protonation_states[0], + ) + + +def get_metal_poscharges(metal: object) -> list: + """ + Retrieve common oxidation states for a given metal atom. + + Oxidation state data primarily from: + Venkataraman et al., J. Chem. Educ. 1997, 74, 915. + Args: + metal (object): Metal atom object. + Returns: + poscharges (list): List of common oxidation states for the metal. + """ + + mol = metal.get_parent("molecule") + if mol.is_haptic is None: + mol.get_hapticity() + + poscharges = METAL_OXIDATION_STATES[metal.label] + + # Allow 0 oxidation state for selected metals under specific conditions + zero_os_metals = {"Fe", "Ni", "Ru"} + if metal.label in zero_os_metals: + has_CO = any(lig.formula == "C-O" for lig in mol.ligands) + if (has_CO or mol.is_haptic) and 0 not in poscharges: + poscharges.append(0) + + return poscharges + + +def _get_atomic_valence_candidates( + prot: object, allow_carbenes: bool = False +) -> tuple[list, list]: + """ + Determines potential valence states for each atom in a ligand based on connectivity. + Args: + prot: Protonation object containing 'labels' (element symbols) and 'adjmat' (adjacency matrix). + allow_carbenes (bool): If False, excludes divalent Carbon states. + + Returns: + tuple: (valences_list_of_lists, sorted_valences_list) + - valences_list_of_lists: List of possible valence integers for each atom. + - sorted_valences_list: A prioritized/combined list of valence configurations. + """ + import itertools + from cell2mol.charge.xyz2mol import atomic_valence, get_sorted_valences_list + + # Convert element labels to atomic numbers + atomic_nums = [elemdatabase.elementnr[label] for label in prot.labels] + # Calculate current coordination number (sum of bonds for each atom) + current_valences = prot.adjmat.sum(axis=1).astype(int) + + valences_list_of_lists = [] + for atomic_num, curr_v in zip(atomic_nums, current_valences): + # Initial filter: candidate valences must be >= current connectivity + candidates = [v for v in atomic_valence.get(atomic_num, []) if v >= curr_v] + + if atomic_num == 6: # Carbon logic + if curr_v == 1 and 2 in candidates: + candidates.remove(2) + elif curr_v == 2: + if not allow_carbenes and 2 in candidates: + candidates.remove(2) + candidates.append(3) # + + elif atomic_num == 7: # Nitrogen logic + if curr_v not in candidates: + candidates.append(curr_v) + + valences_list_of_lists.append(candidates) + + sorted_gen = get_sorted_valences_list(valences_list_of_lists, atomic_nums) + + # Use islice to safely take only the first 50 entries + # This prevents calculating millions of combinations you don't need + first_valences = list(itertools.islice(sorted_gen, 1))[0] + logger.debug( + "Specie %s first entry of valences: %s", + prot.formula, + first_valences, + ) + for label, valences in zip(prot.labels, first_valences): + logger.debug(" Atom %s valence: %s", label, valences) + return valences_list_of_lists, first_valences + + +def identify_best_charge_states(charge_states: list) -> list: + """ + Selects the best charge distributions. + """ + # Filter out None values initially + valid_states = [ch for ch in charge_states if ch is not None] + if not valid_states: + return [] + + # 1. Get initial best candidates indices using the core logic + best_indices = _get_best_candidate_indices(valid_states) + + # Map indices back to objects + initial_candidates = [valid_states[i] for i in best_indices] + + # 2. Group candidates by their 'corrected total charge' + grouped_by_charge = defaultdict(list) + for state in initial_candidates: + grouped_by_charge[state.corr_total_charge].append(state) + + logger.debug("Found target charges: %s", list(grouped_by_charge.keys())) + + final_states = [] + + # 3. Process each charge group + for tgt_charge, group in grouped_by_charge.items(): + logger.debug( + "Processing target charge %s with %d candidates", tgt_charge, len(group) + ) + + # CASE 1: Only one candidate for this charge + if len(group) == 1: + best_structure = get_best_resonance_state(group[0]) + final_states.append(best_structure) + + # CASE 2: Multiple candidates + else: + # Generate resonance forms for all candidates in this group first + resonance_candidates = [get_best_resonance_state(temp) for temp in group] + + # We apply the same filtering criteria to the subset of resonance structures + best_subset_indices = _get_best_candidate_indices(resonance_candidates) + + if not best_subset_indices: + # Fallback: take the first if filtering somehow fails + logger.debug("Tie-break failed, taking first.") + final_states.append(group[0]) + else: + # Take the best one from the filtered result (index 0) + logger.debug("Tie-break successful, taking best resonance structure.") + best_idx = best_subset_indices[0] + final_states.append(resonance_candidates[best_idx]) + + return final_states + + +def _get_best_candidate_indices(charge_states: list) -> list: + """ + Helper function containing the core filtering logic. + Calculates metrics and returns the indices of the best candidates. + """ + nlists = len(charge_states) + if nlists == 0: + return [] + + # --- 1. Extract Metrics --- + # Using lists to store metrics for all candidates + uncorr_abs_total = [] + uncorr_abs_atcharge = [] + uncorr_zwitt = [] + coincide = [] + aromatic_atoms = [] + aromatic_rings = [] + added_into_aromatic = [] + + # Coordinating atoms logic + parent = charge_states[0].protonation.parent + coordinating_atoms_indices = [ + idx for idx, atom in enumerate(parent.atoms) if atom.mconnec > 0 + ] + coordinating_atoms_labels = [ + atom.label for idx, atom in enumerate(parent.atoms) if atom.mconnec > 0 + ] + blocked_indices = [ + idx + for idx, n_added in enumerate(charge_states[0].protonation.site_proton_counts) + if n_added == 0 + ] + coord_abs_atcharge = [] + coord_raw_atcharge = [] + + for chs in charge_states: + uncorr_abs_total.append(chs.uncorr_abstotal) + uncorr_abs_atcharge.append(chs.uncorr_abs_atcharge) + uncorr_zwitt.append(chs.uncorr_zwitt) + coincide.append(chs.coincide) + + # Aromatic calculations + added_indices = [ + idx + for idx, n_added in enumerate(chs.protonation.site_proton_counts) + if n_added > 0 + ] + aromatic_dict = aromatic_info(chs.rdkit_obj, added_indices=added_indices) + + aromatic_atoms.append(aromatic_dict["Aromatic atoms"]) + aromatic_rings.append(aromatic_dict["Number of aromatic rings"]) + added_into_aromatic.append(aromatic_dict["Added to aromatic atoms"]) + + # Coordinating atom charges + coord_abs_atcharge.append( + sum([abs(chs.uncorr_atom_charges[i]) for i in coordinating_atoms_indices]) + ) + coord_raw_atcharge.append( + [chs.uncorr_atom_charges[i] for i in coordinating_atoms_indices] + ) + + # --- 2. Determine Minima/Maxima --- + min_tot = np.min(uncorr_abs_total) + min_abs = np.min(uncorr_abs_atcharge) + max_aromatic = np.max(aromatic_atoms) + + indices_min_tot = {i for i, x in enumerate(uncorr_abs_total) if x == min_tot} + indices_min_abs = {i for i, x in enumerate(uncorr_abs_atcharge) if x == min_abs} + indices_max_aromatic = [ + i for i, x in enumerate(aromatic_atoms) if x == max_aromatic + ] + + # logger.debug(f" min_tot indices: {indices_min_tot}") + # logger.debug(f" min_abs indices: {indices_min_abs}") + + # --- 3. Build Temporary List (Filtering Rounds) --- + tmplist = [] + + # Round 1: Strict intersection + for idx in range(nlists): + if not charge_states[idx].status: + continue + + is_optimal = ( + (idx in indices_min_abs) and (idx in indices_min_tot) and coincide[idx] + ) + + # Special check for coordinating atoms + is_coord_valid = False + if (coordinating_atoms_indices == blocked_indices) and ( + "C" in coordinating_atoms_labels + ): + if (uncorr_abs_atcharge[idx] == coord_abs_atcharge[idx]) and coincide[idx]: + if all(c < 0 for c in coord_raw_atcharge[idx]): + is_coord_valid = True + + if is_optimal or is_coord_valid: + tmplist.append(idx) + + # Round 2: Relaxed (Allow either MinAbs OR MinTot) + Coincide + Not Zwitt + if not tmplist: + logger.debug(" Round 1 empty. Trying Round 2 (Min+Coincide+NotZwitt)...") + for idx in range(nlists): + if ( + ((idx in indices_min_abs) or (idx in indices_min_tot)) + and coincide[idx] + and not uncorr_zwitt[idx] + ): + tmplist.append(idx) + + # Round 3: More Relaxed (Allow either MinAbs OR MinTot) + Coincide + if not tmplist: + logger.debug(" Round 2 empty. Trying Round 3 (Min+Coincide)...") + for idx in range(nlists): + if ((idx in indices_min_abs) or (idx in indices_min_tot)) and coincide[idx]: + tmplist.append(idx) + + # Round 4: Most Relaxed (Allow either MinAbs OR MinTot) + if not tmplist: + logger.debug(" Round 3 empty. Trying Round 4 (Min only)...") + for idx in range(nlists): + if (idx in indices_min_abs) or (idx in indices_min_tot): + tmplist.append(idx) + + # --- 4. Aromaticity Filtering --- + # logger.debug(f" Pre-aromatic tmplist: {tmplist}") + + # Logic: If max aromaticity is unique or dominates, filter tmplist + if len(indices_max_aromatic) == nlists: + pass # All are equal, do nothing + + elif len(indices_max_aromatic) == 1: + # If there is exactly one max aromatic candidate + new_tmplist = [] + for idx in range(nlists): + if (idx in indices_max_aromatic) and coincide[idx]: + if idx not in tmplist: + tmplist.append(idx) # Add it if not present + else: + new_tmplist.append(idx) # Keep it if present + + # Update tmplist only if we found candidates + if new_tmplist: + tmplist = new_tmplist + + elif len(indices_max_aromatic) > 1: + # If multiple candidates share max aromaticity + if len(tmplist) > 1: + new_tmplist = tmplist.copy() + for idx in range(nlists): + if idx in indices_max_aromatic and coincide[idx]: + if idx in new_tmplist: + if added_into_aromatic[idx]: + # Exclude if H added to aromatic ring (breaking aromaticity) + logger.debug(f" Removing {idx} (H added to aromatic)") + # Note: Original code commented out the remove, but logic implies filtering. + # If you want to strictly follow original commented code, do nothing. + # Assuming intent was to filter based on variable name logic: + # if added_into_aromatic[idx]: new_tmplist.remove(idx) + pass + else: + # Logic for adding new candidates if they are max aromatic + logger.debug( + f" Considering adding {idx} (High aromaticity)" + ) + + if new_tmplist: + tmplist = new_tmplist + + return tmplist diff --git a/cell2mol/charge/protonation_enumerator.py b/cell2mol/charge/protonation_enumerator.py new file mode 100644 index 000000000..435dca9b2 --- /dev/null +++ b/cell2mol/charge/protonation_enumerator.py @@ -0,0 +1,825 @@ +import numpy as np +import itertools +import networkx as nx +from cell2mol.connectivity import add_atom +from cell2mol.element_utils import get_post_transition_metal_idxs, get_metalloid_idxs +from dataclasses import dataclass +from typing import Dict, List +from cell2mol.classes.protonation import Protonation +from cell2mol.charge.utils import FULLERENES, MANUAL_CHARGE_ASSIGN_SPECIES +from cell2mol.hydrogen import detect_missing_hydrogens, add_hydrogens +import logging + +logger = logging.getLogger(__name__) + + +@dataclass +class ProtonationGroupResult: + site_proton_counts: Dict[int, int] + ligand_donor_electrons: Dict[int, int] + needs_nonlocal: bool + non_local_indices: List[int] + + +def enumerate_protonation_states(specie: object) -> list[Protonation]: + """Enumerate possible protonation states for the specie. + + Protonation states are only generated for: + - ligands + - non-complex molecules + For all other species, returns None. + """ + # ============================================================ + # Applicability guards + # ============================================================ + if specie.type != "specie": + return None + + if specie.subtype == "group": + return None + + if specie.subtype == "molecule": + if specie.is_non_complex_molecule: + return get_empty_protonation_state(specie) + else: + return None + + if specie.formula in MANUAL_CHARGE_ASSIGN_SPECIES or specie.formula in FULLERENES: + return get_empty_protonation_state(specie) + + num_post_tm = len(get_post_transition_metal_idxs(specie.labels)) + num_metalloids = len(get_metalloid_idxs(specie.labels)) + if (num_post_tm + num_metalloids) == specie.natoms: + logger.info( + "Specie %s (%s) consists only of metalloids/post-transition metals. ", + specie.formula, + specie.subtype, + ) + logger.info("Skipping protonation enumeration.") + return None + + if specie.subtype == "ligand": + parent = specie.get_parent("molecule") + if parent.has_ia_iia and not parent.iscomplex: + return get_empty_protonation_state(specie) + + # ============================================================ + # From here on: ligand protonation engine + # ============================================================ + ligand = specie + protonation_states: list = [] + + newlab = ligand.labels.copy() + newcoord = ligand.coord.copy() + # ============================================================ + # Initialization + # ============================================================ + n_protons_added = 0 + site_proton_counts = np.zeros(ligand.natoms, dtype=int) + ligand_donor_electrons = np.zeros(ligand.natoms, dtype=int) + non_local_groups_indices: list[int] = [] + process_both_modes: list[int] = [] + protonated_indices_to_reset: list[int] = [] # old : reset_H_indices + + limit_of_nonlocal_sites = 4 # Arbitrary limit to avoid combinatorial explosion + + logger.info("Processing %s (%s):", specie.formula, specie.subtype) + + # ============================================================ + # GROUP-LEVEL ANALYSIS + # ============================================================ + logger.info("Ligand formula: %s, natoms: %d", ligand.formula, ligand.natoms) + logger.debug( + "Ligand groups info: %s", + [ + ( + g.formula, + g.natoms, + [a.atom_site_label for a in g.atoms], + [m.atom_site_label for m in g.metals], + ) + for g in ligand.groups + ], + ) + for g in ligand.groups: + parent_indices = g.get_parent_indices("ligand") + + # -------------------------------------------------- + # Dispatch to helper + # -------------------------------------------------- + if g.is_haptic: # HAPTIC GROUPS + result = _handle_haptic_group(ligand, g, parent_indices) + else: # NON-HAPTIC GROUPS + result = _handle_non_haptic_group(ligand, g, parent_indices) + + # -------------------------------------------------- + # Merge results (THIS IS THE IMPORTANT PART) + # -------------------------------------------------- + for idx, val in result.site_proton_counts.items(): + site_proton_counts[idx] += val + + for idx, val in result.ligand_donor_electrons.items(): + ligand_donor_electrons[idx] += val + + if result.needs_nonlocal: + non_local_groups_indices.extend(result.non_local_indices) + + # ============================================================ + # Check non_local_groups_indices for decision + # ============================================================ + logger.debug(" non_local_groups_indices: %s", non_local_groups_indices) + if len(non_local_groups_indices) > limit_of_nonlocal_sites: + logger.info( + " %d combinatorial protonation sites detected (more than the limit of %d). ", + len(non_local_groups_indices), + limit_of_nonlocal_sites, + ) + combinations = list( + itertools.product([0, 1], repeat=len(non_local_groups_indices)) + ) + logger.info(" Total combinations to evaluate: %d. ", len(combinations)) + logger.info(" Generating empty protonation state only for %s.", specie.formula) + + return get_empty_protonation_state(specie) + + # ============================================================ + # LOCAL ATOM ADDITION + # ============================================================ + for idx, a in enumerate(ligand.atoms): + atom_label = ( + f"{a.label} ({a.atom_site_label})" if a.atom_site_label else a.label + ) + n_protons_added += site_proton_counts[idx] + if site_proton_counts[idx] == 1: + logger.debug( + " Single proton addition for atom %s (ligand idx %d)", + atom_label, + idx, + ) + _, newlab, newcoord = add_atom( + newlab, newcoord, idx, ligand, element="H", unconditional=True + ) + elif site_proton_counts[idx] >= 2: + logger.debug( + " Multiple proton addition for atom %s (ligand idx %d): %d protons, ligand_donor_electrons %d", + atom_label, + idx, + site_proton_counts[idx], + ligand_donor_electrons[idx], + ) + + _, newlab, newcoord = add_hydrogens( + newlab, newcoord, idx, ligand, num_hydrogens=site_proton_counts[idx] + ) + + if ligand_donor_electrons[idx] >= 2 and idx in non_local_groups_indices: + process_both_modes.append(idx) + logger.debug( + " Atom %s (ligand idx %d) is also proccessed for combinatorial protonation.", + atom_label, + idx, + ) + start_idx = len(newlab) + end_idx = start_idx + site_proton_counts[idx] + protonated_indices_to_reset.extend(list(range(start_idx, end_idx))) + + # ============================================================ + # Heuristic protonation + # ============================================================ + no_nonlocal_sites = len(non_local_groups_indices) == 0 + force_local_mode = process_both_modes + + if no_nonlocal_sites or force_local_mode: + protonation_states.append( + Protonation.from_positional( + labels=newlab, + coord=newcoord, + cov_factor=ligand.cov_factor, + n_protons_added=n_protons_added, + site_proton_counts=site_proton_counts, + ligand_donor_electrons=ligand_donor_electrons, + mode="heuristic", + parent=ligand, + ) + ) + if not force_local_mode: + return protonation_states + + # ============================================================ + # Combinatorial protonation + # ============================================================ + if protonated_indices_to_reset: + logger.debug( + "Ligand natoms: %d, Protonation state: natoms %d, number of added protons: %d", + ligand.natoms, + len(newlab), + n_protons_added, + ) + logger.debug( + "Sites process_both_modes: %s %s", + process_both_modes, + [ligand.atoms[idx].atom_site_label for idx in process_both_modes], + ) + logger.debug( + "Remove previously added protons at indices: %s for combinatorial protonation.", + protonated_indices_to_reset, + ) + newlab = [ + label + for idx, label in enumerate(newlab) + if idx not in protonated_indices_to_reset + ] + newcoord = [ + coord + for idx, coord in enumerate(newcoord) + if idx not in protonated_indices_to_reset + ] + for idx in process_both_modes: + n_protons_added -= site_proton_counts[idx] + site_proton_counts[idx] = 0 + ligand_donor_electrons[idx] = 0 + + local_labels = newlab.copy() + local_coords = newcoord.copy() + local_site_proton_counts = site_proton_counts.copy() + local_ligand_donor_electrons = ligand_donor_electrons.copy() + local_n_protons_added = n_protons_added + + combinations = list(itertools.product([0, 1], repeat=len(non_local_groups_indices))) + combinations.sort(key=sum) + + for com in combinations: + newlab = local_labels.copy() + newcoord = local_coords.copy() + n_protons_added = local_n_protons_added + site_proton_counts = local_site_proton_counts.copy() + ligand_donor_electrons = local_ligand_donor_electrons.copy() + + for flag, idx in zip(com, non_local_groups_indices): + if flag == 1: + site_proton_counts[idx] = 1 + n_protons_added += site_proton_counts[idx] + _, newlab, newcoord = add_atom( + newlab, newcoord, idx, ligand, element="H", unconditional=True + ) + prot = Protonation.from_positional( + labels=newlab, + coord=newcoord, + cov_factor=ligand.cov_factor, + n_protons_added=n_protons_added, + site_proton_counts=site_proton_counts, + ligand_donor_electrons=ligand_donor_electrons, + mode="combinatorial", + parent=ligand, + ) + + if prot.status: + protonation_states.append(prot) + + return protonation_states + + +def get_empty_protonation_state(specie: object) -> list[Protonation]: + """ + Create a placeholder protonation state with no added hydrogens. + + This "empty" protonation state does NOT represent a chemical + protonation. It is created solely as a preprocessing step for + charge-state enumeration, where a Protonation object is required + even when no protons are added. + """ + logger.debug( + "Creating empty protonation placeholder for %s (%s)", + specie.formula, + specie.subtype, + ) + + empty_protonation = Protonation.from_positional( + labels=specie.labels, + coord=specie.coord, + cov_factor=specie.cov_factor, + n_protons_added=0, + site_proton_counts=[0] * len(specie.labels), + ligand_donor_electrons=[0] * len(specie.labels), + mode="none", + parent=specie, + ) + + return [empty_protonation] + + +def _handle_haptic_group(ligand, g, parent_indices) -> ProtonationGroupResult: + """ + Handle protonation rules for haptic ligand groups. + + This function does NOT mutate global state. + It returns a ProtonationGroupResult describing intended changes. + """ + + site_proton_counts: Dict[int, int] = {} + ligand_donor_electrons: Dict[int, int] = {} + needs_nonlocal = False + non_local_indices: List[int] = [] + + selected = False + + logger.debug(" HANDLE_HAPTIC_GROUP: %s %s", g.formula, g.haptic_type) + logger.debug(" parent_indices (ligand): %s", parent_indices) + + for idx in parent_indices: + a = ligand.atoms[idx] + + logger.debug( + " HANDLE_HAPTIC: idx=%d, label=%s %s, connec=%d, mconnec=%d", + idx, + a.label, + f", atom_site_label={a.atom_site_label}" if a.atom_site_label else "", + a.connec, + a.mconnec, + ) + + # -------------------------------------------------- + # Helper: add up to N hydrogens on parent_indices + # -------------------------------------------------- + + def _assign_protonation_sites(max_protons: int): + molecule = ligand.get_parent("molecule") + + # ---------- Build adjacency maps ---------- + adjacency_dict = {} + metal_adjacency_dict = {} + for idx in parent_indices: + atom = ligand.atoms[idx] + adjacency_dict[idx] = [ + molecule.labels[adj] + for adj in atom.adjacency + if adj not in atom.metal_adjacency + ] + metal_adjacency_dict[idx] = [ + molecule.labels[adj] for adj in atom.metal_adjacency + ] + + def _select_sites(strict_mode: bool): + """Select protonation sites with chemical priority.""" + protonation_sites = [] + added = 0 + skip_cnt = 0 + + # ================= STRICT MODE ================= + if strict_mode: + candidates = [] + + # --- gather and score candidates --- + for idx in parent_indices: + adj_labels = adjacency_dict[idx] + nC = adj_labels.count("C") + nH = adj_labels.count("H") + nTot = len(adj_labels) + + # priority (lower number = higher priority) + if nTot == 2 and nC == 1 and nH == 1: # C1H1 + priority = 0 + if nTot == 3 and nC == 1 and nH == 2: # C1H2 + priority = 1 + elif nTot == 2 and nC == 2 and nH == 0: # C2H0 + priority = 2 + elif nTot == 3 and nC == 2 and nH == 1: # C2H1 + priority = 3 + else: + continue + + candidates.append((priority, idx)) + logger.debug(" Candidates: %s", candidates) + # --- sort by chemical priority --- + candidates.sort(key=lambda x: x[0]) + + # --- select respecting spacing rule --- + for _, idx in candidates: + atom = ligand.atoms[idx] + + if max_protons == 2 and added == 1 and skip_cnt < 2: + skip_cnt += 1 + logger.debug( + f" Skipping {idx} (count: {skip_cnt}) %s %s", + atom.label, + atom.atom_site_label, + ) + continue + + if added >= max_protons: + break + + protonation_sites.append(idx) + added += 1 + logger.debug( + " Added proton to %d %s %s %s %s", + idx, + atom.label, + atom.atom_site_label, + adjacency_dict[idx], + metal_adjacency_dict[idx], + ) + + return protonation_sites + + # ================= FALLBACK MODE ================= + for idx in parent_indices: + atom = ligand.atoms[idx] + adj_labels = adjacency_dict[idx] + metal_adj_labels = metal_adjacency_dict[idx] + + if len(metal_adj_labels) >= 2: + continue + + nC = adj_labels.count("C") + nTot = len(adj_labels) + + if nTot == 3 and nC == 3: + if max_protons == 2 and added == 1 and skip_cnt < 2: + skip_cnt += 1 + logger.debug( + f" Skipping {idx} (count: {skip_cnt}) %s %s", + atom.label, + atom.atom_site_label, + ) + continue + + protonation_sites.append(idx) + added += 1 + logger.debug( + " Added proton to %d %s %s %s %s", + idx, + atom.label, + atom.atom_site_label, + adjacency_dict[idx], + metal_adjacency_dict[idx], + ) + + if added >= max_protons: + break + + return protonation_sites + + # ---------- First pass (strict chemistry) ---------- + protonation_sites = _select_sites(strict_mode=True) + + # ---------- Fallback pass ---------- + if len(protonation_sites) < max_protons: + logger.debug(" Falling back to relaxed protonation rules") + protonation_sites = _select_sites(strict_mode=False) + + # ---------- Apply results ---------- + if len(protonation_sites) == max_protons: + site_set = set(protonation_sites) + for idx in parent_indices: + if idx in site_set: + site_proton_counts[idx] = 1 + + # -------------------------------------------------- + # Cp-like rings + # -------------------------------------------------- + if "eta5(Cp)" in g.haptic_type and not selected: + selected = True + _assign_protonation_sites(1) + + elif "eta6(benzene)" in g.haptic_type and not selected: + selected = True + + elif "CHT" in g.haptic_type and not selected: # can be anion or cation + selected = True + + elif "COT" in g.haptic_type and not selected: + selected = True + _assign_protonation_sites(2) + + elif "pentalene" in g.haptic_type and not selected: + selected = True + _assign_protonation_sites(2) + + # -------------------------------------------------- + # As5 / Pentaphosphole (substitution dependent) + # -------------------------------------------------- + # e.g. GOCSID + elif "eta5(As5)" in g.haptic_type and not selected: + selected = True + issubstituted = False + for idx in parent_indices: + a = ligand.atoms[idx] + if a.mconnec == 1: + for adj in a.adjacency: + if ligand.get_parent("molecule").labels[adj] != "As": + issubstituted = True + _assign_protonation_sites(0 if issubstituted else 1) + + # e.g. IMUCAX + elif "eta5(P5)" in g.haptic_type and not selected: + selected = True + issubstituted = False + for idx in parent_indices: + a = ligand.atoms[idx] + if a.mconnec == 1: + for adj in a.adjacency: + if ligand.get_parent("molecule").labels[adj] != "P": + issubstituted = True + _assign_protonation_sites(0 if issubstituted else 1) + + elif "eta3(C3)" in g.haptic_type and not selected: + selected = True + _assign_protonation_sites(1) + # -------------------------------------------------- + # Other hapticities + # -------------------------------------------------- + else: + if ligand.formula == "H8-C8" or ( + g.topology["is_single_simple_ring"] and g.topology["ring_sizes"][0] == 8 + ): + logger.debug(" Special case: cyclooctatetraene detected") + _assign_protonation_sites(2) + else: + logger.debug( + " Unrecognized haptic type: %s Ligand: %s", + g.haptic_type, + ligand.formula, + ) + logger.debug(" Topology analysis: %s", g.topology) + + molecule = ligand.get_parent("molecule") + + adjacency_dict = {} + metal_adjacency_dict = {} + + # ---------- Build adjacency maps ---------- + for idx in parent_indices: + atom = ligand.atoms[idx] + + adjacency_dict[idx] = [ + molecule.atoms[adj] + for adj in atom.adjacency + if adj not in atom.metal_adjacency + ] + + metal_adjacency_dict[idx] = [ + molecule.atoms[adj] for adj in atom.metal_adjacency + ] + + for idx in parent_indices: + atom = ligand.atoms[idx] + atom_label = ( + f"{atom.label} ({atom.atom_site_label})" + if atom.atom_site_label + else atom.label + ) + if atom.label != "C": + logger.debug( + " Non-carbon atom (%d) %s is not protonated in haptic group.", + idx, + atom_label, + ) + else: + neighbor_coords = [atom.coord for atom in adjacency_dict[idx]] + neighbor_labels = [atom.label for atom in adjacency_dict[idx]] + + missing_h_detected, report, num_missing_h = ( + detect_missing_hydrogens( + atom.atnum, + atom.coord, + neighbor_coords, + neighbor_labels, + ) + ) + if num_missing_h > 0: + needs_nonlocal = True + non_local_indices.append(idx) + logger.debug( + " Needing combinatorial protonation for atom %d (%s): %s", + idx, + atom_label, + report, + ) + + return ProtonationGroupResult( + site_proton_counts=site_proton_counts, + ligand_donor_electrons=ligand_donor_electrons, + needs_nonlocal=needs_nonlocal, + non_local_indices=non_local_indices, + ) + + +def _handle_non_haptic_group( + ligand, + g, + parent_indices, +) -> ProtonationGroupResult: + """ + Handle protonation rules for non-haptic ligand groups. + + No global state is mutated. + All intended changes are returned via ProtonationGroupResult. + """ + + site_proton_counts: Dict[int, int] = {} + ligand_donor_electrons: Dict[int, int] = {} + needs_nonlocal = False + non_local_indices: List[int] = [] + + ions = {"F", "Cl", "Br", "I", "As"} + + logger.debug(" HANDLE_NON_HAPTIC_GROUP: %s", g.formula) + logger.debug(" parent_indices (ligand): %s", parent_indices) + + for idx in parent_indices: + a = ligand.atoms[idx] + atom_label = a.label + (f" ({a.atom_site_label})" if a.atom_site_label else "") + logger.debug( + " HANDLE_NON_HAPTIC: idx=%d, label=%s, connec=%d, mconnec=%d", + idx, + atom_label, + a.connec, + a.mconnec, + ) + # ----------------------------------------- + # Collect non-metal adjacent atom labels + # ----------------------------------------- + adj_labels = [] + metal_adj_labels = [] + for adj in a.adjacency: + if adj not in a.metal_adjacency: + adj_labels.append(ligand.get_parent("molecule").labels[adj]) + else: + metal_adj_labels.append(ligand.get_parent("molecule").labels[adj]) + + # ----------------------------------------- + # Simple ionic cases + # ----------------------------------------- + if a.label in ions: + if a.connec == 0: + site_proton_counts[idx] = 1 + + # ----------------------------------------- + # Oxygen + # ----------------------------------------- + elif a.label == "O": + if len(adj_labels) == 1: + needs_nonlocal = True + non_local_indices.append(idx) + + # ----------------------------------------- + # Sulfur / Selenium + # ----------------------------------------- + elif a.label in {"S", "Se"}: + if len(adj_labels) == 1: + needs_nonlocal = True + non_local_indices.append(idx) + + # ----------------------------------------- + # Hydrides (handle manually) + # ----------------------------------------- + + # ----------------------------------------- + # Nitrogen + # ----------------------------------------- + elif a.label == "N": + if len(adj_labels) >= 3: + pass + elif len(adj_labels) == 2: + if adj_labels.count("N") == 2: + site_proton_counts[idx] = 1 + + else: + G = nx.from_numpy_array(ligand.adjmat.astype(float)) + cycles = nx.cycle_basis(G) + in_cycles = [c for c in cycles if idx in c] + + if len(in_cycles) == 1 and len(in_cycles[0]) == 6: + pass # pyridine-like + else: + needs_nonlocal = True + non_local_indices.append(idx) + elif len(adj_labels) == 1: + # Nitrosyl ligand (handle manually) + needs_nonlocal = True + non_local_indices.append(idx) + + else: # only N atom in the ligand + pass + # ----------------------------------------- + # Phosphorus + # ----------------------------------------- + elif a.label == "P": + if len(adj_labels) >= 3: + pass + elif len(adj_labels) == 1: + if adj_labels[0] in {"N", "C"}: + pass + elif adj_labels[0] == "P": + site_proton_counts[idx] = 1 + + else: + needs_nonlocal = True + non_local_indices.append(idx) + else: + needs_nonlocal = True + non_local_indices.append(idx) + + # ----------------------------------------- + # Carbon + # ----------------------------------------- + elif a.label == "C": + if ligand.formula in {"C-N", "C-P", "C-As", "C-Sb"}: + site_proton_counts[idx] = 1 + + elif ligand.formula in {"C-O", "C-S", "C-Se", "C-Te"}: + pass + else: + numN = adj_labels.count("N") + numO = adj_labels.count("O") + numH = adj_labels.count("H") + numC = adj_labels.count("C") + + if len(adj_labels) == 1: + site_proton_counts[idx] = 1 + + elif len(adj_labels) == 2: + if numN == 1 and numO == 1: # amide + site_proton_counts[idx] = 1 + elif numH == 2 and ligand.formula == "H2-C": + site_proton_counts[idx] = 2 + else: + G = nx.from_numpy_array(ligand.adjmat.astype(float)) + cycles = nx.cycle_basis(G) + in_cycles = [c for c in cycles if idx in c] + + if len(in_cycles) == 1: + if numN == 2: + print( + ligand.formula, + a.atom_site_label, + adj_labels, + "possible NHC", + ) + site_proton_counts[idx] = 2 + ligand_donor_electrons[idx] = 2 + elif numC == 2: + needs_nonlocal = True + non_local_indices.append(idx) + elif (numO == 1 and numC == 1) or (numN == 1 and numC == 1): + site_proton_counts[idx] = 2 + ligand_donor_electrons[idx] = 2 + needs_nonlocal = True + non_local_indices.append(idx) + else: + needs_nonlocal = True + non_local_indices.append(idx) + else: + site_proton_counts[idx] = 2 + ligand_donor_electrons[idx] = 2 + needs_nonlocal = True + non_local_indices.append(idx) + else: + needs_nonlocal = True + non_local_indices.append(idx) + + # ----------------------------------------- + # Silicon + # ----------------------------------------- + elif a.label == "Si": + if len(adj_labels) == 1: + site_proton_counts[idx] = 3 + ligand_donor_electrons[idx] = 2 + elif len(adj_labels) == 2: + G = nx.from_numpy_array(ligand.adjmat.astype(float)) + cycles = nx.cycle_basis(G) + in_cycles = [c for c in cycles if idx in c] + + if len(in_cycles) == 1: + site_proton_counts[idx] = 2 + ligand_donor_electrons[idx] = 2 + else: + needs_nonlocal = True + non_local_indices.append(idx) + else: + needs_nonlocal = True + non_local_indices.append(idx) + + # ----------------------------------------- + # Boron + # ----------------------------------------- + elif a.label == "B": + if len(adj_labels) < 4: + site_proton_counts[idx] = 1 + else: + pass + + # ----------------------------------------- + # Fallback + # ----------------------------------------- + else: + needs_nonlocal = True + non_local_indices.append(idx) + + return ProtonationGroupResult( + site_proton_counts=site_proton_counts, + ligand_donor_electrons=ligand_donor_electrons, + needs_nonlocal=needs_nonlocal, + non_local_indices=non_local_indices, + ) diff --git a/cell2mol/charge/smiles_handler.py b/cell2mol/charge/smiles_handler.py new file mode 100644 index 000000000..2c0ac938f --- /dev/null +++ b/cell2mol/charge/smiles_handler.py @@ -0,0 +1,650 @@ +from rdkit import Chem +from typing import Tuple +from cell2mol.element_utils import ( + get_metal_idxs, + get_alkali_alkaline_earth_metal_idxs, + get_post_transition_metal_idxs, +) +from cell2mol.elementdata import ElementData +import logging + +logger = logging.getLogger(__name__) +elemdatabase = ElementData() + + +def correct_smiles_ligand(ligand: object) -> Tuple[bool, bool]: + """ + Constructs an RDKit molecule from cell2mol ligand object. + This function synchronizes the cell2mol ligand object with RDKit, + handling bond orders, hybridization, and zwitterionic corrections. + """ + + rwlig = Chem.RWMol() + + # --- atoms --- + for atom in ligand.atoms: + rd_atom = Chem.Atom(atom.atnum) + rd_atom.SetFormalCharge(int(atom.charge)) + rd_atom.SetNoImplicit(True) + rwlig.AddAtom(rd_atom) + + # --- metal context --- + labels = ligand.get_parent("molecule").labels + metal_idxs = get_metal_idxs(labels) + alkali_idxs = get_alkali_alkaline_earth_metal_idxs(labels) + + def skip_bond(bond) -> bool: + blabels = [bond.atom1.label, bond.atom2.label] + + if any(elemdatabase.elementblock[l] in {"d", "f"} for l in blabels): + return True + if get_alkali_alkaline_earth_metal_idxs(blabels): + return True + if ( + not metal_idxs + and not alkali_idxs + and get_post_transition_metal_idxs(blabels) + ): + return True + return False + + btype_map = { + 1.0: Chem.BondType.SINGLE, + 2.0: Chem.BondType.DOUBLE, + 3.0: Chem.BondType.TRIPLE, + 1.5: Chem.BondType.AROMATIC, + } + + hyb_map = { + 1: Chem.HybridizationType.S, + 2: Chem.HybridizationType.SP, + 3: Chem.HybridizationType.SP2, + 4: Chem.HybridizationType.SP3, + } + + # --- bonds & hybridization --- + for jdx, atom in enumerate(ligand.atoms): + if atom.bonds is None: + logger.error("Ligand atom %s has no bond information.", atom.label) + raise ValueError("Ligand atom bonds are not set") + + nbonds = 0 + + for b in atom.bonds: + if skip_bond(b): + continue + + begin_idx = b.atom1.get_parent_index("ligand") + end_idx = b.atom2.get_parent_index("ligand") + nbonds += 1 + + btype = btype_map.get(b.order, Chem.BondType.SINGLE) + + if b.order == 1.5: + rwlig.GetAtomWithIdx(begin_idx).SetIsAromatic(True) + rwlig.GetAtomWithIdx(end_idx).SetIsAromatic(True) + + if begin_idx == jdx and end_idx > jdx: + rwlig.AddBond(begin_idx, end_idx, btype) + + rwlig.GetAtomWithIdx(jdx).SetHybridization( + hyb_map.get(nbonds, Chem.HybridizationType.UNSPECIFIED) + ) + + # --- zwitterion correction --- + temp_obj = rwlig.GetMol() + # logger.debug( + # "Ligand structure before zwitterion fix: %s", Chem.MolToSmiles(temp_obj) + # ) + + obj, fixed = fix_zwitterions(temp_obj) + + if fixed: + logger.debug("Zwitterions fixed. Updated SMILES: %s", Chem.MolToSmiles(obj)) + + try: + Chem.SanitizeMol( + obj, + sanitizeOps=Chem.SanitizeFlags.SANITIZE_ALL + ^ Chem.SanitizeFlags.SANITIZE_PROPERTIES, + catchErrors=True, + ) + + Chem.DetectBondStereochemistry(obj, -1) + Chem.AssignStereochemistry(obj, flagPossibleStereoCenters=True, force=True) + Chem.AssignAtomChiralTagsFromStructure(obj, -1) + + final_smiles = Chem.MolToSmiles(obj) + + if ligand.smiles == final_smiles: + logger.debug( + "Ligand %s SMILES unchanged: %s", ligand.formula, ligand.smiles + ) + else: + logger.debug("Ligand %s", ligand.formula) + logger.debug(" Original SMILES: %s", ligand.smiles) + logger.debug(" Corrected SMILES: %s", final_smiles) + + ligand.smiles = final_smiles + ligand.rdkit_obj = obj + + if fixed: + ligand.set_charges( + atomic_charges=[a.GetFormalCharge() for a in obj.GetAtoms()] + ) + + return True, fixed + + except Exception as e: + logger.error("RDKit processing failed for ligand %s: %s", ligand.formula, e) + return False, fix_zwitterions + + +def fix_zwitterions(mol): + """ + Fixes zwitterionic artifacts by adjusting formal charges between adjacent atoms + with opposite charges in an RDKit molecule object. + + Args: + mol: Input RDKit molecule. + + Returns: + tuple: (Corrected Chem.Mol, bool indicating if changes were made). + """ + rw_mol = Chem.RWMol(mol) + fixed = False + + for atom in rw_mol.GetAtoms(): + fcharge = atom.GetFormalCharge() + + # Target positively charged atoms to find adjacent negative partners + if fcharge > 0: + atom_idx = atom.GetIdx() + atom_label = atom.GetSymbol() + neighbors = atom.GetNeighbors() + + logger.debug( + "A positive atom: %s (idx=%d, charge=%d)", + atom_label, + atom_idx, + fcharge, + ) + + # Skip common stable zwitterionic groups (Nitro and Nitrate) + neighbor_labels = [n.GetSymbol() for n in neighbors] + is_nitro_nitrate = ( + atom_label == "N" + and len(neighbors) == 3 + and neighbor_labels.count("O") in [2, 3] + ) + if is_nitro_nitrate: + logger.debug("\tSkipping nitro or nitrate group.") + continue + + # Skip Carbonyl oxygens (usually shouldn't have + charge, but safety check) + if ( + atom_label == "O" + and len(neighbors) == 1 + and neighbor_labels.count("C") == 1 + ): + logger.debug("\tSkipping carbonyl group.") + continue + + for neighbor in neighbors: + n_fcharge = neighbor.GetFormalCharge() + n_label = neighbor.GetSymbol() + neighbor_idx = neighbor.GetIdx() + + # Skip if labels are identical (e.g., O+-O- peroxide artifacts) + if n_label == atom_label: + logger.debug("\tSkipping neighbor with same label: %s", n_label) + continue + + if n_fcharge < 0: + # Skip specific stable pairs like N-oxide (N+-O-) + if atom_label == "N" and n_label == "O": + logger.debug("\tSkipping N+ with O- neighbor.") + continue + + # Skip Boron with full coordination (B- with 4 neighbors) + if n_label == "B" and len(neighbor.GetNeighbors()) == 4: + logger.debug("\tSkipping fully coordinated Boron (B-).") + continue + + bond = rw_mol.GetBondBetweenAtoms(atom_idx, neighbor_idx) + + # Minimize zwitterion only if a bond exists and is currently a DOUBLE bond + # (This logic implies converting a charged double bond to a neutral single bond) + if bond and bond.GetBondTypeAsDouble() == 2.0: + fixed = True + logger.debug( + "\tFixing adjacent charges between %s and %s", + atom_label, + n_label, + ) + + # Determine the charge magnitude to neutralize + diff = min(fcharge, abs(n_fcharge)) + atom.SetFormalCharge(fcharge - diff) + neighbor.SetFormalCharge(n_fcharge + diff) + + logger.debug( + "\tAdjusted charges: atom %d (%d -> %d), neighbor %d (%d -> %d)", + atom_idx, + fcharge, + atom.GetFormalCharge(), + neighbor_idx, + n_fcharge, + neighbor.GetFormalCharge(), + ) + + # Recalculate and estimate radical electrons for the neighbor + # Formula: Valence - FormalCharge - Total Bonds + valence_electrons = elemdatabase.valenceelectrons[n_label] + num_radicals = ( + valence_electrons + - neighbor.GetFormalCharge() + - neighbor.GetDegree() + ) + neighbor.SetNumRadicalElectrons(max(0, num_radicals)) + + logger.debug( + "\tSet radical electrons for neighbor %d to %d", + neighbor_idx, + num_radicals, + ) + + # Downgrade bond from DOUBLE to SINGLE + logger.debug( + "\tChanging bond between %d and %d from DOUBLE to SINGLE", + atom_idx, + neighbor_idx, + ) + bond.SetBondType(Chem.BondType.SINGLE) + else: + if bond: + logger.debug( + "\tSkipping fix: bond between %d and %d is %s (not DOUBLE)", + atom_idx, + neighbor_idx, + bond.GetBondType(), + ) + continue + + return rw_mol.GetMol(), fixed + + +def generate_tmc_rdkit_obj_smiles(mol: object): + all_metals_indices = [met.get_parent_index("molecule") for met in mol.metals] + logger.debug( + "Found metals %s with indices %s", + [met.atom_site_label for met in mol.metals] + if getattr(mol.metals[0], "atom_site_label", None) is not None + else [met.label for met in mol.metals], + all_metals_indices, + ) + temp_mol = Chem.RWMol() + + for met in mol.metals: + a = Chem.Atom(met.label) + a.SetFormalCharge(int(met.charge)) # Assign the metal oxidation state + a.SetIntProp("__mol_idx", met.get_parent_index("molecule")) + if getattr(met, "atom_site_label", None) is not None: + a.SetProp("__atom_site_label", met.atom_site_label) + + idx = temp_mol.AddAtom(a) + logger.debug( + "Add metal atom %s to rdkit molecule object", Chem.MolToSmiles(temp_mol) + ) + + for lig in mol.ligands: + # lig_atom : atom object from cell2mol + # a : atom object from rdkit object + for lig_atom, a in zip(lig.atoms, lig.rdkit_obj.GetAtoms()): + a.SetFormalCharge(int(lig_atom.charge)) + a.SetIntProp("__mol_idx", lig_atom.get_parent_index("molecule")) + + if getattr(lig_atom, "atom_site_label", None) is not None: + a.SetProp("__atom_site_label", lig_atom.atom_site_label) + + logger.debug( + "Add ligand with %s (Q=%s) to rdkit molecule object", + lig.formula, + lig.totcharge, + ) + + temp_mol = Chem.CombineMols(temp_mol, lig.rdkit_obj) + + new_mol = Chem.RWMol(temp_mol) + + if mol.natoms != new_mol.GetNumAtoms(): + raise ValueError( + "Number of atoms in cell2mol and rkdit molecule object disagrees" + ) + + new_order = [] + for idx in range(mol.natoms): + mol_idx = [ + a.GetIdx() for a in new_mol.GetAtoms() if a.GetIntProp("__mol_idx") == idx + ][0] + new_order.append(mol_idx) + + new_mol = Chem.RenumberAtoms(new_mol, new_order) + new_mol = Chem.RWMol(new_mol) + + for met in mol.metals: + met_idx = met.get_parent_index("molecule") + + coordinating_atoms_labels = [atom.label for atom in met.coord_sphere_atoms] + + coordinating_atoms_indices = [ + atom.get_parent_index("molecule") for atom in met.coord_sphere_atoms + ] + logger.debug( + "%s%s coordinates to %s %s", + met.label, + f" ({met.atom_site_label})" if met.atom_site_label else "", + coordinating_atoms_labels, + coordinating_atoms_indices, + ) + + for idx in coordinating_atoms_indices: + # print(idx, new_mol.GetBondBetweenAtoms(idx, met_idx)) + if new_mol.GetBondBetweenAtoms(idx, met_idx): + logger.debug( + "Already added %s %s", + idx, + new_mol.GetBondBetweenAtoms(idx, met_idx).GetBondType(), + ) + elif idx in all_metals_indices: + new_mol.AddBond(idx, met_idx, Chem.BondType.UNSPECIFIED) + else: + new_mol.AddBond(idx, met_idx, Chem.BondType.DATIVE) + # print(idx, new_mol.GetBondBetweenAtoms(idx, met_idx).GetBondType()) + + smiles = Chem.MolToSmiles(new_mol.GetMol()) + logger.info("TMC_SMILES: %s", smiles) + + tmc_rdkit_obj = Chem.MolFromSmiles(smiles) # Hydrogens are removed + + try: + Chem.SanitizeMol(tmc_rdkit_obj) + return new_mol.GetMol(), Chem.MolToSmiles(tmc_rdkit_obj) + except Exception: + try: + logger.info("TMC_SMILES: SanitizeMol with extra keywords") + Chem.SanitizeMol( + tmc_rdkit_obj, + sanitizeOps=Chem.SanitizeFlags.SANITIZE_ALL + ^ Chem.SanitizeFlags.SANITIZE_PROPERTIES, + catchErrors=True, + ) + return new_mol.GetMol(), Chem.MolToSmiles(tmc_rdkit_obj) + except Exception: + return new_mol.GetMol(), smiles + + if mol.is_haptic: + logger.info("TMC_SMILES: %s %s", mol.is_haptic, mol.haptic_type) + tmc_rdkit_obj = Chem.rdmolops.DativeBondsToHaptic(tmc_rdkit_obj) + logger.info("TMC_SMILES: %s", Chem.MolToSmiles(tmc_rdkit_obj)) + + tmc_smiles = Chem.MolToSmiles(tmc_rdkit_obj) + return tmc_rdkit_obj, tmc_smiles + return new_mol, tmc_rdkit_obj + + +def create_bonds_specie(specie, rdkit_obj: object = None): + from cell2mol.classes import Bond + + # logger.debug( + # "CREATE_bonds_specie: %s %s %s", specie.formula, specie.subtype, specie.smiles + # ) + n_atoms = specie.natoms # e.g. 9 + if rdkit_obj is not None: + rdkit_obj = rdkit_obj + else: + rdkit_obj = specie.rdkit_obj + + n_atoms_rdkit = rdkit_obj.GetNumAtoms() # e.g.10 + + if n_atoms == n_atoms_rdkit: + logger.debug( + "Number of atoms in %s object and RDKit object are equal: %d %d", + specie.subtype, + n_atoms, + n_atoms_rdkit, + ) + + # e.g. idx 0, 1, 2, 3, 4, 5, 6, 7, 8 + for idx, rdkit_atom in enumerate(rdkit_obj.GetAtoms()): + # logger.debug( + # "%d %s Number of bonds : %d", + # idx, + # rdkit_atom.GetSymbol(), + # len(rdkit_atom.GetBonds()), + # ) + if len(rdkit_atom.GetBonds()) == 0: + logger.debug( + "NO BONDS CREATED for %s due to no bonds in %s RDKit object", + specie.atoms[idx].label, + specie.subtype, + ) + else: + for b in rdkit_atom.GetBonds(): + bond_startatom = b.GetBeginAtomIdx() + bond_endatom = b.GetEndAtomIdx() + bond_order = b.GetBondTypeAsDouble() + if ( + specie.atoms[bond_endatom].label == "D" + and rdkit_obj.GetAtomWithIdx(bond_endatom).GetSymbol() == "H" + ): + if bond_endatom == idx: + start = bond_endatom + end = bond_startatom + elif bond_startatom == idx: + start = bond_startatom + end = bond_endatom + # create new bond object + # logger.debug( + # "BOND CREATED %d %d %d %f %s %s", + # idx, + # start, + # end, + # bond_order, + # specie.atoms[start].label, + # specie.atoms[end].label, + # ) + new_bond = Bond.from_positional( + specie.atoms[start], specie.atoms[end], bond_order + ) + specie.atoms[idx].add_bond(new_bond) + + elif ( + specie.atoms[bond_endatom].label + != rdkit_obj.GetAtomWithIdx(bond_endatom).GetSymbol() + ): + logger.debug( + "Error with Bond EndAtom %s %s", + specie.atoms[bond_endatom].label, + rdkit_obj.GetAtomWithIdx(bond_endatom).GetSymbol(), + ) + else: + if bond_endatom == idx: + start = bond_endatom + end = bond_startatom + elif bond_startatom == idx: + start = bond_startatom + end = bond_endatom + + # create new bond object + # logger.debug( + # "BOND CREATED %d %d %d %f %s %s", + # idx, + # start, + # end, + # bond_order, + # specie.atoms[start].label, + # specie.atoms[end].label, + # ) + new_bond = Bond.from_positional( + specie.atoms[start], specie.atoms[end], bond_order + ) + specie.atoms[idx].add_bond(new_bond) + + if specie.atoms[idx].bonds is not None: + pass + else: + if specie.natoms == 1: + pass + else: + logger.error( + "NO BONDS for %s with %s RDKit object index %d. Please check the RDKit object.", + specie.atoms[idx].label, + specie.subtype, + idx, + ) + return False # return False if no bonds are created + else: + logger.debug( + "Number of atoms in %s object and RDKit object are different: %d %d", + specie.subtype, + n_atoms, + n_atoms_rdkit, + ) + non_bonded_atoms = list(range(0, n_atoms_rdkit))[n_atoms:] + logger.debug("NON_BONDED_ATOMS %s", non_bonded_atoms) + + # e.g. idx 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 + for idx, rdkit_atom in enumerate(rdkit_obj.GetAtoms()): + # logger.debug( + # "\t%d %s Number of bonds : %d", + # idx, + # rdkit_atom.GetSymbol(), + # len(rdkit_atom.GetBonds()), + # ) + if len(rdkit_atom.GetBonds()) == 0: + logger.debug( + "NO BONDS CREATED for %s due to no bonds in %s RDKit object", + rdkit_atom.GetSymbol(), + specie.subtype, + ) + else: + for b in rdkit_atom.GetBonds(): + bond_startatom = b.GetBeginAtomIdx() + bond_endatom = b.GetEndAtomIdx() + bond_order = b.GetBondTypeAsDouble() + + if ( + bond_startatom in non_bonded_atoms + or bond_endatom in non_bonded_atoms + ): + logger.debug( + "NO BOND CREATED %d or %d is not in the specie.atoms. It belongs to %s.", + bond_startatom, + bond_endatom, + non_bonded_atoms, + ) + else: + if bond_endatom == idx: + start = bond_endatom + end = bond_startatom + elif bond_startatom == idx: + start = bond_startatom + end = bond_endatom + + # create new bond object + # logger.debug( + # "BOND CREATED %d %d %d %f %s %s", + # idx, + # start, + # end, + # bond_order, + # specie.atoms[start].label, + # specie.atoms[end].label, + # ) + new_bond = Bond.from_positional( + specie.atoms[start], specie.atoms[end], bond_order + ) + specie.atoms[idx].add_bond(new_bond) + + if idx not in non_bonded_atoms: + if specie.atoms[idx].bonds is not None: + pass + else: + if specie.natoms == 1: + pass + else: + logger.error( + "NO BONDS for %s with %s RDKit object index %d. Please check the RDKit object.", + specie.atoms[idx].label, + specie.subtype, + idx, + ) + return False # return False if no bonds are created + else: + logger.debug( + "NO BONDS for %s with %s RDKit object index %d because it is an added atom", + rdkit_atom.GetSymbol(), + specie.subtype, + idx, + ) + + return True + + +def create_metal_ligand_bonds(mol: object): + # Adds Metal-Ligand Bonds, with a zero order: + from cell2mol.classes import Bond + + if mol.iscomplex or mol.has_ia_iia or mol.has_post_transition_metal: + for lig in mol.ligands: + for at in lig.atoms: + count = 0 + index_1 = at.get_parent_index("molecule") + for met in mol.metals: + index_2 = met.get_parent_index("molecule") + isconnected = mol.madjmat[index_1, index_2] == 1 + if isconnected: + if index_1 < index_2: + bond_startatom = at + bond_endatom = met + else: + bond_startatom = met + bond_endatom = at + newbond = Bond.from_positional(bond_startatom, bond_endatom, 0) + # Chem.BondType.DATIVE + at.add_bond(newbond) + met.add_bond(newbond) + count += 1 + if count != at.mconnec: + logger.error( + "Error creating bonds for atom: \n%s\n of ligand: \n%s\n", + at, + lig, + ) + + +def create_metal_metal_bonds(mol: object): + from cell2mol.classes import Bond + + # Adds Metal-Metal Bonds, with a zero order: + if mol.iscomplex or mol.has_ia_iia or mol.has_post_transition_metal: + if len(mol.metals) > 1: + logger.debug("Creating Metal-Metal Bonds for molecule %s", mol.formula) + for idx, met1 in enumerate(mol.metals): + index_1 = met1.get_parent_index("molecule") + for jdx, met2 in enumerate(mol.metals): + if idx <= jdx: + continue + index_2 = met2.get_parent_index("molecule") + isconnected = mol.madjmat[index_1, index_2] == 1 + if isconnected: + if index_1 < index_2: + bond_startatom = met1 + bond_endatom = met2 + else: + bond_startatom = met2 + bond_endatom = met1 + newbond = Bond.from_positional(bond_startatom, bond_endatom, 0) + met1.add_bond(newbond) + met2.add_bond(newbond) diff --git a/cell2mol/charge/specie_assigner.py b/cell2mol/charge/specie_assigner.py new file mode 100644 index 000000000..22f95b46f --- /dev/null +++ b/cell2mol/charge/specie_assigner.py @@ -0,0 +1,341 @@ +import copy +import logging +import numpy as np +from rdkit import Chem +from cell2mol.classes.protonation import Protonation +from cell2mol.charge.utils import MANUAL_CHARGE_ASSIGN_SPECIES +from cell2mol.charge.charge_state_resolver import ( + generate_charge_state, + generate_manual_charge_state, +) +from cell2mol.charge.smiles_handler import generate_tmc_rdkit_obj_smiles + +logger = logging.getLogger(__name__) + + +def prepare_mol(mol): + tmp_atcharge = np.zeros((mol.natoms), dtype=int) + + for lig in mol.ligands: + parent_indices = lig.get_parent_indices("molecule") + for kdx, a in enumerate(parent_indices): + tmp_atcharge[a] = lig.atomic_charges[kdx] + + for met in mol.metals: + parent_index = met.get_parent_index("molecule") + tmp_atcharge[parent_index] = met.charge + tmp_atcharge = tmp_atcharge.tolist() + + tmc_rdkit_obj, tmc_smiles = generate_tmc_rdkit_obj_smiles(mol) + mol.set_charges( + int(sum(tmp_atcharge)), + atomic_charges=tmp_atcharge, + smiles=tmc_smiles, + rdkit_obj=tmc_rdkit_obj, + ) + + +def assign_charge_to_specie(specie: object, final_charge: int): + """ + Assigns the final charge to a specie object. + + Args: + specie: The specie object to update. + final_charge: The integer charge to assign. + """ + logger.debug( + "Target: %s (unique index: %s) | Final Charge: %d", + specie.formula, + specie.unique_index, + final_charge, + ) + + if specie.subtype == "metal": + specie.set_charge(final_charge) + + logger.debug( + "Updated Metal: %s | Formula: %s | Charge: %d", + specie.unique_index, + specie.formula, + specie.charge, + ) + elif specie.is_non_complex_molecule or specie.subtype == "ligand": + # Extract list of available charges + available_charges = [cs.corr_total_charge for cs in specie.possible_cs] + + try: + idx = available_charges.index(final_charge) + cs = specie.possible_cs[idx] + + # Update the species state + specie.charge_state = cs + specie.set_charges( + cs.corr_total_charge, cs.corr_atom_charges, cs.smiles, cs.rdkit_obj + ) + + logger.debug( + "Updated State: %s | Formula: %s | Total Charge: %d | SMILES: %s", + specie.unique_index, + specie.formula, + specie.totcharge, + specie.smiles, + ) + + except ValueError: + logger.error( + "Failed to assign charge %d to %s. Available options were: %s", + final_charge, + specie.formula, + available_charges, + ) + # Optional: Raise error if this state is critical + # raise ValueError(f"Charge mismatch for {specie.formula}") + + +def set_charge_state(reference, target, mode: int): + """ + Dispatcher function to apply charge states to a target species. + + Args: + reference: The source object (holds the total charge or reference state). + target: The object to receive the charge/state. + mode: + 1 = Select pre-calculated state (Reference Cell). + 2 = Transfer and reorder state (Unit Cell - Direct Mapping). + 3 = Reconstruct state from topology (Unit Cell - Complex/Ligand). + """ + final_charge = reference.totcharge + + # logger.debug( + # "SET_CHARGE_STATE: Mode=%d | Target=%s | RefCharge=%s", + # mode, + # target.formula, + # final_charge, + # ) + + if mode == 1: + _apply_precalculated_state(target, final_charge) + elif mode == 2: + _transfer_state_to_unit_cell(reference, target, final_charge) + elif mode == 3: + _construct_state_from_topology(reference, target, final_charge) + else: + logger.error("Invalid Mode %d passed to set_charge_state", mode) + + +# --- Mode 1: Reference Cell (Selection) --- +def _apply_precalculated_state(target, final_charge): + """Mode 1: Selects an existing charge state from target.possible_cs.""" + + # 1. Determine the Charge State (cs) object + cs = None + + if target.formula in MANUAL_CHARGE_ASSIGN_SPECIES: + cs = generate_manual_charge_state(target) + else: + if target.possible_cs is None: + target.get_possible_cs() + + # Extract charges to find the index matching final_charge + charge_list = [c.corr_total_charge for c in target.possible_cs] + + try: + idx = charge_list.index(final_charge) + cs = target.possible_cs[idx] + except ValueError: + logger.error( + "Charge Mismatch: Target %s needs charge %d, but options are %s", + target.formula, + final_charge, + charge_list, + ) + # Fallback or critical error handling here if necessary + return + + # 2. Apply the State + target.charge_state = cs + + # Validation + if final_charge != cs.corr_total_charge: + logger.warning( + "Target %s: Requested charge %d != Selected state charge %d", + target.formula, + final_charge, + cs.corr_total_charge, + ) + + target.set_charges( + cs.corr_total_charge, cs.corr_atom_charges, cs.smiles, cs.rdkit_obj + ) + logger.debug( + "Mode 1 Applied: %s (Q=%d) %s", target.formula, target.totcharge, target.smiles + ) + + +# --- Mode 2: Unit Cell (Direct Transfer) --- +def _transfer_state_to_unit_cell(reference, target, final_charge): + """Mode 2: Transfers RDKit object from reference to target, reordering atoms.""" + + if not target.subtype == "ligand" and not target.is_non_complex_molecule: + return + + # We must reorder the reference RDKit object to match the Unit Cell atom labels + rdkit_obj = _reorder_rdkit_atoms( + reference.rdkit_obj, reference.atom_site_labels, target.atom_site_labels + ) + + # Determine SMILES + if target.formula in MANUAL_CHARGE_ASSIGN_SPECIES: + smiles = reference.smiles + else: + smiles = Chem.MolToSmiles(rdkit_obj) + + # Recalculate properties from the reordered object + atom_charges = [] + total_charge_calc = 0 + + for i in range(target.natoms): + atom = rdkit_obj.GetAtomWithIdx(i) + chg = atom.GetFormalCharge() + atom_charges.append(chg) + total_charge_calc += chg + + # Validation + if total_charge_calc != final_charge: + logger.warning( + "Mode 2 Mismatch: %s Reordered Calc Charge (%d) != Final Charge (%d)", + target.formula, + total_charge_calc, + final_charge, + ) + + target.set_charges(total_charge_calc, atom_charges, smiles, rdkit_obj) + logger.debug("Mode 2 Applied: %s (Q=%d)", target.formula, target.totcharge) + + +# --- Mode 3: Unit Cell (Topological Reconstruction) --- +def _construct_state_from_topology(reference, target, final_charge): + """Mode 3: Reconstructs state (Protonation/Charges) based on topological mapping.""" + cs = None + + # Case A: Manual Override + if target.formula in MANUAL_CHARGE_ASSIGN_SPECIES: + cs = generate_manual_charge_state(target) + + # Case B: Standard Molecule (Create Empty/Neutral State) + elif target.is_non_complex_molecule: + logger.debug("Mode 3: Creating Empty PROTONATION for %s", target.formula) + + # Construct a neutral/empty protonation object + empty_prot = Protonation.from_positional( + labels=target.labels, + coord=target.coord, + cov_factor=target.cov_factor, + n_protons_added=0, + site_proton_counts=[0] * len(target.labels), + ligand_donor_electrons=[0] * len(target.labels), + mode="none", + parent=target, + ) + cs = generate_charge_state(final_charge, empty_prot) + + # Case C: Ligand (Reorder Protonation from Reference) + elif target.subtype == "ligand": + cs = _reorder_ligand_protonation(reference, target) + # Apply the constructed state + if cs: + target.charge_state = cs + if final_charge != cs.corr_total_charge: + logger.warning( + "Mode 3 Charge Mismatch: %d vs %d", final_charge, cs.corr_total_charge + ) + + target.set_charges( + cs.corr_total_charge, cs.corr_atom_charges, cs.smiles, cs.rdkit_obj + ) + logger.debug("Mode 3 Applied: %s (Q=%d)", target.formula, target.totcharge) + + +def _reorder_ligand_protonation(reference, target): + """Helper for Mode 3 Case C: Complex reordering of ligand protonation states.""" + refcell = reference.get_parent("reference") + + # 1. Clone the reference protonation + prot = reference.charge_state.protonation + temp_prot = copy.deepcopy(prot) + temp_prot.parent = target + + # 2. Calculate Sorting Indices based on parent Reference Cell labels + # This maps the order of atoms in the reference ligand to the target ligand + ref_indices = reference.get_parent_indices("reference") + target_indices = target.get_parent_indices("reference") + + ref_labels = [refcell.atom_site_labels[idx] for idx in ref_indices] + target_labels = [refcell.atom_site_labels[idx] for idx in target_indices] + + # Create map: Target Label -> Target Index + label_to_index_map = {lbl: idx for idx, lbl in enumerate(target_labels)} + + # Sort reference indices based on where their labels appear in the target list + sorted_indices = sorted( + range(len(ref_labels)), key=lambda i: label_to_index_map[ref_labels[i]] + ) + + if logger.isEnabledFor(logging.DEBUG): + logger.debug("Reordering Ligand %s:", target.formula) + logger.debug(" Sorted Indices: %s", sorted_indices) + + # 3. Reorder the Protonation Object + reordered_prot = temp_prot.reorder(sorted_indices) + + # 4. Reorder Atom Charges + temp_uncorr_atom_charges = reference.charge_state.uncorr_atom_charges + reordered_charges = [] + + if len(temp_uncorr_atom_charges) == len(sorted_indices): + reordered_charges = [temp_uncorr_atom_charges[idx] for idx in sorted_indices] + else: + # Handle case where charges length differs (e.g., added protons) + reordered_charges = [temp_uncorr_atom_charges[idx] for idx in sorted_indices] + # Append remaining charges (usually added protons like H+) + remaining = temp_uncorr_atom_charges[len(sorted_indices) :] + reordered_charges.extend(remaining) + + # 5. Generate Charge State + return generate_charge_state( + reference.charge_state.uncorr_total_charge, + reordered_prot, + ref_uncorr_atom_charges=reordered_charges, + ) + + +def _reorder_rdkit_atoms(ref_mol, ref_labels, target_labels): + # 1. Create label → atom index map from ref_data + label_to_index = {label: idx for idx, label in enumerate(ref_labels)} + + # 2. Create old index → new index map + old_to_new = {label_to_index[label]: i for i, label in enumerate(target_labels)} + new_to_old = {v: k for k, v in old_to_new.items()} + + # 3. Create editable mol + new_mol = Chem.RWMol() + + # 4. Add atoms in new order + for new_idx in range(len(target_labels)): + old_idx = new_to_old[new_idx] + atom = ref_mol.GetAtomWithIdx(old_idx) + new_atom = Chem.Atom(atom.GetAtomicNum()) + new_atom.SetFormalCharge(atom.GetFormalCharge()) + new_mol.AddAtom(new_atom) + + # 5. Add bonds based on original molecule + for bond in ref_mol.GetBonds(): + begin_old = bond.GetBeginAtomIdx() + end_old = bond.GetEndAtomIdx() + bond_type = bond.GetBondType() + # remap to new indices + begin_new = old_to_new[begin_old] + end_new = old_to_new[end_old] + new_mol.AddBond(begin_new, end_new, bond_type) + + return new_mol.GetMol() diff --git a/cell2mol/charge/utils.py b/cell2mol/charge/utils.py new file mode 100644 index 000000000..b5f3d8eac --- /dev/null +++ b/cell2mol/charge/utils.py @@ -0,0 +1,122 @@ +# Fullerene species that require special handling +FULLERENES = {"C60", "C72", "C80"} +# Ligand or molecules requiring manual charge assignment +MANUAL_CHARGE_ASSIGN_SPECIES = {"O4-Cl", "N3", "N2", "N-O", "I3", "I4", "I5", "I6", "H"} + + +# Plausible oxidation states by atomic symbol +# Source: Venkataraman et al., J. Chem. Educ. 1997, 74, 915. +METAL_OXIDATION_STATES = { + # Alkali metals + "Li": [1], + "Na": [1], + "K": [1], + "Rb": [1], + "Cs": [1], + "Fr": [1], + # Alkaline earth metals + "Be": [2], + "Mg": [2], + "Ca": [2], + "Sr": [2], + "Ba": [2], + "Ra": [2], + # 1st-row transition metals + "Sc": [3], + "Ti": [2, 3, 4], + "V": [1, 2, 3, 4, 5], + "Cr": [0, 2, 3], # +5 intentionally excluded + "Mn": [1, 2, 3], + "Fe": [2, 3], + "Co": [1, 2, 3], + "Ni": [2, 3], + "Cu": [1, 2], + "Zn": [2], + # 2nd-row transition metals + "Y": [3], + "Zr": [2, 3, 4], + "Nb": [1, 3, 4, 5], + "Mo": [0, 2, 4, 5, 6], + "Tc": [1, 2, 3, 4, 5], + "Ru": [2, 3], + "Rh": [1, 2, 3], + "Pd": [0, 2], + "Ag": [1], + "Cd": [2], + # 3rd-row transition metals + "Hf": [4], + "Ta": [2, 3, 4, 5], + "W": [0, 2, 4, 5, 6], + "Re": [1, 2, 3, 4, 5, 7], + "Os": [2, 3, 4, 5, 6], + "Ir": [1, 3], + "Pt": [0, 2, 4], + "Au": [1, 3], + "Hg": [2], + # Post-transition metals + "Al": [1, 3], + "Ga": [3], + "Ge": [2, 4], + "In": [3], + "Sn": [2, 4], + "Tl": [1, 3], + "Pb": [2, 4], + "Bi": [3], + # Lanthanides + "La": [3], + "Ce": [3, 4], + "Pr": [3], + "Nd": [2, 3], + "Pm": [3], + "Sm": [2, 3], + "Eu": [3], + "Gd": [3], + "Tb": [3], + "Dy": [3], + "Ho": [3], + "Er": [3], + "Tm": [3], + "Yb": [2, 3], + "Lu": [3], + # Actinides + "Ac": [3], + "Th": [3, 4], + "Pa": [3, 4, 5], + "U": [3, 4, 5, 6], + "Np": [3, 4, 5, 6], + "Pu": [3, 4, 5, 6], + "Am": [3, 4, 5, 6], + "Cm": [3, 4], + "Bk": [3], + "Cf": [3], + "Es": [3], + "Fm": [2, 3], + "Md": [2, 3], + "No": [2, 3], + "Lr": [3], +} + + +def aromatic_info(mol: object, added_indices=None): + if added_indices is None: + added_indices = [] + + # Count aromatic atoms + aromatic_atoms = sum(1 for atom in mol.GetAtoms() if atom.GetIsAromatic()) + + # Count aromatic rings + ring_info = mol.GetRingInfo() + bond_rings = ring_info.BondRings() + aromatic_ring_count = 0 + for bond_indices in bond_rings: + if all(mol.GetBondWithIdx(b).GetIsAromatic() for b in bond_indices): + aromatic_ring_count += 1 + + # Check if hydrogen atoms are added in to aromatic atoms + check = any(mol.GetAtomWithIdx(idx).GetIsAromatic() for idx in added_indices) + + return { + "Aromatic atoms": aromatic_atoms, + "Number of aromatic rings": aromatic_ring_count, + "Added to aromatic atoms": check, + } diff --git a/cell2mol/charge/xyz2mol.py b/cell2mol/charge/xyz2mol.py new file mode 100644 index 000000000..24f7d2e1e --- /dev/null +++ b/cell2mol/charge/xyz2mol.py @@ -0,0 +1,987 @@ +#!/usr/bin/env python +# This file includes code from xyz2mol.py +# Original work: +# Jensen Group (2018) +# Licensed under the MIT License +# https://github.com/jensengroup/xyz2mol +# +# Modifications: +# - Adapted for use in cell2mol + +import copy +import itertools +import logging +import rdkit +import math + +try: + from rdkit.Chem import rdEHTTools # requires RDKit 2019.9.1 or later +except ImportError: + rdEHTTools = None + +from collections import defaultdict + +import numpy as np +import networkx as nx + +from rdkit import Chem +from cell2mol.elementdata import ElementData +from cell2mol.element_utils import labels2formula + +logger = logging.getLogger(__name__) + +elemdatabase = ElementData() + +valence_electrons = [] +for i in elemdatabase.elementsym: + try: + valence_electrons.append( + elemdatabase.valenceelectrons[elemdatabase.elementsym[i]] + ) + except KeyError: + continue +global atomic_valence +global atomic_valence_electrons + +atomic_valence_electrons = dict(zip(elemdatabase.elementsym, valence_electrons)) + +valence_combinations_limit = 1_000_000 +num_try_limit = 50 + + +def get_atomic_valences(k): + symb = elemdatabase.elementsym[k] + block = elemdatabase.elementblock[symb] + group = elemdatabase.elementgroup[symb] + period = elemdatabase.elementperiod[symb] + ave = elemdatabase.valenceelectrons[symb] + if k == 5: # B + return [3, 4] + if k == 6: # C + return [4, 2] + if k == 7: # N + return [3, 4] + if k == 8: # O + # return [2] + return [2, 1, 3] + if k == 13: # Al + return [3, 4, 5] + if k == 14: # Si + return [4] + if k == 15: # P + return [3, 5] # [5,4,3] + if k == 16: # S + return [2, 4, 6] + if k == 32: # Ge + return [4, 6] + if k == 33: # As + return [5, 3] # [5,4,3] + if k == 51: # Sb + return [6, 5, 3] # [5,4,3] + if k == 52: # Te + return [2, 4, 6] + if k == 53: # I + return [1, 3, 5] + if k == 82: # Pb + return [2, 4, 6] + if k == 83: # Bi + return [3, 5, 6, 7, 8] + if group == 17: # F, Cl, Br, At + return [1] + if block == "s" and period == 1: + av = 2 - ave + elif group == 1 and period != 1: + av = 20 + elif group == 2: + av = 20 + elif group == 18: + av = 0 + elif block == "p" and group != 18: + av = 8 - ave + elif block in ["d", "f"]: + av = 20 + else: + av = 1 + return [av] + + +atomic_valence = defaultdict(list) +for k in elemdatabase.elementsym: + try: + av = get_atomic_valences(k) + atomic_valence[k].extend(av) + except KeyError: + continue +backup = copy.deepcopy(atomic_valence) + + +def str_atom(atom): + """ + convert integer atom to string atom + """ + atom = elemdatabase.elementsym[atom] + return atom + + +def int_atom(atom): + """ + convert str atom to integer atom + """ + atom = elemdatabase.elementnr[atom] + return atom + + +def get_UA(maxValence_list, valence_list): + """ """ + UA = [] + DU = [] + for i, (maxValence, valence) in enumerate(zip(maxValence_list, valence_list)): + if not maxValence - valence > 0: + continue + UA.append(i) + DU.append(maxValence - valence) + return UA, DU + + +def get_BO(AC, UA, DU, valences, UA_pairs, use_graph=True): + """ """ + BO = AC.copy() + DU_save = [] + + while DU_save != DU: + for i, j in UA_pairs: + BO[i, j] += 1 + BO[j, i] += 1 + + BO_valence = list(BO.sum(axis=1)) + DU_save = copy.copy(DU) + UA, DU = get_UA(valences, BO_valence) + # UA_pairs = get_UA_pairs(UA, AC, use_graph=use_graph)[0] + UA_pairs = get_UA_pairs_new(UA, AC, DU, use_graph=use_graph)[0] + + return BO + + +def valences_not_too_large(BO, valences): + """ """ + number_of_bonds_list = BO.sum(axis=1) + for valence, number_of_bonds in zip(valences, number_of_bonds_list): + if number_of_bonds > valence: + return False + + return True + + +def charge_is_OK( + BO, + AC, + charge, + DU, + atomic_valence_electrons, + atoms, + valences, + allow_charged_fragments=True, + allow_carbenes=True, +): + # total charge + Q = 0 + + # charge fragment list + q_list = [] + + if allow_charged_fragments: + BO_valences = list(BO.sum(axis=1)) + for i, atom in enumerate(atoms): + q = get_atomic_charge(atom, atomic_valence_electrons[atom], BO_valences[i]) + Q += q + if atom == 6: + number_of_single_bonds_to_C = list(BO[i, :]).count(1) + if ( + not allow_carbenes + and number_of_single_bonds_to_C == 2 + and BO_valences[i] == 2 + ): + Q += 1 + q = 2 + logger.info("Carbenes are not allowed in this molecule") + if number_of_single_bonds_to_C == 3 and Q + 1 < charge: + Q += 2 + q = 1 + + if q != 0: + q_list.append(q) + return charge == Q + + +def BO_is_OK( + BO, + AC, + charge, + DU, + atomic_valence_electrons, + atoms, + valences, + allow_charged_fragments=True, + allow_carbenes=True, +): + """ + Sanity of bond-orders + + Args: + BO - + AC - + charge - + DU - + + + optional + allow_charges_fragments - + + + Returns: + boolean - true of molecule is OK, false if not + """ + + if not valences_not_too_large(BO, valences): + return False + + check_sum = (BO - AC).sum() == sum(DU) + check_charge = charge_is_OK( + BO, + AC, + charge, + DU, + atomic_valence_electrons, + atoms, + valences, + allow_charged_fragments, + allow_carbenes=True, + ) + + if check_charge and check_sum: + return True + + return False + + +def get_atomic_charge(atom, atomic_valence_electrons, BO_valence): + """ """ + label = elemdatabase.elementsym[atom] + group = elemdatabase.elementgroup[label] + + found = False + # Alkali except H + if group == 1 and label != "H" and BO_valence == 0 and not found: + charge = 1 + found = True + # Hydrogen + elif atom == 1 and not found: + charge = 1 - BO_valence + found = True + # Alkaline earth metals + elif group == 2 and BO_valence == 0 and not found: + charge = 2 + found = True + # Boron + elif atom == 5 and not found: + charge = 3 - BO_valence + found = True + # elif atom == 6 and BO_valence == 2 and not found: + # charge = 0 + # found = True + # elif atom == 13 and not found and not found: + # charge = 3 - BO_valence + # found = True + # Ionic Bonds are not correctly captured, exceptions are needed for atoms with tendency to form them + elif atom == 15 and BO_valence == 5 and not found: # PX5 + charge = 0 + found = True + elif atom == 15 and BO_valence == 6 and not found: # PX6 + charge = -1 + found = True + elif atom == 16 and BO_valence == 6 and not found: # SX6 + charge = 0 + found = True + elif atom == 16 and BO_valence == 4 and not found: + charge = 0 + found = True + elif atom == 16 and BO_valence == 5 and not found: + charge = 1 + found = True + elif atom == 33 and BO_valence == 6 and not found: # AsX6 + charge = -1 + found = True + elif atom == 51 and BO_valence == 6 and not found: # SbX6 + charge = -1 + found = True + elif atom == 50 and BO_valence == 4 and not found: # SnX4 + charge = 0 + found = True + + else: + charge = atomic_valence_electrons - 8 + BO_valence + + return charge + + +def BO2mol( + mol, + BO_matrix, + atoms, + atomic_valence_electrons, + mol_charge, + allow_charged_fragments=True, +): + """ + based on code written by Paolo Toscani + + From bond order, atoms, valence structure and total charge, generate an + rdkit molecule. + + Args: + mol - rdkit molecule + BO_matrix - bond order matrix of molecule + atoms - list of integer atomic symbols + atomic_valence_electrons - + mol_charge - total charge of molecule + + optional: + allow_charged_fragments - bool - allow charged fragments + + Returns: + mol - updated rdkit molecule with bond connectivity + + """ + + l = len(BO_matrix) + l2 = len(atoms) + BO_valences = list(BO_matrix.sum(axis=1)) + if l != l2: + raise RuntimeError( + "sizes of adjMat ({0:d}) and Atoms {1:d} differ".format(l, l2) + ) + + rwMol = Chem.RWMol(mol) + + bondTypeDict = { + 1: Chem.BondType.SINGLE, + 2: Chem.BondType.DOUBLE, + 3: Chem.BondType.TRIPLE, + } + + for i in range(l): + for j in range(i + 1, l): + bo = int(round(BO_matrix[i, j])) + if bo == 0: + continue + bt = bondTypeDict.get(bo, Chem.BondType.SINGLE) + rwMol.AddBond(i, j, bt) + + mol = rwMol.GetMol() + + if allow_charged_fragments: + mol = set_atomic_charges( + mol, atoms, atomic_valence_electrons, BO_valences, BO_matrix, mol_charge + ) + else: + mol = set_atomic_radicals(mol, atoms, atomic_valence_electrons, BO_valences) + + return mol + + +def set_atomic_charges( + mol, atoms, atomic_valence_electrons, BO_valences, BO_matrix, mol_charge +): + """ """ + q = 0 + for i, atom in enumerate(atoms): + a = mol.GetAtomWithIdx(i) + charge = get_atomic_charge(atom, atomic_valence_electrons[atom], BO_valences[i]) + q += charge + if atom == 6: + number_of_single_bonds_to_C = list(BO_matrix[i, :]).count(1) + if number_of_single_bonds_to_C == 2 and BO_valences[i] == 2: + q += 1 + charge = 0 + if number_of_single_bonds_to_C == 3 and q + 1 < mol_charge: + q += 2 + charge = 1 + + if abs(charge) > 0: + a.SetFormalCharge(int(charge)) + + return mol + + +def set_atomic_radicals( + mol, atoms, atomic_valence_electrons, BO_valences, use_atom_maps=False +): + """The number of radical electrons = absolute atomic charge.""" + + for i, atom in enumerate(atoms): + a = mol.GetAtomWithIdx(i) + if use_atom_maps: + a.SetAtomMapNum(i + 1) + charge = get_atomic_charge(atom, atomic_valence_electrons[atom], BO_valences[i]) + + if abs(charge) > 0: + a.SetNumRadicalElectrons(abs(int(charge))) + + return mol + + +def get_bonds(UA, AC): + """ """ + bonds = [] + + for k, i in enumerate(UA): + for j in UA[k + 1 :]: + if AC[i, j] == 1: + bonds.append(tuple(sorted([i, j]))) + + return bonds + + +def get_UA_pairs_new(UA, AC, DU, use_graph=True): + """""" + N_UA = 10000 + matching_ids = dict() + matching_ids2 = dict() + for i, du in zip(UA, DU): + if du > 1: + matching_ids[i] = N_UA + matching_ids2[N_UA] = i + N_UA += 1 + + bonds = get_bonds(UA, AC) + for i, j in bonds: + if i in matching_ids: + bonds.append(tuple(sorted([matching_ids[i], j]))) + + elif j in matching_ids: + bonds.append(tuple(sorted([i, matching_ids[j]]))) + + if len(bonds) == 0: + return [()] + + if use_graph: + G = nx.Graph() + G.add_edges_from(bonds) + UA_pairs = [list(nx.max_weight_matching(G))] + UA_pair = UA_pairs[0] + + remove_pairs = [] + add_pairs = [] + for i, j in UA_pair: + if i in matching_ids2 and j in matching_ids2: + remove_pairs.append(tuple([i, j])) + add_pairs.append(tuple([matching_ids2[i], matching_ids2[j]])) + # UA_pair.remove(tuple([i,j])) + # UA_pair.append(tuple([matching_ids2[i], matching_ids2[j]])) + elif i in matching_ids2: + # UA_pair.remove(tuple([i,j])) + remove_pairs.append(tuple([i, j])) + add_pairs.append(tuple([matching_ids2[i], j])) + # UA_pair.append(tuple([matching_ids2[i],j])) + elif j in matching_ids2: + remove_pairs.append(tuple([i, j])) + add_pairs.append(tuple([i, matching_ids2[j]])) + + # UA_pair.remove(tuple([i,j])) + # UA_pair.append(tuple([i,matching_ids2[j]])) + for p1, p2 in zip(remove_pairs, add_pairs): + UA_pair.remove(p1) + UA_pair.append(p2) + return [UA_pair] + + max_atoms_in_combo = 0 + UA_pairs = [()] + for combo in list(itertools.combinations(bonds, int(len(UA) / 2))): + flat_list = [item for sublist in combo for item in sublist] + atoms_in_combo = len(set(flat_list)) + if atoms_in_combo > max_atoms_in_combo: + max_atoms_in_combo = atoms_in_combo + UA_pairs = [combo] + + elif atoms_in_combo == max_atoms_in_combo: + UA_pairs.append(combo) + + return UA_pairs + + +def get_UA_pairs(UA, AC, use_graph=True): + """ """ + + bonds = get_bonds(UA, AC) + + if len(bonds) == 0: + return [()] + + if use_graph: + G = nx.Graph() + G.add_edges_from(bonds) + UA_pairs = [list(nx.max_weight_matching(G))] + return UA_pairs + + max_atoms_in_combo = 0 + UA_pairs = [()] + for combo in list(itertools.combinations(bonds, int(len(UA) / 2))): + flat_list = [item for sublist in combo for item in sublist] + atoms_in_combo = len(set(flat_list)) + if atoms_in_combo > max_atoms_in_combo: + max_atoms_in_combo = atoms_in_combo + UA_pairs = [combo] + + elif atoms_in_combo == max_atoms_in_combo: + UA_pairs.append(combo) + + return UA_pairs + + +def get_sorted_valences_list(valences_list_of_lists, atoms): + """ + Memory-efficient generator for valence combinations. + Groups atoms by element priority (O > N > C > P > S) to ensure + the resulting product follows the desired sorting order. + """ + # 1. Define atomic priority (O, N, C, P, S) + priority_order = [8, 7, 6, 15, 16] + groups = {num: [] for num in priority_order} + others = [] + + # Group atom indices based on their atomic number + for i, atomicNum in enumerate(atoms): + if atomicNum in groups: + groups[atomicNum].append(i) + else: + others.append(i) + + reordered_indices = [] + nested_inputs = [] + group_counts = [] # Stores the total combinations for each element group + + logger.debug("--- Nested Valence Input Structure ---") + + # 2. Process prioritized groups + for num in priority_order: + indices = groups[num] + if indices: + reordered_indices.extend(indices) + group_valences = [valences_list_of_lists[i] for i in indices] + + # Estimate complexity for this specific element group + # math.prod calculates the product of lengths of all sub-lists + current_group_count = math.prod(len(v) for v in group_valences) + group_counts.append(current_group_count) + + logger.debug( + f"Element {elemdatabase.elementsym[num]} : {len(indices)} atoms | " + f"Group Combinations: {current_group_count:,}" + # f" | Valences: {group_valences}" + ) + + # Create a product iterator for this group + nested_inputs.append(itertools.product(*group_valences)) + + # 3. Process remaining elements (Others) + if others: + reordered_indices.extend(others) + other_valences = [valences_list_of_lists[i] for i in others] + + current_group_count = math.prod(len(v) for v in other_valences) + group_counts.append(current_group_count) + + other_nums = [atoms[i] for i in others] + other_syms = [elemdatabase.elementsym[n] for n in other_nums] + logger.debug( + f"Element Others ({other_syms}): {len(others)} atoms | " + f"Group Combinations: {current_group_count:,}" + # f" | Valences: {other_valences}" + ) + + nested_inputs.append(itertools.product(*other_valences)) + + # 4. Complexity Estimation + total_expected_combinations = math.prod(group_counts) + logger.info(f"Total Expected Combinations: {total_expected_combinations:,}") + + # TERMINATION LOGIC: + if total_expected_combinations > valence_combinations_limit: + logger.error( + f"Search space too large ({total_expected_combinations:,}). " + "Terminating valence generation to prevent hang." + ) + return None # Explicitly return None instead of the generator + + # 5. Restore Map Calculation + # Maps the reordered indices back to the original atom sequence in the CIF + restore_map = [0] * len(atoms) + for sorted_pos, original_pos in enumerate(reordered_indices): + restore_map[original_pos] = sorted_pos + + # 6. Generator Function + def valence_generator(): + # itertools.product(*nested_inputs) creates a sorted stream lazily + for combined in itertools.product(*nested_inputs): + # 'combined' is a nested tuple like ((O1, O2), (N1,), (C1, C2...)) + # Flatten to a single list + flat = [v for group in combined for v in group] + # Map back to original atom order and yield as tuple + yield tuple(flat[restore_map[i]] for i in range(len(atoms))) + + return valence_generator() + + +def AC2BO( + AC, atoms, charge, allow_charged_fragments=True, use_graph=True, allow_carbenes=True +): + """ + implemenation of algorithm shown in Figure 2 + UA: unsaturated atoms + DU: degree of unsaturation (u matrix in Figure) + best_BO: Bcurr in Figure + """ + + # make a list of valences, e.g. for CO: [[4],[2,1]] + valences_list_of_lists = [] + AC_valence = [int(x) for x in AC.sum(axis=1)] + + formula = labels2formula([elemdatabase.elementsym[atom] for atom in atoms]) + wrong = 0 + + for i, (atomicNum, valence) in enumerate(zip(atoms, AC_valence)): + # valence can't be smaller than number of neighbours + if len(atomic_valence[atomicNum]) == 0: + logger.warning( + "AC2BO: atom index %d (atomic number %d) has no possible valences " + "defined in the database.", + i, + atomicNum, + ) + possible_valence = [x for x in atomic_valence[atomicNum] if x >= valence] + + if atomicNum == 6 and valence == 1: + if 2 in possible_valence: + possible_valence.remove(2) + if atomicNum == 6 and not allow_carbenes and valence == 2: + if 2 in possible_valence: + possible_valence.remove(2) + if atomicNum == 6 and valence == 2: + possible_valence.append(3) + if atomicNum == 7: + if valence not in possible_valence: + possible_valence.append(valence) + if atomicNum == 16 and valence == 1 and formula == "C-S": + possible_valence = [3] + # possible_valence = [1, 2] + if atomicNum == 34 and valence == 1 and formula == "C-Se": + possible_valence = [3] + if atomicNum == 52 and valence == 1 and formula == "C-Te": + possible_valence = [3] + if len(possible_valence) == 0: + element = elemdatabase.elementsym[atomicNum] + max_valence = max(atomic_valence[atomicNum]) + + if elemdatabase.elementgroup[element] in (1, 2): + # Alkali and alkaline earth metals + logger.warning( + " Atom %s (index %d) has valence %d, which exceeds the allowed maximum (%d) " + "for group %d elements.", + element, + i, + valence, + max_valence, + elemdatabase.elementgroup[element], + ) + possible_valence.append(valence) + + elif elemdatabase.elementperiod[element] < 3: + # e.g. F in HOLMOK + logger.warning( + " Atom %s (index %d) has valence %d, which exceeds the allowed maximum (%d) " + "for period %d elements.", + element, + i, + valence, + max_valence, + elemdatabase.elementperiod[element], + ) + possible_valence.append(max_valence) + else: + possible_valence.append(valence) + # sys.exit() + valences_list_of_lists.append(possible_valence) + if wrong > 0: + return None, atomic_valence_electrons + + best_BO = AC.copy() + # Get the generator (0 bytes consumed for combinations) + sorted_gen = get_sorted_valences_list(valences_list_of_lists, atoms) + + if sorted_gen is None: + logger.warning("AC2BO terminating: Valence search space exceeded limit.") + return None, None # Return None to generate_charge_state + + # Use islice to safely take only the first 50 entries + # This prevents calculating millions of combinations you don't need + count = 0 + max_count = num_try_limit + top_valences = list(itertools.islice(sorted_gen, max_count)) + + for count, valences in enumerate(top_valences, 1): + UA, DU_from_AC = get_UA(valences, AC_valence) + + check_len = len(UA) == 0 + + if check_len: + check_bo = BO_is_OK( + AC, + AC, + charge, + DU_from_AC, + atomic_valence_electrons, + atoms, + valences, + allow_charged_fragments=allow_charged_fragments, + allow_carbenes=allow_carbenes, + ) + else: + check_bo = None + + if check_len and check_bo: + logger.info(" return AC %s charge %d count %d", formula, charge, count) + + return AC, atomic_valence_electrons + + UA_pairs_list = get_UA_pairs(UA, AC, use_graph=use_graph) + for UA_pairs in UA_pairs_list: + BO = get_BO(AC, UA, DU_from_AC, valences, UA_pairs, use_graph=use_graph) + status = BO_is_OK( + BO, + AC, + charge, + DU_from_AC, + atomic_valence_electrons, + atoms, + valences, + allow_charged_fragments=allow_charged_fragments, + allow_carbenes=allow_carbenes, + ) + charge_OK = charge_is_OK( + BO, + AC, + charge, + DU_from_AC, + atomic_valence_electrons, + atoms, + valences, + allow_charged_fragments=allow_charged_fragments, + allow_carbenes=allow_carbenes, + ) + + if status: + logger.debug( + " formula=%s status=%s charge=%s count=%s", + formula, + status, + charge, + count, + ) + return BO, atomic_valence_electrons + elif ( + BO.sum() >= best_BO.sum() + and valences_not_too_large(BO, valences) + and charge_OK + ): + best_BO = BO.copy() + + count += 1 + if count > max_count: + logger.debug( + " reached max count %s (charge=%d) count: %d", + formula, + charge, + count, + ) + return best_BO, atomic_valence_electrons + + return best_BO, atomic_valence_electrons + + +def AC2mol( + mol, + AC, + atoms, + charge, + allow_charged_fragments=True, + use_graph=True, + allow_carbenes=True, +): + """Build mol from AC; temporarily override atomic_valence without persisting changes.""" + overrides = None + if not allow_charged_fragments: + overrides = {8: [2, 1], 7: [3, 2], 6: [4, 2]} + + # Take a fresh backup *now*, not at import time + backup = copy.deepcopy(atomic_valence) + + try: + # Patch in place (no yield, no rebinding) + if overrides is not None: + for k, v in overrides.items(): + atomic_valence[k] = list(v) # copy to avoid sharing caller’s list + + BO, atomic_valence_electrons = AC2BO( + AC, + atoms, + charge, + allow_charged_fragments=allow_charged_fragments, + use_graph=use_graph, + allow_carbenes=allow_carbenes, + ) + if BO is None: + return [], None + + mol = BO2mol( + mol, + BO, + atoms, + atomic_valence_electrons, + charge, + allow_charged_fragments=allow_charged_fragments, + ) + return [mol], BO + + finally: + # Always restore, even if exceptions occur + atomic_valence.clear() + atomic_valence.update(backup) + + +def get_proto_mol(atoms): + """ """ + mol = Chem.MolFromSmarts("[#" + str(atoms[0]) + "]") + rwMol = Chem.RWMol(mol) + for i in range(1, len(atoms)): + a = Chem.Atom(int(atoms[i])) + rwMol.AddAtom(a) + + mol = rwMol.GetMol() + + return mol + + +def read_xyz_file(filename, look_for_charge=True): + """ """ + atomic_symbols = [] + xyz_coordinates = [] + charge = 0 + title = "" + + with open(filename, "r") as file: + for line_number, line in enumerate(file): + if line_number == 0: + num_atoms = int(line) + elif line_number == 1: + title = line + if "charge=" in line: + charge = int(line.split("=")[1]) + else: + atomic_symbol, x, y, z = line.split() + atomic_symbols.append(atomic_symbol) + xyz_coordinates.append([float(x), float(y), float(z)]) + + atoms = [int_atom(atom) for atom in atomic_symbols] + + return atoms, charge, xyz_coordinates + + +def chiral_stereo_check(mol): + """ + Find and embed chiral information into the model based on the coordinates + + Args: + mol - rdkit molecule, with embeded conformer + + """ + try: + Chem.SanitizeMol(mol) + Chem.DetectBondStereochemistry(mol, -1) + Chem.AssignStereochemistry(mol, flagPossibleStereoCenters=True, force=True) + Chem.AssignAtomChiralTagsFromStructure(mol, -1) + return True + except: + try: + Chem.SanitizeMol( + mol, + sanitizeOps=Chem.SanitizeFlags.SANITIZE_ALL + ^ Chem.SanitizeFlags.SANITIZE_PROPERTIES, + catchErrors=True, + ) + Chem.DetectBondStereochemistry(mol, -1) + Chem.AssignStereochemistry(mol, flagPossibleStereoCenters=True, force=True) + Chem.AssignAtomChiralTagsFromStructure(mol, -1) + return True + + except rdkit.Chem.rdchem.AtomValenceException as e: + logger.warning("Failed to process molecule: %s", e) + return False + + +def xyz2mol( + atoms, + coordinates, + AC, + covalent_factor, + charge=0, + allow_charged_fragments=True, + use_graph=True, + use_huckel=False, + embed_chiral=True, + exportBO=False, + allow_carbenes=False, +): + """ + Generate a rdkit molobj from atoms, coordinates and a total_charge. + + Args: + atoms: list of atom types (int) + coordinates: 3xN Cartesian coordinates + AC: atom connectivity matrix + charge: total charge of the system (default: 0) + + Optional: + allow_charged_fragments: alternatively radicals are made + use_graph: use graph (networkx) + use_huckel: Use Huckel method for atom connectivity prediction + embed_chiral: embed chiral information to the molecule + + Returns: + mols - list of rdkit molobjects + + """ + AC = np.array(AC) + mol = get_proto_mol(atoms) + # Get atom connectivity (AC) matrix, list of atomic numbers, molecular charge, + # and mol object with no connectivity information + # AC, mol = xyz2AC(atoms, coordinates, charge, covalent_factor, use_huckel=use_huckel) + # Convert AC to bond order matrix and add connectivity and charge info to + # mol object + new_mols, BO = AC2mol( + mol, + AC, + atoms, + charge, + allow_charged_fragments=allow_charged_fragments, + use_graph=use_graph, + allow_carbenes=False, + ) + + # Check for stereocenters and chiral centers -> Move to get_charge function + # if embed_chiral: + # chiral_stereo_check(new_mol)) + + if exportBO: + return new_mols, BO + else: + return new_mols diff --git a/cell2mol/charge_assignment.py b/cell2mol/charge_assignment.py deleted file mode 100644 index be1baaffd..000000000 --- a/cell2mol/charge_assignment.py +++ /dev/null @@ -1,1770 +0,0 @@ -#!/usr/bin/env python -import os -import numpy as np -from cell2mol.elementdata import ElementData -from cell2mol.connectivity import * -from collections import defaultdict -import itertools -import sys -from cell2mol.hungarian import reorder -from cell2mol.xyz2mol import xyz2mol, chiral_stereo_check -elemdatabase = ElementData() - -############################# -### Loads Rdkit & xyz2mol ### -############################# -import rdkit -from rdkit import Chem -from rdkit.Chem.Draw.MolDrawing import DrawingOptions # Only needed if modifying defaults -DrawingOptions.bondLineWidth = 2.2 - -# IPythonConsole.ipython_useSVG = False -from rdkit import rdBase -if "ipykernel" in sys.modules: - try: - from rdkit.Chem.Draw import IPythonConsole - except ModuleNotFoundError: - pass -# print("RDKIT Version:", rdBase.rdkitVersion) -rdBase.DisableLog("rdApp.*") - -fullerene = ["C60", "C72", "C80"] -manual_assign = ["O4-Cl", "N3", "I3", "N2", "N-O"] -####################################################### -def get_possible_charge_state(spec: object, debug: int=0): - if not hasattr(spec,"protonation_states"): spec.get_protonation_states(debug=debug) - if spec.protonation_states is None: - return None - if spec.formula in manual_assign: - ch_state = get_charge_manual(spec, debug=debug) - possible_cs = [ch_state] - return possible_cs - if spec.subtype == "group" : - return None - if spec.subtype == 'molecule' and (spec.iscomplex or spec.has_IA_IIA): - return None - charge_states = [] - ### Evaluates possible charges for each protonation state ### - print(f"GET_POSSIBLE_CHARGE_STATE: {spec.formula} ({spec.subtype}) ({len(spec.protonation_states)=})\n{spec.protonation_states=}") - for prot in spec.protonation_states: - charge_states_for_one_prot = [] - final_charges = get_list_of_charges_to_try(prot) - if debug >= 2: print(f" POSCHARGE will try charges {final_charges}") - - for ich in final_charges: - ch_state = get_charge(ich, prot) ## Protonation is passed to the ch_state object (ch_state.protonation) - charge_states_for_one_prot.append(ch_state) - if ch_state is not None: - if debug >= 2: print(f" POSCHARGE: charge {ich} with smiles {ch_state.smiles}") - else : - if debug >= 2: print(f" POSCHARGE: charge {ich} failed {ch_state}") - charge_states.extend(charge_states_for_one_prot) - if debug >= 2: print(f"POSCHARGE: {len(charge_states)=}") - - possible_cs = select_charge_distr(charge_states, debug=debug) - if debug >= 1: print(f"GET_POSSIBLE_CHARGE_STATE: {spec.formula} ({spec.subtype}) {possible_cs=}") - - ### Return possible charge states - if len(possible_cs) == 0: return None - else: return possible_cs - -####################################################### -def select_charge_distr(charge_states: list, debug: int=0) -> list: - # This function selects the best charge_distribuion among the ones generated by the function "getcharge" - # It does so based, in general, on the number of charges in each connectivity. - #:return goodlist: list of acceptable charge distributions. - # goodlist contains the indices of those distributions as the enter this function - - nlists = len(charge_states) - uncorr_total = [] - uncorr_abs_total = [] - uncorr_abs_atcharge = [] - uncorr_zwitt = [] - coincide = [] - aromatic_atoms = [] - charge_states =[ch for ch in charge_states if ch is not None] - - if len(charge_states) == 0: return [] - - for chs in charge_states: - uncorr_total.append(chs.uncorr_total_charge) - uncorr_abs_total.append(chs.uncorr_abstotal) - uncorr_abs_atcharge.append(chs.uncorr_abs_atcharge) - uncorr_zwitt.append(chs.uncorr_zwitt) - coincide.append(chs.coincide) - aromatic_dict = aromatic_info(chs.rdkit_obj) - aromatic_atoms.append(aromatic_dict["Aromatic atoms"]) - - - if debug >= 2: print(f" NEW SELECT FUNCTION: uncorr_total: {uncorr_total}") - if debug >= 2: print(f" NEW SELECT FUNCTION: uncorr_abs_total: {uncorr_abs_total}") - if debug >= 2: print(f" NEW SELECT FUNCTION: uncorr_abs_atcharge: {uncorr_abs_atcharge}") - if debug >= 2: print(f" NEW SELECT FUNCTION: uncorr_zwitt: {uncorr_zwitt}") - if debug >= 2: print(f" NEW SELECT FUNCTION: coincide: {coincide}") - if debug >= 2: print(f" NEW SELECT FUNCTION: aromatic_atoms: {aromatic_atoms}") - - minoftot = np.min(uncorr_abs_total) - minofabs = np.min(uncorr_abs_atcharge) - maxofaromatic = np.max(aromatic_atoms) - listofmintot = [i for i, x in enumerate(uncorr_abs_total) if x == minoftot] - listofminabs = [i for i, x in enumerate(uncorr_abs_atcharge) if x == minofabs] - listofmaxaromatic = [i for i, x in enumerate(aromatic_atoms) if x == maxofaromatic] - if debug >= 2: print(f" NEW SELECT FUNCTION: listofmintot: {listofmintot}") - if debug >= 2: print(f" NEW SELECT FUNCTION: listofminabs: {listofminabs}") - if debug >= 2: print(f" NEW SELECT FUNCTION: listofmaxaromatic: {listofmaxaromatic}") - # Searches for entries that have the smallest total charge(appear in listofmintot), - # and smallest number of charges(appear in listofminabs) - - #################### - # building tmplist # - #################### - tmplist = [] - for idx in range(0, nlists): - if (idx in listofminabs) and (idx in listofmintot) and coincide[idx]: - tmplist.append(idx) - - # IF listofminabs and listofmintot do not have any value in common. Then we select from minima, coincide, and zwitt - if len(tmplist) == 0: - if debug >= 2: print(" NEW SELECT FUNCTION: No entry in initial tmplist. We now select from minima, coincide and zwitt:") - for idx in range(0, nlists): - if ((idx in listofminabs) or (idx in listofmintot)) and coincide[idx] and not uncorr_zwitt[idx]: - tmplist.append(idx) - - # IF no values yet, we relax the criterion - if len(tmplist) == 0: - if debug >= 2: print(" NEW SELECT FUNCTION: No entry in initial tmplist yet. We now select from minima and coincide:") - for idx in range(0, nlists): - if ((idx in listofminabs) or (idx in listofmintot)) and coincide[idx]: - tmplist.append(idx) - - # IF no values yet, we relax the criterion even more - if len(tmplist) == 0: - if debug >= 2: print(" NEW SELECT FUNCTION: No entry in initial tmplist yet. We now select from minima:") - for idx in range(0, nlists): - if ((idx in listofminabs) or (idx in listofmintot)): - tmplist.append(idx) - - if debug >= 2: print(" NEW SELECT FUNCTION: We now select from the maxima of aromaticity:") - if len(listofmaxaromatic) == nlists: - if debug >= 2: print(" NEW SELECT FUNCTION: All entries have the same aromaticity. pass ") - pass - elif len(listofmaxaromatic) == 1: - for idx in range(0, nlists): - if (idx in listofmaxaromatic) and coincide[idx]: - if (idx not in tmplist): - tmplist.append(idx) - else : - if debug >= 2: print(" NEW SELECT FUNCTION: Already included in tmplist", f"{idx=} {tmplist=}") - elif len(listofmaxaromatic) > 1: - for idx in range(0, nlists): - if (idx in listofmaxaromatic) and coincide[idx] : - if (idx in tmplist): - if debug >= 2: print(" NEW SELECT FUNCTION: Already included in tmplist", f"{idx=} {tmplist=}") - else : - if debug >= 2: print(" NEW SELECT FUNCTION: Check to tmplist", f"{idx=} {tmplist=}") - # for idx in tmplist: - # if len(listofmaxaromatic) < nlists and len(listofmaxaromatic) >= 1: - # if idx not in listofmaxaromatic: - # if debug >= 2: - # print(f" NEW SELECT FUNCTION: {idx=} Not in {listofmaxaromatic=}") - # print(f" {idx=} {tmplist=} {uncorr_abs_total[idx]=} {uncorr_abs_atcharge[idx]=} {aromatic_atoms[idx]=}") - # if aromatic_atoms[idx] == 0: - # tmplist.remove(idx) - # if debug >= 2: print(f" NEW SELECT FUNCTION: {idx=} Removed from tmplist, resulting {tmplist=}") - # else: - # if debug >= 2: print(f" NEW SELECT FUNCTION: {idx=} kept from tmplist, resulting {tmplist=}") - #################### - # tmplist is built # - #################### - if debug >= 2: print(f" NEW SELECT FUNCTION: tmplist: {tmplist}, including:") - for idx in range(0, nlists): - if idx in tmplist: - if debug >= 2: print(f" NEW SELECT FUNCTION: Corr_charge={charge_states[idx].corr_total_charge}") - if debug >= 2: print(f" NEW SELECT FUNCTION: Smiles={charge_states[idx].smiles}") - - corr_charges = [] - for idx in range(0, nlists): - if idx in tmplist: - if charge_states[idx].corr_total_charge not in corr_charges: - corr_charges.append(charge_states[idx].corr_total_charge) - if debug >= 2: print(f" NEW SELECT FUNCTION: found corr_charges={corr_charges}") - - good_states = [] - for jdx, tgt_charge in enumerate(corr_charges): - if debug >= 2: print(f" NEW SELECT FUNCTION: doing tgt_charge={tgt_charge}") - list_for_tgt_charge = [] - for idx in tmplist: - if charge_states[idx].corr_total_charge == tgt_charge: - list_for_tgt_charge.append(charge_states[idx]) - if debug >= 2: print(f" NEW SELECT FUNCTION: charge_state added") - - # CASE 1, IF only one distribution meets the requirement. Then it is chosen - if len(list_for_tgt_charge) == 1: - good_states.append(list_for_tgt_charge[0]) - if debug >= 2: print(f" NEW SELECT FUNCTION: Case 1, only one entry for {tgt_charge} in tmplist") - - # CASE 2, IF more than one charge_state is found for a given final charge - elif len(list_for_tgt_charge) > 1: - good_states.append(list_for_tgt_charge[0]) - if debug >= 2: print(f" NEW SELECT FUNCTION: Case 2, more than one entry for {tgt_charge} in tmplist. Taking first") - # for tgt_charge in list_for_tgt_charge: - # good_states.append(tgt_charge) - # if debug >= 2: print(f" NEW SELECT FUNCTION: Case 2, more than one entry for {tgt_charge} in tmplist. Considering all") - return good_states -####################################################### -def get_empty_protonation_state (specie: object, debug: int=2) -> list: - if debug >= 2: print(f"\nPOSCHARGE: doing empty PROTONATION for this specie {specie.formula} ({specie.subtype})") - #empty_list = list([np.zeros((len(specie.labels)))]) - empty_list = [] - for i in range(len(specie.labels)): - empty_list.append(int(0)) - empty_protonation = protonation(specie.labels, specie.coord, specie.cov_factor, int(0), empty_list, empty_list, empty_list, empty_list, typ="Empty", parent=specie) - if debug >= 2: print(" CREATED EMPTY PROTONATION", empty_protonation) - - return list([empty_protonation]) -####################################################### -def get_protonation_states_specie(specie: object, debug: int=0) -> list: - ############################## - #### Creates protonation states. That is, geometries in which atoms have been added to the original molecule - ############################## - if specie.type != "specie": return None - if specie.subtype == "group": return None - elif specie.subtype == "molecule" and (specie.iscomplex or specie.has_IA_IIA) : return None - elif (specie.subtype == "molecule" and not specie.iscomplex and not specie.has_IA_IIA): - empty_protonation_states = get_empty_protonation_state(specie, debug=debug) - return empty_protonation_states - elif specie.formula in manual_assign or specie.formula in fullerene: - empty_protonation_states = get_empty_protonation_state(specie, debug=debug) - return empty_protonation_states - elif (specie.subtype == "ligand" and specie.get_parent("molecule").has_IA_IIA): - if not specie.get_parent("molecule").iscomplex: - empty_protonation_states = get_empty_protonation_state(specie, debug=debug) - return empty_protonation_states - else: - pass - else: - pass - - ## If specie.subtype == "ligand": - ligand = specie ## Change the variable name as it is easier to follow - protonation_states = [] - - natoms = ligand.natoms - newlab = ligand.labels.copy() - newcoord = ligand.coord.copy() - - if len(get_non_transition_metal_idxs(newlab)) == natoms: # metal cluster (e.g. Sb12 in AKEVIX) - if debug >= 2: print(f" POSCHARGE: CANNOT Generate PROTONATION for this specie {specie.formula} ({specie.subtype})") - return None - - # Variables that control how many atoms have been added. - tmp_added_atoms = 0 - added_atoms = 0 - - # Boolean that decides whether a non-local approach is needed - non_local_groups = 0 - non_local_groups_indices = [] - needs_nonlocal = False - - # Initialization of the variables - addedlist = np.zeros((natoms)).astype(int) - block = np.zeros((natoms)).astype(int) - metal_electrons = np.zeros((natoms)).astype(int) # It will remain as such - elemlist = np.empty((natoms)).astype(str) - - if debug >= 2: print(f"\nPOSCHARGE: doing PROTONATION for this specie {specie.formula} ({specie.subtype})") - # Program runs sequentially for each group of the ligand - if debug >= 2: print(f" group formula {[g.formula for g in ligand.groups]=}") - - for g in ligand.groups: - parent_indices = g.get_parent_indices("ligand") - if debug > 2: print(f"{parent_indices=}") - if debug >= 2: print(f" GET_PROTONATION_STATES: Evaluating group {g.formula} with parent_indices {parent_indices}") - if debug >= 2: print(f" GET_PROTONATION_STATES: {g.formula} with metals {[metal.atom_site_label for metal in g.metals]}") - ######################## - # Cases with Hapticity # - ######################## - IA_IIA = get_alkali_alkaline_earth_metal_idxs([metal.label for metal in g.metals]) - if len(IA_IIA) == len(g.metals): - for idx in parent_indices: - block[idx] = 1 - elif g.is_haptic: - Selected_Hapticity = False - if debug >= 2: print(" GET_PROTONATION_STATES: addressing group with hapticity:", g.haptic_type) - if debug >= 2: print(" GET_PROTONATION_STATES: and parent indices:", parent_indices) - - if "h5-Cp" in g.haptic_type and not Selected_Hapticity: - Selected_Hapticity = True - tobeadded = 1 - tmp_added_atoms = 0 - for idx, a in enumerate(ligand.atoms): - if idx in parent_indices and a.mconnec == 1: - print (idx, tmp_added_atoms, tobeadded) - if tmp_added_atoms < tobeadded: - print(f" GET_PROTONATION_STATES: Adding H to {idx} with label {a.label}") - elemlist[idx] = "H" - addedlist[idx] = 1 - tmp_added_atoms += 1 - print(f"{addedlist=} {block=} {added_atoms=} {elemlist=}") - else: block[idx] = 1 - - elif "h7-Cycloheptatrienyl" in g.haptic_type and not Selected_Hapticity: - Selected_Hapticity = True - tobeadded = 1 - tmp_added_atoms = 0 - for idx, a in enumerate(ligand.atoms): - if idx in parent_indices and a.mconnec == 1: - if tmp_added_atoms < tobeadded: - elemlist[idx] = "H" - addedlist[idx] = 1 - tmp_added_atoms += 1 - else: block[idx] = 1 - - elif "h5-AsCp" in g.haptic_type and not Selected_Hapticity: - Selected_Hapticity = True - - # Rules change depending on whether the ring is substituted or not - issubstituted = False - for idx, a in enumerate(ligand.atoms): - if idx in parent_indices and a.mconnec == 1: - for adj in a.adjacency: - if ligand.get_parent("molecule").labels[adj] != "As": - issubstituted = True - if issubstituted: tobeadded = 0 - else: tobeadded = 1 - - tmp_added_atoms = 0 - for idx, a in enumerate(ligand.atoms): - if idx in parent_indices and a.mconnec == 1: - if tmp_added_atoms < tobeadded: - elemlist[idx] = "H" - addedlist[idx] = 1 - tmp_added_atoms += 1 - else: - block[idx] = 1 - - elif "h5-Pentaphosphole" in g.haptic_type and not Selected_Hapticity: ## Case of IMUCAX - Selected_Hapticity = True - - # Rules change depending on whether the ring is substituted or not - issubstituted = False - for idx, a in enumerate(ligand.atoms): - if idx in parent_indices and a.mconnec == 1: - for adj in a.adjacency: - if ligand.get_parent("molecule").labels[adj] != "P": - issubstituted = True - if issubstituted: - tobeadded = 0 - else: - tobeadded = 1 - - tmp_added_atoms = 0 - for idx, a in enumerate(ligand.atoms): - if idx in parent_indices and a.mconnec == 1: - if tmp_added_atoms < tobeadded: - elemlist[idx] = "H" - addedlist[idx] = 1 - tmp_added_atoms += 1 - else: - block[idx] = 1 - - elif ("h3-Allyl" in g.haptic_type or "h3-Cp" in g.haptic_type) and not Selected_Hapticity: - Selected_Hapticity = True - tobeadded = 1 - tmp_added_atoms = 0 - for idx, a in enumerate(ligand.atoms): - if idx in parent_indices and a.mconnec == 1: - if tmp_added_atoms < tobeadded: - elemlist[idx] = "H" - addedlist[idx] = 1 - tmp_added_atoms += 1 - else: - block[idx] = 1 - - elif ("h4-Benzene" in g.haptic_type or "h4-Butadiene" in g.haptic_type) and not Selected_Hapticity: - if debug >= 2: print(" GET_PROTONATION_STATES: No action is required") - Selected_Hapticity = True - tobeadded = 0 - for idx, a in enumerate(ligand.atoms): - if idx in parent_indices and a.mconnec == 1: - block[idx] = 1 - - elif ("h2-Benzene" in g.haptic_type or "h2-Butadiene" or "h2-ethylene" in g.haptic_type) and not Selected_Hapticity: - if debug >= 2: print(" GET_PROTONATION_STATES: No action is required") - Selected_Hapticity = True - tobeadded = 0 - for idx, a in enumerate(ligand.atoms): - if idx in parent_indices and a.mconnec == 1: - block[idx] = 1 - - elif "h4-Enone" in g.haptic_type and not Selected_Hapticity: - if debug >= 2: print(" GET_PROTONATION_STATES: No action is required") - Selected_Hapticity = True - tobeadded = 0 - for idx, a in enumerate(ligand.atoms): - if idx in parent_indices and a.mconnec == 1: - block[idx] = 1 - - elif "h2-P=C" in g.haptic_type and not Selected_Hapticity: - if debug >= 2: print(" GET_PROTONATION_STATES: No action is required") - Selected_Hapticity = True - tobeadded = 0 - for idx, a in enumerate(ligand.atoms): - if idx in parent_indices and a.mconnec == 1: - block[idx] = 1 - - # If the group hapticity type is not recognized -or instructions are not defined-, nothing is done - if not Selected_Hapticity: - if debug >= 2: print(f" GET_PROTONATION_STATES: {g.haptic_type} not recognized or new rules are necessary") - - else: # cases without hapticity - ions = ["F", "Cl","Br","I","As"] # Atoms for which an H atom is always added - ########################### - # Cases with No Hapticity # - ########################### - # An initial attempt to add elements based on the adjacency of the connected atom - for idx in parent_indices: - a = ligand.atoms[idx] - if debug >= 2: print(f" GET_PROTONATION_STATES: evaluating non-haptic group with index {idx} and label {a.label}") - # Simple Ionic Case - if a.label in ions: - if a.connec == 0: - elemlist[idx] = "H" - addedlist[idx] = 1 - elif a.connec >= 1: - block[idx] = 1 - # Oxygen - elif a.label == "O" : - if a.connec == 2 and (a.connec - a.mconnec) == 1: - needs_nonlocal = True - non_local_groups += 1 - non_local_groups_indices.append(idx) - if debug >= 2: print(f" GET_PROTONATION_STATES: will be sent to nonlocal due to {a.label} atom") - elif a.connec > 1: - block[idx] = 1 - # elemlist[idx] = "H" - # addedlist[idx] = 1 - - # Sulfur and Selenium - elif a.label == "S" or a.label == "Se": - if a.connec == 1 : - elemlist[idx] = "H" - addedlist[idx] = 1 - elif a.connec == 2 and (a.connec - a.mconnec) == 1: - needs_nonlocal = True - non_local_groups += 1 - non_local_groups_indices.append(idx) - if debug >= 2: print(f" GET_PROTONATION_STATES: will be sent to nonlocal due to {a.label} atom") - # block[idx] = 1 - # elemlist[idx] = "H" - # addedlist[idx] = 1 - else: - block[idx] = 1 - # Hydrides - elif a.label == "H": - print(f" GET_PROTONATION_STATES: {a.label} atom with {a.connec} connections and {a.mconnec} metal connections") - if a.connec <= 1: - elemlist[idx] = "Cl" - addedlist[idx] = 1 - # elif a.connec == 1: - # elemlist[idx] = "Cl" - # addedlist[idx] = 1 - elif (a.connec - a.mconnec) > 1: - block[idx] = 1 - # Nitrogen - elif a.label == "N": - # Nitrosyl - if ligand.natoms == 2 and ligand.is_nitrosyl: - if ligand.NO_type == "Linear": - if debug >= 2: print(" GET_PROTONATION_STATES: Found Linear Nitrosyl") - elemlist[idx] = "O" - addedlist[idx] = 1 - metal_electrons[idx] = 1 - elif ligand.NO_type == "Bent": - if debug >= 2: print(" GET_PROTONATION_STATES: Found Bent Nitrosyl") - elemlist[idx] = "H" - addedlist[idx] = 1 - else: - # nitrogen with at least 3 adjacencies doesnt need H - # if a.connec >= 3: - if (a.connec - a.mconnec) >= 3 : - block[idx] = 1 - # needs_nonlocal = True - # non_local_groups += 1 - # non_local_groups_indices.append(idx) - # elemlist[idx] = "H" - # addedlist[idx] = 1 - else: - # Checks for adjacent Atoms - list_of_adj_atoms = [] - for adj in a.adjacency: - if debug >= 2: print(f" GET_PROTONATION_STATES: {adj=}", ligand.get_parent("molecule").labels[adj]) - list_of_adj_atoms.append(ligand.get_parent("molecule").labels[adj]) - numN = list_of_adj_atoms.count("N") - if numN == 2: # triazole or tetrazole - elemlist[idx] = "H" - addedlist[idx] = 1 - else: - needs_nonlocal = True - non_local_groups += 1 - non_local_groups_indices.append(idx) - if debug >= 2: print(f" GET_PROTONATION_STATES: will be sent to nonlocal due to {a.label} atom") - # Phosphorous - elif (a.connec >= 3) and a.label == "P": - block[idx] = 1 - # Case of Carbon (Simple CX vs. Carbenes) - elif a.label == "C": - if ligand.natoms == 2: - # CN - if "N" in ligand.labels: - elemlist[idx] = "H" - addedlist[idx] = 1 - # CO - if "O" in ligand.labels: block[idx] = 1 - # Added for amides - elif (any(ligand.get_parent("molecule").labels[adj] == "O" for adj in a.adjacency) and any(ligand.get_parent("molecule").labels[adj] == "N" for adj in a.adjacency) and a.connec == 2 ): - elemlist[idx] = "H" - addedlist[idx] = 1 - else: - mol = ligand.get_parent("molecule") - iscarbene, tmp_element, tmp_added, tmp_metal = check_carbenes(a, ligand) - if debug >= 2: print(f" GET_PROTONATION_STATES: Evaluating as carbene and {iscarbene}") - if iscarbene: - # Carbene identified - elemlist[idx] = tmp_element - addedlist[idx] = tmp_added - metal_electrons[idx] = tmp_metal - else: - needs_nonlocal = True - non_local_groups += 1 - non_local_groups_indices.append(idx) - if debug >= 2: print(f" GET_PROTONATION_STATES: will be sent to nonlocal due to {a.label} atom") - # Silicon - elif a.label == "Si": - if (a.connec - a.mconnec) < 4: - elemlist[idx] = "H" - addedlist[idx] = 1 - else: block[idx] - # Boron - elif a.label == "B": - if (a.connec - a.mconnec) < 4: - elemlist[idx] = "H" - addedlist[idx] = 1 - else: block[idx] - # None of the previous options - else: - if not needs_nonlocal: - needs_nonlocal = True - non_local_groups += 1 - non_local_groups_indices.append(idx) - if debug >= 2: print(f" GET_PROTONATION_STATES: will be sent to nonlocal due to {a.label} atom with no rules") - - - # If, at this stage, we have found that any atom must be added, this is done before entering the non_local part. - # The block variable makes that more atoms cannot be added to these connected atoms - for idx, a in enumerate(ligand.atoms): - if addedlist[idx] != 0 and block[idx] == 0: - mol = ligand.get_parent("molecule") - for i in range(addedlist[idx]): - isadded, newlab, newcoord = add_atom(newlab, newcoord, idx, ligand, mol.metals, elemlist[idx], unconditional=True, debug=debug) - if isadded: - if debug >= 2: print(f" GET_PROTONATION_STATES: Added {elemlist[idx]} to atom {idx} with: a.mconnec={a.mconnec} and label={a.label}") - added_atoms += addedlist[idx] - block[idx] = 1 # No more elements will be added to those atoms - else: - print(f" GET_PROTONATION_STATES: Failed to add {elemlist[idx]} to atom {idx} with: a.mconnec={a.mconnec} and label={a.label}") - addedlist[idx] = 0 - block[idx] = 1 # No more elements will be added to those atoms - - ############################ - ###### NON-LOCAL PART ###### - ############################ - - if not needs_nonlocal: - if debug >= 2: print(f"\nPOSCHARGE: doing Local PROTONATION for this specie {specie.formula} ({specie.subtype})") - if debug > 2: print(f"{addedlist=} {block=} {added_atoms=} {elemlist=}") - new_prot = protonation(newlab, newcoord, ligand.cov_factor, added_atoms, addedlist, block, metal_electrons, elemlist, parent=specie) - protonation_states.append(new_prot) - else: - if debug >= 2: print(f"\nPOSCHARGE: doing Non-local PROTONATION for this specie {specie.formula} ({specie.subtype})") - # Generate the new adjacency matrix after local elements have been added to be sent to xyz2mol - local_labels = newlab.copy() - local_coords = newcoord.copy() - local_radii = get_radii(local_labels) - local_natoms = len(local_labels) - #local_atnums = [int_atom(label) for label in local_labels] # from xyz2mol.py - dummy, local_adjmat, local_adjnum = get_adjmatrix(local_labels, local_coords, ligand.cov_factor, local_radii) - - local_addedlist = addedlist.copy() - local_block = block.copy() - local_added_atoms = added_atoms - - # Initiate variables - avoid = ["Si", "P"] - - if debug >= 2: print(" ") - if debug >= 2: print(f" GET_PROTONATION_STATES: Enters non-local with:") - if debug >= 2: print(f" GET_PROTONATION_STATES: local_labels: {local_labels}") - if debug >= 2: print(f" GET_PROTONATION_STATES: block: {block}") - if debug >= 2: print(f" GET_PROTONATION_STATES: addedlist: {addedlist}") - if debug >= 2: print(f" GET_PROTONATION_STATES: {len(non_local_groups_indices)} non_local_groups groups found") - if debug >= 2: print(f" GET_PROTONATION_STATES: non_local_groups={[ligand.labels[idx] for idx in non_local_groups_indices]}") - if debug >= 2: print(f" GET_PROTONATION_STATES: {non_local_groups_indices=}") - # CREATES ALL COMBINATIONS OF PROTONATION STATES# - # Creates [0,1] tuples for each non_local protonation site - tmp = [] - for kdx in range(0, len(non_local_groups_indices)): - tmp.append([0,1]) - - if len(tmp) > 1: - combinations = list(itertools.product(*tmp)) - combinations.sort(key=sum) - else: - combinations = [0,1] - count = 0 - #print(f"{combinations=}") - for com in combinations: - newlab = local_labels.copy() - newcoord = local_coords.copy() - if debug >= 2: print(f" ") - if debug >= 2: print(f" GET_PROTONATION_STATES: doing combination {com}") - metal_electrons = np.zeros((local_natoms)).astype(int) ## Electrons Contributed to the Metal - elemlist = np.empty((local_natoms)).astype(str) - # block and addedlist are inherited from LOCAL - addedlist = local_addedlist.copy() - block = local_block.copy() - added_atoms = local_added_atoms - non_local_added_atoms = 0 - - o_s = np.sum(com) - toallocate = int(0) - # print(f"{non_local_groups=} {non_local_groups_indices=}") - # for jdx, a in enumerate(ligand.atoms): - # if a.mconnec >= 1 and a.label not in avoid and block[jdx] == 0: - # print(jdx, a.label, a.mconnec) - # print("====") - for jdx, a in enumerate(ligand.atoms): - if a.mconnec >= 1 and a.label not in avoid and block[jdx] == 0 and jdx in non_local_groups_indices: - # print(a.label) - if non_local_groups > 1: - #print(f"{com=} {toallocate=}") - if com[toallocate] == 1: - elemlist[jdx] = "H" - addedlist[jdx] = 1 - mol = ligand.get_parent("molecule") - isadded, newlab, newcoord = add_atom(newlab, newcoord, jdx, ligand, mol.metals, elemlist[jdx], unconditional=True, debug=debug) - if isadded: - added_atoms += addedlist[jdx] - if debug >= 2: print(f" GET_PROTONATION_STATES: Added {elemlist[jdx]} to atom {jdx} with: a.mconnec={a.mconnec} and label={a.label}") - else: - addedlist[idx] = 0 - block[idx] = 1 # No more elements will be added to those atoms - elif non_local_groups == 1: - if com == 1: - elemlist[jdx] = "H" - addedlist[jdx] = 1 - mol = ligand.get_parent("molecule") - isadded, newlab, newcoord = add_atom(newlab, newcoord, jdx, ligand, mol.metals, elemlist[jdx], unconditional=True, debug=debug) - if isadded: - added_atoms += addedlist[jdx] - if debug >= 2: print(f" GET_PROTONATION_STATES: Added {elemlist[jdx]} to atom {jdx} with: a.mconnec={a.mconnec} and label={a.label}") - else: - addedlist[idx] = 0 - block[idx] = 1 # No more elements will be added to those atoms - #in any case, moves index - toallocate += 1 - - smi = " " - new_prot = protonation(newlab, newcoord, ligand.cov_factor, added_atoms, addedlist, block, metal_electrons, elemlist, smi, o_s, typ="Non-local", parent=specie) - count+=1 - if new_prot.status == 1 and new_prot.added_atoms == o_s + local_added_atoms: - # print(f"{new_prot.added_atoms=}") - # print(f"{o_s=}") - # print(f"{local_added_atoms=}") - # print(f"{elemlist=}") - protonation_states.append(new_prot) - if debug >= 2: print(f" GET_PROTONATION_STATES: Protonation SAVED with {added_atoms} atoms added to ligand. status={new_prot.status}") - else: - if debug >= 2: print(f" GET_PROTONATION_STATES: Protonation DISCARDED. Steric Clashes found when adding atoms. status={new_prot.status}") - if debug > 2: print(f" GET_PROTONATION_STATES:{protonation_states=}") - return protonation_states -####################################################### -def move_to_front(lst, index): - element = lst.pop(index) # Remove the element from its current position - lst.insert(0, element) # Insert the element at the beginning - return lst -####################################################### -def move_element(lst, old_index, new_index): - element = lst.pop(old_index) # Remove the element from its current position - lst.insert(new_index, element) # Insert the element at the new position - return lst -####################################################### -def get_charge_manual(spec, debug: int=0): - print(spec.parents) - - if spec.formula == "O4-Cl": - smiles = "[O-]Cl(=O)(=O)=O" - charge = -1 - order = [0, 1, 2, 3, 4] # Cl index is 1 - new_order = order # Default to initial order in case no move is needed - - # Find the index of the "Cl" atom and update `new_order` - for idx, atom in enumerate(spec.atoms): - if atom.label == "Cl": - new_order = move_element(order, 1, idx) - break # Stop once we find and move Cl - - if spec.formula == "N3": - smiles = "[N-]=[N+]=[N-]" - charge = -1 - order = [0, 1, 2] - new_order = order # Default to initial order if no modification is needed - - # Iterate over each atom to check adjacency - for idx, atom in enumerate(spec.atoms): - # Find adjacent atoms and check if there are exactly two "N" atoms - adjacent_labels = [spec.get_parent("molecule").labels[adj] for adj in atom.adjacency] - if debug >= 2: print(f"N3: atom index {idx}, adjacent_labels={adjacent_labels}") - - # Check if the atom has exactly 2 nitrogen neighbors - if adjacent_labels.count("N") == 2: - new_order = move_element(order, 1, idx) - break # Found the target atom, no need to check further - - if spec.formula == "I3": - smiles = "I[I-]I" - charge = -1 - order = [0, 1, 2] - new_order = order # Default to initial order if no modification is needed - - # Iterate over each atom to check adjacency - for idx, atom in enumerate(spec.atoms): - # Find adjacent atoms and check if there are exactly two "N" atoms - adjacent_labels = [spec.get_parent("molecule").labels[adj] for adj in atom.adjacency] - if debug >= 2: print(f"I3: atom index {idx}, adjacent_labels={adjacent_labels}") - - # Check if the atom has exactly 2 nitrogen neighbors - if adjacent_labels.count("I") == 2: - new_order = move_element(order, 1, idx) - break # Found the target atom, no need to check further - - if spec.formula == "N2": - smiles = "N#N" - charge = 0 - order = [0, 1] - new_order = order - - if spec.formula == "N-O": - if spec.NO_type == "Linear": - # smiles = "N#[O+]" # nitrosyl cation (linear) - # charge = +1 - # order = [0, 1] - # new_order = order - smiles = "[N]=O" # nitrosyl radical - charge = 0 - order = [0, 1] - new_order = order - elif spec.NO_type == "Bent": - smiles = "[N-]=O" # nitrosyl anion (bent) - charge = -1 - order = [0, 1] - new_order = order - - for idx, atom in enumerate(spec.atoms): - if atom.label == "O": - new_order = move_element(order, 1, idx) - break # Stop once we find and move Cl - - if debug >= 2: - print(f"get_charge_manual: {spec.formula=} {smiles=}, {charge=}, {new_order=}") - - temp_mol = Chem.MolFromSmiles(smiles, sanitize=False) - mol = Chem.RenumberAtoms(temp_mol, new_order) - atom_charge = [] - total_charge = 0 - for i in range(spec.natoms): - a = mol.GetAtomWithIdx(i) # Returns a particular Atom - atom_charge.append(a.GetFormalCharge()) - total_charge += a.GetFormalCharge() - - # iscorrect = check_rdkit_obj_connectivity(mol, spec.natoms, charge, debug=debug) - iscorrect = True - allow = True - prot = spec.get_protonation_states()[0] - ch_state = charge_state(iscorrect, total_charge, atom_charge, mol, smiles, charge, allow, prot) - - return ch_state -######################################################## -# def aromatic_info(smiles): -# mol = Chem.MolFromSmiles(smiles) -# if mol is None: -# return "Invalid SMILES" -def aromatic_info(mol: object): - #print(f"aromatic_info: {mol=} {Chem.MolToSmiles(mol)}") - aromatic_atoms = sum(1 for atom in mol.GetAtoms() if atom.GetIsAromatic()) - aromatic_rings = Chem.GetSSSR(mol) # SSSR = smallest set of smallest rings - return { - "Aromatic atoms": aromatic_atoms, - "Number of rings": len(Chem.GetSymmSSSR(mol)), - "Aromatic rings": Chem.GetSSSR(mol), - } -###################################################### -def get_charge(charge: int, prot: object, allow: bool=True, embed_chiral: bool=True, ref_uncorr_atom_charges=None, debug: int=0): - ## Generates the connectivity of a molecule given a desired charge (charge). - # The molecule is described by a protonation states that has labels, and the atomic cartesian coordinates "coords" - # The adjacency matrix is also provided in the protonation state(adjmat) - #:return charge_state which is an object with the necessary information for other functions to handle the result - - natoms = prot.natoms - atnums = prot.atnums - if debug >= 2: print(f"\nGET_CHARGE. Starting get_charge with charge {charge} and {prot.formula} {prot.added_atoms=}") - # prot.coords and prot.cov_factor will not be used - mols = xyz2mol(atnums, prot.coords, prot.adjmat, prot.cov_factor, charge=charge, allow_charged_fragments=allow) - #mols = xyz2mol(atnums, prot.coords, prot.adjmat, prot.cov_factor, charge=charge, allow_charged_fragments=allow, allow_carbenes=allow_carbenes) - if debug >= 2: print(f"GET_CHARGE.{len(mols)=} received from xyz2mol with charge {charge}") - - if len(mols) > 1: - if debug >=1 : print(f"GET_CHARGE. WARNING: More than 1 mol received from xyz2mol for initcharge: {charge}") - elif len(mols) == 0: - if debug >=1 : print(f"GET_CHARGE. WARNING: No mol received from xyz2mol for initcharge: {charge}") - return None - else : - pass - - rdkit_obj = mols[0] - if debug >= 2: print(f"GET_CHARGE. CHECK. {Chem.MolToSmiles(rdkit_obj)=}") - if debug >= 2: - if hasattr(prot, "atom_site_labels"): print(f"GET_CHARGE. {prot.atom_site_labels=}") - - if embed_chiral: - is_okay = [] - for mol in mols: - is_okay.append(chiral_stereo_check(mol)) - if debug >=2 : print(f"GET_CHARGE.{is_okay=}") - if all(is_okay): - pass - else: - if debug >=2 : print(f"GET_CHARGE. Some mols have wrong chirality") - for mol in mols: - print(f"{mol=}") - for i in range(natoms): - a = mol.GetAtomWithIdx(i) - # if a.GetExplicitValence() != a.GetTotalValence(): - if debug > 2 : print(f"GET_CHARGE. {i} {a.GetSymbol()=}, {a.GetFormalCharge()=}, \ - {a.GetImplicitValence()=}, {a.GetExplicitValence()=} {a.GetTotalValence()=}") - return None - - # Gets the resulting charges - atom_charges = [] - total_charge = 0 - - if ref_uncorr_atom_charges is not None: - for i in range(natoms): - a = rdkit_obj.GetAtomWithIdx(i) - if a.GetFormalCharge() != ref_uncorr_atom_charges[i]: - if debug >= 0: print(f"GET_CHARGE. correct atomic charge {i=} {a.GetSymbol()=} from {a.GetFormalCharge()=} to {ref_uncorr_atom_charges[i]=}") - a.SetFormalCharge(ref_uncorr_atom_charges[i]) - atom_charges.append(a.GetFormalCharge()) - total_charge += a.GetFormalCharge() - else: - for i in range(natoms): - a = rdkit_obj.GetAtomWithIdx(i) # Returns a particular Atom - atom_charges.append(a.GetFormalCharge()) - total_charge += a.GetFormalCharge() - - - smiles = Chem.MolToSmiles(rdkit_obj) - - if debug >= 2: print(f"GET_CHARGE. {smiles=}") - if debug >= 2: print(f"GET_CHARGE. {atom_charges=}") - if debug >= 2: print(f"GET_CHARGE. {total_charge=}") - # Connectivity is checked - iscorrect = check_rdkit_obj_connectivity(rdkit_obj, natoms, charge, debug=debug) - - # Charge_state is initiated - ch_state = charge_state(iscorrect, total_charge, atom_charges, rdkit_obj, smiles, charge, allow, prot) - - return ch_state -####################################################### -def check_rdkit_obj_connectivity(mol: object, natoms: int, ich: int, debug: int=0): - # Here, the atom charge is retrieved, and the connectivity of each atom goes through 3 checks. - # The variable iscorrect will track whether the overall generated structure is meaningful - pt = Chem.GetPeriodicTable() # Needed to retrieve the default valences in the 2nd and 3rd checks - iscorrect = True - for i in range(natoms): - a = mol.GetAtomWithIdx(i) # Returns a particular Atom - valence = a.GetTotalValence() # Valence of the atom in the mol object - bonds = 0 - countaromatic = 0 - for b in a.GetBonds(): # Returns a read-only sequence containing all of the molecule' bonds - bonds += b.GetBondTypeAsDouble() - # total number of bonds (weighted by bond order) of the atom in the mol object - # Returns the type of the bond as a double (i.e. 1.0 for SINGLE, 1.5 for AROMATIC, 2.0 for DOUBLE) - if b.GetBondTypeAsDouble() == 1.5: - countaromatic += 1 - if countaromatic % 2 != 0: - bonds -= 0.5 - - lonepairs = (elemdatabase.valenceelectrons[a.GetSymbol()] - a.GetFormalCharge() - valence) / 2 - totalvalenceelectrons = int(bonds) + int(lonepairs) * 2 + a.GetFormalCharge() - - # Checks the quality of the resulting smiles - # First check, the number of lonepairs is computed and should make sense - if lonepairs != 0 and lonepairs != 1 and lonepairs != 2 and lonepairs != 3 and lonepairs != 4: - if debug >= 2: print("GETCHARGE: 2nd Check-lonepairs=", i, a.GetSymbol(), lonepairs) - iscorrect = False - - # RDKIT has some troubles assigning the valence for atoms with aromatic bonds. - # So the 2nd and 3rd Check applies only for countaromatic==0 - if countaromatic == 0: - # Second check, the number of bonds should coincide with the valence. - # I know it should be the same, but in bad SMILES they often do not coincide - if bonds != valence: - if debug >= 2: print("GETCHARGE: 1st Check-bonds/valence:",i,a.GetSymbol(),bonds,valence); iscorrect = False - if debug >= 2: - for b in a.GetBonds(): - print(b.GetBondTypeAsDouble(),b.GetBeginAtomIdx(),b.GetEndAtomIdx()) - - # Third check, using the totalvalenceelectrons - if totalvalenceelectrons != elemdatabase.valenceelectrons[a.GetSymbol()]: - if debug >= 2: print("GETCHARGE: 3rd Check: Valence gives false for atom",i,a.GetSymbol(),"with:",totalvalenceelectrons,elemdatabase.valenceelectrons[a.GetSymbol()]) - iscorrect = False - - if debug >= 2 and i == 0: print("ich, atom idx, label, charge, pt.GetDefaultValence(a.GetAtomicNum()), valence, num bonds, num lonepairs, iscorrect") - if debug >= 2: print(ich,i,a.GetSymbol(),a.GetFormalCharge(),pt.GetDefaultValence(a.GetAtomicNum()),valence,int(bonds),int(lonepairs),iscorrect) - - return iscorrect - -####################################################### -def get_list_of_charges_to_try(prot: object, debug: int=0) -> list: - ### Determines which charges are worth trying for a given specie and a protonation state - lchar = [] - spec = prot.parent - - #### Educated Guess on the Maximum Charge one can expect from the spec[1] - if spec.subtype == "molecule" and (not spec.iscomplex and not spec.has_IA_IIA): - maxcharge = 3 - elif spec.subtype == "ligand": - count_non_connected_O = 0 - for a in spec.atoms: - if a.label == "O" and a.mconnec == 0 and a.connec == 1: - count_non_connected_O += 1 - if not spec.is_haptic: - if not hasattr(spec,"denticity"): spec.get_denticity() - maxcharge = spec.denticity + count_non_connected_O - prot.added_atoms - else: - maxcharge = 2 - - # Cases of same atom being connected to more than one metal - if any(a.mconnec >= 2 for a in spec.atoms): - pass - else: - if maxcharge > spec.natoms: - maxcharge = spec.natoms - if maxcharge > 4: - maxcharge = 4 ## At most, we try range(-4,5,1) - if maxcharge < 2: - maxcharge = 2 ## At leaest, we try range(-2,3,1) - - if (not spec.is_nitrosyl) and prot.added_atoms > 0 : - maxcharge = 0 - - if debug >= 2: print(f"MAXCHARGE: maxcharge set at {maxcharge}") - - # Defines list of charges that will try - for magn in range(0, int(maxcharge + 1)): - if magn == 0: signlist = [1] - elif magn != 0: signlist = [-1, 1] - for sign in signlist: - ich = int(magn * sign) - lchar.append(ich) - return lchar - -####################################################### -def eval_chargelist(atom_charges: list, debug: int=0) -> Tuple[np.ndarray, np.ndarray, bool]: - abstotal = np.abs(np.sum(atom_charges)) - abs_atlist = [] - for a in atom_charges: - abs_atlist.append(abs(a)) - abs_atcharge = np.sum(abs_atlist) - if any(b > 0 for b in atom_charges) and any(b < 0 for b in atom_charges): - zwitt = True - else: - zwitt = False - return abstotal, abs_atcharge, zwitt - -####################################################### -def check_carbenes(atom: object, ligand: object, debug: int=0) -> Tuple[bool, str, int, int]: - # Function that determines whether a given connected "atom" of a "ligand" of a "molecule" is a carbene - # This function is in progress. Ideally, should be able to identify Fischer, Schrock and N-Heterocyclic Carbenes - # The former two cases probably require rules that involve other ligands in the molecule, hence why the "molecule" is provided - #:return iscarbene: Boolean variable. True/False - #:return element: Type of element that will be later added in the "add_atom" function below - #:return addedlist: List of integers which track in which atom of the ligand we're adding "elements" - #:return metal_electrons: List of integers, similar to addedlist, which track in which atom of the ligand we're counting on metal_electrons. - - # about Metal electrons: This variable is a way to contemplate cases in which the metal atom is actually contributing with electrons to the metal-ligand bond. - # about Metal electrons: In reality, I'm not sure about how to use it correctly, and now is used without much chemical sense - - iscarbene = False - element = "H" - addedlist = 0 - metal_electrons = 0 - - # Initial attempt with Carbenes, but they are much more complex - # Looks for Neighbouring N atoms - list_of_coord_atoms = [] - adj_indices = [adj for adj in atom.adjacency] # Get the adjacency of the atom - metal_adj_indices = [m_adj for m_adj in atom.metal_adjacency] # Get the adjacency of the atom with respect to the metal - - for adj in adj_indices: - if adj in metal_adj_indices: - # If the atom is connected to the metal, we do not consider it - continue - list_of_coord_atoms.append(ligand.get_parent("molecule").labels[adj]) - #numN = list_of_coord_atoms.count("N") - print(f"CHECK_CARBENES: {atom.label} has {list_of_coord_atoms}. Checking for carbenes") - # if numN == 2: # it is an N-Heterocyclic carbenes - # iscarbene = True - # element = "H" - # addedlist = 1 - # el - if len(list_of_coord_atoms) == 2 : - iscarbene = True - element = "H" - addedlist = 2 - metal_electrons = 2 - return iscarbene, element, addedlist, metal_electrons - -####################################################### -def get_metal_poscharges(metal: object, debug: int=0) -> list: - ## Retrieves plausible oxidation states for a given metal - # Data Obtained from: - # Venkataraman, D.; Du, Y.; Wilson, S. R.; Hirsch, K. A.; Zhang, P.; Moore, J. S. A - # Coordination Geometry Table of the D-Block Elements and Their Ions. - # J. Chem. Educ. 1997, 74, 915. - - # metalloids = ["B", "Si", "Ge", "As", "Sb", "Te", "Po"] - mol = metal.get_parent("molecule") - if not hasattr(mol,"is_haptic"): mol.get_hapticity() - atnum = elemdatabase.elementnr[metal.label] - - at_charge = defaultdict(list) - - # Alkali Metals - at_charge[3] = [1] # Li - at_charge[11] = [1] # Na - at_charge[19] = [1] # K - at_charge[37] = [1] # Rb - at_charge[55] = [1] # Cs - at_charge[87] = [1] # Fr - - # Alkaline Earth Metals - at_charge[4] = [2] # Be - at_charge[12] = [2] # Mg - at_charge[20] = [2] # Ca - at_charge[38] = [2] # Sr - at_charge[56] = [2] # Ba - at_charge[88] = [2] # Ra - - # 1st-row transition metals. - at_charge[21] = [3] # Sc - at_charge[22] = [2, 3, 4] # Ti - at_charge[23] = [1, 2, 3, 4, 5] # V - at_charge[24] = [0, 2, 3] # Cr ; including 5 leads to worse results - at_charge[25] = [1, 2, 3] # Mn - at_charge[26] = [2, 3] # Fe - at_charge[27] = [1, 2, 3] # Co - at_charge[28] = [2, 3] # Ni - at_charge[29] = [1, 2] # Cu - at_charge[30] = [2] # Zn - # 2nd-row transition metals. - at_charge[39] = [3] # Y - at_charge[40] = [2, 3, 4] # Zr - at_charge[41] = [1, 3, 4, 5] # Nb - at_charge[42] = [0, 2, 4, 5, 6] # Mo - at_charge[43] = [1, 2, 3, 4, 5] # Tc - at_charge[44] = [2, 3] # Ru - at_charge[45] = [1, 2, 3] # Rh - at_charge[46] = [0, 2] # Pd - at_charge[47] = [1] # Ag - at_charge[48] = [2] # Cd - # 3rd-row transition metals. - at_charge[72] = [4] # Hf - at_charge[73] = [2, 3, 4, 5] # Ta - at_charge[74] = [0, 2, 4, 5, 6] # W - at_charge[75] = [1, 2, 3, 4, 5, 7] # Re - at_charge[76] = [2, 3, 4, 5, 6] # Os - at_charge[77] = [1, 3] # Ir - at_charge[78] = [0, 2, 4] # Pt - at_charge[79] = [1, 3] # Au - at_charge[80] = [2] # Hg - - # post-transition metals - at_charge[13] = [1, 3] # Al - at_charge[31] = [3] # Ga - at_charge[32] = [2, 4] # Ge - at_charge[49] = [3] # In - at_charge[50] = [2, 4] # Sn - at_charge[81] = [1, 3] # Tl - at_charge[82] = [2, 4] # Pb - at_charge[83] = [3] # Bi - - # Lanthanides (atomic numbers 57 to 71) - at_charge[57] = [3] # La - at_charge[58] = [3, 4] # Ce - at_charge[59] = [3] # Pr - at_charge[60] = [2, 3] # Nd - at_charge[61] = [3] # Pm - at_charge[62] = [2, 3] # Sm - at_charge[63] = [3] # Eu (some +2) - at_charge[64] = [3] # Gd - at_charge[65] = [3] # Tb (rare +4 in complexes) - at_charge[66] = [3] # Dy - at_charge[67] = [3] # Ho - at_charge[68] = [3] # Er - at_charge[69] = [3] # Tm - at_charge[70] = [2, 3] # Yb - at_charge[71] = [3] # Lu - - # Actinides (atomic numbers 89 to 103) - at_charge[89] = [3] # Ac - at_charge[90] = [3, 4] # Th - at_charge[91] = [3, 4, 5] # Pa - at_charge[92] = [3, 4, 5, 6] # U - at_charge[93] = [3, 4, 5, 6] # Np - at_charge[94] = [3, 4, 5, 6] # Pu - at_charge[95] = [3, 4, 5, 6] # Am - at_charge[96] = [3, 4] # Cm - at_charge[97] = [3] # Bk - at_charge[98] = [3] # Cf - at_charge[99] = [3] # Es - at_charge[100] = [2, 3] # Fm - at_charge[101] = [2, 3] # Md - at_charge[102] = [2, 3] # No - at_charge[103] = [3] # Lr - - - poscharges = at_charge[atnum] - - list_of_zero_OS = ["Fe", "Ni", "Ru"] - if metal.label in list_of_zero_OS: - # In some cases, it adds 0 as possible metal charge - # -if it has CO ligands - if any((lig.natoms == 2 and "C" in lig.labels and "O" in lig.labels) for lig in mol.ligands): - if int(0) not in poscharges: - poscharges.append(int(0)) - # -if it has any ligand with hapticity - #if any((lig.is_haptic) for lig in mol.ligands): - if mol.is_haptic and int(0) not in poscharges: - poscharges.append(int(0)) - - return poscharges - -####################################################### -def balance_charge(unique_indices: list, unique_species: list, debug: int=0) -> list: - - # Function to Select the Best Charge Distribution for the unique species. - # It accepts multiple charge options for each molecule/ligand/metal (poscharge, etc...). - # NO: It should select the best one depending on whether the final metal charge makes sense or not. - # In some cases, can accept metal oxidation state = 0, if no other makes sense - - iserror = False - iterlist = [] - for idx, spec in enumerate(unique_species): - toadd = [] - if spec.subtype == "metal": - for tch in spec.possible_cs: - toadd.append(tch) - else : - if len(spec.possible_cs) == 1: - toadd.append(spec.possible_cs[0].corr_total_charge) - elif len(spec.possible_cs) > 1: - for tch in spec.possible_cs: - toadd.append(tch.corr_total_charge) - elif len(spec.possible_cs) == 0: - iserror = True - toadd.append("-") - iterlist.append(toadd) - - if debug >= 2: print("BALANCE: iterlist", iterlist) - if debug >= 2: print("BALANCE: unique_indices", unique_indices) - - if not iserror: - tmpdistr = list(itertools.product(*iterlist)) - if debug >= 2: print("BALANCE: tmpdistr", tmpdistr) - - # Expands tmpdistr to include same species, generating alldistr: - alldistr = [] - final_charges= [] - for distr in tmpdistr: - tmp = [] - for u in unique_indices: - tmp.append(distr[u]) - alldistr.append(tmp) - if debug >= 2: print("BALANCE: alldistr added:", tmp) - - final_charge_distribution = [] - for idx, d in enumerate(alldistr): - if debug >= 2: print(f"BALANCE: distribution={d}") - charges_sum = np.sum(d) - if charges_sum == 0: - final_charge_distribution.append(d) - final_charges.append(distr) - elif iserror: - if debug >= 1: print("Error found in BALANCE: one species has no possible charges") - final_charge_distribution = [] - - return final_charge_distribution, final_charges - -####################################################### -def prepare_unresolved(unique_indices: list, unique_species: list, distributions: list, debug: int=0): - list_molecules = [] - list_indices = [] - list_options = [] - if debug >= 2: print("") - - # spec_tuple[0] is the subtype of the specie - # spec_tuple[1] is the specie object - # spec_tuple[2] is the molecule object to which the specie belongs - for idx, spec in enumerate(unique_species): - if spec.subtype == "metal": - position = [jdx for jdx, uni in enumerate(unique_indices) if uni == idx] - if debug >= 2: print(f"UNRESOLVED: found metal in positions={position} of the distribution") - values = [distr[position[0]] for distr in distributions] - options = list(set(values)) - if debug >= 2: print(f"UNRESOLVED: list of values={values}\n") - if debug >= 2: print(f"UNRESOLVED: options={options}\n") - - if len(options) > 1: - list_molecules.append(spec) - list_indices.append(spec.get_parent_index("molecule")) - list_options.append(options) - - # TODO: we use metal OS predicted by ML to select the best charge distribution - - return list_molecules, list_indices, list_options - -####################################################### -def set_final_charge (specie, unique_indices, unique_species, final_charge_distribution, debug): - - spec = unique_species[specie.unique_index] - indices = [index for index, value in enumerate(unique_indices) if value == specie.unique_index] - final_charge = [final_charge_distribution[i] for i in indices][0] - if debug > 1: print("SET_FINAL_CHARGE:", spec, indices, final_charge) - - if (specie.subtype == "molecule" and not specie.iscomplex and not specie.has_IA_IIA) or (specie.subtype == "ligand"): - formula = specie.formula - charge_list = [cs.corr_total_charge for cs in spec.possible_cs] - - elif specie.subtype == "metal": - formula = specie.label - charge_list = spec.possible_cs - - if final_charge in charge_list: - if debug > 1: print(f"SET_FINAL_CHARGE: Target charge {final_charge} of {formula} exists in {charge_list}." ) - else: - if debug >= 1: print(f"SET_FINAL_CHARGE: ERROR!! Target charge {final_charge} of {formula} does not exist in {charge_list}." ) - return None - - if (specie.subtype == "molecule" and not specie.iscomplex and not specie.has_IA_IIA) or (specie.subtype == "ligand"): - if debug > 1: print("SET_FINAL_CHARGE:", specie.formula) - specie.get_protonation_states(debug=debug) - specie.get_possible_cs(debug=debug) - formula = specie.formula - charge_list = [cs.corr_total_charge for cs in specie.possible_cs] - - if final_charge in charge_list: - if debug > 1: print(f"SET_FINAL_CHARGE: Target charge {final_charge} of {formula} exists in {charge_list}.") - idx = charge_list.index(final_charge) - cs = specie.possible_cs[idx] - specie.set_charges(cs.corr_total_charge, cs.corr_atom_charges, cs.smiles, cs.rdkit_obj) - else: - if debug >= 1: print(f"SET_FINAL_CHARGE: ERROR!! Target charge {final_charge} of {formula} does not exist in {charge_list}." ) - return None - - elif specie.subtype == "metal": - if debug > 1: print("SET_FINAL_CHARGE:", specie.label) - specie.get_possible_cs(debug=debug) - formula = specie.label - charge_list = spec.possible_cs - - if final_charge in charge_list: - if debug > 1: print(f"SET_FINAL_CHARGE: Target charge {final_charge} of {formula} exists in {charge_list}." ) - idx = charge_list.index(final_charge) - cs = specie.possible_cs[idx] - specie.set_charge(cs) - else: - if debug >= 1: print(f"SET_FINAL_CHARGE: ERROR!! Target charge {final_charge} of {formula} does not exist in {charge_list}." ) - return None -####################################################### -def prepare_mols (moleclist: list, unique_indices: list, unique_species: list, final_charge_distribution: list, debug: int=0): - count = 0 - for mol in moleclist: - if not mol.iscomplex and not mol.has_IA_IIA: - set_final_charge(mol, unique_indices, unique_species, final_charge_distribution, debug) - count += 1 - - else: - tmp_atcharge = np.zeros((mol.natoms)) - tmp_smiles = [] - - for lig in mol.ligands: - set_final_charge(lig, unique_indices, unique_species, final_charge_distribution, debug) - count += 1 - - tmp_smiles.append(lig.smiles) - parent_indices = lig.get_parent_indices("molecule") - for kdx, a in enumerate(parent_indices): - tmp_atcharge[a] = lig.atomic_charges[kdx] - - for met in mol.metals: - set_final_charge(met, unique_indices, unique_species, final_charge_distribution, debug) - count += 1 - parent_index = met.get_parent_index("molecule") - tmp_atcharge[parent_index] = met.charge - - mol.set_charges(int(sum(tmp_atcharge)), atomic_charges=tmp_atcharge, smiles=tmp_smiles) - - if count != len(final_charge_distribution): - Warning = True - else: - Warning = False - - return moleclist, Warning - -####################################################### -def correct_smiles_ligand(ligand: object, debug: int=0) -> Tuple[str, object]: - ## Receives a ligand class object and constructs the smiles and the rdkit_obj object from scratch, using atoms and bond information - - Chem.rdmolops.SanitizeFlags.SANITIZE_NONE - #### Creates an empty editable molecule - rwlig = Chem.RWMol() - - # Adds atoms with their formal charge - for jdx, atom in enumerate(ligand.atoms): - rdkit_atom = Chem.Atom(atom.atnum) - rdkit_atom.SetFormalCharge(int(atom.charge)) - rdkit_atom.SetNoImplicit(True) - rwlig.AddAtom(rdkit_atom) - - # Sets bond information and hybridization - for jdx, atom in enumerate(ligand.atoms): - nbonds = 0 - for b in atom.bonds: - # if debug >=2 : print(b.atom1.label, b.atom2.label, b.order) - ismetal_1 = elemdatabase.elementblock[b.atom1.label] == "d" or elemdatabase.elementblock[b.atom1.label] == "f" - ismetal_2 = elemdatabase.elementblock[b.atom2.label] == "d" or elemdatabase.elementblock[b.atom2.label] == "f" - if ismetal_1 or ismetal_2: - pass - elif len(get_alkali_alkaline_earth_metal_idxs([b.atom1.label, b.atom2.label])) > 0: - pass - else: - begin_idx = b.atom1.get_parent_index("ligand") - end_idx = b.atom2.get_parent_index("ligand") - # if debug >=2: print(begin_idx, end_idx) - nbonds += 1 - if b.order== 1.0: - btype = Chem.BondType.SINGLE - elif b.order == 2.0: - btype = Chem.BondType.DOUBLE - elif b.order == 3.0: - btype = Chem.BondType.TRIPLE - elif b.order == 1.5: - btype = Chem.BondType.AROMATIC - rdkit_atom.SetIsAromatic(True) - - if begin_idx == jdx and end_idx > jdx: rwlig.AddBond(begin_idx, end_idx, btype) - - if nbonds == 1: hyb = Chem.HybridizationType.S - elif nbonds == 2: hyb = Chem.HybridizationType.SP - elif nbonds == 3: hyb = Chem.HybridizationType.SP2 - elif nbonds == 4: hyb = Chem.HybridizationType.SP3 - else: hyb = Chem.HybridizationType.UNSPECIFIED - rdkit_atom.SetHybridization(hyb) - - # Creates Molecule - temp_obj = rwlig.GetMol() - print("CORRECT_SMILES: after removing additional elements", Chem.MolToSmiles(temp_obj)) - - obj, fix_zwitterions = fix_zwitterions_in_adjacent_atoms(temp_obj, debug=debug) - print("CORRECT_SMILES: fixing the zwitterions", fix_zwitterions, Chem.MolToSmiles(obj)) - try: - Chem.SanitizeMol(obj) - Chem.DetectBondStereochemistry(obj, -1) - Chem.AssignStereochemistry(obj, flagPossibleStereoCenters=True, force=True) - Chem.AssignAtomChiralTagsFromStructure(obj, -1) - smiles = Chem.MolToSmiles(obj) - if debug >= 1: print(f"{ligand.formula=} Before correction: {ligand.smiles=} / After correction: {smiles=}") - ligand.smiles = smiles - ligand.rdkit_obj = obj - - if fix_zwitterions: - corr_atom_charges = [a.GetFormalCharge() for a in Chem.RWMol(obj).GetAtoms()] - ligand.set_charges(atomic_charges=corr_atom_charges) - - ## visulize a corrected rdkit object - # if debug >=2: - # from IPython.display import display - # from rdkit.Chem.Draw import IPythonConsole - # IPythonConsole.drawOptions.addAtomIndices = True - # IPythonConsole.molSize = 300,300 - - # print(f"{ligand.formula=} {smiles=}") - # display(mol_with_atom_index(obj)) - return True, fix_zwitterions - - except rdkit.Chem.rdchem.AtomValenceException as e: - print(f"Failed to process molecule: {e}") - return False, fix_zwitterions - -########################################################### -def fix_zwitterions_in_adjacent_atoms(mol, debug=0): - """ - Fixes zwitterionic artifacts by adjusting formal charges between adjacent atoms - with opposite charges in an RDKit molecule object. - - Parameters: - mol: Input molecule (RDKit). - debug (int): If > 0, prints debug info. - - Returns: - Chem.Mol: Corrected molecule with minimized zwitterionic character. - """ - rw_mol = Chem.RWMol(mol) - fix_zwitterions = False - for atom in rw_mol.GetAtoms(): - fcharge = atom.GetFormalCharge() - - if fcharge > 0: - atom_idx = atom.GetIdx() - atom_label = atom.GetSymbol() - neighbors = atom.GetNeighbors() - neighbor_labels = [n.GetSymbol() for n in neighbors] - neighbor_indices = [n.GetIdx() for n in neighbors] - - if debug: - print(f"\nPositive atom: {atom_label} (idx={atom_idx}, charge={fcharge})") - print(f"\tNeighbors: {list(zip(neighbor_labels, neighbor_indices))}") - - # Skip nitrosyl groups: N+ with two O neighbors - is_nitrosyl = ( - atom_label == 'N' and - len(neighbors) == 3 and - neighbor_labels.count('O') == 2 - ) - if is_nitrosyl: - if debug: - print(f"\tSkipping nitrosyl group.") - continue - - for neighbor in neighbors: - n_fcharge = neighbor.GetFormalCharge() - n_label = neighbor.GetSymbol() - neighbor_idx = neighbor.GetIdx() - - if n_fcharge < 0: - fix_zwitterions = True - if debug: - print(f"\tFound neighbor with negative charge {n_label} (idx={neighbor_idx}, charge={n_fcharge})") - - # Calculate how much to adjust by (minimum charge that can be neutralized) - diff = min(fcharge, abs(n_fcharge)) - - atom.SetFormalCharge(fcharge - diff) - neighbor.SetFormalCharge(n_fcharge + diff) - - if debug: - print(f"\tAdjusted charges: atom {atom_idx} ({fcharge} → {atom.GetFormalCharge()}), " - f"neighbor {neighbor_idx} ({n_fcharge} → {neighbor.GetFormalCharge()})") - - # Estimate radical electrons - valence_electrons = elemdatabase.valenceelectrons[n_label] - num_radicals = valence_electrons - neighbor.GetFormalCharge() - neighbor.GetDegree() - neighbor.SetNumRadicalElectrons(num_radicals) - - if debug: - print(f"\tSet radical electrons: {num_radicals} " - f"(valence: {valence_electrons}, formal charge: {neighbor.GetFormalCharge()}, directly-bonded neighbors: {neighbor.GetDegree()})") - - #Adjust bond to SINGLE if possible - bond = rw_mol.GetBondBetweenAtoms(atom_idx, neighbor_idx) - print(f"\tBond type between atom {atom_idx} and {neighbor.GetIdx()}: {bond.GetBondType()}") - if bond and bond.GetBondType() != "SINGLE": - if debug: - print(f"\tSet bond between {atom_idx} and {neighbor_idx} from {bond.GetBondType()} to SINGLE") - bond.SetBondType(Chem.BondType.SINGLE) - else: - if debug: - print(f"\tNo bond found between {atom_idx} and {neighbor_idx}") - - return rw_mol.GetMol(), fix_zwitterions - -####################################################### -def get_smiles_complex (mol: object, debug: int=0) -> Tuple[str, object]: - ## Receives a molecule class object and constructs the smiles and the rdkit_obj object from scratch, using atoms and bond information - - Chem.rdmolops.SanitizeFlags.SANITIZE_NONE - #### Creates an empty editable molecule - rwmol = Chem.RWMol() - - # Adds atoms with their formal charge - for jdx, atom in enumerate(mol.atoms): - rdkit_atom = Chem.Atom(atom.atnum) - rdkit_atom.SetFormalCharge(int(atom.charge)) - rdkit_atom.SetNoImplicit(True) - rwmol.AddAtom(rdkit_atom) - - # Sets bond information and hybridization - for jdx, atom in enumerate(mol.atoms): - nbonds = 0 - for b in atom.bonds: - begin_idx = b.atom1.get_parent_index("molecule") - end_idx = b.atom2.get_parent_index("molecule") - nbonds += 1 - if b.order== 1.0: - btype = Chem.BondType.SINGLE - elif b.order == 2.0: - btype = Chem.BondType.DOUBLE - elif b.order == 3.0: - btype = Chem.BondType.TRIPLE - elif b.order == 1.5: - btype = Chem.BondType.AROMATIC - rdkit_atom.SetIsAromatic(True) - elif b.order == 0.0: - btype = Chem.BondType.ZERO - if debug >=2: print(b.atom1.label, b.atom2.label, b.order, f"{begin_idx=} {end_idx=} {btype=}") - - if begin_idx == jdx and end_idx > jdx: - rwmol.AddBond(begin_idx, end_idx, btype) - if debug >=2: print("AddBond:", b.atom1.label, b.atom2.label, b.order, f"{begin_idx=} {end_idx=} {btype=}") - - if nbonds == 1: hyb = Chem.HybridizationType.S - elif nbonds == 2: hyb = Chem.HybridizationType.SP - elif nbonds == 3: hyb = Chem.HybridizationType.SP2 - elif nbonds == 4: hyb = Chem.HybridizationType.SP3 - else: hyb = Chem.HybridizationType.UNSPECIFIED - rdkit_atom.SetHybridization(hyb) - - # Creates Molecule - obj = rwmol.GetMol() - smiles = Chem.MolToSmiles(obj) - - # Chem.SanitizeMol(obj) - Chem.DetectBondStereochemistry(obj, -1) - Chem.AssignStereochemistry(obj, flagPossibleStereoCenters=True, force=True) - Chem.AssignAtomChiralTagsFromStructure(obj, -1) - - ## visulize a corrected rdkit object - if debug >= 1: - from IPython.display import display - from rdkit.Chem.Draw import IPythonConsole - IPythonConsole.drawOptions.addAtomIndices = True - IPythonConsole.molSize = 300,300 - - print(f"{mol.formula=} {smiles=}") - display(obj) - - return smiles, obj - -####################################################### -def reorder_protonation (prot, map, debug: int=0): - if debug > 0: print("PROTONATION.REORDER. labels:", prot.labels) - if debug > 0: print("PROTONATION.REORDER. received map:", map) - - ## for protonation states with added atoms, the reorder map will have fewer items. Correct it here - mapext = np.copy(map) - if prot.added_atoms > 0 and len(map) < len(prot.labels): - for ldx in range(0,prot.added_atoms): - mapext = np.append(mapext,len(map)+ldx) - if debug > 0: print("PROTONATION.REORDER. extended map:", mapext) - - assert len(mapext) == len(prot.labels) - assert len(map) == len(prot.addedlist) - if len(map) > 0: - reordered_labels = [prot.labels[i] for i in mapext] - reordered_coords = [prot.coords[i] for i in mapext] - reordered_addedlist = [prot.addedlist[i] for i in map] - reordered_block = [prot.block[i] for i in map] - reordered_metal_electrons = [prot.metal_electrons[i] for i in map] - reordered_elemlist = [prot.elemlist[i] for i in map] - - - reordered_protonation = protonation(reordered_labels, reordered_coords, prot.cov_factor, prot.added_atoms, - reordered_addedlist, reordered_block, reordered_metal_electrons, reordered_elemlist, - tmpsmiles=prot.tmpsmiles, o_s=prot.o_s, typ="Reordered", parent=prot.parent) - print("CREATED REORDERED PROTONATION", reordered_protonation) - - return reordered_protonation - -####################################################### -class protonation(object): - def __init__(self, labels, coord, cov_factor, added_atoms, addedlist, block, metal_electrons, elemlist, tmpsmiles=" ", o_s=int(0), typ="Local", parent: object=None): - self.labels = labels - self.coords = coord - self.natoms = len(labels) - self.formula = labels2formula(labels) - self.added_atoms = added_atoms - self.addedlist = addedlist - self.block = block - self.metal_electrons = metal_electrons - self.elemlist = elemlist - self.typ = typ - self.cov_factor = cov_factor - self.o_s = o_s - self.tmpsmiles = tmpsmiles - self.atnums = [elemdatabase.elementnr[l] for l in labels] # from xyz2mol - self.parent = parent - - self.radii = get_radii(labels) - refcell = self.parent.get_parent("reference") - geom_bond_cif = getattr(refcell, "geom_bond_cif", None) - if refcell is not None : - self.atom_site_labels_indices = [ atom.get_parent_index("reference") for atom in self.parent.atoms] - self.atom_site_labels = [refcell.atom_site_labels[idx] for idx in self.atom_site_labels_indices] - print("PROTONATION.atom_site_labels_indices", self.atom_site_labels_indices) - print("PROTONATION.atom_site_labels", self.atom_site_labels) - - if refcell is not None and getattr(refcell, "exist_cif_bond_moiety", False): - self.status, adjmat, adjnum = get_adjmatrix_from_cif_bonds(self.labels, self.coords, self.atom_site_labels, geom_bond_cif) - print("PROTONATION.get_adjmatrix_from_cif_bonds", adjmat.shape, adjnum.shape) - count = 0 - if len(self.addedlist) > 0: - for idx, add in enumerate(self.addedlist): - if add != 0: - count += 1 - added_idx = len(self.addedlist) -1 + count - print("PROTONATION.added_idx", f"{idx=} {added_idx=}") - adjmat[idx, added_idx] += 1 - adjmat[added_idx, idx] += 1 - adjnum[idx] += 1 - adjnum[added_idx] += 1 - - self.adjmat = adjmat - self.adjnum = adjnum - else: - self.status, self.adjmat, self.adjnum = get_adjmatrix(self.labels, self.coords, self.cov_factor, self.radii) - - def reorder(self, map, debug: int=0): - if debug > 0: print("PROTONATION.REORDER. labels:", self.labels) - if debug > 0: print("PROTONATION.REORDER. received map:", map) - - ## for protonation states with added atoms, the reorder map will have fewer items. Correct it here - mapext = np.copy(map) - if self.added_atoms > 0 and len(map) < len(self.labels): - for ldx in range(0, self.added_atoms): - mapext = np.append(mapext,len(map)+ldx) - if debug > 0: print("PROTONATION.REORDER. extended map:", mapext) - print("PROTONATION.REORDER. extended map:", mapext, len(mapext)) - print("PROTONATION.REORDER. map:", map, len(map)) - print("PROTONATION.REORDER. labels:", self.labels, len(self.labels)) - print("PROTONATION.REORDER. addedlist:", self.addedlist, len(self.addedlist)) - assert len(mapext) == len(self.labels) - assert len(map) == len(self.addedlist) - if len(map) > 0: - self.labels = list(np.array(self.labels)[mapext]) - self.coords = list(np.array(self.coords)[mapext]) - self.atnums = list(np.array(self.atnums)[mapext]) - self.radii = list(np.array(self.radii)[mapext]) - if hasattr(self, "atom_site_labels"): - self.atom_site_labels = list(np.array(self.atom_site_labels)[map]) - self.addedlist = list(np.array(self.addedlist)[map]) - self.block = list(np.array(self.block)[map]) - self.metal_electrons = list(np.array(self.metal_electrons)[map]) - self.elemlist = list(np.array(self.elemlist)[map]) - - self.typ = "Reordered" - refcell = self.parent.get_parent("reference") - geom_bond_cif = getattr(refcell, "geom_bond_cif", None) - if refcell is not None and getattr(refcell, "exist_cif_bond_moiety", False): - self.status, adjmat, adjnum = get_adjmatrix_from_cif_bonds(self.labels, self.coords, self.atom_site_labels, geom_bond_cif) - print("PROTONATION.get_adjmatrix_from_cif_bonds", adjmat.shape, adjnum.shape) - count = 0 - if len(self.addedlist) > 0: - for idx, add in enumerate(self.addedlist): - if add != 0: - count += 1 - added_idx = len(self.addedlist) -1 + count - print("PROTONATION.added_idx", f"{idx=} {added_idx=}") - adjmat[idx, added_idx] += 1 - adjmat[added_idx, idx] += 1 - adjnum[idx] += 1 - adjnum[added_idx] += 1 - - self.adjmat = adjmat - self.adjnum = adjnum - else: - self.status, self.adjmat, self.adjnum = get_adjmatrix(self.labels, self.coords, self.cov_factor, self.radii) - return self - - def __repr__(self): - to_print = "" - to_print += f'------------- Cell2mol Protonation ----------------\n' - to_print += f' Status = {self.status}\n' - to_print += f' Labels = {self.labels}\n' - if hasattr(self, "atom_site_labels"): - to_print += f' Atom site labels = {self.atom_site_labels}\n' - to_print += f' Type = {self.typ}\n' - to_print += f' Atoms added in positions = {self.addedlist}\n' - to_print += f' Atoms blocked (no atoms added) = {self.block}\n' - to_print += f'---------------------------------------------------\n' - return to_print - - - - -####################################################### -class charge_state(object): - def __init__(self, status, uncorr_total_charge, uncorr_atom_charges, rdkit_obj: object, smiles: str, charge_tried: int, allow: bool, protonation: object): - self.status = status - self.uncorr_total_charge = uncorr_total_charge - self.uncorr_atom_charges = uncorr_atom_charges - self.rdkit_obj = rdkit_obj - self.smiles = smiles - self.charge_tried = charge_tried - self.allow = allow - self.uncorr_abstotal, self.uncorr_abs_atcharge, self.uncorr_zwitt = eval_chargelist(uncorr_atom_charges) - self.protonation = protonation - - if uncorr_total_charge == charge_tried: self.coincide = True - else: self.coincide = False - - self.addedlist = protonation.addedlist - self.metal_electrons = protonation.metal_electrons - self.elemlist = protonation.elemlist - self.corr_total_charge = int(0) - self.corr_atom_charges = [] - - # Corrects the Charge of atoms with addedH - count = 0 - if len(self.addedlist) > 0: - for idx, add in enumerate(self.addedlist): # Iterates over the original number of ligand atoms, thus without the added H - if add != 0: - count += 1 - corrected = self.uncorr_atom_charges[idx] - self.addedlist[idx] + self.metal_electrons[idx] - self.uncorr_atom_charges[len(self.addedlist)-1+count] - self.corr_atom_charges.append(corrected) - # last term corrects for cases in which a charge has been assigned to the added atom - else: - self.corr_atom_charges.append(self.uncorr_atom_charges[idx]) - self.corr_total_charge = int(np.sum(self.corr_atom_charges)) - else: - self.corr_total_charge = self.uncorr_total_charge - self.corr_atom_charges = self.uncorr_atom_charges.copy() - - self.corr_abstotal, self.corr_abs_atcharge, self.corr_zwitt = eval_chargelist(self.corr_atom_charges) - - def __repr__(self): - to_print = "" - to_print += f'------------- Cell2mol Charge State ---------------\n' - to_print += f' Status = {self.status}\n' - to_print += f' Smiles = {self.smiles}\n' - to_print += f' Charge Tried = {self.charge_tried}\n' - to_print += f' Uncorrected Total Charge = {self.uncorr_total_charge}\n' - to_print += f' Corrected Total Charge = {self.corr_total_charge}\n' - to_print += f' Corrected Absolute Total Charge = {self.corr_abs_atcharge}\n' - to_print += f' Corrected Is Zwitterion? = {self.corr_zwitt}\n' - to_print += f'---------------------------------------------------\n' - return to_print - - -####################################################### diff --git a/cell2mol/cif2cell_ESPInterfaces.py b/cell2mol/cif2cell_ESPInterfaces.py deleted file mode 100644 index b43ca9037..000000000 --- a/cell2mol/cif2cell_ESPInterfaces.py +++ /dev/null @@ -1,3805 +0,0 @@ -# Copyright 2010 Torbjorn Bjorkman -# This file is part of cif2cell -# -# cif2cell is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# cif2cell is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with cif2cell. If not, see . -# -# ****************************************************************************************** -# Description: Interfaces for a number of electronic structure programs. Currently only -# reads CIF and outputs to the ESP's. Supported programs are: ABINIT, ATAT, -# CASTEP, CPMD, Crystal09, Elk, EMTO, Exciting, Fleur, Hutsepot, NCOL, -# Quantum Espresso, RSPt, Siesta, VASP, xyz -# -# Author: Torbjorn Bjorkman -# ORCID: 0000-0002-1154-9846 -# ****************************************************************************************** -import os -import math -import string -from math import pi, sin, cos -import sys -from re import search - -from cell2mol.cif2cell_utils import ( - Vector, - LatticeMatrix, - mvmult3, - deletenewline, - AtomSite, - SetupError, - det3, - minv3, - third, - mmmult3, -) -from cell2mol.elementdata import ElementData -from cell2mol.cif2cell_spacegroupdata import Number2AP - -__all__ = ( - "GeometryOutputFile", - "ATATFile", - "HUTSEPOTFile", - "ASEFile", - "CFGFile", - "COOFile", - "LAMMPSFile", - "XYZFile", - "OldNCOLFile", - "BSTRFile", - "CellgenFile", - "SymtFile", - "SymtFile2", - "Crystal09File", - "SpacegroupFile", - "ElkFile", - "ExcitingFile", - "FleurFile", - "CASTEPFile", - "PWSCFFile", - "CP2KFile", - "CPMDFile", - "SiestaFile", - "ABINITFile", - "AIMSFile", - "MCSQSFile", - "POSCARFile", - "POTCARFile", - "KPOINTSFile", - "INCARFile", - "KFCDFile", - "KGRNFile", - "ShapeFile", - "BMDLFile", - "KSTRFile", - "XBandSysFile", - "SPCFile", - "MOPACFile", -) - -################################################################################################ -ed = ElementData() -suspiciouslist = set( - [ - "Cr", - "Mn", - "Fe", - "Co", - "Ni", - "Ce", - "Pr", - "Nd", - "Pm", - "Sm", - "Eu", - "Gd", - "Tb", - "Dy", - "Ho", - "Er", - "Tm", - "Th", - "Pa", - "U", - "Np", - "Pu", - ] -) -initialmoments = { - "Cr": 3, - "Mn": 3, - "Fe": 3, - "Co": 3, - "Ni": 1, - "Ce": 1, - "Pr": 2, - "Nd": 3, - "Pm": 4, - "Sm": 5, - "Eu": 6, - "Gd": 7, - "Tb": 8, - "Dy": 9, - "Ho": 10, - "Er": 11, - "Tm": 12, - "Th": 1, - "Pa": 2, - "U": 3, - "Np": 4, - "Pu": 5, -} - -################################################################################################ - - -class GeometryOutputFile: - """ - Parent class for electronic struture code files generated from geometrical information. - A CrystalStructure object and a documentation string are required input. - """ - - def __init__(self, crystalstructure, string): - self.cell = crystalstructure - self.docstring = string - - -################################################################################################ -# ATAT FILE - - -class ATATFile(GeometryOutputFile): - """ - Class for storing the geometrical data needed for outputting an ATAT input file - and the method __str__ that outputs the contents of the file as a string. - """ - - def __init__(self, crystalstructure, string): - GeometryOutputFile.__init__(self, crystalstructure, string) - # Document string on first line after '//' - self.programdoc = string.rstrip("\n") - # set up species list - tmp = set([]) - for a in self.cell.atomdata: - for b in a: - tmp.add(b.spcstring()) - self.species = list(tmp) - # make sure the docstring goes on one line - self.cell.newunit("bohr") - - def __str__(self): - filestring = ( - str(self.cell.a) - + " " - + str(self.cell.b) - + " " - + str(self.cell.c) - + " " - + str(self.cell.alpha) - + " " - + str(self.cell.beta) - + " " - + str(self.cell.gamma) - + "\n" - ) - filestring += str(self.cell.lattrans) - for a in self.cell.atomdata: - for b in a: - filestring += str(b.position) - if b.alloy(): - for k, v in b.species.items(): - filestring += k + "=" + str(v) + "," - filestring = filestring.rstrip(",") + "\n" - else: - filestring += " " + b.spcstring(separator=",") + "\n" - return filestring - - -################################################################################################ -# HUTSEPOT FILE - - -class HUTSEPOTFile(GeometryOutputFile): - """ - Class for storing the geometrical data needed for outputting a hutsepot input file - and the method __str__ that outputs the contents of the file as a string. - """ - - def __init__(self, crystalstructure, string): - GeometryOutputFile.__init__(self, crystalstructure, string) - # Document string on first line after '//' - self.programdoc = string.rstrip("\n") - # set up species list - tmp = set([]) - for a in self.cell.atomdata: - for b in a: - tmp.add(b.spcstring()) - self.species = list(tmp) - # make sure the docstring goes on one line - self.cell.newunit("bohr") - - def __str__(self): - streck = "-------------------------------------------------------------------------------" - filestring = streck + "\n" - filestring += "------------------------- Generated by cif2cell -------------------------------\n" - filestring = streck + "\n" - t = self.cell.lengthscale - filestring += "3D unit cell alat=%18.12f blat=%18.12f clat=%18.12f\n" % ( - t, - t, - t, - ) - filestring += ( - " rb=" + str(self.cell.latticevectors[0].scalmult(t)) + "ascale=1.0\n" - ) - filestring += ( - " " + str(self.cell.latticevectors[1].scalmult(t)) + "bscale=1.0\n" - ) - filestring += ( - " " + str(self.cell.latticevectors[2].scalmult(t)) + "cscale=1.0\n" - ) - # positions - filestring += "-------------------------------------------------------------------------------\n" - filestring += "------------------------------- atomic positions ------------------------------\n" - filestring += "-------------------------------------------------------------------------------\n" - positionstring = "" - species = 0 - atom = 0 - for sp in self.species: - nr = 0 - species += 1 - for a in self.cell.atomdata: - for b in a: - if b.spcstring() == sp: - atom += 1 - nr += 1 - p = Vector( - mvmult3( - self.cell.latticevectors, - b.position.scalmult(self.cell.lengthscale), - ) - ) - positionstring += ( - str(species) - + "." - + b.spcstring() - + "_" - + str(nr) - + " type=%i" % (atom) - + " nat=60 tau=" - + str(p) - ) - positionstring += "\n" - filestring += positionstring - filestring += "-------------------------------------------------------------------------------\n" - filestring += "---------------------------- atomic configurations ----------------------------\n" - filestring += "-------------------------------------------------------------------------------\n" - species = 0 - for sp in self.species: - species += 1 - filestring += str(species) + ". " + ed.hutsepotelements[sp] + "\n" - filestring += "-------------------------------------------------------------------------------\n" - filestring += "------------------------------- atomic options --------------------------------\n" - filestring += "-------------------------------------------------------------------------------\n" - species = 0 - atom = 0 - for sp in self.species: - species += 1 - for a in self.cell.atomdata: - for b in a: - if b.spcstring() == sp: - atom += 1 - filestring += ( - str(species) + ". atom=" + sp + " type=" + str(atom) - ) - filestring += ( - " fix=F lmax=3 lmaxv=0 conc=1.0 mtz=T sort=" - + str(atom) - + "\n" - ) - filestring += "-------------------------------------------------------------------------------\n" - filestring += "--------------------------------- potentials ----------------------------------\n" - filestring += "-------------------------------------------------------------------------------\n" - species = 0 - atom = 0 - for sp in self.species: - species += 1 - nr = 0 - for a in self.cell.atomdata: - for b in a: - if b.spcstring() == sp: - atom += 1 - nr += 1 - filestring += str(species) + ". type=" + str(atom) - filestring += ( - " np=1001 r1=1.0E-05 rnp=-2 pfile=" - + sp - + str(nr) - + ".pot\n" - ) - filestring += "-------------------------------------------------------------------------------\n" - return filestring - - -################################################################################################ -# ASE FILE - - -class ASEFile(GeometryOutputFile): - """ - Class for storing the geometrical data needed for outputting data for ASE - and the method __str__ that outputs the contents of the file as a string of - python code. - """ - - def __init__(self, crystalstructure, docstring): - GeometryOutputFile.__init__(self, crystalstructure, docstring) - # Variables - self.cartesian = True # Cartesian coordinates? - # Make sure the docstring has comment form - self.docstring = self.docstring.rstrip("\n") - tmpstrings = self.docstring.split("\n") - self.docstring = "" - for string in tmpstrings: - string = string.lstrip("#") - string = "#" + string + "\n" - self.docstring += string - # set up species list - tmp = set([]) - for a in self.cell.atomdata: - for b in a: - tmp.add(b.spcstring()) - self.species = list(tmp) - - def __str__(self): - filestring = "from ase import *\n\n" - # Cartesian or lattice coordinates? - if self.cartesian: - transmtx = [] - for i in range(3): - transmtx.append([]) - for j in range(3): - transmtx[i].append( - self.cell.latticevectors[i][j] * self.cell.lengthscale - ) - else: - transmtx = [[1, 0, 0], [0, 1, 0], [0, 0, 1]] - # positions and number of species - nspcs = [] - positionstring = "" - for sp in self.species: - nsp = 0 - for a in self.cell.atomdata: - for b in a: - if b.spcstring() == sp: - nsp += 1 - p = Vector(mvmult3(transmtx, b.position)) - positionstring += "%11f, %11f, %11f),\n (" % ( - p[0], - p[1], - p[2], - ) - nspcs.append(nsp) - positionstring = positionstring.rstrip("\n (,") + "],\n" - - # Atoms object - filestring += "atoms = Atoms(" - # Species - for i in range(len(self.species)): - filestring += ( - "['" + self.species[i] + "' for i in range(" + str(nspcs[i]) + ")]+" - ) - filestring = filestring.rstrip("+") + ",\n" - # Positions - filestring += " [(" - filestring += positionstring - # Boundary conditions - filestring += " pbc = (True,True,True))\n" - # Set lattice vectors - filestring += "atoms.set_cell([[" - for i in range(3): - for j in range(3): - filestring += "%12f, " % ( - self.cell.latticevectors[i][j] * self.cell.lengthscale - ) - filestring = filestring.rstrip(", ") + "],\n [" - filestring = filestring.rstrip(",[ ]\n") + "]],\n" - filestring += " scale_atoms = %s)\n" % str(not self.cartesian) - - return filestring - - -################################################################################################ -# CFG FILE - - -class CFGFile(GeometryOutputFile): - """ - Class for storing the geometrical data needed for outputting a .cfg file - and the method __str__ that outputs the contents of the .coo file as a string. - """ - - def __init__(self, crystalstructure, string): - GeometryOutputFile.__init__(self, crystalstructure, string) - # Make sure the docstring has comment form - self.docstring = self.docstring.rstrip("\n") - tmpstrings = self.docstring.split("\n") - self.docstring = "" - for string in tmpstrings: - string = string.lstrip("#") - string = "#" + string + "\n" - self.docstring += string - - def __str__(self): - # Set up atom list for printing. - tmplist = list(self.cell.atomset) - atomlist = [] - for a in tmplist: - if a.alloy(): - for sp, occ in a.species.items(): - atomlist.append( - AtomSite( - position=a.position, - species={sp: occ}, - charges={sp: a.charges[sp]}, - ) - ) - else: - atomlist.append(a) - atomlist.sort( - key=lambda x: max([ed.elementnr[sp] for sp in x.species]), reverse=True - ) - prevsp = "" - natoms = len(atomlist) - # Make string - filestring = self.docstring - filestring += "Number of particles = %i \n" % (natoms) - filestring += "A = 1.0 Angstrom\n" - filestring += "H0(1,1) = %f A\n" % ( - self.cell.lengthscale * self.cell.latticevectors[0][0] - ) - filestring += "H0(1,2) = %f A\n" % ( - self.cell.lengthscale * self.cell.latticevectors[0][1] - ) - filestring += "H0(1,3) = %f A\n" % ( - self.cell.lengthscale * self.cell.latticevectors[0][2] - ) - filestring += "H0(2,1) = %f A\n" % ( - self.cell.lengthscale * self.cell.latticevectors[1][0] - ) - filestring += "H0(2,2) = %f A\n" % ( - self.cell.lengthscale * self.cell.latticevectors[1][1] - ) - filestring += "H0(2,3) = %f A\n" % ( - self.cell.lengthscale * self.cell.latticevectors[1][2] - ) - filestring += "H0(3,1) = %f A\n" % ( - self.cell.lengthscale * self.cell.latticevectors[2][0] - ) - filestring += "H0(3,2) = %f A\n" % ( - self.cell.lengthscale * self.cell.latticevectors[2][1] - ) - filestring += "H0(3,3) = %f A\n" % ( - self.cell.lengthscale * self.cell.latticevectors[2][2] - ) - filestring += ".NO_VELOCITY.\n" - # Cut the fancy stuff for now, stick with just the positions - ## filestring += "entry_count = 3\n" - filestring += "entry_count = 6\n" - for a in atomlist: - for sp, occ in a.species.items(): - if prevsp != sp: - filestring += "%i\n" % (int(round(ed.elementweight[sp]))) - filestring += sp + "\n" - prevsp = sp - # Debye-Waller factor, QSTEM prescription - DW = 0.45 * ed.elementnr["Si"] / ed.elementnr[sp] - filestring += ( - str(a.position) - + " %f " % (DW) - + " %f " % (occ) - + " %f\n" % (a.charges[sp]) - ) - ## filestring += str(a.position)+"\n" - return filestring - - -################################################################################################ -# COO FILE - - -class COOFile(GeometryOutputFile): - """ - Class for storing the geometrical data needed for outputting a .coo file - and the method __str__ that outputs the contents of the .coo file as a string. - """ - - def __init__(self, crystalstructure, string): - GeometryOutputFile.__init__(self, crystalstructure, string) - # Document string on first line after '//' - self.programdoc = string.rstrip("\n") - - def __str__(self): - filestring = "//" + self.programdoc + "\n" - a = self.cell.latticevectors[0].length() * self.cell.lengthscale - b = self.cell.latticevectors[1].length() * self.cell.lengthscale - c = self.cell.latticevectors[2].length() * self.cell.lengthscale - alpha = ( - abs(self.cell.latticevectors[1].angle(self.cell.latticevectors[2])) - * 180 - / pi - ) - beta = ( - abs(self.cell.latticevectors[2].angle(self.cell.latticevectors[0])) - * 180 - / pi - ) - gamma = ( - abs(self.cell.latticevectors[0].angle(self.cell.latticevectors[1])) - * 180 - / pi - ) - filestring += " %10.7f %10.7f %10.7f" % (a, b, c) - filestring += " %10.7f %10.7f %10.7f %i\n" % ( - alpha, - beta, - gamma, - len(self.cell.atomset), - ) - for a in self.cell.atomdata: - for b in a: - filestring += str(b.position) + " %3i 0.500 0.000 1.000\n" % ( - ed.elementnr[b.spcstring()] - ) - return filestring - - -################################################################################################ -# LAMMPS FILE - - -class LAMMPSFile(GeometryOutputFile): - """ - Class for storing the geometrical data needed for outputting an .data LAMMPS file - and the method __str__ that outputs the contents of the .data file as a string. - """ - - def __init__(self, crystalstructure, string): - GeometryOutputFile.__init__(self, crystalstructure, string) - # To be put on the second line - self.programdoc = "" - - def __str__(self): - filestring = "" - filestring += "#" + self.docstring + "\n\n" - filestring += "%i atoms\n" % sum([len(v) for v in self.cell.atomdata]) - atomTypes = {} - nextAtomTypeId = 1 - - for a in self.cell.atomdata: - for b in a: - atomType = str(b).split()[0] - if not atomType in atomTypes: - atomTypes[atomType] = nextAtomTypeId - nextAtomTypeId += 1 - filestring += "%i atom types\n\n" % len(atomTypes) - - if self.cell.latticevectors[0][1] != 0: - theta = math.atan2( - -self.cell.latticevectors[0][1], self.cell.latticevectors[0][0] - ) - c = cos(theta) - s = sin(theta) - R = LatticeMatrix([[c, s, 0], [-s, c, 0], [0, 0, 1]]) - self.cell.latticevectors[0] = Vector( - mvmult3(R, self.cell.latticevectors[0]) - ) - self.cell.latticevectors[1] = Vector( - mvmult3(R, self.cell.latticevectors[1]) - ) - self.cell.latticevectors[2] = Vector( - mvmult3(R, self.cell.latticevectors[2]) - ) - - if self.cell.latticevectors[0][2] != 0: - theta = math.atan2( - -self.cell.latticevectors[0][2], self.cell.latticevectors[0][0] - ) - c = cos(theta) - s = sin(theta) - R = LatticeMatrix([[c, s, 0], [0, 1, 0], [-s, c, 0]]) - self.cell.latticevectors[0] = Vector( - mvmult3(R, self.cell.latticevectors[0]) - ) - self.cell.latticevectors[1] = Vector( - mvmult3(R, self.cell.latticevectors[1]) - ) - self.cell.latticevectors[2] = Vector( - mvmult3(R, self.cell.latticevectors[2]) - ) - - if self.cell.latticevectors[1][2] != 0: - theta = math.atan2( - -self.cell.latticevectors[1][2], self.cell.latticevectors[1][1] - ) - c = cos(theta) - s = sin(theta) - R = LatticeMatrix([[1, 0, 0], [0, c, s], [0, -s, c]]) - self.cell.latticevectors[0] = Vector( - mvmult3(R, self.cell.latticevectors[0]) - ) - self.cell.latticevectors[1] = Vector( - mvmult3(R, self.cell.latticevectors[1]) - ) - self.cell.latticevectors[2] = Vector( - mvmult3(R, self.cell.latticevectors[2]) - ) - - if ( - self.cell.latticevectors[0][1] != 0 - or self.cell.latticevectors[0][2] != 0 - or self.cell.latticevectors[1][2] != 0 - or self.cell.latticevectors[0][0] <= 0 - or self.cell.latticevectors[1][1] <= 0 - or self.cell.latticevectors[2][2] <= 0 - ): - print( - "Error in triclinic box. Vectors should follow these rules: http://lammps.sandia.gov/doc/Section_howto.html#howto-12" - ) - print( - "Ideally, this program should solve this, but it doesn't yet. You need to fix it." - ) - exit() - - xy = self.cell.lengthscale * self.cell.latticevectors[1][0] - xz = self.cell.lengthscale * self.cell.latticevectors[2][0] - yz = self.cell.lengthscale * self.cell.latticevectors[2][1] - - a = self.cell.latticevectors[0][0] * self.cell.lengthscale - b = self.cell.latticevectors[1][1] * self.cell.lengthscale - c = self.cell.latticevectors[2][2] * self.cell.lengthscale - - filestring += "0.0 %f xlo xhi\n" % a - filestring += "0.0 %f ylo yhi\n" % b - filestring += "0.0 %f zlo zhi\n" % c - if xy != 0 or xz != 0 or yz != 0: - filestring += str(xy) + " " + str(xz) + " " + str(yz) + " xy xz yz\n" - - filestring += "\n" - filestring += "Atoms\n\n" - - nextAtomId = 1 - - # for b in [a for a in self.cell.atomdata]: - # print str(b).split()[0] - # atomTypes str(b).split()[0] - - lv = [] - for i in range(3): - lv.append([]) - for j in range(3): - lv[i].append(self.cell.lengthscale * self.cell.latticevectors[i][j]) - for a in self.cell.atomdata: - for b in a: - t = Vector(mvmult3(lv, b.position)) - atomType = str(b).split()[0] - atomTypeId = atomTypes[atomType] - filestring += ( - str(nextAtomId) + " " + str(atomTypeId) + " " + str(t) + "\n" - ) - nextAtomId += 1 - return filestring - - -################################################################################################ -# XYZ FILE - - -class XYZFile(GeometryOutputFile): - """ - Class for storing the geometrical data needed for outputting an .xyz file - and the method __str__ that outputs the contents of the .xyz file as a string. - """ - - def __init__(self, crystalstructure, string): - GeometryOutputFile.__init__(self, crystalstructure, string) - # To be put on the second line - self.programdoc = "" - - def __str__(self): - filestring = "" - filestring += "%i \n" % sum([len(v) for v in self.cell.atomdata]) - filestring += self.docstring + "\n" - lv = [] - for i in range(3): - lv.append([]) - for j in range(3): - lv[i].append(self.cell.lengthscale * self.cell.latticevectors[i][j]) - for a in self.cell.atomdata: - for b in a: - t = Vector(mvmult3(lv, b.position)) - filestring += str(b).split()[0] + " " + str(t) + "\n" - return filestring - - -################################################################################################ -# NCOL FILES - - -class OldNCOLFile(GeometryOutputFile): - """ - Class for storing the geometrical data needed in a [filename].dat file for the ncol program - and the method __str__ that outputs the contents of the .dat file as a string. - """ - - def __init__(self, crystalstructure, string): - GeometryOutputFile.__init__(self, crystalstructure, string) - # Set atomic units for length scale - self.jobnam = "default" - self.bstrjobnam = "default" - # To be put on the first line - self.programdoc = "" - # Set atomic units for length scale - self.cell.newunit("bohr") - - def __str__(self): - # Element data - ed = ElementData() - # l quantum number setup (same as from bstr) - l = {"s": 2, "p": 2, "d": 3, "f": 4} - filestring = "" - tmpstring = "BULK IDSYST= 7 SCRATCH=R" - tmpstring = ( - tmpstring.ljust(25) - + " " - + deletenewline(self.programdoc, replace=" ") - + "\n" - ) - filestring += tmpstring - tmpstring = ( - "JOBNAM...=" - + self.jobnam.ljust(10) - + " MSGL.= 1 BSAVE..=N COLD...=Y DOS...=N SPO...=N ISM...=G RCLCR...=Y\n" - ) - filestring += tmpstring - filestring += "FOR001=./" + self.bstrjobnam + ".tfm\n" - filestring += "FOR002=\n" - filestring += "FOR003=\n" - filestring += "FOR004=\n" - filestring += "FOR006=\n" - filestring += "FOR010=\n" - filestring += ( - "Band: 4 lines, " + deletenewline(self.docstring, replace=" ") + "\n" - ) - filestring += ( - "NITER.=200 NOB..= 2 NPRN.= 0 NFIX.= 0 MIXKEY= 2 NCOL.=Y PMODE=K\n" - ) - filestring += ( - "REP.....=B FIXD...=Y CRT....=S NB...= 16 CLSIZE= 32 NPROW= 0 NPCOL= 0\n" - ) - filestring += "NKX...= 1 NKY..= 1 NKZ..= 1 TFERMI..= 2000.0(K)\n" - filestring += "AMIX.....= 0.100 TOLE....= 0.0000100 TOLEL...= 0.0000010\n" - # average wigner-seitz radius - nosites = 0 - for a in self.cell.atomdata: - nosites += len(a) - volume = abs(det3(self.cell.latticevectors)) - wsr = self.cell.lengthscale * (3 * volume / (nosites * 4 * pi)) ** third - filestring += "SWS......= %9f NP...= 1 SMIX.= 0.500 TMIX.= 0.0000\n" % wsr - filestring += "Setup: 3 + NQ*NS*NP lines\n" - filestring += "EFGS.....= 0.0000 EFGS....= 0.00000 FTMAG...= 0.000000\n" - filestring += "DEO(l)...= 0.020 0.010 0.005 0.001 0.02\n" - filestring += "Symb IQ IT NL IP NSP SWP QTRO SPLT NFIX NDWF Eny(spdf)\n" - # set first species - if self.cell.atomdata[0][0].alloy(): - prevspecies = "??" - else: - for v in self.cell.atomdata[0][0].species: - prevspecies = v - # type loop - iq = 1 - it = 1 - nsp = 1 - for a in self.cell.atomdata: - for b in a: - if b.alloy(): - species = "??" - else: - species = b.spcstring() - if species != prevspecies: - prevspecies = species - nsp += 1 - tmpstring = ( - species.ljust(2) + " " + str(iq).ljust(3) + str(it).ljust(3) - ) - try: - tmpstring += str(l[ed.elementblock[species]]).ljust(3) + str( - 1 - ).ljust(3) - except KeyError: - tmpstring += " ? 1" - tmpstring += str(nsp).ljust(3) - tmpstring += " 1.000 .000 0.00 0000 1111 .0 .0 .0 .0" - if b.alloy(): - # print alloy components at the end of the line - tmpstring += " " + b.spcstring() - filestring += tmpstring + "\n" - iq += 1 - it += 1 - for a in self.cell.atomdata: - filestring += "Theta....= 90.00 Phia....= 0.00 FIXMOM..= N moment..= 0.0\n" - filestring += ( - "PQX......= 0.00 PQY.....= 0.00 PQZ.....= 0.00000 COORD...=L\n" - ) - filestring += "Atom: 4 lines + NT*6 lines\n" - filestring += "IEX...= 4 NP..=500 NES..= 15 NITER=250 IWAT.= 0\n" - filestring += "VMIX.....= 0.300000 RWAT....= 3.500000 RMAX....= 20.000000\n" - filestring += "DPAS.....= 0.049000 DR1.....= 1.00E-08 TEST....= 1.00E-08\n" - filestring += "TESTE....= 1.00E-07 TESTY...= 1.00E-08 TESTV...= 1.00E-07\n" - for a in self.cell.atomdata: - for comp in a[0].species: - filestring += comp + "\n" - try: - filestring += ed.emtoelements[comp] - except KeyError: - filestring += "\n\n\n\n\n" - return filestring - - -class BSTRFile(GeometryOutputFile): - """ - Class for storing the geometrical data needed in a [filename].dat file for the bstr program - and the method __str__ that outputs the contents of the .dat file as a string. - """ - - def __init__(self, crystalstructure, string): - GeometryOutputFile.__init__(self, crystalstructure, string) - # Set atomic units for length scale - self.cell.newunit("bohr") - self.jobnam = "default" - self.a = 1 - self.b = 1 - self.c = 1 - # To be put on the first line - self.programdoc = "" - - def __str__(self): - ed = ElementData() - filestring = "" - tmpstring = "BSTR IDSYST= 7" - tmpstring = ( - tmpstring.ljust(40) + deletenewline(self.programdoc, replace=" ") + "\n" - ) - filestring += tmpstring - tmpstring = "JOBNAM...=" + self.jobnam.ljust(9) + " MSGL.= 1 \n" - filestring += tmpstring - filestring += "MODE....=B STORE..=Y SCREEN.=B CMBC...=Y\n" - filestring += "FOR001=\n" - filestring += "FOR006=\n" - filestring += deletenewline(self.docstring, replace=" ") + "\n" - # Get number of sites - nosites = 0 - for a in self.cell.atomdata: - nosites += len(a) - # Setting the real space summation cutoff to 4.5*(wigner-seitz radius) - volume = abs(det3(self.cell.latticevectors)) - wsr = (3 * volume / (nosites * 4 * pi)) ** third - tmpstring = "IALF...= 0 NPRN..= 1 DMAX....=%10.5f \n" % (wsr * 4.5) - filestring += tmpstring - filestring += ( - "ALF(spdf)= 0.3205350 0.0413320 0.0084290 0.0015370\nDKAPPA...= 0.00010\n" - ) - tmpstring = "NQ3....=%3i LAT...= 0 IPRIM.= 0" % nosites - filestring += tmpstring - # Set up basis functions. Just setting lmax = 2 for s-/p-, 3 for d- and 4 for f- blocks - tmpstring = "\nNLX(IQ)..=" - for a in self.cell.atomdata: - for b in a: - for k in b.species: - l = 1 - if ed.elementblock[k] == "s" or ed.elementblock[k] == "p": - l = max(l, 2) - elif ed.elementblock[k] == "d": - l = max(l, 3) - elif ed.elementblock[k] == "f": - l = max(l, 4) - tmpstring += " %1i" % l - if len(tmpstring) % 69 == 0: - tmpstring += "\n " - # Need to strip newline character if the last line was 69 characters long... - tmpstring = tmpstring.rstrip(string.whitespace) - tmpstring = tmpstring + "\n" - filestring += tmpstring - # Print lattice vectors - coa = self.c / self.a - boa = self.b / self.a - filestring += ( - "A........= 1.00000000 B.......= 1.00000000 C.......= 1.00000000\n" - ) - tmpstring = "" - lv = self.cell.latticevectors - for i in range(3): - tmpstring += "BSX......=%12.7f BSY.....=%12.7f BSZ.....=%12.7f\n" % ( - lv[i][0], - lv[i][1], - lv[i][2], - ) - filestring += tmpstring - # All positions - it = 1 - for a in self.cell.atomdata: - for b in a: - pos = mvmult3(lv, b.position) - tmpstring = "QX.......=%12.7f QY......=%12.7f QZ......=%12.7f" % ( - pos[0], - pos[1], - pos[2], - ) - tmpstring += " " + b.spcstring() + "\n" - filestring += tmpstring - it += 1 - filestring += "LAMDA....= 2.5000 AMAX....= 5.5000 BMAX....= 5.5000\n" - return filestring - - -################################################################################################ -# RSPT FILES - - -class CellgenFile(GeometryOutputFile): - """ - Class for storing the geometrical data needed in a cellgen.inp file and the method - __str__ that outputs the contents of an cellgen.inp file as a string. - """ - - def __init__(self, crystalstructure, string): - GeometryOutputFile.__init__(self, crystalstructure, string) - self.supercellmap = [[1, 0, 0], [0, 1, 0], [0, 0, 1]] - self.referencevector = [0, 0, 0] - # Set atomic units for length scale - self.cell.newunit("bohr") - # Make sure the docstring has comment form - self.docstring = self.docstring.rstrip("\n") - tmpstrings = self.docstring.split("\n") - self.docstring = "" - for string in tmpstrings: - string = string.lstrip("#") - string = "#" + string + "\n" - self.docstring += string - - def __str__(self): - # Initialize element data - ed = ElementData() - # Add docstring - filestring = self.docstring - # Add lattice constant - filestring += "# Lattice constant in a.u.: " + str(self.cell.lengthscale) + "\n" - # RSPt reads the lattice vectors as columns... - filestring += "# Lattice vectors (columns)\n" - tmpstring = "" - for i in range(3): - for j in range(3): - tmpstring += "%19.15f " % self.cell.latticevectors[j][i] - tmpstring += "\n" - filestring += tmpstring - # Get number of sites - nosites = 0 - for a in self.cell.atomdata: - nosites += len(a) - filestring += "# Sites\n" - filestring += str(nosites) + "\n" - it = 1 - for a in self.cell.atomdata: - for b in a: - tmpstring = "" - tmpstring += str(b.position) + " " - if b.alloy(): - # don't know what to put for an alloy - tmpstring += "???" - else: - tmpstring += "%3i" % ed.elementnr[b.spcstring()] - tmpstring += " l " + chr(it + 96) + " # " + b.spcstring() + "\n" - filestring += tmpstring - it += 1 - filestring += "# Supercell map\n" - tmpstring = "" - for i in self.supercellmap: - for j in i: - tmpstring += str(j).rjust(4) - tmpstring += "\n" - filestring += tmpstring - filestring += "# Reference vector\n" - tmpstring = "" - for i in self.referencevector: - tmpstring += "%19.15f " % i - tmpstring += "\n" - filestring += tmpstring - return filestring - - -################################################################################################ - - -class SymtFile(GeometryOutputFile): - """ - Class for storing the geometrical data needed in an old format symt.inp file and the method - __str__ that outputs the contents of an symt.inp file as a string. - """ - - def __init__(self, crystalstructure, string): - GeometryOutputFile.__init__(self, crystalstructure, string) - # Set atomic units for length scale - self.cell.newunit("bohr") - # Make sure the docstring has comment form - self.docstring = self.docstring.rstrip("\n") - tmpstrings = self.docstring.split("\n") - self.docstring = "" - for string in tmpstrings: - string = string.lstrip("#") - string = "#" + string + "\n" - self.docstring += string - # Default spin axis is [0,0,0] - self.spinaxis = [0.0, 0.0, 0.0] - self.rsptcartlatvects = False - self.passwyckoff = False - self.printlabels = False - - def __str__(self): - # Initialize element data - ed = ElementData() - # Add docstring - filestring = self.docstring - # Add lattice constant - filestring += "# Lattice constant in a.u.: " + str(self.cell.lengthscale) + "\n" - # RSPt reads the lattice vectors as columns... - filestring += "# Lattice vectors (columns)\n" - if self.rsptcartlatvects: - fac = self.cell.lengthscale - else: - fac = 1.0 - tmpstring = "" - for i in range(3): - for j in range(3): - tmpstring += "%19.15f " % (self.cell.latticevectors[j][i] * fac) - tmpstring += "\n" - filestring += tmpstring - filestring += "# Spin axis\n" - filestring += "%19.15f %19.15f %19.15f l\n" % ( - self.spinaxis[0], - self.spinaxis[1], - self.spinaxis[2], - ) - # Get number of sites - nosites = 0 - for a in self.cell.atomdata: - nosites += len(a) - filestring += "# Sites\n" - filestring += str(nosites) + "\n" - it = 1 - label = "a" - for a in self.cell.atomdata: - for b in a: - tmpstring = "" - tmpstring += str(b.position) + " " - if b.alloy(): - # don't know what to put for an alloy - tmpstring += "???" - else: - tmpstring += "%3i" % ed.elementnr[b.spcstring()] - if self.passwyckoff: - label = chr(it + 96) - if self.printlabels: - tmpstring += " l " + label + " # " + b.label + "\n" - else: - tmpstring += " l " + label + " # " + b.spcstring() + "\n" - filestring += tmpstring - it += 1 - return filestring - - -################################################################################################ - - -class SymtFile2(GeometryOutputFile): - """ - Class for storing the geometrical data needed in a new format symt.inp file and the method - __str__ that outputs the contents of an symt.inp file as a string. - """ - - def __init__(self, crystalstructure, string, kresolution=0.1): - GeometryOutputFile.__init__(self, crystalstructure, string) - # Set atomic units for length scale - self.cell.newunit("bohr") - # Make sure the docstring has comment form - self.docstring = self.docstring.rstrip("\n") - tmpstrings = self.docstring.split("\n") - self.docstring = "" - for string in tmpstrings: - string = string.lstrip("#") - string = "#" + string + "\n" - self.docstring += string - # Default spin axis is [0,0,0] - self.spinaxis = Vector([0.0, 0.0, 0.0]) - # parameters for spin polarization - self.spinpol = False - self.relativistic = False - self.forcenospin = False - self.rsptcartlatvects = False - self.mtradii = 0 - self.passwyckoff = False - # k-mesh generation etc. - self.setupall = False - self.kresolution = kresolution - self.nokshifts = False - self.kshifts = [[0, 0, 0], [1, 1, 1]] - self.printlabels = False - - def __str__(self): - # Initialize element data - ed = ElementData() - # Add docstring - filestring = self.docstring - # Add lattice constant - filestring += "# Lattice constant in a.u.\n" - filestring += "lengthscale\n" - if self.rsptcartlatvects: - filestring += "1.000 \n" - else: - filestring += str(self.cell.lengthscale) + "\n" - if self.spinpol and not self.forcenospin: - filestring += "# Spin polarized calculation\nspinpol\n" - filestring += "# Spin polarize atomic densities\nspinpol_atomdens\n" - if self.relativistic: - if self.setupall: - filestring += "# Relativistic symmetries\nspinorbit\n" - else: - filestring += "# Relativistic symmetries\nfullrel\n" - # Default to z-direction for relativistic calculations... - t = self.spinaxis - Vector([0.0, 0.0, 0.0]) - if t.length() < 1e-7: - self.spinaxis = mvmult3( - minv3(self.cell.latticevectors), Vector([0.0, 0.0, 1.0]) - ) - # ... unless these space group settings, when we pick a more likely high-symmetry axis - if self.cell.spacegroupsetting == "A": - self.spinaxis = mvmult3( - minv3(self.cell.latticevectors), Vector([1.0, 0.0, 0.0]) - ) - elif self.cell.spacegroupsetting == "B": - self.spinaxis = mvmult3( - minv3(self.cell.latticevectors), Vector([0.0, 1.0, 0.0]) - ) - if self.mtradii != 0: - filestring += "# Choice of MT radii\n" - filestring += "mtradii\n" + str(self.mtradii) + "\n" - # RSPt reads the lattice vectors as columns... - filestring += "# Lattice vectors (columns)\n" - filestring += "latticevectors\n" - tmpstring = "" - if self.rsptcartlatvects: - fac = self.cell.lengthscale - else: - fac = 1.0 - for i in range(3): - for j in range(3): - tmpstring += "%19.15f " % (self.cell.latticevectors[j][i] * fac) - tmpstring += "\n" - filestring += tmpstring - filestring += "# Spin axis\n" - filestring += "spinaxis\n" - filestring += "%19.15f %19.15f %19.15f l\n" % ( - self.spinaxis[0], - self.spinaxis[1], - self.spinaxis[2], - ) - # Get number of sites - nosites = 0 - for a in self.cell.atomdata: - nosites += len(a) - filestring += "# Sites\n" - filestring += "atoms\n" - filestring += str(nosites) + "\n" - it = 1 - label = "a" - for a in self.cell.atomdata: - for b in a: - label = "a" - tmpstring = "" - tmpstring += str(b.position) + " " - if b.alloy(): - # don't know what to put for an alloy - tmpstring += "???" - else: - tmpstring += "%3i" % ed.elementnr[b.spcstring()] - if self.passwyckoff: - label = chr(it + 96) - if ( - self.setupall - and b.spcstring() in suspiciouslist - and not self.forcenospin - ): - label = "up" - if self.printlabels: - tmpstring += " l " + label + " # " + b.label + "\n" - else: - tmpstring += " l " + label + " # " + b.spcstring() + "\n" - filestring += tmpstring - it += 1 - # k-mesh setup for new input - if self.setupall: - # Using k-resolution together with Froyen map needs supervised choice of mesh, - # or they easily become unnecessarily dense, so don't use this feature. - ## filestring += "\n" - # filestring += "# k space resolution\n" - ## filestring += "kresolution\n" - ## filestring += " %f\n"%(self.kresolution) - # Guess a suitable Froyen map !!! Column vectors for RSPt !!! - mapmatrix = LatticeMatrix([[1, 0, 0], [0, 1, 0], [0, 0, 1]]) - if self.cell.primcell: - if self.cell.spacegroupsetting == "F": - mapmatrix = LatticeMatrix([[1, 1, 0], [1, 0, 1], [0, 1, 1]]) - elif self.cell.spacegroupsetting == "I": - if self.cell.crystal_system() == "cubic": - mapmatrix = LatticeMatrix([[-1, 1, 1], [1, -1, 1], [1, 1, -1]]) - else: - mapmatrix = LatticeMatrix([[2, 0, 1], [0, 2, 1], [0, 0, 2]]) - elif self.cell.spacegroupsetting == "A": - mapmatrix = LatticeMatrix([[1, 0, 0], [0, 1, -1], [0, 1, 1]]) - elif self.cell.spacegroupsetting == "B": - mapmatrix = LatticeMatrix([[1, 0, -1], [0, 1, 0], [1, 0, 1]]) - elif self.cell.spacegroupsetting == "C": - mapmatrix = LatticeMatrix([[1, -1, 0], [1, 1, 0], [0, 0, 1]]) - elif ( - self.cell.spacegroupsetting == "R" - and abs( - self.cell.latticevectors[0].angle(self.cell.latticevectors[1]) - * 180 - / pi - ) - > 10 - ): - # Generate in hexagonal supercell unless the rhombohedral angle is close to 90 degrees. - mapmatrix = LatticeMatrix([[1, 0, 1], [-1, 1, 1], [0, -1, 1]]) - # Determine mesh - reclatvect = LatticeMatrix( - mmmult3(self.cell.reciprocal_latticevectors().transpose(), mapmatrix) - ).transpose() - for j in range(3): - for i in range(3): - reclatvect[j][i] = reclatvect[j][i] / self.cell.lengthscale - # Lengths of reciprocal lattice vectors - reclatvectlen = [elem.length() for elem in reclatvect] - kgrid = [ - max(1, int(round(elem / self.kresolution))) for elem in reclatvectlen - ] - # Manual adjustments to make the choice work well with the Froyen mesh. - # Some centerings should have even meshes, for rhombohedral it should be dividable by 3 - # along c. - if self.cell.primcell: - if ( - self.cell.spacegroupsetting == "F" - or self.cell.spacegroupsetting == "I" - ): - for i in range(3): - kgrid[i] += kgrid[i] % 2 - elif self.cell.spacegroupsetting == "A": - kgrid[1] += kgrid[1] % 2 - kgrid[2] += kgrid[2] % 2 - elif self.cell.spacegroupsetting == "B": - kgrid[0] += kgrid[0] % 2 - kgrid[2] += kgrid[2] % 2 - elif self.cell.spacegroupsetting == "C": - kgrid[0] += kgrid[0] % 2 - kgrid[1] += kgrid[1] % 2 - elif ( - self.cell.spacegroupsetting == "R" - and abs( - self.cell.latticevectors[0].angle(self.cell.latticevectors[1]) - * 180 - / pi - ) - > 10 - ): - for i in range(3): - # This rounds to nearest multiple of 3 - if kgrid[i] % 3 == 1: - kgrid[i] -= 1 - elif kgrid[i] % 3 == 2: - kgrid[i] += 1 - filestring += "\n# k-points\n" - filestring += "kpoints\n" - filestring += " %i %i %i\n\n" % (kgrid[0], kgrid[1], kgrid[2]) - # Write Froyen map. - filestring += "# Froyen map\n" - filestring += "kmapmatrix\n" - for v in mapmatrix: - filestring += " %4i %4i %4i\n" % (v[0], v[1], v[2]) - # Return - return filestring - - -################################################################################################ - - -class Crystal09File(GeometryOutputFile): - """ - Class for storing the geometrical data needed by Crystal09 and the method - __str__ that outputs the contents of an Crystal09 input file as a string. - Presently only handles standard settings (space group numbers, not H-M symbols), - and the special case of rhombohedral settings for relevant trigonal space groups. - """ - - def __init__(self, crystalstructure, string, rhombohedral=False): - GeometryOutputFile.__init__(self, crystalstructure, string) - # Set atomic units for length scale - self.cell.newunit("angstrom") - # Rhombohedral cell setting - self.rhombohedral = rhombohedral - # Make sure the docstring has the form of a f90 comment - self.docstring = self.docstring.rstrip("\n") - tmpstrings = self.docstring.split("\n") - self.docstring = "" - for string in tmpstrings: - string = string.lstrip("!") - string = "!" + string + "\n" - self.docstring += string - - def __str__(self): - # Initialize element data - ed = ElementData() - # Add docstring - filestring = self.docstring - filestring += "CRYSTAL\n" - # Space group setting and crystal parameters - if self.cell.is_spacegroup("triclinic"): - filestring += "0 0 0\n" - filestring += str(self.spacegroupnr) + "\n" - filestring += "%13.8f %13.8f %13.8f %13.8f %13.8f %13.8f\n" % ( - self.cell.a, - self.cell.b, - self.cell.c, - self.cell.alpha, - self.cell.beta, - self.cell.gamma, - ) - elif self.cell.is_spacegroup("monoclinic"): - filestring += "0 0 0\n" - filestring += str(self.spacegroupnr) + "\n" - filestring += "%13.8f %13.8f %13.8f %13.8f\n" % ( - self.cell.a, - self.cell.b, - self.cell.c, - self.cell.beta, - ) - elif self.cell.is_spacegroup("orthorhombic"): - filestring += "0 0 0\n" - filestring += str(self.spacegroupnr) + "\n" - filestring += "%13.8f %13.8f %13.8f\n" % ( - self.cell.a, - self.cell.b, - self.cell.c, - ) - elif self.cell.is_spacegroup("tetragonal"): - filestring += "0 0 0\n" - filestring += str(self.spacegroupnr) + "\n" - filestring += "%13.8f %13.8f\n" % (self.cell.a, self.cell.c) - elif self.cell.is_spacegroup("trigonal") and not ( - self.cell.is_spacegroup("rhombohedral") and self.rhombohedral - ): - filestring += "0 0 0\n" - filestring += str(self.spacegroupnr) + "\n" - filestring += "%13.8f %13.8f\n" % (self.cell.a, self.cell.c) - elif self.cell.is_spacegroup("rhombohedral") and self.rhombohedral: - filestring += "0 1 0\n" - filestring += str(self.spacegroupnr) + "\n" - filestring += "%13.8f %13.8f\n" % ( - self.cell.latticevectors[0].length() * self.cell.lengthscale, - self.cell.latticevectors[1].angle(self.cell.latticevectors[2]) - * 180 - / pi, - ) - elif self.cell.is_spacegroup("hexagonal"): - filestring += "0 0 0\n" - filestring += str(self.spacegroupnr) + "\n" - filestring += "%13.8f %13.8f\n" % (self.cell.a, self.cell.c) - elif self.cell.is_spacegroup("cubic"): - filestring += "0 0 0\n" - filestring += str(self.spacegroupnr) + "\n" - filestring += "%13.8f\n" % (self.cell.a) - else: - if self.force: - sys.stderr.write( - "***Warning: Could not determine crystal system corresponding to space group " - + str(self.spacegroupnr) - + "." - ) - filestring += "0 0 0\n" - filestring += str(self.spacegroupnr) + "\n" - filestring += "%13.8f %13.8f %13.8f %13.8f %13.8f %13.8f\n" % ( - self.cell.a, - self.cell.b, - self.cell.c, - self.cell.alpha, - self.cell.beta, - self.cell.gamma, - ) - else: - return ( - "***Error: Could not determine crystal system corresponding to space group " - + str(self.spacegroupnr) - + "." - ) - # Number of atoms - filestring += str(len(self.cell.ineqsites)) + "\n" - # Atomic numbers and representative positions - for a in self.cell.atomdata: - if len(a[0].species) > 1: - # don't know what to put for an alloy - filestring += "??" - else: - for k in a[0].species: - filestring += str(ed.elementnr[k]).rjust(2) - filestring += ( - " " + str(a[0].position) + " ! " + a[0].spcstring() + "\n" - ) - filestring += "END\n" - return filestring - - -################################################################################################ - - -class SpacegroupFile(GeometryOutputFile): - """ - Class for storing the geometrical data needed in a spacegroup.in file and the method - __str__ that outputs the contents of an spacegroup.in file as a string. - """ - - def __init__(self, crystalstructure, string): - GeometryOutputFile.__init__(self, crystalstructure, string) - self.HermannMauguin = "" - self.a = 1 - self.b = 1 - self.c = 1 - self.alpha = 90 - self.beta = 90 - self.gamma = 90 - self.supercelldims = [1, 1, 1] - # Set atomic units for length scale - self.cell.newunit("bohr") - # Make sure the docstring has the form of a f90 comment - self.docstring = self.docstring.rstrip("\n") - tmpstrings = self.docstring.split("\n") - self.docstring = "" - for string in tmpstrings: - string = string.lstrip("!") - string = "!" + string + "\n" - self.docstring += string - - def __str__(self): - filestring = "" - if ( - self.HermannMauguin[-1] == "R" or self.HermannMauguin[-1] == "H" - ) and self.HermannMauguin[-2] != ":": - self.HermannMauguin = ( - self.HermannMauguin[0 : len(self.HermannMauguin) - 1] - + ":" - + self.HermannMauguin[-1] - ) - tmpstring = " '" + self.HermannMauguin + "'" - tmpstring = tmpstring.ljust(50) + ": hrmg\n" - filestring += tmpstring - tmpstring = "" - tmpstring += " %15.11f" % (self.a) - tmpstring += " %15.11f" % (self.b) - tmpstring += " %15.11f" % (self.c) - tmpstring = tmpstring.ljust(50) + ": a, b, c\n" - filestring += tmpstring - tmpstring = " %15.9f %15.9f %15.9f" % (self.gamma, self.beta, self.alpha) - tmpstring = tmpstring.ljust(50) + ": ab, ac, bc\n" - filestring += tmpstring - tmpstring = "" - for i in self.supercelldims: - tmpstring += str(i) + " " - tmpstring = tmpstring.ljust(50) - tmpstring += ": ncell\n" - filestring += tmpstring - filestring += ".true.".ljust(50) + ": primcell\n" - # Get species info - species = set([]) - for occ in self.cell.occupations: - spcstring = "" - for k in occ: - spcstring += k + "/" - spcstring = spcstring.rstrip("/") - species.add(spcstring) - tmpstring = str(len(species)).ljust(50) + ": nspecies\n" - filestring += tmpstring - for spcs in species: - # find number of representative sites for this species - spcsites = 0 - positionstring = "" - i = 0 - for occ in self.cell.occupations: - spcstring = "" - for k in occ: - spcstring += k + "/" - spcstring = spcstring.rstrip("/") - if spcstring == spcs: - spcsites += 1 - positionstring += str(self.cell.ineqsites[i]) + "\n" - i += 1 - # output species info - if len(spcs) > 2: - # alloy - spcsheader = ( - "'??'".ljust(50) + "! " + spcs + "\n" + str(spcsites) + "\n" - ) - else: - spcsheader = "'" + spcs + "'\n" + str(spcsites) + "\n" - filestring += spcsheader - filestring += positionstring - filestring += "\n" + self.docstring - return filestring - - -################################################################################################ - - -class ElkFile(GeometryOutputFile): - """ - Class for storing the geometrical data needed in an elk.in file and the method - __str__ that outputs the contents of an elk.in file as a string. - """ - - def __init__(self, crystalstructure, string): - GeometryOutputFile.__init__(self, crystalstructure, string) - # Set atomic units for length scale - self.cell.newunit("bohr") - # Make sure the docstring has the form of a f90 comment - self.docstring = self.docstring.rstrip("\n") - tmpstrings = self.docstring.split("\n") - self.docstring = "" - for string in tmpstrings: - string = string.lstrip("!") - string = "!" + string + "\n" - self.docstring += string - - def __str__(self): - filestring = self.docstring - # Lattice vectors - filestring += "avec\n" - tmpstring = "" - for pos in self.cell.latticevectors: - for coord in pos: - tmpstring += " %13.10f" % coord - tmpstring += "\n" - tmpstring += "\n" - filestring += tmpstring - # Scale factor - filestring += "scale\n" - filestring += " %13.10f\n\n" % self.cell.lengthscale - # Atoms - filestring += "atoms\n" - # Get number of species - species = set([]) - for a in self.cell.atomdata: - for b in a: - species.add(b.spcstring()) - tmpstring = (" " + str(len(species))).ljust(37) + ": nspecies\n" - filestring += tmpstring - # local B-field string - bfcmtstring = " 0.00000000 0.00000000 0.00000000" - # initialize some stuff - natoms = 0 - spcstring = self.cell.atomdata[0][0].spcstring() - positionstring = "" - for a in self.cell.atomdata: - for b in a: - spcs = b.spcstring() - # Accumulate for this species - if spcs == spcstring: - ## natoms += len(a) - natoms += 1 - positionstring += str(b.position) + bfcmtstring + "\n" - else: - # Print species - if len(spcstring) > 2: - # alloy - filestring += ( - "'??.in'".ljust(37) + ": spfname = " + spcstring + "\n" - ) - else: - filestring += ("'" + spcstring + ".in'").ljust( - 37 - ) + ": spfname \n" - filestring += " " + str(natoms) + "\n" - filestring += positionstring - # Initialize next species - spcstring = spcs - natoms = 1 - positionstring = str(b.position) + bfcmtstring + "\n" - # Print last species - if len(spcstring) > 2: - # alloy - filestring += "'??.in'".ljust(37) + ": spfname = " + spcstring + "\n" - else: - filestring += ("'" + spcstring + ".in'").ljust(37) + ": spfname\n" - filestring += " " + str(natoms) + "\n" - filestring += positionstring - return filestring - - -################################################################################################ - - -class ExcitingFile(GeometryOutputFile): - """ - Class for storing the geometrical data needed in an input.xml file and the method - __str__ that outputs the contents of an input.xml file as a string. - """ - - def __init__(self, crystalstructure, string): - GeometryOutputFile.__init__(self, crystalstructure, string) - # Set atomic units for length scale - self.cell.newunit("bohr") - self.title = "" - self.docstring = self.docstring.rstrip("\n") + "\n" - - def __str__(self): - filestring = "\n" - filestring += " \n" - filestring += self.docstring - filestring += " \n" - # Add title if there is one - if self.title != "": - filestring += " " + self.title + "\n" - filestring += " \n" - # scale factor - filestring += " \n" - # Lattice vectors - tmpstring = "" - for pos in self.cell.latticevectors: - tmpstring += " " - for coord in pos: - tmpstring += " %13.10f" % coord - tmpstring += "\n" - filestring += tmpstring - filestring += " \n" - # Atoms - # local B-field string - bfcmtstring = " 0.00000000 0.00000000 0.00000000" - # initialize some stuff - spcstring = self.cell.atomdata[0][0].spcstring() - positionstring = "" - for a in self.cell.atomdata: - for b in a: - spcs = b.spcstring() - # Accumulate for this species - if spcs == spcstring: - positionstring += ' \n' - else: - # Print species - if len(spcstring) > 2: - # alloy - filestring += ' ' - filestring += " \n" - else: - filestring += ( - ' \n' - ) - filestring += positionstring + " \n" - # Initialize next species - spcstring = spcs - positionstring = ' \n' - # Print last species - if len(spcstring) > 2: - # alloy - filestring += ' ' - filestring += " \n" - else: - filestring += ' \n' - filestring += positionstring - filestring += " \n" - filestring += " \n" - filestring += "\n" - return filestring - - -################################################################################################ - - -class FleurFile(GeometryOutputFile): - """ - Class for storing the geometrical data needed in a Fleur input generator input file (how about - that, we generate input for the generator of the input...) and the method - __str__ that outputs the contents as a string. - """ - - def __init__(self, crystalstructure, string): - GeometryOutputFile.__init__(self, crystalstructure, string) - # Set atomic units for length scale - self.cell.newunit("bohr") - # make sure the docstring goes on one line - self.docstring = self.docstring.replace("\n", " ") - if len(self.docstring) > 80: - self.docstring = self.docstring[0:78] + "...\n" - - def __str__(self): - ed = ElementData() - filestring = self.docstring + "\n" - filestring += "&input cartesian=f oldfleur=f\n\n" - # Lattice vectors - tmpstring = "" - n = 1 - for pos in self.cell.latticevectors: - tmpstring += str(pos) - tmpstring += " ! a%1i\n" % n - n += 1 - filestring += tmpstring - # Scale factor - filestring += "%13.9f ! aa\n" % self.cell.lengthscale - filestring += "1.0 1.0 1.0 ! scale(1), scale(2), scale(3)\n" - # Atoms - natom = 0 - for a in self.cell.atomdata: - natom += len(a) - filestring += str(natom) + "\n" - nspcs = 0 - spcs = "" - coordstring = "" - for a in self.cell.atomdata: - for b in a: - # Check for alloy - if b.alloy(): - prestring = "??" - poststring = " ! " - for k in b.species: - poststring += str(ed.elementnr[k]) + "/" - poststring = ( - poststring.rstrip("/") + " " + str(b.spcstring()) + "\n" - ) - else: - prestring = str(ed.elementnr[b.spcstring()]).ljust(2) - poststring = " ! " + b.spcstring() + "\n" - coordstring += prestring + str(b.position) + poststring - # To filestring - filestring += coordstring - return filestring - - -################################################################################################ - - -class CASTEPFile(GeometryOutputFile): - """ - Class for storing the geometrical data needed in a CASTEP run and the method - __str__ that outputs to a .cell file as a string. - """ - - def __init__(self, crystalstructure, string): - GeometryOutputFile.__init__(self, crystalstructure, string) - # Cartesian units? - self.cartesian = False - # What units? - self.unit = "angstrom" - self.cell.newunit("angstrom") - # Make sure the docstring has comment form - self.docstring = self.docstring.rstrip("\n") - tmpstrings = self.docstring.split("\n") - self.docstring = "" - for string in tmpstrings: - string = string.lstrip("#") - string = "#" + string + "\n" - self.docstring += string - # VCA calculation? - self.vca = False - # Print labels? - self.printlabels = False - - def __str__(self): - # Set units - self.cell.newunit(self.unit) - # Assign some local variables - a = self.cell.lengthscale - lattice = self.cell.latticevectors - ed = ElementData() - # docstring - filestring = self.docstring + "\n" - filestring += "%BLOCK LATTICE_CART\n" - # units - if self.cell.unit == "angstrom": - filestring += "ang # angstrom units\n" - elif self.cell.unit == "bohr": - filestring += "bohr # atomic units\n" - # lattice - for vec in lattice: - for coord in vec: - filestring += " %19.15f" % (coord * a) - filestring += "\n" - # Cutoff - filestring += "%ENDBLOCK LATTICE_CART\n\n" - # The atom position info - if self.cartesian: - # Correct block name and units - filestring += "%BLOCK POSITIONS_ABS\n" - if self.cell.unit == "angstrom": - filestring += "ang # angstrom units\n" - elif self.cell.unit == "bohr": - filestring += "bohr # atomic units\n" - # Set transformation matrix - transmat = LatticeMatrix(self.cell.latticevectors) - scalfac = self.cell.a - else: - filestring += "%BLOCK POSITIONS_FRAC\n" - transmat = LatticeMatrix([[1, 0, 0], [0, 1, 0], [0, 0, 1]]) - scalfac = 1.0 - i = 0 - for a in self.cell.atomdata: - for b in a: - pos = Vector(mvmult3(transmat, b.position)).scalmult(scalfac) - # Check for VCA calculation - if self.cell.alloy and self.vca: - if len(b.species) > 1: - i = i + 1 - for sp, conc in b.species.items(): - filestring += ( - sp.ljust(2) - + " " - + str(pos) - + " MIXTURE:( %i %6.5f )" % (i, conc) - ) - else: - filestring += b.spcstring().ljust(2) + " " + str(pos) - else: - filestring += b.spcstring().ljust(2) + " " + str(pos) - if self.printlabels and b.label != "": - filestring += " ID=" + b.label - filestring += "\n" - if self.cartesian: - filestring += "%ENDBLOCK POSITIONS_ABS\n" - else: - filestring += "%ENDBLOCK POSITIONS_FRAC\n" - # pseudo-potential block - species = set([]) - for a in self.cell.atomdata: - if self.vca: - for sp, conc in a[0].species.items(): - species.add(sp) - else: - species.add(a[0].spcstring()) - filestring += "\n" - filestring += "# Commented out pseudopotential block for easy editing\n" - filestring += "#%BLOCK SPECIES_POT\n" - for sp in species: - filestring += "# " + sp.ljust(2) + " " + sp + "_00.usp\n" - filestring += "#%ENDBLOCK SPECIES_POT\n" - # Put in the symmetry operations - filestring += "\n%BLOCK SYMMETRY_OPS\n" - latvect = self.cell.conventional_latticevectors() - # make list and make sure that identity comes first - symoplist = sorted(list(self.cell.symops)) - k = 1 - for op in symoplist: - filestring += "# Symm. op. %i\n" % k - filestring += str(op) - k += 1 - filestring += "%ENDBLOCK SYMMETRY_OPS\n" - return filestring - - -################################################################################################ -# PWSCF (Quantum Espresso) - - -class PWSCFFile(GeometryOutputFile): - """ - Class for storing the geometrical data for a PWSCF run and the method - __str__ that outputs to a .in file as a string. - """ - - def __init__(self, crystalstructure, string, kresolution=0.2): - GeometryOutputFile.__init__(self, crystalstructure, string) - # - self.setupall = False - # Cartesian units? - self.cartesian = False - self.cartesianpositions = False - self.cartesianlatvects = False - self.scaledcartesianpositions = False - # What units? - self.unit = "angstrom" - self.cell.newunit("angstrom") - # Pseudopotential string - self.pseudostring = "_PSEUDO" - # set up species list - tmp = set([]) - for a in self.cell.atomdata: - for b in a: - tmp.add(b.spcstring()) - self.species = list(tmp) - # k-space information - reclatvect = self.cell.reciprocal_latticevectors() - for j in range(3): - for i in range(3): - reclatvect[j][i] = reclatvect[j][i] / self.cell.lengthscale - # Lengths of reciprocal lattice vectors - reclatvectlen = [elem.length() for elem in reclatvect] - self.kgrid = [max(1, int(round(elem / kresolution))) for elem in reclatvectlen] - # Make sure the docstring has comment form - self.docstring = self.docstring.rstrip("\n") - tmpstrings = self.docstring.split("\n") - self.docstring = "" - for string in tmpstrings: - string = string.lstrip("#") - string = "#" + string + "\n" - self.docstring += string - self.docstring += "\n" - - def __str__(self): - filestring = self.docstring - # Set current units and stuff - if self.cartesian: - self.cartesianpositions = True - self.cartesianlatvects = True - self.cell.newunit(self.unit) - # Determine max width of spcstring - width = 0 - for a in self.cell.atomdata: - for b in a: - width = max(width, len(b.spcstring())) - # - filestring += "&SYSTEM\n" - filestring += " ibrav = %i\n" % (0) - if self.unit == "bohr": - filestring += " celldm(1) = %10.5f\n" % (self.cell.lengthscale) - elif self.unit == "angstrom": - filestring += " A = %10.5f\n" % (self.cell.lengthscale) - filestring += " nat = %i\n" % (self.cell.natoms()) - filestring += " ntyp = %i\n" % (len(self.species)) - filestring += "/\n" - if self.cartesianlatvects: - if self.unit == "bohr": - filestring += "CELL_PARAMETERS {bohr}\n" - elif self.unit == "angstrom": - filestring += "CELL_PARAMETERS {angstrom}\n" - t = LatticeMatrix(self.cell.latticevectors) - for i in range(3): - for j in range(3): - t[i][j] = self.cell.latticevectors[i][j] * self.cell.lengthscale - filestring += str(t) - else: - filestring += "CELL_PARAMETERS {alat}\n" - filestring += str(self.cell.latticevectors) - filestring += "ATOMIC_SPECIES\n" - for sp in self.species: - filestring += " %2s" % (sp.rjust(width)) - try: - filestring += (" %8.5f" % (ed.elementweight[sp])).rjust(11) - except: - filestring += " ???".rjust(11) - filestring += " %2s%s\n" % (sp.rjust(width), self.pseudostring) - if self.cartesianpositions: - if self.scaledcartesianpositions: - filestring += "ATOMIC_POSITIONS {alat}\n" - else: - if self.unit == "bohr": - filestring += "ATOMIC_POSITIONS {bohr}\n" - elif self.unit == "angstrom": - filestring += "ATOMIC_POSITIONS {angstrom}\n" - else: - if self.scaledcartesianpositions: - filestring += "ATOMIC_POSITIONS {alat}\n" - else: - filestring += "ATOMIC_POSITIONS {crystal}\n" - for a in self.cell.atomdata: - for b in a: - if self.cartesianpositions: - t = Vector(mvmult3(self.cell.latticevectors, b.position)) - if self.scaledcartesianpositions: - filestring += b.spcstring().rjust(width) + " " + str(t) + "\n" - else: - for i in range(3): - t[i] = self.cell.lengthscale * t[i] - filestring += b.spcstring().rjust(width) + " " + str(t) + "\n" - else: - if self.scaledcartesianpositions: - t = Vector(mvmult3(self.cell.latticevectors, b.position)) - filestring += b.spcstring().rjust(width) + " " + str(t) + "\n" - else: - filestring += ( - b.spcstring().rjust(width) + " " + str(b.position) + "\n" - ) - # Add k-space mesh - if self.setupall: - filestring += "\n# k-space resolution ~" + str(self.kresolution) + "/A.\n" - # Opt for gamma-point run if possible - if self.kgrid[0] * self.kgrid[1] * self.kgrid[2] == 1: - filestring += "K_POINTS gamma\n" - else: - filestring += "K_POINTS automatic\n" - filestring += ( - str(self.kgrid[0]) - + " " - + str(self.kgrid[1]) - + " " - + str(self.kgrid[2]) - + " 0 0 0\n" - ) - return filestring - - # Return the PWscf internal bravais lattice number - - def ibrav(self): - system = self.cell.crystal_system() - setting = self.cell.spacegroupsetting - if self.supercell: - return 14 - if system == "cubic": - if self.primcell: - if setting == "P": - return 1 - elif setting == "F": - return 2 - elif setting == "I": - return 3 - else: - return 1 - if system == "hexagonal": - if self.primcell: - if setting == "P": - return 4 - elif setting == "R": - return 5 - - -################################################################################################ -# CP2K - - -class CP2KFile(GeometryOutputFile): - """ - Class for storing the geometrical data for a CP2k run and the method - __str__ that outputs to a .inp file as a string. - """ - - def __init__(self, crystalstructure, string): - GeometryOutputFile.__init__(self, crystalstructure, string) - self.cell.newunit("angstrom") - # Make sure the docstring has comment form - self.docstring = self.docstring.rstrip("\n") - tmpstrings = self.docstring.split("\n") - self.docstring = "" - for string in tmpstrings: - string = string.lstrip("#") - string = "#" + string + "\n" - self.docstring += string - self.docstring += "\n" - - def __str__(self): - filestring = self.docstring - filestring += "&CELL\n" - filestring += " PERIODIC XYZ\n" - filestring += ( - " A " - + str(self.cell.latticevectors[0].scalmult(self.cell.lengthscale)) - + "\n" - ) - filestring += ( - " B " - + str(self.cell.latticevectors[1].scalmult(self.cell.lengthscale)) - + "\n" - ) - filestring += ( - " C " - + str(self.cell.latticevectors[2].scalmult(self.cell.lengthscale)) - + "\n" - ) - filestring += "&END CELL\n\n" - filestring += "&COORD\n" - for a in self.cell.atomdata: - for b in a: - filestring += ( - b.spcstring() - + str( - Vector(mvmult3(self.cell.latticevectors, b.position)).scalmult( - self.cell.lengthscale - ) - ) - + "\n" - ) - filestring += "&END COORD\n" - return filestring - - -################################################################################################ - - -class CPMDFile(GeometryOutputFile): - """ - Class for storing the geometrical data needed in a CPMD run and the method - __str__ that outputs to a .inp file as a string. - """ - - def __init__(self, crystalstructure, string): - GeometryOutputFile.__init__(self, crystalstructure, string) - self.cell.newunit("bohr") - self.cutoff = 100.0 - - def __str__(self): - # Assign some local variables - a = self.cell.lengthscale - lattice = self.cell.latticevectors - ed = ElementData() - # Transformation to cartesian coordinates - transmtx = [] - for i in range(3): - transmtx.append([]) - for j in range(3): - transmtx[i].append(lattice[i][j] * a) - # docstring - filestring = self.docstring + "\n" - filestring += "&SYSTEM\n" - # lattice - filestring += " CELL VECTORS\n" - for vec in transmtx: - for coord in vec: - filestring += " %19.15f" % coord - filestring += "\n" - # Cutoff - filestring += " CUTOFF\n" - filestring += " " + str(self.cutoff) + "\n" - filestring += "&END\n\n" - # The atom position info - filestring += "&ATOMS\n" - # get all species - species = set([]) - for a in self.cell.atomdata: - for b in a: - species.add(b.spcstring()) - for spc in species: - filestring += "*[pseudopotential file for " + spc + " here]\n" - # Find maximal angular momentum - spcs = spc.split("/") - l = "s" - for s in spcs: - if ed.angularmomentum[ed.elementblock[s]] > ed.angularmomentum[l]: - l = ed.elementblock[s] - natoms = 0 - posstring = "" - for a in self.cell.atomdata: - for b in a: - if b.spcstring() == spc: - natoms += 1 - posstring += str(Vector(mvmult3(transmtx, b.position))) + "\n" - # Print - filestring += str(natoms) + "\n" - filestring += posstring - filestring += "&END\n" - return filestring - - -################################################################################################ - - -class SiestaFile(GeometryOutputFile): - """ - Class for storing the geometrical data needed in a Siesta run and the method - __str__ that outputs to a .fdf file as a string. - """ - - def __init__(self, crystalstructure, string): - GeometryOutputFile.__init__(self, crystalstructure, string) - self.cell.newunit("angstrom") - # Make sure the docstring has comment form - self.docstring = self.docstring.rstrip("\n") - tmpstrings = self.docstring.split("\n") - self.docstring = "" - for string in tmpstrings: - string = string.lstrip("#") - string = "#" + string + "\n" - self.docstring += string - - def __str__(self): - # Assign some local variables - lattice = self.cell.latticevectors - ed = ElementData() - # docstring - filestring = self.docstring - filestring += "AtomicCoordinatesFormat".ljust(28) + "Fractional\n" - species = set([]) - natom = 0 - for a in self.cell.atomdata: - natom += len(a) - for b in a: - species.add(b.spcstring()) - species = list(species) - nspcs = len(species) - filestring += ( - "LatticeConstant".ljust(28) + str(self.cell.lengthscale) + " Ang\n" - ) - filestring += "NumberOfAtoms".ljust(28) + str(natom) + "\n" - filestring += "NumberOfSpecies".ljust(28) + str(nspcs) + "\n" - # lattice - filestring += "%block LatticeVectors\n" - for vec in lattice: - filestring += str(vec) + "\n" - filestring += "%endblock LatticeVectors\n" - # Atomic coordinates - filestring += "%block AtomicCoordinatesAndAtomicSpecies\n" - i = 1 - for sp in species: - for a in self.cell.atomdata: - for b in a: - if b.spcstring() == sp: - filestring += str(b.position) - filestring += " %i\n" % i - i += 1 - filestring += "%endblock AtomicCoordinatesAndAtomicSpecies\n" - # Chemical species - filestring += "%block ChemicalSpeciesLabel\n" - i = 1 - for sp in species: - filestring += str(i).ljust(8) - if len(sp) > 2: - filestring += "?? ?? # " - tsp = sp.split("/") - for t in tsp: - filestring += str(ed.elementnr[t]) + "/" - filestring = filestring.rstrip("/") - filestring += " " + sp + "\n" - else: - filestring += str(ed.elementnr[sp]).ljust(8) + sp.ljust(8) + "\n" - i += 1 - filestring += "%endblock ChemicalSpeciesLabel\n" - return filestring - - -################################################################################################ - - -class ABINITFile(GeometryOutputFile): - """ - Class for storing the geometrical data needed in an abinit run and the method - __str__ that outputs the contents of a abinit input file as a string. - """ - - def __init__(self, crystalstructure, string): - GeometryOutputFile.__init__(self, crystalstructure, string) - self.cell.newunit("bohr") - # Make sure the docstring has comment form - self.docstring = self.docstring.rstrip("\n") - tmpstrings = self.docstring.split("\n") - self.docstring = "" - for string in tmpstrings: - string = string.lstrip("#") - string = "#" + string + "\n" - self.docstring += string - self.printbraces = False - - def __str__(self): - # Assign some local variables - a = self.cell.lengthscale - lattice = self.cell.latticevectors - ed = ElementData() - # docstring - filestring = self.docstring - # VASP needs lattice vector matrix to have positive triple product - if det3(lattice) < 0: - if lattice[0].length() == lattice[1].length() == lattice[2].length(): - # Shift the first and last for cubic lattices - transmtx = [[0, 0, 1], [0, 1, 0], [1, 0, 0]] - else: - # Else shift the two shortest - if ( - lattice[0].length() > lattice[1].length() - and lattice[0].length() > lattice[2].length() - ): - transmtx = [[1, 0, 0], [0, 0, 1], [0, 1, 0]] - elif ( - lattice[1].length() > lattice[2].length() - and lattice[1].length() > lattice[0].length() - ): - transmtx = [[0, 0, 1], [0, 1, 0], [1, 0, 0]] - else: - transmtx = [[0, 1, 0], [1, 0, 0], [0, 0, 1]] - else: - transmtx = [[1, 0, 0], [0, 1, 0], [0, 0, 1]] - lattice = mmmult3(transmtx, lattice) - # Print braces around values (or not) - if self.printbraces: - lbrace = "{" - rbrace = "}" - else: - lbrace = " " - rbrace = "" - # length scale and lattice - filestring += "# Structural parameters\n" - filestring += "acell " + lbrace + " 3*" + str(a) + " " + rbrace + " \n\n" - filestring += "rprim " + lbrace - for vec in lattice: - filestring += str(Vector(vec)) + "\n " - filestring = filestring[:-1] - filestring += rbrace + " \n" - # The atom position info - alloy = False - spcs = "" - typatstring = "typat " + lbrace + " " - natom = 0 - ntypat = 0 - znuclstring = "znucl " + lbrace + " " - alloystring = "" - xredstring = "xred " + lbrace + " " - for a in self.cell.atomdata: - for b in a: - natom += 1 - if spcs != b.spcstring(): - ntypat += 1 - if b.alloy(): - znuclstring += "?? " - alloystring += b.spcstring() + " " - alloy = True - else: - znuclstring += str(ed.elementnr[b.spcstring()]) + " " - typatstring += str(ntypat) + " " - xredstring += str(Vector(mvmult3(transmtx, b.position))) + "\n " - spcs = b.spcstring() - filestring += "natom " + lbrace + " " + str(natom) + " " + rbrace + " \n" - filestring += "ntypat " + lbrace + " " + str(ntypat) + " " + rbrace + " \n" - filestring += typatstring + rbrace + " \n" - filestring += znuclstring + rbrace + " " - if alloy: - filestring += " # " + alloystring - filestring += "\n" - filestring += xredstring - filestring = filestring[:-2] + rbrace + " \n" - return filestring - - -################################################################################################ - - -class AIMSFile(GeometryOutputFile): - """ - Class for storing the geometrical data needed in a FHI-AIMS run and the method - __str__ that outputs the contents of a abinit input file as a string. - """ - - def __init__(self, crystalstructure, string): - GeometryOutputFile.__init__(self, crystalstructure, string) - self.cell.newunit("angstrom") - self.cartesian = False - # Make sure the docstring has comment form - self.docstring = self.docstring.rstrip("\n") - tmpstrings = self.docstring.split("\n") - self.docstring = "" - for string in tmpstrings: - string = string.lstrip("#") - string = "#" + string + "\n" - self.docstring += string - - def __str__(self): - filestring = self.docstring + "\n" - latvecs = self.cell.latticevectors - for i in range(3): - for j in range(3): - latvecs[i][j] = latvecs[i][j] * self.cell.lengthscale - for vec in latvecs: - filestring += "lattice_vector " + str(vec) + "\n" - for a in self.cell.atomdata: - for b in a: - if self.cartesian: - filestring += ( - "atom " - + str(Vector(mvmult3(latvecs, b.position))) - + " " - + b.spcstring() - + "\n" - ) - else: - filestring += ( - "atom_frac " + str(b.position) + " " + b.spcstring() + "\n" - ) - return filestring - - -################################################################################################ -# UNFINISHED! - - -class MCSQSFile(GeometryOutputFile): - """ - Class for storing the geometrical data needed by the mcsqs SQS generator and the method - __str__ that outputs the contents of a mcsqs input file as a string. - """ - - def __init__(self, crystalstructure, string): - GeometryOutputFile.__init__(self, crystalstructure, string) - self.cell.newunit("angstrom") - self.cartesian = False - # Make sure the docstring has comment form - self.docstring = self.docstring.rstrip("\n") - tmpstrings = self.docstring.split("\n") - self.docstring = "" - for string in tmpstrings: - string = string.lstrip("#") - string = "#" + string + "\n" - self.docstring += string - - def __str__(self): - l = self.cell.lengthscale - filestring = "%12.8f %12.8f %12.8f 90.0 90.0 90.0" - filestring += str(self.cell.latticevectors) - for a in self.cell.atomdata: - for b in a: - filestring += +str(b.position) + " " - for k, v in b.species.items(): - filestring += k + "=" + str(v) - return filestring - - -################################################################################################ - - -class POSCARFile(GeometryOutputFile): - """ - Class for storing the geometrical data needed in a POSCAR file and the method - __str__ that outputs the contents of a POSCAR file as a string. - If you want POSCAR to be printed with the atomic positions in Cartesian form, - then set - POSCARFile.printcartpos = True - If you want to put the overall length scale on the lattice vectors and print 1.0 - for the length scale, then set - POSCARFile.printcartvecs = True - """ - - def __init__(self, crystalstructure, string, vca=False): - GeometryOutputFile.__init__(self, crystalstructure, string) - self.cell.newunit("angstrom") - self.printcartvecs = False - self.printcartpos = False - self.vasp5format = False - self.selectivedyn = False - self.vca = vca - # set up species list - tmp = set([]) - for a in self.cell.atomdata: - for b in a: - if self.vca: - for k, v in b.species.items(): - tmp.add(k) - else: - tmp.add(b.spcstring()) - self.species = list(tmp) - # make sure the docstring goes on one line - self.docstring = self.docstring.replace("\n", " ") - - def SpeciesOrder(self): - """ - Return a string with the species in the order they appear in POSCAR. - """ - returnstring = "" - for sp in self.species: - returnstring += sp + " " - return returnstring - - def __str__(self): - # Assign some local variables - lattice = self.cell.latticevectors - # VASP needs lattice vector matrix to have positive triple product - if det3(lattice) < 0: - if lattice[0].length() == lattice[1].length() == lattice[2].length(): - # Shift the first and last for cubic lattices - transmtx = [[0, 0, 1], [0, 1, 0], [1, 0, 0]] - else: - # Else shift the two shortest - if ( - lattice[0].length() > lattice[1].length() - and lattice[0].length() > lattice[2].length() - ): - transmtx = [[1, 0, 0], [0, 0, 1], [0, 1, 0]] - elif ( - lattice[1].length() > lattice[2].length() - and lattice[1].length() > lattice[0].length() - ): - transmtx = [[0, 0, 1], [0, 1, 0], [1, 0, 0]] - else: - transmtx = [[0, 1, 0], [1, 0, 0], [0, 0, 1]] - else: - transmtx = [[1, 0, 0], [0, 1, 0], [0, 0, 1]] - lattice = mmmult3(transmtx, lattice) - - # For output of atomic positions - a = self.cell.lengthscale - positionunits = "" - if self.selectivedyn: - positionunits += "Selective dynamics\n" - if self.printcartpos: - positionunits += "Cartesian\n" - coordmat = [] - for i in range(3): - coordmat.append([]) - for j in range(3): - coordmat[i].append(lattice[i][j] * a) - else: - coordmat = [[1, 0, 0], [0, 1, 0], [0, 0, 1]] - positionunits += "Direct\n" - # The first line with info from input docstring - filestring = self.docstring - if not self.vasp5format: - filestring += " Species order: " - for sp in self.species: - filestring += sp + " " - filestring += "\n" - # Lattice parameter and vectors - if self.printcartvecs: - latticestring = " 1.0\n" - for i in range(3): - latticestring += "%19.15f %19.15f %19.15f\n" % ( - a * lattice[i][0], - a * lattice[i][1], - a * lattice[i][2], - ) - else: - latticestring = " %10f\n" % a - for i in range(3): - latticestring += "%19.15f %19.15f %19.15f\n" % ( - lattice[i][0], - lattice[i][1], - lattice[i][2], - ) - filestring += latticestring - # print species here if vasp 5 format - if self.vasp5format: - for sp in self.species: - filestring += (" " + sp).rjust(4) - filestring += "\n" - # positions and number of species - nspstring = "" - positionstring = "" - for sp in self.species: - nsp = 0 - for a in self.cell.atomdata: - for b in a: - if self.vca: - for k, v in b.species.items(): - if k == sp: - nsp += 1 - p = Vector( - mvmult3(coordmat, mvmult3(transmtx, b.position)) - ) - positionstring += str(p) - if self.selectivedyn: - positionstring += " T T T" - positionstring += "\n" - else: - if b.spcstring() == sp: - nsp += 1 - p = Vector(mvmult3(coordmat, mvmult3(transmtx, b.position))) - positionstring += str(p) - if self.selectivedyn: - positionstring += " T T T" - positionstring += "\n" - nspstring += (" " + str(nsp)).rjust(4) - filestring += nspstring + "\n" - filestring += positionunits - filestring += positionstring - return filestring - - -class POTCARFile: - """ - Class for representing and outputting a POTCAR file for VASP. - """ - - def __init__( - self, - crystalstructure, - directory="", - vca=False, - prioritylist=["_d", "_pv", "_sv", "", "_h", "_s"], - ): - self.cell = crystalstructure - self.vca = vca - self.prioritylist = prioritylist - # POTCAR library - if directory != "": - self.dir = directory - else: - try: - self.dir = os.environ["VASP_PSEUDOLIB"] - except: - try: - self.dir = os.environ["VASP_PAWLIB"] - except: - self.dir = "" - # check directory - if self.dir == "": - raise SetupError("No path to the VASP pseudopotential library specified.\n") - if not os.path.exists(self.dir): - raise SetupError( - "The specified path to the VASP pseudopotential library does not exist.\n" - + self.dir - ) - # set up species list - poscarfile = POSCARFile(self.cell, "", vca=self.vca) - self.species = poscarfile.species - - def __str__(self): - # get all files - potcarlist = [] - for a in self.species: - for version in self.prioritylist: - potcarfile = self.dir + "/" + a + version + "/POTCAR" - if os.path.exists(potcarfile): - potcarlist.append(potcarfile) - break - # read potcar files and put in outstring - outstring = "" - for f in potcarlist: - potcar = open(f, "r") - outstring += potcar.read() - potcar.close() - return outstring - - -class KPOINTSFile: - """ - Class for representing and outputting a KPOINTS file for VASP. - """ - - def __init__(self, crystalstructure, docstring="", kresolution=0.2): - self.docstring = docstring - self.kresolution = kresolution - # set reciprocal lattice vectors in reciprocal angstroms - reclatvect = crystalstructure.reciprocal_latticevectors() - for j in range(3): - for i in range(3): - reclatvect[j][i] = reclatvect[j][i] / crystalstructure.lengthscale - # Lengths of reciprocal lattice vectors - reclatvectlen = [elem.length() for elem in reclatvect] - self.kgrid = [ - max(1, int(round(elem / self.kresolution))) for elem in reclatvectlen - ] - - def __str__(self): - tmp = self.docstring - tmp += " k-space resolution ~" + str(self.kresolution) + "/A\n" - tmp += " 0\n" - tmp += "Gamma\n" - tmp += ( - str(self.kgrid[0]) - + " " - + str(self.kgrid[1]) - + " " - + str(self.kgrid[2]) - + "\n" - ) - tmp += "0 0 0\n" - return tmp - - -class INCARFile: - """ - Class for representing and outputting a INCAR file for VASP. - """ - - def __init__( - self, - crystalstructure, - docstring="", - potcardir="", - vca=False, - prioritylist=["_d", "_pv", "_sv", "", "_h", "_s"], - encutfac=1.5, - ): - self.cell = crystalstructure - self.docstring = "# " + docstring.lstrip("#").rstrip("\n") + "\n" - self.prioritylist = prioritylist - self.vca = vca - self.vcaspecies = None - # ecut = max(encuts found in potcars)*encutfac - self.encutfac = encutfac - poscarfile = POSCARFile(self.cell, "", vca=self.vca) - # we need the potcar directory - if potcardir != "": - self.potcardir = potcardir - else: - try: - self.potcardir = os.environ["VASP_PSEUDOLIB"] - except: - try: - self.potcardir = os.environ["VASP_PAWLIB"] - except: - self.potcardir = "" - # check directory - if self.potcardir == "": - raise SetupError("No path to the VASP pseudopotential library specified.\n") - if not os.path.exists(self.potcardir): - raise SetupError( - "The specified path to the VASP pseudopotential library does not exist.\n" - + self.dir - ) - - if self.vca: - # set up species list - tmp = set([]) - for a in self.cell.atomdata: - for b in a: - for k, v in b.species.items(): - tmp.add((k, v)) - tmp = list(tmp) - self.vcaspecies = [] - for s in poscarfile.species: - for t in tmp: - if t[0] == s: - self.vcaspecies.append(t) - # set up species dict - speciesdict = dict([]) - for a in self.cell.atomdata: - for b in a: - if self.vca: - for k, v in b.species.items(): - spcstr = k - if spcstr in speciesdict: - t = speciesdict[spcstr] + 1 - speciesdict[spcstr] = t - else: - speciesdict[spcstr] = 1 - else: - spcstr = b.spcstring() - if spcstr in speciesdict: - t = speciesdict[spcstr] + 1 - speciesdict[spcstr] = t - else: - speciesdict[spcstr] = 1 - # species list in the same order as poscar - self.species = [] - for s in poscarfile.species: - for k, v in speciesdict.items(): - if k == s: - self.species.append((k, v)) - # get potcar list - potcars = dict([]) - specieslist = [] - for a in speciesdict: - for version in self.prioritylist: - potcarfile = self.potcardir + "/" + a + version + "/POTCAR" - if os.path.exists(potcarfile): - potcars[a] = potcarfile - specieslist.append(a) - break - # get maximal encut and number of electrons from potcars - enmaxs = dict([]) - zvals = dict([]) - for a, f in potcars.items(): - potcar = open(f, "r") - for line in potcar: - if search("ZVAL", line): - zvals[a] = float( - line.split("ZVAL")[1] - .lstrip("= ") - .split()[0] - .strip(string.punctuation) - ) - if search("ENMAX", line): - enmaxs[a] = float( - line.split("ENMAX")[1] - .lstrip("= ") - .split()[0] - .strip(string.punctuation) - ) - if search("END of PSCTR", line): - break - potcar.close() - self.maxencut = max([k for v, k in enmaxs.items()]) - # do we suspect that this might be magnetic? - self.magnetic = False - self.magmomlist = [] - for s in self.species: - if s[0] in suspiciouslist: - self.magnetic = True - self.magmomlist.append(str(s[1]) + "*" + str(initialmoments[s[0]])) - else: - self.magmomlist.append(str(s[1]) + "*0") - # Determine NBANDS - nmag = sum([eval(i) for i in self.magmomlist]) - nelect = 0.0 - for sp, z in zvals.items(): - for a in self.cell.atomdata: - for b in a: - if sp == b.spcstring(): - nelect += z - if nmag > 0: - nstates = int(math.ceil(nelect)) - else: - nstates = int(math.ceil(nelect / 2)) - # NBANDS is max of the default VASP definition and occupied bands+20 - natoms = sum([len(a) for a in self.cell.atomdata]) - self.nbands = max( - max( - max(int(math.ceil(nelect / 2)) + int(natoms / 2), 3), - math.ceil(0.6 * nelect), - ) - + nmag, - nstates + 20, - ) - - def __str__(self): - tmp = self.docstring - tmp += "ENCUT = " + str(self.maxencut * self.encutfac) + "\n" - tmp += "#NBANDS = " + str(self.nbands) + "\n" - ## tmp += "IBRION = 1\n" - ## tmp += "POTIM = 0.4\n" - ## tmp += "ISIF = 2\n" - ## tmp += "NSW = 30\n" - ## tmp += "NELMIN = 4\n" - tmp += "PREC = Accurate\n" - tmp += "LREAL = Auto\n" - tmp += "ISMEAR = 0\n" - tmp += "SIGMA = 0.1\n" - if self.magnetic: - tmp += "ISPIN = 2\n" - tmp += "MAGMOM = " - for species in self.magmomlist: - tmp += species + " " - tmp += "\n" - if self.vca: - tmp += "VCA = " - for s in self.vcaspecies: - tmp += str(s[1]) + " " - tmp += "\n" - tmp += "LVCADER = .True.\n" - return tmp - - -################################################################################################ -# EMTO -class KFCDFile(GeometryOutputFile): - """ - Class for storing the geometrical data needed in a [filename].dat file for the kfcd program - and the method __str__ that outputs the contents of the .dat file as a string. - """ - - def __init__(self, crystalstructure, string): - GeometryOutputFile.__init__(self, crystalstructure, string) - # Set atomic units for length scale - self.jobnam = "default" - self.kstrjobnam = "default" - # To be put on the first line - self.programdoc = "" - - def __str__(self): - filestring = "" - tmpstring = "KFCD MSGL..= 0" - tmpstring = tmpstring.ljust(25) + self.programdoc.replace("\n", " ") + "\n" - filestring += tmpstring - tmpstring = "JOBNAM...=" + self.jobnam + "\n" - filestring += tmpstring - tmpstring = "STRNAM...=" + self.kstrjobnam + "\n" - filestring += tmpstring - filestring += "DIR001=../kstr/smx/\n" - filestring += "DIR002=../kgrn/chd/\n" - filestring += "DIR003=../shape/shp/\n" - filestring += "DIR004=../bmdl/mdl/\n" - filestring += "DIR006=./\n" - filestring += "Lmaxs.= 30 NTH..= 41 NFI..= 81 FPOT..= N\n" - filestring += "OVCOR.= Y UBG..= N NPRN.= 0\n" - return filestring - - -class KGRNFile(GeometryOutputFile): - """ - Class for storing the geometrical data needed in a [filename].dat file for the kgrn program - and the method __str__ that outputs the contents of the .dat file as a string. - """ - - def __init__(self, crystalstructure, string): - GeometryOutputFile.__init__(self, crystalstructure, string) - # Set atomic units for length scale - self.jobnam = "default" - self.kstrjobnam = "default" - # To be put on the first line - self.programdoc = "" - # Set atomic units for length scale - self.cell.newunit("bohr") - self.latticenr = 14 - - def __str__(self): - ed = ElementData() - filestring = "" - tmpstring = "KGRN" - tmpstring = tmpstring.ljust(25) + self.programdoc.replace("\n", " ") + "\n" - filestring += tmpstring - tmpstring = "JOBNAM=" + self.jobnam + "\n" - filestring += tmpstring - filestring += "STRT..= A MSGL.= 0 EXPAN.= S FCD..= Y FUNC..= SCA\n" - tmpstring = "FOR001=../kstr/smx/" + self.kstrjobnam + ".tfh\n" - tmpstring += "FOR001=../kstr/smx/" + self.kstrjobnam + "10.tfh\n" - filestring += tmpstring - filestring += "DIR002=pot/\n" - filestring += "DIR003=pot/\n" - tmpstring = "FOR004=../bmdl/mdl/" + self.kstrjobnam + ".mdl\n" - filestring += tmpstring - filestring += "DIR006=\n" - filestring += "DIR009=pot/\n" - filestring += "DIR010=chd/\n" - # Use environment variable TMPDIR if possible - tmpstring = "DIR011=" - if "TMPDIR" in os.environ: - tmpstring += os.environ["TMPDIR"] - # Make sure the string will end with a single / - tmpstring = tmpstring.rstrip("/") - else: - # ...else check for /tmp - if os.path.isdir("/tmp"): - tmpstring += "/tmp" - else: - # ...and last resort is ./ - tmpstring += "." - tmpstring += "/\n" - filestring += tmpstring - filestring += self.docstring.replace("\n", " ") + "\n" - filestring += "Band: 10 lines\n" - tmpstring = ( - "NITER.= 50 NLIN.= 31 NPRN.= 0 NCPA.= 20 NT...=%3i" - % len(self.cell.atomdata) - + " MNTA.=" - ) - # Work out maximal number of species occupying a site - mnta = 1 - for a in self.cell.atomdata: - for b in a: - mnta = max(mnta, len(b.species)) - tmpstring += "%3i" % mnta + "\n" - filestring += tmpstring - filestring += "MODE..= 3D FRC..= N DOS..= N OPS..= N AFM..= P CRT..= M\n" - filestring += "Lmaxh.= 8 Lmaxt= 4 NFI..= 31 FIXG.= 2 SHF..= 0 SOFC.= N\n" - # Choose brillouin zone by lattice type - # Output the smallest allowed n for each direction in this lattice type - if self.latticenr == 1: - nkx = 0 - nky = 2 - nkz = 0 - elif self.latticenr == 2: - nkx = 0 - nky = 5 - nkz = 0 - elif self.latticenr == 3: - nkx = 0 - nky = 3 - nkz = 0 - elif self.latticenr == 4: - nkx = 0 - nky = 3 - nkz = 2 - elif self.latticenr == 5: - nkx = 0 - nky = 2 - nkz = 2 - elif self.latticenr == 6: - nkx = 0 - nky = 3 - nkz = 2 - elif self.latticenr == 7: - nkx = 0 - nky = 3 - nkz = 3 - elif self.latticenr == 8: - nkx = 2 - nky = 2 - nkz = 1 - elif self.latticenr == 9: - nkx = 2 - nky = 2 - nkz = 1 - elif self.latticenr == 10: - nkx = 2 - nky = 2 - nkz = 1 - elif self.latticenr == 11: - nkx = 1 - nky = 1 - nkz = 1 - elif self.latticenr == 12: - nkx = 1 - nky = 2 - nkz = 1 - elif self.latticenr == 13: - nkx = 3 - nky = 3 - nkz = 0 - else: - nkx = 2 - nky = 2 - nkz = 2 - filestring += ( - "KMSH...= G IBZ..= %2i NKX..= %2i NKY..= %2i NKZ..= %2i FBZ..= N\n" - % (self.latticenr, nkx, nky, nkz) - ) - filestring += "KMSH2..= G IBZ2.= 1 NKX2.= 4 NKY2.= 0 NKZ2.= 51\n" - filestring += "ZMSH...= C NZ1..= 16 NZ2..= 16 NZ3..= 8 NRES.= 4 NZD.= 500\n" - filestring += "DEPTH..= 1.500 IMAGZ.= 0.020 EPS...= 0.200 ELIM..= -1.000\n" - filestring += "AMIX...= 0.100 EFMIX.= 1.000 VMTZ..= 0.000 MMOM..= 0.000\n" - filestring += ( - "TOLE...= 1.d-05 TOLEF.= 1.d-05 TOLCPA= 1.d-05 TFERMI= 500.0 (K)\n" - ) - # Get number of sites - nosites = 0 - for a in self.cell.atomdata: - nosites += len(a) - # average wigner-seitz radius - volume = abs(det3(self.cell.latticevectors)) - wsr = self.cell.lengthscale * 3 * volume / (nosites * 4 * pi) ** third - filestring += "SWS......=%8f NSWS.= 1 DSWS..= 0.05 ALPCPA= 0.9020\n" % wsr - filestring += "Setup: 2 + NQ*NS lines\n" - filestring += "EFGS...= 0.000 HX....= 0.100 NX...= 11 NZ0..= 6 STMP..= Y\n" - # atom info - filestring += "Symb IQ IT ITA NZ CONC Sm(s) S(ws) WS(wst) QTR SPLT\n" - iq = 1 - it = 1 - for a in self.cell.atomdata: - ita = 1 - # THIS MAKES ASSUMPTIONS ABOUT THE ORDERING OF ATOMDATA - # But we're OK for all orderings implemented so far - for comp in a[0].spcstring().split("/"): - for b in a: - if comp in b.species: - tmpstring = comp.ljust(4) + " " + "%3i%3i%3i" % (iq, it, ita) - tmpstring += "%4i" % ed.elementnr[comp] - tmpstring += "%7.3f%7.3f%7.3f%7.3f" % ( - a[0].species[comp], - 1, - 1, - 1, - ) - tmpstring += "%5.2f%5.2f\n" % (0, 0) - filestring += tmpstring - iq += 1 - ita += 1 - iq -= len(a) - iq += len(a) - it += 1 - filestring += "Atom: 4 lines + NT*NTA*6 lines\n" - filestring += "IEX...= 4 NP..= 251 NES..= 15 NITER=100 IWAT.= 0 NPRNA= 0\n" - filestring += "VMIX.....= 0.300000 RWAT....= 3.500000 RMAX....= 20.000000\n" - filestring += "DX.......= 0.030000 DR1.....= 0.002000 TEST....= 1.00E-12\n" - filestring += "TESTE....= 1.00E-12 TESTY...= 1.00E-12 TESTV...= 1.00E-12\n" - for a in self.cell.atomdata: - for comp in a[0].species: - filestring += comp + "\n" - try: - filestring += ed.emtoelements[comp] - except KeyError: - filestring += "\n\n\n\n\n" - return filestring - - -class ShapeFile(GeometryOutputFile): - """ - Class for storing the geometrical data needed in a [filename].dat file for the shape program - and the method __str__ that outputs the contents of the .dat file as a string. - """ - - def __init__(self, crystalstructure, string): - GeometryOutputFile.__init__(self, crystalstructure, string) - self.jobnam = "default" - # To be put on the first line - self.programdoc = "" - - def __str__(self): - filestring = "" - tmpstring = "SHAPE HP......=N" - tmpstring = tmpstring.ljust(25) + self.programdoc.replace("\n", " ") + "\n" - filestring += tmpstring - tmpstring = "JOBNAM...=" + self.jobnam.ljust(10) + " MSGL.= 1\n" - filestring += tmpstring - filestring += "FOR001=../kstr/smx/" + self.jobnam + ".tfh\n" - filestring += "DIR002=shp/\n" - filestring += "DIR006=./\n" - filestring += "Lmax..= 30 NSR..=129 NFI..= 11\n" - filestring += "NPRN..= 0 IVEF.= 3\n" - return filestring - - -class BMDLFile(GeometryOutputFile): - """ - Class for storing the geometrical data needed in a [filename].dat file for the bmdl program - and the method __str__ that outputs the contents of the .dat file as a string. - """ - - def __init__(self, crystalstructure, string): - GeometryOutputFile.__init__(self, crystalstructure, string) - # Set atomic units for length scale - self.cell.newunit("bohr") - self.jobnam = "default" - self.latticenr = 14 - self.a = 1 - self.b = 1 - self.c = 1 - self.alpha = 90 - self.beta = 90 - self.gamma = 90 - # To be put on the first line - self.programdoc = "" - - def __str__(self): - lv = self.cell.latticevectors - ed = ElementData() - filestring = "" - tmpstring = "BMDL HP......=N" - tmpstring = tmpstring.ljust(25) + self.programdoc.replace("\n", " ") + "\n" - filestring += tmpstring - tmpstring = "JOBNAM...=" + self.jobnam.ljust(10) + " MSGL.= 1 NPRN.= 0\n" - filestring += tmpstring - filestring += "DIR001=mdl/\n" - filestring += "DIR006=./\n" - filestring += "Madelung potential, " + self.docstring.replace("\n", " ") + "\n" - filestring += "NL.....= 7\n" - filestring += "LAMDA....= 2.5000 AMAX....= 4.5000 BMAX....= 4.5000\n" - # Get number of sites - nosites = 0 - for a in self.cell.atomdata: - nosites += len(a) - if self.latticenr == 0: - tmpstring = "NQ3...=%3i LAT...= 0 IPRIM.= 0 NGHBP.=13 NQR2..= 0\n" % ( - nosites, - self.latticenr, - ) - else: - tmpstring = "NQ3...=%3i LAT...=%2i IPRIM.= 1 NGHBP.=13 NQR2..= 0\n" % ( - nosites, - self.latticenr, - ) - filestring += tmpstring - boa = self.b / self.a - coa = self.c / self.a - filestring += "A........= 1.0000000 B.......=%10f C.......=%10f\n" % (boa, coa) - tmpstring = "" - if self.latticenr == 0: - for i in range(3): - tmpstring += "BSX......=%10f BSY.....=%10f BSZ.....=%10f\n" % ( - lv[i][0], - lv[i][1], - lv[i][2], - ) - else: - tmpstring += "ALPHA....=%10f BETA....=%10f GAMMA...=%10f\n" % ( - self.alpha, - self.beta, - self.gamma, - ) - filestring += tmpstring - for a in self.cell.atomdata: - for b in a: - v = mvmult3(lv, b.position) - filestring += "QX(IQ)...=%10f QY......=%10f QZ......=%10f" % ( - v[0], - v[1], - v[2], - ) - filestring += " " + b.spcstring() + "\n" - return filestring - - -class KSTRFile(GeometryOutputFile): - """ - Class for storing the geometrical data needed in a [filename].dat file for the kstr program - and the method __str__ that outputs the contents of the .dat file as a string. - """ - - def __init__(self, crystalstructure, string): - GeometryOutputFile.__init__(self, crystalstructure, string) - # Set atomic units for length scale - self.cell.newunit("bohr") - self.jobnam = "default" - self.latticenr = 14 - self.a = 1 - self.b = 1 - self.c = 1 - self.alpha = 90 - self.beta = 90 - self.gamma = 90 - self.hardsphere = 0.67 - self.iprim = 0 - # To be put on the first line - self.programdoc = "" - - def __str__(self): - lv = self.cell.latticevectors - ed = ElementData() - filestring = "" - tmpstring = "KSTR HP......=N" - tmpstring = tmpstring.ljust(25) + self.programdoc.replace("\n", " ") + "\n" - filestring += tmpstring - tmpstring = ( - "JOBNAM...=" - + self.jobnam.ljust(10) - + " MSGL.= 1 MODE...=B STORE..=Y HIGH...=Y\n" - ) - filestring += tmpstring - filestring += "DIR001=smx/\n" - filestring += "DIR006=./\n" - filestring += "Slope matrices, " + self.docstring.replace("\n", " ") + "\n" - # NL = maximal l from element blocks - maxl = 1 - for a in self.cell.atomdata: - for b in a: - for i in b.species: - if ed.elementblock[i] == "p": - maxl = max(maxl, 2) - elif ed.elementblock[i] == "d": - maxl = max(maxl, 3) - elif ed.elementblock[i] == "f": - maxl = max(maxl, 4) - tmpstring = ( - "NL.....= %1i NLH...=11 NLW...= 9 NDER..= 6 ITRANS= 3 NPRN..= 0\n" % maxl - ) - filestring += tmpstring - # Setting the real space summation cutoff to 4.5*(wigner-seitz radius) - volume = abs(det3(lv)) - wsr = (3 * volume / (self.cell.natoms() * 4 * pi)) ** third - tmpstring = "(K*W)^2..= 0.000000 DMAX....=%10f RWATS...= 0.10\n" % ( - wsr * 4.5 - ) - filestring += tmpstring - tmpstring = "NQ3...=%3i LAT...=%2i IPRIM.=%2i NGHBP.=13 NQR2..= 0\n" % ( - self.cell.natoms(), - self.latticenr, - self.iprim, - ) - filestring += tmpstring - boa = self.b / self.a - coa = self.c / self.a - filestring += "A........= 1.0000000 B.......=%10f C.......=%10f\n" % (boa, coa) - tmpstring = "" - if self.iprim == 0: - for i in range(3): - tmpstring += "BSX......=%10f BSY.....=%10f BSZ.....=%10f\n" % ( - lv[i][0], - lv[i][1], - lv[i][2], - ) - else: - tmpstring += "ALPHA....=%10f BETA....=%10f GAMMA...=%10f\n" % ( - self.alpha, - self.beta, - self.gamma, - ) - filestring += tmpstring - for a in self.cell.atomdata: - for b in a: - v = mvmult3(lv, b.position) - filestring += "QX(IQ)...=%10f QY......=%10f QZ......=%10f" % ( - v[0], - v[1], - v[2], - ) - filestring += " " + b.spcstring() + "\n" - for i in range(self.cell.natoms()): - filestring += "a/w(IQ)..=" - for i in range(4): - filestring += "%5.2f" % self.hardsphere - filestring += "\n" - filestring += "LAMDA....= 2.5000 AMAX....= 4.5000 BMAX....= 4.5000\n" - return filestring - - -################################################################################################ -# SPRKKR - - -class XBandSysFile(GeometryOutputFile): - """ - Class for storing the geometrical data needed in a [filename].sys file for the xband program - and the method __str__ that outputs the contents of the .sys file as a string. - """ - - def __init__(self, crystalstructure, string): - GeometryOutputFile.__init__(self, crystalstructure, string) - # Set atomic units for length scale - self.cell.newunit("bohr") - self.jobnam = "default" - self.a = 1 - self.b = 1 - self.c = 1 - self.alpha = 90 - self.beta = 90 - self.gamma = 90 - self.minangmom = None - self.filename = "" - # To be put on the first line - self.programdoc = "" - - def __str__(self): - ed = ElementData() - # First identify any site which is not filled (concentrations add to 1.0) - # and fill up with vacuum sphere (Vc) - self.cell.fill_out_empty(label="Vc") - # docstring on a single line - filestring = deletenewline(self.docstring, replace=" ") - filestring += "\n" + self.filename + "\n" - filestring += "xband-version\n" - filestring += "5.0\n" - # It would be really cool to support lower dimensions...one day. - filestring += "dimension\n" - filestring += "3D\n" - filestring += "Bravais lattice\n" - if self.cell.crystal_system() == "triclinic": - filestring += "1 triclinic primitive -1 C_i \n" - elif self.cell.crystal_system() == "monoclinic": - if self.cell.spacegroupsetting == "P": - filestring += "2 monoclinic primitive 2/m C_2h\n" - elif ( - self.cell.spacegroupsetting == "A" - or self.cell.spacegroupsetting == "B" - or self.cell.spacegroupsetting == "C" - ): - filestring += "3 monoclinic primitive 2/m C_2h\n" - else: - sys.stderr.write( - "xband only knows primitive and base-centered monoclinic settings!\n" - ) - sys.exit(43) - elif self.cell.crystal_system() == "orthorhombic": - if self.cell.spacegroupsetting == "P": - filestring += "4 orthorombic primitive mmm D_2h\n" - elif ( - self.cell.spacegroupsetting == "A" - or self.cell.spacegroupsetting == "B" - or self.cell.spacegroupsetting == "C" - ): - filestring += "5 orthorombic body-centered mmm D_2h\n" - elif self.cell.spacegroupsetting == "I": - filestring += "6 orthorombic body-centered mmm D_2h\n" - elif self.cell.spacegroupsetting == "F": - filestring += "7 orthorombic face-centered mmm D_2h\n" - else: - sys.stderr.write( - "xband does not know %1s centering of an orthorhombic cell.\n" - % self.cell.spacegroupsetting - ) - sys.exit(43) - elif self.cell.crystal_system() == "tetragonal": - if self.cell.spacegroupsetting == "P": - filestring += "8 tetragonal primitive 4/mmm D_4h\n" - elif self.cell.spacegroupsetting == "I": - filestring += "9 tetragonal body-centered 4/mmm D_4h\n" - else: - sys.stderr.write( - "xband only knows primitive and body-centered tetragonal settings!\n" - ) - sys.exit(43) - elif self.cell.crystal_system() == "trigonal": - filestring += "10 trigonal primitive -3m D_3d\n" - elif self.cell.crystal_system() == "hexagonal": - filestring += "11 hexagonal primitive 6/mmm D_6h\n" - elif self.cell.crystal_system() == "cubic": - if self.cell.spacegroupsetting == "P": - filestring += "12 cubic primitive m3m O_h \n" - elif self.cell.spacegroupsetting == "F": - filestring += "13 cubic face-centered m3m O_h \n" - elif self.cell.spacegroupsetting == "I": - filestring += "14 cubic body-centered m3m O_h \n" - else: - sys.stderr.write( - "xband does not know %1s centering of a cubic cell.\n" - % self.cell.spacegroupsetting - ) - sys.exit(43) - filestring += "space group number (ITXC and AP)\n" - filestring += ( - "%5i%5i" % (self.cell.spacegroupnr, Number2AP[self.cell.spacegroupnr]) - + "\n" - ) - filestring += "structure type\n" - filestring += "UNKNOWN\n" - filestring += "lattice parameter A [a.u.]\n" - filestring += "%18.12f\n" % self.cell.lengthscale - filestring += "ratio of lattice parameters b/a c/a\n" - filestring += "%18.12f%18.12f\n" % (self.cell.boa, self.cell.coa) - filestring += "lattice parameters a b c [a.u.]\n" - a = self.cell.lengthscale - b = self.cell.b * self.cell.lengthscale / self.cell.a - c = self.cell.c * self.cell.lengthscale / self.cell.a - filestring += "%18.12f%18.12f%18.12f\n" % (a, b, c) - filestring += "lattice angles alpha beta gamma [deg]\n" - filestring += "%18.12f%18.12f%18.12f\n" % ( - self.cell.alpha, - self.cell.beta, - self.cell.gamma, - ) - filestring += "primitive vectors (cart. coord.) [A]\n" - for vec in self.cell.latticevectors: - for p in vec: - filestring += "%18.12f" % p - filestring += "\n" - # Get number of sites and fill out with empty spheres if the sites are not fully filled - filestring += "number of sites NQ\n" - nq = 0 - for a in self.cell.atomdata: - nq += len(a) - self.cell.fill_out_empty(label="Vc") - filestring += "%3i\n" % nq - filestring += " IQ ICL basis vectors (cart. coord.) [A] RWS [a.u.] NLQ NOQ ITOQ\n" - # Average Wigner-Seitz radius - rws = ( - pow(3 * self.cell.volume() / (4 * pi * len(self.cell.atomset)), 1.0 / 3.0) - * self.cell.lengthscale - ) - iq = 0 - icl = 0 - itoq = 0 - for a in self.cell.atomdata: - icl += 1 - itoqs = [] - for sp in a[0].species: - itoq += 1 - itoqs.append(itoq) - for b in a: - iq += 1 - if self.minangmom: - angmom = max( - max( - [ - ed.angularmomentum[ed.elementblock[spcs]] - for spcs in b.species - ] - ) - + 1, - self.minangmom, - ) - else: - angmom = ( - max( - [ - ed.angularmomentum[ed.elementblock[spcs]] - for spcs in b.species - ] - ) - + 1 - ) - v = mvmult3(self.cell.latticevectors, b.position) - filestring += "%3i%4i%18.12f%18.12f%18.12f %18.12f%4i%5i " % ( - iq, - icl, - v[0], - v[1], - v[2], - rws, - angmom, - len(a[0].species), - ) - for i in itoqs: - filestring += "%3i" % i - filestring += "\n" - filestring += "number of sites classes NCL\n" - filestring += "%3i\n" % len(self.cell.atomdata) - filestring += "ICL WYCK NQCL IQECL (equivalent sites)\n" - iq = 0 - icl = 0 - for a in self.cell.atomdata: - icl += 1 - filestring += "%3i %1s%5i" % (icl, "-", len(a)) - for b in a: - iq += 1 - filestring += "%3i" % iq - filestring += "\n" - filestring += "number of atom types NT\n" - nt = 0 - for a in self.cell.atomdata: - nt += len(a[0].species) - filestring += "%3i\n" % nt - filestring += " IT ZT TXTT NAT CONC IQAT (sites occupied)\n" - iq = 0 - it = 0 - for a in self.cell.atomdata: - corr = 0 - for sp, conc in a[0].species.items(): - it += 1 - filestring += " %2i%4i %8s%5i%6.3f" % ( - it, - ed.elementnr[sp], - sp, - len(a), - conc, - ) - iq -= corr * len(a) - for b in a: - iq += 1 - filestring += "%3i" % iq - corr = 1 - filestring += "\n" - return filestring - - -class SPCFile(GeometryOutputFile): - """ - Class for storing the geometrical data needed in a [filename].dat file for the SPC program - and the method __str__ that outputs the contents of the .dat file as a string. - """ - - def __init__(self, crystalstructure, string): - GeometryOutputFile.__init__(self, crystalstructure, string) - self.jobnam = "default" - self.latticenr = 1 - self.compoundname = "" - self.a = 1 - self.b = 1 - self.c = 1 - self.alpha = 90 - self.beta = 90 - self.gamma = 90 - self.iprim = 0 - # - self.supercell = [1, 1, 1] - self.pairs = 6 - self.triplets = 4 - self.quartets = 2 - # To be put on the first line - self.programdoc = "" - - def __str__(self): - import datetime - - now = datetime.datetime.now() - datestring = now.strftime("%d %b %y") - filestring = ( - "SPC HP......=N " - + datestring - + "\n" - ) - filestring += "JOBNAM...=" + self.jobnam.ljust(10) + " MSGL.= 1 \n" - if os.path.isdir("spc"): - dirname = "spc/" - else: - dirname = "./" - filestring += "FOR001=" + dirname + "\n" - filestring += "FOR002=" + dirname + "\n" - filestring += "FOR004=" + dirname + "\n" - filestring += "FOR006=\n" - filestring += "FOR008=" + dirname + "\n" - filestring += "FOR009=" + dirname + "\n" - filestring += self.docstring - filestring += "Supercell, " + self.compoundname + "\n" - filestring += "NPRN..= 0 TEST.= 0 NCOL.= 0 STAT.= 1 TCLIM= 0 nsho.= 10\n" - filestring += ( - "NQ3...=%3i LAT..=%3i IPRIM=%3i HIGH.= 0 NSHC.= 10 NL...= 4 NLH..= 7\n" - % (self.cell.natoms(), self.latticenr, self.iprim) - ) - self.a = self.cell.latticevectors[0].length() * self.cell.lengthscale - self.b = self.cell.latticevectors[1].length() * self.cell.lengthscale - self.c = self.cell.latticevectors[2].length() * self.cell.lengthscale - # Renormalized lattice vectors - lv = [] - for i in range(3): - lv.append([]) - for j in range(3): - lv[i].append( - self.cell.latticevectors[i][j] * self.cell.lengthscale / self.a - ) - filestring += "A........=%10f B.......=%10f C.......=%10f\n" % ( - self.a, - self.b, - self.c, - ) - tmpstring = "" - if self.iprim == 0: - for i in range(3): - tmpstring += "BSX......=%10f BSY.....=%10f BSZ.....=%10f\n" % ( - lv[i][0], - lv[i][1], - lv[i][2], - ) - else: - tmpstring += "ALPHA....=%10f BETA....=%10f GAMMA...=%10f\n" % ( - self.alpha, - self.beta, - self.gamma, - ) - filestring += tmpstring - for a in self.cell.atomdata: - for b in a: - v = mvmult3(lv, b.position) - filestring += "QX.......=%10f QY......=%10f QZ......=%10f" % ( - v[0], - v[1], - v[2], - ) - filestring += " " + b.spcstring() + "\n" - filestring += "LAMDA....= 2.5000 AMAX....= 4.5000 BMAX....= 4.5000\n" - filestring += "Size of the super cell\n" - filestring += "NA.......=%4i NB.......=%4i NC.......=%4i Dmax 4.5\n" % ( - self.supercell[0], - self.supercell[1], - self.supercell[2], - ) - filestring += "NSDC.....= 20 NSDS.....= 1 NSDM.....= 1\n" - filestring += "NMAXMX...= 3 TMLIM....= 1.0\n" - filestring += "NT.......=%4i\n" % (len(self.cell.atomdata)) - filestring += "NTA(IQ)..=" - i = 0 - nat = 0 - for a in self.cell.atomdata: - i += 1 - for b in a: - nat += 1 - filestring += "%4i" % i - if nat % 15 == 0: - filestring += "\n " - filestring = filestring.rstrip(" ") - if self.cell.natoms() % 15 != 0: - filestring += "\n" - # - filestring += "NTO......=%4i\n" % (len(self.cell.atomdata)) - filestring += "NTAO(IQ).=" - i = 0 - nat = 0 - for a in self.cell.atomdata: - i += 1 - for b in a: - nat += 1 - filestring += "%4i" % i - if nat % 15 == 0: - filestring += "\n " - filestring = filestring.rstrip(" ") - if self.cell.natoms() % 15 != 0: - filestring += "\n" - # - filestring += "NQ3O.....=%4i\n" % (len(self.cell.atomdata)) - filestring += "IQO(IQ)..=" - i = 0 - nat = 0 - for a in self.cell.atomdata: - i += 1 - for b in a: - nat += 1 - filestring += "%4i" % i - if nat % 15 == 0: - filestring += "\n " - filestring = filestring.rstrip(" ") - if self.cell.natoms() % 15 != 0: - filestring += "\n" - conc = [] - ascii = string.ascii_uppercase + string.ascii_lowercase - i = 0 - for b in self.cell.atomdata: - natom = 0 - conc.append([]) - for a in self.cell.atomdata: - for k, v in a[0].species.items(): - if a == b: - conc[i].append((ascii[natom], v)) - else: - conc[i].append((ascii[natom], 0.0)) - natom += 1 - i += 1 - filestring += "NATOM....=%4i\n" % natom - filestring += "SMB(IAT).=" - for a in conc[0]: - filestring += "%4s" % a[0] - filestring += "\n" - filestring += "Concentrations on sublattices:\n" - for a in conc: - for c in a: - filestring += "%f " % c[1] - filestring += "\n" - filestring += "Correlation functions and weights for each pairs of elem. (A-B, A-C, ... )\n" - i = 0 - for a in self.cell.atomdata: - i += 1 - filestring += "Sublattice\n" - filestring += "%i\n" % i - if len(a[0].species) == 1: - continue - filestring += "nc2 r_max\n" - if len(a[0].species) == 1: - filestring += "0 3.0\n" - filestring += "i alpha weight\n" - else: - filestring += "%i 3.0\n" % self.pairs - filestring += "i alpha weight\n" - for p in range(self.pairs): - if p < 3: - filestring += "%i 0.0 1.0\n" % (p + 1) - else: - filestring += "%i 0.0 0.0\n" % (p + 1) - filestring += "nc3\n" - filestring += "0\n" - filestring += "i i1 i2 i3 weight\n" - filestring += "nc4\n" - filestring += "0\n" - filestring += "i i1 i2 i3 i4 i5 i6 weight\n" - filestring += "T_i, T_f, delt_T\n" - filestring += "10.0 0.0 1.0\n" - filestring += "100 nsteps\n" - return filestring - - -################################################################################################ -# MOPAC FILE - - -class MOPACFile(GeometryOutputFile): - """ - Class for storing the geometrical data needed for outputting a MOPAC file - and the method __str__ that outputs the contents of the MOPAC file as a string. - """ - - def __init__( - self, - crystalstructure, - string, - setupall=False, - firstline="", - secondline="", - thirdline="", - freeze=-1, - ): - GeometryOutputFile.__init__(self, crystalstructure, string) - self.cell.newunit(newunit="angstrom") - self.setupall = setupall - self.firstline = firstline - self.secondline = secondline - self.thirdline = thirdline - self.freeze = freeze - # Make sure the docstring has comment form - self.docstring = self.docstring.rstrip("\n") - tmpstrings = self.docstring.split("\n") - t = True - for s in tmpstrings: - t = t and (s[0] == "*") - if t: - self.docstring += "\n" - else: - self.docstring = "" - for string in tmpstrings: - string = string.lstrip("*") - string = "*" + string + "\n" - self.docstring += string - - def __str__(self): - filestring = self.docstring - if self.setupall: - if self.firstline == "": - filestring += " BZ \n" - else: - filestring += self.firstline.rstrip("\n") + "\n" - filestring += self.secondline.rstrip("\n") + "\n" - filestring += self.thirdline.rstrip("\n") + "\n" - # Set up lattice vectors - lv = [] - for i in range(3): - lv.append( - Vector( - [ - self.cell.lengthscale * self.cell.latticevectors[i][j] - for j in range(3) - ] - ) - ) - # Print sites - if self.freeze == 0: - freezestring = " 0" - elif self.freeze == 1: - freezestring = " 1" - else: - freezestring = "" - for a in self.cell.atomdata: - for b in a: - t = Vector(mvmult3(lv, b.position)) - filestring += str(b).split()[0] + " " + str(t) + freezestring + "\n" - # Print lattice vectors - for l in lv: - filestring += "Tv " + str(l) + "\n" - return filestring diff --git a/cell2mol/cif2cell_spacegroupdata.py b/cell2mol/cif2cell_spacegroupdata.py deleted file mode 100644 index 1ea5db6a4..000000000 --- a/cell2mol/cif2cell_spacegroupdata.py +++ /dev/null @@ -1,12575 +0,0 @@ -# Copyright 2010 Torbjorn Bjorkman -# This file is part of cif2cell -# -# cif2cell is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# cif2cell is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with cif2cell. If not, see . -# -# ****************************************************************************************** -# Description: Contains: -# HM2Hall : Dictionary for going from Hermann-Mauguin symbol to Hall symbol. -# If support is lacking for some HM setting, then add to this dict. -# Hall2HM : Dictionary for going from Hall symbol to Hermann-Mauguin symbol. -# Hall2Number : Dictionary for going from Hall symbol to space group number (integer). -# Number2Hall : Dictionary for going from number to Hall symbol. Only contains -# space groups with unique settings. -# Rhomb2HexHall : Dictionary with hexagonal setting of a space group corresponding -# to some rhombohedral setting. -# Hex2RhombHall : The reverse of Rhomb2HexHall. -# SymOpsHall : Dictionary of the set of equivalent positions in XYZ-format. -# Example : -# SymOpsHall['C 2y'] = [['x','y','z'], -# ['-x','y','-z'], -# ['x+1/2','y+1/2','z'], -# ['-x+1/2','y+1/2','-z']] -# -# All data was generated using the sginfo program (http://cci.lbl.gov/sginfo) -# and automatically processed into python code. -# -# Author: Torbjorn Bjorkman -# ORCID: 0000-0002-1154-9846 -# -# ****************************************************************************************** - -# Convert Hermann-Mauguin symbol to Hall symbol -# Just keep adding new HM string representations until we support everything. -# The ICSD convention of denoting setting shifted from the origin with S and -# the non-shifted with Z is fully supported. -HM2Hall = { - # 1 - "P1": "P 1", - # 2 - "P-1": "-P 1", - # 3 - "P2": "P 2y", - "P2:b": "P 2y", - "P2b": "P 2y", - "P121": "P 2y", - "P2:c": "P 2", - "P2c": "P 2", - "P112": "P 2", - "P2:a": "P 2x", - "P2a": "P 2x", - "P211": "P 2x", - # 4 - "P21": "P 2yb", - "P21:b": "P 2yb", - "P21b": "P 2yb", - "P1211": "P 2yb", - "P21:c": "P 2c", - "P21c": "P 2c", - "P1121": "P 2c", - "P21:a": "P 2xa", - "P21a": "P 2xa", - "P2111": "P 2xa", - # 5 - "C2": "C 2y", - "C2:b1": "C 2y", - "C2b1": "C 2y", - "C121": "C 2y", - "C2:b2": "A 2y", - "C2b2": "A 2y", - "A121": "A 2y", - "A2": "A 2y", - "C2:b3": "I 2y", - "C2b3": "I 2y", - "I121": "I 2y", - "I2": "I 2y", - "C2:c1": "A 2", - "C2c1": "A 2", - "A112": "A 2", - "C2:c2": "B 2", - "C2c2": "B 2", - "B112": "B 2", - "B2": "B 2", - "C2:c3": "I 2", - "C2c3": "I 2", - "I112": "I 2", - "C2:a1": "B 2x", - "C2a1": "B 2x", - "B211": "B 2x", - "C2:a2": "C 2x", - "C2a2": "C 2x", - "C211": "C 2x", - "C2:a3": "I 2x", - "C2a3": "I 2x", - "I211": "I 2x", - # 6 - "Pm": "P -2y", - "Pm:b": "P -2y", - "Pmb": "P -2y", - "P1m1": "P -2y", - "Pm:c": "P -2", - "Pmc": "P -2", - "P11m": "P -2", - "Pm:a": "P -2x", - "Pma": "P -2x", - "Pm11": "P -2x", - # 7 - "Pc": "P -2yc", - "Pc:b1": "P -2yc", - "Pcb1": "P -2yc", - "P1c1": "P -2yc", - "Pc:b2": "P -2yac", - "Pcb2": "P -2yac", - "P1n1": "P -2yac", - "Pn": "P -2yac", - "Pc:b3": "P -2ya", - "Pcb3": "P -2ya", - "P1a1": "P -2ya", - "Pa": "P -2ya", - "Pc:c1": "P -2a", - "Pcc1": "P -2a", - "P11a": "P -2a", - "Pc:c2": "P -2ab", - "Pcc2": "P -2ab", - "P11n": "P -2ab", - "Pc:c3": "P -2b", - "Pcc3": "P -2b", - "P11b": "P -2b", - "Pb": "P -2b", - "Pc:a1": "P -2xb", - "Pca1": "P -2xb", - "Pb11": "P -2xb", - "Pc:a2": "P -2xbc", - "Pca2": "P -2xbc", - "Pn11": "P -2xbc", - "Pc:a3": "P -2xc", - "Pca3": "P -2xc", - "Pc11": "P -2xc", - "B1a1": "B -2yc", - # 8 - "Cm": "C -2y", - "Cm:b1": "C -2y", - "Cmb1": "C -2y", - "C1m1": "C -2y", - "Cm:b2": "A -2y", - "Cmb2": "A -2y", - "A1m1": "A -2y", - "Cm:b3": "I -2y", - "Cmb3": "I -2y", - "I1m1": "I -2y", - "Im": "I -2y", - "Cm:c1": "A -2", - "Cmc1": "A -2", - "A11m": "A -2", - "Cm:c2": "B -2", - "Cmc2": "B -2", - "B11m": "B -2", - "Bm": "B -2", - "Cm:c3": "I -2", - "Cmc3": "I -2", - "I11m": "I -2", - "Cm:a1": "B -2x", - "Cma1": "B -2x", - "Bm11": "B -2x", - "Cm:a2": "C -2x", - "Cma2": "C -2x", - "Cm11": "C -2x", - "Cm:a3": "I -2x", - "Cma3": "I -2x", - "Im11": "I -2x", - # 9 - "Cc": "C -2yc", - "Cc:b1": "C -2yc", - "Ccb1": "C -2yc", - "C1c1": "C -2yc", - "Cc:b2": "A -2yac", - "Ccb2": "A -2yac", - "A1n1": "A -2yac", - "Cc:b3": "I -2ya", - "Ccb3": "I -2ya", - "I1a1": "I -2ya", - "Ia": "I -2ya", - "Cc:-b1": "A -2ya", - "Cc-b1": "A -2ya", - "A1a1": "A -2ya", - "Aa": "A -2ya", - "Cc:-b2": "C -2ybc", - "Cc-b2": "C -2ybc", - "C1n1": "C -2ybc", - "Cc:-b3": "I -2yc", - "Cc-b3": "I -2yc", - "I1c1": "I -2yc", - "Cc:c1": "A -2a", - "Ccc1": "A -2a", - "A11a": "A -2a", - "Cc:c2": "B -2bc", - "B11n": "B -2bc", - "Cc:c3": "I -2b", - "Ccc3": "I -2b", - "I11b": "I -2b", - "Ib": "I -2b", - "Cc:-c1": "B -2b", - "Cc-c1": "B -2b", - "B11b": "B -2b", - "Bb": "B -2b", - "Cc:-c2": "A -2ac", - "Cc-c2": "A -2ac", - "A11n": "A -2ac", - "Cc:-c3": "I -2a", - "Cc-c3": "I -2a", - "I11a": "I -2a", - "Cc:a1": "B -2xb", - "Cca1": "B -2xb", - "Bb11": "B -2xb", - "Cc:a2": "C -2xbc", - "Cca2": "C -2xbc", - "Cn11": "C -2xbc", - "Cc:a3": "I -2xc", - "Cca3": "I -2xc", - "Ic11": "I -2xc", - "Cc:-a1": "C -2xc", - "Cc-a1": "C -2xc", - "Cc11": "C -2xc", - "Cc:-a2": "B -2xbc", - "Cc-a2": "B -2xbc", - "Bn11": "B -2xbc", - "Cc:-a3": "I -2xb", - "Cc-a3": "I -2xb", - "Ib11": "I -2xb", - # 10 - "P2/m": "-P 2y", - "P2/m:b": "-P 2y", - "P2/mb": "-P 2y", - "P12/m1": "-P 2y", - "P2/m:c": "-P 2", - "P2/mc": "-P 2", - "P112/m": "-P 2", - "P2/m:a": "-P 2x", - "P2/ma": "-P 2x", - "P2/m11": "-P 2x", - # 11 - "P21/m": "-P 2yb", - "P21/m:b": "-P 2yb", - "P21/mb": "-P 2yb", - "P121/m1": "-P 2yb", - "P21/m:c": "-P 2c", - "P21/mc": "-P 2c", - "P1121/m": "-P 2c", - "P21/m:a": "-P 2xa", - "P21/ma": "-P 2xa", - "P21/m11": "-P 2xa", - # 12 - "C2/m": "-C 2y", - "C2/m:b1": "-C 2y", - "C2/mb1": "-C 2y", - "C12/m1": "-C 2y", - "C2/m:b2": "-A 2y", - "C2/mb2": "-A 2y", - "A12/m1": "-A 2y", - "A2/m": "-A 2y", - "C2/m:b3": "-I 2y", - "C2/mb3": "-I 2y", - "I12/m1": "-I 2y", - "I2/m": "-I 2y", - "C2/m:c1": "-A 2", - "C2/mc1": "-A 2", - "A112/m": "-A 2", - "C2/m:c2": "-B 2", - "C2/mc2": "-B 2", - "B112/m": "-B 2", - "B2/m": "-B 2", - "C2/m:c3": "-I 2", - "C2/mc3": "-I 2", - "I112/m": "-I 2", - "C2/m:a1": "-B 2x", - "C2/ma1": "-B 2x", - "B2/m11": "-B 2x", - "C2/m:a2": "-C 2x", - "C2/ma2": "-C 2x", - "C2/m11": "-C 2x", - "C2/m:a3": "-I 2x", - "C2/ma3": "-I 2x", - "I2/m11": "-I 2x", - # 13 - "P2/c": "-P 2yc", - "P2/c:b1": "-P 2yc", - "P2/cb1": "-P 2yc", - "P12/c1": "-P 2yc", - "P2/c:b2": "-P 2yac", - "P2/cb2": "-P 2yac", - "P12/n1": "-P 2yac", - "P2/n": "-P 2yac", - "P2/c:b3": "-P 2ya", - "P2/cb3": "-P 2ya", - "P12/a1": "-P 2ya", - "P2/a": "-P 2ya", - "P2/c:c1": "-P 2a", - "P2/cc1": "-P 2a", - "P112/a": "-P 2a", - "P2/c:c2": "-P 2ab", - "P2/cc2": "-P 2ab", - "P112/n": "-P 2ab", - "P2/c:c3": "-P 2b", - "P2/cc3": "-P 2b", - "P112/b": "-P 2b", - "P2/b": "-P 2b", - "P2/c:a1": "-P 2xb", - "P2/ca1": "-P 2xb", - "P2/b11": "-P 2xb", - "P2/c:a2": "-P 2xbc", - "P2/ca2": "-P 2xbc", - "P2/n11": "-P 2xbc", - "P2/c:a3": "-P 2xc", - "P2/ca3": "-P 2xc", - "P2/c11": "-P 2xc", - # 14 - "P21/c": "-P 2ybc", - "P21/c:b1": "-P 2ybc", - "P21/cb1": "-P 2ybc", - "P121/c1": "-P 2ybc", - "P21/c:b2": "-P 2yn", - "P21/cb2": "-P 2yn", - "P121/n1": "-P 2yn", - "P21/n": "-P 2yn", - "P21/c:b3": "-P 2yab", - "P21/cb3": "-P 2yab", - "P121/a1": "-P 2yab", - "P21/a": "-P 2yab", - "P21/c:c1": "-P 2ac", - "P21/cc1": "-P 2ac", - "P1121/a": "-P 2ac", - "P21/c:c2": "-P 2n", - "P21/cc2": "-P 2n", - "P1121/n": "-P 2n", - "P21/c:c3": "-P 2bc", - "P21/cc3": "-P 2bc", - "P1121/b": "-P 2bc", - "P21/b": "-P 2bc", - "P21/c:a1": "-P 2xab", - "P21/ca1": "-P 2xab", - "P21/b11": "-P 2xab", - "P21/c:a2": "-P 2xn", - "P21/ca2": "-P 2xn", - "P21/n11": "-P 2xn", - "P21/c:a3": "-P 2xac", - "P21/ca3": "-P 2xac", - "P21/c11": "-P 2xac", - "B121/c1": "-B 2ybc", - # 15 - "C2/c": "-C 2yc", - "C2/c:b1": "-C 2yc", - "C2/cb1": "-C 2yc", - "C12/c1": "-C 2yc", - "C2/c:b2": "-A 2yac", - "C2/cb2": "-A 2yac", - "A12/n1": "-A 2yac", - "A2/n": "-A 2yac", - "C2/c:b3": "-I 2ya", - "C2/cb3": "-I 2ya", - "I12/a1": "-I 2ya", - "I2/a": "-I 2ya", - "C2/c:-b1": "-A 2ya", - "C2/c-b1": "-A 2ya", - "A12/a1": "-A 2ya", - "A2/a": "-A 2ya", - "C2/c:-b2": "-C 2ybc", - "C2/c-b2": "-C 2ybc", - "C12/n1": "-C 2ybc", - "C2/c:-b3": "-I 2yc", - "C2/c-b3": "-I 2yc", - "I12/c1": "-I 2yc", - "I2/c": "-I 2yc", - "C2/c:c1": "-A 2a", - "C2/cc1": "-A 2a", - "A112/a": "-A 2a", - "C2/c:c2": "-B 2bc", - "C2/cc2": "-B 2bc", - "B112/n": "-B 2bc", - "B2/n": "-B 2bc", - "C2/c:c3": "-I 2b", - "C2/cc3": "-I 2b", - "I112/b": "-I 2b", - "I2/b": "-I 2b", - "C2/c:-c1": "-B 2b", - "C2/c-c1": "-B 2b", - "B112/b": "-B 2b", - "B2/b": "-B 2b", - "C2/c:-c2": "-A 2ac", - "C2/c-c2": "-A 2ac", - "A112/n": "-A 2ac", - "C2/c:-c3": "-I 2a", - "C2/c-c3": "-I 2a", - "I112/a": "-I 2a", - "C2/c:a1": "-B 2xb", - "C2/ca1": "-B 2xb", - "B2/b11": "-B 2xb", - "C2/c:a2": "-C 2xbc", - "C2/ca2": "-C 2xbc", - "C2/n11": "-C 2xbc", - "C2/c:a3": "-I 2xc", - "C2/ca3": "-I 2xc", - "I2/c11": "-I 2xc", - "C2/c:-a1": "-C 2xc", - "C2/c-a1": "-C 2xc", - "C2/c11": "-C 2xc", - "C2/c:-a2": "-B 2xbc", - "C2/c-a2": "-B 2xbc", - "B2/n11": "-B 2xbc", - "C2/c:-a3": "-I 2xb", - "C2/c-a3": "-I 2xb", - "I2/b11": "-I 2xb", - # 16 - "P222": "P 2 2", - # 17 - "P2221": "P 2c 2", - "P2122": "P 2a 2a", - "P2212": "P 2 2b", - # 18 - "P21212": "P 2 2ab", - "P22121": "P 2bc 2", - "P21221": "P 2ac 2ac", - # 19 - "P212121": "P 2ac 2ab", - # 20 - "C2221": "C 2c 2", - "C2221S": "C 2c 2", - "A2122": "A 2a 2a", - "B2212": "B 2 2b", - # 21 - "C222": "C 2 2", - "A222": "A 2 2", - "B222": "B 2 2", - # 22 - "F222": "F 2 2", - # 23 - "I222": "I 2 2", - # 24 - "I212121": "I 2b 2c", - # 25 - "Pmm2": "P 2 -2", - "P2mm": "P -2 2", - "Pm2m": "P -2 -2", - # 26 - "Pmc21": "P 2c -2", - "Pcm21": "P 2c -2c", - "P21ma": "P -2a 2a", - "P21am": "P -2 2a", - "Pb21m": "P -2 -2b", - "Pm21b": "P -2b -2", - # 27 - "Pcc2": "P 2 -2c", - "P2aa": "P -2a 2", - "Pb2b": "P -2b -2b", - # 28 - "Pma2": "P 2 -2a", - "Pbm2": "P 2 -2b", - "P2mb": "P -2b 2", - "P2cm": "P -2c 2", - "Pc2m": "P -2c -2c", - "Pm2a": "P -2a -2a", - # 29 - "Pca21": "P 2c -2ac", - "Pbc21": "P 2c -2b", - "P21ab": "P -2b 2a", - "P21ca": "P -2ac 2a", - "Pc21b": "P -2bc -2c", - "Pb21a": "P -2a -2ab", - # 30 - "Pnc2": "P 2 -2bc", - "Pcn2": "P 2 -2ac", - "P2na": "P -2ac 2", - "P2an": "P -2ab 2", - "Pb2n": "P -2ab -2ab", - "Pn2b": "P -2bc -2bc", - # 31 - "Pmn21": "P 2ac -2", - "Pnm21": "P 2bc -2bc", - "P21mn": "P -2ab 2ab", - "P21nm": "P -2 2ac", - "Pn21m": "P -2 -2bc", - "Pm21n": "P -2ab -2", - # 32 - "Pba2": "P 2 -2ab", - "P2cb": "P -2bc 2", - "Pc2a": "P -2ac -2ac", - # 33 - "Pna21": "P 2c -2n", - "Pbn21": "P 2c -2ab", - "P21nb": "P -2bc 2a", - "P21cn": "P -2n 2a", - "Pc21n": "P -2n -2ac", - "Pn21a": "P -2ac -2n", - # 34 - "Pnn2": "P 2 -2n", - "P2nn": "P -2n 2", - "Pn2n": "P -2n -2n", - # 35 - "Cmm2": "C 2 -2", - "A2mm": "A -2 2", - "Bm2m": "B -2 -2", - # 36 - "Cmc21": "C 2c -2", - "Ccm21": "C 2c -2c", - "A21ma": "A -2a 2a", - "A21am": "A -2 2a", - "Bb21m": "B -2 -2b", - "Bm21b": "B -2b -2", - # 37 - "Ccc2": "C 2 -2c", - "A2aa": "A -2a 2", - "Bb2b": "B -2b -2b", - # 38 - "Amm2": "A 2 -2", - "Bmm2": "B 2 -2", - "B2mm": "B -2 2", - "C2mm": "C -2 2", - "Cm2m": "C -2 -2", - "Am2m": "A -2 -2", - # 39 - "Abm2": "A 2 -2c", - "Bma2": "B 2 -2c", - "B2cm": "B -2c 2", - "C2mb": "C -2b 2", - "Cm2a": "C -2b -2b", - "Ac2m": "A -2c -2c", - # 40 - "Ama2": "A 2 -2a", - "Bbm2": "B 2 -2b", - "B2mb": "B -2b 2", - "C2cm": "C -2c 2", - "Cc2m": "C -2c -2c", - "Am2a": "A -2a -2a", - # 41 - "Aba2": "A 2 -2ac", - "Bba2": "B 2 -2bc", - "B2cb": "B -2bc 2", - "C2cb": "C -2bc 2", - "Cc2a": "C -2bc -2bc", - "Ac2a": "A -2ac -2ac", - # 42 - "Fmm2": "F 2 -2", - "F2mm": "F -2 2", - "Fm2m": "F -2 -2", - # 43 - "Fdd2": "F 2 -2d", - "F2dd": "F -2d 2", - "Fd2d": "F -2d -2d", - # 44 - "Imm2": "I 2 -2", - "I2mm": "I -2 2", - "Im2m": "I -2 -2", - # 45 - "Iba2": "I 2 -2c", - "I2cb": "I -2a 2", - "Ic2a": "I -2b -2b", - # 46 - "Ima2": "I 2 -2a", - "Ibm2": "I 2 -2b", - "I2mb": "I -2b 2", - "I2cm": "I -2c 2", - "Ic2m": "I -2c -2c", - "Im2a": "I -2a -2a", - # 47 - "Pmmm": "-P 2 2", - "P2/m2/m2/m": "-P 2 2", - # 48 - "Pnnn": "P 2 2 -1n", - "Pnnn:1": "P 2 2 -1n", - "Pnnn1": "P 2 2 -1n", - "PnnnS": "P 2 2 -1n", - "Pnnn:2": "-P 2ab 2bc", - "Pnnn2": "-P 2ab 2bc", - "PnnnZ": "-P 2ab 2bc", - # 49 - "Pccm": "-P 2 2c", - "Pmaa": "-P 2a 2", - "Pbmb": "-P 2b 2b", - # 50 - "Pban": "P 2 2 -1ab", - "Pban:1": "P 2 2 -1ab", - "Pban1": "P 2 2 -1ab", - "PbanS": "P 2 2 -1ab", - "Pban:2": "-P 2ab 2b", - "Pban2": "-P 2ab 2b", - "PbanZ": "-P 2ab 2b", - "Pncb": "P 2 2 -1bc", - "Pncb:1": "P 2 2 -1bc", - "Pncb1": "P 2 2 -1bc", - "PncbS": "P 2 2 -1bc", - "Pncb:2": "-P 2b 2bc", - "Pncb2": "-P 2b 2bc", - "PncbZ": "-P 2b 2bc", - "Pcna": "P 2 2 -1ac", - "Pcna:1": "P 2 2 -1ac", - "Pcna1": "P 2 2 -1ac", - "PcnaS": "P 2 2 -1ac", - "Pcna:2": "-P 2a 2c", - "Pcna2": "-P 2a 2c", - "PcnaZ": "-P 2a 2c", - # 51 - "Pmma": "-P 2a 2a", - "Pmmb": "-P 2b 2", - "Pbmm": "-P 2 2b", - "Pcmm": "-P 2c 2c", - "Pmcm": "-P 2c 2", - "Pmam": "-P 2 2a", - # 52 - "Pnna": "-P 2a 2bc", - "Pnnb": "-P 2b 2n", - "Pbnn": "-P 2n 2b", - "Pcnn": "-P 2ab 2c", - "Pncn": "-P 2ab 2n", - "Pnan": "-P 2n 2bc", - # 53 - "Pmna": "-P 2ac 2", - "Pnmb": "-P 2bc 2bc", - "Pbmn": "-P 2ab 2ab", - "Pcnm": "-P 2 2ac", - "Pncm": "-P 2 2bc", - "Pman": "-P 2ab 2", - # 54 - "Pcca": "-P 2a 2ac", - "Pccb": "-P 2b 2c", - "Pbaa": "-P 2a 2b", - "Pcaa": "-P 2ac 2c", - "Pbcb": "-P 2bc 2b", - "Pbab": "-P 2b 2ab", - # 55 - "Pbam": "-P 2 2ab", - "Pmcb": "-P 2bc 2", - "Pcma": "-P 2ac 2ac", - # 56 - "Pccn": "-P 2ab 2ac", - "Pnaa": "-P 2ac 2bc", - "Pbnb": "-P 2bc 2ab", - # 57 - "Pbcm": "-P 2c 2b", - "Pcam": "-P 2c 2ac", - "Pmca": "-P 2ac 2a", - "Pmab": "-P 2b 2a", - "Pbma": "-P 2a 2ab", - "Pcmb": "-P 2bc 2c", - # 58 - "Pnnm": "-P 2 2n", - "Pmnn": "-P 2n 2", - "Pnmn": "-P 2n 2n", - # 59 - "Pmmn": "P 2 2ab -1ab", - "Pmmn:1": "P 2 2ab -1ab", - "Pmmn1": "P 2 2ab -1ab", - "PmmnS": "P 2 2ab -1ab", - "Pmmn:2": "-P 2ab 2a", - "Pmmn2": "-P 2ab 2a", - "PmmnZ": "-P 2ab 2a", - "Pnmm": "P 2bc 2 -1bc", - "Pnmm:1": "P 2bc 2 -1bc", - "Pnmm1": "P 2bc 2 -1bc", - "PnmmS": "P 2bc 2 -1bc", - "Pnmm:2": "-P 2c 2bc", - "Pnmm2": "-P 2c 2bc", - "PnmmZ": "-P 2c 2bc", - "Pmnm": "P 2ac 2ac -1ac", - "Pmnm:1": "P 2ac 2ac -1ac", - "Pmnm1": "P 2ac 2ac -1ac", - "PmnmS": "P 2ac 2ac -1ac", - "Pmnm:2": "-P 2c 2a", - "Pmnm2": "-P 2c 2a", - "PmnmZ": "-P 2c 2a", - # 60 - "Pbcn": "-P 2n 2ab", - "Pcan": "-P 2n 2c", - "Pnca": "-P 2a 2n", - "Pnab": "-P 2bc 2n", - "Pbna": "-P 2ac 2b", - "Pcnb": "-P 2b 2ac", - # 61 - "Pbca": "-P 2ac 2ab", - "P21/b21/c21/a": "-P 2ac 2ab", - "Pcab": "-P 2bc 2ac", - # 62 - "Pnma": "-P 2ac 2n", - "Pmnb": "-P 2bc 2a", - "Pbnm": "-P 2c 2ab", - "Pcmn": "-P 2n 2ac", - "Pmcn": "-P 2n 2a", - "Pnam": "-P 2c 2n", - # 63 - "Cmcm": "-C 2c 2", - "Ccmm": "-C 2c 2c", - "Amma": "-A 2a 2a", - "Amam": "-A 2 2a", - "Bbmm": "-B 2 2b", - "Bmmb": "-B 2b 2", - # 64 - "Cmca": "-C 2bc 2", - "Cmce": "-C 2bc 2", - "Ccmb": "-C 2bc 2bc", - "Abma": "-A 2ac 2ac", - "Acam": "-A 2 2ac", - "Bbcm": "-B 2 2bc", - "Bmab": "-B 2bc 2", - # 65 - "Cmmm": "-C 2 2", - "Ammm": "-A 2 2", - "Bmmm": "-B 2 2", - "C2/m2/m2/m": "-C 2 2", - "A2/m2/m2/m": "-A 2 2", - "B2/m2/m2/m": "-B 2 2", - # 66 - "Cccm": "-C 2 2c", - "Amaa": "-A 2a 2", - "Bbmb": "-B 2b 2b", - # 67 - "Cmma": "-C 2b 2", - "Cmmb": "-C 2b 2b", - "Abmm": "-A 2c 2c", - "Acmm": "-A 2 2c", - "Bmcm": "-B 2 2c", - "Bmam": "-B 2c 2", - # 68 - "Ccca": "C 2 2 -1bc", - "Ccca:1": "C 2 2 -1bc", - "Ccca1": "C 2 2 -1bc", - "CccaS": "C 2 2 -1bc", - "Ccca:2": "-C 2b 2bc", - "Ccca2": "-C 2b 2bc", - "CccaZ": "-C 2b 2bc", - "Cccb": "C 2 2 -1bc", - "Cccb:1": "C 2 2 -1bc", - "Cccb1": "C 2 2 -1bc", - "CccbS": "C 2 2 -1bc", - "Cccb:2": "-C 2b 2c", - "Cccb2": "-C 2b 2c", - "CccbZ": "-C 2b 2c", - "Abaa": "A 2 2 -1ac", - "Abaa:1": "A 2 2 -1ac", - "Abaa1": "A 2 2 -1ac", - "AbaaS": "A 2 2 -1ac", - "Abaa:2": "-A 2a 2c", - "Abaa2": "-A 2a 2c", - "AbaaZ": "-A 2a 2c", - "Acaa": "A 2 2 -1ac", - "Acaa:1": "A 2 2 -1ac", - "Acaa1": "A 2 2 -1ac", - "AcaaS": "A 2 2 -1ac", - "Acaa:2": "-A 2ac 2c", - "Acaa2": "-A 2ac 2c", - "AcaaZ": "-A 2ac 2c", - "Bbcb": "B 2 2 -1bc", - "Bbcb:1": "B 2 2 -1bc", - "Bbcb1": "B 2 2 -1bc", - "BbcbS": "B 2 2 -1bc", - "Bbcb:2": "-B 2bc 2b", - "Bbcb2": "-B 2bc 2b", - "BbcbZ": "-B 2bc 2b", - "Bbab": "B 2 2 -1bc", - "Bbab:1": "B 2 2 -1bc", - "Bbab1": "B 2 2 -1bc", - "BbabS": "B 2 2 -1bc", - "Bbab:2": "-B 2b 2bc", - "Bbab2": "-B 2b 2bc", - "BbabZ": "-B 2b 2bc", - # 69 - "Fmmm": "-F 2 2", - "F2/m2/m2/m": "-F 2 2", - # 70 - "Fddd": "F 2 2 -1d", - "Fddd:1": "F 2 2 -1d", - "Fddd1": "F 2 2 -1d", - "FdddS": "F 2 2 -1d", - "Fddd:2": "-F 2uv 2vw", - "Fddd2": "-F 2uv 2vw", - "FdddZ": "-F 2uv 2vw", - # 71 - "Immm": "-I 2 2", - "I2/m2/m2/m": "-I 2 2", - # 72 - "Ibam": "-I 2 2c", - "Imcb": "-I 2a 2", - "Icma": "-I 2b 2b", - # 73 - "Ibca": "-I 2b 2c", - "Icab": "-I 2a 2b", - # 74 - "Imma": "-I 2b 2", - "Immb": "-I 2a 2a", - "Ibmm": "-I 2c 2c", - "Icmm": "-I 2 2b", - "Imcm": "-I 2 2a", - "Imam": "-I 2c 2", - # 75 - "P4": "P 4", - # 76 - "P41": "P 4w", - # 77 - "P42": "P 4c", - # 78 - "P43": "P 4cw", - # 79 - "I4": "I 4", - # 80 - "I41": "I 4bw", - # 81 - "P-4": "P -4", - # 82 - "I-4": "I -4", - # 83 - "P4/m": "-P 4", - # 84 - "P42/m": "-P 4c", - # 85 - "P4/n": "P 4ab -1ab", - "P4/n:1": "P 4ab -1ab", - "P4/n1": "P 4ab -1ab", - "P4/nS": "P 4ab -1ab", - "P4/n:2": "-P 4a", - "P4/n2": "-P 4a", - "P4/nZ": "-P 4a", - # 86 - "P42/n": "P 4n -1n", - "P42/n:1": "P 4n -1n", - "P42/n1": "P 4n -1n", - "P42/nS": "P 4n -1n", - "P42/n:2": "-P 4bc", - "P42/n2": "-P 4bc", - "P42/nZ": "-P 4bc", - # 87 - "I4/m": "-I 4", - # 88 - "I41/a": "I 4bw -1bw", - "I41/a:1": "I 4bw -1bw", - "I41/a1": "I 4bw -1bw", - "I41/aS": "I 4bw -1bw", - "I41/a:2": "-I 4ad", - "I41/a2": "-I 4ad", - "I41/aZ": "-I 4ad", - # 89 - "P422": "P 4 2", - # 90 - "P4212": "P 4ab 2ab", - # 91 - "P4122": "P 4w 2c", - # 92 - "P41212": "P 4abw 2nw", - # 93 - "P4222": "P 4c 2", - # 94 - "P42212": "P 4n 2n", - # 95 - "P4322": "P 4cw 2c", - # 96 - "P43212": "P 4nw 2abw", - # 97 - "I422": "I 4 2", - # 98 - "I4122": "I 4bw 2bw", - # 99 - "P4mm": "P 4 -2", - # 100 - "P4bm": "P 4 -2ab", - # 101 - "P42cm": "P 4c -2c", - # 102 - "P42nm": "P 4n -2n", - # 103 - "P4cc": "P 4 -2c", - # 104 - "P4nc": "P 4 -2n", - # 105 - "P42mc": "P 4c -2", - # 106 - "P42bc": "P 4c -2ab", - # 107 - "I4mm": "I 4 -2", - # 108 - "I4cm": "I 4 -2c", - # 109 - "I41md": "I 4bw -2", - # 110 - "I41cd": "I 4bw -2c", - # 111 - "P-42m": "P -4 2", - # 112 - "P-42c": "P -4 2c", - # 113 - "P-421m": "P -4 2ab", - # 114 - "P-421c": "P -4 2n", - # 115 - "P-4m2": "P -4 -2", - # 116 - "P-4c2": "P -4 -2c", - # 117 - "P-4b2": "P -4 -2ab", - # 118 - "P-4n2": "P -4 -2n", - # 119 - "I-4m2": "I -4 -2", - # 120 - "I-4c2": "I -4 -2c", - # 121 - "I-42m": "I -4 2", - # 122 - "I-42d": "I -4 2bw", - # 123 - "P4/mmm": "-P 4 2", - "P4/m2/m2/m": "-P 4 2", - # 124 - "P4/mcc": "-P 4 2c", - # 125 - "P4/nbm": "P 4 2 -1ab", - "P4/nbm:1": "P 4 2 -1ab", - "P4/nbm1": "P 4 2 -1ab", - "P4/nbmS": "P 4 2 -1ab", - "P4/nbm:2": "-P 4a 2b", - "P4/nbm2": "-P 4a 2b", - "P4/nbmZ": "-P 4a 2b", - # 126 - "P4/nnc": "P 4 2 -1n", - "P4/nnc:1": "P 4 2 -1n", - "P4/nnc1": "P 4 2 -1n", - "P4/nncS": "P 4 2 -1n", - "P4/nnc:2": "-P 4a 2bc", - "P4/nnc2": "-P 4a 2bc", - "P4/nncZ": "-P 4a 2bc", - # 127 - "P4/mbm": "-P 4 2ab", - # 128 - "P4/mnc": "-P 4 2n", - # 129 - "P4/nmm": "P 4ab 2ab -1ab", - "P4/nmm:1": "P 4ab 2ab -1ab", - "P4/nmm1": "P 4ab 2ab -1ab", - "P4/nmmS": "P 4ab 2ab -1ab", - "P4/n21/m2/m(originchoice2)": "P 4ab 2ab -1ab", # ? FINDSYM choice - "P4/nmm:2": "-P 4a 2a", - "P4/nmm2": "-P 4a 2a", - "P4/nmmZ": "-P 4a 2a", - # 130 - "P4/ncc": "P 4ab 2n -1ab", - "P4/ncc:1": "P 4ab 2n -1ab", - "P4/ncc1": "P 4ab 2n -1ab", - "P4/nccS": "P 4ab 2n -1ab", - "P4/ncc:2": "-P 4a 2ac", - "P4/ncc2": "-P 4a 2ac", - "P4/nccZ": "-P 4a 2ac", - # 131 - "P42/mmc": "-P 4c 2", - # 132 - "P42/mcm": "-P 4c 2c", - # 133 - "P42/nbc": "P 4n 2c -1n", - "P42/nbc:1": "P 4n 2c -1n", - "P42/nbc1": "P 4n 2c -1n", - "P42/nbcS": "P 4n 2c -1n", - "P42/nbc:2": "-P 4ac 2b", - "P42/nbc2": "-P 4ac 2b", - "P42/nbcZ": "-P 4ac 2b", - # 134 - "P42/nnm": "P 4n 2 -1n", - "P42/nnm:1": "P 4n 2 -1n", - "P42/nnm1": "P 4n 2 -1n", - "P42/nnmS": "P 4n 2 -1n", - "P42/nnm:2": "-P 4ac 2bc", - "P42/nnm2": "-P 4ac 2bc", - "P42/nnmZ": "-P 4ac 2bc", - # 135 - "P42/mbc": "-P 4c 2ab", - # 136 - "P42/mnm": "-P 4n 2n", - # 137 - "P42/nmc": "P 4n 2n -1n", - "P42/nmc:1": "P 4n 2n -1n", - "P42/nmc1": "P 4n 2n -1n", - "P42/nmcS": "P 4n 2n -1n", - "P42/nmc:2": "-P 4ac 2a", - "P42/nmc2": "-P 4ac 2a", - "P42/nmcZ": "-P 4ac 2a", - # 138 - "P42/ncm": "P 4n 2ab -1n", - "P42/ncm:1": "P 4n 2ab -1n", - "P42/ncm1": "P 4n 2ab -1n", - "P42/ncmS": "P 4n 2ab -1n", - "P42/ncm:2": "-P 4ac 2ac", - "P42/ncm2": "-P 4ac 2ac", - "P42/ncmZ": "-P 4ac 2ac", - # 139 - "I4/mmm": "-I 4 2", - "I4/m2/m2/m": "-I 4 2", - # 140 - "I4/mcm": "-I 4 2c", - # 141 - "I41/amd": "I 4bw 2bw -1bw", - "I41/amd:1": "I 4bw 2bw -1bw", - "I41/amd1": "I 4bw 2bw -1bw", - "I41/amdS": "I 4bw 2bw -1bw", - "I41/amd:2": "-I 4bd 2", - "I41/amd2": "-I 4bd 2", - "I41/amdZ": "-I 4bd 2", - # 142 - "I41/acd": "I 4bw 2aw -1bw", - "I41/acd:1": "I 4bw 2aw -1bw", - "I41/acd1": "I 4bw 2aw -1bw", - "I41/acdS": "I 4bw 2aw -1bw", - "I41/acd:2": "-I 4bd 2c", - "I41/acd2": "-I 4bd 2c", - "I41/acdZ": "-I 4bd 2c", - # 143 - "P3": "P 3", - # 144 - "P31": "P 31", - # 145 - "P32": "P 32", - # 146 - "R3": "R 3", - "R3:H": "R 3", - "R3H": "R 3", - "R3:R": "P 3*", - "R3R": "P 3*", - # 147 - "P-3": "-P 3", - # 148 - "R-3": "-R 3", - "R-3:H": "-R 3", - "R-3H": "-R 3", - "R-3:R": "-P 3*", - "R-3R": "-P 3*", - # 149 - "P312": "P 3 2", - # 150 - "P321": 'P 3 2"', - # 151 - "P3112": "P 31 2c (0 0 1)", - # 152 - "P3121": 'P 31 2"', - # 153 - "P3212": "P 32 2c (0 0 -1)", - # 154 - "P3221": 'P 32 2"', - # 155 - "R32": 'R 3 2"', - "R32:H": 'R 3 2"', - "R32H": 'R 3 2"', - "R32:R": "P 3* 2", - "R32R": "P 3* 2", - # 156 - "P3m1": 'P 3 -2"', - # 157 - "P31m": "P 3 -2", - # 158 - "P3c1": 'P 3 -2"c', - # 159 - "P31c": "P 3 -2c", - # 160 - "R3m": 'R 3 -2"', - "R3m:H": 'R 3 -2"', - "R3mH": 'R 3 -2"', - "R3m:R": "P 3* -2", - "R3mR": "P 3* -2", - "R3mHR": 'T 3 -2"', - # 161 - "R3c": 'R 3 -2"c', - "R3c:H": 'R 3 -2"c', - "R3cH": 'R 3 -2"c', - "R3c(hexagonalaxes)": 'R 3 -2"c', - "R3c:R": "P 3* -2n", - "R3cR": "P 3* -2n", - # 162 - "P-31m": "-P 3 2", - # 163 - "P-31c": "-P 3 2c", - # 164 - "P-3m1": '-P 3 2"', - "P-32/m1": '-P 3 2"', - # 165 - "P-3c1": '-P 3 2"c', - # 166 - "R-3m": '-R 3 2"', - "R-32/m": '-R 3 2"', - "R-3m:H": '-R 3 2"', - "R-3mH": '-R 3 2"', - "R-32/m:H": '-R 3 2"', - "R-32/mH": '-R 3 2"', - "R-3m:R": "-P 3* 2", - "R-3mR": "-P 3* 2", - "R-32/m:R": "-P 3* 2", - "R-32/mR": "-P 3* 2", - "R-3mHR": '-T 3 2"', - # 167 - "R-3c": '-R 3 2"c', - "R-3c:H": '-R 3 2"c', - "R-3cH": '-R 3 2"c', - "R-3c:R": "-P 3* 2n", - "R-3cR": "-P 3* 2n", - # 168 - "P6": "P 6", - # 169 - "P61": "P 61", - # 170 - "P65": "P 65", - # 171 - "P62": "P 62", - # 172 - "P64": "P 64", - # 173 - "P63": "P 6c", - # 174 - "P-6": "P -6", - # 175 - "P6/m": "-P 6", - # 176 - "P63/m": "-P 6c", - # 177 - "P622": "P 6 2", - # 178 - "P6122": "P 61 2 (0 0 -1)", - # 179 - "P6522": "P 65 2 (0 0 1)", - # 180 - "P6222": "P 62 2c (0 0 1)", - # 181 - "P6422": "P 64 2c (0 0 -1)", - # 182 - "P6322": "P 6c 2c", - # 183 - "P6mm": "P 6 -2", - # 184 - "P6cc": "P 6 -2c", - # 185 - "P63cm": "P 6c -2", - # 186 - "P63mc": "P 6c -2c", - # 187 - "P-6m2": "P -6 2", - # 188 - "P-6c2": "P -6c 2", - # 189 - "P-62m": "P -6 -2", - # 190 - "P-62c": "P -6c -2c", - # 191 - "P6/mmm": "-P 6 2", - "P6/m2/m2/m": "-P 6 2", - # 192 - "P6/mcc": "-P 6 2c", - # 193 - "P63/mcm": "-P 6c 2", - # 194 - "P63/mmc": "-P 6c 2c", - "P63/m2/m2/c": "-P 6c 2c", - # 195 - "P23": "P 2 2 3", - # 196 - "F23": "F 2 2 3", - # 197 - "I23": "I 2 2 3", - # 198 - "P213": "P 2ac 2ab 3", - # 199 - "I213": "I 2b 2c 3", - # 200 - "Pm-3": "-P 2 2 3", - "P2/m-3": "-P 2 2 3", - "Pm3": "-P 2 2 3", - # 201 - "Pn-3": "P 2 2 3 -1n", - "Pn-3:1": "P 2 2 3 -1n", - "Pn-31": "P 2 2 3 -1n", - "Pn-3S": "P 2 2 3 -1n", - "Pn-3:2": "-P 2ab 2bc 3", - "Pn-32": "-P 2ab 2bc 3", - "Pn-3Z": "-P 2ab 2bc 3", - "Pn3": "P 2 2 3 -1n", - # 202 - "Fm-3": "-F 2 2 3", - "F2/m-3": "-F 2 2 3", - "Fm3": "-F 2 2 3", - # 203 - "Fd-3": "F 2 2 3 -1d", - "Fd-3:1": "F 2 2 3 -1d", - "Fd-31": "F 2 2 3 -1d", - "Fd-3S": "F 2 2 3 -1d", - "Fd-3:2": "-F 2uv 2vw 3", - "Fd-32": "-F 2uv 2vw 3", - "Fd-3Z": "-F 2uv 2vw 3", - "Fd3": "F 2 2 3 -1d", - # 204 - "Im-3": "-I 2 2 3", - "I2/m-3": "-I 2 2 3", - "Im3": "-I 2 2 3", - # 205 - "Pa-3": "-P 2ac 2ab 3", - "Pa3": "-P 2ac 2ab 3", - # 206 - "Ia-3": "-I 2b 2c 3", - "Ia3": "-I 2b 2c 3", - # 207 - "P432": "P 4 2 3", - # 208 - "P4232": "P 4n 2 3", - # 209 - "F432": "F 4 2 3", - # 210 - "F4132": "F 4d 2 3", - # 211 - "I432": "I 4 2 3", - # 212 - "P4332": "P 4acd 2ab 3", - # 213 - "P4132": "P 4bd 2ab 3", - # 214 - "I4132": "I 4bd 2c 3", - # 215 - "P-43m": "P -4 2 3", - # 216 - "F-43m": "F -4 2 3", - # 217 - "I-43m": "I -4 2 3", - # 218 - "P-43n": "P -4n 2 3", - # 219 - "F-43c": "F -4c 2 3", - # 220 - "I-43d": "I -4bd 2c 3", - # 221 - "Pm-3m": "-P 4 2 3", - "P4/m-32/m": "-P 4 2 3", - "Pm3m": "-P 4 2 3", - # 222 - "Pn-3n": "P 4 2 3 -1n", - "Pn-3n:1": "P 4 2 3 -1n", - "Pn-3n1": "P 4 2 3 -1n", - "Pn-3nS": "P 4 2 3 -1n", - "Pn-3n:2": "-P 4a 2bc 3", - "Pn-3n2": "-P 4a 2bc 3", - "Pn-3nZ": "-P 4a 2bc 3", - # 223 - "Pm-3n": "-P 4n 2 3", - "P2/m-3n": "-P 4n 2 3", - "Pm3n": "-P 4n 2 3", - # 224 - "Pn-3m": "P 4n 2 3 -1n", - "Pn-3m:1": "P 4n 2 3 -1n", - "Pn-3m1": "P 4n 2 3 -1n", - "Pn-3mS": "P 4n 2 3 -1n", - "Pn-3m:2": "-P 4bc 2bc 3", - "Pn-3m2": "-P 4bc 2bc 3", - "Pn-3mZ": "-P 4bc 2bc 3", - "Pn3m": "P 4n 2 3 -1n", - # 225 - "Fm-3m": "-F 4 2 3", - "F4/m-32/m": "-F 4 2 3", - "Fm3m": "-F 4 2 3", - # 226 - "Fm-3c": "-F 4c 2 3", - "F2/m-3c": "-F 4c 2 3", - "Fm3c": "-F 4c 2 3", - # 227 - "Fd-3m": "F 4d 2 3 -1d", - "Fd-3m:1": "F 4d 2 3 -1d", - "Fd-3m1": "F 4d 2 3 -1d", - "Fd-3mS": "F 4d 2 3 -1d", - "Fd-3m:2": "-F 4vw 2vw 3", - "Fd-3m2": "-F 4vw 2vw 3", - "Fd-3mZ": "-F 4vw 2vw 3", - "Fd3m": "F 4d 2 3 -1d", - # 228 - "Fd-3c": "F 4d 2 3 -1cd", - "Fd-3c:1": "F 4d 2 3 -1cd", - "Fd-3c1": "F 4d 2 3 -1cd", - "Fd-3cS": "F 4d 2 3 -1cd", - "Fd-3c:2": "-F 4cvw 2vw 3", - "Fd-3c2": "-F 4cvw 2vw 3", - "Fd-3cZ": "-F 4cvw 2vw 3", - "Fd3c": "F 4d 2 3 -1cd", - # 229 - "Im-3m": "-I 4 2 3", - "I4/m-32/m": "-I 4 2 3", - "Im3m": "-I 4 2 3", - # 230 - "Ia-3d": "-I 4bd 2c 3", - "Ia3d": "-I 4bd 2c 3", - ####################### - # Non-standard settings - # 1 - "A1": "A 1", - "B1": "B 1", - "C1": "C 1", - "I1": "I 1", - "F1": "F 1", - # 2 - "A-1": "-A 1", - "B-1": "-B 1", - "C-1": "-C 1", - "I-1": "-I 1", - "F-1": "-F 1", - # 5 - "F112": "F 2", - "F211": "F 2x", - "F121": "F 2y", - # 8 - "F11m": "F -2", - "Fm11": "F -2x", - "F1m1": "F -2y", - # 9 - "F11d": "F -2d", - "F1d1": "F -2yd", - "Fd11": "F -2xd", - # 12 - "F112/m": "-F 2", - "F2/m11": "-F 2x", - "F12/m1": "-F 2y", - # 15 - "F12/d1": "F 2ycuw -1c", - # 70 - "Fddd": "-F 2 2 -1d", - "Fddd:1": "-F 2 2 -1d", - "Fddd1": "-F 2 2 -1d", - "FdddS": "-F 2 2 -1d", - "Fddd:2": "-F 2uv 2vw", - "Fddd2": "-F 2uv 2vw", - "FdddZ": "-F 2uv 2vw", - # 139 - "F4/m2/m2/m": "-F 4 2", - "F4/mmm": "-F 4 2", -} - -# Space group number for each Hall symbol -Hall2Number = { - "Unknown": 0, - # 1 - "P 1": 1, - # 2 - "-P 1": 2, - # 3 - "P 2y": 3, - "P 2": 3, - "P 2x": 3, - # 4 - "P 2yb": 4, - "P 2c": 4, - "P 2xa": 4, - # 5 - "C 2y": 5, - "A 2y": 5, - "I 2y": 5, - "A 2": 5, - "B 2": 5, - "I 2": 5, - "B 2x": 5, - "C 2x": 5, - "I 2x": 5, - # 6 - "P -2y": 6, - "P -2": 6, - "P -2x": 6, - # 7 - "P -2yc": 7, - "P -2yac": 7, - "P -2ya": 7, - "P -2a": 7, - "P -2ab": 7, - "P -2b": 7, - "P -2xb": 7, - "P -2xbc": 7, - "P -2xc": 7, - # 8 - "C -2y": 8, - "A -2y": 8, - "I -2y": 8, - "A -2": 8, - "B -2": 8, - "I -2": 8, - "B -2x": 8, - "C -2x": 8, - "I -2x": 8, - # 9 - "C -2yc": 9, - "A -2yac": 9, - "I -2ya": 9, - "A -2ya": 9, - "C -2ybc": 9, - "I -2yc": 9, - "A -2a": 9, - "B -2bc": 9, - "I -2b": 9, - "B -2b": 9, - "A -2ac": 9, - "I -2a": 9, - "B -2xb": 9, - "C -2xbc": 9, - "I -2xc": 9, - "C -2xc": 9, - "B -2xbc": 9, - "I -2xb": 9, - # 10 - "-P 2y": 10, - "-P 2": 10, - "-P 2x": 10, - # 11 - "-P 2yb": 11, - "-P 2c": 11, - "-P 2xa": 11, - # 12 - "-C 2y": 12, - "-A 2y": 12, - "-I 2y": 12, - "-A 2": 12, - "-B 2": 12, - "-I 2": 12, - "-B 2x": 12, - "-C 2x": 12, - "-I 2x": 12, - # 13 - "-P 2yc": 13, - "-P 2yac": 13, - "-P 2ya": 13, - "-P 2a": 13, - "-P 2ab": 13, - "-P 2b": 13, - "-P 2xb": 13, - "-P 2xbc": 13, - "-P 2xc": 13, - # 14 - "-P 2ybc": 14, - "-P 2yn": 14, - "-P 2yab": 14, - "-P 2ac": 14, - "-P 2n": 14, - "-P 2bc": 14, - "-P 2xab": 14, - "-P 2xn": 14, - "-P 2xac": 14, - # 15 - "-C 2yc": 15, - "-A 2yac": 15, - "-I 2ya": 15, - "-A 2ya": 15, - "-C 2ybc": 15, - "-I 2yc": 15, - "-A 2a": 15, - "-B 2bc": 15, - "-I 2b": 15, - "-B 2b": 15, - "-A 2ac": 15, - "-I 2a": 15, - "-B 2xb": 15, - "-C 2xbc": 15, - "-I 2xc": 15, - "-C 2xc": 15, - "-B 2xbc": 15, - "-I 2xb": 15, - # 16 - "P 2 2": 16, - # 17 - "P 2c 2": 17, - "P 2a 2a": 17, - "P 2 2b": 17, - # 18 - "P 2 2ab": 18, - "P 2bc 2": 18, - "P 2ac 2ac": 18, - # 19 - "P 2ac 2ab": 19, - # 20 - "C 2c 2": 20, - "A 2a 2a": 20, - "B 2 2b": 20, - # 21 - "C 2 2": 21, - "A 2 2": 21, - "B 2 2": 21, - # 22 - "F 2 2": 22, - # 23 - "I 2 2": 23, - # 24 - "I 2b 2c": 24, - # 25 - "P 2 -2": 25, - "P -2 2": 25, - "P -2 -2": 25, - # 26 - "P 2c -2": 26, - "P 2c -2c": 26, - "P -2a 2a": 26, - "P -2 2a": 26, - "P -2 -2b": 26, - "P -2b -2": 26, - # 27 - "P 2 -2c": 27, - "P -2a 2": 27, - "P -2b -2b": 27, - # 28 - "P 2 -2a": 28, - "P 2 -2b": 28, - "P -2b 2": 28, - "P -2c 2": 28, - "P -2c -2c": 28, - "P -2a -2a": 28, - # 29 - "P 2c -2ac": 29, - "P 2c -2b": 29, - "P -2b 2a": 29, - "P -2ac 2a": 29, - "P -2bc -2c": 29, - "P -2a -2ab": 29, - # 30 - "P 2 -2bc": 30, - "P 2 -2ac": 30, - "P -2ac 2": 30, - "P -2ab 2": 30, - "P -2ab -2ab": 30, - "P -2bc -2bc": 30, - # 31 - "P 2ac -2": 31, - "P 2bc -2bc": 31, - "P -2ab 2ab": 31, - "P -2 2ac": 31, - "P -2 -2bc": 31, - "P -2ab -2": 31, - # 32 - "P 2 -2ab": 32, - "P -2bc 2": 32, - "P -2ac -2ac": 32, - # 33 - "P 2c -2n": 33, - "P 2c -2ab": 33, - "P -2bc 2a": 33, - "P -2n 2a": 33, - "P -2n -2ac": 33, - "P -2ac -2n": 33, - # 34 - "P 2 -2n": 34, - "P -2n 2": 34, - "P -2n -2n": 34, - # 35 - "C 2 -2": 35, - "A -2 2": 35, - "B -2 -2": 35, - # 36 - "C 2c -2": 36, - "C 2c -2c": 36, - "A -2a 2a": 36, - "A -2 2a": 36, - "B -2 -2b": 36, - "B -2b -2": 36, - # 37 - "C 2 -2c": 37, - "A -2a 2": 37, - "B -2b -2b": 37, - # 38 - "A 2 -2": 38, - "B 2 -2": 38, - "B -2 2": 38, - "C -2 2": 38, - "C -2 -2": 38, - "A -2 -2": 38, - # 39 - "A 2 -2c": 39, - "B 2 -2c": 39, - "B -2c 2": 39, - "C -2b 2": 39, - "C -2b -2b": 39, - "A -2c -2c": 39, - # 40 - "A 2 -2a": 40, - "B 2 -2b": 40, - "B -2b 2": 40, - "C -2c 2": 40, - "C -2c -2c": 40, - "A -2a -2a": 40, - # 41 - "A 2 -2ac": 41, - "B 2 -2bc": 41, - "B -2bc 2": 41, - "C -2bc 2": 41, - "C -2bc -2bc": 41, - "A -2ac -2ac": 41, - # 42 - "F 2 -2": 42, - "F -2 2": 42, - "F -2 -2": 42, - # 43 - "F 2 -2d": 43, - "F -2d 2": 43, - "F -2d -2d": 43, - # 44 - "I 2 -2": 44, - "I -2 2": 44, - "I -2 -2": 44, - # 45 - "I 2 -2c": 45, - "I -2a 2": 45, - "I -2b -2b": 45, - # 46 - "I 2 -2a": 46, - "I 2 -2b": 46, - "I -2b 2": 46, - "I -2c 2": 46, - "I -2c -2c": 46, - "I -2a -2a": 46, - # 47 - "-P 2 2": 47, - # 48 - "P 2 2 -1n": 48, - "-P 2ab 2bc": 48, - # 49 - "-P 2 2c": 49, - "-P 2a 2": 49, - "-P 2b 2b": 49, - # 50 - "P 2 2 -1ab": 50, - "-P 2ab 2b": 50, - "P 2 2 -1bc": 50, - "-P 2b 2bc": 50, - "P 2 2 -1ac": 50, - "-P 2a 2c": 50, - # 51 - "-P 2a 2a": 51, - "-P 2b 2": 51, - "-P 2 2b": 51, - "-P 2c 2c": 51, - "-P 2c 2": 51, - "-P 2 2a": 51, - # 52 - "-P 2a 2bc": 52, - "-P 2b 2n": 52, - "-P 2n 2b": 52, - "-P 2ab 2c": 52, - "-P 2ab 2n": 52, - "-P 2n 2bc": 52, - # 53 - "-P 2ac 2": 53, - "-P 2bc 2bc": 53, - "-P 2ab 2ab": 53, - "-P 2 2ac": 53, - "-P 2 2bc": 53, - "-P 2ab 2": 53, - # 54 - "-P 2a 2ac": 54, - "-P 2b 2c": 54, - "-P 2a 2b": 54, - "-P 2ac 2c": 54, - "-P 2bc 2b": 54, - "-P 2b 2ab": 54, - # 55 - "-P 2 2ab": 55, - "-P 2bc 2": 55, - "-P 2ac 2ac": 55, - # 56 - "-P 2ab 2ac": 56, - "-P 2ac 2bc": 56, - "-P 2bc 2ab": 56, - # 57 - "-P 2c 2b": 57, - "-P 2c 2ac": 57, - "-P 2ac 2a": 57, - "-P 2b 2a": 57, - "-P 2a 2ab": 57, - "-P 2bc 2c": 57, - # 58 - "-P 2 2n": 58, - "-P 2n 2": 58, - "-P 2n 2n": 58, - # 59 - "P 2 2ab -1ab": 59, - "-P 2ab 2a": 59, - "P 2bc 2 -1bc": 59, - "-P 2c 2bc": 59, - "P 2ac 2ac -1ac": 59, - "-P 2c 2a": 59, - # 60 - "-P 2n 2ab": 60, - "-P 2n 2c": 60, - "-P 2a 2n": 60, - "-P 2bc 2n": 60, - "-P 2ac 2b": 60, - "-P 2b 2ac": 60, - # 61 - "-P 2ac 2ab": 61, - "-P 2bc 2ac": 61, - # 62 - "-P 2ac 2n": 62, - "-P 2bc 2a": 62, - "-P 2c 2ab": 62, - "-P 2n 2ac": 62, - "-P 2n 2a": 62, - "-P 2c 2n": 62, - # 63 - "-C 2c 2": 63, - "-C 2c 2c": 63, - "-A 2a 2a": 63, - "-A 2 2a": 63, - "-B 2 2b": 63, - "-B 2b 2": 63, - # 64 - "-C 2bc 2": 64, - "-C 2bc 2bc": 64, - "-A 2ac 2ac": 64, - "-A 2 2ac": 64, - "-B 2 2bc": 64, - "-B 2bc 2": 64, - # 65 - "-C 2 2": 65, - "-A 2 2": 65, - "-B 2 2": 65, - # 66 - "-C 2 2c": 66, - "-A 2a 2": 66, - "-B 2b 2b": 66, - # 67 - "-C 2b 2": 67, - "-C 2b 2b": 67, - "-A 2c 2c": 67, - "-A 2 2c": 67, - "-B 2 2c": 67, - "-B 2c 2": 67, - # 68 - "C 2 2 -1bc": 68, - "-C 2b 2bc": 68, - "C 2 2 -1bc": 68, - "-C 2b 2c": 68, - "A 2 2 -1ac": 68, - "-A 2a 2c": 68, - "A 2 2 -1ac": 68, - "-A 2ac 2c": 68, - "B 2 2 -1bc": 68, - "-B 2bc 2b": 68, - "B 2 2 -1bc": 68, - "-B 2b 2bc": 68, - # 69 - "-F 2 2": 69, - # 70 - "F 2 2 -1d": 70, - "-F 2uv 2vw": 70, - # 71 - "-I 2 2": 71, - # 72 - "-I 2 2c": 72, - "-I 2a 2": 72, - "-I 2b 2b": 72, - # 73 - "-I 2b 2c": 73, - "-I 2a 2b": 73, - # 74 - "-I 2b 2": 74, - "-I 2a 2a": 74, - "-I 2c 2c": 74, - "-I 2 2b": 74, - "-I 2 2a": 74, - "-I 2c 2": 74, - # 75 - "P 4": 75, - # 76 - "P 4w": 76, - # 77 - "P 4c": 77, - # 78 - "P 4cw": 78, - # 79 - "I 4": 79, - # 80 - "I 4bw": 80, - # 81 - "P -4": 81, - # 82 - "I -4": 82, - # 83 - "-P 4": 83, - # 84 - "-P 4c": 84, - # 85 - "P 4ab -1ab": 85, - "-P 4a": 85, - # 86 - "P 4n -1n": 86, - "-P 4bc": 86, - # 87 - "-I 4": 87, - # 88 - "I 4bw -1bw": 88, - "-I 4ad": 88, - # 89 - "P 4 2": 89, - # 90 - "P 4ab 2ab": 90, - # 91 - "P 4w 2c": 91, - # 92 - "P 4abw 2nw": 92, - # 93 - "P 4c 2": 93, - # 94 - "P 4n 2n": 94, - # 95 - "P 4cw 2c": 95, - # 96 - "P 4nw 2abw": 96, - # 97 - "I 4 2": 97, - # 98 - "I 4bw 2bw": 98, - # 99 - "P 4 -2": 99, - # 100 - "P 4 -2ab": 100, - # 101 - "P 4c -2c": 101, - # 102 - "P 4n -2n": 102, - # 103 - "P 4 -2c": 103, - # 104 - "P 4 -2n": 104, - # 105 - "P 4c -2": 105, - # 106 - "P 4c -2ab": 106, - # 107 - "I 4 -2": 107, - # 108 - "I 4 -2c": 108, - # 109 - "I 4bw -2": 109, - # 110 - "I 4bw -2c": 110, - # 111 - "P -4 2": 111, - # 112 - "P -4 2c": 112, - # 113 - "P -4 2ab": 113, - # 114 - "P -4 2n": 114, - # 115 - "P -4 -2": 115, - # 116 - "P -4 -2c": 116, - # 117 - "P -4 -2ab": 117, - # 118 - "P -4 -2n": 118, - # 119 - "I -4 -2": 119, - # 120 - "I -4 -2c": 120, - # 121 - "I -4 2": 121, - # 122 - "I -4 2bw": 122, - # 123 - "-P 4 2": 123, - # 124 - "-P 4 2c": 124, - # 125 - "P 4 2 -1ab": 125, - "-P 4a 2b": 125, - # 126 - "P 4 2 -1n": 126, - "-P 4a 2bc": 126, - # 127 - "-P 4 2ab": 127, - # 128 - "-P 4 2n": 128, - # 129 - "P 4ab 2ab -1ab": 129, - "-P 4a 2a": 129, - # 130 - "P 4ab 2n -1ab": 130, - "-P 4a 2ac": 130, - # 131 - "-P 4c 2": 131, - # 132 - "-P 4c 2c": 132, - # 133 - "P 4n 2c -1n": 133, - "-P 4ac 2b": 133, - # 134 - "P 4n 2 -1n": 134, - "-P 4ac 2bc": 134, - # 135 - "-P 4c 2ab": 135, - # 136 - "-P 4n 2n": 136, - # 137 - "P 4n 2n -1n": 137, - "-P 4ac 2a": 137, - # 138 - "P 4n 2ab -1n": 138, - "-P 4ac 2ac": 138, - # 139 - "-I 4 2": 139, - # 140 - "-I 4 2c": 140, - # 141 - "I 4bw 2bw -1bw": 141, - "-I 4bd 2": 141, - # 142 - "I 4bw 2aw -1bw": 142, - "-I 4bd 2c": 142, - # 143 - "P 3": 143, - # 144 - "P 31": 144, - # 145 - "P 32": 145, - # 146 - "R 3": 146, - "P 3*": 146, - # 147 - "-P 3": 147, - # 148 - "-R 3": 148, - "-P 3*": 148, - # 149 - "P 3 2": 149, - # 150 - 'P 3 2"': 150, - # 151 - "P 31 2c (0 0 1)": 151, - # 152 - 'P 31 2"': 152, - # 153 - "P 32 2c (0 0 -1)": 153, - # 154 - 'P 32 2"': 154, - # 155 - 'R 3 2"': 155, - "P 3* 2": 155, - # 156 - 'P 3 -2"': 156, - # 157 - "P 3 -2": 157, - # 158 - 'P 3 -2"c': 158, - # 159 - "P 3 -2c": 159, - # 160 - 'R 3 -2"': 160, - "P 3* -2": 160, - # 161 - 'R 3 -2"c': 161, - "P 3* -2n": 161, - # 162 - "-P 3 2": 162, - # 163 - "-P 3 2c": 163, - # 164 - '-P 3 2"': 164, - # 165 - '-P 3 2"c': 165, - # 166 - '-R 3 2"': 166, - "-P 3* 2": 166, - # 167 - '-R 3 2"c': 167, - "-P 3* 2n": 167, - # 168 - "P 6": 168, - # 169 - "P 61": 169, - # 170 - "P 65": 170, - # 171 - "P 62": 171, - # 172 - "P 64": 172, - # 173 - "P 6c": 173, - # 174 - "P -6": 174, - # 175 - "-P 6": 175, - # 176 - "-P 6c": 176, - # 177 - "P 6 2": 177, - # 178 - "P 61 2 (0 0 -1)": 178, - # 179 - "P 65 2 (0 0 1)": 179, - # 180 - "P 62 2c (0 0 1)": 180, - # 181 - "P 64 2c (0 0 -1)": 181, - # 182 - "P 6c 2c": 182, - # 183 - "P 6 -2": 183, - # 184 - "P 6 -2c": 184, - # 185 - "P 6c -2": 185, - # 186 - "P 6c -2c": 186, - # 187 - "P -6 2": 187, - # 188 - "P -6c 2": 188, - # 189 - "P -6 -2": 189, - # 190 - "P -6c -2c": 190, - # 191 - "-P 6 2": 191, - # 192 - "-P 6 2c": 192, - # 193 - "-P 6c 2": 193, - # 194 - "-P 6c 2c": 194, - # 195 - "P 2 2 3": 195, - # 196 - "F 2 2 3": 196, - # 197 - "I 2 2 3": 197, - # 198 - "P 2ac 2ab 3": 198, - # 199 - "I 2b 2c 3": 199, - # 200 - "-P 2 2 3": 200, - # 201 - "P 2 2 3 -1n": 201, - "-P 2ab 2bc 3": 201, - # 202 - "-F 2 2 3": 202, - # 203 - "F 2 2 3 -1d": 203, - "-F 2uv 2vw 3": 203, - # 204 - "-I 2 2 3": 204, - # 205 - "-P 2ac 2ab 3": 205, - # 206 - "-I 2b 2c 3": 206, - # 207 - "P 4 2 3": 207, - # 208 - "P 4n 2 3": 208, - # 209 - "F 4 2 3": 209, - # 210 - "F 4d 2 3": 210, - # 211 - "I 4 2 3": 211, - # 212 - "P 4acd 2ab 3": 212, - # 213 - "P 4bd 2ab 3": 213, - # 214 - "I 4bd 2c 3": 214, - # 215 - "P -4 2 3": 215, - # 216 - "F -4 2 3": 216, - # 217 - "I -4 2 3": 217, - # 218 - "P -4n 2 3": 218, - # 219 - "F -4c 2 3": 219, - # 220 - "I -4bd 2c 3": 220, - # 221 - "-P 4 2 3": 221, - # 222 - "P 4 2 3 -1n": 222, - "-P 4a 2bc 3": 222, - # 223 - "-P 4n 2 3": 223, - # 224 - "P 4n 2 3 -1n": 224, - "-P 4bc 2bc 3": 224, - # 225 - "-F 4 2 3": 225, - # 226 - "-F 4c 2 3": 226, - # 227 - "F 4d 2 3 -1d": 227, - "-F 4vw 2vw 3": 227, - # 228 - "F 4d 2 3 -1cd": 228, - "-F 4cvw 2vw 3": 228, - # 229 - "-I 4 2 3": 229, - # 230 - "-I 4bd 2c 3": 230, - ####################### - # Non-standard settings - # 1 - "A 1": 1, - "B 1": 1, - "C 1": 1, - "I 1": 1, - "F 1": 1, - # 2 - "-A 1": 2, - "-B 1": 2, - "-C 1": 2, - "-I 1": 2, - "-F 1": 2, - # 5 - "F 2": 5, - "F 2x": 5, - "F 2y": 5, - # 8 - "F -2": 8, - "F -2x": 8, - "F -2y": 8, - # 9 - "F -2d": 9, - "F -2yd": 9, - "F -2xd": 9, - # 12 - "-F 2": 12, - "-F 2x": 12, - "-F 2y": 12, - # 15 - "F 2ycuw -1c": 15, - # 70 - "-F 2 2 -1d": 70, - "-F 2uv 2vw": 70, - # 139 - "-F 4 2": 139, -} - -# The space groups that has only one possible "standard" setting -Number2Hall = { - 1: "P 1", - 2: "-P 1", - 16: "P 2 2", - 19: "P 2ac 2ab", - 22: "F 2 2", - 23: "I 2 2", - 24: "I 2b 2c", - 47: "-P 2 2", - 69: "-F 2 2", - 71: "-I 2 2", - 75: "P 4", - 76: "P 4w", - 77: "P 4c", - 78: "P 4cw", - 79: "I 4", - 80: "I 4bw", - 81: "P -4", - 82: "I -4", - 83: "-P 4", - 84: "-P 4c", - 87: "-I 4", - 89: "P 4 2", - 90: "P 4ab 2ab", - 91: "P 4w 2c", - 92: "P 4abw 2nw", - 93: "P 4c 2", - 94: "P 4n 2n", - 95: "P 4cw 2c", - 96: "P 4nw 2abw", - 97: "I 4 2", - 98: "I 4bw 2bw", - 99: "P 4 -2", - 100: "P 4 -2ab", - 101: "P 4c -2c", - 102: "P 4n -2n", - 103: "P 4 -2c", - 104: "P 4 -2n", - 105: "P 4c -2", - 106: "P 4c -2ab", - 107: "I 4 -2", - 108: "I 4 -2c", - 109: "I 4bw -2", - 110: "I 4bw -2c", - 111: "P -4 2", - 112: "P -4 2c", - 113: "P -4 2ab", - 114: "P -4 2n", - 115: "P -4 -2", - 116: "P -4 -2c", - 117: "P -4 -2ab", - 118: "P -4 -2n", - 119: "I -4 -2", - 120: "I -4 -2c", - 121: "I -4 2", - 122: "I -4 2bw", - 123: "-P 4 2", - 124: "-P 4 2c", - 127: "-P 4 2ab", - 128: "-P 4 2n", - 131: "-P 4c 2", - 132: "-P 4c 2c", - 135: "-P 4c 2ab", - 136: "-P 4n 2n", - 139: "-I 4 2", - 140: "-I 4 2c", - 143: "P 3", - 144: "P 31", - 145: "P 32", - 147: "-P 3", - 149: "P 3 2", - 150: 'P 3 2"', - 151: "P 31 2c (0 0 1)", - 152: 'P 31 2"', - 153: "P 32 2c (0 0 -1)", - 154: 'P 32 2"', - 156: 'P 3 -2"', - 157: "P 3 -2", - 158: 'P 3 -2"c', - 159: "P 3 -2c", - 162: "-P 3 2", - 163: "-P 3 2c", - 164: '-P 3 2"', - 165: '-P 3 2"c', - 168: "P 6", - 169: "P 61", - 170: "P 65", - 171: "P 62", - 172: "P 64", - 173: "P 6c", - 174: "P -6", - 175: "-P 6", - 176: "-P 6c", - 177: "P 6 2", - 178: "P 61 2 (0 0 -1)", - 179: "P 65 2 (0 0 1)", - 180: "P 62 2c (0 0 1)", - 181: "P 64 2c (0 0 -1)", - 182: "P 6c 2c", - 183: "P 6 -2", - 184: "P 6 -2c", - 185: "P 6c -2", - 186: "P 6c -2c", - 187: "P -6 2", - 188: "P -6c 2", - 189: "P -6 -2", - 190: "P -6c -2c", - 191: "-P 6 2", - 192: "-P 6 2c", - 193: "-P 6c 2", - 194: "-P 6c 2c", - 195: "P 2 2 3", - 196: "F 2 2 3", - 197: "I 2 2 3", - 198: "P 2ac 2ab 3", - 199: "I 2b 2c 3", - 200: "-P 2 2 3", - 202: "-F 2 2 3", - 204: "-I 2 2 3", - 205: "-P 2ac 2ab 3", - 206: "-I 2b 2c 3", - 207: "P 4 2 3", - 208: "P 4n 2 3", - 209: "F 4 2 3", - 210: "F 4d 2 3", - 211: "I 4 2 3", - 212: "P 4acd 2a 3", - 213: "P 4bd 2ab 3", - 214: "I 4bd 2c 3", - 215: "P -4 2 3", - 216: "F -4 2 3", - 217: "I -4 2 3", - 218: "P -4n 2 3", - 219: "F -4c 2 3", - 220: "I -4bd 2c 3", - 221: "-P 4 2 3", - 223: "-P 4n 2 3", - 225: "-F 4 2 3", - 226: "-F 4c 2 3", - 229: "-I 4 2 3", - 230: "-I 4bd 2c 3", -} - -Hall2HM = { - "Unknown": "Unknown", - # 1 - "P 1": "P1", - # 2 - "-P 1": "P-1", - # 3 - "P 2y": "P121", - "P 2": "P112", - "P 2x": "P211", - # 4 - "P 2yb": "P1211", - "P 2c": "P1121", - "P 2xa": "P2111", - # 5 - "C 2y": "C121", - "A 2y": "A121", - "I 2y": "I121", - "A 2": "A112", - "B 2": "B112", - "I 2": "I112", - "B 2x": "B211", - "C 2x": "C211", - "I 2x": "I211", - # 6 - "P -2y": "P1m1", - "P -2": "P11m", - "P -2x": "Pm11", - # 7 - "P -2yc": "P1c1", - "P -2yac": "P1n1", - "P -2ya": "P1a1", - "P -2a": "P11a", - "P -2ab": "P11n", - "P -2b": "P11b", - "P -2xb": "Pb11", - "P -2xbc": "Pn11", - "P -2xc": "Pc11", - # 8 - "C -2y": "C1m1", - "A -2y": "A1m1", - "I -2y": "I1m1", - "A -2": "A11m", - "B -2": "B11m", - "I -2": "I11m", - "B -2x": "Bm11", - "C -2x": "Cm11", - "I -2x": "Im11", - # 9 - "C -2yc": "C1c1", - "A -2yac": "A1n1", - "I -2ya": "I1a1", - "A -2ya": "A1a1", - "C -2ybc": "C1n1", - "I -2yc": "I1c1", - "A -2a": "A11a", - "B -2bc": "B11n", - "I -2b": "I11b", - "B -2b": "B11b", - "A -2ac": "A11n", - "I -2a": "I11a", - "B -2xb": "Bb11", - "C -2xbc": "Cn11", - "I -2xc": "Ic11", - "C -2xc": "Cc11", - "B -2xbc": "Bn11", - "I -2xb": "Ib11", - # 10 - "-P 2y": "P12/m1", - "-P 2": "P112/m", - "-P 2x": "P2/m11", - # 11 - "-P 2yb": "P121/m1", - "-P 2c": "P1121/m", - "-P 2xa": "P21/m11", - # 12 - "-C 2y": "C12/m1", - "-A 2y": "A12/m1", - "-I 2y": "I12/m1", - "-A 2": "A112/m", - "-B 2": "B112/m", - "-I 2": "I112/m", - "-B 2x": "B2/m11", - "-C 2x": "C2/m11", - "-I 2x": "I2/m11", - # 13 - "-P 2yc": "P12/c1", - "-P 2yac": "P12/n1", - "-P 2ya": "P12/a1", - "-P 2a": "P112/a", - "-P 2ab": "P112/n", - "-P 2b": "P112/b", - "-P 2xb": "P2/b11", - "-P 2xbc": "P2/n11", - "-P 2xc": "P2/c11", - # 14 - "-P 2ybc": "P121/c1", - "-P 2yn": "P121/n1", - "-P 2yab": "P121/a1", - "-P 2ac": "P1121/a", - "-P 2n": "P1121/n", - "-P 2bc": "P1121/b", - "-P 2xab": "P21/b11", - "-P 2xn": "P21/n11", - "-P 2xac": "P21/c11", - # 15 - "-C 2yc": "C12/c1", - "-A 2yac": "A12/n1", - "-I 2ya": "I12/a1", - "-A 2ya": "A12/a1", - "-C 2ybc": "C12/n1", - "-I 2yc": "I12/c1", - "-A 2a": "A112/a", - "-B 2bc": "B112/n", - "-I 2b": "I112/b", - "-B 2b": "B112/b", - "-A 2ac": "A112/n", - "-I 2a": "I112/a", - "-B 2xb": "B2/b11", - "-C 2xbc": "C2/n11", - "-I 2xc": "I2/c11", - "-C 2xc": "C2/c11", - "-B 2xbc": "B2/n11", - "-I 2xb": "I2/b11", - # 16 - "P 2 2": "P222", - # 17 - "P 2c 2": "P2221", - "P 2a 2a": "P2122", - "P 2 2b": "P2212", - # 18 - "P 2 2ab": "P21212", - "P 2bc 2": "P22121", - "P 2ac 2ac": "P21221", - # 19 - "P 2ac 2ab": "P212121", - # 20 - "C 2c 2": "C2221", - "A 2a 2a": "A2122", - "B 2 2b": "B2212", - # 21 - "C 2 2": "C222", - "A 2 2": "A222", - "B 2 2": "B222", - # 22 - "F 2 2": "F222", - # 23 - "I 2 2": "I222", - # 24 - "I 2b 2c": "I212121", - # 25 - "P 2 -2": "Pmm2", - "P -2 2": "P2mm", - "P -2 -2": "Pm2m", - # 26 - "P 2c -2": "Pmc21", - "P 2c -2c": "Pcm21", - "P -2a 2a": "P21ma", - "P -2 2a": "P21am", - "P -2 -2b": "Pb21m", - "P -2b -2": "Pm21b", - # 27 - "P 2 -2c": "Pcc2", - "P -2a 2": "P2aa", - "P -2b -2b": "Pb2b", - # 28 - "P 2 -2a": "Pma2", - "P 2 -2b": "Pbm2", - "P -2b 2": "P2mb", - "P -2c 2": "P2cm", - "P -2c -2c": "Pc2m", - "P -2a -2a": "Pm2a", - # 29 - "P 2c -2ac": "Pca21", - "P 2c -2b": "Pbc21", - "P -2b 2a": "P21ab", - "P -2ac 2a": "P21ca", - "P -2bc -2c": "Pc21b", - "P -2a -2ab": "Pb21a", - # 30 - "P 2 -2bc": "Pnc2", - "P 2 -2ac": "Pcn2", - "P -2ac 2": "P2na", - "P -2ab 2": "P2an", - "P -2ab -2ab": "Pb2n", - "P -2bc -2bc": "Pn2b", - # 31 - "P 2ac -2": "Pmn21", - "P 2bc -2bc": "Pnm21", - "P -2ab 2ab": "P21mn", - "P -2 2ac": "P21nm", - "P -2 -2bc": "Pn21m", - "P -2ab -2": "Pm21n", - # 32 - "P 2 -2ab": "Pba2", - "P -2bc 2": "P2cb", - "P -2ac -2ac": "Pc2a", - # 33 - "P 2c -2n": "Pna21", - "P 2c -2ab": "Pbn21", - "P -2bc 2a": "P21nb", - "P -2n 2a": "P21cn", - "P -2n -2ac": "Pc21n", - "P -2ac -2n": "Pn21a", - # 34 - "P 2 -2n": "Pnn2", - "P -2n 2": "P2nn", - "P -2n -2n": "Pn2n", - # 35 - "C 2 -2": "Cmm2", - "A -2 2": "A2mm", - "B -2 -2": "Bm2m", - # 36 - "C 2c -2": "Cmc21", - "C 2c -2c": "Ccm21", - "A -2a 2a": "A21ma", - "A -2 2a": "A21am", - "B -2 -2b": "Bb21m", - "B -2b -2": "Bm21b", - # 37 - "C 2 -2c": "Ccc2", - "A -2a 2": "A2aa", - "B -2b -2b": "Bb2b", - # 38 - "A 2 -2": "Amm2", - "B 2 -2": "Bmm2", - "B -2 2": "B2mm", - "C -2 2": "C2mm", - "C -2 -2": "Cm2m", - "A -2 -2": "Am2m", - # 39 - "A 2 -2c": "Abm2", - "B 2 -2c": "Bma2", - "B -2c 2": "B2cm", - "C -2b 2": "C2mb", - "C -2b -2b": "Cm2a", - "A -2c -2c": "Ac2m", - # 40 - "A 2 -2a": "Ama2", - "B 2 -2b": "Bbm2", - "B -2b 2": "B2mb", - "C -2c 2": "C2cm", - "C -2c -2c": "Cc2m", - "A -2a -2a": "Am2a", - # 41 - "A 2 -2ac": "Aba2", - "B 2 -2bc": "Bba2", - "B -2bc 2": "B2cb", - "C -2bc 2": "C2cb", - "C -2bc -2bc": "Cc2a", - "A -2ac -2ac": "Ac2a", - # 42 - "F 2 -2": "Fmm2", - "F -2 2": "F2mm", - "F -2 -2": "Fm2m", - # 43 - "F 2 -2d": "Fdd2", - "F -2d 2": "F2dd", - "F -2d -2d": "Fd2d", - # 44 - "I 2 -2": "Imm2", - "I -2 2": "I2mm", - "I -2 -2": "Im2m", - # 45 - "I 2 -2c": "Iba2", - "I -2a 2": "I2cb", - "I -2b -2b": "Ic2a", - # 46 - "I 2 -2a": "Ima2", - "I 2 -2b": "Ibm2", - "I -2b 2": "I2mb", - "I -2c 2": "I2cm", - "I -2c -2c": "Ic2m", - "I -2a -2a": "Im2a", - # 47 - "-P 2 2": "Pmmm", - # 48 - "P 2 2 -1n": "Pnnn:1", - "-P 2ab 2bc": "Pnnn:2", - # 49 - "-P 2 2c": "Pccm", - "-P 2a 2": "Pmaa", - "-P 2b 2b": "Pbmb", - # 50 - "P 2 2 -1ab": "Pban:1", - "-P 2ab 2b": "Pban:2", - "P 2 2 -1bc": "Pncb:1", - "-P 2b 2bc": "Pncb:2", - "P 2 2 -1ac": "Pcna:1", - "-P 2a 2c": "Pcna:2", - # 51 - "-P 2a 2a": "Pmma", - "-P 2b 2": "Pmmb", - "-P 2 2b": "Pbmm", - "-P 2c 2c": "Pcmm", - "-P 2c 2": "Pmcm", - "-P 2 2a": "Pmam", - # 52 - "-P 2a 2bc": "Pnna", - "-P 2b 2n": "Pnnb", - "-P 2n 2b": "Pbnn", - "-P 2ab 2c": "Pcnn", - "-P 2ab 2n": "Pncn", - "-P 2n 2bc": "Pnan", - # 53 - "-P 2ac 2": "Pmna", - "-P 2bc 2bc": "Pnmb", - "-P 2ab 2ab": "Pbmn", - "-P 2 2ac": "Pcnm", - "-P 2 2bc": "Pncm", - "-P 2ab 2": "Pman", - # 54 - "-P 2a 2ac": "Pcca", - "-P 2b 2c": "Pccb", - "-P 2a 2b": "Pbaa", - "-P 2ac 2c": "Pcaa", - "-P 2bc 2b": "Pbcb", - "-P 2b 2ab": "Pbab", - # 55 - "-P 2 2ab": "Pbam", - "-P 2bc 2": "Pmcb", - "-P 2ac 2ac": "Pcma", - # 56 - "-P 2ab 2ac": "Pccn", - "-P 2ac 2bc": "Pnaa", - "-P 2bc 2ab": "Pbnb", - # 57 - "-P 2c 2b": "Pbcm", - "-P 2c 2ac": "Pcam", - "-P 2ac 2a": "Pmca", - "-P 2b 2a": "Pmab", - "-P 2a 2ab": "Pbma", - "-P 2bc 2c": "Pcmb", - # 58 - "-P 2 2n": "Pnnm", - "-P 2n 2": "Pmnn", - "-P 2n 2n": "Pnmn", - # 59 - "P 2 2ab -1ab": "Pmmn:1", - "-P 2ab 2a": "Pmmn:2", - "P 2bc 2 -1bc": "Pnmm:1", - "-P 2c 2bc": "Pnmm:2", - "P 2ac 2ac -1ac": "Pmnm:1", - "-P 2c 2a": "Pmnm:2", - # 60 - "-P 2n 2ab": "Pbcn", - "-P 2n 2c": "Pcan", - "-P 2a 2n": "Pnca", - "-P 2bc 2n": "Pnab", - "-P 2ac 2b": "Pbna", - "-P 2b 2ac": "Pcnb", - # 61 - "-P 2ac 2ab": "Pbca", - "-P 2bc 2ac": "Pcab", - # 62 - "-P 2ac 2n": "Pnma", - "-P 2bc 2a": "Pmnb", - "-P 2c 2ab": "Pbnm", - "-P 2n 2ac": "Pcmn", - "-P 2n 2a": "Pmcn", - "-P 2c 2n": "Pnam", - # 63 - "-C 2c 2": "Cmcm", - "-C 2c 2c": "Ccmm", - "-A 2a 2a": "Amma", - "-A 2 2a": "Amam", - "-B 2 2b": "Bbmm", - "-B 2b 2": "Bmmb", - # 64 - "-C 2bc 2": "Cmca", - "-C 2bc 2bc": "Ccmb", - "-A 2ac 2ac": "Abma", - "-A 2 2ac": "Acam", - "-B 2 2bc": "Bbcm", - "-B 2bc 2": "Bmab", - # 65 - "-C 2 2": "Cmmm", - "-A 2 2": "Ammm", - "-B 2 2": "Bmmm", - # 66 - "-C 2 2c": "Cccm", - "-A 2a 2": "Amaa", - "-B 2b 2b": "Bbmb", - # 67 - "-C 2b 2": "Cmma", - "-C 2b 2b": "Cmmb", - "-A 2c 2c": "Abmm", - "-A 2 2c": "Acmm", - "-B 2 2c": "Bmcm", - "-B 2c 2": "Bmam", - # 68 - "C 2 2 -1bc": "Ccca:1", - "-C 2b 2bc": "Ccca:2", - "C 2 2 -1bc": "Cccb:1", - "-C 2b 2c": "Cccb:2", - "A 2 2 -1ac": "Abaa:1", - "-A 2a 2c": "Abaa:2", - "A 2 2 -1ac": "Acaa:1", - "-A 2ac 2c": "Acaa:2", - "B 2 2 -1bc": "Bbcb:1", - "-B 2bc 2b": "Bbcb:2", - "B 2 2 -1bc": "Bbab:1", - "-B 2b 2bc": "Bbab:2", - # 69 - "-F 2 2": "Fmmm", - # 70 - "F 2 2 -1d": "Fddd:1", - "-F 2uv 2vw": "Fddd:2", - # 71 - "-I 2 2": "Immm", - # 72 - "-I 2 2c": "Ibam", - "-I 2a 2": "Imcb", - "-I 2b 2b": "Icma", - # 73 - "-I 2b 2c": "Ibca", - "-I 2a 2b": "Icab", - # 74 - "-I 2b 2": "Imma", - "-I 2a 2a": "Immb", - "-I 2c 2c": "Ibmm", - "-I 2 2b": "Icmm", - "-I 2 2a": "Imcm", - "-I 2c 2": "Imam", - # 75 - "P 4": "P4", - # 76 - "P 4w": "P41", - # 77 - "P 4c": "P42", - # 78 - "P 4cw": "P43", - # 79 - "I 4": "I4", - # 80 - "I 4bw": "I41", - # 81 - "P -4": "P-4", - # 82 - "I -4": "I-4", - # 83 - "-P 4": "P4/m", - # 84 - "-P 4c": "P42/m", - # 85 - "P 4ab -1ab": "P4/n:1", - "-P 4a": "P4/n:2", - # 86 - "P 4n -1n": "P42/n:1", - "-P 4bc": "P42/n:2", - # 87 - "-I 4": "I4/m", - # 88 - "I 4bw -1bw": "I41/a:1", - "-I 4ad": "I41/a:2", - # 89 - "P 4 2": "P422", - # 90 - "P 4ab 2ab": "P4212", - # 91 - "P 4w 2c": "P4122", - # 92 - "P 4abw 2nw": "P41212", - # 93 - "P 4c 2": "P4222", - # 94 - "P 4n 2n": "P42212", - # 95 - "P 4cw 2c": "P4322", - # 96 - "P 4nw 2abw": "P43212", - # 97 - "I 4 2": "I422", - # 98 - "I 4bw 2bw": "I4122", - # 99 - "P 4 -2": "P4mm", - # 100 - "P 4 -2ab": "P4bm", - # 101 - "P 4c -2c": "P42cm", - # 102 - "P 4n -2n": "P42nm", - # 103 - "P 4 -2c": "P4cc", - # 104 - "P 4 -2n": "P4nc", - # 105 - "P 4c -2": "P42mc", - # 106 - "P 4c -2ab": "P42bc", - # 107 - "I 4 -2": "I4mm", - # 108 - "I 4 -2c": "I4cm", - # 109 - "I 4bw -2": "I41md", - # 110 - "I 4bw -2c": "I41cd", - # 111 - "P -4 2": "P-42m", - # 112 - "P -4 2c": "P-42c", - # 113 - "P -4 2ab": "P-421m", - # 114 - "P -4 2n": "P-421c", - # 115 - "P -4 -2": "P-4m2", - # 116 - "P -4 -2c": "P-4c2", - # 117 - "P -4 -2ab": "P-4b2", - # 118 - "P -4 -2n": "P-4n2", - # 119 - "I -4 -2": "I-4m2", - # 120 - "I -4 -2c": "I-4c2", - # 121 - "I -4 2": "I-42m", - # 122 - "I -4 2bw": "I-42d", - # 123 - "-P 4 2": "P4/mmm", - # 124 - "-P 4 2c": "P4/mcc", - # 125 - "P 4 2 -1ab": "P4/nbm:1", - "-P 4a 2b": "P4/nbm:2", - # 126 - "P 4 2 -1n": "P4/nnc:1", - "-P 4a 2bc": "P4/nnc:2", - # 127 - "-P 4 2ab": "P4/mbm", - # 128 - "-P 4 2n": "P4/mnc", - # 129 - "P 4ab 2ab -1ab": "P4/nmm:1", - "-P 4a 2a": "P4/nmm:2", - # 130 - "P 4ab 2n -1ab": "P4/ncc:1", - "-P 4a 2ac": "P4/ncc:2", - # 131 - "-P 4c 2": "P42/mmc", - # 132 - "-P 4c 2c": "P42/mcm", - # 133 - "P 4n 2c -1n": "P42/nbc:1", - "-P 4ac 2b": "P42/nbc:2", - # 134 - "P 4n 2 -1n": "P42/nnm:1", - "-P 4ac 2bc": "P42/nnm:2", - # 135 - "-P 4c 2ab": "P42/mbc", - # 136 - "-P 4n 2n": "P42/mnm", - # 137 - "P 4n 2n -1n": "P42/nmc:1", - "-P 4ac 2a": "P42/nmc:2", - # 138 - "P 4n 2ab -1n": "P42/ncm:1", - "-P 4ac 2ac": "P42/ncm:2", - # 139 - "-I 4 2": "I4/mmm", - # 140 - "-I 4 2c": "I4/mcm", - # 141 - "I 4bw 2bw -1bw": "I41/amd:1", - "-I 4bd 2": "I41/amd:2", - # 142 - "I 4bw 2aw -1bw": "I41/acd:1", - "-I 4bd 2c": "I41/acd:2", - # 143 - "P 3": "P3", - # 144 - "P 31": "P31", - # 145 - "P 32": "P32", - # 146 - "R 3": "R3:H", - "P 3*": "R3:R", - # 147 - "-P 3": "P-3", - # 148 - "-R 3": "R-3:H", - "-P 3*": "R-3:R", - # 149 - "P 3 2": "P312", - # 150 - 'P 3 2"': "P321", - # 151 - "P 31 2c (0 0 1)": "P3112", - # 152 - 'P 31 2"': "P3121", - # 153 - "P 32 2c (0 0 -1)": "P3212", - # 154 - 'P 32 2"': "P3221", - # 155 - 'R 3 2"': "R32:H", - "P 3* 2": "R32:R", - # 156 - 'P 3 -2"': "P3m1", - # 157 - "P 3 -2": "P31m", - # 158 - 'P 3 -2"c': "P3c1", - # 159 - "P 3 -2c": "P31c", - # 160 - 'R 3 -2"': "R3m:H", - "P 3* -2": "R3m:R", - # 161 - 'R 3 -2"c': "R3c:H", - "P 3* -2n": "R3c:R", - # 162 - "-P 3 2": "P-31m", - # 163 - "-P 3 2c": "P-31c", - # 164 - '-P 3 2"': "P-3m1", - # 165 - '-P 3 2"c': "P-3c1", - # 166 - '-R 3 2"': "R-3m:H", - "-P 3* 2": "R-3m:R", - # 167 - '-R 3 2"c': "R-3c:H", - "-P 3* 2n": "R-3c:R", - # 168 - "P 6": "P6", - # 169 - "P 61": "P61", - # 170 - "P 65": "P65", - # 171 - "P 62": "P62", - # 172 - "P 64": "P64", - # 173 - "P 6c": "P63", - # 174 - "P -6": "P-6", - # 175 - "-P 6": "P6/m", - # 176 - "-P 6c": "P63/m", - # 177 - "P 6 2": "P622", - # 178 - "P 61 2 (0 0 -1)": "P6122", - # 179 - "P 65 2 (0 0 1)": "P6522", - # 180 - "P 62 2c (0 0 1)": "P6222", - # 181 - "P 64 2c (0 0 -1)": "P6422", - # 182 - "P 6c 2c": "P6322", - # 183 - "P 6 -2": "P6mm", - # 184 - "P 6 -2c": "P6cc", - # 185 - "P 6c -2": "P63cm", - # 186 - "P 6c -2c": "P63mc", - # 187 - "P -6 2": "P-6m2", - # 188 - "P -6c 2": "P-6c2", - # 189 - "P -6 -2": "P-62m", - # 190 - "P -6c -2c": "P-62c", - # 191 - "-P 6 2": "P6/mmm", - # 192 - "-P 6 2c": "P6/mcc", - # 193 - "-P 6c 2": "P63/mcm", - # 194 - "-P 6c 2c": "P63/mmc", - # 195 - "P 2 2 3": "P23", - # 196 - "F 2 2 3": "F23", - # 197 - "I 2 2 3": "I23", - # 198 - "P 2ac 2ab 3": "P213", - # 199 - "I 2b 2c 3": "I213", - # 200 - "-P 2 2 3": "Pm-3", - # 201 - "P 2 2 3 -1n": "Pn-3:1", - "-P 2ab 2bc 3": "Pn-3:2", - # 202 - "-F 2 2 3": "Fm-3", - # 203 - "F 2 2 3 -1d": "Fd-3:1", - "-F 2uv 2vw 3": "Fd-3:2", - # 204 - "-I 2 2 3": "Im-3", - # 205 - "-P 2ac 2ab 3": "Pa-3", - # 206 - "-I 2b 2c 3": "Ia-3", - # 207 - "P 4 2 3": "P432", - # 208 - "P 4n 2 3": "P4232", - # 209 - "F 4 2 3": "F432", - # 210 - "F 4d 2 3": "F4132", - # 211 - "I 4 2 3": "I432", - # 212 - "P 4acd 2ab 3": "P4332", - # 213 - "P 4bd 2ab 3": "P4132", - # 214 - "I 4bd 2c 3": "I4132", - # 215 - "P -4 2 3": "P-43m", - # 216 - "F -4 2 3": "F-43m", - # 217 - "I -4 2 3": "I-43m", - # 218 - "P -4n 2 3": "P-43n", - # 219 - "F -4c 2 3": "F-43c", - # 220 - "I -4bd 2c 3": "I-43d", - # 221 - "-P 4 2 3": "Pm-3m", - # 222 - "P 4 2 3 -1n": "Pn-3n:1", - "-P 4a 2bc 3": "Pn-3n:2", - # 223 - "-P 4n 2 3": "Pm-3n", - # 224 - "P 4n 2 3 -1n": "Pn-3m:1", - "-P 4bc 2bc 3": "Pn-3m:2", - # 225 - "-F 4 2 3": "Fm-3m", - # 226 - "-F 4c 2 3": "Fm-3c", - # 227 - "F 4d 2 3 -1d": "Fd-3m:1", - "-F 4vw 2vw 3": "Fd-3m:2", - # 228 - "F 4d 2 3 -1cd": "Fd-3c:1", - "-F 4cvw 2vw 3": "Fd-3c:2", - # 229 - "-I 4 2 3": "Im-3m", - # 230 - "-I 4bd 2c 3": "Ia-3d", - ####################### - # Non-standard settings - # 1 - "A 1": "A1", - "B 1": "B1", - "C 1": "C1", - "I 1": "I1", - "F 1": "F1", - # 2 - "-A 1": "A-1", - "-B 1": "B-1", - "-C 1": "C-1", - "-I 1": "I-1", - "-F 1": "F-1", - # 5 - "F 2": "F112", - "F 2x": "F211", - "F 2y": "F121", - # 8 - "F -2": "F11m", - "F -2x": "Fm11", - "F -2y": "F1m1", - # 9 - "F -2d": "F11d", - "F -2yd": "F1d1", - "F -2xd": "Fd11", - # 12 - "-F 2": "F112/m", - "-F 2x": "F2/m11", - "-F 2y": "F12/m1", - # 15 - "F 2ycuw -1c": "F12/d1", - # 70 - "-F 2 2 -1d": "Fddd:1", - "-F 2uv 2vw": "Fddd:2", - # 139 - "-F 4 2": "F4/mmm", -} - -Rhomb2HexHall = { - "P 3*": "R 3", - "-P 3*": "-R 3", - "P 3* 2": 'R 3 2"', - "P 3* -2": 'R 3 -2"', - "P 3* -2n": 'R 3 -2"c', - "-P 3* 2": '-R 3 2"', - "-P 3* 2n": '-R 3 2"c', -} - -Hex2RhombHall = dict([]) -for k, v in Rhomb2HexHall.items(): - Hex2RhombHall[v] = k - -# A. Perlov's numbering -> international tables numbers -AP2Number = { - 1: 1, - 2: 2, - 3: 3, - 4: 3, - 5: 4, - 6: 4, - 7: 5, - 8: 5, - 9: 5, - 10: 5, - 11: 5, - 12: 5, - 13: 6, - 14: 6, - 15: 7, - 16: 7, - 17: 7, - 18: 7, - 19: 7, - 20: 7, - 21: 8, - 22: 8, - 23: 8, - 24: 8, - 25: 8, - 26: 8, - 27: 9, - 28: 9, - 29: 9, - 30: 9, - 31: 9, - 32: 9, - 33: 9, - 34: 9, - 35: 9, - 36: 9, - 37: 9, - 38: 9, - 39: 10, - 40: 10, - 41: 11, - 42: 11, - 43: 12, - 44: 12, - 45: 12, - 46: 12, - 47: 12, - 48: 12, - 49: 13, - 50: 13, - 51: 13, - 52: 13, - 53: 13, - 54: 13, - 55: 14, - 56: 14, - 57: 14, - 58: 14, - 59: 14, - 60: 14, - 61: 15, - 62: 15, - 63: 15, - 64: 15, - 65: 15, - 66: 15, - 67: 15, - 68: 15, - 69: 15, - 70: 15, - 71: 15, - 72: 15, - 73: 16, - 74: 17, - 75: 17, - 76: 17, - 77: 18, - 78: 18, - 79: 18, - 80: 19, - 81: 20, - 82: 20, - 83: 20, - 84: 21, - 85: 21, - 86: 21, - 87: 22, - 88: 23, - 89: 24, - 90: 25, - 91: 25, - 92: 25, - 93: 26, - 94: 26, - 95: 26, - 96: 26, - 97: 26, - 98: 26, - 99: 27, - 100: 27, - 101: 27, - 102: 28, - 103: 28, - 104: 28, - 105: 28, - 106: 28, - 107: 28, - 108: 29, - 109: 29, - 110: 29, - 111: 29, - 112: 29, - 113: 29, - 114: 30, - 115: 30, - 116: 30, - 117: 30, - 118: 30, - 119: 30, - 120: 31, - 121: 31, - 122: 31, - 123: 31, - 124: 31, - 125: 31, - 126: 32, - 127: 32, - 128: 32, - 129: 33, - 130: 33, - 131: 33, - 132: 33, - 133: 33, - 134: 33, - 135: 34, - 136: 34, - 137: 34, - 138: 35, - 139: 35, - 140: 35, - 145: 36, - 146: 36, - 143: 36, - 144: 36, - 141: 36, - 142: 36, - 147: 37, - 148: 37, - 149: 37, - 150: 38, - 151: 38, - 152: 38, - 153: 38, - 154: 38, - 155: 38, - 156: 39, - 157: 39, - 158: 39, - 159: 39, - 160: 39, - 161: 39, - 162: 40, - 163: 40, - 164: 40, - 165: 40, - 166: 40, - 167: 40, - 168: 41, - 169: 41, - 170: 41, - 171: 41, - 172: 41, - 173: 41, - 174: 42, - 175: 42, - 176: 42, - 177: 43, - 178: 43, - 179: 43, - 180: 44, - 181: 44, - 182: 44, - 183: 45, - 184: 45, - 185: 45, - 186: 46, - 187: 46, - 188: 46, - 189: 46, - 190: 46, - 191: 46, - 192: 47, - 193: 48, - 194: 48, - 195: 49, - 196: 49, - 197: 49, - 198: 50, - 199: 50, - 200: 50, - 201: 50, - 202: 50, - 203: 50, - 204: 51, - 205: 51, - 206: 51, - 207: 51, - 208: 51, - 209: 51, - 210: 52, - 211: 52, - 212: 52, - 213: 52, - 214: 52, - 215: 52, - 216: 53, - 217: 53, - 218: 53, - 219: 53, - 220: 53, - 221: 53, - 222: 54, - 223: 54, - 224: 54, - 225: 54, - 226: 54, - 227: 54, - 228: 55, - 229: 55, - 230: 55, - 231: 56, - 232: 56, - 233: 56, - 234: 57, - 235: 57, - 236: 57, - 237: 57, - 238: 57, - 239: 57, - 240: 58, - 241: 58, - 242: 58, - 247: 59, - 248: 59, - 245: 59, - 246: 59, - 243: 59, - 244: 59, - 249: 60, - 250: 60, - 251: 60, - 252: 60, - 253: 60, - 254: 60, - 255: 61, - 256: 61, - 257: 62, - 258: 62, - 259: 62, - 260: 62, - 261: 62, - 262: 62, - 263: 63, - 264: 63, - 265: 63, - 266: 63, - 267: 63, - 268: 63, - 269: 64, - 270: 64, - 271: 64, - 272: 64, - 273: 64, - 274: 64, - 275: 65, - 276: 65, - 277: 65, - 278: 66, - 279: 66, - 280: 66, - 281: 67, - 282: 67, - 283: 67, - 284: 67, - 285: 67, - 286: 67, - 287: 68, - 288: 68, - 289: 68, - 290: 68, - 291: 68, - 292: 68, - 293: 68, - 294: 68, - 295: 68, - 296: 68, - 297: 68, - 298: 68, - 299: 69, - 300: 70, - 301: 70, - 302: 71, - 303: 72, - 304: 72, - 305: 72, - 306: 73, - 307: 73, - 308: 74, - 309: 74, - 310: 74, - 311: 74, - 312: 74, - 313: 74, - 314: 75, - 315: 76, - 316: 77, - 317: 78, - 318: 79, - 319: 80, - 320: 81, - 321: 82, - 322: 83, - 323: 84, - 324: 85, - 325: 85, - 326: 86, - 327: 86, - 328: 87, - 329: 88, - 330: 88, - 331: 89, - 332: 90, - 333: 91, - 334: 92, - 335: 93, - 336: 94, - 337: 95, - 338: 96, - 339: 97, - 340: 98, - 341: 99, - 342: 100, - 343: 101, - 344: 102, - 345: 103, - 346: 104, - 347: 105, - 348: 106, - 349: 107, - 350: 108, - 351: 109, - 352: 110, - 353: 111, - 354: 112, - 355: 113, - 356: 114, - 357: 115, - 358: 116, - 359: 117, - 360: 118, - 361: 119, - 362: 120, - 363: 121, - 364: 122, - 365: 123, - 366: 124, - 367: 125, - 368: 125, - 369: 126, - 370: 126, - 371: 127, - 372: 128, - 373: 129, - 374: 129, - 375: 130, - 376: 130, - 377: 131, - 378: 132, - 379: 133, - 380: 133, - 381: 134, - 382: 134, - 383: 135, - 384: 136, - 385: 137, - 386: 137, - 387: 138, - 388: 138, - 389: 139, - 390: 140, - 391: 141, - 392: 141, - 393: 142, - 394: 142, - 395: 143, - 396: 143, - 397: 144, - 398: 144, - 399: 145, - 400: 145, - 402: 146, - 401: 146, - 403: 147, - 404: 147, - 406: 148, - 405: 148, - 407: 149, - 408: 150, - 409: 151, - 410: 152, - 411: 153, - 412: 154, - 414: 155, - 413: 155, - 415: 156, - 416: 157, - 417: 158, - 418: 159, - 420: 160, - 419: 160, - 422: 161, - 421: 161, - 423: 162, - 424: 163, - 425: 164, - 426: 165, - 428: 166, - 427: 166, - 430: 167, - 429: 167, - 431: 168, - 432: 169, - 433: 170, - 434: 171, - 435: 172, - 436: 173, - 437: 174, - 438: 175, - 439: 176, - 440: 177, - 441: 178, - 442: 179, - 443: 180, - 444: 181, - 445: 182, - 446: 183, - 447: 184, - 448: 185, - 449: 186, - 450: 187, - 451: 188, - 452: 189, - 453: 190, - 454: 191, - 455: 192, - 456: 193, - 457: 194, - 458: 195, - 459: 196, - 460: 197, - 461: 198, - 462: 199, - 463: 200, - 464: 201, - 465: 201, - 466: 202, - 467: 203, - 468: 203, - 469: 204, - 470: 205, - 471: 206, - 472: 207, - 473: 208, - 474: 209, - 475: 210, - 476: 211, - 477: 212, - 478: 213, - 479: 214, - 480: 215, - 481: 216, - 482: 217, - 483: 218, - 484: 219, - 485: 220, - 486: 221, - 487: 222, - 488: 222, - 489: 223, - 490: 224, - 491: 224, - 492: 225, - 493: 226, - 494: 227, - 495: 227, - 496: 228, - 497: 228, - 498: 229, - 499: 230, - 500: 14, - 501: 14, - 502: 14, -} - -# international tables numbers -> A. Perlovs numbering -Number2AP = { - 1: 1, - 2: 2, - 3: 3, - 4: 5, - 5: 7, - 6: 13, - 7: 15, - 8: 21, - 9: 27, - 10: 39, - 11: 41, - 12: 43, - 13: 50, - 14: 55, - 15: 61, - 16: 73, - 17: 74, - 18: 77, - 19: 80, - 20: 81, - 21: 84, - 22: 87, - 23: 88, - 24: 89, - 25: 90, - 26: 93, - 27: 99, - 28: 102, - 29: 108, - 30: 114, - 31: 120, - 32: 126, - 33: 129, - 34: 135, - 35: 138, - 36: 145, - 37: 147, - 38: 150, - 39: 156, - 40: 162, - 41: 168, - 42: 174, - 43: 177, - 44: 180, - 45: 183, - 46: 186, - 47: 192, - 48: 193, - 49: 195, - 50: 198, - 51: 204, - 52: 210, - 53: 216, - 54: 222, - 55: 228, - 56: 231, - 57: 234, - 58: 240, - 59: 247, - 60: 249, - 61: 255, - 62: 257, - 63: 263, - 64: 269, - 65: 275, - 66: 278, - 67: 281, - 68: 287, - 69: 299, - 70: 300, - 71: 302, - 72: 303, - 73: 306, - 74: 308, - 75: 314, - 76: 315, - 77: 316, - 78: 317, - 79: 318, - 80: 319, - 81: 320, - 82: 321, - 83: 322, - 84: 323, - 85: 324, - 86: 326, - 87: 328, - 88: 329, - 89: 331, - 90: 332, - 91: 333, - 92: 334, - 93: 335, - 94: 336, - 95: 337, - 96: 338, - 97: 339, - 98: 340, - 99: 341, - 100: 342, - 101: 343, - 102: 344, - 103: 345, - 104: 346, - 105: 347, - 106: 348, - 107: 349, - 108: 350, - 109: 351, - 110: 352, - 111: 353, - 112: 354, - 113: 355, - 114: 356, - 115: 357, - 116: 358, - 117: 359, - 118: 360, - 119: 361, - 120: 362, - 121: 363, - 122: 364, - 123: 365, - 124: 366, - 125: 368, - 126: 370, - 127: 371, - 128: 372, - 129: 374, - 130: 376, - 131: 377, - 132: 378, - 133: 380, - 134: 382, - 135: 383, - 136: 384, - 137: 386, - 138: 388, - 139: 389, - 140: 390, - 141: 392, - 142: 394, - 143: 396, - 144: 398, - 145: 400, - 146: 401, - 147: 404, - 148: 405, - 149: 407, - 150: 408, - 151: 409, - 152: 410, - 153: 411, - 154: 412, - 155: 414, - 156: 415, - 157: 416, - 158: 417, - 159: 418, - 160: 420, - 160: 419, - 161: 422, - 162: 423, - 163: 424, - 164: 425, - 165: 426, - 166: 428, - 167: 430, - 168: 431, - 169: 432, - 170: 433, - 171: 434, - 172: 435, - 173: 436, - 174: 437, - 175: 438, - 176: 439, - 177: 440, - 178: 441, - 179: 442, - 180: 443, - 181: 444, - 182: 445, - 183: 446, - 184: 447, - 185: 448, - 186: 449, - 187: 450, - 188: 451, - 189: 452, - 190: 453, - 191: 454, - 192: 455, - 193: 456, - 194: 457, - 195: 458, - 196: 459, - 197: 460, - 198: 461, - 199: 462, - 200: 463, - 201: 465, - 202: 466, - 203: 468, - 204: 469, - 205: 470, - 206: 471, - 207: 472, - 208: 473, - 209: 474, - 210: 475, - 211: 476, - 212: 477, - 213: 478, - 214: 479, - 215: 480, - 216: 481, - 217: 482, - 218: 483, - 219: 484, - 220: 485, - 221: 486, - 222: 488, - 223: 489, - 224: 491, - 225: 492, - 226: 493, - 227: 494, - 229: 498, - 230: 499, -} - -# Symmetry operations in XYZ form from Hall symbol -SymOpsHall = { - "P 1": [["x", " y", " z"]], - "-P 1": [["x", " y", " z"], ["-x", " -y", " -z"]], - "P 2y": [["x", " y", " z"], ["-x", " y", " -z"]], - "P 2": [["x", " y", " z"], ["-x", " -y", " z"]], - "P 2x": [["x", " y", " z"], ["x", " -y", " -z"]], - "P 2yb": [["x", " y", " z"], ["-x", " y+1/2", " -z"]], - "P 2c": [["x", " y", " z"], ["-x", " -y", " z+1/2"]], - "P 2xa": [["x", " y", " z"], ["x+1/2", " -y", " -z"]], - "C 2y": [ - ["x", " y", " z"], - ["-x", " y", " -z"], - ["x+1/2", " y+1/2", " z"], - ["-x+1/2", " y+1/2", " -z"], - ], - "A 2y": [ - ["x", " y", " z"], - ["-x", " y", " -z"], - ["x", " y+1/2", " z+1/2"], - ["-x", " y+1/2", " -z+1/2"], - ], - "I 2y": [ - ["x", " y", " z"], - ["-x", " y", " -z"], - ["x+1/2", " y+1/2", " z+1/2"], - ["-x+1/2", " y+1/2", " -z+1/2"], - ], - "A 2": [ - ["x", " y", " z"], - ["-x", " -y", " z"], - ["x", " y+1/2", " z+1/2"], - ["-x", " -y+1/2", " z+1/2"], - ], - "B 2": [ - ["x", " y", " z"], - ["-x", " -y", " z"], - ["x+1/2", " y", " z+1/2"], - ["-x+1/2", " -y", " z+1/2"], - ], - "I 2": [ - ["x", " y", " z"], - ["-x", " -y", " z"], - ["x+1/2", " y+1/2", " z+1/2"], - ["-x+1/2", " -y+1/2", " z+1/2"], - ], - "B 2x": [ - ["x", " y", " z"], - ["x", " -y", " -z"], - ["x+1/2", " y", " z+1/2"], - ["x+1/2", " -y", " -z+1/2"], - ], - "C 2x": [ - ["x", " y", " z"], - ["x", " -y", " -z"], - ["x+1/2", " y+1/2", " z"], - ["x+1/2", " -y+1/2", " -z"], - ], - "I 2x": [ - ["x", " y", " z"], - ["x", " -y", " -z"], - ["x+1/2", " y+1/2", " z+1/2"], - ["x+1/2", " -y+1/2", " -z+1/2"], - ], - "P -2y": [["x", " y", " z"], ["x", " -y", " z"]], - "P -2": [["x", " y", " z"], ["x", " y", " -z"]], - "P -2x": [["x", " y", " z"], ["-x", " y", " z"]], - "P -2yc": [["x", " y", " z"], ["x", " -y", " z+1/2"]], - "P -2yac": [["x", " y", " z"], ["x+1/2", " -y", " z+1/2"]], - "P -2ya": [["x", " y", " z"], ["x+1/2", " -y", " z"]], - "P -2a": [["x", " y", " z"], ["x+1/2", " y", " -z"]], - "P -2ab": [["x", " y", " z"], ["x+1/2", " y+1/2", " -z"]], - "P -2b": [["x", " y", " z"], ["x", " y+1/2", " -z"]], - "P -2xb": [["x", " y", " z"], ["-x", " y+1/2", " z"]], - "P -2xbc": [["x", " y", " z"], ["-x", " y+1/2", " z+1/2"]], - "P -2xc": [["x", " y", " z"], ["-x", " y", " z+1/2"]], - # 8 - "C -2y": [ - ["x", " y", " z"], - ["x", " -y", " z"], - ["x+1/2", " y+1/2", " z"], - ["x+1/2", " -y+1/2", " z"], - ], - "A -2y": [ - ["x", " y", " z"], - ["x", " -y", " z"], - ["x", " y+1/2", " z+1/2"], - ["x", " -y+1/2", " z+1/2"], - ], - "I -2y": [ - ["x", " y", " z"], - ["x", " -y", " z"], - ["x+1/2", " y+1/2", " z+1/2"], - ["x+1/2", " -y+1/2", " z+1/2"], - ], - "A -2": [ - ["x", " y", " z"], - ["x", " y", " -z"], - ["x", " y+1/2", " z+1/2"], - ["x", " y+1/2", " -z+1/2"], - ], - "B -2": [ - ["x", " y", " z"], - ["x", " y", " -z"], - ["x+1/2", " y", " z+1/2"], - ["x+1/2", " y", " -z+1/2"], - ], - "I -2": [ - ["x", " y", " z"], - ["x", " y", " -z"], - ["x+1/2", " y+1/2", " z+1/2"], - ["x+1/2", " y+1/2", " -z+1/2"], - ], - "B -2x": [ - ["x", " y", " z"], - ["-x", " y", " z"], - ["x+1/2", " y", " z+1/2"], - ["-x+1/2", " y", " z+1/2"], - ], - "C -2x": [ - ["x", " y", " z"], - ["-x", " y", " z"], - ["x+1/2", " y+1/2", " z"], - ["-x+1/2", " y+1/2", " z"], - ], - "I -2x": [ - ["x", " y", " z"], - ["-x", " y", " z"], - ["x+1/2", " y+1/2", " z+1/2"], - ["-x+1/2", " y+1/2", " z+1/2"], - ], - # 9 - "C -2yc": [ - ["x", " y", " z"], - ["x", " -y", " z+1/2"], - ["x+1/2", " y+1/2", " z"], - ["x+1/2", " -y+1/2", " z+1/2"], - ], - "A -2yac": [ - ["x", " y", " z"], - ["x+1/2", " -y", " z+1/2"], - ["x", " y+1/2", " z+1/2"], - ["x+1/2", " -y+1/2", " z"], - ], - "I -2ya": [ - ["x", " y", " z"], - ["x+1/2", " -y", " z"], - ["x+1/2", " y+1/2", " z+1/2"], - ["x", " -y+1/2", " z+1/2"], - ], - "A -2ya": [ - ["x", " y", " z"], - ["x+1/2", " -y", " z"], - ["x", " y+1/2", " z+1/2"], - ["x+1/2", " -y+1/2", " z+1/2"], - ], - "C -2ybc": [ - ["x", " y", " z"], - ["x", " -y+1/2", " z+1/2"], - ["x+1/2", " y+1/2", " z"], - ["x+1/2", " -y", " z+1/2"], - ], - "I -2yc": [ - ["x", " y", " z"], - ["x", " -y", " z+1/2"], - ["x+1/2", " y+1/2", " z+1/2"], - ["x+1/2", " -y+1/2", " z"], - ], - "A -2a": [ - ["x", " y", " z"], - ["x+1/2", " y", " -z"], - ["x", " y+1/2", " z+1/2"], - ["x+1/2", " y+1/2", " -z+1/2"], - ], - "B -2bc": [ - ["x", " y", " z"], - ["x", " y+1/2", " -z+1/2"], - ["x+1/2", " y", " z+1/2"], - ["x+1/2", " y+1/2", " -z"], - ], - "I -2b": [ - ["x", " y", " z"], - ["x", " y+1/2", " -z"], - ["x+1/2", " y+1/2", " z+1/2"], - ["x+1/2", " y", " -z+1/2"], - ], - "B -2b": [ - ["x", " y", " z"], - ["x", " y+1/2", " -z"], - ["x+1/2", " y", " z+1/2"], - ["x+1/2", " y+1/2", " -z+1/2"], - ], - "A -2ac": [ - ["x", " y", " z"], - ["x+1/2", " y", " -z+1/2"], - ["x", " y+1/2", " z+1/2"], - ["x+1/2", " y+1/2", " -z"], - ], - "I -2a": [ - ["x", " y", " z"], - ["x+1/2", " y", " -z"], - ["x+1/2", " y+1/2", " z+1/2"], - ["x", " y+1/2", " -z+1/2"], - ], - "B -2xb": [ - ["x", " y", " z"], - ["-x", " y+1/2", " z"], - ["x+1/2", " y", " z+1/2"], - ["-x+1/2", " y+1/2", " z+1/2"], - ], - "C -2xbc": [ - ["x", " y", " z"], - ["-x", " y+1/2", " z+1/2"], - ["x+1/2", " y+1/2", " z"], - ["-x+1/2", " y", " z+1/2"], - ], - "I -2xc": [ - ["x", " y", " z"], - ["-x", " y", " z+1/2"], - ["x+1/2", " y+1/2", " z+1/2"], - ["-x+1/2", " y+1/2", " z"], - ], - "C -2xc": [ - ["x", " y", " z"], - ["-x", " y", " z+1/2"], - ["x+1/2", " y+1/2", " z"], - ["-x+1/2", " y+1/2", " z+1/2"], - ], - "B -2xbc": [ - ["x", " y", " z"], - ["-x", " y+1/2", " z+1/2"], - ["x+1/2", " y", " z+1/2"], - ["-x+1/2", " y+1/2", " z"], - ], - "I -2xb": [ - ["x", " y", " z"], - ["-x", " y+1/2", " z"], - ["x+1/2", " y+1/2", " z+1/2"], - ["-x+1/2", " y", " z+1/2"], - ], - "-P 2y": [ - ["x", " y", " z"], - ["-x", " y", " -z"], - ["-x", " -y", " -z"], - ["x", " -y", " z"], - ], - "-P 2": [ - ["x", " y", " z"], - ["-x", " -y", " z"], - ["-x", " -y", " -z"], - ["x", " y", " -z"], - ], - "-P 2x": [ - ["x", " y", " z"], - ["x", " -y", " -z"], - ["-x", " -y", " -z"], - ["-x", " y", " z"], - ], - "-P 2yb": [ - ["x", " y", " z"], - ["-x", " y+1/2", " -z"], - ["-x", " -y", " -z"], - ["x", " -y+1/2", " z"], - ], - "-P 2c": [ - ["x", " y", " z"], - ["-x", " -y", " z+1/2"], - ["-x", " -y", " -z"], - ["x", " y", " -z+1/2"], - ], - "-P 2xa": [ - ["x", " y", " z"], - ["x+1/2", " -y", " -z"], - ["-x", " -y", " -z"], - ["-x+1/2", " y", " z"], - ], - "-C 2y": [ - ["x", " y", " z"], - ["-x", " y", " -z"], - ["-x", " -y", " -z"], - ["x", " -y", " z"], - ["x+1/2", " y+1/2", " z"], - ["-x+1/2", " y+1/2", " -z"], - ["-x+1/2", " -y+1/2", " -z"], - ["x+1/2", " -y+1/2", " z"], - ], - "-A 2y": [ - ["x", " y", " z"], - ["-x", " y", " -z"], - ["-x", " -y", " -z"], - ["x", " -y", " z"], - ["x", " y+1/2", " z+1/2"], - ["-x", " y+1/2", " -z+1/2"], - ["-x", " -y+1/2", " -z+1/2"], - ["x", " -y+1/2", " z+1/2"], - ], - "-I 2y": [ - ["x", " y", " z"], - ["-x", " y", " -z"], - ["-x", " -y", " -z"], - ["x", " -y", " z"], - ["x+1/2", " y+1/2", " z+1/2"], - ["-x+1/2", " y+1/2", " -z+1/2"], - ["-x+1/2", " -y+1/2", " -z+1/2"], - ["x+1/2", " -y+1/2", " z+1/2"], - ], - "-A 2": [ - ["x", " y", " z"], - ["-x", " -y", " z"], - ["-x", " -y", " -z"], - ["x", " y", " -z"], - ["x", " y+1/2", " z+1/2"], - ["-x", " -y+1/2", " z+1/2"], - ["-x", " -y+1/2", " -z+1/2"], - ["x", " y+1/2", " -z+1/2"], - ], - "-B 2": [ - ["x", " y", " z"], - ["-x", " -y", " z"], - ["-x", " -y", " -z"], - ["x", " y", " -z"], - ["x+1/2", " y", " z+1/2"], - ["-x+1/2", " -y", " z+1/2"], - ["-x+1/2", " -y", " -z+1/2"], - ["x+1/2", " y", " -z+1/2"], - ], - "-I 2": [ - ["x", " y", " z"], - ["-x", " -y", " z"], - ["-x", " -y", " -z"], - ["x", " y", " -z"], - ["x+1/2", " y+1/2", " z+1/2"], - ["-x+1/2", " -y+1/2", " z+1/2"], - ["-x+1/2", " -y+1/2", " -z+1/2"], - ["x+1/2", " y+1/2", " -z+1/2"], - ], - "-B 2x": [ - ["x", " y", " z"], - ["x", " -y", " -z"], - ["-x", " -y", " -z"], - ["-x", " y", " z"], - ["x+1/2", " y", " z+1/2"], - ["x+1/2", " -y", " -z+1/2"], - ["-x+1/2", " -y", " -z+1/2"], - ["-x+1/2", " y", " z+1/2"], - ], - "-C 2x": [ - ["x", " y", " z"], - ["x", " -y", " -z"], - ["-x", " -y", " -z"], - ["-x", " y", " z"], - ["x+1/2", " y+1/2", " z"], - ["x+1/2", " -y+1/2", " -z"], - ["-x+1/2", " -y+1/2", " -z"], - ["-x+1/2", " y+1/2", " z"], - ], - "-I 2x": [ - ["x", " y", " z"], - ["x", " -y", " -z"], - ["-x", " -y", " -z"], - ["-x", " y", " z"], - ["x+1/2", " y+1/2", " z+1/2"], - ["x+1/2", " -y+1/2", " -z+1/2"], - ["-x+1/2", " -y+1/2", " -z+1/2"], - ["-x+1/2", " y+1/2", " z+1/2"], - ], - "-P 2yc": [ - ["x", " y", " z"], - ["-x", " y", " -z+1/2"], - ["-x", " -y", " -z"], - ["x", " -y", " z+1/2"], - ], - "-P 2yac": [ - ["x", " y", " z"], - ["-x+1/2", " y", " -z+1/2"], - ["-x", " -y", " -z"], - ["x+1/2", " -y", " z+1/2"], - ], - "-P 2ya": [ - ["x", " y", " z"], - ["-x+1/2", " y", " -z"], - ["-x", " -y", " -z"], - ["x+1/2", " -y", " z"], - ], - "-P 2a": [ - ["x", " y", " z"], - ["-x+1/2", " -y", " z"], - ["-x", " -y", " -z"], - ["x+1/2", " y", " -z"], - ], - "-P 2ab": [ - ["x", " y", " z"], - ["-x+1/2", " -y+1/2", " z"], - ["-x", " -y", " -z"], - ["x+1/2", " y+1/2", " -z"], - ], - "-P 2b": [ - ["x", " y", " z"], - ["-x", " -y+1/2", " z"], - ["-x", " -y", " -z"], - ["x", " y+1/2", " -z"], - ], - "-P 2xb": [ - ["x", " y", " z"], - ["x", " -y+1/2", " -z"], - ["-x", " -y", " -z"], - ["-x", " y+1/2", " z"], - ], - "-P 2xbc": [ - ["x", " y", " z"], - ["x", " -y+1/2", " -z+1/2"], - ["-x", " -y", " -z"], - ["-x", " y+1/2", " z+1/2"], - ], - "-P 2xc": [ - ["x", " y", " z"], - ["x", " -y", " -z+1/2"], - ["-x", " -y", " -z"], - ["-x", " y", " z+1/2"], - ], - "-P 2ybc": [ - ["x", " y", " z"], - ["-x", " y+1/2", " -z+1/2"], - ["-x", " -y", " -z"], - ["x", " -y+1/2", " z+1/2"], - ], - "-P 2yn": [ - ["x", " y", " z"], - ["-x+1/2", " y+1/2", " -z+1/2"], - ["-x", " -y", " -z"], - ["x+1/2", " -y+1/2", " z+1/2"], - ], - "-P 2yab": [ - ["x", " y", " z"], - ["-x+1/2", " y+1/2", " -z"], - ["-x", " -y", " -z"], - ["x+1/2", " -y+1/2", " z"], - ], - "-P 2ac": [ - ["x", " y", " z"], - ["-x+1/2", " -y", " z+1/2"], - ["-x", " -y", " -z"], - ["x+1/2", " y", " -z+1/2"], - ], - "-P 2n": [ - ["x", " y", " z"], - ["-x+1/2", " -y+1/2", " z+1/2"], - ["-x", " -y", " -z"], - ["x+1/2", " y+1/2", " -z+1/2"], - ], - "-P 2bc": [ - ["x", " y", " z"], - ["-x", " -y+1/2", " z+1/2"], - ["-x", " -y", " -z"], - ["x", " y+1/2", " -z+1/2"], - ], - "-P 2xab": [ - ["x", " y", " z"], - ["x+1/2", " -y+1/2", " -z"], - ["-x", " -y", " -z"], - ["-x+1/2", " y+1/2", " z"], - ], - "-P 2xn": [ - ["x", " y", " z"], - ["x+1/2", " -y+1/2", " -z+1/2"], - ["-x", " -y", " -z"], - ["-x+1/2", " y+1/2", " z+1/2"], - ], - "-P 2xac": [ - ["x", " y", " z"], - ["x+1/2", " -y", " -z+1/2"], - ["-x", " -y", " -z"], - ["-x+1/2", " y", " z+1/2"], - ], - "-C 2yc": [ - ["x", " y", " z"], - ["-x", " y", " -z+1/2"], - ["-x", " -y", " -z"], - ["x", " -y", " z+1/2"], - ["x+1/2", " y+1/2", " z"], - ["-x+1/2", " y+1/2", " -z+1/2"], - ["-x+1/2", " -y+1/2", " -z"], - ["x+1/2", " -y+1/2", " z+1/2"], - ], - "-A 2yac": [ - ["x", " y", " z"], - ["-x+1/2", " y", " -z+1/2"], - ["-x", " -y", " -z"], - ["x+1/2", " -y", " z+1/2"], - ["x", " y+1/2", " z+1/2"], - ["-x+1/2", " y+1/2", " -z"], - ["-x", " -y+1/2", " -z+1/2"], - ["x+1/2", " -y+1/2", " z"], - ], - "-I 2ya": [ - ["x", " y", " z"], - ["-x+1/2", " y", " -z"], - ["-x", " -y", " -z"], - ["x+1/2", " -y", " z"], - ["x+1/2", " y+1/2", " z+1/2"], - ["-x", " y+1/2", " -z+1/2"], - ["-x+1/2", " -y+1/2", " -z+1/2"], - ["x", " -y+1/2", " z+1/2"], - ], - "-A 2ya": [ - ["x", " y", " z"], - ["-x+1/2", " y", " -z"], - ["-x", " -y", " -z"], - ["x+1/2", " -y", " z"], - ["x", " y+1/2", " z+1/2"], - ["-x+1/2", " y+1/2", " -z+1/2"], - ["-x", " -y+1/2", " -z+1/2"], - ["x+1/2", " -y+1/2", " z+1/2"], - ], - "-C 2ybc": [ - ["x", " y", " z"], - ["-x", " y+1/2", " -z+1/2"], - ["-x", " -y", " -z"], - ["x", " -y+1/2", " z+1/2"], - ["x+1/2", " y+1/2", " z"], - ["-x+1/2", " y", " -z+1/2"], - ["-x+1/2", " -y+1/2", " -z"], - ["x+1/2", " -y", " z+1/2"], - ], - "-I 2yc": [ - ["x", " y", " z"], - ["-x", " y", " -z+1/2"], - ["-x", " -y", " -z"], - ["x", " -y", " z+1/2"], - ["x+1/2", " y+1/2", " z+1/2"], - ["-x+1/2", " y+1/2", " -z"], - ["-x+1/2", " -y+1/2", " -z+1/2"], - ["x+1/2", " -y+1/2", " z"], - ], - "-A 2a": [ - ["x", " y", " z"], - ["-x+1/2", " -y", " z"], - ["-x", " -y", " -z"], - ["x+1/2", " y", " -z"], - ["x", " y+1/2", " z+1/2"], - ["-x+1/2", " -y+1/2", " z+1/2"], - ["-x", " -y+1/2", " -z+1/2"], - ["x+1/2", " y+1/2", " -z+1/2"], - ], - "-B 2bc": [ - ["x", " y", " z"], - ["-x", " -y+1/2", " z+1/2"], - ["-x", " -y", " -z"], - ["x", " y+1/2", " -z+1/2"], - ["x+1/2", " y", " z+1/2"], - ["-x+1/2", " -y+1/2", " z"], - ["-x+1/2", " -y", " -z+1/2"], - ["x+1/2", " y+1/2", " -z"], - ], - "-I 2b": [ - ["x", " y", " z"], - ["-x", " -y+1/2", " z"], - ["-x", " -y", " -z"], - ["x", " y+1/2", " -z"], - ["x+1/2", " y+1/2", " z+1/2"], - ["-x+1/2", " -y", " z+1/2"], - ["-x+1/2", " -y+1/2", " -z+1/2"], - ["x+1/2", " y", " -z+1/2"], - ], - "-B 2b": [ - ["x", " y", " z"], - ["-x", " -y+1/2", " z"], - ["-x", " -y", " -z"], - ["x", " y+1/2", " -z"], - ["x+1/2", " y", " z+1/2"], - ["-x+1/2", " -y+1/2", " z+1/2"], - ["-x+1/2", " -y", " -z+1/2"], - ["x+1/2", " y+1/2", " -z+1/2"], - ], - "-A 2ac": [ - ["x", " y", " z"], - ["-x+1/2", " -y", " z+1/2"], - ["-x", " -y", " -z"], - ["x+1/2", " y", " -z+1/2"], - ["x", " y+1/2", " z+1/2"], - ["-x+1/2", " -y+1/2", " z"], - ["-x", " -y+1/2", " -z+1/2"], - ["x+1/2", " y+1/2", " -z"], - ], - "-I 2a": [ - ["x", " y", " z"], - ["-x+1/2", " -y", " z"], - ["-x", " -y", " -z"], - ["x+1/2", " y", " -z"], - ["x+1/2", " y+1/2", " z+1/2"], - ["-x", " -y+1/2", " z+1/2"], - ["-x+1/2", " -y+1/2", " -z+1/2"], - ["x", " y+1/2", " -z+1/2"], - ], - "-B 2xb": [ - ["x", " y", " z"], - ["x", " -y+1/2", " -z"], - ["-x", " -y", " -z"], - ["-x", " y+1/2", " z"], - ["x+1/2", " y", " z+1/2"], - ["x+1/2", " -y+1/2", " -z+1/2"], - ["-x+1/2", " -y", " -z+1/2"], - ["-x+1/2", " y+1/2", " z+1/2"], - ], - "-C 2xbc": [ - ["x", " y", " z"], - ["x", " -y+1/2", " -z+1/2"], - ["-x", " -y", " -z"], - ["-x", " y+1/2", " z+1/2"], - ["x+1/2", " y+1/2", " z"], - ["x+1/2", " -y", " -z+1/2"], - ["-x+1/2", " -y+1/2", " -z"], - ["-x+1/2", " y", " z+1/2"], - ], - "-I 2xc": [ - ["x", " y", " z"], - ["x", " -y", " -z+1/2"], - ["-x", " -y", " -z"], - ["-x", " y", " z+1/2"], - ["x+1/2", " y+1/2", " z+1/2"], - ["x+1/2", " -y+1/2", " -z"], - ["-x+1/2", " -y+1/2", " -z+1/2"], - ["-x+1/2", " y+1/2", " z"], - ], - "-C 2xc": [ - ["x", " y", " z"], - ["x", " -y", " -z+1/2"], - ["-x", " -y", " -z"], - ["-x", " y", " z+1/2"], - ["x+1/2", " y+1/2", " z"], - ["x+1/2", " -y+1/2", " -z+1/2"], - ["-x+1/2", " -y+1/2", " -z"], - ["-x+1/2", " y+1/2", " z+1/2"], - ], - "-B 2xbc": [ - ["x", " y", " z"], - ["x", " -y+1/2", " -z+1/2"], - ["-x", " -y", " -z"], - ["-x", " y+1/2", " z+1/2"], - ["x+1/2", " y", " z+1/2"], - ["x+1/2", " -y+1/2", " -z"], - ["-x+1/2", " -y", " -z+1/2"], - ["-x+1/2", " y+1/2", " z"], - ], - "-I 2xb": [ - ["x", " y", " z"], - ["x", " -y+1/2", " -z"], - ["-x", " -y", " -z"], - ["-x", " y+1/2", " z"], - ["x+1/2", " y+1/2", " z+1/2"], - ["x+1/2", " -y", " -z+1/2"], - ["-x+1/2", " -y+1/2", " -z+1/2"], - ["-x+1/2", " y", " z+1/2"], - ], - "P 2 2": [ - ["x", " y", " z"], - ["-x", " -y", " z"], - ["x", " -y", " -z"], - ["-x", " y", " -z"], - ], - "P 2c 2": [ - ["x", " y", " z"], - ["-x", " -y", " z+1/2"], - ["x", " -y", " -z"], - ["-x", " y", " -z+1/2"], - ], - "P 2a 2a": [ - ["x", " y", " z"], - ["-x+1/2", " -y", " z"], - ["x+1/2", " -y", " -z"], - ["-x", " y", " -z"], - ], - "P 2 2b": [ - ["x", " y", " z"], - ["-x", " -y", " z"], - ["x", " -y+1/2", " -z"], - ["-x", " y+1/2", " -z"], - ], - "P 2 2ab": [ - ["x", " y", " z"], - ["-x", " -y", " z"], - ["x+1/2", " -y+1/2", " -z"], - ["-x+1/2", " y+1/2", " -z"], - ], - "P 2bc 2": [ - ["x", " y", " z"], - ["-x", " -y+1/2", " z+1/2"], - ["x", " -y", " -z"], - ["-x", " y+1/2", " -z+1/2"], - ], - "P 2ac 2ac": [ - ["x", " y", " z"], - ["-x+1/2", " -y", " z+1/2"], - ["x+1/2", " -y", " -z+1/2"], - ["-x", " y", " -z"], - ], - "P 2ac 2ab": [ - ["x", " y", " z"], - ["-x+1/2", " -y", " z+1/2"], - ["x+1/2", " -y+1/2", " -z"], - ["-x", " y+1/2", " -z+1/2"], - ], - "C 2c 2": [ - ["x", " y", " z"], - ["-x", " -y", " z+1/2"], - ["x", " -y", " -z"], - ["-x", " y", " -z+1/2"], - ["x+1/2", " y+1/2", " z"], - ["-x+1/2", " -y+1/2", " z+1/2"], - ["x+1/2", " -y+1/2", " -z"], - ["-x+1/2", " y+1/2", " -z+1/2"], - ], - "A 2a 2a": [ - ["x", " y", " z"], - ["-x+1/2", " -y", " z"], - ["x+1/2", " -y", " -z"], - ["-x", " y", " -z"], - ["x", " y+1/2", " z+1/2"], - ["-x+1/2", " -y+1/2", " z+1/2"], - ["x+1/2", " -y+1/2", " -z+1/2"], - ["-x", " y+1/2", " -z+1/2"], - ], - "B 2 2b": [ - ["x", " y", " z"], - ["-x", " -y", " z"], - ["x", " -y+1/2", " -z"], - ["-x", " y+1/2", " -z"], - ["x+1/2", " y", " z+1/2"], - ["-x+1/2", " -y", " z+1/2"], - ["x+1/2", " -y+1/2", " -z+1/2"], - ["-x+1/2", " y+1/2", " -z+1/2"], - ], - "C 2 2": [ - ["x", " y", " z"], - ["-x", " -y", " z"], - ["x", " -y", " -z"], - ["-x", " y", " -z"], - ["x+1/2", " y+1/2", " z"], - ["-x+1/2", " -y+1/2", " z"], - ["x+1/2", " -y+1/2", " -z"], - ["-x+1/2", " y+1/2", " -z"], - ], - "A 2 2": [ - ["x", " y", " z"], - ["-x", " -y", " z"], - ["x", " -y", " -z"], - ["-x", " y", " -z"], - ["x", " y+1/2", " z+1/2"], - ["-x", " -y+1/2", " z+1/2"], - ["x", " -y+1/2", " -z+1/2"], - ["-x", " y+1/2", " -z+1/2"], - ], - "B 2 2": [ - ["x", " y", " z"], - ["-x", " -y", " z"], - ["x", " -y", " -z"], - ["-x", " y", " -z"], - ["x+1/2", " y", " z+1/2"], - ["-x+1/2", " -y", " z+1/2"], - ["x+1/2", " -y", " -z+1/2"], - ["-x+1/2", " y", " -z+1/2"], - ], - "F 2 2": [ - ["x", " y", " z"], - ["-x", " -y", " z"], - ["x", " -y", " -z"], - ["-x", " y", " -z"], - ["x", " y+1/2", " z+1/2"], - ["-x", " -y+1/2", " z+1/2"], - ["x", " -y+1/2", " -z+1/2"], - ["-x", " y+1/2", " -z+1/2"], - ["x+1/2", " y", " z+1/2"], - ["-x+1/2", " -y", " z+1/2"], - ["x+1/2", " -y", " -z+1/2"], - ["-x+1/2", " y", " -z+1/2"], - ["x+1/2", " y+1/2", " z"], - ["-x+1/2", " -y+1/2", " z"], - ["x+1/2", " -y+1/2", " -z"], - ["-x+1/2", " y+1/2", " -z"], - ], - "I 2 2": [ - ["x", " y", " z"], - ["-x", " -y", " z"], - ["x", " -y", " -z"], - ["-x", " y", " -z"], - ["x+1/2", " y+1/2", " z+1/2"], - ["-x+1/2", " -y+1/2", " z+1/2"], - ["x+1/2", " -y+1/2", " -z+1/2"], - ["-x+1/2", " y+1/2", " -z+1/2"], - ], - "I 2b 2c": [ - ["x", " y", " z"], - ["-x", " -y+1/2", " z"], - ["x", " -y", " -z+1/2"], - ["-x+1/2", " y", " -z"], - ["x+1/2", " y+1/2", " z+1/2"], - ["-x+1/2", " -y", " z+1/2"], - ["x+1/2", " -y+1/2", " -z"], - ["-x", " y+1/2", " -z+1/2"], - ], - "P 2 -2": [ - ["x", " y", " z"], - ["-x", " -y", " z"], - ["-x", " y", " z"], - ["x", " -y", " z"], - ], - "P -2 2": [ - ["x", " y", " z"], - ["x", " -y", " -z"], - ["x", " y", " -z"], - ["x", " -y", " z"], - ], - "P -2 -2": [ - ["x", " y", " z"], - ["-x", " y", " -z"], - ["x", " y", " -z"], - ["-x", " y", " z"], - ], - "P 2c -2": [ - ["x", " y", " z"], - ["-x", " -y", " z+1/2"], - ["-x", " y", " z"], - ["x", " -y", " z+1/2"], - ], - "P 2c -2c": [ - ["x", " y", " z"], - ["-x", " -y", " z+1/2"], - ["-x", " y", " z+1/2"], - ["x", " -y", " z"], - ], - "P -2a 2a": [ - ["x", " y", " z"], - ["x+1/2", " -y", " -z"], - ["x+1/2", " y", " -z"], - ["x", " -y", " z"], - ], - "P -2 2a": [ - ["x", " y", " z"], - ["x+1/2", " -y", " -z"], - ["x", " y", " -z"], - ["x+1/2", " -y", " z"], - ], - "P -2 -2b": [ - ["x", " y", " z"], - ["-x", " y+1/2", " -z"], - ["x", " y", " -z"], - ["-x", " y+1/2", " z"], - ], - "P -2b -2": [ - ["x", " y", " z"], - ["-x", " y+1/2", " -z"], - ["x", " y+1/2", " -z"], - ["-x", " y", " z"], - ], - "P 2 -2c": [ - ["x", " y", " z"], - ["-x", " -y", " z"], - ["-x", " y", " z+1/2"], - ["x", " -y", " z+1/2"], - ], - "P -2a 2": [ - ["x", " y", " z"], - ["x", " -y", " -z"], - ["x+1/2", " y", " -z"], - ["x+1/2", " -y", " z"], - ], - "P -2b -2b": [ - ["x", " y", " z"], - ["-x", " y", " -z"], - ["x", " y+1/2", " -z"], - ["-x", " y+1/2", " z"], - ], - "P 2 -2a": [ - ["x", " y", " z"], - ["-x", " -y", " z"], - ["-x+1/2", " y", " z"], - ["x+1/2", " -y", " z"], - ], - "P 2 -2b": [ - ["x", " y", " z"], - ["-x", " -y", " z"], - ["-x", " y+1/2", " z"], - ["x", " -y+1/2", " z"], - ], - "P -2b 2": [ - ["x", " y", " z"], - ["x", " -y", " -z"], - ["x", " y+1/2", " -z"], - ["x", " -y+1/2", " z"], - ], - "P -2c 2": [ - ["x", " y", " z"], - ["x", " -y", " -z"], - ["x", " y", " -z+1/2"], - ["x", " -y", " z+1/2"], - ], - "P -2c -2c": [ - ["x", " y", " z"], - ["-x", " y", " -z"], - ["x", " y", " -z+1/2"], - ["-x", " y", " z+1/2"], - ], - "P -2a -2a": [ - ["x", " y", " z"], - ["-x", " y", " -z"], - ["x+1/2", " y", " -z"], - ["-x+1/2", " y", " z"], - ], - "P 2c -2ac": [ - ["x", " y", " z"], - ["-x", " -y", " z+1/2"], - ["-x+1/2", " y", " z+1/2"], - ["x+1/2", " -y", " z"], - ], - "P 2c -2b": [ - ["x", " y", " z"], - ["-x", " -y", " z+1/2"], - ["-x", " y+1/2", " z"], - ["x", " -y+1/2", " z+1/2"], - ], - "P -2b 2a": [ - ["x", " y", " z"], - ["x+1/2", " -y", " -z"], - ["x", " y+1/2", " -z"], - ["x+1/2", " -y+1/2", " z"], - ], - "P -2ac 2a": [ - ["x", " y", " z"], - ["x+1/2", " -y", " -z"], - ["x+1/2", " y", " -z+1/2"], - ["x", " -y", " z+1/2"], - ], - "P -2bc -2c": [ - ["x", " y", " z"], - ["-x", " y+1/2", " -z"], - ["x", " y+1/2", " -z+1/2"], - ["-x", " y", " z+1/2"], - ], - "P -2a -2ab": [ - ["x", " y", " z"], - ["-x", " y+1/2", " -z"], - ["x+1/2", " y", " -z"], - ["-x+1/2", " y+1/2", " z"], - ], - "P 2 -2bc": [ - ["x", " y", " z"], - ["-x", " -y", " z"], - ["-x", " y+1/2", " z+1/2"], - ["x", " -y+1/2", " z+1/2"], - ], - "P 2 -2ac": [ - ["x", " y", " z"], - ["-x", " -y", " z"], - ["-x+1/2", " y", " z+1/2"], - ["x+1/2", " -y", " z+1/2"], - ], - "P -2ac 2": [ - ["x", " y", " z"], - ["x", " -y", " -z"], - ["x+1/2", " y", " -z+1/2"], - ["x+1/2", " -y", " z+1/2"], - ], - "P -2ab 2": [ - ["x", " y", " z"], - ["x", " -y", " -z"], - ["x+1/2", " y+1/2", " -z"], - ["x+1/2", " -y+1/2", " z"], - ], - "P -2ab -2ab": [ - ["x", " y", " z"], - ["-x", " y", " -z"], - ["x+1/2", " y+1/2", " -z"], - ["-x+1/2", " y+1/2", " z"], - ], - "P -2bc -2bc": [ - ["x", " y", " z"], - ["-x", " y", " -z"], - ["x", " y+1/2", " -z+1/2"], - ["-x", " y+1/2", " z+1/2"], - ], - "P 2ac -2": [ - ["x", " y", " z"], - ["-x+1/2", " -y", " z+1/2"], - ["-x", " y", " z"], - ["x+1/2", " -y", " z+1/2"], - ], - "P 2bc -2bc": [ - ["x", " y", " z"], - ["-x", " -y+1/2", " z+1/2"], - ["-x", " y+1/2", " z+1/2"], - ["x", " -y", " z"], - ], - "P -2ab 2ab": [ - ["x", " y", " z"], - ["x+1/2", " -y+1/2", " -z"], - ["x+1/2", " y+1/2", " -z"], - ["x", " -y", " z"], - ], - "P -2 2ac": [ - ["x", " y", " z"], - ["x+1/2", " -y", " -z+1/2"], - ["x", " y", " -z"], - ["x+1/2", " -y", " z+1/2"], - ], - "P -2 -2bc": [ - ["x", " y", " z"], - ["-x", " y+1/2", " -z+1/2"], - ["x", " y", " -z"], - ["-x", " y+1/2", " z+1/2"], - ], - "P -2ab -2": [ - ["x", " y", " z"], - ["-x+1/2", " y+1/2", " -z"], - ["x+1/2", " y+1/2", " -z"], - ["-x", " y", " z"], - ], - "P 2 -2ab": [ - ["x", " y", " z"], - ["-x", " -y", " z"], - ["-x+1/2", " y+1/2", " z"], - ["x+1/2", " -y+1/2", " z"], - ], - "P -2bc 2": [ - ["x", " y", " z"], - ["x", " -y", " -z"], - ["x", " y+1/2", " -z+1/2"], - ["x", " -y+1/2", " z+1/2"], - ], - "P -2ac -2ac": [ - ["x", " y", " z"], - ["-x", " y", " -z"], - ["x+1/2", " y", " -z+1/2"], - ["-x+1/2", " y", " z+1/2"], - ], - "P 2c -2n": [ - ["x", " y", " z"], - ["-x", " -y", " z+1/2"], - ["-x+1/2", " y+1/2", " z+1/2"], - ["x+1/2", " -y+1/2", " z"], - ], - "P 2c -2ab": [ - ["x", " y", " z"], - ["-x", " -y", " z+1/2"], - ["-x+1/2", " y+1/2", " z"], - ["x+1/2", " -y+1/2", " z+1/2"], - ], - "P -2bc 2a": [ - ["x", " y", " z"], - ["x+1/2", " -y", " -z"], - ["x", " y+1/2", " -z+1/2"], - ["x+1/2", " -y+1/2", " z+1/2"], - ], - "P -2n 2a": [ - ["x", " y", " z"], - ["x+1/2", " -y", " -z"], - ["x+1/2", " y+1/2", " -z+1/2"], - ["x", " -y+1/2", " z+1/2"], - ], - "P -2n -2ac": [ - ["x", " y", " z"], - ["-x", " y+1/2", " -z"], - ["x+1/2", " y+1/2", " -z+1/2"], - ["-x+1/2", " y", " z+1/2"], - ], - "P -2ac -2n": [ - ["x", " y", " z"], - ["-x", " y+1/2", " -z"], - ["x+1/2", " y", " -z+1/2"], - ["-x+1/2", " y+1/2", " z+1/2"], - ], - "P 2 -2n": [ - ["x", " y", " z"], - ["-x", " -y", " z"], - ["-x+1/2", " y+1/2", " z+1/2"], - ["x+1/2", " -y+1/2", " z+1/2"], - ], - "P -2n 2": [ - ["x", " y", " z"], - ["x", " -y", " -z"], - ["x+1/2", " y+1/2", " -z+1/2"], - ["x+1/2", " -y+1/2", " z+1/2"], - ], - "P -2n -2n": [ - ["x", " y", " z"], - ["-x", " y", " -z"], - ["x+1/2", " y+1/2", " -z+1/2"], - ["-x+1/2", " y+1/2", " z+1/2"], - ], - "C 2 -2": [ - ["x", " y", " z"], - ["-x", " -y", " z"], - ["-x", " y", " z"], - ["x", " -y", " z"], - ["x+1/2", " y+1/2", " z"], - ["-x+1/2", " -y+1/2", " z"], - ["-x+1/2", " y+1/2", " z"], - ["x+1/2", " -y+1/2", " z"], - ], - "A -2 2": [ - ["x", " y", " z"], - ["x", " -y", " -z"], - ["x", " y", " -z"], - ["x", " -y", " z"], - ["x", " y+1/2", " z+1/2"], - ["x", " -y+1/2", " -z+1/2"], - ["x", " y+1/2", " -z+1/2"], - ["x", " -y+1/2", " z+1/2"], - ], - "B -2 -2": [ - ["x", " y", " z"], - ["-x", " y", " -z"], - ["x", " y", " -z"], - ["-x", " y", " z"], - ["x+1/2", " y", " z+1/2"], - ["-x+1/2", " y", " -z+1/2"], - ["x+1/2", " y", " -z+1/2"], - ["-x+1/2", " y", " z+1/2"], - ], - "C 2c -2": [ - ["x", " y", " z"], - ["-x", " -y", " z+1/2"], - ["-x", " y", " z"], - ["x", " -y", " z+1/2"], - ["x+1/2", " y+1/2", " z"], - ["-x+1/2", " -y+1/2", " z+1/2"], - ["-x+1/2", " y+1/2", " z"], - ["x+1/2", " -y+1/2", " z+1/2"], - ], - "C 2c -2c": [ - ["x", " y", " z"], - ["-x", " -y", " z+1/2"], - ["-x", " y", " z+1/2"], - ["x", " -y", " z"], - ["x+1/2", " y+1/2", " z"], - ["-x+1/2", " -y+1/2", " z+1/2"], - ["-x+1/2", " y+1/2", " z+1/2"], - ["x+1/2", " -y+1/2", " z"], - ], - "A -2a 2a": [ - ["x", " y", " z"], - ["x+1/2", " -y", " -z"], - ["x+1/2", " y", " -z"], - ["x", " -y", " z"], - ["x", " y+1/2", " z+1/2"], - ["x+1/2", " -y+1/2", " -z+1/2"], - ["x+1/2", " y+1/2", " -z+1/2"], - ["x", " -y+1/2", " z+1/2"], - ], - "A -2 2a": [ - ["x", " y", " z"], - ["x+1/2", " -y", " -z"], - ["x", " y", " -z"], - ["x+1/2", " -y", " z"], - ["x", " y+1/2", " z+1/2"], - ["x+1/2", " -y+1/2", " -z+1/2"], - ["x", " y+1/2", " -z+1/2"], - ["x+1/2", " -y+1/2", " z+1/2"], - ], - "B -2 -2b": [ - ["x", " y", " z"], - ["-x", " y+1/2", " -z"], - ["x", " y", " -z"], - ["-x", " y+1/2", " z"], - ["x+1/2", " y", " z+1/2"], - ["-x+1/2", " y+1/2", " -z+1/2"], - ["x+1/2", " y", " -z+1/2"], - ["-x+1/2", " y+1/2", " z+1/2"], - ], - "B -2b -2": [ - ["x", " y", " z"], - ["-x", " y+1/2", " -z"], - ["x", " y+1/2", " -z"], - ["-x", " y", " z"], - ["x+1/2", " y", " z+1/2"], - ["-x+1/2", " y+1/2", " -z+1/2"], - ["x+1/2", " y+1/2", " -z+1/2"], - ["-x+1/2", " y", " z+1/2"], - ], - "C 2 -2c": [ - ["x", " y", " z"], - ["-x", " -y", " z"], - ["-x", " y", " z+1/2"], - ["x", " -y", " z+1/2"], - ["x+1/2", " y+1/2", " z"], - ["-x+1/2", " -y+1/2", " z"], - ["-x+1/2", " y+1/2", " z+1/2"], - ["x+1/2", " -y+1/2", " z+1/2"], - ], - "A -2a 2": [ - ["x", " y", " z"], - ["x", " -y", " -z"], - ["x+1/2", " y", " -z"], - ["x+1/2", " -y", " z"], - ["x", " y+1/2", " z+1/2"], - ["x", " -y+1/2", " -z+1/2"], - ["x+1/2", " y+1/2", " -z+1/2"], - ["x+1/2", " -y+1/2", " z+1/2"], - ], - "B -2b -2b": [ - ["x", " y", " z"], - ["-x", " y", " -z"], - ["x", " y+1/2", " -z"], - ["-x", " y+1/2", " z"], - ["x+1/2", " y", " z+1/2"], - ["-x+1/2", " y", " -z+1/2"], - ["x+1/2", " y+1/2", " -z+1/2"], - ["-x+1/2", " y+1/2", " z+1/2"], - ], - "A 2 -2": [ - ["x", " y", " z"], - ["-x", " -y", " z"], - ["-x", " y", " z"], - ["x", " -y", " z"], - ["x", " y+1/2", " z+1/2"], - ["-x", " -y+1/2", " z+1/2"], - ["-x", " y+1/2", " z+1/2"], - ["x", " -y+1/2", " z+1/2"], - ], - "B 2 -2": [ - ["x", " y", " z"], - ["-x", " -y", " z"], - ["-x", " y", " z"], - ["x", " -y", " z"], - ["x+1/2", " y", " z+1/2"], - ["-x+1/2", " -y", " z+1/2"], - ["-x+1/2", " y", " z+1/2"], - ["x+1/2", " -y", " z+1/2"], - ], - "B -2 2": [ - ["x", " y", " z"], - ["x", " -y", " -z"], - ["x", " y", " -z"], - ["x", " -y", " z"], - ["x+1/2", " y", " z+1/2"], - ["x+1/2", " -y", " -z+1/2"], - ["x+1/2", " y", " -z+1/2"], - ["x+1/2", " -y", " z+1/2"], - ], - "C -2 2": [ - ["x", " y", " z"], - ["x", " -y", " -z"], - ["x", " y", " -z"], - ["x", " -y", " z"], - ["x+1/2", " y+1/2", " z"], - ["x+1/2", " -y+1/2", " -z"], - ["x+1/2", " y+1/2", " -z"], - ["x+1/2", " -y+1/2", " z"], - ], - "C -2 -2": [ - ["x", " y", " z"], - ["-x", " y", " -z"], - ["x", " y", " -z"], - ["-x", " y", " z"], - ["x+1/2", " y+1/2", " z"], - ["-x+1/2", " y+1/2", " -z"], - ["x+1/2", " y+1/2", " -z"], - ["-x+1/2", " y+1/2", " z"], - ], - "A -2 -2": [ - ["x", " y", " z"], - ["-x", " y", " -z"], - ["x", " y", " -z"], - ["-x", " y", " z"], - ["x", " y+1/2", " z+1/2"], - ["-x", " y+1/2", " -z+1/2"], - ["x", " y+1/2", " -z+1/2"], - ["-x", " y+1/2", " z+1/2"], - ], - "A 2 -2c": [ - ["x", " y", " z"], - ["-x", " -y", " z"], - ["-x", " y", " z+1/2"], - ["x", " -y", " z+1/2"], - ["x", " y+1/2", " z+1/2"], - ["-x", " -y+1/2", " z+1/2"], - ["-x", " y+1/2", " z"], - ["x", " -y+1/2", " z"], - ], - "B 2 -2c": [ - ["x", " y", " z"], - ["-x", " -y", " z"], - ["-x", " y", " z+1/2"], - ["x", " -y", " z+1/2"], - ["x+1/2", " y", " z+1/2"], - ["-x+1/2", " -y", " z+1/2"], - ["-x+1/2", " y", " z"], - ["x+1/2", " -y", " z"], - ], - "B -2c 2": [ - ["x", " y", " z"], - ["x", " -y", " -z"], - ["x", " y", " -z+1/2"], - ["x", " -y", " z+1/2"], - ["x+1/2", " y", " z+1/2"], - ["x+1/2", " -y", " -z+1/2"], - ["x+1/2", " y", " -z"], - ["x+1/2", " -y", " z"], - ], - "C -2b 2": [ - ["x", " y", " z"], - ["x", " -y", " -z"], - ["x", " y+1/2", " -z"], - ["x", " -y+1/2", " z"], - ["x+1/2", " y+1/2", " z"], - ["x+1/2", " -y+1/2", " -z"], - ["x+1/2", " y", " -z"], - ["x+1/2", " -y", " z"], - ], - "C -2b -2b": [ - ["x", " y", " z"], - ["-x", " y", " -z"], - ["x", " y+1/2", " -z"], - ["-x", " y+1/2", " z"], - ["x+1/2", " y+1/2", " z"], - ["-x+1/2", " y+1/2", " -z"], - ["x+1/2", " y", " -z"], - ["-x+1/2", " y", " z"], - ], - "A -2c -2c": [ - ["x", " y", " z"], - ["-x", " y", " -z"], - ["x", " y", " -z+1/2"], - ["-x", " y", " z+1/2"], - ["x", " y+1/2", " z+1/2"], - ["-x", " y+1/2", " -z+1/2"], - ["x", " y+1/2", " -z"], - ["-x", " y+1/2", " z"], - ], - "A 2 -2a": [ - ["x", " y", " z"], - ["-x", " -y", " z"], - ["-x+1/2", " y", " z"], - ["x+1/2", " -y", " z"], - ["x", " y+1/2", " z+1/2"], - ["-x", " -y+1/2", " z+1/2"], - ["-x+1/2", " y+1/2", " z+1/2"], - ["x+1/2", " -y+1/2", " z+1/2"], - ], - "B 2 -2b": [ - ["x", " y", " z"], - ["-x", " -y", " z"], - ["-x", " y+1/2", " z"], - ["x", " -y+1/2", " z"], - ["x+1/2", " y", " z+1/2"], - ["-x+1/2", " -y", " z+1/2"], - ["-x+1/2", " y+1/2", " z+1/2"], - ["x+1/2", " -y+1/2", " z+1/2"], - ], - "B -2b 2": [ - ["x", " y", " z"], - ["x", " -y", " -z"], - ["x", " y+1/2", " -z"], - ["x", " -y+1/2", " z"], - ["x+1/2", " y", " z+1/2"], - ["x+1/2", " -y", " -z+1/2"], - ["x+1/2", " y+1/2", " -z+1/2"], - ["x+1/2", " -y+1/2", " z+1/2"], - ], - "C -2c 2": [ - ["x", " y", " z"], - ["x", " -y", " -z"], - ["x", " y", " -z+1/2"], - ["x", " -y", " z+1/2"], - ["x+1/2", " y+1/2", " z"], - ["x+1/2", " -y+1/2", " -z"], - ["x+1/2", " y+1/2", " -z+1/2"], - ["x+1/2", " -y+1/2", " z+1/2"], - ], - "C -2c -2c": [ - ["x", " y", " z"], - ["-x", " y", " -z"], - ["x", " y", " -z+1/2"], - ["-x", " y", " z+1/2"], - ["x+1/2", " y+1/2", " z"], - ["-x+1/2", " y+1/2", " -z"], - ["x+1/2", " y+1/2", " -z+1/2"], - ["-x+1/2", " y+1/2", " z+1/2"], - ], - "A -2a -2a": [ - ["x", " y", " z"], - ["-x", " y", " -z"], - ["x+1/2", " y", " -z"], - ["-x+1/2", " y", " z"], - ["x", " y+1/2", " z+1/2"], - ["-x", " y+1/2", " -z+1/2"], - ["x+1/2", " y+1/2", " -z+1/2"], - ["-x+1/2", " y+1/2", " z+1/2"], - ], - "A 2 -2ac": [ - ["x", " y", " z"], - ["-x", " -y", " z"], - ["-x+1/2", " y", " z+1/2"], - ["x+1/2", " -y", " z+1/2"], - ["x", " y+1/2", " z+1/2"], - ["-x", " -y+1/2", " z+1/2"], - ["-x+1/2", " y+1/2", " z"], - ["x+1/2", " -y+1/2", " z"], - ], - "B 2 -2bc": [ - ["x", " y", " z"], - ["-x", " -y", " z"], - ["-x", " y+1/2", " z+1/2"], - ["x", " -y+1/2", " z+1/2"], - ["x+1/2", " y", " z+1/2"], - ["-x+1/2", " -y", " z+1/2"], - ["-x+1/2", " y+1/2", " z"], - ["x+1/2", " -y+1/2", " z"], - ], - "B -2bc 2": [ - ["x", " y", " z"], - ["x", " -y", " -z"], - ["x", " y+1/2", " -z+1/2"], - ["x", " -y+1/2", " z+1/2"], - ["x+1/2", " y", " z+1/2"], - ["x+1/2", " -y", " -z+1/2"], - ["x+1/2", " y+1/2", " -z"], - ["x+1/2", " -y+1/2", " z"], - ], - "C -2bc 2": [ - ["x", " y", " z"], - ["x", " -y", " -z"], - ["x", " y+1/2", " -z+1/2"], - ["x", " -y+1/2", " z+1/2"], - ["x+1/2", " y+1/2", " z"], - ["x+1/2", " -y+1/2", " -z"], - ["x+1/2", " y", " -z+1/2"], - ["x+1/2", " -y", " z+1/2"], - ], - "C -2bc -2bc": [ - ["x", " y", " z"], - ["-x", " y", " -z"], - ["x", " y+1/2", " -z+1/2"], - ["-x", " y+1/2", " z+1/2"], - ["x+1/2", " y+1/2", " z"], - ["-x+1/2", " y+1/2", " -z"], - ["x+1/2", " y", " -z+1/2"], - ["-x+1/2", " y", " z+1/2"], - ], - "A -2ac -2ac": [ - ["x", " y", " z"], - ["-x", " y", " -z"], - ["x+1/2", " y", " -z+1/2"], - ["-x+1/2", " y", " z+1/2"], - ["x", " y+1/2", " z+1/2"], - ["-x", " y+1/2", " -z+1/2"], - ["x+1/2", " y+1/2", " -z"], - ["-x+1/2", " y+1/2", " z"], - ], - "F 2 -2": [ - ["x", " y", " z"], - ["-x", " -y", " z"], - ["-x", " y", " z"], - ["x", " -y", " z"], - ["x", " y+1/2", " z+1/2"], - ["-x", " -y+1/2", " z+1/2"], - ["-x", " y+1/2", " z+1/2"], - ["x", " -y+1/2", " z+1/2"], - ["x+1/2", " y", " z+1/2"], - ["-x+1/2", " -y", " z+1/2"], - ["-x+1/2", " y", " z+1/2"], - ["x+1/2", " -y", " z+1/2"], - ["x+1/2", " y+1/2", " z"], - ["-x+1/2", " -y+1/2", " z"], - ["-x+1/2", " y+1/2", " z"], - ["x+1/2", " -y+1/2", " z"], - ], - "F -2 2": [ - ["x", " y", " z"], - ["x", " -y", " -z"], - ["x", " y", " -z"], - ["x", " -y", " z"], - ["x", " y+1/2", " z+1/2"], - ["x", " -y+1/2", " -z+1/2"], - ["x", " y+1/2", " -z+1/2"], - ["x", " -y+1/2", " z+1/2"], - ["x+1/2", " y", " z+1/2"], - ["x+1/2", " -y", " -z+1/2"], - ["x+1/2", " y", " -z+1/2"], - ["x+1/2", " -y", " z+1/2"], - ["x+1/2", " y+1/2", " z"], - ["x+1/2", " -y+1/2", " -z"], - ["x+1/2", " y+1/2", " -z"], - ["x+1/2", " -y+1/2", " z"], - ], - "F -2 -2": [ - ["x", " y", " z"], - ["-x", " y", " -z"], - ["x", " y", " -z"], - ["-x", " y", " z"], - ["x", " y+1/2", " z+1/2"], - ["-x", " y+1/2", " -z+1/2"], - ["x", " y+1/2", " -z+1/2"], - ["-x", " y+1/2", " z+1/2"], - ["x+1/2", " y", " z+1/2"], - ["-x+1/2", " y", " -z+1/2"], - ["x+1/2", " y", " -z+1/2"], - ["-x+1/2", " y", " z+1/2"], - ["x+1/2", " y+1/2", " z"], - ["-x+1/2", " y+1/2", " -z"], - ["x+1/2", " y+1/2", " -z"], - ["-x+1/2", " y+1/2", " z"], - ], - "F 2 -2d": [ - ["x", " y", " z"], - ["-x", " -y", " z"], - ["-x+1/4", " y+1/4", " z+1/4"], - ["x+1/4", " -y+1/4", " z+1/4"], - ["x", " y+1/2", " z+1/2"], - ["-x", " -y+1/2", " z+1/2"], - ["-x+1/4", " y-1/4", " z-1/4"], - ["x+1/4", " -y-1/4", " z-1/4"], - ["x+1/2", " y", " z+1/2"], - ["-x+1/2", " -y", " z+1/2"], - ["-x-1/4", " y+1/4", " z-1/4"], - ["x-1/4", " -y+1/4", " z-1/4"], - ["x+1/2", " y+1/2", " z"], - ["-x+1/2", " -y+1/2", " z"], - ["-x-1/4", " y-1/4", " z+1/4"], - ["x-1/4", " -y-1/4", " z+1/4"], - ], - "F -2d 2": [ - ["x", " y", " z"], - ["x", " -y", " -z"], - ["x+1/4", " y+1/4", " -z+1/4"], - ["x+1/4", " -y+1/4", " z+1/4"], - ["x", " y+1/2", " z+1/2"], - ["x", " -y+1/2", " -z+1/2"], - ["x+1/4", " y-1/4", " -z-1/4"], - ["x+1/4", " -y-1/4", " z-1/4"], - ["x+1/2", " y", " z+1/2"], - ["x+1/2", " -y", " -z+1/2"], - ["x-1/4", " y+1/4", " -z-1/4"], - ["x-1/4", " -y+1/4", " z-1/4"], - ["x+1/2", " y+1/2", " z"], - ["x+1/2", " -y+1/2", " -z"], - ["x-1/4", " y-1/4", " -z+1/4"], - ["x-1/4", " -y-1/4", " z+1/4"], - ], - "F -2d -2d": [ - ["x", " y", " z"], - ["-x", " y", " -z"], - ["x+1/4", " y+1/4", " -z+1/4"], - ["-x+1/4", " y+1/4", " z+1/4"], - ["x", " y+1/2", " z+1/2"], - ["-x", " y+1/2", " -z+1/2"], - ["x+1/4", " y-1/4", " -z-1/4"], - ["-x+1/4", " y-1/4", " z-1/4"], - ["x+1/2", " y", " z+1/2"], - ["-x+1/2", " y", " -z+1/2"], - ["x-1/4", " y+1/4", " -z-1/4"], - ["-x-1/4", " y+1/4", " z-1/4"], - ["x+1/2", " y+1/2", " z"], - ["-x+1/2", " y+1/2", " -z"], - ["x-1/4", " y-1/4", " -z+1/4"], - ["-x-1/4", " y-1/4", " z+1/4"], - ], - "I 2 -2": [ - ["x", " y", " z"], - ["-x", " -y", " z"], - ["-x", " y", " z"], - ["x", " -y", " z"], - ["x+1/2", " y+1/2", " z+1/2"], - ["-x+1/2", " -y+1/2", " z+1/2"], - ["-x+1/2", " y+1/2", " z+1/2"], - ["x+1/2", " -y+1/2", " z+1/2"], - ], - "I -2 2": [ - ["x", " y", " z"], - ["x", " -y", " -z"], - ["x", " y", " -z"], - ["x", " -y", " z"], - ["x+1/2", " y+1/2", " z+1/2"], - ["x+1/2", " -y+1/2", " -z+1/2"], - ["x+1/2", " y+1/2", " -z+1/2"], - ["x+1/2", " -y+1/2", " z+1/2"], - ], - "I -2 -2": [ - ["x", " y", " z"], - ["-x", " y", " -z"], - ["x", " y", " -z"], - ["-x", " y", " z"], - ["x+1/2", " y+1/2", " z+1/2"], - ["-x+1/2", " y+1/2", " -z+1/2"], - ["x+1/2", " y+1/2", " -z+1/2"], - ["-x+1/2", " y+1/2", " z+1/2"], - ], - "I 2 -2c": [ - ["x", " y", " z"], - ["-x", " -y", " z"], - ["-x", " y", " z+1/2"], - ["x", " -y", " z+1/2"], - ["x+1/2", " y+1/2", " z+1/2"], - ["-x+1/2", " -y+1/2", " z+1/2"], - ["-x+1/2", " y+1/2", " z"], - ["x+1/2", " -y+1/2", " z"], - ], - "I -2a 2": [ - ["x", " y", " z"], - ["x", " -y", " -z"], - ["x+1/2", " y", " -z"], - ["x+1/2", " -y", " z"], - ["x+1/2", " y+1/2", " z+1/2"], - ["x+1/2", " -y+1/2", " -z+1/2"], - ["x", " y+1/2", " -z+1/2"], - ["x", " -y+1/2", " z+1/2"], - ], - "I -2b -2b": [ - ["x", " y", " z"], - ["-x", " y", " -z"], - ["x", " y+1/2", " -z"], - ["-x", " y+1/2", " z"], - ["x+1/2", " y+1/2", " z+1/2"], - ["-x+1/2", " y+1/2", " -z+1/2"], - ["x+1/2", " y", " -z+1/2"], - ["-x+1/2", " y", " z+1/2"], - ], - "I 2 -2a": [ - ["x", " y", " z"], - ["-x", " -y", " z"], - ["-x+1/2", " y", " z"], - ["x+1/2", " -y", " z"], - ["x+1/2", " y+1/2", " z+1/2"], - ["-x+1/2", " -y+1/2", " z+1/2"], - ["-x", " y+1/2", " z+1/2"], - ["x", " -y+1/2", " z+1/2"], - ], - "I 2 -2b": [ - ["x", " y", " z"], - ["-x", " -y", " z"], - ["-x", " y+1/2", " z"], - ["x", " -y+1/2", " z"], - ["x+1/2", " y+1/2", " z+1/2"], - ["-x+1/2", " -y+1/2", " z+1/2"], - ["-x+1/2", " y", " z+1/2"], - ["x+1/2", " -y", " z+1/2"], - ], - "I -2b 2": [ - ["x", " y", " z"], - ["x", " -y", " -z"], - ["x", " y+1/2", " -z"], - ["x", " -y+1/2", " z"], - ["x+1/2", " y+1/2", " z+1/2"], - ["x+1/2", " -y+1/2", " -z+1/2"], - ["x+1/2", " y", " -z+1/2"], - ["x+1/2", " -y", " z+1/2"], - ], - "I -2c 2": [ - ["x", " y", " z"], - ["x", " -y", " -z"], - ["x", " y", " -z+1/2"], - ["x", " -y", " z+1/2"], - ["x+1/2", " y+1/2", " z+1/2"], - ["x+1/2", " -y+1/2", " -z+1/2"], - ["x+1/2", " y+1/2", " -z"], - ["x+1/2", " -y+1/2", " z"], - ], - "I -2c -2c": [ - ["x", " y", " z"], - ["-x", " y", " -z"], - ["x", " y", " -z+1/2"], - ["-x", " y", " z+1/2"], - ["x+1/2", " y+1/2", " z+1/2"], - ["-x+1/2", " y+1/2", " -z+1/2"], - ["x+1/2", " y+1/2", " -z"], - ["-x+1/2", " y+1/2", " z"], - ], - "I -2a -2a": [ - ["x", " y", " z"], - ["-x", " y", " -z"], - ["x+1/2", " y", " -z"], - ["-x+1/2", " y", " z"], - ["x+1/2", " y+1/2", " z+1/2"], - ["-x+1/2", " y+1/2", " -z+1/2"], - ["x", " y+1/2", " -z+1/2"], - ["-x", " y+1/2", " z+1/2"], - ], - "-P 2 2": [ - ["x", " y", " z"], - ["-x", " -y", " z"], - ["x", " -y", " -z"], - ["-x", " y", " -z"], - ["-x", " -y", " -z"], - ["x", " y", " -z"], - ["-x", " y", " z"], - ["x", " -y", " z"], - ], - "P 2 2 -1n": [ - ["x", " y", " z"], - ["-x+1/2", " -y+1/2", " -z+1/2"], - ["-x", " -y", " z"], - ["x", " -y", " -z"], - ["-x", " y", " -z"], - ["x+1/2", " y+1/2", " -z+1/2"], - ["-x+1/2", " y+1/2", " z+1/2"], - ["x+1/2", " -y+1/2", " z+1/2"], - ], - "-P 2ab 2bc": [ - ["x", " y", " z"], - ["-x+1/2", " -y+1/2", " z"], - ["x", " -y+1/2", " -z+1/2"], - ["-x+1/2", " y", " -z+1/2"], - ["-x", " -y", " -z"], - ["x+1/2", " y+1/2", " -z"], - ["-x", " y+1/2", " z+1/2"], - ["x+1/2", " -y", " z+1/2"], - ], - "-P 2 2c": [ - ["x", " y", " z"], - ["-x", " -y", " z"], - ["x", " -y", " -z+1/2"], - ["-x", " y", " -z+1/2"], - ["-x", " -y", " -z"], - ["x", " y", " -z"], - ["-x", " y", " z+1/2"], - ["x", " -y", " z+1/2"], - ], - "-P 2a 2": [ - ["x", " y", " z"], - ["-x+1/2", " -y", " z"], - ["x", " -y", " -z"], - ["-x+1/2", " y", " -z"], - ["-x", " -y", " -z"], - ["x+1/2", " y", " -z"], - ["-x", " y", " z"], - ["x+1/2", " -y", " z"], - ], - "-P 2b 2b": [ - ["x", " y", " z"], - ["-x", " -y+1/2", " z"], - ["x", " -y+1/2", " -z"], - ["-x", " y", " -z"], - ["-x", " -y", " -z"], - ["x", " y+1/2", " -z"], - ["-x", " y+1/2", " z"], - ["x", " -y", " z"], - ], - "P 2 2 -1ab": [ - ["x", " y", " z"], - ["-x+1/2", " -y+1/2", " -z"], - ["-x", " -y", " z"], - ["x", " -y", " -z"], - ["-x", " y", " -z"], - ["x+1/2", " y+1/2", " -z"], - ["-x+1/2", " y+1/2", " z"], - ["x+1/2", " -y+1/2", " z"], - ], - "-P 2ab 2b": [ - ["x", " y", " z"], - ["-x+1/2", " -y+1/2", " z"], - ["x", " -y+1/2", " -z"], - ["-x+1/2", " y", " -z"], - ["-x", " -y", " -z"], - ["x+1/2", " y+1/2", " -z"], - ["-x", " y+1/2", " z"], - ["x+1/2", " -y", " z"], - ], - "P 2 2 -1bc": [ - ["x", " y", " z"], - ["-x", " -y+1/2", " -z+1/2"], - ["-x", " -y", " z"], - ["x", " -y", " -z"], - ["-x", " y", " -z"], - ["x", " y+1/2", " -z+1/2"], - ["-x", " y+1/2", " z+1/2"], - ["x", " -y+1/2", " z+1/2"], - ], - "-P 2b 2bc": [ - ["x", " y", " z"], - ["-x", " -y+1/2", " z"], - ["x", " -y+1/2", " -z+1/2"], - ["-x", " y", " -z+1/2"], - ["-x", " -y", " -z"], - ["x", " y+1/2", " -z"], - ["-x", " y+1/2", " z+1/2"], - ["x", " -y", " z+1/2"], - ], - "P 2 2 -1ac": [ - ["x", " y", " z"], - ["-x+1/2", " -y", " -z+1/2"], - ["-x", " -y", " z"], - ["x", " -y", " -z"], - ["-x", " y", " -z"], - ["x+1/2", " y", " -z+1/2"], - ["-x+1/2", " y", " z+1/2"], - ["x+1/2", " -y", " z+1/2"], - ], - "-P 2a 2c": [ - ["x", " y", " z"], - ["-x+1/2", " -y", " z"], - ["x", " -y", " -z+1/2"], - ["-x+1/2", " y", " -z+1/2"], - ["-x", " -y", " -z"], - ["x+1/2", " y", " -z"], - ["-x", " y", " z+1/2"], - ["x+1/2", " -y", " z+1/2"], - ], - "-P 2a 2a": [ - ["x", " y", " z"], - ["-x+1/2", " -y", " z"], - ["x+1/2", " -y", " -z"], - ["-x", " y", " -z"], - ["-x", " -y", " -z"], - ["x+1/2", " y", " -z"], - ["-x+1/2", " y", " z"], - ["x", " -y", " z"], - ], - "-P 2b 2": [ - ["x", " y", " z"], - ["-x", " -y+1/2", " z"], - ["x", " -y", " -z"], - ["-x", " y+1/2", " -z"], - ["-x", " -y", " -z"], - ["x", " y+1/2", " -z"], - ["-x", " y", " z"], - ["x", " -y+1/2", " z"], - ], - "-P 2 2b": [ - ["x", " y", " z"], - ["-x", " -y", " z"], - ["x", " -y+1/2", " -z"], - ["-x", " y+1/2", " -z"], - ["-x", " -y", " -z"], - ["x", " y", " -z"], - ["-x", " y+1/2", " z"], - ["x", " -y+1/2", " z"], - ], - "-P 2c 2c": [ - ["x", " y", " z"], - ["-x", " -y", " z+1/2"], - ["x", " -y", " -z+1/2"], - ["-x", " y", " -z"], - ["-x", " -y", " -z"], - ["x", " y", " -z+1/2"], - ["-x", " y", " z+1/2"], - ["x", " -y", " z"], - ], - "-P 2c 2": [ - ["x", " y", " z"], - ["-x", " -y", " z+1/2"], - ["x", " -y", " -z"], - ["-x", " y", " -z+1/2"], - ["-x", " -y", " -z"], - ["x", " y", " -z+1/2"], - ["-x", " y", " z"], - ["x", " -y", " z+1/2"], - ], - "-P 2 2a": [ - ["x", " y", " z"], - ["-x", " -y", " z"], - ["x+1/2", " -y", " -z"], - ["-x+1/2", " y", " -z"], - ["-x", " -y", " -z"], - ["x", " y", " -z"], - ["-x+1/2", " y", " z"], - ["x+1/2", " -y", " z"], - ], - "-P 2a 2bc": [ - ["x", " y", " z"], - ["-x+1/2", " -y", " z"], - ["x", " -y+1/2", " -z+1/2"], - ["-x+1/2", " y+1/2", " -z+1/2"], - ["-x", " -y", " -z"], - ["x+1/2", " y", " -z"], - ["-x", " y+1/2", " z+1/2"], - ["x+1/2", " -y+1/2", " z+1/2"], - ], - "-P 2b 2n": [ - ["x", " y", " z"], - ["-x", " -y+1/2", " z"], - ["x+1/2", " -y+1/2", " -z+1/2"], - ["-x+1/2", " y", " -z+1/2"], - ["-x", " -y", " -z"], - ["x", " y+1/2", " -z"], - ["-x+1/2", " y+1/2", " z+1/2"], - ["x+1/2", " -y", " z+1/2"], - ], - "-P 2n 2b": [ - ["x", " y", " z"], - ["-x+1/2", " -y+1/2", " z+1/2"], - ["x", " -y+1/2", " -z"], - ["-x+1/2", " y", " -z+1/2"], - ["-x", " -y", " -z"], - ["x+1/2", " y+1/2", " -z+1/2"], - ["-x", " y+1/2", " z"], - ["x+1/2", " -y", " z+1/2"], - ], - "-P 2ab 2c": [ - ["x", " y", " z"], - ["-x+1/2", " -y+1/2", " z"], - ["x", " -y", " -z+1/2"], - ["-x+1/2", " y+1/2", " -z+1/2"], - ["-x", " -y", " -z"], - ["x+1/2", " y+1/2", " -z"], - ["-x", " y", " z+1/2"], - ["x+1/2", " -y+1/2", " z+1/2"], - ], - "-P 2ab 2n": [ - ["x", " y", " z"], - ["-x+1/2", " -y+1/2", " z"], - ["x+1/2", " -y+1/2", " -z+1/2"], - ["-x", " y", " -z+1/2"], - ["-x", " -y", " -z"], - ["x+1/2", " y+1/2", " -z"], - ["-x+1/2", " y+1/2", " z+1/2"], - ["x", " -y", " z+1/2"], - ], - "-P 2n 2bc": [ - ["x", " y", " z"], - ["-x+1/2", " -y+1/2", " z+1/2"], - ["x", " -y+1/2", " -z+1/2"], - ["-x+1/2", " y", " -z"], - ["-x", " -y", " -z"], - ["x+1/2", " y+1/2", " -z+1/2"], - ["-x", " y+1/2", " z+1/2"], - ["x+1/2", " -y", " z"], - ], - "-P 2ac 2": [ - ["x", " y", " z"], - ["-x+1/2", " -y", " z+1/2"], - ["x", " -y", " -z"], - ["-x+1/2", " y", " -z+1/2"], - ["-x", " -y", " -z"], - ["x+1/2", " y", " -z+1/2"], - ["-x", " y", " z"], - ["x+1/2", " -y", " z+1/2"], - ], - "-P 2bc 2bc": [ - ["x", " y", " z"], - ["-x", " -y+1/2", " z+1/2"], - ["x", " -y+1/2", " -z+1/2"], - ["-x", " y", " -z"], - ["-x", " -y", " -z"], - ["x", " y+1/2", " -z+1/2"], - ["-x", " y+1/2", " z+1/2"], - ["x", " -y", " z"], - ], - "-P 2ab 2ab": [ - ["x", " y", " z"], - ["-x+1/2", " -y+1/2", " z"], - ["x+1/2", " -y+1/2", " -z"], - ["-x", " y", " -z"], - ["-x", " -y", " -z"], - ["x+1/2", " y+1/2", " -z"], - ["-x+1/2", " y+1/2", " z"], - ["x", " -y", " z"], - ], - "-P 2 2ac": [ - ["x", " y", " z"], - ["-x", " -y", " z"], - ["x+1/2", " -y", " -z+1/2"], - ["-x+1/2", " y", " -z+1/2"], - ["-x", " -y", " -z"], - ["x", " y", " -z"], - ["-x+1/2", " y", " z+1/2"], - ["x+1/2", " -y", " z+1/2"], - ], - "-P 2 2bc": [ - ["x", " y", " z"], - ["-x", " -y", " z"], - ["x", " -y+1/2", " -z+1/2"], - ["-x", " y+1/2", " -z+1/2"], - ["-x", " -y", " -z"], - ["x", " y", " -z"], - ["-x", " y+1/2", " z+1/2"], - ["x", " -y+1/2", " z+1/2"], - ], - "-P 2ab 2": [ - ["x", " y", " z"], - ["-x+1/2", " -y+1/2", " z"], - ["x", " -y", " -z"], - ["-x+1/2", " y+1/2", " -z"], - ["-x", " -y", " -z"], - ["x+1/2", " y+1/2", " -z"], - ["-x", " y", " z"], - ["x+1/2", " -y+1/2", " z"], - ], - "-P 2a 2ac": [ - ["x", " y", " z"], - ["-x+1/2", " -y", " z"], - ["x+1/2", " -y", " -z+1/2"], - ["-x", " y", " -z+1/2"], - ["-x", " -y", " -z"], - ["x+1/2", " y", " -z"], - ["-x+1/2", " y", " z+1/2"], - ["x", " -y", " z+1/2"], - ], - "-P 2b 2c": [ - ["x", " y", " z"], - ["-x", " -y+1/2", " z"], - ["x", " -y", " -z+1/2"], - ["-x", " y+1/2", " -z+1/2"], - ["-x", " -y", " -z"], - ["x", " y+1/2", " -z"], - ["-x", " y", " z+1/2"], - ["x", " -y+1/2", " z+1/2"], - ], - "-P 2a 2b": [ - ["x", " y", " z"], - ["-x+1/2", " -y", " z"], - ["x", " -y+1/2", " -z"], - ["-x+1/2", " y+1/2", " -z"], - ["-x", " -y", " -z"], - ["x+1/2", " y", " -z"], - ["-x", " y+1/2", " z"], - ["x+1/2", " -y+1/2", " z"], - ], - "-P 2ac 2c": [ - ["x", " y", " z"], - ["-x+1/2", " -y", " z+1/2"], - ["x", " -y", " -z+1/2"], - ["-x+1/2", " y", " -z"], - ["-x", " -y", " -z"], - ["x+1/2", " y", " -z+1/2"], - ["-x", " y", " z+1/2"], - ["x+1/2", " -y", " z"], - ], - "-P 2bc 2b": [ - ["x", " y", " z"], - ["-x", " -y+1/2", " z+1/2"], - ["x", " -y+1/2", " -z"], - ["-x", " y", " -z+1/2"], - ["-x", " -y", " -z"], - ["x", " y+1/2", " -z+1/2"], - ["-x", " y+1/2", " z"], - ["x", " -y", " z+1/2"], - ], - "-P 2b 2ab": [ - ["x", " y", " z"], - ["-x", " -y+1/2", " z"], - ["x+1/2", " -y+1/2", " -z"], - ["-x+1/2", " y", " -z"], - ["-x", " -y", " -z"], - ["x", " y+1/2", " -z"], - ["-x+1/2", " y+1/2", " z"], - ["x+1/2", " -y", " z"], - ], - "-P 2 2ab": [ - ["x", " y", " z"], - ["-x", " -y", " z"], - ["x+1/2", " -y+1/2", " -z"], - ["-x+1/2", " y+1/2", " -z"], - ["-x", " -y", " -z"], - ["x", " y", " -z"], - ["-x+1/2", " y+1/2", " z"], - ["x+1/2", " -y+1/2", " z"], - ], - "-P 2bc 2": [ - ["x", " y", " z"], - ["-x", " -y+1/2", " z+1/2"], - ["x", " -y", " -z"], - ["-x", " y+1/2", " -z+1/2"], - ["-x", " -y", " -z"], - ["x", " y+1/2", " -z+1/2"], - ["-x", " y", " z"], - ["x", " -y+1/2", " z+1/2"], - ], - "-P 2ac 2ac": [ - ["x", " y", " z"], - ["-x+1/2", " -y", " z+1/2"], - ["x+1/2", " -y", " -z+1/2"], - ["-x", " y", " -z"], - ["-x", " -y", " -z"], - ["x+1/2", " y", " -z+1/2"], - ["-x+1/2", " y", " z+1/2"], - ["x", " -y", " z"], - ], - "-P 2ab 2ac": [ - ["x", " y", " z"], - ["-x+1/2", " -y+1/2", " z"], - ["x+1/2", " -y", " -z+1/2"], - ["-x", " y+1/2", " -z+1/2"], - ["-x", " -y", " -z"], - ["x+1/2", " y+1/2", " -z"], - ["-x+1/2", " y", " z+1/2"], - ["x", " -y+1/2", " z+1/2"], - ], - "-P 2ac 2bc": [ - ["x", " y", " z"], - ["-x+1/2", " -y", " z+1/2"], - ["x", " -y+1/2", " -z+1/2"], - ["-x+1/2", " y+1/2", " -z"], - ["-x", " -y", " -z"], - ["x+1/2", " y", " -z+1/2"], - ["-x", " y+1/2", " z+1/2"], - ["x+1/2", " -y+1/2", " z"], - ], - "-P 2bc 2ab": [ - ["x", " y", " z"], - ["-x", " -y+1/2", " z+1/2"], - ["x+1/2", " -y+1/2", " -z"], - ["-x+1/2", " y", " -z+1/2"], - ["-x", " -y", " -z"], - ["x", " y+1/2", " -z+1/2"], - ["-x+1/2", " y+1/2", " z"], - ["x+1/2", " -y", " z+1/2"], - ], - "-P 2c 2b": [ - ["x", " y", " z"], - ["-x", " -y", " z+1/2"], - ["x", " -y+1/2", " -z"], - ["-x", " y+1/2", " -z+1/2"], - ["-x", " -y", " -z"], - ["x", " y", " -z+1/2"], - ["-x", " y+1/2", " z"], - ["x", " -y+1/2", " z+1/2"], - ], - "-P 2c 2ac": [ - ["x", " y", " z"], - ["-x", " -y", " z+1/2"], - ["x+1/2", " -y", " -z+1/2"], - ["-x+1/2", " y", " -z"], - ["-x", " -y", " -z"], - ["x", " y", " -z+1/2"], - ["-x+1/2", " y", " z+1/2"], - ["x+1/2", " -y", " z"], - ], - "-P 2ac 2a": [ - ["x", " y", " z"], - ["-x+1/2", " -y", " z+1/2"], - ["x+1/2", " -y", " -z"], - ["-x", " y", " -z+1/2"], - ["-x", " -y", " -z"], - ["x+1/2", " y", " -z+1/2"], - ["-x+1/2", " y", " z"], - ["x", " -y", " z+1/2"], - ], - "-P 2b 2a": [ - ["x", " y", " z"], - ["-x", " -y+1/2", " z"], - ["x+1/2", " -y", " -z"], - ["-x+1/2", " y+1/2", " -z"], - ["-x", " -y", " -z"], - ["x", " y+1/2", " -z"], - ["-x+1/2", " y", " z"], - ["x+1/2", " -y+1/2", " z"], - ], - "-P 2a 2ab": [ - ["x", " y", " z"], - ["-x+1/2", " -y", " z"], - ["x+1/2", " -y+1/2", " -z"], - ["-x", " y+1/2", " -z"], - ["-x", " -y", " -z"], - ["x+1/2", " y", " -z"], - ["-x+1/2", " y+1/2", " z"], - ["x", " -y+1/2", " z"], - ], - "-P 2bc 2c": [ - ["x", " y", " z"], - ["-x", " -y+1/2", " z+1/2"], - ["x", " -y", " -z+1/2"], - ["-x", " y+1/2", " -z"], - ["-x", " -y", " -z"], - ["x", " y+1/2", " -z+1/2"], - ["-x", " y", " z+1/2"], - ["x", " -y+1/2", " z"], - ], - "-P 2 2n": [ - ["x", " y", " z"], - ["-x", " -y", " z"], - ["x+1/2", " -y+1/2", " -z+1/2"], - ["-x+1/2", " y+1/2", " -z+1/2"], - ["-x", " -y", " -z"], - ["x", " y", " -z"], - ["-x+1/2", " y+1/2", " z+1/2"], - ["x+1/2", " -y+1/2", " z+1/2"], - ], - "-P 2n 2": [ - ["x", " y", " z"], - ["-x+1/2", " -y+1/2", " z+1/2"], - ["x", " -y", " -z"], - ["-x+1/2", " y+1/2", " -z+1/2"], - ["-x", " -y", " -z"], - ["x+1/2", " y+1/2", " -z+1/2"], - ["-x", " y", " z"], - ["x+1/2", " -y+1/2", " z+1/2"], - ], - "-P 2n 2n": [ - ["x", " y", " z"], - ["-x+1/2", " -y+1/2", " z+1/2"], - ["x+1/2", " -y+1/2", " -z+1/2"], - ["-x", " y", " -z"], - ["-x", " -y", " -z"], - ["x+1/2", " y+1/2", " -z+1/2"], - ["-x+1/2", " y+1/2", " z+1/2"], - ["x", " -y", " z"], - ], - "P 2 2ab -1ab": [ - ["x", " y", " z"], - ["-x+1/2", " -y+1/2", " -z"], - ["-x", " -y", " z"], - ["x+1/2", " -y+1/2", " -z"], - ["-x+1/2", " y+1/2", " -z"], - ["x+1/2", " y+1/2", " -z"], - ["-x", " y", " z"], - ["x", " -y", " z"], - ], - "-P 2ab 2a": [ - ["x", " y", " z"], - ["-x+1/2", " -y+1/2", " z"], - ["x+1/2", " -y", " -z"], - ["-x", " y+1/2", " -z"], - ["-x", " -y", " -z"], - ["x+1/2", " y+1/2", " -z"], - ["-x+1/2", " y", " z"], - ["x", " -y+1/2", " z"], - ], - "P 2bc 2 -1bc": [ - ["x", " y", " z"], - ["-x", " -y+1/2", " -z+1/2"], - ["-x", " -y+1/2", " z+1/2"], - ["x", " -y", " -z"], - ["-x", " y+1/2", " -z+1/2"], - ["x", " y", " -z"], - ["-x", " y+1/2", " z+1/2"], - ["x", " -y", " z"], - ], - "-P 2c 2bc": [ - ["x", " y", " z"], - ["-x", " -y", " z+1/2"], - ["x", " -y+1/2", " -z+1/2"], - ["-x", " y+1/2", " -z"], - ["-x", " -y", " -z"], - ["x", " y", " -z+1/2"], - ["-x", " y+1/2", " z+1/2"], - ["x", " -y+1/2", " z"], - ], - "P 2ac 2ac -1ac": [ - ["x", " y", " z"], - ["-x+1/2", " -y", " -z+1/2"], - ["-x+1/2", " -y", " z+1/2"], - ["x+1/2", " -y", " -z+1/2"], - ["-x", " y", " -z"], - ["x", " y", " -z"], - ["-x", " y", " z"], - ["x+1/2", " -y", " z+1/2"], - ], - "-P 2c 2a": [ - ["x", " y", " z"], - ["-x", " -y", " z+1/2"], - ["x+1/2", " -y", " -z"], - ["-x+1/2", " y", " -z+1/2"], - ["-x", " -y", " -z"], - ["x", " y", " -z+1/2"], - ["-x+1/2", " y", " z"], - ["x+1/2", " -y", " z+1/2"], - ], - "-P 2n 2ab": [ - ["x", " y", " z"], - ["-x+1/2", " -y+1/2", " z+1/2"], - ["x+1/2", " -y+1/2", " -z"], - ["-x", " y", " -z+1/2"], - ["-x", " -y", " -z"], - ["x+1/2", " y+1/2", " -z+1/2"], - ["-x+1/2", " y+1/2", " z"], - ["x", " -y", " z+1/2"], - ], - "-P 2n 2c": [ - ["x", " y", " z"], - ["-x+1/2", " -y+1/2", " z+1/2"], - ["x", " -y", " -z+1/2"], - ["-x+1/2", " y+1/2", " -z"], - ["-x", " -y", " -z"], - ["x+1/2", " y+1/2", " -z+1/2"], - ["-x", " y", " z+1/2"], - ["x+1/2", " -y+1/2", " z"], - ], - "-P 2a 2n": [ - ["x", " y", " z"], - ["-x+1/2", " -y", " z"], - ["x+1/2", " -y+1/2", " -z+1/2"], - ["-x", " y+1/2", " -z+1/2"], - ["-x", " -y", " -z"], - ["x+1/2", " y", " -z"], - ["-x+1/2", " y+1/2", " z+1/2"], - ["x", " -y+1/2", " z+1/2"], - ], - "-P 2bc 2n": [ - ["x", " y", " z"], - ["-x", " -y+1/2", " z+1/2"], - ["x+1/2", " -y+1/2", " -z+1/2"], - ["-x+1/2", " y", " -z"], - ["-x", " -y", " -z"], - ["x", " y+1/2", " -z+1/2"], - ["-x+1/2", " y+1/2", " z+1/2"], - ["x+1/2", " -y", " z"], - ], - "-P 2ac 2b": [ - ["x", " y", " z"], - ["-x+1/2", " -y", " z+1/2"], - ["x", " -y+1/2", " -z"], - ["-x+1/2", " y+1/2", " -z+1/2"], - ["-x", " -y", " -z"], - ["x+1/2", " y", " -z+1/2"], - ["-x", " y+1/2", " z"], - ["x+1/2", " -y+1/2", " z+1/2"], - ], - "-P 2b 2ac": [ - ["x", " y", " z"], - ["-x", " -y+1/2", " z"], - ["x+1/2", " -y", " -z+1/2"], - ["-x+1/2", " y+1/2", " -z+1/2"], - ["-x", " -y", " -z"], - ["x", " y+1/2", " -z"], - ["-x+1/2", " y", " z+1/2"], - ["x+1/2", " -y+1/2", " z+1/2"], - ], - "-P 2ac 2ab": [ - ["x", " y", " z"], - ["-x+1/2", " -y", " z+1/2"], - ["x+1/2", " -y+1/2", " -z"], - ["-x", " y+1/2", " -z+1/2"], - ["-x", " -y", " -z"], - ["x+1/2", " y", " -z+1/2"], - ["-x+1/2", " y+1/2", " z"], - ["x", " -y+1/2", " z+1/2"], - ], - "-P 2bc 2ac": [ - ["x", " y", " z"], - ["-x", " -y+1/2", " z+1/2"], - ["x+1/2", " -y", " -z+1/2"], - ["-x+1/2", " y+1/2", " -z"], - ["-x", " -y", " -z"], - ["x", " y+1/2", " -z+1/2"], - ["-x+1/2", " y", " z+1/2"], - ["x+1/2", " -y+1/2", " z"], - ], - "-P 2ac 2n": [ - ["x", " y", " z"], - ["-x+1/2", " -y", " z+1/2"], - ["x+1/2", " -y+1/2", " -z+1/2"], - ["-x", " y+1/2", " -z"], - ["-x", " -y", " -z"], - ["x+1/2", " y", " -z+1/2"], - ["-x+1/2", " y+1/2", " z+1/2"], - ["x", " -y+1/2", " z"], - ], - "-P 2bc 2a": [ - ["x", " y", " z"], - ["-x", " -y+1/2", " z+1/2"], - ["x+1/2", " -y", " -z"], - ["-x+1/2", " y+1/2", " -z+1/2"], - ["-x", " -y", " -z"], - ["x", " y+1/2", " -z+1/2"], - ["-x+1/2", " y", " z"], - ["x+1/2", " -y+1/2", " z+1/2"], - ], - "-P 2c 2ab": [ - ["x", " y", " z"], - ["-x", " -y", " z+1/2"], - ["x+1/2", " -y+1/2", " -z"], - ["-x+1/2", " y+1/2", " -z+1/2"], - ["-x", " -y", " -z"], - ["x", " y", " -z+1/2"], - ["-x+1/2", " y+1/2", " z"], - ["x+1/2", " -y+1/2", " z+1/2"], - ], - "-P 2n 2ac": [ - ["x", " y", " z"], - ["-x+1/2", " -y+1/2", " z+1/2"], - ["x+1/2", " -y", " -z+1/2"], - ["-x", " y+1/2", " -z"], - ["-x", " -y", " -z"], - ["x+1/2", " y+1/2", " -z+1/2"], - ["-x+1/2", " y", " z+1/2"], - ["x", " -y+1/2", " z"], - ], - "-P 2n 2a": [ - ["x", " y", " z"], - ["-x+1/2", " -y+1/2", " z+1/2"], - ["x+1/2", " -y", " -z"], - ["-x", " y+1/2", " -z+1/2"], - ["-x", " -y", " -z"], - ["x+1/2", " y+1/2", " -z+1/2"], - ["-x+1/2", " y", " z"], - ["x", " -y+1/2", " z+1/2"], - ], - "-P 2c 2n": [ - ["x", " y", " z"], - ["-x", " -y", " z+1/2"], - ["x+1/2", " -y+1/2", " -z+1/2"], - ["-x+1/2", " y+1/2", " -z"], - ["-x", " -y", " -z"], - ["x", " y", " -z+1/2"], - ["-x+1/2", " y+1/2", " z+1/2"], - ["x+1/2", " -y+1/2", " z"], - ], - "-C 2c 2": [ - ["x", " y", " z"], - ["-x", " -y", " z+1/2"], - ["x", " -y", " -z"], - ["-x", " y", " -z+1/2"], - ["-x", " -y", " -z"], - ["x", " y", " -z+1/2"], - ["-x", " y", " z"], - ["x", " -y", " z+1/2"], - ["x+1/2", " y+1/2", " z"], - ["-x+1/2", " -y+1/2", " z+1/2"], - ["x+1/2", " -y+1/2", " -z"], - ["-x+1/2", " y+1/2", " -z+1/2"], - ["-x+1/2", " -y+1/2", " -z"], - ["x+1/2", " y+1/2", " -z+1/2"], - ["-x+1/2", " y+1/2", " z"], - ["x+1/2", " -y+1/2", " z+1/2"], - ], - "-C 2c 2c": [ - ["x", " y", " z"], - ["-x", " -y", " z+1/2"], - ["x", " -y", " -z+1/2"], - ["-x", " y", " -z"], - ["-x", " -y", " -z"], - ["x", " y", " -z+1/2"], - ["-x", " y", " z+1/2"], - ["x", " -y", " z"], - ["x+1/2", " y+1/2", " z"], - ["-x+1/2", " -y+1/2", " z+1/2"], - ["x+1/2", " -y+1/2", " -z+1/2"], - ["-x+1/2", " y+1/2", " -z"], - ["-x+1/2", " -y+1/2", " -z"], - ["x+1/2", " y+1/2", " -z+1/2"], - ["-x+1/2", " y+1/2", " z+1/2"], - ["x+1/2", " -y+1/2", " z"], - ], - "-A 2a 2a": [ - ["x", " y", " z"], - ["-x+1/2", " -y", " z"], - ["x+1/2", " -y", " -z"], - ["-x", " y", " -z"], - ["-x", " -y", " -z"], - ["x+1/2", " y", " -z"], - ["-x+1/2", " y", " z"], - ["x", " -y", " z"], - ["x", " y+1/2", " z+1/2"], - ["-x+1/2", " -y+1/2", " z+1/2"], - ["x+1/2", " -y+1/2", " -z+1/2"], - ["-x", " y+1/2", " -z+1/2"], - ["-x", " -y+1/2", " -z+1/2"], - ["x+1/2", " y+1/2", " -z+1/2"], - ["-x+1/2", " y+1/2", " z+1/2"], - ["x", " -y+1/2", " z+1/2"], - ], - "-A 2 2a": [ - ["x", " y", " z"], - ["-x", " -y", " z"], - ["x+1/2", " -y", " -z"], - ["-x+1/2", " y", " -z"], - ["-x", " -y", " -z"], - ["x", " y", " -z"], - ["-x+1/2", " y", " z"], - ["x+1/2", " -y", " z"], - ["x", " y+1/2", " z+1/2"], - ["-x", " -y+1/2", " z+1/2"], - ["x+1/2", " -y+1/2", " -z+1/2"], - ["-x+1/2", " y+1/2", " -z+1/2"], - ["-x", " -y+1/2", " -z+1/2"], - ["x", " y+1/2", " -z+1/2"], - ["-x+1/2", " y+1/2", " z+1/2"], - ["x+1/2", " -y+1/2", " z+1/2"], - ], - "-B 2 2b": [ - ["x", " y", " z"], - ["-x", " -y", " z"], - ["x", " -y+1/2", " -z"], - ["-x", " y+1/2", " -z"], - ["-x", " -y", " -z"], - ["x", " y", " -z"], - ["-x", " y+1/2", " z"], - ["x", " -y+1/2", " z"], - ["x+1/2", " y", " z+1/2"], - ["-x+1/2", " -y", " z+1/2"], - ["x+1/2", " -y+1/2", " -z+1/2"], - ["-x+1/2", " y+1/2", " -z+1/2"], - ["-x+1/2", " -y", " -z+1/2"], - ["x+1/2", " y", " -z+1/2"], - ["-x+1/2", " y+1/2", " z+1/2"], - ["x+1/2", " -y+1/2", " z+1/2"], - ], - "-B 2b 2": [ - ["x", " y", " z"], - ["-x", " -y+1/2", " z"], - ["x", " -y", " -z"], - ["-x", " y+1/2", " -z"], - ["-x", " -y", " -z"], - ["x", " y+1/2", " -z"], - ["-x", " y", " z"], - ["x", " -y+1/2", " z"], - ["x+1/2", " y", " z+1/2"], - ["-x+1/2", " -y+1/2", " z+1/2"], - ["x+1/2", " -y", " -z+1/2"], - ["-x+1/2", " y+1/2", " -z+1/2"], - ["-x+1/2", " -y", " -z+1/2"], - ["x+1/2", " y+1/2", " -z+1/2"], - ["-x+1/2", " y", " z+1/2"], - ["x+1/2", " -y+1/2", " z+1/2"], - ], - "-C 2bc 2": [ - ["x", " y", " z"], - ["-x", " -y+1/2", " z+1/2"], - ["x", " -y", " -z"], - ["-x", " y+1/2", " -z+1/2"], - ["-x", " -y", " -z"], - ["x", " y+1/2", " -z+1/2"], - ["-x", " y", " z"], - ["x", " -y+1/2", " z+1/2"], - ["x+1/2", " y+1/2", " z"], - ["-x+1/2", " -y", " z+1/2"], - ["x+1/2", " -y+1/2", " -z"], - ["-x+1/2", " y", " -z+1/2"], - ["-x+1/2", " -y+1/2", " -z"], - ["x+1/2", " y", " -z+1/2"], - ["-x+1/2", " y+1/2", " z"], - ["x+1/2", " -y", " z+1/2"], - ], - "-C 2bc 2bc": [ - ["x", " y", " z"], - ["-x", " -y+1/2", " z+1/2"], - ["x", " -y+1/2", " -z+1/2"], - ["-x", " y", " -z"], - ["-x", " -y", " -z"], - ["x", " y+1/2", " -z+1/2"], - ["-x", " y+1/2", " z+1/2"], - ["x", " -y", " z"], - ["x+1/2", " y+1/2", " z"], - ["-x+1/2", " -y", " z+1/2"], - ["x+1/2", " -y", " -z+1/2"], - ["-x+1/2", " y+1/2", " -z"], - ["-x+1/2", " -y+1/2", " -z"], - ["x+1/2", " y", " -z+1/2"], - ["-x+1/2", " y", " z+1/2"], - ["x+1/2", " -y+1/2", " z"], - ], - "-A 2ac 2ac": [ - ["x", " y", " z"], - ["-x+1/2", " -y", " z+1/2"], - ["x+1/2", " -y", " -z+1/2"], - ["-x", " y", " -z"], - ["-x", " -y", " -z"], - ["x+1/2", " y", " -z+1/2"], - ["-x+1/2", " y", " z+1/2"], - ["x", " -y", " z"], - ["x", " y+1/2", " z+1/2"], - ["-x+1/2", " -y+1/2", " z"], - ["x+1/2", " -y+1/2", " -z"], - ["-x", " y+1/2", " -z+1/2"], - ["-x", " -y+1/2", " -z+1/2"], - ["x+1/2", " y+1/2", " -z"], - ["-x+1/2", " y+1/2", " z"], - ["x", " -y+1/2", " z+1/2"], - ], - "-A 2 2ac": [ - ["x", " y", " z"], - ["-x", " -y", " z"], - ["x+1/2", " -y", " -z+1/2"], - ["-x+1/2", " y", " -z+1/2"], - ["-x", " -y", " -z"], - ["x", " y", " -z"], - ["-x+1/2", " y", " z+1/2"], - ["x+1/2", " -y", " z+1/2"], - ["x", " y+1/2", " z+1/2"], - ["-x", " -y+1/2", " z+1/2"], - ["x+1/2", " -y+1/2", " -z"], - ["-x+1/2", " y+1/2", " -z"], - ["-x", " -y+1/2", " -z+1/2"], - ["x", " y+1/2", " -z+1/2"], - ["-x+1/2", " y+1/2", " z"], - ["x+1/2", " -y+1/2", " z"], - ], - "-B 2 2bc": [ - ["x", " y", " z"], - ["-x", " -y", " z"], - ["x", " -y+1/2", " -z+1/2"], - ["-x", " y+1/2", " -z+1/2"], - ["-x", " -y", " -z"], - ["x", " y", " -z"], - ["-x", " y+1/2", " z+1/2"], - ["x", " -y+1/2", " z+1/2"], - ["x+1/2", " y", " z+1/2"], - ["-x+1/2", " -y", " z+1/2"], - ["x+1/2", " -y+1/2", " -z"], - ["-x+1/2", " y+1/2", " -z"], - ["-x+1/2", " -y", " -z+1/2"], - ["x+1/2", " y", " -z+1/2"], - ["-x+1/2", " y+1/2", " z"], - ["x+1/2", " -y+1/2", " z"], - ], - "-B 2bc 2": [ - ["x", " y", " z"], - ["-x", " -y+1/2", " z+1/2"], - ["x", " -y", " -z"], - ["-x", " y+1/2", " -z+1/2"], - ["-x", " -y", " -z"], - ["x", " y+1/2", " -z+1/2"], - ["-x", " y", " z"], - ["x", " -y+1/2", " z+1/2"], - ["x+1/2", " y", " z+1/2"], - ["-x+1/2", " -y+1/2", " z"], - ["x+1/2", " -y", " -z+1/2"], - ["-x+1/2", " y+1/2", " -z"], - ["-x+1/2", " -y", " -z+1/2"], - ["x+1/2", " y+1/2", " -z"], - ["-x+1/2", " y", " z+1/2"], - ["x+1/2", " -y+1/2", " z"], - ], - "-C 2 2": [ - ["x", " y", " z"], - ["-x", " -y", " z"], - ["x", " -y", " -z"], - ["-x", " y", " -z"], - ["-x", " -y", " -z"], - ["x", " y", " -z"], - ["-x", " y", " z"], - ["x", " -y", " z"], - ["x+1/2", " y+1/2", " z"], - ["-x+1/2", " -y+1/2", " z"], - ["x+1/2", " -y+1/2", " -z"], - ["-x+1/2", " y+1/2", " -z"], - ["-x+1/2", " -y+1/2", " -z"], - ["x+1/2", " y+1/2", " -z"], - ["-x+1/2", " y+1/2", " z"], - ["x+1/2", " -y+1/2", " z"], - ], - "-A 2 2": [ - ["x", " y", " z"], - ["-x", " -y", " z"], - ["x", " -y", " -z"], - ["-x", " y", " -z"], - ["-x", " -y", " -z"], - ["x", " y", " -z"], - ["-x", " y", " z"], - ["x", " -y", " z"], - ["x", " y+1/2", " z+1/2"], - ["-x", " -y+1/2", " z+1/2"], - ["x", " -y+1/2", " -z+1/2"], - ["-x", " y+1/2", " -z+1/2"], - ["-x", " -y+1/2", " -z+1/2"], - ["x", " y+1/2", " -z+1/2"], - ["-x", " y+1/2", " z+1/2"], - ["x", " -y+1/2", " z+1/2"], - ], - "-B 2 2": [ - ["x", " y", " z"], - ["-x", " -y", " z"], - ["x", " -y", " -z"], - ["-x", " y", " -z"], - ["-x", " -y", " -z"], - ["x", " y", " -z"], - ["-x", " y", " z"], - ["x", " -y", " z"], - ["x+1/2", " y", " z+1/2"], - ["-x+1/2", " -y", " z+1/2"], - ["x+1/2", " -y", " -z+1/2"], - ["-x+1/2", " y", " -z+1/2"], - ["-x+1/2", " -y", " -z+1/2"], - ["x+1/2", " y", " -z+1/2"], - ["-x+1/2", " y", " z+1/2"], - ["x+1/2", " -y", " z+1/2"], - ], - "-C 2 2c": [ - ["x", " y", " z"], - ["-x", " -y", " z"], - ["x", " -y", " -z+1/2"], - ["-x", " y", " -z+1/2"], - ["-x", " -y", " -z"], - ["x", " y", " -z"], - ["-x", " y", " z+1/2"], - ["x", " -y", " z+1/2"], - ["x+1/2", " y+1/2", " z"], - ["-x+1/2", " -y+1/2", " z"], - ["x+1/2", " -y+1/2", " -z+1/2"], - ["-x+1/2", " y+1/2", " -z+1/2"], - ["-x+1/2", " -y+1/2", " -z"], - ["x+1/2", " y+1/2", " -z"], - ["-x+1/2", " y+1/2", " z+1/2"], - ["x+1/2", " -y+1/2", " z+1/2"], - ], - "-A 2a 2": [ - ["x", " y", " z"], - ["-x+1/2", " -y", " z"], - ["x", " -y", " -z"], - ["-x+1/2", " y", " -z"], - ["-x", " -y", " -z"], - ["x+1/2", " y", " -z"], - ["-x", " y", " z"], - ["x+1/2", " -y", " z"], - ["x", " y+1/2", " z+1/2"], - ["-x+1/2", " -y+1/2", " z+1/2"], - ["x", " -y+1/2", " -z+1/2"], - ["-x+1/2", " y+1/2", " -z+1/2"], - ["-x", " -y+1/2", " -z+1/2"], - ["x+1/2", " y+1/2", " -z+1/2"], - ["-x", " y+1/2", " z+1/2"], - ["x+1/2", " -y+1/2", " z+1/2"], - ], - "-B 2b 2b": [ - ["x", " y", " z"], - ["-x", " -y+1/2", " z"], - ["x", " -y+1/2", " -z"], - ["-x", " y", " -z"], - ["-x", " -y", " -z"], - ["x", " y+1/2", " -z"], - ["-x", " y+1/2", " z"], - ["x", " -y", " z"], - ["x+1/2", " y", " z+1/2"], - ["-x+1/2", " -y+1/2", " z+1/2"], - ["x+1/2", " -y+1/2", " -z+1/2"], - ["-x+1/2", " y", " -z+1/2"], - ["-x+1/2", " -y", " -z+1/2"], - ["x+1/2", " y+1/2", " -z+1/2"], - ["-x+1/2", " y+1/2", " z+1/2"], - ["x+1/2", " -y", " z+1/2"], - ], - "-C 2b 2": [ - ["x", " y", " z"], - ["-x", " -y+1/2", " z"], - ["x", " -y", " -z"], - ["-x", " y+1/2", " -z"], - ["-x", " -y", " -z"], - ["x", " y+1/2", " -z"], - ["-x", " y", " z"], - ["x", " -y+1/2", " z"], - ["x+1/2", " y+1/2", " z"], - ["-x+1/2", " -y", " z"], - ["x+1/2", " -y+1/2", " -z"], - ["-x+1/2", " y", " -z"], - ["-x+1/2", " -y+1/2", " -z"], - ["x+1/2", " y", " -z"], - ["-x+1/2", " y+1/2", " z"], - ["x+1/2", " -y", " z"], - ], - "-C 2b 2b": [ - ["x", " y", " z"], - ["-x", " -y+1/2", " z"], - ["x", " -y+1/2", " -z"], - ["-x", " y", " -z"], - ["-x", " -y", " -z"], - ["x", " y+1/2", " -z"], - ["-x", " y+1/2", " z"], - ["x", " -y", " z"], - ["x+1/2", " y+1/2", " z"], - ["-x+1/2", " -y", " z"], - ["x+1/2", " -y", " -z"], - ["-x+1/2", " y+1/2", " -z"], - ["-x+1/2", " -y+1/2", " -z"], - ["x+1/2", " y", " -z"], - ["-x+1/2", " y", " z"], - ["x+1/2", " -y+1/2", " z"], - ], - "-A 2c 2c": [ - ["x", " y", " z"], - ["-x", " -y", " z+1/2"], - ["x", " -y", " -z+1/2"], - ["-x", " y", " -z"], - ["-x", " -y", " -z"], - ["x", " y", " -z+1/2"], - ["-x", " y", " z+1/2"], - ["x", " -y", " z"], - ["x", " y+1/2", " z+1/2"], - ["-x", " -y+1/2", " z"], - ["x", " -y+1/2", " -z"], - ["-x", " y+1/2", " -z+1/2"], - ["-x", " -y+1/2", " -z+1/2"], - ["x", " y+1/2", " -z"], - ["-x", " y+1/2", " z"], - ["x", " -y+1/2", " z+1/2"], - ], - "-A 2 2c": [ - ["x", " y", " z"], - ["-x", " -y", " z"], - ["x", " -y", " -z+1/2"], - ["-x", " y", " -z+1/2"], - ["-x", " -y", " -z"], - ["x", " y", " -z"], - ["-x", " y", " z+1/2"], - ["x", " -y", " z+1/2"], - ["x", " y+1/2", " z+1/2"], - ["-x", " -y+1/2", " z+1/2"], - ["x", " -y+1/2", " -z"], - ["-x", " y+1/2", " -z"], - ["-x", " -y+1/2", " -z+1/2"], - ["x", " y+1/2", " -z+1/2"], - ["-x", " y+1/2", " z"], - ["x", " -y+1/2", " z"], - ], - "-B 2 2c": [ - ["x", " y", " z"], - ["-x", " -y", " z"], - ["x", " -y", " -z+1/2"], - ["-x", " y", " -z+1/2"], - ["-x", " -y", " -z"], - ["x", " y", " -z"], - ["-x", " y", " z+1/2"], - ["x", " -y", " z+1/2"], - ["x+1/2", " y", " z+1/2"], - ["-x+1/2", " -y", " z+1/2"], - ["x+1/2", " -y", " -z"], - ["-x+1/2", " y", " -z"], - ["-x+1/2", " -y", " -z+1/2"], - ["x+1/2", " y", " -z+1/2"], - ["-x+1/2", " y", " z"], - ["x+1/2", " -y", " z"], - ], - "-B 2c 2": [ - ["x", " y", " z"], - ["-x", " -y", " z+1/2"], - ["x", " -y", " -z"], - ["-x", " y", " -z+1/2"], - ["-x", " -y", " -z"], - ["x", " y", " -z+1/2"], - ["-x", " y", " z"], - ["x", " -y", " z+1/2"], - ["x+1/2", " y", " z+1/2"], - ["-x+1/2", " -y", " z"], - ["x+1/2", " -y", " -z+1/2"], - ["-x+1/2", " y", " -z"], - ["-x+1/2", " -y", " -z+1/2"], - ["x+1/2", " y", " -z"], - ["-x+1/2", " y", " z+1/2"], - ["x+1/2", " -y", " z"], - ], - "C 2 2 -1bc": [ - ["x", " y", " z"], - ["-x", " -y+1/2", " -z+1/2"], - ["-x", " -y", " z"], - ["x", " -y", " -z"], - ["-x", " y", " -z"], - ["x", " y+1/2", " -z+1/2"], - ["-x", " y+1/2", " z+1/2"], - ["x", " -y+1/2", " z+1/2"], - ["x+1/2", " y+1/2", " z"], - ["-x+1/2", " -y", " -z+1/2"], - ["-x+1/2", " -y+1/2", " z"], - ["x+1/2", " -y+1/2", " -z"], - ["-x+1/2", " y+1/2", " -z"], - ["x+1/2", " y", " -z+1/2"], - ["-x+1/2", " y", " z+1/2"], - ["x+1/2", " -y", " z+1/2"], - ], - "-C 2b 2bc": [ - ["x", " y", " z"], - ["-x", " -y+1/2", " z"], - ["x", " -y+1/2", " -z+1/2"], - ["-x", " y", " -z+1/2"], - ["-x", " -y", " -z"], - ["x", " y+1/2", " -z"], - ["-x", " y+1/2", " z+1/2"], - ["x", " -y", " z+1/2"], - ["x+1/2", " y+1/2", " z"], - ["-x+1/2", " -y", " z"], - ["x+1/2", " -y", " -z+1/2"], - ["-x+1/2", " y+1/2", " -z+1/2"], - ["-x+1/2", " -y+1/2", " -z"], - ["x+1/2", " y", " -z"], - ["-x+1/2", " y", " z+1/2"], - ["x+1/2", " -y+1/2", " z+1/2"], - ], - "C 2 2 -1bc": [ - ["x", " y", " z"], - ["-x", " -y+1/2", " -z+1/2"], - ["-x", " -y", " z"], - ["x", " -y", " -z"], - ["-x", " y", " -z"], - ["x", " y+1/2", " -z+1/2"], - ["-x", " y+1/2", " z+1/2"], - ["x", " -y+1/2", " z+1/2"], - ["x+1/2", " y+1/2", " z"], - ["-x+1/2", " -y", " -z+1/2"], - ["-x+1/2", " -y+1/2", " z"], - ["x+1/2", " -y+1/2", " -z"], - ["-x+1/2", " y+1/2", " -z"], - ["x+1/2", " y", " -z+1/2"], - ["-x+1/2", " y", " z+1/2"], - ["x+1/2", " -y", " z+1/2"], - ], - "-C 2b 2c": [ - ["x", " y", " z"], - ["-x", " -y+1/2", " z"], - ["x", " -y", " -z+1/2"], - ["-x", " y+1/2", " -z+1/2"], - ["-x", " -y", " -z"], - ["x", " y+1/2", " -z"], - ["-x", " y", " z+1/2"], - ["x", " -y+1/2", " z+1/2"], - ["x+1/2", " y+1/2", " z"], - ["-x+1/2", " -y", " z"], - ["x+1/2", " -y+1/2", " -z+1/2"], - ["-x+1/2", " y", " -z+1/2"], - ["-x+1/2", " -y+1/2", " -z"], - ["x+1/2", " y", " -z"], - ["-x+1/2", " y+1/2", " z+1/2"], - ["x+1/2", " -y", " z+1/2"], - ], - "A 2 2 -1ac": [ - ["x", " y", " z"], - ["-x+1/2", " -y", " -z+1/2"], - ["-x", " -y", " z"], - ["x", " -y", " -z"], - ["-x", " y", " -z"], - ["x+1/2", " y", " -z+1/2"], - ["-x+1/2", " y", " z+1/2"], - ["x+1/2", " -y", " z+1/2"], - ["x", " y+1/2", " z+1/2"], - ["-x+1/2", " -y+1/2", " -z"], - ["-x", " -y+1/2", " z+1/2"], - ["x", " -y+1/2", " -z+1/2"], - ["-x", " y+1/2", " -z+1/2"], - ["x+1/2", " y+1/2", " -z"], - ["-x+1/2", " y+1/2", " z"], - ["x+1/2", " -y+1/2", " z"], - ], - "-A 2a 2c": [ - ["x", " y", " z"], - ["-x+1/2", " -y", " z"], - ["x", " -y", " -z+1/2"], - ["-x+1/2", " y", " -z+1/2"], - ["-x", " -y", " -z"], - ["x+1/2", " y", " -z"], - ["-x", " y", " z+1/2"], - ["x+1/2", " -y", " z+1/2"], - ["x", " y+1/2", " z+1/2"], - ["-x+1/2", " -y+1/2", " z+1/2"], - ["x", " -y+1/2", " -z"], - ["-x+1/2", " y+1/2", " -z"], - ["-x", " -y+1/2", " -z+1/2"], - ["x+1/2", " y+1/2", " -z+1/2"], - ["-x", " y+1/2", " z"], - ["x+1/2", " -y+1/2", " z"], - ], - "A 2 2 -1ac": [ - ["x", " y", " z"], - ["-x+1/2", " -y", " -z+1/2"], - ["-x", " -y", " z"], - ["x", " -y", " -z"], - ["-x", " y", " -z"], - ["x+1/2", " y", " -z+1/2"], - ["-x+1/2", " y", " z+1/2"], - ["x+1/2", " -y", " z+1/2"], - ["x", " y+1/2", " z+1/2"], - ["-x+1/2", " -y+1/2", " -z"], - ["-x", " -y+1/2", " z+1/2"], - ["x", " -y+1/2", " -z+1/2"], - ["-x", " y+1/2", " -z+1/2"], - ["x+1/2", " y+1/2", " -z"], - ["-x+1/2", " y+1/2", " z"], - ["x+1/2", " -y+1/2", " z"], - ], - "-A 2ac 2c": [ - ["x", " y", " z"], - ["-x+1/2", " -y", " z+1/2"], - ["x", " -y", " -z+1/2"], - ["-x+1/2", " y", " -z"], - ["-x", " -y", " -z"], - ["x+1/2", " y", " -z+1/2"], - ["-x", " y", " z+1/2"], - ["x+1/2", " -y", " z"], - ["x", " y+1/2", " z+1/2"], - ["-x+1/2", " -y+1/2", " z"], - ["x", " -y+1/2", " -z"], - ["-x+1/2", " y+1/2", " -z+1/2"], - ["-x", " -y+1/2", " -z+1/2"], - ["x+1/2", " y+1/2", " -z"], - ["-x", " y+1/2", " z"], - ["x+1/2", " -y+1/2", " z+1/2"], - ], - "B 2 2 -1bc": [ - ["x", " y", " z"], - ["-x", " -y+1/2", " -z+1/2"], - ["-x", " -y", " z"], - ["x", " -y", " -z"], - ["-x", " y", " -z"], - ["x", " y+1/2", " -z+1/2"], - ["-x", " y+1/2", " z+1/2"], - ["x", " -y+1/2", " z+1/2"], - ["x+1/2", " y", " z+1/2"], - ["-x+1/2", " -y+1/2", " -z"], - ["-x+1/2", " -y", " z+1/2"], - ["x+1/2", " -y", " -z+1/2"], - ["-x+1/2", " y", " -z+1/2"], - ["x+1/2", " y+1/2", " -z"], - ["-x+1/2", " y+1/2", " z"], - ["x+1/2", " -y+1/2", " z"], - ], - "-B 2bc 2b": [ - ["x", " y", " z"], - ["-x", " -y+1/2", " z+1/2"], - ["x", " -y+1/2", " -z"], - ["-x", " y", " -z+1/2"], - ["-x", " -y", " -z"], - ["x", " y+1/2", " -z+1/2"], - ["-x", " y+1/2", " z"], - ["x", " -y", " z+1/2"], - ["x+1/2", " y", " z+1/2"], - ["-x+1/2", " -y+1/2", " z"], - ["x+1/2", " -y+1/2", " -z+1/2"], - ["-x+1/2", " y", " -z"], - ["-x+1/2", " -y", " -z+1/2"], - ["x+1/2", " y+1/2", " -z"], - ["-x+1/2", " y+1/2", " z+1/2"], - ["x+1/2", " -y", " z"], - ], - "B 2 2 -1bc": [ - ["x", " y", " z"], - ["-x", " -y+1/2", " -z+1/2"], - ["-x", " -y", " z"], - ["x", " -y", " -z"], - ["-x", " y", " -z"], - ["x", " y+1/2", " -z+1/2"], - ["-x", " y+1/2", " z+1/2"], - ["x", " -y+1/2", " z+1/2"], - ["x+1/2", " y", " z+1/2"], - ["-x+1/2", " -y+1/2", " -z"], - ["-x+1/2", " -y", " z+1/2"], - ["x+1/2", " -y", " -z+1/2"], - ["-x+1/2", " y", " -z+1/2"], - ["x+1/2", " y+1/2", " -z"], - ["-x+1/2", " y+1/2", " z"], - ["x+1/2", " -y+1/2", " z"], - ], - "-B 2b 2bc": [ - ["x", " y", " z"], - ["-x", " -y+1/2", " z"], - ["x", " -y+1/2", " -z+1/2"], - ["-x", " y", " -z+1/2"], - ["-x", " -y", " -z"], - ["x", " y+1/2", " -z"], - ["-x", " y+1/2", " z+1/2"], - ["x", " -y", " z+1/2"], - ["x+1/2", " y", " z+1/2"], - ["-x+1/2", " -y+1/2", " z+1/2"], - ["x+1/2", " -y+1/2", " -z"], - ["-x+1/2", " y", " -z"], - ["-x+1/2", " -y", " -z+1/2"], - ["x+1/2", " y+1/2", " -z+1/2"], - ["-x+1/2", " y+1/2", " z"], - ["x+1/2", " -y", " z"], - ], - "-F 2 2": [ - ["x", " y", " z"], - ["-x", " -y", " z"], - ["x", " -y", " -z"], - ["-x", " y", " -z"], - ["-x", " -y", " -z"], - ["x", " y", " -z"], - ["-x", " y", " z"], - ["x", " -y", " z"], - ["x", " y+1/2", " z+1/2"], - ["-x", " -y+1/2", " z+1/2"], - ["x", " -y+1/2", " -z+1/2"], - ["-x", " y+1/2", " -z+1/2"], - ["-x", " -y+1/2", " -z+1/2"], - ["x", " y+1/2", " -z+1/2"], - ["-x", " y+1/2", " z+1/2"], - ["x", " -y+1/2", " z+1/2"], - ["x+1/2", " y", " z+1/2"], - ["-x+1/2", " -y", " z+1/2"], - ["x+1/2", " -y", " -z+1/2"], - ["-x+1/2", " y", " -z+1/2"], - ["-x+1/2", " -y", " -z+1/2"], - ["x+1/2", " y", " -z+1/2"], - ["-x+1/2", " y", " z+1/2"], - ["x+1/2", " -y", " z+1/2"], - ["x+1/2", " y+1/2", " z"], - ["-x+1/2", " -y+1/2", " z"], - ["x+1/2", " -y+1/2", " -z"], - ["-x+1/2", " y+1/2", " -z"], - ["-x+1/2", " -y+1/2", " -z"], - ["x+1/2", " y+1/2", " -z"], - ["-x+1/2", " y+1/2", " z"], - ["x+1/2", " -y+1/2", " z"], - ], - "F 2 2 -1d": [ - ["x", " y", " z"], - ["-x+1/4", " -y+1/4", " -z+1/4"], - ["-x", " -y", " z"], - ["x", " -y", " -z"], - ["-x", " y", " -z"], - ["x+1/4", " y+1/4", " -z+1/4"], - ["-x+1/4", " y+1/4", " z+1/4"], - ["x+1/4", " -y+1/4", " z+1/4"], - ["x", " y+1/2", " z+1/2"], - ["-x+1/4", " -y-1/4", " -z-1/4"], - ["-x", " -y+1/2", " z+1/2"], - ["x", " -y+1/2", " -z+1/2"], - ["-x", " y+1/2", " -z+1/2"], - ["x+1/4", " y-1/4", " -z-1/4"], - ["-x+1/4", " y-1/4", " z-1/4"], - ["x+1/4", " -y-1/4", " z-1/4"], - ["x+1/2", " y", " z+1/2"], - ["-x-1/4", " -y+1/4", " -z-1/4"], - ["-x+1/2", " -y", " z+1/2"], - ["x+1/2", " -y", " -z+1/2"], - ["-x+1/2", " y", " -z+1/2"], - ["x-1/4", " y+1/4", " -z-1/4"], - ["-x-1/4", " y+1/4", " z-1/4"], - ["x-1/4", " -y+1/4", " z-1/4"], - ["x+1/2", " y+1/2", " z"], - ["-x-1/4", " -y-1/4", " -z+1/4"], - ["-x+1/2", " -y+1/2", " z"], - ["x+1/2", " -y+1/2", " -z"], - ["-x+1/2", " y+1/2", " -z"], - ["x-1/4", " y-1/4", " -z+1/4"], - ["-x-1/4", " y-1/4", " z+1/4"], - ["x-1/4", " -y-1/4", " z+1/4"], - ], - "-F 2uv 2vw": [ - ["x", " y", " z"], - ["-x+1/4", " -y+1/4", " z"], - ["x", " -y+1/4", " -z+1/4"], - ["-x+1/4", " y", " -z+1/4"], - ["-x", " -y", " -z"], - ["x-1/4", " y-1/4", " -z"], - ["-x", " y-1/4", " z-1/4"], - ["x-1/4", " -y", " z-1/4"], - ["x", " y+1/2", " z+1/2"], - ["-x+1/4", " -y-1/4", " z+1/2"], - ["x", " -y-1/4", " -z-1/4"], - ["-x+1/4", " y+1/2", " -z-1/4"], - ["-x", " -y+1/2", " -z+1/2"], - ["x-1/4", " y+1/4", " -z+1/2"], - ["-x", " y+1/4", " z+1/4"], - ["x-1/4", " -y+1/2", " z+1/4"], - ["x+1/2", " y", " z+1/2"], - ["-x-1/4", " -y+1/4", " z+1/2"], - ["x+1/2", " -y+1/4", " -z-1/4"], - ["-x-1/4", " y", " -z-1/4"], - ["-x+1/2", " -y", " -z+1/2"], - ["x+1/4", " y-1/4", " -z+1/2"], - ["-x+1/2", " y-1/4", " z+1/4"], - ["x+1/4", " -y", " z+1/4"], - ["x+1/2", " y+1/2", " z"], - ["-x-1/4", " -y-1/4", " z"], - ["x+1/2", " -y-1/4", " -z+1/4"], - ["-x-1/4", " y+1/2", " -z+1/4"], - ["-x+1/2", " -y+1/2", " -z"], - ["x+1/4", " y+1/4", " -z"], - ["-x+1/2", " y+1/4", " z-1/4"], - ["x+1/4", " -y+1/2", " z-1/4"], - ], - "-I 2 2": [ - ["x", " y", " z"], - ["-x", " -y", " z"], - ["x", " -y", " -z"], - ["-x", " y", " -z"], - ["-x", " -y", " -z"], - ["x", " y", " -z"], - ["-x", " y", " z"], - ["x", " -y", " z"], - ["x+1/2", " y+1/2", " z+1/2"], - ["-x+1/2", " -y+1/2", " z+1/2"], - ["x+1/2", " -y+1/2", " -z+1/2"], - ["-x+1/2", " y+1/2", " -z+1/2"], - ["-x+1/2", " -y+1/2", " -z+1/2"], - ["x+1/2", " y+1/2", " -z+1/2"], - ["-x+1/2", " y+1/2", " z+1/2"], - ["x+1/2", " -y+1/2", " z+1/2"], - ], - "-I 2 2c": [ - ["x", " y", " z"], - ["-x", " -y", " z"], - ["x", " -y", " -z+1/2"], - ["-x", " y", " -z+1/2"], - ["-x", " -y", " -z"], - ["x", " y", " -z"], - ["-x", " y", " z+1/2"], - ["x", " -y", " z+1/2"], - ["x+1/2", " y+1/2", " z+1/2"], - ["-x+1/2", " -y+1/2", " z+1/2"], - ["x+1/2", " -y+1/2", " -z"], - ["-x+1/2", " y+1/2", " -z"], - ["-x+1/2", " -y+1/2", " -z+1/2"], - ["x+1/2", " y+1/2", " -z+1/2"], - ["-x+1/2", " y+1/2", " z"], - ["x+1/2", " -y+1/2", " z"], - ], - "-I 2a 2": [ - ["x", " y", " z"], - ["-x+1/2", " -y", " z"], - ["x", " -y", " -z"], - ["-x+1/2", " y", " -z"], - ["-x", " -y", " -z"], - ["x+1/2", " y", " -z"], - ["-x", " y", " z"], - ["x+1/2", " -y", " z"], - ["x+1/2", " y+1/2", " z+1/2"], - ["-x", " -y+1/2", " z+1/2"], - ["x+1/2", " -y+1/2", " -z+1/2"], - ["-x", " y+1/2", " -z+1/2"], - ["-x+1/2", " -y+1/2", " -z+1/2"], - ["x", " y+1/2", " -z+1/2"], - ["-x+1/2", " y+1/2", " z+1/2"], - ["x", " -y+1/2", " z+1/2"], - ], - "-I 2b 2b": [ - ["x", " y", " z"], - ["-x", " -y+1/2", " z"], - ["x", " -y+1/2", " -z"], - ["-x", " y", " -z"], - ["-x", " -y", " -z"], - ["x", " y+1/2", " -z"], - ["-x", " y+1/2", " z"], - ["x", " -y", " z"], - ["x+1/2", " y+1/2", " z+1/2"], - ["-x+1/2", " -y", " z+1/2"], - ["x+1/2", " -y", " -z+1/2"], - ["-x+1/2", " y+1/2", " -z+1/2"], - ["-x+1/2", " -y+1/2", " -z+1/2"], - ["x+1/2", " y", " -z+1/2"], - ["-x+1/2", " y", " z+1/2"], - ["x+1/2", " -y+1/2", " z+1/2"], - ], - "-I 2b 2c": [ - ["x", " y", " z"], - ["-x", " -y+1/2", " z"], - ["x", " -y", " -z+1/2"], - ["-x+1/2", " y", " -z"], - ["-x", " -y", " -z"], - ["x", " y+1/2", " -z"], - ["-x", " y", " z+1/2"], - ["x+1/2", " -y", " z"], - ["x+1/2", " y+1/2", " z+1/2"], - ["-x+1/2", " -y", " z+1/2"], - ["x+1/2", " -y+1/2", " -z"], - ["-x", " y+1/2", " -z+1/2"], - ["-x+1/2", " -y+1/2", " -z+1/2"], - ["x+1/2", " y", " -z+1/2"], - ["-x+1/2", " y+1/2", " z"], - ["x", " -y+1/2", " z+1/2"], - ], - "-I 2a 2b": [ - ["x", " y", " z"], - ["-x+1/2", " -y", " z"], - ["x", " -y+1/2", " -z"], - ["-x", " y", " -z+1/2"], - ["-x", " -y", " -z"], - ["x+1/2", " y", " -z"], - ["-x", " y+1/2", " z"], - ["x", " -y", " z+1/2"], - ["x+1/2", " y+1/2", " z+1/2"], - ["-x", " -y+1/2", " z+1/2"], - ["x+1/2", " -y", " -z+1/2"], - ["-x+1/2", " y+1/2", " -z"], - ["-x+1/2", " -y+1/2", " -z+1/2"], - ["x", " y+1/2", " -z+1/2"], - ["-x+1/2", " y", " z+1/2"], - ["x+1/2", " -y+1/2", " z"], - ], - "-I 2b 2": [ - ["x", " y", " z"], - ["-x", " -y+1/2", " z"], - ["x", " -y", " -z"], - ["-x", " y+1/2", " -z"], - ["-x", " -y", " -z"], - ["x", " y+1/2", " -z"], - ["-x", " y", " z"], - ["x", " -y+1/2", " z"], - ["x+1/2", " y+1/2", " z+1/2"], - ["-x+1/2", " -y", " z+1/2"], - ["x+1/2", " -y+1/2", " -z+1/2"], - ["-x+1/2", " y", " -z+1/2"], - ["-x+1/2", " -y+1/2", " -z+1/2"], - ["x+1/2", " y", " -z+1/2"], - ["-x+1/2", " y+1/2", " z+1/2"], - ["x+1/2", " -y", " z+1/2"], - ], - "-I 2a 2a": [ - ["x", " y", " z"], - ["-x+1/2", " -y", " z"], - ["x+1/2", " -y", " -z"], - ["-x", " y", " -z"], - ["-x", " -y", " -z"], - ["x+1/2", " y", " -z"], - ["-x+1/2", " y", " z"], - ["x", " -y", " z"], - ["x+1/2", " y+1/2", " z+1/2"], - ["-x", " -y+1/2", " z+1/2"], - ["x", " -y+1/2", " -z+1/2"], - ["-x+1/2", " y+1/2", " -z+1/2"], - ["-x+1/2", " -y+1/2", " -z+1/2"], - ["x", " y+1/2", " -z+1/2"], - ["-x", " y+1/2", " z+1/2"], - ["x+1/2", " -y+1/2", " z+1/2"], - ], - "-I 2c 2c": [ - ["x", " y", " z"], - ["-x", " -y", " z+1/2"], - ["x", " -y", " -z+1/2"], - ["-x", " y", " -z"], - ["-x", " -y", " -z"], - ["x", " y", " -z+1/2"], - ["-x", " y", " z+1/2"], - ["x", " -y", " z"], - ["x+1/2", " y+1/2", " z+1/2"], - ["-x+1/2", " -y+1/2", " z"], - ["x+1/2", " -y+1/2", " -z"], - ["-x+1/2", " y+1/2", " -z+1/2"], - ["-x+1/2", " -y+1/2", " -z+1/2"], - ["x+1/2", " y+1/2", " -z"], - ["-x+1/2", " y+1/2", " z"], - ["x+1/2", " -y+1/2", " z+1/2"], - ], - "-I 2 2b": [ - ["x", " y", " z"], - ["-x", " -y", " z"], - ["x", " -y+1/2", " -z"], - ["-x", " y+1/2", " -z"], - ["-x", " -y", " -z"], - ["x", " y", " -z"], - ["-x", " y+1/2", " z"], - ["x", " -y+1/2", " z"], - ["x+1/2", " y+1/2", " z+1/2"], - ["-x+1/2", " -y+1/2", " z+1/2"], - ["x+1/2", " -y", " -z+1/2"], - ["-x+1/2", " y", " -z+1/2"], - ["-x+1/2", " -y+1/2", " -z+1/2"], - ["x+1/2", " y+1/2", " -z+1/2"], - ["-x+1/2", " y", " z+1/2"], - ["x+1/2", " -y", " z+1/2"], - ], - "-I 2 2a": [ - ["x", " y", " z"], - ["-x", " -y", " z"], - ["x+1/2", " -y", " -z"], - ["-x+1/2", " y", " -z"], - ["-x", " -y", " -z"], - ["x", " y", " -z"], - ["-x+1/2", " y", " z"], - ["x+1/2", " -y", " z"], - ["x+1/2", " y+1/2", " z+1/2"], - ["-x+1/2", " -y+1/2", " z+1/2"], - ["x", " -y+1/2", " -z+1/2"], - ["-x", " y+1/2", " -z+1/2"], - ["-x+1/2", " -y+1/2", " -z+1/2"], - ["x+1/2", " y+1/2", " -z+1/2"], - ["-x", " y+1/2", " z+1/2"], - ["x", " -y+1/2", " z+1/2"], - ], - "-I 2c 2": [ - ["x", " y", " z"], - ["-x", " -y", " z+1/2"], - ["x", " -y", " -z"], - ["-x", " y", " -z+1/2"], - ["-x", " -y", " -z"], - ["x", " y", " -z+1/2"], - ["-x", " y", " z"], - ["x", " -y", " z+1/2"], - ["x+1/2", " y+1/2", " z+1/2"], - ["-x+1/2", " -y+1/2", " z"], - ["x+1/2", " -y+1/2", " -z+1/2"], - ["-x+1/2", " y+1/2", " -z"], - ["-x+1/2", " -y+1/2", " -z+1/2"], - ["x+1/2", " y+1/2", " -z"], - ["-x+1/2", " y+1/2", " z+1/2"], - ["x+1/2", " -y+1/2", " z"], - ], - "P 4": [ - ["x", " y", " z"], - ["-y", " x", " z"], - ["-x", " -y", " z"], - ["y", " -x", " z"], - ], - "P 4w": [ - ["x", " y", " z"], - ["-y", " x", " z+1/4"], - ["-x", " -y", " z+1/2"], - ["y", " -x", " z-1/4"], - ], - "P 4c": [ - ["x", " y", " z"], - ["-y", " x", " z+1/2"], - ["-x", " -y", " z"], - ["y", " -x", " z+1/2"], - ], - "P 4cw": [ - ["x", " y", " z"], - ["-y", " x", " z-1/4"], - ["-x", " -y", " z+1/2"], - ["y", " -x", " z+1/4"], - ], - "I 4": [ - ["x", " y", " z"], - ["-y", " x", " z"], - ["-x", " -y", " z"], - ["y", " -x", " z"], - ["x+1/2", " y+1/2", " z+1/2"], - ["-y+1/2", " x+1/2", " z+1/2"], - ["-x+1/2", " -y+1/2", " z+1/2"], - ["y+1/2", " -x+1/2", " z+1/2"], - ], - "I 4bw": [ - ["x", " y", " z"], - ["-y", " x+1/2", " z+1/4"], - ["-x", " -y", " z"], - ["y", " -x+1/2", " z+1/4"], - ["x+1/2", " y+1/2", " z+1/2"], - ["-y+1/2", " x", " z-1/4"], - ["-x+1/2", " -y+1/2", " z+1/2"], - ["y+1/2", " -x", " z-1/4"], - ], - "P -4": [ - ["x", " y", " z"], - ["y", " -x", " -z"], - ["-x", " -y", " z"], - ["-y", " x", " -z"], - ], - "I -4": [ - ["x", " y", " z"], - ["y", " -x", " -z"], - ["-x", " -y", " z"], - ["-y", " x", " -z"], - ["x+1/2", " y+1/2", " z+1/2"], - ["y+1/2", " -x+1/2", " -z+1/2"], - ["-x+1/2", " -y+1/2", " z+1/2"], - ["-y+1/2", " x+1/2", " -z+1/2"], - ], - "-P 4": [ - ["x", " y", " z"], - ["-y", " x", " z"], - ["-x", " -y", " z"], - ["y", " -x", " z"], - ["-x", " -y", " -z"], - ["y", " -x", " -z"], - ["x", " y", " -z"], - ["-y", " x", " -z"], - ], - "-P 4c": [ - ["x", " y", " z"], - ["-y", " x", " z+1/2"], - ["-x", " -y", " z"], - ["y", " -x", " z+1/2"], - ["-x", " -y", " -z"], - ["y", " -x", " -z+1/2"], - ["x", " y", " -z"], - ["-y", " x", " -z+1/2"], - ], - "P 4ab -1ab": [ - ["x", " y", " z"], - ["-x+1/2", " -y+1/2", " -z"], - ["-y+1/2", " x+1/2", " z"], - ["-x", " -y", " z"], - ["y+1/2", " -x+1/2", " z"], - ["y", " -x", " -z"], - ["-y", " x", " -z"], - ["x+1/2", " y+1/2", " -z"], - ], - "-P 4a": [ - ["x", " y", " z"], - ["-y+1/2", " x", " z"], - ["-x+1/2", " -y+1/2", " z"], - ["y", " -x+1/2", " z"], - ["-x", " -y", " -z"], - ["y+1/2", " -x", " -z"], - ["x+1/2", " y+1/2", " -z"], - ["-y", " x+1/2", " -z"], - ], - "P 4n -1n": [ - ["x", " y", " z"], - ["-x+1/2", " -y+1/2", " -z+1/2"], - ["-y+1/2", " x+1/2", " z+1/2"], - ["-x", " -y", " z"], - ["y+1/2", " -x+1/2", " z+1/2"], - ["y", " -x", " -z"], - ["-y", " x", " -z"], - ["x+1/2", " y+1/2", " -z+1/2"], - ], - "-P 4bc": [ - ["x", " y", " z"], - ["-y", " x+1/2", " z+1/2"], - ["-x+1/2", " -y+1/2", " z"], - ["y+1/2", " -x", " z+1/2"], - ["-x", " -y", " -z"], - ["y", " -x+1/2", " -z+1/2"], - ["x+1/2", " y+1/2", " -z"], - ["-y+1/2", " x", " -z+1/2"], - ], - "-I 4": [ - ["x", " y", " z"], - ["-y", " x", " z"], - ["-x", " -y", " z"], - ["y", " -x", " z"], - ["-x", " -y", " -z"], - ["y", " -x", " -z"], - ["x", " y", " -z"], - ["-y", " x", " -z"], - ["x+1/2", " y+1/2", " z+1/2"], - ["-y+1/2", " x+1/2", " z+1/2"], - ["-x+1/2", " -y+1/2", " z+1/2"], - ["y+1/2", " -x+1/2", " z+1/2"], - ["-x+1/2", " -y+1/2", " -z+1/2"], - ["y+1/2", " -x+1/2", " -z+1/2"], - ["x+1/2", " y+1/2", " -z+1/2"], - ["-y+1/2", " x+1/2", " -z+1/2"], - ], - "I 4bw -1bw": [ - ["x", " y", " z"], - ["-x", " -y+1/2", " -z+1/4"], - ["-y", " x+1/2", " z+1/4"], - ["-x", " -y", " z"], - ["y", " -x+1/2", " z+1/4"], - ["y", " -x", " -z"], - ["-y", " x", " -z"], - ["x", " y+1/2", " -z+1/4"], - ["x+1/2", " y+1/2", " z+1/2"], - ["-x+1/2", " -y", " -z-1/4"], - ["-y+1/2", " x", " z-1/4"], - ["-x+1/2", " -y+1/2", " z+1/2"], - ["y+1/2", " -x", " z-1/4"], - ["y+1/2", " -x+1/2", " -z+1/2"], - ["-y+1/2", " x+1/2", " -z+1/2"], - ["x+1/2", " y", " -z-1/4"], - ], - "-I 4ad": [ - ["x", " y", " z"], - ["-y-1/4", " x+1/4", " z+1/4"], - ["-x", " -y+1/2", " z"], - ["y+1/4", " -x+1/4", " z+1/4"], - ["-x", " -y", " -z"], - ["y+1/4", " -x-1/4", " -z-1/4"], - ["x", " y+1/2", " -z"], - ["-y-1/4", " x-1/4", " -z-1/4"], - ["x+1/2", " y+1/2", " z+1/2"], - ["-y+1/4", " x-1/4", " z-1/4"], - ["-x+1/2", " -y", " z+1/2"], - ["y-1/4", " -x-1/4", " z-1/4"], - ["-x+1/2", " -y+1/2", " -z+1/2"], - ["y-1/4", " -x+1/4", " -z+1/4"], - ["x+1/2", " y", " -z+1/2"], - ["-y+1/4", " x+1/4", " -z+1/4"], - ], - "P 4 2": [ - ["x", " y", " z"], - ["-y", " x", " z"], - ["-x", " -y", " z"], - ["y", " -x", " z"], - ["x", " -y", " -z"], - ["-x", " y", " -z"], - ["y", " x", " -z"], - ["-y", " -x", " -z"], - ], - "P 4ab 2ab": [ - ["x", " y", " z"], - ["-y+1/2", " x+1/2", " z"], - ["-x", " -y", " z"], - ["y+1/2", " -x+1/2", " z"], - ["x+1/2", " -y+1/2", " -z"], - ["-x+1/2", " y+1/2", " -z"], - ["y", " x", " -z"], - ["-y", " -x", " -z"], - ], - "P 4w 2c": [ - ["x", " y", " z"], - ["-y", " x", " z+1/4"], - ["-x", " -y", " z+1/2"], - ["y", " -x", " z-1/4"], - ["x", " -y", " -z+1/2"], - ["-x", " y", " -z"], - ["y", " x", " -z-1/4"], - ["-y", " -x", " -z+1/4"], - ], - "P 4abw 2nw": [ - ["x", " y", " z"], - ["-y+1/2", " x+1/2", " z+1/4"], - ["-x", " -y", " z+1/2"], - ["y+1/2", " -x+1/2", " z-1/4"], - ["x+1/2", " -y+1/2", " -z-1/4"], - ["-x+1/2", " y+1/2", " -z+1/4"], - ["y", " x", " -z"], - ["-y", " -x", " -z+1/2"], - ], - "P 4c 2": [ - ["x", " y", " z"], - ["-y", " x", " z+1/2"], - ["-x", " -y", " z"], - ["y", " -x", " z+1/2"], - ["x", " -y", " -z"], - ["-x", " y", " -z"], - ["y", " x", " -z+1/2"], - ["-y", " -x", " -z+1/2"], - ], - "P 4n 2n": [ - ["x", " y", " z"], - ["-y+1/2", " x+1/2", " z+1/2"], - ["-x", " -y", " z"], - ["y+1/2", " -x+1/2", " z+1/2"], - ["x+1/2", " -y+1/2", " -z+1/2"], - ["-x+1/2", " y+1/2", " -z+1/2"], - ["y", " x", " -z"], - ["-y", " -x", " -z"], - ], - "P 4cw 2c": [ - ["x", " y", " z"], - ["-y", " x", " z-1/4"], - ["-x", " -y", " z+1/2"], - ["y", " -x", " z+1/4"], - ["x", " -y", " -z+1/2"], - ["-x", " y", " -z"], - ["y", " x", " -z+1/4"], - ["-y", " -x", " -z-1/4"], - ], - "P 4nw 2abw": [ - ["x", " y", " z"], - ["-y+1/2", " x+1/2", " z-1/4"], - ["-x", " -y", " z+1/2"], - ["y+1/2", " -x+1/2", " z+1/4"], - ["x+1/2", " -y+1/2", " -z+1/4"], - ["-x+1/2", " y+1/2", " -z-1/4"], - ["y", " x", " -z"], - ["-y", " -x", " -z+1/2"], - ], - "I 4 2": [ - ["x", " y", " z"], - ["-y", " x", " z"], - ["-x", " -y", " z"], - ["y", " -x", " z"], - ["x", " -y", " -z"], - ["-x", " y", " -z"], - ["y", " x", " -z"], - ["-y", " -x", " -z"], - ["x+1/2", " y+1/2", " z+1/2"], - ["-y+1/2", " x+1/2", " z+1/2"], - ["-x+1/2", " -y+1/2", " z+1/2"], - ["y+1/2", " -x+1/2", " z+1/2"], - ["x+1/2", " -y+1/2", " -z+1/2"], - ["-x+1/2", " y+1/2", " -z+1/2"], - ["y+1/2", " x+1/2", " -z+1/2"], - ["-y+1/2", " -x+1/2", " -z+1/2"], - ], - "I 4bw 2bw": [ - ["x", " y", " z"], - ["-y", " x+1/2", " z+1/4"], - ["-x", " -y", " z"], - ["y", " -x+1/2", " z+1/4"], - ["x", " -y+1/2", " -z+1/4"], - ["-x", " y+1/2", " -z+1/4"], - ["y", " x", " -z"], - ["-y", " -x", " -z"], - ["x+1/2", " y+1/2", " z+1/2"], - ["-y+1/2", " x", " z-1/4"], - ["-x+1/2", " -y+1/2", " z+1/2"], - ["y+1/2", " -x", " z-1/4"], - ["x+1/2", " -y", " -z-1/4"], - ["-x+1/2", " y", " -z-1/4"], - ["y+1/2", " x+1/2", " -z+1/2"], - ["-y+1/2", " -x+1/2", " -z+1/2"], - ], - "P 4 -2": [ - ["x", " y", " z"], - ["-y", " x", " z"], - ["-x", " -y", " z"], - ["y", " -x", " z"], - ["-x", " y", " z"], - ["x", " -y", " z"], - ["-y", " -x", " z"], - ["y", " x", " z"], - ], - "P 4 -2ab": [ - ["x", " y", " z"], - ["-y", " x", " z"], - ["-x", " -y", " z"], - ["y", " -x", " z"], - ["-x+1/2", " y+1/2", " z"], - ["x+1/2", " -y+1/2", " z"], - ["-y+1/2", " -x+1/2", " z"], - ["y+1/2", " x+1/2", " z"], - ], - "P 4c -2c": [ - ["x", " y", " z"], - ["-y", " x", " z+1/2"], - ["-x", " -y", " z"], - ["y", " -x", " z+1/2"], - ["-x", " y", " z+1/2"], - ["x", " -y", " z+1/2"], - ["-y", " -x", " z"], - ["y", " x", " z"], - ], - "P 4n -2n": [ - ["x", " y", " z"], - ["-y+1/2", " x+1/2", " z+1/2"], - ["-x", " -y", " z"], - ["y+1/2", " -x+1/2", " z+1/2"], - ["-x+1/2", " y+1/2", " z+1/2"], - ["x+1/2", " -y+1/2", " z+1/2"], - ["-y", " -x", " z"], - ["y", " x", " z"], - ], - "P 4 -2c": [ - ["x", " y", " z"], - ["-y", " x", " z"], - ["-x", " -y", " z"], - ["y", " -x", " z"], - ["-x", " y", " z+1/2"], - ["x", " -y", " z+1/2"], - ["-y", " -x", " z+1/2"], - ["y", " x", " z+1/2"], - ], - "P 4 -2n": [ - ["x", " y", " z"], - ["-y", " x", " z"], - ["-x", " -y", " z"], - ["y", " -x", " z"], - ["-x+1/2", " y+1/2", " z+1/2"], - ["x+1/2", " -y+1/2", " z+1/2"], - ["-y+1/2", " -x+1/2", " z+1/2"], - ["y+1/2", " x+1/2", " z+1/2"], - ], - "P 4c -2": [ - ["x", " y", " z"], - ["-y", " x", " z+1/2"], - ["-x", " -y", " z"], - ["y", " -x", " z+1/2"], - ["-x", " y", " z"], - ["x", " -y", " z"], - ["-y", " -x", " z+1/2"], - ["y", " x", " z+1/2"], - ], - "P 4c -2ab": [ - ["x", " y", " z"], - ["-y", " x", " z+1/2"], - ["-x", " -y", " z"], - ["y", " -x", " z+1/2"], - ["-x+1/2", " y+1/2", " z"], - ["x+1/2", " -y+1/2", " z"], - ["-y+1/2", " -x+1/2", " z+1/2"], - ["y+1/2", " x+1/2", " z+1/2"], - ], - "I 4 -2": [ - ["x", " y", " z"], - ["-y", " x", " z"], - ["-x", " -y", " z"], - ["y", " -x", " z"], - ["-x", " y", " z"], - ["x", " -y", " z"], - ["-y", " -x", " z"], - ["y", " x", " z"], - ["x+1/2", " y+1/2", " z+1/2"], - ["-y+1/2", " x+1/2", " z+1/2"], - ["-x+1/2", " -y+1/2", " z+1/2"], - ["y+1/2", " -x+1/2", " z+1/2"], - ["-x+1/2", " y+1/2", " z+1/2"], - ["x+1/2", " -y+1/2", " z+1/2"], - ["-y+1/2", " -x+1/2", " z+1/2"], - ["y+1/2", " x+1/2", " z+1/2"], - ], - "I 4 -2c": [ - ["x", " y", " z"], - ["-y", " x", " z"], - ["-x", " -y", " z"], - ["y", " -x", " z"], - ["-x", " y", " z+1/2"], - ["x", " -y", " z+1/2"], - ["-y", " -x", " z+1/2"], - ["y", " x", " z+1/2"], - ["x+1/2", " y+1/2", " z+1/2"], - ["-y+1/2", " x+1/2", " z+1/2"], - ["-x+1/2", " -y+1/2", " z+1/2"], - ["y+1/2", " -x+1/2", " z+1/2"], - ["-x+1/2", " y+1/2", " z"], - ["x+1/2", " -y+1/2", " z"], - ["-y+1/2", " -x+1/2", " z"], - ["y+1/2", " x+1/2", " z"], - ], - "I 4bw -2": [ - ["x", " y", " z"], - ["-y", " x+1/2", " z+1/4"], - ["-x", " -y", " z"], - ["y", " -x+1/2", " z+1/4"], - ["-x", " y", " z"], - ["x", " -y", " z"], - ["-y", " -x+1/2", " z+1/4"], - ["y", " x+1/2", " z+1/4"], - ["x+1/2", " y+1/2", " z+1/2"], - ["-y+1/2", " x", " z-1/4"], - ["-x+1/2", " -y+1/2", " z+1/2"], - ["y+1/2", " -x", " z-1/4"], - ["-x+1/2", " y+1/2", " z+1/2"], - ["x+1/2", " -y+1/2", " z+1/2"], - ["-y+1/2", " -x", " z-1/4"], - ["y+1/2", " x", " z-1/4"], - ], - "I 4bw -2c": [ - ["x", " y", " z"], - ["-y", " x+1/2", " z+1/4"], - ["-x", " -y", " z"], - ["y", " -x+1/2", " z+1/4"], - ["-x", " y", " z+1/2"], - ["x", " -y", " z+1/2"], - ["-y+1/2", " -x", " z+1/4"], - ["y+1/2", " x", " z+1/4"], - ["x+1/2", " y+1/2", " z+1/2"], - ["-y+1/2", " x", " z-1/4"], - ["-x+1/2", " -y+1/2", " z+1/2"], - ["y+1/2", " -x", " z-1/4"], - ["-x+1/2", " y+1/2", " z"], - ["x+1/2", " -y+1/2", " z"], - ["-y", " -x+1/2", " z-1/4"], - ["y", " x+1/2", " z-1/4"], - ], - "P -4 2": [ - ["x", " y", " z"], - ["y", " -x", " -z"], - ["-x", " -y", " z"], - ["-y", " x", " -z"], - ["x", " -y", " -z"], - ["-x", " y", " -z"], - ["-y", " -x", " z"], - ["y", " x", " z"], - ], - "P -4 2c": [ - ["x", " y", " z"], - ["y", " -x", " -z"], - ["-x", " -y", " z"], - ["-y", " x", " -z"], - ["x", " -y", " -z+1/2"], - ["-x", " y", " -z+1/2"], - ["-y", " -x", " z+1/2"], - ["y", " x", " z+1/2"], - ], - "P -4 2ab": [ - ["x", " y", " z"], - ["y", " -x", " -z"], - ["-x", " -y", " z"], - ["-y", " x", " -z"], - ["x+1/2", " -y+1/2", " -z"], - ["-x+1/2", " y+1/2", " -z"], - ["-y+1/2", " -x+1/2", " z"], - ["y+1/2", " x+1/2", " z"], - ], - "P -4 2n": [ - ["x", " y", " z"], - ["y", " -x", " -z"], - ["-x", " -y", " z"], - ["-y", " x", " -z"], - ["x+1/2", " -y+1/2", " -z+1/2"], - ["-x+1/2", " y+1/2", " -z+1/2"], - ["-y+1/2", " -x+1/2", " z+1/2"], - ["y+1/2", " x+1/2", " z+1/2"], - ], - "P -4 -2": [ - ["x", " y", " z"], - ["y", " -x", " -z"], - ["-x", " -y", " z"], - ["-y", " x", " -z"], - ["y", " x", " -z"], - ["-y", " -x", " -z"], - ["-x", " y", " z"], - ["x", " -y", " z"], - ], - "P -4 -2c": [ - ["x", " y", " z"], - ["y", " -x", " -z"], - ["-x", " -y", " z"], - ["-y", " x", " -z"], - ["y", " x", " -z+1/2"], - ["-y", " -x", " -z+1/2"], - ["-x", " y", " z+1/2"], - ["x", " -y", " z+1/2"], - ], - "P -4 -2ab": [ - ["x", " y", " z"], - ["y", " -x", " -z"], - ["-x", " -y", " z"], - ["-y", " x", " -z"], - ["y+1/2", " x+1/2", " -z"], - ["-y+1/2", " -x+1/2", " -z"], - ["-x+1/2", " y+1/2", " z"], - ["x+1/2", " -y+1/2", " z"], - ], - "P -4 -2n": [ - ["x", " y", " z"], - ["y", " -x", " -z"], - ["-x", " -y", " z"], - ["-y", " x", " -z"], - ["y+1/2", " x+1/2", " -z+1/2"], - ["-y+1/2", " -x+1/2", " -z+1/2"], - ["-x+1/2", " y+1/2", " z+1/2"], - ["x+1/2", " -y+1/2", " z+1/2"], - ], - "I -4 -2": [ - ["x", " y", " z"], - ["y", " -x", " -z"], - ["-x", " -y", " z"], - ["-y", " x", " -z"], - ["y", " x", " -z"], - ["-y", " -x", " -z"], - ["-x", " y", " z"], - ["x", " -y", " z"], - ["x+1/2", " y+1/2", " z+1/2"], - ["y+1/2", " -x+1/2", " -z+1/2"], - ["-x+1/2", " -y+1/2", " z+1/2"], - ["-y+1/2", " x+1/2", " -z+1/2"], - ["y+1/2", " x+1/2", " -z+1/2"], - ["-y+1/2", " -x+1/2", " -z+1/2"], - ["-x+1/2", " y+1/2", " z+1/2"], - ["x+1/2", " -y+1/2", " z+1/2"], - ], - "I -4 -2c": [ - ["x", " y", " z"], - ["y", " -x", " -z"], - ["-x", " -y", " z"], - ["-y", " x", " -z"], - ["y", " x", " -z+1/2"], - ["-y", " -x", " -z+1/2"], - ["-x", " y", " z+1/2"], - ["x", " -y", " z+1/2"], - ["x+1/2", " y+1/2", " z+1/2"], - ["y+1/2", " -x+1/2", " -z+1/2"], - ["-x+1/2", " -y+1/2", " z+1/2"], - ["-y+1/2", " x+1/2", " -z+1/2"], - ["y+1/2", " x+1/2", " -z"], - ["-y+1/2", " -x+1/2", " -z"], - ["-x+1/2", " y+1/2", " z"], - ["x+1/2", " -y+1/2", " z"], - ], - "I -4 2": [ - ["x", " y", " z"], - ["y", " -x", " -z"], - ["-x", " -y", " z"], - ["-y", " x", " -z"], - ["x", " -y", " -z"], - ["-x", " y", " -z"], - ["-y", " -x", " z"], - ["y", " x", " z"], - ["x+1/2", " y+1/2", " z+1/2"], - ["y+1/2", " -x+1/2", " -z+1/2"], - ["-x+1/2", " -y+1/2", " z+1/2"], - ["-y+1/2", " x+1/2", " -z+1/2"], - ["x+1/2", " -y+1/2", " -z+1/2"], - ["-x+1/2", " y+1/2", " -z+1/2"], - ["-y+1/2", " -x+1/2", " z+1/2"], - ["y+1/2", " x+1/2", " z+1/2"], - ], - "I -4 2bw": [ - ["x", " y", " z"], - ["y", " -x", " -z"], - ["-x", " -y", " z"], - ["-y", " x", " -z"], - ["x", " -y+1/2", " -z+1/4"], - ["-x", " y+1/2", " -z+1/4"], - ["-y", " -x+1/2", " z+1/4"], - ["y", " x+1/2", " z+1/4"], - ["x+1/2", " y+1/2", " z+1/2"], - ["y+1/2", " -x+1/2", " -z+1/2"], - ["-x+1/2", " -y+1/2", " z+1/2"], - ["-y+1/2", " x+1/2", " -z+1/2"], - ["x+1/2", " -y", " -z-1/4"], - ["-x+1/2", " y", " -z-1/4"], - ["-y+1/2", " -x", " z-1/4"], - ["y+1/2", " x", " z-1/4"], - ], - "-P 4 2": [ - ["x", " y", " z"], - ["-y", " x", " z"], - ["-x", " -y", " z"], - ["y", " -x", " z"], - ["x", " -y", " -z"], - ["-x", " y", " -z"], - ["y", " x", " -z"], - ["-y", " -x", " -z"], - ["-x", " -y", " -z"], - ["y", " -x", " -z"], - ["x", " y", " -z"], - ["-y", " x", " -z"], - ["-x", " y", " z"], - ["x", " -y", " z"], - ["-y", " -x", " z"], - ["y", " x", " z"], - ], - "-P 4 2c": [ - ["x", " y", " z"], - ["-y", " x", " z"], - ["-x", " -y", " z"], - ["y", " -x", " z"], - ["x", " -y", " -z+1/2"], - ["-x", " y", " -z+1/2"], - ["y", " x", " -z+1/2"], - ["-y", " -x", " -z+1/2"], - ["-x", " -y", " -z"], - ["y", " -x", " -z"], - ["x", " y", " -z"], - ["-y", " x", " -z"], - ["-x", " y", " z+1/2"], - ["x", " -y", " z+1/2"], - ["-y", " -x", " z+1/2"], - ["y", " x", " z+1/2"], - ], - "P 4 2 -1ab": [ - ["x", " y", " z"], - ["-x+1/2", " -y+1/2", " -z"], - ["-y", " x", " z"], - ["-x", " -y", " z"], - ["y", " -x", " z"], - ["y+1/2", " -x+1/2", " -z"], - ["-y+1/2", " x+1/2", " -z"], - ["x", " -y", " -z"], - ["-x", " y", " -z"], - ["y", " x", " -z"], - ["-y", " -x", " -z"], - ["x+1/2", " y+1/2", " -z"], - ["-x+1/2", " y+1/2", " z"], - ["x+1/2", " -y+1/2", " z"], - ["-y+1/2", " -x+1/2", " z"], - ["y+1/2", " x+1/2", " z"], - ], - "-P 4a 2b": [ - ["x", " y", " z"], - ["-y+1/2", " x", " z"], - ["-x+1/2", " -y+1/2", " z"], - ["y", " -x+1/2", " z"], - ["x", " -y+1/2", " -z"], - ["-x+1/2", " y", " -z"], - ["y", " x", " -z"], - ["-y+1/2", " -x+1/2", " -z"], - ["-x", " -y", " -z"], - ["y+1/2", " -x", " -z"], - ["x+1/2", " y+1/2", " -z"], - ["-y", " x+1/2", " -z"], - ["-x", " y+1/2", " z"], - ["x+1/2", " -y", " z"], - ["-y", " -x", " z"], - ["y+1/2", " x+1/2", " z"], - ], - "P 4 2 -1n": [ - ["x", " y", " z"], - ["-x+1/2", " -y+1/2", " -z+1/2"], - ["-y", " x", " z"], - ["-x", " -y", " z"], - ["y", " -x", " z"], - ["y+1/2", " -x+1/2", " -z+1/2"], - ["-y+1/2", " x+1/2", " -z+1/2"], - ["x", " -y", " -z"], - ["-x", " y", " -z"], - ["y", " x", " -z"], - ["-y", " -x", " -z"], - ["x+1/2", " y+1/2", " -z+1/2"], - ["-x+1/2", " y+1/2", " z+1/2"], - ["x+1/2", " -y+1/2", " z+1/2"], - ["-y+1/2", " -x+1/2", " z+1/2"], - ["y+1/2", " x+1/2", " z+1/2"], - ], - "-P 4a 2bc": [ - ["x", " y", " z"], - ["-y+1/2", " x", " z"], - ["-x+1/2", " -y+1/2", " z"], - ["y", " -x+1/2", " z"], - ["x", " -y+1/2", " -z+1/2"], - ["-x+1/2", " y", " -z+1/2"], - ["y", " x", " -z+1/2"], - ["-y+1/2", " -x+1/2", " -z+1/2"], - ["-x", " -y", " -z"], - ["y+1/2", " -x", " -z"], - ["x+1/2", " y+1/2", " -z"], - ["-y", " x+1/2", " -z"], - ["-x", " y+1/2", " z+1/2"], - ["x+1/2", " -y", " z+1/2"], - ["-y", " -x", " z+1/2"], - ["y+1/2", " x+1/2", " z+1/2"], - ], - "-P 4 2ab": [ - ["x", " y", " z"], - ["-y", " x", " z"], - ["-x", " -y", " z"], - ["y", " -x", " z"], - ["x+1/2", " -y+1/2", " -z"], - ["-x+1/2", " y+1/2", " -z"], - ["y+1/2", " x+1/2", " -z"], - ["-y+1/2", " -x+1/2", " -z"], - ["-x", " -y", " -z"], - ["y", " -x", " -z"], - ["x", " y", " -z"], - ["-y", " x", " -z"], - ["-x+1/2", " y+1/2", " z"], - ["x+1/2", " -y+1/2", " z"], - ["-y+1/2", " -x+1/2", " z"], - ["y+1/2", " x+1/2", " z"], - ], - "-P 4 2n": [ - ["x", " y", " z"], - ["-y", " x", " z"], - ["-x", " -y", " z"], - ["y", " -x", " z"], - ["x+1/2", " -y+1/2", " -z+1/2"], - ["-x+1/2", " y+1/2", " -z+1/2"], - ["y+1/2", " x+1/2", " -z+1/2"], - ["-y+1/2", " -x+1/2", " -z+1/2"], - ["-x", " -y", " -z"], - ["y", " -x", " -z"], - ["x", " y", " -z"], - ["-y", " x", " -z"], - ["-x+1/2", " y+1/2", " z+1/2"], - ["x+1/2", " -y+1/2", " z+1/2"], - ["-y+1/2", " -x+1/2", " z+1/2"], - ["y+1/2", " x+1/2", " z+1/2"], - ], - "P 4ab 2ab -1ab": [ - ["x", " y", " z"], - ["-x+1/2", " -y+1/2", " -z"], - ["-y+1/2", " x+1/2", " z"], - ["-x", " -y", " z"], - ["y+1/2", " -x+1/2", " z"], - ["y", " -x", " -z"], - ["-y", " x", " -z"], - ["x+1/2", " -y+1/2", " -z"], - ["-x+1/2", " y+1/2", " -z"], - ["y", " x", " -z"], - ["-y", " -x", " -z"], - ["x+1/2", " y+1/2", " -z"], - ["-x", " y", " z"], - ["x", " -y", " z"], - ["-y+1/2", " -x+1/2", " z"], - ["y+1/2", " x+1/2", " z"], - ], - "-P 4a 2a": [ - ["x", " y", " z"], - ["-y+1/2", " x", " z"], - ["-x+1/2", " -y+1/2", " z"], - ["y", " -x+1/2", " z"], - ["x+1/2", " -y", " -z"], - ["-x", " y+1/2", " -z"], - ["y+1/2", " x+1/2", " -z"], - ["-y", " -x", " -z"], - ["-x", " -y", " -z"], - ["y+1/2", " -x", " -z"], - ["x+1/2", " y+1/2", " -z"], - ["-y", " x+1/2", " -z"], - ["-x+1/2", " y", " z"], - ["x", " -y+1/2", " z"], - ["-y+1/2", " -x+1/2", " z"], - ["y", " x", " z"], - ], - "P 4ab 2n -1ab": [ - ["x", " y", " z"], - ["-x+1/2", " -y+1/2", " -z"], - ["-y+1/2", " x+1/2", " z"], - ["-x", " -y", " z"], - ["y+1/2", " -x+1/2", " z"], - ["y", " -x", " -z"], - ["-y", " x", " -z"], - ["x+1/2", " -y+1/2", " -z+1/2"], - ["-x+1/2", " y+1/2", " -z+1/2"], - ["y", " x", " -z+1/2"], - ["-y", " -x", " -z+1/2"], - ["x+1/2", " y+1/2", " -z"], - ["-x", " y", " z+1/2"], - ["x", " -y", " z+1/2"], - ["-y+1/2", " -x+1/2", " z+1/2"], - ["y+1/2", " x+1/2", " z+1/2"], - ], - "-P 4a 2ac": [ - ["x", " y", " z"], - ["-y+1/2", " x", " z"], - ["-x+1/2", " -y+1/2", " z"], - ["y", " -x+1/2", " z"], - ["x+1/2", " -y", " -z+1/2"], - ["-x", " y+1/2", " -z+1/2"], - ["y+1/2", " x+1/2", " -z+1/2"], - ["-y", " -x", " -z+1/2"], - ["-x", " -y", " -z"], - ["y+1/2", " -x", " -z"], - ["x+1/2", " y+1/2", " -z"], - ["-y", " x+1/2", " -z"], - ["-x+1/2", " y", " z+1/2"], - ["x", " -y+1/2", " z+1/2"], - ["-y+1/2", " -x+1/2", " z+1/2"], - ["y", " x", " z+1/2"], - ], - "-P 4c 2": [ - ["x", " y", " z"], - ["-y", " x", " z+1/2"], - ["-x", " -y", " z"], - ["y", " -x", " z+1/2"], - ["x", " -y", " -z"], - ["-x", " y", " -z"], - ["y", " x", " -z+1/2"], - ["-y", " -x", " -z+1/2"], - ["-x", " -y", " -z"], - ["y", " -x", " -z+1/2"], - ["x", " y", " -z"], - ["-y", " x", " -z+1/2"], - ["-x", " y", " z"], - ["x", " -y", " z"], - ["-y", " -x", " z+1/2"], - ["y", " x", " z+1/2"], - ], - "-P 4c 2c": [ - ["x", " y", " z"], - ["-y", " x", " z+1/2"], - ["-x", " -y", " z"], - ["y", " -x", " z+1/2"], - ["x", " -y", " -z+1/2"], - ["-x", " y", " -z+1/2"], - ["y", " x", " -z"], - ["-y", " -x", " -z"], - ["-x", " -y", " -z"], - ["y", " -x", " -z+1/2"], - ["x", " y", " -z"], - ["-y", " x", " -z+1/2"], - ["-x", " y", " z+1/2"], - ["x", " -y", " z+1/2"], - ["-y", " -x", " z"], - ["y", " x", " z"], - ], - "P 4n 2c -1n": [ - ["x", " y", " z"], - ["-x+1/2", " -y+1/2", " -z+1/2"], - ["-y+1/2", " x+1/2", " z+1/2"], - ["-x", " -y", " z"], - ["y+1/2", " -x+1/2", " z+1/2"], - ["y", " -x", " -z"], - ["-y", " x", " -z"], - ["x", " -y", " -z+1/2"], - ["-x", " y", " -z+1/2"], - ["y+1/2", " x+1/2", " -z"], - ["-y+1/2", " -x+1/2", " -z"], - ["x+1/2", " y+1/2", " -z+1/2"], - ["-x+1/2", " y+1/2", " z"], - ["x+1/2", " -y+1/2", " z"], - ["-y", " -x", " z+1/2"], - ["y", " x", " z+1/2"], - ], - "-P 4ac 2b": [ - ["x", " y", " z"], - ["-y+1/2", " x", " z+1/2"], - ["-x+1/2", " -y+1/2", " z"], - ["y", " -x+1/2", " z+1/2"], - ["x", " -y+1/2", " -z"], - ["-x+1/2", " y", " -z"], - ["y", " x", " -z+1/2"], - ["-y+1/2", " -x+1/2", " -z+1/2"], - ["-x", " -y", " -z"], - ["y+1/2", " -x", " -z+1/2"], - ["x+1/2", " y+1/2", " -z"], - ["-y", " x+1/2", " -z+1/2"], - ["-x", " y+1/2", " z"], - ["x+1/2", " -y", " z"], - ["-y", " -x", " z+1/2"], - ["y+1/2", " x+1/2", " z+1/2"], - ], - "P 4n 2 -1n": [ - ["x", " y", " z"], - ["-x+1/2", " -y+1/2", " -z+1/2"], - ["-y+1/2", " x+1/2", " z+1/2"], - ["-x", " -y", " z"], - ["y+1/2", " -x+1/2", " z+1/2"], - ["y", " -x", " -z"], - ["-y", " x", " -z"], - ["x", " -y", " -z"], - ["-x", " y", " -z"], - ["y+1/2", " x+1/2", " -z+1/2"], - ["-y+1/2", " -x+1/2", " -z+1/2"], - ["x+1/2", " y+1/2", " -z+1/2"], - ["-x+1/2", " y+1/2", " z+1/2"], - ["x+1/2", " -y+1/2", " z+1/2"], - ["-y", " -x", " z"], - ["y", " x", " z"], - ], - "-P 4ac 2bc": [ - ["x", " y", " z"], - ["-y+1/2", " x", " z+1/2"], - ["-x+1/2", " -y+1/2", " z"], - ["y", " -x+1/2", " z+1/2"], - ["x", " -y+1/2", " -z+1/2"], - ["-x+1/2", " y", " -z+1/2"], - ["y", " x", " -z"], - ["-y+1/2", " -x+1/2", " -z"], - ["-x", " -y", " -z"], - ["y+1/2", " -x", " -z+1/2"], - ["x+1/2", " y+1/2", " -z"], - ["-y", " x+1/2", " -z+1/2"], - ["-x", " y+1/2", " z+1/2"], - ["x+1/2", " -y", " z+1/2"], - ["-y", " -x", " z"], - ["y+1/2", " x+1/2", " z"], - ], - "-P 4c 2ab": [ - ["x", " y", " z"], - ["-y", " x", " z+1/2"], - ["-x", " -y", " z"], - ["y", " -x", " z+1/2"], - ["x+1/2", " -y+1/2", " -z"], - ["-x+1/2", " y+1/2", " -z"], - ["y+1/2", " x+1/2", " -z+1/2"], - ["-y+1/2", " -x+1/2", " -z+1/2"], - ["-x", " -y", " -z"], - ["y", " -x", " -z+1/2"], - ["x", " y", " -z"], - ["-y", " x", " -z+1/2"], - ["-x+1/2", " y+1/2", " z"], - ["x+1/2", " -y+1/2", " z"], - ["-y+1/2", " -x+1/2", " z+1/2"], - ["y+1/2", " x+1/2", " z+1/2"], - ], - "-P 4n 2n": [ - ["x", " y", " z"], - ["-y+1/2", " x+1/2", " z+1/2"], - ["-x", " -y", " z"], - ["y+1/2", " -x+1/2", " z+1/2"], - ["x+1/2", " -y+1/2", " -z+1/2"], - ["-x+1/2", " y+1/2", " -z+1/2"], - ["y", " x", " -z"], - ["-y", " -x", " -z"], - ["-x", " -y", " -z"], - ["y+1/2", " -x+1/2", " -z+1/2"], - ["x", " y", " -z"], - ["-y+1/2", " x+1/2", " -z+1/2"], - ["-x+1/2", " y+1/2", " z+1/2"], - ["x+1/2", " -y+1/2", " z+1/2"], - ["-y", " -x", " z"], - ["y", " x", " z"], - ], - "P 4n 2n -1n": [ - ["x", " y", " z"], - ["-x+1/2", " -y+1/2", " -z+1/2"], - ["-y+1/2", " x+1/2", " z+1/2"], - ["-x", " -y", " z"], - ["y+1/2", " -x+1/2", " z+1/2"], - ["y", " -x", " -z"], - ["-y", " x", " -z"], - ["x+1/2", " -y+1/2", " -z+1/2"], - ["-x+1/2", " y+1/2", " -z+1/2"], - ["y", " x", " -z"], - ["-y", " -x", " -z"], - ["x+1/2", " y+1/2", " -z+1/2"], - ["-x", " y", " z"], - ["x", " -y", " z"], - ["-y+1/2", " -x+1/2", " z+1/2"], - ["y+1/2", " x+1/2", " z+1/2"], - ], - "-P 4ac 2a": [ - ["x", " y", " z"], - ["-y+1/2", " x", " z+1/2"], - ["-x+1/2", " -y+1/2", " z"], - ["y", " -x+1/2", " z+1/2"], - ["x+1/2", " -y", " -z"], - ["-x", " y+1/2", " -z"], - ["y+1/2", " x+1/2", " -z+1/2"], - ["-y", " -x", " -z+1/2"], - ["-x", " -y", " -z"], - ["y+1/2", " -x", " -z+1/2"], - ["x+1/2", " y+1/2", " -z"], - ["-y", " x+1/2", " -z+1/2"], - ["-x+1/2", " y", " z"], - ["x", " -y+1/2", " z"], - ["-y+1/2", " -x+1/2", " z+1/2"], - ["y", " x", " z+1/2"], - ], - "P 4n 2ab -1n": [ - ["x", " y", " z"], - ["-x+1/2", " -y+1/2", " -z+1/2"], - ["-y+1/2", " x+1/2", " z+1/2"], - ["-x", " -y", " z"], - ["y+1/2", " -x+1/2", " z+1/2"], - ["y", " -x", " -z"], - ["-y", " x", " -z"], - ["x+1/2", " -y+1/2", " -z"], - ["-x+1/2", " y+1/2", " -z"], - ["y", " x", " -z+1/2"], - ["-y", " -x", " -z+1/2"], - ["x+1/2", " y+1/2", " -z+1/2"], - ["-x", " y", " z+1/2"], - ["x", " -y", " z+1/2"], - ["-y+1/2", " -x+1/2", " z"], - ["y+1/2", " x+1/2", " z"], - ], - "-P 4ac 2ac": [ - ["x", " y", " z"], - ["-y+1/2", " x", " z+1/2"], - ["-x+1/2", " -y+1/2", " z"], - ["y", " -x+1/2", " z+1/2"], - ["x+1/2", " -y", " -z+1/2"], - ["-x", " y+1/2", " -z+1/2"], - ["y+1/2", " x+1/2", " -z"], - ["-y", " -x", " -z"], - ["-x", " -y", " -z"], - ["y+1/2", " -x", " -z+1/2"], - ["x+1/2", " y+1/2", " -z"], - ["-y", " x+1/2", " -z+1/2"], - ["-x+1/2", " y", " z+1/2"], - ["x", " -y+1/2", " z+1/2"], - ["-y+1/2", " -x+1/2", " z"], - ["y", " x", " z"], - ], - "-I 4 2": [ - ["x", " y", " z"], - ["-y", " x", " z"], - ["-x", " -y", " z"], - ["y", " -x", " z"], - ["x", " -y", " -z"], - ["-x", " y", " -z"], - ["y", " x", " -z"], - ["-y", " -x", " -z"], - ["-x", " -y", " -z"], - ["y", " -x", " -z"], - ["x", " y", " -z"], - ["-y", " x", " -z"], - ["-x", " y", " z"], - ["x", " -y", " z"], - ["-y", " -x", " z"], - ["y", " x", " z"], - ["x+1/2", " y+1/2", " z+1/2"], - ["-y+1/2", " x+1/2", " z+1/2"], - ["-x+1/2", " -y+1/2", " z+1/2"], - ["y+1/2", " -x+1/2", " z+1/2"], - ["x+1/2", " -y+1/2", " -z+1/2"], - ["-x+1/2", " y+1/2", " -z+1/2"], - ["y+1/2", " x+1/2", " -z+1/2"], - ["-y+1/2", " -x+1/2", " -z+1/2"], - ["-x+1/2", " -y+1/2", " -z+1/2"], - ["y+1/2", " -x+1/2", " -z+1/2"], - ["x+1/2", " y+1/2", " -z+1/2"], - ["-y+1/2", " x+1/2", " -z+1/2"], - ["-x+1/2", " y+1/2", " z+1/2"], - ["x+1/2", " -y+1/2", " z+1/2"], - ["-y+1/2", " -x+1/2", " z+1/2"], - ["y+1/2", " x+1/2", " z+1/2"], - ], - "-I 4 2c": [ - ["x", " y", " z"], - ["-y", " x", " z"], - ["-x", " -y", " z"], - ["y", " -x", " z"], - ["x", " -y", " -z+1/2"], - ["-x", " y", " -z+1/2"], - ["y", " x", " -z+1/2"], - ["-y", " -x", " -z+1/2"], - ["-x", " -y", " -z"], - ["y", " -x", " -z"], - ["x", " y", " -z"], - ["-y", " x", " -z"], - ["-x", " y", " z+1/2"], - ["x", " -y", " z+1/2"], - ["-y", " -x", " z+1/2"], - ["y", " x", " z+1/2"], - ["x+1/2", " y+1/2", " z+1/2"], - ["-y+1/2", " x+1/2", " z+1/2"], - ["-x+1/2", " -y+1/2", " z+1/2"], - ["y+1/2", " -x+1/2", " z+1/2"], - ["x+1/2", " -y+1/2", " -z"], - ["-x+1/2", " y+1/2", " -z"], - ["y+1/2", " x+1/2", " -z"], - ["-y+1/2", " -x+1/2", " -z"], - ["-x+1/2", " -y+1/2", " -z+1/2"], - ["y+1/2", " -x+1/2", " -z+1/2"], - ["x+1/2", " y+1/2", " -z+1/2"], - ["-y+1/2", " x+1/2", " -z+1/2"], - ["-x+1/2", " y+1/2", " z"], - ["x+1/2", " -y+1/2", " z"], - ["-y+1/2", " -x+1/2", " z"], - ["y+1/2", " x+1/2", " z"], - ], - "I 4bw 2bw -1bw": [ - ["x", " y", " z"], - ["-x", " -y+1/2", " -z+1/4"], - ["-y", " x+1/2", " z+1/4"], - ["-x", " -y", " z"], - ["y", " -x+1/2", " z+1/4"], - ["y", " -x", " -z"], - ["-y", " x", " -z"], - ["x", " -y+1/2", " -z+1/4"], - ["-x", " y+1/2", " -z+1/4"], - ["y", " x", " -z"], - ["-y", " -x", " -z"], - ["x", " y+1/2", " -z+1/4"], - ["-x", " y", " z"], - ["x", " -y", " z"], - ["-y", " -x+1/2", " z+1/4"], - ["y", " x+1/2", " z+1/4"], - ["x+1/2", " y+1/2", " z+1/2"], - ["-x+1/2", " -y", " -z-1/4"], - ["-y+1/2", " x", " z-1/4"], - ["-x+1/2", " -y+1/2", " z+1/2"], - ["y+1/2", " -x", " z-1/4"], - ["y+1/2", " -x+1/2", " -z+1/2"], - ["-y+1/2", " x+1/2", " -z+1/2"], - ["x+1/2", " -y", " -z-1/4"], - ["-x+1/2", " y", " -z-1/4"], - ["y+1/2", " x+1/2", " -z+1/2"], - ["-y+1/2", " -x+1/2", " -z+1/2"], - ["x+1/2", " y", " -z-1/4"], - ["-x+1/2", " y+1/2", " z+1/2"], - ["x+1/2", " -y+1/2", " z+1/2"], - ["-y+1/2", " -x", " z-1/4"], - ["y+1/2", " x", " z-1/4"], - ], - "-I 4bd 2": [ - ["x", " y", " z"], - ["-y+1/4", " x-1/4", " z+1/4"], - ["-x", " -y+1/2", " z"], - ["y+1/4", " -x+1/4", " z-1/4"], - ["x", " -y", " -z"], - ["-x", " y+1/2", " -z"], - ["y+1/4", " x-1/4", " -z+1/4"], - ["-y+1/4", " -x+1/4", " -z-1/4"], - ["-x", " -y", " -z"], - ["y-1/4", " -x+1/4", " -z-1/4"], - ["x", " y+1/2", " -z"], - ["-y-1/4", " x-1/4", " -z+1/4"], - ["-x", " y", " z"], - ["x", " -y+1/2", " z"], - ["-y-1/4", " -x+1/4", " z-1/4"], - ["y-1/4", " x-1/4", " z+1/4"], - ["x+1/2", " y+1/2", " z+1/2"], - ["-y-1/4", " x+1/4", " z-1/4"], - ["-x+1/2", " -y", " z+1/2"], - ["y-1/4", " -x-1/4", " z+1/4"], - ["x+1/2", " -y+1/2", " -z+1/2"], - ["-x+1/2", " y", " -z+1/2"], - ["y-1/4", " x+1/4", " -z-1/4"], - ["-y-1/4", " -x-1/4", " -z+1/4"], - ["-x+1/2", " -y+1/2", " -z+1/2"], - ["y+1/4", " -x-1/4", " -z+1/4"], - ["x+1/2", " y", " -z+1/2"], - ["-y+1/4", " x+1/4", " -z-1/4"], - ["-x+1/2", " y+1/2", " z+1/2"], - ["x+1/2", " -y", " z+1/2"], - ["-y+1/4", " -x-1/4", " z+1/4"], - ["y+1/4", " x+1/4", " z-1/4"], - ], - "I 4bw 2aw -1bw": [ - ["x", " y", " z"], - ["-x", " -y+1/2", " -z+1/4"], - ["-y", " x+1/2", " z+1/4"], - ["-x", " -y", " z"], - ["y", " -x+1/2", " z+1/4"], - ["y", " -x", " -z"], - ["-y", " x", " -z"], - ["x+1/2", " -y", " -z+1/4"], - ["-x+1/2", " y", " -z+1/4"], - ["y", " x", " -z+1/2"], - ["-y", " -x", " -z+1/2"], - ["x", " y+1/2", " -z+1/4"], - ["-x", " y", " z+1/2"], - ["x", " -y", " z+1/2"], - ["-y+1/2", " -x", " z+1/4"], - ["y+1/2", " x", " z+1/4"], - ["x+1/2", " y+1/2", " z+1/2"], - ["-x+1/2", " -y", " -z-1/4"], - ["-y+1/2", " x", " z-1/4"], - ["-x+1/2", " -y+1/2", " z+1/2"], - ["y+1/2", " -x", " z-1/4"], - ["y+1/2", " -x+1/2", " -z+1/2"], - ["-y+1/2", " x+1/2", " -z+1/2"], - ["x", " -y+1/2", " -z-1/4"], - ["-x", " y+1/2", " -z-1/4"], - ["y+1/2", " x+1/2", " -z"], - ["-y+1/2", " -x+1/2", " -z"], - ["x+1/2", " y", " -z-1/4"], - ["-x+1/2", " y+1/2", " z"], - ["x+1/2", " -y+1/2", " z"], - ["-y", " -x+1/2", " z-1/4"], - ["y", " x+1/2", " z-1/4"], - ], - "-I 4bd 2c": [ - ["x", " y", " z"], - ["-y+1/4", " x-1/4", " z+1/4"], - ["-x", " -y+1/2", " z"], - ["y+1/4", " -x+1/4", " z-1/4"], - ["x", " -y", " -z+1/2"], - ["-x+1/2", " y", " -z"], - ["y-1/4", " x+1/4", " -z+1/4"], - ["-y+1/4", " -x+1/4", " -z+1/4"], - ["-x", " -y", " -z"], - ["y-1/4", " -x+1/4", " -z-1/4"], - ["x", " y+1/2", " -z"], - ["-y-1/4", " x-1/4", " -z+1/4"], - ["-x", " y", " z+1/2"], - ["x+1/2", " -y", " z"], - ["-y+1/4", " -x-1/4", " z-1/4"], - ["y-1/4", " x-1/4", " z-1/4"], - ["x+1/2", " y+1/2", " z+1/2"], - ["-y-1/4", " x+1/4", " z-1/4"], - ["-x+1/2", " -y", " z+1/2"], - ["y-1/4", " -x-1/4", " z+1/4"], - ["x+1/2", " -y+1/2", " -z"], - ["-x", " y+1/2", " -z+1/2"], - ["y+1/4", " x-1/4", " -z-1/4"], - ["-y-1/4", " -x-1/4", " -z-1/4"], - ["-x+1/2", " -y+1/2", " -z+1/2"], - ["y+1/4", " -x-1/4", " -z+1/4"], - ["x+1/2", " y", " -z+1/2"], - ["-y+1/4", " x+1/4", " -z-1/4"], - ["-x+1/2", " y+1/2", " z"], - ["x", " -y+1/2", " z+1/2"], - ["-y-1/4", " -x+1/4", " z+1/4"], - ["y+1/4", " x+1/4", " z+1/4"], - ], - "P 3": [["x", " y", " z"], ["-y", " x-y", " z"], ["-x+y", " -x", " z"]], - "P 31": [["x", " y", " z"], ["-y", " x-y", " z+1/3"], ["-x+y", " -x", " z-1/3"]], - "P 32": [["x", " y", " z"], ["-y", " x-y", " z-1/3"], ["-x+y", " -x", " z+1/3"]], - "R 3": [ - ["x", " y", " z"], - ["-y", " x-y", " z"], - ["-x+y", " -x", " z"], - ["x-1/3", " y+1/3", " z+1/3"], - ["-y-1/3", " x-y+1/3", " z+1/3"], - ["-x+y-1/3", " -x+1/3", " z+1/3"], - ["x+1/3", " y-1/3", " z-1/3"], - ["-y+1/3", " x-y-1/3", " z-1/3"], - ["-x+y+1/3", " -x-1/3", " z-1/3"], - ], - "P 3*": [["x", " y", " z"], ["z", " x", " y"], ["y", " z", " x"]], - "-P 3": [ - ["x", " y", " z"], - ["-y", " x-y", " z"], - ["-x+y", " -x", " z"], - ["-x", " -y", " -z"], - ["y", " -x+y", " -z"], - ["x-y", " x", " -z"], - ], - "-R 3": [ - ["x", " y", " z"], - ["-y", " x-y", " z"], - ["-x+y", " -x", " z"], - ["-x", " -y", " -z"], - ["y", " -x+y", " -z"], - ["x-y", " x", " -z"], - ["x-1/3", " y+1/3", " z+1/3"], - ["-y-1/3", " x-y+1/3", " z+1/3"], - ["-x+y-1/3", " -x+1/3", " z+1/3"], - ["-x-1/3", " -y+1/3", " -z+1/3"], - ["y-1/3", " -x+y+1/3", " -z+1/3"], - ["x-y-1/3", " x+1/3", " -z+1/3"], - ["x+1/3", " y-1/3", " z-1/3"], - ["-y+1/3", " x-y-1/3", " z-1/3"], - ["-x+y+1/3", " -x-1/3", " z-1/3"], - ["-x+1/3", " -y-1/3", " -z-1/3"], - ["y+1/3", " -x+y-1/3", " -z-1/3"], - ["x-y+1/3", " x-1/3", " -z-1/3"], - ], - "-P 3*": [ - ["x", " y", " z"], - ["z", " x", " y"], - ["y", " z", " x"], - ["-x", " -y", " -z"], - ["-z", " -x", " -y"], - ["-y", " -z", " -x"], - ], - "P 3 2": [ - ["x", " y", " z"], - ["-y", " x-y", " z"], - ["-x+y", " -x", " z"], - ["-y", " -x", " -z"], - ["-x+y", " y", " -z"], - ["x", " x-y", " -z"], - ], - 'P 3 2"': [ - ["x", " y", " z"], - ["-y", " x-y", " z"], - ["-x+y", " -x", " z"], - ["x-y", " -y", " -z"], - ["-x", " -x+y", " -z"], - ["y", " x", " -z"], - ], - "P 31 2c (0 0 1)": [ - ["x", " y", " z"], - ["-y", " x-y", " z+1/3"], - ["-x+y", " -x", " z-1/3"], - ["-y", " -x", " -z-1/3"], - ["-x+y", " y", " -z+1/3"], - ["x", " x-y", " -z"], - ], - 'P 31 2"': [ - ["x", " y", " z"], - ["-y", " x-y", " z+1/3"], - ["-x+y", " -x", " z-1/3"], - ["x-y", " -y", " -z-1/3"], - ["-x", " -x+y", " -z+1/3"], - ["y", " x", " -z"], - ], - "P 32 2c (0 0 -1)": [ - ["x", " y", " z"], - ["-y", " x-y", " z-1/3"], - ["-x+y", " -x", " z+1/3"], - ["-y", " -x", " -z+1/3"], - ["-x+y", " y", " -z-1/3"], - ["x", " x-y", " -z"], - ], - 'P 32 2"': [ - ["x", " y", " z"], - ["-y", " x-y", " z-1/3"], - ["-x+y", " -x", " z+1/3"], - ["x-y", " -y", " -z+1/3"], - ["-x", " -x+y", " -z-1/3"], - ["y", " x", " -z"], - ], - 'R 3 2"': [ - ["x", " y", " z"], - ["-y", " x-y", " z"], - ["-x+y", " -x", " z"], - ["x-y", " -y", " -z"], - ["-x", " -x+y", " -z"], - ["y", " x", " -z"], - ["x-1/3", " y+1/3", " z+1/3"], - ["-y-1/3", " x-y+1/3", " z+1/3"], - ["-x+y-1/3", " -x+1/3", " z+1/3"], - ["x-y-1/3", " -y+1/3", " -z+1/3"], - ["-x-1/3", " -x+y+1/3", " -z+1/3"], - ["y-1/3", " x+1/3", " -z+1/3"], - ["x+1/3", " y-1/3", " z-1/3"], - ["-y+1/3", " x-y-1/3", " z-1/3"], - ["-x+y+1/3", " -x-1/3", " z-1/3"], - ["x-y+1/3", " -y-1/3", " -z-1/3"], - ["-x+1/3", " -x+y-1/3", " -z-1/3"], - ["y+1/3", " x-1/3", " -z-1/3"], - ], - "P 3* 2": [ - ["x", " y", " z"], - ["z", " x", " y"], - ["y", " z", " x"], - ["-y", " -x", " -z"], - ["-x", " -z", " -y"], - ["-z", " -y", " -x"], - ], - 'P 3 -2"': [ - ["x", " y", " z"], - ["-y", " x-y", " z"], - ["-x+y", " -x", " z"], - ["-x+y", " y", " z"], - ["x", " x-y", " z"], - ["-y", " -x", " z"], - ], - "P 3 -2": [ - ["x", " y", " z"], - ["-y", " x-y", " z"], - ["-x+y", " -x", " z"], - ["y", " x", " z"], - ["x-y", " -y", " z"], - ["-x", " -x+y", " z"], - ], - 'P 3 -2"c': [ - ["x", " y", " z"], - ["-y", " x-y", " z"], - ["-x+y", " -x", " z"], - ["-x+y", " y", " z+1/2"], - ["x", " x-y", " z+1/2"], - ["-y", " -x", " z+1/2"], - ], - "P 3 -2c": [ - ["x", " y", " z"], - ["-y", " x-y", " z"], - ["-x+y", " -x", " z"], - ["y", " x", " z+1/2"], - ["x-y", " -y", " z+1/2"], - ["-x", " -x+y", " z+1/2"], - ], - 'R 3 -2"': [ - ["x", " y", " z"], - ["-y", " x-y", " z"], - ["-x+y", " -x", " z"], - ["-x+y", " y", " z"], - ["x", " x-y", " z"], - ["-y", " -x", " z"], - ["x-1/3", " y+1/3", " z+1/3"], - ["-y-1/3", " x-y+1/3", " z+1/3"], - ["-x+y-1/3", " -x+1/3", " z+1/3"], - ["-x+y-1/3", " y+1/3", " z+1/3"], - ["x-1/3", " x-y+1/3", " z+1/3"], - ["-y-1/3", " -x+1/3", " z+1/3"], - ["x+1/3", " y-1/3", " z-1/3"], - ["-y+1/3", " x-y-1/3", " z-1/3"], - ["-x+y+1/3", " -x-1/3", " z-1/3"], - ["-x+y+1/3", " y-1/3", " z-1/3"], - ["x+1/3", " x-y-1/3", " z-1/3"], - ["-y+1/3", " -x-1/3", " z-1/3"], - ], - "P 3* -2": [ - ["x", " y", " z"], - ["z", " x", " y"], - ["y", " z", " x"], - ["y", " x", " z"], - ["x", " z", " y"], - ["z", " y", " x"], - ], - 'R 3 -2"c': [ - ["x", " y", " z"], - ["-y", " x-y", " z"], - ["-x+y", " -x", " z"], - ["-x+y", " y", " z+1/2"], - ["x", " x-y", " z+1/2"], - ["-y", " -x", " z+1/2"], - ["x-1/3", " y+1/3", " z+1/3"], - ["-y-1/3", " x-y+1/3", " z+1/3"], - ["-x+y-1/3", " -x+1/3", " z+1/3"], - ["-x+y-1/3", " y+1/3", " z-1/6"], - ["x-1/3", " x-y+1/3", " z-1/6"], - ["-y-1/3", " -x+1/3", " z-1/6"], - ["x+1/3", " y-1/3", " z-1/3"], - ["-y+1/3", " x-y-1/3", " z-1/3"], - ["-x+y+1/3", " -x-1/3", " z-1/3"], - ["-x+y+1/3", " y-1/3", " z+1/6"], - ["x+1/3", " x-y-1/3", " z+1/6"], - ["-y+1/3", " -x-1/3", " z+1/6"], - ], - "P 3* -2n": [ - ["x", " y", " z"], - ["z", " x", " y"], - ["y", " z", " x"], - ["y+1/2", " x+1/2", " z+1/2"], - ["x+1/2", " z+1/2", " y+1/2"], - ["z+1/2", " y+1/2", " x+1/2"], - ], - "-P 3 2": [ - ["x", " y", " z"], - ["-y", " x-y", " z"], - ["-x+y", " -x", " z"], - ["-y", " -x", " -z"], - ["-x+y", " y", " -z"], - ["x", " x-y", " -z"], - ["-x", " -y", " -z"], - ["y", " -x+y", " -z"], - ["x-y", " x", " -z"], - ["y", " x", " z"], - ["x-y", " -y", " z"], - ["-x", " -x+y", " z"], - ], - "-P 3 2c": [ - ["x", " y", " z"], - ["-y", " x-y", " z"], - ["-x+y", " -x", " z"], - ["-y", " -x", " -z+1/2"], - ["-x+y", " y", " -z+1/2"], - ["x", " x-y", " -z+1/2"], - ["-x", " -y", " -z"], - ["y", " -x+y", " -z"], - ["x-y", " x", " -z"], - ["y", " x", " z+1/2"], - ["x-y", " -y", " z+1/2"], - ["-x", " -x+y", " z+1/2"], - ], - '-P 3 2"': [ - ["x", " y", " z"], - ["-y", " x-y", " z"], - ["-x+y", " -x", " z"], - ["x-y", " -y", " -z"], - ["-x", " -x+y", " -z"], - ["y", " x", " -z"], - ["-x", " -y", " -z"], - ["y", " -x+y", " -z"], - ["x-y", " x", " -z"], - ["-x+y", " y", " z"], - ["x", " x-y", " z"], - ["-y", " -x", " z"], - ], - '-P 3 2"c': [ - ["x", " y", " z"], - ["-y", " x-y", " z"], - ["-x+y", " -x", " z"], - ["x-y", " -y", " -z+1/2"], - ["-x", " -x+y", " -z+1/2"], - ["y", " x", " -z+1/2"], - ["-x", " -y", " -z"], - ["y", " -x+y", " -z"], - ["x-y", " x", " -z"], - ["-x+y", " y", " z+1/2"], - ["x", " x-y", " z+1/2"], - ["-y", " -x", " z+1/2"], - ], - '-R 3 2"': [ - ["x", " y", " z"], - ["-y", " x-y", " z"], - ["-x+y", " -x", " z"], - ["x-y", " -y", " -z"], - ["-x", " -x+y", " -z"], - ["y", " x", " -z"], - ["-x", " -y", " -z"], - ["y", " -x+y", " -z"], - ["x-y", " x", " -z"], - ["-x+y", " y", " z"], - ["x", " x-y", " z"], - ["-y", " -x", " z"], - ["x-1/3", " y+1/3", " z+1/3"], - ["-y-1/3", " x-y+1/3", " z+1/3"], - ["-x+y-1/3", " -x+1/3", " z+1/3"], - ["x-y-1/3", " -y+1/3", " -z+1/3"], - ["-x-1/3", " -x+y+1/3", " -z+1/3"], - ["y-1/3", " x+1/3", " -z+1/3"], - ["-x-1/3", " -y+1/3", " -z+1/3"], - ["y-1/3", " -x+y+1/3", " -z+1/3"], - ["x-y-1/3", " x+1/3", " -z+1/3"], - ["-x+y-1/3", " y+1/3", " z+1/3"], - ["x-1/3", " x-y+1/3", " z+1/3"], - ["-y-1/3", " -x+1/3", " z+1/3"], - ["x+1/3", " y-1/3", " z-1/3"], - ["-y+1/3", " x-y-1/3", " z-1/3"], - ["-x+y+1/3", " -x-1/3", " z-1/3"], - ["x-y+1/3", " -y-1/3", " -z-1/3"], - ["-x+1/3", " -x+y-1/3", " -z-1/3"], - ["y+1/3", " x-1/3", " -z-1/3"], - ["-x+1/3", " -y-1/3", " -z-1/3"], - ["y+1/3", " -x+y-1/3", " -z-1/3"], - ["x-y+1/3", " x-1/3", " -z-1/3"], - ["-x+y+1/3", " y-1/3", " z-1/3"], - ["x+1/3", " x-y-1/3", " z-1/3"], - ["-y+1/3", " -x-1/3", " z-1/3"], - ], - "-P 3* 2": [ - ["x", " y", " z"], - ["z", " x", " y"], - ["y", " z", " x"], - ["-y", " -x", " -z"], - ["-x", " -z", " -y"], - ["-z", " -y", " -x"], - ["-x", " -y", " -z"], - ["-z", " -x", " -y"], - ["-y", " -z", " -x"], - ["y", " x", " z"], - ["x", " z", " y"], - ["z", " y", " x"], - ], - '-R 3 2"c': [ - ["x", " y", " z"], - ["-y", " x-y", " z"], - ["-x+y", " -x", " z"], - ["x-y", " -y", " -z+1/2"], - ["-x", " -x+y", " -z+1/2"], - ["y", " x", " -z+1/2"], - ["-x", " -y", " -z"], - ["y", " -x+y", " -z"], - ["x-y", " x", " -z"], - ["-x+y", " y", " z+1/2"], - ["x", " x-y", " z+1/2"], - ["-y", " -x", " z+1/2"], - ["x-1/3", " y+1/3", " z+1/3"], - ["-y-1/3", " x-y+1/3", " z+1/3"], - ["-x+y-1/3", " -x+1/3", " z+1/3"], - ["x-y-1/3", " -y+1/3", " -z-1/6"], - ["-x-1/3", " -x+y+1/3", " -z-1/6"], - ["y-1/3", " x+1/3", " -z-1/6"], - ["-x-1/3", " -y+1/3", " -z+1/3"], - ["y-1/3", " -x+y+1/3", " -z+1/3"], - ["x-y-1/3", " x+1/3", " -z+1/3"], - ["-x+y-1/3", " y+1/3", " z-1/6"], - ["x-1/3", " x-y+1/3", " z-1/6"], - ["-y-1/3", " -x+1/3", " z-1/6"], - ["x+1/3", " y-1/3", " z-1/3"], - ["-y+1/3", " x-y-1/3", " z-1/3"], - ["-x+y+1/3", " -x-1/3", " z-1/3"], - ["x-y+1/3", " -y-1/3", " -z+1/6"], - ["-x+1/3", " -x+y-1/3", " -z+1/6"], - ["y+1/3", " x-1/3", " -z+1/6"], - ["-x+1/3", " -y-1/3", " -z-1/3"], - ["y+1/3", " -x+y-1/3", " -z-1/3"], - ["x-y+1/3", " x-1/3", " -z-1/3"], - ["-x+y+1/3", " y-1/3", " z+1/6"], - ["x+1/3", " x-y-1/3", " z+1/6"], - ["-y+1/3", " -x-1/3", " z+1/6"], - ], - "-P 3* 2n": [ - ["x", " y", " z"], - ["z", " x", " y"], - ["y", " z", " x"], - ["-y+1/2", " -x+1/2", " -z+1/2"], - ["-x+1/2", " -z+1/2", " -y+1/2"], - ["-z+1/2", " -y+1/2", " -x+1/2"], - ["-x", " -y", " -z"], - ["-z", " -x", " -y"], - ["-y", " -z", " -x"], - ["y+1/2", " x+1/2", " z+1/2"], - ["x+1/2", " z+1/2", " y+1/2"], - ["z+1/2", " y+1/2", " x+1/2"], - ], - "P 6": [ - ["x", " y", " z"], - ["x-y", " x", " z"], - ["-y", " x-y", " z"], - ["-x", " -y", " z"], - ["-x+y", " -x", " z"], - ["y", " -x+y", " z"], - ], - "P 61": [ - ["x", " y", " z"], - ["x-y", " x", " z+1/6"], - ["-y", " x-y", " z+1/3"], - ["-x", " -y", " z+1/2"], - ["-x+y", " -x", " z-1/3"], - ["y", " -x+y", " z-1/6"], - ], - "P 65": [ - ["x", " y", " z"], - ["x-y", " x", " z-1/6"], - ["-y", " x-y", " z-1/3"], - ["-x", " -y", " z+1/2"], - ["-x+y", " -x", " z+1/3"], - ["y", " -x+y", " z+1/6"], - ], - "P 62": [ - ["x", " y", " z"], - ["x-y", " x", " z+1/3"], - ["-y", " x-y", " z-1/3"], - ["-x", " -y", " z"], - ["-x+y", " -x", " z+1/3"], - ["y", " -x+y", " z-1/3"], - ], - "P 64": [ - ["x", " y", " z"], - ["x-y", " x", " z-1/3"], - ["-y", " x-y", " z+1/3"], - ["-x", " -y", " z"], - ["-x+y", " -x", " z-1/3"], - ["y", " -x+y", " z+1/3"], - ], - "P 6c": [ - ["x", " y", " z"], - ["x-y", " x", " z+1/2"], - ["-y", " x-y", " z"], - ["-x", " -y", " z+1/2"], - ["-x+y", " -x", " z"], - ["y", " -x+y", " z+1/2"], - ], - "P -6": [ - ["x", " y", " z"], - ["-x+y", " -x", " -z"], - ["-y", " x-y", " z"], - ["x", " y", " -z"], - ["-x+y", " -x", " z"], - ["-y", " x-y", " -z"], - ], - "-P 6": [ - ["x", " y", " z"], - ["x-y", " x", " z"], - ["-y", " x-y", " z"], - ["-x", " -y", " z"], - ["-x+y", " -x", " z"], - ["y", " -x+y", " z"], - ["-x", " -y", " -z"], - ["-x+y", " -x", " -z"], - ["y", " -x+y", " -z"], - ["x", " y", " -z"], - ["x-y", " x", " -z"], - ["-y", " x-y", " -z"], - ], - "-P 6c": [ - ["x", " y", " z"], - ["x-y", " x", " z+1/2"], - ["-y", " x-y", " z"], - ["-x", " -y", " z+1/2"], - ["-x+y", " -x", " z"], - ["y", " -x+y", " z+1/2"], - ["-x", " -y", " -z"], - ["-x+y", " -x", " -z+1/2"], - ["y", " -x+y", " -z"], - ["x", " y", " -z+1/2"], - ["x-y", " x", " -z"], - ["-y", " x-y", " -z+1/2"], - ], - "P 6 2": [ - ["x", " y", " z"], - ["x-y", " x", " z"], - ["-y", " x-y", " z"], - ["-x", " -y", " z"], - ["-x+y", " -x", " z"], - ["y", " -x+y", " z"], - ["x-y", " -y", " -z"], - ["-x", " -x+y", " -z"], - ["y", " x", " -z"], - ["-y", " -x", " -z"], - ["-x+y", " y", " -z"], - ["x", " x-y", " -z"], - ], - "P 61 2 (0 0 -1)": [ - ["x", " y", " z"], - ["x-y", " x", " z+1/6"], - ["-y", " x-y", " z+1/3"], - ["-x", " -y", " z+1/2"], - ["-x+y", " -x", " z-1/3"], - ["y", " -x+y", " z-1/6"], - ["x-y", " -y", " -z"], - ["-x", " -x+y", " -z-1/3"], - ["y", " x", " -z+1/3"], - ["-y", " -x", " -z-1/6"], - ["-x+y", " y", " -z+1/2"], - ["x", " x-y", " -z+1/6"], - ], - "P 65 2 (0 0 1)": [ - ["x", " y", " z"], - ["x-y", " x", " z-1/6"], - ["-y", " x-y", " z-1/3"], - ["-x", " -y", " z+1/2"], - ["-x+y", " -x", " z+1/3"], - ["y", " -x+y", " z+1/6"], - ["x-y", " -y", " -z"], - ["-x", " -x+y", " -z+1/3"], - ["y", " x", " -z-1/3"], - ["-y", " -x", " -z+1/6"], - ["-x+y", " y", " -z+1/2"], - ["x", " x-y", " -z-1/6"], - ], - "P 62 2c (0 0 1)": [ - ["x", " y", " z"], - ["x-y", " x", " z+1/3"], - ["-y", " x-y", " z-1/3"], - ["-x", " -y", " z"], - ["-x+y", " -x", " z+1/3"], - ["y", " -x+y", " z-1/3"], - ["x-y", " -y", " -z"], - ["-x", " -x+y", " -z+1/3"], - ["y", " x", " -z-1/3"], - ["-y", " -x", " -z-1/3"], - ["-x+y", " y", " -z"], - ["x", " x-y", " -z+1/3"], - ], - "P 64 2c (0 0 -1)": [ - ["x", " y", " z"], - ["x-y", " x", " z-1/3"], - ["-y", " x-y", " z+1/3"], - ["-x", " -y", " z"], - ["-x+y", " -x", " z-1/3"], - ["y", " -x+y", " z+1/3"], - ["x-y", " -y", " -z"], - ["-x", " -x+y", " -z-1/3"], - ["y", " x", " -z+1/3"], - ["-y", " -x", " -z+1/3"], - ["-x+y", " y", " -z"], - ["x", " x-y", " -z-1/3"], - ], - "P 6c 2c": [ - ["x", " y", " z"], - ["x-y", " x", " z+1/2"], - ["-y", " x-y", " z"], - ["-x", " -y", " z+1/2"], - ["-x+y", " -x", " z"], - ["y", " -x+y", " z+1/2"], - ["x-y", " -y", " -z"], - ["-x", " -x+y", " -z"], - ["y", " x", " -z"], - ["-y", " -x", " -z+1/2"], - ["-x+y", " y", " -z+1/2"], - ["x", " x-y", " -z+1/2"], - ], - "P 6 -2": [ - ["x", " y", " z"], - ["x-y", " x", " z"], - ["-y", " x-y", " z"], - ["-x", " -y", " z"], - ["-x+y", " -x", " z"], - ["y", " -x+y", " z"], - ["-x+y", " y", " z"], - ["x", " x-y", " z"], - ["-y", " -x", " z"], - ["y", " x", " z"], - ["x-y", " -y", " z"], - ["-x", " -x+y", " z"], - ], - "P 6 -2c": [ - ["x", " y", " z"], - ["x-y", " x", " z"], - ["-y", " x-y", " z"], - ["-x", " -y", " z"], - ["-x+y", " -x", " z"], - ["y", " -x+y", " z"], - ["-x+y", " y", " z+1/2"], - ["x", " x-y", " z+1/2"], - ["-y", " -x", " z+1/2"], - ["y", " x", " z+1/2"], - ["x-y", " -y", " z+1/2"], - ["-x", " -x+y", " z+1/2"], - ], - "P 6c -2": [ - ["x", " y", " z"], - ["x-y", " x", " z+1/2"], - ["-y", " x-y", " z"], - ["-x", " -y", " z+1/2"], - ["-x+y", " -x", " z"], - ["y", " -x+y", " z+1/2"], - ["-x+y", " y", " z+1/2"], - ["x", " x-y", " z+1/2"], - ["-y", " -x", " z+1/2"], - ["y", " x", " z"], - ["x-y", " -y", " z"], - ["-x", " -x+y", " z"], - ], - "P 6c -2c": [ - ["x", " y", " z"], - ["x-y", " x", " z+1/2"], - ["-y", " x-y", " z"], - ["-x", " -y", " z+1/2"], - ["-x+y", " -x", " z"], - ["y", " -x+y", " z+1/2"], - ["-x+y", " y", " z"], - ["x", " x-y", " z"], - ["-y", " -x", " z"], - ["y", " x", " z+1/2"], - ["x-y", " -y", " z+1/2"], - ["-x", " -x+y", " z+1/2"], - ], - "P -6 2": [ - ["x", " y", " z"], - ["-x+y", " -x", " -z"], - ["-y", " x-y", " z"], - ["x", " y", " -z"], - ["-x+y", " -x", " z"], - ["-y", " x-y", " -z"], - ["-y", " -x", " -z"], - ["-x+y", " y", " -z"], - ["x", " x-y", " -z"], - ["-x+y", " y", " z"], - ["x", " x-y", " z"], - ["-y", " -x", " z"], - ], - "P -6c 2": [ - ["x", " y", " z"], - ["-x+y", " -x", " -z+1/2"], - ["-y", " x-y", " z"], - ["x", " y", " -z+1/2"], - ["-x+y", " -x", " z"], - ["-y", " x-y", " -z+1/2"], - ["-y", " -x", " -z"], - ["-x+y", " y", " -z"], - ["x", " x-y", " -z"], - ["-x+y", " y", " z+1/2"], - ["x", " x-y", " z+1/2"], - ["-y", " -x", " z+1/2"], - ], - "P -6 -2": [ - ["x", " y", " z"], - ["-x+y", " -x", " -z"], - ["-y", " x-y", " z"], - ["x", " y", " -z"], - ["-x+y", " -x", " z"], - ["-y", " x-y", " -z"], - ["x-y", " -y", " -z"], - ["-x", " -x+y", " -z"], - ["y", " x", " -z"], - ["y", " x", " z"], - ["x-y", " -y", " z"], - ["-x", " -x+y", " z"], - ], - "P -6c -2c": [ - ["x", " y", " z"], - ["-x+y", " -x", " -z+1/2"], - ["-y", " x-y", " z"], - ["x", " y", " -z+1/2"], - ["-x+y", " -x", " z"], - ["-y", " x-y", " -z+1/2"], - ["x-y", " -y", " -z"], - ["-x", " -x+y", " -z"], - ["y", " x", " -z"], - ["y", " x", " z+1/2"], - ["x-y", " -y", " z+1/2"], - ["-x", " -x+y", " z+1/2"], - ], - "-P 6 2": [ - ["x", " y", " z"], - ["x-y", " x", " z"], - ["-y", " x-y", " z"], - ["-x", " -y", " z"], - ["-x+y", " -x", " z"], - ["y", " -x+y", " z"], - ["x-y", " -y", " -z"], - ["-x", " -x+y", " -z"], - ["y", " x", " -z"], - ["-y", " -x", " -z"], - ["-x+y", " y", " -z"], - ["x", " x-y", " -z"], - ["-x", " -y", " -z"], - ["-x+y", " -x", " -z"], - ["y", " -x+y", " -z"], - ["x", " y", " -z"], - ["x-y", " x", " -z"], - ["-y", " x-y", " -z"], - ["-x+y", " y", " z"], - ["x", " x-y", " z"], - ["-y", " -x", " z"], - ["y", " x", " z"], - ["x-y", " -y", " z"], - ["-x", " -x+y", " z"], - ], - "-P 6 2c": [ - ["x", " y", " z"], - ["x-y", " x", " z"], - ["-y", " x-y", " z"], - ["-x", " -y", " z"], - ["-x+y", " -x", " z"], - ["y", " -x+y", " z"], - ["x-y", " -y", " -z+1/2"], - ["-x", " -x+y", " -z+1/2"], - ["y", " x", " -z+1/2"], - ["-y", " -x", " -z+1/2"], - ["-x+y", " y", " -z+1/2"], - ["x", " x-y", " -z+1/2"], - ["-x", " -y", " -z"], - ["-x+y", " -x", " -z"], - ["y", " -x+y", " -z"], - ["x", " y", " -z"], - ["x-y", " x", " -z"], - ["-y", " x-y", " -z"], - ["-x+y", " y", " z+1/2"], - ["x", " x-y", " z+1/2"], - ["-y", " -x", " z+1/2"], - ["y", " x", " z+1/2"], - ["x-y", " -y", " z+1/2"], - ["-x", " -x+y", " z+1/2"], - ], - "-P 6c 2": [ - ["x", " y", " z"], - ["x-y", " x", " z+1/2"], - ["-y", " x-y", " z"], - ["-x", " -y", " z+1/2"], - ["-x+y", " -x", " z"], - ["y", " -x+y", " z+1/2"], - ["x-y", " -y", " -z+1/2"], - ["-x", " -x+y", " -z+1/2"], - ["y", " x", " -z+1/2"], - ["-y", " -x", " -z"], - ["-x+y", " y", " -z"], - ["x", " x-y", " -z"], - ["-x", " -y", " -z"], - ["-x+y", " -x", " -z+1/2"], - ["y", " -x+y", " -z"], - ["x", " y", " -z+1/2"], - ["x-y", " x", " -z"], - ["-y", " x-y", " -z+1/2"], - ["-x+y", " y", " z+1/2"], - ["x", " x-y", " z+1/2"], - ["-y", " -x", " z+1/2"], - ["y", " x", " z"], - ["x-y", " -y", " z"], - ["-x", " -x+y", " z"], - ], - "-P 6c 2c": [ - ["x", " y", " z"], - ["x-y", " x", " z+1/2"], - ["-y", " x-y", " z"], - ["-x", " -y", " z+1/2"], - ["-x+y", " -x", " z"], - ["y", " -x+y", " z+1/2"], - ["x-y", " -y", " -z"], - ["-x", " -x+y", " -z"], - ["y", " x", " -z"], - ["-y", " -x", " -z+1/2"], - ["-x+y", " y", " -z+1/2"], - ["x", " x-y", " -z+1/2"], - ["-x", " -y", " -z"], - ["-x+y", " -x", " -z+1/2"], - ["y", " -x+y", " -z"], - ["x", " y", " -z+1/2"], - ["x-y", " x", " -z"], - ["-y", " x-y", " -z+1/2"], - ["-x+y", " y", " z"], - ["x", " x-y", " z"], - ["-y", " -x", " z"], - ["y", " x", " z+1/2"], - ["x-y", " -y", " z+1/2"], - ["-x", " -x+y", " z+1/2"], - ], - "P 2 2 3": [ - ["x", " y", " z"], - ["z", " x", " y"], - ["y", " z", " x"], - ["-y", " -z", " x"], - ["z", " -x", " -y"], - ["-y", " z", " -x"], - ["-z", " -x", " y"], - ["-z", " x", " -y"], - ["y", " -z", " -x"], - ["-x", " -y", " z"], - ["x", " -y", " -z"], - ["-x", " y", " -z"], - ], - "F 2 2 3": [ - ["x", " y", " z"], - ["z", " x", " y"], - ["y", " z", " x"], - ["-y", " -z", " x"], - ["z", " -x", " -y"], - ["-y", " z", " -x"], - ["-z", " -x", " y"], - ["-z", " x", " -y"], - ["y", " -z", " -x"], - ["-x", " -y", " z"], - ["x", " -y", " -z"], - ["-x", " y", " -z"], - ["x", " y+1/2", " z+1/2"], - ["z", " x+1/2", " y+1/2"], - ["y", " z+1/2", " x+1/2"], - ["-y", " -z+1/2", " x+1/2"], - ["z", " -x+1/2", " -y+1/2"], - ["-y", " z+1/2", " -x+1/2"], - ["-z", " -x+1/2", " y+1/2"], - ["-z", " x+1/2", " -y+1/2"], - ["y", " -z+1/2", " -x+1/2"], - ["-x", " -y+1/2", " z+1/2"], - ["x", " -y+1/2", " -z+1/2"], - ["-x", " y+1/2", " -z+1/2"], - ["x+1/2", " y", " z+1/2"], - ["z+1/2", " x", " y+1/2"], - ["y+1/2", " z", " x+1/2"], - ["-y+1/2", " -z", " x+1/2"], - ["z+1/2", " -x", " -y+1/2"], - ["-y+1/2", " z", " -x+1/2"], - ["-z+1/2", " -x", " y+1/2"], - ["-z+1/2", " x", " -y+1/2"], - ["y+1/2", " -z", " -x+1/2"], - ["-x+1/2", " -y", " z+1/2"], - ["x+1/2", " -y", " -z+1/2"], - ["-x+1/2", " y", " -z+1/2"], - ["x+1/2", " y+1/2", " z"], - ["z+1/2", " x+1/2", " y"], - ["y+1/2", " z+1/2", " x"], - ["-y+1/2", " -z+1/2", " x"], - ["z+1/2", " -x+1/2", " -y"], - ["-y+1/2", " z+1/2", " -x"], - ["-z+1/2", " -x+1/2", " y"], - ["-z+1/2", " x+1/2", " -y"], - ["y+1/2", " -z+1/2", " -x"], - ["-x+1/2", " -y+1/2", " z"], - ["x+1/2", " -y+1/2", " -z"], - ["-x+1/2", " y+1/2", " -z"], - ], - "I 2 2 3": [ - ["x", " y", " z"], - ["z", " x", " y"], - ["y", " z", " x"], - ["-y", " -z", " x"], - ["z", " -x", " -y"], - ["-y", " z", " -x"], - ["-z", " -x", " y"], - ["-z", " x", " -y"], - ["y", " -z", " -x"], - ["-x", " -y", " z"], - ["x", " -y", " -z"], - ["-x", " y", " -z"], - ["x+1/2", " y+1/2", " z+1/2"], - ["z+1/2", " x+1/2", " y+1/2"], - ["y+1/2", " z+1/2", " x+1/2"], - ["-y+1/2", " -z+1/2", " x+1/2"], - ["z+1/2", " -x+1/2", " -y+1/2"], - ["-y+1/2", " z+1/2", " -x+1/2"], - ["-z+1/2", " -x+1/2", " y+1/2"], - ["-z+1/2", " x+1/2", " -y+1/2"], - ["y+1/2", " -z+1/2", " -x+1/2"], - ["-x+1/2", " -y+1/2", " z+1/2"], - ["x+1/2", " -y+1/2", " -z+1/2"], - ["-x+1/2", " y+1/2", " -z+1/2"], - ], - "P 2ac 2ab 3": [ - ["x", " y", " z"], - ["z", " x", " y"], - ["y", " z", " x"], - ["-y+1/2", " -z", " x+1/2"], - ["z+1/2", " -x+1/2", " -y"], - ["-y", " z+1/2", " -x+1/2"], - ["-z+1/2", " -x", " y+1/2"], - ["-z", " x+1/2", " -y+1/2"], - ["y+1/2", " -z+1/2", " -x"], - ["-x+1/2", " -y", " z+1/2"], - ["x+1/2", " -y+1/2", " -z"], - ["-x", " y+1/2", " -z+1/2"], - ], - "I 2b 2c 3": [ - ["x", " y", " z"], - ["z", " x", " y"], - ["y", " z", " x"], - ["-y", " -z+1/2", " x"], - ["z", " -x", " -y+1/2"], - ["-y+1/2", " z", " -x"], - ["-z", " -x+1/2", " y"], - ["-z+1/2", " x", " -y"], - ["y", " -z", " -x+1/2"], - ["-x", " -y+1/2", " z"], - ["x", " -y", " -z+1/2"], - ["-x+1/2", " y", " -z"], - ["x+1/2", " y+1/2", " z+1/2"], - ["z+1/2", " x+1/2", " y+1/2"], - ["y+1/2", " z+1/2", " x+1/2"], - ["-y+1/2", " -z", " x+1/2"], - ["z+1/2", " -x+1/2", " -y"], - ["-y", " z+1/2", " -x+1/2"], - ["-z+1/2", " -x", " y+1/2"], - ["-z", " x+1/2", " -y+1/2"], - ["y+1/2", " -z+1/2", " -x"], - ["-x+1/2", " -y", " z+1/2"], - ["x+1/2", " -y+1/2", " -z"], - ["-x", " y+1/2", " -z+1/2"], - ], - "-P 2 2 3": [ - ["x", " y", " z"], - ["z", " x", " y"], - ["y", " z", " x"], - ["-y", " -z", " x"], - ["z", " -x", " -y"], - ["-y", " z", " -x"], - ["-z", " -x", " y"], - ["-z", " x", " -y"], - ["y", " -z", " -x"], - ["-x", " -y", " z"], - ["x", " -y", " -z"], - ["-x", " y", " -z"], - ["-x", " -y", " -z"], - ["-z", " -x", " -y"], - ["-y", " -z", " -x"], - ["y", " z", " -x"], - ["-z", " x", " y"], - ["y", " -z", " x"], - ["z", " x", " -y"], - ["z", " -x", " y"], - ["-y", " z", " x"], - ["x", " y", " -z"], - ["-x", " y", " z"], - ["x", " -y", " z"], - ], - "P 2 2 3 -1n": [ - ["x", " y", " z"], - ["-x+1/2", " -y+1/2", " -z+1/2"], - ["z", " x", " y"], - ["y", " z", " x"], - ["-y", " -z", " x"], - ["z", " -x", " -y"], - ["-y", " z", " -x"], - ["-z", " -x", " y"], - ["-z", " x", " -y"], - ["y", " -z", " -x"], - ["-z+1/2", " -x+1/2", " -y+1/2"], - ["-y+1/2", " -z+1/2", " -x+1/2"], - ["y+1/2", " z+1/2", " -x+1/2"], - ["-z+1/2", " x+1/2", " y+1/2"], - ["y+1/2", " -z+1/2", " x+1/2"], - ["z+1/2", " x+1/2", " -y+1/2"], - ["z+1/2", " -x+1/2", " y+1/2"], - ["-y+1/2", " z+1/2", " x+1/2"], - ["-x", " -y", " z"], - ["x", " -y", " -z"], - ["-x", " y", " -z"], - ["x+1/2", " y+1/2", " -z+1/2"], - ["-x+1/2", " y+1/2", " z+1/2"], - ["x+1/2", " -y+1/2", " z+1/2"], - ], - "-P 2ab 2bc 3": [ - ["x", " y", " z"], - ["z", " x", " y"], - ["y", " z", " x"], - ["-y+1/2", " -z+1/2", " x"], - ["z", " -x+1/2", " -y+1/2"], - ["-y+1/2", " z", " -x+1/2"], - ["-z+1/2", " -x+1/2", " y"], - ["-z+1/2", " x", " -y+1/2"], - ["y", " -z+1/2", " -x+1/2"], - ["-x+1/2", " -y+1/2", " z"], - ["x", " -y+1/2", " -z+1/2"], - ["-x+1/2", " y", " -z+1/2"], - ["-x", " -y", " -z"], - ["-z", " -x", " -y"], - ["-y", " -z", " -x"], - ["y+1/2", " z+1/2", " -x"], - ["-z", " x+1/2", " y+1/2"], - ["y+1/2", " -z", " x+1/2"], - ["z+1/2", " x+1/2", " -y"], - ["z+1/2", " -x", " y+1/2"], - ["-y", " z+1/2", " x+1/2"], - ["x+1/2", " y+1/2", " -z"], - ["-x", " y+1/2", " z+1/2"], - ["x+1/2", " -y", " z+1/2"], - ], - "-F 2 2 3": [ - ["x", " y", " z"], - ["z", " x", " y"], - ["y", " z", " x"], - ["-y", " -z", " x"], - ["z", " -x", " -y"], - ["-y", " z", " -x"], - ["-z", " -x", " y"], - ["-z", " x", " -y"], - ["y", " -z", " -x"], - ["-x", " -y", " z"], - ["x", " -y", " -z"], - ["-x", " y", " -z"], - ["-x", " -y", " -z"], - ["-z", " -x", " -y"], - ["-y", " -z", " -x"], - ["y", " z", " -x"], - ["-z", " x", " y"], - ["y", " -z", " x"], - ["z", " x", " -y"], - ["z", " -x", " y"], - ["-y", " z", " x"], - ["x", " y", " -z"], - ["-x", " y", " z"], - ["x", " -y", " z"], - ["x", " y+1/2", " z+1/2"], - ["z", " x+1/2", " y+1/2"], - ["y", " z+1/2", " x+1/2"], - ["-y", " -z+1/2", " x+1/2"], - ["z", " -x+1/2", " -y+1/2"], - ["-y", " z+1/2", " -x+1/2"], - ["-z", " -x+1/2", " y+1/2"], - ["-z", " x+1/2", " -y+1/2"], - ["y", " -z+1/2", " -x+1/2"], - ["-x", " -y+1/2", " z+1/2"], - ["x", " -y+1/2", " -z+1/2"], - ["-x", " y+1/2", " -z+1/2"], - ["-x", " -y+1/2", " -z+1/2"], - ["-z", " -x+1/2", " -y+1/2"], - ["-y", " -z+1/2", " -x+1/2"], - ["y", " z+1/2", " -x+1/2"], - ["-z", " x+1/2", " y+1/2"], - ["y", " -z+1/2", " x+1/2"], - ["z", " x+1/2", " -y+1/2"], - ["z", " -x+1/2", " y+1/2"], - ["-y", " z+1/2", " x+1/2"], - ["x", " y+1/2", " -z+1/2"], - ["-x", " y+1/2", " z+1/2"], - ["x", " -y+1/2", " z+1/2"], - ["x+1/2", " y", " z+1/2"], - ["z+1/2", " x", " y+1/2"], - ["y+1/2", " z", " x+1/2"], - ["-y+1/2", " -z", " x+1/2"], - ["z+1/2", " -x", " -y+1/2"], - ["-y+1/2", " z", " -x+1/2"], - ["-z+1/2", " -x", " y+1/2"], - ["-z+1/2", " x", " -y+1/2"], - ["y+1/2", " -z", " -x+1/2"], - ["-x+1/2", " -y", " z+1/2"], - ["x+1/2", " -y", " -z+1/2"], - ["-x+1/2", " y", " -z+1/2"], - ["-x+1/2", " -y", " -z+1/2"], - ["-z+1/2", " -x", " -y+1/2"], - ["-y+1/2", " -z", " -x+1/2"], - ["y+1/2", " z", " -x+1/2"], - ["-z+1/2", " x", " y+1/2"], - ["y+1/2", " -z", " x+1/2"], - ["z+1/2", " x", " -y+1/2"], - ["z+1/2", " -x", " y+1/2"], - ["-y+1/2", " z", " x+1/2"], - ["x+1/2", " y", " -z+1/2"], - ["-x+1/2", " y", " z+1/2"], - ["x+1/2", " -y", " z+1/2"], - ["x+1/2", " y+1/2", " z"], - ["z+1/2", " x+1/2", " y"], - ["y+1/2", " z+1/2", " x"], - ["-y+1/2", " -z+1/2", " x"], - ["z+1/2", " -x+1/2", " -y"], - ["-y+1/2", " z+1/2", " -x"], - ["-z+1/2", " -x+1/2", " y"], - ["-z+1/2", " x+1/2", " -y"], - ["y+1/2", " -z+1/2", " -x"], - ["-x+1/2", " -y+1/2", " z"], - ["x+1/2", " -y+1/2", " -z"], - ["-x+1/2", " y+1/2", " -z"], - ["-x+1/2", " -y+1/2", " -z"], - ["-z+1/2", " -x+1/2", " -y"], - ["-y+1/2", " -z+1/2", " -x"], - ["y+1/2", " z+1/2", " -x"], - ["-z+1/2", " x+1/2", " y"], - ["y+1/2", " -z+1/2", " x"], - ["z+1/2", " x+1/2", " -y"], - ["z+1/2", " -x+1/2", " y"], - ["-y+1/2", " z+1/2", " x"], - ["x+1/2", " y+1/2", " -z"], - ["-x+1/2", " y+1/2", " z"], - ["x+1/2", " -y+1/2", " z"], - ], - "F 2 2 3 -1d": [ - ["x", " y", " z"], - ["-x+1/4", " -y+1/4", " -z+1/4"], - ["z", " x", " y"], - ["y", " z", " x"], - ["-y", " -z", " x"], - ["z", " -x", " -y"], - ["-y", " z", " -x"], - ["-z", " -x", " y"], - ["-z", " x", " -y"], - ["y", " -z", " -x"], - ["-z+1/4", " -x+1/4", " -y+1/4"], - ["-y+1/4", " -z+1/4", " -x+1/4"], - ["y+1/4", " z+1/4", " -x+1/4"], - ["-z+1/4", " x+1/4", " y+1/4"], - ["y+1/4", " -z+1/4", " x+1/4"], - ["z+1/4", " x+1/4", " -y+1/4"], - ["z+1/4", " -x+1/4", " y+1/4"], - ["-y+1/4", " z+1/4", " x+1/4"], - ["-x", " -y", " z"], - ["x", " -y", " -z"], - ["-x", " y", " -z"], - ["x+1/4", " y+1/4", " -z+1/4"], - ["-x+1/4", " y+1/4", " z+1/4"], - ["x+1/4", " -y+1/4", " z+1/4"], - ["x", " y+1/2", " z+1/2"], - ["-x+1/4", " -y-1/4", " -z-1/4"], - ["z", " x+1/2", " y+1/2"], - ["y", " z+1/2", " x+1/2"], - ["-y", " -z+1/2", " x+1/2"], - ["z", " -x+1/2", " -y+1/2"], - ["-y", " z+1/2", " -x+1/2"], - ["-z", " -x+1/2", " y+1/2"], - ["-z", " x+1/2", " -y+1/2"], - ["y", " -z+1/2", " -x+1/2"], - ["-z+1/4", " -x-1/4", " -y-1/4"], - ["-y+1/4", " -z-1/4", " -x-1/4"], - ["y+1/4", " z-1/4", " -x-1/4"], - ["-z+1/4", " x-1/4", " y-1/4"], - ["y+1/4", " -z-1/4", " x-1/4"], - ["z+1/4", " x-1/4", " -y-1/4"], - ["z+1/4", " -x-1/4", " y-1/4"], - ["-y+1/4", " z-1/4", " x-1/4"], - ["-x", " -y+1/2", " z+1/2"], - ["x", " -y+1/2", " -z+1/2"], - ["-x", " y+1/2", " -z+1/2"], - ["x+1/4", " y-1/4", " -z-1/4"], - ["-x+1/4", " y-1/4", " z-1/4"], - ["x+1/4", " -y-1/4", " z-1/4"], - ["x+1/2", " y", " z+1/2"], - ["-x-1/4", " -y+1/4", " -z-1/4"], - ["z+1/2", " x", " y+1/2"], - ["y+1/2", " z", " x+1/2"], - ["-y+1/2", " -z", " x+1/2"], - ["z+1/2", " -x", " -y+1/2"], - ["-y+1/2", " z", " -x+1/2"], - ["-z+1/2", " -x", " y+1/2"], - ["-z+1/2", " x", " -y+1/2"], - ["y+1/2", " -z", " -x+1/2"], - ["-z-1/4", " -x+1/4", " -y-1/4"], - ["-y-1/4", " -z+1/4", " -x-1/4"], - ["y-1/4", " z+1/4", " -x-1/4"], - ["-z-1/4", " x+1/4", " y-1/4"], - ["y-1/4", " -z+1/4", " x-1/4"], - ["z-1/4", " x+1/4", " -y-1/4"], - ["z-1/4", " -x+1/4", " y-1/4"], - ["-y-1/4", " z+1/4", " x-1/4"], - ["-x+1/2", " -y", " z+1/2"], - ["x+1/2", " -y", " -z+1/2"], - ["-x+1/2", " y", " -z+1/2"], - ["x-1/4", " y+1/4", " -z-1/4"], - ["-x-1/4", " y+1/4", " z-1/4"], - ["x-1/4", " -y+1/4", " z-1/4"], - ["x+1/2", " y+1/2", " z"], - ["-x-1/4", " -y-1/4", " -z+1/4"], - ["z+1/2", " x+1/2", " y"], - ["y+1/2", " z+1/2", " x"], - ["-y+1/2", " -z+1/2", " x"], - ["z+1/2", " -x+1/2", " -y"], - ["-y+1/2", " z+1/2", " -x"], - ["-z+1/2", " -x+1/2", " y"], - ["-z+1/2", " x+1/2", " -y"], - ["y+1/2", " -z+1/2", " -x"], - ["-z-1/4", " -x-1/4", " -y+1/4"], - ["-y-1/4", " -z-1/4", " -x+1/4"], - ["y-1/4", " z-1/4", " -x+1/4"], - ["-z-1/4", " x-1/4", " y+1/4"], - ["y-1/4", " -z-1/4", " x+1/4"], - ["z-1/4", " x-1/4", " -y+1/4"], - ["z-1/4", " -x-1/4", " y+1/4"], - ["-y-1/4", " z-1/4", " x+1/4"], - ["-x+1/2", " -y+1/2", " z"], - ["x+1/2", " -y+1/2", " -z"], - ["-x+1/2", " y+1/2", " -z"], - ["x-1/4", " y-1/4", " -z+1/4"], - ["-x-1/4", " y-1/4", " z+1/4"], - ["x-1/4", " -y-1/4", " z+1/4"], - ], - "-F 2uv 2vw 3": [ - ["x", " y", " z"], - ["z", " x", " y"], - ["y", " z", " x"], - ["-y+1/4", " -z+1/4", " x"], - ["z", " -x+1/4", " -y+1/4"], - ["-y+1/4", " z", " -x+1/4"], - ["-z+1/4", " -x+1/4", " y"], - ["-z+1/4", " x", " -y+1/4"], - ["y", " -z+1/4", " -x+1/4"], - ["-x+1/4", " -y+1/4", " z"], - ["x", " -y+1/4", " -z+1/4"], - ["-x+1/4", " y", " -z+1/4"], - ["-x", " -y", " -z"], - ["-z", " -x", " -y"], - ["-y", " -z", " -x"], - ["y-1/4", " z-1/4", " -x"], - ["-z", " x-1/4", " y-1/4"], - ["y-1/4", " -z", " x-1/4"], - ["z-1/4", " x-1/4", " -y"], - ["z-1/4", " -x", " y-1/4"], - ["-y", " z-1/4", " x-1/4"], - ["x-1/4", " y-1/4", " -z"], - ["-x", " y-1/4", " z-1/4"], - ["x-1/4", " -y", " z-1/4"], - ["x", " y+1/2", " z+1/2"], - ["z", " x+1/2", " y+1/2"], - ["y", " z+1/2", " x+1/2"], - ["-y+1/4", " -z-1/4", " x+1/2"], - ["z", " -x-1/4", " -y-1/4"], - ["-y+1/4", " z+1/2", " -x-1/4"], - ["-z+1/4", " -x-1/4", " y+1/2"], - ["-z+1/4", " x+1/2", " -y-1/4"], - ["y", " -z-1/4", " -x-1/4"], - ["-x+1/4", " -y-1/4", " z+1/2"], - ["x", " -y-1/4", " -z-1/4"], - ["-x+1/4", " y+1/2", " -z-1/4"], - ["-x", " -y+1/2", " -z+1/2"], - ["-z", " -x+1/2", " -y+1/2"], - ["-y", " -z+1/2", " -x+1/2"], - ["y-1/4", " z+1/4", " -x+1/2"], - ["-z", " x+1/4", " y+1/4"], - ["y-1/4", " -z+1/2", " x+1/4"], - ["z-1/4", " x+1/4", " -y+1/2"], - ["z-1/4", " -x+1/2", " y+1/4"], - ["-y", " z+1/4", " x+1/4"], - ["x-1/4", " y+1/4", " -z+1/2"], - ["-x", " y+1/4", " z+1/4"], - ["x-1/4", " -y+1/2", " z+1/4"], - ["x+1/2", " y", " z+1/2"], - ["z+1/2", " x", " y+1/2"], - ["y+1/2", " z", " x+1/2"], - ["-y-1/4", " -z+1/4", " x+1/2"], - ["z+1/2", " -x+1/4", " -y-1/4"], - ["-y-1/4", " z", " -x-1/4"], - ["-z-1/4", " -x+1/4", " y+1/2"], - ["-z-1/4", " x", " -y-1/4"], - ["y+1/2", " -z+1/4", " -x-1/4"], - ["-x-1/4", " -y+1/4", " z+1/2"], - ["x+1/2", " -y+1/4", " -z-1/4"], - ["-x-1/4", " y", " -z-1/4"], - ["-x+1/2", " -y", " -z+1/2"], - ["-z+1/2", " -x", " -y+1/2"], - ["-y+1/2", " -z", " -x+1/2"], - ["y+1/4", " z-1/4", " -x+1/2"], - ["-z+1/2", " x-1/4", " y+1/4"], - ["y+1/4", " -z", " x+1/4"], - ["z+1/4", " x-1/4", " -y+1/2"], - ["z+1/4", " -x", " y+1/4"], - ["-y+1/2", " z-1/4", " x+1/4"], - ["x+1/4", " y-1/4", " -z+1/2"], - ["-x+1/2", " y-1/4", " z+1/4"], - ["x+1/4", " -y", " z+1/4"], - ["x+1/2", " y+1/2", " z"], - ["z+1/2", " x+1/2", " y"], - ["y+1/2", " z+1/2", " x"], - ["-y-1/4", " -z-1/4", " x"], - ["z+1/2", " -x-1/4", " -y+1/4"], - ["-y-1/4", " z+1/2", " -x+1/4"], - ["-z-1/4", " -x-1/4", " y"], - ["-z-1/4", " x+1/2", " -y+1/4"], - ["y+1/2", " -z-1/4", " -x+1/4"], - ["-x-1/4", " -y-1/4", " z"], - ["x+1/2", " -y-1/4", " -z+1/4"], - ["-x-1/4", " y+1/2", " -z+1/4"], - ["-x+1/2", " -y+1/2", " -z"], - ["-z+1/2", " -x+1/2", " -y"], - ["-y+1/2", " -z+1/2", " -x"], - ["y+1/4", " z+1/4", " -x"], - ["-z+1/2", " x+1/4", " y-1/4"], - ["y+1/4", " -z+1/2", " x-1/4"], - ["z+1/4", " x+1/4", " -y"], - ["z+1/4", " -x+1/2", " y-1/4"], - ["-y+1/2", " z+1/4", " x-1/4"], - ["x+1/4", " y+1/4", " -z"], - ["-x+1/2", " y+1/4", " z-1/4"], - ["x+1/4", " -y+1/2", " z-1/4"], - ], - "-I 2 2 3": [ - ["x", " y", " z"], - ["z", " x", " y"], - ["y", " z", " x"], - ["-y", " -z", " x"], - ["z", " -x", " -y"], - ["-y", " z", " -x"], - ["-z", " -x", " y"], - ["-z", " x", " -y"], - ["y", " -z", " -x"], - ["-x", " -y", " z"], - ["x", " -y", " -z"], - ["-x", " y", " -z"], - ["-x", " -y", " -z"], - ["-z", " -x", " -y"], - ["-y", " -z", " -x"], - ["y", " z", " -x"], - ["-z", " x", " y"], - ["y", " -z", " x"], - ["z", " x", " -y"], - ["z", " -x", " y"], - ["-y", " z", " x"], - ["x", " y", " -z"], - ["-x", " y", " z"], - ["x", " -y", " z"], - ["x+1/2", " y+1/2", " z+1/2"], - ["z+1/2", " x+1/2", " y+1/2"], - ["y+1/2", " z+1/2", " x+1/2"], - ["-y+1/2", " -z+1/2", " x+1/2"], - ["z+1/2", " -x+1/2", " -y+1/2"], - ["-y+1/2", " z+1/2", " -x+1/2"], - ["-z+1/2", " -x+1/2", " y+1/2"], - ["-z+1/2", " x+1/2", " -y+1/2"], - ["y+1/2", " -z+1/2", " -x+1/2"], - ["-x+1/2", " -y+1/2", " z+1/2"], - ["x+1/2", " -y+1/2", " -z+1/2"], - ["-x+1/2", " y+1/2", " -z+1/2"], - ["-x+1/2", " -y+1/2", " -z+1/2"], - ["-z+1/2", " -x+1/2", " -y+1/2"], - ["-y+1/2", " -z+1/2", " -x+1/2"], - ["y+1/2", " z+1/2", " -x+1/2"], - ["-z+1/2", " x+1/2", " y+1/2"], - ["y+1/2", " -z+1/2", " x+1/2"], - ["z+1/2", " x+1/2", " -y+1/2"], - ["z+1/2", " -x+1/2", " y+1/2"], - ["-y+1/2", " z+1/2", " x+1/2"], - ["x+1/2", " y+1/2", " -z+1/2"], - ["-x+1/2", " y+1/2", " z+1/2"], - ["x+1/2", " -y+1/2", " z+1/2"], - ], - "-P 2ac 2ab 3": [ - ["x", " y", " z"], - ["z", " x", " y"], - ["y", " z", " x"], - ["-y+1/2", " -z", " x+1/2"], - ["z+1/2", " -x+1/2", " -y"], - ["-y", " z+1/2", " -x+1/2"], - ["-z+1/2", " -x", " y+1/2"], - ["-z", " x+1/2", " -y+1/2"], - ["y+1/2", " -z+1/2", " -x"], - ["-x+1/2", " -y", " z+1/2"], - ["x+1/2", " -y+1/2", " -z"], - ["-x", " y+1/2", " -z+1/2"], - ["-x", " -y", " -z"], - ["-z", " -x", " -y"], - ["-y", " -z", " -x"], - ["y+1/2", " z", " -x+1/2"], - ["-z+1/2", " x+1/2", " y"], - ["y", " -z+1/2", " x+1/2"], - ["z+1/2", " x", " -y+1/2"], - ["z", " -x+1/2", " y+1/2"], - ["-y+1/2", " z+1/2", " x"], - ["x+1/2", " y", " -z+1/2"], - ["-x+1/2", " y+1/2", " z"], - ["x", " -y+1/2", " z+1/2"], - ], - "-I 2b 2c 3": [ - ["x", " y", " z"], - ["z", " x", " y"], - ["y", " z", " x"], - ["-y", " -z+1/2", " x"], - ["z", " -x", " -y+1/2"], - ["-y+1/2", " z", " -x"], - ["-z", " -x+1/2", " y"], - ["-z+1/2", " x", " -y"], - ["y", " -z", " -x+1/2"], - ["-x", " -y+1/2", " z"], - ["x", " -y", " -z+1/2"], - ["-x+1/2", " y", " -z"], - ["-x", " -y", " -z"], - ["-z", " -x", " -y"], - ["-y", " -z", " -x"], - ["y", " z+1/2", " -x"], - ["-z", " x", " y+1/2"], - ["y+1/2", " -z", " x"], - ["z", " x+1/2", " -y"], - ["z+1/2", " -x", " y"], - ["-y", " z", " x+1/2"], - ["x", " y+1/2", " -z"], - ["-x", " y", " z+1/2"], - ["x+1/2", " -y", " z"], - ["x+1/2", " y+1/2", " z+1/2"], - ["z+1/2", " x+1/2", " y+1/2"], - ["y+1/2", " z+1/2", " x+1/2"], - ["-y+1/2", " -z", " x+1/2"], - ["z+1/2", " -x+1/2", " -y"], - ["-y", " z+1/2", " -x+1/2"], - ["-z+1/2", " -x", " y+1/2"], - ["-z", " x+1/2", " -y+1/2"], - ["y+1/2", " -z+1/2", " -x"], - ["-x+1/2", " -y", " z+1/2"], - ["x+1/2", " -y+1/2", " -z"], - ["-x", " y+1/2", " -z+1/2"], - ["-x+1/2", " -y+1/2", " -z+1/2"], - ["-z+1/2", " -x+1/2", " -y+1/2"], - ["-y+1/2", " -z+1/2", " -x+1/2"], - ["y+1/2", " z", " -x+1/2"], - ["-z+1/2", " x+1/2", " y"], - ["y", " -z+1/2", " x+1/2"], - ["z+1/2", " x", " -y+1/2"], - ["z", " -x+1/2", " y+1/2"], - ["-y+1/2", " z+1/2", " x"], - ["x+1/2", " y", " -z+1/2"], - ["-x+1/2", " y+1/2", " z"], - ["x", " -y+1/2", " z+1/2"], - ], - "P 4 2 3": [ - ["x", " y", " z"], - ["-y", " x", " z"], - ["-x", " -y", " z"], - ["y", " -x", " z"], - ["x", " -z", " y"], - ["x", " -y", " -z"], - ["x", " z", " -y"], - ["z", " y", " -x"], - ["-x", " y", " -z"], - ["-z", " y", " x"], - ["z", " x", " y"], - ["y", " z", " x"], - ["-y", " -z", " x"], - ["z", " -x", " -y"], - ["-y", " z", " -x"], - ["-z", " -x", " y"], - ["-z", " x", " -y"], - ["y", " -z", " -x"], - ["y", " x", " -z"], - ["-y", " -x", " -z"], - ["-x", " z", " y"], - ["-x", " -z", " -y"], - ["z", " -y", " x"], - ["-z", " -y", " -x"], - ], - "P 4n 2 3": [ - ["x", " y", " z"], - ["-y+1/2", " x+1/2", " z+1/2"], - ["-x", " -y", " z"], - ["y+1/2", " -x+1/2", " z+1/2"], - ["x+1/2", " -z+1/2", " y+1/2"], - ["x", " -y", " -z"], - ["x+1/2", " z+1/2", " -y+1/2"], - ["z+1/2", " y+1/2", " -x+1/2"], - ["-x", " y", " -z"], - ["-z+1/2", " y+1/2", " x+1/2"], - ["z", " x", " y"], - ["y", " z", " x"], - ["-y", " -z", " x"], - ["z", " -x", " -y"], - ["-y", " z", " -x"], - ["-z", " -x", " y"], - ["-z", " x", " -y"], - ["y", " -z", " -x"], - ["y+1/2", " x+1/2", " -z+1/2"], - ["-y+1/2", " -x+1/2", " -z+1/2"], - ["-x+1/2", " z+1/2", " y+1/2"], - ["-x+1/2", " -z+1/2", " -y+1/2"], - ["z+1/2", " -y+1/2", " x+1/2"], - ["-z+1/2", " -y+1/2", " -x+1/2"], - ], - "F 4 2 3": [ - ["x", " y", " z"], - ["-y", " x", " z"], - ["-x", " -y", " z"], - ["y", " -x", " z"], - ["x", " -z", " y"], - ["x", " -y", " -z"], - ["x", " z", " -y"], - ["z", " y", " -x"], - ["-x", " y", " -z"], - ["-z", " y", " x"], - ["z", " x", " y"], - ["y", " z", " x"], - ["-y", " -z", " x"], - ["z", " -x", " -y"], - ["-y", " z", " -x"], - ["-z", " -x", " y"], - ["-z", " x", " -y"], - ["y", " -z", " -x"], - ["y", " x", " -z"], - ["-y", " -x", " -z"], - ["-x", " z", " y"], - ["-x", " -z", " -y"], - ["z", " -y", " x"], - ["-z", " -y", " -x"], - ["x", " y+1/2", " z+1/2"], - ["-y", " x+1/2", " z+1/2"], - ["-x", " -y+1/2", " z+1/2"], - ["y", " -x+1/2", " z+1/2"], - ["x", " -z+1/2", " y+1/2"], - ["x", " -y+1/2", " -z+1/2"], - ["x", " z+1/2", " -y+1/2"], - ["z", " y+1/2", " -x+1/2"], - ["-x", " y+1/2", " -z+1/2"], - ["-z", " y+1/2", " x+1/2"], - ["z", " x+1/2", " y+1/2"], - ["y", " z+1/2", " x+1/2"], - ["-y", " -z+1/2", " x+1/2"], - ["z", " -x+1/2", " -y+1/2"], - ["-y", " z+1/2", " -x+1/2"], - ["-z", " -x+1/2", " y+1/2"], - ["-z", " x+1/2", " -y+1/2"], - ["y", " -z+1/2", " -x+1/2"], - ["y", " x+1/2", " -z+1/2"], - ["-y", " -x+1/2", " -z+1/2"], - ["-x", " z+1/2", " y+1/2"], - ["-x", " -z+1/2", " -y+1/2"], - ["z", " -y+1/2", " x+1/2"], - ["-z", " -y+1/2", " -x+1/2"], - ["x+1/2", " y", " z+1/2"], - ["-y+1/2", " x", " z+1/2"], - ["-x+1/2", " -y", " z+1/2"], - ["y+1/2", " -x", " z+1/2"], - ["x+1/2", " -z", " y+1/2"], - ["x+1/2", " -y", " -z+1/2"], - ["x+1/2", " z", " -y+1/2"], - ["z+1/2", " y", " -x+1/2"], - ["-x+1/2", " y", " -z+1/2"], - ["-z+1/2", " y", " x+1/2"], - ["z+1/2", " x", " y+1/2"], - ["y+1/2", " z", " x+1/2"], - ["-y+1/2", " -z", " x+1/2"], - ["z+1/2", " -x", " -y+1/2"], - ["-y+1/2", " z", " -x+1/2"], - ["-z+1/2", " -x", " y+1/2"], - ["-z+1/2", " x", " -y+1/2"], - ["y+1/2", " -z", " -x+1/2"], - ["y+1/2", " x", " -z+1/2"], - ["-y+1/2", " -x", " -z+1/2"], - ["-x+1/2", " z", " y+1/2"], - ["-x+1/2", " -z", " -y+1/2"], - ["z+1/2", " -y", " x+1/2"], - ["-z+1/2", " -y", " -x+1/2"], - ["x+1/2", " y+1/2", " z"], - ["-y+1/2", " x+1/2", " z"], - ["-x+1/2", " -y+1/2", " z"], - ["y+1/2", " -x+1/2", " z"], - ["x+1/2", " -z+1/2", " y"], - ["x+1/2", " -y+1/2", " -z"], - ["x+1/2", " z+1/2", " -y"], - ["z+1/2", " y+1/2", " -x"], - ["-x+1/2", " y+1/2", " -z"], - ["-z+1/2", " y+1/2", " x"], - ["z+1/2", " x+1/2", " y"], - ["y+1/2", " z+1/2", " x"], - ["-y+1/2", " -z+1/2", " x"], - ["z+1/2", " -x+1/2", " -y"], - ["-y+1/2", " z+1/2", " -x"], - ["-z+1/2", " -x+1/2", " y"], - ["-z+1/2", " x+1/2", " -y"], - ["y+1/2", " -z+1/2", " -x"], - ["y+1/2", " x+1/2", " -z"], - ["-y+1/2", " -x+1/2", " -z"], - ["-x+1/2", " z+1/2", " y"], - ["-x+1/2", " -z+1/2", " -y"], - ["z+1/2", " -y+1/2", " x"], - ["-z+1/2", " -y+1/2", " -x"], - ], - "F 4d 2 3": [ - ["x", " y", " z"], - ["-y+1/4", " x+1/4", " z+1/4"], - ["-x", " -y", " z"], - ["y+1/4", " -x+1/4", " z+1/4"], - ["x+1/4", " -z+1/4", " y+1/4"], - ["x", " -y", " -z"], - ["x+1/4", " z+1/4", " -y+1/4"], - ["z+1/4", " y+1/4", " -x+1/4"], - ["-x", " y", " -z"], - ["-z+1/4", " y+1/4", " x+1/4"], - ["z", " x", " y"], - ["y", " z", " x"], - ["-y", " -z", " x"], - ["z", " -x", " -y"], - ["-y", " z", " -x"], - ["-z", " -x", " y"], - ["-z", " x", " -y"], - ["y", " -z", " -x"], - ["y+1/4", " x+1/4", " -z+1/4"], - ["-y+1/4", " -x+1/4", " -z+1/4"], - ["-x+1/4", " z+1/4", " y+1/4"], - ["-x+1/4", " -z+1/4", " -y+1/4"], - ["z+1/4", " -y+1/4", " x+1/4"], - ["-z+1/4", " -y+1/4", " -x+1/4"], - ["x", " y+1/2", " z+1/2"], - ["-y+1/4", " x-1/4", " z-1/4"], - ["-x", " -y+1/2", " z+1/2"], - ["y+1/4", " -x-1/4", " z-1/4"], - ["x+1/4", " -z-1/4", " y-1/4"], - ["x", " -y+1/2", " -z+1/2"], - ["x+1/4", " z-1/4", " -y-1/4"], - ["z+1/4", " y-1/4", " -x-1/4"], - ["-x", " y+1/2", " -z+1/2"], - ["-z+1/4", " y-1/4", " x-1/4"], - ["z", " x+1/2", " y+1/2"], - ["y", " z+1/2", " x+1/2"], - ["-y", " -z+1/2", " x+1/2"], - ["z", " -x+1/2", " -y+1/2"], - ["-y", " z+1/2", " -x+1/2"], - ["-z", " -x+1/2", " y+1/2"], - ["-z", " x+1/2", " -y+1/2"], - ["y", " -z+1/2", " -x+1/2"], - ["y+1/4", " x-1/4", " -z-1/4"], - ["-y+1/4", " -x-1/4", " -z-1/4"], - ["-x+1/4", " z-1/4", " y-1/4"], - ["-x+1/4", " -z-1/4", " -y-1/4"], - ["z+1/4", " -y-1/4", " x-1/4"], - ["-z+1/4", " -y-1/4", " -x-1/4"], - ["x+1/2", " y", " z+1/2"], - ["-y-1/4", " x+1/4", " z-1/4"], - ["-x+1/2", " -y", " z+1/2"], - ["y-1/4", " -x+1/4", " z-1/4"], - ["x-1/4", " -z+1/4", " y-1/4"], - ["x+1/2", " -y", " -z+1/2"], - ["x-1/4", " z+1/4", " -y-1/4"], - ["z-1/4", " y+1/4", " -x-1/4"], - ["-x+1/2", " y", " -z+1/2"], - ["-z-1/4", " y+1/4", " x-1/4"], - ["z+1/2", " x", " y+1/2"], - ["y+1/2", " z", " x+1/2"], - ["-y+1/2", " -z", " x+1/2"], - ["z+1/2", " -x", " -y+1/2"], - ["-y+1/2", " z", " -x+1/2"], - ["-z+1/2", " -x", " y+1/2"], - ["-z+1/2", " x", " -y+1/2"], - ["y+1/2", " -z", " -x+1/2"], - ["y-1/4", " x+1/4", " -z-1/4"], - ["-y-1/4", " -x+1/4", " -z-1/4"], - ["-x-1/4", " z+1/4", " y-1/4"], - ["-x-1/4", " -z+1/4", " -y-1/4"], - ["z-1/4", " -y+1/4", " x-1/4"], - ["-z-1/4", " -y+1/4", " -x-1/4"], - ["x+1/2", " y+1/2", " z"], - ["-y-1/4", " x-1/4", " z+1/4"], - ["-x+1/2", " -y+1/2", " z"], - ["y-1/4", " -x-1/4", " z+1/4"], - ["x-1/4", " -z-1/4", " y+1/4"], - ["x+1/2", " -y+1/2", " -z"], - ["x-1/4", " z-1/4", " -y+1/4"], - ["z-1/4", " y-1/4", " -x+1/4"], - ["-x+1/2", " y+1/2", " -z"], - ["-z-1/4", " y-1/4", " x+1/4"], - ["z+1/2", " x+1/2", " y"], - ["y+1/2", " z+1/2", " x"], - ["-y+1/2", " -z+1/2", " x"], - ["z+1/2", " -x+1/2", " -y"], - ["-y+1/2", " z+1/2", " -x"], - ["-z+1/2", " -x+1/2", " y"], - ["-z+1/2", " x+1/2", " -y"], - ["y+1/2", " -z+1/2", " -x"], - ["y-1/4", " x-1/4", " -z+1/4"], - ["-y-1/4", " -x-1/4", " -z+1/4"], - ["-x-1/4", " z-1/4", " y+1/4"], - ["-x-1/4", " -z-1/4", " -y+1/4"], - ["z-1/4", " -y-1/4", " x+1/4"], - ["-z-1/4", " -y-1/4", " -x+1/4"], - ], - "I 4 2 3": [ - ["x", " y", " z"], - ["-y", " x", " z"], - ["-x", " -y", " z"], - ["y", " -x", " z"], - ["x", " -z", " y"], - ["x", " -y", " -z"], - ["x", " z", " -y"], - ["z", " y", " -x"], - ["-x", " y", " -z"], - ["-z", " y", " x"], - ["z", " x", " y"], - ["y", " z", " x"], - ["-y", " -z", " x"], - ["z", " -x", " -y"], - ["-y", " z", " -x"], - ["-z", " -x", " y"], - ["-z", " x", " -y"], - ["y", " -z", " -x"], - ["y", " x", " -z"], - ["-y", " -x", " -z"], - ["-x", " z", " y"], - ["-x", " -z", " -y"], - ["z", " -y", " x"], - ["-z", " -y", " -x"], - ["x+1/2", " y+1/2", " z+1/2"], - ["-y+1/2", " x+1/2", " z+1/2"], - ["-x+1/2", " -y+1/2", " z+1/2"], - ["y+1/2", " -x+1/2", " z+1/2"], - ["x+1/2", " -z+1/2", " y+1/2"], - ["x+1/2", " -y+1/2", " -z+1/2"], - ["x+1/2", " z+1/2", " -y+1/2"], - ["z+1/2", " y+1/2", " -x+1/2"], - ["-x+1/2", " y+1/2", " -z+1/2"], - ["-z+1/2", " y+1/2", " x+1/2"], - ["z+1/2", " x+1/2", " y+1/2"], - ["y+1/2", " z+1/2", " x+1/2"], - ["-y+1/2", " -z+1/2", " x+1/2"], - ["z+1/2", " -x+1/2", " -y+1/2"], - ["-y+1/2", " z+1/2", " -x+1/2"], - ["-z+1/2", " -x+1/2", " y+1/2"], - ["-z+1/2", " x+1/2", " -y+1/2"], - ["y+1/2", " -z+1/2", " -x+1/2"], - ["y+1/2", " x+1/2", " -z+1/2"], - ["-y+1/2", " -x+1/2", " -z+1/2"], - ["-x+1/2", " z+1/2", " y+1/2"], - ["-x+1/2", " -z+1/2", " -y+1/2"], - ["z+1/2", " -y+1/2", " x+1/2"], - ["-z+1/2", " -y+1/2", " -x+1/2"], - ], - "P 4acd 2ab 3": [ - ["x", " y", " z"], - ["-y-1/4", " x+1/4", " z-1/4"], - ["-x+1/2", " -y", " z+1/2"], - ["y-1/4", " -x-1/4", " z+1/4"], - ["x-1/4", " -z-1/4", " y+1/4"], - ["x+1/2", " -y+1/2", " -z"], - ["x+1/4", " z-1/4", " -y-1/4"], - ["z+1/4", " y-1/4", " -x-1/4"], - ["-x", " y+1/2", " -z+1/2"], - ["-z-1/4", " y+1/4", " x-1/4"], - ["z", " x", " y"], - ["y", " z", " x"], - ["-y+1/2", " -z", " x+1/2"], - ["z+1/2", " -x+1/2", " -y"], - ["-y", " z+1/2", " -x+1/2"], - ["-z+1/2", " -x", " y+1/2"], - ["-z", " x+1/2", " -y+1/2"], - ["y+1/2", " -z+1/2", " -x"], - ["y+1/4", " x-1/4", " -z-1/4"], - ["-y+1/4", " -x+1/4", " -z+1/4"], - ["-x-1/4", " z+1/4", " y-1/4"], - ["-x+1/4", " -z+1/4", " -y+1/4"], - ["z-1/4", " -y-1/4", " x+1/4"], - ["-z+1/4", " -y+1/4", " -x+1/4"], - ], - "P 4bd 2ab 3": [ - ["x", " y", " z"], - ["-y+1/4", " x-1/4", " z+1/4"], - ["-x+1/2", " -y", " z+1/2"], - ["y+1/4", " -x+1/4", " z-1/4"], - ["x+1/4", " -z+1/4", " y-1/4"], - ["x+1/2", " -y+1/2", " -z"], - ["x-1/4", " z+1/4", " -y+1/4"], - ["z-1/4", " y+1/4", " -x+1/4"], - ["-x", " y+1/2", " -z+1/2"], - ["-z+1/4", " y-1/4", " x+1/4"], - ["z", " x", " y"], - ["y", " z", " x"], - ["-y+1/2", " -z", " x+1/2"], - ["z+1/2", " -x+1/2", " -y"], - ["-y", " z+1/2", " -x+1/2"], - ["-z+1/2", " -x", " y+1/2"], - ["-z", " x+1/2", " -y+1/2"], - ["y+1/2", " -z+1/2", " -x"], - ["y-1/4", " x+1/4", " -z+1/4"], - ["-y-1/4", " -x-1/4", " -z-1/4"], - ["-x+1/4", " z-1/4", " y+1/4"], - ["-x-1/4", " -z-1/4", " -y-1/4"], - ["z+1/4", " -y+1/4", " x-1/4"], - ["-z-1/4", " -y-1/4", " -x-1/4"], - ], - "I 4bd 2c 3": [ - ["x", " y", " z"], - ["-y+1/4", " x-1/4", " z+1/4"], - ["-x", " -y+1/2", " z"], - ["y+1/4", " -x+1/4", " z-1/4"], - ["x+1/4", " -z+1/4", " y-1/4"], - ["x", " -y", " -z+1/2"], - ["x-1/4", " z+1/4", " -y+1/4"], - ["z-1/4", " y+1/4", " -x+1/4"], - ["-x+1/2", " y", " -z"], - ["-z+1/4", " y-1/4", " x+1/4"], - ["z", " x", " y"], - ["y", " z", " x"], - ["-y", " -z+1/2", " x"], - ["z", " -x", " -y+1/2"], - ["-y+1/2", " z", " -x"], - ["-z", " -x+1/2", " y"], - ["-z+1/2", " x", " -y"], - ["y", " -z", " -x+1/2"], - ["y-1/4", " x+1/4", " -z+1/4"], - ["-y+1/4", " -x+1/4", " -z+1/4"], - ["-x+1/4", " z-1/4", " y+1/4"], - ["-x+1/4", " -z+1/4", " -y+1/4"], - ["z+1/4", " -y+1/4", " x-1/4"], - ["-z+1/4", " -y+1/4", " -x+1/4"], - ["x+1/2", " y+1/2", " z+1/2"], - ["-y-1/4", " x+1/4", " z-1/4"], - ["-x+1/2", " -y", " z+1/2"], - ["y-1/4", " -x-1/4", " z+1/4"], - ["x-1/4", " -z-1/4", " y+1/4"], - ["x+1/2", " -y+1/2", " -z"], - ["x+1/4", " z-1/4", " -y-1/4"], - ["z+1/4", " y-1/4", " -x-1/4"], - ["-x", " y+1/2", " -z+1/2"], - ["-z-1/4", " y+1/4", " x-1/4"], - ["z+1/2", " x+1/2", " y+1/2"], - ["y+1/2", " z+1/2", " x+1/2"], - ["-y+1/2", " -z", " x+1/2"], - ["z+1/2", " -x+1/2", " -y"], - ["-y", " z+1/2", " -x+1/2"], - ["-z+1/2", " -x", " y+1/2"], - ["-z", " x+1/2", " -y+1/2"], - ["y+1/2", " -z+1/2", " -x"], - ["y+1/4", " x-1/4", " -z-1/4"], - ["-y-1/4", " -x-1/4", " -z-1/4"], - ["-x-1/4", " z+1/4", " y-1/4"], - ["-x-1/4", " -z-1/4", " -y-1/4"], - ["z-1/4", " -y-1/4", " x+1/4"], - ["-z-1/4", " -y-1/4", " -x-1/4"], - ], - "P -4 2 3": [ - ["x", " y", " z"], - ["y", " -x", " -z"], - ["-x", " -y", " z"], - ["-y", " x", " -z"], - ["-x", " z", " -y"], - ["x", " -y", " -z"], - ["-x", " -z", " y"], - ["-z", " -y", " x"], - ["-x", " y", " -z"], - ["z", " -y", " -x"], - ["z", " x", " y"], - ["y", " z", " x"], - ["-y", " -z", " x"], - ["z", " -x", " -y"], - ["-y", " z", " -x"], - ["-z", " -x", " y"], - ["-z", " x", " -y"], - ["y", " -z", " -x"], - ["-y", " -x", " z"], - ["y", " x", " z"], - ["x", " -z", " -y"], - ["x", " z", " y"], - ["-z", " y", " -x"], - ["z", " y", " x"], - ], - "F -4 2 3": [ - ["x", " y", " z"], - ["y", " -x", " -z"], - ["-x", " -y", " z"], - ["-y", " x", " -z"], - ["-x", " z", " -y"], - ["x", " -y", " -z"], - ["-x", " -z", " y"], - ["-z", " -y", " x"], - ["-x", " y", " -z"], - ["z", " -y", " -x"], - ["z", " x", " y"], - ["y", " z", " x"], - ["-y", " -z", " x"], - ["z", " -x", " -y"], - ["-y", " z", " -x"], - ["-z", " -x", " y"], - ["-z", " x", " -y"], - ["y", " -z", " -x"], - ["-y", " -x", " z"], - ["y", " x", " z"], - ["x", " -z", " -y"], - ["x", " z", " y"], - ["-z", " y", " -x"], - ["z", " y", " x"], - ["x", " y+1/2", " z+1/2"], - ["y", " -x+1/2", " -z+1/2"], - ["-x", " -y+1/2", " z+1/2"], - ["-y", " x+1/2", " -z+1/2"], - ["-x", " z+1/2", " -y+1/2"], - ["x", " -y+1/2", " -z+1/2"], - ["-x", " -z+1/2", " y+1/2"], - ["-z", " -y+1/2", " x+1/2"], - ["-x", " y+1/2", " -z+1/2"], - ["z", " -y+1/2", " -x+1/2"], - ["z", " x+1/2", " y+1/2"], - ["y", " z+1/2", " x+1/2"], - ["-y", " -z+1/2", " x+1/2"], - ["z", " -x+1/2", " -y+1/2"], - ["-y", " z+1/2", " -x+1/2"], - ["-z", " -x+1/2", " y+1/2"], - ["-z", " x+1/2", " -y+1/2"], - ["y", " -z+1/2", " -x+1/2"], - ["-y", " -x+1/2", " z+1/2"], - ["y", " x+1/2", " z+1/2"], - ["x", " -z+1/2", " -y+1/2"], - ["x", " z+1/2", " y+1/2"], - ["-z", " y+1/2", " -x+1/2"], - ["z", " y+1/2", " x+1/2"], - ["x+1/2", " y", " z+1/2"], - ["y+1/2", " -x", " -z+1/2"], - ["-x+1/2", " -y", " z+1/2"], - ["-y+1/2", " x", " -z+1/2"], - ["-x+1/2", " z", " -y+1/2"], - ["x+1/2", " -y", " -z+1/2"], - ["-x+1/2", " -z", " y+1/2"], - ["-z+1/2", " -y", " x+1/2"], - ["-x+1/2", " y", " -z+1/2"], - ["z+1/2", " -y", " -x+1/2"], - ["z+1/2", " x", " y+1/2"], - ["y+1/2", " z", " x+1/2"], - ["-y+1/2", " -z", " x+1/2"], - ["z+1/2", " -x", " -y+1/2"], - ["-y+1/2", " z", " -x+1/2"], - ["-z+1/2", " -x", " y+1/2"], - ["-z+1/2", " x", " -y+1/2"], - ["y+1/2", " -z", " -x+1/2"], - ["-y+1/2", " -x", " z+1/2"], - ["y+1/2", " x", " z+1/2"], - ["x+1/2", " -z", " -y+1/2"], - ["x+1/2", " z", " y+1/2"], - ["-z+1/2", " y", " -x+1/2"], - ["z+1/2", " y", " x+1/2"], - ["x+1/2", " y+1/2", " z"], - ["y+1/2", " -x+1/2", " -z"], - ["-x+1/2", " -y+1/2", " z"], - ["-y+1/2", " x+1/2", " -z"], - ["-x+1/2", " z+1/2", " -y"], - ["x+1/2", " -y+1/2", " -z"], - ["-x+1/2", " -z+1/2", " y"], - ["-z+1/2", " -y+1/2", " x"], - ["-x+1/2", " y+1/2", " -z"], - ["z+1/2", " -y+1/2", " -x"], - ["z+1/2", " x+1/2", " y"], - ["y+1/2", " z+1/2", " x"], - ["-y+1/2", " -z+1/2", " x"], - ["z+1/2", " -x+1/2", " -y"], - ["-y+1/2", " z+1/2", " -x"], - ["-z+1/2", " -x+1/2", " y"], - ["-z+1/2", " x+1/2", " -y"], - ["y+1/2", " -z+1/2", " -x"], - ["-y+1/2", " -x+1/2", " z"], - ["y+1/2", " x+1/2", " z"], - ["x+1/2", " -z+1/2", " -y"], - ["x+1/2", " z+1/2", " y"], - ["-z+1/2", " y+1/2", " -x"], - ["z+1/2", " y+1/2", " x"], - ], - "I -4 2 3": [ - ["x", " y", " z"], - ["y", " -x", " -z"], - ["-x", " -y", " z"], - ["-y", " x", " -z"], - ["-x", " z", " -y"], - ["x", " -y", " -z"], - ["-x", " -z", " y"], - ["-z", " -y", " x"], - ["-x", " y", " -z"], - ["z", " -y", " -x"], - ["z", " x", " y"], - ["y", " z", " x"], - ["-y", " -z", " x"], - ["z", " -x", " -y"], - ["-y", " z", " -x"], - ["-z", " -x", " y"], - ["-z", " x", " -y"], - ["y", " -z", " -x"], - ["-y", " -x", " z"], - ["y", " x", " z"], - ["x", " -z", " -y"], - ["x", " z", " y"], - ["-z", " y", " -x"], - ["z", " y", " x"], - ["x+1/2", " y+1/2", " z+1/2"], - ["y+1/2", " -x+1/2", " -z+1/2"], - ["-x+1/2", " -y+1/2", " z+1/2"], - ["-y+1/2", " x+1/2", " -z+1/2"], - ["-x+1/2", " z+1/2", " -y+1/2"], - ["x+1/2", " -y+1/2", " -z+1/2"], - ["-x+1/2", " -z+1/2", " y+1/2"], - ["-z+1/2", " -y+1/2", " x+1/2"], - ["-x+1/2", " y+1/2", " -z+1/2"], - ["z+1/2", " -y+1/2", " -x+1/2"], - ["z+1/2", " x+1/2", " y+1/2"], - ["y+1/2", " z+1/2", " x+1/2"], - ["-y+1/2", " -z+1/2", " x+1/2"], - ["z+1/2", " -x+1/2", " -y+1/2"], - ["-y+1/2", " z+1/2", " -x+1/2"], - ["-z+1/2", " -x+1/2", " y+1/2"], - ["-z+1/2", " x+1/2", " -y+1/2"], - ["y+1/2", " -z+1/2", " -x+1/2"], - ["-y+1/2", " -x+1/2", " z+1/2"], - ["y+1/2", " x+1/2", " z+1/2"], - ["x+1/2", " -z+1/2", " -y+1/2"], - ["x+1/2", " z+1/2", " y+1/2"], - ["-z+1/2", " y+1/2", " -x+1/2"], - ["z+1/2", " y+1/2", " x+1/2"], - ], - "P -4n 2 3": [ - ["x", " y", " z"], - ["y+1/2", " -x+1/2", " -z+1/2"], - ["-x", " -y", " z"], - ["-y+1/2", " x+1/2", " -z+1/2"], - ["-x+1/2", " z+1/2", " -y+1/2"], - ["x", " -y", " -z"], - ["-x+1/2", " -z+1/2", " y+1/2"], - ["-z+1/2", " -y+1/2", " x+1/2"], - ["-x", " y", " -z"], - ["z+1/2", " -y+1/2", " -x+1/2"], - ["z", " x", " y"], - ["y", " z", " x"], - ["-y", " -z", " x"], - ["z", " -x", " -y"], - ["-y", " z", " -x"], - ["-z", " -x", " y"], - ["-z", " x", " -y"], - ["y", " -z", " -x"], - ["-y+1/2", " -x+1/2", " z+1/2"], - ["y+1/2", " x+1/2", " z+1/2"], - ["x+1/2", " -z+1/2", " -y+1/2"], - ["x+1/2", " z+1/2", " y+1/2"], - ["-z+1/2", " y+1/2", " -x+1/2"], - ["z+1/2", " y+1/2", " x+1/2"], - ], - "F -4c 2 3": [ - ["x", " y", " z"], - ["y", " -x", " -z+1/2"], - ["-x", " -y", " z"], - ["-y", " x", " -z+1/2"], - ["-x", " z", " -y+1/2"], - ["x", " -y", " -z"], - ["-x", " -z", " y+1/2"], - ["-z", " -y", " x+1/2"], - ["-x", " y", " -z"], - ["z", " -y", " -x+1/2"], - ["z", " x", " y"], - ["y", " z", " x"], - ["-y", " -z", " x"], - ["z", " -x", " -y"], - ["-y", " z", " -x"], - ["-z", " -x", " y"], - ["-z", " x", " -y"], - ["y", " -z", " -x"], - ["-y", " -x", " z+1/2"], - ["y", " x", " z+1/2"], - ["x", " -z", " -y+1/2"], - ["x", " z", " y+1/2"], - ["-z", " y", " -x+1/2"], - ["z", " y", " x+1/2"], - ["x", " y+1/2", " z+1/2"], - ["y", " -x+1/2", " -z"], - ["-x", " -y+1/2", " z+1/2"], - ["-y", " x+1/2", " -z"], - ["-x", " z+1/2", " -y"], - ["x", " -y+1/2", " -z+1/2"], - ["-x", " -z+1/2", " y"], - ["-z", " -y+1/2", " x"], - ["-x", " y+1/2", " -z+1/2"], - ["z", " -y+1/2", " -x"], - ["z", " x+1/2", " y+1/2"], - ["y", " z+1/2", " x+1/2"], - ["-y", " -z+1/2", " x+1/2"], - ["z", " -x+1/2", " -y+1/2"], - ["-y", " z+1/2", " -x+1/2"], - ["-z", " -x+1/2", " y+1/2"], - ["-z", " x+1/2", " -y+1/2"], - ["y", " -z+1/2", " -x+1/2"], - ["-y", " -x+1/2", " z"], - ["y", " x+1/2", " z"], - ["x", " -z+1/2", " -y"], - ["x", " z+1/2", " y"], - ["-z", " y+1/2", " -x"], - ["z", " y+1/2", " x"], - ["x+1/2", " y", " z+1/2"], - ["y+1/2", " -x", " -z"], - ["-x+1/2", " -y", " z+1/2"], - ["-y+1/2", " x", " -z"], - ["-x+1/2", " z", " -y"], - ["x+1/2", " -y", " -z+1/2"], - ["-x+1/2", " -z", " y"], - ["-z+1/2", " -y", " x"], - ["-x+1/2", " y", " -z+1/2"], - ["z+1/2", " -y", " -x"], - ["z+1/2", " x", " y+1/2"], - ["y+1/2", " z", " x+1/2"], - ["-y+1/2", " -z", " x+1/2"], - ["z+1/2", " -x", " -y+1/2"], - ["-y+1/2", " z", " -x+1/2"], - ["-z+1/2", " -x", " y+1/2"], - ["-z+1/2", " x", " -y+1/2"], - ["y+1/2", " -z", " -x+1/2"], - ["-y+1/2", " -x", " z"], - ["y+1/2", " x", " z"], - ["x+1/2", " -z", " -y"], - ["x+1/2", " z", " y"], - ["-z+1/2", " y", " -x"], - ["z+1/2", " y", " x"], - ["x+1/2", " y+1/2", " z"], - ["y+1/2", " -x+1/2", " -z+1/2"], - ["-x+1/2", " -y+1/2", " z"], - ["-y+1/2", " x+1/2", " -z+1/2"], - ["-x+1/2", " z+1/2", " -y+1/2"], - ["x+1/2", " -y+1/2", " -z"], - ["-x+1/2", " -z+1/2", " y+1/2"], - ["-z+1/2", " -y+1/2", " x+1/2"], - ["-x+1/2", " y+1/2", " -z"], - ["z+1/2", " -y+1/2", " -x+1/2"], - ["z+1/2", " x+1/2", " y"], - ["y+1/2", " z+1/2", " x"], - ["-y+1/2", " -z+1/2", " x"], - ["z+1/2", " -x+1/2", " -y"], - ["-y+1/2", " z+1/2", " -x"], - ["-z+1/2", " -x+1/2", " y"], - ["-z+1/2", " x+1/2", " -y"], - ["y+1/2", " -z+1/2", " -x"], - ["-y+1/2", " -x+1/2", " z+1/2"], - ["y+1/2", " x+1/2", " z+1/2"], - ["x+1/2", " -z+1/2", " -y+1/2"], - ["x+1/2", " z+1/2", " y+1/2"], - ["-z+1/2", " y+1/2", " -x+1/2"], - ["z+1/2", " y+1/2", " x+1/2"], - ], - "I -4bd 2c 3": [ - ["x", " y", " z"], - ["y+1/4", " -x-1/4", " -z+1/4"], - ["-x", " -y+1/2", " z"], - ["-y+1/4", " x+1/4", " -z-1/4"], - ["-x+1/4", " z+1/4", " -y-1/4"], - ["x", " -y", " -z+1/2"], - ["-x-1/4", " -z+1/4", " y+1/4"], - ["-z-1/4", " -y+1/4", " x+1/4"], - ["-x+1/2", " y", " -z"], - ["z+1/4", " -y-1/4", " -x+1/4"], - ["z", " x", " y"], - ["y", " z", " x"], - ["-y", " -z+1/2", " x"], - ["z", " -x", " -y+1/2"], - ["-y+1/2", " z", " -x"], - ["-z", " -x+1/2", " y"], - ["-z+1/2", " x", " -y"], - ["y", " -z", " -x+1/2"], - ["-y-1/4", " -x+1/4", " z+1/4"], - ["y+1/4", " x+1/4", " z+1/4"], - ["x+1/4", " -z-1/4", " -y+1/4"], - ["x+1/4", " z+1/4", " y+1/4"], - ["-z+1/4", " y+1/4", " -x-1/4"], - ["z+1/4", " y+1/4", " x+1/4"], - ["x+1/2", " y+1/2", " z+1/2"], - ["y-1/4", " -x+1/4", " -z-1/4"], - ["-x+1/2", " -y", " z+1/2"], - ["-y-1/4", " x-1/4", " -z+1/4"], - ["-x-1/4", " z-1/4", " -y+1/4"], - ["x+1/2", " -y+1/2", " -z"], - ["-x+1/4", " -z-1/4", " y-1/4"], - ["-z+1/4", " -y-1/4", " x-1/4"], - ["-x", " y+1/2", " -z+1/2"], - ["z-1/4", " -y+1/4", " -x-1/4"], - ["z+1/2", " x+1/2", " y+1/2"], - ["y+1/2", " z+1/2", " x+1/2"], - ["-y+1/2", " -z", " x+1/2"], - ["z+1/2", " -x+1/2", " -y"], - ["-y", " z+1/2", " -x+1/2"], - ["-z+1/2", " -x", " y+1/2"], - ["-z", " x+1/2", " -y+1/2"], - ["y+1/2", " -z+1/2", " -x"], - ["-y+1/4", " -x-1/4", " z-1/4"], - ["y-1/4", " x-1/4", " z-1/4"], - ["x-1/4", " -z+1/4", " -y-1/4"], - ["x-1/4", " z-1/4", " y-1/4"], - ["-z-1/4", " y-1/4", " -x+1/4"], - ["z-1/4", " y-1/4", " x-1/4"], - ], - "-P 4 2 3": [ - ["x", " y", " z"], - ["-y", " x", " z"], - ["-x", " -y", " z"], - ["y", " -x", " z"], - ["x", " -z", " y"], - ["x", " -y", " -z"], - ["x", " z", " -y"], - ["z", " y", " -x"], - ["-x", " y", " -z"], - ["-z", " y", " x"], - ["z", " x", " y"], - ["y", " z", " x"], - ["-y", " -z", " x"], - ["z", " -x", " -y"], - ["-y", " z", " -x"], - ["-z", " -x", " y"], - ["-z", " x", " -y"], - ["y", " -z", " -x"], - ["y", " x", " -z"], - ["-y", " -x", " -z"], - ["-x", " z", " y"], - ["-x", " -z", " -y"], - ["z", " -y", " x"], - ["-z", " -y", " -x"], - ["-x", " -y", " -z"], - ["y", " -x", " -z"], - ["x", " y", " -z"], - ["-y", " x", " -z"], - ["-x", " z", " -y"], - ["-x", " y", " z"], - ["-x", " -z", " y"], - ["-z", " -y", " x"], - ["x", " -y", " z"], - ["z", " -y", " -x"], - ["-z", " -x", " -y"], - ["-y", " -z", " -x"], - ["y", " z", " -x"], - ["-z", " x", " y"], - ["y", " -z", " x"], - ["z", " x", " -y"], - ["z", " -x", " y"], - ["-y", " z", " x"], - ["-y", " -x", " z"], - ["y", " x", " z"], - ["x", " -z", " -y"], - ["x", " z", " y"], - ["-z", " y", " -x"], - ["z", " y", " x"], - ], - "P 4 2 3 -1n": [ - ["x", " y", " z"], - ["-x+1/2", " -y+1/2", " -z+1/2"], - ["-y", " x", " z"], - ["-x", " -y", " z"], - ["y", " -x", " z"], - ["x", " -z", " y"], - ["x", " -y", " -z"], - ["x", " z", " -y"], - ["z", " y", " -x"], - ["-x", " y", " -z"], - ["-z", " y", " x"], - ["y+1/2", " -x+1/2", " -z+1/2"], - ["-y+1/2", " x+1/2", " -z+1/2"], - ["-x+1/2", " z+1/2", " -y+1/2"], - ["-x+1/2", " -z+1/2", " y+1/2"], - ["-z+1/2", " -y+1/2", " x+1/2"], - ["z+1/2", " -y+1/2", " -x+1/2"], - ["z", " x", " y"], - ["y", " z", " x"], - ["-y", " -z", " x"], - ["z", " -x", " -y"], - ["-y", " z", " -x"], - ["-z", " -x", " y"], - ["-z", " x", " -y"], - ["y", " -z", " -x"], - ["-z+1/2", " -x+1/2", " -y+1/2"], - ["-y+1/2", " -z+1/2", " -x+1/2"], - ["y+1/2", " z+1/2", " -x+1/2"], - ["-z+1/2", " x+1/2", " y+1/2"], - ["y+1/2", " -z+1/2", " x+1/2"], - ["z+1/2", " x+1/2", " -y+1/2"], - ["z+1/2", " -x+1/2", " y+1/2"], - ["-y+1/2", " z+1/2", " x+1/2"], - ["y", " x", " -z"], - ["-y", " -x", " -z"], - ["-x", " z", " y"], - ["-x", " -z", " -y"], - ["z", " -y", " x"], - ["-z", " -y", " -x"], - ["x+1/2", " y+1/2", " -z+1/2"], - ["-x+1/2", " y+1/2", " z+1/2"], - ["x+1/2", " -y+1/2", " z+1/2"], - ["-y+1/2", " -x+1/2", " z+1/2"], - ["y+1/2", " x+1/2", " z+1/2"], - ["x+1/2", " -z+1/2", " -y+1/2"], - ["x+1/2", " z+1/2", " y+1/2"], - ["-z+1/2", " y+1/2", " -x+1/2"], - ["z+1/2", " y+1/2", " x+1/2"], - ], - "-P 4a 2bc 3": [ - ["x", " y", " z"], - ["-y+1/2", " x", " z"], - ["-x+1/2", " -y+1/2", " z"], - ["y", " -x+1/2", " z"], - ["x", " -z+1/2", " y"], - ["x", " -y+1/2", " -z+1/2"], - ["x", " z", " -y+1/2"], - ["z", " y", " -x+1/2"], - ["-x+1/2", " y", " -z+1/2"], - ["-z+1/2", " y", " x"], - ["z", " x", " y"], - ["y", " z", " x"], - ["-y+1/2", " -z+1/2", " x"], - ["z", " -x+1/2", " -y+1/2"], - ["-y+1/2", " z", " -x+1/2"], - ["-z+1/2", " -x+1/2", " y"], - ["-z+1/2", " x", " -y+1/2"], - ["y", " -z+1/2", " -x+1/2"], - ["y", " x", " -z+1/2"], - ["-y+1/2", " -x+1/2", " -z+1/2"], - ["-x+1/2", " z", " y"], - ["-x+1/2", " -z+1/2", " -y+1/2"], - ["z", " -y+1/2", " x"], - ["-z+1/2", " -y+1/2", " -x+1/2"], - ["-x", " -y", " -z"], - ["y+1/2", " -x", " -z"], - ["x+1/2", " y+1/2", " -z"], - ["-y", " x+1/2", " -z"], - ["-x", " z+1/2", " -y"], - ["-x", " y+1/2", " z+1/2"], - ["-x", " -z", " y+1/2"], - ["-z", " -y", " x+1/2"], - ["x+1/2", " -y", " z+1/2"], - ["z+1/2", " -y", " -x"], - ["-z", " -x", " -y"], - ["-y", " -z", " -x"], - ["y+1/2", " z+1/2", " -x"], - ["-z", " x+1/2", " y+1/2"], - ["y+1/2", " -z", " x+1/2"], - ["z+1/2", " x+1/2", " -y"], - ["z+1/2", " -x", " y+1/2"], - ["-y", " z+1/2", " x+1/2"], - ["-y", " -x", " z+1/2"], - ["y+1/2", " x+1/2", " z+1/2"], - ["x+1/2", " -z", " -y"], - ["x+1/2", " z+1/2", " y+1/2"], - ["-z", " y+1/2", " -x"], - ["z+1/2", " y+1/2", " x+1/2"], - ], - "-P 4n 2 3": [ - ["x", " y", " z"], - ["-y+1/2", " x+1/2", " z+1/2"], - ["-x", " -y", " z"], - ["y+1/2", " -x+1/2", " z+1/2"], - ["x+1/2", " -z+1/2", " y+1/2"], - ["x", " -y", " -z"], - ["x+1/2", " z+1/2", " -y+1/2"], - ["z+1/2", " y+1/2", " -x+1/2"], - ["-x", " y", " -z"], - ["-z+1/2", " y+1/2", " x+1/2"], - ["z", " x", " y"], - ["y", " z", " x"], - ["-y", " -z", " x"], - ["z", " -x", " -y"], - ["-y", " z", " -x"], - ["-z", " -x", " y"], - ["-z", " x", " -y"], - ["y", " -z", " -x"], - ["y+1/2", " x+1/2", " -z+1/2"], - ["-y+1/2", " -x+1/2", " -z+1/2"], - ["-x+1/2", " z+1/2", " y+1/2"], - ["-x+1/2", " -z+1/2", " -y+1/2"], - ["z+1/2", " -y+1/2", " x+1/2"], - ["-z+1/2", " -y+1/2", " -x+1/2"], - ["-x", " -y", " -z"], - ["y+1/2", " -x+1/2", " -z+1/2"], - ["x", " y", " -z"], - ["-y+1/2", " x+1/2", " -z+1/2"], - ["-x+1/2", " z+1/2", " -y+1/2"], - ["-x", " y", " z"], - ["-x+1/2", " -z+1/2", " y+1/2"], - ["-z+1/2", " -y+1/2", " x+1/2"], - ["x", " -y", " z"], - ["z+1/2", " -y+1/2", " -x+1/2"], - ["-z", " -x", " -y"], - ["-y", " -z", " -x"], - ["y", " z", " -x"], - ["-z", " x", " y"], - ["y", " -z", " x"], - ["z", " x", " -y"], - ["z", " -x", " y"], - ["-y", " z", " x"], - ["-y+1/2", " -x+1/2", " z+1/2"], - ["y+1/2", " x+1/2", " z+1/2"], - ["x+1/2", " -z+1/2", " -y+1/2"], - ["x+1/2", " z+1/2", " y+1/2"], - ["-z+1/2", " y+1/2", " -x+1/2"], - ["z+1/2", " y+1/2", " x+1/2"], - ], - "P 4n 2 3 -1n": [ - ["x", " y", " z"], - ["-x+1/2", " -y+1/2", " -z+1/2"], - ["-y+1/2", " x+1/2", " z+1/2"], - ["-x", " -y", " z"], - ["y+1/2", " -x+1/2", " z+1/2"], - ["x+1/2", " -z+1/2", " y+1/2"], - ["x", " -y", " -z"], - ["x+1/2", " z+1/2", " -y+1/2"], - ["z+1/2", " y+1/2", " -x+1/2"], - ["-x", " y", " -z"], - ["-z+1/2", " y+1/2", " x+1/2"], - ["y", " -x", " -z"], - ["-y", " x", " -z"], - ["-x", " z", " -y"], - ["-x", " -z", " y"], - ["-z", " -y", " x"], - ["z", " -y", " -x"], - ["z", " x", " y"], - ["y", " z", " x"], - ["-y", " -z", " x"], - ["z", " -x", " -y"], - ["-y", " z", " -x"], - ["-z", " -x", " y"], - ["-z", " x", " -y"], - ["y", " -z", " -x"], - ["-z+1/2", " -x+1/2", " -y+1/2"], - ["-y+1/2", " -z+1/2", " -x+1/2"], - ["y+1/2", " z+1/2", " -x+1/2"], - ["-z+1/2", " x+1/2", " y+1/2"], - ["y+1/2", " -z+1/2", " x+1/2"], - ["z+1/2", " x+1/2", " -y+1/2"], - ["z+1/2", " -x+1/2", " y+1/2"], - ["-y+1/2", " z+1/2", " x+1/2"], - ["y+1/2", " x+1/2", " -z+1/2"], - ["-y+1/2", " -x+1/2", " -z+1/2"], - ["-x+1/2", " z+1/2", " y+1/2"], - ["-x+1/2", " -z+1/2", " -y+1/2"], - ["z+1/2", " -y+1/2", " x+1/2"], - ["-z+1/2", " -y+1/2", " -x+1/2"], - ["x+1/2", " y+1/2", " -z+1/2"], - ["-x+1/2", " y+1/2", " z+1/2"], - ["x+1/2", " -y+1/2", " z+1/2"], - ["-y", " -x", " z"], - ["y", " x", " z"], - ["x", " -z", " -y"], - ["x", " z", " y"], - ["-z", " y", " -x"], - ["z", " y", " x"], - ], - "-P 4bc 2bc 3": [ - ["x", " y", " z"], - ["-y", " x+1/2", " z+1/2"], - ["-x+1/2", " -y+1/2", " z"], - ["y+1/2", " -x", " z+1/2"], - ["x+1/2", " -z", " y+1/2"], - ["x", " -y+1/2", " -z+1/2"], - ["x+1/2", " z+1/2", " -y"], - ["z+1/2", " y+1/2", " -x"], - ["-x+1/2", " y", " -z+1/2"], - ["-z", " y+1/2", " x+1/2"], - ["z", " x", " y"], - ["y", " z", " x"], - ["-y+1/2", " -z+1/2", " x"], - ["z", " -x+1/2", " -y+1/2"], - ["-y+1/2", " z", " -x+1/2"], - ["-z+1/2", " -x+1/2", " y"], - ["-z+1/2", " x", " -y+1/2"], - ["y", " -z+1/2", " -x+1/2"], - ["y+1/2", " x+1/2", " -z"], - ["-y", " -x", " -z"], - ["-x", " z+1/2", " y+1/2"], - ["-x", " -z", " -y"], - ["z+1/2", " -y", " x+1/2"], - ["-z", " -y", " -x"], - ["-x", " -y", " -z"], - ["y", " -x+1/2", " -z+1/2"], - ["x+1/2", " y+1/2", " -z"], - ["-y+1/2", " x", " -z+1/2"], - ["-x+1/2", " z", " -y+1/2"], - ["-x", " y+1/2", " z+1/2"], - ["-x+1/2", " -z+1/2", " y"], - ["-z+1/2", " -y+1/2", " x"], - ["x+1/2", " -y", " z+1/2"], - ["z", " -y+1/2", " -x+1/2"], - ["-z", " -x", " -y"], - ["-y", " -z", " -x"], - ["y+1/2", " z+1/2", " -x"], - ["-z", " x+1/2", " y+1/2"], - ["y+1/2", " -z", " x+1/2"], - ["z+1/2", " x+1/2", " -y"], - ["z+1/2", " -x", " y+1/2"], - ["-y", " z+1/2", " x+1/2"], - ["-y+1/2", " -x+1/2", " z"], - ["y", " x", " z"], - ["x", " -z+1/2", " -y+1/2"], - ["x", " z", " y"], - ["-z+1/2", " y", " -x+1/2"], - ["z", " y", " x"], - ], - "-F 4 2 3": [ - ["x", " y", " z"], - ["-y", " x", " z"], - ["-x", " -y", " z"], - ["y", " -x", " z"], - ["x", " -z", " y"], - ["x", " -y", " -z"], - ["x", " z", " -y"], - ["z", " y", " -x"], - ["-x", " y", " -z"], - ["-z", " y", " x"], - ["z", " x", " y"], - ["y", " z", " x"], - ["-y", " -z", " x"], - ["z", " -x", " -y"], - ["-y", " z", " -x"], - ["-z", " -x", " y"], - ["-z", " x", " -y"], - ["y", " -z", " -x"], - ["y", " x", " -z"], - ["-y", " -x", " -z"], - ["-x", " z", " y"], - ["-x", " -z", " -y"], - ["z", " -y", " x"], - ["-z", " -y", " -x"], - ["-x", " -y", " -z"], - ["y", " -x", " -z"], - ["x", " y", " -z"], - ["-y", " x", " -z"], - ["-x", " z", " -y"], - ["-x", " y", " z"], - ["-x", " -z", " y"], - ["-z", " -y", " x"], - ["x", " -y", " z"], - ["z", " -y", " -x"], - ["-z", " -x", " -y"], - ["-y", " -z", " -x"], - ["y", " z", " -x"], - ["-z", " x", " y"], - ["y", " -z", " x"], - ["z", " x", " -y"], - ["z", " -x", " y"], - ["-y", " z", " x"], - ["-y", " -x", " z"], - ["y", " x", " z"], - ["x", " -z", " -y"], - ["x", " z", " y"], - ["-z", " y", " -x"], - ["z", " y", " x"], - ["x", " y+1/2", " z+1/2"], - ["-y", " x+1/2", " z+1/2"], - ["-x", " -y+1/2", " z+1/2"], - ["y", " -x+1/2", " z+1/2"], - ["x", " -z+1/2", " y+1/2"], - ["x", " -y+1/2", " -z+1/2"], - ["x", " z+1/2", " -y+1/2"], - ["z", " y+1/2", " -x+1/2"], - ["-x", " y+1/2", " -z+1/2"], - ["-z", " y+1/2", " x+1/2"], - ["z", " x+1/2", " y+1/2"], - ["y", " z+1/2", " x+1/2"], - ["-y", " -z+1/2", " x+1/2"], - ["z", " -x+1/2", " -y+1/2"], - ["-y", " z+1/2", " -x+1/2"], - ["-z", " -x+1/2", " y+1/2"], - ["-z", " x+1/2", " -y+1/2"], - ["y", " -z+1/2", " -x+1/2"], - ["y", " x+1/2", " -z+1/2"], - ["-y", " -x+1/2", " -z+1/2"], - ["-x", " z+1/2", " y+1/2"], - ["-x", " -z+1/2", " -y+1/2"], - ["z", " -y+1/2", " x+1/2"], - ["-z", " -y+1/2", " -x+1/2"], - ["-x", " -y+1/2", " -z+1/2"], - ["y", " -x+1/2", " -z+1/2"], - ["x", " y+1/2", " -z+1/2"], - ["-y", " x+1/2", " -z+1/2"], - ["-x", " z+1/2", " -y+1/2"], - ["-x", " y+1/2", " z+1/2"], - ["-x", " -z+1/2", " y+1/2"], - ["-z", " -y+1/2", " x+1/2"], - ["x", " -y+1/2", " z+1/2"], - ["z", " -y+1/2", " -x+1/2"], - ["-z", " -x+1/2", " -y+1/2"], - ["-y", " -z+1/2", " -x+1/2"], - ["y", " z+1/2", " -x+1/2"], - ["-z", " x+1/2", " y+1/2"], - ["y", " -z+1/2", " x+1/2"], - ["z", " x+1/2", " -y+1/2"], - ["z", " -x+1/2", " y+1/2"], - ["-y", " z+1/2", " x+1/2"], - ["-y", " -x+1/2", " z+1/2"], - ["y", " x+1/2", " z+1/2"], - ["x", " -z+1/2", " -y+1/2"], - ["x", " z+1/2", " y+1/2"], - ["-z", " y+1/2", " -x+1/2"], - ["z", " y+1/2", " x+1/2"], - ["x+1/2", " y", " z+1/2"], - ["-y+1/2", " x", " z+1/2"], - ["-x+1/2", " -y", " z+1/2"], - ["y+1/2", " -x", " z+1/2"], - ["x+1/2", " -z", " y+1/2"], - ["x+1/2", " -y", " -z+1/2"], - ["x+1/2", " z", " -y+1/2"], - ["z+1/2", " y", " -x+1/2"], - ["-x+1/2", " y", " -z+1/2"], - ["-z+1/2", " y", " x+1/2"], - ["z+1/2", " x", " y+1/2"], - ["y+1/2", " z", " x+1/2"], - ["-y+1/2", " -z", " x+1/2"], - ["z+1/2", " -x", " -y+1/2"], - ["-y+1/2", " z", " -x+1/2"], - ["-z+1/2", " -x", " y+1/2"], - ["-z+1/2", " x", " -y+1/2"], - ["y+1/2", " -z", " -x+1/2"], - ["y+1/2", " x", " -z+1/2"], - ["-y+1/2", " -x", " -z+1/2"], - ["-x+1/2", " z", " y+1/2"], - ["-x+1/2", " -z", " -y+1/2"], - ["z+1/2", " -y", " x+1/2"], - ["-z+1/2", " -y", " -x+1/2"], - ["-x+1/2", " -y", " -z+1/2"], - ["y+1/2", " -x", " -z+1/2"], - ["x+1/2", " y", " -z+1/2"], - ["-y+1/2", " x", " -z+1/2"], - ["-x+1/2", " z", " -y+1/2"], - ["-x+1/2", " y", " z+1/2"], - ["-x+1/2", " -z", " y+1/2"], - ["-z+1/2", " -y", " x+1/2"], - ["x+1/2", " -y", " z+1/2"], - ["z+1/2", " -y", " -x+1/2"], - ["-z+1/2", " -x", " -y+1/2"], - ["-y+1/2", " -z", " -x+1/2"], - ["y+1/2", " z", " -x+1/2"], - ["-z+1/2", " x", " y+1/2"], - ["y+1/2", " -z", " x+1/2"], - ["z+1/2", " x", " -y+1/2"], - ["z+1/2", " -x", " y+1/2"], - ["-y+1/2", " z", " x+1/2"], - ["-y+1/2", " -x", " z+1/2"], - ["y+1/2", " x", " z+1/2"], - ["x+1/2", " -z", " -y+1/2"], - ["x+1/2", " z", " y+1/2"], - ["-z+1/2", " y", " -x+1/2"], - ["z+1/2", " y", " x+1/2"], - ["x+1/2", " y+1/2", " z"], - ["-y+1/2", " x+1/2", " z"], - ["-x+1/2", " -y+1/2", " z"], - ["y+1/2", " -x+1/2", " z"], - ["x+1/2", " -z+1/2", " y"], - ["x+1/2", " -y+1/2", " -z"], - ["x+1/2", " z+1/2", " -y"], - ["z+1/2", " y+1/2", " -x"], - ["-x+1/2", " y+1/2", " -z"], - ["-z+1/2", " y+1/2", " x"], - ["z+1/2", " x+1/2", " y"], - ["y+1/2", " z+1/2", " x"], - ["-y+1/2", " -z+1/2", " x"], - ["z+1/2", " -x+1/2", " -y"], - ["-y+1/2", " z+1/2", " -x"], - ["-z+1/2", " -x+1/2", " y"], - ["-z+1/2", " x+1/2", " -y"], - ["y+1/2", " -z+1/2", " -x"], - ["y+1/2", " x+1/2", " -z"], - ["-y+1/2", " -x+1/2", " -z"], - ["-x+1/2", " z+1/2", " y"], - ["-x+1/2", " -z+1/2", " -y"], - ["z+1/2", " -y+1/2", " x"], - ["-z+1/2", " -y+1/2", " -x"], - ["-x+1/2", " -y+1/2", " -z"], - ["y+1/2", " -x+1/2", " -z"], - ["x+1/2", " y+1/2", " -z"], - ["-y+1/2", " x+1/2", " -z"], - ["-x+1/2", " z+1/2", " -y"], - ["-x+1/2", " y+1/2", " z"], - ["-x+1/2", " -z+1/2", " y"], - ["-z+1/2", " -y+1/2", " x"], - ["x+1/2", " -y+1/2", " z"], - ["z+1/2", " -y+1/2", " -x"], - ["-z+1/2", " -x+1/2", " -y"], - ["-y+1/2", " -z+1/2", " -x"], - ["y+1/2", " z+1/2", " -x"], - ["-z+1/2", " x+1/2", " y"], - ["y+1/2", " -z+1/2", " x"], - ["z+1/2", " x+1/2", " -y"], - ["z+1/2", " -x+1/2", " y"], - ["-y+1/2", " z+1/2", " x"], - ["-y+1/2", " -x+1/2", " z"], - ["y+1/2", " x+1/2", " z"], - ["x+1/2", " -z+1/2", " -y"], - ["x+1/2", " z+1/2", " y"], - ["-z+1/2", " y+1/2", " -x"], - ["z+1/2", " y+1/2", " x"], - ], - "-F 4c 2 3": [ - ["x", " y", " z"], - ["-y", " x", " z+1/2"], - ["-x", " -y", " z"], - ["y", " -x", " z+1/2"], - ["x", " -z", " y+1/2"], - ["x", " -y", " -z"], - ["x", " z", " -y+1/2"], - ["z", " y", " -x+1/2"], - ["-x", " y", " -z"], - ["-z", " y", " x+1/2"], - ["z", " x", " y"], - ["y", " z", " x"], - ["-y", " -z", " x"], - ["z", " -x", " -y"], - ["-y", " z", " -x"], - ["-z", " -x", " y"], - ["-z", " x", " -y"], - ["y", " -z", " -x"], - ["y", " x", " -z+1/2"], - ["-y", " -x", " -z+1/2"], - ["-x", " z", " y+1/2"], - ["-x", " -z", " -y+1/2"], - ["z", " -y", " x+1/2"], - ["-z", " -y", " -x+1/2"], - ["-x", " -y", " -z"], - ["y", " -x", " -z+1/2"], - ["x", " y", " -z"], - ["-y", " x", " -z+1/2"], - ["-x", " z", " -y+1/2"], - ["-x", " y", " z"], - ["-x", " -z", " y+1/2"], - ["-z", " -y", " x+1/2"], - ["x", " -y", " z"], - ["z", " -y", " -x+1/2"], - ["-z", " -x", " -y"], - ["-y", " -z", " -x"], - ["y", " z", " -x"], - ["-z", " x", " y"], - ["y", " -z", " x"], - ["z", " x", " -y"], - ["z", " -x", " y"], - ["-y", " z", " x"], - ["-y", " -x", " z+1/2"], - ["y", " x", " z+1/2"], - ["x", " -z", " -y+1/2"], - ["x", " z", " y+1/2"], - ["-z", " y", " -x+1/2"], - ["z", " y", " x+1/2"], - ["x", " y+1/2", " z+1/2"], - ["-y", " x+1/2", " z"], - ["-x", " -y+1/2", " z+1/2"], - ["y", " -x+1/2", " z"], - ["x", " -z+1/2", " y"], - ["x", " -y+1/2", " -z+1/2"], - ["x", " z+1/2", " -y"], - ["z", " y+1/2", " -x"], - ["-x", " y+1/2", " -z+1/2"], - ["-z", " y+1/2", " x"], - ["z", " x+1/2", " y+1/2"], - ["y", " z+1/2", " x+1/2"], - ["-y", " -z+1/2", " x+1/2"], - ["z", " -x+1/2", " -y+1/2"], - ["-y", " z+1/2", " -x+1/2"], - ["-z", " -x+1/2", " y+1/2"], - ["-z", " x+1/2", " -y+1/2"], - ["y", " -z+1/2", " -x+1/2"], - ["y", " x+1/2", " -z"], - ["-y", " -x+1/2", " -z"], - ["-x", " z+1/2", " y"], - ["-x", " -z+1/2", " -y"], - ["z", " -y+1/2", " x"], - ["-z", " -y+1/2", " -x"], - ["-x", " -y+1/2", " -z+1/2"], - ["y", " -x+1/2", " -z"], - ["x", " y+1/2", " -z+1/2"], - ["-y", " x+1/2", " -z"], - ["-x", " z+1/2", " -y"], - ["-x", " y+1/2", " z+1/2"], - ["-x", " -z+1/2", " y"], - ["-z", " -y+1/2", " x"], - ["x", " -y+1/2", " z+1/2"], - ["z", " -y+1/2", " -x"], - ["-z", " -x+1/2", " -y+1/2"], - ["-y", " -z+1/2", " -x+1/2"], - ["y", " z+1/2", " -x+1/2"], - ["-z", " x+1/2", " y+1/2"], - ["y", " -z+1/2", " x+1/2"], - ["z", " x+1/2", " -y+1/2"], - ["z", " -x+1/2", " y+1/2"], - ["-y", " z+1/2", " x+1/2"], - ["-y", " -x+1/2", " z"], - ["y", " x+1/2", " z"], - ["x", " -z+1/2", " -y"], - ["x", " z+1/2", " y"], - ["-z", " y+1/2", " -x"], - ["z", " y+1/2", " x"], - ["x+1/2", " y", " z+1/2"], - ["-y+1/2", " x", " z"], - ["-x+1/2", " -y", " z+1/2"], - ["y+1/2", " -x", " z"], - ["x+1/2", " -z", " y"], - ["x+1/2", " -y", " -z+1/2"], - ["x+1/2", " z", " -y"], - ["z+1/2", " y", " -x"], - ["-x+1/2", " y", " -z+1/2"], - ["-z+1/2", " y", " x"], - ["z+1/2", " x", " y+1/2"], - ["y+1/2", " z", " x+1/2"], - ["-y+1/2", " -z", " x+1/2"], - ["z+1/2", " -x", " -y+1/2"], - ["-y+1/2", " z", " -x+1/2"], - ["-z+1/2", " -x", " y+1/2"], - ["-z+1/2", " x", " -y+1/2"], - ["y+1/2", " -z", " -x+1/2"], - ["y+1/2", " x", " -z"], - ["-y+1/2", " -x", " -z"], - ["-x+1/2", " z", " y"], - ["-x+1/2", " -z", " -y"], - ["z+1/2", " -y", " x"], - ["-z+1/2", " -y", " -x"], - ["-x+1/2", " -y", " -z+1/2"], - ["y+1/2", " -x", " -z"], - ["x+1/2", " y", " -z+1/2"], - ["-y+1/2", " x", " -z"], - ["-x+1/2", " z", " -y"], - ["-x+1/2", " y", " z+1/2"], - ["-x+1/2", " -z", " y"], - ["-z+1/2", " -y", " x"], - ["x+1/2", " -y", " z+1/2"], - ["z+1/2", " -y", " -x"], - ["-z+1/2", " -x", " -y+1/2"], - ["-y+1/2", " -z", " -x+1/2"], - ["y+1/2", " z", " -x+1/2"], - ["-z+1/2", " x", " y+1/2"], - ["y+1/2", " -z", " x+1/2"], - ["z+1/2", " x", " -y+1/2"], - ["z+1/2", " -x", " y+1/2"], - ["-y+1/2", " z", " x+1/2"], - ["-y+1/2", " -x", " z"], - ["y+1/2", " x", " z"], - ["x+1/2", " -z", " -y"], - ["x+1/2", " z", " y"], - ["-z+1/2", " y", " -x"], - ["z+1/2", " y", " x"], - ["x+1/2", " y+1/2", " z"], - ["-y+1/2", " x+1/2", " z+1/2"], - ["-x+1/2", " -y+1/2", " z"], - ["y+1/2", " -x+1/2", " z+1/2"], - ["x+1/2", " -z+1/2", " y+1/2"], - ["x+1/2", " -y+1/2", " -z"], - ["x+1/2", " z+1/2", " -y+1/2"], - ["z+1/2", " y+1/2", " -x+1/2"], - ["-x+1/2", " y+1/2", " -z"], - ["-z+1/2", " y+1/2", " x+1/2"], - ["z+1/2", " x+1/2", " y"], - ["y+1/2", " z+1/2", " x"], - ["-y+1/2", " -z+1/2", " x"], - ["z+1/2", " -x+1/2", " -y"], - ["-y+1/2", " z+1/2", " -x"], - ["-z+1/2", " -x+1/2", " y"], - ["-z+1/2", " x+1/2", " -y"], - ["y+1/2", " -z+1/2", " -x"], - ["y+1/2", " x+1/2", " -z+1/2"], - ["-y+1/2", " -x+1/2", " -z+1/2"], - ["-x+1/2", " z+1/2", " y+1/2"], - ["-x+1/2", " -z+1/2", " -y+1/2"], - ["z+1/2", " -y+1/2", " x+1/2"], - ["-z+1/2", " -y+1/2", " -x+1/2"], - ["-x+1/2", " -y+1/2", " -z"], - ["y+1/2", " -x+1/2", " -z+1/2"], - ["x+1/2", " y+1/2", " -z"], - ["-y+1/2", " x+1/2", " -z+1/2"], - ["-x+1/2", " z+1/2", " -y+1/2"], - ["-x+1/2", " y+1/2", " z"], - ["-x+1/2", " -z+1/2", " y+1/2"], - ["-z+1/2", " -y+1/2", " x+1/2"], - ["x+1/2", " -y+1/2", " z"], - ["z+1/2", " -y+1/2", " -x+1/2"], - ["-z+1/2", " -x+1/2", " -y"], - ["-y+1/2", " -z+1/2", " -x"], - ["y+1/2", " z+1/2", " -x"], - ["-z+1/2", " x+1/2", " y"], - ["y+1/2", " -z+1/2", " x"], - ["z+1/2", " x+1/2", " -y"], - ["z+1/2", " -x+1/2", " y"], - ["-y+1/2", " z+1/2", " x"], - ["-y+1/2", " -x+1/2", " z+1/2"], - ["y+1/2", " x+1/2", " z+1/2"], - ["x+1/2", " -z+1/2", " -y+1/2"], - ["x+1/2", " z+1/2", " y+1/2"], - ["-z+1/2", " y+1/2", " -x+1/2"], - ["z+1/2", " y+1/2", " x+1/2"], - ], - "F 4d 2 3 -1d": [ - ["x", " y", " z"], - ["-x+1/4", " -y+1/4", " -z+1/4"], - ["-y+1/4", " x+1/4", " z+1/4"], - ["-x", " -y", " z"], - ["y+1/4", " -x+1/4", " z+1/4"], - ["x+1/4", " -z+1/4", " y+1/4"], - ["x", " -y", " -z"], - ["x+1/4", " z+1/4", " -y+1/4"], - ["z+1/4", " y+1/4", " -x+1/4"], - ["-x", " y", " -z"], - ["-z+1/4", " y+1/4", " x+1/4"], - ["y", " -x", " -z"], - ["-y", " x", " -z"], - ["-x", " z", " -y"], - ["-x", " -z", " y"], - ["-z", " -y", " x"], - ["z", " -y", " -x"], - ["z", " x", " y"], - ["y", " z", " x"], - ["-y", " -z", " x"], - ["z", " -x", " -y"], - ["-y", " z", " -x"], - ["-z", " -x", " y"], - ["-z", " x", " -y"], - ["y", " -z", " -x"], - ["-z+1/4", " -x+1/4", " -y+1/4"], - ["-y+1/4", " -z+1/4", " -x+1/4"], - ["y+1/4", " z+1/4", " -x+1/4"], - ["-z+1/4", " x+1/4", " y+1/4"], - ["y+1/4", " -z+1/4", " x+1/4"], - ["z+1/4", " x+1/4", " -y+1/4"], - ["z+1/4", " -x+1/4", " y+1/4"], - ["-y+1/4", " z+1/4", " x+1/4"], - ["y+1/4", " x+1/4", " -z+1/4"], - ["-y+1/4", " -x+1/4", " -z+1/4"], - ["-x+1/4", " z+1/4", " y+1/4"], - ["-x+1/4", " -z+1/4", " -y+1/4"], - ["z+1/4", " -y+1/4", " x+1/4"], - ["-z+1/4", " -y+1/4", " -x+1/4"], - ["x+1/4", " y+1/4", " -z+1/4"], - ["-x+1/4", " y+1/4", " z+1/4"], - ["x+1/4", " -y+1/4", " z+1/4"], - ["-y", " -x", " z"], - ["y", " x", " z"], - ["x", " -z", " -y"], - ["x", " z", " y"], - ["-z", " y", " -x"], - ["z", " y", " x"], - ["x", " y+1/2", " z+1/2"], - ["-x+1/4", " -y-1/4", " -z-1/4"], - ["-y+1/4", " x-1/4", " z-1/4"], - ["-x", " -y+1/2", " z+1/2"], - ["y+1/4", " -x-1/4", " z-1/4"], - ["x+1/4", " -z-1/4", " y-1/4"], - ["x", " -y+1/2", " -z+1/2"], - ["x+1/4", " z-1/4", " -y-1/4"], - ["z+1/4", " y-1/4", " -x-1/4"], - ["-x", " y+1/2", " -z+1/2"], - ["-z+1/4", " y-1/4", " x-1/4"], - ["y", " -x+1/2", " -z+1/2"], - ["-y", " x+1/2", " -z+1/2"], - ["-x", " z+1/2", " -y+1/2"], - ["-x", " -z+1/2", " y+1/2"], - ["-z", " -y+1/2", " x+1/2"], - ["z", " -y+1/2", " -x+1/2"], - ["z", " x+1/2", " y+1/2"], - ["y", " z+1/2", " x+1/2"], - ["-y", " -z+1/2", " x+1/2"], - ["z", " -x+1/2", " -y+1/2"], - ["-y", " z+1/2", " -x+1/2"], - ["-z", " -x+1/2", " y+1/2"], - ["-z", " x+1/2", " -y+1/2"], - ["y", " -z+1/2", " -x+1/2"], - ["-z+1/4", " -x-1/4", " -y-1/4"], - ["-y+1/4", " -z-1/4", " -x-1/4"], - ["y+1/4", " z-1/4", " -x-1/4"], - ["-z+1/4", " x-1/4", " y-1/4"], - ["y+1/4", " -z-1/4", " x-1/4"], - ["z+1/4", " x-1/4", " -y-1/4"], - ["z+1/4", " -x-1/4", " y-1/4"], - ["-y+1/4", " z-1/4", " x-1/4"], - ["y+1/4", " x-1/4", " -z-1/4"], - ["-y+1/4", " -x-1/4", " -z-1/4"], - ["-x+1/4", " z-1/4", " y-1/4"], - ["-x+1/4", " -z-1/4", " -y-1/4"], - ["z+1/4", " -y-1/4", " x-1/4"], - ["-z+1/4", " -y-1/4", " -x-1/4"], - ["x+1/4", " y-1/4", " -z-1/4"], - ["-x+1/4", " y-1/4", " z-1/4"], - ["x+1/4", " -y-1/4", " z-1/4"], - ["-y", " -x+1/2", " z+1/2"], - ["y", " x+1/2", " z+1/2"], - ["x", " -z+1/2", " -y+1/2"], - ["x", " z+1/2", " y+1/2"], - ["-z", " y+1/2", " -x+1/2"], - ["z", " y+1/2", " x+1/2"], - ["x+1/2", " y", " z+1/2"], - ["-x-1/4", " -y+1/4", " -z-1/4"], - ["-y-1/4", " x+1/4", " z-1/4"], - ["-x+1/2", " -y", " z+1/2"], - ["y-1/4", " -x+1/4", " z-1/4"], - ["x-1/4", " -z+1/4", " y-1/4"], - ["x+1/2", " -y", " -z+1/2"], - ["x-1/4", " z+1/4", " -y-1/4"], - ["z-1/4", " y+1/4", " -x-1/4"], - ["-x+1/2", " y", " -z+1/2"], - ["-z-1/4", " y+1/4", " x-1/4"], - ["y+1/2", " -x", " -z+1/2"], - ["-y+1/2", " x", " -z+1/2"], - ["-x+1/2", " z", " -y+1/2"], - ["-x+1/2", " -z", " y+1/2"], - ["-z+1/2", " -y", " x+1/2"], - ["z+1/2", " -y", " -x+1/2"], - ["z+1/2", " x", " y+1/2"], - ["y+1/2", " z", " x+1/2"], - ["-y+1/2", " -z", " x+1/2"], - ["z+1/2", " -x", " -y+1/2"], - ["-y+1/2", " z", " -x+1/2"], - ["-z+1/2", " -x", " y+1/2"], - ["-z+1/2", " x", " -y+1/2"], - ["y+1/2", " -z", " -x+1/2"], - ["-z-1/4", " -x+1/4", " -y-1/4"], - ["-y-1/4", " -z+1/4", " -x-1/4"], - ["y-1/4", " z+1/4", " -x-1/4"], - ["-z-1/4", " x+1/4", " y-1/4"], - ["y-1/4", " -z+1/4", " x-1/4"], - ["z-1/4", " x+1/4", " -y-1/4"], - ["z-1/4", " -x+1/4", " y-1/4"], - ["-y-1/4", " z+1/4", " x-1/4"], - ["y-1/4", " x+1/4", " -z-1/4"], - ["-y-1/4", " -x+1/4", " -z-1/4"], - ["-x-1/4", " z+1/4", " y-1/4"], - ["-x-1/4", " -z+1/4", " -y-1/4"], - ["z-1/4", " -y+1/4", " x-1/4"], - ["-z-1/4", " -y+1/4", " -x-1/4"], - ["x-1/4", " y+1/4", " -z-1/4"], - ["-x-1/4", " y+1/4", " z-1/4"], - ["x-1/4", " -y+1/4", " z-1/4"], - ["-y+1/2", " -x", " z+1/2"], - ["y+1/2", " x", " z+1/2"], - ["x+1/2", " -z", " -y+1/2"], - ["x+1/2", " z", " y+1/2"], - ["-z+1/2", " y", " -x+1/2"], - ["z+1/2", " y", " x+1/2"], - ["x+1/2", " y+1/2", " z"], - ["-x-1/4", " -y-1/4", " -z+1/4"], - ["-y-1/4", " x-1/4", " z+1/4"], - ["-x+1/2", " -y+1/2", " z"], - ["y-1/4", " -x-1/4", " z+1/4"], - ["x-1/4", " -z-1/4", " y+1/4"], - ["x+1/2", " -y+1/2", " -z"], - ["x-1/4", " z-1/4", " -y+1/4"], - ["z-1/4", " y-1/4", " -x+1/4"], - ["-x+1/2", " y+1/2", " -z"], - ["-z-1/4", " y-1/4", " x+1/4"], - ["y+1/2", " -x+1/2", " -z"], - ["-y+1/2", " x+1/2", " -z"], - ["-x+1/2", " z+1/2", " -y"], - ["-x+1/2", " -z+1/2", " y"], - ["-z+1/2", " -y+1/2", " x"], - ["z+1/2", " -y+1/2", " -x"], - ["z+1/2", " x+1/2", " y"], - ["y+1/2", " z+1/2", " x"], - ["-y+1/2", " -z+1/2", " x"], - ["z+1/2", " -x+1/2", " -y"], - ["-y+1/2", " z+1/2", " -x"], - ["-z+1/2", " -x+1/2", " y"], - ["-z+1/2", " x+1/2", " -y"], - ["y+1/2", " -z+1/2", " -x"], - ["-z-1/4", " -x-1/4", " -y+1/4"], - ["-y-1/4", " -z-1/4", " -x+1/4"], - ["y-1/4", " z-1/4", " -x+1/4"], - ["-z-1/4", " x-1/4", " y+1/4"], - ["y-1/4", " -z-1/4", " x+1/4"], - ["z-1/4", " x-1/4", " -y+1/4"], - ["z-1/4", " -x-1/4", " y+1/4"], - ["-y-1/4", " z-1/4", " x+1/4"], - ["y-1/4", " x-1/4", " -z+1/4"], - ["-y-1/4", " -x-1/4", " -z+1/4"], - ["-x-1/4", " z-1/4", " y+1/4"], - ["-x-1/4", " -z-1/4", " -y+1/4"], - ["z-1/4", " -y-1/4", " x+1/4"], - ["-z-1/4", " -y-1/4", " -x+1/4"], - ["x-1/4", " y-1/4", " -z+1/4"], - ["-x-1/4", " y-1/4", " z+1/4"], - ["x-1/4", " -y-1/4", " z+1/4"], - ["-y+1/2", " -x+1/2", " z"], - ["y+1/2", " x+1/2", " z"], - ["x+1/2", " -z+1/2", " -y"], - ["x+1/2", " z+1/2", " y"], - ["-z+1/2", " y+1/2", " -x"], - ["z+1/2", " y+1/2", " x"], - ], - "-F 4vw 2vw 3": [ - ["x", " y", " z"], - ["-y", " x+1/4", " z+1/4"], - ["-x+1/4", " -y+1/4", " z"], - ["y+1/4", " -x", " z+1/4"], - ["x+1/4", " -z", " y+1/4"], - ["x", " -y+1/4", " -z+1/4"], - ["x+1/4", " z+1/4", " -y"], - ["z+1/4", " y+1/4", " -x"], - ["-x+1/4", " y", " -z+1/4"], - ["-z", " y+1/4", " x+1/4"], - ["z", " x", " y"], - ["y", " z", " x"], - ["-y+1/4", " -z+1/4", " x"], - ["z", " -x+1/4", " -y+1/4"], - ["-y+1/4", " z", " -x+1/4"], - ["-z+1/4", " -x+1/4", " y"], - ["-z+1/4", " x", " -y+1/4"], - ["y", " -z+1/4", " -x+1/4"], - ["y+1/4", " x+1/4", " -z"], - ["-y", " -x", " -z"], - ["-x", " z+1/4", " y+1/4"], - ["-x", " -z", " -y"], - ["z+1/4", " -y", " x+1/4"], - ["-z", " -y", " -x"], - ["-x", " -y", " -z"], - ["y", " -x-1/4", " -z-1/4"], - ["x-1/4", " y-1/4", " -z"], - ["-y-1/4", " x", " -z-1/4"], - ["-x-1/4", " z", " -y-1/4"], - ["-x", " y-1/4", " z-1/4"], - ["-x-1/4", " -z-1/4", " y"], - ["-z-1/4", " -y-1/4", " x"], - ["x-1/4", " -y", " z-1/4"], - ["z", " -y-1/4", " -x-1/4"], - ["-z", " -x", " -y"], - ["-y", " -z", " -x"], - ["y-1/4", " z-1/4", " -x"], - ["-z", " x-1/4", " y-1/4"], - ["y-1/4", " -z", " x-1/4"], - ["z-1/4", " x-1/4", " -y"], - ["z-1/4", " -x", " y-1/4"], - ["-y", " z-1/4", " x-1/4"], - ["-y-1/4", " -x-1/4", " z"], - ["y", " x", " z"], - ["x", " -z-1/4", " -y-1/4"], - ["x", " z", " y"], - ["-z-1/4", " y", " -x-1/4"], - ["z", " y", " x"], - ["x", " y+1/2", " z+1/2"], - ["-y", " x-1/4", " z-1/4"], - ["-x+1/4", " -y-1/4", " z+1/2"], - ["y+1/4", " -x+1/2", " z-1/4"], - ["x+1/4", " -z+1/2", " y-1/4"], - ["x", " -y-1/4", " -z-1/4"], - ["x+1/4", " z-1/4", " -y+1/2"], - ["z+1/4", " y-1/4", " -x+1/2"], - ["-x+1/4", " y+1/2", " -z-1/4"], - ["-z", " y-1/4", " x-1/4"], - ["z", " x+1/2", " y+1/2"], - ["y", " z+1/2", " x+1/2"], - ["-y+1/4", " -z-1/4", " x+1/2"], - ["z", " -x-1/4", " -y-1/4"], - ["-y+1/4", " z+1/2", " -x-1/4"], - ["-z+1/4", " -x-1/4", " y+1/2"], - ["-z+1/4", " x+1/2", " -y-1/4"], - ["y", " -z-1/4", " -x-1/4"], - ["y+1/4", " x-1/4", " -z+1/2"], - ["-y", " -x+1/2", " -z+1/2"], - ["-x", " z-1/4", " y-1/4"], - ["-x", " -z+1/2", " -y+1/2"], - ["z+1/4", " -y+1/2", " x-1/4"], - ["-z", " -y+1/2", " -x+1/2"], - ["-x", " -y+1/2", " -z+1/2"], - ["y", " -x+1/4", " -z+1/4"], - ["x-1/4", " y+1/4", " -z+1/2"], - ["-y-1/4", " x+1/2", " -z+1/4"], - ["-x-1/4", " z+1/2", " -y+1/4"], - ["-x", " y+1/4", " z+1/4"], - ["-x-1/4", " -z+1/4", " y+1/2"], - ["-z-1/4", " -y+1/4", " x+1/2"], - ["x-1/4", " -y+1/2", " z+1/4"], - ["z", " -y+1/4", " -x+1/4"], - ["-z", " -x+1/2", " -y+1/2"], - ["-y", " -z+1/2", " -x+1/2"], - ["y-1/4", " z+1/4", " -x+1/2"], - ["-z", " x+1/4", " y+1/4"], - ["y-1/4", " -z+1/2", " x+1/4"], - ["z-1/4", " x+1/4", " -y+1/2"], - ["z-1/4", " -x+1/2", " y+1/4"], - ["-y", " z+1/4", " x+1/4"], - ["-y-1/4", " -x+1/4", " z+1/2"], - ["y", " x+1/2", " z+1/2"], - ["x", " -z+1/4", " -y+1/4"], - ["x", " z+1/2", " y+1/2"], - ["-z-1/4", " y+1/2", " -x+1/4"], - ["z", " y+1/2", " x+1/2"], - ["x+1/2", " y", " z+1/2"], - ["-y+1/2", " x+1/4", " z-1/4"], - ["-x-1/4", " -y+1/4", " z+1/2"], - ["y-1/4", " -x", " z-1/4"], - ["x-1/4", " -z", " y-1/4"], - ["x+1/2", " -y+1/4", " -z-1/4"], - ["x-1/4", " z+1/4", " -y+1/2"], - ["z-1/4", " y+1/4", " -x+1/2"], - ["-x-1/4", " y", " -z-1/4"], - ["-z+1/2", " y+1/4", " x-1/4"], - ["z+1/2", " x", " y+1/2"], - ["y+1/2", " z", " x+1/2"], - ["-y-1/4", " -z+1/4", " x+1/2"], - ["z+1/2", " -x+1/4", " -y-1/4"], - ["-y-1/4", " z", " -x-1/4"], - ["-z-1/4", " -x+1/4", " y+1/2"], - ["-z-1/4", " x", " -y-1/4"], - ["y+1/2", " -z+1/4", " -x-1/4"], - ["y-1/4", " x+1/4", " -z+1/2"], - ["-y+1/2", " -x", " -z+1/2"], - ["-x+1/2", " z+1/4", " y-1/4"], - ["-x+1/2", " -z", " -y+1/2"], - ["z-1/4", " -y", " x-1/4"], - ["-z+1/2", " -y", " -x+1/2"], - ["-x+1/2", " -y", " -z+1/2"], - ["y+1/2", " -x-1/4", " -z+1/4"], - ["x+1/4", " y-1/4", " -z+1/2"], - ["-y+1/4", " x", " -z+1/4"], - ["-x+1/4", " z", " -y+1/4"], - ["-x+1/2", " y-1/4", " z+1/4"], - ["-x+1/4", " -z-1/4", " y+1/2"], - ["-z+1/4", " -y-1/4", " x+1/2"], - ["x+1/4", " -y", " z+1/4"], - ["z+1/2", " -y-1/4", " -x+1/4"], - ["-z+1/2", " -x", " -y+1/2"], - ["-y+1/2", " -z", " -x+1/2"], - ["y+1/4", " z-1/4", " -x+1/2"], - ["-z+1/2", " x-1/4", " y+1/4"], - ["y+1/4", " -z", " x+1/4"], - ["z+1/4", " x-1/4", " -y+1/2"], - ["z+1/4", " -x", " y+1/4"], - ["-y+1/2", " z-1/4", " x+1/4"], - ["-y+1/4", " -x-1/4", " z+1/2"], - ["y+1/2", " x", " z+1/2"], - ["x+1/2", " -z-1/4", " -y+1/4"], - ["x+1/2", " z", " y+1/2"], - ["-z+1/4", " y", " -x+1/4"], - ["z+1/2", " y", " x+1/2"], - ["x+1/2", " y+1/2", " z"], - ["-y+1/2", " x-1/4", " z+1/4"], - ["-x-1/4", " -y-1/4", " z"], - ["y-1/4", " -x+1/2", " z+1/4"], - ["x-1/4", " -z+1/2", " y+1/4"], - ["x+1/2", " -y-1/4", " -z+1/4"], - ["x-1/4", " z-1/4", " -y"], - ["z-1/4", " y-1/4", " -x"], - ["-x-1/4", " y+1/2", " -z+1/4"], - ["-z+1/2", " y-1/4", " x+1/4"], - ["z+1/2", " x+1/2", " y"], - ["y+1/2", " z+1/2", " x"], - ["-y-1/4", " -z-1/4", " x"], - ["z+1/2", " -x-1/4", " -y+1/4"], - ["-y-1/4", " z+1/2", " -x+1/4"], - ["-z-1/4", " -x-1/4", " y"], - ["-z-1/4", " x+1/2", " -y+1/4"], - ["y+1/2", " -z-1/4", " -x+1/4"], - ["y-1/4", " x-1/4", " -z"], - ["-y+1/2", " -x+1/2", " -z"], - ["-x+1/2", " z-1/4", " y+1/4"], - ["-x+1/2", " -z+1/2", " -y"], - ["z-1/4", " -y+1/2", " x+1/4"], - ["-z+1/2", " -y+1/2", " -x"], - ["-x+1/2", " -y+1/2", " -z"], - ["y+1/2", " -x+1/4", " -z-1/4"], - ["x+1/4", " y+1/4", " -z"], - ["-y+1/4", " x+1/2", " -z-1/4"], - ["-x+1/4", " z+1/2", " -y-1/4"], - ["-x+1/2", " y+1/4", " z-1/4"], - ["-x+1/4", " -z+1/4", " y"], - ["-z+1/4", " -y+1/4", " x"], - ["x+1/4", " -y+1/2", " z-1/4"], - ["z+1/2", " -y+1/4", " -x-1/4"], - ["-z+1/2", " -x+1/2", " -y"], - ["-y+1/2", " -z+1/2", " -x"], - ["y+1/4", " z+1/4", " -x"], - ["-z+1/2", " x+1/4", " y-1/4"], - ["y+1/4", " -z+1/2", " x-1/4"], - ["z+1/4", " x+1/4", " -y"], - ["z+1/4", " -x+1/2", " y-1/4"], - ["-y+1/2", " z+1/4", " x-1/4"], - ["-y+1/4", " -x+1/4", " z"], - ["y+1/2", " x+1/2", " z"], - ["x+1/2", " -z+1/4", " -y-1/4"], - ["x+1/2", " z+1/2", " y"], - ["-z+1/4", " y+1/2", " -x-1/4"], - ["z+1/2", " y+1/2", " x"], - ], - "F 4d 2 3 -1cd": [ - ["x", " y", " z"], - ["-x+1/4", " -y+1/4", " -z-1/4"], - ["-y+1/4", " x+1/4", " z+1/4"], - ["-x", " -y", " z"], - ["y+1/4", " -x+1/4", " z+1/4"], - ["x+1/4", " -z+1/4", " y+1/4"], - ["x", " -y", " -z"], - ["x+1/4", " z+1/4", " -y+1/4"], - ["z+1/4", " y+1/4", " -x+1/4"], - ["-x", " y", " -z"], - ["-z+1/4", " y+1/4", " x+1/4"], - ["y", " -x", " -z+1/2"], - ["-y", " x", " -z+1/2"], - ["-x", " z", " -y+1/2"], - ["-x", " -z", " y+1/2"], - ["-z", " -y", " x+1/2"], - ["z", " -y", " -x+1/2"], - ["z", " x", " y"], - ["y", " z", " x"], - ["-y", " -z", " x"], - ["z", " -x", " -y"], - ["-y", " z", " -x"], - ["-z", " -x", " y"], - ["-z", " x", " -y"], - ["y", " -z", " -x"], - ["-z+1/4", " -x+1/4", " -y-1/4"], - ["-y+1/4", " -z+1/4", " -x-1/4"], - ["y+1/4", " z+1/4", " -x-1/4"], - ["-z+1/4", " x+1/4", " y-1/4"], - ["y+1/4", " -z+1/4", " x-1/4"], - ["z+1/4", " x+1/4", " -y-1/4"], - ["z+1/4", " -x+1/4", " y-1/4"], - ["-y+1/4", " z+1/4", " x-1/4"], - ["y+1/4", " x+1/4", " -z+1/4"], - ["-y+1/4", " -x+1/4", " -z+1/4"], - ["-x+1/4", " z+1/4", " y+1/4"], - ["-x+1/4", " -z+1/4", " -y+1/4"], - ["z+1/4", " -y+1/4", " x+1/4"], - ["-z+1/4", " -y+1/4", " -x+1/4"], - ["x+1/4", " y+1/4", " -z-1/4"], - ["-x+1/4", " y+1/4", " z-1/4"], - ["x+1/4", " -y+1/4", " z-1/4"], - ["-y", " -x", " z+1/2"], - ["y", " x", " z+1/2"], - ["x", " -z", " -y+1/2"], - ["x", " z", " y+1/2"], - ["-z", " y", " -x+1/2"], - ["z", " y", " x+1/2"], - ["x", " y+1/2", " z+1/2"], - ["-x+1/4", " -y-1/4", " -z+1/4"], - ["-y+1/4", " x-1/4", " z-1/4"], - ["-x", " -y+1/2", " z+1/2"], - ["y+1/4", " -x-1/4", " z-1/4"], - ["x+1/4", " -z-1/4", " y-1/4"], - ["x", " -y+1/2", " -z+1/2"], - ["x+1/4", " z-1/4", " -y-1/4"], - ["z+1/4", " y-1/4", " -x-1/4"], - ["-x", " y+1/2", " -z+1/2"], - ["-z+1/4", " y-1/4", " x-1/4"], - ["y", " -x+1/2", " -z"], - ["-y", " x+1/2", " -z"], - ["-x", " z+1/2", " -y"], - ["-x", " -z+1/2", " y"], - ["-z", " -y+1/2", " x"], - ["z", " -y+1/2", " -x"], - ["z", " x+1/2", " y+1/2"], - ["y", " z+1/2", " x+1/2"], - ["-y", " -z+1/2", " x+1/2"], - ["z", " -x+1/2", " -y+1/2"], - ["-y", " z+1/2", " -x+1/2"], - ["-z", " -x+1/2", " y+1/2"], - ["-z", " x+1/2", " -y+1/2"], - ["y", " -z+1/2", " -x+1/2"], - ["-z+1/4", " -x-1/4", " -y+1/4"], - ["-y+1/4", " -z-1/4", " -x+1/4"], - ["y+1/4", " z-1/4", " -x+1/4"], - ["-z+1/4", " x-1/4", " y+1/4"], - ["y+1/4", " -z-1/4", " x+1/4"], - ["z+1/4", " x-1/4", " -y+1/4"], - ["z+1/4", " -x-1/4", " y+1/4"], - ["-y+1/4", " z-1/4", " x+1/4"], - ["y+1/4", " x-1/4", " -z-1/4"], - ["-y+1/4", " -x-1/4", " -z-1/4"], - ["-x+1/4", " z-1/4", " y-1/4"], - ["-x+1/4", " -z-1/4", " -y-1/4"], - ["z+1/4", " -y-1/4", " x-1/4"], - ["-z+1/4", " -y-1/4", " -x-1/4"], - ["x+1/4", " y-1/4", " -z+1/4"], - ["-x+1/4", " y-1/4", " z+1/4"], - ["x+1/4", " -y-1/4", " z+1/4"], - ["-y", " -x+1/2", " z"], - ["y", " x+1/2", " z"], - ["x", " -z+1/2", " -y"], - ["x", " z+1/2", " y"], - ["-z", " y+1/2", " -x"], - ["z", " y+1/2", " x"], - ["x+1/2", " y", " z+1/2"], - ["-x-1/4", " -y+1/4", " -z+1/4"], - ["-y-1/4", " x+1/4", " z-1/4"], - ["-x+1/2", " -y", " z+1/2"], - ["y-1/4", " -x+1/4", " z-1/4"], - ["x-1/4", " -z+1/4", " y-1/4"], - ["x+1/2", " -y", " -z+1/2"], - ["x-1/4", " z+1/4", " -y-1/4"], - ["z-1/4", " y+1/4", " -x-1/4"], - ["-x+1/2", " y", " -z+1/2"], - ["-z-1/4", " y+1/4", " x-1/4"], - ["y+1/2", " -x", " -z"], - ["-y+1/2", " x", " -z"], - ["-x+1/2", " z", " -y"], - ["-x+1/2", " -z", " y"], - ["-z+1/2", " -y", " x"], - ["z+1/2", " -y", " -x"], - ["z+1/2", " x", " y+1/2"], - ["y+1/2", " z", " x+1/2"], - ["-y+1/2", " -z", " x+1/2"], - ["z+1/2", " -x", " -y+1/2"], - ["-y+1/2", " z", " -x+1/2"], - ["-z+1/2", " -x", " y+1/2"], - ["-z+1/2", " x", " -y+1/2"], - ["y+1/2", " -z", " -x+1/2"], - ["-z-1/4", " -x+1/4", " -y+1/4"], - ["-y-1/4", " -z+1/4", " -x+1/4"], - ["y-1/4", " z+1/4", " -x+1/4"], - ["-z-1/4", " x+1/4", " y+1/4"], - ["y-1/4", " -z+1/4", " x+1/4"], - ["z-1/4", " x+1/4", " -y+1/4"], - ["z-1/4", " -x+1/4", " y+1/4"], - ["-y-1/4", " z+1/4", " x+1/4"], - ["y-1/4", " x+1/4", " -z-1/4"], - ["-y-1/4", " -x+1/4", " -z-1/4"], - ["-x-1/4", " z+1/4", " y-1/4"], - ["-x-1/4", " -z+1/4", " -y-1/4"], - ["z-1/4", " -y+1/4", " x-1/4"], - ["-z-1/4", " -y+1/4", " -x-1/4"], - ["x-1/4", " y+1/4", " -z+1/4"], - ["-x-1/4", " y+1/4", " z+1/4"], - ["x-1/4", " -y+1/4", " z+1/4"], - ["-y+1/2", " -x", " z"], - ["y+1/2", " x", " z"], - ["x+1/2", " -z", " -y"], - ["x+1/2", " z", " y"], - ["-z+1/2", " y", " -x"], - ["z+1/2", " y", " x"], - ["x+1/2", " y+1/2", " z"], - ["-x-1/4", " -y-1/4", " -z-1/4"], - ["-y-1/4", " x-1/4", " z+1/4"], - ["-x+1/2", " -y+1/2", " z"], - ["y-1/4", " -x-1/4", " z+1/4"], - ["x-1/4", " -z-1/4", " y+1/4"], - ["x+1/2", " -y+1/2", " -z"], - ["x-1/4", " z-1/4", " -y+1/4"], - ["z-1/4", " y-1/4", " -x+1/4"], - ["-x+1/2", " y+1/2", " -z"], - ["-z-1/4", " y-1/4", " x+1/4"], - ["y+1/2", " -x+1/2", " -z+1/2"], - ["-y+1/2", " x+1/2", " -z+1/2"], - ["-x+1/2", " z+1/2", " -y+1/2"], - ["-x+1/2", " -z+1/2", " y+1/2"], - ["-z+1/2", " -y+1/2", " x+1/2"], - ["z+1/2", " -y+1/2", " -x+1/2"], - ["z+1/2", " x+1/2", " y"], - ["y+1/2", " z+1/2", " x"], - ["-y+1/2", " -z+1/2", " x"], - ["z+1/2", " -x+1/2", " -y"], - ["-y+1/2", " z+1/2", " -x"], - ["-z+1/2", " -x+1/2", " y"], - ["-z+1/2", " x+1/2", " -y"], - ["y+1/2", " -z+1/2", " -x"], - ["-z-1/4", " -x-1/4", " -y-1/4"], - ["-y-1/4", " -z-1/4", " -x-1/4"], - ["y-1/4", " z-1/4", " -x-1/4"], - ["-z-1/4", " x-1/4", " y-1/4"], - ["y-1/4", " -z-1/4", " x-1/4"], - ["z-1/4", " x-1/4", " -y-1/4"], - ["z-1/4", " -x-1/4", " y-1/4"], - ["-y-1/4", " z-1/4", " x-1/4"], - ["y-1/4", " x-1/4", " -z+1/4"], - ["-y-1/4", " -x-1/4", " -z+1/4"], - ["-x-1/4", " z-1/4", " y+1/4"], - ["-x-1/4", " -z-1/4", " -y+1/4"], - ["z-1/4", " -y-1/4", " x+1/4"], - ["-z-1/4", " -y-1/4", " -x+1/4"], - ["x-1/4", " y-1/4", " -z-1/4"], - ["-x-1/4", " y-1/4", " z-1/4"], - ["x-1/4", " -y-1/4", " z-1/4"], - ["-y+1/2", " -x+1/2", " z+1/2"], - ["y+1/2", " x+1/2", " z+1/2"], - ["x+1/2", " -z+1/2", " -y+1/2"], - ["x+1/2", " z+1/2", " y+1/2"], - ["-z+1/2", " y+1/2", " -x+1/2"], - ["z+1/2", " y+1/2", " x+1/2"], - ], - "-F 4cvw 2vw 3": [ - ["x", " y", " z"], - ["-y", " x+1/4", " z-1/4"], - ["-x+1/4", " -y+1/4", " z"], - ["y+1/4", " -x", " z-1/4"], - ["x+1/4", " -z", " y-1/4"], - ["x", " -y+1/4", " -z+1/4"], - ["x+1/4", " z-1/4", " -y"], - ["z+1/4", " y-1/4", " -x"], - ["-x+1/4", " y", " -z+1/4"], - ["-z", " y+1/4", " x-1/4"], - ["z", " x", " y"], - ["y", " z", " x"], - ["-y+1/4", " -z+1/4", " x"], - ["z", " -x+1/4", " -y+1/4"], - ["-y+1/4", " z", " -x+1/4"], - ["-z+1/4", " -x+1/4", " y"], - ["-z+1/4", " x", " -y+1/4"], - ["y", " -z+1/4", " -x+1/4"], - ["y+1/4", " x-1/4", " -z"], - ["-y", " -x", " -z+1/2"], - ["-x", " z+1/4", " y-1/4"], - ["-x", " -z", " -y+1/2"], - ["z+1/4", " -y", " x-1/4"], - ["-z", " -y", " -x+1/2"], - ["-x", " -y", " -z"], - ["y", " -x-1/4", " -z+1/4"], - ["x-1/4", " y-1/4", " -z"], - ["-y-1/4", " x", " -z+1/4"], - ["-x-1/4", " z", " -y+1/4"], - ["-x", " y-1/4", " z-1/4"], - ["-x-1/4", " -z+1/4", " y"], - ["-z-1/4", " -y+1/4", " x"], - ["x-1/4", " -y", " z-1/4"], - ["z", " -y-1/4", " -x+1/4"], - ["-z", " -x", " -y"], - ["-y", " -z", " -x"], - ["y-1/4", " z-1/4", " -x"], - ["-z", " x-1/4", " y-1/4"], - ["y-1/4", " -z", " x-1/4"], - ["z-1/4", " x-1/4", " -y"], - ["z-1/4", " -x", " y-1/4"], - ["-y", " z-1/4", " x-1/4"], - ["-y-1/4", " -x+1/4", " z"], - ["y", " x", " z+1/2"], - ["x", " -z-1/4", " -y+1/4"], - ["x", " z", " y+1/2"], - ["-z-1/4", " y", " -x+1/4"], - ["z", " y", " x+1/2"], - ["x", " y+1/2", " z+1/2"], - ["-y", " x-1/4", " z+1/4"], - ["-x+1/4", " -y-1/4", " z+1/2"], - ["y+1/4", " -x+1/2", " z+1/4"], - ["x+1/4", " -z+1/2", " y+1/4"], - ["x", " -y-1/4", " -z-1/4"], - ["x+1/4", " z+1/4", " -y+1/2"], - ["z+1/4", " y+1/4", " -x+1/2"], - ["-x+1/4", " y+1/2", " -z-1/4"], - ["-z", " y-1/4", " x+1/4"], - ["z", " x+1/2", " y+1/2"], - ["y", " z+1/2", " x+1/2"], - ["-y+1/4", " -z-1/4", " x+1/2"], - ["z", " -x-1/4", " -y-1/4"], - ["-y+1/4", " z+1/2", " -x-1/4"], - ["-z+1/4", " -x-1/4", " y+1/2"], - ["-z+1/4", " x+1/2", " -y-1/4"], - ["y", " -z-1/4", " -x-1/4"], - ["y+1/4", " x+1/4", " -z+1/2"], - ["-y", " -x+1/2", " -z"], - ["-x", " z-1/4", " y+1/4"], - ["-x", " -z+1/2", " -y"], - ["z+1/4", " -y+1/2", " x+1/4"], - ["-z", " -y+1/2", " -x"], - ["-x", " -y+1/2", " -z+1/2"], - ["y", " -x+1/4", " -z-1/4"], - ["x-1/4", " y+1/4", " -z+1/2"], - ["-y-1/4", " x+1/2", " -z-1/4"], - ["-x-1/4", " z+1/2", " -y-1/4"], - ["-x", " y+1/4", " z+1/4"], - ["-x-1/4", " -z-1/4", " y+1/2"], - ["-z-1/4", " -y-1/4", " x+1/2"], - ["x-1/4", " -y+1/2", " z+1/4"], - ["z", " -y+1/4", " -x-1/4"], - ["-z", " -x+1/2", " -y+1/2"], - ["-y", " -z+1/2", " -x+1/2"], - ["y-1/4", " z+1/4", " -x+1/2"], - ["-z", " x+1/4", " y+1/4"], - ["y-1/4", " -z+1/2", " x+1/4"], - ["z-1/4", " x+1/4", " -y+1/2"], - ["z-1/4", " -x+1/2", " y+1/4"], - ["-y", " z+1/4", " x+1/4"], - ["-y-1/4", " -x-1/4", " z+1/2"], - ["y", " x+1/2", " z"], - ["x", " -z+1/4", " -y-1/4"], - ["x", " z+1/2", " y"], - ["-z-1/4", " y+1/2", " -x-1/4"], - ["z", " y+1/2", " x"], - ["x+1/2", " y", " z+1/2"], - ["-y+1/2", " x+1/4", " z+1/4"], - ["-x-1/4", " -y+1/4", " z+1/2"], - ["y-1/4", " -x", " z+1/4"], - ["x-1/4", " -z", " y+1/4"], - ["x+1/2", " -y+1/4", " -z-1/4"], - ["x-1/4", " z-1/4", " -y+1/2"], - ["z-1/4", " y-1/4", " -x+1/2"], - ["-x-1/4", " y", " -z-1/4"], - ["-z+1/2", " y+1/4", " x+1/4"], - ["z+1/2", " x", " y+1/2"], - ["y+1/2", " z", " x+1/2"], - ["-y-1/4", " -z+1/4", " x+1/2"], - ["z+1/2", " -x+1/4", " -y-1/4"], - ["-y-1/4", " z", " -x-1/4"], - ["-z-1/4", " -x+1/4", " y+1/2"], - ["-z-1/4", " x", " -y-1/4"], - ["y+1/2", " -z+1/4", " -x-1/4"], - ["y-1/4", " x-1/4", " -z+1/2"], - ["-y+1/2", " -x", " -z"], - ["-x+1/2", " z+1/4", " y+1/4"], - ["-x+1/2", " -z", " -y"], - ["z-1/4", " -y", " x+1/4"], - ["-z+1/2", " -y", " -x"], - ["-x+1/2", " -y", " -z+1/2"], - ["y+1/2", " -x-1/4", " -z-1/4"], - ["x+1/4", " y-1/4", " -z+1/2"], - ["-y+1/4", " x", " -z-1/4"], - ["-x+1/4", " z", " -y-1/4"], - ["-x+1/2", " y-1/4", " z+1/4"], - ["-x+1/4", " -z+1/4", " y+1/2"], - ["-z+1/4", " -y+1/4", " x+1/2"], - ["x+1/4", " -y", " z+1/4"], - ["z+1/2", " -y-1/4", " -x-1/4"], - ["-z+1/2", " -x", " -y+1/2"], - ["-y+1/2", " -z", " -x+1/2"], - ["y+1/4", " z-1/4", " -x+1/2"], - ["-z+1/2", " x-1/4", " y+1/4"], - ["y+1/4", " -z", " x+1/4"], - ["z+1/4", " x-1/4", " -y+1/2"], - ["z+1/4", " -x", " y+1/4"], - ["-y+1/2", " z-1/4", " x+1/4"], - ["-y+1/4", " -x+1/4", " z+1/2"], - ["y+1/2", " x", " z"], - ["x+1/2", " -z-1/4", " -y-1/4"], - ["x+1/2", " z", " y"], - ["-z+1/4", " y", " -x-1/4"], - ["z+1/2", " y", " x"], - ["x+1/2", " y+1/2", " z"], - ["-y+1/2", " x-1/4", " z-1/4"], - ["-x-1/4", " -y-1/4", " z"], - ["y-1/4", " -x+1/2", " z-1/4"], - ["x-1/4", " -z+1/2", " y-1/4"], - ["x+1/2", " -y-1/4", " -z+1/4"], - ["x-1/4", " z+1/4", " -y"], - ["z-1/4", " y+1/4", " -x"], - ["-x-1/4", " y+1/2", " -z+1/4"], - ["-z+1/2", " y-1/4", " x-1/4"], - ["z+1/2", " x+1/2", " y"], - ["y+1/2", " z+1/2", " x"], - ["-y-1/4", " -z-1/4", " x"], - ["z+1/2", " -x-1/4", " -y+1/4"], - ["-y-1/4", " z+1/2", " -x+1/4"], - ["-z-1/4", " -x-1/4", " y"], - ["-z-1/4", " x+1/2", " -y+1/4"], - ["y+1/2", " -z-1/4", " -x+1/4"], - ["y-1/4", " x+1/4", " -z"], - ["-y+1/2", " -x+1/2", " -z+1/2"], - ["-x+1/2", " z-1/4", " y-1/4"], - ["-x+1/2", " -z+1/2", " -y+1/2"], - ["z-1/4", " -y+1/2", " x-1/4"], - ["-z+1/2", " -y+1/2", " -x+1/2"], - ["-x+1/2", " -y+1/2", " -z"], - ["y+1/2", " -x+1/4", " -z+1/4"], - ["x+1/4", " y+1/4", " -z"], - ["-y+1/4", " x+1/2", " -z+1/4"], - ["-x+1/4", " z+1/2", " -y+1/4"], - ["-x+1/2", " y+1/4", " z-1/4"], - ["-x+1/4", " -z-1/4", " y"], - ["-z+1/4", " -y-1/4", " x"], - ["x+1/4", " -y+1/2", " z-1/4"], - ["z+1/2", " -y+1/4", " -x+1/4"], - ["-z+1/2", " -x+1/2", " -y"], - ["-y+1/2", " -z+1/2", " -x"], - ["y+1/4", " z+1/4", " -x"], - ["-z+1/2", " x+1/4", " y-1/4"], - ["y+1/4", " -z+1/2", " x-1/4"], - ["z+1/4", " x+1/4", " -y"], - ["z+1/4", " -x+1/2", " y-1/4"], - ["-y+1/2", " z+1/4", " x-1/4"], - ["-y+1/4", " -x-1/4", " z"], - ["y+1/2", " x+1/2", " z+1/2"], - ["x+1/2", " -z+1/4", " -y+1/4"], - ["x+1/2", " z+1/2", " y+1/2"], - ["-z+1/4", " y+1/2", " -x+1/4"], - ["z+1/2", " y+1/2", " x+1/2"], - ], - # 229 - "-I 4 2 3": [ - ["x", " y", " z"], - ["-y", " x", " z"], - ["-x", " -y", " z"], - ["y", " -x", " z"], - ["x", " -z", " y"], - ["x", " -y", " -z"], - ["x", " z", " -y"], - ["z", " y", " -x"], - ["-x", " y", " -z"], - ["-z", " y", " x"], - ["z", " x", " y"], - ["y", " z", " x"], - ["-y", " -z", " x"], - ["z", " -x", " -y"], - ["-y", " z", " -x"], - ["-z", " -x", " y"], - ["-z", " x", " -y"], - ["y", " -z", " -x"], - ["y", " x", " -z"], - ["-y", " -x", " -z"], - ["-x", " z", " y"], - ["-x", " -z", " -y"], - ["z", " -y", " x"], - ["-z", " -y", " -x"], - ["-x", " -y", " -z"], - ["y", " -x", " -z"], - ["x", " y", " -z"], - ["-y", " x", " -z"], - ["-x", " z", " -y"], - ["-x", " y", " z"], - ["-x", " -z", " y"], - ["-z", " -y", " x"], - ["x", " -y", " z"], - ["z", " -y", " -x"], - ["-z", " -x", " -y"], - ["-y", " -z", " -x"], - ["y", " z", " -x"], - ["-z", " x", " y"], - ["y", " -z", " x"], - ["z", " x", " -y"], - ["z", " -x", " y"], - ["-y", " z", " x"], - ["-y", " -x", " z"], - ["y", " x", " z"], - ["x", " -z", " -y"], - ["x", " z", " y"], - ["-z", " y", " -x"], - ["z", " y", " x"], - ["x+1/2", " y+1/2", " z+1/2"], - ["-y+1/2", " x+1/2", " z+1/2"], - ["-x+1/2", " -y+1/2", " z+1/2"], - ["y+1/2", " -x+1/2", " z+1/2"], - ["x+1/2", " -z+1/2", " y+1/2"], - ["x+1/2", " -y+1/2", " -z+1/2"], - ["x+1/2", " z+1/2", " -y+1/2"], - ["z+1/2", " y+1/2", " -x+1/2"], - ["-x+1/2", " y+1/2", " -z+1/2"], - ["-z+1/2", " y+1/2", " x+1/2"], - ["z+1/2", " x+1/2", " y+1/2"], - ["y+1/2", " z+1/2", " x+1/2"], - ["-y+1/2", " -z+1/2", " x+1/2"], - ["z+1/2", " -x+1/2", " -y+1/2"], - ["-y+1/2", " z+1/2", " -x+1/2"], - ["-z+1/2", " -x+1/2", " y+1/2"], - ["-z+1/2", " x+1/2", " -y+1/2"], - ["y+1/2", " -z+1/2", " -x+1/2"], - ["y+1/2", " x+1/2", " -z+1/2"], - ["-y+1/2", " -x+1/2", " -z+1/2"], - ["-x+1/2", " z+1/2", " y+1/2"], - ["-x+1/2", " -z+1/2", " -y+1/2"], - ["z+1/2", " -y+1/2", " x+1/2"], - ["-z+1/2", " -y+1/2", " -x+1/2"], - ["-x+1/2", " -y+1/2", " -z+1/2"], - ["y+1/2", " -x+1/2", " -z+1/2"], - ["x+1/2", " y+1/2", " -z+1/2"], - ["-y+1/2", " x+1/2", " -z+1/2"], - ["-x+1/2", " z+1/2", " -y+1/2"], - ["-x+1/2", " y+1/2", " z+1/2"], - ["-x+1/2", " -z+1/2", " y+1/2"], - ["-z+1/2", " -y+1/2", " x+1/2"], - ["x+1/2", " -y+1/2", " z+1/2"], - ["z+1/2", " -y+1/2", " -x+1/2"], - ["-z+1/2", " -x+1/2", " -y+1/2"], - ["-y+1/2", " -z+1/2", " -x+1/2"], - ["y+1/2", " z+1/2", " -x+1/2"], - ["-z+1/2", " x+1/2", " y+1/2"], - ["y+1/2", " -z+1/2", " x+1/2"], - ["z+1/2", " x+1/2", " -y+1/2"], - ["z+1/2", " -x+1/2", " y+1/2"], - ["-y+1/2", " z+1/2", " x+1/2"], - ["-y+1/2", " -x+1/2", " z+1/2"], - ["y+1/2", " x+1/2", " z+1/2"], - ["x+1/2", " -z+1/2", " -y+1/2"], - ["x+1/2", " z+1/2", " y+1/2"], - ["-z+1/2", " y+1/2", " -x+1/2"], - ["z+1/2", " y+1/2", " x+1/2"], - ], - # 230 - "-I 4bd 2c 3": [ - ["x", "y", "z"], - ["-y+1/4", "x-1/4", "z+1/4"], - ["-x", "-y+1/2", "z"], - ["y+1/4", "-x+1/4", "z-1/4"], - ["x+1/4", "-z+1/4", "y-1/4"], - ["x", "-y", "-z+1/2"], - ["x-1/4", "z+1/4", "-y+1/4"], - ["z-1/4", "y+1/4", "-x+1/4"], - ["-x+1/2", "y", "-z"], - ["-z+1/4", "y-1/4", "x+1/4"], - ["z", "x", "y"], - ["y", "z", "x"], - ["-y", "-z+1/2", "x"], - ["z", "-x", "-y+1/2"], - ["-y+1/2", "z", "-x"], - ["-z", "-x+1/2", "y"], - ["-z+1/2", "x", "-y"], - ["y", "-z", "-x+1/2"], - ["y-1/4", "x+1/4", "-z+1/4"], - ["-y+1/4", "-x+1/4", "-z+1/4"], - ["-x+1/4", "z-1/4", "y+1/4"], - ["-x+1/4", "-z+1/4", "-y+1/4"], - ["z+1/4", "-y+1/4", "x-1/4"], - ["-z+1/4", "-y+1/4", "-x+1/4"], - ["-x", "-y", "-z"], - ["y-1/4", "-x+1/4", "-z-1/4"], - ["x", "y+1/2", "-z"], - ["-y-1/4", "x-1/4", "-z+1/4"], - ["-x-1/4", "z-1/4", "-y+1/4"], - ["-x", "y", "z+1/2"], - ["-x+1/4", "-z-1/4", "y-1/4"], - ["-z+1/4", "-y-1/4", "x-1/4"], - ["x+1/2", "-y", "z"], - ["z-1/4", "-y+1/4", "-x-1/4"], - ["-z", "-x", "-y"], - ["-y", "-z", "-x"], - ["y", "z+1/2", "-x"], - ["-z", "x", "y+1/2"], - ["y+1/2", "-z", "x"], - ["z", "x+1/2", "-y"], - ["z+1/2", "-x", "y"], - ["-y", "z", "x+1/2"], - ["-y+1/4", "-x-1/4", "z-1/4"], - ["y-1/4", "x-1/4", "z-1/4"], - ["x-1/4", "-z+1/4", "-y-1/4"], - ["x-1/4", "z-1/4", "y-1/4"], - ["-z-1/4", "y-1/4", "-x+1/4"], - ["z-1/4", "y-1/4", "x-1/4"], - ["x+1/2", "y+1/2", "z+1/2"], - ["-y-1/4", "x+1/4", "z-1/4"], - ["-x+1/2", "-y", "z+1/2"], - ["y-1/4", "-x-1/4", "z+1/4"], - ["x-1/4", "-z-1/4", "y+1/4"], - ["x+1/2", "-y+1/2", "-z"], - ["x+1/4", "z-1/4", "-y-1/4"], - ["z+1/4", "y-1/4", "-x-1/4"], - ["-x", "y+1/2", "-z+1/2"], - ["-z-1/4", "y+1/4", "x-1/4"], - ["z+1/2", "x+1/2", "y+1/2"], - ["y+1/2", "z+1/2", "x+1/2"], - ["-y+1/2", "-z", "x+1/2"], - ["z+1/2", "-x+1/2", "-y"], - ["-y", "z+1/2", "-x+1/2"], - ["-z+1/2", "-x", "y+1/2"], - ["-z", "x+1/2", "-y+1/2"], - ["y+1/2", "-z+1/2", "-x"], - ["y+1/4", "x-1/4", "-z-1/4"], - ["-y-1/4", "-x-1/4", "-z-1/4"], - ["-x-1/4", "z+1/4", "y-1/4"], - ["-x-1/4", "-z-1/4", "-y-1/4"], - ["z-1/4", "-y-1/4", "x+1/4"], - ["-z-1/4", "-y-1/4", "-x-1/4"], - ["-x+1/2", "-y+1/2", "-z+1/2"], - ["y+1/4", "-x-1/4", "-z+1/4"], - ["x+1/2", "y", "-z+1/2"], - ["-y+1/4", "x+1/4", "-z-1/4"], - ["-x+1/4", "z+1/4", "-y-1/4"], - ["-x+1/2", "y+1/2", "z"], - ["-x-1/4", "-z+1/4", "y+1/4"], - ["-z-1/4", "-y+1/4", "x+1/4"], - ["x", "-y+1/2", "z+1/2"], - ["z+1/4", "-y-1/4", "-x+1/4"], - ["-z+1/2", "-x+1/2", "-y+1/2"], - ["-y+1/2", "-z+1/2", "-x+1/2"], - ["y+1/2", "z", "-x+1/2"], - ["-z+1/2", "x+1/2", "y"], - ["y", "-z+1/2", "x+1/2"], - ["z+1/2", "x", "-y+1/2"], - ["z", "-x+1/2", "y+1/2"], - ["-y+1/2", "z+1/2", "x"], - ["-y-1/4", "-x+1/4", "z+1/4"], - ["y+1/4", "x+1/4", "z+1/4"], - ["x+1/4", "-z-1/4", "-y+1/4"], - ["x+1/4", "z+1/4", "y+1/4"], - ["-z+1/4", "y+1/4", "-x-1/4"], - ["z+1/4", "y+1/4", "x+1/4"], - ], - ####################### - # Non-standard settings - # 1 - "A 1": [["x", "y", "z"], ["x", "y+1/2", "z+1/2"]], - "B 1": [["x", "y", "z"], ["x+1/2", "y", "z+1/2"]], - "C 1": [["x", "y", "z"], ["x+1/2", "y+1/2", "z"]], - "I 1": [["x", "y", "z"], ["x+1/2", "y+1/2", "z+1/2"]], - "F 1": [ - ["x", "y", "z"], - ["x", "y+1/2", "z+1/2"], - ["x+1/2", "y", "z+1/2"], - ["x+1/2", "y+1/2" + "z"], - ], - # 2 - "-A 1": [ - ["x", "y", "z"], - ["x", "y+1/2", "z+1/2"], - ["-x", "-y", "-z"], - ["-x", "-y+1/2", "-z+1/2"], - ], - "-B 1": [ - ["x", "y", "z"], - ["x+1/2", "y", "z+1/2"], - ["-x", "-y", "-z"], - ["-x+1/2", "-y", "-z+1/2"], - ], - "-C 1": [ - ["x", "y", "z"], - ["x+1/2", "y+1/2", "z"], - ["-x", "-y", "-z"], - ["-x+1/2", "-y+1/2", "-z"], - ], - "-I 1": [ - ["x", "y", "z"], - ["x+1/2", "y+1/2", "z+1/2"], - ["-x", "-y", "-z"], - ["-x+1/2", "-y+1/2", "-z+1/2"], - ], - "-F 1": [ - ["x", "y", "z"], - ["x", "y+1/2", "z+1/2"], - ["x+1/2", "y", "z+1/2"], - ["x+1/2", "y+1/2" + "z"], - ["-x", "-y", "-z"], - ["-x", "-y+1/2", "-z+1/2"], - ["-x+1/2", "-y", "-z+1/2"], - ["-x+1/2", "-y+1/2" + "-z"], - ], - # 5 - "F 2": [ - ["x", "y", "z"], - ["-x", "-y", "z"], - ["x", "y+1/2", "z+1/2"], - ["-x", "-y+1/2", "z+1/2"], - ["x+1/2", "y", "z+1/2"], - ["-x+1/2", "-y", "z+1/2"], - ["x+1/2", "y+1/2", "z"], - ["-x+1/2", "-y+1/2", "z"], - ], - "F 2x": [ - ["x", "y", "z"], - ["x", "-y", "-z"], - ["x", "y+1/2", "z+1/2"], - ["x", "-y+1/2", "-z+1/2"], - ["x+1/2", "y", "z+1/2"], - ["x+1/2", "-y", "-z+1/2"], - ["x+1/2", "y+1/2", "z"], - ["x+1/2", "-y+1/2", "-z"], - ], - "F 2y": [ - ["x", "y", "z"], - ["-x", "y", "-z"], - ["x", "y+1/2", "z+1/2"], - ["-x", "y+1/2", "-z+1/2"], - ["x+1/2", "y", "z+1/2"], - ["-x+1/2", "y", "-z+1/2"], - ["x+1/2", "y+1/2", "z"], - ["-x+1/2", "y+1/2", "-z"], - ], - # 7 - "B -2yc": [ - ["x", "y", "z"], - ["x", "-y", "z+1/2"], - ["x+1/2", "y", "z+1/2"], - ["x+1/2", "-y", "z"], - ], - # 8 - "F -2": [ - ["x", "y", "z"], - ["x", "y", "-z"], - ["x", "y+1/2", "z+1/2"], - ["x", "y+1/2", "-z+1/2"], - ["x+1/2", "y", "z+1/2"], - ["x+1/2", "y", "-z+1/2"], - ["x+1/2", "y+1/2", "z"], - ["x+1/2", "y+1/2", "-z"], - ], - "F -2x": [ - ["x", "y", "z"], - ["-x", "y", "z"], - ["x", "y+1/2", "z+1/2"], - ["-x", "y+1/2", "z+1/2"], - ["x+1/2", "y", "z+1/2"], - ["-x+1/2", "y", "z+1/2"], - ["x+1/2", "y+1/2", "z"], - ["-x+1/2", "y+1/2", "z"], - ], - "F -2y": [ - ["x", "y", "z"], - ["x", "-y", "z"], - ["x", "y+1/2", "z+1/2"], - ["x", "-y+1/2", "z+1/2"], - ["x+1/2", "y", "z+1/2"], - ["x+1/2", "-y", "z+1/2"], - ["x+1/2", "y+1/2", "z"], - ["x+1/2", "-y+1/2", "z"], - ], - # 9 - "F -2d": [ - ["x", "y", "z"], - ["x+1/4", "y+1/4", "-z+1/4"], - ["x", "y+1/2", "z+1/2"], - ["x+1/4", "y-1/4", "-z-1/4"], - ["x+1/2", "y", "z+1/2"], - ["x-1/4", "y+1/4", "-z-1/4"], - ["x+1/2", "y+1/2", "z"], - ["x-1/4", "y-1/4", "-z+1/4"], - ], - "F -2xd": [ - ["x", "y", "z"], - ["-x+1/4", "y+1/4", "z+1/4"], - ["x", "y+1/2", "z+1/2"], - ["-x+1/4", "y-1/4", "z-1/4"], - ["x+1/2", "y", "z+1/2"], - ["-x-1/4", "y+1/4", "z-1/4"], - ["x+1/2", "y+1/2", "z"], - ["-x-1/4", "y-1/4", "z+1/4"], - ], - "F -2yd": [ - ["x", "y", "z"], - ["x+1/4", "-y+1/4", "z+1/4"], - ["x", "y+1/2", "z+1/2"], - ["x+1/4", "-y-1/4", "z-1/4"], - ["x+1/2", "y", "z+1/2"], - ["x-1/4", "-y+1/4", "z-1/4"], - ["x+1/2", "y+1/2", "z"], - ["x-1/4", "-y-1/4", "z+1/4"], - ], - # 12 - "-F 2": [ - ["x", "y", "z"], - ["x", "y", "-z"], - ["-x", "-y", "-z"], - ["-x", "-y", "z"], - ["x", "y+1/2", "-z+1/2"], - ["x+1/2", "y", "-z+1/2"], - ["x+1/2", "y+1/2", "-z"], - ["-x", "-y+1/2", "-z+1/2"], - ["-x+1/2", "-y", "-z+1/2"], - ["-x+1/2", "-y+1/2", "-z"], - ["-x", "-y+1/2", "z+1/2"], - ["-x+1/2", "-y", "z+1/2"], - ["-x+1/2", "-y+1/2", "z"], - ["x", "y+1/2", "z+1/2"], - ["x+1/2", "y", "z+1/2"], - ["x+1/2", "y+1/2", "z"], - ], - "-F 2x": [ - ["x", "y", "z"], - ["-x", "y", "z"], - ["-x", "-y", "-z"], - ["x", "-y", "-z"], - ["-x", "y+1/2", "z+1/2"], - ["-x+1/2", "y", "z+1/2"], - ["-x+1/2", "y+1/2", "z"], - ["-x", "-y+1/2", "-z+1/2"], - ["-x+1/2", "-y", "-z+1/2"], - ["-x+1/2", "-y+1/2", "-z"], - ["x", "-y+1/2", "-z+1/2"], - ["x+1/2", "-y", "-z+1/2"], - ["x+1/2", "-y+1/2", "-z"], - ["x", "y+1/2", "z+1/2"], - ["x+1/2", "y", "z+1/2"], - ["x+1/2", "y+1/2", "z"], - ], - "-F 2y": [ - ["x", "y", "z"], - ["x", "-y", "z"], - ["-x", "-y", "-z"], - ["-x", "y", "-z"], - ["x", "-y+1/2", "z+1/2"], - ["x+1/2", "-y", "z+1/2"], - ["x+1/2", "-y+1/2", "z"], - ["-x", "-y+1/2", "-z+1/2"], - ["-x+1/2", "-y", "-z+1/2"], - ["-x+1/2", "-y+1/2", "-z"], - ["-x", "y+1/2", "-z+1/2"], - ["-x+1/2", "y", "-z+1/2"], - ["-x+1/2", "y+1/2", "-z"], - ["x", "y+1/2", "z+1/2"], - ["x+1/2", "y", "z+1/2"], - ["x+1/2", "y+1/2", "z"], - ], - # 15 - "F 2ycuw -1c": [ - ["x", "y", "z"], - ["-x", "-y", "-z+1/2"], - ["-x+1/4", "y", "-z-1/4"], - ["x+1/4", "-y", "z+1/4"], - ["x", "y+1/2", "z+1/2"], - ["-x", "-y+1/2", "-z"], - ["-x+1/4", "y+1/2", "-z+1/4"], - ["x+1/4", "-y+1/2", "z-1/4"], - ["x+1/2", "y", "z+1/2"], - ["-x+1/2", "-y", "-z"], - ["-x-1/4", "y", "-z+1/4"], - ["x-1/4", "-y", "z-1/4"], - ["x+1/2", "y+1/2", "z"], - ["-x+1/2", "-y+1/2", "-z+1/2"], - ["-x-1/4", "y+1/2", "-z-1/4"], - ], - # 70 - "-F 2 2 -1d": [ - ["x", "y", "z"], - ["-x+1/4", "-y+1/4", "z"], - ["x", "-y+1/4", "-z+1/4"], - ["-x+1/4", "y", "-z+1/4"], - ["-x", "-y", "-z"], - ["x-1/4", "y-1/4", "-z"], - ["-x", "y-1/4", "z-1/4"], - ["x-1/4", "-y", "z-1/4"], - ["x", "y+1/2", "z+1/2"], - ["-x+1/4", "-y-1/4", "z+1/2"], - ["x", "-y-1/4", "-z-1/4"], - ["-x+1/4", "y+1/2", "-z-1/4"], - ["-x", "-y+1/2", "-z+1/2"], - ["x-1/4", "y+1/4", "-z+1/2"], - ["-x", "y+1/4", "z+1/4"], - ["x-1/4", "-y+1/2", "z+1/4"], - ["x+1/2", "y", "z+1/2"], - ["-x-1/4", "-y+1/4", "z+1/2"], - ["x+1/2", "-y+1/4", "-z-1/4"], - ["-x-1/4", "y", "-z-1/4"], - ["-x+1/2", "-y", "-z+1/2"], - ["x+1/4", "y-1/4", "-z+1/2"], - ["-x+1/2", "y-1/4", "z+1/4"], - ["x+1/4", "-y", "z+1/4"], - ["x+1/2", "y+1/2", "z"], - ["-x-1/4", "-y-1/4", "z"], - ["x+1/2", "-y-1/4", "-z+1/4"], - ["-x-1/4", "y+1/2", "-z+1/4"], - ["-x+1/2", "-y+1/2", "-z"], - ["x+1/4", "y+1/4", "-z"], - ["-x+1/2", "y+1/4", "z-1/4"], - ["x+1/4", "-y+1/2", "z-1/4"], - ], - "-F 2uv 2vw": [ - ["x", "y", "z"], - ["-x+1/4", "-y+1/4", "-z+1/4"], - ["-x", "-y", "z"], - ["x", "-y", "-z"], - ["-x", "y", "-z"], - ["x+1/4", "y+1/4", "-z+1/4"], - ["-x+1/4", "y+1/4", "z+1/4"], - ["x+1/4", "-y+1/4", "z+1/4"], - ["x", "y+1/2", "z+1/2"], - ["-x+1/4", "-y-1/4", "-z-1/4"], - ["-x", "-y+1/2", "z+1/2"], - ["x", "-y+1/2", "-z+1/2"], - ["-x", "y+1/2", "-z+1/2"], - ["x+1/4", "y-1/4", "-z-1/4"], - ["-x+1/4", "y-1/4", "z-1/4"], - ["x+1/4", "-y-1/4", "z-1/4"], - ["x+1/2", "y", "z+1/2"], - ["-x-1/4", "-y+1/4", "-z-1/4"], - ["-x+1/2", "-y", "z+1/2"], - ["x+1/2", "-y", "-z+1/2"], - ["-x+1/2", "y", "-z+1/2"], - ["x-1/4", "y+1/4", "-z-1/4"], - ["-x-1/4", "y+1/4", "z-1/4"], - ["x-1/4", "-y+1/4", "z-1/4"], - ["x+1/2", "y+1/2", "z"], - ["-x-1/4", "-y-1/4", "-z+1/4"], - ["-x+1/2", "-y+1/2", "z"], - ["x+1/2", "-y+1/2", "-z"], - ["-x+1/2", "y+1/2", "-z"], - ["x-1/4", "y-1/4", "-z+1/4"], - ["-x-1/4", "y-1/4", "z+1/4"], - ["x-1/4", "-y-1/4", "z+1/4"], - ], - # 139 - "-F 4 2": [ - ["x", "-y", "-z"], - ["y", "-x", "-z"], - ["y", "x", "-z"], - ["-x", "-y", "-z"], - ["-x", "y", "-z"], - ["-y", "x", "-z"], - ["-y", "-x", "-z"], - ["x", "y", "-z"], - ["x", "-y", "z"], - ["y", "-x", "z"], - ["y", "x", "z"], - ["-x", "-y", "z"], - ["-x", "y", "z"], - ["-y", "x", "z"], - ["-y", "-x", "z"], - ["x", "y", "z"], - ["x", "-y+1/2", "-z+1/2"], - ["x+1/2", "-y", "-z+1/2"], - ["x+1/2", "-y+1/2", "-z"], - ["y", "-x+1/2", "-z+1/2"], - ["y+1/2", "-x", "-z+1/2"], - ["y+1/2", "-x+1/2", "-z"], - ["y", "x+1/2", "-z+1/2"], - ["y+1/2", "x", "-z+1/2"], - ["y+1/2", "x+1/2", "-z"], - ["-x", "-y+1/2", "-z+1/2"], - ["-x+1/2", "-y", "-z+1/2"], - ["-x+1/2", "-y+1/2", "-z"], - ["-x", "y+1/2", "-z+1/2"], - ["-x+1/2", "y", "-z+1/2"], - ["-x+1/2", "y+1/2", "-z"], - ["-y", "x+1/2", "-z+1/2"], - ["-y+1/2", "x", "-z+1/2"], - ["-y+1/2", "x+1/2", "-z"], - ["-y", "-x+1/2", "-z+1/2"], - ["-y+1/2", "-x", "-z+1/2"], - ["-y+1/2", "-x+1/2", "-z"], - ["x", "y+1/2", "-z+1/2"], - ["x+1/2", "y", "-z+1/2"], - ["x+1/2", "y+1/2", "-z"], - ["x", "-y+1/2", "z+1/2"], - ["x+1/2", "-y", "z+1/2"], - ["x+1/2", "-y+1/2", "z"], - ["y", "-x+1/2", "z+1/2"], - ["y+1/2", "-x", "z+1/2"], - ["y+1/2", "-x+1/2", "z"], - ["y", "x+1/2", "z+1/2"], - ["y+1/2", "x", "z+1/2"], - ["y+1/2", "x+1/2", "z"], - ["-x", "-y+1/2", "z+1/2"], - ["-x+1/2", "-y", "z+1/2"], - ["-x+1/2", "-y+1/2", "z"], - ["-x", "y+1/2", "z+1/2"], - ["-x+1/2", "y", "z+1/2"], - ["-x+1/2", "y+1/2", "z"], - ["-y", "x+1/2", "z+1/2"], - ["-y+1/2", "x", "z+1/2"], - ["-y+1/2", "x+1/2", "z"], - ["-y", "-x+1/2", "z+1/2"], - ["-y+1/2", "-x", "z+1/2"], - ["-y+1/2", "-x+1/2", "z"], - ["x", "y+1/2", "z+1/2"], - ["x+1/2", "y", "z+1/2"], - ["x+1/2", "y+1/2", "z"], - ], -} diff --git a/cell2mol/cif2cell_uctools.py b/cell2mol/cif2cell_uctools.py deleted file mode 100644 index bdb22f862..000000000 --- a/cell2mol/cif2cell_uctools.py +++ /dev/null @@ -1,2204 +0,0 @@ -# Copyright 2010 Torbjorn Bjorkman -# This file is part of cif2cell -# -# cif2cell is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# cif2cell is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with cif2cell. If not, see . -# -# ****************************************************************************************** -# Description: A set of tools to generate the geometrical -# setup for various electronic structure codes. -# Contains some container classes for structural -# data and methods to extract these from a CIF -# file. -# Currently supports standard (conventional) -# cell settings and from that reduction to the -# primitive cell. -# Author: Torbjorn Bjorkman -# ORCID: 0000-0002-1154-9846 -# -# ****************************************************************************************** -import sys -import string -import copy - -from math import sin, cos, pow, gcd -from random import random, gauss -from functools import reduce - -from cell2mol.cif2cell_utils import * -from cell2mol.cif2cell_spacegroupdata import ( - Hex2RhombHall, - Number2Hall, - HM2Hall, - Hall2Number, - Rhomb2HexHall, - Hall2HM, - SymOpsHall, -) -from cell2mol.elementdata import ElementData - - -################################################################################################ - - -class CellData(GeometryObject): - """ - Class for a lot of stuff specifying a unit cell. - latticevectors : The Bravais lattice vectors - lengthscale : an overall length scale that multiplies the lattice vectors. - unit : the unit of the lengthscale - alloy : True if the compound is an alloy - atomdata : An array of arrays of AtomSite objects, in other words, a collection of - collections of atoms. The getCrystalStructure method sets up a collection of - all the inequivalent sites, and each such collection contains all the - sites generated by the representative site. So: atomdata[0][2] is the - third atom generated from the first wyckoff position. - Methods: - getFromCIF : Obtain data for setting up a cell from a CIF block. - crystal_system : Return a string with the name of the crystal system. - is_spacegroup : True/False query on crystal system ('cubic', 'trigonal'). - Also handles 'rhombohedral' correctly. - latticevectors : Return the Bravais lattice vectors as a 3x3 matrix - reciprocal_latticevectors: Return the reciprocal lattice vectors as a 3x3 matrix. - volume : Return the unit cell volume - primitive : Returns a CrystalStructure object for the primitive cell - conventional : Returns a CrystalStructure object for the conventional cell. - fill_out_empty : Fill out any site whose concentrations do not add up to 1.0 - with an empty sphere. - getCrystalStructure : The 'primitive' and 'conventional' methods are just - wrappers around this method. It requires the following - to be set beforehand: - a, b, c, alpha, beta, gamma : the lattice parameters - spacegroupnr : The space group number - ineqsites : The inequivalent sites (wyckoff positions) - occupations : The occupations of the different inequivalent sites - in the form of a list of dictionaries. Each - inequivalent site is supposed to have a dictionary - with the species occupying it and its occupancy. - Example: Two inequivalent sites, one with iron - and the other with 90% oxygen and 10% flourine: - occupations = [{'Fe':1.0}, {'O':0.9, 'F':0.1}] - getSuperCell : Return a supercell from input supercell dimensions [i,j,k] or a general map - matrix [[],[],[]]. The crystal structure must first have been initialized by - getCrystalStructure(), primitive() or conventional() methods). - """ - - def __init__(self): - GeometryObject.__init__(self) - self.initialized = False - self.force = False # Force generation despite problems? - self.cartesianInput = False - self.filename = "" - self.blockname = "" - self.quiet = False - self.coordepsilon = 0.0002 - self.HallSymbol = "" - self.spacegroupnr = 0 - self.HMSymbol = "" - self.spacegroupsetting = "" - self.cart_trans_matrix = None - self.cart_trans_vector = None - self.lattrans = LatticeMatrix([[1, 0, 0], [0, 1, 0], [0, 0, 1]]) - self.transvecs = [LatticeVector([zero, zero, zero])] - self.symops = set([]) - self.ineqsites = [] - self.occupations = [] - self.atomdata = [] - self.atomset = set([]) - self.numberOfAtoms = None - self.ChemicalComposition = dict([]) - # initial lattice parameters - self.ainit = 0.0 - self.binit = 0.0 - self.cinit = 0.0 - self.alphainit = 0.0 - self.betainit = 0.0 - self.gammainit = 0.0 - self.coainit = 1.0 - self.boainit = 1.0 - # lattice parameters used to generate the cell - self.a = 0.0 - self.b = 0.0 - self.c = 0.0 - self.alpha = 0.0 - self.beta = 0.0 - self.gamma = 0.0 - self.coa = 1.0 - self.boa = 1.0 - self.latticevectors = None - self.lengthscale = 1.0 - self.unit = "angstrom" - self.alloy = False - self.numofineqsites = 0 - # Lattice vector choices - self.primcell = False - self.rhomb2hex = False - self.rhombohedral = False - self.supercell = False - # alternate settings for some space groups - self.specialIsetting = 0 - - def newunit(self, newunit="angstrom"): - """ Set new unit for the length scale. Valid choices are: - * angstrom - * bohr (bohr radii, or a.u. (atomic unit)) - * nm (nanometer) - """ - if self.unit == newunit: - return - if self.unit == "angstrom" and newunit == "bohr": - fact = 1.8897261 - elif self.unit == "bohr" and newunit == "angstrom": - fact = 0.52917721 - elif self.unit == "angstrom" and newunit == "nm": - fact = 0.1 - elif self.unit == "nm" and newunit == "angstrom": - fact = 10 - elif self.unit == "bohr" and newunit == "nm": - fact = 0.052917721 - elif self.unit == "nm" and newunit == "bohr": - fact = 18.897261 - else: - raise CellError("newunit: " + newunit + " No such unit.") - self.lengthscale *= fact - self.a *= fact - self.b *= fact - self.c *= fact - self.unit = newunit - - def crystal_system(self): - return crystal_system(self.spacegroupnr) - - def is_spacegroup(self, type): - if type == "rhombohedral": - return self.HallSymbol in Hex2RhombHall - else: - return self.crystal_system() == type - - def conventional_latticevectors(self): - # Set up Bravais lattice vectors of the conventional cell - self.coa = self.c / self.a - self.boa = self.b / self.a - alphar = self.alpha * pi / 180 - betar = self.beta * pi / 180 - gammar = self.gamma * pi / 180 - if self.crystal_system() == "cubic": - latticevectors = LatticeMatrix( - [[one, zero, zero], [zero, one, zero], [zero, zero, one]] - ) - elif self.crystal_system() == "hexagonal": - latticevectors = LatticeMatrix( - [ - [sin(gammar), cos(gammar), zero], - [zero, one, zero], - [zero, zero, self.coa], - ] - ) - elif ( - self.crystal_system() == "tetragonal" - or self.crystal_system() == "orthorhombic" - ): - latticevectors = LatticeMatrix( - [[one, zero, zero], [zero, self.boa, zero], [zero, zero, self.coa]] - ) - # elif self.crystal_system() == 'monoclinic': - # latticevectors = LatticeMatrix([[one, zero, zero], - ## [zero, self.boa, zero], - # [self.coa*cos(betar), zero, self.coa*sin(betar)]]) - elif self.crystal_system() == "trigonal": - # Hexagonal cell taken as conventional - if not abs(self.gamma - 120) < self.coordepsilon: - gammar = 120 * pi / 180 - latticevectors = LatticeMatrix( - [ - [sin(gammar), cos(gammar), zero], - [zero, one, zero], - [zero, zero, self.coa], - ] - ) - elif ( - self.crystal_system() == "triclinic" - or self.crystal_system() == "monoclinic" - or self.crystal_system() == "unknown" - ): - angfac1 = (cos(alphar) - cos(betar) * cos(gammar)) / sin(gammar) - angfac2 = sqrt( - sin(gammar) ** 2 - - cos(betar) ** 2 - - cos(alphar) ** 2 - + 2 * cos(alphar) * cos(betar) * cos(gammar) - ) / sin(gammar) - latticevectors = LatticeMatrix( - [ - [one, zero, zero], - [self.boa * cos(gammar), self.boa * sin(gammar), zero], - [self.coa * cos(betar), self.coa * angfac1, self.coa * angfac2], - ] - ) - else: - raise SymmetryError( - "No support for " + self.crystal_system() + " crystal systems." - ) - return latticevectors - - # The reciprocal lattice vectors corresponding to the lattice vectors of the structure - # (b1, b2, b3)^T = 2 * pi * (a1, a2, a3)^{-1} - def reciprocal_latticevectors(self): - t = minv3(self.latticevectors) - reclatvect = [] - for j in range(3): - reclatvect.append([]) - for i in range(3): - reclatvect[j].append(t[i][j] * 2 * pi) - return LatticeMatrix(reclatvect) - - # Define comparison functions - def poscomp(self, pos1, pos2): - # Return True if two positions are the same - if ( - abs(pos1[0] - pos2[0]) < self.coordepsilon - and abs(pos1[1] - pos2[1]) < self.coordepsilon - and abs(pos1[2] - pos2[2]) < self.coordepsilon - ): - return True - else: - return False - - def transveccomp(self, pos1, pos2): - # Return True if two positions only differ by one - # of the induced lattice translations - match = False - for tv in self.transvecs: - if ( - abs(pos1[0] - (pos2[0] - tv[0])) < self.coordepsilon - and abs(pos1[1] - (pos2[1] - tv[1])) < self.coordepsilon - and abs(pos1[2] - (pos2[2] - tv[2])) < self.coordepsilon - ): - match = True - return match - - def duplicates(self, poslist, compfunc=transveccomp): - # Return list of indices of duplicates in a list, - # sorted in reverse order to be easy to use for removing the duplicates. - # Optionally supply a comparison function for when two coordinates - # are the same, else use 'samecoords' function from above. - removeindices = set([]) - for i in range(len(poslist)): - for j in range(len(poslist) - 1, i, -1): - if compfunc(self, poslist[i], poslist[j]): - removeindices.add(j) - removeindices = list(removeindices) - removeindices.sort(reverse=True) - return removeindices - - def volume(self): - """ Return the volume of the cell. """ - return abs(det3(self.latticevectors)) - - def natoms(self): - """ Return the number of atoms in the cell. """ - i = 0 - for a in self.atomdata: - i += len(a) - return i - - def primitive(self): - """ Return a CrystalStructure object for the primitive cell.""" - self.atomdata = [] - self.latticevectors = [] - self.lattrans = LatticeMatrix([[1, 0, 0], [0, 1, 0], [0, 0, 1]]) - self.transvecs = [LatticeVector([zero, zero, zero])] - self.symops = set([]) - self.getCrystalStructure(reducecell=True) - return self - - def conventional(self): - """ Return a CrystalStructure object for the conventional cell.""" - self.atomdata = [] - self.latticevectors = [] - self.lattrans = LatticeMatrix([[1, 0, 0], [0, 1, 0], [0, 0, 1]]) - self.transvecs = [LatticeVector([zero, zero, zero])] - self.symops = set([]) - w = self.getCrystalStructure(reducecell=False) - return w - - # Fill out sites that are not occupied to 100% with - # empty spheres (optionally giving a label). - def fill_out_empty(self, label="Em"): - for a in self.atomdata: - # Check concentration - t = 0.0 - for sp, conc in a[0].species.items(): - t += conc - # Add vacuum spheres if partially empty - if abs(1.0 - t) > a[0].compeps: - for b in a: - b.species[label] = 1.0 - t - - # Randomly displace atoms - def randomDisplacements(self, size=0.1, distribution="uniform"): - """ - Randomly displace all atoms. The size parameter gives the maximal - deviation in whatever the real space unit currently is (typically Angstrom). - The random displacements are uniformly distributed in the interval ]-size,size[. - """ - invlatvecs = minv3(self.latticevectors) - tmp = [] - i = 0 - for a in self.atomdata: - for b in a: - if distribution == "gaussian": - r = gauss(0.0, size) * size - theta = gauss(0.0, size) * pi - phi = gauss(0.0, size) * 2 * pi - elif distribution == "uniform": - r = random() * size - theta = random() * pi - phi = random() * 2 * pi - else: - raise SetupError("Unknown distribution for random displacements.") - d = Vector( - [ - r * sin(theta) * cos(phi), - r * sin(theta) * sin(phi), - r * cos(theta), - ] - ).transform(invlatvecs) - b.position = LatticeVector([b.position[i] + d[i] for i in range(3)]) - tmp.append([b]) - # We need to reset implicit symmetry information here - self.atomdata = tmp - - def getCrystalStructure(self, reducecell=False): - """ - Return a CrystalStructure object, either as it is or reduced to the - primitive cell. - """ - # reduce to primitive cell? - self.primcell = reducecell - - ################################### - # INITIALIZE SPACE GROUP DATA # - ################################### - # Try to set Hall symbol, if not set - if self.HallSymbol == "": - if self.HMSymbol == "": - if 0 < self.spacegroupnr <= 230: - try: - self.HallSymbol = Number2Hall[self.spacegroupnr] - except: - raise SymmetryError( - "Found neither Hall nor H-M symbol and space group %i does not have a unique setting." - % self.spacegroupnr - ) - else: - if self.force: - sys.stderr.write( - "***Warning: CIF file contains neither space group symbols nor space group number.\n" - ) - sys.stderr.write( - " Defaulting to P 1. Check results carefully!\n" - ) - self.HallSymbol = "P 1" - else: - raise SymmetryError( - "CIF file contains neither space group symbols nor space group number." - ) - try: - self.HallSymbol = HM2Hall[self.HMSymbol] - except: - sys.stderr.write( - "***Warning: Cannot convert " + self.HMSymbol + " to Hall symbol.\n" - ) - - # Set space group number and H-M symbol if not set - if not 0 < self.spacegroupnr <= 230: - try: - self.spacegroupnr = Hall2Number[self.HallSymbol] - except: - pass - if self.HMSymbol == "": - try: - self.HMSymbol == Hall2HM[self.HallSymbol] - except: - pass - - # Check if we know enough: - # To produce the conventional cell (self.primcell=False) we don't need the space group - # symbol or number as long as we have the symmetry operations (equivalent sites). - if self.spacegroupsetting == "": - try: - self.spacegroupsetting = self.HallSymbol.lstrip("-")[0] - except: - try: - self.spacegroupsetting = self.HMSymbol[0] - except: - pass - if self.spacegroupsetting == "": - try: - self.spacegroupsetting = SGnrtoHM[str(self.spacegroupnr)][0] - except: - pass - # Sanity test of lattice parameters - if ( - self.a != 0 - and self.b != 0 - and self.c != 0 - and self.alpha != 0 - and self.beta != 0 - and self.gamma != 0 - ): - if not 0 < self.spacegroupnr < 231: - if len(self.symops) >= 1: - if self.primcell == True: - if self.spacegroupsetting == "P": - self.spacegroupnr = 0 - else: - raise SymmetryError( - "Insufficient symmetry information to reduce to primitive cell" - + " (need space group number or Hermann-Mauguin symbol).\n" - + " Run with --no-reduce to generate cell in the conventional setting." - ) - else: - self.spacegroupnr = 0 - else: - raise CellError("No crystallographic parameter may be zero.") - - # If no symmetry operations are not set, get internally stored. - if not self.symops: - eqsites = SymOpsHall[self.HallSymbol] - # Define the set of space group operations. - self.symops = set([]) - for site in eqsites: - self.symops.add(SymmetryOperation(site)) - - ############################ - # INITIALIZE LATTICE # - ############################ - # Special case: trigonal systems in rhombohedral setting - # are first transformed to hexagonal setting - if ( - self.HallSymbol in Rhomb2HexHall - and abs(self.gamma - 120) > self.coordepsilon - ): - self.rhomb2hex = True - self.c = self.a * sqrt(3 + 6 * cos(self.alpha * pi / 180)) - self.a = 2 * self.a * sin(self.alpha * pi / 360) - self.b = self.a - self.alpha = 90.0 - self.beta = 90.0 - self.gamma = 120.0 - rhomb2hextrans = LatticeMatrix( - [ - [2 * third, third, third], - [-third, third, third], - [-third, -2 * third, third], - ] - ) - for i in range(len(self.ineqsites)): - self.ineqsites[i] = Vector(mvmult3(rhomb2hextrans, self.ineqsites[i])) - # We also need the correct symmetry operations. - eqsites = SymOpsHall[Rhomb2HexHall[self.HallSymbol]] - self.symops = set([]) - for site in eqsites: - self.symops.add(SymmetryOperation(site)) - # set primitive lattice vectors - self.latticevectors = self.conventional_latticevectors() - self.lengthscale = self.a - self.alloy = False - - # Transform ineqsites to lattice coordinates if they were given as - # cartesian in the input file. - if self.cartesianInput: - try: - trans_matrix = minv3(self.cart_trans_matrix) - except: - if self.force: - # Fallback on the transformation matrix from default lattice vector choices. - t = [] - for i in range(3): - t.append([]) - for j in range(3): - t[i].append(self.latticevectors[i][j] * self.lengthscale) - trans_matrix = LatticeMatrix(minv3(t)) - else: - raise CellError( - "Failed to perform transformation from cartesian to lattice coordinates." - ) - try: - # Primarily use the transformation matrix/translation vector given as input. - for i in range(len(self.ineqsites)): - t = self.ineqsites[i] - self.cart_trans_vector - self.ineqsites[i] = Vector(mvmult3(trans_matrix, t)) - except: - raise CellError( - "Failed to perform transformation from cartesian to lattice coordinates." - ) - - ############################### - # LATTICE TRANSLATIONS # - ############################### - # - # Choices of lattice vectors made to largely coincide with the choices - # made at http://cst-www.nrl.navy.mil/lattice/ - # - # The induced translation vectors are from Zachariasen, "Theory of x-ray - # diffraction in crystals". - # - # Relations between rhombohedral and hexagonal settings of trigonal - # space groups from Tilley, "Crystals and crystal structures" - # Bravais lattice vectors: - # - # a_r = 2/3 a_h + 1/3 b_h + 1/3 c_h - # b_r = -1/3 a_h + 1/3 b_h + 1/3 c_h - # c_r = -1/3 a_h - 2/3 b_h + 1/3 c_h - # - # a_h = a_r - b_r - # b_h = b_r - c_r - # c_h = a_r + b_r + c_r - # - # a, c and rhombohedral angle alpha: - # - # a_h = 2 * a_r * sin(alpha/2) - # c_h = a_r * sqrt(3 + 6*cos(alpha)) - # - # a_r = sqrt(3*a_h^2 + c_h^2) / 3 - # sin(alpha/2) = 3*a_h / (2 * sqrt(3*a_h^2 + c_h^2)) - # - if self.primcell: - if self.spacegroupsetting == "I": - # Body centered - self.transvecs = [ - LatticeVector([zero, zero, zero]), - LatticeVector([half, half, half]), - ] - if self.crystal_system() == "cubic" or self.specialIsetting != 0: - self.lattrans = LatticeMatrix( - [[-half, half, half], [half, -half, half], [half, half, -half]] - ) - else: - self.lattrans = LatticeMatrix( - [[one, zero, zero], [zero, one, zero], [half, half, half]] - ) - elif self.spacegroupsetting == "F": - # face centered - self.transvecs = [ - LatticeVector([zero, zero, zero]), - LatticeVector([half, half, zero]), - LatticeVector([half, zero, half]), - LatticeVector([zero, half, half]), - ] - self.lattrans = LatticeMatrix( - [[half, half, zero], [half, zero, half], [zero, half, half]] - ) - elif self.spacegroupsetting == "A": - # A-centered - self.transvecs = [ - LatticeVector([zero, zero, zero]), - LatticeVector([zero, half, half]), - ] - self.lattrans = LatticeMatrix( - [[one, zero, zero], [zero, half, -half], [zero, half, half]] - ) - elif self.spacegroupsetting == "B": - # B-centered - self.transvecs = [ - LatticeVector([zero, zero, zero]), - LatticeVector([half, zero, half]), - ] - self.lattrans = LatticeMatrix( - [[half, zero, -half], [zero, one, zero], [half, zero, half]] - ) - elif self.spacegroupsetting == "C": - # C-centered - self.transvecs = [ - LatticeVector([zero, zero, zero]), - LatticeVector([half, half, zero]), - ] - self.lattrans = LatticeMatrix( - [[half, -half, zero], [half, half, zero], [zero, zero, one]] - ) - elif self.HallSymbol in Hex2RhombHall or self.HallSymbol in Rhomb2HexHall: - if abs(self.gamma - 120) < self.coordepsilon: - # rhombohedral from hexagonal setting - self.rhombohedral = True - self.transvecs = [ - LatticeVector([zero, zero, zero]), - LatticeVector([third, 2 * third, 2 * third]), - LatticeVector([2 * third, third, third]), - ] - self.lattrans = LatticeMatrix( - [ - [2 * third, third, third], - [-third, third, third], - [-third, -2 * third, third], - ] - ) - else: - self.transvecs = [LatticeVector([zero, zero, zero])] - self.lattrans = LatticeMatrix([[1, 0, 0], [0, 1, 0], [0, 0, 1]]) - else: - self.transvecs = [LatticeVector([zero, zero, zero])] - self.lattrans = LatticeMatrix([[1, 0, 0], [0, 1, 0], [0, 0, 1]]) - # Transform to primitive cell - tmp = [] - for i in range(3): - tmp.append(mvmult3(self.latticevectors, self.lattrans[i])) - self.latticevectors = LatticeMatrix(tmp) - # Improve precision again... - for i in range(3): - for j in range(3): - self.latticevectors[i][j] = improveprecision( - self.latticevectors[i][j], self.coordepsilon - ) - else: - # If no reduction is to be done - self.transvecs = [LatticeVector([zero, zero, zero])] - self.lattrans = LatticeMatrix([[1, 0, 0], [0, 1, 0], [0, 0, 1]]) - - # Find inverse lattice transformation matrix - invlattrans = LatticeMatrix(minv3(self.lattrans)) - - ################################# - # SYMMETRY OPERATIONS # - ################################# - - # If we reduce the cell, remove the symmetry operations that are the - # same up to an induced lattice translation - if self.primcell: - if len(self.transvecs) > 1: - redundant = set([]) - for op1 in self.symops: - for op2 in self.symops: - for vec in self.transvecs: - if op1.translation + vec == op2.translation: - if op1.rotation == op2.rotation: - if ( - op1.translation.length() - < op2.translation.length() - ): - redundant.add(op2) - self.symops -= redundant - - # Space group operations to cartesian representation - lv = self.conventional_latticevectors() - for op in self.symops: - op.rotation = lv.transform(op.rotation) - op.rotation = op.rotation.transform(minv3(lv)) - # transform translations - op.translation = op.translation.transform(minv3(self.lattrans)) - - # Test that the lattice vectors are invariant under all space group operations - # If not, the data is given in some non-standard representation that presently - # can't be handled. - if self.crystal_system() == "hexagonal" or self.crystal_system() == "trigonal": - # Hexagonal and trigonal as a special case... check that the hexagonal planes are in the ab plane - for op in self.symops: - if not ( - op.rotation[2] == Vector([0, 0, 1]) - or op.rotation[2] == Vector([0, 0, -1]) - ): - raise SymmetryError( - "Lattice vectors do not fulfil the given symmetries of the lattice!\n" - + "The cell is given in some non-standard setting presently not handled by the program." - ) - else: - for op in self.symops: - if not op.translation.length() > self.compeps: - fails = False - for vec1 in lv: - transvec = vec1.transform(op.rotation) - if not ( - transvec == lv[0] - or transvec == lv[1] - or transvec == lv[2] - or transvec == -lv[0] - or transvec == -lv[1] - or transvec == -lv[2] - ): - fails = True - if fails: - raise SymmetryError( - "Lattice vectors do not fulfil the given symmetries of the lattice!\n" - "The cell is given in some non-standard setting presently not handled by the program." - ) - - ######################### - # CELL GENERATION # - ######################### - # Atomic species and the number of each species. Site occupancies. - for i in range(len(self.ineqsites)): - # Set up atomdata - self.atomdata.append([]) - self.atomdata[i].append( - AtomSite(position=self.ineqsites[i], label=self.sitelabels[i]) - ) - # Add species and occupations to atomdata - for k, v in self.occupations[i].items(): - self.atomdata[i][0].species[k] = v - # Add charge state - for k2, v2 in self.chargedict.items(): - if k2.strip(string.punctuation + string.digits) == k: - self.atomdata[i][0].charges[k] = v2 - ## self.atomdata[i][0].charge = self.charges[i] - # Determine if we have an alloy - for element in self.occupations[i]: - v = self.occupations[i][element] - if abs(1 - v) > occepsilon: - self.alloy = True - - # Make sites unique with array of occupation info - removeindices = [] - # set up atomdata - for i in range(len(self.atomdata)): - for j in range(len(self.atomdata) - 1, i, -1): - if self.atomdata[i][0].position == self.atomdata[j][0].position: - # Add the dictionary of site j to that of site i and schedule index j for - # removal. If there is already an instance of the species on this site and - # the occupancy is different from 1, then add the occupancies (this happens - # when different valencies has been recorded). - # Now that the charge is stored, maybe this should be redone. - if self.atomdata[j][0].alloy: - for k in self.atomdata[j][0].species: - if k in self.atomdata[i][0].species: - v = ( - self.atomdata[j][0].species[k] - + self.atomdata[i][0].species[k] - ) - self.atomdata[i][0].species[k] = v - else: - self.atomdata[i][0].species[k] = self.atomdata[j][ - 0 - ].species[k] - self.atomdata[i][0].charges.update(self.atomdata[j][0].charges) - removeindices.append(j) - # ...also fix self.occupations - self.occupations[i][list(self.occupations[j])[0]] = list( - self.occupations[j].values() - )[0] - # Remove duplicate elements - removeindices = list(set(removeindices)) - removeindices.sort(reverse=True) - for i in removeindices: - self.atomdata.pop(i) - self.ineqsites.pop(i) - self.occupations.pop(i) - - # Work out all sites in the cell for atomdata/atomset - for a in self.atomdata: - for op in self.symops: - # position expression string - posexpr = [s for s in op.eqsite] - for k in range(3): - # position expression string, replacing x,y,z with numbers - posexpr[k] = posexpr[k].replace("x", str(a[0].position[0])) - posexpr[k] = posexpr[k].replace("y", str(a[0].position[1])) - posexpr[k] = posexpr[k].replace("z", str(a[0].position[2])) - position = LatticeVector([safe_matheval(pos) for pos in posexpr]) - b = AtomSite( - position=position, - species=a[0].species, - charges=a[0].charges, - label=a[0].label, - ) - self.atomset.add(b) - append = True - for site in a: - for vec in self.transvecs: - t = vec + b.position - if site.position == t: - append = False - break - if not append: - break - if append: - a.append(b) - # Transform positions. Note that atomdata and atomset alias the same data, - # so we only transform once. - for a in self.atomdata: - for b in a: - b.position = LatticeVector(mvmult3(invlattrans, b.position)) - - # Weed out remaining duplicates. A weird special case that arises when - # different symmetry equivalent sites where listed in the input file. - # Attempts to handle this on the fly from the beginning made a complete - # mess of the alloy handling... - removeindices = set([]) - for i in range(len(self.atomdata)): - for j in range(len(self.atomdata[i])): - for k in range(i + 1, len(self.atomdata)): - for l in range(len(self.atomdata[k])): - if self.atomdata[i][j].position == self.atomdata[k][l].position: - removeindices.add((k, l)) - removeindices = list(removeindices) - removeindices.sort(reverse=True) - for i, j in removeindices: - self.atomdata[i].pop(j) - # Check if any type is now completely empty - removeindices = [] - for i in range(len(self.atomdata)): - if len(self.atomdata[i]) == 0: - removeindices.append(i) - removeindices.sort(reverse=True) - for i in removeindices: - self.atomdata.pop(i) - - ###################### - # MISCELLANEOUS # - ###################### - # Chemical content dictionary - for a in self.atomdata: - for b in a: - for k, v in b.species.items(): - # Do not care about empty (vacuum) sites - if k != "Em" and k != "Vc" and k != "Va": - if k in self.ChemicalComposition: - n = self.ChemicalComposition[k] - self.ChemicalComposition[k] = v + n - else: - self.ChemicalComposition[k] = v - if not self.alloy: - L = list(self.ChemicalComposition.values()) - divisor = reduce(gcd, map(int, L)) - for k, v in self.ChemicalComposition.items(): - self.ChemicalComposition[k] = v / divisor - # Number of atoms - self.numberOfAtoms = self.natoms() - # Set flag and return the CrystalStructure in the conventional setting - self.initialized = True - return self - - def transformCell(self, transformation): - """ - Applies transformation to bravais lattice vectors (and symmetry operations). - Only transformations involving rotations and an overall rescaling of the cell are allowed. - """ - r = LatticeMatrix(transformation) - fac = pow(abs(det3(r)), float(1) / 3) - # Check that the transformation does not skew the cell. - oldanglen = set( - [ - Vector( - [ - CellFloat(self.latticevectors[0].angle(self.latticevectors[1])), - CellFloat(self.latticevectors[0].angle(self.latticevectors[2])), - CellFloat(self.latticevectors[1].angle(self.latticevectors[2])), - ] - ), - Vector( - [ - CellFloat(self.latticevectors[0].length()), - CellFloat(self.latticevectors[1].length()), - CellFloat(self.latticevectors[2].length()), - ] - ), - ] - ) - t = LatticeMatrix(mmmult3(self.latticevectors, r)) - newanglen = set( - [ - Vector( - [ - CellFloat(t[0].angle(t[1])), - CellFloat(t[0].angle(t[2])), - CellFloat(t[1].angle(t[2])), - ] - ), - Vector( - [ - CellFloat(t[0].length() / fac), - CellFloat(t[1].length() / fac), - CellFloat(t[2].length() / fac), - ] - ), - ] - ) - # print (oldanglen) - # print (newanglen) - # print (len(oldanglen), len(newanglen)) - if oldanglen == newanglen or self.force: - self.latticevectors = t - self.lengthscale /= fac - # Transform symmetry operations - newsymops = set([]) - for op in self.symops: - o = copy.copy(op) - o.rotation = LatticeMatrix(mmmult3(mmmult3(minv3(r), o.rotation), r)) - o.improveprecision() - newsymops.add(o) - self.symops = newsymops - if oldanglen != newanglen and self.force: - sys.stderr.write( - "***Error: The transformation matrix skews the lattice. Only combinations of \n" - + " rotations and rescaling of the whole cell are allowed." - ) - else: - raise CellError( - "The transformation matrix skews the lattice. Only combinations of " - + "rotations and rescaling of the whole cell are allowed." - ) - - def getSuperCell( - self, - supercellmap, - vacuum, - prevactransvec, - postvactransvec=[0.0, 0.0, 0.0], - sort="", - realign=0, - ): - """ - Returns a supercell based on the input supercell map, vacuum layers and translation vector. - The cell must have been initialized prior to calling getSuperCell. - - The cell will be padded with some number of original unit cells of vacuum - by simple rescaling of the lattice vectors and positions. This is controlled by 'vacuum'. - - Prior to addition of vacuum, all coordinates will be translated by 'prevactransvec', - which is given in units of the original lattice vectors. After the addition of vacuum, - all coordinates are translated by 'postvactransvec' (given in units of the final lattice). - """ - - # Sanity checks - if not self.initialized: - raise CellError( - "The unit cell must be initialized before a supercell can be generated." - ) - # or vacuum[0] < 0 or vacuum[1] < 0 or vacuum[2] < 0: - if len(vacuum) != 3: - raise CellError( - "The vacuum padding must be an array of three numbers >= 0." - ) - - # Map matrix - try: - mapmatrix = LatticeMatrix( - [ - [supercellmap[0], 0, 0], - [0, supercellmap[1], 0], - [0, 0, supercellmap[2]], - ] - ) - except: - try: - mapmatrix = supercellmap - except: - raise CellError("The supercell map must be a vector or a matrix.") - # Inverse of map matrix. - try: - invmapmatrix = LatticeMatrix(minv3(mapmatrix)) - except: - raise CellError("The supercell map must be invertible.") - volratio = abs(det3(mapmatrix)) - # Volume ratio must be a non-zero integer. - if abs(volratio - round(volratio, 0)) > self.compeps: - raise CellError( - "The determinant of the supercell map must be a non-zero integer." - ) - ## sys.stderr.write("***Warning: The determinant of the supercell map is a non-integer.\n") - ## sys.stderr.write(" If you did not expect this warning, immediately stop to\n") - ## sys.stderr.write(" rethink what you are doing.\n") - - # New latticevectors from supercell map. - t = mmmult3(mapmatrix, self.latticevectors) - self.latticevectors = LatticeMatrix(t) - invlatvects = minv3(self.latticevectors) - - # Set up new translation group (in new lattice vector coordinates). - # Determine limits for translation vector search - # (adapted from John Wills' cellgen program). - M = mapmatrix - # - lo = [] - up = [] - for i in range(3): - sumset = set([]) - for j in range(3): - sumset.add(int(M[i][j])) - sumset.add(int(M[i][0]) + int(M[i][1])) - sumset.add(int(M[i][0]) + int(M[i][2])) - sumset.add(int(M[i][1]) + int(M[i][2])) - sumset.add(int(M[i][0]) + int(M[i][1]) + int(M[i][2])) - sumset.add(int(M[i][0]) - int(M[i][1])) - sumset.add(int(M[i][0]) - int(M[i][2])) - sumset.add(int(M[i][1]) - int(M[i][2])) - sumset.add(int(M[i][0]) - int(M[i][1]) - int(M[i][2])) - # Don't really understand why I need to add/subtract - lo.append(min(sumset) - 1) - # 1 here... but things sometimes fail if I don't. - up.append(max(sumset) + 1) - # Translation vector search - newtranslations = set([]) - for k in range(lo[0], up[0] + 1): - for j in range(lo[1], up[1] + 1): - for i in range(lo[2], up[2] + 1): - # convert to new lattice coords - t = LatticeVector(mvmult3(invmapmatrix, [k, j, i])) - newtranslations.add(t) - # Remove identity translation. - newtranslations.remove(LatticeVector([0, 0, 0])) - - # Transform original coordinates to new basis. - for a in self.atomdata: - for b in a: - b.position = LatticeVector(mvmult3(invmapmatrix, b.position)) - for op in self.symops: - op.translation = LatticeVector(mvmult3(invmapmatrix, op.translation)) - - # Operate with new translation group on coordinates to generate all positions - newsites = [] - i = 0 - for a in self.atomdata: - newsites.append([]) - for b in a: - for translation in newtranslations: - position = LatticeVector(b.position + translation) - t = AtomSite( - position=b.position, species=b.species, charges=b.charges - ) - t.position = position - newsites[i].append(t) - i += 1 - i = 0 - for a in newsites: - for b in a: - self.atomdata[i].append(b) - self.atomset.add(b) - i += 1 - - # Move all atoms by prevactransvec - if reduce(lambda x, y: x + y, prevactransvec) != 0: - for i in range(len(self.atomdata)): - for j in range(len(self.atomdata[i])): - for k in range(3): - self.atomdata[i][j].position[k] = ( - self.atomdata[i][j].position[k] + prevactransvec[k] - ) - - # Put stuff back in cell - for a in self.atomdata: - for b in a: - b.position.intocell() - - # Put positions in cartesian coordinates for vacuum generation - for a in self.atomdata: - for b in a: - b.position = Vector(mvmult3(self.latticevectors, b.position)) - # New latticevectors after vacuum padding - vacuummapmatrix = LatticeMatrix([[1, 0, 0], [0, 1, 0], [0, 0, 1]]) - if reduce(lambda x, y: x + y, vacuum) > 0: - # add the given number of unit cell units along the lattice vectors - for j in range(len(vacuum)): - for i in range(len(self.latticevectors[j])): - self.latticevectors[j][i] = ( - self.latticevectors[j][i] - + self.latticevectors[j][i] * vacuum[j] - ) - vacuummapmatrix[j][j] = vacuummapmatrix[j][j] + vacuum[j] - # Remap coordinates after padding - invlatvect = LatticeMatrix(minv3(self.latticevectors)) - for a in self.atomdata: - for b in a: - b.position = LatticeVector(mvmult3(invlatvect, b.position)) - - # Move all atoms by postvactransvec - if reduce(lambda x, y: x + y, postvactransvec) != 0: - for i in range(len(self.atomdata)): - for j in range(len(self.atomdata[i])): - for k in range(3): - self.atomdata[i][j].position[k] = ( - self.atomdata[i][j].position[k] + postvactransvec[k] - ) - - ############ New space group operations ############ - # Only sort out space group information for diagonal map matrix. !SHOULD BE FIXED GENERALLY! - eps = self.compeps - diagonal = ( - abs(mapmatrix[0][1]) < eps - and abs(mapmatrix[0][2]) < eps - and abs(mapmatrix[1][2]) < eps - and abs(mapmatrix[1][0]) < eps - and abs(mapmatrix[2][0]) < eps - and abs(mapmatrix[2][1]) < eps - ) - if diagonal: - # Multiply group by new translation group - newops = [] - i = 0 - for vec in newtranslations: - for op in self.symops: - newops.append(SymmetryOperation()) - newops[i].rotation = op.rotation - newops[i].translation = vec + op.translation - i += 1 - for op in newops: - self.symops.add(op) - - # Weed out rotations that are broken by supercell map - lv = self.latticevectors - removeset = set([]) - # Ugly set of if's and special cases - # THIS WILL NOT WORK WITH GENERAL SUPERCELL MAP MATRIX - if self.crystal_system() == "hexagonal" or ( - self.crystal_system() == "trigonal" and not self.primcell - ): - if abs(lv[0].length() - lv[1].length()) < lv.compeps: - # if a and b are still the same, no rotation symmetry is broken - pass - else: - # if a and b are different, all rotation symmetries except inversion are broken - e = SymmetryOperation(["x", "y", "z"]) - i = SymmetryOperation(["-x", "-y", "-z"]) - for op in self.symops: - if op.rotation == e.rotation or op.rotation == i.rotation: - pass - else: - removeset.add(op) - elif self.crystal_system() == "trigonal" and self.primcell: - # if any latticevector has different length, all symmetries except inversion are broken - if ( - abs(lv[0].length() - lv[1].length()) < lv.compeps - and abs(lv[1].length() - lv[2].length()) < lv.compeps - and abs(lv[0].length() - lv[2].length()) < lv.compeps - ): - pass - else: - e = SymmetryOperation(["x", "y", "z"]) - i = SymmetryOperation(["-x", "-y", "-z"]) - for op in self.symops: - if op.rotation == e.rotation or op.rotation == i.rotation: - pass - else: - removeset.add(op) - else: - for op in self.symops: - for vec in lv: - t = Vector(mvmult3(op.rotation, vec)) - r = Vector([-u for u in t]) - # Symmetry operation OK if it maps a lattice vector into one of the other lattice vectors - equivalent = ( - t == lv[0] - or t == lv[1] - or t == lv[2] - or r == lv[0] - or r == lv[1] - or r == lv[2] - ) - if not equivalent: - removeset.add(op) - continue - # Weed out translations broken by the vacuum - for op in self.symops: - # check if vacuum padding destroys this translation - t = op.translation - for i in range(3): - if abs(t[i]) > self.compeps and abs(vacuum[i]) > self.compeps: - removeset.add(op) - # Remove broken symmetries - for op in self.symops: - for vec in lv: - t = Vector(mvmult3(op.rotation, vec)) - else: - # Otherwise just keep identity - self.symops = set([SymmetryOperation(["x", "y", "z"])]) - - # Sort the atomic positions if requested. - if sort != "": - # remove previous ordering - tempdata = [] - i = 0 - for a in self.atomdata: - for b in a: - tempdata.append([]) - tempdata[i].append(b) - i += 1 - self.atomdata = tempdata - # Identify and sort by z-layers - if sort == "zlayer": - # sort atoms by z-coordinate - self.atomdata.sort( - key=lambda a: a[0].position.transform(self.latticevectors)[2] - ) - # - elif len(sort) == 3: - # check if the string contains only 'x', 'y' or 'z' - allbutxyz = ( - string.printable.replace("x", "").replace("y", "").replace("z", "") - ) - # check if the string contains only '1', '2' or '3' - allbut123 = ( - string.printable.replace("1", "").replace("2", "").replace("3", "") - ) - # dummy table to work in python < 2.6 - table = string.maketrans("a", "a") - if len(string.translate(sort, table, allbutxyz)) == 3: - # Sort atoms by cartesian coordinate - sortnum = string.translate(sort, string.maketrans("xyz", "012")) - for i in sortnum: - self.atomdata.sort( - key=lambda a: a[0].position.transform(self.latticevectors)[ - int(i) - ] - ) - elif len(string.translate(sort, table, allbut123)) == 3: - # sort atoms by lattice coordinates - for i in sort: - self.atomdata.sort(key=lambda a: a[0].position[int(i) - 1]) - self.supercell = True - self.numberOfAtoms = self.natoms() - - # Realign lattice vectors in the cartesian reference frame? - if realign: - # "lattice parameters" of the cell - a = self.latticevectors[0].length() - b = self.latticevectors[1].length() - c = self.latticevectors[2].length() - boa = b / a - coa = c / a - alpha = self.latticevectors[1].angle(self.latticevectors[2]) - beta = self.latticevectors[0].angle(self.latticevectors[2]) - gamma = self.latticevectors[0].angle(self.latticevectors[1]) - # new lattice vectors - angfac1 = (cos(alpha) - cos(beta) * cos(gamma)) / sin(gamma) - angfac2 = sqrt( - sin(gamma) ** 2 - - cos(beta) ** 2 - - cos(alpha) ** 2 - + 2 * cos(alpha) * cos(beta) * cos(gamma) - ) / sin(gamma) - self.latticevectors = LatticeMatrix( - [ - [one, zero, zero], - [boa * cos(gamma), boa * sin(gamma), zero], - [coa * cos(beta), coa * angfac1, coa * angfac2], - ] - ) - - return self - - # Get lattice information from CIF block - def getFromCIF(self, cifblock=None): - ################################ - # Get space group information # - ################################ - # _space_group is the primary choice, so if both _symmetry and _space_group - # are present, _symmetry will be overwritten - for spgrnrid in ["_symmetry_Int_Tables_number", "_space_group_IT_number"]: - try: - self.spacegroupnr = int(cifblock[spgrnrid]) - except: - pass - for hallid in ["_symmetry_space_group_name_Hall", "_space_group_name_Hall"]: - try: - self.HallSymbol = cifblock[hallid] - except: - pass - for HMid in ["_symmetry_space_group_name_H-M", "_space_group_name_H-M_alt"]: - try: - # self.HMSymbol=cifblock[HMid].translate(string.maketrans("", ""),string.whitespace) - self.HMSymbol = cifblock[HMid].replace(" ", "") - except: - pass - # Force correct case for space group symbols - if self.HMSymbol != "": - self.HMSymbol = self.HMSymbol[0].upper() + self.HMSymbol[1:].lower() - if self.HMSymbol[-1] == "r": - tmp = list(self.HMSymbol) - tmp[-1] = "R" - self.HMSymbol = "".join(tmp) - if self.HMSymbol[-1] == "h": - tmp = list(self.HMSymbol) - tmp[-1] = "H" - self.HMSymbol = "".join(tmp) - if self.HMSymbol[-1] == "s": - tmp = list(self.HMSymbol) - tmp[-1] = "S" - self.HMSymbol = "".join(tmp) - if self.HMSymbol[-1] == "z": - tmp = list(self.HMSymbol) - tmp[-1] = "Z" - self.HMSymbol = "".join(tmp) - if self.HallSymbol != "": - if self.HallSymbol[0] == "-": - self.HallSymbol = ( - "-" + self.HallSymbol[1].upper() + self.HallSymbol[2:].lower() - ) - else: - self.HallSymbol = ( - self.HallSymbol[0].upper() + self.HallSymbol[1:].lower() - ) - - # Get symmetry equivalent positions (space group operations). - eqsites = None - for symopid in [ - "_symmetry_equiv_pos_as_xyz", - "_space_group_symop_operation_xyz", - ]: - try: - eqsitedata = cifblock.GetLoop(symopid) - try: - eqsitestrs = eqsitedata.get(symopid) - # This if fixes a funny exception that can occur for the P1 space group, - # if the single operation is just a string and not in a _loop - if isinstance(eqsitestrs, str): - eqsitestrs = [eqsitestrs] - eqsites = [] - for i in range(len(eqsitestrs)): - tmp = eqsitestrs[i].split(",") - eqsites.append([]) - for j in range(len(tmp)): - eqsites[i].append(tmp[j].strip().lower()) - except KeyError: - self.symops = None - except KeyError: - self.symops = None - - # Only Hall symbols are used internally. - if ( - self.HallSymbol == "" - or self.HallSymbol == "?" - or self.HallSymbol == "." - or not self.HallSymbol in Hall2HM - ): - if self.HMSymbol == "" or self.HMSymbol == "?" or self.HMSymbol == ".": - if 0 < self.spacegroupnr <= 230: - try: - self.HallSymbol = Number2Hall[self.spacegroupnr] - except: - raise SymmetryError( - "Found neither Hall nor H-M symbol and space group %i does not have a unique setting." - % self.spacegroupnr - ) - else: - if self.force: - sys.stderr.write( - "***Warning: CIF file contains neither space group symbols nor space group number.\n" - ) - sys.stderr.write( - " Defaulting to P1. Check results carefully!\n" - ) - self.HallSymbol = "P 1" - else: - raise SymmetryError( - "CIF file contains neither space group symbols nor space group number." - ) - try: - self.HallSymbol = HM2Hall[self.HMSymbol] - except: - self.HallSymbol = "Unknown" - - # space group setting - if self.HallSymbol[0] == "-": - self.spacegroupsetting = self.HallSymbol[1] - else: - self.spacegroupsetting = self.HallSymbol[0] - - # Set space group number and H-M symbol, if not in file. - if self.spacegroupnr < 1 or self.spacegroupnr > 230: - self.spacegroupnr = Hall2Number[self.HallSymbol] - if self.HMSymbol == "": - self.HMSymbol = Hall2HM[self.HallSymbol] - - # If no symmetry operations in file, get internally stored. - if type(eqsites) == type(None): - eqsites = SymOpsHall[self.HallSymbol] - else: - try: - # Check if symmetry operations are consistent with current space group - if len(eqsites) != len(SymOpsHall[self.HallSymbol]): - if self.force: - sys.stderr.write( - "***Warning: Number of space group operations (%3i) is inconsistent " - % len(eqsites) - + "with the given space group (%s).\n" % self.HMSymbol - ) - else: - raise SymmetryError( - "Number of space group operations (%3i) is inconsistent " - % len(eqsites) - + "with the given space group (%s)." % self.HallSymbol - ) - except: - sys.stderr.write( - "***Warning: Space group operation check failed for Hall symbol %s (H-M symbol %s).\n" - % (self.HallSymbol, self.HMSymbol) - ) - # Define the set of space group operations. - self.symops = set([]) - for site in eqsites: - self.symops.add(SymmetryOperation(site)) - - ####################### - # Get cell data # - ####################### - try: - # Set initial crystal parameters - self.ainit = float(removeerror(cifblock["_cell_length_a"])) - self.binit = float(removeerror(cifblock["_cell_length_b"])) - self.cinit = float(removeerror(cifblock["_cell_length_c"])) - self.alphainit = float(removeerror(cifblock["_cell_angle_alpha"])) - self.betainit = float(removeerror(cifblock["_cell_angle_beta"])) - self.gammainit = float(removeerror(cifblock["_cell_angle_gamma"])) - self.coainit = self.cinit / self.ainit - self.boainit = self.binit / self.ainit - except: - self.ainit = 0 - self.binit = 0 - self.cinit = 0 - self.alphainit = 0 - self.betainit = 0 - self.gammainit = 0 - raise CellError("Unable to read crystallographic parameters") - # Set crystal parameters to be used (may be changed) - self.a = self.ainit - self.b = self.binit - self.c = self.cinit - self.alpha = self.alphainit - self.beta = self.betainit - self.gamma = self.gammainit - self.coa = self.c / self.a - self.boa = self.b / self.a - - # Get info on atom positions - try: - # Lattice coordinates - tmpdata = cifblock.GetLoop("_atom_site_fract_x") - except: - try: - # Cartesian coordinates - tmpdata = cifblock.GetLoop("_atom_site_Cartn_x") - except: - raise PositionError("Unable to find positions.") - self.cartesianInput = True - # Try to get transformation matrix to interpret cartesian positions - try: - t11 = cifblock.get("_atom_sites_Cartn_tran_matrix_11") - t12 = cifblock.get("_atom_sites_Cartn_tran_matrix_12") - t13 = cifblock.get("_atom_sites_Cartn_tran_matrix_13") - t21 = cifblock.get("_atom_sites_Cartn_tran_matrix_21") - t22 = cifblock.get("_atom_sites_Cartn_tran_matrix_22") - t23 = cifblock.get("_atom_sites_Cartn_tran_matrix_23") - t31 = cifblock.get("_atom_sites_Cartn_tran_matrix_13") - t32 = cifblock.get("_atom_sites_Cartn_tran_matrix_23") - t33 = cifblock.get("_atom_sites_Cartn_tran_matrix_33") - self.cart_trans_matrix = [ - [float(t11), float(t12), float(t13)], - [float(t21), float(t22), float(t23)], - [float(t31), float(t32), float(t33)], - ] - except: - if self.force: - sys.stderr.write( - "***Warning: Cartesian coordinates in CIF, but no transformation matrix given.\n" - ) - sys.stderr.write( - " Using choice implied by the default lattice vectors. Check results carefully!\n" - ) - else: - raise PositionError( - "Cartesian coordinates in CIF, but no transformation matrix given." - ) - # Try to get transformation matrix to interpret cartesian positions - try: - t1 = cifblock.get("_atom_sites_Cartn_tran_vector_1") - t2 = cifblock.get("_atom_sites_Cartn_tran_vector_2") - t3 = cifblock.get("_atom_sites_Cartn_tran_vector_3") - self.cart_trans_vector = Vector([float(t1), float(t2), float(t3)]) - except: - if self.force: - sys.stderr.write( - "***Warning: Cartesian coordinates in CIF, but no translation vector given.\n" - ) - sys.stderr.write( - " Using [0,0,0]. Check results carefully!\n" - ) - self.cart_trans_vector = Vector([0.0, 0.0, 0.0]) - else: - raise PositionError( - "Cartesian coordinates in CIF, but no translation vector given." - ) - # Positions - removedefective = set([]) - try: - if self.cartesianInput: - sitexer = tmpdata.get("_atom_site_Cartn_x") - siteyer = tmpdata.get("_atom_site_Cartn_y") - sitezer = tmpdata.get("_atom_site_Cartn_z") - else: - sitexer = tmpdata.get("_atom_site_fract_x") - siteyer = tmpdata.get("_atom_site_fract_y") - sitezer = tmpdata.get("_atom_site_fract_z") - if ( - sitexer is None - or siteyer is None - or sitezer is None - or "?" in sitexer - or "?" in siteyer - or "?" in sitezer - or "." in sitexer - or "." in siteyer - or "." in sitezer - ): - if self.force: - sys.stderr.write( - "***Warning: Positions are missing, generating cell with the remaining atoms anyway.\n" - ) - # Remove defective sites from arrays. - for i in range(len(sitexer)): - if ( - sitexer[i] == "?" - or siteyer[i] == "?" - or sitezer[i] == "?" - or sitexer[i] == "." - or siteyer[i] == "." - or sitezer[i] == "." - ): - removedefective.add(i) - else: - raise PositionError("Positions not found for one or more species.") - except KeyError: - raise PositionError("Positions not found for one or more species.") - - # Element names - elementsymbs = tmpdata.get("_atom_site_type_symbol") - if elementsymbs is None or "?" in elementsymbs or "." in elementsymbs: - elementsymbs = tmpdata.get("_atom_site_label") - if elementsymbs is None: - # Fill up with question marks if not found - sys.stderr.write("***Warning: Could not find element names.\n") - elementsymbs = ["??" for site in sitexer] - - # Site labels from _atom_site_label - self.sitelabels = tmpdata.get("_atom_site_label") - if self.sitelabels is None: - # Fill up with question marks if not found - if not self.quiet: - sys.stderr.write("Could not find site labels.\n") - self.sitelabels = ["" for site in sitexer] - - # Find charge state - self.chargedict = dict([]) - self.charges = [] - try: - # This is usually encoded in _atom_site_type_symbol, but we go by _atom_type_oxidation_number first. - tmpdata2 = cifblock.GetLoop("_atom_type_oxidation_number") - symbs = tmpdata2.get("_atom_type_symbol") - oxnums = tmpdata2.get("_atom_type_oxidation_number") - for element in elementsymbs: - i = 0 - for symb in symbs: - if symb == element: - self.chargedict[element] = Charge(oxnums[i]) - self.charges.append(Charge(oxnums[i])) - i += 1 - except: - # Try _atom_site_type_symbol - try: - oxnums = [elem.strip(string.letters) for elem in elementsymbs] - for i in range(len(oxnums)): - if oxnums[i] == "": - raise ValueError("Empty string found.") - if oxnums[i].strip(string.digits) == "+": - self.charges.append( - Charge(float(oxnums[i].strip(string.punctuation))) - ) - elif oxnums[i].strip(string.digits) == "-": - self.charges.append( - Charge(-float(oxnums[i].strip(string.punctuation))) - ) - self.chargedict[elementsymbs[i]] = self.charges[i] - except: - # if all else fails, just fill up with zeros - self.charges = [Charge(0) for element in elementsymbs] - for element in elementsymbs: - self.chargedict[element] = Charge(0) - - # Try to get number of atoms from symmetry multiplicities (if present) - try: - tmpdata = cifblock.GetLoop("_atom_site_symmetry_multiplicity") - i = 0 - for t in tmpdata: - i += int(t[0]) - self.numberOfAtoms = i - except: - pass - # Remove stuff (usually charge state specification) from element symbol strings - self.elements = [] - i = 0 - for elem in elementsymbs: - self.elements.append(elem.strip(string.punctuation + string.digits)) - # Make it ?? if there was nothing left after removing junk - if self.elements[i] == "": - self.elements[i] = "??" - i += 1 - # Make element name start with capital and then have lower case letters - self.elements[:] = [ - element[0].upper() + element[1:].lower() for element in self.elements - ] - for element in self.elements: - if not element in ElementData().elementnr: - sys.stderr.write( - "***Warning: " + element + " is not a chemical element.\n" - ) - # Find occupancies - try: - siteoccer = tmpdata.get("_atom_site_occupancy") - except KeyError: - raise PositionError("Error reading site occupancies.") - if siteoccer == None or "?" in siteoccer or "." in siteoccer: - # if not self.quiet: - # sys.stderr.write( - # "***Warning : Site occupancies not found, assuming all occupancies = 1.\n" - # ) - siteoccer = [] - for site in self.elements: - siteoccer.append("1.0") - # - self.ineqsites = [] - self.occupations = [] - for i in range(len(self.elements)): - self.ineqsites.append([]) - # Remove error estimates from coordinates - for j in sitexer[i], siteyer[i], sitezer[i]: - try: - self.ineqsites[i].append(float(removeerror(j))) - except: - if self.force: - removedefective.add(i) - sys.stderr.write( - "***Warning : Invalid atomic position value : " + j + "\n" - ) - else: - raise PositionError("Invalid atomic position value : " + j) - # Improve precision - self.ineqsites[i] = Vector(self.ineqsites[i]) - # dictionary of elements and occupancies - k = self.elements[i] - try: - v = float(removeerror(siteoccer[i])) - except ValueError: - v = 1.0 - if abs(v - 1.0) > 1e-6: - self.alloy = True - self.occupations.append({k: v}) - - # If there is a set of defective sites, remove them if forced. - if removedefective and self.force: - removedefective = list(removedefective) - removedefective.sort(reverse=True) - for i in removedefective: - try: - self.ineqsites.pop(i) - self.occupations.pop(i) - except: - pass - - def printCell( - self, - printsym=False, - printinput=False, - printcart=False, - printdigits=8, - printcharges=False, - unit_to_write=sys.stdout, - ): - # format string for outputting decimal numbers to screen - decpos = printdigits + 3 - decform = "%" + str(decpos) + "." + str(decpos - 4) + "f" - threedecs = " " + decform + " " + decform + " " + decform - fourdecs = " " + decform + " " + decform + " " + decform + " " + decform - # Pretty printing in columns that need to have variable width - # w1 = width of the atomic species column - # w2 = width of a decimal column - # w3 = width of the occupancy column - # w4 = width of the charge state column - if self.alloy: - w1 = 0 - w3 = 0 - w4 = 0 - # Find atom and occupation column widths - for a in self.atomdata: - for b in a: - tmpstring1 = "" - tmpstring2 = "" - tmpstring3 = "" - for k, v in b.species.items(): - tmpstring1 += k + "/" - tmpstring2 += str(v).rstrip("0.") + "/" - # charge output - for k2, v2 in self.chargedict.items(): - if k2.strip(string.punctuation + string.digits) == k: - tmpstring3 += str(v2) + "/" - tmpstring1 = tmpstring1.rstrip("/") - tmpstring2 = tmpstring2.rstrip("/") - tmpstring3 = tmpstring3.rstrip("/") - w1 = max(w1, len(tmpstring1)) - w3 = max(w3, len(tmpstring2)) - w4 = max(w4, len(tmpstring3)) - # small aesthetic adjustment - w1 = w1 + 1 - w3 = w3 + 2 - w4 = max(w4 + 2, 8) - else: - w1 = 5 - w2 = decpos - w3 = 0 - # width of charge column - if printcharges: - w4 = 7 - else: - w4 = 0 - # Start output - unit_to_write.write("Bravais lattice vectors :\n") - # Site header - siteheader = "Atom".ljust(w1) + " " - if printcart: - transmtx = [] - for i in range(3): - transmtx.append([]) - for j in range(3): - transmtx[i].append(self.latticevectors[i][j] * self.a) - i += 1 - for i in ["x", "y", "z"]: - siteheader += i.rjust(decpos) + " " - else: - transmtx = [[1, 0, 0], [0, 1, 0], [0, 0, 1]] - for i in ["a1", "a2", "a3"]: - siteheader += i.rjust(decpos) + " " - if self.alloy: - if w3 > 13: - siteheader += "occupancies".rjust(w3) - else: - siteheader += "occ.".rjust(w3) - if printcharges: - siteheader += " " + "charge".rjust(w4) - # - if printcart: - fact = self.lengthscale - else: - fact = 1 - formatstring = "" - for i in range(3): - formatstring = formatstring + decform + " " - for i in range(3): - unit_to_write.write( - formatstring - % ( - self.latticevectors[i][0] * fact, - self.latticevectors[i][1] * fact, - self.latticevectors[i][2] * fact, - ) - + "\n" - ) - # Print out all sites - tmpstring = "All sites, " - if printcart: - tmpstring += "(cartesian coordinates):" - else: - tmpstring += "(lattice coordinates):" - unit_to_write.write(tmpstring + "\n") - unit_to_write.write(siteheader + "\n") - for a in self.atomdata: - for b in a: - spcsstring = "" - occstring = "" - chargestring = "" - for k, v in b.species.items(): - spcsstring += k + "/" - occstring += str(v).rstrip("0.") + "/" - # charge output - for k2, v2 in self.chargedict.items(): - if k2.strip(string.punctuation + string.digits) == k: - chargestring += str(v2) + "/" - spcsstring = spcsstring.rstrip("/") - occstring = occstring.rstrip("/") - chargestring = chargestring.rstrip("/") - v = mvmult3(transmtx, b.position) - tmpstring = spcsstring.ljust(w1) + threedecs % (v[0], v[1], v[2]) - if self.alloy: - tmpstring += " " + occstring.rjust(w3) - if printcharges: - tmpstring += " " + chargestring.rjust(w4) - unit_to_write.write(tmpstring + "\n") - - -################################################################################################ -class ReferenceData: - """ - Container class for a set of reference data strings. - Also contains the getFromCIF method to obtain the data from a CIF block. - - database : database from which the data was obtained - databasecode : some identifier used by the database - databasestring : a ready formatted string describing the database info. - compound : long compound name - cpd : short compound name - authors : list of strings with the author names - authorstring : string with author names formatted as: - single author - authors name - two authors - first author and second author - > two authors - first author et al. - journal :\ - volume : | - firstpage : - self-explanatory - lastpage : | - year :/ - - Methods: - getFromCIF : Get reference data from a CIF block - journalstring : journal, volume firstpage-lastpage (year) - referencestring : authorstring, journalstring - bibtexref : output a string for bibtex - - Various attempts at identifying the data are made and if they all fail - an empty string is returned. - - """ - - def __init__(self): - self.database = "" - self.databasecode = "" - self.databasestring = "" - self.compound = "" - self.cpd = "" - self.ChemicalComposition = dict([]) - self.authors = [] - self.authorstring = "" - self.title = "" - self.journal = "" - self.volume = "" - self.firstpage = "" - self.lastpage = "" - self.year = "" - # Some known databases - self.databasenames = { - "CAS": "Chemical Abstracts", - "CSD": "Cambridge Structural Database", - "ICSD": "Inorganic Crystal Structure Database", - "MDF": "Metals Data File (metal structures)", - "NBS": "(NIST) Crystal Data Database", - "PDB": "Protein Data Bank", - "PDF": "Powder Diffraction File (JCPDS/ICDD)", - "COD": "Crystallography Open Database", - } - self.databaseabbr = { - "Chemical Abstracts": "CAS", - "Cambridge Structural Database": "CSD", - "Inorganic Crystal Structure Database": "ICSD", - "Metals Data File (metal structures)": "MDF", - "(NIST) Crystal Data Database": "NBS", - "Protein Data Bank": "PDB", - "Powder Diffraction File (JCPDS/ICDD)": "PDF", - "Crystallography Open Database": "COD", - } - - def bibtexref(self): - string = "@article{" - # Guess what is the first authors last name - tmp = self.authors[0].replace(" ", "") - tmp = tmp.split(",") - deletelist = [] - for i in range(len(tmp)): - tmp[i] = tmp[i].split(".") - if max([len(t) for t in tmp[i]]) < 2: - deletelist.append(i) - deletelist.sort(reverse=True) - for i in deletelist: - tmp.pop(i) - tmp = [item for sublist in tmp for item in sublist] - # Add label consisting of first authors last name and the year - string += tmp[-1] + str(self.year) + ",\n" - # Add authors - string += "author = {" - for author in self.authors: - string += author + " and " - string = string[0 : len(string) - 5] - string += "},\n" - # Add title - if len(self.title) > 0: - string += "title = {" + self.title + "},\n" - # Add journal - if len(self.journal) > 0: - string += "journal = {" + self.journal + "},\n" - # Add volume - if len(self.volume) > 0: - string += "volume = {" + self.volume + "},\n" - # Add page(s) - if len(self.firstpage) > 0: - string += "pages = {" + self.firstpage + "--" + self.lastpage - string = string.rstrip("-") + "},\n" - # Add year - if len(self.year) > 0: - string += "year = {" + self.year + "},\n" - string += "}\n" - return string - - def journalstring(self): - try: - if not ( - self.journal == "" - and self.volume == "" - and self.firstpage == "" - and self.year == "" - ): - journalstring = self.journal - journalstring += " " + self.volume - journalstring += ", " + self.firstpage + "-" + self.lastpage - journalstring += " (" + self.year + ")" - else: - journalstring = "No journal information" - except: - journalstring = "Failed to create journal string" - return journalstring - - def referencestring(self): - try: - if self.authorstring == "": - referencestring = "No author information. " - else: - referencestring = self.authorstring + ", " - referencestring += self.journalstring() - except: - referencestring = "Failed to create reference string" - return referencestring - - def getFromCIF(self, cifblock=None): - # Get long compound name - self.compound = cifblock.get("_chemical_name_systematic") - if self.compound is None: - self.compound = cifblock.get("_chemical_name_mineral") - if self.compound is None: - self.compound = "" - self.compound = self.compound.strip() - # Get short compound name - try: - self.cpd = cifblock.get("_chemical_formula_structural") - except: - try: - self.cpd = cifblock.get("_chemical_formula_sum") - except: - self.cpd = "" - # Safeguard in case we read a loop - try: - self.compound = str(self.compound) - except: - self.compound = "" - try: - self.cpd = str(self.cpd) - except: - self.cpd = "" - # Strip whitespace - self.cpd = self.cpd.strip() - # Ty to set up chemical content set - try: - tmp = cifblock.get("_chemical_formula_sum").split() - alloy = False - for t in tmp: - e = t.strip(string.digits + string.punctuation) - n = max(t.strip(string.ascii_letters + string.punctuation), "1") - try: - n = int(n) - except: - try: - n = float(n) - alloy = True - except: - raise ValueError() - if e in list(self.ChemicalComposition.keys()): - nold = self.ChemicalComposition[e] - self.ChemicalComposition[e] = nold + n - else: - self.ChemicalComposition[e] = n - if not alloy: - L = list(self.ChemicalComposition.values()) - divisor = reduce(gcd, map(int, L)) - for k, v in self.ChemicalComposition.items(): - self.ChemicalComposition[k] = v / divisor - except: - # If not found, then ignore, this is just to test internal consistency. - pass - # Try to identify a source database for the CIF - for db in self.databasenames: - # First all the standard ones - try: - tmp = cifblock.get("_database_code_" + db) - if not tmp is None: - self.databasecode = tmp - self.database = self.databasenames[db] - self.databasestring = ( - "CIF file exported from " - + self.database - + ".\nDatabase reference code: " - + self.databasecode - + "." - ) - break - else: - pass - except KeyError: - pass - try: - self.databasestring - except AttributeError: - self.databasecode = "" - self.database = "" - self.databasestring = "" - # Check if it is a COD file - if self.databasecode == "": - try: - tmp = cifblock.get("_cod_database_code") - if tmp is None: - self.databasecode = tmp - self.database = self.databasenames["COD"] - self.databasestring = ( - "CIF file exported from " - + self.database - + ".\nDatabase reference code: " - + self.databasecode - + "." - ) - except: - pass - # - # Get bibliographic information - # - try: - # Authors - authorsloop = cifblock.GetLoop("_publ_author_name") - self.authors = authorsloop.get("_publ_author_name") - # If just a string and not a list from a _loop - if isinstance(self.authors, str): - self.authors = deletenewline(self.authors) - self.authorstring = self.authors - self.authors = self.authors.split(";") - if len(self.authors) == 1: - self.authorstring = self.authors[0] - elif len(self.authors) == 2: - self.authorstring = self.authors[0] + " and " + self.authors[1] - elif len(self.authors) > 2: - self.authorstring = self.authors[0] + " et al." - except KeyError: - self.authors = [] - self.authorstring = "Failed to get author information" - # Get rid of newline characters - self.authorstring = deletenewline(self.authorstring) - # Title of the paper - try: - self.title = cifblock.get("_publ_section_title") - self.title = deletenewline(self.title, replace=" ") - self.title = self.title.replace(" ", " ") - self.title = self.title.strip(" ") - except: - pass - # Journal details - failed = False - try: - # Look for citation block. - references = cifblock.GetLoop("_citation_id") - # Pick primary reference (or the first in the list, if not found) - i = 0 - try: - while references.get("_citation_id")[i] != "primary": - i = i + 1 - except IndexError: - # No primary reference found, using the first one. - i = 0 - # journal/book title - if not references.get("_citation_journal_full") is None: - self.journal = references.get("_citation_journal_full")[i] - else: - if not references.get("_citation_journal_abbrev") is None: - self.journal = references.get("_citation_journal_abbrev")[i] - else: - if not references.get("_citation_book_title") is None: - self.journal = references.get("_citation_book_title")[i] - else: - self.journal = "" - # volume - if not references.get("_citation_journal_volume") is None: - self.volume = references.get("_citation_journal_volume")[i] - else: - self.volume = "" - if self.volume is None: - self.volume = "" - # first page - if not references.get("_citation_page_first") is None: - self.firstpage = references.get("_citation_page_first")[i] - else: - self.firstpage = "" - if self.firstpage is None: - self.firstpage = "" - # last page - if not references.get("_citation_page_last") is None: - self.lastpage = references.get("_citation_page_last")[i] - else: - self.lastpage = "" - if self.lastpage is None: - self.lastpage = "" - # year - if not references.get("_citation_year") is None: - self.year = references.get("_citation_year")[i] - else: - self.year = "" - if self.year is None: - self.year = "" - except KeyError: - try: - # journal - self.journal = cifblock.get("_journal_name_full") - # volume - self.volume = cifblock.get("_journal_volume") - # pages - self.firstpage = cifblock.get("_journal_page_first") - self.lastpage = cifblock.get("_journal_page_last") - # year - self.year = cifblock.get("_journal_year") - except KeyError: - failed = True - if self.journal == None: - failed = True - self.journal = "" - if self.volume == None: - failed = True - self.volume = "" - if self.firstpage == None: - failed = True - self.firstpage = "" - if self.lastpage == None: - failed = True - self.lastpage = "" - if self.year == None: - failed = True - self.year = "" - if not failed: - # get rid of newline characters - try: - self.journal = deletenewline(self.journal) - except: - self.journal = "??????" - try: - self.volume = deletenewline(self.volume) - except: - self.volume = "??" - try: - self.firstpage = deletenewline(self.firstpage) - except: - self.firstpage = "??" - try: - self.lastpage = deletenewline(self.lastpage) - except: - self.lastpage = "??" - try: - self.year = deletenewline(self.year) - except: - self.year = "????" diff --git a/cell2mol/cif2cell_utils.py b/cell2mol/cif2cell_utils.py deleted file mode 100644 index 46be47728..000000000 --- a/cell2mol/cif2cell_utils.py +++ /dev/null @@ -1,906 +0,0 @@ -# Copyright 2010 Torbjorn Bjorkman -# This file is part of cif2cell -# -# cif2cell is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# cif2cell is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with cif2cell. If not, see . -# -# ****************************************************************************************** -# Description: Definitions of basic classes and functions for CIF2Cell. -# -# Author: Torbjorn Bjorkman -# ORCID: 0000-0002-1154-9846 -# -# ****************************************************************************************** -from math import sqrt, acos, pi -from cell2mol.elementdata import ElementData - -################################################################################################ -# Miscellaneous -zero = 0.0 -one = 1.0 -two = 2.0 -three = 3.0 -four = 4.0 -six = 6.0 -third = 1 / 3 -half = one / two -fourth = one / four -sixth = one / six -occepsilon = 0.000001 -# floatlist = [third, 2*third, half, fourth, one, zero, sqrt(2.0),sixth,5*sixth,sqrt(3.0),sqrt(3.0)/2] -floatlist = [third, 2 * third] -angtobohr = 1.8897261 -uperatogpercm = 1.6605388 -uperautogpercm = 11.205871 -# -codename = { - "abinit": "ABINIT", - "ase": "ASE", - "castep": "CASTEP", - "cpmd": "CPMD", - "cp2k": "CP2K", - "cellgen": "cellgen", - "coo": "coo", - "crystal09": "CRYSTAL09", - "elk": "Elk", - "emto": "EMTO", - "exciting": "exciting", - "fhi-aims": "FHI-AIMS", - "fleur": "Fleur", - "hutsepot": "Hutsepot", - "mopac": "MOPAC", - "ncol": "NCOL", - "rspt": "RSPt", - "siesta": "Siesta", - "spacegroup": "spacegroup", - "sprkkr": "SPR-KKR", - "vasp": "VASP", - "xband": "XBAND", - "xyz": "xyz", - "pwscf": "PWscf", - "quantum-espresso": "Quantum Espresso", -} - -# Make a list of safe functions for use in safe_matheval. Thanks Lybniz developers! -safe_list = [ - "math", - "acos", - "asin", - "atan", - "atan2", - "ceil", - "cos", - "cosh", - "e", - "exp", - "fabs", - "floor", - "fmod", - "frexp", - "hypot", - "ldexp", - "log", - "log10", - "modf", - "pi", - "pow", - "radians", - "sin", - "sinh", - "sqrt", - "tan", - "tanh", -] -safe_dict = dict([(k, locals().get(k, None)) for k in safe_list]) -# Add any needed builtins. -safe_dict["abs"] = abs - -################################################################################################ -# Exception classes -class SymmetryError(Exception): - def __init__(self, value): - self.value = value - - def __str__(self): - return repr(self.value) - - -class PositionError(Exception): - def __init__(self, value): - self.value = value - - def __str__(self): - return repr(self.value) - - -class CellError(Exception): - def __init__(self, value): - self.value = value - - def __str__(self): - return repr(self.value) - - -class GeometryObjectError(Exception): - def __init__(self, value): - self.value = value - - def __str__(self): - return repr(self.value) - - -class SetupError(Exception): - def __init__(self, value): - self.value = value - - def __str__(self): - return repr(self.value) - - -################################################################################################ -class GeometryObject: - """ - Parent class for anything geometrical contains: - compeps : epsilon for determining when two floats are equal - invcompeps : 1/compeps - """ - - def __init__(self, compeps=0.0002): - self.compeps = compeps - self.invcompeps = 1.0 / self.compeps - - -class CellFloat(float, GeometryObject): - """ - Hashable float with comparison inherited from GeometryObject. - """ - - def __init__(self, t): - float.__init__(self) - GeometryObject.__init__(self) - - def __hash__(self): - return int(self * self.invcompeps) - - def __eq__(self, other): - if abs(self - other) > self.compeps: - return False - else: - return True - - -class Charge(float): - """ - Class for representing the charge state/oxidation number of an atom (ion). - It is just an integer, except for a modified routine for turning into a string, - viz. a two plus ion gets the string representation '2+' - """ - - def __init__(self, i): - float.__init__(self) - - def __str__(self): - if abs(self - int(self)) < 0.0001: - if int(self) == 0: - return "0" - elif self > 0: - return str(abs(int(self))) + "+" - elif self < 0: - return str(abs(int(self))) + "-" - else: - if self > 0: - return str(abs(self)) + "+" - else: - return str(abs(self)) + "-" - - -class Vector(list, GeometryObject): - """ - Floating point vector describing a lattice point. Assumed to have length three. - * Supports testing for equality using the self.compeps parameter inherited - from the parent class GeometryObject - * Supports testing for < using the euclidean norm (length) of the vector - * Supports addition with another Vector, in which case the - vectors are added component-wise. - More methods: - length : returns the euclidean norm of the vector - transform(matrix) : returns matrix*vector - improveprecision : identify some conspicuous numbers and improve precision - """ - - def __init__(self, vec, *args, **kwargs): - GeometryObject.__init__(self, *args, **kwargs) - list.__init__(self, [float(v) for v in vec]) - - def __hash__(self): - t = ( - self.invcompeps * self[0] - + 1.1 * self.invcompeps * self[1] - + 1.2 * self.invcompeps * self[2] - ) - return int(round(t)) - - def __eq__(self, other): - for i in range(3): - if abs(self[i] - other[i]) > self.compeps: - return False - return True - - def __lt__(self, other): - sl = self[0] ** 2 + self[1] ** 2 + self[2] ** 2 - ol = other[0] ** 2 + other[1] ** 2 + other[2] ** 2 - return sl < ol - - # Addition of two vectors - def __add__(self, other): - t = Vector([self[i] + other[i] for i in range(3)]) - return t - - # Subtraction of two vectors - def __sub__(self, other): - t = Vector([self[i] - other[i] for i in range(3)]) - return t - - def __neg__(self): - return Vector([-t for t in self]) - - def __str__(self): - s = "" - for e in self: - if type(e) == type(1): - s += "%2i " % e - else: - s += "%19.15f " % e - return s - - # Length of the vectors - def length(self): - return sqrt(self[0] ** 2 + self[1] ** 2 + self[2] ** 2) - - # Multiplication by scalar - def scalmult(self, a): - t = [] - for i in range(3): - t.append(self[i] * a) - return Vector(t) - - # dot product - def dot(self, a): - t = 0.0 - for i in range(3): - t += self[i] * a[i] - return t - - # triple product - def triple(self, a, b, c): - t = [a, b, c] - return det3(t) - - # coordinate transformation - def transform(self, matrix): - t = Vector(mvmult3(matrix, self)) - return t - - def improveprecision(self): - for i in range(3): - self[i] = improveprecision(self[i], self.compeps) - return self - - # Angle between this vector and another vector - def angle(self, other): - return acos(self.dot(other) / (self.length() * other.length())) - - -class LatticeVector(Vector): - """ - Vector of length three that maps back things into the cell - """ - - def __init__(self, vec, interval=(0.0, 1.0), *args, **kwargs): - Vector.__init__(self, vec, *args, **kwargs) - # Interval we wish to use for the coordinates. - # In practice either [0,1] or [-.5, 0.5] - self.interval = interval - self.improveprecision() - self.intocell() - - # Addition of two vectors, putting the result back - # into the cell if necessary - def __add__(self, other): - if ( - self.interval[0] != other.interval[0] - or self.interval[1] != other.interval[1] - ): - raise GeometryObjectError( - "LatticeVectors must have the same definition intervals to be added." - ) - t = LatticeVector([self[i] + other[i] for i in range(3)]) - t.intocell() - return t - - # Change interval - def change_interval(self, interval): - self.interval = interval - t = LatticeVector([0, 0, 0], interval=interval) - self = self + t - - # coordinate transformation - def transform(self, matrix): - t = LatticeVector(mvmult3(matrix, self)) - t.intocell() - return t - - # Put the vector components into the cell interval defined by self.interval - def intocell(self): - for i in range(3): - while self[i] < self.interval[0]: - self[i] += 1.0 - while self[i] >= self.interval[1] - self.compeps: - self[i] -= 1.0 - - -class LatticeMatrix(GeometryObject, list): - """ - Three by three matrix - """ - - def __init__(self, mat): - GeometryObject.__init__(self) - t = [] - for vec in mat: - t.append(Vector(vec)) - list.__init__(self, t) - - # no idea whether this is a clever choice of hash function... - def __hash__(self): - t = self.invcompeps * ( - self[0][0] - + self[0][1] - + self[0][2] - + self[0][0] - + self[0][1] - + self[0][2] - + self[0][0] - + self[0][1] - + self[0][2] - ) - return int(t) - - def __str__(self): - matstr = "" - for l in self: - matstr += str(l) + "\n" - return matstr - - def __eq__(self, other): - for i in range(3): - for j in range(3): - if abs(self[i][j] - other[i][j]) > self.compeps: - return False - return True - - # coordinate transformation - def transform(self, matrix): - return LatticeMatrix(mmmult3(matrix, self)) - - # transpose - def transpose(self): - t = [ - [self[0][0], self[1][0], self[2][0]], - [self[0][1], self[1][1], self[2][1]], - [self[0][2], self[1][2], self[2][2]], - ] - return LatticeMatrix(t) - - # Round floats to recognized numbers - def improveprecision(self): - t = [] - for i in range(3): - t.append([]) - for j in range(3): - t[i].append(improveprecision(self[i][j], self.compeps)) - return LatticeMatrix(t) - - -class AtomSite(GeometryObject): - """ - Class for describing an atomic site. - - Contains data: - position : a vector that gives the position - species : a dictionary with element-occupancy pairs (e.g. {Fe : 0.2, Co : 0.8}) - label : any label - charges : a dictionary with the charge states (oxidation numbers) of the different species - index : any integer - - Functions: - __eq__ : compare equality - __str__ : one line with species and position info - copy : return a new instance with the same data - distance : distance to some other atom - spcstring : species string ('Mn', 'La/Sr' ...) - alloy : true if there are more than one species occupying the site - - """ - - def __init__(self, position=None, species=None, label="", charges=None, index=None): - GeometryObject.__init__(self) - if not position is None: - self.position = LatticeVector(position) - else: - self.position = None - if not species is None: - self.species = species - else: - self.species = {} - if not charges is None: - self.charges = charges - else: - if not self.species is None: - self.charges = {} - for k in self.species.keys(): - self.charges[k] = Charge(0) - else: - self.charges = {} - self.label = label - ## self.charge = Charge(charge) - self.index = index - - def __hash__(self): - return hash( - hash(self.position) - + hash("".join(sorted(self.species.keys()))) - + hash(sum(self.species.values())) - ) - - def __eq__(self, other): - return self.position == other.position and self.species == other.species - - # Species string, sorted by atomic weight. - def spcstring(self, separator="/"): - t = [] - for k in self.species: - t.append(k) - t.sort(key=lambda x: ElementData().elementweight[x], reverse=True) - tmp = "" - for k in t: - tmp += k + separator - tmp = tmp.rstrip(separator) - return tmp - - # Is there more than one species on this site? - def alloy(self): - occsum = sum([v for k, v in self.species.items()]) - return len(self.species) > 1 or abs(occsum - 1) > self.compeps - - # print site data in some informative way - def __str__(self): - # Element symbol - tmp = self.spcstring().ljust(8) - # Position - tmp += " %19.15f %19.15f %19.15f " % ( - self.position[0], - self.position[1], - self.position[2], - ) - # occupancy - for k, v in self.species.items(): - tmp += str(v) + "/" - tmp = tmp.rstrip("/") - return tmp - - def CIradius(self, size="max", covalent=False): - """ - Return maximal/minimal Covalent/Ionic radius of the site. - 'size' controls whether the maximal or minimal radius is returned - 'covalent' will enforce the covalent radius. - """ - t = [] - if covalent: - for sp in self.species.keys(): - try: - t.append(ElementData().CovalentRadius2[sp]) - except: - pass - else: - for sp, ch in self.charges.items(): - try: - t.append(ElementData().IonicRadius[sp + str(ch)]) - except: - try: - t.append(ElementData().CovalentRadius2[sp]) - except: - pass - try: - if size == "min": - return min(t) - else: - return max(t) - except: - return None - - # - # The distance to another atom site - def distance(self, other): - v = self.position - other.position - return v.length() - - -class SymmetryOperation(GeometryObject): - """ - Class describing a symmetry operation, with a rotation matrix and a translation. - """ - - def __init__(self, eqsite=None): - GeometryObject.__init__(self) - self.eqsite = eqsite - if not self.eqsite is None: - self.rotation = self.rotmat() - self.translation = LatticeVector(self.transvec()) - else: - self.rotation = None - self.translation = None - - def __hash__(self): - return hash(self.rotation) + hash(self.translation) - - # This way of printing was useful for outputting to CASTEP. - def __str__(self): - return str(self.rotation) + str(self.translation) + "\n" - - # Two symmetry operations are equal if rotation matrices and translation vector - # differ by at most compeps - def __eq__(self, other): - eq = True - for i in range(3): - for j in range(3): - eq = ( - eq - and abs(self.rotation[i][j] - other.rotation[i][j]) < self.compeps - ) - eq = eq and self.translation == other.translation - return eq - - # Comparison between operations made by comparing lengths of translation vectors, - # whether the rotation is diagonal and the identity is always less than anything else. - # That way we only need to sort a list of operations to get identity first (and a reasonably - # intuitive list order). - def __lt__(self, other): - if self.translation < other.translation: - return True - if other.translation < self.translation: - return False - if self.diagonal(): - # diagonal matrices "smaller" - if not other.diagonal(): - return True - # identity is "smallest" - if self.rotation[0][0] == self.rotation[1][1] == self.rotation[2][2] == 1: - return True - return False - else: - return False - return self.translation < other.translation - - # Return a rotation matrix from "x,y,z" representation of a symmetry operation - # !!!With respect to cartesian axes!!! - def rotmat(self): - mat = [[0.0, 0.0, 0.0], [0.0, 0.0, 0.0], [0.0, 0.0, 0.0]] - for j in range(len(self.eqsite)): - xyz = self.eqsite[j].replace("+", " +").replace("-", " -").split() - for i in xyz: - if i.strip("+-") == "x": - mat[0][j] = float(i.strip("x") + "1") - elif i.strip("+-") == "y": - mat[1][j] = float(i.strip("y") + "1") - elif i.strip("+-") == "z": - mat[2][j] = float(i.strip("z") + "1") - return LatticeMatrix(mat) - - # Return a translation vector from "x,y,z" representation of a symmetry operation - def transvec(self): - vec = [] - for i in range(3): - vec.append(0.0) - for j in range(len(self.eqsite)): - xyz = self.eqsite[j].replace("+", " +").replace("-", " -").split() - for i in xyz: - if i.strip("+-xyz") != "": - vec[j] = safe_matheval(i) - return LatticeVector(vec) - - # True if the operation is diagonal - def diagonal(self): - if ( - abs(self.rotation[0][1]) < self.compeps - and abs(self.rotation[0][2]) < self.compeps - and abs(self.rotation[1][0]) < self.compeps - and abs(self.rotation[1][2]) < self.compeps - and abs(self.rotation[2][0]) < self.compeps - and abs(self.rotation[2][1]) < self.compeps - ): - return True - else: - return False - - # Operate on a vector and return the result - def operate(self, vector): - t = Vector(mvmult3(self.rotation, vector)) + self.translation - return t - - def improveprecision(self): - self.rotation = self.rotation.improveprecision() - self.translation = self.translation.improveprecision() - - -################################################################################################ -# Dictionaries -settingname = { - "P": "primitive", - "A": "base-centered", - "B": "base-centered", - "C": "base-centered", - "I": "body-centered", - "F": "face-centered", - "R": "rhombohedral", -} - -################################################################################################ -# Functions -# Evaluate expr safely, i.e. only allow execution of mathematical functions -def safe_matheval(expr): - sexpr = expr.replace(" ", "") - return eval(sexpr, {"__builtins__": None}, safe_dict) - - -def removeerror(string): - # Remove error estimates at the end of a number (as in 3.28(5)) - splitstr = string.split("(") - return splitstr[0] - - -# Guess the "true" values of some conspicuous numbers -def improveprecision(x, eps): - for f in floatlist: - if abs(abs(x) - f) <= eps: - # 0 - return copysign(f, x) - # if no match found, return x - return x - - -def latvectadd(a, b): - t = [] - for i in range(3): - t.append(a[i] + b[i]) - if abs(t[i]) >= 1 - occepsilon: - t[i] = t[i] - copysign(1, t[i]) - t[i] = improveprecision(t[i], occepsilon) - return t - - -def putincell(coords, coordepsilon): - # Put coordinates in the interval 0 <= x < 1 - for i in range(3): - # first make the coordinate positive - while coords[i] < 0: - coords[i] = coords[i] + 1 - # then put it in the primitive cell - while coords[i] > 1 - coordepsilon: - coords[i] = coords[i] - 1 - return coords - - -# Determinant of 3x3 dimensional matrix -def det3(m): - a = m[1][1] * m[2][2] - m[1][2] * m[2][1] - b = m[1][2] * m[2][0] - m[1][0] * m[2][2] - c = m[1][0] * m[2][1] - m[1][1] * m[2][0] - return m[0][0] * a + m[0][1] * b + m[0][2] * c - - -# Inverse of 3x3 dimensional matrix -def minv3(m): - di = 1 / det3(m) - w = [ - [ - (m[1][1] * m[2][2] - m[1][2] * m[2][1]) * di, - (m[0][2] * m[2][1] - m[0][1] * m[2][2]) * di, - (m[0][1] * m[1][2] - m[0][2] * m[1][1]) * di, - ], - [ - (m[1][2] * m[2][0] - m[1][0] * m[2][2]) * di, - (m[0][0] * m[2][2] - m[0][2] * m[2][0]) * di, - (m[0][2] * m[1][0] - m[0][0] * m[1][2]) * di, - ], - [ - (m[1][0] * m[2][1] - m[1][1] * m[2][0]) * di, - (m[0][1] * m[2][0] - m[0][0] * m[2][1]) * di, - (m[0][0] * m[1][1] - m[0][1] * m[1][0]) * di, - ], - ] - return w - - -# matrix-vector multiplication -def mvmult3(mat, vec): - w = [0.0, 0.0, 0.0] - for i in range(3): - t = 0 - for j in range(3): - t = t + mat[j][i] * vec[j] - w[i] = t - return w - - -# more efficient, but goes the other way... -## def mvmult3(mat,vec): -## w = [0.,0.,0.] -## t = 0 -## for i in range(3): -## r = mat[i] -## for j in range(3): -## t += r[j]*vec[j] -## w[i],t = t,0 -## return w - -# matrix-matrix multiplication -def mmmult3(m1, m2): - w = [] - for i in range(3): - w.append([]) - for j in range(3): - t = 0 - for k in range(3): - t += m1[i][k] * m2[k][j] - w[i].append(t) - return w - - -def crystal_system(spacegroupnr): - # Determine crystal system - if 0 < spacegroupnr <= 2: - return "triclinic" - elif 2 < spacegroupnr <= 15: - return "monoclinic" - elif 15 < spacegroupnr <= 74: - return "orthorhombic" - elif 74 < spacegroupnr <= 142: - return "tetragonal" - elif 142 < spacegroupnr <= 167: - return "trigonal" - elif 167 < spacegroupnr <= 194: - return "hexagonal" - elif 194 < spacegroupnr <= 230: - return "cubic" - else: - return "unknown" - - -# Return x with the sign of y -def copysign(x, y): - if y >= 0: - return x - else: - return -x - - -# Get rid of newline characters from a string, portably. -# replace allows to specify a string to replace the newline -# character with. -def deletenewline(string, replace=""): - tmp = string - # Windows... - if "\r\n" in string: - tmp = tmp.replace("\r\n", replace) - # ...Mac... - if "\r" in string: - tmp = tmp.replace("\r", replace) - # ...and Unix. - if "\n" in string: - tmp = tmp.replace("\n", replace) - return tmp - - -def SurfaceWizard(cell, hkl): - """ - Take a plane [hkl] and generate suggestion for a supercell map that puts - the plane normal along the third lattice vector and makes the two first - vectors lie in the (hkl) plane. - - Uses that linear combinations of the (conventional) lattice vectors, - n1*a1+n2*a2+n3*a3 in the hkl plane fulfill the diophantine equation - - n1*h + n2*k + n3*l = 0 (*) - - Solution is dumb, brute force enumeration of the possible n- - values and selection of suitable ones based on that. - """ - suggestion = [] - maxN = 5 - # Generate tuples fulfilling (*) by brute force - possibleNs = [] - impossibleNs = [] - for n1 in range(maxN, -maxN, -1): - for n2 in range(maxN, -maxN, -1): - for n3 in range(-maxN, maxN): - lhs = hkl[0] * n1 + hkl[1] * n2 + hkl[2] * n3 - if lhs == 0: - possibleNs.append((n1, n2, n3)) - else: - impossibleNs.append((n1, n2, n3)) - # Remove the trivial solution - possibleNs.remove((0, 0, 0)) - lvs = cell.latticevectors - # Generate and sort in-plane lattice vectors - inplaneNs = [] # contains lists of [(n1,n2,n3),[corresponding lattice vector]] - for n in possibleNs: - vn = Vector([n[0], n[1], n[2]]) - vec = lvs[0].scalmult(vn[0]) + lvs[1].scalmult(vn[1]) + lvs[2].scalmult(vn[2]) - inplaneNs.append([n, vec]) - inplaneNs.sort(key=lambda x: x[1].length()) - # Generate and sort out-of-plane lattice vectors - outofplaneNs = [] # contains lists of [(n1,n2,n3),[corresponding lattice vector]] - for n in impossibleNs: - vn = Vector([n[0], n[1], n[2]]) - vec = lvs[0].scalmult(vn[0]) + lvs[1].scalmult(vn[1]) + lvs[2].scalmult(vn[2]) - outofplaneNs.append([n, vec]) - outofplaneNs.sort(key=lambda x: x[1].length()) - - # First row in suggested map = first (i.e. shortest) vector in the hkl plane - suggestion.append(inplaneNs[0][0]) - suggestedvs = [ - lvs[0].scalmult(inplaneNs[0][1][0]) - + lvs[1].scalmult(inplaneNs[0][1][1]) - + lvs[2].scalmult(inplaneNs[0][1][2]) - ] - # Pick a second vector as the shortest vector not too parallel to the first - for n in inplaneNs[1:]: - v1 = n[1] - v2 = suggestedvs[0] - # Difference of angle to pi/2 radians - ang = abs(pi / 2 - acos(v1.dot(v2) / v1.length() / v2.length())) - # Select by arbitrary cutoff (within 45 degrees of orthogonal) - if ang < pi / 4: - suggestion.append(list(n[0])) - suggestedvs.append( - lvs[0].scalmult(n[1][0]) - + lvs[1].scalmult(n[1][1]) - + lvs[2].scalmult(n[1][2]) - ) - break - - # Insert the hkl index first in the list, to select that if close to orthogonal - vec = lvs[0].scalmult(hkl[0]) + lvs[1].scalmult(hkl[1]) + lvs[2].scalmult(hkl[2]) - outofplaneNs.insert(0, [(hkl[0], hkl[1], hkl[2]), vec]) - # Pick the third vector as the shortest vector sufficiently orthogonal to the two first - for n in outofplaneNs: - v1 = suggestedvs[0] - v2 = suggestedvs[1] - v3 = n[1] - # Difference of angle to pi/2 radians - ang1 = abs(pi / 2 - acos(v1.dot(v3) / v1.length() / v3.length())) - ang2 = abs(pi / 2 - acos(v2.dot(v3) / v2.length() / v3.length())) - # Select by arbitrary cutoff (within 15 degrees of orthogonal) - if ang1 < pi / 12 and ang2 < pi / 12: - suggestion.append(list(n[0])) - break - - # Enforce righthanded system - vs = mmmult3(suggestion, lvs) - if det3(vs) < 0: - v = suggestion[0] - suggestion[0] = suggestion[1] - suggestion[1] = v - - return suggestion diff --git a/cell2mol/cif2info.py b/cell2mol/cif2info.py deleted file mode 100755 index ea8af6b29..000000000 --- a/cell2mol/cif2info.py +++ /dev/null @@ -1,2595 +0,0 @@ -#!/usr/bin/env python - -# Copyright 2010 Torbjorn Bjorkman -# This file is part of cif2cell -# -# cif2cell is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# cif2cell is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with cif2cell. If not, see . -# -# ************************************************************************************ -# Description: A command-line tool to generate the geometrical setup -# for various electronic structure codes from a CIF format file. -# This code was published in Comp. Phys. Comm. 182, 1183-1186 (2011). -# Author: Torbjorn Bjorkman -# ORCID: 0000-0002-1154-9846 -# ************************************************************************************ - -import sys -import os -import string -import copy - -from datetime import datetime -from optparse import OptionParser, OptionGroup -from math import acos, pi -from weakref import ref -import CifFile - -from cell2mol.elementdata import ElementData -from cell2mol.cif2cell_ESPInterfaces import * - -from cell2mol.cif2cell_utils import ( - safe_matheval, - PositionError, - SymmetryError, - CellError, - SurfaceWizard, - angtobohr, - codename, - uperautogpercm, - SetupError, - LatticeMatrix, - minv3, - Vector, - mmmult3, -) -from cell2mol.cif2cell_uctools import ReferenceData, CellData, SymmetryOperation - - -# All supported output formats -outputprograms = set( - [ - "abinit", - "atat", - "castep", - "cfg", - "coo", - "cpmd", - "cp2k", - "crystal09", - "elk", - "emto", - "exciting", - "fhi-aims", - ## 'fleur','ncol','mcsqs','rspt','siesta','sprkkr','vasp', # mcsqs not ready - "fleur", - "hutsepot", - "lammps", - "mopac", - "ncol", - "pwscf", - "quantum-espresso", - "rspt", - "siesta", - "sprkkr", - "vasp", - "ase", - "bmdl", - "cellgen", - "cif", - "kgrn", - "kfcd", - "kstr", - "shape", - "spacegroup", - "spc", - "xband", - "xyz", - ] -) - -# Programs that can deal with alloys -alloyprograms = set( - [ - "atat", - "cfg", - "emto", - "kstr", - "bmdl", - "shape", - "kgrn", - "kfcd", - "cif", - "spc", - "sprkkr", - "xband", - ] -) -vcaprograms = set(["castep", "vasp"]) -# -setupallprogs = set(["vasp", "pwscf", "quantum-espresso", "rspt", "mopac"]) -setupallstring = "" -for p in sorted(list(setupallprogs)): - setupallstring += p + ", " -setupallstring = setupallstring.rstrip(", ") -# -programlist = sorted(list(outputprograms)) -outputprogramstring = "" -for p in programlist: - outputprogramstring += p + ", " -outputprogramstring = outputprogramstring.rstrip(", ") - - -def parsing_input(): - - ############################ - # INPUT OPTIONS # - ############################ - description = "A program for generating input lattice structures to various electronic structure programs from a CIF (Crystallographic Information Framework) file. This code was published in Comput. Phys. Commun. 182, 1183 (2011). Please cite generously." - usage = "usage: %prog FILE [-p PROGRAM] [other options]" - parser = OptionParser(usage=usage, description=description) - - parser.add_option( - "-i", - "--input", - dest="filename", - type=str, - help="Filename of Input (.info or .cif file)", - ) - parser.add_option( - "-s", - "--step", - dest="step", - type=int, - help="Executes (1) only cell reconstruction, (2) only charge assignment, or (3) both cell reconstruction and charge assignment", - ) - - parser.add_option( - "--version", dest="version", help="Print version number.", action="store_true" - ) - parser.add_option( - "-v", - "--verbose", - dest="verbose", - help="Be as verbose as possible.", - action="store_true", - ) - parser.add_option( - "-q", - "--quiet", - dest="quiet", - help="Suppress all but explicitly requested screen output. Overrides --verbose flag.", - action="store_true", - ) - # GENERAL OPTIONS - generalopts = OptionGroup(parser, "General options") - generalopts.add_option( - "-f", - "--file", - dest="file", - help="Input CIF file, unless given as first argument to the program.", - metavar="FILE", - ) - generalopts.add_option( - "-p", - "--program", - dest="program", - help="The electronic structure code you want to create input file(s) for. Currently supports: " - + outputprogramstring - + ". This keyword is case insensitive.", - ) - generalopts.add_option( - "-o", - "--outputfile", - dest="outputfile", - help="Name of output file (if other than default for you electronic structure code).", - metavar="FILE", - ) - generalopts.add_option( - "-a", - "--append", - dest="append", - help="Append the output to given output file rather than overwriting.", - action="store_true", - ) - generalopts.add_option( - "--grammar", - dest="grammar", - help="Set the CIF grammar to be used when parsing the input file (default is 1.1).", - ) - generalopts.add_option( - "--which-filename", - dest="filenamequery", - help="If given together with the --program option, the name of the output file will be printed to screen.", - action="store_true", - ) - generalopts.add_option( - "-b", - "--block", - dest="block", - help="Block of data in input file (if there are more than one block in the CIF file).", - ) - # CELL GENERATION OPTIONS - cellgenopts = OptionGroup(parser, "Cell generation options") - cellgenopts.add_option( - "--no-reduce", - dest="noreduce", - help="Do not reduce to the primitive cell.", - action="store_true", - ) - cellgenopts.add_option( - "--force", - dest="force", - help="Attempt to force generation of output file despite problems and/or ambiguities in the input file. There are no guarantees that what you get makes sense, but the program makes an honest attempt. Implies --force-alloy.", - action="store_true", - ) - cellgenopts.add_option( - "--force-alloy", - dest="forcealloy", - help="Force generation of output file for an alloy compound for an electronic structure code that does not implement any alloy theory (such as CPA).", - action="store_true", - ) - cellgenopts.add_option( - "--vca", - dest="vca", - help="Set up an alloy using the virtual crystal approximation (VCA). Currently only supported by the CASTEP interface.", - action="store_true", - ) - cellgenopts.add_option( - "--cartesian", - dest="cartesian", - help="Make the program generate any output in cartesian coordinates.", - action="store_true", - ) - cellgenopts.add_option( - "--coordinate-tolerance", - dest="coordtol", - help="Parameter for determining when two coordinates are the same (default=0.0002).", - ) - cellgenopts.add_option( - "--setup-all", - dest="setupall", - help="Make a more complete setup, not just the geometrical part. This is currently only available for " - + setupallstring - + ".", - action="store_true", - ) - cellgenopts.add_option( - "--k-resolution", - dest="kresolution", - help="The desired resolution in k-space (default=0.2). Used for generating k-space grid options if --setup-all is specified.", - ) - cellgenopts.add_option( - "--transform-cell", - dest="celltransformation", - help="Transformation matrix applied to the lattice vectors and the symmetry operations if you, for example, want to realign the cell.", - metavar="[[],[],[]]", - ) - cellgenopts.add_option( - "--body-centred-setting", - dest="specialIsetting", - help="If set to 1, use the more symmetrical set of primitive translation vectors used for the bcc structure also for other body-centred crystals.", - metavar="0,1", - ) - cellgenopts.add_option( - "--cubic-diagonal-z", - dest="cubediagz", - help="Set up cubic cell with [111] direction along the z-axis.", - action="store_true", - ) - cellgenopts.add_option( - "--rhombohedral-diagonal", - dest="rhombdiag", - help="Set up rhombohedral cell with threefold axis along pseudocubic [111] direction.", - action="store_true", - ) - cellgenopts.add_option( - "--random-displacements", - dest="randomdisp", - help="Randomly displace all atoms. Depending on the distribution, the displacement size is either the maximal displacement (for uniform distribution) or the standard deviation (for gaussian distribution) in Angstrom.", - metavar="displacementsize", - ) - cellgenopts.add_option( - "--random-displacements-distribution", - dest="randomdistr", - help="The distribution used for displacing the atoms.", - metavar="uniform/gaussian", - ) - cellgenopts.add_option( - "--export-cif-labels", - dest="exportlabels", - help="Export atom labels from the CIF file (currently only supported for castep and RSPt).", - action="store_true", - ) - # SUPERCELL OPTIONS - supercellopts = OptionGroup(parser, "Supercell generation options") - supercellopts.add_option( - "--supercell", - dest="supercellmap", - help="Three integers separated with commas and enclosed in square brackets that specify the dimensions of a supercell OR three vectors of integers that gives the map to the supercell to be constructed from the primitive cell. If combined with the --no-reduce option the supercell will instead be generated based on the conventional cell.", - metavar="[k,l,m]/[[],[],[]]", - ) - supercellopts.add_option( - "--supercell-dimensions", - dest="supercelldims", - help="Three numbers separated with commas and enclosed in square brackets that specify the desired ABSOLUTE dimensions of a supercell (in angstrom) OR three vectors of numbers that gives the desired lattice vectors. The program will automatically generate a supercell, attempting to get as close as possible to the desired dimensions.", - metavar="[x,y,z]/[[],[],[]]", - ) - supercellopts.add_option( - "--supercell-vacuum", - dest="supercellvacuum", - help="Three numbers >=0 separated with commas and enclosed in square brackets that specify a number of unit cell units of vacuum to be added along the first, second or third of the generated lattice vectors.", - metavar="[k,l,m]", - ) - supercellopts.add_option( - "--supercell-translation-vector", - "--supercell-prevacuum-translation", - dest="supercellprevactransvec", - help="Three numbers separated with commas and enclosed in square brackets that specify a shift of all atomic positions in the cell prior to vacuum generation (in units of the lattice vectors of the supercell).", - metavar="[k,l,m]", - ) - supercellopts.add_option( - "--supercell-postvacuum-translation", - dest="supercellpostvactransvec", - help="Three numbers separated with commas and enclosed in square brackets that specify a final shift of all atomic positions in the final cell (in units of the lattice vectors of the new cell).", - metavar="[k,l,m]", - ) - supercellopts.add_option( - "--supercell-realign", - dest="supercellrealign", - help="Realign the supercell lattice vectors with respect to the cartesian reference frame. For orthorhombic cells, it puts the first, second and third lattice vectors along x, y and z, respectively.", - metavar="0,1", - ) - supercellopts.add_option( - "--supercell-sort", - dest="supercellsort", - help="Sort the atom positions by some scheme. Currently available are: \n1) By cartesian coordinate - example: xzy will sort first on x then on z then on y. \n2) by lattice vector - example: 132 will sort first by lattice vector 1 then by lattice vector 3 and last by lattice vector 2.", - ) - # SURFACE OPTIONS - surfaceopts = OptionGroup(parser, "Surface generation options") - surfaceopts.add_option( - "--surface-wizard", - dest="surfacewizardhkl", - help="Three integers separated with commas and enclosed in square brackets that specify a (hkl) plane. The wizard will suggest a supercell map that gives the first two lattice vectors in the (hkl) plane. The third lattice vector is selected as the [hkl] direction, or reasonably orthogonal to the (hkl) plane (if the [hkl] direction is far from orthogonal to this plane).", - metavar="[h,k,l]", - ) - # PRINTING OPTIONS - printopts = OptionGroup(parser, "Printing options") - printopts.add_option( - "--print-digits", - dest="printdigits", - help="Number of digits used when printing coordinates etc. to screen (default=8). Useful if you need to tweak the screen output for cutting and pasting into some unsupported program. There is no point in going over 16 because of the floating point accuracy.", - ) - printopts.add_option( - "--print-atomic-units", - dest="printau", - help="Output lattice parameters in bohrradii rather than angstrom.", - action="store_true", - ) - printopts.add_option( - "--print-cartesian", - dest="printcart", - help="Atomic sites printed to screen in cartesian rather than lattice coordinates.", - action="store_true", - ) - printopts.add_option( - "--print-symmetry-operations", - dest="printsymops", - help="Print symmetry operations of the generated cell.", - action="store_true", - ) - printopts.add_option( - "--print-seitz-matrices", - dest="printseitz", - help="Print symmetry operations of the generated cell in Seitz matrix form.", - action="store_true", - ) - printopts.add_option( - "--print-charge-state", - "--print-oxidation-numbers", - dest="printcharges", - help="Print information about the oxidation state from the CIF file.", - action="store_true", - ) - printopts.add_option( - "--print-reference-bibtex", - dest="bibtexref", - help="Print citation in BibTeX format and exit.", - action="store_true", - ) - # PROGRAM SPECIFIC OPTIONS - progspec = OptionGroup(parser, "Program specific options") - # abinit - progspec.add_option( - "--abinit-braces", - dest="abinitbraces", - help="Put curly braces around input values for ABINIT.", - action="store_true", - ) - # cellgen - progspec.add_option( - "--cellgen-map", - dest="cellgenmap", - help="Nine integers separated with commas and enclosed three and three in square brackets (this is a matrix in Python) that specify the map to a supercell to be output for the RSPt supercell generator 'cellgen'. Overrides --cellgen-supercell-dims.", - metavar="[[k,l,m],[n,o,p],[q,r,s]]", - ) - progspec.add_option( - "--cellgen-supercell-dimensions", - dest="cellgensupercelldims", - help="Three integers separated with commas and enclosed in square brackets that specify the dimensions of a supercell to be output to the RSPt supercell generator 'cellgen' (the diagonal elements of the 'map').", - metavar="[k,l,m]", - ) - progspec.add_option( - "--cellgen-reference-vector", - dest="cellgenrefvec", - help="Three reals separated with commas and enclosed in square brackets that specify an optional shift of the origin used by the RSPt supercell generator 'cellgen'.", - metavar="[x,y,z]", - ) - # CASTEP - progspec.add_option( - "--castep-cartesian", - dest="castepcartesian", - help="Output atom positions in cartesian rather than lattice coordinates.", - action="store_true", - ) - progspec.add_option( - "--castep-atomic-units", - dest="castepatomicunits", - help="Output to CASTEP in atomic units (bohr radii) rather than angstrom.", - action="store_true", - ) - # CPMD - progspec.add_option( - "--cpmd-cutoff", - dest="cpmdcutoff", - help="Set the cutoff written to the &SYSTEM block (default=100.0 Ry).", - ) - # Crystal09 - progspec.add_option( - "--crystal09-rhombohedral-setting", - dest="crystal09rhombohedral", - help="For trigonal spacegroups where this is possible, specify the rhombohedral cell in the Crystal09 input.", - action="store_true", - ) - # emto - progspec.add_option( - "--emto-hard-sphere-radii", - dest="hardsphereradii", - help="Set hard spheres in KSTR to something other than the default (=0.67).", - ) - # FHI-AIMS - progspec.add_option( - "--fhi-aims-cartesian", - dest="aimscartesian", - help="Store the coordinates for FHI-AIMS in cartesian format.", - action="store_true", - ) - # MOPAC - progspec.add_option( - "--mopac-first-line", - dest="mopacfirstline", - help="String to be used for the first line (the run commands) of the MOPAC input.", - metavar='"string"', - ) - progspec.add_option( - "--mopac-second-line", - dest="mopacsecondline", - help="String to be used for the second line (documentation) of the MOPAC input.", - metavar='"string"', - ) - progspec.add_option( - "--mopac-third-line", - dest="mopacthirdline", - help="String to be used for the third line (documentation) of the MOPAC input.", - metavar='"string"', - ) - progspec.add_option( - "--mopac-freeze-structure", - dest="mopacfreeze", - help="If set to 'T' then add a 0 after each coordinate (freezing the structure), if set to 'F' then add a 1 (allowing everything to relax).", - metavar="T/F", - ) - # PWSCF - progspec.add_option( - "--pwscf-pseudostring", - dest="pwscfpseudostring", - help='String to attach to the element name to identify the pseudopotential file (e.g. something like "_HSCV_PBE-1.0.UPF").', - metavar="_PSEUDO", - ) - progspec.add_option( - "--pwscf-atomic-units", - dest="pwscfatomicunits", - help="Write PWSCF .in file in atomic units (bohr) rather than angstrom.", - action="store_true", - ) - progspec.add_option( - "--pwscf-alat-units", - dest="pwscfalatunits", - help="Use 'alat' units for the positions in the PWSCF .in file.", - action="store_true", - ) - progspec.add_option( - "--pwscf-cartesian", - dest="pwscfcart", - help="Write lattice vectors and positions to PWSCF .in file in cartesian coordinates and set the lengths scale to 1.", - action="store_true", - ) - progspec.add_option( - "--pwscf-cartesian-latticevectors", - dest="pwscfcartvects", - help="Write lattice vectors to PWSCF .in file in cartesian coordinates and set the lengths scale to 1.", - action="store_true", - ) - progspec.add_option( - "--pwscf-cartesian-positions", - dest="pwscfcartpos", - help="Write lattice positions to PWSCF .in file in cartesian coordinates.", - action="store_true", - ) - # RSPt - progspec.add_option( - "--rspt-new", - dest="newsymt", - help="Generate a symt.inp file in the new format.", - action="store_true", - ) - progspec.add_option( - "--rspt-spinpol", - dest="rsptspinpol", - help="Generate new format symt.inp file with spin polarization.", - action="store_true", - ) - progspec.add_option( - "--rspt-relativistic", - dest="rsptrelativistic", - help="Generate new format symt.inp file with relativistic effects.", - action="store_true", - ) - progspec.add_option( - "--rspt-spinaxis", - dest="rsptspinaxis", - help="Spin axis for symt.inp (default is [0.0,0.0,0.0].", - metavar="[x,y,z]", - ) - progspec.add_option( - "--rspt-no-spin", - dest="rsptnospin", - help="Force a nonmagnetic setup in conjunction with --setup-all.", - action="store_true", - ) - progspec.add_option( - "--rspt-mtradii", - dest="rsptmtradii", - help="Integer that gives the method for setting muffin tin radii.", - metavar="N", - ) - progspec.add_option( - "--rspt-cartesian-latticevectors", - dest="rsptcartlatvects", - help="Put lattice vectors in atomic units and the lenght scale parameter to 1.", - action="store_true", - ) - progspec.add_option( - "--rspt-pass-wyckoff", - dest="rsptpasswyckoff", - help="Pass wyckoff labels from CIF file to the symt/rspt.inp file.", - action="store_true", - ) - # SPRKKR/xband - progspec.add_option( - "--sprkkr-minangmom", - dest="sprkkrminangmom", - help="Enforce minimum onsite angular momentum (=l+1, so that 3 will be d-states).", - ) - # spacegroup - progspec.add_option( - "--spacegroup-supercell", - dest="spacegroupsupercell", - help="Three integers separated with commas and enclosed in square brackets that specify the dimensions of a supercell to be output to the elk input generator 'spacegroup'.", - metavar="[k,l,m]", - ) - # VASP - progspec.add_option( - "--vasp-format", - dest="vaspformat", - help="Format of the generated POSCAR file, either 4 or 5. Default is 4.", - ) - progspec.add_option( - "--vasp-print-species", - dest="vaspprintspcs", - help="Print the atomic species to screen in the order they are put in the POSCAR file (useful for scripting).", - action="store_true", - ) - progspec.add_option( - "--vasp-cartesian", - dest="vaspcart", - help="Write lattice vectors and positions to POSCAR file in cartesian coordinates and set length to 1.", - action="store_true", - ) - progspec.add_option( - "--vasp-cartesian-lattice-vectors", - dest="vaspcartvecs", - help="Write lattice vectors to POSCAR file in cartesian coordinates and set the length scale to 1.", - action="store_true", - ) - progspec.add_option( - "--vasp-cartesian-positions", - dest="vaspcartpos", - help="Write atomic positions to POSCAR file in Cartesian rather than Direct coordinates.", - action="store_true", - ) - progspec.add_option( - "--vasp-selective-dynamics", - dest="vaspselectivedyn", - help="Output POSCAR in selective dynamics format (without any constrained atoms).", - action="store_true", - ) - progspec.add_option( - "--vasp-pseudo-libdr", - dest="vasppseudolib", - help="Path to the VASP pseudopotential library. Also settable by the VASP_PAWLIB environment variable.", - ) - progspec.add_option( - "--vasp-pseudo-priority", - dest="vasppppriority", - help="Set the priority of different pseudopotentials by a list of suffixes. Also available via the VASP_PP_PRIORITY environment variable.", - metavar='"_d,_pv,_sv,_h,_s"', - ) - progspec.add_option( - "--vasp-encutfac", - dest="vaspencutfac", - help="Factor that multiplies the maximal ENCUT found in the POTCAR file.", - metavar="1.5", - ) - # xyz - progspec.add_option( - "--xyz-atomic-units", - dest="xyzatomicunits", - help="Output xyz file in atomic units (bohr radii) rather than angstrom.", - action="store_true", - ) - # - parser.add_option_group(generalopts) - parser.add_option_group(cellgenopts) - parser.add_option_group(supercellopts) - parser.add_option_group(surfaceopts) - parser.add_option_group(printopts) - parser.add_option_group(progspec) - - (options, args) = parser.parse_args() - - return (options, args) - - -def cif_2_info(input_path,infopath,errorpath,angtobohr=angtobohr,codename=codename,uperautogpercm=uperautogpercm): - - angtobohr = angtobohr - codename = codename - uperautogpercm = uperautogpercm - - # Name and version - programname = "cif2cell" - version = "2.0.0" - - (options, args) = parsing_input() - infofilename = open(infopath, "w") - errorfilename = open(errorpath, "w") - - # python cif2info.py input_path --cartesian --force - options.file = input_path - options.cartesian = True - options.force = True - options.verbose = False - options.quiet = False - force_warning_print = False # suppress warning if force is True - - # Print version number and exit - if options.version: - infofilename.write(programname + " version " + version + "\n") - - ############################################################# - # Check that options given are possible - if options.append and not options.outputfile: - errorfilename.write( - "***Error: option --append requires an output file to be specified.\n" - ) - sys.exit(1) - if options.append and (options.program == "emto" or options.program == "ncol"): - errorfilename.write( - "***Error: option --append can not be used with " + options.program + ".\n" - ) - sys.exit(1) - if options.setupall and options.program not in setupallprogs: - errorfilename.write( - "***Error: option --setup-all not supported for " + options.program + ".\n" - ) - sys.exit(1) - if options.filenamequery and not options.program: - errorfilename.write( - "***Error: option --which-filename requires that --program is given.\n" - ) - sys.exit(1) - if options.supercellmap and options.supercelldims: - errorfilename.write( - "***Error: cannot use both --supercell and --supercell-dimensions.\n" - ) - sys.exit(1) - - ############################################################# - # INITIAL PARSING OF VARIOUS INPUT DATA - # Electronic structure program - if options.program: - outputprogram = options.program.lower() - if not outputprogram in outputprograms: - errorfilename.write("Error: Unknown output format: " + outputprogram + "\n") - sys.exit(1) - # Quantum Espresso is just an alias... - if outputprogram == "quantum-espresso": - outputprogram = "pwscf" - else: - outputprogram = None - - # recast some input parameters - if options.noreduce: - reducetoprim = False - else: - reducetoprim = True - - try: - printdigits = int(options.printdigits) - except: - printdigits = 8 - - # Set verbosity level - if options.verbose and not options.quiet: - verbose = True - else: - verbose = False - - # Various parameters - # Cartesian? - if options.cartesian: - options.castepcartesian = True - options.printcart = True - options.vaspcart = True - options.aimscartesian = True - # Output reference in specific format? - if options.bibtexref: - bibtexref = True - else: - bibtexref = False - # Force generation despite problems? - if options.force: - force = True - else: - force = False - # force output for alloys - if options.forcealloy or force: - forcealloy = True - else: - forcealloy = False - - # Make supercell? - if ( - options.supercellmap - or options.supercelldims - or options.supercellvacuum - or options.supercellprevactransvec - or options.supercellpostvactransvec - ): - makesupercell = True - else: - makesupercell = False - - # Initialize element data - ed = ElementData() - # Number of positions for printing decimal numbers to screen - if type(options.printdigits) == type(None): - decpos = 8 + 3 - else: - decpos = int(options.printdigits) + 3 - # format string for outputting decimal numbers to screen - decform = "%" + str(decpos) + "." + str(decpos - 4) + "f" - threedecs = " " + decform + " " + decform + " " + decform - fourdecs = " " + decform + " " + decform + " " + decform + " " + decform - # For printing time - today = datetime.today() - datestring = ( - str(today.year) - + "-" - + str(today.month).rjust(2, "0") - + "-" - + str(today.day).rjust(2, "0") - + " " - + str(today.hour) - + ":" - + str(today.minute).rjust(2, "0") - ) - - # Printing of symmetry operations - if options.printsymops: - printsymops = True - else: - printsymops = False - if options.printseitz: - printseitz = True - else: - printseitz = False - - if options.printcharges: - printcharges = True - else: - printcharges = False - - # complete setup options - if options.setupall: - setupall = True - else: - setupall = False - # k-space resolution - if options.kresolution: - kresolution = float(options.kresolution) - else: - kresolution = 0.2 - - # Cell transformations - if options.celltransformation or options.cubediagz or options.rhombdiag: - transformcell = True - else: - transformcell = False - - ################################################################# - # Open and read CIF file - cif_file = None - if len(args) > 0: - # input CIF file as argument - cif_file = args[0] - if options.file: - # input CIF file as option (overrides argument) - cif_file = options.file - if cif_file: - if not os.path.exists(cif_file): - errorfilename.write( - "***Error: The file " + cif_file + " could not be found.\n" - ) - sys.exit(2) - cif_file_name = cif_file.split("/")[-1] - # Set CIF grammar - if options.grammar: - cif_grammar = options.grammar - else: - cif_grammar = "1.1" - # Skip validation... it causes too much trouble. - ## cdic = CifFile.CifDic("cif_core.dic",grammar='1.1') - ## val_results = CifFile.validate(cif_file,dic=cdic) - ## print(validate_report(val_results)) - ## val_report = CifFile.ValidationResult(val_results) - try: - cf = CifFile.ReadCif(cif_file, grammar=cif_grammar) - # cf = CifFile.ReadCif(cif_file) - except Exception as e1: - print(e1) - # test if data_ statement in the beginning is missing - try: - f = open(cif_file, "r") - lines = f.readlines() - f.close() - datamissing = False - counter = 0 - for line in lines: - if line.strip()[0] == "#": - continue - else: - if not line.strip()[0:5] == "data_" and counter == 0: - datamissing = True - counter += 1 - if datamissing: - tmpname = cif_file.replace(".cif", "_tmp.cif") - f = open(tmpname, "w") - f.write("data_default\n") - for line in lines: - f.write(line) - f.close() - cf = CifFile.ReadCif(tmpname, grammar=cif_grammar) - wrongfile = cif_file.replace(".cif", "_wrong.cif") - errorfilename.write( - "***Warning: The cif file is missing a data statement." - ) - errorfilename.write( - " The file has been renamed '" - + wrongfile - + "' and replaced by a" - ) - errorfilename.write(" corrected file.\n") - os.rename(cif_file, wrongfile) - os.rename(tmpname, cif_file) - else: - errorfilename.write("***Error: could not read " + cif_file + ".\n") - errorfilename.write( - "Something may be wrong with the CIF file, you can check it with " - ) - errorfilename.write( - "the free IUCr CIF valitation tool at http://checkcif.iucr.org/\n" - ) - errorfilename.write(e1.value + "\n") - sys.exit(2) - except Exception as er2: - try: - os.remove(tmpname) - except: - pass - errorfilename.write("***Error: could not read " + cif_file + ".\n") - errorfilename.write( - "Something may be wrong with the CIF file, you can check it with " - ) - errorfilename.write( - "the free IUCr CIF valitation tool at http://checkcif.iucr.org/\n" - ) - errorfilename.write(er2.value + "\n") - # sys.exit(2) - else: - errorfilename.write("***Error: No input CIF file given\n") - sys.exit(2) - - # Make supercell? - if makesupercell: - if options.supercellmap: - supercellmap = safe_matheval(options.supercellmap) - else: - supercellmap = [1, 1, 1] - if options.supercelldims: - t = safe_matheval(options.supercelldims) - try: - supercelldims = [ - [float(t[0]), 0.0, 0.0], - [0.0, float(t[1]), 0.0], - [0.0, 0.0, float(t[2])], - ] - except: - supercelldims = t - else: - supercelldims = None - if options.supercellvacuum: - supercellvacuum = safe_matheval(options.supercellvacuum) - else: - supercellvacuum = [0, 0, 0] - if options.supercellprevactransvec: - supercellprevactransvec = safe_matheval(options.supercellprevactransvec) - else: - supercellprevactransvec = [0, 0, 0] - if options.supercellpostvactransvec: - supercellpostvactransvec = safe_matheval(options.supercellpostvactransvec) - else: - supercellpostvactransvec = [0, 0, 0] - # - if options.supercellsort: - supercellsort = options.supercellsort.lower() - else: - supercellsort = "" - if options.supercellrealign: - supercellrealign = int(options.supercellrealign) - else: - supercellrealign = 0 - - ############################################## - # Get blocks - cfkeys = list(cf.keys()) - if options.block: - cb = cf.get(options.block) - if type(cb) == type(None): - errorfilename.write( - "***Error: No block " + options.block + " in " + cif_file + ".\n" - ) - sys.exit(2) - else: - cb = cf.get(cfkeys[0]) - # Get reference data - ref = ReferenceData() - ref.getFromCIF(cb) - if bibtexref: - infofilename.write(ref.bibtexref()) - - if options.coordtol: - # Get cell data - cd = CellData(compeps=float(options.coordtol)) - # cd.coordepsilon = float(options.coordtol) - else: - cd = CellData() - # Suppress warnings if requested. - cd.quiet = options.quiet - # Force generation despite problems? - cd.force = force - try: - cd.getFromCIF(cb) - except PositionError as e: - errorfilename.write("***Error: cell setup: " + e.value + "\n") - sys.exit(2) - except CellError as e: - errorfilename.write("***Error: cell setup: " + e.value + "\n") - sys.exit(2) - except SymmetryError as e: - errorfilename.write("***Error: cell setup: " + e.value + "\n") - sys.exit(2) - - ############################################## - # Set flags for cell generation - if options.specialIsetting == "1": - cd.specialIsetting = True - - ############################################## - # Generate cell - try: - if reducetoprim: - cd.primitive() - else: - cd.conventional() - except SymmetryError as e: - errorfilename.write("***Error: cell setup: " + e.value + "\n") - sys.exit(2) - except CellError as e: - errorfilename.write("***Error: cell setup: " + e.value + "\n") - sys.exit(2) - - ############################################## - # Surface wizard - # If present, print suggestion and exit. - if options.surfacewizardhkl: - hkl = safe_matheval(options.surfacewizardhkl) - mapsuggestion = SurfaceWizard(cd, hkl) - wizardstr = "--supercell=[" - for i in mapsuggestion: - wizardstr += "[" - for j in i: - wizardstr += str(j) + "," - wizardstr = wizardstr.rstrip(",") + "]," - wizardstr = wizardstr.rstrip(",") + "]\n" - infofilename.write(wizardstr) - sys.exit() - - ############################################## - # Test if generated cell agrees with given chemical formula. - # Too difficult for alloys (no universally agreed-upon way to write the formula into cifs). - if len(ref.ChemicalComposition) > 0 and not cd.alloy: - if ref.ChemicalComposition != cd.ChemicalComposition: - if force: - if force_warning_print: - errorfilename.write( - "***Warning: Chemical composition of the generated cell differs from that given\n" - + " by _chemical_formula_sum.\n" - ) - else: - errorfilename.write( - "***Error: Chemical composition of the generated cell differs from that given\n" - + " by _chemical_formula_sum. Use --force to generate a cell anyway.\n" - ) - sys.exit(2) - - ############################################## - # Randomly displace atoms if requested. This erases all symmetry operations. - inputcell = copy.copy(cd) - if options.randomdisp and not makesupercell: - if options.randomdistr: - distr = options.randomdistr - else: - distr = "uniform" - try: - cd.randomDisplacements(float(options.randomdisp), distribution=distr) - except SetupError as e: - errorfilename.write("***Error: random displacements: " + e.value + "\n") - sys.exit(3) - # Reset space group operations - cd.HallSymbol = "P 1" - cd.spacegroupnr = 1 - cd.HMSymbol = "P1" - cd.symops = set([SymmetryOperation(["x", "y", "z"])]) - - ############################################## - # Print cell - if verbose or not options.program and not options.quiet: - infofilename.write(programname.upper() + " " + version + "\n") - infofilename.write(datestring + "\n") - # Print compound - compoundstring = "Output for " - if ref.cpd == "" and ref.compound == "": - compoundstring += "unknown compound" - if ref.cpd != "": - compoundstring += ref.cpd - if ref.compound != "": - compoundstring += " (" + ref.compound + ")" - infofilename.write(compoundstring + "\n") - # Print database - infofilename.write(ref.databasestring) - if cd.alloy and forcealloy and options.program: - infofilename.write( - "\nEnforcing generation of file(s) for " - + outputprogram - + " for an alloy." - ) - infofilename.write("\n BIBLIOGRAPHIC INFORMATION\n") - refstrings = ref.referencestring().split() - tmpstring = "" - i = 0 - while i < len(refstrings): - if len(tmpstring + refstrings[i] + " ") < 70: - tmpstring += refstrings[i] + " " - i += 1 - else: - infofilename.write(tmpstring) - tmpstring = "" - if tmpstring != "": - infofilename.write(tmpstring) - infofilename.write("\n INPUT CELL INFORMATION\n") - infofilename.write("Symmetry information:\n") - if inputcell.HallSymbol != "": - infofilename.write( - inputcell.crystal_system()[0].upper() - + inputcell.crystal_system()[1:] - + " crystal system.\n" - ) - infofilename.write( - "Space group number : ".rjust(2) - + str(inputcell.spacegroupnr) - + "\n" - ) - infofilename.write( - "Hall symbol : " + inputcell.HallSymbol + "\n" - ) - infofilename.write("Hermann-Mauguin symbol : " + inputcell.HMSymbol + "\n") - else: - infofilename.write("No space group information found.\n") - # only print these if verbose - if verbose: - infofilename.write("Symmetry equivalent sites:\n") - symops = list(inputcell.symops) - symops.sort() - for i in range(len(symops)): - infofilename.write( - "%4i %8s, %8s, %8s" - % ( - i + 1, - symops[i].eqsite[0], - symops[i].eqsite[1], - symops[i].eqsite[2], - ) - + "\n" - ) - infofilename.write("\nLattice parameters:\n") - tmpstring = "" - for i in ["a", "b", "c"]: - tmpstring += i.rjust(decpos) + " " - infofilename.write(tmpstring + "\n") - formatstring = "" - if options.printau: - aprint = inputcell.a * angtobohr - bprint = inputcell.b * angtobohr - cprint = inputcell.c * angtobohr - else: - aprint = inputcell.a - bprint = inputcell.b - cprint = inputcell.c - for i in range(3): - formatstring = formatstring + decform + " " - infofilename.write(formatstring % (aprint, bprint, cprint) + "\n") - tmpstring = "" - for i in ["alpha", "beta", "gamma"]: - tmpstring += i.rjust(decpos) + " " - infofilename.write(tmpstring + "\n") - infofilename.write( - formatstring % (inputcell.alpha, inputcell.beta, inputcell.gamma) + "\n" - ) - ## infofilename.write(formatstring % (inputcell.alphainit, inputcell.betainit, inputcell.gammainit)) - # Pretty printing in columns that need to have variable width - # w1 = width of the atomic species column - # w2 = width of a decimal column - # w3 = width of the occupancy column - # w4 = width of the charge state column - if inputcell.alloy: - w1 = 0 - w3 = 0 - w4 = 0 - # Find atom and occupation column widths - for a in inputcell.atomdata: - for b in a: - tmpstring1 = "" - tmpstring2 = "" - tmpstring3 = "" - for k, v in b.species.items(): - tmpstring1 += k + "/" - tmpstring2 += str(v).rstrip("0.") + "/" - # charge output - for k2, v2 in inputcell.chargedict.items(): - if k2.strip(string.punctuation + string.digits) == k: - tmpstring3 += str(v2) + "/" - tmpstring1 = tmpstring1.rstrip("/") - tmpstring2 = tmpstring2.rstrip("/") - tmpstring3 = tmpstring3.rstrip("/") - w1 = max(w1, len(tmpstring1)) - w3 = max(w3, len(tmpstring2)) - w4 = max(w4, len(tmpstring3)) - # small aesthetic adjustment - w1 = w1 + 1 - w3 = w3 + 2 - w4 = max(w4 + 2, 8) - else: - w1 = 5 - w2 = decpos - w3 = 0 - # width of charge column - if printcharges: - w4 = 7 - else: - w4 = 0 - # Now for the output... - tmpstring = "Representative sites :" - infofilename.write(tmpstring + "\n") - siteheader = "Atom".ljust(w1) + " " - if options.printcart: - transmtx = [] - for i in range(3): - transmtx.append([]) - for j in range(3): - transmtx[i].append( - inputcell.latticevectors[i][j] * inputcell.lengthscale - ) - i += 1 - for i in ["x", "y", "z"]: - siteheader += i.rjust(decpos) + " " - else: - transmtx = [[1, 0, 0], [0, 1, 0], [0, 0, 1]] - for i in ["a1", "a2", "a3"]: - siteheader += i.rjust(decpos) + " " - if inputcell.alloy: - if w3 > 13: - siteheader += "occupancies".rjust(w3) - else: - siteheader += "occ.".rjust(w3) - if printcharges: - siteheader += " " + "charge".rjust(w4) - infofilename.write(siteheader + "\n") - # Representative sites - for i in range(len(inputcell.ineqsites)): - tmpstring = "" - occstring = "" - chargestring = "" - for k, v in inputcell.occupations[i].items(): - tmpstring += k + "/" - occstring += str(v) + "/" - # charge output - for k2, v2 in inputcell.chargedict.items(): - if k2.strip(string.punctuation + string.digits) == k: - chargestring += str(v2) + "/" - tmpstring = tmpstring.rstrip("/") - occstring = occstring.rstrip("/") - chargestring = chargestring.rstrip("/") - v = [t for t in inputcell.ineqsites[i]] - tmpstring = tmpstring.ljust(w1) + threedecs % (v[0], v[1], v[2]) - if inputcell.alloy: - tmpstring += " " + occstring.rjust(w3) - if printcharges: - tmpstring += " " + chargestring.rjust(w4) - infofilename.write(tmpstring + "\n") - - # Output cell - infofilename.write("\n OUTPUT CELL INFORMATION\n") - infofilename.write("Symmetry information:\n") - if cd.HallSymbol != "": - infofilename.write( - cd.crystal_system()[0].upper() - + cd.crystal_system()[1:] - + " crystal system.\n" - ) - infofilename.write( - "Space group number : ".rjust(2) + str(cd.spacegroupnr) + "\n" - ) - infofilename.write("Hall symbol : " + cd.HallSymbol + "\n") - infofilename.write("Hermann-Mauguin symbol : " + cd.HMSymbol + "\n") - else: - infofilename.write("No space group information found.\n") - # only print these if verbose - if verbose: - infofilename.write("Symmetry equivalent sites:\n") - symops = list(cd.symops) - symops.sort() - for i in range(len(symops)): - infofilename.write( - "%4i %8s, %8s, %8s\n" - % ( - i + 1, - symops[i].eqsite[0], - symops[i].eqsite[1], - symops[i].eqsite[2], - ) - ) - - infofilename.write("\n") - cd.printCell( - printcart=options.printcart, - printdigits=printdigits, - printcharges=options.printcharges, - unit_to_write=infofilename, - ) - # Print volume and density - if options.printau: - volume = cd.volume() * (cd.lengthscale * angtobohr) ** 3 - volstring = "(a.u.)" - else: - volume = cd.volume() * cd.lengthscale**3 - volstring = "A" - infofilename.write( - "\nUnit cell volume : " + decform % volume + " " + volstring + "^3\n" - ) - try: - weight = 0.0 - for a in cd.atomdata: - for b in a: - for k, v in b.species.items(): - weight += ed.elementweight[k] * v - density = weight / volume - infofilename.write( - "Unit cell density : " - + decform % density - + " u/" - + volstring - + "^3 = " - + decform % (density * uperautogpercm) - + " g/cm^3\n" - ) - except: - if not options.quiet: - errorfilename.write("***Warning: Error printing unit cell density.\n") - - ############################################## - # Rotate cell - if transformcell: - # pre-defined transformations - if options.cubediagz: - # Put [111] direction along z axis. - celltransformation = LatticeMatrix( - [ - [0.577350269189626, -1.000000000000000, 0.816496580927725], - [0.577350269189626, 1.000000000000000, 0.816496580927725], - [-1.154700538379250, 0.000000000000000, 0.816496580927725], - ] - ) - if cd.crystal_system() != "cubic": - errorfilename.write( - "***Error: Only cubic structures are properly aligned to the z axis by --cubic-diagonal-z.\n" - ) - if not force: - errorfilename.write(" Use --force to go ahead anyway.\n") - sys.exit(1) - - if options.rhombdiag: - # Put z direction along pseudocubic [111]. Kind of the opposite of the cubediagz. - t = 1 / cd.latticevectors[0].length() # Normalization to 1 - celltransformation = LatticeMatrix( - [ - [ - 0.816496580927726 * t, - -0.408248290463863 * t, - -0.408248290463863 * t, - ], - [0.000000000000000, 0.707106781186547 * t, -0.707106781186547 * t], - [ - 0.577350269189626 * t, - 0.577350269189626 * t, - 0.577350269189626 * t, - ], - ] - ) - if not cd.rhombohedral: - errorfilename.write( - "***Error: Only rhombohedral cells are properly aligned to the\n" - ) - errorfilename.write( - " pseudocubic (111) axis by --rhombohedral-diagonal.\n" - ) - if not force: - errorfilename.write(" Use --force to go ahead anyway.\n") - sys.exit(1) - # explicitly giving the transformation overrides any other transformation - if options.celltransformation: - celltransformation = safe_matheval(options.celltransformation) - try: - cd.transformCell(celltransformation) - except CellError as e: - errorfilename.write("***Error: Cell transformation: " + e.value + "\n") - sys.exit(2) - if verbose or not options.program and not options.quiet: - infofilename.write("\n TRANSFORMED CELL") - cd.printCell( - printcart=options.printcart, - printdigits=printdigits, - printcharges=options.printcharges, - ) - - ############################################## - # Generate supercell - if makesupercell: - if supercelldims != None: - # Determine a suitable map to get the desired supercell dimensions. - t1 = [] - for i in range(3): - t1.append([]) - for j in range(3): - t1[i].append(cd.latticevectors[i][j] * cd.lengthscale) - t2 = minv3(t1) - t2 = mmmult3(supercelldims, t2) - supercellmap = [] - for i in range(3): - supercellmap.append([]) - for j in range(3): - supercellmap[i].append(int(round(t2[i][j]))) - try: - cd.getSuperCell( - supercellmap, - supercellvacuum, - supercellprevactransvec, - postvactransvec=supercellpostvactransvec, - sort=supercellsort, - realign=supercellrealign, - ) - except CellError as e: - errorfilename.write("***Error: Supercell setup: " + e.value + "\n") - sys.exit(2) - # Randomly displace atoms if requested. This erases all symmetry operations. - if options.randomdisp: - if options.randomdistr: - distr = options.randomdistr - else: - distr = "uniform" - try: - cd.randomDisplacements(float(options.randomdisp), distribution=distr) - except SetupError as e: - errorfilename.write("***Error: random displacements: " + e.value + "\n") - sys.exit(3) - cd.symops = set([SymmetryOperation(["x", "y", "z"])]) - - # Print supercell - if verbose or not options.program and not options.quiet: - infofilename.write("\n SUPERCELL INFORMATION\n") - cd.printCell( - printcart=options.printcart, - printdigits=printdigits, - printcharges=options.printcharges, - ) - - if printsymops or printseitz or verbose: - # Print symmetry operations. Need to make list of it to control order. - symoplist = sorted(list(cd.symops)) - infofilename.write("\nSymmetry operations :\n") - if printsymops or verbose: - infofilename.write(" 3x3 rotation matrix +\n") - infofilename.write(" 3x1 translation vector\n") - i = 1 - for op in symoplist: - infofilename.write("Operation " + str(i) + "\n") - for v in op.rotation: - infofilename.write(threedecs % (v[0], v[1], v[2])) - infofilename.write( - threedecs - % (op.translation[0], op.translation[1], op.translation[2]) - + "\n" - ) - i += 1 - if printseitz: - infofilename.write(" In Seitz matrix form\n") - i = 1 - for op in symoplist: - infofilename.write("Operation " + str(i) + "\n") - tmpstring = "" - for j in range(3): - tmpstring += ( - fourdecs - % ( - op.rotation[j][0], - op.rotation[j][1], - op.rotation[j][2], - op.translation[j], - ) - + "\n" - ) - tmpstring += fourdecs % (0, 0, 0, 1) - infofilename.write(tmpstring) - i += 1 - - # Remind that the result may be junk when using --force - if force: - if force_warning_print: - errorfilename.write( - "\n***Warning: You invoked the --force flag, presumably to bypass some error message.\n" - ) - errorfilename.write( - " Carefully check the results, which may be rubbish, nonsense or both!\n" - ) - - ############################################## - # Sort sites so that the ones occupied by the heaviest elements come first, - # if the Python version supports this form of the max function and there is - # nothing wrong with the site data. - if not (makesupercell and supercellsort): - try: - cd.atomdata.sort( - key=lambda a: ed.elementnr[max(a[0].species, key=a[0].species.get)], - reverse=True, - ) - except: - pass - - ############################################################################################ - # Output file mode (overwrite or append?) - if options.append: - outmode = "a" - else: - outmode = "w" - # Output file. ot parsed until this point, since the default file names for some of - # the codes contain the names of space group and compound. - if options.outputfile: - outputfile = options.outputfile - else: - # Default output filenames for different programs - if outputprogram == "vasp": - outputfile = "POSCAR" - elif outputprogram == "rspt": - if setupall: - outputfile = "rspt.inp" - else: - outputfile = "symt.inp" - elif outputprogram == "cellgen": - outputfile = "cellgen.inp" - elif outputprogram == "elk": - outputfile = "GEOMETRY.OUT" - elif outputprogram == "exciting": - outputfile = "input.xml" - elif outputprogram == "spacegroup": - outputfile = "spacegroup.in" - elif outputprogram == "cif": - outputfile = cif_file_name.replace(".cif", "") + "_allatoms.cif" - elif outputprogram == "ase": - outputfile = "positions.py" - else: - # A bunch of programs get default output constructed as: - # 1. chemical abbreviation (i.e. something like H2SO4 or CeRhIn5) - # 2. if this is too long, use the original cif filename - outputfile = ref.cpd.replace(" ", "").replace("(", "").replace(")", "") - # If the filename seems too long or strange, replace by the name of the cif file - if len(outputfile.strip(string.punctuation)) == 0: - outputfile = cif_file_name.replace(".cif", "") - if len(outputfile) > 24: - if len(cif_file_name) < len(outputfile): - outputfile = cif_file_name.replace(".cif", "") - else: - outputfile = outputfile[0:9] - # Append file endings etc. - if outputprogram == "abinit": - outputfile = outputfile + ".in" - elif outputprogram == "atat": - outputfile = outputfile + ".in" - elif outputprogram == "castep": - outputfile = outputfile + ".cell" - elif outputprogram == "cfg": - outputfile = outputfile + ".cfg" - elif outputprogram == "coo": - outputfile = outputfile + ".coo" - elif outputprogram == "cp2k": - outputfile = outputfile + ".inp" - elif outputprogram == "cpmd": - outputfile = outputfile + ".inp" - elif outputprogram == "crystal09": - # This is the naming convention from a large bunch of test cases, no idea why - outputfile = outputfile + ".d12" - elif outputprogram == "fhi-aims": - outputfile = "geometry.in" - elif outputprogram == "fleur": - outputfile = "inp_" + outputfile - elif outputprogram == "hutsepot": - outputfile = outputfile + ".str" - elif outputprogram == "mopac": - outputfile = outputfile + ".mop" - elif outputprogram == "pwscf": - outputfile = outputfile + ".in" - elif outputprogram == "siesta": - outputfile = outputfile + ".fdf" - elif outputprogram == "sprkkr" or outputprogram == "xband": - outputfile = outputfile + ".sys" - elif outputprogram == "spc": - outputfile = outputfile + ".dat" - elif outputprogram == "xyz": - outputfile = outputfile + ".xyz" - elif outputprogram == "lammps": - outputfile = outputfile + ".data" - else: - pass - - # Print output filename to screen - if outputprogram != "": - if (verbose or options.filenamequery) and outputfile != "": - infofilename.write("Data will be written to the file " + outputfile) - - ################################################################################################ - # stuff that should be printed irrespective of the verbose flag - if cd.alloy and forcealloy and options.program and not verbose: - tmpstring = "Enforcing file generation for alloy. " - if ( - outputprogram == "bstr" - or outputprogram == "vasp" - or outputprogram == "cpmd" - ): - infofilename.write(tmpstring + "\n") - else: - tmpstring += "Warning! The file(s) will be incomplete!" - infofilename.write(tmpstring + "\n") - - ################################################################################################ - # Stop here if no specific output was requested - if not options.program: - pass - - # Don't generate output for alloys (for most programs) - if ( - cd.alloy - and not forcealloy - and not (outputprogram in alloyprograms or outputprogram in vcaprograms) - ): - errorfilename.write( - "Error: This system is an alloy, but " - + codename[outputprogram] - + " has no way of dealing with alloys.\n Run again with --force-alloy (or --force) if you want to generate an (incomplete) output file anyway.\n" - ) - sys.exit(17) - # Deal with VCA - if cd.alloy and outputprogram in vcaprograms: - if not options.vca and not forcealloy: - errorfilename.write( - "Error: This system is an alloy. " - + codename[outputprogram] - + " can deal with some alloys using the virtual crystal approximation (VCA).\n Run again with the flag --vca if you want to produce a VCA setup.\n" - ) - sys.exit(17) - vcawarning1 = False - vcawarning2 = False - if options.vca: - # Issue warning for precarious VCA setups - groups = [] - for a in cd.atomdata: - if len(a[0].species) > 1: - t = [ed.elementgroup[sp] for sp, conc in a[0].species.items()] - groups.append((min(t), max(t))) - if len(a[0].species) > 2: - vcawarning1 = True - for g in groups: - if g[1] - g[0] > 1: - vcawarning2 = True - if vcawarning1 and vcawarning2: - errorfilename.write( - "Warning: You are setting up a VCA calculation for an alloy with more than two components\n and not all alloy sites are occupied by species from neighbouring groups in the periodic\n table. Make doubly sure that you know what you are doing!\n" - ) - elif vcawarning1: - errorfilename.write( - "Warning: You are setting up a VCA calculation for an alloy with more than two components.\n Make sure that you know what you are doing!\n" - ) - elif vcawarning2: - errorfilename.write( - "Warning: You are setting up a VCA calculation but not all alloy sites are occupied by species\n from neighbouring groups in the periodic table. Make sure that you know what you are doing!\n" - ) - infofilename.close() - errorfilename.close() - - # Function for printing a standard docstring - def StandardDocstring(): - cif2cellstring = " T. Bjorkman, Comp. Phys. Commun. 182, 1183-1186 (2011). Please cite generously." - stringlen = max( - len(ref.referencestring()), - len(ref.cpd + " (" + ref.compound + ")"), - len(cif2cellstring), - ) - docstring = "" - tmpstring = "" - tmpstring = tmpstring.ljust(stringlen + 4, "*") + "\n" - docstring += tmpstring - tmpstring2 = "Generated by " + programname + " " + version + " " + datestring - tmpstring2 = "* " + tmpstring2.center(stringlen) + " *\n" - tmpstring3 = "* " + cif2cellstring.center(stringlen) + " *\n" - tmpstring4 = "" - tmpstring4 = "* " + tmpstring4.center(stringlen) + " *\n" - docstring += tmpstring2 + tmpstring3 + tmpstring4 - if ref.database != "": - tmpstring2 = "Data obtained from " + ref.databaseabbr[ref.database] - if ref.databasecode != "" and ref.databasecode is not None: - tmpstring2 += ". Reference number : " + ref.databasecode - tmpstring2 = "* " + tmpstring2.center(stringlen) + " *\n" - docstring += tmpstring2 - tmpstring2 = ref.cpd + " (" + ref.compound + ")" - tmpstring2 = "* " + tmpstring2.center(stringlen) + " *\n" - docstring += tmpstring2 - docstring += "* " + ref.referencestring().center(stringlen) + " *\n" - docstring += tmpstring - return docstring - - ################################################################################################ - # Output cell to new CIF file - if outputprogram == "cif": - f = open(outputfile, "w") - cf = CifFile.CifFile() - cb = CifFile.CifBlock() - if ( - makesupercell - or (reducetoprim and cd.spacegroupsetting != "P") - or options.randomdisp - ): - a = Vector(cd.latticevectors[0].scalmult(cd.lengthscale)) - b = Vector(cd.latticevectors[1].scalmult(cd.lengthscale)) - c = Vector(cd.latticevectors[2].scalmult(cd.lengthscale)) - cb["_cell_length_a"] = a.length() - cb["_cell_length_b"] = b.length() - cb["_cell_length_c"] = c.length() - cb["_cell_angle_alpha"] = ( - acos(b.dot(c) / (b.length() * c.length())) * 180 / pi - ) - cb["_cell_angle_beta"] = ( - acos(a.dot(c) / (a.length() * c.length())) * 180 / pi - ) - cb["_cell_angle_gamma"] = ( - acos(b.dot(a) / (a.length() * b.length())) * 180 / pi - ) - # Supercell may have broken symmetry, so just put P1 - cb["_space_group_IT_number"] = 1 - cb["_space_group_name_H-M_alt"] = "P1" - cb["_space_group_name_Hall"] = "P 1" - else: - # Else pass on original cell parameters and symmetry information - cb["_cell_length_a"] = cd.a - cb["_cell_length_b"] = cd.b - cb["_cell_length_c"] = cd.c - cb["_cell_angle_alpha"] = cd.alpha - cb["_cell_angle_beta"] = cd.beta - cb["_cell_angle_gamma"] = cd.gamma - cb["_space_group_IT_number"] = cd.spacegroupnr - cb["_space_group_name_H-M_alt"] = cd.HMSymbol - cb["_space_group_name_Hall"] = cd.HallSymbol - # Positions - labels = [] - symbols = [] - symmult = [] - fractx = [] - fracty = [] - fractz = [] - occup = [] - i = 0 - for a in cd.atomdata: - if not makesupercell: - i += 1 - for b in a: - if makesupercell: - i += 1 - for k in b.species: - labels.append(k + str(i)) - symbols.append(k) - if makesupercell: - symmult.append("1") - else: - symmult.append(str(len(a))) - fractx.append(("%19.16f" % b.position[0]).strip(" ")) - fracty.append(("%19.16f" % b.position[1]).strip(" ")) - fractz.append(("%19.16f" % b.position[2]).strip(" ")) - occup.append(str(b.species[k])) - # - cb.AddCifItem( - ( - [ - [ - "_atom_site_label", - "_atom_site_type_symbol", - "_atom_site_symmetry_multiplicity", - "_atom_site_fract_x", - "_atom_site_fract_y", - "_atom_site_fract_z", - "_atom_site_occupancy", - ] - ], - [[labels, symbols, symmult, fractx, fracty, fractz, occup]], - ) - ) - # - cf["1-cif2cell"] = cb - f.write(str(cf)) - f.close() - - ################################################################################################ - # Output for ABINIT - if outputprogram == "abinit": - docstring = StandardDocstring() - abinitinput = ABINITFile(cd, docstring) - if options.abinitbraces: - abinitinput.printbraces = True - f = open(outputfile, outmode) - f.write(str(abinitinput)) - f.close() - - ################################################################################################ - # Output for ATAT - if outputprogram == "atat": - docstring = StandardDocstring() - abinitinput = ATATFile(cd, docstring) - f = open(outputfile, outmode) - f.write(str(abinitinput)) - f.close() - - ################################################################################################ - # Output for ASE file (python script) - if outputprogram == "ase": - # The second comment line with info from the CIF file - docstring = StandardDocstring() - # Initialize the ASEFile structure - sysfile = ASEFile(cd, docstring) - f = open(outputfile, outmode) - f.write(str(sysfile)) - f.close() - - ################################################################################################ - # Output for CASTEP - if outputprogram == "castep": - docstring = StandardDocstring() - castepinput = CASTEPFile(cd, docstring) - if options.castepatomicunits: - castepinput.unit = "bohr" - if options.castepcartesian: - castepinput.cartesian = True - if options.vca: - castepinput.vca = True - if options.exportlabels: - castepinput.printlabels = True - f = open(outputfile, outmode) - f.write(str(castepinput)) - f.close() - - ################################################################################################ - # Output to cfg file - if outputprogram == "cfg": - docstring = StandardDocstring() - # Initialize the CFGFile structure - sysfile = CFGFile(cd, docstring) - f = open(outputfile, outmode) - f.write(str(sysfile)) - f.close() - - ################################################################################################ - # Output to coo file - if outputprogram == "coo": - docstring = "Generated by cif2cell " + version - # Initialize the COOFile structure - sysfile = COOFile(cd, docstring) - f = open(outputfile, outmode) - f.write(str(sysfile)) - f.close() - - ################################################################################################ - # Output for CP2k - if outputprogram == "cp2k": - docstring = StandardDocstring() - cp2kinput = CP2KFile(cd, docstring) - f = open(outputfile, outmode) - f.write(str(cp2kinput)) - f.close() - - ################################################################################################ - # Output for CPMD - if outputprogram == "cpmd": - docstring = StandardDocstring() - cpmdinput = CPMDFile(cd, docstring) - f = open(outputfile, outmode) - f.write(str(cpmdinput)) - f.close() - - ################################################################################################ - # Output for Crystal09 - if outputprogram == "crystal09": - # Get documentation string - docstring = StandardDocstring() - # Crystal09 wants conventional cell input, unless specifically asked to for possible - # rhombohedral settings. - if cd.is_spacegroup("rhombohedral") and options.crystal09rhombohedral: - cd.primitive() - else: - cd.conventional() - # Get output file object - crystal09file = Crystal09File( - cd, docstring, rhombohedral=options.crystal09rhombohedral - ) - crystal09file.spacegroupnr = cd.spacegroupnr - # Print to file - f = open(outputfile, outmode) - f.write(str(crystal09file)) - f.close() - - ################################################################################################ - # EMTO PROGRAMS - if ( - outputprogram == "emto" - or outputprogram == "kgrn" - or outputprogram == "kfcd" - or outputprogram == "kstr" - or outputprogram == "bmdl" - or outputprogram == "shape" - ): - # Get job names - if cd.HMSymbol == "": - kstrjobnam = ref.cpd.replace(" ", "").replace("(", "").replace(")", "") - else: - kstrjobnam = cd.HMSymbol.replace("/", "") - kgrnjobnam = ref.cpd.replace(" ", "").replace("(", "").replace(")", "") - # If the jobnames are long or blank, replace by the name of the cif file - if ( - len(kstrjobnam) > 30 - and len(cif_file_name) < len(kstrjobnam) + 4 - or kstrjobnam == "" - ): - kstrjobnam = cif_file_name.replace(".cif", "") - if ( - len(kgrnjobnam) > 30 - and len(cif_file_name) < len(kgrnjobnam) + 4 - or kgrnjobnam == "" - ): - kgrnjobnam = cif_file_name.replace(".cif", "") - # Build docstring - docstring = ref.compound + ", " + ref.referencestring() - # Document details of creation - programdoc = "Generated by " + programname + " " + version + " " + datestring - # Set the lattice number - if cd.crystal_system() == "cubic": - if cd.HMSymbol[0] == "F": - latticenr = 2 - elif cd.HMSymbol[0] == "I": - latticenr = 3 - else: - latticenr = 1 - elif cd.crystal_system() == "hexagonal": - latticenr = 4 - elif cd.crystal_system() == "tetragonal": - if cd.HMSymbol == "I": - latticenr = 6 - else: - latticenr = 5 - elif cd.crystal_system() == "trigonal": - latticenr = 7 - elif cd.crystal_system() == "orthorhombic": - if cd.HMSymbol[0] == "A": - latticenr = 9 - elif cd.HMSymbol[0] == "B": - latticenr = 9 - elif cd.HMSymbol[0] == "C": - latticenr = 9 - elif cd.HMSymbol[0] == "I": - latticenr = 10 - elif cd.HMSymbol[0] == "F": - latticenr = 11 - else: - latticenr = 8 - elif cd.crystal_system() == "monoclinic": - if cd.HMSymbol[0] == "A": - latticenr = 13 - elif cd.HMSymbol[0] == "B": - latticenr = 13 - elif cd.HMSymbol[0] == "C": - latticenr = 13 - else: - latticenr = 12 - else: - # Triclinic and default - latticenr = 14 - - # Output for EMTO slope matrix program kstr - if outputprogram == "kstr" or outputprogram == "emto": - # Create directories - try: - os.mkdir("kstr") - except OSError: - pass - try: - os.mkdir("kstr/smx") - except OSError: - pass - # Initialize BSTRFile - kstrfile = KSTRFile(cd, docstring) - kstrfile.jobnam = kstrjobnam - if options.hardsphereradii: - kstrfile.hardsphere = float(options.hardsphereradii) - kstrfile.latticenr = latticenr - kstrfile.a = cd.a - kstrfile.b = cd.b - kstrfile.c = cd.c - kstrfile.alpha = cd.alpha - kstrfile.beta = cd.beta - kstrfile.gamma = cd.gamma - # Document program - kstrfile.programdoc = programdoc - f = open("kstr/" + kstrjobnam + ".dat", "w") - f.write(str(kstrfile)) - f.close() - if outputprogram == "kstr": - pass - # Output for EMTO Madelung constant program bmdl - if outputprogram == "bmdl" or outputprogram == "emto": - # Create directories - try: - os.mkdir("bmdl") - except OSError: - pass - try: - os.mkdir("bmdl/mdl") - except OSError: - pass - # Initialize BMDLFile - bmdlfile = BMDLFile(cd, docstring) - bmdlfile.jobnam = kstrjobnam - bmdlfile.latticenr = latticenr - bmdlfile.a = cd.a - bmdlfile.b = cd.b - bmdlfile.c = cd.c - bmdlfile.alpha = cd.alpha - bmdlfile.beta = cd.beta - bmdlfile.gamma = cd.gamma - # Document program - bmdlfile.programdoc = programdoc - f = open("bmdl/" + kstrjobnam + ".dat", "w") - f.write(str(bmdlfile)) - f.close() - if outputprogram == "bmdl": - pass - # Output for EMTO shape function program 'shape' - if outputprogram == "shape" or outputprogram == "emto": - # Create directories - try: - os.mkdir("shape") - except OSError: - pass - try: - os.mkdir("shape/shp") - except OSError: - pass - # Initialize ShapeFile - shapefile = ShapeFile(cd, docstring) - shapefile.jobnam = kstrjobnam - # Document program - shapefile.programdoc = programdoc - f = open("shape/" + kstrjobnam + ".dat", "w") - f.write(str(shapefile)) - f.close() - if outputprogram == "shape": - pass - # Output for EMTO main Greens function program 'kgrn' - if outputprogram == "kgrn" or outputprogram == "emto": - # Create directories - try: - os.mkdir("kgrn") - except OSError: - pass - try: - os.mkdir("kgrn/pot") - except OSError: - pass - try: - os.mkdir("kgrn/chd") - except OSError: - pass - # Initialize KGRNFile - kgrnfile = KGRNFile(cd, docstring) - kgrnfile.jobnam = kgrnjobnam - kgrnfile.kstrjobnam = kstrjobnam - kgrnfile.latticenr = latticenr - # Document program - kgrnfile.programdoc = programdoc - f = open("kgrn/" + kgrnjobnam + ".dat", "w") - f.write(str(kgrnfile)) - f.close() - if outputprogram == "kgrn": - pass - # Output for EMTO charge density program 'kfcd' - if outputprogram == "kfcd" or outputprogram == "emto": - # Create directories - try: - os.mkdir("kfcd") - except OSError: - pass - # Initialize KFCDFile - kfcdfile = KFCDFile(cd, docstring) - kfcdfile.jobnam = kgrnjobnam - kfcdfile.kstrjobnam = kstrjobnam - # Document program - kfcdfile.programdoc = programdoc - f = open("kfcd/" + kgrnjobnam + ".dat", "w") - f.write(str(kfcdfile)) - f.close() - if outputprogram == "kfcd": - pass - if outputprogram == "emto": - pass - - ################################################################################################ - # Output for elk - if outputprogram == "elk": - # Get documentation string - docstring = StandardDocstring() - # Get output file object - geometryfile = ElkFile(cd, docstring) - f = open(outputfile, outmode) - f.write(str(geometryfile)) - f.close() - - # Output for exciting - if outputprogram == "exciting": - # Get documentation string - docstring = StandardDocstring() - # Get output file object - excitingfile = ExcitingFile(cd, docstring) - f = open(outputfile, outmode) - f.write(str(excitingfile)) - f.close() - - # Output for spacegroup.in for Elk/Exciting cell utility spacegroup - if outputprogram == "spacegroup": - # Get documentation string - docstring = StandardDocstring() - # Get output file object - spacegroupfile = SpacegroupFile(cd, docstring) - angtobohr = 1e-10 * 4 * pi * 10973731.568527 / 7.2973525376e-3 - spacegroupfile.HermannMauguin = cd.HMSymbol.replace("/", "") - spacegroupfile.a = cd.a * angtobohr - spacegroupfile.b = cd.b * angtobohr - spacegroupfile.c = cd.c * angtobohr - spacegroupfile.alpha = cd.alpha - spacegroupfile.beta = cd.beta - spacegroupfile.gamma = cd.gamma - if options.spacegroupsupercell: - spacegroupfile.supercelldims = safe_matheval(options.spacegroupsupercell) - # Print to file - f = open(outputfile, outmode) - f.write(str(spacegroupfile)) - f.close() - - ################################################################################################ - # Output for Hutsepot - if outputprogram == "hutsepot": - # Get documentation string - docstring = StandardDocstring() - # Get output file object - hutsepotinput = HUTSEPOTFile(cd, docstring) - f = open(outputfile, outmode) - f.write(str(hutsepotinput)) - f.close() - - ################################################################################################ - # Output for FHI-AIMS - if outputprogram == "fhi-aims": - # Get documentation string - docstring = StandardDocstring() - # Get output file object - aimsinput = AIMSFile(cd, docstring) - if options.aimscartesian: - aimsinput.cartesian = True - f = open(outputfile, outmode) - f.write(str(aimsinput)) - f.close() - - ################################################################################################ - # Output for Fleur - if outputprogram == "fleur": - # The first line with info from the CIF file and species order - docstring = ( - "Generated by " - + programname - + " " - + version - + " : " - + ref.cpd - + " (" - + ref.compound - + ")" - + " : " - + ref.referencestring() - ) - fleurinput = FleurFile(cd, docstring) - f = open(outputfile, outmode) - f.write(str(fleurinput)) - f.close() - - ################################################################################################ - # Output for mcsqs - if outputprogram == "mcsqs": - # Get documentation string - docstring = StandardDocstring() - # Get output file object - mcsqsinput = MCSQSFile(cd, docstring) - f = open(outputfile, outmode) - f.write(str(mcsqsinput)) - f.close() - - ################################################################################################ - # Output for MOPAC - if outputprogram == "mopac": - docstring = StandardDocstring() - mopacfirstline = "" - mopacsecondline = "" - mopacthirdline = "" - mopacfreeze = -1 - mopacsetup = setupall - if options.mopacfirstline: - mopacsetup = True - mopacfirstline = options.mopacfirstline - if options.mopacsecondline: - mopacsetup = True - mopacsecondline = options.mopacsecondline - if options.mopacthirdline: - mopacsetup = True - mopacthirdline = options.mopacthirdline - if options.mopacfreeze: - if options.mopacfreeze.upper() == "F": - mopacfreeze = 1 - elif options.mopacfreeze.upper() == "T": - mopacfreeze = 0 - else: - errorfilename.write( - "***Warning: I do not understand. --mopac-freeze-structure takes T (t) or F (f) as inputs.\n" - ) - mopacinput = MOPACFile( - cd, - docstring, - setupall=mopacsetup, - firstline=mopacfirstline, - secondline=mopacsecondline, - thirdline=mopacthirdline, - freeze=mopacfreeze, - ) - f = open(outputfile, outmode) - f.write(str(mopacinput)) - f.close() - - ################################################################################################ - # Output for TB-LMTO program ncol - if outputprogram == "ncol" or outputprogram == "bstr": - # Set up names for files. - if cd.HMSymbol == "": - bstrjobnam = ref.cpd.replace(" ", "").replace("(", "").replace(")", "") - else: - bstrjobnam = cd.HMSymbol.replace("/", "") - jobnam = ref.cpd.replace(" ", "").replace("(", "").replace(")", "") - # If the jobnames are long, replace by the name of the cif file - if len(bstrjobnam) > 30 and len(cif_file_name) < len(bstrjobnam) + 4: - bstrjobnam = cif_file_name.replace(".cif", "") - if len(jobnam) > 10: - if len(cif_file_name) < len(jobnam): - jobnam = cif_file_name.replace(".cif", "") - else: - jobnam = jobnam[0:9] - # Build docstring - docstring = ref.compound + ", " + ref.referencestring() - # Document details of creation - programdoc = "Generated by " + programname + " " + version + " " + datestring - - # Output for TB-LMTO structure constant program bstr - if outputprogram == "bstr" or outputprogram == "ncol": - # Initialize BSTRFile - bstrfile = BSTRFile(cd, docstring) - bstrfile.jobnam = bstrjobnam - bstrfile.a = cd.a - bstrfile.b = cd.b - bstrfile.c = cd.c - # Document program - bstrfile.programdoc = programdoc - f = open(bstrjobnam + ".dat", "w") - f.write(str(bstrfile)) - f.close() - if outputprogram == "bstr": - pass - - if outputprogram == "ncol": - # Initialize ncolfile - ncolfile = OldNCOLFile(cd, docstring) - ncolfile.jobnam = jobnam - ncolfile.bstrjobnam = bstrjobnam - # Document program - ncolfile.programdoc = programdoc - f = open(jobnam + ".dat", "w") - f.write(str(ncolfile)) - f.close() - - ################################################################################################ - # Output for PWSCF (Quantum Espresso) - if outputprogram == "pwscf": - docstring = StandardDocstring() - pwscfinput = PWSCFFile(cd, docstring, kresolution=kresolution) - if options.setupall: - pwscfinput.setupall = True - pwscfinput.kresolution = kresolution - if options.pwscfpseudostring: - pwscfinput.pseudostring = options.pwscfpseudostring - if options.pwscfcart: - pwscfinput.cartesian = True - if options.pwscfcartvects: - pwscfinput.cartesianlatvects = True - if options.pwscfcartpos: - pwscfinput.cartesianpositions = True - if options.pwscfalatunits: - pwscfinput.scaledcartesianpositions = True - if options.pwscfatomicunits: - pwscfinput.unit = "bohr" - f = open(outputfile, outmode) - f.write(str(pwscfinput)) - f.close() - - ################################################################################################ - # Output for VASP - if outputprogram == "vasp": - # The first line with info from the CIF file and species order - docstring = "Generated by " + programname + " " + version - if ( - ref.database != "" - and ref.databasecode != "" - and ref.databasecode is not None - ): - docstring += ( - " from " - + ref.databaseabbr[ref.database] - + " reference: " - + ref.databasecode - ) - docstring += ". " - if len(ref.cpd) > len(ref.compound): - docstring += ref.compound - else: - docstring += ref.cpd - docstring += " : " + ref.referencestring() + "." - # Initialize the POSCARFile structure - poscar = POSCARFile(cd, docstring, vca=options.vca) - # Convert to cartesian coordinates if requested - if options.vaspcartpos: - poscar.printcartpos = True - if options.vaspcartvecs: - poscar.printcartvecs = True - if options.vaspcart: - poscar.printcartpos = True - poscar.printcartvecs = True - if options.vaspformat == "5": - poscar.vasp5format = True - if options.vaspselectivedyn: - poscar.selectivedyn = True - f = open(outputfile, outmode) - f.write(str(poscar)) - f.close() - # Print species order to screen if requested - if options.vaspprintspcs: - infofilename.write(poscar.SpeciesOrder()) - # Set up all files? - if setupall: - # POTCAR - if options.vasppseudolib: - lib = options.vasppseudolib - else: - lib = "" - # Make selection of potcars - if options.vasppppriority: - prioritylist = options.vasppppriority.split(",") - prioritylist.append("") - infofilename.write(prioritylist) - else: - try: - pl = os.environ["VASP_PP_PRIORITY"] - prioritylist = pl.split(",") - prioritylist.append("") - except: - prioritylist = ["_d", "_pv", "_sv", "", "_h", "_s"] - if options.vaspencutfac: - encutfac = float(options.vaspencutfac) - else: - encutfac = 1.5 - potcarfile = POTCARFile( - cd, directory=lib, vca=options.vca, prioritylist=prioritylist - ) - f = open("POTCAR", "w") - f.write(str(potcarfile)) - f.close() - # KPOINTS - docstring = "Generated by cif2cell " + version + "." - kpointsfile = KPOINTSFile(cd, docstring=docstring, kresolution=kresolution) - f = open("KPOINTS", "w") - f.write(str(kpointsfile)) - f.close() - # INCAR - incarfile = INCARFile( - cd, - docstring=docstring, - vca=options.vca, - prioritylist=prioritylist, - encutfac=encutfac, - ) - f = open("INCAR", "w") - f.write(str(incarfile)) - f.close() - - ################################################################################################ - # Output for RSPt - if outputprogram == "rspt": - # Construct documentation string - docstring = StandardDocstring() - # Get file string and print to symt.inp/rspt.inp - if options.newsymt or setupall: - symtfile = SymtFile2(cd, docstring, kresolution=kresolution / angtobohr) - # k-mesh generation etc - if setupall: - symtfile.setupall = True - # spin polarization and relativity - if options.rsptspinpol: - symtfile.spinpol = True - if options.rsptrelativistic: - symtfile.relativistic = True - if options.rsptmtradii: - symtfile.mtradii = int(options.rsptmtradii) - if options.rsptnospin: - symtfile.forcenospin = True - else: - symtfile = SymtFile(cd, docstring) - # spin axis - if options.rsptspinaxis: - symtfile.spinaxis = Vector(safe_matheval(options.rsptspinaxis)) - if options.rsptpasswyckoff: - symtfile.passwyckoff = True - if options.rsptcartlatvects: - symtfile.rsptcartlatvects = True - # - if options.exportlabels: - symtfile.printlabels = True - f = open(outputfile, outmode) - f.write(str(symtfile)) - f.close() - - # Output for RSPt supercell generator cellgen - if outputprogram == "cellgen": - # Construct documentation string - docstring = StandardDocstring() - # Initialize file object - cellgenfile = CellgenFile(cd, docstring) - if options.cellgenrefvec: - cellgenfile.referencevector = safe_matheval(options.cellgenrefvec) - if options.cellgensupercelldims: - tmplist = safe_matheval(options.cellgensupercelldims) - tmpmat = [] - for i in range(3): - tmpmat.append([]) - for j in range(3): - tmpmat[i].append(0) - tmpmat[i][i] = tmplist[i] - cellgenfile.supercellmap = tmpmat - if options.cellgenmap: - tmpmat = safe_matheval(options.cellgenmap) - cellgenfile.supercellmap = tmpmat - # Print to file - f = open(outputfile, outmode) - f.write(str(cellgenfile)) - f.close() - - ################################################################################################ - # Output for Siesta - if outputprogram == "siesta": - docstring = StandardDocstring() - siestainput = SiestaFile(cd, docstring) - f = open(outputfile, outmode) - f.write(str(siestainput)) - f.close() - - ################################################################################################ - # Output for SPC file - if outputprogram == "spc": - # The second comment line with info from the CIF file - docstring = StandardDocstring() - # Initialize the SPCFile structure - sysfile = SPCFile(cd, docstring) - f = open(outputfile, outmode) - f.write(str(sysfile)) - f.close() - - ################################################################################################ - # Output for xband - if outputprogram == "xband" or outputprogram == "sprkkr": - # The first line with info from the CIF file and species order - docstring = "Generated by " + programname + " " + version - if ( - ref.database != "" - and ref.databasecode != "" - and ref.databasecode is not None - ): - docstring += ( - " from " - + ref.databaseabbr[ref.database] - + " reference: " - + ref.databasecode - ) - docstring += ". " - if len(ref.cpd) > len(ref.compound): - docstring += ref.compound - else: - docstring += ref.cpd - docstring += " : " + ref.referencestring() + "." - # Initialize the file - sysfile = XBandSysFile(cd, docstring) - sysfile.filename = outputfile - if options.sprkkrminangmom: - sysfile.minangmom = int(options.sprkkrminangmom) - f = open(outputfile, outmode) - f.write(str(sysfile)) - f.close() - - ################################################################################################ - # Output for xyz file - if outputprogram == "xyz": - # The second comment line with info from the CIF file - docstring = "Generated by " + programname + " " + version - if ( - ref.database != "" - and ref.databasecode != "" - and ref.databasecode is not None - ): - docstring += ( - " from " - + ref.databaseabbr[ref.database] - + " reference: " - + ref.databasecode - ) - docstring += ". " - if len(ref.cpd) > len(ref.compound): - docstring += ref.compound - else: - docstring += ref.cpd - docstring += " : " + ref.referencestring() + "." - # Initialize the XYZFile structure - if options.xyzatomicunits: - cd.newunit("bohr") - sysfile = XYZFile(cd, docstring) - f = open(outputfile, outmode) - f.write(str(sysfile)) - f.close() - - ################################################################################################ - # Output for LAMMPS file - if outputprogram == "lammps": - # The second comment line with info from the CIF file - docstring = "Generated by " + programname + " " + version - if ( - ref.database != "" - and ref.databasecode != "" - and ref.databasecode is not None - ): - docstring += ( - " from " - + ref.databaseabbr[ref.database] - + " reference: " - + ref.databasecode - ) - docstring += ". " - if len(ref.cpd) > len(ref.compound): - docstring += ref.compound - else: - docstring += ref.cpd - docstring += " : " + ref.referencestring() + "." - # Initialize the LAMMPSFile structure - sysfile = LAMMPSFile(cd, docstring) - f = open(outputfile, outmode) - f.write(str(sysfile)) - f.close() - - infofilename.close() - errorfilename.close() - return - - -if __name__ == "__main__": - cif_2_info(sys.argv[1], "test.info", "test.err") diff --git a/cell2mol/classes.py b/cell2mol/classes.py deleted file mode 100644 index 37c8c9e14..000000000 --- a/cell2mol/classes.py +++ /dev/null @@ -1,2943 +0,0 @@ -import numpy as np -import os -from cell2mol.connectivity import get_adjacency_types, get_element_count, labels2electrons, labels2formula, get_adjmatrix, is_haptic_ring -from cell2mol.connectivity import get_metal_idxs, get_non_transition_metal_idxs, split_species, get_radii, split_group, get_alkali_alkaline_earth_metal_idxs -from cell2mol.connectivity import compare_atoms, compare_species, compare_metals, compare_reference_indices, get_adjmatrix_from_cif_bonds -from cell2mol.cell_reconstruction import classify_fragments, fragments_reconstruct -from cell2mol.cell_operations import cart2frac, frac2cart_fromparam - -from cell2mol.charge_assignment import get_protonation_states_specie, get_possible_charge_state, get_metal_poscharges, get_empty_protonation_state -from cell2mol.charge_assignment import prepare_unresolved, prepare_mols, correct_smiles_ligand - -from cell2mol.new_charge_assignment import set_charge_state, prepare_mol, balance_charge, assign_charge_to_specie -from cell2mol.new_charge_assignment import create_bonds_specie, create_metal_ligand_bonds, create_metal_metal_bonds - -from cell2mol.spin import assign_spin_metal, assign_spin_complexes, predict_ox_state -from cell2mol.other import extract_from_list, compute_centroid, get_dist, get_angle -from cell2mol.other import handle_error -from cell2mol.elementdata import ElementData -from cell2mol.read_write import get_moiety_indices_from_labels -from cell2mol.coordination_sphere import coordination_correction_for_haptic, coordination_correction_for_nonhaptic, define_coordination_geometry -elemdatabase = ElementData() -import pickle - -################################## -#### CLASSES FOR CELL2MOL 2 #### -################################## -class specie(object): - def __init__(self, labels: list, coord: list, frac_coord: list=None, radii: list=None) -> None: - - # Sanity Checks - assert len(labels) == len(coord) - if frac_coord is not None: - self.frac_coord = frac_coord - assert len(coord) == len(frac_coord) - - # Optional Information - if radii is not None: self.radii = radii - else: self.radii = get_radii(labels) - - self.type = "specie" - self.version = "2.0" - self.labels = labels - self.coord = coord - self.frac_coord = frac_coord - self.formula = labels2formula(labels) - self.eleccount = labels2electrons(labels) ### Assuming neutral specie (so basically this is the sum of atomic numbers) - self.natoms = len(labels) - self.iscomplex = any((elemdatabase.elementblock[l] == "d") or (elemdatabase.elementblock[l] == "f") for l in self.labels) - self.has_IA_IIA = any((elemdatabase.elementgroup[l]==1 and l != "H" and l != "D") or (elemdatabase.elementgroup[l]==2) for l in self.labels) - self.parents = [] - self.parents_indices = [] - self.cov_factor = 1.3 - self.metal_factor = 1.0 - self.indices = [*range(0,self.natoms,1)] ## Indices might be the atom ordering within a given specie. e.g. 1st, 2nd, 3rd atom of a specie. - - ############ - def add_parent(self, parent: object, indices: list, overwrite: bool=True): - ## associates a parent specie to self. The atom indices of self in parent are given in "indices" - ## if parent of the same subtype already in self.parent then it is overwritten - ## this is to avoid having a substructure (e.g. a ligand) in more than one superstructure (e.g. a molecule) - - # 1st-evaluates parent - append = True - for idx, p in enumerate(self.parents): - if p.subtype == parent.subtype: - if overwrite: - self.parents[idx] = parent - self.parents_indices[idx] = indices - append = False - if append: - self.parents.append(parent) - self.parents_indices.append(indices) - - # 2nd-evaluates parents of parent - if hasattr(parent,"parents"): - for jdx, p2 in enumerate(parent.parents): - append = True - for idx, p in enumerate(self.parents): - if p.subtype == p2.subtype: - if overwrite: - self.parents[idx] = p2 - self.parents_indices[idx] = parent.get_parent_indices(p2.subtype) - append = False - if append: - self.parents.append(p2) - self.parents_indices.append(parent.get_parent_indices(p2.subtype)) - - ############ - def check_parent(self, subtype: str): - ## checks if parent of a given subtype exists - for p in self.parents: - if p.subtype == subtype: return True - return False - - ############ - def get_parent(self, subtype: str): - ## retrieves parent of a given subtype - for p in self.parents: - if p.subtype == subtype: return p - return None - - ############ - def get_parent_indices(self, subtype: str): - ## retrieves parent of a given subtype - for idx, p in enumerate(self.parents): - if p.subtype == subtype: return self.parents_indices[idx] - return None - - ############ - def get_centroid(self): - from cell2mol.other import compute_centroid - self.centroid = compute_centroid(np.array(self.coord)) - if hasattr(self,"frac_coord"): - self.frac_centroid = compute_centroid(np.array(self.frac_coord)) - # If fractional coordinates exists, then also computes their centroid - return self.centroid - - ############ - def set_fractional_coord(self, frac_coord: list, debug: int=0) -> None: - assert len(frac_coord) == len(self.coord) - self.frac_coord = frac_coord - - ############ - # def get_fractional_coord(self, cell_vector=None, debug: int=0) -> None: - # if cell_vector is None: - # if self.check_parent("cell"): - # cell = self.get_parent("cell") - # if hasattr(cell,"cellvec"): cell_vector = cell.cell_vector.copy() - # else: print("SPECIE.GET_FRACTIONAL_COORD: get_fractional coordinates. Missing cell vector. Please provide it"); return None - # if debug > 1: print(f"SPECIE.GET_FRACTIONAL_COORD: Using cell_vector:{cell_vector}") - # self.frac_coord = cart2frac(self.coord, cell_vector) - # return self.frac_coord - - ############ - def get_atomic_numbers(self): - if not hasattr(self,"atoms"): self.set_atoms() - self.atnums = [] - for at in self.atoms: - self.atnums.append(at.atnum) - return self.atnums - - ############ - def set_element_count(self, heavy_only: bool=False): - self.element_count = get_element_count(self.labels, heavy_only=heavy_only) - return self.element_count - - ############ - def set_adj_types(self): - if not hasattr(self,"adjmat"): self.get_adjmatrix() - self.adj_types = get_adjacency_types(self.labels, self.adjmat) - return self.adj_types - - ############ - def set_adjacency_parameters(self, cov_factor: float, metal_factor: float) -> None: - # Stores the covalentradii factor and metal factor that were used to generate the molecule - self.cov_factor = cov_factor - self.metal_factor = metal_factor - - ############ - def reset_charge(self): - if hasattr(self,"totcharge"): delattr(self,"totcharge") - if hasattr(self,"atomic_charges"): delattr(self,"atomic") - if hasattr(self,"smiles"): delattr(self,"smiles") - if hasattr(self,"rdkit_obj"): delattr(self,"rdkit_obj") - if hasattr(self,"poscharges"): delattr(self,"poscharges") - for a in self.atoms: - a.reset_charge() - - ############ - def set_charges(self, totcharge: int=None, atomic_charges: list=None, smiles: str=None, rdkit_obj: object=None) -> None: - ## Sets total charge - if totcharge is not None: self.totcharge = totcharge - elif totcharge is None and atomic_charges is not None: self.totcharge = np.sum(atomic_charges) - elif totcharge is None and atomic_charges is None: self.totcharge = "Unknown" - ## Sets atomic charges - if atomic_charges is not None: - self.atomic_charges = atomic_charges - if not hasattr(self,"atoms"): self.set_atoms() - for idx, a in enumerate(self.atoms): - a.set_charge(self.atomic_charges[idx]) - if smiles is not None: self.smiles = smiles - if rdkit_obj is not None: self.rdkit_obj = rdkit_obj - - ############ - def set_atoms(self, atomlist: list=None, create_adjacencies: bool=False, atom_site_labels: list=None, geom_bond_cif: list=None, debug: int = 0): - debug = 0 - ## If the atom objects already exist, and you want to set them in self from a different specie - if atomlist is not None: - if debug >= 2: print(f"SPECIE.SET_ATOMS: received {atomlist=}") - self.atoms = atomlist.copy() - for idx, at in enumerate(self.atoms): - at.add_parent(self, index=idx) - ## If not, that is, if the atom objects must be created from scratch.... - else: - self.atoms = [] - for idx, l in enumerate(self.labels): - if debug >= 2: print(f"SPECIE.SET_ATOMS: creating atom for label {l}") - ## For each l in labels, create an atom class object. - ismetal = elemdatabase.elementblock[l] == "d" or elemdatabase.elementblock[l] == "f" - # non transition metals - # if len(get_non_transition_metal_idxs([l])) > 0: ismetal = True - if len(get_alkali_alkaline_earth_metal_idxs([l])) > 0: ismetal = True - if ismetal : - if debug >= 2: print(f"SPECIE.SET_ATOMS: {l}") - if debug >= 2: print(f"SPECIE.SET_ATOMS: {ismetal=}") - if self.frac_coord is not None: - if ismetal: newatom = metal(l, self.coord[idx], self.frac_coord[idx], radii=self.radii[idx]) - else: newatom = atom(l, self.coord[idx], self.frac_coord[idx],radii=self.radii[idx]) - else : - if ismetal: newatom = metal(l, self.coord[idx], radii=self.radii[idx]) - else: newatom = atom(l, self.coord[idx], radii=self.radii[idx]) - if debug >= 2: print(f"SPECIE.SET_ATOMS: added atom to specie: {self.formula}") - newatom.add_parent(self, index=idx) - self.atoms.append(newatom) - - if atom_site_labels is not None: - if debug >= 2: print(f"SPECIE.SET_ATOMS: received {atom_site_labels=}") - self.atom_site_labels = atom_site_labels.copy() - for idx, at in enumerate(self.atoms): - at.set_atom_site_label(atom_site_labels[idx]) - - if create_adjacencies: - if not hasattr(self,"adjmat"): self.get_adjmatrix(geom_bond_cif) - if not hasattr(self,"madjmat"): self.get_metal_adjmatrix(geom_bond_cif) - if self.adjmat is not None and self.madjmat is not None: - for idx, at in enumerate(self.atoms): - at.set_adjacencies(self.adjmat[idx],self.madjmat[idx],self.adjnum[idx],self.madjnum[idx]) - - - ####################################################### - def inherit_adjmatrix(self, parent_subtype: str, debug: int=0): - exists = self.check_parent(parent_subtype) - if not exists: - print(f"SPECIE.INHERIT. {parent_subtype=} does not exist") - return None - parent = self.get_parent(parent_subtype) - indices = self.get_parent_indices(parent_subtype) - if not hasattr(parent,"madjnum"): - print(f"SPECIE.INHERIT. {parent_subtype=} does not have madjnum") - return None - # print(f"SPECIE.INHERIT. found self in parent ({parent_subtype}) with {indices=}") - # print(f"SPECIE.INHERIT: parent data:\n{parent.labels=}\n{parent.madjmat=}\n{parent.madjnum=}\n{parent.adjmat=}\n{parent.adjnum=}") - # print(f"SPECIE.INHERIT: {parent.madjmat.shape=} {parent.madjnum.shape=} {parent.adjmat.shape=} {parent.adjnum.shape=}") - self.madjmat = np.stack(extract_from_list(indices, parent.madjmat, dimension=2), axis=0) - self.madjnum = np.stack(extract_from_list(indices, parent.madjnum, dimension=1), axis=0) - self.adjmat = np.stack(extract_from_list(indices, parent.adjmat, dimension=2), axis=0) - self.adjnum = np.stack(extract_from_list(indices, parent.adjnum, dimension=1), axis=0) - # print(f"SPECIE.INHERIT: self data:\n{self.labels=}\n{self.madjmat=}\n{self.madjnum=}\n{self.adjmat=}\n{self.adjnum=}") - # print(f"SPECIE.INHERIT: {self.madjmat.shape=} {self.madjnum.shape=} {self.adjmat.shape=} {self.adjnum.shape=}") - - ############ - def get_adjmatrix(self, geom_bond_cif: list=None, debug: int=0): - refcell = self.get_parent("reference") - if refcell is not None and getattr(refcell, "exist_cif_bond_moiety", False) and geom_bond_cif is not None and hasattr(self, "atom_site_labels"): - print("SPECIE.GET_ADJMATRIX: Based on bond information from CIF") - isgood, adjmat, adjnum = get_adjmatrix_from_cif_bonds (self.labels, self.coord, self.atom_site_labels, geom_bond_cif, metal_only= False) - else: - print("SPECIE.GET_ADJMATRIX: Based on interatomic distances") - isgood, adjmat, adjnum = get_adjmatrix(self.labels, self.coord, self.cov_factor, self.radii) - - if isgood: - self.adjmat = adjmat - self.adjnum = adjnum - else: - self.adjmat = None - self.adjnum = None - return self.adjmat, self.adjnum - - ############ - def get_metal_adjmatrix(self, geom_bond_cif: list=None, debug: int=0): - refcell = self.get_parent("reference") - if refcell is not None and getattr(refcell, "exist_cif_bond_moiety", False) and geom_bond_cif is not None and hasattr(self, "atom_site_labels"): - print("SPECIE.GET_METAL_ADJMATRIX: Based on bond information from CIF") - isgood, madjmat, madjnum = get_adjmatrix_from_cif_bonds (self.labels, self.coord, self.atom_site_labels, geom_bond_cif, metal_only= True) - else : - print("SPECIE.GET_METAL_ADJMATRIX: Based on interatomic distances") - isgood, madjmat, madjnum = get_adjmatrix(self.labels, self.coord, self.cov_factor, self.radii, metal_only=True) - - if isgood: - self.madjmat = madjmat - self.madjnum = madjnum - else: - self.madjmat = None - self.madjnum = None - return self.madjmat, self.madjnum - - ############ - def get_occurrence(self, substructure: object) -> int: - occurrence = 0 - ## Ligands in Complexes or Groups in Ligands - done = False - if hasattr(substructure,"subtype") and hasattr(self,"subtype"): - if substructure.subtype == 'ligand' and self.subtype == 'molecule': - if not hasattr(self,"ligands"): self.split_complex() - if self.ligands is not None: - for l in self.ligands: - issame = compare_species(substructure, l, debug=1) - if issame: occurrence += 1 - done = True - elif substructure.subtype == 'group' and self.subtype == 'ligand': - if not hasattr(self,"ligands"): self.split_complex() - if self.ligands is not None: - for l in self.ligands: - if not hasattr(l,"groups"): self.split_ligand() - for g in l.groups: - issame = compare_species(substructure, g, debug=1) - if issame: occurrence += 1 - done = True - ## Atoms in Species - if not done: - if substructure.type == 'atom' and self.type == 'specie': - if not hasattr(self,"atoms"): self.set_atoms() - for at in self.atoms: - issame = compare_atoms(substructure, at) - if issame: occurrence += 1 - return occurrence - - ############ - def get_protonation_states(self, debug: int=0): - # !!! WARNING. FUNCTION defined at the "specie" level, but will only do something for ligands and organic (iscomplex == False) molecules - if self.subtype == "group": - if not hasattr(self, "denticity"): self.get_denticity() - if not hasattr(self,"is_haptic"): self.get_hapticity() - self.protonation_states = None - elif self.subtype == "ligand" : - # if not hasattr(self,"groups"): self.split_ligand() - if not hasattr(self, "is_haptic"): self.get_hapticity() - if not hasattr(self, "denticity"): self.get_denticity() - if not hasattr(self, "is_nitrosyl"): self.evaluate_as_nitrosyl() - self.protonation_states = get_protonation_states_specie(self, debug=debug) - else: - if not hasattr(self,"is_haptic"): self.get_hapticity() - self.protonation_states = get_protonation_states_specie(self, debug=debug) - return self.protonation_states - - ############ - def get_possible_cs(self, debug: int=0): - ## Arranges a list of possible charge_states associated with this species, - ## which is later managed at the cell level to determine the good one - if self.subtype == "ligand" or (self.subtype == "molecule" and not self.iscomplex and not self.has_IA_IIA): - if not hasattr(self,"protonation_states"): self.get_protonation_states(debug=debug) - self.possible_cs = get_possible_charge_state(self, debug=debug) - return self.possible_cs - - ############ - def print_xyz(self): - print(self.natoms) - print("") - for idx, l in enumerate(self.labels): - print("%s %.6f %.6f %.6f" % (l, self.coord[idx][0], self.coord[idx][1], self.coord[idx][2])) - - ############ - ## This defines the sum operation between two species. To be implemented - def __add__(self, other): - if not isinstance(other, type(self)): return self - return self - - ############ - def __repr__(self, indirect: bool=False): - to_print = "" - if not indirect: to_print += f'------------- Cell2mol SPECIE Object --------------\n' - to_print += f' Version = {self.version}\n' - to_print += f' Type = {self.type}\n' - if hasattr(self,'subtype'): to_print += f' Sub-Type = {self.subtype}\n' - to_print += f' Number of Atoms = {self.natoms}\n' - to_print += f' Formula = {self.formula}\n' - to_print += f' Covalent Radii Factor = {self.cov_factor}\n' - to_print += f' Metal Radii Factor = {self.metal_factor}\n' - if hasattr(self,"adjmat"): to_print += f' Has Adjacency Matrix = YES\n' - else: to_print += f' Has Adjacency Matrix = NO \n' - if hasattr(self,"totcharge"): to_print += f' Total Charge = {self.totcharge}\n' - if hasattr(self,"spin"): to_print += f' Spin = {self.spin}\n' - if hasattr(self,"smiles"): to_print += f' Smiles = {self.smiles}\n' - if hasattr(self,"origin"): to_print += f' Origin = {self.origin}\n' - if not indirect: to_print += '---------------------------------------------------\n' - return to_print - -############### -### MOLECULE ## -############### -class molecule(specie): - def __init__(self, labels: list, coord: list, frac_coord: list=None, radii: list=None) -> None: - self.subtype = "molecule" - if frac_coord is not None: self.frac_coord = frac_coord - specie.__init__(self, labels, coord, frac_coord, radii) - - def __repr__(self): - to_print = "" - to_print += f'------------- Cell2mol MOLECULE Object --------------\n' - to_print += specie.__repr__(self, indirect=True) - if hasattr(self,"ligands"): - if self.ligands is not None: to_print += f' Number of Ligands = {len(self.ligands)}\n' - if hasattr(self,"metals"): - if self.metals is not None: to_print += f' Number of Metals = {len(self.metals)}\n' - to_print += '---------------------------------------------------\n' - return to_print - - ############ - def get_spin(self, debug: int=0): - if self.iscomplex: self.spin = assign_spin_complexes(self) - else : self.spin = 1 - if debug >=1: print(f"GET_SPIN: Spin multiplicity of the complex {self.formula} is assigned as {self.spin}\n") - return self.spin - - ############ - def reset_charge(self): - specie.reset_charge(self) ## First uses the generic specie class function for itself and its atoms - if hasattr(self,"ligands"): ## Second removes for the child classes - for lig in self.ligands: - lig.reset_charge() - if hasattr(self,"metals"): - for met in self.metals: - met.reset_charge() - ############ - def split_IA_IIA(self, debug: int=0): - if not hasattr(self,"atoms"): self.set_atoms() - if not self.has_IA_IIA: self.ligands = None; self.metals = None - else: - refcell = self.get_parent("reference") - geom_bond_cif = getattr(refcell, "geom_bond_cif", None) - - IA_IIA_metal_indices = [] - for idx, l in enumerate(self.labels): - if elemdatabase.elementgroup[l]==1 and l != "H" and l != "D": # Alkali Metals - IA_IIA_metal_indices.append(idx) - elif elemdatabase.elementgroup[l]==2: # Alkaline Earth Metals - IA_IIA_metal_indices.append(idx) - - self.ligands = [] - self.metals = [] - - # Identify Metals and the rest - - if len(IA_IIA_metal_indices) > 0: - print(f"MOLECULE.SPLIT_IA_IIA: Alkali or Alkali earth metals in the molecule {self.formula}") - print(f"MOLECULE.SPLIT_IA_IIA: {[self.labels[idx] for idx in IA_IIA_metal_indices]}") - - rest_idx = list(idx for idx in self.indices if idx not in IA_IIA_metal_indices) - if debug > 0 : print(f"MOLECULE.SPLIT_IA_IIA: labels={self.labels}") - if debug > 0 : print(f"MOLECULE.SPLIT_IA_IIA: metal_idx={IA_IIA_metal_indices}") - if debug > 0 : print(f"MOLECULE.SPLIT_IA_IIA: rest_idx={rest_idx}") - - # Split the "rest" to obtain the ligands - rest_labels = extract_from_list(rest_idx, self.labels, dimension=1) - rest_coord = extract_from_list(rest_idx, self.coord, dimension=1) - if self.frac_coord is not None: - rest_frac = extract_from_list(rest_idx, self.frac_coord, dimension=1) - rest_indices = extract_from_list(rest_idx, self.indices, dimension=1) - rest_radii = extract_from_list(rest_idx, self.radii, dimension=1) - rest_atoms = extract_from_list(rest_idx, self.atoms, dimension=1) - rest_atom_site_labels = None - if hasattr(self, "atom_site_labels") and self.atom_site_labels is not None: - rest_atom_site_labels = extract_from_list(rest_idx, self.atom_site_labels, dimension=1) - - if debug >= 2: - print(f"MOLECULE.SPLIT_IA_IIA: rest labels: {rest_labels}") - print(f"MOLECULE.SPLIT_IA_IIA: rest indices: {rest_indices}") - print(f"MOLECULE.SPLIT_IA_IIA: rest radii: {rest_radii}") - - if debug > 0: print(f"MOLECULE.SPLIT_IA_IIA: splitting species with {len(rest_labels)} atoms in block") - if len(rest_labels) == 0: - if debug > 0: print(f"MOLECULE.SPLIT_IA_IIA: No ligands found in the complex {self.formula}") - if debug > 0: print(f"MOLECULE.SPLIT_IA_IIA: Returning empty ligand list {self.ligands=}") - for m in IA_IIA_metal_indices: - self.metals.append(self.atoms[m]) - else : - if refcell is not None and getattr(refcell, "exist_cif_bond_moiety", False) and geom_bond_cif is not None: - blocklist = split_species(rest_labels, - rest_coord, - radii=rest_radii, - atom_site_labels=rest_atom_site_labels, - geom_bond_cif=geom_bond_cif, - cov_factor=self.cov_factor, debug=debug) - else: - blocklist = split_species(rest_labels, rest_coord, radii=rest_radii, debug=debug) - - print(f"SPLIT COMPLEX: received {len(blocklist)} blocks") - if debug > 1: - print(f"SPLIT COMPLEX: received {blocklist=}") - - ## Arranges Ligands - for b in blocklist: - if debug > 0: print(f"PREPARING BLOCK: {b}") - lig_indices = extract_from_list(b, rest_indices, dimension=1) - lig_labels = extract_from_list(b, rest_labels, dimension=1) - lig_coord = extract_from_list(b, rest_coord, dimension=1) - if self.frac_coord is not None: - lig_frac_coord = extract_from_list(b, rest_frac, dimension=1) - lig_radii = extract_from_list(b, rest_radii, dimension=1) - lig_atoms = extract_from_list(b, rest_atoms, dimension=1) - lig_atom_site_labels = None - if hasattr(self, "atom_site_labels") and self.atom_site_labels is not None: - lig_atom_site_labels = extract_from_list(b, rest_atom_site_labels, dimension=1) - - if debug > 0: print(f"CREATING LIGAND: {labels2formula(lig_labels)}") - - if self.frac_coord is not None: - newligand = ligand(lig_labels, lig_coord, lig_frac_coord, radii=lig_radii) - else : - newligand = ligand(lig_labels, lig_coord, radii=lig_radii) - - newligand.origin = "split_IA_IIA" - newligand.add_parent(self, indices=lig_indices) - - if self.check_parent("unitcell"): - cell_indices = [a.get_parent_index("unitcell") for a in lig_atoms] - newligand.add_parent(self.get_parent("unitcell"), indices=cell_indices) - - if self.check_parent("reference"): - ref_indices = [a.get_parent_index("reference") for a in lig_atoms] - newligand.add_parent(self.get_parent("reference"), indices=ref_indices) - - - newligand.set_adjacency_parameters(self.cov_factor, self.metal_factor) - - newligand.set_atoms(atomlist=lig_atoms, - atom_site_labels=lig_atom_site_labels, - geom_bond_cif=geom_bond_cif) - newligand.inherit_adjmatrix("molecule") - self.ligands.append(newligand) - - ## Arranges Metals - for m in IA_IIA_metal_indices: - self.metals.append(self.atoms[m]) - - return self.ligands, self.metals - - ############ - def split_complex(self, debug: int=0): - if not hasattr(self,"atoms"): self.set_atoms() - if not self.iscomplex: self.ligands = None; self.metals = None - else: - refcell = self.get_parent("reference") - geom_bond_cif = getattr(refcell, "geom_bond_cif", None) - - self.ligands = [] - self.metals = [] - # Identify Metals and the rest - metal_idx = list([self.indices[idx] for idx in get_metal_idxs(self.labels, debug=debug)]) - ia_iia_metal_idx = list([self.indices[idx] for idx in get_alkali_alkaline_earth_metal_idxs(self.labels, debug=debug)]) - - non_transition_metals_idx = list([self.indices[idx] for idx in get_non_transition_metal_idxs(self.labels, debug=debug)]) - if len(non_transition_metals_idx) > 0: - print(f"MOLECULE.SPLIT COMPLEX: Found non-transition metals in the molecule {self.formula}") - print(f"MOLECULE.SPLIT COMPLEX: Alkali and Alkaline earth metals {[self.labels[idx] for idx in ia_iia_metal_idx]}") - print(f"MOLECULE.SPLIT COMPLEX: Non-transition metals found: {[self.labels[idx] for idx in non_transition_metals_idx]}") - # metal_idx.extend(non_transition_metals_idx) - metal_idx.extend(ia_iia_metal_idx) - rest_idx = list(idx for idx in self.indices if idx not in metal_idx) - if debug > 0 : print(f"MOLECULE.SPLIT COMPLEX: labels={self.labels}") - if debug > 0 : print(f"MOLECULE.SPLIT COMPLEX: metal_idx={metal_idx}") - if debug > 0 : print(f"MOLECULE.SPLIT COMPLEX: rest_idx={rest_idx}") - - # Split the "rest" to obtain the ligands - rest_labels = extract_from_list(rest_idx, self.labels, dimension=1) - rest_coord = extract_from_list(rest_idx, self.coord, dimension=1) - rest_indices = extract_from_list(rest_idx, self.indices, dimension=1) - rest_radii = extract_from_list(rest_idx, self.radii, dimension=1) - rest_atoms = extract_from_list(rest_idx, self.atoms, dimension=1) - - if self.frac_coord is not None: - rest_frac = extract_from_list(rest_idx, self.frac_coord, dimension=1) - - rest_atom_site_labels = None - if hasattr(self, "atom_site_labels") and self.atom_site_labels is not None: - rest_atom_site_labels = extract_from_list(rest_idx, self.atom_site_labels, dimension=1) - - if debug >= 2: - print(f"SPLIT COMPLEX: rest labels: {rest_labels}") - print(f"SPLIT COMPLEX: rest indices: {rest_indices}") - print(f"SPLIT COMPLEX: rest radii: {rest_radii}") - - if debug > 0: print(f"SPLIT COMPLEX: splitting species with {len(rest_labels)} atoms in block") - if len(rest_labels) == 0: - if debug > 0: print(f"SPLIT COMPLEX: No ligands found in the complex {self.formula}") - if debug > 0: print(f"SPLIT COMPLEX: Returning empty ligand list {self.ligands=}") - for m in metal_idx: - self.metals.append(self.atoms[m]) - else : - if refcell is not None and getattr(refcell, "exist_cif_bond_moiety", False) and geom_bond_cif is not None: - blocklist = split_species(rest_labels, - rest_coord, - radii=rest_radii, - atom_site_labels=rest_atom_site_labels, - geom_bond_cif=geom_bond_cif, - cov_factor=self.cov_factor, debug=debug) - else: - blocklist = split_species(rest_labels, rest_coord, radii=rest_radii, debug=debug) - - # if debug > 0: - print(f"SPLIT COMPLEX: received {len(blocklist)} blocks {blocklist=}") - - ## Arranges Ligands - for b in blocklist: - if debug > 0: print(f"PREPARING BLOCK: {b}") - lig_indices = extract_from_list(b, rest_indices, dimension=1) - lig_labels = extract_from_list(b, rest_labels, dimension=1) - lig_coord = extract_from_list(b, rest_coord, dimension=1) - lig_radii = extract_from_list(b, rest_radii, dimension=1) - lig_atoms = extract_from_list(b, rest_atoms, dimension=1) - if self.frac_coord is not None: - lig_frac_coord = extract_from_list(b, rest_frac, dimension=1) - lig_atom_site_labels = None - if hasattr(self, "atom_site_labels") and self.atom_site_labels is not None: - lig_atom_site_labels = extract_from_list(b, rest_atom_site_labels, dimension=1) - - if debug > 0: print(f"CREATING LIGAND: {labels2formula(lig_labels)}") - # Create Ligand Object - if self.frac_coord is not None: - newligand = ligand(lig_labels, lig_coord, lig_frac_coord, radii=lig_radii) - else : - newligand = ligand(lig_labels, lig_coord, radii=lig_radii) - - # For debugging - newligand.origin = "split_complex" - # Define the molecule as parent of the ligand. Bottom-Up hierarchy - newligand.add_parent(self, indices=lig_indices) - - if self.check_parent("unitcell"): - cell_indices = [a.get_parent_index("unitcell") for a in lig_atoms] - newligand.add_parent(self.get_parent("unitcell"), indices=cell_indices) - - if self.check_parent("reference"): - ref_indices = [a.get_parent_index("reference") for a in lig_atoms] - newligand.add_parent(self.get_parent("reference"), indices=ref_indices) - - # Update the ligand with the covalent and metal factors - newligand.set_adjacency_parameters(self.cov_factor, self.metal_factor) - # Pass the molecule atoms to the ligand - newligand.set_atoms(atomlist=lig_atoms, - atom_site_labels=lig_atom_site_labels, - geom_bond_cif=geom_bond_cif) - # Inherit the adjacencies from molecule - newligand.inherit_adjmatrix("molecule") - # Add ligand to the list. Top-Down hierarchy - # newligand.evaluate_as_nitrosyl() - self.ligands.append(newligand) - - ## Arranges Metals - for m in metal_idx: - ## We were creating the metal again, but it is already in the list of molecule.atoms - # newmetal = metal(self.labels[m], self.coord[m], self.frac_coord[m], self.radii[m]) - # newmetal.add_parent(self, index=self.indices[m]) - # self.metals.append(newmetal) - self.metals.append(self.atoms[m]) - return self.ligands, self.metals - - ####################################################### - def get_hapticity(self, debug: int=0): - if not hasattr(self,"ligands"): self.split_complex(debug=debug) - self.is_haptic = False - self.haptic_type = [] - if self.iscomplex: - for lig in self.ligands: - if not hasattr(lig,"is_haptic"): lig.get_hapticity(debug=debug) - if lig.is_haptic: self.is_haptic = True - for entry in lig.haptic_type: - if entry not in self.haptic_type: self.haptic_type.append(entry) - return self.haptic_type - ####################################################### - def save(self, path): - print(f"SAVING cell2mol CELL object to {path}") - with open(path, "wb") as fil: - pickle.dump(self,fil) - ####################################################### - def get_unique_species(self, debug: int = 0): - if debug >= 0: - print(f"Getting unique species in molecule: {self.formula}") - - self.unique_species = [] - self.unique_indices = [] - self.species_list = [] - - typelist_mols = [] - typelist_ligs = [] - typelist_mets = [] - - specs_found = -1 - - # Case 1: simple molecule (not complex, not IA/IIA) - if not self.iscomplex and not self.has_IA_IIA: - found = False - for ldx, typ in enumerate(typelist_mols): - issame = compare_species(self, typ[0], debug=0) - if issame: - found = True - kdx = typ[1] - if debug >= 2: - print(f"Molecule is the same as type {ldx}") - if not found: - specs_found += 1 - kdx = specs_found - typelist_mols.append([self, kdx]) - self.unique_species.append(self) - if debug >= 2: - print(f"New molecule found: formula={self.formula}, added at position {kdx}") - self.unique_indices.append(kdx) - self.unique_index = kdx - self.species_list.append(self) - - else: - # Ensure ligands and metals are available - if not hasattr(self, "ligands"): - if self.iscomplex: - self.split_complex(debug=debug) - elif self.has_IA_IIA: - self.split_IA_IIA(debug=debug) - - # Case 2: ligands - for jdx, lig in enumerate(self.ligands): - found = False - for ldx, typ in enumerate(typelist_ligs): - if not hasattr(lig, "is_nitrosyl"): - lig.evaluate_as_nitrosyl() - if not hasattr(typ[0], "is_nitrosyl"): - typ[0].evaluate_as_nitrosyl() - - if lig.is_nitrosyl and typ[0].is_nitrosyl: - issame = lig.NO_type == typ[0].NO_type - else: - issame = compare_species(lig, typ[0], debug=0) - - if issame: - found = True - kdx = typ[1] - if debug >= 2: - print(f"Ligand {jdx} is the same as {ldx} in typelist") - - if not found: - specs_found += 1 - kdx = specs_found - typelist_ligs.append([lig, kdx]) - self.unique_species.append(lig) - if debug >= 2: - print(f"New ligand found: {lig.formula}, added at position {kdx}") - - self.unique_indices.append(kdx) - lig.unique_index = kdx - self.species_list.append(lig) - - # Case 3: metals - for jdx, met in enumerate(self.metals): - found = False - for ldx, typ in enumerate(typelist_mets): - issame = compare_metals(met, typ[0], debug=0) - if issame: - found = True - kdx = typ[1] - if debug >= 2: - print(f"Metal {jdx} is the same as {ldx} in typelist") - - if not found: - specs_found += 1 - kdx = specs_found - typelist_mets.append([met, kdx]) - self.unique_species.append(met) - if debug >= 2: - print(f"New metal center found: label={met.label}, added at position {kdx}") - - self.unique_indices.append(kdx) - met.unique_index = kdx - self.species_list.append(met) - - return self.unique_species - ####################################################### - def get_selected_cs(self, debug: int=0): - if not hasattr(self, "unique_species"): self.get_unique_species(debug=debug) - - self.selected_cs = [] - for unique_specie in self.unique_species: - if debug >= 0 : print("Get possible charge states for unique specie", unique_specie.formula) - tmp = unique_specie.get_possible_cs(debug=debug) - if tmp is None: - self.selected_cs.append(None) - elif unique_specie.subtype != "metal": - self.selected_cs.append(list([cs.corr_total_charge for cs in unique_specie.possible_cs])) - else : - self.selected_cs.append(unique_specie.possible_cs) - - for specie in self.species_list: - print("Get possible charge states for species list", specie.formula) - tmp = specie.get_possible_cs(debug=debug) - if tmp is None: - self.selected_cs.append(None) - elif specie.subtype != "metal": - self.selected_cs.append(list([cs.corr_total_charge for cs in specie.possible_cs])) - else : - self.selected_cs.append(specie.possible_cs) - - if None in self.selected_cs: - self.error_get_poscharges = True - else : - self.error_get_poscharges = False - ####################################################### - def balance_charges_for_molecules(self, input_charge: int=None, debug: int=0): - if not hasattr(self, "unique_species"): self.get_unique_species() - if not hasattr(self, "selected_cs"): self.get_selected_cs() - - if None in self.selected_cs: - self.error_get_poscharges = True - else: - self.error_get_poscharges = False - - unique_indices = [specie.unique_index for specie in self.species_list] - - final_charge_distribution, final_charges = balance_charge(unique_indices, self.unique_species, charges_sum=input_charge, debug=debug,) - print(f"{len(final_charge_distribution)=} {final_charge_distribution=}") - # Handle multiple or no charge distributions - dist_count = len(final_charge_distribution) - self.error_multiple_distrib = dist_count > 1 - self.error_empty_distrib = dist_count == 0 - - if dist_count != 1: - # Attempt to balance charges again with more specific conditions - if self.error_multiple_distrib : - print("More than one possible distribution found.") - second_final_charge_distribution, second_final_charges = balance_charge( - unique_indices, - self.unique_species, - input_charge=input_charge, - aromatic=True, - debug=debug, - ) - elif self.error_empty_distrib : - print("No valid distribution found.") - second_final_charge_distribution, second_final_charges = balance_charge( - unique_indices, - self.unique_species, - input_charge=input_charge, - rare=True, - debug=debug, - ) - second_dist_count = len(second_final_charge_distribution) - self.error_multiple_distrib = second_dist_count > 1 - self.error_empty_distrib = second_dist_count == 0 - - if second_dist_count == 1: - final_charge_distribution = second_final_charge_distribution - final_charges = second_final_charges - print("Using the second distribution found.") - - # If any error was flagged, report failure - if any([ - self.error_get_poscharges, - self.error_multiple_distrib, - self.error_empty_distrib, - ]): - print("Charge Assignment Failed.") - return - - # Assign charges to unique species in the molecules - for specie, charge in zip(self.unique_species, final_charges[0]): - assign_charge_to_specie(specie, charge, debug=debug) - for refspecie in self.species_list: - if specie.unique_index == refspecie.unique_index: - assign_charge_to_specie(refspecie, charge, debug=debug) - - ####################################################### - def assign_charges_for_molecule(self, debug: int=0): - print(f"ASSIGN_CHARGES_FOR_MOLECULE {self.formula}") - - for specie in self.unique_species: - if self.iscomplex or self.has_IA_IIA: - for jdx, lig in enumerate(self.ligands): - print(lig.unique_index) - print(specie.unique_index) - if lig.unique_index == specie.unique_index: - set_charge_state (specie, lig, mode=1, debug=debug) - for kdx, met in enumerate(self.metals): - if met.unique_index == specie.unique_index: - met.set_charge(specie.charge) - else: - if self.unique_index == specie.unique_index: - set_charge_state (specie, self, mode=1, debug=debug) - if self.iscomplex or self.has_IA_IIA: - prepare_mol(self) - print("Complex", self.formula, self.totcharge) - for jdx, lig in enumerate(self.ligands): - print(" Ligand", jdx, lig.formula, lig.totcharge, lig.smiles) - for kdx, met in enumerate(self.metals): - print(" Metal", kdx, met.formula, met.charge) - else: - print("Non-Complex", self.formula, self.totcharge, self.smiles) - ################# - def create_bonds (self, debug: int=0): - - if not self.iscomplex and not self.has_IA_IIA: - result = create_bonds_specie(self, debug=debug) ### Creates bonds between molecule.atoms using the molecule.rdkit_object - if result == False: - if debug >= 1: print(f"MOLECULE.CREATE_BONDS: error creating bonds for molecule {self.formula}") - self.error_create_bonds = True - return # Exit the function entirely if creating bonds fails for a non-complex molecule - else : - if debug >= 1: print(f"MOLECULE.CREATE_BONDS: Bonds created for molecule {self.formula}") - - # Second part - if self.iscomplex or self.has_IA_IIA: - for lig in self.ligands: - result = create_bonds_specie(lig, debug=debug) ### Creates bonds between ligand.atoms, which also belong to molecule.atoms, using the ligand.rdkit_object - if result == False: - if debug >= 1: print(f"MOLECULE.CREATE_BONDS: error creating bonds for ligand {lig.formula}") - self.error_create_bonds = True - return # Exit the function entirely if creating bonds fails for any ligand - - else : - if debug >= 1: print(f"MOLECULE.CREATE_BONDS: Bonds created for molecule {lig.formula}") - - if self.iscomplex or self.has_IA_IIA: - self.smiles_with_H = [lig.smiles for lig in self.ligands] - self.smiles = [] - fix_zwitterions_ligands = [] - # Fourth part : correction smiles of ligands - for lig in self.ligands: - print(f"MOLECULE.CREATE_BONDS: Correcting Smiles for ligand {lig.formula}") - result, fix_zwitterions = correct_smiles_ligand(lig, debug=debug) - if result == False: - if debug >= 1: print(f"MOLECULE.CREATE_BONDS: error correcting smiles for ligand {lig.formula}") - self.error_create_bonds = True - return # Exit the function entirely - else : - if debug >= 1: print(f"MOLECULE.CREATE_BONDS: Smiles corrected for ligand {lig.formula}") - if fix_zwitterions : - fix_zwitterions_ligands.append(lig) - else: - self.smiles.append(lig.smiles) - - if debug >= 1:print(f"MOLECULE.CREATE_BONDS: {len(fix_zwitterions_ligands)} zwitterion ligands found in the complex") - for lig in fix_zwitterions_ligands: - for atom in lig.atoms: - atom.bonds = [] - if debug >= 1: print(f"MOLECULE.CREATE_BONDS: Re-running create_bonds_specie for ligand {lig.formula} due to zwitterion correction.") - result = create_bonds_specie(lig, debug=debug) - if result == False: - if debug >= 1: print(f"MOLECULE.CREATE_BONDS: error re-creating bonds for ligand {lig.formula}") - self.error_create_bonds = True - return - else : - if debug >= 1: print(f"MOLECULE.CREATE_BONDS: Bonds re-created for ligand {lig.formula} after zwitterion correction.") - self.smiles.append(lig.smiles) - - # Third part : adds metal-ligand bonds, metal-metal bonds, with a zero order - if self.iscomplex or self.has_IA_IIA: - create_metal_ligand_bonds(self, debug=debug) - create_metal_metal_bonds(self, debug=debug) - - self.error_create_bonds = False - -############### -### LIGAND #### -############### -class ligand(specie): - def __init__(self, labels: list, coord: list, frac_coord: list=None, radii: list=None) -> None: - self.subtype = "ligand" - if frac_coord is not None: self.frac_coord = frac_coord - specie.__init__(self, labels, coord, frac_coord, radii) - #self.evaluate_as_nitrosyl() ### move to the split_complexes function - - ####################################################### - def __repr__(self): - to_print = "" - to_print += f'------------- Cell2mol LIGAND Object --------------\n' - to_print += specie.__repr__(self, indirect=True) - if hasattr(self,"groups"): to_print += f' Number of Groups = {len(self.groups)}\n' - to_print += '---------------------------------------------------\n' - return to_print - - ####################################################### - def get_connected_metals(self, debug: int=0): - - self.metals = [] - refcell = self.get_parent("reference") - geom_bond_cif = getattr(refcell, "geom_bond_cif", None) - mol = self.get_parent("molecule") - - if refcell is not None and getattr(refcell, "exist_cif_bond_moiety", False): - for met in mol.metals: - tmplabels = self.labels.copy() - tmpcoord = self.coord.copy() - atom_site_labels = [atom.atom_site_label for atom in self.atoms] - tmplabels.append(met.label) - tmpcoord.append(met.coord) - atom_site_labels.append(met.atom_site_label) - isgood, tmpadjmat, tmpadjnum = get_adjmatrix_from_cif_bonds(tmplabels, tmpcoord, atom_site_labels, geom_bond_cif, metal_only=True) - if isgood and any(tmpadjnum) > 0: - self.metals.append(met) - if debug >= 0: print(f"LIGAND.Get_connected_metals: {self.formula} is connected to {met.label}") - else: - for met in mol.metals: - tmplabels = self.labels.copy() - tmpcoord = self.coord.copy() - tmplabels.append(met.label) - tmpcoord.append(met.coord) - isgood, tmpadjmat, tmpadjnum = get_adjmatrix(tmplabels, tmpcoord, metal_only=True) - if isgood and any(tmpadjnum) > 0: self.metals.append(met) - - return self.metals - - ####################################################### - def evaluate_as_nitrosyl(self, debug: int=0): - self.is_nitrosyl = False - if self.natoms == 2 and "N" in self.labels and "O" in self.labels: - self.is_nitrosyl = True - self.get_nitrosyl_geom(debug=debug) - return self.is_nitrosyl - - ####################################################### - def get_nitrosyl_geom(self: object, thres: float=160, debug: int=0) -> str: - # Function that determines whether the M-N-O angle of a Nitrosyl "ligand" is "Bent" or "Linear" - # Each case is treated differently - #:return NO_type: "Linear" or "Bent" - if not hasattr(self,"atoms"): self.set_atoms() - if not hasattr(self,"metals"): self.get_connected_metals() - - for idx, a in enumerate(self.atoms): - if a.label == "N": central = a.coord.copy() - if a.label == "O": extreme = a.coord.copy() - - dist = [] - for idx, met in enumerate(self.metals): - metal = np.array(met.coord) - dist.append(np.linalg.norm(central - metal)) - tgt = np.argmin(dist) - metal = self.metals[tgt].coord.copy() - if debug >= 2: print("LIGAND.GET_NITRO_GEOM: coords:", central, extreme, metal) - - vector1 = np.subtract(np.array(central), np.array(extreme)) - vector2 = np.subtract(np.array(central), np.array(metal)) - if debug >= 2: print("LIGAND.GET_NITRO_GEOM: NITRO Vectors:", vector1, vector2) - - angle = get_angle(vector1, vector2) - if debug >= 2: print("NITRO ANGLE:", angle, np.degrees(angle)) - - if np.degrees(angle) > float(thres): self.NO_type = "Linear" - else: self.NO_type = "Bent" - - return self.NO_type - - ####################################################### - def get_connected_idx(self, debug: int=0): - ## Remember madjmat should not be computed at the ligand level. Since the metal is not there. - ## Now we operate at the molecular level. We get the parent molecule, and the indices of the ligand atoms in the molecule - self.connected_idx = [] - if not hasattr(self,"madjnum"): self.inherit_adjmatrix("molecule") - if debug > 2: print(f"LIGAND.GET_CONNECTED_IDX: {self.formula} {self.madjmat=} {self.madjnum=}") - for idx, con in enumerate(self.madjnum): - if con > 0: self.connected_idx.append(idx) - return self.connected_idx - - ####################################################### - def get_connected_atoms(self, debug: int=0): - if not hasattr(self,"atoms"): self.set_atoms() - if not hasattr(self,"connected_idx"): self.get_connected_idx() - self.connected_atoms = [] - for idx, at in enumerate(self.atoms): - if idx in self.connected_idx and at.mconnec > 0: - self.connected_atoms.append(at) - elif idx in self.connected_idx and at.mconnec == 0: - print("WARNING: Atom appears in connected_idx, but has mconnec=0") - return self.connected_atoms - - ####################################################### - def check_coordination(self, debug: int=0): - if not hasattr(self,"groups"): self.split_ligand(debug=debug) - for g in self.groups: - if not hasattr(g,"checked_coordination"): g.check_coordination(debug=debug) - - ####################################################### - def get_denticity(self, debug: int=0): - if not hasattr(self,"groups"): self.split_ligand(debug=debug) - if debug > 1: print(f"LIGAND.Get_denticity: checking connectivity of ligand {self.formula}") - if debug > 1: print(f"LIGAND.Get_denticity: initial connectivity is {len(self.connected_idx)}") - self.denticity = 0 - for g in self.groups: - #if debug > 0: print(f"LIGAND.Get_denticity: checking denticity of group \n{g}\n{g.madjnum=}\n{g.madjmat=}") - self.denticity += g.get_denticity(debug=debug) ## A check is also performed at the group level - if debug > 0: print(f"LIGAND.Get_denticity: final connectivity of ligand {self.formula} is {self.denticity}") - return self.denticity - - ####################################################### - def split_ligand(self, debug: int=0): - def is_single_sublist(intermediate_list): - return ( - isinstance(intermediate_list, list) and - len(intermediate_list) == 1 and - isinstance(intermediate_list[0], list) - ) - if hasattr(self,"cov_factor"): cov_factor=self.cov_factor - - refcell = self.get_parent("reference") - geom_bond_cif = getattr(refcell, "geom_bond_cif", None) - - if debug > 0: print(f"\nLIGAND.SPLIT_LIGAND: splitting {self.formula} into groups") - - # Split the "ligand to obtain the groups - self.groups = [] - - # Identify Connected and Unconnected atoms (to the metal) - if not hasattr(self,"connected_idx"): self.get_connected_idx(debug=debug) - connected_idx = self.connected_idx - - if debug >= 2: - print(f"\tLIGAND.SPLIT_LIGAND: {self.indices=}") - print(f"\tLIGAND.SPLIT_LIGAND: {connected_idx=}") - conn_labels = extract_from_list(connected_idx, self.labels, dimension=1) - conn_coord = extract_from_list(connected_idx, self.coord, dimension=1) - if self.frac_coord is not None: - conn_frac_coord = extract_from_list(connected_idx, self.frac_coord, dimension=1) - conn_radii = extract_from_list(connected_idx, self.radii, dimension=1) - conn_atoms = extract_from_list(connected_idx, self.atoms, dimension=1) - conn_atom_site_labels = None - if hasattr(self, "atom_site_labels") and self.atom_site_labels is not None: - conn_atom_site_labels = extract_from_list(connected_idx, self.atom_site_labels, dimension=1) - if debug >= 2: print(f"\tLIGAND.SPLIT_LIGAND: {conn_labels=}") - if debug >= 2: print(f"\tLIGAND.SPLIT_LIGAND: {conn_atom_site_labels=}") - - if refcell is not None and getattr(refcell, "exist_cif_bond_moiety", False) and geom_bond_cif is not None: - blocklist = split_species(conn_labels, - conn_coord, - radii=conn_radii, - atom_site_labels=conn_atom_site_labels, - geom_bond_cif=geom_bond_cif, - cov_factor=self.cov_factor, debug=debug) - else: - blocklist = split_species(conn_labels, conn_coord, radii=conn_radii, debug=debug) - - if debug >= 2: print(f"\tLIGAND.SPLIT_LIGAND: {blocklist=}") - ## Arranges Groups - for b in blocklist: - if debug >= 2 : print(f"\tLIGAND.SPLIT_LIGAND: block={b}") - gr_indices = extract_from_list(b, connected_idx, dimension=1, debug=debug) - if debug > 1: print(f"\tLIGAND.SPLIT_LIGAND: {gr_indices=}") - gr_labels = extract_from_list(b, conn_labels, dimension=1, debug=debug) - gr_coord = extract_from_list(b, conn_coord, dimension=1) - if self.frac_coord is not None: - gr_frac_coord = extract_from_list(b, conn_frac_coord, dimension=1) - gr_radii = extract_from_list(b, conn_radii, dimension=1) - gr_atoms = extract_from_list(b, conn_atoms, dimension=1) - gr_atom_site_labels = None - if hasattr(self, "atom_site_labels") and self.atom_site_labels is not None: - gr_atom_site_labels = extract_from_list(b, conn_atom_site_labels, dimension=1) - # Create Group Object - if self.frac_coord is not None: - newgroup = group(gr_labels, gr_coord, gr_frac_coord, radii=gr_radii) - else: - newgroup = group(gr_labels, gr_coord, radii=gr_radii) - - # For debugging - newgroup.origin = "split_ligand" - # Define the ligand as parent of the group. Bottom-Up hierarchy - newgroup.add_parent(self, indices=gr_indices) - # Pass the ligand atoms to the groud - newgroup.set_atoms(atomlist=gr_atoms, - atom_site_labels=gr_atom_site_labels, - geom_bond_cif=geom_bond_cif) - # Inherit the adjacencies from molecule - newgroup.inherit_adjmatrix("ligand") - # Associate the Groups with the Metals - newgroup.get_connected_metals(debug=debug) - newgroup.get_closest_metal(debug=debug) - newgroup.get_hapticity(debug=debug) - # if refcell.exist_cif_bond_moiety: - # print(f"\tSPLIT_LIGAND: skipping check_coordination for group {newgroup.formula} because it is based on CIF bond information") - # newgroup.checked_coordination = True - # newgroup.get_denticity(debug=debug) - # self.groups.append(newgroup) - # else: - newgroup, final_group_indices, final_ligand_indices = newgroup.check_coordination(debug=debug) - print(f"\tLIGAND.SPLIT_LIGAND: {newgroup.formula} {newgroup.labels}") - print(f"\tLIGAND.SPLIT_LIGAND: {final_group_indices=}") - print(f"\tLIGAND.SPLIT_LIGAND: {final_ligand_indices=}") - if not is_single_sublist(final_group_indices): # atoms in new group are connected to different metals - if debug > 1 : print(f"\tenterting SPLIT_GROUP for the GROUP {newgroup.formula} with {final_group_indices=} {[met.label for met in newgroup.metals]}") - for conn_idx in final_group_indices: - if debug > 1 : print(f"\tenterting SPLIT_GROUP for the GROUP {newgroup.labels} with {conn_idx=}") - splitted_groups = split_group(newgroup, conn_idx, final_ligand_indices, debug=debug) - for g in splitted_groups: - self.groups.append(g) - else: - if debug > 1 : print(f"\tGROUP {newgroup.formula} with {final_group_indices=} connected to {[met.label for met in newgroup.metals]}") - conn_idx = final_group_indices[0] - if len(conn_idx) == len(newgroup.atoms): - if debug > 1 : print(f"\tLIGAND.SPLIT_LIGAND: new group is found") - newgroup.get_denticity(debug=debug) - # Top-down hierarchy - self.groups.append(newgroup) - elif len(conn_idx) == 0: - if debug > 1 : print(f"\tLIGAND.SPLIT_LIGAND: no group is found") - continue - else: - if debug > 1 : print(f"\tenterting SPLIT_GROUP for the GROUP {newgroup.formula} with {conn_idx=}") - splitted_groups = split_group(newgroup, conn_idx, final_ligand_indices, debug=debug) - for g in splitted_groups: - self.groups.append(g) - if debug > 0 : print(f"\tLIGAND.SPLIT_LIGAND: found groups {[ group.formula for group in self.groups]}") - if debug > 3 : print(f"{self.groups}") - return self.groups - - ####################################################### - def get_hapticity(self, debug: int=0): - if not hasattr(self,"groups"): self.split_ligand(debug=debug) - self.is_haptic = False - self.haptic_type = [] - for gr in self.groups: - if not hasattr(gr,"is_haptic"): gr.get_hapticity(debug=debug) - if gr.is_haptic: self.is_haptic = True; self.haptic_type = gr.haptic_type - for entry in gr.haptic_type: - if entry not in self.haptic_type: self.haptic_type.append(entry) - return self.haptic_type - -############### -#### GROUP #### -############### -class group(specie): - def __init__(self, labels: list, coord: list, frac_coord: list=None, radii: list=None) -> None: - self.subtype = "group" - if frac_coord is not None: self.frac_coord = frac_coord - specie.__init__(self, labels, coord, frac_coord, radii) - - ####################################################### - def __repr__(self): - to_print = "" - to_print += f'------------- Cell2mol GROUP Object --------------\n' - to_print += specie.__repr__(self, indirect=True) - if hasattr(self,"metals"): to_print += f' Number of Metals = {len(self.metals)}\n' - to_print += '---------------------------------------------------\n' - return to_print - - ####################################################### - def remove_atom(self, index: int, debug: int=0): - if debug > 0: print(f"GROUP.REMOVE_ATOM: deleting atom {index=} from group with {self.natoms} atoms") - if index > self.natoms: return None - if not hasattr(self,"atoms"): self.set_atoms() - self.atoms.pop(index) - self.labels.pop(index) - self.coord.pop(index) - self.radii.pop(index) - self.formula = labels2formula(self.labels) - self.eleccount = labels2electrons(self.labels) ### Assuming neutral specie (so basically this is the sum of atomic numbers) - self.natoms = len(self.labels) - self.iscomplex = any((elemdatabase.elementblock[l] == "d") or (elemdatabase.elementblock[l] == "f") for l in self.labels) - if debug > 0: print("GROUP.REMOVE_ATOM. Group after removing atom:") - if debug > 0: print(self) - if self.natoms > 0: - if hasattr(self,"closest_metal"): self.get_closest_metal() - if hasattr(self,"is_haptic"): self.get_hapticity() - if hasattr(self,"centroid"): self.get_centroid() - if hasattr(self,"frac_coord"): self.frac_coord.pop(index) - if hasattr(self,"adjmat"): self.get_adjmatrix() - if hasattr(self,"madjmat"): self.get_metal_adjmatrix() - - ####################################################### - def get_closest_metal(self, debug: int=0): - apos = compute_centroid(np.array(self.coord)) - dist = [] - mol = self.get_parent("molecule") - for met in mol.metals: - bpos = np.array(met.coord) - dist.append(np.linalg.norm(apos - bpos)) - # finds the closest Metal Atom (tgt) - self.closest_metal = mol.metals[np.argmin(dist)] - return self.closest_metal - - ####################################################### - def get_connected_metals(self, debug: int=0): - # metal.groups will be used for the calculation of the relative metal radius - # and define the coordination geometry of the metal /hapicitiy/ hapttype - self.metals = [] - - refcell = self.get_parent("reference") - geom_bond_cif = getattr(refcell, "geom_bond_cif", None) - - lig = self.get_parent("ligand") - if not hasattr(lig,"metals"): lig.get_connected_metals() - - if refcell is not None and getattr(refcell, "exist_cif_bond_moiety", False): - for met in lig.metals: - tmplabels = self.labels.copy() - tmpcoord = self.coord.copy() - atom_site_labels = [atom.atom_site_label for atom in self.atoms] - tmplabels.append(met.label) - tmpcoord.append(met.coord) - atom_site_labels.append(met.atom_site_label) - isgood, tmpadjmat, tmpadjnum = get_adjmatrix_from_cif_bonds(tmplabels, tmpcoord, atom_site_labels, geom_bond_cif, metal_only=True) - if isgood and any(tmpadjnum) > 0: - self.metals.append(met) - if debug >= 0: print(f"GROUP.Get_connected_metals: {self.formula} is connected to {met.label}") - else: - for met in lig.metals: - tmplabels = self.labels.copy() - tmpcoord = self.coord.copy() - tmplabels.append(met.label) - tmpcoord.append(met.coord) - isgood, tmpadjmat, tmpadjnum = get_adjmatrix(tmplabels, tmpcoord, metal_only=True) - if isgood and any(tmpadjnum) > 0: self.metals.append(met) - return self.metals - - ####################################################### - def get_hapticity(self, debug: int=0): - if not hasattr(self,"atoms"): self.set_atoms() - self.is_haptic = False ## old self.hapticity - self.haptic_type = [] ## old self.hapttype - totnum = len(self.labels) - numC = self.labels.count("C") # Carbon is the most common connected atom in ligands with hapticity - numAs = self.labels.count("As") # I've seen one case of a Cp but with As instead of C (VENNEH, Fe dataset) - numP = self.labels.count("P") - numO = self.labels.count("O") # For h4-Enone - numN = self.labels.count("N") - - - ## Carbon-based Haptic Ligands - if numC == 2 and totnum ==2: - self.haptic_type = ["h2-Benzene", "h2-Butadiene", "h2-ethylene"]; self.is_haptic = True - elif numC == 3 and numO == 0 and totnum ==3: - self.haptic_type = ["h3-Allyl", "h3-Cp"]; self.is_haptic = True - elif numC == 3 and numO == 1 and totnum ==4: - self.haptic_type = ["h4-Enone"]; self.is_haptic = True - elif numC == 4 and totnum ==4: - self.haptic_type = ["h4-Butadiene", "h4-Benzene"]; self.is_haptic = True - elif numC == 5 and totnum ==5: - self.haptic_type = ["h5-Cp"]; self.is_haptic = True - elif numC == 6 and totnum ==6: - self.haptic_type = ["h6-Benzene"]; self.is_haptic = True - elif numC == 7 and totnum ==7: - self.haptic_type = ["h7-Cycloheptatrienyl"]; self.is_haptic = True - elif numC == 8 and totnum ==8: - self.haptic_type = ["h8-Cyclooctatetraenyl"]; self.is_haptic = True - # Other less common types of haptic ligands - elif numC == 0 and numAs == 5 and totnum ==5: - self.haptic_type = ["h5-AsCp"]; self.is_haptic = True - elif numC == 0 and numP == 5 and totnum ==5: - self.haptic_type = ["h5-Pentaphosphole"]; self.is_haptic = True - elif numC == 1 and numP == 1 and totnum ==2: - self.haptic_type = ["h2-P=C"]; self.is_haptic = True - elif is_haptic_ring(self.labels, self.coord): - self.haptic_type = [f"{len(self.labels)}-ring {self.formula}"] - self.is_haptic = True - - return self.haptic_type - - ####################################################### - def check_coordination(self, debug: int=0): - if not hasattr(self,"is_haptic"): self.get_hapticity() - if not hasattr(self,"atoms"): self.set_atoms() - if self.is_haptic: self, conn_idx, final_ligand_indices = coordination_correction_for_haptic(self, debug=debug) - if self.is_haptic == False: self, conn_idx, final_ligand_indices = coordination_correction_for_nonhaptic(self, debug=debug) - self.checked_coordination = True - return self, conn_idx, final_ligand_indices - - ####################################################### - def get_denticity(self, debug: int=0): - if not hasattr(self,"checked_coordination"): self.check_coordination(debug=debug) - self.denticity = 0 - for a in self.atoms: - self.denticity += a.mconnec - return self.denticity - -############### -### BOND ###### -############### -class bond(object): - def __init__(self, atom1: object, atom2: object, bond_order: int=1): - self.type = "bond" - self.version = "2.0" - self.atom1 = atom1 - self.atom2 = atom2 - self.order = bond_order - self.distance = round(np.linalg.norm(np.array(atom1.coord) - np.array(atom2.coord)),3) - - def __repr__(self): - to_print = "" - to_print += f'------------- Cell2mol BOND Object --------------\n' - to_print += f' Version = {self.version}\n' - to_print += f' Type = {self.type}\n' - idx1 = self.atom1.get_parent_index("molecule") - idx2 = self.atom2.get_parent_index("molecule") - to_print += f' Molecule Atom 1 label = {self.atom1.label}\n' - to_print += f' Molecule Atom 2 label = {self.atom2.label}\n' - to_print += f' Molecule Atom 1 index = {idx1}\n' - to_print += f' Molecule Atom 2 index = {idx2}\n' - to_print += f' Bond Order = {self.order}\n' - to_print += f' Distance = {self.distance,3}\n' - to_print += '----------------------------------------------------\n' - return to_print - -############### -### ATOM ###### -############### -class atom(object): - def __init__(self, label: str, coord: list, frac_coord: list=None, radii: float=None) -> None: - self.type = "atom" - self.version = "2.0" - self.label = label - self.coord = coord - self.atnum = elemdatabase.elementnr[label] - self.block = elemdatabase.elementblock[label] - self.parents = [] - self.parents_index = [] - self.formula = label - - if frac_coord is not None: self.frac_coord = frac_coord - if radii is None: self.radii = get_radii(label) - else: self.radii = radii - - - ############ - def add_parent(self, parent: object, index: int, overwrite: bool=True): - ## associates a parent specie to self. The atom indices of self in parent are given in "indices" - ## if parent of the same subtype already in self.parent then it is overwritten - ## this is to avoid having a substructure (e.g. a ligand) in more than one superstructure (e.g. a molecule) - append = True - for idx, p in enumerate(self.parents): - if p.subtype == parent.subtype: - if overwrite: - self.parents[idx] = parent - self.parents_index[idx] = index - append = False - if append: - self.parents.append(parent) - self.parents_index.append(index) - - ############ - def check_parent(self, subtype: str): - ## checks if parent of a given subtype exists - for p in self.parents: - if p.subtype == subtype: return True - return False - - ############ - def get_parent(self, subtype: str): - ## retrieves parent of a given subtype - for p in self.parents: - if p.subtype == subtype: return p - return None - - ############ - def get_parent_index(self, subtype: str): - ## retrieves parent of a given subtype - for idx, p in enumerate(self.parents): - if p.subtype == subtype: return self.parents_index[idx] - return None - - ####################################################### - def check_connectivity(self, other: object, debug: int=0): - ## Checks whether two atoms are connected (through the adjacency) - if not isinstance(other, type(self)): return False - labels = list([self.label,other.label]) - coords = list([self.coord,other.coord]) - refcell = self.get_parent("reference") - geom_bond_cif = getattr(refcell, "geom_bond_cif", None) - if refcell is not None and getattr(refcell, "exist_cif_bond_moiety", False): - atom_site_labels = [self.atom_site_label, other.atom_site_label] - isgood, adjmat, adjnum = get_adjmatrix_from_cif_bonds(labels, coords, atom_site_labels, geom_bond_cif) - else: - isgood, adjmat, adjnum = get_adjmatrix(labels, coords) - if isgood and adjnum[0] > 0: return True - else: return False - - ####################################################### - def add_bond(self, newbond: object, debug: int=0): - if not hasattr(self,"bonds"): self.bonds = [] - at1 = newbond.atom1 - at2 = newbond.atom2 - found = False - for b in self.bonds: - if (b.atom1 == at1 and b.atom2 == at2) or (b.atom1 == at2 and b.atom2 == at1): - if debug > 0: print(f"ATOM.ADD_BOND found the same bond with atoms:") - if debug > 0: print(f"atom1: {b.atom1}") - if debug > 0: print(f"atom2: {b.atom2}") - found = True ### It means that the same bond has already been defined - if not found: self.bonds.append(newbond) - - ####################################################### - def set_adjacency_parameters(self, cov_factor: float, metal_factor: float) -> None: - self.cov_factor = cov_factor - self.metal_factor = metal_factor - - ####################################################### - def reset_charge(self) -> None: - if hasattr(self,"charge"): delattr(self,"charge") - if hasattr(self,"poscharges"): delattr(self,"charge") - - ####################################################### - def set_charge(self, charge: int) -> None: - self.charge = charge - - ####################################################### - def set_adjacencies(self, adjmat, madjmat, adjnum: int, madjnum: int): - self.connec = int(adjnum) - self.mconnec = int(madjnum) - self.adjacency = [] - self.metal_adjacency = [] - for idx, c in enumerate(adjmat): ## The atom only receives one row of adjmat, so this is not a matrix anymore. Keep in mind that the idx are the indices of parent - if c > 0: self.adjacency.append(idx) - for idx, c in enumerate(madjmat): ## The atom only receives one row of madjmat, so this is not a matrix anymore - if c > 0: self.metal_adjacency.append(idx) - - ####################################################### - # def get_connected_metals(self, metalist: list, debug: int=0): - - # self.metals = [] - - # for met in metalist: - # tmplabels = self.label.copy() - # tmpcoord = self.coord.copy() - # tmplabels.append(met.label) - # tmpcoord.append(met.coord) - # isgood, tmpadjmat, tmpadjnum = get_adjmatrix(tmplabels, tmpcoord, metal_only=True) - # if isgood and any(tmpadjnum) > 0: self.metals.append(met) - # return self.metals - - ####################################################### - def get_closest_metal(self, debug: int=0): - ## Here, the list of metal atoms must be provided - apos = self.coord - dist = [] - mol = self.get_parent("molecule") - for met in mol.metals: - bpos = np.array(met.coord) - dist.append(np.linalg.norm(apos - bpos)) - self.closest_metal = mol.metals[np.argmin(dist)] - return self.closest_metal - - ####################################################### - def information(self, cov_factor: float, metal_factor: float) -> None: - self.cov_factor = cov_factor - self.metal_factor = metal_factor - - def set_atom_site_label(self, atom_site_label: str) -> None: - self.atom_site_label = atom_site_label - - ####################################################### - def __repr__(self, indirect: bool=False): - to_print = "" - if not indirect: to_print += f'------------- Cell2mol ATOM Object ----------------\n' - to_print += f' Version = {self.version}\n' - to_print += f' Type = {self.type}\n' - if hasattr(self,'subtype'): to_print += f' Sub-Type = {self.subtype}\n' - to_print += f' Label = {self.label}\n' - to_print += f' Atomic Number = {self.atnum}\n' - idx = self.get_parent_index("molecule") - if idx is not None: to_print += f' Index in Molecule = {idx}\n' - idx = self.get_parent_index("ligand") - if idx is not None: to_print += f' Index in Ligand = {idx}\n' - if hasattr(self,"occurrence"): to_print += f' Occurrence in Parent = {self.occurrence}\n' - if hasattr(self,"mconnec"): to_print += f' Metal Adjacency (mconnec) = {self.mconnec}\n' - if hasattr(self,"connec"): to_print += f' Regular Adjacencies (connec) = {self.connec}\n' - if hasattr(self,"charge"): to_print += f' Atom Charge = {self.charge}\n' - if not indirect: to_print += '----------------------------------------------------\n' - return to_print - - ####################################################### - def reset_mconnec(self, met, diff: int=-1, debug: int=0): - if debug >= 2: print(f"ATOM.RESET_MCONN: resetting mconnec (and connec) for atom {self.label=}") - if debug >= 2: print(f"ATOM.RESET_MCONN: initial {self.connec=} {self.mconnec=}") - if debug >= 2 : print(f"ATOM.RESET_MCONN: initial = {self.adjacency=} {self.metal_adjacency=}") - self.mconnec += diff - self.connec += diff - - if debug >= 2: print(f"ATOM.RESET_MCONN: initial {met.connec=} {met.mconnec=}") - if debug >= 2: print(f"ATOM.RESET_MCONN: initial = {met.adjacency=} {met.metal_adjacency=}") - - # Correct Metal Data - met.mconnec += diff # Corrects data of metal object - met.connec += diff # Corrects data of metal object - - - exists = self.check_parent("ligand") - if exists: - lig = self.get_parent("ligand") - lig_idx = self.get_parent_index("ligand") - - if debug > 2: print(f"ATOM.RESET_MCONN: resetting mconnec (and connec) for atom {self.label=} in ligadn {lig_idx=}") - if debug > 2: print(f"ATOM.RESET_MCONN: updating ligand atoms and madjnum") - if debug > 2: print(f"ATOM.RESET_MCONN: {lig.natoms=}") - if debug > 2: print(f"ATOM.RESET_MCONN: {lig.labels=}") - if debug > 2: print(f"ATOM.RESET_MCONN: initial {lig.madjnum=} {len(lig.madjnum)}") - # Nothing in madjmat of the ligand object, all zeros - # if debug > 2: print(f"ATOM.RESET_MCONN: initial {lig.madjmat=} {(lig.madjmat).shape}") - if debug > 2: print(f"ATOM.RESET_MCONN: updating ligand atoms and adjnum") - if debug > 2: print(f"ATOM.RESET_MCONN: initial {lig.adjnum=} {len(lig.adjnum)}") - # if debug > 2: print(f"ATOM.RESET_MCONN: initial {lig.adjmat=} {(lig.adjmat).shape}") - if debug > 2: print(f"ATOM.RESET_MCONN: initial {lig.atoms[lig_idx].connec=} {lig.atoms[lig_idx].mconnec=}") - if debug > 2: print(f"ATOM.RESET_MCONN: initial {lig.madjnum[lig_idx]=}") - if debug > 2: print(f"ATOM.RESET_MCONN: initial {lig.adjnum[lig_idx]=}") - if debug > 2: print(f"ATOM.RESET_MCONN: initial {met.connec=} {met.mconnec=}") - if debug > 2: print(f"ATOM.RESET_MCONN: initial {lig.madjmat[lig_idx]=} {lig.adjmat[lig_idx]=}") - # Correct Ligand Data - lig.madjnum[lig_idx] += diff # Corrects data in metal_adjacency number of the ligand class - #lig.madjmat[lig_idx,met_idx] += diff # Corrects data in metal_adjacency matrix - #lig.madjmat[met_idx,lig_idx] += diff # Corrects data in metal_adjacency matrix - lig.adjnum[lig_idx] += diff # Corrects data in adjacency number of the ligand class - - lig.atoms[lig_idx].set_adjacencies(lig.adjmat[lig_idx], lig.madjmat[lig_idx], lig.adjnum[lig_idx], lig.madjnum[lig_idx]) - - # lig.adjmat[lig_idx,met_idx] += diff # Corrects data in adjacency matrix - # lig.adjmat[met_idx,lig_idx] += diff # Corrects data in adjacency matrix - # we should delete the adjacencies, but not a priority - if debug >= 2: print(f"ATOM.RESET_MCONN: final {lig.madjnum=}") - # if debug > 2: print(f"ATOM.RESET_MCONN: final {lig.madjmat=}") - if debug > 2: print(f"ATOM.RESET_MCONN: final {lig.adjnum=}") - # if debug > 2: print(f"ATOM.RESET_MCONN: final {lig.adjmat=}") - if debug >= 2: print(f"ATOM.RESET_MCONN: final {lig.atoms[lig_idx].connec=} {lig.atoms[lig_idx].mconnec=}") - if debug >= 2: print(f"ATOM.RESET_MCONN: final {lig.atoms[lig_idx].adjacency=} {lig.atoms[lig_idx].metal_adjacency=}") - if debug >= 2: print(f"ATOM.RESET_MCONN: final {lig.madjnum[lig_idx]=}") - if debug >= 2: print(f"ATOM.RESET_MCONN: final {lig.adjnum[lig_idx]=}") - lig.get_connected_idx(debug=debug) - lig.get_connected_atoms(debug=debug) - - exists = self.check_parent("molecule") - if exists: - mol = self.get_parent("molecule") - mol_idx = self.get_parent_index("molecule") - met_idx = met.get_parent_index("molecule") - if debug >= 2: print(f"ATOM.RESET_MCONN: resetting mconnec (and connec) for atom {self.label=} in molecule {mol_idx=} with metal {met_idx=}") - if debug >= 2: print(f"ATOM.RESET_MCONN: updating molecule atoms and madjnum") - if debug > 2: print(f"ATOM.RESET_MCONN: {mol.natoms=}") - if debug > 2: print(f"ATOM.RESET_MCONN: {mol.labels=}") - if debug >= 2: print(f"ATOM.RESET_MCONN: initial {mol.madjnum=} {len(mol.madjnum)}") - #if debug >= 2: print(f"ATOM.RESET_MCONN: initial {mol.madjmat=} {(mol.madjmat).shape}") # Nothing in madjmat of the ligand object, all zeros - if debug >= 2: print(f"ATOM.RESET_MCONN: updating molecule atoms and adjnum") - if debug >= 2: print(f"ATOM.RESET_MCONN: initial {mol.adjnum=} {len(mol.adjnum)}") - #if debug >= 2: print(f"ATOM.RESET_MCONN: initial {mol.adjmat=} {(mol.adjmat).shape}") - if debug >= 2: print(f"ATOM.RESET_MCONN: initial {mol.atoms[mol_idx].mconnec=} {mol.atoms[mol_idx].connec=}") - if debug >= 2: print(f"ATOM.RESET_MCONN: initial {met.mconnec=} {met.connec=}") - - if debug > 2: print(f"ATOM.RESET_MCONN: initial {mol.madjnum[mol_idx]=}") - if debug > 2: print(f"ATOM.RESET_MCONN: initial {mol.adjnum[mol_idx]=}") - if debug > 2: print(f"ATOM.RESET_MCONN: initial {mol.madjnum[met_idx]=} {mol.madjnum[mol_idx]=}") - if debug > 2: print(f"ATOM.RESET_MCONN: initial {mol.adjnum[met_idx]=} {mol.adjnum[mol_idx]=}") - if debug > 2: print(f"ATOM.RESET_MCONN: initial {mol.madjmat[met_idx,mol_idx]=} {mol.madjmat[mol_idx,met_idx]=}") - if debug > 2: print(f"ATOM.RESET_MCONN: initial {mol.adjmat[met_idx,mol_idx]=} {mol.adjmat[mol_idx,met_idx]=}") - - # Correct Molecule Data - # mol.atoms[mol_idx].mconnec += diff # Corrects data of atom object in molecule class - # mol.atoms[mol_idx].connec += diff # Corrects data of atom object in molecule class - mol.madjnum[mol_idx] += diff # Corrects data in metal_adjacency number of the molecule class - mol.madjnum[met_idx] += diff # Corrects data in metal_adjacency number of the molecule class - - mol.madjmat[mol_idx,met_idx] += diff # Corrects data in metal_adjacency matrix - mol.madjmat[met_idx,mol_idx] += diff # Corrects data in metal_adjacency matrix - - mol.adjnum[mol_idx] += diff # Corrects data in adjacency number of the molecule class - mol.adjnum[met_idx] += diff # Corrects data in adjacency number of the molecule class - - mol.adjmat[mol_idx,met_idx] += diff # Corrects data in adjacency matrix - mol.adjmat[met_idx,mol_idx] += diff # Corrects data in adjacency matrix - - self.set_adjacencies(mol.adjmat[mol_idx], mol.madjmat[mol_idx], mol.adjnum[mol_idx], mol.madjnum[mol_idx]) - - met.set_adjacencies(mol.adjmat[met_idx], mol.madjmat[met_idx], mol.adjnum[met_idx], mol.madjnum[met_idx]) - - if debug >= 2: print(f"ATOM.RESET_MCONN: final {mol.atoms[mol_idx].connec=} {mol.atoms[mol_idx].mconnec=}") - if debug >= 2: print(f"ATOM.RESET_MCONN: final {mol.atoms[mol_idx].adjacency=} {mol.atoms[mol_idx].metal_adjacency=}") - if debug >= 2: print(f"ATOM.RESET_MCONN: final {met.connec=} {met.mconnec=}") - if debug >= 2: print(f"ATOM.RESET_MCONN: final {met.adjacency=} {met.metal_adjacency=}") - if debug >= 2: print(f"ATOM.RESET_MCONN: final {mol.madjnum[mol_idx]=}") - if debug >= 2: print(f"ATOM.RESET_MCONN: final {mol.adjnum[mol_idx]=}") - if debug >= 2: print(f"ATOM.RESET_MCONN: final {mol.madjnum[met_idx]=} {mol.madjnum[mol_idx]=}") - if debug >= 2: print(f"ATOM.RESET_MCONN: final {mol.adjnum[met_idx]=} {mol.adjnum[mol_idx]=}") - if debug > 2: print(f"ATOM.RESET_MCONN: final {mol.madjmat[met_idx,mol_idx]=} {mol.madjmat[mol_idx,met_idx]=}") - if debug > 2: print(f"ATOM.RESET_MCONN: final {mol.adjmat[met_idx,mol_idx]=} {mol.adjmat[mol_idx,met_idx]=}") - -############### -#### METAL #### -############### -class metal(atom,specie): - def __init__(self, label: str, coord: list, frac_coord: list=None, radii: float=None) -> None: - self.subtype = "metal" - atom.__init__(self, label, coord, frac_coord=frac_coord, radii=radii) - - ####################################################### - def get_valence_elec (self, m_ox: int): - """ Count valence electrons for a given transition metal and metal oxidation state """ - v_elec = elemdatabase.valenceelectrons[self.label] - m_ox - if v_elec >= 0 : self.valence_elec = v_elec - else : self.valence_elec = elemdatabase.elementgroup[self.label] - m_ox - return self.valence_elec - - ####################################################### - def get_coord_sphere(self): - if not self.check_parent("molecule"): return None - mol = self.get_parent("molecule") - pidx = self.get_parent_index("molecule") - # if not hasattr(mol,"adjmat"): mol.get_adjmatrix() - # adjmat = mol.adjmat.copy() - - ## Cordination sphere defined as a collection of atoms - self.coord_sphere = [] - for idx, at in enumerate(mol.adjmat[pidx]): - if at >= 1: - self.coord_sphere.append(mol.atoms[idx]) - return self.coord_sphere - - ####################################################### - def get_coord_sphere_formula(self, debug: int=1): - if not hasattr(self,"coord_sphere"): self.get_coord_sphere() - self.coord_sphere_formula = labels2formula(list([at.label for at in self.coord_sphere])) - if debug >= 2 : print(f"METAL.Get_coord_sphere_formula: molecule parent_index={self.get_parent_index('molecule')} metal={self.label} coord_sphere_formula={self.coord_sphere_formula}") - return self.coord_sphere_formula - - ####################################################### - def get_connected_groups(self, debug: int=0): - from cell2mol.connectivity import split_group - # metal.groups will be used for the calculation of the relative metal radius - # and define the coordination geometry of the metal /hapicitiy/ hapttype - if not self.check_parent("molecule"): return None - - refcell = self.get_parent("reference") - geom_bond_cif = getattr(refcell, "geom_bond_cif", None) - - mol = self.get_parent("molecule") - self.groups = [] - - if refcell is not None and getattr(refcell, "exist_cif_bond_moiety", False): - for lig in mol.ligands: - for group in lig.groups: - if debug > 2: print(group.formula) - ligand_indices = [ a.get_parent_index("ligand") for a in group.atoms ] - tmplabels = [] - tmpcoord = [] - atom_site_labels = [] - - tmplabels.append(self.label) - tmpcoord.append(self.coord) - atom_site_labels.append(self.atom_site_label) - - tmplabels.extend(group.labels) - tmpcoord.extend(group.coord) - atom_site_labels.extend([atom.atom_site_label for atom in group.atoms]) - - if debug >= 2: print(f"ATOM.Get_connected_groups: {tmplabels=} {atom_site_labels=}") - isgood, tmpadjmat, tmpadjnum = get_adjmatrix_from_cif_bonds(tmplabels, tmpcoord, atom_site_labels, geom_bond_cif, metal_only=True) - if isgood : - if debug > 2: print(group.formula, tmpadjmat, tmpadjnum) - if all(tmpadjnum[1:]): - self.groups.append(group) - if debug >= 0: print(f"ATOM.Get_connected_groups: Metal {self.label} is connected to all atoms in {group.formula}") - - elif any(tmpadjnum[1:]): - if debug > 1: print(f"Metal {self.label} is connected to {group.formula} but not all atoms are connected") - conn_idx = [ idx for idx, num in enumerate(tmpadjnum[1:]) if num == 1 ] - conn_ligand_indices = [ ligand_indices[idx] for idx, num in enumerate(tmpadjnum[1:]) if num == 1 ] - if debug > 1: print(f"get_connected_groups {tmpadjnum[1:]=} {conn_idx=} {conn_ligand_indices=} {ligand_indices=}") - splitted_groups = split_group(group, conn_idx, conn_ligand_indices, debug=debug) - for g in splitted_groups: - self.groups.append(g) - if debug > 1: print(f"Metal {self.label} is connected to {g.formula}") - else: - if debug > 1: print(f"Metal {self.label} is not connected to {group.formula}") - else: - for lig in mol.ligands: - for group in lig.groups: - if debug > 2: print(group.formula) - ligand_indices = [ a.get_parent_index("ligand") for a in group.atoms ] - tmplabels = [] - tmpcoord = [] - tmplabels.append(self.label) - tmpcoord.append(self.coord) - tmplabels.extend(group.labels) - tmpcoord.extend(group.coord) - if debug > 2: print(tmplabels, tmpcoord) - isgood, tmpadjmat, tmpadjnum = get_adjmatrix(tmplabels, tmpcoord, metal_only=True) - # if isgood and any(tmpadjnum) > 0: self.groups.append(group) - if isgood: - if debug > 2: print(group.formula, tmpadjmat, tmpadjnum) - if all(tmpadjnum[1:]): - self.groups.append(group) - elif any(tmpadjnum[1:]): - if debug > 1: print(f"Metal {self.label} is connected to {group.formula} but not all atoms are connected") - conn_idx = [ idx for idx, num in enumerate(tmpadjnum[1:]) if num == 1 ] - conn_ligand_indices = [ ligand_indices[idx] for idx, num in enumerate(tmpadjnum[1:]) if num == 1 ] - if debug > 1: print(f"get_connected_groups {tmpadjnum[1:]=} {conn_idx=} {conn_ligand_indices=} {ligand_indices=}") - splitted_groups = split_group(group, conn_idx, conn_ligand_indices, debug=debug) - for g in splitted_groups: - self.groups.append(g) - if debug > 1: print(f"Metal {self.label} is connected to {g.formula}") - else: - if debug > 1: print(f"Metal {self.label} is not connected to {group.formula}") - return self.groups - - ####################################################### - def get_relative_metal_radius(self, debug: int=0): - if not hasattr(self,"groups"): self.get_connected_groups(debug=debug) - diff_list = [] - for group in self.groups: - if group.is_haptic == False : - for atom in group.atoms: - diff = round(get_dist(self.coord, atom.coord) - elemdatabase.CovalentRadius3[atom.label], 3) - diff_list.append(diff) - else : - haptic_center_label = "C" - haptic_center_coord = compute_centroid(np.array([atom.coord for atom in group.atoms])) - diff = round(get_dist(self.coord, haptic_center_coord) - elemdatabase.CovalentRadius3[haptic_center_label], 3) - diff_list.append(diff) - average = round(np.average(diff_list), 3) - - if debug > 1: - print(f"METAL.Get_relative_metal_radius: {diff_list=}") - print(f"METAL.Get_relative_metal_radius: {average=}") - - self.rel_metal_radius = round(average/elemdatabase.CovalentRadius3[self.label], 3) - - return self.rel_metal_radius - ####################################################### - def get_connected_metals(self, debug: int=1): - self.metals = [] - mol = self.get_parent("molecule") - refcell = self.get_parent("reference") - - if refcell is not None and getattr(refcell, "exist_cif_bond_moiety", False): - pidx = self.get_parent_index("molecule") - #print(f"METAL.Get_connected_metals: {self.label} {pidx=} {mol.metals=}") - for met in mol.metals: - if met == self : continue - met_idx = met.get_parent_index("molecule") - if mol.adjmat[pidx, met_idx] == 1: - if debug > 1: print(f"METAL.Get_connected_metals: {self.label} is connected to {met.label}") - self.metals.append(met) - else: - if debug > 1: print(f"METAL.Get_connected_metals: {self.label} is NOT connected to {met.label}") - else : - for met in mol.metals: - if met == self : continue - tmplabels = [] - tmpcoord = [] - tmplabels.append(self.label) - tmpcoord.append(self.coord) - tmplabels.append(met.label) - tmpcoord.append(met.coord) - - if debug > 1: print(tmplabels, tmpcoord) - - isgood, tmpadjmat, tmpadjnum = get_adjmatrix(tmplabels, tmpcoord, metal_only=True) - if isgood: - if debug > 1: print(met.label, tmpadjmat, tmpadjnum) - if all(tmpadjnum[1:]): - self.metals.append(met) - else: - if debug > 1: print(f"Metal {self.label} {met.label}") - - if debug >= 2 : print(f"METAL.Get_connected_metals: {self.label} connected to {len(self.metals)} metals {[m.label for m in self.metals]}") - - return self.metals - - ####################################################### - def get_coordination_geometry(self: object, debug: int = 0): - - if debug >= 1: print(f"\nMETAL.Get_coord_geometry: {self.label}") - - coord_group = self.get_connected_groups(debug=debug) - self.coord_nr, self.coord_geometry, self.geom_deviation = define_coordination_geometry(self, coord_group, debug = debug) - - if debug >= 3 : print(f"METAL.Get_coord_geometry:\n{coord_group=}") - if debug >= 1: print(f"METAL.Get_coord_geometry: coord_nr={self.coord_nr}") - if debug >= 2: print(f"METAL.Get_coord_geometry: {self.coord_geometry=} {self.geom_deviation=}") - - self.rel_metal_radius = self.get_relative_metal_radius(debug = debug) - if debug >= 2: print(f"METAL.Get_coord_geometry: {self.rel_metal_radius=}") - - if not hasattr(self,"metals"): self.get_connected_metals(debug=debug) - - if len(self.metals) > 0: - bonded_metals = self.metals - whole_coord = coord_group + bonded_metals - - if debug >= 1: print(f"\nMETAL.Get_coord_geometry Including metal-metal bonds for: {self.label}") - - self.coord_nr_with_metal_bonds, self.coord_geometry_with_metal_bonds, self.geom_deviation_with_metal_bonds = define_coordination_geometry(self, whole_coord, debug = debug) - if debug >= 1: print(f"METAL.Get_coord_geometry Including metal-metal bonds {self.coord_nr_with_metal_bonds=}") - if debug >= 2: print(f"METAL.Get_coord_geometry Including metal-metal bonds: {self.coord_geometry_with_metal_bonds=} {self.geom_deviation_with_metal_bonds=}") - - return self.coord_geometry - - ####################################################### - def get_possible_cs(self, debug: int=0): - self.possible_cs = get_metal_poscharges(self) - return self.possible_cs - - ####################################################### - def get_spin(self, debug: int=0): - self.spin = assign_spin_metal(self, debug=debug) - if debug >=1: print(f"GET_SPIN: Spin multiplicity of the metal {self.label} is assigned as {self.spin}") - - ####################################################### - def predict_charge(self, debug: int=0): - self.charge_by_ML = predict_ox_state(self, debug=debug) - - ####################################################### - def reset_charge(self): - atom.reset_charge(self) ## First uses the generic atom class function for itself - if hasattr(self,"poscharges"): delattr(self,"poscharge") - - def __repr__(self): - to_print = "" - to_print += f'------------- Cell2mol METAL Object --------------\n' - to_print += atom.__repr__(self, indirect=True) - if hasattr(self,"coord_sphere_formula"): to_print += f' Coordination Sphere Formula = {self.coord_sphere_formula}\n' - if hasattr(self,"possible_cs"): to_print += f' Possible Charges = {self.possible_cs}\n' - to_print += '----------------------------------------------------\n' - return to_print - -############## -#### CELL #### -############## -class cell(object): - def __init__(self, name: str, labels: list, pos: list, frac_coord: list, cell_vector, cell_param) -> None: - self.version = "2.0" - self.type = "cell" - self.name = name - self.labels = labels - self.coord = pos - self.frac_coord = frac_coord - self.cell_vector = cell_vector - self.cell_param = cell_param - self.natoms = len(labels) - - ####################################################### - def set_subtype(self, subtype): - self.subtype = subtype - - ####################################################### - def set_atom_site_labels(self, atom_site_labels): - self.atom_site_labels = atom_site_labels - - ####################################################### - def get_cif_bond_moiety (self, cif_bond_info: bool, geom_bond_cif=None, moiety_list_cif=None): - """ - Get the bond moiety from the cif file. - """ - self.geom_bond_cif = geom_bond_cif - self.moiety_list_cif = moiety_list_cif - - if cif_bond_info: - self.exist_cif_bond_moiety = True - moiety_indices = get_moiety_indices_from_labels(self.atom_site_labels, moiety_list_cif) - self.moiety_indices = moiety_indices - else: - self.exist_cif_bond_moiety = False - self.moiety_indices = None - return self.exist_cif_bond_moiety - - ####################################################### - def get_unique_species(self, debug: int=0): - - if debug >= 0: print(f"Getting unique species in {self.subtype}") - self.unique_species = [] - self.unique_indices = [] - self.species_list = [] - typelist_mols = [] # temporary variable - typelist_ligs = [] # temporary variable - typelist_mets = [] # temporary variable - - specs_found = -1 - if self.subtype == "reference": moleclist = self.refmoleclist - else: moleclist = self.moleclist - for idx, mol in enumerate(moleclist): - if debug >= 2: print(f"Molecule {idx} formula={mol.formula}") - if not mol.iscomplex and not mol.has_IA_IIA: - # if not mol.iscomplex: - found = False - for ldx, typ in enumerate(typelist_mols): # Molecules - issame = compare_species(mol, typ[0], debug=0) - if issame : - found = True ; kdx = typ[1] - if debug >= 2: print(f"Molecule {idx} is the same with {ldx} in typelist") - if not found: - specs_found += 1 ; kdx = specs_found - typelist_mols.append(list([mol, kdx])) - self.unique_species.append(mol) - if debug >= 2: print(f"New molecule found with: formula={mol.formula} and added in position {kdx}") - self.unique_indices.append(kdx) - mol.unique_index = kdx - self.species_list.append(mol) - else: - if not hasattr(mol,"ligands"): - if mol.iscomplex : - mol.split_complex(debug=debug) - elif mol.has_IA_IIA: - mol.split_IA_IIA(debug=debug) - for jdx, lig in enumerate(mol.ligands): # ligands - found = False - for ldx, typ in enumerate(typelist_ligs): - if not hasattr(lig, "is_nitrosyl"): lig.evaluate_as_nitrosyl() - if not hasattr(typ[0], "is_nitrosyl"): typ[0].evaluate_as_nitrosyl() - if lig.is_nitrosyl and typ[0].is_nitrosyl: - if lig.NO_type == typ[0].NO_type: - issame = True - else: - issame = False - else: - issame = compare_species(lig, typ[0], debug=0) - if issame : - found = True ; kdx = typ[1] - if debug >= 2: print(f"ligand {jdx} is the same with {ldx} in typelist") - if not found: - specs_found += 1 ; kdx = specs_found - typelist_ligs.append(list([lig, kdx])) - self.unique_species.append(lig) - if debug >= 2: print(f"New ligand found with: formula {lig.formula} added in position {kdx}") - self.unique_indices.append(kdx) - lig.unique_index = kdx - self.species_list.append(lig) - for jdx, met in enumerate(mol.metals): # metals - found = False - for ldx, typ in enumerate(typelist_mets): - issame = compare_metals(met, typ[0], debug=0) - if issame : - found = True ; kdx = typ[1] - if debug >= 2: print(f"Metal {jdx} is the same with {ldx} in typelist") - if not found: - specs_found += 1 ; kdx = specs_found - typelist_mets.append(list([met, kdx])) - self.unique_species.append(met) - if debug >= 2: print(f"New Metal Center found with: labels {met.label} and added in position {kdx}") - self.unique_indices.append(kdx) - met.unique_index = kdx - self.species_list.append(met) - return self.unique_species - - ####################################################### - # def get_fractional_coord(self): - # self.frac_coord = cart2frac(self.coord, self.cellvec) - # return self.frac_coord - - ####################################################### - def check_missing_H(self, debug: int=0): - from cell2mol.missingH import check_missingH - Warning, ismissingH, Missing_H_in_C, Missing_H_in_CoordWater, Missing_H_in_Water = check_missingH(self.refmoleclist, debug=debug) - if debug >=2 : print(f"CELL.Check_missing_H: {Missing_H_in_C=} {Missing_H_in_CoordWater=} {Missing_H_in_Water=}") - self.missing_H_in_Carbon = Missing_H_in_C - self.missing_H_in_CoordWater = Missing_H_in_CoordWater - self.missing_H_in_Water = Missing_H_in_Water - if ismissingH or Missing_H_in_C or Missing_H_in_CoordWater or Missing_H_in_Water : - self.has_missing_H = True - else: - self.has_missing_H = False - return self.has_missing_H - - ####################################################### - def get_reference_molecules_from_moiety(self, ref_labels: list, ref_fracs: list, cov_factor: float = 1.3, metal_factor: float = 1.0, debug: int = 0): - - # Convert fractional coordinates to cartesian - ref_pos = frac2cart_fromparam(ref_fracs, self.cell_param) - - # Define reference cell - refcell = cell(self.name, ref_labels, ref_pos, ref_fracs, self.cell_vector, self.cell_param) - refcell.set_subtype("reference") - atom_site_labels = self.atom_site_labels - - if debug >= 0: - print("#########################################") - print(" GETREFS: Generate reference molecules ") - print(" GETREFS: Consistent with CIF moieties ") - print("#########################################") - - geom_bond_cif = self.geom_bond_cif - blocklist = self.moiety_indices - - if debug >= 2: print(f"GETREFS: blocklist={blocklist}") - if debug >= 2: print(f"GETREFS: Generate Adjacency matrix based on bond information from CIF") - - self.refmoleclist = [] - if blocklist is None: - print(f"GETREFS: No moiety indices found in the CIF file") - return self.refmoleclist - - for b in blocklist: - mol_labels = extract_from_list(b, ref_labels, dimension=1) - mol_coord = extract_from_list(b, ref_pos, dimension=1) - mol_frac_coord = extract_from_list(b, ref_fracs, dimension=1) - mol_atom_site_labels = extract_from_list(b, atom_site_labels, dimension=1) - - newmolec = molecule(mol_labels, mol_coord, mol_frac_coord) - newmolec.add_parent(self, indices=b) - # newmolec.add_parent(refcell, indices=b) - newmolec.set_adjacency_parameters(cov_factor, metal_factor) - newmolec.set_atoms(create_adjacencies=True, atom_site_labels=mol_atom_site_labels, geom_bond_cif=geom_bond_cif, debug=debug) - - for atom, idx in zip(newmolec.atoms, b): - # atom.add_parent(refcell, index=idx) - atom.add_parent(self, index=idx) - # This must be below the frac_coord, so they are carried on to the ligands - # if newmolec.iscomplex : - if newmolec.iscomplex: - newmolec.split_complex() - elif newmolec.has_IA_IIA: - newmolec.split_IA_IIA() - else: - newmolec.add_parent(newmolec, indices=[*range(0,newmolec.natoms,1)]) - self.refmoleclist.append(newmolec) - - if debug >= 0: print(f"GETREFS: found {len(self.refmoleclist)} reference molecules") - if debug >= 0: print(f"GETREFS:", [ref.formula for ref in self.refmoleclist]) - - # Checks for isolated atoms, and retrieves warning if there is any. - # Except if it is H, halogen (group 17) or alkalyne (group 2) - isgood = True - for ref in self.refmoleclist: - if ref.natoms == 1: - label = ref.atoms[0].label - group = elemdatabase.elementgroup[label] - if label == "H" or label == "D": - isgood = False - else: #(group == 1 or group == 2 or group == 17) - if debug >= 0: print(f"GETREFS: found ref molecule with only one atom {ref.labels}") - - # If all good, then works with the reference molecules - if isgood: - self.has_isolated_H = False - for ref in self.refmoleclist: - if ref.iscomplex: - if debug >= 0: print(f"GETREFS: working with {ref.formula} with transition metals") - ref.get_hapticity(debug=debug) - if len(ref.ligands) == 0 : - print(f"GETREFS: {ref.formula} is a metal cluster") - else: - for lig in ref.ligands: - lig.get_denticity(debug=debug) - for met in ref.metals: - met.get_connected_metals(debug=debug) - met.get_coordination_geometry(debug=debug) - met.get_coord_sphere_formula(debug=debug) - elif ref.has_IA_IIA: - if debug >= 0: print(f"GETREFS: working with {ref.formula} with alkali or alkali earth metals") - if len(ref.ligands) == 0 : - pass - else: - for lig in ref.ligands: - lig.get_denticity(debug=debug) - for met in ref.metals: - met.get_connected_metals(debug=debug) - met.get_coordination_geometry(debug=debug) - met.get_coord_sphere_formula(debug=debug) - else: - self.has_isolated_H = True - - return self.refmoleclist - - ####################################################### - def get_reference_molecules(self, ref_labels: list, ref_fracs: list, cov_factor: float = 1.3, metal_factor: float = 1.0, debug: int = 0): - if debug >= 0: - print("#########################################") - print(" GETREFS: Generate reference molecules ") - print("#########################################") - - # Convert fractional coordinates to cartesian - ref_pos = frac2cart_fromparam(ref_fracs, self.cell_param) - - # Define reference cell - refcell = cell(self.name, ref_labels, ref_pos, ref_fracs, self.cell_vector, self.cell_param) - refcell.set_subtype("reference") - - atom_site_labels = self.atom_site_labels - geom_bond_cif = self.geom_bond_cif - if debug >= 2: print(f"GETREFS: geom_bond_cif={geom_bond_cif}") - if debug >= 2: print(f"GETREFS: Generate Adjacency matrix based on interatomic distances") - blocklist = split_species(ref_labels, ref_pos, cov_factor=cov_factor) - if debug >= 2: print(f"GETREFS: blocklist={blocklist}") - - self.refmoleclist = [] - if blocklist is None: - print(f"GETREFS: No blocklist found") - return self.refmoleclist - - # Get reference molecules - for b in blocklist: - mol_labels = extract_from_list(b, ref_labels, dimension=1) - mol_coord = extract_from_list(b, ref_pos, dimension=1) - mol_frac_coord = extract_from_list(b, ref_fracs, dimension=1) - mol_atom_site_labels = extract_from_list(b, atom_site_labels, dimension=1) - - newmolec = molecule(mol_labels, mol_coord, mol_frac_coord) - newmolec.add_parent(self, indices=b) - # newmolec.add_parent(refcell, indices=b) - newmolec.set_adjacency_parameters(cov_factor, metal_factor) - newmolec.set_atoms(create_adjacencies=True, atom_site_labels=mol_atom_site_labels, geom_bond_cif=geom_bond_cif, debug=debug) - for atom, idx in zip(newmolec.atoms, b): - # atom.add_parent(refcell, index=idx) - atom.add_parent(self, index=idx) - print(newmolec.formula, newmolec.madjnum) - # This must be below the frac_coord, so they are carried on to the ligands - if newmolec.iscomplex: - newmolec.split_complex() - elif newmolec.has_IA_IIA: - newmolec.split_IA_IIA() - else: - newmolec.add_parent(newmolec, indices=[*range(0,newmolec.natoms,1)]) - self.refmoleclist.append(newmolec) - - if debug >= 0: print(f"GETREFS: found {len(self.refmoleclist)} reference molecules") - if debug >= 0: print(f"GETREFS:", [ref.formula for ref in self.refmoleclist]) - - # Checks for isolated atoms, and retrieves warning if there is any. - # Except if it is H, halogen (group 17) or alkalyne (group 2) - isgood = True - for ref in self.refmoleclist: - if ref.natoms == 1: - label = ref.atoms[0].label - group = elemdatabase.elementgroup[label] - if label == "H" or label == "D": - isgood = False - else: #(group == 1 or group == 2 or group == 17) - if debug >= 0: print(f"GETREFS: found ref molecule with only one atom {ref.labels}") - - # If all good, then works with the reference molecules - if isgood: - self.has_isolated_H = False - for ref in self.refmoleclist: - if ref.iscomplex: - if debug >= 0: print(f"GETREFS: working with {ref.formula} with transition metals") - ref.get_hapticity(debug=debug) - if len(ref.ligands) == 0 : - print(f"GETREFS: {ref.formula} is a metal cluster") - else: - for lig in ref.ligands: - lig.get_denticity(debug=debug) - for met in ref.metals: - met.get_connected_metals(debug=debug) - met.get_coordination_geometry(debug=debug) - met.get_coord_sphere_formula(debug=debug) - elif ref.has_IA_IIA: - if debug >= 0: print(f"GETREFS: working with {ref.formula} with alkali or alkali earth metals") - if len(ref.ligands) == 0 : - pass - else: - for lig in ref.ligands: - lig.get_denticity(debug=debug) - for met in ref.metals: - met.get_connected_metals(debug=debug) - met.get_coordination_geometry(debug=debug) - met.get_coord_sphere_formula(debug=debug) - else: - self.has_isolated_H = True - - return self.refmoleclist - - ####################################################### - def get_moleclist(self, cov_factor: float=1.3, metal_factor: float=1.0, debug: int=0): - if debug > 3: print(f"Entered CELL.MOLECLIST with debug={debug}") - if not hasattr(self,"labels") or not hasattr(self,"coord"): - if debug > 3: print(f"CELL.MOLECLIST. Labels or coordinates not found. Returning None") - return None - if len(self.labels) == 0 or len(self.coord) == 0: - if debug > 3: print(f"CELL.MOLECLIST. Empty labels or coordinates. Returning None") - return None - if debug > 3: print(f"CELL.MOLECLIST passed initial checks") - - ions_idx = [] - for ref in self.refmoleclist: - if ref.natoms == 1: - label = ref.atoms[0].label - ions_idx.extend([idx for idx, l in enumerate(self.labels) if l == label]) - if debug > 3: print(f"CELL.MOLECLIST: {ions_idx=} with {label=}") - - if len(ions_idx) > 0: - cell_indices = [*range(0,len(self.labels),1)] - if debug > 3: print(f"CELL.MOLECLIST: found {len(ions_idx)} ions") - rest_idx = list(idx for idx in cell_indices if idx not in ions_idx) - if debug > 3: print(f"CELL.MOLECLIST: {rest_idx=}") - rest_labels = extract_from_list(rest_idx, self.labels, dimension=1) - rest_coord = extract_from_list(rest_idx, self.coord, dimension=1) - rest_indices = extract_from_list(rest_idx, cell_indices, dimension=1) - if debug > 3: print(f"CELL.MOLECLIST: {rest_labels=}") - if debug > 3: print(f"CELL.MOLECLIST: {rest_coord=}") - if debug > 3: print(f"CELL.MOLECLIST: {rest_indices=}") - blocklist = split_species(rest_labels, rest_coord, indices=rest_indices, cov_factor=cov_factor, debug=debug) - for idx in ions_idx: blocklist.append([idx]) - else : - blocklist = split_species(self.labels, self.coord, cov_factor=cov_factor, debug=debug) - - if blocklist is None: - return None - else : - if debug > 3: print(f"CELL.MOLECLIST: found {len(blocklist)} blocks") - if debug > 3: print(f"CELL.MOLECLIST: {blocklist=}") - - self.moleclist = [] - for b in blocklist: - if debug > 3: print(f"CELL.MOLECLIST: doing block={b}") - mol_labels = extract_from_list(b, self.labels, dimension=1) - mol_coord = extract_from_list(b, self.coord, dimension=1) - mol_frac_coord = extract_from_list(b, self.frac_coord, dimension=1) - # Creates Molecule Object - newmolec = molecule(mol_labels, mol_coord, mol_frac_coord) - # For debugging - newmolec.origin = "cell.get_moleclist" - # Adds cell as parent of the molecule, with indices b - newmolec.add_parent(self, indices=b) - newmolec.set_adjacency_parameters(cov_factor, metal_factor) - # Creates The atom objects with adjacencies - newmolec.set_atoms(create_adjacencies=True, debug=debug) - # The split_complex must be below the frac_coord, so they are carried on to the ligands - # if newmolec.iscomplex: - # if debug > 0: print(f"CELL.MOLECLIST: splitting complex") - # newmolec.split_complex(debug=debug) - # Not needed here, as the reconstruction will take care of it - self.moleclist.append(newmolec) - - return self.moleclist - - ####################################################### - def arrange_cell_coord(self): - ## Updates the cell coordinates preserving the original atom ordering - ## Do do so, it uses the variable parent_indices stored in each molecule - self.coord = np.zeros((self.natoms,3)) - for mol in self.moleclist: - idx = mol.get_parent_indices("cell") - for z in zip(idx, mol.coord): - for i in range(0,3): - self.coord[z[0]][i] = z[1][i] - self.coord = np.ndarray.tolist(self.coord) - - ####################################################### - def get_occurrence(self, substructure: object) -> int: - occurrence = 0 - ## Molecules in Cell - if hasattr(substructure,"subtype") and hasattr(self,"moleclist"): - if substructure.subtype == 'molecule': - for m in self.moleclist: - issame = compare_species(substructure, m) - if issame: occurrence += 1 - return occurrence - - ####################################################### - def data_for_postproc(self, molecules: list, indices: list, options: list): - self.pp_molecules = molecules - self.pp_indices = indices - self.pp_options = options - - ####################################################### - def reconstruct(self, cov_factor: float=None, metal_factor: float=None, debug: int=0): - if not hasattr(self,"refmoleclist"): print("CELL.RECONSTRUCT. CELL missing list of reference molecules"); return - if cov_factor is None: cov_factor = self.refmoleclist[0].cov_factor - if metal_factor is None: metal_factor = self.refmoleclist[0].metal_factor - - ## Get the fragments, which is the moleclist of a fragmented cell - fragments = self.get_moleclist(cov_factor=cov_factor, metal_factor=metal_factor, debug=debug) - - if fragments is None: - self.error_get_fragments = True - return # Stopping. self.error_get_fragments must be False to reconstruct the cell - else: - self.error_get_fragments = False - - ## Classifies fragments - # for f in fragments: - # if not hasattr(f,"frac_coord"): f.get_fractional_coord(self.cellvec) - molecules, fragments, hydrogens = classify_fragments(fragments, self.refmoleclist, debug=debug) - if debug > 0: print(f"CELL.RECONSTRUCT: {len(molecules)} {molecules=}") - if debug > 0: print(f"CELL.RECONSTRUCT: {len(fragments)} {fragments=}") - if debug > 0: print(f"CELL.RECONSTRUCT: {len(hydrogens)} {hydrogens=}") - - ## Determines if Reconstruction is necessary - if len(fragments) > 0 or len(hydrogens) > 0: self.is_fragmented = True - else: self.is_fragmented = False - - self.moleclist = [] - if not self.is_fragmented: - for mol in molecules: - self.moleclist.append(mol) - ######################################### - ## In principle, this is not necessary ## - ######################################### - #newmolec = molecule(mol.labels, mol.coord) - #newmolec.add_parent(self,mol_indices) - #newmolec.set_fractional_coord(mol.frac_coord) - #newmolec.set_atoms(debug=debug, create_adjacencies=True) - #if newmolec.iscomplex: - # newmolec.split_complex() - # newmolec.get_hapticity() - #self.moleclist.append(newmolec) - return self.moleclist - else : - reconstructed_molecules, Warning = fragments_reconstruct(molecules, fragments, hydrogens, self.refmoleclist, self.cellvec, cov_factor, metal_factor) - - if Warning: - self.is_fragmented = True - self.error_reconstruction = True - - else : - self.is_fragmented = False - self.error_reconstruction = False - - ## For consistency, we create the molecules once again, even if mol is already a molecule-class object. - ## One must follow the same structure as in self.get_moleclist() - for mol in reconstructed_molecules: - newmolec = molecule(mol.labels, mol.coord) - newmolec.origin = "cell.reconstruct" - newmolec.set_adjacency_parameters(cov_factor, metal_factor) - newmolec.set_atoms(create_adjacencies=True, debug=debug) - newmolec.add_parent(self, mol.cell_indices) - newmolec.set_fractional_coord(mol.frac_coord) - if newmolec.iscomplex: newmolec.split_complex() - self.moleclist.append(newmolec) - return self.moleclist - - ####################################################### - def reset_charge_assignment(self, debug: int=0): - if not hasattr(self,"moleclist"): return None - for mol in self.moleclist: - mol.reset_charge() - - ####################################################### - def get_selected_cs(self, debug: int=0): - if not hasattr(self, "unique_species"): self.get_unique_species(debug=debug) - - self.selected_cs = [] - for unique_specie in self.unique_species: - if debug >= 0 : print("Get possible charge states for unique specie", unique_specie.formula) - tmp = unique_specie.get_possible_cs(debug=debug) - if tmp is None: - self.selected_cs.append(None) - elif unique_specie.subtype != "metal": - self.selected_cs.append(list([cs.corr_total_charge for cs in unique_specie.possible_cs])) - else : - self.selected_cs.append(unique_specie.possible_cs) - - for specie in self.species_list: - print("Get possible charge states for species list", specie.formula) - tmp = specie.get_possible_cs(debug=debug) - if tmp is None: - self.selected_cs.append(None) - elif specie.subtype != "metal": - self.selected_cs.append(list([cs.corr_total_charge for cs in specie.possible_cs])) - else : - self.selected_cs.append(specie.possible_cs) - - if None in self.selected_cs: - self.error_get_poscharges = True - else : - self.error_get_poscharges = False - ####################################################### - ####################################################### - def assign_charges (self, debug: int=0): - - # if not hasattr(self,"unique_species"): self.get_unique_species(debug=debug) - # if debug >= 1: print(f"{len(self.unique_species)} Species (Metal or Ligand or Molecules) to Characterize") - - # selected_cs = self.get_selected_cs(debug=debug) - # if debug >= 1: print(f"Selected Charges: {selected_cs=}") - - final_charge_distribution, final_charges = balance_charge(self.unique_indices, self.unique_species, debug=debug) - print("final_charge_distribution", final_charge_distribution) - print("final_charges", final_charges) - # if len(final_charge_distribution) > 1: - # if debug >= 1: print("More than one Possible Distribution Found:", final_charge_distribution) - # second_final_charge_distribution, second_final_charges = balance_charge(self.unique_indices, self.unique_species, predict=True, debug=debug) - # print("second_final_charge_distribution", second_final_charge_distribution) - # print("second_final_charges", second_final_charges) - - # if len(second_final_charge_distribution) == 1: - # self.error_multiple_distrib = False - # self.error_empty_distrib = False - # final_charge_distribution = second_final_charge_distribution - # final_charges = second_final_charges - # else: - # self.error_multiple_distrib = True - # self.error_empty_distrib = False - # return # Stopping. - - # elif len(final_charge_distribution) == 0: # - # if debug >= 1: print("No valid Distribution Found", final_charge_distribution) - # second_final_charge_distribution, second_final_charges = balance_charge(self.unique_indices, self.unique_species, rare=True, debug=debug) - # print("second_final_charge_distribution", second_final_charge_distribution) - # print("second_final_charges", second_final_charges) - - # if len(second_final_charge_distribution) == 1: - # self.error_multiple_distrib = False - # self.error_empty_distrib = False - # final_charge_distribution = second_final_charge_distribution - # final_charges = second_final_charges - - # else: - # self.error_multiple_distrib = False - # self.error_empty_distrib = True - # return # Stopping. - if len(final_charge_distribution) > 1: - if debug >= 1: print("More than one Possible Distribution Found:", final_charge_distribution) - self.error_multiple_distrib = True - self.error_empty_distrib = False - return # Stopping. - - elif len(final_charge_distribution) == 0: - if debug >= 1: print("No valid Distribution Found", final_charge_distribution) - self.error_multiple_distrib = False - self.error_empty_distrib = True - return # Stopping. - - else: # Only one possible charge distribution -> getcharge for the repeated species - self.error_multiple_distrib = False - self.error_empty_distrib = False - - if self.error_multiple_distrib == False and self.error_empty_distrib == False: - if debug >= 1: - print(f"\nFINAL Charge Distribution: {final_charge_distribution}\n") - print("#########################################") - print("Assigning Charges and Preparing Molecules") - print("#########################################") - - for specie, final_charge in zip(self.unique_species, final_charges[0]): - assign_charge_to_specie(specie, final_charge, debug=debug) - for idx, ref in enumerate(self.refmoleclist): - if ref.iscomplex or ref.has_IA_IIA: - for jdx, lig in enumerate(ref.ligands): - if lig.unique_index == specie.unique_index: - set_charge_state (specie, lig, mode=1, debug=debug) - for kdx, met in enumerate(ref.metals): - if met.unique_index == specie.unique_index: - met.set_charge(specie.charge) - else: - if ref.unique_index == specie.unique_index: - set_charge_state (specie, ref, mode=1, debug=debug) - - for idx, ref in enumerate(self.refmoleclist): - if ref.iscomplex or ref.has_IA_IIA : prepare_mol(ref) - - for idx, ref in enumerate(self.refmoleclist): - print(f"ASSIGN_CHARGES: Refenrence Molecule {idx}: {ref.formula}") - if ref.iscomplex or ref.has_IA_IIA: - print("ASSIGN_CHARGES: Complex", idx, ref.formula, ref.totcharge) - for jdx, lig in enumerate(ref.ligands): - print("ASSIGN_CHARGES: Ligand", idx, jdx, lig.formula, lig.totcharge, lig.smiles) - for kdx, met in enumerate(ref.metals): - print("ASSIGN_CHARGES: Metal", idx, kdx, met.formula, met.charge) - else: - print("ASSIGN_CHARGES: Non-Complex", idx, ref.formula, ref.totcharge, ref.smiles) - return - - # for idx, mol in enumerate(self.moleclist): - # print(f"ASSIGN_CHARGES: Unitcell Molecule {idx}: {mol.formula}") - # if not mol.iscomplex and not mol.has_IA_IIA: - # for ref in self.refmoleclist: - # if (not ref.iscomplex and not ref.has_IA_IIA) and (mol.unique_index == ref.unique_index) : - # issame = compare_reference_indices(ref, mol, debug=debug) - # if issame: - # set_charge_state (ref, mol, mode=2, debug=debug) - # else: - # for ref in self.refmoleclist: - # if (ref.iscomplex or ref.has_IA_IIA) and (mol.formula == ref.formula): - # for jdx, lig in enumerate(mol.ligands): - # for rdx, ref_lig in enumerate(ref.ligands): - # if lig.formula == ref_lig.formula: - # issame = compare_reference_indices(ref_lig, lig, debug=debug) - # if issame: - # set_charge_state (ref_lig, lig, mode=2, debug=debug) - # # else: - # # print("ERROR: ASSIGN_CHARGES: Ligand", idx, jdx, rdx, lig.formula, ref_lig.totcharge, ref_lig.smiles) - # for kdx, met in enumerate(mol.metals): - # for ref_met in ref.metals: - # if (met.formula == ref_met.formula): - # if ref_met.get_parent_index("reference") == met.get_parent_index("reference"): - # met.set_charge(ref_met.charge) - - - # for idx, mol in enumerate(self.moleclist): - # if mol.iscomplex or mol.has_IA_IIA: prepare_mol(mol) - - # for idx, mol in enumerate(self.moleclist): - # print(f"ASSIGN_CHARGES: Unitcell Molecule {idx}: {mol.formula}") - # if mol.iscomplex or mol.has_IA_IIA: - # print("ASSIGN_CHARGES: Complex", idx, mol.formula, mol.totcharge) - # for jdx, lig in enumerate(mol.ligands): - # print("ASSIGN_CHARGES: Ligand", idx, jdx, lig.formula, lig.totcharge, lig.smiles) - # for kdx, met in enumerate(mol.metals): - # print("ASSIGN_CHARGES: Metal", idx, kdx, met.formula, met.charge) - # else: - # print("ASSIGN_CHARGES: Non-Complex", idx, mol.formula, mol.totcharge, mol.smiles) - ####################################################### - def assign_charges_for_refcell(self, debug: int=0): - - for specie in self.unique_species: - for idx, ref in enumerate(self.refmoleclist): - if ref.iscomplex or ref.has_IA_IIA: - for jdx, lig in enumerate(ref.ligands): - print(lig.unique_index) - print(specie.unique_index) - if lig.unique_index == specie.unique_index: - set_charge_state (specie, lig, mode=1, debug=debug) - for kdx, met in enumerate(ref.metals): - if met.unique_index == specie.unique_index: - met.set_charge(specie.charge) - else: - if ref.unique_index == specie.unique_index: - set_charge_state (specie, ref, mode=1, debug=debug) - - for idx, ref in enumerate(self.refmoleclist): - if ref.iscomplex or ref.has_IA_IIA: prepare_mol(ref) - - for idx, ref in enumerate(self.refmoleclist): - print(f"ASSIGN_CHARGES: Refenrence Molecule {idx}: {ref.formula}") - if ref.iscomplex or ref.has_IA_IIA: - print("ASSIGN_CHARGES: Complex", idx, ref.formula, ref.totcharge) - for jdx, lig in enumerate(ref.ligands): - print("ASSIGN_CHARGES: Ligand", idx, jdx, lig.formula, lig.totcharge, lig.smiles) - for kdx, met in enumerate(ref.metals): - print("ASSIGN_CHARGES: Metal", idx, kdx, met.formula, met.charge) - else: - print("ASSIGN_CHARGES: Non-Complex", idx, ref.formula, ref.totcharge, ref.smiles) - - ######################################################## - def assign_charges_for_unitcell(self, debug: int=0): - - for idx, mol in enumerate(self.moleclist): - print(f"ASSIGN_CHARGES: Unitcell Molecule {idx}: {mol.formula}") - if not mol.iscomplex and not mol.has_IA_IIA: - for ref in self.refmoleclist: - if (not ref.iscomplex and not ref.has_IA_IIA) and (mol.unique_index == ref.unique_index) : - issame = compare_reference_indices(ref, mol, debug=debug) - if issame: - set_charge_state (ref, mol, mode=2, debug=debug) - else: - for ref in self.refmoleclist: - if (ref.iscomplex or ref.has_IA_IIA) and (mol.formula == ref.formula): - for jdx, lig in enumerate(mol.ligands): - for rdx, ref_lig in enumerate(ref.ligands): - if lig.formula == ref_lig.formula: - issame = compare_reference_indices(ref_lig, lig, debug=debug) - if issame: - set_charge_state (ref_lig, lig, mode=2, debug=debug) - # else: - # print("ERROR: ASSIGN_CHARGES: Ligand", idx, jdx, rdx, lig.formula, ref_lig.totcharge, ref_lig.smiles) - for kdx, met in enumerate(mol.metals): - for ref_met in ref.metals: - if (met.formula == ref_met.formula): - if ref_met.get_parent_index("reference") == met.get_parent_index("reference"): - met.set_charge(ref_met.charge) - - - for idx, mol in enumerate(self.moleclist): - if mol.iscomplex or mol.has_IA_IIA: prepare_mol(mol) - - for idx, mol in enumerate(self.moleclist): - print(f"ASSIGN_CHARGES: Unitcell Molecule {idx}: {mol.formula}") - if mol.iscomplex or mol.has_IA_IIA: - print("ASSIGN_CHARGES: Complex", idx, mol.formula, mol.totcharge) - for jdx, lig in enumerate(mol.ligands): - print("ASSIGN_CHARGES: Ligand", idx, jdx, lig.formula, lig.totcharge, lig.smiles) - for kdx, met in enumerate(mol.metals): - print("ASSIGN_CHARGES: Metal", idx, kdx, met.formula, met.charge) - else: - print("ASSIGN_CHARGES: Non-Complex", idx, mol.formula, mol.totcharge, mol.smiles) - - ####################################################### - def check_charge_neutrality(self, debug: int=0): - if self.subtype == "reference": moleclist = self.refmoleclist - else: moleclist = self.moleclist - totcharge_list =[] - for mol in moleclist: - if not hasattr(mol,"totcharge"): - if debug >= 1: print(f"CELL.CHECK_CHARGE_NEUTRALITY: Charges not assigned yet") - self.is_neutral = None - else: - totcharge_list.append(mol.totcharge) - - if len(totcharge_list) !=0 : - if debug >= 1: print(f"Total Charge of the Cell ({self.subtype}): {sum(totcharge_list)} {totcharge_list=}") - if sum(totcharge_list) == 0: self.is_neutral = True - else: self.is_neutral = False - - ####################################################### - def assign_charges_old (self, debug: int=0) -> object: - ######### - # CHARGE# - ######### - # This function drives the determination of the charge the species in the unit cell - # The whole process is done by 4 functions, which are run at the specie class level: - # 1) spec.get_protonation_states(), which determines which atoms of the specie must have added elements (see above) to have a meaningful Lewis structure - # 2) spec.get_possible_cs(), which retrieves the possible charge states associated with the specie - # 3) spec.get_possible_charge_state(), which generates one connectivity for a set of charges - # 4) cell.select_charge_distr() chooses the best connectivity among the generated ones. - - # Basically, this function connects these other three functions, - # while managing some key information for those - # Initiates variables - ############ - - # (0) Makes sure the cell is reconstructed - # if not hasattr(self,"is_fragmented"): self.reconstruct(debug=debug) - # if self.is_fragmented: return # Stopping. self.is_fragmented must be false to determine the charges of the cell - - # (1) Indentify unique chemical species - if not hasattr(self,"unique_species"): self.get_unique_species(debug=debug) - if debug >= 1: print(f"{len(self.unique_species)} Species (Metal or Ligand or Molecules) to Characterize") - - # (2) Gets a preliminary list of possible charge states for each specie (former drive_poscharge) - selected_cs = [] - for idx, spec in enumerate(self.unique_species): - tmp = spec.get_possible_cs(debug=debug) - if tmp is None: - self.error_get_poscharges = True - return # Stopping. Empty list of possible charges received. - elif spec.subtype != "metal": - selected_cs.append(list([cs.corr_total_charge for cs in spec.possible_cs])) - else : - selected_cs.append(spec.possible_cs) - self.error_get_poscharges = False - - # Finds the charge_state that satisfies that the crystal must be neutral - final_charge_distribution = balance_charge(self.unique_indices, self.unique_species, debug=debug) - - if len(final_charge_distribution) > 1: - if debug >= 1: print("More than one Possible Distribution Found:", final_charge_distribution) - self.error_multiple_distrib = True - self.error_empty_distrib = False - pp_mols, pp_idx, pp_opt = prepare_unresolved(self.unique_indices, self.unique_species, final_charge_distribution, debug=debug) - self.data_for_postproc(pp_mols, pp_idx, pp_opt) - return # Stopping. - - elif len(final_charge_distribution) == 0: # - if debug >= 1: print("No valid Distribution Found", final_charge_distribution) - self.error_multiple_distrib = False - self.error_empty_distrib = True - return # Stopping. - - else: # Only one possible charge distribution -> getcharge for the repeated species - self.error_multiple_distrib = False - self.error_empty_distrib = False - - self.moleclist, self.error_prepare_mols = prepare_mols (self.moleclist, self.unique_indices, self.unique_species, final_charge_distribution[0], debug=debug) - - if self.error_prepare_mols: - return # Stopping. Error while preparing molecules - else : - return self.moleclist - - ####################################################### - def create_bonds(self, debug: int=0): - # if not hasattr(self,"error_prepare_mols"): self.assign_charges(debug=debug) - # if self.error_prepare_mols: return # Stopping. self.error_prepare_mols must be false to create the spin - - if self.subtype == "reference": moleclist = self.refmoleclist - else: moleclist = self.moleclist - - temp = [] - for mol in moleclist: - if debug >= 1: print(f"CELL.CREATE_BONDS: Creating Bonds for molecule {mol.formula}") - mol.create_bonds(debug=debug) - temp.append(mol.error_create_bonds) - if any(temp): - self.error_create_bonds = True - else: - self.error_create_bonds = False - - # # First part - # if not mol.iscomplex and not mol.has_IA_IIA: - # result = create_bonds_specie(mol, debug=debug) ### Creates bonds between molecule.atoms using the molecule.rdkit_object - # if result == False: - # if debug >= 1: print(f"CELL.CREATE_BONDS: error creating bonds for molecule {mol.formula}") - # self.error_create_bonds = True - # return # Exit the function entirely if creating bonds fails for a non-complex molecule - # else : - # if debug >= 1: print(f"CELL.CREATE_BONDS: Bonds created for molecule {mol.formula}") - - # # Second part - # if mol.iscomplex or mol.has_IA_IIA: - # for lig in mol.ligands: - # result = create_bonds_specie(lig, debug=debug) ### Creates bonds between ligand.atoms, which also belong to molecule.atoms, using the ligand.rdkit_object - # if result == False: - # if debug >= 1: print(f"CELL.CREATE_BONDS: error creating bonds for ligand {lig.formula}") - # self.error_create_bonds = True - # return # Exit the function entirely if creating bonds fails for any ligand - - # else : - # if debug >= 1: print(f"CELL.CREATE_BONDS: Bonds created for molecule {lig.formula}") - - # if mol.iscomplex or mol.has_IA_IIA: - # # Third part : adds metal-ligand bonds, metal-metal bonds, with a zero order - # create_metal_ligand_bonds(mol, debug=debug) - # create_metal_metal_bonds(mol, debug=debug) - - # # Fourth part : correction smiles of ligands - # mol.smiles_with_H = [lig.smiles for lig in mol.ligands] - # mol.smiles = [] - # for lig in mol.ligands: - # print(f"CELL.CREATE_BONDS: Correcting Smiles for ligand {lig.formula}") - # result = correct_smiles_ligand(lig, debug=debug) - # if result == False: - # if debug >= 1: print(f"CELL.CREATE_BONDS: error correcting smiles for ligand {lig.formula}") - # self.error_create_bonds = True - # return # Exit the function entirely - # else : - # if debug >= 1: print(f"CELL.CREATE_BONDS: Smiles corrected for ligand {lig.formula}") - # mol.smiles.append(lig.smiles) - - # self.error_create_bonds = False - - - ####################################################### - def assign_spin(self, debug: int=0) -> object: - # if not hasattr(self,"error_prepare_mols"): self.assign_charges(debug=debug) - # if self.error_prepare_mols: return None # Stopping. self.error_prepare_mols must be false to assign the spin - - if debug >= 1: - print("#########################################") - print(" Assigning Spin multiplicity ") - print("#########################################") - - if self.subtype == "reference": moleclist = self.refmoleclist - else: moleclist = self.moleclist - - for mol in moleclist: - if mol.iscomplex: - for metal in mol.metals: - if not hasattr(metal,"coord_nr"): - metal.get_coordination_geometry() - metal.get_coord_sphere_formula() - metal.get_spin(debug=debug) - mol.get_spin(debug=debug) - - ####################################################### - def predict_metal_ox(self, debug: int=0): - # if not hasattr(self,"error_prepare_mols"): self.assign_charges() - # if self.error_prepare_mols: return None # Stopping. self.error_prepare_mols must be false to assign the spin - if self.subtype == "reference": moleclist = self.refmoleclist - else: moleclist = self.moleclist - - for mol in moleclist: - if mol.iscomplex: - for metal in mol.metals: - if not hasattr(metal,"coord_nr"): - metal.get_coordination_geometry(debug=debug) - metal.get_coord_sphere_formula() - metal.predict_charge(debug=debug) - ####################################################### - - def assess_errors(self, mode): - ### This function might be called to print the possible errors found in the unit cell, during reconstruction, and charge/spin assignment - - if mode == "cif_formula": - print("-------------------------------") - print("Errors in disagreement with CIF") - print("-------------------------------") - if self.has_isolated_H: case = 1 - elif self.disagree_with_cif_formula:case = 9 - else : case = 0 - if mode == "hydrogens": - print("-------------------------------") - print("Errors in hydrogens") - print("-------------------------------") - if self.has_isolated_H: case = 1 - # elif self.has_missing_H: case = 2 - elif self.missing_H_in_Water: case = 2 - elif self.missing_H_in_CoordWater: case = 3 - elif self.missing_H_in_Carbon: case = 4 - else : case = 0 - elif mode == "possible_charges": - print("-------------------------------") - print("Errors in possible charges") - print("-------------------------------") - if self.has_isolated_H: case = 1 - # elif self.has_missing_H: case = 2 - elif self.missing_H_in_Water: case = 2 - elif self.missing_H_in_CoordWater: case = 3 - elif self.missing_H_in_Carbon: case = 4 - elif self.error_get_poscharges: case = 5 - else : case = 0 - elif mode == "reconstruction": - print("-------------------------------") - print("Errors in reconstruction") - print("-------------------------------") - if self.has_isolated_H: case = 1 - elif self.has_missing_H: case = 2 - elif self.error_get_fragments: case = 3 - elif self.error_reconstruction: case = 4 - else : case = 0 - elif mode == "charge_assignment": - print("-------------------------------") - print("Errors in charge assignment") - print("-------------------------------") - if self.has_isolated_H: case = 1 - elif self.has_missing_H: case = 2 - elif self.error_get_fragments: case = 3 - elif self.error_reconstruction: case = 4 - elif self.error_get_poscharges : case = 5 - elif self.error_multiple_distrib : case = 6 - elif self.error_empty_distrib : case = 7 - # elif self.error_create_bonds : case = 8 - else : case = 0 - # handle_error(case) - # print("") - # elif mode == "neutrality": - # print("-------------------------------") - # print("Errors in Unit Cell") - # print("-------------------------------") - # # Get reference molecules - # # if self.has_isolated_H: case = 1 - # # elif self.has_missing_H: case = 2 - # # Reconstruct Cell - # # elif self.error_get_fragments: case = 3 - # # elif self.error_reconstruction: case = 4 - # # Assign Charges - # # elif self.error_get_poscharges : case = 5 - # # elif self.error_multiple_distrib : case = 6 - # # elif self.error_empty_distrib : case = 7 - # # elif self.error_prepare_mols : case = 8 - # if not self.is_neutral: case = 9 - # # No errors - # else : case = 0 - if mode == "hydrogens" or mode == "possible_charges": - if case == 2 or case == 3 or case == 4 : - handle_error(2) - if case == 2: - print(" - Missing Hydrogens in Water Molecules") - elif case == 3: - print(" - Missing Hydrogens in Coordinated Water Molecules") - elif case == 4: - print(" - Missing Hydrogens in Carbon Atoms") - else : - handle_error(case) - else: - handle_error(case) - print("") - self.error_case = case - - ####################################################### - def save(self, path): - print(f"SAVING cell2mol CELL ({self.subtype}) object to {path}") - with open(path, "wb") as fil: - pickle.dump(self,fil) - - ####################################################### - def __repr__(self): - to_print = f'------------- Cell2mol CELL Object ----------------\n' - to_print += f' Version = {self.version}\n' - to_print += f' Type = {self.type}\n' - if hasattr(self,'subtype'): to_print += f' Sub-Type = {self.subtype}\n' - to_print += f' Name (Refcode) = {self.name}\n' - to_print += f' Num Atoms = {self.natoms}\n' - to_print += f' Cell Parameters a:c = {self.cell_param[0:3]}\n' - to_print += f' Cell Parameters al:ga = {self.cell_param[3:6]}\n' - # to_print += f' Cell Vector = {self.cell_vector}\n' - if hasattr(self,"moleclist"): - to_print += f' # Molecules: = {len(self.moleclist)}\n' - to_print += f' With Formulae: \n' - for idx, m in enumerate(self.moleclist): - to_print += f' {idx}: {m.formula} \n' - to_print += '---------------------------------------------------\n' - if hasattr(self,"refmoleclist"): - to_print += f' # of Ref Molecules: = {len(self.refmoleclist)}\n' - to_print += f' With Formulae: \n' - for idx, ref in enumerate(self.refmoleclist): - to_print += f' {idx}: {ref.formula} \n' - return to_print diff --git a/cell2mol/classes/__init__.py b/cell2mol/classes/__init__.py new file mode 100644 index 000000000..8ec43953c --- /dev/null +++ b/cell2mol/classes/__init__.py @@ -0,0 +1,46 @@ +from .atom import Atom +from .molecule import Molecule +from .ligand import Ligand +from .metal import Metal +from .cell import Cell +from .reference import Reference +from .unitcell import UnitCell +from .cells import Cells +from .bond import Bond +from .specie import Specie +from .group import Group +from .protonation import Protonation +from .charge_state import ChargeState + +__all__ = [ + "Atom", + "Molecule", + "Ligand", + "Metal", + "Cell", + "Reference", + "UnitCell", + "Cells", + "Bond", + "Specie", + "Group", + "Protonation", + "ChargeState", +] + +# Rebuild models to resolve forward references +# This is needed because we use RefList["Specie"] and similar forward refs +# that need to be resolved after all classes are imported +Atom.model_rebuild() +Specie.model_rebuild() +Metal.model_rebuild() +Molecule.model_rebuild() +Ligand.model_rebuild() +Group.model_rebuild() +Cell.model_rebuild() +Reference.model_rebuild() +UnitCell.model_rebuild() +Cells.model_rebuild() +Bond.model_rebuild() +Protonation.model_rebuild() +ChargeState.model_rebuild() diff --git a/cell2mol/classes/atom.py b/cell2mol/classes/atom.py new file mode 100644 index 000000000..b9e4b67e4 --- /dev/null +++ b/cell2mol/classes/atom.py @@ -0,0 +1,483 @@ +from __future__ import annotations + +from typing import TYPE_CHECKING, Any + +import numpy as np +from pydantic import Field, computed_field +from typing_extensions import deprecated +from cell2mol.element_utils import get_radii +from cell2mol.elementdata import ElementData +from cell2mol.my_types import NDArray, OptionalInt, RefList +from cell2mol.utils import BaseModel + +if TYPE_CHECKING: + from cell2mol.classes.bond import Bond + from cell2mol.classes.specie import Specie +import logging + +elemdatabase = ElementData() +logger = logging.getLogger(__name__) + + +class Atom(BaseModel): + label: str + coord: NDArray + frac_coord: NDArray | None = None + radii: float | None = None + + # Cross-references to parent species (Molecule, Ligand, etc.) + parents: RefList["Specie"] = Field(default_factory=list) + parents_index: list[int] = Field(default_factory=list) + + # Seem to be set in various places depending on the context, might need to check this + cov_factor: float | None = None + metal_factor: float | None = None + atom_site_label: str | None = None + connec: int | None = None + mconnec: int | None = None + adjacency: list[int] = Field(default_factory=list) + metal_adjacency: list[int] = Field(default_factory=list) + charge: OptionalInt = None + + # Cross-references to Bond objects + bonds: RefList["Bond"] = Field(default_factory=list) + + type: str = Field(default="atom", frozen=True) + # Originally atom does not have a subtype, but we add it for consistency with other classes + subtype: str = Field(default="atom") + + @computed_field + @property + def atnum(self) -> int: + return elemdatabase.elementnr[self.label] + + @computed_field + @property + def block(self) -> str: + return elemdatabase.elementblock[self.label] + + @computed_field + @property + def formula(self) -> str: + return self.label + + def model_post_init(self, __context: Any) -> None: + if self.radii is None: + radii_array = get_radii([self.label]) + self.radii = float(radii_array[0]) + + @classmethod + @deprecated("Use atom() with the keyword arguments instead.") + def from_positional( + cls, label: str, coord: list, frac_coord: list = None, radii: float = None + ) -> "Atom": + """ + Creates an atom instance using positional arguments. + + Args: + label: Atomic symbol + coord: Cartesian coordinates [x,y,z] + frac_coord: Optional fractional coordinates + radii: Optional atomic radius + + Returns: + atom: New atom instance + """ + return cls(label=label, coord=coord, frac_coord=frac_coord, radii=radii) + + def add_parent(self, parent: object, index: int, overwrite: bool = True): + ## associates a parent specie to self. The atom indices of self in parent are given in "indices" + ## if parent of the same subtype already in self.parent then it is overwritten + ## this is to avoid having a substructure (e.g. a ligand) in more than one superstructure (e.g. a molecule) + append = True + for idx, p in enumerate(self.parents): + if p.subtype == parent.subtype: + if overwrite: + self.parents[idx] = parent + self.parents_index[idx] = index + append = False + if append: + self.parents.append(parent) + self.parents_index.append(index) + + def check_parent(self, subtype: str): + ## checks if parent of a given subtype exists + for p in self.parents: + if p.subtype == subtype: + return True + return False + + def get_parent(self, subtype: str): + ## retrieves parent of a given subtype + for p in self.parents: + if p.subtype == subtype: + return p + return None + + def get_parent_index(self, subtype: str): + ## retrieves parent of a given subtype + for idx, p in enumerate(self.parents): + if p.subtype == subtype: + return self.parents_index[idx] + return None + + def add_bond(self, newbond: object): + at1 = newbond.atom1 + at2 = newbond.atom2 + found = False + for b in self.bonds: + if (b.atom1 == at1 and b.atom2 == at2) or ( + b.atom1 == at2 and b.atom2 == at1 + ): + ### It means that the same bond has already been defined + found = True + if not found: + self.bonds.append(newbond) + + def set_adjacency_parameters(self, cov_factor: float, metal_factor: float) -> None: + self.cov_factor = cov_factor + self.metal_factor = metal_factor + + def reset_charge(self) -> None: + self.charge = None + self.possible_cs = None + + def set_charge(self, charge: int) -> None: + self.charge = int(charge) + + def set_adjacencies(self, adjmat, madjmat, adjnum: int, madjnum: int): + self.connec = int(adjnum) + self.mconnec = int(madjnum) + self.adjacency = [] + self.metal_adjacency = [] + + # The atom only receives one row of adjmat, so this is not a matrix anymore. + # Keep in mind that the idx are the indices of parent + for idx, c in enumerate(adjmat): + if c > 0: + self.adjacency.append(idx) + # The atom only receives one row of madjmat, so this is not a matrix anymore + for idx, c in enumerate(madjmat): + if c > 0: + self.metal_adjacency.append(idx) + + @property + def closest_metal(self): + return self.get_closest_metal() + + def get_closest_metal(self): + ## Here, the list of metal atoms must be provided + apos = self.coord + dist = [] + mol = self.get_parent("molecule") + for met in mol.metals: + bpos = np.array(met.coord) + dist.append(np.linalg.norm(apos - bpos)) + closest_metal = mol.metals[np.argmin(dist)] + return closest_metal + + def set_atom_site_label(self, atom_site_label: str) -> None: + self.atom_site_label = atom_site_label + + def __str__(self): + # This will make print(object) behave like before + return self.__repr__() + + def __repr__(self, indirect: bool = False): + to_print = "" + if not indirect: + to_print += "------------- Cell2mol ATOM Object ----------------\n" + to_print += f" Type = {self.type}\n" + if self.subtype is not None: + to_print += f" Sub-Type = {self.subtype}\n" + to_print += f" Label = {self.label}\n" + if self.atom_site_label is not None: + to_print += f" Atom Site Label = {self.atom_site_label}\n" + to_print += f" Atomic Number = {self.atnum}\n" + idx = self.get_parent_index("molecule") + if idx is not None: + to_print += f" Index in Molecule = {idx}\n" + idx = self.get_parent_index("ligand") + if idx is not None: + to_print += f" Index in Ligand = {idx}\n" + if self.mconnec is not None: + to_print += f" Metal Adjacency (mconnec) = {self.mconnec}\n" + if self.connec is not None: + to_print += f" Regular Adjacencies (connec) = {self.connec}\n" + if self.charge is not None: + to_print += f" Atom Charge = {self.charge}\n" + if not indirect: + to_print += "----------------------------------------------------\n" + return to_print + + def reset_mconnec(self, met, diff: int = -1): + self_info = f"{self.label}{f' ({self.atom_site_label})' if self.atom_site_label else ''}" + met_info = ( + f"{met.label}{f' ({met.atom_site_label})' if met.atom_site_label else ''}" + ) + if not self.check_parent("molecule"): + return + self_mol_idx = self.get_parent_index("molecule") + met_mol_idx = met.get_parent_index("molecule") + mol = self.get_parent("molecule") + logger.info(f"Reset mconnec: atom={self_info} diff={diff} to metal={met_info}") + + logger.debug( + "Initial atom connectivity: mol_idx=%s connec=%d mconnec=%d adj=%s madj=%s", + self_mol_idx, + self.connec, + self.mconnec, + self.adjacency, + self.metal_adjacency, + ) + + logger.debug( + "Initial metal connectivity: mol_idx=%s connec=%d mconnec=%d adj=%s madj=%s", + met_mol_idx, + met.connec, + met.mconnec, + met.adjacency, + met.metal_adjacency, + ) + + # ---------- Fix adjacency matrix in Molecule level ---------- + + logger.info( + "Updating molecule: atom_idx=%d metal_idx=%d", self_mol_idx, met_mol_idx + ) + + logger.debug( + "Molecule before: atom(connec=%d,mconnec=%d) metal(connec=%d,mconnec=%d)", + mol.atoms[self_mol_idx].connec, + mol.atoms[self_mol_idx].mconnec, + met.connec, + met.mconnec, + ) + + # Update numbers + mol.madjnum[self_mol_idx] += diff + mol.madjnum[met_mol_idx] += diff + mol.adjnum[self_mol_idx] += diff + mol.adjnum[met_mol_idx] += diff + + # Update matrices + mol.madjmat[self_mol_idx, met_mol_idx] += diff + mol.madjmat[met_mol_idx, self_mol_idx] += diff + mol.adjmat[self_mol_idx, met_mol_idx] += diff + mol.adjmat[met_mol_idx, self_mol_idx] += diff + + self.set_adjacencies( + mol.adjmat[self_mol_idx], + mol.madjmat[self_mol_idx], + mol.adjnum[self_mol_idx], + mol.madjnum[self_mol_idx], + ) + + met.set_adjacencies( + mol.adjmat[met_mol_idx], + mol.madjmat[met_mol_idx], + mol.adjnum[met_mol_idx], + mol.madjnum[met_mol_idx], + ) + + logger.info( + "Molecule after: atom(connec=%d,mconnec=%d adj=%s madj=%s)", + mol.atoms[self_mol_idx].connec, + mol.atoms[self_mol_idx].mconnec, + mol.atoms[self_mol_idx].adjacency, + mol.atoms[self_mol_idx].metal_adjacency, + ) + + logger.debug( + "Metal after: connec=%d mconnec=%d adj=%s madj=%s", + mol.atoms[met_mol_idx].connec, + mol.atoms[met_mol_idx].mconnec, + mol.atoms[met_mol_idx].adjacency, + mol.atoms[met_mol_idx].metal_adjacency, + ) + + logger.info( + f"Final: atom={self_info} diff={diff} to metal={met_info}", + ) + + logger.debug( + "Final atom connectivity: mol_idx=%s connec=%d mconnec=%d adj=%s madj=%s", + self_mol_idx, + self.connec, + self.mconnec, + self.adjacency, + self.metal_adjacency, + ) + + logger.debug( + "Final metal connectivity: mol_idx=%s connec=%d mconnec=%d adj=%s madj=%s", + met_mol_idx, + met.connec, + met.mconnec, + met.adjacency, + met.metal_adjacency, + ) + + def reset_mconnec_v1(self, met, diff: int = -1): + logger.info( + "Reset mconnec: atom=%s%s diff=%d to metal=%s%s", + self.label, + f" ({self.atom_site_label})" if self.atom_site_label is not None else "", + diff, + met.label, + f" ({met.atom_site_label})" if met.atom_site_label is not None else "", + ) + + logger.debug( + "Initial atom connectivity: mol_idx=%s connec=%d mconnec=%d adj=%s madj=%s", + self.get_parent_index("molecule"), + self.connec, + self.mconnec, + self.adjacency, + self.metal_adjacency, + ) + + # Update atom + # self.mconnec += diff + # self.connec += diff + + logger.debug( + "Initial metal connectivity: mol_idx=%s connec=%d mconnec=%d adj=%s madj=%s", + met.get_parent_index("molecule"), + met.connec, + met.mconnec, + met.adjacency, + met.metal_adjacency, + ) + + # Update metal + # met.mconnec += diff + # met.connec += diff + + if self.check_parent("ligand"): + lig = self.get_parent("ligand") + + lig.get_connected_idx() + logger.debug("Ligand connected indices (before): %s", lig.connected_idx) + lig.get_connected_atoms() + logger.debug( + "Ligand connected atoms (before): %s%s", + [atom.label for atom in lig.connected_atoms], + [atom.atom_site_label for atom in lig.connected_atoms], + ) + + # ---------- Molecule ---------- + if self.check_parent("molecule"): + mol = self.get_parent("molecule") + mol_idx = self.get_parent_index("molecule") + met_idx = met.get_parent_index("molecule") + + logger.info("Updating molecule: atom_idx=%d metal_idx=%d", mol_idx, met_idx) + + logger.debug( + "Molecule before: atom(connec=%d,mconnec=%d) metal(connec=%d,mconnec=%d)", + mol.atoms[mol_idx].connec, + mol.atoms[mol_idx].mconnec, + met.connec, + met.mconnec, + ) + + # Update numbers + mol.madjnum[mol_idx] += diff + mol.madjnum[met_idx] += diff + mol.adjnum[mol_idx] += diff + mol.adjnum[met_idx] += diff + + # Update matrices + mol.madjmat[mol_idx, met_idx] += diff + mol.madjmat[met_idx, mol_idx] += diff + mol.adjmat[mol_idx, met_idx] += diff + mol.adjmat[met_idx, mol_idx] += diff + + self.set_adjacencies( + mol.adjmat[mol_idx], + mol.madjmat[mol_idx], + mol.adjnum[mol_idx], + mol.madjnum[mol_idx], + ) + + met.set_adjacencies( + mol.adjmat[met_idx], + mol.madjmat[met_idx], + mol.adjnum[met_idx], + mol.madjnum[met_idx], + ) + + logger.info( + "Molecule after: atom(connec=%d,mconnec=%d adj=%s madj=%s)", + mol.atoms[mol_idx].connec, + mol.atoms[mol_idx].mconnec, + mol.atoms[mol_idx].adjacency, + mol.atoms[mol_idx].metal_adjacency, + ) + + logger.debug( + "Metal after: connec=%d mconnec=%d adj=%s madj=%s", + met.connec, + met.mconnec, + met.adjacency, + met.metal_adjacency, + ) + + # ---------- Ligand ---------- + if self.check_parent("ligand"): + lig = self.get_parent("ligand") + lig_idx = self.get_parent_index("ligand") + + logger.info( + "Updating ligand: atom=%s%s ligand_idx=%d", + self.label, + f" ({self.atom_site_label})" + if self.atom_site_label is not None + else "", + lig_idx, + ) + logger.info("Ligand adjnum (before): %s", lig.adjnum[lig_idx]) + logger.info("Ligand madjnum (before): %s", lig.madjnum[lig_idx]) + + lig.madjnum[lig_idx] += diff + lig.adjnum[lig_idx] += diff + + logger.info("Ligand adjnum (after): %s", lig.adjnum[lig_idx]) + logger.info("Ligand madjnum (after): %s", lig.madjnum[lig_idx]) + + lig.get_connected_idx() + logger.debug("Ligand connected indices (after): %s", lig.connected_idx) + lig.get_connected_atoms() + logger.debug( + "Ligand connected atoms (after): %s%s", + [atom.label for atom in lig.connected_atoms], + [atom.atom_site_label for atom in lig.connected_atoms], + ) + + logger.info( + "Final: atom=%s%s diff=%d to metal=%s%s", + self.label, + f" ({self.atom_site_label})" if self.atom_site_label is not None else "", + diff, + met.label, + f" ({met.atom_site_label})" if met.atom_site_label is not None else "", + ) + + logger.debug( + "Final atom connectivity: mol_idx=%s connec=%d mconnec=%d adj=%s madj=%s", + self.get_parent_index("molecule"), + self.connec, + self.mconnec, + self.adjacency, + self.metal_adjacency, + ) + + logger.debug( + "Final metal connectivity: mol_idx=%s connec=%d mconnec=%d adj=%s madj=%s", + met.get_parent_index("molecule"), + met.connec, + met.mconnec, + met.adjacency, + met.metal_adjacency, + ) diff --git a/cell2mol/classes/bond.py b/cell2mol/classes/bond.py new file mode 100644 index 000000000..1b702d753 --- /dev/null +++ b/cell2mol/classes/bond.py @@ -0,0 +1,63 @@ +from __future__ import annotations + +from typing import Any + +import numpy as np +from pydantic import Field +from typing_extensions import deprecated + +from cell2mol.classes.atom import Atom +from cell2mol.elementdata import ElementData +from cell2mol.my_types import Type +from cell2mol.utils import BaseModel + +elemdatabase = ElementData() + + +############### +### BOND ###### +############### +class Bond(BaseModel): + model_config = {"arbitrary_types_allowed": True} + + atom1: Atom + atom2: Atom + order: float = Field(default=1, alias="bond_order") + distance: float | None = None + type: Type = Field(default="bond") + + def model_post_init(self, __context: Any) -> None: + if self.atom1 is not None and self.atom2 is not None: + self.distance = round( + float( + np.linalg.norm( + np.array(self.atom1.coord) - np.array(self.atom2.coord) + ) + ), + 3, + ) + + def __str__(self): + return self.__repr__() + + def __repr__(self): + to_print = "" + to_print += "------------- Cell2mol BOND Object --------------\n" + to_print += f" Type = {self.type}\n" + idx1 = self.atom1.get_parent_index("molecule") + idx2 = self.atom2.get_parent_index("molecule") + to_print += f" Molecule Atom 1 label = {self.atom1.label}\n" + to_print += f" Molecule Atom 2 label = {self.atom2.label}\n" + to_print += f" Molecule Atom 1 index = {idx1}\n" + to_print += f" Molecule Atom 2 index = {idx2}\n" + to_print += f" Bond Order = {self.order}\n" + to_print += f" Distance = {self.distance}\n" + to_print += "----------------------------------------------------\n" + return to_print + + @classmethod + @deprecated("Use Bond() with keyword arguments instead.") + def from_positional( + cls, atom1: object, atom2: object, bond_order: float = 1 + ) -> "Bond": + return cls(atom1=atom1, atom2=atom2, bond_order=bond_order) diff --git a/cell2mol/classes/cell.py b/cell2mol/classes/cell.py new file mode 100644 index 000000000..f7f60921c --- /dev/null +++ b/cell2mol/classes/cell.py @@ -0,0 +1,334 @@ +from __future__ import annotations +import pickle +import logging +from typing import Any +from typing_extensions import deprecated +from pydantic import Field +from cell2mol.classes.metal import Metal +from cell2mol.classes.specie import Specie +from cell2mol.classes.molecule import Molecule +from cell2mol.charge.specie_assigner import prepare_mol +from cell2mol.elementdata import ElementData +from cell2mol.utils import BaseModel, config +from cell2mol.my_types import NDArray, Type, SubType + +logger = logging.getLogger(__name__) + +elemdatabase = ElementData() + +Labels = list[str] +_CHARGE_ERRORS = [("error_assign_charge", 8), ("error_create_bonds", 9)] +_SPIN_ERRORS = [("error_get_spin", 10)] + +ERROR_MAPS = { + "reference": { + "ref_molecules": [("ref_molecules", -1)], + "hydrogens": [ + ("has_isolated_H", 1), + ("missing_H_in_Water", 2), + ("missing_H_in_CoordWater", 3), + ("missing_H_in_Carbon", 4), + ], + "possible_charges": [("error_get_poscharges", 5)], + "charge_assignment": _CHARGE_ERRORS, + "spin_assignment": _SPIN_ERRORS, + "general": [("general_error", config.ERR_GENERAL)], + "timeout": [("timeout_error", config.ERR_TIMEOUT)], + "memory": [("memory_error", config.ERR_MEMORY)], + }, + "unitcell": { + "reconstruction": [ + ("error_get_fragments", 3), + ("error_reconstruction", 4), + ], + "balance_charges": [ + ("error_multiple_distrib", 6), + ("error_empty_distrib", 7), + ], + "charge_assignment": _CHARGE_ERRORS, + "spin_assignment": _SPIN_ERRORS, + "general": [("general_error", config.ERR_GENERAL)], + "timeout": [("timeout_error", config.ERR_TIMEOUT)], + "memory": [("memory_error", config.ERR_MEMORY)], + }, +} + + +class Cell(BaseModel): + model_config = {"arbitrary_types_allowed": True, "populate_by_name": True} + + # Required constructor parameters + name: str + labels: Labels + coord: NDArray = Field(alias="pos") # Using alias to match original parameter name + frac_coord: NDArray + cell_vector: NDArray + cell_param: NDArray + + natoms: int | None = None + subtype: SubType | None = None + + # Unique species (only defined for reference) related attributes + unique_indices: list[int] | None = None + + # Specie for molecules, ligands, or metals + species_list: list[Specie | Metal] | None = None + + # Error assessment + error_assign_charge: bool | None = None + error_create_bonds: bool | None = None + error_get_spin: bool | None = None + # error_case: int | None = None + error_cases: dict[str, int] | None = None + + # Frozen fields + version: str = Field(default=config.VERSION, frozen=True) + type: Type = Field(default="cell") + + def model_post_init(self, __context: Any) -> None: + # Compute natoms from labels length + if self.natoms is None: + self.natoms = len(self.labels) + + def set_subtype(self, subtype: SubType): + self.subtype = subtype + + def assign_charges(self, refmoleclist: list[Molecule] | None = None): + """ + Master function to assign charges, create bonds, and log results. + """ + # Determine molecule list and map charges + if self.subtype == "reference": + molecule_list = self.refmoleclist + self.map_charges_to_reference() + log_prefix = "Reference" + elif self.subtype == "unitcell": + molecule_list = self.moleclist + self.map_charges_to_unitcell(refmoleclist=refmoleclist) + log_prefix = "UnitCell" + else: + raise ValueError(f"Unknown subtype {self.subtype} of Cell") + + logger.info("=" * 40) + logger.info("Assigning Charges to %s Molecules", log_prefix) + logger.info("=" * 40) + + # Finalize bonds and Log results + self._finalize_bonds_and_prepare(molecule_list) + self._log_charge_results(molecule_list, log_prefix) + + def _finalize_bonds_and_prepare(self, molecule_list): + """ + Shared logic to finalize bonding and prepare complex molecules. + Only prepares molecules if bonding was successful. + """ + overall_error = False + + for mol in molecule_list: + # Create Bonds + try: + mol.create_bonds() + except Exception as e: + mol.error_create_bonds = True + logger.error("Bonding failed for %s: %s", mol, e) + + # Update overall error state if any create_bonds failed + if mol.error_create_bonds: + overall_error = True + + # Prepare Complex Molecules (if bonding succeeded) + if not mol.is_non_complex_molecule and not mol.error_create_bonds: + try: + prepare_mol(mol) + except Exception as e: + # We flag the error state here as well + mol.error_create_bonds = True + overall_error = True + logger.error("Preparation failed for %s: %s", mol, e) + + self.error_create_bonds = overall_error + + def _log_charge_results(self, molecule_list, label: str): + """Shared logic to log the final state of molecules.""" + for idx, mol in enumerate(molecule_list): + logger.info("ASSIGN_CHARGES: %s Molecule %d %s", label, idx, mol.formula) + + if mol.is_non_complex_molecule: + logger.info( + "Non-Complex %d: %s %s %s", + idx, + mol.formula, + mol.totcharge, + mol.smiles, + ) + else: + logger.info("Complex %d: %s %s", idx, mol.formula, mol.totcharge) + + for jdx, lig in enumerate(mol.ligands): + logger.info( + " Ligand %d: %s %s %s", + jdx, + lig.formula, + lig.totcharge, + lig.smiles, + ) + for kdx, met in enumerate(mol.metals): + logger.info(" Metal %d: %s %s", kdx, met.formula, met.charge) + + def assign_spin(self): + """ + Assign spin multiplicity for all molecules in the cell. + Attempts spin assignment for all molecules and records + whether any failures occurred. + """ + logger.info("=" * 40) + logger.info(" Assigning Spin multiplicity ") + logger.info("=" * 40) + + overall_error = False + + if self.subtype == "reference": + moleclist = self.refmoleclist + elif self.subtype == "unitcell": + moleclist = self.moleclist + else: + raise ValueError(f"Unknown subtype {self.subtype} of Cell") + + if moleclist is None: + raise ValueError( + "Molecule list is None before spin assignment (invalid state)" + ) + + for mol in moleclist: + mol.error_get_spin = False + + try: + if mol.iscomplex: + for metal in mol.metals: + if metal.coord_nr is None: + metal.get_coordination_geometry() + metal.get_coord_sphere_formula() + metal.get_spin() + + mol.get_spin() + + except Exception as e: + mol.error_get_spin = True + overall_error = True + logger.error("Spin assignment failed for %s: %s", mol, e) + logger.debug("Exception details", exc_info=True) + + self.error_get_spin = overall_error + + def predict_metal_ox(self): + """Predict oxidation states for metals in all molecules in the cell.""" + if self.subtype == "reference": + moleclist = self.refmoleclist + elif self.subtype == "unitcell": + moleclist = self.moleclist + else: + raise ValueError(f"Unknown subtype {self.subtype} of Cell") + + if moleclist is None: + return + + for mol in moleclist: + if mol.iscomplex: + for metal in mol.metals: + if metal.coord_nr is None: + metal.get_coordination_geometry() + metal.get_coord_sphere_formula() + metal.predict_charge() + + def assess_errors(self, mode): + """Assess error conditions for a specific processing mode.""" + if getattr(self, "error_cases", None) is None: + self.error_cases = {} + + subtype_map = ERROR_MAPS.get(self.subtype) + if not subtype_map: + raise ValueError(f"Unknown Cell subtype: {self.subtype}") + + rules = subtype_map.get(mode) + if rules is None: + raise ValueError(f"Invalid mode '{mode}' for subtype '{self.subtype}'") + + for attr, code in rules: + is_triggered = getattr(self, attr, False) + + logger.debug( + "Checking %s (Code %d) in %s: Result: %s", + attr, + code, + self.subtype, + is_triggered, + ) + + if is_triggered: + self.error_cases[mode] = code + return + + # No error in this mode + self.error_cases[mode] = 0 + + def has_error(self, mode: str | None = None) -> bool: + """ + Return True if an error exists. + + If mode is provided, check only that processing mode. + If mode is None, check across all recorded modes. + """ + if getattr(self, "error_cases", None) is None: + return False + + if mode is not None: + return self.error_cases.get(mode, 0) != 0 + + # Check all modes + return any(code != 0 for code in self.error_cases.values()) + + def save(self, path): + """Save the Cell object to a file using pickle.""" + logger.info(f"SAVING cell2mol CELL ({self.subtype}) object to {path}") + with open(path, "wb") as fil: + pickle.dump(self, fil) + + def __str__(self): + """Return a string representation of the Cell object.""" + return self.__repr__() + + def __repr__(self, indirect: bool = False): + to_print = "" + if not indirect: + to_print = "------------- Cell2mol CELL Object ----------------\n" + to_print += f" Version = {self.version}\n" + to_print += f" Type = {self.type}\n" + if self.subtype is not None: + to_print += f" Sub-Type = {self.subtype}\n" + to_print += f" Name (Refcode) = {self.name}\n" + to_print += f" Num Atoms = {self.natoms}\n" + to_print += f" Cell Parameters a:c = {self.cell_param[0:3]}\n" + to_print += f" Cell Parameters al:ga = {self.cell_param[3:6]}\n" + # to_print += f' Cell Vector = {self.cell_vector}\n' + to_print += "---------------------------------------------------\n" + return to_print + + @classmethod + @deprecated("Use cell() with the keyword arguments instead.") + def from_positional( + cls, + name: str, + labels: list[str], + pos: list[list[float]], + frac_coord: list[list[float]], + cell_vector: object, + cell_param: object, + ) -> "Cell": + return cls( + name=name, + labels=labels, + pos=pos, # Using pos which gets aliased to coord + frac_coord=frac_coord, + cell_vector=cell_vector, + cell_param=cell_param, + ) diff --git a/cell2mol/classes/cells.py b/cell2mol/classes/cells.py new file mode 100644 index 000000000..43676b62a --- /dev/null +++ b/cell2mol/classes/cells.py @@ -0,0 +1,143 @@ +from __future__ import annotations + +import logging +import pickle +from pathlib import Path + +try: + from typing import Self # py3.11+ +except ImportError: + from typing_extensions import Self # py3.10 + +from pydantic import Field +from typing_extensions import deprecated + +from cell2mol.classes.cell import Cell +from cell2mol.my_types import Format, NDArray, Type +from cell2mol.utils import BaseModel +from cell2mol.utils import config + +############### +#### CELLS #### +############### + +logger = logging.getLogger(__name__) + + +class Cells(BaseModel): + model_config = {"arbitrary_types_allowed": True} + + # Required constructor parameters + name: str + reference: Cell + unitcell: Cell | None = None + cell_vector: NDArray + cell_param: NDArray + + # Frozen fields + version: str = Field(default=config.VERSION, frozen=True) + type: Type = Field(default="cells") + + ####################################################### + def save(self, path: str | Path, *, format: Format = "json"): + if format == "json": + self._save_as_json(path) + elif format == "pickle": + self._save_as_pickle(path) + else: + raise ValueError(f"Unsupported format: {format}") + + @classmethod + def load(cls, path: str | Path, *, format: Format = "json") -> Self: + if format == "json": + return cls._load_from_json(path) + elif format == "pickle": + return cls._load_from_pickle(path) + else: + raise ValueError(f"Unsupported format: {format}") + + @deprecated("Use json format instead") + def _save_as_pickle( + self, + path: str | Path, + ): + logger.warning("Use json format instead") + with open(path, "wb") as fil: + pickle.dump(self, fil) + + def _save_as_json( + self, + path: str | Path, + ): + if not str(path).endswith(".json"): + logger.warning("Use `.json` extension instead for path: %s", path) + # Pretty print with indent=4 + with open(path, "w") as fd: + fd.write(self.to_json(indent=4)) + # Minified version + # with open(path, "w") as fd: + # fd.write(self.to_json(separators=(",", ":"))) + + @classmethod + def _load_from_json( + cls, + path: str | Path, + ) -> Self: + with open(path, "r") as fd: + return cls.from_json(fd.read()) + + @classmethod + @deprecated("Use json format instead") + def _load_from_pickle( + cls, + path: str | Path, + ): + with open(path, "rb") as fil: + return pickle.load(fil) + + ####################################################### + def __str__(self): + # This will make print(object) behave like before + return self.__repr__() + + def __repr__(self): + to_print = "------------- Cell2mol CELLS Object ----------------\n" + to_print += f" Version = {self.version}\n" + to_print += f" Type = {self.type}\n" + to_print += f" Name (Refcode) = {self.name}\n" + to_print += f" Cell Parameters a:c = {self.cell_param[0:3]}\n" + to_print += f" Cell Parameters al:ga = {self.cell_param[3:6]}\n" + # to_print += f' Cell Vector = {self.cell_vector}\n' + to_print += "---------------------------------------------------\n" + if self.reference.refmoleclist is not None: + to_print += "(Reference) \n" + to_print += f" # of Ref Molecules: = {len(self.reference.refmoleclist)}\n" + to_print += " with Formula: \n" + for idx, ref in enumerate(self.reference.refmoleclist): + to_print += f" {idx}: {ref.formula} \n" + if self.unitcell.moleclist is not None: + to_print += "(Unitcell) \n" + to_print += f" # Molecules: = {len(self.unitcell.moleclist)}\n" + to_print += " with Formula: \n" + for idx, m in enumerate(self.unitcell.moleclist): + to_print += f" {idx}: {m.formula} \n" + to_print += "---------------------------------------------------\n" + return to_print + + @classmethod + @deprecated("Use cells() with the keyword arguments instead.") + def from_positional( + cls, + name: str, + reference: Cell, + unitcell: Cell, + cell_vector: object, + cell_param: object, + ) -> "Cells": + return cls( + name=name, + reference=reference, + unitcell=unitcell, + cell_vector=cell_vector, + cell_param=cell_param, + ) diff --git a/cell2mol/classes/charge_state.py b/cell2mol/classes/charge_state.py new file mode 100644 index 000000000..e4fb6d046 --- /dev/null +++ b/cell2mol/classes/charge_state.py @@ -0,0 +1,149 @@ +import numpy as np +from typing import Any, Tuple +from cell2mol.classes.protonation import Protonation +from cell2mol.my_types import RDKitObject +from cell2mol.utils.pydantic import BaseModel +from pydantic import Field +from typing_extensions import deprecated +import logging + +logger = logging.getLogger(__name__) + + +def eval_chargelist(atom_charges: list[int]) -> Tuple[int, int, bool]: + abstotal = int(np.abs(np.sum(atom_charges))) + abs_atlist = [] + for a in atom_charges: + abs_atlist.append(abs(a)) + abs_atcharge = int(np.sum(abs_atlist)) + if any(b > 0 for b in atom_charges) and any(b < 0 for b in atom_charges): + zwitt = True + else: + zwitt = False + return abstotal, abs_atcharge, zwitt + + +class ChargeState(BaseModel): + model_config = {"arbitrary_types_allowed": True} + + # Required constructor parameters + status: bool + uncorr_total_charge: int + uncorr_atom_charges: list[int] + rdkit_obj: RDKitObject + smiles: str + charge_tried: int + allow: bool + protonation: Protonation = Field(...) + + # Computed attributes with proper defaults + uncorr_abstotal: int | None = None + uncorr_abs_atcharge: int | None = None + uncorr_zwitt: bool | None = None + coincide: bool | None = None + + # Copied from protonation with proper defaults + site_proton_counts: list[int] | None = None + ligand_donor_electrons: list[int] | None = None + n_protons_added: int | None = None + + # Initialized attributes with defaults + corr_total_charge: int = Field(default=0) + corr_atom_charges: list[int] = Field(default_factory=list) + + # Final computed attributes with proper defaults + corr_abstotal: int | None = None + corr_abs_atcharge: int | None = None + corr_zwitt: bool | None = None + + # Frozen fields + type: str = Field(default="charge_state", frozen=True) + + def model_post_init(self, __context: Any) -> None: + # Compute initial derived values + self.uncorr_abstotal, self.uncorr_abs_atcharge, self.uncorr_zwitt = ( + eval_chargelist(self.uncorr_atom_charges) + ) + + # Set coincide flag + self.coincide = self.uncorr_total_charge == self.charge_tried + + # Copy attributes from protonation + self.site_proton_counts = self.protonation.site_proton_counts + self.ligand_donor_electrons = self.protonation.ligand_donor_electrons + self.n_protons_added = self.protonation.n_protons_added + + logger.debug( + "Initializing ChargeState | SMILES: %s | Uncorr Charge: %d | Charge Tried: %d | N Protons Added: %d", + self.smiles, + self.uncorr_total_charge, + self.charge_tried, + self.n_protons_added, + ) + + # Corrects the Charge of atoms with addedH + if len(self.site_proton_counts) > 0: + # Iterates over the original number of ligand atoms, thus without the added H + for idx, n_add in enumerate(self.site_proton_counts): + if n_add > 0: + corrected = ( + self.uncorr_atom_charges[idx] + - self.site_proton_counts[idx] + + self.ligand_donor_electrons[idx] + ) + self.corr_atom_charges.append(corrected) + # last term corrects for cases in which a charge has been assigned to the added atom + else: + self.corr_atom_charges.append(self.uncorr_atom_charges[idx]) + self.corr_total_charge = int(np.sum(self.corr_atom_charges)) + else: + self.corr_total_charge = self.uncorr_total_charge + self.corr_atom_charges = self.uncorr_atom_charges.copy() + + self.corr_abstotal, self.corr_abs_atcharge, self.corr_zwitt = eval_chargelist( + self.corr_atom_charges + ) + + def __str__(self): + # This will make print(object) behave like before + return self.__repr__() + + def __repr__(self): + to_print = "" + to_print += "------------- Cell2mol Charge State ---------------\n" + to_print += f" Status = {self.status}\n" + to_print += f" Smiles = {self.smiles}\n" + to_print += f" Number of Protons Added = {self.n_protons_added}\n" + if sum(self.ligand_donor_electrons) > 0: + to_print += f" Ligand Donor Electrons = {sum(self.ligand_donor_electrons)}\n" + to_print += f" Charge Tried = {self.charge_tried}\n" + to_print += f" Uncorrected Total Charge = {self.uncorr_total_charge}\n" + to_print += f" Corrected Total Charge = {self.corr_total_charge}\n" + to_print += f" Corrected Absolute Total Charge = {self.corr_abs_atcharge}\n" + to_print += f" Corrected Is Zwitterion? = {self.corr_zwitt}\n" + to_print += "---------------------------------------------------\n" + return to_print + + @classmethod + @deprecated("Use charge_state() with the keyword arguments instead.") + def from_positional( + cls, + status: bool, + uncorr_total_charge: int, + uncorr_atom_charges: list[int], + rdkit_obj: object, + smiles: str, + charge_tried: int, + allow: bool, + protonation: object, + ) -> "ChargeState": + return cls( + status=status, + uncorr_total_charge=uncorr_total_charge, + uncorr_atom_charges=uncorr_atom_charges, + rdkit_obj=rdkit_obj, + smiles=smiles, + charge_tried=charge_tried, + allow=allow, + protonation=protonation, + ) diff --git a/cell2mol/classes/group.py b/cell2mol/classes/group.py new file mode 100644 index 000000000..ef63ae47c --- /dev/null +++ b/cell2mol/classes/group.py @@ -0,0 +1,179 @@ +from __future__ import annotations + +import numpy as np +from pydantic import Field +from typing_extensions import deprecated +from cell2mol.utils import config +from cell2mol.classes.metal import Metal +from cell2mol.classes.specie import Specie +from cell2mol.connectivity import identify_haptic_mode +from cell2mol.element_utils import labels2electrons, labels2formula +from cell2mol.operations import compute_centroid +from cell2mol.elementdata import ElementData +from cell2mol.my_types import OptionalRef, OptionalRefList, SubType +import logging + +elemdatabase = ElementData() +logger = logging.getLogger(__name__) + + +class Group(Specie): + model_config = {"arbitrary_types_allowed": True, "extra": "allow"} + + haptic_type: str | None = None + is_haptic: bool | None = None + topology: dict | None = None + checked_coordination: bool | None = None + # Cross-reference: points to a metal in parent Molecule + closest_metal: OptionalRef[Metal] = None + # Cross-reference: points to metals in parent Molecule + metals: OptionalRefList[Metal] = None + denticity: int | None = None + + subtype: SubType = Field(default="group") + + @classmethod + @deprecated("Use group(**kwargs) with keyword arguments") + def from_positional( + cls, labels: list, coord: list, frac_coord: list = None, radii: list = None + ) -> None: + return cls(labels=labels, coord=coord, frac_coord=frac_coord, radii=radii) + + @classmethod + def from_atom_list( + cls, gr_atoms: list, use_bond_info: bool | None = None + ) -> "Group": + """ + Factory method to instantiate a Group directly from a list of Atom objects. + """ + if not gr_atoms: + logger.warning("Attempted to create a Group from an empty atom list.") + return None + + # 1. Extract data from the atom list + # We assume all atoms in the list have the same attribute availability + first_atom = gr_atoms[0] + + # 2. Instantiate the class using the base constructor + # Since Group inherits from Specie, we pass the basic structural data + instance = cls( + labels=[a.label for a in gr_atoms], + coord=[a.coord for a in gr_atoms], + frac_coord=[a.frac_coord for a in gr_atoms] + if first_atom.frac_coord is not None + else None, + radii=[a.radii for a in gr_atoms], + ) + + # 3. Set internal metadata + instance.origin = "Group.from_atom_list" + + # 4. Initialize internal atom mapping and hapticity + # This mirrors the logic you had in your standalone function + instance.set_atoms( + atomlist=gr_atoms, + create_adjacencies=False, + atom_site_labels=[a.atom_site_label for a in gr_atoms] + if first_atom.atom_site_label is not None + else None, + use_bond_info=use_bond_info + if use_bond_info is not None + else config.USE_BOND_INFO, + ) + # Adjacency matrices are not built here; they should be built later + return instance + + def __str__(self): + # This will make print(object) behave like before + return self.__repr__() + + def __repr__(self): + to_print = "" + to_print += "------------- Cell2mol GROUP Object --------------\n" + to_print += Specie.__repr__(self, indirect=True) + if self.metals is not None: + to_print += f" Number of Metals = {len(self.metals)}\n" + to_print += "---------------------------------------------------\n" + return to_print + + def remove_atom(self, index: int): + logger.info( + "Deleting atom (index=%d) from group with %d atoms", index, self.natoms + ) + if index > self.natoms: + return None + if self.atoms is None: + self.set_atoms() + self.atoms.pop(index) + self.labels.pop(index) + self.coord.pop(index) + self.radii.pop(index) + self.formula = labels2formula(self.labels) + ### Assuming neutral specie (so basically this is the sum of atomic numbers) + self.eleccount = labels2electrons(self.labels) + self.natoms = len(self.labels) + logger.info("Group after removing atom: %s", self) + + if self.natoms > 0: + if self.closest_metal is not None: + self.get_closest_metal() + if self.is_haptic is not None: + self.get_hapticity() + if self.centroid is not None: + self.get_centroid() + if self.frac_coord is not None: + self.frac_coord.pop(index) + if self.adjmat is not None: + self.build_adjmatrix(metal_only=False) + if self.madjmat is not None: + self.build_adjmatrix(metal_only=True) + + def get_closest_metal(self): + """ + Calculates the centroid of the group and identifies the + nearest metal atom within the parent molecule. + """ + mol = self.get_parent("molecule") + + # Safety check for parent molecule and metal availability + if mol is None or not getattr(mol, "metals", None): + logger.warning( + f"Group {self.label} has no parent molecule or metals to reference." + ) + return + + # Compute the centroid (mean position) of all atoms in this group + group_centroid = compute_centroid(np.array(self.coord)) + + # Find the metal with the minimum Euclidean distance to the centroid + # Using 'min' with a lambda is more efficient than building a full distance list + self.closest_metal = min( + mol.metals, + key=lambda met: np.linalg.norm(group_centroid - np.array(met.coord)), + ) + + logger.debug( + f"Closest metal for group {self.label} identified as {self.closest_metal.label}" + ) + + def get_hapticity(self, use_bond_info: bool | None = None): + """ + Determine haptic coordination mode(s) for the group. + """ + if self.atoms is None: + return None + logger.debug(f"Determining hapticity for group {self.formula}") + logger.debug(f"Group atoms: {[atom.label for atom in self.atoms]}") + is_haptic, haptic_type, topology = identify_haptic_mode( + self.atoms, use_bond_info + ) + + self.is_haptic = is_haptic + self.haptic_type = haptic_type + self.topology = topology + + def get_denticity(self): + self.denticity = 0 + for a in self.atoms: + self.denticity += a.mconnec + return self.denticity diff --git a/cell2mol/classes/ligand.py b/cell2mol/classes/ligand.py new file mode 100644 index 000000000..ef1e0dc85 --- /dev/null +++ b/cell2mol/classes/ligand.py @@ -0,0 +1,182 @@ +from __future__ import annotations + +import numpy as np +from pydantic import Field +from typing_extensions import deprecated +from cell2mol.classes.atom import Atom +from cell2mol.classes.group import Group +from cell2mol.classes.metal import Metal +from cell2mol.classes.specie import Specie +from cell2mol.connectivity import build_adjacency +from cell2mol.utils import config +from cell2mol.operations import get_angle +from cell2mol.elementdata import ElementData +from cell2mol.my_types import NOType, OptionalRefList, SubType +import logging + +elemdatabase = ElementData() +logger = logging.getLogger(__name__) + + +class Ligand(Specie): + model_config = {"arbitrary_types_allowed": True} + + NO_type: NOType | None = None + # Cross-reference: points to atoms already in self.atoms + connected_atoms: OptionalRefList[Atom] = None + connected_idx: list[int] | None = None + denticity: int | None = None + # Ownership: groups are children of this ligand + groups: list[Group] | None = Field(default=None) + haptic_type: list[str] | None = None + is_haptic: bool | None = None + is_nitrosyl: bool | None = None + is_silylyne: bool | None = None + # Cross-reference: points to metals in parent Molecule + metals: OptionalRefList[Metal] = None + unique_index: int | None = None + + subtype: SubType = Field(default="ligand") + + @classmethod + @deprecated("Use ligand(**kwargs) with keyword arguments") + def from_positional( + cls, labels: list, coord: list, frac_coord: list = None, radii: list = None + ) -> None: + return cls(labels=labels, coord=coord, frac_coord=frac_coord, radii=radii) + + def __repr__(self): + to_print = "" + to_print += "------------- Cell2mol LIGAND Object --------------\n" + to_print += Specie.__repr__(self, indirect=True) + if self.groups is not None: + to_print += f" Number of Groups = {len(self.groups)}\n" + to_print += "---------------------------------------------------\n" + return to_print + + def get_connected_metals(self, use_bond_info: bool | None = None): + self.metals = [] + refcell = self.get_parent("reference") + bond_data = getattr(refcell, "geom_bond_cif", None) if refcell else None + cov_factor = getattr(self, "cov_factor", config.COV_FACTOR) + metal_factor = getattr(self, "metal_factor", config.METAL_FACTOR) + mol = self.get_parent("molecule") + + if use_bond_info is None: + use_bond_info = config.USE_BOND_INFO + + for met in mol.metals: + tmplabels = list(self.labels.copy()) + tmpcoord = list(self.coord.copy()) + atom_site_labels = [atom.atom_site_label for atom in self.atoms] + tmplabels.append(met.label) + tmpcoord.append(met.coord) + atom_site_labels.append(met.atom_site_label) + tmp_adjmat = build_adjacency( + labels=tmplabels, + positions=tmpcoord, + atom_site_labels=atom_site_labels, + bond_data=bond_data, + use_bond_info=use_bond_info, + cov_factor=cov_factor, + metal_factor=metal_factor, + metal_only=True, + ) + if tmp_adjmat is None: + continue + else: + tmp_adjnum = tmp_adjmat.sum(axis=1) + if any(tmp_adjnum) > 0: + self.metals.append(met) + logger.debug( + "Ligand %s is connected to %s", self.formula, met.label + ) + + def evaluate_as_nitrosyl(self): + self.is_nitrosyl = False + if self.natoms == 2 and "N" in self.labels and "O" in self.labels: + self.is_nitrosyl = True + self.get_nitrosyl_geom() + return self.is_nitrosyl + + def get_nitrosyl_geom(self: object, thres: float = 160) -> str: + """Get the geometry of a Nitrosyl ligand.""" + # Determines whether the M-N-O angle of a Nitrosyl "ligand" is "Bent" or "Linear" + # Each case is treated differently + # return NO_type: "Linear" or "Bent" + if self.atoms is None: + self.set_atoms() + if self.metals is None: + self.get_connected_metals() + + for idx, a in enumerate(self.atoms): + if a.label == "N": + central = a.coord.copy() + if a.label == "O": + extreme = a.coord.copy() + + dist = [] + for idx, met in enumerate(self.metals): + metal = np.array(met.coord) + dist.append(np.linalg.norm(central - metal)) + tgt = np.argmin(dist) + metal = self.metals[tgt].coord.copy() + vector1 = np.subtract(np.array(central), np.array(extreme)) + vector2 = np.subtract(np.array(central), np.array(metal)) + + angle = get_angle(vector1, vector2) + if np.degrees(angle) > float(thres): + self.NO_type = "Linear" + else: + self.NO_type = "Bent" + + return self.NO_type + + def get_connected_idx(self): + # Remember madjmat should not be computed at the ligand level. + # Since the metal is not there. + # Operate at the molecular level. + # We get the parent molecule, and the indices of the ligand atoms in the molecule + self.connected_idx = [] + if self.madjnum is None: + self.set_inherit_adjmatrix("molecule") + for idx, con in enumerate(self.madjnum): + if con > 0: + self.connected_idx.append(idx) + return self.connected_idx + + def get_connected_atoms(self): + if self.atoms is None: + self.set_atoms() + if self.connected_idx is None: + self.get_connected_idx() + self.connected_atoms = [] + for idx, at in enumerate(self.atoms): + if idx in self.connected_idx and at.mconnec > 0: + self.connected_atoms.append(at) + elif idx in self.connected_idx and at.mconnec == 0: + logger.warning("Atom appears in connected_idx, but has mconnec=0") + return self.connected_atoms + + def get_denticity(self): + if self.groups is None: + return None + self.denticity = 0 + for g in self.groups: + self.denticity += g.get_denticity() + return self.denticity + + def get_hapticity(self): + if self.groups is None: + return None + self.is_haptic = False + self.haptic_type = [] + for gr in self.groups: + if gr.is_haptic is None: + gr.get_hapticity() + if gr.is_haptic: + self.haptic_type.append(gr.haptic_type) + if len(self.haptic_type) > 0: + self.is_haptic = True + + return self.haptic_type diff --git a/cell2mol/classes/metal.py b/cell2mol/classes/metal.py new file mode 100644 index 000000000..abf89da3f --- /dev/null +++ b/cell2mol/classes/metal.py @@ -0,0 +1,345 @@ +from __future__ import annotations + +from typing import TYPE_CHECKING, Literal + +import numpy as np +from pydantic import Field +from typing_extensions import deprecated +from cell2mol.classes.atom import Atom +from cell2mol.charge.charge_state_resolver import get_metal_poscharges +from cell2mol.spin import assign_spin_metal, predict_ox_state +from cell2mol.operations import compute_centroid, get_dist +from cell2mol.elementdata import ElementData +from cell2mol.coordination_sphere import ( + handle_metal_coordination, + define_coordination_geometry, +) +from cell2mol.my_types import RefList, Spin, SubType +from cell2mol.connectivity import build_adjacency +from cell2mol.element_utils import labels2formula +from cell2mol.utils import config + +if TYPE_CHECKING: + from cell2mol.classes.group import Group +import logging + +logger = logging.getLogger(__name__) +elemdatabase = ElementData() + + +class Metal(Atom): + # Cross-reference: points to other metals in parent Molecule + metals: RefList[Metal] | None = Field(default=None) + connected_nonmetal_atoms: RefList[Atom] | None = Field(default=None) + # Cross-reference: points to Group objects + groups: RefList[Group] | None = Field(default=None) + coord_nr: int | None = None + coord_geometry: str | Literal["Undefined"] | None = None + geom_deviation: float | Literal["Undefined"] | None = None + rel_metal_radius: float | None = None + coord_nr_with_metal_bonds: int | None = None + coord_geometry_with_metal_bonds: str | Literal["Undefined"] | None = None + geom_deviation_with_metal_bonds: float | Literal["Undefined"] | None = None + metal_factor: float | None = None + cov_factor: float | None = None + coord_sphere_atoms: list[Atom] | None = None + coord_sphere_formula: str | None = None + unique_index: int | None = None + charge: int | None = None + possible_cs: list[int] | None = None + spin: Spin | None = None + valence_elec: int | None = None + + subtype: SubType = Field(default="metal") + + @classmethod + @deprecated("Use metal() with the keyword arguments instead.") + def from_positional( + cls, label: str, coord: list, frac_coord: list = None, radii: float = None + ) -> None: + return cls(label=label, coord=coord, frac_coord=frac_coord, radii=radii) + + ####################################################### + def get_valence_elec(self, m_ox: int): + """Count valence electrons for a given transition metal and metal oxidation state""" + v_elec = elemdatabase.valenceelectrons[self.label] - m_ox + if v_elec >= 0: + self.valence_elec = v_elec + else: + self.valence_elec = elemdatabase.elementgroup[self.label] - m_ox + + return self.valence_elec + + def get_connected_metals(self, use_bond_info: bool | None = None): + if getattr(self, "metals", None) is not None: + return self.metals + + self.metals = [] + mol = self.get_parent("molecule") + self_mol_idx = self.get_parent_index("molecule") + if mol.madjmat is not None: + mol_madjmat = mol.madjmat + for met in mol.metals: + if met is self: + continue + met_mol_idx = met.get_parent_index("molecule") + if mol_madjmat[self_mol_idx][met_mol_idx] >= 1: + self.metals.append(met) + logger.debug( + "Metal %s%s is connected to Metal %s%s (existing mol.adjmat)", + self.label, + f" ({self.atom_site_label})" if self.atom_site_label else "", + met.label, + f" ({met.atom_site_label})" if met.atom_site_label else "", + ) + return self.metals + + refcell = self.get_parent("reference") + bond_data = getattr(refcell, "geom_bond_cif", None) if refcell else None + cov_factor = getattr(self, "cov_factor", config.COV_FACTOR) + metal_factor = getattr(self, "metal_factor", config.METAL_FACTOR) + + if use_bond_info is None: + use_bond_info = config.USE_BOND_INFO + + for met in mol.metals: + if met is self: + continue + + tmplabels = [self.label, met.label] + tmpcoord = [self.coord, met.coord] + atom_site_labels = [self.atom_site_label, met.atom_site_label] + + tmp_adjmat = build_adjacency( + labels=tmplabels, + positions=tmpcoord, + atom_site_labels=atom_site_labels, + bond_data=bond_data, + use_bond_info=use_bond_info, + cov_factor=cov_factor, + metal_factor=metal_factor, + metal_only=True, + ) + if tmp_adjmat is None: + continue + else: + if tmp_adjmat[0, 1] >= 1: + self.metals.append(met) + logger.debug( + "Metal %s%s is connected to Metal %s%s (newly computed, use_bond_info=%s)", + self.label, + f" ({self.atom_site_label})" if self.atom_site_label else "", + met.label, + f" ({met.atom_site_label})" if met.atom_site_label else "", + use_bond_info, + ) + return self.metals + + def get_connected_nonmetal_atoms(self): + if getattr(self, "connected_nonmetal_atoms", None) is not None: + return self.connected_nonmetal_atoms + + self.connected_nonmetal_atoms = [] + if not self.check_parent("molecule"): + logger.debug("No parent molecule found, skipping atom connectivity check") + return self.connected_nonmetal_atoms + + mol = self.get_parent("molecule") + self_mol_idx = self.get_parent_index("molecule") + if mol.madjmat is None: + logger.debug("No mol.madjmat found, skipping atom connectivity check") + return self.connected_nonmetal_atoms + + mol_madjmat = mol.madjmat + for idx, val in enumerate(mol_madjmat[self_mol_idx]): + if idx == self_mol_idx or val < 1: + continue + + atom = mol.atoms[idx] + + if atom.subtype == "metal": + continue + self.connected_nonmetal_atoms.append(atom) + logger.debug( + "Metal %s%s is connected to Atom %s%s (existing mol.adjmat)", + self.label, + f" ({self.atom_site_label})" if self.atom_site_label else "", + atom.label, + f" ({atom.atom_site_label})" if atom.atom_site_label else "", + ) + logger.debug( + "Total connected non-metal atoms: %s", len(self.connected_nonmetal_atoms) + ) + return self.connected_nonmetal_atoms + + def get_connected_groups(self): + """ + Lazy load and Triggers the metal coordination refinement process + and stores the resulting list of coordinated Group objects. + """ + if not self.check_parent("molecule"): + return None + + # Check if already computed + current_groups = getattr(self, "groups", None) + if current_groups is None: + # handle_metal_coordination returns a list of Group objects + result = handle_metal_coordination(self) + self.groups = result + + return self.groups + + def get_coordination_geometry(self: object): + logger.debug( + "Define coordination geometry of Metal %s%s", + self.label, + f" ({self.atom_site_label})" if self.atom_site_label else "", + ) + + coord_groups = self.get_connected_groups() + + (self.coord_nr, self.coord_geometry, self.geom_deviation) = ( + define_coordination_geometry(self, coord_groups) + ) + + self.rel_metal_radius = self.get_relative_metal_radius() + + if self.metals is None: + self.get_connected_metals() + + if len(self.metals) > 0: + connected_metals = self.metals + whole_coord = coord_groups + connected_metals + + logger.debug("Including metal-metal bonds for: %s", self.label) + + ( + self.coord_nr_with_metal_bonds, + self.coord_geometry_with_metal_bonds, + self.geom_deviation_with_metal_bonds, + ) = define_coordination_geometry(self, whole_coord) + + return self.coord_geometry + + def get_coord_sphere_atoms(self): + """ + Identifies atoms in the first coordination sphere of the metal. + Uses the adjacency matrix from the parent molecule to find direct bonds. + + Returns: + List[Atom]: A list of Atom objects directly bonded to this metal. + """ + # Safety check: Ensure parent molecule existence + if not self.check_parent("molecule"): + logger.warning(f"Metal {self.label} has no parent molecule reference.") + return None + + # Use cached value if exists, otherwise compute it + if getattr(self, "coord_sphere_atoms", None) is None: + mol = self.get_parent("molecule") + midx = self.get_parent_index("molecule") + + # Extract atoms from adjacency matrix + self.coord_sphere_atoms = ( + [mol.atoms[i] for i, val in enumerate(mol.adjmat[midx]) if val >= 1] + if mol + else [] + ) + + return self.coord_sphere_atoms + + def get_coord_sphere_formula(self): + """ + Constructs the chemical formula for the first coordination sphere. + Returns: + str: The chemical formula of the coordination sphere. + """ + # Ensure coordination atoms are identified first + if getattr(self, "coord_sphere_atoms", None) is None: + self.get_coord_sphere_atoms() + + # Extract labels and generate the formula + atom_labels = [at.label for at in self.coord_sphere_atoms] + self.coord_sphere_formula = labels2formula(atom_labels) + + return self.coord_sphere_formula + + def get_relative_metal_radius(self): + if self.groups is None: + self.get_connected_groups() + diff_list = [] + for group in self.groups: + if not group.is_haptic: + for atom in group.atoms: + diff = ( + get_dist(self.coord, atom.coord) + - elemdatabase.CovalentRadius3[atom.label] + ) + diff = round(float(diff), 3) + diff_list.append(diff) + else: + haptic_center_label = "C" + haptic_center_coord = compute_centroid( + np.array([atom.coord for atom in group.atoms]) + ) + diff = ( + get_dist(self.coord, haptic_center_coord) + - elemdatabase.CovalentRadius3[haptic_center_label] + ) + diff = round(float(diff), 3) + diff_list.append(diff) + if len(diff_list) > 0: + average = round(float(np.mean(diff_list)), 3) + else: + average = 0.0 + + logger.debug("diff_list(distance-covalent_radius)=%s", diff_list) + logger.debug("average=%s", average) + + self.rel_metal_radius = round( + average / elemdatabase.CovalentRadius3[self.label], 3 + ) + + logger.info( + "rel_metal_radius=%s for Metal %s%s", + self.rel_metal_radius, + self.label, + f" ({self.atom_site_label})" if self.atom_site_label else "", + ) + return self.rel_metal_radius + + def get_possible_cs(self): + self.possible_cs = get_metal_poscharges(self) + return self.possible_cs + + def get_spin(self): + self.spin = assign_spin_metal(self) + logger.info( + "Spin multiplicity of the metal %s is assigned as %s", self.label, self.spin + ) + + def predict_charge(self): + # TODO: integrate metal OS prediction model here + self.charge_by_ML = predict_ox_state(self) + + def reset_charge(self): + Atom.reset_charge( + self + ) ## First uses the generic atom class function for itself + if self.poscharges is not None: + delattr(self, "poscharge") + + def __str__(self): + # This will make print(object) behave like before + return self.__repr__() + + def __repr__(self): + to_print = "" + to_print += "------------- Cell2mol METAL Object --------------\n" + to_print += Atom.__repr__(self, indirect=True) + if self.coord_sphere_formula is not None: + to_print += f" Coordination Sphere Formula = {self.coord_sphere_formula}\n" + if self.possible_cs is not None: + to_print += f" Possible Charges = {self.possible_cs}\n" + to_print += "----------------------------------------------------\n" + return to_print diff --git a/cell2mol/classes/molecule.py b/cell2mol/classes/molecule.py new file mode 100644 index 000000000..fe1777475 --- /dev/null +++ b/cell2mol/classes/molecule.py @@ -0,0 +1,864 @@ +from __future__ import annotations +import pickle +from typing_extensions import deprecated +from pydantic import Field +from cell2mol.classes.metal import Metal +from cell2mol.classes.ligand import Ligand +from cell2mol.classes.specie import Specie +from cell2mol.connectivity import split_species, merge_multiple_groups +from cell2mol.element_utils import ( + labels2formula, + get_metal_idxs, + get_alkali_alkaline_earth_metal_idxs, + get_post_transition_metal_idxs, + POST_TRANSITION_METALS, + METALLOIDS, +) +from cell2mol.compare import compare_species, compare_metals +from cell2mol.charge.specie_assigner import set_charge_state, prepare_mol +from cell2mol.charge.smiles_handler import ( + create_bonds_specie, + create_metal_ligand_bonds, + create_metal_metal_bonds, + correct_smiles_ligand, +) +from cell2mol.spin import assign_spin_complexes +from cell2mol.operations import extract_from_list +from cell2mol.elementdata import ElementData +from cell2mol.my_types import Spin, SubType +from cell2mol.utils import config +import numpy as np +import logging + +logger = logging.getLogger(__name__) +elemdatabase = ElementData() + + +class Molecule(Specie): + """ + A molecule is a specie that contains other specie objects. + """ + + haptic_type: list[str] | None = None + is_haptic: bool | None = None + ligands: list[Ligand] | None = Field(default=None) + metals: list[Metal] | None = Field(default=None) + spin: Spin | None = None + ref_indices: list[int] | None = None + cell_indices: list[int] | None = None + + unique_index: int | None = None + totcharge_cif: int | None = None + + ligand_smiles: str | list[str] | None = None + ligand_smiles_with_H: list[str] | None = None + subtype: SubType = Field(default="molecule") + + # Needed in interpret_molecule in process_xyz.py + input_charge: int | None = None + unique_species: list[Specie] | None = None + unique_indices: list[int] | None = None + species_list: list[Specie] | None = None + selected_cs: list[object] | None = None + error_get_poscharges: bool | None = None + error_multiple_distrib: bool | None = None + error_empty_distrib: bool | None = None + error_assign_charge: bool | None = None + error_create_bonds: bool | None = None + error_get_spin: bool | None = None + error_case: int | None = None + + @classmethod + @deprecated("Use molecule() with the keyword arguments instead.") + def from_positional( + cls, labels: list, coord: list, frac_coord: list = None, radii: list = None + ) -> "Molecule": + return cls(labels=labels, coord=coord, frac_coord=frac_coord, radii=radii) + + def __repr__(self): + to_print = "" + to_print += "------------- Cell2mol MOLECULE Object --------------\n" + to_print += Specie.__repr__(self, indirect=True) + if self.ligands is not None: + if self.ligands is not None: + # to_print += f" Ligands Smiles = {self.ligand_smiles}\n" + to_print += f" Number of Ligands = {len(self.ligands)}\n" + if self.metals is not None: + if self.metals is not None: + to_print += f" Number of Metals = {len(self.metals)}\n" + to_print += "---------------------------------------------------\n" + return to_print + + def get_spin(self): + """ + Assign and return spin multiplicity for this molecule. + Sets mol.error_get_spin on failure and raises an exception. + """ + self.error_get_spin = False + + try: + if self.iscomplex: + self.spin = assign_spin_complexes(self) + else: + if (self.eleccount - self.totcharge) % 2 == 0: + self.spin = 1 + else: + self.spin = 2 + + except Exception as e: + self.error_get_spin = True + raise RuntimeError( + f"Spin assignment failed for molecule {self.formula}" + ) from e + + logger.debug( + "Assigned spin multiplicity | molecule=%s | spin=%s", + self.formula, + self.spin, + ) + + return self.spin + + def reset_charge(self): + # First, uses the generic specie class function for itself and its atoms + Specie.reset_charge(self) + ## Then reset charge for the child classes + if self.ligands is not None: + for lig in self.ligands: + lig.reset_charge() + if self.metals is not None: + for met in self.metals: + met.reset_charge() + + def split_complex(self, use_bond_info: bool | None = None, post_tms: bool = False): + """ + Split a complex into metals and ligands. + + Args: + ---------- + use_bond_info : bool or None, optional + Whether to use explicit bond information. + If None, defaults to config.USE_BOND_INFO. + post_tms : bool, optional + If True, ONLY post-transition metals are treated as metals. + """ + + if use_bond_info is None: + use_bond_info = config.USE_BOND_INFO + + # Ensure atoms exist + if self.atoms is None: + self.set_atoms() + + # Non-complex shortcut + # If the molecule is not a complex and does not contain IA/IIA metals, + # there is nothing to split. + if self.is_non_complex_molecule: + logger.debug( + "Molecule %s is not a complex. No splitting needed.", self.formula + ) + self.ligands = None + self.metals = None + return self.ligands, self.metals + + # Reference / bond information + refcell = self.get_parent("reference") + bond_data = getattr(refcell, "geom_bond_cif", None) if refcell else None + + cov_factor = getattr(self, "cov_factor", config.COV_FACTOR) + metal_factor = getattr(self, "metal_factor", config.METAL_FACTOR) + + self.ligands = [] + self.metals = [] + + # ============================================================ + # Identify metal indices (GLOBAL index space: self.indices) + # ============================================================ + if post_tms: + logger.info( + "post_tms enabled: ONLY post-transition metals exist as metals." + ) + metal_idx: set[int] = { + self.indices[i] for i in get_post_transition_metal_idxs(self.labels) + } + else: + metal_idx: set[int] = {self.indices[i] for i in get_metal_idxs(self.labels)} + metal_idx.update( + self.indices[i] + for i in get_alkali_alkaline_earth_metal_idxs(self.labels) + ) + + post_tm_found = [ + label for label in self.labels if label in POST_TRANSITION_METALS + ] + metalloid_found = [label for label in self.labels if label in METALLOIDS] + if post_tm_found: + logger.info( + "Post-transition metals found: %s %s ", self.formula, post_tm_found + ) + if metalloid_found: + logger.info("Metalloids found: %s %s", self.formula, metalloid_found) + + # ============================================================ + # Remaining atoms → ligands + # ============================================================ + + rest_idx = [i for i in self.indices if i not in metal_idx] + + rest_labels = extract_from_list(rest_idx, self.labels, dimension=1) + rest_coord = extract_from_list(rest_idx, self.coord, dimension=1) + rest_indices = extract_from_list(rest_idx, self.indices, dimension=1) + rest_radii = extract_from_list(rest_idx, self.radii, dimension=1) + rest_atoms = extract_from_list(rest_idx, self.atoms, dimension=1) + # logger.debug("Remaining atom indices: %s", rest_idx) + + rest_frac = ( + extract_from_list(rest_idx, self.frac_coord, dimension=1) + if self.frac_coord is not None + else None + ) + + rest_atom_site_labels = ( + extract_from_list(rest_idx, self.atom_site_labels, dimension=1) + if self.atom_site_labels is not None + else None + ) + + # No ligands case + if not rest_labels: + logger.debug( + "No ligands found in complex %s. Assigning metals only.", + self.formula, + ) + self.metals.extend(self.atoms[i] for i in metal_idx) + return self.ligands, self.metals + + # ============================================================ + # Split ligands + # ============================================================ + + blocklist = split_species( + labels=rest_labels, + positions=rest_coord, + radii=rest_radii, + indices=None, # rest_indices + atom_site_labels=rest_atom_site_labels, + bond_data=bond_data, + use_bond_info=use_bond_info, + cov_factor=cov_factor, + ) + + logger.info("Received %d ligand blocks", len(blocklist)) + # logger.debug("Blocks: %s", blocklist) + + for block in blocklist: + lig_indices = extract_from_list(block, rest_indices, dimension=1) + lig_labels = extract_from_list(block, rest_labels, dimension=1) + lig_coord = extract_from_list(block, rest_coord, dimension=1) + lig_radii = extract_from_list(block, rest_radii, dimension=1) + lig_atoms = extract_from_list(block, rest_atoms, dimension=1) + + lig_frac_coord = ( + extract_from_list(block, rest_frac, dimension=1) + if rest_frac is not None + else None + ) + + lig_atom_site_labels = ( + extract_from_list(block, rest_atom_site_labels, dimension=1) + if rest_atom_site_labels is not None + else None + ) + + logger.info(" Ligand: %s", labels2formula(lig_labels)) + + # --- create ligand --- + if lig_frac_coord is not None: + ligand = Ligand.from_positional( + lig_labels, lig_coord, lig_frac_coord, radii=lig_radii + ) + else: + ligand = Ligand.from_positional(lig_labels, lig_coord, radii=lig_radii) + + ligand.set_origin("split_complex") + ligand.add_parent(self, indices=lig_indices) + + if self.check_parent("unitcell"): + ligand.add_parent( + self.get_parent("unitcell"), + indices=[a.get_parent_index("unitcell") for a in lig_atoms], + ) + + if self.check_parent("reference"): + ligand.add_parent( + self.get_parent("reference"), + indices=[a.get_parent_index("reference") for a in lig_atoms], + ) + + ligand.set_adjacency_parameters(cov_factor, metal_factor) + ligand.set_atoms( + atomlist=lig_atoms, + create_adjacencies=False, + atom_site_labels=lig_atom_site_labels, + use_bond_info=use_bond_info, + ) + ligand.set_inherit_adjmatrix("molecule") + + self.ligands.append(ligand) + + # ============================================================ + # Metals + # ============================================================ + + self.metals.extend(self.atoms[i] for i in metal_idx) + + return self.ligands, self.metals + + def analyze_coordination(self): + """ + Analyze the coordination environment of the molecule. + Determines hapticity and connected metals for ligands. + """ + + if self.iscomplex: + logger.info("Has transition metals %s", self.formula) + if not self.ligands: + logger.debug("A metal cluster found") + elif self.has_ia_iia: + logger.info("Has alkali or alkaline earth metals: %s", self.formula) + if not self.ligands: + logger.debug("Alkali/alkaline earth metal ion found") + elif self.has_post_transition_metal: + logger.info("Has post transition metals: %s", self.formula) + logger.debug("metals=%s", [met.label for met in self.metals]) + logger.debug("ligands=%s", [lig.formula for lig in self.ligands]) + else: + logger.info("No metals found in molecule: %s", self.formula) + return + + for met in self.metals: + logger.debug( + "Analyzing coordination for metal %s%s", + met.label, + (f" ({met.atom_site_label})" if met.atom_site_label else ""), + ) + met.get_connected_metals() + logger.debug(" Connected Metals: %s", [m.label for m in met.metals]) + met.get_connected_nonmetal_atoms() + logger.debug( + " Connected Non-Metals: %s", + [m.label for m in met.connected_nonmetal_atoms], + ) + met.get_connected_groups() + met.get_coordination_geometry() + met.get_coord_sphere_formula() + + self.map_metal_groups_to_ligands() + self.merge_connected_groups() + + for lig in self.ligands: + lig.get_hapticity() + lig.get_denticity() + logger.debug( + f"Ligand: {lig.formula}, Groups: {[group.formula for group in lig.groups]}" + ) + for group in lig.groups: + logger.debug( + f" Group: {group.formula}, Haptic: {group.haptic_type}, Connected Metal: {[met.atom_site_label for met in group.metals]}" + ) + for atom in group.atoms: + logger.debug( + f" Atom: {atom.atom_site_label}, connec: {atom.connec} mconnec: {atom.mconnec}" + ) + + def map_metal_groups_to_ligands(self): + """ + Maps refined metal-coordinated groups to their parent ligands. + Handles bridging coordination by comparing ligand atom indices. + """ + # 1. Reset ligand coordination storage + for lig in self.ligands: + lig.groups = [] + + # 2. Iterate through each metal and its identified groups + for met in self.metals: + groups = getattr(met, "groups", []) + + for group in groups: + parent_ligand = group.get_parent("ligand") + # Get the local indices of these atoms within the ligand + current_indices = set(group.get_parent_indices("ligand")) + + if parent_ligand: + # 3. Check if a group with the same ligand indices already exists + is_duplicate = False + for added_group in parent_ligand.groups: + added_indices = set(added_group.get_parent_indices("ligand")) + + if current_indices == added_indices: + # It's the same coordination site! Just link the new metal. + if met not in added_group.metals: + added_group.metals.append(met) + + logger.debug( + "Bridging group detected: Metal %s linked to existing group %s in Ligand %s", + met.label, + added_group.formula, + parent_ligand.formula, + ) + is_duplicate = True + break + + if not is_duplicate: + # 4. New unique coordination group + parent_ligand.groups.append(group) + group.parent_ligand = parent_ligand + + logger.info( + "Mapped %s (%s) from Metal %s to Ligand %s", + group.formula, + group.haptic_type, + met.label, + parent_ligand.formula, + ) + + def merge_connected_groups(self): + """ + Merge ligand groups that are graph-connected. + + Groups are merged if they: + 1) Are purely comprised of Carbon atoms (no heteroatoms allowed in the group), + 2) Share atoms (overlap), or + 3) Are directly bonded through the molecule adjacency graph (C-C bonds). + + This allows reconstruction of extended haptic domains (e.g., fused rings) + while keeping heteroatom groups isolated. + """ + for lig in self.ligands: + if not lig.groups: + continue + + n = len(lig.groups) + adj = {i: set() for i in range(n)} + + adjmat = self.adjmat # Molecule adjacency matrix + mol_labels = self.labels # Molecule atom labels + group_atom_sets = [ + set([atom.get_parent_index("molecule") for atom in g.atoms]) + for g in lig.groups + ] + # --- NEW: Identify which groups are purely Carbon --- + # We create a boolean mask: True if the group contains ONLY "C", False otherwise. + # group_is_pure_carbon = [ + # all(mol_labels[idx] == "C" for idx in atoms) + # for atoms in group_atom_sets + # ] + + # --- Build connectivity graph between groups --- + for i in range(n): + # STRICT RULE: If group i has heteroatoms (e.g., N1), it is not mergeable. + # if not group_is_pure_carbon[i]: + # continue + + atoms_i = group_atom_sets[i] + + for j in range(i + 1, n): + # STRICT RULE: If group j has heteroatoms, it is not mergeable. + # if not group_is_pure_carbon[j]: + # continue + + atoms_j = group_atom_sets[j] + + # Condition 1: overlap + if not atoms_i.isdisjoint(atoms_j): + adj[i].add(j) + adj[j].add(i) + continue + + # Condition 2: bonded continuity + connected = False + # Direct check: Is there ANY bond between ANY atom in i and ANY atom in j? + # This dual loop is safe for both Dense (numpy) and Sparse (scipy) matrices. + for ai in atoms_i: + for aj in atoms_j: + if adjmat[ai, aj]: # Non-zero means bonded + connected = True + break + if connected: + break + + if connected: + adj[i].add(j) + adj[j].add(i) + + if connected: + adj[i].add(j) + adj[j].add(i) + + # --- Find connected components --- + visited = [False] * n + merged_groups = [] + + for i in range(n): + if visited[i]: + continue + + stack = [i] + visited[i] = True + component = [] + + while stack: + curr = stack.pop() + component.append(curr) + for nb in adj[curr]: + if not visited[nb]: + visited[nb] = True + stack.append(nb) + + # --- Merge component --- + if len(component) == 1: + merged_groups.append(lig.groups[component[0]]) + else: + groups_to_merge = [lig.groups[idx] for idx in component] + # Expecting a LIST of groups + new_groups = merge_multiple_groups(self, groups_to_merge, lig) + if new_groups: + merged_groups.extend(new_groups) + logger.debug( + "Merged %d connected groups in %s → %s", + len(groups_to_merge), + lig.formula, + [g.haptic_type for g in new_groups], + ) + else: + logger.warning("Failed to merge groups in %s", lig.formula) + merged_groups.extend(groups_to_merge) + + lig.groups = merged_groups + + def get_hapticity(self): + if self.ligands is None: + self.split_complex() + self.is_haptic = False + self.haptic_type = [] + if self.iscomplex: + for lig in self.ligands: + if lig.is_haptic is None: + lig.get_hapticity() + if lig.is_haptic: + self.is_haptic = True + for entry in lig.haptic_type: + self.haptic_type.append(entry) + + return self.haptic_type + + def save(self, path): + logger.info(f"SAVING cell2mol MOLECULE object to {path}") + with open(path, "wb") as fil: + pickle.dump(self, fil) + + def get_unique_species(self): + logger.info("Getting unique species in molecule: %s", self.formula) + + self.unique_species = [] + self.unique_indices = [] + self.species_list = [] + + typelist_mols = [] + typelist_ligs = [] + typelist_mets = [] + + specs_found = -1 + + # Case 1: simple molecule (not complex, not IA/IIA) + if ( + not self.iscomplex + and not self.has_ia_iia + and not self.has_post_transition_metal + ): + found = False + for ldx, typ in enumerate(typelist_mols): + issame = compare_species(self, typ[0]) + if issame: + found = True + kdx = typ[1] + logger.debug("molecule is the same as type %s", ldx) + + if not found: + specs_found += 1 + kdx = specs_found + typelist_mols.append([self, kdx]) + self.unique_species.append(self) + logger.debug( + "New molecule found: formula=%s, added at specie type %d", + self.formula, + kdx, + ) + + self.unique_indices.append(kdx) + self.unique_index = kdx + self.species_list.append(self) + + else: + # Ensure ligands and metals are available + if not self.ligands is not None: + if self.iscomplex or self.has_ia_iia: + self.split_complex() + elif self.has_post_transition_metal: + self.split_complex(post_tms=True) + # Case 2: ligands + for jdx, lig in enumerate(self.ligands): + found = False + for ldx, typ in enumerate(typelist_ligs): + if lig.is_nitrosyl is None: + lig.evaluate_as_nitrosyl() + if typ[0].is_nitrosyl is None: + typ[0].evaluate_as_nitrosyl() + if lig.haptic_type is None: + lig.get_hapticity() + if typ[0].haptic_type is None: + typ[0].get_hapticity() + lig_groups_labels = [g.labels for g in lig.groups] + typ_groups_labels = [g.labels for g in typ[0].groups] + + if lig.is_nitrosyl and typ[0].is_nitrosyl: + issame = lig.NO_type == typ[0].NO_type + else: + if ( + len(lig_groups_labels) == len(typ_groups_labels) + and sorted(lig_groups_labels) == sorted(typ_groups_labels) + and lig.haptic_type == typ[0].haptic_type + ): + # if lig.haptic_type == typ[0].haptic_type: + issame = compare_species(lig, typ[0]) + else: + issame = False + + if issame: + found = True + kdx = typ[1] + logger.debug( + "ligand %s (%d) is the same with type %d in typelist", + lig.formula, + jdx, + ldx, + ) + if not found: + specs_found += 1 + kdx = specs_found + typelist_ligs.append([lig, kdx]) + self.unique_species.append(lig) + logger.debug( + "New ligand found: %s, added at specie type %d", + lig.formula, + kdx, + ) + + self.unique_indices.append(kdx) + lig.unique_index = kdx + self.species_list.append(lig) + + # Case 3: metals + for jdx, met in enumerate(self.metals): + found = False + for ldx, typ in enumerate(typelist_mets): + issame = compare_metals(met, typ[0]) + if issame: + found = True + kdx = typ[1] + logger.debug( + "metal %s (%d) is the same with type %d in typelist", + met.formula, + jdx, + ldx, + ) + if not found: + specs_found += 1 + kdx = specs_found + typelist_mets.append([met, kdx]) + self.unique_species.append(met) + logger.debug( + "New metal found: formula=%s, added at specie type %d", + met.formula, + kdx, + ) + + self.unique_indices.append(kdx) + met.unique_index = kdx + self.species_list.append(met) + + return self.unique_species + + def get_selected_cs(self): + if not self.unique_species is not None: + self.get_unique_species() + + self.selected_cs = [] + for unique_specie in self.unique_species: + logger.info( + "Get possible charge states for unique specie %s", unique_specie.formula + ) + tmp = unique_specie.get_possible_cs() + if tmp is None: + self.selected_cs.append(None) + elif len(tmp) == 0: + self.selected_cs.append(None) + elif unique_specie.subtype != "metal": + self.selected_cs.append( + list([cs.corr_total_charge for cs in unique_specie.possible_cs]) + ) + else: + self.selected_cs.append(unique_specie.possible_cs) + + for specie in self.species_list: + logger.info( + "Get possible charge states for species list %s", specie.formula + ) + tmp = specie.get_possible_cs() + if tmp is None: + self.selected_cs.append(None) + elif len(tmp) == 0: + self.selected_cs.append(None) + elif specie.subtype != "metal": + self.selected_cs.append( + list([cs.corr_total_charge for cs in specie.possible_cs]) + ) + else: + self.selected_cs.append(specie.possible_cs) + + if None in self.selected_cs: + self.error_get_poscharges = True + else: + self.error_get_poscharges = False + + def assign_charges(self): + logger.info("Assigning charges for molecule: %s", self.formula) + for specie in self.unique_species: + if self.iscomplex or self.has_ia_iia or self.has_post_transition_metal: + for jdx, lig in enumerate(self.ligands): + if lig.unique_index == specie.unique_index: + set_charge_state(specie, lig, mode=1) + for kdx, met in enumerate(self.metals): + if met.unique_index == specie.unique_index: + met.set_charge(specie.charge) + else: + if self.unique_index == specie.unique_index: + set_charge_state(specie, self, mode=1) + temp = [] + self.create_bonds() + temp.append(self.error_create_bonds) + if self.iscomplex or self.has_ia_iia or self.has_post_transition_metal: + prepare_mol(self) + + if any(temp): + self.error_create_bonds = True + else: + self.error_create_bonds = False + + if self.iscomplex or self.has_ia_iia or self.has_post_transition_metal: + prepare_mol(self) + logger.info("Complex %s %s", self.formula, self.totcharge) + for jdx, lig in enumerate(self.ligands): + logger.info( + " Ligand %d %s %s %s", + jdx, + lig.formula, + lig.totcharge, + lig.smiles, + ) + for kdx, met in enumerate(self.metals): + logger.info(" Metal %d %s %s", kdx, met.formula, met.charge) + else: + logger.info( + "Non-Complex %s %s %s", self.formula, self.totcharge, self.smiles + ) + + def create_bonds(self): + # First part: Non-complex molecule + if self.is_non_complex_molecule: + # Creates bonds between molecule.atoms using the molecule.rdkit_object + result = create_bonds_specie(self) + if not result: + logger.error("Error for non-complex molecule %s", self.formula) + self.error_create_bonds = True + return # Exit the function entirely if creating bonds fails + else: + logger.debug("Bonds created for non-complex molecule %s", self.formula) + + # Second part: Complex molecule, add bonds for ligands + if self.iscomplex or self.has_ia_iia or self.has_post_transition_metal: + self.ligand_smiles_with_H = [lig.smiles for lig in self.ligands] + self.ligand_smiles = [] + fix_zwitterions_ligands = [] + + for lig in self.ligands: + # Creates bonds between ligand.atoms, using the ligand.rdkit_object + result = create_bonds_specie(lig) + if not result: + logger.error("Error for ligand %s", lig.formula) + + self.error_create_bonds = True + return # Exit the function entirely if creating bonds fails for any ligand + + logger.debug("Bonds created for ligand %s", lig.formula) + logger.debug("Correcting Smiles for ligand %s", lig.formula) + result, fix_zwitterions = correct_smiles_ligand(lig) + if not result: + logger.error( + "Error for ligand %s in correcting smiles", lig.formula + ) + self.error_create_bonds = True + return # Exit the function entirely + + logger.debug("Smiles corrected for ligand %s", lig.formula) + if fix_zwitterions: + fix_zwitterions_ligands.append(lig) + else: + self.ligand_smiles.append(lig.smiles) + + for lig in fix_zwitterions_ligands: + for atom in lig.atoms: + atom.bonds = [] + + logger.debug( + "Re-running create_bonds_specie for ligand %s due to zwitterion correction.", + lig.formula, + ) + result = create_bonds_specie(lig) + if not result: + logger.error( + "Error for ligand %s in re-creating bonds", lig.formula + ) + self.error_create_bonds = True + return + + logger.debug( + "Bonds re-created for ligand %s after zwitterion correction.", + lig.formula, + ) + self.ligand_smiles.append(lig.smiles) + + # Third part : adds metal-ligand bonds, metal-metal bonds, with a zero order + if self.iscomplex or self.has_ia_iia or self.has_post_transition_metal: + create_metal_ligand_bonds(self) + create_metal_metal_bonds(self) + + self.error_create_bonds = False + + def assess_errors(self): + if self.error_get_poscharges: + case = 5 + elif self.error_multiple_distrib: + case = 6 + elif self.error_empty_distrib: + case = 7 + elif self.error_assign_charge: + case = 8 + elif self.error_create_bonds: + case = 9 + elif self.error_get_spin: + case = 10 + else: + case = 0 + + self.error_case = case diff --git a/cell2mol/classes/protonation.py b/cell2mol/classes/protonation.py new file mode 100644 index 000000000..2a9b1ec77 --- /dev/null +++ b/cell2mol/classes/protonation.py @@ -0,0 +1,302 @@ +import numpy as np +from typing import Any +from cell2mol.my_types import Type +from cell2mol.connectivity import get_adjmatrix, get_adjmatrix_from_cif_bonds +from cell2mol.element_utils import labels2formula, get_radii +from cell2mol.utils.pydantic import BaseModel +from cell2mol.my_types import NDArray +from pydantic import Field, computed_field +from typing_extensions import Literal, deprecated +from cell2mol.elementdata import ElementData +import logging +from cell2mol.utils import config + +logger = logging.getLogger(__name__) +elemdatabase = ElementData() + + +class Protonation(BaseModel): + # Required constructor parameters + labels: list[str] + coord: NDArray + cov_factor: float + + # Total number of protons added + n_protons_added: int + + # Protons added per site (len = length of parent labels) + site_proton_counts: list[int] + + # Electrons donated from ligand lone pairs per site (len = length of parent labels) + ligand_donor_electrons: list[int] + + # Protonation mode + # "none" : no protonation + # "heuristic": apply chemical rules + # "combinatorial": explore combinations + mode: str | Literal["none", "heuristic", "combinatorial"] | None = None + + parent: object | None = Field(default=None) + + # Computed attributes with proper defaults + natoms: int | None = None + formula: str | None = None + atnums: list[int] | None = None + radii: NDArray | None = None + + # Conditionally set attributes with None defaults (eliminates hasattr need) + atom_site_labels_indices: list[int] | None = None + atom_site_labels: list[str] | None = None + status: bool | None = None + adjmat: NDArray | None = None + adjnum: NDArray | None = None + + # Frozen fields + type: Type = Field(default="protonation") + + # NOTE: Removed custom model_serializer that was returning "{}" string. + # This was breaking deserialization. Protonation now serializes normally. + + @computed_field + @property + def computed_natoms(self) -> int: + return len(self.labels) + + @computed_field + @property + def computed_formula(self) -> str: + return labels2formula(self.labels) + + @computed_field + @property + def computed_atnums(self) -> list[int]: + return [elemdatabase.elementnr[label] for label in self.labels] + + @computed_field + @property + def computed_radii(self) -> list[float]: + return get_radii(self.labels) + + def model_post_init(self, __context: Any) -> None: + # Set computed values + self.natoms = self.computed_natoms + self.formula = self.computed_formula + self.atnums = self.computed_atnums + self.radii = self.computed_radii + + # Handle conditional attribute setting based on parent + # Note: parent may be a string UUID during deserialization, skip in that case + if self.parent is not None and not isinstance(self.parent, str): + refcell = self.parent.get_parent("reference") + bond_data = getattr(refcell, "geom_bond_cif", None) if refcell else None + + if refcell is not None: + self.atom_site_labels_indices = [ + atom.get_parent_index("reference") for atom in self.parent.atoms + ] + self.atom_site_labels = [ + refcell.atom_site_labels[idx] + for idx in self.atom_site_labels_indices + ] + use_bond_info = config.USE_BOND_INFO + if use_bond_info: + self.status = True + adjmat = get_adjmatrix_from_cif_bonds( + self.labels, + self.coord, + atom_site_labels=self.atom_site_labels, + bond_data=bond_data, + ) + adjnum = adjmat.sum(axis=1) + base_count = len(self.labels) - self.n_protons_added + proton_count = 0 + for idx, n_added in enumerate(self.site_proton_counts): + if n_added > 0: + coordinating_atom_label = ( + f"{self.labels[idx]} ({self.atom_site_labels[idx]})" + if self.atom_site_labels + else self.labels[idx] + ) + logger.debug( + "Coordinating atom site (idx: %d) %s %s add %s protons", + idx, + coordinating_atom_label, + self.coord[idx], + n_added, + ) + for _ in range(n_added): + added_idx = base_count + proton_count + proton_count += 1 + logger.debug( + " Added proton site (idx: %d) %s %s", + added_idx, + self.labels[added_idx], + self.coord[added_idx], + ) + adjmat[idx, added_idx] += 1 + adjmat[added_idx, idx] += 1 + adjnum[idx] += 1 + adjnum[added_idx] += 1 + + self.adjmat = adjmat + self.adjnum = adjnum + else: + # 1. Generate the initial adjacency matrix + self.status, self.adjmat, warning = get_adjmatrix( + self.labels, + self.coord, + radii=self.radii, + cov_factor=self.cov_factor, + # add_atom=True, # Not needed since we manually fix connectivity below + ) + + # 2. Synchronize adjnum with the new matrix + self.adjnum = self.adjmat.sum(axis=1) + + # 3. Fix connectivity for unconditionally added protons + base_count = len(self.labels) - self.n_protons_added + proton_count = 0 + for idx, n_added in enumerate(self.site_proton_counts): + if n_added > 0: + coordinating_atom_label = ( + f"{self.labels[idx]} ({self.atom_site_labels[idx]})" + if self.atom_site_labels + else self.labels[idx] + ) + logger.debug( + "Coordinating atom site (idx: %d) %s %s add %s protons", + idx, + coordinating_atom_label, + self.coord[idx], + n_added, + ) + + for _ in range(n_added): + # Calculate the absolute index of the added atom in the current matrix + added_idx = base_count + proton_count + proton_count += 1 + logger.debug( + " Added proton site (idx: %d) %s %s", + added_idx, + self.labels[added_idx], + self.coord[added_idx], + ) + + # Clear all 'accidental' bonds for the added atom + self.adjmat[added_idx, :] = 0 + self.adjmat[:, added_idx] = 0 + + # Enforce the single intended bond + self.adjmat[idx, added_idx] = 1 + self.adjmat[added_idx, idx] = 1 + + # 4. Final Recalculation: Always recalculate adjnum after manual adjmat changes + self.adjnum = self.adjmat.sum(axis=1) + + # if warning: + # self.status = False + + def reorder(self, map): + ## for protonation states with added protons, the reorder map will have fewer items. Correct it here + mapext = np.copy(map) + if self.n_protons_added > 0 and len(map) < len(self.labels): + for ldx in range(0, self.n_protons_added): + mapext = np.append(mapext, len(map) + ldx) + + assert len(mapext) == len(self.labels) + assert len(map) == len(self.site_proton_counts) + if len(map) > 0: + self.labels = list(np.array(self.labels)[mapext]) + self.coord = list(np.array(self.coord)[mapext]) + self.atnums = list(np.array(self.atnums)[mapext]) + self.radii = list(np.array(self.radii)[mapext]) + # No more hasattr check needed - atom_site_labels is always defined (can be None) + if self.atom_site_labels is not None: + self.atom_site_labels = list(np.array(self.atom_site_labels)[map]) + self.site_proton_counts = list(np.array(self.site_proton_counts)[map]) + self.ligand_donor_electrons = list( + np.array(self.ligand_donor_electrons)[map] + ) + + self.typ = "Reordered" + refcell = self.parent.get_parent("reference") + bond_data = getattr(refcell, "geom_bond_cif", None) if refcell else None + use_bond_info = config.USE_BOND_INFO + if use_bond_info: + self.status = True + adjmat = get_adjmatrix_from_cif_bonds( + self.labels, + self.coord, + atom_site_labels=self.atom_site_labels, + bond_data=bond_data, + ) + adjnum = adjmat.sum(axis=1) + count = 0 + if len(self.site_proton_counts) > 0: + for idx, n_added in enumerate(self.site_proton_counts): + if n_added != 0: + count += 1 + added_idx = len(self.site_proton_counts) - 1 + count + adjmat[idx, added_idx] += 1 + adjmat[added_idx, idx] += 1 + adjnum[idx] += 1 + adjnum[added_idx] += 1 + + self.adjmat = adjmat + self.adjnum = adjnum + else: + self.status, self.adjmat, warning = get_adjmatrix( + self.labels, + self.coord, + radii=self.radii, + cov_factor=self.cov_factor, + ) + self.adjnum = self.adjmat.sum(axis=1) + return self + + def __str__(self): + # This will make print(object) behave like before + return self.__repr__() + + def __repr__(self): + to_print = "" + to_print += "------------- Cell2mol Protonation ----------------\n" + to_print += f" Status = {self.status}\n" + to_print += f" Labels = {self.labels}\n" + # No more hasattr check needed - atom_site_labels is always defined (can be None) + if self.atom_site_labels is not None: + to_print += f" Atom site labels = {self.atom_site_labels}\n" + to_print += f" Type = {self.type}\n" + to_print += f" Protonation Mode = {self.mode}\n" + to_print += f" Number of added protons = {self.n_protons_added}\n" + to_print += f" Protons added in positions = {self.site_proton_counts}\n" + if sum(self.ligand_donor_electrons) > 0: + to_print += ( + f" Ligand donor electrons = {self.ligand_donor_electrons}\n" + ) + to_print += "---------------------------------------------------\n" + return to_print + + @classmethod + @deprecated("Use protonation() with the keyword arguments instead.") + def from_positional( + cls, + labels: list[str], + coord: NDArray, + cov_factor: float, + n_protons_added: int, + site_proton_counts: list[int], + ligand_donor_electrons: list[int], + mode: str = None, + parent: object = None, + ) -> "Protonation": + return cls( + labels=labels, + coord=coord, + cov_factor=cov_factor, + n_protons_added=n_protons_added, + site_proton_counts=site_proton_counts, + ligand_donor_electrons=ligand_donor_electrons, + mode=mode, + parent=parent, + ) diff --git a/cell2mol/classes/reference.py b/cell2mol/classes/reference.py new file mode 100644 index 000000000..09abba7a8 --- /dev/null +++ b/cell2mol/classes/reference.py @@ -0,0 +1,500 @@ +from __future__ import annotations +import logging +from cell2mol.classes.cell import Cell +from typing_extensions import deprecated +from pydantic import Field +from cell2mol.classes.metal import Metal +from cell2mol.classes.molecule import Molecule +from cell2mol.classes.specie import Specie +from cell2mol.connectivity import split_species +from cell2mol.compare import compare_species, compare_metals +from cell2mol.operations import extract_from_list, get_moiety_indices_from_labels +from cell2mol.elementdata import ElementData +from cell2mol.utils import config +from cell2mol.my_types import SubType +from cell2mol.charge.specie_assigner import set_charge_state + +logger = logging.getLogger(__name__) + +elemdatabase = ElementData() + + +Labels = list[str] + + +class Reference(Cell): + model_config = {"arbitrary_types_allowed": True, "populate_by_name": True} + + # Reference molecule lists + refmoleclist: list[Molecule] | None = None + + atom_site_labels: list[str] | None = None + + # CIF bond/moiety related attributes + geom_bond_cif: list[tuple] | None = None + moiety_list_cif: list[list[str]] | None = None + exist_cif_bond_moiety: bool | None = None + moiety_indices: list[list[int]] | None = None + + # Unique species related attributes + unique_species: list[Specie | Metal] | None = None + + # Missing H related attributes + has_isolated_H: bool | None = None + missing_H_in_Carbon: bool | None = None + missing_H_in_CoordWater: bool | None = None + missing_H_in_Water: bool | None = None + has_missing_H: bool | None = None + + # Retrieving possible charges related attributes + selected_cs: list[list[int]] | None = None + error_get_poscharges: bool | None = None + + # Additional CIF related attributes + chemical_name: str | None = None + reported_metal_os: list[tuple[str, int]] | None = None + moiety_dicts: list[dict] | None = None + + # Potential warning flags dictionary allowing True, False, or None + potential_warnings: dict[str, bool | None] | None = None + + # Frozen fields + subtype: SubType = Field(default="reference") + + def set_atom_site_labels(self, atom_site_labels): + """Set the atom site labels (e.g. Fe1, O2, C3, etc. from CIF file).""" + self.atom_site_labels = atom_site_labels + + def set_cif_bond_moiety(self, geom_bond_cif=None, moiety_list_cif=None): + """Set and process bond moiety information from a CIF file.""" + self.geom_bond_cif = geom_bond_cif + self.moiety_list_cif = moiety_list_cif + + self.exist_cif_bond_moiety = False + self.moiety_indices = None + + if geom_bond_cif is None: + return + + self.exist_cif_bond_moiety = True + self.moiety_indices = get_moiety_indices_from_labels( + self.atom_site_labels, moiety_list_cif + ) + + def set_additional_cif_info(self, chemical_name, reported_metal_os, moiety_dicts): + """Set additional CIF information such as chemical name, reported metal oxidation states, and moiety dictionaries.""" + self.chemical_name = chemical_name + self.reported_metal_os = reported_metal_os + self.moiety_dicts = moiety_dicts + + def set_potential_warning(self, warnings_dict: dict[str, bool | None]): + """ + Directly stores the warnings dictionary and logs any active flags. + Based on CIF mismatch, polynuclear limit, + mixed metals, and adjacency mismatch, metal coordination differences. + """ + self.potential_warnings = warnings_dict + + # Log only actual warnings to the system console + active = [k for k, v in warnings_dict.items() if v is True] + if active: + logger.warning(f"Reference Warnings: {active}") + + # Log skipped checks as debug info + skipped = [k for k, v in warnings_dict.items() if v is None] + if skipped: + logger.debug(f"Comparisons with CIF Skipped: {skipped}") + + def get_reference_molecules( + self, + cov_factor: float | None = None, + metal_factor: float | None = None, + use_bond_info: bool | None = None, + ): + """ + Generate reference molecules from atomic fractional coordinates and labels. + Args: + cov_factor (float): covalent radius scaling factor for adjacency + metal_factor (float): additional scaling factor for metals + use_bond_info (bool): whether to use CIF bond information + Returns: + list: list of reference molecule objects + """ + if cov_factor is None: + cov_factor = config.COV_FACTOR + if metal_factor is None: + metal_factor = config.METAL_FACTOR + if use_bond_info is None: + use_bond_info = config.USE_BOND_INFO + + logger.info("=" * 40) + logger.info(" Generate reference molecules ") + if use_bond_info: + logger.info(" Consistent with CIF moieties ") + logger.info("=" * 40) + + if self.subtype != "reference": + logger.error("Cell subtype is not 'reference'") + return [] + + ref_labels = self.labels + ref_fracs = self.frac_coord + ref_pos = self.coord + atom_site_labels = self.atom_site_labels + bond_data = getattr(self, "geom_bond_cif", None) + + # Determine blocklist + if use_bond_info: + blocklist = self.moiety_indices + logger.info("Using CIF bond/moiety information for blocklist") + if self.moiety_indices is None: + logger.error("CIF moiety indices are not available") + return [] + else: + blocklist = split_species( + ref_labels, + ref_pos, + atom_site_labels=atom_site_labels, + bond_data=bond_data, + cov_factor=cov_factor, + metal_factor=metal_factor, + warn_on_mismatch=True, + ) + logger.info("Using distance-based species splitting for blocklist") + if self.moiety_indices is not None: + logger.info("CIF bond/moiety information is available but not used") + + if not blocklist: + logger.warning("No blocklist found") + return [] + + self.refmoleclist = [] + # Build reference molecules + for b in blocklist: + mol_labels = extract_from_list(b, ref_labels, dimension=1) + mol_coord = extract_from_list(b, ref_pos, dimension=1) + mol_frac_coord = extract_from_list(b, ref_fracs, dimension=1) + mol_atom_site_labels = extract_from_list(b, atom_site_labels, dimension=1) + + newmolec = Molecule.from_positional(mol_labels, mol_coord, mol_frac_coord) + newmolec.add_parent(self, indices=b) + newmolec.set_adjacency_parameters(cov_factor, metal_factor) + newmolec.set_atoms( + create_adjacencies=True, + atom_site_labels=mol_atom_site_labels, + use_bond_info=use_bond_info, + ) + + for atom, idx in zip(newmolec.atoms, b): + atom.add_parent(self, index=idx) + + if newmolec.iscomplex or newmolec.has_ia_iia: + logger.debug("Is complex: %s", newmolec.formula) + logger.debug("Splitting complex: %s", newmolec.formula) + newmolec.split_complex() + elif newmolec.has_post_transition_metal: + logger.debug("Has post-transition metal: %s", newmolec.formula) + newmolec.split_complex(post_tms=True) + else: + newmolec.add_parent(newmolec, indices=list(range(newmolec.natoms))) + + self.refmoleclist.append(newmolec) + + logger.info("Found %d reference molecules", len(self.refmoleclist)) + logger.info("Formulas: %s", [ref.formula for ref in self.refmoleclist]) + + # Check for isolated atoms + has_isolated_h = False + for ref in self.refmoleclist: + if ref.natoms == 1: + label = ref.atoms[0].label + if label in {"H", "D"}: + has_isolated_h = True + logger.warning( + " Isolated hydrogen found %s (%s)", + ref.labels[0], + ref.atom_site_labels[0] if ref.atom_site_labels else "N/A", + ) + else: + logger.warning( + " Isolated atom found %s (%s)", + ref.labels[0], + ref.atom_site_labels[0] if ref.atom_site_labels else "N/A", + ) + + self.has_isolated_H = has_isolated_h + logger.info("Has isolated hydrogen: %s", self.has_isolated_H) + + # Post-processing: coordination analysis + for ref in self.refmoleclist: + ref.analyze_coordination() + + return self.refmoleclist + + def check_hydrogens(self): + from cell2mol.hydrogen import check_missing_hydrogens + + ( + has_missing_h, + missing_h_in_carbon, + missing_h_in_coordinated_water, + missing_h_in_water, + ) = check_missing_hydrogens(self.refmoleclist) + if has_missing_h: + logger.info( + "Missing hydrogens | carbon=%d, coordinated_water=%d, water=%d", + missing_h_in_carbon, + missing_h_in_coordinated_water, + missing_h_in_water, + ) + self.has_missing_H = has_missing_h + self.missing_H_in_Carbon = missing_h_in_carbon + self.missing_H_in_CoordWater = missing_h_in_coordinated_water + self.missing_H_in_Water = missing_h_in_water + + return self.has_missing_H + + def get_unique_species(self): + """Get unique species, unique indices, and species list in the Reference cell.""" + logger.info("Getting unique species in %s", self.subtype) + + self.unique_species = [] + self.unique_indices = [] + self.species_list = [] + typelist_mols = [] # temporary variable + typelist_ligs = [] # temporary variable + typelist_mets = [] # temporary variable + + specs_found = -1 + if not self.refmoleclist: # None or empty + logger.error("Reference molecule list is None") + return + moleclist = self.refmoleclist + + for idx, mol in enumerate(moleclist): + logger.debug("Molecule (%d) formula=%s", idx, mol.formula) + if mol.is_non_complex_molecule: # Non-complex molecules + found = False + for ldx, typ in enumerate(typelist_mols): + issame = compare_species(mol, typ[0]) + if issame: + found = True + kdx = typ[1] + logger.debug( + "molecule %s (%d) is the same with type %d in type list", + mol.formula, + idx, + ldx, + ) + if not found: + specs_found += 1 + kdx = specs_found + typelist_mols.append(list([mol, kdx])) + self.unique_species.append(mol) + logger.debug( + "New molecule found with: formula=%s and added in specie type %d", + mol.formula, + kdx, + ) + self.unique_indices.append(kdx) + mol.unique_index = kdx + self.species_list.append(mol) + else: # Complex molecules + if mol.ligands is None: + if mol.iscomplex: + mol.split_complex() + elif mol.has_ia_iia: + mol.split_ia_iia() + elif mol.has_post_transition_metal: + mol.split_post_transition_metal() + # ligands + for jdx, lig in enumerate(mol.ligands): + found = False + for ldx, typ in enumerate(typelist_ligs): + if lig.is_nitrosyl is None: + lig.evaluate_as_nitrosyl() + if typ[0].is_nitrosyl is None: + typ[0].evaluate_as_nitrosyl() + if lig.haptic_type is None: + lig.get_hapticity() + if typ[0].haptic_type is None: + typ[0].get_hapticity() + + lig_groups_labels = [g.labels for g in lig.groups] + typ_groups_labels = [g.labels for g in typ[0].groups] + + if lig.is_nitrosyl and typ[0].is_nitrosyl: + if lig.NO_type == typ[0].NO_type: + issame = True + else: + issame = False + else: + if ( + len(lig_groups_labels) == len(typ_groups_labels) + and sorted(lig_groups_labels) + == sorted(typ_groups_labels) + and lig.haptic_type == typ[0].haptic_type + ): + issame = compare_species(lig, typ[0]) + else: + issame = False + if issame: + found = True + kdx = typ[1] + logger.debug( + "ligand %s (%d) is the same with type %d in type list", + lig.formula, + jdx, + ldx, + ) + if not found: + specs_found += 1 + kdx = specs_found + typelist_ligs.append(list([lig, kdx])) + self.unique_species.append(lig) + logger.debug( + "New ligand found with: formula=%s added in specie type %d", + lig.formula, + kdx, + ) + self.unique_indices.append(kdx) + lig.unique_index = kdx + self.species_list.append(lig) + # metals + for jdx, met in enumerate(mol.metals): + found = False + for ldx, typ in enumerate(typelist_mets): + issame = compare_metals(met, typ[0]) + if issame: + found = True + kdx = typ[1] + logger.debug( + "Metal %s (%d) is the same with type %d in type list", + met.formula, + jdx, + ldx, + ) + if not found: + specs_found += 1 + kdx = specs_found + typelist_mets.append(list([met, kdx])) + self.unique_species.append(met) + logger.debug( + "New metal found with: formula=%s and added in specie type %d", + met.formula, + kdx, + ) + self.unique_indices.append(kdx) + met.unique_index = kdx + self.species_list.append(met) + + logger.info("Unique species: %s", [s.formula for s in self.unique_species]) + logger.info("Unique indices: %s", self.unique_indices) + logger.info("Species list: %s", [s.formula for s in self.species_list]) + + def get_selected_cs(self) -> None: + """ + Get selected (valid) charge states for unique species and species list. + Updates self.selected_cs and sets error flags if any None is found. + """ + assert self.subtype == "reference", ( + "get_selected_cs should only be called on reference" + ) + + if self.unique_species is None: + self.get_unique_species() + + self.selected_cs = [] + + # Process unique_species first, then the full species_list + all_targets = [(specie, "unique specie") for specie in self.unique_species] + all_targets.extend([(specie, "species list") for specie in self.species_list]) + + for specie, context_label in all_targets: + logger.info( + "Get possible charge states for %s: %s", + context_label, + specie.formula, + ) + possible_cs = specie.get_possible_cs() + + if not possible_cs: + # Appending None indicates a failure to find options for this species + self.selected_cs.append(None) + continue + + if specie.subtype != "metal": + charges = [cs.corr_total_charge for cs in specie.possible_cs] + self.selected_cs.append(charges) + else: + self.selected_cs.append(specie.possible_cs) + + # Update error flag + self.error_get_poscharges = None in self.selected_cs + + def map_charges_to_reference(self): + """Logic: Propagate charges from Unique Species to Reference Molecules.""" + self.error_assign_charge = False + + for specie in self.unique_species: + for ref in self.refmoleclist: + try: + if ref.is_non_complex_molecule: + # Direct match for simple molecules + if ref.unique_index == specie.unique_index: + set_charge_state(specie, ref, mode=1) + else: + # Attempt to match all Ligands + for lig in ref.ligands: + if lig.unique_index == specie.unique_index: + try: + set_charge_state(specie, lig, mode=1) + except Exception: + self.error_assign_charge = True + + # Attempt to match all Metals + for met in ref.metals: + if met.unique_index == specie.unique_index: + try: + met.set_charge(specie.charge) + except Exception: + self.error_assign_charge = True + + except Exception as e: + # Catch-all for unexpected logic errors in the outer ref loop + self.error_assign_charge = True + logger.error( + "Error mapping charge for Specie %s: %s", specie.unique_index, e + ) + + def __repr__(self): + to_print = "" + to_print += "------------- Cell2mol Reference Object --------------\n" + to_print += Cell.__repr__(self, indirect=True) + if self.refmoleclist is not None: + to_print += f" # of Ref Molecules: = {len(self.refmoleclist)}\n" + to_print += " with Formula: \n" + for idx, ref in enumerate(self.refmoleclist): + to_print += f" {idx}: {ref.formula} \n" + to_print += "---------------------------------------------------\n" + return to_print + + @classmethod + @deprecated("Use reference() with the keyword arguments instead.") + def from_positional( + cls, + name: str, + labels: list[str], + pos: list[list[float]], + frac_coord: list[list[float]], + cell_vector: object, + cell_param: object, + ) -> "Reference": + return cls( + name=name, + labels=labels, + pos=pos, # Using pos which gets aliased to coord + frac_coord=frac_coord, + cell_vector=cell_vector, + cell_param=cell_param, + ) diff --git a/cell2mol/classes/specie.py b/cell2mol/classes/specie.py new file mode 100644 index 000000000..f04fd77b2 --- /dev/null +++ b/cell2mol/classes/specie.py @@ -0,0 +1,533 @@ +from __future__ import annotations + +from typing import Any + +import numpy as np +from pydantic import Field +from typing_extensions import deprecated + +from cell2mol.charge.protonation_enumerator import enumerate_protonation_states +from cell2mol.charge.charge_state_resolver import enumerate_possible_charge_states +from cell2mol.classes.atom import Atom +from cell2mol.classes.charge_state import ChargeState +from cell2mol.classes.metal import Metal +from cell2mol.classes.protonation import Protonation +from cell2mol.element_utils import ( + get_metal_idxs, + get_alkali_alkaline_earth_metal_idxs, + get_post_transition_metal_idxs, + get_element_count, + get_radii, + labels2electrons, + labels2formula, +) +from cell2mol.connectivity import build_adjacency, get_adjacency_types +from cell2mol.elementdata import ElementData +from cell2mol.my_types import NDArray, RDKitObject, RefList, SubType +from cell2mol.operations import compute_centroid, extract_from_list +from cell2mol.utils import BaseModel, config +import logging + +elemdatabase = ElementData() +logger = logging.getLogger(__name__) + + +class Specie(BaseModel): + model_config = {"arbitrary_types_allowed": True} + + # Positional arguments + labels: list[str] + coord: NDArray + frac_coord: NDArray | None = None + radii: NDArray | None = None + + # Optional arguments - parents is a cross-reference to parent Species + parents: RefList[Specie] = Field(default_factory=list) + parents_indices: list[list[int]] = Field(default_factory=list) + cov_factor: float = Field(default=config.COV_FACTOR) + metal_factor: float = Field(default=config.METAL_FACTOR) + + # Defined in other methods + adj_types: NDArray | None = None # TOFIX romaingrx: NDarray not pydantic compatible + adjmat: NDArray | None = None + adjnum: NDArray | None = None + atnums: list[int] | None = None + atom_site_labels: list[str] | None = None + atomic_charges: list[int] | NDArray | None = None + atoms: list[Atom] | None = None + centroid: NDArray | None = None + element_count: NDArray | None = None + frac_centroid: NDArray | None = None + madjmat: NDArray | None = None + madjnum: NDArray | None = None + protonation_states: list[Protonation] | None = None + rdkit_obj: RDKitObject | None = Field(default=None) + smiles: str | None = None + subtype: SubType | None = None + totcharge: int | None = None + + charge_state: ChargeState | None = None + possible_cs: list[ChargeState] | list[int] | None = Field(default=None) + origin: str | None = None + + # Frozen fields + type: str = Field(default="specie", frozen=True) + + @property + def formula(self) -> str: + return labels2formula(self.labels) + + @property + def eleccount(self) -> int: + # Assuming neutral specie (so basically this is the sum of atomic numbers) + return labels2electrons(self.labels) + + @property + def natoms(self) -> int: + return len(self.labels) + + @property + def iscomplex(self) -> bool: + """True if the structure contains d- or f-block metals.""" + return bool(get_metal_idxs(self.labels)) + + @property + def is_non_complex_molecule(self): + """ + Return True if the specie is a non-complex molecule, + meaning it contains no metals or metal-like elements. + """ + return ( + self.subtype == "molecule" + and not self.iscomplex + and not self.has_ia_iia + and not self.has_post_transition_metal + ) + + @property + def has_ia_iia(self) -> bool: + """True if the structure contains Group 1 or Group 2 metals (excluding H/D).""" + return bool(get_alkali_alkaline_earth_metal_idxs(self.labels)) + + @property + def has_post_transition_metal(self) -> bool: + """True if the structure contains post-transition metals only.""" + return ( + not self.iscomplex + and not self.has_ia_iia + and bool(get_post_transition_metal_idxs(self.labels)) + ) + + @property + def indices(self) -> list[int]: + # Indices might be the atom ordering within a given specie. + # e.g. 1st, 2nd, 3rd atom of a specie. + return list(range(self.natoms)) + + def model_post_init(self, context: Any) -> None: + super().model_post_init(context) + assert len(self.labels) == len(self.coord) + if self.frac_coord is not None: + assert len(self.coord) == len(self.frac_coord) + if self.radii is not None: + # Handle both list and scalar radii (scalar can happen during deserialization) + if isinstance(self.radii, (list, tuple)): + assert len(self.labels) == len(self.radii) + # If radii is a scalar and we have multiple atoms, expand it or recompute + elif len(self.labels) > 1: + self.radii = get_radii(self.labels) + else: + self.radii = get_radii(self.labels) + + @classmethod + @deprecated("Use specie() with the keyword arguments instead.") + def from_positional( + cls, labels: list, coord: list, frac_coord: list = None, radii: list = None + ) -> None: + return cls(labels=labels, coord=coord, frac_coord=frac_coord, radii=radii) + + def set_subtype(self, subtype: SubType): + self.subtype = subtype + + def set_origin(self, origin: str): + self.origin = origin + + def add_parent(self, parent: object, indices: list, overwrite: bool = True): + ## associates a parent specie to self. The atom indices of self in parent are given in "indices" + ## if parent of the same subtype already in self.parent then it is overwritten + ## this is to avoid having a substructure (e.g. a ligand) in more than one superstructure (e.g. a molecule) + + # 1st-evaluates parent + append = True + for idx, p in enumerate(self.parents): + if p.subtype == parent.subtype: + if overwrite: + self.parents[idx] = parent + self.parents_indices[idx] = indices + append = False + if append: + self.parents.append(parent) + self.parents_indices.append(indices) + + # 2nd-evaluates parents of parent + if hasattr(parent, "parents"): + for jdx, p2 in enumerate(parent.parents): + append = True + for idx, p in enumerate(self.parents): + if p.subtype == p2.subtype: + if overwrite: + self.parents[idx] = p2 + self.parents_indices[idx] = parent.get_parent_indices( + p2.subtype + ) + append = False + if append: + self.parents.append(p2) + self.parents_indices.append(parent.get_parent_indices(p2.subtype)) + + def check_parent(self, subtype: str): + ## checks if parent of a given subtype exists + for p in self.parents: + if p.subtype == subtype: + return True + return False + + def get_parent(self, subtype: str): + ## retrieves parent of a given subtype + for p in self.parents: + if p.subtype == subtype: + return p + return None + + def get_parent_indices(self, subtype: str): + ## retrieves parent of a given subtype + for idx, p in enumerate(self.parents): + if p.subtype == subtype: + return self.parents_indices[idx] + return None + + def get_centroid(self): + self.centroid = compute_centroid(np.array(self.coord)) + # If fractional coordinates exists, then also computes their centroid + if self.frac_coord is not None: + self.frac_centroid = compute_centroid(np.array(self.frac_coord)) + return self.centroid + + def set_fractional_coord(self, frac_coord: list) -> None: + assert len(frac_coord) == len(self.coord) + self.frac_coord = frac_coord + + def get_atomic_numbers(self): + if self.atoms is None: + self.set_atoms() + self.atnums = [] + for at in self.atoms: + self.atnums.append(at.atnum) + return self.atnums + + def set_element_count(self, heavy_only: bool = False): + self.element_count = get_element_count(self.labels, heavy_only=heavy_only) + return self.element_count + + def build_adjmatrix( + self, + use_bond_info: bool | None = None, + metal_only: bool = False, + ): + refcell = self.get_parent("reference") + bond_data = getattr(refcell, "geom_bond_cif", None) if refcell else None + cov_factor = getattr(self, "cov_factor", config.COV_FACTOR) + metal_factor = getattr(self, "metal_factor", config.METAL_FACTOR) + + if use_bond_info is None: + use_bond_info = config.USE_BOND_INFO + + adjmat = build_adjacency( + labels=self.labels, + positions=self.coord, + atom_site_labels=self.atom_site_labels, + bond_data=bond_data, + use_bond_info=use_bond_info, + cov_factor=cov_factor, + metal_factor=metal_factor, + metal_only=metal_only, + warn_on_mismatch=False, + detail=False, + ) + + if adjmat is None: + if metal_only: + self.madjmat = None + self.madjnum = None + return self.madjmat, self.madjnum + else: + self.adjmat = None + self.adjnum = None + return self.adjmat, self.adjnum + + adjnum = adjmat.sum(axis=1) + + if metal_only: + self.madjmat = adjmat + self.madjnum = adjnum + return self.madjmat, self.madjnum + else: + self.adjmat = adjmat + self.adjnum = adjnum + return self.adjmat, self.adjnum + + def set_adj_types(self, use_bond_info: bool | None = None): + if use_bond_info is None: + use_bond_info = config.USE_BOND_INFO + if self.adjmat is None: + self.build_adjmatrix(use_bond_info=use_bond_info, metal_only=False) + self.adj_types = get_adjacency_types(self.labels, self.adjmat) + return self.adj_types + + def set_adjacency_parameters(self, cov_factor: float, metal_factor: float) -> None: + # Stores the covalentradii factor and metal factor that were used to generate the molecule + self.cov_factor = cov_factor + self.metal_factor = metal_factor + + def get_adjacency_parameters(self) -> tuple[float, float]: + return self.cov_factor, self.metal_factor + + def set_atoms( + self, + atomlist: list | None = None, + create_adjacencies: bool = False, + atom_site_labels: list | None = None, + use_bond_info: bool | None = None, + ): + if use_bond_info is None: + use_bond_info = config.USE_BOND_INFO + if atomlist is not None: + self.atoms = atomlist.copy() + for idx, at in enumerate(self.atoms): + at.add_parent(self, index=idx) + else: + self.atoms = [] + + metal_idxs = get_metal_idxs(self.labels) + alkali_alkaline_earth_metal_idxs = get_alkali_alkaline_earth_metal_idxs( + self.labels + ) + + for idx, label in enumerate(self.labels): + ## For each label in labels, create an atom class object. + ismetal = ( + elemdatabase.elementblock[label] == "d" + or elemdatabase.elementblock[label] == "f" + ) + if len(get_alkali_alkaline_earth_metal_idxs([label])) > 0: + ismetal = True + if len(metal_idxs) == 0 and len(alkali_alkaline_earth_metal_idxs) == 0: + if len(get_post_transition_metal_idxs([label])) > 0: + ismetal = True + + if self.frac_coord is not None: + if ismetal: + newatom = Metal.from_positional( + label, + self.coord[idx], + self.frac_coord[idx], + radii=self.radii[idx], + ) + else: + newatom = Atom.from_positional( + label, + self.coord[idx], + self.frac_coord[idx], + radii=self.radii[idx], + ) + else: + if ismetal: + newatom = Metal.from_positional( + label, self.coord[idx], radii=self.radii[idx] + ) + else: + newatom = Atom.from_positional( + label, self.coord[idx], radii=self.radii[idx] + ) + newatom.add_parent(self, index=idx) + self.atoms.append(newatom) + + if atom_site_labels is not None: + self.atom_site_labels = atom_site_labels.copy() + for idx, at in enumerate(self.atoms): + at.set_atom_site_label(atom_site_labels[idx]) + + if create_adjacencies: + if self.adjmat is None: + self.build_adjmatrix(use_bond_info=use_bond_info, metal_only=False) + + if self.madjmat is None: + self.build_adjmatrix(use_bond_info=use_bond_info, metal_only=True) + + if self.adjmat is not None and self.madjmat is not None: + for idx, at in enumerate(self.atoms): + at.set_adjacencies( + self.adjmat[idx], + self.madjmat[idx], + self.adjnum[idx], + self.madjnum[idx], + ) + + def set_inherit_adjmatrix(self, parent_subtype: str): + exists = self.check_parent(parent_subtype) + if not exists: + logger.debug(f"{parent_subtype=} does not exist") + return None + parent = self.get_parent(parent_subtype) + indices = self.get_parent_indices(parent_subtype) + if parent.madjnum is None: + logger.debug(f"{parent_subtype=} does not have madjnum") + return None + + self.madjmat = np.stack( + extract_from_list(indices, parent.madjmat, dimension=2), axis=0 + ) + self.madjnum = np.stack( + extract_from_list(indices, parent.madjnum, dimension=1), axis=0 + ) + self.adjmat = np.stack( + extract_from_list(indices, parent.adjmat, dimension=2), axis=0 + ) + self.adjnum = np.stack( + extract_from_list(indices, parent.adjnum, dimension=1), axis=0 + ) + + def get_protonation_states(self): + """ + Enumerate protonation states for this Specie. + + Protonation states are only defined for ligands and + non-complex molecules. For all other species, + protonation_states is None. + """ + self.protonation_states = None + + if not (self.subtype == "ligand" or self.is_non_complex_molecule): + return self.protonation_states + + if self.subtype == "ligand": + if self.is_haptic is None: + self.get_hapticity() + if self.denticity is None: + self.get_denticity() + if self.is_nitrosyl is None: + self.evaluate_as_nitrosyl() + + self.protonation_states = enumerate_protonation_states(self) + return self.protonation_states + + def get_possible_cs(self): + """ + Enumerate possible charge states for this Specie. + + Possible charge states are only defined for ligands and + non-complex molecules. Final charge selection is handled + later at the cell level. + """ + if self.possible_cs is not None: + return self.possible_cs + + # Default behavior + self.possible_cs = None + + if not (self.subtype == "ligand" or self.is_non_complex_molecule): + return self.possible_cs + + if self.protonation_states is None: + self.get_protonation_states() + # logger.debug( + # "Obtained protonation states for %s: %s", + # self.formula, + # self.protonation_states, + # ) + logger.debug("Enumerating charge states for %s", self.formula) + + self.possible_cs = enumerate_possible_charge_states(self) + return self.possible_cs + + def set_charges( + self, + totcharge: int = None, + atomic_charges: list[int] | NDArray | None = None, + smiles: str | None = None, + rdkit_obj: object = None, + ) -> None: + ## Sets total charge + if totcharge is not None: + self.totcharge = totcharge + elif totcharge is None and atomic_charges is not None: + self.totcharge = np.sum(atomic_charges) + elif totcharge is None and atomic_charges is None: + self.totcharge = "Unknown" + ## Sets atomic charges + if atomic_charges is not None: + self.atomic_charges = atomic_charges + if self.atoms is None: + self.set_atoms() + for idx, a in enumerate(self.atoms): + a.set_charge(self.atomic_charges[idx]) + if smiles is not None: + self.smiles = smiles + if rdkit_obj is not None: + self.rdkit_obj = rdkit_obj + + def reset_charge(self): + self.totcharge = None + self.atomic_charges = None + self.smiles = None + self.rdkit_obj = None + self.possible_cs = None + + for a in self.atoms: + a.reset_charge() + + def print_xyz(self): + print(self.natoms) + print("") + for idx, label in enumerate(self.labels): + print( + "%s %.6f %.6f %.6f" + % (label, self.coord[idx][0], self.coord[idx][1], self.coord[idx][2]) + ) + + ## This defines the sum operation between two species. To be implemented + def __add__(self, other): + if not isinstance(other, type(self)): + return self + return self + + def __str__(self): + # This will make print(object) behave like before + return self.__repr__() + + def __repr__(self, indirect: bool = False): + to_print = "" + if not indirect: + to_print += "------------- Cell2mol SPECIE Object --------------\n" + to_print += f" Type = {self.type}\n" + if self.subtype is not None: + to_print += f" Sub-Type = {self.subtype}\n" + to_print += f" Number of Atoms = {self.natoms}\n" + to_print += f" Formula = {self.formula}\n" + to_print += f" Covalent Radii Factor = {self.cov_factor}\n" + to_print += f" Metal Radii Factor = {self.metal_factor}\n" + if self.adjmat is not None: + to_print += " Has Adjacency Matrix = YES\n" + else: + to_print += " Has Adjacency Matrix = NO \n" + if self.totcharge is not None: + to_print += f" Total Charge = {self.totcharge}\n" + if self.subtype == "molecule" and self.spin is not None: + to_print += f" Spin = {self.spin}\n" + if self.smiles is not None: + to_print += f" Smiles = {self.smiles}\n" + if self.origin is not None: + to_print += f" Origin = {self.origin}\n" + if not indirect: + to_print += "---------------------------------------------------\n" + return to_print diff --git a/cell2mol/classes/unitcell.py b/cell2mol/classes/unitcell.py new file mode 100644 index 000000000..373c36e9a --- /dev/null +++ b/cell2mol/classes/unitcell.py @@ -0,0 +1,227 @@ +from __future__ import annotations + +import logging +from cell2mol.classes.cell import Cell +from typing_extensions import deprecated +from pydantic import Field +from cell2mol.classes.molecule import Molecule +from cell2mol.classes.specie import Specie +from cell2mol.compare import compare_reference_indices +from cell2mol.charge.specie_assigner import set_charge_state +from cell2mol.elementdata import ElementData +from cell2mol.my_types import SubType + +logger = logging.getLogger(__name__) + +elemdatabase = ElementData() + + +Labels = list[str] + + +class UnitCell(Cell): + model_config = {"arbitrary_types_allowed": True, "populate_by_name": True} + + # Molecule lists + moleclist: list[Molecule] | None = None + + # Unit cell construction related attributes + error_get_fragments: bool | None = None + error_reconstruction: bool | None = None + + # Balancing charges related attributes + error_multiple_distrib: bool | None = None + error_empty_distrib: bool | None = None + + # Charge neutrality + is_neutral: bool | None = None + + # Frozen fields + subtype: SubType = Field(default="unitcell") + + def get_species_list(self, reference_species_list: list[Specie]): + """Get unique indices and species list.""" + self.unique_indices = [] + self.species_list = [] + + # Pre-group reference species by subtype + ref_molecules = [ + ref + for ref in reference_species_list + if ref.subtype == "molecule" and ref.is_non_complex_molecule + ] + ref_ligands = [ref for ref in reference_species_list if ref.subtype == "ligand"] + ref_metals = [ref for ref in reference_species_list if ref.subtype == "metal"] + + for mol in self.moleclist: + # Case 1: non-complex molecule + if mol.is_non_complex_molecule: + for ref in ref_molecules: + if compare_reference_indices(ref, mol): + mol.unique_index = ref.unique_index + self.unique_indices.append(mol.unique_index) + self.species_list.append(mol) + break + continue + + # Case 2: complex molecule with ligands and metals + # --- ligands --- + for lig in mol.ligands: + for ref in ref_ligands: + if compare_reference_indices(ref, lig): + lig.unique_index = ref.unique_index + self.unique_indices.append(lig.unique_index) + self.species_list.append(lig) + break + + # --- metals --- + for met in mol.metals: + met_parent_ref = met.get_parent_index("reference") + for ref in ref_metals: + if ref.get_parent_index("reference") == met_parent_ref: + met.unique_index = ref.unique_index + self.unique_indices.append(met.unique_index) + self.species_list.append(met) + break + + logger.info("Unique indices: %s", self.unique_indices) + logger.info("Species list: %s", [s.formula for s in self.species_list]) + + def map_charges_to_unitcell(self, refmoleclist: list[Molecule]): + """Logic: Propagate charges from Reference Molecules to Unit Cell Molecules.""" + self.error_assign_charge = False + + for mol in self.moleclist: + try: + if mol.is_non_complex_molecule: + logger.info( + "Mapping charges for Non-Complex Molecule: %s", mol.formula + ) + for ref in refmoleclist: + if ref.is_non_complex_molecule and ( + mol.unique_index == ref.unique_index + ): + if compare_reference_indices(ref, mol): + try: + set_charge_state(ref, mol, mode=2) + except Exception as e: + logger.error( + "Charge assignment failed for %s: %s", + mol.formula, + e, + ) + self.error_assign_charge = True + else: + logger.info("Mapping charges for Complex Molecule: %s", mol.formula) + for ref in refmoleclist: + # Complex Molecule Match by Formula + if not ref.is_non_complex_molecule and ( + mol.formula == ref.formula + ): + self._map_complex_components(mol, ref) + except Exception as e: + logger.error( + "Unexpected error in unit cell mapping for %s: %s", mol.formula, e + ) + self.error_assign_charge = True + + def _map_complex_components(self, mol, ref): + """Helper to map ligands and metals within a complex.""" + # Map Ligands + for lig in mol.ligands: + for ref_lig in ref.ligands: + if lig.formula == ref_lig.formula: + try: + if compare_reference_indices(ref_lig, lig): + set_charge_state(ref_lig, lig, mode=2) + except Exception as e: + logger.error("Ligand charge mapping failed: %s", e) + self.error_assign_charge = True + + # Map Metals + for met in mol.metals: + for ref_met in ref.metals: + if met.formula == ref_met.formula: + try: + p_idx_ref = ref_met.get_parent_index("reference") + p_idx_mol = met.get_parent_index("reference") + if p_idx_ref == p_idx_mol: + met.set_charge(ref_met.charge) + except Exception as e: + logger.error("Metal charge mapping failed: %s", e) + self.error_assign_charge = True + + def check_charge_neutrality(self): + """ + Check whether the total charge of the unit cell is neutral. + + Sets: + self.is_neutral: + - True : total charge == 0 + - False : total charge != 0 + - None : charges not fully assigned + """ + + assert self.subtype == "unitcell", ( + "check_charge_neutrality should only be called on unitcell" + ) + + if self.moleclist is None: + raise ValueError("Molecule list is None") + + total_charge = 0 + unassigned = [] + + for mol in self.moleclist: + if mol.totcharge is None: + unassigned.append(mol.formula) + else: + total_charge += mol.totcharge + + if unassigned: + logger.warning( + "Charges not assigned for %d molecule(s): %s", + len(unassigned), + unassigned, + ) + self.is_neutral = None + return + + logger.info( + "Total charge of the unit cell: %d", + total_charge, + ) + + self.is_neutral = total_charge == 0 + + def __repr__(self): + to_print = "" + to_print += "------------- Cell2mol UnitCell Object --------------\n" + to_print += Cell.__repr__(self, indirect=True) + if self.moleclist is not None: + to_print += f" # Molecules: = {len(self.moleclist)}\n" + to_print += " with Formula: \n" + for idx, m in enumerate(self.moleclist): + to_print += f" {idx}: {m.formula} \n" + to_print += "---------------------------------------------------\n" + return to_print + + @classmethod + @deprecated("Use unitcell() with the keyword arguments instead.") + def from_positional( + cls, + name: str, + labels: list[str], + pos: list[list[float]], + frac_coord: list[list[float]], + cell_vector: object, + cell_param: object, + ) -> "UnitCell": + return cls( + name=name, + labels=labels, + pos=pos, # Using pos which gets aliased to coord + frac_coord=frac_coord, + cell_vector=cell_vector, + cell_param=cell_param, + ) diff --git a/cell2mol/cli.py b/cell2mol/cli.py new file mode 100644 index 000000000..47f2595cc --- /dev/null +++ b/cell2mol/cli.py @@ -0,0 +1,145 @@ +#!/usr/bin/env python + +import os +import logging +import warnings +from cell2mol.utils import config +from cell2mol.args import parsing_arguments +from cell2mol.process_reference import interpret_reference +from cell2mol.process_unitcell import interpret_unitcell +from cell2mol.process_xyz import interpret_molecule +from cell2mol.write_results import exit_with_error_input, exit_with_error_exception +from rdkit import RDLogger + +try: + from cell2mol.utils.limits import set_memory_limit +except ImportError: + # Fallback if the file doesn't exist yet, to prevent import errors + def set_memory_limit(gb): + pass + + +RDLogger.DisableLog("rdApp.warning") +RDLogger.DisableLog("rdApp.error") +warnings.filterwarnings( + "ignore", + message="crystal system .* is not interpreted for space group", + category=UserWarning, +) +warnings.filterwarnings( + "ignore", + message="scaled_positions .* are equivalent", + category=UserWarning, +) + +logger = logging.getLogger(__name__) + + +def main(): + args = parsing_arguments() + + # --- set memory limit --- + try: + set_memory_limit(config.MAX_MEM_GB) + logger.info(f"System memory limit set to {config.MAX_MEM_GB} GB") + except Exception as e: + logger.warning(f"Could not set memory limit: {e}") + + # --- set global runtime config --- + if args.cif_bond_info: + config.USE_BOND_INFO = True + + if args.print_config: + print(config.dump()) + return + + current_dir = os.getcwd() + input_path = os.path.normpath(args.filepath) + name, extension = os.path.splitext(os.path.basename(input_path)) + + if not os.path.exists(input_path): + exit_with_error_input(f"Input file not found: {input_path}") + + if extension == ".cif": + handle_cif_file( + input_path=input_path, + system_type=args.system_type, + name=name, + current_dir=current_dir, + ) + + elif extension == ".xyz": + handle_xyz_file( + input_path=input_path, + system_type=args.system_type, + name=name, + input_charge=args.charge, + current_dir=current_dir, + ) + + else: + exit_with_error_input(f"Invalid file extension: {input_path}") + + +def handle_cif_file( + input_path, + system_type, + name, + current_dir, +): + logger.info("Processing CIF file: %s", input_path) + try: + if system_type == "reference": + logger.info("Processing reference (Wyckoff sites)") + interpret_reference( + input_path=input_path, + name=name, + current_dir=current_dir, + ) + + elif system_type == "unitcell": + logger.info("Processing unit cell") + interpret_unitcell( + input_path=input_path, + name=name, + current_dir=current_dir, + ) + + else: + exit_with_error_input( + "Invalid system type for .cif file", + {"system_type": system_type}, + ) + + except Exception as exc: + exit_with_error_exception(exc) + + +def handle_xyz_file( + input_path, + system_type, + name, + input_charge, + current_dir, +): + logger.info("Processing XYZ file: %s", input_path) + try: + if system_type == "molecule": + interpret_molecule( + input_path=input_path, + name=name, + input_charge=input_charge, + current_dir=current_dir, + ) + else: + exit_with_error_input( + "Invalid system type for .xyz file", + {"system_type": system_type}, + ) + + except Exception as exc: + exit_with_error_exception(exc) + + +if __name__ == "__main__": + main() diff --git a/cell2mol/compare.py b/cell2mol/compare.py new file mode 100644 index 000000000..4ca85d186 --- /dev/null +++ b/cell2mol/compare.py @@ -0,0 +1,126 @@ +import logging +from cell2mol.elementdata import ElementData + +elemdatabase = ElementData() +logger = logging.getLogger(__name__) + + +def compare_atoms(at1, at2, check_coordinates: bool = False): + # logger.debug("Comparing Atoms: %s and %s", at1.label, at2.label) + + # Compares Species, Coordinates, Charge and Spin + if at1.label != at2.label: + return False + if check_coordinates: + if at1.coord[0] != at2.coord[0]: + return False + if at1.coord[1] != at2.coord[1]: + return False + if at1.coord[2] != at2.coord[2]: + return False + if hasattr(at1, "charge") and hasattr(at2, "charge"): + if at1.charge != at2.charge: + return False + if hasattr(at1, "spin") and hasattr(at2, "spin"): + if at1.spin != at2.spin: + return False + return True + + +def compare_metals(at1, at2, check_coordinates: bool = False): + # logger.debug("Comparing Metals: %s and %s", at1.label, at2.label) + + if at1.subtype != "metal" or at2.subtype != "metal": + # logger.debug("Different subtypes: %s and %s", at1.subtype, at2.subtype) + return False + + if at1.label != at2.label: + # logger.debug("Different labels: %s and %s", at1.label, at2.label) + return False + + if at1.coord_sphere_formula is None: + at1.get_coord_sphere_formula() + if at2.coord_sphere_formula is None: + at2.get_coord_sphere_formula() + if at1.coord_sphere_formula != at2.coord_sphere_formula: + # logger.debug("Different coordination sphere") + # logger.debug("Coordination sphere 1: %s", at1.coord_sphere_formula) + # logger.debug("Coordination sphere 2: %s", at2.coord_sphere_formula) + return False + + if check_coordinates: + if at1.coord[0] != at2.coord[0]: + return False + if at1.coord[1] != at2.coord[1]: + return False + if at1.coord[2] != at2.coord[2]: + return False + + return True + + +def compare_species(mol1, mol2, check_coordinates: bool = False): + elems = elemdatabase.elementnr.keys() + + # logger.debug("Comparing Species: %s and %s", mol1.formula, mol2.formula) + + # a pair of species is compared on the basis of: + # 1) the total number of atoms + if mol1.natoms != mol2.natoms: + # logger.debug("FALSE, different natoms") + return False + + # 2) the total number of electrons (as sum of atomic number) + if mol1.eleccount != mol2.eleccount: + # logger.debug("FALSE, different eleccount") + return False + + # 3) the number of atoms of each type + if mol1.element_count is None: + mol1.set_element_count() + if mol2.element_count is None: + mol2.set_element_count() + for kdx, elem in enumerate(mol1.element_count): + if elem != mol2.element_count[kdx]: + # logger.debug("FALSE, different %s count", elem) + return False + # 4) the number of adjacencies between each pair of element types + if mol1.adj_types is None: + mol1.set_adj_types() + if mol2.adj_types is None: + mol2.set_adj_types() + + count = 0 + for kdx, (elem, row1) in enumerate(zip(elems, mol1.adj_types)): + for ldx, (elem2, val1) in enumerate(zip(elems, row1)): + val2 = mol2.adj_types[kdx, ldx] + if val1 != val2: + count += 1 + # logger.debug("FALSE, different adjacency count") + # logger.debug( + # "COMPARE_SPECIES. %d %d %s - %s : %d - %d", + # kdx, + # ldx, + # elem, + # elem2, + # val1, + # val2, + # ) + + if count > 0: + return False + else: + return True + + +def compare_reference_indices(ref, mol): + if (ref.natoms == mol.natoms) and (ref.formula == mol.formula): + ref_parent_indices = sorted(ref.get_parent_indices("reference")) + mol_parent_indices = sorted(mol.get_parent_indices("reference")) + if ref_parent_indices == mol_parent_indices: + issame = True + else: + issame = False + else: + issame = False + return issame diff --git a/cell2mol/connectivity.py b/cell2mol/connectivity.py index 05ed6e1ed..5ee154762 100644 --- a/cell2mol/connectivity.py +++ b/cell2mol/connectivity.py @@ -1,565 +1,637 @@ -import warnings +from typing import Tuple import numpy as np -from scipy import sparse +import warnings +import logging +import networkx as nx +from cell2mol.utils import config +from cell2mol.element_utils import ( + get_radii, + get_metal_idxs, + get_post_transition_metal_idxs, + get_alkali_alkaline_earth_metal_idxs, + labels2formula, +) from scipy.sparse import csr_matrix from scipy.sparse.csgraph import reverse_cuthill_mckee -from typing import Tuple -from cell2mol.other import inv, extract_from_list +from cell2mol.operations import inv, extract_from_list, point_along_vector from cell2mol.elementdata import ElementData -from cell2mol.read_write import writexyz -import os -import networkx as nx -import re +logger = logging.getLogger(__name__) elemdatabase = ElementData() -####################################################### -def add_atom(labels: list, coords: list, site: int, ligand: object, metalist: list, element: str="H", removed_idx: list=None, unconditional: bool=False, debug: int=0) -> Tuple[bool, list, list]: - from cell2mol.other import get_dist - # This function adds one atom of a given "element" to a given "site=atom index" of a "ligand". - # It does so at the position of the closest "metal" atom to the "site" - #:return newlab: labels of the original ligand, plus the label of the new element - #:return newcoord: same as above but for coordinates - # Original labels and coordinates are copied - isadded = False - posadded = len(labels) - newlab = labels.copy() - newcoord = coords.copy() - newlab.append(str(element)) # One H atom will be added - - if debug > 2: print("ADD_ATOM: Metalist length", len(metalist)) - if debug > 2: print("ADD_ATOM: Ligand Atoms", len(ligand.atoms)) - if debug >= 2: print("ADD_ATOM: site=", site) - if debug >= 2: print("ADD_ATOM: target ligand atom ", ligand.atoms[site].label) - # It is adding the element (H, O, or whatever) at the vector formed by the closest TM atom and the "site" - for idx, a in enumerate(ligand.atoms): - if idx == site: - apos = np.array(a.coord.copy()) - tgt = a.get_closest_metal(metalist) - if debug >= 2: print(f"ADD_ATOM: evaluating atom position={apos} and metal position={tgt.coord}") - # ligand_idx = tgt.get_parent_index("ligand") - metal_idx = tgt.get_parent_index("molecule") - dist = get_dist(apos, tgt.coord) - idealdist = a.radii + elemdatabase.CovalentRadius3[element] - # addedHcoords = apos + (tgt.coord - apos) * (idealdist / dist) # the factor idealdist/dist[tgt] controls the distance - # newcoord.append([addedHcoords[0], addedHcoords[1], addedHcoords[2]]) # adds H at the position of the closest Metal Atom - addedHcoords = point_along_vector(apos, tgt.coord, idealdist) - newcoord.append([addedHcoords[0], addedHcoords[1], addedHcoords[2]]) - - # Evaluates the new adjacency matrix. - dummy, tmpconmat, tmpconnec = get_adjmatrix(newlab, newcoord, ligand.cov_factor) - # if debug >= 2: print(f"ADD_ATOM: received {newlab=}") - # if debug >= 2: print(f"ADD_ATOM: received {tmpconmat=}") - # if debug >= 2: print(f"ADD_ATOM: received {tmpconnec=}") - if debug >= 2: print(f"ADD_ATOM: received {tmpconnec[posadded]=}") - newlab_with_metal = newlab.copy() - newcoord_with_metal = newcoord.copy() - newlab_with_metal.append(tgt.label) - newcoord_with_metal.append(tgt.coord) - #writexyz(os.getcwd(), f"target_atom_{a.label}_{apos[0]}_newcoord_with_H_new{addedHcoords[0]}.xyz", newlab_with_metal, newcoord_with_metal) - # If no undesired adjacencies have been created, the coordinates are kept - if unconditional: - isadded = True - if debug >= 1: print(f"ADD_ATOM: {element} is added at site {site} of ligand {ligand.formula} to generate a protonation state") - elif tmpconnec[posadded] <= 1: - isadded = True - if debug >= 2: print(f"ADD_ATOM: Chosen Metal index {metal_idx}. {element} is added at site {site}") - # Otherwise, coordinates are reset - elif tmpconnec[posadded] > 1 and removed_idx is not None and len(removed_idx) > 0 : - set1 = set([i for i, c in enumerate(tmpconmat[posadded]) if c != 0 ]) - set2 = set(removed_idx) - if debug >= 1: print(f"ADD_ATOM: {element} is connected with ligand atoms with indices {set1}. previously removed indices {set2}") - result = list(set1 - set2) - if debug >= 2: print(f"ADD_ATOM: {element} is connected with ligand atoms with indices {result=}. ") - if len(result) <= 1: - isadded = True - if debug >= 2: print(f"ADD_ATOM: Chosen Metal index {metal_idx}. {element} is added at site {site} after previously removing atom {removed_idx}") - else: - if debug >= 1: print(f"ADD_ATOM: Chosen Metal index {metal_idx}. {element} was added at site {site} but RESET due to connec={tmpconnec[posadded]}") - if debug > 2: writexyz(os.getcwd(), f"target_atom_{a.label}_{apos[0]}_newcoord_with_H_new{addedHcoords[0]}.xyz", newlab_with_metal, newcoord_with_metal) - isadded = False - newlab = labels.copy() - newcoord = coords.copy() +def get_scaled_radii(radii, metal_idxs, alkali_idxs, metal_factor, cov_factor): + """Scale radii based on whether atom is metal, alkali/alkaline earth metal, or non-metal""" + scaled_radii = np.zeros_like(radii, dtype=float) + alkali_alkaline_factor = 1.0 # additional factor for alkali/alkaline earth metals + for k in range(len(radii)): + if k in metal_idxs: + scaled_radii[k] = radii[k] * metal_factor + elif k in alkali_idxs: + scaled_radii[k] = radii[k] * metal_factor * alkali_alkaline_factor + else: + scaled_radii[k] = radii[k] * cov_factor + return scaled_radii + + +def is_mismatch_adjacency( + labels: list[str], + positions: np.ndarray, + atom_site_labels: list[str] | None = None, + bond_data: list[tuple[str, str, float]] | None = None, + cutoff: float | None = None, + cov_factor: float | None = None, + metal_factor: float | None = None, + metal_only: bool = False, +) -> bool | None: + """ + Checks for discrepancies between distance-based and CIF-bond-based adjacency matrices. - return isadded, newlab, newcoord -####################################################### -def point_along_vector(point1, point2, distance): + Returns: + True: Mismatch detected (Inconsistent connectivity). + False: Matrices are identical (Consistent connectivity). + None: CIF bond data is missing (Comparison not possible). """ - Calculate the coordinates of a point along the vector between two points - with a specified distance from the first point. - + # Use global config if specific parameters are not provided + cutoff = cutoff if cutoff is not None else config.CUTOFF + cov_factor = cov_factor if cov_factor is not None else config.COV_FACTOR + metal_factor = metal_factor if metal_factor is not None else config.METAL_FACTOR + + # 1. Build distance-based matrix (Geometric Baseline) + _, adj_dist, _ = get_adjmatrix( + labels, + positions, + cutoff=cutoff, + cov_factor=cov_factor, + metal_factor=metal_factor, + metal_only=metal_only, + ) + + # 2. Build CIF-based matrix (Metadata Reference) + adj_conn = None + if bond_data and atom_site_labels: + adj_conn = get_adjmatrix_from_cif_bonds( + labels, + positions, + atom_site_labels=atom_site_labels, + bond_data=bond_data, + metal_only=metal_only, + ) + + # 3. Handle the 'None' case: Comparison cannot be performed + if adj_conn is None: + return None + + # 4. Handle Case: Structural Mismatch (Different atom counts or shapes) + if adj_dist is None or adj_dist.shape != adj_conn.shape: + return True + + # 5. Handle Numerical Mismatch: True if NOT identical + return not np.allclose(adj_dist, adj_conn) + + +def build_adjacency( + labels: list[str], + positions: np.ndarray, + atom_site_labels: list[str] | None = None, + bond_data: list[tuple[str, str, float]] | None = None, + use_bond_info: bool | None = None, + cutoff: float | None = None, + cov_factor: float | None = None, + metal_factor: float | None = None, + metal_only: bool = False, + warn_on_mismatch: bool = False, + detail: bool = False, +) -> np.ndarray: + """ + Build an adjacency matrix using distance-based or connectivity-based criteria. + + Distance-based adjacency is always constructed. If CIF bond information is + provided, it is used for validation or as the canonical adjacency depending + on `canonical`. + """ + if cutoff is None: + cutoff = config.CUTOFF + if cov_factor is None: + cov_factor = config.COV_FACTOR + if metal_factor is None: + metal_factor = config.METAL_FACTOR + if use_bond_info is None: + use_bond_info = config.USE_BOND_INFO + + canonical = "bond_info" if use_bond_info else "distance" + + adj_dist = None + # --- distance-based adjacency (default) --- + if canonical == "distance" or warn_on_mismatch: + isgood, adj_dist, warning = get_adjmatrix( + labels, + positions, + cutoff=cutoff, + cov_factor=cov_factor, + metal_factor=metal_factor, + metal_only=metal_only, + ) + + # --- connectivity-based adjacency (optional) --- + adj_conn = None + if bond_data is not None: + if atom_site_labels is None: + raise ValueError("atom_site_labels must be provided with bond_data") + + adj_conn = get_adjmatrix_from_cif_bonds( + labels, + positions, + atom_site_labels=atom_site_labels, + bond_data=bond_data, + metal_only=metal_only, + ) + if warn_on_mismatch and adj_dist is not None and adj_conn is not None: + logger.debug("Sum of Formula: %s", labels2formula(labels)) + is_consistent = np.allclose(adj_dist, adj_conn) + if not is_consistent: + logger.info( + "Discrepancy detected: The distance-based and CIF-bond-based adjacency matrices are not identical." + ) + else: + logger.info( + "The distance-based and CIF-bond-based adjacency matrices are identical." + ) + + # --- choose canonical --- + if canonical == "distance": + adj = adj_dist + if not isgood: + logger.error("Clash detected in distance-based adjacency matrix") + return None + if warning: + logger.warning("Valence violation detected in distance-based adjacency") + elif canonical == "bond_info": + if adj_conn is None: + logger.error("canonical='bond_info' requires connectivity-based adjacency") + return None + adj = adj_conn + else: + logger.error(f"Unknown canonical mode: {canonical}") + return None + + # --- validate distance vs bond_info --- + if warn_on_mismatch and adj_conn is not None: + compare_adjacency_and_warn( + adj_dist=adj_dist, + adj_conn=adj_conn, + labels=labels, + pos=positions, + atom_site_labels=atom_site_labels, + warn=True, + detail=detail, + ) + + return adj + + +def bonds_from_adj(adj: np.ndarray) -> set[tuple[int, int]]: + """ + Convert adjacency matrix to bond set. + """ + bonds = set() + N = adj.shape[0] + + for i in range(N): + for j in range(i + 1, N): + if adj[i, j]: + bonds.add((i, j)) + + return bonds + + +def compare_adjacency_and_warn( + adj_dist: np.ndarray, + adj_conn: np.ndarray | None, + labels: list[str], + pos: np.ndarray, + *, + atom_site_labels: list[str] | None = None, + warn: bool = True, + detail: bool = False, + use_logger: bool = True, +) -> None: + """ + Compare distance-based (canonical) and connectivity-based adjacency matrices + and emit warnings if they differ. + """ + if adj_conn is None: + return + + bonds_dist = bonds_from_adj(adj_dist) + bonds_conn = bonds_from_adj(adj_conn) + + extra = bonds_dist - bonds_conn + missing = bonds_conn - bonds_dist + + if not extra and not missing: + return + + # --- summary --- + if warn: + msg = ( + "Adjacency mismatch detected:" + "extra_bonds=%d (distance), " + "missing_bonds=%d (bond_info). " + ) + if use_logger: + logger.warning(msg, len(extra), len(missing)) + else: + warnings.warn(msg % (len(extra), len(missing)), RuntimeWarning) + + # --- detailed info --- + if detail and use_logger: + if extra: + logger.debug("Extra bonds (distance-only):") + for line in format_bond_info(extra, labels, pos, atom_site_labels): + logger.debug(" %s", line) + + if missing: + logger.debug("Missing bonds (connectivity-only):") + for line in format_bond_info(missing, labels, pos, atom_site_labels): + logger.debug(" %s", line) + + +def format_bond_info( + bonds: set[tuple[int, int]], + labels: list[str], + pos: np.ndarray, + atom_site_labels: list[str] | None = None, + *, + cutoff: float | None = None, + metal_factor: float | None = None, + cov_factor: float | None = None, +) -> list[str]: + """ + Format bond indices with element labels, distances, and distance margins. + + Example + ------- + (4-7) [Zn-O] [Zn1-O3]: dist=2.043, thres=2.120, margin=-0.077 + """ + if cutoff is None: + cutoff = config.CUTOFF + if cov_factor is None: + cov_factor = config.COV_FACTOR + if metal_factor is None: + metal_factor = config.METAL_FACTOR + + metal_idxs = get_metal_idxs(labels) + alkali_idxs = get_alkali_alkaline_earth_metal_idxs(labels) + + radii = get_scaled_radii( + np.asarray(get_radii(labels)), + metal_idxs, + alkali_idxs, + metal_factor, + cov_factor, + ) + + formatted: list[str] = [] + for i, j in sorted(bonds): + dist = np.linalg.norm(np.asarray(pos[i]) - np.asarray(pos[j])) + thres = radii[i] + radii[j] + cutoff + margin = dist - thres + + elem_pair = f"{labels[i]}-{labels[j]}" + site_pair = ( + f"{atom_site_labels[i]}-{atom_site_labels[j]}" + if atom_site_labels is not None + else None + ) + + if site_pair: + formatted.append( + f"({i}-{j}) [{elem_pair}] [{site_pair}]: " + f"dist={dist:.3f}, thres={thres:.3f}, margin={margin:.3f}" + ) + else: + formatted.append( + f"({i}-{j}) [{elem_pair}]: " + f"dist={dist:.3f}, thres={thres:.3f}, margin={margin:.3f}" + ) + + return formatted + + +def includes_metal( + i: int, + j: int, + labels: list[str], + metal_idxs: list[int], + alkali_alkaline_earth_metal_idxs: list[int], +) -> bool: + """ + Return True if the atom pair includes at least one metal element. + """ + block_i = elemdatabase.elementblock[labels[i]] + block_j = elemdatabase.elementblock[labels[j]] + + # d- or f-block metals + if block_i in ("d", "f") or block_j in ("d", "f"): + return True + + # alkali / alkaline earth metals + if i in alkali_alkaline_earth_metal_idxs or j in alkali_alkaline_earth_metal_idxs: + return True + + # fallback: post-transition metals if no other metals present + if not metal_idxs and not alkali_alkaline_earth_metal_idxs: + if get_post_transition_metal_idxs([labels[i], labels[j]]): + return True + + return False + + +def get_adjmatrix( + labels: list[str], + pos: np.ndarray, + radii: np.ndarray | list | None = None, + cutoff: float | None = None, + cov_factor: float | None = None, + metal_factor: float | None = None, + metal_only: bool = False, + add_atom: bool = False, +): + """Generates adjacency matrix from atomic positions and covalent radii. Args: - - point1: Coordinates of the first point (numpy array or list) - - point2: Coordinates of the second point (numpy array or list) - - distance: Distance from the first point to the new point (float) - + labels (list): List of atomic labels. + pos (list): List of atomic positions. + cov_factor (float, optional): Scaling factor for covalent radii. Defaults to + 1.0. + radii (str or np.ndarray, optional): Radii to use. If "default", uses default + covalent radii. Defaults to "default". + metal_factor (float, optional): Scaling factor for metal radii. Defaults to + 1.0. + metal_only (bool, optional): If True, only considers metal-metal bonds. + Defaults to False. + add_atom (bool, optional): If True, force adding atoms regardless of valence. + Defaults to False. Returns: - - Coordinates of the new point (numpy array) + isgood (int): 1 if molecule is valid, 0 otherwise. + adjmat (list): Adjacency matrix. + warning (bool): True if valence violations were found, False otherwise. """ - # Convert input to numpy arrays - point1 = np.array(point1) - point2 = np.array(point2) - - # Calculate the vector between the two points - vector = point2 - point1 - - # Normalize the vector - normalized_vector = vector / np.linalg.norm(vector) - - # Calculate the coordinates of the new point - new_point = point1 + normalized_vector * distance - - return new_point - -####################################################### -def find_closest_metal(atom: object, metalist: list, debug: int=0): - apos = np.array(atom.coord) - dist = [] - for met in metalist: - bpos = np.array(met.coord) - dist.append(np.linalg.norm(apos - bpos)) - # returns the closest metal atom - return np.argmin(dist) - -################################ -def is_haptic_ring(labels, coord): - """ Check if the group is a ring """ - isgood, adjmat, adjnum = get_adjmatrix(labels, coord) - - # Convert adjacency matrix to a NetworkX graph - G = nx.from_numpy_array(np.array(adjmat)) + isgood = True + clash_threshold = 0.3 + if cutoff is None: + cutoff = config.CUTOFF + if cov_factor is None: + cov_factor = config.COV_FACTOR + if metal_factor is None: + metal_factor = config.METAL_FACTOR - # Check if the graph is connected - if not nx.is_connected(G): - return False # If not connected, can't form a single ring - - # Check for cycles and ensure the graph forms a simple cycle - cycle_basis = nx.cycle_basis(G) - - # Check if there's exactly one cycle that includes all nodes (simple ring) - if len(cycle_basis) == 1 and len(cycle_basis[0]) == len(G.nodes): - print("Ring group", len(labels), labels) - return True # The graph represents a ring compound + natoms = len(labels) + adjmat = np.zeros((natoms, natoms), dtype=int) + madjmat = np.zeros((natoms, natoms), dtype=int) - return False # Otherwise, not a ring compound + metal_idxs = get_metal_idxs(labels) + alkali_alkaline_earth_metal_idxs = get_alkali_alkaline_earth_metal_idxs(labels) + + # --- radii normalization --- + if radii is None: + radii = get_radii(labels) + radii = get_scaled_radii( + np.asarray(radii), + metal_idxs, + alkali_alkaline_earth_metal_idxs, + metal_factor, + cov_factor, + ) + + # --- adjacency construction --- + for i in range(natoms - 1): + a = np.asarray(pos[i]) + for j in range(i + 1, natoms): + b = np.asarray(pos[j]) + dist = np.linalg.norm(a - b) + thres = radii[i] + radii[j] + cutoff + + if dist <= clash_threshold: + isgood = False + logger.error( + "Adjacency clash: dist=%.3f < %.3f for atoms (%s:%s)-(%s:%s)", + dist, + clash_threshold, + labels[i], + pos[i], + labels[j], + pos[j], + ) + continue + + if dist > thres: + continue + + adjmat[i, j] = adjmat[j, i] = 1 + + if metal_only and includes_metal( + i, j, labels, metal_idxs, alkali_alkaline_earth_metal_idxs + ): + madjmat[i, j] = madjmat[j, i] = 1 + + if not isgood: + return False, (madjmat if metal_only else adjmat), False + + # --- valence correction --- + warning = False + if not add_atom: + adjmat, madjmat, warning = correct_valence_violation( + adjmat, madjmat, labels, pos, radii + ) + return True, (madjmat if metal_only else adjmat), warning + + +def correct_valence_violation(adjmat, madjmat, labels, pos, radii): + """Detect and correct valence violations in an adjacency matrix. + Args: + adjmat (np.ndarray): Adjacency matrix. + labels (list): List of atomic labels. + pos (list): List of atomic positions. + radii (list): List of atomic radii. + Returns: + adjmat (np.ndarray): Corrected adjacency matrix. + madjmat (np.ndarray): Corrected metal adjacency matrix. + warning (bool): True if any valence violations were found and corrected, + False otherwise. + """ + from cell2mol.charge.xyz2mol import atomic_valence + + natoms = len(labels) + warning = False + + metal_idxs = set(get_metal_idxs(labels)) + post_metal_idxs = set(get_post_transition_metal_idxs(labels)) + alkali_idxs = set(get_alkali_alkaline_earth_metal_idxs(labels)) + metal_indices = metal_idxs | post_metal_idxs | alkali_idxs + + for i in range(natoms): + indices = np.where(adjmat[i])[0] + n_connec_metals = len(set(indices) & metal_indices) + if n_connec_metals == len(indices): + continue + + valence = len(indices) + atomic_num = elemdatabase.elementnr[labels[i]] + max_valence = max(atomic_valence[atomic_num], default=0) + + if valence - n_connec_metals <= max_valence: + continue + + logger.warning( + "Valence violation: %s %s(index:%d), valence=%d > max_valence=%d", + labels[i], + pos[i], + i, + valence, + max_valence, + ) + + logger.debug( + "connections: labels=%s, indices=%s, n_connec_metals=%d", + [labels[j] for j in indices], + indices.tolist(), + n_connec_metals, + ) + warning = True + + if labels[i] in {"F", "Cl", "Br", "I", "B"}: + logger.info("Skipping correction for element %s", labels[i]) + continue + + connections = [] + a = np.asarray(pos[i]) + for j in indices: + b = np.asarray(pos[j]) + dist = np.linalg.norm(a - b) + margin = dist - (radii[i] + radii[j]) + connections.append((j, margin)) + + logger.debug( + "Bond %d-%d (%s:%s)-(%s:%s): dist=%.3f, margin=%.3f", + i, + j, + labels[i], + pos[i], + labels[j], + pos[j], + dist, + margin, + ) + + connections.sort(key=lambda x: x[1], reverse=True) + to_remove = valence - max_valence - n_connec_metals + + for j, margin in connections[:to_remove]: + if margin > 0.2: + adjmat[i, j] = adjmat[j, i] = 0 + madjmat[i, j] = madjmat[j, i] = 0 + logger.info( + "Removed bond %d-%d (%s:%s)-(%s:%s), dist=%.3f, margin=%.3f", + i, + j, + labels[i], + pos[i], + labels[j], + pos[j], + np.linalg.norm(np.asarray(pos[i]) - np.asarray(pos[j])), + margin, + ) + + return adjmat, madjmat, warning + + +def get_adjmatrix_from_cif_bonds( + labels: list[str], + pos: np.ndarray, + atom_site_labels: list[str], + bond_data: list[tuple[str, str, float]], + metal_only: bool = False, + tol: float = 1e-3, +): + """ + Build a connectivity-based adjacency matrix from CIF bond information. + + Bond distances from the CIF are validated against Cartesian coordinates + within a numerical tolerance. If `metal_only` is True, only metal-involving + bonds are included. + + Returns: + adjmat (np.ndarray): Adjacency matrix. + """ + indices = {atom: i for i, atom in enumerate(atom_site_labels)} + natoms = len(labels) + + adjmat = np.zeros((natoms, natoms), dtype=int) + + metal_idxs = set(get_metal_idxs(labels)) + alkali_alkaline_earth_metal_idxs = set(get_alkali_alkaline_earth_metal_idxs(labels)) + + for atom1, atom2, bond_dist in bond_data: + if atom1 not in indices or atom2 not in indices: + continue + + i, j = indices[atom1], indices[atom2] + + a = np.asarray(pos[i]) + b = np.asarray(pos[j]) + dist = np.linalg.norm(a - b) + + if abs(dist - bond_dist) > tol: + continue + + if metal_only and not includes_metal( + i, j, labels, metal_idxs, alkali_alkaline_earth_metal_idxs + ): + continue + + adjmat[i, j] = adjmat[j, i] = 1 + + return adjmat -################################ -def labels2formula(labels: list): - elems = elemdatabase.elementnr.keys() - formula=[] - for z in elems: - nz = list(labels).count(z) - if nz > 1: formula.append(f"{z}{nz}-") - if nz == 1: formula.append(f"{z}-") - formula = ''.join(formula)[:-1] - return formula - -################################ -def labels2ratio(labels): - elems = elemdatabase.elementnr.keys() - ratio=[] - for z in elems: - nz = list(labels).count(z) - if nz > 0: ratio.append(nz) - return ratio - -################################ -def labels2electrons(labels): - if type(labels) == list: - eleccount = 0 - for l in labels: - eleccount += elemdatabase.elementnr[l] - elif type(labels) == str: - eleccount = elemdatabase.elementnr[labels] - return eleccount - -################################ -def get_metal_idxs(labels: list, debug: int=0): - from cell2mol.elementdata import ElementData - elemdatabase = ElementData() - metal_indices = [] - for idx, l in enumerate(labels): - if (elemdatabase.elementblock[l] == 'd' or elemdatabase.elementblock[l] == 'f'): metal_indices.append(idx) - return metal_indices - -################################ -def get_alkali_alkaline_earth_metal_idxs(labels: list, debug: int=0): - """ alkali metals (Group 1) and alkaline earth metals (Group 2) """ - non_transition_metal_indices = [] - for idx, l in enumerate(labels): - if elemdatabase.elementgroup[l]==1 and l != "H" and l != "D": # Alkali Metals - non_transition_metal_indices.append(idx) - elif elemdatabase.elementgroup[l]==2 : # Alkaline Earth Metals - non_transition_metal_indices.append(idx) - return non_transition_metal_indices -################################# -def get_non_transition_metal_idxs(labels: list, debug: int=0): - """ alkali metals (Group 1) and alkaline earth metals (Group 2) """ - non_transition_metal_indices = [] - for idx, l in enumerate(labels): - # if elemdatabase.elementgroup[l]==1 and l != "H" and l != "D": # Alkali Metals - # non_transition_metal_indices.append(idx) - # elif elemdatabase.elementgroup[l]==2 : # Alkaline Earth Metals - # non_transition_metal_indices.append(idx) - if l in ["Al", "Ga", "Ge", "In", "Sn", "Tl", "Pb", "Bi", "Po", "At"]: # Post-Transition Metals - non_transition_metal_indices.append(idx) - elif l in ["B", "Si", "Ge", "As", "Sb", "Te"] : # Metalloids - non_transition_metal_indices.append(idx) - return non_transition_metal_indices - - -################################ -def get_metal_species(labels: list): - from cell2mol.elementdata import ElementData - elemdatabase = ElementData() - metal_species = [] - elems = list(set(labels)) - for idx, l in enumerate(elems): - if l[-1].isdigit(): label = l[:-1] - else: label = l - if (elemdatabase.elementblock[label] == 'd' or elemdatabase.elementblock[label] == 'f') and l not in metal_species: metal_species.append(l) - return metal_species - -################################ -def get_element_count(labels: list, heavy_only: bool=False) -> np.ndarray: - elems = list(elemdatabase.elementnr.keys()) - count = np.zeros((len(elems)),dtype=int) - for l in labels: - for jdx, elem in enumerate(elems): - if l == elem: count[jdx] += 1 - if (l == 'H' or l == 'D') and heavy_only: count = 0 - return count - -################################ def get_adjacency_types(label: list, conmat: np.ndarray) -> np.ndarray: elems = elemdatabase.elementnr.keys() natoms = len(label) - bondtypes = np.zeros((len(elems), len(elems)),dtype=int) + bondtypes = np.zeros((len(elems), len(elems)), dtype=int) found = np.zeros((natoms, natoms)) for i in range(0, natoms): for j in range(i, natoms): if i != j: if (conmat[i, j] == 1) and (found[i, j] == 0): - for k, elem1 in enumerate(elems): + for p, elem1 in enumerate(elems): if label[i] == elem1: - for l, elem2 in enumerate(elems): + for q, elem2 in enumerate(elems): if label[j] == elem2: - bondtypes[k, l] += 1 + bondtypes[p, q] += 1 if elem1 != elem2: - bondtypes[l, k] += 1 + bondtypes[q, p] += 1 found[i, j] = 1 found[j, i] = 1 break break return bondtypes -################################ -def get_radii(labels: list) -> np.ndarray: - radii = [] - for l in labels: - if l[-1].isdigit(): label = l[:-1] - else: label = l - radii.append(elemdatabase.CovalentRadius3[label]) - # if elemdatabase.elementgroup[label] == 1 and label != "H": - # radii.append(elemdatabase.CovalentRadius2[label]) - # elif elemdatabase.elementgroup[label] == 2: - # radii.append(elemdatabase.CovalentRadius2[label]) - # else: - # radii.append(elemdatabase.CovalentRadius3[label]) - return np.array(radii) - -#################################### -def get_adjmatrix(labels: list, pos: list, cov_factor: float=1.3, radii="default", metal_only: bool=False) -> Tuple[int, list, list]: - - isgood = True - clash_threshold = 0.3 - natoms = len(labels) - adjmat = np.zeros((natoms, natoms)) - adjnum = np.zeros((natoms)) - madjmat = np.zeros((natoms, natoms)) - madjnum = np.zeros((natoms)) - - add_factor = 0.45 - #add_factor = 0.3 - # Sometimes argument radii np.ndarry, or list - with warnings.catch_warnings(): - warnings.simplefilter(action="ignore", category=FutureWarning) - if type(radii) == str: - if radii == "default": - radii = get_radii(labels) - - # Creates Adjacency Matrix - for i in range(natoms - 1): - for j in range(i+1, natoms): - a = np.array(pos[i]) - b = np.array(pos[j]) - dist = np.linalg.norm(a - b) - thres = (radii[i] + radii[j]) + add_factor - #thres = min((radii[i] + radii[j]) * cov_factor, (radii[i] + radii[j]) + add_factor) - # if thres - (radii[i] + radii[j]) > 0.8: - # thres = (radii[i] + radii[j]) + add_factor - if dist <= clash_threshold: - isgood = False # invalid molecule - print("Adjacency Matrix: Distance", round(dist, 3), "smaller than clash for atoms", i, j, labels[i], labels[j], a, b, cov_factor) - elif dist <= thres: - # if not metal_only: - adjmat[i, j] = 1 - adjmat[j, i] = 1 - # if len(get_alkali_alkaline_earth_metal_idxs([labels[i], labels[j]])) > 0: - # adjmat[i, j] = 0 - # adjmat[j, i] = 0 - # print("Adjacency Matrix: Set Zeros for Alkali or Alkaline Earth Metal", labels[i], labels[j], f"{i=}", f"{j=}", f"{adjmat[i, j]=}") - if metal_only: - if (elemdatabase.elementblock[labels[i]] == "d" - or elemdatabase.elementblock[labels[i]] == "f" - or elemdatabase.elementblock[labels[j]] == "d" - or elemdatabase.elementblock[labels[j]] == "f"): - madjmat[i, j] = 1 - madjmat[j, i] = 1 - # elif len(get_non_transition_metal_idxs([labels[i], labels[j]])) > 0: - # madjmat[i, j] = 1 - # madjmat[j, i] = 1 - elif len(get_alkali_alkaline_earth_metal_idxs([labels[i], labels[j]])) > 0: - madjmat[i, j] = 1 - madjmat[j, i] = 1 - - # Corrects valence violations - isgood_valence, adjmat, madjmat = correct_valence_violation(adjmat, madjmat, labels, pos, radii) - isgood = isgood and isgood_valence - for i in range(0, natoms): - adjnum[i] = np.sum(adjmat[i, :]) - madjnum[i] = np.sum(madjmat[i, :]) - - adjmat = adjmat.astype(int) - adjnum = adjnum.astype(int) - madjmat = madjmat.astype(int) - madjnum = madjnum.astype(int) - - if not metal_only: - return isgood, adjmat, adjnum - else: - return isgood, madjmat, madjnum - -#################################### -def correct_valence_violation(adjmat, madjmat, labels: list, pos: list, radii: list): - - from cell2mol.xyz2mol import atomic_valence - natoms = len(labels) - isgood = True - #Checks if the valence of the atoms is correct - metal_idxs = get_metal_idxs(labels) - non_transition_metal_idxs = get_non_transition_metal_idxs(labels) - alkali_alkaline_earth_metal_idxs = get_alkali_alkaline_earth_metal_idxs(labels) - allowed = set(metal_idxs) | set(non_transition_metal_idxs) | set(alkali_alkaline_earth_metal_idxs) - for i in range(0, natoms): - indices = np.where(adjmat[i, :] != 0)[0] - a = np.array(pos[i]) - if set(indices).issubset(allowed): - pass - else: - valence = np.sum(adjmat[i, :]) - atomicNum = elemdatabase.elementnr[labels[i]] - if atomic_valence[atomicNum] == []: - max_valence = 0 - else: - max_valence = max(atomic_valence[atomicNum]) - - if valence > max_valence: - print("Adjacency Matrix: Atom", i, labels[i], "has", valence, "valence bigger than allowed max valence", max_valence) - if i in non_transition_metal_idxs: - for j in indices: - if j in metal_idxs or j in alkali_alkaline_earth_metal_idxs: - b = np.array(pos[j]) - dist = np.linalg.norm(a - b) - margin = dist - (radii[i] + radii[j]) - #connections.append((j, margin)) - adjmat[i, j] = 0 - adjmat[j, i] = 0 - madjmat[i, j] = 0 - madjmat[j, i] = 0 - print(f"Adjacency Matrix: Removed bond {i} ({labels[i]}) - {j} ({labels[j]}) (margin = {round(margin, 3)})") - newindices = np.where(adjmat[i, :] != 0)[0] - new_valence = np.sum(adjmat[i, :]) - if new_valence > max_valence: - print("Adjacency Matrix: Atom", i, labels[i], "still has", new_valence, "valence bigger than allowed max valence", max_valence) - print("Adjacency Matrix: Atom", i, labels[i], "is a non-transition metal with valence bigger than allowed max valence", max_valence, "and is connected to", newindices, [labels[j] for j in newindices]) - isgood = False - else: - print("Adjacency Matrix: Atom", i, labels[i], "is a non-transition metal with valence bigger than allowed max valence", max_valence, \ - "and is now connected to", newindices, new_valence, [labels[j] for j in newindices], "after removing bonds to metals") - elif i in alkali_alkaline_earth_metal_idxs: - for j in indices: - b = np.array(pos[j]) - dist = np.linalg.norm(a - b) - margin = dist - (radii[i] + radii[j]) - print("Adjacency Matrix: Atom", i, labels[i], "is connected to", j, labels[j], "distance", round(dist, 3), "bond margin", round(margin, 3)) - else: - connections = [] - for j in indices: - b = np.array(pos[j]) - dist = np.linalg.norm(a - b) - margin = dist - (radii[i] + radii[j]) - connections.append((j, margin)) - print("Adjacency Matrix: Atom", i, labels[i], "is connected to", j, labels[j], "distance", round(dist, 3), "bond margin", round(margin, 3)) - sorted_connections = sorted(connections, key=lambda x: x[1], reverse=True) - num_to_remove = len(connections) - max_valence - for idx in range(num_to_remove): - j, rem = sorted_connections[idx] - adjmat[i, j] = 0 - adjmat[j, i] = 0 - madjmat[i, j] = 0 - madjmat[j, i] = 0 - print(f"Adjacency Matrix: Removed bond {i} ({labels[i]}) - {j} ({labels[j]}) (margin = {round(rem, 3)})") - - return isgood, adjmat, madjmat - -######################################## -def get_adjmatrix_from_cif_bonds (labels: list, pos: list, mol_atom_site_labels: list, bond_data: list, metal_only: bool = False) -> Tuple[int, list, list]: - isgood = True - indices = {atom: idx for idx, atom in enumerate(mol_atom_site_labels)} - - natoms = len(labels) - adjmat = np.zeros((natoms, natoms)) - adjnum = np.zeros((natoms)) - - for atom1, atom2, bond_distance in bond_data: - if atom1 in mol_atom_site_labels and atom2 in mol_atom_site_labels: - i = indices[atom1] - j = indices[atom2] - a = np.array(pos[i]) - b = np.array(pos[j]) - dist = np.linalg.norm(a - b) - if not metal_only: - # Allow a small tolerance for floating point comparison - if round(abs(dist - bond_distance),3) <= 1e-3: - adjmat[i, j] = 1 - adjmat[j, i] = 1 - # if len(get_alkali_alkaline_earth_metal_idxs([labels[i], labels[j]])) > 0: - # adjmat[i, j] = 0 - # adjmat[j, i] = 0 - # print("Adjacency Matrix: Set Zeros for Alkali or Alkaline Earth Metal", labels[i], labels[j], f"{i=}", f"{j=}") - # else: - # print(f"Adjacency Matrix: Distance {round(dist, 3)} {dist=} is different with the bond distance {round(bond_distance, 3)} {bond_distance=} for atoms {i=} {j=} {labels[i]} {labels[j]} {atom1=} {atom2=}") - if metal_only: - if round(abs(dist - bond_distance),3) <= 1e-3: - if (elemdatabase.elementblock[labels[i]] == "d" - or elemdatabase.elementblock[labels[i]] == "f" - or elemdatabase.elementblock[labels[j]] == "d" - or elemdatabase.elementblock[labels[j]] == "f"): - adjmat[i, j] = 1 - adjmat[j, i] = 1 - elif len(get_alkali_alkaline_earth_metal_idxs([labels[i], labels[j]])) > 0: - adjmat[i, j] = 1 - adjmat[j, i] = 1 - # if len(get_alkali_alkaline_earth_metal_idxs([labels[i], labels[j]])) > 0: - # adjmat[i, j] = 0 - # adjmat[j, i] = 0 - # print("Adjacency Matrix: Set Zeros for Alkali or Alkaline Earth Metal", labels[i], labels[j], f"{i=}", f"{j=}") - # else: - # print(f"Adjacency Matrix: Distance {round(dist, 3)} {dist=} is different with the bond distance {round(bond_distance, 3)} {bond_distance=} for atoms {i=} {j=} {labels[i]} {labels[j]} {atom1=} {atom2=}") - - for i in range(0, natoms): - adjnum[i] = np.sum(adjmat[i, :]) - - adjmat = adjmat.astype(int) - adjnum = adjnum.astype(int) - - return isgood, adjmat, adjnum - - -##################################### -# def get_adjmatrix( -# labels: list, -# pos: list, -# mol_atom_site_labels: list = None, -# bond_data: list = None, -# cov_factor: float = 1.3, -# radii="default", -# metal_only: bool = False -# ) -> Tuple[int, list, list]: -# """ -# Build an adjacency matrix using interatomic distances first, -# then correct/update it based on provided bond_data if available. -# """ -# isgood = True -# clash_threshold = 0.3 -# natoms = len(labels) -# adjmat = np.zeros((natoms, natoms)) -# adjnum = np.zeros((natoms)) - -# # Load radii if needed -# if isinstance(radii, str) and radii == "default": -# with warnings.catch_warnings(): -# warnings.simplefilter(action="ignore", category=FutureWarning) -# radii = get_radii(labels) - -# # Step 1: Build initial adjmat based on interatomic distances -# add_factor = 0.3 -# for i in range(natoms - 1): -# for j in range(i + 1, natoms): -# a = np.array(pos[i]) -# b = np.array(pos[j]) -# dist = np.linalg.norm(a - b) - -# thres = (radii[i] + radii[j]) * cov_factor -# if thres - (radii[i] + radii[j]) > 0.8: -# thres = (radii[i] + radii[j]) + add_factor - -# if dist <= clash_threshold: -# isgood = False -# print(f"Adjacency Matrix: Distance {round(dist, 3)} smaller than clash for atoms {i} {j} {labels[i]} {labels[j]}") -# elif dist <= thres: -# if not metal_only: -# adjmat[i, j] = 1 -# adjmat[j, i] = 1 -# else: -# if (elemdatabase.elementblock[labels[i]] in ["d", "f"] -# or elemdatabase.elementblock[labels[j]] in ["d", "f"] -# or len(get_non_transition_metal_idxs([labels[i], labels[j]])) > 0): -# adjmat[i, j] = 1 -# adjmat[j, i] = 1 - -# # Step 2: Fix/update adjmat based on bond_data -# if bond_data is not None and mol_atom_site_labels is not None: -# indices = {atom: idx for idx, atom in enumerate(mol_atom_site_labels)} -# for atom1, atom2, _ in bond_data: -# if atom1 in indices and atom2 in indices: -# i = indices[atom1] -# j = indices[atom2] -# if not metal_only: -# adjmat[i, j] = 1 -# adjmat[j, i] = 1 -# else: -# if (elemdatabase.elementblock[labels[i]] in ["d", "f"] -# or elemdatabase.elementblock[labels[j]] in ["d", "f"] -# or len(get_non_transition_metal_idxs([labels[i], labels[j]])) > 0): -# adjmat[i, j] = 1 -# adjmat[j, i] = 1 - -# # Final step: calculate adjnum -# for i in range(natoms): -# adjnum[i] = np.sum(adjmat[i, :]) - -# adjmat = adjmat.astype(int) -# adjnum = adjnum.astype(int) - -# return isgood, adjmat, adjnum -#################################### -def get_blocks(matrix: np.ndarray) -> Tuple[list, list]: +def get_blocks(matrix: np.ndarray): + """Function that detects blocks in a block diagonal matrix.""" # retrieves the blocks from a diagonal block matrix startlist = [] # List including the starting atom for all blocks - endlist = [] # List including the final atom for all blocks + endlist = [] # List including the final atom for all blocks start = 1 pos = start posold = 0 blockcount = 0 j = 1 while j < len(matrix): - if matrix[pos - 1, j] != 0.0: pos = j + 1 + if matrix[pos - 1, j] != 0.0: + pos = j + 1 if j == len(matrix) - 1: blockcount = blockcount + 1 startlist.append(posold) @@ -570,28 +642,56 @@ def get_blocks(matrix: np.ndarray) -> Tuple[list, list]: continue j += 1 - if (blockcount == 0) and (len(matrix) == 1): # if a 1x1 matrix is provided, it then finds 1 block + # if a 1x1 matrix is provided, it then finds 1 block + if (blockcount == 0) and (len(matrix) == 1): startlist.append(0) endlist.append(0) return startlist, endlist -######################### -def count_species(labels: list, pos: list, radii: list=None, indices: list=None, atom_site_labels : list=None, geom_bond_cif: list=None, cov_factor: float=1.3, debug: int=0) -> Tuple[bool, list]: - # Gets the covalent radii - if radii is None: radii = get_radii(labels) - if indices is None: indices = [*range(0,len(labels),1)] - - # Computes the adjacency matrix of what is received - # isgood indicates whether the adjacency matrix could be built normally, or errors were detected. - if atom_site_labels is not None and geom_bond_cif is not None: - isgood, adjmat, adjnum = get_adjmatrix_from_cif_bonds (labels, pos, atom_site_labels, geom_bond_cif) - else: - isgood, adjmat, adjnum = get_adjmatrix(labels, pos, cov_factor, radii) - - if not isgood: return int(0) - degree = np.diag(adjnum) # creates a matrix with adjnum as diagonal values. Needed for the laplacian - lap = adjmat - degree # computes laplacian +def split_species( + labels: list[str], + positions: np.ndarray, + *, + radii: list[float] | None = None, + indices: list[int] | None = None, + atom_site_labels: list[str] | None = None, + bond_data: list[tuple[str, str, float]] | None = None, + use_bond_info: bool | None = None, + cov_factor: float | None = None, + metal_factor: float | None = None, + warn_on_mismatch: bool = False, + count_species_only: bool = False, + apply_graph: bool = False, +): + """Function that identifies connected groups of atoms from their atomic coordinates and labels.""" + + if radii is None: + radii = get_radii(labels) + if indices is None: + indices = [*range(0, len(labels), 1)] + if cov_factor is None: + cov_factor = config.COV_FACTOR + if use_bond_info is None: + use_bond_info = config.USE_BOND_INFO + + adjmat = build_adjacency( + labels=labels, + positions=positions, + atom_site_labels=atom_site_labels, + bond_data=bond_data, + use_bond_info=use_bond_info, + cov_factor=cov_factor, + metal_factor=metal_factor, + warn_on_mismatch=warn_on_mismatch, + ) + if adjmat is None: + logger.warning("Adjacency matrix is None. Returning empty blocklist.") + return [] + adjnum = adjmat.sum(axis=1) + + degree = np.diag(adjnum) + lap = adjmat - degree # creates block matrix graph = csr_matrix(lap) @@ -604,44 +704,10 @@ def count_species(labels: list, pos: list, radii: list=None, indices: list=None, startlist, endlist = get_blocks(dense) nblocks = len(startlist) - return nblocks - -#################################### -def split_species(labels: list, pos: list, radii: list=None, indices: list=None, atom_site_labels : list=None, geom_bond_cif: list=None, cov_factor: float=1.3, debug: int=0) -> Tuple[bool, list]: - ## Function that identifies connected groups of atoms from their atomic coordinates and labels. - - # if debug >= 2: - # print(f"SPLIT_SPECIES: {labels=}", len(labels)) - # print(f"SPLIT_SPECIES: {indices=}") - - # Gets the covalent radii - if radii is None: radii = get_radii(labels) - if indices is None: indices = [*range(0,len(labels),1)] - - # Computes the adjacency matrix of what is received - # isgood indicates whether the adjacency matrix could be built normally, or errors were detected. Typically, those errors are steric clashes - if atom_site_labels is not None and geom_bond_cif is not None: - isgood, adjmat, adjnum = get_adjmatrix_from_cif_bonds (labels, pos, atom_site_labels, geom_bond_cif) - else: - isgood, adjmat, adjnum = get_adjmatrix(labels, pos, cov_factor, radii) - if not isgood: return None - degree = np.diag(adjnum) # creates a matrix with adjnum as diagonal values. Needed for the laplacian - lap = adjmat - degree # computes laplacian + if count_species_only: + return nblocks - # creates block matrix - graph = csr_matrix(lap) - # print(f"SPILT_SPECIES: Laplacian {lap=}") - # print(f"SPILT_SPECIES: {graph=}") - perm = reverse_cuthill_mckee(graph) - gp1 = graph[perm, :] - gp2 = gp1[:, perm] - dense = gp2.toarray() - - # detects blocks in the block diagonal matrix called "dense" - startlist, endlist = get_blocks(dense) - - nblocks = len(startlist) # keeps track of the atom movement within the matrix. Needed later atomlist = np.zeros((len(dense))) for b in range(0, nblocks): @@ -654,244 +720,739 @@ def split_species(labels: list, pos: list, radii: list=None, indices: list=None, # assigns atoms to molecules blocklist = [] for b in range(0, nblocks): - atlist = [] # atom indices in the original ordering + atlist = [] # atom indices in the original ordering for i in range(0, len(atomlistperm)): if atomlistperm[i] == b + 1: atlist.append(indices[i]) blocklist.append(atlist) + if use_bond_info: + return blocklist + + if apply_graph: + new_blocklist = apply_graph_to_blocklist( + blocklist, + labels, + positions, + conn_atom_site_labels=atom_site_labels, + bond_data=bond_data, + use_bond_info=use_bond_info, + cov_factor=cov_factor, + metal_factor=metal_factor, + ) + log_blocklist_diff(blocklist, new_blocklist) + return new_blocklist return blocklist -##################### -def merge_atoms(atoms): - labels = [] - coord = [] - for a in atoms: - labels.append(a.label) - coord.append(a.coord) - return labels, coord - -################################# -def compare_atoms(at1, at2, check_coordinates: bool=False, debug: int=0): - if debug > 0: - print("Comparing Atoms") - print(at1) - print(at2) - # Compares Species, Coordinates, Charge and Spin - if (at1.label != at2.label): return False - if check_coordinates: - if (at1.coord[0] != at2.coord[0]): return False - if (at1.coord[1] != at2.coord[1]): return False - if (at1.coord[2] != at2.coord[2]): return False - if hasattr(at1,"charge") and hasattr(at2,"charge"): - if (at1.charge != at2.charge): return False - if hasattr(at1,"spin") and hasattr(at2,"spin"): - if (at1.spin != at2.spin): return False - return True - -################################# -def compare_metals (at1, at2, check_coordinates: bool=False, debug: int=0): - if debug > 0: - print("COMPARE_METALS. Comparing:") - print(at1.label) - print(at2.label) - - if at1.subtype != "metal" or at2.subtype != "metal": - if debug > 0: print("COMPARE_METALS. Different subtype") - if debug > 0: print(at1.subtype) - if debug > 0: print(at1.subtype) - return False - if (at1.label != at2.label): - if debug > 0: print("COMPARE_METALS. Different label") - return False +def apply_graph_to_blocklist( + blocklist, + conn_labels, + conn_coord, + *, + conn_atom_site_labels, + bond_data, + use_bond_info: bool | None = None, + cov_factor: float | None = None, + metal_factor: float | None = None, +): + """Split a list of atoms into blocks of connected atoms.""" + + new_blocklist = [] + # logger.debug("Applying graph analysis to blocklist: %s", blocklist) + for b in blocklist: + # logger.debug("block=%s", b) + + gr_labels = extract_from_list(b, conn_labels, dimension=1) + gr_coord = extract_from_list(b, conn_coord, dimension=1) + if conn_atom_site_labels is not None: + gr_atom_site_labels = extract_from_list( + b, conn_atom_site_labels, dimension=1 + ) + else: + gr_atom_site_labels = None + + adjmat = build_adjacency( + labels=gr_labels, + positions=gr_coord, + atom_site_labels=gr_atom_site_labels, + bond_data=bond_data, + use_bond_info=use_bond_info, + cov_factor=cov_factor, + metal_factor=metal_factor, + warn_on_mismatch=False, + detail=False, + ) + + G = nx.from_numpy_array(np.array(adjmat)) + + if not nx.is_connected(G): + new_blocklist.append(b) + continue - if not hasattr(at1,"coord_sphere_formula"): at1.get_coord_sphere_formula() - if not hasattr(at2,"coord_sphere_formula"): at2.get_coord_sphere_formula() - if (at1.coord_sphere_formula != at2.coord_sphere_formula): - if debug > 0: print("COMPARE_METALS. Different coordination sphere") - if debug > 0: print(at1.coord_sphere_formula) - if debug > 0: print(at2.coord_sphere_formula) - return False - - if check_coordinates: - if (at1.coord[0] != at2.coord[0]): return False - if (at1.coord[1] != at2.coord[1]): return False - if (at1.coord[2] != at2.coord[2]): return False - - return True - -################################# -def compare_species(mol1, mol2, check_coordinates: bool=False, debug: int=0): - - elems = elemdatabase.elementnr.keys() + cycle_basis = nx.cycle_basis(G) + + if len(cycle_basis) != 1: + new_blocklist.append(b) + continue - if debug > 0: - print("COMPARE_SPECIES. Comparing:") - print(mol1.formula) - print(mol2.formula) + cycle = cycle_basis[0] + # logger.debug("Found single cycle in block %s: %s", b, cycle) - - # a pair of species is compared on the basis of: - # 1) the total number of atoms - if (mol1.natoms != mol2.natoms): - if debug > 0: print("COMPARE_SPECIES. FALSE, different natoms:") - return False + # Full cycle covers all atoms + if len(cycle) == len(G.nodes): + new_blocklist.append(b) + continue + + # Partial cycle: split cycle and remaining components + cycle_block = sorted([b[idx] for idx in cycle]) + new_blocklist.append(cycle_block) + + # logger.debug("Cycle block indices=%s", cycle_block) + + remaining = [n for n in G.nodes if n not in cycle] + # logger.debug("Remaining nodes in block=%s", remaining) + + rem_labels = extract_from_list(remaining, conn_labels, dimension=1) + rem_coord = extract_from_list(remaining, conn_coord, dimension=1) + + if conn_atom_site_labels is not None: + rem_atom_site_labels = extract_from_list( + remaining, conn_atom_site_labels, dimension=1 + ) + else: + rem_atom_site_labels = None + + adjmat_rem = build_adjacency( + labels=rem_labels, + positions=rem_coord, + atom_site_labels=rem_atom_site_labels, + bond_data=bond_data, + use_bond_info=use_bond_info, + cov_factor=cov_factor, + metal_factor=metal_factor, + warn_on_mismatch=False, + detail=False, + ) + + G_rem = nx.from_numpy_array(np.array(adjmat_rem)) + + for comp in nx.connected_components(G_rem): + remaining_block = [remaining[idx] for idx in comp] + new_blocklist.append(remaining_block) + # logger.debug( + # "Remaining connected block=%s", + # remaining_block, + # ) + + # logger.debug("Final new_blocklist=%s", new_blocklist) + + return new_blocklist + + +def log_blocklist_diff(blocklist, new_blocklist): + old = {tuple(sorted(b)) for b in blocklist} + new = {tuple(sorted(b)) for b in new_blocklist} + + if old == new: + # logger.debug("Blocklist unchanged.") + return + + logger.debug("Blocklist differences detected.") + + removed = old - new + added = new - old + + if removed: + logger.debug("Removed / replaced blocks:") + for b in removed: + logger.debug(" %s", list(b)) + + if added: + logger.debug("Added / new blocks:") + for b in added: + logger.debug(" %s", list(b)) + + +def identify_haptic_mode(atoms: list, use_bond_info: bool | None = None): + """ + Determine haptic coordination mode(s) for a given atoms list. + Args: + atoms (list): List of Atom objects + use_bond_info (bool, optional): Whether to use bond information from CIF + Returns: + tuple: (is_haptic (bool), haptic_type (str), topology analysis (dict)) + """ + labels = [atom.label for atom in atoms] + group_formula = labels2formula(labels) + is_haptic = False # old self.hapticity + haptic_type = None # old self.hapttype + + totnum = len(labels) + + counts = { + "C": labels.count("C"), + "As": labels.count("As"), + "P": labels.count("P"), + "O": labels.count("O"), + } + + if use_bond_info is None: + use_bond_info = config.USE_BOND_INFO + + # (numC, numAs, numP, numO, total_atoms) → haptic modes + HAPTIC_RULES = { + # eta2 + (2, 0, 0, 0, 2): "eta2(C2)", + # eta3 + (3, 0, 0, 0, 3): "eta3(C3)", + # eta4 + (4, 0, 0, 0, 4): "eta4(C4)", + # eta5 + (5, 0, 0, 0, 5): "eta5(C5)", + (0, 5, 0, 0, 5): "eta5(As5)", + (0, 0, 5, 0, 5): "eta5(P5)", + # eta6+ + (6, 0, 0, 0, 6): "eta6(C6)", + (7, 0, 0, 0, 7): "eta7(C7)", + (8, 0, 0, 0, 8): "eta8(C8)", + } + + key = ( + counts["C"], + counts["As"], + counts["P"], + counts["O"], + totnum, + ) + + # Fallback: generic single-ring hapticity + results = analyze_topology(atoms, use_bond_info=use_bond_info) + if key in HAPTIC_RULES: + haptic_type = HAPTIC_RULES[key] + is_haptic = True + if results["is_single_simple_ring"]: + if group_formula == "C5": + haptic_type = "eta5(Cp)" # cyclopentadienyl anion + elif group_formula == "C6": + haptic_type = "eta6(benzene)" # benzene + elif group_formula == "C7": + haptic_type = "eta7(CHT)" # cycloheptatrienyl + elif group_formula == "C8": + haptic_type = "eta8(COT)" # cyclooctatetraenyl dianion + elif results["n_rings"] == 2 and results["is_fused_5_5"]: + if group_formula == "C8": + haptic_type = "eta5,eta5(pentalene)" # pentalene + elif results["n_rings"] == 2 and results["is_fused_5_6"]: + if group_formula == "C9": + haptic_type = "eta5,eta6(indene)" # indene + elif results["n_rings"] == 2 and results["is_fused_5_7"]: + if group_formula == "C10": + haptic_type = "eta5,eta7(azulene)" # azulene + else: + if results["is_single_simple_ring"]: + haptic_type = f"eta{totnum}({group_formula})" + is_haptic = True + logger.debug( + "Identified haptic mode: is_haptic=%s, haptic_type=%s", is_haptic, haptic_type + ) + + return is_haptic, haptic_type, results - # 2) the total number of electrons (as sum of atomic number) - if (mol1.eleccount != mol2.eleccount): - if debug > 0: print("COMPARE_SPECIES. FALSE, different eleccount:") + +def is_single_ring(atoms: list, use_bond_info: bool | None = None) -> bool: + """Check if a given list of atoms is a ring + Args: + atoms: list of Atom objects + use_bond_info: whether to use bond information from CIF data + Returns: + bool: True if the atoms form a single ring, False otherwise + """ + labels = [atom.label for atom in atoms] + positions = [atom.coord for atom in atoms] + atom_site_labels = ( + [atom.atom_site_label for atom in atoms] if atoms[0].atom_site_label else None + ) + refcell = atoms[0].get_parent("reference") + bond_data = getattr(refcell, "geom_bond_cif", None) if refcell else None + if use_bond_info is None: + use_bond_info = config.USE_BOND_INFO + + # logger.debug("Checking if group is a single ring...") + # logger.debug("Labels: %s", labels) + # logger.debug("Positions: %s", positions) + # logger.debug("Atom site labels: %s", atom_site_labels) + + adjmat = build_adjacency( + labels=labels, + positions=positions, + atom_site_labels=atom_site_labels, + bond_data=bond_data, + use_bond_info=use_bond_info, + ) + if adjmat is None: return False + G = nx.from_numpy_array(np.array(adjmat)) + + # Check if the graph is connected + if not nx.is_connected(G): + return False # If not connected, can't form a single ring + + # Check for cycles and ensure the graph forms a simple cycle + cycle_basis = nx.cycle_basis(G) + + # Check if there's exactly one cycle that includes all nodes (simple ring) + if len(cycle_basis) == 1 and len(cycle_basis[0]) == len(G.nodes): + return True + # return True, None # The graph represents a ring compound + # elif len(cycle_basis) == 1 and len(cycle_basis[0]) != len(G.nodes): + # return False, cycle_basis[0] # The graph has a cycle but not all nodes are included + + return False # Otherwise, not a ring compound + + +def analyze_topology(atoms: list, use_bond_info: bool | None = None): + """ + Analyze graph topology for a group of atoms. + + Detects: + - graph connectivity + - number of rings + - ring sizes + - whether all atoms belong to rings + - simple single ring + - fused ring systems (5–5, 5–6, 5–7) + """ + + def _empty_result(is_connected=False): + return { + "is_connected": is_connected, + "n_rings": 0, + "ring_sizes": [], + "ring_atoms": [], + "ring_sets": [], + "all_atoms_in_rings": False, + "is_single_simple_ring": False, + "is_fused_5_5": False, + "is_fused_5_6": False, + "is_fused_5_7": False, + } + + if not atoms: + return _empty_result(is_connected=False) + + labels = [atom.label for atom in atoms] + positions = [atom.coord for atom in atoms] + atom_site_labels = ( + [atom.atom_site_label for atom in atoms] if atoms[0].atom_site_label else None + ) + + refcell = atoms[0].get_parent("reference") + bond_data = getattr(refcell, "geom_bond_cif", None) if refcell else None + + if use_bond_info is None: + use_bond_info = config.USE_BOND_INFO + + adjmat = build_adjacency( + labels=labels, + positions=positions, + atom_site_labels=atom_site_labels, + bond_data=bond_data, + use_bond_info=use_bond_info, + ) + + if adjmat is None: + return _empty_result(is_connected=False) + + G = nx.from_numpy_array(np.array(adjmat)) + + is_connected = nx.is_connected(G) + if not is_connected: + return _empty_result(is_connected=False) + + # --- Ring detection --- + cycle_basis = nx.cycle_basis(G) + ring_sets = [set(cycle) for cycle in cycle_basis] + n_rings = len(ring_sets) + ring_atoms = set().union(*ring_sets) if ring_sets else set() + ring_atoms = list(ring_atoms) + all_atoms_in_rings = len(ring_atoms) == G.number_of_nodes() + is_single_simple_ring = (n_rings == 1) and all_atoms_in_rings + + # --- Fused ring detection --- + fused_flags = { + "is_fused_5_5": False, + "is_fused_5_6": False, + "is_fused_5_7": False, + } + + if n_rings == 2: + r1, r2 = ring_sets + shared = r1 & r2 + sizes = tuple(sorted([len(r1), len(r2)])) + total_unique = len(r1 | r2) + + fused_rules = { + (5, 5): ("is_fused_5_5", 8), + (5, 6): ("is_fused_5_6", 9), + (5, 7): ("is_fused_5_7", 10), + } + + if sizes in fused_rules and len(shared) == 2: + flag_name, expected_total = fused_rules[sizes] + if total_unique == expected_total: + fused_flags[flag_name] = True + + ring_sets = [list(r) for r in ring_sets] + return { + "is_connected": True, + "n_rings": n_rings, + "ring_sizes": [len(r) for r in ring_sets], + "ring_atoms": ring_atoms, + "ring_sets": ring_sets, + "all_atoms_in_rings": all_atoms_in_rings, + "is_single_simple_ring": is_single_simple_ring, + **fused_flags, + } + + +def merge_multiple_groups(parent_molecule, groups, parent_ligand): + from cell2mol.classes.group import Group - # 3) the number of atoms of each type - if not hasattr(mol1,"element_count"): mol1.set_element_count() - if not hasattr(mol2,"element_count"): mol2.set_element_count() - for kdx, elem in enumerate(mol1.element_count): - if elem != mol2.element_count[kdx]: - if debug > 0: print(f"COMPARE_SPECIES. FALSE, different {elem} count:") - return False - # writexyz(os.getcwd(), f"reordered.xyz", mol1.labels, mol1.coord) - # 4) the number of adjacencies between each pair of element types - if not hasattr(mol1,"adj_types"): mol1.set_adj_types() - if not hasattr(mol2,"adj_types"): mol2.set_adj_types() - if debug == 2: print(f"{mol1.adj_types=}") - if debug == 2: print(f"{mol2.adj_types=}") - - count = 0 - if debug > 0: print("COMPARE_SPECIES. kdx ldx elem1 - elem2 : reordered - reference") - for kdx, (elem, row1) in enumerate(zip(elems, mol1.adj_types)): - for ldx, (elem2, val1) in enumerate(zip(elems, row1)): - val2 = mol2.adj_types[kdx, ldx] - if val1 != val2: - count += 1 - if debug > 0: print(f"COMPARE_SPECIES. FALSE, different adjacency count") - if debug > 0: print(f"COMPARE_SPECIES. {kdx} {ldx} {elem} - {elem2} : {val1} - {val2}") - - if count > 0 : return False - else: return True - - if check_coordinates: - # 5) Finally, the coordinates if the user wants it - for idx in range(0,mol1.natoms,1): - if (mol1.coord[idx][0] != mol2.coord[idx][0]): return False - if (mol1.coord[idx][1] != mol2.coord[idx][1]): return False - if (mol1.coord[idx][2] != mol2.coord[idx][2]): return False - return True -################################# -def compare_reference_indices (ref, mol, debug: int=0): - if (ref.natoms == mol.natoms) & (ref.formula == mol.formula): - if (sorted(ref.get_parent_indices("reference")) == sorted(mol.get_parent_indices("reference"))): - if debug >= 2: - print("Matched", mol.formula, ref.formula, ref.get_parent_indices("reference"), mol.get_parent_indices("reference")) - issame = True + """ + Merge multiple Group objects. + Returns a LIST of Group objects (usually 1, but can be 2 if splitting occurs). + """ + all_atoms = [] + seen_atom_ids = set() + all_metals = [] + haptic_denticities = [] + + # --- 1. Aggregate Atoms & Metals --- + for grp in groups: + if grp.is_haptic: + haptic_denticities.append(grp.haptic_type.split("(", 1)[0]) + + for atom in grp.atoms: + idx = atom.get_parent_index("molecule") + if idx not in seen_atom_ids: + seen_atom_ids.add(idx) + all_atoms.append(atom) + + for m in grp.metals: + if m not in all_metals: + all_metals.append(m) + + # --- 2. Topology Analysis --- + results = analyze_topology(all_atoms) + if not results["is_connected"]: + return [] + + # --- Helper: Filter metals connected to specific atoms --- + def get_bonded_metals(atom_subset, metal_candidates): + """ + Return a list of metals from candidates that are bonded + to at least one atom in atom_subset based on adjacency matrix. + """ + bonded = [] + atom_indices = [a.get_parent_index("molecule") for a in atom_subset] + adj = parent_molecule.adjmat + + for m in metal_candidates: + m_idx = m.get_parent_index("molecule") + is_connected = False + # Check bond between metal and ANY atom in the subset + for a_idx in atom_indices: + if adj[m_idx, a_idx]: # Check adjacency (works for dense or sparse) + is_connected = True + break + + if is_connected: + bonded.append(m) + return bonded + + # --- Helper: Create and link a group --- + def create_linked_group(atom_subset, metals_subset, forced_haptic_type=None): + """Creates a Group object, sets parents, and links specific metals.""" + new_grp = Group.from_atom_list(atom_subset) + new_grp.origin = "_merge_groups" + + # Hapticity + if forced_haptic_type: + new_grp.haptic_type = forced_haptic_type + new_grp.is_haptic = True + new_grp.topology = results else: - if debug >= 2: - print("Different indices", mol.formula, ref.formula, ref.get_parent_indices("reference"), mol.get_parent_indices("reference")) - issame = False - else : - if debug >= 2: - print("Different numbers", mol.formula, ref.formula, ref.get_parent_indices("reference"), mol.get_parent_indices("reference")) - issame = False - return issame -################################# -def arrange_data_for_reorder(reference: object, target: object, debug: int=0): - # To do the reorder, we create new tags that include as much information as possible. - # Ideally, we aim to include the label + the connectivity + the metal connectivity - t_totconnec = 0 - t_totmconnec = 0 - for a in target.atoms: - t_totconnec += a.connec - t_totmconnec += a.mconnec - r_totconnec = 0 - r_totmconnec = 0 - for a in reference.atoms: - r_totconnec += a.connec - r_totmconnec += a.mconnec - if t_totconnec == r_totconnec: useconec = True - else: useconec = False - if t_totmconnec == r_totmconnec: usemconec = True - else: usemconec = False - # For target - target_data = [] - for a in target.atoms: - data = a.label - if useconec: data += str(a.connec) - if usemconec: data += str(a.mconnec) - target_data.append(data) - # For reference - ref_data = [] - for a in reference.atoms: - data = a.label - if useconec: data += str(a.connec) - if usemconec: data += str(a.mconnec) - ref_data.append(data) - return ref_data, target_data - -################################# -def mol_with_atom_index(mol): - for atom in mol.GetAtoms(): - atom.SetAtomMapNum(atom.GetIdx()) - return mol - -################################# -def split_group(original_group, conn_idx, final_ligand_indices, debug: int=0): - from cell2mol.classes import group - # Split the "group" to obtain the groups connected to a specific metal - splitted_groups = [] - - if debug > 1: print(f"GROUP.SPLIT_GROUP: {conn_idx=}") - if debug > 1: print(f"GROUP.SPLIT_GROUP: {original_group.labels=}") - if debug > 1: print(f"GROUP.SPLIT_GROUP: {original_group.coord=}") - if debug > 1: print(f"GROUP.SPLIT_GROUP: {[atom.label for atom in original_group.atoms]=}") - conn_labels = extract_from_list(conn_idx, original_group.labels, dimension=1) - conn_coord = extract_from_list(conn_idx, original_group.coord, dimension=1) - frac_coord = getattr(original_group, "frac_coord", None) - conn_frac_coord = extract_from_list(conn_idx, frac_coord, dimension=1) if frac_coord is not None else None - conn_radii = extract_from_list(conn_idx, original_group.radii, dimension=1) - conn_atoms = extract_from_list(conn_idx, original_group.atoms, dimension=1) - atom_site_labels = getattr(original_group, "atom_site_labels", None) - conn_atom_site_labels = extract_from_list(conn_idx, atom_site_labels, dimension=1) if atom_site_labels is not None else None - - if debug > 1: print(f"GROUP.SPLIT_GROUP: {conn_labels=}") - - cov_factor=original_group.get_parent("ligand").cov_factor - refcell = original_group.get_parent("reference") - geom_bond_cif = getattr(refcell, "geom_bond_cif", None) - if refcell is not None and getattr(refcell, "exist_cif_bond_moiety", False) and geom_bond_cif is not None: - blocklist = split_species(conn_labels, conn_coord, atom_site_labels=conn_atom_site_labels, geom_bond_cif=geom_bond_cif, debug=debug) - else : - blocklist = split_species(conn_labels, conn_coord, radii=conn_radii, cov_factor=cov_factor, debug=debug) - if debug > 0: print(f"GROUP.SPLIT_GROUP: {blocklist=}") - - ## Arranges Groups - for b in blocklist: - if debug > 1: print(f"GROUP.SPLIT_GROUP: block={b}") - gr_indices = extract_from_list(b, conn_idx, dimension=1) - ligand_idx = extract_from_list(b, final_ligand_indices, dimension=1) - gr_labels = extract_from_list(b, conn_labels, dimension=1) - gr_coord = extract_from_list(b, conn_coord, dimension=1) - gr_frac_coord = extract_from_list(b, conn_frac_coord, dimension=1) if frac_coord is not None else None - gr_radii = extract_from_list(b, conn_radii, dimension=1) - gr_atoms = extract_from_list(b, conn_atoms, dimension=1) - gr_atom_site_labels = extract_from_list(b, conn_atom_site_labels, dimension=1) if atom_site_labels is not None else None - - if debug > 1: print(f"GROUP.SPLIT_GROUP: {gr_labels=}") - if debug > 1: print(f"GROUP.SPLIT_GROUP: {gr_atom_site_labels=}") - # Create Group Object - newgroup = group(gr_labels, gr_coord, gr_frac_coord, radii=gr_radii) - if debug > 1: print(f"GROUP.SPLIT_GROUP: {newgroup.labels=}") - # For debugging - newgroup.origin = "split_group" - # Define the GROUP as parent of the group. Bottom-Up hierarchy - newgroup.add_parent(original_group.get_parent("ligand"), indices=ligand_idx) - # Pass the GROUP atoms to the groud - newgroup.set_atoms(atomlist=gr_atoms, atom_site_labels=gr_atom_site_labels) - # Inherit the adjacencies from molecule - newgroup.inherit_adjmatrix("ligand") - # Associate the Groups with the Metals - newgroup.get_connected_metals(debug=debug) - newgroup.get_closest_metal(debug=debug) - newgroup.get_hapticity(debug=debug) - newgroup.get_denticity(debug=debug) - # Top-down hierarchy - splitted_groups.append(newgroup) - return splitted_groups \ No newline at end of file + new_grp.get_hapticity() + + # Map Indices + grp_mol_indices = [a.get_parent_index("molecule") for a in atom_subset] + lig_mol_indices = [ + atom.get_parent_index("molecule") for atom in parent_ligand.atoms + ] + grp_lig_indices = [lig_mol_indices.index(m_idx) for m_idx in grp_mol_indices] + + # Establish Parents + new_grp.add_parent(parent_molecule, indices=grp_mol_indices) + new_grp.set_inherit_adjmatrix("molecule") + new_grp.add_parent(parent_ligand, indices=grp_lig_indices) + + # Link Specific Metals + if getattr(new_grp, "metals", None) is None: + object.__setattr__(new_grp, "metals", []) + new_grp.metals.extend(metals_subset) + + return new_grp + + # --- 3. Decision: Split or Keep Merged? --- + ring_sets = results.get("ring_sets", []) + + # Find a specific ring that fits the criteria (Size 5 to 8) + # We look for the first ring in the set that meets the condition. + primary_ring_indices = next((r for r in ring_sets if 5 <= len(r) <= 8), None) + + # CONDITION: Not all atoms in rings AND we found a valid primary ring + if (not results.get("all_atoms_in_rings")) and (primary_ring_indices is not None): + target_indices = set(primary_ring_indices) # Convert to set for O(1) lookup + ring_size = len(target_indices) + + logger.debug( + "Splitting: Isolated Primary Ring (size %d) from merged system", ring_size + ) + + # A. Ring Group (Only atoms in the identified 5-8 membered ring) + # Note: In your example, this keeps [0, 1, 2, 3, 4] + ring_atoms = [atom for i, atom in enumerate(all_atoms) if i in target_indices] + ring_metals = get_bonded_metals(ring_atoms, all_metals) + group_ring = create_linked_group( + ring_atoms, ring_metals, forced_haptic_type=None + ) + + # B. Rest Group (Tails AND atoms from other smaller fused rings) + # Note: In your example, atom [6] (from the 3-ring) moves here. + non_ring_atoms = [ + atom for i, atom in enumerate(all_atoms) if i not in target_indices + ] + non_ring_metals = get_bonded_metals(non_ring_atoms, all_metals) + group_rest = create_linked_group( + non_ring_atoms, non_ring_metals, forced_haptic_type=None + ) + + return [group_ring, group_rest] + + # --- 4. Standard Merged Path (One Group) --- + else: + labels = [a.label for a in all_atoms] + formula = labels2formula(labels) + + # Determine Name + ring_map = { + ("single", "C5"): "Cp", + ("single", "C6"): "benzene", + ("single", "C7"): "CHT", + ("single", "C8"): "COT", + ("fused_5_5", "C8"): "pentalene", + ("fused_5_6", "C9"): "indene", + ("fused_5_7", "C10"): "azulene", + } + + key = None + if results.get("all_atoms_in_rings"): + if results.get("is_single_simple_ring"): + key = ("single", formula) + elif results.get("n_rings") == 2: + if results.get("is_fused_5_5"): + key = ("fused_5_5", formula) + elif results.get("is_fused_5_6"): + key = ("fused_5_6", formula) + elif results.get("is_fused_5_7"): + key = ("fused_5_7", formula) + + group_name = ring_map.get(key, formula) + denticity_str = ",".join(haptic_denticities) + new_haptic_type = f"{denticity_str}({group_name})" if denticity_str else None + + # Create single unified group with ALL metals + group_unified = create_linked_group( + all_atoms, all_metals, forced_haptic_type=new_haptic_type + ) + + logger.info( + "Merged group created: %s %s with metals %s", + group_unified.formula, + group_unified.haptic_type, + [m.label for m in group_unified.metals], + ) + return [group_unified] + + +def add_atom( + labels: list, + coords: list, + site: int, + ligand: object, + element: str = "H", + metal: object | None = None, + removed_idx: list | None = None, + unconditional: bool = False, +) -> Tuple[bool, list, list]: + """ + Add one atom of type `element` to a given ligand atom site. + + The atom is placed along the vector pointing toward the closest metal atom. + """ + isadded = False + posadded = len(labels) + + newlab = list(labels) + newcoord = list(coords) + + newlab.append(element) # one atom will be added + + # logger.debug("number of ligand atoms=%d", len(ligand.atoms)) + # logger.debug("target site=%d (%s)", site, ligand.atoms[site].label) + + for idx, atom in enumerate(ligand.atoms): + if idx != site: + continue + + apos = np.array(atom.coord, copy=True) + if metal is not None: + tgt = metal + + else: + tgt = atom.get_closest_metal() + + # metal_idx = tgt.get_parent_index("molecule") + + # logger.debug("Evaluating atom at %s with closest metal at %s", apos, tgt.coord) + + idealdist = atom.radii + elemdatabase.CovalentRadius3[element] + added_coords = point_along_vector(apos, tgt.coord, idealdist) + + newcoord.append([added_coords[0], added_coords[1], added_coords[2]]) + + isgood, tmpconmat, warning = get_adjmatrix( + newlab, + newcoord, + cov_factor=ligand.cov_factor, + add_atom=True, + ) + tmpconnec = tmpconmat.sum(axis=1) + # logger.debug("tmpconnec at added position=%d", int(tmpconnec[posadded])) + # newlab_with_metal = newlab + [tgt.label] + # newcoord_with_metal = newcoord + [tgt.coord] + + # Case 1: unconditional addition + if unconditional: + isadded = True + logger.debug( + "%s added unconditionally at site %d of ligand %s", + element, + site, + ligand.formula, + ) + + # The newly added atom is at the last index: posadded + # 1. Create a mask or manually reset the row and column for the new atom + # First, store the specific connection we want to keep + site_to_new_bond = tmpconmat[site, posadded] + logger.debug( + "site_to_new_bond between site %d and new atom at pos %d: %d", + site, + posadded, + site_to_new_bond, + ) + # 2. Clear all connections for the new atom (row and column) + tmpconmat[posadded, :] = 0 + tmpconmat[:, posadded] = 0 + + # 3. Restore ONLY the bond between the target site and the new atom + # We use 1 (or site_to_new_bond if you want to preserve the bond order/value) + tmpconmat[site, posadded] = 1 + tmpconmat[posadded, site] = 1 + + logger.debug( + "%s added unconditionally at site %d. All other new adjacencies cleared.", + element, + site, + ) + # Case 2: acceptable connectivity + elif tmpconnec[posadded] <= 1: + isadded = True + # logger.debug( + # "Chosen metal index %d. %s added at site %d", + # metal_idx, + # element, + # site, + # ) + + # Case 3: excessive connectivity but some atoms were removed + elif ( + tmpconnec[posadded] > 1 and removed_idx is not None and len(removed_idx) > 0 + ): + connected = {i for i, c in enumerate(tmpconmat[posadded]) if c != 0} + removed = set(removed_idx) + + logger.debug( + "Dummy %s attached to atom %s %s %s %s connected to indices %s %s %s; previously removed indices%s %s %s", + element, + atom.label, + atom.atom_site_label, + apos, + atom.frac_coord, + connected, + [labels[i] for i in connected], + [ligand.atom_site_labels[i] for i in connected], + removed, + [labels[i] for i in removed], + [ligand.atom_site_labels[i] for i in removed], + ) + + remaining = list(connected - removed) + + # logger.debug("remaining connections after removal=%s", remaining) + + if len(remaining) <= 1: + isadded = True + # logger.debug( + # "%s added at site %d after removal of %s", + # element, + # site, + # removed_idx, + # ) + else: + logger.info( + "Reset at site (ligand index: %d) of atom %s %s due to dummy %s connectivity=%d", + site, + atom.label, + atom.atom_site_label, + element, + tmpconnec[posadded], + ) + # import os + # from cell2mol.write_results import writexyz + # writexyz( + # os.getcwd(), + # f"target_atom_{atom.label}_{apos[0]}_newcoord_with_{element}.xyz", + # newlab_with_metal, + # newcoord_with_metal, + # ) + + isadded = False + newlab = list(labels) + newcoord = list(coords) + + else: + logger.info( + "Reset at site (ligand index: %d) of atom %s %s due to dummy %s connectivity=%d", + site, + atom.label, + atom.atom_site_label, + element, + tmpconnec[posadded], + ) + isadded = False + newlab = list(labels) + newcoord = list(coords) + + return isadded, newlab, newcoord diff --git a/cell2mol/construction.py b/cell2mol/construction.py new file mode 100644 index 000000000..cfa812f7d --- /dev/null +++ b/cell2mol/construction.py @@ -0,0 +1,969 @@ +import numpy as np +import logging +from ase import Atoms +from cell2mol.classes import Molecule +from cell2mol.compare import compare_reference_indices +from cell2mol.connectivity import split_species +from cell2mol.operations import translate, tmatgenerator, extract_from_list +from itertools import combinations +from cell2mol.elementdata import ElementData +from cell2mol.utils import config + +logger = logging.getLogger(__name__) +elemdatabase = ElementData() + + +def construct_unitcell(refcell, unitcell, sym_ops): + """ + Construct a unit cell based on a reference cell and symmetry operations. + + Args: + refcell (object): + Reference cell containing reference molecules. + unitcell (object): + Unit cell to be constructed. + sym_ops (tuple): + Symmetry operations (rotations, translations). + """ + logger.info("=" * 40) + logger.info(" Constructing unit cell from reference ") + logger.info("=" * 40) + + refmoleclist = refcell.refmoleclist + sym_atoms_list = apply_symmetry_operations(refcell, sym_ops) + + # Atom indices already matched to symmetry structures + found_atom_indices = [] + # Molecules identified directly (no reconstruction needed) + direct_molecules = [] + # Molecules reconstructed from fragments + reconstructed_molecules = [] + # Fragments not yet reconstructed, grouped by reference molecule + remaining_fragments_by_reference = [[] for _ in range(len(refmoleclist))] + + for idx, sym_atoms in enumerate(sym_atoms_list): + initial_fragments = generate_initial_fragments( + idx, refcell, unitcell, sym_atoms, found_atom_indices + ) + molecules, incomplete_fragments = classify_fragments_and_molecules( + initial_fragments, refmoleclist + ) + direct_molecules.extend(molecules) + + reconstruct_fragments_by_reference( + incomplete_fragments, + refcell, + reconstructed_molecules, + remaining_fragments_by_reference, + ) + + all_molecules = direct_molecules + reconstructed_molecules + # --- early validation --- + if is_reconstruction_complete( + unitcell, + found_atom_indices, + remaining_fragments_by_reference, + ): + generate_unitcell_molecules(unitcell, refcell, all_molecules) + assign_unitcell_species(unitcell, refcell.species_list) + return unitcell + + # --- final reconstruction --- + final_remaining_fragments = final_reconstruct( + refcell, + reconstructed_molecules, + remaining_fragments_by_reference, + ) + + all_molecules = direct_molecules + reconstructed_molecules + # --- final validation --- + if is_reconstruction_complete( + unitcell, + found_atom_indices, + final_remaining_fragments, + ): + generate_unitcell_molecules(unitcell, refcell, all_molecules) + assign_unitcell_species(unitcell, refcell.species_list) + return unitcell + + # Reconstruction failed, unitcell already has error flags + return unitcell + + +def apply_symmetry_operations(refcell, sym_ops, normalize: bool = True): + """Applies symmetry operations to a reference cell. + + This function generates a set of new atomic structures by applying a list of + symmetry operations (rotations and translations) to the fractional coordinates + of a reference structure. + + Args: + refcell (object): + Reference cell containing reference molecules. + sym_ops (tuple): + Symmetry operations (rotations, translations). + normalize (bool, optional): + If True, the transformed fractional coordinates are wrapped back + into the unit cell (0 to 1). Defaults to True. + + Returns: + list: A list of `ase.Atoms` objects, where each object represents the + reference structure after one symmetry operation has been applied. + """ + sym_atoms_list = [] + + ref_labels = refcell.labels + fractional_coords = np.array(refcell.frac_coord) + cell_vector = refcell.cell_vector + + if "D" in ref_labels: + logger.debug("Deuterium is in the reference") + # Atoms object cannot handle Deuterium in the symbols + numbers = [elemdatabase.elementnr[elem] for elem in ref_labels] + + for rot, trans in zip(sym_ops[0], sym_ops[1]): + transformed_positions = np.dot(fractional_coords, rot.T) + transformed_positions += np.array(trans) + if normalize: + transformed_positions = np.remainder(transformed_positions, 1) + if "D" in ref_labels: + sym_atoms = Atoms( + scaled_positions=transformed_positions, + numbers=numbers, + cell=cell_vector, + pbc=True, + ) + else: + sym_atoms = Atoms( + symbols=ref_labels, + scaled_positions=transformed_positions, + cell=cell_vector, + pbc=True, + ) + sym_atoms_list.append(sym_atoms) + logger.info("Number of symmetry operations: %d", len(sym_atoms_list)) + return sym_atoms_list + + +def generate_initial_fragments( + symop_idx, refcell, unitcell, sym_atoms, matched_atom_indices +): + """ + Generate initial molecular fragments from a symmetry-transformed structure. + + For a given symmetry operation, this function matches atoms from the + symmetry-transformed structure to the unit cell, updates the list of + already matched atom indices, and generates initial molecular fragments + from newly matched atoms. + + Args: + symop_idx (int): + Index of the symmetry operation. + refcell (object): + Reference cell object containing the reference structure. + unitcell (object): + Cell object containing the unit cell information. + sym_atoms (ase.Atoms): + Symmetry-transformed atomic structure. + matched_atom_indices (list): + List of unit-cell atom indices that have already been matched. + This list is updated in place. + + Returns: + list: + List of initial molecular fragments generated from newly matched + atoms. Returns an empty list if no new atoms are found. + """ + indices_lists = _get_updated_indices(symop_idx, refcell, unitcell, sym_atoms) + + updated_lists = [i for i in indices_lists if i[1] not in matched_atom_indices] + updated_ref_indices = [i[0] for i in updated_lists] + updated_cell_indices = [i[1] for i in updated_lists] + matched_atom_indices.extend(updated_cell_indices) + + logger.debug("Number of matched atoms so far: %d", len(matched_atom_indices)) + if len(matched_atom_indices) == len(unitcell.coord): + logger.debug("All atoms have been matched in the cell.") + + if not updated_cell_indices: + return [] + + blocklist = _generate_blocklist_in_updated( + refcell=refcell, + unitcell=unitcell, + indices_in_ref=updated_ref_indices, + indices_in_updated=updated_cell_indices, + ) + initial_fragments = _build_fragments_from_blocklist( + blocklist=blocklist, + refcell=refcell, + unitcell=unitcell, + indices_in_ref=updated_ref_indices, + indices_in_updated=updated_cell_indices, + ) + + return initial_fragments + + +def classify_fragments_and_molecules(initial_fragments, refmoleclist): + """ + Classify initial fragments into complete molecules and incomplete fragments + based on reference molecules. + + Each fragment is compared against the reference molecule list. A fragment is + classified as a complete molecule if: + - the number of atoms matches, + - the chemical formula matches, + - the reference parent indices exactly match the fragment reference indices. + + Fragments that do not satisfy these conditions are classified as incomplete + fragments. Single-atom hydrogen or deuterium fragments are treated as a + special case and appended at the end of the incomplete fragment list. + + Args: + initial_fragments (list): + List of initial molecular fragments to classify. + refmoleclist (list): + List of reference molecule objects used for classification. + + Returns: + molecules (list): + List of fragments classified as complete molecules. + incomplete_fragments (list): + List of incomplete fragments, sorted by descending fragment size, + with single-atom hydrogen/deuterium fragments appended at the end. + """ + molecules = [] + incomplete_fragments = [] + hydrogens = [] + + for frag in initial_fragments: + matched = False + + for idx, ref in enumerate(refmoleclist): + if ref.natoms == frag.natoms and ref.formula == frag.formula: + ref_parent_indices = ref.get_parent_indices("reference") + if sorted(ref_parent_indices) == sorted(frag.ref_indices): + logger.debug( + "Fragment %s matched to reference molecule %d %s", + frag.formula, + idx, + ref.formula, + ) + frag.set_subtype("molecule") + frag.set_origin("classify_fragments_and_molecules") + molecules.append(frag) + matched = True + break + + if not matched: + frag.set_subtype("fragment") + frag.set_origin("classify_fragments_and_molecules") + + # Single-atom hydrogen or deuterium fragments + if frag.natoms == 1 and frag.labels[0] in ["H", "D"]: + hydrogens.append(frag) + else: + incomplete_fragments.append(frag) + + # Sort incomplete fragments by size (descending) + if incomplete_fragments: + frag_sizes = np.array([frag.natoms for frag in incomplete_fragments]) + order = np.argsort(frag_sizes)[::-1] + incomplete_fragments = [incomplete_fragments[i] for i in order] + + for frag in incomplete_fragments + hydrogens: + frag.get_centroid() + + logger.debug( + "Incomplete fragments: %s", + [frag.formula for frag in incomplete_fragments], + ) + logger.debug( + "Hydrogen fragments: %s", + [frag.formula for frag in hydrogens], + ) + + incomplete_fragments.extend(hydrogens) + + return molecules, incomplete_fragments + + +def reconstruct_fragments_by_reference( + incomplete_fragments, + refcell, + reconstructed_molecules, + remaining_fragments_by_reference, +): + """ + Reconstruct molecules from fragments grouped by reference molecule. + + For each reference molecule, this function attempts to reconstruct complete + molecules from the associated fragment list. Reconstruction is delegated to + `reconstruct_fragments`, which returns successfully reconstructed molecules + and fragments that remain incomplete. + + This function updates the provided containers in place. + + Args: + incomplete_fragments (list): + List of incomplete molecular fragments. + refcell (object): + Reference cell containing reference molecules. + reconstructed_molecules (list): + Container to collect successfully reconstructed molecules. + Updated in place. + remaining_fragments_by_reference (list of list): + Container for fragments that could not be reconstructed, + grouped by reference molecule. Updated in place. + + Returns: + None + """ + refmoleclist = refcell.refmoleclist + + # Group fragments by reference molecule + fragments_by_reference = _group_fragments_by_reference( + incomplete_fragments, refmoleclist + ) + + for ref_idx, fragments_for_ref in enumerate(fragments_by_reference): + if not fragments_for_ref: + continue + + ref = refmoleclist[ref_idx] + target_ref_indices = ref.get_parent_indices("reference") + + logger.debug( + "Fragments for reference %d (%s): %s", + ref_idx, + ref.formula, + [frag.formula for frag in fragments_for_ref], + ) + + reconstructed, remaining_fragments = reconstruct_fragments( + fragments_for_ref, + target_ref_indices, + refcell, + full=False, + ) + + if reconstructed: + reconstructed_molecules.extend(reconstructed) + if remaining_fragments: + remaining_fragments_by_reference[ref_idx].extend(remaining_fragments) + + +def reconstruct_fragments( + fragments, + target_ref, + refcell, + full: bool = False, +): + reconstructed_molecules = [] + remaining_fragments = [] + + merged_candidates = _merge_fragments_iterative( + fragments.copy(), + target_ref, + refcell, + full=full, + ) + + for merged in merged_candidates: + small_set = set(merged.ref_indices) + if small_set.issubset(target_ref): + if sorted(small_set) == target_ref: + merged.set_subtype("molecule") + reconstructed_molecules.append(merged) + elif merged.natoms == 1 and (merged.labels[0] in ["H", "D"]): + merged.set_subtype("fragment") + logger.debug("Hydrogen found: %s", merged.formula) + remaining_fragments.append(merged) + else: + merged.set_subtype("fragment") + remaining_fragments.append(merged) + + return reconstructed_molecules, remaining_fragments + + +def final_reconstruct( + refcell, + reconstructed_molecules, + remaining_fragments_by_reference, +): + """ + Perform a final reconstruction pass over remaining fragments. + + This function attempts a last reconstruction step for fragments that could + not be merged during symmetry-based reconstruction. Reconstruction is + performed per reference molecule using `full=True`. + + Successfully reconstructed molecules are appended to + `reconstructed_molecules`. Fragments that still cannot be reconstructed + are collected and discarded at this stage. + + Args: + refcell (object): + Reference cell containing reference molecules. + reconstructed_molecules (list): + List of already reconstructed molecules. Updated in place. + remaining_fragments_by_reference (list of list): + Remaining fragments grouped by reference molecule. + + Returns: + list: + Updated list of reconstructed molecules. + """ + refmoleclist = refcell.refmoleclist + + final_remaining_fragments = [] + + for ref_idx, ref_fragments in enumerate(remaining_fragments_by_reference): + if not ref_fragments: + continue + + ref = refmoleclist[ref_idx] + target_ref_indices = ref.get_parent_indices("reference") + + logger.debug("Final reconstruction for reference %d (%s)", ref_idx, ref.formula) + logger.debug( + "Remaining fragments: %s", + [frag.formula for frag in ref_fragments], + ) + + reconstructed, remaining = reconstruct_fragments( + ref_fragments, + target_ref_indices, + refcell, + full=True, + ) + + if reconstructed: + reconstructed_molecules.extend(reconstructed) + if remaining: + final_remaining_fragments.extend(remaining) + + if final_remaining_fragments: + logger.error( + "Unreconstructed fragments after final pass: %s", + [frag.formula for frag in final_remaining_fragments], + ) + + return final_remaining_fragments + + +def is_reconstruction_complete( + unitcell, + found_atom_indices, + remaining_fragments_by_reference, +): + """ + Check whether unit cell reconstruction is complete. + """ + if len(found_atom_indices) != len(unitcell.coord): + unitcell.error_get_fragments = True + unitcell.error_reconstruction = True + return False + + unitcell.error_get_fragments = False + + num_remaining = 0 + for item in remaining_fragments_by_reference: + if isinstance(item, list): + # Normal case: it's a list of fragments + num_remaining += len(item) + elif item is not None: + # Error case: it's a single Molecule object (causes the original crash) + # We count this as 1 (or more) remaining item(s) + num_remaining += 1 + + if num_remaining == 0: + logger.info("All fragments are reconstructed successfully.") + unitcell.error_reconstruction = False + return True + + unitcell.error_reconstruction = True + return False + + +# =============================================================== +# If unit cell is reconstructed successfully, generate moleclist +# of the unit cell, assign unique indices and species list +# =============================================================== +def generate_unitcell_molecules( + unitcell, refcell, all_molecules, use_bond_info: bool | None = None +): + """ + Build the molecular list of a reconstructed unit cell + """ + atom_site_labels = refcell.atom_site_labels + cov_factor, metal_factor = refcell.refmoleclist[0].get_adjacency_parameters() + cov_factor = config.COV_FACTOR if cov_factor is None else cov_factor + metal_factor = config.METAL_FACTOR if metal_factor is None else metal_factor + + if use_bond_info is None: + use_bond_info = config.USE_BOND_INFO + # Get moleclist for the unit cell + unitcell.moleclist = [] + + for mol in all_molecules: + newmolec = Molecule.from_positional(mol.labels, mol.coord, mol.frac_coord) + mol_atom_site_labels = [atom_site_labels[idx] for idx in mol.ref_indices] + newmolec.set_origin("reconstruct_unitcell") + newmolec.add_parent(unitcell, mol.cell_indices) + newmolec.add_parent(refcell, mol.ref_indices) + newmolec.set_adjacency_parameters(cov_factor, metal_factor) + newmolec.set_atoms( + create_adjacencies=True, + atom_site_labels=mol_atom_site_labels, + use_bond_info=use_bond_info, + ) + for atom, idx in zip(newmolec.atoms, mol.cell_indices): + atom.add_parent(unitcell, index=idx) + for atom, idx in zip(newmolec.atoms, mol.ref_indices): + atom.add_parent(refcell, index=idx) + if newmolec.iscomplex or newmolec.has_ia_iia: + logger.debug("Is complex: %s", newmolec.formula) + logger.debug("Splitting complex: %s", newmolec.formula) + newmolec.split_complex() + elif newmolec.has_post_transition_metal: + logger.debug("Has post-transition metal: %s", newmolec.formula) + newmolec.split_complex(post_tms=True) + else: + newmolec.add_parent(newmolec, indices=[*range(0, newmolec.natoms, 1)]) + unitcell.moleclist.append(newmolec) + + for mol in unitcell.moleclist: + mol.analyze_coordination() + + return unitcell + + +def assign_unitcell_species(unitcell, reference_species_list): + """ + Update unitcell in place by assigning unique indices and species list. + Args: + unitcell: + Reconstructed unit cell containing `moleclist`. + reference_species_list: + List of reference species with assigned unique indices. + + Returns: + unitcell: + Updated unit cell with `unique_indices` and `species_list`. + """ + unitcell.unique_indices = [] + unitcell.species_list = [] + + # Pre-group reference species by subtype + ref_molecules = [ + ref + for ref in reference_species_list + if ref.subtype == "molecule" and ref.is_non_complex_molecule + ] + ref_ligands = [ref for ref in reference_species_list if ref.subtype == "ligand"] + ref_metals = [ref for ref in reference_species_list if ref.subtype == "metal"] + + for mol in unitcell.moleclist: + # Case 1: non-complex molecule + if mol.is_non_complex_molecule: + for ref in ref_molecules: + if compare_reference_indices(ref, mol): + mol.unique_index = ref.unique_index + unitcell.unique_indices.append(mol.unique_index) + unitcell.species_list.append(mol) + break + continue + + # Case 2: complex molecule with ligands and metals + # --- ligands --- + for lig in mol.ligands: + for ref in ref_ligands: + if compare_reference_indices(ref, lig): + lig.unique_index = ref.unique_index + unitcell.unique_indices.append(lig.unique_index) + unitcell.species_list.append(lig) + break + + # --- metals --- + for met in mol.metals: + met_parent_ref = met.get_parent_index("reference") + for ref in ref_metals: + if ref.get_parent_index("reference") == met_parent_ref: + met.unique_index = ref.unique_index + unitcell.unique_indices.append(met.unique_index) + unitcell.species_list.append(met) + break + + return unitcell + + +# =============================================================== +# Helper functions for fragment generation and reconstruction +# =============================================================== + + +def _get_updated_indices(symop_idx, refcell, unitcell, sym_atoms): + """ + Get the updated indices of atoms in the new structure that match those in the unit cell. + Args: + symop_idx : index of the symmetry operation + refcell : reference cell object containing the reference structure + unitcell : cell object containing the unit cell information + sym_atoms : ase atoms object by applying symmetry operations to the reference structure + Returns: + indices_lists : list of tuples, where each tuple contains the index of the atom + in the new structure and the index of the atom in the unit cell + """ + + logger.debug("Applying symmetry operations #%2d", symop_idx) + indices_lists = [] + + ref_labels = refcell.labels + cell_labels = unitcell.labels + cell_pos = unitcell.coord + cell_fracs = unitcell.frac_coord + + new_pos = sym_atoms.get_positions() + new_fracs = sym_atoms.get_scaled_positions() + + for jdx, (n_l, n_p, n_f) in enumerate(zip(ref_labels, new_pos, new_fracs)): + for kdx, (label, p, f) in enumerate(zip(cell_labels, cell_pos, cell_fracs)): + if n_l == label and np.allclose(n_p, p, atol=1e-4, rtol=1e-2): + # jdx is the index of the atom in the new structure + # kdx is the index of the atom in the unit cell + indices_lists.append((jdx, kdx)) + return indices_lists + + +def _generate_blocklist_in_updated( + refcell, + unitcell, + indices_in_ref, + indices_in_updated, + use_bond_info: bool | None = None, +): + """ + Get fragments indices in the updated structure by mapping from reference moieties. + If no moiety information is available, split by distance. + """ + + moiety_indices = getattr(refcell, "moiety_indices", None) if refcell else None + atom_site_labels = getattr(refcell, "atom_site_labels", None) if refcell else None + bond_data = getattr(refcell, "geom_bond_cif", None) if refcell else None + if use_bond_info is None: + use_bond_info = config.USE_BOND_INFO + + # Map reference index -> updated cell index + ref_to_updated = { + ref_idx: indices_in_updated[idx] for idx, ref_idx in enumerate(indices_in_ref) + } + # If no moiety information is available, split by distance + if moiety_indices is None: + updated_labels = extract_from_list( + indices_in_updated, unitcell.labels, dimension=1 + ) + updated_coord = extract_from_list( + indices_in_updated, unitcell.coord, dimension=1 + ) + blocklist = split_species(updated_labels, updated_coord) + return blocklist + + # Generate blocklist based on distance or CIF bond information + # depending on use_bond_info (default: config.USE_BOND_INFO) + tmp_blocklist = [] + for moiety in moiety_indices: + cell_indices = [] + ref_indices = [] + for ref_idx in moiety: + if ref_idx in ref_to_updated: + cell_indices.append(ref_to_updated[ref_idx]) + ref_indices.append(ref_idx) + if not cell_indices: + continue + + moiety_labels = extract_from_list(cell_indices, unitcell.labels, dimension=1) + moiety_coord = extract_from_list(cell_indices, unitcell.coord, dimension=1) + if atom_site_labels is None: + moiety_atom_site_labels = None + else: + moiety_atom_site_labels = [atom_site_labels[i] for i in ref_indices] + + blocks = split_species( + labels=moiety_labels, + positions=moiety_coord, + indices=cell_indices, + atom_site_labels=moiety_atom_site_labels, + bond_data=bond_data, + use_bond_info=use_bond_info, + ) + + tmp_blocklist.extend(blocks) + + value_to_index = {val: idx for idx, val in enumerate(indices_in_updated)} + blocklist = [ + [value_to_index[val] for val in sublist if val in value_to_index] + for sublist in tmp_blocklist + ] + return blocklist + + +def _build_fragments_from_blocklist( + blocklist, + refcell, + unitcell, + indices_in_ref, + indices_in_updated, + use_bond_info: bool | None = None, +): + """ + Build Molecule fragment objects from a blocklist. + + Args: + blocklist (list): + List of blocks, where each block is a list of atom indices in the updated structure. + refcell (object): + Reference cell object containing reference molecules. + unitcell (object): + Unit cell object to be reconstructed. + indices_in_ref (list): + List of atom indices in the reference structure. + indices_in_updated (list): + List of atom indices in the updated structure. + use_bond_info (bool, optional): + Whether to use CIF bond information for adjacency determination. + Defaults to None. + Returns: + list: + List of Molecule fragment objects. + """ + + atom_site_labels = refcell.atom_site_labels + cov_factor, metal_factor = refcell.refmoleclist[0].get_adjacency_parameters() + cov_factor = config.COV_FACTOR if cov_factor is None else cov_factor + metal_factor = config.METAL_FACTOR if metal_factor is None else metal_factor + + updated_labels = extract_from_list(indices_in_updated, unitcell.labels, dimension=1) + updated_coord = extract_from_list(indices_in_updated, unitcell.coord, dimension=1) + updated_fracs = extract_from_list( + indices_in_updated, unitcell.frac_coord, dimension=1 + ) + + fragments = [] + for block in blocklist: + mol_labels = extract_from_list(block, updated_labels, dimension=1) + mol_coord = extract_from_list(block, updated_coord, dimension=1) + mol_frac_coord = extract_from_list(block, updated_fracs, dimension=1) + + cell_indices = extract_from_list(block, indices_in_updated, dimension=1) + ref_indices = extract_from_list(block, indices_in_ref, dimension=1) + mol_atom_site_labels = [atom_site_labels[idx] for idx in ref_indices] + + # Create Molecular fragment object + frag = Molecule.from_positional(mol_labels, mol_coord, mol_frac_coord) + frag.set_origin("_build_fragments_from_blocklist") + + # Add parents + frag.add_parent(unitcell, indices=cell_indices) + frag.add_parent(refcell, indices=ref_indices) + + # Geometry & bonding + frag.set_fractional_coord(mol_frac_coord) + frag.set_adjacency_parameters(cov_factor, metal_factor) + frag.set_atoms( + create_adjacencies=True, + atom_site_labels=mol_atom_site_labels, + use_bond_info=use_bond_info, + ) + # Index bookkeeping + frag.ref_indices = ref_indices + frag.cell_indices = cell_indices + + fragments.append(frag) + return fragments + + +def _merge_fragments_iterative( + fragments, + target_ref, + refcell, + full: bool = False, +): + """ + Iteratively merge fragment pairs in-place until no further merges are possible. + + Notes + ----- + This function modifies `fragments` in place. + """ + while True: + merged_any = False + for (i, frag_i), (j, frag_j) in combinations(list(enumerate(fragments)), 2): + # --- skip conditions --- + if frag_i.formula == "H" and frag_j.formula == "H": + continue + if frag_i.natoms + frag_j.natoms > len(target_ref): + continue + if set(frag_i.ref_indices) & set(frag_j.ref_indices): + continue + + logger.debug( + "Fragments to be merged %s %s", + [frag_i.formula, frag_j.formula], + [frag_i.subtype, frag_j.subtype], + ) + + merged = _merge_fragment_pair( + (frag_i, frag_j), + refcell, + full=full, + ) + if merged is None: + continue + # Successful merge + fragments[i] = merged + fragments.pop(j) + merged_any = True + break + + if not merged_any: + break + + return fragments + + +def _merge_fragment_pair( + frag_pair: tuple, + refcell: object, + use_bond_info: bool | None = None, + full: bool = False, +): + """ + Attempt to merge two fragments by translating one fragment across the unit cell. + + Notes + ----- + - This function does NOT modify the input fragments. + - Returns a new Molecule if a valid merge is found, otherwise None. + """ + + cell_vector = refcell.cell_vector + + # Adjacency parameters + cov_factor, metal_factor = refcell.refmoleclist[0].get_adjacency_parameters() + cov_factor = config.COV_FACTOR if cov_factor is None else cov_factor + metal_factor = config.METAL_FACTOR if metal_factor is None else metal_factor + + atom_site_labels = getattr(refcell, "atom_site_labels", None) + bond_data = getattr(refcell, "geom_bond_cif", None) + + if use_bond_info is None: + use_bond_info = config.USE_BOND_INFO + + # Keep the larger fragment fixed, move the smaller one + keep_frag, move_frag = sorted(frag_pair, key=lambda f: f.natoms, reverse=True) + move_frag.get_centroid() + + # Single H/D: allow full translations + if move_frag.natoms == 1 and move_frag.labels[0] in ("H", "D"): + full = True + + translations = tmatgenerator(move_frag.frac_centroid, full=full) + if not translations: + return None + + for t in translations: + # --- merge coordinates and metadata (ALWAYS lists) --- + merged_labels = [*keep_frag.labels, *move_frag.labels] + + if t == (0, 0, 0): + moved_coord = move_frag.coord + else: + moved_coord = translate(t, move_frag.coord, cell_vector) + + merged_coord = [*keep_frag.coord, *moved_coord] + merged_fracs = [*keep_frag.frac_coord, *move_frag.frac_coord] + + merged_ref_indices = [*keep_frag.ref_indices, *move_frag.ref_indices] + merged_cell_indices = [*keep_frag.cell_indices, *move_frag.cell_indices] + + if atom_site_labels is None: + merged_atom_site_labels = None + else: + merged_atom_site_labels = [atom_site_labels[i] for i in merged_ref_indices] + + # --- fast reject: must form exactly one species --- + numspecs = split_species( + labels=merged_labels, + positions=merged_coord, + atom_site_labels=merged_atom_site_labels, + bond_data=bond_data, + use_bond_info=use_bond_info, + cov_factor=cov_factor, + metal_factor=metal_factor, + count_species_only=True, + ) + if numspecs != 1: + continue + + blocklist = split_species( + labels=merged_labels, + positions=merged_coord, + atom_site_labels=merged_atom_site_labels, + bond_data=bond_data, + use_bond_info=use_bond_info, + cov_factor=cov_factor, + metal_factor=metal_factor, + ) + + if not blocklist or len(blocklist) != 1: + continue + + # --- successful merge --- + merged = Molecule.from_positional(merged_labels, merged_coord, merged_fracs) + merged.set_subtype("fragment") + merged.set_origin("_merge_fragment_pair") + merged.add_parent(refcell, indices=merged_ref_indices) + + merged.ref_indices = merged_ref_indices + merged.cell_indices = merged_cell_indices + + merged.set_adjacency_parameters(cov_factor, metal_factor) + merged.set_element_count() + merged.get_centroid() + merged.set_atoms( + create_adjacencies=True, + atom_site_labels=merged_atom_site_labels, + use_bond_info=use_bond_info, + ) + return merged + + return None + + +def _group_fragments_by_reference(fragments, refmoleclist): + """Group fragments by reference molecule""" + fragments_by_ref = [[] for _ in range(len(refmoleclist))] + + for ref_idx, ref in enumerate(refmoleclist): + target_indices = set(ref.get_parent_indices("reference")) + + for frag_idx, frag in enumerate(fragments): + frag_indices = set(frag.ref_indices) + + if frag_indices.issubset(target_indices): + fragments_by_ref[ref_idx].append(frag) + logger.debug( + "Fragment %d (%s) is a subset of reference %d (%s)", + frag_idx, + frag.formula, + ref_idx, + ref.formula, + ) + # Debug summary + for ref_idx, (ref, frag_list) in enumerate(zip(refmoleclist, fragments_by_ref)): + logger.debug("Reference %d: %s", ref_idx, ref.formula) + logger.debug("Assigned fragments: %s", [frag.formula for frag in frag_list]) + + return fragments_by_ref diff --git a/cell2mol/coordination_sphere.py b/cell2mol/coordination_sphere.py index 56b32f700..10e76b51b 100644 --- a/cell2mol/coordination_sphere.py +++ b/cell2mol/coordination_sphere.py @@ -1,540 +1,715 @@ +#!/usr/bin/env python +######################################################## +# Third-party data and code included in this file: +# +# 1) Reference data (MIT License) +# Reference shape data adapted from work by +# Pere Alemany, Efrem Bernuz, Abel Carreras, and Miquel Llunell +# Copyright (c) 2021 Pere Alemany, Efrem Bernuz, +# Abel Carreras and Miquel Llunell +# https://github.com/GrupEstructuraElectronicaSimetria/cosymlib +# +# 2) Code (BSD 3-Clause License) +# Portions of code to calculate CShM adapted from: +# https://github.com/radi0sus/cshm-cc/blob/main/cshm-cc.py +# Original author: +# Sebastian Dechert +# Copyright (c) 2025, Sebastian Dechert +# +# Licenses: +# - MIT License +# - BSD 3-Clause License +# +# Modifications: +# - integrated into cell2mol +######################################################## + import numpy as np import os +from cell2mol import __file__ import yaml -from cosymlib import Geometry -from cell2mol.other import * -from cell2mol.connectivity import add_atom, get_adjmatrix, get_adjmatrix_from_cif_bonds +from cell2mol.element_utils import labels2formula +from cell2mol.operations import compute_centroid +from cell2mol.connectivity import ( + is_single_ring, + add_atom, + identify_haptic_mode, +) from cell2mol.elementdata import ElementData +from scipy.optimize import linear_sum_assignment # Hungarian algorithm +from scipy.stats import special_ortho_group +from scipy.linalg import svd +from cell2mol.utils import config + +import logging + +logger = logging.getLogger(__name__) elemdatabase = ElementData() -####################################################### -# global ideal_structures -# file_path = os.path.dirname(os.path.abspath(__file__)) + '/ideal_structures_center.yaml' -# with open(file_path, 'r') as stream:c -# ideal_structures = yaml.safe_load(stream) -####################################################### -### Define coordination geometry from groups ### -####################################################### -def define_coordination_geometry (metal: object, coord_group: list, debug: int=0) -> object: - +# Load YAML filem +path = os.path.join( + os.path.abspath(os.path.dirname(__file__)), "ideal_structures_center.yaml" +) +with open(path, "r") as file: + data = yaml.safe_load(file) +ideal_shapes_from_cosymlib = {key: np.array(value) for key, value in data.items()} + + +shape_structure_references_simplified = { + "2 Vertices": [ + ["L-2", 1, "Dinfh", "Linear"], + ["vT-2", 2, "C2v", "Bent (V-shape, 109.47°)"], + ["vOC-2", 3, "C2v", "Bent (L-shape, 90°)"], + ], + "3 Vertices": [ + ["TP-3", 1, "D3h", "Trigonal planar"], + ["fvOC-3", 3, "C3v", "fac-Trivacant octahedron"], + ["mvOC-3", 4, "C2v", "T-shaped"], + ], + "4 Vertices": [ + ["T-4", 2, "Td", "Tetrahedral"], + ["SP-4", 1, "D4h", "Square planar"], + ["SS-4", 3, "C2v", "Seesaw"], + ], + "5 Vertices": [ + ["PP-5", 1, "D5h", "Pentagon"], + ["TBPY-5", 3, "D3h", "Trigonal bipyramidal"], + ["SPY-5", 4, "C4v", "Square pyramidal"], + ], + "6 Vertices": [ + ["HP-6", 1, "D6h", "Hexagon"], + ["PPY-6", 2, "C5v", "Pentagonal pyramidal"], + ["OC-6", 3, "Oh", "Octahedral"], + ["TPR-6", 4, "D3h", "Trigonal prismatic"], + ], + "7 Vertices": [ + ["HP-7", 1, "D7h", "Heptagon"], + ["HPY-7", 2, "C6v", "Hexagonal pyramidal"], + ["PBPY-7", 3, "D5h", "Pentagonal bipyramidal"], + ["CTPR-7", 5, "C2v", "Capped trigonal prismatic"], + ], + "8 Vertices": [ + ["OP-8", 1, "D8h", "Octagon"], + ["HPY-8", 2, "C7v", "Heptagonal pyramidal"], + ["HBPY-8", 3, "D6h", "Hexagonal bipyramidal"], + ["CU-8", 4, "Oh", "Cube"], + ["SAPR-8", 5, "D4d", "Square antiprismatic"], + ["TDD-8", 6, "D2d", "Dodecahedral"], + ], + "9 Vertices": [ + ["EP-9", 1, "D9h", "Enneagon"], + ["OPY-9", 2, "C8v", "Octagonal pyramid"], + ["HBPY-9", 3, "D7h", "Heptagonal bipyramid"], + ["JTC-9", 4, "C3v", "Johnson triangular cupola J3"], + ["JCCU-9", 5, "C4v", "Capped cube J8"], + ["CCU-9", 6, "C4v", "Spherical-relaxed capped cube"], + ["JCSAPR-9", 7, "C4v", "Capped square antiprism J10"], + ["CSAPR-9", 8, "C4v", "Spherical capped square antiprism"], + ["JTCTPR-9", 9, "D3h", "Tricapped trigonal prism J51"], + ["TCTPR-9", 10, "D3h", "Spherical tricapped trigonal prism"], + ["JTDIC-9", 11, "C3v", "Tridiminished icosahedron J63"], + ["HH-9", 12, "C2v", "Hula-hoop"], + ["MFF-9", 13, "Cs", "Muffin"], + ], + "10 Vertices": [ + ["DP-10", 1, "D10h", "Decagon"], + ["EPY-10", 2, "C9v", "Enneagonal pyramid"], + ["OBPY-10", 3, "D8h", "Octagonal bipyramid"], + ["PPR-10", 4, "D5h", "Pentagonal prism"], + ["PAPR-10", 5, "D5d", "Pentagonal antiprism"], + ["JBCCU-10", 6, "D4h", "Bicapped cube J15"], + ["JBCSAPR-10", 7, "D4d", "Bicapped square antiprism J17"], + ["JMBIC-10", 8, "C2v", "Metabidiminished icosahedron J62"], + ["JATDI-10", 9, "C3v", "Augmented tridiminished icosahedron J64"], + ["JSPC-10", 10, "C2v", "Sphenocorona J87"], + ["SDD-10", 11, "D2", "Staggered Dodecahedron (2:6:2)"], + ["TD-10", 12, "C2v", "Tetradecahedron (2:6:2)"], + ["HD-10", 13, "D4h", "Hexadecahedron (2:6:2) or (1:4:4:1)"], + ], + "11 Vertices": [ + ["HP-11", 1, "D11h", "Hendecagon"], + ["DPY-11", 2, "C10v", "Decagonal pyramid"], + ["EBPY-11", 3, "D9h", "Enneagonal bipyramid"], + ["JCPPR-11", 4, "C5v", "Capped pentagonal prism J9"], + ["JCPAPR-11", 5, "C5v", "Capped pentagonal antiprism J11"], + ["JAPPR-11", 6, "C2v", "Augmented pentagonal prism J52"], + ["JASPC-11", 7, "Cs", "Augmented sphenocorona J87"], + ], + "12 Vertices": [ + ["DP-12", 1, "D12h", "Dodecagon"], + ["HPY-12", 2, "C11v", "Hendecagonal pyramid"], + ["DBPY-12", 3, "D10h", "Decagonal bipyramid"], + ["HPR-12", 4, "D6h", "Hexagonal prism"], + ["HAPR-12", 5, "D6d", "Hexagonal antiprism"], + ["TT-12", 6, "Td", "Truncated tetrahedron"], + ["COC-12", 7, "Oh", "Cuboctahedron"], + ["ACOC-12", 8, "D3h", "Anticuboctahedron J27"], + ["IC-12", 9, "Ih", "Icosahedron"], + ["JSC-12", 10, "C4v", "Johnson square cupola J4"], + ["JEPBPY-12", 11, "D6h", "Johnson elongated pentagonal bipyramid J16"], + ["JBAPPR-12", 12, "C2v", "Biaugmented pentagonal prism J53"], + ["JSPMC-12", 13, "Cs", "Sphenomegacorona J88"], + ], + "20 Vertices": [["DD-20", 1, "Ih", "Dodecahedron"]], + "24 Vertices": [ + ["TCU-24", 1, "Oh", "Truncated cube"], + ["TOC-24", 2, "Oh", "Truncated octahedron"], + ], + "48 Vertices": [["TCOC-48", 1, "Oh", "Truncated cuboctahedron"]], + "60 Vertices": [["TRIC-60", 1, "Ih", "Truncated icosahedron (fullerene)"]], +} + + +def define_coordination_geometry(metal: object, coord_group: list) -> object: + """Define the coordination geometry of a metal center based on its coordinating groups""" + symbols = [] positions = [] coord_haptic_type = [] - symbols.append(metal.label) positions.append(metal.coord) - if debug >= 2 : print(f"METAL.DEFINE_coordination_geometry: {metal.label} {metal.coord}") - if debug >= 1 :print(f"METAL.DEFINE_coordination_geometry: coord_group formula {[group.formula for group in coord_group]}") - if debug >= 1 :print(f"METAL.DEFINE_coordination_geometry: coord_group hapticity {[group.is_haptic if group.subtype != 'metal' else False for group in coord_group]}") - if debug >= 1 :print(f"METAL.DEFINE_coordination_geometry: coord_group atoms{[[a.label for a in group.atoms] if group.subtype != 'metal' else [group.label] for group in coord_group]}") + + logger.debug("coord_group formula %s", [group.formula for group in coord_group]) + logger.debug( + "coord_group hapticity %s", + [ + group.is_haptic if group.subtype != "metal" else False + for group in coord_group + ], + ) + logger.debug( + "coord_group atoms %s", + [ + [a.label for a in group.atoms] + if group.subtype != "metal" + else [group.label] + for group in coord_group + ], + ) count = 0 for group in coord_group: - if group.subtype == 'metal': + if group.subtype == "metal": symbols.append(group.label) positions.append(group.coord) - count += 1 - elif group.is_haptic == False: + count += 1 + elif not group.is_haptic: for atom in group.atoms: symbols.append(atom.label) positions.append(atom.coord) count += 1 - if debug >= 2 : print("METAL.DEFINE_coordination_geometry:", atom.label, atom.coord) - else : - if debug >= 2 : print(f"METAL.DEFINE_coordination_geometry: {group.haptic_type=}") - #if debug >= 2 : print(f"METAL.DEFINE_coordination_geometry: {[atom.coord for atom in group.atoms]}") - haptic_center_coord = compute_centroid(np.array([atom.coord for atom in group.atoms])) + + else: + # haptic ligand + haptic_center_coord = compute_centroid( + np.array([atom.coord for atom in group.atoms]) + ) symbols.append(str(group.haptic_type)) - positions.append(list(haptic_center_coord)) - count += 1 - if debug >= 2 : print(f"mid point of {group.haptic_type=}", haptic_center_coord) - coord_haptic_type.append(group.haptic_type) + positions.append(haptic_center_coord.tolist()) + count += 1 + coord_haptic_type.append(group.haptic_type) - posgeom_dev = shape_measure(symbols, positions, debug=debug) + posgeom_dev = shape_measure(symbols, positions) coord_nr = count if len(posgeom_dev) > 0: - coordination_geometry=min(posgeom_dev, key=posgeom_dev.get) - geom_deviation=min(posgeom_dev.values()) - else : + coordination_geometry = min(posgeom_dev, key=posgeom_dev.get) + geom_deviation = min(posgeom_dev.values()) + else: coordination_geometry = "Undefined" geom_deviation = "Undefined" - if debug >= 2 : - # for haptic ligands, it's the mid point of haptic ligands - print(f"METAL.DEFINE_coordination_geometry: The number of coordinating points: {coord_nr}") - print(f"METAL.DEFINE_coordination_geometry: {posgeom_dev}") - print(f"METAL.DEFINE_coordination_geometry: The type of hapticity : {coord_haptic_type}") - - if debug >= 1 : - print(f"METAL.DEFINE_coordination_geometry: The most likely geometry is '{coordination_geometry}' with deviation value {geom_deviation}") + # for haptic ligands, it's the mid point of haptic ligands + logger.info("The number of coordinating points: %s", coord_nr) + logger.info("Possible coordination geometries: %s", posgeom_dev) + logger.info("The type of hapticity : %s", coord_haptic_type) + logger.info( + "The most likely geometry is '%s' with deviation value %s", + coordination_geometry, + geom_deviation, + ) # return coordination_geometry return coord_nr, coordination_geometry, geom_deviation -####################################################### -def shape_measure (symbols: list, positions: list, debug: int=0) -> dict: - # Get shape measure of a set of coordinates - - if debug >= 2:print(f"SHAPE_MEASURE: {symbols=}") - if debug >= 2:print(f"SHAPE_MEASURE: {positions=}") - - cn = len(symbols)-1 # coordination number of metal center - - connectivity= [[1, i] for i in range(2, cn+2)] - if debug >= 2: print(f"SHAPE_MEASURE: coordination number of metal center {cn}") - if debug >= 2: print(f"SHAPE_MEASURE: connectivity of metal center(1) {connectivity}") - geometry = Geometry(positions=positions, - symbols=symbols, - connectivity=connectivity) - - if cn == 0 : - posgeom_dev = {} - elif cn == 1 : - posgeom_dev = {'Linear' : 0.0} - else : - posgeom_dev={} - try : - ref_geom = np.array(shape_structure_references_simplified['{} Vertices'.format(cn)]) - for idx, rg in enumerate(ref_geom[:,0]): - shp_measure = geometry.get_shape_measure(rg, central_atom=1) - geom = ref_geom[:,3][idx] - posgeom_dev[geom]=round(shp_measure, 3) - except: - print(f"SHAPE_MEASURE: {cn} Vertices not found in shape_structure_references") +def shape_measure(symbols: list, positions: list) -> dict: + """ + Calculate shape measures for a coordination environment. + + Args: + symbols (list): + Atomic symbols including the metal atom (used to determine CN). + positions (list): + Cartesian coordinates of atoms. + + Returns: + dict: + Mapping of ideal geometry name to continuous shape measure (CSM). + """ + # Coordination number (excluding metal atom) + cn = len(symbols) - 1 + + if cn <= 0: + return {} + if cn == 1: + return {"Linear": 0.0} + try: + ref_geom = np.array( + shape_structure_references_simplified[f"{cn} Vertices"], + dtype=object, + ) + except KeyError: + logger.warning( + "%d-vertex reference geometry not found in shape_structure_references", + cn, + ) + return {} + + posgeom_dev = {} + for rg, _, _, geom in ref_geom: + ideal_shape = ideal_shapes_from_cosymlib.get(rg) + if ideal_shape is None: + continue + + cshm = calc_cshm_fast(positions, ideal_shape) + posgeom_dev[geom] = round(float(cshm), 3) return posgeom_dev -####################################################### -shape_structure_references_simplified = {'2 Vertices': [['L-2', 1, 'Dinfh', 'Linear'], - ['vT-2', 2, 'C2v', 'Bent (V-shape, 109.47°)'], - ['vOC-2', 3, 'C2v', 'Bent (L-shape, 90°)']], - - '3 Vertices': [['TP-3', 1, 'D3h', 'Trigonal planar'], - ['fvOC-3', 3, 'C3v', 'fac-Trivacant octahedron'], - ['mvOC-3', 4, 'C2v', 'T-shaped']], - - '4 Vertices': [['T-4', 2, 'Td', 'Tetrahedral'], - ['SP-4', 1, 'D4h', 'Square planar'], - ['SS-4', 3, 'C2v', 'Seesaw']], - - '5 Vertices': [['PP-5', 1, 'D5h', 'Pentagon'], - ['TBPY-5', 3, 'D3h', 'Trigonal bipyramidal'], - ['SPY-5', 4, 'C4v', 'Square pyramidal']], - - '6 Vertices': [['HP-6', 1, 'D6h', 'Hexagon'], - ['PPY-6', 2, 'C5v', 'Pentagonal pyramidal'], - ['OC-6', 3, 'Oh', 'Octahedral'], - ['TPR-6', 4, 'D3h', 'Trigonal prismatic']], - - '7 Vertices': [['HP-7', 1, 'D7h', 'Heptagon'], - ['HPY-7', 2, 'C6v', 'Hexagonal pyramidal'], - ['PBPY-7', 3, 'D5h', 'Pentagonal bipyramidal'], - ['CTPR-7', 5, 'C2v', 'Capped trigonal prismatic']], - - '8 Vertices': [['OP-8', 1, 'D8h', 'Octagon'], - ['HPY-8', 2, 'C7v', 'Heptagonal pyramidal'], - ['HBPY-8', 3, 'D6h', 'Hexagonal bipyramidal'], - ['CU-8', 4, 'Oh', 'Cube'], - ['SAPR-8', 5, 'D4d', 'Square antiprismatic'], - ['TDD-8', 6, 'D2d', 'Dodecahedral']], - - '9 Vertices': [['EP-9', 1, 'D9h', 'Enneagon'], - ['OPY-9', 2, 'C8v', 'Octagonal pyramid'], - ['HBPY-9', 3, 'D7h', 'Heptagonal bipyramid'], - ['JTC-9', 4, 'C3v', 'Johnson triangular cupola J3'], - ['JCCU-9', 5, 'C4v', 'Capped cube J8'], - ['CCU-9', 6, 'C4v', 'Spherical-relaxed capped cube'], - ['JCSAPR-9', 7, 'C4v', 'Capped square antiprism J10'], - ['CSAPR-9', 8, 'C4v', 'Spherical capped square antiprism'], - ['JTCTPR-9', 9, 'D3h', 'Tricapped trigonal prism J51'], - ['TCTPR-9', 10, 'D3h', 'Spherical tricapped trigonal prism'], - ['JTDIC-9', 11, 'C3v', 'Tridiminished icosahedron J63'], - ['HH-9', 12, 'C2v', 'Hula-hoop'], - ['MFF-9', 13, 'Cs', 'Muffin']], - - '10 Vertices': [['DP-10', 1, 'D10h', 'Decagon'], - ['EPY-10', 2, 'C9v', 'Enneagonal pyramid'], - ['OBPY-10', 3, 'D8h', 'Octagonal bipyramid'], - ['PPR-10', 4, 'D5h', 'Pentagonal prism'], - ['PAPR-10', 5, 'D5d', 'Pentagonal antiprism'], - ['JBCCU-10', 6, 'D4h', 'Bicapped cube J15'], - ['JBCSAPR-10', 7, 'D4d', 'Bicapped square antiprism J17'], - ['JMBIC-10', 8, 'C2v', 'Metabidiminished icosahedron J62'], - ['JATDI-10', 9, 'C3v', 'Augmented tridiminished icosahedron J64'], - ['JSPC-10', 10, 'C2v', 'Sphenocorona J87'], - ['SDD-10', 11, 'D2', 'Staggered Dodecahedron (2:6:2)'], - ['TD-10', 12, 'C2v', 'Tetradecahedron (2:6:2)'], - ['HD-10', 13, 'D4h', 'Hexadecahedron (2:6:2) or (1:4:4:1)']], - '11 Vertices': [['HP-11', 1, 'D11h', 'Hendecagon'], - ['DPY-11', 2, 'C10v', 'Decagonal pyramid'], - ['EBPY-11', 3, 'D9h', 'Enneagonal bipyramid'], - ['JCPPR-11', 4, 'C5v', 'Capped pentagonal prism J9'], - ['JCPAPR-11', 5, 'C5v', 'Capped pentagonal antiprism J11'], - ['JAPPR-11', 6, 'C2v', 'Augmented pentagonal prism J52'], - ['JASPC-11', 7, 'Cs', 'Augmented sphenocorona J87']], - '12 Vertices': [['DP-12', 1, 'D12h', 'Dodecagon'], - ['HPY-12', 2, 'C11v', 'Hendecagonal pyramid'], - ['DBPY-12', 3, 'D10h', 'Decagonal bipyramid'], - ['HPR-12', 4, 'D6h', 'Hexagonal prism'], - ['HAPR-12', 5, 'D6d', 'Hexagonal antiprism'], - ['TT-12', 6, 'Td', 'Truncated tetrahedron'], - ['COC-12', 7, 'Oh', 'Cuboctahedron'], - ['ACOC-12', 8, 'D3h', 'Anticuboctahedron J27'], - ['IC-12', 9, 'Ih', 'Icosahedron'], - ['JSC-12', 10, 'C4v', 'Johnson square cupola J4'], - ['JEPBPY-12', 11, 'D6h', 'Johnson elongated pentagonal bipyramid J16'], - ['JBAPPR-12', 12, 'C2v', 'Biaugmented pentagonal prism J53'], - ['JSPMC-12', 13, 'Cs', 'Sphenomegacorona J88']], - '20 Vertices': [['DD-20', 1, 'Ih', 'Dodecahedron']], - '24 Vertices': [['TCU-24', 1, 'Oh', 'Truncated cube'], - ['TOC-24', 2, 'Oh', 'Truncated octahedron']], - '48 Vertices': [['TCOC-48', 1, 'Oh', 'Truncated cuboctahedron']], - '60 Vertices': [['TRIC-60', 1, 'Ih', 'Truncated icosahedron (fullerene)']]} - - -####################################################### -### Make corrcetion for coordination sphere ### -####################################################### -covalent_factor_for_metal_v2 = { - 'H': 1.19, - 'D': 1.19, - 'He': 1.68, - 'Li': 0.99, - 'Be': 0.95, - 'B': 1.1, - 'C': 1.22, - 'N': 1.19, - 'O': 1.21, - 'F': 1.14, - 'Ne': 1.56, - 'Na': 0.88, - 'Mg': 1.04, - 'Al': 1.32, - 'Si': 1.06, - 'P': 1.14, - 'S': 1.19, - 'Cl': 1.19, - 'Ar': 1.5, - 'K': 0.79, - 'Ca': 0.97, - 'Sc': 1.3, - 'Ti': 1.3, - 'V': 1.3, - 'Cr': 1.3, - 'Mn': 1.3, - 'Fe': 1.3, - 'Co': 1.3, - 'Ni': 1.3, - 'Cu': 1.3, - 'Zn': 1.3, - 'Ga': 1.26, - 'Ge': 1.24, - 'As': 1.12, - 'Se': 1.12, - 'Br': 1.21, - 'Kr': 1.6, - 'Rb': 1.02, - 'Sr': 0.97, - 'Y': 1.3, - 'Zr': 1.3, - 'Nb': 1.3, - 'Mo': 1.3, - 'Tc': 1.3, - 'Ru': 1.3, - 'Rh': 1.3, - 'Pd': 1.3, - 'Ag': 1.3, - 'Cd': 1.3, - 'In': 1.35, - 'Sn': 1.29, - 'Sb': 1.04, - 'Te': 1.06, - 'I': 1.21, - 'Xe': 1.51, - 'Cs': 1.03, - 'Ba': 0.99, - 'La': 1.3, - 'Ce': 1.3, - 'Pr': 1.3, - 'Nd': 1.3, - 'Pm': 1.3, - 'Sm': 1.3, - 'Eu': 1.3, - 'Gd': 1.3, - 'Tb': 1.3, - 'Dy': 1.3, - 'Ho': 1.3, - 'Er': 1.3, - 'Tm': 1.3, - 'Yb': 1.3, - 'Lu': 1.3, - 'Hf': 1.3, - 'Ta': 1.3, - 'W': 1.3, - 'Re': 1.3, - 'Os': 1.3, - 'Ir': 1.3, - 'Pt': 1.3, - 'Au': 1.3, - 'Hg': 1.3, - 'Tl': 1.3, - 'Pb': 1.29, - 'Bi': 1.28, - 'Po': 1.38, - 'At': 1.34, - 'Rn': 1.63, - 'Fr': 1.09, - 'Ra': 1.16, - 'Ac': 1.3, - 'Th': 1.3, - 'Pa': 1.3, - 'U': 1.3, - 'Np': 1.3, - 'Pu': 1.3, - 'Am': 1.3, - 'Cm': 1.3, - 'Bk': 1.3, - 'Cf': 1.3, - 'Es': 1.3, - 'Fm': 1.3, - 'Md': 1.3, - 'No': 1.3, - 'Lr': 1.3, - 'Rf': 1.3, - 'Db': 1.3, - 'Sg': 1.3, - 'Bh': 1.3, - 'Hs': 1.3, - 'Mt': 1.3 -} -####################################################### -def get_thres_from_two_atoms(label_i, label_j, factor=1.3, debug=0): - - radii_i = elemdatabase.CovalentRadius3[label_i] - radii_j = elemdatabase.CovalentRadius3[label_j] - - if ( - elemdatabase.elementblock[label_i] == "d" - or elemdatabase.elementblock[label_i] == "f" - or elemdatabase.elementblock[label_j] == "d" - or elemdatabase.elementblock[label_j] == "f" - ): - factor_i = covalent_factor_for_metal_v2 [label_i] - factor_j = covalent_factor_for_metal_v2 [label_j] - - if factor_i < factor_j : new_factor = factor_i - elif factor_i == factor_j : new_factor = factor_i - else : new_factor = factor_j - - thres = round( (radii_i + radii_j) * new_factor, 3) - # if debug >=2 : print(f"{label_i} : {radii_i} ({factor_i}), {label_j} : {radii_j} ({factor_j}), {new_factor=}, {thres=}") - else : - thres = round( (radii_i + radii_j) * factor , 3) - # if debug >=2 : print(f"{label_i} : {radii_i}, {label_j} : {radii_j}, {factor}, {thres=}") - - return thres - -####################################################### -def check_neighboring_atoms_mconnec (idx, group, metal, debug): - - atom = group.atoms[idx] - print(atom.label, atom.adjacency) - neighbors = [ group.get_parent("molecule").atoms[j] for j in atom.adjacency ] - nb_dist_from_metal = [ get_dist(nb.coord, metal.coord) for nb in neighbors] - - neighbors_mconnec =[] - for nb, dist in zip(neighbors, nb_dist_from_metal) : - thres = get_thres_from_two_atoms(metal.label, nb.label, debug=debug) - if dist > thres : pass - else : neighbors_mconnec.append(nb) - - if debug >= 2 : - print(f"CHECK NEIGHBORS: {atom.label} connected to {[nb.label for nb in neighbors]}") - print(f"CHECK NEIGHBORS: Among these neighbors, {[nb_m.label for nb_m in neighbors_mconnec]}") - - if len(neighbors_mconnec) >= 2 : - if debug >=1 : - print(f"CHECK NEIGHBORS:[Check] This coordinating atom {atom.label} connected to more than one coordinating atoms to the metal {metal.label}") - if set([nb_m.label for nb_m in neighbors_mconnec]) == set(["H"]) : - isremoved = False - else : - isremoved = True - if debug >=1 : print("CHECK NEIGHBORS: !!! Wrong metal-coordination assignment for Atom", idx, atom.label, get_dist(atom.coord, metal.coord), "due to neighboring atoms") - - elif len(neighbors_mconnec) == 1 : - nb_m = neighbors_mconnec[0] - if debug >=1 : print(f"CHECK NEIGHBORS: [Check] This coordinating atom {atom.label} connected to another coordinating atom {nb_m.label} to the metal {metal.label}") - - if (atom.label == "H" and nb_m.label in ["B", "O", "N", "C"]) : - isremoved = True - if debug >=1 : print("CHECK NEIGHBORS: !!! Wrong metal-coordination assignment for Atom", idx, atom.label, get_dist(atom.coord, metal.coord), "due to H") - - elif (atom.label in ["B", "O", "N", "C"] and nb_m.label == "H") : - isremoved = False # H will be removed later - if debug >=1 : print("CHECK NEIGHBORS: metal-coordination assignment for Atom", idx, atom.label, get_dist(atom.coord, metal.coord), "connected to H which will be removed later") - - else : # Check angle between metal-coordinating atoms - vector1 = np.subtract(np.array(atom.coord), np.array(nb_m.coord)) - vector2 = np.subtract(np.array(atom.coord), np.array(metal.coord)) - angle = np.degrees(get_angle(vector1, vector2)) - if angle < 55 : - if debug >= 1 : print("CHECK NEIGHBORS: !!! Wrong metal-coordination assignment for Atom", idx, atom.label, get_dist(atom.coord, metal.coord), "due to the angle", round(angle,2)) - isremoved = True - else : - isremoved = False - else : - isremoved = False - if debug >=1 : print(f"CHECK NEIGHBORS: There is no neighbor atom connected to the metal {metal.label}") - - return isremoved - -####################################################### -def coordination_correction_for_nonhaptic(group: object, debug: int=0): - - if debug > 0: print("Entering COORD_CORR_NONHAPTIC:") - if not hasattr(group, "metals"): group.get_connected_metals() - if debug > 1: print(f"group: {[atom.label for atom in group.atoms]}") - # Pair each atom with its index in the original list - indexed_atoms = list(enumerate(group.atoms)) - - # Sort the indexed list of atoms, prioritizing hydrogen atoms - sorted_indexed_atoms = sorted(indexed_atoms, key=lambda x: (x[1].label != "H", x[1].label)) - - # Extract the sorted atoms and their original indices into separate lists - sorted_atoms = [atom[1] for atom in sorted_indexed_atoms] - original_indices = [atom[0] for atom in sorted_indexed_atoms] - - ## First Correction (former verify_connectivity) - conn_idx = [] - conn_idx_by_metal = {met: [] for met in group.metals} - final_ligand_indices = [] - good_atoms = [] - removed_idx = [] - for idx, atom in zip(original_indices, sorted_atoms): - if debug > 0: print(f"\tCoordinating atom label={atom.label} with mconnec={atom.mconnec}, original group index {idx}") - isremoved = False - ## Now there is an extra loop for each metal of the group. For bridging ligands - #print(f"\t{[met in for met in group.metals]=}") - for jdx, met in enumerate(group.metals): - if isremoved: continue - lig = group.get_parent("ligand") - ligand_idx = atom.get_parent_index("ligand") - if debug > 0: print(f"\tevaluating coordination with metal {met.label}") - if debug > 2: print(f"\n{met}") - - tmplabels = [atom.label, met.label] - tmpcoord = [atom.coord, met.coord] - - refcell = atom.get_parent("reference") - if hasattr(atom, "atom_site_label") and hasattr(met, "atom_site_label"): - atom_site_labels = [atom.atom_site_label, met.atom_site_label] - else : - atom_site_labels = None - if refcell is not None and getattr(refcell, "exist_cif_bond_moiety", False): - isconnected, tmpadjmat, tmpadjnum = get_adjmatrix_from_cif_bonds(tmplabels, tmpcoord, atom_site_labels, refcell.geom_bond_cif, metal_only=True) - else: - isconnected, tmpadjmat, tmpadjnum = get_adjmatrix(tmplabels, tmpcoord, metal_only=True) - - if isconnected and any(tmpadjnum) > 0: - if debug > 0 : - print(f"\tAtom {atom.label} is connected to metal {met.label} (atom {ligand_idx=}) (metal group.metals index {jdx=})") - - if refcell is not None and getattr(refcell, "exist_cif_bond_moiety", False): - isadded = True - if debug > 0: print(f"\tConnectivity verified for atom {atom.label} with ligand index {ligand_idx} based on CIF bonds") - else: - isadded, newlab, newcoord = add_atom(lig.labels, lig.coord, ligand_idx, lig, list([met]), "H", removed_idx, debug=debug) - if debug >= 2:print(f"{removed_idx=}") - - if isadded: - if debug > 0: print(f"\tConnectivity verified for atom {atom.label} with ligand index {ligand_idx}") - conn_idx.append(idx) - final_ligand_indices.append(atom.get_parent_index("ligand")) - good_atoms.append(atom) - conn_idx_by_metal[met].append(idx) - else: - if debug > 0: print(f"\tCORRECT mconnec of atom {atom.label} with ligand index {ligand_idx}") - isremoved = True - removed_idx.append(ligand_idx) - ### Reset Connectivity of the atom and the parents - atom.reset_mconnec(met, debug=debug) - met.get_coord_sphere() - met.get_coord_sphere_formula() + +# def normalize_structure(coordinates): +# # center and normalize the structure for CShM calculations +# centered_coords = coordinates - np.mean(coordinates, axis=0) +# norm = np.sqrt(np.mean(np.sum(centered_coords**2, axis=1))) +# return centered_coords / norm + + +def normalize_structure(coordinates): + """ + Center and normalize the structure for CShM calculations + """ + if len(coordinates) == 0: + logger.warning("normalize_structure: empty coordinates") + return coordinates # return as is + + centered_coords = coordinates - np.mean(coordinates, axis=0) + + sq = np.sum(centered_coords**2, axis=1) + if sq.size == 0: + logger.warning("normalize_structure: no atoms after centering") + return centered_coords + + norm = np.sqrt(np.mean(sq)) + + if norm == 0: + logger.warning("normalize_structure: zero norm (all atoms coincident)") + return centered_coords + + return centered_coords / norm + + +def calc_cshm_fast(coordinates, ideal_shape, num_trials=100): + # faster Hungarian algorithm optimization + # check number of trials, if it is too low, it calculates the + # local and not the global minimum + input_structure = normalize_structure(coordinates) + ideal_sq_norms = np.sum(ideal_shape**2) + # try different rotations first, then optimize assignment + min_cshm = float("inf") + + # generate some initial rotations to avoid local minima + for trial in range(num_trials): + if trial == 0: + # first trial with identity rotation + R_init = np.eye(3) + else: + # random rotation matrix for subsequent trials + # generate a random rotation matrix + + R_init = special_ortho_group.rvs(3) + + # Ensure it's a proper rotation (det=1) + if np.linalg.det(R_init) < 0: + R_init[:, 0] *= -1 + + # apply initial rotation to ideal shape + rotated_ideal_init = np.dot(ideal_shape, R_init) + + # compute cost matrix based on squared Euclidean distances + cost_matrix = np.linalg.norm( + input_structure[:, None, :] - rotated_ideal_init[None, :, :], axis=2 + ) + + # solve assignment problem (Hungarian algorithm) + row_ind, col_ind = linear_sum_assignment(cost_matrix) + + # rearrange ideal_shape based on optimal assignment + permuted_ideal = ideal_shape[col_ind] + + # compute optimal rotation using SVD + H = np.dot(input_structure.T, permuted_ideal) + U, _, Vt = svd(H) + R = np.dot(Vt.T, U.T) + + rotated_ideal = np.dot(permuted_ideal, R) + scale = np.sum(input_structure * rotated_ideal) / ideal_sq_norms + if input_structure.size == 0: + logger.warning("calc_cshm_fast: empty input_structure") + cshm = float("inf") + else: + cshm = np.mean( + np.sum((input_structure - scale * rotated_ideal) ** 2, axis=1) + ) + + min_cshm = min(min_cshm, cshm) + + return min_cshm * 100 + + +def handle_metal_coordination(metal: object) -> list: + """ + Determines the coordination environment of a metal center. + + Process: + 1. Identify which non-metal atoms are coordinating to the metal. + 2. Map these atoms back to their parent ligands. + 3. Refine the coordination sphere (validate connectivity and resolve hapticity). + 4. Instantiate and return Group objects representing the coordination blocks. + + Returns: + List[Group]: A list of validated coordination Group objects. + """ + from cell2mol.classes.group import Group + + # Format metal info for consistent logging + metal_info = ( + f"{metal.label}{f' ({metal.atom_site_label})' if metal.atom_site_label else ''}" + ) + + # Ensure the metal has its connected atoms list initialized + if getattr(metal, "connected_nonmetal_atoms", None) is not None: + metal.get_connected_nonmetal_atoms() + + if not metal.connected_nonmetal_atoms: + logger.info(f"No coordinating non-metal atoms found for metal {metal_info}") + return [] + + mol = metal.get_parent("molecule") + ligands = mol.ligands + + if not ligands: + logger.info(f"No ligands found for molecule {mol.formula}") + return [] + + # Initialize a mapping of ligand indices to their coordinating atom indices + conn_idx_by_ligands = {lig_idx: [] for lig_idx, _ in enumerate(ligands)} + + # Map the molecule-wide index of each atom in each ligand for fast lookup + lig_mol_indices = { + lig_idx: [atom.get_parent_index("molecule") for atom in lig.atoms] + for lig_idx, lig in enumerate(ligands) + } + + # Group the metal's connected atoms by the ligand they belong to + for atom in metal.connected_nonmetal_atoms: + atom_mol_idx = atom.get_parent_index("molecule") + for lig_idx, indices in lig_mol_indices.items(): + if atom_mol_idx in indices: + conn_idx_by_ligands[lig_idx].append(atom_mol_idx) + # detailed logging + atom_info = f"{atom.label}{f' ({atom.atom_site_label})' if atom.atom_site_label else ''}" + logger.debug( + "Atom %s (mol_idx %d) is part of ligand %s (lig_idx %d) coordinating metal %s", + atom_info, + atom_mol_idx, + ligands[lig_idx].formula, + lig_idx, + metal_info, + ) + break + + logger.debug(f"Initial indices mapped by ligands: {conn_idx_by_ligands}") + + # Refine the coordination sphere: + # This validates geometry and re-evaluates hapticity if atoms are pruned. + final_refined_data = correct_coordination_sphere( + metal=metal, + ligands=ligands, + conn_idx_by_ligands=conn_idx_by_ligands, + mol=mol, + ) + + coordination_groups = [] + + # Iterate through refined results to create Group objects + for lig_idx, groups_list in final_refined_data.items(): + current_lig_m_indices = lig_mol_indices[lig_idx] + current_lig = ligands[lig_idx] + if getattr(current_lig, "metals", None) is None: + object.__setattr__(current_lig, "metals", []) + current_lig.metals.append(metal) + for group_info in groups_list: + atoms = group_info["atoms"] + + # 1. Create the Group instance from atom list + group_obj = Group.from_atom_list(atoms) + # 2. Set origin for traceability + group_obj.origin = "handle_metal_coordination" + + # 3. Analyze coordination mode + group_obj.get_hapticity() + group_obj.get_denticity() + + # 4. Map indices + group_mol_indices = [a.get_parent_index("molecule") for a in atoms] + group_ligand_indices = [ + current_lig_m_indices.index(m_idx) for m_idx in group_mol_indices + ] + # 5. Establish Parents + group_obj.add_parent(mol, indices=group_mol_indices) + group_obj.set_inherit_adjmatrix("molecule") + group_obj.add_parent(ligands[lig_idx], indices=group_ligand_indices) + + # 6. Link Metal (ensure list exists) + if getattr(group_obj, "metals", None) is None: + object.__setattr__(group_obj, "metals", []) + group_obj.metals.append(metal) + + coordination_groups.append(group_obj) + + # Detailed log of the final stabilized coordination mode + logger.info( + "Final Coordinated Group [%s]: Formula=%s, Haptic=%s, Type=%s", + metal_info, + group_info["formula"], + group_info["is_haptic"], + group_info["haptic_type"], + ) + + return coordination_groups + + +def correct_coordination_sphere( + metal: object, ligands: list, conn_idx_by_ligands: dict, mol: object +) -> dict: + """ + Refines the coordination sphere and returns the final stable groups. + Returns: {ligand_index: [list of validated haptic/non-haptic groups]} + """ + final_coordination_results = {} + + for jdx, connected_idx in conn_idx_by_ligands.items(): + current_pool = connected_idx + stable_groups = [] + logger.debug( + "Processing ligand %s (index %d) with initial connected indices: %s", + ligands[jdx].formula, + jdx, + current_pool, + ) + while True: + results = partition_connected_indices(current_pool, mol) + if not results: + break + + any_change_in_iteration = False + surviving_pool = [] + temp_stable_groups = [] + + for group in results.values(): + validated_gr_atoms, was_changed = validate_coordinated_atoms( + group["gr_atoms"], metal, ligands[jdx], haptic=group["is_haptic"] + ) + + surviving_pool.extend( + [a.get_parent_index("molecule") for a in validated_gr_atoms] + ) + + if was_changed: + any_change_in_iteration = True + + # Store the data of the group as it stands in this iteration + temp_stable_groups.append( + { + "formula": group["formula"], + "is_haptic": group["is_haptic"], + "haptic_type": group["haptic_type"], + "atoms": validated_gr_atoms, + "count": len(validated_gr_atoms), + } + ) + + if any_change_in_iteration: + current_pool = surviving_pool + continue else: - if debug > 0 : print(f"\tAtom {atom.label} is not connected to metal {met.label} (atom {ligand_idx=}) (metal group.metals index {jdx=})") - - - print(f"conn_idx before set: {conn_idx=}") - conn_idx = sorted(list(set(conn_idx))) - split_groups = [] - for metal, indices in conn_idx_by_metal.items(): - if indices: - print(f"metal {metal.label} connected to {[group.atoms[i].label for i in indices]}") - new_group = [i for i in indices] - split_groups.append(new_group) - print(f"conn_idx: {conn_idx=}") - print(f"split_groups: {split_groups=}") - final_group_indices = extract_final_indices(original_indices, split_groups) - print(f"final_group_indices: {final_group_indices=}") - return group, final_group_indices, final_ligand_indices - - - #return group, split_groups, final_ligand_indices - #return group, split_groups[0], final_ligand_indices - # return group, conn_idx, final_ligand_indices - -def extract_final_indices(initial_list, intermediate_list): - result = [] - seen = set() - - # Normalize flat list to nested list - if intermediate_list and isinstance(intermediate_list[0], int): - intermediate_list = [[i] for i in intermediate_list] - - for sublist in intermediate_list: - group = [] - for idx in sublist: - if idx not in seen: - group.append(initial_list[idx]) - seen.add(idx) - if group: - result.append(group) - - return result - -####################################################### -def coordination_correction_for_haptic (group: object, debug: int=0): - thres_std = 0.05 - thres_ratio = 0.95 - if debug > 0: print("Entering COORD_CORR_HAPTIC:") - ratio_list = [] - for idx, atom in enumerate(group.atoms): - metal = atom.get_closest_metal() - dist = get_dist(atom.coord, metal.coord) - thres = get_thres_from_two_atoms(metal.label, atom.label, debug=debug) - ratio_list.append(round(dist/thres,3)) - if debug >= 2 : - print(f"\tAtom {idx} :", atom.label, f"\tMetal :", metal.label, "\tdistance :", round(dist, 3), "\tthres :", thres) - - std_dev = round(np.std(ratio_list), 3) - if debug >= 2 : print(f"\t{ratio_list=} {std_dev=}") - - conn_idx = [] - final_ligand_indices = [] - for idx, (atom, ratio) in enumerate(zip(group.atoms, ratio_list)) : - if atom.label == "H" : - if debug >=1 : print(f"\t!!! Wrong metal-coordination assignment for Atom", idx, atom.label , get_dist(atom.coord, metal.coord), "due to H") - if debug >=1 : print(atom.label) - atom.reset_mconnec(metal, debug=debug) - # elif std_dev > thres_std and ratio > thres_ratio : - # if debug >=1 : print(f"\t!!! Wrong metal-coordination assignment for Atom", idx, atom.label , get_dist(atom.coord, metal.coord), "due to the long distance") - # if debug >=1 : print(atom.label) - # atom.reset_mconnec(metal, debug=debug) - else : - conn_idx.append(idx) - final_ligand_indices.append(atom.get_parent_index("ligand")) - - conn_idx = sorted(list(set(conn_idx))) - conn_idx = [conn_idx] - return group, conn_idx, final_ligand_indices -####################################################### \ No newline at end of file + # No changes means temp_stable_groups is now the final state + stable_groups = temp_stable_groups + break + + final_coordination_results[jdx] = stable_groups + + return final_coordination_results + + +def validate_coordinated_atoms(gr_atoms, metal, ligand, haptic, use_bond_info=None): + """ + Checks if atoms in gr_atoms are truly connected to the metal. + Returns: (list of surviving atoms, boolean changed_flag) + """ + if not gr_atoms: + return [], False + + # 1. Sort atoms by distance: Farthest atoms first to handle + sorted_gr_atoms = sorted( + gr_atoms, + key=lambda a: ( + a.label == "H", # Primary: H (True) comes before Non-H (False) + np.linalg.norm(metal.coord - a.coord), # Secondary: Furthest distance first + ), + reverse=True, + ) + # e.g. ABAZEK + + # 2. Detailed Debug Logging + logger.debug( + "Sorted coordinated atoms (farthest first): %s", + [a.label for a in sorted_gr_atoms], + ) + logger.debug( + "Sorted coordinated atom site labels: %s", + [a.atom_site_label for a in sorted_gr_atoms] + if sorted_gr_atoms and sorted_gr_atoms[0].atom_site_label + else None, + ) + logger.debug( + "Sorted coordinated atom distances: %s", + [ + float(np.round(np.linalg.norm(metal.coord - a.coord), 3)) + for a in sorted_gr_atoms + ], + ) + + # 3. Haptic Handling: Skip correction if haptic + if haptic: + logger.info("Haptic ligand detected; skipping connectivity validation.") + # Identify if the haptic group forms a single ring (e.g., Cp ring) + single_ring = is_single_ring(gr_atoms, use_bond_info=use_bond_info) + logger.debug("Is single ring: %s", single_ring) + + # Return original list and False (no changes made) + return gr_atoms, False + + # 4. Non-Haptic Correction (Pruning) Logic + removed_ligand_indices = [] + lig_mol_indices = { + a.get_parent_index("molecule"): i for i, a in enumerate(ligand.atoms) + } + + for atom in sorted_gr_atoms: + atom_mol_idx = atom.get_parent_index("molecule") + + if atom_mol_idx in lig_mol_indices: + is_added, _, _ = add_atom( + labels=ligand.labels, + coords=ligand.coord, + site=lig_mol_indices[atom_mol_idx], + ligand=ligand, + element="H", + removed_idx=removed_ligand_indices, + metal=metal, + ) + + if not is_added: + # --- EARLY RETURN LOGIC --- + logger.warning( + f"Atom {atom.label} ({atom.atom_site_label}) failed validation. Returning early to re-evaluate." + ) + + # Reset connectivity for the failed atom + atom.reset_mconnec(metal) + + # Filter gr_atoms to exclude only this specific failed atom + # All other atoms are still 'potentially' valid in the next iteration + updated_gr_atoms = [ + a + for a in gr_atoms + if a.get_parent_index("molecule") != atom_mol_idx + ] + + return updated_gr_atoms, True + + # If the loop finishes without hitting 'if not is_added', nothing was removed + return gr_atoms, False + + +def partition_connected_indices( + connected_idx, molecule, use_bond_info: bool | None = None +) -> list: + from cell2mol.operations import extract_from_list + from cell2mol.connectivity import split_species + + refcell = molecule.get_parent("reference") + bond_data = getattr(refcell, "geom_bond_cif", None) if refcell else None + cov_factor = getattr(molecule, "cov_factor", config.COV_FACTOR) + + if use_bond_info is None: + use_bond_info = config.USE_BOND_INFO + logger.debug(" Partitioning connected indices into blocks %s", connected_idx) + + if not connected_idx: + logger.debug(" No connected indices provided.") + return {} + + conn_labels = extract_from_list(connected_idx, molecule.labels, dimension=1) + conn_coord = extract_from_list(connected_idx, molecule.coord, dimension=1) + if molecule.frac_coord is not None: + conn_frac_coord = extract_from_list( + connected_idx, molecule.frac_coord, dimension=1 + ) + conn_radii = extract_from_list(connected_idx, molecule.radii, dimension=1) + conn_atoms = extract_from_list(connected_idx, molecule.atoms, dimension=1) + if molecule.atom_site_labels is not None: + conn_atom_site_labels = extract_from_list( + connected_idx, molecule.atom_site_labels, dimension=1 + ) + else: + conn_atom_site_labels = None + + blocklist = split_species( + labels=conn_labels, + positions=conn_coord, + radii=conn_radii, + indices=None, + atom_site_labels=conn_atom_site_labels, + bond_data=bond_data, + use_bond_info=use_bond_info, + cov_factor=cov_factor, + apply_graph=True, + ) + logger.debug(" Identified %s blocks from connected atoms", len(blocklist)) + logger.debug(" Blocks: %s", [block for block in blocklist]) + results = {} + for idx, block in enumerate(blocklist): + gr_atoms = extract_from_list(block, conn_atoms, dimension=1) + is_haptic, haptic_type, topology = identify_haptic_mode( + gr_atoms, use_bond_info=use_bond_info + ) + if is_haptic: + logger.debug( + " Block with atoms %s is haptic with type(s) %s", + [atom.label for atom in gr_atoms], + haptic_type, + ) + else: + logger.debug( + " Block with atoms %s is non-haptic", + [atom.label for atom in gr_atoms], + ) + results[idx] = { + "formula": labels2formula([atom.label for atom in gr_atoms]), + "is_haptic": is_haptic, + "haptic_type": haptic_type, + "gr_atoms": gr_atoms, + } + # logger.debug("Results for block %s: %s", idx, results[idx]) + return results diff --git a/cell2mol/element_utils.py b/cell2mol/element_utils.py new file mode 100644 index 000000000..7e1601a2f --- /dev/null +++ b/cell2mol/element_utils.py @@ -0,0 +1,198 @@ +import numpy as np +from cell2mol.elementdata import ElementData + +elemdatabase = ElementData() + +TRANSITION_METALS = { + "Sc", + "Ti", + "V", + "Cr", + "Mn", + "Fe", + "Co", + "Ni", + "Cu", + "Zn", + "Y", + "Zr", + "Nb", + "Mo", + "Tc", + "Ru", + "Rh", + "Pd", + "Ag", + "Cd", + "Hf", + "Ta", + "W", + "Re", + "Os", + "Ir", + "Pt", + "Au", + "Hg", +} + +ALKALI_METALS = {"Li", "Na", "K", "Rb", "Cs", "Fr"} + +ALKALINE_EARTH_METALS = {"Be", "Mg", "Ca", "Sr", "Ba", "Ra"} + +ALKALI_AND_ALKALINE_EARTH_METALS = ALKALI_METALS | ALKALINE_EARTH_METALS + +LANTHANIDES = { + "La", + "Ce", + "Pr", + "Nd", + "Pm", + "Sm", + "Eu", + "Gd", + "Tb", + "Dy", + "Ho", + "Er", + "Tm", + "Yb", + "Lu", +} + +ACTINIDES = { + "Ac", + "Th", + "Pa", + "U", + "Np", + "Pu", + "Am", + "Cm", + "Bk", + "Cf", + "Es", + "Fm", + "Md", + "No", + "Lr", +} + +POST_TRANSITION_METALS = {"Al", "Ga", "Ge", "In", "Sn", "Tl", "Pb", "Bi"} + +METALLOIDS = {"B", "Si", "Ge", "As", "Sb", "Te"} + +# TODO: update/add more haptic notations +HAPTIC_PRETTY = { + # eta2 + "eta2(C,C)": "η²-C,C", + # eta3 + "eta3(C,C,C)": "η³-C,C,C", + # eta4 + "eta4(C,C,C,C)": "η⁴-C₄", + "eta4(C,C,C,O)": "η⁴-C₃O", + # eta5 + "eta5(Cp)": "η⁵-Cp", + "eta5(C5)": "η⁵-C₅", + "eta5(As5)": "η⁵-As₅", + "eta5(P5)": "η⁵-P₅", + # eta6+ + "eta6(C6)": "η⁶-C₆", + "eta6(benzene)": "η⁶-benzene", + "eta7(C7)": "η⁷-C₇", + "eta7(CHT)": "η⁷-cycloheptatrienyl", + "eta8(C8)": "η⁸-C₈", + "eta8(COT)": "η⁸-cyclooctatetraenyl", + "eta5,5(Cp,Cp)": "η⁵,η⁵-Cp,Cp", +} + + +def labels2formula(labels: list): + elems = elemdatabase.elementnr.keys() + formula = [] + for z in elems: + nz = list(labels).count(z) + if nz > 1: + formula.append(f"{z}{nz}-") + if nz == 1: + formula.append(f"{z}-") + formula = "".join(formula)[:-1] + return formula + + +def labels2ratio(labels): + elems = elemdatabase.elementnr.keys() + ratio = [] + for z in elems: + nz = list(labels).count(z) + if nz > 0: + ratio.append(nz) + return ratio + + +def labels2electrons(labels): + if isinstance(labels, list): + eleccount = 0 + for label in labels: + eleccount += elemdatabase.elementnr[label] + elif isinstance(labels, str): + eleccount = elemdatabase.elementnr[labels] + return eleccount + + +def get_metal_idxs(labels: list[str]) -> list[int]: + """Transition metals, lanthanides, and actinides.""" + d_f_metals = TRANSITION_METALS | LANTHANIDES | ACTINIDES + return [i for i, label in enumerate(labels) if label in d_f_metals] + + +def get_transition_metal_idxs(labels: list[str]) -> list[int]: + """Transition metals.""" + return [i for i, label in enumerate(labels) if label in TRANSITION_METALS] + + +def get_lanthanide_actinide_idxs(labels: list[str]) -> list[int]: + """Lanthanides and actinides.""" + lanthanide_actinide_elements = LANTHANIDES | ACTINIDES + return [ + i for i, label in enumerate(labels) if label in lanthanide_actinide_elements + ] + + +def get_alkali_alkaline_earth_metal_idxs(labels: list[str]) -> list[int]: + """Alkali metals (Group 1) and alkaline earth metals (Group 2).""" + return [ + i for i, label in enumerate(labels) if label in ALKALI_AND_ALKALINE_EARTH_METALS + ] + + +def get_post_transition_metal_idxs(labels: list[str]) -> list[int]: + """Post-transition metals.""" + return [i for i, label in enumerate(labels) if label in POST_TRANSITION_METALS] + + +def get_metalloid_idxs(labels: list[str]) -> list[int]: + """Metalloids.""" + return [i for i, label in enumerate(labels) if label in METALLOIDS] + + +def get_radii(labels: list): + radii = [] + for lab in labels: + if lab[-1].isdigit(): + label = lab[:-1] + else: + label = lab + radii.append(elemdatabase.CovalentRadius3[label]) + return radii + + +def get_element_count(labels: list, heavy_only: bool = False) -> np.ndarray: + elems = list(elemdatabase.elementnr.keys()) + count = np.zeros((len(elems)), dtype=int) + for label in labels: + for jdx, elem in enumerate(elems): + if label == elem: + count[jdx] += 1 + if (label == "H" or label == "D") and heavy_only: + count = 0 + return count diff --git a/cell2mol/elementdata.py b/cell2mol/elementdata.py old mode 100755 new mode 100644 index 021b3b256..79b75e41b --- a/cell2mol/elementdata.py +++ b/cell2mol/elementdata.py @@ -1,5 +1,5 @@ # Copyright 2010 Torbjorn Bjorkman -# This file is part of cif2cell +# This file is part of cif2cell https://github.com/torbjornbjorkman/cif2cell # # cif2cell is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -979,8 +979,8 @@ def __init__(self): "Mg": 0.880, # Modded Sergi, Was 1.11 "Al": 1.350, "Si": 1.100, - #"Si": 1.200, - "P": 0.820, # Modded Sergi, Was 0.75 + # "Si": 1.200, + "P": 0.820, # Modded Sergi, Was 0.75 "S": 1.020, "Cl": 0.990, "Ar": 1.570, @@ -1079,36 +1079,36 @@ def __init__(self): "Mt": 1.600, } - # Covalent radii, from DOI https://doi.org/10.1039/B801115J Cordero et al. "Covalent radii revisited" (2008) + # Covalent radii, from DOI https://doi.org/10.1039/B801115J Cordero et al. "Covalent radii revisited" (2008) self.CovalentRadius3 = { - "H" : 0.31, - "D" : 0.31, + "H": 0.31, + "D": 0.31, "He": 0.28, - "Li": 1.28, - "Be": 0.96, - "B" : 0.84, - "C" : 0.73, # Csp3 0.76 Csp2 0.73 Csp 0.69 - "N" : 0.71, - "O" : 0.66, - "F" : 0.57, + "Li": 1.28, + "Be": 0.96, + "B": 0.84, + "C": 0.73, # Csp3 0.76 Csp2 0.73 Csp 0.69 + "N": 0.71, + "O": 0.66, + "F": 0.57, "Ne": 0.58, - "Na": 1.66, - "Mg": 1.41, + "Na": 1.66, + "Mg": 1.41, "Al": 1.21, "Si": 1.11, - "P" : 1.07, - "S" : 1.05, + "P": 1.07, + "S": 1.05, "Cl": 1.02, "Ar": 1.06, - "K" : 2.03, + "K": 2.03, "Ca": 1.76, "Sc": 1.70, "Ti": 1.60, - "V" : 1.53, - "Cr": 1.39, - "Mn": 1.39, # Mn low-spin 1.39 Mn high-spin 1.61 - "Fe": 1.32, # Fe low-spin 1.32 Fe high-spin 1.52 - "Co": 1.26, # Co low-spin 1.26 Co high-spin 1.50 + "V": 1.53, + "Cr": 1.39, + "Mn": 1.39, # Mn low-spin 1.39 Mn high-spin 1.61 + "Fe": 1.32, # Fe low-spin 1.32 Fe high-spin 1.52 + "Co": 1.26, # Co low-spin 1.26 Co high-spin 1.50 "Ni": 1.24, "Cu": 1.32, "Zn": 1.22, @@ -1120,7 +1120,7 @@ def __init__(self): "Kr": 1.16, "Rb": 2.20, "Sr": 1.95, - "Y" : 1.90, + "Y": 1.90, "Zr": 1.75, "Nb": 1.64, "Mo": 1.54, @@ -1133,8 +1133,8 @@ def __init__(self): "In": 1.42, "Sn": 1.39, "Sb": 1.39, - "Te": 1.38, - "I" : 1.39, + "Te": 1.38, + "I": 1.39, "Xe": 1.40, "Cs": 2.44, "Ba": 2.15, @@ -1155,7 +1155,7 @@ def __init__(self): "Lu": 1.87, "Hf": 1.75, "Ta": 1.70, - "W" : 1.62, + "W": 1.62, "Re": 1.51, "Os": 1.44, "Ir": 1.41, @@ -1173,7 +1173,7 @@ def __init__(self): "Ac": 2.15, "Th": 2.06, "Pa": 2.00, - "U" : 1.96, + "U": 1.96, "Np": 1.90, "Pu": 1.87, "Am": 1.80, diff --git a/cell2mol/final_c2m_driver.py b/cell2mol/final_c2m_driver.py deleted file mode 100644 index 048fb39f1..000000000 --- a/cell2mol/final_c2m_driver.py +++ /dev/null @@ -1,67 +0,0 @@ -import os -import sys -from cell2mol.helper import parsing_arguments -from cell2mol.refcell import process_refcell -from cell2mol.unitcell import process_unitcell -from cell2mol.xyz_molecule import get_molecule -from cell2mol.read_write import screening_cif, prefilter_cif, exit_with_error_input, exit_with_error_exception - -def main(): - input, system_type, cif_bond_info, cell_para, input_charge, debug_mode = parsing_arguments() - current_dir = os.getcwd() - input_path = os.path.normpath(input) - dir, file = os.path.split(input_path) - name, extension = os.path.splitext(file) - - #print(input, input_path, system_type, cell_para, debug_mode, name, extension) - - if not os.path.exists(input_path): - exit_with_error_input(f"Input file not found: {input_path}") - if extension == ".cif": - # Check for radical, disorder, 3D fractional coordinates, and polymeric structure - radical, disorder, notfound_atom, polymeric = screening_cif(input_path) - cif_okay, error_message = prefilter_cif(input_path) - if cif_okay: - # if not any([notfound_atom]): - handle_cif_file(input_path, system_type, name, current_dir, cif_bond_info, debug_mode) - else: - exit_with_error_input(f"CIF file is not suitable for processing {error_message}") - elif extension == ".xyz": - handle_xyz_file(input_path, system_type, name, cell_para, input_charge, current_dir, debug_mode) - else: - exit_with_error_input(f"Invalid file extension: {input_path}") - -def handle_cif_file(input_path, system_type, name, current_dir, cif_bond_info, debug_mode): - if system_type == "reference": - print("Processing reference (Wyckoff sites) from .cif file") - try: - process_refcell(input_path, name, current_dir, cif_bond_info, debug_mode) - except Exception as e: - exit_with_error_exception(e) - elif system_type == "unitcell": - print("Processing unit cell from .cif file") - try: - process_unitcell(input_path, name, current_dir, cif_bond_info, debug_mode) - except Exception as e: - exit_with_error_exception(e) - else: - exit_with_error_input("Invalid system type for .cif file", {"system_type": system_type}) - - -def handle_xyz_file(input_path, system_type, name, cell_para, input_charge, current_dir, debug_mode): - if system_type == "unitcell": - if cell_para is None: - exit_with_error_input("Cell parameters must be provided for .xyz file of a unit cell") - else: - print("Processing unit cell from .xyz file") - # users should provide chemical formula (Fe-O2-H3) of refmoleculist - # if users provide smiles, we check compare_species in connectivity module - elif system_type == "molecule": - print("Processing molecule from .xyz file") - get_molecule(input_path, name, input_charge, current_dir, debug_mode) - else: - exit_with_error_input("Invalid system type for .xyz file", {"system_type": system_type}) - - -if __name__ == "__main__" or __name__ == "cell2mol.final_c2m_driver": - main() \ No newline at end of file diff --git a/cell2mol/final_c2m_module.py b/cell2mol/final_c2m_module.py deleted file mode 100644 index a1e86fd5f..000000000 --- a/cell2mol/final_c2m_module.py +++ /dev/null @@ -1,174 +0,0 @@ -import copy -import logging -import time - -from cell2mol.new_cell_reconstruction import ( - get_moleclist, - get_unique_indices, - reconstruct, -) -from cell2mol.new_charge_assignment import ( - assign_charge_to_specie, - balance_charge, - print_possible_and_selected_cs, -) - - -def cell2mol_mode(newcell, refcell, sym_ops, mode, debug): - """ - Wrapper to run cell2mol with a specific mode. - - Parameters - ---------- - newcell : object - The unit cell object to be processed. - refcell : object - The reference unit cell. - sym_ops : object - Symmetry operations used for reconstruction. - mode : str - Mode of operation: 'reconstruction' or 'charge_assignment'. - debug : int - Debug level for verbosity. - """ - if mode == "reconstruction": - newcell = unitcell_reconstruction(newcell, refcell, sym_ops, debug=debug) - elif mode == "charge_assignment": - newcell, refcell = charge_assignment(newcell, refcell, debug=debug) - - logging.info("Completed '%s' mode in cell2mol", mode) - - -def unitcell_reconstruction(newcell, refcell, sym_ops, debug): - """Reconstruct the unit cell based on the reference cell and identify all molecules.""" - start_time = time.time() - - if debug : - print("#########################################") - print(" Unit Cell Reconstruction ") - print("#########################################") - - if newcell.has_isolated_H or newcell.has_missing_H: - return newcell - - all_molecules, reconstructed_molecules = reconstruct( - refcell, newcell, sym_ops, debug=debug - ) - all_molecules.extend(reconstructed_molecules) - - if newcell.error_get_fragments or newcell.error_reconstruction: - print_elapsed("Unit Cell Reconstruction Failed.", start_time) - return newcell - - print_elapsed("Unit Cell Reconstruction Finished Normally.", start_time) - - newcell = get_moleclist(newcell, refcell, all_molecules, debug=debug) - newcell.unique_species = copy.deepcopy(refcell.unique_species) - newcell = get_unique_indices(newcell, refcell.species_list, debug=debug) - - return newcell - -def charge_assignment(newcell, refcell, debug): - """Assign charges to unique species to satisfy charge neutrality.""" - start_time = time.time() - - if debug: - print("#########################################") - print(" Get Unique Species and Balance Charges ") - print("#########################################") - - # Skip charge assignment if reconstruction failed - if newcell.error_reconstruction: - return newcell, refcell - - # Check for missing charge states - if None in refcell.selected_cs: - newcell.error_get_poscharges = True - else: - newcell.error_get_poscharges = False - - # Print possible and selected charge states - print_possible_and_selected_cs(newcell, refcell, debug=debug) - - # Balance charges for the unit cell - final_charge_distribution, final_charges = balance_charge( - newcell.unique_indices, - refcell.unique_species, - debug=debug, - ) - - # Handle multiple or no charge distributions - dist_count = len(final_charge_distribution) - newcell.error_multiple_distrib = dist_count > 1 - newcell.error_empty_distrib = dist_count == 0 - - if dist_count != 1: - # Attempt to balance charges again with more specific conditions - if newcell.error_multiple_distrib : - print("More than one possible distribution found.") - second_final_charge_distribution, second_final_charges = balance_charge( - newcell.unique_indices, - refcell.unique_species, - aromatic=True, debug=debug, - ) - elif newcell.error_empty_distrib : - print("No valid distribution found.") - second_final_charge_distribution, second_final_charges = balance_charge( - newcell.unique_indices, - refcell.unique_species, - rare=True, debug=debug, - ) - second_dist_count = len(second_final_charge_distribution) - newcell.error_multiple_distrib = second_dist_count > 1 - newcell.error_empty_distrib = second_dist_count == 0 - - if second_dist_count == 1: - final_charge_distribution = second_final_charge_distribution - final_charges = second_final_charges - print("Using the second distribution found.") - - # If any error was flagged, report failure - if any([ - newcell.error_get_poscharges, - newcell.error_multiple_distrib, - newcell.error_empty_distrib, - ]): - print_elapsed("Charge Assignment Failed.", start_time) - return newcell, refcell - - # Assign charges to unique species in the reference cell - for specie, charge in zip(newcell.unique_species, final_charges[0]): - assign_charge_to_specie(specie, charge, debug=debug) - for refspecie in refcell.unique_species: - if specie.unique_index == refspecie.unique_index: - assign_charge_to_specie(refspecie, charge, debug=debug) - - # Assign charges to reference molecules in the reference cell - refcell.assign_charges_for_refcell(debug=debug) - refcell.create_bonds(debug=debug) - - if refcell.error_create_bonds: - refcell.error_case = 8 - print_elapsed("Creating bonds Failed for reference cell.", start_time) - return newcell, refcell - - newcell.refmoleclist = copy.deepcopy(refcell.refmoleclist) - newcell.unique_species = copy.deepcopy(refcell.unique_species) - - # Assign charges to molecules in the unit cell - newcell.assign_charges_for_unitcell(debug=debug) - newcell.create_bonds(debug=debug) - newcell.check_charge_neutrality(debug=debug) - - if newcell.error_create_bonds: - print_elapsed("Creating bonds Failed for unit cell.", start_time) - return newcell, refcell - - print_elapsed("Charge Assignment Finished Normally.", start_time) - - return newcell, refcell - -def print_elapsed(message: str, start_time: float): - """Print the elapsed time since start_time.""" - elapsed = time.time() - start_time - print(f"{message} Total execution time: {elapsed:.2f} seconds") diff --git a/cell2mol/final_cell_reconstruction.py b/cell2mol/final_cell_reconstruction.py deleted file mode 100644 index 688e2f71b..000000000 --- a/cell2mol/final_cell_reconstruction.py +++ /dev/null @@ -1,1321 +0,0 @@ -from itertools import combinations - -import numpy as np -from ase import Atoms - -from cell2mol.cell_operations import translate -from cell2mol.classes import molecule -from cell2mol.connectivity import ( - compare_reference_indices, - count_species, - split_species, -) -from cell2mol.elementdata import ElementData -from cell2mol.other import absolute_value, additem, extract_from_list, get_dist - -elemdatabase = ElementData() - - -def apply_symmetry_operations_reference( - refcell, cell_vector, sym_ops, normalize: bool = True, pbc: bool = True -): - - new_structures = [] - ref_labels = refcell.labels - fractional_coords = np.array(refcell.frac_coord) - - if "D" in ref_labels: - numbers = [ - elemdatabase.elementnr[elem] for elem in ref_labels - ] # Atoms object cannot handle Deuterium in the symbols - - for rot, trans in zip(sym_ops[0], sym_ops[1]): - transformed_positions = np.dot(fractional_coords, rot.T) - transformed_positions += np.array(trans) - if normalize: - transformed_positions = np.remainder(transformed_positions, 1) - if "D" in ref_labels: - new = Atoms( - scaled_positions=transformed_positions, - numbers=numbers, - cell=cell_vector, - ) - else: - new = Atoms( - symbols=ref_labels, - scaled_positions=transformed_positions, - cell=cell_vector, - ) - - new_structures.append(new) - - return new_structures - - -def find_row_indices(source, target): - # List to store the indices of found rows - found_indices = [] - found_rows = [] - remaining_indices = [] - remaining_rows = [] - - # Iterate over each row in the source array with enumeration to track the index - for index, row in enumerate(source): - # Check if any row in the target array matches the current row - if any( - np.allclose(row, target_row, atol=1e-4, rtol=1e-2) for target_row in target - ): - found_indices.append(index) - found_rows.append(row) - else: - remaining_indices.append(index) - remaining_rows.append(row) - return found_indices, found_rows - - -def find_row_index_from_matrix(matrix, query_row): - - # Convert the inputs to NumPy arrays if they aren't already - matrix = np.array(matrix) - query_row = np.array(query_row) - - # Check each row for equality with the query_row - for index, row in enumerate(matrix): - if np.allclose(row, query_row, atol=1e-4, rtol=1e-2): - return index - return -1 - - -def get_fragments( - newcell, - updated, - indices_in_ref, - cov_factor: float = 1.3, - metal_factor: float = 1.0, - debug: int = 0, -): - - updated_labels = extract_from_list(updated, newcell.labels, dimension=1) - updated_coord = extract_from_list(updated, newcell.coord, dimension=1) - updated_fracs = extract_from_list(updated, newcell.frac_coord, dimension=1) - - blocklist = split_species(updated_labels, updated_coord, debug=debug) - - fragments = [] - - for b in blocklist: - if debug > 2: - print(f"GET_FRAGMENTS: doing block={b}") - mol_labels = extract_from_list(b, updated_labels, dimension=1) - mol_coord = extract_from_list(b, updated_coord, dimension=1) - mol_frac_coord = extract_from_list(b, updated_fracs, dimension=1) - - cell_indices = extract_from_list(b, updated, dimension=1) - ref_indices = extract_from_list(b, indices_in_ref, dimension=1) - - # Creates Molecule Object - newmolec = molecule(mol_labels, mol_coord, mol_frac_coord) - - # For debugging - newmolec.origin = "cell.get_fragments" - - # Adds cell as parent of the molecule, with indices - newmolec.add_parent(newcell, indices=cell_indices) - newmolec.set_fractional_coord(mol_frac_coord) - newmolec.set_adjacency_parameters( - cov_factor=cov_factor, metal_factor=metal_factor - ) - newmolec.set_atoms(create_adjacencies=True, debug=debug) - newmolec.ref_indices = ref_indices - newmolec.cell_indices = cell_indices - fragments.append(newmolec) - - return fragments - - -def get_fragments_from_moiety( - newcell, - updated, - indices_in_ref, - refcell, - cov_factor: float = 1.3, - metal_factor: float = 1.0, - debug: int = 0, -): - - atom_site_labels = refcell.atom_site_labels - geom_bond_cif = refcell.geom_bond_cif - moiety_indices = refcell.moiety_indices - - if debug >= 2: - print(f"get_fragments: {updated=}") - if debug >= 2: - print(f"get_fragments: {indices_in_ref=}") - if debug >= 2: - print(f"get_fragments: {moiety_indices=}") - - updated_labels = extract_from_list(updated, newcell.labels, dimension=1) - updated_coord = extract_from_list(updated, newcell.coord, dimension=1) - updated_fracs = extract_from_list(updated, newcell.frac_coord, dimension=1) - - updated_moieties_list = [ - [updated[indices_in_ref.index(i)] for i in sublist if i in indices_in_ref] - for sublist in moiety_indices - ] - # updated_moieties_indices_in_ref = [[indices_in_ref.index(i) for i in sublist if i in indices_in_ref] for sublist in moiety_indices] - # updated_moieties_list = [[updated[idx] for idx in sublist] for sublist in updated_moieties_indices_in_ref] - # if debug >= 2 : print(f"get_fragments: updated_moieties_indices_in_ref", updated_moieties_indices_in_ref) - if debug >= 2: - print(f"get_fragments: updated_moieties_list", updated_moieties_list) - tmp_blocklist = [] - for idx, updated_moieties in enumerate(updated_moieties_list): - if len(updated_moieties) == 0: - continue - updated_moiety_ref_indices = moiety_indices[idx] - if debug >= 2: - print("get_fragments: updated_moieties", updated_moieties) - updated_moieties_labels = extract_from_list( - updated_moieties, newcell.labels, dimension=1 - ) - updated_moieties_coord = extract_from_list( - updated_moieties, newcell.coord, dimension=1 - ) - updated_moieties_atom_site_labels = [ - atom_site_labels[i] for i in updated_moiety_ref_indices - ] - if debug >= 2: - print(f"get_fragments: updated_moieties_labels", updated_moieties_labels) - if debug >= 2: - print( - f"get_fragments: updated_moieties_atom_site_labels", - updated_moieties_atom_site_labels, - ) - block = split_species( - updated_moieties_labels, - updated_moieties_coord, - indices=updated_moieties, - atom_site_labels=updated_moieties_atom_site_labels, - geom_bond_cif=geom_bond_cif, - debug=debug, - ) - tmp_blocklist.extend(block) - - if debug >= 2: - print("get_fragments: tmp_blocklist", tmp_blocklist) - - value_to_index = {val: idx for idx, val in enumerate(updated)} - blocklist = [ - [value_to_index[val] for val in sublist if val in value_to_index] - for sublist in tmp_blocklist - ] - if debug >= 2: - print("get_fragments: blocklist", blocklist) - - fragments = [] - for b in blocklist: - if debug > 2: - print(f"get_fragments: doing block={b}") - mol_labels = extract_from_list(b, updated_labels, dimension=1) - mol_coord = extract_from_list(b, updated_coord, dimension=1) - mol_frac_coord = extract_from_list(b, updated_fracs, dimension=1) - - cell_indices = extract_from_list(b, updated, dimension=1) - ref_indices = extract_from_list(b, indices_in_ref, dimension=1) - mol_atom_site_labels = [atom_site_labels[idx] for idx in ref_indices] - # print(f"get_fragments: {cell_indices=}") - # print(f"get_fragments: {ref_indices=}") - # print(f"get_fragments: {mol_atom_site_labels=}") - - # Creates Molecule Object - newmolec = molecule(mol_labels, mol_coord, mol_frac_coord) - - # For debugging - newmolec.origin = "cell.get_fragments" - - # Adds cell as parent of the molecule, with indices - newmolec.add_parent(newcell, indices=cell_indices) - newmolec.set_fractional_coord(mol_frac_coord) - newmolec.set_adjacency_parameters( - cov_factor=cov_factor, metal_factor=metal_factor - ) - newmolec.set_atoms( - create_adjacencies=True, - atom_site_labels=mol_atom_site_labels, - geom_bond_cif=geom_bond_cif, - debug=debug, - ) - newmolec.ref_indices = ref_indices - newmolec.cell_indices = cell_indices - fragments.append(newmolec) - - return fragments - - -def get_fragments_new( - newcell, - updated, - indices_in_ref, - refcell, - cov_factor: float = 1.3, - metal_factor: float = 1.0, - debug: int = 0, -): - - atom_site_labels = refcell.atom_site_labels - geom_bond_cif = refcell.geom_bond_cif - moiety_indices = refcell.moiety_indices - - if debug >= 2: - print(f"get_fragments: {updated=}") - if debug >= 2: - print(f"get_fragments: {indices_in_ref=}") - if debug >= 2: - print(f"get_fragments: {moiety_indices=}") - - updated_labels = extract_from_list(updated, newcell.labels, dimension=1) - updated_coord = extract_from_list(updated, newcell.coord, dimension=1) - updated_fracs = extract_from_list(updated, newcell.frac_coord, dimension=1) - if not refcell.exist_cif_bond_moiety: - blocklist = split_species(updated_labels, updated_coord, debug=debug) - else: - updated_moieties_list = [ - [updated[indices_in_ref.index(i)] for i in sublist if i in indices_in_ref] - for sublist in moiety_indices - ] - if debug >= 2: - print(f"get_fragments: updated_moieties_list", updated_moieties_list) - tmp_blocklist = [] - for updated_moieties in updated_moieties_list: - if len(updated_moieties) == 0: - continue - updated_moieties_labels = extract_from_list( - updated_moieties, newcell.labels, dimension=1 - ) - updated_moieties_coord = extract_from_list( - updated_moieties, newcell.coord, dimension=1 - ) - block = split_species( - updated_moieties_labels, - updated_moieties_coord, - indices=updated_moieties, - debug=debug, - ) - tmp_blocklist.extend(block) - if debug >= 2: - print("get_fragments: updated_moieties", updated_moieties) - if debug >= 2: - print("get_fragments: tmp_blocklist", tmp_blocklist) - - value_to_index = {val: idx for idx, val in enumerate(updated)} - blocklist = [ - [value_to_index[val] for val in sublist if val in value_to_index] - for sublist in tmp_blocklist - ] - if debug >= 2: - print("get_fragments: blocklist", blocklist) - - fragments = [] - for b in blocklist: - if debug > 2: - print(f"get_fragments: doing block={b}") - mol_labels = extract_from_list(b, updated_labels, dimension=1) - mol_coord = extract_from_list(b, updated_coord, dimension=1) - mol_frac_coord = extract_from_list(b, updated_fracs, dimension=1) - - cell_indices = extract_from_list(b, updated, dimension=1) - ref_indices = extract_from_list(b, indices_in_ref, dimension=1) - mol_atom_site_labels = [atom_site_labels[idx] for idx in ref_indices] - # print(f"get_fragments: {cell_indices=}") - # print(f"get_fragments: {ref_indices=}") - # print(f"get_fragments: {mol_atom_site_labels=}") - - # Creates Molecule Object - newmolec = molecule(mol_labels, mol_coord, mol_frac_coord) - - # For debugging - newmolec.origin = "cell.get_fragments" - - # Adds cell as parent of the molecule, with indices - newmolec.add_parent(newcell, indices=cell_indices) - newmolec.set_fractional_coord(mol_frac_coord) - newmolec.set_adjacency_parameters( - cov_factor=cov_factor, metal_factor=metal_factor - ) - newmolec.set_atoms( - create_adjacencies=True, - atom_site_labels=mol_atom_site_labels, - geom_bond_cif=geom_bond_cif, - debug=debug, - ) - newmolec.ref_indices = ref_indices - newmolec.cell_indices = cell_indices - fragments.append(newmolec) - - return fragments - - -def classify_fragments(fragments, newcell, debug: int = 0): - - molecules = [] - remaining_fragments = [] - hydrogens = [] - for frag in fragments: - found = False - for idx, ref in enumerate(newcell.refmoleclist): - if (ref.natoms == frag.natoms) & (ref.formula == frag.formula): - if sorted(ref.get_parent_indices("reference")) == sorted( - frag.ref_indices - ): - if debug > 2: - print( - frag.formula, - frag.ref_indices, - frag.frac_coord, - f"equivalent to Ref {idx} {ref.formula}", - ) - frag.subtype = "molecule" - frag.origin = "cell.classify_fragments" - molecules.append(frag) - found = True - - if found == False: - frag.subtype = "fragment" - frag.origin = "cell.classify_fragments" - if (frag.natoms == 1) and ( - frag.set_element_count()[4] + frag.set_element_count()[3] == 1 - ): - hydrogens.append(frag) # # Hydrogen or Deuterium - else: - remaining_fragments.append(frag) - - rem_size = np.array([rem.natoms for rem in remaining_fragments]) - order = np.argsort(rem_size) - descending_order = order[::-1] - remaining_fragments = [remaining_fragments[i] for i in descending_order] - for rem in remaining_fragments + hydrogens: - rem.get_centroid() - - if debug >= 2: - print("Remaining_fragments:", [rem.formula for rem in remaining_fragments]) - print("Remaining_fragments:", [rem.natoms for rem in remaining_fragments]) - print( - "Remaining_fragments:", - [ - get_dist(rem.frac_centroid, [0.5, 0.5, 0.5]) - for rem in remaining_fragments - ], - ) - print("Hydrogens:", [h.formula for h in hydrogens]) - # return molecules, remaining_fragments, hydrogens - return molecules, remaining_fragments + hydrogens - - -def grouping_smaller_lists_for_target_sets(target_sets, smaller_lists, debug: int = 0): - - # target_sets : Define the larger target lists as sets for fast lookup - # List of smaller lists to be grouped - - # Group smaller lists into their respective larger list - grouped_lists = [[] for _ in range(len(target_sets))] - grouped_lists_idx = [[] for _ in range(len(target_sets))] - target_idx_lists = [[] for _ in range(len(target_sets))] - for j, small_list in enumerate(smaller_lists): - small_set = set(small_list) - for i, target_set in enumerate(target_sets): - if small_set.issubset(target_set): - if debug >= 2: - print(f"grouped_lists {i} add {small_set}") - grouped_lists[i].extend(small_list) - grouped_lists_idx[i].append(j) - target_idx_lists[i].append(i) - - if set(grouped_lists[i]) == target_set: - if debug >= 2: - print( - f"grouped_lists {i} is same with {target_set} {grouped_lists_idx[i]}" - ) - else: - if debug >= 2: - print(f"continue for {i} {grouped_lists_idx[i]}") - break - - if debug >= 2: - # Print the grouped lists - for i, group in enumerate(grouped_lists): - print(f"Group {i}: {group}") - - return grouped_lists, grouped_lists_idx, target_idx_lists - - -def grouping_remaining_fragments( - remaining_fragments, not_found_list, newcell, debug: int = 0 -): - - smaller_lists = [rem_frag.ref_indices for rem_frag in remaining_fragments] - smaller_lists.sort(key=len, reverse=True) - - target_sets = [] - for j in not_found_list: - try: - ref_indices = newcell.refmoleclist[j].get_parent_indices("reference") - target_sets.append(set(ref_indices)) - except AttributeError as e: - print( - f"Error accessing or calling get_parent_indices on refmoleclist {j}: {e}" - ) - except Exception as e: - print(f"An unexpected error occurred with element {j}: {e}") - - if debug >= 2: - print(f"{target_sets=}") - print(f"{smaller_lists=}") - - grouped_rem_frags, indices_of_rem_frags, target_idx_lists = ( - grouping_smaller_lists_for_target_sets(target_sets, smaller_lists, debug=debug) - ) - - not_found_refmoleclist_indices = [ - list(set(sublist))[0] if sublist else None for sublist in target_idx_lists - ] - - indices_of_target_ref = [] - for t in not_found_refmoleclist_indices: - indices_of_target_ref.append( - newcell.refmoleclist[t].get_parent_indices("reference") - ) - - return grouped_rem_frags, indices_of_rem_frags, indices_of_target_ref - - -def tmatgenerator(centroid, thres=0.40, full=False, debug: int = 0): - # This function generates a list of the translations that a fragment should undergo depending on the centroid of its fractional coordinates - # For instance, if the centroid of a fragment is at 0.9 in any given axis, it is unlikely that a one-cell-length translation along such axis (resulting in 1.9) would help. - # Also, a fragment right at the center of the unit cell (centroid=(0.5, 0.5, 0.5) is unlikely to require reconstruction - # The threshold defines the window. If thres=0.4, the function will suggest positive translation for any fragment between 0 and 0.4, and negative translation between 0.6 and 1.0. - # If full is asked, then all translations are applied - - tmax = 1 - thres - tmin = thres - - if not full: - tmatrix = [] - tmatrix = additem((0, 0, 0), tmatrix) - - # X positive - if centroid[0] >= tmax: - tmatrix = additem((-1, 0, 0), tmatrix) - if centroid[1] >= tmax: - tmatrix = additem((-1, -1, 0), tmatrix) - tmatrix = additem((0, -1, 0), tmatrix) - if centroid[2] >= tmax: - tmatrix = additem((-1, -1, -1), tmatrix) - tmatrix = additem((0, -1, -1), tmatrix) - tmatrix = additem((0, 0, -1), tmatrix) - if centroid[2] <= tmin: - tmatrix = additem((-1, -1, 1), tmatrix) - tmatrix = additem((0, -1, 1), tmatrix) - tmatrix = additem((0, 0, 1), tmatrix) - if centroid[1] <= tmin: - tmatrix = additem((-1, 1, 0), tmatrix) - tmatrix = additem((0, 1, 0), tmatrix) - if centroid[2] >= tmax: - tmatrix = additem((-1, 1, -1), tmatrix) - tmatrix = additem((0, 1, -1), tmatrix) - tmatrix = additem((0, 0, -1), tmatrix) - if centroid[2] <= tmin: - tmatrix = additem((-1, 1, 1), tmatrix) - tmatrix = additem((0, 1, 1), tmatrix) - tmatrix = additem((0, 0, 1), tmatrix) - if centroid[2] >= tmax: - tmatrix = additem((-1, 0, -1), tmatrix) - tmatrix = additem((0, 0, -1), tmatrix) - if centroid[2] <= tmin: - tmatrix = additem((-1, 0, 1), tmatrix) - tmatrix = additem((0, 0, 1), tmatrix) - - if centroid[1] >= tmax: - tmatrix = additem((0, -1, 0), tmatrix) - if centroid[2] >= tmax: - tmatrix = additem((0, -1, -1), tmatrix) - tmatrix = additem((0, 0, -1), tmatrix) - if centroid[2] <= tmin: - tmatrix = additem((0, -1, 1), tmatrix) - tmatrix = additem((0, 0, 1), tmatrix) - - if centroid[2] >= tmax: - tmatrix = additem((0, 0, -1), tmatrix) - - if centroid[0] <= tmin: - tmatrix = additem((1, 0, 0), tmatrix) - if centroid[1] <= tmin: - tmatrix = additem((1, 1, 0), tmatrix) - tmatrix = additem((0, 1, 0), tmatrix) - if centroid[2] <= tmin: - tmatrix = additem((1, 1, 1), tmatrix) - tmatrix = additem((0, 1, 1), tmatrix) - tmatrix = additem((0, 0, 1), tmatrix) - if centroid[2] >= tmax: - tmatrix = additem((1, 1, -1), tmatrix) - tmatrix = additem((0, 1, -1), tmatrix) - tmatrix = additem((0, 0, -1), tmatrix) - if centroid[1] >= tmax: - tmatrix = additem((1, -1, 0), tmatrix) - tmatrix = additem((0, -1, 0), tmatrix) - if centroid[2] >= tmax: - tmatrix = additem((1, -1, -1), tmatrix) - if centroid[2] <= tmin: - tmatrix = additem((1, -1, 1), tmatrix) - if centroid[2] <= tmin: - tmatrix = additem((1, 0, 1), tmatrix) - tmatrix = additem((0, 0, 1), tmatrix) - if centroid[2] >= tmax: - tmatrix = additem((1, 0, -1), tmatrix) - tmatrix = additem((0, 0, -1), tmatrix) - - if centroid[1] <= tmin: - tmatrix = additem((0, 1, 0), tmatrix) - if centroid[2] <= tmin: - tmatrix = additem((0, 1, 1), tmatrix) - tmatrix = additem((0, 0, 1), tmatrix) - if centroid[2] >= tmax: - tmatrix = additem((0, 1, -1), tmatrix) - tmatrix = additem((0, 0, -1), tmatrix) - if centroid[2] <= tmin: - tmatrix = additem((0, 0, 1), tmatrix) - - if (centroid[0] > tmin) and (centroid[0] < tmax): - if centroid[1] <= tmin: - tmatrix = additem((0, 1, 0), tmatrix) - if centroid[2] >= tmax: - tmatrix = additem((0, 1, -1), tmatrix) - if centroid[2] <= tmin: - tmatrix = additem((0, 1, 1), tmatrix) - if centroid[1] >= tmax: - tmatrix = additem((0, -1, 0), tmatrix) - if centroid[2] >= tmax: - tmatrix = additem((0, -1, -1), tmatrix) - if centroid[2] <= tmin: - tmatrix = additem((0, -1, 1), tmatrix) - if centroid[2] <= tmin: - tmatrix = additem((0, 0, 1), tmatrix) - if centroid[1] >= tmax: - tmatrix = additem((0, -1, 1), tmatrix) - if centroid[1] <= tmin: - tmatrix = additem((0, 1, 1), tmatrix) - if centroid[2] >= tmax: - tmatrix = additem((0, 0, -1), tmatrix) - if centroid[1] >= tmax: - tmatrix = additem((0, -1, -1), tmatrix) - if centroid[1] <= tmin: - tmatrix = additem((0, 1, -1), tmatrix) - elif full: - x = [-1, 0, 1] - tmatrix = [p for p in itertools.product(x, repeat=3)] - - tmatrix.sort(key=absolute_value) - - return tmatrix - - -def merge_fragments( - frags: list, - cell_vector: list, - refcell: object, - cov_factor: float = 1.3, - metal_factor: float = 1.0, - full: bool = False, - debug: int = 0, -): - - # finds biggest fragment and keeps it in the original cell - sizes = [] - for f in frags: - size = f.natoms - sizes.append(size) - keep_idx = np.argmax(sizes) - if keep_idx == 0: - move_idx = 1 - elif keep_idx == 1: - move_idx = 0 - keep_frag = frags[keep_idx] - move_frag = frags[move_idx] - if debug >= 2: - print("MERGE_FRAGMENTS: keep_idx", keep_idx) - if debug >= 2: - print("MERGE_FRAGMENTS: move_idx", move_idx) - - move_frag.get_centroid() - - if move_frag.natoms == 1 and ( - move_frag.set_element_count()[4] + move_frag.set_element_count()[3] == 1 - ): - full = True - - move_frag.tmatrix = tmatgenerator(move_frag.frac_centroid, full=full) - - if len(move_frag.tmatrix) == 0: - return None - - for t in move_frag.tmatrix: - if debug >= 2: - print("MERGE_FRAGMENTS: translation", t) - ## Applies Translations and each time, it checks if a bigger molecule is formed - ## meaning that the translation was successful - reclabels = [] - reclabels.extend(keep_frag.labels) - reclabels.extend(move_frag.labels) - reccoord = [] - reccoord.extend(keep_frag.coord) - if t == (0, 0, 0): - reccoord.extend(move_frag.coord) - else: - reccoord.extend(translate(t, move_frag.coord, cell_vector)) - - rec_ref_indices = [] - rec_ref_indices.extend(keep_frag.ref_indices) - rec_ref_indices.extend(move_frag.ref_indices) - - rec_cell_indices = [] - rec_cell_indices.extend(keep_frag.cell_indices) - rec_cell_indices.extend(move_frag.cell_indices) - - recfracs = [] - recfracs.extend(keep_frag.frac_coord) - recfracs.extend(move_frag.frac_coord) - - rec_ref_atom_site_labels = [ - refcell.atom_site_labels[idx] for idx in rec_ref_indices - ] - numspecs = count_species( - reclabels, - reccoord, - atom_site_labels=rec_ref_atom_site_labels, - geom_bond_cif=refcell.geom_bond_cif, - cov_factor=cov_factor, - debug=debug, - ) - - if debug >= 0: - print("MERGE_FRAGMENTS: count_species found", numspecs) - if numspecs != 1: - continue - - if refcell.exist_cif_bond_moiety and refcell.geom_bond_cif is not None: - blocklist = split_species( - reclabels, - reccoord, - atom_site_labels=rec_ref_atom_site_labels, - geom_bond_cif=refcell.geom_bond_cif, - cov_factor=cov_factor, - debug=debug, - ) - else: - blocklist = split_species( - reclabels, reccoord, cov_factor=cov_factor, debug=debug - ) - if debug >= 0: - print( - "MERGE_FRAGMENTS: split_species found", len(blocklist), f"{blocklist=}" - ) - - if blocklist is None: - continue - else: - if len(blocklist) != 1: - continue - if len(blocklist) == 1: - newmolec = molecule(reclabels, reccoord, recfracs) - newmolec.origin = "cell.reconstruct" - newmolec.ref_indices = rec_ref_indices - newmolec.cell_indices = rec_cell_indices - newmolec.atom_site_labels = rec_ref_atom_site_labels - newmolec.set_adjacency_parameters(cov_factor, metal_factor) - newmolec.set_element_count() - newmolec.get_centroid() - newmolec.get_adjmatrix(geom_bond_cif=refcell.geom_bond_cif) - newmolec.get_metal_adjmatrix(geom_bond_cif=refcell.geom_bond_cif) - newmolec.set_adj_types() - return newmolec - return None - - -def merge_elements( - fragments, - target_ref, - cell_vector, - refcell, - cov_factor: float = 1.3, - metal_factor: float = 1.0, - full: bool = False, - debug: int = 0, -): - - while True: - # Create an index list for the current state of fragments - idx_list = list(range(len(fragments))) - # Keep track of whether any items were merged during this pass - merged = False - - # Generate all possible combinations of indices for current fragments - for comb, idx_comb in zip( - combinations(fragments, 2), combinations(idx_list, 2) - ): - # print(comb, idx_comb) # Optional: for debugging to see the pairs being processed - if comb[0].formula == "H" and comb[1].formula == "H": - pass - elif comb[0].natoms + comb[1].natoms > len(target_ref): - pass - elif ( - comb[0].subtype == "Rec. Molecule" or comb[1].subtype == "Rec. Molecule" - ): - pass - elif set(comb[0].ref_indices).intersection(set(comb[1].ref_indices)): - # print(comb[0].ref_indices) - # print(comb[1].ref_indices) - pass - else: - if debug >= 2: - print( - "Fragments TO BE MERGED", - [k.formula for k in comb], - [k.subtype for k in comb], - idx_comb, - ) - - newmolec = merge_fragments( - comb, - cell_vector, - refcell, - cov_factor=cov_factor, - metal_factor=metal_factor, - full=full, - debug=debug, - ) - - if newmolec is None: - if debug >= 2: - print(f"\tNOT MERGED {[k.formula for k in comb]}") - else: - # print(comb[0].ref_indices) - # print(comb[1].ref_indices) - if debug >= 2: - print( - f"\tMERGED {newmolec.formula} from {[k.formula for k in comb]} at indices {idx_comb}" - ) - small_set = set(newmolec.ref_indices) - if debug >= 2: - print( - f"{newmolec.formula} {newmolec.natoms=} {len(small_set)=} {small_set=}" - ) - if small_set.issubset(target_ref): - if sorted(small_set) == target_ref: - newmolec.subtype = "Rec. Molecule" - if debug >= 2: - print("Molecule found", newmolec.formula) - else: - newmolec.subtype = "Rec. Fragment" - if debug >= 2: - print("Bigger fragment found", newmolec.formula) - fragments[idx_comb[0]] = newmolec - fragments.pop(idx_comb[1]) - merged = True - break - - if not merged: - break - - return fragments - - -###################################################### -def fragments_reconstruct( - subset_remaining_fragments, - target_ref, - cell_vector, - refcell, - cov_factor: float = 1.3, - metal_factor: float = 1.0, - full: bool = False, - debug: int = 0, -): - - list_of_found_molecules = [] - list_of_bigger_fragments = [] - remaining_frag = subset_remaining_fragments.copy() - - fragments = merge_elements( - remaining_frag, - target_ref, - cell_vector, - refcell, - cov_factor=cov_factor, - metal_factor=metal_factor, - full=full, - debug=debug, - ) - - for newmolec in fragments: - small_set = set(newmolec.ref_indices) - if small_set.issubset(target_ref): - if sorted(small_set) == target_ref: - list_of_found_molecules.append(newmolec) - elif newmolec.natoms == 1 and ( - newmolec.set_element_count()[4] + newmolec.set_element_count()[3] == 1 - ): - newmolec.subtype = "fragment" - if debug > 2: - print("Hydrogen found", newmolec.formula) - list_of_bigger_fragments.append(newmolec) - else: - list_of_bigger_fragments.append(newmolec) - - if debug > 2: - print(f"{len(list_of_found_molecules)=}") - if debug > 2: - print(f"{len(list_of_bigger_fragments)=}") - - return list_of_found_molecules, list_of_bigger_fragments - - -def get_updated_indices( - sp_idx, ref_labels, new, cell_labels, cell_pos, cell_fracs, debug: int = 0 -): - """ - sp_idx : index of the symmetry operation - new : ase atoms object by applying symmetry operations to the reference structure - cell_labels : list of chemical symbols of the atoms in the unit cell - cell_pos : list of cartesian coordinates of the atoms in the unit cell - cell_fracs : list of fractional coordinates of the atoms in the unit cell - """ - indices_lists = [] - # new_labels = new.get_chemical_symbols() - new_pos = new.get_positions() - new_fracs = new.get_scaled_positions() - - for jdx, (n_l, n_p, n_f) in enumerate(zip(ref_labels, new_pos, new_fracs)): - for kdx, (l, p, f) in enumerate(zip(cell_labels, cell_pos, cell_fracs)): - if n_l == l and np.allclose(n_p, p, atol=1e-4, rtol=1e-2): - if np.allclose( - np.remainder(n_f, 1), np.remainder(f, 1), atol=1e-4, rtol=1e-2 - ): - if debug > 2: - print( - f"symmtry operation {sp_idx}:", - f"atom of new (index: {jdx})", - n_l, - n_p, - n_f, - f"is the same as the atom of the unit cell (index: {kdx})", - l, - p, - f, - ) - indices_lists.append( - (jdx, kdx) - ) # jdx is the index of the atom in the new structure, kdx is the index of the atom in the unit cell - return indices_lists - - -def sort_remaining_fragments_list(original_remaining_fragments): - - remaining_fragments = [] - hydrogens = [] - for frag in original_remaining_fragments: - if (frag.natoms == 1) and ( - frag.set_element_count()[4] + frag.set_element_count()[3] == 1 - ): - hydrogens.append(frag) # # Hydrogen or Deuterium - else: - remaining_fragments.append(frag) - - rem_size = np.array([rem.natoms for rem in remaining_fragments]) - order = np.argsort(rem_size) - descending_order = order[::-1] - remaining_fragments = [remaining_fragments[i] for i in descending_order] - remaining_fragments += hydrogens - for rem in remaining_fragments: - rem.get_centroid() - - return remaining_fragments - - -def reconstruct(refcell, newcell, sym_ops, debug: int = 0): - - cell_labels = newcell.labels - print(f"{cell_labels=}") - if "D" in cell_labels: - print("Deuterium is in the cell") - cell_pos = newcell.coord - cell_fracs = newcell.frac_coord - cell_vector = newcell.cell_vector - - ref_labels = refcell.labels - atom_site_labels = refcell.atom_site_labels - - print(f"{ref_labels=}") - print(f"{atom_site_labels=}") - - if "D" in ref_labels: - print("Deuterium is in the reference") - cov_factor = refcell.refmoleclist[0].cov_factor - metal_factor = refcell.refmoleclist[0].metal_factor - - new_structures = apply_symmetry_operations_reference(refcell, cell_vector, sym_ops) - print(f"Number of symmetry operations: {len(new_structures)}") - - all_found = [] - all_molecules = [] - reconstructed_molecules = [] - remaining_fragments = [[] for _ in range(len(newcell.refmoleclist))] - - for idx, new in enumerate(new_structures): - if debug >= 2: - print(f"\nApplying symmetry operations to reference {idx}") - indices_lists = get_updated_indices( - idx, ref_labels, new, cell_labels, cell_pos, cell_fracs, debug=debug - ) - if debug >= 2: - print(f"{len(indices_lists)=}") - - updated_lists = [i for i in indices_lists if i[1] not in all_found] - updated_ref_indices = [i[0] for i in updated_lists] - updated_cell = [i[1] for i in updated_lists] - if debug >= 2: - print(f"{len(updated_cell)=} {updated_cell=}") - if debug >= 2: - print(f"{len(updated_ref_indices)=} {updated_ref_indices=}") - - all_found.extend(updated_cell) - if debug >= 2: - print(len(all_found)) - if debug >= 2: - print(len(all_found) == len(cell_pos)) - - if len(updated_cell) > 0: - # #### make blocks and get fragments #### - if refcell.exist_cif_bond_moiety: - initial_fragments = get_fragments_from_moiety( - newcell, - updated_cell, - updated_ref_indices, - refcell, - cov_factor=cov_factor, - metal_factor=metal_factor, - debug=2, - ) - else: - initial_fragments = get_fragments_new( - newcell, - updated_cell, - updated_ref_indices, - refcell, - cov_factor=cov_factor, - metal_factor=metal_factor, - debug=2, - ) - - molecules, fragments = classify_fragments( - initial_fragments, newcell, debug=2 - ) - all_molecules.extend(molecules) - - # Grouping fragments for each reference molecule - fragments_of_new = [[] for _ in range(len(newcell.refmoleclist))] - - for i, ref in enumerate(newcell.refmoleclist): - target_set = set(ref.get_parent_indices("reference")) - for j, frag in enumerate(fragments): - small_set = set(frag.ref_indices) - if small_set.issubset(target_set): - if debug >= 2: - print( - f"{j} {frag.formula} is a subset of target_set {i} {ref.formula}" - ) - fragments_of_new[i].append(frag) - - if debug >= 2: - print(f"symmetry operations: {idx}") - for i, (ref, frag_list) in enumerate( - zip(newcell.refmoleclist, fragments_of_new) - ): - if debug >= 2: - print( - f"Reference {i}: {ref.formula} target : {ref.get_parent_indices('reference')}" - ) - if debug >= 2: - print( - f"\tFragments formula : {[frag.formula for frag in frag_list]}" - ) - if debug >= 2: - print( - f"\tFragments ref_indices: {[frag.ref_indices for frag in frag_list]}" - ) - - # Reconstructing fragments within one new structure - for i, frag_list in enumerate(fragments_of_new): - if len(frag_list) > 1: - if debug >= 2: - print(f"target_ref: {newcell.refmoleclist[i].formula}") - if debug >= 2: - print( - f"Fragments formula {i}: {[frag.formula for frag in frag_list]}" - ) - target_ref = newcell.refmoleclist[i].get_parent_indices("reference") - list_of_found_molecules, remaining_frag = fragments_reconstruct( - frag_list, - target_ref, - cell_vector, - refcell, - cov_factor=cov_factor, - metal_factor=metal_factor, - debug=0, - ) - if debug >= 2: - print( - f"symmetry operations: {idx} {[mol.formula for mol in list_of_found_molecules]=}" - ) - if debug >= 2: - print( - f"symmetry operations: {idx} {[frag.formula for frag in remaining_frag]=}" - ) - if len(list_of_found_molecules) > 0: - reconstructed_molecules.extend(list_of_found_molecules) - if len(remaining_frag) > 0: - remaining_fragments[i].extend(remaining_frag) - if debug >= 2: - print( - f"symmetry operations: {idx} with ref{i} {[frag.formula for frag in remaining_fragments[i]]=}" - ) - elif len(frag_list) == 1: - if debug >= 2: - print("only one fragment", frag_list[0].formula, "is found") - remaining_fragments[i].extend(frag_list) - if debug >= 2: - print( - f"symmetry operations: {idx} with ref{i} {[frag.formula for frag in remaining_fragments[i]]=}" - ) - - if debug >= 1: - print( - "complete molecules :", - f"counts={len(all_molecules)}", - [mol.formula for mol in all_molecules], - ) - if debug >= 1: - print( - "reconstructed molecules :", - f"counts={len(reconstructed_molecules)}", - [mol.formula for mol in reconstructed_molecules], - ) - - if len(all_found) == len(cell_pos): - newcell.error_get_fragments = False - num_rem_frags = 0 - for rem_frag_list in remaining_fragments: - num_rem_frags += len(rem_frag_list) - - if num_rem_frags == 0: - print("All fragments are reconstructed successfully.") - newcell.error_reconstruction = False - else: - print(f"There are {num_rem_frags} remaining fragments.") - final_remaining_fragments, reconstructed_molecules = ( - final_remaining_reconstruction( - remaining_fragments, - newcell, - cell_vector, - reconstructed_molecules, - refcell, - cov_factor=cov_factor, - metal_factor=metal_factor, - debug=0, - ) - ) - if len(final_remaining_fragments) == 0: - print("All fragments are reconstructed successfully.") - newcell.error_reconstruction = False - else: - print("Error in reconstruction!!") - newcell.error_reconstruction = True - print( - "final remaining fragments", - len(final_remaining_fragments), - [mol.formula for mol in final_remaining_fragments], - ) - - else: - print("Error in getting fragments and reconstruction!!") - newcell.error_get_fragments = True - newcell.error_reconstruction = True - for i, pos in enumerate(cell_pos): - if i not in all_found: - print( - f"Cannot find the {i}th atom of the unit cell based on cartesian coordinates from the new structure." - ) - print(f"{i} {cell_labels[i]=} {cell_pos[i]=} {cell_fracs[i]=}") - - return all_molecules, reconstructed_molecules - - -def final_remaining_reconstruction( - remaining_fragments, - newcell, - cell_vector, - reconstructed_molecules, - refcell, - cov_factor: float = 1.3, - metal_factor: float = 1.0, - debug: int = 0, -): - # Reconstructing remaining fragments within the whole new cell - final_remaining_fragments = [] - for i, rem_frag_list in enumerate(remaining_fragments): - if len(rem_frag_list) > 1: - print(f"target_ref: {newcell.refmoleclist[i].formula}") - print(f"Fragments formula {i}: {[rem.formula for rem in rem_frag_list]}") - target_ref = newcell.refmoleclist[i].get_parent_indices("reference") - list_of_found_molecules, final_remaining = fragments_reconstruct( - rem_frag_list, - target_ref, - cell_vector, - refcell, - cov_factor=cov_factor, - metal_factor=metal_factor, - full=True, - debug=debug, - ) - print(f"{[mol.formula for mol in list_of_found_molecules]=}") - print(f"{[frag.formula for frag in final_remaining]=}") - if len(list_of_found_molecules) > 0: - reconstructed_molecules.extend(list_of_found_molecules) - if len(final_remaining) > 0: - final_remaining_fragments.extend(final_remaining) - elif len(rem_frag_list) == 1: - final_remaining_fragments.extend(rem_frag_list) - - return final_remaining_fragments, reconstructed_molecules - - -def get_moleclist(newcell, refcell, all_molecules, debug: int = 0): - cov_factor = refcell.refmoleclist[0].cov_factor - metal_factor = refcell.refmoleclist[0].metal_factor - - # Get moleclist for the unit cell - newcell.moleclist = [] - - for mol in all_molecules: - newmolec = molecule(mol.labels, mol.coord, mol.frac_coord) - mol_atom_site_labels = [ - refcell.atom_site_labels[idx] for idx in mol.ref_indices - ] - if debug >= 2: - print("GET_MOLECLIST: ", mol.formula) - print("GET_MOLECLIST: ", mol.ref_indices) - print("GET_MOLECLIST: ", mol.labels) - print("GET_MOLECLIST: ", mol_atom_site_labels) - - newmolec.origin = "cell.reconstruct" - newmolec.set_adjacency_parameters(cov_factor, metal_factor) - newmolec.set_atoms( - create_adjacencies=True, - atom_site_labels=mol_atom_site_labels, - geom_bond_cif=refcell.geom_bond_cif, - debug=debug, - ) - newmolec.add_parent(newcell, mol.cell_indices) - newmolec.add_parent(refcell, mol.ref_indices) - for atom, idx in zip(newmolec.atoms, mol.cell_indices): - atom.add_parent(newcell, index=idx) - for atom, idx in zip(newmolec.atoms, mol.ref_indices): - atom.add_parent(refcell, index=idx) - if newmolec.iscomplex: - newmolec.split_complex() - elif newmolec.has_IA_IIA: - newmolec.split_IA_IIA() - else: - newmolec.add_parent(newmolec, indices=[*range(0, newmolec.natoms, 1)]) - newcell.moleclist.append(newmolec) - - for mol in newcell.moleclist: - if mol.iscomplex: - if debug >= 1: - print( - f"GET_MOLECLIST: working with {mol.formula} with transition metals" - ) - mol.get_hapticity(debug=debug) - if len(mol.ligands) == 0: - if debug >= 1: - print(f"GET_MOLECLIST: {mol.formula} is a metal cluster") - else: - for lig in mol.ligands: - lig.get_denticity(debug=debug) - for met in mol.metals: - met.get_connected_metals(debug=debug) - met.get_coordination_geometry(debug=debug) - met.get_coord_sphere_formula(debug=debug) - elif mol.has_IA_IIA: - if debug >= 1: - print( - f"GET_MOLECLIST: working with {mol.formula} with alkali or alkali earth metals" - ) - if len(mol.ligands) == 0: - pass - else: - for lig in mol.ligands: - lig.get_denticity(debug=debug) - for met in mol.metals: - met.get_connected_metals(debug=debug) - met.get_coordination_geometry(debug=debug) - met.get_coord_sphere_formula(debug=debug) - - return newcell - - -def get_unique_indices(newcell, reference_species_list, debug: int = 0): - - newcell.unique_indices = [] - newcell.species_list = [] - for mol in newcell.moleclist: - if not mol.iscomplex and not mol.has_IA_IIA: - for ref in reference_species_list: - if ( - (ref.subtype == "molecule") - and not ref.iscomplex - and not ref.has_IA_IIA - ): - issame = compare_reference_indices(ref, mol, debug=debug) - if issame: - mol.unique_index = ref.unique_index - if debug >= 2: - print( - f"Matched {mol.formula} {ref.formula} {mol.unique_index} {ref.unique_index}" - ) - newcell.unique_indices.append(mol.unique_index) - newcell.species_list.append(mol) - else: - for ref in reference_species_list: - if ref.subtype == "ligand": - for lig in mol.ligands: - issame = compare_reference_indices(ref, lig, debug=debug) - if issame: - lig.unique_index = ref.unique_index - if debug >= 2: - print( - f"Matched {lig.formula} {ref.formula} {lig.unique_index} {ref.unique_index}" - ) - newcell.unique_indices.append(lig.unique_index) - newcell.species_list.append(lig) - if ref.subtype == "metal": - for met in mol.metals: - if ref.get_parent_index("reference") == met.get_parent_index( - "reference" - ): - met.unique_index = ref.unique_index - if debug >= 2: - print( - f"Matched {met.formula} {ref.formula} {met.unique_index} {ref.unique_index}" - ) - newcell.unique_indices.append(met.unique_index) - newcell.species_list.append(met) - - return newcell diff --git a/cell2mol/helper.py b/cell2mol/helper.py deleted file mode 100644 index 6f9fb0a30..000000000 --- a/cell2mol/helper.py +++ /dev/null @@ -1,100 +0,0 @@ -#!/usr/bin/env python - -import argparse -import numpy as np - -def parsing_arguments(): - """Parses the arguments of the command line. - - Returns: - filename (str): filename of the input file - step (int): step of the program to be executed - verbose (bool): verbose flag - quiet (bool): quiet flag - """ - parser = argparse.ArgumentParser( - prog="cell2mol", - description="Interprets the crystallography file (.cif) of a molecular crystal, and stores the information in a python cell object", - add_help=True - ) - - parser.add_argument( - "-i", - "--input", - dest="filename", - type=str, - required=True, - help="Filename of Input (.cif or .xyz file)", - ) - - parser.add_argument( - "-t", - "--type", - dest="system_type", - type=str, - choices=["reference", "unitcell", "molecule"], - required=True, - help="Type of information in the input file ('reference', 'unitcell' or 'molecule')", - ) - - parser.add_argument( - "--cell-para", - dest="cell_para", - type=float, - nargs=6, - help="Cell parameters (a, b, c, alpha, beta, gamma) for .xyz file", - ) - parser.add_argument( - "--charge", - dest="charge", - type=int, - help="Total charge of a molecule in .xyz file", - ) - parser.add_argument( - "--cif_bond_info", - dest="cif_bond_info", - type=bool, - help="Generate adjacency matrix based on CIF bond information", - ) - parser.add_argument( - "-v", - "--verbose", - help="Extended output for debugging.", - action="store_true", - ) - - parser.add_argument( - "-q", - "--quiet", - help="Suppress all screen output. Overrides --verbose flag.", - action="store_true", - ) - - args = parser.parse_args() - - cell_para = None - if args.filename.endswith(".xyz") and args.system_type == "unitcell": - if args.cell_para is None: - parser.error("Cell parameters must be provided for .xyz file of an unit cell") - cell_para = np.array(args.cell_para) - - # if args.filename.endswith(".xyz") and args.system_type == "molecule": - # if args.charge is None: - # parser.error("Total charge must be provided for .xyz file of a molecule") - - debug_mode = determine_debug_level(args.verbose, args.quiet) - return args.filename, args.system_type, args.cif_bond_info, cell_para, args.charge, debug_mode - -def determine_debug_level(isverbose, isquiet): - if isverbose and not isquiet: - return 2 - elif isverbose and isquiet: - return 0 - elif not isverbose and isquiet: - return 0 - elif not isverbose and not isquiet: - return 1 - - -if __name__ == "__main__": - parsing_arguments() diff --git a/cell2mol/hungarian.py b/cell2mol/hungarian.py deleted file mode 100644 index fc951c9c2..000000000 --- a/cell2mol/hungarian.py +++ /dev/null @@ -1,62 +0,0 @@ -#!/usr/env python -import numpy as np -from scipy.spatial.distance import cdist -from scipy.optimize import linear_sum_assignment as lsa - -def center(X): - X = np.array(X) - C = X.mean(axis=0) - X -= C - return X, C - -def reorder_hungarian(z1, z2, coord1, coord2): - unique_atoms = np.unique(z1) - map12 = np.zeros_like(z1, dtype=int) - map12 -= 1 - for atom in unique_atoms: - (aidx1,) = np.where(z1 == atom) - (aidx2,) = np.where(z2 == atom) - acoord1 = coord1[aidx1] - acoord2 = coord2[aidx2] - v = hungarian(acoord1, acoord2) - map12[aidx1] = aidx2[v] - return map12 - -def hungarian(a, b): - distances = cdist(a, b, "euclidean") - ia, ib = lsa(distances) - return ib - -def reorder(z1, z2, coord1, coord2): - z1 = np.array(z1) - z2 = np.array(z2) - coord1, c1 = center(coord1) - coord2, c2 = center(coord2) - assert len(z1) == len(z2) - assert coord1.shape == coord2.shape - map12 = reorder_hungarian(z1, z2, coord1, coord2) - z2 = z2[map12] - coord2 = coord2[map12, :] - return list(z2), list(coord2 + c2), map12 - -def test_reorder(): - # Two water molecules with different order! - A = np.array([[1.5, 1.0], [1.0, 2.0], [2.0, 1.5]]) - B = np.array([[1.0, 2.0], [1.5, 1.0], [2.0, 1.5]]) - rn = np.random.random(3) - for i in range(3): - A[i] *= 1 + (0.1 * rn[i]) - rn = np.random.random(3) - for i in range(3): - B[i] *= 1 + (0.1 * rn[i]) - za = ["O", "H", "H"] - zb = ["H", "O", "H"] - # We attempt to reorder them - zb2, B2, mapab = reorder(za, zb, A, B) - assert za == zb2 - for i, idx in enumerate(mapab): - print(za[i], zb2[i], zb[idx]) - print(A[i], B2[i], B[idx]) - -if __name__ == "__main__": - test_reorder() diff --git a/cell2mol/hydrogen.py b/cell2mol/hydrogen.py new file mode 100644 index 000000000..c0fbf379d --- /dev/null +++ b/cell2mol/hydrogen.py @@ -0,0 +1,535 @@ +#!/usr/bin/env python +""" +This module provides utilities +to detect missing hydrogen atoms in molecules using adjacency and geometric analysis. +to place hydrogen atoms based on existing neighbors and add hydrogen for protonation state. +""" + +import logging +import numpy as np +from typing import Tuple +from cell2mol.operations import get_angle, unit_vector, perp_unit, kabsch_rotation +from cell2mol.elementdata import ElementData +from cell2mol.element_utils import ALKALI_AND_ALKALINE_EARTH_METALS + +logger = logging.getLogger(__name__) +elemdatabase = ElementData() + + +def detect_missing_hydrogens( + atomic_number, center_coord, neighbor_coords, neighbor_labels +): + """Detect missing hydrogen atoms from local adjacency geometry. + + Args: + atomic_number (int): atomic number of the central atom + center_coord (array-like): coordinates of the central atom + neighbor_coords (list): coordinates of bonded neighboring atoms + neighbor_labels (list): element symbols of bonded atoms + + Returns: + tuple: + missing_h (bool): whether hydrogens are missing + report (str): textual explanation + num_missing_h (int): estimated number of missing hydrogens + """ + missing_h = False + report = "" + + observed_coordination = len(neighbor_coords) + + bond_vectors = [ + unit_vector(np.subtract(coord, center_coord)) for coord in neighbor_coords + ] + + geometry, expected_coordination, geometry_report = infer_coordination_geometry( + bond_vectors + ) + + if observed_coordination == 1: + missing_h = True + elif observed_coordination < expected_coordination: + missing_h = True + + num_missing_h = max(expected_coordination - observed_coordination, 0) + + report += f" - Atom has {observed_coordination} adjacent atoms\n" + + if observed_coordination == 1 and missing_h: + report += ( + f" - Single adjacent atom {neighbor_labels[0]} " + f"(possibly methyl group with missing H)\n" + ) + else: + report += ( + f" - Geometry {geometry} suggests coordination {expected_coordination}\n" + ) + + report += geometry_report + + return missing_h, report, num_missing_h + + +def infer_coordination_geometry(bond_vectors): + """Infer coordination geometry from bond vectors. + + Args: + bond_vectors (list): list of unit bond vectors + + Returns: + tuple: + geometry (str): assigned geometry name + coordination_number (int): expected coordination number + geometry_report (str): diagnostic angle information + """ + atol = 4e-1 + geometry = "Unassigned" + coordination_number = 0 + geometry_report = "" + + n = len(bond_vectors) + if n == 1: + return "Point", 1, geometry_report + + # --- Compute unique angles only once --- + angles = [ + get_angle(bond_vectors[i], bond_vectors[j]) + for i in range(n) + for j in range(i + 1, n) + ] + + if not angles: + logger.warning(" - No bond angles computed; returning NaN") + return geometry, coordination_number, geometry_report + + avg_angle = float(np.mean(angles)) + + # --- Report angles in degrees --- + angles_deg = [round(float(x), 3) for x in np.degrees(angles)] + avg_deg = round(float(np.degrees(avg_angle)), 3) + geometry_report += f" - Angles (deg): {angles_deg} Avg: {avg_deg}\n" + + # --- Ideal angles (radians) --- + ideal_angles = { + "Linear": np.pi, + "Triangular": 2.094395, # 120° + "SquarePlanar": 1.570796, # 90° + "Tetrahedral": 1.911136, # 109.47° + } + + # --- Compute deviations cleanly --- + angle_differences = { + name: round(float(abs(avg_angle - val)), 3) + for name, val in ideal_angles.items() + } + + best_geometry = min(angle_differences, key=angle_differences.get) + min_difference = angle_differences[best_geometry] + + geometry_report += ( + f" - Angle_differences: {angle_differences} Min_diff: {min_difference}\n" + ) + + # --- Assign geometry --- + if min_difference <= atol: + geometry = best_geometry + coordination_number = { + "Linear": 2, + "Triangular": 3, + "SquarePlanar": 4, + "Tetrahedral": 4, + }[geometry] + + return geometry, coordination_number, geometry_report + + +def check_missing_hydrogens(reference_molecules): + """Check for missing hydrogen atoms in reference molecules. + + Args: + reference_molecules (list): list of reference molecule objects + + Returns: + tuple: + has_missing_h (bool): True if missing hydrogens are detected + missing_h_detected (bool): last evaluated missing-H state + missing_h_in_carbon (bool): missing H in coordinated carbon atoms + missing_h_in_coordinated_water (bool): missing H in coordinated water + missing_h_in_water (bool): missing H in isolated water + """ + missing_h_in_carbon = False + missing_h_in_water = False + missing_h_in_coordinated_water = False + missing_h_detected = False + fullerenes = {"C60", "C72", "C80"} + + logger.info("Detecting any missing hydrogens in reference molecules...") + + for ref in reference_molecules: + if ref.is_non_complex_molecule: + if ref.natoms == 1 and ref.labels[0] == "O": + missing_h_in_water = True + logger.warning( + "Isolated O atom detected (possible water with missing H)" + ) + continue + + if ( + ref.formula in {"C-N", "C-P", "C-As", "C-Sb"} + or ref.formula in {"C-O", "C-S", "C-Se", "C-Te"} + or ref.formula in fullerenes + ): + continue + + for atom in ref.atoms: + if atom.label != "C" or atom.adjacency is None: + continue + + neighbor_coords = [ref.coord[i] for i in atom.adjacency] + neighbor_labels = [ref.labels[i] for i in atom.adjacency] + + missing_h_detected, report, _ = detect_missing_hydrogens( + atom.atnum, + atom.coord, + neighbor_coords, + neighbor_labels, + ) + + if missing_h_detected: + logger.warning( + "Missing H in Molecule (formula: %s), C atom %s%s (mol idx %s)", + ref.formula, + atom.coord, + f" ({atom.atom_site_label})" if atom.atom_site_label else "", + atom.get_parent_index("molecule"), + ) + for line in report.splitlines(): + logger.warning(line) + missing_h_in_carbon = True + + else: + for lig in ref.ligands: + is_single_oxygen = lig.formula == "O" + if is_single_oxygen: + oxygen_atom = lig.atoms[0] + connected_metals = getattr(lig, "metals", []) + if len(connected_metals) >= 2: + logger.warning( + "Ligand (formula: %s) has multiple connected metals %s; skipping bridged O atom", + lig.formula, + [m.label for m in connected_metals], + ) + elif len(connected_metals) == 1: + metal = connected_metals[0] + threshold_distance = 1.9 # Å + distance_to_metal = np.linalg.norm( + oxygen_atom.coord - metal.coord + ) + if distance_to_metal > threshold_distance: + missing_h_in_coordinated_water = True + + if ( + lig.formula in {"C-N", "C-P", "C-As", "C-Sb"} + or lig.formula in {"C-O", "C-S", "C-Se", "C-Te"} + or lig.formula in fullerenes + ): + continue + + only_carbon = all(el == "C" for el in lig.labels) and lig.natoms > 2 + for atom_idx, atom in enumerate(lig.atoms): + if atom.label != "C" or atom.adjacency is None: + continue + + if atom.mconnec >= 1 and not only_carbon: + continue + + neighbor_coords = [ref.coord[i] for i in atom.adjacency] + neighbor_labels = [ref.labels[i] for i in atom.adjacency] + + missing_h_detected, report, _ = detect_missing_hydrogens( + atom.atnum, + atom.coord, + neighbor_coords, + neighbor_labels, + ) + + if missing_h_detected: + logger.warning( + "Missing H in Ligand (formula: %s), C atom %s%s (mol idx %s)", + lig.formula, + atom.coord, + f" ({atom.atom_site_label})" + if atom.atom_site_label + else "", + atom.get_parent_index("molecule"), + ) + for line in report.splitlines(): + logger.warning(line) + missing_h_in_carbon = True + + has_missing_h = ( + missing_h_in_carbon or missing_h_in_coordinated_water or missing_h_in_water + ) + + if not has_missing_h: + logger.info("No missing hydrogen atoms detected") + + return ( + has_missing_h, + missing_h_in_carbon, + missing_h_in_coordinated_water, + missing_h_in_water, + ) + + +def place_hydrogens( + C, + N1=None, + N2=None, + N3=None, + r_CH=1.09, + hybridization="auto", + sp2_angle_window=(95, 145), + sp3_angle_window=(95, 125), +): + """ + Place hydrogens on a carbon with 1–3 existing neighbors. + + Rules + ----- + - 1 neighbor: add 2 H (sp2), add 3 H (sp3) + - 2 neighbors: add 1 H (sp2), add 2 H (sp3) + - 3 neighbors: add 1 H (sp3) [sp2 invalid -> raises] + + Auto behavior + ------------- + - 1 neighbor: defaults to 'sp3' + - 2 neighbors: infer from angle windows (same as before) + - 3 neighbors: 'sp3' + + Returns + ------- + Hs : (k,3) array of hydrogen coordinates. + """ + C = np.asarray(C, float) + neighbors = [v for v in (N1, N2, N3) if v is not None] + n_nb = len(neighbors) + if n_nb == 0 or n_nb > 3: + raise ValueError("This function supports 1–3 neighbors.") + + # Unit vectors from C toward neighbors + us = [] + for i, N in enumerate(neighbors): + u = np.asarray(N, float) - C + if np.linalg.norm(u) < 1e-12: + raise ValueError(f"Neighbor {i + 1} coincides with C.") + us.append(unit_vector(u)) + + # Tetrahedral template (four directions) + u1 = unit_vector(np.array([1, 1, 1], float)) + u2 = unit_vector(np.array([1, -1, -1], float)) + u3 = unit_vector(np.array([-1, 1, -1], float)) + u4 = unit_vector(np.array([-1, -1, 1], float)) + # Utemp = [u1, u2, u3, u4] + + mode = hybridization.lower() + if mode not in ("auto", "sp2", "sp3"): + raise ValueError("hybridization must be 'auto', 'sp2', or 'sp3'.") + + # ---------- CASE: 1 neighbor ---------- + if n_nb == 1: + a = us[0] + if mode == "auto": + mode = "sp3" # default to methyl (CH3) + if mode == "sp2": + # Planar CH2 + p1 = unit_vector(-a) # opposite to neighbor + p2 = perp_unit(a) # any unit vector ⟂ a defines the plane + c60 = 0.5 + s60 = np.sqrt(3) / 2.0 + d1 = unit_vector(c60 * p1 + s60 * p2) + d2 = unit_vector(c60 * p1 - s60 * p2) + H1 = C + r_CH * d1 + H2 = C + r_CH * d2 + return np.vstack([H1, H2]) # two hydrogens + else: # sp3 → three hydrogens (methyl) + # Align template so one vertex aligns with neighbor; fix rotation using a ⟂ axis + b_perp = perp_unit(a) + P = np.stack([u1, u2], axis=1) # template pair to pin orientation + Q = np.stack([a, b_perp], axis=1) # target pair + R = kabsch_rotation(P, Q) + dH2 = unit_vector(R @ u2) + dH3 = unit_vector(R @ u3) + dH4 = unit_vector(R @ u4) + H2 = C + r_CH * dH2 + H3 = C + r_CH * dH3 + H4 = C + r_CH * dH4 + return np.vstack([H2, H3, H4]) # three hydrogens + + # ---------- CASE: 2 neighbors ---------- + if n_nb == 2: + a, b = us + # Angle between neighbors + cosang = np.clip(a @ b, -1.0, 1.0) + angle = np.degrees(np.arccos(cosang)) + + def add_sp2_two(): + # In-plane bisector opposite to existing bonds + dH = -(a + b) + if np.linalg.norm(dH) < 1e-8: + raise ValueError( + "Neighbors nearly opposite (sp-like). Cannot place sp2 hydrogen reliably." + ) + dH = unit_vector(dH) + return np.array([C + r_CH * dH]) # one hydrogen + + def add_sp3_two(): + # Align two template directions to a,b then use the other two for H's + P = np.stack([u1, u2], axis=1) # 3x2 template + Q = np.stack([a, b], axis=1) # 3x2 targets + R = kabsch_rotation(P, Q) + dH1 = unit_vector(R @ u3) + dH2 = unit_vector(R @ u4) + H1 = C + r_CH * dH1 + H2 = C + r_CH * dH2 + return np.vstack([H1, H2]) # two hydrogens + + if mode == "auto": + in_sp3 = sp3_angle_window[0] <= angle <= sp3_angle_window[1] + in_sp2 = sp2_angle_window[0] <= angle <= sp2_angle_window[1] + if in_sp3 and not in_sp2: + return add_sp3_two() + if in_sp2 and not in_sp3: + return add_sp2_two() + # closest target + target_sp3 = 109.47 + target_sp2 = 120.0 + if abs(angle - target_sp3) < abs(angle - target_sp2): + return add_sp3_two() + else: + return add_sp2_two() + elif mode == "sp3": + return add_sp3_two() + else: # sp2 + return add_sp2_two() + + # ---------- CASE: 3 neighbors ---------- + if n_nb == 3: + if mode == "auto": + mode = "sp3" + if mode != "sp3": + raise ValueError( + "With 3 neighbors, only 'sp3' is supported (adds one hydrogen)." + ) + a, b, c = us + # Align three template directions to the three neighbors; remaining vertex gives H + P = np.stack([u1, u2, u3], axis=1) # 3x3 template + Q = np.stack([a, b, c], axis=1) # 3x3 targets + R = kabsch_rotation(P, Q) + dH = unit_vector(R @ u4) + H = C + r_CH * dH + return np.array([H]) # one hydrogen + + # Should not reach here + raise RuntimeError("Unhandled neighbor count.") + + +def add_hydrogens( + labels: list, + coords: np.ndarray, + site: int, + ligand: object, + num_hydrogens: int, + element: str = "H", +) -> Tuple[bool, list, np.ndarray]: + """Add hydrogens to a given atom site.""" + + isadded = True + newlab = labels.copy() + newcoord = coords.copy() + + for idx, atom in enumerate(ligand.atoms): + if idx != site: + continue + + apos = np.array(atom.coord, copy=True) + bonded_atom_coord = [] + bonded_atom_labels = [] + + for adj in atom.adjacency: + n_label = ligand.get_parent("molecule").labels[adj] + n_coord = ligand.get_parent("molecule").coord[adj] + + # Skip d- and f-block elements + if elemdatabase.elementblock[n_label] in {"d", "f"}: + continue + if n_label in ALKALI_AND_ALKALINE_EARTH_METALS: + continue + bonded_atom_coord.append(n_coord) + bonded_atom_labels.append(n_label) + + logger.debug( + "atom=%s site=%s adjacency=%s bonded_labels=%s num_hydrogens=%d", + atom.label, + atom.atom_site_label, + atom.adjacency, + bonded_atom_labels, + num_hydrogens, + ) + + if atom.label == "C": + ismissingH, report, num_missingH = detect_missing_hydrogens( + atom.atnum, + atom.coord, + bonded_atom_coord, + bonded_atom_labels, + ) + logger.debug( + "detect_missing_hydrogens -> %s, %s, %d", + ismissingH, + report, + num_missingH, + ) + else: + ismissingH, report, num_missingH = True, "", 2 + + Hs = None + + if num_hydrogens == 2: + if len(bonded_atom_labels) == 1: + Hs = place_hydrogens( + apos, + bonded_atom_coord[0], + hybridization="sp2", + ) + elif len(bonded_atom_labels) == 2: + Hs = place_hydrogens( + apos, + bonded_atom_coord[0], + bonded_atom_coord[1], + hybridization="sp3", + ) + + elif num_hydrogens == 3: + if len(bonded_atom_labels) == 1: + Hs = place_hydrogens( + apos, + bonded_atom_coord[0], + hybridization="sp3", + ) + + if Hs is not None and Hs.shape[0] == num_hydrogens: + for h in Hs: + newcoord = np.vstack([newcoord, h]) + newlab.append(str(element)) + + logger.debug( + "Added %d %s atoms to site=%d (%s, %s)", + num_hydrogens, + element, + site, + atom.label, + atom.atom_site_label, + ) + + return isadded, newlab, newcoord diff --git a/cell2mol/ideal_structures_center.yaml b/cell2mol/ideal_structures_center.yaml new file mode 100644 index 000000000..da97ab50b --- /dev/null +++ b/cell2mol/ideal_structures_center.yaml @@ -0,0 +1,1082 @@ +L-2: +- [ 1.224744871392, -0.000000000000, 0.000000000000] +- [ -1.224744871392, 0.000000000000, 0.000000000000] +- [ 0.000000000000, -0.000000000000, 0.000000000000] +vT-2: +- [ 0.801783725737, 0.801783725737, 0.267261241912] +- [ -0.801783725737, -0.801783725737, 0.267261241912] +- [ 0.000000000000, 0.000000000000, -0.534522483825] +vOC-2: +- [ 1.000000000000, -0.500000000000, 0.000000000000] +- [ -0.500000000000, 1.000000000000, 0.000000000000] +- [ -0.500000000000, -0.500000000000, 0.000000000000] +TP-3: +- [ 1.154700538379, -0.000000000000, 0.000000000000] +- [ -0.577350269190, 1.000000000000, 0.000000000000] +- [ -0.577350269190, -1.000000000000, 0.000000000000] +- [ 0.000000000000, -0.000000000000, 0.000000000000] +vT-3: +- [ 1.137070487230, -0.000000000000, 0.100503781526] +- [ -0.568535243615, 0.984731927835, 0.100503781526] +- [ -0.568535243615, -0.984731927835, 0.100503781526] +- [ 0.000000000000, -0.000000000000, -0.301511344578] +fvOC-3: +- [ 1.000000000000, -0.333333333333, -0.333333333333] +- [ -0.333333333333, 1.000000000000, -0.333333333333] +- [ -0.333333333333, -0.333333333333, 1.000000000000] +- [ -0.333333333333, -0.333333333333, -0.333333333333] +mvOC-3: +- [ 1.206045378311, -0.301511344578, 0.000000000000] +- [ 0.000000000000, 0.904534033733, 0.000000000000] +- [ -1.206045378311, -0.301511344578, 0.000000000000] +- [ 0.000000000000, -0.301511344578, 0.000000000000] +SP-4: +- [ 1.118033988750, -0.000000000000, 0.000000000000] +- [ 0.000000000000, 1.118033988750, 0.000000000000] +- [ -1.118033988750, 0.000000000000, 0.000000000000] +- [ -0.000000000000, -1.118033988750, 0.000000000000] +- [ 0.000000000000, -0.000000000000, 0.000000000000] +T-4: +- [ 0.000000000000, 0.912870929175, -0.645497224368] +- [ -0.000000000000, -0.912870929175, -0.645497224368] +- [ 0.912870929175, -0.000000000000, 0.645497224368] +- [ -0.912870929175, 0.000000000000, 0.645497224368] +- [ 0.000000000000, -0.000000000000, 0.000000000000] +SS-4: +- [ -0.235702260396, -0.235702260396, -1.178511301978] +- [ 0.942809041582, -0.235702260396, 0.000000000000] +- [ -0.235702260396, 0.942809041582, 0.000000000000] +- [ -0.235702260396, -0.235702260396, 1.178511301978] +- [ -0.235702260396, -0.235702260396, 0.000000000000] +vTBPY-4: +- [ 0.000000000000, -0.000000000000, -0.917662935482] +- [ 1.147078669353, -0.000000000000, 0.229415733871] +- [ -0.573539334676, 0.993399267799, 0.229415733871] +- [ -0.573539334676, -0.993399267799, 0.229415733871] +- [ 0.000000000000, -0.000000000000, 0.229415733871] +PP-5: +- [ 1.095445115010, -0.000000000000, 0.000000000000] +- [ 0.338511156943, 1.041830214874, 0.000000000000] +- [ -0.886233714448, 0.643886483299, 0.000000000000] +- [ -0.886233714448, -0.643886483299, 0.000000000000] +- [ 0.338511156943, -1.041830214874, 0.000000000000] +- [ 0.000000000000, -0.000000000000, 0.000000000000] +vOC-5: +- [ 0.000000000000, -0.000000000000, -0.928476690885] +- [ 1.114172029062, -0.000000000000, 0.185695338177] +- [ 0.000000000000, 1.114172029062, 0.185695338177] +- [ -1.114172029062, 0.000000000000, 0.185695338177] +- [ -0.000000000000, -1.114172029062, 0.185695338177] +- [ 0.000000000000, -0.000000000000, 0.185695338177] +TBPY-5: +- [ 0.000000000000, -0.000000000000, -1.095445115010] +- [ 1.095445115010, -0.000000000000, 0.000000000000] +- [ -0.547722557505, 0.948683298051, 0.000000000000] +- [ -0.547722557505, -0.948683298051, 0.000000000000] +- [ 0.000000000000, -0.000000000000, 1.095445115010] +- [ 0.000000000000, -0.000000000000, 0.000000000000] +SPY-5: +- [ 0.000000000000, 0.000000000000, 1.095445115010] +- [ 1.060660171780, 0.000000000000, -0.273861278753] +- [ 0.000000000000, 1.060660171780, -0.273861278753] +- [ -1.060660171780, 0.000000000000, -0.273861278753] +- [ 0.000000000000, -1.060660171780, -0.273861278753] +- [ 0.000000000000, 0.000000000000, 0.000000000000] +JTBPY-5: +- [ 0.925820099773, -0.000000000000, 0.000000000000] +- [ -0.462910049886, 0.801783725737, 0.000000000000] +- [ -0.462910049886, -0.801783725737, 0.000000000000] +- [ 0.000000000000, -0.000000000000, 1.309307341416] +- [ 0.000000000000, -0.000000000000, -1.309307341416] +- [ 0.000000000000, -0.000000000000, 0.000000000000] +HP-6: +- [ 1.080123449735, -0.000000000000, 0.000000000000] +- [ 0.540061724867, 0.935414346693, 0.000000000000] +- [ -0.540061724867, 0.935414346693, 0.000000000000] +- [ -1.080123449735, 0.000000000000, 0.000000000000] +- [ -0.540061724867, -0.935414346693, 0.000000000000] +- [ 0.540061724867, -0.935414346693, 0.000000000000] +- [ 0.000000000000, -0.000000000000, 0.000000000000] +PPY-6: +- [ 0.000000000000, -0.000000000000, -0.937042571332] +- [ 1.093216333220, -0.000000000000, 0.156173761889] +- [ 0.337822425493, 1.039710517429, 0.156173761889] +- [ -0.884430592103, 0.642576438232, 0.156173761889] +- [ -0.884430592103, -0.642576438232, 0.156173761889] +- [ 0.337822425493, -1.039710517429, 0.156173761889] +- [ 0.000000000000, -0.000000000000, 0.156173761889] +OC-6: +- [ 0.000000000000, -0.000000000000, -1.080123449735] +- [ 1.080123449735, -0.000000000000, 0.000000000000] +- [ 0.000000000000, 1.080123449735, 0.000000000000] +- [ -1.080123449735, 0.000000000000, 0.000000000000] +- [ -0.000000000000, -1.080123449735, 0.000000000000] +- [ 0.000000000000, -0.000000000000, 1.080123449735] +- [ 0.000000000000, -0.000000000000, 0.000000000000] +TPR-6: +- [ 0.816496580928, -0.000000000000, -0.707106781187] +- [ -0.408248290464, 0.707106781187, -0.707106781187] +- [ -0.408248290464, -0.707106781187, -0.707106781187] +- [ 0.816496580928, -0.000000000000, 0.707106781187] +- [ -0.408248290464, 0.707106781187, 0.707106781187] +- [ -0.408248290464, -0.707106781187, 0.707106781187] +- [ 0.000000000000, -0.000000000000, 0.000000000000] +JPPY-6: +- [ 1.146281780821, -0.000000000000, 0.101205871605] +- [ 0.354220550616, 1.090178757161, 0.101205871605] +- [ -0.927361441027, 0.673767525738, 0.101205871605] +- [ -0.927361441027, -0.673767525738, 0.101205871605] +- [ 0.354220550616, -1.090178757161, 0.101205871605] +- [ 0.000000000000, -0.000000000000, -0.607235229628] +- [ 0.000000000000, -0.000000000000, 0.101205871605] +HP-7: +- [ 1.069044967650, 0.000000000000, 0.000000000000] +- [ 0.666538635058, 0.835813011883, 0.000000000000] +- [ -0.237884884643, 1.042241778339, 0.000000000000] +- [ -0.963176234240, 0.463841227849, 0.000000000000] +- [ -0.963176234240, -0.463841227849, 0.000000000000] +- [ -0.237884884643, -1.042241778339, 0.000000000000] +- [ 0.666538635058, -0.835813011883, 0.000000000000] +- [ 0.000000000000, 0.000000000000, 0.000000000000] +HPY-7: +- [ 0.000000000000, -0.000000000000, -0.943879807449] +- [ 1.078719779941, -0.000000000000, 0.134839972493] +- [ 0.539359889971, 0.934198732994, 0.134839972493] +- [ -0.539359889971, 0.934198732994, 0.134839972493] +- [ -1.078719779941, 0.000000000000, 0.134839972493] +- [ -0.539359889971, -0.934198732994, 0.134839972493] +- [ 0.539359889971, -0.934198732994, 0.134839972493] +- [ 0.000000000000, -0.000000000000, 0.134839972493] +PBPY-7: +- [ 0.000000000000, -0.000000000000, -1.069044967650] +- [ 1.069044967650, -0.000000000000, 0.000000000000] +- [ 0.330353062755, 1.016722182696, 0.000000000000] +- [ -0.864875546580, 0.628368866022, 0.000000000000] +- [ -0.864875546580, -0.628368866022, 0.000000000000] +- [ 0.330353062755, -1.016722182696, 0.000000000000] +- [ 0.000000000000, -0.000000000000, 1.069044967650] +- [ 0.000000000000, -0.000000000000, 0.000000000000] +COC-7: +- [ 0.000000000000, 0.000000000000, 1.128906708829] +- [ 0.000000000000, -1.046937018035, 0.283078548570] +- [ 0.906674032650, 0.523468509017, 0.283078548570] +- [ -0.906674032650, 0.523468509017, 0.283078548570] +- [ 0.672964536915, -0.388536257092, -0.678734552207] +- [ -0.672964536915, -0.388536257092, -0.678734552207] +- [ 0.000000000000, 0.777072514184, -0.678734552207] +- [ 0.000000000000, 0.000000000000, 0.058061302083] +CTPR-7: +- [ 0.000000000000, 0.000000000000, 1.020027096827] +- [ 0.735247575071, 0.735247575071, 0.203750780644] +- [ -0.735247575071, 0.735247575071, 0.203750780644] +- [ 0.735247575071, -0.735247575071, 0.203750780644] +- [ -0.735247575071, -0.735247575071, 0.203750780644] +- [ 0.660960557032, 0.000000000000, -0.892328424325] +- [ -0.660960557032, 0.000000000000, -0.892328424325] +- [ 0.000000000000, 0.000000000000, -0.050373370753] +JPBPY-7: +- [ 1.178109256681, -0.000000000000, 0.000000000000] +- [ 0.364055781545, 1.120448485474, 0.000000000000] +- [ -0.953110409886, 0.692475246666, 0.000000000000] +- [ -0.953110409886, -0.692475246666, 0.000000000000] +- [ 0.364055781545, -1.120448485474, 0.000000000000] +- [ 0.000000000000, -0.000000000000, 0.728111563090] +- [ 0.000000000000, -0.000000000000, -0.728111563090] +- [ 0.000000000000, -0.000000000000, 0.000000000000] +JETPY-7: +- [ 0.729093431342, -0.000000000000, 0.423600026760] +- [ 0.729093431342, -0.000000000000, -0.839226839789] +- [ -0.364546715671, 0.631413433275, 0.423600026760] +- [ -0.364546715671, 0.631413433275, -0.839226839789] +- [ -0.364546715671, -0.631413433275, 0.423600026760] +- [ -0.364546715671, -0.631413433275, -0.839226839789] +- [ 0.000000000000, -0.000000000000, 1.454693845602] +- [ 0.000000000000, -0.000000000000, -0.207813406515] +OP-8: +- [ 1.060660171780, 0.000000000000, 0.000000000000] +- [ 0.750000000000, 0.750000000000, 0.000000000000] +- [ 0.000000000000, 1.060660171780, 0.000000000000] +- [ -0.750000000000, 0.750000000000, 0.000000000000] +- [ -1.060660171780, 0.000000000000, 0.000000000000] +- [ -0.750000000000, -0.750000000000, 0.000000000000] +- [ -0.000000000000, -1.060660171780, 0.000000000000] +- [ 0.750000000000, -0.750000000000, 0.000000000000] +- [ 0.000000000000, 0.000000000000, 0.000000000000] +HPY-8: +- [ 0.000000000000, 0.000000000000, -0.949425326555] +- [ 1.068103492374, 0.000000000000, 0.118678165819] +- [ 0.665951634825, 0.835076936872, 0.118678165819] +- [ -0.237675386685, 1.041323907815, 0.118678165819] +- [ -0.962327994327, 0.463432737036, 0.118678165819] +- [ -0.962327994327, -0.463432737036, 0.118678165819] +- [ -0.237675386685, -1.041323907815, 0.118678165819] +- [ 0.665951634825, -0.835076936872, 0.118678165819] +- [ 0.000000000000, 0.000000000000, 0.118678165819] +HBPY-8: +- [ 0.000000000000, -0.000000000000, -1.060660171780] +- [ 1.060660171780, -0.000000000000, 0.000000000000] +- [ 0.530330085890, 0.918558653544, 0.000000000000] +- [ -0.530330085890, 0.918558653544, 0.000000000000] +- [ -1.060660171780, 0.000000000000, 0.000000000000] +- [ -0.530330085890, -0.918558653544, 0.000000000000] +- [ 0.530330085890, -0.918558653544, 0.000000000000] +- [ 0.000000000000, -0.000000000000, 1.060660171780] +- [ 0.000000000000, -0.000000000000, 0.000000000000] +CU-8: +- [ 0.866025403784, -0.000000000000, -0.612372435696] +- [ 0.000000000000, 0.866025403784, -0.612372435696] +- [ -0.866025403784, 0.000000000000, -0.612372435696] +- [ -0.000000000000, -0.866025403784, -0.612372435696] +- [ 0.866025403784, -0.000000000000, 0.612372435696] +- [ 0.000000000000, 0.866025403784, 0.612372435696] +- [ -0.866025403784, 0.000000000000, 0.612372435696] +- [ -0.000000000000, -0.866025403784, 0.612372435696] +- [ 0.000000000000, -0.000000000000, 0.000000000000] +SAPR-8: +- [ 0.644649377827, 0.644649377827, -0.542083350910] +- [ -0.644649377827, 0.644649377827, -0.542083350910] +- [ -0.644649377827, -0.644649377827, -0.542083350910] +- [ 0.644649377827, -0.644649377827, -0.542083350910] +- [ 0.911671893098, 0.000000000000, 0.542083350910] +- [ 0.000000000000, 0.911671893098, 0.542083350910] +- [ -0.911671893098, 0.000000000000, 0.542083350910] +- [ -0.000000000000, -0.911671893098, 0.542083350910] +- [ 0.000000000000, 0.000000000000, 0.000000000000] +TDD-8: +- [ -0.636106245143, 0.000000000000, 0.848768388024] +- [ -0.000000009579, -0.993210924257, 0.372146720241] +- [ 0.636106254722, 0.000000000000, 0.848768388024] +- [ -0.000000009579, 0.993210924257, 0.372146720241] +- [ -0.993210876363, 0.000000000000, -0.372146742591] +- [ -0.000000009579, -0.636106206828, -0.848768374454] +- [ 0.993210914678, 0.000000000000, -0.372146742591] +- [ -0.000000009579, 0.636106206828, -0.848768374454] +- [ -0.000000009579, 0.000000000000, 0.000000017561] +JGBF-8: +- [ 0.612372435696, 0.000000000000, 1.060660171780] +- [ -0.612372435696, 0.000000000000, 1.060660171780] +- [ 0.612372435696, 0.612372435696, 0.000000000000] +- [ 0.612372435696, -0.612372435696, 0.000000000000] +- [ -0.612372435696, -0.612372435696, 0.000000000000] +- [ -0.612372435696, 0.612372435696, 0.000000000000] +- [ 0.000000000000, 0.612372435696, -1.060660171780] +- [ 0.000000000000, -0.612372435696, -1.060660171780] +- [ 0.000000000000, 0.000000000000, 0.000000000000] +JETBPY-8: +- [ 0.656233980527, -0.000000000000, 0.568315297963] +- [ 0.656233980527, -0.000000000000, -0.568315297963] +- [ -0.328116990263, 0.568315297963, 0.568315297963] +- [ -0.328116990263, 0.568315297963, -0.568315297963] +- [ -0.328116990263, -0.568315297963, 0.568315297963] +- [ -0.328116990263, -0.568315297963, -0.568315297963] +- [ 0.000000000000, -0.000000000000, 1.496370293314] +- [ 0.000000000000, -0.000000000000, -1.496370293314] +- [ 0.000000000000, -0.000000000000, 0.000000000000] +JBTPR-8: +- [ 0.647117793293, 0.000000000000, 0.604029879248] +- [ -0.647117793293, 0.000000000000, 0.604029879248] +- [ 0.647117793293, 0.647117793293, -0.516811012319] +- [ -0.647117793293, 0.647117793293, -0.516811012319] +- [ 0.647117793293, -0.647117793293, -0.516811012319] +- [ -0.647117793293, -0.647117793293, -0.516811012319] +- [ 0.000000000000, 1.116113113681, 0.501190825503] +- [ 0.000000000000, -1.116113113681, 0.501190825503] +- [ 0.000000000000, 0.000000000000, -0.143197360226] +BTPR-8: +- [ 0.699237877649, 0.000000000000, 0.688732178156] +- [ -0.699237877649, 0.000000000000, 0.688732178156] +- [ 0.699237877649, 0.699237877649, -0.522383347216] +- [ -0.699237877649, 0.699237877649, -0.522383347216] +- [ 0.699237877649, -0.699237877649, -0.522383347216] +- [ -0.699237877649, -0.699237877649, -0.522383347216] +- [ 0.000000000000, 0.925004726938, 0.415373590668] +- [ 0.000000000000, -0.925004726938, 0.415373590668] +- [ 0.000000000000, 0.000000000000, -0.118678148784] +JSD-8: +- [ -0.652225622594, 0.000000000000, -1.022598826988] +- [ 0.652225622594, 0.000000000000, -1.022598826988] +- [ 0.840828401428, 0.000000000000, 0.268145244516] +- [ -0.840828401428, 0.000000000000, 0.268145244516] +- [ 0.000000000000, -0.652225622594, 1.022598102293] +- [ 0.000000000000, 0.652225622594, 1.022598102293] +- [ 0.000000000000, -0.840828401428, -0.268144664760] +- [ 0.000000000000, 0.840828401428, -0.268144664760] +- [ 0.000000000000, 0.000000000000, 0.000000289878] +TT-8: +- [ 0.000000000000, 0.000000000000, 0.951989349863] +- [ -0.897415499947, 0.000000000000, -0.317824238862] +- [ 0.448707702372, -0.777184634355, -0.317824238862] +- [ 0.448707702372, 0.777184634355, -0.317824238862] +- [ 0.000000000000, 0.000000000000, -1.159193629094] +- [ 1.092673129412, 0.000000000000, 0.386903234355] +- [ -0.546336517105, 0.946282696936, 0.386903234355] +- [ -0.546336517105, -0.946282696936, 0.386903234355] +- [ 0.000000000000, 0.000000000000, -0.000032707247] +ETBPY-8: +- [ 0.694365079077, 0.000000000000, 0.801783719423] +- [ -0.694365079077, 0.000000000000, 0.801783719423] +- [ 0.694365079077, 0.694365079077, -0.400891871284] +- [ -0.694365079077, 0.694365079077, -0.400891871284] +- [ 0.694365079077, -0.694365079077, -0.400891871284] +- [ -0.694365079077, -0.694365079077, -0.400891871284] +- [ 1.060660156290, 0.000000000000, 0.000000015430] +- [ -1.060660156290, 0.000000000000, 0.000000015430] +- [ 0.000000000000, 0.000000000000, 0.000000015430] +EP-9: +- [ 1.054092553389, -0.000000000000, 0.000000000000] +- [ 0.807481743057, 0.677557632782, 0.000000000000] +- [ 0.183041250988, 1.038078518970, 0.000000000000] +- [ -0.527046276695, 0.912870929175, 0.000000000000] +- [ -0.990522994045, 0.360520886189, 0.000000000000] +- [ -0.990522994045, -0.360520886189, 0.000000000000] +- [ -0.527046276695, -0.912870929175, 0.000000000000] +- [ 0.183041250988, -1.038078518970, 0.000000000000] +- [ 0.807481743057, -0.677557632782, 0.000000000000] +- [ 0.000000000000, -0.000000000000, 0.000000000000] +OPY-9: +- [ 0.000000000000, 0.000000000000, -0.953998092006] +- [ 1.059997880006, 0.000000000000, 0.105999788001] +- [ 0.749531688996, 0.749531688996, 0.105999788001] +- [ 0.000000000000, 1.059997880006, 0.105999788001] +- [ -0.749531688996, 0.749531688996, 0.105999788001] +- [ -1.059997880006, 0.000000000000, 0.105999788001] +- [ -0.749531688996, -0.749531688996, 0.105999788001] +- [ -0.000000000000, -1.059997880006, 0.105999788001] +- [ 0.749531688996, -0.749531688996, 0.105999788001] +- [ 0.000000000000, 0.000000000000, 0.105999788001] +HBPY-9: +- [ 0.000000000000, 0.000000000000, -1.054092553389] +- [ 1.054092553389, 0.000000000000, 0.000000000000] +- [ 0.657215957254, 0.824122743675, 0.000000000000] +- [ -0.234557659457, 1.027664252322, 0.000000000000] +- [ -0.949704574492, 0.457353618441, 0.000000000000] +- [ -0.949704574492, -0.457353618441, 0.000000000000] +- [ -0.234557659457, -1.027664252322, 0.000000000000] +- [ 0.657215957254, -0.824122743675, 0.000000000000] +- [ 0.000000000000, 0.000000000000, 1.054092553389] +- [ 0.000000000000, 0.000000000000, 0.000000000000] +JTC-9: +- [ 1.091089451180, -0.000000000000, 0.267261241912] +- [ 0.545544725590, 0.944911182523, 0.267261241912] +- [ -0.545544725590, 0.944911182523, 0.267261241912] +- [ -1.091089451180, 0.000000000000, 0.267261241912] +- [ -0.545544725590, -0.944911182523, 0.267261241912] +- [ 0.545544725590, -0.944911182523, 0.267261241912] +- [ 0.545544725590, 0.314970394174, -0.623609564462] +- [ -0.545544725590, 0.314970394174, -0.623609564462] +- [ -0.000000000000, -0.629940788349, -0.623609564462] +- [ 0.000000000000, -0.000000000000, 0.267261241912] +JCCU-9: +- [ 0.826960652050, 0.000000000000, 0.443578471150] +- [ 0.826960652050, 0.000000000000, -0.725920498528] +- [ 0.000000000000, 0.826960652050, 0.443578471150] +- [ 0.000000000000, 0.826960652050, -0.725920498528] +- [ -0.826960652050, 0.000000000000, 0.443578471150] +- [ -0.826960652050, 0.000000000000, -0.725920498528] +- [ -0.000000000000, -0.826960652050, 0.443578471150] +- [ -0.000000000000, -0.826960652050, -0.725920498528] +- [ 0.000000000000, 0.000000000000, 1.270539123200] +- [ 0.000000000000, 0.000000000000, -0.141171013689] +CCU-9: +- [ 0.676580145336, 0.676580145336, 0.433150734305] +- [ 0.676580145336, -0.676580145336, 0.433150734305] +- [ -0.676580145336, 0.676580145336, 0.433150734305] +- [ -0.676580145336, -0.676580145336, 0.433150734305] +- [ 0.567844822329, 0.567844822329, -0.692079759449] +- [ 0.567844822329, -0.567844822329, -0.692079759449] +- [ -0.567844822329, 0.567844822329, -0.692079759449] +- [ -0.567844822329, -0.567844822329, -0.692079759449] +- [ 0.000000000000, 0.000000000000, 1.044926731187] +- [ 0.000000000000, 0.000000000000, -0.009210630612] +JCSAPR-9: +- [ 0.873140643490, 0.000000000000, 0.658403850449] +- [ 0.617403669941, 0.617403669941, -0.379941215187] +- [ 0.000000000000, 0.873140643490, 0.658403850449] +- [ -0.617403669941, 0.617403669941, -0.379941215187] +- [ -0.873140643490, 0.000000000000, 0.658403850449] +- [ -0.617403669941, -0.617403669941, -0.379941215187] +- [ -0.000000000000, -0.873140643490, 0.658403850449] +- [ 0.617403669941, -0.617403669941, -0.379941215187] +- [ 0.000000000000, 0.000000000000, -1.253081858677] +- [ 0.000000000000, 0.000000000000, 0.139231317631] +CSAPR-9: +- [ 0.000000000000, 0.000000000000, 1.053083142672] +- [ 0.982653581851, 0.000000000000, 0.380440156580] +- [ 0.000000000000, 0.982653581851, 0.380440156580] +- [ -0.982653581851, 0.000000000000, 0.380440156580] +- [ -0.000000000000, -0.982653581851, 0.380440156580] +- [ 0.590919690170, 0.590919690170, -0.643458455172] +- [ -0.590919690170, 0.590919690170, -0.643458455172] +- [ -0.590919690170, -0.590919690170, -0.643458455172] +- [ 0.590919690170, -0.590919690170, -0.643458455172] +- [ 0.000000000000, 0.000000000000, -0.001009948303] +JTCTPR-9: +- [ 0.621382007554, 0.621382007554, 0.358755069151] +- [ -0.621382007554, 0.621382007554, 0.358755069151] +- [ 0.621382007554, -0.621382007554, 0.358755069151] +- [ -0.621382007554, -0.621382007554, 0.358755069151] +- [ 0.000000000000, 0.621382007554, -0.717510138861] +- [ 0.000000000000, -0.621382007554, -0.717510138861] +- [ 1.071725432946, 0.000000000000, -0.618760966112] +- [ -1.071725432946, 0.000000000000, -0.618760966112] +- [ 0.000000000000, 0.000000000000, 1.237521933529] +- [ 0.000000000000, 0.000000000000, -0.000000000186] +TCTPR-9: +- [ 0.702728368926, 0.000000000000, 0.785674201318] +- [ -0.351364184463, 0.608580619450, 0.785674201318] +- [ -0.351364184463, -0.608580619450, 0.785674201318] +- [ 0.702728368926, 0.000000000000, -0.785674201318] +- [ -0.351364184463, 0.608580619450, -0.785674201318] +- [ -0.351364184463, -0.608580619450, -0.785674201318] +- [ -1.054092553389, 0.000000000000, -0.000000000000] +- [ 0.527046276695, 0.912870929175, -0.000000000000] +- [ 0.527046276695, -0.912870929175, -0.000000000000] +- [ 0.000000000000, 0.000000000000, -0.000000000000] +JTDIC-9: +- [ -0.262672206048, 0.919451307875, -0.425012557285] +- [ -0.915286548850, 0.021204725402, -0.425012557285] +- [ -0.262672206048, -0.877041857071, -0.425012557285] +- [ 0.793279982152, -0.533942192845, -0.425012557285] +- [ 0.973658150194, 0.021204725402, 0.519459792237] +- [ 0.321043807391, 0.919451307875, 0.519459792237] +- [ -0.734908380808, -0.533942192845, 0.519459792237] +- [ 0.029185800672, 0.021204725402, -1.008728570724] +- [ 0.029185800672, 0.021204725402, 1.103175805676] +- [ 0.029185800672, 0.021204725402, 0.047223617476] +HH-9: +- [ 1.057244898055, 0.000000000000, 0.077395698145] +- [ 0.528622449027, 0.915600935736, 0.077395698145] +- [ -0.528622449027, 0.915600935736, 0.077395698145] +- [ -1.057244898055, 0.000000000000, 0.077395698145] +- [ -0.528622449027, -0.915600935736, 0.077395698145] +- [ 0.528622449027, -0.915600935736, 0.077395698145] +- [ 0.000000000000, 0.000000000000, 1.134640596200] +- [ 0.528622449027, 0.000000000000, -0.838205241608] +- [ -0.528622449027, 0.000000000000, -0.838205241608] +- [ 0.000000000000, 0.000000000000, 0.077395698145] +MFF-9: +- [ -0.000000000000, 1.042109568232, 0.212992870476] +- [ 0.990863900028, 0.322171619609, 0.212992870476] +- [ 0.612400432650, -0.842614003292, 0.212992870476] +- [ -0.612400432650, -0.842614003292, 0.212992870476] +- [ -0.990863900028, 0.322171619609, 0.212992870476] +- [ -0.612400432650, -0.354163418210, -0.737452600997] +- [ 0.612400432650, -0.354163418210, -0.737452600997] +- [ -0.000000000000, 0.706514131140, -0.737452600997] +- [ -0.000000000000, 0.000293952208, 1.100973497819] +- [ -0.000000000000, 0.000293952208, 0.046419952795] +DP-10: +- [ 1.048808848170, -0.000000000000, 0.000000000000] +- [ 0.848504182020, 0.616474373428, 0.000000000000] +- [ 0.324099757935, 0.997476489400, 0.000000000000] +- [ -0.324099757935, 0.997476489400, 0.000000000000] +- [ -0.848504182020, 0.616474373428, 0.000000000000] +- [ -1.048808848170, 0.000000000000, 0.000000000000] +- [ -0.848504182020, -0.616474373428, 0.000000000000] +- [ -0.324099757935, -0.997476489400, 0.000000000000] +- [ 0.324099757935, -0.997476489400, 0.000000000000] +- [ 0.848504182020, -0.616474373428, 0.000000000000] +- [ 0.000000000000, -0.000000000000, 0.000000000000] +EPY-10: +- [ 0.000000000000, -0.000000000000, -0.957826285221] +- [ 1.053608913743, -0.000000000000, 0.095782628522] +- [ 0.807111253594, 0.677246755209, 0.095782628522] +- [ 0.182957267845, 1.037602226897, 0.095782628522] +- [ -0.526804456872, 0.912452084955, 0.095782628522] +- [ -0.990068521439, 0.360355471688, 0.095782628522] +- [ -0.990068521439, -0.360355471688, 0.095782628522] +- [ -0.526804456872, -0.912452084955, 0.095782628522] +- [ 0.182957267845, -1.037602226897, 0.095782628522] +- [ 0.807111253594, -0.677246755209, 0.095782628522] +- [ 0.000000000000, -0.000000000000, 0.095782628522] +OBPY-10: +- [ 0.000000000000, 0.000000000000, -1.048808848170] +- [ 1.048808848170, 0.000000000000, 0.000000000000] +- [ 0.741619848710, 0.741619848710, 0.000000000000] +- [ 0.000000000000, 1.048808848170, 0.000000000000] +- [ -0.741619848710, 0.741619848710, 0.000000000000] +- [ -1.048808848170, 0.000000000000, 0.000000000000] +- [ -0.741619848710, -0.741619848710, 0.000000000000] +- [ -0.000000000000, -1.048808848170, 0.000000000000] +- [ 0.741619848710, -0.741619848710, 0.000000000000] +- [ 0.000000000000, 0.000000000000, 1.048808848170] +- [ 0.000000000000, 0.000000000000, 0.000000000000] +PPR-10: +- [ 0.904182012090, -0.000000000000, -0.531464852095] +- [ 0.279407607744, 0.859928194515, -0.531464852095] +- [ -0.731498613789, 0.531464852095, -0.531464852095] +- [ -0.731498613789, -0.531464852095, -0.531464852095] +- [ 0.279407607744, -0.859928194515, -0.531464852095] +- [ 0.904182012090, -0.000000000000, 0.531464852095] +- [ 0.279407607744, 0.859928194515, 0.531464852095] +- [ -0.731498613789, 0.531464852095, 0.531464852095] +- [ -0.731498613789, -0.531464852095, 0.531464852095] +- [ 0.279407607744, -0.859928194515, 0.531464852095] +- [ 0.000000000000, -0.000000000000, 0.000000000000] +PAPR-10: +- [ 0.758925212076, 0.551391442149, -0.469041575982] +- [ -0.289883636094, 0.892170094503, -0.469041575982] +- [ -0.938083151965, 0.000000000000, -0.469041575982] +- [ -0.289883636094, -0.892170094503, -0.469041575982] +- [ 0.758925212076, -0.551391442149, -0.469041575982] +- [ 0.938083151965, -0.000000000000, 0.469041575982] +- [ 0.289883636094, 0.892170094503, 0.469041575982] +- [ -0.758925212076, 0.551391442149, 0.469041575982] +- [ -0.758925212076, -0.551391442149, 0.469041575982] +- [ 0.289883636094, -0.892170094503, 0.469041575982] +- [ 0.000000000000, -0.000000000000, 0.000000000000] +JBCCU-10: +- [ 0.785488493487, 0.000000000000, 0.555424240288] +- [ 0.785488493487, 0.000000000000, -0.555424240288] +- [ 0.000000000000, 0.785488493487, 0.555424240288] +- [ 0.000000000000, 0.785488493487, -0.555424240288] +- [ -0.785488493487, 0.000000000000, 0.555424240288] +- [ -0.785488493487, 0.000000000000, -0.555424240288] +- [ -0.000000000000, -0.785488493487, 0.555424240288] +- [ -0.000000000000, -0.785488493487, -0.555424240288] +- [ 0.000000000000, 0.000000000000, 1.340912733775] +- [ 0.000000000000, 0.000000000000, -1.340912733775] +- [ 0.000000000000, 0.000000000000, 0.000000000000] +JBCSAPR-10: +- [ 0.831394933130, 0.000000000000, 0.494350384928] +- [ 0.587884995060, 0.587884995060, -0.494350384928] +- [ 0.000000000000, 0.831394933130, 0.494350384928] +- [ -0.587884995060, 0.587884995060, -0.494350384928] +- [ -0.831394933130, 0.000000000000, 0.494350384928] +- [ -0.587884995060, -0.587884995060, -0.494350384928] +- [ -0.000000000000, -0.831394933130, 0.494350384928] +- [ 0.587884995060, -0.587884995060, -0.494350384928] +- [ 0.000000000000, 0.000000000000, 1.325745318058] +- [ 0.000000000000, 0.000000000000, -1.325745318058] +- [ 0.000000000000, 0.000000000000, 0.000000000000] +JMBIC-10: +- [ -0.797540727016, -0.588212770208, -0.373112908479] +- [ -0.917507172366, 0.299842004208, 0.279142483278] +- [ -0.042218240299, 0.961291237911, 0.121561791260] +- [ 0.151860448259, -0.475674462059, -0.933829024758] +- [ 0.548711046055, -0.584891080439, 0.811695270623] +- [ -0.085440798205, 0.301898610501, 1.011328149203] +- [ 0.108597299440, -1.135033263708, -0.043961189532] +- [ 0.863980672527, 0.414497805020, 0.450639093532] +- [ -0.482331986914, 0.411182880404, -0.734148790113] +- [ 0.618676250917, 0.482007259605, -0.628091497847] +- [ 0.033213207603, -0.086908221236, 0.038776622831] +JATDI-10: +- [ -0.001380175214, -0.287819919972, -0.953536559109] +- [ -0.508204241712, -0.874651438586, -0.286523583482] +- [ 0.005406015809, -0.863863134908, 0.597917212481] +- [ 0.829615016319, -0.270393329434, 0.477497122798] +- [ 0.508401974551, 0.681752772353, 0.286909557983] +- [ -0.005208282971, 0.670964468675, -0.597531237980] +- [ -0.825215065192, -0.278510657928, 0.481716741575] +- [ 0.514535647207, -0.869596596298, -0.289124956708] +- [ -0.514337914368, 0.676697930065, 0.289510931209] +- [ -0.003711840848, 1.511869239151, -0.007028216018] +- [ 0.000098866419, -0.096449333117, 0.000192987251] +JSPC-10: +- [ -1.001871872522, -0.083830395389, -0.581156124487] +- [ -1.002034699262, -0.076631127394, 0.581868755803] +- [ -0.516334164993, 0.802168048137, -0.005028597236] +- [ 0.028693454961, 0.335227480386, -0.920231179588] +- [ -0.064315504895, -0.772040872012, -0.576759802513] +- [ -0.064478331635, -0.764829973537, 0.586265077777] +- [ 0.028437584370, 0.346602091208, 0.916012486785] +- [ 0.642643307766, 0.705053528342, -0.004284246426] +- [ 0.974705182575, -0.249460081184, -0.579853510569] +- [ 0.974553986317, -0.242260813190, 0.583171369721] +- [ 0.000001057316, 0.000002114633, -0.000004229266] +SDD-10: +- [ -0.524414230723, 0.908285447612, 0.000000000000] +- [ 0.524414230723, 0.908285447612, 0.000000000000] +- [ -1.048828461446, 0.000000000000, 0.000000000000] +- [ 1.048828461446, 0.000000000000, 0.000000000000] +- [ -0.524414230723, -0.908285447612, 0.000000000000] +- [ 0.524414230723, -0.908285447612, 0.000000000000] +- [ -0.524414230723, 0.000000000000, 0.908285447612] +- [ 0.524414230723, 0.000000000000, 0.908285447612] +- [ 0.262207115361, 0.454142723806, -0.908285447612] +- [ -0.262207115361, -0.454142723806, -0.908285447612] +- [ 0.000000000000, 0.000000000000, 0.000000000000] +TD-10: +- [ -0.524413653847, 0.908284448462, 0.000000000000] +- [ 0.524413653847, 0.908284448462, 0.000000000000] +- [ -1.048827307693, 0.000000000000, 0.000000000000] +- [ 1.048827307693, 0.000000000000, 0.000000000000] +- [ -0.524413653847, -0.908284448462, 0.000000000000] +- [ 0.524413653847, -0.908284448462, 0.000000000000] +- [ -0.524413653847, 0.000000000000, 0.908284448462] +- [ 0.524413653847, 0.000000000000, 0.908284448462] +- [ 0.000000000000, 0.524413653847, -0.908284448462] +- [ 0.000000000000, -0.524413653847, -0.908284448462] +- [ 0.000000000000, 0.000000000000, 0.000000000000] +HD-10: +- [ -0.524413653847, 0.908284448462, 0.000000000000] +- [ 0.524413653847, 0.908284448462, 0.000000000000] +- [ -1.048827307693, 0.000000000000, 0.000000000000] +- [ 1.048827307693, 0.000000000000, 0.000000000000] +- [ -0.524413653847, -0.908284448462, 0.000000000000] +- [ 0.524413653847, -0.908284448462, 0.000000000000] +- [ -0.524413653847, 0.000000000000, 0.908284448462] +- [ 0.524413653847, 0.000000000000, 0.908284448462] +- [ -0.524413653847, 0.000000000000, -0.908284448462] +- [ 0.524413653847, 0.000000000000, -0.908284448462] +- [ 0.000000000000, 0.000000000000, 0.000000000000] +HP-11: +- [ 1.044465935734, -0.000000000000, 0.000000000000] +- [ 0.878660658358, 0.564680917300, 0.000000000000] +- [ 0.433886830273, 0.950079633202, 0.000000000000] +- [ -0.148643000726, 1.033834778504, 0.000000000000] +- [ -0.683979729256, 0.789354686359, 0.000000000000] +- [ -1.002157726517, 0.294260058608, 0.000000000000] +- [ -1.002157726517, -0.294260058608, 0.000000000000] +- [ -0.683979729256, -0.789354686359, 0.000000000000] +- [ -0.148643000726, -1.033834778504, 0.000000000000] +- [ 0.433886830273, -0.950079633202, 0.000000000000] +- [ 0.878660658358, -0.564680917300, 0.000000000000] +- [ 0.000000000000, -0.000000000000, 0.000000000000] +DPY-11: +- [ 0.000000000000, -0.000000000000, -0.961074462327] +- [ 1.048444867993, -0.000000000000, 0.087370405666] +- [ 0.848209715872, 0.616260431248, 0.087370405666] +- [ 0.323987281875, 0.997130323681, 0.087370405666] +- [ -0.323987281875, 0.997130323681, 0.087370405666] +- [ -0.848209715872, 0.616260431248, 0.087370405666] +- [ -1.048444867993, 0.000000000000, 0.087370405666] +- [ -0.848209715872, -0.616260431248, 0.087370405666] +- [ -0.323987281875, -0.997130323681, 0.087370405666] +- [ 0.323987281875, -0.997130323681, 0.087370405666] +- [ 0.848209715872, -0.616260431248, 0.087370405666] +- [ 0.000000000000, -0.000000000000, 0.087370405666] +EBPY-11: +- [ 0.000000000000, -0.000000000000, -1.044465935734] +- [ 1.044465935734, -0.000000000000, 0.000000000000] +- [ 0.800107326096, 0.671369762230, 0.000000000000] +- [ 0.181369606375, 1.028598151268, 0.000000000000] +- [ -0.522232967867, 0.904534033733, 0.000000000000] +- [ -0.981476932472, 0.357228389039, 0.000000000000] +- [ -0.981476932472, -0.357228389039, 0.000000000000] +- [ -0.522232967867, -0.904534033733, 0.000000000000] +- [ 0.181369606375, -1.028598151268, 0.000000000000] +- [ 0.800107326096, -0.671369762230, 0.000000000000] +- [ 0.000000000000, -0.000000000000, 1.044465935734] +- [ 0.000000000000, -0.000000000000, 0.000000000000] +JCPPR-11: +- [ 0.900823270597, -0.000000000000, 0.438971464007] +- [ 0.900823270597, -0.000000000000, -0.620009802751] +- [ 0.278369699543, 0.856733841532, 0.438971464007] +- [ 0.278369699543, 0.856733841532, -0.620009802751] +- [ -0.728781334842, 0.529490633379, 0.438971464007] +- [ -0.728781334842, 0.529490633379, -0.620009802751] +- [ -0.728781334842, -0.529490633379, 0.438971464007] +- [ -0.728781334842, -0.529490633379, -0.620009802751] +- [ 0.278369699543, -0.856733841532, 0.438971464007] +- [ 0.278369699543, -0.856733841532, -0.620009802751] +- [ 0.000000000000, -0.000000000000, 0.995710863093] +- [ 0.000000000000, -0.000000000000, -0.090519169372] +JCPAPR-11: +- [ 0.937757598197, -0.000000000000, 0.556249204765] +- [ 0.758661833546, 0.551200086446, -0.381508393433] +- [ 0.289783034447, 0.891860474471, 0.556249204765] +- [ -0.289783034447, 0.891860474471, -0.381508393433] +- [ -0.758661833546, 0.551200086446, 0.556249204765] +- [ -0.937757598197, 0.000000000000, -0.381508393433] +- [ -0.758661833546, -0.551200086446, 0.556249204765] +- [ -0.289783034447, -0.891860474471, -0.381508393433] +- [ 0.289783034447, -0.891860474471, 0.556249204765] +- [ 0.758661833546, -0.551200086446, -0.381508393433] +- [ 0.000000000000, -0.000000000000, -0.961074462327] +- [ 0.000000000000, -0.000000000000, 0.087370405666] +JAPPR-11: +- [ -0.000000000000, -1.305263640364, 0.000000000000] +- [ -0.000000000000, 0.986976353582, 0.510293854396] +- [ 0.825655456412, 0.386870780813, 0.510293854396] +- [ 0.510293854396, -0.583708130248, 0.510293854396] +- [ -0.510293854396, -0.583708130248, 0.510293854396] +- [ -0.825655456412, 0.386870780813, 0.510293854396] +- [ -0.000000000000, 0.986976353582, -0.510293854396] +- [ 0.825655456412, 0.386870780813, -0.510293854396] +- [ 0.510293854396, -0.583708130248, -0.510293854396] +- [ -0.510293854396, -0.583708130248, -0.510293854396] +- [ -0.825655456412, 0.386870780813, -0.510293854396] +- [ -0.000000000000, 0.118660330942, 0.000000000000] +JASPC-11: +- [ -0.549649469266, -0.001863586526, 0.864506823693] +- [ 0.549649469266, -0.001863586526, 0.864506823693] +- [ -0.000000000000, 0.867613717318, 0.476754407002] +- [ -0.867816263148, 0.476158861802, -0.072895062263] +- [ -0.549649469266, -0.576090082160, -0.072895062263] +- [ 0.549649469266, -0.576090082160, -0.072895062263] +- [ 0.867816263148, 0.476158861802, -0.072895062263] +- [ -0.000000000000, 0.867613717318, -0.622544531529] +- [ -0.549649469266, -0.001863586526, -1.010296948220] +- [ 0.549649469266, -0.001863586526, -1.010296948220] +- [ -0.000000000000, -0.951820565659, 0.801845684898] +- [ -0.000000000000, -0.576090082160, -0.072895062263] +DP-12: +- [ 1.040832999733, 0.000000000000, 0.000000000000] +- [ 0.901387818866, 0.520416499867, 0.000000000000] +- [ 0.520416499867, 0.901387818866, 0.000000000000] +- [ 0.000000000000, 1.040832999733, 0.000000000000] +- [ -0.520416499867, 0.901387818866, 0.000000000000] +- [ -0.901387818866, 0.520416499867, 0.000000000000] +- [ -1.040832999733, 0.000000000000, 0.000000000000] +- [ -0.901387818866, -0.520416499867, 0.000000000000] +- [ -0.520416499867, -0.901387818866, 0.000000000000] +- [ -0.000000000000, -1.040832999733, 0.000000000000] +- [ 0.520416499867, -0.901387818866, 0.000000000000] +- [ 0.901387818866, -0.520416499867, 0.000000000000] +- [ 0.000000000000, 0.000000000000, 0.000000000000] +HPY-12: +- [ 0.000000000000, -0.000000000000, -0.963863194683] +- [ 1.044185127573, -0.000000000000, 0.080321932890] +- [ 0.878424427501, 0.564529100946, 0.080321932890] +- [ 0.433770178347, 0.949824201114, 0.080321932890] +- [ -0.148603037558, 1.033556828565, 0.080321932890] +- [ -0.683795839017, 0.789142465711, 0.080321932890] +- [ -1.001888293059, 0.294180945807, 0.080321932890] +- [ -1.001888293059, -0.294180945807, 0.080321932890] +- [ -0.683795839017, -0.789142465711, 0.080321932890] +- [ -0.148603037558, -1.033556828565, 0.080321932890] +- [ 0.433770178347, -0.949824201114, 0.080321932890] +- [ 0.878424427501, -0.564529100946, 0.080321932890] +- [ 0.000000000000, -0.000000000000, 0.080321932890] +DBPY-12: +- [ 0.000000000000, -0.000000000000, -1.040832999733] +- [ 1.040832999733, -0.000000000000, 0.000000000000] +- [ 0.842051585090, 0.611786287342, 0.000000000000] +- [ 0.321635085224, 0.989891006771, 0.000000000000] +- [ -0.321635085224, 0.989891006771, 0.000000000000] +- [ -0.842051585090, 0.611786287342, 0.000000000000] +- [ -1.040832999733, 0.000000000000, 0.000000000000] +- [ -0.842051585090, -0.611786287342, 0.000000000000] +- [ -0.321635085224, -0.989891006771, 0.000000000000] +- [ 0.321635085224, -0.989891006771, 0.000000000000] +- [ 0.842051585090, -0.611786287342, 0.000000000000] +- [ 0.000000000000, -0.000000000000, 1.040832999733] +- [ 0.000000000000, -0.000000000000, 0.000000000000] +HPR-12: +- [ 0.930949336251, -0.000000000000, -0.465474668126] +- [ 0.465474668126, 0.806225774830, -0.465474668126] +- [ -0.465474668126, 0.806225774830, -0.465474668126] +- [ -0.930949336251, 0.000000000000, -0.465474668126] +- [ -0.465474668126, -0.806225774830, -0.465474668126] +- [ 0.465474668126, -0.806225774830, -0.465474668126] +- [ 0.930949336251, -0.000000000000, 0.465474668126] +- [ 0.465474668126, 0.806225774830, 0.465474668126] +- [ -0.465474668126, 0.806225774830, 0.465474668126] +- [ -0.930949336251, 0.000000000000, 0.465474668126] +- [ -0.465474668126, -0.806225774830, 0.465474668126] +- [ 0.465474668126, -0.806225774830, 0.465474668126] +- [ 0.000000000000, -0.000000000000, 0.000000000000] +HAPR-12: +- [ 0.828737481092, 0.478471807796, -0.409380324284] +- [ 0.000000000000, 0.956943615592, -0.409380324284] +- [ -0.828737481092, 0.478471807796, -0.409380324284] +- [ -0.828737481092, -0.478471807796, -0.409380324284] +- [ -0.000000000000, -0.956943615592, -0.409380324284] +- [ 0.828737481092, -0.478471807796, -0.409380324284] +- [ 0.956943615592, -0.000000000000, 0.409380324284] +- [ 0.478471807796, 0.828737481092, 0.409380324284] +- [ -0.478471807796, 0.828737481092, 0.409380324284] +- [ -0.956943615592, 0.000000000000, 0.409380324284] +- [ -0.478471807796, -0.828737481092, 0.409380324284] +- [ 0.478471807796, -0.828737481092, 0.409380324284] +- [ 0.000000000000, -0.000000000000, 0.000000000000] +TT-12: +- [ 0.000000000000, 0.443812682299, -0.941468871691] +- [ 0.443812682299, 0.887625364599, -0.313822957230] +- [ -0.443812682299, 0.887625364599, -0.313822957230] +- [ -0.000000000000, -0.443812682299, -0.941468871691] +- [ 0.443812682299, -0.887625364599, -0.313822957230] +- [ -0.443812682299, -0.887625364599, -0.313822957230] +- [ 0.887625364599, 0.443812682299, 0.313822957230] +- [ 0.887625364599, -0.443812682299, 0.313822957230] +- [ 0.443812682299, 0.000000000000, 0.941468871691] +- [ -0.887625364599, 0.443812682299, 0.313822957230] +- [ -0.887625364599, -0.443812682299, 0.313822957230] +- [ -0.443812682299, 0.000000000000, 0.941468871691] +- [ 0.000000000000, -0.000000000000, 0.000000000000] +COC-12: +- [ 0.520416499867, 0.520416499867, -0.735980072194] +- [ 0.520416499867, -0.520416499867, -0.735980072194] +- [ 1.040832999733, -0.000000000000, 0.000000000000] +- [ -0.520416499867, 0.520416499867, -0.735980072194] +- [ 0.000000000000, 1.040832999733, 0.000000000000] +- [ -0.520416499867, -0.520416499867, -0.735980072194] +- [ -1.040832999733, 0.000000000000, 0.000000000000] +- [ -0.000000000000, -1.040832999733, 0.000000000000] +- [ 0.520416499867, 0.520416499867, 0.735980072194] +- [ 0.520416499867, -0.520416499867, 0.735980072194] +- [ -0.520416499867, 0.520416499867, 0.735980072194] +- [ -0.520416499867, -0.520416499867, 0.735980072194] +- [ 0.000000000000, -0.000000000000, 0.000000000000] +ACOC-12: +- [ 0.600925212577, -0.000000000000, -0.849836585599] +- [ -0.300462606289, 0.520416499867, -0.849836585599] +- [ -0.300462606289, -0.520416499867, -0.849836585599] +- [ 0.901387818866, 0.520416499867, -0.000000000000] +- [ 0.000000000000, 1.040832999733, -0.000000000000] +- [ -0.901387818866, 0.520416499867, -0.000000000000] +- [ -0.901387818866, -0.520416499867, -0.000000000000] +- [ -0.000000000000, -1.040832999733, -0.000000000000] +- [ 0.901387818866, -0.520416499867, -0.000000000000] +- [ 0.600925212577, -0.000000000000, 0.849836585599] +- [ -0.300462606289, 0.520416499867, 0.849836585599] +- [ -0.300462606289, -0.520416499867, 0.849836585599] +- [ 0.000000000000, -0.000000000000, -0.000000000000] +IC-12: +- [ 0.753153833929, 0.547198290480, -0.465474668126] +- [ -0.287679165804, 0.885385432582, -0.465474668126] +- [ -0.930949336251, 0.000000000000, -0.465474668126] +- [ -0.287679165804, -0.885385432582, -0.465474668126] +- [ 0.753153833929, -0.547198290480, -0.465474668126] +- [ 0.930949336251, -0.000000000000, 0.465474668126] +- [ 0.287679165804, 0.885385432582, 0.465474668126] +- [ -0.753153833929, 0.547198290480, 0.465474668126] +- [ -0.753153833929, -0.547198290480, 0.465474668126] +- [ 0.287679165804, -0.885385432582, 0.465474668126] +- [ 0.000000000000, -0.000000000000, -1.040832999733] +- [ 0.000000000000, -0.000000000000, 1.040832999733] +- [ 0.000000000000, -0.000000000000, 0.000000000000] +JSC-12: +- [ 1.141165142391, 0.000000000000, 0.190028961441] +- [ 0.806925610638, 0.806925610638, 0.190028961441] +- [ 0.000000000000, 1.141165142391, 0.190028961441] +- [ -0.806925610638, 0.806925610638, 0.190028961441] +- [ -1.141165142391, 0.000000000000, 0.190028961441] +- [ -0.806925610638, -0.806925610638, 0.190028961441] +- [ -0.000000000000, -1.141165142391, 0.190028961441] +- [ 0.806925610638, -0.806925610638, 0.190028961441] +- [ 0.570582571195, 0.236343039443, -0.427565163243] +- [ -0.236343039443, 0.570582571195, -0.427565163243] +- [ -0.570582571195, -0.236343039443, -0.427565163243] +- [ 0.236343039443, -0.570582571195, -0.427565163243] +- [ 0.000000000000, 0.000000000000, 0.190028961441] +JEPBPY-12: +- [ 0.891335774160, -0.000000000000, 0.523914022892] +- [ 0.891335774160, -0.000000000000, -0.523914022892] +- [ 0.275437901910, 0.847710696222, 0.523914022892] +- [ 0.275437901910, 0.847710696222, -0.523914022892] +- [ -0.721105788990, 0.523914022892, 0.523914022892] +- [ -0.721105788990, 0.523914022892, -0.523914022892] +- [ -0.721105788990, -0.523914022892, 0.523914022892] +- [ -0.721105788990, -0.523914022892, -0.523914022892] +- [ 0.275437901910, -0.847710696222, 0.523914022892] +- [ 0.275437901910, -0.847710696222, -0.523914022892] +- [ 0.000000000000, -0.000000000000, 1.074789826711] +- [ 0.000000000000, -0.000000000000, -1.074789826711] +- [ 0.000000000000, -0.000000000000, 0.000000000000] +JBAPPR-12: +- [ 0.852575779518, 0.489339727734, -0.061742251939] +- [ 0.277322675785, 0.489339727734, 0.730026065085] +- [ -0.653457271094, 0.489339727734, 0.427597475795] +- [ -0.653457271094, 0.489339727734, -0.551081979673] +- [ 0.277322675785, 0.489339727734, -0.853510568964] +- [ 0.852575779518, -0.489339727734, -0.061742251939] +- [ 0.277322675785, -0.489339727734, 0.730026065085] +- [ -0.653457271094, -0.489339727734, 0.427597475795] +- [ -0.653457271094, -0.489339727734, -0.551081979673] +- [ 0.277322675785, -0.489339727734, -0.853510568964] +- [ -1.345488364812, 0.000000000000, -0.061742251939] +- [ 1.124814064966, 0.000000000000, 0.740907023271] +- [ 0.020061122044, 0.000000000000, -0.061742251939] +JSPMC-12: +- [ -0.506162114315, -0.030251907893, -0.601961393042] +- [ -0.865277048151, 0.700144072360, 0.000000000000] +- [ 0.000000000000, 0.841196268756, -0.506162114315] +- [ -1.298915242402, -0.214600199223, 0.000000000000] +- [ 0.506162114315, -0.030251907893, -0.601961393042] +- [ -0.506162114315, -0.844157550738, 0.000000000000] +- [ 0.000000000000, 0.841196268756, 0.506162114315] +- [ -0.506162114315, -0.030251907893, 0.601961393042] +- [ 0.865277048151, 0.700144072360, 0.000000000000] +- [ 0.506162114315, -0.844157550738, 0.000000000000] +- [ 0.506162114315, -0.030251907893, 0.601961393042] +- [ 1.298915242402, -0.214600199223, 0.000000000000] +- [ 0.000000000000, -0.844157550738, 0.000000000000] +DD-20: +- [ 0.814278534495, 0.591607970158, -0.192225112748] +- [ -0.311026710873, 0.957241801189, -0.192225112748] +- [ -1.006503574117, -0.000000000000, -0.192225112748] +- [ -0.311026710873, -0.957241801189, -0.192225112748] +- [ 0.814278534495, -0.591607970158, -0.192225112748] +- [ 0.311026710873, 0.957241801189, 0.192225112748] +- [ -0.814278534495, 0.591607970158, 0.192225112748] +- [ -0.814278534495, -0.591607970158, 0.192225112748] +- [ 0.311026710873, -0.957241801189, 0.192225112748] +- [ 1.006503574117, -0.000000000000, 0.192225112748] +- [ 0.503251823622, 0.365633831031, -0.814278534495] +- [ -0.192225112748, 0.591607970158, -0.814278534495] +- [ -0.622053421747, -0.000000000000, -0.814278534495] +- [ -0.192225112748, -0.591607970158, -0.814278534495] +- [ 0.503251823622, -0.365633831031, -0.814278534495] +- [ 0.192225112748, 0.591607970158, 0.814278534495] +- [ -0.503251823622, 0.365633831031, 0.814278534495] +- [ -0.503251823622, -0.365633831031, 0.814278534495] +- [ 0.192225112748, -0.591607970158, 0.814278534495] +- [ 0.622053421747, -0.000000000000, 0.814278534495] +- [ -0.000000000000, -0.000000000000, 0.000000000000] +TCU-24: +- [ 0.286880807057, 0.692591535181, 0.692591535181] +- [ -0.286880807057, -0.692591535181, -0.692591535181] +- [ 0.286880807057, -0.692591535181, -0.692591535181] +- [ -0.286880807057, 0.692591535181, -0.692591535181] +- [ -0.286880807057, -0.692591535181, 0.692591535181] +- [ 0.286880807057, 0.692591535181, -0.692591535181] +- [ -0.286880807057, 0.692591535181, 0.692591535181] +- [ 0.286880807057, -0.692591535181, 0.692591535181] +- [ 0.692591535181, 0.286880807057, 0.692591535181] +- [ -0.692591535181, -0.286880807057, -0.692591535181] +- [ 0.692591535181, -0.286880807057, -0.692591535181] +- [ -0.692591535181, 0.286880807057, -0.692591535181] +- [ -0.692591535181, -0.286880807057, 0.692591535181] +- [ 0.692591535181, 0.286880807057, -0.692591535181] +- [ -0.692591535181, 0.286880807057, 0.692591535181] +- [ 0.692591535181, -0.286880807057, 0.692591535181] +- [ 0.692591535181, 0.692591535181, 0.286880807057] +- [ -0.692591535181, -0.692591535181, -0.286880807057] +- [ 0.692591535181, -0.692591535181, -0.286880807057] +- [ -0.692591535181, 0.692591535181, -0.286880807057] +- [ -0.692591535181, -0.692591535181, 0.286880807057] +- [ 0.692591535181, 0.692591535181, -0.286880807057] +- [ -0.692591535181, 0.692591535181, 0.286880807057] +- [ 0.692591535181, -0.692591535181, 0.286880807057] +- [ 0.000000000000, 0.000000000000, 0.000000000000] +TOC-24: +- [ 0.912870929175, 0.456435464588, 0.000000000000] +- [ -0.912870929175, -0.456435464588, 0.000000000000] +- [ 0.912870929175, -0.456435464588, 0.000000000000] +- [ -0.912870929175, 0.456435464588, 0.000000000000] +- [ 0.000000000000, 0.912870929175, 0.456435464588] +- [ 0.000000000000, -0.912870929175, -0.456435464588] +- [ 0.000000000000, 0.912870929175, -0.456435464588] +- [ 0.000000000000, -0.912870929175, 0.456435464588] +- [ 0.456435464588, 0.000000000000, 0.912870929175] +- [ -0.456435464588, 0.000000000000, -0.912870929175] +- [ 0.456435464588, 0.000000000000, -0.912870929175] +- [ -0.456435464588, 0.000000000000, 0.912870929175] +- [ 0.456435464588, 0.912870929175, 0.000000000000] +- [ -0.456435464588, -0.912870929175, 0.000000000000] +- [ 0.456435464588, -0.912870929175, 0.000000000000] +- [ -0.456435464588, 0.912870929175, 0.000000000000] +- [ 0.000000000000, 0.456435464588, 0.912870929175] +- [ 0.000000000000, -0.456435464588, -0.912870929175] +- [ 0.000000000000, 0.456435464588, -0.912870929175] +- [ 0.000000000000, -0.456435464588, 0.912870929175] +- [ 0.912870929175, 0.000000000000, 0.456435464588] +- [ -0.912870929175, 0.000000000000, -0.456435464588] +- [ 0.912870929175, 0.000000000000, -0.456435464588] +- [ -0.912870929175, 0.000000000000, 0.456435464588] +- [ 0.000000000000, 0.000000000000, 0.000000000000] +TCOC-48: +- [ 0.217975106490, 0.526238458349, 0.834501810207] +- [ -0.217975106490, -0.526238458349, -0.834501810207] +- [ 0.217975106490, -0.526238458349, -0.834501810207] +- [ -0.217975106490, 0.526238458349, -0.834501810207] +- [ -0.217975106490, -0.526238458349, 0.834501810207] +- [ 0.217975106490, 0.526238458349, -0.834501810207] +- [ -0.217975106490, 0.526238458349, 0.834501810207] +- [ 0.217975106490, -0.526238458349, 0.834501810207] +- [ 0.217975106490, 0.834501810207, 0.526238458349] +- [ -0.217975106490, -0.834501810207, -0.526238458349] +- [ 0.217975106490, -0.834501810207, -0.526238458349] +- [ -0.217975106490, 0.834501810207, -0.526238458349] +- [ -0.217975106490, -0.834501810207, 0.526238458349] +- [ 0.217975106490, 0.834501810207, -0.526238458349] +- [ -0.217975106490, 0.834501810207, 0.526238458349] +- [ 0.217975106490, -0.834501810207, 0.526238458349] +- [ 0.526238458349, 0.217975106490, 0.834501810207] +- [ -0.526238458349, -0.217975106490, -0.834501810207] +- [ 0.526238458349, -0.217975106490, -0.834501810207] +- [ -0.526238458349, 0.217975106490, -0.834501810207] +- [ -0.526238458349, -0.217975106490, 0.834501810207] +- [ 0.526238458349, 0.217975106490, -0.834501810207] +- [ -0.526238458349, 0.217975106490, 0.834501810207] +- [ 0.526238458349, -0.217975106490, 0.834501810207] +- [ 0.526238458349, 0.834501810207, 0.217975106490] +- [ -0.526238458349, -0.834501810207, -0.217975106490] +- [ 0.526238458349, -0.834501810207, -0.217975106490] +- [ -0.526238458349, 0.834501810207, -0.217975106490] +- [ -0.526238458349, -0.834501810207, 0.217975106490] +- [ 0.526238458349, 0.834501810207, -0.217975106490] +- [ -0.526238458349, 0.834501810207, 0.217975106490] +- [ 0.526238458349, -0.834501810207, 0.217975106490] +- [ 0.834501810207, 0.526238458349, 0.217975106490] +- [ -0.834501810207, -0.526238458349, -0.217975106490] +- [ 0.834501810207, -0.526238458349, -0.217975106490] +- [ -0.834501810207, 0.526238458349, -0.217975106490] +- [ -0.834501810207, -0.526238458349, 0.217975106490] +- [ 0.834501810207, 0.526238458349, -0.217975106490] +- [ -0.834501810207, 0.526238458349, 0.217975106490] +- [ 0.834501810207, -0.526238458349, 0.217975106490] +- [ 0.834501810207, 0.217975106490, 0.526238458349] +- [ -0.834501810207, -0.217975106490, -0.526238458349] +- [ 0.834501810207, -0.217975106490, -0.526238458349] +- [ -0.834501810207, 0.217975106490, -0.526238458349] +- [ -0.834501810207, -0.217975106490, 0.526238458349] +- [ 0.834501810207, 0.217975106490, -0.526238458349] +- [ -0.834501810207, 0.217975106490, 0.526238458349] +- [ 0.834501810207, -0.217975106490, 0.526238458349] +- [ 0.000000000000, 0.000000000000, 0.000000000000] +TIC-60: +- [ 0.799214169418, 0.329186766636, -0.519191166048] +- [ 0.560045966052, 0.658373533272, -0.519191166048] +- [ -0.066104440661, 0.861822142285, -0.519191166048] +- [ -0.453086725387, 0.736083984662, -0.519191166048] +- [ -0.840068969422, 0.203448609013, -0.519191166048] +- [ -0.840068969422, -0.203448609013, -0.519191166048] +- [ -0.453086725387, -0.736083984662, -0.519191166048] +- [ -0.066104440661, -0.861822142285, -0.519191166048] +- [ 0.560045966052, -0.658373533272, -0.519191166048] +- [ 0.799214169418, -0.329186766636, -0.519191166048] +- [ 0.453086725387, 0.736083984662, 0.519191166048] +- [ 0.066104440661, 0.861822142285, 0.519191166048] +- [ -0.560045966052, 0.658373533272, 0.519191166048] +- [ -0.799214169418, 0.329186766636, 0.519191166048] +- [ -0.799214169418, -0.329186766636, 0.519191166048] +- [ -0.560045966052, -0.658373533272, 0.519191166048] +- [ 0.066104440661, -0.861822142285, 0.519191166048] +- [ 0.453086725387, -0.736083984662, 0.519191166048] +- [ 0.840068969422, -0.203448609013, 0.519191166048] +- [ 0.840068969422, 0.203448609013, 0.519191166048] +- [ 0.972277891434, 0.203448609013, -0.173063722016] +- [ 0.906173410083, 0.406897218026, 0.173063722016] +- [ 0.667005247406, 0.736083984662, 0.173063722016] +- [ 0.493941525391, 0.861822142285, -0.173063722016] +- [ 0.106959281355, 0.987560299908, -0.173063722016] +- [ -0.106959281355, 0.987560299908, 0.173063722016] +- [ -0.493941525391, 0.861822142285, 0.173063722016] +- [ -0.667005247406, 0.736083984662, -0.173063722016] +- [ -0.906173410083, 0.406897218026, -0.173063722016] +- [ -0.972277891434, 0.203448609013, 0.173063722016] +- [ -0.972277891434, -0.203448609013, 0.173063722016] +- [ -0.906173410083, -0.406897218026, -0.173063722016] +- [ -0.667005247406, -0.736083984662, -0.173063722016] +- [ -0.493941525391, -0.861822142285, 0.173063722016] +- [ -0.106959281355, -0.987560299908, 0.173063722016] +- [ 0.106959281355, -0.987560299908, -0.173063722016] +- [ 0.493941525391, -0.861822142285, -0.173063722016] +- [ 0.667005247406, -0.736083984662, 0.173063722016] +- [ 0.906173410083, -0.406897218026, 0.173063722016] +- [ 0.972277891434, -0.203448609013, -0.173063722016] +- [ 0.692254888064, 0.000000000000, -0.733109688067] +- [ 0.346127444032, 0.000000000000, -0.947028210087] +- [ 0.213918522020, 0.658373533272, -0.733109688067] +- [ 0.106959281355, 0.329186766636, -0.947028210087] +- [ -0.560045966052, 0.406897218026, -0.733109688067] +- [ -0.280023003371, 0.203448609013, -0.947028210087] +- [ -0.560045966052, -0.406897218026, -0.733109688067] +- [ -0.280023003371, -0.203448609013, -0.947028210087] +- [ 0.213918522020, -0.658373533272, -0.733109688067] +- [ 0.106959281355, -0.329186766636, -0.947028210087] +- [ 0.560045966052, 0.406897218026, 0.733109688067] +- [ 0.280023003371, 0.203448609013, 0.947028210087] +- [ -0.213918522020, 0.658373533272, 0.733109688067] +- [ -0.106959281355, 0.329186766636, 0.947028210087] +- [ -0.692254888064, 0.000000000000, 0.733109688067] +- [ -0.346127444032, 0.000000000000, 0.947028210087] +- [ -0.213918522020, -0.658373533272, 0.733109688067] +- [ -0.106959281355, -0.329186766636, 0.947028210087] +- [ 0.560045966052, -0.406897218026, 0.733109688067] +- [ 0.280023003371, -0.203448609013, 0.947028210087] +- [ 0.000000000000, 0.000000000000, 0.000000000000] diff --git a/cell2mol/missingH.py b/cell2mol/missingH.py deleted file mode 100755 index dfec6737a..000000000 --- a/cell2mol/missingH.py +++ /dev/null @@ -1,195 +0,0 @@ -#!/usr/bin/env python - -import numpy as np -from cell2mol.other import get_angle, get_dist - -############################## -def unit_vector(v): - return v / np.linalg.norm(v) - -############################## -def get_missingH(Z, valence, center, charge, edges, points): - missingH = False - - sum_bond_order = np.sum(edges) - lonepairs = (valence - charge - sum_bond_order) / 2 - num_adj_atoms = len(edges) - report = "" - - # Creates and sends Vectors - vecs = [] - for coord in points: - vec = np.subtract(coord, center) - vecs.append(unit_vector(vec)) - shape, shapeval, report_shape = find_shape(vecs) - - # Evaluates geometry - val_e = num_adj_atoms # - charge - if val_e < shapeval: missingH = True - if val_e == shapeval: missingH = False - if val_e > shapeval: missingH = True - - # Saves report - report += str(f"Summary of facts:\n -Atom has {num_adj_atoms} adjacent atoms \n -with total bond order {sum_bond_order} \n -arranged in a shape {shape} that suggests coordination {shapeval} \n -with formal charge {charge} \n -valence {valence} and {lonepairs} lone pairs. \n") - report += report_shape - - return missingH, report - - -############################## -def get_missingH_from_adjacency(Z, center, points, bonded_atom_labels): - missingH = False - - num_adj_atoms = len(points) - report = "" - - # Creates and sends Vectors - vecs = [] - for coord in points: - vec = np.subtract(coord, center) - vecs.append(unit_vector(vec)) - shape, shapeval, report_shape = find_shape(vecs) - - # Evaluates geometry - val_e = num_adj_atoms - if val_e == 1: - if bonded_atom_labels[0] == "O" or bonded_atom_labels[0] == "N": # CO or CN - missingH = False - else: - shapeval = "more than 1 (possibly missing H in methyl)" - missingH = True - elif val_e == shapeval : - missingH = False - elif val_e > shapeval: # carbon has more than 4 bonds - missingH = False - else : # val_e < shapeval - missingH = True - - # Saves report - # print(f"Summary of facts:\n -Atom has {num_adj_atoms} adjacent atoms \n -with total bond order {sum_bond_order} \n -arranged in a shape {shape} that suggests coordination {shapeval} \n -with formal charge {charge} \n -valence {valence} and {lonepairs} lone pairs.") - # report += str(f"Summary of facts:\n -Atom has {num_adj_atoms} adjacent atoms \n -with total bond order {sum_bond_order} \n -arranged in a shape {shape} that suggests coordination {shapeval} \n -with formal charge {charge} \n -valence {valence} and {lonepairs} lone pairs. \n") - report += str(f"Summary of facts:\n -Atom has {num_adj_atoms} adjacent atoms \n -arranged in a shape {shape} that suggests coordination {shapeval} \n") - report += report_shape - - #missingH = False - - return missingH, report - - -###################### -def find_shape(vecs): - atol = 4e-1 - shape = "Unassigned" - shapeval = 0 - report_shape = "" - if len(vecs) == 1: - shape = "Point" - shapeval = 1 - else: - angles = [] - for idx, a in enumerate(vecs): - for jdx, b in enumerate(vecs): - if idx != jdx: - tmp = get_angle(a, b) - if tmp not in angles: angles.append(tmp) - avg_angle = np.mean(angles) - report_shape += str(f"Angles {angles} Avg: {avg_angle}\n") - report_shape += str(f"Angles {np.degrees(angles)} Avg: {np.degrees(avg_angle)}\n") - diffs = list([np.abs(avg_angle - np.pi),np.abs(avg_angle - 2.094395),np.abs(avg_angle - 1.570796),np.abs(avg_angle - 1.911136)]) - minshape = np.argmin(diffs) - minval = np.min(diffs) - report_shape += str(f"Diffs: {diffs} Minval: {minval}\n") - if minval <= atol: - if minshape == 0: shape = "Linear"; shapeval = 2 - elif minshape == 1: shape = "Triangular"; shapeval = 3 - elif minshape == 2: shape = "SquarePlanar"; shapeval = 4 - elif minshape == 3: shape = "Tetrahedron"; shapeval = 4 - return shape, shapeval, report_shape - -###################### -def check_missingH(refmoleclist: list, debug: int=0): - - Missing_H_in_C = False - Missing_H_in_Water = False - Missing_H_in_CoordWater = False - ismissingH = False - Warning = False - - # List of Metal Atoms for which O atoms might appear connected directly. - Exceptions_for_CoordWater = ["Re", "V", "Mo", "W", "Fe", "Tc"] - - # List of fullerenes - fullerene = ["C60", "C72", "C80"] - - if debug >= 1: print("") - if debug >= 1: print("##################") - if debug >= 1: print("Checking Missing H") - if debug >= 1: print("##################") - for idx, ref in enumerate(refmoleclist): - if not ref.iscomplex and not ref.has_IA_IIA: - if ref.natoms == 1 and "O" in ref.labels: - Missing_H_in_Water = True - # Missing_H_in_CoordWater = True - if debug >= 1: print(f"WARNING found isolated O atom in the cell. This tends to be a water with missing H, so stopping") - elif ref.formula == "CO" or ref.formula == "CN": - pass - elif ref.formula in fullerene: - if debug >= 1: print(f"Found fullerene {ref.formula} in the cell. skipping missing H check in carbon atoms") - else: - for kdx, a in enumerate(ref.atoms): - if not hasattr(a,"adjacency"): continue - if a.label == "C": - bonded_atom_coord = [] - bonded_atom_labels = [] - - for adj in a.adjacency: - bonded_atom_coord.append(ref.coord[adj]) - bonded_atom_labels.append(ref.atoms[adj].label) - if debug >= 2: print("Adjacency", a.adjacency, bonded_atom_labels) - ismissingH, report = get_missingH_from_adjacency(a.atnum, a.coord, bonded_atom_coord, bonded_atom_labels) - if ismissingH: - for label, coord in zip(bonded_atom_labels, bonded_atom_coord): - print("Dist", f"{a.label}-{label}", get_dist(a.coord, coord)) - if ismissingH: - if debug >= 1: print("") - if debug >= 1: print(f"WARNING in Missing H function for: {ref.type}, molecule index {idx}, {ref.formula}") - if debug >= 1: print(f"C Atom {kdx} {a.get_parent_index('molecule')} ref_idx={a.get_parent_index('reference')} has missing H atoms") - if debug >= 1: print(report) - Missing_H_in_C = True - else: - for jdx, lig in enumerate(ref.ligands): - if lig.natoms == 1 and "O" in lig.labels and lig.denticity <= 1: - if any(m.label in Exceptions_for_CoordWater for m in lig.metals): pass - # else: - # Missing_H_in_CoordWater = True - # if debug >= 1: print("") - # if debug >= 1: print("WARNING in Missing H function for ligand", lig.natoms, lig.labels) - elif lig.formula == "CO" or lig.formula == "CN": - pass - elif ref.formula in fullerene: - pass - if debug >= 1: print(f"Found fullerene {ref.formula} in the cell. skipping missing H check in carbon atoms") - else: - for kdx, a in enumerate(lig.atoms): - if a.label == "C" and a.mconnec == 0: - bonded_atom_coord = [] - bonded_atom_labels = [] - - for adj in a.adjacency: - bonded_atom_coord.append(lig.get_parent("molecule").coord[adj]) - bonded_atom_labels.append(lig.get_parent("molecule").atoms[adj].label) - if debug >= 2: print("Adjacency", a.adjacency, bonded_atom_labels) - ismissingH, report = get_missingH_from_adjacency(a.atnum, a.coord, bonded_atom_coord, bonded_atom_labels) - if ismissingH: - print(a.label, a.mconnec, a.coord) - if debug >= 1: print("") - if debug >= 1: print(f"WARNING in Missing H function for: {ref.type}, molecule index {idx}, ligand index {jdx}, {lig.formula}") - if debug >= 1: print(f"C Atom {kdx} {a.get_parent_index('molecule')} ref_idx={a.get_parent_index('reference')} has missing H atoms") - if debug >= 1: print(report) - Missing_H_in_C = True - - if Missing_H_in_C or Missing_H_in_CoordWater or Missing_H_in_Water : Warning = True - if not Warning: - if debug >= 1: print("Not a Single Molecule has Missing H atoms (apparently)") - - return Warning, ismissingH, Missing_H_in_C, Missing_H_in_CoordWater, Missing_H_in_Water diff --git a/cell2mol/models/TM-GSspinPlus_RandomForest.joblib b/cell2mol/models/TM-GSspinPlus_RandomForest.joblib new file mode 100644 index 000000000..46477b1be Binary files /dev/null and b/cell2mol/models/TM-GSspinPlus_RandomForest.joblib differ diff --git a/cell2mol/models/TM-GSspinPlus_rel_m_splitting.txt b/cell2mol/models/TM-GSspinPlus_rel_m_splitting.txt new file mode 100644 index 000000000..203a5a849 --- /dev/null +++ b/cell2mol/models/TM-GSspinPlus_rel_m_splitting.txt @@ -0,0 +1,2261 @@ +refcode metal total_charge multiplicity elem_nr m_ox d_elec hapticity CN geometry geom_nr rel_m splitting +AACANI11 Ni 0 3 28 2 8 False 5 Square pyramidal 14 1.046 -11.63 +ABAJIX Co 2 2 27 2 7 False 5 Square pyramidal 14 1.038 15.57 +ABATED Co 0 3 27 1 8 True 3 Trigonal planar 3 1.156 -17.54 +ABATUT Co 0 1 27 3 6 False 3 Trigonal planar 3 0.848 25.81 +ABEDAN Ni 2 3 28 2 8 False 6 Octahedral 18 1.085 -31.41 +ABOTNI Ni 0 3 28 2 8 False 6 Octahedral 18 1.106 -17.81 +ACEGOH Cr 0 4 24 3 3 False 5 Square pyramidal 14 1.04 -41.92 +ACEYOW Fe 2 5 26 2 6 False 6 Octahedral 18 1.094 -16.04 +ACNCOB20 Co 1 1 27 1 8 True 5 Trigonal bipyramidal 13 0.963 38.62 +ACODUR Fe 0 1 26 2 6 True 4 Tetrahedral 8 0.956 106.08 +ADEQUY Co 0 4 27 2 7 False 4 Tetrahedral 8 0.996 -13.2 +ADERAF Co 0 4 27 2 7 False 4 Tetrahedral 8 0.998 -17.75 +ADIGEB Fe 0 6 26 3 5 False 4 Tetrahedral 8 0.963 -45.98 +AENNIN Ni 2 3 28 2 8 False 6 Octahedral 18 1.132 -37.94 +AETSFE Fe 1 2 26 3 5 False 6 Octahedral 18 0.951 49.29 +AFAVIO Ni 0 3 28 2 8 False 6 Octahedral 18 1.121 -42.1 +AFOMEQ Cr 0 4 24 3 3 False 6 Octahedral 18 0.961 -35.94 +AFOSUM Cr 0 5 24 2 4 False 4 Square planar 7 0.986 -64.17 +AFUDAH Ni 0 1 28 2 8 False 4 Square planar 7 0.973 16.19 +AGAMIH Ni 1 3 28 2 8 False 6 Octahedral 18 1.113 -41.88 +AGAVAI Co 0 2 27 2 7 False 4 Square planar 7 0.898 45.76 +AGEZIW Co 1 1 27 3 6 True 4 Tetrahedral 8 1.036 55.97 +AGIDEC Co -2 4 27 2 7 False 4 Seesaw 9 1.027 -28.72 +AGLCMN Mn 0 6 25 2 5 False 6 Octahedral 18 1.086 -47.11 +AGODAC Co 0 1 27 3 6 False 6 Octahedral 18 0.973 93.29 +AGOZUR Ni 0 3 28 2 8 False 6 Octahedral 18 1.119 -50.34 +AGUBAF Mn 0 6 25 2 5 False 6 Octahedral 18 1.085 -46.05 +AGUDUE Co 1 2 27 2 7 False 4 Square planar 7 0.924 26.38 +AGXICO Co 0 2 27 2 7 False 4 Square planar 7 0.935 50.84 +AHABER Ni 0 3 28 2 8 False 4 Tetrahedral 8 1.004 -27.85 +AHABIV Ni 0 3 28 2 8 False 4 Tetrahedral 8 1.032 -32.54 +AHEZAO Cr 0 4 24 3 3 False 6 Octahedral 18 0.952 -36.09 +AHIGOO Ni 0 1 28 2 8 False 5 Trigonal bipyramidal 13 0.947 45.82 +AHUCUE Ni 0 3 28 2 8 False 4 Tetrahedral 8 1.013 -15.77 +AHUGOA Fe 0 5 26 2 6 False 4 Seesaw 9 0.988 -39.1 +AJAFEX Ni 0 1 28 2 8 False 4 Square planar 7 0.923 55.06 +AJALAZ Co 0 2 27 2 7 False 4 Square planar 7 0.925 24.93 +AJALED Fe 0 5 26 2 6 False 4 Tetrahedral 8 0.984 -44.46 +AJALIH Fe 0 5 26 2 6 False 4 Tetrahedral 8 0.965 -40.85 +AJICUT Mn 0 6 25 2 5 False 5 Square pyramidal 14 1.044 -60.54 +AJIMOV Fe 0 1 26 2 6 False 6 Octahedral 18 0.903 106.56 +AJUKIA Fe 0 1 26 2 6 True 2 Linear 0 1.033 66.84 +AKASIQ Cr 0 5 24 2 4 False 3 Trigonal planar 3 0.897 -55.23 +ALALAA Fe 0 2 26 3 5 False 5 Square pyramidal 14 0.962 34.29 +ALEQEO Fe 0 1 26 2 6 False 6 Octahedral 18 0.916 76.99 +ALILOX Fe 0 1 26 2 6 False 6 Octahedral 18 0.945 45.28 +ALIYOJ Mn 0 5 25 3 4 False 6 Octahedral 18 0.988 -57.71 +ALLPMN Mn 0 1 25 1 6 True 5 Trigonal bipyramidal 13 0.9 144.18 +ALOTOL Ni 0 1 28 2 8 False 4 Square planar 7 0.924 60.44 +ALOTUR Ni 0 1 28 2 8 False 4 Square planar 7 0.94 59.83 +AMATEQ Mn -2 6 25 2 5 False 6 Octahedral 18 1.088 -43.75 +APOHUK Co -2 4 27 2 7 False 4 Tetrahedral 8 0.998 -19.51 +APRCOB Co 1 1 27 3 6 False 6 Octahedral 18 0.985 57.18 +APUDUM Fe 0 5 26 2 6 False 4 Tetrahedral 8 0.989 -28.08 +AQIYAA Fe -2 1 26 2 6 False 6 Octahedral 18 0.894 108.23 +AQIYII Fe -1 1 26 2 6 False 6 Octahedral 18 0.893 107.26 +AQIZEF Fe -2 1 26 2 6 False 6 Octahedral 18 0.886 120.34 +AQSUMN Mn 0 6 25 2 5 False 6 Octahedral 18 1.086 -44.12 +AQUGEY Fe 0 5 26 2 6 False 4 Tetrahedral 8 1.003 -27.24 +AQUGIF Co 0 3 27 1 8 False 3 T-shaped 6 0.948 -24.75 +AREJUD Ni 0 1 28 2 8 False 4 Square planar 7 0.955 57.82 +ARIMUJ Co 1 1 27 3 6 False 6 Octahedral 18 0.983 83.25 +ARIRIC Cr 0 4 24 3 3 True 4 Tetrahedral 8 1.025 -19.35 +ARIVEE Ni 0 1 28 2 8 False 4 Square planar 7 0.952 19.15 +ASASOF Fe 0 1 26 2 6 True 4 Tetrahedral 8 1.007 43.83 +ASATEW Fe 0 2 26 3 5 True 4 Tetrahedral 8 1.008 53.46 +ASENIA Ni -2 1 28 2 8 False 4 Square planar 7 0.953 19.03 +ASUTUD Fe 0 5 26 2 6 False 4 Tetrahedral 8 1.102 -51.92 +ASUVIT Mn 0 6 25 2 5 False 4 Tetrahedral 8 1.091 -67.71 +ATOCOC Ni 0 3 28 2 8 False 6 Octahedral 18 1.126 -29.02 +ATOFAS Fe 0 6 26 3 5 False 6 Octahedral 18 1.042 -19.85 +ATOMOM Mn 2 6 25 2 5 False 7 Pentagonal bipyramidal 23 1.153 -46.48 +ATUFAW Co 0 1 27 1 8 True 3 Trigonal planar 3 1.067 34.19 +AVALAL Mn 0 6 25 2 5 False 5 Square pyramidal 14 1.042 -56.18 +AVOKAX Ni 0 1 28 2 8 True 4 Tetrahedral 8 1.016 47.99 +AVUCUP Cr 0 4 24 3 3 True 4 Tetrahedral 8 1.042 -30.07 +AWESAY Co 0 4 27 2 7 False 5 Trigonal bipyramidal 13 1.083 -22.84 +AWOLOO Mn 0 5 25 3 4 False 5 Square pyramidal 14 0.924 -50.25 +AXISIJ Mn 0 5 25 3 4 False 6 Octahedral 18 0.99 -43.95 +AXITAC Mn 0 6 25 2 5 False 6 Octahedral 18 1.097 -48.18 +AYAGIQ Ni 0 1 28 2 8 True 3 Trigonal planar 3 1.087 24.08 +AYIZOY Co -4 4 27 2 7 False 6 Octahedral 18 1.134 -16.98 +AYOYES Ni 0 3 28 2 8 False 5 Trigonal bipyramidal 13 1.07 -30.0 +AZIDIY Ni -1 3 28 2 8 False 4 Tetrahedral 8 1.012 -39.96 +AZISUY Mn 0 6 25 2 5 False 6 Octahedral 18 1.11 -51.53 +AZOCNI16 Ni 1 3 28 2 8 False 5 Trigonal bipyramidal 13 1.099 -29.59 +AZUMAJ Mn 0 6 25 2 5 False 6 Octahedral 18 1.106 -49.47 +BABCAK Co 0 4 27 2 7 False 4 Tetrahedral 8 0.978 -20.36 +BABPAX Ni -2 1 28 2 8 False 4 Square planar 7 0.923 27.34 +BABQIE Fe 0 1 26 0 6 True 4 Tetrahedral 8 0.939 129.15 +BABTED Co 0 1 27 1 8 True 4 Tetrahedral 8 0.947 47.56 +BACNOK Mn 1 6 25 2 5 False 5 Trigonal bipyramidal 13 1.07 -46.79 +BADHIZ Ni 0 3 28 2 8 False 6 Octahedral 18 1.135 -32.29 +BAFSIO Co 0 1 27 1 8 False 4 Square planar 7 0.887 30.12 +BAHDAS Co -2 4 27 2 7 False 7 Pentagonal bipyramidal 23 1.226 -38.4 +BAJJEB Co 0 4 27 2 7 False 6 Octahedral 18 1.131 -9.39 +BAJVUE Ni 0 3 28 2 8 False 5 Trigonal bipyramidal 13 1.078 -18.42 +BAJWAL Ni 0 3 28 2 8 False 4 Seesaw 9 1.002 -14.07 +BAJWEP Ni 0 3 28 2 8 False 4 Seesaw 9 0.997 -13.71 +BAJWOZ Ni 0 3 28 2 8 False 4 Tetrahedral 8 0.991 -35.98 +BAMBAV Fe -4 1 26 2 6 False 6 Octahedral 18 0.891 132.98 +BAMCOM Co -2 2 27 2 7 False 4 Square planar 7 0.883 23.11 +BAPKEI Ni 1 1 28 2 8 False 5 Trigonal bipyramidal 13 0.969 48.64 +BAPPOX Cr 2 4 24 3 3 False 6 Octahedral 18 0.979 -23.27 +BATSIY Ni 1 3 28 2 8 False 5 Square pyramidal 14 1.09 -22.84 +BAVNAN Ni 2 3 28 2 8 False 6 Octahedral 18 1.127 -42.77 +BAWLAN Mn 0 6 25 2 5 False 5 Square pyramidal 14 1.075 -46.41 +BAWZIL Co 0 4 27 2 7 False 6 Octahedral 18 1.127 -14.91 +BAYDEL Fe 0 1 26 2 6 False 6 Octahedral 18 0.952 69.98 +BAYHUF Fe 0 5 26 2 6 False 5 Square pyramidal 14 1.108 -27.9 +BAZSUR Ni 0 1 28 2 8 False 4 Square planar 7 0.921 35.04 +BEFPOR Mn 0 1 25 1 6 True 4 Tetrahedral 8 0.946 88.66 +BEJDUS Ni 0 1 28 2 8 True 3 Trigonal planar 3 1.061 16.26 +BEKGAB Cr 0 4 24 3 3 True 4 Tetrahedral 8 1.048 -28.97 +BEKGOP Cr 0 4 24 3 3 True 4 Tetrahedral 8 1.07 -19.32 +BEKPUE Co 0 1 27 3 6 True 4 Tetrahedral 8 1.044 58.55 +BEKZIA Fe 0 6 26 3 5 False 5 Square pyramidal 14 0.974 -29.49 +BEMJIN Co 0 4 27 2 7 False 6 Octahedral 18 1.144 -18.75 +BEMNAK Ni 0 1 28 2 8 False 4 Square planar 7 0.927 37.6 +BEMWUM Mn 2 6 25 2 5 False 6 Octahedral 18 1.091 -54.5 +BEPRET Mn 0 5 25 3 4 False 5 Square pyramidal 14 0.906 -54.04 +BEPTIA Mn 0 5 25 3 4 False 6 Octahedral 18 0.987 -41.85 +BEQYOM Cr 0 4 24 3 3 True 3 Trigonal planar 3 1.08 -32.51 +BESBEI Fe 0 6 26 3 5 False 5 Square pyramidal 14 1.023 -36.92 +BETQAT Mn 1 1 25 1 6 False 6 Octahedral 18 0.876 95.46 +BEXJEW Ni -1 2 28 3 7 False 4 Square planar 7 0.89 35.75 +BEXJUK Mn 0 6 25 2 5 True 4 Tetrahedral 8 1.196 -44.4 +BEXKOE Ni 0 1 28 2 8 False 4 Square planar 7 0.94 23.01 +BEXLIC Mn 0 6 25 2 5 False 4 Tetrahedral 8 0.99 -36.94 +BEXZIN Ni 0 1 28 2 8 False 4 Square planar 7 0.935 43.67 +BEZLOH Cr 0 1 24 0 5 True 5 Trigonal bipyramidal 13 1.026 117.68 +BGUCRM Cr 0 4 24 3 3 False 6 Octahedral 18 0.94 -37.03 +BIBDOG Ni -1 1 28 2 8 False 4 Square planar 7 0.897 29.36 +BIBDUM Ni -1 2 28 3 7 False 5 Trigonal bipyramidal 13 0.941 27.58 +BIBFEY Ni -1 2 28 3 7 False 5 Trigonal bipyramidal 13 0.959 25.59 +BIHKAE Ni 0 3 28 2 8 False 6 Octahedral 18 1.106 -36.97 +BIJJAG Fe 0 5 26 2 6 False 3 Trigonal planar 3 0.959 -58.32 +BIKDAA Mn 0 6 25 2 5 False 8 Dodecahedral 33 1.215 -65.8 +BILQUI Fe 1 1 26 2 6 True 5 Square pyramidal 14 0.938 92.07 +BILVUQ Cr 0 4 24 3 3 False 6 Octahedral 18 0.983 -43.42 +BILWAX Cr 0 4 24 3 3 False 6 Octahedral 18 0.974 -42.64 +BINCOR Ni 0 2 28 3 7 False 5 Square pyramidal 14 1.017 42.88 +BINJOZ Co -2 4 27 2 7 False 4 Tetrahedral 8 0.994 -45.1 +BIPJER Mn -2 6 25 2 5 False 6 Trigonal prismatic 19 1.096 -52.01 +BIPMAO Cr 0 1 24 0 5 True 4 Tetrahedral 8 0.994 89.3 +BISHIX Mn 0 1 25 1 6 True 4 Tetrahedral 8 0.926 118.42 +BISXIK Co 0 1 27 3 6 False 6 Octahedral 18 0.949 90.29 +BITTAC Co 0 2 27 2 7 False 4 Square planar 7 0.907 37.16 +BIVTOP Cr 0 1 24 0 5 False 6 Octahedral 18 0.863 140.39 +BIWPED Co 0 4 27 2 7 False 4 Tetrahedral 8 1.032 -27.08 +BIXWOX Co 0 2 27 2 7 False 4 Square planar 7 0.969 55.08 +BIZQOQ Co 0 1 27 3 6 True 4 Tetrahedral 8 1.013 47.43 +BODQES Co -1 1 27 3 6 False 6 Octahedral 18 0.971 102.23 +BOFGOS Fe 0 1 26 2 6 True 4 Tetrahedral 8 0.972 99.21 +BOHGAG Co 3 1 27 3 6 False 6 Octahedral 18 1.002 89.36 +BOJPOI Ni 0 1 28 0 8 False 4 Tetrahedral 8 0.873 78.34 +BOKZEH Ni 0 3 28 2 8 False 5 Square pyramidal 14 1.056 -24.73 +BOLVAA Ni 0 1 28 2 8 False 4 Square planar 7 0.95 63.91 +BOMVEF Ni 0 1 28 2 8 False 4 Square planar 7 0.918 39.51 +BONGEQ Cr 0 1 24 0 5 True 4 Tetrahedral 8 0.966 106.81 +BOQPIH Co 2 4 27 2 7 False 6 Octahedral 18 1.147 -14.51 +BORFET Cr 0 1 24 0 5 False 6 Octahedral 18 0.873 126.89 +BOTHEX Cr 0 4 24 3 3 False 6 Octahedral 18 0.948 -22.11 +BOTQEH Co 2 1 27 3 6 False 6 Octahedral 18 0.986 63.89 +BOWYUJ Fe -1 6 26 3 5 False 4 Tetrahedral 8 0.861 -48.72 +BOXMIK Co 2 2 27 2 7 False 6 Octahedral 18 1.008 18.41 +BOZJEH Ni 2 3 28 2 8 False 6 Octahedral 18 1.126 -42.72 +BRURMN Mn 0 6 25 2 5 False 5 Trigonal bipyramidal 13 1.026 -74.27 +BUBHEM Mn 0 6 25 2 5 False 4 Tetrahedral 8 1.089 -65.29 +BUBLEQ Ni 0 3 28 2 8 False 4 Tetrahedral 8 0.975 -32.95 +BUCRAS Mn 1 6 25 2 5 False 7 Pentagonal bipyramidal 23 1.136 -58.8 +BUDHEN Ni 0 2 28 3 7 False 5 Square pyramidal 14 1.015 40.86 +BUJPIH Cr 0 5 24 2 4 False 5 Square pyramidal 14 1.027 -55.99 +BUKFAR Co 0 4 27 2 7 False 6 Octahedral 18 1.137 -15.52 +BUQCUL Fe 1 2 26 3 5 True 4 Tetrahedral 8 1.022 51.94 +BURMIL Mn 0 1 25 1 6 False 6 Octahedral 18 0.827 166.92 +BUSMOR Mn 0 6 25 2 5 False 4 Tetrahedral 8 1.077 -59.15 +BUTDAV Cr 1 4 24 3 3 False 6 Octahedral 18 0.955 -49.15 +BUXJEJ Ni 2 3 28 2 8 False 6 Octahedral 18 1.078 -31.76 +BUXYIE Mn 0 5 25 3 4 False 5 Square pyramidal 14 0.942 -38.67 +CADHOE Co 1 1 27 3 6 False 6 Octahedral 18 0.947 80.76 +CADYEM Fe -1 1 26 2 6 False 6 Octahedral 18 0.865 159.07 +CADYUC Co 0 4 27 2 7 False 4 Tetrahedral 8 1.006 -27.43 +CADZAJ Co 0 4 27 2 7 False 4 Tetrahedral 8 1.009 -26.05 +CAFTIM Fe 0 1 26 0 6 False 5 Trigonal bipyramidal 13 0.824 154.98 +CAFYAK Co 0 3 27 1 8 False 4 Tetrahedral 8 0.963 -39.82 +CAFZAM Cr 0 5 24 2 4 False 4 Seesaw 9 0.968 -48.87 +CAGCIW Cr -2 5 24 2 4 False 6 Octahedral 18 1.071 -52.51 +CAGSOV Ni 1 3 28 2 8 False 6 Octahedral 18 1.143 -34.48 +CAHCOP Co 0 1 27 1 8 False 5 Trigonal bipyramidal 13 0.874 52.26 +CAHGAW Mn 0 6 25 2 5 False 6 Trigonal prismatic 19 1.117 -64.34 +CAHQAD Co 0 4 27 2 7 False 4 Tetrahedral 8 1.044 -44.31 +CAHQEH Co 0 3 27 1 8 True 4 Seesaw 9 1.076 -37.36 +CAJFAV Fe 1 5 26 2 6 False 5 Trigonal bipyramidal 13 1.067 -33.97 +CAJFEZ Fe 2 2 26 3 5 False 6 Octahedral 18 0.941 45.99 +CAMRAM Ni -2 1 28 2 8 False 4 Square planar 7 0.924 12.84 +CAPZAW Fe -1 6 26 3 5 False 6 Octahedral 18 1.039 -18.39 +CASLOX Ni 0 3 28 2 8 False 5 Trigonal bipyramidal 13 1.104 -32.46 +CASXAY Co -2 4 27 2 7 False 4 Tetrahedral 8 0.988 -24.44 +CATGEJ Fe 0 1 26 0 6 True 4 Tetrahedral 8 0.937 107.23 +CAWPOG Ni 2 1 28 2 8 False 5 Square pyramidal 14 1.017 28.49 +CAXVAZ Mn 1 5 25 3 4 False 6 Octahedral 18 0.986 -54.55 +CAZVAA Cr -1 4 24 3 3 False 6 Octahedral 18 0.966 -21.79 +CAZZUY Mn 0 6 25 2 5 False 4 Tetrahedral 8 1.072 -52.01 +CEBZIS Ni -2 1 28 2 8 False 4 Square planar 7 0.915 26.31 +CECBOB Fe 0 1 26 2 6 False 6 Octahedral 18 0.897 78.94 +CECKEB Ni -2 1 28 2 8 False 4 Square planar 7 0.902 19.43 +CEDXIT Mn 2 6 25 2 5 False 7 Pentagonal bipyramidal 23 1.142 -57.22 +CEDYAM Ni 2 3 28 2 8 False 7 Pentagonal bipyramidal 23 1.241 -31.02 +CEHHON Fe 2 1 26 2 6 False 6 Octahedral 18 0.891 134.45 +CEHYAP01 Co 1 1 27 3 6 False 6 Octahedral 18 0.978 89.57 +CEHZOF Co 0 1 27 3 6 True 4 Tetrahedral 8 1.02 41.15 +CEKJIO Ni 0 1 28 2 8 False 4 Square planar 7 0.959 37.67 +CEMSIW Mn -2 6 25 2 5 False 4 Tetrahedral 8 0.995 -58.11 +CEMWIC Fe 0 5 26 2 6 False 5 Square pyramidal 14 1.106 -47.89 +CEPFEI Ni 0 3 28 2 8 False 5 Square pyramidal 14 1.053 -22.44 +CEQPIZ Fe 0 2 26 3 5 True 3 Trigonal planar 3 1.049 51.29 +CEQPOF Fe 0 2 26 3 5 True 3 Trigonal planar 3 1.046 52.56 +CEQSEW Ni 0 1 28 2 8 False 4 Square planar 7 0.884 26.16 +CESGOW Fe 1 2 26 3 5 False 6 Octahedral 18 0.92 72.64 +CETFAI Fe 2 5 26 2 6 False 6 Octahedral 18 1.111 -21.58 +CETGOX Mn 2 6 25 2 5 False 6 Octahedral 18 1.113 -46.7 +CETJIU Co 2 4 27 2 7 False 6 Octahedral 18 1.144 -10.3 +CETXAA Ni 0 2 28 3 7 False 5 Square pyramidal 14 0.943 34.68 +CEXJEW Mn 1 5 25 3 4 False 6 Octahedral 18 1.024 -47.95 +CEXLUN Fe -1 6 26 3 5 False 4 Tetrahedral 8 0.905 -44.79 +CEZYOW Mn 0 6 25 2 5 False 4 Tetrahedral 8 1.028 -65.98 +CEZYUC Mn 0 6 25 2 5 False 5 Square pyramidal 14 1.101 -62.12 +CGLYMN Mn 0 6 25 2 5 False 6 Octahedral 18 1.092 -60.13 +CIDKEI Mn 0 6 25 2 5 False 6 Octahedral 18 1.102 -47.36 +CIDVOA Cr 0 5 24 2 4 False 6 Octahedral 18 1.047 -41.57 +CIGBUP Ni 2 3 28 2 8 False 6 Octahedral 18 1.127 -28.08 +CIHJEJ Cr 0 4 24 3 3 True 4 Tetrahedral 8 1.035 -37.73 +CIHWAR Co 1 2 27 2 7 True 3 Trigonal planar 3 1.029 33.75 +CIJYID Ni 2 3 28 2 8 False 6 Octahedral 18 1.097 -25.95 +CILGIO Cr 0 5 24 2 4 False 4 Square planar 7 1.003 -61.85 +CIMBUV Mn 1 1 25 1 6 False 6 Octahedral 18 0.84 120.45 +CIMGOU Mn 1 1 25 1 6 False 6 Octahedral 18 0.858 120.05 +CIMHEL Mn 1 1 25 1 6 False 6 Octahedral 18 0.852 146.51 +CIRDEN Mn 0 6 25 2 5 False 4 Tetrahedral 8 1.009 -77.13 +CIXXAJ Co 0 3 27 1 8 False 4 Tetrahedral 8 0.907 -25.2 +CIXXEN Co 0 3 27 1 8 False 4 Tetrahedral 8 0.927 -25.59 +CIZLAY Co 0 1 27 3 6 True 4 Tetrahedral 8 1.007 67.24 +CLSINI10 Ni 0 1 28 2 8 False 4 Square planar 7 0.932 29.52 +CMNMVK Mn 0 1 25 1 6 True 4 Tetrahedral 8 0.96 107.44 +CMPHSC Cr 0 1 24 0 5 False 6 Octahedral 18 0.865 137.33 +CMPYCR Cr 0 1 24 0 5 True 4 Tetrahedral 8 0.96 115.95 +CNITSC Ni 2 1 28 2 8 False 4 Square planar 7 0.945 25.04 +COBGAB Ni 1 3 28 2 8 False 6 Octahedral 18 1.14 -40.18 +CODLEO Co 0 4 27 2 7 False 4 Tetrahedral 8 0.983 -22.81 +CODLIS Mn 0 6 25 2 5 False 4 Tetrahedral 8 0.976 -57.1 +CODWAU Ni 0 1 28 2 8 False 4 Square planar 7 0.921 52.84 +COETDS10 Co 2 4 27 2 7 False 6 Octahedral 18 1.133 -20.9 +COFMOC Ni 2 3 28 2 8 False 6 Octahedral 18 1.119 -50.58 +COFRIZ Cr 0 4 24 3 3 True 4 Tetrahedral 8 1.035 -20.26 +COIMAC10 Co 0 4 27 2 7 False 4 Tetrahedral 8 1.039 -35.54 +COJGUG Mn 0 5 25 3 4 False 5 Trigonal bipyramidal 13 0.937 -33.43 +COJHAN Mn -1 5 25 3 4 False 5 Trigonal bipyramidal 13 0.924 -30.43 +COKLOD Co 2 4 27 2 7 False 7 Pentagonal bipyramidal 23 1.216 -34.0 +COLNEW Mn 0 6 25 2 5 True 4 Tetrahedral 8 1.234 -49.21 +COPCAM Cr 0 5 24 2 4 False 4 Seesaw 9 0.954 -53.69 +COPKAU Cr 0 1 24 0 5 True 4 Tetrahedral 8 0.975 123.59 +CORHUN Ni 0 3 28 2 8 False 5 Square pyramidal 14 1.048 -19.72 +CORSIO Fe 0 5 26 2 6 False 4 Tetrahedral 8 0.983 -55.51 +CORSUA Fe 0 5 26 2 6 False 4 Tetrahedral 8 0.994 -56.0 +COSCIZ Co 2 1 27 3 6 True 2 Linear 0 1.083 89.93 +COSGEW Fe 0 1 26 2 6 False 6 Octahedral 18 0.883 118.66 +COYLEH10 Mn 0 6 25 2 5 False 4 Tetrahedral 8 1.064 -54.28 +CPMSNI10 Ni 1 3 28 2 8 False 6 Octahedral 18 1.126 -36.8 +CPTCFE Fe 0 1 26 2 6 False 6 Octahedral 18 0.907 79.81 +CSCNCC01 Co -3 1 27 3 6 False 6 Octahedral 18 0.91 152.64 +CTHUCO10 Co 0 4 27 2 7 False 6 Octahedral 18 1.165 -15.94 +CUBBOQ Cr 0 5 24 2 4 False 5 Square pyramidal 14 1.021 -59.63 +CUCQIB Fe 0 1 26 2 6 False 6 Octahedral 18 0.871 93.57 +CUCWEE Fe 0 5 26 2 6 False 5 Square pyramidal 14 1.052 -43.04 +CUDKAN Ni 2 3 28 2 8 False 6 Octahedral 18 1.126 -34.1 +CUHGUH Fe -1 2 26 3 5 False 6 Octahedral 18 0.933 52.81 +CUHGUK Ni 0 3 28 2 8 False 5 Trigonal bipyramidal 13 1.073 -25.66 +CUJNAY Co 0 3 27 1 8 True 2 Linear 0 1.108 -32.85 +CUJSAD Mn -1 5 25 1 6 False 2 Linear 0 1.001 -71.1 +CUPCEV Cr 2 4 24 3 3 False 6 Octahedral 18 0.973 -20.91 +CUQSEN Fe 0 5 26 2 6 False 5 Trigonal bipyramidal 13 1.107 -34.86 +CURVOB Co 0 4 27 2 7 False 2 Linear 0 0.956 -17.56 +CUVGOP01 Ni -2 3 28 2 8 False 4 Tetrahedral 8 1.005 -21.7 +CUVZIE Mn -1 6 25 2 5 False 4 Tetrahedral 8 0.964 -53.95 +CUWSIW Co 0 3 27 1 8 False 4 Tetrahedral 8 0.956 -38.16 +CUXREV Fe 2 1 26 2 6 False 6 Octahedral 18 0.938 54.63 +CUXXOL Ni 0 1 28 2 8 False 4 Square planar 7 0.906 41.7 +CUZBUU Co 0 4 27 2 7 False 5 Trigonal bipyramidal 13 1.075 -25.54 +CUZWUR Cr 0 4 24 3 3 True 4 Tetrahedral 8 1.053 -16.61 +DABHUK Co -1 1 27 3 6 False 6 Octahedral 18 0.956 69.31 +DABPOM Fe 0 6 26 3 5 False 4 Tetrahedral 8 0.951 -21.96 +DABQED Fe 0 6 26 3 5 False 4 Tetrahedral 8 0.92 -33.37 +DABSOP Fe 0 5 26 2 6 False 3 T-shaped 6 0.948 -43.33 +DADJEX Fe 0 4 26 3 5 False 5 Square pyramidal 14 0.987 -8.04 +DAGFAT Ni 0 3 28 2 8 False 6 Octahedral 18 1.1 -36.25 +DAJBAS Fe 0 5 26 2 6 False 4 Tetrahedral 8 0.973 -56.18 +DAJVIT Co 0 3 27 1 8 False 4 Tetrahedral 8 0.924 -35.86 +DAKNEI Ni 0 1 28 0 8 True 3 Trigonal planar 3 0.902 62.48 +DALPEO Fe 0 5 26 2 6 False 4 Seesaw 9 1.002 -30.53 +DAMTES Co 1 4 27 2 7 False 6 Octahedral 18 1.151 -15.12 +DAMYUL Co 1 4 27 2 7 False 5 Trigonal bipyramidal 13 1.116 -18.0 +DAPQOD Co 0 4 27 2 7 False 4 Tetrahedral 8 0.987 -26.15 +DAPSCR10 Cr 3 4 24 3 3 False 7 Pentagonal bipyramidal 23 1.019 -25.47 +DAQXEY Fe 0 6 26 3 5 False 5 Trigonal bipyramidal 13 0.992 -25.87 +DAXPEY Mn 0 1 25 1 6 False 6 Octahedral 18 0.871 111.64 +DAXPOI Mn 0 1 25 1 6 False 6 Octahedral 18 0.867 108.64 +DBENCR11 Cr 0 1 24 0 5 True 2 Linear 0 1.015 91.11 +DECKAZ Fe 0 5 26 2 6 False 4 Tetrahedral 8 0.983 -47.23 +DECKED Fe 0 5 26 2 6 False 4 Tetrahedral 8 0.967 -45.19 +DECKUT Fe 0 5 26 2 6 False 4 Tetrahedral 8 0.991 -56.87 +DECLAA Fe 0 5 26 2 6 False 4 Tetrahedral 8 0.973 -54.93 +DECLEE Fe 0 5 26 2 6 False 4 Tetrahedral 8 0.986 -57.59 +DEDREK Ni 1 1 28 2 8 False 4 Square planar 7 0.941 28.1 +DEDROU Ni 0 3 28 2 8 False 5 Square pyramidal 14 1.065 -17.3 +DEFPEJ Ni 0 3 28 2 8 False 6 Octahedral 18 1.106 -38.7 +DEGJEF Co 0 4 27 2 7 False 6 Octahedral 18 1.147 -8.84 +DEKFAD Fe 0 1 26 2 6 False 6 Octahedral 18 0.883 104.89 +DEKFEH Fe 0 1 26 2 6 False 6 Octahedral 18 0.895 92.81 +DELPOZ01 Fe 2 1 26 2 6 False 6 Octahedral 18 0.914 60.72 +DENYAZ Fe 2 1 26 2 6 False 6 Octahedral 18 0.945 42.77 +DEPLES Co 2 4 27 2 7 False 6 Trigonal prismatic 19 1.138 -24.39 +DEQNIX Ni 0 1 28 2 8 True 3 Trigonal planar 3 1.001 47.61 +DESSAW Fe 1 5 26 2 6 False 5 Square pyramidal 14 1.069 -30.8 +DEXFAN Co 0 2 27 2 7 True 3 Trigonal planar 3 1.039 31.04 +DEXFOB Fe 0 5 26 2 6 False 5 Square pyramidal 14 1.07 -38.06 +DEXZAK Fe 0 6 26 3 5 False 6 Octahedral 18 1.039 -22.6 +DIBHIF Ni 0 1 28 0 8 False 5 Pentagon 11 0.99 67.75 +DIDMAG Ni -1 3 28 2 8 False 4 Tetrahedral 8 0.98 -34.18 +DIDMEK Ni -1 3 28 2 8 False 4 Tetrahedral 8 0.944 -30.22 +DIFKUY Co 0 4 27 2 7 False 6 Octahedral 18 1.15 -13.4 +DIGJEJ Ni 0 1 28 2 8 False 4 Square planar 7 0.924 38.79 +DIGNUD Cr 0 2 24 3 3 True 3 Trigonal planar 3 1.048 20.74 +DIHZEC Fe 0 6 26 3 5 False 6 Octahedral 18 1.02 -11.71 +DIJJIR Cr 0 4 24 3 3 False 6 Octahedral 18 0.962 -41.16 +DIJPOE Ni 1 1 28 2 8 False 4 Square planar 7 0.961 55.33 +DIJQAR Ni 0 1 28 2 8 False 4 Square planar 7 0.986 36.46 +DIMDAH Co 0 4 27 2 7 False 4 Tetrahedral 8 1.056 -31.46 +DIMPEU11 Mn 0 6 25 2 5 False 6 Octahedral 18 1.112 -44.02 +DIRPOJ Ni 0 1 28 2 8 False 4 Square planar 7 0.949 26.25 +DITLAW Co 0 4 27 2 7 False 5 Trigonal bipyramidal 13 1.087 -18.26 +DITQEE Mn 0 6 25 2 5 False 7 Pentagonal bipyramidal 23 1.153 -57.16 +DIXXEP Cr 0 5 24 2 4 False 4 Square planar 7 1.02 -65.4 +DIYVAL Cr 0 4 24 3 3 False 6 Octahedral 18 1.041 -23.12 +DODWUQ Fe 0 5 26 2 6 False 6 Octahedral 18 1.098 -25.68 +DOFVIG Cr 1 4 24 3 3 False 6 Octahedral 18 0.945 -44.84 +DOFZAA Co 0 1 27 3 6 False 6 Octahedral 18 0.989 90.32 +DOGHEM Co 1 1 27 3 6 False 6 Octahedral 18 0.989 44.54 +DOGHOY Fe 1 6 26 3 5 False 5 Trigonal bipyramidal 13 1.007 -41.92 +DOHXED Ni 1 3 28 2 8 False 5 Square pyramidal 14 1.133 -19.34 +DOJCOX Cr -1 5 24 2 4 False 5 Square pyramidal 14 0.97 -32.12 +DOKQOJ Ni 0 1 28 2 8 False 4 Square planar 7 0.944 33.35 +DOPROS Ni 0 1 28 2 8 False 4 Square planar 7 0.951 35.48 +DOQRAC Fe 2 1 26 2 6 False 6 Octahedral 18 1.073 5.09 +DOQWUC Cr 0 5 24 2 4 False 3 T-shaped 6 0.958 -58.55 +DOQXUD Cr 0 5 24 2 4 False 3 Trigonal planar 3 0.913 -56.41 +DORPIJ Fe -1 5 26 2 6 False 6 Octahedral 18 1.11 -15.94 +DORZEP Cr -1 4 24 3 3 False 6 Octahedral 18 0.96 -36.59 +DOVKUV Mn 0 5 25 3 4 False 5 Square pyramidal 14 0.905 -46.38 +DOVMOQ Ni 0 2 28 3 7 False 6 Octahedral 18 1.078 46.9 +DOVTUD Ni 0 3 28 2 8 False 6 Octahedral 18 1.121 -41.31 +DOVYES Co 1 1 27 3 6 True 4 Tetrahedral 8 1.058 65.05 +DOXXOE Fe 0 6 26 3 5 False 6 Octahedral 18 1.08 -16.37 +DOZQIV Ni 0 1 28 0 8 True 3 Trigonal planar 3 1.044 41.64 +DPBPCR Cr 1 4 24 3 3 False 6 Octahedral 18 1.0 -48.39 +DUBPIA Cr 0 5 24 2 4 False 4 Square planar 7 0.964 -63.47 +DUCGUD Co 1 1 27 3 6 False 6 Octahedral 18 0.975 98.75 +DUCQIC Cr 0 4 24 3 3 False 6 Octahedral 18 0.951 -21.12 +DUDTUS Fe 2 1 26 2 6 False 6 Octahedral 18 0.927 80.36 +DUFLEW Fe 0 5 26 2 6 False 5 Square pyramidal 14 1.038 -30.85 +DUJCIU Cr -3 4 24 3 3 False 6 Octahedral 18 0.967 -26.99 +DULQAD Cr 2 4 24 3 3 False 6 Octahedral 18 0.954 -39.7 +DUMCUJ Ni 0 1 28 2 8 False 5 Square pyramidal 14 1.015 18.38 +DUPMUX Ni 0 3 28 2 8 False 5 Trigonal bipyramidal 13 1.102 -28.17 +DUQQAJ Mn 0 6 25 2 5 False 7 Pentagonal bipyramidal 23 1.15 -62.61 +DUSSAL Ni 0 3 28 2 8 False 6 Octahedral 18 1.103 -28.8 +DUSSOB Fe 0 5 26 2 6 False 4 Tetrahedral 8 1.006 -41.47 +DUTMIO10 Cr 0 4 24 3 3 False 6 Octahedral 18 0.997 -43.43 +DUWWEY Co 1 4 27 2 7 False 5 Trigonal bipyramidal 13 1.12 -28.41 +DUXWAW Ni 2 3 28 2 8 False 6 Octahedral 18 1.122 -33.58 +DUYZII Cr 0 5 24 2 4 False 4 Square planar 7 0.978 -66.72 +EACMCO Co 0 1 27 3 6 False 5 Square pyramidal 14 0.949 57.58 +EAIMCO Co 0 2 27 2 7 False 4 Square planar 7 0.935 25.83 +EAIVCO Co 0 1 27 3 6 False 6 Octahedral 18 1.004 70.3 +EAMNCR10 Cr 0 1 24 0 5 False 6 Octahedral 18 0.851 144.29 +EBECAP Co -2 4 27 2 7 False 4 Tetrahedral 8 1.002 -23.55 +EBIXAQ Ni -1 2 28 3 7 False 4 Square planar 7 0.889 33.33 +EBOTEU Cr 0 5 24 2 4 True 2 Linear 0 1.072 -53.83 +EBOTIY Fe 0 3 26 2 6 True 2 Linear 0 1.003 13.06 +EBUSEB Co 0 4 27 2 7 False 6 Octahedral 18 1.119 -11.9 +ECADOB01 Co 2 4 27 2 7 False 6 Octahedral 18 1.113 -17.58 +ECBIMA10 Co 0 4 27 2 7 False 4 Tetrahedral 8 1.056 -37.81 +ECEWAL Fe 0 5 26 2 6 False 5 Trigonal bipyramidal 13 1.095 -30.57 +ECEXIU Ni 0 3 28 2 8 False 5 Square pyramidal 14 1.103 -19.08 +ECOPAO Fe 0 6 26 3 5 False 5 Square pyramidal 14 0.986 -33.67 +ECOXAW Cr 0 5 24 2 4 False 4 Square planar 7 0.963 -61.61 +EDAMEE Co 0 1 27 3 6 True 4 Tetrahedral 8 1.029 84.99 +EDECEX Fe 0 4 26 3 5 False 5 Trigonal bipyramidal 13 0.955 -1.69 +EDEZEU Fe 0 5 26 2 6 True 2 Linear 0 1.135 -41.98 +EDIDAX Co 2 4 27 2 7 False 6 Octahedral 18 1.123 -11.28 +EDIDED Fe 0 5 26 2 6 False 4 Tetrahedral 8 0.998 -46.39 +EDIGON Fe 0 1 26 2 6 True 2 Linear 0 1.057 52.53 +EDIJIL Ni 0 1 28 2 8 False 4 Square planar 7 0.955 57.68 +EDISOA Fe 0 5 26 2 6 False 5 Square pyramidal 14 1.095 -43.73 +EDIXIY Co 0 2 27 2 7 True 3 Trigonal planar 3 1.044 15.19 +EDOZAA Ni 0 1 28 2 8 False 4 Square planar 7 0.91 39.93 +EDUPOL Ni 0 1 28 2 8 False 4 Square planar 7 0.945 77.07 +EGAMUX Fe 0 1 26 2 6 False 4 Tetrahedral 8 0.802 46.81 +EGEMOS Fe 0 2 26 3 5 False 6 Octahedral 18 0.949 43.97 +EGEYIA Cr 0 4 24 3 3 False 6 Octahedral 18 0.945 -41.29 +EGUVOR Fe 0 5 26 2 6 False 6 Octahedral 18 1.114 -37.76 +EGUZUB Fe 2 1 26 2 6 False 6 Octahedral 18 0.911 56.59 +EHEXOE Fe -2 6 26 3 5 False 6 Octahedral 18 1.03 -25.2 +EHIJEM Co 1 4 27 2 7 False 5 Trigonal bipyramidal 13 1.108 -27.87 +EHIWIC Mn -2 6 25 2 5 False 6 Octahedral 18 1.099 -56.48 +EJEVEV Mn 1 5 25 3 4 False 6 Octahedral 18 1.017 -40.98 +EJOJOC Fe 0 5 26 2 6 False 5 Square pyramidal 14 1.08 -30.94 +EJUSEK Ni 1 3 28 2 8 False 6 Octahedral 18 1.138 -44.21 +EKOKEV Co 0 1 27 3 6 False 6 Octahedral 18 0.988 90.21 +EKOXOR Cr 0 1 24 0 5 False 6 Octahedral 18 0.853 137.14 +ELAKOR Ni 0 1 28 2 8 False 5 Square pyramidal 14 1.018 43.37 +ELUJUQ Fe 0 6 26 3 5 False 6 Octahedral 18 1.061 -11.41 +ELUSUB Ni 0 3 28 2 8 False 6 Octahedral 18 1.174 -21.22 +ELUTAI Ni 0 3 28 2 8 False 4 Seesaw 9 1.037 -19.64 +ELUXIU Co 2 2 27 2 7 False 5 Square pyramidal 14 1.021 24.68 +EMEDEH Co 0 4 27 2 7 False 4 Tetrahedral 8 1.024 -24.64 +ENDACR Cr 3 4 24 3 3 False 6 Octahedral 18 0.982 -51.08 +ENTXCO Co 1 1 27 3 6 False 6 Octahedral 18 0.987 59.44 +ENUREM Ni 0 3 28 2 8 False 5 Trigonal bipyramidal 13 1.074 -16.48 +ENUSAJ Ni 0 1 28 2 8 False 5 Trigonal bipyramidal 13 1.013 38.69 +ENUSEN Ni 0 1 28 2 8 False 5 Square pyramidal 14 1.052 38.82 +EPUTOB Ni 0 3 28 2 8 False 7 Pentagonal bipyramidal 23 1.202 -36.68 +EQACEF Fe -2 6 26 3 5 False 5 Square pyramidal 14 0.983 -40.42 +EQEFAI Mn 0 6 25 2 5 False 6 Octahedral 18 1.103 -52.09 +EQEQAV Co 0 2 27 2 7 False 4 Square planar 7 0.96 25.14 +EQIVIJ Cr 0 5 24 2 4 False 4 Square planar 7 0.965 -64.85 +EQIVOP Cr 0 5 24 2 4 False 4 Square planar 7 0.98 -67.26 +EQOQIK Mn 0 1 25 1 6 True 5 Trigonal bipyramidal 13 0.907 134.65 +ERIMEZ02 Fe -1 2 26 3 5 False 6 Octahedral 18 0.976 39.62 +ERIPEB Mn 2 6 25 2 5 False 5 Trigonal bipyramidal 13 1.095 -59.85 +ERIQIG Ni -2 1 28 2 8 False 4 Square planar 7 0.91 18.22 +ERUXIZ Co 2 4 27 2 7 False 6 Trigonal prismatic 19 1.176 -27.21 +ESIJEY Co 2 1 27 3 6 True 4 Tetrahedral 8 1.008 95.45 +ESUYUM Ni 3 2 28 3 7 False 6 Octahedral 18 1.108 10.32 +ETAKIT Ni -2 3 28 2 8 False 4 Tetrahedral 8 0.977 -43.63 +ETOHIF Fe 0 5 26 2 6 False 6 Octahedral 18 1.116 -19.72 +EVACOT Ni 0 1 28 2 8 False 4 Square planar 7 0.932 30.58 +EVILOM Fe 0 6 26 3 5 False 5 Square pyramidal 14 0.977 -30.01 +EVOJEE Mn 2 6 25 2 5 False 6 Trigonal prismatic 19 1.135 -49.64 +EWABUA Fe 0 1 26 2 6 False 6 Octahedral 18 0.92 70.58 +EWANAR Co -2 2 27 2 7 False 4 Square planar 7 0.896 20.56 +EWOBEX Fe 0 4 26 3 5 False 5 Square pyramidal 14 0.972 7.85 +EWOBUP02 Ni 1 3 28 2 8 False 5 Trigonal bipyramidal 13 1.061 -15.31 +EWUSEW Ni 1 1 28 2 8 True 2 Linear 0 1.076 45.77 +EXOCEA Ni 0 1 28 2 8 False 4 Square planar 7 0.915 40.6 +EXOVIX Cr 0 4 24 3 3 False 6 Octahedral 18 0.958 -41.23 +EXUKEP Ni -2 1 28 2 8 False 4 Square planar 7 0.942 18.64 +EYAQEA Co 3 1 27 3 6 False 6 Octahedral 18 0.99 75.68 +EYAYIN Cr -1 4 24 3 3 False 6 Octahedral 18 0.94 -20.22 +EYEYEM Ni 0 1 28 2 8 False 4 Square planar 7 0.901 44.02 +EYIRUA Fe 0 5 26 2 6 False 6 Octahedral 18 1.108 -28.58 +EYITAJ Fe 0 5 26 2 6 False 3 Trigonal planar 3 0.966 -57.55 +EYOZEY Co 0 4 27 2 7 False 6 Trigonal prismatic 19 1.138 -20.65 +EZOYIC Mn -2 6 25 2 5 False 4 Tetrahedral 8 1.017 -60.22 +FAGKEE Ni 0 3 28 2 8 False 6 Octahedral 18 1.151 -35.31 +FAHFUQ Mn 1 6 25 2 5 False 6 Trigonal prismatic 19 1.113 -51.67 +FAJHUX Co 0 1 27 3 6 True 3 Trigonal planar 3 1.029 75.47 +FAJMAF Co -2 4 27 2 7 False 4 Tetrahedral 8 1.018 -41.99 +FALPOA Mn 1 6 25 2 5 False 6 Octahedral 18 1.097 -49.29 +FANFAD Ni 0 3 28 2 8 False 6 Octahedral 18 1.124 -34.54 +FAPSAT Fe 0 1 26 0 6 True 5 Trigonal bipyramidal 13 0.903 83.82 +FARZIH Co 0 4 27 2 7 False 4 Tetrahedral 8 1.006 -22.93 +FASSEX Fe 0 1 26 0 6 False 5 Trigonal bipyramidal 13 0.797 146.81 +FAVZUY Ni 0 1 28 2 8 False 4 Square planar 7 0.915 42.05 +FAWQEZ Mn 0 1 25 1 6 False 6 Octahedral 18 0.853 103.84 +FAYHIZ Co 0 4 27 2 7 False 4 Tetrahedral 8 0.975 -20.86 +FAYHOF Co 0 4 27 2 7 False 4 Tetrahedral 8 0.984 -32.06 +FAYVAF Ni 0 1 28 2 8 False 4 Seesaw 9 0.911 18.55 +FAZPEE Ni 0 3 28 2 8 False 6 Octahedral 18 1.166 -30.74 +FAZTEG Mn 0 1 25 1 6 False 6 Octahedral 18 0.874 109.98 +FAZTIK Mn 0 1 25 1 6 False 6 Octahedral 18 0.875 109.09 +FEBRAF Ni 2 3 28 2 8 False 6 Octahedral 18 1.102 -33.72 +FEGVOE Fe 0 5 26 2 6 False 2 Linear 0 0.866 -38.33 +FEGVUJ Ni 1 1 28 2 8 False 4 Square planar 7 0.944 42.33 +FEHKUZ Mn 0 1 25 1 6 False 6 Octahedral 18 0.867 105.29 +FEHLIO Mn 0 1 25 1 6 False 6 Octahedral 18 0.872 105.6 +FEHNOV Co 0 2 27 2 7 False 4 Square planar 7 0.882 36.5 +FEKPUG Fe 1 1 26 2 6 False 6 Octahedral 18 0.895 100.8 +FENLEP Fe 1 1 26 2 6 True 4 Tetrahedral 8 0.992 91.98 +FERBEK Fe 0 1 26 2 6 False 6 Octahedral 18 0.923 71.3 +FERWEH Co 0 4 27 2 7 False 6 Octahedral 18 1.132 -13.3 +FESXOQ Mn 0 6 25 2 5 False 6 Octahedral 18 1.094 -48.88 +FEVFET Fe 0 5 26 2 6 False 4 Seesaw 9 1.054 -37.48 +FEVNAW Co 0 1 27 3 6 False 6 Octahedral 18 0.991 27.38 +FEWFUI Fe 1 2 26 3 5 True 2 Linear 0 1.041 63.24 +FEWGIX Cr 1 4 24 3 3 True 2 Linear 0 1.063 -48.74 +FEWMEA Cr 1 4 24 3 3 False 4 Tetrahedral 8 0.924 -26.15 +FEWRIK Fe 1 5 26 2 6 False 6 Octahedral 18 1.117 -24.74 +FEWVEL Co 0 1 27 1 8 False 5 Square pyramidal 14 0.944 33.01 +FEWYAK Co 1 3 27 1 8 False 3 Trigonal planar 3 0.99 -22.57 +FEWYIS Co 0 2 27 2 7 False 4 Square planar 7 0.94 46.23 +FEXROR Cr 0 4 24 3 3 False 6 Octahedral 18 0.968 -34.34 +FEXTUY Ni 0 3 28 2 8 False 6 Octahedral 18 1.113 -32.83 +FEYMIG Co 0 2 27 2 7 False 4 Square planar 7 0.903 40.95 +FEZTEM Mn 1 6 25 2 5 False 5 Square pyramidal 14 1.063 -39.55 +FEZXUD Cr 1 4 24 3 3 False 6 Octahedral 18 0.976 -43.5 +FIDZEY Co 0 4 27 2 7 False 6 Octahedral 18 1.173 -19.59 +FIFDUU Ni 0 3 28 2 8 False 4 Tetrahedral 8 0.99 -26.79 +FIGMEQ Co 1 3 27 1 8 True 2 Linear 0 1.199 -38.11 +FIHFIO Fe 0 6 26 3 5 False 5 Trigonal bipyramidal 13 0.983 -27.11 +FILSEY Fe 0 3 26 0 6 True 4 Tetrahedral 8 0.991 27.5 +FIMPIB Fe -1 1 26 2 6 False 4 Tetrahedral 8 0.787 59.64 +FIMPOH Fe 0 2 26 3 5 False 4 Tetrahedral 8 0.849 45.3 +FIPWEG Co 0 1 27 3 6 True 4 Tetrahedral 8 1.023 107.7 +FISGAS Ni 1 3 28 2 8 False 5 Square pyramidal 14 1.132 -25.71 +FIWLEE Ni 0 1 28 2 8 False 4 Square planar 7 0.968 39.46 +FIYMOP Co 1 1 27 1 8 False 5 Square pyramidal 14 0.873 59.95 +FIZQIP Mn 1 5 25 3 4 False 6 Octahedral 18 0.992 -41.55 +FOCSOF Mn 0 5 25 3 4 False 5 Trigonal bipyramidal 13 0.959 -59.39 +FOGQOI Ni 0 3 28 2 8 False 4 Tetrahedral 8 0.976 -33.74 +FOKYEJ Cr 0 1 24 0 5 False 6 Octahedral 18 0.858 141.28 +FOMPUU Co 0 4 27 2 7 False 4 Tetrahedral 8 0.99 -34.18 +FOMQAB Co 0 4 27 2 7 False 4 Tetrahedral 8 0.983 -19.13 +FONPUT Fe 0 1 26 0 6 False 5 Square pyramidal 14 0.822 135.11 +FOPJEB Ni 2 3 28 2 8 False 6 Octahedral 18 1.147 -46.23 +FOQBOC Fe -1 5 26 2 6 False 5 Square pyramidal 14 1.021 -17.93 +FOQNOP Fe 0 1 26 2 6 False 6 Octahedral 18 0.857 175.48 +FOSKEF Fe 1 5 26 2 6 False 4 Square planar 7 1.011 -37.62 +FOSVIS Cr 0 4 24 3 3 False 6 Octahedral 18 1.047 -40.41 +FOTSIR Ni 0 3 28 2 8 False 5 Square pyramidal 14 1.087 -16.67 +FOTZET Fe 0 1 26 0 6 True 4 Tetrahedral 8 1.03 94.19 +FOXCOM Co 0 4 27 2 7 False 6 Octahedral 18 1.137 -16.4 +FOXGAB Mn 0 6 25 2 5 False 5 Trigonal bipyramidal 13 1.065 -61.37 +FUMKIH Ni 0 3 28 2 8 False 6 Octahedral 18 1.117 -38.72 +FUNHUS Ni -1 3 28 2 8 False 4 Tetrahedral 8 1.016 -34.6 +FUQCUR Co 1 1 27 3 6 False 6 Octahedral 18 0.994 68.41 +FURPEO Fe -2 1 26 2 6 False 6 Octahedral 18 0.96 38.73 +FURROZ Fe 0 1 26 0 6 True 4 Tetrahedral 8 0.908 152.35 +FUWVOJ Mn 0 6 25 2 5 False 6 Octahedral 18 1.101 -45.24 +FUYTEA Ni 0 3 28 2 8 False 3 Trigonal planar 3 0.937 -7.85 +FUYYAB Co 0 1 27 3 6 True 4 Tetrahedral 8 1.038 66.32 +GADMEH Co -1 4 27 2 7 False 6 Octahedral 18 1.132 -11.56 +GADMOR Fe -1 5 26 2 6 False 6 Octahedral 18 1.116 -24.88 +GADTIS Fe 0 6 26 3 5 False 5 Trigonal bipyramidal 13 0.997 -28.96 +GAGVUG Cr 0 4 24 3 3 False 3 Trigonal planar 3 0.826 -30.91 +GAHJEG Fe 1 1 26 2 6 False 6 Octahedral 18 0.93 67.89 +GAMQEQ Fe 0 1 26 0 6 False 5 Trigonal bipyramidal 13 0.811 154.9 +GAMZAW Fe 0 3 26 2 6 False 4 Square planar 7 0.938 11.88 +GAMZEA Fe 0 3 26 2 6 False 4 Square planar 7 0.944 6.23 +GAMZIE Fe 0 5 26 2 6 False 4 Tetrahedral 8 1.042 -46.79 +GAMZOK Fe 0 5 26 2 6 False 4 Tetrahedral 8 1.019 -49.6 +GAPZEC Co 1 1 27 3 6 False 6 Octahedral 18 0.993 47.45 +GARQIB Mn 0 6 25 2 5 False 7 Capped trigonal prismatic 25 1.166 -50.82 +GAVNEX Fe 0 6 26 3 5 False 6 Octahedral 18 1.039 -19.96 +GAVXAC Fe 1 2 26 3 5 True 4 Tetrahedral 8 1.03 76.08 +GAWNAU Ni 0 1 28 2 8 False 4 Square planar 7 0.984 37.22 +GAXYOW Ni 0 3 28 2 8 False 3 T-shaped 6 0.973 -17.41 +GAXZEN Fe 0 5 26 2 6 False 3 Trigonal planar 3 0.989 -56.97 +GAYXEJ Mn -1 6 25 2 5 False 4 Tetrahedral 8 0.958 -79.65 +GAYZEL Fe 0 5 26 2 6 False 6 Octahedral 18 1.105 -19.55 +GAZHAQ Fe 1 1 26 2 6 True 4 Tetrahedral 8 0.993 70.44 +GEDFIE Fe 2 1 26 2 6 False 6 Octahedral 18 0.907 90.4 +GEDJEE Ni 0 3 28 2 8 False 6 Octahedral 18 1.134 -40.97 +GEFTIV Fe 0 5 26 2 6 False 4 Tetrahedral 8 0.991 -39.98 +GEFZEX Fe 1 1 26 2 6 False 6 Octahedral 18 0.917 50.02 +GEGBUQ Ni 0 3 28 2 8 False 5 Square pyramidal 14 1.069 -16.85 +GELBII Co 0 1 27 1 8 True 3 Trigonal planar 3 1.012 43.65 +GELRIY Mn 0 1 25 1 6 False 6 Octahedral 18 0.853 107.72 +GEMZON Mn 1 1 25 1 6 False 6 Octahedral 18 0.842 160.77 +GENBUW Mn 0 1 25 1 6 False 6 Octahedral 18 0.842 130.74 +GENQAS Ni 0 3 28 2 8 False 5 Square pyramidal 14 1.078 -7.04 +GENYOP Ni 0 1 28 2 8 False 4 Square planar 7 0.91 31.11 +GEPBEJ Mn 0 6 25 2 5 False 6 Octahedral 18 1.109 -44.6 +GEPPEX Fe 0 3 26 2 6 False 4 Square planar 7 0.869 7.26 +GEPVEF Fe 0 4 26 3 5 False 5 Trigonal bipyramidal 13 0.955 -12.72 +GEQZUY Cr 0 4 24 3 3 False 6 Octahedral 18 0.96 -42.13 +GESMUM Ni 1 1 28 2 8 True 3 Trigonal planar 3 1.031 43.81 +GESNAT Ni 0 1 28 2 8 True 3 Trigonal planar 3 1.004 42.12 +GEWNAX Co 3 1 27 3 6 False 6 Octahedral 18 0.971 66.13 +GEZGEA Ni 0 3 28 2 8 False 5 Trigonal bipyramidal 13 1.063 -21.89 +GEZGIE Ni 0 3 28 2 8 False 5 Square pyramidal 14 1.067 -22.13 +GIBGON Co 0 4 27 2 7 False 6 Octahedral 18 1.127 -17.86 +GICZIB Fe 1 2 26 3 5 False 6 Octahedral 18 0.943 64.67 +GIDKAH Cr 0 4 24 3 3 False 6 Octahedral 18 0.945 -41.25 +GIFFOS Ni -1 3 28 2 8 False 4 Tetrahedral 8 0.972 -35.75 +GIFJEM Cr 0 5 24 2 4 False 4 Square planar 7 0.965 -67.37 +GIGGUZ Co 0 4 27 2 7 False 4 Seesaw 9 1.036 -25.32 +GILZIK Ni 0 1 28 2 8 False 5 Square pyramidal 14 1.007 27.8 +GINSUS Ni 0 1 28 2 8 False 4 Square planar 7 0.894 57.92 +GISLUQ Fe 1 1 26 2 6 True 4 Tetrahedral 8 0.96 109.98 +GISVAF Co 0 4 27 2 7 False 4 Tetrahedral 8 1.003 -21.71 +GITHEY Fe 0 4 26 3 5 False 5 Square pyramidal 14 0.939 2.87 +GITYOY Ni 0 3 28 2 8 False 5 Square pyramidal 14 1.112 -24.86 +GIXYIV Co 0 1 27 3 6 False 6 Octahedral 18 0.95 117.27 +GIYGUT Ni 0 3 28 2 8 False 4 Seesaw 9 1.018 -22.24 +GOCDEH Fe 0 1 26 2 6 False 6 Octahedral 18 0.958 34.86 +GOFXIK Fe -2 5 26 2 6 False 4 Tetrahedral 8 0.967 -49.98 +GOHDEN Ni -1 2 28 3 7 False 5 Trigonal bipyramidal 13 0.961 27.7 +GOJFIU Fe 0 1 26 2 6 True 4 Tetrahedral 8 0.978 61.65 +GOJVAC Mn 0 1 25 1 6 False 6 Octahedral 18 0.844 124.4 +GOJZIP Fe -1 1 26 2 6 False 6 Octahedral 18 0.948 69.84 +GOKREF Mn 1 6 25 2 5 False 5 Square pyramidal 14 1.097 -62.05 +GONTIM Mn 0 1 25 1 6 False 6 Octahedral 18 0.853 108.73 +GOQYUG Ni 0 1 28 2 8 False 4 Square planar 7 0.942 24.07 +GOQZIX Mn 0 6 25 2 5 False 5 Trigonal bipyramidal 13 1.061 -50.64 +GORWIT Cr -1 4 24 3 3 False 6 Octahedral 18 0.988 -36.98 +GOVDOK Mn 0 6 25 2 5 False 4 Tetrahedral 8 0.997 -62.35 +GOXBAW Ni 0 3 28 2 8 False 6 Octahedral 18 1.137 -37.26 +GOXBOK Ni 0 1 28 2 8 False 4 Square planar 7 0.923 27.38 +GOXXEW Mn 0 6 25 2 5 False 6 Octahedral 18 1.086 -59.64 +GUCBAJ Fe 0 5 26 2 6 False 4 Seesaw 9 1.012 -39.17 +GUGCUI Co 0 4 27 2 7 False 7 Pentagonal bipyramidal 23 1.21 -21.3 +GUGYIS Fe -1 6 26 3 5 False 6 Octahedral 18 1.032 -22.85 +GULWUH Cr 0 4 24 3 3 False 6 Octahedral 18 0.931 -42.17 +GUQYOH Fe 0 6 26 3 5 False 5 Trigonal bipyramidal 13 1.002 -17.86 +GUSCOP Fe 1 1 26 2 6 True 4 Tetrahedral 8 0.983 58.42 +GUSJAI Ni 0 1 28 2 8 True 3 Trigonal planar 3 1.005 65.18 +GUTXEB Fe 1 1 26 2 6 False 6 Octahedral 18 0.935 73.05 +GUTXOL Fe 1 2 26 3 5 False 6 Octahedral 18 0.937 62.33 +GUTYAY Fe 0 1 26 2 6 False 6 Octahedral 18 0.924 50.56 +GUVZIH Co 0 1 27 3 6 False 6 Octahedral 18 0.96 33.85 +GUWWAW Co 0 4 27 2 7 False 5 Trigonal bipyramidal 13 1.144 -28.56 +GUZCUZ Co 0 3 27 3 6 False 5 Trigonal bipyramidal 13 1.052 4.0 +GUZTIH Co 0 4 27 2 7 False 5 Square pyramidal 14 1.098 -6.51 +HABRAG Ni 0 3 28 2 8 False 5 Trigonal bipyramidal 13 1.078 -28.46 +HAFQUB Fe 0 1 26 2 6 True 2 Linear 0 1.014 79.3 +HAFRAI Fe 1 2 26 3 5 True 2 Linear 0 1.048 85.03 +HAGHOO Cr 0 5 24 2 4 False 4 Square planar 7 1.029 -60.1 +HAHHII Ni 0 1 28 2 8 False 4 Square planar 7 0.945 23.5 +HAHXOE Mn 0 6 25 2 5 False 5 Trigonal bipyramidal 13 1.03 -63.04 +HAHYAR Mn 0 6 25 2 5 False 5 Trigonal bipyramidal 13 1.042 -53.18 +HAKPUF Cr 0 1 24 2 4 True 5 Square pyramidal 14 0.986 86.12 +HAKQEQ Cr 0 4 24 3 3 True 4 Tetrahedral 8 1.024 -39.12 +HALBEB Ni 0 3 28 2 8 False 5 Square pyramidal 14 1.087 -17.42 +HANJIP Co 2 1 27 3 6 False 6 Octahedral 18 0.979 63.95 +HARLER Fe 1 6 26 3 5 False 6 Octahedral 18 1.042 -9.87 +HASJEQ Fe 0 1 26 2 6 False 6 Octahedral 18 0.951 50.25 +HATNOG Mn 1 1 25 1 6 False 6 Octahedral 18 0.863 137.27 +HATNUM Mn 0 1 25 1 6 False 6 Octahedral 18 0.847 151.8 +HATPAU Mn 0 1 25 1 6 False 6 Octahedral 18 0.856 134.95 +HAVRII Fe -1 6 26 3 5 False 6 Octahedral 18 1.022 -19.66 +HAWNUQ Mn 1 1 25 1 6 False 6 Octahedral 18 0.87 122.36 +HAWSEF Cr 0 4 24 3 3 True 4 Tetrahedral 8 1.043 -29.27 +HAXCOA Fe -1 1 26 2 6 False 6 Octahedral 18 0.886 93.63 +HAXXOU Fe 0 6 26 3 5 False 6 Octahedral 18 1.062 -16.88 +HEBMOQ Fe 0 1 26 2 6 False 6 Octahedral 18 0.927 69.51 +HEBPUZ Fe 0 1 26 2 6 False 6 Octahedral 18 0.953 45.72 +HECVER Fe 0 5 26 2 6 False 4 Tetrahedral 8 1.034 -45.81 +HEFGEG Ni 0 3 28 2 8 False 5 Square pyramidal 14 1.087 -23.85 +HEHJOW Co -1 3 27 3 6 False 4 Square planar 7 0.89 22.31 +HEKXIG Co -2 4 27 2 7 False 4 Tetrahedral 8 0.967 -43.48 +HELJAJ Co 1 1 27 3 6 False 6 Octahedral 18 0.978 83.59 +HEQZEI Co 0 2 27 2 7 False 4 Square planar 7 1.013 9.45 +HERFIT Ni 0 1 28 2 8 True 3 Trigonal planar 3 1.06 13.92 +HERGUG Co 0 1 27 3 6 False 6 Octahedral 18 0.981 50.62 +HERHAN Co 1 1 27 3 6 False 6 Octahedral 18 0.983 51.36 +HERTII Ni 2 1 28 2 8 False 4 Square planar 7 0.933 42.53 +HERVOQ Ni 1 1 28 2 8 False 4 Square planar 7 0.908 31.21 +HESMIB Cr 1 4 24 3 3 False 6 Octahedral 18 0.877 -42.36 +HESNAX Co 0 1 27 1 8 False 4 Seesaw 9 0.9 37.69 +HETLEX Ni 0 1 28 2 8 True 3 Trigonal planar 3 1.047 26.89 +HEYKOL Ni 0 1 28 2 8 False 4 Square planar 7 0.906 48.78 +HEYMIH Fe 2 1 26 2 6 False 6 Octahedral 18 0.894 91.39 +HEYNII Fe 0 1 26 2 6 False 6 Octahedral 18 0.931 47.43 +HEYNOO Fe 0 1 26 2 6 False 6 Octahedral 18 0.932 45.23 +HEYPEG Fe 0 5 26 2 6 False 5 Trigonal bipyramidal 13 1.049 -29.96 +HIDQUJ Fe 2 5 26 2 6 False 8 Dodecahedral 33 1.208 -62.82 +HIDXUP Co 0 4 27 2 7 False 4 Tetrahedral 8 1.033 -35.61 +HIFCAD Fe 1 1 26 2 6 False 6 Octahedral 18 0.902 89.23 +HIGVAV Ni 0 2 28 3 7 False 5 Square pyramidal 14 0.994 54.3 +HIHZII Fe 0 1 26 0 6 True 4 Tetrahedral 8 0.934 108.21 +HIKNAR Fe 0 1 26 2 6 True 4 Tetrahedral 8 0.956 100.16 +HIKNEV Fe 0 1 26 2 6 True 4 Tetrahedral 8 0.963 87.41 +HIKNIZ Fe 0 1 26 2 6 True 4 Tetrahedral 8 0.958 69.31 +HIMKOE Ni 1 3 28 2 8 False 5 Square pyramidal 14 1.082 -21.53 +HIMLIZ Mn 0 5 25 3 4 False 6 Octahedral 18 0.987 -44.58 +HIMYAD Ni 0 3 28 2 8 False 5 Square pyramidal 14 1.077 -23.2 +HINTUU Cr 0 1 24 0 5 False 6 Octahedral 18 0.899 113.21 +HINVUY Ni 1 1 28 2 8 False 5 Trigonal bipyramidal 13 0.937 36.27 +HIPCIS Ni 0 1 28 2 8 False 4 Square planar 7 0.935 53.24 +HIPKUO Mn 0 6 25 2 5 False 4 Tetrahedral 8 1.009 -63.48 +HIPLAU Fe 0 5 26 2 6 False 4 Tetrahedral 8 1.037 -52.13 +HIPLEY Co 0 4 27 2 7 False 4 Tetrahedral 8 1.052 -29.27 +HIPLIC Fe 0 5 26 2 6 False 4 Tetrahedral 8 1.073 -44.27 +HIPLOI Co 0 4 27 2 7 False 4 Tetrahedral 8 1.09 -21.31 +HIQLUR Ni 0 1 28 2 8 False 4 Square planar 7 0.952 22.98 +HITHOI Fe 0 6 26 3 5 False 5 Trigonal bipyramidal 13 0.995 -30.2 +HIVDAS Ni 2 3 28 2 8 False 6 Octahedral 18 1.135 -36.69 +HIXZUJ Mn 2 6 25 2 5 False 7 Capped trigonal prismatic 25 1.179 -45.54 +HIYRUE Fe -2 2 26 3 5 False 6 Octahedral 18 0.929 88.12 +HIZDID Mn 0 6 25 2 5 False 4 Tetrahedral 8 1.012 -58.82 +HIZTUF Ni 0 1 28 2 8 True 3 Trigonal planar 3 1.053 26.08 +HMSIAF13 Fe 0 6 26 3 5 False 3 Trigonal planar 3 0.907 -24.98 +HOCREX Mn 1 5 25 3 4 False 6 Octahedral 18 0.998 -40.53 +HOGFIV Fe 0 5 26 2 6 False 7 Capped trigonal prismatic 25 1.187 -53.82 +HOGHEQ Fe 0 2 26 3 5 False 5 Square pyramidal 14 0.924 56.57 +HOHBUB Cr 0 4 24 3 3 True 3 Trigonal planar 3 1.056 -19.85 +HOHCAI Cr 0 4 24 3 3 True 4 Tetrahedral 8 1.104 -34.33 +HOKXAG Ni 2 3 28 2 8 False 6 Octahedral 18 1.138 -41.89 +HOMKUP Co 0 4 27 2 7 False 4 Tetrahedral 8 0.99 -18.82 +HONGAV Fe 0 5 26 2 6 False 4 Tetrahedral 8 0.977 -41.28 +HONZIT Cr 0 4 24 3 3 False 5 Trigonal bipyramidal 13 0.996 -29.02 +HONZOZ Cr 0 4 24 3 3 False 5 Square pyramidal 14 0.978 -33.68 +HONZUF Cr 0 4 24 3 3 False 5 Square pyramidal 14 1.006 -24.93 +HOPCEU Ni 2 1 28 2 8 False 4 Square planar 7 0.939 22.95 +HOPYIW Ni 0 1 28 2 8 False 4 Square planar 7 0.938 27.71 +HOSRUD Fe 0 5 26 2 6 False 6 Octahedral 18 1.115 -13.25 +HOTRIS Ni 0 1 28 2 8 False 4 Square planar 7 0.912 17.24 +HOTVIW Cr -1 4 24 3 3 False 6 Octahedral 18 0.947 -43.77 +HOTXIX Ni 0 1 28 2 8 False 4 Square planar 7 0.922 27.63 +HOYFUW Ni -1 1 28 2 8 False 4 Square planar 7 0.91 17.81 +HOYHOS Fe 0 5 26 2 6 False 4 Tetrahedral 8 0.985 -45.06 +HUBLEW Ni -1 1 28 2 8 False 4 Square planar 7 0.928 22.79 +HUBLUM Ni -1 1 28 2 8 False 4 Square planar 7 0.916 27.06 +HUBMUN Ni -1 1 28 2 8 False 4 Square planar 7 0.938 38.73 +HUDGOC Mn 2 6 25 2 5 False 8 Dodecahedral 33 1.286 -56.78 +HUKJAA Co 0 4 27 2 7 False 5 Trigonal bipyramidal 13 1.109 -14.95 +HULQAI Fe -2 6 26 3 5 False 6 Octahedral 18 1.025 -18.96 +HUMBEX Fe 4 5 26 2 6 False 6 Trigonal prismatic 19 1.127 -11.15 +HUMZEW Mn 0 6 25 2 5 False 5 Trigonal bipyramidal 13 1.088 -64.44 +HUPLIQ Ni 1 3 28 2 8 False 5 Trigonal bipyramidal 13 1.105 -30.14 +HUQFAA Fe 2 1 26 2 6 False 6 Octahedral 18 0.949 69.98 +HURSAR Co 0 4 27 2 7 False 4 Tetrahedral 8 1.013 -26.96 +HUSXUP Cr -2 5 24 2 4 False 4 Square planar 7 0.944 -45.08 +HUTCOR Mn 0 6 25 2 5 False 4 Tetrahedral 8 1.012 -64.53 +HUWTIF Ni 2 1 28 2 8 False 5 Square pyramidal 14 0.957 44.33 +HUXWAZ Fe 0 2 26 3 5 True 4 Tetrahedral 8 1.002 42.18 +HUXWED Fe 0 2 26 3 5 True 4 Tetrahedral 8 1.001 46.06 +HUYDUB Fe 1 1 26 2 6 False 6 Octahedral 18 0.94 52.29 +HZHCXC Co 0 4 27 2 7 False 6 Octahedral 18 1.153 -8.22 +IBEGIH Fe 0 6 26 3 5 False 5 Trigonal bipyramidal 13 0.999 -31.31 +IBUQOL Co 2 1 27 3 6 False 6 Octahedral 18 0.99 59.49 +ICASOV Cr 0 4 24 3 3 False 5 Square pyramidal 14 0.892 -27.15 +ICATIS Mn 0 6 25 2 5 False 5 Trigonal bipyramidal 13 1.105 -63.19 +IDIKUD Mn 0 6 25 2 5 False 6 Octahedral 18 1.101 -49.83 +IDUBEO Fe -1 1 26 2 6 False 6 Octahedral 18 0.889 108.13 +IDUBOY Fe -1 1 26 2 6 False 6 Octahedral 18 0.886 102.11 +IFEYOK Fe 2 1 26 2 6 False 6 Octahedral 18 0.922 51.41 +IFIXON Co 0 4 27 2 7 False 5 Square pyramidal 14 1.102 -12.63 +IFODIR Fe 0 1 26 2 6 False 6 Octahedral 18 0.908 78.31 +IFOPAU Mn -1 6 25 2 5 False 6 Octahedral 18 1.087 -45.11 +IFUFIY Mn -1 6 25 2 5 True 3 Trigonal planar 3 1.171 -54.54 +IGIMIU Co 0 1 27 3 6 True 4 Tetrahedral 8 1.05 94.57 +IGUQUY Mn 1 6 25 2 5 False 6 Octahedral 18 1.114 -37.64 +IGUREJ Co 1 4 27 2 7 False 6 Octahedral 18 1.165 -9.73 +IHABID Mn 0 1 25 1 6 False 6 Octahedral 18 0.869 104.99 +IHALUZ Mn 0 6 25 2 5 False 6 Octahedral 18 1.117 -33.91 +IHETOG Cr 0 4 24 3 3 False 6 Octahedral 18 0.953 -36.15 +IHEVUM Cr 0 5 24 2 4 False 4 Square planar 7 0.983 -64.37 +IHIGEN Mn 0 1 25 1 6 False 6 Octahedral 18 0.874 109.22 +IHUDUL Ni 0 1 28 2 8 False 4 Square planar 7 0.948 53.87 +IJEZIJ Fe 1 1 26 2 6 False 6 Octahedral 18 0.925 73.41 +IJIGUD Mn 0 6 25 2 5 False 4 Tetrahedral 8 1.124 -60.74 +IJOPED Co 0 4 27 2 7 False 4 Tetrahedral 8 1.055 -31.74 +IJOREG Ni 0 3 28 2 8 False 6 Octahedral 18 1.14 -34.15 +IJUDAV Ni 0 1 28 2 8 False 3 Trigonal planar 3 0.881 5.53 +IKERUO Co 0 4 27 2 7 False 5 Trigonal bipyramidal 13 1.123 -35.23 +IKIVOO Mn 0 6 25 2 5 True 2 Linear 0 1.208 -26.27 +IKURAI Ni 0 1 28 0 8 True 3 Trigonal planar 3 1.106 42.61 +ILASOE Fe 1 1 26 2 6 False 6 Octahedral 18 0.898 84.18 +ILATEV Ni 0 3 28 2 8 False 6 Octahedral 18 1.108 -39.75 +ILIJUK Co 0 4 27 2 7 False 4 Tetrahedral 8 0.993 -20.17 +ILODOD Ni 1 3 28 2 8 False 5 Square pyramidal 14 1.13 -19.38 +ILOLOM Fe 0 5 26 2 6 False 4 Seesaw 9 1.023 -52.09 +ILONUV Fe -2 6 26 3 5 False 5 Square pyramidal 14 0.985 -31.22 +ILURIR Fe -3 1 26 2 6 False 6 Octahedral 18 0.922 89.69 +IMACEG Fe 0 5 26 2 6 False 5 Trigonal bipyramidal 13 1.064 -33.75 +IMETNI01 Ni 1 3 28 2 8 False 5 Trigonal bipyramidal 13 1.11 -13.07 +IMUCAX Fe 1 1 26 2 6 True 2 Linear 0 1.007 67.73 +IMUDOK Co 0 4 27 2 7 False 5 Square pyramidal 14 1.101 -7.12 +INAZED Cr 0 4 24 3 3 True 4 Tetrahedral 8 1.045 -19.3 +INEDEM Fe 0 5 26 2 6 False 3 Trigonal planar 3 0.911 -56.72 +INIFOB Cr 0 4 24 3 3 False 4 Tetrahedral 8 0.873 -17.19 +INIHAP Cr 0 5 24 2 4 False 3 Trigonal planar 3 0.891 -52.76 +INILOI Ni 0 3 28 2 8 False 6 Octahedral 18 1.104 -28.56 +INUVUJ Fe 0 5 26 2 6 False 4 Tetrahedral 8 1.023 -42.75 +INUVUL Fe 1 2 26 3 5 True 4 Tetrahedral 8 0.99 64.09 +INUXEV Fe 0 5 26 2 6 False 4 Tetrahedral 8 1.016 -38.77 +IPEPNI Ni 0 1 28 2 8 False 4 Square planar 7 0.918 22.13 +IPIBUE Mn 0 6 25 2 5 False 6 Octahedral 18 1.111 -45.98 +IPIYEM Ni 0 1 28 0 8 True 4 Tetrahedral 8 1.056 41.41 +IPOFUR Co 0 2 27 2 7 False 4 Square planar 7 0.941 46.25 +IPOROX Mn 0 1 25 1 6 False 6 Octahedral 18 0.874 105.99 +IREWEK Ni 2 3 28 2 8 False 6 Octahedral 18 1.065 -32.67 +IROJEF Fe 0 5 26 2 6 False 4 Tetrahedral 8 0.968 -58.02 +IRONOS Mn 1 6 25 2 5 False 6 Octahedral 18 1.108 -47.75 +ISALNI Ni 0 3 28 2 8 False 4 Tetrahedral 8 1.006 -25.98 +ISIBIW Fe 0 5 26 2 6 False 4 Tetrahedral 8 0.973 -41.25 +ISIKEA Fe -1 6 26 3 5 False 4 Tetrahedral 8 0.905 -51.29 +ISIPUV Ni 0 1 28 2 8 False 4 Square planar 7 0.903 34.58 +ISIYAK Fe 0 1 26 0 6 False 5 Trigonal bipyramidal 13 0.817 132.99 +ISOWOC Fe 0 1 26 2 6 True 5 Trigonal bipyramidal 13 0.937 144.11 +ITARIF Fe 0 1 26 2 6 False 6 Octahedral 18 0.945 48.93 +ITERAB Fe 0 5 26 2 6 False 6 Octahedral 18 1.107 -24.0 +ITEREF Mn 0 5 25 3 4 False 6 Octahedral 18 0.996 -50.29 +ITERIJ Mn 0 6 25 2 5 False 6 Octahedral 18 1.104 -46.22 +ITEXAH Ni 1 1 28 2 8 False 5 Trigonal bipyramidal 13 0.96 36.96 +ITEXIO Fe -1 5 26 2 6 False 4 Tetrahedral 8 0.989 -54.27 +ITEXOU Fe -1 1 26 2 6 False 6 Octahedral 18 0.898 78.24 +ITITOU Ni 0 1 28 2 8 False 4 Square planar 7 0.921 29.76 +ITOQIS Ni 0 3 28 2 8 False 6 Octahedral 18 1.202 -13.21 +IVEQEF Fe 0 5 26 2 6 False 6 Octahedral 18 1.108 -26.89 +IVILUV Ni 0 1 28 2 8 True 3 Trigonal planar 3 1.007 48.45 +IVOSAO Fe 2 6 26 3 5 False 7 Capped trigonal prismatic 25 1.13 -12.05 +IVOSES Fe 2 6 26 3 5 False 7 Pentagonal bipyramidal 23 1.129 -12.33 +IVUQOH Co 0 4 27 2 7 False 6 Octahedral 18 1.16 -22.25 +IVUTEY Ni 0 3 28 2 8 False 5 Trigonal bipyramidal 13 1.098 -22.35 +IWORIX Cr 2 5 24 2 4 False 6 Octahedral 18 1.028 -32.97 +IWOWEX Mn 0 6 25 2 5 False 6 Octahedral 18 1.101 -54.79 +IXAQII Fe 0 5 26 2 6 False 5 Square pyramidal 14 1.072 -42.45 +IXARAB Fe 0 5 26 2 6 False 5 Square pyramidal 14 1.067 -48.28 +IXAROP Fe 0 5 26 2 6 False 4 Seesaw 9 1.017 -50.04 +IXASAC Fe 0 5 26 2 6 False 4 Tetrahedral 8 1.021 -62.11 +IXEPAE Mn 0 6 25 2 5 False 6 Octahedral 18 1.109 -48.52 +IXEPIM Co 0 4 27 2 7 False 6 Octahedral 18 1.117 -12.2 +IXEQAF Co 0 4 27 2 7 False 6 Octahedral 18 1.14 -9.6 +JACCUP Fe 0 1 26 2 6 False 6 Octahedral 18 0.905 85.92 +JADGOK Ni 1 2 28 3 7 False 6 Octahedral 18 1.082 37.21 +JADKII Ni 0 1 28 2 8 False 4 Square planar 7 0.952 44.99 +JAFVOB Mn -1 5 25 3 4 False 6 Octahedral 18 0.981 -59.43 +JAGGED Cr 0 1 24 0 5 False 6 Octahedral 18 0.849 125.14 +JAHBID Mn 0 6 25 2 5 False 6 Octahedral 18 1.133 -37.34 +JAPLUI Cr 0 5 24 2 4 False 5 Square pyramidal 14 0.976 -41.3 +JAPRUN Co 0 4 27 2 7 False 4 Tetrahedral 8 0.989 -24.52 +JAPTAV Ni 0 3 28 2 8 False 4 Tetrahedral 8 0.972 -30.05 +JARKIX Ni 0 3 28 2 8 False 2 Linear 0 0.906 -18.6 +JASBOV Fe 0 5 26 2 6 False 5 Square pyramidal 14 1.049 -29.24 +JASCEL Cr -3 4 24 3 3 False 6 Octahedral 18 0.978 -22.22 +JASLEU Co 1 2 27 2 7 False 5 Square pyramidal 14 1.046 27.78 +JASRIF Fe 0 1 26 0 6 False 5 Trigonal bipyramidal 13 0.82 145.61 +JAVLOK Ni 0 3 28 2 8 False 5 Trigonal bipyramidal 13 1.048 -12.69 +JAWSUY Co 0 4 27 2 7 False 4 Tetrahedral 8 1.011 -27.95 +JAXFIX Ni 0 1 28 2 8 False 4 Square planar 7 0.954 44.03 +JAYNAB Co 0 1 27 3 6 False 6 Octahedral 18 0.937 113.91 +JAZCAO Fe 0 5 26 2 6 False 6 Octahedral 18 1.101 -17.08 +JECBEZ Co 0 1 27 3 6 True 4 Tetrahedral 8 1.048 66.32 +JEDJAE Mn -5 5 25 3 4 False 6 Octahedral 18 0.996 -56.1 +JEJTUN Mn 0 6 25 2 5 False 5 Square pyramidal 14 1.088 -69.09 +JELSIC Cr 1 1 24 2 4 True 5 Square pyramidal 14 0.968 132.29 +JEPNUO Co 0 4 27 2 7 False 5 Square pyramidal 14 1.086 -9.71 +JEPPOM Cr 0 4 24 3 3 False 6 Octahedral 18 1.02 -19.81 +JEQNOJ Cr 1 4 24 3 3 False 6 Octahedral 18 0.961 -39.78 +JEWNEF Ni 1 1 28 2 8 True 3 Trigonal planar 3 1.084 14.31 +JEXKED Mn 0 6 25 2 5 False 4 Seesaw 9 1.009 -47.96 +JEXKIH Fe 0 5 26 2 6 False 4 Seesaw 9 1.009 -37.24 +JIHPAR Fe -3 2 26 3 5 False 6 Octahedral 18 0.911 108.28 +JIKPAX Fe 1 6 26 3 5 False 6 Octahedral 18 1.049 -11.86 +JILVAB Cr 0 1 24 0 5 True 6 Octahedral 18 0.977 142.75 +JIPDUI Mn 0 6 25 2 5 False 6 Octahedral 18 1.101 -49.62 +JITWOZ Co 2 4 27 2 7 False 6 Octahedral 18 1.114 -11.26 +JITWUF Fe 2 1 26 2 6 False 6 Octahedral 18 0.973 27.88 +JIVFID Cr 0 3 24 2 4 True 3 Trigonal planar 3 1.032 22.57 +JIVQEL Ni 0 1 28 2 8 False 4 Square planar 7 0.904 20.63 +JIWFUQ Fe 0 6 26 3 5 False 5 Trigonal bipyramidal 13 0.986 -21.94 +JIWMIL Fe 0 6 26 3 5 False 5 Trigonal bipyramidal 13 0.98 -23.94 +JIWRIQ Cr -1 4 24 3 3 False 4 Seesaw 9 0.997 -32.45 +JIWWUI Co 0 2 27 2 7 True 3 Trigonal planar 3 1.043 30.09 +JIXLAD Mn 0 6 25 2 5 False 4 Tetrahedral 8 1.003 -49.97 +JIXLEH Fe 0 5 26 2 6 False 4 Seesaw 9 1.021 -57.94 +JIYYIA Ni 0 3 28 2 8 False 4 Tetrahedral 8 1.006 -29.4 +JIZNEM Ni 0 1 28 2 8 False 4 Square planar 7 0.923 58.82 +JIZQUG Mn 0 6 25 2 5 False 4 Tetrahedral 8 1.052 -64.51 +JOBBAF Cr 0 5 24 2 4 False 4 Square planar 7 1.05 -66.25 +JOBJUI Mn 0 6 25 2 5 False 4 Tetrahedral 8 0.96 -76.11 +JODGIT Co 0 4 27 2 7 False 6 Octahedral 18 1.128 -10.98 +JODGOZ Ni 0 3 28 2 8 False 6 Octahedral 18 1.122 -44.29 +JODNEV Fe 0 1 26 0 6 True 4 Tetrahedral 8 0.931 111.74 +JODWII Cr 0 3 24 2 4 True 4 Tetrahedral 8 1.019 13.99 +JODWUU Cr 0 3 24 2 4 True 5 Trigonal bipyramidal 13 1.035 25.75 +JOJWAG Ni 0 1 28 0 8 True 3 Trigonal planar 3 1.008 60.25 +JOMNAA Cr 2 4 24 3 3 False 6 Octahedral 18 0.976 -44.39 +JONMEE Cr 0 1 24 0 5 False 6 Octahedral 18 0.845 145.41 +JORKAC Fe 1 1 26 2 6 True 2 Linear 0 1.02 73.11 +JOTNIS Mn 0 6 25 2 5 False 5 Trigonal bipyramidal 13 1.054 -58.39 +JOWGEH Fe 2 1 26 2 6 False 6 Octahedral 18 0.941 61.46 +JOXCOQ Mn 0 6 25 2 5 False 6 Octahedral 18 1.115 -46.75 +JOXJAH Mn 2 6 25 2 5 False 8 Cube 31 1.24 -70.0 +JOYXAW Co 2 4 27 2 7 False 4 Tetrahedral 8 1.022 -37.75 +JUCJID Mn -2 6 25 2 5 False 4 Tetrahedral 8 0.947 -79.62 +JUDRAD Fe 0 6 26 3 5 False 6 Octahedral 18 1.018 -18.49 +JUGHAU Ni -2 1 28 2 8 False 4 Square planar 7 0.879 31.66 +JUHQIM Mn -1 1 25 1 6 False 5 Square pyramidal 14 0.791 118.34 +JUHTIP Co 0 2 27 2 7 False 4 Square planar 7 0.931 26.83 +JULFAX Fe 0 1 26 0 6 True 5 Square pyramidal 14 0.961 119.22 +JUNGEH Co 2 4 27 2 7 False 6 Octahedral 18 1.167 -8.62 +JUQDAA Fe -1 5 26 2 6 False 4 Tetrahedral 8 0.964 -51.09 +JURHIN Fe -1 6 26 3 5 False 4 Tetrahedral 8 0.92 -25.89 +JUVYOO Cr 0 5 24 2 4 False 6 Octahedral 18 1.096 -49.84 +JUWGUD Fe 0 5 26 2 6 False 4 Tetrahedral 8 0.967 -56.97 +JUWHAK Fe 0 6 26 3 5 False 4 Tetrahedral 8 0.883 -42.0 +KAFLUA Fe 0 6 26 3 5 False 5 Trigonal bipyramidal 13 0.994 -31.22 +KAGCIH Fe -1 4 26 3 5 False 5 Trigonal bipyramidal 13 0.93 6.54 +KAGHOS Co -1 3 27 1 8 False 2 Linear 0 0.943 -40.07 +KAGJOU Mn 0 6 25 2 5 False 2 Linear 0 0.869 -63.6 +KAGLUA Co -2 4 27 2 7 False 6 Octahedral 18 1.148 -16.64 +KAGRES Fe -1 4 26 3 5 False 5 Trigonal bipyramidal 13 0.929 10.12 +KAGXID Fe 0 1 26 2 6 False 6 Octahedral 18 0.905 75.08 +KAGXUP Fe 1 2 26 3 5 False 6 Octahedral 18 0.911 94.15 +KAHDOP Ni 0 3 28 2 8 False 6 Octahedral 18 1.121 -14.5 +KAJHUC Ni 0 1 28 2 8 False 4 Square planar 7 0.961 32.23 +KAJTOE Fe 0 6 26 3 5 False 5 Trigonal bipyramidal 13 0.976 -41.04 +KAKVUO Co 1 1 27 3 6 False 6 Octahedral 18 0.962 79.7 +KANYON Ni 1 1 28 2 8 False 4 Square planar 7 0.947 34.79 +KAPJAO Fe 3 6 26 3 5 False 6 Octahedral 18 1.008 -24.11 +KAPPEW Cr 0 5 24 2 4 False 4 Seesaw 9 1.076 -63.27 +KAWCIU Mn 0 5 25 3 4 False 5 Square pyramidal 14 0.913 -48.47 +KAWFET Fe 0 1 26 2 6 True 2 Linear 0 0.992 70.17 +KAWKIE Cr 2 5 24 2 4 False 6 Octahedral 18 1.101 -43.27 +KAXMEB Mn 0 5 25 3 4 False 3 Trigonal planar 3 0.848 -55.33 +KAXMIF Co 0 5 27 3 6 False 3 Trigonal planar 3 0.921 -17.99 +KAXXIR Ni 0 3 28 2 8 False 6 Octahedral 18 1.162 -30.68 +KAXYUE Fe 0 1 26 2 6 False 5 Square pyramidal 14 0.885 31.59 +KEBXOG Ni 0 3 28 2 8 False 3 T-shaped 6 0.966 -24.64 +KEFLUD Fe -3 6 26 3 5 False 6 Octahedral 18 1.041 -16.2 +KEFQES Mn 1 6 25 2 5 False 6 Octahedral 18 1.101 -46.12 +KEFQOC Mn 1 6 25 2 5 False 6 Octahedral 18 1.1 -49.99 +KEFYAV Cr 1 4 24 3 3 False 6 Octahedral 18 0.976 -51.97 +KEGRET Co 0 1 27 1 8 True 3 Trigonal planar 3 1.056 37.71 +KEHJAK Co 1 2 27 2 7 False 5 Square pyramidal 14 1.003 58.7 +KEHJOY Co 0 1 27 3 6 False 6 Octahedral 18 0.99 74.87 +KEHKOX Mn 0 1 25 1 6 True 4 Tetrahedral 8 0.962 83.63 +KEHREU Cr 0 1 24 0 5 True 5 Trigonal bipyramidal 13 0.951 142.93 +KEHREV Fe 2 5 26 2 6 False 7 Pentagonal bipyramidal 23 1.172 -46.6 +KEJTAV Mn -1 6 25 2 5 False 5 Square pyramidal 14 1.062 -59.83 +KELXUU Fe 0 5 26 2 6 False 4 Tetrahedral 8 0.97 -54.13 +KEQVAD Co 0 1 27 3 6 False 6 Octahedral 18 0.99 90.62 +KESFEV Mn 0 6 25 2 5 False 6 Octahedral 18 1.142 -63.69 +KETVEL Fe 1 6 26 3 5 False 6 Octahedral 18 1.036 -6.01 +KEVHIC Ni -1 2 28 3 7 False 6 Octahedral 18 1.017 32.08 +KEXWIT Ni 0 3 28 2 8 False 6 Octahedral 18 1.108 -12.7 +KEZRIR Ni 1 3 28 2 8 False 5 Square pyramidal 14 1.09 -25.0 +KIBBED Ni 1 1 28 2 8 False 4 Square planar 7 0.911 40.67 +KIDMEQ Ni 0 3 28 2 8 False 5 Square pyramidal 14 1.107 -34.95 +KIDRIY Co -1 1 27 3 6 False 6 Octahedral 18 0.955 83.97 +KIFMUK Co 0 4 27 2 7 False 6 Octahedral 18 1.137 -14.43 +KIJSUR Cr 0 1 24 0 5 False 6 Octahedral 18 0.861 136.67 +KIJXAC01 Ni 0 1 28 2 8 False 4 Square planar 7 0.942 20.71 +KIKBEM Ni 0 1 28 2 8 False 4 Square planar 7 0.99 7.25 +KIKNUQ Fe 0 5 26 2 6 False 5 Square pyramidal 14 1.063 -42.16 +KILBAJ Co 2 4 27 2 7 False 6 Octahedral 18 1.129 -12.51 +KIPLIH Cr 0 1 24 0 5 False 5 Square pyramidal 14 0.836 108.62 +KIQGOG Ni 0 1 28 2 8 False 4 Square planar 7 0.934 39.64 +KIQMAB Fe 0 5 26 2 6 False 4 Tetrahedral 8 1.022 -50.47 +KIRDOH Co 0 4 27 2 7 False 7 Pentagonal bipyramidal 23 1.207 -13.51 +KIRFAV Ni 0 3 28 2 8 False 7 Pentagonal bipyramidal 23 1.231 -34.87 +KIRKUR Cr 1 1 24 2 4 True 6 Octahedral 18 0.992 84.76 +KIRPAE Co 2 4 27 2 7 False 6 Trigonal prismatic 19 1.157 -19.22 +KISKED Ni 1 1 28 2 8 False 4 Square planar 7 0.952 35.02 +KISKIH Ni 0 3 28 2 8 False 6 Octahedral 18 1.13 -38.1 +KISKON Ni 1 1 28 2 8 False 4 Square planar 7 0.974 29.71 +KISMIJ Fe -2 5 26 2 6 False 4 Tetrahedral 8 0.979 -65.26 +KITYOE Fe 0 5 26 2 6 False 6 Octahedral 18 1.117 -22.68 +KIWQOY Cr 0 4 24 3 3 False 6 Octahedral 18 0.958 -40.32 +KIWZAT Cr 0 4 24 3 3 False 6 Octahedral 18 0.954 -34.57 +KIYWAR Mn 0 6 25 2 5 False 6 Trigonal prismatic 19 1.137 -69.97 +KOBREZ Ni 0 3 28 2 8 False 6 Octahedral 18 1.138 -33.11 +KOBTOL Ni 0 1 28 2 8 False 4 Square planar 7 0.96 53.86 +KOBYIK Ni 0 3 28 2 8 False 4 Tetrahedral 8 0.968 -22.12 +KOCNUM Ni 0 1 28 2 8 False 5 Trigonal bipyramidal 13 0.939 42.24 +KOCXEG Co 2 3 27 3 6 False 4 Square planar 7 0.921 25.3 +KOGFET Mn 0 1 25 1 6 False 6 Octahedral 18 0.837 133.77 +KOHMAW Ni 0 1 28 2 8 False 4 Square planar 7 0.918 49.18 +KOHMEA Ni 0 2 28 3 7 False 5 Square pyramidal 14 0.973 48.97 +KOLZAN Cr 0 4 24 3 3 False 6 Octahedral 18 0.967 -21.77 +KOQBAT Cr 0 1 24 0 5 False 6 Octahedral 18 0.86 153.5 +KOTBAW Ni 2 3 28 2 8 False 6 Octahedral 18 1.144 -26.29 +KOZYED01 Co 0 4 27 2 7 False 4 Tetrahedral 8 1.102 -30.11 +KOZZEE01 Mn 0 6 25 2 5 False 4 Tetrahedral 8 1.038 -71.63 +KUBGOD Fe 0 1 26 0 6 True 5 Trigonal bipyramidal 13 0.888 151.41 +KUBHIZ Ni 0 3 28 2 8 False 5 Square pyramidal 14 1.065 -26.64 +KUGNEG Mn 1 1 25 1 6 True 4 Tetrahedral 8 0.975 112.91 +KUGWIT Fe 0 5 26 2 6 False 3 T-shaped 6 0.942 -45.74 +KUGXIU Fe 0 5 26 2 6 False 4 Tetrahedral 8 0.998 -43.52 +KUGXOA Fe 0 5 26 2 6 False 4 Tetrahedral 8 0.981 -35.59 +KUGXUG Fe 0 5 26 2 6 False 4 Tetrahedral 8 0.995 -43.76 +KUHJED Ni 1 1 28 2 8 False 4 Square planar 7 0.896 61.63 +KULBUO Ni 0 3 28 2 8 False 4 Tetrahedral 8 0.993 -27.69 +KULMIQ Co 1 1 27 3 6 True 4 Tetrahedral 8 1.03 63.78 +KUSPUJ Cr 0 4 24 3 3 False 6 Octahedral 18 0.971 -22.32 +KUVWOQ Co 0 1 27 3 6 False 6 Octahedral 18 0.923 114.15 +KUWWAC Co 0 4 27 2 7 False 4 Tetrahedral 8 0.98 -25.35 +LADCIC Co 0 3 27 3 6 False 5 Square pyramidal 14 0.963 12.69 +LADCOI Co 0 3 27 3 6 False 5 Trigonal bipyramidal 13 0.954 6.01 +LADXIY Mn 0 6 25 2 5 True 4 Tetrahedral 8 1.217 -45.99 +LAJYUR Co 0 4 27 2 7 False 4 Tetrahedral 8 1.06 -27.1 +LALBUV Fe 0 1 26 2 6 False 6 Octahedral 18 0.915 78.21 +LALDEH Mn -3 6 25 2 5 False 5 Square pyramidal 14 1.054 -56.99 +LALPET Ni 0 1 28 2 8 False 5 Trigonal bipyramidal 13 0.955 29.28 +LAMLOC Ni -2 1 28 2 8 False 4 Square planar 7 0.919 23.11 +LAMXAA Ni 0 3 28 2 8 False 4 Tetrahedral 8 1.01 -26.8 +LAPNIZ Co 0 1 27 3 6 False 6 Octahedral 18 1.002 67.44 +LAPYAC Co 0 2 27 2 7 False 4 Square planar 7 0.917 46.95 +LAQJIX Ni 0 1 28 2 8 False 4 Square planar 7 0.95 42.79 +LASXIM Fe 0 1 26 0 6 False 5 Trigonal bipyramidal 13 0.814 132.14 +LAVKEA Co 1 4 27 2 7 False 5 Trigonal bipyramidal 13 1.088 -21.48 +LAXFAR Co 1 1 27 3 6 True 4 Tetrahedral 8 1.025 66.89 +LAXNON Fe 2 1 26 2 6 False 6 Octahedral 18 0.914 49.71 +LAXNUT Fe 2 1 26 2 6 False 6 Octahedral 18 0.914 53.52 +LAYMEF Co -2 2 27 2 7 False 4 Square planar 7 0.905 18.02 +LAYNEF Co 0 1 27 3 6 False 6 Octahedral 18 0.987 101.45 +LAYVOX Fe 1 5 26 2 6 False 5 Trigonal bipyramidal 13 1.09 -37.98 +LDHPCR10 Cr 0 4 24 3 3 False 6 Octahedral 18 0.965 -33.98 +LEDQUH Ni 0 3 28 2 8 False 5 Square pyramidal 14 1.079 -22.29 +LELDUE Co 1 4 27 2 7 False 5 Trigonal bipyramidal 13 1.084 -24.84 +LELLAQ Co 0 4 27 2 7 False 5 Square pyramidal 14 1.118 -11.82 +LEMRIF Cr 0 5 24 2 4 False 5 Square pyramidal 14 1.009 -51.75 +LEMVOQ Ni 0 1 28 2 8 False 4 Square planar 7 0.952 25.68 +LEPSEF Mn 1 6 25 2 5 False 6 Octahedral 18 1.096 -36.27 +LEPYOV Ni 0 1 28 2 8 False 4 Square planar 7 1.035 11.56 +LERZOX Mn 0 6 25 2 5 False 6 Trigonal prismatic 19 1.117 -40.92 +LEWNIN Co 0 4 27 2 7 False 4 Tetrahedral 8 1.077 -14.81 +LEXQAG Mn 0 6 25 2 5 False 6 Octahedral 18 1.143 -46.95 +LEYSEN Cr 1 4 24 3 3 False 6 Octahedral 18 0.964 -22.51 +LEZQUC Ni 2 1 28 2 8 False 4 Square planar 7 0.937 57.76 +LIFVOM Ni 0 3 28 2 8 False 5 Trigonal bipyramidal 13 1.085 -20.88 +LIGBUA Ni 0 1 28 2 8 False 4 Square planar 7 0.933 29.71 +LIJBUB Fe 0 2 26 3 5 False 6 Octahedral 18 0.968 66.22 +LILBOY Mn 0 6 25 2 5 False 6 Octahedral 18 1.104 -38.84 +LILLEZ Mn 0 5 25 3 4 False 5 Square pyramidal 14 0.927 -52.26 +LILYOW Fe 1 5 26 2 6 False 6 Trigonal prismatic 19 1.108 -29.84 +LILZAJ Mn 1 6 25 2 5 False 6 Octahedral 18 1.095 -35.62 +LINROQ Fe 1 1 26 2 6 False 6 Octahedral 18 0.967 50.55 +LINRUW Fe 1 5 26 2 6 False 6 Octahedral 18 1.129 -22.89 +LINSOR Ni 1 3 28 2 8 False 6 Octahedral 18 1.121 -41.45 +LISJEC Ni 0 1 28 2 8 False 5 Trigonal bipyramidal 13 0.972 40.45 +LIWSIT Mn 0 2 25 2 5 True 4 Tetrahedral 8 0.946 74.79 +LIXMOX Ni 0 3 28 2 8 False 5 Square pyramidal 14 1.075 -25.01 +LIXMUD Ni 0 3 28 2 8 False 5 Square pyramidal 14 1.073 -24.72 +LIYCUU Ni 2 3 28 2 8 False 7 Pentagonal bipyramidal 23 1.196 -39.3 +LIYMAH Ni 2 3 28 2 8 False 6 Octahedral 18 1.117 -40.83 +LODBEL Ni 0 3 28 2 8 False 5 Square pyramidal 14 1.06 -29.03 +LODFAL Ni 0 1 28 2 8 False 4 Square planar 7 0.972 51.2 +LODYOS Co 0 2 27 2 7 True 3 Trigonal planar 3 1.041 23.37 +LOGKEZ Ni 1 2 28 3 7 False 6 Octahedral 18 1.021 19.79 +LOJVEN Fe 0 5 26 2 6 False 6 Octahedral 18 1.095 -18.37 +LOLTOV Mn 0 6 25 2 5 False 4 Tetrahedral 8 0.986 -57.31 +LONGAW Ni 0 3 28 2 8 False 4 Tetrahedral 8 1.023 -34.76 +LONGEA Ni 0 3 28 2 8 False 4 Tetrahedral 8 1.028 -31.79 +LONRUC Cr 1 4 24 3 3 False 6 Octahedral 18 0.95 -22.54 +LOPXOD Ni 0 1 28 2 8 False 4 Square planar 7 0.942 39.75 +LOQLOS Fe 0 4 26 3 5 False 5 Trigonal bipyramidal 13 0.936 8.54 +LOSHOS Ni 0 3 28 2 8 False 6 Octahedral 18 1.13 -43.24 +LOVBUT Mn 1 1 25 1 6 False 6 Octahedral 18 0.847 129.73 +LOXSAS Co 0 4 27 2 7 False 4 Tetrahedral 8 0.995 -36.81 +LOXSIA Fe 0 2 26 3 5 False 6 Octahedral 18 0.952 23.98 +LOXWUQ Fe -1 6 26 3 5 False 6 Trigonal prismatic 19 1.044 -16.84 +LOYYUT Mn 0 6 25 2 5 False 6 Octahedral 18 1.108 -46.79 +LOZTEC Cr 0 4 24 3 3 True 4 Tetrahedral 8 1.023 -20.98 +LOZWIJ Cr 0 5 24 2 4 False 4 Square planar 7 0.988 -56.47 +LOZXOQ Cr 1 4 24 3 3 False 5 Square pyramidal 14 0.986 -40.36 +LUBPOQ Cr 0 4 24 3 3 False 4 Tetrahedral 8 0.934 -17.46 +LUCYOX Fe 0 1 26 2 6 True 2 Linear 0 1.011 59.64 +LUGDUM Cr 0 4 24 3 3 False 6 Octahedral 18 1.001 -21.72 +LUGPAE Fe 0 5 26 2 6 False 4 Tetrahedral 8 1.008 -39.99 +LUHHAA Cr 0 1 24 0 5 True 4 Tetrahedral 8 0.917 95.38 +LUHPIO Ni 1 1 28 2 8 False 4 Square planar 7 0.967 22.19 +LUJPAI Fe 1 2 26 3 5 False 6 Octahedral 18 0.981 32.89 +LUJREN Ni -1 1 28 2 8 False 4 Square planar 7 0.927 51.1 +LUJROX Ni 0 1 28 2 8 False 4 Square planar 7 0.927 68.41 +LULDOM Ni -3 3 28 2 8 False 5 Square pyramidal 14 1.056 -30.18 +LUMVEU Ni 2 3 28 2 8 False 6 Octahedral 18 1.132 -26.85 +LUNGOS Fe 0 5 26 2 6 False 4 Seesaw 9 0.986 -39.11 +LUTFAJ Fe 0 1 26 2 6 False 5 Square pyramidal 14 0.852 63.53 +LUVYAD Fe 0 1 26 2 6 True 2 Linear 0 0.993 70.3 +LUWCIP Co 0 4 27 2 7 False 6 Octahedral 18 1.175 -13.6 +LUWCUB Ni 0 3 28 2 8 False 6 Octahedral 18 1.16 -29.62 +LUWDAI Ni 0 3 28 2 8 False 6 Octahedral 18 1.161 -26.78 +LUYBEP Mn -1 6 25 2 5 False 3 fac-Trivacant octahedron 5 1.047 -74.85 +LUYMAU Ni 0 3 28 2 8 False 5 Square pyramidal 14 1.069 -23.08 +LUYXEJ Cr 0 5 24 2 4 False 4 Seesaw 9 0.973 -55.01 +LUYXUZ Fe 0 5 26 2 6 False 4 Seesaw 9 1.012 -35.9 +LUZXEL Ni 0 3 28 2 8 False 5 Square pyramidal 14 1.053 -25.38 +MABHAZ Mn 0 1 25 1 6 True 4 Tetrahedral 8 0.954 126.17 +MABLUA Co 1 1 27 3 6 False 6 Octahedral 18 0.966 81.05 +MACPUC Mn 0 1 25 1 6 True 4 Tetrahedral 8 0.942 118.29 +MACRCC Cr 2 4 24 3 3 False 6 Octahedral 18 0.986 -23.28 +MACZEW Cr 0 1 24 0 5 False 6 Octahedral 18 0.878 143.5 +MADLOV Fe 0 6 26 3 5 False 4 Tetrahedral 8 0.923 -36.63 +MAENCO Co 2 1 27 3 6 False 6 Octahedral 18 0.998 55.98 +MAFECL Fe -4 5 26 2 6 False 6 Octahedral 18 1.037 -27.76 +MAGGEK Ni 0 1 28 2 8 False 4 Square planar 7 0.92 27.88 +MAHNOZ Fe 0 6 26 3 5 False 5 Trigonal bipyramidal 13 0.971 -34.94 +MAJCAC Ni 0 3 28 2 8 False 4 Tetrahedral 8 0.948 -27.05 +MAJWUT Ni 0 1 28 2 8 False 5 Trigonal bipyramidal 13 1.024 36.86 +MAJYOM Fe -2 3 26 2 6 False 4 Square planar 7 0.89 -9.48 +MAJYUS Co -1 3 27 3 6 False 4 Square planar 7 0.877 27.54 +MAKBUW Fe -1 4 26 3 5 False 4 Square planar 7 0.901 13.55 +MAKPIX Co 1 1 27 3 6 False 6 Octahedral 18 0.983 50.2 +MAKPOD Co 1 1 27 3 6 False 6 Octahedral 18 0.971 53.72 +MALGAI Fe 0 1 26 0 6 False 5 Square pyramidal 14 0.814 141.06 +MALGIQ Fe 1 1 26 2 6 False 6 Octahedral 18 0.887 134.9 +MALNET Co 0 1 27 3 6 True 3 Trigonal planar 3 1.041 68.08 +MALVUQ Co 0 1 27 1 8 True 2 Linear 0 1.041 20.45 +MAMCOS Mn 1 6 25 2 5 False 6 Trigonal prismatic 19 1.114 -46.88 +MANHAM Fe -2 4 26 3 5 False 5 Square pyramidal 14 0.936 4.93 +MANHEQ Fe -2 4 26 3 5 False 5 Square pyramidal 14 0.92 7.69 +MARJIZ Fe 1 5 26 2 6 False 5 Square pyramidal 14 1.112 -39.89 +MASNUR Fe 0 5 26 2 6 False 4 Seesaw 9 1.001 -37.69 +MASPAZ Fe 0 5 26 2 6 False 4 Tetrahedral 8 1.005 -44.63 +MASPED Fe 0 5 26 2 6 False 4 Tetrahedral 8 1.039 -46.35 +MATFUL Fe 0 5 26 2 6 False 6 Trigonal prismatic 19 1.121 -41.46 +MAWLOL Fe 1 1 26 2 6 True 4 Tetrahedral 8 0.961 60.23 +MAXZOC Co 0 3 27 1 8 False 3 Trigonal planar 3 0.965 -21.73 +MAZOCT Ni 0 3 28 2 8 False 5 Trigonal bipyramidal 13 1.092 -32.15 +MCEACR Cr 1 4 24 3 3 False 6 Octahedral 18 0.977 -39.51 +MCENCR Cr 1 4 24 3 3 False 6 Octahedral 18 0.976 -22.33 +MCPTCO Co 0 4 27 2 7 False 4 Seesaw 9 1.042 -16.73 +MCYSCO Co 1 1 27 3 6 False 6 Octahedral 18 0.979 57.36 +MECPCO Co 0 1 27 3 6 True 4 Tetrahedral 8 1.059 43.55 +MEDCAA Ni 0 2 28 3 7 False 5 Trigonal bipyramidal 13 0.95 27.95 +MEDCEE Ni -1 1 28 2 8 False 5 Trigonal bipyramidal 13 0.962 16.96 +MEDCOO Ni -1 1 28 2 8 False 4 Square planar 7 0.91 26.71 +MEDCUU Ni 0 1 28 2 8 False 5 Square pyramidal 14 0.975 24.91 +MEHBAC Cr 0 1 24 0 5 False 6 Octahedral 18 0.905 103.27 +MEHKOA Ni -2 3 28 2 8 False 4 Tetrahedral 8 0.985 -43.42 +MEHNOC Ni 0 3 28 2 8 False 6 Octahedral 18 1.128 -41.07 +MEIMMN Mn 0 6 25 2 5 False 5 Trigonal bipyramidal 13 1.063 -61.51 +MEJYOS Fe -2 5 26 2 6 False 4 Tetrahedral 8 0.946 -71.08 +MEJZAF Fe 0 5 26 2 6 False 4 Tetrahedral 8 0.96 -55.81 +MENWUY Fe 0 5 26 2 6 False 6 Octahedral 18 1.122 -13.86 +MERECO Co 0 4 27 2 7 False 4 Seesaw 9 1.019 -12.19 +MESROU Fe -1 6 26 3 5 False 4 Tetrahedral 8 0.898 -57.38 +METGOH Co 0 4 27 2 7 False 4 Tetrahedral 8 1.021 -34.88 +METGUN Co 0 4 27 2 7 False 4 Tetrahedral 8 1.002 -32.6 +METYEQ Fe 0 5 26 2 6 False 6 Octahedral 18 1.12 -19.41 +MHPCOB01 Co 0 1 27 1 8 True 3 Trigonal planar 3 1.072 44.07 +MICHOV Co 0 1 27 3 6 False 6 Octahedral 18 0.966 80.99 +MIDJOY Fe 1 2 26 3 5 False 6 Octahedral 18 0.948 46.94 +MIJPAZ Ni 0 1 28 2 8 False 4 Square planar 7 0.946 58.74 +MIJSOP Fe 0 4 26 3 5 False 5 Square pyramidal 14 0.93 12.27 +MIJVAE Ni 0 3 28 2 8 False 5 Square pyramidal 14 1.079 -28.97 +MIKROO Co 0 1 27 3 6 False 6 Octahedral 18 0.964 62.68 +MIMGIY Co 0 1 27 1 8 True 2 Linear 0 1.024 51.44 +MINNAZ Ni 0 1 28 2 8 False 4 Square planar 7 0.944 35.48 +MINWIR Fe 0 5 26 2 6 False 5 Square pyramidal 14 1.054 -38.68 +MIPYOA Cr 0 1 24 2 4 True 4 Tetrahedral 8 1.02 103.87 +MIRVEP Cr 0 5 24 2 4 False 4 Square planar 7 1.004 -65.13 +MIVGIH Ni -2 3 28 2 8 False 4 Tetrahedral 8 0.961 -30.55 +MIVGUV Fe 0 6 26 3 5 False 4 Tetrahedral 8 0.926 -39.24 +MIZSEV Mn 0 6 25 2 5 False 4 Tetrahedral 8 0.967 -68.72 +MNMTBH Mn 0 5 25 3 4 False 6 Octahedral 18 0.979 -40.21 +MOBKET Fe 0 6 26 3 5 False 4 Tetrahedral 8 0.893 -41.87 +MOCMAT Fe -1 4 26 3 5 False 5 Square pyramidal 14 0.921 10.53 +MODREE Ni 0 3 28 2 8 False 5 Square pyramidal 14 1.084 -26.91 +MOFMAV Fe 0 5 26 2 6 False 4 Tetrahedral 8 0.981 -40.45 +MOHFUM Co 1 4 27 2 7 False 6 Octahedral 18 1.127 -11.69 +MOHWOW Co 0 1 27 1 8 True 3 Trigonal planar 3 1.006 25.85 +MOHWUC Co 0 1 27 1 8 True 3 Trigonal planar 3 1.025 36.66 +MOMCIB Cr 0 4 24 3 3 False 5 Trigonal bipyramidal 13 0.94 -12.99 +MOMXUJ Fe 0 6 26 3 5 False 5 Trigonal bipyramidal 13 0.982 -25.87 +MONTIU Fe 0 5 26 2 6 False 5 Trigonal bipyramidal 13 1.073 -43.85 +MONZEU Co 0 4 27 2 7 False 3 Trigonal planar 3 0.979 -11.75 +MOPSUF Mn 0 1 25 1 6 True 4 Tetrahedral 8 0.945 90.88 +MORDOM Ni 0 1 28 2 8 False 4 Square planar 7 0.99 32.9 +MOTCMN Mn 0 5 25 3 4 False 6 Octahedral 18 1.015 -43.71 +MOWVOK Fe 0 3 26 2 6 True 3 Trigonal planar 3 1.055 16.95 +MOZRIC Mn 0 5 25 3 4 False 5 Trigonal bipyramidal 13 0.924 -35.06 +MTACNI Ni 0 1 28 2 8 False 4 Square planar 7 0.932 24.19 +MTCBFE Fe 0 6 26 3 5 False 6 Octahedral 18 1.058 -14.78 +MTHUNI Ni 0 3 28 2 8 False 6 Octahedral 18 1.142 -35.99 +MUCBIV Mn 2 6 25 2 5 False 7 Capped trigonal prismatic 25 1.165 -52.67 +MUDMIJ Mn -2 6 25 2 5 False 4 Tetrahedral 8 0.958 -70.18 +MUFXIU Ni 0 3 28 2 8 False 4 Tetrahedral 8 1.003 -24.45 +MUGYEU Co 0 4 27 2 7 False 3 Trigonal planar 3 0.98 -18.77 +MUGYIY Co 0 4 27 2 7 False 3 Trigonal planar 3 0.994 -16.06 +MUJZUM Fe 0 6 26 3 5 False 7 Pentagonal bipyramidal 23 1.106 -32.66 +MUKGUU Ni -1 2 28 3 7 False 4 Square planar 7 0.896 31.07 +MUKJOS Ni -1 2 28 3 7 False 4 Square planar 7 0.982 71.88 +MULJIM Co 0 1 27 3 6 True 4 Tetrahedral 8 0.987 56.43 +MUMPAL Ni -1 3 28 2 8 False 5 Square pyramidal 14 1.085 -25.37 +MUNLIQ Cr 0 5 24 2 4 False 5 Square pyramidal 14 1.045 -56.62 +MUQPOF Fe -2 5 26 2 6 False 4 Tetrahedral 8 0.983 -38.02 +MUQQOE Cr 0 5 24 2 4 False 5 Square pyramidal 14 1.039 -64.69 +MUTVUU Ni 0 3 28 2 8 False 6 Octahedral 18 1.117 -52.7 +MUXVEJ Mn 0 6 25 2 5 False 5 Trigonal bipyramidal 13 1.082 -65.81 +NABDEZ Co 1 2 27 2 7 False 5 Trigonal bipyramidal 13 0.959 30.03 +NABDID Co 1 2 27 2 7 False 5 Square pyramidal 14 0.972 24.37 +NABFOL Co 1 2 27 2 7 False 5 Trigonal bipyramidal 13 0.949 33.91 +NADLIO Mn 0 6 25 2 5 False 4 Tetrahedral 8 1.015 -58.56 +NADLOU Mn 0 6 25 2 5 False 4 Tetrahedral 8 1.01 -58.73 +NAFDAB Co 0 4 27 2 7 False 5 Trigonal bipyramidal 13 1.147 -26.95 +NAFNEO Cr 0 3 24 2 4 False 6 Octahedral 18 0.958 0.41 +NAJKIS Fe 2 1 26 2 6 False 6 Octahedral 18 0.911 75.22 +NAKHEN Ni 0 1 28 2 8 True 2 Linear 0 1.044 53.65 +NAKWUS Mn 0 1 25 1 6 False 6 Octahedral 18 0.894 107.46 +NALPUL Fe 0 1 26 2 6 False 6 Octahedral 18 0.916 71.22 +NAMYOQ Ni 0 3 28 2 8 False 5 Square pyramidal 14 1.091 -20.19 +NANJEU Co 0 4 27 2 7 False 4 Tetrahedral 8 1.0 -20.6 +NANJUJ Fe -1 6 26 3 5 False 6 Octahedral 18 1.033 -24.82 +NAPYFE10 Fe 2 5 26 2 6 False 8 Dodecahedral 33 1.243 -51.26 +NAQQAY Mn 0 2 25 2 5 False 6 Octahedral 18 0.868 104.1 +NASJAT Fe 0 5 26 2 6 False 3 Trigonal planar 3 0.945 -50.52 +NASJEX Fe 0 5 26 2 6 False 4 Tetrahedral 8 1.006 -43.98 +NAVVIQ Fe -2 4 26 3 5 False 5 Square pyramidal 14 0.939 -1.43 +NAYMUY Mn 0 1 25 1 6 False 6 Octahedral 18 0.878 112.39 +NAZROW Fe 0 5 26 2 6 False 5 Trigonal bipyramidal 13 1.101 -32.32 +NAZRUC Fe 0 5 26 2 6 False 5 Trigonal bipyramidal 13 1.093 -30.16 +NCACON Co 2 1 27 3 6 False 6 Octahedral 18 0.991 57.04 +NEBKIR Fe -1 1 26 2 6 False 6 Octahedral 18 0.885 80.52 +NEDGIM Mn 0 5 25 3 4 False 5 Trigonal bipyramidal 13 0.927 -49.03 +NEFQEU Ni 1 3 28 2 8 False 6 Octahedral 18 1.148 -35.07 +NEHDIO Ni 1 1 28 2 8 True 4 Tetrahedral 8 0.996 46.75 +NEHWIH Mn 0 6 25 2 5 False 6 Octahedral 18 1.122 -52.6 +NEJBIN Fe -1 5 26 2 6 False 5 Square pyramidal 14 1.106 -45.31 +NELGOA Fe 2 5 26 2 6 False 8 Cube 31 1.325 -61.13 +NEMXIN Fe 0 2 26 3 5 False 6 Octahedral 18 0.927 55.44 +NENNEA Fe 1 3 26 2 6 False 5 Square pyramidal 14 1.014 -8.9 +NENWEK Fe 0 5 26 2 6 False 4 Tetrahedral 8 0.97 -61.75 +NEPMEC Mn -2 6 25 2 5 False 8 Dodecahedral 33 1.209 -80.73 +NEPPIJ Fe -3 6 26 3 5 False 6 Octahedral 18 1.027 -20.95 +NETCAT Mn 0 6 25 2 5 False 6 Octahedral 18 1.105 -55.37 +NETTOX Ni 0 3 28 2 8 False 5 Square pyramidal 14 1.087 -16.45 +NEXYAS Co -1 1 27 3 6 False 6 Octahedral 18 0.984 62.31 +NEYJUY Fe 0 5 26 2 6 False 5 Trigonal bipyramidal 13 1.093 -46.72 +NEYVUI Ni 0 1 28 2 8 False 4 Square planar 7 0.949 21.09 +NEYWOD Cr 0 3 24 2 4 False 6 Octahedral 18 0.942 27.18 +NEYWUJ Cr 0 4 24 3 3 False 6 Octahedral 18 0.953 -16.86 +NEZBIG Ni -2 3 28 2 8 False 4 Tetrahedral 8 1.009 -36.67 +NEZGIJ Co 0 2 27 2 7 True 4 Tetrahedral 8 1.036 33.2 +NEZPEQ Co 0 4 27 2 7 False 4 Tetrahedral 8 1.005 -21.06 +NICFAH Co -1 4 27 2 7 False 4 Tetrahedral 8 1.025 -19.4 +NIDMOE Fe 0 5 26 2 6 False 3 Trigonal planar 3 0.989 -63.32 +NIDTHC11 Ni 0 1 28 2 8 False 4 Square planar 7 0.935 23.73 +NIFWAB Ni 0 1 28 2 8 True 3 Trigonal planar 3 0.986 47.19 +NIHXEK Co 0 3 27 1 8 False 4 Seesaw 9 0.994 -36.47 +NIHYIP Co 0 3 27 1 8 False 4 Tetrahedral 8 0.993 -39.88 +NIHZCH11 Ni -1 3 28 2 8 False 6 Octahedral 18 1.116 -46.27 +NIJZEM Mn 0 6 25 2 5 False 8 Dodecahedral 33 1.206 -57.22 +NISBEW Fe 0 1 26 2 6 False 6 Octahedral 18 0.92 64.03 +NIVWOF Fe 0 1 26 2 6 False 6 Octahedral 18 0.882 179.41 +NIWTOC Mn -1 5 25 3 4 False 5 Trigonal bipyramidal 13 0.944 -41.15 +NOBHET Cr 1 4 24 3 3 False 6 Octahedral 18 0.999 -33.98 +NOFJOI Fe -1 6 26 3 5 False 5 Trigonal bipyramidal 13 1.005 -22.28 +NOGWIQ Cr 0 4 24 3 3 False 6 Octahedral 18 0.976 -21.77 +NOHKUQ Cr 0 4 24 3 3 False 3 Trigonal planar 3 0.826 -42.24 +NOJJAX Cr 1 4 24 3 3 False 6 Octahedral 18 0.955 -20.45 +NOKSOX Mn 0 6 25 2 5 False 5 Square pyramidal 14 1.104 -48.76 +NONTIW Cr 0 4 24 3 3 True 4 Tetrahedral 8 1.042 -20.08 +NONTUI Cr 0 4 24 3 3 True 3 Trigonal planar 3 1.022 -15.91 +NONVEU Cr 0 5 24 2 4 True 3 Trigonal planar 3 1.107 -49.88 +NONYUN Ni 0 1 28 0 8 True 3 Trigonal planar 3 0.961 68.25 +NOPTES Ni 0 3 28 2 8 False 4 Tetrahedral 8 0.969 -10.91 +NOQTAP Ni 0 3 28 2 8 False 6 Octahedral 18 1.185 -24.04 +NOSHEI Fe 0 1 26 2 6 True 4 Tetrahedral 8 0.973 47.76 +NOTPUK Mn 0 1 25 1 6 False 6 Octahedral 18 0.844 153.44 +NOYCIN Co 2 4 27 2 7 False 6 Octahedral 18 1.121 -9.38 +NOYJUG Fe -3 6 26 3 5 False 6 Trigonal prismatic 19 1.027 -18.14 +NOZPAT Co 0 1 27 3 6 False 6 Octahedral 18 0.971 104.59 +NTMTUC Co 0 4 27 2 7 False 6 Octahedral 18 1.175 -19.31 +NUKPAM01 Fe 0 5 26 2 6 False 7 Pentagonal bipyramidal 23 1.172 -45.29 +NUNTAR Mn 0 6 25 2 5 False 7 Pentagonal bipyramidal 23 1.142 -60.02 +NUNWUP Fe 0 3 26 0 6 False 4 Tetrahedral 8 0.798 62.76 +NUPTAT Co 0 4 27 2 7 False 4 Tetrahedral 8 0.967 -21.99 +NURPUN Co 1 3 27 1 8 False 2 Linear 0 0.963 -28.77 +NUSMIY Fe -2 2 26 3 5 False 6 Octahedral 18 0.946 25.75 +NUTHIU Co 0 4 27 2 7 False 6 Octahedral 18 1.148 -14.62 +NUYHOE Ni 1 1 28 2 8 False 5 Square pyramidal 14 0.978 33.35 +NUZCUG Co 1 1 27 3 6 True 4 Tetrahedral 8 1.015 87.53 +NUZSUX Fe 0 5 26 2 6 False 4 Tetrahedral 8 1.033 -60.14 +OBIMOC Co 0 4 27 2 7 False 4 Tetrahedral 8 0.996 -31.29 +OBIVAX Ni 2 1 28 2 8 False 4 Square planar 7 0.925 35.76 +OBOFOC Fe 2 1 26 2 6 False 6 Octahedral 18 0.914 65.61 +OBOKAR Ni 0 3 28 2 8 False 4 Tetrahedral 8 1.007 -40.55 +OBOKOF Ni 0 1 28 2 8 False 4 Square planar 7 0.917 37.78 +OCOCFE Fe 0 1 26 0 6 True 2 Linear 0 1.028 78.86 +OCUJOL Fe 0 5 26 2 6 False 5 Square pyramidal 14 1.074 -45.84 +ODIHOY Cr 0 5 24 2 4 False 4 Seesaw 9 0.97 -48.17 +ODOWUC Co 0 4 27 2 7 False 6 Octahedral 18 1.104 -13.09 +ODUXIX Fe 0 5 26 2 6 False 4 Seesaw 9 1.018 -37.68 +OEPHNI Ni 0 3 28 2 8 False 4 Tetrahedral 8 0.985 -28.2 +OFANER Fe 0 5 26 2 6 False 6 Octahedral 18 1.119 -17.08 +OFEXAA Ni -2 1 28 2 8 False 4 Square planar 7 0.918 67.79 +OFINAT Co 2 4 27 2 7 False 6 Octahedral 18 1.113 -13.22 +OFIXEI Cr 0 4 24 3 3 False 6 Octahedral 18 0.948 -38.43 +OFUROX Ni 0 1 28 2 8 True 2 Linear 0 1.082 39.28 +OGEVUS Fe 0 5 26 2 6 False 4 Tetrahedral 8 1.019 -45.16 +OGUBOH Co 1 1 27 3 6 True 4 Tetrahedral 8 1.048 69.17 +OHUSEQ Ni 0 1 28 2 8 False 4 Square planar 7 0.972 19.96 +OJEBUB Mn 0 6 25 2 5 False 7 Pentagonal bipyramidal 23 1.145 -54.35 +OJUHAF Mn 0 6 25 2 5 False 7 Pentagonal bipyramidal 23 1.167 -56.88 +OKEMUO Mn 0 6 25 2 5 False 7 Pentagonal bipyramidal 23 1.133 -46.03 +OLENAU Mn 0 6 25 2 5 False 8 Dodecahedral 33 1.31 -91.24 +OLIWUB Co 0 4 27 2 7 False 6 Octahedral 18 1.142 -11.56 +OLOZAR Ni 0 3 28 2 8 False 4 Tetrahedral 8 1.0 -16.63 +OMANIB Fe 0 2 26 3 5 False 6 Octahedral 18 0.939 33.7 +OMIXAL Mn 0 6 25 2 5 False 6 Octahedral 18 1.112 -38.71 +OMUHAG Mn 0 6 25 2 5 False 6 Trigonal prismatic 19 1.135 -64.57 +ONAPOL Fe -1 6 26 3 5 False 4 Tetrahedral 8 0.952 -13.81 +ONAXIM Co 0 2 27 2 7 False 5 Square pyramidal 14 0.984 28.34 +ONUQAR Fe 0 5 26 2 6 False 3 Trigonal planar 3 0.931 -45.56 +OPAKUM Ni 0 1 28 2 8 False 3 T-shaped 6 0.931 27.73 +OQAKAV Co 0 1 27 3 6 True 4 Tetrahedral 8 1.042 71.69 +OQEDOE Co 0 4 27 2 7 False 4 Tetrahedral 8 1.038 -25.39 +OQEPOR Co 0 3 27 1 8 True 4 Tetrahedral 8 1.084 -23.23 +ORESUC Ni 0 1 28 2 8 False 4 Square planar 7 0.937 38.93 +ORODOP Ni 0 2 28 3 7 False 5 Square pyramidal 14 0.973 47.99 +OROFEH Ni 0 1 28 2 8 False 4 Square planar 7 0.932 49.89 +ORUDUB Ni 0 1 28 2 8 True 3 Trigonal planar 3 1.049 31.99 +OSELOO Fe 0 5 26 2 6 False 6 Octahedral 18 1.107 -18.44 +OTIQIT Co 0 1 27 1 8 True 2 Linear 0 1.038 37.54 +OTOTEX Fe 0 5 26 2 6 False 4 Tetrahedral 8 0.985 -50.26 +OTOTIB Fe 0 6 26 3 5 False 4 Tetrahedral 8 0.902 -30.21 +OVOJIU Co 0 1 27 3 6 False 6 Octahedral 18 0.914 131.81 +OWIQER Ni 0 1 28 2 8 True 3 Trigonal planar 3 1.054 54.45 +OWOGUE Cr 0 4 24 3 3 False 6 Octahedral 18 0.939 -38.75 +OYIKOY Fe -1 5 26 2 6 False 4 Tetrahedral 8 0.981 -81.07 +OYIKUE Fe -1 5 26 2 6 False 4 Tetrahedral 8 0.98 -54.65 +OYILIT Fe -1 5 26 2 6 False 4 Tetrahedral 8 0.962 -52.63 +OYUKOK Fe 0 5 26 2 6 False 4 Tetrahedral 8 1.008 -45.71 +OZEDIH Ni 3 2 28 3 7 False 6 Octahedral 18 1.062 42.96 +OZIREV Fe 0 5 26 2 6 False 4 Tetrahedral 8 1.077 -41.91 +OZUSOT Mn 0 6 25 2 5 False 5 Square pyramidal 14 1.029 -57.1 +PAACCO Co 0 1 27 3 6 False 6 Octahedral 18 0.975 47.48 +PABZIC Cr 2 2 24 3 3 True 5 Square pyramidal 14 0.996 47.16 +PACHEI Mn 0 6 25 2 5 False 4 Tetrahedral 8 0.999 -69.94 +PADJAH Fe 0 6 26 3 5 False 5 Square pyramidal 14 0.983 -36.65 +PAHMUJ Ni 1 2 28 3 7 False 5 Square pyramidal 14 1.07 61.55 +PAMSUT Co -1 4 27 2 7 False 4 Tetrahedral 8 0.982 -37.44 +PANGER Ni 0 3 28 2 8 False 6 Octahedral 18 1.127 -34.19 +PARRUW Co 0 4 27 2 7 False 6 Octahedral 18 1.184 -15.95 +PARSOR Ni 0 3 28 2 8 False 4 Tetrahedral 8 1.023 -42.1 +PASGIZ Ni 1 3 28 2 8 False 6 Octahedral 18 1.158 -22.68 +PATACO10 Co 2 1 27 3 6 False 6 Octahedral 18 0.99 62.22 +PATQEG Ni 0 3 28 2 8 False 4 Tetrahedral 8 0.981 -33.19 +PAXVAM Mn 0 5 25 3 4 False 6 Octahedral 18 0.98 -53.53 +PAYHIG Fe 0 5 26 2 6 False 5 Square pyramidal 14 1.067 -59.52 +PAYVAO Mn 2 6 25 2 5 False 6 Octahedral 18 1.11 -50.42 +PAZDUQ Cr 0 4 24 3 3 False 6 Octahedral 18 0.983 -46.04 +PAZPAI Ni 2 3 28 2 8 False 6 Octahedral 18 1.134 -33.23 +PAZXAP Fe 2 1 26 2 6 False 6 Octahedral 18 0.989 40.19 +PCTHFC Cr 0 1 24 0 5 False 6 Octahedral 18 0.868 130.61 +PEHZOU Ni 0 1 28 2 8 False 5 Trigonal bipyramidal 13 0.916 46.03 +PEJCOZ Mn 0 6 25 2 5 False 6 Octahedral 18 1.146 -56.66 +PEKPAW Ni 2 3 28 2 8 False 6 Octahedral 18 1.135 -36.39 +PEMENI Ni 1 1 28 2 8 False 5 Square pyramidal 14 1.046 30.32 +PEMSOP Cr 0 1 24 0 5 False 6 Octahedral 18 0.845 167.19 +PEMTAC Cr 0 1 24 0 5 False 6 Octahedral 18 0.876 123.65 +PENBUG Co -1 3 27 3 6 False 4 Square planar 7 0.913 18.05 +PENHOI Mn -1 5 25 3 4 False 5 Square pyramidal 14 0.927 -62.42 +PEPPEI Fe 0 3 26 2 6 False 5 Square pyramidal 14 0.902 22.47 +PEQMEE Ni -2 1 28 2 8 False 4 Square planar 7 0.91 34.38 +PERJIG Co 3 1 27 3 6 False 6 Octahedral 18 0.974 100.48 +PEVHAC Fe 1 3 26 2 6 False 5 Trigonal bipyramidal 13 0.899 9.49 +PEXKAF Co 2 1 27 3 6 False 6 Octahedral 18 0.99 57.61 +PEXKUB Ni 0 3 28 2 8 False 5 Trigonal bipyramidal 13 1.049 -20.7 +PIBPOH Ni 1 3 28 2 8 False 5 Square pyramidal 14 1.081 -19.97 +PIGDIS Ni 1 3 28 2 8 False 6 Octahedral 18 1.108 -37.57 +PIHWEI Mn 0 6 25 2 5 False 7 Pentagonal bipyramidal 23 1.172 -49.42 +PIKZIT Mn 0 6 25 2 5 False 6 Octahedral 18 1.118 -45.07 +PIMMOQ Fe 0 5 26 2 6 False 6 Octahedral 18 1.109 -27.17 +PINBUJ Ni 2 3 28 2 8 False 6 Octahedral 18 1.098 -28.36 +PIQKOR Co 1 1 27 3 6 True 4 Tetrahedral 8 1.042 52.33 +PITBUP Cr -1 4 24 3 3 False 6 Octahedral 18 1.059 -41.29 +PITHAD Co 2 4 27 2 7 False 6 Octahedral 18 1.129 -11.63 +PIVDAB Ni 1 3 28 2 8 False 4 Tetrahedral 8 1.037 -39.19 +PIVHUZ Co 0 4 27 2 7 False 2 Linear 0 0.879 -14.08 +PIYYON Fe 0 5 26 2 6 False 5 Trigonal bipyramidal 13 1.07 -35.75 +PMCCOC Co 0 1 27 1 8 True 3 Trigonal planar 3 0.996 48.7 +POBWUA Co 2 2 27 2 7 False 5 Square pyramidal 14 1.0 50.07 +PODCIX Co 0 4 27 2 7 False 6 Trigonal prismatic 19 1.167 -20.34 +POJHUT Ni 0 3 28 2 8 False 7 Pentagonal bipyramidal 23 1.219 -24.02 +POJREL Fe 0 6 26 3 5 False 6 Octahedral 18 1.05 -28.55 +POPFEC10 Fe 0 1 26 0 6 False 5 Trigonal bipyramidal 13 0.805 120.94 +PORNES Co 0 4 27 2 7 False 5 Square pyramidal 14 1.11 -9.68 +PORPOB Co 3 1 27 3 6 False 6 Octahedral 18 0.977 76.65 +POWRID Co 0 4 27 2 7 False 6 Octahedral 18 1.14 -12.9 +POWROJ Mn 1 6 25 2 5 False 6 Octahedral 18 1.091 -52.11 +PUCFID Fe 0 1 26 2 6 False 6 Octahedral 18 0.903 76.52 +PUCHOL Fe 0 5 26 2 6 True 3 Trigonal planar 3 1.157 -58.96 +PUCHUR Co 0 2 27 2 7 True 3 Trigonal planar 3 1.09 26.28 +PUDPAG Cr 0 4 24 3 3 False 6 Octahedral 18 0.935 -34.84 +PUGLOS Fe 1 1 26 2 6 True 4 Tetrahedral 8 0.981 58.07 +PUHWUL Mn 1 5 25 3 4 False 6 Octahedral 18 1.006 -43.61 +PUJBAX Mn -2 5 25 3 4 False 6 Octahedral 18 0.982 -60.22 +PUJSOC Ni 1 1 28 2 8 False 4 Seesaw 9 0.881 29.89 +PUKPUG Co 0 1 27 3 6 True 3 Trigonal planar 3 1.025 96.75 +PUMQAQ Co -2 4 27 2 7 False 4 Tetrahedral 8 1.006 -51.58 +PUQJAM Fe -1 5 26 2 6 False 6 Octahedral 18 1.117 -22.06 +PURCUA Fe 0 5 26 2 6 True 2 Linear 0 1.113 -31.18 +PUTTUT Co 1 1 27 3 6 False 6 Octahedral 18 0.962 62.79 +PUTVAB Co 2 1 27 3 6 False 6 Octahedral 18 0.96 75.0 +PUVLAV Cr 0 5 24 2 4 False 4 Seesaw 9 1.094 -61.13 +PUWMAX Co 1 1 27 3 6 False 6 Octahedral 18 0.989 48.13 +PUXRAC Fe 0 5 26 2 6 False 4 Tetrahedral 8 0.992 -46.96 +PUXVIO Cr 0 4 24 3 3 False 4 Tetrahedral 8 0.897 -30.11 +PUXVOU Cr 0 5 24 2 4 False 3 Trigonal planar 3 0.925 -58.83 +PYESAF10 Fe 0 5 26 2 6 False 5 Square pyramidal 14 1.03 -30.75 +PYRMNC Mn 0 1 25 1 6 False 6 Octahedral 18 0.843 134.02 +QABMIP Ni 1 1 28 2 8 True 3 Trigonal planar 3 1.047 21.87 +QADJEK Co 0 4 27 2 7 False 5 Trigonal bipyramidal 13 1.117 -30.32 +QAFCEG Ni 0 3 28 2 8 False 6 Octahedral 18 1.106 -32.14 +QAFCOS Mn 0 6 25 2 5 False 5 Square pyramidal 14 1.065 -47.41 +QAFPAO Co 1 1 27 3 6 False 6 Octahedral 18 0.981 63.84 +QAGCEG Ni -2 3 28 2 8 False 6 Octahedral 18 1.146 -38.31 +QAHQAT Ni 1 1 28 2 8 False 4 Square planar 7 0.946 31.94 +QAHWUT Ni 0 1 28 2 8 False 4 Square planar 7 0.927 25.2 +QALDUD Ni 0 3 28 2 8 False 6 Octahedral 18 1.119 -13.55 +QANFOD Co -1 3 27 3 6 False 4 Square planar 7 0.865 20.85 +QANMOK Co 0 2 27 2 7 False 4 Square planar 7 1.006 20.72 +QAQBIV Co 0 1 27 1 8 False 5 Trigonal bipyramidal 13 0.883 75.09 +QAQBOB Fe 0 1 26 2 6 True 4 Tetrahedral 8 0.956 125.89 +QAQZEO Ni 0 1 28 2 8 True 3 Trigonal planar 3 1.059 16.41 +QARMIF Fe 1 1 26 2 6 True 2 Linear 0 1.004 73.81 +QARPEF Fe 0 6 26 3 5 False 6 Octahedral 18 1.042 -19.79 +QASCUI Ni 0 3 28 2 8 False 4 Seesaw 9 1.017 -35.83 +QAVFID Fe 0 5 26 2 6 False 4 Square planar 7 1.081 -38.2 +QAWZET Cr 0 4 24 3 3 True 4 Tetrahedral 8 1.103 -19.67 +QAWZIX Cr 1 4 24 3 3 True 4 Tetrahedral 8 1.079 -19.7 +QAYBAT Fe 0 5 26 2 6 False 4 Tetrahedral 8 1.017 -44.0 +QAYCEY Fe 0 6 26 3 5 False 5 Trigonal bipyramidal 13 1.001 -26.26 +QAZCIF Co 0 2 27 2 7 False 4 Square planar 7 0.951 26.77 +QEDCOR Fe 2 5 26 2 6 False 6 Octahedral 18 1.094 -30.27 +QEDKOZ Co 0 4 27 2 7 False 6 Octahedral 18 1.152 -8.4 +QEFDOW Fe 0 6 26 3 5 False 6 Octahedral 18 1.039 -13.98 +QEHKUL Ni 1 1 28 2 8 True 3 Trigonal planar 3 1.052 24.18 +QEHZIN Fe 2 2 26 3 5 False 6 Octahedral 18 0.947 89.86 +QEKCAN Ni 0 2 28 3 7 False 6 Octahedral 18 1.092 60.89 +QEKFET Ni 0 3 28 2 8 False 6 Octahedral 18 1.128 -36.41 +QENWUC Fe 2 1 26 2 6 False 6 Octahedral 18 0.922 79.51 +QEQVEO Cr 0 4 24 3 3 False 6 Octahedral 18 0.95 -33.57 +QETKOS Fe 3 2 26 3 5 False 6 Octahedral 18 0.975 48.88 +QETLAF Mn 1 6 25 2 5 False 7 Pentagonal bipyramidal 23 1.155 -61.43 +QETVAM Ni 0 3 28 2 8 False 5 Trigonal bipyramidal 13 1.097 -19.85 +QEWGOR Ni 0 1 28 2 8 False 4 Square planar 7 0.939 25.61 +QEZYUP Fe 0 1 26 2 6 False 6 Octahedral 18 0.919 80.07 +QIDNAU Co 0 3 27 1 8 False 3 Trigonal planar 3 0.971 -33.79 +QIGGOC Co 1 1 27 3 6 True 3 Trigonal planar 3 1.074 75.5 +QIGRED Co 0 1 27 3 6 False 6 Octahedral 18 0.961 101.48 +QIGRON Co 0 1 27 3 6 False 6 Octahedral 18 0.99 45.53 +QIGSEE Co 0 1 27 3 6 False 6 Octahedral 18 1.002 87.76 +QIJTAE Fe 0 6 26 3 5 False 6 Octahedral 18 1.039 -18.48 +QILWUD Co 2 1 27 3 6 False 6 Octahedral 18 0.997 55.98 +QIMXUI Ni -2 1 28 2 8 False 4 Square planar 7 0.884 21.66 +QIRWIZ Cr 1 5 24 2 4 False 5 Trigonal bipyramidal 13 1.043 -46.78 +QIRWOF Cr 1 5 24 2 4 False 5 Trigonal bipyramidal 13 1.029 -47.42 +QIRWUL Cr 1 5 24 2 4 False 5 Square pyramidal 14 1.029 -51.76 +QITBEA Fe 0 5 26 2 6 False 5 Square pyramidal 14 1.098 -65.07 +QITSUJ Co -2 4 27 2 7 False 4 Tetrahedral 8 0.987 -45.39 +QITWUO Fe 1 4 26 3 5 False 5 Square pyramidal 14 0.99 -7.17 +QIVYEZ Fe 0 5 26 2 6 False 2 Linear 0 0.996 -75.69 +QIWCUU Ni 0 1 28 2 8 False 5 Trigonal bipyramidal 13 0.992 14.51 +QIWKOX Co 0 1 27 3 6 False 6 Octahedral 18 0.982 105.13 +QIXCOR Fe 0 5 26 2 6 False 5 Trigonal bipyramidal 13 1.077 -50.34 +QIXDEI Fe 0 5 26 2 6 False 6 Octahedral 18 1.111 -26.35 +QIXDIM Fe 0 5 26 2 6 False 5 Square pyramidal 14 1.074 -49.45 +QIYMAN Co 0 1 27 3 6 True 4 Tetrahedral 8 1.03 48.81 +QIZCAF Fe 0 5 26 2 6 False 5 Square pyramidal 14 1.064 -32.79 +QOBRIK Fe 0 5 26 2 6 False 5 Trigonal bipyramidal 13 1.108 -34.65 +QOCDUI01 Fe 0 4 26 3 5 False 5 Square pyramidal 14 0.96 0.87 +QOFDIZ Mn 1 2 25 2 5 True 4 Tetrahedral 8 0.949 109.75 +QOFVOW Cr 0 4 24 3 3 True 4 Tetrahedral 8 1.027 -25.9 +QOGLAZ Co 0 4 27 2 7 False 4 Tetrahedral 8 0.992 -40.92 +QOGNAD Co 1 1 27 3 6 False 6 Octahedral 18 0.983 83.75 +QOJDEZ Ni 0 3 28 2 8 False 6 Octahedral 18 1.098 -38.86 +QOKSOY Fe 0 1 26 2 6 False 6 Octahedral 18 0.881 118.89 +QOKYIY Fe 0 1 26 0 6 True 5 Trigonal bipyramidal 13 0.911 108.68 +QOLKIM Fe 0 4 26 3 5 False 5 Square pyramidal 14 0.948 7.71 +QOLZOH Mn 0 6 25 2 5 False 6 Octahedral 18 1.115 -49.85 +QOMLOU Ni 0 3 28 2 8 False 5 Square pyramidal 14 1.085 -31.87 +QOMQOZ Fe 1 5 26 2 6 False 7 Pentagonal bipyramidal 23 1.166 -43.53 +QOPWOK Fe 0 3 26 2 6 False 4 Square planar 7 0.927 2.77 +QOQKIQ Ni 2 3 28 2 8 False 6 Octahedral 18 1.117 -49.8 +QORDUY Fe -1 4 26 3 5 False 5 Square pyramidal 14 0.936 1.58 +QORFAG Fe -2 4 26 3 5 False 5 Square pyramidal 14 0.938 9.49 +QOSGEL Fe 1 5 26 2 6 False 4 Tetrahedral 8 1.05 -49.58 +QOSTAT Ni 2 1 28 2 8 False 4 Square planar 7 0.977 29.54 +QOSZON Fe 0 1 26 2 6 False 6 Octahedral 18 0.834 191.59 +QOWJOE Co -1 4 27 2 7 False 6 Trigonal prismatic 19 1.159 -28.09 +QOXKUL Fe 0 5 26 2 6 False 4 Tetrahedral 8 0.963 -48.93 +QOXZAG Co 1 1 27 3 6 False 4 Seesaw 9 0.902 26.97 +QOXZEK Co 1 1 27 3 6 False 4 Tetrahedral 8 0.884 33.41 +QOYFEQ Ni 0 2 28 3 7 False 5 Square pyramidal 14 1.021 42.21 +QOYWIN Mn 0 6 25 2 5 False 6 Octahedral 18 1.037 -29.88 +QOZZUB Fe 0 6 26 3 5 False 6 Octahedral 18 1.039 -20.21 +QUCBOG Co -1 3 27 3 6 False 4 Square planar 7 0.925 27.72 +QUGQUF Ni 1 3 28 2 8 False 6 Octahedral 18 1.115 -35.27 +QUHKIO Ni 0 1 28 2 8 False 4 Square planar 7 0.945 44.49 +QUKTAS Fe 0 5 26 2 6 False 6 Trigonal prismatic 19 1.145 -49.17 +QUSJAQ Fe 0 5 26 2 6 False 4 Tetrahedral 8 0.974 -38.11 +QUSPOJ Fe 1 1 26 2 6 True 4 Tetrahedral 8 0.975 83.41 +QUTFIW Cr -3 4 24 3 3 False 6 Octahedral 18 0.942 -48.52 +QUZWAL Ni -1 2 28 3 7 False 5 Trigonal bipyramidal 13 0.956 27.45 +RABJOX Ni 0 1 28 2 8 False 4 Square planar 7 1.025 50.32 +RABLAL Ni 1 1 28 2 8 True 3 Trigonal planar 3 0.994 53.58 +RABVOG Co 0 1 27 1 8 False 5 Trigonal bipyramidal 13 0.894 60.39 +RACNIV Ni 0 3 28 2 8 False 5 Trigonal bipyramidal 13 1.086 -25.23 +RADLEO Ni 0 1 28 2 8 False 4 Square planar 7 0.977 44.46 +RADSEU Fe 1 1 26 2 6 True 4 Tetrahedral 8 0.995 108.58 +RAFLIV Mn 0 6 25 2 5 False 6 Trigonal prismatic 19 1.119 -44.61 +RAGLOD Mn 0 6 25 2 5 False 5 Square pyramidal 14 1.071 -50.94 +RAHXAB Mn 0 6 25 2 5 False 6 Octahedral 18 1.106 -52.81 +RAKTAA Fe 0 6 26 3 5 False 5 Square pyramidal 14 0.991 -26.38 +RALNUO Fe 0 3 26 2 6 False 4 Square planar 7 0.883 -4.8 +RANJIA Fe 1 5 26 2 6 False 4 Tetrahedral 8 1.022 -50.22 +RAPJAT Ni 0 3 28 2 8 False 6 Octahedral 18 1.123 -45.81 +RARMIG Mn 0 1 25 1 6 True 4 Tetrahedral 8 0.968 102.69 +RATBIY Co 0 4 27 2 7 False 4 Tetrahedral 8 1.014 -26.33 +RATCAR Fe 0 6 26 3 5 False 6 Octahedral 18 1.048 -19.03 +RATDIZ Co 2 1 27 3 6 False 6 Octahedral 18 1.018 80.67 +RATDOF Co 2 1 27 3 6 False 6 Octahedral 18 1.017 77.66 +RAVYIX Fe 1 5 26 2 6 False 5 Square pyramidal 14 1.104 -40.3 +RAWPUB Ni 0 1 28 2 8 False 5 Trigonal bipyramidal 13 0.951 29.75 +RAWRUF Co 0 4 27 2 7 False 5 Square pyramidal 14 1.075 -20.73 +RAWTEO Cr 0 4 24 3 3 True 3 Trigonal planar 3 1.035 -16.25 +RAXMOT Co 0 4 27 2 7 False 6 Octahedral 18 1.137 -19.41 +RAXXUM Co 0 4 27 2 7 False 6 Octahedral 18 1.118 -10.33 +REGBUA Fe 0 5 26 2 6 False 6 Trigonal prismatic 19 1.148 -51.64 +REJDAN Co 1 3 27 3 6 False 5 Square pyramidal 14 0.974 8.99 +REMMEB Co 0 4 27 2 7 False 4 Tetrahedral 8 0.997 -35.9 +REMMOM Ni 0 1 28 2 8 False 4 Square planar 7 0.919 28.83 +RENGAV Fe 0 5 26 2 6 False 4 Tetrahedral 8 1.116 -49.68 +RERCUP Mn 0 1 25 1 6 False 6 Octahedral 18 0.86 114.45 +RETFOM Co 0 4 27 2 7 False 6 Octahedral 18 1.14 -10.43 +RETGON Ni 1 3 28 2 8 False 6 Octahedral 18 1.098 -40.78 +REXCUS Mn 0 5 25 3 4 False 6 Octahedral 18 0.968 -44.42 +REXMIQ Fe 0 6 26 3 5 False 6 Octahedral 18 1.062 -21.0 +REXQAN Co 0 1 27 3 6 False 6 Octahedral 18 1.044 74.9 +RIHLAY Mn 0 6 25 2 5 False 7 Pentagonal bipyramidal 23 1.156 -54.79 +RIMDIA Cr 0 1 24 0 5 False 6 Octahedral 18 0.923 128.94 +RIPHEG Fe 0 5 26 2 6 False 4 Tetrahedral 8 1.04 -47.76 +RIPQAL Ni 0 1 28 2 8 False 4 Square planar 7 0.947 23.6 +RIPXIX Fe 0 6 26 3 5 False 6 Octahedral 18 1.049 -17.25 +RIQQAJ Cr -1 1 24 0 5 False 6 Octahedral 18 0.883 114.11 +RIQQEN Cr -1 1 24 0 5 False 6 Octahedral 18 0.888 113.99 +RIQSAM Ni 1 3 28 2 8 False 6 Octahedral 18 1.143 -37.43 +RIRCIH Ni 2 3 28 2 8 False 5 Trigonal bipyramidal 13 1.116 -19.55 +RIRFAB Fe -2 5 26 2 6 False 4 Tetrahedral 8 0.95 -54.92 +RIRFEF Fe 0 5 26 2 6 False 3 Trigonal planar 3 0.971 -57.71 +RIRFIJ Fe -1 5 26 2 6 False 4 Tetrahedral 8 0.992 -48.75 +RISNOZ Fe 0 6 26 3 5 False 5 Square pyramidal 14 1.001 -18.35 +RISQOC Ni 0 1 28 2 8 False 4 Square planar 7 0.91 26.6 +RISSIW Co 0 1 27 3 6 False 6 Octahedral 18 0.971 76.66 +RITTAR Co 0 4 27 2 7 False 3 Trigonal planar 3 0.99 -15.43 +RITYOK Fe 2 5 26 2 6 False 5 Trigonal bipyramidal 13 1.081 -32.88 +RIVWEA Fe 0 5 26 2 6 False 4 Tetrahedral 8 1.016 -83.72 +RIWXEA Cr 0 5 24 2 4 False 4 Seesaw 9 1.022 -55.63 +RIXROH Co 0 1 27 3 6 True 4 Tetrahedral 8 1.047 62.12 +RIXTIC Ni 0 1 28 2 8 False 4 Square planar 7 0.96 43.96 +RIZGUF Co 0 4 27 2 7 False 4 Tetrahedral 8 0.993 -52.8 +ROBXEM Co -2 4 27 2 7 False 4 Tetrahedral 8 0.958 -41.61 +ROCCOB Cr 0 1 24 2 4 True 5 Square pyramidal 14 1.0 124.25 +ROCDOC Ni 2 1 28 2 8 False 5 Trigonal bipyramidal 13 0.948 32.79 +ROFKOO Fe 0 5 26 2 6 False 5 Trigonal bipyramidal 13 1.121 -37.51 +ROFKUV Mn 0 6 25 2 5 False 5 Square pyramidal 14 1.042 -63.38 +ROFXAO Ni 0 1 28 2 8 False 4 Square planar 7 0.949 27.4 +ROKBUO Cr 0 1 24 0 5 False 6 Octahedral 18 0.855 148.97 +ROKMOT Fe 0 1 26 2 6 True 4 Tetrahedral 8 0.964 84.55 +ROLQUE Co 0 1 27 3 6 False 6 Octahedral 18 0.961 40.79 +ROLXIZ Ni 1 1 28 2 8 False 4 Square planar 7 0.899 45.1 +ROMSUI Mn 0 5 25 3 4 False 5 Square pyramidal 14 0.934 -58.99 +RONREU Ni 0 3 28 2 8 False 5 Trigonal bipyramidal 13 1.053 -26.84 +ROPBIH Mn 0 6 25 2 5 False 8 Dodecahedral 33 1.211 -66.76 +ROPBON Mn 2 6 25 2 5 False 7 Capped trigonal prismatic 25 1.171 -54.53 +RORXUR Ni 0 1 28 2 8 False 4 Square planar 7 0.967 15.07 +ROYGUJ Mn 0 6 25 2 5 False 5 Trigonal bipyramidal 13 1.146 -40.05 +RUHGUW Ni 0 3 28 2 8 False 6 Octahedral 18 1.152 -14.44 +RUHHOS Cr 1 4 24 3 3 False 6 Octahedral 18 0.983 -29.91 +RUHMAI Fe 1 6 26 3 5 False 6 Octahedral 18 1.065 -8.98 +RUHRIV Co 2 4 27 2 7 False 8 Dodecahedral 33 1.3 -50.09 +RUJSOE Co 1 4 27 2 7 False 5 Square pyramidal 14 1.128 -6.54 +RUJSUK Co 2 4 27 2 7 False 6 Octahedral 18 1.179 -5.16 +RUKLAK Cr 0 1 24 0 5 False 6 Octahedral 18 0.911 96.94 +RULVEA Mn 0 5 25 3 4 False 6 Octahedral 18 0.988 -42.8 +RUMGUB Co 0 2 27 2 7 False 4 Square planar 7 0.981 24.77 +RUMHAI Co 0 2 27 2 7 False 6 Octahedral 18 1.092 23.01 +RUMNUK Fe 0 6 26 3 5 False 3 Trigonal planar 3 0.875 -47.82 +RUMRAU Fe -3 6 26 3 5 False 6 Octahedral 18 1.027 -29.97 +RUMZOP Fe 0 5 26 2 6 False 4 Tetrahedral 8 1.066 -56.74 +RUTMAV Ni -1 2 28 3 7 False 5 Trigonal bipyramidal 13 0.96 42.7 +RUTRUT Co 0 4 27 2 7 False 4 Tetrahedral 8 0.983 -21.28 +RUWKEA Fe 0 5 26 2 6 False 4 Tetrahedral 8 1.058 -62.48 +RUWSAG Cr 0 5 24 2 4 False 4 Square planar 7 0.978 -61.75 +RUWSOU Cr 0 5 24 2 4 False 4 Square planar 7 1.012 -61.51 +RUXYER Ni 0 1 28 2 8 False 4 Square planar 7 0.961 48.55 +SABDAB Fe 0 5 26 2 6 False 4 Seesaw 9 1.029 -41.05 +SADRAU Fe 0 1 26 2 6 False 6 Octahedral 18 0.923 103.52 +SAFTEZ Mn 0 6 25 2 5 False 7 Pentagonal bipyramidal 23 1.163 -57.77 +SAFTID Mn 0 6 25 2 5 False 7 Capped trigonal prismatic 25 1.168 -57.18 +SAFTOJ Mn 0 6 25 2 5 False 7 Capped trigonal prismatic 25 1.171 -56.9 +SAFTUP Mn 0 6 25 2 5 False 7 Capped trigonal prismatic 25 1.171 -61.62 +SAFVAX Mn 0 6 25 2 5 False 8 Dodecahedral 33 1.201 -69.7 +SAGCAF Fe 0 2 26 3 5 False 6 Octahedral 18 0.948 66.71 +SAGFUB Fe 0 1 26 2 6 False 6 Octahedral 18 0.886 85.52 +SAHHAN Ni -1 3 28 2 8 False 4 Tetrahedral 8 1.008 -28.99 +SAHZIK Fe 0 6 26 3 5 False 6 Octahedral 18 1.032 -31.08 +SAJKUN Mn 1 1 25 1 6 False 6 Octahedral 18 0.885 87.05 +SAKWOS Fe 0 5 26 2 6 False 4 Tetrahedral 8 1.062 -58.38 +SALDNI Ni 0 3 28 2 8 False 5 Trigonal bipyramidal 13 1.074 -19.82 +SAPJUO Mn 1 5 25 3 4 False 6 Octahedral 18 0.996 -35.11 +SASPAD Ni 1 2 28 3 7 False 6 Octahedral 18 1.058 38.24 +SATGOK Ni 0 3 28 2 8 False 6 Octahedral 18 1.119 -13.24 +SAVHIG Fe 0 6 26 3 5 False 5 Trigonal bipyramidal 13 1.014 -31.98 +SAVHOM Fe 0 4 26 3 5 False 5 Trigonal bipyramidal 13 0.934 -7.86 +SAXSOZ Ni 0 1 28 0 8 True 3 Trigonal planar 3 1.034 65.33 +SAYMIO Fe 0 6 26 3 5 False 4 Tetrahedral 8 0.892 -40.25 +SAYZAV Fe 0 5 26 2 6 False 4 Seesaw 9 1.029 -36.98 +SCYSCR Cr -1 4 24 3 3 False 6 Octahedral 18 0.969 -36.99 +SEBQAS Ni 2 3 28 2 8 False 6 Trigonal prismatic 19 1.144 -36.17 +SEDHOZ Fe 0 5 26 2 6 True 4 Tetrahedral 8 1.2 -25.04 +SEDREZ Fe -1 2 26 3 5 False 6 Octahedral 18 0.944 72.59 +SELSEI Fe 0 5 26 2 6 False 5 Trigonal bipyramidal 13 1.061 -44.71 +SEMCUK Ni 0 1 28 2 8 False 4 Square planar 7 0.908 31.07 +SEMROU Co 0 4 27 2 7 False 5 Square pyramidal 14 1.07 -17.06 +SEPHOL Cr 0 4 24 3 3 False 6 Octahedral 18 0.983 -41.39 +SEPPUZ Mn 0 6 25 2 5 False 7 Pentagonal bipyramidal 23 1.167 -53.41 +SESGUT Co 2 4 27 2 7 False 6 Octahedral 18 1.122 -21.37 +SEWBUR Mn 0 1 25 1 6 False 6 Octahedral 18 0.838 130.45 +SEWMAK Co -2 4 27 2 7 False 4 Seesaw 9 1.025 -14.48 +SEZTUM Cr 0 5 24 2 4 False 5 Square pyramidal 14 1.045 -55.26 +SEZVAU Cr 0 5 24 2 4 False 4 Square planar 7 0.993 -64.73 +SEZVEY Cr -2 5 24 2 4 False 4 Square planar 7 0.987 -65.66 +SIBLIZ Ni 1 1 28 2 8 False 4 Square planar 7 0.955 33.85 +SIBZAE Co 0 4 27 2 7 False 4 Tetrahedral 8 1.092 -31.63 +SICCAL Co 1 1 27 3 6 False 6 Octahedral 18 0.965 74.98 +SICCUC Ni 2 3 28 2 8 False 6 Octahedral 18 1.106 -29.93 +SICFAM Mn 0 1 25 1 6 False 6 Octahedral 18 0.883 108.97 +SICFEQ Mn 0 1 25 1 6 False 6 Octahedral 18 0.881 106.18 +SIFQAA Ni 0 1 28 2 8 False 4 Square planar 7 0.944 74.54 +SIHKEA Ni 1 2 28 3 7 False 4 Square planar 7 0.924 37.69 +SILCIZ Ni 0 1 28 2 8 False 4 Square planar 7 0.942 24.48 +SILWOA Fe -2 6 26 3 5 False 6 Octahedral 18 1.014 -18.4 +SILYOC Mn 0 1 25 1 6 False 6 Octahedral 18 0.857 128.62 +SINDIC Mn 0 6 25 2 5 False 5 Square pyramidal 14 1.047 -67.64 +SINMIO Co 1 4 27 2 7 False 5 Trigonal bipyramidal 13 1.087 -24.11 +SIPHAA Co 0 3 27 1 8 False 4 Tetrahedral 8 0.943 -35.86 +SIPLEI Co 2 1 27 3 6 False 6 Octahedral 18 0.996 58.54 +SIQMEL Ni 0 1 28 0 8 True 3 Trigonal planar 3 1.051 82.08 +SIQNAK Co 0 1 27 3 6 False 6 Octahedral 18 0.93 116.03 +SIQNEO Co 0 1 27 3 6 False 6 Octahedral 18 0.95 83.61 +SIQZOH Mn 0 6 25 2 5 False 5 Trigonal bipyramidal 13 1.07 -50.71 +SIRMIP Fe 0 1 26 2 6 True 4 Tetrahedral 8 0.979 69.47 +SISNAK Co 1 4 27 2 7 False 7 Capped trigonal prismatic 25 1.233 -31.89 +SITFEG Ni 0 3 28 2 8 False 6 Octahedral 18 1.102 -23.86 +SIVQEU Co 0 4 27 2 7 False 5 Trigonal bipyramidal 13 1.058 -20.07 +SIXMES Fe 1 5 26 2 6 False 6 Octahedral 18 1.135 -22.83 +SIXMOC Fe 1 5 26 2 6 False 5 Trigonal bipyramidal 13 1.08 -36.69 +SIXRAV Fe 0 5 26 2 6 False 5 Square pyramidal 14 1.07 -22.59 +SIXZAA Ni 0 1 28 2 8 False 5 Trigonal bipyramidal 13 1.007 16.14 +SIYHOA Co 0 4 27 2 7 False 4 Tetrahedral 8 1.008 -31.83 +SOBXAI Cr 0 1 24 0 5 False 6 Octahedral 18 0.863 111.43 +SOCMEC Fe 1 1 26 2 6 True 4 Tetrahedral 8 0.961 105.0 +SOFGOK Ni 0 1 28 2 8 True 3 Trigonal planar 3 1.062 36.23 +SOFWIU Ni 2 3 28 2 8 False 6 Octahedral 18 1.113 -53.18 +SOGFAY Ni 0 1 28 2 8 False 3 T-shaped 6 0.901 31.34 +SOGFEC Ni 1 1 28 2 8 True 3 Trigonal planar 3 1.106 55.96 +SOGPIO Co 2 1 27 3 6 True 4 Tetrahedral 8 1.039 71.32 +SOHJIJ Mn 0 6 25 2 5 False 6 Octahedral 18 1.117 -36.16 +SOHKAC Mn 0 6 25 2 5 False 5 Square pyramidal 14 1.076 -47.19 +SOHKEG Mn 0 6 25 2 5 False 6 Octahedral 18 1.134 -37.74 +SOMTIY Mn 1 6 25 2 5 False 7 Capped trigonal prismatic 25 1.197 -54.09 +SOPCAB Ni 0 2 28 3 7 True 3 Trigonal planar 3 1.043 25.07 +SOQLOZ Fe 0 1 26 2 6 True 4 Tetrahedral 8 0.993 44.92 +SOQLUF Fe 0 5 26 2 6 False 4 Tetrahedral 8 1.036 -51.3 +SOSVAX Ni 0 1 28 2 8 False 4 Square planar 7 0.934 24.08 +SOTLET Fe 0 5 26 2 6 False 7 Pentagonal bipyramidal 23 1.189 -56.85 +SOWKIY Co 0 1 27 3 6 False 6 Octahedral 18 0.986 85.38 +SOXJUK Co -1 4 27 2 7 False 4 Tetrahedral 8 0.993 -21.16 +SOZYEL Co 0 1 27 3 6 False 6 Octahedral 18 0.974 92.14 +SUBGOO Mn -1 6 25 2 5 False 4 Tetrahedral 8 0.96 -69.59 +SUBJIL Ni 0 2 28 3 7 False 5 Square pyramidal 14 0.999 46.34 +SUBQAK Mn 0 6 25 2 5 False 4 Tetrahedral 8 0.984 -65.78 +SUFBUS Co 0 4 27 2 7 False 5 Square pyramidal 14 1.11 -17.54 +SUFDEC Mn 0 6 25 2 5 False 4 Tetrahedral 8 1.053 -69.89 +SUJVAW Fe 1 5 26 2 6 False 6 Octahedral 18 1.117 -31.52 +SUKQUK Co -1 1 27 3 6 False 6 Octahedral 18 0.97 68.82 +SUKWUQ Co 1 1 27 3 6 False 6 Octahedral 18 0.97 65.82 +SUPKIY Mn 1 5 25 3 4 False 6 Octahedral 18 0.988 -40.81 +SUSGEV Fe 0 3 26 2 6 False 4 Square planar 7 0.893 3.42 +SUTQAB Fe 0 6 26 3 5 False 6 Octahedral 18 1.043 -20.37 +SUVREI Ni 0 3 28 2 8 False 6 Octahedral 18 1.144 -38.81 +SUXTEL Ni 1 1 28 2 8 False 4 Square planar 7 0.927 28.81 +TABNEP Cr 0 1 24 0 5 False 6 Octahedral 18 0.859 143.36 +TACNAN Mn 0 1 25 1 6 False 6 Octahedral 18 0.84 165.33 +TACSAU Fe 0 5 26 2 6 False 4 Tetrahedral 8 0.975 -60.78 +TADFEJ Cr 0 4 24 3 3 False 6 Octahedral 18 0.957 -23.15 +TADSUQ Co 1 1 27 3 6 True 4 Tetrahedral 8 1.075 85.08 +TAFTAV Mn 2 6 25 2 5 False 7 Capped trigonal prismatic 25 1.189 -46.33 +TAGFIR Ni -1 2 28 3 7 False 4 Square planar 7 0.897 35.46 +TAGFUD Ni -1 2 28 3 7 False 4 Square planar 7 0.887 32.83 +TAGLES10 Fe 0 1 26 2 6 False 6 Octahedral 18 0.9 79.0 +TAGZUA Co 0 4 27 2 7 False 6 Octahedral 18 1.133 -14.0 +TAHYOQ Mn -1 1 25 1 6 False 6 Octahedral 18 0.822 120.71 +TAJXUX Fe -1 1 26 0 6 True 3 Trigonal planar 3 0.956 97.7 +TAJXUZ Cr 0 1 24 0 5 False 6 Octahedral 18 0.847 144.35 +TAJYAG Cr 0 1 24 0 5 False 6 Octahedral 18 0.869 123.35 +TAKDEQ Mn -1 5 25 3 4 False 6 Octahedral 18 0.983 -57.1 +TAKZAH Co 0 4 27 2 7 False 6 Octahedral 18 1.132 -13.06 +TALMEZ Fe -1 4 26 3 5 False 5 Square pyramidal 14 0.939 9.13 +TALYIO Cr 0 1 24 0 5 True 4 Tetrahedral 8 0.968 142.89 +TAMZAJ Fe 1 1 26 2 6 False 6 Octahedral 18 0.884 103.75 +TANLEA Co 0 2 27 2 7 False 4 Seesaw 9 0.906 13.36 +TANLOK Co 0 4 27 2 7 False 4 Tetrahedral 8 1.0 -13.01 +TANLUQ Co 0 2 27 2 7 False 4 Tetrahedral 8 0.902 16.08 +TAPGUM Co 0 4 27 2 7 False 4 Tetrahedral 8 1.004 -39.36 +TAPZUI Fe 1 5 26 2 6 False 5 Square pyramidal 14 1.122 -42.45 +TAQZEQ Cr 1 1 24 2 4 True 5 Square pyramidal 14 0.979 121.68 +TARWIU Ni 0 1 28 2 8 False 4 Square planar 7 0.956 27.22 +TAVHOO Fe -1 6 26 3 5 False 5 Trigonal bipyramidal 13 1.017 -16.17 +TAVWAP Mn 1 6 25 2 5 False 7 Capped trigonal prismatic 25 1.179 -48.85 +TAWNEK Cr 0 1 24 0 5 False 6 Octahedral 18 0.858 149.18 +TCDYNI Ni 0 3 28 2 8 True 2 Linear 0 1.177 -22.55 +TDTCCO Co 0 1 27 3 6 False 6 Octahedral 18 0.973 51.17 +TEANIN Ni 2 3 28 2 8 False 6 Octahedral 18 1.137 -47.73 +TEBKIW Fe -1 5 26 2 6 False 5 Square pyramidal 14 1.03 -40.25 +TEBKOC Fe -1 5 26 2 6 False 5 Square pyramidal 14 1.03 -25.6 +TEBLAP Fe -1 5 26 2 6 False 5 Square pyramidal 14 1.029 -34.77 +TEBRUP Fe 0 5 26 2 6 False 5 Square pyramidal 14 1.027 -27.62 +TEBVIH Mn 2 6 25 2 5 False 6 Octahedral 18 1.145 -37.31 +TECFIR Mn 0 6 25 2 5 False 6 Octahedral 18 1.09 -46.5 +TECRAW Ni -1 2 28 3 7 False 4 Square planar 7 0.888 39.19 +TEHGAQ Mn 1 5 25 3 4 False 6 Octahedral 18 0.977 -45.47 +TEHYOV Co 0 4 27 2 7 False 4 Tetrahedral 8 0.981 -18.59 +TEPCUM Ni 0 1 28 2 8 False 4 Square planar 7 0.926 22.24 +TEQPUA Fe -1 5 26 2 6 False 4 Tetrahedral 8 1.008 -46.16 +TEQQAH Fe -1 3 26 2 6 False 5 Trigonal bipyramidal 13 0.934 13.48 +TETFON Ni 1 3 28 2 8 False 6 Octahedral 18 1.158 -27.14 +TEVLAK Mn 0 6 25 2 5 False 7 Pentagonal bipyramidal 23 1.166 -52.15 +TEVXIC Co 2 1 27 3 6 False 6 Octahedral 18 0.969 64.47 +TEVXUQ Co 0 2 27 2 7 True 3 Trigonal planar 3 1.021 34.96 +TEVYAX Co 0 2 27 2 7 True 3 T-shaped 6 1.017 48.15 +TEXLIS Co 0 4 27 2 7 False 4 Seesaw 9 1.021 -20.73 +TEZKIS Ni 2 1 28 2 8 False 5 Trigonal bipyramidal 13 0.97 25.37 +TGLYCR Cr 0 4 24 3 3 False 6 Octahedral 18 0.958 -45.47 +THETCO Co 0 4 27 2 7 False 6 Octahedral 18 1.129 -12.96 +THOCCR Cr 0 1 24 0 5 False 6 Octahedral 18 0.871 127.49 +TIBKOH Ni 0 1 28 2 8 False 4 Square planar 7 0.962 23.15 +TICJEX Fe 2 5 26 2 6 False 5 Square pyramidal 14 1.105 -32.87 +TICMAW Fe 0 5 26 2 6 False 4 Seesaw 9 1.035 -31.79 +TIDCAL Fe 0 5 26 2 6 False 6 Octahedral 18 1.134 -26.33 +TIGBIV Co 2 4 27 2 7 False 6 Octahedral 18 1.146 -16.01 +TIGGEW Ni -4 3 28 2 8 False 6 Octahedral 18 1.11 -52.76 +TIKYOC Mn 0 6 25 2 5 False 6 Octahedral 18 1.15 -41.07 +TILSUD Co 2 2 27 2 7 False 4 Square planar 7 0.998 15.43 +TINTUG Ni 0 1 28 2 8 False 4 Square planar 7 0.929 26.61 +TIQZIE Fe 0 4 26 3 5 False 5 Square pyramidal 14 0.982 1.43 +TIRDUU Mn 2 6 25 2 5 False 7 Pentagonal bipyramidal 23 1.16 -56.58 +TIRKAG Ni 0 1 28 0 8 True 4 Tetrahedral 8 1.043 59.46 +TIRKOU Ni 0 1 28 0 8 True 3 Trigonal planar 3 0.997 47.99 +TITRAQ Ni 0 3 28 2 8 False 5 Square pyramidal 14 1.094 -5.54 +TIVNUJ Ni 1 3 28 2 8 False 5 Trigonal bipyramidal 13 1.108 -11.73 +TIVZIJ Ni 0 1 28 2 8 False 4 Square planar 7 0.981 37.44 +TIZJES Mn 0 6 25 2 5 False 5 Square pyramidal 14 1.02 -65.83 +TOBBAP Ni 0 1 28 2 8 False 4 Square planar 7 0.943 42.82 +TOBWEO Ni 0 3 28 2 8 False 4 Seesaw 9 1.024 -34.36 +TOCSOV Fe -1 6 26 3 5 False 4 Tetrahedral 8 1.037 -21.69 +TODDUL Ni -2 1 28 2 8 False 4 Square planar 7 0.908 73.48 +TOHNEJ Cr 0 1 24 0 5 True 6 Octahedral 18 1.065 114.07 +TOKRAN Mn 0 6 25 2 5 False 4 Tetrahedral 8 0.991 -67.4 +TOLBEB Ni -1 1 28 2 8 False 5 Trigonal bipyramidal 13 0.94 25.73 +TOLMEO Mn 0 6 25 2 5 False 6 Octahedral 18 1.094 -45.95 +TOLTET Co 1 1 27 3 6 False 6 Octahedral 18 0.95 43.33 +TOLZOK Ni 0 1 28 2 8 False 3 Trigonal planar 3 0.901 11.77 +TOLZUQ Ni 0 3 28 2 8 False 4 Tetrahedral 8 1.007 -25.77 +TOPJEO Mn 2 6 25 2 5 False 7 Pentagonal bipyramidal 23 1.146 -57.73 +TOPJUF Mn 0 6 25 2 5 False 5 Square pyramidal 14 1.09 -51.65 +TOPKAM Mn 0 6 25 2 5 False 6 Trigonal prismatic 19 1.165 -56.86 +TOTGOY Co 0 4 27 2 7 False 4 Tetrahedral 8 1.017 -33.05 +TOWCEN Ni 0 3 28 2 8 False 5 Square pyramidal 14 1.091 -23.71 +TOWFAM Mn 0 1 25 1 6 True 6 Octahedral 18 0.983 134.13 +TRENCM Mn 1 6 25 2 5 False 5 Trigonal bipyramidal 13 1.079 -54.34 +TUDGII Ni 2 3 28 2 8 False 6 Octahedral 18 1.139 -43.0 +TUDJEH Mn 0 5 25 3 4 False 6 Octahedral 18 0.99 -27.36 +TUDJIL Cr -1 4 24 3 3 False 6 Octahedral 18 0.945 -21.54 +TUJWIE Ni 1 1 28 2 8 False 5 Square pyramidal 14 1.032 24.99 +TUKGUB Ni 0 3 28 2 8 False 5 Trigonal bipyramidal 13 1.078 -16.49 +TUMYUV Co 0 3 27 1 8 False 4 Tetrahedral 8 0.954 -36.42 +TUPMAV Ni 0 1 28 2 8 False 4 Square planar 7 0.954 40.92 +TUSBOZ Mn 0 6 25 2 5 False 7 Pentagonal bipyramidal 23 1.171 -59.08 +TUTJOH Cr -1 1 24 0 5 False 6 Octahedral 18 0.881 119.33 +TUTKEA Ni 1 3 28 2 8 False 6 Octahedral 18 1.115 -38.86 +TUTMAW Ni 0 3 28 2 8 False 6 Octahedral 18 1.119 -38.71 +TUTMUS Fe 1 1 26 2 6 False 6 Octahedral 18 0.936 47.07 +TUTPAB Fe 0 1 26 2 6 False 6 Octahedral 18 0.913 58.4 +UBEVOP Fe 0 1 26 2 6 False 6 Octahedral 18 0.922 59.21 +UBEXOQ Fe 2 5 26 2 6 False 7 Pentagonal bipyramidal 23 1.191 -50.35 +UBICEP Co 2 1 27 3 6 False 6 Octahedral 18 0.962 54.18 +UBODUK Mn 0 6 25 2 5 False 5 Square pyramidal 14 1.037 -53.98 +UBOFOG Mn 0 5 25 3 4 False 5 Square pyramidal 14 0.94 -53.09 +UBOMEG Fe 0 5 26 2 6 False 4 Tetrahedral 8 0.95 -37.69 +UBUBAU Fe 0 6 26 3 5 False 6 Octahedral 18 1.055 -14.35 +UCECEL Fe -1 4 26 3 5 False 5 Square pyramidal 14 0.935 13.02 +UCISAA Ni 0 3 28 2 8 False 6 Octahedral 18 1.117 -41.65 +UCIVOT Fe -2 6 26 3 5 False 5 Square pyramidal 14 0.97 -37.02 +UCIVUZ Fe -2 6 26 3 5 False 5 Trigonal bipyramidal 13 0.972 -39.81 +UCIWOS Fe 0 1 26 2 6 False 6 Octahedral 18 0.934 88.91 +UCOJIF Co 0 4 27 2 7 True 4 Tetrahedral 8 1.185 -8.75 +UCOMEE Cr 3 4 24 3 3 False 6 Octahedral 18 0.94 -23.42 +UDUGUY Mn 0 6 25 2 5 False 7 Pentagonal bipyramidal 23 1.15 -58.91 +UDUMEL Fe 1 5 26 2 6 False 6 Octahedral 18 1.119 -20.53 +UDURUJ Cr 0 5 24 2 4 False 4 Square planar 7 0.962 -62.98 +UDUSAQ Cr 0 5 24 2 4 False 4 Square planar 7 0.991 -64.7 +UFAWOO Cr 0 4 24 3 3 False 6 Octahedral 18 0.965 -22.25 +UFOYOF Co -1 4 27 2 7 False 4 Tetrahedral 8 0.983 -31.78 +UFUVUP Ni 1 3 28 2 8 False 6 Octahedral 18 1.116 -42.27 +UGEKAT Mn 1 6 25 2 5 False 7 Pentagonal bipyramidal 23 1.154 -59.59 +UGINOP Fe 0 5 26 2 6 False 4 Tetrahedral 8 1.047 -59.2 +UGODAW Ni 0 1 28 2 8 False 4 Square planar 7 0.955 30.71 +UGOLOT Fe 2 2 26 3 5 False 6 Octahedral 18 0.964 34.49 +UGUNUF Cr 0 4 24 3 3 False 6 Octahedral 18 0.969 -44.28 +UHEHAQ Fe 0 6 26 3 5 False 6 Octahedral 18 1.033 -13.02 +UHEPED Mn 2 6 25 2 5 False 7 Pentagonal bipyramidal 23 1.15 -58.28 +UHIBAP Fe 0 2 26 3 5 False 6 Octahedral 18 0.933 49.31 +UHIZAM Cr 0 4 24 3 3 False 6 Octahedral 18 0.968 -39.34 +UHOXOE Co 1 4 27 2 7 False 4 Tetrahedral 8 1.037 -31.31 +UJOLEK Co 0 1 27 3 6 False 6 Octahedral 18 0.971 52.49 +UJUPAR Co 1 4 27 2 7 False 5 Trigonal bipyramidal 13 1.11 -25.08 +UJUPOF Fe 1 5 26 2 6 False 5 Trigonal bipyramidal 13 1.093 -43.62 +UJUSOI Co 0 4 27 2 7 False 4 Tetrahedral 8 1.013 -27.59 +ULANIF Cr 0 1 24 0 5 True 5 Trigonal bipyramidal 13 0.962 137.35 +ULAYUC Cr 1 4 24 3 3 False 6 Octahedral 18 0.971 -42.59 +ULEVIQ Fe -1 4 26 3 5 False 5 Square pyramidal 14 0.945 3.81 +ULITUH Fe 0 5 26 2 6 False 5 Square pyramidal 14 1.114 -39.19 +ULONEP Co 3 1 27 3 6 False 6 Octahedral 18 0.998 64.71 +ULOVEY Fe 0 5 26 2 6 False 4 Tetrahedral 8 1.012 -52.94 +ULOVUO Fe 0 5 26 2 6 False 3 Trigonal planar 3 0.939 -35.18 +ULOXUQ Fe 0 5 26 2 6 False 3 Trigonal planar 3 0.962 -73.46 +UMIPIP Mn 2 6 25 2 5 False 6 Octahedral 18 1.109 -46.22 +UMIZUL Co 0 4 27 2 7 False 5 Trigonal bipyramidal 13 1.098 -13.19 +UMUBAF Ni 1 1 28 2 8 False 4 Square planar 7 0.931 35.08 +UMUJUK Co 0 4 27 2 7 False 4 Tetrahedral 8 0.986 -17.3 +UNEHIG Fe 1 5 26 2 6 False 4 Tetrahedral 8 1.042 -46.41 +UNEREL Cr 0 5 24 2 4 False 4 Square planar 7 0.996 -67.13 +UNILIN Ni 0 1 28 2 8 False 4 Square planar 7 0.924 32.96 +UNOFEJ Ni 0 1 28 2 8 False 4 Square planar 7 0.896 52.47 +UNOJIR Ni 0 1 28 2 8 True 2 Linear 0 1.035 29.88 +UNONOB Mn 0 6 25 2 5 False 7 Pentagonal bipyramidal 23 1.174 -63.1 +UPIDIH Ni 1 1 28 2 8 False 4 Square planar 7 0.981 49.04 +UPIFUV Fe 0 5 26 2 6 False 5 Square pyramidal 14 1.058 -33.42 +UPIMAI Fe 0 5 26 2 6 False 4 Tetrahedral 8 0.992 -39.81 +UQAREK Ni 0 1 28 2 8 False 4 Square planar 7 0.969 16.8 +URIRUL Ni 0 1 28 2 8 False 6 Octahedral 18 1.148 26.77 +URUKIC Co 0 1 27 1 8 True 4 Tetrahedral 8 0.967 58.8 +URUKUO Co 0 1 27 1 8 True 4 Tetrahedral 8 1.009 40.76 +USORUS Ni 1 3 28 2 8 False 6 Octahedral 18 1.121 -41.79 +UTEMIR Ni 0 1 28 2 8 False 4 Square planar 7 0.89 38.93 +UTEMOX Ni 0 1 28 2 8 False 4 Square planar 7 0.894 35.29 +UTODAK Mn 0 1 25 1 6 False 6 Octahedral 18 0.878 107.22 +UWIFOW Ni 1 3 28 2 8 False 6 Octahedral 18 1.145 -39.45 +UWIPEW Ni 0 3 28 2 8 False 5 Trigonal bipyramidal 13 1.132 -32.21 +UWIPOG Ni 0 3 28 2 8 False 5 Square pyramidal 14 1.102 -24.56 +UWUYER Cr 0 4 24 3 3 False 5 Square pyramidal 14 0.924 -21.84 +UXOBEQ Ni 0 3 28 2 8 False 4 Tetrahedral 8 1.011 -38.54 +UXOHAS02 Ni 0 3 28 2 8 False 4 Tetrahedral 8 1.027 -37.46 +UYAHOS Mn 0 6 25 2 5 False 6 Trigonal prismatic 19 1.099 -38.7 +UYAKAI Cr 0 4 24 3 3 False 6 Octahedral 18 0.946 -21.42 +UYIFUF02 Co 0 4 27 2 7 False 4 Tetrahedral 8 1.029 -17.36 +UZEVUR Mn 1 5 25 3 4 False 5 Square pyramidal 14 0.985 -48.33 +UZEXON Co 0 3 27 1 8 False 3 Trigonal planar 3 0.98 -18.86 +UZEXUT Co 0 3 27 1 8 True 2 Linear 0 1.096 -25.29 +UZEYEE Co 0 1 27 1 8 False 4 Square planar 7 0.889 36.94 +VABFIQ Fe 0 5 26 2 6 False 5 Trigonal bipyramidal 13 1.067 -43.77 +VABKUE Co 2 1 27 3 6 False 6 Octahedral 18 1.022 68.98 +VABTOH Cr 0 5 24 2 4 False 4 Square planar 7 1.023 -59.72 +VADBOR Cr 0 1 24 0 5 True 6 Octahedral 18 0.981 140.94 +VADLUH Ni 0 1 28 0 8 True 2 Linear 0 1.08 52.42 +VAFDIR Cr 0 4 24 3 3 False 6 Octahedral 18 0.958 -19.7 +VAFHAM Co 0 1 27 1 8 False 5 Trigonal bipyramidal 13 0.893 58.47 +VAHGES Fe 1 5 26 2 6 False 6 Trigonal prismatic 19 1.152 -35.94 +VAHGOC Co 1 4 27 2 7 False 6 Octahedral 18 1.141 -15.24 +VAKYOX Fe 2 5 26 2 6 False 5 Trigonal bipyramidal 13 1.075 -36.13 +VAMNAY Cr 0 5 24 2 4 False 4 Square planar 7 0.978 -65.09 +VAPCAR Co 0 4 27 2 7 False 5 Square pyramidal 14 1.093 -22.1 +VAPFEY Co 0 4 27 2 7 False 5 Trigonal bipyramidal 13 1.086 -21.02 +VAQFAU Cr 0 5 24 2 4 False 6 Octahedral 18 1.122 -61.72 +VARVIU Co 3 1 27 3 6 False 6 Octahedral 18 0.982 69.89 +VAVDOM Mn 1 6 25 2 5 False 6 Trigonal prismatic 19 1.105 -60.82 +VAWNIQ Mn 0 5 25 3 4 False 5 Trigonal bipyramidal 13 0.942 -58.59 +VAYWEY Mn 0 6 25 2 5 False 4 Tetrahedral 8 0.975 -82.89 +VEBKAQ Co 0 4 27 2 7 False 4 Tetrahedral 8 1.003 -31.0 +VECTUU Co 0 4 27 2 7 False 4 Tetrahedral 8 1.013 -30.2 +VEDXOS Co 0 4 27 2 7 False 4 Tetrahedral 8 1.015 -23.92 +VEGCEQ Fe 1 2 26 3 5 False 6 Octahedral 18 0.967 34.42 +VEHDOC Ni 0 1 28 2 8 True 3 Trigonal planar 3 1.088 23.69 +VEKNAA Fe -1 5 26 2 6 False 5 Square pyramidal 14 1.078 -45.55 +VEKNEE Co -1 4 27 2 7 False 5 Square pyramidal 14 1.114 -22.73 +VEKNOO Fe -2 4 26 3 5 False 5 Square pyramidal 14 0.947 -5.17 +VEKNUU Fe 0 6 26 3 5 False 6 Octahedral 18 1.078 -8.03 +VEMYOB Fe 0 6 26 3 5 False 4 Tetrahedral 8 0.888 -48.08 +VENGUS Fe 0 6 26 3 5 False 6 Octahedral 18 1.042 -17.45 +VENJOO Co 0 4 27 2 7 False 7 Pentagonal bipyramidal 23 1.188 -27.76 +VENTAL Co 0 4 27 2 7 False 4 Seesaw 9 1.044 -14.3 +VESZUP Co 0 1 27 3 6 False 6 Octahedral 18 0.941 49.95 +VEWDIN Ni 0 1 28 2 8 False 4 Square planar 7 0.938 22.55 +VEWKIU Cr 0 4 24 3 3 False 6 Octahedral 18 0.962 -37.48 +VEWQUK Ni 0 3 28 2 8 False 4 Seesaw 9 1.006 -10.66 +VEWVEZ Ni 0 3 28 2 8 False 5 Square pyramidal 14 1.093 -23.11 +VEXLIU Co 0 2 27 2 7 False 4 Square planar 7 0.92 29.93 +VEXWON Cr 1 4 24 3 3 False 6 Octahedral 18 0.946 -31.9 +VEXXIH Ni 0 3 28 2 8 False 4 Tetrahedral 8 0.99 -39.47 +VEYTAW Fe -1 5 26 2 6 False 3 Trigonal planar 3 0.914 -71.94 +VEYTAX Ni 0 1 28 2 8 False 4 Square planar 7 0.973 20.67 +VEYTEB Ni 0 1 28 2 8 False 4 Square planar 7 0.928 29.75 +VEYWOO Fe 0 5 26 2 6 False 5 Square pyramidal 14 1.057 -38.4 +VEYXOP Co 0 3 27 1 8 False 3 T-shaped 6 0.998 -30.03 +VIBPOM Ni 1 1 28 2 8 False 4 Square planar 7 0.924 45.98 +VIBRIK Fe 0 5 26 2 6 False 4 Tetrahedral 8 1.011 -52.83 +VIBWUZ Ni 0 1 28 2 8 False 4 Square planar 7 0.923 23.84 +VIDMIH Co 1 1 27 3 6 False 6 Octahedral 18 0.987 85.19 +VIFKED Fe 0 4 26 3 5 False 5 Square pyramidal 14 0.952 6.23 +VIFWUD Mn 0 6 25 2 5 False 6 Octahedral 18 1.107 -51.49 +VIGLOP Ni 0 1 28 2 8 False 4 Square planar 7 0.948 38.51 +VIHXAN Ni 2 3 28 2 8 False 6 Octahedral 18 1.129 -42.05 +VIJQUB Fe 0 6 26 3 5 False 6 Octahedral 18 1.047 -17.34 +VIJVIT Ni -2 1 28 2 8 False 4 Square planar 7 0.923 24.03 +VIKYOE Cr 1 5 24 2 4 False 4 Square planar 7 1.037 -66.96 +VILRIT Fe 0 6 26 3 5 False 5 Trigonal bipyramidal 13 0.994 -34.12 +VILVIX Co -2 4 27 2 7 False 4 Tetrahedral 8 0.978 -17.42 +VISVEA Fe 0 5 26 2 6 False 4 Tetrahedral 8 1.014 -51.68 +VIVGIQ Co 0 1 27 3 6 True 4 Tetrahedral 8 1.03 46.46 +VIWQEX Co -1 3 27 3 6 False 4 Square planar 7 0.893 20.37 +VOBYEQ Fe -1 6 26 3 5 False 6 Octahedral 18 1.03 -16.53 +VOCBAQ Fe -2 6 26 3 5 False 6 Octahedral 18 1.036 -23.27 +VOCTIQ Cr 0 4 24 3 3 False 4 Tetrahedral 8 0.905 -16.65 +VOGGOO Ni 0 1 28 2 8 False 4 Square planar 7 0.987 43.65 +VOGHIJ Fe 0 1 26 2 6 True 3 Trigonal planar 3 1.042 61.76 +VOGYOG Cr 0 4 24 3 3 False 6 Octahedral 18 0.953 -39.99 +VOGYUM Cr -1 4 24 3 3 False 6 Octahedral 18 0.96 -38.72 +VOPCIM Ni 0 1 28 2 8 False 4 Square planar 7 0.956 22.81 +VOPPAR Fe 0 6 26 3 5 False 6 Octahedral 18 1.02 -22.47 +VOPPEV Fe 0 6 26 3 5 False 6 Octahedral 18 1.013 -22.12 +VOVDIT Fe 0 5 26 2 6 False 5 Trigonal bipyramidal 13 1.058 -37.91 +VOWRAA Cr -1 1 24 0 5 False 6 Octahedral 18 0.856 131.67 +VOYFIA Co 0 3 27 3 6 False 5 Trigonal bipyramidal 13 0.986 -1.92 +VOYJEY Cr 0 1 24 0 5 False 6 Octahedral 18 0.84 171.67 +VUCFAA Mn 0 1 25 1 6 False 6 Octahedral 18 0.845 137.44 +VUCPIU Co 0 4 27 2 7 False 3 Trigonal planar 3 1.018 -26.57 +VUCYAV Co 1 4 27 2 7 False 6 Trigonal prismatic 19 1.193 -24.79 +VUDCEF Ni 1 1 28 2 8 True 3 Trigonal planar 3 1.005 46.0 +VUDDON Ni 0 1 28 2 8 False 5 Square pyramidal 14 0.997 21.86 +VUDXOH Fe 0 1 26 2 6 False 6 Octahedral 18 0.94 41.89 +VUJLOC Fe 0 1 26 2 6 False 6 Octahedral 18 0.948 56.46 +VUJMAP Fe 0 1 26 2 6 False 6 Octahedral 18 0.935 94.46 +VUJPIZ Co 0 1 27 1 8 False 5 Square pyramidal 14 0.878 40.89 +VULMOE Mn 0 5 25 3 4 False 5 Trigonal bipyramidal 13 1.015 -76.37 +VUMCIP Ni 0 1 28 2 8 False 4 Square planar 7 0.968 17.42 +VUMFOA01 Fe 0 5 26 2 6 False 4 Tetrahedral 8 0.972 -52.54 +VUMSUT Mn 0 5 25 3 4 False 6 Octahedral 18 0.986 -61.55 +VUTSUY Ni 0 3 28 2 8 False 4 Tetrahedral 8 0.998 -22.82 +VUTTAH Cr 0 3 24 2 4 False 6 Octahedral 18 0.935 15.33 +WABGOW Ni 0 2 28 3 7 False 6 Octahedral 18 0.984 31.22 +WABMOB Mn 0 6 25 2 5 False 7 Pentagonal bipyramidal 23 1.143 -60.7 +WABZAC Ni 0 1 28 2 8 False 5 Square pyramidal 14 1.003 36.19 +WACDAF Mn 0 5 25 3 4 False 5 Trigonal bipyramidal 13 0.935 -36.56 +WAFWEJ Fe 0 5 26 2 6 False 5 Trigonal bipyramidal 13 1.065 -50.66 +WAFZUA Cr 0 4 24 3 3 True 4 Tetrahedral 8 1.03 -31.38 +WAGHET Cr 0 4 24 3 3 False 6 Octahedral 18 0.945 -21.24 +WAHQEE Co 0 4 27 2 7 False 4 Tetrahedral 8 1.012 -29.29 +WAJGUL Fe -1 5 26 2 6 False 5 Trigonal bipyramidal 13 1.062 -44.14 +WALJOL Ni 0 1 28 0 8 False 4 Tetrahedral 8 0.889 75.63 +WALJUR Ni 0 1 28 0 8 False 4 Tetrahedral 8 0.922 58.37 +WAMLEC Mn 0 6 25 2 5 False 6 Octahedral 18 1.089 -51.01 +WAMYAL Co 0 4 27 2 7 False 6 Octahedral 18 1.123 -8.22 +WAQVIT Ni 0 1 28 2 8 False 4 Square planar 7 0.894 41.34 +WASDOM Mn 1 6 25 2 5 False 5 Square pyramidal 14 1.064 -55.78 +WATSUF Co 0 1 27 3 6 False 5 Square pyramidal 14 0.952 51.97 +WAVTOF Ni 0 1 28 0 8 False 4 Tetrahedral 8 0.894 73.35 +WAVVEX Ni 0 1 28 0 8 False 3 Trigonal planar 3 0.883 50.18 +WAVWEY Fe 0 1 26 2 6 True 4 Seesaw 9 0.957 85.8 +WAWSEU Mn 0 1 25 1 6 True 4 Tetrahedral 8 0.925 129.95 +WAXJIQ Mn 0 6 25 2 5 False 7 Capped trigonal prismatic 25 1.165 -52.31 +WAZWEC Fe 0 1 26 2 6 False 6 Octahedral 18 0.898 86.03 +WEFCIT Mn 0 6 25 2 5 False 4 Tetrahedral 8 0.966 -67.61 +WEFCOZ Mn 0 6 25 2 5 False 4 Tetrahedral 8 0.946 -75.88 +WEHFOE Ni 0 1 28 2 8 True 3 T-shaped 6 1.083 21.39 +WEHWAI Fe -1 5 26 2 6 False 4 Tetrahedral 8 0.985 -57.65 +WEHZER Fe 0 5 26 2 6 True 4 Tetrahedral 8 1.197 -23.53 +WEJKOL Ni 0 1 28 2 8 False 4 Square planar 7 0.94 30.93 +WELKED Co 0 1 27 3 6 True 4 Tetrahedral 8 1.032 98.17 +WELPIM Co 1 1 27 3 6 False 6 Octahedral 18 0.946 82.67 +WELREL Ni 0 3 28 2 8 False 5 Square pyramidal 14 1.119 -27.45 +WEMNIM Co 1 1 27 3 6 False 6 Octahedral 18 0.985 53.83 +WEMVUH Fe 0 1 26 2 6 False 6 Octahedral 18 0.931 94.64 +WEMWAO Fe 0 1 26 2 6 False 5 Square pyramidal 14 0.851 66.45 +WEPVOC Ni 0 1 28 0 8 True 3 Trigonal planar 3 0.949 69.5 +WERHUZ Mn 0 6 25 2 5 False 5 Square pyramidal 14 1.041 -49.34 +WERKIN Co -3 1 27 3 6 False 6 Octahedral 18 0.995 88.31 +WEXYIH Mn 0 6 25 2 5 False 6 Octahedral 18 1.106 -49.1 +WIBLUO Mn 0 1 25 1 6 False 6 Octahedral 18 0.844 125.15 +WIFSEJ Mn 0 6 25 2 5 False 6 Octahedral 18 1.094 -42.41 +WIGMAA Co 0 4 27 2 7 False 4 Tetrahedral 8 1.073 -23.84 +WIGXUI Co 0 4 27 2 7 False 5 Trigonal bipyramidal 13 1.075 -21.98 +WIHFEB Fe 2 2 26 3 5 False 6 Octahedral 18 0.944 35.87 +WIJLUZ Ni 0 1 28 2 8 False 4 Square planar 7 0.966 55.93 +WIMNIR Cr 0 4 24 3 3 False 6 Octahedral 18 0.961 -42.39 +WISHUE Fe 0 6 26 3 5 False 6 Octahedral 18 1.047 -22.54 +WITBEJ Fe 0 5 26 2 6 False 6 Octahedral 18 1.121 -31.27 +WITBOT Mn 0 6 25 2 5 False 5 Square pyramidal 14 1.081 -49.44 +WIVDUB Mn 0 5 25 3 4 False 6 Octahedral 18 0.981 -50.36 +WIVQIC Co 0 4 27 2 7 False 5 Square pyramidal 14 1.106 -8.53 +WIVQOI Ni 0 3 28 2 8 False 5 Square pyramidal 14 1.091 -22.78 +WIWJOD Co 0 4 27 2 7 False 5 Trigonal bipyramidal 13 1.09 -31.31 +WIYCUF Ni 0 1 28 2 8 False 4 Square planar 7 0.895 59.7 +WIYSII Fe 0 6 26 3 5 False 5 Square pyramidal 14 0.975 -27.02 +WOBXER Fe 1 6 26 3 5 False 6 Octahedral 18 1.061 -15.77 +WOFREP Co 0 4 27 2 7 False 4 Tetrahedral 8 1.022 -19.51 +WOGMEL Fe 2 1 26 2 6 False 6 Octahedral 18 0.917 69.14 +WOJLUC Fe 2 5 26 2 6 False 7 Capped trigonal prismatic 25 1.211 -38.06 +WOKCEE Ni -1 2 28 3 7 False 4 Square planar 7 0.885 39.79 +WOKYOL Co 0 1 27 1 8 False 5 Trigonal bipyramidal 13 0.928 12.48 +WOPGIS Mn -1 5 25 3 4 False 5 Square pyramidal 14 0.95 -51.74 +WOTRUU Mn 0 6 25 2 5 False 5 Square pyramidal 14 1.037 -62.94 +WOVMAY Mn -1 1 25 1 6 True 2 Linear 0 0.964 75.64 +WOWTOR Ni 2 1 28 2 8 False 4 Square planar 7 0.964 33.1 +WOZHUQ Ni 0 1 28 2 8 True 3 Trigonal planar 3 1.006 45.15 +WUBGEI Ni 0 2 28 3 7 False 5 Square pyramidal 14 1.03 54.75 +WUFFAF Mn 0 6 25 2 5 False 5 Trigonal bipyramidal 13 1.05 -52.56 +WUFVIC Cr 0 4 24 3 3 True 4 Tetrahedral 8 1.034 -28.11 +WUFVOI Cr 0 4 24 3 3 True 4 Tetrahedral 8 1.05 -32.29 +WUGCAD Mn 0 6 25 2 5 False 2 Bent (V-shape, 109.47°) 1 0.913 -56.0 +WUGCIL Mn 0 6 25 2 5 False 3 Trigonal planar 3 0.968 -62.08 +WUKDOV Cr 1 4 24 3 3 False 5 Trigonal bipyramidal 13 0.942 -35.36 +WULSEB Fe 1 5 26 2 6 False 6 Octahedral 18 1.11 -25.09 +WULSIF Mn 1 6 25 2 5 False 6 Trigonal prismatic 19 1.108 -45.88 +WUMPOL Fe 0 5 26 2 6 False 5 Trigonal bipyramidal 13 1.08 -32.78 +WUNCAK Cr 0 5 24 2 4 False 5 Square pyramidal 14 1.037 -68.36 +WUNCEO Cr 1 5 24 2 4 False 5 Square pyramidal 14 1.042 -74.57 +WUPWOU Ni 2 3 28 2 8 False 5 Trigonal bipyramidal 13 1.08 -17.19 +WURXOZ Mn -2 6 25 2 5 False 4 Tetrahedral 8 0.938 -77.92 +WUSFEX Fe 0 5 26 2 6 False 4 Tetrahedral 8 0.985 -41.95 +WUTDAQ Fe 0 1 26 2 6 False 6 Octahedral 18 0.905 64.06 +WUTDEW Cr 2 5 24 2 4 False 6 Octahedral 18 1.068 -48.04 +WUXVOA Ni 0 3 28 2 8 False 3 Trigonal planar 3 0.97 -6.15 +WUYFIH Mn -3 3 25 3 4 False 6 Octahedral 18 0.911 6.63 +XABHIV Fe 1 1 26 2 6 False 6 Octahedral 18 0.856 166.1 +XADCIP Ni 0 1 28 2 8 False 4 Seesaw 9 0.903 11.03 +XADCOV Ni 0 3 28 2 8 False 4 Tetrahedral 8 1.003 -32.38 +XADMAR Ni 1 3 28 2 8 False 6 Octahedral 18 1.126 -43.57 +XAGLAU Mn 1 6 25 2 5 False 7 Capped trigonal prismatic 25 1.188 -55.08 +XAHLEY Mn 0 6 25 2 5 False 5 Trigonal bipyramidal 13 1.047 -54.68 +XAHLOI Mn 0 6 25 2 5 False 7 Pentagonal bipyramidal 23 1.16 -49.37 +XAJWOU Ni 0 1 28 2 8 False 4 Square planar 7 0.929 41.55 +XAKHOI Fe -2 5 26 2 6 False 6 Octahedral 18 1.118 -30.95 +XAKPUU Co 4 1 27 3 6 False 6 Octahedral 18 0.999 73.49 +XARGON Ni 0 3 28 2 8 False 4 Tetrahedral 8 0.996 -39.42 +XAWJUB Ni 0 2 28 3 7 True 3 Trigonal planar 3 1.031 38.64 +XAWVEX Ni 0 1 28 2 8 False 4 Square planar 7 0.968 23.16 +XAXYEC Fe 0 1 26 2 6 False 6 Octahedral 18 0.898 103.19 +XEFXEM Cr 0 1 24 2 4 True 3 Trigonal planar 3 1.009 70.54 +XEFYAJ Cr 1 2 24 3 3 True 3 Trigonal planar 3 1.026 25.51 +XEGPEF Ni 0 1 28 2 8 False 4 Square planar 7 0.952 45.3 +XEHSOV Co 0 3 27 3 6 False 4 Square planar 7 0.9 35.49 +XEHYER Mn 0 6 25 2 5 False 6 Trigonal prismatic 19 1.162 -51.64 +XEKKUT Co 0 1 27 1 8 True 3 Trigonal planar 3 1.045 20.91 +XELNAD Mn 1 5 25 3 4 False 6 Octahedral 18 1.017 -42.51 +XEMSAK Cr 0 5 24 2 4 False 4 Square planar 7 1.009 -56.12 +XENBIE Ni 2 3 28 2 8 False 6 Octahedral 18 1.093 -53.54 +XENPAI Fe 1 2 26 3 5 False 6 Octahedral 18 0.934 55.2 +XESMUG Fe -2 1 26 2 6 False 6 Octahedral 18 0.883 130.22 +XETGUY Cr -1 4 24 3 3 False 6 Octahedral 18 0.953 -21.35 +XEVKIU Fe 2 5 26 2 6 False 6 Octahedral 18 1.128 -13.33 +XEVMAN Fe 1 1 26 2 6 True 4 Tetrahedral 8 0.968 94.03 +XEYZEH Ni 2 3 28 2 8 False 6 Octahedral 18 1.148 -29.28 +XEZMEU Fe 0 5 26 2 6 False 7 Pentagonal bipyramidal 23 1.15 -23.58 +XEZNUM Mn 0 6 25 2 5 False 5 Trigonal bipyramidal 13 1.073 -64.32 +XEZTEE Mn 0 6 25 2 5 False 6 Octahedral 18 1.104 -58.93 +XEZWOQ Co 0 4 27 2 7 False 4 Tetrahedral 8 0.998 -27.12 +XEZZUX Fe 1 2 26 3 5 False 6 Octahedral 18 0.949 38.51 +XIBBAL Fe 1 2 26 3 5 False 6 Octahedral 18 0.946 52.9 +XIBNUS Co 0 2 27 2 7 True 2 Linear 0 1.013 33.17 +XIDNON Mn 0 6 25 2 5 False 7 Pentagonal bipyramidal 23 1.163 -59.99 +XIFPAD Ni 0 1 28 2 8 True 2 Linear 0 1.077 16.7 +XIHVIT Fe -2 1 26 2 6 False 6 Octahedral 18 0.883 136.86 +XILJEH Cr 0 5 24 2 4 True 4 Tetrahedral 8 1.131 -34.04 +XILTIV Fe 0 1 26 2 6 False 6 Octahedral 18 0.9 96.81 +XIMHAD Mn 0 6 25 2 5 False 7 Pentagonal bipyramidal 23 1.165 -58.23 +XIMROB Ni 0 3 28 2 8 False 4 Tetrahedral 8 0.996 -29.29 +XIMSAO Fe -2 5 26 2 6 False 4 Tetrahedral 8 0.948 -63.42 +XIMYUO Ni 0 3 28 2 8 False 4 Tetrahedral 8 0.971 -25.58 +XITQEX Co 0 2 27 2 7 False 6 Octahedral 18 1.09 30.68 +XITQIB Co 0 2 27 2 7 False 6 Octahedral 18 1.071 30.24 +XIVKOD Co 1 4 27 2 7 False 5 Trigonal bipyramidal 13 1.093 -28.19 +XIWBEK Cr 1 4 24 3 3 False 6 Octahedral 18 0.965 -22.17 +XIXTAA Ni 0 3 28 2 8 False 4 Tetrahedral 8 0.981 -19.74 +XIXTEE Ni 0 1 28 2 8 False 4 Square planar 7 0.919 48.05 +XIXTII Ni 0 3 28 2 8 False 5 Square pyramidal 14 1.073 -20.23 +XIYMEY Co 2 4 27 2 7 False 6 Octahedral 18 1.12 -22.02 +XIYPAY Fe -2 5 26 2 6 False 4 Square planar 7 1.0 -48.96 +XOBBIZ Fe 0 5 26 2 6 False 4 Tetrahedral 8 1.011 -56.03 +XOCJAB Ni 0 1 28 2 8 False 4 Square planar 7 0.975 45.94 +XOCJUV Ni 0 1 28 2 8 False 4 Square planar 7 0.948 48.34 +XOCNUY Cr 0 1 24 0 5 False 6 Octahedral 18 0.879 116.0 +XOFDUR Fe 1 6 26 3 5 False 6 Octahedral 18 1.042 -17.55 +XOGXAS Co 0 4 27 2 7 False 5 Square pyramidal 14 1.091 -6.75 +XOMCOS Fe 0 5 26 2 6 False 5 Square pyramidal 14 1.055 -33.83 +XONCEJ Co 0 3 27 1 8 False 4 Tetrahedral 8 0.971 -34.71 +XOPSEB Fe 1 1 26 2 6 False 6 Octahedral 18 0.955 73.84 +XOQVAC Co 0 1 27 3 6 False 6 Octahedral 18 0.993 54.69 +XOQZOT Ni 1 3 28 2 8 False 5 Square pyramidal 14 1.094 -17.72 +XOTGOC Ni 0 3 28 2 8 False 4 Tetrahedral 8 1.018 -20.39 +XOZXIV Ni 0 1 28 2 8 False 4 Square planar 7 0.95 40.09 +XUBJEK Ni 0 1 28 0 8 False 4 Tetrahedral 8 0.862 67.2 +XUBMUF Co 2 4 27 2 7 False 6 Pentagonal pyramidal 17 1.214 -38.42 +XUJXOP Cr 1 4 24 3 3 False 6 Octahedral 18 0.96 -37.47 +XUKHOC Ni 0 1 28 2 8 False 4 Square planar 7 0.931 31.36 +XULXAG Ni 0 1 28 2 8 False 4 Square planar 7 0.927 31.04 +XUNTAB Co 0 4 27 2 7 False 3 Trigonal planar 3 0.927 -10.43 +XUPJOI Fe 0 1 26 2 6 False 6 Octahedral 18 0.906 99.9 +XUPRAB Co 0 4 27 2 7 False 4 Tetrahedral 8 0.991 -25.78 +XUPREF Co 0 4 27 2 7 False 4 Tetrahedral 8 0.997 -13.51 +XUPSIL Ni 0 1 28 2 8 False 4 Square planar 7 0.948 26.46 +XUQXEO Ni 0 3 28 2 8 False 7 Pentagonal bipyramidal 23 1.227 -26.45 +XUSCIY Co 1 1 27 1 8 True 4 Tetrahedral 8 0.892 25.32 +XUVTIR Mn 1 1 25 1 6 True 4 Tetrahedral 8 0.935 114.26 +XUVVAN Co 0 4 27 2 7 False 7 Pentagonal bipyramidal 23 1.216 -17.88 +XUWPAH Ni 0 3 28 2 8 False 6 Octahedral 18 1.123 -29.94 +XUYWAQ Ni 1 1 28 2 8 False 4 Square planar 7 0.937 32.74 +YABLIW Ni 0 1 28 2 8 False 4 Square planar 7 0.921 47.9 +YABPEW Ni 0 1 28 2 8 False 4 Square planar 7 0.947 36.93 +YADKET Ni 0 1 28 2 8 False 5 Square pyramidal 14 0.998 23.97 +YAGBIR Mn 0 5 25 3 4 False 5 Square pyramidal 14 0.924 -46.82 +YAJLAW Fe 0 5 26 2 6 False 6 Octahedral 18 1.095 -16.51 +YAJLEA Fe 0 5 26 2 6 False 6 Octahedral 18 1.108 -15.89 +YAKFOG Cr 0 4 24 3 3 False 6 Octahedral 18 0.961 -20.94 +YAKGAT Cr 0 4 24 3 3 False 6 Octahedral 18 0.954 -21.23 +YALHUP Co 0 3 27 1 8 False 4 Seesaw 9 1.099 -44.53 +YALZET Co 1 4 27 2 7 False 6 Octahedral 18 1.138 -12.78 +YANKOQ Mn 2 6 25 2 5 False 6 Octahedral 18 1.122 -33.16 +YANKUW Fe 2 5 26 2 6 False 6 Octahedral 18 1.135 -6.16 +YAPGUS Ni 0 1 28 2 8 False 4 Square planar 7 0.935 20.62 +YAPZIA Ni 0 3 28 2 8 False 5 Trigonal bipyramidal 13 1.08 -27.23 +YAQBEA Fe 1 2 26 3 5 False 6 Octahedral 18 0.956 70.48 +YAQLOR Cr 0 3 24 2 4 True 2 Linear 0 1.055 -3.77 +YAQMEI Cr 0 4 24 3 3 True 4 Tetrahedral 8 1.071 -19.14 +YARTIW Cr -3 4 24 3 3 False 6 Octahedral 18 0.974 -43.66 +YASHOP Cr -2 4 24 3 3 False 6 Octahedral 18 0.951 -47.86 +YASHUV Fe -2 6 26 3 5 False 6 Octahedral 18 1.026 -23.15 +YASPUE Fe 0 5 26 2 6 False 6 Octahedral 18 1.112 -22.58 +YATQER Cr 0 4 24 3 3 False 6 Octahedral 18 0.937 -21.55 +YAWWEZ Ni 0 1 28 2 8 True 5 Trigonal bipyramidal 13 1.023 48.73 +YECRII Fe 0 5 26 2 6 False 4 Tetrahedral 8 1.017 -56.9 +YECSIK Ni 1 3 28 2 8 False 5 Square pyramidal 14 1.063 -15.63 +YECSOQ Mn 1 6 25 2 5 False 5 Trigonal bipyramidal 13 1.068 -47.84 +YECSUW Co 1 4 27 2 7 False 5 Trigonal bipyramidal 13 1.087 -13.83 +YEDTAC Co 0 1 27 3 6 True 4 Tetrahedral 8 1.052 43.84 +YEFFOE Cr 0 4 24 3 3 False 6 Octahedral 18 0.968 -17.9 +YEHDUM Fe 0 6 26 3 5 False 5 Trigonal bipyramidal 13 1.063 -36.87 +YEJJIG Cr 0 4 24 3 3 False 5 Square pyramidal 14 0.919 -34.82 +YEJWAM Cr 0 1 24 0 5 False 6 Octahedral 18 0.861 155.41 +YEKLOQ Cr 0 4 24 3 3 False 6 Octahedral 18 1.012 -21.08 +YEKLUW Cr 0 4 24 3 3 False 6 Octahedral 18 0.972 -20.62 +YELWAN Ni 2 3 28 2 8 False 6 Octahedral 18 1.133 -29.45 +YEQTOE Fe 0 1 26 2 6 False 6 Octahedral 18 0.882 115.39 +YEQZID Co 0 4 27 2 7 False 4 Tetrahedral 8 1.033 -14.2 +YETBOP Co 1 1 27 3 6 False 6 Octahedral 18 0.986 61.82 +YETBUV Co 1 1 27 3 6 False 6 Octahedral 18 0.971 70.33 +YETCAC Co 3 1 27 3 6 False 6 Octahedral 18 1.006 79.14 +YETCEG Co 1 1 27 3 6 False 6 Octahedral 18 0.978 63.48 +YETCIK Co 2 1 27 3 6 False 6 Octahedral 18 0.989 75.12 +YETYOM Ni -1 2 28 3 7 False 5 Trigonal bipyramidal 13 0.949 25.68 +YEWSOI Fe 0 5 26 2 6 False 4 Tetrahedral 8 0.977 -32.71 +YEWSUO Fe 0 5 26 2 6 False 4 Tetrahedral 8 0.975 -33.63 +YEXVAA Co 0 1 27 3 6 False 6 Octahedral 18 0.99 91.2 +YEXVEE Co 0 1 27 3 6 False 6 Octahedral 18 1.01 87.01 +YEZLEU Co 0 2 27 2 7 False 6 Octahedral 18 0.991 54.37 +YEZYUZ Cr 0 4 24 3 3 False 6 Octahedral 18 0.98 -21.53 +YIBHUM Mn -2 6 25 2 5 False 4 Tetrahedral 8 0.973 -73.34 +YIJDED Mn 1 6 25 2 5 False 6 Octahedral 18 1.096 -52.7 +YIJGII Ni 0 1 28 2 8 False 4 Square planar 7 0.915 27.12 +YIKVUJ Cr 1 4 24 3 3 False 6 Octahedral 18 0.953 -35.63 +YIKVUM Co 0 3 27 1 8 False 4 Seesaw 9 1.001 -26.44 +YILLAH Fe -1 6 26 3 5 False 6 Octahedral 18 1.044 -22.2 +YINCOO Co 0 4 27 2 7 False 4 Tetrahedral 8 0.994 -32.87 +YISQAT Co 0 1 27 3 6 False 6 Octahedral 18 0.977 90.18 +YITNAR Fe -1 2 26 3 5 False 6 Octahedral 18 0.925 77.05 +YITRUO Fe 1 2 26 3 5 False 5 Square pyramidal 14 0.885 57.53 +YITVON Fe 0 6 26 3 5 False 6 Octahedral 18 1.027 -16.37 +YIXFER Co 0 1 27 1 8 True 5 Trigonal bipyramidal 13 0.967 33.14 +YIYDAM Ni 0 1 28 2 8 False 4 Square planar 7 0.897 34.95 +YIZNOL Mn 0 6 25 2 5 False 4 Seesaw 9 1.065 -56.75 +YIZZIR Co 0 2 27 2 7 True 2 Linear 0 1.089 29.88 +YOBCUO Ni 0 3 28 2 8 False 4 Seesaw 9 1.03 -23.79 +YOJKEN Cr 0 4 24 3 3 True 4 Tetrahedral 8 1.076 -37.11 +YOJKIR Cr -1 4 24 3 3 True 4 Tetrahedral 8 0.999 -22.02 +YOJQEU Ni 0 3 28 2 8 False 4 Tetrahedral 8 0.965 -37.76 +YOJQIY Ni 0 3 28 2 8 False 4 Tetrahedral 8 0.952 -36.63 +YOJVOJ Fe 0 5 26 2 6 False 4 Tetrahedral 8 0.965 -42.03 +YOLDAG Ni -1 1 28 2 8 False 3 T-shaped 6 0.944 20.73 +YONHAK Cr 0 1 24 0 5 True 5 Trigonal bipyramidal 13 1.035 116.44 +YONWUT Mn -1 6 25 2 5 False 4 Tetrahedral 8 0.97 -71.25 +YORSEE Fe 1 5 26 2 6 False 5 Square pyramidal 14 1.048 -30.77 +YOSKAV Co 0 2 27 2 7 True 2 Linear 0 1.048 39.55 +YOWZOB Fe 0 5 26 2 6 False 4 Tetrahedral 8 1.036 -39.08 +YOYVOY Mn 0 6 25 2 5 False 6 Octahedral 18 1.102 -39.81 +YOYXES Ni 0 1 28 2 8 False 4 Square planar 7 0.951 44.88 +YOZRAG Fe -2 6 26 3 5 False 5 Trigonal bipyramidal 13 0.978 -43.04 +YOZYIW Fe 0 1 26 2 6 False 6 Octahedral 18 0.89 95.44 +YOZZET Fe 0 1 26 2 6 False 6 Octahedral 18 0.93 76.41 +YUBDAB Fe 0 5 26 2 6 False 4 Tetrahedral 8 0.989 -44.13 +YUDFOS Mn 0 1 25 1 6 False 6 Octahedral 18 0.847 123.31 +YUJZAF Ni 0 1 28 2 8 False 5 Square pyramidal 14 1.058 19.45 +YULMUP Ni 0 1 28 2 8 False 4 Square planar 7 0.952 33.11 +YUMGOF Fe 0 5 26 2 6 False 5 Trigonal bipyramidal 13 1.077 -40.52 +YUMJIB Cr 0 4 24 3 3 True 4 Tetrahedral 8 1.045 -19.68 +YURDIY Co 0 1 27 3 6 True 4 Tetrahedral 8 1.033 53.11 +YUXHUV Ni 0 1 28 2 8 True 3 Trigonal planar 3 1.019 53.2 +ZALRUZ Ni 0 1 28 2 8 False 4 Square planar 7 0.961 33.24 +ZARXAU Ni 2 3 28 2 8 False 6 Octahedral 18 1.119 -44.89 +ZASROA Ni 2 1 28 2 8 False 4 Square planar 7 0.986 34.72 +ZASRUG Ni 2 1 28 2 8 False 4 Square planar 7 0.984 34.92 +ZATWOI Cr 1 5 24 2 4 False 5 Trigonal bipyramidal 13 1.026 -44.98 +ZAVTUN Fe 0 6 26 3 5 False 5 Trigonal bipyramidal 13 0.997 -29.3 +ZAXBUX Cr 0 4 24 3 3 False 6 Octahedral 18 0.946 -39.74 +ZAXWUQ Cr 0 4 24 3 3 False 6 Octahedral 18 0.96 -21.66 +ZAXYEC Cr 1 4 24 3 3 False 6 Octahedral 18 0.977 -21.91 +ZAYJOB Mn -2 6 25 2 5 False 4 Tetrahedral 8 0.963 -78.44 +ZAZNOD Fe -1 5 26 2 6 False 4 Tetrahedral 8 0.986 -43.83 +ZAZNUJ Fe 0 6 26 3 5 False 5 Trigonal bipyramidal 13 1.015 -6.6 +ZEBCEQ Mn 0 6 25 2 5 False 7 Capped trigonal prismatic 25 1.17 -52.78 +ZEBSAA Fe 0 1 26 2 6 False 6 Octahedral 18 0.922 54.45 +ZEDSOT Co 0 4 27 2 7 False 5 Trigonal bipyramidal 13 1.102 -13.23 +ZEGSOT01 Cr 0 1 24 2 4 True 5 Trigonal bipyramidal 13 0.943 133.1 +ZEHMEG Ni 0 1 28 2 8 False 3 Trigonal planar 3 0.874 23.26 +ZEHPAD Mn 0 6 25 2 5 False 6 Octahedral 18 1.112 -38.96 +ZELDAX Fe 0 5 26 2 6 False 5 Square pyramidal 14 1.05 -39.82 +ZELWAO Mn 0 6 25 2 5 False 4 Tetrahedral 8 1.035 -74.0 +ZENBOJ Co -1 1 27 3 6 False 6 Octahedral 18 0.976 53.44 +ZEQLUE Co 1 1 27 3 6 False 6 Octahedral 18 0.962 89.92 +ZERDIJ Mn 0 5 25 3 4 False 5 Square pyramidal 14 0.894 -41.19 +ZEWDIO Co 0 1 27 3 6 False 6 Octahedral 18 0.957 56.34 +ZEYWAD Mn 0 6 25 2 5 False 5 Square pyramidal 14 1.06 -58.37 +ZIBNIH Co 0 4 27 2 7 False 6 Octahedral 18 1.15 -10.4 +ZIDKAY Fe 0 1 26 0 6 True 4 Tetrahedral 8 1.021 98.1 +ZILSEU Ni 2 1 28 2 8 False 4 Square planar 7 1.052 22.59 +ZILVUO Mn 1 1 25 1 6 False 6 Octahedral 18 0.86 127.97 +ZILYIC Fe 0 5 26 2 6 False 6 Octahedral 18 1.113 -25.97 +ZILZUP Fe 0 5 26 2 6 False 5 Square pyramidal 14 1.091 -33.39 +ZIMBEC Fe 0 6 26 3 5 False 6 Octahedral 18 1.018 -12.73 +ZIMPUG Co 0 2 27 2 7 False 4 Square planar 7 0.92 29.06 +ZIMQAN Co 0 2 27 2 7 False 4 Square planar 7 0.933 16.47 +ZIVLIC Co 2 2 27 2 7 False 5 Square pyramidal 14 1.002 22.99 +ZIXMOI Co 1 1 27 3 6 False 6 Octahedral 18 0.989 63.94 +ZIZHOI Fe 0 1 26 2 6 False 6 Octahedral 18 0.91 51.06 +ZOBQIQ Co 1 2 27 2 7 False 5 Square pyramidal 14 0.967 33.56 +ZOFDAC Fe 0 6 26 3 5 False 5 Square pyramidal 14 0.977 -21.27 +ZOJXOL Ni 2 3 28 2 8 False 6 Octahedral 18 1.112 -35.59 +ZOQXIM Mn 0 1 25 1 6 True 4 Tetrahedral 8 0.977 126.99 +ZOSZIQ Co 0 1 27 3 6 True 4 Tetrahedral 8 1.025 42.59 +ZOTRAB Co 0 2 27 2 7 False 6 Octahedral 18 1.058 17.29 +ZOVTUZ Cr 0 4 24 3 3 True 3 Trigonal planar 3 1.027 -19.33 +ZOVZOB Cr 0 4 24 3 3 False 6 Octahedral 18 0.976 -22.18 +ZOWPAF Mn 0 5 25 3 4 False 4 Square planar 7 0.95 -67.16 +ZOYCUL Cr 0 5 24 2 4 False 4 Square planar 7 0.988 -82.87 +ZOZGEA Ni 2 3 28 2 8 False 6 Octahedral 18 1.11 -28.05 +ZOZPAF Co -1 4 27 2 7 False 6 Octahedral 18 1.157 -6.46 +ZUJRAZ Fe 0 5 26 2 6 False 5 Square pyramidal 14 1.03 -29.53 +ZULGAQ Fe -2 6 26 3 5 False 6 Octahedral 18 1.031 -23.78 +ZUMCUI Co 0 4 27 2 7 False 4 Tetrahedral 8 1.012 -33.95 +ZUMSEH Fe 0 5 26 2 6 False 5 Square pyramidal 14 1.048 -35.05 +ZUNDIN Ni 0 1 28 2 8 False 5 Square pyramidal 14 1.008 19.16 +ZUQLAA Ni 0 3 28 2 8 False 3 Trigonal planar 3 0.983 -20.91 +ZURDEV Fe 0 1 26 0 6 False 5 Trigonal bipyramidal 13 0.814 142.21 +ZUSSUB Co 0 1 27 3 6 True 4 Tetrahedral 8 1.063 80.56 +ZUTHEB Ni 0 1 28 2 8 False 4 Square planar 7 0.919 28.36 +ZUWXUN Co 0 1 27 1 8 True 3 Trigonal planar 3 0.984 45.15 +ZUWYOI Co 0 1 27 1 8 True 3 Trigonal planar 3 1.026 38.77 +ZUYNEM Fe 0 5 26 2 6 False 5 Trigonal bipyramidal 13 1.113 -40.35 +ZUZWEW Cr 0 4 24 3 3 False 6 Octahedral 18 0.95 -33.04 +ZZZAOG01 Co 0 2 27 2 7 False 4 Square planar 7 0.922 36.16 +ZZZRXM01 Ni 1 3 28 2 8 False 6 Octahedral 18 1.136 -33.32 +ZZZTMK03 Ni 0 1 28 2 8 False 4 Square planar 7 0.936 26.89 diff --git a/cell2mol/TM-GSspin_RandomForest.pkl b/cell2mol/models/TM-GSspin_RandomForest.pkl similarity index 100% rename from cell2mol/TM-GSspin_RandomForest.pkl rename to cell2mol/models/TM-GSspin_RandomForest.pkl diff --git a/cell2mol/m_ox_rf.py b/cell2mol/models/m_ox_rf.py similarity index 78% rename from cell2mol/m_ox_rf.py rename to cell2mol/models/m_ox_rf.py index 34c77b07e..fd4c07c92 100644 --- a/cell2mol/m_ox_rf.py +++ b/cell2mol/models/m_ox_rf.py @@ -1,24 +1,21 @@ #!/usr/bin/env python -import os -import os.path import sklearn from sklearn.model_selection import RandomizedSearchCV from sklearn.ensemble import RandomForestClassifier -from sklearn.model_selection import train_test_split, StratifiedKFold -from sklearn.metrics import confusion_matrix, accuracy_score, f1_score +from sklearn.model_selection import StratifiedKFold +from sklearn.metrics import accuracy_score, f1_score import matplotlib import pickle import pandas as pd + matplotlib.use("Agg") -import matplotlib.pyplot as plt import numpy as np from sys import argv -import ast from cell2mol.spin import make_geom_list -dataframe=argv[1] +dataframe = argv[1] metal = argv[2] mode = argv[3] @@ -30,40 +27,51 @@ print(df.columns) df["geom_nr"] = "" -for tmc in df.refcode : - df.loc[df.refcode==tmc, "geom_nr"] = make_geom_list()[df[df.refcode==tmc].geometry.item()] +for tmc in df.refcode: + df.loc[df.refcode == tmc, "geom_nr"] = make_geom_list()[ + df[df.refcode == tmc].geometry.item() + ] if metal == "total": pass -else : +else: if metal in df["metal"].unique(): df = df[df["metal"] == metal] - else : + else: print("No such metal in the database") exit() -print("the length of", metal, len(df)) -#print(df[:10]) +print("the length of", metal, len(df)) +# print(df[:10]) -#exit() +# exit() # prop = "spin_multiplicity" prop = "m_ox" # extract = ["elem_nr", "m_ox", "d_elec"] # F_TM # extract = ["CN", "geom_nr", "rel_m"] # F_CE # extract = ["elem_nr", "m_ox", "d_elec", "CN", "geom_nr", "rel_m"] # F_TM+CE -extract = ["elem_nr", "d_elec", "CN", "geom_nr", "rel_m"] # for metal oxidation state prediction m_ox_v1 +extract = [ + "elem_nr", + "d_elec", + "CN", + "geom_nr", + "rel_m", +] # for metal oxidation state prediction m_ox_v1 # extract = ["elem_nr", "CN", "geom_nr", "rel_m"] # for metal oxidation state prediction m_ox_v2 -Nfix=list(df["refcode"]) +Nfix = list(df["refcode"]) print("the number of complexes :", len(Nfix)) -Nfix=np.array(Nfix, dtype=str) +Nfix = np.array(Nfix, dtype=str) X = np.vstack([np.array(df[df["refcode"] == name][extract]) for name in Nfix]) print(extract) print("feature size", X.shape) -Y = np.array( [ df[df.refcode==name][prop].item() for name in Nfix] , dtype=int,) +Y = np.array( + [df[df.refcode == name][prop].item() for name in Nfix], + dtype=int, +) print("reference data", Y.shape) @@ -105,7 +113,7 @@ acc_train = np.zeros((n_splits)) acc_test = np.zeros((n_splits)) -f1_train_micro = np.zeros((n_splits)) +f1_train_micro = np.zeros((n_splits)) f1_test_micro = np.zeros((n_splits)) f1_train_macro = np.zeros((n_splits)) f1_test_macro = np.zeros((n_splits)) @@ -132,7 +140,7 @@ f1_train_micro[rep] = f1_score(y_tr, predictions, average="micro") f1_train_macro[rep] = f1_score(y_tr, predictions, average="macro") f1_train_weighted[rep] = f1_score(y_tr, predictions, average="weighted") - + # Test set predict predictions = learner.predict(X_te) prediction_probs = np.around(learner.predict_proba(X_te), 4) @@ -142,29 +150,44 @@ f1_test_macro[rep] = f1_score(y_te, predictions, average="macro") f1_test_weighted[rep] = f1_score(y_te, predictions, average="weighted") - is_certain = [True if np.max(probs) >= 0.5 else False for probs in prediction_probs] l_oos.extend(l_te) - #print(prediction_probs) - #print(np.amax(prediction_probs, axis=1)) + # print(prediction_probs) + # print(np.amax(prediction_probs, axis=1)) maxprob.extend(list(np.amax(prediction_probs, axis=1))) if print_incorrect: print(f"\n Incorrect predictions for replica {rep}:") for idx, sys in enumerate(is_correct): if not sys and print_incorrect: print( - f"System {l_te[idx]} has prediction {predictions[idx]} with probability {np.max(prediction_probs[idx])} and reference {y_te[idx]} metal {df[df.refcode==l_te[idx]]['metal'].item()}" + f"System {l_te[idx]} has prediction {predictions[idx]} with probability {np.max(prediction_probs[idx])} and reference {y_te[idx]} metal {df[df.refcode == l_te[idx]]['metal'].item()}" ) print("\n \n Summary of replica results:") -print(f"Training mean accuracy was {round(np.mean(acc_train),3)} with STD {round(np.std(acc_train),3)}") -print(f"Test mean accuracy was {round(np.mean(acc_test),3)} with STD {round(np.std(acc_test),3)}") -print(f"Training mean f1_score_micro was {np.mean(f1_train_micro)} with STD {np.std(f1_train_micro)}") -print(f"Test mean f1_score_micro was {np.mean(f1_test_micro)} with STD {np.std(f1_test_micro)}") -print(f"Training mean f1_score_macro was {np.mean(f1_train_macro)} with STD {np.std(f1_train_macro)}") -print(f"Test mean f1_score_macro was {np.mean(f1_test_macro)} with STD {np.std(f1_test_macro)}") -print(f"Training mean f1_score_weighted was {np.mean(f1_train_weighted)} with STD {np.std(f1_train_weighted)}") -print(f"Test mean f1_score_weighted was {np.mean(f1_test_weighted)} with STD {np.std(f1_test_weighted)}") +print( + f"Training mean accuracy was {round(np.mean(acc_train), 3)} with STD {round(np.std(acc_train), 3)}" +) +print( + f"Test mean accuracy was {round(np.mean(acc_test), 3)} with STD {round(np.std(acc_test), 3)}" +) +print( + f"Training mean f1_score_micro was {np.mean(f1_train_micro)} with STD {np.std(f1_train_micro)}" +) +print( + f"Test mean f1_score_micro was {np.mean(f1_test_micro)} with STD {np.std(f1_test_micro)}" +) +print( + f"Training mean f1_score_macro was {np.mean(f1_train_macro)} with STD {np.std(f1_train_macro)}" +) +print( + f"Test mean f1_score_macro was {np.mean(f1_test_macro)} with STD {np.std(f1_test_macro)}" +) +print( + f"Training mean f1_score_weighted was {np.mean(f1_train_weighted)} with STD {np.std(f1_train_weighted)}" +) +print( + f"Test mean f1_score_weighted was {np.mean(f1_test_weighted)} with STD {np.std(f1_test_weighted)}" +) try: assert len(maxprob) == len(l_oos) @@ -185,7 +208,6 @@ # Not doing out of sample things because there is no out of sample if run_diagnosis: - # Initializing the learner learner = learner = rf_random.best_estimator_.fit(X, Y) @@ -217,7 +239,7 @@ prediction, bias, contributions = ti.predict(learner, X) for idx, sys in enumerate(Nfix): - print(f"System {Nfix[idx]} has contributions {contributions[0,idx]}:") + print(f"System {Nfix[idx]} has contributions {contributions[0, idx]}:") # trained_model = pickle.load(open(filename, 'rb')) diff --git a/cell2mol/models/property_2063.txt b/cell2mol/models/property_2063.txt new file mode 100644 index 000000000..a0262e087 --- /dev/null +++ b/cell2mol/models/property_2063.txt @@ -0,0 +1,2064 @@ +refcode metal total_charge spin_multiplicity elem_nr m_ox d_elec CN geometry rel_m +KIPLIH Cr 0 1 24 0 5 5 Square pyramidal 0.836 +AYIZIS Cr 0 1 24 0 5 6 Octahedral 0.848 +MISLAB Cr 0 1 24 0 5 6 Octahedral 0.859 +KOQBAT Cr 0 1 24 0 5 6 Octahedral 0.86 +VOWRAA Cr -1 1 24 0 5 6 Octahedral 0.856 +YEJWAM Cr 0 1 24 0 5 6 Octahedral 0.861 +BIVTOP Cr 0 1 24 0 5 6 Octahedral 0.863 +EAMNCR10 Cr 0 1 24 0 5 6 Octahedral 0.851 +MACZEW Cr 0 1 24 0 5 6 Octahedral 0.878 +PCTHFC Cr 0 1 24 0 5 6 Octahedral 0.868 +JONMEE Cr 0 1 24 0 5 6 Octahedral 0.845 +RIMDIA Cr 0 1 24 0 5 6 Octahedral 0.923 +JAGGED Cr 0 1 24 0 5 6 Octahedral 0.849 +TABNEP Cr 0 1 24 0 5 6 Octahedral 0.859 +CMPHSC Cr 0 1 24 0 5 6 Octahedral 0.865 +SEKHEX Cr 0 1 24 0 5 6 Octahedral 0.838 +VOYJEY Cr 0 1 24 0 5 6 Octahedral 0.84 +PEMSOP Cr 0 1 24 0 5 6 Octahedral 0.845 +HINTUU Cr 0 1 24 0 5 6 Octahedral 0.899 +SOBXAI Cr 0 1 24 0 5 6 Octahedral 0.863 +RIQQAJ Cr -1 1 24 0 5 6 Octahedral 0.883 +RIQQEN Cr -1 1 24 0 5 6 Octahedral 0.888 +EKOXOR Cr 0 1 24 0 5 6 Octahedral 0.853 +PEMTAC Cr 0 1 24 0 5 6 Octahedral 0.876 +ROKBUO Cr 0 1 24 0 5 6 Octahedral 0.855 +TAJXUZ Cr 0 1 24 0 5 6 Octahedral 0.847 +KIJSUR Cr 0 1 24 0 5 6 Octahedral 0.861 +THOCCR Cr 0 1 24 0 5 6 Octahedral 0.871 +BORFET Cr 0 1 24 0 5 6 Octahedral 0.873 +TUTJOH Cr -1 1 24 0 5 6 Octahedral 0.881 +ISURUK Cr 0 1 24 0 5 6 Octahedral 0.832 +RUKLAK Cr 0 1 24 0 5 6 Octahedral 0.911 +TAJYAG Cr 0 1 24 0 5 6 Octahedral 0.869 +TAWNEK Cr 0 1 24 0 5 6 Octahedral 0.858 +FOKYEJ Cr 0 1 24 0 5 6 Octahedral 0.858 +MEHBAC Cr 0 1 24 0 5 6 Octahedral 0.905 +ISURAQ Cr 0 1 24 0 5 6 Octahedral 0.852 +XOCNUY Cr 0 1 24 0 5 6 Octahedral 0.879 +DOQWUC Cr 0 5 24 2 4 3 T-shaped 0.958 +DOQXUD Cr 0 5 24 2 4 3 Trigonal planar 0.913 +PUXVOU Cr 0 5 24 2 4 3 Trigonal planar 0.925 +INIHAP Cr 0 5 24 2 4 3 Trigonal planar 0.891 +AKASIQ Cr 0 5 24 2 4 3 Trigonal planar 0.897 +RIWXEA Cr 0 5 24 2 4 4 Seesaw 1.022 +PUVLAV Cr 0 5 24 2 4 4 Seesaw 1.095 +VIKYOE Cr 0 5 24 2 4 4 Seesaw 1.114 +HOXMOX Cr -1 5 24 2 4 4 Seesaw 0.965 +COPCAM Cr 0 5 24 2 4 4 Seesaw 0.954 +ODIHOY Cr 0 5 24 2 4 4 Seesaw 0.97 +CAFZAM Cr 0 5 24 2 4 4 Seesaw 0.968 +LUYXEJ Cr 0 5 24 2 4 4 Seesaw 0.973 +KAPPEW Cr 0 5 24 2 4 4 Seesaw 1.076 +HAGHOO Cr 0 5 24 2 4 4 Square planar 1.029 +UNEREL Cr 0 5 24 2 4 4 Square planar 0.996 +VABTOH Cr 0 5 24 2 4 4 Square planar 1.023 +UDUSAQ Cr 0 5 24 2 4 4 Square planar 0.991 +CILGIO Cr 0 5 24 2 4 4 Square planar 1.003 +RUWSOU Cr 0 5 24 2 4 4 Square planar 1.012 +EQIVOP Cr 0 5 24 2 4 4 Square planar 0.98 +ZOYCUL Cr 0 5 24 2 4 4 Square planar 0.988 +XEMSAK Cr 0 5 24 2 4 4 Square planar 1.009 +DIXXEP Cr 0 5 24 2 4 4 Square planar 1.02 +UDURUJ Cr 0 5 24 2 4 4 Square planar 0.962 +RUWSAG Cr 0 5 24 2 4 4 Square planar 0.978 +DUYZII Cr 0 5 24 2 4 4 Square planar 0.978 +SEZVAU Cr 0 5 24 2 4 4 Square planar 0.993 +ZURVIR Cr -2 5 24 2 4 4 Square planar 0.947 +WAFBUA Cr -2 5 24 2 4 4 Square planar 1.03 +LOZWIJ Cr 0 5 24 2 4 4 Square planar 0.988 +IHEVUM Cr 0 5 24 2 4 4 Square planar 0.983 +SEZVEY Cr -2 5 24 2 4 4 Square planar 0.987 +JOBBAF Cr 0 5 24 2 4 4 Square planar 1.05 +AFOSUM Cr 0 5 24 2 4 4 Square planar 0.986 +EQIVIJ Cr 0 5 24 2 4 4 Square planar 0.965 +GIFJEM Cr 0 5 24 2 4 4 Square planar 0.965 +DUBPIA Cr 0 5 24 2 4 4 Square planar 0.964 +MIRVEP Cr 0 5 24 2 4 4 Square planar 1.004 +ECOXAW Cr 0 5 24 2 4 4 Square planar 0.963 +VAMNAY Cr 0 5 24 2 4 4 Square planar 0.978 +HUSXUP Cr -2 5 24 2 4 4 Square planar 0.944 +MUQQOE Cr 0 5 24 2 4 5 Square pyramidal 1.039 +JAPLUI Cr 0 5 24 2 4 5 Square pyramidal 0.976 +LEMRIF Cr 0 5 24 2 4 5 Square pyramidal 1.009 +MUNLIQ Cr 0 5 24 2 4 5 Square pyramidal 1.045 +QIRWUL Cr 1 5 24 2 4 5 Square pyramidal 1.029 +BUJPIH Cr 0 5 24 2 4 5 Square pyramidal 1.027 +DOJCOX Cr -1 5 24 2 4 5 Square pyramidal 0.97 +WUNCAK Cr 0 5 24 2 4 5 Square pyramidal 1.037 +WUNCEO Cr 1 5 24 2 4 5 Square pyramidal 1.042 +SEZTUM Cr 0 5 24 2 4 5 Square pyramidal 1.045 +CUBBOQ Cr 0 5 24 2 4 5 Square pyramidal 1.021 +QIRWIZ Cr 1 5 24 2 4 5 Trigonal bipyramidal 1.043 +ZATWOI Cr 1 5 24 2 4 5 Trigonal bipyramidal 1.026 +QIRWOF Cr 1 5 24 2 4 5 Trigonal bipyramidal 1.029 +CAGCIW Cr -2 5 24 2 4 6 Octahedral 1.071 +VAQFAU Cr 0 5 24 2 4 6 Octahedral 1.122 +VUTTAH Cr 0 3 24 2 4 6 Octahedral 0.935 +NEYWOD Cr 0 3 24 2 4 6 Octahedral 0.942 +NAFNEO Cr 0 3 24 2 4 6 Octahedral 0.958 +WUTDEW Cr 2 5 24 2 4 6 Octahedral 1.068 +KAWKIE Cr 2 5 24 2 4 6 Octahedral 1.101 +JUVYOO Cr 0 5 24 2 4 6 Octahedral 1.096 +CIDVOA Cr 0 5 24 2 4 6 Octahedral 1.047 +IWORIX Cr 2 5 24 2 4 6 Octahedral 1.028 +NOHKUQ Cr 0 4 24 3 3 3 Trigonal planar 0.826 +GAGVUG Cr 0 4 24 3 3 3 Trigonal planar 0.826 +JIWRIQ Cr -1 4 24 3 3 4 Seesaw 0.997 +LUBPOQ Cr 0 4 24 3 3 4 Tetrahedral 0.934 +FEWMEA Cr 1 4 24 3 3 4 Tetrahedral 0.924 +VOCTIQ Cr 0 4 24 3 3 4 Tetrahedral 0.905 +PUXVIO Cr 0 4 24 3 3 4 Tetrahedral 0.897 +INIFOB Cr 0 4 24 3 3 4 Tetrahedral 0.873 +HONZUF Cr 0 4 24 3 3 5 Square pyramidal 1.006 +HONZOZ Cr 0 4 24 3 3 5 Square pyramidal 0.978 +LOZXOQ Cr 1 4 24 3 3 5 Square pyramidal 0.986 +UWUYER Cr 0 4 24 3 3 5 Square pyramidal 0.924 +ACEGOH Cr 0 4 24 3 3 5 Square pyramidal 1.04 +ICASOV Cr 0 4 24 3 3 5 Square pyramidal 0.892 +YEJJIG Cr 0 4 24 3 3 5 Square pyramidal 0.919 +HONZIT Cr 0 4 24 3 3 5 Trigonal bipyramidal 0.997 +ILUFUQ Cr -1 4 24 3 3 5 Trigonal bipyramidal 0.952 +MOMCIB Cr 0 4 24 3 3 5 Trigonal bipyramidal 0.94 +WUKDOV Cr 1 4 24 3 3 5 Trigonal bipyramidal 0.942 +PUDPAG Cr 0 4 24 3 3 6 Octahedral 0.935 +YARTIW Cr -3 4 24 3 3 6 Octahedral 0.974 +PITBUP Cr -1 4 24 3 3 6 Octahedral 1.059 +LUGDUM Cr 0 4 24 3 3 6 Octahedral 1.001 +DIYVAL Cr 0 4 24 3 3 6 Octahedral 1.041 +JEPPOM Cr 0 4 24 3 3 6 Octahedral 1.02 +FOSVIS Cr 0 4 24 3 3 6 Octahedral 1.047 +NEYWUJ Cr 0 4 24 3 3 6 Octahedral 0.953 +KEFYAV Cr 1 4 24 3 3 6 Octahedral 0.976 +DPBPCR Cr 1 4 24 3 3 6 Octahedral 1.0 +RUHHOS Cr 1 4 24 3 3 6 Octahedral 0.983 +KIWMAG Cr 1 4 24 3 3 6 Octahedral 1.001 +YEKLOQ Cr 0 4 24 3 3 6 Octahedral 1.012 +VOGYUM Cr -1 4 24 3 3 6 Octahedral 0.96 +FIKXEF Cr -1 4 24 3 3 6 Octahedral 0.968 +CAZVAA Cr -1 4 24 3 3 6 Octahedral 0.966 +AHEZAO Cr 0 4 24 3 3 6 Octahedral 0.952 +PAZDUQ Cr 0 4 24 3 3 6 Octahedral 0.983 +EGEYIA Cr 0 4 24 3 3 6 Octahedral 0.945 +VOGYOG Cr 0 4 24 3 3 6 Octahedral 0.953 +ZAXBUX Cr 0 4 24 3 3 6 Octahedral 0.946 +YEZYUZ Cr 0 4 24 3 3 6 Octahedral 0.98 +WIMNIR Cr 0 4 24 3 3 6 Octahedral 0.961 +KOLZAN Cr 0 4 24 3 3 6 Octahedral 0.967 +GIDKAH Cr 0 4 24 3 3 6 Octahedral 0.945 +ZOVZOB Cr 0 4 24 3 3 6 Octahedral 0.976 +KIWQOY Cr 0 4 24 3 3 6 Octahedral 0.958 +KIWZAT Cr 0 4 24 3 3 6 Octahedral 0.954 +YAKFOG Cr 0 4 24 3 3 6 Octahedral 0.961 +YAKGAT Cr 0 4 24 3 3 6 Octahedral 0.954 +UHIZAM Cr 0 4 24 3 3 6 Octahedral 0.968 +TADFEJ Cr 0 4 24 3 3 6 Octahedral 0.957 +NOGWIQ Cr 0 4 24 3 3 6 Octahedral 0.976 +VEWKIU Cr 0 4 24 3 3 6 Octahedral 0.962 +ZAXWUQ Cr 0 4 24 3 3 6 Octahedral 0.96 +GEQZUY Cr 0 4 24 3 3 6 Octahedral 0.96 +ULAYUC Cr 1 4 24 3 3 6 Octahedral 0.971 +WAGHET Cr 0 4 24 3 3 6 Octahedral 0.945 +LONRUC Cr 1 4 24 3 3 6 Octahedral 0.95 +XETGUY Cr -1 4 24 3 3 6 Octahedral 0.953 +OWOGUE Cr 0 4 24 3 3 6 Octahedral 0.939 +IHETOG Cr 0 4 24 3 3 6 Octahedral 0.953 +DOFVIG Cr 1 4 24 3 3 6 Octahedral 0.945 +DIJJIR Cr 0 4 24 3 3 6 Octahedral 0.962 +YIKVUJ Cr 1 4 24 3 3 6 Octahedral 0.953 +MACRCC Cr 2 4 24 3 3 6 Octahedral 0.986 +JOMNAA Cr 2 4 24 3 3 6 Octahedral 0.976 +NOBHET Cr 1 4 24 3 3 6 Octahedral 0.999 +EXOVIX Cr 0 4 24 3 3 6 Octahedral 0.958 +SEPHOL Cr 0 4 24 3 3 6 Octahedral 0.983 +UFAWOO Cr 0 4 24 3 3 6 Octahedral 0.965 +YATQER Cr 0 4 24 3 3 6 Octahedral 0.937 +YEFFOE Cr 0 4 24 3 3 6 Octahedral 0.968 +GULWUH Cr 0 4 24 3 3 6 Octahedral 0.931 +XUJXOP Cr 1 4 24 3 3 6 Octahedral 0.96 +YASHOP Cr -2 4 24 3 3 6 Octahedral 0.951 +VAFDIR Cr 0 4 24 3 3 6 Octahedral 0.958 +DUCQIC Cr 0 4 24 3 3 6 Octahedral 0.951 +FEZXUD Cr 1 4 24 3 3 6 Octahedral 0.976 +BUTDAV Cr 1 4 24 3 3 6 Octahedral 0.955 +DORZEP Cr -1 4 24 3 3 6 Octahedral 0.96 +BAPPOX Cr 2 4 24 3 3 6 Octahedral 0.979 +DULQAD Cr 2 4 24 3 3 6 Octahedral 0.954 +LEYSEN Cr 1 4 24 3 3 6 Octahedral 0.964 +YEKLUW Cr 0 4 24 3 3 6 Octahedral 0.972 +AFOMEQ Cr 0 4 24 3 3 6 Octahedral 0.961 +EYAYIN Cr -1 4 24 3 3 6 Octahedral 0.94 +BGUCRM Cr 0 4 24 3 3 6 Octahedral 0.94 +ENDACR Cr 3 4 24 3 3 6 Octahedral 0.982 +CUPCEV Cr 2 4 24 3 3 6 Octahedral 0.973 +ZAXYEC Cr 1 4 24 3 3 6 Octahedral 0.977 +QEQVEO Cr 0 4 24 3 3 6 Octahedral 0.95 +JEQNOJ Cr 1 4 24 3 3 6 Octahedral 0.961 +XIWBEK Cr 1 4 24 3 3 6 Octahedral 0.965 +HESMIB Cr 1 4 24 3 3 6 Octahedral 0.877 +MCENCR Cr 1 4 24 3 3 6 Octahedral 0.976 +MCEACR Cr 1 4 24 3 3 6 Octahedral 0.977 +TGLYCR Cr 0 4 24 3 3 6 Octahedral 0.958 +BOTHEX Cr 0 4 24 3 3 6 Octahedral 0.948 +LDHPCR10 Cr 0 4 24 3 3 6 Octahedral 0.965 +OFIXEI Cr 0 4 24 3 3 6 Octahedral 0.948 +KUSPUJ Cr 0 4 24 3 3 6 Octahedral 0.971 +NOJJAX Cr 1 4 24 3 3 6 Octahedral 0.955 +TUDJIL Cr -1 4 24 3 3 6 Octahedral 0.945 +VEXWON Cr 1 4 24 3 3 6 Octahedral 0.946 +SCYSCR Cr -1 4 24 3 3 6 Octahedral 0.969 +GORWIT Cr -1 4 24 3 3 6 Octahedral 0.988 +UYAKAI Cr 0 4 24 3 3 6 Octahedral 0.946 +UCOMEE Cr 3 4 24 3 3 6 Octahedral 0.94 +HOTVIW Cr -1 4 24 3 3 6 Octahedral 0.947 +QUTFIW Cr -3 4 24 3 3 6 Octahedral 0.942 +ZUZWEW Cr 0 4 24 3 3 6 Octahedral 0.95 +FEXROR Cr 0 4 24 3 3 6 Octahedral 0.968 +DUJCIU Cr -3 4 24 3 3 6 Octahedral 0.967 +DUTMIO10 Cr 0 4 24 3 3 6 Octahedral 0.997 +UGUNUF Cr 0 4 24 3 3 6 Octahedral 0.969 +JASCEL Cr -3 4 24 3 3 6 Octahedral 0.978 +BILWAX Cr 0 4 24 3 3 6 Octahedral 0.974 +BILVUQ Cr 0 4 24 3 3 6 Octahedral 0.983 +DAPSCR10 Cr 3 4 24 3 3 7 Pentagonal bipyramidal 1.019 +CUJSAD Mn -1 5 25 1 6 2 Linear 1.001 +JUHQIM Mn -1 1 25 1 6 5 Square pyramidal 0.791 +TACNAN Mn 0 1 25 1 6 6 Octahedral 0.84 +KOGFET Mn 0 1 25 1 6 6 Octahedral 0.837 +SEWBUR Mn 0 1 25 1 6 6 Octahedral 0.838 +DAXPEY Mn 0 1 25 1 6 6 Octahedral 0.871 +DAXPOI Mn 0 1 25 1 6 6 Octahedral 0.867 +RERCUP Mn 0 1 25 1 6 6 Octahedral 0.86 +FAZTEG Mn 0 1 25 1 6 6 Octahedral 0.874 +WIBLUO Mn 0 1 25 1 6 6 Octahedral 0.844 +FAWQEZ Mn 0 1 25 1 6 6 Octahedral 0.853 +GELRIY Mn 0 1 25 1 6 6 Octahedral 0.853 +PYRMNC Mn 0 1 25 1 6 6 Octahedral 0.843 +NOTPUK Mn 0 1 25 1 6 6 Octahedral 0.844 +VUCFAA Mn 0 1 25 1 6 6 Octahedral 0.845 +LOJLEE Mn -1 1 25 1 6 6 Octahedral 0.846 +SILYOC Mn 0 1 25 1 6 6 Octahedral 0.857 +MIMZAJ Mn 0 1 25 1 6 6 Octahedral 0.819 +HATNUM Mn 0 1 25 1 6 6 Octahedral 0.847 +YUDFOS Mn 0 1 25 1 6 6 Octahedral 0.847 +TAHYOQ Mn -1 1 25 1 6 6 Octahedral 0.822 +SICFAM Mn 0 1 25 1 6 6 Octahedral 0.883 +GOJVAC Mn 0 1 25 1 6 6 Octahedral 0.844 +LOVBUT Mn 1 1 25 1 6 6 Octahedral 0.847 +IHABID Mn 0 1 25 1 6 6 Octahedral 0.869 +GONTIM Mn 0 1 25 1 6 6 Octahedral 0.853 +VUVJUS Mn 0 1 25 1 6 6 Octahedral 0.852 +BURMIL Mn 0 1 25 1 6 6 Octahedral 0.82 +FEHKUZ Mn 0 1 25 1 6 6 Octahedral 0.868 +SICFEQ Mn 0 1 25 1 6 6 Octahedral 0.881 +HAWNUQ Mn 1 1 25 1 6 6 Octahedral 0.87 +IHIGEN Mn 0 1 25 1 6 6 Octahedral 0.874 +FAZTIK Mn 0 1 25 1 6 6 Octahedral 0.875 +ZILVUO Mn 1 1 25 1 6 6 Octahedral 0.86 +NAKWUS Mn 0 1 25 1 6 6 Octahedral 0.894 +HATNOG Mn 1 1 25 1 6 6 Octahedral 0.863 +FEHLIO Mn 0 1 25 1 6 6 Octahedral 0.872 +ISURIY Mn 1 1 25 1 6 6 Octahedral 0.852 +IPOROX Mn 0 1 25 1 6 6 Octahedral 0.874 +HATPAU Mn 0 1 25 1 6 6 Octahedral 0.856 +CIMHEL Mn 1 1 25 1 6 6 Octahedral 0.852 +GENBUW Mn 0 1 25 1 6 6 Octahedral 0.842 +CIHYEY Mn 0 1 25 1 6 6 Octahedral 0.821 +GEMZON Mn 1 1 25 1 6 6 Octahedral 0.842 +CIMGOU Mn 1 1 25 1 6 6 Octahedral 0.858 +ISUQUJ Mn 1 1 25 1 6 6 Octahedral 0.83 +SEKHAT Mn 1 1 25 1 6 6 Octahedral 0.823 +CIMBUV Mn 1 1 25 1 6 6 Octahedral 0.84 +NAYMUY Mn 0 1 25 1 6 6 Octahedral 0.883 +SAJKUN Mn 1 1 25 1 6 6 Octahedral 0.885 +UTODAK Mn 0 1 25 1 6 6 Octahedral 0.878 +SIFWUB Mn 1 1 25 1 6 6 Octahedral 0.836 +BETQAT Mn 1 1 25 1 6 6 Octahedral 0.876 +WUGCAD Mn 0 6 25 2 5 2 Bent (V-shape, 109.47°) 0.913 +KAGJOU Mn 0 6 25 2 5 2 Linear 0.869 +NITVES Mn -1 6 25 2 5 3 Trigonal planar 0.998 +CIVREF Mn -1 6 25 2 5 3 Trigonal planar 1.014 +WUGCIL Mn 0 6 25 2 5 3 Trigonal planar 0.968 +CUWMOW Mn -1 6 25 2 5 3 Trigonal planar 1.002 +CORLIE Mn -1 6 25 2 5 3 Trigonal planar 0.953 +LUYBEP Mn -1 6 25 2 5 3 fac-Trivacant octahedron 1.047 +YIZNOL Mn 0 6 25 2 5 4 Seesaw 1.065 +JEXKED Mn 0 6 25 2 5 4 Seesaw 1.009 +IZOJEO Mn -1 6 25 2 5 4 Seesaw 1.009 +WURXOZ Mn -2 6 25 2 5 4 Tetrahedral 0.938 +SUBGOO Mn -1 6 25 2 5 4 Tetrahedral 0.96 +SUBQAK Mn 0 6 25 2 5 4 Tetrahedral 0.984 +LOLTOV Mn 0 6 25 2 5 4 Tetrahedral 0.986 +JOBJUI Mn 0 6 25 2 5 4 Tetrahedral 0.96 +MIZSEV Mn 0 6 25 2 5 4 Tetrahedral 0.967 +XOTLUO Mn -2 6 25 2 5 4 Tetrahedral 1.014 +EZOYIC Mn -2 6 25 2 5 4 Tetrahedral 1.017 +VAWRIU Mn 0 6 25 2 5 4 Tetrahedral 1.094 +BUSMOR Mn 0 6 25 2 5 4 Tetrahedral 1.077 +NADLIO Mn 0 6 25 2 5 4 Tetrahedral 1.015 +NADLOU Mn 0 6 25 2 5 4 Tetrahedral 1.01 +BUBHEM Mn 0 6 25 2 5 4 Tetrahedral 1.088 +ASUVIT Mn 0 6 25 2 5 4 Tetrahedral 1.091 +CAZZUY Mn 0 6 25 2 5 4 Tetrahedral 1.072 +ZAYJOB Mn -2 6 25 2 5 4 Tetrahedral 0.963 +CUVZIE Mn -1 6 25 2 5 4 Tetrahedral 0.964 +YIBHUM Mn -2 6 25 2 5 4 Tetrahedral 0.973 +TOKRAN Mn 0 6 25 2 5 4 Tetrahedral 0.991 +VAYWEY Mn 0 6 25 2 5 4 Tetrahedral 0.975 +HUTCOR Mn 0 6 25 2 5 4 Tetrahedral 1.011 +HURSOD Mn -1 6 25 2 5 4 Tetrahedral 1.009 +JUCJID Mn -2 6 25 2 5 4 Tetrahedral 0.947 +YONWUT Mn -1 6 25 2 5 4 Tetrahedral 0.97 +GAYXEJ Mn -1 6 25 2 5 4 Tetrahedral 0.958 +ZELWAO Mn 0 6 25 2 5 4 Tetrahedral 1.035 +WEFCOZ Mn 0 6 25 2 5 4 Tetrahedral 0.946 +WEFCIT Mn 0 6 25 2 5 4 Tetrahedral 0.966 +SUFDEC Mn 0 6 25 2 5 4 Tetrahedral 1.053 +CODLIS Mn 0 6 25 2 5 4 Tetrahedral 0.976 +MUDMIJ Mn -2 6 25 2 5 4 Tetrahedral 0.958 +JIZQUG Mn 0 6 25 2 5 4 Tetrahedral 1.052 +BEXLIC Mn 0 6 25 2 5 4 Tetrahedral 0.99 +HIZDID Mn 0 6 25 2 5 4 Tetrahedral 1.012 +KOZZEE01 Mn 0 6 25 2 5 4 Tetrahedral 1.038 +JIXLAD Mn 0 6 25 2 5 4 Tetrahedral 1.003 +CEZYOW Mn 0 6 25 2 5 4 Tetrahedral 1.028 +HIPKUO Mn 0 6 25 2 5 4 Tetrahedral 1.009 +CIRDEN Mn 0 6 25 2 5 4 Tetrahedral 1.009 +COYLEH10 Mn 0 6 25 2 5 4 Tetrahedral 1.064 +PACHEI Mn 0 6 25 2 5 4 Tetrahedral 0.999 +GOVDOK Mn 0 6 25 2 5 4 Tetrahedral 0.997 +IJIGUD Mn 0 6 25 2 5 4 Tetrahedral 1.124 +CEMSIW Mn -2 6 25 2 5 4 Tetrahedral 0.995 +TIZJES Mn 0 6 25 2 5 5 Square pyramidal 1.02 +WERHUZ Mn 0 6 25 2 5 5 Square pyramidal 1.041 +OZUSOT Mn 0 6 25 2 5 5 Square pyramidal 1.029 +ROFKUV Mn 0 6 25 2 5 5 Square pyramidal 1.042 +WITBOT Mn 0 6 25 2 5 5 Square pyramidal 1.081 +AJICUT Mn 0 6 25 2 5 5 Square pyramidal 1.044 +NOKSOX Mn 0 6 25 2 5 5 Square pyramidal 1.104 +TOPJUF Mn 0 6 25 2 5 5 Square pyramidal 1.09 +WOTRUU Mn 0 6 25 2 5 5 Square pyramidal 1.037 +QAFCOS Mn 0 6 25 2 5 5 Square pyramidal 1.065 +WASDOM Mn 0 6 25 2 5 5 Square pyramidal 1.064 +KEJTAV Mn -1 6 25 2 5 5 Square pyramidal 1.062 +LALDEH Mn -3 6 25 2 5 5 Square pyramidal 1.054 +RAGLOD Mn 0 6 25 2 5 5 Square pyramidal 1.071 +ZEYWAD Mn 0 6 25 2 5 5 Square pyramidal 1.06 +UBODUK Mn 0 6 25 2 5 5 Square pyramidal 1.037 +FEZTEM Mn 1 6 25 2 5 5 Square pyramidal 1.063 +JEJTUN Mn 0 6 25 2 5 5 Square pyramidal 1.088 +GOKREF Mn 1 6 25 2 5 5 Square pyramidal 1.097 +SOHKAC Mn 0 6 25 2 5 5 Square pyramidal 1.076 +AVALAL Mn 0 6 25 2 5 5 Square pyramidal 1.042 +BAWLAN Mn 0 6 25 2 5 5 Square pyramidal 1.075 +CEZYUC Mn 0 6 25 2 5 5 Square pyramidal 1.101 +SINDIC Mn 0 6 25 2 5 5 Square pyramidal 1.047 +ROYGUJ Mn 0 6 25 2 5 5 Trigonal bipyramidal 1.146 +XAHLEY Mn 0 6 25 2 5 5 Trigonal bipyramidal 1.046 +HAHXOE Mn 0 6 25 2 5 5 Trigonal bipyramidal 1.03 +BRURMN Mn 0 6 25 2 5 5 Trigonal bipyramidal 1.026 +ICATIS Mn 0 6 25 2 5 5 Trigonal bipyramidal 1.105 +JOTNIS Mn 0 6 25 2 5 5 Trigonal bipyramidal 1.054 +GOQZIX Mn 0 6 25 2 5 5 Trigonal bipyramidal 1.061 +MEIMMN Mn 0 6 25 2 5 5 Trigonal bipyramidal 1.063 +HUMZEW Mn 0 6 25 2 5 5 Trigonal bipyramidal 1.088 +WUFFAF Mn 0 6 25 2 5 5 Trigonal bipyramidal 1.05 +BACNOK Mn 1 6 25 2 5 5 Trigonal bipyramidal 1.07 +HAHYAR Mn 0 6 25 2 5 5 Trigonal bipyramidal 1.042 +TRENCM Mn 1 6 25 2 5 5 Trigonal bipyramidal 1.08 +MUXVEJ Mn 0 6 25 2 5 5 Trigonal bipyramidal 1.082 +SIQZOH Mn 0 6 25 2 5 5 Trigonal bipyramidal 1.07 +YECSOQ Mn 1 6 25 2 5 5 Trigonal bipyramidal 1.068 +FOXGAB Mn 0 6 25 2 5 5 Trigonal bipyramidal 1.065 +XEZNUM Mn 0 6 25 2 5 5 Trigonal bipyramidal 1.073 +ERIPEB Mn 2 6 25 2 5 5 Trigonal bipyramidal 1.095 +DIMPEU11 Mn 0 6 25 2 5 6 Octahedral 1.112 +RAHXAB Mn 0 6 25 2 5 6 Octahedral 1.106 +AXITAC Mn 0 6 25 2 5 6 Octahedral 1.097 +IPIBUE Mn 0 6 25 2 5 6 Octahedral 1.111 +AZUMAJ Mn 0 6 25 2 5 6 Octahedral 1.106 +GOXXEW Mn 0 6 25 2 5 6 Octahedral 1.086 +IHALUZ Mn 0 6 25 2 5 6 Octahedral 1.117 +JAHBID Mn 0 6 25 2 5 6 Octahedral 1.133 +LILZAJ Mn 1 6 25 2 5 6 Octahedral 1.095 +KEFQES Mn 1 6 25 2 5 6 Octahedral 1.101 +FALPOA Mn 1 6 25 2 5 6 Octahedral 1.097 +NAQQAY Mn 0 2 25 2 5 6 Octahedral 0.868 +EHIWIC Mn -2 6 25 2 5 6 Octahedral 1.099 +IDIKUD Mn 0 6 25 2 5 6 Octahedral 1.101 +VIFWUD Mn 0 6 25 2 5 6 Octahedral 1.107 +NETCAT Mn 0 6 25 2 5 6 Octahedral 1.105 +AZISUY Mn 0 6 25 2 5 6 Octahedral 1.11 +XEZTEE Mn 0 6 25 2 5 6 Octahedral 1.104 +GEPBEJ Mn 0 6 25 2 5 6 Octahedral 1.109 +IXEPAE Mn 0 6 25 2 5 6 Octahedral 1.109 +WEXYIH Mn 0 6 25 2 5 6 Octahedral 1.106 +CGLYMN Mn 0 6 25 2 5 6 Octahedral 1.092 +KESFEV Mn 0 6 25 2 5 6 Octahedral 1.142 +IGUQUY Mn 1 6 25 2 5 6 Octahedral 1.114 +CIDKEI Mn 0 6 25 2 5 6 Octahedral 1.102 +IRONOS Mn 1 6 25 2 5 6 Octahedral 1.108 +YIJDED Mn 1 6 25 2 5 6 Octahedral 1.096 +POWROJ Mn 1 6 25 2 5 6 Octahedral 1.091 +JOXCOQ Mn 0 6 25 2 5 6 Octahedral 1.115 +KEFQOC Mn 1 6 25 2 5 6 Octahedral 1.1 +TEBVIH Mn 2 6 25 2 5 6 Octahedral 1.145 +YANKOQ Mn 2 6 25 2 5 6 Octahedral 1.122 +TIKYOC Mn 0 6 25 2 5 6 Octahedral 1.15 +ITERIJ Mn 0 6 25 2 5 6 Octahedral 1.104 +LEPSEF Mn 1 6 25 2 5 6 Octahedral 1.096 +SOHKEG Mn 0 6 25 2 5 6 Octahedral 1.135 +AMATEQ Mn -2 6 25 2 5 6 Octahedral 1.088 +PAYVAO Mn 2 6 25 2 5 6 Octahedral 1.11 +IWOWEX Mn 0 6 25 2 5 6 Octahedral 1.101 +ZEHPAD Mn 0 6 25 2 5 6 Octahedral 1.112 +LILBOY Mn 0 6 25 2 5 6 Octahedral 1.104 +LEXQAG Mn 0 6 25 2 5 6 Octahedral 1.143 +SOHJIJ Mn 0 6 25 2 5 6 Octahedral 1.117 +YOYVOY Mn 0 6 25 2 5 6 Octahedral 1.102 +UMIPIP Mn 2 6 25 2 5 6 Octahedral 1.109 +FUWVOJ Mn 0 6 25 2 5 6 Octahedral 1.101 +QOLZOH Mn 0 6 25 2 5 6 Octahedral 1.115 +EQEFAI Mn 0 6 25 2 5 6 Octahedral 1.103 +LOYYUT Mn 0 6 25 2 5 6 Octahedral 1.108 +PEJCOZ Mn 0 6 25 2 5 6 Octahedral 1.146 +WAMLEC Mn 0 6 25 2 5 6 Octahedral 1.089 +JIPDUI Mn 0 6 25 2 5 6 Octahedral 1.101 +FESXOQ Mn 0 6 25 2 5 6 Octahedral 1.094 +CETGOX Mn 2 6 25 2 5 6 Octahedral 1.113 +PIKZIT Mn 0 6 25 2 5 6 Octahedral 1.118 +OMIXAL Mn 0 6 25 2 5 6 Octahedral 1.112 +AQSUMN Mn 0 6 25 2 5 6 Octahedral 1.086 +QOYWIN Mn 0 6 25 2 5 6 Octahedral 1.037 +TECFIR Mn 0 6 25 2 5 6 Octahedral 1.09 +TOLMEO Mn 0 6 25 2 5 6 Octahedral 1.094 +BEMWUM Mn 2 6 25 2 5 6 Octahedral 1.091 +AGUBAF Mn 0 6 25 2 5 6 Octahedral 1.085 +AGLCMN Mn 0 6 25 2 5 6 Octahedral 1.086 +WIFSEJ Mn 0 6 25 2 5 6 Octahedral 1.094 +IFOPAU Mn -1 6 25 2 5 6 Octahedral 1.087 +NEHWIH Mn 0 6 25 2 5 6 Octahedral 1.122 +CAHGAW Mn 0 6 25 2 5 6 Trigonal prismatic 1.117 +KIYWAR Mn 0 6 25 2 5 6 Trigonal prismatic 1.137 +MAMCOS Mn 1 6 25 2 5 6 Trigonal prismatic 1.114 +WULSIF Mn 1 6 25 2 5 6 Trigonal prismatic 1.108 +VAVDOM Mn 1 6 25 2 5 6 Trigonal prismatic 1.105 +EVOJEE Mn 2 6 25 2 5 6 Trigonal prismatic 1.135 +FAHFUQ Mn 1 6 25 2 5 6 Trigonal prismatic 1.113 +OMUHAG Mn 0 6 25 2 5 6 Trigonal prismatic 1.135 +XEHYER Mn 0 6 25 2 5 6 Trigonal prismatic 1.162 +RAFLIV Mn 0 6 25 2 5 6 Trigonal prismatic 1.119 +UYAHOS Mn 0 6 25 2 5 6 Trigonal prismatic 1.099 +TOPKAM Mn 0 6 25 2 5 6 Trigonal prismatic 1.165 +BIPJER Mn -2 6 25 2 5 6 Trigonal prismatic 1.096 +LERZOX Mn 0 6 25 2 5 6 Trigonal prismatic 1.117 +SOMTIY Mn 1 6 25 2 5 7 Capped trigonal prismatic 1.197 +TAVWAP Mn 1 6 25 2 5 7 Capped trigonal prismatic 1.179 +TAFTAV Mn 2 6 25 2 5 7 Capped trigonal prismatic 1.189 +HIXZUJ Mn 2 6 25 2 5 7 Capped trigonal prismatic 1.179 +ROPBON Mn 2 6 25 2 5 7 Capped trigonal prismatic 1.171 +WAXJIQ Mn 0 6 25 2 5 7 Capped trigonal prismatic 1.165 +SAFTUP Mn 0 6 25 2 5 7 Capped trigonal prismatic 1.171 +SAFTID Mn 0 6 25 2 5 7 Capped trigonal prismatic 1.168 +ZEBCEQ Mn 0 6 25 2 5 7 Capped trigonal prismatic 1.17 +SAFTOJ Mn 0 6 25 2 5 7 Capped trigonal prismatic 1.171 +XAGLAU Mn 1 6 25 2 5 7 Capped trigonal prismatic 1.188 +GARQIB Mn 0 6 25 2 5 7 Capped trigonal prismatic 1.166 +MUCBIV Mn 2 6 25 2 5 7 Capped trigonal prismatic 1.164 +UDUGUY Mn 0 6 25 2 5 7 Pentagonal bipyramidal 1.15 +XIDNON Mn 0 6 25 2 5 7 Pentagonal bipyramidal 1.163 +PIHWEI Mn 0 6 25 2 5 7 Pentagonal bipyramidal 1.172 +DUQQAJ Mn 0 6 25 2 5 7 Pentagonal bipyramidal 1.15 +BUCRAS Mn 1 6 25 2 5 7 Pentagonal bipyramidal 1.136 +OJUHAF Mn 0 6 25 2 5 7 Pentagonal bipyramidal 1.167 +ATOMOM Mn 2 6 25 2 5 7 Pentagonal bipyramidal 1.153 +WABMOB Mn 0 6 25 2 5 7 Pentagonal bipyramidal 1.143 +OKEMUO Mn 0 6 25 2 5 7 Pentagonal bipyramidal 1.133 +TIRDUU Mn 2 6 25 2 5 7 Pentagonal bipyramidal 1.159 +UHEPED Mn 2 6 25 2 5 7 Pentagonal bipyramidal 1.15 +XIMHAD Mn 0 6 25 2 5 7 Pentagonal bipyramidal 1.165 +CEDXIT Mn 2 6 25 2 5 7 Pentagonal bipyramidal 1.142 +OJEBUB Mn 0 6 25 2 5 7 Pentagonal bipyramidal 1.145 +SAFTEZ Mn 0 6 25 2 5 7 Pentagonal bipyramidal 1.163 +SEPPUZ Mn 0 6 25 2 5 7 Pentagonal bipyramidal 1.167 +UGEKAT Mn 1 6 25 2 5 7 Pentagonal bipyramidal 1.153 +DITQEE Mn 0 6 25 2 5 7 Pentagonal bipyramidal 1.153 +XAHLOI Mn 0 6 25 2 5 7 Pentagonal bipyramidal 1.16 +RIHLAY Mn 0 6 25 2 5 7 Pentagonal bipyramidal 1.156 +UNONOB Mn 0 6 25 2 5 7 Pentagonal bipyramidal 1.174 +TOPJEO Mn 2 6 25 2 5 7 Pentagonal bipyramidal 1.146 +QETLAF Mn 1 6 25 2 5 7 Pentagonal bipyramidal 1.155 +TEVLAK Mn 0 6 25 2 5 7 Pentagonal bipyramidal 1.166 +TUSBOZ Mn 0 6 25 2 5 7 Pentagonal bipyramidal 1.171 +NUNTAR Mn 0 6 25 2 5 7 Pentagonal bipyramidal 1.142 +JOXJAH Mn 2 6 25 2 5 8 Cube 1.24 +HUDGOC Mn 2 6 25 2 5 8 Dodecahedral 1.286 +NEPMEC Mn -2 6 25 2 5 8 Dodecahedral 1.209 +SAFVAX Mn 0 6 25 2 5 8 Dodecahedral 1.201 +ROPBIH Mn 0 6 25 2 5 8 Dodecahedral 1.211 +NIJZEM Mn 0 6 25 2 5 8 Dodecahedral 1.206 +BIKDAA Mn 0 6 25 2 5 8 Dodecahedral 1.215 +OLENAU Mn 0 6 25 2 5 8 Dodecahedral 1.31 +KAXMEB Mn 0 5 25 3 4 3 Trigonal planar 0.848 +ZOWPAF Mn 0 5 25 3 4 4 Square planar 0.95 +DOVKUV Mn 0 5 25 3 4 5 Square pyramidal 0.905 +ZERDIJ Mn 0 5 25 3 4 5 Square pyramidal 0.894 +UBOFOG Mn 0 5 25 3 4 5 Square pyramidal 0.94 +LILLEZ Mn 0 5 25 3 4 5 Square pyramidal 0.927 +ROMSUI Mn 0 5 25 3 4 5 Square pyramidal 0.934 +BEPRET Mn 0 5 25 3 4 5 Square pyramidal 0.906 +BUXYIE Mn 0 5 25 3 4 5 Square pyramidal 0.942 +YAGBIR Mn 0 5 25 3 4 5 Square pyramidal 0.924 +UZEVUR Mn 1 5 25 3 4 5 Square pyramidal 0.985 +KAWCIU Mn 0 5 25 3 4 5 Square pyramidal 0.913 +AWOLOO Mn 0 5 25 3 4 5 Square pyramidal 0.924 +PENHOI Mn -1 5 25 3 4 5 Square pyramidal 0.927 +WOPGIS Mn -1 5 25 3 4 5 Square pyramidal 0.95 +FOCSOF Mn 0 5 25 3 4 5 Trigonal bipyramidal 0.959 +VULMOE Mn 0 5 25 3 4 5 Trigonal bipyramidal 1.015 +NEDGIM Mn 0 5 25 3 4 5 Trigonal bipyramidal 0.927 +WACDAF Mn 0 5 25 3 4 5 Trigonal bipyramidal 0.935 +VAWNIQ Mn 0 5 25 3 4 5 Trigonal bipyramidal 0.942 +NIWTOC Mn -1 5 25 3 4 5 Trigonal bipyramidal 0.944 +MOZRIC Mn 0 5 25 3 4 5 Trigonal bipyramidal 0.924 +COJGUG Mn 0 5 25 3 4 5 Trigonal bipyramidal 0.937 +COJHAN Mn -1 5 25 3 4 5 Trigonal bipyramidal 0.924 +HIMLIZ Mn 0 5 25 3 4 6 Octahedral 0.987 +WUYFIH Mn -3 3 25 3 4 6 Octahedral 0.911 +PAXVAM Mn 0 5 25 3 4 6 Octahedral 0.98 +TUDJEH Mn 0 5 25 3 4 6 Octahedral 0.99 +VUMSUT Mn 0 5 25 3 4 6 Octahedral 0.986 +PUHWUL Mn 1 5 25 3 4 6 Octahedral 1.006 +AXISIJ Mn 0 5 25 3 4 6 Octahedral 0.99 +FIZQIP Mn 1 5 25 3 4 6 Octahedral 0.992 +EJEVEV Mn 1 5 25 3 4 6 Octahedral 1.017 +RULVEA Mn 0 5 25 3 4 6 Octahedral 0.988 +BEPTIA Mn 0 5 25 3 4 6 Octahedral 0.987 +PUJBAX Mn -2 5 25 3 4 6 Octahedral 0.982 +JAFVOB Mn -1 5 25 3 4 6 Octahedral 0.981 +ALIYOJ Mn 0 5 25 3 4 6 Octahedral 0.988 +WIVDUB Mn 0 5 25 3 4 6 Octahedral 0.981 +CAXVAZ Mn 1 5 25 3 4 6 Octahedral 0.986 +TAKDEQ Mn -1 5 25 3 4 6 Octahedral 0.983 +SUPKIY Mn 1 5 25 3 4 6 Octahedral 0.988 +ITEREF Mn 0 5 25 3 4 6 Octahedral 0.996 +HOCREX Mn 1 5 25 3 4 6 Octahedral 0.998 +XELNAD Mn 1 5 25 3 4 6 Octahedral 1.017 +CEXJEW Mn 1 5 25 3 4 6 Octahedral 1.024 +SAPJUO Mn 1 5 25 3 4 6 Octahedral 0.996 +TEHGAQ Mn 1 5 25 3 4 6 Octahedral 0.977 +VAGCAH Mn 1 5 25 3 4 6 Octahedral 0.996 +REXCUS Mn 0 5 25 3 4 6 Octahedral 0.968 +JEDJAE Mn -5 5 25 3 4 6 Octahedral 0.996 +VOBCEV Mn -3 5 25 3 4 6 Octahedral 0.971 +MNMTBH Mn 0 5 25 3 4 6 Octahedral 0.979 +MOTCMN Mn 0 5 25 3 4 6 Octahedral 1.015 +NUNWUP Fe 0 3 26 0 6 4 Tetrahedral 0.798 +FONPUT Fe 0 1 26 0 6 5 Square pyramidal 0.822 +MALGAI Fe 0 1 26 0 6 5 Square pyramidal 0.814 +CAFTIM Fe 0 1 26 0 6 5 Trigonal bipyramidal 0.824 +SIXDUB Fe 0 1 26 0 6 5 Trigonal bipyramidal 0.805 +JASRIF Fe 0 1 26 0 6 5 Trigonal bipyramidal 0.82 +GAMQEQ Fe 0 1 26 0 6 5 Trigonal bipyramidal 0.811 +LASXIM Fe 0 1 26 0 6 5 Trigonal bipyramidal 0.814 +ZURDEV Fe 0 1 26 0 6 5 Trigonal bipyramidal 0.814 +FASSEX Fe 0 1 26 0 6 5 Trigonal bipyramidal 0.797 +ISIYAK Fe 0 1 26 0 6 5 Trigonal bipyramidal 0.817 +POPFEC10 Fe 0 1 26 0 6 5 Trigonal bipyramidal 0.805 +QIVYEZ Fe 0 5 26 2 6 2 Linear 0.996 +FEGVOE Fe 0 5 26 2 6 2 Linear 0.866 +DABSOP Fe 0 5 26 2 6 3 T-shaped 0.948 +KUGWIT Fe 0 5 26 2 6 3 T-shaped 0.942 +ULOVUO Fe 0 5 26 2 6 3 Trigonal planar 0.939 +INEDEM Fe 0 5 26 2 6 3 Trigonal planar 0.911 +QUDDOJ Fe -1 5 26 2 6 3 Trigonal planar 0.988 +NIDMOE Fe 0 5 26 2 6 3 Trigonal planar 0.989 +ULOXUQ Fe 0 5 26 2 6 3 Trigonal planar 0.962 +EYITAJ Fe 0 5 26 2 6 3 Trigonal planar 0.966 +FIYFEB Fe -1 5 26 2 6 3 Trigonal planar 0.99 +BIJJAG Fe 0 5 26 2 6 3 Trigonal planar 0.959 +RIRFEF Fe 0 5 26 2 6 3 Trigonal planar 0.971 +VEVWEY Fe -1 5 26 2 6 3 Trigonal planar 0.954 +HURSIX Fe -1 5 26 2 6 3 Trigonal planar 0.927 +LIHRUR Fe -1 5 26 2 6 3 Trigonal planar 0.923 +NASJAT Fe 0 5 26 2 6 3 Trigonal planar 0.945 +BOXSEO Fe -1 5 26 2 6 3 Trigonal planar 0.943 +QUSHET Fe -1 5 26 2 6 3 Trigonal planar 0.986 +ONUQAR Fe 0 5 26 2 6 3 Trigonal planar 0.931 +GAXZEN Fe 0 5 26 2 6 3 Trigonal planar 0.989 +VEYTAW Fe -1 5 26 2 6 3 Trigonal planar 0.914 +SAYZAV Fe 0 5 26 2 6 4 Seesaw 1.029 +GUCBAJ Fe 0 5 26 2 6 4 Seesaw 1.012 +SABDAB Fe 0 5 26 2 6 4 Seesaw 1.029 +FEVFET Fe 0 5 26 2 6 4 Seesaw 1.054 +ODUXIX Fe 0 5 26 2 6 4 Seesaw 1.018 +LUNGOS Fe 0 5 26 2 6 4 Seesaw 0.986 +LUYXUZ Fe 0 5 26 2 6 4 Seesaw 1.012 +JEXKIH Fe 0 5 26 2 6 4 Seesaw 1.009 +DALPEO Fe 0 5 26 2 6 4 Seesaw 1.002 +ILOLOM Fe 0 5 26 2 6 4 Seesaw 1.023 +TICMAW Fe 0 5 26 2 6 4 Seesaw 1.035 +IXAROP Fe 0 5 26 2 6 4 Seesaw 1.017 +AHUGOA Fe 0 5 26 2 6 4 Seesaw 0.988 +MASNUR Fe 0 5 26 2 6 4 Seesaw 1.001 +JIXLEH Fe 0 5 26 2 6 4 Seesaw 1.021 +GAMZEA Fe 0 3 26 2 6 4 Square planar 0.944 +GAMZAW Fe 0 3 26 2 6 4 Square planar 0.938 +QAVFID Fe 0 5 26 2 6 4 Square planar 1.081 +QOPWOK Fe 0 3 26 2 6 4 Square planar 0.927 +GEPPEX Fe 0 3 26 2 6 4 Square planar 0.869 +FOSKEF Fe 1 5 26 2 6 4 Square planar 1.011 +RALNUO Fe 0 3 26 2 6 4 Square planar 0.883 +SUSGEV Fe 0 3 26 2 6 4 Square planar 0.893 +XIYPAY Fe -2 5 26 2 6 4 Square planar 1.0 +UTASAM Fe -2 5 26 2 6 4 Square planar 1.006 +MAJYOM Fe -2 3 26 2 6 4 Square planar 0.89 +XIMSAO Fe -2 5 26 2 6 4 Tetrahedral 0.948 +OYILIT Fe -1 5 26 2 6 4 Tetrahedral 0.962 +ULOVEY Fe 0 5 26 2 6 4 Tetrahedral 1.012 +QOXKUL Fe 0 5 26 2 6 4 Tetrahedral 0.963 +YOJVOJ Fe 0 5 26 2 6 4 Tetrahedral 0.965 +DECKED Fe 0 5 26 2 6 4 Tetrahedral 0.967 +DECLAA Fe 0 5 26 2 6 4 Tetrahedral 0.973 +UBOMEG Fe 0 5 26 2 6 4 Tetrahedral 0.95 +NENWEK Fe 0 5 26 2 6 4 Tetrahedral 0.97 +AJALIH Fe 0 5 26 2 6 4 Tetrahedral 0.965 +MEJZAF Fe 0 5 26 2 6 4 Tetrahedral 0.96 +YOWZOB Fe 0 5 26 2 6 4 Tetrahedral 1.036 +RUMZOP Fe 0 5 26 2 6 4 Tetrahedral 1.066 +OYUKOK Fe 0 5 26 2 6 4 Tetrahedral 1.008 +OTOTEX Fe 0 5 26 2 6 4 Tetrahedral 0.985 +WUSFEX Fe 0 5 26 2 6 4 Tetrahedral 0.985 +HONGAV Fe 0 5 26 2 6 4 Tetrahedral 0.977 +OZIREV Fe 0 5 26 2 6 4 Tetrahedral 1.077 +UNEHIG Fe 1 5 26 2 6 4 Tetrahedral 1.042 +QAYBAT Fe 0 5 26 2 6 4 Tetrahedral 1.017 +DUSSOB Fe 0 5 26 2 6 4 Tetrahedral 1.006 +ASUTUD Fe 0 5 26 2 6 4 Tetrahedral 1.102 +RENGAV Fe 0 5 26 2 6 4 Tetrahedral 1.116 +EDIDED Fe 0 5 26 2 6 4 Tetrahedral 0.998 +GAMZIE Fe 0 5 26 2 6 4 Tetrahedral 1.042 +UPIMAI Fe 0 5 26 2 6 4 Tetrahedral 0.992 +GAMZOK Fe 0 5 26 2 6 4 Tetrahedral 1.019 +HIPLIC Fe 0 5 26 2 6 4 Tetrahedral 1.073 +QOSGEL Fe 1 5 26 2 6 4 Tetrahedral 1.05 +RIPHEG Fe 0 5 26 2 6 4 Tetrahedral 1.04 +KUGXOA Fe 0 5 26 2 6 4 Tetrahedral 0.981 +MASPED Fe 0 5 26 2 6 4 Tetrahedral 1.039 +SOQLUF Fe 0 5 26 2 6 4 Tetrahedral 1.036 +RUWKEA Fe 0 5 26 2 6 4 Tetrahedral 1.058 +OGEVUS Fe 0 5 26 2 6 4 Tetrahedral 1.019 +RIRFIJ Fe -1 5 26 2 6 4 Tetrahedral 0.992 +KISMIJ Fe -2 5 26 2 6 4 Tetrahedral 0.979 +WEHWAI Fe -1 5 26 2 6 4 Tetrahedral 0.985 +OYIKOY Fe -1 5 26 2 6 4 Tetrahedral 0.981 +OYIKUE Fe -1 5 26 2 6 4 Tetrahedral 0.98 +VIBRIK Fe 0 5 26 2 6 4 Tetrahedral 1.011 +PUXRAC Fe 0 5 26 2 6 4 Tetrahedral 0.992 +CORSIO Fe 0 5 26 2 6 4 Tetrahedral 0.983 +CORSUA Fe 0 5 26 2 6 4 Tetrahedral 0.994 +DECKAZ Fe 0 5 26 2 6 4 Tetrahedral 0.983 +DECKUT Fe 0 5 26 2 6 4 Tetrahedral 0.991 +DECLEE Fe 0 5 26 2 6 4 Tetrahedral 0.986 +IROJEF Fe 0 5 26 2 6 4 Tetrahedral 0.968 +AJALED Fe 0 5 26 2 6 4 Tetrahedral 0.984 +DAJBAS Fe 0 5 26 2 6 4 Tetrahedral 0.973 +TACSAU Fe 0 5 26 2 6 4 Tetrahedral 0.975 +HIPLAU Fe 0 5 26 2 6 4 Tetrahedral 1.037 +VISVEA Fe 0 5 26 2 6 4 Tetrahedral 1.014 +GEFTIV Fe 0 5 26 2 6 4 Tetrahedral 0.991 +RANJIA Fe 1 5 26 2 6 4 Tetrahedral 1.022 +NASJEX Fe 0 5 26 2 6 4 Tetrahedral 1.006 +AQUGEY Fe 0 5 26 2 6 4 Tetrahedral 1.037 +NUZSUX Fe 0 5 26 2 6 4 Tetrahedral 1.052 +MEJYOS Fe -2 5 26 2 6 4 Tetrahedral 0.946 +JUQDAA Fe -1 5 26 2 6 4 Tetrahedral 0.964 +ISIBIW Fe 0 5 26 2 6 4 Tetrahedral 0.973 +HOYHOS Fe 0 5 26 2 6 4 Tetrahedral 0.985 +VUMFOA01 Fe 0 5 26 2 6 4 Tetrahedral 0.972 +JUWGUD Fe 0 5 26 2 6 4 Tetrahedral 0.967 +KELXUU Fe 0 5 26 2 6 4 Tetrahedral 0.97 +INUVUJ Fe 0 5 26 2 6 4 Tetrahedral 1.023 +APUDUM Fe 0 5 26 2 6 4 Tetrahedral 0.989 +TEQPUA Fe -1 5 26 2 6 4 Tetrahedral 1.008 +INUXEV Fe 0 5 26 2 6 4 Tetrahedral 1.016 +YUBDAB Fe 0 5 26 2 6 4 Tetrahedral 0.989 +UGINOP Fe 0 5 26 2 6 4 Tetrahedral 1.047 +KUGXUG Fe 0 5 26 2 6 4 Tetrahedral 0.995 +MOFMAV Fe 0 5 26 2 6 4 Tetrahedral 0.981 +XOBBIZ Fe 0 5 26 2 6 4 Tetrahedral 1.011 +KIQMAB Fe 0 5 26 2 6 4 Tetrahedral 1.022 +KUGXIU Fe 0 5 26 2 6 4 Tetrahedral 0.998 +SAKWOS Fe 0 5 26 2 6 4 Tetrahedral 1.062 +MASPAZ Fe 0 5 26 2 6 4 Tetrahedral 1.005 +QUSJAQ Fe 0 5 26 2 6 4 Tetrahedral 0.974 +IXASAC Fe 0 5 26 2 6 4 Tetrahedral 1.021 +EGAMUX Fe 0 1 26 2 6 4 Tetrahedral 0.802 +FIMPIB Fe -1 1 26 2 6 4 Tetrahedral 0.787 +ZAZNOD Fe -1 5 26 2 6 4 Tetrahedral 0.986 +RIVWEA Fe 0 5 26 2 6 4 Tetrahedral 1.016 +HECVER Fe 0 5 26 2 6 4 Tetrahedral 1.034 +YECRII Fe 0 5 26 2 6 4 Tetrahedral 1.017 +ITEXIO Fe -1 5 26 2 6 4 Tetrahedral 0.989 +LUGPAE Fe 0 5 26 2 6 4 Tetrahedral 1.008 +YEWSOI Fe 0 5 26 2 6 4 Tetrahedral 0.977 +YEWSUO Fe 0 5 26 2 6 4 Tetrahedral 0.975 +GOFXIK Fe -2 5 26 2 6 4 Tetrahedral 0.967 +MUQPOF Fe -2 5 26 2 6 4 Tetrahedral 0.983 +RIRFAB Fe -2 5 26 2 6 4 Tetrahedral 0.95 +VEYWOO Fe 0 5 26 2 6 5 Square pyramidal 1.057 +ZUMSEH Fe 0 5 26 2 6 5 Square pyramidal 1.048 +MINWIR Fe 0 5 26 2 6 5 Square pyramidal 1.054 +CUCWEE Fe 0 5 26 2 6 5 Square pyramidal 1.052 +ZELDAX Fe 0 5 26 2 6 5 Square pyramidal 1.05 +ULITUH Fe 0 5 26 2 6 5 Square pyramidal 1.114 +LUTFAJ Fe 0 1 26 2 6 5 Square pyramidal 0.852 +CEMWIC Fe 0 5 26 2 6 5 Square pyramidal 1.106 +FOQBOC Fe -1 5 26 2 6 5 Square pyramidal 1.021 +KAXYUE Fe 0 1 26 2 6 5 Square pyramidal 0.885 +MARJIZ Fe 1 5 26 2 6 5 Square pyramidal 1.112 +TEBKOC Fe -1 5 26 2 6 5 Square pyramidal 1.03 +WEMWAO Fe 0 1 26 2 6 5 Square pyramidal 0.851 +QITBEA Fe 0 5 26 2 6 5 Square pyramidal 1.098 +OCUJOL Fe 0 5 26 2 6 5 Square pyramidal 1.074 +QIZCAF Fe 0 5 26 2 6 5 Square pyramidal 1.064 +QIXDIM Fe 0 5 26 2 6 5 Square pyramidal 1.074 +KIKNUQ Fe 0 5 26 2 6 5 Square pyramidal 1.063 +XOMCOS Fe 0 5 26 2 6 5 Square pyramidal 1.055 +TAPZUI Fe 1 5 26 2 6 5 Square pyramidal 1.122 +TEBKIW Fe -1 5 26 2 6 5 Square pyramidal 1.03 +YORSEE Fe 1 5 26 2 6 5 Square pyramidal 1.048 +VEKNAA Fe -1 5 26 2 6 5 Square pyramidal 1.078 +RAVYIX Fe 1 5 26 2 6 5 Square pyramidal 1.104 +SIXRAV Fe 0 5 26 2 6 5 Square pyramidal 1.07 +TICJEX Fe 2 5 26 2 6 5 Square pyramidal 1.105 +EJOJOC Fe 0 5 26 2 6 5 Square pyramidal 1.08 +DESSAW Fe 1 5 26 2 6 5 Square pyramidal 1.069 +ZUJRAZ Fe 0 5 26 2 6 5 Square pyramidal 1.03 +NENNEA Fe 1 3 26 2 6 5 Square pyramidal 1.014 +IXARAB Fe 0 5 26 2 6 5 Square pyramidal 1.067 +TEBRUP Fe 0 5 26 2 6 5 Square pyramidal 1.027 +TEBLAP Fe -1 5 26 2 6 5 Square pyramidal 1.029 +IXAQII Fe 0 5 26 2 6 5 Square pyramidal 1.072 +EDISOA Fe 0 5 26 2 6 5 Square pyramidal 1.095 +PYESAF10 Fe 0 5 26 2 6 5 Square pyramidal 1.03 +UPIFUV Fe 0 5 26 2 6 5 Square pyramidal 1.058 +BAYHUF Fe 0 5 26 2 6 5 Square pyramidal 1.108 +DEXFOB Fe 0 5 26 2 6 5 Square pyramidal 1.07 +DUFLEW Fe 0 5 26 2 6 5 Square pyramidal 1.038 +ZILZUP Fe 0 5 26 2 6 5 Square pyramidal 1.091 +NEJBIN Fe -1 5 26 2 6 5 Square pyramidal 1.106 +PAYHIG Fe 0 5 26 2 6 5 Square pyramidal 1.067 +JASBOV Fe 0 5 26 2 6 5 Square pyramidal 1.049 +PEPPEI Fe 0 3 26 2 6 5 Square pyramidal 0.902 +QOBRIK Fe 0 5 26 2 6 5 Trigonal bipyramidal 1.108 +CUQSEN Fe 0 5 26 2 6 5 Trigonal bipyramidal 1.107 +IMACEG Fe 0 5 26 2 6 5 Trigonal bipyramidal 1.064 +JOGYAH Fe 0 5 26 2 6 5 Trigonal bipyramidal 1.024 +YUMGOF Fe 0 5 26 2 6 5 Trigonal bipyramidal 1.077 +NAZRUC Fe 0 5 26 2 6 5 Trigonal bipyramidal 1.093 +ZUYNEM Fe 0 5 26 2 6 5 Trigonal bipyramidal 1.113 +ROFKOO Fe 0 5 26 2 6 5 Trigonal bipyramidal 1.122 +TEQQAH Fe -1 3 26 2 6 5 Trigonal bipyramidal 0.934 +NEYJUY Fe 0 5 26 2 6 5 Trigonal bipyramidal 1.093 +MONTIU Fe 0 5 26 2 6 5 Trigonal bipyramidal 1.073 +QIXCOR Fe 0 5 26 2 6 5 Trigonal bipyramidal 1.077 +PIYYON Fe 0 5 26 2 6 5 Trigonal bipyramidal 1.07 +WAFWEJ Fe 0 5 26 2 6 5 Trigonal bipyramidal 1.065 +WUMPOL Fe 0 5 26 2 6 5 Trigonal bipyramidal 1.08 +UJUPOF Fe 1 5 26 2 6 5 Trigonal bipyramidal 1.093 +SELSEI Fe 0 5 26 2 6 5 Trigonal bipyramidal 1.061 +NAZROW Fe 0 5 26 2 6 5 Trigonal bipyramidal 1.101 +WAJGUL Fe -1 5 26 2 6 5 Trigonal bipyramidal 1.062 +PEVHAC Fe 1 3 26 2 6 5 Trigonal bipyramidal 0.899 +VAKYOX Fe 2 5 26 2 6 5 Trigonal bipyramidal 1.075 +RITYOK Fe 2 5 26 2 6 5 Trigonal bipyramidal 1.081 +SIXMOC Fe 1 5 26 2 6 5 Trigonal bipyramidal 1.08 +LAYVOX Fe 1 5 26 2 6 5 Trigonal bipyramidal 1.09 +CAJFAV Fe 1 5 26 2 6 5 Trigonal bipyramidal 1.067 +VOVDIT Fe 0 5 26 2 6 5 Trigonal bipyramidal 1.058 +ECEWAL Fe 0 5 26 2 6 5 Trigonal bipyramidal 1.095 +VABFIQ Fe 0 5 26 2 6 5 Trigonal bipyramidal 1.067 +HEYPEG Fe 0 5 26 2 6 5 Trigonal bipyramidal 1.049 +BANLOR Fe 0 1 26 2 6 6 Octahedral 0.803 +MENWUY Fe 0 5 26 2 6 6 Octahedral 1.122 +EGUVOR Fe 0 5 26 2 6 6 Octahedral 1.114 +ZIZHOI Fe 0 1 26 2 6 6 Octahedral 0.91 +IDUBEO Fe -1 1 26 2 6 6 Octahedral 0.889 +GUTYAY Fe 0 1 26 2 6 6 Octahedral 0.924 +UDUMEL Fe 1 5 26 2 6 6 Octahedral 1.119 +FEWRIK Fe 1 5 26 2 6 6 Octahedral 1.117 +GEFZEX Fe 1 1 26 2 6 6 Octahedral 0.917 +CEHHON Fe 2 1 26 2 6 6 Octahedral 0.891 +BAMBAV Fe -4 1 26 2 6 6 Octahedral 0.891 +XESMUG Fe -2 1 26 2 6 6 Octahedral 0.883 +CADYEM Fe -1 1 26 2 6 6 Octahedral 0.865 +XIHVIT Fe -2 1 26 2 6 6 Octahedral 0.883 +DUGPIF Fe -2 1 26 2 6 6 Octahedral 0.885 +ILURIR Fe -3 1 26 2 6 6 Octahedral 0.922 +QOKSOY Fe 0 1 26 2 6 6 Octahedral 0.881 +AQIZEF Fe -2 1 26 2 6 6 Octahedral 0.886 +HAXCOA Fe -1 1 26 2 6 6 Octahedral 0.886 +CUCQIB Fe 0 1 26 2 6 6 Octahedral 0.871 +SAGFUB Fe 0 1 26 2 6 6 Octahedral 0.886 +DEKFAD Fe 0 1 26 2 6 6 Octahedral 0.883 +HIFCAD Fe 1 1 26 2 6 6 Octahedral 0.902 +IDUBOY Fe -1 1 26 2 6 6 Octahedral 0.886 +AQIYAA Fe -2 1 26 2 6 6 Octahedral 0.894 +AQIYII Fe -1 1 26 2 6 6 Octahedral 0.893 +FOQNOP Fe 0 1 26 2 6 6 Octahedral 0.857 +NIVWOF Fe 0 1 26 2 6 6 Octahedral 0.882 +XABHIV Fe 1 1 26 2 6 6 Octahedral 0.852 +NEBKIR Fe -1 1 26 2 6 6 Octahedral 0.885 +CUCQUN Fe 0 1 26 2 6 6 Octahedral 0.88 +COSGEW Fe 0 1 26 2 6 6 Octahedral 0.883 +DEKFEH Fe 0 1 26 2 6 6 Octahedral 0.895 +GOJZIP Fe -1 1 26 2 6 6 Octahedral 0.948 +UCIWOS Fe 0 1 26 2 6 6 Octahedral 0.934 +SADRAU Fe 0 1 26 2 6 6 Octahedral 0.923 +VUJMAP Fe 0 1 26 2 6 6 Octahedral 0.935 +MALGIQ Fe 1 1 26 2 6 6 Octahedral 0.887 +UDUQAL Fe 0 1 26 2 6 6 Octahedral 0.859 +ITEXOU Fe -1 1 26 2 6 6 Octahedral 0.898 +ILASOE Fe 1 1 26 2 6 6 Octahedral 0.898 +QOSZON Fe 0 1 26 2 6 6 Octahedral 0.811 +PUCFID Fe 0 1 26 2 6 6 Octahedral 0.903 +AJIMOV Fe 0 1 26 2 6 6 Octahedral 0.903 +FURPEO Fe -2 1 26 2 6 6 Octahedral 0.96 +XOPSEB Fe 1 1 26 2 6 6 Octahedral 0.955 +UBEVOP Fe 0 1 26 2 6 6 Octahedral 0.922 +QEZYUP Fe 0 1 26 2 6 6 Octahedral 0.919 +ALEQEO Fe 0 1 26 2 6 6 Octahedral 0.916 +IFODIR Fe 0 1 26 2 6 6 Octahedral 0.908 +LALBUV Fe 0 1 26 2 6 6 Octahedral 0.915 +FERBEK Fe 0 1 26 2 6 6 Octahedral 0.923 +KAGXID Fe 0 1 26 2 6 6 Octahedral 0.905 +XILTIV Fe 0 1 26 2 6 6 Octahedral 0.9 +WAZWEC Fe 0 1 26 2 6 6 Octahedral 0.898 +HEYMIH Fe 2 1 26 2 6 6 Octahedral 0.894 +CECBOB Fe 0 1 26 2 6 6 Octahedral 0.897 +CPTCFE Fe 0 1 26 2 6 6 Octahedral 0.907 +TUTPAB Fe 0 1 26 2 6 6 Octahedral 0.913 +EWABUA Fe 0 1 26 2 6 6 Octahedral 0.92 +IJEZIJ Fe 1 1 26 2 6 6 Octahedral 0.925 +VUJLOC Fe 0 1 26 2 6 6 Octahedral 0.948 +TAGLES10 Fe 0 1 26 2 6 6 Octahedral 0.9 +XAXYEC Fe 0 1 26 2 6 6 Octahedral 0.886 +YOZYIW Fe 0 1 26 2 6 6 Octahedral 0.883 +YEQTOE Fe 0 1 26 2 6 6 Octahedral 0.88 +XUPJOI Fe 0 1 26 2 6 6 Octahedral 0.906 +ALILOX Fe 0 1 26 2 6 6 Octahedral 0.945 +YOZZET Fe 0 1 26 2 6 6 Octahedral 0.93 +BAYDEL Fe 0 1 26 2 6 6 Octahedral 0.952 +HUQFAA Fe 2 1 26 2 6 6 Octahedral 0.949 +LINROQ Fe 1 1 26 2 6 6 Octahedral 0.967 +DUDTUS Fe 2 1 26 2 6 6 Octahedral 0.927 +ITARIF Fe 0 1 26 2 6 6 Octahedral 0.945 +HUYDUB Fe 1 1 26 2 6 6 Octahedral 0.94 +GUTXEB Fe 1 1 26 2 6 6 Octahedral 0.935 +HEBMOQ Fe 0 1 26 2 6 6 Octahedral 0.927 +HASJEQ Fe 0 1 26 2 6 6 Octahedral 0.951 +CUXREV Fe 2 1 26 2 6 6 Octahedral 0.938 +NAJKIS Fe 2 1 26 2 6 6 Octahedral 0.911 +WEMVUH Fe 0 1 26 2 6 6 Octahedral 0.931 +WUTDAQ Fe 0 1 26 2 6 6 Octahedral 0.905 +MAFECL Fe -4 5 26 2 6 6 Octahedral 1.037 +XAKHOI Fe -2 5 26 2 6 6 Octahedral 1.118 +METYEQ Fe 0 5 26 2 6 6 Octahedral 1.12 +QIXDEI Fe 0 5 26 2 6 6 Octahedral 1.111 +WITBEJ Fe 0 5 26 2 6 6 Octahedral 1.121 +PIMMOQ Fe 0 5 26 2 6 6 Octahedral 1.109 +KITYOE Fe 0 5 26 2 6 6 Octahedral 1.117 +EYIRUA Fe 0 5 26 2 6 6 Octahedral 1.108 +IVEQEF Fe 0 5 26 2 6 6 Octahedral 1.107 +NISBEW Fe 0 1 26 2 6 6 Octahedral 0.92 +VUDXOH Fe 0 1 26 2 6 6 Octahedral 0.94 +SIXMES Fe 1 5 26 2 6 6 Octahedral 1.135 +DODWUQ Fe 0 5 26 2 6 6 Octahedral 1.098 +TIDCAL Fe 0 5 26 2 6 6 Octahedral 1.134 +WULSEB Fe 1 5 26 2 6 6 Octahedral 1.11 +PUQJAM Fe -1 5 26 2 6 6 Octahedral 1.117 +TUTMUS Fe 1 1 26 2 6 6 Octahedral 0.936 +GAHJEG Fe 1 1 26 2 6 6 Octahedral 0.93 +TAMZAJ Fe 1 1 26 2 6 6 Octahedral 0.885 +JACCUP Fe 0 1 26 2 6 6 Octahedral 0.895 +FEKPUG Fe 1 1 26 2 6 6 Octahedral 0.879 +GOCDEH Fe 0 1 26 2 6 6 Octahedral 0.958 +JAZCAO Fe 0 5 26 2 6 6 Octahedral 1.101 +LINRUW Fe 1 5 26 2 6 6 Octahedral 1.129 +ACEYOW Fe 2 5 26 2 6 6 Octahedral 1.094 +DOQRAC Fe 2 1 26 2 6 6 Octahedral 1.073 +PAZXAP Fe 2 1 26 2 6 6 Octahedral 0.989 +JOWGEH Fe 2 1 26 2 6 6 Octahedral 0.941 +YANKUW Fe 2 5 26 2 6 6 Octahedral 1.135 +ETOHIF Fe 0 5 26 2 6 6 Octahedral 1.116 +DELPOZ01 Fe 2 1 26 2 6 6 Octahedral 0.914 +ITERAB Fe 0 5 26 2 6 6 Octahedral 1.107 +NALPUL Fe 0 1 26 2 6 6 Octahedral 0.916 +DENYAZ Fe 2 1 26 2 6 6 Octahedral 0.945 +HOSRUD Fe 0 5 26 2 6 6 Octahedral 1.115 +XEVKIU Fe 2 5 26 2 6 6 Octahedral 1.128 +SUJVAW Fe 1 5 26 2 6 6 Octahedral 1.117 +OBOFOC Fe 2 1 26 2 6 6 Octahedral 0.914 +WOGMEL Fe 2 1 26 2 6 6 Octahedral 0.917 +YASPUE Fe 0 5 26 2 6 6 Octahedral 1.112 +IFEYOK Fe 2 1 26 2 6 6 Octahedral 0.922 +LOJVEN Fe 0 5 26 2 6 6 Octahedral 1.095 +OSELOO Fe 0 5 26 2 6 6 Octahedral 1.107 +GADMOR Fe -1 5 26 2 6 6 Octahedral 1.116 +JITWUF Fe 2 1 26 2 6 6 Octahedral 0.973 +DORPIJ Fe -1 5 26 2 6 6 Octahedral 1.11 +OFANER Fe 0 5 26 2 6 6 Octahedral 1.119 +CETFAI Fe 2 5 26 2 6 6 Octahedral 1.111 +ZEBSAA Fe 0 1 26 2 6 6 Octahedral 0.922 +GEDFIE Fe 2 1 26 2 6 6 Octahedral 0.907 +QENWUC Fe 2 1 26 2 6 6 Octahedral 0.922 +HEBPUZ Fe 0 1 26 2 6 6 Octahedral 0.953 +YAJLEA Fe 0 5 26 2 6 6 Octahedral 1.108 +ZILYIC Fe 0 5 26 2 6 6 Octahedral 1.113 +YAJLAW Fe 0 5 26 2 6 6 Octahedral 1.095 +HEYNOO Fe 0 1 26 2 6 6 Octahedral 0.932 +HEYNII Fe 0 1 26 2 6 6 Octahedral 0.931 +QEDCOR Fe 2 5 26 2 6 6 Octahedral 1.094 +GAYZEL Fe 0 5 26 2 6 6 Octahedral 1.105 +EGUZUB Fe 2 1 26 2 6 6 Octahedral 0.911 +LAXNON Fe 2 1 26 2 6 6 Octahedral 0.914 +LAXNUT Fe 2 1 26 2 6 6 Octahedral 0.914 +LILYOW Fe 1 5 26 2 6 6 Trigonal prismatic 1.108 +QUKTAS Fe 0 5 26 2 6 6 Trigonal prismatic 1.145 +HUMBEX Fe 4 5 26 2 6 6 Trigonal prismatic 1.127 +VAHGES Fe 1 5 26 2 6 6 Trigonal prismatic 1.152 +MATFUL Fe 0 5 26 2 6 6 Trigonal prismatic 1.121 +REGBUA Fe 0 5 26 2 6 6 Trigonal prismatic 1.148 +WOJLUC Fe 2 5 26 2 6 7 Capped trigonal prismatic 1.211 +HOGFIV Fe 0 5 26 2 6 7 Capped trigonal prismatic 1.187 +XEZMEU Fe 0 5 26 2 6 7 Pentagonal bipyramidal 1.15 +NUKPAM01 Fe 0 5 26 2 6 7 Pentagonal bipyramidal 1.172 +UBEXOQ Fe 2 5 26 2 6 7 Pentagonal bipyramidal 1.191 +KEHREV Fe 2 5 26 2 6 7 Pentagonal bipyramidal 1.172 +QOMQOZ Fe 1 5 26 2 6 7 Pentagonal bipyramidal 1.166 +SOTLET Fe 0 5 26 2 6 7 Pentagonal bipyramidal 1.189 +NELGOA Fe 2 5 26 2 6 8 Cube 1.325 +NAPYFE10 Fe 2 5 26 2 6 8 Dodecahedral 1.243 +HIDQUJ Fe 2 5 26 2 6 8 Dodecahedral 1.208 +HMSIAF13 Fe 0 6 26 3 5 3 Trigonal planar 0.907 +RUMNUK Fe 0 6 26 3 5 3 Trigonal planar 0.875 +MAKBUW Fe -1 4 26 3 5 4 Square planar 0.901 +BOWYUJ Fe -1 6 26 3 5 4 Tetrahedral 0.861 +OTOTIB Fe 0 6 26 3 5 4 Tetrahedral 0.902 +TOCSOV Fe -1 6 26 3 5 4 Tetrahedral 1.037 +MIVGUV Fe 0 6 26 3 5 4 Tetrahedral 0.926 +ISIKEA Fe -1 6 26 3 5 4 Tetrahedral 0.905 +ADIGEB Fe 0 6 26 3 5 4 Tetrahedral 0.963 +VEMYOB Fe 0 6 26 3 5 4 Tetrahedral 0.887 +MOBKET Fe 0 6 26 3 5 4 Tetrahedral 0.893 +MADLOV Fe 0 6 26 3 5 4 Tetrahedral 0.923 +LIBYOM Fe -1 6 26 3 5 4 Tetrahedral 0.94 +DABQED Fe 0 6 26 3 5 4 Tetrahedral 0.92 +CEXLUN Fe -1 6 26 3 5 4 Tetrahedral 0.905 +JUWHAK Fe 0 6 26 3 5 4 Tetrahedral 0.883 +SAYMIO Fe 0 6 26 3 5 4 Tetrahedral 0.892 +BOXSAK Fe -1 6 26 3 5 4 Tetrahedral 0.935 +ONAPOL Fe -1 6 26 3 5 4 Tetrahedral 0.952 +DABPOM Fe 0 6 26 3 5 4 Tetrahedral 0.951 +FIMPOH Fe 0 2 26 3 5 4 Tetrahedral 0.849 +MESROU Fe -1 6 26 3 5 4 Tetrahedral 0.898 +JURHIN Fe -1 6 26 3 5 4 Tetrahedral 0.92 +EWOBEX Fe 0 4 26 3 5 5 Square pyramidal 0.972 +QOCDUI01 Fe 0 4 26 3 5 5 Square pyramidal 0.96 +VIFKED Fe 0 4 26 3 5 5 Square pyramidal 0.952 +MANHEQ Fe -2 4 26 3 5 5 Square pyramidal 0.92 +DADJEX Fe 0 4 26 3 5 5 Square pyramidal 0.987 +ALALAA Fe 0 2 26 3 5 5 Square pyramidal 0.962 +HOGHEQ Fe 0 2 26 3 5 5 Square pyramidal 0.924 +EQACEF Fe -2 6 26 3 5 5 Square pyramidal 0.983 +RAKTAA Fe 0 6 26 3 5 5 Square pyramidal 0.991 +ECOPAO Fe 0 6 26 3 5 5 Square pyramidal 0.986 +PADJAH Fe 0 6 26 3 5 5 Square pyramidal 0.983 +EVILOM Fe 0 6 26 3 5 5 Square pyramidal 0.977 +QOLKIM Fe 0 4 26 3 5 5 Square pyramidal 0.948 +WIYSII Fe 0 6 26 3 5 5 Square pyramidal 0.975 +NAVVIQ Fe -2 4 26 3 5 5 Square pyramidal 0.939 +VEKNOO Fe -2 4 26 3 5 5 Square pyramidal 0.947 +GITHEY Fe 0 4 26 3 5 5 Square pyramidal 0.939 +MIJSOP Fe 0 4 26 3 5 5 Square pyramidal 0.929 +MOCMAT Fe -1 4 26 3 5 5 Square pyramidal 0.921 +TIQZIE Fe 0 4 26 3 5 5 Square pyramidal 0.982 +QITWUO Fe 1 4 26 3 5 5 Square pyramidal 0.99 +RISNOZ Fe 0 6 26 3 5 5 Square pyramidal 1.001 +ZOFDAC Fe 0 6 26 3 5 5 Square pyramidal 0.977 +BESBEI Fe 0 6 26 3 5 5 Square pyramidal 1.023 +QORDUY Fe -1 4 26 3 5 5 Square pyramidal 0.936 +BEKZIA Fe 0 6 26 3 5 5 Square pyramidal 0.974 +ILONUV Fe -2 6 26 3 5 5 Square pyramidal 0.985 +QORFAG Fe -2 4 26 3 5 5 Square pyramidal 0.938 +UCECEL Fe -1 4 26 3 5 5 Square pyramidal 0.935 +TALMEZ Fe -1 4 26 3 5 5 Square pyramidal 0.939 +UCIVOT Fe -2 6 26 3 5 5 Square pyramidal 0.97 +ULEVIQ Fe -1 4 26 3 5 5 Square pyramidal 0.945 +YITRUO Fe 1 2 26 3 5 5 Square pyramidal 0.885 +MANHAM Fe -2 4 26 3 5 5 Square pyramidal 0.936 +YEHDUM Fe 0 6 26 3 5 5 Trigonal bipyramidal 1.063 +MOMXUJ Fe 0 6 26 3 5 5 Trigonal bipyramidal 0.982 +LOQLOS Fe 0 4 26 3 5 5 Trigonal bipyramidal 0.936 +ZAVTUN Fe 0 6 26 3 5 5 Trigonal bipyramidal 0.997 +YOZRAG Fe -2 6 26 3 5 5 Trigonal bipyramidal 0.978 +VILRIT Fe 0 6 26 3 5 5 Trigonal bipyramidal 0.994 +KAJTOE Fe 0 6 26 3 5 5 Trigonal bipyramidal 0.976 +GEPVEF Fe 0 4 26 3 5 5 Trigonal bipyramidal 0.955 +SAVHOM Fe 0 4 26 3 5 5 Trigonal bipyramidal 0.934 +SAVHIG Fe 0 6 26 3 5 5 Trigonal bipyramidal 1.014 +DAQXEY Fe 0 6 26 3 5 5 Trigonal bipyramidal 0.992 +IBEGIH Fe 0 6 26 3 5 5 Trigonal bipyramidal 0.999 +KAFLUA Fe 0 6 26 3 5 5 Trigonal bipyramidal 0.994 +MAHNOZ Fe 0 6 26 3 5 5 Trigonal bipyramidal 0.971 +EDECEX Fe 0 4 26 3 5 5 Trigonal bipyramidal 0.955 +QAYCEY Fe 0 6 26 3 5 5 Trigonal bipyramidal 1.001 +FIHFIO Fe 0 6 26 3 5 5 Trigonal bipyramidal 0.983 +HITHOI Fe 0 6 26 3 5 5 Trigonal bipyramidal 0.995 +GADTIS Fe 0 6 26 3 5 5 Trigonal bipyramidal 0.997 +KAGCIH Fe -1 4 26 3 5 5 Trigonal bipyramidal 0.93 +TAVHOO Fe -1 6 26 3 5 5 Trigonal bipyramidal 1.017 +NOFJOI Fe -1 6 26 3 5 5 Trigonal bipyramidal 1.005 +DOGHOY Fe 1 6 26 3 5 5 Trigonal bipyramidal 1.007 +JIWFUQ Fe 0 6 26 3 5 5 Trigonal bipyramidal 0.986 +GUQYOH Fe 0 6 26 3 5 5 Trigonal bipyramidal 1.002 +ZAZNUJ Fe 0 6 26 3 5 5 Trigonal bipyramidal 1.015 +JIWMIL Fe 0 6 26 3 5 5 Trigonal bipyramidal 0.98 +UCIVUZ Fe -2 6 26 3 5 5 Trigonal bipyramidal 0.972 +KAGRES Fe -1 4 26 3 5 5 Trigonal bipyramidal 0.929 +QEFDOW Fe 0 6 26 3 5 6 Octahedral 1.039 +UHEHAQ Fe 0 6 26 3 5 6 Octahedral 1.033 +GUTXOL Fe 1 2 26 3 5 6 Octahedral 0.937 +HAXXOU Fe 0 6 26 3 5 6 Octahedral 1.062 +SUTQAB Fe 0 6 26 3 5 6 Octahedral 1.043 +QOZZUB Fe 0 6 26 3 5 6 Octahedral 1.039 +VOPPEV Fe 0 6 26 3 5 6 Octahedral 1.013 +JIHPAR Fe -3 2 26 3 5 6 Octahedral 0.911 +HIYRUE Fe -2 2 26 3 5 6 Octahedral 0.929 +SEDREZ Fe -1 2 26 3 5 6 Octahedral 0.944 +YITNAR Fe -1 2 26 3 5 6 Octahedral 0.925 +SAGCAF Fe 0 2 26 3 5 6 Octahedral 0.948 +ERIMEZ02 Fe -1 2 26 3 5 6 Octahedral 0.976 +GICZIB Fe 1 2 26 3 5 6 Octahedral 0.943 +YAQBEA Fe 1 2 26 3 5 6 Octahedral 0.956 +KAGXUP Fe 1 2 26 3 5 6 Octahedral 0.911 +LIJBUB Fe 0 2 26 3 5 6 Octahedral 0.968 +XIBBAL Fe 1 2 26 3 5 6 Octahedral 0.946 +UHIBAP Fe 0 2 26 3 5 6 Octahedral 0.933 +QEHZIN Fe 2 2 26 3 5 6 Octahedral 0.947 +VOCBAQ Fe -2 6 26 3 5 6 Octahedral 1.036 +YILLAH Fe -1 6 26 3 5 6 Octahedral 1.044 +VOBYEQ Fe -1 6 26 3 5 6 Octahedral 1.03 +POJREL Fe 0 6 26 3 5 6 Octahedral 1.05 +ATOFAS Fe -2 6 26 3 5 6 Octahedral 1.042 +REXMIQ Fe 0 6 26 3 5 6 Octahedral 1.062 +ZULGAQ Fe -2 6 26 3 5 6 Octahedral 1.031 +YITVON Fe 0 6 26 3 5 6 Octahedral 1.027 +RUHMAI Fe 1 6 26 3 5 6 Octahedral 1.065 +JIKPAX Fe 1 6 26 3 5 6 Octahedral 1.049 +RIPXIX Fe 0 6 26 3 5 6 Octahedral 1.049 +GAVNEX Fe 0 6 26 3 5 6 Octahedral 1.039 +QARPEF Fe 0 6 26 3 5 6 Octahedral 1.042 +EHEXOE Fe -2 6 26 3 5 6 Octahedral 1.03 +SAHZIK Fe 0 6 26 3 5 6 Octahedral 1.032 +WIHFEB Fe 2 2 26 3 5 6 Octahedral 0.944 +XEZZUX Fe 1 2 26 3 5 6 Octahedral 0.949 +OLUYEB Fe 2 2 26 3 5 6 Octahedral 1.005 +XOFDUR Fe 1 6 26 3 5 6 Octahedral 1.042 +VIJQUB Fe 0 6 26 3 5 6 Octahedral 1.047 +CAPZAW Fe -1 6 26 3 5 6 Octahedral 1.039 +QIJTAE Fe 0 6 26 3 5 6 Octahedral 1.039 +ZIMBEC Fe 0 6 26 3 5 6 Octahedral 1.018 +WISHUE Fe 0 6 26 3 5 6 Octahedral 1.047 +VOPPAR Fe 0 6 26 3 5 6 Octahedral 1.02 +RUMRAU Fe -3 6 26 3 5 6 Octahedral 1.027 +YASHUV Fe -2 6 26 3 5 6 Octahedral 1.026 +HARLER Fe 1 6 26 3 5 6 Octahedral 1.042 +VEGCEQ Fe 1 2 26 3 5 6 Octahedral 0.967 +NEPPIJ Fe -3 6 26 3 5 6 Octahedral 1.027 +NEMXIN Fe 0 2 26 3 5 6 Octahedral 0.927 +HULQAI Fe -2 6 26 3 5 6 Octahedral 1.025 +ELUJUQ Fe 0 6 26 3 5 6 Octahedral 1.061 +QETKOS Fe 3 2 26 3 5 6 Octahedral 0.975 +SILWOA Fe -2 6 26 3 5 6 Octahedral 1.014 +UGOLOT Fe 2 2 26 3 5 6 Octahedral 0.964 +CESGOW Fe 1 2 26 3 5 6 Octahedral 0.92 +CAJFEZ Fe 2 2 26 3 5 6 Octahedral 0.941 +KETVEL Fe 1 6 26 3 5 6 Octahedral 1.036 +WOBXER Fe 1 6 26 3 5 6 Octahedral 1.061 +VENGUS Fe 0 6 26 3 5 6 Octahedral 1.042 +GUGYIS Fe -1 6 26 3 5 6 Octahedral 1.032 +AETSFE Fe 1 2 26 3 5 6 Octahedral 0.951 +LUJPAI Fe 1 2 26 3 5 6 Octahedral 0.981 +EGEMOS Fe 0 2 26 3 5 6 Octahedral 0.949 +XENPAI Fe 1 2 26 3 5 6 Octahedral 0.934 +MIDJOY Fe 1 2 26 3 5 6 Octahedral 0.948 +JUDRAD Fe 0 6 26 3 5 6 Octahedral 1.018 +UBUBAU Fe 0 6 26 3 5 6 Octahedral 1.055 +DOXXOE Fe 0 6 26 3 5 6 Octahedral 1.08 +HAVRII Fe -1 6 26 3 5 6 Octahedral 1.022 +OMANIB Fe 0 2 26 3 5 6 Octahedral 0.939 +CUHGUH Fe -1 2 26 3 5 6 Octahedral 0.933 +DIHZEC Fe 0 6 26 3 5 6 Octahedral 1.02 +KAPJAO Fe 3 6 26 3 5 6 Octahedral 1.008 +KEFLUD Fe -3 6 26 3 5 6 Octahedral 1.041 +BOFFOS Fe -3 6 26 3 5 6 Octahedral 1.021 +NANJUJ Fe -1 6 26 3 5 6 Octahedral 1.033 +RATCAR Fe 0 6 26 3 5 6 Octahedral 1.048 +MTCBFE Fe 0 6 26 3 5 6 Octahedral 1.058 +DEXZAK Fe 0 6 26 3 5 6 Octahedral 1.039 +NUSMIY Fe -2 2 26 3 5 6 Octahedral 0.946 +VEKNUU Fe 0 6 26 3 5 6 Octahedral 1.078 +LOXSIA Fe 0 2 26 3 5 6 Octahedral 0.952 +LOXWUQ Fe -1 6 26 3 5 6 Trigonal prismatic 1.044 +NOYJUG Fe -3 6 26 3 5 6 Trigonal prismatic 1.027 +IVOSAO Fe 2 6 26 3 5 7 Capped trigonal prismatic 1.13 +IVOSES Fe 2 6 26 3 5 7 Pentagonal bipyramidal 1.129 +MUJZUM Fe 0 6 26 3 5 7 Pentagonal bipyramidal 1.106 +NURPUN Co 1 3 27 1 8 2 Linear 0.963 +KAGHOS Co -1 3 27 1 8 2 Linear 0.943 +VEYXOP Co 0 3 27 1 8 3 T-shaped 0.998 +AQUGIF Co 0 3 27 1 8 3 T-shaped 0.948 +FEWYAK Co 1 3 27 1 8 3 Trigonal planar 0.99 +QIDNAU Co 0 3 27 1 8 3 Trigonal planar 0.971 +MAXZOC Co 0 3 27 1 8 3 Trigonal planar 0.965 +UZEXON Co 0 3 27 1 8 3 Trigonal planar 0.98 +HESNAX Co 0 1 27 1 8 4 Seesaw 0.9 +NIHXEK Co 0 3 27 1 8 4 Seesaw 0.994 +YALHUP Co 0 3 27 1 8 4 Seesaw 1.099 +YIKVUM Co 0 3 27 1 8 4 Seesaw 1.001 +UZEYEE Co 0 1 27 1 8 4 Square planar 0.889 +BAFSIO Co 0 1 27 1 8 4 Square planar 0.887 +SIPHAA Co 0 3 27 1 8 4 Tetrahedral 0.943 +CUWSIW Co 0 3 27 1 8 4 Tetrahedral 0.956 +NIHYIP Co 0 3 27 1 8 4 Tetrahedral 0.993 +DAJVIT Co 0 3 27 1 8 4 Tetrahedral 0.924 +CAFYAK Co 0 3 27 1 8 4 Tetrahedral 0.963 +TUMYUV Co 0 3 27 1 8 4 Tetrahedral 0.954 +CIXXEN Co 0 3 27 1 8 4 Tetrahedral 0.927 +CIXXAJ Co 0 3 27 1 8 4 Tetrahedral 0.907 +XONCEJ Co 0 3 27 1 8 4 Tetrahedral 0.971 +FIYMOP Co 1 1 27 1 8 5 Square pyramidal 0.873 +FEWVEL Co 0 1 27 1 8 5 Square pyramidal 0.935 +VUJPIZ Co 0 1 27 1 8 5 Square pyramidal 0.878 +VAFHAM Co 0 1 27 1 8 5 Trigonal bipyramidal 0.893 +QAQBIV Co 0 1 27 1 8 5 Trigonal bipyramidal 0.883 +RABVOG Co 0 1 27 1 8 5 Trigonal bipyramidal 0.894 +CAHCOP Co 0 1 27 1 8 5 Trigonal bipyramidal 0.862 +WOKYOL Co 0 1 27 1 8 5 Trigonal bipyramidal 0.928 +CURVOB Co 0 4 27 2 7 2 Linear 0.956 +PIVHUZ Co 0 4 27 2 7 2 Linear 0.879 +MUGYIY Co 0 4 27 2 7 3 Trigonal planar 0.994 +MUGYEU Co 0 4 27 2 7 3 Trigonal planar 0.98 +VUCPIU Co 0 4 27 2 7 3 Trigonal planar 1.018 +XUNTAB Co 0 4 27 2 7 3 Trigonal planar 0.927 +MONZEU Co 0 4 27 2 7 3 Trigonal planar 0.979 +RITTAR Co 0 4 27 2 7 3 Trigonal planar 0.99 +DOZZEX Co 0 4 27 2 7 3 Trigonal planar 0.989 +DAQRAR Co -1 4 27 2 7 3 Trigonal planar 0.958 +VENTAL Co 0 4 27 2 7 4 Seesaw 1.044 +GIGGUZ Co 0 4 27 2 7 4 Seesaw 1.036 +TEXLIS Co 0 4 27 2 7 4 Seesaw 1.021 +MCPTCO Co 0 4 27 2 7 4 Seesaw 1.042 +MERECO Co 0 4 27 2 7 4 Seesaw 1.019 +AGIDEC Co -2 4 27 2 7 4 Seesaw 1.027 +SEWMAK Co -2 4 27 2 7 4 Seesaw 1.025 +TANLEA Co 0 2 27 2 7 4 Seesaw 0.906 +BITTAC Co 0 2 27 2 7 4 Square planar 0.907 +BIXWOX Co 0 2 27 2 7 4 Square planar 0.969 +FEWYIS Co 0 2 27 2 7 4 Square planar 0.94 +EQEQAV Co 0 2 27 2 7 4 Square planar 0.96 +QANMOK Co 0 2 27 2 7 4 Square planar 1.006 +IPOFUR Co 0 2 27 2 7 4 Square planar 0.941 +AGAVAI Co 0 2 27 2 7 4 Square planar 0.898 +HEQZEI Co 0 2 27 2 7 4 Square planar 1.013 +FEYMIG Co 0 2 27 2 7 4 Square planar 0.903 +QAZCIF Co 0 2 27 2 7 4 Square planar 0.951 +LAPYAC Co 0 2 27 2 7 4 Square planar 0.917 +ZZZAOG01 Co 0 2 27 2 7 4 Square planar 0.922 +JUHTIP Co 0 2 27 2 7 4 Square planar 0.931 +AGXICO Co 0 2 27 2 7 4 Square planar 0.935 +ZIMPUG Co 0 2 27 2 7 4 Square planar 0.92 +ZIMQAN Co 0 2 27 2 7 4 Square planar 0.933 +AGUDUE Co 1 2 27 2 7 4 Square planar 0.924 +VEXLIU Co 0 2 27 2 7 4 Square planar 0.92 +EAIMCO Co 0 2 27 2 7 4 Square planar 0.935 +RUMGUB Co 0 2 27 2 7 4 Square planar 0.981 +AJALAZ Co 0 2 27 2 7 4 Square planar 0.925 +FEHNOV Co 0 2 27 2 7 4 Square planar 0.882 +TILSUD Co 2 2 27 2 7 4 Square planar 0.998 +EWANAR Co -2 2 27 2 7 4 Square planar 0.896 +BAMCOM Co -2 2 27 2 7 4 Square planar 0.883 +LAYMEF Co -2 2 27 2 7 4 Square planar 0.905 +PELZAH Co -1 4 27 2 7 4 Tetrahedral 0.97 +HEKXIG Co -2 4 27 2 7 4 Tetrahedral 0.967 +UFOYOF Co -1 4 27 2 7 4 Tetrahedral 0.983 +PAMSUT Co -1 4 27 2 7 4 Tetrahedral 0.982 +VEBKAQ Co 0 4 27 2 7 4 Tetrahedral 1.003 +METGUN Co 0 4 27 2 7 4 Tetrahedral 1.002 +TEHYOV Co 0 4 27 2 7 4 Tetrahedral 0.981 +BABCAK Co 0 4 27 2 7 4 Tetrahedral 0.978 +FOMQAB Co 0 4 27 2 7 4 Tetrahedral 0.983 +QOGLAZ Co 0 4 27 2 7 4 Tetrahedral 0.992 +NUPTAT Co 0 4 27 2 7 4 Tetrahedral 0.967 +FAYHIZ Co 0 4 27 2 7 4 Tetrahedral 0.975 +ZUMCUI Co 0 4 27 2 7 4 Tetrahedral 1.012 +CADYUC Co 0 4 27 2 7 4 Tetrahedral 1.006 +OBIMOC Co 0 4 27 2 7 4 Tetrahedral 0.996 +HIDXUP Co 0 4 27 2 7 4 Tetrahedral 1.033 +KOZYED01 Co 0 4 27 2 7 4 Tetrahedral 1.102 +DIMDAH Co 0 4 27 2 7 4 Tetrahedral 1.056 +HURSAR Co 0 4 27 2 7 4 Tetrahedral 1.013 +HIPLOI Co 0 4 27 2 7 4 Tetrahedral 1.09 +YEQZID Co 0 4 27 2 7 4 Tetrahedral 1.033 +BINJOZ Co -2 4 27 2 7 4 Tetrahedral 0.994 +SOXJUK Co -1 4 27 2 7 4 Tetrahedral 0.993 +GISVAF Co 0 4 27 2 7 4 Tetrahedral 1.003 +YINCOO Co 0 4 27 2 7 4 Tetrahedral 0.994 +ILIJUK Co 0 4 27 2 7 4 Tetrahedral 0.993 +METGOH Co 0 4 27 2 7 4 Tetrahedral 1.021 +PUMQAQ Co -2 4 27 2 7 4 Tetrahedral 1.006 +RIZGUF Co 0 4 27 2 7 4 Tetrahedral 0.993 +TOTGOY Co 0 4 27 2 7 4 Tetrahedral 1.017 +LAJYUR Co 0 4 27 2 7 4 Tetrahedral 1.06 +JAWSUY Co 0 4 27 2 7 4 Tetrahedral 1.011 +NANJEU Co 0 4 27 2 7 4 Tetrahedral 1.0 +NEZPEQ Co 0 4 27 2 7 4 Tetrahedral 1.005 +VECTUU Co 0 4 27 2 7 4 Tetrahedral 1.013 +FOMPUU Co 0 4 27 2 7 4 Tetrahedral 0.99 +FARZIH Co 0 4 27 2 7 4 Tetrahedral 1.006 +FAJMAF Co -2 4 27 2 7 4 Tetrahedral 1.018 +SIYHOA Co 0 4 27 2 7 4 Tetrahedral 1.008 +RUTRUT Co 0 4 27 2 7 4 Tetrahedral 0.983 +LOXSAS Co 0 4 27 2 7 4 Tetrahedral 0.995 +REMMEB Co 0 4 27 2 7 4 Tetrahedral 0.997 +HIPLEY Co 0 4 27 2 7 4 Tetrahedral 1.052 +IJOPED Co 0 4 27 2 7 4 Tetrahedral 1.055 +VEDXOS Co 0 4 27 2 7 4 Tetrahedral 1.015 +XEZWOQ Co 0 4 27 2 7 4 Tetrahedral 0.998 +BIWPED Co 0 4 27 2 7 4 Tetrahedral 1.032 +JAPRUN Co 0 4 27 2 7 4 Tetrahedral 0.989 +LEWNIN Co 0 4 27 2 7 4 Tetrahedral 1.077 +SIBZAE Co 0 4 27 2 7 4 Tetrahedral 1.092 +CAHQAD Co 0 4 27 2 7 4 Tetrahedral 1.062 +ROBXEM Co -2 4 27 2 7 4 Tetrahedral 0.958 +DAPQOD Co 0 4 27 2 7 4 Tetrahedral 0.987 +KUWWAC Co 0 4 27 2 7 4 Tetrahedral 0.98 +TAPGUM Co 0 4 27 2 7 4 Tetrahedral 1.004 +UMUJUK Co 0 4 27 2 7 4 Tetrahedral 0.986 +FAYHOF Co 0 4 27 2 7 4 Tetrahedral 0.984 +HOMKUP Co 0 4 27 2 7 4 Tetrahedral 0.99 +XUPRAB Co 0 4 27 2 7 4 Tetrahedral 0.991 +CODLEO Co 0 4 27 2 7 4 Tetrahedral 0.983 +CASXAY Co -2 4 27 2 7 4 Tetrahedral 0.988 +QITSUJ Co -2 4 27 2 7 4 Tetrahedral 0.987 +ADERAF Co 0 4 27 2 7 4 Tetrahedral 0.998 +IZOJAK Co 0 4 27 2 7 4 Tetrahedral 1.032 +NICFAH Co -1 4 27 2 7 4 Tetrahedral 1.025 +UHOXOE Co 1 4 27 2 7 4 Tetrahedral 1.037 +WIGMAA Co 0 4 27 2 7 4 Tetrahedral 1.073 +EMEDEH Co 0 4 27 2 7 4 Tetrahedral 1.024 +CADZAJ Co 0 4 27 2 7 4 Tetrahedral 1.009 +ECBIMA10 Co 0 4 27 2 7 4 Tetrahedral 1.056 +COIMAC10 Co 0 4 27 2 7 4 Tetrahedral 1.039 +ADEQUY Co 0 4 27 2 7 4 Tetrahedral 0.996 +WAHQEE Co 0 4 27 2 7 4 Tetrahedral 1.012 +UYIFUF02 Co 0 4 27 2 7 4 Tetrahedral 1.029 +UJUSOI Co 0 4 27 2 7 4 Tetrahedral 1.013 +WOFREP Co 0 4 27 2 7 4 Tetrahedral 1.022 +OQEDOE Co 0 4 27 2 7 4 Tetrahedral 1.038 +SAZFOR Co 0 2 27 2 7 4 Tetrahedral 0.867 +JOYXAW Co 2 4 27 2 7 4 Tetrahedral 1.022 +RATBIY Co 0 4 27 2 7 4 Tetrahedral 1.014 +XUPREF Co 0 4 27 2 7 4 Tetrahedral 0.997 +TANLOK Co 0 4 27 2 7 4 Tetrahedral 1.0 +TANLUQ Co 0 2 27 2 7 4 Tetrahedral 0.902 +EBECAP Co -2 4 27 2 7 4 Tetrahedral 1.002 +APOHUK Co -2 4 27 2 7 4 Tetrahedral 0.998 +VILVIX Co -2 4 27 2 7 4 Tetrahedral 0.978 +RUJSOE Co 0 4 27 2 7 5 Square pyramidal 1.129 +KEHJAK Co 0 2 27 2 7 5 Square pyramidal 1.003 +SEMROU Co 0 4 27 2 7 5 Square pyramidal 1.07 +VAPCAR Co 0 4 27 2 7 5 Square pyramidal 1.093 +ONAXIM Co 0 2 27 2 7 5 Square pyramidal 0.984 +VEKNEE Co -1 4 27 2 7 5 Square pyramidal 1.114 +ELUXIU Co 1 2 27 2 7 5 Square pyramidal 1.021 +ZIVLIC Co 1 2 27 2 7 5 Square pyramidal 1.002 +ABAJIX Co 2 2 27 2 7 5 Square pyramidal 1.038 +POBWUA Co 1 2 27 2 7 5 Square pyramidal 1.0 +RAWRUF Co 0 4 27 2 7 5 Square pyramidal 1.075 +YUBZUR Co 2 2 27 2 7 5 Square pyramidal 1.072 +JASLEU Co 1 2 27 2 7 5 Square pyramidal 1.046 +GUZTIH Co 0 4 27 2 7 5 Square pyramidal 1.098 +WIVQIC Co 0 4 27 2 7 5 Square pyramidal 1.106 +SUFBUS Co 0 4 27 2 7 5 Square pyramidal 1.11 +PORNES Co 0 4 27 2 7 5 Square pyramidal 1.11 +IFIXON Co 0 4 27 2 7 5 Square pyramidal 1.102 +JEPNUO Co 0 4 27 2 7 5 Square pyramidal 1.086 +IMUDOK Co 0 4 27 2 7 5 Square pyramidal 1.101 +XOGXAS Co 0 4 27 2 7 5 Square pyramidal 1.091 +LELLAQ Co 0 4 27 2 7 5 Square pyramidal 1.118 +ZOBQIQ Co 1 2 27 2 7 5 Square pyramidal 0.967 +NABDID Co 1 2 27 2 7 5 Square pyramidal 0.972 +WIGXUI Co 0 4 27 2 7 5 Trigonal bipyramidal 1.075 +UJUPAR Co 1 4 27 2 7 5 Trigonal bipyramidal 1.11 +XIVKOD Co 1 4 27 2 7 5 Trigonal bipyramidal 1.093 +UMIZUL Co 0 4 27 2 7 5 Trigonal bipyramidal 1.098 +VAPFEY Co 0 4 27 2 7 5 Trigonal bipyramidal 1.086 +DITLAW Co 0 4 27 2 7 5 Trigonal bipyramidal 1.087 +LELDUE Co 1 4 27 2 7 5 Trigonal bipyramidal 1.084 +EHIJEM Co 1 4 27 2 7 5 Trigonal bipyramidal 1.108 +WIWJOD Co 0 4 27 2 7 5 Trigonal bipyramidal 1.09 +AWESAY Co 0 4 27 2 7 5 Trigonal bipyramidal 1.083 +GUWWAW Co 0 4 27 2 7 5 Trigonal bipyramidal 1.144 +DAMYUL Co 1 4 27 2 7 5 Trigonal bipyramidal 1.116 +SINMIO Co 1 4 27 2 7 5 Trigonal bipyramidal 1.087 +LAVKEA Co 1 4 27 2 7 5 Trigonal bipyramidal 1.088 +DUWWEY Co 1 4 27 2 7 5 Trigonal bipyramidal 1.12 +YECSUW Co 1 4 27 2 7 5 Trigonal bipyramidal 1.087 +QADJEK Co 0 4 27 2 7 5 Trigonal bipyramidal 1.117 +ZEDSOT Co 0 4 27 2 7 5 Trigonal bipyramidal 1.102 +IKERUO Co 0 4 27 2 7 5 Trigonal bipyramidal 1.123 +CUZBUU Co 0 4 27 2 7 5 Trigonal bipyramidal 1.075 +SIVQEU Co 0 4 27 2 7 5 Trigonal bipyramidal 1.058 +NAFDAB Co 0 4 27 2 7 5 Trigonal bipyramidal 1.147 +NABDEZ Co 1 2 27 2 7 5 Trigonal bipyramidal 0.959 +NABFOL Co 1 2 27 2 7 5 Trigonal bipyramidal 0.949 +HUKJAA Co 0 4 27 2 7 5 Trigonal bipyramidal 1.109 +QEDKOZ Co 0 4 27 2 7 6 Octahedral 1.152 +BEMJIN Co 0 4 27 2 7 6 Octahedral 1.144 +TAGZUA Co 0 4 27 2 7 6 Octahedral 1.133 +EBUSEB Co 0 4 27 2 7 6 Octahedral 1.119 +YEZLEU Co 0 2 27 2 7 6 Octahedral 0.991 +COBDEC Co 0 2 27 2 7 6 Octahedral 0.975 +LUWCIP Co 0 4 27 2 7 6 Octahedral 1.175 +KAGLUA Co -2 4 27 2 7 6 Octahedral 1.148 +PARRUW Co 0 4 27 2 7 6 Octahedral 1.184 +BUKFAR Co 0 4 27 2 7 6 Octahedral 1.137 +OLIWUB Co 0 4 27 2 7 6 Octahedral 1.142 +DIFKUY Co 0 4 27 2 7 6 Octahedral 1.15 +IXEQAF Co 0 4 27 2 7 6 Octahedral 1.14 +POWRID Co 0 4 27 2 7 6 Octahedral 1.14 +JODGIT Co 0 4 27 2 7 6 Octahedral 1.128 +THETCO Co 0 4 27 2 7 6 Octahedral 1.129 +CTHUCO10 Co 0 4 27 2 7 6 Octahedral 1.165 +MGXANC Co 0 2 27 2 7 6 Octahedral 0.96 +IGUREJ Co 1 4 27 2 7 6 Octahedral 1.165 +FERWEH Co 0 4 27 2 7 6 Octahedral 1.132 +YALZET Co 1 4 27 2 7 6 Octahedral 1.138 +DAMTES Co 1 4 27 2 7 6 Octahedral 1.151 +VAHGOC Co 1 4 27 2 7 6 Octahedral 1.141 +MOHFUM Co 1 4 27 2 7 6 Octahedral 1.127 +NUTHIU Co 0 4 27 2 7 6 Octahedral 1.148 +KIFMUK Co 0 4 27 2 7 6 Octahedral 1.137 +IVUQOH Co 0 4 27 2 7 6 Octahedral 1.16 +CAWQIB Co 0 4 27 2 7 6 Octahedral 1.152 +RAXMOT Co 0 4 27 2 7 6 Octahedral 1.137 +OFINAT Co 2 4 27 2 7 6 Octahedral 1.113 +JUNGEH Co 2 4 27 2 7 6 Octahedral 1.167 +KILBAJ Co 2 4 27 2 7 6 Octahedral 1.129 +RUJSUK Co 2 4 27 2 7 6 Octahedral 1.179 +FOXCOM Co 0 4 27 2 7 6 Octahedral 1.137 +HZHCXC Co 0 4 27 2 7 6 Octahedral 1.153 +PITHAD Co 2 4 27 2 7 6 Octahedral 1.129 +IXEPIM Co 0 4 27 2 7 6 Octahedral 1.117 +GADMEH Co -1 4 27 2 7 6 Octahedral 1.132 +DEGJEF Co 0 4 27 2 7 6 Octahedral 1.147 +JITWOZ Co 2 4 27 2 7 6 Octahedral 1.114 +ZOZPAF Co -1 4 27 2 7 6 Octahedral 1.157 +BAWZIL Co 0 4 27 2 7 6 Octahedral 1.127 +RAXXUM Co 0 4 27 2 7 6 Octahedral 1.118 +ECADOB01 Co 2 4 27 2 7 6 Octahedral 1.113 +BOQPIH Co 2 4 27 2 7 6 Octahedral 1.147 +EDIDAX Co 2 4 27 2 7 6 Octahedral 1.123 +RETFOM Co 0 4 27 2 7 6 Octahedral 1.14 +WAMYAL Co 0 4 27 2 7 6 Octahedral 1.123 +XITQIB Co 0 2 27 2 7 6 Octahedral 1.071 +XITQEX Co 0 2 27 2 7 6 Octahedral 1.09 +CETJIU Co 2 4 27 2 7 6 Octahedral 1.144 +ODOWUC Co 0 4 27 2 7 6 Octahedral 1.104 +RUMHAI Co 0 2 27 2 7 6 Octahedral 1.092 +NOYCIN Co 2 4 27 2 7 6 Octahedral 1.121 +TIGBIV Co 2 4 27 2 7 6 Octahedral 1.146 +GIBGON Co 0 4 27 2 7 6 Octahedral 1.127 +XIYMEY Co 2 4 27 2 7 6 Octahedral 1.12 +SESGUT Co 2 4 27 2 7 6 Octahedral 1.122 +AYIZOY Co -4 4 27 2 7 6 Octahedral 1.134 +COETDS10 Co 2 4 27 2 7 6 Octahedral 1.133 +TAKZAH Co 0 4 27 2 7 6 Octahedral 1.132 +FIDZEY Co 0 4 27 2 7 6 Octahedral 1.173 +ZIBNIH Co 0 4 27 2 7 6 Octahedral 1.15 +BAJJEB Co 0 4 27 2 7 6 Octahedral 1.131 +NTMTUC Co 0 4 27 2 7 6 Octahedral 1.175 +BOXMIK Co 2 2 27 2 7 6 Octahedral 1.008 +ZOTRAB Co 0 2 27 2 7 6 Octahedral 1.058 +XUBMUF Co 2 4 27 2 7 6 Pentagonal pyramidal 1.214 +PODCIX Co 0 4 27 2 7 6 Trigonal prismatic 1.167 +ERUXIZ Co 2 4 27 2 7 6 Trigonal prismatic 1.176 +VUCYAV Co 1 4 27 2 7 6 Trigonal prismatic 1.193 +KIRPAE Co 2 4 27 2 7 6 Trigonal prismatic 1.157 +DEPLES Co 2 4 27 2 7 6 Trigonal prismatic 1.138 +FURBIF Co 0 4 27 2 7 6 Trigonal prismatic 1.154 +EYOZEY Co 0 4 27 2 7 6 Trigonal prismatic 1.138 +QOWJOE Co -1 4 27 2 7 6 Trigonal prismatic 1.159 +SISNAK Co 1 4 27 2 7 7 Capped trigonal prismatic 1.233 +GUGCUI Co 0 4 27 2 7 7 Pentagonal bipyramidal 1.21 +KIRDOH Co 0 4 27 2 7 7 Pentagonal bipyramidal 1.207 +COKLOD Co 2 4 27 2 7 7 Pentagonal bipyramidal 1.216 +VENJOO Co 0 4 27 2 7 7 Pentagonal bipyramidal 1.188 +XUVVAN Co 0 4 27 2 7 7 Pentagonal bipyramidal 1.216 +BAHDAS Co -2 4 27 2 7 7 Pentagonal bipyramidal 1.226 +RUHRIV Co 2 4 27 2 7 8 Dodecahedral 1.3 +KAXMIF Co 0 5 27 3 6 3 Trigonal planar 0.921 +ABATUT Co 0 1 27 3 6 3 Trigonal planar 0.848 +QOXZAG Co 1 1 27 3 6 4 Seesaw 0.902 +QUCBOG Co -1 3 27 3 6 4 Square planar 0.925 +KOCXEG Co 2 3 27 3 6 4 Square planar 0.921 +XEHSOV Co 0 3 27 3 6 4 Square planar 0.9 +PENBUG Co -1 3 27 3 6 4 Square planar 0.913 +VIWQEX Co -1 3 27 3 6 4 Square planar 0.893 +HEHJOW Co -1 3 27 3 6 4 Square planar 0.89 +MAJYUS Co -1 3 27 3 6 4 Square planar 0.877 +QANFOD Co -1 3 27 3 6 4 Square planar 0.865 +QOXZEK Co 1 1 27 3 6 4 Tetrahedral 0.884 +WATSUF Co 0 1 27 3 6 5 Square pyramidal 0.952 +EACMCO Co 0 1 27 3 6 5 Square pyramidal 0.949 +LADCIC Co 0 3 27 3 6 5 Square pyramidal 0.963 +REJDAN Co 1 3 27 3 6 5 Square pyramidal 0.974 +GUZCUZ Co 0 3 27 3 6 5 Trigonal bipyramidal 1.052 +LADCOI Co 0 3 27 3 6 5 Trigonal bipyramidal 0.954 +VOYFIA Co 0 3 27 3 6 5 Trigonal bipyramidal 0.986 +XANMAA Co 1 1 27 3 6 6 Octahedral 0.93 +PIDPUN Co 1 1 27 3 6 6 Octahedral 0.972 +OVOJIU Co 0 1 27 3 6 6 Octahedral 0.907 +UJOLEK Co 0 1 27 3 6 6 Octahedral 0.971 +MAKPOD Co 1 1 27 3 6 6 Octahedral 0.971 +TOLTET Co 1 1 27 3 6 6 Octahedral 0.95 +MICHOV Co 0 1 27 3 6 6 Octahedral 0.966 +SOWKIY Co 0 1 27 3 6 6 Octahedral 0.986 +HANJIP Co 2 1 27 3 6 6 Octahedral 0.979 +CSCNCC01 Co -3 1 27 3 6 6 Octahedral 0.91 +BODQES Co -1 1 27 3 6 6 Octahedral 0.971 +QIGRED Co 0 1 27 3 6 6 Octahedral 0.961 +REXQAN Co 0 1 27 3 6 6 Octahedral 1.044 +QIWKOX Co 0 1 27 3 6 6 Octahedral 0.982 +YEXVAA Co 0 1 27 3 6 6 Octahedral 0.99 +EKOKEV Co 0 1 27 3 6 6 Octahedral 0.988 +SIQNAK Co 0 1 27 3 6 6 Octahedral 0.919 +KUVWOQ Co 0 1 27 3 6 6 Octahedral 0.91 +SIQNEO Co 0 1 27 3 6 6 Octahedral 0.95 +DOFZAA Co 0 1 27 3 6 6 Octahedral 0.989 +CEHYAP01 Co 1 1 27 3 6 6 Octahedral 0.978 +VIDMIH Co 1 1 27 3 6 6 Octahedral 0.987 +NEXYAS Co -1 1 27 3 6 6 Octahedral 0.984 +DABHUK Co -1 1 27 3 6 6 Octahedral 0.956 +LAYNEF Co 0 1 27 3 6 6 Octahedral 0.987 +SUKQUK Co -1 1 27 3 6 6 Octahedral 0.97 +KEQVAD Co 0 1 27 3 6 6 Octahedral 0.99 +YEXVEE Co 0 1 27 3 6 6 Octahedral 1.01 +AGODAC Co 0 1 27 3 6 6 Octahedral 0.973 +RISSIW Co 0 1 27 3 6 6 Octahedral 0.971 +FUQCUR Co 1 1 27 3 6 6 Octahedral 0.994 +XOQVAC Co 0 1 27 3 6 6 Octahedral 0.993 +GIXYIV Co 0 1 27 3 6 6 Octahedral 0.931 +SOZYEL Co 0 1 27 3 6 6 Octahedral 0.974 +RATDIZ Co 2 1 27 3 6 6 Octahedral 1.018 +QIGSEE Co 0 1 27 3 6 6 Octahedral 1.002 +RATDOF Co 2 1 27 3 6 6 Octahedral 1.017 +ARIMUJ Co 1 1 27 3 6 6 Octahedral 0.983 +NOZPAT Co 0 1 27 3 6 6 Octahedral 0.971 +DUCGUD Co 1 1 27 3 6 6 Octahedral 0.975 +VABKUE Co 2 1 27 3 6 6 Octahedral 1.022 +LAPNIZ Co 0 1 27 3 6 6 Octahedral 1.002 +ZIXMOI Co 1 1 27 3 6 6 Octahedral 0.989 +EAIVCO Co 0 1 27 3 6 6 Octahedral 1.004 +KEHJOY Co 0 1 27 3 6 6 Octahedral 0.99 +QAFPAO Co 1 1 27 3 6 6 Octahedral 0.981 +MIKROO Co 0 1 27 3 6 6 Octahedral 0.964 +YISQAT Co 0 1 27 3 6 6 Octahedral 0.977 +QIGRON Co 0 1 27 3 6 6 Octahedral 0.99 +WEMNIM Co 1 1 27 3 6 6 Octahedral 0.985 +MAKPIX Co 1 1 27 3 6 6 Octahedral 0.983 +YETBOP Co 1 1 27 3 6 6 Octahedral 0.986 +YETBUV Co 1 1 27 3 6 6 Octahedral 0.971 +KAKVUO Co 1 1 27 3 6 6 Octahedral 0.962 +PUTTUT Co 1 1 27 3 6 6 Octahedral 0.962 +MABLUA Co 1 1 27 3 6 6 Octahedral 0.966 +JAYNAB Co 0 1 27 3 6 6 Octahedral 0.915 +SIPLEI Co 2 1 27 3 6 6 Octahedral 0.996 +PEXKAF Co 2 1 27 3 6 6 Octahedral 0.99 +BISXIK Co 0 1 27 3 6 6 Octahedral 0.949 +HERHAN Co 1 1 27 3 6 6 Octahedral 0.983 +TEVXIC Co 2 1 27 3 6 6 Octahedral 0.968 +HERGUG Co 0 1 27 3 6 6 Octahedral 0.981 +KIDRIY Co -1 1 27 3 6 6 Octahedral 0.955 +EYAQEA Co 3 1 27 3 6 6 Octahedral 0.99 +QOGNAD Co 1 1 27 3 6 6 Octahedral 0.983 +XAKPUU Co 4 1 27 3 6 6 Octahedral 0.999 +WERKIN Co -3 1 27 3 6 6 Octahedral 0.995 +NCACON Co 2 1 27 3 6 6 Octahedral 0.991 +PATACO10 Co 2 1 27 3 6 6 Octahedral 0.99 +MAENCO Co 2 1 27 3 6 6 Octahedral 0.998 +YETCAC Co 3 1 27 3 6 6 Octahedral 1.006 +QILWUD Co 2 1 27 3 6 6 Octahedral 0.997 +IBUQOL Co 2 1 27 3 6 6 Octahedral 0.99 +BOTQEH Co 2 1 27 3 6 6 Octahedral 0.986 +GAPZEC Co 1 1 27 3 6 6 Octahedral 0.993 +APRCOB Co 1 1 27 3 6 6 Octahedral 0.985 +ULONEP Co 3 1 27 3 6 6 Octahedral 0.998 +ENTXCO Co 1 1 27 3 6 6 Octahedral 0.987 +BOHGAG Co 3 1 27 3 6 6 Octahedral 1.002 +ZEQLUE Co 1 1 27 3 6 6 Octahedral 0.962 +HELJAJ Co 1 1 27 3 6 6 Octahedral 0.978 +PUWMAX Co 1 1 27 3 6 6 Octahedral 0.989 +VARVIU Co 3 1 27 3 6 6 Octahedral 0.982 +PERJIG Co 3 1 27 3 6 6 Octahedral 0.974 +GEWNAX Co 3 1 27 3 6 6 Octahedral 0.971 +ZENBOJ Co -1 1 27 3 6 6 Octahedral 0.976 +SICCAL Co 1 1 27 3 6 6 Octahedral 0.965 +MCYSCO Co 1 1 27 3 6 6 Octahedral 0.979 +ZEWDIO Co 0 1 27 3 6 6 Octahedral 0.957 +UBICEP Co 2 1 27 3 6 6 Octahedral 0.962 +YETCIK Co 2 1 27 3 6 6 Octahedral 0.989 +PORPOB Co 3 1 27 3 6 6 Octahedral 0.977 +PAACCO Co 0 1 27 3 6 6 Octahedral 0.975 +YETCEG Co 1 1 27 3 6 6 Octahedral 0.978 +FEVNAW Co 0 1 27 3 6 6 Octahedral 0.991 +DOGHEM Co 1 1 27 3 6 6 Octahedral 0.989 +SUKWUQ Co 1 1 27 3 6 6 Octahedral 0.97 +ROLQUE Co 0 1 27 3 6 6 Octahedral 0.961 +GUVZIH Co 0 1 27 3 6 6 Octahedral 0.96 +PUTVAB Co 2 1 27 3 6 6 Octahedral 0.96 +WELPIM Co 1 1 27 3 6 6 Octahedral 0.946 +CADHOE Co 1 1 27 3 6 6 Octahedral 0.947 +TDTCCO Co 0 1 27 3 6 6 Octahedral 0.973 +VESZUP Co 0 1 27 3 6 6 Octahedral 0.941 +WAVVEX Ni 0 1 28 0 8 3 Trigonal planar 0.883 +MISLOP Ni 0 1 28 0 8 4 Tetrahedral 0.889 +WAVTOF Ni 0 1 28 0 8 4 Tetrahedral 0.894 +BOJPOI Ni 0 1 28 0 8 4 Tetrahedral 0.873 +MISLUV Ni 0 1 28 0 8 4 Tetrahedral 0.871 +XUBJEK Ni 0 1 28 0 8 4 Tetrahedral 0.862 +WALJUR Ni 0 1 28 0 8 4 Tetrahedral 0.922 +WALJOL Ni 0 1 28 0 8 4 Tetrahedral 0.889 +DIBHIF Ni 0 1 28 0 8 5 Pentagon 0.99 +JARKIX Ni 0 3 28 2 8 2 Linear 0.906 +OPAKUM Ni 0 1 28 2 8 3 T-shaped 0.931 +SOGFAY Ni 0 1 28 2 8 3 T-shaped 0.901 +YOLDAG Ni -1 1 28 2 8 3 T-shaped 0.944 +KEBXOG Ni 0 3 28 2 8 3 T-shaped 0.966 +GAXYOW Ni 0 3 28 2 8 3 T-shaped 0.973 +IJUDAV Ni 0 1 28 2 8 3 Trigonal planar 0.881 +LIHSUS Ni -1 3 28 2 8 3 Trigonal planar 0.944 +ZEHMEG Ni 0 1 28 2 8 3 Trigonal planar 0.874 +WUXVOA Ni 0 3 28 2 8 3 Trigonal planar 0.97 +TOLZOK Ni 0 1 28 2 8 3 Trigonal planar 0.901 +ZUQLAA Ni 0 3 28 2 8 3 Trigonal planar 0.983 +FUYTOK Ni -1 3 28 2 8 3 Trigonal planar 0.937 +FUYTEA Ni 0 3 28 2 8 3 Trigonal planar 0.937 +ELUTAI Ni 0 3 28 2 8 4 Seesaw 1.037 +QASCUI Ni 0 3 28 2 8 4 Seesaw 1.017 +BAJWAL Ni 0 3 28 2 8 4 Seesaw 1.002 +YOBCUO Ni 0 3 28 2 8 4 Seesaw 1.03 +PUJSOC Ni 1 1 28 2 8 4 Seesaw 0.881 +TOBWEO Ni 0 3 28 2 8 4 Seesaw 1.024 +FAYVAF Ni 0 1 28 2 8 4 Seesaw 0.911 +BAJWEP Ni 0 3 28 2 8 4 Seesaw 0.997 +VEWQUK Ni 0 3 28 2 8 4 Seesaw 1.006 +GIYGUT Ni 0 3 28 2 8 4 Seesaw 1.018 +XADCIP Ni 0 1 28 2 8 4 Seesaw 0.903 +GINSUS Ni 0 1 28 2 8 4 Square planar 0.894 +BEMNAK Ni 0 1 28 2 8 4 Square planar 0.927 +CUXXOL Ni 0 1 28 2 8 4 Square planar 0.906 +KIKBEM Ni 0 1 28 2 8 4 Square planar 0.99 +YIJGII Ni 0 1 28 2 8 4 Square planar 0.915 +UTEMIR Ni 0 1 28 2 8 4 Square planar 0.89 +JIVQEL Ni 0 1 28 2 8 4 Square planar 0.904 +LODFAL Ni 0 1 28 2 8 4 Square planar 0.972 +LUJREN Ni -1 1 28 2 8 4 Square planar 0.927 +VIBPOM Ni 1 1 28 2 8 4 Square planar 0.924 +XOZXIV Ni 0 1 28 2 8 4 Square planar 0.95 +OROFEH Ni 0 1 28 2 8 4 Square planar 0.932 +KAJHUC Ni 0 1 28 2 8 4 Square planar 0.961 +KOHMAW Ni 0 1 28 2 8 4 Square planar 0.918 +BOMVEF Ni 0 1 28 2 8 4 Square planar 0.918 +ARIVEE Ni 0 1 28 2 8 4 Square planar 0.952 +VEWDIN Ni 0 1 28 2 8 4 Square planar 0.938 +DEDREK Ni 0 1 28 2 8 4 Square planar 0.941 +YIYDAM Ni 0 1 28 2 8 4 Square planar 0.897 +ZUTHEB Ni 0 1 28 2 8 4 Square planar 0.919 +GENYOP Ni 0 1 28 2 8 4 Square planar 0.91 +VIBWUZ Ni 0 1 28 2 8 4 Square planar 0.923 +HUBLUM Ni -1 1 28 2 8 4 Square planar 0.916 +HERVOQ Ni 1 1 28 2 8 4 Square planar 0.908 +GOXBOK Ni 0 1 28 2 8 4 Square planar 0.923 +OFEXAA Ni -2 1 28 2 8 4 Square planar 0.918 +TODDUL Ni -2 1 28 2 8 4 Square planar 0.908 +EDUPOL Ni 0 1 28 2 8 4 Square planar 0.945 +LUJROX Ni 0 1 28 2 8 4 Square planar 0.927 +AREJUD Ni 0 1 28 2 8 4 Square planar 0.955 +VOGGOO Ni 0 1 28 2 8 4 Square planar 0.987 +HIPCIS Ni 0 1 28 2 8 4 Square planar 0.935 +XOCJAB Ni 0 1 28 2 8 4 Square planar 0.975 +EDIJIL Ni 0 1 28 2 8 4 Square planar 0.955 +XOCJUV Ni 0 1 28 2 8 4 Square planar 0.948 +SIFQAA Ni 0 1 28 2 8 4 Square planar 0.944 +DOKQOJ Ni 0 1 28 2 8 4 Square planar 0.944 +QUHKIO Ni 0 1 28 2 8 4 Square planar 0.945 +IHUDUL Ni 0 1 28 2 8 4 Square planar 0.928 +ALOTUR Ni 0 1 28 2 8 4 Square planar 0.928 +UNILIN Ni 0 1 28 2 8 4 Square planar 0.924 +LAQJIX Ni 0 1 28 2 8 4 Square planar 0.95 +RABJOX Ni 0 1 28 2 8 4 Square planar 1.025 +KOBTOL Ni 0 1 28 2 8 4 Square planar 0.96 +WIJLUZ Ni 0 1 28 2 8 4 Square planar 0.966 +YABLIW Ni 0 1 28 2 8 4 Square planar 0.921 +FIWLEE Ni 0 1 28 2 8 4 Square planar 0.968 +RUXYER Ni 0 1 28 2 8 4 Square planar 0.961 +XEGPEF Ni 0 1 28 2 8 4 Square planar 0.952 +BOLVAA Ni 0 1 28 2 8 4 Square planar 0.95 +EYEYEM Ni 0 1 28 2 8 4 Square planar 0.901 +ALOTOL Ni 0 1 28 2 8 4 Square planar 0.924 +LEMVOQ Ni 0 1 28 2 8 4 Square planar 0.952 +XUPSIL Ni 0 1 28 2 8 4 Square planar 0.948 +GAWNAU Ni 0 1 28 2 8 4 Square planar 0.984 +TIBKOH Ni 0 1 28 2 8 4 Square planar 0.962 +YOYXES Ni 0 1 28 2 8 4 Square planar 0.951 +VIGLOP Ni 0 1 28 2 8 4 Square planar 0.948 +HEYKOL Ni 0 1 28 2 8 4 Square planar 0.906 +DOPROS Ni 0 1 28 2 8 4 Square planar 0.951 +MIJPAZ Ni 0 1 28 2 8 4 Square planar 0.946 +KUHJED Ni 1 1 28 2 8 4 Square planar 0.865 +DIJQAR Ni 0 1 28 2 8 4 Square planar 0.986 +CEKJIO Ni 0 1 28 2 8 4 Square planar 0.959 +ORESUC Ni 0 1 28 2 8 4 Square planar 0.937 +UNOFEJ Ni 0 1 28 2 8 4 Square planar 0.896 +UPIDIH Ni 1 1 28 2 8 4 Square planar 0.981 +RADLEO Ni 0 1 28 2 8 4 Square planar 0.977 +RIXTIC Ni 0 1 28 2 8 4 Square planar 0.96 +MORDOM Ni 0 1 28 2 8 4 Square planar 0.99 +ZALRUZ Ni 0 1 28 2 8 4 Square planar 0.961 +FEGVUJ Ni 1 1 28 2 8 4 Square planar 0.944 +JADKII Ni 0 1 28 2 8 4 Square planar 0.952 +TUPMAV Ni 0 1 28 2 8 4 Square planar 0.954 +DIJPOE Ni 1 1 28 2 8 4 Square planar 0.961 +HUBMUN Ni -1 1 28 2 8 4 Square planar 0.938 +TIVZIJ Ni 0 1 28 2 8 4 Square planar 0.981 +JAXFIX Ni 0 1 28 2 8 4 Square planar 0.954 +TOBBAP Ni 0 1 28 2 8 4 Square planar 0.943 +JIZNEM Ni 0 1 28 2 8 4 Square planar 0.923 +AJAFEX Ni 0 1 28 2 8 4 Square planar 0.923 +XAJWOU Ni 0 1 28 2 8 4 Square planar 0.929 +FAVZUY Ni 0 1 28 2 8 4 Square planar 0.915 +RISQOC Ni 0 1 28 2 8 4 Square planar 0.91 +XIXTEE Ni 0 1 28 2 8 4 Square planar 0.919 +VUMCIP Ni 0 1 28 2 8 4 Square planar 0.968 +EVACOT Ni 0 1 28 2 8 4 Square planar 0.932 +OBOKOF Ni 0 1 28 2 8 4 Square planar 0.917 +OHUSEQ Ni 0 1 28 2 8 4 Square planar 0.972 +VEYTAX Ni 0 1 28 2 8 4 Square planar 0.973 +XUYWAQ Ni 0 1 28 2 8 4 Square planar 0.938 +XULXAG Ni 0 1 28 2 8 4 Square planar 0.927 +QAHWUT Ni 0 1 28 2 8 4 Square planar 0.927 +VEYTEB Ni 0 1 28 2 8 4 Square planar 0.928 +TINTUG Ni 0 1 28 2 8 4 Square planar 0.929 +KIQGOG Ni 0 1 28 2 8 4 Square planar 0.934 +CLSINI10 Ni 0 1 28 2 8 4 Square planar 0.932 +UGODAW Ni 0 1 28 2 8 4 Square planar 0.955 +EDOZAA Ni 0 1 28 2 8 4 Square planar 0.91 +MEDCOO Ni -1 1 28 2 8 4 Square planar 0.91 +HOYFUW Ni -1 1 28 2 8 4 Square planar 0.91 +CODWAU Ni 0 1 28 2 8 4 Square planar 0.909 +UTEMOX Ni 0 1 28 2 8 4 Square planar 0.894 +AFUDAH Ni 0 1 28 2 8 4 Square planar 0.973 +SEMCUK Ni 0 1 28 2 8 4 Square planar 0.908 +HOTXIX Ni 0 1 28 2 8 4 Square planar 0.922 +OBIVAX Ni 2 1 28 2 8 4 Square planar 0.925 +LOPXOD Ni 0 1 28 2 8 4 Square planar 0.942 +ZASROA Ni 2 1 28 2 8 4 Square planar 0.986 +ZASRUG Ni 1 1 28 2 8 4 Square planar 0.984 +WOWTOR Ni 2 1 28 2 8 4 Square planar 0.965 +BEXKOE Ni 0 1 28 2 8 4 Square planar 0.94 +DIGJEJ Ni 0 1 28 2 8 4 Square planar 0.924 +BEXZIN Ni 0 1 28 2 8 4 Square planar 0.935 +MINNAZ Ni 0 1 28 2 8 4 Square planar 0.944 +ZILSEU Ni 2 1 28 2 8 4 Square planar 1.052 +KANYON Ni 1 1 28 2 8 4 Square planar 0.947 +QAHQAT Ni 1 1 28 2 8 4 Square planar 0.947 +WEJKOL Ni 0 1 28 2 8 4 Square planar 0.94 +DIRPOJ Ni 0 1 28 2 8 4 Square planar 0.949 +HOPYIW Ni 0 1 28 2 8 4 Square planar 0.938 +LUHPIO Ni 1 1 28 2 8 4 Square planar 0.967 +REMMOM Ni 0 1 28 2 8 4 Square planar 0.919 +KISKON Ni 1 1 28 2 8 4 Square planar 0.974 +RORXUR Ni 0 1 28 2 8 4 Square planar 0.967 +LEPYOV Ni 0 1 28 2 8 4 Square planar 1.035 +SIBLIZ Ni 1 1 28 2 8 4 Square planar 0.955 +VOPCIM Ni 0 1 28 2 8 4 Square planar 0.956 +ZZZTMK03 Ni 0 1 28 2 8 4 Square planar 0.936 +LOHMUS Ni 0 1 28 2 8 4 Square planar 0.95 +TARWIU Ni 0 1 28 2 8 4 Square planar 0.956 +XUKHOC Ni 0 1 28 2 8 4 Square planar 0.931 +BAZSUR Ni 0 1 28 2 8 4 Square planar 0.921 +ISIPUV Ni 0 1 28 2 8 4 Square planar 0.903 +CNITSC Ni 2 1 28 2 8 4 Square planar 0.945 +HOPCEU Ni 2 1 28 2 8 4 Square planar 0.939 +KIJXAC01 Ni 0 1 28 2 8 4 Square planar 0.942 +BABPAX Ni -2 1 28 2 8 4 Square planar 0.923 +HAHHII Ni 0 1 28 2 8 4 Square planar 0.945 +HIQLUR Ni 0 1 28 2 8 4 Square planar 0.952 +RIPQAL Ni 0 1 28 2 8 4 Square planar 0.947 +QEWGOR Ni 0 1 28 2 8 4 Square planar 0.939 +KISKED Ni 1 1 28 2 8 4 Square planar 0.952 +LIGBUA Ni 0 1 28 2 8 4 Square planar 0.933 +SILCIZ Ni 0 1 28 2 8 4 Square planar 0.942 +ROFXAO Ni 0 1 28 2 8 4 Square planar 0.949 +SUXTEL Ni 1 1 28 2 8 4 Square planar 0.927 +MAGGEK Ni 0 1 28 2 8 4 Square planar 0.92 +SOSVAX Ni 0 1 28 2 8 4 Square planar 0.934 +HERTII Ni 2 1 28 2 8 4 Square planar 0.933 +ITITOU Ni 0 1 28 2 8 4 Square planar 0.921 +UMUBAF Ni 1 1 28 2 8 4 Square planar 0.931 +HUBLEW Ni -1 1 28 2 8 4 Square planar 0.928 +UQAREK Ni 0 1 28 2 8 4 Square planar 0.969 +QOSTAT Ni 2 1 28 2 8 4 Square planar 0.977 +XAWVEX Ni 0 1 28 2 8 4 Square planar 0.968 +YABPEW Ni 0 1 28 2 8 4 Square planar 0.947 +MTACNI Ni 0 1 28 2 8 4 Square planar 0.932 +YAPGUS Ni 0 1 28 2 8 4 Square planar 0.935 +HOTRIS Ni 0 1 28 2 8 4 Square planar 0.912 +ROLXIZ Ni 1 1 28 2 8 4 Square planar 0.899 +EXOCEA Ni 0 1 28 2 8 4 Square planar 0.915 +LEZQUC Ni 2 1 28 2 8 4 Square planar 0.937 +YULMUP Ni 0 1 28 2 8 4 Square planar 0.952 +KIBBED Ni 1 1 28 2 8 4 Square planar 0.911 +WAQVIT Ni 0 1 28 2 8 4 Square planar 0.894 +WIYCUF Ni 0 1 28 2 8 4 Square planar 0.895 +DOMMUO Ni 0 1 28 2 8 4 Square planar 0.924 +NEYVUI Ni 0 1 28 2 8 4 Square planar 0.949 +CEQSEW Ni 0 1 28 2 8 4 Square planar 0.884 +BIBDOG Ni -1 1 28 2 8 4 Square planar 0.897 +VIJVIT Ni -2 1 28 2 8 4 Square planar 0.923 +CECKEB Ni -2 1 28 2 8 4 Square planar 0.902 +PEQMEE Ni -2 1 28 2 8 4 Square planar 0.91 +ERIQIG Ni -2 1 28 2 8 4 Square planar 0.91 +CAMRAM Ni -2 1 28 2 8 4 Square planar 0.924 +LAMLOC Ni -2 1 28 2 8 4 Square planar 0.919 +IPEPNI Ni 0 1 28 2 8 4 Square planar 0.918 +EXUKEP Ni -2 1 28 2 8 4 Square planar 0.942 +NIDTHC11 Ni 0 1 28 2 8 4 Square planar 0.935 +GOQYUG Ni 0 1 28 2 8 4 Square planar 0.942 +CEBZIS Ni -2 1 28 2 8 4 Square planar 0.915 +TEPCUM Ni 0 1 28 2 8 4 Square planar 0.926 +ASENIA Ni -2 1 28 2 8 4 Square planar 0.953 +DOMMEY Ni 0 1 28 2 8 4 Square planar 0.934 +QIMXUI Ni -2 1 28 2 8 4 Square planar 0.884 +JUGHAU Ni -2 1 28 2 8 4 Square planar 0.879 +KOBYOQ Ni 0 1 28 2 8 4 Square planar 0.913 +MIVGIH Ni -2 3 28 2 8 4 Tetrahedral 0.961 +GIFFOS Ni -1 3 28 2 8 4 Tetrahedral 0.972 +DIDMEK Ni -1 3 28 2 8 4 Tetrahedral 0.944 +AHABER Ni 0 3 28 2 8 4 Tetrahedral 1.004 +MEHKOA Ni -2 3 28 2 8 4 Tetrahedral 0.985 +OBOKAR Ni 0 3 28 2 8 4 Tetrahedral 1.007 +VEXXIH Ni 0 3 28 2 8 4 Tetrahedral 0.99 +XOXSUA Ni -1 3 28 2 8 4 Tetrahedral 1.006 +FIFDUU Ni 0 3 28 2 8 4 Tetrahedral 0.99 +FOGQOI Ni 0 3 28 2 8 4 Tetrahedral 0.975 +NOPTES Ni 0 3 28 2 8 4 Tetrahedral 0.969 +BAJWOZ Ni 0 3 28 2 8 4 Tetrahedral 0.991 +MAJCAC Ni 0 3 28 2 8 4 Tetrahedral 0.948 +YOJQEU Ni 0 3 28 2 8 4 Tetrahedral 0.965 +YOJQIY Ni 0 3 28 2 8 4 Tetrahedral 0.952 +PIVDAB Ni 1 3 28 2 8 4 Tetrahedral 1.037 +AHABIV Ni 0 3 28 2 8 4 Tetrahedral 1.032 +NEZBIG Ni -2 3 28 2 8 4 Tetrahedral 1.009 +SAHHAN Ni -1 3 28 2 8 4 Tetrahedral 1.008 +AZIDIY Ni -1 3 28 2 8 4 Tetrahedral 1.012 +DIDMAG Ni -1 3 28 2 8 4 Tetrahedral 0.98 +PARSOR Ni 0 3 28 2 8 4 Tetrahedral 1.023 +XARGON Ni 0 3 28 2 8 4 Tetrahedral 0.996 +BUBLEQ Ni 0 3 28 2 8 4 Tetrahedral 0.975 +PATQEG Ni 0 3 28 2 8 4 Tetrahedral 0.981 +SIZMUL Ni 0 3 28 2 8 4 Tetrahedral 1.019 +OEPHNI Ni 0 3 28 2 8 4 Tetrahedral 0.985 +LAMXAA Ni 0 3 28 2 8 4 Tetrahedral 1.01 +UXOBEQ Ni 0 3 28 2 8 4 Tetrahedral 1.011 +AHUCUE Ni 0 3 28 2 8 4 Tetrahedral 1.013 +XADCOV Ni 0 3 28 2 8 4 Tetrahedral 1.003 +JAPTAV Ni 0 3 28 2 8 4 Tetrahedral 0.972 +XIMROB Ni 0 3 28 2 8 4 Tetrahedral 0.996 +XIMYUO Ni 0 3 28 2 8 4 Tetrahedral 0.971 +TOLZUQ Ni 0 3 28 2 8 4 Tetrahedral 1.007 +ETAKIT Ni -2 3 28 2 8 4 Tetrahedral 0.977 +OLOZAR Ni 0 3 28 2 8 4 Tetrahedral 1.0 +FUNHUS Ni -1 3 28 2 8 4 Tetrahedral 1.016 +IZOJIS Ni 0 3 28 2 8 4 Tetrahedral 1.048 +UXOHAS02 Ni 0 3 28 2 8 4 Tetrahedral 1.027 +JIYYIA Ni 0 3 28 2 8 4 Tetrahedral 1.006 +ISALNI Ni 0 3 28 2 8 4 Tetrahedral 1.006 +MUFXIU Ni 0 3 28 2 8 4 Tetrahedral 1.003 +VUTSUY Ni 0 3 28 2 8 4 Tetrahedral 0.999 +KULBUO Ni 0 3 28 2 8 4 Tetrahedral 0.993 +XOTGOC Ni 0 3 28 2 8 4 Tetrahedral 1.018 +LONGAW Ni 0 3 28 2 8 4 Tetrahedral 1.023 +LONGEA Ni 0 3 28 2 8 4 Tetrahedral 1.028 +CUVGOP01 Ni -2 3 28 2 8 4 Tetrahedral 1.005 +XIXTAA Ni 0 3 28 2 8 4 Tetrahedral 0.981 +KOBYIK Ni 0 3 28 2 8 4 Tetrahedral 0.968 +MAXGIC Ni 0 1 28 2 8 5 Square pyramidal 0.977 +ELAKOR Ni 0 1 28 2 8 5 Square pyramidal 1.018 +BOKZEH Ni 0 3 28 2 8 5 Square pyramidal 1.056 +GITYOY Ni 0 3 28 2 8 5 Square pyramidal 1.112 +LUYMAU Ni 0 3 28 2 8 5 Square pyramidal 1.069 +KUBHIZ Ni 0 3 28 2 8 5 Square pyramidal 1.065 +LUZXEL Ni 0 3 28 2 8 5 Square pyramidal 1.053 +DEDROU Ni 0 3 28 2 8 5 Square pyramidal 1.065 +GEZGIE Ni 0 3 28 2 8 5 Square pyramidal 1.067 +CORHUN Ni 0 3 28 2 8 5 Square pyramidal 1.048 +ENUSEN Ni 0 1 28 2 8 5 Square pyramidal 1.052 +WABZAC Ni 0 1 28 2 8 5 Square pyramidal 1.003 +FISGAS Ni 1 3 28 2 8 5 Square pyramidal 1.132 +QOMLOU Ni 0 3 28 2 8 5 Square pyramidal 1.085 +HUWTIF Ni 2 1 28 2 8 5 Square pyramidal 0.957 +MUMPAL Ni -1 3 28 2 8 5 Square pyramidal 1.085 +HEFGEG Ni 0 3 28 2 8 5 Square pyramidal 1.087 +LEDQUH Ni 0 3 28 2 8 5 Square pyramidal 1.079 +VEWVEZ Ni 0 3 28 2 8 5 Square pyramidal 1.093 +KIDMEQ Ni 0 3 28 2 8 5 Square pyramidal 1.107 +MIJVAE Ni 0 3 28 2 8 5 Square pyramidal 1.079 +CEPFEI Ni 0 3 28 2 8 5 Square pyramidal 1.053 +ZUNDIN Ni 0 1 28 2 8 5 Square pyramidal 1.008 +ILODOD Ni 1 3 28 2 8 5 Square pyramidal 1.13 +MODREE Ni 0 3 28 2 8 5 Square pyramidal 1.084 +TUJWIE Ni 1 1 28 2 8 5 Square pyramidal 1.032 +NUYHOE Ni 1 1 28 2 8 5 Square pyramidal 0.978 +LULDOM Ni -3 3 28 2 8 5 Square pyramidal 1.056 +TOWCEN Ni 0 3 28 2 8 5 Square pyramidal 1.091 +XOQZOT Ni 1 3 28 2 8 5 Square pyramidal 1.094 +ECEXIU Ni 0 3 28 2 8 5 Square pyramidal 1.103 +PIBPOH Ni 1 3 28 2 8 5 Square pyramidal 1.081 +DOHXED Ni 1 3 28 2 8 5 Square pyramidal 1.133 +BATSIY Ni 1 3 28 2 8 5 Square pyramidal 1.09 +YECSIK Ni 1 3 28 2 8 5 Square pyramidal 1.063 +WIVQOI Ni 0 3 28 2 8 5 Square pyramidal 1.091 +HIMYAD Ni 0 3 28 2 8 5 Square pyramidal 1.077 +GEGBUQ Ni 0 3 28 2 8 5 Square pyramidal 1.069 +KEZRIR Ni 1 3 28 2 8 5 Square pyramidal 1.09 +HIMKOE Ni 1 3 28 2 8 5 Square pyramidal 1.082 +LIXMOX Ni 0 3 28 2 8 5 Square pyramidal 1.075 +LIXMUD Ni 0 3 28 2 8 5 Square pyramidal 1.073 +WELREL Ni 0 3 28 2 8 5 Square pyramidal 1.119 +AACANI11 Ni 0 3 28 2 8 5 Square pyramidal 1.046 +NETTOX Ni 0 3 28 2 8 5 Square pyramidal 1.087 +HALBEB Ni 0 3 28 2 8 5 Square pyramidal 1.087 +FOTSIR Ni 0 3 28 2 8 5 Square pyramidal 1.087 +LODBEL Ni 0 3 28 2 8 5 Square pyramidal 1.06 +PEMENI Ni 1 1 28 2 8 5 Square pyramidal 1.046 +UWIPOG Ni 0 3 28 2 8 5 Square pyramidal 1.102 +YUJZAF Ni 0 1 28 2 8 5 Square pyramidal 1.058 +GENQAS Ni 0 3 28 2 8 5 Square pyramidal 1.078 +CAWPOG Ni 2 1 28 2 8 5 Square pyramidal 1.017 +NAMYOQ Ni 0 3 28 2 8 5 Square pyramidal 1.091 +TITRAQ Ni 0 3 28 2 8 5 Square pyramidal 1.094 +XIXTII Ni 0 3 28 2 8 5 Square pyramidal 1.073 +GILZIK Ni 0 1 28 2 8 5 Square pyramidal 1.007 +MEDCUU Ni 0 1 28 2 8 5 Square pyramidal 0.975 +VUDDON Ni 0 1 28 2 8 5 Square pyramidal 0.997 +YADKET Ni 0 1 28 2 8 5 Square pyramidal 0.998 +DUMCUJ Ni 0 1 28 2 8 5 Square pyramidal 1.015 +MAXGOI Ni 0 1 28 2 8 5 Square pyramidal 0.996 +PEXKUB Ni 0 3 28 2 8 5 Trigonal bipyramidal 1.049 +RONREU Ni 0 3 28 2 8 5 Trigonal bipyramidal 1.053 +JAVLOK Ni 0 3 28 2 8 5 Trigonal bipyramidal 1.048 +GEZGEA Ni 0 3 28 2 8 5 Trigonal bipyramidal 1.063 +EWOBUP02 Ni 1 3 28 2 8 5 Trigonal bipyramidal 1.061 +HINVUY Ni 1 1 28 2 8 5 Trigonal bipyramidal 0.937 +ENUSAJ Ni 0 1 28 2 8 5 Trigonal bipyramidal 1.013 +MAJWUT Ni 0 1 28 2 8 5 Trigonal bipyramidal 1.024 +KOCNUM Ni 0 1 28 2 8 5 Trigonal bipyramidal 0.939 +RAWPUB Ni 0 1 28 2 8 5 Trigonal bipyramidal 0.951 +LISJEC Ni 0 1 28 2 8 5 Trigonal bipyramidal 0.972 +BAPKEI Ni 1 1 28 2 8 5 Trigonal bipyramidal 0.969 +AHIGOO Ni 0 1 28 2 8 5 Trigonal bipyramidal 0.947 +TOLBEB Ni -1 1 28 2 8 5 Trigonal bipyramidal 0.94 +AZOCNI16 Ni 1 3 28 2 8 5 Trigonal bipyramidal 1.099 +MAZOCT Ni 0 3 28 2 8 5 Trigonal bipyramidal 1.092 +HABRAG Ni 0 3 28 2 8 5 Trigonal bipyramidal 1.078 +YAPZIA Ni 0 3 28 2 8 5 Trigonal bipyramidal 1.08 +AYOYES Ni 0 3 28 2 8 5 Trigonal bipyramidal 1.07 +TUKGUB Ni 0 3 28 2 8 5 Trigonal bipyramidal 1.078 +QIWCUU Ni 0 1 28 2 8 5 Trigonal bipyramidal 0.992 +SIXZAA Ni 0 1 28 2 8 5 Trigonal bipyramidal 1.007 +TIVNUJ Ni 1 3 28 2 8 5 Trigonal bipyramidal 1.108 +HUPLIQ Ni 1 3 28 2 8 5 Trigonal bipyramidal 1.105 +BAJVUE Ni 0 3 28 2 8 5 Trigonal bipyramidal 1.078 +PEHZOU Ni 0 1 28 2 8 5 Trigonal bipyramidal 0.912 +CUHGUK Ni 0 3 28 2 8 5 Trigonal bipyramidal 1.073 +IMETNI01 Ni 1 3 28 2 8 5 Trigonal bipyramidal 1.11 +WUPWOU Ni 2 3 28 2 8 5 Trigonal bipyramidal 1.08 +CASLOX Ni 0 3 28 2 8 5 Trigonal bipyramidal 1.104 +RIRCIH Ni 2 3 28 2 8 5 Trigonal bipyramidal 1.116 +RACNIV Ni 0 3 28 2 8 5 Trigonal bipyramidal 1.086 +QETVAM Ni 0 3 28 2 8 5 Trigonal bipyramidal 1.097 +ENUREM Ni 0 3 28 2 8 5 Trigonal bipyramidal 1.074 +SALDNI Ni 0 3 28 2 8 5 Trigonal bipyramidal 1.074 +IVUTEY Ni 0 3 28 2 8 5 Trigonal bipyramidal 1.098 +HAYLOI Ni 0 3 28 2 8 5 Trigonal bipyramidal 1.067 +DUPMUX Ni 0 3 28 2 8 5 Trigonal bipyramidal 1.102 +LALPET Ni 0 1 28 2 8 5 Trigonal bipyramidal 0.955 +LIFVOM Ni 0 3 28 2 8 5 Trigonal bipyramidal 1.085 +UWIPEW Ni 0 3 28 2 8 5 Trigonal bipyramidal 1.132 +ITEXAH Ni 1 1 28 2 8 5 Trigonal bipyramidal 0.96 +ROCDOC Ni 2 1 28 2 8 5 Trigonal bipyramidal 0.948 +TEZKIS Ni 2 1 28 2 8 5 Trigonal bipyramidal 0.97 +MEDCEE Ni -1 1 28 2 8 5 Trigonal bipyramidal 0.962 +LUWDAI Ni 0 3 28 2 8 6 Octahedral 1.161 +ELUSUB Ni 0 3 28 2 8 6 Octahedral 1.174 +QOJDEZ Ni 0 3 28 2 8 6 Octahedral 1.098 +PANGER Ni 0 3 28 2 8 6 Octahedral 1.127 +FUMKIH Ni 0 3 28 2 8 6 Octahedral 1.117 +INILOI Ni 0 3 28 2 8 6 Octahedral 1.104 +KAHDOP Ni 0 3 28 2 8 6 Octahedral 1.121 +BIHKAE Ni 0 3 28 2 8 6 Octahedral 1.106 +FAZPEE Ni 0 3 28 2 8 6 Octahedral 1.166 +CAGSOV Ni 1 3 28 2 8 6 Octahedral 1.143 +COBGAB Ni 1 3 28 2 8 6 Octahedral 1.14 +LINSOR Ni 1 3 28 2 8 6 Octahedral 1.121 +UFUVUP Ni 1 3 28 2 8 6 Octahedral 1.116 +KAXXIR Ni 0 3 28 2 8 6 Octahedral 1.162 +KOBREZ Ni 0 3 28 2 8 6 Octahedral 1.138 +LUWCUB Ni 0 3 28 2 8 6 Octahedral 1.16 +AFAVIO Ni 0 3 28 2 8 6 Octahedral 1.121 +TUTMAW Ni 0 3 28 2 8 6 Octahedral 1.119 +UCISAA Ni 0 3 28 2 8 6 Octahedral 1.118 +SUVREI Ni 0 3 28 2 8 6 Octahedral 1.144 +FANFAD Ni 0 3 28 2 8 6 Octahedral 1.124 +DUSSAL Ni 0 3 28 2 8 6 Octahedral 1.103 +FEXTUY Ni 0 3 28 2 8 6 Octahedral 1.113 +QAFCEG Ni 0 3 28 2 8 6 Octahedral 1.106 +JODGOZ Ni 0 3 28 2 8 6 Octahedral 1.122 +ATOCOC Ni 0 3 28 2 8 6 Octahedral 1.126 +MTHUNI Ni 0 3 28 2 8 6 Octahedral 1.142 +RIQSAM Ni 1 3 28 2 8 6 Octahedral 1.143 +TUTKEA Ni 1 3 28 2 8 6 Octahedral 1.115 +CPMSNI10 Ni 1 3 28 2 8 6 Octahedral 1.126 +QUGQUF Ni 1 3 28 2 8 6 Octahedral 1.115 +NEFQEU Ni 1 3 28 2 8 6 Octahedral 1.148 +AGAMIH Ni 1 3 28 2 8 6 Octahedral 1.113 +TETFON Ni 1 3 28 2 8 6 Octahedral 1.158 +PIGDIS Ni 1 3 28 2 8 6 Octahedral 1.108 +RUHGUW Ni 0 3 28 2 8 6 Octahedral 1.152 +JAZXOX Ni 0 3 28 2 8 6 Octahedral 1.148 +EJUSEK Ni 1 3 28 2 8 6 Octahedral 1.138 +ITOQIS Ni 0 3 28 2 8 6 Octahedral 1.137 +DEFPEJ Ni 0 3 28 2 8 6 Octahedral 1.106 +ABOTNI Ni 0 3 28 2 8 6 Octahedral 1.106 +FAGKEE Ni 0 3 28 2 8 6 Octahedral 1.151 +URIRUL Ni 0 1 28 2 8 6 Octahedral 1.148 +USORUS Ni 1 3 28 2 8 6 Octahedral 1.121 +RETGON Ni 1 3 28 2 8 6 Octahedral 1.098 +PASGIZ Ni 1 3 28 2 8 6 Octahedral 1.158 +XENBIE Ni 2 3 28 2 8 6 Octahedral 1.093 +TIGGEW Ni -4 3 28 2 8 6 Octahedral 1.11 +MUTVUU Ni 0 3 28 2 8 6 Octahedral 1.117 +FOPJEB Ni 2 3 28 2 8 6 Octahedral 1.147 +RAPJAT Ni 0 3 28 2 8 6 Octahedral 1.123 +TEANIN Ni 2 3 28 2 8 6 Octahedral 1.137 +HOKXAG Ni 2 3 28 2 8 6 Octahedral 1.138 +ZARXAU Ni 2 3 28 2 8 6 Octahedral 1.119 +PEKPAW Ni 2 3 28 2 8 6 Octahedral 1.135 +DOVTUD Ni 0 3 28 2 8 6 Octahedral 1.122 +GOXBAW Ni 0 3 28 2 8 6 Octahedral 1.137 +KOTBAW Ni 2 3 28 2 8 6 Octahedral 1.144 +XEYZEH Ni 2 3 28 2 8 6 Octahedral 1.148 +LUMVEU Ni 2 3 28 2 8 6 Octahedral 1.132 +VIHXAN Ni 2 3 28 2 8 6 Octahedral 1.129 +CIGBUP Ni 2 3 28 2 8 6 Octahedral 1.127 +UWIFOW Ni 1 3 28 2 8 6 Octahedral 1.145 +ZZZRXM01 Ni 1 3 28 2 8 6 Octahedral 1.136 +XADMAR Ni 1 3 28 2 8 6 Octahedral 1.126 +CUDKAN Ni 2 3 28 2 8 6 Octahedral 1.126 +IREWEK Ni 2 3 28 2 8 6 Octahedral 1.065 +TUDGII Ni 2 3 28 2 8 6 Octahedral 1.139 +PAZPAI Ni 2 3 28 2 8 6 Octahedral 1.134 +BAVNAN Ni 2 3 28 2 8 6 Octahedral 1.127 +BADHIZ Ni 0 3 28 2 8 6 Octahedral 1.135 +NIHZCH11 Ni -1 3 28 2 8 6 Octahedral 1.116 +SATGOK Ni 0 3 28 2 8 6 Octahedral 1.119 +DUXWAW Ni 2 3 28 2 8 6 Octahedral 1.122 +SITFEG Ni 0 3 28 2 8 6 Octahedral 1.102 +ABEDAN Ni 2 3 28 2 8 6 Octahedral 1.085 +QOQKIQ Ni 2 3 28 2 8 6 Octahedral 1.117 +LOSHOS Ni 0 3 28 2 8 6 Octahedral 1.13 +HIVDAS Ni 2 3 28 2 8 6 Octahedral 1.135 +AENNIN Ni 2 3 28 2 8 6 Octahedral 1.132 +GEDJEE Ni 0 3 28 2 8 6 Octahedral 1.134 +XUWPAH Ni 0 3 28 2 8 6 Octahedral 1.123 +MEHNOC Ni 0 3 28 2 8 6 Octahedral 1.128 +NOQTAP Ni 0 3 28 2 8 6 Octahedral 1.185 +DAGFAT Ni 0 3 28 2 8 6 Octahedral 1.1 +ZOJXOL Ni 2 3 28 2 8 6 Octahedral 1.112 +FEBRAF Ni 2 3 28 2 8 6 Octahedral 1.102 +YELWAN Ni 2 3 28 2 8 6 Octahedral 1.133 +SICCUC Ni 2 3 28 2 8 6 Octahedral 1.106 +ZOZGEA Ni 2 3 28 2 8 6 Octahedral 1.11 +IJOREG Ni 0 3 28 2 8 6 Octahedral 1.14 +BOZJEH Ni 2 3 28 2 8 6 Octahedral 1.126 +KISKIH Ni 0 3 28 2 8 6 Octahedral 1.13 +LIYMAH Ni 2 3 28 2 8 6 Octahedral 1.117 +KEXWIT Ni 0 3 28 2 8 6 Octahedral 1.108 +SOFWIU Ni 2 3 28 2 8 6 Octahedral 1.113 +AGOZUR Ni 0 3 28 2 8 6 Octahedral 1.119 +COFMOC Ni 2 3 28 2 8 6 Octahedral 1.119 +QALDUD Ni 0 3 28 2 8 6 Octahedral 1.119 +ILATEV Ni 0 3 28 2 8 6 Octahedral 1.108 +QAGCEG Ni -2 3 28 2 8 6 Octahedral 1.146 +QEKFET Ni 0 3 28 2 8 6 Octahedral 1.128 +CIJYID Ni 2 3 28 2 8 6 Octahedral 1.097 +PINBUJ Ni 2 3 28 2 8 6 Octahedral 1.098 +BUXJEJ Ni 2 3 28 2 8 6 Octahedral 1.078 +SEBQAS Ni 2 3 28 2 8 6 Trigonal prismatic 1.144 +EPUTOB Ni 0 3 28 2 8 7 Pentagonal bipyramidal 1.202 +LIYCUU Ni 2 3 28 2 8 7 Pentagonal bipyramidal 1.196 +CEDYAM Ni 2 3 28 2 8 7 Pentagonal bipyramidal 1.241 +KIRFAV Ni 0 3 28 2 8 7 Pentagonal bipyramidal 1.231 +POJHUT Ni 0 3 28 2 8 7 Pentagonal bipyramidal 1.219 +XUQXEO Ni 0 3 28 2 8 7 Pentagonal bipyramidal 1.227 +MUKJOS Ni -1 2 28 3 7 4 Square planar 0.982 +SIHKEA Ni 1 2 28 3 7 4 Square planar 0.924 +TAGFIR Ni -1 2 28 3 7 4 Square planar 0.897 +TAGFUD Ni -1 2 28 3 7 4 Square planar 0.887 +TECRAW Ni -1 2 28 3 7 4 Square planar 0.888 +WOKCEE Ni -1 2 28 3 7 4 Square planar 0.885 +EBIXAQ Ni -1 2 28 3 7 4 Square planar 0.889 +MUKGUU Ni -1 2 28 3 7 4 Square planar 0.896 +BEXJEW Ni -1 2 28 3 7 4 Square planar 0.89 +CETXAA Ni 0 2 28 3 7 5 Square pyramidal 0.943 +ORODOP Ni 0 2 28 3 7 5 Square pyramidal 0.973 +KOHMEA Ni 0 2 28 3 7 5 Square pyramidal 0.973 +QOYFEQ Ni 0 2 28 3 7 5 Square pyramidal 1.021 +PAHMUJ Ni 1 2 28 3 7 5 Square pyramidal 1.07 +BINCOR Ni 0 2 28 3 7 5 Square pyramidal 1.017 +HIGVAV Ni 0 2 28 3 7 5 Square pyramidal 0.994 +BUDHEN Ni 0 2 28 3 7 5 Square pyramidal 1.015 +SUBJIL Ni 0 2 28 3 7 5 Square pyramidal 0.999 +WUBGEI Ni 0 2 28 3 7 5 Square pyramidal 1.03 +RUTMAV Ni -1 2 28 3 7 5 Trigonal bipyramidal 0.96 +YETYOM Ni -1 2 28 3 7 5 Trigonal bipyramidal 0.949 +QUZWAL Ni -1 2 28 3 7 5 Trigonal bipyramidal 0.956 +GOHDEN Ni -1 2 28 3 7 5 Trigonal bipyramidal 0.961 +MEDCAA Ni 0 2 28 3 7 5 Trigonal bipyramidal 0.95 +BIBFEY Ni -1 2 28 3 7 5 Trigonal bipyramidal 0.959 +BIBDUM Ni -1 2 28 3 7 5 Trigonal bipyramidal 0.941 +SASPAD Ni 1 2 28 3 7 6 Octahedral 1.058 +QEKCAN Ni 0 2 28 3 7 6 Octahedral 1.092 +DOVMOQ Ni 0 2 28 3 7 6 Octahedral 1.078 +JADGOK Ni 1 2 28 3 7 6 Octahedral 1.082 +ESUYUM Ni 3 2 28 3 7 6 Octahedral 1.108 +LOGKEZ Ni 1 2 28 3 7 6 Octahedral 1.021 +OZEDIH Ni 3 2 28 3 7 6 Octahedral 1.062 +KEVHIC Ni -1 2 28 3 7 6 Octahedral 1.017 +WABGOW Ni 0 2 28 3 7 6 Octahedral 0.984 diff --git a/cell2mol/random_forest.py b/cell2mol/models/random_forest.py similarity index 73% rename from cell2mol/random_forest.py rename to cell2mol/models/random_forest.py index 094128072..541612427 100644 --- a/cell2mol/random_forest.py +++ b/cell2mol/models/random_forest.py @@ -1,24 +1,21 @@ #!/usr/bin/env python -import os -import os.path import sklearn from sklearn.model_selection import RandomizedSearchCV from sklearn.ensemble import RandomForestClassifier -from sklearn.model_selection import train_test_split, StratifiedKFold -from sklearn.metrics import confusion_matrix, accuracy_score, f1_score +from sklearn.model_selection import StratifiedKFold +from sklearn.metrics import accuracy_score, f1_score import matplotlib import pickle import pandas as pd + matplotlib.use("Agg") -import matplotlib.pyplot as plt import numpy as np from sys import argv -import ast from cell2mol.spin import make_geom_list -dataframe=argv[1] +dataframe = argv[1] metal = argv[2] prop = argv[3] mode = argv[4] @@ -31,48 +28,61 @@ print(df.columns) df["geom_nr"] = "" -for tmc in df.refcode : - df.loc[df.refcode==tmc, "geom_nr"] = make_geom_list()[df[df.refcode==tmc].geometry.item()] +for tmc in df.refcode: + df.loc[df.refcode == tmc, "geom_nr"] = make_geom_list()[ + df[df.refcode == tmc].geometry.item() + ] if metal == "total": pass -else : +else: if metal in df["metal"].unique(): df = df[df["metal"] == metal] - else : + else: print("No such metal in the database") exit() -print("the length of", metal, len(df)) -#print(df[:10]) +print("the length of", metal, len(df)) +# print(df[:10]) -#exit() +# exit() -#prop = "spin_multiplicity" +# prop = "spin_multiplicity" -#prop = "m_ox" +# prop = "m_ox" -if prop == "spin_multiplicity" or prop == "spin" or prop == "s" : - # extract = ["elem_nr", "m_ox", "d_elec"] # F_TM +if prop == "spin_multiplicity" or prop == "spin" or prop == "s": + # extract = ["elem_nr", "m_ox", "d_elec"] # F_TM # extract = ["CN", "geom_nr", "rel_m"] # F_CE - #extract = ["elem_nr", "m_ox", "d_elec", "CN", "geom_nr", "rel_m"] # F_TM+CE - extract = ["elem_nr", "m_ox", "d_elec", "CN", "geom_nr", "rel_m", "hapticity"] # F_TM+CE+hapticity + # extract = ["elem_nr", "m_ox", "d_elec", "CN", "geom_nr", "rel_m"] # F_TM+CE + extract = [ + "elem_nr", + "m_ox", + "d_elec", + "CN", + "geom_nr", + "rel_m", + "hapticity", + ] # F_TM+CE+hapticity elif prop == "m_ox": - extract = ["elem_nr", "CN", "geom_nr", "rel_m", "hapticity"] -else : + extract = ["elem_nr", "CN", "geom_nr", "rel_m", "hapticity"] +else: print("No such property in the database") exit() - -Nfix=list(df["refcode"]) + +Nfix = list(df["refcode"]) print("the number of complexes :", len(Nfix)) -Nfix=np.array(Nfix, dtype=str) +Nfix = np.array(Nfix, dtype=str) X = np.vstack([np.array(df[df["refcode"] == name][extract]) for name in Nfix]) print(extract) print("feature size", X.shape) -Y = np.array( [ df[df.refcode==name][prop].item() for name in Nfix] , dtype=int,) +Y = np.array( + [df[df.refcode == name][prop].item() for name in Nfix], + dtype=int, +) print("reference data", Y.shape) @@ -110,7 +120,7 @@ acc_train = np.zeros((n_splits)) acc_test = np.zeros((n_splits)) -f1_train_micro = np.zeros((n_splits)) +f1_train_micro = np.zeros((n_splits)) f1_test_micro = np.zeros((n_splits)) f1_train_macro = np.zeros((n_splits)) f1_test_macro = np.zeros((n_splits)) @@ -137,7 +147,7 @@ f1_train_micro[rep] = f1_score(y_tr, predictions, average="micro") f1_train_macro[rep] = f1_score(y_tr, predictions, average="macro") f1_train_weighted[rep] = f1_score(y_tr, predictions, average="weighted") - + # Test set predict predictions = learner.predict(X_te) prediction_probs = np.around(learner.predict_proba(X_te), 4) @@ -147,31 +157,46 @@ f1_test_macro[rep] = f1_score(y_te, predictions, average="macro") f1_test_weighted[rep] = f1_score(y_te, predictions, average="weighted") - is_certain = [True if np.max(probs) >= 0.5 else False for probs in prediction_probs] l_oos.extend(l_te) - #print(prediction_probs) - #print(np.amax(prediction_probs, axis=1)) + # print(prediction_probs) + # print(np.amax(prediction_probs, axis=1)) maxprob.extend(list(np.amax(prediction_probs, axis=1))) if print_incorrect: print(f"\n Incorrect predictions for replica {rep}:") for idx, sys in enumerate(is_correct): if not sys and print_incorrect: - m_ox = df[ df.refcode == l_te[idx] ]["m_ox"].item() - metal_elem = df[ df.refcode == l_te[idx] ]["metal"].item() + m_ox = df[df.refcode == l_te[idx]]["m_ox"].item() + metal_elem = df[df.refcode == l_te[idx]]["metal"].item() print( f"System {l_te[idx]} has prediction {predictions[idx]} with probability {np.max(prediction_probs[idx])} and reference {y_te[idx]} metal {metal_elem} m_ox {m_ox}" ) print("\n \n Summary of replica results:") -print(f"Training mean accuracy was {round(np.mean(acc_train),3)} with STD {round(np.std(acc_train),3)}") -print(f"Test mean accuracy was {round(np.mean(acc_test),3)} with STD {round(np.std(acc_test),3)}") -print(f"Training mean f1_score_micro was {round(np.mean(f1_train_micro),3)} with STD {round(np.std(f1_train_micro),3)}") -print(f"Test mean f1_score_micro was {round(np.mean(f1_test_micro),3)} with STD {round(np.std(f1_test_micro),3)}") -print(f"Training mean f1_score_macro was {round(np.mean(f1_train_macro),3)} with STD {round(np.std(f1_train_macro),3)}") -print(f"Test mean f1_score_macro was {round(np.mean(f1_test_macro),3)} with STD {round(np.std(f1_test_macro),3)}") -print(f"Training mean f1_score_weighted was {round(np.mean(f1_train_weighted),3)} with STD {round(np.std(f1_train_weighted),3)}") -print(f"Test mean f1_score_weighted was {round(np.mean(f1_test_weighted),3)} with STD {round(np.std(f1_test_weighted),3)}") +print( + f"Training mean accuracy was {round(np.mean(acc_train), 3)} with STD {round(np.std(acc_train), 3)}" +) +print( + f"Test mean accuracy was {round(np.mean(acc_test), 3)} with STD {round(np.std(acc_test), 3)}" +) +print( + f"Training mean f1_score_micro was {round(np.mean(f1_train_micro), 3)} with STD {round(np.std(f1_train_micro), 3)}" +) +print( + f"Test mean f1_score_micro was {round(np.mean(f1_test_micro), 3)} with STD {round(np.std(f1_test_micro), 3)}" +) +print( + f"Training mean f1_score_macro was {round(np.mean(f1_train_macro), 3)} with STD {round(np.std(f1_train_macro), 3)}" +) +print( + f"Test mean f1_score_macro was {round(np.mean(f1_test_macro), 3)} with STD {round(np.std(f1_test_macro), 3)}" +) +print( + f"Training mean f1_score_weighted was {round(np.mean(f1_train_weighted), 3)} with STD {round(np.std(f1_train_weighted), 3)}" +) +print( + f"Test mean f1_score_weighted was {round(np.mean(f1_test_weighted), 3)} with STD {round(np.std(f1_test_weighted), 3)}" +) try: assert len(maxprob) == len(l_oos) @@ -192,7 +217,6 @@ # Not doing out of sample things because there is no out of sample if run_diagnosis: - # Initializing the learner learner = learner = rf_random.best_estimator_.fit(X, Y) @@ -224,7 +248,7 @@ prediction, bias, contributions = ti.predict(learner, X) for idx, sys in enumerate(Nfix): - print(f"System {Nfix[idx]} has contributions {contributions[0,idx]}:") + print(f"System {Nfix[idx]} has contributions {contributions[0, idx]}:") # trained_model = pickle.load(open(filename, 'rb')) diff --git a/cell2mol/models/rf.py b/cell2mol/models/rf.py new file mode 100644 index 000000000..d690399fd --- /dev/null +++ b/cell2mol/models/rf.py @@ -0,0 +1,179 @@ +#!/usr/bin/env python + +import sklearn +from sklearn.model_selection import RandomizedSearchCV, StratifiedKFold +from sklearn.ensemble import RandomForestClassifier +from sklearn.metrics import accuracy_score, f1_score + +import matplotlib + +matplotlib.use("Agg") + +import numpy as np +import pandas as pd +from sys import argv +from joblib import dump +import json + +from cell2mol.spin import make_geom_list + +# ---- Input arguments ---- +dataframe = argv[1] +metal = argv[2] +prop = argv[3] +mode = argv[4] + +print("Sklearn version:", sklearn.__version__) + +# ---- Load data ---- +# df = pd.read_csv(dataframe) +df = pd.read_csv(dataframe, delimiter="\t") +print("dataframe size:", len(df)) +print(df.columns) + +df["geom_nr"] = "" +for tmc in df.refcode: + df.loc[df.refcode == tmc, "geom_nr"] = make_geom_list()[ + df[df.refcode == tmc].geometry.item() + ] + +# ---- Metal filtering ---- +if metal != "total": + if metal in df["metal"].unique(): + df = df[df["metal"] == metal] + else: + print("No such metal in the database") + exit() + +print("filtered size:", metal, len(df)) +if "hapticity" in df.columns: + print("Coordination complexes:", len(df[df["hapticity"] == False])) + print("Complexes with haptic ligands:", len(df[df["hapticity"] == True])) + +# df = df[df["hapticity"] == False] +# print("filtered size:", metal, len(df)) + +# ---- Feature selection ---- +if prop in ["spin_multiplicity", "multiplicity"]: + extract = ["elem_nr", "m_ox", "d_elec", "CN", "geom_nr", "rel_m"] + if "hapticity" in df.columns: + extract.append("hapticity") +elif prop == "m_ox": + extract = ["elem_nr", "CN", "geom_nr", "rel_m"] + if "hapticity" in df.columns: + extract.append("hapticity") +else: + print("No such property in the database") + exit() + + +# ---- Build feature and label arrays ---- +Nfix = np.array(df["refcode"], dtype=str) +print("number of complexes:", len(Nfix)) + +X = np.vstack([np.array(df[df["refcode"] == name][extract]) for name in Nfix]) +Y = np.array( + [df[df.refcode == name][prop].item() for name in Nfix], + dtype=int, +) + +print("features:", extract) +print("X shape:", X.shape) +print("Y shape:", Y.shape) + + +# ---- Class statistics ---- +for uniq_prop in np.unique(Y): + print(f"{prop} {uniq_prop}: {np.count_nonzero(Y == uniq_prop)}") + + +# ---- Hyperparameter search ---- +random_grid = { + "n_estimators": [100, 200, 300], + "max_features": [0.25, 0.5, 0.75], + "bootstrap": [True, False], +} + +rf_random = RandomizedSearchCV( + estimator=RandomForestClassifier(n_jobs=-1), + param_distributions=random_grid, + n_iter=18, + cv=5, + random_state=42, +).fit(X, Y) + + +# ---- Cross-validation ---- +n_splits = 10 +acc_train = np.zeros(n_splits) +acc_test = np.zeros(n_splits) + +f1_train_micro = np.zeros(n_splits) +f1_test_micro = np.zeros(n_splits) +f1_train_macro = np.zeros(n_splits) +f1_test_macro = np.zeros(n_splits) +f1_train_weighted = np.zeros(n_splits) +f1_test_weighted = np.zeros(n_splits) + +maxprob = [] +l_oos = [] + +skf = StratifiedKFold(n_splits=n_splits, shuffle=True, random_state=42) + +for rep, (idx_tr, idx_te) in enumerate(skf.split(X, Y)): + X_tr, X_te = X[idx_tr], X[idx_te] + y_tr, y_te = Y[idx_tr], Y[idx_te] + l_te = Nfix[idx_te] + + learner = rf_random.best_estimator_.fit(X_tr, y_tr) + + # Train metrics + pred_tr = learner.predict(X_tr) + acc_train[rep] = 100 * accuracy_score(y_tr, pred_tr) + f1_train_micro[rep] = f1_score(y_tr, pred_tr, average="micro") + f1_train_macro[rep] = f1_score(y_tr, pred_tr, average="macro") + f1_train_weighted[rep] = f1_score(y_tr, pred_tr, average="weighted") + + # Test metrics + pred_te = learner.predict(X_te) + probs_te = np.around(learner.predict_proba(X_te), 4) + + acc_test[rep] = 100 * accuracy_score(y_te, pred_te) + f1_test_micro[rep] = f1_score(y_te, pred_te, average="micro") + f1_test_macro[rep] = f1_score(y_te, pred_te, average="macro") + f1_test_weighted[rep] = f1_score(y_te, pred_te, average="weighted") + + maxprob.extend(np.max(probs_te, axis=1)) + l_oos.extend(l_te) + + +# ---- Summary ---- +print("\nSummary:") +print(f"Train accuracy: {np.mean(acc_train):.3f} ± {np.std(acc_train):.3f}") +print(f"Test accuracy: {np.mean(acc_test):.3f} ± {np.std(acc_test):.3f}") +print(f"Train f1 (micro): {np.mean(f1_train_micro):.3f}") +print(f"Test f1 (micro): {np.mean(f1_test_micro):.3f}") + + +# ---- Save OOS probabilities ---- +dat = np.column_stack((np.array(l_oos, dtype=object), np.array(maxprob))) +np.savetxt(f"{metal}_{prop}_maxprob_{len(df)}_{mode}.txt", dat, fmt="%s") + + +# ---- Train final model and save ---- +final_model = rf_random.best_estimator_.fit(X, Y) + +model_name = f"{metal}_{prop}_{len(df)}.joblib" +dump(final_model, model_name) + +meta = { + "sklearn_version": sklearn.__version__, + "n_samples": len(df), + "features": extract, +} + +with open(model_name.replace(".joblib", "_meta.json"), "w") as f: + json.dump(meta, f, indent=2) + +print("Model saved:", model_name) +print("Feature importance:", final_model.feature_importances_) diff --git a/cell2mol/total_spin_3131.pkl b/cell2mol/models/total_spin_3131.pkl similarity index 100% rename from cell2mol/total_spin_3131.pkl rename to cell2mol/models/total_spin_3131.pkl diff --git a/cell2mol/my_types.py b/cell2mol/my_types.py new file mode 100644 index 000000000..4b6b41850 --- /dev/null +++ b/cell2mol/my_types.py @@ -0,0 +1,171 @@ +from typing import Annotated, Any, Literal, TypeVar + +import numpy as np +from pydantic import BeforeValidator, GetCoreSchemaHandler, PlainSerializer +from pydantic_core import CoreSchema, core_schema +from rdkit import Chem +from rdkit.Chem import Mol + + +# ============================================================================= +# NumPy-safe scalar types +# ============================================================================= +# These types handle numpy scalars that might be assigned to fields from +# legacy pickle data. They coerce numpy types to Python native types. +# ============================================================================= + + +def _coerce_int(value: Any) -> int | None: + """Coerce numpy integers to Python int.""" + if value is None: + return None + if isinstance(value, np.integer): + return int(value) + return value + + +def _coerce_float(value: Any) -> float | None: + """Coerce numpy floats to Python float.""" + if value is None: + return None + if isinstance(value, np.floating): + return float(value) + return value + + +def _serialize_int(value: Any) -> int | None: + """Serialize int, handling numpy integers.""" + if value is None: + return None + if isinstance(value, np.integer): + return int(value) + return value + + +def _serialize_float(value: Any) -> float | None: + """Serialize float, handling numpy floats.""" + if value is None: + return None + if isinstance(value, np.floating): + return float(value) + return value + + +# Use these types for fields that might receive numpy scalars +# BeforeValidator handles new assignments, PlainSerializer handles legacy pickle data +Int = Annotated[int, BeforeValidator(_coerce_int), PlainSerializer(_serialize_int)] +OptionalInt = Annotated[ + int | None, BeforeValidator(_coerce_int), PlainSerializer(_serialize_int) +] +Float = Annotated[ + float, BeforeValidator(_coerce_float), PlainSerializer(_serialize_float) +] +OptionalFloat = Annotated[ + float | None, BeforeValidator(_coerce_float), PlainSerializer(_serialize_float) +] + + +# ============================================================================= +# Reference Types for Cross-Object References +# ============================================================================= +# These type aliases document fields that contain references to other BaseModel +# objects. At runtime, the field holds the actual object (e.g., Metal). +# Serialization is handled by _serialize_value in pydantic.py. +# ============================================================================= + +T = TypeVar("T") + +# Type aliases for cross-reference fields +# Usage: metals: RefList[Metal] = Field(default_factory=list) +Ref = T +RefList = list[T] +OptionalRef = T | None +OptionalRefList = list[T] | None + + +# ============================================================================= +# Simple Type Aliases +# ============================================================================= + +Spin = int +Type = Literal["cell", "cells", "specie", "protonation", "charge_state", "atom", "bond"] +SubType = Literal[ + "reference", + "unitcell", + "molecule", + "ligand", + "metal", + "atom", + "group", + "fragment", + "Rec. Molecule", + "Rec. Fragment", +] +NOType = Literal["Linear", "Bent"] + + +class _NDArrayType: + """Custom Pydantic type for numpy arrays with proper serialization.""" + + @classmethod + def __get_pydantic_core_schema__( + cls, source_type: Any, handler: GetCoreSchemaHandler + ) -> CoreSchema: + return core_schema.no_info_plain_validator_function( + cls._validate, + serialization=core_schema.plain_serializer_function_ser_schema( + cls._serialize + ), + ) + + @staticmethod + def _validate(value: Any) -> np.ndarray: + if isinstance(value, np.ndarray): + return value + if isinstance(value, list): + return np.array(value) + raise ValueError(f"Cannot convert {type(value)} to ndarray") + + @staticmethod + def _serialize(value: np.ndarray) -> list: + if isinstance(value, np.ndarray): + return value.tolist() + return value + + +NDArray = Annotated[np.ndarray, _NDArrayType()] + +Format = Literal["json", "pickle"] + + +class _RDKitMolType: + """Custom Pydantic type for RDKit Mol with proper serialization.""" + + @classmethod + def __get_pydantic_core_schema__( + cls, source_type: Any, handler: GetCoreSchemaHandler + ) -> CoreSchema: + return core_schema.no_info_plain_validator_function( + cls._validate, + serialization=core_schema.plain_serializer_function_ser_schema( + cls._serialize + ), + ) + + @staticmethod + def _validate(value: Any) -> Mol: + if isinstance(value, Mol): + return value + if isinstance(value, str): + mols = Chem.JSONToMols(value) + if mols and len(mols) > 0: + return mols[0] + raise ValueError(f"Failed to deserialize RDKit Mol: {value[:100]}...") + raise ValueError(f"Cannot convert {type(value)} to RDKit Mol") + + @staticmethod + def _serialize(value: Mol) -> str: + return Chem.MolToJSON(value) + + +RDKitObject = Annotated[Mol, _RDKitMolType()] diff --git a/cell2mol/new_c2m_driver.py b/cell2mol/new_c2m_driver.py deleted file mode 100644 index bb79e5f76..000000000 --- a/cell2mol/new_c2m_driver.py +++ /dev/null @@ -1,208 +0,0 @@ -import os -import sys -from ase.io import read -from cell2mol.helper import parsing_arguments -from cell2mol.cif2info import cif_2_info -from cell2mol.classes import cell -from cell2mol.read_write import readinfo, prefiter_cif, print_output, writexyz, get_wyckoff_positions -from cell2mol.new_c2m_module import cell2mol -from cell2mol.other import handle_error -from cell2mol.cell_operations import frac2cart_fromparam -from cell2mol.new_charge_assignment import assign_charge_state_for_unique_species, balance_charge -from cell2mol.new_cell_reconstruction import modify_cov_factor_due_to_H, modify_cov_factor_due_to_possible_charges - -if __name__ == "__main__" or __name__ == "cell2mol.new_c2m_driver": - - input, isverbose, isquiet = parsing_arguments() - current_dir = os.getcwd() - input_path = os.path.normpath(input) - dir, file = os.path.split(input_path) - root, extension = os.path.splitext(file) - root = root.split(".") - name = root[0] - - stdout = sys.stdout - stderr = sys.stderr - - # Filenames for output and cell object - cell_fname = os.path.join(current_dir, "Cell_{}.cell".format(name)) - ref_cell_fname = os.path.join(current_dir, "Ref_Cell_{}.cell".format(name)) - output_fname = os.path.join(current_dir, "cell2mol.out") - surmmary_fname = os.path.join(current_dir, "surmmary.out") - - ##### Deals with the parsed arguments for verbosity ###### - if isverbose and not isquiet: debug = 2 - elif isverbose and isquiet: debug = 0 - elif not isverbose and isquiet: debug = 0 - elif not isverbose and not isquiet: debug = 1 - - ##### Deals with files ###### - if os.path.exists(input_path): - ## If the input is a .cif file, then it is converted to a .info file using cif_2_info from cif2cell - if extension == ".cif": - try: - errorpath = os.path.join(current_dir, "cif2cell.err") - infopath = os.path.join(current_dir, "{}.info".format(name)) - # if error exist : sys.exit(1) - # Create .info file - cif_2_info(input_path, infopath, errorpath) - # Checks errors in cif_2_info - with open(errorpath, 'r') as err: - for line in err.readlines(): - if "Error" in line: sys.exit(1) - except: - pass - ## If the input is an .info file, then is used directly - elif extension == ".info": infopath = input_path - else: sys.exit(1) - - - output = open(output_fname, "w") - sys.stdout = output - - version = "2.0" - print(f"cell2mol version {version}") - print(f"INITIATING cell object from input path: {input_path}") - print(f"Debug level: {debug}") - - # Pre-filtering of the .cif file - # if not prefiter_cif(input_path): - # output.close() - # sys.stdout = stdout - # sys.exit(1) - - # Read cif file - atoms = read(input_path) - - wrap_keywords = { - 'pbc': True, # Periodic boundary conditions - 'center': (0.5, 0.5, 0.5), # Center the positions in the unit cell - } - - cell_labels = atoms.get_chemical_symbols() - cell_pos = atoms.get_positions(wrap=True, **wrap_keywords) - cell_fracs = atoms.get_scaled_positions() - cell_vector = atoms.cell.array - cell_param = atoms.cell.cellpar() - space_group = atoms.info['spacegroup'] - sym_ops = space_group.get_op() - - ########################################## - ### PREPARES THE REFERENCE CELL OBJECT ### - ########################################## - cov_factor = 1.3 - # cov_factor -= 0.1 - print(f"{cov_factor=}") - metal_factor = 1.0 - - # Get reference molecules - # labels, pos, ref_labels, ref_fracs, cellvec, cell_param = readinfo(infopath) - # labels, pos, and cellvec will not be used - ref_labels, ref_fracs = get_wyckoff_positions(input_path) - ref_pos = frac2cart_fromparam(ref_fracs, cell_param) - - # Create reference cell object - refcell = cell(name, ref_labels, ref_pos, ref_fracs, cell_vector, cell_param) - refcell.set_subtype("reference") - refcell.get_reference_molecules(ref_labels, ref_fracs, cov_factor=cov_factor, debug=debug) - - refcell = modify_cov_factor_due_to_H(refcell, debug=debug) - refcell.save(ref_cell_fname) - - if refcell.error_case == 0: - refcell.get_unique_species(debug=debug) # Get unique_species, unique_indices, and species_list of the reference cell - if debug >= 1: - print(f"refcell.unique_species {[specie.formula for specie in refcell.unique_species]} {refcell.unique_indices=}") - print(f"refcell.species_list {[specie.formula for specie in refcell.species_list]}\n") - - refcell = modify_cov_factor_due_to_possible_charges(refcell, debug=debug) - refcell.get_selected_cs(debug=debug) # for the last time for unique species - refcell.assess_errors(mode="possible_charges") - # Save reference cell object - refcell.save(ref_cell_fname) - - ########################################## - # Define new cell object for the unit cell - newcell = cell(name, cell_labels, cell_pos, cell_fracs, cell_vector, cell_param) - newcell.set_subtype("unitcell") - - if refcell.error_case != 0: - pass - else: - reconstruction = True - charge_assignment = False - spin_assignment = False - cov_factor = refcell.refmoleclist[0].cov_factor - # Get reference molecules - newcell.get_reference_molecules(refcell.labels, refcell.frac_coord, cov_factor=cov_factor, debug=-1) - if not newcell.has_isolated_H: - newcell.check_missing_H(debug=-1) - - print(f"ENTERING cell2mol with {debug=}") - - newcell = cell2mol(newcell, refcell, sym_ops, reconstruction, charge_assignment, spin_assignment, debug=debug) - newcell.assess_errors(mode="reconstruction") - - if newcell.error_case == 0 and reconstruction : - reconstruction = False - charge_assignment = True - newcell = cell2mol(newcell, refcell, sym_ops, reconstruction, charge_assignment, spin_assignment, debug=debug) - newcell.assess_errors(mode="charge_assignment") - - if newcell.error_case == 0 and charge_assignment : - reconstruction = False - charge_assignment = False - spin_assignment = True - newcell = cell2mol(newcell, refcell, sym_ops, reconstruction, charge_assignment, spin_assignment, debug=debug) - - final_charge_distribution, final_charges = balance_charge(newcell.unique_indices, refcell.unique_species, debug=debug) - refcell.unique_species = assign_charge_state_for_unique_species(refcell.unique_species, final_charges[0], debug=debug) - refcell.assign_charges_for_refcell(debug=debug) - refcell.assign_spin(debug=debug) - refcell.create_bonds(debug=debug) - - # Update reference cell object - refcell.save(ref_cell_fname) - - # Save unit cell object - newcell.save(cell_fname) - - output.close() - sys.stdout = stdout - - - # Summary - surmmary = open(surmmary_fname, "w") - sys.stdout = surmmary - print(name) - print("*** Reference molecules ***") - print(refcell) - print_output(refcell.refmoleclist) - - print("***Unit cell molecules ***") - print(newcell) - if hasattr(newcell, "moleclist"): - print_output(newcell.moleclist) - - surmmary.close() - sys.stdout = stdout - - # Error handling - case = refcell.error_case - error_fname = os.path.join(current_dir, f"refcell_error_{case}.out") - error = open(error_fname, "w") - sys.stdout = error - handle_error(case) - error.close() - sys.stdout = stdout - - # Error handling - if hasattr(newcell, "error_case"): - case = newcell.error_case - error_fname = os.path.join(current_dir, f"unitcell_error_{case}.out") - error = open(error_fname, "w") - sys.stdout = error - handle_error(case) - error.close() - sys.stdout = stdout - diff --git a/cell2mol/new_c2m_module.py b/cell2mol/new_c2m_module.py deleted file mode 100644 index 3b6ecb72c..000000000 --- a/cell2mol/new_c2m_module.py +++ /dev/null @@ -1,108 +0,0 @@ -#!/usr/bin/env python - -import time -from cell2mol.new_cell_reconstruction import * -from cell2mol.new_charge_assignment import * -from cell2mol.read_write import writexyz -################################################################################## -################################## MAIN ########################################## -################################################################################## -def cell2mol(newcell: object, refcell: object, sym_ops, reconstruction: bool=True, - charge_assignment: bool=True, spin_assignment=True, debug: int=1) -> object: - - if reconstruction: - if debug >= 1: - print("#########################################") - print(" Cell Reconstruction ") - print("#########################################") - tini = time.time() - if not newcell.has_isolated_H and not newcell.has_missing_H: - # Cell Reconstruction - all_molecules, reconstructed_molecules = reconstruct(refcell, newcell, sym_ops, debug=debug) - all_molecules.extend(reconstructed_molecules) - # for i, mol in enumerate(all_molecules): - # writexyz(os.getcwd(), f"{refcell.name}_mol_{i}_{mol.formula}.xyz", mol.labels, mol.coord) - tend = time.time() - if newcell.error_get_fragments: - if debug >= 1: print(f"\nCell Reconstruction Failed. Total execution time: {tend - tini:.2f} seconds") - return newcell - elif newcell.error_reconstruction: - if debug >= 1: print(f"\nCell Reconstruction Failed. Total execution time: {tend - tini:.2f} seconds") - return newcell - else: - if debug >= 1: print(f"\nCell Reconstruction Finished Normally. Total execution time: {tend - tini:.2f} seconds") - - # Get moleclist for the unit cell - newcell = get_moleclist(newcell, refcell, all_molecules, debug=2) - - # Get unique indices for moleclist and species list in the unit cell using reference cell - newcell.unique_species = copy.deepcopy(refcell.unique_species) - newcell = get_unique_indices(newcell, refcell.species_list, debug=debug) - if debug >= 1: - print(f"newcell.unique_species formula={[specie.formula for specie in newcell.unique_species]}") - print(f"newcell.species_list formula={[specie.formula for specie in newcell.species_list]}") - print(f"{newcell.unique_indices=}") - else: - return newcell - - if charge_assignment: - tini = time.time() - if debug >= 1: - print("#########################################") - print(" Get Unique Species and Balance Charges ") - print("#########################################") - if not newcell.error_reconstruction: - - if None in refcell.selected_cs : - newcell.error_get_poscharges = True - else: - newcell.error_get_poscharges = False - print_possible_and_selected_cs(newcell, refcell, debug=debug) - - # Find charge distribution for the unit cell - if debug >= 1: print(f"\nFind charge distribution for the unit cell") - final_charge_distribution, final_charges = balance_charge(newcell.unique_indices, refcell.unique_species, debug=debug) - if debug >= 1: print(f"{final_charge_distribution=}") - if debug >= 1: print(f"{final_charges=}") - - # Assign charge for the unit cell and check charge neutrality - newcell.assign_charges(debug=debug) - tend = time.time() - if newcell.error_get_poscharges : - if debug >= 1: print(f"Charge Assignment Failed. Total execution time: {tend - tini:.2f} seconds") - return newcell - elif newcell.error_multiple_distrib : - if debug >= 1: print(f"Charge Assignment Failed. Total execution time: {tend - tini:.2f} seconds") - return newcell - elif newcell.error_empty_distrib : - if debug >= 1: print(f"Charge Assignment Failed. Total execution time: {tend - tini:.2f} seconds") - return newcell - else : - - if debug >= 1: print(f"Charge Assignment Finished Normally. Total execution time: {tend - tini:.2f} seconds") - return newcell - # newcell.check_charge_neutrality(debug=debug) - # newcell.create_bonds(debug=debug) - - # if newcell.error_create_bonds: - # if debug >= 1: print(f"Creating bonds Failed") - # return newcell - # else: - # if debug >= 1: print("Creating bonds Finished Normally") - else: - return newcell - - if spin_assignment: - if debug >= 1: - print("#########################################") - print(" Spin Assignment ") - print("#########################################") - tini = time.time() - if not newcell.error_get_poscharges and not newcell.error_multiple_distrib and not newcell.error_empty_distrib: - newcell.assign_spin(debug=debug) - tend = time.time() - if debug >= 1: print(f"\nTotal execution time for Spin Assignment: {tend - tini:.2f} seconds") - else: - return newcell - - return newcell \ No newline at end of file diff --git a/cell2mol/new_cell_reconstruction.py b/cell2mol/new_cell_reconstruction.py deleted file mode 100644 index 311ec1579..000000000 --- a/cell2mol/new_cell_reconstruction.py +++ /dev/null @@ -1,1012 +0,0 @@ -import numpy as np -from ase import Atoms -from cell2mol.classes import molecule -from cell2mol.cell_reconstruction import tmatgenerator -from cell2mol.other import get_dist, extract_from_list -from cell2mol.connectivity import split_species, count_species, compare_reference_indices -from cell2mol.cell_operations import translate -from itertools import combinations -from cell2mol.elementdata import ElementData -elemdatabase = ElementData() -import os -from cell2mol.read_write import writexyz - -###################################################### -def modify_cov_factor_due_to_H (refcell, debug: int=0): - cov_factor = refcell.refmoleclist[0].cov_factor - if not refcell.has_isolated_H: - refcell.check_missing_H(debug=debug) - else: - if debug >= 1: print(f"Initial covalent factor: {cov_factor=} before increasing") - while refcell.has_isolated_H and cov_factor < 1.5: - # Increase covalent factor for H atoms - cov_factor += 0.05 - refcell.get_reference_molecules(refcell.labels, refcell.frac_coord, cov_factor=cov_factor, debug=0) - if debug >= 1: print(f"Covalent factor increases: {cov_factor=}") - refcell.check_missing_H(debug=debug) - refcell.assess_errors(mode="hydrogens") - return refcell - -###################################################### -def modify_cov_factor_due_to_possible_charges (refcell, debug: int=0): - - cov_factor = refcell.refmoleclist[0].cov_factor - print(f"Initial ovalent factor: {cov_factor=}") - - temp_selection = [] - while (len(temp_selection) != len(refcell.species_list) or (refcell.has_isolated_H or refcell.has_missing_H) ) and (cov_factor > 1.15): - for specie in refcell.species_list: - tmp = specie.get_possible_cs(debug=debug) - if tmp is None: - cov_factor -= 0.05 - refcell.get_reference_molecules(refcell.labels, refcell.frac_coord, cov_factor=cov_factor, debug=0) - if not refcell.has_isolated_H : refcell.check_missing_H(debug=debug) - if not refcell.has_missing_H : refcell.get_unique_species(debug=debug) - temp_selection = [] - break - elif specie.subtype != "metal": - temp_selection.append(list([cs.corr_total_charge for cs in specie.possible_cs])) - else : - temp_selection.append(specie.possible_cs) - - if debug >= 1: print(f"Covalent factor : {cov_factor=}") - refcell.assess_errors(mode="hydrogens") - if refcell.error_case == 0: - if debug >= 1: print(f"OK with decreasing cov_factor {cov_factor=}") - return refcell - else: - if debug >= 1: print(f"Error with decreasing cov_factor {cov_factor=}") - refcell = modify_cov_factor_due_to_H(refcell, debug=debug) - return refcell - -###################################################### -def apply_symmetry_operations_reference (refcell, cell_vector, sym_ops, normalize: bool=True, pbc: bool=True): - - new_structures = [] - ref_labels = refcell.labels - fractional_coords = np.array(refcell.frac_coord) - - if "D" in ref_labels: - numbers = [elemdatabase.elementnr[elem] for elem in ref_labels] # Atoms object cannot handle Deuterium in the symbols - - for rot, trans in zip(sym_ops[0], sym_ops[1]): - transformed_positions = np.dot(fractional_coords, rot.T) - transformed_positions += np.array(trans) - if normalize: - transformed_positions = np.remainder(transformed_positions, 1) - if "D" in ref_labels: - new = Atoms(scaled_positions=transformed_positions, numbers=numbers, cell=cell_vector) - else: - new = Atoms(symbols=ref_labels, scaled_positions=transformed_positions, cell=cell_vector) - - new_structures.append(new) - - return new_structures - -###################################################### -def find_row_indices(source, target): - # cell_pos, new.positions - # List to store the indices of found rows - found_indices = [] - found_rows = [] - remaining_indices = [] - remaining_rows = [] - - # Iterate over each row in the source array with enumeration to track the index - for index, row in enumerate(source): - # Check if any row in the target array matches the current row - if any(np.allclose(row, target_row, atol=1e-4, rtol=1e-2) for target_row in target): - found_indices.append(index) - found_rows.append(row) - else : - remaining_indices.append(index) - remaining_rows.append(row) - return found_indices, found_rows - -###################################################### -def find_row_index_from_matrix (matrix, query_row): - - # Convert the inputs to NumPy arrays if they aren't already - matrix = np.array(matrix) - query_row = np.array(query_row) - - # Check each row for equality with the query_row - for index, row in enumerate(matrix): - if np.allclose(row, query_row, atol=1e-4, rtol=1e-2): - return index - return -1 - -###################################################### -def get_fragments (newcell, updated, indices_in_ref, cov_factor: float=1.3, metal_factor: float=1.0, debug: int=0): - - updated_labels = extract_from_list(updated, newcell.labels, dimension=1) - updated_coord = extract_from_list(updated, newcell.coord, dimension=1) - updated_fracs = extract_from_list(updated, newcell.frac_coord, dimension=1) - - blocklist = split_species(updated_labels, updated_coord, debug=debug) - - fragments = [] - - for b in blocklist: - if debug > 2 : print(f"GET_FRAGMENTS: doing block={b}") - mol_labels = extract_from_list(b, updated_labels, dimension=1) - mol_coord = extract_from_list(b, updated_coord, dimension=1) - mol_frac_coord = extract_from_list(b, updated_fracs, dimension=1) - - cell_indices = extract_from_list(b, updated, dimension=1) - ref_indices = extract_from_list(b, indices_in_ref, dimension=1) - - # Creates Molecule Object - newmolec = molecule(mol_labels, mol_coord, mol_frac_coord) - - # For debugging - newmolec.origin = "cell.get_fragments" - - # Adds cell as parent of the molecule, with indices - newmolec.add_parent(newcell, indices=cell_indices) - newmolec.set_fractional_coord(mol_frac_coord) - newmolec.set_adjacency_parameters(cov_factor=cov_factor, metal_factor=metal_factor) - newmolec.set_atoms(create_adjacencies=True, debug=debug) - newmolec.ref_indices = ref_indices - newmolec.cell_indices = cell_indices - fragments.append(newmolec) - - return fragments - -###################################################### - -def get_fragments_from_moiety (newcell, updated, indices_in_ref, refcell, cov_factor: float=1.3, metal_factor: float=1.0, debug: int=0): - - atom_site_labels = refcell.atom_site_labels - geom_bond_cif = refcell.geom_bond_cif - moiety_indices = refcell.moiety_indices - - if debug >= 2 : print(f"get_fragments: {updated=}") - if debug >= 2 : print(f"get_fragments: {indices_in_ref=}") - if debug >= 2 : print(f"get_fragments: {moiety_indices=}") - - updated_labels = extract_from_list(updated, newcell.labels, dimension=1) - updated_coord = extract_from_list(updated, newcell.coord, dimension=1) - updated_fracs = extract_from_list(updated, newcell.frac_coord, dimension=1) - updated_moieties_list = [] - updated_moieties_indices_in_ref_list = [] - for sublist in moiety_indices: - new_sublist = [] - new_sublist_indices = [] - for i in sublist: - if i in indices_in_ref: - new_sublist.append(updated[indices_in_ref.index(i)]) - new_sublist_indices.append(i) - updated_moieties_list.append(new_sublist) - updated_moieties_indices_in_ref_list.append(new_sublist_indices) - # updated_moieties_list = [[updated[indices_in_ref.index(i)] for i in sublist if i in indices_in_ref] for sublist in moiety_indices] - # updated_moieties_indices_in_ref = [[indices_in_ref.index(i) for i in sublist if i in indices_in_ref] for sublist in moiety_indices] - # updated_moieties_list = [[updated[idx] for idx in sublist] for sublist in updated_moieties_indices_in_ref] - # if debug >= 2 : print(f"get_fragments: updated_moieties_indices_in_ref", updated_moieties_indices_in_ref) - if debug >= 2 : print(f"get_fragments: updated_moieties_list", len(updated_moieties_list), updated_moieties_list) - if debug >= 2 : print(f"get_fragments: updated_moieties_indices_in_ref_list", len(updated_moieties_indices_in_ref_list), updated_moieties_indices_in_ref_list) - - tmp_blocklist=[] - for updated_moieties, updated_moieties_indices_in_ref in zip(updated_moieties_list, updated_moieties_indices_in_ref_list): - if len(updated_moieties) == 0: continue - if debug >= 2 : print("get_fragments: updated_moieties", updated_moieties) - updated_moieties_labels = extract_from_list(updated_moieties, newcell.labels, dimension=1) - updated_moieties_coord = extract_from_list(updated_moieties, newcell.coord, dimension=1) - updated_moieties_atom_site_labels = [atom_site_labels[i] for i in updated_moieties_indices_in_ref] - if debug >= 2 : print(f"get_fragments: updated_moieties_labels", updated_moieties_labels) - if debug >= 2 : print(f"get_fragments: updated_moieties_atom_site_labels", updated_moieties_atom_site_labels) - block = split_species(updated_moieties_labels, - updated_moieties_coord, - indices=updated_moieties, - atom_site_labels=updated_moieties_atom_site_labels, - geom_bond_cif=geom_bond_cif, - debug=debug) - tmp_blocklist.extend(block) - - if debug >= 2 : print("get_fragments: tmp_blocklist", tmp_blocklist) - - value_to_index = {val: idx for idx, val in enumerate(updated)} - blocklist = [ - [value_to_index[val] for val in sublist if val in value_to_index] - for sublist in tmp_blocklist - ] - if debug >= 2 : print("get_fragments: blocklist", blocklist) - - fragments = [] - for b in blocklist: - if debug > 2 : print(f"get_fragments: doing block={b}") - mol_labels = extract_from_list(b, updated_labels, dimension=1) - mol_coord = extract_from_list(b, updated_coord, dimension=1) - mol_frac_coord = extract_from_list(b, updated_fracs, dimension=1) - - cell_indices = extract_from_list(b, updated, dimension=1) - ref_indices = extract_from_list(b, indices_in_ref, dimension=1) - mol_atom_site_labels = [atom_site_labels[idx] for idx in ref_indices] - # print(f"get_fragments: {cell_indices=}") - # print(f"get_fragments: {ref_indices=}") - # print(f"get_fragments: {mol_atom_site_labels=}") - - # Creates Molecule Object - newmolec = molecule(mol_labels, mol_coord, mol_frac_coord) - - # For debugging - newmolec.origin = "cell.get_fragments" - - # Adds cell as parent of the molecule, with indices - newmolec.add_parent(newcell, indices=cell_indices) - newmolec.set_fractional_coord(mol_frac_coord) - newmolec.set_adjacency_parameters(cov_factor=cov_factor, metal_factor=metal_factor) - newmolec.set_atoms(create_adjacencies=True, atom_site_labels=mol_atom_site_labels, geom_bond_cif=geom_bond_cif, debug=debug) - newmolec.ref_indices = ref_indices - newmolec.cell_indices = cell_indices - fragments.append(newmolec) - - return fragments - -###################################################### -def get_fragments_new (newcell, updated, indices_in_ref, refcell, cov_factor: float=1.3, metal_factor: float=1.0, debug: int=0): - - atom_site_labels = refcell.atom_site_labels - geom_bond_cif = refcell.geom_bond_cif - moiety_indices = refcell.moiety_indices - - if debug >= 2 : print(f"get_fragments: {updated=}") - if debug >= 2 : print(f"get_fragments: {indices_in_ref=}") - if debug >= 2 : print(f"get_fragments: {moiety_indices=}") - - updated_labels = extract_from_list(updated, newcell.labels, dimension=1) - updated_coord = extract_from_list(updated, newcell.coord, dimension=1) - updated_fracs = extract_from_list(updated, newcell.frac_coord, dimension=1) - if not refcell.exist_cif_bond_moiety: - blocklist = split_species(updated_labels, updated_coord, debug=debug) - else: - updated_moieties_list = [[updated[indices_in_ref.index(i)] for i in sublist if i in indices_in_ref] for sublist in moiety_indices] - if debug >= 2 : print(f"get_fragments: updated_moieties_list", updated_moieties_list) - tmp_blocklist=[] - for updated_moieties in updated_moieties_list: - if len(updated_moieties) == 0: continue - updated_moieties_labels = extract_from_list(updated_moieties, newcell.labels, dimension=1) - updated_moieties_coord = extract_from_list(updated_moieties, newcell.coord, dimension=1) - block = split_species(updated_moieties_labels, updated_moieties_coord, indices=updated_moieties, debug=debug) - tmp_blocklist.extend(block) - if debug >= 2 : print("get_fragments: updated_moieties", updated_moieties) - if debug >= 2 : print("get_fragments: tmp_blocklist", tmp_blocklist) - - value_to_index = {val: idx for idx, val in enumerate(updated)} - blocklist = [ - [value_to_index[val] for val in sublist if val in value_to_index] - for sublist in tmp_blocklist - ] - if debug >= 2 : print("get_fragments: blocklist", blocklist) - - fragments = [] - for b in blocklist: - if debug > 2 : print(f"get_fragments: doing block={b}") - mol_labels = extract_from_list(b, updated_labels, dimension=1) - mol_coord = extract_from_list(b, updated_coord, dimension=1) - mol_frac_coord = extract_from_list(b, updated_fracs, dimension=1) - - cell_indices = extract_from_list(b, updated, dimension=1) - ref_indices = extract_from_list(b, indices_in_ref, dimension=1) - mol_atom_site_labels = [atom_site_labels[idx] for idx in ref_indices] - # print(f"get_fragments: {cell_indices=}") - # print(f"get_fragments: {ref_indices=}") - # print(f"get_fragments: {mol_atom_site_labels=}") - - # Creates Molecule Object - newmolec = molecule(mol_labels, mol_coord, mol_frac_coord) - - # For debugging - newmolec.origin = "cell.get_fragments" - - # Adds cell as parent of the molecule, with indices - newmolec.add_parent(newcell, indices=cell_indices) - newmolec.set_fractional_coord(mol_frac_coord) - newmolec.set_adjacency_parameters(cov_factor=cov_factor, metal_factor=metal_factor) - newmolec.set_atoms(create_adjacencies=True, atom_site_labels=mol_atom_site_labels, geom_bond_cif=geom_bond_cif, debug=debug) - newmolec.ref_indices = ref_indices - newmolec.cell_indices = cell_indices - fragments.append(newmolec) - - return fragments - -###################################################### - - -def classify_fragments (fragments, newcell, debug: int=0): - - molecules = [] - remaining_fragments = [] - hydrogens = [] - for frag in fragments: - found = False - for idx, ref in enumerate(newcell.refmoleclist): - if (ref.natoms == frag.natoms) & (ref.formula == frag.formula): - if (sorted(ref.get_parent_indices("reference")) == sorted(frag.ref_indices)): - if debug > 2 : - print(frag.formula, frag.ref_indices, frag.frac_coord, \ - f"equivalent to Ref {idx} {ref.formula}") - frag.subtype = "molecule" - frag.origin = "cell.classify_fragments" - molecules.append(frag) - found = True - - if found == False: - frag.subtype = "fragment" - frag.origin = "cell.classify_fragments" - if (frag.natoms == 1) and (frag.set_element_count()[4] + frag.set_element_count()[3] == 1): - hydrogens.append(frag) # # Hydrogen or Deuterium - else: - remaining_fragments.append(frag) - - rem_size = np.array([rem.natoms for rem in remaining_fragments]) - order = np.argsort(rem_size) - descending_order = order[::-1] - remaining_fragments = [remaining_fragments[i] for i in descending_order] - for rem in remaining_fragments + hydrogens: - rem.get_centroid() - - if debug >=2 : - print("Remaining_fragments:", [rem.formula for rem in remaining_fragments]) - print("Remaining_fragments:", [rem.natoms for rem in remaining_fragments]) - print("Remaining_fragments:", [get_dist(rem.frac_centroid, [0.5, 0.5, 0.5]) for rem in remaining_fragments]) - print("Hydrogens:", [h.formula for h in hydrogens]) - # return molecules, remaining_fragments, hydrogens - return molecules, remaining_fragments + hydrogens - -###################################################### -def grouping_smaller_lists_for_target_sets(target_sets, smaller_lists, debug: int=0): - - # target_sets : Define the larger target lists as sets for fast lookup - # List of smaller lists to be grouped - - # Group smaller lists into their respective larger list - grouped_lists = [[] for _ in range(len(target_sets))] - grouped_lists_idx = [[] for _ in range(len(target_sets))] - target_idx_lists = [[] for _ in range(len(target_sets))] - for j, small_list in enumerate(smaller_lists): - small_set = set(small_list) - for i, target_set in enumerate(target_sets): - if small_set.issubset(target_set): - if debug >=2 : print(f"grouped_lists {i} add {small_set}") - grouped_lists[i].extend(small_list) - grouped_lists_idx[i].append(j) - target_idx_lists[i].append(i) - - if set(grouped_lists[i]) == target_set: - if debug >=2 :print(f"grouped_lists {i} is same with {target_set} {grouped_lists_idx[i]}") - else : - if debug >=2 :print(f"continue for {i} {grouped_lists_idx[i]}") - break - - if debug >= 2 : - # Print the grouped lists - for i, group in enumerate(grouped_lists): - print(f"Group {i}: {group}") - - return grouped_lists, grouped_lists_idx, target_idx_lists - -###################################################### -def grouping_remaining_fragments(remaining_fragments, not_found_list, newcell, debug: int=0): - - smaller_lists = [rem_frag.ref_indices for rem_frag in remaining_fragments] - smaller_lists.sort(key=len, reverse=True) - - target_sets = [] - for j in not_found_list: - try: - ref_indices = newcell.refmoleclist[j].get_parent_indices("reference") - target_sets.append(set(ref_indices)) - except AttributeError as e: - print(f"Error accessing or calling get_parent_indices on refmoleclist {j}: {e}") - except Exception as e: - print(f"An unexpected error occurred with element {j}: {e}") - - if debug >= 2: - print(f"{target_sets=}") - print(f"{smaller_lists=}") - - grouped_rem_frags, indices_of_rem_frags, target_idx_lists = grouping_smaller_lists_for_target_sets(target_sets, smaller_lists, debug=debug) - - not_found_refmoleclist_indices = [ list(set(sublist))[0] if sublist else None for sublist in target_idx_lists ] - - indices_of_target_ref = [] - for t in not_found_refmoleclist_indices: - indices_of_target_ref.append( newcell.refmoleclist[t].get_parent_indices("reference") ) - - return grouped_rem_frags, indices_of_rem_frags, indices_of_target_ref - -###################################################### -def merge_fragments (frags: list, cell_vector: list, refcell: object, cov_factor: float=1.3, metal_factor: float=1.0, full: bool=False, final_merge: bool=False, debug: int=0): - - #finds biggest fragment and keeps it in the original cell - sizes = [] - for f in frags: - size = f.natoms - sizes.append(size) - keep_idx = np.argmax(sizes) - if keep_idx == 0: move_idx = 1 - elif keep_idx == 1: move_idx = 0 - keep_frag = frags[keep_idx] - move_frag = frags[move_idx] - if debug >= 2: print("MERGE_FRAGMENTS: keep_idx", keep_idx) - if debug >= 2: print("MERGE_FRAGMENTS: move_idx", move_idx) - - move_frag.get_centroid() - - if move_frag.natoms == 1 and (move_frag.set_element_count()[4] + move_frag.set_element_count()[3] == 1): - full=True - - move_frag.tmatrix = tmatgenerator(move_frag.frac_centroid, full=full) - - if len(move_frag.tmatrix) == 0: return None - - for t in move_frag.tmatrix: - if debug >= 2: print("MERGE_FRAGMENTS: translation", t) - ## Applies Translations and each time, it checks if a bigger molecule is formed - ## meaning that the translation was successful - reclabels = [] - reclabels.extend(keep_frag.labels) - reclabels.extend(move_frag.labels) - reccoord = [] - reccoord.extend(keep_frag.coord) - if t == (0, 0, 0): reccoord.extend(move_frag.coord) - else: reccoord.extend(translate(t, move_frag.coord, cell_vector)) - - rec_ref_indices = [] - rec_ref_indices.extend(keep_frag.ref_indices) - rec_ref_indices.extend(move_frag.ref_indices) - - rec_cell_indices = [] - rec_cell_indices.extend(keep_frag.cell_indices) - rec_cell_indices.extend(move_frag.cell_indices) - - recfracs = [] - recfracs.extend(keep_frag.frac_coord) - recfracs.extend(move_frag.frac_coord) - - rec_ref_atom_site_labels = [refcell.atom_site_labels[idx] for idx in rec_ref_indices] - if final_merge : - numspecs = count_species(reclabels, reccoord, cov_factor=cov_factor, debug=debug) - else: - numspecs = count_species(reclabels, reccoord, atom_site_labels=rec_ref_atom_site_labels, geom_bond_cif=refcell.geom_bond_cif, cov_factor=cov_factor, debug=debug) - - if debug >= 0 : print("MERGE_FRAGMENTS: count_species found", numspecs) - if numspecs != 1 : continue - - if final_merge : - blocklist = split_species(reclabels, reccoord, cov_factor=cov_factor, debug=debug) - else: - if refcell.exist_cif_bond_moiety and refcell.geom_bond_cif is not None: - blocklist = split_species(reclabels, reccoord, atom_site_labels=rec_ref_atom_site_labels, geom_bond_cif=refcell.geom_bond_cif, cov_factor=cov_factor, debug=debug) - else : - blocklist = split_species(reclabels, reccoord, cov_factor=cov_factor, debug=debug) - if debug >= 0 : print("MERGE_FRAGMENTS: split_species found", len(blocklist), f"{blocklist=}") - - if blocklist is None: continue - else: - if len(blocklist) != 1: continue - if len(blocklist) == 1: - newmolec = molecule(reclabels, reccoord, recfracs) - newmolec.origin = "cell.reconstruct" - newmolec.ref_indices = rec_ref_indices - newmolec.cell_indices = rec_cell_indices - newmolec.atom_site_labels = rec_ref_atom_site_labels - newmolec.set_adjacency_parameters(cov_factor, metal_factor) - newmolec.set_element_count() - newmolec.get_centroid() - newmolec.get_adjmatrix(geom_bond_cif=refcell.geom_bond_cif) - newmolec.get_metal_adjmatrix(geom_bond_cif=refcell.geom_bond_cif) - newmolec.set_adj_types() - return newmolec - return None -###################################################### -def merge_elements(fragments, target_ref, cell_vector, refcell, cov_factor: float=1.3, metal_factor: float=1.0, full: bool=False,final_merge: bool=False, debug: int=0): - - while True: - # Create an index list for the current state of fragments - idx_list = list(range(len(fragments))) - # Keep track of whether any items were merged during this pass - merged = False - - # Generate all possible combinations of indices for current fragments - for comb, idx_comb in zip(combinations(fragments, 2), combinations(idx_list, 2)): - # print(comb, idx_comb) # Optional: for debugging to see the pairs being processed - if comb[0].formula == "H" and comb[1].formula == "H" : - pass - elif comb[0].natoms + comb[1].natoms > len(target_ref): - pass - elif comb[0].subtype == "Rec. Molecule" or comb[1].subtype == "Rec. Molecule": - pass - elif set(comb[0].ref_indices).intersection(set(comb[1].ref_indices)): - # print(comb[0].ref_indices) - # print(comb[1].ref_indices) - pass - else: - if debug >= 2: print("Fragments TO BE MERGED", [k.formula for k in comb], [k.subtype for k in comb], idx_comb) - - newmolec = merge_fragments(comb, cell_vector, refcell, cov_factor=cov_factor, metal_factor=metal_factor, full=full, final_merge=final_merge,debug=debug) - - if newmolec is None: - if debug >= 2: print(f"\tNOT MERGED {[k.formula for k in comb]}") - else : - # print(comb[0].ref_indices) - # print(comb[1].ref_indices) - if debug >= 2: print(f"\tMERGED {newmolec.formula} from {[k.formula for k in comb]} at indices {idx_comb}") - small_set = set(newmolec.ref_indices) - if debug >= 2: print(f"{newmolec.formula} {newmolec.natoms=} {len(small_set)=} {small_set=}") - if small_set.issubset(target_ref): - if sorted(small_set) == target_ref: - newmolec.subtype = "Rec. Molecule" - if debug >= 2: print("Molecule found", newmolec.formula) - else: - newmolec.subtype = "Rec. Fragment" - if debug >= 2: print("Bigger fragment found", newmolec.formula) - fragments[idx_comb[0]] = newmolec - fragments.pop(idx_comb[1]) - merged = True - break - - if not merged: - break - - return fragments - -###################################################### -def fragments_reconstruct (subset_remaining_fragments, target_ref, cell_vector, refcell, cov_factor: float=1.3, metal_factor: float=1.0, full: bool=False, final_merge: bool=False,debug: int=0): - - list_of_found_molecules = [] - list_of_bigger_fragments = [] - remaining_frag = subset_remaining_fragments.copy() - - fragments = merge_elements(remaining_frag, target_ref, cell_vector, refcell, cov_factor=cov_factor, metal_factor=metal_factor, full=full, final_merge=final_merge, debug=debug) - - for newmolec in fragments: - small_set = set(newmolec.ref_indices) - if small_set.issubset(target_ref): - if sorted(small_set) == target_ref: - list_of_found_molecules.append(newmolec) - elif newmolec.natoms == 1 and (newmolec.set_element_count()[4] + newmolec.set_element_count()[3] == 1): - newmolec.subtype = "fragment" - if debug > 2: print("Hydrogen found", newmolec.formula) - list_of_bigger_fragments.append(newmolec) - else : - list_of_bigger_fragments.append(newmolec) - - if debug > 2: print(f"{len(list_of_found_molecules)=}") - if debug > 2: print(f"{len(list_of_bigger_fragments)=}") - - return list_of_found_molecules, list_of_bigger_fragments - -###################################################### -def get_updated_indices(sp_idx, ref_labels, new, cell_labels, cell_pos, cell_fracs, debug: int=0): - """ - sp_idx : index of the symmetry operation - new : ase atoms object by applying symmetry operations to the reference structure - cell_labels : list of chemical symbols of the atoms in the unit cell - cell_pos : list of cartesian coordinates of the atoms in the unit cell - cell_fracs : list of fractional coordinates of the atoms in the unit cell - """ - indices_lists = [] - # new_labels = new.get_chemical_symbols() - new_pos = new.get_positions() - new_fracs = new.get_scaled_positions() - - for jdx, (n_l, n_p, n_f) in enumerate(zip(ref_labels, new_pos, new_fracs)): - for kdx, (l, p, f) in enumerate(zip(cell_labels, cell_pos, cell_fracs)): - if n_l == l and np.allclose(n_p, p, atol=1e-4, rtol=1e-2): - if np.allclose(np.remainder(n_f, 1), np.remainder(f, 1), atol=1e-4, rtol=1e-2): - if debug > 2: - print(f"symmtry operation {sp_idx}:", f"atom of new (index: {jdx})", n_l, n_p, n_f, f"is the same as the atom of the unit cell (index: {kdx})", l, p, f) - indices_lists.append((jdx, kdx)) # jdx is the index of the atom in the new structure, kdx is the index of the atom in the unit cell - return indices_lists - -###################################################### -def get_updated_indices_old (ref_labels, new, cell_labels, cell_pos, cell_fracs, all_found, debug: int=0): - - # new structure : ase atoms object by applying symmetry operations to the reference structure - # Find the indices of the atoms in the unit cell that have the same cartisian coordinates as the atoms in the new structure - - # Cartesian coordinate and fractional coordinate of the atoms in the new structure agree with atoms in the unit cell - found_indices, found_rows = find_row_indices(cell_pos, new.positions) - print(len(found_indices), len(found_rows)) - - updated = [i for i in found_indices if i not in all_found] - - new_fracs = new.get_scaled_positions() - # new_labels = new.get_chemical_symbols() - new_labels = ref_labels - - indices_in_ref = [ find_row_index_from_matrix(new_fracs, cell_fracs[u]) for u in updated ] - if debug >= 2: - print("Get indices in reference") - print(f"{len(updated)=} {updated=}") - print(f"{len(indices_in_ref)=} {indices_in_ref=}") - - if -1 in indices_in_ref: - if debug >= 2: print("Remove -1 indices") - for j, i in enumerate(indices_in_ref): - if i == -1: - print(f"Cannot find the {j}th atom of the new structure based on fractional coordinates from the unit cell.") - print(f"{j} {new_labels[j]=} {new.positions[j]=} {new_fracs[j]=}") - print(f"Its fractional coord disagrees with the fractional coord of the {updated[j]}th atom of the unit cell.") - print(f"{updated[j]} {cell_labels[updated[j]]=} {cell_pos[updated[j]]=} {cell_fracs[updated[j]]=}") - # else : - # print(new_labels[i], np.allclose(new.positions[i], cell_pos[updated[j]]), np.allclose(new_fracs[i], cell_fracs[updated[j]])) - - indices_to_remove = [i for i, x in enumerate(indices_in_ref) if x == -1] - indices_in_ref = [x for x in indices_in_ref if x != -1] - if debug >= 2: print(f"{indices_to_remove=}") - - # Remove corresponding elements from 'updated' starting from the highest index - for index in sorted(indices_to_remove, reverse=True): - if index < len(updated): # Check if index is valid for 'updated' - updated.pop(index) - - if debug >= 2: - print("After removing -1 indices") - print(f"{len(updated)=} {updated=}") - print(f"{len(indices_in_ref)=} {indices_in_ref=}") - - return updated, indices_in_ref -###################################################### -def sort_remaining_fragments_list (original_remaining_fragments): - - remaining_fragments = [] - hydrogens = [] - for frag in original_remaining_fragments: - if (frag.natoms == 1) and (frag.set_element_count()[4] + frag.set_element_count()[3] == 1): - hydrogens.append(frag) # # Hydrogen or Deuterium - else: - remaining_fragments.append(frag) - - rem_size = np.array([rem.natoms for rem in remaining_fragments]) - order = np.argsort(rem_size) - descending_order = order[::-1] - remaining_fragments = [remaining_fragments[i] for i in descending_order] - remaining_fragments += hydrogens - for rem in remaining_fragments: - rem.get_centroid() - - return remaining_fragments -###################################################### -def determine_wrap_keywords_pbc (atoms,refcell, wrap_keywords, debug: int=0): - - new_wrap_keywords = wrap_keywords.copy() - print(f"wrap_keywords: {wrap_keywords}") - print(f"new_wrap_keywords: {new_wrap_keywords}") - cell_labels = atoms.get_chemical_symbols() - cell_pos = atoms.get_positions(wrap=True, **new_wrap_keywords) - cell_fracs = atoms.get_scaled_positions() - cell_vector = atoms.cell.array - space_group = atoms.info['spacegroup'] - sym_ops = space_group.get_op() - new_structures = apply_symmetry_operations_reference(refcell, cell_vector, sym_ops) - print(f"Number of symmetry operations: {len(new_structures)}") - - all_found = [] - for idx, new in enumerate(new_structures): - if debug >=2 : print(f"\nApplying symmetry operations to reference {idx}") - indices_lists = get_updated_indices(idx, new, cell_labels, cell_pos, cell_fracs, debug=debug) - if debug >=2 : print(f"{len(indices_lists)=}") - - updated_lists = [i for i in indices_lists if i[1] not in all_found] - updated_ref_indices = [i[0] for i in updated_lists] - updated_cell = [i[1] for i in updated_lists] - if debug >=2 : print(f"{len(updated_cell)=} {updated_cell=}") - if debug >=2 : print(f"{len(updated_ref_indices)=} {updated_ref_indices=}") - - all_found.extend(updated_cell) - if debug >=2 : print(len(all_found)) - if debug >=2 : print(len(all_found) == len(cell_pos)) - - if len(all_found) == len(cell_pos): - need_to_change = False - else: - print("Error in getting fragments and reconstruction!!") - for i, pos in enumerate(cell_pos): - if i not in all_found: - print(f"Cannot find the {i}th atom of the unit cell based on cartesian coordinates from the new structure. ") - print(f"{i} {cell_labels[i]=} {cell_pos[i]=} {cell_fracs[i]=}") - print("Change wrap_keywords 'pbc' from", new_wrap_keywords["pbc"], "to", (not new_wrap_keywords["pbc"])) - need_to_change = True - new_wrap_keywords["pbc"] = (not wrap_keywords["pbc"]) - - return need_to_change, new_wrap_keywords - -###################################################### -def reconstruct (refcell, newcell, sym_ops, debug: int=0): - - cell_labels = newcell.labels - print(f"{cell_labels=}") - if "D" in cell_labels: - print("Deuterium is in the cell") - cell_pos = newcell.coord - cell_fracs = newcell.frac_coord - cell_vector = newcell.cell_vector - - ref_labels = refcell.labels - atom_site_labels = refcell.atom_site_labels - - print(f"{ref_labels=}") - print(f"{atom_site_labels=}") - - if "D" in ref_labels: - print("Deuterium is in the reference") - cov_factor = refcell.refmoleclist[0].cov_factor - metal_factor = refcell.refmoleclist[0].metal_factor - - - new_structures = apply_symmetry_operations_reference(refcell, cell_vector, sym_ops) - print(f"Number of symmetry operations: {len(new_structures)}") - - all_found = [] - all_molecules = [] - reconstructed_molecules = [] - remaining_fragments = [[] for _ in range(len(newcell.refmoleclist))] - - for idx, new in enumerate(new_structures): - if debug >=2 : print(f"\nApplying symmetry operations to reference {idx}") - indices_lists = get_updated_indices(idx, ref_labels, new, cell_labels, cell_pos, cell_fracs, debug=debug) - if debug >=2 : print(f"{len(indices_lists)=}") - - updated_lists = [i for i in indices_lists if i[1] not in all_found] - updated_ref_indices = [i[0] for i in updated_lists] - updated_cell = [i[1] for i in updated_lists] - if debug >=2 : print(f"{len(updated_cell)=} {updated_cell=}") - if debug >=2 : print(f"{len(updated_ref_indices)=} {updated_ref_indices=}") - - all_found.extend(updated_cell) - if debug >=2 : print(len(all_found)) - if debug >=2 : print(len(all_found) == len(cell_pos)) - - if len(updated_cell) > 0 : - # #### make blocks and get fragments #### - if refcell.exist_cif_bond_moiety: - initial_fragments = get_fragments_from_moiety (newcell, updated_cell, updated_ref_indices, refcell, cov_factor=cov_factor, metal_factor=metal_factor, debug=2) - else : - initial_fragments = get_fragments_new (newcell, updated_cell, updated_ref_indices, refcell, cov_factor=cov_factor, metal_factor=metal_factor, debug=2) - - molecules, fragments = classify_fragments(initial_fragments, newcell, debug=2) - all_molecules.extend(molecules) - - # Grouping fragments for each reference molecule - fragments_of_new = [[] for _ in range(len(newcell.refmoleclist))] - - for i, ref in enumerate(newcell.refmoleclist): - target_set = set(ref.get_parent_indices("reference")) - for j, frag in enumerate(fragments): - small_set = set(frag.ref_indices) - if small_set.issubset(target_set): - if debug >= 2 : print(f"{j} {frag.formula} is a subset of target_set {i} {ref.formula}") - fragments_of_new[i].append(frag) - - if debug >=2 : print(f"symmetry operations: {idx}") - for i, (ref, frag_list) in enumerate(zip(newcell.refmoleclist, fragments_of_new)): - if debug >=2 : print(f"Reference {i}: {ref.formula} target : {ref.get_parent_indices('reference')}") - if debug >=2 : print(f"\tFragments formula : {[frag.formula for frag in frag_list]}") - if debug >=2 : print(f"\tFragments ref_indices: {[frag.ref_indices for frag in frag_list]}") - - # Reconstructing fragments within one new structure - for i, frag_list in enumerate(fragments_of_new): - if len(frag_list) > 1: - if debug >=2 : print(f"target_ref: {newcell.refmoleclist[i].formula}") - if debug >=2 : print(f"Fragments formula {i}: {[frag.formula for frag in frag_list]}") - target_ref = newcell.refmoleclist[i].get_parent_indices("reference") - list_of_found_molecules, remaining_frag = fragments_reconstruct (frag_list, target_ref, cell_vector, refcell, cov_factor=cov_factor, metal_factor=metal_factor, debug=0) - if debug >=2 : print(f"symmetry operations: {idx} {[mol.formula for mol in list_of_found_molecules]=}") - if debug >=2 : print(f"symmetry operations: {idx} {[frag.formula for frag in remaining_frag]=}") - if len(list_of_found_molecules) > 0: - reconstructed_molecules.extend(list_of_found_molecules) - if len(remaining_frag) > 0: - remaining_fragments[i].extend(remaining_frag) - if debug >=2 : print(f"symmetry operations: {idx} with ref{i} {[frag.formula for frag in remaining_fragments[i]]=}") - elif len(frag_list) == 1: - if debug >=2 : print("only one fragment", frag_list[0].formula, "is found") - remaining_fragments[i].extend(frag_list) - if debug >=2 : print(f"symmetry operations: {idx} with ref{i} {[frag.formula for frag in remaining_fragments[i]]=}") - - if debug >=1 : print("complete molecules :", f"counts={len(all_molecules)}", [mol.formula for mol in all_molecules]) - if debug >=1 : print("reconstructed molecules :", f"counts={len(reconstructed_molecules)}", [mol.formula for mol in reconstructed_molecules]) - - if len(all_found) == len(cell_pos): - newcell.error_get_fragments = False - num_rem_frags = 0 - for rem_frag_list in remaining_fragments: - num_rem_frags += len(rem_frag_list) - - if num_rem_frags == 0 : - print("All fragments are reconstructed successfully.") - newcell.error_reconstruction = False - else: - print(f"There are {num_rem_frags} remaining fragments.") - final_remaining_fragments, reconstructed_molecules = final_remaining_reconstruction(remaining_fragments, newcell, cell_vector, reconstructed_molecules, refcell, cov_factor=cov_factor, metal_factor=metal_factor, debug=0) - if len(final_remaining_fragments) == 0: - print("All fragments are reconstructed successfully.") - newcell.error_reconstruction = False - else : - print("Error in reconstruction!!") - newcell.error_reconstruction = True - print("final remaining fragments", len(final_remaining_fragments), [mol.formula for mol in final_remaining_fragments]) - for j, rem in enumerate(final_remaining_fragments): - writexyz(os.getcwd(), f"{newcell.name}_Frag_{i}_{rem.formula}_{j}.xyz", rem.labels, rem.coord) - # final_remaining_fragments_v2, reconstructed_molecules = final_remaining_reconstruction_v2(remaining_fragments, newcell, cell_vector, reconstructed_molecules, refcell, cov_factor=cov_factor, metal_factor=metal_factor, debug=0) - # if len(final_remaining_fragments_v2) == 0: - # print("GOOD!! All fragments are reconstructed successfully.") - # newcell.error_reconstruction = False - # else : - # print("AGAIN Error in reconstruction!!") - # newcell.error_reconstruction = True - # print("final remaining fragments", len(final_remaining_fragments_v2), [mol.formula for mol in final_remaining_fragments_v2]) - # for j, rem in enumerate(final_remaining_fragments_v2): - # writexyz(os.getcwd(), f"{newcell.name}_Frag_{i}_{rem.formula}_{j}.xyz", rem.labels, rem.coord) - - else: - print("Error in getting fragments and reconstruction!!") - newcell.error_get_fragments = True - newcell.error_reconstruction = True - for i, pos in enumerate(cell_pos): - if i not in all_found: - print(f"Cannot find the {i}th atom of the unit cell based on cartesian coordinates from the new structure.") - print(f"{i} {cell_labels[i]=} {cell_pos[i]=} {cell_fracs[i]=}") - - return all_molecules, reconstructed_molecules - -###################################################### -def final_remaining_reconstruction(remaining_fragments, newcell, cell_vector, reconstructed_molecules, refcell, cov_factor: float=1.3, metal_factor: float=1.0, debug: int=0): - # Reconstructing remaining fragments within the whole new cell - final_remaining_fragments = [] - for i, rem_frag_list in enumerate(remaining_fragments): - if len(rem_frag_list) > 1: - # for j, rem in enumerate(rem_frag_list): - # writexyz(os.getcwd(), f"{newcell.name}_Ref_{i}_{rem.formula}_{j}.xyz", rem.labels, rem.coord) - print(f"target_ref: {newcell.refmoleclist[i].formula}") - print(f"Fragments formula {i}: {[rem.formula for rem in rem_frag_list]}") - target_ref = newcell.refmoleclist[i].get_parent_indices("reference") - list_of_found_molecules, final_remaining = fragments_reconstruct(rem_frag_list, target_ref, cell_vector, refcell, cov_factor=cov_factor, metal_factor=metal_factor, full=True, debug=debug) - print(f"{[mol.formula for mol in list_of_found_molecules]=}") - print(f"{[frag.formula for frag in final_remaining]=}") - if len(list_of_found_molecules) > 0: - reconstructed_molecules.extend(list_of_found_molecules) - if len(final_remaining) > 0: - final_remaining_fragments.extend(final_remaining) - elif len(rem_frag_list) == 1: - final_remaining_fragments.extend(rem_frag_list) - - return final_remaining_fragments, reconstructed_molecules -######################################################## -def final_remaining_reconstruction_v2(remaining_fragments, newcell, cell_vector, reconstructed_molecules, refcell, cov_factor: float=1.3, metal_factor: float=1.0, debug: int=0): - # Reconstructing remaining fragments within the whole new cell - final_remaining_fragments = [] - for i, rem_frag_list in enumerate(remaining_fragments): - if len(rem_frag_list) > 1: - # for j, rem in enumerate(rem_frag_list): - # writexyz(os.getcwd(), f"{newcell.name}_Ref_{i}_{rem.formula}_{j}.xyz", rem.labels, rem.coord) - print(f"target_ref: {newcell.refmoleclist[i].formula}") - print(f"Fragments formula {i}: {[rem.formula for rem in rem_frag_list]}") - target_ref = newcell.refmoleclist[i].get_parent_indices("reference") - list_of_found_molecules, final_remaining = fragments_reconstruct(rem_frag_list, target_ref, cell_vector, refcell, cov_factor=cov_factor, metal_factor=metal_factor, full=True, final_merge=True, debug=debug) - print(f"{[mol.formula for mol in list_of_found_molecules]=}") - print(f"{[frag.formula for frag in final_remaining]=}") - if len(list_of_found_molecules) > 0: - reconstructed_molecules.extend(list_of_found_molecules) - if len(final_remaining) > 0: - final_remaining_fragments.extend(final_remaining) - elif len(rem_frag_list) == 1: - final_remaining_fragments.extend(rem_frag_list) - - return final_remaining_fragments, reconstructed_molecules -###################################################### -def get_moleclist (newcell, refcell, all_molecules, debug: int=0): - cov_factor = refcell.refmoleclist[0].cov_factor - metal_factor = refcell.refmoleclist[0].metal_factor - - # Get moleclist for the unit cell - newcell.moleclist = [] - - for mol in all_molecules: - newmolec = molecule(mol.labels, mol.coord, mol.frac_coord) - mol_atom_site_labels = [refcell.atom_site_labels[idx] for idx in mol.ref_indices] - if debug >=2 : - print("GET_MOLECLIST: ", mol.formula) - print("GET_MOLECLIST: ", mol.ref_indices) - print("GET_MOLECLIST: ", mol.labels) - print("GET_MOLECLIST: ", mol_atom_site_labels) - - newmolec.origin = "cell.reconstruct" - newmolec.set_adjacency_parameters(cov_factor, metal_factor) - newmolec.set_atoms(create_adjacencies=True, - atom_site_labels=mol_atom_site_labels, - geom_bond_cif=refcell.geom_bond_cif, debug=debug) - newmolec.add_parent(newcell, mol.cell_indices) - newmolec.add_parent(refcell, mol.ref_indices) - for atom, idx in zip(newmolec.atoms, mol.cell_indices): - atom.add_parent(newcell, index=idx) - for atom, idx in zip(newmolec.atoms, mol.ref_indices): - atom.add_parent(refcell, index=idx) - if newmolec.iscomplex: - newmolec.split_complex() - elif newmolec.has_IA_IIA: - newmolec.split_IA_IIA() - else: - newmolec.add_parent(newmolec, indices=[*range(0,newmolec.natoms,1)]) - newcell.moleclist.append(newmolec) - - for mol in newcell.moleclist: - if mol.iscomplex: - if debug >=1 : print(f"GET_MOLECLIST: working with {mol.formula} with transition metals") - mol.get_hapticity(debug=debug) - if len(mol.ligands) == 0 : - if debug >=1 : print(f"GET_MOLECLIST: {mol.formula} is a metal cluster") - else: - for lig in mol.ligands: - lig.get_denticity(debug=debug) - for met in mol.metals: - met.get_connected_metals(debug=debug) - met.get_coordination_geometry(debug=debug) - met.get_coord_sphere_formula(debug=debug) - elif mol.has_IA_IIA: - if debug >=1 : print(f"GET_MOLECLIST: working with {mol.formula} with alkali or alkali earth metals") - if len(mol.ligands) == 0 : - pass - else: - for lig in mol.ligands: - lig.get_denticity(debug=debug) - for met in mol.metals: - met.get_connected_metals(debug=debug) - met.get_coordination_geometry(debug=debug) - met.get_coord_sphere_formula(debug=debug) - - return newcell - -###################################################### -def get_unique_indices(newcell, reference_species_list, debug: int=0): - - newcell.unique_indices = [] - newcell.species_list = [] - for mol in newcell.moleclist: - if not mol.iscomplex and not mol.has_IA_IIA: - for ref in reference_species_list: - if (ref.subtype == "molecule") and not ref.iscomplex and not ref.has_IA_IIA: - issame = compare_reference_indices(ref, mol, debug=debug) - if issame: - mol.unique_index = ref.unique_index - if debug >= 2: print(f"Matched {mol.formula} {ref.formula} {mol.unique_index} {ref.unique_index}") - newcell.unique_indices.append(mol.unique_index) - newcell.species_list.append(mol) - else: - for ref in reference_species_list: - if ref.subtype == "ligand": - for lig in mol.ligands: - issame = compare_reference_indices(ref, lig, debug=debug) - if issame: - lig.unique_index = ref.unique_index - if debug >= 2: print(f"Matched {lig.formula} {ref.formula} {lig.unique_index} {ref.unique_index}") - newcell.unique_indices.append(lig.unique_index) - newcell.species_list.append(lig) - if ref.subtype == "metal": - for met in mol.metals: - if ref.get_parent_index("reference") == met.get_parent_index("reference"): - met.unique_index = ref.unique_index - if debug >= 2: print(f"Matched {met.formula} {ref.formula} {met.unique_index} {ref.unique_index}") - newcell.unique_indices.append(met.unique_index) - newcell.species_list.append(met) - - return newcell - -# ###################################################### -# def assign_equivalent_indices (refcell, unique_species, species_list, unique_indices, debug: int=0): - -# for idx, specie in enumerate(refcell.species_list): -# specie.equivalent_index = idx -# for idx, specie in enumerate(species_list): -# found = False -# for unique_spec in unique_species: -# if (specie.subtype == unique_spec.subtype) and (specie.unique_index == unique_spec.unique_index): -# issame = compare_reference_indices(specie, unique_spec, debug=debug) -# if issame: -# found = True -# specie.equivalent_index = idx -# if found : -# specie.equivalent_index = idx - \ No newline at end of file diff --git a/cell2mol/new_charge_assignment.py b/cell2mol/new_charge_assignment.py deleted file mode 100644 index d07283777..000000000 --- a/cell2mol/new_charge_assignment.py +++ /dev/null @@ -1,533 +0,0 @@ -import numpy as np -import copy -from cell2mol.charge_assignment import protonation, get_charge, get_charge_manual, charge_state, check_rdkit_obj_connectivity, aromatic_info -import itertools -import os -from cell2mol import __file__ -from cell2mol.spin import generate_feature_vector -import pickle -from rdkit import Chem -manual_assign = ["O4-Cl", "N3", "I3", "N2", "N-O"] -####################################################### -def balance_charge(unique_indices: list, unique_species: list, input_charge: int=0, rare: bool=False, predict: bool=False, aromatic: bool=False, debug: int=0) -> list: - """Function to Select the Best Charge Distribution for the unique species. - It accepts multiple charge options for each molecule/ligand/metal (poscharge, etc...). - NO: It should select the best one depending on whether the final metal charge makes sense or not. - In some cases, can accept metal oxidation state = 0, if no other makes sense - """ - all_possible_m_ox = [0, 1, 2, 3, 4, 5, 6, 7] - iserror = False - iterlist = [] - for idx, spec in enumerate(unique_species): - toadd = [] - - if spec.subtype == "metal": - if rare == True: - rare_m_ox = [x for x in all_possible_m_ox if x not in spec.possible_cs] - print(f"RARE METAL OXIDATION STATES: {spec.formula} {rare_m_ox}") - for tch in rare_m_ox: - toadd.append(tch) - elif predict == True : - tch = predict_metal_ox(spec, debug=debug) - toadd.append(tch) - else: - for tch in spec.possible_cs: - toadd.append(tch) - else : - if len(spec.possible_cs) == 1: - toadd.append(spec.possible_cs[0].corr_total_charge) - elif len(spec.possible_cs) > 1: - if not aromatic: - for tch in spec.possible_cs: - toadd.append(tch.corr_total_charge) - else: - aromatic_counts = [] - for cs in spec.possible_cs: - aromatic_dict = aromatic_info(cs.rdkit_obj) - aromatic_counts.append(aromatic_dict["Aromatic atoms"]) - - print(f"aromatic_counts: {aromatic_counts}") - - if len(set(aromatic_counts)) == 1 and aromatic_counts[0] == 0: - for tch in spec.possible_cs: - toadd.append(tch.corr_total_charge) - pass # all values are 0 — skip - else: - max_aromatic = max(aromatic_counts) - max_indices = [i for i, val in enumerate(aromatic_counts) if val == max_aromatic] - - if len(max_indices) == 1: - idx = max_indices[0] - cs = spec.possible_cs[idx] - print(f" Unique most aromatic cs at index {idx}: {cs.smiles} (aromatic atoms: {max_aromatic})") - toadd.append(cs.corr_total_charge) - else: - print(f" Multiple cs with same max aromatic atoms ({max_aromatic}), appending all") - for idx in max_indices: - cs = spec.possible_cs[idx] - print(f" - Index {idx}: {cs.smiles}") - toadd.append(cs.corr_total_charge) - elif len(spec.possible_cs) == 0: - iserror = True - toadd.append("-") - - iterlist.append(toadd) - - if debug >= 2: print("BALANCE: iterlist", iterlist) - if debug >= 2: print("BALANCE: unique_indices", unique_indices) - - if not iserror: - tmpdistr = list(itertools.product(*iterlist)) - if debug >= 2: print("BALANCE: tmpdistr", tmpdistr) - - # Expands tmpdistr to include same species, generating alldistr: - alldistr = [] - final_charges= [] - for distr in tmpdistr: - tmp = [] - for u in unique_indices: - tmp.append(distr[u]) - alldistr.append(tmp) - if debug >= 2: print("BALANCE: alldistr added:", tmp) - - final_charge_distribution = [] - for idx, d in enumerate(alldistr): - if debug >= 2: print(f"BALANCE: distribution={d}") - charges_sum = np.sum(d) - if charges_sum == input_charge: - final_charge_distribution.append(d) - final_charges.append(distr) - elif iserror: - if debug >= 1: print("Error found in BALANCE: one species has no possible charges") - final_charge_distribution = [] - - if debug: - print(f"Final Charge Distribution: {final_charge_distribution}") - print(f"Final Charges: {final_charges}") - - return final_charge_distribution, final_charges - -###################################################### -def assign_charge_state_for_unique_species(unique_species, final_charge_tuple, debug: int=0): - - for specie, final_charge in zip(unique_species, final_charge_tuple): - print(specie.unique_index, specie.formula) - if (specie.subtype == "molecule" and not specie.iscomplex and not specie.has_IA_IIA) or (specie.subtype == "ligand"): - charge_list = [cs.corr_total_charge for cs in specie.possible_cs] - idx = charge_list.index(final_charge) - cs = specie.possible_cs[idx] - specie.charge_state = cs - # print(specie.charge_state.protonation) - specie.set_charges(cs.corr_total_charge, cs.corr_atom_charges, cs.smiles, cs.rdkit_obj) - elif specie.subtype == "metal" : - # charge_list = specie.possible_cs - # idx = charge_list.index(final_charge) - # cs = specie.possible_cs[idx] - specie.set_charge(final_charge) - for specie in unique_species: - if (specie.subtype == "molecule" and not specie.iscomplex and not specie.has_IA_IIA) or (specie.subtype == "ligand"): - print(specie.formula, specie.charge_state, specie.totcharge, specie.smiles) - return unique_species - -###################################################### -def print_possible_and_selected_cs (newcell, refcell, debug: int=0): - """Print possible charge states and selected charge state for unique species.""" - if debug >= 1: - print(f"\npossible charge states and charge of selected charge state for unique species") - for idx, (specie, select) in enumerate(zip(refcell.unique_species, refcell.selected_cs)): - print(f"Unique {specie.unique_index=} {specie.formula=}") - print(f"charge of selected charge state={select}\n{specie.possible_cs=}\n") - - print(f"species list in the reference and their unique indices") - for specie, idx in zip(refcell.species_list, refcell.unique_indices): - print(f"\t{specie.formula=} {specie.unique_index=}") - if idx != specie.unique_index: - print(f"WARNING: {specie.formula=} {specie.unique_index=} {idx=} from refcell unique indices") - - print(f"species list in the unit cell and their unique indices") - for specie, idx in zip(newcell.species_list, newcell.unique_indices): - print(f"\t{specie.formula=} {specie.unique_index=}") - if idx != specie.unique_index: - print(f"WARNING: {specie.formula=} {specie.unique_index=} {idx=} from newcell unique indices") - -####################################################### -def get_reordered_protonation (refcell: object, reference: object, target: object): - - temp_prot = copy.deepcopy(reference.charge_state.protonation) - temp_prot.parent = target - - ref_indices = reference.get_parent_indices("reference") - target_indices = target.get_parent_indices("reference") - - ref_data = [refcell.atom_site_labels[idx] for idx in ref_indices] - target_data = [refcell.atom_site_labels[idx] for idx in target_indices] - - index_map = {value: index for index, value in enumerate(target_data)} - sorted_indices = sorted(range(len(ref_data)), key=lambda i: index_map[ref_data[i]]) - - reordered_prot = temp_prot.reorder(sorted_indices) - - return reordered_prot -####################################################### -def reorder_rdkit_atoms(ref_mol, ref_labels, target_labels): - # 1. Create label → atom index map from ref_data - label_to_index = {label: idx for idx, label in enumerate(ref_labels)} - - # 2. Create old index → new index map - old_to_new = {label_to_index[label]: i for i, label in enumerate(target_labels)} - new_to_old = {v: k for k, v in old_to_new.items()} - - # 3. Create editable mol - new_mol = Chem.RWMol() - - # 4. Add atoms in new order - for new_idx in range(len(target_labels)): - old_idx = new_to_old[new_idx] - atom = ref_mol.GetAtomWithIdx(old_idx) - new_atom = Chem.Atom(atom.GetAtomicNum()) - new_atom.SetFormalCharge(atom.GetFormalCharge()) - new_mol.AddAtom(new_atom) - - # 5. Add bonds based on original molecule - for bond in ref_mol.GetBonds(): - begin_old = bond.GetBeginAtomIdx() - end_old = bond.GetEndAtomIdx() - bond_type = bond.GetBondType() - # remap to new indices - begin_new = old_to_new[begin_old] - end_new = old_to_new[end_old] - new_mol.AddBond(begin_new, end_new, bond_type) - - return new_mol.GetMol() -###################################################### -def set_charge_state(reference, target, mode, debug: int=0): - - final_charge = reference.totcharge - print("SET_CHARGE_STATE:", reference.charge_state) - refcell = reference.get_parent("reference") - - if mode == 1 : # For "reference" cell. Their possible charge states are already calculated - if target.formula in manual_assign: - cs = get_charge_manual(target, debug=debug) - else : - if not hasattr(target, "possible_cs"): - target.get_possible_cs(debug=debug) - else: - if debug >= 1: print("SET_CHARGE_STATE: possible_cs of reference already exists") - print(f"SET_CHARGE_STATE: {mode=} {target.formula=} {target.possible_cs=}") - charge_list = [cs.corr_total_charge for cs in target.possible_cs] - print(charge_list, final_charge, target.possible_cs) - idx = charge_list.index(final_charge) - cs = target.possible_cs[idx] - - target.charge_state = cs - if final_charge != cs.corr_total_charge: - print(f"SET_CHARGE_STATE: WARNING!!! {target.formula=} {final_charge=} {cs.corr_total_charge=} final_charge != cs.corr_total_charge") - print("SET_CHARGE_STATE!!!!", f"{mode=}", cs, cs.smiles) - target.set_charges(cs.corr_total_charge, cs.corr_atom_charges, cs.smiles, cs.rdkit_obj) - print(f"SET_CHARGE_STATE:{target.formula=} {target.totcharge=} {target.smiles=}") - - elif mode == 2 : # For "unit" cell. Their charge state are not calculated - if (target.subtype == "ligand") or (target.subtype == "molecule" and not target.iscomplex and not target.has_IA_IIA): - - rdkit_obj = reorder_rdkit_atoms(reference.rdkit_obj, reference.atom_site_labels, target.atom_site_labels) - smiles = Chem.MolToSmiles(rdkit_obj) - atom_charges = [] - total_charge = 0 - - for i in range(target.natoms): - a = rdkit_obj.GetAtomWithIdx(i) # Returns a particular Atom - atom_charges.append(a.GetFormalCharge()) - total_charge += a.GetFormalCharge() - if total_charge != final_charge: - print(f"SET_CHARGE_STATE: WARNING!!! {target.formula=} {total_charge=} {final_charge=}") - - print(f"SET_CHARGE_STATE: {smiles=} {final_charge=}") - target.set_charges(total_charge, atom_charges, smiles, rdkit_obj) - print(f"SET_CHARGE_STATE:{target.formula=} {target.totcharge=} {target.smiles=}") - - elif mode == 3 : # For "unit" cell. Their charge state are not calculated - if target.formula in ["O4-Cl", "N3", "I3"]: - # TODO : This is temporary solution. It should be refined - cs = get_charge_manual(target, debug=debug) - - elif (target.subtype == "molecule" and not target.iscomplex and not target.has_IA_IIA) : - if debug >=1 : print(f"SET_CHARGE_STATE:({target.subtype}) {target.formula} {final_charge=} Create Empty PROTONATION for this specie") - empty_list = [int(0)]*len(target.labels) - empty_prot = protonation(target.labels, target.coord, target.cov_factor, - int(0), empty_list, empty_list, empty_list, empty_list, typ="Empty", parent=target) - cs = get_charge(final_charge, empty_prot) - - elif target.subtype == "ligand": - if debug >=1 : print(f"SET_CHARGE_STATE:({target.subtype}) {target.formula} {reference.charge_state.uncorr_total_charge=} Ligand") - prot = reference.charge_state.protonation - if debug >=1 : print(f"SET_CHARGE_STATE:{prot=}") - - temp_uncorr_atom_charges = reference.charge_state.uncorr_atom_charges - abs_charge = sum([abs(chg) for chg in temp_uncorr_atom_charges]) - if debug >=1 : print(f"SET_CHARGE_STATE: {reference.charge_state.uncorr_atom_charges=} {len(reference.charge_state.uncorr_atom_charges)} {abs_charge=}") - temp_prot = copy.deepcopy(prot) - temp_prot.parent = target - - print(f"SET_CHARGE_STATE:{temp_prot.labels=} {len(temp_prot.labels)=} {len(temp_prot.coords)=} {len(temp_prot.block)=} {temp_prot.added_atoms=} ") - - # For "unit" cell - ref_indices = reference.get_parent_indices("reference") - target_indices = target.get_parent_indices("reference") - - ref_data = [refcell.atom_site_labels[idx] for idx in ref_indices] - target_data = [refcell.atom_site_labels[idx] for idx in target_indices] - - index_map = {value: index for index, value in enumerate(target_data)} - sorted_indices = sorted(range(len(ref_data)), key=lambda i: index_map[ref_data[i]]) - - if debug >=1 : print(f"SET_CHARGE_STATE:{ref_data=}") - if debug >=1 : print(f"SET_CHARGE_STATE:{target_data=}") - if debug >=1 : print(f"SET_CHARGE_STATE:{sorted_indices=}") - - reordered_prot = temp_prot.reorder(sorted_indices) - # reordered_prot.coords = target.coord - if debug >=1 : print(f"SET_CHARGE_STATE: {reordered_prot=}") - - if len(temp_uncorr_atom_charges) == len(sorted_indices): - reordered_uncorr_atom_charges = [temp_uncorr_atom_charges[idx] for idx in sorted_indices] - else: - reordered_uncorr_atom_charges = [temp_uncorr_atom_charges[idx] for idx in sorted_indices] - dummy_charges_added_atoms = [temp_uncorr_atom_charges[idx] for idx in range(len(sorted_indices), len(temp_uncorr_atom_charges))] - reordered_uncorr_atom_charges.extend(dummy_charges_added_atoms) - - if debug >=1 :print(f"SET_CHARGE_STATE: {reordered_uncorr_atom_charges=} {len(reordered_uncorr_atom_charges)=}") - - if debug >=1 : print(f"SET_CHARGE_STATE:({target.subtype}) {target.formula} {reference.charge_state.uncorr_total_charge=} Reordered {sorted_indices=}") - cs = get_charge(reference.charge_state.uncorr_total_charge , reordered_prot, ref_uncorr_atom_charges=reordered_uncorr_atom_charges) - - target.charge_state = cs - if final_charge != cs.corr_total_charge: - print(f"SET_CHARGE_STATE: WARNING!!! {target.formula=} {final_charge=} {cs.corr_total_charge=} final_charge != cs.corr_total_charge") - print("SET_CHARGE_STATE!!!!", f"{mode=}", cs, cs.smiles) - target.set_charges(cs.corr_total_charge, cs.corr_atom_charges, cs.smiles, cs.rdkit_obj) - print(f"SET_CHARGE_STATE:{target.formula=} {target.totcharge=} {target.smiles=}") - -###################################################### -def prepare_mol (mol): - tmp_atcharge = np.zeros((mol.natoms), dtype=int) - tmp_smiles = [] - - for lig in mol.ligands: - if hasattr(lig, "smiles"): - print(f"prepare_mol: {lig.formula=} {lig.smiles=}") - else: - print(f"prepare_mol: {lig.formula=}") - tmp_smiles.append(lig.smiles) - parent_indices = lig.get_parent_indices("molecule") - for kdx, a in enumerate(parent_indices): - tmp_atcharge[a] = lig.atomic_charges[kdx] - - for met in mol.metals: - parent_index = met.get_parent_index("molecule") - tmp_atcharge[parent_index] = met.charge - - mol.set_charges(int(sum(tmp_atcharge)), atomic_charges=tmp_atcharge, smiles=tmp_smiles) - -###################################################### -def create_bonds_specie (specie, rdkit_obj: object=None, debug: int=0): - from cell2mol.classes import bond - if debug >= 1: print(f"CREATE_bonds_specie: {specie.formula=}, {specie.subtype=} {specie.smiles=}") - n_atoms = specie.natoms # e.g. 9 - if rdkit_obj is not None: - rdkit_obj = rdkit_obj - else : - rdkit_obj = specie.rdkit_obj - - n_atoms_rdkit = rdkit_obj.GetNumAtoms() # e.g.10 - if debug >= 1: print(f"CREATE_bonds_specie: {specie.formula=}, {specie.subtype=}") - - if n_atoms == n_atoms_rdkit: - if debug >= 2: print(f"\tNumber of atoms in {specie.subtype} object and RDKit object are equal: {n_atoms} {n_atoms_rdkit}") - - for idx, rdkit_atom in enumerate(rdkit_obj.GetAtoms()): # e.g. idx 0, 1, 2, 3, 4, 5, 6, 7, 8 - if debug >= 2: print(f"\t{idx=}", rdkit_atom.GetSymbol(), "Number of bonds :", len(rdkit_atom.GetBonds())) - if len(rdkit_atom.GetBonds()) == 0: - if debug >= 1: print(f"\tNO BONDS CREATED for {specie.atoms[idx].label} due to no bonds in {specie.subtype} RDKit object") - else: - for b in rdkit_atom.GetBonds(): - bond_startatom = b.GetBeginAtomIdx() - bond_endatom = b.GetEndAtomIdx() - bond_order = b.GetBondTypeAsDouble() - if specie.atoms[bond_endatom].label == "D" and rdkit_obj.GetAtomWithIdx(bond_endatom).GetSymbol() == "H": - if bond_endatom == idx: - start = bond_endatom - end = bond_startatom - elif bond_startatom == idx: - start = bond_startatom - end = bond_endatom - # create new bond object - if debug >=2: print(f"\tBOND CREATED", idx, start, end, bond_order, specie.atoms[start].label, specie.atoms[end].label) - new_bond = bond(specie.atoms[start], specie.atoms[end], bond_order) - specie.atoms[idx].add_bond(new_bond) - - elif specie.atoms[bond_endatom].label != rdkit_obj.GetAtomWithIdx(bond_endatom).GetSymbol(): - if debug >= 1: print(f"\tError with Bond EndAtom", specie.atoms[bond_endatom].label, rdkit_obj.GetAtomWithIdx(bond_endatom).GetSymbol()) - else: - if bond_endatom == idx: - start = bond_endatom - end = bond_startatom - elif bond_startatom == idx: - start = bond_startatom - end = bond_endatom - - # create new bond object - if debug >=2: print(f"\tBOND CREATED", idx, start, end, bond_order, specie.atoms[start].label, specie.atoms[end].label) - new_bond = bond(specie.atoms[start], specie.atoms[end], bond_order) - specie.atoms[idx].add_bond(new_bond) - - if hasattr(specie.atoms[idx], "bonds"): - if debug >=1 : - print(f"\tBONDS", [(bd.atom1.label, bd.atom2.label, bd.order, np.round(bd.distance,3)) for bd in specie.atoms[idx].bonds]) - else: - if specie.natoms == 1: - if debug >=1: print(f"\tNO BONDS CREATED for {specie.atoms[idx].label} because it is the only atom in {specie.subtype} object") - pass - else: - if debug >=1: print(f"\tNO BONDS for {specie.atoms[idx].label} with {specie.subtype} RDKit object index {idx}. Please check the RDKit object.") - return False # return False if no bonds are created - else: - if debug >= 1: print(f"\tNumber of atoms in {specie.subtype} object and RDKit object are different: {n_atoms} {n_atoms_rdkit}") - if debug >= 2: print(f"\t{[(i, atom.label) for i, atom in enumerate(specie.atoms)]}") - if debug >= 2: print(f"\t{[(i, atom.GetSymbol()) for i, atom in enumerate(rdkit_obj.GetAtoms())]}") - non_bonded_atoms = list(range(0, n_atoms_rdkit))[n_atoms:] - if debug >= 2: print(f"\tNON_BONDED_ATOMS", non_bonded_atoms) - - for idx, rdkit_atom in enumerate(rdkit_obj.GetAtoms()): # e.g. idx 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 - if debug >= 2: print(f"\t{idx=}", rdkit_atom.GetSymbol(), "Number of bonds :", len(rdkit_atom.GetBonds())) - if len(rdkit_atom.GetBonds()) == 0: - if debug >= 1: print(f"\tNO BONDS CREATED for {rdkit_atom.GetSymbol()} due to no bonds in {specie.subtype} RDKit object") - else: - for b in rdkit_atom.GetBonds(): - bond_startatom = b.GetBeginAtomIdx() - bond_endatom = b.GetEndAtomIdx() - bond_order = b.GetBondTypeAsDouble() - - if bond_startatom in non_bonded_atoms or bond_endatom in non_bonded_atoms: - if debug >= 2: print(f"\tNO BOND CREATED {bond_startatom=} or {bond_endatom=} is not in the specie.atoms. It belongs to {non_bonded_atoms=}.") - else : - if bond_endatom == idx: - start = bond_endatom - end = bond_startatom - elif bond_startatom == idx: - start = bond_startatom - end = bond_endatom - - # create new bond object - if debug >=2: print(f"\tBOND CREATED", idx, start, end, bond_order, specie.atoms[start].label, specie.atoms[end].label) - new_bond = bond(specie.atoms[start], specie.atoms[end], bond_order) - specie.atoms[idx].add_bond(new_bond) - - if idx not in non_bonded_atoms: - if hasattr(specie.atoms[idx], "bonds"): - if debug >=2: - print(f"\tBONDS", [(bd.atom1.label, bd.atom2.label, bd.order, np.round(bd.distance,3)) for bd in specie.atoms[idx].bonds]) - else: - if specie.natoms == 1: - if debug >=1: print(f"\tNO BONDS CREATED for {specie.atoms[idx].label} because it is the only atom in {specie.subtype} object") - pass - else: - if debug >=1: print(f"\tNO BONDS for {specie.atoms[idx].label} with {specie.subtype} RDKit object index {idx}. Please check the RDKit object.") - return False # return False if no bonds are created - else : - if debug >=1: print(f"\tNO BONDS for {rdkit_atom.GetSymbol()} with {specie.subtype} RDKit object index {idx} because it is an added atom") - - return True -###################################################### -def create_metal_ligand_bonds (mol, debug: int=0): - # Third Part. Adds Metal-Ligand Bonds, with a zero order: - from cell2mol.classes import bond - if mol.iscomplex or mol.has_IA_IIA: - for lig in mol.ligands: - for at in lig.atoms: - count = 0 - index_1 = at.get_parent_index("molecule") - for met in mol.metals: - index_2 = met.get_parent_index("molecule") - isconnected = mol.madjmat[index_1, index_2] ==1 - if isconnected: - if index_1 < index_2 : - bond_startatom = at - bond_endatom = met - else: - bond_startatom = met - bond_endatom = at - newbond = bond(bond_startatom, bond_endatom, 0) - # Chem.BondType.DATIVE - at.add_bond(newbond) - met.add_bond(newbond) - count += 1 - if count != at.mconnec: - if debug >= 1: print(f"\tCREATE_METAL_LIGAND_BONDS: error creating bonds for atom: \n{at}\n of ligand: \n{lig}\n") - if debug >= 1: print(f"\tCREATE_METAL_LIGAND_BONDS: count differs from atom.mconnec: {count}, {at.mconnec}") - -###################################################### -def create_metal_metal_bonds (mol, debug: int=0): - from cell2mol.classes import bond - # Adds Metal-Metal Bonds, with a zero order: - if mol.iscomplex or mol.has_IA_IIA: - if len(mol.metals) > 1 : - if debug >= 1: print(f"\tCREATE_METAL_METAL_BONDS: Creating Metal-Metal Bonds for molecule {mol.formula}") - if debug >= 2: print(f"\tCREATE_METAL_METAL_BONDS: Metals: {mol.metals}") - for idx, met1 in enumerate(mol.metals): - index_1 = met1.get_parent_index("molecule") - for jdx, met2 in enumerate(mol.metals): - if idx <= jdx: continue - index_2 = met2.get_parent_index("molecule") - isconnected = mol.madjmat[index_1, index_2] == 1 - if isconnected: - if index_1 < index_2 : - bond_startatom = met1 - bond_endatom = met2 - else: - bond_startatom = met2 - bond_endatom = met1 - newbond = bond(bond_startatom, bond_endatom, 0) - met1.add_bond(newbond) - met2.add_bond(newbond) -###################################################### - -def assign_charge_to_specie(specie, final_charge, debug: int=0): - """Assign the charge to a specific species based on its type.""" - if debug >= 1: print(f"ASSIGN_CHARGE_TO_SPECIE: Unique Species final charges {specie.formula=} {final_charge=}") - if (specie.subtype == "molecule" and not specie.iscomplex and not specie.has_IA_IIA) or (specie.subtype == "ligand"): - idx = [cs.corr_total_charge for cs in specie.possible_cs].index(final_charge) - cs = specie.possible_cs[idx] - specie.charge_state = cs - specie.set_charges(cs.corr_total_charge, cs.corr_atom_charges, cs.smiles, cs.rdkit_obj) - if debug >= 1: print(specie.unique_index, specie.formula, specie.totcharge, specie.smiles) - - elif specie.subtype == "metal": - specie.set_charge(final_charge) - if debug >= 1: print(specie.unique_index, specie.formula, specie.charge) - -###################################################### - -def validate_reference_molecules(self, debug): - """Validate reference molecules by checking ligand and metal charges.""" - for idx, ref in enumerate(self.refmoleclist): - if ref.iscomplex or ref.has_IA_IIA: - if debug >= 1: print(f"VALIDATE_REFERENCE_MOLECULES: {ref.formula=}") - self.validate_complex_ligands(ref, idx, debug) - self.validate_complex_metals(ref, debug) - prepare_mol(ref) - else: - self.validate_non_complex_molecule(ref, debug) - -###################################################### -def predict_metal_ox (metal:object, debug: int=0) -> None: - model = "Fe_mono_m_ox_5486.pkl" - feature = generate_feature_vector (metal, target_prop = "m_ox", debug=debug) - path_rf = os.path.join( os.path.abspath(os.path.dirname(__file__)), model) - ramdom_forest = pickle.load(open(path_rf, 'rb')) - predictions = ramdom_forest.predict(feature) - m_ox_rf = predictions[0] - print(f"PREDICT_METAL_OS: metal OS of the metal {metal.label} is predicted as {m_ox_rf} using Random Forest model") - - return m_ox_rf -###################################################### \ No newline at end of file diff --git a/cell2mol/operations.py b/cell2mol/operations.py new file mode 100644 index 000000000..87ef9b529 --- /dev/null +++ b/cell2mol/operations.py @@ -0,0 +1,713 @@ +#!/usr/bin/env python + +import numpy as np +import itertools +import logging +from cell2mol.elementdata import ElementData +from cell2mol.element_utils import ( + TRANSITION_METALS, + ALKALI_AND_ALKALINE_EARTH_METALS, + LANTHANIDES, + ACTINIDES, + POST_TRANSITION_METALS, + METALLOIDS, + labels2formula, +) + +logger = logging.getLogger(__name__) +elemdatabase = ElementData() + + +def frac2cart_fromcellvec(frac_coord, cellvec): + """Convert fractional coordinates to cartesian coordinates + Args: + frac_coord (list): list of fractional coordinates + cellvec (list): list of cell vectors + Returns: + cartesian (list): list of cartesian coordinates + """ + cartesian = [] + for idx, frac in enumerate(frac_coord): + xcar = ( + frac[0] * cellvec[0][0] + frac[1] * cellvec[1][0] + frac[2] * cellvec[2][0] + ) + ycar = ( + frac[0] * cellvec[0][1] + frac[1] * cellvec[1][1] + frac[2] * cellvec[2][1] + ) + zcar = ( + frac[0] * cellvec[0][2] + frac[1] * cellvec[1][2] + frac[2] * cellvec[2][2] + ) + cartesian.append([float(xcar), float(ycar), float(zcar)]) + return cartesian + + +def frac2cart_fromparam(frac_coord, cellparam): + """Convert fractional coordinates to cartesian coordinates + Args: + frac_coord (list): list of fractional coordinates + cellparam (list): list of cell parameters + Returns: + cartesian (list): list of cartesian coordinates + """ + + a = cellparam[0] + b = cellparam[1] + c = cellparam[2] + alpha = np.radians(cellparam[3]) + beta = np.radians(cellparam[4]) + gamma = np.radians(cellparam[5]) + + volume = ( + a + * b + * c + * np.sqrt( + 1 + - np.cos(alpha) ** 2 + - np.cos(beta) ** 2 + - np.cos(gamma) ** 2 + + 2 * np.cos(alpha) * np.cos(beta) * np.cos(gamma) + ) + ) + + m = np.zeros((3, 3)) + m[0][0] = a + m[0][1] = b * np.cos(gamma) + m[0][2] = c * np.cos(beta) + m[1][0] = 0 + m[1][1] = b * np.sin(gamma) + m[1][2] = c * ((np.cos(alpha) - np.cos(beta) * np.cos(gamma)) / np.sin(gamma)) + m[2][0] = 0 + m[2][1] = 0 + m[2][2] = volume / (a * b * np.sin(gamma)) + + cartesian = [] + for idx, frac in enumerate(frac_coord): + xcar = frac[0] * m[0][0] + frac[1] * m[0][1] + frac[2] * m[0][2] + ycar = frac[0] * m[1][0] + frac[1] * m[1][1] + frac[2] * m[1][2] + zcar = frac[0] * m[2][0] + frac[1] * m[2][1] + frac[2] * m[2][2] + cartesian.append([float(xcar), float(ycar), float(zcar)]) + return cartesian + + +def cart2frac(cartCoords, cellvec): + """Convert cartesian coordinates to fractional coordinates + Args: + cartCoords (list): list of cartesian coordinates + cellvec (list): list of cell vectors + Returns: + fracCoords (list): list of fractional coordinates + """ + + latCnt = [x[:] for x in [[None] * 3] * 3] + for a in range(3): + for b in range(3): + latCnt[a][b] = cellvec[b][a] + + fracCoords = [] + detLatCnt = det3(latCnt) + + for i in cartCoords: + aPos = ( + det3( + [ + [i[0], latCnt[0][1], latCnt[0][2]], + [i[1], latCnt[1][1], latCnt[1][2]], + [i[2], latCnt[2][1], latCnt[2][2]], + ] + ) + ) / detLatCnt + bPos = ( + det3( + [ + [latCnt[0][0], i[0], latCnt[0][2]], + [latCnt[1][0], i[1], latCnt[1][2]], + [latCnt[2][0], i[2], latCnt[2][2]], + ] + ) + ) / detLatCnt + cPos = ( + det3( + [ + [latCnt[0][0], latCnt[0][1], i[0]], + [latCnt[1][0], latCnt[1][1], i[1]], + [latCnt[2][0], latCnt[2][1], i[2]], + ] + ) + ) / detLatCnt + fracCoords.append([aPos, bPos, cPos]) + return fracCoords + + +def det3(mat): + """Calculate the determinant of a 3x3 matrix + Args: + mat (list): list of 3x3 matrix + Returns: + determinant (float): determinant of the matrix + """ + return ( + (mat[0][0] * mat[1][1] * mat[2][2]) + + (mat[0][1] * mat[1][2] * mat[2][0]) + + (mat[0][2] * mat[1][0] * mat[2][1]) + - (mat[0][2] * mat[1][1] * mat[2][0]) + - (mat[0][1] * mat[1][0] * mat[2][2]) + - (mat[0][0] * mat[1][2] * mat[2][1]) + ) + + +def translate(vector, coords, cellvec): + """Translate coordinates by a vector + Args: + vector (list): list of vector components + coords (list): list of coordinates + cellvec (list): list of cell vectors + Returns: + newcoord (list): list of translated coordinates + """ + + newcoord = [] + for idx, coord in enumerate(coords): + newx = ( + coord[0] + + vector[0] * cellvec[0][0] + + vector[1] * cellvec[1][0] + + vector[2] * cellvec[2][0] + ) + newy = ( + coord[1] + + vector[0] * cellvec[0][1] + + vector[1] * cellvec[1][1] + + vector[2] * cellvec[2][1] + ) + newz = ( + coord[2] + + vector[0] * cellvec[0][2] + + vector[1] * cellvec[1][2] + + vector[2] * cellvec[2][2] + ) + newcoord.append([float(newx), float(newy), float(newz)]) + + return newcoord + + +def extract_from_list(entrylist: list, old_array: list, dimension: int = 2) -> list: + """Extract a 1D or 2D sub-array using a list of indices. + + Args: + entrylist (list): indices to extract + old_array (list): source list + dimension (int): 2 for 2D extraction, 1 for 1D extraction + Returns: + list: extracted sub list + """ + length = len(entrylist) + if dimension == 2: + new_array = np.empty((length, length), dtype=object) + for idx, row in enumerate(entrylist): + for jdx, col in enumerate(entrylist): + new_array[idx, jdx] = old_array[row][col] + elif dimension == 1: + new_array = np.empty((length), dtype=object) + for idx, val in enumerate(entrylist): + new_array[idx] = old_array[val] + return list(new_array) + + +def reorder_element(lst: list, old_idx: int, new_idx: int) -> list: + """Moves an element from old_idx to new_idx and returns a new list.""" + new_lst = list(lst) + new_lst.insert(new_idx, new_lst.pop(old_idx)) + return new_lst + + +def additem(item, vector): + """Append an item to a list if not already present. + + Args: + item: item to add + vector (list): target list + + Returns: + list: updated list + """ + if item not in vector: + vector.append(item) + return vector + + +def absolute_value(num): + """Calculate the absolute value of the sum of the absolute values of elements in a list.""" + sum = 0 + for i in num: + sum += np.abs(i) + return abs(sum) + + +def inv(perm: list) -> list: + """Compute the inverse of a permutation. + + Args: + perm (list): permutation mapping + + Returns: + list: inverse permutation + """ + inverse = [0] * len(perm) + for i, p in enumerate(perm): + inverse[p] = i + return inverse + + +def compute_centroid(arr: np.ndarray) -> list: + """Compute the centroid of a set of 3D coordinates. + + Args: + arr (np.ndarray): array of shape (N, 3) + + Returns: + np.ndarray: centroid coordinates + """ + length = arr.shape[0] + sum_x = np.sum(arr[:, 0]) + sum_y = np.sum(arr[:, 1]) + sum_z = np.sum(arr[:, 2]) + centroid = np.around(np.array([sum_x / length, sum_y / length, sum_z / length]), 7) + return np.array(centroid) + + +def get_dist(atom1_pos: list, atom2_pos: list) -> float: + """Compute the Euclidean distance between two points. + + Args: + atom1_pos (list): first point coordinates + atom2_pos (list): second point coordinates + + Returns: + float: distance between points + """ + dist = np.linalg.norm(np.array(atom1_pos) - np.array(atom2_pos)) + dist = round(float(dist), 3) + return dist + + +def get_angle(vec1, vec2) -> float: + """Compute the angle between two vectors in radians. + + Args: + vec1: first vector + vec2: second vector + + Returns: + float: angle in radians + """ + norm1 = np.linalg.norm(vec1) + norm2 = np.linalg.norm(vec2) + dotprod = np.dot(vec1, vec2) + factor = dotprod / (norm1 * norm2) + angle = np.arccos(factor) + if np.isnan(angle): + logger.error( + "GET_ANGLE nan Problem %s %s %s %s %s", + norm1, + norm2, + dotprod, + factor, + angle, + ) + logger.error("GET_ANGLE nan Problem, vecs: %s %s", vec1, vec2) + return float(angle) + + +def unit_vector(v: np.ndarray) -> np.ndarray: + """Return the unit vector of v. + + For zero vectors, returns the original vector. + """ + norm = np.linalg.norm(v) + if norm == 0: + return v + return v / norm + + +def tmatgenerator(centroid, thres=0.40, full=False): + """Generates a list of translation vectors for fragment reconstruction. + + This function determines the necessary translations for a molecular fragment + based on the position of its centroid within the unit cell's fractional + coordinates. The goal is to generate translation vectors that will help in + reconstructing a whole molecule that is split across unit cell boundaries. + + If a fragment's centroid is near a cell boundary (e.g., close to 0.0 or 1.0 + along an axis), translations along that axis are suggested. Fragments near + the center of the cell are less likely to need translation. + + Args: + centroid (np.ndarray): The fractional coordinates (x, y, z) of the + fragment's centroid. + thres (float, optional): The threshold defining the boundary region. + Translations are suggested if a centroid coordinate is less than + `thres` or greater than `1 - thres`. Defaults to 0.40. + full (bool, optional): If True, generates all 27 possible translation + vectors (from -1 to 1 in each dimension), ignoring the centroid + position. Defaults to False. + + Returns: + list: A sorted list of translation vectors as tuples (e.g., [(0, 0, 0), + (1, 0, 0), ...]). The list is sorted by the magnitude of the + translation. + """ + + tmax = 1 - thres + tmin = thres + + if not full: + tmatrix = [] + tmatrix = additem((0, 0, 0), tmatrix) + + # X positive + if centroid[0] >= tmax: + tmatrix = additem((-1, 0, 0), tmatrix) + if centroid[1] >= tmax: + tmatrix = additem((-1, -1, 0), tmatrix) + tmatrix = additem((0, -1, 0), tmatrix) + if centroid[2] >= tmax: + tmatrix = additem((-1, -1, -1), tmatrix) + tmatrix = additem((0, -1, -1), tmatrix) + tmatrix = additem((0, 0, -1), tmatrix) + if centroid[2] <= tmin: + tmatrix = additem((-1, -1, 1), tmatrix) + tmatrix = additem((0, -1, 1), tmatrix) + tmatrix = additem((0, 0, 1), tmatrix) + if centroid[1] <= tmin: + tmatrix = additem((-1, 1, 0), tmatrix) + tmatrix = additem((0, 1, 0), tmatrix) + if centroid[2] >= tmax: + tmatrix = additem((-1, 1, -1), tmatrix) + tmatrix = additem((0, 1, -1), tmatrix) + tmatrix = additem((0, 0, -1), tmatrix) + if centroid[2] <= tmin: + tmatrix = additem((-1, 1, 1), tmatrix) + tmatrix = additem((0, 1, 1), tmatrix) + tmatrix = additem((0, 0, 1), tmatrix) + if centroid[2] >= tmax: + tmatrix = additem((-1, 0, -1), tmatrix) + tmatrix = additem((0, 0, -1), tmatrix) + if centroid[2] <= tmin: + tmatrix = additem((-1, 0, 1), tmatrix) + tmatrix = additem((0, 0, 1), tmatrix) + + if centroid[1] >= tmax: + tmatrix = additem((0, -1, 0), tmatrix) + if centroid[2] >= tmax: + tmatrix = additem((0, -1, -1), tmatrix) + tmatrix = additem((0, 0, -1), tmatrix) + if centroid[2] <= tmin: + tmatrix = additem((0, -1, 1), tmatrix) + tmatrix = additem((0, 0, 1), tmatrix) + + if centroid[2] >= tmax: + tmatrix = additem((0, 0, -1), tmatrix) + + if centroid[0] <= tmin: + tmatrix = additem((1, 0, 0), tmatrix) + if centroid[1] <= tmin: + tmatrix = additem((1, 1, 0), tmatrix) + tmatrix = additem((0, 1, 0), tmatrix) + if centroid[2] <= tmin: + tmatrix = additem((1, 1, 1), tmatrix) + tmatrix = additem((0, 1, 1), tmatrix) + tmatrix = additem((0, 0, 1), tmatrix) + if centroid[2] >= tmax: + tmatrix = additem((1, 1, -1), tmatrix) + tmatrix = additem((0, 1, -1), tmatrix) + tmatrix = additem((0, 0, -1), tmatrix) + if centroid[1] >= tmax: + tmatrix = additem((1, -1, 0), tmatrix) + tmatrix = additem((0, -1, 0), tmatrix) + if centroid[2] >= tmax: + tmatrix = additem((1, -1, -1), tmatrix) + if centroid[2] <= tmin: + tmatrix = additem((1, -1, 1), tmatrix) + if centroid[2] <= tmin: + tmatrix = additem((1, 0, 1), tmatrix) + tmatrix = additem((0, 0, 1), tmatrix) + if centroid[2] >= tmax: + tmatrix = additem((1, 0, -1), tmatrix) + tmatrix = additem((0, 0, -1), tmatrix) + + if centroid[1] <= tmin: + tmatrix = additem((0, 1, 0), tmatrix) + if centroid[2] <= tmin: + tmatrix = additem((0, 1, 1), tmatrix) + tmatrix = additem((0, 0, 1), tmatrix) + if centroid[2] >= tmax: + tmatrix = additem((0, 1, -1), tmatrix) + tmatrix = additem((0, 0, -1), tmatrix) + if centroid[2] <= tmin: + tmatrix = additem((0, 0, 1), tmatrix) + + if (centroid[0] > tmin) and (centroid[0] < tmax): + if centroid[1] <= tmin: + tmatrix = additem((0, 1, 0), tmatrix) + if centroid[2] >= tmax: + tmatrix = additem((0, 1, -1), tmatrix) + if centroid[2] <= tmin: + tmatrix = additem((0, 1, 1), tmatrix) + if centroid[1] >= tmax: + tmatrix = additem((0, -1, 0), tmatrix) + if centroid[2] >= tmax: + tmatrix = additem((0, -1, -1), tmatrix) + if centroid[2] <= tmin: + tmatrix = additem((0, -1, 1), tmatrix) + if centroid[2] <= tmin: + tmatrix = additem((0, 0, 1), tmatrix) + if centroid[1] >= tmax: + tmatrix = additem((0, -1, 1), tmatrix) + if centroid[1] <= tmin: + tmatrix = additem((0, 1, 1), tmatrix) + if centroid[2] >= tmax: + tmatrix = additem((0, 0, -1), tmatrix) + if centroid[1] >= tmax: + tmatrix = additem((0, -1, -1), tmatrix) + if centroid[1] <= tmin: + tmatrix = additem((0, 1, -1), tmatrix) + elif full: + x = [-1, 0, 1] + tmatrix = [p for p in itertools.product(x, repeat=3)] + + tmatrix.sort(key=absolute_value) + + return tmatrix + + +def point_along_vector(point1, point2, distance): + """ + Calculate the coordinates of a point along the vector between two points + with a specified distance from the first point. + + Args: + - point1: Coordinates of the first point (numpy array or list) + - point2: Coordinates of the second point (numpy array or list) + - distance: Distance from the first point to the new point (float) + + Returns: + - Coordinates of the new point (numpy array) + """ + # Convert input to numpy arrays + point1 = np.array(point1) + point2 = np.array(point2) + + # Calculate the vector between the two points + vector = point2 - point1 + + # Normalize the vector + normalized_vector = vector / np.linalg.norm(vector) + + # Calculate the coordinates of the new point + new_point = point1 + normalized_vector * distance + + return new_point + + +def kabsch_rotation(P, Q): + """ + Find rotation R that best aligns P to Q (both 3xN). + Returns 3x3 rotation matrix. + """ + H = P @ Q.T + U, S, Vt = np.linalg.svd(H) + R = Vt.T @ U.T + # Right-handed fix + if np.linalg.det(R) < 0: + Vt[-1, :] *= -1 + R = Vt.T @ U.T + return R + + +def perp_unit(u): + """Deterministic unit vector perpendicular to u.""" + u = unit_vector(u) + # choose a global axis least aligned with u + g = np.array([1.0, 0.0, 0.0]) if abs(u[0]) < 0.9 else np.array([0.0, 1.0, 0.0]) + v = g - (g @ u) * u + nv = np.linalg.norm(v) + if nv < 1e-12: + g = np.array([0.0, 0.0, 1.0]) + v = g - (g @ u) * u + nv = np.linalg.norm(v) + if nv < 1e-12: + raise ValueError("Cannot construct a perpendicular direction.") + return v / nv + + +def get_moiety_indices_from_labels(atom_site_labels, moiety_list): + flat_list = [atom for moiety in moiety_list for atom in moiety] + + atom_site_labels = np.array(atom_site_labels) # ensure it's a numpy array + moiety_indices = [ + np.where(np.isin(atom_site_labels, moiety))[0].tolist() + for moiety in moiety_list + ] + for i, atom in enumerate(atom_site_labels): + if atom not in flat_list: + moiety_indices.append([i]) + + return moiety_indices + + +def count_metals(labels: list[str]) -> dict[str, int]: + metal_counts = { + "tm": 0, + "f_block": 0, + "alkali_alkaline": 0, + "post_tm": 0, + "metalloid": 0, + } + + for label in labels: + if label in TRANSITION_METALS: + metal_counts["tm"] += 1 + elif label in LANTHANIDES or label in ACTINIDES: + metal_counts["f_block"] += 1 + elif label in ALKALI_AND_ALKALINE_EARTH_METALS: + metal_counts["alkali_alkaline"] += 1 + elif label in POST_TRANSITION_METALS: + metal_counts["post_tm"] += 1 + elif label in METALLOIDS: + metal_counts["metalloid"] += 1 + + log_map = { + "Transition metals": metal_counts["tm"], + "Lanthanides/Actinides": metal_counts["f_block"], + "Alkali/Alkaline earth metals": metal_counts["alkali_alkaline"], + "Post-transition metals": metal_counts["post_tm"], + "Metalloids": metal_counts["metalloid"], + } + return metal_counts, log_map + + +def is_polynuclear_over_limit(labels: list[str], max_metal_centers: int = 6) -> bool: + """ + Check whether a complex exceeds the metal center limit. + Logs details if the limit is exceeded or if non-transition metals are present. + """ + + metal_counts, log_map = count_metals(labels) + + total_metal_count = ( + metal_counts["tm"] + + metal_counts["f_block"] + + metal_counts["alkali_alkaline"] + + metal_counts["post_tm"] + ) + + if total_metal_count > max_metal_centers: + logger.warning( + "Detected polynuclear complex exceeding metal center limit (%d): %s", + max_metal_centers, + labels2formula(labels), + ) + logger.debug("Total metal counts: %d", total_metal_count) + logger.debug("Metal type counts: %s", log_map) + # for name, count in log_map.items(): + # if count > 0: + # logger.debug(" %s: %d", name, count) + return True + + return False + + +def has_mixed_metal_types(labels: list[str]) -> bool: + metal_counts, log_map = count_metals(labels) + + tm_count = metal_counts["tm"] + total_metal_count = ( + metal_counts["tm"] + + metal_counts["f_block"] + + metal_counts["alkali_alkaline"] + + metal_counts["post_tm"] + ) + + # No metals → not mixed + if total_metal_count == 0: + return False + + # Only transition metals → not mixed + if total_metal_count == tm_count: + logger.info( + "TM-only complex detected: %s", + labels2formula(labels), + ) + return False + logger.warning("Mixed metal types detected in complex: %s", labels2formula(labels)) + logger.debug("Total metal counts: %d", total_metal_count) + logger.debug("Metal type counts: %s", log_map) + # Mixed metal types detected + return True + + +def has_different_metal_coordination(refmoleculist, bond_data): + """ + Iterates through all molecules in refmoleculist and compares + metal coordination spheres against the provided bond_data. + """ + + if not bond_data: + logger.info("No bond data provided for coordination verification.") + return None + + overall_difference = False + # Iterate through each molecule in the list + for mol_idx, molecule in enumerate(refmoleculist): + # Check each metal within the current molecule + if molecule.metals is None: + logger.info( + "No metals found in Molecule %s (Formula: %s). Skipping.", + mol_idx, + molecule.formula, + ) + continue + for met in molecule.metals: + met_label = met.atom_site_label + + # 1. Extract ground truth neighbors from bond_data + neighbors_from_data = [] + for b in bond_data: + if b[0] == met_label: + neighbors_from_data.append(b[1]) + elif b[1] == met_label: + neighbors_from_data.append(b[0]) + + # 2. Get current neighbors stored in the object + # (Assuming coord_sphere_atoms is the primary storage list) + current_sphere_labels = [a.atom_site_label for a in met.coord_sphere_atoms] + + # 3. Perform Set Comparison + set_data = set(neighbors_from_data) + set_current = set(current_sphere_labels) + + if set_data != set_current: + overall_difference = True + missing = set_data - set_current + extra = set_current - set_data + + logger.warning( + "Molecule %s (Formula: %s): Mismatch in coordination for Metal %s", + mol_idx, + molecule.formula, + met_label, + ) + logger.warning(f" Expected (bond_data): {neighbors_from_data}") + logger.warning(f" Missing in cell2mol: {missing}") + logger.warning(f" Present in cell2mol: {set_current}") + logger.warning(f" Extra in cell2mol: {extra}") + else: + logger.debug( + "Molecule %s (Formula: %s): Metal %s coordination is correct.", + mol_idx, + molecule.formula, + met_label, + ) + + return overall_difference diff --git a/cell2mol/other.py b/cell2mol/other.py deleted file mode 100644 index 3f3be9215..000000000 --- a/cell2mol/other.py +++ /dev/null @@ -1,105 +0,0 @@ -## File for small functions -import numpy as np -import sys -################################ -def extract_from_list(entrylist: list, old_array: list, dimension: int=2, debug: int=0) -> list: - #if debug >= 0: print("EXTRACT_FROM_LIST. received:", len(entrylist), np.max(entrylist)+1, len(old_array)) - length = len(entrylist) - if dimension == 2: - new_array = np.empty((length, length), dtype=object) - for idx, row in enumerate(entrylist): - for jdx, col in enumerate(entrylist): - new_array[idx, jdx] = old_array[row][col] - elif dimension == 1: - new_array = np.empty((length), dtype=object) - if debug > 2 : print(f"EXTRACT_FROM_LIST. received: {entrylist=} {old_array=}") - for idx, val in enumerate(entrylist): - if debug > 2: print(f"EXTRACT_FROM_LIST. received: {idx=} {val=} {old_array[val]=}") - new_array[idx] = old_array[val] - if debug > 2 : print(f"EXTRACT_FROM_LIST. {new_array=}") - return list(new_array) - #return list([np.stack(list(new_array), axis=0)]) - -####################################################### -def additem(item, vector): - if item not in vector: - vector.append(item) - return vector - -####################################################### -def absolute_value(num): - sum = 0 - for i in num: - sum += np.abs(i) - return abs(sum) - -####################################################### -def det3(mat): - """ Calculate the determinant of a 3x3 matrix - - Args: - mat (list): list of 3x3 matrix - Returns: - determinant (float): determinant of the matrix - """ - return ( - (mat[0][0] * mat[1][1] * mat[2][2]) - + (mat[0][1] * mat[1][2] * mat[2][0]) - + (mat[0][2] * mat[1][0] * mat[2][1]) - - (mat[0][2] * mat[1][1] * mat[2][0]) - - (mat[0][1] * mat[1][0] * mat[2][2]) - - (mat[0][0] * mat[1][2] * mat[2][1]) - ) - -#################################### -def inv(perm: list) -> list: - - inverse = [0] * len(perm) - for i, p in enumerate(perm): - inverse[p] = i - return inverse - -####################################################### -def compute_centroid(arr: np.array) -> list: - # Get centroid of a set of coordinates - length = arr.shape[0] - sum_x = np.sum(arr[:, 0]) - sum_y = np.sum(arr[:, 1]) - sum_z = np.sum(arr[:, 2]) - centroid = np.around(np.array([sum_x/length, sum_y/length, sum_z/length]),7) - return np.array(centroid) - -####################################################### -def get_dist (atom1_pos: list, atom2_pos: list) -> float : - dist = np.linalg.norm(np.array(atom1_pos) - np.array(atom2_pos)) - return round(dist, 3) - -############################## -def get_angle(vec1, vec2) -> float : - norm1 = np.linalg.norm(vec1) - norm2 = np.linalg.norm(vec2) - dotprod = np.dot(vec1, vec2) - factor = dotprod / (norm1 * norm2) - angle = np.arccos(factor) - if np.isnan(angle): - print("GET_ANGLE nan Problem", norm1, norm2, dotprod, factor, angle) - print("GET_ANGLE nan Problem, vecs:", vec1, vec2) - return float(angle) - -####################################################### -def handle_error(case: int): - print(f"Cell2mol terminated with error number {case}. Message:") - if case == 1: print("The cell object has isolated H atoms in the reference molecules list. This typically indicates an error. STOPPING") - if case == 2: print("We detected that H atoms are likely missing. This will cause errors in the charge prediction, so STOPPING pre-emptively.") - if case == 3: print("We failed to get fragments. STOPPING pre-emptively.") - if case == 4: print("After reconstruction of the unit cell, we still detected some fragments. STOPPING pre-emptively.") - if case == 5: print("Error in list of possible charges received for molecule or ligand") - if case == 6: print("More than one valid possible charge distribution found") - if case == 7: print("No valid possible charge distribution found") - # if case == 8: print("Error while preparing molecules") - if case == 8: print("Error while creating bonds for molecule or ligand") - # if case == 9: print("The charge neutralization failed.") - if case == 9: print("Discrepancies found between refcell and CIF. This will cause errors in the charge prediction, so STOPPING pre-emptively.") - - if case == 0: print("No errors Found") - #sys.exit(1) diff --git a/cell2mol/process_reference.py b/cell2mol/process_reference.py new file mode 100644 index 000000000..a069348b0 --- /dev/null +++ b/cell2mol/process_reference.py @@ -0,0 +1,360 @@ +#!/usr/bin/env python + +import os +import logging +from ase.io import read +from cell2mol.utils import config +from cell2mol.args import parsing_arguments +from cell2mol.classes import Reference +from cell2mol.operations import ( + frac2cart_fromparam, + is_polynuclear_over_limit, + has_mixed_metal_types, + has_different_metal_coordination, +) +from cell2mol.read_cif import ( + prefilter_cif, + get_cell_parameters, + get_wyckoff_positions, + get_geom_bond, + extract_info_from_cif, + compare_cif_with_reference, +) +from cell2mol.write_results import ( + write_cell_molecules_info, + write_unique_species, + write_possible_charges, + get_reference_error_message, + get_reference_warning_messages, + exit_with_error_input, + exit_with_error_exception, +) +from cell2mol.connectivity import is_mismatch_adjacency +from cell2mol.utils.limits import ProcessingTimeoutError, set_time_limit +from cell2mol.utils.exceptions import ASEParseError +import sys +import gc + +logger = logging.getLogger(__name__) + +# Error Codes +ERR_CELL2MOL = config.ERR_CELL2MOL +ERR_ASE_PARSE = config.ERR_ASE_PARSE +ERR_INPUT = config.ERR_INPUT +ERR_GENERAL = config.ERR_GENERAL +ERR_TIMEOUT = config.ERR_TIMEOUT +ERR_MEMORY = config.ERR_MEMORY + + +def interpret_reference(input_path, name, current_dir): + """ + Process the reference molecules from a CIF file. + """ + logger.info("cell2mol version %s", config.VERSION) + logger.info("Input CIF: %s", input_path) + logger.debug("Timeout set to %d seconds", config.TIMEOUT) + + refcell = None + exit_code = 0 + process_failure = False + mode = None + try: + logger.info("Processing CIF file") + + cif_okay, error_message = prefilter_cif(input_path) + if not cif_okay: + for err_msg in error_message.splitlines(): + logger.info(err_msg) + exit_with_error_input( + f"CIF file is not suitable for processing\n{error_message}" + ) + exit_code = ERR_INPUT + return None + # Enforce timeout on the heavy lifting + with set_time_limit(config.TIMEOUT): + try: + structure = read(input_path, format="cif") + except Exception as exc: + logger.error(f"ASE failed to parse {input_path}: {exc}") + raise ASEParseError from exc + + cell_vector, cell_param, _ = get_cell_parameters(structure) + refcell = create_reference(input_path, name, cell_vector, cell_param) + + # Check missing hydrogens and assess errors + if refcell.has_error(): + logger.error( + "Fails generating reference molecules (case=%s)", + refcell.error_cases.get("ref_molecules"), + ) + process_failure = True + mode = "ref_molecules" + return refcell + + refcell.check_hydrogens() + refcell.assess_errors(mode="hydrogens") + if refcell.has_error(): + logger.error( + "Detects missing hydrogens (case=%s)", + refcell.error_cases.get("hydrogens"), + ) + process_failure = True + mode = "hydrogens" + return refcell + + # Save intermediate success + _handle_reference_outputs(name, current_dir, refcell, mode="hydrogens") + + # Possible charge states for unique species + refcell.get_unique_species() + refcell.get_selected_cs() + refcell.assess_errors(mode="possible_charges") + + if refcell.has_error(): + logger.error( + "Fails retrieving possible charges (case=%s)", + refcell.error_cases.get("possible_charges"), + ) + process_failure = True + mode = "possible_charges" + return refcell + + except ASEParseError as exc: + logger.error("ASE parsing failed.") + exit_with_error_exception(exc) + exit_code = ERR_ASE_PARSE + + except MemoryError as exc: + # CRITICAL: Delete large objects and force GC *before* doing anything else + if "structure" in locals(): + del structure + gc.collect() + + logger.error("Memory limit reached. RAM cleared.") + + if refcell is not None: + if refcell.error_cases is None: + refcell.error_cases = {} + refcell.error_cases["memory"] = ERR_MEMORY + + # Now it is safe(r) to call the exit helper + exit_with_error_exception(exc) + exit_code = ERR_MEMORY + + # 2. Handle Timeout Errors Second + except ProcessingTimeoutError as exc: + logger.error(f"Processing timed out after {config.TIMEOUT} seconds.") + + if refcell is not None: + if refcell.error_cases is None: + refcell.error_cases = {} + refcell.error_cases["timeout"] = ERR_TIMEOUT + + exit_with_error_exception(exc) + exit_code = ERR_TIMEOUT + + # 3. Handle All Other Errors + except Exception as exc: + logger.error(f"Unhandled error: {exc}") + if refcell is not None: + if refcell.error_cases is None: + refcell.error_cases = {} + refcell.error_cases["general"] = ERR_GENERAL + exit_with_error_exception(exc) + exit_code = ERR_GENERAL + + finally: + logger.info("Executing final output handling...") + # Ensure we try to save whatever valid data we have (refcell might be None) + if mode is None: + mode = "possible_charges" # Default to hydrogens if no mode set + _handle_reference_outputs(name, current_dir, refcell, mode=mode) + + if exit_code == 0 and process_failure: + exit_code = ERR_CELL2MOL + + if exit_code != 0: + logger.info(f"Process exiting with code {exit_code}") + sys.exit(exit_code) + + return refcell + + +def create_reference(input_path, name, cell_vector, cell_param): + """ + Create the Reference Cell object. + Args: + input_path (str): Path to the CIF file. + name (str): CSD refcode. + cell_vector (np.ndarray): Cell vectors. + cell_param (np.ndarray): Cell parameters. + Returns: + refcell (object): Reference Cell object. + """ + + atom_site_labels, ref_labels, ref_fracs = get_wyckoff_positions(input_path) + ref_pos = frac2cart_fromparam(ref_fracs, cell_param) + + refcell = Reference.from_positional( + name=name, + labels=ref_labels, + pos=ref_pos, + frac_coord=ref_fracs, + cell_vector=cell_vector, + cell_param=cell_param, + ) + refcell.set_atom_site_labels(atom_site_labels) + refcell.set_subtype("reference") + + # Get CIF bond moiety information + geom_bond_cif, moiety_list_cif = get_geom_bond(input_path) + refcell.set_cif_bond_moiety(geom_bond_cif, moiety_list_cif) + logger.info("CIF has bond moiety information: %s", refcell.exist_cif_bond_moiety) + + # Extract additional CIF information + chemical_name, reported_metal_os, moiety_dicts = extract_info_from_cif(input_path) + refcell.set_additional_cif_info(chemical_name, reported_metal_os, moiety_dicts) + + # Generate reference molecules + refcell.get_reference_molecules() + + if refcell.error_cases is None: + refcell.error_cases = {} + if not refcell.refmoleclist: + logger.warning("No reference molecules could be generated.") + refcell.error_cases["ref_molecules"] = -1 + return refcell + + logger.info("Generated %d reference molecules.", len(refcell.refmoleclist)) + refcell.error_cases["ref_molecules"] = 0 + + # -------------------------------------------------- + # Gather warnings into a dictionary + # -------------------------------------------------- + warnings_payload = { + "cif_mismatch": compare_cif_with_reference(moiety_dicts, refcell.refmoleclist), + "over_polynuclear_limit": any( + is_polynuclear_over_limit(ref.labels, max_metal_centers=config.MAX_METALS) + for ref in refcell.refmoleclist + ), + "mixed_metals": any( + has_mixed_metal_types(ref.labels) for ref in refcell.refmoleclist + ), + "is_mismatch_adj": is_mismatch_adjacency( + ref_labels, ref_pos, atom_site_labels, geom_bond_cif + ), + "metal_coord_diff": has_different_metal_coordination( + refcell.refmoleclist, geom_bond_cif + ), + } + + # Set the warnings in the refcell object + refcell.set_potential_warning(warnings_payload) + + return refcell + + +def _handle_reference_outputs(name, current_dir, refcell, mode=None): + """Manages saving files and writing summaries.""" + if refcell is None: + return + + # 1. Write the .out summary file + summary_path = os.path.join(current_dir, "reference_summary.txt") + _safe_run( + lambda: _write_ref_detailed_summary(name, refcell, summary_path, mode=mode), + "Failed to write reference summary", + ) + + # 2. Save the refcell object (.cell) + ref_cell_fname = os.path.join(current_dir, f"Ref_Cell_{name}.cell") + + def save_ref(): + refcell.save(ref_cell_fname) + # from cell2mol.write_results import extract_refmoleclist_xyz + # if logger.isEnabledFor(logging.DEBUG) and not refcell.error_cases.get("ref_molecules", 0) == -1: + # extract_refmoleclist_xyz(current_dir, refcell.refmoleclist, name) + + _safe_run(save_ref, "Failed to save reference cell") + + +def _write_ref_detailed_summary(name, refcell, summary_path, mode=None): + """Writes the molecules info, species, errors, and warnings to file and log.""" + # Retrieve pre-formatted messages (Warnings for True, INFO for None) + warning_messages = get_reference_warning_messages(refcell) + + # --- Write to File --- + with open(summary_path, "w") as f: + print(name, file=f) + write_cell_molecules_info(refcell, file=f) + + if mode == "possible_charges": + write_unique_species(refcell, file=f) + write_possible_charges(refcell, file=f) + + # Print step-specific reference errors + if refcell.error_cases: + for err_mode, code in refcell.error_cases.items(): + msg = get_reference_error_message(code) + print(f"Reference Error (mode={err_mode}): {msg}", file=f) + + # Print potential issues and data status + if warning_messages: + print("\nPotential issues and data status detected:", file=f) + for msg in warning_messages: + # Apply appropriate prefix based on the message content + prefix = " " if msg.startswith("Skipped:") else " Warning: " + print(f"{prefix}{msg}", file=f) + + # --- Write to Logger --- + # Log the specific error for the current operation mode + current_err_code = refcell.error_cases.get(mode, 0) + current_err_msg = get_reference_error_message(current_err_code) + logger.info("Reference Error (mode=%s): %s", mode, current_err_msg) + + if not warning_messages: + logger.info("No potential issues or skipped checks detected.") + else: + logger.warning("Potential issues and data status detected:") + for msg in warning_messages: + if msg.startswith("Skipped:"): + # Log skipped checks as INFO level to avoid cluttering warnings + logger.info(" - %s", msg) + else: + # Log actual mismatches as WARNING level + logger.warning(" - %s", msg) + + +def _safe_run(func, error_msg): + """Utility to wrap save operations in try-except.""" + try: + func() + except Exception: + logger.exception(error_msg) + + +def _main(): + args = parsing_arguments() + if args.cif_bond_info: + config.USE_BOND_INFO = True + + if args.print_config: + print(config.dump()) + return + + input_path = os.path.normpath(args.filepath) + name = os.path.splitext(os.path.basename(input_path))[0] + ext = os.path.splitext(args.filepath)[1].lower() + + if ext != ".cif": + raise ValueError("Invalid input file format. Only .cif files are supported.") + + interpret_reference( + input_path=input_path, + name=name, + current_dir=os.getcwd(), + ) + + +if __name__ == "__main__": + _main() diff --git a/cell2mol/process_unitcell.py b/cell2mol/process_unitcell.py new file mode 100644 index 000000000..16dead31b --- /dev/null +++ b/cell2mol/process_unitcell.py @@ -0,0 +1,324 @@ +#!/usr/bin/env python + +import os +import logging +from ase.io import read +from cell2mol.utils import config +from cell2mol.args import parsing_arguments +from cell2mol.classes import Reference, UnitCell, Cells +from cell2mol.process_reference import interpret_reference +from cell2mol.construction import construct_unitcell +from cell2mol.charge.charge_balancer import balance_unitcell_charge +from cell2mol.read_cif import get_cell_atoms, get_cell_parameters +from cell2mol.write_results import ( + write_cell_molecules_info, + write_unique_species, + write_possible_charges, + get_reference_error_message, + get_unitcell_error_message, + exit_with_error_exception, +) +from cell2mol.utils.limits import ProcessingTimeoutError, set_time_limit + +import sys +import gc + +logger = logging.getLogger(__name__) + +# Error Codes +ERR_CELL2MOL = config.ERR_CELL2MOL +ERR_GENERAL = config.ERR_GENERAL +ERR_TIMEOUT = config.ERR_TIMEOUT +ERR_MEMORY = config.ERR_MEMORY + + +# ----------------------------------------------------------------------------- +# Core function +# ----------------------------------------------------------------------------- +def interpret_unitcell(input_path: str, name: str, current_dir: str): + """Orchestrates the cell2mol process for a CIF file.""" + + refcell = None + unitcell = None + cells = None + + exit_code = 0 + + try: + # Enforce timeout on the heavy lifting + with set_time_limit(config.TIMEOUT): + # ------------------------------------------------------ + # Run Reference Interpretation and Initialize Unit Cell + # ------------------------------------------------------ + refcell: Reference = interpret_reference(input_path, name, current_dir) + + if not refcell: + logger.error("Failed to create reference cell from CIF.") + exit_code = ERR_CELL2MOL + return None + + try: + structure = read(input_path, format="cif") + except (AssertionError, Exception) as e: + logger.error(f"ASE failed to parse {input_path}: {e}") + raise + cell_labels, cell_pos, cell_fracs = get_cell_atoms(structure) + cell_vector, cell_param, sym_ops = get_cell_parameters(structure) + + unitcell = UnitCell.from_positional( + name=name, + labels=cell_labels, + pos=cell_pos, + frac_coord=cell_fracs, + cell_vector=cell_vector, + cell_param=cell_param, + ) + + unitcell.set_subtype("unitcell") + + cells = Cells.from_positional( + name=name, + reference=refcell, + unitcell=unitcell, + cell_vector=cell_vector, + cell_param=cell_param, + ) + # ------------------------------- + # Run the Processing Pipeline + # ------------------------------- + success = _process_cell_logic(refcell, unitcell, sym_ops) + cells.reference = refcell + cells.unitcell = unitcell + # Update cells object with processed data + if success: + logger.info("cell2mol process completed successfully.") + else: + logger.error("cell2mol process encountered errors.") + logger.debug(" - Reference error case: %s", refcell.error_cases) + logger.debug(" - Unit cell error case: %s", unitcell.error_cases) + exit_code = ERR_CELL2MOL + + # ------------------------------- + # Memory errors + # ------------------------------- + except MemoryError as exc: + logger.error("Memory limit reached. Attempting cleanup.") + gc.collect() + + if refcell is not None: + if refcell.error_cases is None: + refcell.error_cases = {} + refcell.error_cases["memory"] = ERR_MEMORY + if unitcell is not None: + if unitcell.error_cases is None: + unitcell.error_cases = {} + unitcell.error_cases["memory"] = ERR_MEMORY + + exit_with_error_exception(exc) + exit_code = ERR_MEMORY + + # ------------------------------- + # Timeout errors + # ------------------------------- + except ProcessingTimeoutError as exc: + logger.error(f"Processing timed out after {config.TIMEOUT} seconds.") + + if refcell is not None: + if refcell.error_cases is None: + refcell.error_cases = {} + refcell.error_cases["timeout"] = ERR_TIMEOUT + if unitcell is not None: + if unitcell.error_cases is None: + unitcell.error_cases = {} + unitcell.error_cases["timeout"] = ERR_TIMEOUT + + exit_with_error_exception(exc) + exit_code = ERR_TIMEOUT + + # ------------------------------- + # All other runtime errors + # ------------------------------- + except Exception as exc: + logger.error(f"Unhandled error: {exc}") + + if refcell is not None: + if refcell.error_cases is None: + refcell.error_cases = {} + refcell.error_cases["general"] = ERR_GENERAL + if unitcell is not None: + if unitcell.error_cases is None: + unitcell.error_cases = {} + unitcell.error_cases["general"] = ERR_GENERAL + + exit_with_error_exception(exc) + exit_code = ERR_GENERAL + + finally: + logger.info("Executing final output handling...") + _save_cell_outputs(name, current_dir, refcell, unitcell, cells) + + if exit_code != 0: + logger.info(f"Process exiting with code {exit_code}") + sys.exit(exit_code) + + # return unitcell + return cells + + +def _process_cell_logic(refcell, unitcell, sym_ops) -> bool: + """Executes the scientific logic: reconstruction, charge balancing, and assignment.""" + if refcell.has_error(): + logger.error( + "Processing the reference cell failed. Aborting unit cell processing." + ) + return False + + logger.info("Starting the cell2mol process for the unit cell") + + # Reconstruction + unitcell = construct_unitcell(refcell, unitcell, sym_ops) + if _has_step_failed(unitcell, "reconstruction"): + return False + + # Charge Balancing + refcell, unitcell = balance_unitcell_charge(refcell, unitcell) + if _has_step_failed(unitcell, "balance_charges"): + return False + + # Reference Assignment + refcell.assign_charges() + if _has_step_failed(refcell, "charge_assignment"): + return False + + refcell.assign_spin() + if _has_step_failed(refcell, "spin_assignment"): + return False + + # Unit Cell Assignment + unitcell.assign_charges(refmoleclist=refcell.refmoleclist) + unitcell.check_charge_neutrality() + if _has_step_failed(unitcell, "charge_assignment"): + return False + + unitcell.assign_spin() + return not _has_step_failed(unitcell, "spin_assignment") + + +def _has_step_failed(obj, mode): + """Assess errors for a specific processing step and log them.""" + obj.assess_errors(mode=mode) + + if obj.subtype == "reference": + code = obj.error_cases.get(mode, 0) + error_message = get_reference_error_message(code) + logger.info("Reference Error (mode=%s): %s", mode, error_message) + + elif obj.subtype == "unitcell": + code = obj.error_cases.get(mode, 0) + error_message = get_unitcell_error_message(code) + logger.info("UnitCell Error (mode=%s): %s", mode, error_message) + + if obj.has_error(mode): + logger.error(error_message) + return True + return False + + +def _save_cell_outputs(name, current_dir, refcell, unitcell, cells): + """Handles all file writing and summary generation.""" + paths = { + "ref": os.path.join(current_dir, f"Ref_Cell_{name}.cell"), + "cell": os.path.join(current_dir, f"Cell_{name}.cell"), + "json": os.path.join(current_dir, f"Cells_{name}.json"), + "pickle": os.path.join(current_dir, f"Cells_{name}.cell"), + "ref_sum": os.path.join(current_dir, "reference_summary.txt"), + "unit_sum": os.path.join(current_dir, "unitcell_summary.txt"), + } + + if refcell: + _safe_run(lambda: refcell.save(paths["ref"]), "Failed to save reference cell") + _safe_run( + lambda: _write_ref_detailed_summary(name, refcell, paths["ref_sum"]), + "Failed to write ref summary", + ) + + if unitcell: + _safe_run(lambda: unitcell.save(paths["cell"]), "Failed to save unit cell") + _safe_run( + lambda: _write_unit_summary(name, unitcell, paths["unit_sum"]), + "Failed to write unit summary", + ) + + # if cells: + # _safe_run( + # lambda: cells.save(paths["json"], format="json"), "Failed to save JSON" + # ) + # _safe_run( + # lambda: cells.save(paths["pickle"], format="pickle"), + # "Failed to save pickle", + # ) + + +def _write_ref_detailed_summary(name, refcell, summary_path): + """Writes the molecules info, species, errors, and warnings to file and log.""" + # Write to File + with open(summary_path, "w") as f: + print(name, file=f) + write_cell_molecules_info(refcell, file=f) + write_unique_species(refcell, file=f) + write_possible_charges(refcell, file=f) + + # Print step-specific reference errors + if refcell.error_cases: + for err_mode, code in refcell.error_cases.items(): + msg = get_reference_error_message(code) + print(f"Reference Error (mode={err_mode}): {msg}", file=f) + + +def _write_unit_summary(name: str, unitcell, summary_path: str): + """Writes the reconstruction results and unit cell info to a text file.""" + with open(summary_path, "w") as f: + print(name, file=f) + write_cell_molecules_info(unitcell, file=f) + + if unitcell.error_cases: + # Print step-specific unit cell errors + for err_mode in unitcell.error_cases.keys(): + code = unitcell.error_cases.get(err_mode, 0) + msg = get_unitcell_error_message(code) + print(f"UnitCell Error (mode={err_mode}): {msg}", file=f) + + +def _safe_run(func, error_msg): + """Utility to wrap save operations in try-except.""" + try: + func() + except Exception: + logger.exception(error_msg) + + +def _main(): + args = parsing_arguments() + if args.cif_bond_info: + config.USE_BOND_INFO = True + + if args.print_config: + print(config.dump()) + return + + input_path = os.path.normpath(args.filepath) + name = os.path.splitext(os.path.basename(input_path))[0] + ext = os.path.splitext(args.filepath)[1].lower() + + if ext != ".cif": + raise ValueError("Invalid input file format. Only .cif files are supported.") + + interpret_unitcell( + input_path=input_path, + name=name, + current_dir=os.getcwd(), + ) + + +if __name__ == "__main__": + _main() diff --git a/cell2mol/process_xyz.py b/cell2mol/process_xyz.py new file mode 100644 index 000000000..41f9b5f90 --- /dev/null +++ b/cell2mol/process_xyz.py @@ -0,0 +1,197 @@ +#!/usr/bin/env python + +import os +import logging +import argparse +from ase.io import read +from cell2mol.classes import Molecule +from cell2mol.element_utils import labels2formula +from cell2mol.connectivity import split_species +from cell2mol.write_results import ( + get_molecule_error_message, + write_molecule_info, + write_unique_species, + write_possible_charges, +) +from cell2mol.charge.charge_balancer import balance_molecule_charge +from cell2mol.utils import config + +logger = logging.getLogger(__name__) +logging.basicConfig( + level=logging.DEBUG, + format="%(levelname)-7s %(name)-30s %(funcName)-30s | %(message)s", + filename="cell2mol.log", + filemode="w", +) + +# Constants +COV_FACTOR = config.COV_FACTOR +METAL_FACTOR = config.METAL_FACTOR + + +# ----------------------------------------------------------------------------- +# Core function +# ----------------------------------------------------------------------------- +def interpret_molecule(input_path, name, input_charge, current_dir): + molec_fname = os.path.join(current_dir, f"Molecule_{name}.mol") + summary_molecule_fname = os.path.join(current_dir, "molecule_summary.txt") + + logger.info("cell2mol version %s", config.VERSION) + logger.info("Input XYZ: %s", input_path) + newmolec = None + + try: + try: + structure = read(input_path, format="xyz") + except (AssertionError, Exception) as e: + logger.error(f"ASE failed to parse {input_path}: {e}") + raise + labels = structure.get_chemical_symbols() + coords = structure.get_positions() + + blocklist = split_species( + labels, coords, cov_factor=COV_FACTOR, metal_factor=METAL_FACTOR + ) + logger.info("Number of molecules in xyz: %d", len(blocklist)) + + # --- sanity checks --- + if not blocklist: + logger.error("No molecule found in the input file.") + return None + + if len(blocklist) > 1: + logger.error("Input file includes more than one molecule. Stopping.") + if logger.isEnabledFor(logging.DEBUG): + for i, block in enumerate(blocklist): + block_labels = [labels[j] for j in block] + logger.debug( + "Found block %d: %s (%d atoms)", + i, + labels2formula(block_labels), + len(block_labels), + ) + return None + + # --- build molecule --- + newmolec = Molecule.from_positional(labels, coords) + newmolec.set_adjacency_parameters( + cov_factor=COV_FACTOR, metal_factor=METAL_FACTOR + ) + newmolec.set_atoms(create_adjacencies=True) + + # --- split complexes --- + if newmolec.iscomplex or newmolec.has_ia_iia: + logger.debug("Splitting complex: %s", newmolec.formula) + newmolec.split_complex() + elif newmolec.has_post_transition_metal: + logger.debug( + "Splitting post-transition metal complex: %s", newmolec.formula + ) + newmolec.split_complex(post_tms=True) + else: + newmolec.add_parent(newmolec, indices=list(range(newmolec.natoms))) + + newmolec.analyze_coordination() + # --- charge assignment --- + newmolec.input_charge = input_charge + if input_charge is None: + logger.info("No input charge provided.") + return newmolec + + logger.info("Assigning total charge: %d", input_charge) + newmolec.get_unique_species() + newmolec.get_selected_cs() + newmolec = balance_molecule_charge(newmolec, input_charge=input_charge) + newmolec.assess_errors() + if newmolec.error_case != 0: + logger.error("Error while balancing charges in the molecule.") + return newmolec + + newmolec.assign_charges() + newmolec.create_bonds() + newmolec.assess_errors() + if newmolec.error_case != 0: + logger.error("Error while assigning charges in the molecule.") + return newmolec + + newmolec.get_spin() + newmolec.assess_errors() + + return newmolec + + except Exception as err: + logger.error("interpret_molecule failed: %s", err) + logger.debug("Exception details", exc_info=True) + return newmolec + + finally: + # --- always save molecule --- + if newmolec is not None: + newmolec.save(molec_fname) + logger.info("Molecule saved to %s", molec_fname) + + # --- summary --- + with open(summary_molecule_fname, "w") as f: + print(name, file=f) + write_molecule_info(newmolec, file=f) + write_unique_species(newmolec, file=f) + write_possible_charges(newmolec, file=f) + print( + get_molecule_error_message(newmolec.error_case), + file=f, + ) + + +# ----------------------------------------------------------------------------- +# Main function +# ----------------------------------------------------------------------------- +def parse_args(): + parser = argparse.ArgumentParser( + description="Generate cell2mol Molecule object from XYZ file" + ) + + parser.add_argument( + "-i", + "--input", + dest="filepath", + type=str, + required=True, + help="Path to the input file (.xyz)", + ) + + parser.add_argument( + "--charge", + dest="charge", + type=int, + help="Total charge of a molecule in .xyz file", + ) + + parser.add_argument( + "--log-level", + default="INFO", + choices=["DEBUG", "INFO", "WARNING", "ERROR"], + help="Logging verbosity level", + ) + + return parser.parse_args() + + +def _main(): + args = parse_args() + + input_path = os.path.normpath(args.filepath) + name = os.path.splitext(os.path.basename(input_path))[0] + ext = os.path.splitext(args.filepath)[1].lower() + if ext != ".xyz": + raise ValueError("Invalid input file format. Only .xyz files are supported.") + + interpret_molecule( + input_path=input_path, + name=name, + input_charge=args.charge, + current_dir=os.getcwd(), + ) + + +if __name__ == "__main__": + _main() diff --git a/cell2mol/read_cif.py b/cell2mol/read_cif.py new file mode 100644 index 000000000..957b3588a --- /dev/null +++ b/cell2mol/read_cif.py @@ -0,0 +1,849 @@ +from pathlib import Path +import numpy as np +import re +import networkx as nx +import pandas as pd +from typing import Tuple, Dict +from collections import Counter +from cell2mol.elementdata import ElementData +from cell2mol.element_utils import ( + labels2formula, + get_alkali_alkaline_earth_metal_idxs, + TRANSITION_METALS, + ALKALI_METALS, + ALKALINE_EARTH_METALS, + LANTHANIDES, + ACTINIDES, + POST_TRANSITION_METALS, +) + +import logging + +elemdatabase = ElementData() +logger = logging.getLogger(__name__) + + +def detect_cif_issues(cif_file_path): + radical = False + disorder = False + notfound_atom = False + + with open(cif_file_path, "r") as ciffile: + file_content = ciffile.read() + if "radical" in file_content: + radical = True + elif "_atom_site_fract_x" not in file_content: + notfound_atom = True + elif "?" in file_content: + if ( + "_diffrn_ambient_temperature ?" not in file_content + and "_chemical_melting_point ?" not in file_content + ): + disorder = True + else: + num_greps = file_content.count("?") + if num_greps > 1: + disorder = True + + moiety_dicts = extract_moiety(cif_file_path) + if not moiety_dicts: + polymeric = False + else: + polymeric = any("n(" in moiety["formula"] for moiety in moiety_dicts) + + return radical, disorder, notfound_atom, polymeric + + +def prefilter_cif(cif_file_path): + """ + Pre-filters a CIF file to check for certain conditions. + Returns True if the file is ready for processing, otherwise returns False. + """ + # Check for radical, disorder, 3D fractional coordinates, and polymeric structure + radical, disorder, notfound_atom, polymeric = detect_cif_issues(cif_file_path) + + messages = [] + + if any([radical, disorder, notfound_atom, polymeric]): + if radical: + messages.append("Radical found in .cif file.") + if disorder: + messages.append("Disorder found in .cif file.") + if notfound_atom: + messages.append("No fractional coordinates found in .cif file.") + if polymeric: + messages.append("Polymeric structure found in .cif file.") + return False, "\n".join(messages) + else: + return True, "" + + +def get_geom_bond(cif_file_path): + """Get geometry bond information from a CIF file.""" + full_text = Path(cif_file_path).read_text() + loop_sections = re.split(r"\nloop_\n", full_text) + + geom_bond_data = [] + + for section in loop_sections: + lines = section.strip().splitlines() + if not lines: + continue + # === _geom_bond block === + if lines[0].startswith("_geom_bond"): + headers = [] + start_idx = -1 + + for i, line in enumerate(lines): + if line.strip().startswith("_geom_bond"): + headers.append(line.strip()) + else: + start_idx = i + break + + required = { + "_geom_bond_atom_site_label_1", + "_geom_bond_atom_site_label_2", + "_geom_bond_distance", + } + if not required.issubset(headers): + continue + + header_map = {h: idx for idx, h in enumerate(headers)} + for line in lines[start_idx:]: + if line.strip().startswith("_") or line.strip() == "loop_": + break + parts = line.split() + if len(parts) >= len(headers): + try: + atom_1 = parts[header_map["_geom_bond_atom_site_label_1"]] + atom_2 = parts[header_map["_geom_bond_atom_site_label_2"]] + dist = float(parts[header_map["_geom_bond_distance"]]) + geom_bond_data.append((atom_1, atom_2, dist)) + except (KeyError, ValueError, IndexError): + continue + + # --- Build connectivity graph and extract moieties --- + G = nx.Graph() + for atom1, atom2, _ in geom_bond_data: + G.add_edge(atom1, atom2) + + moieties = list(nx.connected_components(G)) + moiety_list = [sorted(list(group)) for group in moieties] + + # logger.debug("Bond data (first 5): %s", geom_bond_data[:5]) + # logger.debug("Moieties: %s", moiety_list) + + if geom_bond_data == []: + geom_bond_data = None + if moiety_list == []: + moiety_list = None + if geom_bond_data is None and moiety_list is None: + logger.info("No _geom_bond information found in CIF file.") + else: + logger.info( + "_geom_bond information found in CIF: %d bonds, %d moieties", + len(geom_bond_data) if geom_bond_data else 0, + len(moiety_list) if moiety_list else 0, + ) + return geom_bond_data, moiety_list + + +def get_wyckoff_positions(cif_file_path): + """Extract Wyckoff positions from a CIF file.""" + full_text = Path(cif_file_path).read_text() + loop_sections = re.split(r"\nloop_\n", full_text) + + atom_site_data = [] + + for section in loop_sections: + lines = section.strip().splitlines() + if not lines: + continue + + # === _atom_site block === + if lines[0].startswith("_atom_site"): + headers = [] + start_idx = -1 + + for i, line in enumerate(lines): + if line.strip().startswith("_atom_site"): + headers.append(line.strip()) + else: + start_idx = i + break + + required = { + "_atom_site_label", + "_atom_site_type_symbol", + "_atom_site_fract_x", + "_atom_site_fract_y", + "_atom_site_fract_z", + } + if not required.issubset(headers): + continue + + header_map = {h: idx for idx, h in enumerate(headers)} + + for line in lines[start_idx:]: + if line.strip().startswith("_") or line.strip() == "loop_": + break + parts = line.split() + if len(parts) >= len(headers): + try: + label = parts[header_map["_atom_site_label"]] + symbol = parts[header_map["_atom_site_type_symbol"]] + x = float(parts[header_map["_atom_site_fract_x"]].split("(")[0]) + y = float(parts[header_map["_atom_site_fract_y"]].split("(")[0]) + z = float(parts[header_map["_atom_site_fract_z"]].split("(")[0]) + atom_site_data.append((label, symbol, x, y, z)) + except (KeyError, ValueError, IndexError): + continue + + # --- Separate parsed data --- + atom_site_labels = [entry[0] for entry in atom_site_data] + ref_labels = [entry[1] for entry in atom_site_data] + ref_fracs = [[entry[2], entry[3], entry[4]] for entry in atom_site_data] + + UNSPECIFIED_MARKERS = ("?", "*") + + if any( + marker in (label or "") + for label in atom_site_labels + for marker in UNSPECIFIED_MARKERS + ): + logger.warning("Unspecified atoms found in Wyckoff positions.") + atom_site_labels, ref_labels, ref_fracs = remove_unspecified_atoms( + atom_site_labels, ref_labels, ref_fracs + ) + + return atom_site_labels, ref_labels, ref_fracs + + +def remove_unspecified_atoms(atom_site_labels, ref_labels, ref_fracs): + """ + Remove atoms with unspecified positions from the Wyckoff sites. + """ + + if not (len(atom_site_labels) == len(ref_labels) == len(ref_fracs)): + raise ValueError("Input lists must have the same length") + + UNSPECIFIED_MARKERS = ("?", "*") + + new_atom_site_labels = [] + new_ref_labels = [] + new_ref_fracs = [] + + for atom_site_label, ref_label, ref_frac in zip( + atom_site_labels, ref_labels, ref_fracs + ): + if any(marker in atom_site_label for marker in UNSPECIFIED_MARKERS): + logger.info( + "Removing unspecified atom: %s (%s)", + atom_site_label, + ref_label, + ) + else: + new_atom_site_labels.append(atom_site_label) + new_ref_labels.append(ref_label) + new_ref_fracs.append(ref_frac) + + return new_atom_site_labels, new_ref_labels, new_ref_fracs + + +def remove_unspecified_atoms(atom_site_labels, ref_labels, ref_fracs): + """ + Remove atoms with unspecified positions from the Wyckoff sites. + Args: + atom_site_labels (list): List of atom site labels + (e.g. ["O1", "H1", "H2"]). + ref_labels (list): List of reference labels + (e.g. ["O", "H", "H"]). + ref_fracs (list): List of fractional coordinates. + Returns: + tuple: Filtered lists of atom site labels, + reference labels, and fractional coordinates. + """ + + substring_to_remove = ["?", "*"] + + # Build new filtered lists + new_atom_site_labels = [] + new_ref_labels = [] + new_ref_fracs = [] + + for atom_site_label, ref_label, ref_frac in zip( + atom_site_labels, ref_labels, ref_fracs + ): + if any(sub in atom_site_label for sub in substring_to_remove): + logger.info(" Removing unspecified atom: %s", atom_site_label) + else: + new_atom_site_labels.append(atom_site_label) + new_ref_labels.append(ref_label) + new_ref_fracs.append(ref_frac) + + # Optionally overwrite originals + atom_site_labels = new_atom_site_labels + ref_labels = new_ref_labels + ref_fracs = new_ref_fracs + + return atom_site_labels, ref_labels, ref_fracs + + +def extract_moiety(file_path: str) -> list: + """Extracts the moiety information from a CIF file""" + uploaded_file_path = Path(file_path) + with uploaded_file_path.open("r", encoding="utf-8") as file: + cif_data_uploaded = file.read() + if "_chemical_formula_moiety" in cif_data_uploaded: + # Extract the moiety block + moiety_match_uploaded = re.search( + r"_chemical_formula_moiety\s*;\s*(.*?)\s*;", cif_data_uploaded, re.DOTALL + ) + moiety_string_uploaded = ( + moiety_match_uploaded.group(1) if moiety_match_uploaded else "" + ) + + # # Split and parse moieties + moieties_uploaded = moiety_string_uploaded.split(",") + moieties_uploaded = [moiety.replace("\n", "") for moiety in moieties_uploaded] + moiety_tuples = [parse_moiety(m.strip()) for m in moieties_uploaded] + moiety_dicts = [ + {"formula": f, "ratio": s, "charge": c, "type": t} + for f, s, c, t in moiety_tuples + ] + else: + return None + return moiety_dicts + + +def combine_formulas(formulas, ratios=None): + """ + Sum element counts across a list of formula strings. + If ratios is provided, multiply each formula's counts by the corresponding ratio. + Returns a dict {element: float_count}. + """ + if ratios is None: + ratios = [1.0] * len(formulas) + if len(ratios) != len(formulas): + return None + # raise ValueError("ratios and formulas must have the same length") + if any(not isinstance(r, (int, float)) for r in ratios): + return None + # raise ValueError("ratios contains non-float values") + total = Counter() + for f, r in zip(formulas, ratios): + c = parse_formula_string(f) + for el, n in c.items(): + total[el] += n * float(r) + # Convert to plain dict of floats + return {el: float(n) for el, n in total.items()} + + +def compare_totals(cif_totals: dict, ref_totals: dict, atol=1e-8): + """ + Build a comparison DataFrame with CIF totals, Refcell totals, and Delta = CIF - Ref. + Also returns whether all elements match within the tolerance. + """ + elements = sorted(set(cif_totals) | set(ref_totals)) + rows = [] + all_ok = True + for el in elements: + cif_val = cif_totals.get(el, 0.0) + ref_val = ref_totals.get(el, 0.0) + delta = cif_val - ref_val + ok = abs(delta) <= atol + all_ok = all_ok and ok + rows.append( + { + "Element": el, + "CIF_total": cif_val, + "Refcell_total": ref_val, + "Delta (CIF-Ref)": delta, + "OK": ok, + } + ) + df = pd.DataFrame(rows) + return df, all_ok + + +def parse_formula_string(formula_str: str) -> Counter: + # One lowercase letter max (Cl, Ti, Fe, etc.) + tokens = re.findall(r"([A-Z][a-z]?)(\d*)", formula_str) + # tokens = re.findall(r'([A-Z][a-z]*)(\d*)', formula_str) + return Counter({el: int(cnt) if cnt else 1 for el, cnt in tokens}) + + +def formula_diff_dict(f1: str, f2: str) -> dict: + c1 = parse_formula_string(f1) + c2 = parse_formula_string(f2) + all_elements = set(c1) | set(c2) + return {el: abs(c1[el] - c2[el]) for el in all_elements if c1[el] != c2[el]} + + +def _nonH_signature(counter: Counter): + # Canonical signature ignoring hydrogens (order-independent) + return tuple(sorted((el, cnt) for el, cnt in counter.items() if el != "H")) + + +def find_closest_matches(reference, target): + # Pre-parse targets once + parsed_targets = [(tgt, parse_formula_string(tgt)) for tgt in target] + matches = {} + + for i, ref in enumerate(reference): + c_ref = parse_formula_string(ref) + + # 1) Exact match on full composition + for tgt, c_tgt in parsed_targets: + if c_tgt == c_ref: + matches[i] = {"ref": ref, "match": tgt, "diff_dict": {}} + break + else: + # 2) H-insensitive signature match (same non-H composition) + sig_ref = _nonH_signature(c_ref) + hinsensitive = [ + (tgt, c_tgt) + for tgt, c_tgt in parsed_targets + if _nonH_signature(c_tgt) == sig_ref + ] + + if hinsensitive: + # Choose the one with minimal |ΔH| + best_tgt, best_ct = min( + hinsensitive, + key=lambda x: abs(x[1].get("H", 0) - c_ref.get("H", 0)), + ) + matches[i] = { + "ref": ref, + "match": best_tgt, + "diff_dict": formula_diff_dict(ref, best_tgt), + } + else: + # 3) Weighted fallback: penalize non-H strongly, H lightly + def weighted_score(c_tgt: Counter): + elems = set(c_ref) | set(c_tgt) + score = 0.0 + for el in elems: + diff = abs(c_ref.get(el, 0) - c_tgt.get(el, 0)) + if el == "H": + score += 0.1 * diff # hydrogens are cheap + else: + score += 10.0 * diff # non-H differences matter a lot + return score + + best_tgt, best_ct = min( + parsed_targets, key=lambda x: weighted_score(x[1]) + ) + matches[i] = { + "ref": ref, + "match": best_tgt, + "diff_dict": formula_diff_dict(ref, best_tgt), + } + + return matches + + +def extract_chemical_name(cif_file_path, tag="_chemical_name_systematic"): + try: + with open(cif_file_path, "r", encoding="utf-8") as f: + lines = f.readlines() + except FileNotFoundError: + logger.error("File not found: %s", cif_file_path) + return None + + i = 0 + n = len(lines) + while i < n: + line = lines[i] + if line.lstrip().startswith(tag): + # Try to get value on the same line: e.g., + # _chemical_name_systematic 'Some name' + after = line.split(tag, 1)[1].strip() + if after: # value is on same line + # strip matching quotes if present + if (after[0] in "'\"" and after[-1:] == after[0]) and len(after) >= 2: + val = after[1:-1] + else: + val = after + # normalize whitespace + return " ".join(val.split()) + + # Otherwise value should be on following lines + i += 1 + # Expect a semicolon in column 1 starting the text block + if i < n and lines[i].startswith(";"): + i += 1 + buf = [] + while i < n: + # End of block only if semicolon is in column 1 + if lines[i].startswith(";"): + break + # Keep exact line content except trailing newline + buf.append(lines[i].rstrip("\n")) + i += 1 + # Join without forcing spaces between lines, then normalize + text = "".join(buf) + # Collapse any excessive whitespace to single spaces + text = " ".join(text.split()) + return text or None + else: + # Fallback: next non-empty line is the value (rare but possible) + while i < n and not lines[i].strip(): + i += 1 + if i < n: + val = lines[i].strip() + return " ".join(val.split()) if val else None + return None + i += 1 + return None + + +def extract_metal_oxidation_state(chemical_name): + oxidation_states = [] + + # Regex pattern to capture any format like "iron(iii)" + pattern = r"(\b[a-zA-Z-]+\b)\((iii|ii|iv|v|vi|vii|viii|ix|x|i|0|o)\)" + + matches = re.findall(pattern, chemical_name, re.IGNORECASE) + for metal, ox_state in matches: + ox_state_map = { + "0": 0, + "o": 0, + "i": 1, + "ii": 2, + "iii": 3, + "iv": 4, + "v": 5, + "vi": 6, + "vii": 7, + "viii": 8, + "ix": 9, # [IrO4]+ + "x": 10, # theoretically possible + } + oxidation_state = ox_state_map.get( + ox_state.lower(), ox_state + ) # Retain text if needed + oxidation_states.append((metal, oxidation_state)) + + if not oxidation_states: + return None + return oxidation_states + + +def parse_moiety(moiety: str) -> Tuple[str, float, int, str]: + """Parse a moiety string and return its formula, ratio (float), charge, and type""" + # Default values + ratio = 1.0 + formula_with_charge = moiety.strip() + + # Handle 'x(' + x_match = re.match(r"^[^\d\W]\w*\((.*?)\)$", moiety) + if x_match: + formula_with_charge = x_match.group(1) + ratio = "" + + # Check for ratio in the unit cell with parentheses, e.g., 0.5(...) or 2(...) + match = re.match(r"([0-9\.]+)\((.*?)\)", moiety) + if match: + ratio = float(match.group(1)) + formula_with_charge = match.group(2) + + # Extract charge at the end, e.g., "1+", "2-" + charge_match = re.search(r"(\d+[+-])$", formula_with_charge) + if charge_match: + charge_str = charge_match.group(1) + charge = int(charge_str[:-1]) * (1 if charge_str[-1] == "+" else -1) + formula = formula_with_charge.replace(charge_str, "").strip() + else: + charge = 0 + formula = formula_with_charge.strip() + + # Check if it contains any transition metal + is_complex = any(re.search(rf"{metal}\d*", formula) for metal in TRANSITION_METALS) + compound_type = "complex" if is_complex else "molecule" + + return (formula, ratio, charge, compound_type) + + +def cifformula_to_list(formula: str) -> list: + # Match element symbols with optional numbers (e.g., 'C4', 'H2', 'N1') + tokens = re.findall(r"([A-Z][a-z]*)(\d*)", formula) + result = [] + for element, count in tokens: + n = int(count) if count else 1 + result.extend([element] * n) + return result + + +def classify_metals(formula: str) -> Dict[str, Dict[str, int]]: + # Initialize category results + result = { + "transition_metals": {}, + "alkali_metals": {}, + "alkaline_earth_metals": {}, + "post_transition_metals": {}, + "lanthanides": {}, + "actinides": {}, + } + + # Split and parse + parts = formula.strip().split() + for part in parts: + match = re.match(r"([A-Z][a-z]*)(\d*)", part) + if match: + element = match.group(1) + count = int(match.group(2)) if match.group(2) else 1 + + if element in TRANSITION_METALS: + result["transition_metals"][element] = ( + result["transition_metals"].get(element, 0) + count + ) + elif element in ALKALI_METALS: + result["alkali_metals"][element] = ( + result["alkali_metals"].get(element, 0) + count + ) + elif element in ALKALINE_EARTH_METALS: + result["alkaline_earth_metals"][element] = ( + result["alkaline_earth_metals"].get(element, 0) + count + ) + elif element in POST_TRANSITION_METALS: + result["post_transition_metals"][element] = ( + result["post_transition_metals"].get(element, 0) + count + ) + elif element in LANTHANIDES: + result["lanthanides"][element] = ( + result["lanthanides"].get(element, 0) + count + ) + elif element in ACTINIDES: + result["actinides"][element] = ( + result["actinides"].get(element, 0) + count + ) + + return result + + +def metal_info(moiety_dicts: list) -> dict: + """ + Extracts metal information from moiety dictionaries. + """ + metal_data = {} + for moiety in moiety_dicts: + formula = moiety["formula"] + ratio = moiety["ratio"] + charge = moiety["charge"] + compound_type = moiety["type"] + + # Classify metals + classified_metals = classify_metals(formula) + metal_data[formula] = { + "ratio": ratio, + "charge": charge, + "type": compound_type, + "classified_metals": classified_metals, + } + return metal_data + + +def flatten_metal_info(metal_info_dict, refcode): + flat_list = [] + + for i, (formula, info) in enumerate(metal_info_dict.items()): + base = { + "refcode": refcode, # Placeholder for refcode + "index": i, + "formula": formula, + "ratio": info["ratio"], + "charge": info["charge"], + "type": info["type"], + } + + found = False + classified = info["classified_metals"] + for category, elements in classified.items(): + for element, count in elements.items(): + row = base.copy() + row["metal_category"] = category + row["metal"] = element + row["count"] = count + flat_list.append(row) + found = True + + if not found: + row = base.copy() + row["metal_category"] = None + row["metal"] = None + row["count"] = 0 + flat_list.append(row) + + return flat_list + + +def extract_info_from_cif(cif_file_path): + """Extract chemical name, metal oxidation state, and moiety information from the CIF file.""" + + chemical_name = extract_chemical_name(cif_file_path) + if chemical_name is None: + reported_metal_os = None + logger.info("No _chemical_name_systematic found in CIF") + logger.info("No metal oxidation state reported in CIF") + else: + reported_metal_os = extract_metal_oxidation_state(chemical_name) + logger.info("_chemical_name_systematic in CIF: %s", chemical_name) + logger.info("Reported oxidation states in CIF: %s", reported_metal_os) + + moiety_dicts = extract_moiety(cif_file_path) + if moiety_dicts is None: + logger.info("No moiety information found in CIF") + else: + logger.info( + "Number of moieties extracted from CIF: %d", + len(moiety_dicts) if moiety_dicts else 0, + ) + logger.debug("Moiety dictionaries:") + for i, moiety in enumerate(moiety_dicts): + logger.debug(" %d: %s", i, moiety) + + return chemical_name, reported_metal_os, moiety_dicts + + +def get_cell_atoms(structure): + """Extracts atom labels, positions, and fractional coordinates from ase.Atoms object.""" + wrap_keywords = {"pbc": True, "center": (0.5, 0.5, 0.5)} + cell_labels = [] + for label, n, m in zip( + structure.get_chemical_symbols(), + structure.get_atomic_numbers(), + structure.get_masses(), + ): + if n == 1 and (m > 2 or m == 2.01355): # Deuterium + cell_labels.append("D") + else: + cell_labels.append(label) + + cell_pos = structure.get_positions(wrap=True, **wrap_keywords) + cell_fracs = structure.get_scaled_positions() + cell_pos = cell_pos.tolist() + cell_fracs = cell_fracs.tolist() + + return cell_labels, cell_pos, cell_fracs + + +def get_cell_parameters(structure): + """Extracts cell parameters and symmetry operations from ase.Atoms object.""" + + cell_vector = structure.cell.array + cell_param = structure.cell.cellpar() + space_group = structure.info.get("spacegroup") + sym_ops = space_group.get_op() if space_group else None + + return cell_vector, cell_param, sym_ops + + +def compare_cif_with_reference(moiety_dicts, refmoleclist): + """Compare reference molecules with chemical name, + metal oxidation state, and moiety information extracted from the CIF file.""" + + # Default value + disagree_with_cif_formula = None + + if not moiety_dicts: + logger.info("No _chemical_formula_moiety information found in the CIF file.") + return disagree_with_cif_formula + if not refmoleclist: + logger.info("No reference molecules found in the refcell.") + return disagree_with_cif_formula + + formulas_from_refcell = [ref.formula for ref in refmoleclist] + + formulas_from_cif = [ + labels2formula(cifformula_to_list(moiety["formula"])) for moiety in moiety_dicts + ] + ratios_from_cif = [moiety["ratio"] for moiety in moiety_dicts] + charges_from_cif = [moiety["charge"] for moiety in moiety_dicts] + matches = find_closest_matches(formulas_from_refcell, formulas_from_cif) + + logger.debug("Formulas from CIF: %s", formulas_from_cif) + logger.debug("Ratios from CIF: %s", ratios_from_cif) + logger.debug("Charges from CIF: %s", charges_from_cif) + logger.debug("Formulas from refcell: %s", formulas_from_refcell) + + disagree_with_cif = [] + for ref_idx, info in matches.items(): + ref = refmoleclist[ref_idx] + + if len(info["diff_dict"]) == 0: + logger.debug( + "%s %s: Exact match found. %s", ref_idx, info["ref"], info["match"] + ) + try: + cif_idx = formulas_from_cif.index(info["match"]) + ref.totcharge_cif = charges_from_cif[cif_idx] + except ValueError: + logger.warning( + "Failed to assign charge to refcell molecule %s matched with CIF %s", + info["ref"], + info["match"], + ) + else: + logger.debug( + "%s %s: Closest match found. %s with difference of %s", + ref_idx, + info["ref"], + info["match"], + info["diff_dict"], + ) + alkali_idxs = get_alkali_alkaline_earth_metal_idxs( + list(info["diff_dict"].keys()) + ) + if alkali_idxs: + logger.warning( + "%s %s: Discrepancy due to alkali/alkaline earth metals.", + ref_idx, + info["ref"], + ) + disagree_with_cif.append(ref_idx) + + if disagree_with_cif: + logger.info("Discrepancies found between refcell and CIF") + logger.info("This will cause errors in the charge prediction!") + disagree_with_cif_formula = True + + try: + cif_totals = combine_formulas(formulas_from_cif, ratios_from_cif) + if cif_totals is not None: + ref_totals = combine_formulas(formulas_from_refcell) + df_compare, all_match = compare_totals( + cif_totals, ref_totals, atol=1e-9 + ) + if not all_match: + logger.info("Element totals differ between refcell and CIF") + # logger.debug("Element comparison table:\n%s", df_compare.to_string()) + logger.debug("Element comparison (CIF vs refcell):") + logger.debug(" Element CIF Refcell Delta OK") + logger.debug(" ---------------------------------------") + for _, row in df_compare.iterrows(): + logger.debug( + " %-8s %6.1f %9.1f %7.1f %s", + row["Element"], + row["CIF_total"], + row["Refcell_total"], + row["Delta (CIF-Ref)"], + row["OK"], + ) + logger.debug("Possible causes of discrepancies:") + logger.debug( + " - Missing atoms in the crystal structure (CIF moiety mismatch)" + ) + logger.debug( + " - Connectivity changes due to different adjacency matrices" + ) + except Exception: + logger.warning( + "Can not calculate element totals from CIF. This may be due to non-float ratios in moieties in CIF." + ) + else: + logger.info("No discrepancies found between formulas from refcell and CIF.") + disagree_with_cif_formula = False + + return disagree_with_cif_formula diff --git a/cell2mol/read_write.py b/cell2mol/read_write.py deleted file mode 100755 index 4c61f215f..000000000 --- a/cell2mol/read_write.py +++ /dev/null @@ -1,1131 +0,0 @@ -#!/usr/bin/env python - -import numpy as np -import pickle -import sys -import re -from collections import defaultdict -import os -import traceback -from typing import Tuple -from collections import Counter -from ase.io import read -from pathlib import Path -from typing import Dict -import pandas as pd -import networkx as nx - -transition_metals = { - 'Sc', 'Ti', 'V', 'Cr', 'Mn', 'Fe', 'Co', 'Ni', 'Cu', 'Zn', - 'Y', 'Zr', 'Nb', 'Mo', 'Tc', 'Ru', 'Rh', 'Pd', 'Ag', 'Cd', - 'Hf', 'Ta', 'W', 'Re', 'Os', 'Ir', 'Pt', 'Au', 'Hg' -} - -####################### -def screening_cif(cif_file_path): - - radical = False - disorder = False - notfound_atom = False - - with open(cif_file_path, 'r') as ciffile: - file_content = ciffile.read() - if 'radical' in file_content: - radical = True - elif '_atom_site_fract_x' not in file_content: - notfound_atom = True - elif '?' in file_content: - if "_diffrn_ambient_temperature ?" not in file_content and "_chemical_melting_point ?" not in file_content: - disorder = True - else: - num_greps = file_content.count('?') - if num_greps > 1: - disorder = True - - moiety_dicts = extract_moiety(cif_file_path) - polymeric = any("n(" in moiety['formula'] for moiety in moiety_dicts) - - return radical, disorder, notfound_atom, polymeric - -################# -def prefilter_cif(input_path): - """ - Pre-filters a CIF file to check for certain conditions. - Returns True if the file is ready for processing, otherwise returns False. - """ - # Check for radical, disorder, 3D fractional coordinates, and polymeric structure - radical, disorder, notfound_atom, polymeric = screening_cif(input_path) - - message = "" - - if any([radical, disorder, notfound_atom, polymeric]): - #print(f"{radical=}, {disorder=}, {notfound_atom=}, {polymeric=}") - if radical: - message += "\nRadical found in .cif file." - if disorder: - message += "\nDisorder found in .cif file." - if notfound_atom: - message += "\nNo fractional coordinates found in .cif file." - if polymeric: - message += "\nPolymeric structure found in .cif file." - return False, message - else : - print("Cif file is ready for processing") - return True, message - -####################### -def get_wyckoff_positions_old (file_path): - # Open and read the CIF file - with open(file_path, 'r') as file: - lines = file.readlines() - - # Flags and storage for parsing - start_parsing = False - data = [] - - # Iterate through each line - for line in lines: - # Check if line contains the loop declaration for atomic sites - if '_atom_site_fract_z' in line: - start_parsing = True - continue - - # Stop parsing if another loop starts or if data is done - if 'loop_' in line and start_parsing: - break - - # Parse the atomic position data - if start_parsing: - if line.strip(): # Check for non-empty line - parts = line.split() - if len(parts) >= 4: # Ensure there are enough parts to parse - # Clean and extract the coordinates before parentheses - x = parts[2].split('(')[0] - y = parts[3].split('(')[0] - z = parts[4].split('(')[0] - # Append label, type, and cleaned fractional coordinates - data.append((parts[0], parts[1], float(x), float(y), float(z))) - - ref_labels = [entry[1] for entry in data] - ref_fracs = [[entry[2], entry[3], entry[4]] for entry in data] - - # print(f"{len(ref_labels)=} {ref_labels}=") - # print(f"{len(ref_fracs)=} {ref_fracs}=") - - return ref_labels, ref_fracs -####################### -def get_geom_bond (file_path): - full_text = Path(file_path).read_text() - loop_sections = re.split(r'\nloop_\n', full_text) - - geom_bond_data = [] - - for section in loop_sections: - lines = section.strip().splitlines() - if not lines: - continue - # === _geom_bond block === - if lines[0].startswith('_geom_bond'): - headers = [] - start_idx = -1 - - for i, line in enumerate(lines): - if line.strip().startswith('_geom_bond'): - headers.append(line.strip()) - else: - start_idx = i - break - - required = {'_geom_bond_atom_site_label_1', - '_geom_bond_atom_site_label_2', - '_geom_bond_distance'} - if not required.issubset(headers): - continue - - header_map = {h: idx for idx, h in enumerate(headers)} - # print("Bond header map:", header_map) - - for line in lines[start_idx:]: - if line.strip().startswith('_') or line.strip() == 'loop_': - break - parts = line.split() - if len(parts) >= len(headers): - try: - atom_1 = parts[header_map['_geom_bond_atom_site_label_1']] - atom_2 = parts[header_map['_geom_bond_atom_site_label_2']] - dist = float(parts[header_map['_geom_bond_distance']]) - geom_bond_data.append((atom_1, atom_2, dist)) - except (KeyError, ValueError, IndexError): - continue - - # --- Build connectivity graph and extract moieties --- - G = nx.Graph() - for atom1, atom2, _ in geom_bond_data: - G.add_edge(atom1, atom2) - - moieties = list(nx.connected_components(G)) - moiety_list = [sorted(list(group)) for group in moieties] - - # print("Bond data (first 5):", geom_bond_data[:5]) - # print("Moieties:", moiety_list) - - return geom_bond_data, moiety_list - -###################### -def get_wyckoff_positions (file_path): - - full_text = Path(file_path).read_text() - loop_sections = re.split(r'\nloop_\n', full_text) - - atom_site_data = [] - - for section in loop_sections: - lines = section.strip().splitlines() - if not lines: - continue - - # === _atom_site block === - if lines[0].startswith('_atom_site'): - headers = [] - start_idx = -1 - - for i, line in enumerate(lines): - if line.strip().startswith('_atom_site'): - headers.append(line.strip()) - else: - start_idx = i - break - - required = {'_atom_site_label', '_atom_site_type_symbol', - '_atom_site_fract_x', '_atom_site_fract_y', '_atom_site_fract_z'} - if not required.issubset(headers): - continue - - header_map = {h: idx for idx, h in enumerate(headers)} - #print("Atom site header map:", header_map) - - for line in lines[start_idx:]: - if line.strip().startswith('_') or line.strip() == 'loop_': - break - parts = line.split() - if len(parts) >= len(headers): - try: - label = parts[header_map['_atom_site_label']] - symbol = parts[header_map['_atom_site_type_symbol']] - x = float(parts[header_map['_atom_site_fract_x']].split('(')[0]) - y = float(parts[header_map['_atom_site_fract_y']].split('(')[0]) - z = float(parts[header_map['_atom_site_fract_z']].split('(')[0]) - atom_site_data.append((label, symbol, x, y, z)) - except (KeyError, ValueError, IndexError): - continue - - # --- Separate parsed data --- - atom_site_labels = [entry[0] for entry in atom_site_data] - ref_labels = [entry[1] for entry in atom_site_data] - ref_fracs = [[entry[2], entry[3], entry[4]] for entry in atom_site_data] - - # --- Preview output --- - # print("Atom site data (first 5):", atom_site_data[:5]) - # print("Atom labels:", atom_site_labels[:5]) - # print("Element types:", ref_labels[:5]) - # print("Fractional coords:", ref_fracs[:5]) - - return atom_site_labels, ref_labels, ref_fracs - -################## -def get_moiety_indices_from_labels(atom_site_labels, moiety_list): - - flat_list = [atom for moiety in moiety_list for atom in moiety] - - atom_site_labels = np.array(atom_site_labels) # ensure it's a numpy array - moiety_indices = [ - np.where(np.isin(atom_site_labels, moiety))[0].tolist() - for moiety in moiety_list - ] - for i, atom in enumerate(atom_site_labels): - if atom not in flat_list: - moiety_indices.append([i]) - - return moiety_indices - -####################### -def exit_with_error_input(message): - """Logs the error message to a file and exits the program.""" - error_log_path = os.path.join(os.getcwd(), "error_input.out") - with open(error_log_path, "w") as error_log: - error_log.write(f"Error: {message}\n") - sys.exit(message) - -####################### -def exit_with_error_exception(e): - """Logs the error details to a file and exits the program.""" - error_details = traceback.format_exc() - error_log_path = os.path.join(os.getcwd(), f"error_{type(e).__name__}.out") - - # Write the full error details to the log file - with open(error_log_path, "w") as error_log: - error_log.write(f"Error message: {type(e).__name__} - {str(e)}\n") - error_log.write(f"Error details:\n{error_details}") - - # Print the error details to the console - print(f"An error occurred. Details have been logged to {error_log_path}") - print(f"Error details:\n{error_details}") - - sys.exit(e) -####################### -# Helper to convert string like "H13-C5-N2" to Counter {'H':13, 'C':5, 'N':2} -def parse_formula_string(formula_str): - tokens = re.findall(r'([A-Z][a-z]*)(\d*)', formula_str) - return Counter({el: int(cnt) if cnt else 1 for el, cnt in tokens}) - -def formula_diff_dict(f1, f2): - c1 = parse_formula_string(f1) - c2 = parse_formula_string(f2) - all_elements = set(c1) | set(c2) - diff = {el: abs(c1[el] - c2[el]) for el in all_elements if c1[el] != c2[el]} - return diff - -def find_closest_matches(reference, target): - matches = {} - for i, ref in enumerate(reference): - if ref in target: - matches[i] = {'ref': ref, 'match': ref, 'diff_dict': {}} - else: - diffs = [(tgt, formula_diff_dict(ref, tgt)) for tgt in target] - # Select the one with the smallest total difference - best_match, best_diff = min(diffs, key=lambda x: sum(x[1].values())) - matches[i] = {'ref': ref, 'match': best_match, 'diff_dict': best_diff} - return matches -####################### -def extract_chemical_name(file_path): - try: - with open(file_path, 'r') as file: - start_reading = False - chemical_name = "" - - for line in file: - # Check for line starting with '_chemical_name_systematic' - if line.startswith('_chemical_name_systematic'): - start_reading = True - continue - - if start_reading: - chemical_name += line.strip() - - if chemical_name.count(';') >= 2: - # Extract content between the first and second ';' - # Reformat without extra line breaks or extra spaces - chemical_name = ' '.join(chemical_name.split(';')[1].strip().split()) - break - - return chemical_name - - except FileNotFoundError: - print(f"File not found: {file_path}") - return None - -####################### -def extract_metal_oxidation_state(chemical_name): - - oxidation_states = [] - - # Regex pattern to capture any format like "iron(iii)" - pattern = r'(\b[a-zA-Z-]+\b)\((iii|ii|iv|v|vi|vii|i|0|o)\)' - - matches = re.findall(pattern, chemical_name, re.IGNORECASE) - for metal, ox_state in matches: - ox_state_map = {'0': 0, 'o': 0, 'i': 1, 'ii': 2, 'iii': 3, 'iv': 4, 'v': 5, 'vi': 6, 'vii': 7} - oxidation_state = ox_state_map.get(ox_state.lower(), ox_state) # Retain text if needed - oxidation_states.append((metal, oxidation_state)) - - return oxidation_states - -####################### -def parse_moiety(moiety: str) -> Tuple[str, float, int, str]: - """ Parse a moiety string and return its formula, ratio (float), charge, and type """ - # Default values - ratio = 1.0 - formula_with_charge = moiety.strip() - - # Handle 'x(' - x_match = re.match(r"^[^\d\W]\w*\((.*?)\)$", moiety) - if x_match: - formula_with_charge = x_match.group(1) - ratio = "" - - # Check for ratio in the unit cell with parentheses, e.g., 0.5(...) or 2(...) - match = re.match(r"([0-9\.]+)\((.*?)\)", moiety) - if match: - ratio = float(match.group(1)) - formula_with_charge = match.group(2) - - # Extract charge at the end, e.g., "1+", "2-" - charge_match = re.search(r'(\d+[+-])$', formula_with_charge) - if charge_match: - charge_str = charge_match.group(1) - charge = int(charge_str[:-1]) * (1 if charge_str[-1] == '+' else -1) - formula = formula_with_charge.replace(charge_str, '').strip() - else: - charge = 0 - formula = formula_with_charge.strip() - - # Check if it contains any transition metal - is_complex = any(re.search(rf'{metal}\d*', formula) for metal in transition_metals) - compound_type = "complex" if is_complex else "molecule" - - return (formula, ratio, charge, compound_type) - -################################ -def cifformula_to_list(formula: str) -> list: - # Match element symbols with optional numbers (e.g., 'C4', 'H2', 'N1') - tokens = re.findall(r'([A-Z][a-z]*)(\d*)', formula) - result = [] - for element, count in tokens: - n = int(count) if count else 1 - result.extend([element] * n) - return result - -######################### -def extract_moiety(file_path: str) -> list: - """ Extracts the moiety information from a CIF file """ - uploaded_file_path = Path(file_path) - with uploaded_file_path.open("r", encoding="utf-8") as file: - cif_data_uploaded = file.read() - try: - # Extract the moiety block - moiety_match_uploaded = re.search(r"_chemical_formula_moiety\s*;\s*(.*?)\s*;", cif_data_uploaded, re.DOTALL) - moiety_string_uploaded = moiety_match_uploaded.group(1) if moiety_match_uploaded else "" - - # # Split and parse moieties - moieties_uploaded = moiety_string_uploaded.split(',') - moieties_uploaded = [moiety.replace('\n', '') for moiety in moieties_uploaded] - - moiety_tuples = [parse_moiety(m.strip()) for m in moieties_uploaded] - moiety_dicts = [ {'formula': f, 'ratio': s, 'charge': c, 'type': t} for f, s, c, t in moiety_tuples ] - - # print("moiety_dicts=",moiety_dicts) - except: - print("Error parsing moiety information from CIF file.") - moiety_dicts = [] - return moiety_dicts - -########################## -def classify_metals(formula: str) -> Dict[str, Dict[str, int]]: - # Define categories - transition_metals = { - 'Sc', 'Ti', 'V', 'Cr', 'Mn', 'Fe', 'Co', 'Ni', 'Cu', 'Zn', - 'Y', 'Zr', 'Nb', 'Mo', 'Tc', 'Ru', 'Rh', 'Pd', 'Ag', 'Cd', - 'Hf', 'Ta', 'W', 'Re', 'Os', 'Ir', 'Pt', 'Au', 'Hg' - } - - alkali_metals = {'Li', 'Na', 'K', 'Rb', 'Cs', 'Fr'} - alkaline_earth_metals = {'Be', 'Mg', 'Ca', 'Sr', 'Ba', 'Ra'} - - post_transition_metals = { - 'Al', 'Ga', 'Ge', 'In', 'Sn', 'Tl', 'Pb', 'Bi' - } - - lanthanides = { - 'La', 'Ce', 'Pr', 'Nd', 'Pm', 'Sm', 'Eu', 'Gd', 'Tb', 'Dy', - 'Ho', 'Er', 'Tm', 'Yb', 'Lu' - } - - actinides = { - 'Ac', 'Th', 'Pa', 'U', 'Np', 'Pu', 'Am', 'Cm', 'Bk', 'Cf', - 'Es', 'Fm', 'Md', 'No', 'Lr' - } - - # Initialize category results - result = { - 'transition_metals': {}, - 'alkali_metals': {}, - 'alkaline_earth_metals': {}, - 'post_transition_metals': {}, - 'lanthanides': {}, - 'actinides': {} - } - - # Split and parse - parts = formula.strip().split() - for part in parts: - match = re.match(r"([A-Z][a-z]*)(\d*)", part) - if match: - element = match.group(1) - count = int(match.group(2)) if match.group(2) else 1 - - if element in transition_metals: - result['transition_metals'][element] = result['transition_metals'].get(element, 0) + count - elif element in alkali_metals: - result['alkali_metals'][element] = result['alkali_metals'].get(element, 0) + count - elif element in alkaline_earth_metals: - result['alkaline_earth_metals'][element] = result['alkaline_earth_metals'].get(element, 0) + count - elif element in post_transition_metals: - result['post_transition_metals'][element] = result['post_transition_metals'].get(element, 0) + count - elif element in lanthanides: - result['lanthanides'][element] = result['lanthanides'].get(element, 0) + count - elif element in actinides: - result['actinides'][element] = result['actinides'].get(element, 0) + count - - return result - -########################## -def metal_info (moiety_dicts: list) -> dict: - """ - Extracts metal information from moiety dictionaries. - """ - metal_data = {} - for moiety in moiety_dicts: - formula = moiety['formula'] - ratio = moiety['ratio'] - charge = moiety['charge'] - compound_type = moiety['type'] - - # Classify metals - classified_metals = classify_metals(formula) - metal_data[formula] = { - 'ratio': ratio, - 'charge': charge, - 'type': compound_type, - 'classified_metals': classified_metals - } - return metal_data - -########################## -def flatten_metal_info(metal_info_dict, refcode): - flat_list = [] - - for i, (formula, info) in enumerate(metal_info_dict.items()): - base = { - 'refcode': refcode, # Placeholder for refcode - 'index': i, - 'formula': formula, - 'ratio': info['ratio'], - 'charge': info['charge'], - 'type': info['type'] - } - - found = False - classified = info['classified_metals'] - for category, elements in classified.items(): - for element, count in elements.items(): - row = base.copy() - row['metal_category'] = category - row['metal'] = element - row['count'] = count - flat_list.append(row) - found = True - - if not found: - row = base.copy() - row['metal_category'] = None - row['metal'] = None - row['count'] = 0 - flat_list.append(row) - - return flat_list - -########################## -def compare_formula_xyz_vs_cif(xyzfile: str, formula_str_from_cif: str) -> dict: - """ - Compare the elements from CIF with the elements in the XYZ file. - """ - element_pattern = r'([A-Z][a-z]*)(\d*)' - parsed_formula_cif = dict() - for (element, count) in re.findall(element_pattern, formula_str_from_cif): - parsed_formula_cif[element] = int(count) if count else 1 - mol = read(xyzfile) - element_list = mol.get_chemical_symbols() - element_list_count = dict(Counter(element_list)) - comparison_result = { - 'in_formula_cif': parsed_formula_cif, - 'in_list_xyz': element_list_count, - 'missing_in_xyz': {k: v-element_list_count.get(k, 0) for k, v in parsed_formula_cif.items() if element_list_count.get(k, 0) < v}, - 'extra_in_xyz': {k: v-parsed_formula_cif.get(k, 0) for k, v in element_list_count.items() if parsed_formula_cif.get(k, 0) < v} - } - return comparison_result - -####################### -def save_binary(variable, pathfile, backup: bool=False): - try: - file = open(pathfile,'wb') - pickle.dump(variable,file) - file.close() - except Exception as exc: - print("Error Saving Binary for pathfile:", pathfile) - print(exc) - -####################### -def load_binary(pathfile): - with open(pathfile, "rb") as pickle_file: - binary = pickle.load(pickle_file) - return binary - -############## -def readxyz(file): - labels = [] - pos = [] - xyz = open(file, "r") - n_atoms = xyz.readline() - title = xyz.readline() - for line in xyz: - line_data = line.split() - if len(line_data) == 4: - label, x, y, z = line.split() - pos.append([float(x), float(y), float(z)]) - labels.append(label) - else: - print("I can't read the xyz. It has =/ than 4 columns") - xyz.close() - - return labels, pos - -################################ -def printxyz(labels, pos): - print(len(labels)) - print("") - for idx, l in enumerate(labels): - print("%s %.6f %.6f %.6f" % (l, pos[idx][0], pos[idx][1], pos[idx][2])) - -############## -def writexyz(fdir, fname, labels, pos, charge: int=0, spin: int=1): - if fdir[-1] != "/": - fdir = fdir + "/" - natoms = len(labels) - fullname = fdir + fname - with open(fullname, "w") as fil: - print(natoms, file=fil) - print(charge, spin, file=fil) - for label, (x, y, z) in zip(labels, pos): - print(f"{label:<2}\t{x: .6f}\t{y: .6f}\t{z: .6f}", file=fil) - # print("%s\t%.6f\t%.6f\t%.6f" % (l, pos[idx][0], pos[idx][1], pos[idx][2]),file=fil) - -############## -def search_string_in_file(file_name, string_to_search): - line_number = 0 - list_of_results = [] - with open(file_name, "r") as read_obj: - for line in read_obj: - line_number += 1 - if string_to_search in line: - list_of_results.append((line_number)) - - return list_of_results - -############## -def readinfo(filepath): - - info = open(filepath, "r") - lines = list(info.readlines()) - info.close() - - strings = [ - "Lattice parameters:", - "Representative sites :", - "OUTPUT CELL INFORMATION", - "Bravais lattice vectors :", - "All sites, (cartesian coordinates):", - "Unit cell volume", - ] - lint = np.zeros((len(strings))) - - for l, line in enumerate(lines): - for stx, string in enumerate(strings): - if string in line: - lint[stx] = l - - - latparamsone = int(lint[0] + 2) - latparamstwo = int(lint[1] - 1) - fracstart = int(lint[1] + 2) - fracend = int(lint[2] - 2) - cellvecstart = int(lint[3] + 1) - cellvecend = int(lint[4] - 1) - coordstart = int(lint[4] + 2) - coordend = int(lint[5] - 2) - - lfracs = [] - labels = [] - pos = [] - fracs = [] - cellvec = [] - cellparam = [] - - for l, line in enumerate(lines): - # reads lattice parameters - if (l == latparamsone) or (l == latparamstwo): - a, b, c = line.split() - cellparam += [float(a), float(b), float(c)] - - # reads fractional coordinates - if (l >= fracstart) and (l <= fracend): - line_data = line.split() - if len(line_data) == 4: - label, x, y, z = line.split() - elif len(line_data) == 5: #sometimes, an occupation value is also given. - label, x, y, z, occ = line.split() - fracs.append([float(x), float(y), float(z)]) - lfracs.append(label) - - # reads cell vectors - if (l >= cellvecstart) and (l <= cellvecend): - v1, v2, v3 = line.split() - cellvec.append([float(v1), float(v2), float(v3)]) - - # reads cartesian coordinates - if (l >= coordstart) and (l <= coordend): - line_data = line.split() - if len(line_data) == 4: - label, x, y, z = line.split() - elif len(line_data) == 5: #sometimes, an occupation value is also given. - label, x, y, z, occ = line.split() - pos.append([float(x), float(y), float(z)]) - labels.append(label) - - - return labels, pos, lfracs, fracs, cellvec, cellparam - -############## -def readcif(filepath): - - info = open(filepath, "r") - lines = list(info.readlines()) - info.close() - - strings = [ - "_journal_name_full", - "_chemical_name_systematic", - "_cell_volume", - "_atom_type_radius_bond", - "_atom_site_label", - "_chemical_name_common", - ] - lint = np.zeros((len(strings))) - - for l, line in enumerate(lines): - for stx, string in enumerate(strings): - if string in line: - lint[stx] = l - - common = int(lint[5]) - iscommon = False - if common != 0: - iscommon = True - - journalname_line = int(lint[0]) - - radius_start = int(lint[3] + 1) - radius_end = int(lint[4] - 2) - - if not iscommon: - chemname_start = int(lint[1] + 2) - chemname_end = int(lint[2] - 2) - if iscommon: - chemname_start = int(lint[1] + 2) - chemname_end = int(lint[5] - 2) - - labels = [] - radii = [] - chemname = "" - for l, line in enumerate(lines): - # reads journal name - if l == journalname_line: - journal = line.split("'")[1] - # reads fractional coordinates - if (l >= chemname_start) and (l <= chemname_end): - chemname += line.split("\n")[0] - # reads cell vectors - if (l >= radius_start) and (l <= radius_end): - label, radius = line.split() - labels.append(label) - radii.append(radius) - - return journal, chemname, labels, radii - -########### -def print_molecule(mol, name, ext, folder): - filename = str(folder) + "/" + str(name) + "." + str(ext) - - if ext == "xyz" or ext == "txt": - with open(filename, "w") as fil: - - # XYZ - if ext == "xyz": - print(mol.natoms, file=fil) - if hasattr(mol, "totcharge") and hasattr(mol, "spin"): - print(mol.totcharge, mol.spin, file=fil) - if hasattr(mol, "totcharge") and not hasattr(mol, "spin"): - print(mol.totcharge, "SPIN", file=fil) - # if not hasattr(mol, 'totcharge') and not hasattr(mol, 'spin'): - else: - print("", file=fil) - - for a in mol.atoms: - print("%s %.6f %.6f %.6f" % (a.label, a.coord[0], a.coord[1], a.coord[2]),file=fil) - - # TXT - elif ext == "txt": - print(vars(mol), file=fil) - - elif ext == "gmol" or ext == "mol" or ext == "npy" or ext == "dict": - with open(filename, "wb") as fil: - - # GMOL - if ext == "gmol": - pickle.dump(mol, fil) - - # MOL - elif ext == "mol": - pickle.dump(mol.object, fil) - - # NPY - elif ext == "npy": - np.save(filename, mol) - - # DICT - elif ext == "dict": - mydict = vars(mol) - pickle.dump(mydict, fil) - - else: - print(ext, "not found as a valid print extension in print_molecule") - -############# -def savemolecules(moleclist, output_dir, print_types, option_print_repeated=True): - - # DEFAULTS - print_xyz = True - print_gmol = True - print_npy = False - print_mol = False - print_txt = False - print_dict = False - - if "xyz" not in print_types: - print_xyz = False - if "gmol" not in print_types: - print_gmol = False - if "npy" in print_types: - print_npy = True - if "mol" in print_types: - print_mol = True - if "txt" in print_types: - print_txt = True - if "dict" in print_types: - print_dict = True - - printedmolecs = [] - - for mol in moleclist: - shalliprint = False - - if any((mol.elemcountvec == pmol.elemcountvec).all() for pmol in printedmolecs): - shalliprint = False - else: - shalliprint = True - if option_print_repeated: # Overwrites decision if the user decides so - shalliprint = True - - if shalliprint: - printedmolecs.append(mol) - - if print_xyz: - print_molecule(mol, mol.name, "xyz", output_dir) - if print_gmol: - print_molecule(mol, mol.name, "gmol", output_dir) - if print_npy: - print_molecule(mol, mol.name, "npy", output_dir) - if print_txt: - print_molecule(mol, mol.name, "txt", output_dir) - if print_dict: - print_molecule(mol, mol.name, "dict", output_dir) - if hasattr(mol, "object"): - if print_mol: - print_molecule(mol, mol.name, "mol", output_dir) - -########### -def print_unit_cell(cell, output_dir): - - # Print Original cell - print("Original_Cell.xyz") - writexyz(output_dir, "Original_Cell.xyz", cell.labels, cell.pos) - - # Print Full Unit Cell - cellatoms = 0 - for mol in cell.moleclist: - cellatoms += mol.natoms - - print("{}_Full_Cell.xyz".format(cell.refcode)) - cell_fname = output_dir + "/" + cell.refcode + "_Full_Cell.xyz" - - with open(cell_fname, "w") as fil: - print(cellatoms, file=fil) - print(" ", file=fil) - for mol in cell.moleclist: - for a in mol.atoms: - print(a.label, a.coord[0], a.coord[1], a.coord[2], file=fil) - -############ -def extract_chemical_formula_moiety(file_path): - with open(file_path, 'r') as file: - cif_content = file.read() - - # Find the chemical formula moiety using regex - pattern = r"_chemical_formula_moiety\s+['\";]([^;'\"]+)['\";]" - match = re.search(pattern, cif_content) - if not match: - raise ValueError("Chemical formula moiety not found.") - formula = match.group(1).strip() - return formula - -def parse_formula_with_quantity(formula: str): - element_pattern = r"(\d*)\(?([A-Za-z0-9\s]+)\)?(\d*)(\d+[+-]?)" - moieties_info = [] - - for match in re.findall(element_pattern, formula): - quantity = int(match[0]) if match[0] else 1 - elements = defaultdict(int) - for element, count in re.findall(r"([A-Z][a-z]*)(\d*)", match[1]): - elements[element] += int(count) if count else 1 - - charge_str = match[3] - charge = int(charge_str[:-1]) * (1 if charge_str.endswith("+") else -1) - - moieties_info.append({ - "elements": dict(elements), - "quantity": quantity, - "charge": charge - }) - return moieties_info - -###################################################### -def print_output(moleclist): - - for idx, mol in enumerate(moleclist): - if mol.iscomplex or mol.has_IA_IIA: - if hasattr(mol, "totcharge") and hasattr(mol, "spin"): - print(f"{idx}: {mol.subtype}({mol.type}) {mol.formula} {mol.is_haptic=} {mol.totcharge=} {mol.spin=}") #\n {mol.adjnum=}\n {mol.madjnum=} \n {mol.smiles=}") - else: - print(f"{idx}: {mol.subtype}({mol.type}) {mol.formula} {mol.is_haptic=}") # {mol.totcharge=} {mol.spin=}") #\n {mol.adjnum=}\n {mol.madjnum=} \n {mol.smiles=}") - # print(mol.adjnum) - for lig in mol.ligands: - if hasattr(lig, "totcharge") and hasattr(lig, "smiles"): - print(f"|- {lig.subtype}({lig.type}) {lig.formula} {lig.is_haptic=} {lig.denticity=} {lig.totcharge=} {lig.smiles=}") - else : - print(f"|- {lig.subtype}({lig.type}) {lig.formula} {lig.is_haptic=} {lig.denticity=}")# {lig.totcharge=} {lig.smiles=}") - # print(f"|- {lig.connected_idx}") - # print(lig.groups) - for group in lig.groups: - print(f"|-- {group.subtype} ({group.type}) {group.formula} {group.is_haptic=} {group.denticity=} {group.closest_metal.label=}") - for met in group.metals: - print(f"|--- {met.label} {met.mconnec=}") - print("") - for metal in mol.metals: - if hasattr(metal, "charge") and hasattr(metal, "spin"): - print(f"|# {metal.subtype}({metal.type}) {metal.label} {metal.coord_nr=} {metal.coord_geometry=} {metal.coord_sphere_formula=} {metal.mconnec=} {metal.connec=} {metal.charge=} {metal.spin=}") - else : - print(f"|# {metal.subtype}({metal.type}) {metal.label} {metal.coord_nr=} {metal.coord_geometry=} {metal.coord_sphere_formula=} {metal.mconnec=} {metal.connec=}") #{metal.charge=} {metal.spin=} - # print(f"|# {metal.get_coord_sphere_formula()}") - # print(f"|# {metal.coord_sphere_formula}") - # print(f"|# {metal.mconnec=} {metal.connec=}") - # print(metal.metal_adjacency) - # for bond in metal.bonds: - # print(f"|--- {bond}") - else: - if hasattr(mol, "totcharge") and hasattr(mol, "spin"): - print(f"{idx}: {mol.subtype}({mol.type}) {mol.formula} {mol.totcharge=} {mol.spin=}\n {mol.smiles}") - else : - print(f"{idx}: {mol.subtype}({mol.type}) {mol.formula}") #{mol.totcharge=} {mol.spin=}\n {mol.smiles}") - print("") - -###################################################### -def print_refmoleclist (cell): - - for i, ref in enumerate(cell.refmoleclist): - if hasattr(ref, "totcharge"): - if ref.iscomplex: - print(f"Reference Molecule {i}: {ref.formula} {ref.totcharge=} (TM complex)") - elif ref.has_IA_IIA: - print(f"Reference Molecule {i}: {ref.formula} {ref.totcharge=} (Complex with Alkali or Alkaline metals)") - else: - if hasattr(ref, "smiles"): - print(f"Reference Molecule {i} : {ref.formula} {ref.totcharge=} (Non-complex) {ref.smiles=}") - else: - print(f"Reference Molecule {i} : {ref.formula} {ref.totcharge=} (Non-complex)") - elif hasattr(ref, "totcharge_cif"): - if ref.iscomplex: - print(f"Reference Molecule {i}: {ref.formula} {ref.totcharge_cif=} (TM complex)") - elif ref.has_IA_IIA: - print(f"Reference Molecule {i}: {ref.formula} {ref.totcharge_cif=} (Complex with Alkali or Alkaline metals)") - else: - print(f"Reference Molecule {i} : {ref.formula} {ref.totcharge_cif=} (Non-complex)") - else: - if ref.iscomplex: - print(f"Reference Molecule {i}: {ref.formula} (TM complex)") - elif ref.has_IA_IIA: - print(f"Reference Molecule {i}: {ref.formula} (Complex with Alkali or Alkaline metals)") - else: - print(f"Reference Molecule {i} : {ref.formula} (Non-complex)") - - if ref.iscomplex or ref.has_IA_IIA: - for met in ref.metals: - met_info = f"\t{met.formula} ({met.subtype})" - if hasattr(met, "charge"): - met_info += f" metal_OS={met.charge}" - elif hasattr(met, "possible_cs"): - met_info += f" metal_possible_OS={met.possible_cs}" - print(met_info) - - if hasattr(met, "coord_sphere_formula"): - print(f"\t|--Coordination information coord_sphere_formula={met.coord_sphere_formula}") - - if all(hasattr(met, attr) for attr in ["coord_nr", "coord_geometry", "geom_deviation"]): - print(f"\t|--coord_nr={met.coord_nr} coord_geometry={met.coord_geometry} geom_deviation={met.geom_deviation}") - - if all(hasattr(met, attr) for attr in ["coord_nr_with_metal_bonds", "coord_geometry_with_metal_bonds", "geom_deviation_with_metal_bonds", "metals"]): - bonded_metals = [m.label for m in met.metals] - print(f"\t|--bonded metals={bonded_metals} coord_nr_with_metal_bonds={met.coord_nr_with_metal_bonds} coord_geometry_with_metal_bonds={met.coord_geometry_with_metal_bonds} geom_deviation_with_metal_bonds={met.geom_deviation_with_metal_bonds}") - - for lig in ref.ligands: - lig_info = f"\t{lig.formula} ({lig.subtype})" - for attr in ["smiles", "denticity", "totcharge"]: - if hasattr(lig, attr): - lig_info += f" {attr}={getattr(lig, attr)}" - - if hasattr(lig, "possible_cs") and not hasattr(lig, "totcharge"): - if lig.possible_cs is not None: - lig_info += " lig.possible_cs Exists" - else: - lig_info += " lig.possible_cs Does not exist" - - print(lig_info) - if hasattr(lig, "groups"): - for group in lig.groups: - group_info = f"\t|--(group) {group.labels}" - for attr in ["denticity"]: - if hasattr(group, attr): - group_info += f" {attr}={getattr(group, attr)}" - for attr in ["is_haptic", "haptic_type"]: - if hasattr(group, attr): - if group.is_haptic: - group_info += f" {attr}={getattr(group, attr)}" - if hasattr(group, "metals"): - group_info += f" connected_metals={[m.label for m in group.metals]}" - # if hasattr(group, "closest_metal"): - # group_info += f" closest_metal.label={group.closest_metal.label}" - print(group_info) - -###################################################### -def print_unique_species (cell): - if hasattr(cell, "unique_species"): - print(f"\nUnique Species in {cell.subtype}:") - for specie in cell.unique_species: - if specie.subtype == "metal": - if hasattr(specie, "charge"): - print(f"\t{specie.unique_index=} {specie.formula} ({specie.subtype}) {specie.coord_sphere_formula=} {specie.charge=}") - else: - print(f"\t{specie.unique_index=} {specie.formula} ({specie.subtype}) {specie.coord_sphere_formula=}") - else: - if hasattr(specie, "totcharge") and hasattr(specie, "smiles"): - print(f"\t{specie.unique_index=} {specie.formula} ({specie.subtype}) {specie.smiles=} {specie.totcharge=}") - elif hasattr(specie, "totcharge"): - print(f"\t{specie.unique_index=} {specie.formula} ({specie.subtype}) {specie.totcharge=}") - else: - print(f"\t{specie.unique_index=} {specie.formula} ({specie.subtype})") - else: - print("\nNo unique species found in the cell object.") - -###################################################### -def print_possible_charges (cell, debug=0): - """ - Print the possible charges for each species in the cell object. - """ - if hasattr(cell, "species_list"): - print(f"\nPossible charges of species in {cell.subtype}:") - for specie in cell.species_list: - if hasattr(specie, "possible_cs"): - if specie.subtype == "metal": - print(f"\t{specie.unique_index=} {specie.formula} ({specie.subtype}) {specie.coord_sphere_formula=} {specie.possible_cs=}") - else: - print(f"\t{specie.unique_index=} {specie.formula} ({specie.subtype})\n\t{specie.possible_cs=}") - if debug > 0 : print(f"\t{specie.unique_index=} {specie.formula} ({specie.subtype})\n\t{specie.possible_cs=}") - else: - if specie.subtype == "metal": - print(f"\t{specie.unique_index=} {specie.formula} ({specie.subtype}) {specie.coord_sphere_formula=} No possible cs") - else: - print(f"\t{specie.unique_index=} {specie.formula}, {specie.subtype} No possible cs") #[p.subtype for p in specie.parents]) - else: - print("\nNo species list found in the cell object.") - print("") -###################################################### -def print_moleclist(cell): - if hasattr(cell, "moleclist"): - print(f"\nMolecules in {cell.subtype}:") - for i, mol in enumerate(cell.moleclist): - if hasattr(mol, "totcharge"): - if mol.iscomplex: - print(f"Unitcell Molecule {i}: {mol.formula} {mol.totcharge=} (TM complex)") - elif mol.has_IA_IIA: - print(f"Unitcell Molecule {i}: {mol.formula} {mol.totcharge=} (Complex with Alkali or Alkaline metals)") - else: - if hasattr(mol, "smiles"): - print(f"Reference Molecule {i} : {mol.formula} {mol.totcharge=} (Non-complex) {mol.smiles=}") - else: - print(f"Reference Molecule {i} : {mol.formula} {mol.totcharge=} (Non-complex)") - else: - if mol.iscomplex: - print(f"Unitcell Molecule {i}: {mol.formula} (TM complex)") - elif mol.has_IA_IIA: - print(f"Unitcell Molecule {i}: {mol.formula} (Complex with Alkali or Alkaline metals)") - else: - print(f"Unitcell Molecule {i} : {mol.formula} (Non-complex)") - - if mol.iscomplex or mol.has_IA_IIA: - for met in mol.metals: - met_info = f"\t{met.formula} ({met.subtype})" - - if hasattr(met, "charge"): - met_info += f" metal_OS={met.charge}" - elif hasattr(met, "possible_cs"): - met_info += f" metal_possible_OS={met.possible_cs}" - print(met_info) - - for attr in ["coord_sphere_formula"]: - if hasattr(met, attr): - print(f"\t|--Coordination information {attr}={getattr(met, attr)}") - - if all(hasattr(met, attr) for attr in ["coord_nr", "coord_geometry", "geom_deviation"]): - print(f"\t|--coord_nr={met.coord_nr} coord_geometry={met.coord_geometry} geom_deviation={met.geom_deviation}") - - if all(hasattr(met, attr) for attr in ["coord_nr_with_metal_bonds", "coord_geometry_with_metal_bonds", "geom_deviation_with_metal_bonds", "metals"]): - bonded_metals = [m.label for m in met.metals] - print(f"\t|--bonded metals={bonded_metals} coord_nr_with_metal_bonds={met.coord_nr_with_metal_bonds} coord_geometry_with_metal_bonds={met.coord_geometry_with_metal_bonds} geom_deviation_with_metal_bonds={met.geom_deviation_with_metal_bonds}") - print("") - - for lig in mol.ligands: - lig_info = f"\t{lig.formula} ({lig.subtype})" - for attr in ["smiles", "denticity", "totcharge"]: - if hasattr(lig, attr): - lig_info += f" {attr}={getattr(lig, attr)}" - print(lig_info) - if hasattr(lig, "groups"): - for group in lig.groups: - group_info = f"\t|--(group){group.labels}" - for attr in ["denticity"]: - if hasattr(group, attr): - group_info += f" {attr}={getattr(group, attr)}" - for attr in ["is_haptic", "haptic_type"]: - if hasattr(group, attr): - if group.is_haptic: - group_info += f" {attr}={getattr(group, attr)}" - if hasattr(group, "metals"): - group_info += f" connected_metals={[m.label for m in group.metals]}" - # if hasattr(group, "closest_metal"): - # group_info += f" closest_metal.label={group.closest_metal.label}" - print(group_info) - - # Optional: print group-metals connectivity - # for met in group.metals: - # print(f"\t|--(group.metals){met.label} {met.mconnec=}") - else: - print("\nNo molecules found in the cell object.") - diff --git a/cell2mol/refcell.py b/cell2mol/refcell.py deleted file mode 100644 index f4d7026bc..000000000 --- a/cell2mol/refcell.py +++ /dev/null @@ -1,241 +0,0 @@ -import os -import sys -from ase.io import read -from contextlib import redirect_stdout -from cell2mol.classes import cell -from cell2mol.read_write import * -from cell2mol.cell_operations import frac2cart_fromparam -from cell2mol.other import handle_error -from cell2mol.connectivity import labels2formula -import time -from cell2mol.elementdata import ElementData -elemdatabase = ElementData() - -VERSION = "2.0" -COV_FACTOR = 1.3 -METAL_FACTOR = 1.0 - -def process_refcell(input_path, name, current_dir, cif_bond_info, debug=0): - """ - Process the reference molecules from a CIF file and generate a reference cell object. - Args: - input_path (str): Path to the CIF file (downloaded from CSD). - name (str): CSD refcode. - current_dir (str): Current working directory. - cif_bond_info (bool): Whether to use bond information from the CIF file. - debug (int, optional): Debug level (default is 0). - Returns: - refcell (object): Reference cell object containing the reference molecules and their information. - """ - - ref_cell_fname = os.path.join(current_dir, f"Ref_Cell_{name}.cell") - output_fname = os.path.join(current_dir, "cell2mol.out") - - with open(output_fname, "w") as output: - with redirect_stdout(output): - print(f"cell2mol version {VERSION}") - print(f"INITIATING cell object from input path: {input_path}") - print(f"Debug level: {debug}") - - structure = read(input_path) - cell_vector = structure.cell.array - cell_param = structure.cell.cellpar() - - # Create the reference cell - refcell = create_reference(input_path, name, cell_vector, cell_param, cif_bond_info, debug) - - # for i, ref in enumerate(refcell.refmoleclist): - # if hasattr(ref, "totcharge_cif"): - # N = 0 - # for atom in ref.labels: - # N += elemdatabase.elementnr[atom] - # N -= ref.totcharge_cif - # if N % 2 == 0: - # spin = 1 - # else: - # spin = 2 - # writexyz(current_dir, f"{name}_Ref_{i}_{ref.formula}_charge_{ref.totcharge_cif}_lowspin_{spin}.xyz", ref.labels, ref.coord, charge=ref.totcharge_cif, spin=spin) - # print(f"Ref molecule {i} {ref.formula} total charge {ref.totcharge_cif} lowest spin multiplicity {spin}") - # else: - # writexyz(current_dir, f"{name}_Ref_{i}_{ref.formula}.xyz", ref.labels, ref.coord, charge="", spin="") - # print(f"Ref molecule {i} {ref.formula} without charge and spin information") - - if refcell.error_case == 0: - get_unique_species_in_reference(refcell, debug) - else: - print(f"Error occurred in processing reference cell: error case {refcell.error_case}") - refcell.save(ref_cell_fname) - - # Print summary information - summary_fname = os.path.join(current_dir, "reference_summary.out") - with open(summary_fname, "w") as summary: - with redirect_stdout(summary): - print(name) - print_refmoleclist(refcell) - print_unique_species(refcell) - print_possible_charges(refcell) - - # Print error case information - error_fname = os.path.join(current_dir, f"reference_error_{refcell.error_case}.out") - print_error_case(refcell, error_fname) - - return refcell - -def create_reference (input_path, name, cell_vector, cell_param, cif_bond_info, debug): - """Create the reference cell object.""" - - tini = time.time() - - # Read the CIF file and extract the Wyckoff positions - atom_site_labels, ref_labels, ref_fracs = get_wyckoff_positions (input_path) - ref_pos = frac2cart_fromparam(ref_fracs, cell_param) - - # Generate the reference cell object - refcell = cell(name, ref_labels, ref_pos, ref_fracs, cell_vector, cell_param) - refcell.set_atom_site_labels(atom_site_labels) - refcell.set_subtype("reference") - - # Read the CIF file and extract bond information if exists - # if cif_bond_info: - geom_bond_cif, moiety_list_cif = get_geom_bond (input_path) - refcell.get_cif_bond_moiety(cif_bond_info, geom_bond_cif, moiety_list_cif) - # else: - # refcell.get_cif_bond_moiety() - print(f"refcell.exist_cif_bond_moiety: {refcell.exist_cif_bond_moiety}") - - if cif_bond_info: - refcell.get_reference_molecules_from_moiety (ref_labels, ref_fracs, cov_factor=COV_FACTOR, metal_factor=METAL_FACTOR, debug=debug) - if refcell.refmoleclist == []: - print("No reference molecules found in the CIF file.") - refcell.error_case = 1 - else: - compare_with_CIF(input_path, refcell, debug=debug) - if refcell.disagree_with_cif_formula: - refcell.error_case = 9 - else: - refcell.error_case = 0 - else: - refcell.get_reference_molecules(ref_labels, ref_fracs, cov_factor=COV_FACTOR, metal_factor=METAL_FACTOR, debug=debug) - if refcell.refmoleclist == []: - print("No reference molecules found in the CIF file.") - refcell.error_case = 1 - else: - compare_with_CIF(input_path, refcell, debug=debug) - if refcell.has_isolated_H: - refcell.error_case = 1 - else : - refcell.error_case = 0 - - if refcell.error_case == 0: - refcell.check_missing_H(debug=debug) - refcell.assess_errors(mode="hydrogens") - - tend = time.time() - - if debug >= 1: print(f"\nReference molecules are generated. Total execution time: {tend - tini:.2f} seconds") - - return refcell - -def compare_with_CIF (input_path, refcell, debug=0): - """Extract chemical name, metal oxidation state, and moiety information from the CIF file.""" - - chemical_name = extract_chemical_name(input_path) - reported_metal_os = extract_metal_oxidation_state(chemical_name) - moiety_dicts = extract_moiety(input_path) - - refcell.chemical_name = chemical_name - refcell.reported_metal_os = reported_metal_os - refcell.moiety_dicts = moiety_dicts - - print(f"_chemical_name_systematic in CIF: {refcell.chemical_name}") - print(f"Reported oxidation states in CIF: {refcell.reported_metal_os}") - print(f"Moiety dictionaries: {refcell.moiety_dicts}") - - formulas_from_refcell = [ref.formula for ref in refcell.refmoleclist] - formulas_from_cif = [labels2formula(cifformula_to_list(moiety['formula'])) for moiety in moiety_dicts] - ratios_from_cif = [moiety['ratio'] for moiety in moiety_dicts] - charges_from_cif = [moiety['charge'] for moiety in moiety_dicts] - matches = find_closest_matches(formulas_from_refcell, formulas_from_cif) - - print(f"Formulas from CIF: {formulas_from_cif}") - print(f"Ratios from CIF: {ratios_from_cif}") - print(f"Charges from CIF: {charges_from_cif}") - print(f"Formulas from refcell: {formulas_from_refcell}") - - disagree_with_cif = [] - for ref_idx, info in matches.items(): - ref = refcell.refmoleclist[ref_idx] - - if len(info['diff_dict']) == 0: - print(f"{ref_idx=} {info['ref']}: Exact match found. {info['match']}") - - # Find the index of the matched formula in the CIF formulas list - try: - cif_idx = formulas_from_cif.index(info['match']) - ref.totcharge_cif = charges_from_cif[cif_idx] - - except ValueError: - print(f"\tFailed to Assign charge to refcell molecule {info['ref']} matched with CIF {info['match']}") - - else: - print(f"{ref_idx=} {info['ref']}: Closest match found. {info['match']} with difference of {info['diff_dict']}") - disagree_with_cif.append(ref_idx) - - if len(disagree_with_cif) > 0: - print("Discrepancies found between refcell and CIF") - refcell.disagree_with_cif_formula = True - else: - print("No discrepancies found between formulas from refcell and CIF.") - refcell.disagree_with_cif_formula = False - - return - -def get_unique_species_in_reference (refcell, debug): - """Processes the reference cell to obtain unique species and handle any errors.""" - - tini = time.time() - - refcell.get_unique_species(debug=debug) - - if debug >= 1: - print(f"Unique species: {[specie.formula for specie in refcell.unique_species]}") - print(f"Species list: {[specie.formula for specie in refcell.species_list]}\n") - - refcell.get_selected_cs(debug=debug) - refcell.assess_errors(mode="possible_charges") - - tend = time.time() - - if debug >= 1: print(f"\nAssign possible charges of Reference molecules. Total execution time: {tend - tini:.2f} seconds") - - return - -def print_error_case(refcell, error_fname): - """Prints the error case to a file.""" - - with open(error_fname, "w") as error_output: - with redirect_stdout(error_output): - if refcell.error_case == 2 or refcell.error_case == 3 or refcell.error_case == 4 : - handle_error(2) - if refcell.error_case == 2: - print(" - Missing Hydrogens in Water Molecules") - elif refcell.error_case == 3: - print(" - Missing Hydrogens in Coordinated Water Molecules") - elif refcell.error_case == 4: - print(" - Missing Hydrogens in Carbon Atoms") - elif refcell.error_case == 9: - handle_error(9) - print(" - Missing elements in Reference Molecules compared to moieties reported in CIF") - else : - handle_error(refcell.error_case) - return - -if __name__ == "__main__": - - input = sys.argv[1] - current_dir = os.getcwd() - input_path = os.path.normpath(input) - dir, file = os.path.split(input_path) - name, extension = os.path.splitext(file) - - process_refcell(input_path, name, current_dir, debug=1) diff --git a/cell2mol/spin.py b/cell2mol/spin.py index 23e787f1d..cb73c5592 100644 --- a/cell2mol/spin.py +++ b/cell2mol/spin.py @@ -1,119 +1,166 @@ import numpy as np import pickle +import joblib import os from cell2mol import __file__ from cell2mol.coordination_sphere import shape_structure_references_simplified from cell2mol.elementdata import ElementData +import logging + +logger = logging.getLogger(__name__) elemdatabase = ElementData() -####################################################### -def predict_ox_state (metal:object, debug: int=0) -> None: +def predict_ox_state(metal: object) -> None: model = "" - feature = generate_feature_vector (metal, target_prop = "m_ox", debug=debug) - path_rf = os.path.join( os.path.abspath(os.path.dirname(__file__)), model) - ramdom_forest = pickle.load(open(path_rf, 'rb')) + feature = generate_feature_vector(metal, target_prop="m_ox") + path_rf = os.path.join(os.path.abspath(os.path.dirname(__file__)), model) + ramdom_forest = pickle.load(open(path_rf, "rb")) predictions = ramdom_forest.predict(feature) m_ox_rf = predictions[0] return m_ox_rf -####################################################### -def assign_spin_metal (metal:object, debug: int=0) -> None: - """ Assigns spin multiplicity of the transition metal. - """ + +def assign_spin_metal(metal: object) -> None: + """Assigns spin multiplicity of the transition metal.""" valence_elec = metal.get_valence_elec(metal.charge) period = elemdatabase.elementperiod[metal.label] - - if period == 4: # 3d transition metals - if valence_elec in [0, 10]: return 1 - elif valence_elec in [1, 9]: return 2 - elif valence_elec in [2, 3] and metal.get_parent("molecule").is_haptic == False : return (valence_elec + 1) - elif valence_elec in [4, 5, 6, 7, 8] or (valence_elec in [2, 3] and metal.get_parent("molecule").is_haptic == True) : - if hasattr(metal, "coord_geometry") and metal.coord_geometry != "Undefined": - # Predict spin multiplicity of metal based on Random forest model - feature = generate_feature_vector (metal, target_prop="spin", debug=debug) - path_rf = os.path.join( os.path.abspath(os.path.dirname(__file__)), "total_spin_3131.pkl") - ramdom_forest = pickle.load(open(path_rf, 'rb')) + block = elemdatabase.elementblock[metal.label] + if period == 4 and block == "d": # 3d transition metals + if valence_elec in [0, 10]: + return 1 + elif valence_elec in [1, 9]: + return 2 + elif valence_elec in [2, 3] and not metal.get_parent("molecule").is_haptic: + return valence_elec + 1 + elif valence_elec in [4, 5, 6, 7, 8] or ( + valence_elec in [2, 3] and metal.get_parent("molecule").is_haptic + ): + if metal.coord_geometry is not None and metal.coord_geometry != "Undefined": + # Predict spin multiplicity of metal based on Random Forest model + feature = generate_feature_vector(metal, target_prop="spin") + # path_rf = os.path.join( + # os.path.dirname(os.path.abspath(__file__)), + # "models", + # "TM-GSspin_RandomForest.pkl", + # ) + # ramdom_forest = pickle.load(open(path_rf, "rb")) + path_rf = os.path.join( + os.path.dirname(os.path.abspath(__file__)), + "models", + "TM-GSspinPlus_RandomForest.joblib", + ) + ramdom_forest = joblib.load(path_rf) predictions = ramdom_forest.predict(feature) spin_rf = predictions[0] - print(f"ASSIGN_SPIN_METAL: Spin multiplicity of the metal {metal.label} is predicted as {spin_rf} using Random Forest model") + logger.info( + "ASSIGN_SPIN_METAL: Spin multiplicity of the metal %s is predicted as %s using Random Forest model", + metal.label, + spin_rf, + ) return spin_rf else: - print("ASSIGN_SPIN_METAL: Error! Coordination geometry of the metal is not defined.") + logger.error( + "Cannot assign spin multiplicity! Coordination geometry of the metal %s is not defined.", + metal.label, + ) return None - else : - print("ASSIGN_SPIN_METAL: Error! Spin multiplicity could not be assigned to the metal with valence electrons: ", valence_elec) + else: + logger.error( + "Cannot assign spin multiplicity! valence electrons of metal: %s", + valence_elec, + ) return None - else : # 4d and 5d transition metals - if valence_elec % 2 == 0: return 1 - else: return 2 + elif period > 4 and block == "d": # 4d and 5d transition metals + if valence_elec % 2 == 0: + return 1 + else: + return 2 + else: # other metals + return None -####################################################### -def assign_spin_complexes (mol:object, debug: int=0) -> None: - """ Assigns spin multiplicity of the transition metal complexes. - """ + +def assign_spin_complexes(mol: object) -> None: + """Assigns spin multiplicity of the transition metal complexes.""" for metal in mol.metals: - if not hasattr(metal,"spin"): metal.get_spin(debug=debug) + if metal.spin is None and (elemdatabase.elementblock[metal.label] == "d"): + metal.get_spin() for ligand in mol.ligands: - if not hasattr(ligand, "is_nitrosyl"): ligand.evaluate_as_nitrosyl() - - metals_spin = [metal.spin for metal in mol.metals] - if debug >=2: print(f"ASSIGN_SPIN_COMPLEXES: {metals_spin=}") - - if any([ligand.is_nitrosyl for ligand in mol.ligands]): return None - else : - if None in metals_spin : return None - elif len(metals_spin) == 1: return metals_spin[0] # Mononuclear complex - else : # Polynuclear complex - metals_idx_not_singlet = [idx for idx, spin in enumerate(metals_spin) if spin != 1] - if len(metals_idx_not_singlet) == 0 : return 1 - elif len(metals_idx_not_singlet) == 1 : return metals_spin[metals_idx_not_singlet[0]] - else : return None - - -####################################################### -def generate_feature_vector (metal: object, target_prop: str, debug: int = 0) -> np.ndarray: - """ Generate feature vector for a given transition metal coordination complex + if ligand.is_nitrosyl is None: + ligand.evaluate_as_nitrosyl() + + metals_spin = [metal.spin for metal in mol.metals if metal.spin is not None] + logger.info("Spin multiplicity of metals: %s", metals_spin) + + if any([ligand.is_nitrosyl for ligand in mol.ligands]): + return None + else: + if None in metals_spin: + return None + elif len(metals_spin) == 1: + return metals_spin[0] # Mononuclear complex + else: # Polynuclear complex + metals_idx_not_singlet = [ + idx for idx, spin in enumerate(metals_spin) if spin != 1 + ] + if len(metals_idx_not_singlet) == 0: + return 1 + elif len(metals_idx_not_singlet) == 1: + return metals_spin[metals_idx_not_singlet[0]] + else: + return None + + +def generate_feature_vector(metal: object, target_prop: str) -> np.ndarray: + """Generate feature vector for a given transition metal coordination complex Args: metal (obj): metal atom object target_prop (str): target property to predict, either "m_ox" for metal oxidation state or "spin" for spin multiplicity Returns: feature (np.ndarray): feature vector """ - if debug >= 1: print(f"GENERATE_feature_vector: {metal.label}") - elem_nr = elemdatabase.elementnr[metal.label] - - coord_group = metal.get_connected_groups(debug=debug) + + coord_group = metal.get_connected_groups() coord_nr = metal.coord_nr geom_nr = make_geom_list()[metal.coord_geometry] rel_metal_radius = metal.rel_metal_radius - coord_hapticty = [ group.is_haptic for group in coord_group ] - if any(coord_hapticty) : hapticity = 1 - else : hapticity = 0 - + coord_hapticty = [group.is_haptic for group in coord_group] + if any(coord_hapticty): + hapticity = 1 + else: + hapticity = 0 + if target_prop == "m_ox": feature = np.array([[elem_nr, coord_nr, geom_nr, rel_metal_radius, hapticity]]) - if debug >= 1: print(f"GENERATE_feature_vector: {feature=}") + logger.info("feature_vector: %s", feature) elif target_prop == "spin": m_ox = metal.charge valence_elec = metal.get_valence_elec(metal.charge) - feature = np.array([[elem_nr, m_ox, valence_elec, coord_nr, geom_nr, rel_metal_radius, hapticity]]) - if debug >= 1: print(f"GENERATE_feature_vector: {feature=}") - + feature = np.array( + [ + [ + elem_nr, + m_ox, + valence_elec, + coord_nr, + geom_nr, + rel_metal_radius, + hapticity, + ] + ] + ) + logger.info("feature_vector: %s", feature) + return feature -####################################################### -def make_geom_list (): +def make_geom_list(): geom_list = {} count = 0 for i in shape_structure_references_simplified.values(): - # print(np.array(i)[:,3]) - for geom in np.array(i)[:,3]: + for geom in np.array(i)[:, 3]: geom_list[geom] = count - count +=1 + count += 1 return geom_list - -####################################################### \ No newline at end of file diff --git a/cell2mol/test/ACEYOW/ACEYOW.cif b/cell2mol/test/ACEYOW/ACEYOW.cif deleted file mode 100644 index 9d31a4ab4..000000000 --- a/cell2mol/test/ACEYOW/ACEYOW.cif +++ /dev/null @@ -1,195 +0,0 @@ - -####################################################################### -# -# Cambridge Crystallographic Data Centre -# CCDC -# -####################################################################### -# -# If this CIF has been generated from an entry in the Cambridge -# Structural Database, then it will include bibliographic, chemical, -# crystal, experimental, refinement or atomic coordinate data resulting -# from the CCDC's data processing and validation procedures. -# -####################################################################### - -data_CSD_CIF_ACEYOW -_audit_creation_date 2002-02-27 -_audit_creation_method CSD-ConQuest-V1 -_database_code_CSD ACEYOW -_database_code_depnum_ccdc_archive 'CCDC 175987' -_chemical_formula_sum 'C12 H18 F12 Fe1 N6 Sb2' -_chemical_formula_moiety -; -C12 H18 Fe1 N6 2+,2(F6 Sb1 1-) -; -_journal_coeditor_code "IUCr YA6066" -_journal_coden_Cambridge 1370 -_journal_volume 57 -_journal_year 2001 -_journal_page_first m545 -_journal_name_full 'Acta Crystallogr.,Sect.E:Struct.Rep.Online ' -loop_ -_publ_author_name -"W.W.Brennessel" -"N.R.Brooks" -"M.P.Mehn" -"L.Que Junior" -"V.G.Young Junior" -_chemical_name_systematic -; -hexakis(Acetonitrile)-iron(ii) hexafluoroantimonate -; -_cell_volume 1933.086 -_exptl_crystal_colour 'colorless' -_exptl_crystal_density_diffrn 1.994 -_exptl_special_details -; -isostructural with the Ni complex - -; -_exptl_crystal_description 'hexagonal prism' -_exptl_crystal_preparation 'diethyl ether/acetonitrile' -_diffrn_ambient_temperature 173 -#These two values have been output from a single CSD field. -_refine_ls_R_factor_gt 0.024 -_refine_ls_wR_factor_gt 0.024 -_symmetry_cell_setting rhombohedral -_symmetry_space_group_name_H-M 'R -3' -_symmetry_Int_Tables_number 148 -loop_ -_symmetry_equiv_pos_site_id -_symmetry_equiv_pos_as_xyz -1 x,y,z -2 -y,x-y,z -3 -x+y,-x,z -4 2/3+x,1/3+y,1/3+z -5 2/3-y,1/3+x-y,1/3+z -6 2/3-x+y,1/3-x,1/3+z -7 1/3+x,2/3+y,2/3+z -8 1/3-y,2/3+x-y,2/3+z -9 1/3-x+y,2/3-x,2/3+z -10 -x,-y,-z -11 y,-x+y,-z -12 x-y,x,-z -13 -2/3-x,-1/3-y,-1/3-z -14 -2/3+y,-1/3-x+y,-1/3-z -15 -2/3+x-y,-1/3+x,-1/3-z -16 -1/3-x,-2/3-y,-2/3-z -17 -1/3+y,-2/3-x+y,-2/3-z -18 -1/3+x-y,-2/3+x,-2/3-z -_cell_length_a 11.3398(6) -_cell_length_b 11.3398(6) -_cell_length_c 17.3584(11) -_cell_angle_alpha 90 -_cell_angle_beta 90 -_cell_angle_gamma 120 -_cell_formula_units_Z 3 -loop_ -_atom_type_symbol -_atom_type_radius_bond -C 0.68 -H 0.23 -F 0.64 -Fe 1.34 -N 0.68 -Sb 1.46 -loop_ -_atom_site_label -_atom_site_type_symbol -_atom_site_fract_x -_atom_site_fract_y -_atom_site_fract_z -Fe1 Fe 0.66670 0.33330 0.33330 -N1 N 0.6659(2) 0.4906(2) 0.40253(12) -C1 C 0.6658(2) 0.5774(2) 0.43437(14) -C2 C 0.6651(3) 0.6881(3) 0.4763(2) -H1 H 0.67230 0.67600 0.53160 -H2 H 0.58000 0.68780 0.46570 -H3 H 0.74250 0.77510 0.45970 -Sb1 Sb 0.66670 0.33330 0.661838(14) -F1 F 0.6682(3) 0.1981(3) 0.7195(2) -F2 F 0.5350(3) 0.1968(3) 0.60083(19) -N1A N 0.5094(2) 0.1753(2) 0.40253(12) -C1A C 0.4226(2) 0.0884(2) 0.43437(14) -C2A C 0.3119(3) -0.0230(3) 0.4763(2) -H1A H 0.32400 -0.00370 0.53160 -H2A H 0.31220 -0.10780 0.46570 -H3A H 0.22490 -0.03260 0.45970 -N1B N 0.8247(2) 0.3341(2) 0.40253(12) -C1B C 0.9116(2) 0.3342(2) 0.43437(14) -C2B C 1.0230(3) 0.3349(3) 0.4763(2) -H1B H 1.00370 0.32770 0.53160 -H2B H 1.10780 0.42000 0.46570 -H3B H 1.03260 0.25750 0.45970 -N1L N 0.667433(200) 0.176067(200) 0.264137(120) -C1L C 0.667533(200) 0.089267(200) 0.232297(140) -C2L C 0.668233(300) -0.021433(300) 0.190367(200) -H1L H 0.66103 -0.00933 0.13507 -H2L H 0.75333 -0.02113 0.20097 -H3L H 0.59083 -0.10843 0.20697 -N1M N 0.823933(200) 0.491367(200) 0.264137(120) -C1M C 0.910733(200) 0.578267(200) 0.232297(140) -C2M C 1.021433(300) 0.689667(300) 0.190367(200) -H1M H 1.00933 0.67037 0.13507 -H2M H 1.02113 0.77447 0.20097 -H3M H 1.10843 0.69927 0.20697 -N1N N 0.508633(200) 0.332567(200) 0.264137(120) -C1N C 0.421733(200) 0.332467(200) 0.232297(140) -C2N C 0.310333(300) 0.331767(300) 0.190367(200) -H1N H 0.32963 0.33897 0.13507 -H2N H 0.22553 0.24667 0.20097 -H3N H 0.30073 0.40917 0.20697 -F1A F 0.8019(3) 0.4701(3) 0.7195(2) -F1B F 0.5299(3) 0.3318(3) 0.7195(2) -F2A F 0.8032(3) 0.3382(3) 0.60083(19) -F2B F 0.6618(3) 0.4650(3) 0.60083(19) -loop_ -_geom_bond_atom_site_label_1 -_geom_bond_atom_site_label_2 -_geom_bond_distance -_geom_bond_site_symmetry_1 -_geom_bond_site_symmetry_2 -Fe1 N1 2.155 1_555 1_555 -N1 C1 1.129 1_555 1_555 -C1 C2 1.455 1_555 1_555 -C2 H1 0.979 1_555 1_555 -H2 C2 0.981 1_555 1_555 -H3 C2 0.980 1_555 1_555 -Sb1 F1 1.838 1_555 1_555 -F2 Sb1 1.854 1_555 1_555 -N1A Fe1 2.154 1_555 1_555 -C1A N1A 1.129 1_555 1_555 -C2A C1A 1.455 1_555 1_555 -H1A C2A 0.979 1_555 1_555 -H2A C2A 0.981 1_555 1_555 -H3A C2A 0.980 1_555 1_555 -N1B Fe1 2.154 1_555 1_555 -C1B N1B 1.129 1_555 1_555 -C2B C1B 1.455 1_555 1_555 -H1B C2B 0.979 1_555 1_555 -H2B C2B 0.981 1_555 1_555 -H3B C2B 0.980 1_555 1_555 -N1L Fe1 2.153 1_555 1_555 -C1L N1L 1.129 1_555 1_555 -C2L C1L 1.455 1_555 1_555 -H1L C2L 0.979 1_555 1_555 -H2L C2L 0.981 1_555 1_555 -H3L C2L 0.980 1_555 1_555 -N1M Fe1 2.153 1_555 1_555 -C1M N1M 1.129 1_555 1_555 -C2M C1M 1.455 1_555 1_555 -H1M C2M 0.979 1_555 1_555 -H2M C2M 0.981 1_555 1_555 -H3M C2M 0.980 1_555 1_555 -N1N Fe1 2.154 1_555 1_555 -C1N N1N 1.129 1_555 1_555 -C2N C1N 1.455 1_555 1_555 -H1N C2N 0.979 1_555 1_555 -H2N C2N 0.981 1_555 1_555 -H3N C2N 0.980 1_555 1_555 -F1A Sb1 1.839 1_555 1_555 -F1B Sb1 1.839 1_555 1_555 -F2A Sb1 1.853 1_555 1_555 -F2B Sb1 1.854 1_555 1_555 -#END diff --git a/cell2mol/test/ACEYOW/ACEYOW.info b/cell2mol/test/ACEYOW/ACEYOW.info deleted file mode 100644 index 83f9eca2a..000000000 --- a/cell2mol/test/ACEYOW/ACEYOW.info +++ /dev/null @@ -1,133 +0,0 @@ -CIF2CELL 2.0.0 -2024-04-23 15:31 -Output for None (hexakis(Acetonitrile)-iron(ii) hexafluoroantimonate) -CIF file exported from Cambridge Structural Database. -Database reference code: ACEYOW. - BIBLIOGRAPHIC INFORMATION -W.W.Brennessel et al., Acta Crystallogr.,Sect.E:Struct.Rep.Online 57, m545- (2001) - INPUT CELL INFORMATION -Symmetry information: -Trigonal crystal system. -Space group number : 148 -Hall symbol : -R 3 -Hermann-Mauguin symbol : R-3 - -Lattice parameters: - a b c - 11.3398000 11.3398000 17.3584000 - alpha beta gamma - 90.0000000 90.0000000 120.0000000 -Representative sites : -Atom x y z -Fe 0.6667000 0.3333000 0.3333000 -N 0.6659000 0.4906000 0.4025300 -C 0.6658000 0.5774000 0.4343700 -C 0.6651000 0.6881000 0.4763000 -H 0.6723000 0.6760000 0.5316000 -H 0.5800000 0.6878000 0.4657000 -H 0.7425000 0.7751000 0.4597000 -Sb 0.6667000 0.3333000 0.6618380 -F 0.6682000 0.1981000 0.7195000 -F 0.5350000 0.1968000 0.6008300 -N 0.5094000 0.1753000 0.4025300 -C 0.4226000 0.0884000 0.4343700 -C 0.3119000 -0.0230000 0.4763000 -H 0.3240000 -0.0037000 0.5316000 -H 0.3122000 -0.1078000 0.4657000 -H 0.2249000 -0.0326000 0.4597000 -N 0.8247000 0.3341000 0.4025300 -C 0.9116000 0.3342000 0.4343700 -C 1.0230000 0.3349000 0.4763000 -H 1.0037000 0.3277000 0.5316000 -H 1.1078000 0.4200000 0.4657000 -H 1.0326000 0.2575000 0.4597000 -N 0.6674330 0.1760670 0.2641370 -C 0.6675330 0.0892670 0.2322970 -C 0.6682330 -0.0214330 0.1903670 -H 0.6610300 -0.0093300 0.1350700 -H 0.7533300 -0.0211300 0.2009700 -H 0.5908300 -0.1084300 0.2069700 -N 0.8239330 0.4913670 0.2641370 -C 0.9107330 0.5782670 0.2322970 -C 1.0214330 0.6896670 0.1903670 -H 1.0093300 0.6703700 0.1350700 -H 1.0211300 0.7744700 0.2009700 -H 1.1084300 0.6992700 0.2069700 -N 0.5086330 0.3325670 0.2641370 -C 0.4217330 0.3324670 0.2322970 -C 0.3103330 0.3317670 0.1903670 -H 0.3296300 0.3389700 0.1350700 -H 0.2255300 0.2466700 0.2009700 -H 0.3007300 0.4091700 0.2069700 -F 0.8019000 0.4701000 0.7195000 -F 0.5299000 0.3318000 0.7195000 -F 0.8032000 0.3382000 0.6008300 -F 0.6618000 0.4650000 0.6008300 - - OUTPUT CELL INFORMATION -Symmetry information: -Trigonal crystal system. -Space group number : 148 -Hall symbol : -R 3 -Hermann-Mauguin symbol : R-3 - -Bravais lattice vectors : - 6.5470366 0.0000000 5.7861333 - -3.2735183 5.6699000 5.7861333 - -3.2735183 -5.6699000 5.7861333 -All sites, (cartesian coordinates): -Atom x y z -Fe 0.0000000 0.0000000 0.0000000 -N -3.2810474 -3.8821805 6.9872768 -N 3.2810474 3.8821805 10.3711232 -N -5.0025907 0.9003801 10.3711232 -N -1.7215433 4.7825606 6.9872768 -N 1.7215433 -4.7825606 10.3711232 -N 5.0025907 -0.9003801 6.9872768 -C -3.2820294 -2.8973189 7.5399682 -C 3.2820294 2.8973189 9.8184318 -C -4.1501665 1.3936614 9.8184318 -C -0.8681371 4.2909803 7.5399682 -C 0.8681371 -4.2909803 9.8184318 -C 4.1501665 -1.3936614 7.5399682 -C -3.2889038 -1.6380341 8.2678059 -C 3.2889038 1.6380341 9.0905941 -C -3.0630311 2.0292572 9.0905941 -C 0.2258728 3.6672913 8.2678059 -C -0.2258728 -3.6672913 9.0905941 -C 3.0630311 -2.0292572 8.2678059 -H -3.2181958 -1.8160690 9.2277254 -H 3.2181958 1.8160690 8.1306746 -H -3.1818598 1.8790049 8.1306746 -H 0.0363361 3.6950738 9.2277254 -H -0.0363361 -3.6950738 8.1306746 -H 3.1818598 -1.8790049 9.2277254 -H -4.1246330 -1.1589276 8.0838069 -H 4.1246330 1.1589276 9.2745931 -H -3.0659772 2.9925732 9.2745931 -H 1.0586558 4.1515008 8.0838069 -H -1.0586558 -4.1515008 9.2745931 -H 3.0659772 -2.9925732 8.0838069 -H -2.5287929 -1.0903218 7.9796565 -H 2.5287929 1.0903218 9.3787435 -H -2.2086428 1.6448380 9.3787435 -H 0.3201501 2.7351598 7.9796565 -H -0.3201501 -2.7351598 9.3787435 -H 2.2086428 -1.6448380 7.9796565 -Sb 0.0000000 0.0000000 5.7023154 -Sb 0.0000000 0.0000000 11.6560846 -F 0.0150582 -1.5422128 6.7032355 -F -0.0150582 1.5422128 10.6551645 -F -1.3280664 -0.7841472 10.6551645 -F -1.3431246 0.7580656 6.7032355 -F 1.3431246 -0.7580656 10.6551645 -F 1.3280664 0.7841472 6.7032355 -F -1.2930397 -0.8017239 4.6433141 -F 1.2930397 0.8017239 12.7150859 -F -1.3408331 0.7189433 12.7150859 -F -0.0477934 1.5206672 4.6433141 -F 0.0477934 -1.5206672 12.7150859 -F 1.3408331 -0.7189433 4.6433141 - -Unit cell volume : 644.3619079 A^3 -Unit cell density : 1.2006330 u/A^3 = 13.4541390 g/cm^3 diff --git a/cell2mol/test/ACEYOW/Cell_ACEYOW.cell b/cell2mol/test/ACEYOW/Cell_ACEYOW.cell deleted file mode 100644 index 7f795ad44..000000000 Binary files a/cell2mol/test/ACEYOW/Cell_ACEYOW.cell and /dev/null differ diff --git a/cell2mol/test/ACEYOW/Ref_Cell_ACEYOW.cell b/cell2mol/test/ACEYOW/Ref_Cell_ACEYOW.cell deleted file mode 100644 index 5981466f3..000000000 Binary files a/cell2mol/test/ACEYOW/Ref_Cell_ACEYOW.cell and /dev/null differ diff --git a/cell2mol/test/ACEYOW/cell2mol.out b/cell2mol/test/ACEYOW/cell2mol.out deleted file mode 100644 index c2a1d4fef..000000000 --- a/cell2mol/test/ACEYOW/cell2mol.out +++ /dev/null @@ -1,1470 +0,0 @@ -cell2mol version 2.0 -INITIATING cell object from info path: ACEYOW.info -Debug level: 2 -######################################### - GETREFS: Generate reference molecules -######################################### -GETREFS: found 2 reference molecules -GETREFS: ['F6-Sb', 'H18-C12-N6-Fe'] -GETREFS: [------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 7 - Formula = F6-Sb - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 37 - Formula = H18-C12-N6-Fe - Has Adjacency Matrix = YES - Number of Ligands = 6 - Number of Metals = 1 ---------------------------------------------------- -] -GETREFS: working with F6-Sb -GETREFS: working with H18-C12-N6-Fe - -LIGAND.SPLIT_LIGAND: splitting H3-C2-N into groups -LIGAND.SPLIT_LIGAND: self.indices=[0, 1, 2, 3, 4, 5] -LIGAND.SPLIT_LIGAND: connected_idx=[0] -LIGAND.SPLIT_LIGAND: conn_labels=['N'] -SPILT_SPECIES: Laplacian lap=array([[0]]) -SPILT_SPECIES: graph=<1x1 sparse matrix of type '' - with 0 stored elements in Compressed Sparse Row format> -LIGAND.SPLIT_LIGAND: blocklist=[[0]] -LIGAND.SPLIT_LIGAND: block=[0] -EXTRACT_FROM_LIST. received: entrylist=[0] old_array=[0] -EXTRACT_FROM_LIST. received: idx=0 val=0 old_array[val]=0 -EXTRACT_FROM_LIST. new_array=array([0], dtype=object) -LIGAND.SPLIT_LIGAND: gr_indices=[0] -EXTRACT_FROM_LIST. received: entrylist=[0] old_array=['N'] -EXTRACT_FROM_LIST. received: idx=0 val=0 old_array[val]='N' -EXTRACT_FROM_LIST. new_array=array(['N'], dtype=object) -Entering COORD_CORR_NONHAPTIC: - Coordinating atom label=N with mconnec=1, group index 0 - evaluating coordination with metal Fe - -------------- Cell2mol METAL Object -------------- - Version = 0.1 - Type = atom - Sub-Type = metal - Label = Fe - Atomic Number = 26 - Index in Molecule = 0 - Metal Adjacency (mconnec) = 6 - Regular Adjacencies (connec) = 6 ----------------------------------------------------- - -ADD_ATOM: Metalist length 1 -ADD_ATOM: Ligand Atoms 6 -ADD_ATOM: site= 0 -ADD_ATOM: target ligand atom N -ADD_ATOM: evaluating apos=array([4.78256065, 1.72154327, 6.98727675]) and tgt.coord=[5.67046699, 3.2731909394491323, 5.7855547199999995] -ADD_ATOM: Chosen Metal index 0. H is added at site 0 - connectivity verified for atom N with ligand index 0 -LIGAND.SPLIT_LIGAND: new group is found -LIGAND.SPLIT_LIGAND: found groups ['N'] -[------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 1 - Formula = N - Has Adjacency Matrix = YES - Origin = split_ligand - Number of Metals = 1 ---------------------------------------------------- -] - -LIGAND.SPLIT_LIGAND: splitting H3-C2-N into groups -LIGAND.SPLIT_LIGAND: self.indices=[0, 1, 2, 3, 4, 5] -LIGAND.SPLIT_LIGAND: connected_idx=[0] -LIGAND.SPLIT_LIGAND: conn_labels=['N'] -SPILT_SPECIES: Laplacian lap=array([[0]]) -SPILT_SPECIES: graph=<1x1 sparse matrix of type '' - with 0 stored elements in Compressed Sparse Row format> -LIGAND.SPLIT_LIGAND: blocklist=[[0]] -LIGAND.SPLIT_LIGAND: block=[0] -EXTRACT_FROM_LIST. received: entrylist=[0] old_array=[0] -EXTRACT_FROM_LIST. received: idx=0 val=0 old_array[val]=0 -EXTRACT_FROM_LIST. new_array=array([0], dtype=object) -LIGAND.SPLIT_LIGAND: gr_indices=[0] -EXTRACT_FROM_LIST. received: entrylist=[0] old_array=['N'] -EXTRACT_FROM_LIST. received: idx=0 val=0 old_array[val]='N' -EXTRACT_FROM_LIST. new_array=array(['N'], dtype=object) -Entering COORD_CORR_NONHAPTIC: - Coordinating atom label=N with mconnec=1, group index 0 - evaluating coordination with metal Fe - -------------- Cell2mol METAL Object -------------- - Version = 0.1 - Type = atom - Sub-Type = metal - Label = Fe - Atomic Number = 26 - Index in Molecule = 0 - Metal Adjacency (mconnec) = 6 - Regular Adjacencies (connec) = 6 ----------------------------------------------------- - -ADD_ATOM: Metalist length 1 -ADD_ATOM: Ligand Atoms 6 -ADD_ATOM: site= 0 -ADD_ATOM: target ligand atom N -ADD_ATOM: evaluating apos=array([7.45761947, 3.28104738, 6.98727675]) and tgt.coord=[5.67046699, 3.2731909394491323, 5.7855547199999995] -ADD_ATOM: Chosen Metal index 0. H is added at site 0 - connectivity verified for atom N with ligand index 0 -LIGAND.SPLIT_LIGAND: new group is found -LIGAND.SPLIT_LIGAND: found groups ['N'] -[------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 1 - Formula = N - Has Adjacency Matrix = YES - Origin = split_ligand - Number of Metals = 1 ---------------------------------------------------- -] - -LIGAND.SPLIT_LIGAND: splitting H3-C2-N into groups -LIGAND.SPLIT_LIGAND: self.indices=[0, 1, 2, 3, 4, 5] -LIGAND.SPLIT_LIGAND: connected_idx=[0] -LIGAND.SPLIT_LIGAND: conn_labels=['N'] -SPILT_SPECIES: Laplacian lap=array([[0]]) -SPILT_SPECIES: graph=<1x1 sparse matrix of type '' - with 0 stored elements in Compressed Sparse Row format> -LIGAND.SPLIT_LIGAND: blocklist=[[0]] -LIGAND.SPLIT_LIGAND: block=[0] -EXTRACT_FROM_LIST. received: entrylist=[0] old_array=[0] -EXTRACT_FROM_LIST. received: idx=0 val=0 old_array[val]=0 -EXTRACT_FROM_LIST. new_array=array([0], dtype=object) -LIGAND.SPLIT_LIGAND: gr_indices=[0] -EXTRACT_FROM_LIST. received: entrylist=[0] old_array=['N'] -EXTRACT_FROM_LIST. received: idx=0 val=0 old_array[val]='N' -EXTRACT_FROM_LIST. new_array=array(['N'], dtype=object) -Entering COORD_CORR_NONHAPTIC: - Coordinating atom label=N with mconnec=1, group index 0 - evaluating coordination with metal Fe - -------------- Cell2mol METAL Object -------------- - Version = 0.1 - Type = atom - Sub-Type = metal - Label = Fe - Atomic Number = 26 - Index in Molecule = 0 - Metal Adjacency (mconnec) = 6 - Regular Adjacencies (connec) = 6 ----------------------------------------------------- - -ADD_ATOM: Metalist length 1 -ADD_ATOM: Ligand Atoms 6 -ADD_ATOM: site= 0 -ADD_ATOM: target ligand atom N -ADD_ATOM: evaluating apos=array([6.57027445, 1.72907563, 4.5849957 ]) and tgt.coord=[5.67046699, 3.2731909394491323, 5.7855547199999995] -ADD_ATOM: Chosen Metal index 0. H is added at site 0 - connectivity verified for atom N with ligand index 0 -LIGAND.SPLIT_LIGAND: new group is found -LIGAND.SPLIT_LIGAND: found groups ['N'] -[------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 1 - Formula = N - Has Adjacency Matrix = YES - Origin = split_ligand - Number of Metals = 1 ---------------------------------------------------- -] - -LIGAND.SPLIT_LIGAND: splitting H3-C2-N into groups -LIGAND.SPLIT_LIGAND: self.indices=[0, 1, 2, 3, 4, 5] -LIGAND.SPLIT_LIGAND: connected_idx=[0] -LIGAND.SPLIT_LIGAND: conn_labels=['N'] -SPILT_SPECIES: Laplacian lap=array([[0]]) -SPILT_SPECIES: graph=<1x1 sparse matrix of type '' - with 0 stored elements in Compressed Sparse Row format> -LIGAND.SPLIT_LIGAND: blocklist=[[0]] -LIGAND.SPLIT_LIGAND: block=[0] -EXTRACT_FROM_LIST. received: entrylist=[0] old_array=[0] -EXTRACT_FROM_LIST. received: idx=0 val=0 old_array[val]=0 -EXTRACT_FROM_LIST. new_array=array([0], dtype=object) -LIGAND.SPLIT_LIGAND: gr_indices=[0] -EXTRACT_FROM_LIST. received: entrylist=[0] old_array=['N'] -EXTRACT_FROM_LIST. received: idx=0 val=0 old_array[val]='N' -EXTRACT_FROM_LIST. new_array=array(['N'], dtype=object) -Entering COORD_CORR_NONHAPTIC: - Coordinating atom label=N with mconnec=1, group index 0 - evaluating coordination with metal Fe - -------------- Cell2mol METAL Object -------------- - Version = 0.1 - Type = atom - Sub-Type = metal - Label = Fe - Atomic Number = 26 - Index in Molecule = 0 - Metal Adjacency (mconnec) = 6 - Regular Adjacencies (connec) = 6 ----------------------------------------------------- - -ADD_ATOM: Metalist length 1 -ADD_ATOM: Ligand Atoms 6 -ADD_ATOM: site= 0 -ADD_ATOM: target ligand atom N -ADD_ATOM: evaluating apos=array([6.55723368, 4.82549659, 4.5849957 ]) and tgt.coord=[5.67046699, 3.2731909394491323, 5.7855547199999995] -ADD_ATOM: Chosen Metal index 0. H is added at site 0 - connectivity verified for atom N with ligand index 0 -LIGAND.SPLIT_LIGAND: new group is found -LIGAND.SPLIT_LIGAND: found groups ['N'] -[------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 1 - Formula = N - Has Adjacency Matrix = YES - Origin = split_ligand - Number of Metals = 1 ---------------------------------------------------- -] - -LIGAND.SPLIT_LIGAND: splitting H3-C2-N into groups -LIGAND.SPLIT_LIGAND: self.indices=[0, 1, 2, 3, 4, 5] -LIGAND.SPLIT_LIGAND: connected_idx=[0] -LIGAND.SPLIT_LIGAND: conn_labels=['N'] -SPILT_SPECIES: Laplacian lap=array([[0]]) -SPILT_SPECIES: graph=<1x1 sparse matrix of type '' - with 0 stored elements in Compressed Sparse Row format> -LIGAND.SPLIT_LIGAND: blocklist=[[0]] -LIGAND.SPLIT_LIGAND: block=[0] -EXTRACT_FROM_LIST. received: entrylist=[0] old_array=[0] -EXTRACT_FROM_LIST. received: idx=0 val=0 old_array[val]=0 -EXTRACT_FROM_LIST. new_array=array([0], dtype=object) -LIGAND.SPLIT_LIGAND: gr_indices=[0] -EXTRACT_FROM_LIST. received: entrylist=[0] old_array=['N'] -EXTRACT_FROM_LIST. received: idx=0 val=0 old_array[val]='N' -EXTRACT_FROM_LIST. new_array=array(['N'], dtype=object) -Entering COORD_CORR_NONHAPTIC: - Coordinating atom label=N with mconnec=1, group index 0 - evaluating coordination with metal Fe - -------------- Cell2mol METAL Object -------------- - Version = 0.1 - Type = atom - Sub-Type = metal - Label = Fe - Atomic Number = 26 - Index in Molecule = 0 - Metal Adjacency (mconnec) = 6 - Regular Adjacencies (connec) = 6 ----------------------------------------------------- - -ADD_ATOM: Metalist length 1 -ADD_ATOM: Ligand Atoms 6 -ADD_ATOM: site= 0 -ADD_ATOM: target ligand atom N -ADD_ATOM: evaluating apos=array([3.88217486, 3.26599247, 4.5849957 ]) and tgt.coord=[5.67046699, 3.2731909394491323, 5.7855547199999995] -ADD_ATOM: Chosen Metal index 0. H is added at site 0 - connectivity verified for atom N with ligand index 0 -LIGAND.SPLIT_LIGAND: new group is found -LIGAND.SPLIT_LIGAND: found groups ['N'] -[------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 1 - Formula = N - Has Adjacency Matrix = YES - Origin = split_ligand - Number of Metals = 1 ---------------------------------------------------- -] - -LIGAND.SPLIT_LIGAND: splitting H3-C2-N into groups -LIGAND.SPLIT_LIGAND: self.indices=[0, 1, 2, 3, 4, 5] -LIGAND.SPLIT_LIGAND: connected_idx=[0] -LIGAND.SPLIT_LIGAND: conn_labels=['N'] -SPILT_SPECIES: Laplacian lap=array([[0]]) -SPILT_SPECIES: graph=<1x1 sparse matrix of type '' - with 0 stored elements in Compressed Sparse Row format> -LIGAND.SPLIT_LIGAND: blocklist=[[0]] -LIGAND.SPLIT_LIGAND: block=[0] -EXTRACT_FROM_LIST. received: entrylist=[0] old_array=[0] -EXTRACT_FROM_LIST. received: idx=0 val=0 old_array[val]=0 -EXTRACT_FROM_LIST. new_array=array([0], dtype=object) -LIGAND.SPLIT_LIGAND: gr_indices=[0] -EXTRACT_FROM_LIST. received: entrylist=[0] old_array=['N'] -EXTRACT_FROM_LIST. received: idx=0 val=0 old_array[val]='N' -EXTRACT_FROM_LIST. new_array=array(['N'], dtype=object) -Entering COORD_CORR_NONHAPTIC: - Coordinating atom label=N with mconnec=1, group index 0 - evaluating coordination with metal Fe - -------------- Cell2mol METAL Object -------------- - Version = 0.1 - Type = atom - Sub-Type = metal - Label = Fe - Atomic Number = 26 - Index in Molecule = 0 - Metal Adjacency (mconnec) = 6 - Regular Adjacencies (connec) = 6 ----------------------------------------------------- - -ADD_ATOM: Metalist length 1 -ADD_ATOM: Ligand Atoms 6 -ADD_ATOM: site= 0 -ADD_ATOM: target ligand atom N -ADD_ATOM: evaluating apos=array([4.76951988, 4.81796422, 6.98727675]) and tgt.coord=[5.67046699, 3.2731909394491323, 5.7855547199999995] -ADD_ATOM: Chosen Metal index 0. H is added at site 0 - connectivity verified for atom N with ligand index 0 -LIGAND.SPLIT_LIGAND: new group is found -LIGAND.SPLIT_LIGAND: found groups ['N'] -[------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 1 - Formula = N - Has Adjacency Matrix = YES - Origin = split_ligand - Number of Metals = 1 ---------------------------------------------------- -] -LIGAND.Get_denticity: checking connectivity of ligand H3-C2-N -LIGAND.Get_denticity: initial connectivity is 1 -LIGAND.Get_denticity: final connectivity of ligand H3-C2-N is 1 -LIGAND.Get_denticity: checking connectivity of ligand H3-C2-N -LIGAND.Get_denticity: initial connectivity is 1 -LIGAND.Get_denticity: final connectivity of ligand H3-C2-N is 1 -LIGAND.Get_denticity: checking connectivity of ligand H3-C2-N -LIGAND.Get_denticity: initial connectivity is 1 -LIGAND.Get_denticity: final connectivity of ligand H3-C2-N is 1 -LIGAND.Get_denticity: checking connectivity of ligand H3-C2-N -LIGAND.Get_denticity: initial connectivity is 1 -LIGAND.Get_denticity: final connectivity of ligand H3-C2-N is 1 -LIGAND.Get_denticity: checking connectivity of ligand H3-C2-N -LIGAND.Get_denticity: initial connectivity is 1 -LIGAND.Get_denticity: final connectivity of ligand H3-C2-N is 1 -LIGAND.Get_denticity: checking connectivity of ligand H3-C2-N -LIGAND.Get_denticity: initial connectivity is 1 -LIGAND.Get_denticity: final connectivity of ligand H3-C2-N is 1 - -METAL.Get_coord_geometry: Fe -METAL.Get_coord_geometry: -coord_group=[------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 1 - Formula = N - Has Adjacency Matrix = YES - Origin = split_ligand - Number of Metals = 1 ---------------------------------------------------- -, ------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 1 - Formula = N - Has Adjacency Matrix = YES - Origin = split_ligand - Number of Metals = 1 ---------------------------------------------------- -, ------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 1 - Formula = N - Has Adjacency Matrix = YES - Origin = split_ligand - Number of Metals = 1 ---------------------------------------------------- -, ------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 1 - Formula = N - Has Adjacency Matrix = YES - Origin = split_ligand - Number of Metals = 1 ---------------------------------------------------- -, ------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 1 - Formula = N - Has Adjacency Matrix = YES - Origin = split_ligand - Number of Metals = 1 ---------------------------------------------------- -, ------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 1 - Formula = N - Has Adjacency Matrix = YES - Origin = split_ligand - Number of Metals = 1 ---------------------------------------------------- -] -METAL.Get_coord_geometry: coord_nr=6 -SHAPE_MEASURE: symbols=['Fe', 'N', 'N', 'N', 'N', 'N', 'N'] -SHAPE_MEASURE: positions=[[5.67046699, 3.2731909394491323, 5.7855547199999995], [4.78256065, 1.7215432693832378, 6.987276752], [7.457619470000001, 3.281047383348201, 6.987276752], [6.570274450100001, 1.7290756349714687, 4.5849957008], [6.557233680100001, 4.8254965866915756, 4.5849957008], [3.882174860100002, 3.265992472726612, 4.5849957008], [4.7695198800000025, 4.8179642211033435, 6.987276752]] -SHAPE_MEASURE: coordination number of metal center 6 -SHAPE_MEASURE: connectivity of metal center(1) [[1, 2], [1, 3], [1, 4], [1, 5], [1, 6], [1, 7]] -DEFINE_coordination_geometry: The number of coordinating points: 6 -DEFINE_coordination_geometry: {'Hexagon': 31.102, 'Pentagonal pyramidal': 29.369, 'Octahedral': 0.057, 'Trigonal prismatic': 16.556} -DEFINE_coordination_geometry: The type of hapticity : [] -DEFINE_coordination_geometry: The most likely geometry is 'Octahedral' with deviation value 0.057 -METAL.Get_coord_geometry: self.coord_geometry='Octahedral' self.geom_deviation=0.057 -METAL.Get_relative_metal_radius: diff_list=[1.444, 1.444, 1.443, 1.443, 1.444, 1.445] -METAL.Get_relative_metal_radius: average=1.444 -METAL.Get_coord_geometry: self.rel_metal_radius=1.094 - -################## -Checking Missing H -################## -Not a Single Molecule has Missing H atoms (apparently) -------------------------------- -Errors in Reference Molecules -------------------------------- -Cell2mol terminated with error number 0. Message: -No Errors Found -SAVING cell2mol CELL object to /Users/ycho/cell2mol/cell2mol/test/ACEYOW/Ref_Cell_ACEYOW.cell -ENTERING cell2mol with debug=2 -Entered CELL.MOLECLIST with debug=2 -CELL.MOLECLIST passed initial checks -SPILT_SPECIES: Laplacian lap=array([[ 0, 0, 0, ..., 0, 0, 0], - [ 0, -1, 0, ..., 0, 0, 0], - [ 0, 0, -1, ..., 0, 0, 0], - ..., - [ 0, 0, 0, ..., -1, 0, 0], - [ 0, 0, 0, ..., 0, -1, 0], - [ 0, 0, 0, ..., 0, 0, -1]]) -SPILT_SPECIES: graph=<51x51 sparse matrix of type '' - with 134 stored elements in Compressed Sparse Row format> -CELL.MOLECLIST: found 9 blocks -CELL.MOLECLIST: blocklist=[[38, 40, 41, 43, 46, 47, 49], [37, 39, 42, 44, 45, 48, 50], [1, 7, 13, 19, 25, 31], [6, 12, 18, 24, 30, 36], [5, 11, 17, 23, 29, 35], [4, 10, 16, 22, 28, 34], [3, 9, 15, 21, 27, 33], [2, 8, 14, 20, 26, 32], [0]] -CELL.MOLECLIST: doing block=[38, 40, 41, 43, 46, 47, 49] -CELL.MOLECLIST: doing block=[37, 39, 42, 44, 45, 48, 50] -CELL.MOLECLIST: doing block=[1, 7, 13, 19, 25, 31] -CELL.MOLECLIST: doing block=[6, 12, 18, 24, 30, 36] -CELL.MOLECLIST: doing block=[5, 11, 17, 23, 29, 35] -CELL.MOLECLIST: doing block=[4, 10, 16, 22, 28, 34] -CELL.MOLECLIST: doing block=[3, 9, 15, 21, 27, 33] -CELL.MOLECLIST: doing block=[2, 8, 14, 20, 26, 32] -CELL.MOLECLIST: doing block=[0] -CLASSIFY_FRAGMENTS. 9 Blocks sorted as (Molec, Frag, H): 2 7 0 - -############################################## -FRAG_RECONSTRUCT. 7 molecules submitted to SEQUENTIAL with Heavy -############################################## -FINISHED succesfully -FRAG_RECONSTRUCT. 1 molecules and 0 fragments out of SEQUENTIAL with Heavy - -Cell Reconstruction Finished Normally. Total execution time: 0.59 seconds -Getting unique species in cell -Molecule 0 formula=F6-Sb -New molecule found with: formula=F6-Sb and added in position 0 -Molecule 1 formula=F6-Sb -Molecule 1 is the same with 0 in typelist -Molecule 2 formula=H18-C12-N6-Fe -New ligand found with: formula H3-C2-N added in position 1 -ligand 1 is the same with 0 in typelist -ligand 2 is the same with 0 in typelist -ligand 3 is the same with 0 in typelist -ligand 4 is the same with 0 in typelist -ligand 5 is the same with 0 in typelist -New Metal Center found with: labels Fe and added in position 2 -3 Species (Metal or Ligand or Molecules) to Characterize - POSCHARGE: doing empty PROTONATION for this specie - CREATED EMPTY PROTONATION ------------- Cell2mol Protonation ---------------- - Status = True - Labels = ['Sb', 'F', 'F', 'F', 'F', 'F', 'F'] - Type = Empty - Atoms added in positions = [0, 0, 0, 0, 0, 0, 0] - Atoms blocked (no atoms added) = [0, 0, 0, 0, 0, 0, 0] ---------------------------------------------------- - - POSCHARGE will try charges [0, -1, 1, -2, 2, -3, 3] - POSCHARGE: charge 0 with smiles F[Sb-](F)(F)(F)(F)F - POSCHARGE: charge 0 with smiles F[Sb-](F)(F)(F)(F)F - POSCHARGE: charge 0 with smiles F[Sb-](F)(F)(F)(F)F - POSCHARGE: charge 0 with smiles F[Sb-](F)(F)(F)(F)F - POSCHARGE: charge 0 with smiles F[Sb-](F)(F)(F)(F)F - POSCHARGE: charge 0 with smiles F[Sb-](F)(F)(F)(F)F - POSCHARGE: charge 0 with smiles F[Sb-](F)(F)(F)(F)F - NEW SELECT FUNCTION: uncorr_total: [-1, -1, -1, -1, -1, -1, -1] - NEW SELECT FUNCTION: uncorr_abs_total: [1, 1, 1, 1, 1, 1, 1] - NEW SELECT FUNCTION: uncorr_abs_atcharge: [1, 1, 1, 1, 1, 1, 1] - NEW SELECT FUNCTION: uncorr_zwitt: [False, False, False, False, False, False, False] - NEW SELECT FUNCTION: coincide: [False, True, False, False, False, False, False] - NEW SELECT FUNCTION: listofmintot: [0, 1, 2, 3, 4, 5, 6] - NEW SELECT FUNCTION: listofminabs: [0, 1, 2, 3, 4, 5, 6] - NEW SELECT FUNCTION: tmplist: [1], including: - NEW SELECT FUNCTION: Corr_charge=-1 - NEW SELECT FUNCTION: Smiles=F[Sb-](F)(F)(F)(F)F - NEW SELECT FUNCTION: found corr_charges=[-1] - NEW SELECT FUNCTION: doing tgt_charge=-1 - NEW SELECT FUNCTION: charge_state added - NEW SELECT FUNCTION: Case 1, only one entry for -1 in tmplist - GET_PROTONATION_STATES: Evaluating group N with parent_indices [0] - GET_PROTONATION_STATES: evaluating non-haptic group with index 0 and label N - GET_PROTONATION_STATES: adj=0 Fe - GET_PROTONATION_STATES: adj=8 C - GET_PROTONATION_STATES: will be sent to nonlocal due to N atom - - GET_PROTONATION_STATES: Enters non-local with: - GET_PROTONATION_STATES: block: [0 0 0 0 0 0] - GET_PROTONATION_STATES: addedlist: [0 0 0 0 0 0] - GET_PROTONATION_STATES: 1 non_local_groups groups found - - GET_PROTONATION_STATES: doing combination 0 - GET_PROTONATION_STATES: Protonation SAVED with 0 atoms added to ligand. status=True - - GET_PROTONATION_STATES: doing combination 1 - GET_PROTONATION_STATES: Added H to atom 0 with: a.mconnec=1 and label=N - GET_PROTONATION_STATES: Protonation SAVED with 1 atoms added to ligand. status=True - GET_PROTONATION_STATES:protonation_states=[------------- Cell2mol Protonation ---------------- - Status = True - Labels = ['N', 'C', 'C', 'H', 'H', 'H'] - Type = Non-local - Atoms added in positions = [0 0 0 0 0 0] - Atoms blocked (no atoms added) = [0 0 0 0 0 0] ---------------------------------------------------- -, ------------- Cell2mol Protonation ---------------- - Status = True - Labels = ['N', 'C', 'C', 'H', 'H', 'H', 'H'] - Type = Non-local - Atoms added in positions = [1 0 0 0 0 0] - Atoms blocked (no atoms added) = [0 0 0 0 0 0] ---------------------------------------------------- -] - POSCHARGE will try charges [0, -1, 1, -2, 2] - POSCHARGE: charge 0 with smiles [H]C([H])([H])C#N - POSCHARGE: charge 0 with smiles [H]C([H])([H])C[N-2] - POSCHARGE: charge 0 with smiles [H]C([H])([H])C[N-2] - POSCHARGE: charge 0 with smiles [H]C([H])([H])C[N-2] - POSCHARGE: charge 0 with smiles [H]C([H])([H])C[N-2] - POSCHARGE will try charges [0, -1, 1, -2, 2] - POSCHARGE: charge 0 with smiles [H][N-]CC([H])([H])[H] - POSCHARGE: charge 0 with smiles [H]N=[C-]C([H])([H])[H] - POSCHARGE: charge 0 with smiles [H][N+]#CC([H])([H])[H] - POSCHARGE: charge 0 with smiles [H][N-]CC([H])([H])[H] - POSCHARGE: charge 0 with smiles [H][N-]CC([H])([H])[H] - NEW SELECT FUNCTION: uncorr_total: [-1, -1, 1, -1, -1] - NEW SELECT FUNCTION: uncorr_abs_total: [1, 1, 1, 1, 1] - NEW SELECT FUNCTION: uncorr_abs_atcharge: [1, 1, 1, 1, 1] - NEW SELECT FUNCTION: uncorr_zwitt: [False, False, False, False, False] - NEW SELECT FUNCTION: coincide: [False, True, True, False, False] - NEW SELECT FUNCTION: listofmintot: [0, 1, 2, 3, 4] - NEW SELECT FUNCTION: listofminabs: [0, 1, 2, 3, 4] - NEW SELECT FUNCTION: tmplist: [1, 2], including: - NEW SELECT FUNCTION: Corr_charge=-2 - NEW SELECT FUNCTION: Smiles=[H]N=[C-]C([H])([H])[H] - NEW SELECT FUNCTION: Corr_charge=0 - NEW SELECT FUNCTION: Smiles=[H][N+]#CC([H])([H])[H] - NEW SELECT FUNCTION: found corr_charges=[-2, 0] - NEW SELECT FUNCTION: doing tgt_charge=-2 - NEW SELECT FUNCTION: charge_state added - NEW SELECT FUNCTION: Case 1, only one entry for -2 in tmplist - NEW SELECT FUNCTION: doing tgt_charge=0 - NEW SELECT FUNCTION: charge_state added - NEW SELECT FUNCTION: Case 1, only one entry for 0 in tmplist -BALANCE: iterlist [[-1], [-2, 0], [2, 3]] -BALANCE: unique_indices [0, 0, 1, 1, 1, 1, 1, 1, 2] -BALANCE: tmpdistr [(-1, -2, 2), (-1, -2, 3), (-1, 0, 2), (-1, 0, 3)] -BALANCE: alldistr added: [-1, -1, -2, -2, -2, -2, -2, -2, 2] -BALANCE: distribution=[-1, -1, -2, -2, -2, -2, -2, -2, 2] -BALANCE: alldistr added: [-1, -1, -2, -2, -2, -2, -2, -2, 3] -BALANCE: distribution=[-1, -1, -2, -2, -2, -2, -2, -2, 2] -BALANCE: distribution=[-1, -1, -2, -2, -2, -2, -2, -2, 3] -BALANCE: alldistr added: [-1, -1, 0, 0, 0, 0, 0, 0, 2] -BALANCE: distribution=[-1, -1, -2, -2, -2, -2, -2, -2, 2] -BALANCE: distribution=[-1, -1, -2, -2, -2, -2, -2, -2, 3] -BALANCE: distribution=[-1, -1, 0, 0, 0, 0, 0, 0, 2] -BALANCE: alldistr added: [-1, -1, 0, 0, 0, 0, 0, 0, 3] -BALANCE: distribution=[-1, -1, -2, -2, -2, -2, -2, -2, 2] -BALANCE: distribution=[-1, -1, -2, -2, -2, -2, -2, -2, 3] -BALANCE: distribution=[-1, -1, 0, 0, 0, 0, 0, 0, 2] -BALANCE: distribution=[-1, -1, 0, 0, 0, 0, 0, 0, 3] - -FINAL Charge Distribution: [[-1, -1, 0, 0, 0, 0, 0, 0, 2]] - -######################################### -Assigning Charges and Preparing Molecules -######################################### -SET_TARGET_CHARGE: ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 7 - Formula = F6-Sb - Has Adjacency Matrix = YES - Origin = cell.reconstruct ---------------------------------------------------- - [0, 1] -1 -SET_TARGET_CHARGE: Target charge -1 of F6-Sb exists in [-1]. -SET_TARGET_CHARGE: F6-Sb - POSCHARGE: doing empty PROTONATION for this specie - CREATED EMPTY PROTONATION ------------- Cell2mol Protonation ---------------- - Status = True - Labels = ['Sb', 'F', 'F', 'F', 'F', 'F', 'F'] - Type = Empty - Atoms added in positions = [0, 0, 0, 0, 0, 0, 0] - Atoms blocked (no atoms added) = [0, 0, 0, 0, 0, 0, 0] ---------------------------------------------------- - - POSCHARGE will try charges [0, -1, 1, -2, 2, -3, 3] - POSCHARGE: charge 0 with smiles F[Sb-](F)(F)(F)(F)F - POSCHARGE: charge 0 with smiles F[Sb-](F)(F)(F)(F)F - POSCHARGE: charge 0 with smiles F[Sb-](F)(F)(F)(F)F - POSCHARGE: charge 0 with smiles F[Sb-](F)(F)(F)(F)F - POSCHARGE: charge 0 with smiles F[Sb-](F)(F)(F)(F)F - POSCHARGE: charge 0 with smiles F[Sb-](F)(F)(F)(F)F - POSCHARGE: charge 0 with smiles F[Sb-](F)(F)(F)(F)F - NEW SELECT FUNCTION: uncorr_total: [-1, -1, -1, -1, -1, -1, -1] - NEW SELECT FUNCTION: uncorr_abs_total: [1, 1, 1, 1, 1, 1, 1] - NEW SELECT FUNCTION: uncorr_abs_atcharge: [1, 1, 1, 1, 1, 1, 1] - NEW SELECT FUNCTION: uncorr_zwitt: [False, False, False, False, False, False, False] - NEW SELECT FUNCTION: coincide: [False, True, False, False, False, False, False] - NEW SELECT FUNCTION: listofmintot: [0, 1, 2, 3, 4, 5, 6] - NEW SELECT FUNCTION: listofminabs: [0, 1, 2, 3, 4, 5, 6] - NEW SELECT FUNCTION: tmplist: [1], including: - NEW SELECT FUNCTION: Corr_charge=-1 - NEW SELECT FUNCTION: Smiles=F[Sb-](F)(F)(F)(F)F - NEW SELECT FUNCTION: found corr_charges=[-1] - NEW SELECT FUNCTION: doing tgt_charge=-1 - NEW SELECT FUNCTION: charge_state added - NEW SELECT FUNCTION: Case 1, only one entry for -1 in tmplist -SET_TARGET_CHARGE: Target charge -1 of F6-Sb exists in [-1]. -SET_TARGET_CHARGE: ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 7 - Formula = F6-Sb - Has Adjacency Matrix = YES - Total Charge = -1 - Smiles = F[Sb-](F)(F)(F)(F)F - Origin = cell.reconstruct ---------------------------------------------------- - [0, 1] -1 -SET_TARGET_CHARGE: Target charge -1 of F6-Sb exists in [-1]. -SET_TARGET_CHARGE: F6-Sb - POSCHARGE: doing empty PROTONATION for this specie - CREATED EMPTY PROTONATION ------------- Cell2mol Protonation ---------------- - Status = True - Labels = ['Sb', 'F', 'F', 'F', 'F', 'F', 'F'] - Type = Empty - Atoms added in positions = [0, 0, 0, 0, 0, 0, 0] - Atoms blocked (no atoms added) = [0, 0, 0, 0, 0, 0, 0] ---------------------------------------------------- - - POSCHARGE will try charges [0, -1, 1, -2, 2, -3, 3] - POSCHARGE: charge 0 with smiles F[Sb-](F)(F)(F)(F)F - POSCHARGE: charge 0 with smiles F[Sb-](F)(F)(F)(F)F - POSCHARGE: charge 0 with smiles F[Sb-](F)(F)(F)(F)F - POSCHARGE: charge 0 with smiles F[Sb-](F)(F)(F)(F)F - POSCHARGE: charge 0 with smiles F[Sb-](F)(F)(F)(F)F - POSCHARGE: charge 0 with smiles F[Sb-](F)(F)(F)(F)F - POSCHARGE: charge 0 with smiles F[Sb-](F)(F)(F)(F)F - NEW SELECT FUNCTION: uncorr_total: [-1, -1, -1, -1, -1, -1, -1] - NEW SELECT FUNCTION: uncorr_abs_total: [1, 1, 1, 1, 1, 1, 1] - NEW SELECT FUNCTION: uncorr_abs_atcharge: [1, 1, 1, 1, 1, 1, 1] - NEW SELECT FUNCTION: uncorr_zwitt: [False, False, False, False, False, False, False] - NEW SELECT FUNCTION: coincide: [False, True, False, False, False, False, False] - NEW SELECT FUNCTION: listofmintot: [0, 1, 2, 3, 4, 5, 6] - NEW SELECT FUNCTION: listofminabs: [0, 1, 2, 3, 4, 5, 6] - NEW SELECT FUNCTION: tmplist: [1], including: - NEW SELECT FUNCTION: Corr_charge=-1 - NEW SELECT FUNCTION: Smiles=F[Sb-](F)(F)(F)(F)F - NEW SELECT FUNCTION: found corr_charges=[-1] - NEW SELECT FUNCTION: doing tgt_charge=-1 - NEW SELECT FUNCTION: charge_state added - NEW SELECT FUNCTION: Case 1, only one entry for -1 in tmplist -SET_TARGET_CHARGE: Target charge -1 of F6-Sb exists in [-1]. -SET_TARGET_CHARGE: ------------- Cell2mol LIGAND Object -------------- - Version = 0.1 - Type = specie - Sub-Type = ligand - Number of Atoms = 6 - Formula = H3-C2-N - Has Adjacency Matrix = YES - Origin = split_complex - Number of Groups = 1 ---------------------------------------------------- - [2, 3, 4, 5, 6, 7] 0 -SET_TARGET_CHARGE: Target charge 0 of H3-C2-N exists in [-2, 0]. -SET_TARGET_CHARGE: H3-C2-N - GET_PROTONATION_STATES: Evaluating group N with parent_indices [0] - GET_PROTONATION_STATES: evaluating non-haptic group with index 0 and label N - GET_PROTONATION_STATES: adj=0 Fe - GET_PROTONATION_STATES: adj=8 C - GET_PROTONATION_STATES: will be sent to nonlocal due to N atom - - GET_PROTONATION_STATES: Enters non-local with: - GET_PROTONATION_STATES: block: [0 0 0 0 0 0] - GET_PROTONATION_STATES: addedlist: [0 0 0 0 0 0] - GET_PROTONATION_STATES: 1 non_local_groups groups found - - GET_PROTONATION_STATES: doing combination 0 - GET_PROTONATION_STATES: Protonation SAVED with 0 atoms added to ligand. status=True - - GET_PROTONATION_STATES: doing combination 1 - GET_PROTONATION_STATES: Added H to atom 0 with: a.mconnec=1 and label=N - GET_PROTONATION_STATES: Protonation SAVED with 1 atoms added to ligand. status=True - GET_PROTONATION_STATES:protonation_states=[------------- Cell2mol Protonation ---------------- - Status = True - Labels = ['N', 'C', 'C', 'H', 'H', 'H'] - Type = Non-local - Atoms added in positions = [0 0 0 0 0 0] - Atoms blocked (no atoms added) = [0 0 0 0 0 0] ---------------------------------------------------- -, ------------- Cell2mol Protonation ---------------- - Status = True - Labels = ['N', 'C', 'C', 'H', 'H', 'H', 'H'] - Type = Non-local - Atoms added in positions = [1 0 0 0 0 0] - Atoms blocked (no atoms added) = [0 0 0 0 0 0] ---------------------------------------------------- -] - POSCHARGE will try charges [0, -1, 1, -2, 2] - POSCHARGE: charge 0 with smiles [H]C([H])([H])C#N - POSCHARGE: charge 0 with smiles [H]C([H])([H])C[N-2] - POSCHARGE: charge 0 with smiles [H]C([H])([H])C[N-2] - POSCHARGE: charge 0 with smiles [H]C([H])([H])C[N-2] - POSCHARGE: charge 0 with smiles [H]C([H])([H])C[N-2] - POSCHARGE will try charges [0, -1, 1, -2, 2] - POSCHARGE: charge 0 with smiles [H][N-]CC([H])([H])[H] - POSCHARGE: charge 0 with smiles [H]N=[C-]C([H])([H])[H] - POSCHARGE: charge 0 with smiles [H][N+]#CC([H])([H])[H] - POSCHARGE: charge 0 with smiles [H][N-]CC([H])([H])[H] - POSCHARGE: charge 0 with smiles [H][N-]CC([H])([H])[H] - NEW SELECT FUNCTION: uncorr_total: [-1, -1, 1, -1, -1] - NEW SELECT FUNCTION: uncorr_abs_total: [1, 1, 1, 1, 1] - NEW SELECT FUNCTION: uncorr_abs_atcharge: [1, 1, 1, 1, 1] - NEW SELECT FUNCTION: uncorr_zwitt: [False, False, False, False, False] - NEW SELECT FUNCTION: coincide: [False, True, True, False, False] - NEW SELECT FUNCTION: listofmintot: [0, 1, 2, 3, 4] - NEW SELECT FUNCTION: listofminabs: [0, 1, 2, 3, 4] - NEW SELECT FUNCTION: tmplist: [1, 2], including: - NEW SELECT FUNCTION: Corr_charge=-2 - NEW SELECT FUNCTION: Smiles=[H]N=[C-]C([H])([H])[H] - NEW SELECT FUNCTION: Corr_charge=0 - NEW SELECT FUNCTION: Smiles=[H][N+]#CC([H])([H])[H] - NEW SELECT FUNCTION: found corr_charges=[-2, 0] - NEW SELECT FUNCTION: doing tgt_charge=-2 - NEW SELECT FUNCTION: charge_state added - NEW SELECT FUNCTION: Case 1, only one entry for -2 in tmplist - NEW SELECT FUNCTION: doing tgt_charge=0 - NEW SELECT FUNCTION: charge_state added - NEW SELECT FUNCTION: Case 1, only one entry for 0 in tmplist -SET_TARGET_CHARGE: Target charge 0 of H3-C2-N exists in [-2, 0]. -SET_TARGET_CHARGE: ------------- Cell2mol LIGAND Object -------------- - Version = 0.1 - Type = specie - Sub-Type = ligand - Number of Atoms = 6 - Formula = H3-C2-N - Has Adjacency Matrix = YES - Total Charge = 0 - Smiles = [H][N+]#CC([H])([H])[H] - Origin = split_complex - Number of Groups = 1 ---------------------------------------------------- - [2, 3, 4, 5, 6, 7] 0 -SET_TARGET_CHARGE: Target charge 0 of H3-C2-N exists in [-2, 0]. -SET_TARGET_CHARGE: H3-C2-N - GET_PROTONATION_STATES: Evaluating group N with parent_indices [0] - GET_PROTONATION_STATES: evaluating non-haptic group with index 0 and label N - GET_PROTONATION_STATES: adj=0 Fe - GET_PROTONATION_STATES: adj=14 C - GET_PROTONATION_STATES: will be sent to nonlocal due to N atom - - GET_PROTONATION_STATES: Enters non-local with: - GET_PROTONATION_STATES: block: [0 0 0 0 0 0] - GET_PROTONATION_STATES: addedlist: [0 0 0 0 0 0] - GET_PROTONATION_STATES: 1 non_local_groups groups found - - GET_PROTONATION_STATES: doing combination 0 - GET_PROTONATION_STATES: Protonation SAVED with 0 atoms added to ligand. status=True - - GET_PROTONATION_STATES: doing combination 1 - GET_PROTONATION_STATES: Added H to atom 0 with: a.mconnec=1 and label=N - GET_PROTONATION_STATES: Protonation SAVED with 1 atoms added to ligand. status=True - GET_PROTONATION_STATES:protonation_states=[------------- Cell2mol Protonation ---------------- - Status = True - Labels = ['N', 'C', 'C', 'H', 'H', 'H'] - Type = Non-local - Atoms added in positions = [0 0 0 0 0 0] - Atoms blocked (no atoms added) = [0 0 0 0 0 0] ---------------------------------------------------- -, ------------- Cell2mol Protonation ---------------- - Status = True - Labels = ['N', 'C', 'C', 'H', 'H', 'H', 'H'] - Type = Non-local - Atoms added in positions = [1 0 0 0 0 0] - Atoms blocked (no atoms added) = [0 0 0 0 0 0] ---------------------------------------------------- -] - POSCHARGE will try charges [0, -1, 1, -2, 2] - POSCHARGE: charge 0 with smiles [H]C([H])([H])C#N - POSCHARGE: charge 0 with smiles [H]C([H])([H])C[N-2] - POSCHARGE: charge 0 with smiles [H]C([H])([H])C[N-2] - POSCHARGE: charge 0 with smiles [H]C([H])([H])C[N-2] - POSCHARGE: charge 0 with smiles [H]C([H])([H])C[N-2] - POSCHARGE will try charges [0, -1, 1, -2, 2] - POSCHARGE: charge 0 with smiles [H][N-]CC([H])([H])[H] - POSCHARGE: charge 0 with smiles [H]N=[C-]C([H])([H])[H] - POSCHARGE: charge 0 with smiles [H][N+]#CC([H])([H])[H] - POSCHARGE: charge 0 with smiles [H][N-]CC([H])([H])[H] - POSCHARGE: charge 0 with smiles [H][N-]CC([H])([H])[H] - NEW SELECT FUNCTION: uncorr_total: [-1, -1, 1, -1, -1] - NEW SELECT FUNCTION: uncorr_abs_total: [1, 1, 1, 1, 1] - NEW SELECT FUNCTION: uncorr_abs_atcharge: [1, 1, 1, 1, 1] - NEW SELECT FUNCTION: uncorr_zwitt: [False, False, False, False, False] - NEW SELECT FUNCTION: coincide: [False, True, True, False, False] - NEW SELECT FUNCTION: listofmintot: [0, 1, 2, 3, 4] - NEW SELECT FUNCTION: listofminabs: [0, 1, 2, 3, 4] - NEW SELECT FUNCTION: tmplist: [1, 2], including: - NEW SELECT FUNCTION: Corr_charge=-2 - NEW SELECT FUNCTION: Smiles=[H]N=[C-]C([H])([H])[H] - NEW SELECT FUNCTION: Corr_charge=0 - NEW SELECT FUNCTION: Smiles=[H][N+]#CC([H])([H])[H] - NEW SELECT FUNCTION: found corr_charges=[-2, 0] - NEW SELECT FUNCTION: doing tgt_charge=-2 - NEW SELECT FUNCTION: charge_state added - NEW SELECT FUNCTION: Case 1, only one entry for -2 in tmplist - NEW SELECT FUNCTION: doing tgt_charge=0 - NEW SELECT FUNCTION: charge_state added - NEW SELECT FUNCTION: Case 1, only one entry for 0 in tmplist -SET_TARGET_CHARGE: Target charge 0 of H3-C2-N exists in [-2, 0]. -SET_TARGET_CHARGE: ------------- Cell2mol LIGAND Object -------------- - Version = 0.1 - Type = specie - Sub-Type = ligand - Number of Atoms = 6 - Formula = H3-C2-N - Has Adjacency Matrix = YES - Total Charge = 0 - Smiles = [H][N+]#CC([H])([H])[H] - Origin = split_complex - Number of Groups = 1 ---------------------------------------------------- - [2, 3, 4, 5, 6, 7] 0 -SET_TARGET_CHARGE: Target charge 0 of H3-C2-N exists in [-2, 0]. -SET_TARGET_CHARGE: H3-C2-N - GET_PROTONATION_STATES: Evaluating group N with parent_indices [0] - GET_PROTONATION_STATES: evaluating non-haptic group with index 0 and label N - GET_PROTONATION_STATES: adj=0 Fe - GET_PROTONATION_STATES: adj=20 C - GET_PROTONATION_STATES: will be sent to nonlocal due to N atom - - GET_PROTONATION_STATES: Enters non-local with: - GET_PROTONATION_STATES: block: [0 0 0 0 0 0] - GET_PROTONATION_STATES: addedlist: [0 0 0 0 0 0] - GET_PROTONATION_STATES: 1 non_local_groups groups found - - GET_PROTONATION_STATES: doing combination 0 - GET_PROTONATION_STATES: Protonation SAVED with 0 atoms added to ligand. status=True - - GET_PROTONATION_STATES: doing combination 1 - GET_PROTONATION_STATES: Added H to atom 0 with: a.mconnec=1 and label=N - GET_PROTONATION_STATES: Protonation SAVED with 1 atoms added to ligand. status=True - GET_PROTONATION_STATES:protonation_states=[------------- Cell2mol Protonation ---------------- - Status = True - Labels = ['N', 'C', 'C', 'H', 'H', 'H'] - Type = Non-local - Atoms added in positions = [0 0 0 0 0 0] - Atoms blocked (no atoms added) = [0 0 0 0 0 0] ---------------------------------------------------- -, ------------- Cell2mol Protonation ---------------- - Status = True - Labels = ['N', 'C', 'C', 'H', 'H', 'H', 'H'] - Type = Non-local - Atoms added in positions = [1 0 0 0 0 0] - Atoms blocked (no atoms added) = [0 0 0 0 0 0] ---------------------------------------------------- -] - POSCHARGE will try charges [0, -1, 1, -2, 2] - POSCHARGE: charge 0 with smiles [H]C([H])([H])C#N - POSCHARGE: charge 0 with smiles [H]C([H])([H])C[N-2] - POSCHARGE: charge 0 with smiles [H]C([H])([H])C[N-2] - POSCHARGE: charge 0 with smiles [H]C([H])([H])C[N-2] - POSCHARGE: charge 0 with smiles [H]C([H])([H])C[N-2] - POSCHARGE will try charges [0, -1, 1, -2, 2] - POSCHARGE: charge 0 with smiles [H][N-]CC([H])([H])[H] - POSCHARGE: charge 0 with smiles [H]N=[C-]C([H])([H])[H] - POSCHARGE: charge 0 with smiles [H][N+]#CC([H])([H])[H] - POSCHARGE: charge 0 with smiles [H][N-]CC([H])([H])[H] - POSCHARGE: charge 0 with smiles [H][N-]CC([H])([H])[H] - NEW SELECT FUNCTION: uncorr_total: [-1, -1, 1, -1, -1] - NEW SELECT FUNCTION: uncorr_abs_total: [1, 1, 1, 1, 1] - NEW SELECT FUNCTION: uncorr_abs_atcharge: [1, 1, 1, 1, 1] - NEW SELECT FUNCTION: uncorr_zwitt: [False, False, False, False, False] - NEW SELECT FUNCTION: coincide: [False, True, True, False, False] - NEW SELECT FUNCTION: listofmintot: [0, 1, 2, 3, 4] - NEW SELECT FUNCTION: listofminabs: [0, 1, 2, 3, 4] - NEW SELECT FUNCTION: tmplist: [1, 2], including: - NEW SELECT FUNCTION: Corr_charge=-2 - NEW SELECT FUNCTION: Smiles=[H]N=[C-]C([H])([H])[H] - NEW SELECT FUNCTION: Corr_charge=0 - NEW SELECT FUNCTION: Smiles=[H][N+]#CC([H])([H])[H] - NEW SELECT FUNCTION: found corr_charges=[-2, 0] - NEW SELECT FUNCTION: doing tgt_charge=-2 - NEW SELECT FUNCTION: charge_state added - NEW SELECT FUNCTION: Case 1, only one entry for -2 in tmplist - NEW SELECT FUNCTION: doing tgt_charge=0 - NEW SELECT FUNCTION: charge_state added - NEW SELECT FUNCTION: Case 1, only one entry for 0 in tmplist -SET_TARGET_CHARGE: Target charge 0 of H3-C2-N exists in [-2, 0]. -SET_TARGET_CHARGE: ------------- Cell2mol LIGAND Object -------------- - Version = 0.1 - Type = specie - Sub-Type = ligand - Number of Atoms = 6 - Formula = H3-C2-N - Has Adjacency Matrix = YES - Total Charge = 0 - Smiles = [H][N+]#CC([H])([H])[H] - Origin = split_complex - Number of Groups = 1 ---------------------------------------------------- - [2, 3, 4, 5, 6, 7] 0 -SET_TARGET_CHARGE: Target charge 0 of H3-C2-N exists in [-2, 0]. -SET_TARGET_CHARGE: H3-C2-N - GET_PROTONATION_STATES: Evaluating group N with parent_indices [0] - GET_PROTONATION_STATES: evaluating non-haptic group with index 0 and label N - GET_PROTONATION_STATES: adj=0 Fe - GET_PROTONATION_STATES: adj=26 C - GET_PROTONATION_STATES: will be sent to nonlocal due to N atom - - GET_PROTONATION_STATES: Enters non-local with: - GET_PROTONATION_STATES: block: [0 0 0 0 0 0] - GET_PROTONATION_STATES: addedlist: [0 0 0 0 0 0] - GET_PROTONATION_STATES: 1 non_local_groups groups found - - GET_PROTONATION_STATES: doing combination 0 - GET_PROTONATION_STATES: Protonation SAVED with 0 atoms added to ligand. status=True - - GET_PROTONATION_STATES: doing combination 1 - GET_PROTONATION_STATES: Added H to atom 0 with: a.mconnec=1 and label=N - GET_PROTONATION_STATES: Protonation SAVED with 1 atoms added to ligand. status=True - GET_PROTONATION_STATES:protonation_states=[------------- Cell2mol Protonation ---------------- - Status = True - Labels = ['N', 'C', 'C', 'H', 'H', 'H'] - Type = Non-local - Atoms added in positions = [0 0 0 0 0 0] - Atoms blocked (no atoms added) = [0 0 0 0 0 0] ---------------------------------------------------- -, ------------- Cell2mol Protonation ---------------- - Status = True - Labels = ['N', 'C', 'C', 'H', 'H', 'H', 'H'] - Type = Non-local - Atoms added in positions = [1 0 0 0 0 0] - Atoms blocked (no atoms added) = [0 0 0 0 0 0] ---------------------------------------------------- -] - POSCHARGE will try charges [0, -1, 1, -2, 2] - POSCHARGE: charge 0 with smiles [H]C([H])([H])C#N - POSCHARGE: charge 0 with smiles [H]C([H])([H])C[N-2] - POSCHARGE: charge 0 with smiles [H]C([H])([H])C[N-2] - POSCHARGE: charge 0 with smiles [H]C([H])([H])C[N-2] - POSCHARGE: charge 0 with smiles [H]C([H])([H])C[N-2] - POSCHARGE will try charges [0, -1, 1, -2, 2] - POSCHARGE: charge 0 with smiles [H][N-]CC([H])([H])[H] - POSCHARGE: charge 0 with smiles [H]N=[C-]C([H])([H])[H] - POSCHARGE: charge 0 with smiles [H][N+]#CC([H])([H])[H] - POSCHARGE: charge 0 with smiles [H][N-]CC([H])([H])[H] - POSCHARGE: charge 0 with smiles [H][N-]CC([H])([H])[H] - NEW SELECT FUNCTION: uncorr_total: [-1, -1, 1, -1, -1] - NEW SELECT FUNCTION: uncorr_abs_total: [1, 1, 1, 1, 1] - NEW SELECT FUNCTION: uncorr_abs_atcharge: [1, 1, 1, 1, 1] - NEW SELECT FUNCTION: uncorr_zwitt: [False, False, False, False, False] - NEW SELECT FUNCTION: coincide: [False, True, True, False, False] - NEW SELECT FUNCTION: listofmintot: [0, 1, 2, 3, 4] - NEW SELECT FUNCTION: listofminabs: [0, 1, 2, 3, 4] - NEW SELECT FUNCTION: tmplist: [1, 2], including: - NEW SELECT FUNCTION: Corr_charge=-2 - NEW SELECT FUNCTION: Smiles=[H]N=[C-]C([H])([H])[H] - NEW SELECT FUNCTION: Corr_charge=0 - NEW SELECT FUNCTION: Smiles=[H][N+]#CC([H])([H])[H] - NEW SELECT FUNCTION: found corr_charges=[-2, 0] - NEW SELECT FUNCTION: doing tgt_charge=-2 - NEW SELECT FUNCTION: charge_state added - NEW SELECT FUNCTION: Case 1, only one entry for -2 in tmplist - NEW SELECT FUNCTION: doing tgt_charge=0 - NEW SELECT FUNCTION: charge_state added - NEW SELECT FUNCTION: Case 1, only one entry for 0 in tmplist -SET_TARGET_CHARGE: Target charge 0 of H3-C2-N exists in [-2, 0]. -SET_TARGET_CHARGE: ------------- Cell2mol LIGAND Object -------------- - Version = 0.1 - Type = specie - Sub-Type = ligand - Number of Atoms = 6 - Formula = H3-C2-N - Has Adjacency Matrix = YES - Total Charge = 0 - Smiles = [H][N+]#CC([H])([H])[H] - Origin = split_complex - Number of Groups = 1 ---------------------------------------------------- - [2, 3, 4, 5, 6, 7] 0 -SET_TARGET_CHARGE: Target charge 0 of H3-C2-N exists in [-2, 0]. -SET_TARGET_CHARGE: H3-C2-N - GET_PROTONATION_STATES: Evaluating group N with parent_indices [0] - GET_PROTONATION_STATES: evaluating non-haptic group with index 0 and label N - GET_PROTONATION_STATES: adj=0 Fe - GET_PROTONATION_STATES: adj=32 C - GET_PROTONATION_STATES: will be sent to nonlocal due to N atom - - GET_PROTONATION_STATES: Enters non-local with: - GET_PROTONATION_STATES: block: [0 0 0 0 0 0] - GET_PROTONATION_STATES: addedlist: [0 0 0 0 0 0] - GET_PROTONATION_STATES: 1 non_local_groups groups found - - GET_PROTONATION_STATES: doing combination 0 - GET_PROTONATION_STATES: Protonation SAVED with 0 atoms added to ligand. status=True - - GET_PROTONATION_STATES: doing combination 1 - GET_PROTONATION_STATES: Added H to atom 0 with: a.mconnec=1 and label=N - GET_PROTONATION_STATES: Protonation SAVED with 1 atoms added to ligand. status=True - GET_PROTONATION_STATES:protonation_states=[------------- Cell2mol Protonation ---------------- - Status = True - Labels = ['N', 'C', 'C', 'H', 'H', 'H'] - Type = Non-local - Atoms added in positions = [0 0 0 0 0 0] - Atoms blocked (no atoms added) = [0 0 0 0 0 0] ---------------------------------------------------- -, ------------- Cell2mol Protonation ---------------- - Status = True - Labels = ['N', 'C', 'C', 'H', 'H', 'H', 'H'] - Type = Non-local - Atoms added in positions = [1 0 0 0 0 0] - Atoms blocked (no atoms added) = [0 0 0 0 0 0] ---------------------------------------------------- -] - POSCHARGE will try charges [0, -1, 1, -2, 2] - POSCHARGE: charge 0 with smiles [H]C([H])([H])C#N - POSCHARGE: charge 0 with smiles [H]C([H])([H])C[N-2] - POSCHARGE: charge 0 with smiles [H]C([H])([H])C[N-2] - POSCHARGE: charge 0 with smiles [H]C([H])([H])C[N-2] - POSCHARGE: charge 0 with smiles [H]C([H])([H])C[N-2] - POSCHARGE will try charges [0, -1, 1, -2, 2] - POSCHARGE: charge 0 with smiles [H][N-]CC([H])([H])[H] - POSCHARGE: charge 0 with smiles [H]N=[C-]C([H])([H])[H] - POSCHARGE: charge 0 with smiles [H][N+]#CC([H])([H])[H] - POSCHARGE: charge 0 with smiles [H][N-]CC([H])([H])[H] - POSCHARGE: charge 0 with smiles [H][N-]CC([H])([H])[H] - NEW SELECT FUNCTION: uncorr_total: [-1, -1, 1, -1, -1] - NEW SELECT FUNCTION: uncorr_abs_total: [1, 1, 1, 1, 1] - NEW SELECT FUNCTION: uncorr_abs_atcharge: [1, 1, 1, 1, 1] - NEW SELECT FUNCTION: uncorr_zwitt: [False, False, False, False, False] - NEW SELECT FUNCTION: coincide: [False, True, True, False, False] - NEW SELECT FUNCTION: listofmintot: [0, 1, 2, 3, 4] - NEW SELECT FUNCTION: listofminabs: [0, 1, 2, 3, 4] - NEW SELECT FUNCTION: tmplist: [1, 2], including: - NEW SELECT FUNCTION: Corr_charge=-2 - NEW SELECT FUNCTION: Smiles=[H]N=[C-]C([H])([H])[H] - NEW SELECT FUNCTION: Corr_charge=0 - NEW SELECT FUNCTION: Smiles=[H][N+]#CC([H])([H])[H] - NEW SELECT FUNCTION: found corr_charges=[-2, 0] - NEW SELECT FUNCTION: doing tgt_charge=-2 - NEW SELECT FUNCTION: charge_state added - NEW SELECT FUNCTION: Case 1, only one entry for -2 in tmplist - NEW SELECT FUNCTION: doing tgt_charge=0 - NEW SELECT FUNCTION: charge_state added - NEW SELECT FUNCTION: Case 1, only one entry for 0 in tmplist -SET_TARGET_CHARGE: Target charge 0 of H3-C2-N exists in [-2, 0]. -SET_TARGET_CHARGE: ------------- Cell2mol LIGAND Object -------------- - Version = 0.1 - Type = specie - Sub-Type = ligand - Number of Atoms = 6 - Formula = H3-C2-N - Has Adjacency Matrix = YES - Total Charge = 0 - Smiles = [H][N+]#CC([H])([H])[H] - Origin = split_complex - Number of Groups = 1 ---------------------------------------------------- - [2, 3, 4, 5, 6, 7] 0 -SET_TARGET_CHARGE: Target charge 0 of H3-C2-N exists in [-2, 0]. -SET_TARGET_CHARGE: H3-C2-N - GET_PROTONATION_STATES: Evaluating group N with parent_indices [0] - GET_PROTONATION_STATES: evaluating non-haptic group with index 0 and label N - GET_PROTONATION_STATES: adj=0 Fe - GET_PROTONATION_STATES: adj=2 C - GET_PROTONATION_STATES: will be sent to nonlocal due to N atom - - GET_PROTONATION_STATES: Enters non-local with: - GET_PROTONATION_STATES: block: [0 0 0 0 0 0] - GET_PROTONATION_STATES: addedlist: [0 0 0 0 0 0] - GET_PROTONATION_STATES: 1 non_local_groups groups found - - GET_PROTONATION_STATES: doing combination 0 - GET_PROTONATION_STATES: Protonation SAVED with 0 atoms added to ligand. status=True - - GET_PROTONATION_STATES: doing combination 1 - GET_PROTONATION_STATES: Added H to atom 0 with: a.mconnec=1 and label=N - GET_PROTONATION_STATES: Protonation SAVED with 1 atoms added to ligand. status=True - GET_PROTONATION_STATES:protonation_states=[------------- Cell2mol Protonation ---------------- - Status = True - Labels = ['N', 'C', 'C', 'H', 'H', 'H'] - Type = Non-local - Atoms added in positions = [0 0 0 0 0 0] - Atoms blocked (no atoms added) = [0 0 0 0 0 0] ---------------------------------------------------- -, ------------- Cell2mol Protonation ---------------- - Status = True - Labels = ['N', 'C', 'C', 'H', 'H', 'H', 'H'] - Type = Non-local - Atoms added in positions = [1 0 0 0 0 0] - Atoms blocked (no atoms added) = [0 0 0 0 0 0] ---------------------------------------------------- -] - POSCHARGE will try charges [0, -1, 1, -2, 2] - POSCHARGE: charge 0 with smiles [H]C([H])([H])C#N - POSCHARGE: charge 0 with smiles [H]C([H])([H])C[N-2] - POSCHARGE: charge 0 with smiles [H]C([H])([H])C[N-2] - POSCHARGE: charge 0 with smiles [H]C([H])([H])C[N-2] - POSCHARGE: charge 0 with smiles [H]C([H])([H])C[N-2] - POSCHARGE will try charges [0, -1, 1, -2, 2] - POSCHARGE: charge 0 with smiles [H][N-]CC([H])([H])[H] - POSCHARGE: charge 0 with smiles [H]N=[C-]C([H])([H])[H] - POSCHARGE: charge 0 with smiles [H][N+]#CC([H])([H])[H] - POSCHARGE: charge 0 with smiles [H][N-]CC([H])([H])[H] - POSCHARGE: charge 0 with smiles [H][N-]CC([H])([H])[H] - NEW SELECT FUNCTION: uncorr_total: [-1, -1, 1, -1, -1] - NEW SELECT FUNCTION: uncorr_abs_total: [1, 1, 1, 1, 1] - NEW SELECT FUNCTION: uncorr_abs_atcharge: [1, 1, 1, 1, 1] - NEW SELECT FUNCTION: uncorr_zwitt: [False, False, False, False, False] - NEW SELECT FUNCTION: coincide: [False, True, True, False, False] - NEW SELECT FUNCTION: listofmintot: [0, 1, 2, 3, 4] - NEW SELECT FUNCTION: listofminabs: [0, 1, 2, 3, 4] - NEW SELECT FUNCTION: tmplist: [1, 2], including: - NEW SELECT FUNCTION: Corr_charge=-2 - NEW SELECT FUNCTION: Smiles=[H]N=[C-]C([H])([H])[H] - NEW SELECT FUNCTION: Corr_charge=0 - NEW SELECT FUNCTION: Smiles=[H][N+]#CC([H])([H])[H] - NEW SELECT FUNCTION: found corr_charges=[-2, 0] - NEW SELECT FUNCTION: doing tgt_charge=-2 - NEW SELECT FUNCTION: charge_state added - NEW SELECT FUNCTION: Case 1, only one entry for -2 in tmplist - NEW SELECT FUNCTION: doing tgt_charge=0 - NEW SELECT FUNCTION: charge_state added - NEW SELECT FUNCTION: Case 1, only one entry for 0 in tmplist -SET_TARGET_CHARGE: Target charge 0 of H3-C2-N exists in [-2, 0]. -SET_TARGET_CHARGE: ------------- Cell2mol METAL Object -------------- - Version = 0.1 - Type = atom - Sub-Type = metal - Label = Fe - Atomic Number = 26 - Index in Molecule = 0 - Metal Adjacency (mconnec) = 6 - Regular Adjacencies (connec) = 6 - Possible Charges = [2, 3] ----------------------------------------------------- - [8] 2 -SET_TARGET_CHARGE: Target charge 2 of Fe exists in [2, 3]. -SET_TARGET_CHARGE: Fe -SET_TARGET_CHARGE: Target charge 2 of Fe exists in [2, 3]. -CELL.CREATE_BONDS: Creating Bonds for molecule F6-Sb -CREATE_bonds_specie: specie.formula='F6-Sb', specie.subtype='molecule' - Number of atoms in molecule object and RDKit object are equal: 7 7 - idx=0 Sb Number of bonds : 6 - BOND CREATED 0 0 1 1.0 Sb F - BOND CREATED 0 0 2 1.0 Sb F - BOND CREATED 0 0 3 1.0 Sb F - BOND CREATED 0 0 4 1.0 Sb F - BOND CREATED 0 0 5 1.0 Sb F - BOND CREATED 0 0 6 1.0 Sb F - BONDS [('Sb', 'F', 1.0, 1.839), ('Sb', 'F', 1.0, 1.839), ('Sb', 'F', 1.0, 1.839), ('Sb', 'F', 1.0, 1.854), ('Sb', 'F', 1.0, 1.854), ('Sb', 'F', 1.0, 1.854)] - idx=1 F Number of bonds : 1 - BOND CREATED 1 1 0 1.0 F Sb - BONDS [('F', 'Sb', 1.0, 1.839)] - idx=2 F Number of bonds : 1 - BOND CREATED 2 2 0 1.0 F Sb - BONDS [('F', 'Sb', 1.0, 1.839)] - idx=3 F Number of bonds : 1 - BOND CREATED 3 3 0 1.0 F Sb - BONDS [('F', 'Sb', 1.0, 1.839)] - idx=4 F Number of bonds : 1 - BOND CREATED 4 4 0 1.0 F Sb - BONDS [('F', 'Sb', 1.0, 1.854)] - idx=5 F Number of bonds : 1 - BOND CREATED 5 5 0 1.0 F Sb - BONDS [('F', 'Sb', 1.0, 1.854)] - idx=6 F Number of bonds : 1 - BOND CREATED 6 6 0 1.0 F Sb - BONDS [('F', 'Sb', 1.0, 1.854)] -CELL.CREATE_BONDS: Creating Bonds for molecule F6-Sb -CREATE_bonds_specie: specie.formula='F6-Sb', specie.subtype='molecule' - Number of atoms in molecule object and RDKit object are equal: 7 7 - idx=0 Sb Number of bonds : 6 - BOND CREATED 0 0 1 1.0 Sb F - BOND CREATED 0 0 2 1.0 Sb F - BOND CREATED 0 0 3 1.0 Sb F - BOND CREATED 0 0 4 1.0 Sb F - BOND CREATED 0 0 5 1.0 Sb F - BOND CREATED 0 0 6 1.0 Sb F - BONDS [('Sb', 'F', 1.0, 1.839), ('Sb', 'F', 1.0, 1.839), ('Sb', 'F', 1.0, 1.839), ('Sb', 'F', 1.0, 1.854), ('Sb', 'F', 1.0, 1.854), ('Sb', 'F', 1.0, 1.854)] - idx=1 F Number of bonds : 1 - BOND CREATED 1 1 0 1.0 F Sb - BONDS [('F', 'Sb', 1.0, 1.839)] - idx=2 F Number of bonds : 1 - BOND CREATED 2 2 0 1.0 F Sb - BONDS [('F', 'Sb', 1.0, 1.839)] - idx=3 F Number of bonds : 1 - BOND CREATED 3 3 0 1.0 F Sb - BONDS [('F', 'Sb', 1.0, 1.839)] - idx=4 F Number of bonds : 1 - BOND CREATED 4 4 0 1.0 F Sb - BONDS [('F', 'Sb', 1.0, 1.854)] - idx=5 F Number of bonds : 1 - BOND CREATED 5 5 0 1.0 F Sb - BONDS [('F', 'Sb', 1.0, 1.854)] - idx=6 F Number of bonds : 1 - BOND CREATED 6 6 0 1.0 F Sb - BONDS [('F', 'Sb', 1.0, 1.854)] -CELL.CREATE_BONDS: Creating Bonds for molecule H18-C12-N6-Fe -CREATE_bonds_specie: specie.formula='H3-C2-N', specie.subtype='ligand' - Number of atoms in ligand object and RDKit object are different: 6 7 - [(0, 'N'), (1, 'C'), (2, 'C'), (3, 'H'), (4, 'H'), (5, 'H')] - [(0, 'N'), (1, 'C'), (2, 'C'), (3, 'H'), (4, 'H'), (5, 'H'), (6, 'H')] - NON_BONDED_ATOMS [6] - idx=0 N Number of bonds : 2 - BOND CREATED 0 0 1 3.0 N C - NO BOND CREATED bond_startatom=0 or bond_endatom=6 is not in the specie.atoms. It belongs to non_bonded_atoms=[6]. - BONDS [('N', 'C', 3.0, 1.129)] - idx=1 C Number of bonds : 2 - BOND CREATED 1 1 0 3.0 C N - BOND CREATED 1 1 2 1.0 C C - BONDS [('C', 'N', 3.0, 1.129), ('C', 'C', 1.0, 1.455)] - idx=2 C Number of bonds : 4 - BOND CREATED 2 2 1 1.0 C C - BOND CREATED 2 2 3 1.0 C H - BOND CREATED 2 2 4 1.0 C H - BOND CREATED 2 2 5 1.0 C H - BONDS [('C', 'C', 1.0, 1.455), ('C', 'H', 1.0, 0.979), ('C', 'H', 1.0, 0.98), ('C', 'H', 1.0, 0.981)] - idx=3 H Number of bonds : 1 - BOND CREATED 3 3 2 1.0 H C - BONDS [('H', 'C', 1.0, 0.979)] - idx=4 H Number of bonds : 1 - BOND CREATED 4 4 2 1.0 H C - BONDS [('H', 'C', 1.0, 0.98)] - idx=5 H Number of bonds : 1 - BOND CREATED 5 5 2 1.0 H C - BONDS [('H', 'C', 1.0, 0.981)] - idx=6 H Number of bonds : 1 - NO BOND CREATED bond_startatom=0 or bond_endatom=6 is not in the specie.atoms. It belongs to non_bonded_atoms=[6]. - NO BONDS for H with ligand RDKit object index 6 because it is an added atom -CREATE_bonds_specie: specie.formula='H3-C2-N', specie.subtype='ligand' - Number of atoms in ligand object and RDKit object are different: 6 7 - [(0, 'N'), (1, 'C'), (2, 'C'), (3, 'H'), (4, 'H'), (5, 'H')] - [(0, 'N'), (1, 'C'), (2, 'C'), (3, 'H'), (4, 'H'), (5, 'H'), (6, 'H')] - NON_BONDED_ATOMS [6] - idx=0 N Number of bonds : 2 - BOND CREATED 0 0 1 3.0 N C - NO BOND CREATED bond_startatom=0 or bond_endatom=6 is not in the specie.atoms. It belongs to non_bonded_atoms=[6]. - BONDS [('N', 'C', 3.0, 1.129)] - idx=1 C Number of bonds : 2 - BOND CREATED 1 1 0 3.0 C N - BOND CREATED 1 1 2 1.0 C C - BONDS [('C', 'N', 3.0, 1.129), ('C', 'C', 1.0, 1.455)] - idx=2 C Number of bonds : 4 - BOND CREATED 2 2 1 1.0 C C - BOND CREATED 2 2 3 1.0 C H - BOND CREATED 2 2 4 1.0 C H - BOND CREATED 2 2 5 1.0 C H - BONDS [('C', 'C', 1.0, 1.455), ('C', 'H', 1.0, 0.979), ('C', 'H', 1.0, 0.98), ('C', 'H', 1.0, 0.981)] - idx=3 H Number of bonds : 1 - BOND CREATED 3 3 2 1.0 H C - BONDS [('H', 'C', 1.0, 0.979)] - idx=4 H Number of bonds : 1 - BOND CREATED 4 4 2 1.0 H C - BONDS [('H', 'C', 1.0, 0.98)] - idx=5 H Number of bonds : 1 - BOND CREATED 5 5 2 1.0 H C - BONDS [('H', 'C', 1.0, 0.981)] - idx=6 H Number of bonds : 1 - NO BOND CREATED bond_startatom=0 or bond_endatom=6 is not in the specie.atoms. It belongs to non_bonded_atoms=[6]. - NO BONDS for H with ligand RDKit object index 6 because it is an added atom -CREATE_bonds_specie: specie.formula='H3-C2-N', specie.subtype='ligand' - Number of atoms in ligand object and RDKit object are different: 6 7 - [(0, 'N'), (1, 'C'), (2, 'C'), (3, 'H'), (4, 'H'), (5, 'H')] - [(0, 'N'), (1, 'C'), (2, 'C'), (3, 'H'), (4, 'H'), (5, 'H'), (6, 'H')] - NON_BONDED_ATOMS [6] - idx=0 N Number of bonds : 2 - BOND CREATED 0 0 1 3.0 N C - NO BOND CREATED bond_startatom=0 or bond_endatom=6 is not in the specie.atoms. It belongs to non_bonded_atoms=[6]. - BONDS [('N', 'C', 3.0, 1.129)] - idx=1 C Number of bonds : 2 - BOND CREATED 1 1 0 3.0 C N - BOND CREATED 1 1 2 1.0 C C - BONDS [('C', 'N', 3.0, 1.129), ('C', 'C', 1.0, 1.455)] - idx=2 C Number of bonds : 4 - BOND CREATED 2 2 1 1.0 C C - BOND CREATED 2 2 3 1.0 C H - BOND CREATED 2 2 4 1.0 C H - BOND CREATED 2 2 5 1.0 C H - BONDS [('C', 'C', 1.0, 1.455), ('C', 'H', 1.0, 0.979), ('C', 'H', 1.0, 0.98), ('C', 'H', 1.0, 0.981)] - idx=3 H Number of bonds : 1 - BOND CREATED 3 3 2 1.0 H C - BONDS [('H', 'C', 1.0, 0.979)] - idx=4 H Number of bonds : 1 - BOND CREATED 4 4 2 1.0 H C - BONDS [('H', 'C', 1.0, 0.98)] - idx=5 H Number of bonds : 1 - BOND CREATED 5 5 2 1.0 H C - BONDS [('H', 'C', 1.0, 0.981)] - idx=6 H Number of bonds : 1 - NO BOND CREATED bond_startatom=0 or bond_endatom=6 is not in the specie.atoms. It belongs to non_bonded_atoms=[6]. - NO BONDS for H with ligand RDKit object index 6 because it is an added atom -CREATE_bonds_specie: specie.formula='H3-C2-N', specie.subtype='ligand' - Number of atoms in ligand object and RDKit object are different: 6 7 - [(0, 'N'), (1, 'C'), (2, 'C'), (3, 'H'), (4, 'H'), (5, 'H')] - [(0, 'N'), (1, 'C'), (2, 'C'), (3, 'H'), (4, 'H'), (5, 'H'), (6, 'H')] - NON_BONDED_ATOMS [6] - idx=0 N Number of bonds : 2 - BOND CREATED 0 0 1 3.0 N C - NO BOND CREATED bond_startatom=0 or bond_endatom=6 is not in the specie.atoms. It belongs to non_bonded_atoms=[6]. - BONDS [('N', 'C', 3.0, 1.129)] - idx=1 C Number of bonds : 2 - BOND CREATED 1 1 0 3.0 C N - BOND CREATED 1 1 2 1.0 C C - BONDS [('C', 'N', 3.0, 1.129), ('C', 'C', 1.0, 1.455)] - idx=2 C Number of bonds : 4 - BOND CREATED 2 2 1 1.0 C C - BOND CREATED 2 2 3 1.0 C H - BOND CREATED 2 2 4 1.0 C H - BOND CREATED 2 2 5 1.0 C H - BONDS [('C', 'C', 1.0, 1.455), ('C', 'H', 1.0, 0.979), ('C', 'H', 1.0, 0.98), ('C', 'H', 1.0, 0.981)] - idx=3 H Number of bonds : 1 - BOND CREATED 3 3 2 1.0 H C - BONDS [('H', 'C', 1.0, 0.979)] - idx=4 H Number of bonds : 1 - BOND CREATED 4 4 2 1.0 H C - BONDS [('H', 'C', 1.0, 0.98)] - idx=5 H Number of bonds : 1 - BOND CREATED 5 5 2 1.0 H C - BONDS [('H', 'C', 1.0, 0.981)] - idx=6 H Number of bonds : 1 - NO BOND CREATED bond_startatom=0 or bond_endatom=6 is not in the specie.atoms. It belongs to non_bonded_atoms=[6]. - NO BONDS for H with ligand RDKit object index 6 because it is an added atom -CREATE_bonds_specie: specie.formula='H3-C2-N', specie.subtype='ligand' - Number of atoms in ligand object and RDKit object are different: 6 7 - [(0, 'N'), (1, 'C'), (2, 'C'), (3, 'H'), (4, 'H'), (5, 'H')] - [(0, 'N'), (1, 'C'), (2, 'C'), (3, 'H'), (4, 'H'), (5, 'H'), (6, 'H')] - NON_BONDED_ATOMS [6] - idx=0 N Number of bonds : 2 - BOND CREATED 0 0 1 3.0 N C - NO BOND CREATED bond_startatom=0 or bond_endatom=6 is not in the specie.atoms. It belongs to non_bonded_atoms=[6]. - BONDS [('N', 'C', 3.0, 1.129)] - idx=1 C Number of bonds : 2 - BOND CREATED 1 1 0 3.0 C N - BOND CREATED 1 1 2 1.0 C C - BONDS [('C', 'N', 3.0, 1.129), ('C', 'C', 1.0, 1.455)] - idx=2 C Number of bonds : 4 - BOND CREATED 2 2 1 1.0 C C - BOND CREATED 2 2 3 1.0 C H - BOND CREATED 2 2 4 1.0 C H - BOND CREATED 2 2 5 1.0 C H - BONDS [('C', 'C', 1.0, 1.455), ('C', 'H', 1.0, 0.979), ('C', 'H', 1.0, 0.98), ('C', 'H', 1.0, 0.981)] - idx=3 H Number of bonds : 1 - BOND CREATED 3 3 2 1.0 H C - BONDS [('H', 'C', 1.0, 0.979)] - idx=4 H Number of bonds : 1 - BOND CREATED 4 4 2 1.0 H C - BONDS [('H', 'C', 1.0, 0.98)] - idx=5 H Number of bonds : 1 - BOND CREATED 5 5 2 1.0 H C - BONDS [('H', 'C', 1.0, 0.981)] - idx=6 H Number of bonds : 1 - NO BOND CREATED bond_startatom=0 or bond_endatom=6 is not in the specie.atoms. It belongs to non_bonded_atoms=[6]. - NO BONDS for H with ligand RDKit object index 6 because it is an added atom -CREATE_bonds_specie: specie.formula='H3-C2-N', specie.subtype='ligand' - Number of atoms in ligand object and RDKit object are different: 6 7 - [(0, 'N'), (1, 'C'), (2, 'C'), (3, 'H'), (4, 'H'), (5, 'H')] - [(0, 'N'), (1, 'C'), (2, 'C'), (3, 'H'), (4, 'H'), (5, 'H'), (6, 'H')] - NON_BONDED_ATOMS [6] - idx=0 N Number of bonds : 2 - BOND CREATED 0 0 1 3.0 N C - NO BOND CREATED bond_startatom=0 or bond_endatom=6 is not in the specie.atoms. It belongs to non_bonded_atoms=[6]. - BONDS [('N', 'C', 3.0, 1.129)] - idx=1 C Number of bonds : 2 - BOND CREATED 1 1 0 3.0 C N - BOND CREATED 1 1 2 1.0 C C - BONDS [('C', 'N', 3.0, 1.129), ('C', 'C', 1.0, 1.455)] - idx=2 C Number of bonds : 4 - BOND CREATED 2 2 1 1.0 C C - BOND CREATED 2 2 3 1.0 C H - BOND CREATED 2 2 4 1.0 C H - BOND CREATED 2 2 5 1.0 C H - BONDS [('C', 'C', 1.0, 1.455), ('C', 'H', 1.0, 0.979), ('C', 'H', 1.0, 0.98), ('C', 'H', 1.0, 0.981)] - idx=3 H Number of bonds : 1 - BOND CREATED 3 3 2 1.0 H C - BONDS [('H', 'C', 1.0, 0.979)] - idx=4 H Number of bonds : 1 - BOND CREATED 4 4 2 1.0 H C - BONDS [('H', 'C', 1.0, 0.98)] - idx=5 H Number of bonds : 1 - BOND CREATED 5 5 2 1.0 H C - BONDS [('H', 'C', 1.0, 0.981)] - idx=6 H Number of bonds : 1 - NO BOND CREATED bond_startatom=0 or bond_endatom=6 is not in the specie.atoms. It belongs to non_bonded_atoms=[6]. - NO BONDS for H with ligand RDKit object index 6 because it is an added atom -ligand.formula='H3-C2-N' smiles='[H]C([H])([H])C#N' - -ligand.formula='H3-C2-N' smiles='[H]C([H])([H])C#N' - -ligand.formula='H3-C2-N' smiles='[H]C([H])([H])C#N' - -ligand.formula='H3-C2-N' smiles='[H]C([H])([H])C#N' - -ligand.formula='H3-C2-N' smiles='[H]C([H])([H])C#N' - -ligand.formula='H3-C2-N' smiles='[H]C([H])([H])C#N' - -Charge Assignment Finished Normally. Total execution time: 0.48 seconds -######################################### - Assigning Spin multiplicity -######################################### -GET_SPIN: Spin multiplicity of the complex F6-Sb is assigned as 1 - -GET_SPIN: Spin multiplicity of the complex F6-Sb is assigned as 1 - -GENERATE_feature_vector: Fe -GENERATE_feature_vector: elem_nr=26 m_ox=2.0 valence_elec=6.0 -GENERATE_feature_vector: metal.coord_nr=6 metal.coord_geometry='Octahedral' geom_nr=14 -GENERATE_feature_vector: metal.rel_metal_radius=1.094 -GENERATE_feature_vector: hapticity=0 -GENERATE_feature_vector: feature=array([[26. , 2. , 6. , 6. , 14. , 1.094, 0. ]]) -ASSIGN_SPIN_METAL: Spin multiplicity of the metal Fe is predicted as 5 using Random Forest model -GET_SPIN: Spin multiplicity of the metal Fe is assigned as 5 -GET_SPIN: Spin multiplicity of the complex H18-C12-N6-Fe is assigned as 5 - - -Total execution time for Spin Assignment: 2.83 seconds -------------------------------- -Errors in Unit Cell -------------------------------- -Cell2mol terminated with error number 0. Message: -No Errors Found -SAVING cell2mol CELL object to /Users/ycho/cell2mol/cell2mol/test/ACEYOW/Cell_ACEYOW.cell diff --git a/cell2mol/test/ACEYOW/error_0.out b/cell2mol/test/ACEYOW/error_0.out deleted file mode 100644 index 1ed2c65bd..000000000 --- a/cell2mol/test/ACEYOW/error_0.out +++ /dev/null @@ -1,2 +0,0 @@ -Cell2mol terminated with error number 0. Message: -No Errors Found diff --git a/cell2mol/test/AFIBAU/AFIBAU.info b/cell2mol/test/AFIBAU/AFIBAU.info deleted file mode 100644 index 89684c5a9..000000000 --- a/cell2mol/test/AFIBAU/AFIBAU.info +++ /dev/null @@ -1,329 +0,0 @@ -CIF2CELL 2.0.0 -2024-04-17 22:29 -Output for None (bis(1-t-Butylimidazole-N^3^)-bis(bis(trimethylsilyl)amide)-iron(ii)) -CIF file exported from Cambridge Structural Database. -Database reference code: AFIBAU. - BIBLIOGRAPHIC INFORMATION -B.M.Day et al., J.Am.Chem.Soc. 135, 13338- (2013) - INPUT CELL INFORMATION -Symmetry information: -Monoclinic crystal system. -Space group number : 15 -Hall symbol : -C 2yc -Hermann-Mauguin symbol : C2/c - -Lattice parameters: - a b c - 26.7050000 9.3643000 18.1068000 - alpha beta gamma - 90.0000000 126.4510000 90.0000000 -Representative sites : -Atom x y z -Fe 0.0000000 0.8866100 0.2500000 -Si -0.1012800 1.1171500 0.2043100 -Si -0.1314700 0.9164000 0.0523200 -N -0.0298900 0.7262200 0.3009500 -N -0.0903000 0.6305500 0.3339900 -N -0.0828900 0.9810400 0.1615300 -C -0.0819800 0.7393000 0.2941700 -H -0.1096000 0.8152000 0.2651000 -C -0.0040500 0.6001000 0.3475600 -H 0.0329000 0.5612000 0.3622000 -C -0.0400200 0.5409000 0.3690800 -H -0.0324000 0.4564000 0.4012000 -C -0.1424100 0.6093000 0.3415700 -C -0.1916000 0.7231000 0.2848000 -H -0.1740000 0.8158000 0.3091000 -H -0.2261000 0.7081000 0.2873000 -H -0.2057000 0.7174000 0.2223000 -C -0.1171200 0.6219000 0.4417300 -H -0.0864000 0.5492000 0.4768000 -H -0.1505000 0.6102000 0.4472000 -H -0.0985000 0.7143000 0.4646000 -C -0.1699200 0.4616000 0.3049000 -H -0.1840000 0.4538000 0.2424000 -H -0.2044000 0.4474000 0.3076000 -H -0.1387000 0.3905000 0.3416000 -C -0.0437000 1.1277000 0.3324000 -H -0.0435000 1.0391000 0.3592000 -H -0.0552000 1.2039000 0.3551000 -H -0.0029000 1.1457000 0.3485000 -C -0.1797700 1.0947000 0.1819000 -H -0.2107000 1.1467000 0.1276000 -H -0.1777000 1.1308000 0.2333000 -H -0.1907000 0.9953000 0.1734000 -C -0.1025600 1.2980000 0.1586300 -H -0.0635000 1.3150000 0.1687000 -H -0.1093000 1.3697000 0.1898000 -H -0.1356000 1.3018000 0.0940000 -C -0.2022800 1.0300000 -0.0269800 -H -0.2291000 1.0267000 -0.0081000 -H -0.2242000 0.9945000 -0.0886000 -H -0.1896000 1.1269000 -0.0247000 -C -0.0929900 0.9005000 -0.0067600 -H -0.0797000 0.9932000 -0.0113000 -H -0.1221000 0.8618000 -0.0672000 -H -0.0576000 0.8384000 0.0280000 -C -0.1620700 0.7336000 0.0500100 -H -0.1278000 0.6711000 0.0906000 -H -0.1855000 0.6962000 -0.0113000 -H -0.1884000 0.7405000 0.0695000 -Si 0.1012800 1.1171500 0.2956900 -Si 0.1314700 0.9164000 0.4476800 -N 0.0298900 0.7262200 0.1990500 -N 0.0903000 0.6305500 0.1660100 -N 0.0828900 0.9810400 0.3384700 -C 0.0819800 0.7393000 0.2058300 -H 0.1096000 0.8152000 0.2349000 -C 0.0040500 0.6001000 0.1524400 -H -0.0329000 0.5612000 0.1378000 -C 0.0400200 0.5409000 0.1309200 -H 0.0324000 0.4564000 0.0988000 -C 0.1424100 0.6093000 0.1584300 -C 0.1916000 0.7231000 0.2152000 -H 0.1740000 0.8158000 0.1909000 -H 0.2261000 0.7081000 0.2127000 -H 0.2057000 0.7174000 0.2777000 -C 0.1171200 0.6219000 0.0582700 -H 0.0864000 0.5492000 0.0232000 -H 0.1505000 0.6102000 0.0528000 -H 0.0985000 0.7143000 0.0354000 -C 0.1699200 0.4616000 0.1951000 -H 0.1840000 0.4538000 0.2576000 -H 0.2044000 0.4474000 0.1924000 -H 0.1387000 0.3905000 0.1584000 -C 0.0437000 1.1277000 0.1676000 -H 0.0435000 1.0391000 0.1408000 -H 0.0552000 1.2039000 0.1449000 -H 0.0029000 1.1457000 0.1515000 -C 0.1797700 1.0947000 0.3181000 -H 0.2107000 1.1467000 0.3724000 -H 0.1777000 1.1308000 0.2667000 -H 0.1907000 0.9953000 0.3266000 -C 0.1025600 1.2980000 0.3413700 -H 0.0635000 1.3150000 0.3313000 -H 0.1093000 1.3697000 0.3102000 -H 0.1356000 1.3018000 0.4060000 -C 0.2022800 1.0300000 0.5269800 -H 0.2291000 1.0267000 0.5081000 -H 0.2242000 0.9945000 0.5886000 -H 0.1896000 1.1269000 0.5247000 -C 0.0929900 0.9005000 0.5067600 -H 0.0797000 0.9932000 0.5113000 -H 0.1221000 0.8618000 0.5672000 -H 0.0576000 0.8384000 0.4720000 -C 0.1620700 0.7336000 0.4499900 -H 0.1278000 0.6711000 0.4094000 -H 0.1855000 0.6962000 0.5113000 -H 0.1884000 0.7405000 0.4305000 - - OUTPUT CELL INFORMATION -Symmetry information: -Monoclinic crystal system. -Space group number : 15 -Hall symbol : -C 2yc -Hermann-Mauguin symbol : C2/c - -Bravais lattice vectors : - 13.3525000 -4.6821500 0.0000000 - 13.3525000 4.6821500 0.0000000 --10.7578855 0.0000000 14.5644810 -All sites, (cartesian coordinates): -Atom x y z -Fe 10.6630286 3.6203320 3.6411202 -Fe 5.2840859 -3.6203320 10.9233607 -Si 8.4498740 -3.5851223 2.9756691 -Si 12.8761832 -3.5851223 4.3065714 -Si 7.4972405 3.5851223 11.5888119 -Si 3.0709313 3.5851223 10.2579096 -Si 22.6312411 -0.7828555 0.7620136 -Si -1.3051838 -0.7828555 6.5202269 -Si -6.6841265 0.7828555 13.8024673 -Si 17.2522984 0.7828555 8.0442541 -N 9.3167019 2.1183919 4.3831806 -N 12.0093553 2.1183919 2.8990599 -N 6.6304126 -2.1183919 10.1813004 -N 3.9377592 -2.1183919 11.6654211 -N 7.3480123 1.2225094 4.8643910 -N 13.9780449 1.2225094 2.4178495 -N 8.5991022 -1.2225094 9.7000900 -N 1.9690696 -1.2225094 12.1466315 -N 22.7537013 -0.1775471 2.3526006 -N -1.4276440 -0.1775471 4.9296399 -N -6.8065868 0.1775471 12.2118804 -N 17.3747586 0.1775471 9.6348411 -C 7.9985769 2.2408770 4.2844334 -C 13.3274803 2.2408770 2.9978071 -C 7.9485376 -2.2408770 10.2800476 -C 2.6196342 -2.2408770 11.5666739 -H 7.5737166 2.9516274 3.8610439 -H 13.7523407 2.9516274 3.4211966 -H 8.3733980 -2.9516274 10.7034371 -H 2.1947738 -2.9516274 11.1432844 -C 9.5053341 0.9373664 5.0620310 -C 11.8207232 0.9373664 2.2202095 -C 6.4417805 -0.9373664 9.5024500 -C 4.1263913 -0.9373664 12.3442715 -H 10.3345884 0.5730952 5.2752550 -H 10.9914689 0.5730952 2.0069855 -H 5.6125262 -0.5730952 9.2892260 -H 4.9556457 -0.5730952 12.5574955 -C 8.3132455 0.3829999 5.3754586 -C 13.0128117 0.3829999 1.9067819 -C 7.6338690 -0.3829999 9.1890223 -C 2.9343028 -0.3829999 12.6576991 -H 8.1711944 -0.4082835 5.8432698 -H 13.1548629 -0.4082835 1.4389707 -H 7.7759202 0.4082835 8.7212112 -H 2.7922516 0.4082835 13.1255103 -C 5.8748700 1.0235180 4.9747898 -C 15.4511873 1.0235180 2.3074507 -C 10.0722445 -1.0235180 9.5896912 -C 0.4959273 -1.0235180 12.2570303 -C 5.1719762 2.0891753 4.1479642 -C 16.1540810 2.0891753 3.1342763 -C 10.7751383 -2.0891753 10.4165168 -C -0.2069665 -2.0891753 11.4302047 -H 5.3805676 2.9572459 4.5018811 -H 15.9454897 2.9572459 2.7803594 -H 10.5665469 -2.9572459 10.0625999 -H 0.0016249 -2.9572459 11.7841216 -H 4.2237590 1.9487108 4.1843754 -H 17.1022983 1.9487108 3.0978651 -H 11.7233555 -1.9487108 10.3801056 -H -1.1551837 -1.9487108 11.4666159 -H 5.4678036 2.0357988 3.2376841 -H 15.8582537 2.0357988 4.0445564 -H 10.4793110 -2.0357988 11.3267969 -H 0.0888608 -2.0357988 10.5199246 -C 5.4727297 1.1415082 6.4335682 -C 15.8533276 1.1415082 0.8486723 -C 10.4743849 -1.1415082 8.1309128 -C 0.0937869 -1.1415082 13.7158087 -H 5.9158282 0.4607236 6.9443445 -H 15.4102291 0.4607236 0.3378960 -H 10.0312863 -0.4607236 7.6201365 -H 0.5368855 -0.4607236 14.2265850 -H 4.5224711 1.0319459 6.5132359 -H 16.8035861 1.0319459 0.7690046 -H 11.4246434 -1.0319459 8.0512451 -H -0.8564716 -1.0319459 13.7954764 -H 5.7239439 2.0067695 6.7666579 -H 15.6021134 2.0067695 0.5155826 -H 10.2231706 -2.0067695 7.7978231 -H 0.3450012 -2.0067695 14.0488984 -C 5.5347071 -0.3595891 4.4407103 -C 15.7913501 -0.3595891 2.8415302 -C 10.4124074 0.3595891 10.1237707 -C 0.1557644 0.3595891 11.7229508 -H 5.8310686 -0.4326307 3.5304302 -H 15.4949887 -0.4326307 3.7518103 -H 10.1160460 0.4326307 11.0340508 -H 0.4521258 0.4326307 10.8126707 -H 4.5848724 -0.4925622 4.4800344 -H 16.7411848 -0.4925622 2.8022061 -H 11.3622421 0.4925622 10.0844466 -H -0.7940703 0.4925622 11.7622749 -H 5.9736228 -1.0253908 4.9752267 -H 15.3524344 -1.0253908 2.3070138 -H 9.9734917 1.0253909 9.5892543 -H 0.5946801 1.0253909 12.2574672 -C 8.6095704 -3.4863289 4.8412335 -C 12.7164869 -3.4863289 2.4410070 -C 7.3375442 3.4863289 9.7232475 -C 3.2306276 3.4863289 12.1234740 -H 21.6791000 0.3661441 5.2315616 -H -0.3530428 0.3661441 2.0506789 -H -5.7319855 -0.3661441 9.3329194 -H 16.3001573 -0.3661441 12.5138021 -H 8.0582589 -2.7727692 5.1718472 -H 13.2677984 -2.7727692 2.1103933 -H 7.8888557 2.7727692 9.3926338 -H 2.6793161 2.7727692 12.4540877 -H 9.5259324 -3.3177715 5.0757216 -H 11.8001249 -3.3177715 2.2065189 -H 6.4211821 3.3177715 9.4887594 -H 4.1469897 3.3177715 12.3579621 -C 19.9473828 0.8867992 2.6492791 -C 1.3786745 0.8867992 4.6329614 -C -4.0002682 -0.8867992 11.9152019 -C 14.5684401 -0.8867992 9.9315196 -H 19.7055503 1.3737428 1.8584278 -H 1.6205070 1.3737428 5.4238127 -H -3.7584358 -1.3737428 12.7060532 -H 14.3266076 -1.3737428 9.1406683 -H 19.4497068 1.2248504 3.3978934 -H 1.8763504 1.2248504 3.8843471 -H -3.5025923 -1.2248504 11.1665876 -H 14.0707641 -1.2248504 10.6801339 -H 19.7469392 -0.0440122 2.5254810 -H 1.5791181 -0.0440122 4.7567595 -H -3.7998246 0.0440122 12.0390000 -H 14.3679964 0.0440122 9.8077215 -C 8.9071118 -1.8915886 2.3103636 -C 12.4189454 -1.8915886 4.9718769 -C 7.0400027 1.8915886 12.2541174 -C 3.5281691 1.8915886 9.5926041 -H 9.8418772 -1.7323955 2.4570279 -H 11.4841800 -1.7323955 4.8252126 -H 6.1052373 1.7323955 12.1074531 -H 4.4629345 1.7323955 9.7392684 -H 8.3917968 -1.2201683 2.7643385 -H 12.9342604 -1.2201683 4.5179020 -H 7.5553177 1.2201683 11.8001425 -H 3.0128541 1.2201683 10.0465790 -H 8.7200608 -1.8560043 1.3690612 -H 12.6059965 -1.8560043 5.9131793 -H 7.2270538 1.8560043 13.1954198 -H 3.3411180 1.8560043 8.6513017 -C 10.8354749 0.2809290 14.1715313 -C -0.2673031 0.2809290 7.6751902 -C 5.1116397 -0.2809290 0.3929497 -C 16.2144176 -0.2809290 6.8892908 -H 9.9161379 0.2500268 14.4465087 -H 0.6520339 0.2500268 7.4002128 -H 6.0309766 -0.2500268 0.1179723 -H 15.2950806 -0.2500268 7.1642682 -H 10.9130022 -0.0515036 13.2740680 -H -0.3448304 -0.0515036 8.5726535 -H 5.0341123 0.0515036 1.2904130 -H 16.2919449 0.0515037 5.9918275 -H 11.1495663 1.1883297 14.2047383 -H -0.5813945 1.1883297 7.6419832 -H 4.7975482 -1.1883297 0.3597427 -H 16.5285090 -1.1883297 6.9224978 -C 0.1840399 3.7504022 14.4660251 -C 10.3841319 3.7504022 7.3806964 -C 15.7630746 -3.7504021 0.0984559 -C 5.5629826 -3.7504021 7.1837846 -H 13.9402901 -0.0636772 14.3999024 -H -3.3721183 -0.0636772 7.4468191 -H 2.0068244 0.0636772 0.1645786 -H 19.3192329 0.0636772 7.1176619 -H 0.0568639 3.3880037 13.5857479 -H 10.5113079 3.3880037 8.2609736 -H 15.8902506 -3.3880037 0.9787331 -H 5.4358067 -3.3880037 6.3035074 -H 11.5130712 3.1688791 0.4078055 -H 9.8129861 3.1688791 6.8744350 -H 4.4340433 -3.1688791 14.1566755 -H 6.1341285 -3.1688791 7.6900460 -C 8.4864188 2.1875005 0.7283697 -C 12.8396385 2.1875005 6.5538708 -C 7.4606957 -2.1875005 13.8361113 -C 3.1074761 -2.1875005 8.0106102 -H 8.9649366 1.6022317 1.3195420 -H 12.3611207 1.6022317 5.9626985 -H 6.9821780 -1.6022317 13.2449390 -H 3.5859938 -1.6022317 8.6017825 -H -2.2375989 1.8372757 14.3999024 -H 12.8057707 1.8372757 7.4468191 -H 18.1847134 -1.8372757 0.1645786 -H 3.1413439 -1.8372757 7.1176619 -H 7.5736050 2.2521142 1.0122314 -H 13.7524523 2.2521142 6.2700091 -H 8.3735096 -2.2521141 13.5522496 -H 2.1946622 -2.2521141 8.2944719 - -Unit cell volume : 1821.0963266 A^3 -Unit cell density : 0.6863444 u/A^3 = 7.6910864 g/cm^3 diff --git a/cell2mol/test/AFIBAU/Cell_AFIBAU.cell b/cell2mol/test/AFIBAU/Cell_AFIBAU.cell deleted file mode 100644 index 49f88a25b..000000000 Binary files a/cell2mol/test/AFIBAU/Cell_AFIBAU.cell and /dev/null differ diff --git a/cell2mol/test/AFIBAU/Ref_Cell_AFIBAU.cell b/cell2mol/test/AFIBAU/Ref_Cell_AFIBAU.cell deleted file mode 100644 index 2ae2dabe8..000000000 Binary files a/cell2mol/test/AFIBAU/Ref_Cell_AFIBAU.cell and /dev/null differ diff --git a/cell2mol/test/AFIBAU/cell2mol.out b/cell2mol/test/AFIBAU/cell2mol.out deleted file mode 100644 index d944eb001..000000000 --- a/cell2mol/test/AFIBAU/cell2mol.out +++ /dev/null @@ -1,127 +0,0 @@ -cell2mol version 2.0 -INITIATING cell object from info path: AFIBAU.info -Debug level: 1 -######################################### - GETREFS: Generate reference molecules -######################################### -GETREFS: found 1 reference molecules -GETREFS: ['H60-C26-N6-Si4-Fe'] -GETREFS: [------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 97 - Formula = H60-C26-N6-Si4-Fe - Has Adjacency Matrix = YES - Number of Ligands = 4 - Number of Metals = 1 ---------------------------------------------------- -] -GETREFS: working with H60-C26-N6-Si4-Fe - -LIGAND.SPLIT_LIGAND: splitting H12-C7-N2 into groups -Entering COORD_CORR_NONHAPTIC: - Coordinating atom label=N with mconnec=1, group index 0 - evaluating coordination with metal Fe - connectivity verified for atom N with ligand index 0 -LIGAND.SPLIT_LIGAND: found groups ['N'] - -LIGAND.SPLIT_LIGAND: splitting H18-C6-N-Si2 into groups -Entering COORD_CORR_NONHAPTIC: - Coordinating atom label=N with mconnec=1, group index 0 - evaluating coordination with metal Fe - connectivity verified for atom N with ligand index 2 -LIGAND.SPLIT_LIGAND: found groups ['N'] - -LIGAND.SPLIT_LIGAND: splitting H12-C7-N2 into groups -Entering COORD_CORR_NONHAPTIC: - Coordinating atom label=N with mconnec=1, group index 0 - evaluating coordination with metal Fe - connectivity verified for atom N with ligand index 0 -LIGAND.SPLIT_LIGAND: found groups ['N'] - -LIGAND.SPLIT_LIGAND: splitting H18-C6-N-Si2 into groups -Entering COORD_CORR_NONHAPTIC: - Coordinating atom label=N with mconnec=1, group index 0 - evaluating coordination with metal Fe - connectivity verified for atom N with ligand index 2 -LIGAND.SPLIT_LIGAND: found groups ['N'] -LIGAND.Get_denticity: final connectivity of ligand H12-C7-N2 is 1 -LIGAND.Get_denticity: final connectivity of ligand H18-C6-N-Si2 is 1 -LIGAND.Get_denticity: final connectivity of ligand H12-C7-N2 is 1 -LIGAND.Get_denticity: final connectivity of ligand H18-C6-N-Si2 is 1 - -METAL.Get_coord_geometry: Fe -METAL.Get_coord_geometry: coord_nr=4 -DEFINE_coordination_geometry: The most likely geometry is 'Tetrahedral' with deviation value 2.066 -SAVING cell2mol CELL object to /Users/ycho/cell2mol/cell2mol/test/AFIBAU/Ref_Cell_AFIBAU.cell -ENTERING cell2mol with debug=1 -CLASSIFY_FRAGMENTS. 36 Blocks sorted as (Molec, Frag, H): 0 24 12 - -############################################## -FRAG_RECONSTRUCT. 24 molecules submitted to SEQUENTIAL with Heavy -############################################## -FRAG_RECONSTRUCT. 0 molecules and 2 fragments out of SEQUENTIAL with Heavy -FRAG_RECONSTRUCT. 14 fragments submitted to sequential with All -FINISHED succesfully -finalmols=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 97 - Formula = H60-C26-N6-Si4-Fe - Has Adjacency Matrix = YES - Number of Ligands = 4 - Number of Metals = 1 ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 97 - Formula = H60-C26-N6-Si4-Fe - Has Adjacency Matrix = YES - Number of Ligands = 4 - Number of Metals = 1 ---------------------------------------------------- -] -remfrag=[] -FRAG_RECONSTRUCT. No remaining Molecules after Hydrogen reconstruction - -Cell Reconstruction Finished Normally. Total execution time: 11.33 seconds -Getting unique species in cell -3 Species (Metal or Ligand or Molecules) to Characterize - -FINAL Charge Distribution: [[0, -1, 0, -1, 2, 0, -1, 0, -1, 2]] - -######################################### -Assigning Charges and Preparing Molecules -######################################### -CELL.CREATE_BONDS: Creating Bonds for molecule H60-C26-N6-Si4-Fe -CREATE_bonds_specie: specie.formula='H12-C7-N2', specie.subtype='ligand' -CREATE_bonds_specie: specie.formula='H18-C6-N-Si2', specie.subtype='ligand' -CREATE_bonds_specie: specie.formula='H12-C7-N2', specie.subtype='ligand' -CREATE_bonds_specie: specie.formula='H18-C6-N-Si2', specie.subtype='ligand' -CELL.CREATE_BONDS: Creating Bonds for molecule H60-C26-N6-Si4-Fe -CREATE_bonds_specie: specie.formula='H12-C7-N2', specie.subtype='ligand' -CREATE_bonds_specie: specie.formula='H18-C6-N-Si2', specie.subtype='ligand' -CREATE_bonds_specie: specie.formula='H12-C7-N2', specie.subtype='ligand' -CREATE_bonds_specie: specie.formula='H18-C6-N-Si2', specie.subtype='ligand' - -Total execution time for Charge Assignment: 0.15 seconds -Charge Assignment successfully finished. - -######################################### - Assigning Spin multiplicity -######################################### -ASSIGN_SPIN_METAL: Spin multiplicity of the metal Fe is predicted as 5 using Random Forest model -GET_SPIN: Spin multiplicity of the metal Fe is assigned as 5 -GET_SPIN: Spin multiplicity of the complex H60-C26-N6-Si4-Fe is assigned as 5 - -ASSIGN_SPIN_METAL: Spin multiplicity of the metal Fe is predicted as 5 using Random Forest model -GET_SPIN: Spin multiplicity of the metal Fe is assigned as 5 -GET_SPIN: Spin multiplicity of the complex H60-C26-N6-Si4-Fe is assigned as 5 - - -Total execution time for Spin Assignment: 0.39 seconds -SAVING cell2mol CELL object to /Users/ycho/cell2mol/cell2mol/test/AFIBAU/Cell_AFIBAU.cell diff --git a/cell2mol/test/AFUGIS/AFUGIS.cif b/cell2mol/test/AFUGIS/AFUGIS.cif deleted file mode 100644 index ca45a8cb4..000000000 --- a/cell2mol/test/AFUGIS/AFUGIS.cif +++ /dev/null @@ -1,323 +0,0 @@ - -####################################################################### -# -# Cambridge Crystallographic Data Centre -# CCDC -# -####################################################################### -# -# If this CIF has been generated from an entry in the Cambridge -# Structural Database, then it will include bibliographic, chemical, -# crystal, experimental, refinement or atomic coordinate data resulting -# from the CCDC's data processing and validation procedures. -# -####################################################################### - -data_CSD_CIF_AFUGIS -_audit_creation_date 2009-01-29 -_audit_creation_method CSD-ConQuest-V1 -_database_code_CSD AFUGIS -_database_code_depnum_ccdc_archive 'CCDC 701540' -_chemical_formula_sum 'C42 H68 Fe1 N4' -_chemical_formula_moiety -; -C42 H68 Fe1 N4 -; -_journal_coden_Cambridge 4 -_journal_volume 130 -_journal_year 2008 -_journal_page_first 6624 -_journal_name_full 'J.Am.Chem.Soc. ' -loop_ -_publ_author_name -"Ying Yu" -"A.R.Sadique" -"J.M.Smith" -"T.R.Dugan" -"R.E.Cowley" -"W.W.Brennessel" -"C.J.Flaschenriem" -"E.Bill" -"T.R.Cundari" -"P.L.Holland" -_chemical_name_systematic -; -bis(N,N'-bis(2,6-Di-isopropylphenyl)-2,2,6,6-tetramethylheptane-3,5-di-iminato --N,N')-(N,N'-di-isopropylformamidinato-N,N')-iron(ii) -; -_cell_volume 1966.061 -_exptl_crystal_colour 'red-orange' -_exptl_crystal_density_diffrn 1.157 -_exptl_crystal_description 'block' -_diffrn_ambient_temperature 100.0 -#These two values have been output from a single CSD field. -_refine_ls_R_factor_gt 0.0302 -_refine_ls_wR_factor_gt 0.0302 -_symmetry_cell_setting triclinic -_symmetry_space_group_name_H-M 'P -1' -_symmetry_Int_Tables_number 2 -loop_ -_symmetry_equiv_pos_site_id -_symmetry_equiv_pos_as_xyz -1 x,y,z -2 -x,-y,-z -_cell_length_a 10.878(2) -_cell_length_b 12.781(3) -_cell_length_c 15.368(3) -_cell_angle_alpha 98.705(3) -_cell_angle_beta 99.605(3) -_cell_angle_gamma 107.216(3) -_cell_formula_units_Z 2 -loop_ -_atom_type_symbol -_atom_type_radius_bond -C 0.68 -H 0.23 -Fe 1.34 -N 0.68 -loop_ -_atom_site_label -_atom_site_type_symbol -_atom_site_fract_x -_atom_site_fract_y -_atom_site_fract_z -Fe1 Fe 0.279895(12) 0.721394(10) 0.735328(8) -N1 N 0.48178(7) 0.76734(7) 0.80425(5) -N2 N 0.40854(7) 0.69876(7) 0.65499(5) -C1 C 0.50969(8) 0.73906(7) 0.72564(6) -H1 H 0.59750 0.74720 0.72000 -C2 C 0.58889(9) 0.81871(8) 0.88475(6) -H2 H 0.66970 0.86180 0.86630 -C3 C 0.54905(10) 0.89927(8) 0.94843(7) -H3 H 0.53350 0.95800 0.91830 -H4 H 0.61990 0.93350 1.00290 -H5 H 0.46800 0.85830 0.96520 -C4 C 0.62037(12) 0.72974(10) 0.93253(8) -H6 H 0.64320 0.67680 0.89030 -H7 H 0.54300 0.68930 0.95340 -H8 H 0.69500 0.76620 0.98440 -C5 C 0.42246(9) 0.65965(8) 0.56376(6) -H9 H 0.35280 0.58480 0.53850 -C6 C 0.39675(11) 0.73846(9) 0.50330(7) -H10 H 0.30850 0.74370 0.50270 -H11 H 0.40210 0.70940 0.44180 -H12 H 0.46310 0.81300 0.52660 -C7 C 0.55560(12) 0.64467(13) 0.55968(8) -H13 H 0.57300 0.59570 0.60000 -H14 H 0.62540 0.71790 0.57880 -H15 H 0.55390 0.61080 0.49770 -N3 N 0.19777(7) 0.84427(6) 0.71331(5) -N4 N 0.14971(7) 0.64034(6) 0.79962(5) -C8 C 0.05910(9) 0.95936(7) 0.77325(6) -C9 C 0.13517(8) 0.87338(7) 0.77403(6) -C10 C 0.13198(8) 0.82253(7) 0.85163(6) -H16 H 0.12650 0.86980 0.90380 -C11 C 0.13537(8) 0.71843(7) 0.86542(5) -C12 C 0.12791(9) 0.69767(7) 0.96239(6) -C13 C 0.11059(12) 1.04902(9) 0.86236(7) -H17 H 0.20630 1.08470 0.87180 -H18 H 0.09100 1.01340 0.91290 -H19 H 0.06710 1.10580 0.85880 -C14 C 0.06438(10) 1.02355(8) 0.69648(6) -H20 H 0.15640 1.06600 0.69860 -H21 H 0.01410 1.07530 0.70350 -H22 H 0.02590 0.97030 0.63830 -C15 C -0.08705(10) 0.89287(10) 0.76553(9) -H23 H -0.09500 0.85540 0.81650 -H24 H -0.12070 0.83660 0.70880 -H25 H -0.13840 0.94430 0.76650 -C16 C 0.2199(1) 0.63178(8) 0.99083(6) -H26 H 0.22390 0.62770 1.05440 -H27 H 0.30860 0.66980 0.98310 -H28 H 0.18570 0.55580 0.95320 -C17 C -0.01330(9) 0.63507(8) 0.96923(6) -H29 H -0.01420 0.63020 1.03220 -H30 H -0.04350 0.55940 0.93140 -H31 H -0.07220 0.67570 0.94850 -C18 C 0.17622(11) 0.80856(8) 1.03380(6) -H32 H 0.18570 0.79230 1.09440 -H33 H 0.11190 0.84810 1.02540 -H34 H 0.26180 0.85570 1.02690 -C19 C 0.22416(8) 0.89639(7) 0.63835(6) -C20 C 0.13747(9) 0.85480(7) 0.55258(6) -C21 C 0.17202(9) 0.90395(8) 0.48100(6) -H35 H 0.11440 0.87660 0.42280 -C22 C 0.28861(10) 0.99177(8) 0.49323(7) -H36 H 0.30980 1.02530 0.44420 -C23 C 0.37424(10) 1.03049(8) 0.57754(7) -H37 H 0.45430 1.09050 0.58550 -C24 C 0.34528(9) 0.98317(7) 0.65101(6) -C25 C 0.00889(9) 0.75851(7) 0.53556(6) -H38 H -0.01060 0.74740 0.59550 -C26 C 0.02251(11) 0.64972(8) 0.48708(7) -H39 H -0.06130 0.58850 0.47650 -H40 H 0.09220 0.63160 0.52470 -H41 H 0.04540 0.65960 0.42910 -C27 C -0.10827(10) 0.78138(9) 0.48104(7) -H42 H -0.19030 0.72210 0.47960 -H43 H -0.09700 0.78280 0.41920 -H44 H -0.11230 0.85390 0.50940 -C28 C 0.44502(9) 1.02840(8) 0.74129(6) -H45 H 0.41470 0.97920 0.78360 -C29 C 0.45496(12) 1.14829(10) 0.78328(8) -H46 H 0.36850 1.14920 0.79300 -H47 H 0.48330 1.19790 0.74240 -H48 H 0.51950 1.17430 0.84120 -C30 C 0.58208(10) 1.02586(9) 0.73160(7) -H49 H 0.57470 0.95100 0.69990 -H50 H 0.64030 1.04370 0.79160 -H51 H 0.61890 1.08120 0.69710 -C31 C 0.08620(8) 0.52236(7) 0.78969(5) -C32 C 0.15931(8) 0.44748(7) 0.79214(6) -C33 C 0.09203(9) 0.33234(7) 0.77899(6) -H52 H 0.14120 0.28210 0.78060 -C34 C -0.04400(9) 0.28996(7) 0.76379(6) -H53 H -0.08760 0.21190 0.75720 -C35 C -0.11607(9) 0.36287(7) 0.75836(6) -H54 H -0.20970 0.33380 0.74700 -C36 C -0.05391(8) 0.47813(7) 0.76923(6) -C37 C 0.30868(9) 0.48541(7) 0.80598(7) -H55 H 0.34290 0.56920 0.82280 -C38 C 0.34632(10) 0.44844(9) 0.71722(8) -H56 H 0.30160 0.47510 0.66880 -H57 H 0.31930 0.36640 0.70170 -H58 H 0.44210 0.48020 0.72440 -C39 C 0.37467(11) 0.44061(9) 0.88161(8) -H59 H 0.47080 0.47030 0.88980 -H60 H 0.34510 0.35850 0.86530 -H61 H 0.35020 0.46440 0.93800 -C40 C -0.13729(8) 0.55160(7) 0.74794(6) -H62 H -0.08970 0.62890 0.78530 -C41 C -0.27546(9) 0.51189(9) 0.76663(7) -H63 H -0.26860 0.50250 0.82920 -H64 H -0.32740 0.44010 0.72540 -H65 H -0.31900 0.56760 0.75730 -C42 C -0.14664(10) 0.55705(9) 0.64817(7) -H66 H -0.05770 0.58000 0.63650 -H67 H -0.18990 0.61160 0.63400 -H68 H -0.19830 0.48300 0.61020 -loop_ -_geom_bond_atom_site_label_1 -_geom_bond_atom_site_label_2 -_geom_bond_distance -_geom_bond_site_symmetry_1 -_geom_bond_site_symmetry_2 -Fe1 N1 2.136 1_555 1_555 -N1 C1 1.318 1_555 1_555 -N2 Fe1 2.067 1_555 1_555 -C1 N2 1.323 1_555 1_555 -H1 C1 0.950 1_555 1_555 -C2 N1 1.463 1_555 1_555 -H2 C2 1.000 1_555 1_555 -C3 C2 1.519 1_555 1_555 -H3 C3 0.980 1_555 1_555 -H4 C3 0.980 1_555 1_555 -H5 C3 0.980 1_555 1_555 -C4 C2 1.533 1_555 1_555 -H6 C4 0.980 1_555 1_555 -H7 C4 0.980 1_555 1_555 -H8 C4 0.979 1_555 1_555 -C5 N2 1.464 1_555 1_555 -H9 C5 1.000 1_555 1_555 -C6 C5 1.523 1_555 1_555 -H10 C6 0.981 1_555 1_555 -H11 C6 0.980 1_555 1_555 -H12 C6 0.980 1_555 1_555 -C7 C5 1.526 1_555 1_555 -H13 C7 0.980 1_555 1_555 -H14 C7 0.980 1_555 1_555 -H15 C7 0.980 1_555 1_555 -N3 Fe1 2.066 1_555 1_555 -N4 Fe1 1.991 1_555 1_555 -C8 C9 1.559 1_555 1_555 -C9 N3 1.315 1_555 1_555 -C10 C9 1.443 1_555 1_555 -H16 C10 0.950 1_555 1_555 -C11 N4 1.372 1_555 1_555 -C12 C11 1.564 1_555 1_555 -C13 C8 1.546 1_555 1_555 -H17 C13 0.981 1_555 1_555 -H18 C13 0.980 1_555 1_555 -H19 C13 0.980 1_555 1_555 -C14 C8 1.535 1_555 1_555 -H20 C14 0.980 1_555 1_555 -H21 C14 0.980 1_555 1_555 -H22 C14 0.980 1_555 1_555 -C15 C8 1.540 1_555 1_555 -H23 C15 0.981 1_555 1_555 -H24 C15 0.979 1_555 1_555 -H25 C15 0.981 1_555 1_555 -C16 C12 1.538 1_555 1_555 -H26 C16 0.981 1_555 1_555 -H27 C16 0.979 1_555 1_555 -H28 C16 0.980 1_555 1_555 -C17 C12 1.537 1_555 1_555 -H29 C17 0.981 1_555 1_555 -H30 C17 0.979 1_555 1_555 -H31 C17 0.980 1_555 1_555 -C18 C12 1.544 1_555 1_555 -H32 C18 0.980 1_555 1_555 -H33 C18 0.980 1_555 1_555 -H34 C18 0.980 1_555 1_555 -C19 N3 1.443 1_555 1_555 -C20 C19 1.409 1_555 1_555 -C21 C20 1.398 1_555 1_555 -H35 C21 0.951 1_555 1_555 -C22 C21 1.385 1_555 1_555 -H36 C22 0.950 1_555 1_555 -C23 C22 1.386 1_555 1_555 -H37 C23 0.950 1_555 1_555 -C24 C19 1.410 1_555 1_555 -C25 C20 1.517 1_555 1_555 -H38 C25 1.000 1_555 1_555 -C26 C25 1.535 1_555 1_555 -H39 C26 0.980 1_555 1_555 -H40 C26 0.980 1_555 1_555 -H41 C26 0.980 1_555 1_555 -C27 C25 1.533 1_555 1_555 -H42 C27 0.979 1_555 1_555 -H43 C27 0.980 1_555 1_555 -H44 C27 0.979 1_555 1_555 -C28 C24 1.523 1_555 1_555 -H45 C28 1.000 1_555 1_555 -C29 C28 1.535 1_555 1_555 -H46 C29 0.980 1_555 1_555 -H47 C29 0.980 1_555 1_555 -H48 C29 0.980 1_555 1_555 -C30 C28 1.532 1_555 1_555 -H49 C30 0.980 1_555 1_555 -H50 C30 0.979 1_555 1_555 -H51 C30 0.979 1_555 1_555 -C31 N4 1.433 1_555 1_555 -C32 C31 1.415 1_555 1_555 -C33 C32 1.402 1_555 1_555 -H52 C33 0.950 1_555 1_555 -C34 C33 1.382 1_555 1_555 -H53 C34 0.951 1_555 1_555 -C35 C34 1.387 1_555 1_555 -H54 C35 0.950 1_555 1_555 -C36 C31 1.420 1_555 1_555 -C37 C32 1.519 1_555 1_555 -H55 C37 1.000 1_555 1_555 -C38 C37 1.535 1_555 1_555 -H56 C38 0.980 1_555 1_555 -H57 C38 0.980 1_555 1_555 -H58 C38 0.980 1_555 1_555 -C39 C37 1.536 1_555 1_555 -H59 C39 0.980 1_555 1_555 -H60 C39 0.980 1_555 1_555 -H61 C39 0.980 1_555 1_555 -C40 C36 1.520 1_555 1_555 -H62 C40 1.000 1_555 1_555 -C41 C40 1.528 1_555 1_555 -H63 C41 0.980 1_555 1_555 -H64 C41 0.980 1_555 1_555 -H65 C41 0.980 1_555 1_555 -C42 C40 1.533 1_555 1_555 -H66 C42 0.980 1_555 1_555 -H67 C42 0.980 1_555 1_555 -H68 C42 0.980 1_555 1_555 -C10 C11 1.389 1_555 1_555 -C23 C24 1.397 1_555 1_555 -C35 C36 1.398 1_555 1_555 -#END diff --git a/cell2mol/test/AFUGIS/AFUGIS.info b/cell2mol/test/AFUGIS/AFUGIS.info deleted file mode 100644 index eda61f949..000000000 --- a/cell2mol/test/AFUGIS/AFUGIS.info +++ /dev/null @@ -1,384 +0,0 @@ -CIF2CELL 2.0.0 -2024-04-19 13:25 -Output for None (bis(N,N'-bis(2,6-Di-isopropylphenyl)-2,2,6,6-tetramethylheptane-3,5-di-iminato --N,N')-(N,N'-di-isopropylformamidinato-N,N')-iron(ii)) -CIF file exported from Cambridge Structural Database. -Database reference code: AFUGIS. - BIBLIOGRAPHIC INFORMATION -Ying Yu et al., J.Am.Chem.Soc. 130, 6624- (2008) - INPUT CELL INFORMATION -Symmetry information: -Triclinic crystal system. -Space group number : 2 -Hall symbol : -P 1 -Hermann-Mauguin symbol : P-1 - -Lattice parameters: - a b c - 10.8780000 12.7810000 15.3680000 - alpha beta gamma - 98.7050000 99.6050000 107.2160000 -Representative sites : -Atom x y z -Fe 0.2798950 0.7213940 0.7353280 -N 0.4817800 0.7673400 0.8042500 -N 0.4085400 0.6987600 0.6549900 -C 0.5096900 0.7390600 0.7256400 -H 0.5975000 0.7472000 0.7200000 -C 0.5888900 0.8187100 0.8847500 -H 0.6697000 0.8618000 0.8663000 -C 0.5490500 0.8992700 0.9484300 -H 0.5335000 0.9580000 0.9183000 -H 0.6199000 0.9335000 1.0029000 -H 0.4680000 0.8583000 0.9652000 -C 0.6203700 0.7297400 0.9325300 -H 0.6432000 0.6768000 0.8903000 -H 0.5430000 0.6893000 0.9534000 -H 0.6950000 0.7662000 0.9844000 -C 0.4224600 0.6596500 0.5637600 -H 0.3528000 0.5848000 0.5385000 -C 0.3967500 0.7384600 0.5033000 -H 0.3085000 0.7437000 0.5027000 -H 0.4021000 0.7094000 0.4418000 -H 0.4631000 0.8130000 0.5266000 -C 0.5556000 0.6446700 0.5596800 -H 0.5730000 0.5957000 0.6000000 -H 0.6254000 0.7179000 0.5788000 -H 0.5539000 0.6108000 0.4977000 -N 0.1977700 0.8442700 0.7133100 -N 0.1497100 0.6403400 0.7996200 -C 0.0591000 0.9593600 0.7732500 -C 0.1351700 0.8733800 0.7740300 -C 0.1319800 0.8225300 0.8516300 -H 0.1265000 0.8698000 0.9038000 -C 0.1353700 0.7184300 0.8654200 -C 0.1279100 0.6976700 0.9623900 -C 0.1105900 1.0490200 0.8623600 -H 0.2063000 1.0847000 0.8718000 -H 0.0910000 1.0134000 0.9129000 -H 0.0671000 1.1058000 0.8588000 -C 0.0643800 1.0235500 0.6964800 -H 0.1564000 1.0660000 0.6986000 -H 0.0141000 1.0753000 0.7035000 -H 0.0259000 0.9703000 0.6383000 -C -0.0870500 0.8928700 0.7655300 -H -0.0950000 0.8554000 0.8165000 -H -0.1207000 0.8366000 0.7088000 -H -0.1384000 0.9443000 0.7665000 -C 0.2199000 0.6317800 0.9908300 -H 0.2239000 0.6277000 1.0544000 -H 0.3086000 0.6698000 0.9831000 -H 0.1857000 0.5558000 0.9532000 -C -0.0133000 0.6350700 0.9692300 -H -0.0142000 0.6302000 1.0322000 -H -0.0435000 0.5594000 0.9314000 -H -0.0722000 0.6757000 0.9485000 -C 0.1762200 0.8085600 1.0338000 -H 0.1857000 0.7923000 1.0944000 -H 0.1119000 0.8481000 1.0254000 -H 0.2618000 0.8557000 1.0269000 -C 0.2241600 0.8963900 0.6383500 -C 0.1374700 0.8548000 0.5525800 -C 0.1720200 0.9039500 0.4810000 -H 0.1144000 0.8766000 0.4228000 -C 0.2886100 0.9917700 0.4932300 -H 0.3098000 1.0253000 0.4442000 -C 0.3742400 1.0304900 0.5775400 -H 0.4543000 1.0905000 0.5855000 -C 0.3452800 0.9831700 0.6510100 -C 0.0088900 0.7585100 0.5355600 -H -0.0106000 0.7474000 0.5955000 -C 0.0225100 0.6497200 0.4870800 -H -0.0613000 0.5885000 0.4765000 -H 0.0922000 0.6316000 0.5247000 -H 0.0454000 0.6596000 0.4291000 -C -0.1082700 0.7813800 0.4810400 -H -0.1903000 0.7221000 0.4796000 -H -0.0970000 0.7828000 0.4192000 -H -0.1123000 0.8539000 0.5094000 -C 0.4450200 1.0284000 0.7412900 -H 0.4147000 0.9792000 0.7836000 -C 0.4549600 1.1482900 0.7832800 -H 0.3685000 1.1492000 0.7930000 -H 0.4833000 1.1979000 0.7424000 -H 0.5195000 1.1743000 0.8412000 -C 0.5820800 1.0258600 0.7316000 -H 0.5747000 0.9510000 0.6999000 -H 0.6403000 1.0437000 0.7916000 -H 0.6189000 1.0812000 0.6971000 -C 0.0862000 0.5223600 0.7896900 -C 0.1593100 0.4474800 0.7921400 -C 0.0920300 0.3323400 0.7789900 -H 0.1412000 0.2821000 0.7806000 -C -0.0440000 0.2899600 0.7637900 -H -0.0876000 0.2119000 0.7572000 -C -0.1160700 0.3628700 0.7583600 -H -0.2097000 0.3338000 0.7470000 -C -0.0539100 0.4781300 0.7692300 -C 0.3086800 0.4854100 0.8059800 -H 0.3429000 0.5692000 0.8228000 -C 0.3463200 0.4484400 0.7172200 -H 0.3016000 0.4751000 0.6688000 -H 0.3193000 0.3664000 0.7017000 -H 0.4421000 0.4802000 0.7244000 -C 0.3746700 0.4406100 0.8816100 -H 0.4708000 0.4703000 0.8898000 -H 0.3451000 0.3585000 0.8653000 -H 0.3502000 0.4644000 0.9380000 -C -0.1372900 0.5516000 0.7479400 -H -0.0897000 0.6289000 0.7853000 -C -0.2754600 0.5118900 0.7666300 -H -0.2686000 0.5025000 0.8292000 -H -0.3274000 0.4401000 0.7254000 -H -0.3190000 0.5676000 0.7573000 -C -0.1466400 0.5570500 0.6481700 -H -0.0577000 0.5800000 0.6365000 -H -0.1899000 0.6116000 0.6340000 -H -0.1983000 0.4830000 0.6102000 - - OUTPUT CELL INFORMATION -Symmetry information: -Triclinic crystal system. -Space group number : 2 -Hall symbol : -P 1 -Hermann-Mauguin symbol : P-1 - -Bravais lattice vectors : - 10.8780000 0.0000000 0.0000000 - -3.7828540 12.2083569 0.0000000 - -2.5642244 -3.2295451 14.8043985 -All sites, (cartesian coordinates): -Atom x y z -Fe -1.5697763 6.4322604 10.8860888 -Fe 6.1006980 2.5465513 3.9183098 -N 0.2757902 6.7705989 11.9064375 -N 4.2551314 2.2082128 2.8979610 -N 0.1212497 6.4153917 9.6967330 -N 4.4096719 2.5634201 5.1076655 -C 0.8879480 6.6792211 10.7426637 -C 3.6429737 2.2995906 4.0617348 -H 1.8268149 6.7968117 10.6591669 -H 2.7041067 2.1820000 4.1452316 -C 1.0401875 7.1377638 13.0981916 -C 3.4907341 1.8410479 1.7062069 -H 1.8035454 7.7234070 12.8250504 -H 2.7273762 1.2554047 1.9793481 -C 0.1387715 7.9156116 14.0409357 -C 4.3921502 1.0632001 0.7634628 -H -0.1752884 8.7299146 13.5948792 -H 4.7062100 0.2488972 1.2095194 -H 3.2045418 11.3871354 0.0429328 -H 1.3263798 -2.4083237 14.7614658 -H -0.6309090 7.3612757 14.2892054 -H 5.1618306 1.6175360 0.5151931 -C 1.5966688 5.8972786 13.8055457 -C 2.9342528 3.0815331 0.9988528 -H 2.1535650 5.3873519 13.1803560 -H 2.3773566 3.5914598 1.6240425 -H 0.8545012 5.3361721 14.1145135 -H 3.6764204 3.6426397 0.6898850 -H 2.1375648 6.1748788 14.5734499 -H 2.3933568 2.8039329 0.2309486 -C 0.6545531 6.2325542 8.3461277 -C 3.8763685 2.7462575 6.4582708 -H 0.2447106 5.4003370 7.9721686 -H 4.2862111 3.5784747 6.8322299 -C 0.2317860 7.3899531 7.4510538 -C 4.2991356 1.5888586 7.3533447 -H -0.7464811 7.4558627 7.4421711 -H 5.2774027 1.5229491 7.3622274 -H 0.5576129 7.2337953 6.5405833 -H 3.9733088 1.7450164 8.2638153 -H 0.6118210 8.2247157 7.7959963 -H 3.9191007 0.7540961 7.0084023 -C 2.1699792 6.0628496 8.2857258 -C 2.3609424 2.9159621 6.5186728 -H 2.4411132 5.3347911 8.8826391 -H 2.0898084 3.6440206 5.9217594 -H 2.6032173 6.8951187 8.5687859 -H 1.9277044 2.0836931 6.2356127 -H 2.4385425 5.8495198 7.3681491 -H 2.0923791 3.1292920 7.4362494 -N -2.8714950 8.0034826 10.5601255 -N 7.4024166 0.9753291 4.2442730 -N -2.8441724 5.2350904 11.8378931 -N 7.3750941 3.7437214 2.9665054 -C -4.9690155 9.2149635 11.4475012 -C 9.4999371 -0.2361517 3.3568974 -C -3.8182764 8.1627699 11.4590486 -C 8.3491980 0.8160418 3.3453499 -C -3.8596029 7.2913622 12.6078699 -C 8.3905245 1.6874495 2.1965286 -H -4.2318054 7.6999659 13.3802154 -H 8.7627270 1.2788458 1.4241831 -C -3.4642920 5.9759369 12.8120226 -C 7.9952136 3.0028749 1.9923760 -C -3.7155627 5.4093224 14.2476051 -C 8.2464843 3.5694893 0.5567934 -C -1.1937221 -2.1865769 12.7667211 -C 5.7246437 11.1653886 2.0376774 -H -0.3117672 -1.7814696 12.9064746 -H 4.8426888 10.7602813 1.8979239 -H -1.4016727 -2.7846598 13.5149354 -H 5.9325943 11.7634715 1.2894631 -H -1.8724681 -1.4818892 12.7140174 -H 6.4033897 10.4607009 2.0903811 -C -1.1746916 -1.9618068 10.3109675 -C 5.7056132 10.9406185 4.4934310 -H -0.3397163 -1.4504087 10.3423528 -H 4.8706380 10.4292204 4.4620457 -H -1.9354010 -1.3526957 10.4148944 -H 6.4663226 10.3315074 4.3895042 -H -5.0255074 9.7843500 9.4496476 -H 9.5564291 -0.8055383 5.3547509 -C 4.5904826 8.4281619 11.3332112 -C -0.0595609 0.5506498 3.4711873 -H 4.5150475 7.8061049 12.0877914 -H 0.0158741 1.1727069 2.7166071 -H 4.5827675 7.9244098 10.4933577 -H -0.0518459 1.0544020 4.3110408 -H 3.8348578 9.0529050 11.3475715 -H 0.6960638 -0.0740933 3.4568271 -C -2.5385698 4.5130655 14.6686422 -C 7.0694914 4.4657462 0.1357563 -H -0.0784070 7.4874983 0.8053593 -H 4.6093287 1.4913134 13.9990392 -H -1.6976938 5.0021916 14.5542042 -H 6.2286154 3.9766201 0.2501943 -H -2.5266843 3.7070023 14.1115527 -H 7.0576060 5.2718094 0.6928459 -C 5.8456223 4.6229892 14.3488672 -C -1.3147007 4.3558226 0.4555313 -H 8.2570098 7.5897151 0.4767016 -H -3.7260882 1.3890966 14.3276969 -H 5.9003599 3.8213565 13.7888168 -H -1.3694382 5.1574552 1.0155817 -H 5.1043671 5.1859632 14.0419720 -H -0.5734455 3.7928486 0.7624265 -C -1.2284140 9.7620304 0.5003887 -C 5.7593356 -0.7832187 14.3040098 -H -1.2191734 9.3678121 1.3975352 -H 5.7500950 -0.3890004 13.4068633 -H -2.0561215 10.2718770 0.3760317 -H 6.5870432 -1.2930653 14.4283668 -H -0.4581054 10.3598162 0.3982383 -H 4.9890270 -1.3810045 14.4061602 -C -2.5893726 8.8818689 9.4503878 -C 7.1202943 0.0969429 5.3540107 -C -3.1551240 8.6511214 8.1806145 -C 7.6860457 0.3276903 6.6237840 -C -2.7816692 9.4823330 7.1209157 -C 7.3125908 -0.5035212 7.6834828 -H -3.1557607 9.3363939 6.2592997 -H 7.6866823 -0.3575822 8.5450988 -C -1.8769739 10.5149735 7.3019735 -C 6.4078955 -1.5361618 7.5024250 -H 2.1352697 -1.1256925 6.5761138 -H 2.3956519 10.1045042 8.2282847 -C 2.4747013 -1.4929587 8.5501323 -C 2.0562203 10.4717704 6.2542662 -H 3.0981737 -0.7860424 8.6679753 -H 1.4327479 9.7648541 6.1364232 -C -1.6325684 9.9004240 9.6378115 -C 6.1634900 -0.9216123 5.1665870 -C -4.1459232 7.5305456 7.9286437 -C 8.6768448 1.4482662 6.8757548 -H 6.4083925 7.2013318 8.8160193 -H -1.8774709 1.7774799 5.9883792 -C -3.4619145 6.3589668 7.2109264 -C 7.9928361 2.6198450 7.5934721 -H 6.7631161 5.6457398 7.0542959 -H -2.2321945 3.3330720 7.7501026 -H -2.7317475 6.0162559 7.7678679 -H 7.2626691 2.9625559 7.0365306 -H -3.1016180 6.6668344 6.3525674 -H 7.6325396 2.3119774 8.4518311 -C 5.5108980 7.9858255 7.1215079 -C -0.9799764 0.9929862 7.6828907 -H 4.8465157 7.2667646 7.1001895 -H -0.3155941 1.7120471 7.7042090 -H 5.7866930 8.2028764 6.2060039 -H -1.2557714 0.7759353 8.5983947 -H 5.1200057 8.7795856 7.5413606 -H -0.5890841 0.1992261 7.2630379 -C 2.8326606 -2.0473122 10.9743526 -C 1.6982610 11.0261239 3.8300459 -H -1.2023902 9.4237515 11.6007267 -H 5.7333119 -0.4449397 3.2036718 -C 2.3795898 -0.7192609 11.5959893 -C 2.1513319 9.6980726 3.2084092 -H 1.4107112 -0.7395424 11.7398880 -H 3.1202104 9.7183542 3.0645105 -H 2.6050304 0.0184195 10.9907855 -H 1.9258912 8.9603922 3.8136131 -H 2.8347440 -0.5887768 12.4534600 -H 1.6961777 9.5675885 2.3509385 -C 4.3580551 -2.0470271 10.8308980 -C 0.1728666 11.0258388 3.9735006 -H 0.8593918 9.3497887 10.3615985 -H 3.6715298 -0.3709770 4.4428000 -H 4.7700326 -2.0230027 11.7191619 -H -0.2391110 11.0018145 3.0852367 -H 4.6377056 -1.2599973 10.3201462 -H -0.1067840 10.2388091 4.4842523 -C -3.0632704 3.8268178 11.6908855 -C 7.5941920 5.1519939 3.1135131 -C -1.9910020 2.9047436 11.7271562 -C 6.5219237 6.0740681 3.0772423 -C -2.2535965 1.5415420 11.5324784 -C 6.7845182 7.4372698 3.2719201 -H -1.5328031 0.9229945 11.5563135 -H 6.0637247 8.0558172 3.2480850 -C 7.3439627 1.0732409 11.3074515 -C -2.8130411 7.9055708 3.4969470 -H 7.1818697 0.1415392 11.2098906 -H -2.6509481 8.8372725 3.5945080 -C 6.2981011 1.9808886 11.2270637 -C -1.7671795 6.9979231 3.5773349 -H 5.4186911 1.6626793 11.0588857 -H -0.8877695 7.3161324 3.7455128 -C 6.5103927 3.3529187 11.3879875 -C -1.9794711 5.6258931 3.4164110 -C -0.5451277 3.3231097 11.9320491 -C 5.0760493 5.6557020 2.8723494 -H -0.5329781 4.2917270 12.1810591 -H 5.0638998 4.6870847 2.6233394 -C 0.2317729 3.1584212 10.6180107 -C 4.2991487 5.8203905 4.1863878 -H -0.2313824 3.6402706 9.9011817 -H 4.7623040 5.3385412 4.9032168 -H 0.2879914 2.2069701 10.3882464 -H 4.2429302 6.7718416 4.4161521 -H 1.1351132 3.5229705 10.7243063 -H 3.3958085 5.4558413 4.0800922 -C 0.1482511 2.5319248 13.0517058 -C 4.3826705 6.4468869 1.7526927 -H 1.0606393 2.8679410 13.1729538 -H 3.4702823 6.1108708 1.6314447 -H 0.1790213 1.5821705 12.8102460 -H 4.3519004 7.3966412 1.9941525 -H -0.3525243 2.6402476 13.8865258 -H 4.8834459 6.3385641 0.9178727 -C 5.3800511 4.3186237 11.0728018 -C -0.8491295 4.6601881 3.7315967 -H 5.5095211 5.1416738 11.6258942 -H -0.9785995 3.8371379 3.1785044 -C 3.9793296 3.7734696 11.3494960 -C 0.5515920 5.2053421 3.4549025 -H 3.9290302 3.4567605 12.2758072 -H 0.6018914 5.5220512 2.5285913 -H 3.7916204 3.0301858 10.7391107 -H 0.7393012 5.9486259 4.0652878 -H 3.3188829 4.4837288 11.2113710 -H 1.2120387 4.4950829 3.5930275 -C 5.5135579 4.7073709 9.5957670 -C -0.9826363 4.2714408 5.2086315 -H 6.4241553 5.0252415 9.4229997 -H -1.8932336 3.9535702 5.3813989 -H 4.8729560 5.4190994 9.3859887 -H -0.3420344 3.5597123 5.4184099 -H 5.3290844 3.9259679 9.0336440 -H -0.7981628 5.0528438 5.7707545 - -Unit cell volume : 1966.0612199 A^3 -Unit cell density : 0.6966479 u/A^3 = 7.8065464 g/cm^3 diff --git a/cell2mol/test/AFUGIS/Cell_AFUGIS.cell b/cell2mol/test/AFUGIS/Cell_AFUGIS.cell deleted file mode 100644 index 079cdd90c..000000000 Binary files a/cell2mol/test/AFUGIS/Cell_AFUGIS.cell and /dev/null differ diff --git a/cell2mol/test/AFUGIS/Ref_Cell_AFUGIS.cell b/cell2mol/test/AFUGIS/Ref_Cell_AFUGIS.cell deleted file mode 100644 index b89a1379b..000000000 Binary files a/cell2mol/test/AFUGIS/Ref_Cell_AFUGIS.cell and /dev/null differ diff --git a/cell2mol/test/AFUGIS/cell2mol.out b/cell2mol/test/AFUGIS/cell2mol.out deleted file mode 100644 index baa21353a..000000000 --- a/cell2mol/test/AFUGIS/cell2mol.out +++ /dev/null @@ -1,256 +0,0 @@ -cell2mol version 2.0 -INITIATING cell object from info path: /Users/ycho/cell2mol/cell2mol/test/AFUGIS/AFUGIS.info -Debug level: 1 -######################################### - GETREFS: Generate reference molecules -######################################### -GETREFS: found 1 reference molecules -GETREFS: ['H68-C42-N4-Fe'] -GETREFS: [------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 115 - Formula = H68-C42-N4-Fe - Has Adjacency Matrix = YES - Number of Ligands = 2 - Number of Metals = 1 ---------------------------------------------------- -] -GETREFS: working with H68-C42-N4-Fe - -LIGAND.SPLIT_LIGAND: splitting H15-C7-N2 into groups -Entering COORD_CORR_NONHAPTIC: - Coordinating atom label=N with mconnec=1, group index 0 - evaluating coordination with metal Fe - connectivity verified for atom N with ligand index 0 - Coordinating atom label=N with mconnec=1, group index 1 - evaluating coordination with metal Fe - connectivity verified for atom N with ligand index 1 - Coordinating atom label=C with mconnec=1, group index 2 - evaluating coordination with metal Fe -ADD_ATOM: Chosen Metal index 0. H was added at site 2 but RESET due to connec=3 - correcting mconnec of atom C with ligand index 2 -ATOM.RESET_MCONN: resetting mconnec (and connec) for atom self.label='C' -ATOM.RESET_MCONN: resetting mconnec (and connec) for atom self.label='C' in ligadn lig_idx=2 -ATOM.RESET_MCONN: updating ligand atoms and madjnum -ATOM.RESET_MCONN: lig.natoms=24 -ATOM.RESET_MCONN: lig.labels=['N', 'N', 'C', 'H', 'C', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H'] -ATOM.RESET_MCONN: initial lig.madjnum=array([1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0]) 24 -ATOM.RESET_MCONN: updating ligand atoms and adjnum -ATOM.RESET_MCONN: initial lig.adjnum=array([3, 3, 4, 1, 4, 1, 4, 1, 1, 1, 4, 1, 1, 1, 4, 1, 4, 1, 1, 1, 4, 1, - 1, 1]) 24 -ATOM.RESET_MCONN: final lig.madjnum=array([1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0]) -ATOM.RESET_MCONN: final lig.adjnum=array([3, 3, 3, 1, 4, 1, 4, 1, 1, 1, 4, 1, 1, 1, 4, 1, 4, 1, 1, 1, 4, 1, - 1, 1]) -ATOM.RESET_MCONN: resetting mconnec (and connec) for atom self.label='C' in molecule mol_idx=3 with metal met_idx=0 -ATOM.RESET_MCONN: updating molecule atoms and madjnum -ATOM.RESET_MCONN: mol.natoms=115 -ATOM.RESET_MCONN: mol.labels=['Fe', 'N', 'N', 'C', 'H', 'C', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'N', 'N', 'C', 'C', 'C', 'H', 'C', 'C', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H'] -ATOM.RESET_MCONN: initial mol.madjnum=array([5, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0]) 115 -ATOM.RESET_MCONN: initial mol.madjmat=array([[0, 1, 1, ..., 0, 0, 0], - [1, 0, 0, ..., 0, 0, 0], - [1, 0, 0, ..., 0, 0, 0], - ..., - [0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0]]) (115, 115) -ATOM.RESET_MCONN: updating molecule atoms and adjnum -ATOM.RESET_MCONN: initial mol.adjnum=array([5, 3, 3, 4, 1, 4, 1, 4, 1, 1, 1, 4, 1, 1, 1, 4, 1, 4, 1, 1, 1, 4, - 1, 1, 1, 3, 3, 4, 3, 3, 1, 3, 4, 4, 1, 1, 1, 4, 1, 1, 1, 4, 1, 1, - 1, 4, 1, 1, 1, 4, 1, 1, 1, 4, 1, 1, 1, 3, 3, 3, 1, 3, 1, 3, 1, 3, - 4, 1, 4, 1, 1, 1, 4, 1, 1, 1, 4, 1, 4, 1, 1, 1, 4, 1, 1, 1, 3, 3, - 3, 1, 3, 1, 3, 1, 3, 4, 1, 4, 1, 1, 1, 4, 1, 1, 1, 4, 1, 4, 1, 1, - 1, 4, 1, 1, 1]) 115 -ATOM.RESET_MCONN: initial mol.adjmat=array([[0, 1, 1, ..., 0, 0, 0], - [1, 0, 0, ..., 0, 0, 0], - [1, 0, 0, ..., 0, 0, 0], - ..., - [0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0]]) (115, 115) -ATOM.RESET_MCONN: final mol.madjnum=array([5, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0]) -ATOM.RESET_MCONN: final mol.madjmat=array([[0, 1, 1, ..., 0, 0, 0], - [1, 0, 0, ..., 0, 0, 0], - [1, 0, 0, ..., 0, 0, 0], - ..., - [0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0]]) -ATOM.RESET_MCONN: final mol.adjnum=array([5, 3, 3, 3, 1, 4, 1, 4, 1, 1, 1, 4, 1, 1, 1, 4, 1, 4, 1, 1, 1, 4, - 1, 1, 1, 3, 3, 4, 3, 3, 1, 3, 4, 4, 1, 1, 1, 4, 1, 1, 1, 4, 1, 1, - 1, 4, 1, 1, 1, 4, 1, 1, 1, 4, 1, 1, 1, 3, 3, 3, 1, 3, 1, 3, 1, 3, - 4, 1, 4, 1, 1, 1, 4, 1, 1, 1, 4, 1, 4, 1, 1, 1, 4, 1, 1, 1, 3, 3, - 3, 1, 3, 1, 3, 1, 3, 4, 1, 4, 1, 1, 1, 4, 1, 1, 1, 4, 1, 4, 1, 1, - 1, 4, 1, 1, 1]) -ATOM.RESET_MCONN: final mol.adjmat=array([[0, 1, 1, ..., 0, 0, 0], - [1, 0, 0, ..., 0, 0, 0], - [1, 0, 0, ..., 0, 0, 0], - ..., - [0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0]]) -GROUP.SPLIT_GROUP: blocklist=[[1], [0]] -Entering COORD_CORR_NONHAPTIC: - Coordinating atom label=N with mconnec=1, group index 0 - evaluating coordination with metal Fe - connectivity verified for atom N with ligand index 1 -Entering COORD_CORR_NONHAPTIC: - Coordinating atom label=N with mconnec=1, group index 0 - evaluating coordination with metal Fe - connectivity verified for atom N with ligand index 0 -LIGAND.SPLIT_LIGAND: found groups ['N', 'N'] - -LIGAND.SPLIT_LIGAND: splitting H53-C35-N2 into groups -Entering COORD_CORR_NONHAPTIC: - Coordinating atom label=N with mconnec=1, group index 0 - evaluating coordination with metal Fe - connectivity verified for atom N with ligand index 1 -Entering COORD_CORR_NONHAPTIC: - Coordinating atom label=N with mconnec=1, group index 0 - evaluating coordination with metal Fe - connectivity verified for atom N with ligand index 0 -LIGAND.SPLIT_LIGAND: found groups ['N', 'N'] -LIGAND.Get_denticity: final connectivity of ligand H15-C7-N2 is 2 -LIGAND.Get_denticity: final connectivity of ligand H53-C35-N2 is 2 - -METAL.Get_coord_geometry: Fe -METAL.Get_coord_geometry: coord_nr=4 -DEFINE_coordination_geometry: The most likely geometry is 'Seesaw' with deviation value 6.91 -SAVING cell2mol CELL object to /Users/ycho/cell2mol/cell2mol/test/AFUGIS/Ref_Cell_AFUGIS.cell -ENTERING cell2mol with debug=1 -CLASSIFY_FRAGMENTS. 38 Blocks sorted as (Molec, Frag, H): 0 20 18 - -############################################## -FRAG_RECONSTRUCT. 20 molecules submitted to SEQUENTIAL with Heavy -############################################## -FRAG_RECONSTRUCT. 0 molecules and 2 fragments out of SEQUENTIAL with Heavy -FRAG_RECONSTRUCT. 20 fragments submitted to sequential with All -FINISHED succesfully -finalmols=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 115 - Formula = H68-C42-N4-Fe - Has Adjacency Matrix = YES - Number of Ligands = 2 - Number of Metals = 1 ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 115 - Formula = H68-C42-N4-Fe - Has Adjacency Matrix = YES - Number of Ligands = 2 - Number of Metals = 1 ---------------------------------------------------- -] -remfrag=[] -FRAG_RECONSTRUCT. No remaining Molecules after Hydrogen reconstruction - -Cell Reconstruction Finished Normally. Total execution time: 17.10 seconds -Getting unique species in cell -3 Species (Metal or Ligand or Molecules) to Characterize - -FINAL Charge Distribution: [[-1, -1, 2, -1, -1, 2]] - -######################################### -Assigning Charges and Preparing Molecules -######################################### -CELL.CREATE_BONDS: Creating Bonds for molecule H68-C42-N4-Fe -CREATE_bonds_specie: specie.formula='H53-C35-N2', specie.subtype='ligand' -CREATE_bonds_specie: specie.formula='H15-C7-N2', specie.subtype='ligand' -CELL.CREATE_BONDS: error creating bonds for atom: -------------- Cell2mol ATOM Object ---------------- - Version = 0.1 - Type = atom - Label = C - Atomic Number = 6 - Index in Molecule = 105 - Index in Ligand = 19 - Metal Adjacency (mconnec) = 0 - Regular Adjacencies (connec) = 0 - Atom Charge = 0.0 ----------------------------------------------------- - - of ligand: -------------- Cell2mol LIGAND Object -------------- - Version = 0.1 - Type = specie - Sub-Type = ligand - Number of Atoms = 24 - Formula = H15-C7-N2 - Has Adjacency Matrix = YES - Total Charge = -1 - Smiles = [H]C(=NC([H])(C([H])([H])[H])C([H])([H])[H])[N-]C([H])(C([H])([H])[H])C([H])([H])[H] - Origin = split_complex - Number of Groups = 2 ---------------------------------------------------- - - -CELL.CREATE_BONDS: count differs from atom.mconnec: 1, 0 -CELL.CREATE_BONDS: Creating Bonds for molecule H68-C42-N4-Fe -CREATE_bonds_specie: specie.formula='H15-C7-N2', specie.subtype='ligand' -CREATE_bonds_specie: specie.formula='H53-C35-N2', specie.subtype='ligand' -CELL.CREATE_BONDS: error creating bonds for atom: -------------- Cell2mol ATOM Object ---------------- - Version = 0.1 - Type = atom - Label = C - Atomic Number = 6 - Index in Molecule = 3 - Index in Ligand = 2 - Metal Adjacency (mconnec) = 0 - Regular Adjacencies (connec) = 0 - Atom Charge = 0.0 ----------------------------------------------------- - - of ligand: -------------- Cell2mol LIGAND Object -------------- - Version = 0.1 - Type = specie - Sub-Type = ligand - Number of Atoms = 24 - Formula = H15-C7-N2 - Has Adjacency Matrix = YES - Total Charge = -1 - Smiles = [H]C(=NC([H])(C([H])([H])[H])C([H])([H])[H])[N-]C([H])(C([H])([H])[H])C([H])([H])[H] - Origin = split_complex - Number of Groups = 2 ---------------------------------------------------- - - -CELL.CREATE_BONDS: count differs from atom.mconnec: 1, 0 - -Total execution time for Charge Assignment: 0.39 seconds -Charge Assignment successfully finished. - -######################################### - Assigning Spin multiplicity -######################################### -ASSIGN_SPIN_METAL: Spin multiplicity of the metal Fe is predicted as 5 using Random Forest model -GET_SPIN: Spin multiplicity of the metal Fe is assigned as 5 -GET_SPIN: Spin multiplicity of the complex H68-C42-N4-Fe is assigned as 5 - -ASSIGN_SPIN_METAL: Spin multiplicity of the metal Fe is predicted as 5 using Random Forest model -GET_SPIN: Spin multiplicity of the metal Fe is assigned as 5 -GET_SPIN: Spin multiplicity of the complex H68-C42-N4-Fe is assigned as 5 - - -Total execution time for Spin Assignment: 0.89 seconds -SAVING cell2mol CELL object to /Users/ycho/cell2mol/cell2mol/test/AFUGIS/Cell_AFUGIS.cell diff --git a/cell2mol/test/BACZUB/BACZUB.cell b/cell2mol/test/BACZUB/BACZUB.cell deleted file mode 100644 index bbda8a9e3..000000000 Binary files a/cell2mol/test/BACZUB/BACZUB.cell and /dev/null differ diff --git a/cell2mol/test/BACZUB/BACZUB.cif b/cell2mol/test/BACZUB/BACZUB.cif deleted file mode 100644 index 79de64f00..000000000 --- a/cell2mol/test/BACZUB/BACZUB.cif +++ /dev/null @@ -1,100 +0,0 @@ - -####################################################################### -# -# Cambridge Crystallographic Data Centre -# CCDC -# -####################################################################### -# -# If this CIF has been generated from an entry in the Cambridge -# Structural Database, then it will include bibliographic, chemical, -# crystal, experimental, refinement or atomic coordinate data resulting -# from the CCDC's data processing and validation procedures. -# -####################################################################### - -data_BACZUB -_symmetry_cell_setting triclinic -_symmetry_space_group_name_H-M 'P -1' -_symmetry_Int_Tables_number 2 -_space_group_name_Hall '-P 1' -loop_ -_symmetry_equiv_pos_site_id -_symmetry_equiv_pos_as_xyz -1 x,y,z -2 -x,-y,-z -_cell_length_a 7.378(2) -_cell_length_b 9.7490(10) -_cell_length_c 10.942(2) -_cell_angle_alpha 91.340(10) -_cell_angle_beta 96.05(2) -_cell_angle_gamma 107.230(10) -_cell_volume 746.295 -loop_ -_atom_site_label -_atom_site_type_symbol -_atom_site_fract_x -_atom_site_fract_y -_atom_site_fract_z -Hg1 Hg 0.06316(6) 0.26845(5) 0.49337(4) -Fe1 Fe 0.1366(2) 0.28772(15) 0.16436(14) -Cl1 Cl 0.1713(5) 0.2942(3) 0.6999(3) -C1 C 0.355(2) 0.4725(14) 0.1444(14) -H1 H 0.3479 0.5656 0.1563 -C2 C 0.300(3) 0.393(2) 0.0336(15) -H2 H 0.2505 0.4211 -0.0399 -C3 C 0.332(3) 0.263(2) 0.053(2) -H3 H 0.31 0.1875 -0.006 -C4 C 0.409(2) 0.263(2) 0.183(2) -H4 H 0.4427 0.189 0.2214 -C5 C 0.4205(16) 0.3973(19) 0.2356(15) -H5 H 0.4643 0.43 0.317 -C6 C -0.0298(15) 0.2421(13) 0.3094(11) -C7 C -0.0838(18) 0.3391(17) 0.2342(12) -H6 H -0.0799 0.4316 0.2601 -C8 C -0.1465(19) 0.2774(17) 0.1107(14) -H7 H -0.19 0.3203 0.0434 -C9 C -0.1281(18) 0.1392(16) 0.1137(14) -H8 H -0.1586 0.0726 0.0467 -C10 C -0.0556(18) 0.1150(14) 0.2347(11) -H9 H -0.0299 0.0316 0.26 -Hg1 Hg 0.93684(6) 0.73155(5) 0.50663(4) -Fe1 Fe 0.8634(2) 0.71228(15) 0.83564(14) -Cl1 Cl 0.8287(5) 0.7058(3) 0.3001(3) -C1 C 0.645(2) 0.5275(14) 0.8556(14) -H1 H 0.6521 0.4344 0.8437 -C2 C 0.700(3) 0.607(2) 0.9664(15) -H2 H 0.7495 0.5789 1.0399 -C3 C 0.668(3) 0.737(2) 0.947(2) -H3 H 0.69 0.8125 1.006 -C4 C 0.591(2) 0.737(2) 0.817(2) -H4 H 0.5573 0.811 0.7786 -C5 C 0.5795(16) 0.6027(19) 0.7644(15) -H5 H 0.5357 0.57 0.683 -C6 C 1.0298(15) 0.7579(13) 0.6906(11) -C7 C 1.0838(18) 0.6609(17) 0.7658(12) -H6 H 1.0799 0.5684 0.7399 -C8 C 1.1465(19) 0.7226(17) 0.8893(14) -H7 H 1.19 0.6797 0.9566 -C9 C 1.1281(18) 0.8608(16) 0.8863(14) -H8 H 1.1586 0.9274 0.9533 -C10 C 1.0556(18) 0.8850(14) 0.7653(11) -H9 H 1.0299 0.9684 0.74 -Hg2 Hg 0.45011(8) -0.16227(5) 0.37580(4) -Cl2 Cl 0.7328(3) -0.0248(3) 0.5287(3) -Cl3 Cl 0.4277(5) -0.1130(4) 0.1667(3) -Cl4 Cl 0.2986(5) -0.3799(3) 0.4704(3) -Hg2A Hg 0.54989(8) 0.16227(5) 0.62420(4) -Cl2A Cl 0.2672(3) 0.0248(3) 0.4713(3) -Cl3A Cl 0.5723(5) 0.1130(4) 0.8333(3) -Cl4A Cl 0.7014(5) 0.3799(3) 0.5296(3) -Hg2 Hg 0.45011(8) 0.83773(5) 0.37580(4) -Cl2 Cl 0.7328(3) 0.9752(3) 0.5287(3) -Cl3 Cl 0.4277(5) 0.8870(4) 0.1667(3) -Cl4 Cl 0.2986(5) 0.6201(3) 0.4704(3) -Hg2A Hg 0.54989(8) 1.16227(5) 0.62420(4) -Cl2A Cl 0.2672(3) 1.0248(3) 0.4713(3) -Cl3A Cl 0.5723(5) 1.1130(4) 0.8333(3) -Cl4A Cl 0.7014(5) 1.3799(3) 0.5296(3) - -#END diff --git a/cell2mol/test/BACZUB/BACZUB.info b/cell2mol/test/BACZUB/BACZUB.info deleted file mode 100644 index 827103eea..000000000 --- a/cell2mol/test/BACZUB/BACZUB.info +++ /dev/null @@ -1,141 +0,0 @@ -CIF2CELL 2.0.0 -2024-04-18 16:56 -Output for None - - BIBLIOGRAPHIC INFORMATION -Failed to get author information, No journal information - INPUT CELL INFORMATION -Symmetry information: -Triclinic crystal system. -Space group number : 2 -Hall symbol : -P 1 -Hermann-Mauguin symbol : P-1 - -Lattice parameters: - a b c - 7.3780000 9.7490000 10.9420000 - alpha beta gamma - 91.3400000 96.0500000 107.2300000 -Representative sites : -Atom x y z -Hg 0.0631600 0.2684500 0.4933700 -Fe 0.1366000 0.2877200 0.1643600 -Cl 0.1713000 0.2942000 0.6999000 -C 0.3550000 0.4725000 0.1444000 -H 0.3479000 0.5656000 0.1563000 -C 0.3000000 0.3930000 0.0336000 -H 0.2505000 0.4211000 -0.0399000 -C 0.3320000 0.2630000 0.0530000 -H 0.3100000 0.1875000 -0.0060000 -C 0.4090000 0.2630000 0.1830000 -H 0.4427000 0.1890000 0.2214000 -C 0.4205000 0.3973000 0.2356000 -H 0.4643000 0.4300000 0.3170000 -C -0.0298000 0.2421000 0.3094000 -C -0.0838000 0.3391000 0.2342000 -H -0.0799000 0.4316000 0.2601000 -C -0.1465000 0.2774000 0.1107000 -H -0.1900000 0.3203000 0.0434000 -C -0.1281000 0.1392000 0.1137000 -H -0.1586000 0.0726000 0.0467000 -C -0.0556000 0.1150000 0.2347000 -H -0.0299000 0.0316000 0.2600000 -Hg 0.9368400 0.7315500 0.5066300 -Fe 0.8634000 0.7122800 0.8356400 -Cl 0.8287000 0.7058000 0.3001000 -C 0.6450000 0.5275000 0.8556000 -H 0.6521000 0.4344000 0.8437000 -C 0.7000000 0.6070000 0.9664000 -H 0.7495000 0.5789000 1.0399000 -C 0.6680000 0.7370000 0.9470000 -H 0.6900000 0.8125000 1.0060000 -C 0.5910000 0.7370000 0.8170000 -H 0.5573000 0.8110000 0.7786000 -C 0.5795000 0.6027000 0.7644000 -H 0.5357000 0.5700000 0.6830000 -C 1.0298000 0.7579000 0.6906000 -C 1.0838000 0.6609000 0.7658000 -H 1.0799000 0.5684000 0.7399000 -C 1.1465000 0.7226000 0.8893000 -H 1.1900000 0.6797000 0.9566000 -C 1.1281000 0.8608000 0.8863000 -H 1.1586000 0.9274000 0.9533000 -C 1.0556000 0.8850000 0.7653000 -H 1.0299000 0.9684000 0.7400000 -Hg 0.4501100 -0.1622700 0.3758000 -Cl 0.7328000 -0.0248000 0.5287000 -Cl 0.4277000 -0.1130000 0.1667000 -Cl 0.2986000 -0.3799000 0.4704000 -Hg 0.5498900 0.1622700 0.6242000 -Cl 0.2672000 0.0248000 0.4713000 -Cl 0.5723000 0.1130000 0.8333000 -Cl 0.7014000 0.3799000 0.5296000 - - OUTPUT CELL INFORMATION -Symmetry information: -Triclinic crystal system. -Space group number : 2 -Hall symbol : -P 1 -Hermann-Mauguin symbol : P-1 - -Bravais lattice vectors : - 7.3780000 0.0000000 0.0000000 - -2.8877337 9.3114980 0.0000000 - -1.1532464 -0.6255556 10.8630597 -All sites, (cartesian coordinates): -Atom x y z -Hg -0.8781948 2.1910413 5.3595078 -Hg 4.2152147 6.4949012 5.5035520 -Fe -0.0125715 2.5762879 1.7854525 -Fe 3.3495914 6.1096545 9.0776072 -Cl -0.3928770 2.3016164 7.6030555 -Cl 3.7298969 6.3843261 3.2600042 -C 1.0882071 4.3093526 1.5686258 -C 2.2488129 4.3765899 9.2944339 -H 0.7532516 5.1688089 1.6978962 -H 2.5837683 3.5171335 9.1651635 -C 1.0397716 3.6384001 0.3649988 -C 2.2972483 5.0475424 10.4980609 -H -0.4750675 3.3204759 10.4296237 -H 3.8120875 5.3654665 0.4334361 -C 1.6289000 2.4157695 0.5757422 -C 1.7081200 6.2701729 10.2873176 -H 0.5994030 1.1241036 10.7978814 -H 2.7376169 7.5618388 0.0651784 -C 2.0470840 2.3344473 1.9879399 -C 1.2899360 6.3514951 8.8751198 -H 2.4651302 1.6213751 2.4050814 -H 0.8718898 7.0645673 8.4579783 -C 1.6834476 3.5520773 2.5593369 -C 1.6535724 5.1338652 8.3037229 -H 1.8183008 3.8056430 3.4435899 -H 1.5187191 4.8802994 7.4194698 -C 6.1022008 2.0607668 3.3610307 -C -2.7651809 6.6251757 7.5020291 -C 5.5104028 3.0110239 2.5441286 -C -2.1733829 5.6749186 8.3189312 -H 5.2421926 3.8561355 2.8254818 -H -1.9051726 4.8298069 8.0375779 -C 5.3684013 2.5137605 1.2025407 -C -2.0313814 6.1721819 9.6605190 -H 5.0011880 2.9553237 0.4714568 -H -1.6641681 5.7306187 10.3916030 -C 5.8997816 1.2250349 1.2351299 -C -2.5627616 7.4609076 9.6279299 -H 5.9443431 0.6468013 0.5073049 -H -2.6073232 8.0391411 10.3557549 -C 6.3650269 0.9240044 2.5495601 -C -3.0280070 7.7619381 8.3134996 -H 6.7663014 0.1315989 2.8243955 -H -3.4292814 8.5543436 8.0386642 -Hg 0.4683805 7.5654374 4.0823379 -Hg 2.8686395 1.1205050 6.7807219 -Cl 1.9807592 8.7498416 5.7432997 -Cl 1.3562608 -0.0638992 5.1197601 -Cl 0.4019047 8.1550186 1.8108721 -Cl 2.9351153 0.5309238 9.0521877 -Cl -0.1300999 5.4797986 5.1099833 -Cl 3.4671199 3.2061439 5.7530764 - -Unit cell volume : 746.2947284 A^3 -Unit cell density : 2.7735664 u/A^3 = 31.0802275 g/cm^3 diff --git a/cell2mol/test/BACZUB/Cell_BACZUB.cell b/cell2mol/test/BACZUB/Cell_BACZUB.cell deleted file mode 100644 index ccb388ce0..000000000 Binary files a/cell2mol/test/BACZUB/Cell_BACZUB.cell and /dev/null differ diff --git a/cell2mol/test/BACZUB/Cell_BACZUB.gmol b/cell2mol/test/BACZUB/Cell_BACZUB.gmol deleted file mode 100644 index 75294971d..000000000 Binary files a/cell2mol/test/BACZUB/Cell_BACZUB.gmol and /dev/null differ diff --git a/cell2mol/test/BACZUB/Ref_Cell_BACZUB.cell b/cell2mol/test/BACZUB/Ref_Cell_BACZUB.cell deleted file mode 100644 index c20eebe19..000000000 Binary files a/cell2mol/test/BACZUB/Ref_Cell_BACZUB.cell and /dev/null differ diff --git a/cell2mol/test/BACZUB/cell2mol.out b/cell2mol/test/BACZUB/cell2mol.out deleted file mode 100644 index e6ad8b492..000000000 --- a/cell2mol/test/BACZUB/cell2mol.out +++ /dev/null @@ -1,2012 +0,0 @@ -cell2mol version 2.0 -INITIATING cell object from info path: BACZUB.info -Debug level: 2 -######################################### - GETREFS: Generate reference molecules -######################################### -GETREFS: found 3 reference molecules -GETREFS: ['H9-C10-Cl-Fe-Hg', 'H9-C10-Cl-Fe-Hg', 'Cl6-Hg2'] -GETREFS: [------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 22 - Formula = H9-C10-Cl-Fe-Hg - Has Adjacency Matrix = YES - Number of Ligands = 3 - Number of Metals = 2 ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 22 - Formula = H9-C10-Cl-Fe-Hg - Has Adjacency Matrix = YES - Number of Ligands = 3 - Number of Metals = 2 ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 8 - Formula = Cl6-Hg2 - Has Adjacency Matrix = YES - Number of Ligands = 6 - Number of Metals = 2 ---------------------------------------------------- -] -GETREFS: working with H9-C10-Cl-Fe-Hg - -LIGAND.SPLIT_LIGAND: splitting H5-C5 into groups -LIGAND.SPLIT_LIGAND: self.indices=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9] -LIGAND.SPLIT_LIGAND: conn_idx=[0, 2, 4, 6, 8] -LIGAND.SPLIT_LIGAND: conn_labels=['C', 'C', 'C', 'C', 'C'] -LIGAND.SPLIT_LIGAND: blocklist=[[0, 1, 2, 3, 4]] -LIGAND.SPLIT_LIGAND: block=[0, 1, 2, 3, 4] -Entering COORD_CORR_HAPTIC: - Atom 0 : C Metal : Fe distance : 2.065 thres : 2.501 - Atom 1 : C Metal : Fe distance : 2.062 thres : 2.501 - Atom 2 : C Metal : Fe distance : 2.045 thres : 2.501 - Atom 3 : C Metal : Fe distance : 2.084 thres : 2.501 - Atom 4 : C Metal : Fe distance : 2.104 thres : 2.501 - ratio_list=[0.826, 0.824, 0.818, 0.833, 0.841] std_dev=0.008 -LIGAND.SPLIT_LIGAND: new group is found -LIGAND.SPLIT_LIGAND: found groups ['C5'] -[------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 5 - Formula = C5 - Has Adjacency Matrix = YES - Origin = split_ligand - Number of Metals = 1 ---------------------------------------------------- -] - -LIGAND.SPLIT_LIGAND: splitting H4-C5 into groups -LIGAND.SPLIT_LIGAND: self.indices=[0, 1, 2, 3, 4, 5, 6, 7, 8] -LIGAND.SPLIT_LIGAND: conn_idx=[0, 1, 3, 5, 7] -LIGAND.SPLIT_LIGAND: conn_labels=['C', 'C', 'C', 'C', 'C'] -LIGAND.SPLIT_LIGAND: blocklist=[[0, 1, 2, 3, 4]] -LIGAND.SPLIT_LIGAND: block=[0, 1, 2, 3, 4] -Entering COORD_CORR_HAPTIC: - Atom 0 : C Metal : Hg distance : 2.042 thres : 2.501 - Atom 1 : C Metal : Fe distance : 2.051 thres : 2.501 - Atom 2 : C Metal : Fe distance : 2.081 thres : 2.501 - Atom 3 : C Metal : Fe distance : 2.068 thres : 2.501 - Atom 4 : C Metal : Fe distance : 2.077 thres : 2.501 - ratio_list=[0.816, 0.82, 0.832, 0.827, 0.83] std_dev=0.006 -LIGAND.SPLIT_LIGAND: new group is found -LIGAND.SPLIT_LIGAND: found groups ['C5'] -[------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 5 - Formula = C5 - Has Adjacency Matrix = YES - Origin = split_ligand - Number of Metals = 2 ---------------------------------------------------- -] - -LIGAND.SPLIT_LIGAND: splitting Cl into groups -LIGAND.SPLIT_LIGAND: self.indices=[0] -LIGAND.SPLIT_LIGAND: conn_idx=[0] -LIGAND.SPLIT_LIGAND: conn_labels=['Cl'] -LIGAND.SPLIT_LIGAND: blocklist=[[0]] -LIGAND.SPLIT_LIGAND: block=[0] -Entering COORD_CORR_NONHAPTIC: - Coordinating atom label=Cl with mconnec=1, group index 0 - evaluating coordination with metal Hg - -------------- Cell2mol METAL Object -------------- - Version = 0.1 - Type = atom - Sub-Type = metal - Label = Hg - Atomic Number = 80 - Index in Molecule = 0 - Metal Adjacency (mconnec) = 2 - Regular Adjacencies (connec) = 2 ----------------------------------------------------- - -ADD_ATOM: Metalist length 1 -ADD_ATOM: Ligand Atoms 1 -ADD_ATOM: site= 0 -ADD_ATOM: target ligand atom Cl -ADD_ATOM: evaluating apos=array([-0.392877 , 2.30161637, 7.60305551]) and tgt.coord=[-0.8781947965901001, 2.1910412897789047, 5.359507785338963] -ADD_ATOM: Chosen Metal index 0. H is added at site 0 - connectivity verified for atom Cl with ligand index 0 -LIGAND.SPLIT_LIGAND: new group is found -LIGAND.SPLIT_LIGAND: found groups ['Cl'] -[------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 1 - Formula = Cl - Has Adjacency Matrix = YES - Origin = split_ligand - Number of Metals = 1 ---------------------------------------------------- -] -LIGAND.Get_denticity: checking connectivity of ligand H5-C5 -LIGAND.Get_denticity: initial connectivity is 5 -LIGAND.Get_denticity: final connectivity of ligand H5-C5 is 5 -LIGAND.Get_denticity: checking connectivity of ligand H4-C5 -LIGAND.Get_denticity: initial connectivity is 5 -LIGAND.Get_denticity: final connectivity of ligand H4-C5 is 6 -LIGAND.Get_denticity: checking connectivity of ligand Cl -LIGAND.Get_denticity: initial connectivity is 1 -LIGAND.Get_denticity: final connectivity of ligand Cl is 1 - -METAL.Get_coord_geometry: Hg -METAL.Get_coord_geometry: -coord_group=[------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 1 - Formula = C - Has Adjacency Matrix = YES - Origin = split_group - Number of Metals = 2 ---------------------------------------------------- -, ------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 1 - Formula = Cl - Has Adjacency Matrix = YES - Origin = split_ligand - Number of Metals = 1 ---------------------------------------------------- -] -METAL.Get_coord_geometry: coord_nr=2 -SHAPE_MEASURE: symbols=['Hg', 'C', 'Cl'] -SHAPE_MEASURE: positions=[[-0.8781947965901001, 2.1910412897789047, 5.359507785338963], [-1.2757991550702044, 2.060766775585443, 3.361030684443471], [-0.3928769966037601, 2.3016163714687834, 7.603055514033566]] -SHAPE_MEASURE: coordination number of metal center 2 -SHAPE_MEASURE: connectivity of metal center(1) [[1, 2], [1, 3]] -DEFINE_coordination_geometry: The number of coordinating points: 2 -DEFINE_coordination_geometry: {'Linear': 0.12, 'Bent (V-shape, 109.47°)': 13.912, 'Bent (L-shape, 90°)': 24.491} -DEFINE_coordination_geometry: The type of hapticity : [] -DEFINE_coordination_geometry: The most likely geometry is 'Linear' with deviation value 0.12 -METAL.Get_coord_geometry: self.coord_geometry='Linear' self.geom_deviation=0.12 -METAL.Get_relative_metal_radius: diff_list=[1.312, 1.278] -METAL.Get_relative_metal_radius: average=1.295 -METAL.Get_coord_geometry: self.rel_metal_radius=0.981 - -METAL.Get_coord_geometry: Fe -METAL.Get_coord_geometry: -coord_group=[------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 5 - Formula = C5 - Has Adjacency Matrix = YES - Origin = split_ligand - Number of Metals = 1 ---------------------------------------------------- -, ------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 5 - Formula = C5 - Has Adjacency Matrix = YES - Origin = split_ligand - Number of Metals = 2 ---------------------------------------------------- -] -METAL.Get_coord_geometry: coord_nr=2 -DEFINE_coordination_geometry: group.haptic_type=['h5-Cp'] -mid point of group.haptic_type=['h5-Cp'] [1.497482 3.2500093 1.4113287] -DEFINE_coordination_geometry: group.haptic_type=['h5-Cp'] -mid point of group.haptic_type=['h5-Cp'] [-1.5288373 1.9469181 2.178478 ] -SHAPE_MEASURE: symbols=['Fe', "['h5-Cp']", "['h5-Cp']"] -SHAPE_MEASURE: positions=[[-0.012571507575537655, 2.5762878951295587, 1.785452499337844], [1.497482, 3.2500093, 1.4113287], [-1.5288373, 1.9469181, 2.178478]] -SHAPE_MEASURE: coordination number of metal center 2 -SHAPE_MEASURE: connectivity of metal center(1) [[1, 2], [1, 3]] -DEFINE_coordination_geometry: The number of coordinating points: 2 -DEFINE_coordination_geometry: {'Linear': 0.007, 'Bent (V-shape, 109.47°)': 13.717, 'Bent (L-shape, 90°)': 24.293} -DEFINE_coordination_geometry: The type of hapticity : [['h5-Cp'], ['h5-Cp']] -DEFINE_coordination_geometry: The most likely geometry is 'Linear' with deviation value 0.007 -METAL.Get_coord_geometry: self.coord_geometry='Linear' self.geom_deviation=0.007 -METAL.Get_relative_metal_radius: diff_list=[0.965, 0.958] -METAL.Get_relative_metal_radius: average=0.962 -METAL.Get_coord_geometry: self.rel_metal_radius=0.729 -GETREFS: working with H9-C10-Cl-Fe-Hg - -LIGAND.SPLIT_LIGAND: splitting H5-C5 into groups -LIGAND.SPLIT_LIGAND: self.indices=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9] -LIGAND.SPLIT_LIGAND: conn_idx=[0, 2, 4, 6, 8] -LIGAND.SPLIT_LIGAND: conn_labels=['C', 'C', 'C', 'C', 'C'] -LIGAND.SPLIT_LIGAND: blocklist=[[0, 1, 2, 3, 4]] -LIGAND.SPLIT_LIGAND: block=[0, 1, 2, 3, 4] -Entering COORD_CORR_HAPTIC: - Atom 0 : C Metal : Fe distance : 2.065 thres : 2.501 - Atom 1 : C Metal : Fe distance : 2.062 thres : 2.501 - Atom 2 : C Metal : Fe distance : 2.045 thres : 2.501 - Atom 3 : C Metal : Fe distance : 2.084 thres : 2.501 - Atom 4 : C Metal : Fe distance : 2.104 thres : 2.501 - ratio_list=[0.826, 0.824, 0.818, 0.833, 0.841] std_dev=0.008 -LIGAND.SPLIT_LIGAND: new group is found -LIGAND.SPLIT_LIGAND: found groups ['C5'] -[------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 5 - Formula = C5 - Has Adjacency Matrix = YES - Origin = split_ligand - Number of Metals = 1 ---------------------------------------------------- -] - -LIGAND.SPLIT_LIGAND: splitting H4-C5 into groups -LIGAND.SPLIT_LIGAND: self.indices=[0, 1, 2, 3, 4, 5, 6, 7, 8] -LIGAND.SPLIT_LIGAND: conn_idx=[0, 1, 3, 5, 7] -LIGAND.SPLIT_LIGAND: conn_labels=['C', 'C', 'C', 'C', 'C'] -LIGAND.SPLIT_LIGAND: blocklist=[[0, 1, 2, 3, 4]] -LIGAND.SPLIT_LIGAND: block=[0, 1, 2, 3, 4] -Entering COORD_CORR_HAPTIC: - Atom 0 : C Metal : Hg distance : 2.042 thres : 2.501 - Atom 1 : C Metal : Fe distance : 2.051 thres : 2.501 - Atom 2 : C Metal : Fe distance : 2.081 thres : 2.501 - Atom 3 : C Metal : Fe distance : 2.068 thres : 2.501 - Atom 4 : C Metal : Fe distance : 2.077 thres : 2.501 - ratio_list=[0.816, 0.82, 0.832, 0.827, 0.83] std_dev=0.006 -LIGAND.SPLIT_LIGAND: new group is found -LIGAND.SPLIT_LIGAND: found groups ['C5'] -[------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 5 - Formula = C5 - Has Adjacency Matrix = YES - Origin = split_ligand - Number of Metals = 2 ---------------------------------------------------- -] - -LIGAND.SPLIT_LIGAND: splitting Cl into groups -LIGAND.SPLIT_LIGAND: self.indices=[0] -LIGAND.SPLIT_LIGAND: conn_idx=[0] -LIGAND.SPLIT_LIGAND: conn_labels=['Cl'] -LIGAND.SPLIT_LIGAND: blocklist=[[0]] -LIGAND.SPLIT_LIGAND: block=[0] -Entering COORD_CORR_NONHAPTIC: - Coordinating atom label=Cl with mconnec=1, group index 0 - evaluating coordination with metal Hg - -------------- Cell2mol METAL Object -------------- - Version = 0.1 - Type = atom - Sub-Type = metal - Label = Hg - Atomic Number = 80 - Index in Molecule = 0 - Metal Adjacency (mconnec) = 2 - Regular Adjacencies (connec) = 2 ----------------------------------------------------- - -ADD_ATOM: Metalist length 1 -ADD_ATOM: Ligand Atoms 1 -ADD_ATOM: site= 0 -ADD_ATOM: target ligand atom Cl -ADD_ATOM: evaluating apos=array([3.72989694, 6.38432607, 3.26000423]) and tgt.coord=[4.215214736188033, 6.494901153641239, 5.503551957529399] -ADD_ATOM: Chosen Metal index 0. H is added at site 0 - connectivity verified for atom Cl with ligand index 0 -LIGAND.SPLIT_LIGAND: new group is found -LIGAND.SPLIT_LIGAND: found groups ['Cl'] -[------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 1 - Formula = Cl - Has Adjacency Matrix = YES - Origin = split_ligand - Number of Metals = 1 ---------------------------------------------------- -] -LIGAND.Get_denticity: checking connectivity of ligand H5-C5 -LIGAND.Get_denticity: initial connectivity is 5 -LIGAND.Get_denticity: final connectivity of ligand H5-C5 is 5 -LIGAND.Get_denticity: checking connectivity of ligand H4-C5 -LIGAND.Get_denticity: initial connectivity is 5 -LIGAND.Get_denticity: final connectivity of ligand H4-C5 is 6 -LIGAND.Get_denticity: checking connectivity of ligand Cl -LIGAND.Get_denticity: initial connectivity is 1 -LIGAND.Get_denticity: final connectivity of ligand Cl is 1 - -METAL.Get_coord_geometry: Hg -METAL.Get_coord_geometry: -coord_group=[------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 1 - Formula = C - Has Adjacency Matrix = YES - Origin = split_group - Number of Metals = 2 ---------------------------------------------------- -, ------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 1 - Formula = Cl - Has Adjacency Matrix = YES - Origin = split_ligand - Number of Metals = 1 ---------------------------------------------------- -] -METAL.Get_coord_geometry: coord_nr=2 -SHAPE_MEASURE: symbols=['Hg', 'C', 'Cl'] -SHAPE_MEASURE: positions=[[4.215214736188033, 6.494901153641239, 5.503551957529399], [4.612819094668138, 6.625175667834701, 7.502029058424891], [3.729896936201694, 6.38432607195136, 3.2600042288347955]] -SHAPE_MEASURE: coordination number of metal center 2 -SHAPE_MEASURE: connectivity of metal center(1) [[1, 2], [1, 3]] -DEFINE_coordination_geometry: The number of coordinating points: 2 -DEFINE_coordination_geometry: {'Linear': 0.12, 'Bent (V-shape, 109.47°)': 13.912, 'Bent (L-shape, 90°)': 24.491} -DEFINE_coordination_geometry: The type of hapticity : [] -DEFINE_coordination_geometry: The most likely geometry is 'Linear' with deviation value 0.12 -METAL.Get_coord_geometry: self.coord_geometry='Linear' self.geom_deviation=0.12 -METAL.Get_relative_metal_radius: diff_list=[1.312, 1.278] -METAL.Get_relative_metal_radius: average=1.295 -METAL.Get_coord_geometry: self.rel_metal_radius=0.981 - -METAL.Get_coord_geometry: Fe -METAL.Get_coord_geometry: -coord_group=[------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 5 - Formula = C5 - Has Adjacency Matrix = YES - Origin = split_ligand - Number of Metals = 1 ---------------------------------------------------- -, ------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 5 - Formula = C5 - Has Adjacency Matrix = YES - Origin = split_ligand - Number of Metals = 2 ---------------------------------------------------- -] -METAL.Get_coord_geometry: coord_nr=2 -DEFINE_coordination_geometry: group.haptic_type=['h5-Cp'] -mid point of group.haptic_type=['h5-Cp'] [1.8395379 5.4359331 9.451731 ] -DEFINE_coordination_geometry: group.haptic_type=['h5-Cp'] -mid point of group.haptic_type=['h5-Cp'] [4.8658573 6.7390244 8.6845817] -SHAPE_MEASURE: symbols=['Fe', "['h5-Cp']", "['h5-Cp']"] -SHAPE_MEASURE: positions=[[3.34959144717347, 6.109654548290584, 9.077607243530519], [1.8395379, 5.4359331, 9.451731], [4.8658573, 6.7390244, 8.6845817]] -SHAPE_MEASURE: coordination number of metal center 2 -SHAPE_MEASURE: connectivity of metal center(1) [[1, 2], [1, 3]] -DEFINE_coordination_geometry: The number of coordinating points: 2 -DEFINE_coordination_geometry: {'Linear': 0.007, 'Bent (V-shape, 109.47°)': 13.717, 'Bent (L-shape, 90°)': 24.293} -DEFINE_coordination_geometry: The type of hapticity : [['h5-Cp'], ['h5-Cp']] -DEFINE_coordination_geometry: The most likely geometry is 'Linear' with deviation value 0.007 -METAL.Get_coord_geometry: self.coord_geometry='Linear' self.geom_deviation=0.007 -METAL.Get_relative_metal_radius: diff_list=[0.965, 0.958] -METAL.Get_relative_metal_radius: average=0.962 -METAL.Get_coord_geometry: self.rel_metal_radius=0.729 -GETREFS: working with Cl6-Hg2 - -LIGAND.SPLIT_LIGAND: splitting Cl into groups -LIGAND.SPLIT_LIGAND: self.indices=[0] -LIGAND.SPLIT_LIGAND: conn_idx=[0] -LIGAND.SPLIT_LIGAND: conn_labels=['Cl'] -LIGAND.SPLIT_LIGAND: blocklist=[[0]] -LIGAND.SPLIT_LIGAND: block=[0] -Entering COORD_CORR_NONHAPTIC: - Coordinating atom label=Cl with mconnec=1, group index 0 - evaluating coordination with metal Hg - -------------- Cell2mol METAL Object -------------- - Version = 0.1 - Type = atom - Sub-Type = metal - Label = Hg - Atomic Number = 80 - Index in Molecule = 4 - Metal Adjacency (mconnec) = 4 - Regular Adjacencies (connec) = 4 ----------------------------------------------------- - -ADD_ATOM: Metalist length 1 -ADD_ATOM: Ligand Atoms 1 -ADD_ATOM: site= 0 -ADD_ATOM: target ligand atom Cl -ADD_ATOM: evaluating apos=array([3.46711989, 3.20614387, 5.75307644]) and tgt.coord=[2.8686394779212936, 1.1205049951190558, 6.780721891498431] -ADD_ATOM: Chosen Metal index 4. H is added at site 0 - connectivity verified for atom Cl with ligand index 0 -LIGAND.SPLIT_LIGAND: new group is found -LIGAND.SPLIT_LIGAND: found groups ['Cl'] -[------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 1 - Formula = Cl - Has Adjacency Matrix = YES - Origin = split_ligand - Number of Metals = 1 ---------------------------------------------------- -] - -LIGAND.SPLIT_LIGAND: splitting Cl into groups -LIGAND.SPLIT_LIGAND: self.indices=[0] -LIGAND.SPLIT_LIGAND: conn_idx=[0] -LIGAND.SPLIT_LIGAND: conn_labels=['Cl'] -LIGAND.SPLIT_LIGAND: blocklist=[[0]] -LIGAND.SPLIT_LIGAND: block=[0] -Entering COORD_CORR_NONHAPTIC: - Coordinating atom label=Cl with mconnec=1, group index 0 - evaluating coordination with metal Hg - -------------- Cell2mol METAL Object -------------- - Version = 0.1 - Type = atom - Sub-Type = metal - Label = Hg - Atomic Number = 80 - Index in Molecule = 4 - Metal Adjacency (mconnec) = 4 - Regular Adjacencies (connec) = 4 ----------------------------------------------------- - -ADD_ATOM: Metalist length 1 -ADD_ATOM: Ligand Atoms 1 -ADD_ATOM: site= 0 -ADD_ATOM: target ligand atom Cl -ADD_ATOM: evaluating apos=array([2.93511527, 0.53092382, 9.05218768]) and tgt.coord=[2.8686394779212936, 1.1205049951190558, 6.780721891498431] -ADD_ATOM: Chosen Metal index 4. H is added at site 0 - connectivity verified for atom Cl with ligand index 0 -LIGAND.SPLIT_LIGAND: new group is found -LIGAND.SPLIT_LIGAND: found groups ['Cl'] -[------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 1 - Formula = Cl - Has Adjacency Matrix = YES - Origin = split_ligand - Number of Metals = 1 ---------------------------------------------------- -] - -LIGAND.SPLIT_LIGAND: splitting Cl into groups -LIGAND.SPLIT_LIGAND: self.indices=[0] -LIGAND.SPLIT_LIGAND: conn_idx=[0] -LIGAND.SPLIT_LIGAND: conn_labels=['Cl'] -LIGAND.SPLIT_LIGAND: blocklist=[[0]] -LIGAND.SPLIT_LIGAND: block=[0] -Entering COORD_CORR_NONHAPTIC: - Coordinating atom label=Cl with mconnec=2, group index 0 - evaluating coordination with metal Hg - -------------- Cell2mol METAL Object -------------- - Version = 0.1 - Type = atom - Sub-Type = metal - Label = Hg - Atomic Number = 80 - Index in Molecule = 0 - Metal Adjacency (mconnec) = 4 - Regular Adjacencies (connec) = 4 ----------------------------------------------------- - -ADD_ATOM: Metalist length 1 -ADD_ATOM: Ligand Atoms 1 -ADD_ATOM: site= 0 -ADD_ATOM: target ligand atom Cl -ADD_ATOM: evaluating apos=array([ 1.35626078, -0.06389919, 5.11976006]) and tgt.coord=[2.8686394779212936, 1.1205049951190558, 6.780721891498431] -ADD_ATOM: Chosen Metal index 4. H is added at site 0 - connectivity verified for atom Cl with ligand index 0 - evaluating coordination with metal Hg - -------------- Cell2mol METAL Object -------------- - Version = 0.1 - Type = atom - Sub-Type = metal - Label = Hg - Atomic Number = 80 - Index in Molecule = 4 - Metal Adjacency (mconnec) = 4 - Regular Adjacencies (connec) = 4 ----------------------------------------------------- - -ADD_ATOM: Metalist length 1 -ADD_ATOM: Ligand Atoms 1 -ADD_ATOM: site= 0 -ADD_ATOM: target ligand atom Cl -ADD_ATOM: evaluating apos=array([ 1.35626078, -0.06389919, 5.11976006]) and tgt.coord=[2.8686394779212936, 1.1205049951190558, 6.780721891498431] -ADD_ATOM: Chosen Metal index 4. H is added at site 0 - connectivity verified for atom Cl with ligand index 0 -LIGAND.SPLIT_LIGAND: new group is found -LIGAND.SPLIT_LIGAND: found groups ['Cl'] -[------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 1 - Formula = Cl - Has Adjacency Matrix = YES - Origin = split_ligand - Number of Metals = 2 ---------------------------------------------------- -] - -LIGAND.SPLIT_LIGAND: splitting Cl into groups -LIGAND.SPLIT_LIGAND: self.indices=[0] -LIGAND.SPLIT_LIGAND: conn_idx=[0] -LIGAND.SPLIT_LIGAND: conn_labels=['Cl'] -LIGAND.SPLIT_LIGAND: blocklist=[[0]] -LIGAND.SPLIT_LIGAND: block=[0] -Entering COORD_CORR_NONHAPTIC: - Coordinating atom label=Cl with mconnec=1, group index 0 - evaluating coordination with metal Hg - -------------- Cell2mol METAL Object -------------- - Version = 0.1 - Type = atom - Sub-Type = metal - Label = Hg - Atomic Number = 80 - Index in Molecule = 0 - Metal Adjacency (mconnec) = 4 - Regular Adjacencies (connec) = 4 ----------------------------------------------------- - -ADD_ATOM: Metalist length 1 -ADD_ATOM: Ligand Atoms 1 -ADD_ATOM: site= 0 -ADD_ATOM: target ligand atom Cl -ADD_ATOM: evaluating apos=array([ 2.75763371, -3.83169944, 5.1099833 ]) and tgt.coord=[3.3561141261371934, -1.7460605666877584, 4.082337851369931] -ADD_ATOM: Chosen Metal index 0. H is added at site 0 - connectivity verified for atom Cl with ligand index 0 -LIGAND.SPLIT_LIGAND: new group is found -LIGAND.SPLIT_LIGAND: found groups ['Cl'] -[------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 1 - Formula = Cl - Has Adjacency Matrix = YES - Origin = split_ligand - Number of Metals = 1 ---------------------------------------------------- -] - -LIGAND.SPLIT_LIGAND: splitting Cl into groups -LIGAND.SPLIT_LIGAND: self.indices=[0] -LIGAND.SPLIT_LIGAND: conn_idx=[0] -LIGAND.SPLIT_LIGAND: conn_labels=['Cl'] -LIGAND.SPLIT_LIGAND: blocklist=[[0]] -LIGAND.SPLIT_LIGAND: block=[0] -Entering COORD_CORR_NONHAPTIC: - Coordinating atom label=Cl with mconnec=1, group index 0 - evaluating coordination with metal Hg - -------------- Cell2mol METAL Object -------------- - Version = 0.1 - Type = atom - Sub-Type = metal - Label = Hg - Atomic Number = 80 - Index in Molecule = 0 - Metal Adjacency (mconnec) = 4 - Regular Adjacencies (connec) = 4 ----------------------------------------------------- - -ADD_ATOM: Metalist length 1 -ADD_ATOM: Ligand Atoms 1 -ADD_ATOM: site= 0 -ADD_ATOM: target ligand atom Cl -ADD_ATOM: evaluating apos=array([ 3.28963833, -1.15647939, 1.81087206]) and tgt.coord=[3.3561141261371934, -1.7460605666877584, 4.082337851369931] -ADD_ATOM: Chosen Metal index 0. H is added at site 0 - connectivity verified for atom Cl with ligand index 0 -LIGAND.SPLIT_LIGAND: new group is found -LIGAND.SPLIT_LIGAND: found groups ['Cl'] -[------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 1 - Formula = Cl - Has Adjacency Matrix = YES - Origin = split_ligand - Number of Metals = 1 ---------------------------------------------------- -] - -LIGAND.SPLIT_LIGAND: splitting Cl into groups -LIGAND.SPLIT_LIGAND: self.indices=[0] -LIGAND.SPLIT_LIGAND: conn_idx=[0] -LIGAND.SPLIT_LIGAND: conn_labels=['Cl'] -LIGAND.SPLIT_LIGAND: blocklist=[[0]] -LIGAND.SPLIT_LIGAND: block=[0] -Entering COORD_CORR_NONHAPTIC: - Coordinating atom label=Cl with mconnec=2, group index 0 - evaluating coordination with metal Hg - -------------- Cell2mol METAL Object -------------- - Version = 0.1 - Type = atom - Sub-Type = metal - Label = Hg - Atomic Number = 80 - Index in Molecule = 0 - Metal Adjacency (mconnec) = 4 - Regular Adjacencies (connec) = 4 ----------------------------------------------------- - -ADD_ATOM: Metalist length 1 -ADD_ATOM: Ligand Atoms 1 -ADD_ATOM: site= 0 -ADD_ATOM: target ligand atom Cl -ADD_ATOM: evaluating apos=array([ 4.86849283, -0.56165638, 5.74329969]) and tgt.coord=[3.3561141261371934, -1.7460605666877584, 4.082337851369931] -ADD_ATOM: Chosen Metal index 0. H is added at site 0 - connectivity verified for atom Cl with ligand index 0 - evaluating coordination with metal Hg - -------------- Cell2mol METAL Object -------------- - Version = 0.1 - Type = atom - Sub-Type = metal - Label = Hg - Atomic Number = 80 - Index in Molecule = 4 - Metal Adjacency (mconnec) = 4 - Regular Adjacencies (connec) = 4 ----------------------------------------------------- - -ADD_ATOM: Metalist length 1 -ADD_ATOM: Ligand Atoms 1 -ADD_ATOM: site= 0 -ADD_ATOM: target ligand atom Cl -ADD_ATOM: evaluating apos=array([ 4.86849283, -0.56165638, 5.74329969]) and tgt.coord=[3.3561141261371934, -1.7460605666877584, 4.082337851369931] -ADD_ATOM: Chosen Metal index 0. H is added at site 0 - connectivity verified for atom Cl with ligand index 0 -LIGAND.SPLIT_LIGAND: new group is found -LIGAND.SPLIT_LIGAND: found groups ['Cl'] -[------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 1 - Formula = Cl - Has Adjacency Matrix = YES - Origin = split_ligand - Number of Metals = 2 ---------------------------------------------------- -] -LIGAND.Get_denticity: checking connectivity of ligand Cl -LIGAND.Get_denticity: initial connectivity is 1 -LIGAND.Get_denticity: final connectivity of ligand Cl is 1 -LIGAND.Get_denticity: checking connectivity of ligand Cl -LIGAND.Get_denticity: initial connectivity is 1 -LIGAND.Get_denticity: final connectivity of ligand Cl is 1 -LIGAND.Get_denticity: checking connectivity of ligand Cl -LIGAND.Get_denticity: initial connectivity is 1 -LIGAND.Get_denticity: final connectivity of ligand Cl is 2 -LIGAND.Get_denticity: checking connectivity of ligand Cl -LIGAND.Get_denticity: initial connectivity is 1 -LIGAND.Get_denticity: final connectivity of ligand Cl is 1 -LIGAND.Get_denticity: checking connectivity of ligand Cl -LIGAND.Get_denticity: initial connectivity is 1 -LIGAND.Get_denticity: final connectivity of ligand Cl is 1 -LIGAND.Get_denticity: checking connectivity of ligand Cl -LIGAND.Get_denticity: initial connectivity is 1 -LIGAND.Get_denticity: final connectivity of ligand Cl is 2 - -METAL.Get_coord_geometry: Hg -METAL.Get_coord_geometry: -coord_group=[------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 1 - Formula = Cl - Has Adjacency Matrix = YES - Origin = split_ligand - Number of Metals = 2 ---------------------------------------------------- -, ------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 1 - Formula = Cl - Has Adjacency Matrix = YES - Origin = split_ligand - Number of Metals = 1 ---------------------------------------------------- -, ------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 1 - Formula = Cl - Has Adjacency Matrix = YES - Origin = split_ligand - Number of Metals = 1 ---------------------------------------------------- -, ------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 1 - Formula = Cl - Has Adjacency Matrix = YES - Origin = split_ligand - Number of Metals = 2 ---------------------------------------------------- -] -METAL.Get_coord_geometry: coord_nr=4 -SHAPE_MEASURE: symbols=['Hg', 'Cl', 'Cl', 'Cl', 'Cl'] -SHAPE_MEASURE: positions=[[3.3561141261371934, -1.7460605666877584, 4.082337851369931], [1.3562607787141432, -0.06389919010860623, 5.119760056813859], [2.7576337144776764, -3.8316994367601804, 5.1099833030452775], [3.2896383298805927, -1.1564793894742424, 1.8108720591361558], [4.868492825344344, -0.5616563814600966, 5.7432996860545025]] -SHAPE_MEASURE: coordination number of metal center 4 -SHAPE_MEASURE: connectivity of metal center(1) [[1, 2], [1, 3], [1, 4], [1, 5]] -DEFINE_coordination_geometry: The number of coordinating points: 4 -DEFINE_coordination_geometry: {'Tetrahedral': 1.839, 'Square planar': 29.907, 'Seesaw': 7.15} -DEFINE_coordination_geometry: The type of hapticity : [] -DEFINE_coordination_geometry: The most likely geometry is 'Tetrahedral' with deviation value 1.839 -METAL.Get_coord_geometry: self.coord_geometry='Tetrahedral' self.geom_deviation=1.839 -METAL.Get_relative_metal_radius: diff_list=[1.792, 1.381, 1.328, 1.519] -METAL.Get_relative_metal_radius: average=1.505 -METAL.Get_coord_geometry: self.rel_metal_radius=1.14 - -METAL.Get_coord_geometry: Hg -METAL.Get_coord_geometry: -coord_group=[------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 1 - Formula = Cl - Has Adjacency Matrix = YES - Origin = split_ligand - Number of Metals = 1 ---------------------------------------------------- -, ------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 1 - Formula = Cl - Has Adjacency Matrix = YES - Origin = split_ligand - Number of Metals = 1 ---------------------------------------------------- -, ------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 1 - Formula = Cl - Has Adjacency Matrix = YES - Origin = split_ligand - Number of Metals = 2 ---------------------------------------------------- -, ------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 1 - Formula = Cl - Has Adjacency Matrix = YES - Origin = split_ligand - Number of Metals = 2 ---------------------------------------------------- -] -METAL.Get_coord_geometry: coord_nr=4 -SHAPE_MEASURE: symbols=['Hg', 'Cl', 'Cl', 'Cl', 'Cl'] -SHAPE_MEASURE: positions=[[2.8686394779212936, 1.1205049951190558, 6.780721891498431], [3.467119889580811, 3.2061438651914775, 5.753076439823084], [2.9351152741778943, 0.5309238179055397, 9.052187683732207], [1.3562607787141432, -0.06389919010860623, 5.119760056813859], [4.868492825344344, -0.5616563814600966, 5.7432996860545025]] -SHAPE_MEASURE: coordination number of metal center 4 -SHAPE_MEASURE: connectivity of metal center(1) [[1, 2], [1, 3], [1, 4], [1, 5]] -DEFINE_coordination_geometry: The number of coordinating points: 4 -DEFINE_coordination_geometry: {'Tetrahedral': 1.839, 'Square planar': 29.907, 'Seesaw': 7.15} -DEFINE_coordination_geometry: The type of hapticity : [] -DEFINE_coordination_geometry: The most likely geometry is 'Tetrahedral' with deviation value 1.839 -METAL.Get_coord_geometry: self.coord_geometry='Tetrahedral' self.geom_deviation=1.839 -METAL.Get_relative_metal_radius: diff_list=[1.381, 1.328, 1.519, 1.792] -METAL.Get_relative_metal_radius: average=1.505 -METAL.Get_coord_geometry: self.rel_metal_radius=1.14 -SAVING cell2mol CELL object to /Users/ycho/cell2mol/cell2mol/test/BACZUB/Ref_Cell_BACZUB.cell -ENTERING cell2mol with debug=2 - -################## -Checking Missing H -################## -Not a Single Molecule has Missing H atoms (apparently) -CLASSIFY_FRAGMENTS. 12 Blocks sorted as (Molec, Frag, H): 0 8 4 - -############################################## -FRAG_RECONSTRUCT. 8 molecules submitted to SEQUENTIAL with Heavy -############################################## -FRAG_RECONSTRUCT. 1 molecules and 2 fragments out of SEQUENTIAL with Heavy -FRAG_RECONSTRUCT. 6 fragments submitted to sequential with All -FINISHED succesfully -finalmols=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 22 - Formula = H9-C10-Cl-Fe-Hg - Has Adjacency Matrix = YES - Number of Ligands = 3 - Number of Metals = 2 ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 22 - Formula = H9-C10-Cl-Fe-Hg - Has Adjacency Matrix = YES - Number of Ligands = 3 - Number of Metals = 2 ---------------------------------------------------- -] -remfrag=[] -FRAG_RECONSTRUCT. No remaining Molecules after Hydrogen reconstruction - -Cell Reconstruction Finished Normally. Total execution time: 0.20 seconds -Getting unique species in cell -Molecule 0 formula=Cl6-Hg2 -New ligand found with: formula Cl added in position 0 -ligand 1 is the same with 0 in typelist -ligand 2 is the same with 0 in typelist -ligand 3 is the same with 0 in typelist -ligand 4 is the same with 0 in typelist -ligand 5 is the same with 0 in typelist -New Metal Center found with: labels Hg and added in position 1 -Metal 1 is the same with 0 in typelist -Molecule 1 formula=H9-C10-Cl-Fe-Hg -New ligand found with: formula H5-C5 added in position 2 -New ligand found with: formula H4-C5 added in position 3 -ligand 2 is the same with 0 in typelist -New Metal Center found with: labels Hg and added in position 4 -New Metal Center found with: labels Fe and added in position 5 -Molecule 2 formula=H9-C10-Cl-Fe-Hg -ligand 0 is the same with 2 in typelist -ligand 1 is the same with 1 in typelist -ligand 2 is the same with 0 in typelist -Metal 0 is the same with 1 in typelist -Metal 1 is the same with 2 in typelist -6 Species (Metal or Ligand or Molecules) to Characterize - GET_PROTONATION_STATES: evaluating non-haptic group with index 0 and label Cl - GET_PROTONATION_STATES:protonation_states=[------------- Cell2mol Protonation ---------------- - Status = True - Labels = ['Cl'] - Type = Local - Atoms added in positions = [0] - Atoms blocked (no atoms added) = [1] ---------------------------------------------------- -] - POSCHARGE will try charges [0, -1, 1, -2, 2] - POSCHARGE: charge 0 with smiles [Cl-] - POSCHARGE: charge 0 with smiles [Cl-] - POSCHARGE: charge 0 with smiles [Cl-] - POSCHARGE: charge 0 with smiles [Cl-] - POSCHARGE: charge 0 with smiles [Cl-] - NEW SELECT FUNCTION: uncorr_total: [-1, -1, -1, -1, -1] - NEW SELECT FUNCTION: uncorr_abs_total: [1, 1, 1, 1, 1] - NEW SELECT FUNCTION: uncorr_abs_atcharge: [1, 1, 1, 1, 1] - NEW SELECT FUNCTION: uncorr_zwitt: [False, False, False, False, False] - NEW SELECT FUNCTION: coincide: [False, True, False, False, False] - NEW SELECT FUNCTION: listofmintot: [0, 1, 2, 3, 4] - NEW SELECT FUNCTION: listofminabs: [0, 1, 2, 3, 4] - NEW SELECT FUNCTION: tmplist: [1], including: - NEW SELECT FUNCTION: Corr_charge=-1 - NEW SELECT FUNCTION: Smiles=[Cl-] - NEW SELECT FUNCTION: found corr_charges=[-1] - NEW SELECT FUNCTION: doing tgt_charge=-1 - NEW SELECT FUNCTION: charge_state added - NEW SELECT FUNCTION: Case 1, only one entry for -1 in tmplist - GET_PROTONATION_STATES: addressing group with hapticity: ['h5-Cp'] - GET_PROTONATION_STATES: and parent indices: [0, 2, 4, 6, 8] - GET_PROTONATION_STATES: Added H to atom 0 with: a.mconnec=1 and label=C - GET_PROTONATION_STATES:protonation_states=[------------- Cell2mol Protonation ---------------- - Status = True - Labels = ['C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'H'] - Type = Local - Atoms added in positions = [1 0 0 0 0 0 0 0 0 0] - Atoms blocked (no atoms added) = [1 0 1 0 1 0 1 0 1 0] ---------------------------------------------------- -] - POSCHARGE will try charges [0, -1, 1, -2, 2] - POSCHARGE: charge 0 with smiles [H]C1=C([H])C([H])([H])C([H])=C1[H] - POSCHARGE: charge 0 with smiles [H][C+]1[C-]([H])[C-]([H])C([H])([H])[C-]1[H] - POSCHARGE: charge 0 with smiles [H][C+]1[C-]([H])[C+]([H])C([H])([H])[C-]1[H] - POSCHARGE: charge 0 with smiles [H][C+]1[C-]([H])[C-]([H])[C-]([H])C1([H])[H] - POSCHARGE: charge 0 with smiles [H][C+]1[C+]([H])C([H])([H])[C+]([H])[C-]1[H] - NEW SELECT FUNCTION: uncorr_total: [0, -2, 0, -2, 2] - NEW SELECT FUNCTION: uncorr_abs_total: [0, 2, 0, 2, 2] - NEW SELECT FUNCTION: uncorr_abs_atcharge: [0, 4, 4, 4, 4] - NEW SELECT FUNCTION: uncorr_zwitt: [False, True, True, True, True] - NEW SELECT FUNCTION: coincide: [True, False, False, True, True] - NEW SELECT FUNCTION: listofmintot: [0, 2] - NEW SELECT FUNCTION: listofminabs: [0] - NEW SELECT FUNCTION: tmplist: [0], including: - NEW SELECT FUNCTION: Corr_charge=-1 - NEW SELECT FUNCTION: Smiles=[H]C1=C([H])C([H])([H])C([H])=C1[H] - NEW SELECT FUNCTION: found corr_charges=[-1] - NEW SELECT FUNCTION: doing tgt_charge=-1 - NEW SELECT FUNCTION: charge_state added - NEW SELECT FUNCTION: Case 1, only one entry for -1 in tmplist - GET_PROTONATION_STATES: addressing group with hapticity: ['h5-Cp'] - GET_PROTONATION_STATES: and parent indices: [0, 1, 3, 5, 7] - GET_PROTONATION_STATES: Added H to atom 1 with: a.mconnec=1 and label=C - GET_PROTONATION_STATES:protonation_states=[------------- Cell2mol Protonation ---------------- - Status = True - Labels = ['C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'H'] - Type = Local - Atoms added in positions = [0 1 0 0 0 0 0 0 0] - Atoms blocked (no atoms added) = [0 1 0 1 0 1 0 1 0] ---------------------------------------------------- -] - POSCHARGE will try charges [0, -1, 1, -2, 2] - POSCHARGE: charge 0 with smiles [H][C+]1CC([H])([H])[C+]([H])[C-]1[H] - POSCHARGE: charge 0 with smiles [H]C1=[C-]C([H])([H])C([H])=C1[H] - POSCHARGE: charge 0 with smiles [H][C+]1[C+]([H])C([H])([H])C[C-]1[H] - POSCHARGE: charge 0 with smiles [H][C+]1CC([H])([H])[C-]([H])[C-]1[H] - POSCHARGE: charge 0 with smiles [H][C+]1CC([H])([H])[C+]([H])[C+]1[H] - NEW SELECT FUNCTION: uncorr_total: [1, -1, 1, -1, 3] - NEW SELECT FUNCTION: uncorr_abs_total: [1, 1, 1, 1, 3] - NEW SELECT FUNCTION: uncorr_abs_atcharge: [3, 1, 3, 3, 3] - NEW SELECT FUNCTION: uncorr_zwitt: [True, False, True, True, False] - NEW SELECT FUNCTION: coincide: [False, True, True, False, False] - NEW SELECT FUNCTION: listofmintot: [0, 1, 2, 3] - NEW SELECT FUNCTION: listofminabs: [1] - NEW SELECT FUNCTION: tmplist: [1], including: - NEW SELECT FUNCTION: Corr_charge=-2 - NEW SELECT FUNCTION: Smiles=[H]C1=[C-]C([H])([H])C([H])=C1[H] - NEW SELECT FUNCTION: found corr_charges=[-2] - NEW SELECT FUNCTION: doing tgt_charge=-2 - NEW SELECT FUNCTION: charge_state added - NEW SELECT FUNCTION: Case 1, only one entry for -2 in tmplist -BALANCE: iterlist [[-1], [2], [-1], [-2], [2], [2, 3, 0]] -BALANCE: unique_indices [0, 0, 0, 0, 0, 0, 1, 1, 2, 3, 0, 4, 5, 3, 2, 0, 4, 5] -BALANCE: tmpdistr [(-1, 2, -1, -2, 2, 2), (-1, 2, -1, -2, 2, 3), (-1, 2, -1, -2, 2, 0)] -BALANCE: alldistr added: [-1, -1, -1, -1, -1, -1, 2, 2, -1, -2, -1, 2, 2, -2, -1, -1, 2, 2] -BALANCE: distribution=[-1, -1, -1, -1, -1, -1, 2, 2, -1, -2, -1, 2, 2, -2, -1, -1, 2, 2] -BALANCE: alldistr added: [-1, -1, -1, -1, -1, -1, 2, 2, -1, -2, -1, 2, 3, -2, -1, -1, 2, 3] -BALANCE: distribution=[-1, -1, -1, -1, -1, -1, 2, 2, -1, -2, -1, 2, 2, -2, -1, -1, 2, 2] -BALANCE: distribution=[-1, -1, -1, -1, -1, -1, 2, 2, -1, -2, -1, 2, 3, -2, -1, -1, 2, 3] -BALANCE: alldistr added: [-1, -1, -1, -1, -1, -1, 2, 2, -1, -2, -1, 2, 0, -2, -1, -1, 2, 0] -BALANCE: distribution=[-1, -1, -1, -1, -1, -1, 2, 2, -1, -2, -1, 2, 2, -2, -1, -1, 2, 2] -BALANCE: distribution=[-1, -1, -1, -1, -1, -1, 2, 2, -1, -2, -1, 2, 3, -2, -1, -1, 2, 3] -BALANCE: distribution=[-1, -1, -1, -1, -1, -1, 2, 2, -1, -2, -1, 2, 0, -2, -1, -1, 2, 0] - -FINAL Charge Distribution: [[-1, -1, -1, -1, -1, -1, 2, 2, -1, -2, -1, 2, 3, -2, -1, -1, 2, 3]] - -######################################### -Assigning Charges and Preparing Molecules -######################################### -SET_TARGET_CHARGE: ------------- Cell2mol LIGAND Object -------------- - Version = 0.1 - Type = specie - Sub-Type = ligand - Number of Atoms = 1 - Formula = Cl - Has Adjacency Matrix = YES - Origin = split_complex - Number of Groups = 1 ---------------------------------------------------- - [0, 1, 2, 3, 4, 5, 10, 15] -1 -SET_TARGET_CHARGE: Target charge -1 of Cl exists in [-1]. -SET_TARGET_CHARGE: Cl - GET_PROTONATION_STATES: evaluating non-haptic group with index 0 and label Cl - GET_PROTONATION_STATES:protonation_states=[------------- Cell2mol Protonation ---------------- - Status = True - Labels = ['Cl'] - Type = Local - Atoms added in positions = [0] - Atoms blocked (no atoms added) = [1] ---------------------------------------------------- -] - POSCHARGE will try charges [0, -1, 1, -2, 2] - POSCHARGE: charge 0 with smiles [Cl-] - POSCHARGE: charge 0 with smiles [Cl-] - POSCHARGE: charge 0 with smiles [Cl-] - POSCHARGE: charge 0 with smiles [Cl-] - POSCHARGE: charge 0 with smiles [Cl-] - NEW SELECT FUNCTION: uncorr_total: [-1, -1, -1, -1, -1] - NEW SELECT FUNCTION: uncorr_abs_total: [1, 1, 1, 1, 1] - NEW SELECT FUNCTION: uncorr_abs_atcharge: [1, 1, 1, 1, 1] - NEW SELECT FUNCTION: uncorr_zwitt: [False, False, False, False, False] - NEW SELECT FUNCTION: coincide: [False, True, False, False, False] - NEW SELECT FUNCTION: listofmintot: [0, 1, 2, 3, 4] - NEW SELECT FUNCTION: listofminabs: [0, 1, 2, 3, 4] - NEW SELECT FUNCTION: tmplist: [1], including: - NEW SELECT FUNCTION: Corr_charge=-1 - NEW SELECT FUNCTION: Smiles=[Cl-] - NEW SELECT FUNCTION: found corr_charges=[-1] - NEW SELECT FUNCTION: doing tgt_charge=-1 - NEW SELECT FUNCTION: charge_state added - NEW SELECT FUNCTION: Case 1, only one entry for -1 in tmplist -SET_TARGET_CHARGE: Target charge -1 of Cl exists in [-1]. -SET_TARGET_CHARGE: ------------- Cell2mol LIGAND Object -------------- - Version = 0.1 - Type = specie - Sub-Type = ligand - Number of Atoms = 1 - Formula = Cl - Has Adjacency Matrix = YES - Total Charge = -1 - Smiles = [Cl-] - Origin = split_complex - Number of Groups = 1 ---------------------------------------------------- - [0, 1, 2, 3, 4, 5, 10, 15] -1 -SET_TARGET_CHARGE: Target charge -1 of Cl exists in [-1]. -SET_TARGET_CHARGE: Cl - GET_PROTONATION_STATES: evaluating non-haptic group with index 0 and label Cl - GET_PROTONATION_STATES:protonation_states=[------------- Cell2mol Protonation ---------------- - Status = True - Labels = ['Cl'] - Type = Local - Atoms added in positions = [0] - Atoms blocked (no atoms added) = [1] ---------------------------------------------------- -] - POSCHARGE will try charges [0, -1, 1, -2, 2] - POSCHARGE: charge 0 with smiles [Cl-] - POSCHARGE: charge 0 with smiles [Cl-] - POSCHARGE: charge 0 with smiles [Cl-] - POSCHARGE: charge 0 with smiles [Cl-] - POSCHARGE: charge 0 with smiles [Cl-] - NEW SELECT FUNCTION: uncorr_total: [-1, -1, -1, -1, -1] - NEW SELECT FUNCTION: uncorr_abs_total: [1, 1, 1, 1, 1] - NEW SELECT FUNCTION: uncorr_abs_atcharge: [1, 1, 1, 1, 1] - NEW SELECT FUNCTION: uncorr_zwitt: [False, False, False, False, False] - NEW SELECT FUNCTION: coincide: [False, True, False, False, False] - NEW SELECT FUNCTION: listofmintot: [0, 1, 2, 3, 4] - NEW SELECT FUNCTION: listofminabs: [0, 1, 2, 3, 4] - NEW SELECT FUNCTION: tmplist: [1], including: - NEW SELECT FUNCTION: Corr_charge=-1 - NEW SELECT FUNCTION: Smiles=[Cl-] - NEW SELECT FUNCTION: found corr_charges=[-1] - NEW SELECT FUNCTION: doing tgt_charge=-1 - NEW SELECT FUNCTION: charge_state added - NEW SELECT FUNCTION: Case 1, only one entry for -1 in tmplist -SET_TARGET_CHARGE: Target charge -1 of Cl exists in [-1]. -SET_TARGET_CHARGE: ------------- Cell2mol LIGAND Object -------------- - Version = 0.1 - Type = specie - Sub-Type = ligand - Number of Atoms = 1 - Formula = Cl - Has Adjacency Matrix = YES - Total Charge = -1 - Smiles = [Cl-] - Origin = split_complex - Number of Groups = 1 ---------------------------------------------------- - [0, 1, 2, 3, 4, 5, 10, 15] -1 -SET_TARGET_CHARGE: Target charge -1 of Cl exists in [-1]. -SET_TARGET_CHARGE: Cl - GET_PROTONATION_STATES: evaluating non-haptic group with index 0 and label Cl - GET_PROTONATION_STATES:protonation_states=[------------- Cell2mol Protonation ---------------- - Status = True - Labels = ['Cl'] - Type = Local - Atoms added in positions = [0] - Atoms blocked (no atoms added) = [1] ---------------------------------------------------- -] - POSCHARGE will try charges [0, -1, 1, -2, 2] - POSCHARGE: charge 0 with smiles [Cl-] - POSCHARGE: charge 0 with smiles [Cl-] - POSCHARGE: charge 0 with smiles [Cl-] - POSCHARGE: charge 0 with smiles [Cl-] - POSCHARGE: charge 0 with smiles [Cl-] - NEW SELECT FUNCTION: uncorr_total: [-1, -1, -1, -1, -1] - NEW SELECT FUNCTION: uncorr_abs_total: [1, 1, 1, 1, 1] - NEW SELECT FUNCTION: uncorr_abs_atcharge: [1, 1, 1, 1, 1] - NEW SELECT FUNCTION: uncorr_zwitt: [False, False, False, False, False] - NEW SELECT FUNCTION: coincide: [False, True, False, False, False] - NEW SELECT FUNCTION: listofmintot: [0, 1, 2, 3, 4] - NEW SELECT FUNCTION: listofminabs: [0, 1, 2, 3, 4] - NEW SELECT FUNCTION: tmplist: [1], including: - NEW SELECT FUNCTION: Corr_charge=-1 - NEW SELECT FUNCTION: Smiles=[Cl-] - NEW SELECT FUNCTION: found corr_charges=[-1] - NEW SELECT FUNCTION: doing tgt_charge=-1 - NEW SELECT FUNCTION: charge_state added - NEW SELECT FUNCTION: Case 1, only one entry for -1 in tmplist -SET_TARGET_CHARGE: Target charge -1 of Cl exists in [-1]. -SET_TARGET_CHARGE: ------------- Cell2mol LIGAND Object -------------- - Version = 0.1 - Type = specie - Sub-Type = ligand - Number of Atoms = 1 - Formula = Cl - Has Adjacency Matrix = YES - Total Charge = -1 - Smiles = [Cl-] - Origin = split_complex - Number of Groups = 1 ---------------------------------------------------- - [0, 1, 2, 3, 4, 5, 10, 15] -1 -SET_TARGET_CHARGE: Target charge -1 of Cl exists in [-1]. -SET_TARGET_CHARGE: Cl - GET_PROTONATION_STATES: evaluating non-haptic group with index 0 and label Cl - GET_PROTONATION_STATES:protonation_states=[------------- Cell2mol Protonation ---------------- - Status = True - Labels = ['Cl'] - Type = Local - Atoms added in positions = [0] - Atoms blocked (no atoms added) = [1] ---------------------------------------------------- -] - POSCHARGE will try charges [0, -1, 1, -2, 2] - POSCHARGE: charge 0 with smiles [Cl-] - POSCHARGE: charge 0 with smiles [Cl-] - POSCHARGE: charge 0 with smiles [Cl-] - POSCHARGE: charge 0 with smiles [Cl-] - POSCHARGE: charge 0 with smiles [Cl-] - NEW SELECT FUNCTION: uncorr_total: [-1, -1, -1, -1, -1] - NEW SELECT FUNCTION: uncorr_abs_total: [1, 1, 1, 1, 1] - NEW SELECT FUNCTION: uncorr_abs_atcharge: [1, 1, 1, 1, 1] - NEW SELECT FUNCTION: uncorr_zwitt: [False, False, False, False, False] - NEW SELECT FUNCTION: coincide: [False, True, False, False, False] - NEW SELECT FUNCTION: listofmintot: [0, 1, 2, 3, 4] - NEW SELECT FUNCTION: listofminabs: [0, 1, 2, 3, 4] - NEW SELECT FUNCTION: tmplist: [1], including: - NEW SELECT FUNCTION: Corr_charge=-1 - NEW SELECT FUNCTION: Smiles=[Cl-] - NEW SELECT FUNCTION: found corr_charges=[-1] - NEW SELECT FUNCTION: doing tgt_charge=-1 - NEW SELECT FUNCTION: charge_state added - NEW SELECT FUNCTION: Case 1, only one entry for -1 in tmplist -SET_TARGET_CHARGE: Target charge -1 of Cl exists in [-1]. -SET_TARGET_CHARGE: ------------- Cell2mol LIGAND Object -------------- - Version = 0.1 - Type = specie - Sub-Type = ligand - Number of Atoms = 1 - Formula = Cl - Has Adjacency Matrix = YES - Total Charge = -1 - Smiles = [Cl-] - Origin = split_complex - Number of Groups = 1 ---------------------------------------------------- - [0, 1, 2, 3, 4, 5, 10, 15] -1 -SET_TARGET_CHARGE: Target charge -1 of Cl exists in [-1]. -SET_TARGET_CHARGE: Cl - GET_PROTONATION_STATES: evaluating non-haptic group with index 0 and label Cl - GET_PROTONATION_STATES:protonation_states=[------------- Cell2mol Protonation ---------------- - Status = True - Labels = ['Cl'] - Type = Local - Atoms added in positions = [0] - Atoms blocked (no atoms added) = [1] ---------------------------------------------------- -] - POSCHARGE will try charges [0, -1, 1, -2, 2] - POSCHARGE: charge 0 with smiles [Cl-] - POSCHARGE: charge 0 with smiles [Cl-] - POSCHARGE: charge 0 with smiles [Cl-] - POSCHARGE: charge 0 with smiles [Cl-] - POSCHARGE: charge 0 with smiles [Cl-] - NEW SELECT FUNCTION: uncorr_total: [-1, -1, -1, -1, -1] - NEW SELECT FUNCTION: uncorr_abs_total: [1, 1, 1, 1, 1] - NEW SELECT FUNCTION: uncorr_abs_atcharge: [1, 1, 1, 1, 1] - NEW SELECT FUNCTION: uncorr_zwitt: [False, False, False, False, False] - NEW SELECT FUNCTION: coincide: [False, True, False, False, False] - NEW SELECT FUNCTION: listofmintot: [0, 1, 2, 3, 4] - NEW SELECT FUNCTION: listofminabs: [0, 1, 2, 3, 4] - NEW SELECT FUNCTION: tmplist: [1], including: - NEW SELECT FUNCTION: Corr_charge=-1 - NEW SELECT FUNCTION: Smiles=[Cl-] - NEW SELECT FUNCTION: found corr_charges=[-1] - NEW SELECT FUNCTION: doing tgt_charge=-1 - NEW SELECT FUNCTION: charge_state added - NEW SELECT FUNCTION: Case 1, only one entry for -1 in tmplist -SET_TARGET_CHARGE: Target charge -1 of Cl exists in [-1]. -SET_TARGET_CHARGE: ------------- Cell2mol LIGAND Object -------------- - Version = 0.1 - Type = specie - Sub-Type = ligand - Number of Atoms = 1 - Formula = Cl - Has Adjacency Matrix = YES - Total Charge = -1 - Smiles = [Cl-] - Origin = split_complex - Number of Groups = 1 ---------------------------------------------------- - [0, 1, 2, 3, 4, 5, 10, 15] -1 -SET_TARGET_CHARGE: Target charge -1 of Cl exists in [-1]. -SET_TARGET_CHARGE: Cl - GET_PROTONATION_STATES: evaluating non-haptic group with index 0 and label Cl - GET_PROTONATION_STATES:protonation_states=[------------- Cell2mol Protonation ---------------- - Status = True - Labels = ['Cl'] - Type = Local - Atoms added in positions = [0] - Atoms blocked (no atoms added) = [1] ---------------------------------------------------- -] - POSCHARGE will try charges [0, -1, 1, -2, 2] - POSCHARGE: charge 0 with smiles [Cl-] - POSCHARGE: charge 0 with smiles [Cl-] - POSCHARGE: charge 0 with smiles [Cl-] - POSCHARGE: charge 0 with smiles [Cl-] - POSCHARGE: charge 0 with smiles [Cl-] - NEW SELECT FUNCTION: uncorr_total: [-1, -1, -1, -1, -1] - NEW SELECT FUNCTION: uncorr_abs_total: [1, 1, 1, 1, 1] - NEW SELECT FUNCTION: uncorr_abs_atcharge: [1, 1, 1, 1, 1] - NEW SELECT FUNCTION: uncorr_zwitt: [False, False, False, False, False] - NEW SELECT FUNCTION: coincide: [False, True, False, False, False] - NEW SELECT FUNCTION: listofmintot: [0, 1, 2, 3, 4] - NEW SELECT FUNCTION: listofminabs: [0, 1, 2, 3, 4] - NEW SELECT FUNCTION: tmplist: [1], including: - NEW SELECT FUNCTION: Corr_charge=-1 - NEW SELECT FUNCTION: Smiles=[Cl-] - NEW SELECT FUNCTION: found corr_charges=[-1] - NEW SELECT FUNCTION: doing tgt_charge=-1 - NEW SELECT FUNCTION: charge_state added - NEW SELECT FUNCTION: Case 1, only one entry for -1 in tmplist -SET_TARGET_CHARGE: Target charge -1 of Cl exists in [-1]. -SET_TARGET_CHARGE: ------------- Cell2mol METAL Object -------------- - Version = 0.1 - Type = atom - Sub-Type = metal - Label = Hg - Atomic Number = 80 - Index in Molecule = 0 - Metal Adjacency (mconnec) = 4 - Regular Adjacencies (connec) = 4 - Coordination Sphere Formula = Cl4 - Possible Charges = [2] ----------------------------------------------------- - [6, 7] 2 -SET_TARGET_CHARGE: Target charge 2 of Hg exists in [2]. -SET_TARGET_CHARGE: Hg -SET_TARGET_CHARGE: Target charge 2 of Hg exists in [2]. -SET_TARGET_CHARGE: ------------- Cell2mol METAL Object -------------- - Version = 0.1 - Type = atom - Sub-Type = metal - Label = Hg - Atomic Number = 80 - Index in Molecule = 0 - Metal Adjacency (mconnec) = 4 - Regular Adjacencies (connec) = 4 - Atom Charge = 2 - Coordination Sphere Formula = Cl4 - Possible Charges = [2] ----------------------------------------------------- - [6, 7] 2 -SET_TARGET_CHARGE: Target charge 2 of Hg exists in [2]. -SET_TARGET_CHARGE: Hg -SET_TARGET_CHARGE: Target charge 2 of Hg exists in [2]. -SET_TARGET_CHARGE: ------------- Cell2mol LIGAND Object -------------- - Version = 0.1 - Type = specie - Sub-Type = ligand - Number of Atoms = 10 - Formula = H5-C5 - Has Adjacency Matrix = YES - Origin = split_complex - Number of Groups = 1 ---------------------------------------------------- - [8, 14] -1 -SET_TARGET_CHARGE: Target charge -1 of H5-C5 exists in [-1]. -SET_TARGET_CHARGE: H5-C5 - GET_PROTONATION_STATES: addressing group with hapticity: ['h5-Cp'] - GET_PROTONATION_STATES: and parent indices: [0, 2, 4, 6, 8] - GET_PROTONATION_STATES: Added H to atom 0 with: a.mconnec=1 and label=C - GET_PROTONATION_STATES:protonation_states=[------------- Cell2mol Protonation ---------------- - Status = True - Labels = ['C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'H'] - Type = Local - Atoms added in positions = [1 0 0 0 0 0 0 0 0 0] - Atoms blocked (no atoms added) = [1 0 1 0 1 0 1 0 1 0] ---------------------------------------------------- -] - POSCHARGE will try charges [0, -1, 1, -2, 2] - POSCHARGE: charge 0 with smiles [H]C1=C([H])C([H])([H])C([H])=C1[H] - POSCHARGE: charge 0 with smiles [H][C+]1[C-]([H])[C-]([H])C([H])([H])[C-]1[H] - POSCHARGE: charge 0 with smiles [H][C+]1[C-]([H])[C+]([H])C([H])([H])[C-]1[H] - POSCHARGE: charge 0 with smiles [H][C+]1[C-]([H])[C-]([H])[C-]([H])C1([H])[H] - POSCHARGE: charge 0 with smiles [H][C+]1[C+]([H])C([H])([H])[C+]([H])[C-]1[H] - NEW SELECT FUNCTION: uncorr_total: [0, -2, 0, -2, 2] - NEW SELECT FUNCTION: uncorr_abs_total: [0, 2, 0, 2, 2] - NEW SELECT FUNCTION: uncorr_abs_atcharge: [0, 4, 4, 4, 4] - NEW SELECT FUNCTION: uncorr_zwitt: [False, True, True, True, True] - NEW SELECT FUNCTION: coincide: [True, False, False, True, True] - NEW SELECT FUNCTION: listofmintot: [0, 2] - NEW SELECT FUNCTION: listofminabs: [0] - NEW SELECT FUNCTION: tmplist: [0], including: - NEW SELECT FUNCTION: Corr_charge=-1 - NEW SELECT FUNCTION: Smiles=[H]C1=C([H])C([H])([H])C([H])=C1[H] - NEW SELECT FUNCTION: found corr_charges=[-1] - NEW SELECT FUNCTION: doing tgt_charge=-1 - NEW SELECT FUNCTION: charge_state added - NEW SELECT FUNCTION: Case 1, only one entry for -1 in tmplist -SET_TARGET_CHARGE: Target charge -1 of H5-C5 exists in [-1]. -SET_TARGET_CHARGE: ------------- Cell2mol LIGAND Object -------------- - Version = 0.1 - Type = specie - Sub-Type = ligand - Number of Atoms = 9 - Formula = H4-C5 - Has Adjacency Matrix = YES - Origin = split_complex - Number of Groups = 1 ---------------------------------------------------- - [9, 13] -2 -SET_TARGET_CHARGE: Target charge -2 of H4-C5 exists in [-2]. -SET_TARGET_CHARGE: H4-C5 - GET_PROTONATION_STATES: addressing group with hapticity: ['h5-Cp'] - GET_PROTONATION_STATES: and parent indices: [0, 1, 3, 5, 7] - GET_PROTONATION_STATES: Added H to atom 1 with: a.mconnec=1 and label=C - GET_PROTONATION_STATES:protonation_states=[------------- Cell2mol Protonation ---------------- - Status = True - Labels = ['C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'H'] - Type = Local - Atoms added in positions = [0 1 0 0 0 0 0 0 0] - Atoms blocked (no atoms added) = [0 1 0 1 0 1 0 1 0] ---------------------------------------------------- -] - POSCHARGE will try charges [0, -1, 1, -2, 2] - POSCHARGE: charge 0 with smiles [H][C+]1CC([H])([H])[C+]([H])[C-]1[H] - POSCHARGE: charge 0 with smiles [H]C1=[C-]C([H])([H])C([H])=C1[H] - POSCHARGE: charge 0 with smiles [H][C+]1[C+]([H])C([H])([H])C[C-]1[H] - POSCHARGE: charge 0 with smiles [H][C+]1CC([H])([H])[C-]([H])[C-]1[H] - POSCHARGE: charge 0 with smiles [H][C+]1CC([H])([H])[C+]([H])[C+]1[H] - NEW SELECT FUNCTION: uncorr_total: [1, -1, 1, -1, 3] - NEW SELECT FUNCTION: uncorr_abs_total: [1, 1, 1, 1, 3] - NEW SELECT FUNCTION: uncorr_abs_atcharge: [3, 1, 3, 3, 3] - NEW SELECT FUNCTION: uncorr_zwitt: [True, False, True, True, False] - NEW SELECT FUNCTION: coincide: [False, True, True, False, False] - NEW SELECT FUNCTION: listofmintot: [0, 1, 2, 3] - NEW SELECT FUNCTION: listofminabs: [1] - NEW SELECT FUNCTION: tmplist: [1], including: - NEW SELECT FUNCTION: Corr_charge=-2 - NEW SELECT FUNCTION: Smiles=[H]C1=[C-]C([H])([H])C([H])=C1[H] - NEW SELECT FUNCTION: found corr_charges=[-2] - NEW SELECT FUNCTION: doing tgt_charge=-2 - NEW SELECT FUNCTION: charge_state added - NEW SELECT FUNCTION: Case 1, only one entry for -2 in tmplist -SET_TARGET_CHARGE: Target charge -2 of H4-C5 exists in [-2]. -SET_TARGET_CHARGE: ------------- Cell2mol LIGAND Object -------------- - Version = 0.1 - Type = specie - Sub-Type = ligand - Number of Atoms = 1 - Formula = Cl - Has Adjacency Matrix = YES - Total Charge = -1 - Smiles = [Cl-] - Origin = split_complex - Number of Groups = 1 ---------------------------------------------------- - [0, 1, 2, 3, 4, 5, 10, 15] -1 -SET_TARGET_CHARGE: Target charge -1 of Cl exists in [-1]. -SET_TARGET_CHARGE: Cl - GET_PROTONATION_STATES: evaluating non-haptic group with index 0 and label Cl - GET_PROTONATION_STATES:protonation_states=[------------- Cell2mol Protonation ---------------- - Status = True - Labels = ['Cl'] - Type = Local - Atoms added in positions = [0] - Atoms blocked (no atoms added) = [1] ---------------------------------------------------- -] - POSCHARGE will try charges [0, -1, 1, -2, 2] - POSCHARGE: charge 0 with smiles [Cl-] - POSCHARGE: charge 0 with smiles [Cl-] - POSCHARGE: charge 0 with smiles [Cl-] - POSCHARGE: charge 0 with smiles [Cl-] - POSCHARGE: charge 0 with smiles [Cl-] - NEW SELECT FUNCTION: uncorr_total: [-1, -1, -1, -1, -1] - NEW SELECT FUNCTION: uncorr_abs_total: [1, 1, 1, 1, 1] - NEW SELECT FUNCTION: uncorr_abs_atcharge: [1, 1, 1, 1, 1] - NEW SELECT FUNCTION: uncorr_zwitt: [False, False, False, False, False] - NEW SELECT FUNCTION: coincide: [False, True, False, False, False] - NEW SELECT FUNCTION: listofmintot: [0, 1, 2, 3, 4] - NEW SELECT FUNCTION: listofminabs: [0, 1, 2, 3, 4] - NEW SELECT FUNCTION: tmplist: [1], including: - NEW SELECT FUNCTION: Corr_charge=-1 - NEW SELECT FUNCTION: Smiles=[Cl-] - NEW SELECT FUNCTION: found corr_charges=[-1] - NEW SELECT FUNCTION: doing tgt_charge=-1 - NEW SELECT FUNCTION: charge_state added - NEW SELECT FUNCTION: Case 1, only one entry for -1 in tmplist -SET_TARGET_CHARGE: Target charge -1 of Cl exists in [-1]. -SET_TARGET_CHARGE: ------------- Cell2mol METAL Object -------------- - Version = 0.1 - Type = atom - Sub-Type = metal - Label = Hg - Atomic Number = 80 - Index in Molecule = 0 - Metal Adjacency (mconnec) = 2 - Regular Adjacencies (connec) = 2 - Coordination Sphere Formula = C-Cl - Possible Charges = [2] ----------------------------------------------------- - [11, 16] 2 -SET_TARGET_CHARGE: Target charge 2 of Hg exists in [2]. -SET_TARGET_CHARGE: Hg -SET_TARGET_CHARGE: Target charge 2 of Hg exists in [2]. -SET_TARGET_CHARGE: ------------- Cell2mol METAL Object -------------- - Version = 0.1 - Type = atom - Sub-Type = metal - Label = Fe - Atomic Number = 26 - Index in Molecule = 1 - Metal Adjacency (mconnec) = 10 - Regular Adjacencies (connec) = 10 - Coordination Sphere Formula = C10 - Possible Charges = [2, 3, 0] ----------------------------------------------------- - [12, 17] 3 -SET_TARGET_CHARGE: Target charge 3 of Fe exists in [2, 3, 0]. -SET_TARGET_CHARGE: Fe -SET_TARGET_CHARGE: Target charge 3 of Fe exists in [2, 3, 0]. -SET_TARGET_CHARGE: ------------- Cell2mol LIGAND Object -------------- - Version = 0.1 - Type = specie - Sub-Type = ligand - Number of Atoms = 9 - Formula = H4-C5 - Has Adjacency Matrix = YES - Total Charge = -2 - Smiles = [H]C1=[C-]C([H])([H])C([H])=C1[H] - Origin = split_complex - Number of Groups = 1 ---------------------------------------------------- - [9, 13] -2 -SET_TARGET_CHARGE: Target charge -2 of H4-C5 exists in [-2]. -SET_TARGET_CHARGE: H4-C5 - GET_PROTONATION_STATES: addressing group with hapticity: ['h5-Cp'] - GET_PROTONATION_STATES: and parent indices: [0, 2, 3, 5, 7] - GET_PROTONATION_STATES: Added H to atom 0 with: a.mconnec=1 and label=C - GET_PROTONATION_STATES:protonation_states=[------------- Cell2mol Protonation ---------------- - Status = True - Labels = ['C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'H'] - Type = Local - Atoms added in positions = [1 0 0 0 0 0 0 0 0] - Atoms blocked (no atoms added) = [1 0 0 1 0 1 0 1 0] ---------------------------------------------------- -] - POSCHARGE will try charges [0, -1, 1, -2, 2] - POSCHARGE: charge 0 with smiles [H][C+]1CC([H])([H])[C+]([H])[C-]1[H] - POSCHARGE: charge 0 with smiles [H]C1=[C-]C([H])([H])C([H])=C1[H] - POSCHARGE: charge 0 with smiles [H][C+]1CC([H])([H])[C-]([H])[C+]1[H] - POSCHARGE: charge 0 with smiles [H][C+]1[C-]([H])[C-]([H])CC1([H])[H] - POSCHARGE: charge 0 with smiles [H][C+]1CC([H])([H])[C+]([H])[C+]1[H] - NEW SELECT FUNCTION: uncorr_total: [1, -1, 1, -1, 3] - NEW SELECT FUNCTION: uncorr_abs_total: [1, 1, 1, 1, 3] - NEW SELECT FUNCTION: uncorr_abs_atcharge: [3, 1, 3, 3, 3] - NEW SELECT FUNCTION: uncorr_zwitt: [True, False, True, True, False] - NEW SELECT FUNCTION: coincide: [False, True, True, False, False] - NEW SELECT FUNCTION: listofmintot: [0, 1, 2, 3] - NEW SELECT FUNCTION: listofminabs: [1] - NEW SELECT FUNCTION: tmplist: [1], including: - NEW SELECT FUNCTION: Corr_charge=-2 - NEW SELECT FUNCTION: Smiles=[H]C1=[C-]C([H])([H])C([H])=C1[H] - NEW SELECT FUNCTION: found corr_charges=[-2] - NEW SELECT FUNCTION: doing tgt_charge=-2 - NEW SELECT FUNCTION: charge_state added - NEW SELECT FUNCTION: Case 1, only one entry for -2 in tmplist -SET_TARGET_CHARGE: Target charge -2 of H4-C5 exists in [-2]. -SET_TARGET_CHARGE: ------------- Cell2mol LIGAND Object -------------- - Version = 0.1 - Type = specie - Sub-Type = ligand - Number of Atoms = 10 - Formula = H5-C5 - Has Adjacency Matrix = YES - Total Charge = -1 - Smiles = [H]C1=C([H])C([H])([H])C([H])=C1[H] - Origin = split_complex - Number of Groups = 1 ---------------------------------------------------- - [8, 14] -1 -SET_TARGET_CHARGE: Target charge -1 of H5-C5 exists in [-1]. -SET_TARGET_CHARGE: H5-C5 - GET_PROTONATION_STATES: addressing group with hapticity: ['h5-Cp'] - GET_PROTONATION_STATES: and parent indices: [1, 2, 4, 6, 8] - GET_PROTONATION_STATES: Added H to atom 1 with: a.mconnec=1 and label=C - GET_PROTONATION_STATES:protonation_states=[------------- Cell2mol Protonation ---------------- - Status = True - Labels = ['H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'H'] - Type = Local - Atoms added in positions = [0 1 0 0 0 0 0 0 0 0] - Atoms blocked (no atoms added) = [0 1 1 0 1 0 1 0 1 0] ---------------------------------------------------- -] - POSCHARGE will try charges [0, -1, 1, -2, 2] - POSCHARGE: charge 0 with smiles [H]C1=C([H])C([H])([H])C([H])=C1[H] - POSCHARGE: charge 0 with smiles [H][C+]1[C-]([H])[C-]([H])C([H])([H])[C-]1[H] - POSCHARGE: charge 0 with smiles [H][C+]1[C-]([H])[C+]([H])C([H])([H])[C-]1[H] - POSCHARGE: charge 0 with smiles [H][C+]1[C-]([H])[C-]([H])[C-]([H])C1([H])[H] - POSCHARGE: charge 0 with smiles [H][C+]1[C+]([H])C([H])([H])[C+]([H])[C-]1[H] - NEW SELECT FUNCTION: uncorr_total: [0, -2, 0, -2, 2] - NEW SELECT FUNCTION: uncorr_abs_total: [0, 2, 0, 2, 2] - NEW SELECT FUNCTION: uncorr_abs_atcharge: [0, 4, 4, 4, 4] - NEW SELECT FUNCTION: uncorr_zwitt: [False, True, True, True, True] - NEW SELECT FUNCTION: coincide: [True, False, False, True, True] - NEW SELECT FUNCTION: listofmintot: [0, 2] - NEW SELECT FUNCTION: listofminabs: [0] - NEW SELECT FUNCTION: tmplist: [0], including: - NEW SELECT FUNCTION: Corr_charge=-1 - NEW SELECT FUNCTION: Smiles=[H]C1=C([H])C([H])([H])C([H])=C1[H] - NEW SELECT FUNCTION: found corr_charges=[-1] - NEW SELECT FUNCTION: doing tgt_charge=-1 - NEW SELECT FUNCTION: charge_state added - NEW SELECT FUNCTION: Case 1, only one entry for -1 in tmplist -SET_TARGET_CHARGE: Target charge -1 of H5-C5 exists in [-1]. -SET_TARGET_CHARGE: ------------- Cell2mol LIGAND Object -------------- - Version = 0.1 - Type = specie - Sub-Type = ligand - Number of Atoms = 1 - Formula = Cl - Has Adjacency Matrix = YES - Total Charge = -1 - Smiles = [Cl-] - Origin = split_complex - Number of Groups = 1 ---------------------------------------------------- - [0, 1, 2, 3, 4, 5, 10, 15] -1 -SET_TARGET_CHARGE: Target charge -1 of Cl exists in [-1]. -SET_TARGET_CHARGE: Cl - GET_PROTONATION_STATES: evaluating non-haptic group with index 0 and label Cl - GET_PROTONATION_STATES:protonation_states=[------------- Cell2mol Protonation ---------------- - Status = True - Labels = ['Cl'] - Type = Local - Atoms added in positions = [0] - Atoms blocked (no atoms added) = [1] ---------------------------------------------------- -] - POSCHARGE will try charges [0, -1, 1, -2, 2] - POSCHARGE: charge 0 with smiles [Cl-] - POSCHARGE: charge 0 with smiles [Cl-] - POSCHARGE: charge 0 with smiles [Cl-] - POSCHARGE: charge 0 with smiles [Cl-] - POSCHARGE: charge 0 with smiles [Cl-] - NEW SELECT FUNCTION: uncorr_total: [-1, -1, -1, -1, -1] - NEW SELECT FUNCTION: uncorr_abs_total: [1, 1, 1, 1, 1] - NEW SELECT FUNCTION: uncorr_abs_atcharge: [1, 1, 1, 1, 1] - NEW SELECT FUNCTION: uncorr_zwitt: [False, False, False, False, False] - NEW SELECT FUNCTION: coincide: [False, True, False, False, False] - NEW SELECT FUNCTION: listofmintot: [0, 1, 2, 3, 4] - NEW SELECT FUNCTION: listofminabs: [0, 1, 2, 3, 4] - NEW SELECT FUNCTION: tmplist: [1], including: - NEW SELECT FUNCTION: Corr_charge=-1 - NEW SELECT FUNCTION: Smiles=[Cl-] - NEW SELECT FUNCTION: found corr_charges=[-1] - NEW SELECT FUNCTION: doing tgt_charge=-1 - NEW SELECT FUNCTION: charge_state added - NEW SELECT FUNCTION: Case 1, only one entry for -1 in tmplist -SET_TARGET_CHARGE: Target charge -1 of Cl exists in [-1]. -SET_TARGET_CHARGE: ------------- Cell2mol METAL Object -------------- - Version = 0.1 - Type = atom - Sub-Type = metal - Label = Hg - Atomic Number = 80 - Index in Molecule = 0 - Metal Adjacency (mconnec) = 2 - Regular Adjacencies (connec) = 2 - Atom Charge = 2.0 - Coordination Sphere Formula = C-Cl - Possible Charges = [2] ----------------------------------------------------- - [11, 16] 2 -SET_TARGET_CHARGE: Target charge 2 of Hg exists in [2]. -SET_TARGET_CHARGE: Hg -SET_TARGET_CHARGE: Target charge 2 of Hg exists in [2]. -SET_TARGET_CHARGE: ------------- Cell2mol METAL Object -------------- - Version = 0.1 - Type = atom - Sub-Type = metal - Label = Fe - Atomic Number = 26 - Index in Molecule = 1 - Metal Adjacency (mconnec) = 10 - Regular Adjacencies (connec) = 10 - Atom Charge = 3.0 - Coordination Sphere Formula = C10 - Possible Charges = [2, 3, 0] ----------------------------------------------------- - [12, 17] 3 -SET_TARGET_CHARGE: Target charge 3 of Fe exists in [2, 3, 0]. -SET_TARGET_CHARGE: Fe -SET_TARGET_CHARGE: Target charge 3 of Fe exists in [2, 3, 0]. -CELL.CREATE_BONDS: Creating Bonds for molecule Cl6-Hg2 -CREATE_bonds_specie: specie.formula='Cl', specie.subtype='ligand' - Number of atoms in ligand object and RDKit object are equal: 1 1 - idx=0 Cl Number of bonds : 0 - NO BONDS CREATED for Cl due to no bonds in ligand RDKit object -CREATE_bonds_specie: specie.formula='Cl', specie.subtype='ligand' - Number of atoms in ligand object and RDKit object are equal: 1 1 - idx=0 Cl Number of bonds : 0 - NO BONDS CREATED for Cl due to no bonds in ligand RDKit object -CREATE_bonds_specie: specie.formula='Cl', specie.subtype='ligand' - Number of atoms in ligand object and RDKit object are equal: 1 1 - idx=0 Cl Number of bonds : 0 - NO BONDS CREATED for Cl due to no bonds in ligand RDKit object -CREATE_bonds_specie: specie.formula='Cl', specie.subtype='ligand' - Number of atoms in ligand object and RDKit object are equal: 1 1 - idx=0 Cl Number of bonds : 0 - NO BONDS CREATED for Cl due to no bonds in ligand RDKit object -CREATE_bonds_specie: specie.formula='Cl', specie.subtype='ligand' - Number of atoms in ligand object and RDKit object are equal: 1 1 - idx=0 Cl Number of bonds : 0 - NO BONDS CREATED for Cl due to no bonds in ligand RDKit object -CREATE_bonds_specie: specie.formula='Cl', specie.subtype='ligand' - Number of atoms in ligand object and RDKit object are equal: 1 1 - idx=0 Cl Number of bonds : 0 - NO BONDS CREATED for Cl due to no bonds in ligand RDKit object -CELL.CREATE_BONDS: Creating Metal-Metal Bonds for molecule Cl6-Hg2 -CELL.CREATE_BONDS: Metals: [------------- Cell2mol METAL Object -------------- - Version = 0.1 - Type = atom - Sub-Type = metal - Label = Hg - Atomic Number = 80 - Index in Molecule = 0 - Metal Adjacency (mconnec) = 4 - Regular Adjacencies (connec) = 4 - Atom Charge = 2.0 - Coordination Sphere Formula = Cl4 - Possible Charges = [2] ----------------------------------------------------- -, ------------- Cell2mol METAL Object -------------- - Version = 0.1 - Type = atom - Sub-Type = metal - Label = Hg - Atomic Number = 80 - Index in Molecule = 4 - Metal Adjacency (mconnec) = 4 - Regular Adjacencies (connec) = 4 - Atom Charge = 2.0 - Coordination Sphere Formula = Cl4 - Possible Charges = [2] ----------------------------------------------------- -] -ligand.formula='Cl' smiles='[Cl-]' - -ligand.formula='Cl' smiles='[Cl-]' - -ligand.formula='Cl' smiles='[Cl-]' - -ligand.formula='Cl' smiles='[Cl-]' - -ligand.formula='Cl' smiles='[Cl-]' - -ligand.formula='Cl' smiles='[Cl-]' - -CELL.CREATE_BONDS: Creating Bonds for molecule H9-C10-Cl-Fe-Hg -CREATE_bonds_specie: specie.formula='H5-C5', specie.subtype='ligand' - Number of atoms in ligand object and RDKit object are different: 10 11 - [(0, 'C'), (1, 'H'), (2, 'C'), (3, 'H'), (4, 'C'), (5, 'H'), (6, 'C'), (7, 'H'), (8, 'C'), (9, 'H')] - [(0, 'C'), (1, 'H'), (2, 'C'), (3, 'H'), (4, 'C'), (5, 'H'), (6, 'C'), (7, 'H'), (8, 'C'), (9, 'H'), (10, 'H')] - NON_BONDED_ATOMS [10] - idx=0 C Number of bonds : 4 - BOND CREATED 0 0 1 1.0 C H - BOND CREATED 0 0 2 1.0 C C - BOND CREATED 0 0 8 1.0 C C - NO BOND CREATED bond_startatom=0 or bond_endatom=10 is not in the specie.atoms. It belongs to non_bonded_atoms=[10]. - BONDS [('C', 'H', 1.0, 0.931), ('C', 'C', 1.0, 1.379), ('C', 'C', 1.0, 1.382)] - idx=1 H Number of bonds : 1 - BOND CREATED 1 1 0 1.0 H C - BONDS [('H', 'C', 1.0, 0.931)] - idx=2 C Number of bonds : 3 - BOND CREATED 2 2 0 1.0 C C - BOND CREATED 2 2 3 1.0 C H - BOND CREATED 2 2 4 2.0 C C - BONDS [('C', 'C', 1.0, 1.379), ('C', 'H', 1.0, 0.929), ('C', 'C', 2.0, 1.373)] - idx=3 H Number of bonds : 1 - BOND CREATED 3 3 2 1.0 H C - BONDS [('H', 'C', 1.0, 0.929)] - idx=4 C Number of bonds : 3 - BOND CREATED 4 4 2 2.0 C C - BOND CREATED 4 4 5 1.0 C H - BOND CREATED 4 4 6 1.0 C C - BONDS [('C', 'C', 2.0, 1.373), ('C', 'H', 1.0, 0.933), ('C', 'C', 1.0, 1.475)] - idx=5 H Number of bonds : 1 - BOND CREATED 5 5 4 1.0 H C - BONDS [('H', 'C', 1.0, 0.933)] - idx=6 C Number of bonds : 3 - BOND CREATED 6 6 4 1.0 C C - BOND CREATED 6 6 7 1.0 C H - BOND CREATED 6 6 8 2.0 C C - BONDS [('C', 'C', 1.0, 1.475), ('C', 'H', 1.0, 0.926), ('C', 'C', 2.0, 1.393)] - idx=7 H Number of bonds : 1 - BOND CREATED 7 7 6 1.0 H C - BONDS [('H', 'C', 1.0, 0.926)] - idx=8 C Number of bonds : 3 - BOND CREATED 8 8 0 1.0 C C - BOND CREATED 8 8 6 2.0 C C - BOND CREATED 8 8 9 1.0 C H - BONDS [('C', 'C', 1.0, 1.382), ('C', 'C', 2.0, 1.393), ('C', 'H', 1.0, 0.93)] - idx=9 H Number of bonds : 1 - BOND CREATED 9 9 8 1.0 H C - BONDS [('H', 'C', 1.0, 0.93)] - idx=10 H Number of bonds : 1 - NO BOND CREATED bond_startatom=0 or bond_endatom=10 is not in the specie.atoms. It belongs to non_bonded_atoms=[10]. - NO BONDS for H with ligand RDKit object index 10 because it is an added atom -CREATE_bonds_specie: specie.formula='H4-C5', specie.subtype='ligand' - Number of atoms in ligand object and RDKit object are different: 9 10 - [(0, 'C'), (1, 'C'), (2, 'H'), (3, 'C'), (4, 'H'), (5, 'C'), (6, 'H'), (7, 'C'), (8, 'H')] - [(0, 'C'), (1, 'C'), (2, 'H'), (3, 'C'), (4, 'H'), (5, 'C'), (6, 'H'), (7, 'C'), (8, 'H'), (9, 'H')] - NON_BONDED_ATOMS [9] - idx=0 C Number of bonds : 2 - BOND CREATED 0 0 1 1.0 C C - BOND CREATED 0 0 7 2.0 C C - BONDS [('C', 'C', 1.0, 1.386), ('C', 'C', 2.0, 1.421)] - idx=1 C Number of bonds : 4 - BOND CREATED 1 1 0 1.0 C C - BOND CREATED 1 1 2 1.0 C H - BOND CREATED 1 1 3 1.0 C C - NO BOND CREATED bond_startatom=1 or bond_endatom=9 is not in the specie.atoms. It belongs to non_bonded_atoms=[9]. - BONDS [('C', 'C', 1.0, 1.386), ('C', 'H', 1.0, 0.93), ('C', 'C', 1.0, 1.438)] - idx=2 H Number of bonds : 1 - BOND CREATED 2 2 1 1.0 H C - BONDS [('H', 'C', 1.0, 0.93)] - idx=3 C Number of bonds : 3 - BOND CREATED 3 3 1 1.0 C C - BOND CREATED 3 3 4 1.0 C H - BOND CREATED 3 3 5 2.0 C C - BONDS [('C', 'C', 1.0, 1.438), ('C', 'H', 1.0, 0.93), ('C', 'C', 2.0, 1.394)] - idx=4 H Number of bonds : 1 - BOND CREATED 4 4 3 1.0 H C - BONDS [('H', 'C', 1.0, 0.93)] - idx=5 C Number of bonds : 3 - BOND CREATED 5 5 3 2.0 C C - BOND CREATED 5 5 6 1.0 C H - BOND CREATED 5 5 7 1.0 C C - BONDS [('C', 'C', 2.0, 1.394), ('C', 'H', 1.0, 0.931), ('C', 'C', 1.0, 1.426)] - idx=6 H Number of bonds : 1 - BOND CREATED 6 6 5 1.0 H C - BONDS [('H', 'C', 1.0, 0.931)] - idx=7 C Number of bonds : 3 - BOND CREATED 7 7 0 2.0 C C - BOND CREATED 7 7 5 1.0 C C - BOND CREATED 7 7 8 1.0 C H - BONDS [('C', 'C', 2.0, 1.421), ('C', 'C', 1.0, 1.426), ('C', 'H', 1.0, 0.93)] - idx=8 H Number of bonds : 1 - BOND CREATED 8 8 7 1.0 H C - BONDS [('H', 'C', 1.0, 0.93)] - idx=9 H Number of bonds : 1 - NO BOND CREATED bond_startatom=1 or bond_endatom=9 is not in the specie.atoms. It belongs to non_bonded_atoms=[9]. - NO BONDS for H with ligand RDKit object index 9 because it is an added atom -CREATE_bonds_specie: specie.formula='Cl', specie.subtype='ligand' - Number of atoms in ligand object and RDKit object are equal: 1 1 - idx=0 Cl Number of bonds : 0 - NO BONDS CREATED for Cl due to no bonds in ligand RDKit object -CELL.CREATE_BONDS: Creating Metal-Metal Bonds for molecule H9-C10-Cl-Fe-Hg -CELL.CREATE_BONDS: Metals: [------------- Cell2mol METAL Object -------------- - Version = 0.1 - Type = atom - Sub-Type = metal - Label = Hg - Atomic Number = 80 - Index in Molecule = 0 - Metal Adjacency (mconnec) = 2 - Regular Adjacencies (connec) = 2 - Atom Charge = 2.0 - Coordination Sphere Formula = C-Cl - Possible Charges = [2] ----------------------------------------------------- -, ------------- Cell2mol METAL Object -------------- - Version = 0.1 - Type = atom - Sub-Type = metal - Label = Fe - Atomic Number = 26 - Index in Molecule = 1 - Metal Adjacency (mconnec) = 10 - Regular Adjacencies (connec) = 10 - Atom Charge = 3.0 - Coordination Sphere Formula = C10 - Possible Charges = [2, 3, 0] ----------------------------------------------------- -] -ligand.formula='H5-C5' smiles='[H]C1=C([H])[C-]([H])C([H])=C1[H]' - -ligand.formula='H4-C5' smiles='[H]C1=[C-][C-]([H])C([H])=C1[H]' - -ligand.formula='Cl' smiles='[Cl-]' - -CELL.CREATE_BONDS: Creating Bonds for molecule H9-C10-Cl-Fe-Hg -CREATE_bonds_specie: specie.formula='H4-C5', specie.subtype='ligand' - Number of atoms in ligand object and RDKit object are different: 9 10 - [(0, 'C'), (1, 'H'), (2, 'C'), (3, 'C'), (4, 'H'), (5, 'C'), (6, 'H'), (7, 'C'), (8, 'H')] - [(0, 'C'), (1, 'H'), (2, 'C'), (3, 'C'), (4, 'H'), (5, 'C'), (6, 'H'), (7, 'C'), (8, 'H'), (9, 'H')] - NON_BONDED_ATOMS [9] - idx=0 C Number of bonds : 4 - BOND CREATED 0 0 1 1.0 C H - BOND CREATED 0 0 2 1.0 C C - BOND CREATED 0 0 7 1.0 C C - NO BOND CREATED bond_startatom=0 or bond_endatom=9 is not in the specie.atoms. It belongs to non_bonded_atoms=[9]. - BONDS [('C', 'H', 1.0, 0.93), ('C', 'C', 1.0, 1.421), ('C', 'C', 1.0, 1.426)] - idx=1 H Number of bonds : 1 - BOND CREATED 1 1 0 1.0 H C - BONDS [('H', 'C', 1.0, 0.93)] - idx=2 C Number of bonds : 2 - BOND CREATED 2 2 0 1.0 C C - BOND CREATED 2 2 3 2.0 C C - BONDS [('C', 'C', 1.0, 1.421), ('C', 'C', 2.0, 1.386)] - idx=3 C Number of bonds : 3 - BOND CREATED 3 3 2 2.0 C C - BOND CREATED 3 3 4 1.0 C H - BOND CREATED 3 3 5 1.0 C C - BONDS [('C', 'C', 2.0, 1.386), ('C', 'H', 1.0, 0.93), ('C', 'C', 1.0, 1.438)] - idx=4 H Number of bonds : 1 - BOND CREATED 4 4 3 1.0 H C - BONDS [('H', 'C', 1.0, 0.93)] - idx=5 C Number of bonds : 3 - BOND CREATED 5 5 3 1.0 C C - BOND CREATED 5 5 6 1.0 C H - BOND CREATED 5 5 7 2.0 C C - BONDS [('C', 'C', 1.0, 1.438), ('C', 'H', 1.0, 0.93), ('C', 'C', 2.0, 1.394)] - idx=6 H Number of bonds : 1 - BOND CREATED 6 6 5 1.0 H C - BONDS [('H', 'C', 1.0, 0.93)] - idx=7 C Number of bonds : 3 - BOND CREATED 7 7 0 1.0 C C - BOND CREATED 7 7 5 2.0 C C - BOND CREATED 7 7 8 1.0 C H - BONDS [('C', 'C', 1.0, 1.426), ('C', 'C', 2.0, 1.394), ('C', 'H', 1.0, 0.931)] - idx=8 H Number of bonds : 1 - BOND CREATED 8 8 7 1.0 H C - BONDS [('H', 'C', 1.0, 0.931)] - idx=9 H Number of bonds : 1 - NO BOND CREATED bond_startatom=0 or bond_endatom=9 is not in the specie.atoms. It belongs to non_bonded_atoms=[9]. - NO BONDS for H with ligand RDKit object index 9 because it is an added atom -CREATE_bonds_specie: specie.formula='H5-C5', specie.subtype='ligand' - Number of atoms in ligand object and RDKit object are different: 10 11 - [(0, 'H'), (1, 'C'), (2, 'C'), (3, 'H'), (4, 'C'), (5, 'H'), (6, 'C'), (7, 'H'), (8, 'C'), (9, 'H')] - [(0, 'H'), (1, 'C'), (2, 'C'), (3, 'H'), (4, 'C'), (5, 'H'), (6, 'C'), (7, 'H'), (8, 'C'), (9, 'H'), (10, 'H')] - NON_BONDED_ATOMS [10] - idx=0 H Number of bonds : 1 - BOND CREATED 0 0 1 1.0 H C - BONDS [('H', 'C', 1.0, 0.929)] - idx=1 C Number of bonds : 4 - BOND CREATED 1 1 0 1.0 C H - BOND CREATED 1 1 2 1.0 C C - BOND CREATED 1 1 8 1.0 C C - NO BOND CREATED bond_startatom=1 or bond_endatom=10 is not in the specie.atoms. It belongs to non_bonded_atoms=[10]. - BONDS [('C', 'H', 1.0, 0.929), ('C', 'C', 1.0, 1.373), ('C', 'C', 1.0, 1.379)] - idx=2 C Number of bonds : 3 - BOND CREATED 2 2 1 1.0 C C - BOND CREATED 2 2 3 1.0 C H - BOND CREATED 2 2 4 2.0 C C - BONDS [('C', 'C', 1.0, 1.373), ('C', 'H', 1.0, 0.933), ('C', 'C', 2.0, 1.475)] - idx=3 H Number of bonds : 1 - BOND CREATED 3 3 2 1.0 H C - BONDS [('H', 'C', 1.0, 0.933)] - idx=4 C Number of bonds : 3 - BOND CREATED 4 4 2 2.0 C C - BOND CREATED 4 4 5 1.0 C H - BOND CREATED 4 4 6 1.0 C C - BONDS [('C', 'C', 2.0, 1.475), ('C', 'H', 1.0, 0.926), ('C', 'C', 1.0, 1.393)] - idx=5 H Number of bonds : 1 - BOND CREATED 5 5 4 1.0 H C - BONDS [('H', 'C', 1.0, 0.926)] - idx=6 C Number of bonds : 3 - BOND CREATED 6 6 4 1.0 C C - BOND CREATED 6 6 7 1.0 C H - BOND CREATED 6 6 8 2.0 C C - BONDS [('C', 'C', 1.0, 1.393), ('C', 'H', 1.0, 0.93), ('C', 'C', 2.0, 1.382)] - idx=7 H Number of bonds : 1 - BOND CREATED 7 7 6 1.0 H C - BONDS [('H', 'C', 1.0, 0.93)] - idx=8 C Number of bonds : 3 - BOND CREATED 8 8 1 1.0 C C - BOND CREATED 8 8 6 2.0 C C - BOND CREATED 8 8 9 1.0 C H - BONDS [('C', 'C', 1.0, 1.379), ('C', 'C', 2.0, 1.382), ('C', 'H', 1.0, 0.931)] - idx=9 H Number of bonds : 1 - BOND CREATED 9 9 8 1.0 H C - BONDS [('H', 'C', 1.0, 0.931)] - idx=10 H Number of bonds : 1 - NO BOND CREATED bond_startatom=1 or bond_endatom=10 is not in the specie.atoms. It belongs to non_bonded_atoms=[10]. - NO BONDS for H with ligand RDKit object index 10 because it is an added atom -CREATE_bonds_specie: specie.formula='Cl', specie.subtype='ligand' - Number of atoms in ligand object and RDKit object are equal: 1 1 - idx=0 Cl Number of bonds : 0 - NO BONDS CREATED for Cl due to no bonds in ligand RDKit object -CELL.CREATE_BONDS: Creating Metal-Metal Bonds for molecule H9-C10-Cl-Fe-Hg -CELL.CREATE_BONDS: Metals: [------------- Cell2mol METAL Object -------------- - Version = 0.1 - Type = atom - Sub-Type = metal - Label = Hg - Atomic Number = 80 - Index in Molecule = 0 - Metal Adjacency (mconnec) = 2 - Regular Adjacencies (connec) = 2 - Atom Charge = 2.0 - Coordination Sphere Formula = C-Cl - Possible Charges = [2] ----------------------------------------------------- -, ------------- Cell2mol METAL Object -------------- - Version = 0.1 - Type = atom - Sub-Type = metal - Label = Fe - Atomic Number = 26 - Index in Molecule = 1 - Metal Adjacency (mconnec) = 10 - Regular Adjacencies (connec) = 10 - Atom Charge = 3.0 - Coordination Sphere Formula = C10 - Possible Charges = [2, 3, 0] ----------------------------------------------------- -] -ligand.formula='H4-C5' smiles='[H]C1=[C-][C-]([H])C([H])=C1[H]' - -ligand.formula='H5-C5' smiles='[H]C1=C([H])[C-]([H])C([H])=C1[H]' - -ligand.formula='Cl' smiles='[Cl-]' - - -Total execution time for Charge Assignment: 0.27 seconds -Charge Assignment successfully finished. - -######################################### - Assigning Spin multiplicity -######################################### -GET_SPIN: Spin multiplicity of the metal Hg is assigned as 1 -GET_SPIN: Spin multiplicity of the metal Hg is assigned as 1 -GET_SPIN: Spin multiplicity of the complex Cl6-Hg2 is assigned as 1 - -GET_SPIN: Spin multiplicity of the metal Hg is assigned as 1 -GENERATE_feature_vector: Fe -GENERATE_feature_vector: elem_nr=26 m_ox=3.0 valence_elec=5.0 -GENERATE_feature_vector: metal.coord_nr=2 metal.coord_geometry='Linear' geom_nr=0 -GENERATE_feature_vector: metal.rel_metal_radius=0.729 -GENERATE_feature_vector: hapticity=1 -GENERATE_feature_vector: feature=array([[26. , 3. , 5. , 2. , 0. , 0.729, 1. ]]) -ASSIGN_SPIN_METAL: Spin multiplicity of the metal Fe is predicted as 2 using Random Forest model -GET_SPIN: Spin multiplicity of the metal Fe is assigned as 2 -GET_SPIN: Spin multiplicity of the complex H9-C10-Cl-Fe-Hg is assigned as 2 - -GET_SPIN: Spin multiplicity of the metal Hg is assigned as 1 -GENERATE_feature_vector: Fe -GENERATE_feature_vector: elem_nr=26 m_ox=3.0 valence_elec=5.0 -GENERATE_feature_vector: metal.coord_nr=2 metal.coord_geometry='Linear' geom_nr=0 -GENERATE_feature_vector: metal.rel_metal_radius=0.729 -GENERATE_feature_vector: hapticity=1 -GENERATE_feature_vector: feature=array([[26. , 3. , 5. , 2. , 0. , 0.729, 1. ]]) -ASSIGN_SPIN_METAL: Spin multiplicity of the metal Fe is predicted as 2 using Random Forest model -GET_SPIN: Spin multiplicity of the metal Fe is assigned as 2 -GET_SPIN: Spin multiplicity of the complex H9-C10-Cl-Fe-Hg is assigned as 2 - - -Total execution time for Spin Assignment: 0.39 seconds -SAVING cell2mol CELL object to /Users/ycho/cell2mol/cell2mol/test/BACZUB/Cell_BACZUB.cell diff --git a/cell2mol/test/BACZUB/cif2cell.err b/cell2mol/test/BACZUB/cif2cell.err deleted file mode 100644 index e69de29bb..000000000 diff --git a/cell2mol/test/BACZUB/dev_update/BACZUB.cif b/cell2mol/test/BACZUB/dev_update/BACZUB.cif deleted file mode 100644 index 79de64f00..000000000 --- a/cell2mol/test/BACZUB/dev_update/BACZUB.cif +++ /dev/null @@ -1,100 +0,0 @@ - -####################################################################### -# -# Cambridge Crystallographic Data Centre -# CCDC -# -####################################################################### -# -# If this CIF has been generated from an entry in the Cambridge -# Structural Database, then it will include bibliographic, chemical, -# crystal, experimental, refinement or atomic coordinate data resulting -# from the CCDC's data processing and validation procedures. -# -####################################################################### - -data_BACZUB -_symmetry_cell_setting triclinic -_symmetry_space_group_name_H-M 'P -1' -_symmetry_Int_Tables_number 2 -_space_group_name_Hall '-P 1' -loop_ -_symmetry_equiv_pos_site_id -_symmetry_equiv_pos_as_xyz -1 x,y,z -2 -x,-y,-z -_cell_length_a 7.378(2) -_cell_length_b 9.7490(10) -_cell_length_c 10.942(2) -_cell_angle_alpha 91.340(10) -_cell_angle_beta 96.05(2) -_cell_angle_gamma 107.230(10) -_cell_volume 746.295 -loop_ -_atom_site_label -_atom_site_type_symbol -_atom_site_fract_x -_atom_site_fract_y -_atom_site_fract_z -Hg1 Hg 0.06316(6) 0.26845(5) 0.49337(4) -Fe1 Fe 0.1366(2) 0.28772(15) 0.16436(14) -Cl1 Cl 0.1713(5) 0.2942(3) 0.6999(3) -C1 C 0.355(2) 0.4725(14) 0.1444(14) -H1 H 0.3479 0.5656 0.1563 -C2 C 0.300(3) 0.393(2) 0.0336(15) -H2 H 0.2505 0.4211 -0.0399 -C3 C 0.332(3) 0.263(2) 0.053(2) -H3 H 0.31 0.1875 -0.006 -C4 C 0.409(2) 0.263(2) 0.183(2) -H4 H 0.4427 0.189 0.2214 -C5 C 0.4205(16) 0.3973(19) 0.2356(15) -H5 H 0.4643 0.43 0.317 -C6 C -0.0298(15) 0.2421(13) 0.3094(11) -C7 C -0.0838(18) 0.3391(17) 0.2342(12) -H6 H -0.0799 0.4316 0.2601 -C8 C -0.1465(19) 0.2774(17) 0.1107(14) -H7 H -0.19 0.3203 0.0434 -C9 C -0.1281(18) 0.1392(16) 0.1137(14) -H8 H -0.1586 0.0726 0.0467 -C10 C -0.0556(18) 0.1150(14) 0.2347(11) -H9 H -0.0299 0.0316 0.26 -Hg1 Hg 0.93684(6) 0.73155(5) 0.50663(4) -Fe1 Fe 0.8634(2) 0.71228(15) 0.83564(14) -Cl1 Cl 0.8287(5) 0.7058(3) 0.3001(3) -C1 C 0.645(2) 0.5275(14) 0.8556(14) -H1 H 0.6521 0.4344 0.8437 -C2 C 0.700(3) 0.607(2) 0.9664(15) -H2 H 0.7495 0.5789 1.0399 -C3 C 0.668(3) 0.737(2) 0.947(2) -H3 H 0.69 0.8125 1.006 -C4 C 0.591(2) 0.737(2) 0.817(2) -H4 H 0.5573 0.811 0.7786 -C5 C 0.5795(16) 0.6027(19) 0.7644(15) -H5 H 0.5357 0.57 0.683 -C6 C 1.0298(15) 0.7579(13) 0.6906(11) -C7 C 1.0838(18) 0.6609(17) 0.7658(12) -H6 H 1.0799 0.5684 0.7399 -C8 C 1.1465(19) 0.7226(17) 0.8893(14) -H7 H 1.19 0.6797 0.9566 -C9 C 1.1281(18) 0.8608(16) 0.8863(14) -H8 H 1.1586 0.9274 0.9533 -C10 C 1.0556(18) 0.8850(14) 0.7653(11) -H9 H 1.0299 0.9684 0.74 -Hg2 Hg 0.45011(8) -0.16227(5) 0.37580(4) -Cl2 Cl 0.7328(3) -0.0248(3) 0.5287(3) -Cl3 Cl 0.4277(5) -0.1130(4) 0.1667(3) -Cl4 Cl 0.2986(5) -0.3799(3) 0.4704(3) -Hg2A Hg 0.54989(8) 0.16227(5) 0.62420(4) -Cl2A Cl 0.2672(3) 0.0248(3) 0.4713(3) -Cl3A Cl 0.5723(5) 0.1130(4) 0.8333(3) -Cl4A Cl 0.7014(5) 0.3799(3) 0.5296(3) -Hg2 Hg 0.45011(8) 0.83773(5) 0.37580(4) -Cl2 Cl 0.7328(3) 0.9752(3) 0.5287(3) -Cl3 Cl 0.4277(5) 0.8870(4) 0.1667(3) -Cl4 Cl 0.2986(5) 0.6201(3) 0.4704(3) -Hg2A Hg 0.54989(8) 1.16227(5) 0.62420(4) -Cl2A Cl 0.2672(3) 1.0248(3) 0.4713(3) -Cl3A Cl 0.5723(5) 1.1130(4) 0.8333(3) -Cl4A Cl 0.7014(5) 1.3799(3) 0.5296(3) - -#END diff --git a/cell2mol/test/BACZUB/error_0.out b/cell2mol/test/BACZUB/error_0.out deleted file mode 100644 index c671371b9..000000000 --- a/cell2mol/test/BACZUB/error_0.out +++ /dev/null @@ -1,2 +0,0 @@ -The Warning type list is : [False, False, False, False, False, False, False, False, False] -No Warnings! diff --git a/cell2mol/test/BACZUB/error_cif2cell.txt b/cell2mol/test/BACZUB/error_cif2cell.txt deleted file mode 100644 index e69de29bb..000000000 diff --git a/cell2mol/test/BACZUB/output.out b/cell2mol/test/BACZUB/output.out deleted file mode 100644 index d7694143d..000000000 --- a/cell2mol/test/BACZUB/output.out +++ /dev/null @@ -1,849 +0,0 @@ -running cell2mol with debug=2 -[Refcode] BACZUB -===================================== step 1 : Cell reconstruction ===================================== - - -GETREFS: sending listofreferences with 1.3 1.0 -lig.formula='H5-C5' g.atlist=[0, 2, 4, 6, 8] list_of_coord_atoms=['C', 'C', 'C', 'C', 'C'] g.hapttype=['h5-Cp'] g.hapticity=True - Atom 0 : C Metal 1 : Fe distance : 2.065 thres : 2.665 - Atom 2 : C Metal 1 : Fe distance : 2.062 thres : 2.665 - Atom 4 : C Metal 1 : Fe distance : 2.045 thres : 2.665 - Atom 6 : C Metal 1 : Fe distance : 2.084 thres : 2.665 - Atom 8 : C Metal 1 : Fe distance : 2.104 thres : 2.665 -ratio_list=[0.775, 0.774, 0.767, 0.782, 0.79] std_dev=0.008 -lig.formula='H5-C5' g.atlist=[0, 2, 4, 6, 8] list_of_coord_atoms=['C', 'C', 'C', 'C', 'C'] g.hapttype=['h5-Cp'] g.hapticity=True ->>> metal-coordinating atoms C distance : 2.065 thres : 2.665 Metal 1 : Fe ['C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C'] ->>> metal-coordinating atoms C distance : 2.062 thres : 2.665 Metal 1 : Fe ['C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C'] ->>> metal-coordinating atoms C distance : 2.045 thres : 2.665 Metal 1 : Fe ['C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C'] ->>> metal-coordinating atoms C distance : 2.084 thres : 2.665 Metal 1 : Fe ['C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C'] ->>> metal-coordinating atoms C distance : 2.104 thres : 2.665 Metal 1 : Fe ['C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C'] - -lig.formula='H4-C5' g.atlist=[0, 1, 3, 5, 7] list_of_coord_atoms=['C', 'C', 'C', 'C', 'C'] g.hapttype=['h5-Cp'] g.hapticity=True - Atom 0 : C Metal 0 : Hg distance : 2.042 thres : 2.665 - Atom 1 : C Metal 1 : Fe distance : 2.051 thres : 2.665 - Atom 3 : C Metal 1 : Fe distance : 2.081 thres : 2.665 - Atom 5 : C Metal 1 : Fe distance : 2.068 thres : 2.665 - Atom 7 : C Metal 1 : Fe distance : 2.077 thres : 2.665 -ratio_list=[0.766, 0.77, 0.781, 0.776, 0.779] std_dev=0.006 -lig.formula='H4-C5' g.atlist=[0, 1, 3, 5, 7] list_of_coord_atoms=['C', 'C', 'C', 'C', 'C'] g.hapttype=['h5-Cp'] g.hapticity=True ->>> metal-coordinating atoms C distance : 2.042 thres : 2.665 Metal 0 : Hg ['Cl', 'C'] ->>> metal-coordinating atoms C distance : 2.051 thres : 2.665 Metal 1 : Fe ['C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C'] ->>> metal-coordinating atoms C distance : 2.081 thres : 2.665 Metal 1 : Fe ['C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C'] ->>> metal-coordinating atoms C distance : 2.068 thres : 2.665 Metal 1 : Fe ['C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C'] ->>> metal-coordinating atoms C distance : 2.077 thres : 2.665 Metal 1 : Fe ['C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C'] - -lig.formula='Cl' g.atlist=[0] list_of_coord_atoms=['Cl'] g.hapttype=[] g.hapticity=False - Atom 0 : Cl Metal 0 : Hg distance : 2.298 thres : 3.042 ->>> metal-coordinating atoms Cl distance : 2.298 thres : 3.042 Metal 0 : Hg ['Cl', 'C'] - -###### met in ref.metalist ###### -met.label='Hg' met.mconnec=array([2]) met.totmconnec=2 -met.coord_sphere=['Cl', 'C'] -met.coordinating_atoms=['Cl', 'C'] -met.label='Fe' met.mconnec=array([10]) met.totmconnec=10 -met.coord_sphere=['C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C'] -met.coordinating_atoms=['C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C'] -Molecule : H9-C10-Cl-Fe-Hg -Metal : Hg Coordinating atoms : ['Cl', 'C'] -Coordination number : 2 {'Linear': 0.12, 'Bent (V-shape, 109.47°)': 13.912, 'Bent (L-shape, 90°)': 24.491} -The most likely geometry : 'Linear' with deviation value 0.12 (hapticity : False) - -Molecule : H9-C10-Cl-Fe-Hg -Metal : Fe Coordinating atoms : ['C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C'] -The number of coordinating points (including the mid point of haptic ligands) : 2 {'Linear': 0.007, 'Bent (V-shape, 109.47°)': 13.717, 'Bent (L-shape, 90°)': 24.293} -The most likely geometry : 'Linear' with deviation value 0.007 (hapticity : True) -The type of hapticity : ['h5-Cp'] - -Potential hapticity=True for molecule H9-C10-Cl-Fe-Hg -Verifying Connectivity for Lig in Ref molec 10, H5-C5, 5 1 -Verifying Connectivity for Lig in Ref molec 9, H4-C5, 6 2 -Verifying Connectivity for Lig in Ref molec 1, Cl, 1 1 -lig.formula='H5-C5' g.atlist=[0, 2, 4, 6, 8] list_of_coord_atoms=['C', 'C', 'C', 'C', 'C'] g.hapttype=['h5-Cp'] g.hapticity=True - Atom 0 : C Metal 1 : Fe distance : 2.065 thres : 2.665 - Atom 2 : C Metal 1 : Fe distance : 2.062 thres : 2.665 - Atom 4 : C Metal 1 : Fe distance : 2.045 thres : 2.665 - Atom 6 : C Metal 1 : Fe distance : 2.084 thres : 2.665 - Atom 8 : C Metal 1 : Fe distance : 2.104 thres : 2.665 -ratio_list=[0.775, 0.774, 0.767, 0.782, 0.79] std_dev=0.008 -lig.formula='H5-C5' g.atlist=[0, 2, 4, 6, 8] list_of_coord_atoms=['C', 'C', 'C', 'C', 'C'] g.hapttype=['h5-Cp'] g.hapticity=True ->>> metal-coordinating atoms C distance : 2.065 thres : 2.665 Metal 1 : Fe ['C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C'] ->>> metal-coordinating atoms C distance : 2.062 thres : 2.665 Metal 1 : Fe ['C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C'] ->>> metal-coordinating atoms C distance : 2.045 thres : 2.665 Metal 1 : Fe ['C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C'] ->>> metal-coordinating atoms C distance : 2.084 thres : 2.665 Metal 1 : Fe ['C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C'] ->>> metal-coordinating atoms C distance : 2.104 thres : 2.665 Metal 1 : Fe ['C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C'] - -lig.formula='H4-C5' g.atlist=[0, 1, 3, 5, 7] list_of_coord_atoms=['C', 'C', 'C', 'C', 'C'] g.hapttype=['h5-Cp'] g.hapticity=True - Atom 0 : C Metal 0 : Hg distance : 2.042 thres : 2.665 - Atom 1 : C Metal 1 : Fe distance : 2.051 thres : 2.665 - Atom 3 : C Metal 1 : Fe distance : 2.081 thres : 2.665 - Atom 5 : C Metal 1 : Fe distance : 2.068 thres : 2.665 - Atom 7 : C Metal 1 : Fe distance : 2.077 thres : 2.665 -ratio_list=[0.766, 0.77, 0.781, 0.776, 0.779] std_dev=0.006 -lig.formula='H4-C5' g.atlist=[0, 1, 3, 5, 7] list_of_coord_atoms=['C', 'C', 'C', 'C', 'C'] g.hapttype=['h5-Cp'] g.hapticity=True ->>> metal-coordinating atoms C distance : 2.042 thres : 2.665 Metal 0 : Hg ['Cl', 'C'] ->>> metal-coordinating atoms C distance : 2.051 thres : 2.665 Metal 1 : Fe ['C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C'] ->>> metal-coordinating atoms C distance : 2.081 thres : 2.665 Metal 1 : Fe ['C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C'] ->>> metal-coordinating atoms C distance : 2.068 thres : 2.665 Metal 1 : Fe ['C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C'] ->>> metal-coordinating atoms C distance : 2.077 thres : 2.665 Metal 1 : Fe ['C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C'] - -lig.formula='Cl' g.atlist=[0] list_of_coord_atoms=['Cl'] g.hapttype=[] g.hapticity=False - Atom 0 : Cl Metal 0 : Hg distance : 2.298 thres : 3.042 ->>> metal-coordinating atoms Cl distance : 2.298 thres : 3.042 Metal 0 : Hg ['Cl', 'C'] - -###### met in ref.metalist ###### -met.label='Hg' met.mconnec=array([2]) met.totmconnec=2 -met.coord_sphere=['Cl', 'C'] -met.coordinating_atoms=['Cl', 'C'] -met.label='Fe' met.mconnec=array([10]) met.totmconnec=10 -met.coord_sphere=['C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C'] -met.coordinating_atoms=['C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C'] -Molecule : H9-C10-Cl-Fe-Hg -Metal : Hg Coordinating atoms : ['Cl', 'C'] -Coordination number : 2 {'Linear': 0.12, 'Bent (V-shape, 109.47°)': 13.912, 'Bent (L-shape, 90°)': 24.491} -The most likely geometry : 'Linear' with deviation value 0.12 (hapticity : False) - -Molecule : H9-C10-Cl-Fe-Hg -Metal : Fe Coordinating atoms : ['C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C'] -The number of coordinating points (including the mid point of haptic ligands) : 2 {'Linear': 0.007, 'Bent (V-shape, 109.47°)': 13.717, 'Bent (L-shape, 90°)': 24.293} -The most likely geometry : 'Linear' with deviation value 0.007 (hapticity : True) -The type of hapticity : ['h5-Cp'] - -Potential hapticity=True for molecule H9-C10-Cl-Fe-Hg -Verifying Connectivity for Lig in Ref molec 10, H5-C5, 5 1 -Verifying Connectivity for Lig in Ref molec 9, H4-C5, 6 2 -Verifying Connectivity for Lig in Ref molec 1, Cl, 1 1 -lig.formula='Cl' g.atlist=[0] list_of_coord_atoms=['Cl'] g.hapttype=[] g.hapticity=False - Atom 0 : Cl Metal 1 : Hg distance : 2.401 thres : 3.042 ->>> metal-coordinating atoms Cl distance : 2.401 thres : 3.042 Metal 1 : Hg ['Cl', 'Cl', 'Cl', 'Cl'] - -lig.formula='Cl' g.atlist=[0] list_of_coord_atoms=['Cl'] g.hapttype=[] g.hapticity=False - Atom 0 : Cl Metal 1 : Hg distance : 2.348 thres : 3.042 ->>> metal-coordinating atoms Cl distance : 2.348 thres : 3.042 Metal 1 : Hg ['Cl', 'Cl', 'Cl', 'Cl'] - -lig.formula='Cl' g.atlist=[0] list_of_coord_atoms=['Cl'] g.hapttype=[] g.hapticity=False - Atom 0 : Cl Metal 1 : Hg distance : 2.539 thres : 3.042 ->>> metal-coordinating atoms Cl distance : 2.539 thres : 3.042 Metal 1 : Hg ['Cl', 'Cl', 'Cl', 'Cl'] - -lig.formula='Cl' g.atlist=[0] list_of_coord_atoms=['Cl'] g.hapttype=[] g.hapticity=False - Atom 0 : Cl Metal 0 : Hg distance : 2.401 thres : 3.042 ->>> metal-coordinating atoms Cl distance : 2.401 thres : 3.042 Metal 0 : Hg ['Cl', 'Cl', 'Cl', 'Cl'] - -lig.formula='Cl' g.atlist=[0] list_of_coord_atoms=['Cl'] g.hapttype=[] g.hapticity=False - Atom 0 : Cl Metal 0 : Hg distance : 2.348 thres : 3.042 ->>> metal-coordinating atoms Cl distance : 2.348 thres : 3.042 Metal 0 : Hg ['Cl', 'Cl', 'Cl', 'Cl'] - -lig.formula='Cl' g.atlist=[0] list_of_coord_atoms=['Cl'] g.hapttype=[] g.hapticity=False - Atom 0 : Cl Metal 0 : Hg distance : 2.539 thres : 3.042 ->>> metal-coordinating atoms Cl distance : 2.539 thres : 3.042 Metal 0 : Hg ['Cl', 'Cl', 'Cl', 'Cl'] - -###### met in ref.metalist ###### -met.label='Hg' met.mconnec=array([4]) met.totmconnec=4 -met.coord_sphere=['Cl', 'Cl', 'Cl', 'Cl'] -met.coordinating_atoms=['Cl', 'Cl', 'Cl', 'Cl'] -met.label='Hg' met.mconnec=array([4]) met.totmconnec=4 -met.coord_sphere=['Cl', 'Cl', 'Cl', 'Cl'] -met.coordinating_atoms=['Cl', 'Cl', 'Cl', 'Cl'] -Molecule : Cl6-Hg2 -Metal : Hg Coordinating atoms : ['Cl', 'Cl', 'Cl', 'Cl'] -Coordination number : 4 {'Tetrahedral': 1.839, 'Square planar': 29.907, 'Seesaw': 7.15} -The most likely geometry : 'Tetrahedral' with deviation value 1.839 (hapticity : False) - -Molecule : Cl6-Hg2 -Metal : Hg Coordinating atoms : ['Cl', 'Cl', 'Cl', 'Cl'] -Coordination number : 4 {'Tetrahedral': 1.839, 'Square planar': 29.907, 'Seesaw': 7.15} -The most likely geometry : 'Tetrahedral' with deviation value 1.839 (hapticity : False) - -Potential hapticity=False for molecule Cl6-Hg2 -Verifying Connectivity for Lig in Ref molec 1, Cl, 1 1 -Verifying Connectivity for Lig in Ref molec 1, Cl, 1 1 -Verifying Connectivity for Lig in Ref molec 1, Cl, 2 2 -Verifying Connectivity for Lig in Ref molec 1, Cl, 1 1 -Verifying Connectivity for Lig in Ref molec 1, Cl, 1 1 -Verifying Connectivity for Lig in Ref molec 1, Cl, 2 2 -valid_list_of_references=True Warning=False - -################## -Checking Missing H -################## -Not a Single Molecule has Missing H atoms (apparently) -H9-C10-Cl-Fe-Hg found as reference -H9-C10-Cl-Fe-Hg found as reference -Cl6-Hg2 found as reference -12 Blocks sorted for reconstruction as (Molec, Frag, H): 0 8 4 -With a total of 52 atoms - -############################################## -8 molecules submitted to SEQUENTIAL with Heavy -############################################## -Entered sequential with 8 fragments to reconstruct -Found 8 and 0 Heavy and Hydrogen fragments, respectively - -Fragments to allocate this iteration: 0 1 out of 7 7 -SEQUENTIAL Heavy iteration 1 with 8 and 8 Remaining in each list -SEQUENTIAL Heavy sending ['Hg', 'Cl'] and ['Fe', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'H'] to combine - -Fragments to allocate this iteration: 0 2 out of 7 7 -SEQUENTIAL Heavy iteration 2 with 8 and 8 Remaining in each list -SEQUENTIAL Heavy sending ['Hg', 'Cl'] and ['Fe', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'H'] to combine - -Fragments to allocate this iteration: 0 3 out of 7 7 -SEQUENTIAL Heavy iteration 3 with 8 and 8 Remaining in each list -SEQUENTIAL Heavy sending ['Hg', 'Cl'] and ['Hg', 'Cl', 'Cl', 'Cl'] to combine - -Fragments to allocate this iteration: 0 4 out of 7 7 -SEQUENTIAL Heavy iteration 4 with 8 and 8 Remaining in each list -SEQUENTIAL Heavy sending ['Hg', 'Cl'] and ['C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H'] to combine - -Fragments to allocate this iteration: 0 1 out of 6 6 -SEQUENTIAL Heavy iteration 5 with 7 and 7 Remaining in each list -SEQUENTIAL Heavy sending ['C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'Hg', 'Cl'] and ['Hg', 'Cl', 'Cl', 'Cl'] to combine - -Fragments to allocate this iteration: 0 2 out of 6 6 -SEQUENTIAL Heavy iteration 6 with 7 and 7 Remaining in each list -SEQUENTIAL Heavy sending ['C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'Hg', 'Cl'] and ['Fe', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'H'] to combine - -Fragments to allocate this iteration: 0 3 out of 6 6 -SEQUENTIAL Heavy iteration 7 with 7 and 7 Remaining in each list -SEQUENTIAL Heavy sending ['C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'Hg', 'Cl'] and ['Fe', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'H'] to combine - -Fragments to allocate this iteration: 0 1 out of 5 5 -SEQUENTIAL Heavy SKIPPED 20 and 9 - -Fragments to allocate this iteration: 0 2 out of 5 5 -SEQUENTIAL Heavy SKIPPED 20 and 4 - -Fragments to allocate this iteration: 0 3 out of 5 5 -SEQUENTIAL Heavy SKIPPED 20 and 9 - -Fragments to allocate this iteration: 0 4 out of 5 5 -SEQUENTIAL Heavy SKIPPED 20 and 4 - -Fragments to allocate this iteration: 0 5 out of 5 5 -SEQUENTIAL Heavy iteration 12 with 6 and 6 Remaining in each list -SEQUENTIAL Heavy sending ['C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'Hg', 'Cl', 'Fe', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'H'] and ['Hg', 'Cl'] to combine - -Fragments to allocate this iteration: 1 0 out of 5 5 -SEQUENTIAL Heavy iteration 13 with 6 and 6 Remaining in each list -SEQUENTIAL Heavy sending ['Hg', 'Cl'] and ['C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'Hg', 'Cl', 'Fe', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'H'] to combine - -Fragments to allocate this iteration: 1 2 out of 5 5 -SEQUENTIAL Heavy SKIPPED 20 and 9 - -Fragments to allocate this iteration: 1 3 out of 5 5 -SEQUENTIAL Heavy SKIPPED 20 and 4 - -Fragments to allocate this iteration: 1 4 out of 5 5 -SEQUENTIAL Heavy SKIPPED 20 and 9 - -Fragments to allocate this iteration: 1 5 out of 5 5 -SEQUENTIAL Heavy SKIPPED 20 and 4 - -Fragments to allocate this iteration: 2 0 out of 5 5 -SEQUENTIAL Heavy iteration 18 with 6 and 6 Remaining in each list -SEQUENTIAL Heavy sending ['Fe', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'H'] and ['Hg', 'Cl'] to combine - -Fragments to allocate this iteration: 2 1 out of 5 5 -SEQUENTIAL Heavy iteration 19 with 6 and 6 Remaining in each list -SEQUENTIAL Heavy sending ['C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'Hg', 'Cl', 'Fe', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'H'] and ['Hg', 'Cl'] to combine - -Fragments to allocate this iteration: 2 3 out of 5 5 -SEQUENTIAL Heavy iteration 20 with 6 and 6 Remaining in each list -SEQUENTIAL Heavy sending ['Fe', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'H'] and ['Hg', 'Cl', 'Cl', 'Cl'] to combine - -Fragments to allocate this iteration: 2 4 out of 5 5 -SEQUENTIAL Heavy SKIPPED 20 and 9 - -Fragments to allocate this iteration: 2 5 out of 5 5 -SEQUENTIAL Heavy SKIPPED 20 and 4 - -Fragments to allocate this iteration: 3 0 out of 5 5 -SEQUENTIAL Heavy iteration 23 with 6 and 6 Remaining in each list -SEQUENTIAL Heavy sending ['Hg', 'Cl'] and ['Fe', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'H'] to combine - -Fragments to allocate this iteration: 3 1 out of 5 5 -SEQUENTIAL Heavy SKIPPED 20 and 9 - -Fragments to allocate this iteration: 3 2 out of 5 5 -SEQUENTIAL Heavy SKIPPED 20 and 4 - -Fragments to allocate this iteration: 3 4 out of 5 5 -SEQUENTIAL Heavy SKIPPED 20 and 9 - -Fragments to allocate this iteration: 3 5 out of 5 5 -SEQUENTIAL Heavy SKIPPED 20 and 4 - -Fragments to allocate this iteration: 4 0 out of 5 5 -SEQUENTIAL Heavy iteration 28 with 6 and 6 Remaining in each list -SEQUENTIAL Heavy sending ['C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H'] and ['Hg', 'Cl'] to combine - -Fragments to allocate this iteration: 0 1 out of 4 4 -SEQUENTIAL Heavy iteration 29 with 5 and 5 Remaining in each list -SEQUENTIAL Heavy sending ['C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'Hg', 'Cl'] and ['Fe', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'H'] to combine - -Fragments to allocate this iteration: 0 1 out of 3 3 -SEQUENTIAL Heavy SKIPPED 20 and 4 - -Fragments to allocate this iteration: 0 2 out of 3 3 -SEQUENTIAL Heavy SKIPPED 20 and 20 - -Fragments to allocate this iteration: 0 3 out of 3 3 -SEQUENTIAL Heavy SKIPPED 20 and 4 - -Fragments to allocate this iteration: 1 0 out of 3 3 -SEQUENTIAL Heavy SKIPPED 4 and 20 - -Fragments to allocate this iteration: 1 2 out of 3 3 -SEQUENTIAL Heavy SKIPPED 4 and 20 - -Fragments to allocate this iteration: 1 3 out of 3 3 -SEQUENTIAL Heavy iteration 35 with 4 and 4 Remaining in each list -SEQUENTIAL Heavy sending ['Hg', 'Cl', 'Cl', 'Cl'] and ['Hg', 'Cl', 'Cl', 'Cl'] to combine -SEQUENTIAL: Molecules found so far: -0 8 ['Hg', 'Cl', 'Cl', 'Cl', 'Hg', 'Cl', 'Cl', 'Cl'] - -Fragments to allocate this iteration: 0 1 out of 1 1 -SEQUENTIAL Heavy SKIPPED 20 and 20 - -Fragments to allocate this iteration: 1 0 out of 1 1 -SEQUENTIAL Heavy SKIPPED 20 and 20 - Increased Threshold_tmat. Now: 0.6000000000000001 - Maxsize of the translation matrix is= 8 - -Fragments to allocate this iteration: 0 1 out of 1 1 -SEQUENTIAL Heavy SKIPPED 20 and 20 - -Fragments to allocate this iteration: 1 0 out of 1 1 -SEQUENTIAL Heavy SKIPPED 20 and 20 - Increased Threshold_tmat. Now: 0.8 - Maxsize of the translation matrix is= 18 - -Fragments to allocate this iteration: 0 1 out of 1 1 -SEQUENTIAL Heavy SKIPPED 20 and 20 - -Fragments to allocate this iteration: 1 0 out of 1 1 -SEQUENTIAL Heavy SKIPPED 20 and 20 -Launching Last Attempt -Trying Full Tmatrix for all Items in list - -Fragments to allocate this iteration: 0 1 out of 1 1 -SEQUENTIAL Heavy SKIPPED 20 and 20 - -Fragments to allocate this iteration: 1 0 out of 1 1 -SEQUENTIAL Heavy SKIPPED 20 and 20 -Sequential: list1 end: ['C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'Hg', 'Cl', 'Fe', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'H'] -Sequential: list1 end: ['C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'Hg', 'Cl', 'Fe', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'H'] -1 molecules and 2 fragments out of SEQUENTIAL with Heavy - -Molec reconstructed after Heavy 8 Cl6-Hg2 Complex -Remaining after Heavy 20 H7-C10-Cl-Fe-Hg Rec. Fragment -Remaining after Heavy 20 H7-C10-Cl-Fe-Hg Rec. Fragment - - -############################################## -6 molecules submitted to sequential with All -############################################## -Entered sequential with 6 fragments to reconstruct -Found 2 and 4 Heavy and Hydrogen fragments, respectively - -Fragments to allocate this iteration: 0 0 out of 1 3 -SEQUENTIAL All iteration 1 with 2 and 4 Remaining in each list -SEQUENTIAL All sending ['C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'Hg', 'Cl', 'Fe', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'H'] and ['H'] to combine - -Fragments to allocate this iteration: 0 1 out of 1 2 -SEQUENTIAL All iteration 2 with 2 and 3 Remaining in each list -SEQUENTIAL All sending ['C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'Hg', 'Cl', 'Fe', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'H', 'H'] and ['H'] to combine -SEQUENTIAL: Molecules found so far: -0 22 ['C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'Hg', 'Cl', 'Fe', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'H', 'H', 'H'] - -Fragments to allocate this iteration: 0 1 out of 0 1 -SEQUENTIAL All iteration 3 with 1 and 2 Remaining in each list -SEQUENTIAL All sending ['C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'Hg', 'Cl', 'Fe', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'H'] and ['H'] to combine - Increased Threshold_tmat. Now: 0.6000000000000001 - Maxsize of the translation matrix is= 12 - -Fragments to allocate this iteration: 0 0 out of 0 0 -SEQUENTIAL All iteration 1 with 1 and 1 Remaining in each list -SEQUENTIAL All sending ['C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'Hg', 'Cl', 'Fe', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'H', 'H'] and ['H'] to combine -SEQUENTIAL: Molecules found so far: -0 22 ['C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'Hg', 'Cl', 'Fe', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'H', 'H', 'H'] -1 22 ['C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'Hg', 'Cl', 'Fe', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'H', 'H', 'H'] -FINISHED succesfully -NO remaining Molecules after Hydrogen reconstruction - -Molecule Types assigned. These are: -Cl6-Hg2 Complex -H9-C10-Cl-Fe-Hg Complex -H9-C10-Cl-Fe-Hg Complex - -Total execution time for Cell Reconstruction: 1.03 seconds -Cell reconstruction successfully finished. - -===================================== step 2 : Charge Assignment ======================================= - -New ligand found with: formula Cl and totmconnec=1, and added in position 0 -Ligand 1 is the same than 0 in typelist -New ligand found with: formula Cl and totmconnec=2, and added in position 1 -Ligand 3 is the same than 0 in typelist -Ligand 4 is the same than 0 in typelist -Ligand 5 is the same than 1 in typelist -New Metal Center found with: labels Hg and added in position 2 -Metal 1 is the same than 0 in typelist -New ligand found with: formula H4-C5 and totmconnec=6, and added in position 3 -New ligand found with: formula H5-C5 and totmconnec=5, and added in position 4 -Ligand 2 is the same than 0 in typelist -New Metal Center found with: labels Hg and added in position 5 -New Metal Center found with: labels Fe and added in position 6 -Ligand 0 is the same than 2 in typelist -Ligand 1 is the same than 3 in typelist -Ligand 2 is the same than 0 in typelist -Metal 0 is the same than 1 in typelist -Metal 1 is the same than 2 in typelist -CLASSIFY: molec_indices [0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2] -CLASSIFY: ligand_indices [0, 1, 2, 3, 4, 5, 0, 1, 0, 1, 2, 0, 1, 0, 1, 2, 0, 1] -CLASSIFY: unique_indices [0, 0, 1, 0, 0, 1, 2, 2, 3, 4, 0, 5, 6, 3, 4, 0, 5, 6] -CLASSIFY: specie 0 appears 6 times, with type: Ligand -CLASSIFY: specie 1 appears 2 times, with type: Ligand -CLASSIFY: specie 2 appears 2 times, with type: Metal -CLASSIFY: specie 3 appears 2 times, with type: Ligand -CLASSIFY: specie 4 appears 2 times, with type: Ligand -CLASSIFY: specie 5 appears 2 times, with type: Metal -CLASSIFY: specie 6 appears 2 times, with type: Metal -7 Species (Ligand or Molecules) to Characterize - - --------------- - #### Ligand #### - --------------- - 1 Cl 1 - DEFINE_SITES: evaluating non-haptic group with index 0 and label Cl - DEFINE_SITES: Added H to atom 0 with: a.mconnec=1 and label=Cl - DEFINE_SITES: evaluating non-haptic group with index 0 and label Cl - POSCHARGE: received 1 protonations for this specie - - POSCHARGE: doing PROTONATION with added atoms: 1 - POSCHARGE will try charges [0, -1, 1, -2, 2] - POSCHARGE: charge 0 with smiles [H]Cl - POSCHARGE: charge -1 with smiles [H]Cl - POSCHARGE: charge 1 with smiles [H]Cl - POSCHARGE: charge -2 with smiles [H]Cl - POSCHARGE: charge 2 with smiles [H]Cl - NEW SELECT FUNCTION: uncorr_total: [0, 0, 0, 0, 0] - NEW SELECT FUNCTION: uncorr_abs_total: [0, 0, 0, 0, 0] - NEW SELECT FUNCTION: uncorr_abs_atcharge: [0, 0, 0, 0, 0] - NEW SELECT FUNCTION: uncorr_zwitt: [False, False, False, False, False] - NEW SELECT FUNCTION: coincide: [True, False, False, False, False] - NEW SELECT FUNCTION: listofmintot: [0, 1, 2, 3, 4] - NEW SELECT FUNCTION: listofminabs: [0, 1, 2, 3, 4] - NEW SELECT FUNCTION: tmplist: [0], including: - NEW SELECT FUNCTION: Corr_charge=-1 - NEW SELECT FUNCTION: Smiles=[H]Cl - NEW SELECT FUNCTION: found corr_charges=[-1] - NEW SELECT FUNCTION: doing tgt_charge=-1 - NEW SELECT FUNCTION: charge_state added - NEW SELECT FUNCTION: Case 1, only one entry for -1 in tmplist - POSCHARGE. poscharge added with corrected charge: -1 and uncorrected: 0 - POSCHARGE. poscharge added with smiles: [H]Cl -Charge state and protonation received for molecule 1 - - --------------- - #### Ligand #### - --------------- - 1 Cl 2 - DEFINE_SITES: evaluating non-haptic group with index 0 and label Cl - DEFINE_SITES: Added H to atom 0 with: a.mconnec=2 and label=Cl - DEFINE_SITES: evaluating non-haptic group with index 0 and label Cl - POSCHARGE: received 1 protonations for this specie - - POSCHARGE: doing PROTONATION with added atoms: 1 - POSCHARGE will try charges [0, -1, 1, -2, 2] - POSCHARGE: charge 0 with smiles [H]Cl - POSCHARGE: charge -1 with smiles [H]Cl - POSCHARGE: charge 1 with smiles [H]Cl - POSCHARGE: charge -2 with smiles [H]Cl - POSCHARGE: charge 2 with smiles [H]Cl - NEW SELECT FUNCTION: uncorr_total: [0, 0, 0, 0, 0] - NEW SELECT FUNCTION: uncorr_abs_total: [0, 0, 0, 0, 0] - NEW SELECT FUNCTION: uncorr_abs_atcharge: [0, 0, 0, 0, 0] - NEW SELECT FUNCTION: uncorr_zwitt: [False, False, False, False, False] - NEW SELECT FUNCTION: coincide: [True, False, False, False, False] - NEW SELECT FUNCTION: listofmintot: [0, 1, 2, 3, 4] - NEW SELECT FUNCTION: listofminabs: [0, 1, 2, 3, 4] - NEW SELECT FUNCTION: tmplist: [0], including: - NEW SELECT FUNCTION: Corr_charge=-1 - NEW SELECT FUNCTION: Smiles=[H]Cl - NEW SELECT FUNCTION: found corr_charges=[-1] - NEW SELECT FUNCTION: doing tgt_charge=-1 - NEW SELECT FUNCTION: charge_state added - NEW SELECT FUNCTION: Case 1, only one entry for -1 in tmplist - POSCHARGE. poscharge added with corrected charge: -1 and uncorrected: 0 - POSCHARGE. poscharge added with smiles: [H]Cl -Charge state and protonation received for molecule 1 - - --------------- - #### Metal #### - --------------- - Hg coordination_sphere ['Cl', 'Cl', 'Cl', 'Cl'] - Hg coordinating_atoms ['Cl', 'Cl', 'Cl', 'Cl'] -Possible charges received for metal: [2] - - --------------- - #### Ligand #### - --------------- - 9 H4-C5 6 - DEFINE_SITES: addressing group with hapticity: ['h5-Cp'] - DEFINE_SITES: It is an h5-Cp with atlist: [0, 1, 3, 5, 7] - DEFINE_SITES: Added H to atom 1 with: a.mconnec=1 and label=C - DEFINE_SITES: addressing group with hapticity: ['h5-Cp'] - DEFINE_SITES: It is an h5-Cp with atlist: [0, 1, 3, 5, 7] - POSCHARGE: received 1 protonations for this specie - - POSCHARGE: doing PROTONATION with added atoms: 1 - POSCHARGE will try charges [0, -1, 1, -2, 2] - POSCHARGE: charge 0 with smiles [H][C+]1CC([H])([H])[C+]([H])[C-]1[H] - POSCHARGE: charge -1 with smiles [H]C1=[C-]C([H])([H])C([H])=C1[H] - POSCHARGE: charge 1 with smiles [H][C+]1[C+]([H])C([H])([H])C[C-]1[H] - POSCHARGE: charge -2 with smiles [H][C+]1CC([H])([H])[C-]([H])[C-]1[H] - POSCHARGE: charge 2 with smiles [H][C+]1CC([H])([H])[C+]([H])[C+]1[H] - NEW SELECT FUNCTION: uncorr_total: [1, -1, 1, -1, 3] - NEW SELECT FUNCTION: uncorr_abs_total: [1, 1, 1, 1, 3] - NEW SELECT FUNCTION: uncorr_abs_atcharge: [3, 1, 3, 3, 3] - NEW SELECT FUNCTION: uncorr_zwitt: [True, False, True, True, False] - NEW SELECT FUNCTION: coincide: [False, True, True, False, False] - NEW SELECT FUNCTION: listofmintot: [0, 1, 2, 3] - NEW SELECT FUNCTION: listofminabs: [1] - NEW SELECT FUNCTION: tmplist: [1], including: - NEW SELECT FUNCTION: Corr_charge=-2 - NEW SELECT FUNCTION: Smiles=[H]C1=[C-]C([H])([H])C([H])=C1[H] - NEW SELECT FUNCTION: found corr_charges=[-2] - NEW SELECT FUNCTION: doing tgt_charge=-2 - NEW SELECT FUNCTION: charge_state added - NEW SELECT FUNCTION: Case 1, only one entry for -2 in tmplist - POSCHARGE. poscharge added with corrected charge: -2 and uncorrected: -1 - POSCHARGE. poscharge added with smiles: [H]C1=[C-]C([H])([H])C([H])=C1[H] -Charge state and protonation received for molecule 1 - - --------------- - #### Ligand #### - --------------- - 10 H5-C5 5 - DEFINE_SITES: addressing group with hapticity: ['h5-Cp'] - DEFINE_SITES: It is an h5-Cp with atlist: [0, 2, 3, 4, 6] - DEFINE_SITES: Added H to atom 0 with: a.mconnec=1 and label=C - DEFINE_SITES: addressing group with hapticity: ['h5-Cp'] - DEFINE_SITES: It is an h5-Cp with atlist: [0, 2, 3, 4, 6] - POSCHARGE: received 1 protonations for this specie - - POSCHARGE: doing PROTONATION with added atoms: 1 - POSCHARGE will try charges [0, -1, 1, -2, 2] - POSCHARGE: charge 0 with smiles [H]C1=C([H])C([H])([H])C([H])=C1[H] - POSCHARGE: charge -1 with smiles [H][C+]1[C-]([H])[C-]([H])C([H])([H])[C-]1[H] - POSCHARGE: charge 1 with smiles [H][C+]1[C-]([H])[C+]([H])C([H])([H])[C-]1[H] - POSCHARGE: charge -2 with smiles [H][C+]1[C-]([H])[C-]([H])[C-]([H])C1([H])[H] - POSCHARGE: charge 2 with smiles [H][C+]1[C+]([H])C([H])([H])[C+]([H])[C-]1[H] - NEW SELECT FUNCTION: uncorr_total: [0, -2, 0, -2, 2] - NEW SELECT FUNCTION: uncorr_abs_total: [0, 2, 0, 2, 2] - NEW SELECT FUNCTION: uncorr_abs_atcharge: [0, 4, 4, 4, 4] - NEW SELECT FUNCTION: uncorr_zwitt: [False, True, True, True, True] - NEW SELECT FUNCTION: coincide: [True, False, False, True, True] - NEW SELECT FUNCTION: listofmintot: [0, 2] - NEW SELECT FUNCTION: listofminabs: [0] - NEW SELECT FUNCTION: tmplist: [0], including: - NEW SELECT FUNCTION: Corr_charge=-1 - NEW SELECT FUNCTION: Smiles=[H]C1=C([H])C([H])([H])C([H])=C1[H] - NEW SELECT FUNCTION: found corr_charges=[-1] - NEW SELECT FUNCTION: doing tgt_charge=-1 - NEW SELECT FUNCTION: charge_state added - NEW SELECT FUNCTION: Case 1, only one entry for -1 in tmplist - POSCHARGE. poscharge added with corrected charge: -1 and uncorrected: 0 - POSCHARGE. poscharge added with smiles: [H]C1=C([H])C([H])([H])C([H])=C1[H] -Charge state and protonation received for molecule 1 - - --------------- - #### Metal #### - --------------- - Hg coordination_sphere ['C', 'Cl'] - Hg coordinating_atoms ['C', 'Cl'] -Possible charges received for metal: [2] - - --------------- - #### Metal #### - --------------- - Fe coordination_sphere ['C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C'] - Fe coordinating_atoms ['C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C'] -Possible charges received for metal: [2, 3, 0] -BALANCE: iterlist [[-1], [-1], [2], [-2], [-1], [2], [2, 3, 0]] -BALANCE: unique_indices [0, 0, 1, 0, 0, 1, 2, 2, 3, 4, 0, 5, 6, 3, 4, 0, 5, 6] -BALANCE: tmpdistr [(-1, -1, 2, -2, -1, 2, 2), (-1, -1, 2, -2, -1, 2, 3), (-1, -1, 2, -2, -1, 2, 0)] -BALANCE: alldistr added: [-1, -1, -1, -1, -1, -1, 2, 2, -2, -1, -1, 2, 2, -2, -1, -1, 2, 2] -BALANCE: alldistr added: [-1, -1, -1, -1, -1, -1, 2, 2, -2, -1, -1, 2, 3, -2, -1, -1, 2, 3] -BALANCE: alldistr added: [-1, -1, -1, -1, -1, -1, 2, 2, -2, -1, -1, 2, 0, -2, -1, -1, 2, 0] -final_charge_distribution [[-1, -1, -1, -1, -1, -1, 2, 2, -2, -1, -1, 2, 3, -2, -1, -1, 2, 3]] - -FINAL Charge Distribution: [[-1, -1, -1, -1, -1, -1, 2, 2, -2, -1, -1, 2, 3, -2, -1, -1, 2, 3]] - -######################################### -Assigning Charges and Preparing Molecules -######################################### -PREPARE: 7 selected_charge_states received - -PREPARE: 3 molecules to prepare, of types -PREPARE: Molecule 0 is a Complex with formula Cl6-Hg2 -PREPARE: Molecule 1 is a Complex with formula H9-C10-Cl-Fe-Hg -PREPARE: Molecule 2 is a Complex with formula H9-C10-Cl-Fe-Hg - -PREPARE: State 0 and option 0. Target state and protonation received with -1 and 1 -PREPARE: State 1 and option 0. Target state and protonation received with -1 and 1 -PREPARE: State 3 and option 0. Target state and protonation received with -2 and 1 -PREPARE: State 4 and option 0. Target state and protonation received with -1 and 1 - -PREPARE: Molecule 0 is a Complex with formula Cl6-Hg2 -PREPARE: Molecule 0 has 6 ligands - -PREPARE: Ligand 0, formula: Cl is specie 0 -PREPARE: Ligand poscharges: [-1] -PREPARE: Doing ligand 0 with idxtoallocate 0 -PREPARE: Doing -1 of options [-1]. jdx=0 -PREPARE: Found Target Prot State with 1 added atoms and 0 OS -PREPARE: addedlist of Target Prot State: [1] -PREPARE: evaluating prot state with added_atoms=1 -PREPARE: tmp_addedlist=[1] -PREPARE: found match in protonation with tmpsmiles: -PREPARE: Sending getcharge with prot.added_atoms=1 to obtain charge -1 -PREPARE: Wanted charge -1, obtained: -1 -PREPARE: smiles: [H]Cl -PREPARE: Success doing ligand 0. Created Charge State with total_charge=-1 - -PREPARE: Ligand 1, formula: Cl is specie 0 -PREPARE: Ligand poscharges: [-1] -PREPARE: Doing ligand 1 with idxtoallocate 1 -PREPARE: Doing -1 of options [-1]. jdx=0 -PREPARE: Found Target Prot State with 1 added atoms and 0 OS -PREPARE: addedlist of Target Prot State: [1] -PREPARE: evaluating prot state with added_atoms=1 -PREPARE: tmp_addedlist=[1] -PREPARE: found match in protonation with tmpsmiles: -PREPARE: Sending getcharge with prot.added_atoms=1 to obtain charge -1 -PREPARE: Wanted charge -1, obtained: -1 -PREPARE: smiles: [H]Cl -PREPARE: Success doing ligand 1. Created Charge State with total_charge=-1 - -PREPARE: Ligand 2, formula: Cl is specie 1 -PREPARE: Ligand poscharges: [-1] -PREPARE: Doing ligand 2 with idxtoallocate 2 -PREPARE: Doing -1 of options [-1]. jdx=0 -PREPARE: Found Target Prot State with 1 added atoms and 0 OS -PREPARE: addedlist of Target Prot State: [1] -PREPARE: evaluating prot state with added_atoms=1 -PREPARE: tmp_addedlist=[1] -PREPARE: found match in protonation with tmpsmiles: -PREPARE: Sending getcharge with prot.added_atoms=1 to obtain charge -1 -PREPARE: Wanted charge -1, obtained: -1 -PREPARE: smiles: [H]Cl -PREPARE: Success doing ligand 2. Created Charge State with total_charge=-1 - -PREPARE: Ligand 3, formula: Cl is specie 0 -PREPARE: Ligand poscharges: [-1] -PREPARE: Doing ligand 3 with idxtoallocate 3 -PREPARE: Doing -1 of options [-1]. jdx=0 -PREPARE: Found Target Prot State with 1 added atoms and 0 OS -PREPARE: addedlist of Target Prot State: [1] -PREPARE: evaluating prot state with added_atoms=1 -PREPARE: tmp_addedlist=[1] -PREPARE: found match in protonation with tmpsmiles: -PREPARE: Sending getcharge with prot.added_atoms=1 to obtain charge -1 -PREPARE: Wanted charge -1, obtained: -1 -PREPARE: smiles: [H]Cl -PREPARE: Success doing ligand 3. Created Charge State with total_charge=-1 - -PREPARE: Ligand 4, formula: Cl is specie 0 -PREPARE: Ligand poscharges: [-1] -PREPARE: Doing ligand 4 with idxtoallocate 4 -PREPARE: Doing -1 of options [-1]. jdx=0 -PREPARE: Found Target Prot State with 1 added atoms and 0 OS -PREPARE: addedlist of Target Prot State: [1] -PREPARE: evaluating prot state with added_atoms=1 -PREPARE: tmp_addedlist=[1] -PREPARE: found match in protonation with tmpsmiles: -PREPARE: Sending getcharge with prot.added_atoms=1 to obtain charge -1 -PREPARE: Wanted charge -1, obtained: -1 -PREPARE: smiles: [H]Cl -PREPARE: Success doing ligand 4. Created Charge State with total_charge=-1 - -PREPARE: Ligand 5, formula: Cl is specie 1 -PREPARE: Ligand poscharges: [-1] -PREPARE: Doing ligand 5 with idxtoallocate 5 -PREPARE: Doing -1 of options [-1]. jdx=0 -PREPARE: Found Target Prot State with 1 added atoms and 0 OS -PREPARE: addedlist of Target Prot State: [1] -PREPARE: evaluating prot state with added_atoms=1 -PREPARE: tmp_addedlist=[1] -PREPARE: found match in protonation with tmpsmiles: -PREPARE: Sending getcharge with prot.added_atoms=1 to obtain charge -1 -PREPARE: Wanted charge -1, obtained: -1 -PREPARE: smiles: [H]Cl -PREPARE: Success doing ligand 5. Created Charge State with total_charge=-1 - -PREPARE: Metal 0, label Hg is specie 2 -PREPARE: Metal poscharges: [2] - -PREPARE: Metal 1, label Hg is specie 2 -PREPARE: Metal poscharges: [2] -PREPARE: Building Molecule 0 From Ligand&Metal Information - -PREPARE: Molecule 1 is a Complex with formula H9-C10-Cl-Fe-Hg -PREPARE: Molecule 1 has 3 ligands - -PREPARE: Ligand 0, formula: H4-C5 is specie 3 -PREPARE: Ligand poscharges: [-2] -PREPARE: Doing ligand 0 with idxtoallocate 8 -PREPARE: Doing -2 of options [-2]. jdx=0 -PREPARE: Found Target Prot State with 1 added atoms and 0 OS -PREPARE: addedlist of Target Prot State: [0 1 0 0 0 0 0 0 0] -PREPARE: evaluating prot state with added_atoms=1 -PREPARE: tmp_addedlist=[0 1 0 0 0 0 0 0 0] -PREPARE: found match in protonation with tmpsmiles: -PREPARE: Sending getcharge with prot.added_atoms=1 to obtain charge -2 -PREPARE: Wanted charge -2, obtained: -2 -PREPARE: smiles: [H]C1=[C-]C([H])([H])C([H])=C1[H] -PREPARE: Success doing ligand 0. Created Charge State with total_charge=-2 - -PREPARE: Ligand 1, formula: H5-C5 is specie 4 -PREPARE: Ligand poscharges: [-1] -PREPARE: Doing ligand 1 with idxtoallocate 9 -PREPARE: Doing -1 of options [-1]. jdx=0 -PREPARE: Found Target Prot State with 1 added atoms and 0 OS -PREPARE: addedlist of Target Prot State: [1 0 0 0 0 0 0 0 0 0] -PREPARE: evaluating prot state with added_atoms=1 -PREPARE: tmp_addedlist=[1 0 0 0 0 0 0 0 0 0] -PREPARE: found match in protonation with tmpsmiles: -PREPARE: Sending getcharge with prot.added_atoms=1 to obtain charge -1 -PREPARE: Wanted charge -1, obtained: -1 -PREPARE: smiles: [H]C1=C([H])C([H])([H])C([H])=C1[H] -PREPARE: Success doing ligand 1. Created Charge State with total_charge=-1 - -PREPARE: Ligand 2, formula: Cl is specie 0 -PREPARE: Ligand poscharges: [-1] -PREPARE: Doing ligand 2 with idxtoallocate 10 -PREPARE: Doing -1 of options [-1]. jdx=0 -PREPARE: Found Target Prot State with 1 added atoms and 0 OS -PREPARE: addedlist of Target Prot State: [1] -PREPARE: evaluating prot state with added_atoms=1 -PREPARE: tmp_addedlist=[1] -PREPARE: found match in protonation with tmpsmiles: -PREPARE: Sending getcharge with prot.added_atoms=1 to obtain charge -1 -PREPARE: Wanted charge -1, obtained: -1 -PREPARE: smiles: [H]Cl -PREPARE: Success doing ligand 2. Created Charge State with total_charge=-1 - -PREPARE: Metal 0, label Hg is specie 5 -PREPARE: Metal poscharges: [2] - -PREPARE: Metal 1, label Fe is specie 6 -PREPARE: Metal poscharges: [2, 3, 0] -PREPARE: Building Molecule 1 From Ligand&Metal Information - -PREPARE: Molecule 2 is a Complex with formula H9-C10-Cl-Fe-Hg -PREPARE: Molecule 2 has 3 ligands - -PREPARE: Ligand 0, formula: H4-C5 is specie 3 -PREPARE: Ligand poscharges: [-2] -PREPARE: Doing ligand 0 with idxtoallocate 13 -PREPARE: Doing -2 of options [-2]. jdx=0 -PREPARE: Found Target Prot State with 1 added atoms and 0 OS -PREPARE: addedlist of Target Prot State: [0 1 0 0 0 0 0 0 0] -PREPARE: evaluating prot state with added_atoms=1 -PREPARE: tmp_addedlist=[0 1 0 0 0 0 0 0 0] -PREPARE: found match in protonation with tmpsmiles: -PREPARE: Sending getcharge with prot.added_atoms=1 to obtain charge -2 -PREPARE: Wanted charge -2, obtained: -2 -PREPARE: smiles: [H]C1=[C-]C([H])([H])C([H])=C1[H] -PREPARE: Success doing ligand 0. Created Charge State with total_charge=-2 - -PREPARE: Ligand 1, formula: H5-C5 is specie 4 -PREPARE: Ligand poscharges: [-1] -PREPARE: Doing ligand 1 with idxtoallocate 14 -PREPARE: Doing -1 of options [-1]. jdx=0 -PREPARE: Found Target Prot State with 1 added atoms and 0 OS -PREPARE: addedlist of Target Prot State: [1 0 0 0 0 0 0 0 0 0] -PREPARE: evaluating prot state with added_atoms=1 -PREPARE: tmp_addedlist=[1 0 0 0 0 0 0 0 0 0] -PREPARE: found match in protonation with tmpsmiles: -PREPARE: Sending getcharge with prot.added_atoms=1 to obtain charge -1 -PREPARE: Wanted charge -1, obtained: -1 -PREPARE: smiles: [H]C1=C([H])C([H])([H])C([H])=C1[H] -PREPARE: Success doing ligand 1. Created Charge State with total_charge=-1 - -PREPARE: Ligand 2, formula: Cl is specie 0 -PREPARE: Ligand poscharges: [-1] -PREPARE: Doing ligand 2 with idxtoallocate 15 -PREPARE: Doing -1 of options [-1]. jdx=0 -PREPARE: Found Target Prot State with 1 added atoms and 0 OS -PREPARE: addedlist of Target Prot State: [1] -PREPARE: evaluating prot state with added_atoms=1 -PREPARE: tmp_addedlist=[1] -PREPARE: found match in protonation with tmpsmiles: -PREPARE: Sending getcharge with prot.added_atoms=1 to obtain charge -1 -PREPARE: Wanted charge -1, obtained: -1 -PREPARE: smiles: [H]Cl -PREPARE: Success doing ligand 2. Created Charge State with total_charge=-1 - -PREPARE: Metal 0, label Hg is specie 5 -PREPARE: Metal poscharges: [2] - -PREPARE: Metal 1, label Fe is specie 6 -PREPARE: Metal poscharges: [2, 3, 0] -PREPARE: Building Molecule 2 From Ligand&Metal Information - -Total execution time for Charge Assignment: 0.02 seconds -Charge Assignment successfully finished. - -######################################### -Assigning spin multiplicity -######################################### -mol.type='Complex', mol.formula='Cl6-Hg2', mol.spin=1 - lig.formula='Cl' - lig.formula='Cl' - lig.formula='Cl' - lig.formula='Cl' - lig.formula='Cl' - lig.formula='Cl' -mol.type='Complex', mol.formula='H9-C10-Cl-Fe-Hg', mol.spin=2 - lig.formula='H4-C5', lig.spin=1 - lig.formula='H5-C5', lig.spin=1 - lig.formula='Cl' -mol.type='Complex', mol.formula='H9-C10-Cl-Fe-Hg', mol.spin=2 - lig.formula='H4-C5', lig.spin=1 - lig.formula='H5-C5', lig.spin=1 - lig.formula='Cl' -=====================================Charges for all species in the unit cell===================================== -[Ref.code] : BACZUB - -Complex, totcharge -2, spin multiplicity 1 - Metal: Hg charge 2 - Metal: Hg charge 2 - Ligand charge -1, [Cl-] - Ligand charge -1, [Cl-] - Ligand charge -1, [Cl-] - Ligand charge -1, [Cl-] - Ligand charge -1, [Cl-] - Ligand charge -1, [Cl-] - -Complex, totcharge 1, spin multiplicity 2 - Metal: Hg charge 2 - Metal: Fe charge 3 - Ligand charge -2, [H]C1=[C-][C-]([H])C([H])=C1[H] - Ligand charge -1, [H]C1=C([H])[C-]([H])C([H])=C1[H] - Ligand charge -1, [Cl-] - -Complex, totcharge 1, spin multiplicity 2 - Metal: Hg charge 2 - Metal: Fe charge 3 - Ligand charge -2, [H]C1=[C-][C-]([H])C([H])=C1[H] - Ligand charge -1, [H]C1=C([H])[C-]([H])C([H])=C1[H] - Ligand charge -1, [Cl-] - - -The Warning type list is : [False, False, False, False, False, False, False, False, False] -No Warnings! - -[Output files] -Output file path /Users/ycho/Projects/Update_cell2mol/test/BACZUB/Cell_BACZUB.gmol diff --git a/cell2mol/test/BUSVOC/BUSVOC.cif b/cell2mol/test/BUSVOC/BUSVOC.cif deleted file mode 100644 index 9bc4dce23..000000000 --- a/cell2mol/test/BUSVOC/BUSVOC.cif +++ /dev/null @@ -1,349 +0,0 @@ - -####################################################################### -# -# Cambridge Crystallographic Data Centre -# CCDC -# -####################################################################### -# -# If this CIF has been generated from an entry in the Cambridge -# Structural Database, then it will include bibliographic, chemical, -# crystal, experimental, refinement or atomic coordinate data resulting -# from the CCDC's data processing and validation procedures. -# -####################################################################### - -data_CSD_CIF_BUSVOC -_audit_creation_date 2015-08-06 -_audit_creation_method CSD-ConQuest-V1 -_database_code_CSD BUSVOC -_database_code_depnum_ccdc_archive 'CCDC 1063650' -_chemical_formula_sum 'C53 H63 Br2 Fe1 N3' -_chemical_formula_moiety -; -C37 H27 Br2 Fe1 N2 1-,C16 H36 N1 1+ -; -_journal_coden_Cambridge 579 -_journal_volume 34 -_journal_year 2015 -_journal_page_first 3079 -_journal_name_full 'Organometallics ' -loop_ -_publ_author_name -"C.Lichtenberg" -"M.Adelhardt" -"M.Worle" -"T.Buttner" -"K.Meyer" -"H.Grutzmacher" -_chemical_name_systematic -; -tetra-n-butylammonium -(N,N'-bis(5H-dibenzo[a,d][7]annulen-5-yl)benzamidinato)-dibromo-iron(ii) -; -_cell_volume 9636.200 -_exptl_crystal_colour 'colorless' -_exptl_crystal_density_diffrn 1.32 -_exptl_special_details -; -Magnetic properties -Air-sensitive, Moisture-sensitive - -; -_exptl_crystal_description 'plate' -_diffrn_ambient_temperature 101.9 -#These two values have been output from a single CSD field. -_refine_ls_R_factor_gt 0.0324 -_refine_ls_wR_factor_gt 0.0324 -_symmetry_cell_setting monoclinic -_symmetry_space_group_name_H-M 'C 2/c' -_symmetry_Int_Tables_number 15 -loop_ -_symmetry_equiv_pos_site_id -_symmetry_equiv_pos_as_xyz -1 x,y,z -2 -x,y,1/2-z -3 1/2+x,1/2+y,z -4 1/2-x,1/2+y,1/2-z -5 -x,-y,-z -6 x,-y,-1/2+z -7 -1/2-x,-1/2-y,-z -8 -1/2+x,-1/2-y,-1/2+z -_cell_length_a 40.2430(12) -_cell_length_b 15.3735(4) -_cell_length_c 17.0453(5) -_cell_angle_alpha 90 -_cell_angle_beta 113.968(4) -_cell_angle_gamma 90 -_cell_formula_units_Z 8 -loop_ -_atom_type_symbol -_atom_type_radius_bond -C 0.68 -H 0.23 -Br 1.21 -Fe 1.52 -N 0.68 -loop_ -_atom_site_label -_atom_site_type_symbol -_atom_site_fract_x -_atom_site_fract_y -_atom_site_fract_z -Br1 Br 0.147200(6) 0.558030(12) 0.246868(12) -Br2 Br 0.216479(5) 0.740647(14) 0.252382(12) -Fe1 Fe 0.154469(7) 0.711310(16) 0.227702(15) -C1 C 0.07302(4) 0.88322(11) 0.16778(10) -C2 C 0.15499(5) 0.85625(11) 0.41758(10) -C3 C 0.10319(4) 0.81853(11) 0.18928(10) -C4 C 0.07707(5) 0.96584(12) 0.13957(11) -H1 H 0.09840 0.98040 0.13370 -C5 C 0.11957(4) 0.83581(11) 0.34128(10) -H2 H 0.10700 0.89130 0.32100 -C6 C 0.15384(5) 0.91639(11) 0.47886(10) -C7 C 0.06518(5) 0.70521(12) 0.00278(11) -C8 C 0.04114(5) 0.86216(13) 0.17637(11) -H3 H 0.03820 0.80700 0.19500 -C9 C 0.08698(5) 0.69436(12) 0.34593(12) -H4 H 0.09760 0.66770 0.31290 -C10 C 0.05218(5) 0.84080(13) -0.14236(11) -H5 H 0.04260 0.88640 -0.18080 -C11 C 0.01972(6) 0.56033(16) -0.06298(15) -H6 H 0.00490 0.51220 -0.08510 -C12 C 0.09193(5) 0.83748(12) -0.09833(11) -C13 C 0.07966(5) 0.82026(12) 0.42257(11) -C14 C 0.04873(6) 0.55594(14) 0.01666(14) -H7 H 0.05340 0.50460 0.04820 -C15 C 0.03588(5) 0.70941(13) -0.07853(11) -C16 C 0.11232(6) 0.86490(12) -0.14352(12) -H8 H 0.10030 0.88520 -0.19940 -C17 C 0.02813(5) 0.78622(14) -0.13381(11) -H9 H 0.00370 0.79830 -0.16660 -C18 C 0.01359(5) 0.92358(15) 0.15706(13) -H10 H -0.00770 0.90960 0.16340 -C19 C 0.01318(5) 0.63658(15) -0.10889(13) -H11 H -0.00680 0.64000 -0.16140 -C20 C 0.07074(5) 0.62812(13) 0.04919(12) -H12 H 0.08970 0.62490 0.10340 -C21 C 0.11017(5) 0.80886(11) -0.01269(10) -C22 C 0.08807(5) 0.90948(12) 0.45471(11) -H13 H 0.06920 0.94070 0.45950 -C23 C 0.14805(5) 0.80762(11) 0.02334(11) -H14 H 0.16040 0.78910 0.07980 -C24 C 0.11985(5) 0.95121(12) 0.47801(11) -H15 H 0.12040 1.00870 0.49560 -C25 C 0.14964(6) 0.86253(13) -0.10729(13) -H16 H 0.16270 0.88020 -0.13860 -C26 C 0.04934(6) 1.02679(13) 0.12006(12) -H17 H 0.05210 1.08200 0.10130 -C27 C 0.01765(6) 1.00519(15) 0.12860(13) -H18 H -0.00100 1.04580 0.11510 -C28 C 0.05479(5) 0.77229(13) 0.44372(13) -H19 H 0.04360 0.79850 0.47580 -C29 C 0.06288(5) 0.64754(13) 0.36927(13) -H20 H 0.05770 0.58980 0.35240 -N1 N 0.12505(4) 0.79722(9) 0.26954(8) -N2 N 0.11131(4) 0.77767(10) 0.13045(9) -C30 C 0.09543(5) 0.78100(11) 0.37142(10) -C31 C 0.08832(5) 0.78621(11) 0.03927(10) -H21 H 0.07160 0.83460 0.03290 -C32 C 0.18827(5) 0.82022(11) 0.42845(11) -H22 H 0.18930 0.77980 0.38890 -C33 C 0.18632(5) 0.94219(12) 0.54553(11) -H23 H 0.18580 0.98500 0.58360 -C34 C 0.22002(5) 0.84387(12) 0.49760(11) -H24 H 0.24200 0.81820 0.50470 -C35 C 0.21918(5) 0.90552(12) 0.55616(11) -H25 H 0.24050 0.92190 0.60200 -C36 C 0.16773(5) 0.83341(12) -0.02307(12) -H26 H 0.19300 0.83130 0.00200 -C37 C 0.04659(6) 0.68695(14) 0.41779(14) -H27 H 0.03020 0.65600 0.43280 -C38 C 0.21535(5) 0.60597(12) -0.03761(11) -H28 H 0.23850 0.61480 0.01060 -H29 H 0.19830 0.64860 -0.03350 -C39 C 0.21999(5) 0.61973(13) -0.12138(12) -H30 H 0.24060 0.58610 -0.11990 -H31 H 0.19850 0.59880 -0.16910 -C40 C 0.16098(6) 0.37988(12) 0.09681(13) -H32 H 0.13610 0.40100 0.07240 -H33 H 0.17340 0.40650 0.15280 -C41 C 0.22587(6) 0.71492(14) -0.13542(14) -H34 H 0.20530 0.74820 -0.13780 -H35 H 0.22870 0.72140 -0.18850 -H36 H 0.24740 0.73550 -0.08890 -C42 C 0.20146(5) 0.51525(12) -0.03282(11) -H37 H 0.22090 0.47400 -0.02410 -H38 H 0.18180 0.50180 -0.08760 -C43 C 0.17980(5) 0.40572(11) 0.03919(11) -H39 H 0.16470 0.38740 -0.01890 -H40 H 0.20250 0.37400 0.05740 -C44 C 0.16099(6) 0.28171(13) 0.10666(13) -H41 H 0.18590 0.26160 0.13580 -H42 H 0.15080 0.25520 0.05020 -C45 C 0.13930(7) 0.25232(15) 0.15692(15) -H43 H 0.14930 0.27820 0.21300 -H44 H 0.14050 0.19010 0.16230 -H45 H 0.11440 0.27000 0.12720 -C46 C 0.25294(5) 0.48531(13) 0.15225(12) -H46 H 0.25110 0.42770 0.17320 -H47 H 0.25940 0.47890 0.10350 -C47 C 0.21656(5) 0.53150(12) 0.12403(11) -H48 H 0.22050 0.59350 0.12140 -H49 H 0.20710 0.52230 0.16740 -C48 C 0.28243(5) 0.53638(14) 0.22255(12) -H50 H 0.27550 0.54410 0.27040 -H51 H 0.28440 0.59360 0.20080 -N3 N 0.18795(4) 0.50237(9) 0.03759(9) -C49 C 0.31919(5) 0.49146(14) 0.25424(13) -H52 H 0.31770 0.43620 0.27890 -H53 H 0.33710 0.52700 0.29690 -H54 H 0.32600 0.48280 0.20700 -C50 C 0.15408(5) 0.55689(12) 0.02048(11) -H55 H 0.16100 0.61780 0.02650 -H56 H 0.14540 0.54370 0.06450 -C51 C 0.12259(5) 0.54438(12) -0.06724(11) -H57 H 0.10000 0.54440 -0.05930 -H58 H 0.12510 0.48750 -0.08900 -C52 C 0.11957(5) 0.61242(13) -0.13527(12) -H59 H 0.12160 0.67010 -0.11060 -H60 H 0.13950 0.60480 -0.15280 -C53 C 0.08366(6) 0.60536(17) -0.21372(13) -H61 H 0.08190 0.54910 -0.23950 -H62 H 0.08260 0.64960 -0.25450 -H63 H 0.06390 0.61300 -0.19660 -loop_ -_geom_bond_atom_site_label_1 -_geom_bond_atom_site_label_2 -_geom_bond_distance -_geom_bond_site_symmetry_1 -_geom_bond_site_symmetry_2 -Br1 Fe1 2.413 1_555 1_555 -Br2 Fe1 2.399 1_555 1_555 -Fe1 N1 2.083 1_555 1_555 -C1 C3 1.495 1_555 1_555 -C2 C5 1.522 1_555 1_555 -C3 N1 1.332 1_555 1_555 -C4 C1 1.391 1_555 1_555 -H1 C4 0.931 1_555 1_555 -C5 H2 0.980 1_555 1_555 -C6 C2 1.410 1_555 1_555 -C7 C15 1.410 1_555 1_555 -C8 C1 1.387 1_555 1_555 -H3 C8 0.930 1_555 1_555 -C9 H4 0.929 1_555 1_555 -C10 H5 0.930 1_555 1_555 -C11 H6 0.929 1_555 1_555 -C12 C10 1.466 1_555 1_555 -C13 C22 1.465 1_555 1_555 -C14 C11 1.387 1_555 1_555 -H7 C14 0.930 1_555 1_555 -C15 C17 1.463 1_555 1_555 -C16 C12 1.399 1_555 1_555 -H8 C16 0.930 1_555 1_555 -C17 C10 1.333 1_555 1_555 -H9 C17 0.931 1_555 1_555 -C18 C8 1.390 1_555 1_555 -H10 C18 0.931 1_555 1_555 -C19 C11 1.374 1_555 1_555 -H11 C19 0.930 1_555 1_555 -C20 C7 1.392 1_555 1_555 -H12 C20 0.930 1_555 1_555 -C21 C12 1.412 1_555 1_555 -C22 H13 0.930 1_555 1_555 -C23 C21 1.393 1_555 1_555 -H14 C23 0.930 1_555 1_555 -C24 C6 1.463 1_555 1_555 -H15 C24 0.931 1_555 1_555 -C25 C16 1.373 1_555 1_555 -H16 C25 0.929 1_555 1_555 -C26 C4 1.390 1_555 1_555 -H17 C26 0.929 1_555 1_555 -C27 C18 1.379 1_555 1_555 -H18 C27 0.930 1_555 1_555 -C28 C13 1.403 1_555 1_555 -H19 C28 0.930 1_555 1_555 -C29 C9 1.389 1_555 1_555 -H20 C29 0.930 1_555 1_555 -N1 C5 1.454 1_555 1_555 -N2 Fe1 2.113 1_555 1_555 -C30 C5 1.524 1_555 1_555 -C31 C7 1.528 1_555 1_555 -H21 C31 0.979 1_555 1_555 -C32 C2 1.390 1_555 1_555 -H22 C32 0.930 1_555 1_555 -C33 C6 1.397 1_555 1_555 -H23 C33 0.930 1_555 1_555 -C34 C32 1.389 1_555 1_555 -H24 C34 0.930 1_555 1_555 -C35 C33 1.380 1_555 1_555 -H25 C35 0.930 1_555 1_555 -C36 C23 1.385 1_555 1_555 -H26 C36 0.930 1_555 1_555 -C37 C28 1.381 1_555 1_555 -H27 C37 0.930 1_555 1_555 -C38 H28 0.969 1_555 1_555 -H29 C38 0.972 1_555 1_555 -C39 C38 1.528 1_555 1_555 -H30 C39 0.969 1_555 1_555 -H31 C39 0.970 1_555 1_555 -C40 H32 0.971 1_555 1_555 -H33 C40 0.970 1_555 1_555 -C41 C39 1.517 1_555 1_555 -H34 C41 0.960 1_555 1_555 -H35 C41 0.962 1_555 1_555 -H36 C41 0.960 1_555 1_555 -C42 C38 1.517 1_555 1_555 -H37 C42 0.970 1_555 1_555 -H38 C42 0.970 1_555 1_555 -C43 C40 1.517 1_555 1_555 -H39 C43 0.970 1_555 1_555 -H40 C43 0.969 1_555 1_555 -C44 C40 1.519 1_555 1_555 -H41 C44 0.971 1_555 1_555 -H42 C44 0.969 1_555 1_555 -C45 C44 1.519 1_555 1_555 -H43 C45 0.960 1_555 1_555 -H44 C45 0.960 1_555 1_555 -H45 C45 0.960 1_555 1_555 -C46 H46 0.969 1_555 1_555 -H47 C46 0.971 1_555 1_555 -C47 C46 1.519 1_555 1_555 -H48 C47 0.970 1_555 1_555 -H49 C47 0.970 1_555 1_555 -C48 C46 1.518 1_555 1_555 -H50 C48 0.971 1_555 1_555 -H51 C48 0.970 1_555 1_555 -N3 C42 1.518 1_555 1_555 -C49 C48 1.519 1_555 1_555 -H52 C49 0.960 1_555 1_555 -H53 C49 0.960 1_555 1_555 -H54 C49 0.959 1_555 1_555 -C50 N3 1.524 1_555 1_555 -H55 C50 0.970 1_555 1_555 -H56 C50 0.969 1_555 1_555 -C51 C50 1.529 1_555 1_555 -H57 C51 0.972 1_555 1_555 -H58 C51 0.971 1_555 1_555 -C52 C51 1.529 1_555 1_555 -H59 C52 0.971 1_555 1_555 -H60 C52 0.970 1_555 1_555 -C53 C52 1.523 1_555 1_555 -H61 C53 0.960 1_555 1_555 -H62 C53 0.961 1_555 1_555 -H63 C53 0.959 1_555 1_555 -C3 N2 1.332 1_555 1_555 -C9 C30 1.399 1_555 1_555 -C13 C30 1.406 1_555 1_555 -C14 C20 1.387 1_555 1_555 -C15 C19 1.404 1_555 1_555 -C21 C31 1.520 1_555 1_555 -C22 C24 1.339 1_555 1_555 -C25 C36 1.394 1_555 1_555 -C26 C27 1.382 1_555 1_555 -C29 C37 1.386 1_555 1_555 -N2 C31 1.456 1_555 1_555 -C34 C35 1.387 1_555 1_555 -C43 N3 1.524 1_555 1_555 -C47 N3 1.523 1_555 1_555 -#END diff --git a/cell2mol/test/BUSVOC/BUSVOC.info b/cell2mol/test/BUSVOC/BUSVOC.info deleted file mode 100644 index c95c548f7..000000000 --- a/cell2mol/test/BUSVOC/BUSVOC.info +++ /dev/null @@ -1,649 +0,0 @@ -CIF2CELL 2.0.0 -2024-04-18 17:15 -Output for None (tetra-n-butylammonium -(N,N'-bis(5H-dibenzo[a,d][7]annulen-5-yl)benzamidinato)-dibromo-iron(ii)) -CIF file exported from Cambridge Structural Database. -Database reference code: BUSVOC. - BIBLIOGRAPHIC INFORMATION -C.Lichtenberg et al., Organometallics 34, 3079- (2015) - INPUT CELL INFORMATION -Symmetry information: -Monoclinic crystal system. -Space group number : 15 -Hall symbol : -C 2yc -Hermann-Mauguin symbol : C2/c - -Lattice parameters: - a b c - 40.2430000 15.3735000 17.0453000 - alpha beta gamma - 90.0000000 113.9680000 90.0000000 -Representative sites : -Atom x y z -Br 0.1472000 0.5580300 0.2468680 -Br 0.2164790 0.7406470 0.2523820 -Fe 0.1544690 0.7113100 0.2277020 -C 0.0730200 0.8832200 0.1677800 -C 0.1549900 0.8562500 0.4175800 -C 0.1031900 0.8185300 0.1892800 -C 0.0770700 0.9658400 0.1395700 -H 0.0984000 0.9804000 0.1337000 -C 0.1195700 0.8358100 0.3412800 -H 0.1070000 0.8913000 0.3210000 -C 0.1538400 0.9163900 0.4788600 -C 0.0651800 0.7052100 0.0027800 -C 0.0411400 0.8621600 0.1763700 -H 0.0382000 0.8070000 0.1950000 -C 0.0869800 0.6943600 0.3459300 -H 0.0976000 0.6677000 0.3129000 -C 0.0521800 0.8408000 -0.1423600 -H 0.0426000 0.8864000 -0.1808000 -C 0.0197200 0.5603300 -0.0629800 -H 0.0049000 0.5122000 -0.0851000 -C 0.0919300 0.8374800 -0.0983300 -C 0.0796600 0.8202600 0.4225700 -C 0.0487300 0.5559400 0.0166600 -H 0.0534000 0.5046000 0.0482000 -C 0.0358800 0.7094100 -0.0785300 -C 0.1123200 0.8649000 -0.1435200 -H 0.1003000 0.8852000 -0.1994000 -C 0.0281300 0.7862200 -0.1338100 -H 0.0037000 0.7983000 -0.1666000 -C 0.0135900 0.9235800 0.1570600 -H -0.0077000 0.9096000 0.1634000 -C 0.0131800 0.6365800 -0.1088900 -H -0.0068000 0.6400000 -0.1614000 -C 0.0707400 0.6281200 0.0491900 -H 0.0897000 0.6249000 0.1034000 -C 0.1101700 0.8088600 -0.0126900 -C 0.0880700 0.9094800 0.4547100 -H 0.0692000 0.9407000 0.4595000 -C 0.1480500 0.8076200 0.0233400 -H 0.1604000 0.7891000 0.0798000 -C 0.1198500 0.9512100 0.4780100 -H 0.1204000 1.0087000 0.4956000 -C 0.1496400 0.8625300 -0.1072900 -H 0.1627000 0.8802000 -0.1386000 -C 0.0493400 1.0267900 0.1200600 -H 0.0521000 1.0820000 0.1013000 -C 0.0176500 1.0051900 0.1286000 -H -0.0010000 1.0458000 0.1151000 -C 0.0547900 0.7722900 0.4437200 -H 0.0436000 0.7985000 0.4758000 -C 0.0628800 0.6475400 0.3692700 -H 0.0577000 0.5898000 0.3524000 -N 0.1250500 0.7972200 0.2695400 -N 0.1113100 0.7776700 0.1304500 -C 0.0954300 0.7810000 0.3714200 -C 0.0883200 0.7862100 0.0392700 -H 0.0716000 0.8346000 0.0329000 -C 0.1882700 0.8202200 0.4284500 -H 0.1893000 0.7798000 0.3889000 -C 0.1863200 0.9421900 0.5455300 -H 0.1858000 0.9850000 0.5836000 -C 0.2200200 0.8438700 0.4976000 -H 0.2420000 0.8182000 0.5047000 -C 0.2191800 0.9055200 0.5561600 -H 0.2405000 0.9219000 0.6020000 -C 0.1677300 0.8334100 -0.0230700 -H 0.1930000 0.8313000 0.0020000 -C 0.0465900 0.6869500 0.4177900 -H 0.0302000 0.6560000 0.4328000 -C 0.2153500 0.6059700 -0.0376100 -H 0.2385000 0.6148000 0.0106000 -H 0.1983000 0.6486000 -0.0335000 -C 0.2199900 0.6197300 -0.1213800 -H 0.2406000 0.5861000 -0.1199000 -H 0.1985000 0.5988000 -0.1691000 -C 0.1609800 0.3798800 0.0968100 -H 0.1361000 0.4010000 0.0724000 -H 0.1734000 0.4065000 0.1528000 -C 0.2258700 0.7149200 -0.1354200 -H 0.2053000 0.7482000 -0.1378000 -H 0.2287000 0.7214000 -0.1885000 -H 0.2474000 0.7355000 -0.0889000 -C 0.2014600 0.5152500 -0.0328200 -H 0.2209000 0.4740000 -0.0241000 -H 0.1818000 0.5018000 -0.0876000 -C 0.1798000 0.4057200 0.0391900 -H 0.1647000 0.3874000 -0.0189000 -H 0.2025000 0.3740000 0.0574000 -C 0.1609900 0.2817100 0.1066600 -H 0.1859000 0.2616000 0.1358000 -H 0.1508000 0.2552000 0.0502000 -C 0.1393000 0.2523200 0.1569200 -H 0.1493000 0.2782000 0.2130000 -H 0.1405000 0.1901000 0.1623000 -H 0.1144000 0.2700000 0.1272000 -C 0.2529400 0.4853100 0.1522500 -H 0.2511000 0.4277000 0.1732000 -H 0.2594000 0.4789000 0.1035000 -C 0.2165600 0.5315000 0.1240300 -H 0.2205000 0.5935000 0.1214000 -H 0.2071000 0.5223000 0.1674000 -C 0.2824300 0.5363800 0.2225500 -H 0.2755000 0.5441000 0.2704000 -H 0.2844000 0.5936000 0.2008000 -N 0.1879500 0.5023700 0.0375900 -C 0.3191900 0.4914600 0.2542400 -H 0.3177000 0.4362000 0.2789000 -H 0.3371000 0.5270000 0.2969000 -H 0.3260000 0.4828000 0.2070000 -C 0.1540800 0.5568900 0.0204800 -H 0.1610000 0.6178000 0.0265000 -H 0.1454000 0.5437000 0.0645000 -C 0.1225900 0.5443800 -0.0672400 -H 0.1000000 0.5444000 -0.0593000 -H 0.1251000 0.4875000 -0.0890000 -C 0.1195700 0.6124200 -0.1352700 -H 0.1216000 0.6701000 -0.1106000 -H 0.1395000 0.6048000 -0.1528000 -C 0.0836600 0.6053600 -0.2137200 -H 0.0819000 0.5491000 -0.2395000 -H 0.0826000 0.6496000 -0.2545000 -H 0.0639000 0.6130000 -0.1966000 - - OUTPUT CELL INFORMATION -Symmetry information: -Monoclinic crystal system. -Space group number : 15 -Hall symbol : -C 2yc -Hermann-Mauguin symbol : C2/c - -Bravais lattice vectors : - 20.1215000 -7.6867500 0.0000000 - 20.1215000 7.6867500 0.0000000 - -6.9242502 0.0000000 15.5755260 -All sites, (cartesian coordinates): -Atom x y z -Br 24.3358938 0.8921242 3.8450990 -Br 12.4449811 0.8921242 3.9426641 -Br 8.9828560 -0.8921242 11.7304271 -Br 20.8737687 -0.8921242 11.6328620 -Br 27.0857083 3.6995867 3.9309824 -Br 9.6951666 3.6995867 3.8567806 -Br 6.2330415 -3.6995867 11.6445436 -Br 23.6235832 -3.6995867 11.7187454 -Fe 24.7611304 3.2485743 3.5465784 -Fe 12.0197446 3.2485743 4.2411846 -Fe 8.5576195 -3.2485743 12.0289476 -Fe 21.2990053 -3.2485743 11.3343415 -C 21.8982932 5.8914327 2.6132618 -C 14.8825817 5.8914327 5.1745013 -C 11.4204567 -5.8914327 12.9622643 -C 18.4361681 -5.8914327 10.4010248 -C 3.3458342 -2.2099406 6.5040282 -C 33.4350407 -2.2099406 1.2837349 -C 29.9729156 2.2099406 9.0714979 -C -0.1162909 2.2099406 14.2917912 -C 22.9635531 4.8969210 2.9481356 -C 13.8173218 4.8969210 4.8396275 -C 10.3551967 -4.8969210 12.6273905 -C 19.5014280 -4.8969210 10.7358986 -C 2.1351104 -0.5251588 2.1738762 -C 34.6457645 -0.5251588 5.6138869 -C 31.1836394 0.5251588 13.4016499 -C -1.3270147 0.5251588 9.9616392 -H 3.0341390 -0.3013206 2.0824478 -H 33.7467360 -0.3013206 5.7053152 -H 30.2846109 0.3013206 13.4930782 -H -0.4279861 0.3013206 9.8702109 -C 22.5702474 5.1625750 5.3156155 -C 14.2106275 5.1625750 2.4721475 -C 10.7485024 -5.1625750 10.2599105 -C 19.1081223 -5.1625750 13.1033786 -H 22.2048167 6.0156506 4.9997439 -H 14.5760582 6.0156505 2.7880192 -H 11.1139331 -6.0156505 10.5757822 -H 18.7426916 -6.0156505 12.7875069 -C 2.8752367 -1.2853783 7.4584964 -C 33.9056382 -1.2853783 0.3292666 -C 30.4435131 1.2853783 8.1170296 -C -0.5868884 1.2853783 15.2462594 -C 22.7252893 3.1547959 0.0433000 -C 14.0555856 3.1547959 7.7444631 -C 10.5934605 -3.1547959 15.5322261 -C 19.2631642 -3.1547959 7.8310630 -C 20.5558670 5.5676668 2.7470555 -C 16.2250079 5.5676668 5.0407075 -C 12.7628828 -5.5676668 12.8284705 -C 17.0937419 -5.5676668 10.5348186 -H 20.3085538 4.7196645 3.0372276 -H 16.4723211 4.7196645 4.7505354 -H 13.0101960 -4.7196645 12.5382985 -H 16.8464287 -4.7196645 10.8249906 -C 21.2265303 2.9879935 5.3880417 -C 15.5543446 2.9879935 2.3997213 -C 12.0922196 -2.9879935 10.1874843 -C 17.7644052 -2.9879935 13.1758048 -H 21.8826189 2.5781360 4.8735821 -H 14.8982560 2.5781360 2.9141809 -H 11.4361309 -2.5781359 10.7019439 -H 18.4204938 -2.5781359 12.6613451 -C 16.2828658 5.2392888 13.3581942 -C 13.5737589 5.2392888 10.0050949 -C 17.0358840 -5.2392888 2.2173319 -C 19.7449909 -5.2392888 5.5704311 -H 16.1635061 5.9403204 12.7594709 -H 13.6931187 5.9403204 10.6038181 -H 17.1552438 -5.9403204 2.8160551 -H 19.6256311 -5.9403204 4.9717079 -C 14.4269311 0.9274833 14.5945794 -C 15.4296937 0.9274833 8.7687097 -C 18.8918188 -0.9274833 0.9809466 -C 17.8890562 -0.9274833 6.8068164 -H 13.9836942 0.1875567 14.2500488 -H 15.8729305 0.1875567 9.1132403 -H 19.3350556 -0.1875567 1.3254773 -H 17.4458193 -0.1875567 6.4622858 -C 17.5776503 5.1882488 14.0439846 -C 12.2789744 5.1882488 9.3193045 -C 15.7410995 -5.1882488 1.5315415 -C 21.0397754 -5.1882488 6.2562215 -C 20.4012770 4.9235171 6.5817500 -C 16.3795979 4.9235171 1.2060130 -C 12.9174728 -4.9235171 8.9937760 -C 16.9391519 -4.9235171 14.3695131 -C 21.9671834 0.8599936 0.2594883 -C 14.8136915 0.8599936 7.5282748 -C 11.3515664 -0.8599936 15.3160378 -C 18.5050583 -0.8599936 8.0472513 -H 21.9367273 0.0707181 0.7507404 -H 14.8441476 0.0707181 7.0370227 -H 11.3820225 -0.0707181 14.8247857 -H 18.4746023 -0.0707181 8.5385034 -C 15.1849300 3.2193646 14.3523800 -C 14.6716947 3.2193646 9.0109091 -C 18.1338198 -3.2193646 1.2231461 -C 18.6470551 -3.2193646 6.5646170 -C 18.7111120 5.6097902 13.3401266 -C 11.1455128 5.6097902 10.0231625 -C 14.6076379 -5.6097901 2.2353995 -C 22.1732371 -5.6097901 5.5523635 -H 18.6143182 5.9218722 12.4697662 -H 11.2423065 5.9218722 10.8935229 -H 14.7044316 -5.9218722 3.1057599 -H 22.0764433 -5.9218722 4.6820031 -C 15.2558193 4.4002032 13.4913649 -C 14.6008054 4.4002032 9.8719242 -C 18.0629305 -4.4002032 2.0841611 -C 18.7179444 -4.4002032 5.7036019 -H 14.4997290 4.5859151 12.9806434 -H 15.3564341 4.5859151 10.3836840 -H 18.8190208 -4.5859151 2.5948826 -H 17.9623157 -4.5859150 5.1918420 -C 19.5808796 6.5119071 2.4462921 -C 17.1999953 6.5119071 5.3414709 -C 13.7378702 -6.5119071 13.1292339 -C 16.1187546 -6.5119071 10.2340551 -H 18.6802064 6.2969856 2.5450410 -H 18.1006685 6.2969856 5.2427221 -H 14.6385434 -6.2969856 13.0304851 -H 15.2180813 -6.2969856 10.3328040 -C 14.4816342 2.0997126 13.8795070 -C 15.3749906 2.0997126 9.4837821 -C 18.8371157 -2.0997126 1.6960190 -C 17.9437593 -2.0997126 6.0917440 -H 14.0411714 2.1522900 13.0616361 -H 15.8154533 2.1522900 10.3016529 -H 19.2775784 -2.1522900 2.5138899 -H 17.5032965 -2.1522900 5.2738731 -C 22.6276860 1.9696528 0.7661601 -C 14.1531890 1.9696528 7.0216029 -C 10.6910639 -1.9696528 14.8093659 -C 19.1655609 -1.9696528 8.5539232 -H 23.0153296 1.9201502 1.6105094 -H 13.7655453 1.9201502 6.1772536 -H 10.3034202 -1.9201501 13.9650167 -H 19.5532045 -1.9201501 9.3982724 -C 17.7186899 4.7482592 15.3778726 -C 12.1379349 4.7482592 7.9854165 -C 15.6000600 -4.7482592 0.1976534 -C 21.1808150 -4.7482592 7.5901096 -C 20.5171752 6.2951408 7.0823474 -C 16.2636997 6.2951408 0.7054156 -C 12.8015746 -6.2951408 8.4931786 -C 17.0550501 -6.2951408 14.8701105 -H -0.3968774 -0.9116485 7.1569542 -H 37.1777523 -0.9116486 0.6308088 -H 33.7156272 0.9116486 8.4185718 -H -3.8590024 0.9116486 14.9447172 -C 25.9178642 4.7291961 0.3635328 -C 10.8630108 4.7291961 7.4242302 -C 7.4008857 -4.7291961 15.2119933 -C 22.4557391 -4.7291961 8.1512958 -H 26.0239220 4.4444789 1.2429270 -H 10.7569529 4.4444789 6.5448360 -H 7.2948278 -4.4444788 14.3325991 -H 22.5617970 -4.4444788 9.0306900 -C 1.5132627 -0.7500731 7.4452572 -C 35.2676122 -0.7500731 0.3425058 -C 31.8054871 0.7500731 8.1302688 -C -1.9488624 0.7500731 15.2330202 -H 1.4135988 0.1337494 7.7192307 -H 35.3672761 0.1337494 0.0685323 -H 31.9051510 -0.1337494 7.8562953 -H -2.0485263 -0.1337494 15.5069937 -C -0.1593848 -2.1133950 13.9044279 -C 30.0160096 -2.1133950 9.4588612 -C 33.4781347 2.1133950 1.6710982 -C 3.3027402 2.1133950 6.1166648 -H 0.5829870 -1.8417453 13.4167581 -H 29.2736377 -1.8417453 9.9465309 -H 32.7357628 1.8417453 2.1587679 -H 4.0451121 1.8417453 5.6289951 -C 1.1542641 0.4118561 1.8699977 -C 35.6266108 0.4118561 5.9177654 -C 32.1644857 -0.4118561 13.7055284 -C -2.3078609 -0.4118561 9.6577607 -H 21.5167338 -6.4261230 1.5778008 -H 15.2641412 -6.4261230 6.2099622 -H 11.8020161 6.4261230 13.9977253 -H 18.0546087 6.4261230 9.3655638 -C -0.1801696 0.0797885 2.0030126 -C 36.9610445 0.0797885 5.7847504 -C 33.4989195 -0.0797885 13.5725134 -C -3.6422947 -0.0797885 9.7907757 -H 19.2842758 -6.9826437 1.7927430 -H 17.4965991 -6.9826437 5.9950200 -H 14.0344740 6.9826437 13.7827830 -H 15.8221507 6.9826437 9.5805061 -C 19.2539857 4.1860503 6.9111724 -C 17.5268892 4.1860503 0.8765906 -C 14.0647641 -4.1860503 8.6643536 -C 15.7918606 -4.1860503 14.6989354 -H 18.5815366 4.5889898 7.4108353 -H 18.1993383 4.5889898 0.3769277 -H 14.7372133 -4.5889897 8.1646908 -H 15.1194115 -4.5889897 15.1985983 -C 20.0950620 2.2682062 5.7515745 -C 16.6858129 2.2682062 2.0361885 -C 13.2236879 -2.2682062 9.8239515 -C 16.6329369 -2.2682062 13.5393375 -H 20.0034153 1.3805403 5.4888154 -H 16.7774596 1.3805403 2.2989476 -H 13.3153345 -1.3805403 10.0867107 -H 16.5412903 -1.3805403 13.2765784 -N 23.2875248 4.5693117 4.1982273 -N 13.4933502 4.5693117 3.5895357 -N 10.0312251 -4.5693117 11.3772988 -N 19.8253997 -4.5693117 11.9859903 -N 23.6976799 4.2687597 2.0318274 -N 13.0831950 4.2687597 5.7559357 -N 9.6210699 -4.2687597 13.5436987 -N 20.2355548 -4.2687597 9.8195904 -C 21.3900845 4.3199535 5.7850619 -C 15.3907904 4.3199535 2.0027011 -C 11.9286653 -4.3199535 9.7904642 -C 17.9279594 -4.3199535 13.5728249 -C 23.4038465 4.4000494 0.6116509 -C 13.3770285 4.4000494 7.1761121 -C 9.9149034 -4.4000494 14.9638751 -C 19.9417214 -4.4000494 8.3994139 -H 22.7750910 5.1439731 0.5124348 -H 14.0057839 5.1439731 7.2753282 -H 10.5436589 -5.1439731 15.0630912 -H 19.3129659 -5.1439731 8.3001978 -C 4.6098546 -2.7638478 6.6733341 -C 32.1710203 -2.7638478 1.1144289 -C 28.7088952 2.7638478 8.9021919 -C 1.1477295 2.7638478 14.4610972 -H 25.0466590 4.3015053 6.0573221 -H 11.7342159 4.3015053 1.7304409 -H 8.2720908 -4.3015053 9.5182040 -H 21.5845339 -4.3015053 13.8450851 -C 3.7206896 -0.8887420 8.4969167 -C 26.1359352 -0.8887420 14.8663723 -C 29.5980603 0.8887420 7.0786093 -C 7.1828146 0.8887420 0.7091537 -H 3.4361570 -0.2306025 9.0898770 -H 26.4204677 -0.2306025 14.2734121 -H 29.8825928 0.2306025 6.4856490 -H 6.8982821 0.2306025 1.3021140 -C 5.4087580 -2.4002646 7.7503818 -C 31.3721169 -2.4002646 0.0373813 -C 27.9099919 2.4002646 7.8251443 -C 1.9466329 2.4002646 15.5381448 -H 6.2441369 -2.7949023 7.8609680 -H 23.6124878 -2.7949023 15.5023211 -H 27.0746129 2.7949023 7.7145581 -H 9.7062620 2.7949023 0.0732050 -C 4.9694698 -1.4524883 8.6624846 -C 24.8871550 -1.4524883 14.7008045 -C 28.3492801 1.4524883 6.9130415 -C 8.4315949 1.4524883 0.8747215 -H 5.5100429 -1.2006703 9.3764667 -H 24.3465818 -1.2006703 13.9868224 -H 27.8087069 1.2006703 6.1990594 -H 8.9721680 1.2006703 1.5887037 -C -0.0145493 -2.5610714 15.2161987 -C 29.8711741 -2.5610714 8.1470904 -C 33.3332992 2.5610714 0.3593274 -C 3.4475758 2.5610714 7.4284356 -H 7.7530505 -2.5935094 0.0311511 -H 29.0278244 -2.5935094 7.7566120 -H 25.5656993 2.5935095 15.5443750 -H 4.2909254 2.5935095 7.8189141 -C 19.1035389 2.8740758 6.5072990 -C 17.6773360 2.8740758 1.2804640 -C 14.2152109 -2.8740758 9.0682270 -C 15.6414138 -2.8740758 14.2950621 -H 18.3400231 2.3982660 6.7410877 -H 18.4408518 2.3982660 1.0466754 -H 14.9787267 -2.3982660 8.8344384 -H 14.8778980 -2.3982660 14.5288507 -C 22.1240009 1.6291298 14.9897305 -C 7.7326238 1.6291298 8.3735586 -C 11.1947489 -1.6291298 0.5857955 -C 25.5861260 -1.6291298 7.2019675 -H 29.6460584 1.7648778 0.1651006 -H 7.1348165 1.7648778 7.6226624 -H 3.6726914 -1.7648778 15.4104255 -H 26.1839334 -1.7648778 7.9528636 -H 21.4093991 2.2845021 15.0537459 -H 8.4472256 2.2845021 8.3095431 -H 11.9093507 -2.2845021 0.5217801 -H 24.8715242 -2.2845021 7.2659829 -C 22.8907729 1.8406692 13.6849687 -C 6.9658519 1.8406692 9.6783204 -C 10.4279769 -1.8406692 1.8905574 -C 26.3528980 -1.8406692 5.8972057 -H 23.7099332 1.3236584 13.7080205 -H 6.1466915 1.3236584 9.6552686 -H 9.6088166 -1.3236583 1.8675056 -H 27.1720583 -1.3236583 5.9202575 -H 22.3563760 1.5189018 12.9417046 -H 7.5002487 1.5189018 10.4215845 -H 10.9623738 -1.5189018 2.6338215 -H 25.8185011 -1.5189018 5.1539416 -C 25.9294815 -1.8466648 1.5078667 -C 10.8513934 -1.8466648 6.2798963 -C 7.3892684 1.8466648 14.0676594 -C 22.4673564 1.8466648 9.2956297 -H 25.0972566 -1.5219765 1.1276681 -H 11.6836183 -1.5219765 6.6600949 -H 8.2214932 1.5219765 14.4478580 -H 21.6351315 1.5219765 8.9154311 -H 26.0416108 -1.4374222 2.3799404 -H 10.7392641 -1.4374223 5.4078226 -H 7.2771391 1.4374223 13.1955857 -H 22.5794857 1.4374223 10.1677034 -C 23.2246182 3.3040726 13.4662883 -C 6.6320065 3.3040726 9.8970008 -C 10.0941316 -3.3040726 2.1092377 -C 26.6867433 -3.3040726 5.6785253 -H 22.4132994 3.8157027 13.4292186 -H 7.4433253 3.8157027 9.9340705 -H 10.9054504 -3.8157027 2.1463075 -H 25.8754245 -3.8157027 5.6414555 -H 23.7060451 3.4036929 12.6395394 -H 6.1505797 3.4036929 10.7237497 -H 9.6127047 -3.4036929 2.9359867 -H 27.1681702 -3.4036929 4.8517764 -H 23.7689339 3.6204593 14.1908618 -H 6.0876909 3.6204593 9.1724273 -H 9.5498160 -3.6204593 1.3846643 -H 27.2310590 -3.6204592 6.4030988 -C 21.5318585 0.2344459 15.0643373 -C 8.3247662 0.2344459 8.2989518 -C 11.7868913 -0.2344459 0.5111888 -C 24.9939836 -0.2344459 7.2765743 -H 22.2538030 -0.3997110 15.2001559 -H 7.6028218 -0.3997110 8.1631332 -H 11.0649469 0.3997110 0.3753702 -H 25.7159280 0.3997110 7.4123928 -H 21.1199915 0.0276723 14.2111100 -H 8.7366332 0.0276723 9.1521791 -H 12.1987583 -0.0276723 1.3644161 -H 24.5821166 -0.0276723 6.4233469 -C 27.0858300 -1.4494136 0.6104049 -C 9.6950449 -1.4494136 7.1773582 -C 6.2329198 1.4494136 14.9651212 -C 23.6237050 1.4494136 8.3981679 -H 19.9561403 -1.7310561 15.2811486 -H 9.9004845 -1.7310561 8.0821405 -H 13.3626096 1.7310561 0.2943774 -H 23.4182653 1.7310561 7.4933856 -H 27.8732555 -1.9370610 0.8940352 -H 8.9076194 -1.9370610 6.8937278 -H 5.4454943 1.9370610 14.6814909 -H 24.4111305 1.9370610 8.6817982 -C 25.8616800 -3.3558813 1.6612856 -C 10.9191949 -3.3558813 6.1264774 -C 7.4570698 3.3558813 13.9142404 -C 22.3995550 3.3558813 9.4490486 -H 26.6623605 -3.6650424 2.1151564 -H 10.1185144 -3.6650424 5.6726066 -H 6.6563893 3.6650424 13.4603696 -H 23.2002354 3.6650424 9.9029195 -H 25.8425470 -3.7634328 0.7818914 -H 10.9383279 -3.7634328 7.0058716 -H 7.4762028 3.7634328 14.7936346 -H 22.3804220 3.7634328 8.5696544 -C 24.6407966 -3.8077085 2.4441115 -C 12.1400784 -3.8077085 5.3436515 -C 8.6779533 3.8077085 13.1314145 -C 21.1786715 3.8077085 10.2318746 -H 24.6549146 -3.4098423 3.3175870 -H 12.1259603 -3.4098423 4.4701760 -H 8.6638352 3.4098423 12.2579390 -H 21.1927895 3.4098423 11.1053501 -H 24.6518357 -4.7642476 2.5279079 -H 12.1290392 -4.7642476 5.2598551 -H 8.6669141 4.7642477 13.0476182 -H 21.1897106 4.7642477 10.3156709 -H 23.8445346 -3.5359050 1.9812069 -H 12.9363403 -3.5359050 5.8065561 -H 9.4742153 3.5359050 13.5943191 -H 20.3824095 3.5359050 9.7689699 -C 29.2463473 -0.2258367 2.3713738 -C 7.5345276 -0.2258367 5.4163892 -C 4.0724025 0.2258367 13.2041522 -C 25.7842222 0.2258367 10.1591369 -H 29.0272372 -1.1115040 2.6976811 -H 7.7536377 -1.1115040 5.0900819 -H 4.2915127 1.1115041 12.8778449 -H 25.5651121 1.1115041 10.4854441 -H 29.8438743 -0.3243808 1.6120669 -H 6.9370006 -0.3243808 6.1756961 -H 3.4748755 0.3243809 13.9634591 -H 26.3817492 0.3243809 9.3998300 -C 27.9777093 0.4842653 1.9318325 -C 8.8031656 0.4842652 5.8559305 -C 5.3410405 -0.4842652 13.6436936 -C 24.5155842 -0.4842652 9.7195955 -H 28.1544775 1.4374223 1.8908689 -H 8.6263974 1.4374223 5.8968942 -H 5.1642723 -1.4374222 13.6846572 -H 24.6923524 -1.4374222 9.6786319 -H 27.2967058 0.3428290 2.6073431 -H 9.4841691 0.3428291 5.1804200 -H 6.0220440 -0.3428290 12.9681830 -H 23.8345807 -0.3428290 10.3951061 -C 29.9463386 0.5592879 3.4663333 -C 6.8345363 0.5592879 4.3214297 -C 3.3724112 -0.5592879 12.1091927 -C 26.4842135 -0.5592879 11.2540963 -H 29.3361293 0.6779714 4.2116222 -H 7.4447457 0.6779714 3.5761408 -H 3.9826206 -0.6779713 11.3639038 -H 25.8740042 -0.6779713 11.9993853 -H 30.1762198 1.4389596 3.1275656 -H 6.6046551 1.4389596 4.6601974 -H 3.1425301 -1.4389596 12.4479604 -H 26.7140947 -1.4389596 10.9153287 -N 27.4248893 0.0364352 0.5854840 -N 9.3559856 0.0364352 7.2022790 -N 5.8938605 -0.0364352 14.9900420 -N 23.9627642 -0.0364352 8.3732470 -C 31.2062418 -0.1312897 3.9599217 -C 5.5746331 -0.1312897 3.8278413 -C 2.1125080 0.1312897 11.6156043 -C 27.7441167 0.1312897 11.7476848 -H 30.9755277 -0.9808293 4.3440142 -H 5.8053472 -0.9808293 3.4437488 -H 2.3432221 0.9808293 11.2315118 -H 27.5134026 0.9808293 12.1317772 -H 31.6316054 0.4150845 4.6243737 -H 5.1492695 0.4150845 3.1633893 -H 1.6871444 -0.4150845 10.9511524 -H 28.1694803 -0.4150845 12.4121367 -H 31.8073982 -0.2644242 3.2241339 -H 4.9734767 -0.2644242 4.5636291 -H 1.5113516 0.2644242 12.3513922 -H 28.3452731 0.2644242 11.0118969 -C 26.1803328 0.8745984 0.3189868 -C 10.6005421 0.8745984 7.4687763 -C 7.1384170 -0.8745984 15.2565393 -C 22.7182077 -0.8745984 8.1067498 -H 26.4171304 1.8109983 0.4127514 -H 10.3637445 1.8109983 7.3750116 -H 6.9016195 -1.8109983 15.1627746 -H 22.9550053 -1.8109983 8.2005145 -H 25.5262181 0.6718220 1.0046214 -H 11.2546569 0.6718219 6.7831416 -H 7.7925318 -0.6718219 14.5709046 -H 22.0640930 -0.6718219 8.7923845 -C 18.5962258 0.6822759 14.5282277 -C 11.2603990 0.6822759 8.8350614 -C 14.7225240 -0.6822759 1.0472984 -C 22.0583509 -0.6822759 6.7404647 -H 17.6321579 0.6825834 14.6518974 -H 12.2244669 0.6825834 8.7113917 -H 15.6865920 -0.6825834 0.9236287 -H 21.0942830 -0.6825834 6.8641343 -H 18.8479074 -0.1921687 14.1893042 -H 11.0087174 -0.1921687 9.1739848 -H 14.4708424 0.1921687 1.3862218 -H 22.3100325 0.1921688 6.4015412 -C 18.9457487 1.7282889 13.4686246 -C 10.9108761 1.7282889 9.8946644 -C 14.3730012 -1.7282889 2.1069014 -C 22.4078737 -1.7282889 5.6808616 -H 18.8566207 2.6150324 13.8528729 -H 11.0000040 2.6150324 9.5104162 -H 14.4621291 -2.6150324 1.7226532 -H 22.3187458 -2.6150324 6.0651098 -H 19.8691738 1.6111428 13.1955857 -H 9.9874510 1.6111428 10.1677034 -H 13.4495761 -1.6111428 2.3799404 -H 23.3312988 -1.6111428 5.4078226 -C 18.0438300 1.6197520 12.2467246 -C 11.8127948 1.6197520 11.1165645 -C 15.2749199 -1.6197520 3.3288014 -C 21.5059550 -1.6197520 4.4589616 -H 18.1515094 0.7548389 11.8451876 -H 11.7051153 0.7548389 11.5181015 -H 15.1672404 -0.7548389 3.7303385 -H 21.6136345 -0.7548389 4.0574245 -H 18.2835433 2.2998756 11.6115547 -H 11.5730814 2.2998756 11.7517344 -H 15.0352065 -2.2998756 3.9639714 -H 21.7456684 -2.2998756 3.8237916 -H 17.1300851 1.7372055 12.5133776 -H 12.7265396 1.7372055 10.8499114 -H 16.1886647 -1.7372055 3.0621484 -H 20.5922102 -1.7372055 4.7256146 - -Unit cell volume : 4818.1002118 A^3 -Unit cell density : 0.7950908 u/A^3 = 8.9096851 g/cm^3 diff --git a/cell2mol/test/BUSVOC/Cell_BUSVOC.cell b/cell2mol/test/BUSVOC/Cell_BUSVOC.cell deleted file mode 100644 index 687550f37..000000000 Binary files a/cell2mol/test/BUSVOC/Cell_BUSVOC.cell and /dev/null differ diff --git a/cell2mol/test/BUSVOC/Ref_Cell_BUSVOC.cell b/cell2mol/test/BUSVOC/Ref_Cell_BUSVOC.cell deleted file mode 100644 index 4856e24ea..000000000 Binary files a/cell2mol/test/BUSVOC/Ref_Cell_BUSVOC.cell and /dev/null differ diff --git a/cell2mol/test/BUSVOC/cell2mol.out b/cell2mol/test/BUSVOC/cell2mol.out deleted file mode 100644 index 4f82f7b46..000000000 --- a/cell2mol/test/BUSVOC/cell2mol.out +++ /dev/null @@ -1,16741 +0,0 @@ -INITIATING cell object from input -MOLECULE.SPLIT COMPLEX: labels=['Br', 'Br', 'Fe', 'C', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'N', 'N', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H'] -MOLECULE.SPLIT COMPLEX: metal_idx=[2] -MOLECULE.SPLIT COMPLEX: rest_idx=[0, 1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68] -SPLIT COMPLEX: rest labels: ['Br', 'Br', 'C', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'N', 'N', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H'] -SPLIT COMPLEX: rest coord: [[4.214393809572194, 8.578874205, 3.8450989646681446], [6.96420829114687, 11.3863366545, 3.9309824153024113], [1.7767931668442358, 13.57818267, 2.6132617605036756], [3.345834184924399, 13.163559374999998, 6.504028167547531], [2.8420530982362435, 12.583670954999999, 2.94813557055749], [2.135110414078257, 14.84834124, 2.1738761706609724], [3.034138952563323, 15.072179400000001, 2.0824478327532567], [2.4487474127285767, 12.849325035000001, 5.3156155300077135], [2.0833166961318366, 13.70240055, 4.999743861733697], [2.8752366846407824, 14.088121665000001, 7.458496403831147], [2.6037893245334787, 10.841545935, 0.04329996241626068], [0.43436701790271726, 13.25441676, 2.747055529264711], [0.18705381727634918, 12.4064145, 3.037227579557854], [1.1050302794482434, 10.67474346, 5.388041726135633], [1.7611189224911268, 10.26488595, 4.873582100736679], [3.0856159938899443, 12.9260388, -2.217331888337723], [2.966256230340699, 13.6270704, -2.816055109661846], [1.2296812355689009, 8.614233255, -0.9809466305669415], [0.7864443892809375, 7.8743067, -1.3254772667711452], [4.380400509001112, 12.87499878, -1.531541476399609], [0.27977698658700945, 12.61026711, 6.581750042532114], [1.845683382204226, 8.54674359, 0.2594882639765838], [1.8152273419113854, 7.7574681000000005, 0.7507403555625054], [1.9876802056784026, 10.906114635, -1.2231460606291193], [5.513862144084609, 13.29654015, -2.2353994985545804], [5.417068383462032, 13.6086222, -3.105759894173518], [2.0585695049551385, 12.086953170000001, -2.084161140618648], [1.302479177957746, 12.27266505, -2.594882639765838], [-0.5406203613568026, 14.198657129999999, 2.4462921212582387], [-1.4412935774207407, 13.9837356, 2.545040956408991], [1.2843843407732232, 9.78646263, -1.6960190314772035], [0.843921577085115, 9.83904, -2.513889904310962], [2.50618595424525, 9.65640282, 0.7661601263510298], [2.8938296326480746, 9.60690015, 1.6105093934681132], [4.521440044629556, 12.43500921, -0.1976534255619957], [0.39567521619348067, 13.981890779999999, 7.082347449747444], [-0.396877352110347, 14.46185145, 7.156954219522225], [5.796364151083231, 12.41594607, 0.3635327779840016], [5.902422036608476, 12.131228850000001, 1.2429269787113677], [1.5132627272834238, 14.623426935, 7.445257206689485], [1.4135988168315823, 15.507249449999998, 7.719230709891653], [6.764865320504722, 13.260104955000001, -1.67109818979878], [7.507237173258966, 13.5317547, -2.1587679103934283], [1.1542641448523008, 15.785356065000002, 1.869997657444697], [1.3952337580004834, 16.634127, 1.5778007887651824], [-0.1801696215808274, 15.453288465, 2.003012649903282], [-0.837224194315344, 16.0776063, 1.7927430482415843], [-0.8675143144622481, 11.872800315000001, 6.911172418468773], [-1.5399634298457088, 12.27573975, 7.410835294121163], [-0.026438019468526086, 9.95495619, 5.751574504119634], [-0.11808465913751087, 9.0672903, 5.488815379672757], [3.1660247597675237, 12.256061670000001, 4.1982272912514045], [3.5761798956087176, 11.955509744999999, 2.031827373093959], [1.268584492670675, 12.0067035, 5.785061885125015], [3.282346455909961, 12.086799435, 0.6116509079448047], [2.6535909694789335, 12.8307231, 0.5124348070125815], [4.609854625600265, 12.609652169999999, 6.67333413570032], [4.925159009737293, 11.9882553, 6.057322080461792], [3.7206895659526507, 14.484757965, 8.496916725518952], [3.436157002063986, 15.1428975, 9.08987700220494], [5.408757976495956, 12.973235445, 7.750381761989682], [6.244136940304478, 12.578597700000001, 7.860967996937687], [4.969469766668792, 13.92101172, 8.662484567419979], [5.510042898976215, 14.17282965, 9.376466681506809], [6.9097008413714605, 12.812428635, -0.35932738595076763], [7.753050499664374, 12.77999055, 0.031151052098029267], [-1.017961107610842, 10.560825824999998, 6.507299028017824], [-1.781476872629724, 10.085016, 6.741087674013534]] -SPLIT COMPLEX: rest indices: [0, 1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68] -SPLIT COMPLEX: rest radii: [1.2, 1.2, 0.73, 0.73, 0.73, 0.73, 0.31, 0.73, 0.31, 0.73, 0.73, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.73, 0.73, 0.31, 0.73, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.71, 0.71, 0.73, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31] -SPLIT COMPLEX: splitting species with 68 atoms in block -labels=['Br', 'Br', 'C', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'N', 'N', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H'] 68 -indices=None -SPLIT COMPLEX: received 3 blocks -PREPARING BLOCK: [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67] -CREATING LIGAND: H27-C37-N2 -PREPARING BLOCK: [1] -CREATING LIGAND: Br -PREPARING BLOCK: [0] -CREATING LIGAND: Br -GETREFS: found 2 reference molecules -GETREFS: ['H36-C16-N', 'H27-C37-N2-Fe-Br2'] -GETREFS: [------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 53 - Formula = H36-C16-N - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 69 - Formula = H27-C37-N2-Fe-Br2 - Has Adjacency Matrix = YES - Number of Ligands = 3 - Number of Metals = 1 ---------------------------------------------------- -] -LIGAND.SPLIT_LIGAND: self.indices=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65] -LIGAND.SPLIT_LIGAND: conn_idx=[2, 49, 50] -LIGAND.SPLIT_LIGAND: conn_labels=['C', 'N', 'N'] -LIGAND.SPLIT_LIGAND: conn_coord=[[2.8420530982362435, 12.583670954999999, 2.94813557055749], [3.1660247597675237, 12.256061670000001, 4.1982272912514045], [3.5761798956087176, 11.955509744999999, 2.031827373093959]] -LIGAND.SPLIT_LIGAND: conn_radii=[0.73, 0.71, 0.71] -labels=['C', 'N', 'N'] 3 -indices=None -blocklist=[[0, 1, 2]] -LIGAND.SPLIT_LIGAND: block=[0, 1, 2] -Entering COORD_CORR_NONHAPTIC: - mconnec=1 in atom idx=0, label=C - evaluating coordination with metal -------------- Cell2mol METAL Object -------------- - Version = 0.1 - Type = atom - Sub-Type = metal - Label = Fe - Atomic Number = 26 - Index in Molecule = 2 - Metal Adjacency (mconnec) = 5 - Regular Adjacencies (connec) = 5 ----------------------------------------------------- - -ADD_ATOM: Metalist length 1 -ADD_ATOM: Ligand Atoms 66 -ADD_ATOM: site= 2 -ADD_ATOM: target ligand atom C -ADD_ATOM: evaluating apos=array([ 2.8420531 , 12.58367095, 2.94813557]) and tgt.coord=[4.639630355288509, 10.935324285, 3.54657843241273] -ADD_ATOM: Chosen Metal index None. H was added at site 2 but RESET due to connec=3 - correcting mconnec of atom with label C and ligand index 2 -ATOM.RESET_MCONN: resetting mconnec (and connec) for atom self.label='C' -ATOM.RESET_MCONN: updating ligand atoms and madjnum -ATOM.RESET_MCONN: initial lig.madjnum=array([0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]) -ATOM.RESET_MCONN: initial lig.madjmat=array([[0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0], - ..., - [0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0]], dtype=object) -ATOM.RESET_MCONN: final lig.madjnum=array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]) -ATOM.RESET_MCONN: final lig.madjmat=array([[0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0], - [-2, -2, -2, ..., -2, -2, -2], - ..., - [0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0]], dtype=object) -ATOM.RESET_MCONN: updating molecule atoms and madjnum - mconnec=1 in atom idx=1, label=N - evaluating coordination with metal -------------- Cell2mol METAL Object -------------- - Version = 0.1 - Type = atom - Sub-Type = metal - Label = Fe - Atomic Number = 26 - Index in Molecule = 2 - Metal Adjacency (mconnec) = 5 - Regular Adjacencies (connec) = 5 ----------------------------------------------------- - -ADD_ATOM: Metalist length 1 -ADD_ATOM: Ligand Atoms 66 -ADD_ATOM: site= 49 -ADD_ATOM: target ligand atom N -ADD_ATOM: evaluating apos=array([ 3.16602476, 12.25606167, 4.19822729]) and tgt.coord=[4.639630355288509, 10.935324285, 3.54657843241273] -ADD_ATOM: Chosen Metal index None. H is added at site 49 - connectivity verified for atom with label N and ligand index 49 - mconnec=1 in atom idx=2, label=N - evaluating coordination with metal -------------- Cell2mol METAL Object -------------- - Version = 0.1 - Type = atom - Sub-Type = metal - Label = Fe - Atomic Number = 26 - Index in Molecule = 2 - Metal Adjacency (mconnec) = 5 - Regular Adjacencies (connec) = 5 ----------------------------------------------------- - -ADD_ATOM: Metalist length 1 -ADD_ATOM: Ligand Atoms 66 -ADD_ATOM: site= 50 -ADD_ATOM: target ligand atom N -ADD_ATOM: evaluating apos=array([ 3.5761799 , 11.95550974, 2.03182737]) and tgt.coord=[4.639630355288509, 10.935324285, 3.54657843241273] -ADD_ATOM: Chosen Metal index None. H is added at site 50 - connectivity verified for atom with label N and ligand index 50 -LIGAND.SPLIT_LIGAND: group is found ------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 3 - Formula = C-N2 - Has Adjacency Matrix = YES - Origin = split_ligand - Number of Metals = 1 ---------------------------------------------------- - -GROUP.SPLIT_GROUP: conn_idx=[1, 2] -GROUP.SPLIT_GROUP: conn_labels=['N', 'N'] -GROUP.SPLIT_GROUP: conn_coord=[[3.1660247597675237, 12.256061670000001, 4.1982272912514045], [3.5761798956087176, 11.955509744999999, 2.031827373093959]] -GROUP.SPLIT_GROUP: conn_radii=[0.71, 0.71] -labels=['N', 'N'] 2 -indices=None -blocklist=[[1], [0]] -GROUP.SPLIT_GROUP: block=[1] -Entering COORD_CORR_NONHAPTIC: - mconnec=1 in atom idx=0, label=N - evaluating coordination with metal -------------- Cell2mol METAL Object -------------- - Version = 0.1 - Type = atom - Sub-Type = metal - Label = Fe - Atomic Number = 26 - Index in Molecule = 2 - Metal Adjacency (mconnec) = 5 - Regular Adjacencies (connec) = 5 ----------------------------------------------------- - -ADD_ATOM: Metalist length 1 -ADD_ATOM: Ligand Atoms 66 -ADD_ATOM: site= 50 -ADD_ATOM: target ligand atom N -ADD_ATOM: evaluating apos=array([ 3.5761799 , 11.95550974, 2.03182737]) and tgt.coord=[4.639630355288509, 10.935324285, 3.54657843241273] -ADD_ATOM: Chosen Metal index None. H is added at site 50 - connectivity verified for atom with label N and ligand index 50 -GROUP.SPLIT_GROUP: block=[0] -Entering COORD_CORR_NONHAPTIC: - mconnec=1 in atom idx=0, label=N - evaluating coordination with metal -------------- Cell2mol METAL Object -------------- - Version = 0.1 - Type = atom - Sub-Type = metal - Label = Fe - Atomic Number = 26 - Index in Molecule = 2 - Metal Adjacency (mconnec) = 5 - Regular Adjacencies (connec) = 5 ----------------------------------------------------- - -ADD_ATOM: Metalist length 1 -ADD_ATOM: Ligand Atoms 66 -ADD_ATOM: site= 49 -ADD_ATOM: target ligand atom N -ADD_ATOM: evaluating apos=array([ 3.16602476, 12.25606167, 4.19822729]) and tgt.coord=[4.639630355288509, 10.935324285, 3.54657843241273] -ADD_ATOM: Chosen Metal index None. H is added at site 49 - connectivity verified for atom with label N and ligand index 49 -LIGAND.SPLIT_LIGAND: final groups self.groups=[------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 1 - Formula = N - Has Adjacency Matrix = YES - Origin = split_group - Number of Metals = 1 ---------------------------------------------------- -, ------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 1 - Formula = N - Has Adjacency Matrix = YES - Origin = split_group - Number of Metals = 1 ---------------------------------------------------- -] -LIGAND.SPLIT_LIGAND: self.indices=[0] -LIGAND.SPLIT_LIGAND: conn_idx=[0] -LIGAND.SPLIT_LIGAND: conn_labels=['Br'] -LIGAND.SPLIT_LIGAND: conn_coord=[[6.96420829114687, 11.3863366545, 3.9309824153024113]] -LIGAND.SPLIT_LIGAND: conn_radii=[1.2] -labels=['Br'] 1 -indices=None -blocklist=[[0]] -LIGAND.SPLIT_LIGAND: block=[0] -Entering COORD_CORR_NONHAPTIC: - mconnec=1 in atom idx=0, label=Br - evaluating coordination with metal -------------- Cell2mol METAL Object -------------- - Version = 0.1 - Type = atom - Sub-Type = metal - Label = Fe - Atomic Number = 26 - Index in Molecule = 2 - Metal Adjacency (mconnec) = 5 - Regular Adjacencies (connec) = 5 ----------------------------------------------------- - -ADD_ATOM: Metalist length 1 -ADD_ATOM: Ligand Atoms 1 -ADD_ATOM: site= 0 -ADD_ATOM: target ligand atom Br -ADD_ATOM: evaluating apos=array([ 6.96420829, 11.38633665, 3.93098242]) and tgt.coord=[4.639630355288509, 10.935324285, 3.54657843241273] -ADD_ATOM: Chosen Metal index None. H is added at site 0 - connectivity verified for atom with label Br and ligand index 0 -LIGAND.SPLIT_LIGAND: group is found ------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 1 - Formula = Br - Has Adjacency Matrix = YES - Origin = split_ligand - Number of Metals = 1 ---------------------------------------------------- - -LIGAND.SPLIT_LIGAND: final groups self.groups=[------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 1 - Formula = Br - Has Adjacency Matrix = YES - Origin = split_ligand - Number of Metals = 1 ---------------------------------------------------- -] -LIGAND.SPLIT_LIGAND: self.indices=[0] -LIGAND.SPLIT_LIGAND: conn_idx=[0] -LIGAND.SPLIT_LIGAND: conn_labels=['Br'] -LIGAND.SPLIT_LIGAND: conn_coord=[[4.214393809572194, 8.578874205, 3.8450989646681446]] -LIGAND.SPLIT_LIGAND: conn_radii=[1.2] -labels=['Br'] 1 -indices=None -blocklist=[[0]] -LIGAND.SPLIT_LIGAND: block=[0] -Entering COORD_CORR_NONHAPTIC: - mconnec=1 in atom idx=0, label=Br - evaluating coordination with metal -------------- Cell2mol METAL Object -------------- - Version = 0.1 - Type = atom - Sub-Type = metal - Label = Fe - Atomic Number = 26 - Index in Molecule = 2 - Metal Adjacency (mconnec) = 5 - Regular Adjacencies (connec) = 5 ----------------------------------------------------- - -ADD_ATOM: Metalist length 1 -ADD_ATOM: Ligand Atoms 1 -ADD_ATOM: site= 0 -ADD_ATOM: target ligand atom Br -ADD_ATOM: evaluating apos=array([4.21439381, 8.5788742 , 3.84509896]) and tgt.coord=[4.639630355288509, 10.935324285, 3.54657843241273] -ADD_ATOM: Chosen Metal index None. H is added at site 0 - connectivity verified for atom with label Br and ligand index 0 -LIGAND.SPLIT_LIGAND: group is found ------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 1 - Formula = Br - Has Adjacency Matrix = YES - Origin = split_ligand - Number of Metals = 1 ---------------------------------------------------- - -LIGAND.SPLIT_LIGAND: final groups self.groups=[------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 1 - Formula = Br - Has Adjacency Matrix = YES - Origin = split_ligand - Number of Metals = 1 ---------------------------------------------------- -] -LIGAND.Get_denticity: checking connectivity of ligand H27-C37-N2 -LIGAND.Get_denticity: initial connectivity is 2 -LIGAND.Get_denticity: final connectivity is 2 -LIGAND.Get_denticity: checking connectivity of ligand Br -LIGAND.Get_denticity: initial connectivity is 1 -LIGAND.Get_denticity: final connectivity is 1 -LIGAND.Get_denticity: checking connectivity of ligand Br -LIGAND.Get_denticity: initial connectivity is 1 -LIGAND.Get_denticity: final connectivity is 1 -coord_group=[------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 1 - Formula = N - Has Adjacency Matrix = YES - Origin = split_group - Number of Metals = 1 ---------------------------------------------------- -, ------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 1 - Formula = N - Has Adjacency Matrix = YES - Origin = split_group - Number of Metals = 1 ---------------------------------------------------- -, ------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 1 - Formula = Br - Has Adjacency Matrix = YES - Origin = split_ligand - Number of Metals = 1 ---------------------------------------------------- -, ------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 1 - Formula = Br - Has Adjacency Matrix = YES - Origin = split_ligand - Number of Metals = 1 ---------------------------------------------------- -] -self.coord_nr=4 -N [3.5761798956087176, 11.955509744999999, 2.031827373093959] -N [3.1660247597675237, 12.256061670000001, 4.1982272912514045] -Br [6.96420829114687, 11.3863366545, 3.9309824153024113] -Br [4.214393809572194, 8.578874205, 3.8450989646681446] -symbols=['Fe', 'N', 'N', 'Br', 'Br'] -positions=[[4.639630355288509, 10.935324285, 3.54657843241273], [3.5761798956087176, 11.955509744999999, 2.031827373093959], [3.1660247597675237, 12.256061670000001, 4.1982272912514045], [6.96420829114687, 11.3863366545, 3.9309824153024113], [4.214393809572194, 8.578874205, 3.8450989646681446]] -4 -[[1, 2], [1, 3], [1, 4], [1, 5]] -Fe [4.639630355288509, 10.935324285, 3.54657843241273] -N [3.5761798956087176, 11.955509744999999, 2.031827373093959] -N [3.1660247597675237, 12.256061670000001, 4.1982272912514045] -Br [6.96420829114687, 11.3863366545, 3.9309824153024113] -Br [4.214393809572194, 8.578874205, 3.8450989646681446] - -The number of coordinating points (including the mid point of haptic ligands) : 4 -{'Tetrahedral': 6.98, 'Square planar': 27.078, 'Seesaw': 11.897} -The most likely geometry : 'Tetrahedral' with deviation value 6.98 -The type of hapticity : [] - -self.coord_geometry='Tetrahedral' self.geom_deviation=6.98 -[1.403, 1.373, 1.199, 1.213] -1.297 -self.rel_metal_radius=0.983 -SAVING cell2mol CELL object to /Users/ycho/cell2mol/cell2mol/test/BUSVOC/Ref_Cell_BUSVOC.cell -ENTERING cell2mol with debug=2 - -################## -Checking Missing H -################## -Not a Single Molecule has Missing H atoms (apparently) -CLASSIFY_FRAGMENTS. 54 Blocks sorted as (Molec, Frag, H): 2 28 24 - -############################################## -FRAG_RECONSTRUCT. 28 molecules submitted to SEQUENTIAL with Heavy -############################################## -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 4 - Formula = H-C3 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 4 - Formula = H-C3 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 4 - Formula = H-C3 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 4 - Formula = H-C3 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 4 - Formula = H-C3 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 4 - Formula = H-C3 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 4 - Formula = H-C3 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 2 - Formula = H-C - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 4 - Formula = H-C3 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 2 - Formula = H-C - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 4 - Formula = H-C3 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 13 - Formula = H5-C8 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 4 - Formula = H-C3 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 13 - Formula = H5-C8 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 4 - Formula = H-C3 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 10 - Formula = H7-C3 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 4 - Formula = H-C3 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 4 - Formula = H2-C2 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 4 - Formula = H-C3 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 3 - Formula = H-C2 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 4 - Formula = H-C3 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 3 - Formula = H-C2 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 4 - Formula = H-C3 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 4 - Formula = H2-C2 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 4 - Formula = H-C3 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 4 - Formula = H2-C2 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 4 - Formula = H-C3 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 6 - Formula = H-C5 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 4 - Formula = H-C3 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 46 - Formula = H16-C25-N2-Fe-Br2 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist - Number of Ligands = 3 - Number of Metals = 1 ---------------------------------------------------- -] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 4 - Formula = H-C3 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 31 - Formula = H10-C16-N2-Fe-Br2 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist - Number of Ligands = 3 - Number of Metals = 1 ---------------------------------------------------- -] -goodlist=[] -avglist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 50 - Formula = H17-C28-N2-Fe-Br2 - Has Adjacency Matrix = YES ---------------------------------------------------- -] -badlist=[] -goodlist=[] -avglist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 56 - Formula = H18-C33-N2-Fe-Br2 - Has Adjacency Matrix = YES ---------------------------------------------------- -] -badlist=[] -goodlist=[] -avglist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 60 - Formula = H20-C35-N2-Fe-Br2 - Has Adjacency Matrix = YES ---------------------------------------------------- -] -badlist=[] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 60 - Formula = H20-C35-N2-Fe-Br2 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 4 - Formula = H2-C2 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 60 - Formula = H20-C35-N2-Fe-Br2 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 3 - Formula = H-C2 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 60 - Formula = H20-C35-N2-Fe-Br2 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 3 - Formula = H-C2 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -goodlist=[] -avglist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 64 - Formula = H22-C37-N2-Fe-Br2 - Has Adjacency Matrix = YES ---------------------------------------------------- -] -badlist=[] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 64 - Formula = H22-C37-N2-Fe-Br2 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 3 - Formula = H-C2 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 64 - Formula = H22-C37-N2-Fe-Br2 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 3 - Formula = H-C2 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 64 - Formula = H22-C37-N2-Fe-Br2 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 4 - Formula = H2-C2 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 64 - Formula = H22-C37-N2-Fe-Br2 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 2 - Formula = H-C - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 64 - Formula = H22-C37-N2-Fe-Br2 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 2 - Formula = H-C - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 64 - Formula = H22-C37-N2-Fe-Br2 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 4 - Formula = H-C3 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 64 - Formula = H22-C37-N2-Fe-Br2 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 4 - Formula = H-C3 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 64 - Formula = H22-C37-N2-Fe-Br2 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 4 - Formula = H-C3 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 64 - Formula = H22-C37-N2-Fe-Br2 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 4 - Formula = H2-C2 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 4 - Formula = H2-C2 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 64 - Formula = H22-C37-N2-Fe-Br2 - Has Adjacency Matrix = YES ---------------------------------------------------- -] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 64 - Formula = H22-C37-N2-Fe-Br2 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 4 - Formula = H-C3 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 4 - Formula = H-C3 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 4 - Formula = H-C3 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 4 - Formula = H-C3 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 4 - Formula = H-C3 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 4 - Formula = H-C3 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 2 - Formula = H-C - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 2 - Formula = H-C - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 2 - Formula = H-C - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 2 - Formula = H-C - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 4 - Formula = H2-C2 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 4 - Formula = H2-C2 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 3 - Formula = H-C2 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 3 - Formula = H-C2 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 3 - Formula = H-C2 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 3 - Formula = H-C2 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 31 - Formula = H10-C16-N2-Fe-Br2 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist - Number of Ligands = 3 - Number of Metals = 1 ---------------------------------------------------- -] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 31 - Formula = H10-C16-N2-Fe-Br2 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist - Number of Ligands = 3 - Number of Metals = 1 ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 10 - Formula = H7-C3 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 10 - Formula = H7-C3 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 13 - Formula = H5-C8 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 13 - Formula = H5-C8 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 13 - Formula = H5-C8 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 13 - Formula = H5-C8 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 11 - Formula = H4-C7 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 11 - Formula = H4-C7 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 11 - Formula = H4-C7 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 11 - Formula = H4-C7 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 10 - Formula = H7-C3 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 10 - Formula = H7-C3 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 6 - Formula = H-C5 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 6 - Formula = H-C5 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 31 - Formula = H10-C16-N2-Fe-Br2 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist - Number of Ligands = 3 - Number of Metals = 1 ---------------------------------------------------- -] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 31 - Formula = H10-C16-N2-Fe-Br2 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist - Number of Ligands = 3 - Number of Metals = 1 ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 12 - Formula = H8-C4 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 12 - Formula = H8-C4 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 12 - Formula = H8-C4 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -goodlist=[] -avglist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 41 - Formula = H27-C13-N - Has Adjacency Matrix = YES ---------------------------------------------------- -] -badlist=[] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 41 - Formula = H27-C13-N - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 12 - Formula = H8-C4 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 41 - Formula = H27-C13-N - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 6 - Formula = H-C5 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -goodlist=[] -avglist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 51 - Formula = H34-C16-N - Has Adjacency Matrix = YES ---------------------------------------------------- -] -badlist=[] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 51 - Formula = H34-C16-N - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 6 - Formula = H-C5 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 51 - Formula = H34-C16-N - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 12 - Formula = H8-C4 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 51 - Formula = H34-C16-N - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 11 - Formula = H4-C7 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 51 - Formula = H34-C16-N - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 11 - Formula = H4-C7 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 51 - Formula = H34-C16-N - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 13 - Formula = H5-C8 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 51 - Formula = H34-C16-N - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 13 - Formula = H5-C8 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 51 - Formula = H34-C16-N - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 10 - Formula = H7-C3 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 51 - Formula = H34-C16-N - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 3 - Formula = H-C2 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 51 - Formula = H34-C16-N - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 3 - Formula = H-C2 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 51 - Formula = H34-C16-N - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 4 - Formula = H2-C2 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 51 - Formula = H34-C16-N - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 2 - Formula = H-C - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 51 - Formula = H34-C16-N - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 2 - Formula = H-C - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 51 - Formula = H34-C16-N - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 4 - Formula = H-C3 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 51 - Formula = H34-C16-N - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 4 - Formula = H-C3 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 51 - Formula = H34-C16-N - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 4 - Formula = H-C3 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 51 - Formula = H34-C16-N - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 4 - Formula = H2-C2 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 4 - Formula = H2-C2 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 51 - Formula = H34-C16-N - Has Adjacency Matrix = YES ---------------------------------------------------- -] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 51 - Formula = H34-C16-N - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 4 - Formula = H-C3 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 4 - Formula = H-C3 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 4 - Formula = H-C3 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 4 - Formula = H-C3 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 4 - Formula = H-C3 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 4 - Formula = H-C3 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 2 - Formula = H-C - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 2 - Formula = H-C - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 2 - Formula = H-C - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 2 - Formula = H-C - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 4 - Formula = H2-C2 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 4 - Formula = H2-C2 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 3 - Formula = H-C2 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 3 - Formula = H-C2 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 3 - Formula = H-C2 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 3 - Formula = H-C2 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 10 - Formula = H7-C3 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 10 - Formula = H7-C3 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 13 - Formula = H5-C8 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 13 - Formula = H5-C8 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 13 - Formula = H5-C8 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 13 - Formula = H5-C8 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 11 - Formula = H4-C7 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 11 - Formula = H4-C7 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 11 - Formula = H4-C7 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 11 - Formula = H4-C7 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 12 - Formula = H8-C4 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 12 - Formula = H8-C4 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 6 - Formula = H-C5 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 6 - Formula = H-C5 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 31 - Formula = H10-C16-N2-Fe-Br2 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist - Number of Ligands = 3 - Number of Metals = 1 ---------------------------------------------------- -] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 31 - Formula = H10-C16-N2-Fe-Br2 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist - Number of Ligands = 3 - Number of Metals = 1 ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 31 - Formula = H10-C16-N2-Fe-Br2 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist - Number of Ligands = 3 - Number of Metals = 1 ---------------------------------------------------- -] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 31 - Formula = H10-C16-N2-Fe-Br2 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist - Number of Ligands = 3 - Number of Metals = 1 ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 29 - Formula = H19-C9-N - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 31 - Formula = H10-C16-N2-Fe-Br2 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist - Number of Ligands = 3 - Number of Metals = 1 ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 31 - Formula = H10-C16-N2-Fe-Br2 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist - Number of Ligands = 3 - Number of Metals = 1 ---------------------------------------------------- -] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 29 - Formula = H19-C9-N - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 31 - Formula = H10-C16-N2-Fe-Br2 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist - Number of Ligands = 3 - Number of Metals = 1 ---------------------------------------------------- -] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 31 - Formula = H10-C16-N2-Fe-Br2 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist - Number of Ligands = 3 - Number of Metals = 1 ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 6 - Formula = H-C5 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -goodlist=[] -avglist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 41 - Formula = H27-C13-N - Has Adjacency Matrix = YES ---------------------------------------------------- -] -badlist=[] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 41 - Formula = H27-C13-N - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 6 - Formula = H-C5 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 41 - Formula = H27-C13-N - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 11 - Formula = H4-C7 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 41 - Formula = H27-C13-N - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 11 - Formula = H4-C7 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 41 - Formula = H27-C13-N - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 13 - Formula = H5-C8 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 41 - Formula = H27-C13-N - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 13 - Formula = H5-C8 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -goodlist=[] -avglist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 51 - Formula = H34-C16-N - Has Adjacency Matrix = YES ---------------------------------------------------- -] -badlist=[] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 51 - Formula = H34-C16-N - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 13 - Formula = H5-C8 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 51 - Formula = H34-C16-N - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 13 - Formula = H5-C8 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 51 - Formula = H34-C16-N - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 11 - Formula = H4-C7 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 51 - Formula = H34-C16-N - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 11 - Formula = H4-C7 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 51 - Formula = H34-C16-N - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 6 - Formula = H-C5 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 51 - Formula = H34-C16-N - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 3 - Formula = H-C2 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 51 - Formula = H34-C16-N - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 3 - Formula = H-C2 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 51 - Formula = H34-C16-N - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 4 - Formula = H2-C2 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 51 - Formula = H34-C16-N - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 2 - Formula = H-C - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 51 - Formula = H34-C16-N - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 2 - Formula = H-C - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 51 - Formula = H34-C16-N - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 4 - Formula = H-C3 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 51 - Formula = H34-C16-N - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 4 - Formula = H-C3 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 51 - Formula = H34-C16-N - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 4 - Formula = H-C3 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 51 - Formula = H34-C16-N - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 4 - Formula = H2-C2 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 4 - Formula = H2-C2 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 51 - Formula = H34-C16-N - Has Adjacency Matrix = YES ---------------------------------------------------- -] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 51 - Formula = H34-C16-N - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 4 - Formula = H-C3 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 4 - Formula = H-C3 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 4 - Formula = H-C3 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 4 - Formula = H-C3 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 4 - Formula = H-C3 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 4 - Formula = H-C3 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 2 - Formula = H-C - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 2 - Formula = H-C - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 2 - Formula = H-C - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 2 - Formula = H-C - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 4 - Formula = H2-C2 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 4 - Formula = H2-C2 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 3 - Formula = H-C2 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 3 - Formula = H-C2 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 3 - Formula = H-C2 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 3 - Formula = H-C2 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 6 - Formula = H-C5 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 6 - Formula = H-C5 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 11 - Formula = H4-C7 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 11 - Formula = H4-C7 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 11 - Formula = H4-C7 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 11 - Formula = H4-C7 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 13 - Formula = H5-C8 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 13 - Formula = H5-C8 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 13 - Formula = H5-C8 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -goodlist=[] -avglist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 44 - Formula = H15-C24-N2-Fe-Br2 - Has Adjacency Matrix = YES ---------------------------------------------------- -] -badlist=[] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 44 - Formula = H15-C24-N2-Fe-Br2 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 13 - Formula = H5-C8 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -goodlist=[] -avglist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 55 - Formula = H19-C31-N2-Fe-Br2 - Has Adjacency Matrix = YES ---------------------------------------------------- -] -badlist=[] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 55 - Formula = H19-C31-N2-Fe-Br2 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 13 - Formula = H5-C8 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 55 - Formula = H19-C31-N2-Fe-Br2 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 11 - Formula = H4-C7 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 55 - Formula = H19-C31-N2-Fe-Br2 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 6 - Formula = H-C5 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -goodlist=[] -avglist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 58 - Formula = H20-C33-N2-Fe-Br2 - Has Adjacency Matrix = YES ---------------------------------------------------- -] -badlist=[] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 58 - Formula = H20-C33-N2-Fe-Br2 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 6 - Formula = H-C5 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 58 - Formula = H20-C33-N2-Fe-Br2 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 11 - Formula = H4-C7 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 58 - Formula = H20-C33-N2-Fe-Br2 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 3 - Formula = H-C2 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 58 - Formula = H20-C33-N2-Fe-Br2 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 4 - Formula = H2-C2 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -goodlist=[] -avglist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 60 - Formula = H21-C34-N2-Fe-Br2 - Has Adjacency Matrix = YES ---------------------------------------------------- -] -badlist=[] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 60 - Formula = H21-C34-N2-Fe-Br2 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 4 - Formula = H2-C2 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 60 - Formula = H21-C34-N2-Fe-Br2 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 3 - Formula = H-C2 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 60 - Formula = H21-C34-N2-Fe-Br2 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 6 - Formula = H-C5 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 60 - Formula = H21-C34-N2-Fe-Br2 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 2 - Formula = H-C - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -goodlist=[] -avglist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 64 - Formula = H22-C37-N2-Fe-Br2 - Has Adjacency Matrix = YES ---------------------------------------------------- -] -badlist=[] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 64 - Formula = H22-C37-N2-Fe-Br2 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 2 - Formula = H-C - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 64 - Formula = H22-C37-N2-Fe-Br2 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 3 - Formula = H-C2 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 64 - Formula = H22-C37-N2-Fe-Br2 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 4 - Formula = H2-C2 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 64 - Formula = H22-C37-N2-Fe-Br2 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 4 - Formula = H-C3 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 64 - Formula = H22-C37-N2-Fe-Br2 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 4 - Formula = H-C3 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 64 - Formula = H22-C37-N2-Fe-Br2 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 4 - Formula = H2-C2 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 4 - Formula = H2-C2 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 64 - Formula = H22-C37-N2-Fe-Br2 - Has Adjacency Matrix = YES ---------------------------------------------------- -] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 64 - Formula = H22-C37-N2-Fe-Br2 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 4 - Formula = H-C3 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 4 - Formula = H-C3 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 4 - Formula = H-C3 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 4 - Formula = H-C3 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 4 - Formula = H2-C2 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 4 - Formula = H2-C2 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 3 - Formula = H-C2 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -goodlist=[] -avglist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 5 - Formula = H2-C3 - Has Adjacency Matrix = YES ---------------------------------------------------- -] -badlist=[] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 5 - Formula = H2-C3 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 4 - Formula = H2-C2 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 5 - Formula = H2-C3 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 4 - Formula = H-C3 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 5 - Formula = H2-C3 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 4 - Formula = H-C3 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 5 - Formula = H2-C3 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 64 - Formula = H22-C37-N2-Fe-Br2 - Has Adjacency Matrix = YES ---------------------------------------------------- -] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 5 - Formula = H2-C3 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 4 - Formula = H2-C2 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 5 - Formula = H2-C3 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 6 - Formula = H-C5 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 5 - Formula = H2-C3 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 11 - Formula = H4-C7 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -goodlist=[] -avglist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 18 - Formula = H7-C11 - Has Adjacency Matrix = YES ---------------------------------------------------- -] -badlist=[] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 18 - Formula = H7-C11 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 11 - Formula = H4-C7 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 18 - Formula = H7-C11 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 6 - Formula = H-C5 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 18 - Formula = H7-C11 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 4 - Formula = H2-C2 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 18 - Formula = H7-C11 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 4 - Formula = H-C3 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 18 - Formula = H7-C11 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 4 - Formula = H-C3 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 18 - Formula = H7-C11 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 4 - Formula = H2-C2 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 18 - Formula = H7-C11 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 51 - Formula = H34-C16-N - Has Adjacency Matrix = YES ---------------------------------------------------- -] -goodlist=[] -avglist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 49 - Formula = H17-C27-N2-Fe-Br2 - Has Adjacency Matrix = YES ---------------------------------------------------- -] -badlist=[] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 49 - Formula = H17-C27-N2-Fe-Br2 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 4 - Formula = H2-C2 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 49 - Formula = H17-C27-N2-Fe-Br2 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 4 - Formula = H-C3 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -goodlist=[] -avglist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 53 - Formula = H18-C30-N2-Fe-Br2 - Has Adjacency Matrix = YES ---------------------------------------------------- -] -badlist=[] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 53 - Formula = H18-C30-N2-Fe-Br2 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 4 - Formula = H-C3 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 53 - Formula = H18-C30-N2-Fe-Br2 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 4 - Formula = H2-C2 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 53 - Formula = H18-C30-N2-Fe-Br2 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 4 - Formula = H2-C2 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 53 - Formula = H18-C30-N2-Fe-Br2 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 6 - Formula = H-C5 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -goodlist=[] -avglist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 64 - Formula = H22-C37-N2-Fe-Br2 - Has Adjacency Matrix = YES ---------------------------------------------------- -] -badlist=[] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 64 - Formula = H22-C37-N2-Fe-Br2 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 4 - Formula = H2-C2 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 64 - Formula = H22-C37-N2-Fe-Br2 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 4 - Formula = H2-C2 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 64 - Formula = H22-C37-N2-Fe-Br2 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 4 - Formula = H-C3 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 4 - Formula = H-C3 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 64 - Formula = H22-C37-N2-Fe-Br2 - Has Adjacency Matrix = YES ---------------------------------------------------- -] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 64 - Formula = H22-C37-N2-Fe-Br2 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 4 - Formula = H2-C2 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 4 - Formula = H2-C2 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 4 - Formula = H2-C2 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -goodlist=[] -avglist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 10 - Formula = H3-C7 - Has Adjacency Matrix = YES ---------------------------------------------------- -] -badlist=[] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 10 - Formula = H3-C7 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 4 - Formula = H2-C2 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 10 - Formula = H3-C7 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 4 - Formula = H-C3 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 10 - Formula = H3-C7 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 51 - Formula = H34-C16-N - Has Adjacency Matrix = YES ---------------------------------------------------- -] -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 10 - Formula = H3-C7 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 51 - Formula = H34-C16-N - Has Adjacency Matrix = YES ---------------------------------------------------- -] -goodlist=[] -avglist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 56 - Formula = H19-C32-N2-Fe-Br2 - Has Adjacency Matrix = YES ---------------------------------------------------- -] -badlist=[] -goodlist=[] -avglist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 60 - Formula = H20-C35-N2-Fe-Br2 - Has Adjacency Matrix = YES ---------------------------------------------------- -] -badlist=[] -goodlist=[] -avglist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 64 - Formula = H22-C37-N2-Fe-Br2 - Has Adjacency Matrix = YES ---------------------------------------------------- -] -badlist=[] -FRAG_RECONSTRUCT. 0 molecules and 6 fragments out of SEQUENTIAL with Heavy -FRAG_RECONSTRUCT. 30 molecules submitted to sequential with All -H22-C37-N2-Fe-Br2 Rec. Fragment ['Br', 'Br', 'Fe', 'C', 'C', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'N', 'N', 'C', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'H'] -H34-C16-N Rec. Fragment ['C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'N', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] -H34-C16-N Rec. Fragment ['C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'N', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] -H22-C37-N2-Fe-Br2 Rec. Fragment ['Br', 'Br', 'Fe', 'C', 'C', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'N', 'N', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'C', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H'] -H22-C37-N2-Fe-Br2 Rec. Fragment ['Br', 'Br', 'Fe', 'C', 'C', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'N', 'N', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'C'] -H22-C37-N2-Fe-Br2 Rec. Fragment ['Br', 'Br', 'Fe', 'C', 'C', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'N', 'N', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'C', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H'] -H H ['H'] -H H ['H'] -H H ['H'] -H H ['H'] -H H ['H'] -H H ['H'] -H H ['H'] -H H ['H'] -H H ['H'] -H H ['H'] -H H ['H'] -H H ['H'] -H H ['H'] -H H ['H'] -H H ['H'] -H H ['H'] -H H ['H'] -H H ['H'] -H H ['H'] -H H ['H'] -H H ['H'] -H H ['H'] -H H ['H'] -H H ['H'] -sublist 2 ['H22-C37-N2-Fe-Br2', 'H'] -list1 6 ['H22-C37-N2-Fe-Br2', 'H34-C16-N', 'H34-C16-N', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -list2 24 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 5 ['H34-C16-N', 'H34-C16-N', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -keeplist2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 64 - Formula = H22-C37-N2-Fe-Br2 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -sublist 2 ['H22-C37-N2-Fe-Br2', 'H'] -list1 6 ['H22-C37-N2-Fe-Br2', 'H34-C16-N', 'H34-C16-N', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -list2 24 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 5 ['H34-C16-N', 'H34-C16-N', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -keeplist2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -goodlist=[] -avglist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 65 - Formula = H23-C37-N2-Fe-Br2 - Has Adjacency Matrix = YES ---------------------------------------------------- -] -badlist=[] -sublist 2 ['H23-C37-N2-Fe-Br2', 'H'] -list1 6 ['H23-C37-N2-Fe-Br2', 'H34-C16-N', 'H34-C16-N', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 5 ['H34-C16-N', 'H34-C16-N', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 65 - Formula = H23-C37-N2-Fe-Br2 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -sublist 2 ['H23-C37-N2-Fe-Br2', 'H'] -list1 6 ['H23-C37-N2-Fe-Br2', 'H34-C16-N', 'H34-C16-N', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 5 ['H34-C16-N', 'H34-C16-N', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 65 - Formula = H23-C37-N2-Fe-Br2 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -sublist 2 ['H23-C37-N2-Fe-Br2', 'H'] -list1 6 ['H23-C37-N2-Fe-Br2', 'H34-C16-N', 'H34-C16-N', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 5 ['H34-C16-N', 'H34-C16-N', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 65 - Formula = H23-C37-N2-Fe-Br2 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -sublist 2 ['H23-C37-N2-Fe-Br2', 'H'] -list1 6 ['H23-C37-N2-Fe-Br2', 'H34-C16-N', 'H34-C16-N', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 5 ['H34-C16-N', 'H34-C16-N', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 65 - Formula = H23-C37-N2-Fe-Br2 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -sublist 2 ['H23-C37-N2-Fe-Br2', 'H'] -list1 6 ['H23-C37-N2-Fe-Br2', 'H34-C16-N', 'H34-C16-N', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 5 ['H34-C16-N', 'H34-C16-N', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 65 - Formula = H23-C37-N2-Fe-Br2 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -sublist 2 ['H23-C37-N2-Fe-Br2', 'H'] -list1 6 ['H23-C37-N2-Fe-Br2', 'H34-C16-N', 'H34-C16-N', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 5 ['H34-C16-N', 'H34-C16-N', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -goodlist=[] -avglist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 66 - Formula = H24-C37-N2-Fe-Br2 - Has Adjacency Matrix = YES ---------------------------------------------------- -] -badlist=[] -sublist 2 ['H24-C37-N2-Fe-Br2', 'H'] -list1 6 ['H24-C37-N2-Fe-Br2', 'H34-C16-N', 'H34-C16-N', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -list2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 5 ['H34-C16-N', 'H34-C16-N', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -keeplist2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 66 - Formula = H24-C37-N2-Fe-Br2 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -sublist 2 ['H24-C37-N2-Fe-Br2', 'H'] -list1 6 ['H24-C37-N2-Fe-Br2', 'H34-C16-N', 'H34-C16-N', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -list2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 5 ['H34-C16-N', 'H34-C16-N', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -keeplist2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 66 - Formula = H24-C37-N2-Fe-Br2 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -sublist 2 ['H24-C37-N2-Fe-Br2', 'H'] -list1 6 ['H24-C37-N2-Fe-Br2', 'H34-C16-N', 'H34-C16-N', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -list2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 5 ['H34-C16-N', 'H34-C16-N', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -keeplist2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 66 - Formula = H24-C37-N2-Fe-Br2 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -sublist 2 ['H24-C37-N2-Fe-Br2', 'H'] -list1 6 ['H24-C37-N2-Fe-Br2', 'H34-C16-N', 'H34-C16-N', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -list2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 5 ['H34-C16-N', 'H34-C16-N', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -keeplist2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 66 - Formula = H24-C37-N2-Fe-Br2 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -sublist 2 ['H24-C37-N2-Fe-Br2', 'H'] -list1 6 ['H24-C37-N2-Fe-Br2', 'H34-C16-N', 'H34-C16-N', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -list2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 5 ['H34-C16-N', 'H34-C16-N', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -keeplist2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 66 - Formula = H24-C37-N2-Fe-Br2 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -sublist 2 ['H24-C37-N2-Fe-Br2', 'H'] -list1 6 ['H24-C37-N2-Fe-Br2', 'H34-C16-N', 'H34-C16-N', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -list2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 5 ['H34-C16-N', 'H34-C16-N', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -keeplist2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 66 - Formula = H24-C37-N2-Fe-Br2 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -sublist 2 ['H24-C37-N2-Fe-Br2', 'H'] -list1 6 ['H24-C37-N2-Fe-Br2', 'H34-C16-N', 'H34-C16-N', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -list2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 5 ['H34-C16-N', 'H34-C16-N', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -keeplist2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 66 - Formula = H24-C37-N2-Fe-Br2 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -sublist 2 ['H24-C37-N2-Fe-Br2', 'H'] -list1 6 ['H24-C37-N2-Fe-Br2', 'H34-C16-N', 'H34-C16-N', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -list2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 5 ['H34-C16-N', 'H34-C16-N', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -keeplist2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 66 - Formula = H24-C37-N2-Fe-Br2 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -sublist 2 ['H24-C37-N2-Fe-Br2', 'H'] -list1 6 ['H24-C37-N2-Fe-Br2', 'H34-C16-N', 'H34-C16-N', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -list2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 5 ['H34-C16-N', 'H34-C16-N', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -keeplist2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 66 - Formula = H24-C37-N2-Fe-Br2 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -sublist 2 ['H24-C37-N2-Fe-Br2', 'H'] -list1 6 ['H24-C37-N2-Fe-Br2', 'H34-C16-N', 'H34-C16-N', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -list2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 5 ['H34-C16-N', 'H34-C16-N', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -keeplist2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -goodlist=[] -avglist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 67 - Formula = H25-C37-N2-Fe-Br2 - Has Adjacency Matrix = YES ---------------------------------------------------- -] -badlist=[] -sublist 2 ['H25-C37-N2-Fe-Br2', 'H'] -list1 6 ['H25-C37-N2-Fe-Br2', 'H34-C16-N', 'H34-C16-N', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 5 ['H34-C16-N', 'H34-C16-N', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 67 - Formula = H25-C37-N2-Fe-Br2 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -sublist 2 ['H25-C37-N2-Fe-Br2', 'H'] -list1 6 ['H25-C37-N2-Fe-Br2', 'H34-C16-N', 'H34-C16-N', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 5 ['H34-C16-N', 'H34-C16-N', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 67 - Formula = H25-C37-N2-Fe-Br2 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -sublist 2 ['H25-C37-N2-Fe-Br2', 'H'] -list1 6 ['H25-C37-N2-Fe-Br2', 'H34-C16-N', 'H34-C16-N', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 5 ['H34-C16-N', 'H34-C16-N', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 67 - Formula = H25-C37-N2-Fe-Br2 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -sublist 2 ['H25-C37-N2-Fe-Br2', 'H'] -list1 6 ['H25-C37-N2-Fe-Br2', 'H34-C16-N', 'H34-C16-N', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 5 ['H34-C16-N', 'H34-C16-N', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 67 - Formula = H25-C37-N2-Fe-Br2 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -sublist 2 ['H25-C37-N2-Fe-Br2', 'H'] -list1 6 ['H25-C37-N2-Fe-Br2', 'H34-C16-N', 'H34-C16-N', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 5 ['H34-C16-N', 'H34-C16-N', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 67 - Formula = H25-C37-N2-Fe-Br2 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -sublist 2 ['H25-C37-N2-Fe-Br2', 'H'] -list1 6 ['H25-C37-N2-Fe-Br2', 'H34-C16-N', 'H34-C16-N', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 5 ['H34-C16-N', 'H34-C16-N', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 67 - Formula = H25-C37-N2-Fe-Br2 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -sublist 2 ['H25-C37-N2-Fe-Br2', 'H'] -list1 6 ['H25-C37-N2-Fe-Br2', 'H34-C16-N', 'H34-C16-N', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 5 ['H34-C16-N', 'H34-C16-N', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 67 - Formula = H25-C37-N2-Fe-Br2 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -sublist 2 ['H25-C37-N2-Fe-Br2', 'H'] -list1 6 ['H25-C37-N2-Fe-Br2', 'H34-C16-N', 'H34-C16-N', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 5 ['H34-C16-N', 'H34-C16-N', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 67 - Formula = H25-C37-N2-Fe-Br2 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -sublist 2 ['H25-C37-N2-Fe-Br2', 'H'] -list1 6 ['H25-C37-N2-Fe-Br2', 'H34-C16-N', 'H34-C16-N', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 5 ['H34-C16-N', 'H34-C16-N', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 67 - Formula = H25-C37-N2-Fe-Br2 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -sublist 2 ['H25-C37-N2-Fe-Br2', 'H'] -list1 6 ['H25-C37-N2-Fe-Br2', 'H34-C16-N', 'H34-C16-N', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 5 ['H34-C16-N', 'H34-C16-N', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 67 - Formula = H25-C37-N2-Fe-Br2 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -sublist 2 ['H25-C37-N2-Fe-Br2', 'H'] -list1 6 ['H25-C37-N2-Fe-Br2', 'H34-C16-N', 'H34-C16-N', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 5 ['H34-C16-N', 'H34-C16-N', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 67 - Formula = H25-C37-N2-Fe-Br2 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -sublist 2 ['H25-C37-N2-Fe-Br2', 'H'] -list1 6 ['H25-C37-N2-Fe-Br2', 'H34-C16-N', 'H34-C16-N', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 5 ['H34-C16-N', 'H34-C16-N', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 67 - Formula = H25-C37-N2-Fe-Br2 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -sublist 2 ['H25-C37-N2-Fe-Br2', 'H'] -list1 6 ['H25-C37-N2-Fe-Br2', 'H34-C16-N', 'H34-C16-N', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 5 ['H34-C16-N', 'H34-C16-N', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -goodlist=[] -avglist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 68 - Formula = H26-C37-N2-Fe-Br2 - Has Adjacency Matrix = YES ---------------------------------------------------- -] -badlist=[] -sublist 2 ['H26-C37-N2-Fe-Br2', 'H'] -list1 6 ['H26-C37-N2-Fe-Br2', 'H34-C16-N', 'H34-C16-N', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -list2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 5 ['H34-C16-N', 'H34-C16-N', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -keeplist2 19 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 68 - Formula = H26-C37-N2-Fe-Br2 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -sublist 2 ['H26-C37-N2-Fe-Br2', 'H'] -list1 6 ['H26-C37-N2-Fe-Br2', 'H34-C16-N', 'H34-C16-N', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -list2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 5 ['H34-C16-N', 'H34-C16-N', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -keeplist2 19 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 68 - Formula = H26-C37-N2-Fe-Br2 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -sublist 2 ['H26-C37-N2-Fe-Br2', 'H'] -list1 6 ['H26-C37-N2-Fe-Br2', 'H34-C16-N', 'H34-C16-N', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -list2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 5 ['H34-C16-N', 'H34-C16-N', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -keeplist2 19 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 68 - Formula = H26-C37-N2-Fe-Br2 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -sublist 2 ['H26-C37-N2-Fe-Br2', 'H'] -list1 6 ['H26-C37-N2-Fe-Br2', 'H34-C16-N', 'H34-C16-N', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -list2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 5 ['H34-C16-N', 'H34-C16-N', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -keeplist2 19 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 68 - Formula = H26-C37-N2-Fe-Br2 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -sublist 2 ['H26-C37-N2-Fe-Br2', 'H'] -list1 6 ['H26-C37-N2-Fe-Br2', 'H34-C16-N', 'H34-C16-N', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -list2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 5 ['H34-C16-N', 'H34-C16-N', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -keeplist2 19 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 68 - Formula = H26-C37-N2-Fe-Br2 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -sublist 2 ['H26-C37-N2-Fe-Br2', 'H'] -list1 6 ['H26-C37-N2-Fe-Br2', 'H34-C16-N', 'H34-C16-N', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -list2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 5 ['H34-C16-N', 'H34-C16-N', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -keeplist2 19 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 68 - Formula = H26-C37-N2-Fe-Br2 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -sublist 2 ['H26-C37-N2-Fe-Br2', 'H'] -list1 6 ['H26-C37-N2-Fe-Br2', 'H34-C16-N', 'H34-C16-N', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -list2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 5 ['H34-C16-N', 'H34-C16-N', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -keeplist2 19 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 68 - Formula = H26-C37-N2-Fe-Br2 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -sublist 2 ['H26-C37-N2-Fe-Br2', 'H'] -list1 6 ['H26-C37-N2-Fe-Br2', 'H34-C16-N', 'H34-C16-N', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -list2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 5 ['H34-C16-N', 'H34-C16-N', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -keeplist2 19 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 68 - Formula = H26-C37-N2-Fe-Br2 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -sublist 2 ['H26-C37-N2-Fe-Br2', 'H'] -list1 6 ['H26-C37-N2-Fe-Br2', 'H34-C16-N', 'H34-C16-N', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -list2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 5 ['H34-C16-N', 'H34-C16-N', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -keeplist2 19 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 68 - Formula = H26-C37-N2-Fe-Br2 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -sublist 2 ['H26-C37-N2-Fe-Br2', 'H'] -list1 6 ['H26-C37-N2-Fe-Br2', 'H34-C16-N', 'H34-C16-N', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -list2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 5 ['H34-C16-N', 'H34-C16-N', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -keeplist2 19 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 68 - Formula = H26-C37-N2-Fe-Br2 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -sublist 2 ['H26-C37-N2-Fe-Br2', 'H'] -list1 6 ['H26-C37-N2-Fe-Br2', 'H34-C16-N', 'H34-C16-N', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -list2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 5 ['H34-C16-N', 'H34-C16-N', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -keeplist2 19 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 68 - Formula = H26-C37-N2-Fe-Br2 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -sublist 2 ['H26-C37-N2-Fe-Br2', 'H'] -list1 6 ['H26-C37-N2-Fe-Br2', 'H34-C16-N', 'H34-C16-N', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -list2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 5 ['H34-C16-N', 'H34-C16-N', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -keeplist2 19 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 68 - Formula = H26-C37-N2-Fe-Br2 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -sublist 2 ['H26-C37-N2-Fe-Br2', 'H'] -list1 6 ['H26-C37-N2-Fe-Br2', 'H34-C16-N', 'H34-C16-N', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -list2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 5 ['H34-C16-N', 'H34-C16-N', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -keeplist2 19 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 68 - Formula = H26-C37-N2-Fe-Br2 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -sublist 2 ['H26-C37-N2-Fe-Br2', 'H'] -list1 6 ['H26-C37-N2-Fe-Br2', 'H34-C16-N', 'H34-C16-N', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -list2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 5 ['H34-C16-N', 'H34-C16-N', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -keeplist2 19 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 68 - Formula = H26-C37-N2-Fe-Br2 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -sublist 2 ['H26-C37-N2-Fe-Br2', 'H'] -list1 6 ['H26-C37-N2-Fe-Br2', 'H34-C16-N', 'H34-C16-N', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -list2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 5 ['H34-C16-N', 'H34-C16-N', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -keeplist2 19 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 68 - Formula = H26-C37-N2-Fe-Br2 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -sublist 2 ['H26-C37-N2-Fe-Br2', 'H'] -list1 6 ['H26-C37-N2-Fe-Br2', 'H34-C16-N', 'H34-C16-N', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -list2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 5 ['H34-C16-N', 'H34-C16-N', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -keeplist2 19 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -MOLECULE.SPLIT COMPLEX: labels=['Br', 'Br', 'Fe', 'C', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'N', 'N', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H'] -MOLECULE.SPLIT COMPLEX: metal_idx=[2] -MOLECULE.SPLIT COMPLEX: rest_idx=[0, 1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68] -SPLIT COMPLEX: rest labels: ['Br', 'Br', 'C', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'N', 'N', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H'] -SPLIT COMPLEX: rest coord: [[12.4449811, 0.8921242, 3.9426641], [9.6951666, 3.6995867, 3.8567806], [14.8825817, 5.8914327, 5.1745013], [14.6716947, 3.2193646, 9.0109091], [16.2250079, 5.5676668, 5.0407075], [14.524264499999997, 7.1615912, 5.6138869], [17.4965991, 8.3908563, 5.99502], [13.3770285, 4.4000494, 7.1761121], [14.0057839, 5.1439731, 7.2753282], [13.5737589, 5.2392888, 10.0050949], [15.3907904, 4.3199535, 2.0027011], [13.8173218, 4.896921, 4.8396275], [10.7569529, 4.4444789, 6.544836], [14.153189, 1.9696528, 7.0216029], [13.7655453, 1.9201502, 6.1772536], [13.784138199999997, 6.4013717, 0.3292666], [13.223217899999998, 7.4561475, -1.3021139000000002], [12.049520300000001, 4.922902199999999, 1.1144289], [16.7774596, 1.3805403, 2.2989476], [15.146112200000001, 6.9366769, 0.3425058], [12.1379349, 4.7482592, 7.9854165], [16.6858129, 2.2682062, 2.0361885], [14.8441476, 0.0707181, 7.0370227], [13.3135407, 5.4768094000000005, 1.2837349], [16.2636997, 6.2951408, 0.7054156], [17.0562523, 6.7751014, 0.6308088], [12.9386854, 6.798008, -0.7091536999999999], [11.149331999999998, 6.4860796999999994, -1.5887036000000005], [10.8630108, 4.7291961, 7.4242302], [11.7342159, 4.3015053, 1.7304409], [11.2506169, 5.2864854, 0.0373813], [10.415237999999999, 4.8918477, -0.07320490000000035], [15.5543446, 2.9879935, 2.3997213], [14.898256, 2.578136, 2.9141809], [16.3795979, 4.9235171, 1.206013], [11.1455128, 5.6097902, 10.0231625], [11.2423065, 5.9218722, 10.8935229], [17.1999953, 6.5119071, 5.3414709], [16.4723211, 4.7196645, 4.7505354], [12.2789744, 5.1882488, 9.3193045], [15.2641412, 8.947377, 6.2099622], [17.5268892, 4.1860503, 0.8765906], [18.1993383, 4.5889898, 0.3769277], [15.5051108, 8.0986061, 5.9177654], [15.245776099999997, 7.8204994, 0.0685323], [11.689905199999998, 6.2342617, -0.8747214999999997], [13.625235999999997, 7.3854294, 5.7053152], [9.8945096, 5.573354999999999, 9.4588612], [9.152137699999997, 5.8450047000000005, 9.9465309], [14.8136915, 0.8599936, 7.5282748], [15.8729305, 0.1875567, 9.1132403], [13.083195, 4.2687597, 5.7559357], [13.4933502, 4.5693117, 3.5895357], [14.0555856, 3.1547959, 7.7444631], [14.2106275, 5.162575, 2.4721475], [14.5760582, 6.0156505, 2.7880192], [15.4296937, 0.9274833, 8.7687097], [18.1006685, 6.2969856, 5.2427221], [14.6008054, 4.4002032, 9.8719242], [13.6931187, 5.9403204, 10.6038181], [15.3749906, 2.0997126, 9.4837821], [15.8154533, 2.15229, 10.3016529], [16.8395445, 7.7665385, 5.7847504], [15.3564341, 4.5859151, 10.383684], [17.677336, 2.8740758, 1.280464], [18.4408518, 2.398266, 1.0466754], [9.7496741, 5.1256786000000005, 8.1470904], [8.906324399999999, 5.0932406, 7.756612]] -SPLIT COMPLEX: rest indices: [0, 1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68] -SPLIT COMPLEX: rest radii: [1.2, 1.2, 0.73, 0.73, 0.73, 0.73, 0.31, 0.73, 0.31, 0.73, 0.73, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.73, 0.73, 0.31, 0.73, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.71, 0.71, 0.73, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31] -SPLIT COMPLEX: splitting species with 68 atoms in block -labels=['Br', 'Br', 'C', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'N', 'N', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H'] 68 -indices=None -SPLIT COMPLEX: received 3 blocks -PREPARING BLOCK: [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67] -CREATING LIGAND: H27-C37-N2 -PREPARING BLOCK: [1] -CREATING LIGAND: Br -PREPARING BLOCK: [0] -CREATING LIGAND: Br -LIGAND.SPLIT_LIGAND: self.indices=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65] -LIGAND.SPLIT_LIGAND: conn_idx=[9, 49, 50] -LIGAND.SPLIT_LIGAND: conn_labels=['C', 'N', 'N'] -LIGAND.SPLIT_LIGAND: conn_coord=[[13.8173218, 4.896921, 4.8396275], [13.083195, 4.2687597, 5.7559357], [13.4933502, 4.5693117, 3.5895357]] -LIGAND.SPLIT_LIGAND: conn_radii=[0.73, 0.71, 0.71] -blocklist=[[0, 1, 2]] -LIGAND.SPLIT_LIGAND: block=[0, 1, 2] -ADD_ATOM: Metalist length 1 -ADD_ATOM: Ligand Atoms 66 -ADD_ATOM: site= 9 -ADD_ATOM: target ligand atom C -ADD_ATOM: evaluating apos=array([13.8173218, 4.896921 , 4.8396275]) and tgt.coord=[12.0197446, 3.2485743, 4.2411846] -ADD_ATOM: Chosen Metal index None. H was added at site 9 but RESET due to connec=3 -ADD_ATOM: Metalist length 1 -ADD_ATOM: Ligand Atoms 66 -ADD_ATOM: site= 49 -ADD_ATOM: target ligand atom N -ADD_ATOM: evaluating apos=array([13.083195 , 4.2687597, 5.7559357]) and tgt.coord=[12.0197446, 3.2485743, 4.2411846] -ADD_ATOM: Chosen Metal index None. H is added at site 49 -ADD_ATOM: Metalist length 1 -ADD_ATOM: Ligand Atoms 66 -ADD_ATOM: site= 50 -ADD_ATOM: target ligand atom N -ADD_ATOM: evaluating apos=array([13.4933502, 4.5693117, 3.5895357]) and tgt.coord=[12.0197446, 3.2485743, 4.2411846] -ADD_ATOM: Chosen Metal index None. H is added at site 50 -LIGAND.SPLIT_LIGAND: group is found ------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 3 - Formula = C-N2 - Has Adjacency Matrix = YES - Origin = split_ligand - Number of Metals = 1 ---------------------------------------------------- - -GROUP.SPLIT_GROUP: conn_idx=[1, 2] -GROUP.SPLIT_GROUP: conn_labels=['N', 'N'] -GROUP.SPLIT_GROUP: conn_coord=[[13.083195, 4.2687597, 5.7559357], [13.4933502, 4.5693117, 3.5895357]] -GROUP.SPLIT_GROUP: conn_radii=[0.71, 0.71] -blocklist=[[1], [0]] -GROUP.SPLIT_GROUP: block=[1] -ADD_ATOM: Metalist length 1 -ADD_ATOM: Ligand Atoms 66 -ADD_ATOM: site= 50 -ADD_ATOM: target ligand atom N -ADD_ATOM: evaluating apos=array([13.4933502, 4.5693117, 3.5895357]) and tgt.coord=[12.0197446, 3.2485743, 4.2411846] -ADD_ATOM: Chosen Metal index None. H is added at site 50 -GROUP.SPLIT_GROUP: block=[0] -ADD_ATOM: Metalist length 1 -ADD_ATOM: Ligand Atoms 66 -ADD_ATOM: site= 49 -ADD_ATOM: target ligand atom N -ADD_ATOM: evaluating apos=array([13.083195 , 4.2687597, 5.7559357]) and tgt.coord=[12.0197446, 3.2485743, 4.2411846] -ADD_ATOM: Chosen Metal index None. H is added at site 49 -LIGAND.SPLIT_LIGAND: final groups self.groups=[------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 1 - Formula = N - Has Adjacency Matrix = YES - Origin = split_group - Number of Metals = 1 ---------------------------------------------------- -, ------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 1 - Formula = N - Has Adjacency Matrix = YES - Origin = split_group - Number of Metals = 1 ---------------------------------------------------- -] -LIGAND.SPLIT_LIGAND: self.indices=[0] -LIGAND.SPLIT_LIGAND: conn_idx=[0] -LIGAND.SPLIT_LIGAND: conn_labels=['Br'] -LIGAND.SPLIT_LIGAND: conn_coord=[[9.6951666, 3.6995867, 3.8567806]] -LIGAND.SPLIT_LIGAND: conn_radii=[1.2] -blocklist=[[0]] -LIGAND.SPLIT_LIGAND: block=[0] -ADD_ATOM: Metalist length 1 -ADD_ATOM: Ligand Atoms 1 -ADD_ATOM: site= 0 -ADD_ATOM: target ligand atom Br -ADD_ATOM: evaluating apos=array([9.6951666, 3.6995867, 3.8567806]) and tgt.coord=[12.0197446, 3.2485743, 4.2411846] -ADD_ATOM: Chosen Metal index None. H is added at site 0 -LIGAND.SPLIT_LIGAND: group is found ------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 1 - Formula = Br - Has Adjacency Matrix = YES - Origin = split_ligand - Number of Metals = 1 ---------------------------------------------------- - -LIGAND.SPLIT_LIGAND: final groups self.groups=[------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 1 - Formula = Br - Has Adjacency Matrix = YES - Origin = split_ligand - Number of Metals = 1 ---------------------------------------------------- -] -LIGAND.SPLIT_LIGAND: self.indices=[0] -LIGAND.SPLIT_LIGAND: conn_idx=[0] -LIGAND.SPLIT_LIGAND: conn_labels=['Br'] -LIGAND.SPLIT_LIGAND: conn_coord=[[12.4449811, 0.8921242, 3.9426641]] -LIGAND.SPLIT_LIGAND: conn_radii=[1.2] -blocklist=[[0]] -LIGAND.SPLIT_LIGAND: block=[0] -ADD_ATOM: Metalist length 1 -ADD_ATOM: Ligand Atoms 1 -ADD_ATOM: site= 0 -ADD_ATOM: target ligand atom Br -ADD_ATOM: evaluating apos=array([12.4449811, 0.8921242, 3.9426641]) and tgt.coord=[12.0197446, 3.2485743, 4.2411846] -ADD_ATOM: Chosen Metal index None. H is added at site 0 -LIGAND.SPLIT_LIGAND: group is found ------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 1 - Formula = Br - Has Adjacency Matrix = YES - Origin = split_ligand - Number of Metals = 1 ---------------------------------------------------- - -LIGAND.SPLIT_LIGAND: final groups self.groups=[------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 1 - Formula = Br - Has Adjacency Matrix = YES - Origin = split_ligand - Number of Metals = 1 ---------------------------------------------------- -] -symbols=['Fe', 'N', 'N', 'Br', 'Br'] -positions=[[12.0197446, 3.2485743, 4.2411846], [13.4933502, 4.5693117, 3.5895357], [13.083195, 4.2687597, 5.7559357], [9.6951666, 3.6995867, 3.8567806], [12.4449811, 0.8921242, 3.9426641]] -4 -[[1, 2], [1, 3], [1, 4], [1, 5]] -[1.373, 1.403, 1.199, 1.213] -1.297 -reordered_newmolec=------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 69 - Formula = H27-C37-N2-Fe-Br2 - Has Adjacency Matrix = YES - Number of Ligands = 3 - Number of Metals = 1 ---------------------------------------------------- - -COMPARE_SPECIES. Comparing: -------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 69 - Formula = H27-C37-N2-Fe-Br2 - Has Adjacency Matrix = YES - Number of Ligands = 3 - Number of Metals = 1 ---------------------------------------------------- - -------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 69 - Formula = H27-C37-N2-Fe-Br2 - Has Adjacency Matrix = YES - Number of Ligands = 3 - Number of Metals = 1 ---------------------------------------------------- - -['Br', 'Br', 'Fe', 'C', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'N', 'N', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H'] -['Br', 'Br', 'Fe', 'C', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'N', 'N', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H'] -mol1.adj_types=array([[0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0], - ..., - [0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0]]) -mol2.adj_types=array([[0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0], - ..., - [0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0]]) -kdx ldx elem1 - elem2 : reordered - reference -goodlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 69 - Formula = H27-C37-N2-Fe-Br2 - Has Adjacency Matrix = YES - Number of Ligands = 3 - Number of Metals = 1 ---------------------------------------------------- -] -avglist=[] -badlist=[] -sublist 2 ['H34-C16-N', 'H'] -list1 5 ['H34-C16-N', 'H34-C16-N', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -list2 19 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 4 ['H34-C16-N', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -keeplist2 18 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 51 - Formula = H34-C16-N - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -sublist 2 ['H34-C16-N', 'H'] -list1 5 ['H34-C16-N', 'H34-C16-N', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -list2 19 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 4 ['H34-C16-N', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -keeplist2 18 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 51 - Formula = H34-C16-N - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -sublist 2 ['H34-C16-N', 'H'] -list1 5 ['H34-C16-N', 'H34-C16-N', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -list2 19 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 4 ['H34-C16-N', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -keeplist2 18 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 51 - Formula = H34-C16-N - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -sublist 2 ['H34-C16-N', 'H'] -list1 5 ['H34-C16-N', 'H34-C16-N', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -list2 19 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 4 ['H34-C16-N', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -keeplist2 18 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 51 - Formula = H34-C16-N - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -sublist 2 ['H34-C16-N', 'H'] -list1 5 ['H34-C16-N', 'H34-C16-N', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -list2 19 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 4 ['H34-C16-N', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -keeplist2 18 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 51 - Formula = H34-C16-N - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -sublist 2 ['H34-C16-N', 'H'] -list1 5 ['H34-C16-N', 'H34-C16-N', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -list2 19 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 4 ['H34-C16-N', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -keeplist2 18 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 51 - Formula = H34-C16-N - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -sublist 2 ['H34-C16-N', 'H'] -list1 5 ['H34-C16-N', 'H34-C16-N', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -list2 19 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 4 ['H34-C16-N', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -keeplist2 18 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 51 - Formula = H34-C16-N - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -sublist 2 ['H34-C16-N', 'H'] -list1 5 ['H34-C16-N', 'H34-C16-N', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -list2 19 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 4 ['H34-C16-N', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -keeplist2 18 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 51 - Formula = H34-C16-N - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -sublist 2 ['H34-C16-N', 'H'] -list1 5 ['H34-C16-N', 'H34-C16-N', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -list2 19 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 4 ['H34-C16-N', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -keeplist2 18 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -goodlist=[] -avglist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 52 - Formula = H35-C16-N - Has Adjacency Matrix = YES ---------------------------------------------------- -] -badlist=[] -sublist 2 ['H35-C16-N', 'H'] -list1 5 ['H35-C16-N', 'H34-C16-N', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -list2 18 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 4 ['H34-C16-N', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -keeplist2 17 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 52 - Formula = H35-C16-N - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -sublist 2 ['H35-C16-N', 'H'] -list1 5 ['H35-C16-N', 'H34-C16-N', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -list2 18 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 4 ['H34-C16-N', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -keeplist2 17 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 52 - Formula = H35-C16-N - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -sublist 2 ['H35-C16-N', 'H'] -list1 5 ['H35-C16-N', 'H34-C16-N', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -list2 18 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 4 ['H34-C16-N', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -keeplist2 17 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 52 - Formula = H35-C16-N - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -sublist 2 ['H35-C16-N', 'H'] -list1 5 ['H35-C16-N', 'H34-C16-N', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -list2 18 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 4 ['H34-C16-N', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -keeplist2 17 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 52 - Formula = H35-C16-N - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -sublist 2 ['H35-C16-N', 'H'] -list1 5 ['H35-C16-N', 'H34-C16-N', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -list2 18 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 4 ['H34-C16-N', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -keeplist2 17 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 52 - Formula = H35-C16-N - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -sublist 2 ['H35-C16-N', 'H'] -list1 5 ['H35-C16-N', 'H34-C16-N', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -list2 18 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 4 ['H34-C16-N', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -keeplist2 17 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 52 - Formula = H35-C16-N - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -sublist 2 ['H35-C16-N', 'H'] -list1 5 ['H35-C16-N', 'H34-C16-N', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -list2 18 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 4 ['H34-C16-N', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -keeplist2 17 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 52 - Formula = H35-C16-N - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -sublist 2 ['H35-C16-N', 'H'] -list1 5 ['H35-C16-N', 'H34-C16-N', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -list2 18 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 4 ['H34-C16-N', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -keeplist2 17 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 52 - Formula = H35-C16-N - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -sublist 2 ['H35-C16-N', 'H'] -list1 5 ['H35-C16-N', 'H34-C16-N', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -list2 18 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 4 ['H34-C16-N', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -keeplist2 17 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 52 - Formula = H35-C16-N - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -sublist 2 ['H35-C16-N', 'H'] -list1 5 ['H35-C16-N', 'H34-C16-N', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -list2 18 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 4 ['H34-C16-N', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -keeplist2 17 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 52 - Formula = H35-C16-N - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -sublist 2 ['H35-C16-N', 'H'] -list1 5 ['H35-C16-N', 'H34-C16-N', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -list2 18 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 4 ['H34-C16-N', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -keeplist2 17 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 52 - Formula = H35-C16-N - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -sublist 2 ['H35-C16-N', 'H'] -list1 5 ['H35-C16-N', 'H34-C16-N', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -list2 18 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 4 ['H34-C16-N', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -keeplist2 17 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 52 - Formula = H35-C16-N - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -sublist 2 ['H35-C16-N', 'H'] -list1 5 ['H35-C16-N', 'H34-C16-N', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -list2 18 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 4 ['H34-C16-N', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -keeplist2 17 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 52 - Formula = H35-C16-N - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -sublist 2 ['H35-C16-N', 'H'] -list1 5 ['H35-C16-N', 'H34-C16-N', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -list2 18 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 4 ['H34-C16-N', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -keeplist2 17 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 52 - Formula = H35-C16-N - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -sublist 2 ['H35-C16-N', 'H'] -list1 5 ['H35-C16-N', 'H34-C16-N', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -list2 18 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 4 ['H34-C16-N', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -keeplist2 17 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 52 - Formula = H35-C16-N - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -sublist 2 ['H35-C16-N', 'H'] -list1 5 ['H35-C16-N', 'H34-C16-N', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -list2 18 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 4 ['H34-C16-N', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -keeplist2 17 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 52 - Formula = H35-C16-N - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -sublist 2 ['H35-C16-N', 'H'] -list1 5 ['H35-C16-N', 'H34-C16-N', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -list2 18 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 4 ['H34-C16-N', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -keeplist2 17 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -reordered_newmolec=------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 53 - Formula = H36-C16-N - Has Adjacency Matrix = YES ---------------------------------------------------- - -COMPARE_SPECIES. Comparing: -------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 53 - Formula = H36-C16-N - Has Adjacency Matrix = YES ---------------------------------------------------- - -------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 53 - Formula = H36-C16-N - Has Adjacency Matrix = YES ---------------------------------------------------- - -['C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'N', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] -['C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'N', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] -mol1.adj_types=array([[0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0], - ..., - [0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0]]) -mol2.adj_types=array([[0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0], - ..., - [0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0]]) -kdx ldx elem1 - elem2 : reordered - reference -goodlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 53 - Formula = H36-C16-N - Has Adjacency Matrix = YES ---------------------------------------------------- -] -avglist=[] -badlist=[] -sublist 2 ['H34-C16-N', 'H'] -list1 4 ['H34-C16-N', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -list2 17 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 3 ['H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -keeplist2 16 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 51 - Formula = H34-C16-N - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -sublist 2 ['H34-C16-N', 'H'] -list1 4 ['H34-C16-N', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -list2 17 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 3 ['H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -keeplist2 16 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 51 - Formula = H34-C16-N - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -sublist 2 ['H34-C16-N', 'H'] -list1 4 ['H34-C16-N', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -list2 17 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 3 ['H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -keeplist2 16 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 51 - Formula = H34-C16-N - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -sublist 2 ['H34-C16-N', 'H'] -list1 4 ['H34-C16-N', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -list2 17 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 3 ['H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -keeplist2 16 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 51 - Formula = H34-C16-N - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -sublist 2 ['H34-C16-N', 'H'] -list1 4 ['H34-C16-N', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -list2 17 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 3 ['H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -keeplist2 16 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 51 - Formula = H34-C16-N - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -sublist 2 ['H34-C16-N', 'H'] -list1 4 ['H34-C16-N', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -list2 17 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 3 ['H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -keeplist2 16 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 51 - Formula = H34-C16-N - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -sublist 2 ['H34-C16-N', 'H'] -list1 4 ['H34-C16-N', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -list2 17 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 3 ['H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -keeplist2 16 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 51 - Formula = H34-C16-N - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -sublist 2 ['H34-C16-N', 'H'] -list1 4 ['H34-C16-N', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -list2 17 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 3 ['H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -keeplist2 16 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 51 - Formula = H34-C16-N - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -sublist 2 ['H34-C16-N', 'H'] -list1 4 ['H34-C16-N', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -list2 17 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 3 ['H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -keeplist2 16 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 51 - Formula = H34-C16-N - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -sublist 2 ['H34-C16-N', 'H'] -list1 4 ['H34-C16-N', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -list2 17 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 3 ['H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -keeplist2 16 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 51 - Formula = H34-C16-N - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -sublist 2 ['H34-C16-N', 'H'] -list1 4 ['H34-C16-N', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -list2 17 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 3 ['H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -keeplist2 16 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 51 - Formula = H34-C16-N - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -sublist 2 ['H34-C16-N', 'H'] -list1 4 ['H34-C16-N', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -list2 17 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 3 ['H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -keeplist2 16 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -goodlist=[] -avglist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 52 - Formula = H35-C16-N - Has Adjacency Matrix = YES ---------------------------------------------------- -] -badlist=[] -sublist 2 ['H35-C16-N', 'H'] -list1 4 ['H35-C16-N', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -list2 16 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 3 ['H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -keeplist2 15 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 52 - Formula = H35-C16-N - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -sublist 2 ['H35-C16-N', 'H'] -list1 4 ['H35-C16-N', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -list2 16 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 3 ['H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -keeplist2 15 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 52 - Formula = H35-C16-N - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -sublist 2 ['H35-C16-N', 'H'] -list1 4 ['H35-C16-N', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -list2 16 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 3 ['H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -keeplist2 15 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 52 - Formula = H35-C16-N - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -sublist 2 ['H35-C16-N', 'H'] -list1 4 ['H35-C16-N', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -list2 16 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 3 ['H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -keeplist2 15 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 52 - Formula = H35-C16-N - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -sublist 2 ['H35-C16-N', 'H'] -list1 4 ['H35-C16-N', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -list2 16 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 3 ['H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -keeplist2 15 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 52 - Formula = H35-C16-N - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -sublist 2 ['H35-C16-N', 'H'] -list1 4 ['H35-C16-N', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -list2 16 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 3 ['H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -keeplist2 15 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 52 - Formula = H35-C16-N - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -sublist 2 ['H35-C16-N', 'H'] -list1 4 ['H35-C16-N', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -list2 16 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 3 ['H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -keeplist2 15 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 52 - Formula = H35-C16-N - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -sublist 2 ['H35-C16-N', 'H'] -list1 4 ['H35-C16-N', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -list2 16 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 3 ['H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -keeplist2 15 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 52 - Formula = H35-C16-N - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -sublist 2 ['H35-C16-N', 'H'] -list1 4 ['H35-C16-N', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -list2 16 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 3 ['H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -keeplist2 15 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 52 - Formula = H35-C16-N - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -sublist 2 ['H35-C16-N', 'H'] -list1 4 ['H35-C16-N', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -list2 16 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 3 ['H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -keeplist2 15 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 52 - Formula = H35-C16-N - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -sublist 2 ['H35-C16-N', 'H'] -list1 4 ['H35-C16-N', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -list2 16 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 3 ['H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -keeplist2 15 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 52 - Formula = H35-C16-N - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -sublist 2 ['H35-C16-N', 'H'] -list1 4 ['H35-C16-N', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -list2 16 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 3 ['H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -keeplist2 15 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -reordered_newmolec=------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 53 - Formula = H36-C16-N - Has Adjacency Matrix = YES ---------------------------------------------------- - -COMPARE_SPECIES. Comparing: -------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 53 - Formula = H36-C16-N - Has Adjacency Matrix = YES ---------------------------------------------------- - -------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 53 - Formula = H36-C16-N - Has Adjacency Matrix = YES ---------------------------------------------------- - -['C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'N', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] -['C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'N', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] -mol1.adj_types=array([[0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0], - ..., - [0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0]]) -mol2.adj_types=array([[0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0], - ..., - [0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0]]) -kdx ldx elem1 - elem2 : reordered - reference -goodlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 53 - Formula = H36-C16-N - Has Adjacency Matrix = YES ---------------------------------------------------- -] -avglist=[] -badlist=[] -sublist 2 ['H22-C37-N2-Fe-Br2', 'H'] -list1 3 ['H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -list2 15 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 2 ['H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -keeplist2 14 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 64 - Formula = H22-C37-N2-Fe-Br2 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -sublist 2 ['H22-C37-N2-Fe-Br2', 'H'] -list1 3 ['H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -list2 15 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 2 ['H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -keeplist2 14 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 64 - Formula = H22-C37-N2-Fe-Br2 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -sublist 2 ['H22-C37-N2-Fe-Br2', 'H'] -list1 3 ['H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -list2 15 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 2 ['H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -keeplist2 14 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 64 - Formula = H22-C37-N2-Fe-Br2 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -sublist 2 ['H22-C37-N2-Fe-Br2', 'H'] -list1 3 ['H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -list2 15 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 2 ['H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -keeplist2 14 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -goodlist=[] -avglist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 65 - Formula = H23-C37-N2-Fe-Br2 - Has Adjacency Matrix = YES ---------------------------------------------------- -] -badlist=[] -sublist 2 ['H23-C37-N2-Fe-Br2', 'H'] -list1 3 ['H23-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -list2 14 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 2 ['H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -keeplist2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 65 - Formula = H23-C37-N2-Fe-Br2 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -sublist 2 ['H23-C37-N2-Fe-Br2', 'H'] -list1 3 ['H23-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -list2 14 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 2 ['H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -keeplist2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 65 - Formula = H23-C37-N2-Fe-Br2 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -sublist 2 ['H23-C37-N2-Fe-Br2', 'H'] -list1 3 ['H23-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -list2 14 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 2 ['H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -keeplist2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 65 - Formula = H23-C37-N2-Fe-Br2 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -sublist 2 ['H23-C37-N2-Fe-Br2', 'H'] -list1 3 ['H23-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -list2 14 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 2 ['H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -keeplist2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -goodlist=[] -avglist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 66 - Formula = H24-C37-N2-Fe-Br2 - Has Adjacency Matrix = YES ---------------------------------------------------- -] -badlist=[] -sublist 2 ['H24-C37-N2-Fe-Br2', 'H'] -list1 3 ['H24-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -list2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 2 ['H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -keeplist2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 66 - Formula = H24-C37-N2-Fe-Br2 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -sublist 2 ['H24-C37-N2-Fe-Br2', 'H'] -list1 3 ['H24-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -list2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 2 ['H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -keeplist2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 66 - Formula = H24-C37-N2-Fe-Br2 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -sublist 2 ['H24-C37-N2-Fe-Br2', 'H'] -list1 3 ['H24-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -list2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 2 ['H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -keeplist2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 66 - Formula = H24-C37-N2-Fe-Br2 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -sublist 2 ['H24-C37-N2-Fe-Br2', 'H'] -list1 3 ['H24-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -list2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 2 ['H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -keeplist2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 66 - Formula = H24-C37-N2-Fe-Br2 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -sublist 2 ['H24-C37-N2-Fe-Br2', 'H'] -list1 3 ['H24-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -list2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 2 ['H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -keeplist2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -goodlist=[] -avglist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 67 - Formula = H25-C37-N2-Fe-Br2 - Has Adjacency Matrix = YES ---------------------------------------------------- -] -badlist=[] -sublist 2 ['H25-C37-N2-Fe-Br2', 'H'] -list1 3 ['H25-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 2 ['H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 67 - Formula = H25-C37-N2-Fe-Br2 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -sublist 2 ['H25-C37-N2-Fe-Br2', 'H'] -list1 3 ['H25-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 2 ['H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 67 - Formula = H25-C37-N2-Fe-Br2 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -sublist 2 ['H25-C37-N2-Fe-Br2', 'H'] -list1 3 ['H25-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 2 ['H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 67 - Formula = H25-C37-N2-Fe-Br2 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -sublist 2 ['H25-C37-N2-Fe-Br2', 'H'] -list1 3 ['H25-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 2 ['H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 67 - Formula = H25-C37-N2-Fe-Br2 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -sublist 2 ['H25-C37-N2-Fe-Br2', 'H'] -list1 3 ['H25-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 2 ['H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -goodlist=[] -avglist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 68 - Formula = H26-C37-N2-Fe-Br2 - Has Adjacency Matrix = YES ---------------------------------------------------- -] -badlist=[] -sublist 2 ['H26-C37-N2-Fe-Br2', 'H'] -list1 3 ['H26-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -list2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 2 ['H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -keeplist2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 68 - Formula = H26-C37-N2-Fe-Br2 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -sublist 2 ['H26-C37-N2-Fe-Br2', 'H'] -list1 3 ['H26-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -list2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 2 ['H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -keeplist2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 68 - Formula = H26-C37-N2-Fe-Br2 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -sublist 2 ['H26-C37-N2-Fe-Br2', 'H'] -list1 3 ['H26-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -list2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 2 ['H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -keeplist2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 68 - Formula = H26-C37-N2-Fe-Br2 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -sublist 2 ['H26-C37-N2-Fe-Br2', 'H'] -list1 3 ['H26-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -list2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 2 ['H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -keeplist2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 68 - Formula = H26-C37-N2-Fe-Br2 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -sublist 2 ['H26-C37-N2-Fe-Br2', 'H'] -list1 3 ['H26-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -list2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 2 ['H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -keeplist2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 68 - Formula = H26-C37-N2-Fe-Br2 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -sublist 2 ['H26-C37-N2-Fe-Br2', 'H'] -list1 3 ['H26-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -list2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 2 ['H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -keeplist2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -MOLECULE.SPLIT COMPLEX: labels=['Br', 'Br', 'Fe', 'C', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'N', 'N', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H'] -MOLECULE.SPLIT COMPLEX: metal_idx=[2] -MOLECULE.SPLIT COMPLEX: rest_idx=[0, 1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68] -SPLIT COMPLEX: rest labels: ['Br', 'Br', 'C', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'N', 'N', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H'] -SPLIT COMPLEX: rest coord: [[6.2330415, -3.6995867, 11.6445436], [8.982856, -0.8921242, 11.7304271], [11.4204567, -5.8914327, 12.9622643], [10.5934605, -3.1547959, 15.5322261], [12.7628828, -5.5676668, 12.8284705], [12.0922196, -2.9879935, 10.1874843], [11.4361309, -2.5781359, 10.7019439], [9.9149034, -4.4000494, 14.9638751], [10.5436589, -5.1439731, 15.0630912], [11.209569600000002, -3.2193646, 16.7986721], [9.8514156, -5.4768094000000005, 9.0714979], [10.3551967, -4.896921, 12.6273905], [7.294827799999999, -4.4444788, 14.3325991], [11.0621394, -7.1615912, 13.4016499], [10.1631109, -7.3854294, 13.4930782], [12.8015746, -6.2951408, 8.4931786], [13.3153345, -1.3805403, 10.0867107], [8.2277801, -6.2342617, 6.9130415], [9.7610928, -7.4561475, 6.485649], [12.9174728, -4.9235171, 8.993776], [8.816849300000001, -5.1882488, 17.1070675], [11.6839871, -6.9366769, 8.1302688], [11.783650999999999, -7.8204994, 7.8562953], [10.3220131, -6.4013717, 8.1170296], [13.2236879, -2.2682062, 9.8239515], [13.594127199999999, -6.7751014, 8.4185718], [7.7884919, -5.2864854, 7.8251443], [6.953112900000001, -4.8918477, 7.7145581], [7.400885700000003, -4.7291961, 15.2119933], [5.4441992999999975, -5.0932405, 15.544375], [9.4765603, -6.798008, 7.0786093], [7.6872069, -6.4860796999999994, 6.1990594], [12.0429857, -8.0986061, 13.7055284], [14.034474, -8.3908563, 13.782783], [11.9286653, -4.3199535, 9.7904642], [10.1116338, -5.2392888, 17.7928579], [10.230993600000001, -5.9403204, 18.3915811], [13.7378702, -6.5119071, 13.1292339], [13.010196, -4.7196645, 12.5382985], [11.3515664, -0.8599936, 15.3160378], [11.3820225, -0.0707181, 14.8247857], [14.0647641, -4.1860503, 8.6643536], [14.7372133, -4.5889897, 8.1646908], [10.6910639, -1.9696528, 14.8093659], [10.3034202, -1.9201501, 13.9650167], [8.5873952, -4.922902199999999, 8.9021919], [8.2720908, -4.3015053, 9.518204], [6.432384499999997, -5.573354999999999, 17.2466242], [7.780181399999999, -5.9218722, 18.6812859], [7.6833877, -5.6097901, 17.8109255], [11.8020161, -8.947377, 13.9977253], [9.6210699, -4.2687597, 13.5436987], [10.0312251, -4.5693117, 11.3772988], [8.6758098, -4.7482592, 15.7731794], [10.7485024, -5.162575, 10.2599105], [11.1139331, -6.0156505, 10.5757822], [13.377419499999998, -7.7665385, 13.5725134], [14.6385434, -6.2969856, 13.0304851], [11.912865499999999, -2.0997126, 17.271545], [12.410805400000001, -0.1875567, 16.9010033], [11.1386803, -4.4002032, 17.6596871], [11.894770600000001, -4.5859151, 18.170408600000002], [11.9675686, -0.9274833, 16.5564726], [12.3533282, -2.15229, 18.0894159], [14.2152109, -2.8740758, 9.068227], [14.9787267, -2.398266, 8.8344384], [6.287548999999998, -5.1256786000000005, 15.9348534], [5.690012600000002, -5.8450047000000005, 17.7342939]] -SPLIT COMPLEX: rest indices: [0, 1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68] -SPLIT COMPLEX: rest radii: [1.2, 1.2, 0.73, 0.73, 0.73, 0.73, 0.31, 0.73, 0.31, 0.73, 0.73, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.73, 0.73, 0.31, 0.73, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.71, 0.71, 0.73, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31] -SPLIT COMPLEX: splitting species with 68 atoms in block -labels=['Br', 'Br', 'C', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'N', 'N', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H'] 68 -indices=None -SPLIT COMPLEX: received 3 blocks -PREPARING BLOCK: [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67] -CREATING LIGAND: H27-C37-N2 -PREPARING BLOCK: [1] -CREATING LIGAND: Br -PREPARING BLOCK: [0] -CREATING LIGAND: Br -LIGAND.SPLIT_LIGAND: self.indices=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65] -LIGAND.SPLIT_LIGAND: conn_idx=[9, 49, 50] -LIGAND.SPLIT_LIGAND: conn_labels=['C', 'N', 'N'] -LIGAND.SPLIT_LIGAND: conn_coord=[[10.3551967, -4.896921, 12.6273905], [9.6210699, -4.2687597, 13.5436987], [10.0312251, -4.5693117, 11.3772988]] -LIGAND.SPLIT_LIGAND: conn_radii=[0.73, 0.71, 0.71] -blocklist=[[0, 1, 2]] -LIGAND.SPLIT_LIGAND: block=[0, 1, 2] -ADD_ATOM: Metalist length 1 -ADD_ATOM: Ligand Atoms 66 -ADD_ATOM: site= 9 -ADD_ATOM: target ligand atom C -ADD_ATOM: evaluating apos=array([10.3551967, -4.896921 , 12.6273905]) and tgt.coord=[8.5576195, -3.2485743, 12.0289476] -ADD_ATOM: Chosen Metal index None. H was added at site 9 but RESET due to connec=3 -ADD_ATOM: Metalist length 1 -ADD_ATOM: Ligand Atoms 66 -ADD_ATOM: site= 49 -ADD_ATOM: target ligand atom N -ADD_ATOM: evaluating apos=array([ 9.6210699, -4.2687597, 13.5436987]) and tgt.coord=[8.5576195, -3.2485743, 12.0289476] -ADD_ATOM: Chosen Metal index None. H is added at site 49 -ADD_ATOM: Metalist length 1 -ADD_ATOM: Ligand Atoms 66 -ADD_ATOM: site= 50 -ADD_ATOM: target ligand atom N -ADD_ATOM: evaluating apos=array([10.0312251, -4.5693117, 11.3772988]) and tgt.coord=[8.5576195, -3.2485743, 12.0289476] -ADD_ATOM: Chosen Metal index None. H is added at site 50 -LIGAND.SPLIT_LIGAND: group is found ------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 3 - Formula = C-N2 - Has Adjacency Matrix = YES - Origin = split_ligand - Number of Metals = 1 ---------------------------------------------------- - -GROUP.SPLIT_GROUP: conn_idx=[1, 2] -GROUP.SPLIT_GROUP: conn_labels=['N', 'N'] -GROUP.SPLIT_GROUP: conn_coord=[[9.6210699, -4.2687597, 13.5436987], [10.0312251, -4.5693117, 11.3772988]] -GROUP.SPLIT_GROUP: conn_radii=[0.71, 0.71] -blocklist=[[1], [0]] -GROUP.SPLIT_GROUP: block=[1] -ADD_ATOM: Metalist length 1 -ADD_ATOM: Ligand Atoms 66 -ADD_ATOM: site= 50 -ADD_ATOM: target ligand atom N -ADD_ATOM: evaluating apos=array([10.0312251, -4.5693117, 11.3772988]) and tgt.coord=[8.5576195, -3.2485743, 12.0289476] -ADD_ATOM: Chosen Metal index None. H is added at site 50 -GROUP.SPLIT_GROUP: block=[0] -ADD_ATOM: Metalist length 1 -ADD_ATOM: Ligand Atoms 66 -ADD_ATOM: site= 49 -ADD_ATOM: target ligand atom N -ADD_ATOM: evaluating apos=array([ 9.6210699, -4.2687597, 13.5436987]) and tgt.coord=[8.5576195, -3.2485743, 12.0289476] -ADD_ATOM: Chosen Metal index None. H is added at site 49 -LIGAND.SPLIT_LIGAND: final groups self.groups=[------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 1 - Formula = N - Has Adjacency Matrix = YES - Origin = split_group - Number of Metals = 1 ---------------------------------------------------- -, ------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 1 - Formula = N - Has Adjacency Matrix = YES - Origin = split_group - Number of Metals = 1 ---------------------------------------------------- -] -LIGAND.SPLIT_LIGAND: self.indices=[0] -LIGAND.SPLIT_LIGAND: conn_idx=[0] -LIGAND.SPLIT_LIGAND: conn_labels=['Br'] -LIGAND.SPLIT_LIGAND: conn_coord=[[8.982856, -0.8921242, 11.7304271]] -LIGAND.SPLIT_LIGAND: conn_radii=[1.2] -blocklist=[[0]] -LIGAND.SPLIT_LIGAND: block=[0] -ADD_ATOM: Metalist length 1 -ADD_ATOM: Ligand Atoms 1 -ADD_ATOM: site= 0 -ADD_ATOM: target ligand atom Br -ADD_ATOM: evaluating apos=array([ 8.982856 , -0.8921242, 11.7304271]) and tgt.coord=[8.5576195, -3.2485743, 12.0289476] -ADD_ATOM: Chosen Metal index None. H is added at site 0 -LIGAND.SPLIT_LIGAND: group is found ------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 1 - Formula = Br - Has Adjacency Matrix = YES - Origin = split_ligand - Number of Metals = 1 ---------------------------------------------------- - -LIGAND.SPLIT_LIGAND: final groups self.groups=[------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 1 - Formula = Br - Has Adjacency Matrix = YES - Origin = split_ligand - Number of Metals = 1 ---------------------------------------------------- -] -LIGAND.SPLIT_LIGAND: self.indices=[0] -LIGAND.SPLIT_LIGAND: conn_idx=[0] -LIGAND.SPLIT_LIGAND: conn_labels=['Br'] -LIGAND.SPLIT_LIGAND: conn_coord=[[6.2330415, -3.6995867, 11.6445436]] -LIGAND.SPLIT_LIGAND: conn_radii=[1.2] -blocklist=[[0]] -LIGAND.SPLIT_LIGAND: block=[0] -ADD_ATOM: Metalist length 1 -ADD_ATOM: Ligand Atoms 1 -ADD_ATOM: site= 0 -ADD_ATOM: target ligand atom Br -ADD_ATOM: evaluating apos=array([ 6.2330415, -3.6995867, 11.6445436]) and tgt.coord=[8.5576195, -3.2485743, 12.0289476] -ADD_ATOM: Chosen Metal index None. H is added at site 0 -LIGAND.SPLIT_LIGAND: group is found ------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 1 - Formula = Br - Has Adjacency Matrix = YES - Origin = split_ligand - Number of Metals = 1 ---------------------------------------------------- - -LIGAND.SPLIT_LIGAND: final groups self.groups=[------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 1 - Formula = Br - Has Adjacency Matrix = YES - Origin = split_ligand - Number of Metals = 1 ---------------------------------------------------- -] -symbols=['Fe', 'N', 'N', 'Br', 'Br'] -positions=[[8.5576195, -3.2485743, 12.0289476], [10.0312251, -4.5693117, 11.3772988], [9.6210699, -4.2687597, 13.5436987], [8.982856, -0.8921242, 11.7304271], [6.2330415, -3.6995867, 11.6445436]] -4 -[[1, 2], [1, 3], [1, 4], [1, 5]] -[1.373, 1.403, 1.213, 1.199] -1.297 -reordered_newmolec=------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 69 - Formula = H27-C37-N2-Fe-Br2 - Has Adjacency Matrix = YES - Number of Ligands = 3 - Number of Metals = 1 ---------------------------------------------------- - -COMPARE_SPECIES. Comparing: -------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 69 - Formula = H27-C37-N2-Fe-Br2 - Has Adjacency Matrix = YES - Number of Ligands = 3 - Number of Metals = 1 ---------------------------------------------------- - -------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 69 - Formula = H27-C37-N2-Fe-Br2 - Has Adjacency Matrix = YES - Number of Ligands = 3 - Number of Metals = 1 ---------------------------------------------------- - -['Br', 'Br', 'Fe', 'C', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'N', 'N', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H'] -['Br', 'Br', 'Fe', 'C', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'N', 'N', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H'] -mol1.adj_types=array([[0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0], - ..., - [0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0]]) -mol2.adj_types=array([[0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0], - ..., - [0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0]]) -kdx ldx elem1 - elem2 : reordered - reference -goodlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 69 - Formula = H27-C37-N2-Fe-Br2 - Has Adjacency Matrix = YES - Number of Ligands = 3 - Number of Metals = 1 ---------------------------------------------------- -] -avglist=[] -badlist=[] -sublist 2 ['H22-C37-N2-Fe-Br2', 'H'] -list1 2 ['H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 1 ['H22-C37-N2-Fe-Br2'] -keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 64 - Formula = H22-C37-N2-Fe-Br2 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -sublist 2 ['H22-C37-N2-Fe-Br2', 'H'] -list1 2 ['H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 1 ['H22-C37-N2-Fe-Br2'] -keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 64 - Formula = H22-C37-N2-Fe-Br2 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -sublist 2 ['H22-C37-N2-Fe-Br2', 'H'] -list1 2 ['H22-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 1 ['H22-C37-N2-Fe-Br2'] -keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -goodlist=[] -avglist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 65 - Formula = H23-C37-N2-Fe-Br2 - Has Adjacency Matrix = YES ---------------------------------------------------- -] -badlist=[] -sublist 2 ['H23-C37-N2-Fe-Br2', 'H'] -list1 2 ['H23-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -list2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 1 ['H22-C37-N2-Fe-Br2'] -keeplist2 8 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 65 - Formula = H23-C37-N2-Fe-Br2 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -sublist 2 ['H23-C37-N2-Fe-Br2', 'H'] -list1 2 ['H23-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -list2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 1 ['H22-C37-N2-Fe-Br2'] -keeplist2 8 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 65 - Formula = H23-C37-N2-Fe-Br2 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -sublist 2 ['H23-C37-N2-Fe-Br2', 'H'] -list1 2 ['H23-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -list2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 1 ['H22-C37-N2-Fe-Br2'] -keeplist2 8 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -goodlist=[] -avglist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 66 - Formula = H24-C37-N2-Fe-Br2 - Has Adjacency Matrix = YES ---------------------------------------------------- -] -badlist=[] -sublist 2 ['H24-C37-N2-Fe-Br2', 'H'] -list1 2 ['H24-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -list2 8 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 1 ['H22-C37-N2-Fe-Br2'] -keeplist2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H'] - -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 66 - Formula = H24-C37-N2-Fe-Br2 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -sublist 2 ['H24-C37-N2-Fe-Br2', 'H'] -list1 2 ['H24-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -list2 8 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 1 ['H22-C37-N2-Fe-Br2'] -keeplist2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H'] - -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 66 - Formula = H24-C37-N2-Fe-Br2 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -sublist 2 ['H24-C37-N2-Fe-Br2', 'H'] -list1 2 ['H24-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -list2 8 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 1 ['H22-C37-N2-Fe-Br2'] -keeplist2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H'] - -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 66 - Formula = H24-C37-N2-Fe-Br2 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -sublist 2 ['H24-C37-N2-Fe-Br2', 'H'] -list1 2 ['H24-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -list2 8 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 1 ['H22-C37-N2-Fe-Br2'] -keeplist2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H'] - -goodlist=[] -avglist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 67 - Formula = H25-C37-N2-Fe-Br2 - Has Adjacency Matrix = YES ---------------------------------------------------- -] -badlist=[] -sublist 2 ['H25-C37-N2-Fe-Br2', 'H'] -list1 2 ['H25-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -list2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 1 ['H22-C37-N2-Fe-Br2'] -keeplist2 6 ['H', 'H', 'H', 'H', 'H', 'H'] - -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 67 - Formula = H25-C37-N2-Fe-Br2 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -sublist 2 ['H25-C37-N2-Fe-Br2', 'H'] -list1 2 ['H25-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -list2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 1 ['H22-C37-N2-Fe-Br2'] -keeplist2 6 ['H', 'H', 'H', 'H', 'H', 'H'] - -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 67 - Formula = H25-C37-N2-Fe-Br2 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -sublist 2 ['H25-C37-N2-Fe-Br2', 'H'] -list1 2 ['H25-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -list2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 1 ['H22-C37-N2-Fe-Br2'] -keeplist2 6 ['H', 'H', 'H', 'H', 'H', 'H'] - -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 67 - Formula = H25-C37-N2-Fe-Br2 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -sublist 2 ['H25-C37-N2-Fe-Br2', 'H'] -list1 2 ['H25-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -list2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 1 ['H22-C37-N2-Fe-Br2'] -keeplist2 6 ['H', 'H', 'H', 'H', 'H', 'H'] - -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 67 - Formula = H25-C37-N2-Fe-Br2 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -sublist 2 ['H25-C37-N2-Fe-Br2', 'H'] -list1 2 ['H25-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -list2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 1 ['H22-C37-N2-Fe-Br2'] -keeplist2 6 ['H', 'H', 'H', 'H', 'H', 'H'] - -goodlist=[] -avglist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 68 - Formula = H26-C37-N2-Fe-Br2 - Has Adjacency Matrix = YES ---------------------------------------------------- -] -badlist=[] -sublist 2 ['H26-C37-N2-Fe-Br2', 'H'] -list1 2 ['H26-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -list2 6 ['H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 1 ['H22-C37-N2-Fe-Br2'] -keeplist2 5 ['H', 'H', 'H', 'H', 'H'] - -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 68 - Formula = H26-C37-N2-Fe-Br2 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -sublist 2 ['H26-C37-N2-Fe-Br2', 'H'] -list1 2 ['H26-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -list2 6 ['H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 1 ['H22-C37-N2-Fe-Br2'] -keeplist2 5 ['H', 'H', 'H', 'H', 'H'] - -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 68 - Formula = H26-C37-N2-Fe-Br2 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -sublist 2 ['H26-C37-N2-Fe-Br2', 'H'] -list1 2 ['H26-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -list2 6 ['H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 1 ['H22-C37-N2-Fe-Br2'] -keeplist2 5 ['H', 'H', 'H', 'H', 'H'] - -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 68 - Formula = H26-C37-N2-Fe-Br2 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -sublist 2 ['H26-C37-N2-Fe-Br2', 'H'] -list1 2 ['H26-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -list2 6 ['H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 1 ['H22-C37-N2-Fe-Br2'] -keeplist2 5 ['H', 'H', 'H', 'H', 'H'] - -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 68 - Formula = H26-C37-N2-Fe-Br2 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -sublist 2 ['H26-C37-N2-Fe-Br2', 'H'] -list1 2 ['H26-C37-N2-Fe-Br2', 'H22-C37-N2-Fe-Br2'] -list2 6 ['H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 1 ['H22-C37-N2-Fe-Br2'] -keeplist2 5 ['H', 'H', 'H', 'H', 'H'] - -MOLECULE.SPLIT COMPLEX: labels=['Br', 'Br', 'Fe', 'C', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'N', 'N', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H'] -MOLECULE.SPLIT COMPLEX: metal_idx=[2] -MOLECULE.SPLIT COMPLEX: rest_idx=[0, 1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68] -SPLIT COMPLEX: rest labels: ['Br', 'Br', 'C', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'N', 'N', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H'] -SPLIT COMPLEX: rest coord: [[24.3358938, 0.8921242, 3.845099], [27.0857083, 3.6995867, 3.9309824], [21.8982932, 5.8914327, 2.6132618], [23.4673342, 5.4768094000000005, 6.5040282], [22.9635531, 4.896921, 2.9481356], [22.2566104, 7.1615912, 2.1738762], [23.155639, 7.3854294, 2.0824478], [22.5702474, 5.162575, 5.3156155], [22.2048167, 6.0156506, 4.9997439], [22.9967367, 6.4013717, 7.4584964], [22.7252893, 3.1547959, 0.0433], [20.555867, 5.5676668, 2.7470555], [20.3085538, 4.7196645, 3.0372276], [21.2265303, 2.9879935, 5.3880417], [21.8826189, 2.578136, 4.8735821], [23.207116, 5.2392888, -2.2173318], [23.0877563, 5.9403204, -2.8160551], [21.3511813, 0.9274833, -0.9809465999999993], [20.9079444, 0.1875567, -1.3254772], [24.501900499999998, 5.1882488, -1.5315414], [20.401277, 4.9235171, 6.58175], [21.9671834, 0.8599936, 0.2594883], [21.9367273, 0.0707181, 0.7507404], [22.1091802, 3.2193646, -1.2231459999999998], [25.6353622, 5.6097902, -2.2353994000000004], [25.5385684, 5.9218722, -3.1057597999999995], [22.180069500000002, 4.4002032, -2.0841610999999993], [21.4239792, 4.5859151, -2.5948826], [19.5808796, 6.5119071, 2.4462921], [18.6802064, 6.2969856, 2.545041], [21.4058844, 2.0997126, -1.6960189999999997], [20.9654216, 2.15229, -2.5138899000000006], [22.627686, 1.9696528, 0.7661601], [23.0153296, 1.9201502, 1.6105094], [24.6429401, 4.7482592, -0.1976534000000001], [20.5171752, 6.2951408, 7.0823474], [19.7246226, 6.7751015, 7.1569542], [25.9178642, 4.7291961, 0.3635328], [26.023922, 4.4444789, 1.242927], [21.6347627, 6.9366769, 7.4452572], [21.5350988, 7.8204994, 7.7192307], [26.8863654, 5.573354999999999, -1.6710981], [27.6287372, 5.8450047000000005, -2.158767900000001], [21.2757641, 8.0986061, 1.8699977], [21.5167338, 8.947377, 1.5778008], [19.941330400000002, 7.7665385, 2.0030126], [19.2842758, 8.3908563, 1.792743], [19.2539857, 4.1860503, 6.9111724], [18.5815366, 4.5889898, 7.4108353], [20.095062, 2.2682062, 5.7515745], [20.0034153, 1.3805403, 5.4888154], [23.2875248, 4.5693117, 4.1982273], [23.6976799, 4.2687597, 2.0318274], [21.3900845, 4.3199535, 5.7850619], [23.4038465, 4.4000494, 0.6116509], [22.775091, 5.1439731, 0.5124348], [24.731354600000003, 4.922902199999999, 6.6733341], [25.046659, 4.3015053, 6.0573221], [23.8421896, 6.798008, 8.4969167], [23.557657000000003, 7.4561475, 9.089877], [25.530258, 5.2864854, 7.7503818], [26.365636900000002, 4.8918477, 7.860968], [25.0909698, 6.2342617, 8.6624846], [25.6315429, 6.4860796999999994, 9.3764667], [27.0312009, 5.1256786000000005, -0.35932730000000035], [27.8745505, 5.0932406, 0.0311511], [19.1035389, 2.8740758, 6.507299], [18.3400231, 2.398266, 6.7410877]] -SPLIT COMPLEX: rest indices: [0, 1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68] -SPLIT COMPLEX: rest radii: [1.2, 1.2, 0.73, 0.73, 0.73, 0.73, 0.31, 0.73, 0.31, 0.73, 0.73, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.73, 0.73, 0.31, 0.73, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.71, 0.71, 0.73, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31] -SPLIT COMPLEX: splitting species with 68 atoms in block -labels=['Br', 'Br', 'C', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'N', 'N', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H'] 68 -indices=None -SPLIT COMPLEX: received 3 blocks -PREPARING BLOCK: [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67] -CREATING LIGAND: H27-C37-N2 -PREPARING BLOCK: [1] -CREATING LIGAND: Br -PREPARING BLOCK: [0] -CREATING LIGAND: Br -LIGAND.SPLIT_LIGAND: self.indices=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65] -LIGAND.SPLIT_LIGAND: conn_idx=[2, 49, 50] -LIGAND.SPLIT_LIGAND: conn_labels=['C', 'N', 'N'] -LIGAND.SPLIT_LIGAND: conn_coord=[[22.9635531, 4.896921, 2.9481356], [23.2875248, 4.5693117, 4.1982273], [23.6976799, 4.2687597, 2.0318274]] -LIGAND.SPLIT_LIGAND: conn_radii=[0.73, 0.71, 0.71] -blocklist=[[0, 1, 2]] -LIGAND.SPLIT_LIGAND: block=[0, 1, 2] -ADD_ATOM: Metalist length 1 -ADD_ATOM: Ligand Atoms 66 -ADD_ATOM: site= 2 -ADD_ATOM: target ligand atom C -ADD_ATOM: evaluating apos=array([22.9635531, 4.896921 , 2.9481356]) and tgt.coord=[24.7611304, 3.2485743, 3.5465784] -ADD_ATOM: Chosen Metal index None. H was added at site 2 but RESET due to connec=3 -ADD_ATOM: Metalist length 1 -ADD_ATOM: Ligand Atoms 66 -ADD_ATOM: site= 49 -ADD_ATOM: target ligand atom N -ADD_ATOM: evaluating apos=array([23.2875248, 4.5693117, 4.1982273]) and tgt.coord=[24.7611304, 3.2485743, 3.5465784] -ADD_ATOM: Chosen Metal index None. H is added at site 49 -ADD_ATOM: Metalist length 1 -ADD_ATOM: Ligand Atoms 66 -ADD_ATOM: site= 50 -ADD_ATOM: target ligand atom N -ADD_ATOM: evaluating apos=array([23.6976799, 4.2687597, 2.0318274]) and tgt.coord=[24.7611304, 3.2485743, 3.5465784] -ADD_ATOM: Chosen Metal index None. H is added at site 50 -LIGAND.SPLIT_LIGAND: group is found ------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 3 - Formula = C-N2 - Has Adjacency Matrix = YES - Origin = split_ligand - Number of Metals = 1 ---------------------------------------------------- - -GROUP.SPLIT_GROUP: conn_idx=[1, 2] -GROUP.SPLIT_GROUP: conn_labels=['N', 'N'] -GROUP.SPLIT_GROUP: conn_coord=[[23.2875248, 4.5693117, 4.1982273], [23.6976799, 4.2687597, 2.0318274]] -GROUP.SPLIT_GROUP: conn_radii=[0.71, 0.71] -blocklist=[[1], [0]] -GROUP.SPLIT_GROUP: block=[1] -ADD_ATOM: Metalist length 1 -ADD_ATOM: Ligand Atoms 66 -ADD_ATOM: site= 50 -ADD_ATOM: target ligand atom N -ADD_ATOM: evaluating apos=array([23.6976799, 4.2687597, 2.0318274]) and tgt.coord=[24.7611304, 3.2485743, 3.5465784] -ADD_ATOM: Chosen Metal index None. H is added at site 50 -GROUP.SPLIT_GROUP: block=[0] -ADD_ATOM: Metalist length 1 -ADD_ATOM: Ligand Atoms 66 -ADD_ATOM: site= 49 -ADD_ATOM: target ligand atom N -ADD_ATOM: evaluating apos=array([23.2875248, 4.5693117, 4.1982273]) and tgt.coord=[24.7611304, 3.2485743, 3.5465784] -ADD_ATOM: Chosen Metal index None. H is added at site 49 -LIGAND.SPLIT_LIGAND: final groups self.groups=[------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 1 - Formula = N - Has Adjacency Matrix = YES - Origin = split_group - Number of Metals = 1 ---------------------------------------------------- -, ------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 1 - Formula = N - Has Adjacency Matrix = YES - Origin = split_group - Number of Metals = 1 ---------------------------------------------------- -] -LIGAND.SPLIT_LIGAND: self.indices=[0] -LIGAND.SPLIT_LIGAND: conn_idx=[0] -LIGAND.SPLIT_LIGAND: conn_labels=['Br'] -LIGAND.SPLIT_LIGAND: conn_coord=[[27.0857083, 3.6995867, 3.9309824]] -LIGAND.SPLIT_LIGAND: conn_radii=[1.2] -blocklist=[[0]] -LIGAND.SPLIT_LIGAND: block=[0] -ADD_ATOM: Metalist length 1 -ADD_ATOM: Ligand Atoms 1 -ADD_ATOM: site= 0 -ADD_ATOM: target ligand atom Br -ADD_ATOM: evaluating apos=array([27.0857083, 3.6995867, 3.9309824]) and tgt.coord=[24.7611304, 3.2485743, 3.5465784] -ADD_ATOM: Chosen Metal index None. H is added at site 0 -LIGAND.SPLIT_LIGAND: group is found ------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 1 - Formula = Br - Has Adjacency Matrix = YES - Origin = split_ligand - Number of Metals = 1 ---------------------------------------------------- - -LIGAND.SPLIT_LIGAND: final groups self.groups=[------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 1 - Formula = Br - Has Adjacency Matrix = YES - Origin = split_ligand - Number of Metals = 1 ---------------------------------------------------- -] -LIGAND.SPLIT_LIGAND: self.indices=[0] -LIGAND.SPLIT_LIGAND: conn_idx=[0] -LIGAND.SPLIT_LIGAND: conn_labels=['Br'] -LIGAND.SPLIT_LIGAND: conn_coord=[[24.3358938, 0.8921242, 3.845099]] -LIGAND.SPLIT_LIGAND: conn_radii=[1.2] -blocklist=[[0]] -LIGAND.SPLIT_LIGAND: block=[0] -ADD_ATOM: Metalist length 1 -ADD_ATOM: Ligand Atoms 1 -ADD_ATOM: site= 0 -ADD_ATOM: target ligand atom Br -ADD_ATOM: evaluating apos=array([24.3358938, 0.8921242, 3.845099 ]) and tgt.coord=[24.7611304, 3.2485743, 3.5465784] -ADD_ATOM: Chosen Metal index None. H is added at site 0 -LIGAND.SPLIT_LIGAND: group is found ------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 1 - Formula = Br - Has Adjacency Matrix = YES - Origin = split_ligand - Number of Metals = 1 ---------------------------------------------------- - -LIGAND.SPLIT_LIGAND: final groups self.groups=[------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 1 - Formula = Br - Has Adjacency Matrix = YES - Origin = split_ligand - Number of Metals = 1 ---------------------------------------------------- -] -symbols=['Fe', 'N', 'N', 'Br', 'Br'] -positions=[[24.7611304, 3.2485743, 3.5465784], [23.6976799, 4.2687597, 2.0318274], [23.2875248, 4.5693117, 4.1982273], [27.0857083, 3.6995867, 3.9309824], [24.3358938, 0.8921242, 3.845099]] -4 -[[1, 2], [1, 3], [1, 4], [1, 5]] -[1.403, 1.373, 1.199, 1.213] -1.297 -reordered_newmolec=------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 69 - Formula = H27-C37-N2-Fe-Br2 - Has Adjacency Matrix = YES - Number of Ligands = 3 - Number of Metals = 1 ---------------------------------------------------- - -COMPARE_SPECIES. Comparing: -------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 69 - Formula = H27-C37-N2-Fe-Br2 - Has Adjacency Matrix = YES - Number of Ligands = 3 - Number of Metals = 1 ---------------------------------------------------- - -------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 69 - Formula = H27-C37-N2-Fe-Br2 - Has Adjacency Matrix = YES - Number of Ligands = 3 - Number of Metals = 1 ---------------------------------------------------- - -['Br', 'Br', 'Fe', 'C', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'N', 'N', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H'] -['Br', 'Br', 'Fe', 'C', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'N', 'N', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H'] -mol1.adj_types=array([[0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0], - ..., - [0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0]]) -mol2.adj_types=array([[0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0], - ..., - [0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0]]) -kdx ldx elem1 - elem2 : reordered - reference -goodlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 69 - Formula = H27-C37-N2-Fe-Br2 - Has Adjacency Matrix = YES - Number of Ligands = 3 - Number of Metals = 1 ---------------------------------------------------- -] -avglist=[] -badlist=[] -sublist 2 ['H22-C37-N2-Fe-Br2', 'H'] -list1 1 ['H22-C37-N2-Fe-Br2'] -list2 5 ['H', 'H', 'H', 'H', 'H'] -keeplist1 0 [] -keeplist2 4 ['H', 'H', 'H', 'H'] - -goodlist=[] -avglist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 65 - Formula = H23-C37-N2-Fe-Br2 - Has Adjacency Matrix = YES ---------------------------------------------------- -] -badlist=[] -sublist 2 ['H23-C37-N2-Fe-Br2', 'H'] -list1 1 ['H23-C37-N2-Fe-Br2'] -list2 4 ['H', 'H', 'H', 'H'] -keeplist1 0 [] -keeplist2 3 ['H', 'H', 'H'] - -goodlist=[] -avglist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 66 - Formula = H24-C37-N2-Fe-Br2 - Has Adjacency Matrix = YES ---------------------------------------------------- -] -badlist=[] -sublist 2 ['H24-C37-N2-Fe-Br2', 'H'] -list1 1 ['H24-C37-N2-Fe-Br2'] -list2 3 ['H', 'H', 'H'] -keeplist1 0 [] -keeplist2 2 ['H', 'H'] - -goodlist=[] -avglist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 67 - Formula = H25-C37-N2-Fe-Br2 - Has Adjacency Matrix = YES ---------------------------------------------------- -] -badlist=[] -sublist 2 ['H25-C37-N2-Fe-Br2', 'H'] -list1 1 ['H25-C37-N2-Fe-Br2'] -list2 2 ['H', 'H'] -keeplist1 0 [] -keeplist2 1 ['H'] - -goodlist=[] -avglist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 68 - Formula = H26-C37-N2-Fe-Br2 - Has Adjacency Matrix = YES ---------------------------------------------------- -] -badlist=[] -sublist 2 ['H26-C37-N2-Fe-Br2', 'H'] -list1 1 ['H26-C37-N2-Fe-Br2'] -list2 1 ['H'] -keeplist1 0 [] -keeplist2 0 [] - -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 68 - Formula = H26-C37-N2-Fe-Br2 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -sublist 2 ['H26-C37-N2-Fe-Br2', 'H'] -list1 1 ['H26-C37-N2-Fe-Br2'] -list2 1 ['H'] -keeplist1 0 [] -keeplist2 0 [] - -goodlist=[] -avglist=[] -badlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 68 - Formula = H26-C37-N2-Fe-Br2 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -sublist 2 ['H26-C37-N2-Fe-Br2', 'H'] -list1 1 ['H26-C37-N2-Fe-Br2'] -list2 1 ['H'] -keeplist1 0 [] -keeplist2 0 [] - -MOLECULE.SPLIT COMPLEX: labels=['Br', 'Br', 'Fe', 'C', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'N', 'N', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H'] -MOLECULE.SPLIT COMPLEX: metal_idx=[2] -MOLECULE.SPLIT COMPLEX: rest_idx=[0, 1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68] -SPLIT COMPLEX: rest labels: ['Br', 'Br', 'C', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'N', 'N', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H'] -SPLIT COMPLEX: rest coord: [[20.8737687, -0.8921242, 11.632862], [23.6235832, -3.6995867, 11.7187454], [19.2631642, -3.1547959, 7.831063], [20.005209100000002, -5.4768094000000005, 14.2917912], [19.501428, -4.896921, 10.7358986], [19.1655609, -1.9696528, 8.5539232], [19.5532045, -1.9201501, 9.3982724], [19.1081223, -5.162575, 13.1033786], [18.4204938, -2.5781359, 12.6613451], [17.7644052, -2.9879935, 13.1758048], [18.4361681, -5.8914327, 10.4010248], [17.0937419, -5.5676668, 10.5348186], [16.8464287, -4.7196645, 10.8249906], [19.5346116, -6.4013717, 15.2462594], [18.7426916, -6.0156505, 12.7875069], [17.9437593, -2.0997126, 6.091744], [17.5032965, -2.15229, 5.2738731], [16.4792053, -7.7665385, 9.7907757], [15.822150699999998, -8.3908563, 9.5805061], [21.0397754, -5.1882488, 6.2562215], [16.9391519, -4.9235171, 14.3695131], [17.8136391, -8.0986061, 9.6577607], [18.0546087, -8.947377, 9.3655638], [18.6470551, -3.2193646, 6.564617], [22.1732371, -5.6097901, 5.5523635], [22.0764433, -5.9218722, 4.6820031], [18.7179444, -4.4002032, 5.7036019], [17.9623157, -4.585915, 5.191842], [16.1187546, -6.5119071, 10.2340551], [15.2180813, -6.2969856, 10.332804], [19.7449909, -5.2392888, 5.5704311], [19.6256311, -5.9403204, 4.9717079], [18.7944853, -7.1615912, 9.9616392], [19.693513900000003, -7.3854294, 9.8702109], [21.180815, -4.7482592, 7.5901096], [15.6414138, -2.8740758, 14.2950621], [14.877898, -2.398266, 14.5288507], [22.4557391, -4.7291961, 8.1512958], [22.561797, -4.4444788, 9.03069], [16.6329369, -2.2682062, 13.5393375], [16.5412903, -1.3805403, 13.2765784], [23.4242402, -5.573354999999999, 6.1166648], [24.166612100000002, -5.8450047000000005, 5.6289951], [18.5050583, -0.8599936, 8.0472513], [18.4746023, -0.0707181, 8.5385034], [17.8890562, -0.9274833, 6.8068164], [17.4458193, -0.1875567, 6.4622858], [15.7918606, -4.1860503, 14.6989354], [15.1194115, -4.5889897, 15.1985983], [18.1726376, -6.9366769, 15.2330202], [18.072973700000002, -7.8204994, 15.5069937], [19.8253997, -4.5693117, 11.9859903], [20.2355548, -4.2687597, 9.8195904], [17.9279594, -4.3199535, 13.5728249], [19.9417214, -4.4000494, 8.3994139], [19.3129659, -5.1439731, 8.3001978], [21.2692295, -4.922902199999999, 14.4610972], [21.5845339, -4.3015053, 13.8450851], [20.380064400000002, -6.798008, 16.2846797], [20.0955319, -7.4561475, 16.87764], [22.068132900000002, -5.2864854, 15.5381448], [22.9035118, -4.8918477, 15.648731], [21.628844700000002, -6.2342617, 16.4502475], [22.1694178, -6.4860796999999994, 17.1642297], [23.5690758, -5.1256786000000005, 7.4284356], [24.4124254, -5.0932405, 7.8189141], [17.0550501, -6.2951408, 14.8701105], [16.2624976, -6.7751014, 14.9447172]] -SPLIT COMPLEX: rest indices: [0, 1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68] -SPLIT COMPLEX: rest radii: [1.2, 1.2, 0.73, 0.73, 0.73, 0.73, 0.31, 0.73, 0.31, 0.73, 0.73, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.73, 0.73, 0.31, 0.73, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.71, 0.71, 0.73, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31] -SPLIT COMPLEX: splitting species with 68 atoms in block -labels=['Br', 'Br', 'C', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'N', 'N', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H'] 68 -indices=None -SPLIT COMPLEX: received 3 blocks -PREPARING BLOCK: [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67] -CREATING LIGAND: H27-C37-N2 -PREPARING BLOCK: [1] -CREATING LIGAND: Br -PREPARING BLOCK: [0] -CREATING LIGAND: Br -LIGAND.SPLIT_LIGAND: self.indices=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65] -LIGAND.SPLIT_LIGAND: conn_idx=[2, 49, 50] -LIGAND.SPLIT_LIGAND: conn_labels=['C', 'N', 'N'] -LIGAND.SPLIT_LIGAND: conn_coord=[[19.501428, -4.896921, 10.7358986], [19.8253997, -4.5693117, 11.9859903], [20.2355548, -4.2687597, 9.8195904]] -LIGAND.SPLIT_LIGAND: conn_radii=[0.73, 0.71, 0.71] -blocklist=[[0, 1, 2]] -LIGAND.SPLIT_LIGAND: block=[0, 1, 2] -ADD_ATOM: Metalist length 1 -ADD_ATOM: Ligand Atoms 66 -ADD_ATOM: site= 2 -ADD_ATOM: target ligand atom C -ADD_ATOM: evaluating apos=array([19.501428 , -4.896921 , 10.7358986]) and tgt.coord=[21.2990053, -3.2485743, 11.3343415] -ADD_ATOM: Chosen Metal index None. H was added at site 2 but RESET due to connec=3 -ADD_ATOM: Metalist length 1 -ADD_ATOM: Ligand Atoms 66 -ADD_ATOM: site= 49 -ADD_ATOM: target ligand atom N -ADD_ATOM: evaluating apos=array([19.8253997, -4.5693117, 11.9859903]) and tgt.coord=[21.2990053, -3.2485743, 11.3343415] -ADD_ATOM: Chosen Metal index None. H is added at site 49 -ADD_ATOM: Metalist length 1 -ADD_ATOM: Ligand Atoms 66 -ADD_ATOM: site= 50 -ADD_ATOM: target ligand atom N -ADD_ATOM: evaluating apos=array([20.2355548, -4.2687597, 9.8195904]) and tgt.coord=[21.2990053, -3.2485743, 11.3343415] -ADD_ATOM: Chosen Metal index None. H is added at site 50 -LIGAND.SPLIT_LIGAND: group is found ------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 3 - Formula = C-N2 - Has Adjacency Matrix = YES - Origin = split_ligand - Number of Metals = 1 ---------------------------------------------------- - -GROUP.SPLIT_GROUP: conn_idx=[1, 2] -GROUP.SPLIT_GROUP: conn_labels=['N', 'N'] -GROUP.SPLIT_GROUP: conn_coord=[[19.8253997, -4.5693117, 11.9859903], [20.2355548, -4.2687597, 9.8195904]] -GROUP.SPLIT_GROUP: conn_radii=[0.71, 0.71] -blocklist=[[1], [0]] -GROUP.SPLIT_GROUP: block=[1] -ADD_ATOM: Metalist length 1 -ADD_ATOM: Ligand Atoms 66 -ADD_ATOM: site= 50 -ADD_ATOM: target ligand atom N -ADD_ATOM: evaluating apos=array([20.2355548, -4.2687597, 9.8195904]) and tgt.coord=[21.2990053, -3.2485743, 11.3343415] -ADD_ATOM: Chosen Metal index None. H is added at site 50 -GROUP.SPLIT_GROUP: block=[0] -ADD_ATOM: Metalist length 1 -ADD_ATOM: Ligand Atoms 66 -ADD_ATOM: site= 49 -ADD_ATOM: target ligand atom N -ADD_ATOM: evaluating apos=array([19.8253997, -4.5693117, 11.9859903]) and tgt.coord=[21.2990053, -3.2485743, 11.3343415] -ADD_ATOM: Chosen Metal index None. H is added at site 49 -LIGAND.SPLIT_LIGAND: final groups self.groups=[------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 1 - Formula = N - Has Adjacency Matrix = YES - Origin = split_group - Number of Metals = 1 ---------------------------------------------------- -, ------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 1 - Formula = N - Has Adjacency Matrix = YES - Origin = split_group - Number of Metals = 1 ---------------------------------------------------- -] -LIGAND.SPLIT_LIGAND: self.indices=[0] -LIGAND.SPLIT_LIGAND: conn_idx=[0] -LIGAND.SPLIT_LIGAND: conn_labels=['Br'] -LIGAND.SPLIT_LIGAND: conn_coord=[[23.6235832, -3.6995867, 11.7187454]] -LIGAND.SPLIT_LIGAND: conn_radii=[1.2] -blocklist=[[0]] -LIGAND.SPLIT_LIGAND: block=[0] -ADD_ATOM: Metalist length 1 -ADD_ATOM: Ligand Atoms 1 -ADD_ATOM: site= 0 -ADD_ATOM: target ligand atom Br -ADD_ATOM: evaluating apos=array([23.6235832, -3.6995867, 11.7187454]) and tgt.coord=[21.2990053, -3.2485743, 11.3343415] -ADD_ATOM: Chosen Metal index None. H is added at site 0 -LIGAND.SPLIT_LIGAND: group is found ------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 1 - Formula = Br - Has Adjacency Matrix = YES - Origin = split_ligand - Number of Metals = 1 ---------------------------------------------------- - -LIGAND.SPLIT_LIGAND: final groups self.groups=[------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 1 - Formula = Br - Has Adjacency Matrix = YES - Origin = split_ligand - Number of Metals = 1 ---------------------------------------------------- -] -LIGAND.SPLIT_LIGAND: self.indices=[0] -LIGAND.SPLIT_LIGAND: conn_idx=[0] -LIGAND.SPLIT_LIGAND: conn_labels=['Br'] -LIGAND.SPLIT_LIGAND: conn_coord=[[20.8737687, -0.8921242, 11.632862]] -LIGAND.SPLIT_LIGAND: conn_radii=[1.2] -blocklist=[[0]] -LIGAND.SPLIT_LIGAND: block=[0] -ADD_ATOM: Metalist length 1 -ADD_ATOM: Ligand Atoms 1 -ADD_ATOM: site= 0 -ADD_ATOM: target ligand atom Br -ADD_ATOM: evaluating apos=array([20.8737687, -0.8921242, 11.632862 ]) and tgt.coord=[21.2990053, -3.2485743, 11.3343415] -ADD_ATOM: Chosen Metal index None. H is added at site 0 -LIGAND.SPLIT_LIGAND: group is found ------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 1 - Formula = Br - Has Adjacency Matrix = YES - Origin = split_ligand - Number of Metals = 1 ---------------------------------------------------- - -LIGAND.SPLIT_LIGAND: final groups self.groups=[------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 1 - Formula = Br - Has Adjacency Matrix = YES - Origin = split_ligand - Number of Metals = 1 ---------------------------------------------------- -] -symbols=['Fe', 'N', 'N', 'Br', 'Br'] -positions=[[21.2990053, -3.2485743, 11.3343415], [20.2355548, -4.2687597, 9.8195904], [19.8253997, -4.5693117, 11.9859903], [23.6235832, -3.6995867, 11.7187454], [20.8737687, -0.8921242, 11.632862]] -4 -[[1, 2], [1, 3], [1, 4], [1, 5]] -[1.403, 1.373, 1.199, 1.213] -1.297 -reordered_newmolec=------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 69 - Formula = H27-C37-N2-Fe-Br2 - Has Adjacency Matrix = YES - Number of Ligands = 3 - Number of Metals = 1 ---------------------------------------------------- - -COMPARE_SPECIES. Comparing: -------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 69 - Formula = H27-C37-N2-Fe-Br2 - Has Adjacency Matrix = YES - Number of Ligands = 3 - Number of Metals = 1 ---------------------------------------------------- - -------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 69 - Formula = H27-C37-N2-Fe-Br2 - Has Adjacency Matrix = YES - Number of Ligands = 3 - Number of Metals = 1 ---------------------------------------------------- - -['Br', 'Br', 'Fe', 'C', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'N', 'N', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H'] -['Br', 'Br', 'Fe', 'C', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'N', 'N', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H'] -mol1.adj_types=array([[0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0], - ..., - [0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0]]) -mol2.adj_types=array([[0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0], - ..., - [0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0]]) -kdx ldx elem1 - elem2 : reordered - reference -goodlist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 69 - Formula = H27-C37-N2-Fe-Br2 - Has Adjacency Matrix = YES - Number of Ligands = 3 - Number of Metals = 1 ---------------------------------------------------- -] -avglist=[] -badlist=[] -FINISHED succesfully -finalmols=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 69 - Formula = H27-C37-N2-Fe-Br2 - Has Adjacency Matrix = YES - Number of Ligands = 3 - Number of Metals = 1 ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 53 - Formula = H36-C16-N - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 53 - Formula = H36-C16-N - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 69 - Formula = H27-C37-N2-Fe-Br2 - Has Adjacency Matrix = YES - Number of Ligands = 3 - Number of Metals = 1 ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 69 - Formula = H27-C37-N2-Fe-Br2 - Has Adjacency Matrix = YES - Number of Ligands = 3 - Number of Metals = 1 ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 69 - Formula = H27-C37-N2-Fe-Br2 - Has Adjacency Matrix = YES - Number of Ligands = 3 - Number of Metals = 1 ---------------------------------------------------- -] -remfrag=[] -FRAG_RECONSTRUCT. No remaining Molecules after Hydrogen reconstruction -MOLECULE.SPLIT COMPLEX: labels=['Br', 'Br', 'Fe', 'C', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'N', 'N', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H'] -MOLECULE.SPLIT COMPLEX: metal_idx=[2] -MOLECULE.SPLIT COMPLEX: rest_idx=[0, 1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68] -SPLIT COMPLEX: rest labels: ['Br', 'Br', 'C', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'N', 'N', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H'] -SPLIT COMPLEX: rest coord: [[12.4449811, 0.8921242, 3.9426641], [9.6951666, 3.6995867, 3.8567806], [14.8825817, 5.8914327, 5.1745013], [14.6716947, 3.2193646, 9.0109091], [16.2250079, 5.5676668, 5.0407075], [14.524264499999997, 7.1615912, 5.6138869], [17.4965991, 8.3908563, 5.99502], [13.3770285, 4.4000494, 7.1761121], [14.0057839, 5.1439731, 7.2753282], [13.5737589, 5.2392888, 10.0050949], [15.3907904, 4.3199535, 2.0027011], [13.8173218, 4.896921, 4.8396275], [10.7569529, 4.4444789, 6.544836], [14.153189, 1.9696528, 7.0216029], [13.7655453, 1.9201502, 6.1772536], [13.784138199999997, 6.4013717, 0.3292666], [13.223217899999998, 7.4561475, -1.3021139000000002], [12.049520300000001, 4.922902199999999, 1.1144289], [16.7774596, 1.3805403, 2.2989476], [15.146112200000001, 6.9366769, 0.3425058], [12.1379349, 4.7482592, 7.9854165], [16.6858129, 2.2682062, 2.0361885], [14.8441476, 0.0707181, 7.0370227], [13.3135407, 5.4768094000000005, 1.2837349], [16.2636997, 6.2951408, 0.7054156], [17.0562523, 6.7751014, 0.6308088], [12.9386854, 6.798008, -0.7091536999999999], [11.149331999999998, 6.4860796999999994, -1.5887036000000005], [10.8630108, 4.7291961, 7.4242302], [11.7342159, 4.3015053, 1.7304409], [11.2506169, 5.2864854, 0.0373813], [10.415237999999999, 4.8918477, -0.07320490000000035], [15.5543446, 2.9879935, 2.3997213], [14.898256, 2.578136, 2.9141809], [16.3795979, 4.9235171, 1.206013], [11.1455128, 5.6097902, 10.0231625], [11.2423065, 5.9218722, 10.8935229], [17.1999953, 6.5119071, 5.3414709], [16.4723211, 4.7196645, 4.7505354], [12.2789744, 5.1882488, 9.3193045], [15.2641412, 8.947377, 6.2099622], [17.5268892, 4.1860503, 0.8765906], [18.1993383, 4.5889898, 0.3769277], [15.5051108, 8.0986061, 5.9177654], [15.245776099999997, 7.8204994, 0.0685323], [11.689905199999998, 6.2342617, -0.8747214999999997], [13.625235999999997, 7.3854294, 5.7053152], [9.8945096, 5.573354999999999, 9.4588612], [9.152137699999997, 5.8450047000000005, 9.9465309], [14.8136915, 0.8599936, 7.5282748], [15.8729305, 0.1875567, 9.1132403], [13.083195, 4.2687597, 5.7559357], [13.4933502, 4.5693117, 3.5895357], [14.0555856, 3.1547959, 7.7444631], [14.2106275, 5.162575, 2.4721475], [14.5760582, 6.0156505, 2.7880192], [15.4296937, 0.9274833, 8.7687097], [18.1006685, 6.2969856, 5.2427221], [14.6008054, 4.4002032, 9.8719242], [13.6931187, 5.9403204, 10.6038181], [15.3749906, 2.0997126, 9.4837821], [15.8154533, 2.15229, 10.3016529], [16.8395445, 7.7665385, 5.7847504], [15.3564341, 4.5859151, 10.383684], [17.677336, 2.8740758, 1.280464], [18.4408518, 2.398266, 1.0466754], [9.7496741, 5.1256786000000005, 8.1470904], [8.906324399999999, 5.0932406, 7.756612]] -SPLIT COMPLEX: rest indices: [0, 1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68] -SPLIT COMPLEX: rest radii: [1.2, 1.2, 0.73, 0.73, 0.73, 0.73, 0.31, 0.73, 0.31, 0.73, 0.73, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.73, 0.73, 0.31, 0.73, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.71, 0.71, 0.73, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31] -SPLIT COMPLEX: splitting species with 68 atoms in block -labels=['Br', 'Br', 'C', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'N', 'N', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H'] 68 -indices=None -SPLIT COMPLEX: received 3 blocks -PREPARING BLOCK: [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67] -CREATING LIGAND: H27-C37-N2 -PREPARING BLOCK: [1] -CREATING LIGAND: Br -PREPARING BLOCK: [0] -CREATING LIGAND: Br -MOLECULE.SPLIT COMPLEX: labels=['Br', 'Br', 'Fe', 'C', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'N', 'N', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H'] -MOLECULE.SPLIT COMPLEX: metal_idx=[2] -MOLECULE.SPLIT COMPLEX: rest_idx=[0, 1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68] -SPLIT COMPLEX: rest labels: ['Br', 'Br', 'C', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'N', 'N', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H'] -SPLIT COMPLEX: rest coord: [[6.2330415, -3.6995867, 11.6445436], [8.982856, -0.8921242, 11.7304271], [11.4204567, -5.8914327, 12.9622643], [10.5934605, -3.1547959, 15.5322261], [12.7628828, -5.5676668, 12.8284705], [12.0922196, -2.9879935, 10.1874843], [11.4361309, -2.5781359, 10.7019439], [9.9149034, -4.4000494, 14.9638751], [10.5436589, -5.1439731, 15.0630912], [11.209569600000002, -3.2193646, 16.7986721], [9.8514156, -5.4768094000000005, 9.0714979], [10.3551967, -4.896921, 12.6273905], [7.294827799999999, -4.4444788, 14.3325991], [11.0621394, -7.1615912, 13.4016499], [10.1631109, -7.3854294, 13.4930782], [12.8015746, -6.2951408, 8.4931786], [13.3153345, -1.3805403, 10.0867107], [8.2277801, -6.2342617, 6.9130415], [9.7610928, -7.4561475, 6.485649], [12.9174728, -4.9235171, 8.993776], [8.816849300000001, -5.1882488, 17.1070675], [11.6839871, -6.9366769, 8.1302688], [11.783650999999999, -7.8204994, 7.8562953], [10.3220131, -6.4013717, 8.1170296], [13.2236879, -2.2682062, 9.8239515], [13.594127199999999, -6.7751014, 8.4185718], [7.7884919, -5.2864854, 7.8251443], [6.953112900000001, -4.8918477, 7.7145581], [7.400885700000003, -4.7291961, 15.2119933], [5.4441992999999975, -5.0932405, 15.544375], [9.4765603, -6.798008, 7.0786093], [7.6872069, -6.4860796999999994, 6.1990594], [12.0429857, -8.0986061, 13.7055284], [14.034474, -8.3908563, 13.782783], [11.9286653, -4.3199535, 9.7904642], [10.1116338, -5.2392888, 17.7928579], [10.230993600000001, -5.9403204, 18.3915811], [13.7378702, -6.5119071, 13.1292339], [13.010196, -4.7196645, 12.5382985], [11.3515664, -0.8599936, 15.3160378], [11.3820225, -0.0707181, 14.8247857], [14.0647641, -4.1860503, 8.6643536], [14.7372133, -4.5889897, 8.1646908], [10.6910639, -1.9696528, 14.8093659], [10.3034202, -1.9201501, 13.9650167], [8.5873952, -4.922902199999999, 8.9021919], [8.2720908, -4.3015053, 9.518204], [6.432384499999997, -5.573354999999999, 17.2466242], [7.780181399999999, -5.9218722, 18.6812859], [7.6833877, -5.6097901, 17.8109255], [11.8020161, -8.947377, 13.9977253], [9.6210699, -4.2687597, 13.5436987], [10.0312251, -4.5693117, 11.3772988], [8.6758098, -4.7482592, 15.7731794], [10.7485024, -5.162575, 10.2599105], [11.1139331, -6.0156505, 10.5757822], [13.377419499999998, -7.7665385, 13.5725134], [14.6385434, -6.2969856, 13.0304851], [11.912865499999999, -2.0997126, 17.271545], [12.410805400000001, -0.1875567, 16.9010033], [11.1386803, -4.4002032, 17.6596871], [11.894770600000001, -4.5859151, 18.170408600000002], [11.9675686, -0.9274833, 16.5564726], [12.3533282, -2.15229, 18.0894159], [14.2152109, -2.8740758, 9.068227], [14.9787267, -2.398266, 8.8344384], [6.287548999999998, -5.1256786000000005, 15.9348534], [5.690012600000002, -5.8450047000000005, 17.7342939]] -SPLIT COMPLEX: rest indices: [0, 1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68] -SPLIT COMPLEX: rest radii: [1.2, 1.2, 0.73, 0.73, 0.73, 0.73, 0.31, 0.73, 0.31, 0.73, 0.73, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.73, 0.73, 0.31, 0.73, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.71, 0.71, 0.73, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31] -SPLIT COMPLEX: splitting species with 68 atoms in block -labels=['Br', 'Br', 'C', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'N', 'N', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H'] 68 -indices=None -SPLIT COMPLEX: received 3 blocks -PREPARING BLOCK: [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67] -CREATING LIGAND: H27-C37-N2 -PREPARING BLOCK: [1] -CREATING LIGAND: Br -PREPARING BLOCK: [0] -CREATING LIGAND: Br -MOLECULE.SPLIT COMPLEX: labels=['Br', 'Br', 'Fe', 'C', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'N', 'N', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H'] -MOLECULE.SPLIT COMPLEX: metal_idx=[2] -MOLECULE.SPLIT COMPLEX: rest_idx=[0, 1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68] -SPLIT COMPLEX: rest labels: ['Br', 'Br', 'C', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'N', 'N', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H'] -SPLIT COMPLEX: rest coord: [[24.3358938, 0.8921242, 3.845099], [27.0857083, 3.6995867, 3.9309824], [21.8982932, 5.8914327, 2.6132618], [23.4673342, 5.4768094000000005, 6.5040282], [22.9635531, 4.896921, 2.9481356], [22.2566104, 7.1615912, 2.1738762], [23.155639, 7.3854294, 2.0824478], [22.5702474, 5.162575, 5.3156155], [22.2048167, 6.0156506, 4.9997439], [22.9967367, 6.4013717, 7.4584964], [22.7252893, 3.1547959, 0.0433], [20.555867, 5.5676668, 2.7470555], [20.3085538, 4.7196645, 3.0372276], [21.2265303, 2.9879935, 5.3880417], [21.8826189, 2.578136, 4.8735821], [23.207116, 5.2392888, -2.2173318], [23.0877563, 5.9403204, -2.8160551], [21.3511813, 0.9274833, -0.9809465999999993], [20.9079444, 0.1875567, -1.3254772], [24.501900499999998, 5.1882488, -1.5315414], [20.401277, 4.9235171, 6.58175], [21.9671834, 0.8599936, 0.2594883], [21.9367273, 0.0707181, 0.7507404], [22.1091802, 3.2193646, -1.2231459999999998], [25.6353622, 5.6097902, -2.2353994000000004], [25.5385684, 5.9218722, -3.1057597999999995], [22.180069500000002, 4.4002032, -2.0841610999999993], [21.4239792, 4.5859151, -2.5948826], [19.5808796, 6.5119071, 2.4462921], [18.6802064, 6.2969856, 2.545041], [21.4058844, 2.0997126, -1.6960189999999997], [20.9654216, 2.15229, -2.5138899000000006], [22.627686, 1.9696528, 0.7661601], [23.0153296, 1.9201502, 1.6105094], [24.6429401, 4.7482592, -0.1976534000000001], [20.5171752, 6.2951408, 7.0823474], [19.7246226, 6.7751015, 7.1569542], [25.9178642, 4.7291961, 0.3635328], [26.023922, 4.4444789, 1.242927], [21.6347627, 6.9366769, 7.4452572], [21.5350988, 7.8204994, 7.7192307], [26.8863654, 5.573354999999999, -1.6710981], [27.6287372, 5.8450047000000005, -2.158767900000001], [21.2757641, 8.0986061, 1.8699977], [21.5167338, 8.947377, 1.5778008], [19.941330400000002, 7.7665385, 2.0030126], [19.2842758, 8.3908563, 1.792743], [19.2539857, 4.1860503, 6.9111724], [18.5815366, 4.5889898, 7.4108353], [20.095062, 2.2682062, 5.7515745], [20.0034153, 1.3805403, 5.4888154], [23.2875248, 4.5693117, 4.1982273], [23.6976799, 4.2687597, 2.0318274], [21.3900845, 4.3199535, 5.7850619], [23.4038465, 4.4000494, 0.6116509], [22.775091, 5.1439731, 0.5124348], [24.731354600000003, 4.922902199999999, 6.6733341], [25.046659, 4.3015053, 6.0573221], [23.8421896, 6.798008, 8.4969167], [23.557657000000003, 7.4561475, 9.089877], [25.530258, 5.2864854, 7.7503818], [26.365636900000002, 4.8918477, 7.860968], [25.0909698, 6.2342617, 8.6624846], [25.6315429, 6.4860796999999994, 9.3764667], [27.0312009, 5.1256786000000005, -0.35932730000000035], [27.8745505, 5.0932406, 0.0311511], [19.1035389, 2.8740758, 6.507299], [18.3400231, 2.398266, 6.7410877]] -SPLIT COMPLEX: rest indices: [0, 1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68] -SPLIT COMPLEX: rest radii: [1.2, 1.2, 0.73, 0.73, 0.73, 0.73, 0.31, 0.73, 0.31, 0.73, 0.73, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.73, 0.73, 0.31, 0.73, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.71, 0.71, 0.73, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31] -SPLIT COMPLEX: splitting species with 68 atoms in block -labels=['Br', 'Br', 'C', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'N', 'N', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H'] 68 -indices=None -SPLIT COMPLEX: received 3 blocks -PREPARING BLOCK: [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67] -CREATING LIGAND: H27-C37-N2 -PREPARING BLOCK: [1] -CREATING LIGAND: Br -PREPARING BLOCK: [0] -CREATING LIGAND: Br -MOLECULE.SPLIT COMPLEX: labels=['Br', 'Br', 'Fe', 'C', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'N', 'N', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H'] -MOLECULE.SPLIT COMPLEX: metal_idx=[2] -MOLECULE.SPLIT COMPLEX: rest_idx=[0, 1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68] -SPLIT COMPLEX: rest labels: ['Br', 'Br', 'C', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'N', 'N', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H'] -SPLIT COMPLEX: rest coord: [[20.8737687, -0.8921242, 11.632862], [23.6235832, -3.6995867, 11.7187454], [19.2631642, -3.1547959, 7.831063], [20.005209100000002, -5.4768094000000005, 14.2917912], [19.501428, -4.896921, 10.7358986], [19.1655609, -1.9696528, 8.5539232], [19.5532045, -1.9201501, 9.3982724], [19.1081223, -5.162575, 13.1033786], [18.4204938, -2.5781359, 12.6613451], [17.7644052, -2.9879935, 13.1758048], [18.4361681, -5.8914327, 10.4010248], [17.0937419, -5.5676668, 10.5348186], [16.8464287, -4.7196645, 10.8249906], [19.5346116, -6.4013717, 15.2462594], [18.7426916, -6.0156505, 12.7875069], [17.9437593, -2.0997126, 6.091744], [17.5032965, -2.15229, 5.2738731], [16.4792053, -7.7665385, 9.7907757], [15.822150699999998, -8.3908563, 9.5805061], [21.0397754, -5.1882488, 6.2562215], [16.9391519, -4.9235171, 14.3695131], [17.8136391, -8.0986061, 9.6577607], [18.0546087, -8.947377, 9.3655638], [18.6470551, -3.2193646, 6.564617], [22.1732371, -5.6097901, 5.5523635], [22.0764433, -5.9218722, 4.6820031], [18.7179444, -4.4002032, 5.7036019], [17.9623157, -4.585915, 5.191842], [16.1187546, -6.5119071, 10.2340551], [15.2180813, -6.2969856, 10.332804], [19.7449909, -5.2392888, 5.5704311], [19.6256311, -5.9403204, 4.9717079], [18.7944853, -7.1615912, 9.9616392], [19.693513900000003, -7.3854294, 9.8702109], [21.180815, -4.7482592, 7.5901096], [15.6414138, -2.8740758, 14.2950621], [14.877898, -2.398266, 14.5288507], [22.4557391, -4.7291961, 8.1512958], [22.561797, -4.4444788, 9.03069], [16.6329369, -2.2682062, 13.5393375], [16.5412903, -1.3805403, 13.2765784], [23.4242402, -5.573354999999999, 6.1166648], [24.166612100000002, -5.8450047000000005, 5.6289951], [18.5050583, -0.8599936, 8.0472513], [18.4746023, -0.0707181, 8.5385034], [17.8890562, -0.9274833, 6.8068164], [17.4458193, -0.1875567, 6.4622858], [15.7918606, -4.1860503, 14.6989354], [15.1194115, -4.5889897, 15.1985983], [18.1726376, -6.9366769, 15.2330202], [18.072973700000002, -7.8204994, 15.5069937], [19.8253997, -4.5693117, 11.9859903], [20.2355548, -4.2687597, 9.8195904], [17.9279594, -4.3199535, 13.5728249], [19.9417214, -4.4000494, 8.3994139], [19.3129659, -5.1439731, 8.3001978], [21.2692295, -4.922902199999999, 14.4610972], [21.5845339, -4.3015053, 13.8450851], [20.380064400000002, -6.798008, 16.2846797], [20.0955319, -7.4561475, 16.87764], [22.068132900000002, -5.2864854, 15.5381448], [22.9035118, -4.8918477, 15.648731], [21.628844700000002, -6.2342617, 16.4502475], [22.1694178, -6.4860796999999994, 17.1642297], [23.5690758, -5.1256786000000005, 7.4284356], [24.4124254, -5.0932405, 7.8189141], [17.0550501, -6.2951408, 14.8701105], [16.2624976, -6.7751014, 14.9447172]] -SPLIT COMPLEX: rest indices: [0, 1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68] -SPLIT COMPLEX: rest radii: [1.2, 1.2, 0.73, 0.73, 0.73, 0.73, 0.31, 0.73, 0.31, 0.73, 0.73, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.73, 0.73, 0.31, 0.73, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.71, 0.71, 0.73, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31] -SPLIT COMPLEX: splitting species with 68 atoms in block -labels=['Br', 'Br', 'C', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'N', 'N', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H'] 68 -indices=None -SPLIT COMPLEX: received 3 blocks -PREPARING BLOCK: [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67] -CREATING LIGAND: H27-C37-N2 -PREPARING BLOCK: [1] -CREATING LIGAND: Br -PREPARING BLOCK: [0] -CREATING LIGAND: Br - -Cell Reconstruction Finished Normally. Total execution time: 17.00 seconds -Molecule 0 formula=H36-C16-N -New molecule found with: formula=H36-C16-N and added in position 0 -Molecule 1 formula=H36-C16-N -COMPARE_SPECIES. Comparing: -------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 53 - Formula = H36-C16-N - Has Adjacency Matrix = YES - Origin = cell.reconstruct ---------------------------------------------------- - -------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 53 - Formula = H36-C16-N - Has Adjacency Matrix = YES - Origin = cell.reconstruct ---------------------------------------------------- - -['C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'N', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] -['C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'N', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] -mol1.adj_types=array([[0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0], - ..., - [0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0]]) -mol2.adj_types=array([[0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0], - ..., - [0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0]]) -kdx ldx elem1 - elem2 : reordered - reference -Molecule 1 is the same with 0 in typelist -Molecule 2 formula=H27-C37-N2-Fe-Br2 -New ligand found with: formula H27-C37-N2 added in position 1 -COMPARE_SPECIES. Comparing: -------------- Cell2mol LIGAND Object -------------- - Version = 0.1 - Type = specie - Sub-Type = ligand - Number of Atoms = 1 - Formula = Br - Has Adjacency Matrix = YES - Origin = split_complex ---------------------------------------------------- - -------------- Cell2mol LIGAND Object -------------- - Version = 0.1 - Type = specie - Sub-Type = ligand - Number of Atoms = 66 - Formula = H27-C37-N2 - Has Adjacency Matrix = YES - Origin = split_complex ---------------------------------------------------- - -['Br'] -['C', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'N', 'N', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H'] -COMPARE_SPECIES. FALSE, different natoms: -New ligand found with: formula Br added in position 2 -COMPARE_SPECIES. Comparing: -------------- Cell2mol LIGAND Object -------------- - Version = 0.1 - Type = specie - Sub-Type = ligand - Number of Atoms = 1 - Formula = Br - Has Adjacency Matrix = YES - Origin = split_complex ---------------------------------------------------- - -------------- Cell2mol LIGAND Object -------------- - Version = 0.1 - Type = specie - Sub-Type = ligand - Number of Atoms = 66 - Formula = H27-C37-N2 - Has Adjacency Matrix = YES - Origin = split_complex ---------------------------------------------------- - -['Br'] -['C', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'N', 'N', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H'] -COMPARE_SPECIES. FALSE, different natoms: -COMPARE_SPECIES. Comparing: -------------- Cell2mol LIGAND Object -------------- - Version = 0.1 - Type = specie - Sub-Type = ligand - Number of Atoms = 1 - Formula = Br - Has Adjacency Matrix = YES - Origin = split_complex ---------------------------------------------------- - -------------- Cell2mol LIGAND Object -------------- - Version = 0.1 - Type = specie - Sub-Type = ligand - Number of Atoms = 1 - Formula = Br - Has Adjacency Matrix = YES - Origin = split_complex ---------------------------------------------------- - -['Br'] -['Br'] -mol1.adj_types=array([[0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0], - ..., - [0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0]]) -mol2.adj_types=array([[0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0], - ..., - [0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0]]) -kdx ldx elem1 - elem2 : reordered - reference -ligand 2 is the same with 1 in typelist -New Metal Center found with: labels Fe and added in position 3 -Molecule 3 formula=H36-C16-N -COMPARE_SPECIES. Comparing: -------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 53 - Formula = H36-C16-N - Has Adjacency Matrix = YES - Origin = cell.reconstruct ---------------------------------------------------- - -------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 53 - Formula = H36-C16-N - Has Adjacency Matrix = YES - Origin = cell.reconstruct ---------------------------------------------------- - -['C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'N', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] -['C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'N', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] -mol1.adj_types=array([[0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0], - ..., - [0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0]]) -mol2.adj_types=array([[0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0], - ..., - [0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0]]) -kdx ldx elem1 - elem2 : reordered - reference -Molecule 3 is the same with 0 in typelist -Molecule 4 formula=H36-C16-N -COMPARE_SPECIES. Comparing: -------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 53 - Formula = H36-C16-N - Has Adjacency Matrix = YES - Origin = cell.reconstruct ---------------------------------------------------- - -------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 53 - Formula = H36-C16-N - Has Adjacency Matrix = YES - Origin = cell.reconstruct ---------------------------------------------------- - -['C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'N', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] -['C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'N', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] -mol1.adj_types=array([[0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0], - ..., - [0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0]]) -mol2.adj_types=array([[0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0], - ..., - [0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0]]) -kdx ldx elem1 - elem2 : reordered - reference -Molecule 4 is the same with 0 in typelist -Molecule 5 formula=H27-C37-N2-Fe-Br2 -COMPARE_SPECIES. Comparing: -------------- Cell2mol LIGAND Object -------------- - Version = 0.1 - Type = specie - Sub-Type = ligand - Number of Atoms = 66 - Formula = H27-C37-N2 - Has Adjacency Matrix = YES - Origin = split_complex ---------------------------------------------------- - -------------- Cell2mol LIGAND Object -------------- - Version = 0.1 - Type = specie - Sub-Type = ligand - Number of Atoms = 66 - Formula = H27-C37-N2 - Has Adjacency Matrix = YES - Origin = split_complex ---------------------------------------------------- - -['C', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'N', 'N', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H'] -['C', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'N', 'N', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H'] -mol1.adj_types=array([[0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0], - ..., - [0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0]]) -mol2.adj_types=array([[0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0], - ..., - [0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0]]) -kdx ldx elem1 - elem2 : reordered - reference -ligand 0 is the same with 0 in typelist -COMPARE_SPECIES. Comparing: -------------- Cell2mol LIGAND Object -------------- - Version = 0.1 - Type = specie - Sub-Type = ligand - Number of Atoms = 66 - Formula = H27-C37-N2 - Has Adjacency Matrix = YES - Origin = split_complex ---------------------------------------------------- - -------------- Cell2mol LIGAND Object -------------- - Version = 0.1 - Type = specie - Sub-Type = ligand - Number of Atoms = 1 - Formula = Br - Has Adjacency Matrix = YES - Origin = split_complex ---------------------------------------------------- - -['C', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'N', 'N', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H'] -['Br'] -COMPARE_SPECIES. FALSE, different natoms: -COMPARE_SPECIES. Comparing: -------------- Cell2mol LIGAND Object -------------- - Version = 0.1 - Type = specie - Sub-Type = ligand - Number of Atoms = 1 - Formula = Br - Has Adjacency Matrix = YES - Origin = split_complex ---------------------------------------------------- - -------------- Cell2mol LIGAND Object -------------- - Version = 0.1 - Type = specie - Sub-Type = ligand - Number of Atoms = 66 - Formula = H27-C37-N2 - Has Adjacency Matrix = YES - Origin = split_complex ---------------------------------------------------- - -['Br'] -['C', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'N', 'N', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H'] -COMPARE_SPECIES. FALSE, different natoms: -COMPARE_SPECIES. Comparing: -------------- Cell2mol LIGAND Object -------------- - Version = 0.1 - Type = specie - Sub-Type = ligand - Number of Atoms = 1 - Formula = Br - Has Adjacency Matrix = YES - Origin = split_complex ---------------------------------------------------- - -------------- Cell2mol LIGAND Object -------------- - Version = 0.1 - Type = specie - Sub-Type = ligand - Number of Atoms = 1 - Formula = Br - Has Adjacency Matrix = YES - Origin = split_complex ---------------------------------------------------- - -['Br'] -['Br'] -mol1.adj_types=array([[0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0], - ..., - [0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0]]) -mol2.adj_types=array([[0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0], - ..., - [0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0]]) -kdx ldx elem1 - elem2 : reordered - reference -ligand 1 is the same with 1 in typelist -COMPARE_SPECIES. Comparing: -------------- Cell2mol LIGAND Object -------------- - Version = 0.1 - Type = specie - Sub-Type = ligand - Number of Atoms = 1 - Formula = Br - Has Adjacency Matrix = YES - Origin = split_complex ---------------------------------------------------- - -------------- Cell2mol LIGAND Object -------------- - Version = 0.1 - Type = specie - Sub-Type = ligand - Number of Atoms = 66 - Formula = H27-C37-N2 - Has Adjacency Matrix = YES - Origin = split_complex ---------------------------------------------------- - -['Br'] -['C', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'N', 'N', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H'] -COMPARE_SPECIES. FALSE, different natoms: -COMPARE_SPECIES. Comparing: -------------- Cell2mol LIGAND Object -------------- - Version = 0.1 - Type = specie - Sub-Type = ligand - Number of Atoms = 1 - Formula = Br - Has Adjacency Matrix = YES - Origin = split_complex ---------------------------------------------------- - -------------- Cell2mol LIGAND Object -------------- - Version = 0.1 - Type = specie - Sub-Type = ligand - Number of Atoms = 1 - Formula = Br - Has Adjacency Matrix = YES - Origin = split_complex ---------------------------------------------------- - -['Br'] -['Br'] -mol1.adj_types=array([[0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0], - ..., - [0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0]]) -mol2.adj_types=array([[0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0], - ..., - [0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0]]) -kdx ldx elem1 - elem2 : reordered - reference -ligand 2 is the same with 1 in typelist -COMPARE_METALS. Comparing: -Fe -Fe -Metal 0 is the same with 0 in typelist -Molecule 6 formula=H27-C37-N2-Fe-Br2 -COMPARE_SPECIES. Comparing: -------------- Cell2mol LIGAND Object -------------- - Version = 0.1 - Type = specie - Sub-Type = ligand - Number of Atoms = 66 - Formula = H27-C37-N2 - Has Adjacency Matrix = YES - Origin = split_complex ---------------------------------------------------- - -------------- Cell2mol LIGAND Object -------------- - Version = 0.1 - Type = specie - Sub-Type = ligand - Number of Atoms = 66 - Formula = H27-C37-N2 - Has Adjacency Matrix = YES - Origin = split_complex ---------------------------------------------------- - -['C', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'N', 'N', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H'] -['C', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'N', 'N', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H'] -mol1.adj_types=array([[0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0], - ..., - [0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0]]) -mol2.adj_types=array([[0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0], - ..., - [0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0]]) -kdx ldx elem1 - elem2 : reordered - reference -ligand 0 is the same with 0 in typelist -COMPARE_SPECIES. Comparing: -------------- Cell2mol LIGAND Object -------------- - Version = 0.1 - Type = specie - Sub-Type = ligand - Number of Atoms = 66 - Formula = H27-C37-N2 - Has Adjacency Matrix = YES - Origin = split_complex ---------------------------------------------------- - -------------- Cell2mol LIGAND Object -------------- - Version = 0.1 - Type = specie - Sub-Type = ligand - Number of Atoms = 1 - Formula = Br - Has Adjacency Matrix = YES - Origin = split_complex ---------------------------------------------------- - -['C', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'N', 'N', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H'] -['Br'] -COMPARE_SPECIES. FALSE, different natoms: -COMPARE_SPECIES. Comparing: -------------- Cell2mol LIGAND Object -------------- - Version = 0.1 - Type = specie - Sub-Type = ligand - Number of Atoms = 1 - Formula = Br - Has Adjacency Matrix = YES - Origin = split_complex ---------------------------------------------------- - -------------- Cell2mol LIGAND Object -------------- - Version = 0.1 - Type = specie - Sub-Type = ligand - Number of Atoms = 66 - Formula = H27-C37-N2 - Has Adjacency Matrix = YES - Origin = split_complex ---------------------------------------------------- - -['Br'] -['C', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'N', 'N', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H'] -COMPARE_SPECIES. FALSE, different natoms: -COMPARE_SPECIES. Comparing: -------------- Cell2mol LIGAND Object -------------- - Version = 0.1 - Type = specie - Sub-Type = ligand - Number of Atoms = 1 - Formula = Br - Has Adjacency Matrix = YES - Origin = split_complex ---------------------------------------------------- - -------------- Cell2mol LIGAND Object -------------- - Version = 0.1 - Type = specie - Sub-Type = ligand - Number of Atoms = 1 - Formula = Br - Has Adjacency Matrix = YES - Origin = split_complex ---------------------------------------------------- - -['Br'] -['Br'] -mol1.adj_types=array([[0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0], - ..., - [0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0]]) -mol2.adj_types=array([[0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0], - ..., - [0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0]]) -kdx ldx elem1 - elem2 : reordered - reference -ligand 1 is the same with 1 in typelist -COMPARE_SPECIES. Comparing: -------------- Cell2mol LIGAND Object -------------- - Version = 0.1 - Type = specie - Sub-Type = ligand - Number of Atoms = 1 - Formula = Br - Has Adjacency Matrix = YES - Origin = split_complex ---------------------------------------------------- - -------------- Cell2mol LIGAND Object -------------- - Version = 0.1 - Type = specie - Sub-Type = ligand - Number of Atoms = 66 - Formula = H27-C37-N2 - Has Adjacency Matrix = YES - Origin = split_complex ---------------------------------------------------- - -['Br'] -['C', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'N', 'N', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H'] -COMPARE_SPECIES. FALSE, different natoms: -COMPARE_SPECIES. Comparing: -------------- Cell2mol LIGAND Object -------------- - Version = 0.1 - Type = specie - Sub-Type = ligand - Number of Atoms = 1 - Formula = Br - Has Adjacency Matrix = YES - Origin = split_complex ---------------------------------------------------- - -------------- Cell2mol LIGAND Object -------------- - Version = 0.1 - Type = specie - Sub-Type = ligand - Number of Atoms = 1 - Formula = Br - Has Adjacency Matrix = YES - Origin = split_complex ---------------------------------------------------- - -['Br'] -['Br'] -mol1.adj_types=array([[0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0], - ..., - [0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0]]) -mol2.adj_types=array([[0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0], - ..., - [0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0]]) -kdx ldx elem1 - elem2 : reordered - reference -ligand 2 is the same with 1 in typelist -COMPARE_METALS. Comparing: -Fe -Fe -Metal 0 is the same with 0 in typelist -Molecule 7 formula=H27-C37-N2-Fe-Br2 -COMPARE_SPECIES. Comparing: -------------- Cell2mol LIGAND Object -------------- - Version = 0.1 - Type = specie - Sub-Type = ligand - Number of Atoms = 66 - Formula = H27-C37-N2 - Has Adjacency Matrix = YES - Origin = split_complex ---------------------------------------------------- - -------------- Cell2mol LIGAND Object -------------- - Version = 0.1 - Type = specie - Sub-Type = ligand - Number of Atoms = 66 - Formula = H27-C37-N2 - Has Adjacency Matrix = YES - Origin = split_complex ---------------------------------------------------- - -['C', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'N', 'N', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H'] -['C', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'N', 'N', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H'] -mol1.adj_types=array([[0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0], - ..., - [0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0]]) -mol2.adj_types=array([[0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0], - ..., - [0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0]]) -kdx ldx elem1 - elem2 : reordered - reference -ligand 0 is the same with 0 in typelist -COMPARE_SPECIES. Comparing: -------------- Cell2mol LIGAND Object -------------- - Version = 0.1 - Type = specie - Sub-Type = ligand - Number of Atoms = 66 - Formula = H27-C37-N2 - Has Adjacency Matrix = YES - Origin = split_complex ---------------------------------------------------- - -------------- Cell2mol LIGAND Object -------------- - Version = 0.1 - Type = specie - Sub-Type = ligand - Number of Atoms = 1 - Formula = Br - Has Adjacency Matrix = YES - Origin = split_complex ---------------------------------------------------- - -['C', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'N', 'N', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H'] -['Br'] -COMPARE_SPECIES. FALSE, different natoms: -COMPARE_SPECIES. Comparing: -------------- Cell2mol LIGAND Object -------------- - Version = 0.1 - Type = specie - Sub-Type = ligand - Number of Atoms = 1 - Formula = Br - Has Adjacency Matrix = YES - Origin = split_complex ---------------------------------------------------- - -------------- Cell2mol LIGAND Object -------------- - Version = 0.1 - Type = specie - Sub-Type = ligand - Number of Atoms = 66 - Formula = H27-C37-N2 - Has Adjacency Matrix = YES - Origin = split_complex ---------------------------------------------------- - -['Br'] -['C', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'N', 'N', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H'] -COMPARE_SPECIES. FALSE, different natoms: -COMPARE_SPECIES. Comparing: -------------- Cell2mol LIGAND Object -------------- - Version = 0.1 - Type = specie - Sub-Type = ligand - Number of Atoms = 1 - Formula = Br - Has Adjacency Matrix = YES - Origin = split_complex ---------------------------------------------------- - -------------- Cell2mol LIGAND Object -------------- - Version = 0.1 - Type = specie - Sub-Type = ligand - Number of Atoms = 1 - Formula = Br - Has Adjacency Matrix = YES - Origin = split_complex ---------------------------------------------------- - -['Br'] -['Br'] -mol1.adj_types=array([[0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0], - ..., - [0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0]]) -mol2.adj_types=array([[0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0], - ..., - [0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0]]) -kdx ldx elem1 - elem2 : reordered - reference -ligand 1 is the same with 1 in typelist -COMPARE_SPECIES. Comparing: -------------- Cell2mol LIGAND Object -------------- - Version = 0.1 - Type = specie - Sub-Type = ligand - Number of Atoms = 1 - Formula = Br - Has Adjacency Matrix = YES - Origin = split_complex ---------------------------------------------------- - -------------- Cell2mol LIGAND Object -------------- - Version = 0.1 - Type = specie - Sub-Type = ligand - Number of Atoms = 66 - Formula = H27-C37-N2 - Has Adjacency Matrix = YES - Origin = split_complex ---------------------------------------------------- - -['Br'] -['C', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'N', 'N', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H'] -COMPARE_SPECIES. FALSE, different natoms: -COMPARE_SPECIES. Comparing: -------------- Cell2mol LIGAND Object -------------- - Version = 0.1 - Type = specie - Sub-Type = ligand - Number of Atoms = 1 - Formula = Br - Has Adjacency Matrix = YES - Origin = split_complex ---------------------------------------------------- - -------------- Cell2mol LIGAND Object -------------- - Version = 0.1 - Type = specie - Sub-Type = ligand - Number of Atoms = 1 - Formula = Br - Has Adjacency Matrix = YES - Origin = split_complex ---------------------------------------------------- - -['Br'] -['Br'] -mol1.adj_types=array([[0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0], - ..., - [0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0]]) -mol2.adj_types=array([[0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0], - ..., - [0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0]]) -kdx ldx elem1 - elem2 : reordered - reference -ligand 2 is the same with 1 in typelist -COMPARE_METALS. Comparing: -Fe -Fe -Metal 0 is the same with 0 in typelist -4 Species (Metal or Ligand or Molecules) to Characterize - POSCHARGE: doing empty PROTONATION for this specie -CREATED EMPTY PROTONATION ------------- Cell2mol Protonation ---------------- - Status = True - Labels = ['C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'N', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] - Type = Empty - Atoms added in positions = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] - Atoms blocked (no atoms added) = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] ---------------------------------------------------- - - POSCHARGE will try charges [0, -1, 1, -2, 2, -3, 3] -smiles='[H]C([H])([H])C([H])([H])C([H])([H])C([H])([H])[N+](C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])(C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H]' - POSCHARGE: charge 0 with smiles [H]C([H])([H])C([H])([H])C([H])([H])C([H])([H])[N+](C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])(C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H] -smiles='[H]C([H])([H])C([H])([H])C([H])([H])C([H])([H])[N+](C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])(C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H]' - POSCHARGE: charge 0 with smiles [H]C([H])([H])C([H])([H])C([H])([H])C([H])([H])[N+](C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])(C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H] -smiles='[H]C([H])([H])C([H])([H])C([H])([H])C([H])([H])[N+](C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])(C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H]' - POSCHARGE: charge 0 with smiles [H]C([H])([H])C([H])([H])C([H])([H])C([H])([H])[N+](C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])(C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H] -smiles='[H]C([H])([H])C([H])([H])C([H])([H])C([H])([H])[N+](C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])(C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H]' - POSCHARGE: charge 0 with smiles [H]C([H])([H])C([H])([H])C([H])([H])C([H])([H])[N+](C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])(C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H] -smiles='[H]C([H])([H])C([H])([H])C([H])([H])C([H])([H])[N+](C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])(C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H]' - POSCHARGE: charge 0 with smiles [H]C([H])([H])C([H])([H])C([H])([H])C([H])([H])[N+](C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])(C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H] -smiles='[H]C([H])([H])C([H])([H])C([H])([H])C([H])([H])[N+](C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])(C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H]' - POSCHARGE: charge 0 with smiles [H]C([H])([H])C([H])([H])C([H])([H])C([H])([H])[N+](C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])(C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H] -smiles='[H]C([H])([H])C([H])([H])C([H])([H])C([H])([H])[N+](C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])(C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H]' - POSCHARGE: charge 0 with smiles [H]C([H])([H])C([H])([H])C([H])([H])C([H])([H])[N+](C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])(C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H] - NEW SELECT FUNCTION: uncorr_total: [1, 1, 1, 1, 1, 1, 1] - NEW SELECT FUNCTION: uncorr_abs_total: [1, 1, 1, 1, 1, 1, 1] - NEW SELECT FUNCTION: uncorr_abs_atcharge: [1, 1, 1, 1, 1, 1, 1] - NEW SELECT FUNCTION: uncorr_zwitt: [False, False, False, False, False, False, False] - NEW SELECT FUNCTION: coincide: [False, False, True, False, False, False, False] - NEW SELECT FUNCTION: listofmintot: [0, 1, 2, 3, 4, 5, 6] - NEW SELECT FUNCTION: listofminabs: [0, 1, 2, 3, 4, 5, 6] - NEW SELECT FUNCTION: tmplist: [2], including: - NEW SELECT FUNCTION: Corr_charge=1 - NEW SELECT FUNCTION: Smiles=[H]C([H])([H])C([H])([H])C([H])([H])C([H])([H])[N+](C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])(C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H] - NEW SELECT FUNCTION: found corr_charges=[1] - NEW SELECT FUNCTION: doing tgt_charge=1 - NEW SELECT FUNCTION: charge_state added - NEW SELECT FUNCTION: Case 1, only one entry for 1 in tmplist -LIGAND.SPLIT_LIGAND: self.indices=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65] -LIGAND.SPLIT_LIGAND: conn_idx=[9, 49, 50] -LIGAND.SPLIT_LIGAND: conn_labels=['C', 'N', 'N'] -LIGAND.SPLIT_LIGAND: conn_coord=[[13.8173218, 4.896921, 4.8396275], [13.083195, 4.2687597, 5.7559357], [13.4933502, 4.5693117, 3.5895357]] -LIGAND.SPLIT_LIGAND: conn_radii=[0.73, 0.71, 0.71] -blocklist=[[0, 1, 2]] -LIGAND.SPLIT_LIGAND: block=[0, 1, 2] -ADD_ATOM: Metalist length 1 -ADD_ATOM: Ligand Atoms 66 -ADD_ATOM: site= 9 -ADD_ATOM: target ligand atom C -ADD_ATOM: evaluating apos=array([13.8173218, 4.896921 , 4.8396275]) and tgt.coord=[12.0197446, 3.2485743, 4.2411846] -ADD_ATOM: Chosen Metal index None. H was added at site 9 but RESET due to connec=3 -ADD_ATOM: Metalist length 1 -ADD_ATOM: Ligand Atoms 66 -ADD_ATOM: site= 49 -ADD_ATOM: target ligand atom N -ADD_ATOM: evaluating apos=array([13.083195 , 4.2687597, 5.7559357]) and tgt.coord=[12.0197446, 3.2485743, 4.2411846] -ADD_ATOM: Chosen Metal index None. H is added at site 49 -ADD_ATOM: Metalist length 1 -ADD_ATOM: Ligand Atoms 66 -ADD_ATOM: site= 50 -ADD_ATOM: target ligand atom N -ADD_ATOM: evaluating apos=array([13.4933502, 4.5693117, 3.5895357]) and tgt.coord=[12.0197446, 3.2485743, 4.2411846] -ADD_ATOM: Chosen Metal index None. H is added at site 50 -LIGAND.SPLIT_LIGAND: group is found ------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 3 - Formula = C-N2 - Has Adjacency Matrix = YES - Origin = split_ligand - Number of Metals = 1 ---------------------------------------------------- - -GROUP.SPLIT_GROUP: conn_idx=[1, 2] -GROUP.SPLIT_GROUP: conn_labels=['N', 'N'] -GROUP.SPLIT_GROUP: conn_coord=[[13.083195, 4.2687597, 5.7559357], [13.4933502, 4.5693117, 3.5895357]] -GROUP.SPLIT_GROUP: conn_radii=[0.71, 0.71] -blocklist=[[1], [0]] -GROUP.SPLIT_GROUP: block=[1] -ADD_ATOM: Metalist length 1 -ADD_ATOM: Ligand Atoms 66 -ADD_ATOM: site= 50 -ADD_ATOM: target ligand atom N -ADD_ATOM: evaluating apos=array([13.4933502, 4.5693117, 3.5895357]) and tgt.coord=[12.0197446, 3.2485743, 4.2411846] -ADD_ATOM: Chosen Metal index None. H is added at site 50 -GROUP.SPLIT_GROUP: block=[0] -ADD_ATOM: Metalist length 1 -ADD_ATOM: Ligand Atoms 66 -ADD_ATOM: site= 49 -ADD_ATOM: target ligand atom N -ADD_ATOM: evaluating apos=array([13.083195 , 4.2687597, 5.7559357]) and tgt.coord=[12.0197446, 3.2485743, 4.2411846] -ADD_ATOM: Chosen Metal index None. H is added at site 49 -LIGAND.SPLIT_LIGAND: final groups self.groups=[------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 1 - Formula = N - Has Adjacency Matrix = YES - Origin = split_group - Number of Metals = 1 ---------------------------------------------------- -, ------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 1 - Formula = N - Has Adjacency Matrix = YES - Origin = split_group - Number of Metals = 1 ---------------------------------------------------- -] - GET_PROTONATION_STATES: evaluating non-haptic group with index 2 and label C - GET_PROTONATION_STATES: Evaluating as carbene and False - GET_PROTONATION_STATES: will be sent to nonlocal due to C atom - GET_PROTONATION_STATES: evaluating non-haptic group with index 1 and label C - GET_PROTONATION_STATES: Evaluating as carbene and False - GET_PROTONATION_STATES: will be sent to nonlocal due to C atom - - GET_PROTONATION_STATES: Enters non-local with: - GET_PROTONATION_STATES: block: [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] - GET_PROTONATION_STATES: addedlist: [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] - GET_PROTONATION_STATES: 2 non_local_groups groups found - - GET_PROTONATION_STATES: doing combination (0, 0) - GET_PROTONATION_STATES: Protonation SAVED with 0 atoms added to ligand. status=True - - GET_PROTONATION_STATES: doing combination (0, 1) - GET_PROTONATION_STATES: Added H to atom 50 with: a.mconnec=1 and label=N - GET_PROTONATION_STATES: Protonation SAVED with 1 atoms added to ligand. status=True - - GET_PROTONATION_STATES: doing combination (1, 0) - GET_PROTONATION_STATES: Added H to atom 49 with: a.mconnec=1 and label=N - GET_PROTONATION_STATES: Protonation SAVED with 1 atoms added to ligand. status=True - - GET_PROTONATION_STATES: doing combination (1, 1) - GET_PROTONATION_STATES: Added H to atom 49 with: a.mconnec=1 and label=N - GET_PROTONATION_STATES: Added H to atom 50 with: a.mconnec=1 and label=N - GET_PROTONATION_STATES: Protonation SAVED with 2 atoms added to ligand. status=True -protonation_states=[------------- Cell2mol Protonation ---------------- - Status = True - Labels = ['C', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'N', 'N', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H'] - Type = Non-local - Atoms added in positions = [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] - Atoms blocked (no atoms added) = [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] ---------------------------------------------------- -, ------------- Cell2mol Protonation ---------------- - Status = True - Labels = ['C', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'N', 'N', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'H'] - Type = Non-local - Atoms added in positions = [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] - Atoms blocked (no atoms added) = [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] ---------------------------------------------------- -, ------------- Cell2mol Protonation ---------------- - Status = True - Labels = ['C', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'N', 'N', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'H'] - Type = Non-local - Atoms added in positions = [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] - Atoms blocked (no atoms added) = [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] ---------------------------------------------------- -, ------------- Cell2mol Protonation ---------------- - Status = True - Labels = ['C', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'N', 'N', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'H', 'H'] - Type = Non-local - Atoms added in positions = [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] - Atoms blocked (no atoms added) = [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] ---------------------------------------------------- -] - POSCHARGE will try charges [0, -1, 1, -2, 2] -smiles='[H][C+]1[C+]([H])[C+]([H])[C+]2[C+]([C+]1[H])[C-]([H])[C-]([H])[c-]1[c+]([c-]([H])[c-]([H])[c-]([H])[c-]1[H])C2([H])[N-][C-]([N-]C1([H])[C+]2[C+]([C+]([H])[C+]([H])[C-]([H])[C-]2[H])[C-]([H])[C-]([H])[c-]2[c+]([H])[c+]([H])[c+]([H])[c+]([H])[c+]21)[C-]1[C+]([H])[C-]([H])[C-]([H])[C+]([H])[C-]1[H]' - POSCHARGE: charge 0 with smiles [H][C+]1[C+]([H])[C+]([H])[C+]2[C+]([C+]1[H])[C-]([H])[C-]([H])[c-]1[c+]([c-]([H])[c-]([H])[c-]([H])[c-]1[H])C2([H])[N-][C-]([N-]C1([H])[C+]2[C+]([C+]([H])[C+]([H])[C-]([H])[C-]2[H])[C-]([H])[C-]([H])[c-]2[c+]([H])[c+]([H])[c+]([H])[c+]([H])[c+]21)[C-]1[C+]([H])[C-]([H])[C-]([H])[C+]([H])[C-]1[H] -smiles='[H]C1=C([H])c2c([H])c([H])c([H])c([H])c2C([H])(N=C([N-]C2([H])c3c([H])c([H])c([H])c([H])c3C([H])=C([H])c3c([H])c([H])c([H])c([H])c32)c2c([H])c([H])c([H])c([H])c2[H])c2c([H])c([H])c([H])c([H])c21' - POSCHARGE: charge 0 with smiles [H]C1=C([H])c2c([H])c([H])c([H])c([H])c2C([H])(N=C([N-]C2([H])c3c([H])c([H])c([H])c([H])c3C([H])=C([H])c3c([H])c([H])c([H])c([H])c32)c2c([H])c([H])c([H])c([H])c2[H])c2c([H])c([H])c([H])c([H])c21 -smiles='[H][C+]1[C+]([H])[C-]2[C+]([C-]([H])[C-]([H])[C+]([H])[C-]2[H])C([H])([N-][C+]([N-]C2([H])[C-]3[C+]([H])[C+]([H])[C-]([H])[C-]([H])[C-]3[C+]([H])[C+]([H])[c+]3[c-]([H])[c-]([H])[c-]([H])[c-]([H])[c-]32)[C+]2[C+]([H])[C-]([H])[C+]([H])[C+]([H])[C-]2[H])[c-]2[c+]([H])[c+]([H])[c+]([H])[c+]([H])[c+]21' - POSCHARGE: charge 0 with smiles [H][C+]1[C+]([H])[C-]2[C+]([C-]([H])[C-]([H])[C+]([H])[C-]2[H])C([H])([N-][C+]([N-]C2([H])[C-]3[C+]([H])[C+]([H])[C-]([H])[C-]([H])[C-]3[C+]([H])[C+]([H])[c+]3[c-]([H])[c-]([H])[c-]([H])[c-]([H])[c-]32)[C+]2[C+]([H])[C-]([H])[C+]([H])[C+]([H])[C-]2[H])[c-]2[c+]([H])[c+]([H])[c+]([H])[c+]([H])[c+]21 -smiles='[H][C+]1[C+]([H])[C-]([H])[C-]([H])[C+]2[C+]1[C-]([H])[C-]([H])[c-]1[c+]([H])[c+]([H])[c+]([H])[c+]([H])[c+]1C2([H])[N-][C-]([N-]C1([H])[c+]2[c+]([H])[c+]([H])[c+]([H])[c+]([H])[c-]2[C-]([H])[C-]([H])[c-]2[c+]1[c-]([H])[c-]([H])[c-]([H])[c-]2[H])[C-]1[C+]([H])[C-]([H])[C-]([H])[C+]([H])[C-]1[H]' - POSCHARGE: charge 0 with smiles [H][C+]1[C+]([H])[C-]([H])[C-]([H])[C+]2[C+]1[C-]([H])[C-]([H])[c-]1[c+]([H])[c+]([H])[c+]([H])[c+]([H])[c+]1C2([H])[N-][C-]([N-]C1([H])[c+]2[c+]([H])[c+]([H])[c+]([H])[c+]([H])[c-]2[C-]([H])[C-]([H])[c-]2[c+]1[c-]([H])[c-]([H])[c-]([H])[c-]2[H])[C-]1[C+]([H])[C-]([H])[C-]([H])[C+]([H])[C-]1[H] -smiles='[H][C+]1[C+]([H])[C+]([H])[C+]2[C+]([C+]1[H])[C-]([H])[C-]([H])[c-]1[c+]([c-]([H])[c-]([H])[c-]([H])[c-]1[H])C2([H])[N-][C-]([N-]C1([H])[C+]2[C+]([C+]([H])[C+]([H])[C-]([H])[C-]2[H])[C-]([H])[C-]([H])[c-]2[c+]([H])[c+]([H])[c+]([H])[c+]([H])[c+]21)[c+]1[c+]([H])[c-]([H])[c-]([H])[c+]([H])[c-]1[H]' - POSCHARGE: charge 0 with smiles [H][C+]1[C+]([H])[C+]([H])[C+]2[C+]([C+]1[H])[C-]([H])[C-]([H])[c-]1[c+]([c-]([H])[c-]([H])[c-]([H])[c-]1[H])C2([H])[N-][C-]([N-]C1([H])[C+]2[C+]([C+]([H])[C+]([H])[C-]([H])[C-]2[H])[C-]([H])[C-]([H])[c-]2[c+]([H])[c+]([H])[c+]([H])[c+]([H])[c+]21)[c+]1[c+]([H])[c-]([H])[c-]([H])[c+]([H])[c-]1[H] - POSCHARGE will try charges [0, -1, 1, -2, 2] -smiles='[H]C1=C([H])c2c([H])c([H])c([H])c([H])c2C([H])(N=C(c2c([H])c([H])c([H])c([H])c2[H])N([H])C2([H])c3c([H])c([H])c([H])c([H])c3C([H])=C([H])c3c([H])c([H])c([H])c([H])c32)c2c([H])c([H])c([H])c([H])c21' - POSCHARGE: charge 0 with smiles [H]C1=C([H])c2c([H])c([H])c([H])c([H])c2C([H])(N=C(c2c([H])c([H])c([H])c([H])c2[H])N([H])C2([H])c3c([H])c([H])c([H])c([H])c3C([H])=C([H])c3c([H])c([H])c([H])c([H])c32)c2c([H])c([H])c([H])c([H])c21 -smiles='[H][C+]1[C+]([H])[C-]([H])[C+]([H])[C-]2[C+]1[C+]([H])[C-]([H])[c-]1[c+]([H])[c+]([H])[c-]([H])[c-]([H])[c+]1C2([H])[N-][C+]([C-]1[C+]([H])[C-]([H])[C-]([H])[C+]([H])[C-]1[H])N([H])C1([H])[c-]2[c+]([c-]([H])[c-]([H])[c-]([H])[c-]2[H])[C+]([H])[C+]([H])[c-]2[c-]([H])[c+]([H])[c+]([H])[c+]([H])[c-]21' - POSCHARGE: charge 0 with smiles [H][C+]1[C+]([H])[C-]([H])[C+]([H])[C-]2[C+]1[C+]([H])[C-]([H])[c-]1[c+]([H])[c+]([H])[c-]([H])[c-]([H])[c+]1C2([H])[N-][C+]([C-]1[C+]([H])[C-]([H])[C-]([H])[C+]([H])[C-]1[H])N([H])C1([H])[c-]2[c+]([c-]([H])[c-]([H])[c-]([H])[c-]2[H])[C+]([H])[C+]([H])[c-]2[c-]([H])[c+]([H])[c+]([H])[c+]([H])[c-]21 -smiles='[H][C+]1[C+]([H])[C-]([H])[C+]([H])[C-]2[C+]1[C+]([H])[C-]([H])[c-]1[c+]([H])[c+]([H])[c-]([H])[c-]([H])[c+]1C2([H])[N-][C+]([c+]1[c+]([H])[c-]([H])[c-]([H])[c+]([H])[c-]1[H])N([H])C1([H])[c-]2[c+]([c-]([H])[c-]([H])[c-]([H])[c-]2[H])[C+]([H])[C+]([H])[c-]2[c-]([H])[c+]([H])[c+]([H])[c+]([H])[c-]21' - POSCHARGE: charge 0 with smiles [H][C+]1[C+]([H])[C-]([H])[C+]([H])[C-]2[C+]1[C+]([H])[C-]([H])[c-]1[c+]([H])[c+]([H])[c-]([H])[c-]([H])[c+]1C2([H])[N-][C+]([c+]1[c+]([H])[c-]([H])[c-]([H])[c+]([H])[c-]1[H])N([H])C1([H])[c-]2[c+]([c-]([H])[c-]([H])[c-]([H])[c-]2[H])[C+]([H])[C+]([H])[c-]2[c-]([H])[c+]([H])[c+]([H])[c+]([H])[c-]21 -smiles='[H]C1=C([H])C(=C([N-]C2([H])c3c([H])c([H])c([H])c([H])c3C([H])=C([H])c3c([H])c([H])c([H])c([H])c32)N([H])C2([H])c3c([H])c([H])c([H])c([H])c3C([H])=C([H])c3c([H])c([H])c([H])c([H])c32)[C-]([H])C([H])=C1[H]' - POSCHARGE: charge 0 with smiles [H]C1=C([H])C(=C([N-]C2([H])c3c([H])c([H])c([H])c([H])c3C([H])=C([H])c3c([H])c([H])c([H])c([H])c32)N([H])C2([H])c3c([H])c([H])c([H])c([H])c3C([H])=C([H])c3c([H])c([H])c([H])c([H])c32)[C-]([H])C([H])=C1[H] -smiles='[H][C+]1[C+]([H])[C-]([H])[C-]([H])[C+]2[C+]([H])[C-]([H])[C-]3[C+]([C-]([H])[C+]([H])[C-]([H])[C-]3[H])C([H])([N-][C-]([C+]3[C+]([H])[C-]([H])[C+]([H])[C+]([H])[C-]3[H])N([H])C3([H])[c+]4[c+]([H])[c+]([H])[c+]([H])[c+]([H])[c-]4[C-]([H])[C-]([H])[c+]4[c+]([H])[c-]([H])[c-]([H])[c-]([H])[c+]43)[C+]12' - POSCHARGE: charge 0 with smiles [H][C+]1[C+]([H])[C-]([H])[C-]([H])[C+]2[C+]([H])[C-]([H])[C-]3[C+]([C-]([H])[C+]([H])[C-]([H])[C-]3[H])C([H])([N-][C-]([C+]3[C+]([H])[C-]([H])[C+]([H])[C+]([H])[C-]3[H])N([H])C3([H])[c+]4[c+]([H])[c+]([H])[c+]([H])[c+]([H])[c-]4[C-]([H])[C-]([H])[c+]4[c+]([H])[c-]([H])[c-]([H])[c-]([H])[c+]43)[C+]12 - POSCHARGE will try charges [0, -1, 1, -2, 2] -smiles='[H]C1=C([H])c2c([H])c([H])c([H])c([H])c2C([H])(N=C(c2c([H])c([H])c([H])c([H])c2[H])N([H])C2([H])c3c([H])c([H])c([H])c([H])c3C([H])=C([H])c3c([H])c([H])c([H])c([H])c32)c2c([H])c([H])c([H])c([H])c21' - POSCHARGE: charge 0 with smiles [H]C1=C([H])c2c([H])c([H])c([H])c([H])c2C([H])(N=C(c2c([H])c([H])c([H])c([H])c2[H])N([H])C2([H])c3c([H])c([H])c([H])c([H])c3C([H])=C([H])c3c([H])c([H])c([H])c([H])c32)c2c([H])c([H])c([H])c([H])c21 -smiles='[H][C+]1[C+]([H])[C-]([H])[C+]([H])[C-]2[C+]1[C+]([H])[C-]([H])[c-]1[c+]([H])[c+]([H])[c-]([H])[c-]([H])[c+]1C2([H])N([H])[C+]([N-]C1([H])[c-]2[c+]([c-]([H])[c-]([H])[c-]([H])[c-]2[H])[C+]([H])[C+]([H])[c-]2[c-]([H])[c+]([H])[c+]([H])[c+]([H])[c-]21)[C-]1[C+]([H])[C-]([H])[C-]([H])[C+]([H])[C-]1[H]' - POSCHARGE: charge 0 with smiles [H][C+]1[C+]([H])[C-]([H])[C+]([H])[C-]2[C+]1[C+]([H])[C-]([H])[c-]1[c+]([H])[c+]([H])[c-]([H])[c-]([H])[c+]1C2([H])N([H])[C+]([N-]C1([H])[c-]2[c+]([c-]([H])[c-]([H])[c-]([H])[c-]2[H])[C+]([H])[C+]([H])[c-]2[c-]([H])[c+]([H])[c+]([H])[c+]([H])[c-]21)[C-]1[C+]([H])[C-]([H])[C-]([H])[C+]([H])[C-]1[H] -smiles='[H][C+]1[C+]([H])[C-]([H])[C+]([H])[C-]2[C+]1[C+]([H])[C-]([H])[c-]1[c+]([H])[c+]([H])[c-]([H])[c-]([H])[c+]1C2([H])N([H])[C+]([N-]C1([H])[c-]2[c+]([c-]([H])[c-]([H])[c-]([H])[c-]2[H])[C+]([H])[C+]([H])[c-]2[c-]([H])[c+]([H])[c+]([H])[c+]([H])[c-]21)[c+]1[c+]([H])[c-]([H])[c-]([H])[c+]([H])[c-]1[H]' - POSCHARGE: charge 0 with smiles [H][C+]1[C+]([H])[C-]([H])[C+]([H])[C-]2[C+]1[C+]([H])[C-]([H])[c-]1[c+]([H])[c+]([H])[c-]([H])[c-]([H])[c+]1C2([H])N([H])[C+]([N-]C1([H])[c-]2[c+]([c-]([H])[c-]([H])[c-]([H])[c-]2[H])[C+]([H])[C+]([H])[c-]2[c-]([H])[c+]([H])[c+]([H])[c+]([H])[c-]21)[c+]1[c+]([H])[c-]([H])[c-]([H])[c+]([H])[c-]1[H] -smiles='[H]C1=C([H])C(=C([N-]C2([H])c3c([H])c([H])c([H])c([H])c3C([H])=C([H])c3c([H])c([H])c([H])c([H])c32)N([H])C2([H])c3c([H])c([H])c([H])c([H])c3C([H])=C([H])c3c([H])c([H])c([H])c([H])c32)[C-]([H])C([H])=C1[H]' - POSCHARGE: charge 0 with smiles [H]C1=C([H])C(=C([N-]C2([H])c3c([H])c([H])c([H])c([H])c3C([H])=C([H])c3c([H])c([H])c([H])c([H])c32)N([H])C2([H])c3c([H])c([H])c([H])c([H])c3C([H])=C([H])c3c([H])c([H])c([H])c([H])c32)[C-]([H])C([H])=C1[H] -smiles='[H][C+]1[C+]([H])[C-]([H])[C-]([H])[C+]2[C+]([H])[C-]([H])[C-]3[C+]([C-]([H])[C+]([H])[C-]([H])[C-]3[H])C([H])(N([H])[C-]([N-]C3([H])[c+]4[c+]([H])[c+]([H])[c+]([H])[c+]([H])[c-]4[C-]([H])[C-]([H])[c+]4[c+]([H])[c-]([H])[c-]([H])[c-]([H])[c+]43)[C+]3[C+]([H])[C-]([H])[C+]([H])[C+]([H])[C-]3[H])[C+]12' - POSCHARGE: charge 0 with smiles [H][C+]1[C+]([H])[C-]([H])[C-]([H])[C+]2[C+]([H])[C-]([H])[C-]3[C+]([C-]([H])[C+]([H])[C-]([H])[C-]3[H])C([H])(N([H])[C-]([N-]C3([H])[c+]4[c+]([H])[c+]([H])[c+]([H])[c+]([H])[c-]4[C-]([H])[C-]([H])[c+]4[c+]([H])[c-]([H])[c-]([H])[c-]([H])[c+]43)[C+]3[C+]([H])[C-]([H])[C+]([H])[C+]([H])[C-]3[H])[C+]12 - POSCHARGE will try charges [0, -1, 1, -2, 2] -smiles='[H][C+]1[C+]([H])[C-]([H])[C-]([H])[C+]2[C+]1[C-]([H])[C-]([H])[c-]1[c+]([H])[c+]([H])[c+]([H])[c+]([H])[c+]1C2([H])N([H])[C-]([C-]1[C+]([H])[C-]([H])[C-]([H])[C+]([H])[C-]1[H])N([H])C1([H])[c+]2[c-]([H])[c-]([H])[c-]([H])[c-]([H])[c-]2[C-]([H])[C-]([H])[c+]2[c+]([H])[c+]([H])[c+]([H])[c+]([H])[c-]21' - POSCHARGE: charge 0 with smiles [H][C+]1[C+]([H])[C-]([H])[C-]([H])[C+]2[C+]1[C-]([H])[C-]([H])[c-]1[c+]([H])[c+]([H])[c+]([H])[c+]([H])[c+]1C2([H])N([H])[C-]([C-]1[C+]([H])[C-]([H])[C-]([H])[C+]([H])[C-]1[H])N([H])C1([H])[c+]2[c-]([H])[c-]([H])[c-]([H])[c-]([H])[c-]2[C-]([H])[C-]([H])[c+]2[c+]([H])[c+]([H])[c+]([H])[c+]([H])[c-]21 -smiles='[H]C1=C([H])C(=C(N([H])C2([H])c3c([H])c([H])c([H])c([H])c3C([H])=C([H])c3c([H])c([H])c([H])c([H])c32)N([H])C2([H])c3c([H])c([H])c([H])c([H])c3C([H])=C([H])c3c([H])c([H])c([H])c([H])c32)[C-]([H])C([H])=C1[H]' - POSCHARGE: charge 0 with smiles [H]C1=C([H])C(=C(N([H])C2([H])c3c([H])c([H])c([H])c([H])c3C([H])=C([H])c3c([H])c([H])c([H])c([H])c32)N([H])C2([H])c3c([H])c([H])c([H])c([H])c3C([H])=C([H])c3c([H])c([H])c([H])c([H])c32)[C-]([H])C([H])=C1[H] -smiles='[H]C1=C([H])c2c([H])c([H])c([H])c([H])c2C([H])(N([H])C(c2c([H])c([H])c([H])c([H])c2[H])=[N+]([H])C2([H])c3c([H])c([H])c([H])c([H])c3C([H])=C([H])c3c([H])c([H])c([H])c([H])c32)c2c([H])c([H])c([H])c([H])c21' - POSCHARGE: charge 0 with smiles [H]C1=C([H])c2c([H])c([H])c([H])c([H])c2C([H])(N([H])C(c2c([H])c([H])c([H])c([H])c2[H])=[N+]([H])C2([H])c3c([H])c([H])c([H])c([H])c3C([H])=C([H])c3c([H])c([H])c([H])c([H])c32)c2c([H])c([H])c([H])c([H])c21 -smiles='[H][C+]1[C+]([H])[C-]([H])[C-]([H])[C+]2[C+]1[C-]([H])[C-]([H])[c-]1[c+]([H])[c+]([H])[c+]([H])[c+]([H])[c+]1C2([H])N([H])[C-]([C-]1[C+]([H])[C-]([H])[C-]([H])[C+]([H])[C-]1[H])N([H])C1([H])[c+]2[c-]([H])[c-]([H])[c-]([H])[c-]([H])[c-]2[C-]([H])[C-]([H])[C-]2[C+]([H])[C+]([H])[C+]([H])[C+]([H])[C-]21' - POSCHARGE: charge 0 with smiles [H][C+]1[C+]([H])[C-]([H])[C-]([H])[C+]2[C+]1[C-]([H])[C-]([H])[c-]1[c+]([H])[c+]([H])[c+]([H])[c+]([H])[c+]1C2([H])N([H])[C-]([C-]1[C+]([H])[C-]([H])[C-]([H])[C+]([H])[C-]1[H])N([H])C1([H])[c+]2[c-]([H])[c-]([H])[c-]([H])[c-]([H])[c-]2[C-]([H])[C-]([H])[C-]2[C+]([H])[C+]([H])[C+]([H])[C+]([H])[C-]21 -smiles='[H][C+]1[C+]([H])[C-]([H])[C-]([H])[C+]2[C+]1[C-]([H])[C-]([H])[c-]1[c+]([H])[c+]([H])[c+]([H])[c+]([H])[c+]1C2([H])N([H])[C-]([c+]1[c+]([H])[c-]([H])[c-]([H])[c+]([H])[c-]1[H])N([H])C1([H])[c+]2[c-]([H])[c-]([H])[c-]([H])[c-]([H])[c-]2[C-]([H])[C-]([H])[c+]2[c+]([H])[c+]([H])[c+]([H])[c+]([H])[c-]21' - POSCHARGE: charge 0 with smiles [H][C+]1[C+]([H])[C-]([H])[C-]([H])[C+]2[C+]1[C-]([H])[C-]([H])[c-]1[c+]([H])[c+]([H])[c+]([H])[c+]([H])[c+]1C2([H])N([H])[C-]([c+]1[c+]([H])[c-]([H])[c-]([H])[c+]([H])[c-]1[H])N([H])C1([H])[c+]2[c-]([H])[c-]([H])[c-]([H])[c-]([H])[c-]2[C-]([H])[C-]([H])[c+]2[c+]([H])[c+]([H])[c+]([H])[c+]([H])[c-]21 - NEW SELECT FUNCTION: uncorr_total: [-1, -1, 1, -3, 1] - NEW SELECT FUNCTION: uncorr_abs_total: [1, 1, 1, 3, 1] - NEW SELECT FUNCTION: uncorr_abs_atcharge: [35, 1, 1, 35, 35] - NEW SELECT FUNCTION: uncorr_zwitt: [True, False, False, True, True] - NEW SELECT FUNCTION: coincide: [False, True, True, False, False] - NEW SELECT FUNCTION: listofmintot: [0, 1, 2, 4] - NEW SELECT FUNCTION: listofminabs: [1, 2] - NEW SELECT FUNCTION: tmplist: [1, 2], including: - NEW SELECT FUNCTION: Corr_charge=-3 - NEW SELECT FUNCTION: Smiles=[H]C1=C([H])C(=C(N([H])C2([H])c3c([H])c([H])c([H])c([H])c3C([H])=C([H])c3c([H])c([H])c([H])c([H])c32)N([H])C2([H])c3c([H])c([H])c([H])c([H])c3C([H])=C([H])c3c([H])c([H])c([H])c([H])c32)[C-]([H])C([H])=C1[H] - NEW SELECT FUNCTION: Corr_charge=-1 - NEW SELECT FUNCTION: Smiles=[H]C1=C([H])c2c([H])c([H])c([H])c([H])c2C([H])(N([H])C(c2c([H])c([H])c([H])c([H])c2[H])=[N+]([H])C2([H])c3c([H])c([H])c([H])c([H])c3C([H])=C([H])c3c([H])c([H])c([H])c([H])c32)c2c([H])c([H])c([H])c([H])c21 - NEW SELECT FUNCTION: found corr_charges=[-3, -1] - NEW SELECT FUNCTION: doing tgt_charge=-3 - NEW SELECT FUNCTION: charge_state added - NEW SELECT FUNCTION: Case 1, only one entry for -3 in tmplist - NEW SELECT FUNCTION: doing tgt_charge=-1 - NEW SELECT FUNCTION: charge_state added - NEW SELECT FUNCTION: Case 1, only one entry for -1 in tmplist -LIGAND.SPLIT_LIGAND: self.indices=[0] -LIGAND.SPLIT_LIGAND: conn_idx=[0] -LIGAND.SPLIT_LIGAND: conn_labels=['Br'] -LIGAND.SPLIT_LIGAND: conn_coord=[[9.6951666, 3.6995867, 3.8567806]] -LIGAND.SPLIT_LIGAND: conn_radii=[1.2] -blocklist=[[0]] -LIGAND.SPLIT_LIGAND: block=[0] -ADD_ATOM: Metalist length 1 -ADD_ATOM: Ligand Atoms 1 -ADD_ATOM: site= 0 -ADD_ATOM: target ligand atom Br -ADD_ATOM: evaluating apos=array([9.6951666, 3.6995867, 3.8567806]) and tgt.coord=[12.0197446, 3.2485743, 4.2411846] -ADD_ATOM: Chosen Metal index None. H is added at site 0 -LIGAND.SPLIT_LIGAND: group is found ------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 1 - Formula = Br - Has Adjacency Matrix = YES - Origin = split_ligand - Number of Metals = 1 ---------------------------------------------------- - -LIGAND.SPLIT_LIGAND: final groups self.groups=[------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 1 - Formula = Br - Has Adjacency Matrix = YES - Origin = split_ligand - Number of Metals = 1 ---------------------------------------------------- -] - GET_PROTONATION_STATES: evaluating non-haptic group with index 0 and label Br -protonation_states=[------------- Cell2mol Protonation ---------------- - Status = True - Labels = ['Br'] - Type = Local - Atoms added in positions = [0] - Atoms blocked (no atoms added) = [1] ---------------------------------------------------- -] - POSCHARGE will try charges [0, -1, 1, -2, 2] -smiles='[Br-]' - POSCHARGE: charge 0 with smiles [Br-] -smiles='[Br-]' - POSCHARGE: charge 0 with smiles [Br-] -smiles='[Br-]' - POSCHARGE: charge 0 with smiles [Br-] -smiles='[Br-]' - POSCHARGE: charge 0 with smiles [Br-] -smiles='[Br-]' - POSCHARGE: charge 0 with smiles [Br-] - NEW SELECT FUNCTION: uncorr_total: [-1, -1, -1, -1, -1] - NEW SELECT FUNCTION: uncorr_abs_total: [1, 1, 1, 1, 1] - NEW SELECT FUNCTION: uncorr_abs_atcharge: [1, 1, 1, 1, 1] - NEW SELECT FUNCTION: uncorr_zwitt: [False, False, False, False, False] - NEW SELECT FUNCTION: coincide: [False, True, False, False, False] - NEW SELECT FUNCTION: listofmintot: [0, 1, 2, 3, 4] - NEW SELECT FUNCTION: listofminabs: [0, 1, 2, 3, 4] - NEW SELECT FUNCTION: tmplist: [1], including: - NEW SELECT FUNCTION: Corr_charge=-1 - NEW SELECT FUNCTION: Smiles=[Br-] - NEW SELECT FUNCTION: found corr_charges=[-1] - NEW SELECT FUNCTION: doing tgt_charge=-1 - NEW SELECT FUNCTION: charge_state added - NEW SELECT FUNCTION: Case 1, only one entry for -1 in tmplist -LIGAND.SPLIT_LIGAND: self.indices=[0] -LIGAND.SPLIT_LIGAND: conn_idx=[0] -LIGAND.SPLIT_LIGAND: conn_labels=['Br'] -LIGAND.SPLIT_LIGAND: conn_coord=[[12.4449811, 0.8921242, 3.9426641]] -LIGAND.SPLIT_LIGAND: conn_radii=[1.2] -blocklist=[[0]] -LIGAND.SPLIT_LIGAND: block=[0] -ADD_ATOM: Metalist length 1 -ADD_ATOM: Ligand Atoms 1 -ADD_ATOM: site= 0 -ADD_ATOM: target ligand atom Br -ADD_ATOM: evaluating apos=array([12.4449811, 0.8921242, 3.9426641]) and tgt.coord=[12.0197446, 3.2485743, 4.2411846] -ADD_ATOM: Chosen Metal index None. H is added at site 0 -LIGAND.SPLIT_LIGAND: group is found ------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 1 - Formula = Br - Has Adjacency Matrix = YES - Origin = split_ligand - Number of Metals = 1 ---------------------------------------------------- - -LIGAND.SPLIT_LIGAND: final groups self.groups=[------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 1 - Formula = Br - Has Adjacency Matrix = YES - Origin = split_ligand - Number of Metals = 1 ---------------------------------------------------- -] -BALANCE: iterlist [[1], [-3, -1], [-1], [2, 3]] -BALANCE: unique_indices [0, 0, 1, 2, 2, 3, 0, 0, 1, 2, 2, 3, 1, 2, 2, 3, 1, 2, 2, 3] -BALANCE: tmpdistr [(1, -3, -1, 2), (1, -3, -1, 3), (1, -1, -1, 2), (1, -1, -1, 3)] -BALANCE: alldistr added: [1, 1, -3, -1, -1, 2, 1, 1, -3, -1, -1, 2, -3, -1, -1, 2, -3, -1, -1, 2] -d=[1, 1, -3, -1, -1, 2, 1, 1, -3, -1, -1, 2, -3, -1, -1, 2, -3, -1, -1, 2] -BALANCE: alldistr added: [1, 1, -3, -1, -1, 3, 1, 1, -3, -1, -1, 3, -3, -1, -1, 3, -3, -1, -1, 3] -d=[1, 1, -3, -1, -1, 2, 1, 1, -3, -1, -1, 2, -3, -1, -1, 2, -3, -1, -1, 2] -d=[1, 1, -3, -1, -1, 3, 1, 1, -3, -1, -1, 3, -3, -1, -1, 3, -3, -1, -1, 3] -BALANCE: alldistr added: [1, 1, -1, -1, -1, 2, 1, 1, -1, -1, -1, 2, -1, -1, -1, 2, -1, -1, -1, 2] -d=[1, 1, -3, -1, -1, 2, 1, 1, -3, -1, -1, 2, -3, -1, -1, 2, -3, -1, -1, 2] -d=[1, 1, -3, -1, -1, 3, 1, 1, -3, -1, -1, 3, -3, -1, -1, 3, -3, -1, -1, 3] -d=[1, 1, -1, -1, -1, 2, 1, 1, -1, -1, -1, 2, -1, -1, -1, 2, -1, -1, -1, 2] -BALANCE: alldistr added: [1, 1, -1, -1, -1, 3, 1, 1, -1, -1, -1, 3, -1, -1, -1, 3, -1, -1, -1, 3] -d=[1, 1, -3, -1, -1, 2, 1, 1, -3, -1, -1, 2, -3, -1, -1, 2, -3, -1, -1, 2] -d=[1, 1, -3, -1, -1, 3, 1, 1, -3, -1, -1, 3, -3, -1, -1, 3, -3, -1, -1, 3] -d=[1, 1, -1, -1, -1, 2, 1, 1, -1, -1, -1, 2, -1, -1, -1, 2, -1, -1, -1, 2] -d=[1, 1, -1, -1, -1, 3, 1, 1, -1, -1, -1, 3, -1, -1, -1, 3, -1, -1, -1, 3] - -FINAL Charge Distribution: [[1, 1, -1, -1, -1, 2, 1, 1, -1, -1, -1, 2, -1, -1, -1, 2, -1, -1, -1, 2]] - -######################################### -Assigning Charges and Preparing Molecules -######################################### -------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 53 - Formula = H36-C16-N - Has Adjacency Matrix = YES - Origin = cell.reconstruct ---------------------------------------------------- - [0, 1, 6, 7] 1 -Target charge 1 of H36-C16-N exists in [1]. -H36-C16-N - POSCHARGE: doing empty PROTONATION for this specie -CREATED EMPTY PROTONATION ------------- Cell2mol Protonation ---------------- - Status = True - Labels = ['C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'N', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] - Type = Empty - Atoms added in positions = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] - Atoms blocked (no atoms added) = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] ---------------------------------------------------- - - POSCHARGE will try charges [0, -1, 1, -2, 2, -3, 3] -smiles='[H]C([H])([H])C([H])([H])C([H])([H])C([H])([H])[N+](C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])(C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H]' - POSCHARGE: charge 0 with smiles [H]C([H])([H])C([H])([H])C([H])([H])C([H])([H])[N+](C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])(C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H] -smiles='[H]C([H])([H])C([H])([H])C([H])([H])C([H])([H])[N+](C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])(C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H]' - POSCHARGE: charge 0 with smiles [H]C([H])([H])C([H])([H])C([H])([H])C([H])([H])[N+](C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])(C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H] -smiles='[H]C([H])([H])C([H])([H])C([H])([H])C([H])([H])[N+](C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])(C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H]' - POSCHARGE: charge 0 with smiles [H]C([H])([H])C([H])([H])C([H])([H])C([H])([H])[N+](C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])(C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H] -smiles='[H]C([H])([H])C([H])([H])C([H])([H])C([H])([H])[N+](C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])(C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H]' - POSCHARGE: charge 0 with smiles [H]C([H])([H])C([H])([H])C([H])([H])C([H])([H])[N+](C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])(C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H] -smiles='[H]C([H])([H])C([H])([H])C([H])([H])C([H])([H])[N+](C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])(C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H]' - POSCHARGE: charge 0 with smiles [H]C([H])([H])C([H])([H])C([H])([H])C([H])([H])[N+](C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])(C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H] -smiles='[H]C([H])([H])C([H])([H])C([H])([H])C([H])([H])[N+](C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])(C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H]' - POSCHARGE: charge 0 with smiles [H]C([H])([H])C([H])([H])C([H])([H])C([H])([H])[N+](C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])(C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H] -smiles='[H]C([H])([H])C([H])([H])C([H])([H])C([H])([H])[N+](C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])(C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H]' - POSCHARGE: charge 0 with smiles [H]C([H])([H])C([H])([H])C([H])([H])C([H])([H])[N+](C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])(C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H] - NEW SELECT FUNCTION: uncorr_total: [1, 1, 1, 1, 1, 1, 1] - NEW SELECT FUNCTION: uncorr_abs_total: [1, 1, 1, 1, 1, 1, 1] - NEW SELECT FUNCTION: uncorr_abs_atcharge: [1, 1, 1, 1, 1, 1, 1] - NEW SELECT FUNCTION: uncorr_zwitt: [False, False, False, False, False, False, False] - NEW SELECT FUNCTION: coincide: [False, False, True, False, False, False, False] - NEW SELECT FUNCTION: listofmintot: [0, 1, 2, 3, 4, 5, 6] - NEW SELECT FUNCTION: listofminabs: [0, 1, 2, 3, 4, 5, 6] - NEW SELECT FUNCTION: tmplist: [2], including: - NEW SELECT FUNCTION: Corr_charge=1 - NEW SELECT FUNCTION: Smiles=[H]C([H])([H])C([H])([H])C([H])([H])C([H])([H])[N+](C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])(C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H] - NEW SELECT FUNCTION: found corr_charges=[1] - NEW SELECT FUNCTION: doing tgt_charge=1 - NEW SELECT FUNCTION: charge_state added - NEW SELECT FUNCTION: Case 1, only one entry for 1 in tmplist -Target charge 1 of H36-C16-N exists in [1]. -------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 53 - Formula = H36-C16-N - Has Adjacency Matrix = YES - Total Charge = 1 - Smiles = [H]C([H])([H])C([H])([H])C([H])([H])C([H])([H])[N+](C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])(C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H] - Origin = cell.reconstruct ---------------------------------------------------- - [0, 1, 6, 7] 1 -Target charge 1 of H36-C16-N exists in [1]. -H36-C16-N - POSCHARGE: doing empty PROTONATION for this specie -CREATED EMPTY PROTONATION ------------- Cell2mol Protonation ---------------- - Status = True - Labels = ['C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'N', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] - Type = Empty - Atoms added in positions = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] - Atoms blocked (no atoms added) = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] ---------------------------------------------------- - - POSCHARGE will try charges [0, -1, 1, -2, 2, -3, 3] -smiles='[H]C([H])([H])C([H])([H])C([H])([H])C([H])([H])[N+](C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])(C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H]' - POSCHARGE: charge 0 with smiles [H]C([H])([H])C([H])([H])C([H])([H])C([H])([H])[N+](C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])(C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H] -smiles='[H]C([H])([H])C([H])([H])C([H])([H])C([H])([H])[N+](C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])(C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H]' - POSCHARGE: charge 0 with smiles [H]C([H])([H])C([H])([H])C([H])([H])C([H])([H])[N+](C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])(C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H] -smiles='[H]C([H])([H])C([H])([H])C([H])([H])C([H])([H])[N+](C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])(C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H]' - POSCHARGE: charge 0 with smiles [H]C([H])([H])C([H])([H])C([H])([H])C([H])([H])[N+](C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])(C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H] -smiles='[H]C([H])([H])C([H])([H])C([H])([H])C([H])([H])[N+](C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])(C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H]' - POSCHARGE: charge 0 with smiles [H]C([H])([H])C([H])([H])C([H])([H])C([H])([H])[N+](C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])(C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H] -smiles='[H]C([H])([H])C([H])([H])C([H])([H])C([H])([H])[N+](C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])(C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H]' - POSCHARGE: charge 0 with smiles [H]C([H])([H])C([H])([H])C([H])([H])C([H])([H])[N+](C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])(C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H] -smiles='[H]C([H])([H])C([H])([H])C([H])([H])C([H])([H])[N+](C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])(C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H]' - POSCHARGE: charge 0 with smiles [H]C([H])([H])C([H])([H])C([H])([H])C([H])([H])[N+](C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])(C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H] -smiles='[H]C([H])([H])C([H])([H])C([H])([H])C([H])([H])[N+](C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])(C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H]' - POSCHARGE: charge 0 with smiles [H]C([H])([H])C([H])([H])C([H])([H])C([H])([H])[N+](C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])(C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H] - NEW SELECT FUNCTION: uncorr_total: [1, 1, 1, 1, 1, 1, 1] - NEW SELECT FUNCTION: uncorr_abs_total: [1, 1, 1, 1, 1, 1, 1] - NEW SELECT FUNCTION: uncorr_abs_atcharge: [1, 1, 1, 1, 1, 1, 1] - NEW SELECT FUNCTION: uncorr_zwitt: [False, False, False, False, False, False, False] - NEW SELECT FUNCTION: coincide: [False, False, True, False, False, False, False] - NEW SELECT FUNCTION: listofmintot: [0, 1, 2, 3, 4, 5, 6] - NEW SELECT FUNCTION: listofminabs: [0, 1, 2, 3, 4, 5, 6] - NEW SELECT FUNCTION: tmplist: [2], including: - NEW SELECT FUNCTION: Corr_charge=1 - NEW SELECT FUNCTION: Smiles=[H]C([H])([H])C([H])([H])C([H])([H])C([H])([H])[N+](C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])(C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H] - NEW SELECT FUNCTION: found corr_charges=[1] - NEW SELECT FUNCTION: doing tgt_charge=1 - NEW SELECT FUNCTION: charge_state added - NEW SELECT FUNCTION: Case 1, only one entry for 1 in tmplist -Target charge 1 of H36-C16-N exists in [1]. -------------- Cell2mol LIGAND Object -------------- - Version = 0.1 - Type = specie - Sub-Type = ligand - Number of Atoms = 66 - Formula = H27-C37-N2 - Has Adjacency Matrix = YES - Origin = split_complex - Number of Groups = 2 ---------------------------------------------------- - [2, 8, 12, 16] -1 -Target charge -1 of H27-C37-N2 exists in [-3, -1]. -H27-C37-N2 - GET_PROTONATION_STATES: evaluating non-haptic group with index 2 and label C - GET_PROTONATION_STATES: Evaluating as carbene and False - GET_PROTONATION_STATES: will be sent to nonlocal due to C atom - GET_PROTONATION_STATES: evaluating non-haptic group with index 1 and label C - GET_PROTONATION_STATES: Evaluating as carbene and False - GET_PROTONATION_STATES: will be sent to nonlocal due to C atom - - GET_PROTONATION_STATES: Enters non-local with: - GET_PROTONATION_STATES: block: [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] - GET_PROTONATION_STATES: addedlist: [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] - GET_PROTONATION_STATES: 2 non_local_groups groups found - - GET_PROTONATION_STATES: doing combination (0, 0) - GET_PROTONATION_STATES: Protonation SAVED with 0 atoms added to ligand. status=True - - GET_PROTONATION_STATES: doing combination (0, 1) - GET_PROTONATION_STATES: Added H to atom 50 with: a.mconnec=1 and label=N - GET_PROTONATION_STATES: Protonation SAVED with 1 atoms added to ligand. status=True - - GET_PROTONATION_STATES: doing combination (1, 0) - GET_PROTONATION_STATES: Added H to atom 49 with: a.mconnec=1 and label=N - GET_PROTONATION_STATES: Protonation SAVED with 1 atoms added to ligand. status=True - - GET_PROTONATION_STATES: doing combination (1, 1) - GET_PROTONATION_STATES: Added H to atom 49 with: a.mconnec=1 and label=N - GET_PROTONATION_STATES: Added H to atom 50 with: a.mconnec=1 and label=N - GET_PROTONATION_STATES: Protonation SAVED with 2 atoms added to ligand. status=True -protonation_states=[------------- Cell2mol Protonation ---------------- - Status = True - Labels = ['C', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'N', 'N', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H'] - Type = Non-local - Atoms added in positions = [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] - Atoms blocked (no atoms added) = [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] ---------------------------------------------------- -, ------------- Cell2mol Protonation ---------------- - Status = True - Labels = ['C', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'N', 'N', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'H'] - Type = Non-local - Atoms added in positions = [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] - Atoms blocked (no atoms added) = [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] ---------------------------------------------------- -, ------------- Cell2mol Protonation ---------------- - Status = True - Labels = ['C', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'N', 'N', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'H'] - Type = Non-local - Atoms added in positions = [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] - Atoms blocked (no atoms added) = [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] ---------------------------------------------------- -, ------------- Cell2mol Protonation ---------------- - Status = True - Labels = ['C', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'N', 'N', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'H', 'H'] - Type = Non-local - Atoms added in positions = [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] - Atoms blocked (no atoms added) = [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] ---------------------------------------------------- -] - POSCHARGE will try charges [0, -1, 1, -2, 2] -smiles='[H][C+]1[C+]([H])[C+]([H])[C+]2[C+]([C+]1[H])[C-]([H])[C-]([H])[c-]1[c+]([c-]([H])[c-]([H])[c-]([H])[c-]1[H])C2([H])[N-][C-]([N-]C1([H])[C+]2[C+]([C+]([H])[C+]([H])[C-]([H])[C-]2[H])[C-]([H])[C-]([H])[c-]2[c+]([H])[c+]([H])[c+]([H])[c+]([H])[c+]21)[C-]1[C+]([H])[C-]([H])[C-]([H])[C+]([H])[C-]1[H]' - POSCHARGE: charge 0 with smiles [H][C+]1[C+]([H])[C+]([H])[C+]2[C+]([C+]1[H])[C-]([H])[C-]([H])[c-]1[c+]([c-]([H])[c-]([H])[c-]([H])[c-]1[H])C2([H])[N-][C-]([N-]C1([H])[C+]2[C+]([C+]([H])[C+]([H])[C-]([H])[C-]2[H])[C-]([H])[C-]([H])[c-]2[c+]([H])[c+]([H])[c+]([H])[c+]([H])[c+]21)[C-]1[C+]([H])[C-]([H])[C-]([H])[C+]([H])[C-]1[H] -smiles='[H]C1=C([H])c2c([H])c([H])c([H])c([H])c2C([H])(N=C([N-]C2([H])c3c([H])c([H])c([H])c([H])c3C([H])=C([H])c3c([H])c([H])c([H])c([H])c32)c2c([H])c([H])c([H])c([H])c2[H])c2c([H])c([H])c([H])c([H])c21' - POSCHARGE: charge 0 with smiles [H]C1=C([H])c2c([H])c([H])c([H])c([H])c2C([H])(N=C([N-]C2([H])c3c([H])c([H])c([H])c([H])c3C([H])=C([H])c3c([H])c([H])c([H])c([H])c32)c2c([H])c([H])c([H])c([H])c2[H])c2c([H])c([H])c([H])c([H])c21 -smiles='[H][C+]1[C+]([H])[C-]2[C+]([C-]([H])[C-]([H])[C+]([H])[C-]2[H])C([H])([N-][C+]([N-]C2([H])[C-]3[C+]([H])[C+]([H])[C-]([H])[C-]([H])[C-]3[C+]([H])[C+]([H])[c+]3[c-]([H])[c-]([H])[c-]([H])[c-]([H])[c-]32)[C+]2[C+]([H])[C-]([H])[C+]([H])[C+]([H])[C-]2[H])[c-]2[c+]([H])[c+]([H])[c+]([H])[c+]([H])[c+]21' - POSCHARGE: charge 0 with smiles [H][C+]1[C+]([H])[C-]2[C+]([C-]([H])[C-]([H])[C+]([H])[C-]2[H])C([H])([N-][C+]([N-]C2([H])[C-]3[C+]([H])[C+]([H])[C-]([H])[C-]([H])[C-]3[C+]([H])[C+]([H])[c+]3[c-]([H])[c-]([H])[c-]([H])[c-]([H])[c-]32)[C+]2[C+]([H])[C-]([H])[C+]([H])[C+]([H])[C-]2[H])[c-]2[c+]([H])[c+]([H])[c+]([H])[c+]([H])[c+]21 -smiles='[H][C+]1[C+]([H])[C-]([H])[C-]([H])[C+]2[C+]1[C-]([H])[C-]([H])[c-]1[c+]([H])[c+]([H])[c+]([H])[c+]([H])[c+]1C2([H])[N-][C-]([N-]C1([H])[c+]2[c+]([H])[c+]([H])[c+]([H])[c+]([H])[c-]2[C-]([H])[C-]([H])[c-]2[c+]1[c-]([H])[c-]([H])[c-]([H])[c-]2[H])[C-]1[C+]([H])[C-]([H])[C-]([H])[C+]([H])[C-]1[H]' - POSCHARGE: charge 0 with smiles [H][C+]1[C+]([H])[C-]([H])[C-]([H])[C+]2[C+]1[C-]([H])[C-]([H])[c-]1[c+]([H])[c+]([H])[c+]([H])[c+]([H])[c+]1C2([H])[N-][C-]([N-]C1([H])[c+]2[c+]([H])[c+]([H])[c+]([H])[c+]([H])[c-]2[C-]([H])[C-]([H])[c-]2[c+]1[c-]([H])[c-]([H])[c-]([H])[c-]2[H])[C-]1[C+]([H])[C-]([H])[C-]([H])[C+]([H])[C-]1[H] -smiles='[H][C+]1[C+]([H])[C+]([H])[C+]2[C+]([C+]1[H])[C-]([H])[C-]([H])[c-]1[c+]([c-]([H])[c-]([H])[c-]([H])[c-]1[H])C2([H])[N-][C-]([N-]C1([H])[C+]2[C+]([C+]([H])[C+]([H])[C-]([H])[C-]2[H])[C-]([H])[C-]([H])[c-]2[c+]([H])[c+]([H])[c+]([H])[c+]([H])[c+]21)[c+]1[c+]([H])[c-]([H])[c-]([H])[c+]([H])[c-]1[H]' - POSCHARGE: charge 0 with smiles [H][C+]1[C+]([H])[C+]([H])[C+]2[C+]([C+]1[H])[C-]([H])[C-]([H])[c-]1[c+]([c-]([H])[c-]([H])[c-]([H])[c-]1[H])C2([H])[N-][C-]([N-]C1([H])[C+]2[C+]([C+]([H])[C+]([H])[C-]([H])[C-]2[H])[C-]([H])[C-]([H])[c-]2[c+]([H])[c+]([H])[c+]([H])[c+]([H])[c+]21)[c+]1[c+]([H])[c-]([H])[c-]([H])[c+]([H])[c-]1[H] - POSCHARGE will try charges [0, -1, 1, -2, 2] -smiles='[H]C1=C([H])c2c([H])c([H])c([H])c([H])c2C([H])(N=C(c2c([H])c([H])c([H])c([H])c2[H])N([H])C2([H])c3c([H])c([H])c([H])c([H])c3C([H])=C([H])c3c([H])c([H])c([H])c([H])c32)c2c([H])c([H])c([H])c([H])c21' - POSCHARGE: charge 0 with smiles [H]C1=C([H])c2c([H])c([H])c([H])c([H])c2C([H])(N=C(c2c([H])c([H])c([H])c([H])c2[H])N([H])C2([H])c3c([H])c([H])c([H])c([H])c3C([H])=C([H])c3c([H])c([H])c([H])c([H])c32)c2c([H])c([H])c([H])c([H])c21 -smiles='[H][C+]1[C+]([H])[C-]([H])[C+]([H])[C-]2[C+]1[C+]([H])[C-]([H])[c-]1[c+]([H])[c+]([H])[c-]([H])[c-]([H])[c+]1C2([H])[N-][C+]([C-]1[C+]([H])[C-]([H])[C-]([H])[C+]([H])[C-]1[H])N([H])C1([H])[c-]2[c+]([c-]([H])[c-]([H])[c-]([H])[c-]2[H])[C+]([H])[C+]([H])[c-]2[c-]([H])[c+]([H])[c+]([H])[c+]([H])[c-]21' - POSCHARGE: charge 0 with smiles [H][C+]1[C+]([H])[C-]([H])[C+]([H])[C-]2[C+]1[C+]([H])[C-]([H])[c-]1[c+]([H])[c+]([H])[c-]([H])[c-]([H])[c+]1C2([H])[N-][C+]([C-]1[C+]([H])[C-]([H])[C-]([H])[C+]([H])[C-]1[H])N([H])C1([H])[c-]2[c+]([c-]([H])[c-]([H])[c-]([H])[c-]2[H])[C+]([H])[C+]([H])[c-]2[c-]([H])[c+]([H])[c+]([H])[c+]([H])[c-]21 -smiles='[H][C+]1[C+]([H])[C-]([H])[C+]([H])[C-]2[C+]1[C+]([H])[C-]([H])[c-]1[c+]([H])[c+]([H])[c-]([H])[c-]([H])[c+]1C2([H])[N-][C+]([c+]1[c+]([H])[c-]([H])[c-]([H])[c+]([H])[c-]1[H])N([H])C1([H])[c-]2[c+]([c-]([H])[c-]([H])[c-]([H])[c-]2[H])[C+]([H])[C+]([H])[c-]2[c-]([H])[c+]([H])[c+]([H])[c+]([H])[c-]21' - POSCHARGE: charge 0 with smiles [H][C+]1[C+]([H])[C-]([H])[C+]([H])[C-]2[C+]1[C+]([H])[C-]([H])[c-]1[c+]([H])[c+]([H])[c-]([H])[c-]([H])[c+]1C2([H])[N-][C+]([c+]1[c+]([H])[c-]([H])[c-]([H])[c+]([H])[c-]1[H])N([H])C1([H])[c-]2[c+]([c-]([H])[c-]([H])[c-]([H])[c-]2[H])[C+]([H])[C+]([H])[c-]2[c-]([H])[c+]([H])[c+]([H])[c+]([H])[c-]21 -smiles='[H]C1=C([H])C(=C([N-]C2([H])c3c([H])c([H])c([H])c([H])c3C([H])=C([H])c3c([H])c([H])c([H])c([H])c32)N([H])C2([H])c3c([H])c([H])c([H])c([H])c3C([H])=C([H])c3c([H])c([H])c([H])c([H])c32)[C-]([H])C([H])=C1[H]' - POSCHARGE: charge 0 with smiles [H]C1=C([H])C(=C([N-]C2([H])c3c([H])c([H])c([H])c([H])c3C([H])=C([H])c3c([H])c([H])c([H])c([H])c32)N([H])C2([H])c3c([H])c([H])c([H])c([H])c3C([H])=C([H])c3c([H])c([H])c([H])c([H])c32)[C-]([H])C([H])=C1[H] -smiles='[H][C+]1[C+]([H])[C-]([H])[C-]([H])[C+]2[C+]([H])[C-]([H])[C-]3[C+]([C-]([H])[C+]([H])[C-]([H])[C-]3[H])C([H])([N-][C-]([C+]3[C+]([H])[C-]([H])[C+]([H])[C+]([H])[C-]3[H])N([H])C3([H])[c+]4[c+]([H])[c+]([H])[c+]([H])[c+]([H])[c-]4[C-]([H])[C-]([H])[c+]4[c+]([H])[c-]([H])[c-]([H])[c-]([H])[c+]43)[C+]12' - POSCHARGE: charge 0 with smiles [H][C+]1[C+]([H])[C-]([H])[C-]([H])[C+]2[C+]([H])[C-]([H])[C-]3[C+]([C-]([H])[C+]([H])[C-]([H])[C-]3[H])C([H])([N-][C-]([C+]3[C+]([H])[C-]([H])[C+]([H])[C+]([H])[C-]3[H])N([H])C3([H])[c+]4[c+]([H])[c+]([H])[c+]([H])[c+]([H])[c-]4[C-]([H])[C-]([H])[c+]4[c+]([H])[c-]([H])[c-]([H])[c-]([H])[c+]43)[C+]12 - POSCHARGE will try charges [0, -1, 1, -2, 2] -smiles='[H]C1=C([H])c2c([H])c([H])c([H])c([H])c2C([H])(N=C(c2c([H])c([H])c([H])c([H])c2[H])N([H])C2([H])c3c([H])c([H])c([H])c([H])c3C([H])=C([H])c3c([H])c([H])c([H])c([H])c32)c2c([H])c([H])c([H])c([H])c21' - POSCHARGE: charge 0 with smiles [H]C1=C([H])c2c([H])c([H])c([H])c([H])c2C([H])(N=C(c2c([H])c([H])c([H])c([H])c2[H])N([H])C2([H])c3c([H])c([H])c([H])c([H])c3C([H])=C([H])c3c([H])c([H])c([H])c([H])c32)c2c([H])c([H])c([H])c([H])c21 -smiles='[H][C+]1[C+]([H])[C-]([H])[C+]([H])[C-]2[C+]1[C+]([H])[C-]([H])[c-]1[c+]([H])[c+]([H])[c-]([H])[c-]([H])[c+]1C2([H])N([H])[C+]([N-]C1([H])[c-]2[c+]([c-]([H])[c-]([H])[c-]([H])[c-]2[H])[C+]([H])[C+]([H])[c-]2[c-]([H])[c+]([H])[c+]([H])[c+]([H])[c-]21)[C-]1[C+]([H])[C-]([H])[C-]([H])[C+]([H])[C-]1[H]' - POSCHARGE: charge 0 with smiles [H][C+]1[C+]([H])[C-]([H])[C+]([H])[C-]2[C+]1[C+]([H])[C-]([H])[c-]1[c+]([H])[c+]([H])[c-]([H])[c-]([H])[c+]1C2([H])N([H])[C+]([N-]C1([H])[c-]2[c+]([c-]([H])[c-]([H])[c-]([H])[c-]2[H])[C+]([H])[C+]([H])[c-]2[c-]([H])[c+]([H])[c+]([H])[c+]([H])[c-]21)[C-]1[C+]([H])[C-]([H])[C-]([H])[C+]([H])[C-]1[H] -smiles='[H][C+]1[C+]([H])[C-]([H])[C+]([H])[C-]2[C+]1[C+]([H])[C-]([H])[c-]1[c+]([H])[c+]([H])[c-]([H])[c-]([H])[c+]1C2([H])N([H])[C+]([N-]C1([H])[c-]2[c+]([c-]([H])[c-]([H])[c-]([H])[c-]2[H])[C+]([H])[C+]([H])[c-]2[c-]([H])[c+]([H])[c+]([H])[c+]([H])[c-]21)[c+]1[c+]([H])[c-]([H])[c-]([H])[c+]([H])[c-]1[H]' - POSCHARGE: charge 0 with smiles [H][C+]1[C+]([H])[C-]([H])[C+]([H])[C-]2[C+]1[C+]([H])[C-]([H])[c-]1[c+]([H])[c+]([H])[c-]([H])[c-]([H])[c+]1C2([H])N([H])[C+]([N-]C1([H])[c-]2[c+]([c-]([H])[c-]([H])[c-]([H])[c-]2[H])[C+]([H])[C+]([H])[c-]2[c-]([H])[c+]([H])[c+]([H])[c+]([H])[c-]21)[c+]1[c+]([H])[c-]([H])[c-]([H])[c+]([H])[c-]1[H] -smiles='[H]C1=C([H])C(=C([N-]C2([H])c3c([H])c([H])c([H])c([H])c3C([H])=C([H])c3c([H])c([H])c([H])c([H])c32)N([H])C2([H])c3c([H])c([H])c([H])c([H])c3C([H])=C([H])c3c([H])c([H])c([H])c([H])c32)[C-]([H])C([H])=C1[H]' - POSCHARGE: charge 0 with smiles [H]C1=C([H])C(=C([N-]C2([H])c3c([H])c([H])c([H])c([H])c3C([H])=C([H])c3c([H])c([H])c([H])c([H])c32)N([H])C2([H])c3c([H])c([H])c([H])c([H])c3C([H])=C([H])c3c([H])c([H])c([H])c([H])c32)[C-]([H])C([H])=C1[H] -smiles='[H][C+]1[C+]([H])[C-]([H])[C-]([H])[C+]2[C+]([H])[C-]([H])[C-]3[C+]([C-]([H])[C+]([H])[C-]([H])[C-]3[H])C([H])(N([H])[C-]([N-]C3([H])[c+]4[c+]([H])[c+]([H])[c+]([H])[c+]([H])[c-]4[C-]([H])[C-]([H])[c+]4[c+]([H])[c-]([H])[c-]([H])[c-]([H])[c+]43)[C+]3[C+]([H])[C-]([H])[C+]([H])[C+]([H])[C-]3[H])[C+]12' - POSCHARGE: charge 0 with smiles [H][C+]1[C+]([H])[C-]([H])[C-]([H])[C+]2[C+]([H])[C-]([H])[C-]3[C+]([C-]([H])[C+]([H])[C-]([H])[C-]3[H])C([H])(N([H])[C-]([N-]C3([H])[c+]4[c+]([H])[c+]([H])[c+]([H])[c+]([H])[c-]4[C-]([H])[C-]([H])[c+]4[c+]([H])[c-]([H])[c-]([H])[c-]([H])[c+]43)[C+]3[C+]([H])[C-]([H])[C+]([H])[C+]([H])[C-]3[H])[C+]12 - POSCHARGE will try charges [0, -1, 1, -2, 2] -smiles='[H][C+]1[C+]([H])[C-]([H])[C-]([H])[C+]2[C+]1[C-]([H])[C-]([H])[c-]1[c+]([H])[c+]([H])[c+]([H])[c+]([H])[c+]1C2([H])N([H])[C-]([C-]1[C+]([H])[C-]([H])[C-]([H])[C+]([H])[C-]1[H])N([H])C1([H])[c+]2[c-]([H])[c-]([H])[c-]([H])[c-]([H])[c-]2[C-]([H])[C-]([H])[c+]2[c+]([H])[c+]([H])[c+]([H])[c+]([H])[c-]21' - POSCHARGE: charge 0 with smiles [H][C+]1[C+]([H])[C-]([H])[C-]([H])[C+]2[C+]1[C-]([H])[C-]([H])[c-]1[c+]([H])[c+]([H])[c+]([H])[c+]([H])[c+]1C2([H])N([H])[C-]([C-]1[C+]([H])[C-]([H])[C-]([H])[C+]([H])[C-]1[H])N([H])C1([H])[c+]2[c-]([H])[c-]([H])[c-]([H])[c-]([H])[c-]2[C-]([H])[C-]([H])[c+]2[c+]([H])[c+]([H])[c+]([H])[c+]([H])[c-]21 -smiles='[H]C1=C([H])C(=C(N([H])C2([H])c3c([H])c([H])c([H])c([H])c3C([H])=C([H])c3c([H])c([H])c([H])c([H])c32)N([H])C2([H])c3c([H])c([H])c([H])c([H])c3C([H])=C([H])c3c([H])c([H])c([H])c([H])c32)[C-]([H])C([H])=C1[H]' - POSCHARGE: charge 0 with smiles [H]C1=C([H])C(=C(N([H])C2([H])c3c([H])c([H])c([H])c([H])c3C([H])=C([H])c3c([H])c([H])c([H])c([H])c32)N([H])C2([H])c3c([H])c([H])c([H])c([H])c3C([H])=C([H])c3c([H])c([H])c([H])c([H])c32)[C-]([H])C([H])=C1[H] -smiles='[H]C1=C([H])c2c([H])c([H])c([H])c([H])c2C([H])(N([H])C(c2c([H])c([H])c([H])c([H])c2[H])=[N+]([H])C2([H])c3c([H])c([H])c([H])c([H])c3C([H])=C([H])c3c([H])c([H])c([H])c([H])c32)c2c([H])c([H])c([H])c([H])c21' - POSCHARGE: charge 0 with smiles [H]C1=C([H])c2c([H])c([H])c([H])c([H])c2C([H])(N([H])C(c2c([H])c([H])c([H])c([H])c2[H])=[N+]([H])C2([H])c3c([H])c([H])c([H])c([H])c3C([H])=C([H])c3c([H])c([H])c([H])c([H])c32)c2c([H])c([H])c([H])c([H])c21 -smiles='[H][C+]1[C+]([H])[C-]([H])[C-]([H])[C+]2[C+]1[C-]([H])[C-]([H])[c-]1[c+]([H])[c+]([H])[c+]([H])[c+]([H])[c+]1C2([H])N([H])[C-]([C-]1[C+]([H])[C-]([H])[C-]([H])[C+]([H])[C-]1[H])N([H])C1([H])[c+]2[c-]([H])[c-]([H])[c-]([H])[c-]([H])[c-]2[C-]([H])[C-]([H])[C-]2[C+]([H])[C+]([H])[C+]([H])[C+]([H])[C-]21' - POSCHARGE: charge 0 with smiles [H][C+]1[C+]([H])[C-]([H])[C-]([H])[C+]2[C+]1[C-]([H])[C-]([H])[c-]1[c+]([H])[c+]([H])[c+]([H])[c+]([H])[c+]1C2([H])N([H])[C-]([C-]1[C+]([H])[C-]([H])[C-]([H])[C+]([H])[C-]1[H])N([H])C1([H])[c+]2[c-]([H])[c-]([H])[c-]([H])[c-]([H])[c-]2[C-]([H])[C-]([H])[C-]2[C+]([H])[C+]([H])[C+]([H])[C+]([H])[C-]21 -smiles='[H][C+]1[C+]([H])[C-]([H])[C-]([H])[C+]2[C+]1[C-]([H])[C-]([H])[c-]1[c+]([H])[c+]([H])[c+]([H])[c+]([H])[c+]1C2([H])N([H])[C-]([c+]1[c+]([H])[c-]([H])[c-]([H])[c+]([H])[c-]1[H])N([H])C1([H])[c+]2[c-]([H])[c-]([H])[c-]([H])[c-]([H])[c-]2[C-]([H])[C-]([H])[c+]2[c+]([H])[c+]([H])[c+]([H])[c+]([H])[c-]21' - POSCHARGE: charge 0 with smiles [H][C+]1[C+]([H])[C-]([H])[C-]([H])[C+]2[C+]1[C-]([H])[C-]([H])[c-]1[c+]([H])[c+]([H])[c+]([H])[c+]([H])[c+]1C2([H])N([H])[C-]([c+]1[c+]([H])[c-]([H])[c-]([H])[c+]([H])[c-]1[H])N([H])C1([H])[c+]2[c-]([H])[c-]([H])[c-]([H])[c-]([H])[c-]2[C-]([H])[C-]([H])[c+]2[c+]([H])[c+]([H])[c+]([H])[c+]([H])[c-]21 - NEW SELECT FUNCTION: uncorr_total: [-1, -1, 1, -3, 1] - NEW SELECT FUNCTION: uncorr_abs_total: [1, 1, 1, 3, 1] - NEW SELECT FUNCTION: uncorr_abs_atcharge: [35, 1, 1, 35, 35] - NEW SELECT FUNCTION: uncorr_zwitt: [True, False, False, True, True] - NEW SELECT FUNCTION: coincide: [False, True, True, False, False] - NEW SELECT FUNCTION: listofmintot: [0, 1, 2, 4] - NEW SELECT FUNCTION: listofminabs: [1, 2] - NEW SELECT FUNCTION: tmplist: [1, 2], including: - NEW SELECT FUNCTION: Corr_charge=-3 - NEW SELECT FUNCTION: Smiles=[H]C1=C([H])C(=C(N([H])C2([H])c3c([H])c([H])c([H])c([H])c3C([H])=C([H])c3c([H])c([H])c([H])c([H])c32)N([H])C2([H])c3c([H])c([H])c([H])c([H])c3C([H])=C([H])c3c([H])c([H])c([H])c([H])c32)[C-]([H])C([H])=C1[H] - NEW SELECT FUNCTION: Corr_charge=-1 - NEW SELECT FUNCTION: Smiles=[H]C1=C([H])c2c([H])c([H])c([H])c([H])c2C([H])(N([H])C(c2c([H])c([H])c([H])c([H])c2[H])=[N+]([H])C2([H])c3c([H])c([H])c([H])c([H])c3C([H])=C([H])c3c([H])c([H])c([H])c([H])c32)c2c([H])c([H])c([H])c([H])c21 - NEW SELECT FUNCTION: found corr_charges=[-3, -1] - NEW SELECT FUNCTION: doing tgt_charge=-3 - NEW SELECT FUNCTION: charge_state added - NEW SELECT FUNCTION: Case 1, only one entry for -3 in tmplist - NEW SELECT FUNCTION: doing tgt_charge=-1 - NEW SELECT FUNCTION: charge_state added - NEW SELECT FUNCTION: Case 1, only one entry for -1 in tmplist -Target charge -1 of H27-C37-N2 exists in [-3, -1]. -------------- Cell2mol LIGAND Object -------------- - Version = 0.1 - Type = specie - Sub-Type = ligand - Number of Atoms = 1 - Formula = Br - Has Adjacency Matrix = YES - Origin = split_complex - Number of Groups = 1 ---------------------------------------------------- - [3, 4, 9, 10, 13, 14, 17, 18] -1 -Target charge -1 of Br exists in [-1]. -Br - GET_PROTONATION_STATES: evaluating non-haptic group with index 0 and label Br -protonation_states=[------------- Cell2mol Protonation ---------------- - Status = True - Labels = ['Br'] - Type = Local - Atoms added in positions = [0] - Atoms blocked (no atoms added) = [1] ---------------------------------------------------- -] - POSCHARGE will try charges [0, -1, 1, -2, 2] -smiles='[Br-]' - POSCHARGE: charge 0 with smiles [Br-] -smiles='[Br-]' - POSCHARGE: charge 0 with smiles [Br-] -smiles='[Br-]' - POSCHARGE: charge 0 with smiles [Br-] -smiles='[Br-]' - POSCHARGE: charge 0 with smiles [Br-] -smiles='[Br-]' - POSCHARGE: charge 0 with smiles [Br-] - NEW SELECT FUNCTION: uncorr_total: [-1, -1, -1, -1, -1] - NEW SELECT FUNCTION: uncorr_abs_total: [1, 1, 1, 1, 1] - NEW SELECT FUNCTION: uncorr_abs_atcharge: [1, 1, 1, 1, 1] - NEW SELECT FUNCTION: uncorr_zwitt: [False, False, False, False, False] - NEW SELECT FUNCTION: coincide: [False, True, False, False, False] - NEW SELECT FUNCTION: listofmintot: [0, 1, 2, 3, 4] - NEW SELECT FUNCTION: listofminabs: [0, 1, 2, 3, 4] - NEW SELECT FUNCTION: tmplist: [1], including: - NEW SELECT FUNCTION: Corr_charge=-1 - NEW SELECT FUNCTION: Smiles=[Br-] - NEW SELECT FUNCTION: found corr_charges=[-1] - NEW SELECT FUNCTION: doing tgt_charge=-1 - NEW SELECT FUNCTION: charge_state added - NEW SELECT FUNCTION: Case 1, only one entry for -1 in tmplist -Target charge -1 of Br exists in [-1]. -------------- Cell2mol LIGAND Object -------------- - Version = 0.1 - Type = specie - Sub-Type = ligand - Number of Atoms = 1 - Formula = Br - Has Adjacency Matrix = YES - Total Charge = -1 - Smiles = [Br-] - Origin = split_complex - Number of Groups = 1 ---------------------------------------------------- - [3, 4, 9, 10, 13, 14, 17, 18] -1 -Target charge -1 of Br exists in [-1]. -Br - GET_PROTONATION_STATES: evaluating non-haptic group with index 0 and label Br -protonation_states=[------------- Cell2mol Protonation ---------------- - Status = True - Labels = ['Br'] - Type = Local - Atoms added in positions = [0] - Atoms blocked (no atoms added) = [1] ---------------------------------------------------- -] - POSCHARGE will try charges [0, -1, 1, -2, 2] -smiles='[Br-]' - POSCHARGE: charge 0 with smiles [Br-] -smiles='[Br-]' - POSCHARGE: charge 0 with smiles [Br-] -smiles='[Br-]' - POSCHARGE: charge 0 with smiles [Br-] -smiles='[Br-]' - POSCHARGE: charge 0 with smiles [Br-] -smiles='[Br-]' - POSCHARGE: charge 0 with smiles [Br-] - NEW SELECT FUNCTION: uncorr_total: [-1, -1, -1, -1, -1] - NEW SELECT FUNCTION: uncorr_abs_total: [1, 1, 1, 1, 1] - NEW SELECT FUNCTION: uncorr_abs_atcharge: [1, 1, 1, 1, 1] - NEW SELECT FUNCTION: uncorr_zwitt: [False, False, False, False, False] - NEW SELECT FUNCTION: coincide: [False, True, False, False, False] - NEW SELECT FUNCTION: listofmintot: [0, 1, 2, 3, 4] - NEW SELECT FUNCTION: listofminabs: [0, 1, 2, 3, 4] - NEW SELECT FUNCTION: tmplist: [1], including: - NEW SELECT FUNCTION: Corr_charge=-1 - NEW SELECT FUNCTION: Smiles=[Br-] - NEW SELECT FUNCTION: found corr_charges=[-1] - NEW SELECT FUNCTION: doing tgt_charge=-1 - NEW SELECT FUNCTION: charge_state added - NEW SELECT FUNCTION: Case 1, only one entry for -1 in tmplist -Target charge -1 of Br exists in [-1]. -------------- Cell2mol METAL Object -------------- - Version = 0.1 - Type = atom - Sub-Type = metal - Label = Fe - Atomic Number = 26 - Index in Molecule = 2 - Metal Adjacency (mconnec) = 5 - Regular Adjacencies (connec) = 5 - Coordination Sphere Formula = C-N2-Br2 - Possible Charges = [2, 3] ----------------------------------------------------- - [5, 11, 15, 19] 2 -Target charge 2 of Fe exists in [2, 3]. -Fe -Target charge 2 of Fe exists in [2, 3]. -------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 53 - Formula = H36-C16-N - Has Adjacency Matrix = YES - Total Charge = 1 - Smiles = [H]C([H])([H])C([H])([H])C([H])([H])C([H])([H])[N+](C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])(C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H] - Origin = cell.reconstruct ---------------------------------------------------- - [0, 1, 6, 7] 1 -Target charge 1 of H36-C16-N exists in [1]. -H36-C16-N - POSCHARGE: doing empty PROTONATION for this specie -CREATED EMPTY PROTONATION ------------- Cell2mol Protonation ---------------- - Status = True - Labels = ['C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'N', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] - Type = Empty - Atoms added in positions = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] - Atoms blocked (no atoms added) = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] ---------------------------------------------------- - - POSCHARGE will try charges [0, -1, 1, -2, 2, -3, 3] -smiles='[H]C([H])([H])C([H])([H])C([H])([H])C([H])([H])[N+](C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])(C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H]' - POSCHARGE: charge 0 with smiles [H]C([H])([H])C([H])([H])C([H])([H])C([H])([H])[N+](C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])(C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H] -smiles='[H]C([H])([H])C([H])([H])C([H])([H])C([H])([H])[N+](C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])(C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H]' - POSCHARGE: charge 0 with smiles [H]C([H])([H])C([H])([H])C([H])([H])C([H])([H])[N+](C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])(C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H] -smiles='[H]C([H])([H])C([H])([H])C([H])([H])C([H])([H])[N+](C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])(C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H]' - POSCHARGE: charge 0 with smiles [H]C([H])([H])C([H])([H])C([H])([H])C([H])([H])[N+](C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])(C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H] -smiles='[H]C([H])([H])C([H])([H])C([H])([H])C([H])([H])[N+](C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])(C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H]' - POSCHARGE: charge 0 with smiles [H]C([H])([H])C([H])([H])C([H])([H])C([H])([H])[N+](C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])(C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H] -smiles='[H]C([H])([H])C([H])([H])C([H])([H])C([H])([H])[N+](C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])(C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H]' - POSCHARGE: charge 0 with smiles [H]C([H])([H])C([H])([H])C([H])([H])C([H])([H])[N+](C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])(C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H] -smiles='[H]C([H])([H])C([H])([H])C([H])([H])C([H])([H])[N+](C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])(C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H]' - POSCHARGE: charge 0 with smiles [H]C([H])([H])C([H])([H])C([H])([H])C([H])([H])[N+](C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])(C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H] -smiles='[H]C([H])([H])C([H])([H])C([H])([H])C([H])([H])[N+](C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])(C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H]' - POSCHARGE: charge 0 with smiles [H]C([H])([H])C([H])([H])C([H])([H])C([H])([H])[N+](C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])(C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H] - NEW SELECT FUNCTION: uncorr_total: [1, 1, 1, 1, 1, 1, 1] - NEW SELECT FUNCTION: uncorr_abs_total: [1, 1, 1, 1, 1, 1, 1] - NEW SELECT FUNCTION: uncorr_abs_atcharge: [1, 1, 1, 1, 1, 1, 1] - NEW SELECT FUNCTION: uncorr_zwitt: [False, False, False, False, False, False, False] - NEW SELECT FUNCTION: coincide: [False, False, True, False, False, False, False] - NEW SELECT FUNCTION: listofmintot: [0, 1, 2, 3, 4, 5, 6] - NEW SELECT FUNCTION: listofminabs: [0, 1, 2, 3, 4, 5, 6] - NEW SELECT FUNCTION: tmplist: [2], including: - NEW SELECT FUNCTION: Corr_charge=1 - NEW SELECT FUNCTION: Smiles=[H]C([H])([H])C([H])([H])C([H])([H])C([H])([H])[N+](C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])(C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H] - NEW SELECT FUNCTION: found corr_charges=[1] - NEW SELECT FUNCTION: doing tgt_charge=1 - NEW SELECT FUNCTION: charge_state added - NEW SELECT FUNCTION: Case 1, only one entry for 1 in tmplist -Target charge 1 of H36-C16-N exists in [1]. -------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 53 - Formula = H36-C16-N - Has Adjacency Matrix = YES - Total Charge = 1 - Smiles = [H]C([H])([H])C([H])([H])C([H])([H])C([H])([H])[N+](C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])(C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H] - Origin = cell.reconstruct ---------------------------------------------------- - [0, 1, 6, 7] 1 -Target charge 1 of H36-C16-N exists in [1]. -H36-C16-N - POSCHARGE: doing empty PROTONATION for this specie -CREATED EMPTY PROTONATION ------------- Cell2mol Protonation ---------------- - Status = True - Labels = ['C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'N', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] - Type = Empty - Atoms added in positions = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] - Atoms blocked (no atoms added) = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] ---------------------------------------------------- - - POSCHARGE will try charges [0, -1, 1, -2, 2, -3, 3] -smiles='[H]C([H])([H])C([H])([H])C([H])([H])C([H])([H])[N+](C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])(C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H]' - POSCHARGE: charge 0 with smiles [H]C([H])([H])C([H])([H])C([H])([H])C([H])([H])[N+](C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])(C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H] -smiles='[H]C([H])([H])C([H])([H])C([H])([H])C([H])([H])[N+](C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])(C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H]' - POSCHARGE: charge 0 with smiles [H]C([H])([H])C([H])([H])C([H])([H])C([H])([H])[N+](C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])(C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H] -smiles='[H]C([H])([H])C([H])([H])C([H])([H])C([H])([H])[N+](C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])(C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H]' - POSCHARGE: charge 0 with smiles [H]C([H])([H])C([H])([H])C([H])([H])C([H])([H])[N+](C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])(C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H] -smiles='[H]C([H])([H])C([H])([H])C([H])([H])C([H])([H])[N+](C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])(C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H]' - POSCHARGE: charge 0 with smiles [H]C([H])([H])C([H])([H])C([H])([H])C([H])([H])[N+](C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])(C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H] -smiles='[H]C([H])([H])C([H])([H])C([H])([H])C([H])([H])[N+](C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])(C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H]' - POSCHARGE: charge 0 with smiles [H]C([H])([H])C([H])([H])C([H])([H])C([H])([H])[N+](C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])(C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H] -smiles='[H]C([H])([H])C([H])([H])C([H])([H])C([H])([H])[N+](C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])(C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H]' - POSCHARGE: charge 0 with smiles [H]C([H])([H])C([H])([H])C([H])([H])C([H])([H])[N+](C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])(C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H] -smiles='[H]C([H])([H])C([H])([H])C([H])([H])C([H])([H])[N+](C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])(C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H]' - POSCHARGE: charge 0 with smiles [H]C([H])([H])C([H])([H])C([H])([H])C([H])([H])[N+](C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])(C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H] - NEW SELECT FUNCTION: uncorr_total: [1, 1, 1, 1, 1, 1, 1] - NEW SELECT FUNCTION: uncorr_abs_total: [1, 1, 1, 1, 1, 1, 1] - NEW SELECT FUNCTION: uncorr_abs_atcharge: [1, 1, 1, 1, 1, 1, 1] - NEW SELECT FUNCTION: uncorr_zwitt: [False, False, False, False, False, False, False] - NEW SELECT FUNCTION: coincide: [False, False, True, False, False, False, False] - NEW SELECT FUNCTION: listofmintot: [0, 1, 2, 3, 4, 5, 6] - NEW SELECT FUNCTION: listofminabs: [0, 1, 2, 3, 4, 5, 6] - NEW SELECT FUNCTION: tmplist: [2], including: - NEW SELECT FUNCTION: Corr_charge=1 - NEW SELECT FUNCTION: Smiles=[H]C([H])([H])C([H])([H])C([H])([H])C([H])([H])[N+](C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])(C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H] - NEW SELECT FUNCTION: found corr_charges=[1] - NEW SELECT FUNCTION: doing tgt_charge=1 - NEW SELECT FUNCTION: charge_state added - NEW SELECT FUNCTION: Case 1, only one entry for 1 in tmplist -Target charge 1 of H36-C16-N exists in [1]. -------------- Cell2mol LIGAND Object -------------- - Version = 0.1 - Type = specie - Sub-Type = ligand - Number of Atoms = 66 - Formula = H27-C37-N2 - Has Adjacency Matrix = YES - Total Charge = -1 - Smiles = [H]C1=C([H])c2c([H])c([H])c([H])c([H])c2C([H])(N([H])C(c2c([H])c([H])c([H])c([H])c2[H])=[N+]([H])C2([H])c3c([H])c([H])c([H])c([H])c3C([H])=C([H])c3c([H])c([H])c([H])c([H])c32)c2c([H])c([H])c([H])c([H])c21 - Origin = split_complex - Number of Groups = 2 ---------------------------------------------------- - [2, 8, 12, 16] -1 -Target charge -1 of H27-C37-N2 exists in [-3, -1]. -H27-C37-N2 -LIGAND.SPLIT_LIGAND: self.indices=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65] -LIGAND.SPLIT_LIGAND: conn_idx=[9, 49, 50] -LIGAND.SPLIT_LIGAND: conn_labels=['C', 'N', 'N'] -LIGAND.SPLIT_LIGAND: conn_coord=[[10.3551967, -4.896921, 12.6273905], [9.6210699, -4.2687597, 13.5436987], [10.0312251, -4.5693117, 11.3772988]] -LIGAND.SPLIT_LIGAND: conn_radii=[0.73, 0.71, 0.71] -blocklist=[[0, 1, 2]] -LIGAND.SPLIT_LIGAND: block=[0, 1, 2] -ADD_ATOM: Metalist length 1 -ADD_ATOM: Ligand Atoms 66 -ADD_ATOM: site= 9 -ADD_ATOM: target ligand atom C -ADD_ATOM: evaluating apos=array([10.3551967, -4.896921 , 12.6273905]) and tgt.coord=[8.5576195, -3.2485743, 12.0289476] -ADD_ATOM: Chosen Metal index None. H was added at site 9 but RESET due to connec=3 -ADD_ATOM: Metalist length 1 -ADD_ATOM: Ligand Atoms 66 -ADD_ATOM: site= 49 -ADD_ATOM: target ligand atom N -ADD_ATOM: evaluating apos=array([ 9.6210699, -4.2687597, 13.5436987]) and tgt.coord=[8.5576195, -3.2485743, 12.0289476] -ADD_ATOM: Chosen Metal index None. H is added at site 49 -ADD_ATOM: Metalist length 1 -ADD_ATOM: Ligand Atoms 66 -ADD_ATOM: site= 50 -ADD_ATOM: target ligand atom N -ADD_ATOM: evaluating apos=array([10.0312251, -4.5693117, 11.3772988]) and tgt.coord=[8.5576195, -3.2485743, 12.0289476] -ADD_ATOM: Chosen Metal index None. H is added at site 50 -LIGAND.SPLIT_LIGAND: group is found ------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 3 - Formula = C-N2 - Has Adjacency Matrix = YES - Origin = split_ligand - Number of Metals = 1 ---------------------------------------------------- - -GROUP.SPLIT_GROUP: conn_idx=[1, 2] -GROUP.SPLIT_GROUP: conn_labels=['N', 'N'] -GROUP.SPLIT_GROUP: conn_coord=[[9.6210699, -4.2687597, 13.5436987], [10.0312251, -4.5693117, 11.3772988]] -GROUP.SPLIT_GROUP: conn_radii=[0.71, 0.71] -blocklist=[[1], [0]] -GROUP.SPLIT_GROUP: block=[1] -ADD_ATOM: Metalist length 1 -ADD_ATOM: Ligand Atoms 66 -ADD_ATOM: site= 50 -ADD_ATOM: target ligand atom N -ADD_ATOM: evaluating apos=array([10.0312251, -4.5693117, 11.3772988]) and tgt.coord=[8.5576195, -3.2485743, 12.0289476] -ADD_ATOM: Chosen Metal index None. H is added at site 50 -GROUP.SPLIT_GROUP: block=[0] -ADD_ATOM: Metalist length 1 -ADD_ATOM: Ligand Atoms 66 -ADD_ATOM: site= 49 -ADD_ATOM: target ligand atom N -ADD_ATOM: evaluating apos=array([ 9.6210699, -4.2687597, 13.5436987]) and tgt.coord=[8.5576195, -3.2485743, 12.0289476] -ADD_ATOM: Chosen Metal index None. H is added at site 49 -LIGAND.SPLIT_LIGAND: final groups self.groups=[------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 1 - Formula = N - Has Adjacency Matrix = YES - Origin = split_group - Number of Metals = 1 ---------------------------------------------------- -, ------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 1 - Formula = N - Has Adjacency Matrix = YES - Origin = split_group - Number of Metals = 1 ---------------------------------------------------- -] - GET_PROTONATION_STATES: evaluating non-haptic group with index 2 and label C - GET_PROTONATION_STATES: Evaluating as carbene and False - GET_PROTONATION_STATES: will be sent to nonlocal due to C atom - GET_PROTONATION_STATES: evaluating non-haptic group with index 1 and label C - GET_PROTONATION_STATES: Evaluating as carbene and False - GET_PROTONATION_STATES: will be sent to nonlocal due to C atom - - GET_PROTONATION_STATES: Enters non-local with: - GET_PROTONATION_STATES: block: [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] - GET_PROTONATION_STATES: addedlist: [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] - GET_PROTONATION_STATES: 2 non_local_groups groups found - - GET_PROTONATION_STATES: doing combination (0, 0) - GET_PROTONATION_STATES: Protonation SAVED with 0 atoms added to ligand. status=True - - GET_PROTONATION_STATES: doing combination (0, 1) - GET_PROTONATION_STATES: Added H to atom 50 with: a.mconnec=1 and label=N - GET_PROTONATION_STATES: Protonation SAVED with 1 atoms added to ligand. status=True - - GET_PROTONATION_STATES: doing combination (1, 0) - GET_PROTONATION_STATES: Added H to atom 49 with: a.mconnec=1 and label=N - GET_PROTONATION_STATES: Protonation SAVED with 1 atoms added to ligand. status=True - - GET_PROTONATION_STATES: doing combination (1, 1) - GET_PROTONATION_STATES: Added H to atom 49 with: a.mconnec=1 and label=N - GET_PROTONATION_STATES: Added H to atom 50 with: a.mconnec=1 and label=N - GET_PROTONATION_STATES: Protonation SAVED with 2 atoms added to ligand. status=True -protonation_states=[------------- Cell2mol Protonation ---------------- - Status = True - Labels = ['C', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'N', 'N', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H'] - Type = Non-local - Atoms added in positions = [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] - Atoms blocked (no atoms added) = [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] ---------------------------------------------------- -, ------------- Cell2mol Protonation ---------------- - Status = True - Labels = ['C', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'N', 'N', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'H'] - Type = Non-local - Atoms added in positions = [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] - Atoms blocked (no atoms added) = [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] ---------------------------------------------------- -, ------------- Cell2mol Protonation ---------------- - Status = True - Labels = ['C', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'N', 'N', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'H'] - Type = Non-local - Atoms added in positions = [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] - Atoms blocked (no atoms added) = [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] ---------------------------------------------------- -, ------------- Cell2mol Protonation ---------------- - Status = True - Labels = ['C', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'N', 'N', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'H', 'H'] - Type = Non-local - Atoms added in positions = [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] - Atoms blocked (no atoms added) = [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] ---------------------------------------------------- -] - POSCHARGE will try charges [0, -1, 1, -2, 2] -smiles='[H][C+]1[C+]([H])[C+]([H])[C+]2[C+]([C+]1[H])[C-]([H])[C-]([H])[C-]1[C+]([H])[C+]([H])[C-]([H])[C+]([H])[C+]1C2([H])[N-][C-]([N-]C1([H])[c+]2[c+]([c+]([H])[c-]([H])[c-]([H])[c-]2[H])[C-]([H])[C+]([H])[c-]2[c+]1[c-]([H])[c-]([H])[c-]([H])[c-]2[H])[c-]1[c+]([H])[c-]([H])[c+]([H])[c+]([H])[c-]1[H]' - POSCHARGE: charge 0 with smiles [H][C+]1[C+]([H])[C+]([H])[C+]2[C+]([C+]1[H])[C-]([H])[C-]([H])[C-]1[C+]([H])[C+]([H])[C-]([H])[C+]([H])[C+]1C2([H])[N-][C-]([N-]C1([H])[c+]2[c+]([c+]([H])[c-]([H])[c-]([H])[c-]2[H])[C-]([H])[C+]([H])[c-]2[c+]1[c-]([H])[c-]([H])[c-]([H])[c-]2[H])[c-]1[c+]([H])[c-]([H])[c+]([H])[c+]([H])[c-]1[H] -smiles='[H]C1=C([H])c2c([H])c([H])c([H])c([H])c2C([H])(N=C([N-]C2([H])c3c([H])c([H])c([H])c([H])c3C([H])=C([H])c3c([H])c([H])c([H])c([H])c32)c2c([H])c([H])c([H])c([H])c2[H])c2c([H])c([H])c([H])c([H])c21' - POSCHARGE: charge 0 with smiles [H]C1=C([H])c2c([H])c([H])c([H])c([H])c2C([H])(N=C([N-]C2([H])c3c([H])c([H])c([H])c([H])c3C([H])=C([H])c3c([H])c([H])c([H])c([H])c32)c2c([H])c([H])c([H])c([H])c2[H])c2c([H])c([H])c([H])c([H])c21 -smiles='[H][C+]1[C+]([H])[C+]2[C-]([C+]([H])[C-]([H])[c+]3[c+]([H])[c+]([H])[c+]([H])[c+]([H])[c-]3C2([H])[N-][C+]([N-]C2([H])[C-]3[C+]([C+]([H])[C+]([H])[C-]4[C-]([H])[C-]([H])[C-]([H])[C-]([H])[C-]42)[C-]([H])[C-]([H])[C+]([H])[C-]3[H])[C+]2[C+]([H])[C-]([H])[C+]([H])[C+]([H])[C-]2[H])[C-]([H])[C+]1[H]' - POSCHARGE: charge 0 with smiles [H][C+]1[C+]([H])[C+]2[C-]([C+]([H])[C-]([H])[c+]3[c+]([H])[c+]([H])[c+]([H])[c+]([H])[c-]3C2([H])[N-][C+]([N-]C2([H])[C-]3[C+]([C+]([H])[C+]([H])[C-]4[C-]([H])[C-]([H])[C-]([H])[C-]([H])[C-]42)[C-]([H])[C-]([H])[C+]([H])[C-]3[H])[C+]2[C+]([H])[C-]([H])[C+]([H])[C+]([H])[C-]2[H])[C-]([H])[C+]1[H] -smiles='[H][C+]1[C+]([H])[C+]([H])[C+]2[C+]([C+]1[H])[C-]([H])[C-]([H])[C-]1[C+]([H])[C+]([H])[C-]([H])[C+]([H])[C+]1C2([H])[N-][C-]([N-]C1([H])[c+]2[c+]([c+]([H])[c-]([H])[c-]([H])[c-]2[H])[C-]([H])[C+]([H])[C-]2[C-]([H])[C-]([H])[C-]([H])[C-]([H])[C-]21)[c-]1[c+]([H])[c-]([H])[c+]([H])[c+]([H])[c-]1[H]' - POSCHARGE: charge 0 with smiles [H][C+]1[C+]([H])[C+]([H])[C+]2[C+]([C+]1[H])[C-]([H])[C-]([H])[C-]1[C+]([H])[C+]([H])[C-]([H])[C+]([H])[C+]1C2([H])[N-][C-]([N-]C1([H])[c+]2[c+]([c+]([H])[c-]([H])[c-]([H])[c-]2[H])[C-]([H])[C+]([H])[C-]2[C-]([H])[C-]([H])[C-]([H])[C-]([H])[C-]21)[c-]1[c+]([H])[c-]([H])[c+]([H])[c+]([H])[c-]1[H] -smiles='[H][C+]1[C+]([H])[C+]([H])[C+]2[C+]([C+]1[H])[C-]([H])[C-]([H])[C-]1[C+]([H])[C+]([H])[C-]([H])[C+]([H])[C+]1C2([H])[N-][C-]([N-]C1([H])[c+]2[c+]([c+]([H])[c-]([H])[c-]([H])[c-]2[H])[C-]([H])[C+]([H])[c-]2[c+]1[c-]([H])[c-]([H])[c-]([H])[c-]2[H])[C+]1[C+]([H])[C-]([H])[C+]([H])[C+]([H])[C-]1[H]' - POSCHARGE: charge 0 with smiles [H][C+]1[C+]([H])[C+]([H])[C+]2[C+]([C+]1[H])[C-]([H])[C-]([H])[C-]1[C+]([H])[C+]([H])[C-]([H])[C+]([H])[C+]1C2([H])[N-][C-]([N-]C1([H])[c+]2[c+]([c+]([H])[c-]([H])[c-]([H])[c-]2[H])[C-]([H])[C+]([H])[c-]2[c+]1[c-]([H])[c-]([H])[c-]([H])[c-]2[H])[C+]1[C+]([H])[C-]([H])[C+]([H])[C+]([H])[C-]1[H] - POSCHARGE will try charges [0, -1, 1, -2, 2] -smiles='[H]C1=C([H])c2c([H])c([H])c([H])c([H])c2C([H])(N=C(c2c([H])c([H])c([H])c([H])c2[H])N([H])C2([H])c3c([H])c([H])c([H])c([H])c3C([H])=C([H])c3c([H])c([H])c([H])c([H])c32)c2c([H])c([H])c([H])c([H])c21' - POSCHARGE: charge 0 with smiles [H]C1=C([H])c2c([H])c([H])c([H])c([H])c2C([H])(N=C(c2c([H])c([H])c([H])c([H])c2[H])N([H])C2([H])c3c([H])c([H])c([H])c([H])c3C([H])=C([H])c3c([H])c([H])c([H])c([H])c32)c2c([H])c([H])c([H])c([H])c21 -smiles='[H][C+]1[C+]([H])[c-]2[c+]([c+]([H])[c-]([H])[c+]([H])[c-]2[H])C([H])([N-][C+]([c-]2[c+]([H])[c-]([H])[c+]([H])[c+]([H])[c-]2[H])N([H])C2([H])[C-]3[C-]([H])[C-]([H])[C-]([H])[C-]([H])[C-]3[C+]([H])[C+]([H])[c+]3[c-]([H])[c+]([H])[c+]([H])[c-]([H])[c-]32)[c-]2[c+]([H])[c+]([H])[c-]([H])[c-]([H])[c+]21' - POSCHARGE: charge 0 with smiles [H][C+]1[C+]([H])[c-]2[c+]([c+]([H])[c-]([H])[c+]([H])[c-]2[H])C([H])([N-][C+]([c-]2[c+]([H])[c-]([H])[c+]([H])[c+]([H])[c-]2[H])N([H])C2([H])[C-]3[C-]([H])[C-]([H])[C-]([H])[C-]([H])[C-]3[C+]([H])[C+]([H])[c+]3[c-]([H])[c+]([H])[c+]([H])[c-]([H])[c-]32)[c-]2[c+]([H])[c+]([H])[c-]([H])[c-]([H])[c+]21 -smiles='[H][C+]1[C+]([H])[c-]2[c+]([c+]([H])[c-]([H])[c+]([H])[c-]2[H])C([H])([N-][C+]([C+]2[C+]([H])[C-]([H])[C+]([H])[C+]([H])[C-]2[H])N([H])C2([H])[C-]3[C-]([H])[C-]([H])[C-]([H])[C-]([H])[C-]3[C+]([H])[C+]([H])[c+]3[c-]([H])[c+]([H])[c+]([H])[c-]([H])[c-]32)[c-]2[c+]([H])[c+]([H])[c-]([H])[c-]([H])[c+]21' - POSCHARGE: charge 0 with smiles [H][C+]1[C+]([H])[c-]2[c+]([c+]([H])[c-]([H])[c+]([H])[c-]2[H])C([H])([N-][C+]([C+]2[C+]([H])[C-]([H])[C+]([H])[C+]([H])[C-]2[H])N([H])C2([H])[C-]3[C-]([H])[C-]([H])[C-]([H])[C-]([H])[C-]3[C+]([H])[C+]([H])[c+]3[c-]([H])[c+]([H])[c+]([H])[c-]([H])[c-]32)[c-]2[c+]([H])[c+]([H])[c-]([H])[c-]([H])[c+]21 -smiles='[H]C1=C([H])c2c([H])c([H])c([H])c([H])c2C([H])([N-][C-](c2c([H])c([H])c([H])c([H])c2[H])N([H])C2([H])c3c([H])c([H])c([H])c([H])c3C([H])=C([H])c3c([H])c([H])c([H])c([H])c32)c2c([H])c([H])c([H])c([H])c21' - POSCHARGE: charge 0 with smiles [H]C1=C([H])c2c([H])c([H])c([H])c([H])c2C([H])([N-][C-](c2c([H])c([H])c([H])c([H])c2[H])N([H])C2([H])c3c([H])c([H])c([H])c([H])c3C([H])=C([H])c3c([H])c([H])c([H])c([H])c32)c2c([H])c([H])c([H])c([H])c21 -smiles='[H][C+]1[C+]([H])[C+]([H])[C+]2[C+]([C+]1[H])[C-]([H])[C-]([H])[c-]1[c+]([c+]([H])[c-]([H])[c-]([H])[c+]1[H])C2([H])N([H])[C-]([N-]C1([H])[C+]2[C+]([C+]([H])[C-]([H])[C+]([H])[C-]2[H])[C-]([H])[C-]([H])[c-]2[c+]([H])[c+]([H])[c-]([H])[c-]([H])[c+]21)[c+]1[c+]([H])[c-]([H])[c-]([H])[c+]([H])[c-]1[H]' - POSCHARGE: charge 0 with smiles [H][C+]1[C+]([H])[C+]([H])[C+]2[C+]([C+]1[H])[C-]([H])[C-]([H])[c-]1[c+]([c+]([H])[c-]([H])[c-]([H])[c+]1[H])C2([H])N([H])[C-]([N-]C1([H])[C+]2[C+]([C+]([H])[C-]([H])[C+]([H])[C-]2[H])[C-]([H])[C-]([H])[c-]2[c+]([H])[c+]([H])[c-]([H])[c-]([H])[c+]21)[c+]1[c+]([H])[c-]([H])[c-]([H])[c+]([H])[c-]1[H] - POSCHARGE will try charges [0, -1, 1, -2, 2] -smiles='[H]C1=C([H])c2c([H])c([H])c([H])c([H])c2C([H])(N=C(c2c([H])c([H])c([H])c([H])c2[H])N([H])C2([H])c3c([H])c([H])c([H])c([H])c3C([H])=C([H])c3c([H])c([H])c([H])c([H])c32)c2c([H])c([H])c([H])c([H])c21' - POSCHARGE: charge 0 with smiles [H]C1=C([H])c2c([H])c([H])c([H])c([H])c2C([H])(N=C(c2c([H])c([H])c([H])c([H])c2[H])N([H])C2([H])c3c([H])c([H])c([H])c([H])c3C([H])=C([H])c3c([H])c([H])c([H])c([H])c32)c2c([H])c([H])c([H])c([H])c21 -smiles='[H][C+]1[C+]([H])[c-]2[c+]([c+]([H])[c-]([H])[c+]([H])[c-]2[H])C([H])(N([H])[C+]([N-]C2([H])[C-]3[C-]([H])[C-]([H])[C-]([H])[C-]([H])[C-]3[C+]([H])[C+]([H])[c+]3[c-]([H])[c+]([H])[c+]([H])[c-]([H])[c-]32)[c-]2[c+]([H])[c-]([H])[c+]([H])[c+]([H])[c-]2[H])[c-]2[c+]([H])[c+]([H])[c-]([H])[c-]([H])[c+]21' - POSCHARGE: charge 0 with smiles [H][C+]1[C+]([H])[c-]2[c+]([c+]([H])[c-]([H])[c+]([H])[c-]2[H])C([H])(N([H])[C+]([N-]C2([H])[C-]3[C-]([H])[C-]([H])[C-]([H])[C-]([H])[C-]3[C+]([H])[C+]([H])[c+]3[c-]([H])[c+]([H])[c+]([H])[c-]([H])[c-]32)[c-]2[c+]([H])[c-]([H])[c+]([H])[c+]([H])[c-]2[H])[c-]2[c+]([H])[c+]([H])[c-]([H])[c-]([H])[c+]21 -smiles='[H][C+]1[C+]([H])[c-]2[c+]([c+]([H])[c-]([H])[c+]([H])[c-]2[H])C([H])(N([H])[C+]([N-]C2([H])[C-]3[C-]([H])[C-]([H])[C-]([H])[C-]([H])[C-]3[C+]([H])[C+]([H])[c+]3[c-]([H])[c+]([H])[c+]([H])[c-]([H])[c-]32)[C+]2[C+]([H])[C-]([H])[C+]([H])[C+]([H])[C-]2[H])[c-]2[c+]([H])[c+]([H])[c-]([H])[c-]([H])[c+]21' - POSCHARGE: charge 0 with smiles [H][C+]1[C+]([H])[c-]2[c+]([c+]([H])[c-]([H])[c+]([H])[c-]2[H])C([H])(N([H])[C+]([N-]C2([H])[C-]3[C-]([H])[C-]([H])[C-]([H])[C-]([H])[C-]3[C+]([H])[C+]([H])[c+]3[c-]([H])[c+]([H])[c+]([H])[c-]([H])[c-]32)[C+]2[C+]([H])[C-]([H])[C+]([H])[C+]([H])[C-]2[H])[c-]2[c+]([H])[c+]([H])[c-]([H])[c-]([H])[c+]21 -smiles='[H]C1=C([H])c2c([H])c([H])c([H])c([H])c2C([H])([N-][C-](c2c([H])c([H])c([H])c([H])c2[H])N([H])C2([H])c3c([H])c([H])c([H])c([H])c3C([H])=C([H])c3c([H])c([H])c([H])c([H])c32)c2c([H])c([H])c([H])c([H])c21' - POSCHARGE: charge 0 with smiles [H]C1=C([H])c2c([H])c([H])c([H])c([H])c2C([H])([N-][C-](c2c([H])c([H])c([H])c([H])c2[H])N([H])C2([H])c3c([H])c([H])c([H])c([H])c3C([H])=C([H])c3c([H])c([H])c([H])c([H])c32)c2c([H])c([H])c([H])c([H])c21 -smiles='[H][C+]1[C+]([H])[C+]([H])[C+]2[C+]([C+]1[H])[C-]([H])[C-]([H])[c-]1[c+]([c+]([H])[c-]([H])[c-]([H])[c+]1[H])C2([H])[N-][C-]([c+]1[c+]([H])[c-]([H])[c-]([H])[c+]([H])[c-]1[H])N([H])C1([H])[C+]2[C+]([C+]([H])[C-]([H])[C+]([H])[C-]2[H])[C-]([H])[C-]([H])[c-]2[c+]([H])[c+]([H])[c-]([H])[c-]([H])[c+]21' - POSCHARGE: charge 0 with smiles [H][C+]1[C+]([H])[C+]([H])[C+]2[C+]([C+]1[H])[C-]([H])[C-]([H])[c-]1[c+]([c+]([H])[c-]([H])[c-]([H])[c+]1[H])C2([H])[N-][C-]([c+]1[c+]([H])[c-]([H])[c-]([H])[c+]([H])[c-]1[H])N([H])C1([H])[C+]2[C+]([C+]([H])[C-]([H])[C+]([H])[C-]2[H])[C-]([H])[C-]([H])[c-]2[c+]([H])[c+]([H])[c-]([H])[c-]([H])[c+]21 - POSCHARGE will try charges [0, -1, 1, -2, 2] -smiles='[H][C+]1[C+]([H])[C+]([H])[C+]2[C+]([C+]1[H])[C-]([H])[C-]([H])[C-]1[C+]([H])[C+]([H])[C-]([H])[C+]([H])[C+]1C2([H])N([H])[C-]([c-]1[c+]([H])[c-]([H])[c+]([H])[c+]([H])[c-]1[H])N([H])C1([H])[c+]2[c-]([H])[c-]([H])[c-]([H])[c-]([H])[c-]2[C+]([H])[C-]([H])[C+]2[C+]([H])[C-]([H])[C-]([H])[C-]([H])[C-]21' - POSCHARGE: charge 0 with smiles [H][C+]1[C+]([H])[C+]([H])[C+]2[C+]([C+]1[H])[C-]([H])[C-]([H])[C-]1[C+]([H])[C+]([H])[C-]([H])[C+]([H])[C+]1C2([H])N([H])[C-]([c-]1[c+]([H])[c-]([H])[c+]([H])[c+]([H])[c-]1[H])N([H])C1([H])[c+]2[c-]([H])[c-]([H])[c-]([H])[c-]([H])[c-]2[C+]([H])[C-]([H])[C+]2[C+]([H])[C-]([H])[C-]([H])[C-]([H])[C-]21 -smiles='[H]C1=C([H])c2c([H])c([H])c([H])c([H])c2C([H])(N([H])[C-](c2c([H])c([H])c([H])c([H])c2[H])N([H])C2([H])c3c([H])c([H])c([H])c([H])c3C([H])=C([H])c3c([H])c([H])c([H])c([H])c32)c2c([H])c([H])c([H])c([H])c21' - POSCHARGE: charge 0 with smiles [H]C1=C([H])c2c([H])c([H])c([H])c([H])c2C([H])(N([H])[C-](c2c([H])c([H])c([H])c([H])c2[H])N([H])C2([H])c3c([H])c([H])c([H])c([H])c3C([H])=C([H])c3c([H])c([H])c([H])c([H])c32)c2c([H])c([H])c([H])c([H])c21 -smiles='[H]C1=C([H])c2c([H])c([H])c([H])c([H])c2C([H])(N([H])C(c2c([H])c([H])c([H])c([H])c2[H])=[N+]([H])C2([H])c3c([H])c([H])c([H])c([H])c3C([H])=C([H])c3c([H])c([H])c([H])c([H])c32)c2c([H])c([H])c([H])c([H])c21' - POSCHARGE: charge 0 with smiles [H]C1=C([H])c2c([H])c([H])c([H])c([H])c2C([H])(N([H])C(c2c([H])c([H])c([H])c([H])c2[H])=[N+]([H])C2([H])c3c([H])c([H])c([H])c([H])c3C([H])=C([H])c3c([H])c([H])c([H])c([H])c32)c2c([H])c([H])c([H])c([H])c21 -smiles='[H][C+]1[C+]([H])[C+]([H])[C+]2[C+]([C+]1[H])[C-]([H])[C-]([H])[C-]1[C+]([H])[C+]([H])[C-]([H])[C+]([H])[C+]1C2([H])N([H])[C-]([c-]1[c+]([H])[c-]([H])[c+]([H])[c+]([H])[c-]1[H])N([H])C1([H])[C-]2[C+]([C+]([H])[C-]([H])[C-]([H])[C-]2[H])[C-]([H])[C+]([H])[C-]2[C-]([H])[C-]([H])[C-]([H])[C-]([H])[C-]21' - POSCHARGE: charge 0 with smiles [H][C+]1[C+]([H])[C+]([H])[C+]2[C+]([C+]1[H])[C-]([H])[C-]([H])[C-]1[C+]([H])[C+]([H])[C-]([H])[C+]([H])[C+]1C2([H])N([H])[C-]([c-]1[c+]([H])[c-]([H])[c+]([H])[c+]([H])[c-]1[H])N([H])C1([H])[C-]2[C+]([C+]([H])[C-]([H])[C-]([H])[C-]2[H])[C-]([H])[C+]([H])[C-]2[C-]([H])[C-]([H])[C-]([H])[C-]([H])[C-]21 -smiles='[H][C+]1[C+]([H])[C+]([H])[C+]2[C+]([C+]1[H])[C-]([H])[C-]([H])[C-]1[C+]([H])[C+]([H])[C-]([H])[C+]([H])[C+]1C2([H])N([H])[C-]([C+]1[C+]([H])[C-]([H])[C+]([H])[C+]([H])[C-]1[H])N([H])C1([H])[c+]2[c-]([H])[c-]([H])[c-]([H])[c-]([H])[c-]2[C+]([H])[C-]([H])[C+]2[C+]([H])[C-]([H])[C-]([H])[C-]([H])[C-]21' - POSCHARGE: charge 0 with smiles [H][C+]1[C+]([H])[C+]([H])[C+]2[C+]([C+]1[H])[C-]([H])[C-]([H])[C-]1[C+]([H])[C+]([H])[C-]([H])[C+]([H])[C+]1C2([H])N([H])[C-]([C+]1[C+]([H])[C-]([H])[C+]([H])[C+]([H])[C-]1[H])N([H])C1([H])[c+]2[c-]([H])[c-]([H])[c-]([H])[c-]([H])[c-]2[C+]([H])[C-]([H])[C+]2[C+]([H])[C-]([H])[C-]([H])[C-]([H])[C-]21 - NEW SELECT FUNCTION: uncorr_total: [-1, -1, 1, -3, 1] - NEW SELECT FUNCTION: uncorr_abs_total: [1, 1, 1, 3, 1] - NEW SELECT FUNCTION: uncorr_abs_atcharge: [35, 1, 1, 35, 35] - NEW SELECT FUNCTION: uncorr_zwitt: [True, False, False, True, True] - NEW SELECT FUNCTION: coincide: [False, True, True, False, False] - NEW SELECT FUNCTION: listofmintot: [0, 1, 2, 4] - NEW SELECT FUNCTION: listofminabs: [1, 2] - NEW SELECT FUNCTION: tmplist: [1, 2], including: - NEW SELECT FUNCTION: Corr_charge=-3 - NEW SELECT FUNCTION: Smiles=[H]C1=C([H])c2c([H])c([H])c([H])c([H])c2C([H])(N([H])[C-](c2c([H])c([H])c([H])c([H])c2[H])N([H])C2([H])c3c([H])c([H])c([H])c([H])c3C([H])=C([H])c3c([H])c([H])c([H])c([H])c32)c2c([H])c([H])c([H])c([H])c21 - NEW SELECT FUNCTION: Corr_charge=-1 - NEW SELECT FUNCTION: Smiles=[H]C1=C([H])c2c([H])c([H])c([H])c([H])c2C([H])(N([H])C(c2c([H])c([H])c([H])c([H])c2[H])=[N+]([H])C2([H])c3c([H])c([H])c([H])c([H])c3C([H])=C([H])c3c([H])c([H])c([H])c([H])c32)c2c([H])c([H])c([H])c([H])c21 - NEW SELECT FUNCTION: found corr_charges=[-3, -1] - NEW SELECT FUNCTION: doing tgt_charge=-3 - NEW SELECT FUNCTION: charge_state added - NEW SELECT FUNCTION: Case 1, only one entry for -3 in tmplist - NEW SELECT FUNCTION: doing tgt_charge=-1 - NEW SELECT FUNCTION: charge_state added - NEW SELECT FUNCTION: Case 1, only one entry for -1 in tmplist -Target charge -1 of H27-C37-N2 exists in [-3, -1]. -------------- Cell2mol LIGAND Object -------------- - Version = 0.1 - Type = specie - Sub-Type = ligand - Number of Atoms = 1 - Formula = Br - Has Adjacency Matrix = YES - Total Charge = -1 - Smiles = [Br-] - Origin = split_complex - Number of Groups = 1 ---------------------------------------------------- - [3, 4, 9, 10, 13, 14, 17, 18] -1 -Target charge -1 of Br exists in [-1]. -Br -LIGAND.SPLIT_LIGAND: self.indices=[0] -LIGAND.SPLIT_LIGAND: conn_idx=[0] -LIGAND.SPLIT_LIGAND: conn_labels=['Br'] -LIGAND.SPLIT_LIGAND: conn_coord=[[8.982856, -0.8921242, 11.7304271]] -LIGAND.SPLIT_LIGAND: conn_radii=[1.2] -blocklist=[[0]] -LIGAND.SPLIT_LIGAND: block=[0] -ADD_ATOM: Metalist length 1 -ADD_ATOM: Ligand Atoms 1 -ADD_ATOM: site= 0 -ADD_ATOM: target ligand atom Br -ADD_ATOM: evaluating apos=array([ 8.982856 , -0.8921242, 11.7304271]) and tgt.coord=[8.5576195, -3.2485743, 12.0289476] -ADD_ATOM: Chosen Metal index None. H is added at site 0 -LIGAND.SPLIT_LIGAND: group is found ------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 1 - Formula = Br - Has Adjacency Matrix = YES - Origin = split_ligand - Number of Metals = 1 ---------------------------------------------------- - -LIGAND.SPLIT_LIGAND: final groups self.groups=[------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 1 - Formula = Br - Has Adjacency Matrix = YES - Origin = split_ligand - Number of Metals = 1 ---------------------------------------------------- -] - GET_PROTONATION_STATES: evaluating non-haptic group with index 0 and label Br -protonation_states=[------------- Cell2mol Protonation ---------------- - Status = True - Labels = ['Br'] - Type = Local - Atoms added in positions = [0] - Atoms blocked (no atoms added) = [1] ---------------------------------------------------- -] - POSCHARGE will try charges [0, -1, 1, -2, 2] -smiles='[Br-]' - POSCHARGE: charge 0 with smiles [Br-] -smiles='[Br-]' - POSCHARGE: charge 0 with smiles [Br-] -smiles='[Br-]' - POSCHARGE: charge 0 with smiles [Br-] -smiles='[Br-]' - POSCHARGE: charge 0 with smiles [Br-] -smiles='[Br-]' - POSCHARGE: charge 0 with smiles [Br-] - NEW SELECT FUNCTION: uncorr_total: [-1, -1, -1, -1, -1] - NEW SELECT FUNCTION: uncorr_abs_total: [1, 1, 1, 1, 1] - NEW SELECT FUNCTION: uncorr_abs_atcharge: [1, 1, 1, 1, 1] - NEW SELECT FUNCTION: uncorr_zwitt: [False, False, False, False, False] - NEW SELECT FUNCTION: coincide: [False, True, False, False, False] - NEW SELECT FUNCTION: listofmintot: [0, 1, 2, 3, 4] - NEW SELECT FUNCTION: listofminabs: [0, 1, 2, 3, 4] - NEW SELECT FUNCTION: tmplist: [1], including: - NEW SELECT FUNCTION: Corr_charge=-1 - NEW SELECT FUNCTION: Smiles=[Br-] - NEW SELECT FUNCTION: found corr_charges=[-1] - NEW SELECT FUNCTION: doing tgt_charge=-1 - NEW SELECT FUNCTION: charge_state added - NEW SELECT FUNCTION: Case 1, only one entry for -1 in tmplist -Target charge -1 of Br exists in [-1]. -------------- Cell2mol LIGAND Object -------------- - Version = 0.1 - Type = specie - Sub-Type = ligand - Number of Atoms = 1 - Formula = Br - Has Adjacency Matrix = YES - Total Charge = -1 - Smiles = [Br-] - Origin = split_complex - Number of Groups = 1 ---------------------------------------------------- - [3, 4, 9, 10, 13, 14, 17, 18] -1 -Target charge -1 of Br exists in [-1]. -Br -LIGAND.SPLIT_LIGAND: self.indices=[0] -LIGAND.SPLIT_LIGAND: conn_idx=[0] -LIGAND.SPLIT_LIGAND: conn_labels=['Br'] -LIGAND.SPLIT_LIGAND: conn_coord=[[6.2330415, -3.6995867, 11.6445436]] -LIGAND.SPLIT_LIGAND: conn_radii=[1.2] -blocklist=[[0]] -LIGAND.SPLIT_LIGAND: block=[0] -ADD_ATOM: Metalist length 1 -ADD_ATOM: Ligand Atoms 1 -ADD_ATOM: site= 0 -ADD_ATOM: target ligand atom Br -ADD_ATOM: evaluating apos=array([ 6.2330415, -3.6995867, 11.6445436]) and tgt.coord=[8.5576195, -3.2485743, 12.0289476] -ADD_ATOM: Chosen Metal index None. H is added at site 0 -LIGAND.SPLIT_LIGAND: group is found ------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 1 - Formula = Br - Has Adjacency Matrix = YES - Origin = split_ligand - Number of Metals = 1 ---------------------------------------------------- - -LIGAND.SPLIT_LIGAND: final groups self.groups=[------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 1 - Formula = Br - Has Adjacency Matrix = YES - Origin = split_ligand - Number of Metals = 1 ---------------------------------------------------- -] - GET_PROTONATION_STATES: evaluating non-haptic group with index 0 and label Br -protonation_states=[------------- Cell2mol Protonation ---------------- - Status = True - Labels = ['Br'] - Type = Local - Atoms added in positions = [0] - Atoms blocked (no atoms added) = [1] ---------------------------------------------------- -] - POSCHARGE will try charges [0, -1, 1, -2, 2] -smiles='[Br-]' - POSCHARGE: charge 0 with smiles [Br-] -smiles='[Br-]' - POSCHARGE: charge 0 with smiles [Br-] -smiles='[Br-]' - POSCHARGE: charge 0 with smiles [Br-] -smiles='[Br-]' - POSCHARGE: charge 0 with smiles [Br-] -smiles='[Br-]' - POSCHARGE: charge 0 with smiles [Br-] - NEW SELECT FUNCTION: uncorr_total: [-1, -1, -1, -1, -1] - NEW SELECT FUNCTION: uncorr_abs_total: [1, 1, 1, 1, 1] - NEW SELECT FUNCTION: uncorr_abs_atcharge: [1, 1, 1, 1, 1] - NEW SELECT FUNCTION: uncorr_zwitt: [False, False, False, False, False] - NEW SELECT FUNCTION: coincide: [False, True, False, False, False] - NEW SELECT FUNCTION: listofmintot: [0, 1, 2, 3, 4] - NEW SELECT FUNCTION: listofminabs: [0, 1, 2, 3, 4] - NEW SELECT FUNCTION: tmplist: [1], including: - NEW SELECT FUNCTION: Corr_charge=-1 - NEW SELECT FUNCTION: Smiles=[Br-] - NEW SELECT FUNCTION: found corr_charges=[-1] - NEW SELECT FUNCTION: doing tgt_charge=-1 - NEW SELECT FUNCTION: charge_state added - NEW SELECT FUNCTION: Case 1, only one entry for -1 in tmplist -Target charge -1 of Br exists in [-1]. -------------- Cell2mol METAL Object -------------- - Version = 0.1 - Type = atom - Sub-Type = metal - Label = Fe - Atomic Number = 26 - Index in Molecule = 2 - Metal Adjacency (mconnec) = 5 - Regular Adjacencies (connec) = 5 - Atom Charge = 2.0 - Coordination Sphere Formula = C-N2-Br2 - Possible Charges = [2, 3] ----------------------------------------------------- - [5, 11, 15, 19] 2 -Target charge 2 of Fe exists in [2, 3]. -Fe -Target charge 2 of Fe exists in [2, 3]. -------------- Cell2mol LIGAND Object -------------- - Version = 0.1 - Type = specie - Sub-Type = ligand - Number of Atoms = 66 - Formula = H27-C37-N2 - Has Adjacency Matrix = YES - Total Charge = -1 - Smiles = [H]C1=C([H])c2c([H])c([H])c([H])c([H])c2C([H])(N([H])C(c2c([H])c([H])c([H])c([H])c2[H])=[N+]([H])C2([H])c3c([H])c([H])c([H])c([H])c3C([H])=C([H])c3c([H])c([H])c([H])c([H])c32)c2c([H])c([H])c([H])c([H])c21 - Origin = split_complex - Number of Groups = 2 ---------------------------------------------------- - [2, 8, 12, 16] -1 -Target charge -1 of H27-C37-N2 exists in [-3, -1]. -H27-C37-N2 -LIGAND.SPLIT_LIGAND: self.indices=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65] -LIGAND.SPLIT_LIGAND: conn_idx=[2, 49, 50] -LIGAND.SPLIT_LIGAND: conn_labels=['C', 'N', 'N'] -LIGAND.SPLIT_LIGAND: conn_coord=[[22.9635531, 4.896921, 2.9481356], [23.2875248, 4.5693117, 4.1982273], [23.6976799, 4.2687597, 2.0318274]] -LIGAND.SPLIT_LIGAND: conn_radii=[0.73, 0.71, 0.71] -blocklist=[[0, 1, 2]] -LIGAND.SPLIT_LIGAND: block=[0, 1, 2] -ADD_ATOM: Metalist length 1 -ADD_ATOM: Ligand Atoms 66 -ADD_ATOM: site= 2 -ADD_ATOM: target ligand atom C -ADD_ATOM: evaluating apos=array([22.9635531, 4.896921 , 2.9481356]) and tgt.coord=[24.7611304, 3.2485743, 3.5465784] -ADD_ATOM: Chosen Metal index None. H was added at site 2 but RESET due to connec=3 -ADD_ATOM: Metalist length 1 -ADD_ATOM: Ligand Atoms 66 -ADD_ATOM: site= 49 -ADD_ATOM: target ligand atom N -ADD_ATOM: evaluating apos=array([23.2875248, 4.5693117, 4.1982273]) and tgt.coord=[24.7611304, 3.2485743, 3.5465784] -ADD_ATOM: Chosen Metal index None. H is added at site 49 -ADD_ATOM: Metalist length 1 -ADD_ATOM: Ligand Atoms 66 -ADD_ATOM: site= 50 -ADD_ATOM: target ligand atom N -ADD_ATOM: evaluating apos=array([23.6976799, 4.2687597, 2.0318274]) and tgt.coord=[24.7611304, 3.2485743, 3.5465784] -ADD_ATOM: Chosen Metal index None. H is added at site 50 -LIGAND.SPLIT_LIGAND: group is found ------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 3 - Formula = C-N2 - Has Adjacency Matrix = YES - Origin = split_ligand - Number of Metals = 1 ---------------------------------------------------- - -GROUP.SPLIT_GROUP: conn_idx=[1, 2] -GROUP.SPLIT_GROUP: conn_labels=['N', 'N'] -GROUP.SPLIT_GROUP: conn_coord=[[23.2875248, 4.5693117, 4.1982273], [23.6976799, 4.2687597, 2.0318274]] -GROUP.SPLIT_GROUP: conn_radii=[0.71, 0.71] -blocklist=[[1], [0]] -GROUP.SPLIT_GROUP: block=[1] -ADD_ATOM: Metalist length 1 -ADD_ATOM: Ligand Atoms 66 -ADD_ATOM: site= 50 -ADD_ATOM: target ligand atom N -ADD_ATOM: evaluating apos=array([23.6976799, 4.2687597, 2.0318274]) and tgt.coord=[24.7611304, 3.2485743, 3.5465784] -ADD_ATOM: Chosen Metal index None. H is added at site 50 -GROUP.SPLIT_GROUP: block=[0] -ADD_ATOM: Metalist length 1 -ADD_ATOM: Ligand Atoms 66 -ADD_ATOM: site= 49 -ADD_ATOM: target ligand atom N -ADD_ATOM: evaluating apos=array([23.2875248, 4.5693117, 4.1982273]) and tgt.coord=[24.7611304, 3.2485743, 3.5465784] -ADD_ATOM: Chosen Metal index None. H is added at site 49 -LIGAND.SPLIT_LIGAND: final groups self.groups=[------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 1 - Formula = N - Has Adjacency Matrix = YES - Origin = split_group - Number of Metals = 1 ---------------------------------------------------- -, ------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 1 - Formula = N - Has Adjacency Matrix = YES - Origin = split_group - Number of Metals = 1 ---------------------------------------------------- -] - GET_PROTONATION_STATES: evaluating non-haptic group with index 2 and label C - GET_PROTONATION_STATES: Evaluating as carbene and False - GET_PROTONATION_STATES: will be sent to nonlocal due to C atom - GET_PROTONATION_STATES: evaluating non-haptic group with index 1 and label C - GET_PROTONATION_STATES: Evaluating as carbene and False - GET_PROTONATION_STATES: will be sent to nonlocal due to C atom - - GET_PROTONATION_STATES: Enters non-local with: - GET_PROTONATION_STATES: block: [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] - GET_PROTONATION_STATES: addedlist: [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] - GET_PROTONATION_STATES: 2 non_local_groups groups found - - GET_PROTONATION_STATES: doing combination (0, 0) - GET_PROTONATION_STATES: Protonation SAVED with 0 atoms added to ligand. status=True - - GET_PROTONATION_STATES: doing combination (0, 1) - GET_PROTONATION_STATES: Added H to atom 50 with: a.mconnec=1 and label=N - GET_PROTONATION_STATES: Protonation SAVED with 1 atoms added to ligand. status=True - - GET_PROTONATION_STATES: doing combination (1, 0) - GET_PROTONATION_STATES: Added H to atom 49 with: a.mconnec=1 and label=N - GET_PROTONATION_STATES: Protonation SAVED with 1 atoms added to ligand. status=True - - GET_PROTONATION_STATES: doing combination (1, 1) - GET_PROTONATION_STATES: Added H to atom 49 with: a.mconnec=1 and label=N - GET_PROTONATION_STATES: Added H to atom 50 with: a.mconnec=1 and label=N - GET_PROTONATION_STATES: Protonation SAVED with 2 atoms added to ligand. status=True -protonation_states=[------------- Cell2mol Protonation ---------------- - Status = True - Labels = ['C', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'N', 'N', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H'] - Type = Non-local - Atoms added in positions = [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] - Atoms blocked (no atoms added) = [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] ---------------------------------------------------- -, ------------- Cell2mol Protonation ---------------- - Status = True - Labels = ['C', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'N', 'N', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'H'] - Type = Non-local - Atoms added in positions = [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] - Atoms blocked (no atoms added) = [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] ---------------------------------------------------- -, ------------- Cell2mol Protonation ---------------- - Status = True - Labels = ['C', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'N', 'N', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'H'] - Type = Non-local - Atoms added in positions = [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] - Atoms blocked (no atoms added) = [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] ---------------------------------------------------- -, ------------- Cell2mol Protonation ---------------- - Status = True - Labels = ['C', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'N', 'N', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'H', 'H'] - Type = Non-local - Atoms added in positions = [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] - Atoms blocked (no atoms added) = [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] ---------------------------------------------------- -] - POSCHARGE will try charges [0, -1, 1, -2, 2] -smiles='[H][C+]1[C+]2[C+]([H])[C-]([H])[C-]3[C+]([C+]([H])[C+]([H])[C+]([H])[C-]3[H])C([H])([N-][C-]([N-]C3([H])[C+]4[C+]([H])[C+]([H])[C-]([H])[C-]([H])[C+]4[C-]([H])[C-]([H])[c-]4[c+]3[c+]([H])[c+]([H])[c-]([H])[c-]4[H])[C-]3[C+]([H])[C-]([H])[C+]([H])[C-]([H])[C-]3[H])[C+]2[C-]([H])[C-]([H])[C+]1[H]' - POSCHARGE: charge 0 with smiles [H][C+]1[C+]2[C+]([H])[C-]([H])[C-]3[C+]([C+]([H])[C+]([H])[C+]([H])[C-]3[H])C([H])([N-][C-]([N-]C3([H])[C+]4[C+]([H])[C+]([H])[C-]([H])[C-]([H])[C+]4[C-]([H])[C-]([H])[c-]4[c+]3[c+]([H])[c+]([H])[c-]([H])[c-]4[H])[C-]3[C+]([H])[C-]([H])[C+]([H])[C-]([H])[C-]3[H])[C+]2[C-]([H])[C-]([H])[C+]1[H] -smiles='[H]C1=C([H])c2c([H])c([H])c([H])c([H])c2C([H])(N=C([N-]C2([H])c3c([H])c([H])c([H])c([H])c3C([H])=C([H])c3c([H])c([H])c([H])c([H])c32)c2c([H])c([H])c([H])c([H])c2[H])c2c([H])c([H])c([H])c([H])c21' - POSCHARGE: charge 0 with smiles [H]C1=C([H])c2c([H])c([H])c([H])c([H])c2C([H])(N=C([N-]C2([H])c3c([H])c([H])c([H])c([H])c3C([H])=C([H])c3c([H])c([H])c([H])c([H])c32)c2c([H])c([H])c([H])c([H])c2[H])c2c([H])c([H])c([H])c([H])c21 -smiles='[H][C+]1[C+]([H])[C-]([H])[C+]([H])[C-]([H])[C+]1[C+]([N-]C1([H])[c+]2[c-]([c+]([H])[c+]([H])[c-]([H])[c-]2[H])[C+]([H])[C+]([H])[C+]2[C+]([H])[C+]([H])[C-]([H])[C+]([H])[C-]21)[N-]C1([H])[C-]2[C+]([C+]([H])[C-]([H])[C-]([H])[C-]2[H])[C+]([H])[C-]([H])[C-]2[C-]([H])[C-]([H])[C+]([H])[C+]([H])[C-]21' - POSCHARGE: charge 0 with smiles [H][C+]1[C+]([H])[C-]([H])[C+]([H])[C-]([H])[C+]1[C+]([N-]C1([H])[c+]2[c-]([c+]([H])[c+]([H])[c-]([H])[c-]2[H])[C+]([H])[C+]([H])[C+]2[C+]([H])[C+]([H])[C-]([H])[C+]([H])[C-]21)[N-]C1([H])[C-]2[C+]([C+]([H])[C-]([H])[C-]([H])[C-]2[H])[C+]([H])[C-]([H])[C-]2[C-]([H])[C-]([H])[C+]([H])[C+]([H])[C-]21 -smiles='[H][C+]1[C+]2[C+]([H])[C-]([H])[C-]3[C+]([C+]([H])[C+]([H])[C+]([H])[C-]3[H])C([H])([N-][C-]([N-]C3([H])[C+]4[C+]([H])[C+]([H])[C-]([H])[C-]([H])[C+]4[C-]([H])[C-]([H])[C-]4[C-]([H])[C-]([H])[C+]([H])[C+]([H])[C-]43)[C-]3[C+]([H])[C-]([H])[C+]([H])[C-]([H])[C-]3[H])[C+]2[C-]([H])[C-]([H])[C+]1[H]' - POSCHARGE: charge 0 with smiles [H][C+]1[C+]2[C+]([H])[C-]([H])[C-]3[C+]([C+]([H])[C+]([H])[C+]([H])[C-]3[H])C([H])([N-][C-]([N-]C3([H])[C+]4[C+]([H])[C+]([H])[C-]([H])[C-]([H])[C+]4[C-]([H])[C-]([H])[C-]4[C-]([H])[C-]([H])[C+]([H])[C+]([H])[C-]43)[C-]3[C+]([H])[C-]([H])[C+]([H])[C-]([H])[C-]3[H])[C+]2[C-]([H])[C-]([H])[C+]1[H] -smiles='[H][C+]1[C+]2[C+]([H])[C-]([H])[C-]3[C+]([C+]([H])[C+]([H])[C+]([H])[C-]3[H])C([H])([N-][C-]([N-]C3([H])[C+]4[C+]([H])[C+]([H])[C-]([H])[C-]([H])[C+]4[C-]([H])[C-]([H])[c-]4[c+]3[c+]([H])[c+]([H])[c-]([H])[c-]4[H])[c+]3[c+]([H])[c-]([H])[c+]([H])[c-]([H])[c-]3[H])[C+]2[C-]([H])[C-]([H])[C+]1[H]' - POSCHARGE: charge 0 with smiles [H][C+]1[C+]2[C+]([H])[C-]([H])[C-]3[C+]([C+]([H])[C+]([H])[C+]([H])[C-]3[H])C([H])([N-][C-]([N-]C3([H])[C+]4[C+]([H])[C+]([H])[C-]([H])[C-]([H])[C+]4[C-]([H])[C-]([H])[c-]4[c+]3[c+]([H])[c+]([H])[c-]([H])[c-]4[H])[c+]3[c+]([H])[c-]([H])[c+]([H])[c-]([H])[c-]3[H])[C+]2[C-]([H])[C-]([H])[C+]1[H] - POSCHARGE will try charges [0, -1, 1, -2, 2] -smiles='[H]C1=C([H])c2c([H])c([H])c([H])c([H])c2C([H])(N=C(c2c([H])c([H])c([H])c([H])c2[H])N([H])C2([H])c3c([H])c([H])c([H])c([H])c3C([H])=C([H])c3c([H])c([H])c([H])c([H])c32)c2c([H])c([H])c([H])c([H])c21' - POSCHARGE: charge 0 with smiles [H]C1=C([H])c2c([H])c([H])c([H])c([H])c2C([H])(N=C(c2c([H])c([H])c([H])c([H])c2[H])N([H])C2([H])c3c([H])c([H])c([H])c([H])c3C([H])=C([H])c3c([H])c([H])c([H])c([H])c32)c2c([H])c([H])c([H])c([H])c21 -smiles='[H][C+]1[C+]([H])[C-]2[C+]([H])[C-]([H])[C-]([H])[C-]([H])[C+]2C([H])([N-][C+]([c-]2[c+]([H])[c+]([H])[c-]([H])[c+]([H])[c-]2[H])N([H])C2([H])[C-]3[C+]([H])[C+]([H])[C-]([H])[C-]([H])[C-]3[C-]([H])[C+]([H])[c+]3[c+]([H])[c-]([H])[c+]([H])[c-]([H])[c-]32)[c-]2[c+]([H])[c+]([H])[c-]([H])[c-]([H])[c+]21' - POSCHARGE: charge 0 with smiles [H][C+]1[C+]([H])[C-]2[C+]([H])[C-]([H])[C-]([H])[C-]([H])[C+]2C([H])([N-][C+]([c-]2[c+]([H])[c+]([H])[c-]([H])[c+]([H])[c-]2[H])N([H])C2([H])[C-]3[C+]([H])[C+]([H])[C-]([H])[C-]([H])[C-]3[C-]([H])[C+]([H])[c+]3[c+]([H])[c-]([H])[c+]([H])[c-]([H])[c-]32)[c-]2[c+]([H])[c+]([H])[c-]([H])[c-]([H])[c+]21 -smiles='[H][C+]1[C+]([H])[C-]([H])[C+]([H])[C-]([H])[C+]1[C+]([N-]C1([H])[C+]2[C-]([C+]([H])[C+]([H])[c+]3[c-]1[c+]([H])[c+]([H])[c-]([H])[c-]3[H])[C+]([H])[C-]([H])[C-]([H])[C-]2[H])N([H])C1([H])[C-]2[C+]([H])[C+]([H])[C-]([H])[C-]([H])[C-]2[C-]([H])[C+]([H])[c+]2[c+]([H])[c-]([H])[c+]([H])[c-]([H])[c-]21' - POSCHARGE: charge 0 with smiles [H][C+]1[C+]([H])[C-]([H])[C+]([H])[C-]([H])[C+]1[C+]([N-]C1([H])[C+]2[C-]([C+]([H])[C+]([H])[c+]3[c-]1[c+]([H])[c+]([H])[c-]([H])[c-]3[H])[C+]([H])[C-]([H])[C-]([H])[C-]2[H])N([H])C1([H])[C-]2[C+]([H])[C+]([H])[C-]([H])[C-]([H])[C-]2[C-]([H])[C+]([H])[c+]2[c+]([H])[c-]([H])[c+]([H])[c-]([H])[c-]21 -smiles='[H]C1=C([H])c2c([H])c([H])c([H])c([H])c2C([H])([N-][C-](c2c([H])c([H])c([H])c([H])c2[H])N([H])C2([H])c3c([H])c([H])c([H])c([H])c3C([H])=C([H])c3c([H])c([H])c([H])c([H])c32)c2c([H])c([H])c([H])c([H])c21' - POSCHARGE: charge 0 with smiles [H]C1=C([H])c2c([H])c([H])c([H])c([H])c2C([H])([N-][C-](c2c([H])c([H])c([H])c([H])c2[H])N([H])C2([H])c3c([H])c([H])c([H])c([H])c3C([H])=C([H])c3c([H])c([H])c([H])c([H])c32)c2c([H])c([H])c([H])c([H])c21 -smiles='[H][C+]1[C+]2[C+]([H])[C-]([H])[c-]3[c+]([c+]([H])[c-]([H])[c+]([H])[c-]3[H])C([H])(N([H])[C-]([N-]C3([H])[c+]4[c+]([H])[c+]([H])[c+]([H])[c-]([H])[c+]4[C-]([H])[C-]([H])[c-]4[c+]([H])[c+]([H])[c-]([H])[c-]([H])[c+]43)[c+]3[c+]([H])[c-]([H])[c+]([H])[c-]([H])[c-]3[H])[C+]2[C-]([H])[C-]([H])[C+]1[H]' - POSCHARGE: charge 0 with smiles [H][C+]1[C+]2[C+]([H])[C-]([H])[c-]3[c+]([c+]([H])[c-]([H])[c+]([H])[c-]3[H])C([H])(N([H])[C-]([N-]C3([H])[c+]4[c+]([H])[c+]([H])[c+]([H])[c-]([H])[c+]4[C-]([H])[C-]([H])[c-]4[c+]([H])[c+]([H])[c-]([H])[c-]([H])[c+]43)[c+]3[c+]([H])[c-]([H])[c+]([H])[c-]([H])[c-]3[H])[C+]2[C-]([H])[C-]([H])[C+]1[H] - POSCHARGE will try charges [0, -1, 1, -2, 2] -smiles='[H]C1=C([H])c2c([H])c([H])c([H])c([H])c2C([H])(N=C(c2c([H])c([H])c([H])c([H])c2[H])N([H])C2([H])c3c([H])c([H])c([H])c([H])c3C([H])=C([H])c3c([H])c([H])c([H])c([H])c32)c2c([H])c([H])c([H])c([H])c21' - POSCHARGE: charge 0 with smiles [H]C1=C([H])c2c([H])c([H])c([H])c([H])c2C([H])(N=C(c2c([H])c([H])c([H])c([H])c2[H])N([H])C2([H])c3c([H])c([H])c([H])c([H])c3C([H])=C([H])c3c([H])c([H])c([H])c([H])c32)c2c([H])c([H])c([H])c([H])c21 -smiles='[H][C+]1[C+]([H])[C-]2[C+]([H])[C-]([H])[C-]([H])[C-]([H])[C+]2C([H])(N([H])[C+]([N-]C2([H])[C-]3[C+]([H])[C+]([H])[C-]([H])[C-]([H])[C-]3[C-]([H])[C+]([H])[c+]3[c+]([H])[c-]([H])[c+]([H])[c-]([H])[c-]32)[c-]2[c+]([H])[c+]([H])[c-]([H])[c+]([H])[c-]2[H])[c-]2[c+]([H])[c+]([H])[c-]([H])[c-]([H])[c+]21' - POSCHARGE: charge 0 with smiles [H][C+]1[C+]([H])[C-]2[C+]([H])[C-]([H])[C-]([H])[C-]([H])[C+]2C([H])(N([H])[C+]([N-]C2([H])[C-]3[C+]([H])[C+]([H])[C-]([H])[C-]([H])[C-]3[C-]([H])[C+]([H])[c+]3[c+]([H])[c-]([H])[c+]([H])[c-]([H])[c-]32)[c-]2[c+]([H])[c+]([H])[c-]([H])[c+]([H])[c-]2[H])[c-]2[c+]([H])[c+]([H])[c-]([H])[c-]([H])[c+]21 -smiles='[H][C+]1[C+]([H])[C-]([H])[C+]([H])[C-]([H])[C+]1[C+]([N-]C1([H])[C-]2[C+]([H])[C+]([H])[C-]([H])[C-]([H])[C-]2[C-]([H])[C+]([H])[c+]2[c+]([H])[c-]([H])[c+]([H])[c-]([H])[c-]21)N([H])C1([H])[C+]2[C-]([C+]([H])[C+]([H])[c+]3[c-]1[c+]([H])[c+]([H])[c-]([H])[c-]3[H])[C+]([H])[C-]([H])[C-]([H])[C-]2[H]' - POSCHARGE: charge 0 with smiles [H][C+]1[C+]([H])[C-]([H])[C+]([H])[C-]([H])[C+]1[C+]([N-]C1([H])[C-]2[C+]([H])[C+]([H])[C-]([H])[C-]([H])[C-]2[C-]([H])[C+]([H])[c+]2[c+]([H])[c-]([H])[c+]([H])[c-]([H])[c-]21)N([H])C1([H])[C+]2[C-]([C+]([H])[C+]([H])[c+]3[c-]1[c+]([H])[c+]([H])[c-]([H])[c-]3[H])[C+]([H])[C-]([H])[C-]([H])[C-]2[H] -smiles='[H]C1=C([H])c2c([H])c([H])c([H])c([H])c2C([H])([N-][C-](c2c([H])c([H])c([H])c([H])c2[H])N([H])C2([H])c3c([H])c([H])c([H])c([H])c3C([H])=C([H])c3c([H])c([H])c([H])c([H])c32)c2c([H])c([H])c([H])c([H])c21' - POSCHARGE: charge 0 with smiles [H]C1=C([H])c2c([H])c([H])c([H])c([H])c2C([H])([N-][C-](c2c([H])c([H])c([H])c([H])c2[H])N([H])C2([H])c3c([H])c([H])c([H])c([H])c3C([H])=C([H])c3c([H])c([H])c([H])c([H])c32)c2c([H])c([H])c([H])c([H])c21 -smiles='[H][C+]1[C+]2[C+]([H])[C-]([H])[c-]3[c+]([c+]([H])[c-]([H])[c+]([H])[c-]3[H])C([H])([N-][C-]([c+]3[c+]([H])[c-]([H])[c+]([H])[c-]([H])[c-]3[H])N([H])C3([H])[c+]4[c+]([H])[c+]([H])[c+]([H])[c-]([H])[c+]4[C-]([H])[C-]([H])[c-]4[c+]([H])[c+]([H])[c-]([H])[c-]([H])[c+]43)[C+]2[C-]([H])[C-]([H])[C+]1[H]' - POSCHARGE: charge 0 with smiles [H][C+]1[C+]2[C+]([H])[C-]([H])[c-]3[c+]([c+]([H])[c-]([H])[c+]([H])[c-]3[H])C([H])([N-][C-]([c+]3[c+]([H])[c-]([H])[c+]([H])[c-]([H])[c-]3[H])N([H])C3([H])[c+]4[c+]([H])[c+]([H])[c+]([H])[c-]([H])[c+]4[C-]([H])[C-]([H])[c-]4[c+]([H])[c+]([H])[c-]([H])[c-]([H])[c+]43)[C+]2[C-]([H])[C-]([H])[C+]1[H] - POSCHARGE will try charges [0, -1, 1, -2, 2] -smiles='[H][C+]1[C+]2[C+]([H])[C-]([H])[C-]3[C+]([C+]([H])[C+]([H])[C+]([H])[C-]3[H])C([H])(N([H])[C-]([C-]3[C+]([H])[C-]([H])[C+]([H])[C-]([H])[C-]3[H])N([H])C3([H])[c+]4[c+]([H])[c+]([H])[c-]([H])[c-]([H])[c-]4[C-]([H])[C-]([H])[c+]4[c-]3[c+]([H])[c+]([H])[c-]([H])[c-]4[H])[C+]2[C-]([H])[C-]([H])[C+]1[H]' - POSCHARGE: charge 0 with smiles [H][C+]1[C+]2[C+]([H])[C-]([H])[C-]3[C+]([C+]([H])[C+]([H])[C+]([H])[C-]3[H])C([H])(N([H])[C-]([C-]3[C+]([H])[C-]([H])[C+]([H])[C-]([H])[C-]3[H])N([H])C3([H])[c+]4[c+]([H])[c+]([H])[c-]([H])[c-]([H])[c-]4[C-]([H])[C-]([H])[c+]4[c-]3[c+]([H])[c+]([H])[c-]([H])[c-]4[H])[C+]2[C-]([H])[C-]([H])[C+]1[H] -smiles='[H]C1=C([H])c2c([H])c([H])c([H])c([H])c2C([H])(N([H])[C-](c2c([H])c([H])c([H])c([H])c2[H])N([H])C2([H])c3c([H])c([H])c([H])c([H])c3C([H])=C([H])c3c([H])c([H])c([H])c([H])c32)c2c([H])c([H])c([H])c([H])c21' - POSCHARGE: charge 0 with smiles [H]C1=C([H])c2c([H])c([H])c([H])c([H])c2C([H])(N([H])[C-](c2c([H])c([H])c([H])c([H])c2[H])N([H])C2([H])c3c([H])c([H])c([H])c([H])c3C([H])=C([H])c3c([H])c([H])c([H])c([H])c32)c2c([H])c([H])c([H])c([H])c21 -smiles='[H]C1=C([H])c2c([H])c([H])c([H])c([H])c2C([H])(N([H])C(c2c([H])c([H])c([H])c([H])c2[H])=[N+]([H])C2([H])c3c([H])c([H])c([H])c([H])c3C([H])=C([H])c3c([H])c([H])c([H])c([H])c32)c2c([H])c([H])c([H])c([H])c21' - POSCHARGE: charge 0 with smiles [H]C1=C([H])c2c([H])c([H])c([H])c([H])c2C([H])(N([H])C(c2c([H])c([H])c([H])c([H])c2[H])=[N+]([H])C2([H])c3c([H])c([H])c([H])c([H])c3C([H])=C([H])c3c([H])c([H])c([H])c([H])c32)c2c([H])c([H])c([H])c([H])c21 -smiles='[H][C+]1[C+]2[C+]([H])[C-]([H])[C-]3[C+]([C+]([H])[C+]([H])[C+]([H])[C-]3[H])C([H])(N([H])[C-]([C-]3[C+]([H])[C-]([H])[C+]([H])[C-]([H])[C-]3[H])N([H])C3([H])[C-]4[C+]([H])[C+]([H])[C-]([H])[C-]([H])[C-]4[C-]([H])[C-]([H])[c+]4[c-]3[c+]([H])[c+]([H])[c-]([H])[c-]4[H])[C+]2[C-]([H])[C-]([H])[C+]1[H]' - POSCHARGE: charge 0 with smiles [H][C+]1[C+]2[C+]([H])[C-]([H])[C-]3[C+]([C+]([H])[C+]([H])[C+]([H])[C-]3[H])C([H])(N([H])[C-]([C-]3[C+]([H])[C-]([H])[C+]([H])[C-]([H])[C-]3[H])N([H])C3([H])[C-]4[C+]([H])[C+]([H])[C-]([H])[C-]([H])[C-]4[C-]([H])[C-]([H])[c+]4[c-]3[c+]([H])[c+]([H])[c-]([H])[c-]4[H])[C+]2[C-]([H])[C-]([H])[C+]1[H] -smiles='[H][C+]1[C+]2[C+]([H])[C-]([H])[C-]3[C+]([C+]([H])[C+]([H])[C+]([H])[C-]3[H])C([H])(N([H])[C-]([c+]3[c+]([H])[c-]([H])[c+]([H])[c-]([H])[c-]3[H])N([H])C3([H])[c+]4[c+]([H])[c+]([H])[c-]([H])[c-]([H])[c-]4[C-]([H])[C-]([H])[c+]4[c-]3[c+]([H])[c+]([H])[c-]([H])[c-]4[H])[C+]2[C-]([H])[C-]([H])[C+]1[H]' - POSCHARGE: charge 0 with smiles [H][C+]1[C+]2[C+]([H])[C-]([H])[C-]3[C+]([C+]([H])[C+]([H])[C+]([H])[C-]3[H])C([H])(N([H])[C-]([c+]3[c+]([H])[c-]([H])[c+]([H])[c-]([H])[c-]3[H])N([H])C3([H])[c+]4[c+]([H])[c+]([H])[c-]([H])[c-]([H])[c-]4[C-]([H])[C-]([H])[c+]4[c-]3[c+]([H])[c+]([H])[c-]([H])[c-]4[H])[C+]2[C-]([H])[C-]([H])[C+]1[H] - NEW SELECT FUNCTION: uncorr_total: [-1, -1, 1, -3, 1] - NEW SELECT FUNCTION: uncorr_abs_total: [1, 1, 1, 3, 1] - NEW SELECT FUNCTION: uncorr_abs_atcharge: [35, 1, 1, 35, 35] - NEW SELECT FUNCTION: uncorr_zwitt: [True, False, False, True, True] - NEW SELECT FUNCTION: coincide: [False, True, True, False, False] - NEW SELECT FUNCTION: listofmintot: [0, 1, 2, 4] - NEW SELECT FUNCTION: listofminabs: [1, 2] - NEW SELECT FUNCTION: tmplist: [1, 2], including: - NEW SELECT FUNCTION: Corr_charge=-3 - NEW SELECT FUNCTION: Smiles=[H]C1=C([H])c2c([H])c([H])c([H])c([H])c2C([H])(N([H])[C-](c2c([H])c([H])c([H])c([H])c2[H])N([H])C2([H])c3c([H])c([H])c([H])c([H])c3C([H])=C([H])c3c([H])c([H])c([H])c([H])c32)c2c([H])c([H])c([H])c([H])c21 - NEW SELECT FUNCTION: Corr_charge=-1 - NEW SELECT FUNCTION: Smiles=[H]C1=C([H])c2c([H])c([H])c([H])c([H])c2C([H])(N([H])C(c2c([H])c([H])c([H])c([H])c2[H])=[N+]([H])C2([H])c3c([H])c([H])c([H])c([H])c3C([H])=C([H])c3c([H])c([H])c([H])c([H])c32)c2c([H])c([H])c([H])c([H])c21 - NEW SELECT FUNCTION: found corr_charges=[-3, -1] - NEW SELECT FUNCTION: doing tgt_charge=-3 - NEW SELECT FUNCTION: charge_state added - NEW SELECT FUNCTION: Case 1, only one entry for -3 in tmplist - NEW SELECT FUNCTION: doing tgt_charge=-1 - NEW SELECT FUNCTION: charge_state added - NEW SELECT FUNCTION: Case 1, only one entry for -1 in tmplist -Target charge -1 of H27-C37-N2 exists in [-3, -1]. -------------- Cell2mol LIGAND Object -------------- - Version = 0.1 - Type = specie - Sub-Type = ligand - Number of Atoms = 1 - Formula = Br - Has Adjacency Matrix = YES - Total Charge = -1 - Smiles = [Br-] - Origin = split_complex - Number of Groups = 1 ---------------------------------------------------- - [3, 4, 9, 10, 13, 14, 17, 18] -1 -Target charge -1 of Br exists in [-1]. -Br -LIGAND.SPLIT_LIGAND: self.indices=[0] -LIGAND.SPLIT_LIGAND: conn_idx=[0] -LIGAND.SPLIT_LIGAND: conn_labels=['Br'] -LIGAND.SPLIT_LIGAND: conn_coord=[[27.0857083, 3.6995867, 3.9309824]] -LIGAND.SPLIT_LIGAND: conn_radii=[1.2] -blocklist=[[0]] -LIGAND.SPLIT_LIGAND: block=[0] -ADD_ATOM: Metalist length 1 -ADD_ATOM: Ligand Atoms 1 -ADD_ATOM: site= 0 -ADD_ATOM: target ligand atom Br -ADD_ATOM: evaluating apos=array([27.0857083, 3.6995867, 3.9309824]) and tgt.coord=[24.7611304, 3.2485743, 3.5465784] -ADD_ATOM: Chosen Metal index None. H is added at site 0 -LIGAND.SPLIT_LIGAND: group is found ------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 1 - Formula = Br - Has Adjacency Matrix = YES - Origin = split_ligand - Number of Metals = 1 ---------------------------------------------------- - -LIGAND.SPLIT_LIGAND: final groups self.groups=[------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 1 - Formula = Br - Has Adjacency Matrix = YES - Origin = split_ligand - Number of Metals = 1 ---------------------------------------------------- -] - GET_PROTONATION_STATES: evaluating non-haptic group with index 0 and label Br -protonation_states=[------------- Cell2mol Protonation ---------------- - Status = True - Labels = ['Br'] - Type = Local - Atoms added in positions = [0] - Atoms blocked (no atoms added) = [1] ---------------------------------------------------- -] - POSCHARGE will try charges [0, -1, 1, -2, 2] -smiles='[Br-]' - POSCHARGE: charge 0 with smiles [Br-] -smiles='[Br-]' - POSCHARGE: charge 0 with smiles [Br-] -smiles='[Br-]' - POSCHARGE: charge 0 with smiles [Br-] -smiles='[Br-]' - POSCHARGE: charge 0 with smiles [Br-] -smiles='[Br-]' - POSCHARGE: charge 0 with smiles [Br-] - NEW SELECT FUNCTION: uncorr_total: [-1, -1, -1, -1, -1] - NEW SELECT FUNCTION: uncorr_abs_total: [1, 1, 1, 1, 1] - NEW SELECT FUNCTION: uncorr_abs_atcharge: [1, 1, 1, 1, 1] - NEW SELECT FUNCTION: uncorr_zwitt: [False, False, False, False, False] - NEW SELECT FUNCTION: coincide: [False, True, False, False, False] - NEW SELECT FUNCTION: listofmintot: [0, 1, 2, 3, 4] - NEW SELECT FUNCTION: listofminabs: [0, 1, 2, 3, 4] - NEW SELECT FUNCTION: tmplist: [1], including: - NEW SELECT FUNCTION: Corr_charge=-1 - NEW SELECT FUNCTION: Smiles=[Br-] - NEW SELECT FUNCTION: found corr_charges=[-1] - NEW SELECT FUNCTION: doing tgt_charge=-1 - NEW SELECT FUNCTION: charge_state added - NEW SELECT FUNCTION: Case 1, only one entry for -1 in tmplist -Target charge -1 of Br exists in [-1]. -------------- Cell2mol LIGAND Object -------------- - Version = 0.1 - Type = specie - Sub-Type = ligand - Number of Atoms = 1 - Formula = Br - Has Adjacency Matrix = YES - Total Charge = -1 - Smiles = [Br-] - Origin = split_complex - Number of Groups = 1 ---------------------------------------------------- - [3, 4, 9, 10, 13, 14, 17, 18] -1 -Target charge -1 of Br exists in [-1]. -Br -LIGAND.SPLIT_LIGAND: self.indices=[0] -LIGAND.SPLIT_LIGAND: conn_idx=[0] -LIGAND.SPLIT_LIGAND: conn_labels=['Br'] -LIGAND.SPLIT_LIGAND: conn_coord=[[24.3358938, 0.8921242, 3.845099]] -LIGAND.SPLIT_LIGAND: conn_radii=[1.2] -blocklist=[[0]] -LIGAND.SPLIT_LIGAND: block=[0] -ADD_ATOM: Metalist length 1 -ADD_ATOM: Ligand Atoms 1 -ADD_ATOM: site= 0 -ADD_ATOM: target ligand atom Br -ADD_ATOM: evaluating apos=array([24.3358938, 0.8921242, 3.845099 ]) and tgt.coord=[24.7611304, 3.2485743, 3.5465784] -ADD_ATOM: Chosen Metal index None. H is added at site 0 -LIGAND.SPLIT_LIGAND: group is found ------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 1 - Formula = Br - Has Adjacency Matrix = YES - Origin = split_ligand - Number of Metals = 1 ---------------------------------------------------- - -LIGAND.SPLIT_LIGAND: final groups self.groups=[------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 1 - Formula = Br - Has Adjacency Matrix = YES - Origin = split_ligand - Number of Metals = 1 ---------------------------------------------------- -] - GET_PROTONATION_STATES: evaluating non-haptic group with index 0 and label Br -protonation_states=[------------- Cell2mol Protonation ---------------- - Status = True - Labels = ['Br'] - Type = Local - Atoms added in positions = [0] - Atoms blocked (no atoms added) = [1] ---------------------------------------------------- -] - POSCHARGE will try charges [0, -1, 1, -2, 2] -smiles='[Br-]' - POSCHARGE: charge 0 with smiles [Br-] -smiles='[Br-]' - POSCHARGE: charge 0 with smiles [Br-] -smiles='[Br-]' - POSCHARGE: charge 0 with smiles [Br-] -smiles='[Br-]' - POSCHARGE: charge 0 with smiles [Br-] -smiles='[Br-]' - POSCHARGE: charge 0 with smiles [Br-] - NEW SELECT FUNCTION: uncorr_total: [-1, -1, -1, -1, -1] - NEW SELECT FUNCTION: uncorr_abs_total: [1, 1, 1, 1, 1] - NEW SELECT FUNCTION: uncorr_abs_atcharge: [1, 1, 1, 1, 1] - NEW SELECT FUNCTION: uncorr_zwitt: [False, False, False, False, False] - NEW SELECT FUNCTION: coincide: [False, True, False, False, False] - NEW SELECT FUNCTION: listofmintot: [0, 1, 2, 3, 4] - NEW SELECT FUNCTION: listofminabs: [0, 1, 2, 3, 4] - NEW SELECT FUNCTION: tmplist: [1], including: - NEW SELECT FUNCTION: Corr_charge=-1 - NEW SELECT FUNCTION: Smiles=[Br-] - NEW SELECT FUNCTION: found corr_charges=[-1] - NEW SELECT FUNCTION: doing tgt_charge=-1 - NEW SELECT FUNCTION: charge_state added - NEW SELECT FUNCTION: Case 1, only one entry for -1 in tmplist -Target charge -1 of Br exists in [-1]. -------------- Cell2mol METAL Object -------------- - Version = 0.1 - Type = atom - Sub-Type = metal - Label = Fe - Atomic Number = 26 - Index in Molecule = 2 - Metal Adjacency (mconnec) = 5 - Regular Adjacencies (connec) = 5 - Atom Charge = 2.0 - Coordination Sphere Formula = C-N2-Br2 - Possible Charges = [2, 3] ----------------------------------------------------- - [5, 11, 15, 19] 2 -Target charge 2 of Fe exists in [2, 3]. -Fe -Target charge 2 of Fe exists in [2, 3]. -------------- Cell2mol LIGAND Object -------------- - Version = 0.1 - Type = specie - Sub-Type = ligand - Number of Atoms = 66 - Formula = H27-C37-N2 - Has Adjacency Matrix = YES - Total Charge = -1 - Smiles = [H]C1=C([H])c2c([H])c([H])c([H])c([H])c2C([H])(N([H])C(c2c([H])c([H])c([H])c([H])c2[H])=[N+]([H])C2([H])c3c([H])c([H])c([H])c([H])c3C([H])=C([H])c3c([H])c([H])c([H])c([H])c32)c2c([H])c([H])c([H])c([H])c21 - Origin = split_complex - Number of Groups = 2 ---------------------------------------------------- - [2, 8, 12, 16] -1 -Target charge -1 of H27-C37-N2 exists in [-3, -1]. -H27-C37-N2 -LIGAND.SPLIT_LIGAND: self.indices=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65] -LIGAND.SPLIT_LIGAND: conn_idx=[2, 49, 50] -LIGAND.SPLIT_LIGAND: conn_labels=['C', 'N', 'N'] -LIGAND.SPLIT_LIGAND: conn_coord=[[19.501428, -4.896921, 10.7358986], [19.8253997, -4.5693117, 11.9859903], [20.2355548, -4.2687597, 9.8195904]] -LIGAND.SPLIT_LIGAND: conn_radii=[0.73, 0.71, 0.71] -blocklist=[[0, 1, 2]] -LIGAND.SPLIT_LIGAND: block=[0, 1, 2] -ADD_ATOM: Metalist length 1 -ADD_ATOM: Ligand Atoms 66 -ADD_ATOM: site= 2 -ADD_ATOM: target ligand atom C -ADD_ATOM: evaluating apos=array([19.501428 , -4.896921 , 10.7358986]) and tgt.coord=[21.2990053, -3.2485743, 11.3343415] -ADD_ATOM: Chosen Metal index None. H was added at site 2 but RESET due to connec=3 -ADD_ATOM: Metalist length 1 -ADD_ATOM: Ligand Atoms 66 -ADD_ATOM: site= 49 -ADD_ATOM: target ligand atom N -ADD_ATOM: evaluating apos=array([19.8253997, -4.5693117, 11.9859903]) and tgt.coord=[21.2990053, -3.2485743, 11.3343415] -ADD_ATOM: Chosen Metal index None. H is added at site 49 -ADD_ATOM: Metalist length 1 -ADD_ATOM: Ligand Atoms 66 -ADD_ATOM: site= 50 -ADD_ATOM: target ligand atom N -ADD_ATOM: evaluating apos=array([20.2355548, -4.2687597, 9.8195904]) and tgt.coord=[21.2990053, -3.2485743, 11.3343415] -ADD_ATOM: Chosen Metal index None. H is added at site 50 -LIGAND.SPLIT_LIGAND: group is found ------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 3 - Formula = C-N2 - Has Adjacency Matrix = YES - Origin = split_ligand - Number of Metals = 1 ---------------------------------------------------- - -GROUP.SPLIT_GROUP: conn_idx=[1, 2] -GROUP.SPLIT_GROUP: conn_labels=['N', 'N'] -GROUP.SPLIT_GROUP: conn_coord=[[19.8253997, -4.5693117, 11.9859903], [20.2355548, -4.2687597, 9.8195904]] -GROUP.SPLIT_GROUP: conn_radii=[0.71, 0.71] -blocklist=[[1], [0]] -GROUP.SPLIT_GROUP: block=[1] -ADD_ATOM: Metalist length 1 -ADD_ATOM: Ligand Atoms 66 -ADD_ATOM: site= 50 -ADD_ATOM: target ligand atom N -ADD_ATOM: evaluating apos=array([20.2355548, -4.2687597, 9.8195904]) and tgt.coord=[21.2990053, -3.2485743, 11.3343415] -ADD_ATOM: Chosen Metal index None. H is added at site 50 -GROUP.SPLIT_GROUP: block=[0] -ADD_ATOM: Metalist length 1 -ADD_ATOM: Ligand Atoms 66 -ADD_ATOM: site= 49 -ADD_ATOM: target ligand atom N -ADD_ATOM: evaluating apos=array([19.8253997, -4.5693117, 11.9859903]) and tgt.coord=[21.2990053, -3.2485743, 11.3343415] -ADD_ATOM: Chosen Metal index None. H is added at site 49 -LIGAND.SPLIT_LIGAND: final groups self.groups=[------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 1 - Formula = N - Has Adjacency Matrix = YES - Origin = split_group - Number of Metals = 1 ---------------------------------------------------- -, ------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 1 - Formula = N - Has Adjacency Matrix = YES - Origin = split_group - Number of Metals = 1 ---------------------------------------------------- -] - GET_PROTONATION_STATES: evaluating non-haptic group with index 2 and label C - GET_PROTONATION_STATES: Evaluating as carbene and False - GET_PROTONATION_STATES: will be sent to nonlocal due to C atom - GET_PROTONATION_STATES: evaluating non-haptic group with index 1 and label C - GET_PROTONATION_STATES: Evaluating as carbene and False - GET_PROTONATION_STATES: will be sent to nonlocal due to C atom - - GET_PROTONATION_STATES: Enters non-local with: - GET_PROTONATION_STATES: block: [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] - GET_PROTONATION_STATES: addedlist: [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] - GET_PROTONATION_STATES: 2 non_local_groups groups found - - GET_PROTONATION_STATES: doing combination (0, 0) - GET_PROTONATION_STATES: Protonation SAVED with 0 atoms added to ligand. status=True - - GET_PROTONATION_STATES: doing combination (0, 1) - GET_PROTONATION_STATES: Added H to atom 50 with: a.mconnec=1 and label=N - GET_PROTONATION_STATES: Protonation SAVED with 1 atoms added to ligand. status=True - - GET_PROTONATION_STATES: doing combination (1, 0) - GET_PROTONATION_STATES: Added H to atom 49 with: a.mconnec=1 and label=N - GET_PROTONATION_STATES: Protonation SAVED with 1 atoms added to ligand. status=True - - GET_PROTONATION_STATES: doing combination (1, 1) - GET_PROTONATION_STATES: Added H to atom 49 with: a.mconnec=1 and label=N - GET_PROTONATION_STATES: Added H to atom 50 with: a.mconnec=1 and label=N - GET_PROTONATION_STATES: Protonation SAVED with 2 atoms added to ligand. status=True -protonation_states=[------------- Cell2mol Protonation ---------------- - Status = True - Labels = ['C', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'N', 'N', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H'] - Type = Non-local - Atoms added in positions = [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] - Atoms blocked (no atoms added) = [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] ---------------------------------------------------- -, ------------- Cell2mol Protonation ---------------- - Status = True - Labels = ['C', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'N', 'N', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'H'] - Type = Non-local - Atoms added in positions = [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] - Atoms blocked (no atoms added) = [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] ---------------------------------------------------- -, ------------- Cell2mol Protonation ---------------- - Status = True - Labels = ['C', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'N', 'N', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'H'] - Type = Non-local - Atoms added in positions = [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] - Atoms blocked (no atoms added) = [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] ---------------------------------------------------- -, ------------- Cell2mol Protonation ---------------- - Status = True - Labels = ['C', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'N', 'N', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'H', 'H'] - Type = Non-local - Atoms added in positions = [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] - Atoms blocked (no atoms added) = [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] ---------------------------------------------------- -] - POSCHARGE will try charges [0, -1, 1, -2, 2] -smiles='[H][C+]1[C+]([H])[C+]2[C-]([C+]([H])[C+]([H])[c+]3[c-]([H])[c+]([H])[c-]([H])[c+]([H])[c-]3C2([H])[N-][C-]([N-]C2([H])[C+]3[C+]([H])[C+]([H])[C-]([H])[C-]([H])[C+]3[C+]([H])[C-]([H])[C+]3[C+]2[C-]([H])[C-]([H])[C-]([H])[C-]3[H])[C+]2[C-]([H])[C-]([H])[C+]([H])[C-]([H])[C-]2[H])[C-]([H])[C+]1[H]' - POSCHARGE: charge 0 with smiles [H][C+]1[C+]([H])[C+]2[C-]([C+]([H])[C+]([H])[c+]3[c-]([H])[c+]([H])[c-]([H])[c+]([H])[c-]3C2([H])[N-][C-]([N-]C2([H])[C+]3[C+]([H])[C+]([H])[C-]([H])[C-]([H])[C+]3[C+]([H])[C-]([H])[C+]3[C+]2[C-]([H])[C-]([H])[C-]([H])[C-]3[H])[C+]2[C-]([H])[C-]([H])[C+]([H])[C-]([H])[C-]2[H])[C-]([H])[C+]1[H] -smiles='[H]C1=C([H])c2c([H])c([H])c([H])c([H])c2C([H])(N=C([N-]C2([H])c3c([H])c([H])c([H])c([H])c3C([H])=C([H])c3c([H])c([H])c([H])c([H])c32)c2c([H])c([H])c([H])c([H])c2[H])c2c([H])c([H])c([H])c([H])c21' - POSCHARGE: charge 0 with smiles [H]C1=C([H])c2c([H])c([H])c([H])c([H])c2C([H])(N=C([N-]C2([H])c3c([H])c([H])c([H])c([H])c3C([H])=C([H])c3c([H])c([H])c([H])c([H])c32)c2c([H])c([H])c([H])c([H])c2[H])c2c([H])c([H])c([H])c([H])c21 -smiles='[H][C+]1[C+]([H])[C-]([C+]([N-]C2([H])[c+]3[c-]([H])[c+]([H])[c-]([H])[c+]([H])[c-]3[C-]([H])[C-]([H])[C+]3[C+]([H])[C-]([H])[C-]([H])[C-]([H])[C-]32)[N-]C2([H])[c+]3[c+]([H])[c+]([H])[c+]([H])[c+]([H])[c-]3[C+]([H])[C-]([H])[c-]3[c+]([H])[c+]([H])[c-]([H])[c+]([H])[c-]32)[C+]([H])[C+]([H])[C-]1[H]' - POSCHARGE: charge 0 with smiles [H][C+]1[C+]([H])[C-]([C+]([N-]C2([H])[c+]3[c-]([H])[c+]([H])[c-]([H])[c+]([H])[c-]3[C-]([H])[C-]([H])[C+]3[C+]([H])[C-]([H])[C-]([H])[C-]([H])[C-]32)[N-]C2([H])[c+]3[c+]([H])[c+]([H])[c+]([H])[c+]([H])[c-]3[C+]([H])[C-]([H])[c-]3[c+]([H])[c+]([H])[c-]([H])[c+]([H])[c-]32)[C+]([H])[C+]([H])[C-]1[H] -smiles='[H][C+]1[C+]([H])[C+]2[C-]([C+]([H])[C+]([H])[c+]3[c-]([H])[c+]([H])[c-]([H])[c+]([H])[c-]3C2([H])[N-][C-]([N-]C2([H])[C+]3[C+]([C-]([H])[C+]([H])[c+]4[c-]2[c+]([H])[c+]([H])[c-]([H])[c-]4[H])[C-]([H])[C-]([H])[C-]([H])[C-]3[H])[C+]2[C-]([H])[C-]([H])[C+]([H])[C-]([H])[C-]2[H])[C-]([H])[C+]1[H]' - POSCHARGE: charge 0 with smiles [H][C+]1[C+]([H])[C+]2[C-]([C+]([H])[C+]([H])[c+]3[c-]([H])[c+]([H])[c-]([H])[c+]([H])[c-]3C2([H])[N-][C-]([N-]C2([H])[C+]3[C+]([C-]([H])[C+]([H])[c+]4[c-]2[c+]([H])[c+]([H])[c-]([H])[c-]4[H])[C-]([H])[C-]([H])[C-]([H])[C-]3[H])[C+]2[C-]([H])[C-]([H])[C+]([H])[C-]([H])[C-]2[H])[C-]([H])[C+]1[H] -smiles='[H][C+]1[C+]([H])[C+]2[C-]([C+]([H])[C+]([H])[C+]3[C+]([C+]([H])[C-]([H])[C+]([H])[C-]3[H])C2([H])[N-][C-]([N-]C2([H])[C+]3[C+]([H])[C+]([H])[C-]([H])[C-]([H])[C+]3[C+]([H])[C-]([H])[C+]3[C+]2[C-]([H])[C-]([H])[C-]([H])[C-]3[H])[C+]2[C-]([H])[C-]([H])[C+]([H])[C-]([H])[C-]2[H])[C-]([H])[C+]1[H]' - POSCHARGE: charge 0 with smiles [H][C+]1[C+]([H])[C+]2[C-]([C+]([H])[C+]([H])[C+]3[C+]([C+]([H])[C-]([H])[C+]([H])[C-]3[H])C2([H])[N-][C-]([N-]C2([H])[C+]3[C+]([H])[C+]([H])[C-]([H])[C-]([H])[C+]3[C+]([H])[C-]([H])[C+]3[C+]2[C-]([H])[C-]([H])[C-]([H])[C-]3[H])[C+]2[C-]([H])[C-]([H])[C+]([H])[C-]([H])[C-]2[H])[C-]([H])[C+]1[H] - POSCHARGE will try charges [0, -1, 1, -2, 2] -smiles='[H]C1=C([H])c2c([H])c([H])c([H])c([H])c2C([H])(N=C(c2c([H])c([H])c([H])c([H])c2[H])N([H])C2([H])c3c([H])c([H])c([H])c([H])c3C([H])=C([H])c3c([H])c([H])c([H])c([H])c32)c2c([H])c([H])c([H])c([H])c21' - POSCHARGE: charge 0 with smiles [H]C1=C([H])c2c([H])c([H])c([H])c([H])c2C([H])(N=C(c2c([H])c([H])c([H])c([H])c2[H])N([H])C2([H])c3c([H])c([H])c([H])c([H])c3C([H])=C([H])c3c([H])c([H])c([H])c([H])c32)c2c([H])c([H])c([H])c([H])c21 -smiles='[H][C+]1[C+]([H])[C-]([C+]([N-]C2([H])[c+]3[c+]([H])[c+]([H])[c+]([H])[c+]([H])[c-]3[C-]([H])[C-]([H])[C-]3[C-]([H])[C-]([H])[C+]([H])[C+]([H])[C-]32)N([H])C2([H])[C-]3[C-]([H])[C+]([H])[C-]([H])[C+]([H])[C-]3[C-]([H])[C-]([H])[c+]3[c+]([H])[c-]([H])[c+]([H])[c-]([H])[c-]32)[C+]([H])[C+]([H])[C-]1[H]' - POSCHARGE: charge 0 with smiles [H][C+]1[C+]([H])[C-]([C+]([N-]C2([H])[c+]3[c+]([H])[c+]([H])[c+]([H])[c+]([H])[c-]3[C-]([H])[C-]([H])[C-]3[C-]([H])[C-]([H])[C+]([H])[C+]([H])[C-]32)N([H])C2([H])[C-]3[C-]([H])[C+]([H])[C-]([H])[C+]([H])[C-]3[C-]([H])[C-]([H])[c+]3[c+]([H])[c-]([H])[c+]([H])[c-]([H])[c-]32)[C+]([H])[C+]([H])[C-]1[H] -smiles='[H][C+]1[C+]([H])[C-]([C+]([N-]C2([H])[c+]3[c+]([H])[c+]([H])[c+]([H])[c+]([H])[c-]3[C-]([H])[C-]([H])[C-]3[C-]([H])[C-]([H])[C+]([H])[C+]([H])[C-]32)N([H])C2([H])[c+]3[c-]([H])[c+]([H])[c-]([H])[c+]([H])[c-]3[C-]([H])[C-]([H])[c+]3[c+]([H])[c-]([H])[c+]([H])[c-]([H])[c-]32)[C+]([H])[C+]([H])[C-]1[H]' - POSCHARGE: charge 0 with smiles [H][C+]1[C+]([H])[C-]([C+]([N-]C2([H])[c+]3[c+]([H])[c+]([H])[c+]([H])[c+]([H])[c-]3[C-]([H])[C-]([H])[C-]3[C-]([H])[C-]([H])[C+]([H])[C+]([H])[C-]32)N([H])C2([H])[c+]3[c-]([H])[c+]([H])[c-]([H])[c+]([H])[c-]3[C-]([H])[C-]([H])[c+]3[c+]([H])[c-]([H])[c+]([H])[c-]([H])[c-]32)[C+]([H])[C+]([H])[C-]1[H] -smiles='[H]C1=C([H])c2c([H])c([H])c([H])c([H])c2C([H])([N-][C-](c2c([H])c([H])c([H])c([H])c2[H])N([H])C2([H])c3c([H])c([H])c([H])c([H])c3C([H])=C([H])c3c([H])c([H])c([H])c([H])c32)c2c([H])c([H])c([H])c([H])c21' - POSCHARGE: charge 0 with smiles [H]C1=C([H])c2c([H])c([H])c([H])c([H])c2C([H])([N-][C-](c2c([H])c([H])c([H])c([H])c2[H])N([H])C2([H])c3c([H])c([H])c([H])c([H])c3C([H])=C([H])c3c([H])c([H])c([H])c([H])c32)c2c([H])c([H])c([H])c([H])c21 -smiles='[H][C+]1[C+]([H])[C+]2[C+]([C-]([H])[C-]([H])[C-]([H])[C-]2[H])C([H])([N-][C-]([C+]2[C-]([H])[C-]([H])[C+]([H])[C-]([H])[C-]2[H])N([H])C2([H])[C+]3[C+]([H])[C-]([H])[C+]([H])[C-]([H])[C+]3[C+]([H])[C+]([H])[c-]3[c+]2[c+]([H])[c-]([H])[c+]([H])[c-]3[H])[C+]2[C+]1[C+]([H])[C+]([H])[C-]([H])[C-]2[H]' - POSCHARGE: charge 0 with smiles [H][C+]1[C+]([H])[C+]2[C+]([C-]([H])[C-]([H])[C-]([H])[C-]2[H])C([H])([N-][C-]([C+]2[C-]([H])[C-]([H])[C+]([H])[C-]([H])[C-]2[H])N([H])C2([H])[C+]3[C+]([H])[C-]([H])[C+]([H])[C-]([H])[C+]3[C+]([H])[C+]([H])[c-]3[c+]2[c+]([H])[c-]([H])[c+]([H])[c-]3[H])[C+]2[C+]1[C+]([H])[C+]([H])[C-]([H])[C-]2[H] - POSCHARGE will try charges [0, -1, 1, -2, 2] -smiles='[H]C1=C([H])c2c([H])c([H])c([H])c([H])c2C([H])(N=C(c2c([H])c([H])c([H])c([H])c2[H])N([H])C2([H])c3c([H])c([H])c([H])c([H])c3C([H])=C([H])c3c([H])c([H])c([H])c([H])c32)c2c([H])c([H])c([H])c([H])c21' - POSCHARGE: charge 0 with smiles [H]C1=C([H])c2c([H])c([H])c([H])c([H])c2C([H])(N=C(c2c([H])c([H])c([H])c([H])c2[H])N([H])C2([H])c3c([H])c([H])c([H])c([H])c3C([H])=C([H])c3c([H])c([H])c([H])c([H])c32)c2c([H])c([H])c([H])c([H])c21 -smiles='[H][C+]1[C+]([H])[C-]([C+]([N-]C2([H])[C-]3[C-]([H])[C+]([H])[C-]([H])[C+]([H])[C-]3[C-]([H])[C-]([H])[c+]3[c+]([H])[c-]([H])[c+]([H])[c-]([H])[c-]32)N([H])C2([H])[c+]3[c+]([H])[c+]([H])[c+]([H])[c+]([H])[c-]3[C-]([H])[C-]([H])[C-]3[C-]([H])[C-]([H])[C+]([H])[C+]([H])[C-]32)[C+]([H])[C+]([H])[C-]1[H]' - POSCHARGE: charge 0 with smiles [H][C+]1[C+]([H])[C-]([C+]([N-]C2([H])[C-]3[C-]([H])[C+]([H])[C-]([H])[C+]([H])[C-]3[C-]([H])[C-]([H])[c+]3[c+]([H])[c-]([H])[c+]([H])[c-]([H])[c-]32)N([H])C2([H])[c+]3[c+]([H])[c+]([H])[c+]([H])[c+]([H])[c-]3[C-]([H])[C-]([H])[C-]3[C-]([H])[C-]([H])[C+]([H])[C+]([H])[C-]32)[C+]([H])[C+]([H])[C-]1[H] -smiles='[H][C+]1[C+]([H])[C-]([C+]([N-]C2([H])[c+]3[c-]([H])[c+]([H])[c-]([H])[c+]([H])[c-]3[C-]([H])[C-]([H])[c+]3[c+]([H])[c-]([H])[c+]([H])[c-]([H])[c-]32)N([H])C2([H])[c+]3[c+]([H])[c+]([H])[c+]([H])[c+]([H])[c-]3[C-]([H])[C-]([H])[C-]3[C-]([H])[C-]([H])[C+]([H])[C+]([H])[C-]32)[C+]([H])[C+]([H])[C-]1[H]' - POSCHARGE: charge 0 with smiles [H][C+]1[C+]([H])[C-]([C+]([N-]C2([H])[c+]3[c-]([H])[c+]([H])[c-]([H])[c+]([H])[c-]3[C-]([H])[C-]([H])[c+]3[c+]([H])[c-]([H])[c+]([H])[c-]([H])[c-]32)N([H])C2([H])[c+]3[c+]([H])[c+]([H])[c+]([H])[c+]([H])[c-]3[C-]([H])[C-]([H])[C-]3[C-]([H])[C-]([H])[C+]([H])[C+]([H])[C-]32)[C+]([H])[C+]([H])[C-]1[H] -smiles='[H]C1=C([H])c2c([H])c([H])c([H])c([H])c2C([H])([N-][C-](c2c([H])c([H])c([H])c([H])c2[H])N([H])C2([H])c3c([H])c([H])c([H])c([H])c3C([H])=C([H])c3c([H])c([H])c([H])c([H])c32)c2c([H])c([H])c([H])c([H])c21' - POSCHARGE: charge 0 with smiles [H]C1=C([H])c2c([H])c([H])c([H])c([H])c2C([H])([N-][C-](c2c([H])c([H])c([H])c([H])c2[H])N([H])C2([H])c3c([H])c([H])c([H])c([H])c3C([H])=C([H])c3c([H])c([H])c([H])c([H])c32)c2c([H])c([H])c([H])c([H])c21 -smiles='[H][C+]1[C+]([H])[C+]2[C+]([C-]([H])[C-]([H])[C-]([H])[C-]2[H])C([H])(N([H])[C-]([N-]C2([H])[C+]3[C+]([H])[C-]([H])[C+]([H])[C-]([H])[C+]3[C+]([H])[C+]([H])[c-]3[c+]2[c+]([H])[c-]([H])[c+]([H])[c-]3[H])[C+]2[C-]([H])[C-]([H])[C+]([H])[C-]([H])[C-]2[H])[C+]2[C+]1[C+]([H])[C+]([H])[C-]([H])[C-]2[H]' - POSCHARGE: charge 0 with smiles [H][C+]1[C+]([H])[C+]2[C+]([C-]([H])[C-]([H])[C-]([H])[C-]2[H])C([H])(N([H])[C-]([N-]C2([H])[C+]3[C+]([H])[C-]([H])[C+]([H])[C-]([H])[C+]3[C+]([H])[C+]([H])[c-]3[c+]2[c+]([H])[c-]([H])[c+]([H])[c-]3[H])[C+]2[C-]([H])[C-]([H])[C+]([H])[C-]([H])[C-]2[H])[C+]2[C+]1[C+]([H])[C+]([H])[C-]([H])[C-]2[H] - POSCHARGE will try charges [0, -1, 1, -2, 2] -smiles='[H][C+]1[C+]([H])[C+]2[C-]([C+]([H])[C+]([H])[c+]3[c-]([H])[c+]([H])[c-]([H])[c+]([H])[c-]3C2([H])N([H])[C-]([C+]2[C-]([H])[C-]([H])[C+]([H])[C-]([H])[C-]2[H])N([H])C2([H])[C+]3[C+]([H])[C+]([H])[C-]([H])[C-]([H])[C+]3[C+]([H])[C-]([H])[c+]3[c-]([H])[c-]([H])[c-]([H])[c-]([H])[c-]32)[C-]([H])[C+]1[H]' - POSCHARGE: charge 0 with smiles [H][C+]1[C+]([H])[C+]2[C-]([C+]([H])[C+]([H])[c+]3[c-]([H])[c+]([H])[c-]([H])[c+]([H])[c-]3C2([H])N([H])[C-]([C+]2[C-]([H])[C-]([H])[C+]([H])[C-]([H])[C-]2[H])N([H])C2([H])[C+]3[C+]([H])[C+]([H])[C-]([H])[C-]([H])[C+]3[C+]([H])[C-]([H])[c+]3[c-]([H])[c-]([H])[c-]([H])[c-]([H])[c-]32)[C-]([H])[C+]1[H] -smiles='[H]C1=C([H])c2c([H])c([H])c([H])c([H])c2C([H])(N([H])[C-](c2c([H])c([H])c([H])c([H])c2[H])N([H])C2([H])c3c([H])c([H])c([H])c([H])c3C([H])=C([H])c3c([H])c([H])c([H])c([H])c32)c2c([H])c([H])c([H])c([H])c21' - POSCHARGE: charge 0 with smiles [H]C1=C([H])c2c([H])c([H])c([H])c([H])c2C([H])(N([H])[C-](c2c([H])c([H])c([H])c([H])c2[H])N([H])C2([H])c3c([H])c([H])c([H])c([H])c3C([H])=C([H])c3c([H])c([H])c([H])c([H])c32)c2c([H])c([H])c([H])c([H])c21 -smiles='[H]C1=C([H])c2c([H])c([H])c([H])c([H])c2C([H])(N([H])C(c2c([H])c([H])c([H])c([H])c2[H])=[N+]([H])C2([H])c3c([H])c([H])c([H])c([H])c3C([H])=C([H])c3c([H])c([H])c([H])c([H])c32)c2c([H])c([H])c([H])c([H])c21' - POSCHARGE: charge 0 with smiles [H]C1=C([H])c2c([H])c([H])c([H])c([H])c2C([H])(N([H])C(c2c([H])c([H])c([H])c([H])c2[H])=[N+]([H])C2([H])c3c([H])c([H])c([H])c([H])c3C([H])=C([H])c3c([H])c([H])c([H])c([H])c32)c2c([H])c([H])c([H])c([H])c21 -smiles='[H][C+]1[C+]([H])[C+]2[C-]([C+]([H])[C+]([H])[c+]3[c-]([H])[c+]([H])[c-]([H])[c+]([H])[c-]3C2([H])N([H])[C-]([C+]2[C-]([H])[C-]([H])[C+]([H])[C-]([H])[C-]2[H])N([H])C2([H])[c-]3[c+]([H])[c+]([H])[c-]([H])[c-]([H])[c+]3[C+]([H])[C-]([H])[c+]3[c-]([H])[c-]([H])[c-]([H])[c-]([H])[c-]32)[C-]([H])[C+]1[H]' - POSCHARGE: charge 0 with smiles [H][C+]1[C+]([H])[C+]2[C-]([C+]([H])[C+]([H])[c+]3[c-]([H])[c+]([H])[c-]([H])[c+]([H])[c-]3C2([H])N([H])[C-]([C+]2[C-]([H])[C-]([H])[C+]([H])[C-]([H])[C-]2[H])N([H])C2([H])[c-]3[c+]([H])[c+]([H])[c-]([H])[c-]([H])[c+]3[C+]([H])[C-]([H])[c+]3[c-]([H])[c-]([H])[c-]([H])[c-]([H])[c-]32)[C-]([H])[C+]1[H] -smiles='[H][C+]1[C+]([H])[C+]2[C-]([C+]([H])[C+]([H])[C+]3[C+]([C+]([H])[C-]([H])[C+]([H])[C-]3[H])C2([H])N([H])[C-]([C+]2[C-]([H])[C-]([H])[C+]([H])[C-]([H])[C-]2[H])N([H])C2([H])[C+]3[C+]([H])[C+]([H])[C-]([H])[C-]([H])[C+]3[C+]([H])[C-]([H])[c+]3[c-]([H])[c-]([H])[c-]([H])[c-]([H])[c-]32)[C-]([H])[C+]1[H]' - POSCHARGE: charge 0 with smiles [H][C+]1[C+]([H])[C+]2[C-]([C+]([H])[C+]([H])[C+]3[C+]([C+]([H])[C-]([H])[C+]([H])[C-]3[H])C2([H])N([H])[C-]([C+]2[C-]([H])[C-]([H])[C+]([H])[C-]([H])[C-]2[H])N([H])C2([H])[C+]3[C+]([H])[C+]([H])[C-]([H])[C-]([H])[C+]3[C+]([H])[C-]([H])[c+]3[c-]([H])[c-]([H])[c-]([H])[c-]([H])[c-]32)[C-]([H])[C+]1[H] - NEW SELECT FUNCTION: uncorr_total: [-1, -1, 1, -3, 1] - NEW SELECT FUNCTION: uncorr_abs_total: [1, 1, 1, 3, 1] - NEW SELECT FUNCTION: uncorr_abs_atcharge: [35, 1, 1, 35, 35] - NEW SELECT FUNCTION: uncorr_zwitt: [True, False, False, True, True] - NEW SELECT FUNCTION: coincide: [False, True, True, False, False] - NEW SELECT FUNCTION: listofmintot: [0, 1, 2, 4] - NEW SELECT FUNCTION: listofminabs: [1, 2] - NEW SELECT FUNCTION: tmplist: [1, 2], including: - NEW SELECT FUNCTION: Corr_charge=-3 - NEW SELECT FUNCTION: Smiles=[H]C1=C([H])c2c([H])c([H])c([H])c([H])c2C([H])(N([H])[C-](c2c([H])c([H])c([H])c([H])c2[H])N([H])C2([H])c3c([H])c([H])c([H])c([H])c3C([H])=C([H])c3c([H])c([H])c([H])c([H])c32)c2c([H])c([H])c([H])c([H])c21 - NEW SELECT FUNCTION: Corr_charge=-1 - NEW SELECT FUNCTION: Smiles=[H]C1=C([H])c2c([H])c([H])c([H])c([H])c2C([H])(N([H])C(c2c([H])c([H])c([H])c([H])c2[H])=[N+]([H])C2([H])c3c([H])c([H])c([H])c([H])c3C([H])=C([H])c3c([H])c([H])c([H])c([H])c32)c2c([H])c([H])c([H])c([H])c21 - NEW SELECT FUNCTION: found corr_charges=[-3, -1] - NEW SELECT FUNCTION: doing tgt_charge=-3 - NEW SELECT FUNCTION: charge_state added - NEW SELECT FUNCTION: Case 1, only one entry for -3 in tmplist - NEW SELECT FUNCTION: doing tgt_charge=-1 - NEW SELECT FUNCTION: charge_state added - NEW SELECT FUNCTION: Case 1, only one entry for -1 in tmplist -Target charge -1 of H27-C37-N2 exists in [-3, -1]. -------------- Cell2mol LIGAND Object -------------- - Version = 0.1 - Type = specie - Sub-Type = ligand - Number of Atoms = 1 - Formula = Br - Has Adjacency Matrix = YES - Total Charge = -1 - Smiles = [Br-] - Origin = split_complex - Number of Groups = 1 ---------------------------------------------------- - [3, 4, 9, 10, 13, 14, 17, 18] -1 -Target charge -1 of Br exists in [-1]. -Br -LIGAND.SPLIT_LIGAND: self.indices=[0] -LIGAND.SPLIT_LIGAND: conn_idx=[0] -LIGAND.SPLIT_LIGAND: conn_labels=['Br'] -LIGAND.SPLIT_LIGAND: conn_coord=[[23.6235832, -3.6995867, 11.7187454]] -LIGAND.SPLIT_LIGAND: conn_radii=[1.2] -blocklist=[[0]] -LIGAND.SPLIT_LIGAND: block=[0] -ADD_ATOM: Metalist length 1 -ADD_ATOM: Ligand Atoms 1 -ADD_ATOM: site= 0 -ADD_ATOM: target ligand atom Br -ADD_ATOM: evaluating apos=array([23.6235832, -3.6995867, 11.7187454]) and tgt.coord=[21.2990053, -3.2485743, 11.3343415] -ADD_ATOM: Chosen Metal index None. H is added at site 0 -LIGAND.SPLIT_LIGAND: group is found ------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 1 - Formula = Br - Has Adjacency Matrix = YES - Origin = split_ligand - Number of Metals = 1 ---------------------------------------------------- - -LIGAND.SPLIT_LIGAND: final groups self.groups=[------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 1 - Formula = Br - Has Adjacency Matrix = YES - Origin = split_ligand - Number of Metals = 1 ---------------------------------------------------- -] - GET_PROTONATION_STATES: evaluating non-haptic group with index 0 and label Br -protonation_states=[------------- Cell2mol Protonation ---------------- - Status = True - Labels = ['Br'] - Type = Local - Atoms added in positions = [0] - Atoms blocked (no atoms added) = [1] ---------------------------------------------------- -] - POSCHARGE will try charges [0, -1, 1, -2, 2] -smiles='[Br-]' - POSCHARGE: charge 0 with smiles [Br-] -smiles='[Br-]' - POSCHARGE: charge 0 with smiles [Br-] -smiles='[Br-]' - POSCHARGE: charge 0 with smiles [Br-] -smiles='[Br-]' - POSCHARGE: charge 0 with smiles [Br-] -smiles='[Br-]' - POSCHARGE: charge 0 with smiles [Br-] - NEW SELECT FUNCTION: uncorr_total: [-1, -1, -1, -1, -1] - NEW SELECT FUNCTION: uncorr_abs_total: [1, 1, 1, 1, 1] - NEW SELECT FUNCTION: uncorr_abs_atcharge: [1, 1, 1, 1, 1] - NEW SELECT FUNCTION: uncorr_zwitt: [False, False, False, False, False] - NEW SELECT FUNCTION: coincide: [False, True, False, False, False] - NEW SELECT FUNCTION: listofmintot: [0, 1, 2, 3, 4] - NEW SELECT FUNCTION: listofminabs: [0, 1, 2, 3, 4] - NEW SELECT FUNCTION: tmplist: [1], including: - NEW SELECT FUNCTION: Corr_charge=-1 - NEW SELECT FUNCTION: Smiles=[Br-] - NEW SELECT FUNCTION: found corr_charges=[-1] - NEW SELECT FUNCTION: doing tgt_charge=-1 - NEW SELECT FUNCTION: charge_state added - NEW SELECT FUNCTION: Case 1, only one entry for -1 in tmplist -Target charge -1 of Br exists in [-1]. -------------- Cell2mol LIGAND Object -------------- - Version = 0.1 - Type = specie - Sub-Type = ligand - Number of Atoms = 1 - Formula = Br - Has Adjacency Matrix = YES - Total Charge = -1 - Smiles = [Br-] - Origin = split_complex - Number of Groups = 1 ---------------------------------------------------- - [3, 4, 9, 10, 13, 14, 17, 18] -1 -Target charge -1 of Br exists in [-1]. -Br -LIGAND.SPLIT_LIGAND: self.indices=[0] -LIGAND.SPLIT_LIGAND: conn_idx=[0] -LIGAND.SPLIT_LIGAND: conn_labels=['Br'] -LIGAND.SPLIT_LIGAND: conn_coord=[[20.8737687, -0.8921242, 11.632862]] -LIGAND.SPLIT_LIGAND: conn_radii=[1.2] -blocklist=[[0]] -LIGAND.SPLIT_LIGAND: block=[0] -ADD_ATOM: Metalist length 1 -ADD_ATOM: Ligand Atoms 1 -ADD_ATOM: site= 0 -ADD_ATOM: target ligand atom Br -ADD_ATOM: evaluating apos=array([20.8737687, -0.8921242, 11.632862 ]) and tgt.coord=[21.2990053, -3.2485743, 11.3343415] -ADD_ATOM: Chosen Metal index None. H is added at site 0 -LIGAND.SPLIT_LIGAND: group is found ------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 1 - Formula = Br - Has Adjacency Matrix = YES - Origin = split_ligand - Number of Metals = 1 ---------------------------------------------------- - -LIGAND.SPLIT_LIGAND: final groups self.groups=[------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 1 - Formula = Br - Has Adjacency Matrix = YES - Origin = split_ligand - Number of Metals = 1 ---------------------------------------------------- -] - GET_PROTONATION_STATES: evaluating non-haptic group with index 0 and label Br -protonation_states=[------------- Cell2mol Protonation ---------------- - Status = True - Labels = ['Br'] - Type = Local - Atoms added in positions = [0] - Atoms blocked (no atoms added) = [1] ---------------------------------------------------- -] - POSCHARGE will try charges [0, -1, 1, -2, 2] -smiles='[Br-]' - POSCHARGE: charge 0 with smiles [Br-] -smiles='[Br-]' - POSCHARGE: charge 0 with smiles [Br-] -smiles='[Br-]' - POSCHARGE: charge 0 with smiles [Br-] -smiles='[Br-]' - POSCHARGE: charge 0 with smiles [Br-] -smiles='[Br-]' - POSCHARGE: charge 0 with smiles [Br-] - NEW SELECT FUNCTION: uncorr_total: [-1, -1, -1, -1, -1] - NEW SELECT FUNCTION: uncorr_abs_total: [1, 1, 1, 1, 1] - NEW SELECT FUNCTION: uncorr_abs_atcharge: [1, 1, 1, 1, 1] - NEW SELECT FUNCTION: uncorr_zwitt: [False, False, False, False, False] - NEW SELECT FUNCTION: coincide: [False, True, False, False, False] - NEW SELECT FUNCTION: listofmintot: [0, 1, 2, 3, 4] - NEW SELECT FUNCTION: listofminabs: [0, 1, 2, 3, 4] - NEW SELECT FUNCTION: tmplist: [1], including: - NEW SELECT FUNCTION: Corr_charge=-1 - NEW SELECT FUNCTION: Smiles=[Br-] - NEW SELECT FUNCTION: found corr_charges=[-1] - NEW SELECT FUNCTION: doing tgt_charge=-1 - NEW SELECT FUNCTION: charge_state added - NEW SELECT FUNCTION: Case 1, only one entry for -1 in tmplist -Target charge -1 of Br exists in [-1]. -------------- Cell2mol METAL Object -------------- - Version = 0.1 - Type = atom - Sub-Type = metal - Label = Fe - Atomic Number = 26 - Index in Molecule = 2 - Metal Adjacency (mconnec) = 5 - Regular Adjacencies (connec) = 5 - Atom Charge = 2.0 - Coordination Sphere Formula = C-N2-Br2 - Possible Charges = [2, 3] ----------------------------------------------------- - [5, 11, 15, 19] 2 -Target charge 2 of Fe exists in [2, 3]. -Fe -Target charge 2 of Fe exists in [2, 3]. -CELL.CREATE_BONDS: Creating Bonds for molecule H36-C16-N - -CREATE BONDS: Number of atoms in molecule object and RDKit MOL are equal: 53 53 -idx=0 C Number of bonds : 4 -C C : 0 , H H : 1 , 1.0 -BOND CREATED 0 0 1 1.0 C H -C C : 0 , H H : 2 , 1.0 -BOND CREATED 0 0 2 1.0 C H -C C : 0 , C C : 3 , 1.0 -BOND CREATED 0 0 3 1.0 C C -C C : 0 , C C : 13 , 1.0 -BOND CREATED 0 0 13 1.0 C C -BONDS [('C', 'H', 1.0, 0.969), ('C', 'H', 1.0, 0.972), ('C', 'C', 1.0, 1.528), ('C', 'C', 1.0, 1.517)] -idx=1 H Number of bonds : 1 -C C : 0 , H H : 1 , 1.0 -BOND CREATED 1 1 0 1.0 H C -BONDS [('H', 'C', 1.0, 0.969)] -idx=2 H Number of bonds : 1 -C C : 0 , H H : 2 , 1.0 -BOND CREATED 2 2 0 1.0 H C -BONDS [('H', 'C', 1.0, 0.972)] -idx=3 C Number of bonds : 4 -C C : 0 , C C : 3 , 1.0 -BOND CREATED 3 3 0 1.0 C C -C C : 3 , H H : 4 , 1.0 -BOND CREATED 3 3 4 1.0 C H -C C : 3 , H H : 5 , 1.0 -BOND CREATED 3 3 5 1.0 C H -C C : 3 , C C : 9 , 1.0 -BOND CREATED 3 3 9 1.0 C C -BONDS [('C', 'C', 1.0, 1.528), ('C', 'H', 1.0, 0.969), ('C', 'H', 1.0, 0.97), ('C', 'C', 1.0, 1.517)] -idx=4 H Number of bonds : 1 -C C : 3 , H H : 4 , 1.0 -BOND CREATED 4 4 3 1.0 H C -BONDS [('H', 'C', 1.0, 0.969)] -idx=5 H Number of bonds : 1 -C C : 3 , H H : 5 , 1.0 -BOND CREATED 5 5 3 1.0 H C -BONDS [('H', 'C', 1.0, 0.97)] -idx=6 C Number of bonds : 4 -C C : 6 , H H : 7 , 1.0 -BOND CREATED 6 6 7 1.0 C H -C C : 6 , H H : 8 , 1.0 -BOND CREATED 6 6 8 1.0 C H -C C : 6 , C C : 16 , 1.0 -BOND CREATED 6 6 16 1.0 C C -C C : 6 , C C : 19 , 1.0 -BOND CREATED 6 6 19 1.0 C C -BONDS [('C', 'H', 1.0, 0.971), ('C', 'H', 1.0, 0.97), ('C', 'C', 1.0, 1.517), ('C', 'C', 1.0, 1.519)] -idx=7 H Number of bonds : 1 -C C : 6 , H H : 7 , 1.0 -BOND CREATED 7 7 6 1.0 H C -BONDS [('H', 'C', 1.0, 0.971)] -idx=8 H Number of bonds : 1 -C C : 6 , H H : 8 , 1.0 -BOND CREATED 8 8 6 1.0 H C -BONDS [('H', 'C', 1.0, 0.97)] -idx=9 C Number of bonds : 4 -C C : 3 , C C : 9 , 1.0 -BOND CREATED 9 9 3 1.0 C C -C C : 9 , H H : 10 , 1.0 -BOND CREATED 9 9 10 1.0 C H -C C : 9 , H H : 11 , 1.0 -BOND CREATED 9 9 11 1.0 C H -C C : 9 , H H : 12 , 1.0 -BOND CREATED 9 9 12 1.0 C H -BONDS [('C', 'C', 1.0, 1.517), ('C', 'H', 1.0, 0.96), ('C', 'H', 1.0, 0.962), ('C', 'H', 1.0, 0.96)] -idx=10 H Number of bonds : 1 -C C : 9 , H H : 10 , 1.0 -BOND CREATED 10 10 9 1.0 H C -BONDS [('H', 'C', 1.0, 0.96)] -idx=11 H Number of bonds : 1 -C C : 9 , H H : 11 , 1.0 -BOND CREATED 11 11 9 1.0 H C -BONDS [('H', 'C', 1.0, 0.962)] -idx=12 H Number of bonds : 1 -C C : 9 , H H : 12 , 1.0 -BOND CREATED 12 12 9 1.0 H C -BONDS [('H', 'C', 1.0, 0.96)] -idx=13 C Number of bonds : 4 -C C : 0 , C C : 13 , 1.0 -BOND CREATED 13 13 0 1.0 C C -C C : 13 , H H : 14 , 1.0 -BOND CREATED 13 13 14 1.0 C H -C C : 13 , H H : 15 , 1.0 -BOND CREATED 13 13 15 1.0 C H -C C : 13 , N N : 35 , 1.0 -BOND CREATED 13 13 35 1.0 C N -BONDS [('C', 'C', 1.0, 1.517), ('C', 'H', 1.0, 0.97), ('C', 'H', 1.0, 0.97), ('C', 'N', 1.0, 1.518)] -idx=14 H Number of bonds : 1 -C C : 13 , H H : 14 , 1.0 -BOND CREATED 14 14 13 1.0 H C -BONDS [('H', 'C', 1.0, 0.97)] -idx=15 H Number of bonds : 1 -C C : 13 , H H : 15 , 1.0 -BOND CREATED 15 15 13 1.0 H C -BONDS [('H', 'C', 1.0, 0.97)] -idx=16 C Number of bonds : 4 -C C : 6 , C C : 16 , 1.0 -BOND CREATED 16 16 6 1.0 C C -C C : 16 , H H : 17 , 1.0 -BOND CREATED 16 16 17 1.0 C H -C C : 16 , H H : 18 , 1.0 -BOND CREATED 16 16 18 1.0 C H -C C : 16 , N N : 35 , 1.0 -BOND CREATED 16 16 35 1.0 C N -BONDS [('C', 'C', 1.0, 1.517), ('C', 'H', 1.0, 0.97), ('C', 'H', 1.0, 0.969), ('C', 'N', 1.0, 1.524)] -idx=17 H Number of bonds : 1 -C C : 16 , H H : 17 , 1.0 -BOND CREATED 17 17 16 1.0 H C -BONDS [('H', 'C', 1.0, 0.97)] -idx=18 H Number of bonds : 1 -C C : 16 , H H : 18 , 1.0 -BOND CREATED 18 18 16 1.0 H C -BONDS [('H', 'C', 1.0, 0.969)] -idx=19 C Number of bonds : 4 -C C : 6 , C C : 19 , 1.0 -BOND CREATED 19 19 6 1.0 C C -C C : 19 , H H : 20 , 1.0 -BOND CREATED 19 19 20 1.0 C H -C C : 19 , H H : 21 , 1.0 -BOND CREATED 19 19 21 1.0 C H -C C : 19 , C C : 22 , 1.0 -BOND CREATED 19 19 22 1.0 C C -BONDS [('C', 'C', 1.0, 1.519), ('C', 'H', 1.0, 0.971), ('C', 'H', 1.0, 0.969), ('C', 'C', 1.0, 1.519)] -idx=20 H Number of bonds : 1 -C C : 19 , H H : 20 , 1.0 -BOND CREATED 20 20 19 1.0 H C -BONDS [('H', 'C', 1.0, 0.971)] -idx=21 H Number of bonds : 1 -C C : 19 , H H : 21 , 1.0 -BOND CREATED 21 21 19 1.0 H C -BONDS [('H', 'C', 1.0, 0.969)] -idx=22 C Number of bonds : 4 -C C : 19 , C C : 22 , 1.0 -BOND CREATED 22 22 19 1.0 C C -C C : 22 , H H : 23 , 1.0 -BOND CREATED 22 22 23 1.0 C H -C C : 22 , H H : 24 , 1.0 -BOND CREATED 22 22 24 1.0 C H -C C : 22 , H H : 25 , 1.0 -BOND CREATED 22 22 25 1.0 C H -BONDS [('C', 'C', 1.0, 1.519), ('C', 'H', 1.0, 0.96), ('C', 'H', 1.0, 0.96), ('C', 'H', 1.0, 0.96)] -idx=23 H Number of bonds : 1 -C C : 22 , H H : 23 , 1.0 -BOND CREATED 23 23 22 1.0 H C -BONDS [('H', 'C', 1.0, 0.96)] -idx=24 H Number of bonds : 1 -C C : 22 , H H : 24 , 1.0 -BOND CREATED 24 24 22 1.0 H C -BONDS [('H', 'C', 1.0, 0.96)] -idx=25 H Number of bonds : 1 -C C : 22 , H H : 25 , 1.0 -BOND CREATED 25 25 22 1.0 H C -BONDS [('H', 'C', 1.0, 0.96)] -idx=26 C Number of bonds : 4 -C C : 26 , H H : 27 , 1.0 -BOND CREATED 26 26 27 1.0 C H -C C : 26 , H H : 28 , 1.0 -BOND CREATED 26 26 28 1.0 C H -C C : 26 , C C : 29 , 1.0 -BOND CREATED 26 26 29 1.0 C C -C C : 26 , C C : 32 , 1.0 -BOND CREATED 26 26 32 1.0 C C -BONDS [('C', 'H', 1.0, 0.969), ('C', 'H', 1.0, 0.971), ('C', 'C', 1.0, 1.519), ('C', 'C', 1.0, 1.518)] -idx=27 H Number of bonds : 1 -C C : 26 , H H : 27 , 1.0 -BOND CREATED 27 27 26 1.0 H C -BONDS [('H', 'C', 1.0, 0.969)] -idx=28 H Number of bonds : 1 -C C : 26 , H H : 28 , 1.0 -BOND CREATED 28 28 26 1.0 H C -BONDS [('H', 'C', 1.0, 0.971)] -idx=29 C Number of bonds : 4 -C C : 26 , C C : 29 , 1.0 -BOND CREATED 29 29 26 1.0 C C -C C : 29 , H H : 30 , 1.0 -BOND CREATED 29 29 30 1.0 C H -C C : 29 , H H : 31 , 1.0 -BOND CREATED 29 29 31 1.0 C H -C C : 29 , N N : 35 , 1.0 -BOND CREATED 29 29 35 1.0 C N -BONDS [('C', 'C', 1.0, 1.519), ('C', 'H', 1.0, 0.97), ('C', 'H', 1.0, 0.97), ('C', 'N', 1.0, 1.523)] -idx=30 H Number of bonds : 1 -C C : 29 , H H : 30 , 1.0 -BOND CREATED 30 30 29 1.0 H C -BONDS [('H', 'C', 1.0, 0.97)] -idx=31 H Number of bonds : 1 -C C : 29 , H H : 31 , 1.0 -BOND CREATED 31 31 29 1.0 H C -BONDS [('H', 'C', 1.0, 0.97)] -idx=32 C Number of bonds : 4 -C C : 26 , C C : 32 , 1.0 -BOND CREATED 32 32 26 1.0 C C -C C : 32 , H H : 33 , 1.0 -BOND CREATED 32 32 33 1.0 C H -C C : 32 , H H : 34 , 1.0 -BOND CREATED 32 32 34 1.0 C H -C C : 32 , C C : 36 , 1.0 -BOND CREATED 32 32 36 1.0 C C -BONDS [('C', 'C', 1.0, 1.518), ('C', 'H', 1.0, 0.971), ('C', 'H', 1.0, 0.97), ('C', 'C', 1.0, 1.519)] -idx=33 H Number of bonds : 1 -C C : 32 , H H : 33 , 1.0 -BOND CREATED 33 33 32 1.0 H C -BONDS [('H', 'C', 1.0, 0.971)] -idx=34 H Number of bonds : 1 -C C : 32 , H H : 34 , 1.0 -BOND CREATED 34 34 32 1.0 H C -BONDS [('H', 'C', 1.0, 0.97)] -idx=35 N Number of bonds : 4 -C C : 13 , N N : 35 , 1.0 -BOND CREATED 35 35 13 1.0 N C -C C : 16 , N N : 35 , 1.0 -BOND CREATED 35 35 16 1.0 N C -C C : 29 , N N : 35 , 1.0 -BOND CREATED 35 35 29 1.0 N C -N N : 35 , C C : 40 , 1.0 -BOND CREATED 35 35 40 1.0 N C -BONDS [('N', 'C', 1.0, 1.518), ('N', 'C', 1.0, 1.524), ('N', 'C', 1.0, 1.523), ('N', 'C', 1.0, 1.524)] -idx=36 C Number of bonds : 4 -C C : 32 , C C : 36 , 1.0 -BOND CREATED 36 36 32 1.0 C C -C C : 36 , H H : 37 , 1.0 -BOND CREATED 36 36 37 1.0 C H -C C : 36 , H H : 38 , 1.0 -BOND CREATED 36 36 38 1.0 C H -C C : 36 , H H : 39 , 1.0 -BOND CREATED 36 36 39 1.0 C H -BONDS [('C', 'C', 1.0, 1.519), ('C', 'H', 1.0, 0.96), ('C', 'H', 1.0, 0.96), ('C', 'H', 1.0, 0.959)] -idx=37 H Number of bonds : 1 -C C : 36 , H H : 37 , 1.0 -BOND CREATED 37 37 36 1.0 H C -BONDS [('H', 'C', 1.0, 0.96)] -idx=38 H Number of bonds : 1 -C C : 36 , H H : 38 , 1.0 -BOND CREATED 38 38 36 1.0 H C -BONDS [('H', 'C', 1.0, 0.96)] -idx=39 H Number of bonds : 1 -C C : 36 , H H : 39 , 1.0 -BOND CREATED 39 39 36 1.0 H C -BONDS [('H', 'C', 1.0, 0.959)] -idx=40 C Number of bonds : 4 -N N : 35 , C C : 40 , 1.0 -BOND CREATED 40 40 35 1.0 C N -C C : 40 , H H : 41 , 1.0 -BOND CREATED 40 40 41 1.0 C H -C C : 40 , H H : 42 , 1.0 -BOND CREATED 40 40 42 1.0 C H -C C : 40 , C C : 43 , 1.0 -BOND CREATED 40 40 43 1.0 C C -BONDS [('C', 'N', 1.0, 1.524), ('C', 'H', 1.0, 0.97), ('C', 'H', 1.0, 0.969), ('C', 'C', 1.0, 1.529)] -idx=41 H Number of bonds : 1 -C C : 40 , H H : 41 , 1.0 -BOND CREATED 41 41 40 1.0 H C -BONDS [('H', 'C', 1.0, 0.97)] -idx=42 H Number of bonds : 1 -C C : 40 , H H : 42 , 1.0 -BOND CREATED 42 42 40 1.0 H C -BONDS [('H', 'C', 1.0, 0.969)] -idx=43 C Number of bonds : 4 -C C : 40 , C C : 43 , 1.0 -BOND CREATED 43 43 40 1.0 C C -C C : 43 , H H : 44 , 1.0 -BOND CREATED 43 43 44 1.0 C H -C C : 43 , H H : 45 , 1.0 -BOND CREATED 43 43 45 1.0 C H -C C : 43 , C C : 46 , 1.0 -BOND CREATED 43 43 46 1.0 C C -BONDS [('C', 'C', 1.0, 1.529), ('C', 'H', 1.0, 0.972), ('C', 'H', 1.0, 0.971), ('C', 'C', 1.0, 1.529)] -idx=44 H Number of bonds : 1 -C C : 43 , H H : 44 , 1.0 -BOND CREATED 44 44 43 1.0 H C -BONDS [('H', 'C', 1.0, 0.972)] -idx=45 H Number of bonds : 1 -C C : 43 , H H : 45 , 1.0 -BOND CREATED 45 45 43 1.0 H C -BONDS [('H', 'C', 1.0, 0.971)] -idx=46 C Number of bonds : 4 -C C : 43 , C C : 46 , 1.0 -BOND CREATED 46 46 43 1.0 C C -C C : 46 , H H : 47 , 1.0 -BOND CREATED 46 46 47 1.0 C H -C C : 46 , H H : 48 , 1.0 -BOND CREATED 46 46 48 1.0 C H -C C : 46 , C C : 49 , 1.0 -BOND CREATED 46 46 49 1.0 C C -BONDS [('C', 'C', 1.0, 1.529), ('C', 'H', 1.0, 0.971), ('C', 'H', 1.0, 0.97), ('C', 'C', 1.0, 1.523)] -idx=47 H Number of bonds : 1 -C C : 46 , H H : 47 , 1.0 -BOND CREATED 47 47 46 1.0 H C -BONDS [('H', 'C', 1.0, 0.971)] -idx=48 H Number of bonds : 1 -C C : 46 , H H : 48 , 1.0 -BOND CREATED 48 48 46 1.0 H C -BONDS [('H', 'C', 1.0, 0.97)] -idx=49 C Number of bonds : 4 -C C : 46 , C C : 49 , 1.0 -BOND CREATED 49 49 46 1.0 C C -C C : 49 , H H : 50 , 1.0 -BOND CREATED 49 49 50 1.0 C H -C C : 49 , H H : 51 , 1.0 -BOND CREATED 49 49 51 1.0 C H -C C : 49 , H H : 52 , 1.0 -BOND CREATED 49 49 52 1.0 C H -BONDS [('C', 'C', 1.0, 1.523), ('C', 'H', 1.0, 0.96), ('C', 'H', 1.0, 0.961), ('C', 'H', 1.0, 0.959)] -idx=50 H Number of bonds : 1 -C C : 49 , H H : 50 , 1.0 -BOND CREATED 50 50 49 1.0 H C -BONDS [('H', 'C', 1.0, 0.96)] -idx=51 H Number of bonds : 1 -C C : 49 , H H : 51 , 1.0 -BOND CREATED 51 51 49 1.0 H C -BONDS [('H', 'C', 1.0, 0.961)] -idx=52 H Number of bonds : 1 -C C : 49 , H H : 52 , 1.0 -BOND CREATED 52 52 49 1.0 H C -BONDS [('H', 'C', 1.0, 0.959)] -CELL.CREATE_BONDS: Creating Bonds for molecule H36-C16-N - -CREATE BONDS: Number of atoms in molecule object and RDKit MOL are equal: 53 53 -idx=0 C Number of bonds : 4 -C C : 0 , H H : 1 , 1.0 -BOND CREATED 0 0 1 1.0 C H -C C : 0 , H H : 2 , 1.0 -BOND CREATED 0 0 2 1.0 C H -C C : 0 , C C : 3 , 1.0 -BOND CREATED 0 0 3 1.0 C C -C C : 0 , C C : 13 , 1.0 -BOND CREATED 0 0 13 1.0 C C -BONDS [('C', 'H', 1.0, 0.969), ('C', 'H', 1.0, 0.972), ('C', 'C', 1.0, 1.528), ('C', 'C', 1.0, 1.517)] -idx=1 H Number of bonds : 1 -C C : 0 , H H : 1 , 1.0 -BOND CREATED 1 1 0 1.0 H C -BONDS [('H', 'C', 1.0, 0.969)] -idx=2 H Number of bonds : 1 -C C : 0 , H H : 2 , 1.0 -BOND CREATED 2 2 0 1.0 H C -BONDS [('H', 'C', 1.0, 0.972)] -idx=3 C Number of bonds : 4 -C C : 0 , C C : 3 , 1.0 -BOND CREATED 3 3 0 1.0 C C -C C : 3 , H H : 4 , 1.0 -BOND CREATED 3 3 4 1.0 C H -C C : 3 , H H : 5 , 1.0 -BOND CREATED 3 3 5 1.0 C H -C C : 3 , C C : 9 , 1.0 -BOND CREATED 3 3 9 1.0 C C -BONDS [('C', 'C', 1.0, 1.528), ('C', 'H', 1.0, 0.969), ('C', 'H', 1.0, 0.97), ('C', 'C', 1.0, 1.517)] -idx=4 H Number of bonds : 1 -C C : 3 , H H : 4 , 1.0 -BOND CREATED 4 4 3 1.0 H C -BONDS [('H', 'C', 1.0, 0.969)] -idx=5 H Number of bonds : 1 -C C : 3 , H H : 5 , 1.0 -BOND CREATED 5 5 3 1.0 H C -BONDS [('H', 'C', 1.0, 0.97)] -idx=6 C Number of bonds : 4 -C C : 6 , H H : 7 , 1.0 -BOND CREATED 6 6 7 1.0 C H -C C : 6 , H H : 8 , 1.0 -BOND CREATED 6 6 8 1.0 C H -C C : 6 , C C : 16 , 1.0 -BOND CREATED 6 6 16 1.0 C C -C C : 6 , C C : 19 , 1.0 -BOND CREATED 6 6 19 1.0 C C -BONDS [('C', 'H', 1.0, 0.971), ('C', 'H', 1.0, 0.97), ('C', 'C', 1.0, 1.517), ('C', 'C', 1.0, 1.519)] -idx=7 H Number of bonds : 1 -C C : 6 , H H : 7 , 1.0 -BOND CREATED 7 7 6 1.0 H C -BONDS [('H', 'C', 1.0, 0.971)] -idx=8 H Number of bonds : 1 -C C : 6 , H H : 8 , 1.0 -BOND CREATED 8 8 6 1.0 H C -BONDS [('H', 'C', 1.0, 0.97)] -idx=9 C Number of bonds : 4 -C C : 3 , C C : 9 , 1.0 -BOND CREATED 9 9 3 1.0 C C -C C : 9 , H H : 10 , 1.0 -BOND CREATED 9 9 10 1.0 C H -C C : 9 , H H : 11 , 1.0 -BOND CREATED 9 9 11 1.0 C H -C C : 9 , H H : 12 , 1.0 -BOND CREATED 9 9 12 1.0 C H -BONDS [('C', 'C', 1.0, 1.517), ('C', 'H', 1.0, 0.96), ('C', 'H', 1.0, 0.962), ('C', 'H', 1.0, 0.96)] -idx=10 H Number of bonds : 1 -C C : 9 , H H : 10 , 1.0 -BOND CREATED 10 10 9 1.0 H C -BONDS [('H', 'C', 1.0, 0.96)] -idx=11 H Number of bonds : 1 -C C : 9 , H H : 11 , 1.0 -BOND CREATED 11 11 9 1.0 H C -BONDS [('H', 'C', 1.0, 0.962)] -idx=12 H Number of bonds : 1 -C C : 9 , H H : 12 , 1.0 -BOND CREATED 12 12 9 1.0 H C -BONDS [('H', 'C', 1.0, 0.96)] -idx=13 C Number of bonds : 4 -C C : 0 , C C : 13 , 1.0 -BOND CREATED 13 13 0 1.0 C C -C C : 13 , H H : 14 , 1.0 -BOND CREATED 13 13 14 1.0 C H -C C : 13 , H H : 15 , 1.0 -BOND CREATED 13 13 15 1.0 C H -C C : 13 , N N : 35 , 1.0 -BOND CREATED 13 13 35 1.0 C N -BONDS [('C', 'C', 1.0, 1.517), ('C', 'H', 1.0, 0.97), ('C', 'H', 1.0, 0.97), ('C', 'N', 1.0, 1.518)] -idx=14 H Number of bonds : 1 -C C : 13 , H H : 14 , 1.0 -BOND CREATED 14 14 13 1.0 H C -BONDS [('H', 'C', 1.0, 0.97)] -idx=15 H Number of bonds : 1 -C C : 13 , H H : 15 , 1.0 -BOND CREATED 15 15 13 1.0 H C -BONDS [('H', 'C', 1.0, 0.97)] -idx=16 C Number of bonds : 4 -C C : 6 , C C : 16 , 1.0 -BOND CREATED 16 16 6 1.0 C C -C C : 16 , H H : 17 , 1.0 -BOND CREATED 16 16 17 1.0 C H -C C : 16 , H H : 18 , 1.0 -BOND CREATED 16 16 18 1.0 C H -C C : 16 , N N : 35 , 1.0 -BOND CREATED 16 16 35 1.0 C N -BONDS [('C', 'C', 1.0, 1.517), ('C', 'H', 1.0, 0.97), ('C', 'H', 1.0, 0.969), ('C', 'N', 1.0, 1.524)] -idx=17 H Number of bonds : 1 -C C : 16 , H H : 17 , 1.0 -BOND CREATED 17 17 16 1.0 H C -BONDS [('H', 'C', 1.0, 0.97)] -idx=18 H Number of bonds : 1 -C C : 16 , H H : 18 , 1.0 -BOND CREATED 18 18 16 1.0 H C -BONDS [('H', 'C', 1.0, 0.969)] -idx=19 C Number of bonds : 4 -C C : 6 , C C : 19 , 1.0 -BOND CREATED 19 19 6 1.0 C C -C C : 19 , H H : 20 , 1.0 -BOND CREATED 19 19 20 1.0 C H -C C : 19 , H H : 21 , 1.0 -BOND CREATED 19 19 21 1.0 C H -C C : 19 , C C : 22 , 1.0 -BOND CREATED 19 19 22 1.0 C C -BONDS [('C', 'C', 1.0, 1.519), ('C', 'H', 1.0, 0.971), ('C', 'H', 1.0, 0.969), ('C', 'C', 1.0, 1.519)] -idx=20 H Number of bonds : 1 -C C : 19 , H H : 20 , 1.0 -BOND CREATED 20 20 19 1.0 H C -BONDS [('H', 'C', 1.0, 0.971)] -idx=21 H Number of bonds : 1 -C C : 19 , H H : 21 , 1.0 -BOND CREATED 21 21 19 1.0 H C -BONDS [('H', 'C', 1.0, 0.969)] -idx=22 C Number of bonds : 4 -C C : 19 , C C : 22 , 1.0 -BOND CREATED 22 22 19 1.0 C C -C C : 22 , H H : 23 , 1.0 -BOND CREATED 22 22 23 1.0 C H -C C : 22 , H H : 24 , 1.0 -BOND CREATED 22 22 24 1.0 C H -C C : 22 , H H : 25 , 1.0 -BOND CREATED 22 22 25 1.0 C H -BONDS [('C', 'C', 1.0, 1.519), ('C', 'H', 1.0, 0.96), ('C', 'H', 1.0, 0.96), ('C', 'H', 1.0, 0.96)] -idx=23 H Number of bonds : 1 -C C : 22 , H H : 23 , 1.0 -BOND CREATED 23 23 22 1.0 H C -BONDS [('H', 'C', 1.0, 0.96)] -idx=24 H Number of bonds : 1 -C C : 22 , H H : 24 , 1.0 -BOND CREATED 24 24 22 1.0 H C -BONDS [('H', 'C', 1.0, 0.96)] -idx=25 H Number of bonds : 1 -C C : 22 , H H : 25 , 1.0 -BOND CREATED 25 25 22 1.0 H C -BONDS [('H', 'C', 1.0, 0.96)] -idx=26 C Number of bonds : 4 -C C : 26 , H H : 27 , 1.0 -BOND CREATED 26 26 27 1.0 C H -C C : 26 , H H : 28 , 1.0 -BOND CREATED 26 26 28 1.0 C H -C C : 26 , C C : 29 , 1.0 -BOND CREATED 26 26 29 1.0 C C -C C : 26 , C C : 32 , 1.0 -BOND CREATED 26 26 32 1.0 C C -BONDS [('C', 'H', 1.0, 0.969), ('C', 'H', 1.0, 0.971), ('C', 'C', 1.0, 1.519), ('C', 'C', 1.0, 1.518)] -idx=27 H Number of bonds : 1 -C C : 26 , H H : 27 , 1.0 -BOND CREATED 27 27 26 1.0 H C -BONDS [('H', 'C', 1.0, 0.969)] -idx=28 H Number of bonds : 1 -C C : 26 , H H : 28 , 1.0 -BOND CREATED 28 28 26 1.0 H C -BONDS [('H', 'C', 1.0, 0.971)] -idx=29 C Number of bonds : 4 -C C : 26 , C C : 29 , 1.0 -BOND CREATED 29 29 26 1.0 C C -C C : 29 , H H : 30 , 1.0 -BOND CREATED 29 29 30 1.0 C H -C C : 29 , H H : 31 , 1.0 -BOND CREATED 29 29 31 1.0 C H -C C : 29 , N N : 35 , 1.0 -BOND CREATED 29 29 35 1.0 C N -BONDS [('C', 'C', 1.0, 1.519), ('C', 'H', 1.0, 0.97), ('C', 'H', 1.0, 0.97), ('C', 'N', 1.0, 1.523)] -idx=30 H Number of bonds : 1 -C C : 29 , H H : 30 , 1.0 -BOND CREATED 30 30 29 1.0 H C -BONDS [('H', 'C', 1.0, 0.97)] -idx=31 H Number of bonds : 1 -C C : 29 , H H : 31 , 1.0 -BOND CREATED 31 31 29 1.0 H C -BONDS [('H', 'C', 1.0, 0.97)] -idx=32 C Number of bonds : 4 -C C : 26 , C C : 32 , 1.0 -BOND CREATED 32 32 26 1.0 C C -C C : 32 , H H : 33 , 1.0 -BOND CREATED 32 32 33 1.0 C H -C C : 32 , H H : 34 , 1.0 -BOND CREATED 32 32 34 1.0 C H -C C : 32 , C C : 36 , 1.0 -BOND CREATED 32 32 36 1.0 C C -BONDS [('C', 'C', 1.0, 1.518), ('C', 'H', 1.0, 0.971), ('C', 'H', 1.0, 0.97), ('C', 'C', 1.0, 1.519)] -idx=33 H Number of bonds : 1 -C C : 32 , H H : 33 , 1.0 -BOND CREATED 33 33 32 1.0 H C -BONDS [('H', 'C', 1.0, 0.971)] -idx=34 H Number of bonds : 1 -C C : 32 , H H : 34 , 1.0 -BOND CREATED 34 34 32 1.0 H C -BONDS [('H', 'C', 1.0, 0.97)] -idx=35 N Number of bonds : 4 -C C : 13 , N N : 35 , 1.0 -BOND CREATED 35 35 13 1.0 N C -C C : 16 , N N : 35 , 1.0 -BOND CREATED 35 35 16 1.0 N C -C C : 29 , N N : 35 , 1.0 -BOND CREATED 35 35 29 1.0 N C -N N : 35 , C C : 40 , 1.0 -BOND CREATED 35 35 40 1.0 N C -BONDS [('N', 'C', 1.0, 1.518), ('N', 'C', 1.0, 1.524), ('N', 'C', 1.0, 1.523), ('N', 'C', 1.0, 1.524)] -idx=36 C Number of bonds : 4 -C C : 32 , C C : 36 , 1.0 -BOND CREATED 36 36 32 1.0 C C -C C : 36 , H H : 37 , 1.0 -BOND CREATED 36 36 37 1.0 C H -C C : 36 , H H : 38 , 1.0 -BOND CREATED 36 36 38 1.0 C H -C C : 36 , H H : 39 , 1.0 -BOND CREATED 36 36 39 1.0 C H -BONDS [('C', 'C', 1.0, 1.519), ('C', 'H', 1.0, 0.96), ('C', 'H', 1.0, 0.96), ('C', 'H', 1.0, 0.959)] -idx=37 H Number of bonds : 1 -C C : 36 , H H : 37 , 1.0 -BOND CREATED 37 37 36 1.0 H C -BONDS [('H', 'C', 1.0, 0.96)] -idx=38 H Number of bonds : 1 -C C : 36 , H H : 38 , 1.0 -BOND CREATED 38 38 36 1.0 H C -BONDS [('H', 'C', 1.0, 0.96)] -idx=39 H Number of bonds : 1 -C C : 36 , H H : 39 , 1.0 -BOND CREATED 39 39 36 1.0 H C -BONDS [('H', 'C', 1.0, 0.959)] -idx=40 C Number of bonds : 4 -N N : 35 , C C : 40 , 1.0 -BOND CREATED 40 40 35 1.0 C N -C C : 40 , H H : 41 , 1.0 -BOND CREATED 40 40 41 1.0 C H -C C : 40 , H H : 42 , 1.0 -BOND CREATED 40 40 42 1.0 C H -C C : 40 , C C : 43 , 1.0 -BOND CREATED 40 40 43 1.0 C C -BONDS [('C', 'N', 1.0, 1.524), ('C', 'H', 1.0, 0.97), ('C', 'H', 1.0, 0.969), ('C', 'C', 1.0, 1.529)] -idx=41 H Number of bonds : 1 -C C : 40 , H H : 41 , 1.0 -BOND CREATED 41 41 40 1.0 H C -BONDS [('H', 'C', 1.0, 0.97)] -idx=42 H Number of bonds : 1 -C C : 40 , H H : 42 , 1.0 -BOND CREATED 42 42 40 1.0 H C -BONDS [('H', 'C', 1.0, 0.969)] -idx=43 C Number of bonds : 4 -C C : 40 , C C : 43 , 1.0 -BOND CREATED 43 43 40 1.0 C C -C C : 43 , H H : 44 , 1.0 -BOND CREATED 43 43 44 1.0 C H -C C : 43 , H H : 45 , 1.0 -BOND CREATED 43 43 45 1.0 C H -C C : 43 , C C : 46 , 1.0 -BOND CREATED 43 43 46 1.0 C C -BONDS [('C', 'C', 1.0, 1.529), ('C', 'H', 1.0, 0.972), ('C', 'H', 1.0, 0.971), ('C', 'C', 1.0, 1.529)] -idx=44 H Number of bonds : 1 -C C : 43 , H H : 44 , 1.0 -BOND CREATED 44 44 43 1.0 H C -BONDS [('H', 'C', 1.0, 0.972)] -idx=45 H Number of bonds : 1 -C C : 43 , H H : 45 , 1.0 -BOND CREATED 45 45 43 1.0 H C -BONDS [('H', 'C', 1.0, 0.971)] -idx=46 C Number of bonds : 4 -C C : 43 , C C : 46 , 1.0 -BOND CREATED 46 46 43 1.0 C C -C C : 46 , H H : 47 , 1.0 -BOND CREATED 46 46 47 1.0 C H -C C : 46 , H H : 48 , 1.0 -BOND CREATED 46 46 48 1.0 C H -C C : 46 , C C : 49 , 1.0 -BOND CREATED 46 46 49 1.0 C C -BONDS [('C', 'C', 1.0, 1.529), ('C', 'H', 1.0, 0.971), ('C', 'H', 1.0, 0.97), ('C', 'C', 1.0, 1.523)] -idx=47 H Number of bonds : 1 -C C : 46 , H H : 47 , 1.0 -BOND CREATED 47 47 46 1.0 H C -BONDS [('H', 'C', 1.0, 0.971)] -idx=48 H Number of bonds : 1 -C C : 46 , H H : 48 , 1.0 -BOND CREATED 48 48 46 1.0 H C -BONDS [('H', 'C', 1.0, 0.97)] -idx=49 C Number of bonds : 4 -C C : 46 , C C : 49 , 1.0 -BOND CREATED 49 49 46 1.0 C C -C C : 49 , H H : 50 , 1.0 -BOND CREATED 49 49 50 1.0 C H -C C : 49 , H H : 51 , 1.0 -BOND CREATED 49 49 51 1.0 C H -C C : 49 , H H : 52 , 1.0 -BOND CREATED 49 49 52 1.0 C H -BONDS [('C', 'C', 1.0, 1.523), ('C', 'H', 1.0, 0.96), ('C', 'H', 1.0, 0.961), ('C', 'H', 1.0, 0.959)] -idx=50 H Number of bonds : 1 -C C : 49 , H H : 50 , 1.0 -BOND CREATED 50 50 49 1.0 H C -BONDS [('H', 'C', 1.0, 0.96)] -idx=51 H Number of bonds : 1 -C C : 49 , H H : 51 , 1.0 -BOND CREATED 51 51 49 1.0 H C -BONDS [('H', 'C', 1.0, 0.961)] -idx=52 H Number of bonds : 1 -C C : 49 , H H : 52 , 1.0 -BOND CREATED 52 52 49 1.0 H C -BONDS [('H', 'C', 1.0, 0.959)] -CELL.CREATE_BONDS: Creating Bonds for molecule H27-C37-N2-Fe-Br2 - -CREATE BONDS: Number of atoms in ligand object and RDKit MOL are different: 66 68 -[(0, 'C'), (1, 'C'), (2, 'C'), (3, 'C'), (4, 'H'), (5, 'C'), (6, 'H'), (7, 'C'), (8, 'C'), (9, 'C'), (10, 'H'), (11, 'C'), (12, 'H'), (13, 'C'), (14, 'H'), (15, 'C'), (16, 'H'), (17, 'C'), (18, 'C'), (19, 'C'), (20, 'H'), (21, 'C'), (22, 'C'), (23, 'H'), (24, 'C'), (25, 'H'), (26, 'C'), (27, 'H'), (28, 'C'), (29, 'H'), (30, 'C'), (31, 'H'), (32, 'C'), (33, 'C'), (34, 'H'), (35, 'C'), (36, 'H'), (37, 'C'), (38, 'H'), (39, 'C'), (40, 'H'), (41, 'C'), (42, 'H'), (43, 'C'), (44, 'H'), (45, 'C'), (46, 'H'), (47, 'C'), (48, 'H'), (49, 'N'), (50, 'N'), (51, 'C'), (52, 'C'), (53, 'H'), (54, 'C'), (55, 'H'), (56, 'C'), (57, 'H'), (58, 'C'), (59, 'H'), (60, 'C'), (61, 'H'), (62, 'C'), (63, 'H'), (64, 'C'), (65, 'H')] -[(0, 'C'), (1, 'C'), (2, 'C'), (3, 'C'), (4, 'H'), (5, 'C'), (6, 'H'), (7, 'C'), (8, 'C'), (9, 'C'), (10, 'H'), (11, 'C'), (12, 'H'), (13, 'C'), (14, 'H'), (15, 'C'), (16, 'H'), (17, 'C'), (18, 'C'), (19, 'C'), (20, 'H'), (21, 'C'), (22, 'C'), (23, 'H'), (24, 'C'), (25, 'H'), (26, 'C'), (27, 'H'), (28, 'C'), (29, 'H'), (30, 'C'), (31, 'H'), (32, 'C'), (33, 'C'), (34, 'H'), (35, 'C'), (36, 'H'), (37, 'C'), (38, 'H'), (39, 'C'), (40, 'H'), (41, 'C'), (42, 'H'), (43, 'C'), (44, 'H'), (45, 'C'), (46, 'H'), (47, 'C'), (48, 'H'), (49, 'N'), (50, 'N'), (51, 'C'), (52, 'C'), (53, 'H'), (54, 'C'), (55, 'H'), (56, 'C'), (57, 'H'), (58, 'C'), (59, 'H'), (60, 'C'), (61, 'H'), (62, 'C'), (63, 'H'), (64, 'C'), (65, 'H'), (66, 'H'), (67, 'H')] -NON_BONDED_ATOMS [66, 67] -idx=0 C Number of bonds : 3 -C : 0 , C : 2 , 1.5 -BOND CREATED 0 0 2 1.5 C C -C : 0 , C : 3 , 1.5 -BOND CREATED 0 0 3 1.5 C C -C : 0 , C : 9 , 1.0 -BOND CREATED 0 0 9 1.0 C C -BONDS [('C', 'C', 1.5, 1.387), ('C', 'C', 1.5, 1.391), ('C', 'C', 1.0, 1.495)] -idx=1 C Number of bonds : 3 -C : 1 , C : 51 , 1.5 -BOND CREATED 1 1 51 1.5 C C -C : 1 , C : 56 , 1.0 -BOND CREATED 1 1 56 1.0 C C -C : 1 , C : 58 , 1.5 -BOND CREATED 1 1 58 1.5 C C -BONDS [('C', 'C', 1.5, 1.41), ('C', 'C', 1.0, 1.463), ('C', 'C', 1.5, 1.404)] -idx=2 C Number of bonds : 3 -C : 0 , C : 2 , 1.5 -BOND CREATED 2 2 0 1.5 C C -C : 2 , C : 35 , 1.5 -BOND CREATED 2 2 35 1.5 C C -C : 2 , H : 36 , 1.0 -BOND CREATED 2 2 36 1.0 C H -BONDS [('C', 'C', 1.5, 1.387), ('C', 'C', 1.5, 1.39), ('C', 'H', 1.0, 0.93)] -idx=3 C Number of bonds : 3 -C : 0 , C : 3 , 1.5 -BOND CREATED 3 3 0 1.5 C C -C : 3 , C : 41 , 1.5 -BOND CREATED 3 3 41 1.5 C C -C : 3 , H : 44 , 1.0 -BOND CREATED 3 3 44 1.0 C H -BONDS [('C', 'C', 1.5, 1.391), ('C', 'C', 1.5, 1.39), ('C', 'H', 1.0, 0.931)] -idx=4 H Number of bonds : 1 -H : 4 , C : 60 , 1.0 -BOND CREATED 4 4 60 1.0 H C -BONDS [('H', 'C', 1.0, 0.93)] -idx=5 C Number of bonds : 4 -C : 5 , H : 6 , 1.0 -BOND CREATED 5 5 6 1.0 C H -C : 5 , C : 18 , 1.0 -BOND CREATED 5 5 18 1.0 C C -C : 5 , N : 49 , 1.0 -BOND CREATED 5 5 49 1.0 C N -C : 5 , C : 51 , 1.0 -BOND CREATED 5 5 51 1.0 C C -BONDS [('C', 'H', 1.0, 0.979), ('C', 'C', 1.0, 1.52), ('C', 'N', 1.0, 1.456), ('C', 'C', 1.0, 1.528)] -idx=6 H Number of bonds : 1 -C : 5 , H : 6 , 1.0 -BOND CREATED 6 6 5 1.0 H C -BONDS [('H', 'C', 1.0, 0.979)] -idx=7 C Number of bonds : 3 -C : 7 , C : 37 , 1.0 -BOND CREATED 7 7 37 1.0 C C -C : 7 , C : 56 , 2.0 -BOND CREATED 7 7 56 2.0 C C -C : 7 , H : 57 , 1.0 -BOND CREATED 7 7 57 1.0 C H -BONDS [('C', 'C', 1.0, 1.466), ('C', 'C', 2.0, 1.333), ('C', 'H', 1.0, 0.93)] -idx=8 C Number of bonds : 3 -C : 8 , C : 30 , 1.5 -BOND CREATED 8 8 30 1.5 C C -C : 8 , C : 32 , 1.5 -BOND CREATED 8 8 32 1.5 C C -C : 8 , C : 52 , 1.0 -BOND CREATED 8 8 52 1.0 C C -BONDS [('C', 'C', 1.5, 1.399), ('C', 'C', 1.5, 1.406), ('C', 'C', 1.0, 1.524)] -idx=9 C Number of bonds : 3 -C : 0 , C : 9 , 1.0 -BOND CREATED 9 9 0 1.0 C C -C : 9 , N : 49 , 1.0 -BOND CREATED 9 9 49 1.0 C N -C : 9 , N : 50 , 2.0 -BOND CREATED 9 9 50 2.0 C N -BONDS [('C', 'C', 1.0, 1.495), ('C', 'N', 1.0, 1.332), ('C', 'N', 2.0, 1.332)] -idx=10 H Number of bonds : 1 -H : 10 , C : 26 , 1.0 -BOND CREATED 10 10 26 1.0 H C -BONDS [('H', 'C', 1.0, 0.93)] -idx=11 C Number of bonds : 3 -C : 11 , H : 12 , 1.0 -BOND CREATED 11 11 12 1.0 C H -C : 11 , C : 47 , 1.5 -BOND CREATED 11 11 47 1.5 C C -C : 11 , C : 51 , 1.5 -BOND CREATED 11 11 51 1.5 C C -BONDS [('C', 'H', 1.0, 0.93), ('C', 'C', 1.5, 1.387), ('C', 'C', 1.5, 1.392)] -idx=12 H Number of bonds : 1 -C : 11 , H : 12 , 1.0 -BOND CREATED 12 12 11 1.0 H C -BONDS [('H', 'C', 1.0, 0.93)] -idx=13 C Number of bonds : 3 -C : 13 , C : 17 , 1.0 -BOND CREATED 13 13 17 1.0 C C -C : 13 , C : 21 , 1.5 -BOND CREATED 13 13 21 1.5 C C -C : 13 , C : 24 , 1.5 -BOND CREATED 13 13 24 1.5 C C -BONDS [('C', 'C', 1.0, 1.463), ('C', 'C', 1.5, 1.41), ('C', 'C', 1.5, 1.397)] -idx=14 H Number of bonds : 1 -H : 14 , C : 24 , 1.0 -BOND CREATED 14 14 24 1.0 H C -BONDS [('H', 'C', 1.0, 0.93)] -idx=15 C Number of bonds : 3 -C : 15 , C : 21 , 1.5 -BOND CREATED 15 15 21 1.5 C C -C : 15 , H : 27 , 1.0 -BOND CREATED 15 15 27 1.0 C H -C : 15 , C : 28 , 1.5 -BOND CREATED 15 15 28 1.5 C C -BONDS [('C', 'C', 1.5, 1.39), ('C', 'H', 1.0, 0.93), ('C', 'C', 1.5, 1.389)] -idx=16 H Number of bonds : 1 -H : 16 , C : 19 , 1.0 -BOND CREATED 16 16 19 1.0 H C -BONDS [('H', 'C', 1.0, 0.93)] -idx=17 C Number of bonds : 3 -C : 13 , C : 17 , 1.0 -BOND CREATED 17 17 13 1.0 C C -C : 17 , C : 22 , 2.0 -BOND CREATED 17 17 22 2.0 C C -C : 17 , H : 42 , 1.0 -BOND CREATED 17 17 42 1.0 C H -BONDS [('C', 'C', 1.0, 1.463), ('C', 'C', 2.0, 1.339), ('C', 'H', 1.0, 0.931)] -idx=18 C Number of bonds : 3 -C : 5 , C : 18 , 1.0 -BOND CREATED 18 18 5 1.0 C C -C : 18 , C : 26 , 1.5 -BOND CREATED 18 18 26 1.5 C C -C : 18 , C : 37 , 1.5 -BOND CREATED 18 18 37 1.5 C C -BONDS [('C', 'C', 1.0, 1.52), ('C', 'C', 1.5, 1.393), ('C', 'C', 1.5, 1.412)] -idx=19 C Number of bonds : 3 -H : 16 , C : 19 , 1.0 -BOND CREATED 19 19 16 1.0 C H -C : 19 , C : 30 , 1.5 -BOND CREATED 19 19 30 1.5 C C -C : 19 , C : 62 , 1.5 -BOND CREATED 19 19 62 1.5 C C -BONDS [('C', 'H', 1.0, 0.93), ('C', 'C', 1.5, 1.389), ('C', 'C', 1.5, 1.386)] -idx=20 H Number of bonds : 1 -H : 20 , C : 47 , 1.0 -BOND CREATED 20 20 47 1.0 H C -BONDS [('H', 'C', 1.0, 0.93)] -idx=21 C Number of bonds : 3 -C : 13 , C : 21 , 1.5 -BOND CREATED 21 21 13 1.5 C C -C : 15 , C : 21 , 1.5 -BOND CREATED 21 21 15 1.5 C C -C : 21 , C : 52 , 1.0 -BOND CREATED 21 21 52 1.0 C C -BONDS [('C', 'C', 1.5, 1.41), ('C', 'C', 1.5, 1.39), ('C', 'C', 1.0, 1.522)] -idx=22 C Number of bonds : 3 -C : 17 , C : 22 , 2.0 -BOND CREATED 22 22 17 2.0 C C -C : 22 , H : 23 , 1.0 -BOND CREATED 22 22 23 1.0 C H -C : 22 , C : 32 , 1.0 -BOND CREATED 22 22 32 1.0 C C -BONDS [('C', 'C', 2.0, 1.339), ('C', 'H', 1.0, 0.93), ('C', 'C', 1.0, 1.465)] -idx=23 H Number of bonds : 1 -C : 22 , H : 23 , 1.0 -BOND CREATED 23 23 22 1.0 H C -BONDS [('H', 'C', 1.0, 0.93)] -idx=24 C Number of bonds : 3 -C : 13 , C : 24 , 1.5 -BOND CREATED 24 24 13 1.5 C C -H : 14 , C : 24 , 1.0 -BOND CREATED 24 24 14 1.0 C H -C : 24 , C : 43 , 1.5 -BOND CREATED 24 24 43 1.5 C C -BONDS [('C', 'C', 1.5, 1.397), ('C', 'H', 1.0, 0.93), ('C', 'C', 1.5, 1.38)] -idx=25 H Number of bonds : 1 -H : 25 , C : 43 , 1.0 -BOND CREATED 25 25 43 1.0 H C -BONDS [('H', 'C', 1.0, 0.93)] -idx=26 C Number of bonds : 3 -H : 10 , C : 26 , 1.0 -BOND CREATED 26 26 10 1.0 C H -C : 18 , C : 26 , 1.5 -BOND CREATED 26 26 18 1.5 C C -C : 26 , C : 64 , 1.5 -BOND CREATED 26 26 64 1.5 C C -BONDS [('C', 'H', 1.0, 0.93), ('C', 'C', 1.5, 1.393), ('C', 'C', 1.5, 1.385)] -idx=27 H Number of bonds : 1 -C : 15 , H : 27 , 1.0 -BOND CREATED 27 27 15 1.0 H C -BONDS [('H', 'C', 1.0, 0.93)] -idx=28 C Number of bonds : 3 -C : 15 , C : 28 , 1.5 -BOND CREATED 28 28 15 1.5 C C -C : 28 , H : 29 , 1.0 -BOND CREATED 28 28 29 1.0 C H -C : 28 , C : 43 , 1.5 -BOND CREATED 28 28 43 1.5 C C -BONDS [('C', 'C', 1.5, 1.389), ('C', 'H', 1.0, 0.93), ('C', 'C', 1.5, 1.387)] -idx=29 H Number of bonds : 1 -C : 28 , H : 29 , 1.0 -BOND CREATED 29 29 28 1.0 H C -BONDS [('H', 'C', 1.0, 0.93)] -idx=30 C Number of bonds : 3 -C : 8 , C : 30 , 1.5 -BOND CREATED 30 30 8 1.5 C C -C : 19 , C : 30 , 1.5 -BOND CREATED 30 30 19 1.5 C C -C : 30 , H : 31 , 1.0 -BOND CREATED 30 30 31 1.0 C H -BONDS [('C', 'C', 1.5, 1.399), ('C', 'C', 1.5, 1.389), ('C', 'H', 1.0, 0.929)] -idx=31 H Number of bonds : 1 -C : 30 , H : 31 , 1.0 -BOND CREATED 31 31 30 1.0 H C -BONDS [('H', 'C', 1.0, 0.929)] -idx=32 C Number of bonds : 3 -C : 8 , C : 32 , 1.5 -BOND CREATED 32 32 8 1.5 C C -C : 22 , C : 32 , 1.0 -BOND CREATED 32 32 22 1.0 C C -C : 32 , C : 39 , 1.5 -BOND CREATED 32 32 39 1.5 C C -BONDS [('C', 'C', 1.5, 1.406), ('C', 'C', 1.0, 1.465), ('C', 'C', 1.5, 1.403)] -idx=33 C Number of bonds : 3 -C : 33 , H : 34 , 1.0 -BOND CREATED 33 33 34 1.0 C H -C : 33 , C : 37 , 1.5 -BOND CREATED 33 33 37 1.5 C C -C : 33 , C : 45 , 1.5 -BOND CREATED 33 33 45 1.5 C C -BONDS [('C', 'H', 1.0, 0.93), ('C', 'C', 1.5, 1.399), ('C', 'C', 1.5, 1.373)] -idx=34 H Number of bonds : 1 -C : 33 , H : 34 , 1.0 -BOND CREATED 34 34 33 1.0 H C -BONDS [('H', 'C', 1.0, 0.93)] -idx=35 C Number of bonds : 3 -C : 2 , C : 35 , 1.5 -BOND CREATED 35 35 2 1.5 C C -C : 35 , H : 55 , 1.0 -BOND CREATED 35 35 55 1.0 C H -C : 35 , C : 60 , 1.5 -BOND CREATED 35 35 60 1.5 C C -BONDS [('C', 'C', 1.5, 1.39), ('C', 'H', 1.0, 0.931), ('C', 'C', 1.5, 1.379)] -idx=36 H Number of bonds : 1 -C : 2 , H : 36 , 1.0 -BOND CREATED 36 36 2 1.0 H C -BONDS [('H', 'C', 1.0, 0.93)] -idx=37 C Number of bonds : 3 -C : 7 , C : 37 , 1.0 -BOND CREATED 37 37 7 1.0 C C -C : 18 , C : 37 , 1.5 -BOND CREATED 37 37 18 1.5 C C -C : 33 , C : 37 , 1.5 -BOND CREATED 37 37 33 1.5 C C -BONDS [('C', 'C', 1.0, 1.466), ('C', 'C', 1.5, 1.412), ('C', 'C', 1.5, 1.399)] -idx=38 H Number of bonds : 1 -H : 38 , C : 41 , 1.0 -BOND CREATED 38 38 41 1.0 H C -BONDS [('H', 'C', 1.0, 0.929)] -idx=39 C Number of bonds : 3 -C : 32 , C : 39 , 1.5 -BOND CREATED 39 39 32 1.5 C C -C : 39 , H : 40 , 1.0 -BOND CREATED 39 39 40 1.0 C H -C : 39 , C : 62 , 1.5 -BOND CREATED 39 39 62 1.5 C C -BONDS [('C', 'C', 1.5, 1.403), ('C', 'H', 1.0, 0.93), ('C', 'C', 1.5, 1.381)] -idx=40 H Number of bonds : 1 -C : 39 , H : 40 , 1.0 -BOND CREATED 40 40 39 1.0 H C -BONDS [('H', 'C', 1.0, 0.93)] -idx=41 C Number of bonds : 3 -C : 3 , C : 41 , 1.5 -BOND CREATED 41 41 3 1.5 C C -H : 38 , C : 41 , 1.0 -BOND CREATED 41 41 38 1.0 C H -C : 41 , C : 60 , 1.5 -BOND CREATED 41 41 60 1.5 C C -BONDS [('C', 'C', 1.5, 1.39), ('C', 'H', 1.0, 0.929), ('C', 'C', 1.5, 1.382)] -idx=42 H Number of bonds : 1 -C : 17 , H : 42 , 1.0 -BOND CREATED 42 42 17 1.0 H C -BONDS [('H', 'C', 1.0, 0.931)] -idx=43 C Number of bonds : 3 -C : 24 , C : 43 , 1.5 -BOND CREATED 43 43 24 1.5 C C -H : 25 , C : 43 , 1.0 -BOND CREATED 43 43 25 1.0 C H -C : 28 , C : 43 , 1.5 -BOND CREATED 43 43 28 1.5 C C -BONDS [('C', 'C', 1.5, 1.38), ('C', 'H', 1.0, 0.93), ('C', 'C', 1.5, 1.387)] -idx=44 H Number of bonds : 1 -C : 3 , H : 44 , 1.0 -BOND CREATED 44 44 3 1.0 H C -BONDS [('H', 'C', 1.0, 0.931)] -idx=45 C Number of bonds : 3 -C : 33 , C : 45 , 1.5 -BOND CREATED 45 45 33 1.5 C C -C : 45 , H : 46 , 1.0 -BOND CREATED 45 45 46 1.0 C H -C : 45 , C : 64 , 1.5 -BOND CREATED 45 45 64 1.5 C C -BONDS [('C', 'C', 1.5, 1.373), ('C', 'H', 1.0, 0.929), ('C', 'C', 1.5, 1.394)] -idx=46 H Number of bonds : 1 -C : 45 , H : 46 , 1.0 -BOND CREATED 46 46 45 1.0 H C -BONDS [('H', 'C', 1.0, 0.929)] -idx=47 C Number of bonds : 3 -C : 11 , C : 47 , 1.5 -BOND CREATED 47 47 11 1.5 C C -H : 20 , C : 47 , 1.0 -BOND CREATED 47 47 20 1.0 C H -C : 47 , C : 54 , 1.5 -BOND CREATED 47 47 54 1.5 C C -BONDS [('C', 'C', 1.5, 1.387), ('C', 'H', 1.0, 0.93), ('C', 'C', 1.5, 1.387)] -idx=48 H Number of bonds : 1 -H : 48 , C : 54 , 1.0 -BOND CREATED 48 48 54 1.0 H C -BONDS [('H', 'C', 1.0, 0.929)] -idx=49 N Number of bonds : 3 -C : 5 , N : 49 , 1.0 -BOND CREATED 49 49 5 1.0 N C -C : 9 , N : 49 , 1.0 -BOND CREATED 49 49 9 1.0 N C -N : 49 , H : 66 , 1.0 -NO BOND CREATED bond_startatom=49 or bond_endatom=66 is not in the specie.atoms. It belongs to non_bonded_atoms=[66, 67]. -BONDS [('N', 'C', 1.0, 1.456), ('N', 'C', 1.0, 1.332)] -idx=50 N Number of bonds : 3 -C : 9 , N : 50 , 2.0 -BOND CREATED 50 50 9 2.0 N C -N : 50 , C : 52 , 1.0 -BOND CREATED 50 50 52 1.0 N C -N : 50 , H : 67 , 1.0 -NO BOND CREATED bond_startatom=50 or bond_endatom=67 is not in the specie.atoms. It belongs to non_bonded_atoms=[66, 67]. -BONDS [('N', 'C', 2.0, 1.332), ('N', 'C', 1.0, 1.454)] -idx=51 C Number of bonds : 3 -C : 1 , C : 51 , 1.5 -BOND CREATED 51 51 1 1.5 C C -C : 5 , C : 51 , 1.0 -BOND CREATED 51 51 5 1.0 C C -C : 11 , C : 51 , 1.5 -BOND CREATED 51 51 11 1.5 C C -BONDS [('C', 'C', 1.5, 1.41), ('C', 'C', 1.0, 1.528), ('C', 'C', 1.5, 1.392)] -idx=52 C Number of bonds : 4 -C : 8 , C : 52 , 1.0 -BOND CREATED 52 52 8 1.0 C C -C : 21 , C : 52 , 1.0 -BOND CREATED 52 52 21 1.0 C C -N : 50 , C : 52 , 1.0 -BOND CREATED 52 52 50 1.0 C N -C : 52 , H : 53 , 1.0 -BOND CREATED 52 52 53 1.0 C H -BONDS [('C', 'C', 1.0, 1.524), ('C', 'C', 1.0, 1.522), ('C', 'N', 1.0, 1.454), ('C', 'H', 1.0, 0.98)] -idx=53 H Number of bonds : 1 -C : 52 , H : 53 , 1.0 -BOND CREATED 53 53 52 1.0 H C -BONDS [('H', 'C', 1.0, 0.98)] -idx=54 C Number of bonds : 3 -C : 47 , C : 54 , 1.5 -BOND CREATED 54 54 47 1.5 C C -H : 48 , C : 54 , 1.0 -BOND CREATED 54 54 48 1.0 C H -C : 54 , C : 58 , 1.5 -BOND CREATED 54 54 58 1.5 C C -BONDS [('C', 'C', 1.5, 1.387), ('C', 'H', 1.0, 0.929), ('C', 'C', 1.5, 1.374)] -idx=55 H Number of bonds : 1 -C : 35 , H : 55 , 1.0 -BOND CREATED 55 55 35 1.0 H C -BONDS [('H', 'C', 1.0, 0.931)] -idx=56 C Number of bonds : 3 -C : 1 , C : 56 , 1.0 -BOND CREATED 56 56 1 1.0 C C -C : 7 , C : 56 , 2.0 -BOND CREATED 56 56 7 2.0 C C -C : 56 , H : 61 , 1.0 -BOND CREATED 56 56 61 1.0 C H -BONDS [('C', 'C', 1.0, 1.463), ('C', 'C', 2.0, 1.333), ('C', 'H', 1.0, 0.931)] -idx=57 H Number of bonds : 1 -C : 7 , H : 57 , 1.0 -BOND CREATED 57 57 7 1.0 H C -BONDS [('H', 'C', 1.0, 0.93)] -idx=58 C Number of bonds : 3 -C : 1 , C : 58 , 1.5 -BOND CREATED 58 58 1 1.5 C C -C : 54 , C : 58 , 1.5 -BOND CREATED 58 58 54 1.5 C C -C : 58 , H : 59 , 1.0 -BOND CREATED 58 58 59 1.0 C H -BONDS [('C', 'C', 1.5, 1.404), ('C', 'C', 1.5, 1.374), ('C', 'H', 1.0, 0.93)] -idx=59 H Number of bonds : 1 -C : 58 , H : 59 , 1.0 -BOND CREATED 59 59 58 1.0 H C -BONDS [('H', 'C', 1.0, 0.93)] -idx=60 C Number of bonds : 3 -H : 4 , C : 60 , 1.0 -BOND CREATED 60 60 4 1.0 C H -C : 35 , C : 60 , 1.5 -BOND CREATED 60 60 35 1.5 C C -C : 41 , C : 60 , 1.5 -BOND CREATED 60 60 41 1.5 C C -BONDS [('C', 'H', 1.0, 0.93), ('C', 'C', 1.5, 1.379), ('C', 'C', 1.5, 1.382)] -idx=61 H Number of bonds : 1 -C : 56 , H : 61 , 1.0 -BOND CREATED 61 61 56 1.0 H C -BONDS [('H', 'C', 1.0, 0.931)] -idx=62 C Number of bonds : 3 -C : 19 , C : 62 , 1.5 -BOND CREATED 62 62 19 1.5 C C -C : 39 , C : 62 , 1.5 -BOND CREATED 62 62 39 1.5 C C -C : 62 , H : 63 , 1.0 -BOND CREATED 62 62 63 1.0 C H -BONDS [('C', 'C', 1.5, 1.386), ('C', 'C', 1.5, 1.381), ('C', 'H', 1.0, 0.93)] -idx=63 H Number of bonds : 1 -C : 62 , H : 63 , 1.0 -BOND CREATED 63 63 62 1.0 H C -BONDS [('H', 'C', 1.0, 0.93)] -idx=64 C Number of bonds : 3 -C : 26 , C : 64 , 1.5 -BOND CREATED 64 64 26 1.5 C C -C : 45 , C : 64 , 1.5 -BOND CREATED 64 64 45 1.5 C C -C : 64 , H : 65 , 1.0 -BOND CREATED 64 64 65 1.0 C H -BONDS [('C', 'C', 1.5, 1.385), ('C', 'C', 1.5, 1.394), ('C', 'H', 1.0, 0.93)] -idx=65 H Number of bonds : 1 -C : 64 , H : 65 , 1.0 -BOND CREATED 65 65 64 1.0 H C -BONDS [('H', 'C', 1.0, 0.93)] -idx=66 H Number of bonds : 1 -N : 49 , H : 66 , 1.0 -NO BOND CREATED bond_startatom=49 or bond_endatom=66 is not in the specie.atoms. It belongs to non_bonded_atoms=[66, 67]. -NO BONDS -idx=67 H Number of bonds : 1 -N : 50 , H : 67 , 1.0 -NO BOND CREATED bond_startatom=50 or bond_endatom=67 is not in the specie.atoms. It belongs to non_bonded_atoms=[66, 67]. -NO BONDS - -CREATE BONDS: Number of atoms in ligand object and RDKit MOL are equal: 1 1 -idx=0 Br Number of bonds : 0 -NO BONDS CREATED - -CREATE BONDS: Number of atoms in ligand object and RDKit MOL are equal: 1 1 -idx=0 Br Number of bonds : 0 -NO BONDS CREATED -CELL.CREATE_BONDS: error creating bonds for atom: -------------- Cell2mol ATOM Object ---------------- - Version = 0.1 - Type = atom - Label = C - Atomic Number = 6 - Index in Molecule = 12 - Index in Ligand = 9 - Metal Adjacency (mconnec) = 0 - Regular Adjacencies (connec) = 0 - Atom Charge = 0.0 ----------------------------------------------------- - - of ligand: -------------- Cell2mol LIGAND Object -------------- - Version = 0.1 - Type = specie - Sub-Type = ligand - Number of Atoms = 66 - Formula = H27-C37-N2 - Has Adjacency Matrix = YES - Total Charge = -1 - Smiles = [H]C1=C([H])c2c([H])c([H])c([H])c([H])c2C([H])(N([H])C(c2c([H])c([H])c([H])c([H])c2[H])=[N+]([H])C2([H])c3c([H])c([H])c([H])c([H])c3C([H])=C([H])c3c([H])c([H])c([H])c([H])c32)c2c([H])c([H])c([H])c([H])c21 - Origin = split_complex - Number of Groups = 2 ---------------------------------------------------- - - -CELL.CREATE_BONDS: count differs from atom.mconnec: 1, 0 -0 C -C C 1.5 -0 2 -C C 1.5 -0 3 -C C 1.0 -0 9 -1 C -C C 1.5 -1 51 -C C 1.0 -1 56 -C C 1.5 -1 58 -2 C -C C 1.5 -2 0 -C C 1.5 -2 35 -C H 1.0 -2 36 -3 C -C C 1.5 -3 0 -C C 1.5 -3 41 -C H 1.0 -3 44 -4 H -H C 1.0 -4 60 -5 C -C H 1.0 -5 6 -C C 1.0 -5 18 -C N 1.0 -5 49 -C C 1.0 -5 51 -6 H -H C 1.0 -6 5 -7 C -C C 1.0 -7 37 -C C 2.0 -7 56 -C H 1.0 -7 57 -8 C -C C 1.5 -8 30 -C C 1.5 -8 32 -C C 1.0 -8 52 -9 C -C C 1.0 -9 0 -C N 1.0 -9 49 -C N 2.0 -9 50 -Fe C 0 -10 H -H C 1.0 -10 26 -11 C -C H 1.0 -11 12 -C C 1.5 -11 47 -C C 1.5 -11 51 -12 H -H C 1.0 -12 11 -13 C -C C 1.0 -13 17 -C C 1.5 -13 21 -C C 1.5 -13 24 -14 H -H C 1.0 -14 24 -15 C -C C 1.5 -15 21 -C H 1.0 -15 27 -C C 1.5 -15 28 -16 H -H C 1.0 -16 19 -17 C -C C 1.0 -17 13 -C C 2.0 -17 22 -C H 1.0 -17 42 -18 C -C C 1.0 -18 5 -C C 1.5 -18 26 -C C 1.5 -18 37 -19 C -C H 1.0 -19 16 -C C 1.5 -19 30 -C C 1.5 -19 62 -20 H -H C 1.0 -20 47 -21 C -C C 1.5 -21 13 -C C 1.5 -21 15 -C C 1.0 -21 52 -22 C -C C 2.0 -22 17 -C H 1.0 -22 23 -C C 1.0 -22 32 -23 H -H C 1.0 -23 22 -24 C -C C 1.5 -24 13 -C H 1.0 -24 14 -C C 1.5 -24 43 -25 H -H C 1.0 -25 43 -26 C -C H 1.0 -26 10 -C C 1.5 -26 18 -C C 1.5 -26 64 -27 H -H C 1.0 -27 15 -28 C -C C 1.5 -28 15 -C H 1.0 -28 29 -C C 1.5 -28 43 -29 H -H C 1.0 -29 28 -30 C -C C 1.5 -30 8 -C C 1.5 -30 19 -C H 1.0 -30 31 -31 H -H C 1.0 -31 30 -32 C -C C 1.5 -32 8 -C C 1.0 -32 22 -C C 1.5 -32 39 -33 C -C H 1.0 -33 34 -C C 1.5 -33 37 -C C 1.5 -33 45 -34 H -H C 1.0 -34 33 -35 C -C C 1.5 -35 2 -C H 1.0 -35 55 -C C 1.5 -35 60 -36 H -H C 1.0 -36 2 -37 C -C C 1.0 -37 7 -C C 1.5 -37 18 -C C 1.5 -37 33 -38 H -H C 1.0 -38 41 -39 C -C C 1.5 -39 32 -C H 1.0 -39 40 -C C 1.5 -39 62 -40 H -H C 1.0 -40 39 -41 C -C C 1.5 -41 3 -C H 1.0 -41 38 -C C 1.5 -41 60 -42 H -H C 1.0 -42 17 -43 C -C C 1.5 -43 24 -C H 1.0 -43 25 -C C 1.5 -43 28 -44 H -H C 1.0 -44 3 -45 C -C C 1.5 -45 33 -C H 1.0 -45 46 -C C 1.5 -45 64 -46 H -H C 1.0 -46 45 -47 C -C C 1.5 -47 11 -C H 1.0 -47 20 -C C 1.5 -47 54 -48 H -H C 1.0 -48 54 -49 N -N C 1.0 -49 5 -N C 1.0 -49 9 -Fe N 0 -50 N -N C 2.0 -50 9 -N C 1.0 -50 52 -Fe N 0 -51 C -C C 1.5 -51 1 -C C 1.0 -51 5 -C C 1.5 -51 11 -52 C -C C 1.0 -52 8 -C C 1.0 -52 21 -C N 1.0 -52 50 -C H 1.0 -52 53 -53 H -H C 1.0 -53 52 -54 C -C C 1.5 -54 47 -C H 1.0 -54 48 -C C 1.5 -54 58 -55 H -H C 1.0 -55 35 -56 C -C C 1.0 -56 1 -C C 2.0 -56 7 -C H 1.0 -56 61 -57 H -H C 1.0 -57 7 -58 C -C C 1.5 -58 1 -C C 1.5 -58 54 -C H 1.0 -58 59 -59 H -H C 1.0 -59 58 -60 C -C H 1.0 -60 4 -C C 1.5 -60 35 -C C 1.5 -60 41 -61 H -H C 1.0 -61 56 -62 C -C C 1.5 -62 19 -C C 1.5 -62 39 -C H 1.0 -62 63 -63 H -H C 1.0 -63 62 -64 C -C C 1.5 -64 26 -C C 1.5 -64 45 -C H 1.0 -64 65 -65 H -H C 1.0 -65 64 - -0 Br -Br Fe 0 - -0 Br -Br Fe 0 - -CELL.CREATE_BONDS: Creating Bonds for molecule H36-C16-N - -CREATE BONDS: Number of atoms in molecule object and RDKit MOL are equal: 53 53 -idx=0 C Number of bonds : 4 -C C : 0 , H H : 1 , 1.0 -BOND CREATED 0 0 1 1.0 C H -C C : 0 , C C : 3 , 1.0 -BOND CREATED 0 0 3 1.0 C C -C C : 0 , H H : 5 , 1.0 -BOND CREATED 0 0 5 1.0 C H -C C : 0 , C C : 40 , 1.0 -BOND CREATED 0 0 40 1.0 C C -BONDS [('C', 'H', 1.0, 0.971), ('C', 'C', 1.0, 1.519), ('C', 'H', 1.0, 0.97), ('C', 'C', 1.0, 1.517)] -idx=1 H Number of bonds : 1 -C C : 0 , H H : 1 , 1.0 -BOND CREATED 1 1 0 1.0 H C -BONDS [('H', 'C', 1.0, 0.971)] -idx=2 H Number of bonds : 1 -H H : 2 , C C : 3 , 1.0 -BOND CREATED 2 2 3 1.0 H C -BONDS [('H', 'C', 1.0, 0.969)] -idx=3 C Number of bonds : 4 -C C : 0 , C C : 3 , 1.0 -BOND CREATED 3 3 0 1.0 C C -H H : 2 , C C : 3 , 1.0 -BOND CREATED 3 3 2 1.0 C H -C C : 3 , C C : 9 , 1.0 -BOND CREATED 3 3 9 1.0 C C -C C : 3 , H H : 10 , 1.0 -BOND CREATED 3 3 10 1.0 C H -BONDS [('C', 'C', 1.0, 1.519), ('C', 'H', 1.0, 0.969), ('C', 'C', 1.0, 1.519), ('C', 'H', 1.0, 0.971)] -idx=4 H Number of bonds : 1 -H H : 4 , C C : 9 , 1.0 -BOND CREATED 4 4 9 1.0 H C -BONDS [('H', 'C', 1.0, 0.96)] -idx=5 H Number of bonds : 1 -C C : 0 , H H : 5 , 1.0 -BOND CREATED 5 5 0 1.0 H C -BONDS [('H', 'C', 1.0, 0.97)] -idx=6 C Number of bonds : 4 -C C : 6 , H H : 7 , 1.0 -BOND CREATED 6 6 7 1.0 C H -C C : 6 , C C : 19 , 1.0 -BOND CREATED 6 6 19 1.0 C C -C C : 6 , H H : 21 , 1.0 -BOND CREATED 6 6 21 1.0 C H -C C : 6 , C C : 29 , 1.0 -BOND CREATED 6 6 29 1.0 C C -BONDS [('C', 'H', 1.0, 0.969), ('C', 'C', 1.0, 1.528), ('C', 'H', 1.0, 0.972), ('C', 'C', 1.0, 1.517)] -idx=7 H Number of bonds : 1 -C C : 6 , H H : 7 , 1.0 -BOND CREATED 7 7 6 1.0 H C -BONDS [('H', 'C', 1.0, 0.969)] -idx=8 H Number of bonds : 1 -H H : 8 , C C : 19 , 1.0 -BOND CREATED 8 8 19 1.0 H C -BONDS [('H', 'C', 1.0, 0.97)] -idx=9 C Number of bonds : 4 -C C : 3 , C C : 9 , 1.0 -BOND CREATED 9 9 3 1.0 C C -H H : 4 , C C : 9 , 1.0 -BOND CREATED 9 9 4 1.0 C H -C C : 9 , H H : 11 , 1.0 -BOND CREATED 9 9 11 1.0 C H -C C : 9 , H H : 12 , 1.0 -BOND CREATED 9 9 12 1.0 C H -BONDS [('C', 'C', 1.0, 1.519), ('C', 'H', 1.0, 0.96), ('C', 'H', 1.0, 0.96), ('C', 'H', 1.0, 0.96)] -idx=10 H Number of bonds : 1 -C C : 3 , H H : 10 , 1.0 -BOND CREATED 10 10 3 1.0 H C -BONDS [('H', 'C', 1.0, 0.971)] -idx=11 H Number of bonds : 1 -C C : 9 , H H : 11 , 1.0 -BOND CREATED 11 11 9 1.0 H C -BONDS [('H', 'C', 1.0, 0.96)] -idx=12 H Number of bonds : 1 -C C : 9 , H H : 12 , 1.0 -BOND CREATED 12 12 9 1.0 H C -BONDS [('H', 'C', 1.0, 0.96)] -idx=13 C Number of bonds : 4 -C C : 13 , H H : 15 , 1.0 -BOND CREATED 13 13 15 1.0 C H -C C : 13 , H H : 17 , 1.0 -BOND CREATED 13 13 17 1.0 C H -C C : 13 , N N : 35 , 1.0 -BOND CREATED 13 13 35 1.0 C N -C C : 13 , C C : 43 , 1.0 -BOND CREATED 13 13 43 1.0 C C -BONDS [('C', 'H', 1.0, 0.97), ('C', 'H', 1.0, 0.97), ('C', 'N', 1.0, 1.523), ('C', 'C', 1.0, 1.519)] -idx=14 H Number of bonds : 1 -H H : 14 , C C : 16 , 1.0 -BOND CREATED 14 14 16 1.0 H C -BONDS [('H', 'C', 1.0, 0.969)] -idx=15 H Number of bonds : 1 -C C : 13 , H H : 15 , 1.0 -BOND CREATED 15 15 13 1.0 H C -BONDS [('H', 'C', 1.0, 0.97)] -idx=16 C Number of bonds : 4 -H H : 14 , C C : 16 , 1.0 -BOND CREATED 16 16 14 1.0 C H -C C : 16 , H H : 18 , 1.0 -BOND CREATED 16 16 18 1.0 C H -C C : 16 , C C : 26 , 1.0 -BOND CREATED 16 16 26 1.0 C C -C C : 16 , N N : 35 , 1.0 -BOND CREATED 16 16 35 1.0 C N -BONDS [('C', 'H', 1.0, 0.969), ('C', 'H', 1.0, 0.97), ('C', 'C', 1.0, 1.529), ('C', 'N', 1.0, 1.524)] -idx=17 H Number of bonds : 1 -C C : 13 , H H : 17 , 1.0 -BOND CREATED 17 17 13 1.0 H C -BONDS [('H', 'C', 1.0, 0.97)] -idx=18 H Number of bonds : 1 -C C : 16 , H H : 18 , 1.0 -BOND CREATED 18 18 16 1.0 H C -BONDS [('H', 'C', 1.0, 0.97)] -idx=19 C Number of bonds : 4 -C C : 6 , C C : 19 , 1.0 -BOND CREATED 19 19 6 1.0 C C -H H : 8 , C C : 19 , 1.0 -BOND CREATED 19 19 8 1.0 C H -C C : 19 , C C : 22 , 1.0 -BOND CREATED 19 19 22 1.0 C C -C C : 19 , H H : 25 , 1.0 -BOND CREATED 19 19 25 1.0 C H -BONDS [('C', 'C', 1.0, 1.528), ('C', 'H', 1.0, 0.97), ('C', 'C', 1.0, 1.517), ('C', 'H', 1.0, 0.969)] -idx=20 H Number of bonds : 1 -H H : 20 , C C : 22 , 1.0 -BOND CREATED 20 20 22 1.0 H C -BONDS [('H', 'C', 1.0, 0.96)] -idx=21 H Number of bonds : 1 -C C : 6 , H H : 21 , 1.0 -BOND CREATED 21 21 6 1.0 H C -BONDS [('H', 'C', 1.0, 0.972)] -idx=22 C Number of bonds : 4 -C C : 19 , C C : 22 , 1.0 -BOND CREATED 22 22 19 1.0 C C -H H : 20 , C C : 22 , 1.0 -BOND CREATED 22 22 20 1.0 C H -C C : 22 , H H : 23 , 1.0 -BOND CREATED 22 22 23 1.0 C H -C C : 22 , H H : 24 , 1.0 -BOND CREATED 22 22 24 1.0 C H -BONDS [('C', 'C', 1.0, 1.517), ('C', 'H', 1.0, 0.96), ('C', 'H', 1.0, 0.962), ('C', 'H', 1.0, 0.96)] -idx=23 H Number of bonds : 1 -C C : 22 , H H : 23 , 1.0 -BOND CREATED 23 23 22 1.0 H C -BONDS [('H', 'C', 1.0, 0.962)] -idx=24 H Number of bonds : 1 -C C : 22 , H H : 24 , 1.0 -BOND CREATED 24 24 22 1.0 H C -BONDS [('H', 'C', 1.0, 0.96)] -idx=25 H Number of bonds : 1 -C C : 19 , H H : 25 , 1.0 -BOND CREATED 25 25 19 1.0 H C -BONDS [('H', 'C', 1.0, 0.969)] -idx=26 C Number of bonds : 4 -C C : 16 , C C : 26 , 1.0 -BOND CREATED 26 26 16 1.0 C C -C C : 26 , H H : 28 , 1.0 -BOND CREATED 26 26 28 1.0 C H -C C : 26 , C C : 32 , 1.0 -BOND CREATED 26 26 32 1.0 C C -C C : 26 , H H : 34 , 1.0 -BOND CREATED 26 26 34 1.0 C H -BONDS [('C', 'C', 1.0, 1.529), ('C', 'H', 1.0, 0.972), ('C', 'C', 1.0, 1.529), ('C', 'H', 1.0, 0.971)] -idx=27 H Number of bonds : 1 -H H : 27 , C C : 32 , 1.0 -BOND CREATED 27 27 32 1.0 H C -BONDS [('H', 'C', 1.0, 0.971)] -idx=28 H Number of bonds : 1 -C C : 26 , H H : 28 , 1.0 -BOND CREATED 28 28 26 1.0 H C -BONDS [('H', 'C', 1.0, 0.972)] -idx=29 C Number of bonds : 4 -C C : 6 , C C : 29 , 1.0 -BOND CREATED 29 29 6 1.0 C C -C C : 29 , H H : 31 , 1.0 -BOND CREATED 29 29 31 1.0 C H -C C : 29 , N N : 35 , 1.0 -BOND CREATED 29 29 35 1.0 C N -C C : 29 , H H : 42 , 1.0 -BOND CREATED 29 29 42 1.0 C H -BONDS [('C', 'C', 1.0, 1.517), ('C', 'H', 1.0, 0.97), ('C', 'N', 1.0, 1.518), ('C', 'H', 1.0, 0.97)] -idx=30 H Number of bonds : 1 -H H : 30 , C C : 40 , 1.0 -BOND CREATED 30 30 40 1.0 H C -BONDS [('H', 'C', 1.0, 0.97)] -idx=31 H Number of bonds : 1 -C C : 29 , H H : 31 , 1.0 -BOND CREATED 31 31 29 1.0 H C -BONDS [('H', 'C', 1.0, 0.97)] -idx=32 C Number of bonds : 4 -C C : 26 , C C : 32 , 1.0 -BOND CREATED 32 32 26 1.0 C C -H H : 27 , C C : 32 , 1.0 -BOND CREATED 32 32 27 1.0 C H -C C : 32 , H H : 33 , 1.0 -BOND CREATED 32 32 33 1.0 C H -C C : 32 , C C : 36 , 1.0 -BOND CREATED 32 32 36 1.0 C C -BONDS [('C', 'C', 1.0, 1.529), ('C', 'H', 1.0, 0.971), ('C', 'H', 1.0, 0.97), ('C', 'C', 1.0, 1.523)] -idx=33 H Number of bonds : 1 -C C : 32 , H H : 33 , 1.0 -BOND CREATED 33 33 32 1.0 H C -BONDS [('H', 'C', 1.0, 0.97)] -idx=34 H Number of bonds : 1 -C C : 26 , H H : 34 , 1.0 -BOND CREATED 34 34 26 1.0 H C -BONDS [('H', 'C', 1.0, 0.971)] -idx=35 N Number of bonds : 4 -C C : 13 , N N : 35 , 1.0 -BOND CREATED 35 35 13 1.0 N C -C C : 16 , N N : 35 , 1.0 -BOND CREATED 35 35 16 1.0 N C -C C : 29 , N N : 35 , 1.0 -BOND CREATED 35 35 29 1.0 N C -N N : 35 , C C : 40 , 1.0 -BOND CREATED 35 35 40 1.0 N C -BONDS [('N', 'C', 1.0, 1.523), ('N', 'C', 1.0, 1.524), ('N', 'C', 1.0, 1.518), ('N', 'C', 1.0, 1.524)] -idx=36 C Number of bonds : 4 -C C : 32 , C C : 36 , 1.0 -BOND CREATED 36 36 32 1.0 C C -C C : 36 , H H : 37 , 1.0 -BOND CREATED 36 36 37 1.0 C H -C C : 36 , H H : 38 , 1.0 -BOND CREATED 36 36 38 1.0 C H -C C : 36 , H H : 39 , 1.0 -BOND CREATED 36 36 39 1.0 C H -BONDS [('C', 'C', 1.0, 1.523), ('C', 'H', 1.0, 0.961), ('C', 'H', 1.0, 0.96), ('C', 'H', 1.0, 0.959)] -idx=37 H Number of bonds : 1 -C C : 36 , H H : 37 , 1.0 -BOND CREATED 37 37 36 1.0 H C -BONDS [('H', 'C', 1.0, 0.961)] -idx=38 H Number of bonds : 1 -C C : 36 , H H : 38 , 1.0 -BOND CREATED 38 38 36 1.0 H C -BONDS [('H', 'C', 1.0, 0.96)] -idx=39 H Number of bonds : 1 -C C : 36 , H H : 39 , 1.0 -BOND CREATED 39 39 36 1.0 H C -BONDS [('H', 'C', 1.0, 0.959)] -idx=40 C Number of bonds : 4 -C C : 0 , C C : 40 , 1.0 -BOND CREATED 40 40 0 1.0 C C -H H : 30 , C C : 40 , 1.0 -BOND CREATED 40 40 30 1.0 C H -N N : 35 , C C : 40 , 1.0 -BOND CREATED 40 40 35 1.0 C N -C C : 40 , H H : 41 , 1.0 -BOND CREATED 40 40 41 1.0 C H -BONDS [('C', 'C', 1.0, 1.517), ('C', 'H', 1.0, 0.97), ('C', 'N', 1.0, 1.524), ('C', 'H', 1.0, 0.969)] -idx=41 H Number of bonds : 1 -C C : 40 , H H : 41 , 1.0 -BOND CREATED 41 41 40 1.0 H C -BONDS [('H', 'C', 1.0, 0.969)] -idx=42 H Number of bonds : 1 -C C : 29 , H H : 42 , 1.0 -BOND CREATED 42 42 29 1.0 H C -BONDS [('H', 'C', 1.0, 0.97)] -idx=43 C Number of bonds : 4 -C C : 13 , C C : 43 , 1.0 -BOND CREATED 43 43 13 1.0 C C -C C : 43 , H H : 44 , 1.0 -BOND CREATED 43 43 44 1.0 C H -C C : 43 , C C : 46 , 1.0 -BOND CREATED 43 43 46 1.0 C C -C C : 43 , H H : 47 , 1.0 -BOND CREATED 43 43 47 1.0 C H -BONDS [('C', 'C', 1.0, 1.519), ('C', 'H', 1.0, 0.971), ('C', 'C', 1.0, 1.518), ('C', 'H', 1.0, 0.969)] -idx=44 H Number of bonds : 1 -C C : 43 , H H : 44 , 1.0 -BOND CREATED 44 44 43 1.0 H C -BONDS [('H', 'C', 1.0, 0.971)] -idx=45 H Number of bonds : 1 -H H : 45 , C C : 46 , 1.0 -BOND CREATED 45 45 46 1.0 H C -BONDS [('H', 'C', 1.0, 0.97)] -idx=46 C Number of bonds : 4 -C C : 43 , C C : 46 , 1.0 -BOND CREATED 46 46 43 1.0 C C -H H : 45 , C C : 46 , 1.0 -BOND CREATED 46 46 45 1.0 C H -C C : 46 , H H : 48 , 1.0 -BOND CREATED 46 46 48 1.0 C H -C C : 46 , C C : 49 , 1.0 -BOND CREATED 46 46 49 1.0 C C -BONDS [('C', 'C', 1.0, 1.518), ('C', 'H', 1.0, 0.97), ('C', 'H', 1.0, 0.971), ('C', 'C', 1.0, 1.519)] -idx=47 H Number of bonds : 1 -C C : 43 , H H : 47 , 1.0 -BOND CREATED 47 47 43 1.0 H C -BONDS [('H', 'C', 1.0, 0.969)] -idx=48 H Number of bonds : 1 -C C : 46 , H H : 48 , 1.0 -BOND CREATED 48 48 46 1.0 H C -BONDS [('H', 'C', 1.0, 0.971)] -idx=49 C Number of bonds : 4 -C C : 46 , C C : 49 , 1.0 -BOND CREATED 49 49 46 1.0 C C -C C : 49 , H H : 50 , 1.0 -BOND CREATED 49 49 50 1.0 C H -C C : 49 , H H : 51 , 1.0 -BOND CREATED 49 49 51 1.0 C H -C C : 49 , H H : 52 , 1.0 -BOND CREATED 49 49 52 1.0 C H -BONDS [('C', 'C', 1.0, 1.519), ('C', 'H', 1.0, 0.96), ('C', 'H', 1.0, 0.96), ('C', 'H', 1.0, 0.959)] -idx=50 H Number of bonds : 1 -C C : 49 , H H : 50 , 1.0 -BOND CREATED 50 50 49 1.0 H C -BONDS [('H', 'C', 1.0, 0.96)] -idx=51 H Number of bonds : 1 -C C : 49 , H H : 51 , 1.0 -BOND CREATED 51 51 49 1.0 H C -BONDS [('H', 'C', 1.0, 0.96)] -idx=52 H Number of bonds : 1 -C C : 49 , H H : 52 , 1.0 -BOND CREATED 52 52 49 1.0 H C -BONDS [('H', 'C', 1.0, 0.959)] -CELL.CREATE_BONDS: Creating Bonds for molecule H36-C16-N - -CREATE BONDS: Number of atoms in molecule object and RDKit MOL are equal: 53 53 -idx=0 C Number of bonds : 4 -C C : 0 , H H : 1 , 1.0 -BOND CREATED 0 0 1 1.0 C H -C C : 0 , H H : 2 , 1.0 -BOND CREATED 0 0 2 1.0 C H -C C : 0 , C C : 3 , 1.0 -BOND CREATED 0 0 3 1.0 C C -C C : 0 , C C : 13 , 1.0 -BOND CREATED 0 0 13 1.0 C C -BONDS [('C', 'H', 1.0, 0.969), ('C', 'H', 1.0, 0.972), ('C', 'C', 1.0, 1.528), ('C', 'C', 1.0, 1.517)] -idx=1 H Number of bonds : 1 -C C : 0 , H H : 1 , 1.0 -BOND CREATED 1 1 0 1.0 H C -BONDS [('H', 'C', 1.0, 0.969)] -idx=2 H Number of bonds : 1 -C C : 0 , H H : 2 , 1.0 -BOND CREATED 2 2 0 1.0 H C -BONDS [('H', 'C', 1.0, 0.972)] -idx=3 C Number of bonds : 4 -C C : 0 , C C : 3 , 1.0 -BOND CREATED 3 3 0 1.0 C C -C C : 3 , H H : 4 , 1.0 -BOND CREATED 3 3 4 1.0 C H -C C : 3 , H H : 5 , 1.0 -BOND CREATED 3 3 5 1.0 C H -C C : 3 , C C : 9 , 1.0 -BOND CREATED 3 3 9 1.0 C C -BONDS [('C', 'C', 1.0, 1.528), ('C', 'H', 1.0, 0.969), ('C', 'H', 1.0, 0.97), ('C', 'C', 1.0, 1.517)] -idx=4 H Number of bonds : 1 -C C : 3 , H H : 4 , 1.0 -BOND CREATED 4 4 3 1.0 H C -BONDS [('H', 'C', 1.0, 0.969)] -idx=5 H Number of bonds : 1 -C C : 3 , H H : 5 , 1.0 -BOND CREATED 5 5 3 1.0 H C -BONDS [('H', 'C', 1.0, 0.97)] -idx=6 C Number of bonds : 4 -C C : 6 , H H : 7 , 1.0 -BOND CREATED 6 6 7 1.0 C H -C C : 6 , H H : 8 , 1.0 -BOND CREATED 6 6 8 1.0 C H -C C : 6 , C C : 16 , 1.0 -BOND CREATED 6 6 16 1.0 C C -C C : 6 , C C : 19 , 1.0 -BOND CREATED 6 6 19 1.0 C C -BONDS [('C', 'H', 1.0, 0.971), ('C', 'H', 1.0, 0.97), ('C', 'C', 1.0, 1.517), ('C', 'C', 1.0, 1.519)] -idx=7 H Number of bonds : 1 -C C : 6 , H H : 7 , 1.0 -BOND CREATED 7 7 6 1.0 H C -BONDS [('H', 'C', 1.0, 0.971)] -idx=8 H Number of bonds : 1 -C C : 6 , H H : 8 , 1.0 -BOND CREATED 8 8 6 1.0 H C -BONDS [('H', 'C', 1.0, 0.97)] -idx=9 C Number of bonds : 4 -C C : 3 , C C : 9 , 1.0 -BOND CREATED 9 9 3 1.0 C C -C C : 9 , H H : 10 , 1.0 -BOND CREATED 9 9 10 1.0 C H -C C : 9 , H H : 11 , 1.0 -BOND CREATED 9 9 11 1.0 C H -C C : 9 , H H : 12 , 1.0 -BOND CREATED 9 9 12 1.0 C H -BONDS [('C', 'C', 1.0, 1.517), ('C', 'H', 1.0, 0.96), ('C', 'H', 1.0, 0.962), ('C', 'H', 1.0, 0.96)] -idx=10 H Number of bonds : 1 -C C : 9 , H H : 10 , 1.0 -BOND CREATED 10 10 9 1.0 H C -BONDS [('H', 'C', 1.0, 0.96)] -idx=11 H Number of bonds : 1 -C C : 9 , H H : 11 , 1.0 -BOND CREATED 11 11 9 1.0 H C -BONDS [('H', 'C', 1.0, 0.962)] -idx=12 H Number of bonds : 1 -C C : 9 , H H : 12 , 1.0 -BOND CREATED 12 12 9 1.0 H C -BONDS [('H', 'C', 1.0, 0.96)] -idx=13 C Number of bonds : 4 -C C : 0 , C C : 13 , 1.0 -BOND CREATED 13 13 0 1.0 C C -C C : 13 , H H : 14 , 1.0 -BOND CREATED 13 13 14 1.0 C H -C C : 13 , H H : 15 , 1.0 -BOND CREATED 13 13 15 1.0 C H -C C : 13 , N N : 35 , 1.0 -BOND CREATED 13 13 35 1.0 C N -BONDS [('C', 'C', 1.0, 1.517), ('C', 'H', 1.0, 0.97), ('C', 'H', 1.0, 0.97), ('C', 'N', 1.0, 1.518)] -idx=14 H Number of bonds : 1 -C C : 13 , H H : 14 , 1.0 -BOND CREATED 14 14 13 1.0 H C -BONDS [('H', 'C', 1.0, 0.97)] -idx=15 H Number of bonds : 1 -C C : 13 , H H : 15 , 1.0 -BOND CREATED 15 15 13 1.0 H C -BONDS [('H', 'C', 1.0, 0.97)] -idx=16 C Number of bonds : 4 -C C : 6 , C C : 16 , 1.0 -BOND CREATED 16 16 6 1.0 C C -C C : 16 , H H : 17 , 1.0 -BOND CREATED 16 16 17 1.0 C H -C C : 16 , H H : 18 , 1.0 -BOND CREATED 16 16 18 1.0 C H -C C : 16 , N N : 35 , 1.0 -BOND CREATED 16 16 35 1.0 C N -BONDS [('C', 'C', 1.0, 1.517), ('C', 'H', 1.0, 0.97), ('C', 'H', 1.0, 0.969), ('C', 'N', 1.0, 1.524)] -idx=17 H Number of bonds : 1 -C C : 16 , H H : 17 , 1.0 -BOND CREATED 17 17 16 1.0 H C -BONDS [('H', 'C', 1.0, 0.97)] -idx=18 H Number of bonds : 1 -C C : 16 , H H : 18 , 1.0 -BOND CREATED 18 18 16 1.0 H C -BONDS [('H', 'C', 1.0, 0.969)] -idx=19 C Number of bonds : 4 -C C : 6 , C C : 19 , 1.0 -BOND CREATED 19 19 6 1.0 C C -C C : 19 , H H : 20 , 1.0 -BOND CREATED 19 19 20 1.0 C H -C C : 19 , H H : 21 , 1.0 -BOND CREATED 19 19 21 1.0 C H -C C : 19 , C C : 22 , 1.0 -BOND CREATED 19 19 22 1.0 C C -BONDS [('C', 'C', 1.0, 1.519), ('C', 'H', 1.0, 0.971), ('C', 'H', 1.0, 0.969), ('C', 'C', 1.0, 1.519)] -idx=20 H Number of bonds : 1 -C C : 19 , H H : 20 , 1.0 -BOND CREATED 20 20 19 1.0 H C -BONDS [('H', 'C', 1.0, 0.971)] -idx=21 H Number of bonds : 1 -C C : 19 , H H : 21 , 1.0 -BOND CREATED 21 21 19 1.0 H C -BONDS [('H', 'C', 1.0, 0.969)] -idx=22 C Number of bonds : 4 -C C : 19 , C C : 22 , 1.0 -BOND CREATED 22 22 19 1.0 C C -C C : 22 , H H : 23 , 1.0 -BOND CREATED 22 22 23 1.0 C H -C C : 22 , H H : 24 , 1.0 -BOND CREATED 22 22 24 1.0 C H -C C : 22 , H H : 25 , 1.0 -BOND CREATED 22 22 25 1.0 C H -BONDS [('C', 'C', 1.0, 1.519), ('C', 'H', 1.0, 0.96), ('C', 'H', 1.0, 0.96), ('C', 'H', 1.0, 0.96)] -idx=23 H Number of bonds : 1 -C C : 22 , H H : 23 , 1.0 -BOND CREATED 23 23 22 1.0 H C -BONDS [('H', 'C', 1.0, 0.96)] -idx=24 H Number of bonds : 1 -C C : 22 , H H : 24 , 1.0 -BOND CREATED 24 24 22 1.0 H C -BONDS [('H', 'C', 1.0, 0.96)] -idx=25 H Number of bonds : 1 -C C : 22 , H H : 25 , 1.0 -BOND CREATED 25 25 22 1.0 H C -BONDS [('H', 'C', 1.0, 0.96)] -idx=26 C Number of bonds : 4 -C C : 26 , H H : 27 , 1.0 -BOND CREATED 26 26 27 1.0 C H -C C : 26 , H H : 28 , 1.0 -BOND CREATED 26 26 28 1.0 C H -C C : 26 , C C : 29 , 1.0 -BOND CREATED 26 26 29 1.0 C C -C C : 26 , C C : 32 , 1.0 -BOND CREATED 26 26 32 1.0 C C -BONDS [('C', 'H', 1.0, 0.969), ('C', 'H', 1.0, 0.971), ('C', 'C', 1.0, 1.519), ('C', 'C', 1.0, 1.518)] -idx=27 H Number of bonds : 1 -C C : 26 , H H : 27 , 1.0 -BOND CREATED 27 27 26 1.0 H C -BONDS [('H', 'C', 1.0, 0.969)] -idx=28 H Number of bonds : 1 -C C : 26 , H H : 28 , 1.0 -BOND CREATED 28 28 26 1.0 H C -BONDS [('H', 'C', 1.0, 0.971)] -idx=29 C Number of bonds : 4 -C C : 26 , C C : 29 , 1.0 -BOND CREATED 29 29 26 1.0 C C -C C : 29 , H H : 30 , 1.0 -BOND CREATED 29 29 30 1.0 C H -C C : 29 , H H : 31 , 1.0 -BOND CREATED 29 29 31 1.0 C H -C C : 29 , N N : 35 , 1.0 -BOND CREATED 29 29 35 1.0 C N -BONDS [('C', 'C', 1.0, 1.519), ('C', 'H', 1.0, 0.97), ('C', 'H', 1.0, 0.97), ('C', 'N', 1.0, 1.523)] -idx=30 H Number of bonds : 1 -C C : 29 , H H : 30 , 1.0 -BOND CREATED 30 30 29 1.0 H C -BONDS [('H', 'C', 1.0, 0.97)] -idx=31 H Number of bonds : 1 -C C : 29 , H H : 31 , 1.0 -BOND CREATED 31 31 29 1.0 H C -BONDS [('H', 'C', 1.0, 0.97)] -idx=32 C Number of bonds : 4 -C C : 26 , C C : 32 , 1.0 -BOND CREATED 32 32 26 1.0 C C -C C : 32 , H H : 33 , 1.0 -BOND CREATED 32 32 33 1.0 C H -C C : 32 , H H : 34 , 1.0 -BOND CREATED 32 32 34 1.0 C H -C C : 32 , C C : 36 , 1.0 -BOND CREATED 32 32 36 1.0 C C -BONDS [('C', 'C', 1.0, 1.518), ('C', 'H', 1.0, 0.971), ('C', 'H', 1.0, 0.97), ('C', 'C', 1.0, 1.519)] -idx=33 H Number of bonds : 1 -C C : 32 , H H : 33 , 1.0 -BOND CREATED 33 33 32 1.0 H C -BONDS [('H', 'C', 1.0, 0.971)] -idx=34 H Number of bonds : 1 -C C : 32 , H H : 34 , 1.0 -BOND CREATED 34 34 32 1.0 H C -BONDS [('H', 'C', 1.0, 0.97)] -idx=35 N Number of bonds : 4 -C C : 13 , N N : 35 , 1.0 -BOND CREATED 35 35 13 1.0 N C -C C : 16 , N N : 35 , 1.0 -BOND CREATED 35 35 16 1.0 N C -C C : 29 , N N : 35 , 1.0 -BOND CREATED 35 35 29 1.0 N C -N N : 35 , C C : 40 , 1.0 -BOND CREATED 35 35 40 1.0 N C -BONDS [('N', 'C', 1.0, 1.518), ('N', 'C', 1.0, 1.524), ('N', 'C', 1.0, 1.523), ('N', 'C', 1.0, 1.524)] -idx=36 C Number of bonds : 4 -C C : 32 , C C : 36 , 1.0 -BOND CREATED 36 36 32 1.0 C C -C C : 36 , H H : 37 , 1.0 -BOND CREATED 36 36 37 1.0 C H -C C : 36 , H H : 38 , 1.0 -BOND CREATED 36 36 38 1.0 C H -C C : 36 , H H : 39 , 1.0 -BOND CREATED 36 36 39 1.0 C H -BONDS [('C', 'C', 1.0, 1.519), ('C', 'H', 1.0, 0.96), ('C', 'H', 1.0, 0.96), ('C', 'H', 1.0, 0.959)] -idx=37 H Number of bonds : 1 -C C : 36 , H H : 37 , 1.0 -BOND CREATED 37 37 36 1.0 H C -BONDS [('H', 'C', 1.0, 0.96)] -idx=38 H Number of bonds : 1 -C C : 36 , H H : 38 , 1.0 -BOND CREATED 38 38 36 1.0 H C -BONDS [('H', 'C', 1.0, 0.96)] -idx=39 H Number of bonds : 1 -C C : 36 , H H : 39 , 1.0 -BOND CREATED 39 39 36 1.0 H C -BONDS [('H', 'C', 1.0, 0.959)] -idx=40 C Number of bonds : 4 -N N : 35 , C C : 40 , 1.0 -BOND CREATED 40 40 35 1.0 C N -C C : 40 , H H : 41 , 1.0 -BOND CREATED 40 40 41 1.0 C H -C C : 40 , H H : 42 , 1.0 -BOND CREATED 40 40 42 1.0 C H -C C : 40 , C C : 43 , 1.0 -BOND CREATED 40 40 43 1.0 C C -BONDS [('C', 'N', 1.0, 1.524), ('C', 'H', 1.0, 0.97), ('C', 'H', 1.0, 0.969), ('C', 'C', 1.0, 1.529)] -idx=41 H Number of bonds : 1 -C C : 40 , H H : 41 , 1.0 -BOND CREATED 41 41 40 1.0 H C -BONDS [('H', 'C', 1.0, 0.97)] -idx=42 H Number of bonds : 1 -C C : 40 , H H : 42 , 1.0 -BOND CREATED 42 42 40 1.0 H C -BONDS [('H', 'C', 1.0, 0.969)] -idx=43 C Number of bonds : 4 -C C : 40 , C C : 43 , 1.0 -BOND CREATED 43 43 40 1.0 C C -C C : 43 , H H : 44 , 1.0 -BOND CREATED 43 43 44 1.0 C H -C C : 43 , H H : 45 , 1.0 -BOND CREATED 43 43 45 1.0 C H -C C : 43 , C C : 46 , 1.0 -BOND CREATED 43 43 46 1.0 C C -BONDS [('C', 'C', 1.0, 1.529), ('C', 'H', 1.0, 0.972), ('C', 'H', 1.0, 0.971), ('C', 'C', 1.0, 1.529)] -idx=44 H Number of bonds : 1 -C C : 43 , H H : 44 , 1.0 -BOND CREATED 44 44 43 1.0 H C -BONDS [('H', 'C', 1.0, 0.972)] -idx=45 H Number of bonds : 1 -C C : 43 , H H : 45 , 1.0 -BOND CREATED 45 45 43 1.0 H C -BONDS [('H', 'C', 1.0, 0.971)] -idx=46 C Number of bonds : 4 -C C : 43 , C C : 46 , 1.0 -BOND CREATED 46 46 43 1.0 C C -C C : 46 , H H : 47 , 1.0 -BOND CREATED 46 46 47 1.0 C H -C C : 46 , H H : 48 , 1.0 -BOND CREATED 46 46 48 1.0 C H -C C : 46 , C C : 49 , 1.0 -BOND CREATED 46 46 49 1.0 C C -BONDS [('C', 'C', 1.0, 1.529), ('C', 'H', 1.0, 0.971), ('C', 'H', 1.0, 0.97), ('C', 'C', 1.0, 1.523)] -idx=47 H Number of bonds : 1 -C C : 46 , H H : 47 , 1.0 -BOND CREATED 47 47 46 1.0 H C -BONDS [('H', 'C', 1.0, 0.971)] -idx=48 H Number of bonds : 1 -C C : 46 , H H : 48 , 1.0 -BOND CREATED 48 48 46 1.0 H C -BONDS [('H', 'C', 1.0, 0.97)] -idx=49 C Number of bonds : 4 -C C : 46 , C C : 49 , 1.0 -BOND CREATED 49 49 46 1.0 C C -C C : 49 , H H : 50 , 1.0 -BOND CREATED 49 49 50 1.0 C H -C C : 49 , H H : 51 , 1.0 -BOND CREATED 49 49 51 1.0 C H -C C : 49 , H H : 52 , 1.0 -BOND CREATED 49 49 52 1.0 C H -BONDS [('C', 'C', 1.0, 1.523), ('C', 'H', 1.0, 0.96), ('C', 'H', 1.0, 0.961), ('C', 'H', 1.0, 0.959)] -idx=50 H Number of bonds : 1 -C C : 49 , H H : 50 , 1.0 -BOND CREATED 50 50 49 1.0 H C -BONDS [('H', 'C', 1.0, 0.96)] -idx=51 H Number of bonds : 1 -C C : 49 , H H : 51 , 1.0 -BOND CREATED 51 51 49 1.0 H C -BONDS [('H', 'C', 1.0, 0.961)] -idx=52 H Number of bonds : 1 -C C : 49 , H H : 52 , 1.0 -BOND CREATED 52 52 49 1.0 H C -BONDS [('H', 'C', 1.0, 0.959)] -CELL.CREATE_BONDS: Creating Bonds for molecule H27-C37-N2-Fe-Br2 - -CREATE BONDS: Number of atoms in ligand object and RDKit MOL are different: 66 68 -[(0, 'C'), (1, 'C'), (2, 'C'), (3, 'C'), (4, 'H'), (5, 'C'), (6, 'H'), (7, 'C'), (8, 'C'), (9, 'C'), (10, 'H'), (11, 'C'), (12, 'H'), (13, 'C'), (14, 'H'), (15, 'C'), (16, 'H'), (17, 'C'), (18, 'C'), (19, 'C'), (20, 'H'), (21, 'C'), (22, 'C'), (23, 'H'), (24, 'C'), (25, 'H'), (26, 'C'), (27, 'H'), (28, 'C'), (29, 'H'), (30, 'C'), (31, 'H'), (32, 'C'), (33, 'C'), (34, 'H'), (35, 'C'), (36, 'H'), (37, 'C'), (38, 'H'), (39, 'C'), (40, 'H'), (41, 'C'), (42, 'H'), (43, 'C'), (44, 'H'), (45, 'C'), (46, 'H'), (47, 'C'), (48, 'H'), (49, 'N'), (50, 'N'), (51, 'C'), (52, 'C'), (53, 'H'), (54, 'C'), (55, 'H'), (56, 'C'), (57, 'H'), (58, 'C'), (59, 'H'), (60, 'C'), (61, 'H'), (62, 'C'), (63, 'H'), (64, 'C'), (65, 'H')] -[(0, 'C'), (1, 'C'), (2, 'C'), (3, 'C'), (4, 'H'), (5, 'C'), (6, 'H'), (7, 'C'), (8, 'C'), (9, 'C'), (10, 'H'), (11, 'C'), (12, 'H'), (13, 'C'), (14, 'H'), (15, 'C'), (16, 'H'), (17, 'C'), (18, 'C'), (19, 'C'), (20, 'H'), (21, 'C'), (22, 'C'), (23, 'H'), (24, 'C'), (25, 'H'), (26, 'C'), (27, 'H'), (28, 'C'), (29, 'H'), (30, 'C'), (31, 'H'), (32, 'C'), (33, 'C'), (34, 'H'), (35, 'C'), (36, 'H'), (37, 'C'), (38, 'H'), (39, 'C'), (40, 'H'), (41, 'C'), (42, 'H'), (43, 'C'), (44, 'H'), (45, 'C'), (46, 'H'), (47, 'C'), (48, 'H'), (49, 'N'), (50, 'N'), (51, 'C'), (52, 'C'), (53, 'H'), (54, 'C'), (55, 'H'), (56, 'C'), (57, 'H'), (58, 'C'), (59, 'H'), (60, 'C'), (61, 'H'), (62, 'C'), (63, 'H'), (64, 'C'), (65, 'H'), (66, 'H'), (67, 'H')] -NON_BONDED_ATOMS [66, 67] -idx=0 C Number of bonds : 3 -C : 0 , C : 2 , 1.5 -BOND CREATED 0 0 2 1.5 C C -C : 0 , C : 9 , 1.0 -BOND CREATED 0 0 9 1.0 C C -C : 0 , C : 11 , 1.5 -BOND CREATED 0 0 11 1.5 C C -BONDS [('C', 'C', 1.5, 1.387), ('C', 'C', 1.0, 1.495), ('C', 'C', 1.5, 1.391)] -idx=1 C Number of bonds : 3 -C : 1 , C : 5 , 1.0 -BOND CREATED 1 1 5 1.0 C C -C : 1 , C : 7 , 1.5 -BOND CREATED 1 1 7 1.5 C C -C : 1 , C : 41 , 1.5 -BOND CREATED 1 1 41 1.5 C C -BONDS [('C', 'C', 1.0, 1.528), ('C', 'C', 1.5, 1.41), ('C', 'C', 1.5, 1.392)] -idx=2 C Number of bonds : 3 -C : 0 , C : 2 , 1.5 -BOND CREATED 2 2 0 1.5 C C -C : 2 , C : 35 , 1.5 -BOND CREATED 2 2 35 1.5 C C -C : 2 , H : 36 , 1.0 -BOND CREATED 2 2 36 1.0 C H -BONDS [('C', 'C', 1.5, 1.387), ('C', 'C', 1.5, 1.39), ('C', 'H', 1.0, 0.93)] -idx=3 C Number of bonds : 3 -C : 3 , H : 4 , 1.0 -BOND CREATED 3 3 4 1.0 C H -C : 3 , C : 22 , 1.5 -BOND CREATED 3 3 22 1.5 C C -C : 3 , C : 32 , 1.5 -BOND CREATED 3 3 32 1.5 C C -BONDS [('C', 'H', 1.0, 0.929), ('C', 'C', 1.5, 1.389), ('C', 'C', 1.5, 1.399)] -idx=4 H Number of bonds : 1 -C : 3 , H : 4 , 1.0 -BOND CREATED 4 4 3 1.0 H C -BONDS [('H', 'C', 1.0, 0.929)] -idx=5 C Number of bonds : 4 -C : 1 , C : 5 , 1.0 -BOND CREATED 5 5 1 1.0 C C -C : 5 , H : 6 , 1.0 -BOND CREATED 5 5 6 1.0 C H -C : 5 , N : 49 , 1.0 -BOND CREATED 5 5 49 1.0 C N -C : 5 , C : 51 , 1.0 -BOND CREATED 5 5 51 1.0 C C -BONDS [('C', 'C', 1.0, 1.528), ('C', 'H', 1.0, 0.979), ('C', 'N', 1.0, 1.456), ('C', 'C', 1.0, 1.52)] -idx=6 H Number of bonds : 1 -C : 5 , H : 6 , 1.0 -BOND CREATED 6 6 5 1.0 H C -BONDS [('H', 'C', 1.0, 0.979)] -idx=7 C Number of bonds : 3 -C : 1 , C : 7 , 1.5 -BOND CREATED 7 7 1 1.5 C C -C : 7 , C : 56 , 1.5 -BOND CREATED 7 7 56 1.5 C C -C : 7 , C : 58 , 1.0 -BOND CREATED 7 7 58 1.0 C C -BONDS [('C', 'C', 1.5, 1.41), ('C', 'C', 1.5, 1.404), ('C', 'C', 1.0, 1.463)] -idx=8 C Number of bonds : 3 -C : 8 , C : 21 , 1.5 -BOND CREATED 8 8 21 1.5 C C -C : 8 , C : 43 , 1.5 -BOND CREATED 8 8 43 1.5 C C -C : 8 , C : 52 , 1.0 -BOND CREATED 8 8 52 1.0 C C -BONDS [('C', 'C', 1.5, 1.41), ('C', 'C', 1.5, 1.39), ('C', 'C', 1.0, 1.522)] -idx=9 C Number of bonds : 3 -C : 0 , C : 9 , 1.0 -BOND CREATED 9 9 0 1.0 C C -C : 9 , N : 49 , 1.0 -BOND CREATED 9 9 49 1.0 C N -C : 9 , N : 50 , 2.0 -BOND CREATED 9 9 50 2.0 C N -BONDS [('C', 'C', 1.0, 1.495), ('C', 'N', 1.0, 1.332), ('C', 'N', 2.0, 1.332)] -idx=10 H Number of bonds : 1 -H : 10 , C : 26 , 1.0 -BOND CREATED 10 10 26 1.0 H C -BONDS [('H', 'C', 1.0, 0.93)] -idx=11 C Number of bonds : 3 -C : 0 , C : 11 , 1.5 -BOND CREATED 11 11 0 1.5 C C -C : 11 , H : 12 , 1.0 -BOND CREATED 11 11 12 1.0 C H -C : 11 , C : 30 , 1.5 -BOND CREATED 11 11 30 1.5 C C -BONDS [('C', 'C', 1.5, 1.391), ('C', 'H', 1.0, 0.931), ('C', 'C', 1.5, 1.39)] -idx=12 H Number of bonds : 1 -C : 11 , H : 12 , 1.0 -BOND CREATED 12 12 11 1.0 H C -BONDS [('H', 'C', 1.0, 0.931)] -idx=13 C Number of bonds : 3 -C : 13 , C : 17 , 1.0 -BOND CREATED 13 13 17 1.0 C C -C : 13 , C : 19 , 2.0 -BOND CREATED 13 13 19 2.0 C C -C : 13 , H : 23 , 1.0 -BOND CREATED 13 13 23 1.0 C H -BONDS [('C', 'C', 1.0, 1.465), ('C', 'C', 2.0, 1.339), ('C', 'H', 1.0, 0.93)] -idx=14 H Number of bonds : 1 -H : 14 , C : 22 , 1.0 -BOND CREATED 14 14 22 1.0 H C -BONDS [('H', 'C', 1.0, 0.93)] -idx=15 C Number of bonds : 3 -C : 15 , C : 24 , 1.5 -BOND CREATED 15 15 24 1.5 C C -C : 15 , C : 28 , 1.5 -BOND CREATED 15 15 28 1.5 C C -C : 15 , H : 29 , 1.0 -BOND CREATED 15 15 29 1.0 C H -BONDS [('C', 'C', 1.5, 1.387), ('C', 'C', 1.5, 1.38), ('C', 'H', 1.0, 0.93)] -idx=16 H Number of bonds : 1 -H : 16 , C : 28 , 1.0 -BOND CREATED 16 16 28 1.0 H C -BONDS [('H', 'C', 1.0, 0.93)] -idx=17 C Number of bonds : 3 -C : 13 , C : 17 , 1.0 -BOND CREATED 17 17 13 1.0 C C -C : 17 , C : 32 , 1.5 -BOND CREATED 17 17 32 1.5 C C -C : 17 , C : 39 , 1.5 -BOND CREATED 17 17 39 1.5 C C -BONDS [('C', 'C', 1.0, 1.465), ('C', 'C', 1.5, 1.406), ('C', 'C', 1.5, 1.403)] -idx=18 C Number of bonds : 3 -C : 18 , C : 33 , 1.0 -BOND CREATED 18 18 33 1.0 C C -C : 18 , C : 47 , 1.5 -BOND CREATED 18 18 47 1.5 C C -C : 18 , C : 51 , 1.5 -BOND CREATED 18 18 51 1.5 C C -BONDS [('C', 'C', 1.0, 1.466), ('C', 'C', 1.5, 1.399), ('C', 'C', 1.5, 1.412)] -idx=19 C Number of bonds : 3 -C : 13 , C : 19 , 2.0 -BOND CREATED 19 19 13 2.0 C C -C : 19 , H : 20 , 1.0 -BOND CREATED 19 19 20 1.0 C H -C : 19 , C : 21 , 1.0 -BOND CREATED 19 19 21 1.0 C C -BONDS [('C', 'C', 2.0, 1.339), ('C', 'H', 1.0, 0.931), ('C', 'C', 1.0, 1.463)] -idx=20 H Number of bonds : 1 -C : 19 , H : 20 , 1.0 -BOND CREATED 20 20 19 1.0 H C -BONDS [('H', 'C', 1.0, 0.931)] -idx=21 C Number of bonds : 3 -C : 8 , C : 21 , 1.5 -BOND CREATED 21 21 8 1.5 C C -C : 19 , C : 21 , 1.0 -BOND CREATED 21 21 19 1.0 C C -C : 21 , C : 28 , 1.5 -BOND CREATED 21 21 28 1.5 C C -BONDS [('C', 'C', 1.5, 1.41), ('C', 'C', 1.0, 1.463), ('C', 'C', 1.5, 1.397)] -idx=22 C Number of bonds : 3 -C : 3 , C : 22 , 1.5 -BOND CREATED 22 22 3 1.5 C C -H : 14 , C : 22 , 1.0 -BOND CREATED 22 22 14 1.0 C H -C : 22 , C : 62 , 1.5 -BOND CREATED 22 22 62 1.5 C C -BONDS [('C', 'C', 1.5, 1.389), ('C', 'H', 1.0, 0.93), ('C', 'C', 1.5, 1.386)] -idx=23 H Number of bonds : 1 -C : 13 , H : 23 , 1.0 -BOND CREATED 23 23 13 1.0 H C -BONDS [('H', 'C', 1.0, 0.93)] -idx=24 C Number of bonds : 3 -C : 15 , C : 24 , 1.5 -BOND CREATED 24 24 15 1.5 C C -C : 24 , H : 25 , 1.0 -BOND CREATED 24 24 25 1.0 C H -C : 24 , C : 43 , 1.5 -BOND CREATED 24 24 43 1.5 C C -BONDS [('C', 'C', 1.5, 1.387), ('C', 'H', 1.0, 0.93), ('C', 'C', 1.5, 1.389)] -idx=25 H Number of bonds : 1 -C : 24 , H : 25 , 1.0 -BOND CREATED 25 25 24 1.0 H C -BONDS [('H', 'C', 1.0, 0.93)] -idx=26 C Number of bonds : 3 -H : 10 , C : 26 , 1.0 -BOND CREATED 26 26 10 1.0 C H -C : 26 , C : 51 , 1.5 -BOND CREATED 26 26 51 1.5 C C -C : 26 , C : 64 , 1.5 -BOND CREATED 26 26 64 1.5 C C -BONDS [('C', 'H', 1.0, 0.93), ('C', 'C', 1.5, 1.393), ('C', 'C', 1.5, 1.385)] -idx=27 H Number of bonds : 1 -H : 27 , C : 64 , 1.0 -BOND CREATED 27 27 64 1.0 H C -BONDS [('H', 'C', 1.0, 0.93)] -idx=28 C Number of bonds : 3 -C : 15 , C : 28 , 1.5 -BOND CREATED 28 28 15 1.5 C C -H : 16 , C : 28 , 1.0 -BOND CREATED 28 28 16 1.0 C H -C : 21 , C : 28 , 1.5 -BOND CREATED 28 28 21 1.5 C C -BONDS [('C', 'C', 1.5, 1.38), ('C', 'H', 1.0, 0.93), ('C', 'C', 1.5, 1.397)] -idx=29 H Number of bonds : 1 -C : 15 , H : 29 , 1.0 -BOND CREATED 29 29 15 1.0 H C -BONDS [('H', 'C', 1.0, 0.93)] -idx=30 C Number of bonds : 3 -C : 11 , C : 30 , 1.5 -BOND CREATED 30 30 11 1.5 C C -C : 30 , H : 48 , 1.0 -BOND CREATED 30 30 48 1.0 C H -C : 30 , C : 54 , 1.5 -BOND CREATED 30 30 54 1.5 C C -BONDS [('C', 'C', 1.5, 1.39), ('C', 'H', 1.0, 0.929), ('C', 'C', 1.5, 1.382)] -idx=31 H Number of bonds : 1 -H : 31 , C : 54 , 1.0 -BOND CREATED 31 31 54 1.0 H C -BONDS [('H', 'C', 1.0, 0.93)] -idx=32 C Number of bonds : 3 -C : 3 , C : 32 , 1.5 -BOND CREATED 32 32 3 1.5 C C -C : 17 , C : 32 , 1.5 -BOND CREATED 32 32 17 1.5 C C -C : 32 , C : 52 , 1.0 -BOND CREATED 32 32 52 1.0 C C -BONDS [('C', 'C', 1.5, 1.399), ('C', 'C', 1.5, 1.406), ('C', 'C', 1.0, 1.524)] -idx=33 C Number of bonds : 3 -C : 18 , C : 33 , 1.0 -BOND CREATED 33 33 18 1.0 C C -C : 33 , H : 34 , 1.0 -BOND CREATED 33 33 34 1.0 C H -C : 33 , C : 58 , 2.0 -BOND CREATED 33 33 58 2.0 C C -BONDS [('C', 'C', 1.0, 1.466), ('C', 'H', 1.0, 0.93), ('C', 'C', 2.0, 1.333)] -idx=34 H Number of bonds : 1 -C : 33 , H : 34 , 1.0 -BOND CREATED 34 34 33 1.0 H C -BONDS [('H', 'C', 1.0, 0.93)] -idx=35 C Number of bonds : 3 -C : 2 , C : 35 , 1.5 -BOND CREATED 35 35 2 1.5 C C -C : 35 , C : 54 , 1.5 -BOND CREATED 35 35 54 1.5 C C -C : 35 , H : 55 , 1.0 -BOND CREATED 35 35 55 1.0 C H -BONDS [('C', 'C', 1.5, 1.39), ('C', 'C', 1.5, 1.379), ('C', 'H', 1.0, 0.931)] -idx=36 H Number of bonds : 1 -C : 2 , H : 36 , 1.0 -BOND CREATED 36 36 2 1.0 H C -BONDS [('H', 'C', 1.0, 0.93)] -idx=37 C Number of bonds : 3 -C : 37 , H : 38 , 1.0 -BOND CREATED 37 37 38 1.0 C H -C : 37 , C : 41 , 1.5 -BOND CREATED 37 37 41 1.5 C C -C : 37 , C : 60 , 1.5 -BOND CREATED 37 37 60 1.5 C C -BONDS [('C', 'H', 1.0, 0.93), ('C', 'C', 1.5, 1.387), ('C', 'C', 1.5, 1.387)] -idx=38 H Number of bonds : 1 -C : 37 , H : 38 , 1.0 -BOND CREATED 38 38 37 1.0 H C -BONDS [('H', 'C', 1.0, 0.93)] -idx=39 C Number of bonds : 3 -C : 17 , C : 39 , 1.5 -BOND CREATED 39 39 17 1.5 C C -C : 39 , H : 40 , 1.0 -BOND CREATED 39 39 40 1.0 C H -C : 39 , C : 62 , 1.5 -BOND CREATED 39 39 62 1.5 C C -BONDS [('C', 'C', 1.5, 1.403), ('C', 'H', 1.0, 0.93), ('C', 'C', 1.5, 1.381)] -idx=40 H Number of bonds : 1 -C : 39 , H : 40 , 1.0 -BOND CREATED 40 40 39 1.0 H C -BONDS [('H', 'C', 1.0, 0.93)] -idx=41 C Number of bonds : 3 -C : 1 , C : 41 , 1.5 -BOND CREATED 41 41 1 1.5 C C -C : 37 , C : 41 , 1.5 -BOND CREATED 41 41 37 1.5 C C -C : 41 , H : 42 , 1.0 -BOND CREATED 41 41 42 1.0 C H -BONDS [('C', 'C', 1.5, 1.392), ('C', 'C', 1.5, 1.387), ('C', 'H', 1.0, 0.93)] -idx=42 H Number of bonds : 1 -C : 41 , H : 42 , 1.0 -BOND CREATED 42 42 41 1.0 H C -BONDS [('H', 'C', 1.0, 0.93)] -idx=43 C Number of bonds : 3 -C : 8 , C : 43 , 1.5 -BOND CREATED 43 43 8 1.5 C C -C : 24 , C : 43 , 1.5 -BOND CREATED 43 43 24 1.5 C C -C : 43 , H : 44 , 1.0 -BOND CREATED 43 43 44 1.0 C H -BONDS [('C', 'C', 1.5, 1.39), ('C', 'C', 1.5, 1.389), ('C', 'H', 1.0, 0.93)] -idx=44 H Number of bonds : 1 -C : 43 , H : 44 , 1.0 -BOND CREATED 44 44 43 1.0 H C -BONDS [('H', 'C', 1.0, 0.93)] -idx=45 C Number of bonds : 3 -C : 45 , C : 47 , 1.5 -BOND CREATED 45 45 47 1.5 C C -C : 45 , C : 64 , 1.5 -BOND CREATED 45 45 64 1.5 C C -C : 45 , H : 65 , 1.0 -BOND CREATED 45 45 65 1.0 C H -BONDS [('C', 'C', 1.5, 1.373), ('C', 'C', 1.5, 1.394), ('C', 'H', 1.0, 0.929)] -idx=46 H Number of bonds : 1 -H : 46 , C : 47 , 1.0 -BOND CREATED 46 46 47 1.0 H C -BONDS [('H', 'C', 1.0, 0.93)] -idx=47 C Number of bonds : 3 -C : 18 , C : 47 , 1.5 -BOND CREATED 47 47 18 1.5 C C -C : 45 , C : 47 , 1.5 -BOND CREATED 47 47 45 1.5 C C -H : 46 , C : 47 , 1.0 -BOND CREATED 47 47 46 1.0 C H -BONDS [('C', 'C', 1.5, 1.399), ('C', 'C', 1.5, 1.373), ('C', 'H', 1.0, 0.93)] -idx=48 H Number of bonds : 1 -C : 30 , H : 48 , 1.0 -BOND CREATED 48 48 30 1.0 H C -BONDS [('H', 'C', 1.0, 0.929)] -idx=49 N Number of bonds : 3 -C : 5 , N : 49 , 1.0 -BOND CREATED 49 49 5 1.0 N C -C : 9 , N : 49 , 1.0 -BOND CREATED 49 49 9 1.0 N C -N : 49 , H : 66 , 1.0 -NO BOND CREATED bond_startatom=49 or bond_endatom=66 is not in the specie.atoms. It belongs to non_bonded_atoms=[66, 67]. -BONDS [('N', 'C', 1.0, 1.456), ('N', 'C', 1.0, 1.332)] -idx=50 N Number of bonds : 3 -C : 9 , N : 50 , 2.0 -BOND CREATED 50 50 9 2.0 N C -N : 50 , C : 52 , 1.0 -BOND CREATED 50 50 52 1.0 N C -N : 50 , H : 67 , 1.0 -NO BOND CREATED bond_startatom=50 or bond_endatom=67 is not in the specie.atoms. It belongs to non_bonded_atoms=[66, 67]. -BONDS [('N', 'C', 2.0, 1.332), ('N', 'C', 1.0, 1.454)] -idx=51 C Number of bonds : 3 -C : 5 , C : 51 , 1.0 -BOND CREATED 51 51 5 1.0 C C -C : 18 , C : 51 , 1.5 -BOND CREATED 51 51 18 1.5 C C -C : 26 , C : 51 , 1.5 -BOND CREATED 51 51 26 1.5 C C -BONDS [('C', 'C', 1.0, 1.52), ('C', 'C', 1.5, 1.412), ('C', 'C', 1.5, 1.393)] -idx=52 C Number of bonds : 4 -C : 8 , C : 52 , 1.0 -BOND CREATED 52 52 8 1.0 C C -C : 32 , C : 52 , 1.0 -BOND CREATED 52 52 32 1.0 C C -N : 50 , C : 52 , 1.0 -BOND CREATED 52 52 50 1.0 C N -C : 52 , H : 53 , 1.0 -BOND CREATED 52 52 53 1.0 C H -BONDS [('C', 'C', 1.0, 1.522), ('C', 'C', 1.0, 1.524), ('C', 'N', 1.0, 1.454), ('C', 'H', 1.0, 0.98)] -idx=53 H Number of bonds : 1 -C : 52 , H : 53 , 1.0 -BOND CREATED 53 53 52 1.0 H C -BONDS [('H', 'C', 1.0, 0.98)] -idx=54 C Number of bonds : 3 -C : 30 , C : 54 , 1.5 -BOND CREATED 54 54 30 1.5 C C -H : 31 , C : 54 , 1.0 -BOND CREATED 54 54 31 1.0 C H -C : 35 , C : 54 , 1.5 -BOND CREATED 54 54 35 1.5 C C -BONDS [('C', 'C', 1.5, 1.382), ('C', 'H', 1.0, 0.93), ('C', 'C', 1.5, 1.379)] -idx=55 H Number of bonds : 1 -C : 35 , H : 55 , 1.0 -BOND CREATED 55 55 35 1.0 H C -BONDS [('H', 'C', 1.0, 0.931)] -idx=56 C Number of bonds : 3 -C : 7 , C : 56 , 1.5 -BOND CREATED 56 56 7 1.5 C C -C : 56 , C : 60 , 1.5 -BOND CREATED 56 56 60 1.5 C C -C : 56 , H : 61 , 1.0 -BOND CREATED 56 56 61 1.0 C H -BONDS [('C', 'C', 1.5, 1.404), ('C', 'C', 1.5, 1.374), ('C', 'H', 1.0, 0.93)] -idx=57 H Number of bonds : 1 -H : 57 , C : 60 , 1.0 -BOND CREATED 57 57 60 1.0 H C -BONDS [('H', 'C', 1.0, 0.929)] -idx=58 C Number of bonds : 3 -C : 7 , C : 58 , 1.0 -BOND CREATED 58 58 7 1.0 C C -C : 33 , C : 58 , 2.0 -BOND CREATED 58 58 33 2.0 C C -C : 58 , H : 59 , 1.0 -BOND CREATED 58 58 59 1.0 C H -BONDS [('C', 'C', 1.0, 1.463), ('C', 'C', 2.0, 1.333), ('C', 'H', 1.0, 0.931)] -idx=59 H Number of bonds : 1 -C : 58 , H : 59 , 1.0 -BOND CREATED 59 59 58 1.0 H C -BONDS [('H', 'C', 1.0, 0.931)] -idx=60 C Number of bonds : 3 -C : 37 , C : 60 , 1.5 -BOND CREATED 60 60 37 1.5 C C -C : 56 , C : 60 , 1.5 -BOND CREATED 60 60 56 1.5 C C -H : 57 , C : 60 , 1.0 -BOND CREATED 60 60 57 1.0 C H -BONDS [('C', 'C', 1.5, 1.387), ('C', 'C', 1.5, 1.374), ('C', 'H', 1.0, 0.929)] -idx=61 H Number of bonds : 1 -C : 56 , H : 61 , 1.0 -BOND CREATED 61 61 56 1.0 H C -BONDS [('H', 'C', 1.0, 0.93)] -idx=62 C Number of bonds : 3 -C : 22 , C : 62 , 1.5 -BOND CREATED 62 62 22 1.5 C C -C : 39 , C : 62 , 1.5 -BOND CREATED 62 62 39 1.5 C C -C : 62 , H : 63 , 1.0 -BOND CREATED 62 62 63 1.0 C H -BONDS [('C', 'C', 1.5, 1.386), ('C', 'C', 1.5, 1.381), ('C', 'H', 1.0, 0.93)] -idx=63 H Number of bonds : 1 -C : 62 , H : 63 , 1.0 -BOND CREATED 63 63 62 1.0 H C -BONDS [('H', 'C', 1.0, 0.93)] -idx=64 C Number of bonds : 3 -C : 26 , C : 64 , 1.5 -BOND CREATED 64 64 26 1.5 C C -H : 27 , C : 64 , 1.0 -BOND CREATED 64 64 27 1.0 C H -C : 45 , C : 64 , 1.5 -BOND CREATED 64 64 45 1.5 C C -BONDS [('C', 'C', 1.5, 1.385), ('C', 'H', 1.0, 0.93), ('C', 'C', 1.5, 1.394)] -idx=65 H Number of bonds : 1 -C : 45 , H : 65 , 1.0 -BOND CREATED 65 65 45 1.0 H C -BONDS [('H', 'C', 1.0, 0.929)] -idx=66 H Number of bonds : 1 -N : 49 , H : 66 , 1.0 -NO BOND CREATED bond_startatom=49 or bond_endatom=66 is not in the specie.atoms. It belongs to non_bonded_atoms=[66, 67]. -NO BONDS -idx=67 H Number of bonds : 1 -N : 50 , H : 67 , 1.0 -NO BOND CREATED bond_startatom=50 or bond_endatom=67 is not in the specie.atoms. It belongs to non_bonded_atoms=[66, 67]. -NO BONDS - -CREATE BONDS: Number of atoms in ligand object and RDKit MOL are equal: 1 1 -idx=0 Br Number of bonds : 0 -NO BONDS CREATED - -CREATE BONDS: Number of atoms in ligand object and RDKit MOL are equal: 1 1 -idx=0 Br Number of bonds : 0 -NO BONDS CREATED -CELL.CREATE_BONDS: error creating bonds for atom: -------------- Cell2mol ATOM Object ---------------- - Version = 0.1 - Type = atom - Label = C - Atomic Number = 6 - Index in Molecule = 12 - Index in Ligand = 9 - Metal Adjacency (mconnec) = 0 - Regular Adjacencies (connec) = 0 - Atom Charge = 0.0 ----------------------------------------------------- - - of ligand: -------------- Cell2mol LIGAND Object -------------- - Version = 0.1 - Type = specie - Sub-Type = ligand - Number of Atoms = 66 - Formula = H27-C37-N2 - Has Adjacency Matrix = YES - Total Charge = -1 - Smiles = [H]C1=C([H])c2c([H])c([H])c([H])c([H])c2C([H])(N([H])C(c2c([H])c([H])c([H])c([H])c2[H])=[N+]([H])C2([H])c3c([H])c([H])c([H])c([H])c3C([H])=C([H])c3c([H])c([H])c([H])c([H])c32)c2c([H])c([H])c([H])c([H])c21 - Origin = split_complex - Number of Groups = 2 ---------------------------------------------------- - - -CELL.CREATE_BONDS: count differs from atom.mconnec: 1, 0 -0 C -C C 1.5 -0 2 -C C 1.0 -0 9 -C C 1.5 -0 11 -1 C -C C 1.0 -1 5 -C C 1.5 -1 7 -C C 1.5 -1 41 -2 C -C C 1.5 -2 0 -C C 1.5 -2 35 -C H 1.0 -2 36 -3 C -C H 1.0 -3 4 -C C 1.5 -3 22 -C C 1.5 -3 32 -4 H -H C 1.0 -4 3 -5 C -C C 1.0 -5 1 -C H 1.0 -5 6 -C N 1.0 -5 49 -C C 1.0 -5 51 -6 H -H C 1.0 -6 5 -7 C -C C 1.5 -7 1 -C C 1.5 -7 56 -C C 1.0 -7 58 -8 C -C C 1.5 -8 21 -C C 1.5 -8 43 -C C 1.0 -8 52 -9 C -C C 1.0 -9 0 -C N 1.0 -9 49 -C N 2.0 -9 50 -Fe C 0 -10 H -H C 1.0 -10 26 -11 C -C C 1.5 -11 0 -C H 1.0 -11 12 -C C 1.5 -11 30 -12 H -H C 1.0 -12 11 -13 C -C C 1.0 -13 17 -C C 2.0 -13 19 -C H 1.0 -13 23 -14 H -H C 1.0 -14 22 -15 C -C C 1.5 -15 24 -C C 1.5 -15 28 -C H 1.0 -15 29 -16 H -H C 1.0 -16 28 -17 C -C C 1.0 -17 13 -C C 1.5 -17 32 -C C 1.5 -17 39 -18 C -C C 1.0 -18 33 -C C 1.5 -18 47 -C C 1.5 -18 51 -19 C -C C 2.0 -19 13 -C H 1.0 -19 20 -C C 1.0 -19 21 -20 H -H C 1.0 -20 19 -21 C -C C 1.5 -21 8 -C C 1.0 -21 19 -C C 1.5 -21 28 -22 C -C C 1.5 -22 3 -C H 1.0 -22 14 -C C 1.5 -22 62 -23 H -H C 1.0 -23 13 -24 C -C C 1.5 -24 15 -C H 1.0 -24 25 -C C 1.5 -24 43 -25 H -H C 1.0 -25 24 -26 C -C H 1.0 -26 10 -C C 1.5 -26 51 -C C 1.5 -26 64 -27 H -H C 1.0 -27 64 -28 C -C C 1.5 -28 15 -C H 1.0 -28 16 -C C 1.5 -28 21 -29 H -H C 1.0 -29 15 -30 C -C C 1.5 -30 11 -C H 1.0 -30 48 -C C 1.5 -30 54 -31 H -H C 1.0 -31 54 -32 C -C C 1.5 -32 3 -C C 1.5 -32 17 -C C 1.0 -32 52 -33 C -C C 1.0 -33 18 -C H 1.0 -33 34 -C C 2.0 -33 58 -34 H -H C 1.0 -34 33 -35 C -C C 1.5 -35 2 -C C 1.5 -35 54 -C H 1.0 -35 55 -36 H -H C 1.0 -36 2 -37 C -C H 1.0 -37 38 -C C 1.5 -37 41 -C C 1.5 -37 60 -38 H -H C 1.0 -38 37 -39 C -C C 1.5 -39 17 -C H 1.0 -39 40 -C C 1.5 -39 62 -40 H -H C 1.0 -40 39 -41 C -C C 1.5 -41 1 -C C 1.5 -41 37 -C H 1.0 -41 42 -42 H -H C 1.0 -42 41 -43 C -C C 1.5 -43 8 -C C 1.5 -43 24 -C H 1.0 -43 44 -44 H -H C 1.0 -44 43 -45 C -C C 1.5 -45 47 -C C 1.5 -45 64 -C H 1.0 -45 65 -46 H -H C 1.0 -46 47 -47 C -C C 1.5 -47 18 -C C 1.5 -47 45 -C H 1.0 -47 46 -48 H -H C 1.0 -48 30 -49 N -N C 1.0 -49 5 -N C 1.0 -49 9 -Fe N 0 -50 N -N C 2.0 -50 9 -N C 1.0 -50 52 -Fe N 0 -51 C -C C 1.0 -51 5 -C C 1.5 -51 18 -C C 1.5 -51 26 -52 C -C C 1.0 -52 8 -C C 1.0 -52 32 -C N 1.0 -52 50 -C H 1.0 -52 53 -53 H -H C 1.0 -53 52 -54 C -C C 1.5 -54 30 -C H 1.0 -54 31 -C C 1.5 -54 35 -55 H -H C 1.0 -55 35 -56 C -C C 1.5 -56 7 -C C 1.5 -56 60 -C H 1.0 -56 61 -57 H -H C 1.0 -57 60 -58 C -C C 1.0 -58 7 -C C 2.0 -58 33 -C H 1.0 -58 59 -59 H -H C 1.0 -59 58 -60 C -C C 1.5 -60 37 -C C 1.5 -60 56 -C H 1.0 -60 57 -61 H -H C 1.0 -61 56 -62 C -C C 1.5 -62 22 -C C 1.5 -62 39 -C H 1.0 -62 63 -63 H -H C 1.0 -63 62 -64 C -C C 1.5 -64 26 -C H 1.0 -64 27 -C C 1.5 -64 45 -65 H -H C 1.0 -65 45 - -0 Br -Br Fe 0 - -0 Br -Br Fe 0 - -CELL.CREATE_BONDS: Creating Bonds for molecule H27-C37-N2-Fe-Br2 - -CREATE BONDS: Number of atoms in ligand object and RDKit MOL are different: 66 68 -[(0, 'C'), (1, 'C'), (2, 'C'), (3, 'C'), (4, 'H'), (5, 'C'), (6, 'H'), (7, 'C'), (8, 'C'), (9, 'C'), (10, 'H'), (11, 'C'), (12, 'H'), (13, 'C'), (14, 'H'), (15, 'C'), (16, 'H'), (17, 'C'), (18, 'C'), (19, 'C'), (20, 'H'), (21, 'C'), (22, 'C'), (23, 'H'), (24, 'C'), (25, 'H'), (26, 'C'), (27, 'H'), (28, 'C'), (29, 'H'), (30, 'C'), (31, 'H'), (32, 'C'), (33, 'C'), (34, 'H'), (35, 'C'), (36, 'H'), (37, 'C'), (38, 'H'), (39, 'C'), (40, 'H'), (41, 'C'), (42, 'H'), (43, 'C'), (44, 'H'), (45, 'C'), (46, 'H'), (47, 'C'), (48, 'H'), (49, 'N'), (50, 'N'), (51, 'C'), (52, 'C'), (53, 'H'), (54, 'C'), (55, 'H'), (56, 'C'), (57, 'H'), (58, 'C'), (59, 'H'), (60, 'C'), (61, 'H'), (62, 'C'), (63, 'H'), (64, 'C'), (65, 'H')] -[(0, 'C'), (1, 'C'), (2, 'C'), (3, 'C'), (4, 'H'), (5, 'C'), (6, 'H'), (7, 'C'), (8, 'C'), (9, 'C'), (10, 'H'), (11, 'C'), (12, 'H'), (13, 'C'), (14, 'H'), (15, 'C'), (16, 'H'), (17, 'C'), (18, 'C'), (19, 'C'), (20, 'H'), (21, 'C'), (22, 'C'), (23, 'H'), (24, 'C'), (25, 'H'), (26, 'C'), (27, 'H'), (28, 'C'), (29, 'H'), (30, 'C'), (31, 'H'), (32, 'C'), (33, 'C'), (34, 'H'), (35, 'C'), (36, 'H'), (37, 'C'), (38, 'H'), (39, 'C'), (40, 'H'), (41, 'C'), (42, 'H'), (43, 'C'), (44, 'H'), (45, 'C'), (46, 'H'), (47, 'C'), (48, 'H'), (49, 'N'), (50, 'N'), (51, 'C'), (52, 'C'), (53, 'H'), (54, 'C'), (55, 'H'), (56, 'C'), (57, 'H'), (58, 'C'), (59, 'H'), (60, 'C'), (61, 'H'), (62, 'C'), (63, 'H'), (64, 'C'), (65, 'H'), (66, 'H'), (67, 'H')] -NON_BONDED_ATOMS [66, 67] -idx=0 C Number of bonds : 3 -C : 0 , C : 2 , 1.0 -BOND CREATED 0 0 2 1.0 C C -C : 0 , C : 3 , 1.5 -BOND CREATED 0 0 3 1.5 C C -C : 0 , C : 9 , 1.5 -BOND CREATED 0 0 9 1.5 C C -BONDS [('C', 'C', 1.0, 1.495), ('C', 'C', 1.5, 1.391), ('C', 'C', 1.5, 1.387)] -idx=1 C Number of bonds : 3 -C : 1 , C : 5 , 1.0 -BOND CREATED 1 1 5 1.0 C C -C : 1 , C : 7 , 1.5 -BOND CREATED 1 1 7 1.5 C C -C : 1 , C : 54 , 1.5 -BOND CREATED 1 1 54 1.5 C C -BONDS [('C', 'C', 1.0, 1.522), ('C', 'C', 1.5, 1.41), ('C', 'C', 1.5, 1.39)] -idx=2 C Number of bonds : 3 -C : 0 , C : 2 , 1.0 -BOND CREATED 2 2 0 1.0 C C -C : 2 , N : 49 , 1.0 -BOND CREATED 2 2 49 1.0 C N -C : 2 , N : 50 , 2.0 -BOND CREATED 2 2 50 2.0 C N -BONDS [('C', 'C', 1.0, 1.495), ('C', 'N', 1.0, 1.332), ('C', 'N', 2.0, 1.332)] -idx=3 C Number of bonds : 3 -C : 0 , C : 3 , 1.5 -BOND CREATED 3 3 0 1.5 C C -C : 3 , H : 4 , 1.0 -BOND CREATED 3 3 4 1.0 C H -C : 3 , C : 41 , 1.5 -BOND CREATED 3 3 41 1.5 C C -BONDS [('C', 'C', 1.5, 1.391), ('C', 'H', 1.0, 0.931), ('C', 'C', 1.5, 1.39)] -idx=4 H Number of bonds : 1 -C : 3 , H : 4 , 1.0 -BOND CREATED 4 4 3 1.0 H C -BONDS [('H', 'C', 1.0, 0.931)] -idx=5 C Number of bonds : 4 -C : 1 , C : 5 , 1.0 -BOND CREATED 5 5 1 1.0 C C -C : 5 , H : 6 , 1.0 -BOND CREATED 5 5 6 1.0 C H -C : 5 , N : 49 , 1.0 -BOND CREATED 5 5 49 1.0 C N -C : 5 , C : 51 , 1.0 -BOND CREATED 5 5 51 1.0 C C -BONDS [('C', 'C', 1.0, 1.522), ('C', 'H', 1.0, 0.98), ('C', 'N', 1.0, 1.454), ('C', 'C', 1.0, 1.524)] -idx=6 H Number of bonds : 1 -C : 5 , H : 6 , 1.0 -BOND CREATED 6 6 5 1.0 H C -BONDS [('H', 'C', 1.0, 0.98)] -idx=7 C Number of bonds : 3 -C : 1 , C : 7 , 1.5 -BOND CREATED 7 7 1 1.5 C C -C : 7 , C : 37 , 1.0 -BOND CREATED 7 7 37 1.0 C C -C : 7 , C : 56 , 1.5 -BOND CREATED 7 7 56 1.5 C C -BONDS [('C', 'C', 1.5, 1.41), ('C', 'C', 1.0, 1.463), ('C', 'C', 1.5, 1.397)] -idx=8 C Number of bonds : 3 -C : 8 , C : 21 , 1.5 -BOND CREATED 8 8 21 1.5 C C -C : 8 , C : 30 , 1.5 -BOND CREATED 8 8 30 1.5 C C -C : 8 , C : 52 , 1.0 -BOND CREATED 8 8 52 1.0 C C -BONDS [('C', 'C', 1.5, 1.41), ('C', 'C', 1.5, 1.392), ('C', 'C', 1.0, 1.528)] -idx=9 C Number of bonds : 3 -C : 0 , C : 9 , 1.5 -BOND CREATED 9 9 0 1.5 C C -C : 9 , H : 10 , 1.0 -BOND CREATED 9 9 10 1.0 C H -C : 9 , C : 26 , 1.5 -BOND CREATED 9 9 26 1.5 C C -BONDS [('C', 'C', 1.5, 1.387), ('C', 'H', 1.0, 0.93), ('C', 'C', 1.5, 1.39)] -idx=10 H Number of bonds : 1 -C : 9 , H : 10 , 1.0 -BOND CREATED 10 10 9 1.0 H C -BONDS [('H', 'C', 1.0, 0.93)] -idx=11 C Number of bonds : 3 -C : 11 , H : 12 , 1.0 -BOND CREATED 11 11 12 1.0 C H -C : 11 , C : 47 , 1.5 -BOND CREATED 11 11 47 1.5 C C -C : 11 , C : 51 , 1.5 -BOND CREATED 11 11 51 1.5 C C -BONDS [('C', 'H', 1.0, 0.929), ('C', 'C', 1.5, 1.389), ('C', 'C', 1.5, 1.399)] -idx=12 H Number of bonds : 1 -C : 11 , H : 12 , 1.0 -BOND CREATED 12 12 11 1.0 H C -BONDS [('H', 'C', 1.0, 0.929)] -idx=13 C Number of bonds : 3 -C : 13 , H : 14 , 1.0 -BOND CREATED 13 13 14 1.0 C H -C : 13 , C : 17 , 1.0 -BOND CREATED 13 13 17 1.0 C C -C : 13 , C : 24 , 2.0 -BOND CREATED 13 13 24 2.0 C C -BONDS [('C', 'H', 1.0, 0.93), ('C', 'C', 1.0, 1.466), ('C', 'C', 2.0, 1.333)] -idx=14 H Number of bonds : 1 -C : 13 , H : 14 , 1.0 -BOND CREATED 14 14 13 1.0 H C -BONDS [('H', 'C', 1.0, 0.93)] -idx=15 C Number of bonds : 3 -C : 15 , H : 16 , 1.0 -BOND CREATED 15 15 16 1.0 C H -C : 15 , C : 19 , 1.5 -BOND CREATED 15 15 19 1.5 C C -C : 15 , C : 28 , 1.5 -BOND CREATED 15 15 28 1.5 C C -BONDS [('C', 'H', 1.0, 0.929), ('C', 'C', 1.5, 1.387), ('C', 'C', 1.5, 1.374)] -idx=16 H Number of bonds : 1 -C : 15 , H : 16 , 1.0 -BOND CREATED 16 16 15 1.0 H C -BONDS [('H', 'C', 1.0, 0.929)] -idx=17 C Number of bonds : 3 -C : 13 , C : 17 , 1.0 -BOND CREATED 17 17 13 1.0 C C -C : 17 , C : 22 , 1.5 -BOND CREATED 17 17 22 1.5 C C -C : 17 , C : 32 , 1.5 -BOND CREATED 17 17 32 1.5 C C -BONDS [('C', 'C', 1.0, 1.466), ('C', 'C', 1.5, 1.399), ('C', 'C', 1.5, 1.412)] -idx=18 C Number of bonds : 3 -C : 18 , C : 33 , 1.0 -BOND CREATED 18 18 33 1.0 C C -C : 18 , C : 45 , 1.5 -BOND CREATED 18 18 45 1.5 C C -C : 18 , C : 51 , 1.5 -BOND CREATED 18 18 51 1.5 C C -BONDS [('C', 'C', 1.0, 1.465), ('C', 'C', 1.5, 1.403), ('C', 'C', 1.5, 1.406)] -idx=19 C Number of bonds : 3 -C : 15 , C : 19 , 1.5 -BOND CREATED 19 19 15 1.5 C C -C : 19 , H : 20 , 1.0 -BOND CREATED 19 19 20 1.0 C H -C : 19 , C : 30 , 1.5 -BOND CREATED 19 19 30 1.5 C C -BONDS [('C', 'C', 1.5, 1.387), ('C', 'H', 1.0, 0.93), ('C', 'C', 1.5, 1.387)] -idx=20 H Number of bonds : 1 -C : 19 , H : 20 , 1.0 -BOND CREATED 20 20 19 1.0 H C -BONDS [('H', 'C', 1.0, 0.93)] -idx=21 C Number of bonds : 3 -C : 8 , C : 21 , 1.5 -BOND CREATED 21 21 8 1.5 C C -C : 21 , C : 24 , 1.0 -BOND CREATED 21 21 24 1.0 C C -C : 21 , C : 28 , 1.5 -BOND CREATED 21 21 28 1.5 C C -BONDS [('C', 'C', 1.5, 1.41), ('C', 'C', 1.0, 1.463), ('C', 'C', 1.5, 1.404)] -idx=22 C Number of bonds : 3 -C : 17 , C : 22 , 1.5 -BOND CREATED 22 22 17 1.5 C C -C : 22 , H : 23 , 1.0 -BOND CREATED 22 22 23 1.0 C H -C : 22 , C : 39 , 1.5 -BOND CREATED 22 22 39 1.5 C C -BONDS [('C', 'C', 1.5, 1.399), ('C', 'H', 1.0, 0.93), ('C', 'C', 1.5, 1.373)] -idx=23 H Number of bonds : 1 -C : 22 , H : 23 , 1.0 -BOND CREATED 23 23 22 1.0 H C -BONDS [('H', 'C', 1.0, 0.93)] -idx=24 C Number of bonds : 3 -C : 13 , C : 24 , 2.0 -BOND CREATED 24 24 13 2.0 C C -C : 21 , C : 24 , 1.0 -BOND CREATED 24 24 21 1.0 C C -C : 24 , H : 25 , 1.0 -BOND CREATED 24 24 25 1.0 C H -BONDS [('C', 'C', 2.0, 1.333), ('C', 'C', 1.0, 1.463), ('C', 'H', 1.0, 0.931)] -idx=25 H Number of bonds : 1 -C : 24 , H : 25 , 1.0 -BOND CREATED 25 25 24 1.0 H C -BONDS [('H', 'C', 1.0, 0.931)] -idx=26 C Number of bonds : 3 -C : 9 , C : 26 , 1.5 -BOND CREATED 26 26 9 1.5 C C -C : 26 , H : 27 , 1.0 -BOND CREATED 26 26 27 1.0 C H -C : 26 , C : 43 , 1.5 -BOND CREATED 26 26 43 1.5 C C -BONDS [('C', 'C', 1.5, 1.39), ('C', 'H', 1.0, 0.931), ('C', 'C', 1.5, 1.379)] -idx=27 H Number of bonds : 1 -C : 26 , H : 27 , 1.0 -BOND CREATED 27 27 26 1.0 H C -BONDS [('H', 'C', 1.0, 0.931)] -idx=28 C Number of bonds : 3 -C : 15 , C : 28 , 1.5 -BOND CREATED 28 28 15 1.5 C C -C : 21 , C : 28 , 1.5 -BOND CREATED 28 28 21 1.5 C C -C : 28 , H : 29 , 1.0 -BOND CREATED 28 28 29 1.0 C H -BONDS [('C', 'C', 1.5, 1.374), ('C', 'C', 1.5, 1.404), ('C', 'H', 1.0, 0.93)] -idx=29 H Number of bonds : 1 -C : 28 , H : 29 , 1.0 -BOND CREATED 29 29 28 1.0 H C -BONDS [('H', 'C', 1.0, 0.93)] -idx=30 C Number of bonds : 3 -C : 8 , C : 30 , 1.5 -BOND CREATED 30 30 8 1.5 C C -C : 19 , C : 30 , 1.5 -BOND CREATED 30 30 19 1.5 C C -C : 30 , H : 31 , 1.0 -BOND CREATED 30 30 31 1.0 C H -BONDS [('C', 'C', 1.5, 1.392), ('C', 'C', 1.5, 1.387), ('C', 'H', 1.0, 0.93)] -idx=31 H Number of bonds : 1 -C : 30 , H : 31 , 1.0 -BOND CREATED 31 31 30 1.0 H C -BONDS [('H', 'C', 1.0, 0.93)] -idx=32 C Number of bonds : 3 -C : 17 , C : 32 , 1.5 -BOND CREATED 32 32 17 1.5 C C -C : 32 , C : 35 , 1.5 -BOND CREATED 32 32 35 1.5 C C -C : 32 , C : 52 , 1.0 -BOND CREATED 32 32 52 1.0 C C -BONDS [('C', 'C', 1.5, 1.412), ('C', 'C', 1.5, 1.393), ('C', 'C', 1.0, 1.52)] -idx=33 C Number of bonds : 3 -C : 18 , C : 33 , 1.0 -BOND CREATED 33 33 18 1.0 C C -C : 33 , H : 34 , 1.0 -BOND CREATED 33 33 34 1.0 C H -C : 33 , C : 37 , 2.0 -BOND CREATED 33 33 37 2.0 C C -BONDS [('C', 'C', 1.0, 1.465), ('C', 'H', 1.0, 0.93), ('C', 'C', 2.0, 1.339)] -idx=34 H Number of bonds : 1 -C : 33 , H : 34 , 1.0 -BOND CREATED 34 34 33 1.0 H C -BONDS [('H', 'C', 1.0, 0.93)] -idx=35 C Number of bonds : 3 -C : 32 , C : 35 , 1.5 -BOND CREATED 35 35 32 1.5 C C -C : 35 , H : 36 , 1.0 -BOND CREATED 35 35 36 1.0 C H -C : 35 , C : 62 , 1.5 -BOND CREATED 35 35 62 1.5 C C -BONDS [('C', 'C', 1.5, 1.393), ('C', 'H', 1.0, 0.93), ('C', 'C', 1.5, 1.385)] -idx=36 H Number of bonds : 1 -C : 35 , H : 36 , 1.0 -BOND CREATED 36 36 35 1.0 H C -BONDS [('H', 'C', 1.0, 0.93)] -idx=37 C Number of bonds : 3 -C : 7 , C : 37 , 1.0 -BOND CREATED 37 37 7 1.0 C C -C : 33 , C : 37 , 2.0 -BOND CREATED 37 37 33 2.0 C C -C : 37 , H : 38 , 1.0 -BOND CREATED 37 37 38 1.0 C H -BONDS [('C', 'C', 1.0, 1.463), ('C', 'C', 2.0, 1.339), ('C', 'H', 1.0, 0.931)] -idx=38 H Number of bonds : 1 -C : 37 , H : 38 , 1.0 -BOND CREATED 38 38 37 1.0 H C -BONDS [('H', 'C', 1.0, 0.931)] -idx=39 C Number of bonds : 3 -C : 22 , C : 39 , 1.5 -BOND CREATED 39 39 22 1.5 C C -C : 39 , H : 40 , 1.0 -BOND CREATED 39 39 40 1.0 C H -C : 39 , C : 62 , 1.5 -BOND CREATED 39 39 62 1.5 C C -BONDS [('C', 'C', 1.5, 1.373), ('C', 'H', 1.0, 0.929), ('C', 'C', 1.5, 1.394)] -idx=40 H Number of bonds : 1 -C : 39 , H : 40 , 1.0 -BOND CREATED 40 40 39 1.0 H C -BONDS [('H', 'C', 1.0, 0.929)] -idx=41 C Number of bonds : 3 -C : 3 , C : 41 , 1.5 -BOND CREATED 41 41 3 1.5 C C -C : 41 , H : 42 , 1.0 -BOND CREATED 41 41 42 1.0 C H -C : 41 , C : 43 , 1.5 -BOND CREATED 41 41 43 1.5 C C -BONDS [('C', 'C', 1.5, 1.39), ('C', 'H', 1.0, 0.929), ('C', 'C', 1.5, 1.382)] -idx=42 H Number of bonds : 1 -C : 41 , H : 42 , 1.0 -BOND CREATED 42 42 41 1.0 H C -BONDS [('H', 'C', 1.0, 0.929)] -idx=43 C Number of bonds : 3 -C : 26 , C : 43 , 1.5 -BOND CREATED 43 43 26 1.5 C C -C : 41 , C : 43 , 1.5 -BOND CREATED 43 43 41 1.5 C C -C : 43 , H : 44 , 1.0 -BOND CREATED 43 43 44 1.0 C H -BONDS [('C', 'C', 1.5, 1.379), ('C', 'C', 1.5, 1.382), ('C', 'H', 1.0, 0.93)] -idx=44 H Number of bonds : 1 -C : 43 , H : 44 , 1.0 -BOND CREATED 44 44 43 1.0 H C -BONDS [('H', 'C', 1.0, 0.93)] -idx=45 C Number of bonds : 3 -C : 18 , C : 45 , 1.5 -BOND CREATED 45 45 18 1.5 C C -C : 45 , H : 46 , 1.0 -BOND CREATED 45 45 46 1.0 C H -C : 45 , C : 64 , 1.5 -BOND CREATED 45 45 64 1.5 C C -BONDS [('C', 'C', 1.5, 1.403), ('C', 'H', 1.0, 0.93), ('C', 'C', 1.5, 1.381)] -idx=46 H Number of bonds : 1 -C : 45 , H : 46 , 1.0 -BOND CREATED 46 46 45 1.0 H C -BONDS [('H', 'C', 1.0, 0.93)] -idx=47 C Number of bonds : 3 -C : 11 , C : 47 , 1.5 -BOND CREATED 47 47 11 1.5 C C -C : 47 , H : 48 , 1.0 -BOND CREATED 47 47 48 1.0 C H -C : 47 , C : 64 , 1.5 -BOND CREATED 47 47 64 1.5 C C -BONDS [('C', 'C', 1.5, 1.389), ('C', 'H', 1.0, 0.93), ('C', 'C', 1.5, 1.386)] -idx=48 H Number of bonds : 1 -C : 47 , H : 48 , 1.0 -BOND CREATED 48 48 47 1.0 H C -BONDS [('H', 'C', 1.0, 0.93)] -idx=49 N Number of bonds : 3 -C : 2 , N : 49 , 1.0 -BOND CREATED 49 49 2 1.0 N C -C : 5 , N : 49 , 1.0 -BOND CREATED 49 49 5 1.0 N C -N : 49 , H : 66 , 1.0 -NO BOND CREATED bond_startatom=49 or bond_endatom=66 is not in the specie.atoms. It belongs to non_bonded_atoms=[66, 67]. -BONDS [('N', 'C', 1.0, 1.332), ('N', 'C', 1.0, 1.454)] -idx=50 N Number of bonds : 3 -C : 2 , N : 50 , 2.0 -BOND CREATED 50 50 2 2.0 N C -N : 50 , C : 52 , 1.0 -BOND CREATED 50 50 52 1.0 N C -N : 50 , H : 67 , 1.0 -NO BOND CREATED bond_startatom=50 or bond_endatom=67 is not in the specie.atoms. It belongs to non_bonded_atoms=[66, 67]. -BONDS [('N', 'C', 2.0, 1.332), ('N', 'C', 1.0, 1.456)] -idx=51 C Number of bonds : 3 -C : 5 , C : 51 , 1.0 -BOND CREATED 51 51 5 1.0 C C -C : 11 , C : 51 , 1.5 -BOND CREATED 51 51 11 1.5 C C -C : 18 , C : 51 , 1.5 -BOND CREATED 51 51 18 1.5 C C -BONDS [('C', 'C', 1.0, 1.524), ('C', 'C', 1.5, 1.399), ('C', 'C', 1.5, 1.406)] -idx=52 C Number of bonds : 4 -C : 8 , C : 52 , 1.0 -BOND CREATED 52 52 8 1.0 C C -C : 32 , C : 52 , 1.0 -BOND CREATED 52 52 32 1.0 C C -N : 50 , C : 52 , 1.0 -BOND CREATED 52 52 50 1.0 C N -C : 52 , H : 53 , 1.0 -BOND CREATED 52 52 53 1.0 C H -BONDS [('C', 'C', 1.0, 1.528), ('C', 'C', 1.0, 1.52), ('C', 'N', 1.0, 1.456), ('C', 'H', 1.0, 0.979)] -idx=53 H Number of bonds : 1 -C : 52 , H : 53 , 1.0 -BOND CREATED 53 53 52 1.0 H C -BONDS [('H', 'C', 1.0, 0.979)] -idx=54 C Number of bonds : 3 -C : 1 , C : 54 , 1.5 -BOND CREATED 54 54 1 1.5 C C -C : 54 , H : 55 , 1.0 -BOND CREATED 54 54 55 1.0 C H -C : 54 , C : 58 , 1.5 -BOND CREATED 54 54 58 1.5 C C -BONDS [('C', 'C', 1.5, 1.39), ('C', 'H', 1.0, 0.93), ('C', 'C', 1.5, 1.389)] -idx=55 H Number of bonds : 1 -C : 54 , H : 55 , 1.0 -BOND CREATED 55 55 54 1.0 H C -BONDS [('H', 'C', 1.0, 0.93)] -idx=56 C Number of bonds : 3 -C : 7 , C : 56 , 1.5 -BOND CREATED 56 56 7 1.5 C C -C : 56 , H : 57 , 1.0 -BOND CREATED 56 56 57 1.0 C H -C : 56 , C : 60 , 1.5 -BOND CREATED 56 56 60 1.5 C C -BONDS [('C', 'C', 1.5, 1.397), ('C', 'H', 1.0, 0.93), ('C', 'C', 1.5, 1.38)] -idx=57 H Number of bonds : 1 -C : 56 , H : 57 , 1.0 -BOND CREATED 57 57 56 1.0 H C -BONDS [('H', 'C', 1.0, 0.93)] -idx=58 C Number of bonds : 3 -C : 54 , C : 58 , 1.5 -BOND CREATED 58 58 54 1.5 C C -C : 58 , H : 59 , 1.0 -BOND CREATED 58 58 59 1.0 C H -C : 58 , C : 60 , 1.5 -BOND CREATED 58 58 60 1.5 C C -BONDS [('C', 'C', 1.5, 1.389), ('C', 'H', 1.0, 0.93), ('C', 'C', 1.5, 1.387)] -idx=59 H Number of bonds : 1 -C : 58 , H : 59 , 1.0 -BOND CREATED 59 59 58 1.0 H C -BONDS [('H', 'C', 1.0, 0.93)] -idx=60 C Number of bonds : 3 -C : 56 , C : 60 , 1.5 -BOND CREATED 60 60 56 1.5 C C -C : 58 , C : 60 , 1.5 -BOND CREATED 60 60 58 1.5 C C -C : 60 , H : 61 , 1.0 -BOND CREATED 60 60 61 1.0 C H -BONDS [('C', 'C', 1.5, 1.38), ('C', 'C', 1.5, 1.387), ('C', 'H', 1.0, 0.93)] -idx=61 H Number of bonds : 1 -C : 60 , H : 61 , 1.0 -BOND CREATED 61 61 60 1.0 H C -BONDS [('H', 'C', 1.0, 0.93)] -idx=62 C Number of bonds : 3 -C : 35 , C : 62 , 1.5 -BOND CREATED 62 62 35 1.5 C C -C : 39 , C : 62 , 1.5 -BOND CREATED 62 62 39 1.5 C C -C : 62 , H : 63 , 1.0 -BOND CREATED 62 62 63 1.0 C H -BONDS [('C', 'C', 1.5, 1.385), ('C', 'C', 1.5, 1.394), ('C', 'H', 1.0, 0.93)] -idx=63 H Number of bonds : 1 -C : 62 , H : 63 , 1.0 -BOND CREATED 63 63 62 1.0 H C -BONDS [('H', 'C', 1.0, 0.93)] -idx=64 C Number of bonds : 3 -C : 45 , C : 64 , 1.5 -BOND CREATED 64 64 45 1.5 C C -C : 47 , C : 64 , 1.5 -BOND CREATED 64 64 47 1.5 C C -C : 64 , H : 65 , 1.0 -BOND CREATED 64 64 65 1.0 C H -BONDS [('C', 'C', 1.5, 1.381), ('C', 'C', 1.5, 1.386), ('C', 'H', 1.0, 0.93)] -idx=65 H Number of bonds : 1 -C : 64 , H : 65 , 1.0 -BOND CREATED 65 65 64 1.0 H C -BONDS [('H', 'C', 1.0, 0.93)] -idx=66 H Number of bonds : 1 -N : 49 , H : 66 , 1.0 -NO BOND CREATED bond_startatom=49 or bond_endatom=66 is not in the specie.atoms. It belongs to non_bonded_atoms=[66, 67]. -NO BONDS -idx=67 H Number of bonds : 1 -N : 50 , H : 67 , 1.0 -NO BOND CREATED bond_startatom=50 or bond_endatom=67 is not in the specie.atoms. It belongs to non_bonded_atoms=[66, 67]. -NO BONDS - -CREATE BONDS: Number of atoms in ligand object and RDKit MOL are equal: 1 1 -idx=0 Br Number of bonds : 0 -NO BONDS CREATED - -CREATE BONDS: Number of atoms in ligand object and RDKit MOL are equal: 1 1 -idx=0 Br Number of bonds : 0 -NO BONDS CREATED -CELL.CREATE_BONDS: error creating bonds for atom: -------------- Cell2mol ATOM Object ---------------- - Version = 0.1 - Type = atom - Label = C - Atomic Number = 6 - Index in Molecule = 5 - Index in Ligand = 2 - Metal Adjacency (mconnec) = 0 - Regular Adjacencies (connec) = 0 - Atom Charge = 0.0 ----------------------------------------------------- - - of ligand: -------------- Cell2mol LIGAND Object -------------- - Version = 0.1 - Type = specie - Sub-Type = ligand - Number of Atoms = 66 - Formula = H27-C37-N2 - Has Adjacency Matrix = YES - Total Charge = -1 - Smiles = [H]C1=C([H])c2c([H])c([H])c([H])c([H])c2C([H])(N([H])C(c2c([H])c([H])c([H])c([H])c2[H])=[N+]([H])C2([H])c3c([H])c([H])c([H])c([H])c3C([H])=C([H])c3c([H])c([H])c([H])c([H])c32)c2c([H])c([H])c([H])c([H])c21 - Origin = split_complex - Number of Groups = 2 ---------------------------------------------------- - - -CELL.CREATE_BONDS: count differs from atom.mconnec: 1, 0 -0 C -C C 1.0 -0 2 -C C 1.5 -0 3 -C C 1.5 -0 9 -1 C -C C 1.0 -1 5 -C C 1.5 -1 7 -C C 1.5 -1 54 -2 C -C C 1.0 -2 0 -C N 1.0 -2 49 -C N 2.0 -2 50 -Fe C 0 -3 C -C C 1.5 -3 0 -C H 1.0 -3 4 -C C 1.5 -3 41 -4 H -H C 1.0 -4 3 -5 C -C C 1.0 -5 1 -C H 1.0 -5 6 -C N 1.0 -5 49 -C C 1.0 -5 51 -6 H -H C 1.0 -6 5 -7 C -C C 1.5 -7 1 -C C 1.0 -7 37 -C C 1.5 -7 56 -8 C -C C 1.5 -8 21 -C C 1.5 -8 30 -C C 1.0 -8 52 -9 C -C C 1.5 -9 0 -C H 1.0 -9 10 -C C 1.5 -9 26 -10 H -H C 1.0 -10 9 -11 C -C H 1.0 -11 12 -C C 1.5 -11 47 -C C 1.5 -11 51 -12 H -H C 1.0 -12 11 -13 C -C H 1.0 -13 14 -C C 1.0 -13 17 -C C 2.0 -13 24 -14 H -H C 1.0 -14 13 -15 C -C H 1.0 -15 16 -C C 1.5 -15 19 -C C 1.5 -15 28 -16 H -H C 1.0 -16 15 -17 C -C C 1.0 -17 13 -C C 1.5 -17 22 -C C 1.5 -17 32 -18 C -C C 1.0 -18 33 -C C 1.5 -18 45 -C C 1.5 -18 51 -19 C -C C 1.5 -19 15 -C H 1.0 -19 20 -C C 1.5 -19 30 -20 H -H C 1.0 -20 19 -21 C -C C 1.5 -21 8 -C C 1.0 -21 24 -C C 1.5 -21 28 -22 C -C C 1.5 -22 17 -C H 1.0 -22 23 -C C 1.5 -22 39 -23 H -H C 1.0 -23 22 -24 C -C C 2.0 -24 13 -C C 1.0 -24 21 -C H 1.0 -24 25 -25 H -H C 1.0 -25 24 -26 C -C C 1.5 -26 9 -C H 1.0 -26 27 -C C 1.5 -26 43 -27 H -H C 1.0 -27 26 -28 C -C C 1.5 -28 15 -C C 1.5 -28 21 -C H 1.0 -28 29 -29 H -H C 1.0 -29 28 -30 C -C C 1.5 -30 8 -C C 1.5 -30 19 -C H 1.0 -30 31 -31 H -H C 1.0 -31 30 -32 C -C C 1.5 -32 17 -C C 1.5 -32 35 -C C 1.0 -32 52 -33 C -C C 1.0 -33 18 -C H 1.0 -33 34 -C C 2.0 -33 37 -34 H -H C 1.0 -34 33 -35 C -C C 1.5 -35 32 -C H 1.0 -35 36 -C C 1.5 -35 62 -36 H -H C 1.0 -36 35 -37 C -C C 1.0 -37 7 -C C 2.0 -37 33 -C H 1.0 -37 38 -38 H -H C 1.0 -38 37 -39 C -C C 1.5 -39 22 -C H 1.0 -39 40 -C C 1.5 -39 62 -40 H -H C 1.0 -40 39 -41 C -C C 1.5 -41 3 -C H 1.0 -41 42 -C C 1.5 -41 43 -42 H -H C 1.0 -42 41 -43 C -C C 1.5 -43 26 -C C 1.5 -43 41 -C H 1.0 -43 44 -44 H -H C 1.0 -44 43 -45 C -C C 1.5 -45 18 -C H 1.0 -45 46 -C C 1.5 -45 64 -46 H -H C 1.0 -46 45 -47 C -C C 1.5 -47 11 -C H 1.0 -47 48 -C C 1.5 -47 64 -48 H -H C 1.0 -48 47 -49 N -N C 1.0 -49 2 -N C 1.0 -49 5 -Fe N 0 -50 N -N C 2.0 -50 2 -N C 1.0 -50 52 -Fe N 0 -51 C -C C 1.0 -51 5 -C C 1.5 -51 11 -C C 1.5 -51 18 -52 C -C C 1.0 -52 8 -C C 1.0 -52 32 -C N 1.0 -52 50 -C H 1.0 -52 53 -53 H -H C 1.0 -53 52 -54 C -C C 1.5 -54 1 -C H 1.0 -54 55 -C C 1.5 -54 58 -55 H -H C 1.0 -55 54 -56 C -C C 1.5 -56 7 -C H 1.0 -56 57 -C C 1.5 -56 60 -57 H -H C 1.0 -57 56 -58 C -C C 1.5 -58 54 -C H 1.0 -58 59 -C C 1.5 -58 60 -59 H -H C 1.0 -59 58 -60 C -C C 1.5 -60 56 -C C 1.5 -60 58 -C H 1.0 -60 61 -61 H -H C 1.0 -61 60 -62 C -C C 1.5 -62 35 -C C 1.5 -62 39 -C H 1.0 -62 63 -63 H -H C 1.0 -63 62 -64 C -C C 1.5 -64 45 -C C 1.5 -64 47 -C H 1.0 -64 65 -65 H -H C 1.0 -65 64 - -0 Br -Br Fe 0 - -0 Br -Br Fe 0 - -CELL.CREATE_BONDS: Creating Bonds for molecule H27-C37-N2-Fe-Br2 - -CREATE BONDS: Number of atoms in ligand object and RDKit MOL are different: 66 68 -[(0, 'C'), (1, 'C'), (2, 'C'), (3, 'C'), (4, 'H'), (5, 'C'), (6, 'H'), (7, 'C'), (8, 'C'), (9, 'C'), (10, 'H'), (11, 'C'), (12, 'H'), (13, 'C'), (14, 'H'), (15, 'C'), (16, 'H'), (17, 'C'), (18, 'C'), (19, 'C'), (20, 'H'), (21, 'C'), (22, 'C'), (23, 'H'), (24, 'C'), (25, 'H'), (26, 'C'), (27, 'H'), (28, 'C'), (29, 'H'), (30, 'C'), (31, 'H'), (32, 'C'), (33, 'C'), (34, 'H'), (35, 'C'), (36, 'H'), (37, 'C'), (38, 'H'), (39, 'C'), (40, 'H'), (41, 'C'), (42, 'H'), (43, 'C'), (44, 'H'), (45, 'C'), (46, 'H'), (47, 'C'), (48, 'H'), (49, 'N'), (50, 'N'), (51, 'C'), (52, 'C'), (53, 'H'), (54, 'C'), (55, 'H'), (56, 'C'), (57, 'H'), (58, 'C'), (59, 'H'), (60, 'C'), (61, 'H'), (62, 'C'), (63, 'H'), (64, 'C'), (65, 'H')] -[(0, 'C'), (1, 'C'), (2, 'C'), (3, 'C'), (4, 'H'), (5, 'C'), (6, 'H'), (7, 'C'), (8, 'C'), (9, 'C'), (10, 'H'), (11, 'C'), (12, 'H'), (13, 'C'), (14, 'H'), (15, 'C'), (16, 'H'), (17, 'C'), (18, 'C'), (19, 'C'), (20, 'H'), (21, 'C'), (22, 'C'), (23, 'H'), (24, 'C'), (25, 'H'), (26, 'C'), (27, 'H'), (28, 'C'), (29, 'H'), (30, 'C'), (31, 'H'), (32, 'C'), (33, 'C'), (34, 'H'), (35, 'C'), (36, 'H'), (37, 'C'), (38, 'H'), (39, 'C'), (40, 'H'), (41, 'C'), (42, 'H'), (43, 'C'), (44, 'H'), (45, 'C'), (46, 'H'), (47, 'C'), (48, 'H'), (49, 'N'), (50, 'N'), (51, 'C'), (52, 'C'), (53, 'H'), (54, 'C'), (55, 'H'), (56, 'C'), (57, 'H'), (58, 'C'), (59, 'H'), (60, 'C'), (61, 'H'), (62, 'C'), (63, 'H'), (64, 'C'), (65, 'H'), (66, 'H'), (67, 'H')] -NON_BONDED_ATOMS [66, 67] -idx=0 C Number of bonds : 3 -C : 0 , C : 3 , 1.5 -BOND CREATED 0 0 3 1.5 C C -C : 0 , C : 21 , 1.5 -BOND CREATED 0 0 21 1.5 C C -C : 0 , C : 52 , 1.0 -BOND CREATED 0 0 52 1.0 C C -BONDS [('C', 'C', 1.5, 1.392), ('C', 'C', 1.5, 1.41), ('C', 'C', 1.0, 1.528)] -idx=1 C Number of bonds : 3 -C : 1 , C : 5 , 1.0 -BOND CREATED 1 1 5 1.0 C C -C : 1 , C : 11 , 1.5 -BOND CREATED 1 1 11 1.5 C C -C : 1 , C : 54 , 1.5 -BOND CREATED 1 1 54 1.5 C C -BONDS [('C', 'C', 1.0, 1.522), ('C', 'C', 1.5, 1.41), ('C', 'C', 1.5, 1.39)] -idx=2 C Number of bonds : 3 -C : 2 , C : 8 , 1.0 -BOND CREATED 2 2 8 1.0 C C -C : 2 , N : 49 , 1.0 -BOND CREATED 2 2 49 1.0 C N -C : 2 , N : 50 , 2.0 -BOND CREATED 2 2 50 2.0 C N -BONDS [('C', 'C', 1.0, 1.495), ('C', 'N', 1.0, 1.332), ('C', 'N', 2.0, 1.332)] -idx=3 C Number of bonds : 3 -C : 0 , C : 3 , 1.5 -BOND CREATED 3 3 0 1.5 C C -C : 3 , H : 4 , 1.0 -BOND CREATED 3 3 4 1.0 C H -C : 3 , C : 41 , 1.5 -BOND CREATED 3 3 41 1.5 C C -BONDS [('C', 'C', 1.5, 1.392), ('C', 'H', 1.0, 0.93), ('C', 'C', 1.5, 1.387)] -idx=4 H Number of bonds : 1 -C : 3 , H : 4 , 1.0 -BOND CREATED 4 4 3 1.0 H C -BONDS [('H', 'C', 1.0, 0.93)] -idx=5 C Number of bonds : 4 -C : 1 , C : 5 , 1.0 -BOND CREATED 5 5 1 1.0 C C -C : 5 , H : 12 , 1.0 -BOND CREATED 5 5 12 1.0 C H -C : 5 , N : 49 , 1.0 -BOND CREATED 5 5 49 1.0 C N -C : 5 , C : 51 , 1.0 -BOND CREATED 5 5 51 1.0 C C -BONDS [('C', 'C', 1.0, 1.522), ('C', 'H', 1.0, 0.98), ('C', 'N', 1.0, 1.454), ('C', 'C', 1.0, 1.524)] -idx=6 H Number of bonds : 1 -H : 6 , C : 7 , 1.0 -BOND CREATED 6 6 7 1.0 H C -BONDS [('H', 'C', 1.0, 0.929)] -idx=7 C Number of bonds : 3 -H : 6 , C : 7 , 1.0 -BOND CREATED 7 7 6 1.0 C H -C : 7 , C : 37 , 1.5 -BOND CREATED 7 7 37 1.5 C C -C : 7 , C : 51 , 1.5 -BOND CREATED 7 7 51 1.5 C C -BONDS [('C', 'H', 1.0, 0.929), ('C', 'C', 1.5, 1.389), ('C', 'C', 1.5, 1.399)] -idx=8 C Number of bonds : 3 -C : 2 , C : 8 , 1.0 -BOND CREATED 8 8 2 1.0 C C -C : 8 , C : 9 , 1.5 -BOND CREATED 8 8 9 1.5 C C -C : 8 , C : 30 , 1.5 -BOND CREATED 8 8 30 1.5 C C -BONDS [('C', 'C', 1.0, 1.495), ('C', 'C', 1.5, 1.387), ('C', 'C', 1.5, 1.391)] -idx=9 C Number of bonds : 3 -C : 8 , C : 9 , 1.5 -BOND CREATED 9 9 8 1.5 C C -C : 9 , H : 10 , 1.0 -BOND CREATED 9 9 10 1.0 C H -C : 9 , C : 26 , 1.5 -BOND CREATED 9 9 26 1.5 C C -BONDS [('C', 'C', 1.5, 1.387), ('C', 'H', 1.0, 0.93), ('C', 'C', 1.5, 1.39)] -idx=10 H Number of bonds : 1 -C : 9 , H : 10 , 1.0 -BOND CREATED 10 10 9 1.0 H C -BONDS [('H', 'C', 1.0, 0.93)] -idx=11 C Number of bonds : 3 -C : 1 , C : 11 , 1.5 -BOND CREATED 11 11 1 1.5 C C -C : 11 , C : 47 , 1.0 -BOND CREATED 11 11 47 1.0 C C -C : 11 , C : 56 , 1.5 -BOND CREATED 11 11 56 1.5 C C -BONDS [('C', 'C', 1.5, 1.41), ('C', 'C', 1.0, 1.463), ('C', 'C', 1.5, 1.397)] -idx=12 H Number of bonds : 1 -C : 5 , H : 12 , 1.0 -BOND CREATED 12 12 5 1.0 H C -BONDS [('H', 'C', 1.0, 0.98)] -idx=13 C Number of bonds : 3 -C : 13 , H : 14 , 1.0 -BOND CREATED 13 13 14 1.0 C H -C : 13 , C : 21 , 1.5 -BOND CREATED 13 13 21 1.5 C C -C : 13 , C : 43 , 1.5 -BOND CREATED 13 13 43 1.5 C C -BONDS [('C', 'H', 1.0, 0.93), ('C', 'C', 1.5, 1.404), ('C', 'C', 1.5, 1.374)] -idx=14 H Number of bonds : 1 -C : 13 , H : 14 , 1.0 -BOND CREATED 14 14 13 1.0 H C -BONDS [('H', 'C', 1.0, 0.93)] -idx=15 C Number of bonds : 3 -C : 15 , H : 16 , 1.0 -BOND CREATED 15 15 16 1.0 C H -C : 15 , C : 19 , 1.5 -BOND CREATED 15 15 19 1.5 C C -C : 15 , C : 26 , 1.5 -BOND CREATED 15 15 26 1.5 C C -BONDS [('C', 'H', 1.0, 0.93), ('C', 'C', 1.5, 1.382), ('C', 'C', 1.5, 1.379)] -idx=16 H Number of bonds : 1 -C : 15 , H : 16 , 1.0 -BOND CREATED 16 16 15 1.0 H C -BONDS [('H', 'C', 1.0, 0.93)] -idx=17 C Number of bonds : 3 -C : 17 , C : 22 , 1.5 -BOND CREATED 17 17 22 1.5 C C -C : 17 , C : 28 , 1.0 -BOND CREATED 17 17 28 1.0 C C -C : 17 , C : 32 , 1.5 -BOND CREATED 17 17 32 1.5 C C -BONDS [('C', 'C', 1.5, 1.399), ('C', 'C', 1.0, 1.466), ('C', 'C', 1.5, 1.412)] -idx=18 C Number of bonds : 3 -C : 18 , C : 45 , 1.5 -BOND CREATED 18 18 45 1.5 C C -C : 18 , C : 51 , 1.5 -BOND CREATED 18 18 51 1.5 C C -C : 18 , C : 64 , 1.0 -BOND CREATED 18 18 64 1.0 C C -BONDS [('C', 'C', 1.5, 1.403), ('C', 'C', 1.5, 1.406), ('C', 'C', 1.0, 1.465)] -idx=19 C Number of bonds : 3 -C : 15 , C : 19 , 1.5 -BOND CREATED 19 19 15 1.5 C C -C : 19 , H : 20 , 1.0 -BOND CREATED 19 19 20 1.0 C H -C : 19 , C : 30 , 1.5 -BOND CREATED 19 19 30 1.5 C C -BONDS [('C', 'C', 1.5, 1.382), ('C', 'H', 1.0, 0.929), ('C', 'C', 1.5, 1.39)] -idx=20 H Number of bonds : 1 -C : 19 , H : 20 , 1.0 -BOND CREATED 20 20 19 1.0 H C -BONDS [('H', 'C', 1.0, 0.929)] -idx=21 C Number of bonds : 3 -C : 0 , C : 21 , 1.5 -BOND CREATED 21 21 0 1.5 C C -C : 13 , C : 21 , 1.5 -BOND CREATED 21 21 13 1.5 C C -C : 21 , C : 24 , 1.0 -BOND CREATED 21 21 24 1.0 C C -BONDS [('C', 'C', 1.5, 1.41), ('C', 'C', 1.5, 1.404), ('C', 'C', 1.0, 1.463)] -idx=22 C Number of bonds : 3 -C : 17 , C : 22 , 1.5 -BOND CREATED 22 22 17 1.5 C C -C : 22 , H : 23 , 1.0 -BOND CREATED 22 22 23 1.0 C H -C : 22 , C : 39 , 1.5 -BOND CREATED 22 22 39 1.5 C C -BONDS [('C', 'C', 1.5, 1.399), ('C', 'H', 1.0, 0.93), ('C', 'C', 1.5, 1.373)] -idx=23 H Number of bonds : 1 -C : 22 , H : 23 , 1.0 -BOND CREATED 23 23 22 1.0 H C -BONDS [('H', 'C', 1.0, 0.93)] -idx=24 C Number of bonds : 3 -C : 21 , C : 24 , 1.0 -BOND CREATED 24 24 21 1.0 C C -C : 24 , H : 25 , 1.0 -BOND CREATED 24 24 25 1.0 C H -C : 24 , C : 28 , 2.0 -BOND CREATED 24 24 28 2.0 C C -BONDS [('C', 'C', 1.0, 1.463), ('C', 'H', 1.0, 0.931), ('C', 'C', 2.0, 1.333)] -idx=25 H Number of bonds : 1 -C : 24 , H : 25 , 1.0 -BOND CREATED 25 25 24 1.0 H C -BONDS [('H', 'C', 1.0, 0.931)] -idx=26 C Number of bonds : 3 -C : 9 , C : 26 , 1.5 -BOND CREATED 26 26 9 1.5 C C -C : 15 , C : 26 , 1.5 -BOND CREATED 26 26 15 1.5 C C -C : 26 , H : 27 , 1.0 -BOND CREATED 26 26 27 1.0 C H -BONDS [('C', 'C', 1.5, 1.39), ('C', 'C', 1.5, 1.379), ('C', 'H', 1.0, 0.931)] -idx=27 H Number of bonds : 1 -C : 26 , H : 27 , 1.0 -BOND CREATED 27 27 26 1.0 H C -BONDS [('H', 'C', 1.0, 0.931)] -idx=28 C Number of bonds : 3 -C : 17 , C : 28 , 1.0 -BOND CREATED 28 28 17 1.0 C C -C : 24 , C : 28 , 2.0 -BOND CREATED 28 28 24 2.0 C C -C : 28 , H : 29 , 1.0 -BOND CREATED 28 28 29 1.0 C H -BONDS [('C', 'C', 1.0, 1.466), ('C', 'C', 2.0, 1.333), ('C', 'H', 1.0, 0.93)] -idx=29 H Number of bonds : 1 -C : 28 , H : 29 , 1.0 -BOND CREATED 29 29 28 1.0 H C -BONDS [('H', 'C', 1.0, 0.93)] -idx=30 C Number of bonds : 3 -C : 8 , C : 30 , 1.5 -BOND CREATED 30 30 8 1.5 C C -C : 19 , C : 30 , 1.5 -BOND CREATED 30 30 19 1.5 C C -C : 30 , H : 31 , 1.0 -BOND CREATED 30 30 31 1.0 C H -BONDS [('C', 'C', 1.5, 1.391), ('C', 'C', 1.5, 1.39), ('C', 'H', 1.0, 0.931)] -idx=31 H Number of bonds : 1 -C : 30 , H : 31 , 1.0 -BOND CREATED 31 31 30 1.0 H C -BONDS [('H', 'C', 1.0, 0.931)] -idx=32 C Number of bonds : 3 -C : 17 , C : 32 , 1.5 -BOND CREATED 32 32 17 1.5 C C -C : 32 , C : 35 , 1.5 -BOND CREATED 32 32 35 1.5 C C -C : 32 , C : 52 , 1.0 -BOND CREATED 32 32 52 1.0 C C -BONDS [('C', 'C', 1.5, 1.412), ('C', 'C', 1.5, 1.393), ('C', 'C', 1.0, 1.52)] -idx=33 C Number of bonds : 3 -C : 33 , H : 34 , 1.0 -BOND CREATED 33 33 34 1.0 C H -C : 33 , C : 37 , 1.5 -BOND CREATED 33 33 37 1.5 C C -C : 33 , C : 45 , 1.5 -BOND CREATED 33 33 45 1.5 C C -BONDS [('C', 'H', 1.0, 0.93), ('C', 'C', 1.5, 1.386), ('C', 'C', 1.5, 1.381)] -idx=34 H Number of bonds : 1 -C : 33 , H : 34 , 1.0 -BOND CREATED 34 34 33 1.0 H C -BONDS [('H', 'C', 1.0, 0.93)] -idx=35 C Number of bonds : 3 -C : 32 , C : 35 , 1.5 -BOND CREATED 35 35 32 1.5 C C -C : 35 , H : 36 , 1.0 -BOND CREATED 35 35 36 1.0 C H -C : 35 , C : 62 , 1.5 -BOND CREATED 35 35 62 1.5 C C -BONDS [('C', 'C', 1.5, 1.393), ('C', 'H', 1.0, 0.93), ('C', 'C', 1.5, 1.385)] -idx=36 H Number of bonds : 1 -C : 35 , H : 36 , 1.0 -BOND CREATED 36 36 35 1.0 H C -BONDS [('H', 'C', 1.0, 0.93)] -idx=37 C Number of bonds : 3 -C : 7 , C : 37 , 1.5 -BOND CREATED 37 37 7 1.5 C C -C : 33 , C : 37 , 1.5 -BOND CREATED 37 37 33 1.5 C C -C : 37 , H : 38 , 1.0 -BOND CREATED 37 37 38 1.0 C H -BONDS [('C', 'C', 1.5, 1.389), ('C', 'C', 1.5, 1.386), ('C', 'H', 1.0, 0.93)] -idx=38 H Number of bonds : 1 -C : 37 , H : 38 , 1.0 -BOND CREATED 38 38 37 1.0 H C -BONDS [('H', 'C', 1.0, 0.93)] -idx=39 C Number of bonds : 3 -C : 22 , C : 39 , 1.5 -BOND CREATED 39 39 22 1.5 C C -C : 39 , H : 40 , 1.0 -BOND CREATED 39 39 40 1.0 C H -C : 39 , C : 62 , 1.5 -BOND CREATED 39 39 62 1.5 C C -BONDS [('C', 'C', 1.5, 1.373), ('C', 'H', 1.0, 0.929), ('C', 'C', 1.5, 1.394)] -idx=40 H Number of bonds : 1 -C : 39 , H : 40 , 1.0 -BOND CREATED 40 40 39 1.0 H C -BONDS [('H', 'C', 1.0, 0.929)] -idx=41 C Number of bonds : 3 -C : 3 , C : 41 , 1.5 -BOND CREATED 41 41 3 1.5 C C -C : 41 , H : 42 , 1.0 -BOND CREATED 41 41 42 1.0 C H -C : 41 , C : 43 , 1.5 -BOND CREATED 41 41 43 1.5 C C -BONDS [('C', 'C', 1.5, 1.387), ('C', 'H', 1.0, 0.93), ('C', 'C', 1.5, 1.387)] -idx=42 H Number of bonds : 1 -C : 41 , H : 42 , 1.0 -BOND CREATED 42 42 41 1.0 H C -BONDS [('H', 'C', 1.0, 0.93)] -idx=43 C Number of bonds : 3 -C : 13 , C : 43 , 1.5 -BOND CREATED 43 43 13 1.5 C C -C : 41 , C : 43 , 1.5 -BOND CREATED 43 43 41 1.5 C C -C : 43 , H : 44 , 1.0 -BOND CREATED 43 43 44 1.0 C H -BONDS [('C', 'C', 1.5, 1.374), ('C', 'C', 1.5, 1.387), ('C', 'H', 1.0, 0.929)] -idx=44 H Number of bonds : 1 -C : 43 , H : 44 , 1.0 -BOND CREATED 44 44 43 1.0 H C -BONDS [('H', 'C', 1.0, 0.929)] -idx=45 C Number of bonds : 3 -C : 18 , C : 45 , 1.5 -BOND CREATED 45 45 18 1.5 C C -C : 33 , C : 45 , 1.5 -BOND CREATED 45 45 33 1.5 C C -C : 45 , H : 46 , 1.0 -BOND CREATED 45 45 46 1.0 C H -BONDS [('C', 'C', 1.5, 1.403), ('C', 'C', 1.5, 1.381), ('C', 'H', 1.0, 0.93)] -idx=46 H Number of bonds : 1 -C : 45 , H : 46 , 1.0 -BOND CREATED 46 46 45 1.0 H C -BONDS [('H', 'C', 1.0, 0.93)] -idx=47 C Number of bonds : 3 -C : 11 , C : 47 , 1.0 -BOND CREATED 47 47 11 1.0 C C -C : 47 , H : 48 , 1.0 -BOND CREATED 47 47 48 1.0 C H -C : 47 , C : 64 , 2.0 -BOND CREATED 47 47 64 2.0 C C -BONDS [('C', 'C', 1.0, 1.463), ('C', 'H', 1.0, 0.931), ('C', 'C', 2.0, 1.339)] -idx=48 H Number of bonds : 1 -C : 47 , H : 48 , 1.0 -BOND CREATED 48 48 47 1.0 H C -BONDS [('H', 'C', 1.0, 0.931)] -idx=49 N Number of bonds : 3 -C : 2 , N : 49 , 1.0 -BOND CREATED 49 49 2 1.0 N C -C : 5 , N : 49 , 1.0 -BOND CREATED 49 49 5 1.0 N C -N : 49 , H : 66 , 1.0 -NO BOND CREATED bond_startatom=49 or bond_endatom=66 is not in the specie.atoms. It belongs to non_bonded_atoms=[66, 67]. -BONDS [('N', 'C', 1.0, 1.332), ('N', 'C', 1.0, 1.454)] -idx=50 N Number of bonds : 3 -C : 2 , N : 50 , 2.0 -BOND CREATED 50 50 2 2.0 N C -N : 50 , C : 52 , 1.0 -BOND CREATED 50 50 52 1.0 N C -N : 50 , H : 67 , 1.0 -NO BOND CREATED bond_startatom=50 or bond_endatom=67 is not in the specie.atoms. It belongs to non_bonded_atoms=[66, 67]. -BONDS [('N', 'C', 2.0, 1.332), ('N', 'C', 1.0, 1.456)] -idx=51 C Number of bonds : 3 -C : 5 , C : 51 , 1.0 -BOND CREATED 51 51 5 1.0 C C -C : 7 , C : 51 , 1.5 -BOND CREATED 51 51 7 1.5 C C -C : 18 , C : 51 , 1.5 -BOND CREATED 51 51 18 1.5 C C -BONDS [('C', 'C', 1.0, 1.524), ('C', 'C', 1.5, 1.399), ('C', 'C', 1.5, 1.406)] -idx=52 C Number of bonds : 4 -C : 0 , C : 52 , 1.0 -BOND CREATED 52 52 0 1.0 C C -C : 32 , C : 52 , 1.0 -BOND CREATED 52 52 32 1.0 C C -N : 50 , C : 52 , 1.0 -BOND CREATED 52 52 50 1.0 C N -C : 52 , H : 53 , 1.0 -BOND CREATED 52 52 53 1.0 C H -BONDS [('C', 'C', 1.0, 1.528), ('C', 'C', 1.0, 1.52), ('C', 'N', 1.0, 1.456), ('C', 'H', 1.0, 0.979)] -idx=53 H Number of bonds : 1 -C : 52 , H : 53 , 1.0 -BOND CREATED 53 53 52 1.0 H C -BONDS [('H', 'C', 1.0, 0.979)] -idx=54 C Number of bonds : 3 -C : 1 , C : 54 , 1.5 -BOND CREATED 54 54 1 1.5 C C -C : 54 , H : 55 , 1.0 -BOND CREATED 54 54 55 1.0 C H -C : 54 , C : 58 , 1.5 -BOND CREATED 54 54 58 1.5 C C -BONDS [('C', 'C', 1.5, 1.39), ('C', 'H', 1.0, 0.93), ('C', 'C', 1.5, 1.389)] -idx=55 H Number of bonds : 1 -C : 54 , H : 55 , 1.0 -BOND CREATED 55 55 54 1.0 H C -BONDS [('H', 'C', 1.0, 0.93)] -idx=56 C Number of bonds : 3 -C : 11 , C : 56 , 1.5 -BOND CREATED 56 56 11 1.5 C C -C : 56 , H : 57 , 1.0 -BOND CREATED 56 56 57 1.0 C H -C : 56 , C : 60 , 1.5 -BOND CREATED 56 56 60 1.5 C C -BONDS [('C', 'C', 1.5, 1.397), ('C', 'H', 1.0, 0.93), ('C', 'C', 1.5, 1.38)] -idx=57 H Number of bonds : 1 -C : 56 , H : 57 , 1.0 -BOND CREATED 57 57 56 1.0 H C -BONDS [('H', 'C', 1.0, 0.93)] -idx=58 C Number of bonds : 3 -C : 54 , C : 58 , 1.5 -BOND CREATED 58 58 54 1.5 C C -C : 58 , H : 59 , 1.0 -BOND CREATED 58 58 59 1.0 C H -C : 58 , C : 60 , 1.5 -BOND CREATED 58 58 60 1.5 C C -BONDS [('C', 'C', 1.5, 1.389), ('C', 'H', 1.0, 0.93), ('C', 'C', 1.5, 1.387)] -idx=59 H Number of bonds : 1 -C : 58 , H : 59 , 1.0 -BOND CREATED 59 59 58 1.0 H C -BONDS [('H', 'C', 1.0, 0.93)] -idx=60 C Number of bonds : 3 -C : 56 , C : 60 , 1.5 -BOND CREATED 60 60 56 1.5 C C -C : 58 , C : 60 , 1.5 -BOND CREATED 60 60 58 1.5 C C -C : 60 , H : 61 , 1.0 -BOND CREATED 60 60 61 1.0 C H -BONDS [('C', 'C', 1.5, 1.38), ('C', 'C', 1.5, 1.387), ('C', 'H', 1.0, 0.93)] -idx=61 H Number of bonds : 1 -C : 60 , H : 61 , 1.0 -BOND CREATED 61 61 60 1.0 H C -BONDS [('H', 'C', 1.0, 0.93)] -idx=62 C Number of bonds : 3 -C : 35 , C : 62 , 1.5 -BOND CREATED 62 62 35 1.5 C C -C : 39 , C : 62 , 1.5 -BOND CREATED 62 62 39 1.5 C C -C : 62 , H : 63 , 1.0 -BOND CREATED 62 62 63 1.0 C H -BONDS [('C', 'C', 1.5, 1.385), ('C', 'C', 1.5, 1.394), ('C', 'H', 1.0, 0.93)] -idx=63 H Number of bonds : 1 -C : 62 , H : 63 , 1.0 -BOND CREATED 63 63 62 1.0 H C -BONDS [('H', 'C', 1.0, 0.93)] -idx=64 C Number of bonds : 3 -C : 18 , C : 64 , 1.0 -BOND CREATED 64 64 18 1.0 C C -C : 47 , C : 64 , 2.0 -BOND CREATED 64 64 47 2.0 C C -C : 64 , H : 65 , 1.0 -BOND CREATED 64 64 65 1.0 C H -BONDS [('C', 'C', 1.0, 1.465), ('C', 'C', 2.0, 1.339), ('C', 'H', 1.0, 0.93)] -idx=65 H Number of bonds : 1 -C : 64 , H : 65 , 1.0 -BOND CREATED 65 65 64 1.0 H C -BONDS [('H', 'C', 1.0, 0.93)] -idx=66 H Number of bonds : 1 -N : 49 , H : 66 , 1.0 -NO BOND CREATED bond_startatom=49 or bond_endatom=66 is not in the specie.atoms. It belongs to non_bonded_atoms=[66, 67]. -NO BONDS -idx=67 H Number of bonds : 1 -N : 50 , H : 67 , 1.0 -NO BOND CREATED bond_startatom=50 or bond_endatom=67 is not in the specie.atoms. It belongs to non_bonded_atoms=[66, 67]. -NO BONDS - -CREATE BONDS: Number of atoms in ligand object and RDKit MOL are equal: 1 1 -idx=0 Br Number of bonds : 0 -NO BONDS CREATED - -CREATE BONDS: Number of atoms in ligand object and RDKit MOL are equal: 1 1 -idx=0 Br Number of bonds : 0 -NO BONDS CREATED -CELL.CREATE_BONDS: error creating bonds for atom: -------------- Cell2mol ATOM Object ---------------- - Version = 0.1 - Type = atom - Label = C - Atomic Number = 6 - Index in Molecule = 5 - Index in Ligand = 2 - Metal Adjacency (mconnec) = 0 - Regular Adjacencies (connec) = 0 - Atom Charge = 0.0 ----------------------------------------------------- - - of ligand: -------------- Cell2mol LIGAND Object -------------- - Version = 0.1 - Type = specie - Sub-Type = ligand - Number of Atoms = 66 - Formula = H27-C37-N2 - Has Adjacency Matrix = YES - Total Charge = -1 - Smiles = [H]C1=C([H])c2c([H])c([H])c([H])c([H])c2C([H])(N([H])C(c2c([H])c([H])c([H])c([H])c2[H])=[N+]([H])C2([H])c3c([H])c([H])c([H])c([H])c3C([H])=C([H])c3c([H])c([H])c([H])c([H])c32)c2c([H])c([H])c([H])c([H])c21 - Origin = split_complex - Number of Groups = 2 ---------------------------------------------------- - - -CELL.CREATE_BONDS: count differs from atom.mconnec: 1, 0 -0 C -C C 1.5 -0 3 -C C 1.5 -0 21 -C C 1.0 -0 52 -1 C -C C 1.0 -1 5 -C C 1.5 -1 11 -C C 1.5 -1 54 -2 C -C C 1.0 -2 8 -C N 1.0 -2 49 -C N 2.0 -2 50 -Fe C 0 -3 C -C C 1.5 -3 0 -C H 1.0 -3 4 -C C 1.5 -3 41 -4 H -H C 1.0 -4 3 -5 C -C C 1.0 -5 1 -C H 1.0 -5 12 -C N 1.0 -5 49 -C C 1.0 -5 51 -6 H -H C 1.0 -6 7 -7 C -C H 1.0 -7 6 -C C 1.5 -7 37 -C C 1.5 -7 51 -8 C -C C 1.0 -8 2 -C C 1.5 -8 9 -C C 1.5 -8 30 -9 C -C C 1.5 -9 8 -C H 1.0 -9 10 -C C 1.5 -9 26 -10 H -H C 1.0 -10 9 -11 C -C C 1.5 -11 1 -C C 1.0 -11 47 -C C 1.5 -11 56 -12 H -H C 1.0 -12 5 -13 C -C H 1.0 -13 14 -C C 1.5 -13 21 -C C 1.5 -13 43 -14 H -H C 1.0 -14 13 -15 C -C H 1.0 -15 16 -C C 1.5 -15 19 -C C 1.5 -15 26 -16 H -H C 1.0 -16 15 -17 C -C C 1.5 -17 22 -C C 1.0 -17 28 -C C 1.5 -17 32 -18 C -C C 1.5 -18 45 -C C 1.5 -18 51 -C C 1.0 -18 64 -19 C -C C 1.5 -19 15 -C H 1.0 -19 20 -C C 1.5 -19 30 -20 H -H C 1.0 -20 19 -21 C -C C 1.5 -21 0 -C C 1.5 -21 13 -C C 1.0 -21 24 -22 C -C C 1.5 -22 17 -C H 1.0 -22 23 -C C 1.5 -22 39 -23 H -H C 1.0 -23 22 -24 C -C C 1.0 -24 21 -C H 1.0 -24 25 -C C 2.0 -24 28 -25 H -H C 1.0 -25 24 -26 C -C C 1.5 -26 9 -C C 1.5 -26 15 -C H 1.0 -26 27 -27 H -H C 1.0 -27 26 -28 C -C C 1.0 -28 17 -C C 2.0 -28 24 -C H 1.0 -28 29 -29 H -H C 1.0 -29 28 -30 C -C C 1.5 -30 8 -C C 1.5 -30 19 -C H 1.0 -30 31 -31 H -H C 1.0 -31 30 -32 C -C C 1.5 -32 17 -C C 1.5 -32 35 -C C 1.0 -32 52 -33 C -C H 1.0 -33 34 -C C 1.5 -33 37 -C C 1.5 -33 45 -34 H -H C 1.0 -34 33 -35 C -C C 1.5 -35 32 -C H 1.0 -35 36 -C C 1.5 -35 62 -36 H -H C 1.0 -36 35 -37 C -C C 1.5 -37 7 -C C 1.5 -37 33 -C H 1.0 -37 38 -38 H -H C 1.0 -38 37 -39 C -C C 1.5 -39 22 -C H 1.0 -39 40 -C C 1.5 -39 62 -40 H -H C 1.0 -40 39 -41 C -C C 1.5 -41 3 -C H 1.0 -41 42 -C C 1.5 -41 43 -42 H -H C 1.0 -42 41 -43 C -C C 1.5 -43 13 -C C 1.5 -43 41 -C H 1.0 -43 44 -44 H -H C 1.0 -44 43 -45 C -C C 1.5 -45 18 -C C 1.5 -45 33 -C H 1.0 -45 46 -46 H -H C 1.0 -46 45 -47 C -C C 1.0 -47 11 -C H 1.0 -47 48 -C C 2.0 -47 64 -48 H -H C 1.0 -48 47 -49 N -N C 1.0 -49 2 -N C 1.0 -49 5 -Fe N 0 -50 N -N C 2.0 -50 2 -N C 1.0 -50 52 -Fe N 0 -51 C -C C 1.0 -51 5 -C C 1.5 -51 7 -C C 1.5 -51 18 -52 C -C C 1.0 -52 0 -C C 1.0 -52 32 -C N 1.0 -52 50 -C H 1.0 -52 53 -53 H -H C 1.0 -53 52 -54 C -C C 1.5 -54 1 -C H 1.0 -54 55 -C C 1.5 -54 58 -55 H -H C 1.0 -55 54 -56 C -C C 1.5 -56 11 -C H 1.0 -56 57 -C C 1.5 -56 60 -57 H -H C 1.0 -57 56 -58 C -C C 1.5 -58 54 -C H 1.0 -58 59 -C C 1.5 -58 60 -59 H -H C 1.0 -59 58 -60 C -C C 1.5 -60 56 -C C 1.5 -60 58 -C H 1.0 -60 61 -61 H -H C 1.0 -61 60 -62 C -C C 1.5 -62 35 -C C 1.5 -62 39 -C H 1.0 -62 63 -63 H -H C 1.0 -63 62 -64 C -C C 1.0 -64 18 -C C 2.0 -64 47 -C H 1.0 -64 65 -65 H -H C 1.0 -65 64 - -0 Br -Br Fe 0 - -0 Br -Br Fe 0 - - -Total execution time for Charge Assignment: 2.23 seconds -Charge Assignment successfully finished. - -coord_group=[------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 1 - Formula = N - Has Adjacency Matrix = YES - Origin = split_group - Number of Metals = 1 ---------------------------------------------------- -, ------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 1 - Formula = N - Has Adjacency Matrix = YES - Origin = split_group - Number of Metals = 1 ---------------------------------------------------- -, ------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 1 - Formula = Br - Has Adjacency Matrix = YES - Origin = split_ligand - Number of Metals = 1 ---------------------------------------------------- -, ------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 1 - Formula = Br - Has Adjacency Matrix = YES - Origin = split_ligand - Number of Metals = 1 ---------------------------------------------------- -] -self.coord_nr=4 -N [13.4933502, 4.5693117, 3.5895357] -N [13.083195, 4.2687597, 5.7559357] -Br [9.6951666, 3.6995867, 3.8567806] -Br [12.4449811, 0.8921242, 3.9426641] -symbols=['Fe', 'N', 'N', 'Br', 'Br'] -positions=[[12.0197446, 3.2485743, 4.2411846], [13.4933502, 4.5693117, 3.5895357], [13.083195, 4.2687597, 5.7559357], [9.6951666, 3.6995867, 3.8567806], [12.4449811, 0.8921242, 3.9426641]] -4 -[[1, 2], [1, 3], [1, 4], [1, 5]] -Fe [12.0197446, 3.2485743, 4.2411846] -N [13.4933502, 4.5693117, 3.5895357] -N [13.083195, 4.2687597, 5.7559357] -Br [9.6951666, 3.6995867, 3.8567806] -Br [12.4449811, 0.8921242, 3.9426641] - -The number of coordinating points (including the mid point of haptic ligands) : 4 -{'Tetrahedral': 6.98, 'Square planar': 27.078, 'Seesaw': 11.897} -The most likely geometry : 'Tetrahedral' with deviation value 6.98 -The type of hapticity : [] - -self.coord_geometry='Tetrahedral' self.geom_deviation=6.98 -[1.373, 1.403, 1.199, 1.213] -1.297 -self.rel_metal_radius=0.983 -coord_group=[------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 1 - Formula = N - Has Adjacency Matrix = YES - Origin = split_group - Number of Metals = 1 ---------------------------------------------------- -, ------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 1 - Formula = N - Has Adjacency Matrix = YES - Origin = split_group - Number of Metals = 1 ---------------------------------------------------- -, ------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 1 - Formula = Br - Has Adjacency Matrix = YES - Origin = split_ligand - Number of Metals = 1 ---------------------------------------------------- -, ------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 1 - Formula = Br - Has Adjacency Matrix = YES - Origin = split_ligand - Number of Metals = 1 ---------------------------------------------------- -] -self.coord_nr=4 -N [10.0312251, -4.5693117, 11.3772988] -N [9.6210699, -4.2687597, 13.5436987] -Br [8.982856, -0.8921242, 11.7304271] -Br [6.2330415, -3.6995867, 11.6445436] -symbols=['Fe', 'N', 'N', 'Br', 'Br'] -positions=[[8.5576195, -3.2485743, 12.0289476], [10.0312251, -4.5693117, 11.3772988], [9.6210699, -4.2687597, 13.5436987], [8.982856, -0.8921242, 11.7304271], [6.2330415, -3.6995867, 11.6445436]] -4 -[[1, 2], [1, 3], [1, 4], [1, 5]] -Fe [8.5576195, -3.2485743, 12.0289476] -N [10.0312251, -4.5693117, 11.3772988] -N [9.6210699, -4.2687597, 13.5436987] -Br [8.982856, -0.8921242, 11.7304271] -Br [6.2330415, -3.6995867, 11.6445436] - -The number of coordinating points (including the mid point of haptic ligands) : 4 -{'Tetrahedral': 6.98, 'Square planar': 27.078, 'Seesaw': 11.897} -The most likely geometry : 'Tetrahedral' with deviation value 6.98 -The type of hapticity : [] - -self.coord_geometry='Tetrahedral' self.geom_deviation=6.98 -[1.373, 1.403, 1.213, 1.199] -1.297 -self.rel_metal_radius=0.983 -coord_group=[------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 1 - Formula = N - Has Adjacency Matrix = YES - Origin = split_group - Number of Metals = 1 ---------------------------------------------------- -, ------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 1 - Formula = N - Has Adjacency Matrix = YES - Origin = split_group - Number of Metals = 1 ---------------------------------------------------- -, ------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 1 - Formula = Br - Has Adjacency Matrix = YES - Origin = split_ligand - Number of Metals = 1 ---------------------------------------------------- -, ------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 1 - Formula = Br - Has Adjacency Matrix = YES - Origin = split_ligand - Number of Metals = 1 ---------------------------------------------------- -] -self.coord_nr=4 -N [23.6976799, 4.2687597, 2.0318274] -N [23.2875248, 4.5693117, 4.1982273] -Br [27.0857083, 3.6995867, 3.9309824] -Br [24.3358938, 0.8921242, 3.845099] -symbols=['Fe', 'N', 'N', 'Br', 'Br'] -positions=[[24.7611304, 3.2485743, 3.5465784], [23.6976799, 4.2687597, 2.0318274], [23.2875248, 4.5693117, 4.1982273], [27.0857083, 3.6995867, 3.9309824], [24.3358938, 0.8921242, 3.845099]] -4 -[[1, 2], [1, 3], [1, 4], [1, 5]] -Fe [24.7611304, 3.2485743, 3.5465784] -N [23.6976799, 4.2687597, 2.0318274] -N [23.2875248, 4.5693117, 4.1982273] -Br [27.0857083, 3.6995867, 3.9309824] -Br [24.3358938, 0.8921242, 3.845099] - -The number of coordinating points (including the mid point of haptic ligands) : 4 -{'Tetrahedral': 6.98, 'Square planar': 27.078, 'Seesaw': 11.897} -The most likely geometry : 'Tetrahedral' with deviation value 6.98 -The type of hapticity : [] - -self.coord_geometry='Tetrahedral' self.geom_deviation=6.98 -[1.403, 1.373, 1.199, 1.213] -1.297 -self.rel_metal_radius=0.983 -coord_group=[------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 1 - Formula = N - Has Adjacency Matrix = YES - Origin = split_group - Number of Metals = 1 ---------------------------------------------------- -, ------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 1 - Formula = N - Has Adjacency Matrix = YES - Origin = split_group - Number of Metals = 1 ---------------------------------------------------- -, ------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 1 - Formula = Br - Has Adjacency Matrix = YES - Origin = split_ligand - Number of Metals = 1 ---------------------------------------------------- -, ------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 1 - Formula = Br - Has Adjacency Matrix = YES - Origin = split_ligand - Number of Metals = 1 ---------------------------------------------------- -] -self.coord_nr=4 -N [20.2355548, -4.2687597, 9.8195904] -N [19.8253997, -4.5693117, 11.9859903] -Br [23.6235832, -3.6995867, 11.7187454] -Br [20.8737687, -0.8921242, 11.632862] -symbols=['Fe', 'N', 'N', 'Br', 'Br'] -positions=[[21.2990053, -3.2485743, 11.3343415], [20.2355548, -4.2687597, 9.8195904], [19.8253997, -4.5693117, 11.9859903], [23.6235832, -3.6995867, 11.7187454], [20.8737687, -0.8921242, 11.632862]] -4 -[[1, 2], [1, 3], [1, 4], [1, 5]] -Fe [21.2990053, -3.2485743, 11.3343415] -N [20.2355548, -4.2687597, 9.8195904] -N [19.8253997, -4.5693117, 11.9859903] -Br [23.6235832, -3.6995867, 11.7187454] -Br [20.8737687, -0.8921242, 11.632862] - -The number of coordinating points (including the mid point of haptic ligands) : 4 -{'Tetrahedral': 6.98, 'Square planar': 27.078, 'Seesaw': 11.897} -The most likely geometry : 'Tetrahedral' with deviation value 6.98 -The type of hapticity : [] - -self.coord_geometry='Tetrahedral' self.geom_deviation=6.98 -[1.403, 1.373, 1.199, 1.213] -1.297 -self.rel_metal_radius=0.983 - -Total execution time for Spin Assignment: 0.60 seconds -SAVING cell2mol CELL object to /Users/ycho/cell2mol/cell2mol/test/BUSVOC/Cell_BUSVOC.cell diff --git a/cell2mol/test/BUSVOC/cif2cell.err b/cell2mol/test/BUSVOC/cif2cell.err deleted file mode 100644 index e69de29bb..000000000 diff --git a/cell2mol/test/Based_reference.ipynb b/cell2mol/test/Based_reference.ipynb deleted file mode 100644 index 307193389..000000000 --- a/cell2mol/test/Based_reference.ipynb +++ /dev/null @@ -1,3575 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 64, - "id": "f2657264-6361-480f-8f6e-2d3c7cea4cc7", - "metadata": {}, - "outputs": [], - "source": [ - "from scipy import sparse\n", - "from ase.build import molecule\n", - "from ase.neighborlist import get_connectivity_matrix\n", - "from ase.neighborlist import natural_cutoffs\n", - "from ase.neighborlist import NeighborList\n", - "import ase\n", - "import numpy as np\n", - "from ase.io import read\n", - "from ase import Atoms\n", - "import ase.visualize\n", - "from ase.visualize.plot import plot_atoms\n", - "from cell2mol.read_write import readinfo\n", - "from cell2mol.cell_operations import frac2cart_fromparam, cart2frac\n", - "import nglview\n", - "from ase.build import molecule\n", - "from ase.neighborlist import NeighborList\n", - "import matplotlib.pyplot as plt" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "5ff88c96-bda9-4f00-8323-20a1386d5253", - "metadata": {}, - "outputs": [], - "source": [ - "folder = \"error_2\"\n", - "name = \"BOFFOS\"\n", - "infopath = f\"{folder}/{name}/{name}.info\"\n", - "input_path = f\"{folder}/{name}/{name}.cif\"" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "c883d74e-e2c3-463e-86ae-1133495aaee1", - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 0 and 59 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 0 and 60 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 2 and 61 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 2 and 62 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 3 and 63 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 3 and 64 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 4 and 65 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 4 and 66 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 5 and 67 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 5 and 68 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 6 and 69 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 6 and 70 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 7 and 71 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 7 and 72 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 8 and 73 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 8 and 74 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 9 and 75 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 9 and 76 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 10 and 77 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 10 and 78 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 11 and 79 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 11 and 80 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 15 and 81 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 15 and 82 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 16 and 83 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 16 and 84 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 17 and 85 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 17 and 86 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 18 and 87 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 18 and 88 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 19 and 89 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 19 and 90 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 20 and 91 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 20 and 92 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 21 and 93 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 21 and 94 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 22 and 95 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 22 and 96 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 23 and 97 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 23 and 98 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 24 and 99 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 24 and 100 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 25 and 101 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 25 and 102 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 26 and 103 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 26 and 104 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 27 and 105 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 27 and 106 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 28 and 107 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 28 and 108 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 29 and 109 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 29 and 110 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 30 and 111 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 30 and 112 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 31 and 113 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 31 and 114 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 32 and 115 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 32 and 116 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 33 and 117 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 33 and 118 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 34 and 119 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 34 and 120 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 35 and 121 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 35 and 122 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 36 and 123 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 36 and 124 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 37 and 125 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 37 and 126 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 38 and 127 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 38 and 128 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 39 and 129 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 39 and 130 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 40 and 131 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 40 and 132 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 41 and 133 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 41 and 134 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 42 and 135 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 42 and 136 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 43 and 137 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 43 and 138 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 44 and 139 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 44 and 140 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 45 and 141 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 45 and 142 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 46 and 143 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 46 and 144 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 47 and 145 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 47 and 146 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 48 and 147 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 48 and 148 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 49 and 149 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 49 and 150 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 50 and 151 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 50 and 152 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 51 and 153 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 51 and 154 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 52 and 155 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 52 and 156 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n" - ] - } - ], - "source": [ - "atoms = read(input_path)\n", - "cell_labels = atoms.get_chemical_symbols()\n", - "cell_pos = atoms.positions\n", - "cell_fracs = atoms.get_scaled_positions()\n", - "cell_vector = atoms.cell.array\n", - "# cell_parameters = atoms.cell.cellpar()\n", - "space_group = atoms.info['spacegroup']\n", - "sym_ops = space_group.get_op()" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "0158d29e-2ed5-44ba-ad4c-42cf61be04b5", - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "#########################################\n", - " GETREFS: Generate reference molecules \n", - "#########################################\n", - "GETREFS: found 10 reference molecules\n", - "GETREFS: ['C6-O12-Fe', 'H24-C12-O6', 'H2-O', 'H2-O', 'H2-O', 'H24-C12-O6', 'H24-C12-O6', 'K', 'K', 'K']\n", - "GETREFS: [------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 19\n", - " Formula = C6-O12-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 MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 42\n", - " Formula = H24-C12-O6\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 42\n", - " Formula = H24-C12-O6\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 42\n", - " Formula = H24-C12-O6\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = K\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = K\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = K\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - "]\n", - "GETREFS: working with C6-O12-Fe\n", - "GETREFS: working with H24-C12-O6\n", - "GETREFS: working with H2-O\n", - "GETREFS: working with H2-O\n", - "GETREFS: working with H2-O\n", - "GETREFS: working with H24-C12-O6\n", - "GETREFS: working with H24-C12-O6\n", - "GETREFS: working with K\n", - "GETREFS: working with K\n", - "GETREFS: working with K\n" - ] - }, - { - "data": { - "text/plain": [ - "[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 19\n", - " Formula = C6-O12-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 MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 42\n", - " Formula = H24-C12-O6\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 42\n", - " Formula = H24-C12-O6\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 42\n", - " Formula = H24-C12-O6\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = K\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = K\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = K\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " ---------------------------------------------------]" - ] - }, - "execution_count": 4, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "from cell2mol.classes import cell\n", - "\n", - "labels, pos, ref_labels, ref_fracs, cellvec, cell_param = readinfo(infopath)\n", - "# labels, pos, and cellvec will not be used\n", - "ref_pos = frac2cart_fromparam(ref_fracs, cell_param)\n", - "refcell = cell(name, ref_labels, ref_pos, ref_fracs, cell_vector, cell_param)\n", - "refcell.get_subtype(\"reference\")\n", - "refcell.get_reference_molecules(ref_labels, ref_fracs)" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "id": "1f863811-1f37-44a3-82cc-9b91889b45e3", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Adjacency [8, 10, 18] ['O', 'O', 'C']\n", - "Adjacency [12, 13, 16] ['O', 'O', 'C']\n", - "Adjacency [7, 9, 17] ['O', 'O', 'C']\n", - "Adjacency [11, 14, 15] ['O', 'O', 'C']\n", - "Adjacency [1, 2, 6] ['O', 'O', 'C']\n", - "Adjacency [3, 4, 5] ['O', 'O', 'C']\n", - "Adjacency [0, 7, 8, 9] ['O', 'H', 'H', 'C']\n", - "Adjacency [1, 6, 10, 11] ['O', 'C', 'H', 'H']\n", - "Adjacency [1, 13, 14, 15] ['O', 'H', 'H', 'C']\n", - "Adjacency [2, 12, 16, 17] ['O', 'C', 'H', 'H']\n", - "Adjacency [2, 19, 20, 21] ['O', 'H', 'H', 'C']\n", - "Adjacency [3, 18, 22, 23] ['O', 'C', 'H', 'H']\n", - "Adjacency [3, 25, 26, 27] ['O', 'H', 'H', 'C']\n", - "Adjacency [4, 24, 28, 29] ['O', 'C', 'H', 'H']\n", - "Adjacency [4, 31, 32, 33] ['O', 'H', 'H', 'C']\n", - "Adjacency [5, 30, 34, 35] ['O', 'C', 'H', 'H']\n", - "Adjacency [5, 37, 38, 39] ['O', 'H', 'H', 'C']\n", - "Adjacency [0, 36, 40, 41] ['O', 'C', 'H', 'H']\n", - "Adjacency [0, 7, 8, 9] ['O', 'H', 'H', 'C']\n", - "Adjacency [1, 6, 10, 11] ['O', 'C', 'H', 'H']\n", - "Adjacency [1, 13, 14, 15] ['O', 'H', 'H', 'C']\n", - "Adjacency [2, 12, 16, 17] ['O', 'C', 'H', 'H']\n", - "Adjacency [2, 19, 20, 21] ['O', 'H', 'H', 'C']\n", - "Adjacency [3, 18, 22, 23] ['O', 'C', 'H', 'H']\n", - "Adjacency [3, 25, 26, 27] ['O', 'H', 'H', 'C']\n", - "Adjacency [4, 24, 28, 29] ['O', 'C', 'H', 'H']\n", - "Adjacency [4, 31, 32, 33] ['O', 'H', 'H', 'C']\n", - "Adjacency [5, 30, 34, 35] ['O', 'C', 'H', 'H']\n", - "Adjacency [5, 37, 38, 39] ['O', 'H', 'H', 'C']\n", - "Adjacency [0, 36, 40, 41] ['O', 'C', 'H', 'H']\n", - "Adjacency [0, 7, 8, 9] ['O', 'H', 'H', 'C']\n", - "Adjacency [1, 6, 10, 11] ['O', 'C', 'H', 'H']\n", - "Adjacency [1, 13, 14, 15] ['O', 'H', 'H', 'C']\n", - "Adjacency [2, 12, 16, 17] ['O', 'C', 'H', 'H']\n", - "Adjacency [2, 19, 20, 21] ['O', 'H', 'H', 'C']\n", - "Adjacency [3, 18, 22, 23] ['O', 'C', 'H', 'H']\n", - "Adjacency [3, 25, 26, 27] ['O', 'H', 'H', 'C']\n", - "Adjacency [4, 24, 28, 29] ['O', 'C', 'H', 'H']\n", - "Adjacency [4, 31, 32, 33] ['O', 'H', 'H', 'C']\n", - "Adjacency [5, 30, 34, 35] ['O', 'C', 'H', 'H']\n", - "Adjacency [5, 37, 38, 39] ['O', 'H', 'H', 'C']\n", - "Adjacency [0, 36, 40, 41] ['O', 'C', 'H', 'H']\n", - "-------------------------------\n", - "Errors in Reference Molecules\n", - "-------------------------------\n", - "Cell2mol terminated with error number 0. Message:\n", - "No Errors Found\n", - "\n" - ] - } - ], - "source": [ - "if not refcell.has_isolated_H: \n", - " refcell.check_missing_H() \n", - "refcell.assess_errors(ref=True)" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "id": "f04d448e-110b-49cf-9ff8-6fa2360caf3a", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "C6-O12-Fe ['reference'] [[1, 8, 9, 10, 11, 51, 52, 73, 74, 75, 76, 77, 78, 79, 80, 153, 154, 155, 156]]\n", - "-- C2-O4 split_complex ['molecule', 'reference'] [[8, 10, 12, 13, 16, 18], [1, 8, 9, 10, 11, 51, 52, 73, 74, 75, 76, 77, 78, 79, 80, 153, 154, 155, 156]]\n", - "-- C2-O4 split_complex ['molecule', 'reference'] [[7, 9, 11, 14, 15, 17], [1, 8, 9, 10, 11, 51, 52, 73, 74, 75, 76, 77, 78, 79, 80, 153, 154, 155, 156]]\n", - "-- C2-O4 split_complex ['molecule', 'reference'] [[1, 2, 3, 4, 5, 6], [1, 8, 9, 10, 11, 51, 52, 73, 74, 75, 76, 77, 78, 79, 80, 153, 154, 155, 156]]\n" - ] - } - ], - "source": [ - "for ref in refcell.refmoleclist:\n", - " if ref.iscomplex :\n", - " print(ref.formula, [p.subtype for p in ref.parents], [p_idx for p_idx in ref.parents_indices])\n", - " # for met in ref.metals:\n", - " # print(\"--\", met.label, [p.subtype for p in met.parents], [p_idx for p_idx in met.parents_index])\n", - " # # for g in met.groups:\n", - " # print(g.formula, [p.subtype for p in g.parents], [p_idx for p_idx in g.parents_indices])\n", - " \n", - " for lig in ref.ligands:\n", - " print(\"--\", lig.formula, lig.origin, [p.subtype for p in lig.parents], [p_idx for p_idx in lig.parents_indices])\n", - " # for a in lig.atoms:\n", - " # print(a.label, [p.subtype for p in a.parents], [p_idx for p_idx in a.parents_index])\n", - " # for g in lig.groups:\n", - " # print(g.formula, [p.subtype for p in g.parents], [p_idx for p_idx in g.parents_indices])\n", - " # else :\n", - " # print(ref.formula, [p.subtype for p in ref.parents], [p_idx for p_idx in ref.parents_indices])\n", - " # print(\"\")" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "id": "01f7c701-6be8-4363-adbd-1d03479a9602", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "------------- Cell2mol CELL Object ----------------\n", - " Version = 2.0\n", - " Type = cell\n", - " Sub-Type = reference\n", - " Name (Refcode) = BOFFOS\n", - " Num Atoms = 157\n", - " Cell Parameters a:c = [24.369, 24.369, 9.748]\n", - " Cell Parameters al:ga = [90.0, 90.0, 120.0]\n", - "---------------------------------------------------\n", - " # of Ref Molecules: = 10\n", - " With Formulae: \n", - " 0: C6-O12-Fe \n", - " 1: H24-C12-O6 \n", - " 2: H2-O \n", - " 3: H2-O \n", - " 4: H2-O \n", - " 5: H24-C12-O6 \n", - " 6: H24-C12-O6 \n", - " 7: K \n", - " 8: K \n", - " 9: K " - ] - }, - "execution_count": 7, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "refcell" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "id": "e4b8c994-8003-4527-a886-9fde45ba91ad", - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Getting unique species in cell\n" - ] - }, - { - "data": { - "text/plain": [ - "[------------- Cell2mol LIGAND Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = ligand\n", - " Number of Atoms = 6\n", - " Formula = C2-O4\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_complex\n", - " Number of Groups = 2\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol METAL Object --------------\n", - " Version = 2.0\n", - " Type = atom\n", - " Sub-Type = metal\n", - " Label = Fe\n", - " Atomic Number = 26\n", - " Index in Molecule = 0\n", - " Metal Adjacency (mconnec) = 6\n", - " Regular Adjacencies (connec) = 6\n", - " ----------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 42\n", - " Formula = H24-C12-O6\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = K\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " ---------------------------------------------------]" - ] - }, - "execution_count": 8, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "refcell.get_unique_species()" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "id": "e7a8f538-b934-4356-8db5-e622900e5911", - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "data": { - "text/plain": [ - "[------------- Cell2mol LIGAND Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = ligand\n", - " Number of Atoms = 6\n", - " Formula = C2-O4\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_complex\n", - " Number of Groups = 2\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol METAL Object --------------\n", - " Version = 2.0\n", - " Type = atom\n", - " Sub-Type = metal\n", - " Label = Fe\n", - " Atomic Number = 26\n", - " Index in Molecule = 0\n", - " Metal Adjacency (mconnec) = 6\n", - " Regular Adjacencies (connec) = 6\n", - " ----------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 42\n", - " Formula = H24-C12-O6\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = K\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " ---------------------------------------------------]" - ] - }, - "execution_count": 9, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "refcell.unique_species" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "id": "140c087d-4417-4556-9e8c-9b59f10e0d01", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[0, 0, 0, 1, 2, 3, 3, 3, 2, 2, 4, 4, 4]" - ] - }, - "execution_count": 10, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "refcell.unique_indices" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "id": "3ee5f5ff-b498-4e1a-8085-8632bb0a2152", - "metadata": {}, - "outputs": [], - "source": [ - "debug = 2" - ] - }, - { - "cell_type": "code", - "execution_count": 66, - "id": "34d00dd5-dd6f-427c-86a6-68f17b903b6e", - "metadata": {}, - "outputs": [], - "source": [ - "from cell2mol.read_write import writexyz" - ] - }, - { - "cell_type": "code", - "execution_count": 68, - "id": "f710248d-389f-431f-b994-979c08342845", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Help on function writexyz in module cell2mol.read_write:\n", - "\n", - "writexyz(fdir, fname, labels, pos, charge: int = 0, spin: int = 1)\n", - " ##############\n", - "\n" - ] - } - ], - "source": [ - "help(writexyz)" - ] - }, - { - "cell_type": "code", - "execution_count": 71, - "id": "ec60909d-e258-480f-b347-448a063670de", - "metadata": {}, - "outputs": [], - "source": [ - "for idx, specie in enumerate(refcell.refmoleclist):\n", - " if specie.formula == \"H24-C12-O6\":\n", - " writexyz(f\"{folder}/{name}\", f\"ref_{specie.formula}_{idx}.xyz\", \n", - " specie.labels, specie.coord)" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "id": "51665722-d915-490e-8064-a0a361a4cba0", - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - " GET_PROTONATION_STATES: Evaluating group O with parent_indices [2]\n", - " GET_PROTONATION_STATES: evaluating non-haptic group with index 2 and label O\n", - " GET_PROTONATION_STATES: Evaluating group O with parent_indices [1]\n", - " GET_PROTONATION_STATES: evaluating non-haptic group with index 1 and label O\n", - " GET_PROTONATION_STATES:protonation_states=[------------- Cell2mol Protonation ----------------\n", - " Status = True\n", - " Labels = ['O', 'O', 'O', 'O', 'C', 'C']\n", - " Type = Local\n", - " Atoms added in positions = [0 0 0 0 0 0]\n", - " Atoms blocked (no atoms added) = [0 1 1 0 0 0]\n", - "---------------------------------------------------\n", - "]\n", - " POSCHARGE will try charges [0, -1, 1, -2, 2, -3, 3, -4, 4]\n", - " POSCHARGE: charge 0 with smiles [O-][C+]([O-])[C+]([O-])[O-]\n", - " POSCHARGE: charge 0 with smiles [O-][C+]([O-])[C+]([O-])[O-]\n", - " POSCHARGE: charge 0 with smiles [O-][C+]([O-])[C+]([O-])[O-]\n", - " POSCHARGE: charge 0 with smiles O=C([O-])C(=O)[O-]\n", - " POSCHARGE: charge 0 with smiles [O-][C+]([O-])[C+]([O-])[O-]\n", - " POSCHARGE: charge 0 with smiles [O-][C+]([O-])[C-]([O-])[O-]\n", - " POSCHARGE: charge 0 with smiles [O-][C+]([O-])[C+]([O-])[O-]\n", - " POSCHARGE: charge 0 with smiles [O-]C([O-])=C([O-])[O-]\n", - " POSCHARGE: charge 0 with smiles [O-][C+]([O-])[C+]([O-])[O-]\n", - " NEW SELECT FUNCTION: uncorr_total: [-2, -2, -2, -2, -2, -4, -2, -4, -2]\n", - " NEW SELECT FUNCTION: uncorr_abs_total: [2, 2, 2, 2, 2, 4, 2, 4, 2]\n", - " NEW SELECT FUNCTION: uncorr_abs_atcharge: [6, 6, 6, 2, 6, 6, 6, 4, 6]\n", - " NEW SELECT FUNCTION: uncorr_zwitt: [True, True, True, False, True, True, True, False, True]\n", - " NEW SELECT FUNCTION: coincide: [False, False, False, True, False, False, False, True, False]\n", - " NEW SELECT FUNCTION: listofmintot: [0, 1, 2, 3, 4, 6, 8]\n", - " NEW SELECT FUNCTION: listofminabs: [3]\n", - " NEW SELECT FUNCTION: tmplist: [3], including:\n", - " NEW SELECT FUNCTION: Corr_charge=-2\n", - " NEW SELECT FUNCTION: Smiles=O=C([O-])C(=O)[O-]\n", - " NEW SELECT FUNCTION: found corr_charges=[-2]\n", - " NEW SELECT FUNCTION: doing tgt_charge=-2\n", - " NEW SELECT FUNCTION: charge_state added\n", - " NEW SELECT FUNCTION: Case 1, only one entry for -2 in tmplist\n", - " POSCHARGE: doing empty PROTONATION for this specie\n", - " CREATED EMPTY PROTONATION ------------- Cell2mol Protonation ----------------\n", - " Status = True\n", - " Labels = ['O', 'O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H']\n", - " Type = Empty\n", - " Atoms added in positions = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", - " Atoms blocked (no atoms added) = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "---------------------------------------------------\n", - "\n", - " POSCHARGE will try charges [0, -1, 1, -2, 2, -3, 3]\n", - " POSCHARGE: charge 0 with smiles [H]C1([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC1([H])[H]\n", - " POSCHARGE: charge 0 with smiles [H]C1([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC1([H])[H]\n", - " POSCHARGE: charge 0 with smiles [H]C1([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC1([H])[H]\n", - " POSCHARGE: charge 0 with smiles [H]C1([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC1([H])[H]\n", - " POSCHARGE: charge 0 with smiles [H]C1([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC1([H])[H]\n", - " POSCHARGE: charge 0 with smiles [H]C1([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC1([H])[H]\n", - " POSCHARGE: charge 0 with smiles [H]C1([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC1([H])[H]\n", - " NEW SELECT FUNCTION: uncorr_total: [0, 0, 0, 0, 0, 0, 0]\n", - " NEW SELECT FUNCTION: uncorr_abs_total: [0, 0, 0, 0, 0, 0, 0]\n", - " NEW SELECT FUNCTION: uncorr_abs_atcharge: [0, 0, 0, 0, 0, 0, 0]\n", - " NEW SELECT FUNCTION: uncorr_zwitt: [False, False, False, False, False, False, False]\n", - " NEW SELECT FUNCTION: coincide: [True, False, False, False, False, False, False]\n", - " NEW SELECT FUNCTION: listofmintot: [0, 1, 2, 3, 4, 5, 6]\n", - " NEW SELECT FUNCTION: listofminabs: [0, 1, 2, 3, 4, 5, 6]\n", - " NEW SELECT FUNCTION: tmplist: [0], including:\n", - " NEW SELECT FUNCTION: Corr_charge=0\n", - " NEW SELECT FUNCTION: Smiles=[H]C1([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC1([H])[H]\n", - " NEW SELECT FUNCTION: found corr_charges=[0]\n", - " NEW SELECT FUNCTION: doing tgt_charge=0\n", - " NEW SELECT FUNCTION: charge_state added\n", - " NEW SELECT FUNCTION: Case 1, only one entry for 0 in tmplist\n", - " POSCHARGE: doing empty PROTONATION for this specie\n", - " CREATED EMPTY PROTONATION ------------- Cell2mol Protonation ----------------\n", - " Status = True\n", - " Labels = ['O', 'H', 'H']\n", - " Type = Empty\n", - " Atoms added in positions = [0, 0, 0]\n", - " Atoms blocked (no atoms added) = [0, 0, 0]\n", - "---------------------------------------------------\n", - "\n", - " POSCHARGE will try charges [0, -1, 1, -2, 2, -3, 3]\n", - " POSCHARGE: charge 0 with smiles [H]O[H]\n", - " POSCHARGE: charge 0 with smiles [H]O[H]\n", - " POSCHARGE: charge 0 with smiles [H]O[H]\n", - " POSCHARGE: charge 0 with smiles [H]O[H]\n", - " POSCHARGE: charge 0 with smiles [H]O[H]\n", - " POSCHARGE: charge 0 with smiles [H]O[H]\n", - " POSCHARGE: charge 0 with smiles [H]O[H]\n", - " NEW SELECT FUNCTION: uncorr_total: [0, 0, 0, 0, 0, 0, 0]\n", - " NEW SELECT FUNCTION: uncorr_abs_total: [0, 0, 0, 0, 0, 0, 0]\n", - " NEW SELECT FUNCTION: uncorr_abs_atcharge: [0, 0, 0, 0, 0, 0, 0]\n", - " NEW SELECT FUNCTION: uncorr_zwitt: [False, False, False, False, False, False, False]\n", - " NEW SELECT FUNCTION: coincide: [True, False, False, False, False, False, False]\n", - " NEW SELECT FUNCTION: listofmintot: [0, 1, 2, 3, 4, 5, 6]\n", - " NEW SELECT FUNCTION: listofminabs: [0, 1, 2, 3, 4, 5, 6]\n", - " NEW SELECT FUNCTION: tmplist: [0], including:\n", - " NEW SELECT FUNCTION: Corr_charge=0\n", - " NEW SELECT FUNCTION: Smiles=[H]O[H]\n", - " NEW SELECT FUNCTION: found corr_charges=[0]\n", - " NEW SELECT FUNCTION: doing tgt_charge=0\n", - " NEW SELECT FUNCTION: charge_state added\n", - " NEW SELECT FUNCTION: Case 1, only one entry for 0 in tmplist\n", - " POSCHARGE: doing empty PROTONATION for this specie\n", - " CREATED EMPTY PROTONATION ------------- Cell2mol Protonation ----------------\n", - " Status = True\n", - " Labels = ['K']\n", - " Type = Empty\n", - " Atoms added in positions = [0]\n", - " Atoms blocked (no atoms added) = [0]\n", - "---------------------------------------------------\n", - "\n", - " POSCHARGE will try charges [0, -1, 1, -2, 2, -3, 3]\n", - " POSCHARGE: charge 0 with smiles [K+]\n", - " POSCHARGE: charge 0 with smiles [K+]\n", - " POSCHARGE: charge 0 with smiles [K+]\n", - " POSCHARGE: charge 0 with smiles [K+]\n", - " POSCHARGE: charge 0 with smiles [K+]\n", - " POSCHARGE: charge 0 with smiles [K+]\n", - " POSCHARGE: charge 0 with smiles [K+]\n", - " NEW SELECT FUNCTION: uncorr_total: [1, 1, 1, 1, 1, 1, 1]\n", - " NEW SELECT FUNCTION: uncorr_abs_total: [1, 1, 1, 1, 1, 1, 1]\n", - " NEW SELECT FUNCTION: uncorr_abs_atcharge: [1, 1, 1, 1, 1, 1, 1]\n", - " NEW SELECT FUNCTION: uncorr_zwitt: [False, False, False, False, False, False, False]\n", - " NEW SELECT FUNCTION: coincide: [False, False, True, False, False, False, False]\n", - " NEW SELECT FUNCTION: listofmintot: [0, 1, 2, 3, 4, 5, 6]\n", - " NEW SELECT FUNCTION: listofminabs: [0, 1, 2, 3, 4, 5, 6]\n", - " NEW SELECT FUNCTION: tmplist: [2], including:\n", - " NEW SELECT FUNCTION: Corr_charge=1\n", - " NEW SELECT FUNCTION: Smiles=[K+]\n", - " NEW SELECT FUNCTION: found corr_charges=[1]\n", - " NEW SELECT FUNCTION: doing tgt_charge=1\n", - " NEW SELECT FUNCTION: charge_state added\n", - " NEW SELECT FUNCTION: Case 1, only one entry for 1 in tmplist\n" - ] - } - ], - "source": [ - "selected_cs = []\n", - "for idx, specie in enumerate(refcell.unique_species):\n", - " tmp = specie.get_possible_cs(debug=debug)\n", - " if tmp is None: \n", - " print(\"error\")\n", - " if specie.subtype != \"metal\":\n", - " selected_cs.append(list([cs.corr_total_charge for cs in specie.possible_cs]))\n", - " else :\n", - " selected_cs.append(specie.possible_cs) " - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "id": "886cec55-200e-452c-9714-b20943578d8b", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[[-2], [2, 3], [0], [0], [1]]" - ] - }, - "execution_count": 15, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "selected_cs" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "id": "e7aff900-25e6-41bd-a88e-d38206017d81", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "BALANCE: iterlist [[-2], [2, 3], [0], [0], [1]]\n", - "BALANCE: unique_indices [0, 0, 0, 1, 2, 3, 3, 3, 2, 2, 4, 4, 4]\n", - "BALANCE: tmpdistr [(-2, 2, 0, 0, 1), (-2, 3, 0, 0, 1)]\n", - "BALANCE: alldistr added: [-2, -2, -2, 2, 0, 0, 0, 0, 0, 0, 1, 1, 1]\n", - "BALANCE: distribution=[-2, -2, -2, 2, 0, 0, 0, 0, 0, 0, 1, 1, 1]\n", - "BALANCE: alldistr added: [-2, -2, -2, 3, 0, 0, 0, 0, 0, 0, 1, 1, 1]\n", - "BALANCE: distribution=[-2, -2, -2, 2, 0, 0, 0, 0, 0, 0, 1, 1, 1]\n", - "BALANCE: distribution=[-2, -2, -2, 3, 0, 0, 0, 0, 0, 0, 1, 1, 1]\n" - ] - } - ], - "source": [ - "from cell2mol.charge_assignment import balance_charge\n", - "final_charge_distribution, final_charges = balance_charge(refcell.unique_indices, refcell.unique_species, debug=debug)" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "id": "d40fc43b-29e8-4b27-9347-436c058d8139", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[[-2, -2, -2, 3, 0, 0, 0, 0, 0, 0, 1, 1, 1]]" - ] - }, - "execution_count": 17, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "final_charge_distribution" - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "id": "c12edebe-69b1-4d31-8687-9329f3568f55", - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "data": { - "text/plain": [ - "[(-2, 3, 0, 0, 1)]" - ] - }, - "execution_count": 18, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "final_charges" - ] - }, - { - "cell_type": "code", - "execution_count": 37, - "id": "131a0049-5821-4e2f-a58c-4fb094021d14", - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0 C2-O4\n", - "------------- Cell2mol Protonation ----------------\n", - " Status = True\n", - " Labels = ['O', 'O', 'O', 'O', 'C', 'C']\n", - " Type = Local\n", - " Atoms added in positions = [0 0 0 0 0 0]\n", - " Atoms blocked (no atoms added) = [0 1 1 0 0 0]\n", - "---------------------------------------------------\n", - "\n", - "1 Fe\n", - "2 H24-C12-O6\n", - "------------- Cell2mol Protonation ----------------\n", - " Status = True\n", - " Labels = ['O', 'O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H']\n", - " Type = Empty\n", - " Atoms added in positions = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", - " Atoms blocked (no atoms added) = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "---------------------------------------------------\n", - "\n", - "3 H2-O\n", - "------------- Cell2mol Protonation ----------------\n", - " Status = True\n", - " Labels = ['O', 'H', 'H']\n", - " Type = Empty\n", - " Atoms added in positions = [0, 0, 0]\n", - " Atoms blocked (no atoms added) = [0, 0, 0]\n", - "---------------------------------------------------\n", - "\n", - "4 K\n", - "------------- Cell2mol Protonation ----------------\n", - " Status = True\n", - " Labels = ['K']\n", - " Type = Empty\n", - " Atoms added in positions = [0]\n", - " Atoms blocked (no atoms added) = [0]\n", - "---------------------------------------------------\n", - "\n" - ] - } - ], - "source": [ - "for specie, final_charge in zip(refcell.unique_species, final_charges[0]):\n", - " print(specie.unique_index, specie.formula)\n", - " if (specie.subtype == \"molecule\" and specie.iscomplex == False) or (specie.subtype == \"ligand\"):\n", - " charge_list = [cs.corr_total_charge for cs in specie.possible_cs]\n", - " idx = charge_list.index(final_charge)\n", - " cs = specie.possible_cs[idx]\n", - " specie.charge_state = cs\n", - " print(specie.charge_state.protonation)\n", - " specie.set_charges(cs.corr_total_charge, cs.corr_atom_charges, cs.smiles, cs.rdkit_obj)\n", - " else :\n", - " charge_list = specie.possible_cs \n", - " idx = charge_list.index(final_charge)\n", - " cs = specie.possible_cs[idx]\n", - " specie.set_charge(cs) \n", - " # print(specie)" - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "id": "638b5114-5366-49d6-8c66-54d12ba888ad", - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "C2-O4 canonical smiles: O=C([O-])C(=O)[O-]\n" - ] - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "H24-C12-O6 canonical smiles: [H]C1([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC1([H])[H]\n" - ] - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "H2-O canonical smiles: [H]O[H]\n" - ] - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "K canonical smiles: [K+]\n" - ] - }, - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAMgAAADICAIAAAAiOjnJAAAABmJLR0QA/wD/AP+gvaeTAAAFqklEQVR4nO3bT0jTfxzH8e/m5sTFIlA0dRAZ0cmDEsYuXrroIUKhoReNEIXQUwQe1IMnDcFDBCJBhh6GWXjQi0SEDKIC6VDhJRrzz8FIsEjF6X6Hb3xcNe0X+OLrV5+P095fvshbeOJ33/mdJ51OW8Bh8zq9AI4nwoIEYUGCsCBBWJAgLEgQFiQICxKEBQnCggRhQYKwIEFYkCAsSBAWJAgLEoQFCcKCBGFBgrAgQViQICxIEBYkCAsShAUJwoIEYUGCsCBBWJAgLEgQFiQICxKEBQnCggRhQYKwIEFYkCAsSBAWJAgLEoQFCcKCBGFBgrAgQViQICxIEBYkCAsShAUJwoIEYUGCsCBBWJAgLEgQFiQICxKEBQnCggRhQYKwIEFYkCAsSBAWJAgLEoQFCcKCBGFBgrAgQViQICxIEBYkCAsShAUJwoIEYUGCsCBBWJAgLEgQFiQICxKEBQnCggRhQYKwIOFzegEHpFKpb9++2a8DgUB+fv7B529sbGxubpoxNzc3GAz+edrW1tabN28sy6qurvb7/Ye3rzulT55Xr16ZX//27dsHn7y8vBwOh835eXl58Xg865mfP3+2z1lZWRFs7TJcCg+ysbFx/fr1ZDJpjx6P5+HDh5FIxNmtXIGw9pVOp2/evPn69WtzZGBgoKmpycGVXISw9tXV1RWLxczY2tp6584dB/dxF8LK7tGjR/39/Wasq6t78OCBg/u4DmFlMTc3197ebsbKyspYLObz/X4Hvbi46M9w4cIF+3g4HM48bt8qnjQn8eOGg3369KmhoWFra8seS0tLp6amTp069eeZXq/39OnTZtzd3V1bW7MsKxQKeTweczwnJ0e88lFEWL/4+vVrXV3d6uqqPYZCoZmZmbKysqwnl5SUfPnyxYyJROLcuXOWZb1//764uFi/7JHGpXDP9vb2jRs3FhYW7NHv909OTlZUVDi7lUsR1p6Ojo7nz5/brz0ez8jIyNWrV51dyb0I66d79+4NDw+bsbe3t7m52cF93I6wLMuypqenu7q6zNjY2NjT0+PgPscAb96t+fn5aDS6s7Njj5FIZHR0NPO27n86e/bs27dvLcsqKCg45BVdiLCsYDCY+RnVx48fk8nk+fPn//Xn5ObmVlVVHepqLsal0Lp48eLjx4/Nn6i1tbX6+vofP344u5XbEZZlWda1a9cy32O9e/eura3NwX2OAcL6qa+vr7a21oxjY2OZN4n4V4T1k9frHR8fLy8vN0c6Ojri8biDK7kaYe05c+bM06dPzZPK29vbjY2N5t87+CeE9YuKioqRkREzJpPJaDSaSqUcXMmlCOt3TU1NnZ2dZnzx4kV3d7eD+7gUYWUxODhYU1Njxv7+/idPnji4jxsRVhY+ny8Wi5mnZeyH3z98+ODsVu5CWNkVFRVNTEwEAgF7/P79e319/fr6urNbuQhh7evKlStDQ0NmXFhYaGlpSafTDq7kIoR1kPb29lu3bpnx2bNnmanhAIT1F/fv3798+bIZ7969+/LlSwf3cQvC+ou8vLzJycnCwkJ7TKVS0Wh0aWnJ2a2OvpP42MylS5dmZ2ft1/t9USJTOByOx+OJRMIcMd/hwX48vBuFApdCSBAWJAgLEoQFCcKCBGFBgrAgQViQICxIEBYkCAsShAUJwoIEYUGCsCBBWJAgLEgQFiQICxKEBQnCggRhQYKwIEFYkCAsSBAWJAgLEoQFCcKCBGFBgrAgQViQICxIEBYkCAsShAUJwoIEYUGCsCBBWJAgLEgQFiQICxKEBQnCggRhQYKwIEFYkCAsSBAWJAgLEoQFCcKCBGFBgrAgQViQICxIEBYkCAsShAUJwoIEYUGCsCBBWJAgLEgQFiQICxKEBQnCggRhQYKwIEFYkCAsSBAWJAgLEoQFCcKCBGFBgrAgQViQICxIEBYkCAsShAWJ/wDvOzvdd4W25QAAAFl6VFh0cmRraXRQS0wgcmRraXQgMjAyMy4wOS42AAB4nHu/b+09BiDgZ0AARijdwCgswAXiM0ryAinHkvxcEM5M9ivNVZQShqqSYdDmFgExxMWQ9CIYICAGAL6SCjbiXY/kAAAAfXpUWHRNT0wgcmRraXQgMjAyMy4wOS42AAB4nONSAIEgF+/MEgU4MHLh4lJQMMCDLC0tFcKMDQwMuHwVQAwFJ1d3Tz8F5xBHJ5iIs3+oX0iwgiFQPRiiqnQM8feFiRgqeCsY6BmAATaGgrOHu60hTLWrnwuKbhAfZi+QzQUA/9kosMXA6IMAAAAtelRYdFNNSUxFUyByZGtpdCAyMDIzLjA5LjYAAHici/bWjlWo0TDQMdDRrAEAF9EDUDMzhpwAAAAASUVORK5CYII=\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "from IPython.display import display\n", - "from rdkit.Chem.Draw import IPythonConsole\n", - "IPythonConsole.drawOptions.addAtomIndices = False\n", - "IPythonConsole.molSize = 200,200\n", - "from rdkit import Chem\n", - "from cell2mol.connectivity import create_bonds_spicie\n", - "\n", - "for specie, final_charge in zip(refcell.unique_species, final_charges[0]):\n", - " if (specie.subtype == \"molecule\" and specie.iscomplex == False) or (specie.subtype == \"ligand\"):\n", - " create_bonds_spicie(specie, debug=0)\n", - " print(specie.formula, \"canonical smiles:\", Chem.MolToSmiles(specie.rdkit_obj, canonical=True))\n", - " display(specie.rdkit_obj)" - ] - }, - { - "cell_type": "code", - "execution_count": 85, - "id": "dac7d765-a01e-48bc-aabe-b56630e2302a", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - ". of >" - ] - }, - "execution_count": 85, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "specie.rdkit_obj." - ] - }, - { - "cell_type": "code", - "execution_count": 61, - "id": "d124aee4-31f7-4c89-b71e-7d1ab93c0fa8", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 19\n", - " Formula = C6-O12-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", - "\n", - "------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 42\n", - " Formula = H24-C12-O6\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = 0\n", - " Smiles = [H]C1([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC1([H])[H]\n", - "---------------------------------------------------\n", - "\n", - "------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = 0\n", - " Smiles = [H]O[H]\n", - "---------------------------------------------------\n", - "\n", - "------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - "\n", - "------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = 0\n", - " Smiles = [H]O[H]\n", - "---------------------------------------------------\n", - "\n", - "------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 42\n", - " Formula = H24-C12-O6\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - "\n", - "------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 42\n", - " Formula = H24-C12-O6\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - "\n", - "------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = K\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = 1\n", - " Smiles = [K+]\n", - "---------------------------------------------------\n", - "\n", - "------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = K\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = 1\n", - " Smiles = [K+]\n", - "---------------------------------------------------\n", - "\n", - "------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = K\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = 1\n", - " Smiles = [K+]\n", - "---------------------------------------------------\n", - "\n" - ] - } - ], - "source": [ - "for ref in refcell.refmoleclist:\n", - " print(ref)" - ] - }, - { - "cell_type": "code", - "execution_count": 63, - "id": "3f52255f-9317-43c5-9c9d-61f7b71c64ff", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "['O10', 'O21', 'O21', 'O10', 'C30', 'C30'] ['O10', 'O21', 'O21', 'O10', 'C30', 'C30']\n", - "len(mols)=1 received from xyz2mol with charge 1\n", - "['O10', 'O21', 'O21', 'O10', 'C30', 'C30'] ['O10', 'O21', 'O21', 'O10', 'C30', 'C30']\n", - "len(mols)=1 received from xyz2mol with charge 1\n", - "['O10', 'O21', 'O21', 'O10', 'C30', 'C30'] ['O10', 'O21', 'O21', 'O10', 'C30', 'C30']\n", - "len(mols)=1 received from xyz2mol with charge 1\n", - "\n", - "H24-C12-O6 0\n", - "['O20', 'O20', 'O20', 'O20', 'O20', 'O20', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10'] ['O20', 'O20', 'O20', 'O20', 'O20', 'O20', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10']\n", - "len(mols)=1 received from xyz2mol with charge 1\n", - "H24-C12-O6 H24-C12-O6 True\n", - "\n", - "H2-O 0\n", - "['O20', 'H10', 'H10'] ['O20', 'H10', 'H10']\n", - "len(mols)=1 received from xyz2mol with charge 1\n", - "H2-O H2-O True\n", - "\n", - "['O20', 'H10', 'H10'] ['O20', 'H10', 'H10']\n", - "[0 2 1]\n", - "H2-O H2-O True\n", - "\n", - "H2-O 0\n", - "['O20', 'H10', 'H10'] ['O20', 'H10', 'H10']\n", - "len(mols)=1 received from xyz2mol with charge 1\n", - "H2-O H2-O True\n", - "\n", - "['O20', 'O20', 'O20', 'O20', 'O20', 'O20', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10'] ['O20', 'O20', 'O20', 'O20', 'O20', 'O20', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10']\n", - "[ 1 5 4 3 2 0 6 8 41 39 40 16 33 20 38 30 34 32 27 28 31 24 29 26\n", - " 21 22 25 18 35 23 36 19 37 15 13 17 12 14 11 9 7 10]\n", - "H24-C12-O6 H24-C12-O6 True\n", - "\n", - "['O20', 'O20', 'O20', 'O20', 'O20', 'O20', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10'] ['O20', 'O20', 'O20', 'O20', 'O20', 'O20', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10', 'C40', 'H10', 'H10']\n", - "[ 5 0 4 3 2 1 6 40 7 39 41 38 36 34 37 33 11 35 27 31 13 24 25 29\n", - " 21 26 23 18 19 22 15 20 17 12 16 28 30 32 14 9 10 8]\n", - "H24-C12-O6 H24-C12-O6 True\n", - "\n", - "K 1\n", - "['K00'] ['K00']\n", - "len(mols)=1 received from xyz2mol with charge 1\n", - "K K True\n", - "\n", - "K 1\n", - "['K00'] ['K00']\n", - "len(mols)=1 received from xyz2mol with charge 1\n", - "K K True\n", - "\n", - "K 1\n", - "['K00'] ['K00']\n", - "len(mols)=1 received from xyz2mol with charge 1\n", - "K K True\n", - "\n" - ] - } - ], - "source": [ - "from cell2mol.connectivity import compare_species, compare_metals\n", - "from cell2mol.charge_assignment import check_rdkit_obj_connectivity, charge_state\n", - "for ref in refcell.refmoleclist:\n", - " if hasattr(ref, \"totcharge\"):\n", - " print(ref.formula, ref.totcharge)\n", - " if ref.iscomplex:\n", - " for lig in ref.ligands:\n", - " for specie in refcell.unique_species:\n", - " if specie.subtype == \"ligand\":\n", - " issame = compare_species(lig, specie)\n", - " set_charge_state(specie, lig)\n", - " # print(lig.formula, specie.formula, issame)\n", - " for met in ref.metals:\n", - " for specie in refcell.unique_species:\n", - " if specie.subtype == \"metal\":\n", - " issame = compare_metals(met, specie)\n", - " met.set_charge(specie.charge)\n", - " # print(met.formula, specie.formula, issame) \n", - " else:\n", - " for specie in refcell.unique_species: \n", - " if specie.subtype == \"molecule\":\n", - " issame = compare_species(ref, specie)\n", - " if issame:\n", - " set_charge_state(specie, ref)\n", - " print(ref.formula, specie.formula, issame)\n", - " print(\"\")" - ] - }, - { - "cell_type": "code", - "execution_count": 57, - "id": "b14cd28d-11a8-424c-bd00-78dc8f902b8e", - "metadata": {}, - "outputs": [], - "source": [ - "\n", - "from cell2mol.hungarian import reorder\n", - "\n", - "def set_charge_state(unique_specie, target):\n", - " \n", - " prot = unique_specie.charge_state.protonation\n", - " \n", - " ref_data, target_data = arrange_data_for_reorder(unique_specie, target)\n", - " print(ref_data, target_data)\n", - " dummy1, dummy2, map12 = reorder(ref_data, target_data, unique_specie.coord, target.coord)\n", - " if np.array_equal(map12, np.arange(len(target_data))):\n", - " cs = get_charge_test(final_charge, prot)\n", - " target.set_charges(cs.corr_total_charge, cs.corr_atom_charges, cs.smiles, cs.rdkit_obj)\n", - " else:\n", - " print(map12)" - ] - }, - { - "cell_type": "code", - "execution_count": 31, - "id": "25cd9a2b-f684-40d6-ae58-e611feab4884", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "------------- Cell2mol LIGAND Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = ligand\n", - " Number of Atoms = 6\n", - " Formula = C2-O4\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = -2\n", - " Smiles = O=C([O-])C(=O)[O-]\n", - " Origin = split_complex\n", - " Number of Groups = 2\n", - "---------------------------------------------------\n", - " -2\n" - ] - }, - { - "ename": "ValueError", - "evalue": "Final molecular charge does not match input; could not find valid bond ordering", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mValueError\u001b[0m Traceback (most recent call last)", - "Input \u001b[0;32mIn [31]\u001b[0m, in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 3\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m (specie\u001b[38;5;241m.\u001b[39msubtype \u001b[38;5;241m==\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mmolecule\u001b[39m\u001b[38;5;124m\"\u001b[39m \u001b[38;5;129;01mand\u001b[39;00m specie\u001b[38;5;241m.\u001b[39miscomplex \u001b[38;5;241m==\u001b[39m \u001b[38;5;28;01mFalse\u001b[39;00m) \u001b[38;5;129;01mor\u001b[39;00m (specie\u001b[38;5;241m.\u001b[39msubtype \u001b[38;5;241m==\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mligand\u001b[39m\u001b[38;5;124m\"\u001b[39m):\n\u001b[1;32m 4\u001b[0m \u001b[38;5;28mprint\u001b[39m(specie, final_charge)\n\u001b[0;32m----> 5\u001b[0m \u001b[43mrdDetermineBonds\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mDetermineBondOrders\u001b[49m\u001b[43m(\u001b[49m\u001b[43mspecie\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mrdkit_obj\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mcharge\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mfinal_charge\u001b[49m\u001b[43m)\u001b[49m\n", - "\u001b[0;31mValueError\u001b[0m: Final molecular charge does not match input; could not find valid bond ordering" - ] - } - ], - "source": [ - "# Didn't work!!\n", - "# from rdkit.Chem import rdDetermineBonds\n", - "# for specie, final_charge in zip(refcell.unique_species, final_charges[0]):\n", - "# if (specie.subtype == \"molecule\" and specie.iscomplex == False) or (specie.subtype == \"ligand\"):\n", - "# print(specie, final_charge)\n", - "# rdDetermineBonds.DetermineBondOrders(specie.rdkit_obj, charge=final_charge)" - ] - }, - { - "cell_type": "code", - "execution_count": 156, - "id": "12c93c12-783e-40b7-9edf-b53549cf63f8", - "metadata": {}, - "outputs": [], - "source": [ - "import py3Dmol\n", - "\n", - "def draw_with_spheres(mol):\n", - " v = py3Dmol.view(width=300,height=300)\n", - " IPythonConsole.addMolToView(mol,v)\n", - " v.zoomTo()\n", - " v.setStyle({'sphere':{'radius':0.3},'stick':{'radius':0.2}});\n", - " v.show()" - ] - }, - { - "cell_type": "code", - "execution_count": 157, - "id": "6236142f-8174-4792-bf12-1eab6467909b", - "metadata": {}, - "outputs": [], - "source": [ - "# from rdkit.Chem import rdDetermineBonds\n", - "xyzfile = \"unique_specie_H24-C12-O6_2.xyz\"\n", - "raw_mol = Chem.MolFromXYZFile(f\"/Users/ycho/cell2mol/cell2mol/test/error_2/BOFFOS/{xyzfile}\")\n", - "conn_mol = Chem.Mol(raw_mol)\n", - "rdDetermineBonds.DetermineBonds(conn_mol,charge=0)" - ] - }, - { - "cell_type": "code", - "execution_count": 160, - "id": "b5eeb097-b459-4523-a0c1-29a387af3627", - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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\n", - "text/plain": [ - "" - ] - }, - "execution_count": 160, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "conn_mol" - ] - }, - { - "cell_type": "code", - "execution_count": 162, - "id": "de2ee693-75bc-4cc7-8a97-2e2736820440", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "6 0 SINGLE\n", - "7 6 SINGLE\n", - "8 6 SINGLE\n", - "9 6 SINGLE\n", - "9 1 SINGLE\n", - "10 9 SINGLE\n", - "11 9 SINGLE\n", - "12 1 SINGLE\n", - "13 12 SINGLE\n", - "14 12 SINGLE\n", - "15 12 SINGLE\n", - "15 2 SINGLE\n", - "16 15 SINGLE\n", - "17 15 SINGLE\n", - "18 2 SINGLE\n", - "19 18 SINGLE\n", - "20 18 SINGLE\n", - "21 18 SINGLE\n", - "21 3 SINGLE\n", - "22 21 SINGLE\n", - "23 21 SINGLE\n", - "24 3 SINGLE\n", - "25 24 SINGLE\n", - "26 24 SINGLE\n", - "27 24 SINGLE\n", - "27 4 SINGLE\n", - "28 27 SINGLE\n", - "29 27 SINGLE\n", - "30 4 SINGLE\n", - "31 30 SINGLE\n", - "32 30 SINGLE\n", - "33 5 SINGLE\n", - "33 30 SINGLE\n", - "34 33 SINGLE\n", - "35 33 SINGLE\n", - "36 5 SINGLE\n", - "37 36 SINGLE\n", - "38 36 SINGLE\n", - "39 0 SINGLE\n", - "39 36 SINGLE\n", - "40 39 SINGLE\n", - "41 39 SINGLE\n" - ] - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[H]C1([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC1([H])[H]\n" - ] - } - ], - "source": [ - "from IPython.display import display\n", - "from rdkit.Chem.Draw import IPythonConsole\n", - "IPythonConsole.drawOptions.addAtomIndices = True\n", - "IPythonConsole.molSize = 200,200\n", - "for b in mol.GetBonds():\n", - " print(b.GetBeginAtomIdx(), b.GetEndAtomIdx(), b.GetBondType())\n", - "display(mol)\n", - "smiles = Chem.MolToSmiles(mol, canonical=True)\n", - "print(smiles)" - ] - }, - { - "cell_type": "raw", - "id": "4e51a85a-b6eb-4bd1-b8b1-c76557c461d1", - "metadata": {}, - "source": [ - "# def getcharge(labels: list, pos: list, conmat: np.ndarray, ich: int, cov_factor: float=1.3, allow: bool=True, debug: int=0) -> list:\n", - " ## Generates the connectivity of a molecule given a charge.\n", - " # The molecule is described by the labels, and the atomic cartesian coordinates \"pos\"\n", - " # The adjacency matrix is also provided (conmat)\n", - " #:return iscorrect: boolean variable with a notion of whether the function delivered a good=True or bad=False connectivity\n", - " #:return total_charge: total charge associated with the connectivity\n", - " #:return atom_charge: atomic charge for each atom of the molecule\n", - " #:return mols: rdkit molecule object\n", - " #:return smiles: smiles representation of the molecule\n", - "\n", - " # mols = xyz2mol(atnums,pos,conmat,cov_factor,charge=ich,use_graph=True,allow_charged_fragments=allow,embed_chiral=True,use_huckel=False)\n", - "from rdkit import Chem\n", - "\n", - "from cell2mol.xyz2mol import xyz2mol\n", - "def get_charge_test(charge: int, prot: object, allow: bool=True, debug: int=0): \n", - " ## Generates the connectivity of a molecule given a desired charge (charge).\n", - " # The molecule is described by a protonation states that has labels, and the atomic cartesian coordinates \"coords\"\n", - " # The adjacency matrix is also provided in the protonation state(adjmat)\n", - " #:return charge_state which is an object with the necessary information for other functions to handle the result\n", - "\n", - " natoms = prot.natoms\n", - " atnums = prot.atnums\n", - "\n", - " ##########################\n", - " # xyz2mol is called here #\n", - " ##########################\n", - " # use_graph is called for a faster generation\n", - " # allow_charged_fragments is necessary for non-neutral molecules\n", - " # embed_chiral shouldn't ideally be necessary, but it runs a sanity check that improves the proposed connectivity\n", - " # use_huckel false means that the xyz2mol adjacency will be generated based on atom distances and vdw radii.\n", - " # instead of use_huckel, we provide the adjacency matrix \n", - "\n", - " mols = xyz2mol(atnums, prot.coords, prot.adjmat, prot.cov_factor, charge=charge, allow_charged_fragments=allow)\n", - " print(f\"{len(mols)=} received from xyz2mol with charge {charge}\")\n", - " \n", - " if len(mols) > 1: print(\"WARNING: More than 1 mol received from xyz2mol for initcharge:\", charge)\n", - "\n", - " # Smiles are generated with rdkit\n", - " smiles = Chem.MolToSmiles(mols[0])\n", - " if debug >= 2: print(f\"GET_CHARGE. {smiles=}\")\n", - " # Gets the resulting charges\n", - " atom_charge = []\n", - " total_charge = 0\n", - " for i in range(natoms):\n", - " a = mols[0].GetAtomWithIdx(i) # Returns a particular Atom\n", - " atom_charge.append(a.GetFormalCharge())\n", - " total_charge += a.GetFormalCharge()\n", - "\n", - " # Connectivity is checked\n", - " iscorrect = check_rdkit_obj_connectivity(mols[0], prot.natoms, charge, debug=debug)\n", - "\n", - " # Charge_state is initiated\n", - " ch_state = charge_state(iscorrect, total_charge, atom_charge, mols[0], smiles, charge, allow, prot)\n", - "\n", - " return ch_state" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "8cc24d95-8f26-4ac0-a49b-9c96f27b6e9a", - "metadata": {}, - "outputs": [], - "source": [ - "def reorder_protonation (prot, map12, debug: int=0):\n", - " if debug > 0: print(\"PROTONATION.REORDER. labels:\", prot.labels)\n", - " if debug > 0: print(\"PROTONATION.REORDER. received map:\", map)\n", - "\n", - " ## for protonation states with added atoms, the reorder map will have fewer items. Correct it here \n", - " mapext = np.copy(map12)\n", - " if prot.added_atoms > 0 and len(map12) < len(prot.labels):\n", - " for ldx in range(0,prot.added_atoms):\n", - " mapext = np.append(mapext,len(map12)+ldx)\n", - " if debug > 0: print(\"PROTONATION.REORDER. extended map:\", mapext)\n", - "\n", - " assert len(mapext) == len(prot.labels)\n", - " assert len(map12) == len(prot.addedlist)\n", - " if len(map12) > 0:\n", - " reordered_labels = [prot.labels[i] for i in mapext]\n", - " reordered_coords = [prot.coords[i] for i in mapext]\n", - " reordered_addedlist = [prot.addedlist[i] for i in map12]\n", - " reordered_block = [prot.block[i] for i in map12]\n", - " reordered_metal_electrons = [prot.metal_electrons[i] for i in map12]\n", - " reordered_elemlist = [prot.elemlist[i] for i in map12]\n", - "\n", - "\n", - " reordered_protonation = protonation(reordered_labels, reordered_coords, prot.cov_factor, prot.added_atoms,\n", - " reordered_addedlist, reordered_block, reordered_metal_electrons, reordered_elemlist, \n", - " tmpsmiles=prot.tmpsmiles, os=prot.os, typ=\"Reordered\", parent=prot.parent)\n", - " print(\"CREATED REORDERED PROTONATION\", reordered_protonation)\n", - "\n", - " return reordered_protonation" - ] - }, - { - "cell_type": "code", - "execution_count": 35, - "id": "89b03457-30be-4f68-bfdd-6a1eab038a02", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "SAVING cell2mol CELL object to error_2/BOFFOS/Ref_Cell_BOFFOS_NEW.cell\n" - ] - } - ], - "source": [ - "refcell.save(f\"{folder}/{name}/Ref_Cell_{name}_NEW.cell\")" - ] - }, - { - "cell_type": "code", - "execution_count": 38, - "id": "d83153eb-1102-47a0-bcd9-10c66e1a3f39", - "metadata": {}, - "outputs": [], - "source": [ - "load_cell = np.load(f\"{folder}/{name}/Ref_Cell_{name}_NEW.cell\", allow_pickle=True)" - ] - }, - { - "cell_type": "code", - "execution_count": 55, - "id": "f6fee965-de76-43a7-82a8-9af05d55435f", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "COMPARE_SPECIES. Comparing:\n", - "C2-O4\n", - "C2-O4\n", - "COMPARE_SPECIES. kdx ldx elem1 - elem2 : reordered - reference\n", - "COMPARE_SPECIES. Comparing:\n", - "C2-O4\n", - "C2-O4\n", - "COMPARE_SPECIES. kdx ldx elem1 - elem2 : reordered - reference\n", - "COMPARE_SPECIES. Comparing:\n", - "C2-O4\n", - "C2-O4\n", - "COMPARE_SPECIES. kdx ldx elem1 - elem2 : reordered - reference\n", - "3\n" - ] - } - ], - "source": [ - "for ref in load_cell.refmoleclist:\n", - " if ref.iscomplex:\n", - " occurrence = ref.get_occurrence(ref.ligands[0])\n", - " print(occurrence)\n", - " # print(ref.metals)\n", - " # print(ref.ligands)\n", - " # else:\n", - " # print(ref)" - ] - }, - { - "cell_type": "code", - "execution_count": 85, - "id": "6bc36f34-5717-4a8c-8dfb-7defc23292b1", - "metadata": {}, - "outputs": [], - "source": [ - "ref = refcell.refmoleclist[0]" - ] - }, - { - "cell_type": "code", - "execution_count": 90, - "id": "68436123-a378-43e0-9111-091f60c6d9a0", - "metadata": {}, - "outputs": [], - "source": [ - "spec_object = refcell.unique_species[0]" - ] - }, - { - "cell_type": "code", - "execution_count": 128, - "id": "6be6b6ba-f358-4e77-8769-4d0e1a4960ea", - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "data": { - "text/plain": [ - "[8, 8, 8, 8, 6, 6]" - ] - }, - "execution_count": 128, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "spec_object.possible_cs[0].protonation.atnums" - ] - }, - { - "cell_type": "code", - "execution_count": 41, - "id": "97ea9d39-4f3a-413b-a5d7-ddd950259bc8", - "metadata": {}, - "outputs": [], - "source": [ - "def arrange_data_for_reorder(reference: object, target: object, debug: int=0):\n", - " # To do the reorder, we create new tags that include as much information as possible.\n", - " # Ideally, we aim to include the label + the connectivity + the metal connectivity\n", - " t_totconnec = 0\n", - " t_totmconnec = 0\n", - " for a in target.atoms:\n", - " t_totconnec += a.connec\n", - " t_totmconnec += a.mconnec\n", - " r_totconnec = 0\n", - " r_totmconnec = 0\n", - " for a in reference.atoms:\n", - " r_totconnec += a.connec\n", - " r_totmconnec += a.mconnec\n", - " if t_totconnec == r_totconnec: useconec = True\n", - " else: useconec = False\n", - " if t_totmconnec == r_totmconnec: usemconec = True\n", - " else: usemconec = False\n", - " # For target\n", - " target_data = []\n", - " for a in target.atoms:\n", - " data = a.label\n", - " if useconec: data += str(a.connec)\n", - " if usemconec: data += str(a.mconnec)\n", - " target_data.append(data)\n", - " # For reference\n", - " ref_data = []\n", - " for a in reference.atoms:\n", - " data = a.label\n", - " if useconec: data += str(a.connec)\n", - " if usemconec: data += str(a.mconnec)\n", - " ref_data.append(data)\n", - " return ref_data, target_data" - ] - }, - { - "cell_type": "code", - "execution_count": 111, - "id": "ab466d45-4e91-472d-8b0c-d54ec4f1ea73", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[8, 10, 12, 13, 16, 18]" - ] - }, - "execution_count": 111, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "lig.get_parent_indices(\"molecule\")" - ] - }, - { - "cell_type": "code", - "execution_count": 127, - "id": "7a830fdf-d4c0-4192-8772-b09692190d4f", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "['O', 'O', 'O', 'O', 'C', 'C'] [8, 10, 12, 13, 16, 18]\n", - "['O10', 'O21', 'O21', 'O10', 'C30', 'C30'] ['O10', 'O21', 'O21', 'O10', 'C30', 'C30']\n", - "['O', 'O', 'O', 'O', 'C', 'C'] [7, 9, 11, 14, 15, 17]\n", - "['O10', 'O21', 'O21', 'O10', 'C30', 'C30'] ['O10', 'O21', 'O21', 'O10', 'C30', 'C30']\n", - "['O', 'O', 'O', 'O', 'C', 'C'] [1, 2, 3, 4, 5, 6]\n", - "['O10', 'O21', 'O21', 'O10', 'C30', 'C30'] ['O10', 'O21', 'O21', 'O10', 'C30', 'C30']\n" - ] - } - ], - "source": [ - "from cell2mol.hungarian import reorder\n", - "\n", - "for lig in ref.ligands:\n", - " \n", - " print(lig.labels, lig.get_parent_indices(\"molecule\"))\n", - " ref_data, target_data = arrange_data_for_reorder(spec_object, lig)\n", - " print(ref_data, target_data)\n", - " dummy1, dummy2, map12 = reorder(ref_data, target_data, spec_object.coord, lig.coord)\n", - " if np.array_equal(map12, np.arange(len(target_data))):\n", - " cs = get_charge_test(final_charge, prot)\n", - " specie.set_charges(cs.corr_total_charge, cs.corr_atom_charges, cs.smiles, cs.rdkit_obj)\n", - " else:\n", - " print(map12)\n", - " # if (map12, np.arrange(len()target_data.all():\n", - " # print(\"Yes\")" - ] - }, - { - "cell_type": "code", - "execution_count": 83, - "id": "d17bf0ea-de21-422e-894a-3366649703a8", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "['O', 'O', 'O', 'O', 'C', 'C']\n", - "[1 1 1 1 3 3]\n", - "['O', 'O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H']\n", - "[2 2 2 2 2 2 4 1 1 4 1 1 4 1 1 4 1 1 4 1 1 4 1 1 4 1 1 4 1 1 4 1 1 4 1 1 4\n", - " 1 1 4 1 1]\n", - "['O', 'H', 'H']\n", - "[2 1 1]\n", - "['K']\n", - "[0]\n" - ] - } - ], - "source": [ - "for specie in refcell.unique_species:\n", - " if specie.subtype != \"metal\":\n", - " for cs in specie.possible_cs:\n", - " print(cs.protonation.labels)\n", - " print(cs.protonation.adjnum)" - ] - }, - { - "cell_type": "code", - "execution_count": 66, - "id": "42385279-6a91-4248-9843-1b71ffff6bf1", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "H24-C12-O6 0\n", - "H24-C12-O6 H24-C12-O6 True\n", - "\n", - "H2-O 0\n", - "H2-O H2-O True\n", - "\n", - "H2-O H2-O True\n", - "\n", - "H2-O H2-O True\n", - "\n", - "H24-C12-O6 H24-C12-O6 True\n", - "\n", - "H24-C12-O6 H24-C12-O6 True\n", - "\n", - "K 1\n", - "K K True\n", - "\n", - "K K True\n", - "\n", - "K K True\n", - "\n" - ] - } - ], - "source": [ - "from cell2mol.connectivity import compare_species, compare_metals\n", - "for ref in refcell.refmoleclist:\n", - " if hasattr(ref, \"totcharge\"):\n", - " print(ref.formula, ref.totcharge, ref.)\n", - " if ref.iscomplex:\n", - " for lig in ref.ligands:\n", - " for specie in refcell.unique_species:\n", - " if specie.subtype == \"ligand\":\n", - " issame = compare_species(lig, specie)\n", - " # print(lig.formula, specie.formula, issame)\n", - " for met in ref.metals:\n", - " for specie in refcell.unique_species:\n", - " if specie.subtype == \"metal\":\n", - " issame = compare_metals(met, specie)\n", - " # print(met.formula, specie.formula, issame) \n", - " else:\n", - " for specie in refcell.unique_species: \n", - " if specie.subtype == \"molecule\":\n", - " issame = compare_species(ref, specie)\n", - " if issame:\n", - " print(ref.formula, specie.formula, issame)\n", - " print(\"\")" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "id": "475c10ec-29e4-4a15-9d13-bf04ac534884", - "metadata": {}, - "outputs": [], - "source": [ - "from cell2mol.classes import cell\n", - "newcell = cell(name, cell_labels, cell_pos, cell_fracs, cell_vector, cell_param)\n", - "newcell.get_subtype(\"unit_cell\")" - ] - }, - { - "cell_type": "code", - "execution_count": 24, - "id": "15380c6f-777e-4f49-a62a-5bae4afc4264", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[------------- Cell2mol CELL Object ----------------\n", - " Version = 2.0\n", - " Type = cell\n", - " Sub-Type = reference\n", - " Name (Refcode) = BOFFOS\n", - " Num Atoms = 157\n", - " Cell Parameters a:c = [24.369, 24.369, 9.748]\n", - " Cell Parameters al:ga = [90.0, 90.0, 120.0]\n", - " Cell vector = [[ 24.369 0. 0. ]\n", - " [-12.1845 21.10417306 0. ]\n", - " [ 0. 0. 9.748 ]]\n", - "---------------------------------------------------\n", - "]\n", - "[------------- Cell2mol CELL Object ----------------\n", - " Version = 2.0\n", - " Type = cell\n", - " Sub-Type = reference\n", - " Name (Refcode) = BOFFOS\n", - " Num Atoms = 157\n", - " Cell Parameters a:c = [24.369, 24.369, 9.748]\n", - " Cell Parameters al:ga = [90.0, 90.0, 120.0]\n", - " Cell vector = [[ 24.369 0. 0. ]\n", - " [-12.1845 21.10417306 0. ]\n", - " [ 0. 0. 9.748 ]]\n", - "---------------------------------------------------\n", - "]\n", - "[------------- Cell2mol CELL Object ----------------\n", - " Version = 2.0\n", - " Type = cell\n", - " Sub-Type = reference\n", - " Name (Refcode) = BOFFOS\n", - " Num Atoms = 157\n", - " Cell Parameters a:c = [24.369, 24.369, 9.748]\n", - " Cell Parameters al:ga = [90.0, 90.0, 120.0]\n", - " Cell vector = [[ 24.369 0. 0. ]\n", - " [-12.1845 21.10417306 0. ]\n", - " [ 0. 0. 9.748 ]]\n", - "---------------------------------------------------\n", - "]\n", - "[------------- Cell2mol CELL Object ----------------\n", - " Version = 2.0\n", - " Type = cell\n", - " Sub-Type = reference\n", - " Name (Refcode) = BOFFOS\n", - " Num Atoms = 157\n", - " Cell Parameters a:c = [24.369, 24.369, 9.748]\n", - " Cell Parameters al:ga = [90.0, 90.0, 120.0]\n", - " Cell vector = [[ 24.369 0. 0. ]\n", - " [-12.1845 21.10417306 0. ]\n", - " [ 0. 0. 9.748 ]]\n", - "---------------------------------------------------\n", - "]\n", - "[------------- Cell2mol CELL Object ----------------\n", - " Version = 2.0\n", - " Type = cell\n", - " Sub-Type = reference\n", - " Name (Refcode) = BOFFOS\n", - " Num Atoms = 157\n", - " Cell Parameters a:c = [24.369, 24.369, 9.748]\n", - " Cell Parameters al:ga = [90.0, 90.0, 120.0]\n", - " Cell vector = [[ 24.369 0. 0. ]\n", - " [-12.1845 21.10417306 0. ]\n", - " [ 0. 0. 9.748 ]]\n", - "---------------------------------------------------\n", - "]\n", - "[------------- Cell2mol CELL Object ----------------\n", - " Version = 2.0\n", - " Type = cell\n", - " Sub-Type = reference\n", - " Name (Refcode) = BOFFOS\n", - " Num Atoms = 157\n", - " Cell Parameters a:c = [24.369, 24.369, 9.748]\n", - " Cell Parameters al:ga = [90.0, 90.0, 120.0]\n", - " Cell vector = [[ 24.369 0. 0. ]\n", - " [-12.1845 21.10417306 0. ]\n", - " [ 0. 0. 9.748 ]]\n", - "---------------------------------------------------\n", - "]\n", - "[------------- Cell2mol CELL Object ----------------\n", - " Version = 2.0\n", - " Type = cell\n", - " Sub-Type = reference\n", - " Name (Refcode) = BOFFOS\n", - " Num Atoms = 157\n", - " Cell Parameters a:c = [24.369, 24.369, 9.748]\n", - " Cell Parameters al:ga = [90.0, 90.0, 120.0]\n", - " Cell vector = [[ 24.369 0. 0. ]\n", - " [-12.1845 21.10417306 0. ]\n", - " [ 0. 0. 9.748 ]]\n", - "---------------------------------------------------\n", - "]\n", - "[------------- Cell2mol CELL Object ----------------\n", - " Version = 2.0\n", - " Type = cell\n", - " Sub-Type = reference\n", - " Name (Refcode) = BOFFOS\n", - " Num Atoms = 157\n", - " Cell Parameters a:c = [24.369, 24.369, 9.748]\n", - " Cell Parameters al:ga = [90.0, 90.0, 120.0]\n", - " Cell vector = [[ 24.369 0. 0. ]\n", - " [-12.1845 21.10417306 0. ]\n", - " [ 0. 0. 9.748 ]]\n", - "---------------------------------------------------\n", - "]\n", - "[------------- Cell2mol CELL Object ----------------\n", - " Version = 2.0\n", - " Type = cell\n", - " Sub-Type = reference\n", - " Name (Refcode) = BOFFOS\n", - " Num Atoms = 157\n", - " Cell Parameters a:c = [24.369, 24.369, 9.748]\n", - " Cell Parameters al:ga = [90.0, 90.0, 120.0]\n", - " Cell vector = [[ 24.369 0. 0. ]\n", - " [-12.1845 21.10417306 0. ]\n", - " [ 0. 0. 9.748 ]]\n", - "---------------------------------------------------\n", - "]\n", - "[------------- Cell2mol CELL Object ----------------\n", - " Version = 2.0\n", - " Type = cell\n", - " Sub-Type = reference\n", - " Name (Refcode) = BOFFOS\n", - " Num Atoms = 157\n", - " Cell Parameters a:c = [24.369, 24.369, 9.748]\n", - " Cell Parameters al:ga = [90.0, 90.0, 120.0]\n", - " Cell vector = [[ 24.369 0. 0. ]\n", - " [-12.1845 21.10417306 0. ]\n", - " [ 0. 0. 9.748 ]]\n", - "---------------------------------------------------\n", - "]\n" - ] - } - ], - "source": [ - "for ref in refcell.refmoleclist:\n", - " print(ref.parents)" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "id": "f7e884c2-765d-4369-a595-3ebf9943c1c7", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "------------- Cell2mol CELL Object ----------------\n", - " Version = 0.1\n", - " Type = cell\n", - " Name (Refcode) = BOFFOS\n", - " Num Atoms = 525\n", - " Cell Parameters a:c = [24.369, 24.369, 9.748]\n", - " Cell Parameters al:ga = [90.0, 90.0, 120.0]\n", - " Cell vector = [[ 24.369 0. 0. ]\n", - " [-12.1845 21.10417306 0. ]\n", - " [ 0. 0. 9.748 ]]\n", - "---------------------------------------------------\n", - " # of Ref Molecules: = 10\n", - " With Formulae: \n", - " 0: C6-O12-Fe \n", - " 1: H24-C12-O6 \n", - " 2: H2-O \n", - " 3: H2-O \n", - " 4: H2-O \n", - " 5: H24-C12-O6 \n", - " 6: H24-C12-O6 \n", - " 7: K \n", - " 8: K \n", - " 9: K " - ] - }, - "execution_count": 8, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "newcell" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "id": "c57291bf-26ab-4474-b711-e66b8ae533ca", - "metadata": {}, - "outputs": [], - "source": [ - "debug = 2" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "id": "a86e4043-ddb1-4d81-afdf-a569eadd96cc", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "#########################################\n", - " GETREFS: Generate reference molecules \n", - "#########################################\n", - "GETREFS: found 10 reference molecules\n", - "GETREFS: ['C6-O12-Fe', 'H24-C12-O6', 'H2-O', 'H2-O', 'H2-O', 'H24-C12-O6', 'H24-C12-O6', 'K', 'K', 'K']\n", - "GETREFS: [------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 19\n", - " Formula = C6-O12-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 MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 42\n", - " Formula = H24-C12-O6\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 42\n", - " Formula = H24-C12-O6\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 42\n", - " Formula = H24-C12-O6\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = K\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = K\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = K\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - "]\n", - "GETREFS: working with C6-O12-Fe\n", - "GETREFS: working with H24-C12-O6\n", - "GETREFS: working with H2-O\n", - "GETREFS: working with H2-O\n", - "GETREFS: working with H2-O\n", - "GETREFS: working with H24-C12-O6\n", - "GETREFS: working with H24-C12-O6\n", - "GETREFS: working with K\n", - "GETREFS: working with K\n", - "GETREFS: working with K\n" - ] - }, - { - "data": { - "text/plain": [ - "[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 19\n", - " Formula = C6-O12-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 MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 42\n", - " Formula = H24-C12-O6\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 42\n", - " Formula = H24-C12-O6\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 42\n", - " Formula = H24-C12-O6\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = K\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = K\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = K\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " ---------------------------------------------------]" - ] - }, - "execution_count": 10, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "newcell.get_reference_molecules(ref_labels, ref_fracs, debug=0)" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "id": "30b52381-57b4-4420-afd9-d9434e319b8e", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Molecule 0 formula=C6-O12-Fe\n", - "New ligand found with: formula C2-O4 added in position 0\n", - "ligand 1 is the same with 0 in typelist\n", - "ligand 2 is the same with 0 in typelist\n", - "New Metal Center found with: labels Fe and added in position 1\n", - "Molecule 1 formula=H24-C12-O6\n", - "New molecule found with: formula=H24-C12-O6 and added in position 2\n", - "Molecule 2 formula=H2-O\n", - "New molecule found with: formula=H2-O and added in position 3\n", - "Molecule 3 formula=H2-O\n", - "Molecule 3 is the same with 1 in typelist\n", - "Molecule 4 formula=H2-O\n", - "Molecule 4 is the same with 1 in typelist\n", - "Molecule 5 formula=H24-C12-O6\n", - "Molecule 5 is the same with 0 in typelist\n", - "Molecule 6 formula=H24-C12-O6\n", - "Molecule 6 is the same with 0 in typelist\n", - "Molecule 7 formula=K\n", - "New molecule found with: formula=K and added in position 4\n", - "Molecule 8 formula=K\n", - "Molecule 8 is the same with 2 in typelist\n", - "Molecule 9 formula=K\n", - "Molecule 9 is the same with 2 in typelist\n" - ] - } - ], - "source": [ - "from cell2mol.connectivity import compare_atoms, compare_species, compare_metals\n", - "debug = 2\n", - "unique_species = []\n", - "unique_indices = []\n", - "\n", - "typelist_mols = [] # temporary variable \n", - "typelist_ligs = [] # temporary variable\n", - "typelist_mets = [] # temporary variable\n", - "\n", - "specs_found = -1\n", - "for idx, mol in enumerate(newcell.refmoleclist):\n", - " if debug >= 2: print(f\"Molecule {idx} formula={mol.formula}\")\n", - " if not mol.iscomplex:\n", - " found = False\n", - " for ldx, typ in enumerate(typelist_mols): # Molecules\n", - " issame = compare_species(mol, typ[0], debug=0)\n", - " if issame :\n", - " found = True ; kdx = typ[1]\n", - " if debug >= 2: print(f\"Molecule {idx} is the same with {ldx} in typelist\")\n", - " if not found:\n", - " specs_found += 1 ; kdx = specs_found\n", - " typelist_mols.append(list([mol, kdx]))\n", - " unique_species.append(mol)\n", - " if debug >= 2: print(f\"New molecule found with: formula={mol.formula} and added in position {kdx}\")\n", - " unique_indices.append(kdx)\n", - " mol.unique_index = kdx\n", - "\n", - " else:\n", - " if not hasattr(mol,\"ligands\"): mol.split_complex(debug=debug)\n", - " for jdx, lig in enumerate(mol.ligands): # ligands\n", - " found = False\n", - " for ldx, typ in enumerate(typelist_ligs):\n", - " issame = compare_species(lig, typ[0], debug=0)\n", - " if issame :\n", - " found = True ; kdx = typ[1]\n", - " if debug >= 2: print(f\"ligand {jdx} is the same with {ldx} in typelist\")\n", - " if not found:\n", - " specs_found += 1 ; kdx = specs_found\n", - " typelist_ligs.append(list([lig, kdx]))\n", - " unique_species.append(lig)\n", - " if debug >= 2: print(f\"New ligand found with: formula {lig.formula} added in position {kdx}\")\n", - " unique_indices.append(kdx)\n", - " lig.unique_index = kdx\n", - "\n", - " for jdx, met in enumerate(mol.metals): # metals\n", - " found = False\n", - " for ldx, typ in enumerate(typelist_mets):\n", - " issame = compare_metals(met, typ[0], debug=0)\n", - " if issame :\n", - " found = True ; kdx = typ[1]\n", - " if debug >= 2: print(f\"Metal {jdx} is the same with {ldx} in typelist\")\n", - " if not found:\n", - " specs_found += 1 ; kdx = specs_found\n", - " typelist_mets.append(list([met, kdx]))\n", - " unique_species.append(met)\n", - " if debug >= 2: print(f\"New Metal Center found with: labels {met.label} and added in position {kdx}\")\n", - " unique_indices.append(kdx)\n", - " met.unique_index = kdx" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "id": "606c6ef5-631a-4568-a160-19703eb5a592", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[------------- Cell2mol LIGAND Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = ligand\n", - " Number of Atoms = 6\n", - " Formula = C2-O4\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_complex\n", - " Number of Groups = 2\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol METAL Object --------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Sub-Type = metal\n", - " Label = Fe\n", - " Atomic Number = 26\n", - " Index in Molecule = 0\n", - " Metal Adjacency (mconnec) = 6\n", - " Regular Adjacencies (connec) = 6\n", - " ----------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 42\n", - " Formula = H24-C12-O6\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = K\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " ---------------------------------------------------]" - ] - }, - "execution_count": 15, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "unique_species" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "id": "389a7dcb-ccb9-4eaf-9336-266a27d735c8", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[0, 0, 0, 1, 2, 3, 3, 3, 2, 2, 4, 4, 4]" - ] - }, - "execution_count": 16, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "unique_indices" - ] - }, - { - "cell_type": "code", - "execution_count": 22, - "id": "3fd10506-978b-4560-a4b5-1ef00f3b4921", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Fe 1\n", - "C2-O4 0\n", - "C2-O4 0\n", - "C2-O4 0\n", - "H24-C12-O6 2\n", - "H2-O 3\n", - "H2-O 3\n", - "H2-O 3\n", - "H24-C12-O6 2\n", - "H24-C12-O6 2\n", - "K 4\n", - "K 4\n", - "K 4\n" - ] - } - ], - "source": [ - "for ref in newcell.refmoleclist:\n", - " if ref.iscomplex:\n", - " for metal in ref.metals:\n", - " print(metal.label, metal.unique_index)\n", - " for lig in ref.ligands:\n", - " print(lig.formula, lig.unique_index)\n", - " else :\n", - " print(ref.formula, ref.unique_index)" - ] - }, - { - "cell_type": "code", - "execution_count": 23, - "id": "89f4f42e-87cc-4d42-b697-3776e486571b", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - " GET_PROTONATION_STATES: Evaluating group O with parent_indices [2]\n", - " GET_PROTONATION_STATES: evaluating non-haptic group with index 2 and label O\n", - " GET_PROTONATION_STATES: Evaluating group O with parent_indices [1]\n", - " GET_PROTONATION_STATES: evaluating non-haptic group with index 1 and label O\n", - " GET_PROTONATION_STATES:protonation_states=[------------- Cell2mol Protonation ----------------\n", - " Status = True\n", - " Labels = ['O', 'O', 'O', 'O', 'C', 'C']\n", - " Type = Local\n", - " Atoms added in positions = [0 0 0 0 0 0]\n", - " Atoms blocked (no atoms added) = [0 1 1 0 0 0]\n", - "---------------------------------------------------\n", - "]\n", - " POSCHARGE will try charges [0, -1, 1, -2, 2, -3, 3, -4, 4]\n", - " POSCHARGE: charge 0 with smiles [O-][C+]([O-])[C+]([O-])[O-]\n", - " POSCHARGE: charge 0 with smiles [O-][C+]([O-])[C+]([O-])[O-]\n", - " POSCHARGE: charge 0 with smiles [O-][C+]([O-])[C+]([O-])[O-]\n", - " POSCHARGE: charge 0 with smiles O=C([O-])C(=O)[O-]\n", - " POSCHARGE: charge 0 with smiles [O-][C+]([O-])[C+]([O-])[O-]\n", - " POSCHARGE: charge 0 with smiles [O-][C+]([O-])[C-]([O-])[O-]\n", - " POSCHARGE: charge 0 with smiles [O-][C+]([O-])[C+]([O-])[O-]\n", - " POSCHARGE: charge 0 with smiles [O-]C([O-])=C([O-])[O-]\n", - " POSCHARGE: charge 0 with smiles [O-][C+]([O-])[C+]([O-])[O-]\n", - " NEW SELECT FUNCTION: uncorr_total: [-2, -2, -2, -2, -2, -4, -2, -4, -2]\n", - " NEW SELECT FUNCTION: uncorr_abs_total: [2, 2, 2, 2, 2, 4, 2, 4, 2]\n", - " NEW SELECT FUNCTION: uncorr_abs_atcharge: [6, 6, 6, 2, 6, 6, 6, 4, 6]\n", - " NEW SELECT FUNCTION: uncorr_zwitt: [True, True, True, False, True, True, True, False, True]\n", - " NEW SELECT FUNCTION: coincide: [False, False, False, True, False, False, False, True, False]\n", - " NEW SELECT FUNCTION: listofmintot: [0, 1, 2, 3, 4, 6, 8]\n", - " NEW SELECT FUNCTION: listofminabs: [3]\n", - " NEW SELECT FUNCTION: tmplist: [3], including:\n", - " NEW SELECT FUNCTION: Corr_charge=-2\n", - " NEW SELECT FUNCTION: Smiles=O=C([O-])C(=O)[O-]\n", - " NEW SELECT FUNCTION: found corr_charges=[-2]\n", - " NEW SELECT FUNCTION: doing tgt_charge=-2\n", - " NEW SELECT FUNCTION: charge_state added\n", - " NEW SELECT FUNCTION: Case 1, only one entry for -2 in tmplist\n", - " POSCHARGE: doing empty PROTONATION for this specie\n", - " CREATED EMPTY PROTONATION ------------- Cell2mol Protonation ----------------\n", - " Status = True\n", - " Labels = ['O', 'O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H']\n", - " Type = Empty\n", - " Atoms added in positions = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", - " Atoms blocked (no atoms added) = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "---------------------------------------------------\n", - "\n", - " POSCHARGE will try charges [0, -1, 1, -2, 2, -3, 3]\n", - " POSCHARGE: charge 0 with smiles [H]C1([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC1([H])[H]\n", - " POSCHARGE: charge 0 with smiles [H]C1([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC1([H])[H]\n", - " POSCHARGE: charge 0 with smiles [H]C1([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC1([H])[H]\n", - " POSCHARGE: charge 0 with smiles [H]C1([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC1([H])[H]\n", - " POSCHARGE: charge 0 with smiles [H]C1([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC1([H])[H]\n", - " POSCHARGE: charge 0 with smiles [H]C1([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC1([H])[H]\n", - " POSCHARGE: charge 0 with smiles [H]C1([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC1([H])[H]\n", - " NEW SELECT FUNCTION: uncorr_total: [0, 0, 0, 0, 0, 0, 0]\n", - " NEW SELECT FUNCTION: uncorr_abs_total: [0, 0, 0, 0, 0, 0, 0]\n", - " NEW SELECT FUNCTION: uncorr_abs_atcharge: [0, 0, 0, 0, 0, 0, 0]\n", - " NEW SELECT FUNCTION: uncorr_zwitt: [False, False, False, False, False, False, False]\n", - " NEW SELECT FUNCTION: coincide: [True, False, False, False, False, False, False]\n", - " NEW SELECT FUNCTION: listofmintot: [0, 1, 2, 3, 4, 5, 6]\n", - " NEW SELECT FUNCTION: listofminabs: [0, 1, 2, 3, 4, 5, 6]\n", - " NEW SELECT FUNCTION: tmplist: [0], including:\n", - " NEW SELECT FUNCTION: Corr_charge=0\n", - " NEW SELECT FUNCTION: Smiles=[H]C1([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC1([H])[H]\n", - " NEW SELECT FUNCTION: found corr_charges=[0]\n", - " NEW SELECT FUNCTION: doing tgt_charge=0\n", - " NEW SELECT FUNCTION: charge_state added\n", - " NEW SELECT FUNCTION: Case 1, only one entry for 0 in tmplist\n", - " POSCHARGE: doing empty PROTONATION for this specie\n", - " CREATED EMPTY PROTONATION ------------- Cell2mol Protonation ----------------\n", - " Status = True\n", - " Labels = ['O', 'H', 'H']\n", - " Type = Empty\n", - " Atoms added in positions = [0, 0, 0]\n", - " Atoms blocked (no atoms added) = [0, 0, 0]\n", - "---------------------------------------------------\n", - "\n", - " POSCHARGE will try charges [0, -1, 1, -2, 2, -3, 3]\n", - " POSCHARGE: charge 0 with smiles [H]O[H]\n", - " POSCHARGE: charge 0 with smiles [H]O[H]\n", - " POSCHARGE: charge 0 with smiles [H]O[H]\n", - " POSCHARGE: charge 0 with smiles [H]O[H]\n", - " POSCHARGE: charge 0 with smiles [H]O[H]\n", - " POSCHARGE: charge 0 with smiles [H]O[H]\n", - " POSCHARGE: charge 0 with smiles [H]O[H]\n", - " NEW SELECT FUNCTION: uncorr_total: [0, 0, 0, 0, 0, 0, 0]\n", - " NEW SELECT FUNCTION: uncorr_abs_total: [0, 0, 0, 0, 0, 0, 0]\n", - " NEW SELECT FUNCTION: uncorr_abs_atcharge: [0, 0, 0, 0, 0, 0, 0]\n", - " NEW SELECT FUNCTION: uncorr_zwitt: [False, False, False, False, False, False, False]\n", - " NEW SELECT FUNCTION: coincide: [True, False, False, False, False, False, False]\n", - " NEW SELECT FUNCTION: listofmintot: [0, 1, 2, 3, 4, 5, 6]\n", - " NEW SELECT FUNCTION: listofminabs: [0, 1, 2, 3, 4, 5, 6]\n", - " NEW SELECT FUNCTION: tmplist: [0], including:\n", - " NEW SELECT FUNCTION: Corr_charge=0\n", - " NEW SELECT FUNCTION: Smiles=[H]O[H]\n", - " NEW SELECT FUNCTION: found corr_charges=[0]\n", - " NEW SELECT FUNCTION: doing tgt_charge=0\n", - " NEW SELECT FUNCTION: charge_state added\n", - " NEW SELECT FUNCTION: Case 1, only one entry for 0 in tmplist\n", - " POSCHARGE: doing empty PROTONATION for this specie\n", - " CREATED EMPTY PROTONATION ------------- Cell2mol Protonation ----------------\n", - " Status = True\n", - " Labels = ['K']\n", - " Type = Empty\n", - " Atoms added in positions = [0]\n", - " Atoms blocked (no atoms added) = [0]\n", - "---------------------------------------------------\n", - "\n", - " POSCHARGE will try charges [0, -1, 1, -2, 2, -3, 3]\n", - " POSCHARGE: charge 0 with smiles [K+]\n", - " POSCHARGE: charge 0 with smiles [K+]\n", - " POSCHARGE: charge 0 with smiles [K+]\n", - " POSCHARGE: charge 0 with smiles [K+]\n", - " POSCHARGE: charge 0 with smiles [K+]\n", - " POSCHARGE: charge 0 with smiles [K+]\n", - " POSCHARGE: charge 0 with smiles [K+]\n", - " NEW SELECT FUNCTION: uncorr_total: [1, 1, 1, 1, 1, 1, 1]\n", - " NEW SELECT FUNCTION: uncorr_abs_total: [1, 1, 1, 1, 1, 1, 1]\n", - " NEW SELECT FUNCTION: uncorr_abs_atcharge: [1, 1, 1, 1, 1, 1, 1]\n", - " NEW SELECT FUNCTION: uncorr_zwitt: [False, False, False, False, False, False, False]\n", - " NEW SELECT FUNCTION: coincide: [False, False, True, False, False, False, False]\n", - " NEW SELECT FUNCTION: listofmintot: [0, 1, 2, 3, 4, 5, 6]\n", - " NEW SELECT FUNCTION: listofminabs: [0, 1, 2, 3, 4, 5, 6]\n", - " NEW SELECT FUNCTION: tmplist: [2], including:\n", - " NEW SELECT FUNCTION: Corr_charge=1\n", - " NEW SELECT FUNCTION: Smiles=[K+]\n", - " NEW SELECT FUNCTION: found corr_charges=[1]\n", - " NEW SELECT FUNCTION: doing tgt_charge=1\n", - " NEW SELECT FUNCTION: charge_state added\n", - " NEW SELECT FUNCTION: Case 1, only one entry for 1 in tmplist\n", - "done\n" - ] - } - ], - "source": [ - "selected_cs = []\n", - "for idx, spec in enumerate(unique_species):\n", - " tmp = spec.get_possible_cs(debug=debug)\n", - " if tmp is None: \n", - " print(\"error\")\n", - " # cell.error_empty_poscharges = True\n", - " # return # Stopping. Empty list of possible charges received. \n", - " if spec.subtype != \"metal\":\n", - " selected_cs.append(list([cs.corr_total_charge for cs in spec.possible_cs]))\n", - " else :\n", - " selected_cs.append(spec.possible_cs) \n", - "# self.error_empty_poscharges = False\n", - "print(\"done\")" - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "id": "e058d609-060e-4147-afa3-87cd37633cf0", - "metadata": {}, - "outputs": [ - { - "ename": "NameError", - "evalue": "name 'unique_species' is not defined", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", - "Input \u001b[0;32mIn [21]\u001b[0m, in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m spec, cs \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28mzip\u001b[39m(\u001b[43munique_species\u001b[49m, selected_cs):\n\u001b[1;32m 2\u001b[0m \u001b[38;5;28mprint\u001b[39m(spec, cs)\n", - "\u001b[0;31mNameError\u001b[0m: name 'unique_species' is not defined" - ] - } - ], - "source": [ - "for spec, cs in zip(unique_species, selected_cs):\n", - " print(spec, cs)" - ] - }, - { - "cell_type": "code", - "execution_count": 42, - "id": "a9091afb-9213-4248-a42d-80d28234a865", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "BALANCE: iterlist [[-2], [2, 3], [0], [0], [1]]\n", - "BALANCE: unique_indices [0, 0, 0, 1, 2, 3, 3, 3, 2, 2, 4, 4, 4]\n", - "BALANCE: tmpdistr [(-2, 2, 0, 0, 1), (-2, 3, 0, 0, 1)]\n", - "BALANCE: alldistr added: [-2, -2, -2, 2, 0, 0, 0, 0, 0, 0, 1, 1, 1]\n", - "BALANCE: distribution=[-2, -2, -2, 2, 0, 0, 0, 0, 0, 0, 1, 1, 1]\n", - "\n", - "BALANCE: alldistr added: [-2, -2, -2, 3, 0, 0, 0, 0, 0, 0, 1, 1, 1]\n", - "BALANCE: distribution=[-2, -2, -2, 2, 0, 0, 0, 0, 0, 0, 1, 1, 1]\n", - "BALANCE: distribution=[-2, -2, -2, 3, 0, 0, 0, 0, 0, 0, 1, 1, 1]\n", - "\n" - ] - } - ], - "source": [ - "from cell2mol.charge_assignment import balance_charge\n", - "final_charge_distribution, final_charge_list = balance_charge_test(unique_indices, unique_species, debug=debug)" - ] - }, - { - "cell_type": "code", - "execution_count": 43, - "id": "2a596cc5-79ae-4498-bc39-22383500021d", - "metadata": {}, - "outputs": [], - "source": [ - "import itertools\n", - "def balance_charge_test(unique_indices: list, unique_species: list, debug: int=0) -> list:\n", - "\n", - " # Function to Select the Best Charge Distribution for the unique species.\n", - " # It accepts multiple charge options for each molecule/ligand/metal (poscharge, etc...).\n", - " # NO: It should select the best one depending on whether the final metal charge makes sense or not.\n", - " # In some cases, can accept metal oxidation state = 0, if no other makes sense\n", - "\n", - " iserror = False\n", - " iterlist = []\n", - " for idx, spec in enumerate(unique_species):\n", - " toadd = []\n", - " if spec.subtype == \"metal\":\n", - " for tch in spec.possible_cs:\n", - " toadd.append(tch)\n", - " else : \n", - " if len(spec.possible_cs) == 1:\n", - " toadd.append(spec.possible_cs[0].corr_total_charge)\n", - " elif len(spec.possible_cs) > 1:\n", - " for tch in spec.possible_cs:\n", - " toadd.append(tch.corr_total_charge) \n", - " elif len(spec.possible_cs) == 0:\n", - " iserror = True\n", - " toadd.append(\"-\")\n", - " iterlist.append(toadd)\n", - "\n", - " if debug >= 2: print(\"BALANCE: iterlist\", iterlist)\n", - " if debug >= 2: print(\"BALANCE: unique_indices\", unique_indices)\n", - "\n", - " if not iserror:\n", - " tmpdistr = list(itertools.product(*iterlist))\n", - " if debug >= 2: print(\"BALANCE: tmpdistr\", tmpdistr)\n", - "\n", - " # Expands tmpdistr to include same species, generating alldistr:\n", - " alldistr = []\n", - " final_selected_charges= []\n", - " for distr in tmpdistr:\n", - " tmp = []\n", - " for u in unique_indices:\n", - " tmp.append(distr[u])\n", - " alldistr.append(tmp)\n", - " if debug >= 2: print(\"BALANCE: alldistr added:\", tmp)\n", - "\n", - " final_charge_distribution = []\n", - " for idx, d in enumerate(alldistr):\n", - " if debug >= 2: print(f\"BALANCE: distribution={d}\")\n", - " final_charge = np.sum(d)\n", - " if final_charge == 0:\n", - " final_charge_distribution.append(d)\n", - " final_selected_charges.append(distr)\n", - " if debug >= 2: print(\"\")\n", - " elif iserror:\n", - " if debug >= 1: print(\"Error found in BALANCE: one species has no possible charges\")\n", - " final_charge_distribution = []\n", - "\n", - " return final_charge_distribution, final_selected_charges" - ] - }, - { - "cell_type": "code", - "execution_count": 44, - "id": "a8b4f574-562b-43f6-a9d8-01fbb42a50e0", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[[-2, -2, -2, 3, 0, 0, 0, 0, 0, 0, 1, 1, 1]]" - ] - }, - "execution_count": 44, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "final_charge_distribution" - ] - }, - { - "cell_type": "code", - "execution_count": 45, - "id": "fbf3db6e-a6e3-434d-86a5-691c0009c585", - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "data": { - "text/plain": [ - "[(-2, 3, 0, 0, 1)]" - ] - }, - "execution_count": 45, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "final_charge_list" - ] - }, - { - "cell_type": "code", - "execution_count": 65, - "id": "b07077a4-7e29-40ce-896a-05c4a85c61e9", - "metadata": {}, - "outputs": [], - "source": [ - "from IPython.display import display\n", - "from rdkit.Chem.Draw import IPythonConsole\n", - "IPythonConsole.drawOptions.addAtomIndices = True\n", - "IPythonConsole.molSize = 300,300\n", - "from rdkit import Chem\n", - "from cell2mol.connectivity import create_bonds_spicie" - ] - }, - { - "cell_type": "code", - "execution_count": 70, - "id": "f7f2d325-d2b5-4a47-bfbd-a18ecc98af5c", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0\n", - "CREATE_bonds_specie: specie.formula='C2-O4', specie.subtype='ligand'\n", - "\tNumber of atoms in ligand object and RDKit object are equal: 6 6\n", - "\tidx=0 O Number of bonds : 1\n", - "\tBOND CREATED 0 0 4 2.0 O C\n", - "\tBONDS [('O', 'C', 2.0, 1.219)]\n", - "\tidx=1 O Number of bonds : 1\n", - "\tBOND CREATED 1 1 4 1.0 O C\n", - "\tBONDS [('O', 'C', 1.0, 1.28)]\n", - "\tidx=2 O Number of bonds : 1\n", - "\tBOND CREATED 2 2 5 2.0 O C\n", - "\tBONDS [('O', 'C', 2.0, 1.273)]\n", - "\tidx=3 O Number of bonds : 1\n", - "\tBOND CREATED 3 3 5 1.0 O C\n", - "\tBONDS [('O', 'C', 1.0, 1.213)]\n", - "\tidx=4 C Number of bonds : 3\n", - "\tBOND CREATED 4 4 0 2.0 C O\n", - "\tBOND CREATED 4 4 1 1.0 C O\n", - "\tBOND CREATED 4 4 5 1.0 C C\n", - "\tBONDS [('C', 'O', 2.0, 1.219), ('C', 'O', 1.0, 1.28), ('C', 'C', 1.0, 1.554)]\n", - "\tidx=5 C Number of bonds : 3\n", - "\tBOND CREATED 5 5 2 2.0 C O\n", - "\tBOND CREATED 5 5 3 1.0 C O\n", - "\tBOND CREATED 5 5 4 1.0 C C\n", - "\tBONDS [('C', 'O', 2.0, 1.273), ('C', 'O', 1.0, 1.213), ('C', 'C', 1.0, 1.554)]\n", - "------------- Cell2mol Charge State ---------------\n", - " Status = True\n", - " Smiles = O=C([O-])C(=O)[O-]\n", - " Charge Tried = -2\n", - " Uncorrected Total Charge = -2\n", - " Corrected Total Charge = -2\n", - " Corrected Absolute Total Charge = 2\n", - " Corrected Is Zwitterion? = False\n", - "---------------------------------------------------\n", - "\n", - "O=C([O-])C(=O)[O-]\n" - ] - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "1\n", - "2\n", - "CREATE_bonds_specie: specie.formula='H24-C12-O6', specie.subtype='molecule'\n", - "\tNumber of atoms in molecule object and RDKit object are equal: 42 42\n", - "\tidx=0 O Number of bonds : 2\n", - "\tBOND CREATED 0 0 6 1.0 O C\n", - "\tBOND CREATED 0 0 39 1.0 O C\n", - "\tBONDS [('O', 'C', 1.0, 1.417), ('O', 'C', 1.0, 1.423)]\n", - "\tidx=1 O Number of bonds : 2\n", - "\tBOND CREATED 1 1 9 1.0 O C\n", - "\tBOND CREATED 1 1 12 1.0 O C\n", - "\tBONDS [('O', 'C', 1.0, 1.423), ('O', 'C', 1.0, 1.419)]\n", - "\tidx=2 O Number of bonds : 2\n", - "\tBOND CREATED 2 2 15 1.0 O C\n", - "\tBOND CREATED 2 2 18 1.0 O C\n", - "\tBONDS [('O', 'C', 1.0, 1.411), ('O', 'C', 1.0, 1.415)]\n", - "\tidx=3 O Number of bonds : 2\n", - "\tBOND CREATED 3 3 21 1.0 O C\n", - "\tBOND CREATED 3 3 24 1.0 O C\n", - "\tBONDS [('O', 'C', 1.0, 1.423), ('O', 'C', 1.0, 1.416)]\n", - "\tidx=4 O Number of bonds : 2\n", - "\tBOND CREATED 4 4 27 1.0 O C\n", - "\tBOND CREATED 4 4 30 1.0 O C\n", - "\tBONDS [('O', 'C', 1.0, 1.4), ('O', 'C', 1.0, 1.409)]\n", - "\tidx=5 O Number of bonds : 2\n", - "\tBOND CREATED 5 5 33 1.0 O C\n", - "\tBOND CREATED 5 5 36 1.0 O C\n", - "\tBONDS [('O', 'C', 1.0, 1.436), ('O', 'C', 1.0, 1.412)]\n", - "\tidx=6 C Number of bonds : 4\n", - "\tBOND CREATED 6 6 0 1.0 C O\n", - "\tBOND CREATED 6 6 7 1.0 C H\n", - "\tBOND CREATED 6 6 8 1.0 C H\n", - "\tBOND CREATED 6 6 9 1.0 C C\n", - "\tBONDS [('C', 'O', 1.0, 1.417), ('C', 'H', 1.0, 0.97), ('C', 'H', 1.0, 0.971), ('C', 'C', 1.0, 1.479)]\n", - "\tidx=7 H Number of bonds : 1\n", - "\tBOND CREATED 7 7 6 1.0 H C\n", - "\tBONDS [('H', 'C', 1.0, 0.97)]\n", - "\tidx=8 H Number of bonds : 1\n", - "\tBOND CREATED 8 8 6 1.0 H C\n", - "\tBONDS [('H', 'C', 1.0, 0.971)]\n", - "\tidx=9 C Number of bonds : 4\n", - "\tBOND CREATED 9 9 1 1.0 C O\n", - "\tBOND CREATED 9 9 6 1.0 C C\n", - "\tBOND CREATED 9 9 10 1.0 C H\n", - "\tBOND CREATED 9 9 11 1.0 C H\n", - "\tBONDS [('C', 'O', 1.0, 1.423), ('C', 'C', 1.0, 1.479), ('C', 'H', 1.0, 0.97), ('C', 'H', 1.0, 0.97)]\n", - "\tidx=10 H Number of bonds : 1\n", - "\tBOND CREATED 10 10 9 1.0 H C\n", - "\tBONDS [('H', 'C', 1.0, 0.97)]\n", - "\tidx=11 H Number of bonds : 1\n", - "\tBOND CREATED 11 11 9 1.0 H C\n", - "\tBONDS [('H', 'C', 1.0, 0.97)]\n", - "\tidx=12 C Number of bonds : 4\n", - "\tBOND CREATED 12 12 1 1.0 C O\n", - "\tBOND CREATED 12 12 13 1.0 C H\n", - "\tBOND CREATED 12 12 14 1.0 C H\n", - "\tBOND CREATED 12 12 15 1.0 C C\n", - "\tBONDS [('C', 'O', 1.0, 1.419), ('C', 'H', 1.0, 0.971), ('C', 'H', 1.0, 0.97), ('C', 'C', 1.0, 1.482)]\n", - "\tidx=13 H Number of bonds : 1\n", - "\tBOND CREATED 13 13 12 1.0 H C\n", - "\tBONDS [('H', 'C', 1.0, 0.971)]\n", - "\tidx=14 H Number of bonds : 1\n", - "\tBOND CREATED 14 14 12 1.0 H C\n", - "\tBONDS [('H', 'C', 1.0, 0.97)]\n", - "\tidx=15 C Number of bonds : 4\n", - "\tBOND CREATED 15 15 2 1.0 C O\n", - "\tBOND CREATED 15 15 12 1.0 C C\n", - "\tBOND CREATED 15 15 16 1.0 C H\n", - "\tBOND CREATED 15 15 17 1.0 C H\n", - "\tBONDS [('C', 'O', 1.0, 1.411), ('C', 'C', 1.0, 1.482), ('C', 'H', 1.0, 0.97), ('C', 'H', 1.0, 0.971)]\n", - "\tidx=16 H Number of bonds : 1\n", - "\tBOND CREATED 16 16 15 1.0 H C\n", - "\tBONDS [('H', 'C', 1.0, 0.97)]\n", - "\tidx=17 H Number of bonds : 1\n", - "\tBOND CREATED 17 17 15 1.0 H C\n", - "\tBONDS [('H', 'C', 1.0, 0.971)]\n", - "\tidx=18 C Number of bonds : 4\n", - "\tBOND CREATED 18 18 2 1.0 C O\n", - "\tBOND CREATED 18 18 19 1.0 C H\n", - "\tBOND CREATED 18 18 20 1.0 C H\n", - "\tBOND CREATED 18 18 21 1.0 C C\n", - "\tBONDS [('C', 'O', 1.0, 1.415), ('C', 'H', 1.0, 0.971), ('C', 'H', 1.0, 0.971), ('C', 'C', 1.0, 1.476)]\n", - "\tidx=19 H Number of bonds : 1\n", - "\tBOND CREATED 19 19 18 1.0 H C\n", - "\tBONDS [('H', 'C', 1.0, 0.971)]\n", - "\tidx=20 H Number of bonds : 1\n", - "\tBOND CREATED 20 20 18 1.0 H C\n", - "\tBONDS [('H', 'C', 1.0, 0.971)]\n", - "\tidx=21 C Number of bonds : 4\n", - "\tBOND CREATED 21 21 3 1.0 C O\n", - "\tBOND CREATED 21 21 18 1.0 C C\n", - "\tBOND CREATED 21 21 22 1.0 C H\n", - "\tBOND CREATED 21 21 23 1.0 C H\n", - "\tBONDS [('C', 'O', 1.0, 1.423), ('C', 'C', 1.0, 1.476), ('C', 'H', 1.0, 0.97), ('C', 'H', 1.0, 0.969)]\n", - "\tidx=22 H Number of bonds : 1\n", - "\tBOND CREATED 22 22 21 1.0 H C\n", - "\tBONDS [('H', 'C', 1.0, 0.97)]\n", - "\tidx=23 H Number of bonds : 1\n", - "\tBOND CREATED 23 23 21 1.0 H C\n", - "\tBONDS [('H', 'C', 1.0, 0.969)]\n", - "\tidx=24 C Number of bonds : 4\n", - "\tBOND CREATED 24 24 3 1.0 C O\n", - "\tBOND CREATED 24 24 25 1.0 C H\n", - "\tBOND CREATED 24 24 26 1.0 C H\n", - "\tBOND CREATED 24 24 27 1.0 C C\n", - "\tBONDS [('C', 'O', 1.0, 1.416), ('C', 'H', 1.0, 0.969), ('C', 'H', 1.0, 0.971), ('C', 'C', 1.0, 1.488)]\n", - "\tidx=25 H Number of bonds : 1\n", - "\tBOND CREATED 25 25 24 1.0 H C\n", - "\tBONDS [('H', 'C', 1.0, 0.969)]\n", - "\tidx=26 H Number of bonds : 1\n", - "\tBOND CREATED 26 26 24 1.0 H C\n", - "\tBONDS [('H', 'C', 1.0, 0.971)]\n", - "\tidx=27 C Number of bonds : 4\n", - "\tBOND CREATED 27 27 4 1.0 C O\n", - "\tBOND CREATED 27 27 24 1.0 C C\n", - "\tBOND CREATED 27 27 28 1.0 C H\n", - "\tBOND CREATED 27 27 29 1.0 C H\n", - "\tBONDS [('C', 'O', 1.0, 1.4), ('C', 'C', 1.0, 1.488), ('C', 'H', 1.0, 0.971), ('C', 'H', 1.0, 0.97)]\n", - "\tidx=28 H Number of bonds : 1\n", - "\tBOND CREATED 28 28 27 1.0 H C\n", - "\tBONDS [('H', 'C', 1.0, 0.971)]\n", - "\tidx=29 H Number of bonds : 1\n", - "\tBOND CREATED 29 29 27 1.0 H C\n", - "\tBONDS [('H', 'C', 1.0, 0.97)]\n", - "\tidx=30 C Number of bonds : 4\n", - "\tBOND CREATED 30 30 4 1.0 C O\n", - "\tBOND CREATED 30 30 31 1.0 C H\n", - "\tBOND CREATED 30 30 32 1.0 C H\n", - "\tBOND CREATED 30 30 33 1.0 C C\n", - "\tBONDS [('C', 'O', 1.0, 1.409), ('C', 'H', 1.0, 0.97), ('C', 'H', 1.0, 0.969), ('C', 'C', 1.0, 1.466)]\n", - "\tidx=31 H Number of bonds : 1\n", - "\tBOND CREATED 31 31 30 1.0 H C\n", - "\tBONDS [('H', 'C', 1.0, 0.97)]\n", - "\tidx=32 H Number of bonds : 1\n", - "\tBOND CREATED 32 32 30 1.0 H C\n", - "\tBONDS [('H', 'C', 1.0, 0.969)]\n", - "\tidx=33 C Number of bonds : 4\n", - "\tBOND CREATED 33 33 5 1.0 C O\n", - "\tBOND CREATED 33 33 30 1.0 C C\n", - "\tBOND CREATED 33 33 34 1.0 C H\n", - "\tBOND CREATED 33 33 35 1.0 C H\n", - "\tBONDS [('C', 'O', 1.0, 1.436), ('C', 'C', 1.0, 1.466), ('C', 'H', 1.0, 0.969), ('C', 'H', 1.0, 0.971)]\n", - "\tidx=34 H Number of bonds : 1\n", - "\tBOND CREATED 34 34 33 1.0 H C\n", - "\tBONDS [('H', 'C', 1.0, 0.969)]\n", - "\tidx=35 H Number of bonds : 1\n", - "\tBOND CREATED 35 35 33 1.0 H C\n", - "\tBONDS [('H', 'C', 1.0, 0.971)]\n", - "\tidx=36 C Number of bonds : 4\n", - "\tBOND CREATED 36 36 5 1.0 C O\n", - "\tBOND CREATED 36 36 37 1.0 C H\n", - "\tBOND CREATED 36 36 38 1.0 C H\n", - "\tBOND CREATED 36 36 39 1.0 C C\n", - "\tBONDS [('C', 'O', 1.0, 1.412), ('C', 'H', 1.0, 0.97), ('C', 'H', 1.0, 0.971), ('C', 'C', 1.0, 1.483)]\n", - "\tidx=37 H Number of bonds : 1\n", - "\tBOND CREATED 37 37 36 1.0 H C\n", - "\tBONDS [('H', 'C', 1.0, 0.97)]\n", - "\tidx=38 H Number of bonds : 1\n", - "\tBOND CREATED 38 38 36 1.0 H C\n", - "\tBONDS [('H', 'C', 1.0, 0.971)]\n", - "\tidx=39 C Number of bonds : 4\n", - "\tBOND CREATED 39 39 0 1.0 C O\n", - "\tBOND CREATED 39 39 36 1.0 C C\n", - "\tBOND CREATED 39 39 40 1.0 C H\n", - "\tBOND CREATED 39 39 41 1.0 C H\n", - "\tBONDS [('C', 'O', 1.0, 1.423), ('C', 'C', 1.0, 1.483), ('C', 'H', 1.0, 0.971), ('C', 'H', 1.0, 0.97)]\n", - "\tidx=40 H Number of bonds : 1\n", - "\tBOND CREATED 40 40 39 1.0 H C\n", - "\tBONDS [('H', 'C', 1.0, 0.971)]\n", - "\tidx=41 H Number of bonds : 1\n", - "\tBOND CREATED 41 41 39 1.0 H C\n", - "\tBONDS [('H', 'C', 1.0, 0.97)]\n", - "------------- Cell2mol Charge State ---------------\n", - " Status = True\n", - " Smiles = [H]C1([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC1([H])[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", - "\n", - "[H]C1([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC1([H])[H]\n" - ] - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "3\n", - "CREATE_bonds_specie: specie.formula='H2-O', specie.subtype='molecule'\n", - "\tNumber of atoms in molecule object and RDKit object are equal: 3 3\n", - "\tidx=0 O Number of bonds : 2\n", - "\tBOND CREATED 0 0 1 1.0 O H\n", - "\tBOND CREATED 0 0 2 1.0 O H\n", - "\tBONDS [('O', 'H', 1.0, 0.867), ('O', 'H', 1.0, 0.859)]\n", - "\tidx=1 H Number of bonds : 1\n", - "\tBOND CREATED 1 1 0 1.0 H O\n", - "\tBONDS [('H', 'O', 1.0, 0.867)]\n", - "\tidx=2 H Number of bonds : 1\n", - "\tBOND CREATED 2 2 0 1.0 H O\n", - "\tBONDS [('H', 'O', 1.0, 0.859)]\n", - "------------- Cell2mol Charge State ---------------\n", - " Status = True\n", - " Smiles = [H]O[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", - "\n", - "[H]O[H]\n" - ] - }, - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAASwAAAEsCAIAAAD2HxkiAAAABmJLR0QA/wD/AP+gvaeTAAASIUlEQVR4nO3de0xUd9rA8We42KFCFQS0eIm2XsBr1ShaV63oJq2lZJNKjG4xrZvQ1t0O1nZX1+272KoJxjQ7mphGu20kZJMWN22Vrdpir1vEUrWlakSrIl7qBQQviIMM/PaP4XVQW50ZBp+Z4fsJf5w5zJl5jHznemaOxRgjAPSEaQ8AdHZECCgjQkAZEQLKiBBQRoSAMiIElBEhoIwIAWVECCgjQkAZEQLKiBBQRoSAMiIElBEhoIwIAWVECCgjQkAZEQLKiBBQRoSAMiIElBEhoIwIAWVECCgjQkAZEQLKiBBQRoSAMiIElBEhoIwIAWVECCgjQkAZEQLKiBBQRoSAMiIElBEhoIwIAWVECCgjQkAZEQLKiBBQRoSAMiIElBEhoIwIAWVECCgjQkAZEQLKiBBQRoSAMiIElBEhoIwIAWVECCgjQkAZEQLKiBBQRoSAMiIElBEhoIwIAWVECCgjQkAZEQLKiBBQRoSAMiIElBEhoIwIAWVECCgjQkAZEQLKiBBQRoSAMiIElBEhoIwIAWVECCgjQkAZEQLKfIzQ6XQ2Njb6dxSgc/IuwoaGhuXLlw8aNMhqtVqt1gEDBqxYsaKpqamDhgOCQlVV1SuvvBIbGzt06FAfNrcYYzw86+XLl9PS0vbs2ZOSkvLYY485HI7NmzfX1tbOmjVr06ZNPlw3EOx27969evXqDz74wOl0iojVar127ZrXl2I8tnLlShFZtGhRS0uLa82JEye6d+8uIiUlJZ5fDhAycnJyUlJSlixZsmvXrvj4eKvV6sOFeBGh0+ksKipyOp1tVy5YsEBEVq5c6cN1A8GuqanpxnJiYqJvEUZ4fp8ZHh6enp5+y8qkpCQRuXLlitd3wUDwi4jwoqBf0963KI4cOSIiAwYMaP8oQOfkxQszt7ty5Urfvn0bGhoqKyt79+7tx7GAoNOzZ8/Lly/78MJMu+4JX3311UuXLmVnZ1Mg4DPfI1y3bt2GDRseeeSRvLw8Pw4EdDY+Rrh27dqXXnpp6NChn376aXR0tH9nAjoVryN0OBzz58/PyckZNWpUcXFxQkJCR4wFdB7evcB68uTJWbNmlZWVzZ49+5133unatavPV9zY2Hj27FnXckxMTFxcnIcbnjp1qrm5WUTCw8P79Onj8wAIJfX19RcuXHAtx8XFxcTEeLJVS0vLyZMnXctWq7Vnz54dNd8deRHhJ598Mnfu3Nra2kmTJj399NNbt2698au4uLjp06d7dcWlpaXTpk1zLb/wwgtvvfWWhxuOHDmyrq5ORBITE8+dO+fVlSJUFRQUuPYbEZE1a9bYbDZPtqquru7fv79reerUqV9++aW312uMefvtt13L165da25u3rBhg4gkJSXd/qb6r/EiwlWrVtXW1opISUlJSUlJ21+NGzeurKzM84sCQkNLS8vzzz/fdo3r5LRp0zokwtWrV7vugm73wAMPeH45QMgICwvbvXv37es9fDzs4kWEY8eO9fzMQGdgsVja3wWfrAeUESGgjAgBZUQIKCNCQBkRAsqIEFDmhw/nt5/D4aiurvbwzO35FDI6g6tXr3r453Rjd1NdARHhxo0bN27cqD0FQsTSpUuXLl2qPYUXeDgKKCNCQFlAPBx95plnXN8s7ImRI0deunSpQ+dBUFu2bNlzzz3nyTlramoCYY/ogIgwOjq6X79+Hp45LIx7b9xJbGysh39O9913X0cP4wn+oAFlRAgoI0JAGRECykInQs/3uUEIMMbU1NRoT+EfIRLhjh07+vfvv2TJkvr6eu1Z0OH27NkzefLkp556KjT2YQydCBsaGlatWjV8+PDCwkLtcdBRzpw58+yzz44fP76kpKSqqur48ePaE/lBiESYl5e3a9eu1NTUqqqq2bNnp6am7tq1S3so+FNTU9OaNWuSk5Pz8/PDw8NtNltFRUVoHJMvRCIUkdTU1J07d+bn5/fs2bOsrGzSpEnz5s3j24FDQ1FRUUpKysKFCy9fvpyenn7w4ME1a9aEzBdthk6EIhIWFjZv3rwjR47k5uZGRkYWFBQMHDhw2bJljY2N2qPBRxUVFTNnzszIyDh69GhycvLWrVuLiooefvhh7bn8KaQidImOjl62bNm+ffsyMzPr6+tff/31ESNGbNq0SXsueKe2tjYnJ2fEiBHbtm2LjY212+379u174okntOfyv3Ydqbc96uvrDx065FpOSEjwfN/R8vJyp9MpIpGRkSNHjrzzmT/77LOFCxfu379fRKZPn26324cPH96OqXEvOJ3Od99997XXXquuro6IiJg/f/6KFSvufPyvmpqaqqoq13K/fv08PFiY0+ks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\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "4\n", - "CREATE_bonds_specie: specie.formula='K', specie.subtype='molecule'\n", - "\tNumber of atoms in molecule object and RDKit object are equal: 1 1\n", - "\tidx=0 K Number of bonds : 0\n", - "\tNO BONDS CREATED for K due to no bonds in molecule RDKit object\n", - "------------- Cell2mol Charge State ---------------\n", - " Status = True\n", - " Smiles = [K+]\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", - "\n", - "[K+]\n" - ] - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "for specie, final_charge in zip(unique_species, final_charge_list[0]):\n", - " print(specie.unique_index)\n", - " if (specie.subtype == \"molecule\" and specie.iscomplex == False) or (specie.subtype == \"ligand\"):\n", - " charge_list = [cs.corr_total_charge for cs in specie.possible_cs]\n", - " idx = charge_list.index(final_charge)\n", - " cs = specie.possible_cs[idx]\n", - " specie.set_charges(cs.corr_total_charge, cs.corr_atom_charges, cs.smiles, cs.rdkit_obj)\n", - "\n", - " else :\n", - " charge_list = specie.possible_cs \n", - " idx = charge_list.index(final_charge)\n", - " cs = specie.possible_cs[idx]\n", - " specie.set_charge(cs) \n", - " \n", - " if (specie.subtype == \"molecule\" and specie.iscomplex == False) or (specie.subtype == \"ligand\"):\n", - " create_bonds_spicie(specie, debug=2)\n", - " print(cs)\n", - " # print(cs.rdkit_obj)\n", - " print(Chem.MolToSmiles(cs.rdkit_obj, canonical=True))\n", - " display(cs.rdkit_obj)\n", - " # print(final_charge)\n", - " # print(spec.possible_cs)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "a29686e2-ebe0-4b57-996e-4778d14213f9", - "metadata": {}, - "outputs": [], - "source": [ - "# How to match unique_specie in reference molecules to all the molecules within the unit cell?\n", - "# What is the easiest way?\n", - "for ref in newcell.refmoleclist:\n", - " " - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "cell2mol", - "language": "python", - "name": "cell2mol" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.10.6" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/cell2mol/test/Cell_reconstruction_Assign-Copy1.ipynb b/cell2mol/test/Cell_reconstruction_Assign-Copy1.ipynb deleted file mode 100644 index 1feae7ddb..000000000 --- a/cell2mol/test/Cell_reconstruction_Assign-Copy1.ipynb +++ /dev/null @@ -1,6143 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 4, - "id": "da7c39aa-eeb1-4d30-a41a-d33ab8b580ab", - "metadata": {}, - "outputs": [ - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "76b6dce5db864ee092e194ca27df3024", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "from scipy import sparse\n", - "from ase.build import molecule\n", - "from ase.neighborlist import get_connectivity_matrix\n", - "from ase.neighborlist import natural_cutoffs\n", - "from ase.neighborlist import NeighborList\n", - "import ase\n", - "import numpy as np\n", - "from ase.io import read\n", - "from ase import Atoms\n", - "import ase.visualize\n", - "from ase.visualize.plot import plot_atoms\n", - "from cell2mol.read_write import readinfo\n", - "from cell2mol.cell_operations import frac2cart_fromparam, cart2frac\n", - "import nglview\n", - "from nglview.viewer_control import ViewerControl\n", - "from ase.build import molecule\n", - "from ase.neighborlist import NeighborList\n", - "import matplotlib.pyplot as plt\n", - "from cell2mol.new_cell_reconstruction import apply_symmetry_operations_reference\n", - "import pickle" - ] - }, - { - "cell_type": "code", - "execution_count": 54, - "id": "33fcc8f6-a260-4d5d-b388-46bcb94eab08", - "metadata": {}, - "outputs": [], - "source": [ - "# name = \"SCYSCR\"\n", - "name = \"BOFFOS\"\n", - "\n", - "# name = \"MALNET\"\n", - "# name = \"DOMMEY\"\n", - "infopath = f\"{name}/{name}.info\"\n", - "input_path = f\"{name}/{name}.cif\"" - ] - }, - { - "cell_type": "code", - "execution_count": 55, - "id": "c8707364-33c5-477b-9a39-c18cb417ffd7", - "metadata": {}, - "outputs": [], - "source": [ - "labels, pos, ref_labels, ref_fracs, cellvec, cell_param = readinfo(infopath)" - ] - }, - { - "cell_type": "code", - "execution_count": 56, - "id": "a5201345", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "False" - ] - }, - "execution_count": 56, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "all([True, False])" - ] - }, - { - "cell_type": "code", - "execution_count": 57, - "id": "245d26c1-9d62-483a-a1b7-f7a2d0594ace", - "metadata": {}, - "outputs": [], - "source": [ - "atoms = read(input_path)\n", - "cell_labels = atoms.get_chemical_symbols()\n", - "cell_pos = atoms.positions\n", - "cell_fracs = atoms.get_scaled_positions()\n", - "cell_vector = atoms.cell.array\n", - "cell_param = atoms.cell.cellpar()\n", - "space_group = atoms.info['spacegroup']\n", - "sym_ops = space_group.get_op()" - ] - }, - { - "cell_type": "code", - "execution_count": 58, - "id": "68525074-b4ec-4bdd-b873-b9023ca54f89", - "metadata": {}, - "outputs": [], - "source": [ - "wrap_keywords = {\n", - " 'pbc': True, # Periodic boundary conditions\n", - " 'center': (0.5, 0.5, 0.5), # Center the positions in the unit cell\n", - " # 'pretty_translation': True, # Use pretty translation (minimizing jumps in the trajectory)\n", - " # 'eps': 1e-5 # Epsilon for numerical precision\n", - "}\n", - "\n", - "cell_pos = atoms.get_positions()\n", - "cell_pos_wrap = atoms.get_positions(wrap=True, **wrap_keywords)\n" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "id": "8a17eaa6-3421-4f08-b106-b028c6ad90c7", - "metadata": { - "scrolled": true - }, - "outputs": [], - "source": [ - "for idx, (p, p_w) in enumerate(zip(cell_pos, cell_pos_wrap)):\n", - " if np.allclose(p, p_w, atol=1e-6, rtol=1e-4):\n", - " # print(idx, cell_labels[idx], p, p_w)\n", - " # print(\"***\")\n", - " pass\n", - " else :\n", - " print(idx, cell_labels[idx], p, p_w)" - ] - }, - { - "cell_type": "code", - "execution_count": 59, - "id": "d3fd9fe5", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 59, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "plot_atoms(atoms)" - ] - }, - { - "cell_type": "code", - "execution_count": 48, - "id": "4d9ed17e-20ce-4acd-bba6-85178edd1805", - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 48, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAaQAAAGdCAYAAABdOQdQAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/av/WaAAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOydd1RUV9eHnzuFGYpgVxAQsWNBRSzYe++9t8QeYy8xGnuLMRp7iT3GEkvsvXcBsXcFKXaRzjDlfn/wwhcUkIGhqPdZy5WVmXvP2QPM3efss/dvC6IoikhISEhISGQyssw2QEJCQkJCAiSHJCEhISGRRZAckoSEhIRElkBySBISEhISWQLJIUlISEhIZAkkhyQhISEhkSWQHJKEhISERJZAckgSEhISElkCRWYb8DEGg4GgoCCyZcuGIAiZbY6EhISERBoQRZGwsDDs7OyQyZLfA2U5hxQUFISDg0NmmyEhISEhYUL8/f2xt7dP9pos55CyZcsGxBpvbW2dydZISEhISKSF0NBQHBwc4p/tyZHlHFJcmM7a2lpySBISEhJfCSk5gpGSGiQkJCQksgSSQ5KQkJCQyBJIDklCQkJCIksgOSQJCQkJiSyB5JAkJCRMQkxMTGabIPGFIzkkCQmJNHH//n0aNWqEo6Mjw4cPz2xzJL5gJIckISGRKgwGA0OHDqV06dLcu3ePfPnysWjRInbv3p3Zpkl8oWS5OiQJCYkvA5lMhiAIzJkzh+joaGxtbTl48CBr1qyhdevWkvSXhNEIoiiKmW3EfwkNDcXGxoaQkBCpMFZCIgthMBjw8fGhQoUKn7x3+vRpwsLCqFu3LmZmZiiVygTvazQa7t27R3BwMDqdDpVKhb29PYUKFZIc11eOMc90aYckISHxWU6ePMmoUaO4f/8+/v7+5M6dO/69+/fvs2jRIhYvXoylpSUQK6h56NAh9u7dy7VLl7h19y5ane6TcXNYW+NWsSK16tShb9++2NnZZdhnksh6SGdIEhISyTJp0iTq1auHWq3mxIkTCZwRgK2tLe3btydnzpzodDpWr15NWRcXmjVrxuE1ayh79y4L5HIuWFjwyNKSZ5aW3LOw4IC5OSOio7E4d445U6bg6OBAh/btuXTpUiZ9UonMxmiHdPbsWVq0aIGdnR2CILBnz54krx0wYACCILBw4cI0mCghIZGZtG3blm3btnHx4kU8PDw+eX/MmDG8evWKp0+fUqViRQb074/zkyccNjfnqbk568zNGWpmhodcThGZDCeZjBJyOU0VCiapVPyrVhNobs5CpZI7+/bh4eHBD0OHEh4engmfViIzMdohRURE4OrqypIlS5K9bs+ePVy5ckXagktIfEFERkYyd+5cQkJC4l8rX748HTt2TPKsZ8SIEfj6+lKhfHki797lsoUF/6rVNFIokKXwfMhGEBhqZsZtMzMWqVT8uXw5ZV1cuHLlikk+l8SXgdEOqUmTJsyYMYO2bdsmeU1gYCBDhw7lr7/++uRwU0JCIuuh1+tZv349RYsWZdKkSZw/fz5F9507d46aNWuyePFihgsC3ioVleTyVNshEwSGmZlx09ycfC9fUrd2bY4fP57q8SS+LEx+hmQwGOjRowdjxoyhVKlSn71eo9EQGhqa4J+EhETGcvLkSfr06UONGjW4f/8+zZo1++w9oiiyc+dO3r59yzIzM+ap1ahNlDFXRCbjhEpFTb2els2bc+7cOZOMK5G1MblDmjt3LgqFgmHDhqXo+tmzZ2NjYxP/T+oWKyGR8dSvX5+bN2+ydetWnJ2dU3TPli1bWLRoEc3kcgapVCa3yUIQ2K1SUVkUadOyJa9fvzb5HBJZC5M6JC8vLxYtWsT69etTXFswYcIEQkJC4v/5+/ub0iQJCYmPePHiBf3792fFihXxrwmCQJkyZYwaY+igQbSVy1mmVqeHmQCoBYFtSiVCeDiDBw4ki5VNSpgYkzqkc+fO8fr1axwdHVEoFCgUCvz8/Bg1ahROTk6J3qNSqeK7w0pdYiUk0o/o6GimTZtG0aJF2blzJ2ZmZqkea9CAAYgREZzW67FM58LWvDIZSxUKdu7ezY4dO9J1LonMJU1KDYIgsHv3blq3bg3Au3fvePHiRYJrGjVqRI8ePejTpw/Fixf/7JiSUoOERPqg1WqpWLEijRo14qeffiJ79uypGuf69etUqFCB1SoVTRQKCsgyppyxRXQ0TwsV4vb9+5K6wxdEuio1hIeH8/jx4/j/f/bsGT4+PuTMmRNHR0dy5cqV4HqlUkn+/PlT5IwkJCRMy7t37+K/k0qlEi8vLxSKtAm0LF++nAJKJeu0Wp6KIrPS4fwoMUYqFNR9+JAzZ85Qu3btDJlTImMxemnj6elJ+fLlKV++PAAjR46kfPnyTJ482eTGSUhIpI6bN2/SqFEjqlWrhlarjX89rc4oJCSEvzZtojewz9ycn9IQ9jOW2nI5JczMWPqZGkiJLxej/zpr165t1MGir6+vsVNISEikgbFjxzJ//nyKFCnCvHnz0uyE/svp06eJjI6mqEpF4YgInltZmWzszyEIAj2BmQcPotfrkaeh3kkiayJp2UlIfGW4uLjwxx9/cOfOHZO3gfD09CSvUom7XI6/pSXZMvgsp5JcTkRUFA8fPszQeSUyBskhSUh8weh0Ovbs2ZMgatG7d2+GDh2aLiopXteuUREYo9Hw639CgRlFhf/tiry8vDJ8bon0R3JIEhJfIHHtHcqVK0ebNm3w9vbOkHkf3L1LQVFkjkrFL5kgC5ZDEChgZsaDBw8yfG6J9EdySBISXyBr1qyhadOm5M6dm2vXruHm5pYh80ZGRhIBdI2ORptJqddWgkBkZGSmzC2RvkgN+iQkvkA6duxI/vz5ad68eYbW5AiCgAgcMzdHlYm1QFId0teJtEOSkMjihIWFMWnSpATnJjY2NrRo0SLDH8yWlpZ46/Xs+6j7a0ZK+oSJIhYWFhk2n0TGITkkCYksik6nY+XKlRQpUoT58+dz8+bNzDYJ+0KFUMpkdFco2KrVUkujwSYqCkV4ODZRUVTXaNis1RKdTg7qnSgSFBODi4tLuowvkblIITsJiSxKUFAQI0aMoEOHDsyYMSNLKOEXLFiQc6dPUzA6mjd6PbVr1GBi8+ZYW1sTFhbG0UOH6HHqFCMUCmbL5Xxn4sJZL70eIMPOzCQyFskhSUhkIf5b8Ono6MizZ8/Ily9fJlv1/zx48AA90KBjRyb+/PMnO5UxY8bw4MEDZs+axfcbNxIoivxiQmmhy3o91paWFC5c2GRjSmQdJIckIZEF8Pf3Z+LEiQBs3Lgx/vWs5Iw2bdrE5cuX6dSpE5v/+ivJ86vixYuzbv16ihUvzsSJEykgCCbZKRlEkfWiSKs2bZBlkKCrRMYi/VYlJDIRURT5+eefKVasGEeOHKF69eqZbVKi6HS6eN3Kv5JxRnEIgsCECRPo0b07Ew0GYkxwpnREr+eZVsvgIUPSPJZE1kRySBISmYggCLx69YrRo0fz+PFj+vfvn9kmJcr+/ft5+/Ytrq6uKdaQEwSB8RMm8FqrZddHWXnGIooi83U6ypcpQ+XKldM0lkTWRQrZSUhkIKIo8vDhwwTtWFavXp2JFqWMFStWYGtryxAjdycuLi7UrlGDFVeu0DkN86/T6Tip1XJgzhypBukrRtohSUhkEJ6entSpU4dy5crx8uXLzDbHKG7fvo2rqyv6/2W5GUODxo25k4aQnb/BwI8aDYWdnWnatGmqx5HI+kgOSUIiA5g7dy7u7u68ffuWXbt2ZalkhZQQHBxMdHQ0lSpVMvrebNmyEZYKRwYQKoq0jYnBKnduLl2+nKoxJL4cpJCdhEQGUL9+fVavXk3v3r1N2p8oo7C2tsbCwiJV4bKQkBCsU9G7KEQUaRYTwyOVilNHjpAnTx4gtmu1VQb2YZLIOKQdkoSEidFqtSxfvpzQ0ND419zc3Pjuu+++SGek1+vjz75SIxF0cO9eyhl5j49eT3WNhrtqNUeOH4/vUP348WOcnZ05dOiQ0XZIZH0khyQhYSJEUWT37t2UKlWKIUOGcOzYscw2ySSIosigQYN4/Pgxl40Mm12/fp1L164xKIU7pBhR5BeNBveoKOTFi3P+0qUEWXXOzs5UqlSJbt268ezZM6Nskcj6SA5JQsJEnD59mrZt2+Ls7IyPjw/t2rXLbJNMwooVK/D19cXJyYkhQ4ZQv3597OzssLGxwd7enpYtW3Lo0CEMBkOC+0RRZMb06RRQKmnxmZ1hoMHAFI0GJ42GWXo9EydP5qqX1ydKEDKZjE2bNlGuXDlCQkJM/lklMpcvL34gIZFFqV27NhcuXMDDwyOzTTEp7du35/nz54SFheHr60vVqlXp378/VlZWhISEsH//fpo2bUqhQoVYuHAhLVu2RBRFxowZw67du3GTy5kZE0MFuZw8goASiBZFnooinno9XoLAZa0WtVpN9549GTZsWLLiqTly5ODkyZMZ9wOQyDAEMSN141NAaGgoNjY2sQeh1taZbY6ERKIEBwczc+ZMSpQowXfffZfZ5qQbkZGRFCxYkLdv39KlSxdGjRqFTCbDy8uLe/fuERERgU6nIzQ0lFu3bnH//n1+/PFHnj17xt69e2nYsCEYDHhdu8a7RHY0RQoWpGLVqtSsWZOuXbtiY2NjtH1XrlyhTp06pvrIEibGmGe6tEOS+OIQRZE3b94QFBREUFAQL168IDg4GK1WiyiKKBQKzM3NyZ8/P3Z2dtjZ2WFra4tarU7z3FqtlqVLlzJt2jRiYmKYOXOmCT5R1uWvv/7i7du3tG7dmtdv3uLhUY2YGA2CIMPC2hmZwhpBkGHQRxEd7g/AokWLUChUdO/enYULF5IrVy5EUSQgIIAPHz6g/d9uyM7OjuzZs6fJvoULFzJ16lTOnz+Pu7u7CT6xRGYi7ZAksjyBgYGcO3cOLy8vPK954e3tTWhYwtW2pcoauUyBIAgYRAPRMRFo9THx78tkMooXK4l7JTfc3NyoVKkS7u7uKZbBiUOr1eLq6kr16tWZOnUqtra2JvmMWZHQ0FBy5cqFQRQx6PVky10Za9sOmGevgLmNK3KFZYLrRVGPJvwRkcFehL4+SuiL3SjkAp07d2b69Gk4Ojqa3EaNRkOtWrV48eIFd+/exdLS8vM3SWQoxjzTJYckkeUQRZEbN26wd+9e/t2zF+/rsZ1S81k74pS9HM45y2FvU4Ic5vnJYZ4fG3VelHKzT8YIjwnmQ9QrgqNe8jrcj6fvb+Ab4oPvu1to9THkypmbFi2b06JFCxo2bJhkbcvHdS/R0dEm2W1lZXx8fGjRsjUB/s/JbteavMXGYpG9vFFj6DRvePd8I8G+S5ETxsKFC+jXr5/JpX8CAgI4d+4cXbp0Mem4EqZBckgSXyQhISFs2rSJZUuXc+/+XSxV1rjmr09F+6aUta2LjTq3SebR6mN4+v46XgGH8XpxkOfv72FubkGPHt0ZNGgQ5cqVA+DJkydMmDCB27dvc+PGDZRKpUnmz8qIosicOXOYNGkyCnNntFEBFKq8g2x566V6TL02hKDbY3nnt4EGDRqxdesWcubMaUKrJbIykkOS+KJ49uwZc+fOZdPGzWg00bg7tKBe4Z6Uylfzk51PevAy7Cnnnm3nxNN1vAt/QdUqHjgWdGDnzp3kzZuXmTNn0qNHD6PDe18aBoOBYcOGsXTpUvIWG0Oewj8CMmRy1SfhudQQ+uoIgT79cHbKz4kTR00e7hRFkd9//50iRYrQsmVLk44tkXokhyTxRfD69WtmzJjBiuUrsFLloL5zX+oV7U0uC7tMsUdn0OIVcIjDj1Zx+8VZ7GwLsHLVCpo3b54p9mQkoigycuRIFi1ahL3rEnI59SPo9k9EBF+jaA3TFfhGhz3A93JTnByyc/78GXLlymWysUVRpG3btpw6dQpPT0+KFClisrElUo/kkCSyNDExMcybN4/Zs+YgGBS0KjmcJiUGojbBKtxU3Hl1nr9v/MKD19eoV7c+S5YupkSJEpltVrqxatUqBgwYgL3rH+Qu1B9RFNFGByJXWCNXmvZ7GB32gGcX6+NRpSwnThwz6ZlSSEgI7u7u1KtXj+XLl5tsXInUIzkkiSyLj48PvXr25s6dOzQtPog2pUeSTWW6VbIpEUWRawEH+OvGJN5FBjB9xnRGjhz51YXufH19KVWqDOZ5OuBQPvYhro1+yf2TFXFy30S2PKav8Ql7fYInF5uxfPlyBg4caNKxAwICyJ8//xepG/g1IjkkiSyHVqtlxowZzJo5C/vsJRhceTmFcrpmtlkpQqOLYuuN6Ry4v5RK7pXZsHF9ggZ7XzKiKFKvXgMuXXtA0Vre8bshTYQvcqUNcqU1gpA+DtjfZwhRr7dx584tnJyc0mWObyEjMqtjzDNd0rKTSHfevXtHo4aNmTljJq1dRjGr4ekvxhkBqBTm9HKbxfSGRwl4+JaKbu7s378/s80yCf/++y+nTp3ArszyBKG598838tyrT7o5IwC7UrMxyLIzfvyEdBn/zp07ODs7c+nSpXQZX8L0SA5JIl25c+cO7hUr4XXFh0n19tHJdWKGZM6lB8XzVGZ2ozO45KpFy5YtmTt3bqraMWQlFi9eGlvwmq9B/GuiQUu2PHUpWGlbus4tV1qT0+lHdu7cmS4ddIsWLYqzszPt27fn1atXJh9fwvRIDkki3Th69CiVK1XBEGrOrEanKZWvemablGbMldkYVWMzbUuPYfz48fTs0ROtVpvZZqWKhw8fcvLkcXI49k/wujb6JYG3xhAdejPdbcjp2B1Q8Oeff5p8bDMzM7Zv346joyNv3rwx+fgSpkdySBLpwt69e2nRvAUlclZjeoNj5LNyymyTTIZMkNHZ9WeGV1/H1q3b6NixExqNJrPNMpp169ahMs9F9gIJ22Roo19QsOJ6LHOkvzacwiwHNgU6sXLlmnQZ387OjosXL1K6dOl0GV/CtEgOScLkHDhwgPbt2lPBrgmjavyFufLrbDddzakdo2v8xcH9B+nUqfMXt1M6d/4i5jlrI5MnPPSPeHeBt09XZJgd2fI2wt/flxcvXqTL+HFp5ZGRkUY3GJTIWCSHJGFSzp49S7u27Shv15gfq639Ys+LUoqbfWNGVt/Egf0H6N27T5Y+UxJFkcePH7Nt2zZ+/vlnrly5grlNQn06vTYMhSovti5TM8wu8/9p5Hl5eaXrPNOmTaNBgwbcv38/XeeRSD2SQ5IwGc+ePaNN67YUzVWZ4dXWopB9/dpvEOuUfvBYzZYtfzFnzpzMNucTvL29+f6778hpY0PRokXp3Lkzq+bNQ6fVfCKYqtcGE/JiL7qYjDtzMbMoiJk6Z7o7pIkTJ+Lg4EC7du2IiYn5/A0SGY5UOSZhEsLDw2nZvBVmBmtGVt+AUq7KbJMyFI+CbfH/cI+JEydSunRpWrRokdkmcebMGcaNHs0VT0/slUqGCgLVzM1xk8nwNhhorNWiskoorxP54Tp5Cg9BZVk4w+wUBAG1VVH8/PzSdZ5s2bKxa9cuvL29MTP7unfuXyqSQ5JIM6Io0qtXb548fsbMhieyrPJCetOh7ASeh9ylS+euXPO8SsmSJTPFjoiICMaPH8+SJUuoolSyW62muUKB4j8SPdF6PQCC3DzBvfqYd8REPMMqd80MtRmZmqioqHSfpkSJEl+1BNSXjtEhu7Nnz9KiRQvs7OwQBIE9e/bEv6fVahk3bhxlypTB0tISOzs7evbsSVBQkCltlshibNy4kV27djKkygocsmfOQzgrIBNkDK26khwqO3r26IVOp8twGx4/fky50qX5c/lyFqpUnFepaK1UJnBGsbb+7///c+YVFXafiHcX0etCCbw9gYCbowi8PYHXj34n7M0pdDEf0tFyQ4ZKMomiyPz58zl37lyGzSnxeYzeIUVERODq6kqfPn1o1y5humhkZCTe3t5MmjQJV1dXgoODGT58OC1btsTT09NkRktkHQIDAxn2w4/UdO5MZUdJ8t9cacXgysv5+UgD5s+fz/jx4zNs7nv37lGnRg1yhIVxQ62mqCzp9abF//4bE+nPe//NhPr+SUTE0/+9JyOfXIkZEAO8NOgIEmN3VJZWRbFx+p6cjj1QmOUwme2iPgJzc/PPX2gi9Ho9Bw4c4LfffsPb2/ur7vz7JZEmLTtBENi9ezetW7dO8ppr165RqVIl/Pz8UtTCWNKy+3IQRZFmzZpz5aw3vzW9gpXKdA+oL53N3pM59GgZ3te9KVWqVLrP9/z5czwqVSLH+/ecNDMjTzLOCMBHr6d8ZCQyQY5CFOmokCMgUlEuZ6hS+f87KEAvijw0GPAyGNiv07NTpwOZGTaOPbB1mYbCLG3N9kSDjtsH8zBv7gxGjhyZprGM4dWrV1SoUIEuXbowf/78DJv3WyNLadmFhIQgCALZs2dP9H2NRkNoaGiCfxJfBrt37+bQoYN8775IckYf0dH1J/JaOTF40JB0TwU3GAz07tED2fv3HP2MMxJFkW1aLfUjI8kBzFbKCbQ0Z5O5mnYKBbaCkMAZAcgFgZJyOd2VSraaqwmwtGCKQiTGbz2Pjpcl5EXadP2iwx+g10Xh5uaWpnGMJV++fJw7dy5LZkZ+q6SrQ4qOjmb8+PF07do1Sc84e/ZsbGxs4v85ODikp0kSJkKn0/HT+ImUK1CXivZNMtucLIeZXE131xmcPXeGI0eOpOtcK1eu5NTZs6xVKLBNxhnFiCK9oqPpHB1NHYWC+5aWjFWpyC2TcV+vZ59eT60UnOPkk8mYqFJx30JFXUMIz660x99nCOL/wnrGEhkcm+5dvnz5z1xpepydnePbVEip4JlPujkkrVZL586dMRgMLFu2LMnrJkyYQEhISPw/f3//9DJJwoRs2LCBB4/u06XslMw2JctSoUAjXPJ7MG7seAwGQ7rM8eLFC8aMGsUApZL6yfT/iRFF2kZFsVWnY5NazQ5zc/L+x3nlFATKymRkM6JZnp1MxgG1ilUqFcG+a3l+rQeiwfhEjrCXuyhfvmKmhui9vb0pUqQId+7cyTQbJNLJIWm1Wjp27MizZ884duxYsn9oKpUKa2vrBP8ksjbR0dH8MmkKHk5tcc5VLrPNybIIgkBX16ncvHWDbdvSRzl75cqVEBPDHFXSdV+iKNIjOppjej37zM3prvy0YHl2TAxWgoC5kd1bBUHgezMz/lGrCAnajb/PYKNClJqIp3x4eYShQwcZNa+pKV68ODY2NrRt25aQkJBMteVbxuQOKc4ZPXr0iOPHj5Mr17dZk/I1s2PHDgJfBNCxzE+ZbUqWp3ieypQrUI/f5i8w+dharZZVy5bRQyYjezKOZJVWy3adjr/VaholsYvqpFRSLA2txNsolaxTq3j/fCMfAlLufN89W4O1dXY6d+6c6rlNgaWlJbt27cLCwiJdWmFIpAyjHVJ4eDg+Pj74+PgAsXIxPj4+PH/+HJ1OR/v27fH09OSvv/5Cr9fz8uVLXr58KcVnvyKWLlmGq10dCtgUy2xTvggaF+2Pl7cn165dM+m4+/fv58WbNwxKZMcTh6/BwGiNhu+VStomcd0FnY5JGg0lPpOZ9zl6KpV0VCh5cWMY2ujPP9Q1EU9477eCgQO+x8LC4rPXpzdFixbF29v7q+kG/CVi9F+gp6cn5cuXjz+AHDlyJOXLl2fy5MkEBASwd+9eAgICKFeuHLa2tvH/Ll68aHLjJTIeb29vrly9TMOi32e2KV8M5ewaktfaMdmz1NRw9uxZnM3MKJtMIsLg6GhyCgLzkwnpucrlDDMzI2cadkhxLFWZkc0QSdDN5NO3RdFAoM8A7GzzMWnSpDTPayrilMEjIiK4ceNGJlvz7WG0Q6pduzaiKH7yb/369Tg5OSX6niiK1K5dOx3Ml8hoVq5cSZ5s9rgVaJzZpnwxyGVy6jv35e8tf/PhwweTjet19SpuySRL3NXrOaTXM1ulwjoJZxMlijSJiOC2Xv9JundqyC2TMUspJzhoNzGRSWvTvX26jNA359mwYS1WVlmvPcmYMWNo0KCBlGSVwUhq3xIpxmAwsHvnHqo6tEMuk2QQjaFmoU5oYjQcOnTIJOMZDAauX7+OWzJhtuVaLXkFgfaJnBsZRJFNWi3FIyK4KYqsjokhzET1Ut2USqwEGe98E+8C+yFoL0G3xzFs2LAsu1CdOnUqarWaDh06oNenLp1dwngkhySRYq5evcqbd69xt2+W2aZ8ceSyLEDh3OXYt3efScYLDQ0lPCoK5yQcUpQoskGr5XulErNEdj4doqPpGR1NZbmcHebmvAX6RUebpIjXUhDoq5Dx4dnqT2qTPgTuwu9aV6yts/Hbb7+lea70Ik+ePOzcuZMff/wxQzX2vnUkhySRYvbu3YuNRS6K5k7/1tZfI252TThw4KBJOstGR0cDoE4izOZjMBAGtEkiq26gUskFCwt2mJvTUKFgg1pNHkHAVHuBNgoFGm0w0WEPADDoNQTdnYSfZ3dq1apBSMgHrly5YqLZ0gd3d3e6dOmS2WZ8U0gOSSLF7N97gHL5GyGXSSvG1OBWoAmhYSEmSfBR/i9jTpvEjsZLr0cJlJbJeGUwME2jQf+faxsoFHj8Z+XfRqlkqVr9iSp4ain/v7GjPngTGezJk3NVeP90IdOnT+PYsaMULlw4tobqCyBOGVxKckh/JIckkSIiIiK4c+82JfNUzWxTvlgK5iiD2sySq1evpnksKysrZDIZb5JxSKUEgfkxMRSJiGBhTAwPUqgWcV6nIzCNyhI2goCTTMnL+9N4dLYGRZzM8fb2YuLEiSgUCurVq8fdu3fTNEdGodFo2LJlC23btiU4ODizzfmqkRySRIrw8fHBYDBIygxpQC6TUyhHWZO0YlGpVLgULYp3Eo4jUBQRBYGpMTH0Vyp5bGWFSwrOQmL+p+rQMSqKmDSeJxUVDJgrQ1m9ejXXrl6mTJky8e9ZWVkRHh6epvEzCrVazT///ENwcDCLFi3KbHO+aqRUKYkU4eXlhZlChb3Nt9uAzxQ45yjPtaumEVutWLUqXs+eJfqeBnARBHZaWlLYiIJXM0Fgi7k5tSIjmRYTw4xk6pc+h4UgUM2jKv369fvkvQ8fPnxRMmHOzs6cP3+eYsWkYvD0RNohSaQIHx8fHHO4oJSbZbYpXzSFcrryzPeJSdqsVKpUiZs6HW8NBm7r9TSNjOTY/7rUKgBREIxyRnFUlcvZrlYzNBkFiJSgBZRmn/69aLVaDh8+TIUKFdI0fkbj4uISrwwupYKnD5JDkvgsoiji7X2dPBaFMtuUL558VrE/w4CAgDSP1aFDBwSZjGZRUbhGRvLQYCAuJSG7IPA6DSG31kol+dMoJfRGJiNHjk/7ZO3du5egoCAGDcpcQdXUcvnyZUqWLImvr29mm/LVITkkic/y4sUL7ty6Sw7zfJltyhdP3M8wKCgozWPlzp2bVq1b420wsMDMjLuWlvEtKMrJZFzX69NcV+RvMNAlKooQI8fRiiI3dTrKlSuX4HWNRsPcuXPx8PDA1dU1TbZlFsWKFUOr1dK+ffv49HsJ0yA5JInPYmdnh7mFmpzmtpltyhdPdvP8QKyTTw16vZ53797F//+o0aPRAdlksgQFsG5yOcHAszQ6JA1wSKejV3Q0BiPGumswoDEYEnSB1Wg0dOvWjZs3b37RLcNz5szJzp07iYqKMsnCQuL/kRySRALCwsKYNGkSgwcPjn8tKiqKsPBQsks7pDSjUphjpc6eqgfZ0aNHKV++PD169Ih/rXLlyvTq2ZMRWi0B/8m4qyiTIQCndMY3zPsvRWQyNpmbc0Sn46YRqeCn9HoUcjnlypVDr9dz4MABateuzf79+9m2bRtVq37Z5QMVKlTg1q1bODs7Z7YpXxWSQ5KIZ9WqVRQpUoT58+eTM2fO+HBPVFQUAGqFZWaa99WgVlrE/0xTgsFgoEWLFjRq1AgbGxt++eUXIDbsN336dO7dv0+kwUCf/+xi8spkNJbLWWkCVYgWCgXPLC0pl0IJHVEUWa7TUbx4cSZOnEiRIkVo3rw5Wq2WEydO0KpVqzTblBWQ/e+MLSIigocPH2ayNV8HkkOSiOf06dM0btyYhw8fMmPGjHgpft3/VtkyQVJoMAVymcIo+SCZTEaNGjXYvXs3Z8+eRaPR0KFDBwoWLMjMmTPRaDS4VarECb2ewRpN/EJisJkZ1wwGrpkgIywuwUEUxc+KsJ7S63mo1/Py1SuOHTtGrVq1uHLlCp6enlSrVi3NtmQ1Bg0aRMOGDROEUiVSh1SH9A3z5s0b8uTJE///mzZtSlRIUjCRnIxELKIoxq+uEyM8PJyTJ0/SsmXL+NfGjh3Lu3fv6NatG3///Te2tra0bNkSd3d3zM3NAShUqBArt25FD6xQqWgil1NIEJis0XDQ3Nwkv8cJMTGc0uk4a2GBKpHxDKLIFL2eUsWLc+vevW/ib2f69Om4ubnRrVs3Dh069E185vRC2iF9g/j7+9OrVy8KFSqUIP04KVXjON00nSHt4R8J0Bu08fUs/0Wn07F69WqKFClCly5dEqy49+zZg4uLC3v37qV79+6MHTuWmjVrxjsjgCpVqtClSxfW6nRUj47msSiyWK3msF7P+jSeJcXRXqHAx2BguEaT6PtLtFrOxcSwZMWKb+bBXLBgQf7++2/69u37zXzm9EJySN8Ya9eupVixYhw+fJj58+eTP3/+z94Tp5sWEfMh/Q38yhFFkbDoD4nW54wePZr+/ftTv3597t69S65cuRBFkSlTptCmTRvy5cvH2LFjqVixYpIPvsqVKzP0hx94am2Na2Qkt/V6uioUDI+Oxi+N+nQAFeVylqpUKOCTrLuHBgPjtVqGDhmSZfscpRcNGjSgY8eOmW3GF48gmqIBigkJDQ3FxsaGkJCQL0pa5EvhypUr7Nu3j7Fjxxr1882f15Zatn3oUHZCOlr39ROuCabPjoJs376dDh06JHjvyZMnBAcHU7FiRSDWeY0bN45ff/2VZs2aUb9+/RSvwGNiYjhw4ADnzp7FHFCIIvkFgXMWFuRJY8FrYgQaDNSIicHM0RGvGzewtPw2E2BEUeT333+ndevWUgbe/zDmmS7tkL5iRFFk3759hIWFxb9WuXJlZsyYYbSzt7Wz433kS1Ob+M0RHBX7M1QoFPTv35+XL///Z1q4cOF4ZwQwZ84cfv31V9q0aUODBg2MCgeZmZnRpk0bJk2eTLUGDdCbm/NYFKkWGZkgPTytXNDp8NHrqRkTgy53bo6ePPnNOiOIPf9bvnw5bdu2JTIyMrPN+eKQkhq+Ujw9PRk9ejRnzpxhzZo1iQpcGoO9vR0vbqSumNMURGnDePb+Jk/fX+dD1Gti9NHIBDkqhTl21kVwzlkeO+tiWb5X08uwpwB07doVKysrunbtmmjY9Pz580ycOJGGDRtSq1atVM+XI0cOmjZtSsOGDfH29ubfnTspGxnJCpWKjmnUqoswGGgaFUWkIFDQ0ZFzZ87g6OiYpjG/dLJly8bOnTupUqUKy5YtY/To0Zlt0heF5JC+Qq5evUrlypVxcXHh4MGDNG7cOM1jFilaBK8Le01gXcp5E/6cY4/WcSXgX16EPEFERKlQYmOdA6VSgSiKaDQagkPeA6BSWFA4VwXqFu5B1YJtMJOrM9TelHDr5RkAhg0bxk8//YSNjc0n10RGRtKrVy+cnJxM8ruD2B1ZpUqVKFmyJP/s2EGnmzfZrtcz18wsVQKsDwwGRsXEEAogivTq14+CBQuaxNYvnbJly3LhwgXKli2b2aZ8cUhnSF8hoiiya9cuWrVqlWg2V2rYvHkzPXr0YH3H51iaZTfJmElx++VZ9t9fgnfgUVRmKspXKIeTkxMODg7ky5fvk2zAqKgoAgIC8Pf35/69Bzx89AArVQ7qFu5J8xJDyGHx+cQNUyGKIq/D/bjx4gQP31zjXWQQWr0GpVyJhZkNr8P9UOSM4vadW6iSaO0wcuRIli5dyqhRo8iXz/TqGKIocv36dXbv2EFYVBSNFAoGK5XUl8uxSCYsGC6KHNXpWGYwcCImBtu8eVmxejWhoaE0aNAgXWz9GjAYDMmm+X/tGPNMlxzSF45Wq2XlypXkyJGDbt26pds89+7dw8XFhcn191Emf+pDSMkREfOB9V4/cfrJZgrY2lO9ZjUqVKiQ5IM7KV6/fs2FCxe4euUagkFB34q/UrNQ53RLyQ2OfMn1oGOcebqFJ+890YkakqtFjfWnAsWLl6Rr16706tULe3t7IFYFvGDBgjRt2pT69euni71xxMTEcP36dS6cPcvzwEDkQHGFAneggEyGGRBDrMCql1zO/ZgYDKKIR+XKDP7hB9q3b2/07+Zb49y5cwwdOpTjx48nqPn7lpAc0jeAKIr8+++/jB07lsePHzN27FjmzJmTbvPp9Xqss9nQtsQ4WpUabvLxrwcdY8XlIUTqQ2jVuiVVqlRJswOJiIhg185deHl74WbfmAGV/jDZbskgGrj98gwHHyzleuAxDKJInjwKKleyoKyrmkuXIjl1KhxnZzMmT85HtWpWREUZCAjQ4uUVybVrkVy9EsnLVzoEATw8PPj550lcuHCB+fPnM2XKFNTqjAs5BgUF4efnx/Pnzwl6/pyI8HBCw8IwV6koXrIkbpUr4+bmRtWqVXFxcUl0DD8/P6ZNm8aSJUsS1Ed9ywQEBODm5kaZMmU4cuRIkrV+XzOSQ/oGiImJwcXFhSJFijBv3rwMiVc3bNCIV3e1TKr7r0nHPfJwDX9eHUXxYsXp1KVTojU6aeHmzZvs2P4PKqyZXHcvttZFUj1WREwIp59s5tiTVQR+eEaJEiqGDctD69Y22NrGJgkYDCKtWj2jWTNrvvsuFwpF0o711Sste/eGsmjRG+7ciUalkmNr60D//v2xsLBItZ2m4NSpUxw6dAh/f3/y5s372euvX7+Oh4cHXbp04c8//5SKRP/HqVOnGDhwICdOnIjfCX9LSA7pK0Wv1ydYYb19+5bcuXNn2PxLly5l+I8jWNPuKZZmnx7Gp4ZD91ew1jNWdaB169bpFmsPDg5m+bIVxIQbmNbwKLbZChs9hnfgEVZdG0Jo9FvatrNmyJDcVK9uiU4HT55oKFEi9TsaURS5fDmSpUvfsn37BywsLGjXrlOmHoxHREQwdepUZs2axahRo1J0z/r16xk4cCA3b978otp9x8TEcPv2ba5fv05wcDAajQalUomVlRWlS5emfPnyZMuWLdXj63Q6k53nfmlIDukrIzg4mFmzZnHy5EmuXLmSaX/Yfn5+ODk5MaLGejwKtk3zeOeebeePC99Rp04dWrZsme4r6rCwMBb/sQRDlJLZjU6T3fzzq36IO9saz+knW2jU0IZVqwvg6Gj2vzqvUMaODSIy0sCTJy4olWn/DEFBWgYMCGD//hDc3CrQtm27TKvtWb58OSVKlGDPnj0pvuf58+dfRPr38+fPWbVqFQcPHuTOnTvExMQgk8lQq9UoFAr0ej0ajQadTocgCBQtWpTatWszYMCAVLdfDw8P5/3791/Ez8dUSA7pK+LPP/9k7NixaDQaxowZw/jx4zP1INm1TDmyhRdlePW1aRrndbgfow5UoXTZknTr3i3DwjvBwcEsmP87xXNUZ2ytvz877/WgY6y8OogYglm4KD99+uSMv6dnTz82bQqmXj0r5s+3o1w504XYRFHkr7+C+eGHIERRRYcOXShdurTJxk8pe/fu5cGDB6lquS6KItHR0VnuPOn48eP88ccfHDhwAJVKRalSpShYsCD29vYUKFAAMzOz+Gv1ej2vXr3C398ff39/7t69y/v373F3d2fo0KF07drVqAVi27ZtefjwIVeuXPlmCoglh/QVsXjxYm7dusXUqVOxtc38jq1z585l8s+/sKLNfbKpcqVqDFEUmXaiJYFRtxg3YWyGHt4D3Lhxg3Xr1jGs2hpqFEpaf+zE442suvID9etbs+bPAjg4mCV4/+DBUAQBGjfOlm4O9cULLf37x+6W2rVrR40aNdJlnqS4fv06GzZs4PXr10ZniY0YMYK7d+9y8ODBLHGY/+bNG4YMGcKOHTuwt7fHw8MDNzc3oxZ4er2eu3fvcvHiRe7du0eFChXYsGFDihcLd+/epVKlSrRs2ZItW7ak9qN8UUjSQV8wt2/f5r9rhB9++IFVq1ZlCWcE0LdvXxBETj7enOoxjj9ax+2XZ+jUpWOGOyMAV1dXypevwFrP0QRHvUr0mgP3lrLi8lAGDMzFocNOWFvLWbDgNQbD//9umja1pkkT63Td3dnaKtm714mRI/Owc+dOjh07lm5zJYadnR0Q+yA1lubNm3P8+HGmTJliYquM559//sHFxYVDhw7Rs2dPRo0ahYeHh9HRBrlcTpkyZRgwYAAjRozgxYsXuLm5MWvWrPi+Ycnh4uLC+vXrads27SHvrxHJIWURnj59SqdOnShTpgynTp3KbHOSJE+ePHTq1IljT/7EIBqviaYzaNlxezYV3SpSokSJdLAwZbRr1xYdGg7dX/HJe8cermW91wTGjcvLwoV2LF36lsKF7zJp0ktu3YrOcFsFQWD+fDumTMnPgQMHOHPmTIbNHbdgiIiIMPreevXqMXPmTMLCwsisQIwoivzyyy906NABOzs7xo0bR4UKFUyyiChYsCAjR46kRo0aTJo0ibZt2xId/fm/j/bt29O+ffs0z/81IjmkLMC+ffsoWbIkFy5cYP369WnSLssIBg8ZzKtQX675HzD6Xq+AQwRHvqJ2ndomt8sYrKysqFTZnRNP1qPV/39vnyvP97L62gh++CE3s2fbsmbNe378MZDWrW149Kgkrq6Zcx4iCAKTJ+djzJi87N69G09PzwyZNy7r0ZgOt/9l3LhxLFy4MFNSwOPU0qdNm0bz5s3p06dPmjLlEkOpVNKiRQu+//57jhw5QvPmzVPklCBWwWHhwoUJBHa/dSSHlAWoXr06U6dO5eHDh/Tq1StLxNuTo0qVKtStU49tt6ajNxjXHvvww1UUcnLOEvUY1apVIzT6HZefx9ZVBUe+ZOXVwbRpY8PChQUQBIG+fXNy40Zx1qxxxM4ubWKkaUUQBObOtaVbtxzs3Lmd4ODgdJ8zLgyV2sSE/zqiixcvZqgC9ty5c+PV0o1p3ZEaSpYsSf/+/Tl37hydOnXCkAJF9ffv3zN37lw6deqUaof/tSE5pAxGFEV27NjBrVu34l/LkSMH48ePz/RCSGOYM3c2/sH3Ofdsa4rveRPhz+2XZ/GoVjUdLUs5+fLlo2iRYpx8shFRFFl8qR8xYjjdu2dHJot9eKnVMsqUyTpZYoIgsHSpPTlywLZtf6d7KCwkJASAXLlSl8ASx4cPH2jSpAkDBgzIkPDdpUuXmDhxIg0aNMiwiEORIkXo1asXe/fuZfHixZ+9Pnfu3OzYsYOLFy+ydm3asla/FiSHlIFcvHgRDw8POnbsyM6dOzPbnDTh7u5Ou3bt2XF7FjH6lIUoHr+NDTNl5tnRxxQvUYxHbz2Zfao9t16cw8JCQC7P2goDNjZy/vzTnvv3H3L58uV0nSsgIAClUpnmlPPs2bOzYsUKNm/enO4P36ioKHr16oWjo6PJ1NJTSqlSpahRowbjx4/n8ePHn72+evXqnDlzhu+++y4DrMv6SA4pg3j9+jV16tRBo9Fw4sSJLJF5lBwhISEcOXKEbdu2sWfPHry9vT9Z2c6aNZMP0a/YcTNlGnpP3l0nu01Ok8fx04KDgwMaXSQ+QccpXVqNv78LLVuaRoUiPWnc2Jo+fXKyd+/udA3d+fv74+LiYpLaty5durBs2TJatGhhAsuSZvLkyfj6+tK5c+dMCX83b96cbNmy0adPnxSF7jw8POLtzGJVOBmO5JAyiLx583Lx4kU8PT2pW7duZpuTJDdu3GDAgAHY2dnRuHFjOnfuTJs2bXBzc6NcuXKsXLmS8PBwAIoVK8YvU35h792FPHr7+UP2J++vY+9QIL0/wmeJK9gE4s+ybGzknD5dBEvLrH1+919+/70A2bLB0aNH022OgIAAKlWqZLLxBg0alCJdvNTy8uVLFi1aRIMGDRJtfJgRqFQqOnTowPnz5zl8+HCK7zt58iTVqlVL0OH5W0NySOlAdHQ08+fPZ8SIEQled3Nzy7J9UURRZNKkSZQrV479+/czbtw4Hj58SEhICK9fv+bw4cMUKlSIwYMHU6pUKe7cuQPA2LFjKV++AsuvDPps6O5l+GPy58/cnjm+vr788ccfbNy4EYhtXKdQCAwclJNcub4srTEbGzlDhuTE29uTqKgok4/v7+9PYGAgzZo1M/nYfn5+DBs2LEW1OxD793nlyhV+//13pkyZwty5c9m5cycxMTEJrluzZg2CIFC9enWT22wMRYsWxdHRkaVLl6b4Hnt7e27fvk3fvn2/2Z1S1nw6fsFs27aNkiVLMn78eHQ63RfzhzV69GhmzJjBrFmz8PX1ZfLkyRQtWhRra2vy5MlDo0aN2LNnDw8fPiR79uzUqFGD+/fvo1AoWL9hHa/Cn7HR66dk54jRRWWa7JEoimzatImFCxei0WjiD7q9vb3R60UGDEjboX1m8d13udDrdVy7ds3kY1+4cAF7e3uaN29u8rF9fX1ZtmwZEydOTPa6mJgY/vzzTypWrEiVKlWYOHEiq1atYs6cObRv3x5HR0cmTZrEixcv0Ol0LF++nAoVKmR6gpAgCHh4eHDo0CGePXuWonuKFSvGhg0buHHjBm/evElnC7MmRjuks2fP0qJFC+zs7BAE4RPRRVEUmTJlCnZ2dpibm1O7du341fS3wK5duyhbtiy3b99m8eLFX4QE/99//82CBQtYvHgxEyZMQKlMOr25cOHCnDlzBjs7O5o3b45Wq6V06dIsXrKYIw/XcOzRuiTvNYiGTPt5CIJA3rx56dq1K6NHj6Z48eKIosjFi2dp0sQaJ6cvs9GcnZ2S1q1tuHjxnEkXP5GRkXh7ezNo0KB0OYepVasWc+fO5Y8//sDf3z/Raz58+EDjxo35/vvvsbW15cCBA4SFhREUFERwcDC3b9+mffv2LFq0iHLlyrFkyRKCgoKoVq2aye1NDXGOcd26pL8TH9OmTRtu3bqVrmHNrIzRDikiIgJXV1eWLFmS6Pvz5s1jwYIFLFmyhGvXrpE/f34aNGjw1cZFQ0NDE/z/pk2b+Pfff7NUJllyiKLI/Pnzady4MUOHDk3RPdmzZ+evv/7iyZMn7N27F4D+/fszePBg/rw2iruvLiR6n1KuyrB6C51Ox4MHDxK81qhRIypVqhQfNvXz88Pf/wVDh2ZcC4/0YMiQXLx8+YZHjx6ZbMyDBw8ik8no16+fycb8mJEjR3Lr1i0cHBw+eS8qKopmzZrh4+PD6dOn2b9/P02bNk3gHEuVKsWSJUt48uQJzs7O/PTTT1hZWWWJGjcAMzMznJ2duXAh8e9DUsRFEcLCwnj1KnFpq68Vo4PmTZo0oUmTJom+J4oiCxcuZOLEifFaTRs2bCBfvnxs2bKFAQMGpM3aLMTbt2+ZNm0aGzdu5M6dOxQoEHtY/1+l4C+Ba9eu4e3tzf79+426z9XVlWrVqrF06VLatWsHwMKFC7l75x4Lzndnav0jFLBJ2A8nu3m+dC/mFEWRGzdusG/fPkJCQvjll1+SzOq7d+8eOXIoadQo62T9pYZataywtTXj/v37JulB9OjRI86fP8/ChQuJiYlhz549eHp64u3tzZs3b9BoNCgUCiwtLSlVqhRubm64ublRunRpo/7+BUGgSJHYZomiKKLVauPvnzRpEtevX+f06dOfTarIkycPR44coVq1ajx58gRRFLNMZMLe3p5Lly6lyqb27dsTHh7OqVOnvrjnSmox6RnSs2fPePnyJQ0bNox/TaVSUatWLS5evGjKqTKVrVu3UrhwYTZs2MCECRPImTNnZpuUav766y/s7e1TVa8xYMAATp06RVBQEBAro/LPzh3YF7Jl2snmvAhNWIfhnKMCAc8DTWJ3Uuzfv5/169eTP39+Ro8enWyKeUCAP+7u5vFFsF8qgiBQqZI5gYGJh76MQaPRsHXrVooUKcKaNWtwdHSkTZs2LFmyBD8/PxQKBTY2NpibmxMZGcm+ffsYOHAgbm5u5M6dmx9//JH79+8bPe+gQYPo2bMnoigSERHBmjVrGDZsWIoz/KytrVm5ciVRUVGf7IwzEwcHBz58+JDic6T/MnXqVK5du5bi5ohfAyZNK4rTZMqXL2EmVb58+fDz80v0Ho1Gg0bz/1piH4fAsiJOTk706tWLSZMmGS3Jn9V48eIFJUqUSNU5QcmSJYHY33ucKnSuXLk4cfI4NWvUYsqJpkyuuz9+p1Q4ZzlOPdlITExMuq34qlSpQvHixVO0UwgIeE6rVl9HT5qKFc05ftw/TbuDiIgIFixYQHBwMO/fv6d06dL06dOHggULYmNjk+S4Go2GoKAg7ty5w/r16/njjz+oU6cOs2fPpnLlyimau169enTs2JEqVaqQLVs2QkNDjY6oVK1alTJlynDhwoX4v83MJk6l/969ezg7Oxt1b5UqVVi2bBnZs2dPB8uyJumS5/rxH25yX5LZs2czderU9DDDZJw9ezZBC+MqVapQpUqVTLbKNHzcFt0Y4hqT6fUJ9ezy5cvHmbOnqVe3Pr8cb8SoGn9RMq8HzrnKYxAN+Pv7U7iw8S3EPyYiIoLjx49Tt27d+N9Nnjx5UrRICAkJISQknIoVv+zzozjc3CyIiHjJu3fvUtXW/s6dO2zcuBGDwUC9evXw8PAgR44cKbpXpVJRqFAhChUqROPGjblx4wanT5/Gw8OD0aNHM3Xq1M+2GenQoQOjRo0iICCAe/fuUbduXQoVKmTUZxAEge+++44RI0ZkmZbhcedBqdXw+9YUHEwasosrRPtYvfb169ef7JrimDBhwv8eDrH/ksq4yQzu379Pq1atqFWrFps2bcpsc9KFXLlypfpnHndfYiHL/Pnzc/bcGVwrlmbaiRYcf7QepxxlyWPlwOVLaZO70el0nDx5kunTp3Px4sVUdTONs93N7cvRD0wON7dYvT1jf5c6nY7NmzezevVqHBwcGD9+PM2aNUuxM/oYhUKBm5sbw4cPp2nTpixYsABXV1du3Ljx2Xt//fVX5s+fz9u3b3FyckrV/E5OThgMhnSpy0oNcYu9tCbzGAwGlixZwocPH0xgVdbFpEuIQoUKkT9/fo4dO0b58uWB2DqCM2fOMHfu3ETvUalUmdqSOymuX7+Ou7s79vb2/P3333TsmHRn0S+ZFi1asHr1aq5du4a7u7tR927YsIFSpUolGYrIlSsXx08cY9iwYaxYMQzfD7eoV7g3O67PpqBTQSIjI9FqtZibm+Ps7EzBggVTFG7y8/Nj//79eHh40KhRo1RJEb1//x6lUsDBIXMVvE1F3rxKrK0VvH//PsX3aDQaFi1axKtXr+jQoQMeHh4mSwYICgrizZs35M6dm+fPn1O5cmWqVq3KhAkTqF+/PjKZDFEUCQgIICgoiOjoaGQyGebm5uj1el6/fo1Wq022BCExslrdX5wjSmsb96CgIH7++WeOHz/Orl27smyBfVox2iGFh4cnEA189uwZPj4+5MyZE0dHR4YPH86sWbMoWrQoRYsWZdasWVhYWNC1a1eTGp7elCtXjrVr19KxY+Z0Nc0omjZtiqOjI8uXLzfKIQUEBLBnzx7++OOPZB9iSqWS5cuX4+rqyg9Df0CtiHUe//zzD7lz50atVhMcHMzevXtxdHTEw8MDd3f3T8KI/w37Fi5cmEmTJqV6FQ+xCyW1Wsgy2VimQK2WpXgl7ufnx+rVq9FoNAwcOJCiRYuaxIZnz57x77//4uvrS4ECBWjTpg3Zs2cnIiKCY8eO0ahRI3Lnzk2BAgUICAjg3bt3iY7j5eVF6dKlGTBgAF26dElxx+SHDx+iUCgyvTA2jji19LSeNdvb27N582ZatGjB1q1bv7jnaUox2iF5enpSp06d+P8fOXIkAL169WL9+vWMHTuWqKgoBg8eTHBwMJUrV+bo0aNZSlDzYwwGA3/99RdmZmZ06tQJiI1H9+zZM5MtS3/kcjmDBw9m0qRJ9OjRI8HvNin0ej1Dhw7F0tKS7t27p2ieEiVKYG5hjlwuMqr/SAYMGBC/s9Lr9Rw5coQlS5awbds2fHx86N27N2q1mtevX7N//37s7e0TZG+mxRlBbIdepfLrcUYA5ubJOySNRsPt27e5cOECT58+jf/dm+I8D+D27dts2LABV1dXFi5cSLNmzRKc44iiyIULF5g7dy779++nWLFitG7dmly5cqFQKBBFkZiYGF69esXly5d5+PAh48aNY9y4cbRp04YhQ4ZQs2bNJBcRBoOBFStWULZs2SzTU8zf3x9BEChXrlyax2revDknTpzI8g0804IgZrE9bmhoKDY2NoSEhGBtbZ3u8506dYpRo0Zx/fp1Bg0axLJly9J9zqyGVqulWbNmXL58mZ07d9KgQYMkr9VoNPTu3Zvt27ezb98+mjZt+tnxr1y5Qu3atalWrRo7d+7ExiZpNe1Tp07RunVr8uTJg62tLRcvXsTGxoZWrVqZ5EsNsTVks2fNxtpa4H1w2toqZCXs7O5gZeWEm5sbCoUCvV5PVFQUgYGBBAYG8vLlSwwGQ7wWYc+ePalQoYJJ5n727Fm8kveWLVuSDcOLosjPP//MrFmz6Nq1a6Kp3aIocurUKUqXLs29e/e4ePEir169olatWqxduzbRMPGxY8do2LAhP/zwg8mcbFr5559/ePPmDffu3cPX1xcvLy/u379PZGQkOp0OlUpFnjx5qFChAuXKlcPKyirFY2eleqvkMOaZ/k07pDNnztCyZUuKFi3KokWLsozkSGYQHh5Ohw4dOHr0KM2bN2fw4ME0aNAgPlb9+vVr/vzzT1asWMGrV6/YvHkz7du3/+y4MTEx8edDJ06cSFH48/z58/GZc9WqVaNmzZpGnyUkhcFgYNnSZbz0f4uoCCc84utxSDlz3iY8XEiwS1KpVJQuXRp3d3fc3NxwcXGhRYsWFCxYkF69epls7kWLFpErVy7Onz+fojNhURTp2bMne/bsYfLkyZ8tAxBFkbt377Jr1y6ioqKYN28egwYNSvD3WalSJQIDA5kxYwYqlYrIyEiioqJQKpVYWVllyq5p/vz5iKJIZGRkfFF4tmzZUKvVyGQydDodISEh6HQ6BEGgePHitGrVioEDByab2HHkyBEWLFjA3r17s+QZ/H8x5pme+XmRmYi3tzcajYacOXN+NWncqcXKyop9+/axdu1ali1bRuPGjcmVKxd58uRBo9EQEBCAXC6nS5cujBgxgjJlyqRo3D179hAYGMjhw4eTdUYGg4Hnz5/j5ORE9erVGThwIOvXr6dWrVomS98VRZEd23fw5OlTWpYcxt57C4mMNGBh8eUfEMfEGAgPN/D7738wcOBANBoNZmZmn/zsOnXqhE6ni1fXMAX+/v48e/aM33//PcUPR0EQ+OWXX9i8eTM+Pj7JFsC+e/eOS5cu0axZMwoXLszevXsZOnQohw8fZvv27QQGBtK8eXOioqLQ6XRs27aNFy9eJMj2tbCwwN3dnWrVqmWYTlxQUBABAQHkyZOHypUr4+DggIODwycPZb1ez4sXLwgICMDX15fFixczb948mjZtyvDhw6lfv/4nY+fKlYvTp0/z448/smLFigz5PBnBN7tD0mg0rFq1CltbWzp16sTGjRvp1q1bus33JSGKIpcvX+b48eMEBwejVqtxdHSkY8eORqtS1K5dG1EUOXPmTJLXnDlzhtGjR/Py5UuePHmCmZkZd+/epVSpUiYLKxkMBnbt3MX5C+cZUnU5jtlLMe5QTS5eLErVql9+cez165FUqPCQ8+fPJ7nTf/bsGYULF47PqDMV27Zt4/nz5/j6+hq9eGjUqBEPHz5k+PDhSV5z+/Zt1qxZQ8uWLeN7id29e5f169djbW3N+/fvKVSoEL1792batGkYDAbatm1L+/btyZkzJ1FRUVy4cIE1a9bw7t07KlasSKdOnUy2606KHTt24OPjw7Rp04zanWk0Gry9vbl48SL+/v507dqVxYsXf/LdW7NmDXPnzuXatWtZunhW2iGlgLCwMG7cuEGdOnW4cOFCiivKvwUEQaBq1apUrVo1TeMEBwdz5syZZNWOBw8eHJ/ht2XLlvjQjYuLC5UqVeLmzZtpdkgRERFs376Dmzdu0Nl1Ekq5mhNPNiCTgZdX5FfhkLy8opDJZMmesy1YsACVSkXFihVNOnfcDiU1O9mWLVsybNiwZM9DSpcuTb169Thy5AiVKlXCysoKFxcXBg4cyPLlyylWrBjt27dn0qRJfP/990ydOvWTrLwWLVowZcoUNm3axA8//EBISAj9+/dPN6cUHR2Np6cntWvXNjpUqFKpqFq1KlWqVMHT05M9e/Zw/PhxVq9eTcuWLeOv++677+jatWuWySg0Bd+sQzp79izNmjWjdOmEZwhfykHhl0BcSq+jo2OS1zRq1IiaNWvSsWPHT2ornJyc8PHxSZMNt2/fZuvWbURHRaFSmrP1xnQACjo4kTdvbjw9U1dB/zFarUhAQAzR0SKCAFZWMgoUUGbY35KXVyQlShTB0vJT5yqKImvWrGH58uVUr17d5LJN0dHRqV6hZ8+eHYPBQExMTLLhvqZNm8Y7ozicnZ35/vvvWbVqFTNmzGDSpElMnTo1yZ+5Wq3m+++/p2TJktSvX5/t27enW1Tk4MGDGAyGNC3qBEHA3d2dYsWKsWPHDlq1asX8+fMTaNvFOaOwsDD0en2W3imlhC8/eJ4GPhY83L9/P9WrV0+1zIdEQuIcTFxUOCoqilWrVmEwGOKvadWqFZ07d0600M9gMKSqAFAURfz8/Fi3bh1r1qxBIZfTsFFDfv7lJw4dOsTr16/xff6MVq3a4eWVugp6nU5kz54PDBrkT6UKD8hmeRNn53u4uNynZMn7ODjcJYf1LerWesTYsUFcvRqRrkWbXl4xVKz46Tlo7O6lKf3790ev16d515sYZmZmREREpOreiIgIBEH47E5FLpfHq72IohgvV1WsWDEaNWqEIAg0adIkRQuA6tWrs3DhQq5du8bbt29TZXdyPHnyhHPnztGsWTOTOAgbGxv69etHgwYNGD16NLNmzUrwviiKNGnShG7duiX4bn2JfJMOKTg4mAsXLtChQ4cErxcsWBAfHx8GDBiQ5Sq+v0Ry586NIAjcu3ePTZs2Ubx4cYYMGYKXl9dn743Lqnr9+jUPHz5MIMCb1PUfPnzg8uXL/P777/z+++8EBwezfv163ge/58CBA0ycOJHGjRvHFylWrlyZu3cjCAyMSXbs//L2rY6ZM1/i7HiHNm18Ob02mBK3tMyVmXHE3Jzz5uacNTdnn7k5Y2IUZL+kYfPCN1Su/Aj38g9Zu/YdMTGmfWi8eaPDxyfik7Dzpk2bKFWqJNevn6Zr1+xYWqqTlPBKC3ny5OHEiROp+s6cPHmSfPnyGbXw+Pvvv9m9e3f8/9etWxcHBwd69+5NdHR0isbo1asX2bNnN7pX0efQaDT8/fffODk5UbNmTZONKwgCzZo1o3HjxkycOJGVK1cmeG/SpEkcOnSIGTNmmGzOzOCbDNkZDAZy5MjxyWqqTJkyrF69mtmzZxMSEvLFb38zG2tra5o3b868efPw9/enXbt2zJ49O0WqAFevXuXu3bvky5ePZcuWIQgC+fPnp0CBAuTIkSO+kFKj0fDq1SsCAgIIDQ2ND3N069aNUqVKYW5uzuXLl3F1df0k1t66dWsGDx7A6tXvmDIleSUAURTZvv0DQwYGEBmmp5tMySALCyokcz7QPE58VhQ5rNCz7J6W7/r5s3D+a9ZvLkiFCqaJ/a9d+w65XBFf1B3XtXnatGl0756TP/4oSK9e/tjbO6RLCLFq1aosW7aMc+fOGfUQfvny5Wfr3hKjYMGC7Nixg4IFC8arenTt2pX58+ezZMkSRo8e/dkxzM3N6devHytXrqRFixYmkeLR6/Vs2LCB0NBQ+vfvny7yPo0aNSI8PJxhw4ZRs2bNeFXzRo0aMW/ePKMVxbMa3+QOafPmzeTLly/RzpJdu3bFy8tLckYmYvDgwfj7+7NixQr++eefFEvULFu2jEKFCuHv78/169dZs2YNbdq0QRAE7t+/j6enJz4+Pvj6+mJpaYmDgwN5c+VCFEWuXr3K7Nmz6d69O+3atcPDwwPrbNkoU6IEgwcP5vr160RGRtKlSxeio7UsX/4erTbp1X1wsI72bX3p3NmPOhECvmpLVqvVyTqj/yIXBJopFBxQmeNtYYH8iZZK7g+ZPPkFen3aduJ6vciKFR/o3Lkruf73+UeMGMG0adOYPduWTZscyZFDgadnNPb2SZ/lpYWiRYuSP39+5s6da9QuaeHChRgMBqNldeLkpV6/fh3/Wv78+SlXrhxLly5NcdiqSpUqhIeHp3hXlRw6nY6NGzfy4MED+vTpk26p5YIg0LJlS3LmzEnv3r0TKO2PHj06vjHql8o36ZDKly+frPRM3KHv+/fvefPmTUaZ9VXw6tUrBg0axKlTpwBo2LAhLi4u/P7770nqln3MP//8w6ZNm/jxxx9RKpWUK1eOvn37snTpUq5evcrz588JCAhg7NixyAwGrl27huzRI7qFhrJZreauhQXvrawIs7LirZUVnhYWLFMq8Xj6lL1r1lChQgVs89ty6vQZ2nYbx+vXWv79NyRRW16+1FKr2iNO7Q9lu1rNDrU5edOw8i0nl3PVzIJJCjNmznhF925+yTrDz3H4cCi+vrFSXQATJ05k0aJFLF1qz/jx/3/m8uKFJlVtKVJC3PnNwYMHGTduXIqc0saNG5k7d26qlLkFQaBLly40a9YswevVqlXD19eXo0ePpmicOMHTtCpxh4aGsmrVKm7fvk2fPn3SvRdTnMTZtWvX+O233z55P05CKasonhvDN+eQ/Pz8WLRo0WdTX0VRpHnz5vGFhBLJExkZycyZMylSpAhbt26NL0qUyWT8+++/vHv3jlq1avH06dMkxxBFkbVr19KlSxc6d+7MDz/8kOh13t7eVCxXjrGjRlElKIgLFhbcMDNjgVpNN6WSknI5OQQBK0EglyDgJpfT38yMlWo13mZmOMkVxGj19B+xhCo1W+NcrAyLF3/qLN+901G/9mPePY7hvJk5HUyUIqwUBH5RqdiuUrNzxwd69fRL9U5pyZL3VKxYHnd3dxYuXMjs2bP57Tc7Bg/+f+ej0cSOnZ51N66urrRu3Zpff/2Vrl27Jtm19cWLF4wbN45evXpRpUoVFApFqhzCf8Nh/v7+GAwGnJyccHBwYPny5SkaI26BlFrxZFEU8fLyYs6cOQQFBTFgwIBPsnbTi0KFClG9enVmzZr1SRLWkydPGDFiBEOGDPnizsK/OYeUI0cO2rRp81lxTkEQmD17NmfPnuXnn3/OIOu+XMLDw1m4cCH9+/fnyZMndOnSJf69IkWKcPbsWSIiIihWrBjt2rXjxIkThIeHo9PpePXqFYsXL8bFxYV+/frRu3dvNmzY8EkMXhRFZs6cSSV3d+RPnuBpbs5mtRoPuTxFZyNhokgzTQxvzdQMGrsCx0KlAKhRrztnz4axY8eHBHN16ejLqycxnFCa45IOsjPtlEr+MlOzbdsHZs58ZfT9+/aFcPhwCCNHjuHmzZuMHTuGkSPzMHJkwnBR3I8mvR9OtWvXpnv37hw4cIASJUpQr149/vjjDzZt2sTy5cvp2LEjjo6OLFq0iMaNG9OpUycEIW2K6+/eveP333/n+PHjCIJA2bJlOXXqVIrCdjt27MDBwSFVafDPnz/nzz//jE/WGT9+fIq6FJuSWrVqERoaytatWxO8XrRoUVasWMG6des4cOBAhtqUVr65pIZffvkFW1vbZAU+46hVqxaLFy82unPlt0JUVFR82CNv3rzx5zmJUbJkSW7cuMHmzZtZtmzZJ3IoCoWCtm3bsmLFikQVnUVRZOiQISxbvpyfzcyYbGaG0ogHWbQo0ipawx25gu9HLMa2QJH491xca1CmQm0GDbpIrVqW5M2rZNWqdxw7Gc5hc3NKpKMGWgelkhsGA9OnvaRVKxtcXVPWNyc4WMd33wUgV8jImTMnffr0pFgxFbNmfZqcYWYmIAixuoLpTcWKFSlXrhw+Pj5cvHiRUaNGodPpkMlk5MuXjxYtWuDu7o6FhQUGgwGtVpumuqhcuXLRoEEDDh06hJOTE46OjoSFhfHkyZNkzyt9fX05cOAApUuX5sOHD2TPnv2zjjEyMpJbt25x9uxZAgMDyZEjB3369MHV1TXV9qeF3LlzU7JkSRYvXkyfPn0S2N+rVy9y5cqVIvHjrMQ3Jx10//59goOD06Ue41vhzp07sec3Mhn79u0z+v64xINnz54RFRWFjY0NVatWTbLnjSiKjB49mgULFrBKpeL7VDzABkZHs84AfYcvwrlY+U/eDwt9z+/TOtO4kZz58+0oXfIenXUKVmdALyyNKFJRE4mihBlXvYqnqC1Gz57P+WdnNLb2JQj0u4tWG82VK8WoWDHxzL1Che5TsGBl2rRpY2rzk0UUxfh24h8/8F++fMmcOXMYPHhwmnYXBoOBw4cPxy9kJk6cyJYtWxLs0j+2qUePHuzcuTO+KNfa2hp7e3vs7e2xsrJKoJYeFBREYGBg/HmyWq2me/fuuLi4ZHqjvDt37rB69Wp8fHwyzTF+DmOe6d9UyO769et069Ytxc2+/otOp+O3334jPDw8HSz7MhBFkSFDhlC2bFkePHhA7969UxUGEgSBypUr07lzZ/r06UPbtm2T/Z1s376dBQsW8EcqndEJnY6VWi1NO/6YqDMCyGadk5adxvLPPx/47rvnWOrgtwxSUVYJAmuVanxuRfPPPx8+e/2+fSFs2vSeFh1G0mvQHJRm5jg5qeLbmCdGpUpqAgOfm9DqlBFX9JrY7iOu9Xxi2a7GIJPJaNq0KVZWVlhaWpIrVy5u3ryZ6LUGg4FRo0bx119/8eeff/LixQt2797NsGHDcHR05MaNGxw4cCC+vcqlS5fIli0b3bt3Z/PmzdjZ2VGlShVKly6d6c4IYsNzMpmMy5cvJ3nNwYMH6dChQ4KMvKxK5v9EM5BSpUqxcOFC7OzsjL7Xz8+PKVOm8N13331xB4WmQhAEsmfPzoIFC7h79y7t2rVLd2mcV69eMWTgQDqYmfFDKpxRmCjSJ0ZLkaLlqFIz+d2Ba8V6uLhW59TxcAYKSqwzUELKXS6njpmcZYuTz+q8fTuKXr0CKFmmCm5Vm2JukY0OvX7m6VMN69Yl3b7czc0cf/+ALFXJ//z5c3Lnzm1SLba3b9+i1Wo/yY7V6XT8+++/1K1bl4ULF7JkyRK6du1Kzpw5ad26NdOnT+fQoUO8fPmS6OhoDAYDGo2G9+/fc/bsWRYsWEDjxo0JCgrCwcHBZPamFTMzM2xtbZMtNler1ezatYtffvklAy1LHd+UQ+rYsSNHjx5NVcy6cOHCrF27lm3bthkdpnrz5g0nTpxg9+7dHD16FF9fX6Pnzwz0ej0XL15M8NrMmTP58ccfTa6HlhRDBw9GCA9nSSozxMZoNLyWyWnfe9JnV7SCIFCoaHlE4Pt0VoJOjMEyJecvRXLzZuLpuk+faqjfwBcLKwc6950WvxgoWcaDih5NGT78Bf7+iZ8TVapkgUaj5fnzjN8lJYYoijx+/DhZncPU8PTpU0JDQ1m7di0tWrSgd+/edOzYEWdnZ1q3bk10dDQHDhxgyJAhyY6T2ELL29sbIEs5JIACBQpw7dq1JN+vW7cus2bN4p9//snysmjfjEPS6/WsW7eOPn36pHqMDh06cPLkSVq0aPHZa+PaNXfr1o0CBQpQv3592rZtS6NGjShUqBCNGzdm7969WXYbffToUcqXL0+tWrUICgrKFBvu3bvHP7t2MU+hSFXtT1yorkn7H8iZO2W74oe3LtBIoaBAJoRjWikU5FAI7NnzaU3UvXvRVK/xFJHc9B22GHOLbAneb9FhOHKFNd9/H5DoDr5GDSscHFSfLDAyC19fX4KCgnB3dzfpuJUqVcLS0hKZTIZGo+HRo0cEBwfTrFkzPD09uXz5Mk2aNEnV2A8ePEChUKRbPVdqsbW15dGjR8leM3bsWDw9PbO8Mvg345AuXLhAsWLF0txdsU6dOvGrp6RCdzExMfTs2ZPq1atz9epV5syZw6NHj3jz5g2+vr6sX7+e4OBgWrVqRa1atVJcMJpRTJs2jUaNGmFjY8P58+dTFeI0BStWrCCPQkHXVLQ1MCZUF4coigT63ccjk84GlIJARUGG10cK5OfOhVO9+hMEmR39R64gm/WnPanMLbLRpttEjhwJTTR0J5cLDB6cEx8f71QLoZqSCxcukCtXLooXL27ysVUqFb179+bo0aNcuHCBY8eOsXz5ctzc3NI0bmRkJCqVKkucHcWFFCMjI5HJZERGRiZ7lCAIQrxSemhoaJbdKX0zad8VKlTAy8vLZA/X3bt3s3r1av79998EBYc6nY4OHTpw+PBhNmzYQPfu3RP8AefOnZtevXrRq1cvzpw5Q4cOHahduzbnzp3LMnJFnTp1okyZMrRu3TrTWnFERESw/s8/GSKToUqFDWu1WoJEA2NSEKqL4/3bQCKjI3EzT1nqdXrgJsjZeCX2YREZaWDixBcsWvQG56Jl6TFwHhaWSZcrlCzjQblKDZj8yzl69cqJXJ7w59a3b05++eUVFy9eNFo/zpR8+PCB69ev06xZM5M/3MPDw3n//n385xNFEVEUTaZVl9HOSBRF3r9/j7+/P/7+/gQEPCcwMIDw8E/Dunnz5qJCBTfc3NypWLEibm5uODo6JvgOGwwG6tSpg4uLCxs3bsxyrXa+GYfUunVrXF1dE5XaSA358uXj2LFjjBs3jgULFsS/Pm3aNA4cOMDevXs/WwNQq1Ytzpw5Q7Vq1ejduzd79uwxiW3GEB4ezu+//86AAQPi9beKFy+eLitXY7hy5QqhERF0S0WIQRRFluj1lC5fJ8WhOoBXQbHtSMpm4gq4rExG0OsYDh8OYejQlzz319Gs3TCq1+uITPb5eqia9bvyx6xjHDgQSsuWCZ1X3rxKBgzIycqVRyhXrpzRGnKmQBRFduzYgYWFBVWqfNouI634+/sD4ObmhiiKdO/enSJFijB16tQ0j61Wq9MsM5RSQkJCuHTpElevXuT9+1AAbG1VuLur6dbNBnv73KjVMszMBGJiRKKjDTx/rsXL6xrr159n9uxYfb6CBe3p338Q/fr1i1dVHz16NF27dqVq1arxklNZhW/CIUVFRbF9+3ajOzcmh4eHBwsWLGD16tVERETEd4hcsGABTZo0QafTcebMGcqWLZusKkTJkiX5/fff6d27Nw8fPsywau+4M7VJkyYRHBwcvyPKDIKCgvDy8uL69eu8e/eO6OhovL29UQgCq7RaHPR63GQyKsjl2KRgRXdSr+exTsfA2u2MsiMmJvZLnJI50ou4zL4mTZ7hVNiFHydOJm/+gim+375gCQo6l2Dp0qBPHBLA7Nm27NsXzrZtWxg8+AeTrPjj+k9duHCBFy9eoNFoMDMzI2/evHh4eFCkSJH4lbinpyd37tyhX79+qNVqXr9+TWBgIJGRkeh0OuRyOSqVCltbW/Lnz290F9qAgACsra0pXLgwgiBQsmRJJk2aRKVKlT7RvjOW/PnzEx0dTURERJIF4GkhLtHjwoXz3Lp1CzMzgR49stOqlTNububky5fyRJsXL7R4eUWya1cI06dPZsqUX+jQoQODBw+hc+fO3LlzJ9NC8cnxTRTGnj59mpYtW/L06VOTHUiGhISwefNmjh8/jre3d7LZS4UKFcLd3Z169erRtWvXBF0vIbbjpr29PT179kyw20pPLly4QPXq1enWrRszZ86kYMGUP/TSSlBQEBs2bODixfN4el7j5cvYFN1cuVTY2pqhVgsIgh5NtB5tlIhfQAyR0bF/pkXMZFQ0yKgrl9NFqcQqEefRNiqay7lsGT51q1EhietXj/L3n78QZmWV6LgZwUGdjmZRUdRr3pcGzfqmaFcUhyiKhH54w+mjf3Hh5HYGDsxFtmxy1GoBOzslbm4WlCmj5vLlCOrUeULLli2pW7dumux99OgR+/bt4/nz5xQsWJBmzZphbW1NREQER48e5cGDB9ja2tKsWTNsbW359ddfyZUrF2q1msDAwHilbUEQ4otR41LT5XI5dnZ2FC5cmKpVq362l5Moivz2229UrFgxvl+SwWCgdevWVKhQgSlTpqTpsz58+JDixYszaNAgk0cQ3rx5w9atf/HkiS/FipkzdGhOevbMiY1N2hfR79/rWL/+PcuXf+Dx40jq1KnFn3+uyzAFGmOe6d+EQ3r8+DH58uUjW7Zsn7/4M9y8eZNly5axadMmoqOjcXZ2xt7eHgcHBwoUKIClpSVyuRy9Xk94eDiBgYH/i/0G8OzZMywsLOjduzeDBg3CxcUlftzRo0ezYcOGdFUX/7g9e0buyERR5PTp0yxbtpTdu3ejVsuoXt0SNzc1bm7mVKxogYND4gWUer3I/fvReHlF4eUVieflSC5fi8RKLtBLUDDof4KqAAEGA04RkbToMgoPI3dId3zOsmH5OF5aWpIvk8J227VaOkVHM2XB4WTPi+IQRRF/37tcOr2L+7evEBEemyAjU2RDqbJGoVBg0EejiXyLwaBHLpdRuowFuXPBiRPhdO/e/bNCw0nh7e3Nli1bqFSpUnzzw//uuOJ+53PmzOHYsWPx3wu5XI6LiwsODg44ODhgb2+PpaVl/O9eo9EQFBQUf25y9+7deB3EqlWrYjAYuHnzJhERsV14LS0tcXV1JVu2bCxbtoyjR48mOCOLU4pIKwaDARsbG2rVqmWyMziDwcDZs2c5eHA/BQooWL7cjoYNs6XL2Y7BIHLgQChDh77k3TuYN28+/fv3Z/PmzXTv3t0kP6PEkBzSR7Rp04bChQszf/78NNk1evRoVq9eTY4cOahcuTJVqlQxKhEhODiYixcvcuXKFcLCwvjhhx+YNWsWlpaWrFu3jr59+xITE2NyVebAwEB+/vlnSpQowbhx40w69ucQRZENGzYwd+4s7t9/RMmSlgwenJ0ePdK2+vPzi2HVqnesXv6WN8F66pjJmSo347hezzxR4Kf5B1CrjQurvHrhy29TunDC3Jy66fTl/By/aDT8rlDx84IjyT6URFHE59oxzhz9myD/+6gsHbEp0AmL7O5YZC+P0tw+4WG2Ppqo0FtEfbhO+JvjhLzcj0wmoNfpadWqFXXq1DHKzocPH7Jy5Uo6d+7MunXrkv2bNRgMjBw5kkWLFuHu7k7r1q2NCnnpdDp8fHw4d+4cfn5+8SKqZcqUAWLVrS9duoRKpcLc3JwXL14kqeB9584dXFxcUv3Ar1WrFu/fv+e7775L1f3/JW5X9PSpL8OG5WbWLDssLNJ/IRQWpmfMmCBWrnyHu7sbXl7XGTVqFPPmzUuX+SSH9B/evn3Lq1evKFmyZKrj5ceOHaNv3768efOGFi1aULVq1TSdR+l0Os6dO8ehQ4coUKAAGzZswNfXl549exIZGRkvWJpWNBoNM2fOZP78+VhaWjJv3rw01WEZy/Pnz/n++34cPXqcNm2yM2xYLmrVsjLp6k+jMbBrVwgLfn2N1/UorAQZxas2oWMv4xXaDQY9vwyrx3QZjMmgwt+PaRYVzZOi5ek3fFGS14QEv+afTXN5cOci1vkakKvQYKzzNUQQUv43qY0K4p3fOt49W4ZW84FixQrTr1+/FJVFiKLIr7/+SuHChTlx4kSKFlAGg4F27dpx+vRpJk2alOrvz6NHj9i2bRsRERHMnTuXIUOGIJPJuHfvHsuXL2fFihXUqlWLPXv2fOL07t69S5kyZVi2bBkDBgxI1fx//PEHI0eOZPLkySkSaE7uc6xdu5r8+WVs2GBPjRpWn7/JxBw/Hka/fkG8fSsSGRnNmTNnTNp2PQ5Jy+4/3L59mzZt2qSq9kIURWbPnk3Dhg2xsLBg7NixVK9ePc3JEQqFgjp16jBmzBhkMhm1atVi+/btqNVqkzkjiO1/c+LECYYPH87jx48zzBmJosjq1aspXdqFO3fOc/CgM7t2OVG7tulDESqVjC5dcnD5WjF+W2CHRiny6O4Fnj3yMXosmUxOAYeiXM2kYmWDKHJNFCnglHSDN59rx5g/pTvPnj6lUOWdOFfdh03+JkY5IwCluR35S0ykeL3b5HTswsOHD5k0aTJ37tz57L1Pnz4lKCiIyZMnp3g3L5PJ+OWXX/jw4QO3b982ytb/UrRoUcaMGYObmxvDhg2ja9euaLVaSpYsyR9//MHRo0e5fPkynTt3/qSPmYuLC4MGDeKHH37g6tWrqZq/Z8+emJmZJasd9znu3LnDqlUrqFZNxc2bRTPFGQHUr5+NmzeL4OZmhlqtNEnn3LTy1e+QTp8+TYkSJcifP79R94miyMSJE5k9ezaNGjWiUaNG6VKDYDAY2LdvH6dOnaJ06dLcunXL6DFCQkL48OEDZmZmaLXaBHIsBoMhQ2snQkJC6Ny5I4cPH6Vv31z89pst2bNnXPjr0SMNvXr5c/lyBLUadKNxm0FGff6ThzZw6t9VBFlakDODExuO6nQ0iopi0JgVFCryqXLz+ZPb2bvtd7Lbd8C+7B8ozJLv6WUMIS8P4e/dF502FJeSRalduy5FixZNdAGxceNGQkNDefDggdF/W1WrViU4OJhBgwal2eYbN26wadMmGjduzK5du+Kd48GDB2nWrBlbt26lU6dOCe6JiYlh4sSJjBs3LtUJTt999x27du3i559/Nnpxev/+fdasWUXz5tnYurUgKlXm7wkiIw20b+/HqVNRHDlyzOS7JGmH9B82b97M33//bfR9c+bMYfbs2bRq1YomTZqk20NdJpPRsmVLGjduzO3bt1m8eHGK7ouMjGTt2rVUrFiR7Nmz4+TkhJ2dHU5OTvTr148bN27Ej28MMTExeHp6snLlSvr370+Txo2pU7MmDerVo0OHDsyYMYNDhw4lmnzx5s0b6tSpyeXLpzlwwJk//3TIUGcEULSoinPnCjN3ri1njm1mx4bp6PUp7/hbqVoL9ILA+gyqN/kvS7U6CtgWwqlw2U/eu3RmF3u3/U7eIiMp6LbRpM4IwCZ/E4rUPIvKPC+Pnzxh2bJlzJ07i2PHjvHw4cMElf2BgYG0atUqVd+J1q1bx6t8pxVXV1f69evH4cOH6dmzZ7xSQdOmTalZsybLli375B4zMzN+/fXXNGXb/vjjj4SEhHDixAmj7vP19WXduj9p2NCK7dudsoQzArCwkLFrV0E8PNQ0adKINm3aZJqA9Fddh/T06VNat25N48aNjbrv9OnT/PTTTzRs2NDow97UIAgCjRo1IioqiuHDh1O5cmUqVaqU5PX//vsvffr04cOHDzRp0oRmzZpx8OBB7O3tqV69OocOHWLt2rU0bdqULVu2pCjW/ejRo9guk2vWEBwailwQKGVmRmG9nhyAHngjCPy2Zw8f/hcKadywIYOHDqVp06a8f/+eWrWq8/69H2fOFKJs2cxTO5DLBcaMyYuDg5IePY6g1Wro0m8acvnn/9ytrHNS2q0ui6+fYogopkolIjU8MhjYr9PSum6HT3YlD+9eZfeW+eQpPAzbUjPTrbpebVUUZ4/jPL1YE5dS0ZQsEcPhw4eJiIgNYebJkwNra5v4hnapIXv27PEyN6b4HCVLlqR79+6sX7+eOnXq0L9/fwAGDx5M586duX37dpJtxZ88ecKRI0eMLg4tU6YMY8eOZf78+ZQuXTpF9TzR0dFs2rSO8uVV/POPU4p6XmUkarWMPXsKUqvWU/bt28Ovv/7K2LFjM9yOrOGi04kXL14kukpKjvDwcHr37k2RIkWMdmRpQRAEWrZsib29Pb169Uoynrtp0ybatGlD7dq1efz4MQcOHKBPnz4sX76cp0+fsmXLFvz8/Ni6dSsXL16kZs2afPjwIcl5AwMDadOqFcWKFWP9H3/QLyqKSxYWhFlacsPMjF3m5mwxN2ebuTkn1Wreq9U8trRkjUrF+//VdxVycKBq1Uq8f+/H2bOZ64z+S+fOOdi504k7PqfZuXlOilsv1G3SiwCDyPQM6LAKsWdH/TQx5MyRjwqVE/7NRUWFs33DLLLlrY1d6TmfZM4Z9KaN+6usCuPgtoO7dyOpWtWSkJDS3L1bgk2bHOneXUG1aiGoVKRaDy8iIgK1Wm1Sp1quXDmqVq3KyJEj8fPzA2Iza2UyGRcuXEjyvr179zJkyBD+/fdfo+ecMmUKhQsXZsuWLSkSSN6791+iosLZssUBc/Os+djNlk3Oli0OyOUy5s2blyEdhj8ma/5kTMSjR4+YP3++Ufn148aN4+XLl3Tu3DnDdavkcjldunTh8ePHiUqdXLhwgT59+lCzZk22b9+Os7MzAO3atWPAgAHxn1OpVNKpUyfOnz+Pv78/HTp0+GQLHpeOXapECS4fOsQ6tZoAtZpf1WqqyOWYJ/HAEASBwjIZ/czMuKJScdXcnJjXL3n9+jlHjzpRrFj6d1g1hpYtbVi/3gHPiwc4dXhjiu7JX6AwdZv3ZU6MFs8MSHBYotVyTqelXZ/JmKkSOvMD/ywhIjwch3IrEAQZkR+u8/z6IO4czMPNfdm5uS87tw/kws+rLxHvr5gk1GKVy4M8zj/w08RXPH6soWRJNd2752TBggJs2FCQatXUnDp1PFVjnzx5Ml6iypS0bNkSMzMz+vXrhyiKmJmZYW1tTUjIp8rpcQwfPpw2bdowcOBAow70AwMDmTRpEi8DAwkMDGTz5s3JLnYePHjAxYuXmD/flkKFMqbpY2opUULNzJn5ef/+fbItLdKLr9ohPXjwwKiMnocPH7Js2TKaNm2aaRLztra2NGzYkF9//TVBrF0URYYNG4ZCoeDs2bNcuXLls2OVKlWKDRs2cPz48QRtB3Q6HX379KF379601Gi4o1LRW6lM0gklxw2DgVd6kW3bnLLMzuhjunfPyU8/5ePEgTW8CHiconvqNO6JrX1hOsbE8DIdm9qd1+kYG6PFo1Y7ChevkOC9gOcPuHr+X2xLzUEQlDy9UJ+Hp6ui1h5nwvgRbNy4kU2bNjF50jiyCZd4dLYWT8/XQBPxLM122ZacgkLlwPDhLz55b8CAnFy54plsU7jE8PX15eDBg1StWjXN9n2Mubk5HTp04MSJExw/fhxRFImKiko2a1UQBNavX8/Ro0eTrFv6L6IosnbtWlyKF2f177/TT6NhkZkZN65fZ+vffye6U4qOjmb79i3Urp2NAQNypekzZhQjRuShcmUr+vTpycuXLzNMvw++Yofk6emJvb09bdu2TfE9K1aswMrKCg8Pj3S07PPUrFkTpVLJ6tWr41/77bff8Pb2xtnZGW9vb6pVq5aisZo1a0bRokVZunQpEOuMunbuzOaNG9msVrNRrU51Ntlzg4GRuhj69slJkyamKWJOLyZPzkexYip2bJyaoiQHuVxB90HzCLawpq5Gw4t0cEoX9XqaamJwKFKWZu2Hfvr+qX9QWdhjlacuTy7UxErpx+7du/Hze8rUqVPp0aMH3bt3Z9KkSTx7Fhu+zW39gafnaxEddj9NtskUFuQqPIEjR0J48kST4L3mza1xdDRn3ry5Ru3I5s+fj7m5ORUqVPj8xamgZMmSFChQgKVLl+Lj44NGo4mPIiSFtbV1fIFtnDJ4Yrx584amjRrRr18/2sbE8Eyt5je1mh/MzNikVuN17Rpr16whPDw8wX0nT54kMjKctWvtkcmy1rlRUsjlAuvWFeD5cz9cXV0ZM2ZMhs391TokQRB4+PBhitMy47LWKlWqZHKlBGNRq9VUrFiRFStWxK9O3rx5g6WlJdeuXaNcuXIpHksmkzFo0CD++ecfgoOD+WHoUHbt2sUOlYpuaficoijyXUw0NnnkLPi9QKrHyShUqtgCxBcBT1IcusuZ25bvRi3lhYU1HtEarpgofCeKIpu0WupHR5O3UCl6Dp2P0izhCj0yIpTrV4+R3aEn/tfakj+3imvXLtO6detEQ9AymYymTZty9eolnJ3y4nelJbqYtPXZylGgA0qVNStXJhxHLheYMSMP27fvYMaMGSlySitWrGDp0qU0aNAg3boNC4KAh4cH+/btY968edjb29OoUaMU3avX6+ncuXP8wu2/BAYGUtPDA+/Tpzlgbs46tZrs/1nEdVUq2WtuzosHD5g3axY+Pj5A7OLv8uUL9OuXI8uH6j6mRAk1XbvaoNdrWLRoEVu3bs2Qeb9ah7R79266dOmS4sPTHTt2EBoamum7I4hVJ9dqtbx+/Zq9e/cCsaoHcd0wjaVKlSpotVo2b97MipUrWWZmRus0Ot31Oh3HtHpWrXU0iQBkRlCxogXjxuXl5MG18a0mPkfe/E4MHLcGQ4HCeERGMk6jIToN5zRBBgMtNBp6RkdT0r0BfYcvSlTi6PrVI7E1ZHILosIecejQ/hRlc+XOnZvDhw+g177mne/aVNsJsbskmwJ9WLX6A3p9ws/co0dOpk/Pz+TJk+nbty9PnjxJdIyAgACGDx/OoEGDqFmzJrVr106TTZ+jYsWKmJmZ8c8//yQ4V/0ccUKuI0aMSJAI8ebNG+rVqkWknx/nzcxomsR4TRUK7pqbUzcmhvXr17P2zz85fvw4oaERDB6ctTrMppQhQ3Lz7l0IjRs3Thd188T4KgtjRVFkyZIluLq6prjIq2/fvhw/fpxRo0alak5ToNfruXjxIocPH0ar1aJWq+NXlHv37qVmzZocPHjQ6HF9fHwoX748ubJnp0pEBPtUqjRlOYmiSElNJKWaZ2PnroxRDDYVGo0BZ+cH2Ds3pH2Pn1J8n16v4+yxLRzbu4p8CAyWy+inVKZYhPWOXs9yrZb1egMKi2y07vkTpVxrJHn95tWTePI0Agyh1K9VjD17dqXYVoDevfuwfedJitW7Z7SKw38Je3OGJxcacft2cUqV+vQ8pkWLJxw+HIVer6dRo0Y0a9YMGxsbwsPDOXr0KPv27UOpVMaXUGREQ7jVq1fz+PFjnj9/blQChVarpV69ejRp0oQJEyYgiiIN6tbl9oULnDczo0gKfteiKLJVp2OCVksAeqpVs+TMmaJp+TiZSuXKT8iRowqHDx9N9RjGPNO/yjqkw4cP4+/vz5AhQ1J8z7Vr17C3t09Hqz5PZGQkBw4cwNXVlSZNmrB37152795N4cKFcXR0TLUS+Pv3sS2tNWFhrDRByu0pvZ4HWgMrf8z4Bm9pRaWSMWhQDqbPOEKzdj9gbpEyBXi5XEGdxj0pVa4mZ45uYeqVw0yJjKSeXE4lmQw3uZySMhmWgAEIEUVuGAx46fWcF+GqTou1pQ1VarWher3OWFolXxvm7/sAhboSIUGXGDp0odGfc8iQwWzYsJ6w18exzpeysFViWGQvB4CXV1SiDslgEChc2JkKFdy4ePEix44di++samtrS5s2bahYsWKKkgZMhYODA/7+/kY3IFQqlRw/fjw+pLhy5UpOnD7NUXPzFDkjiA0bdlEqKSEIVIiK4ocfvrzvyH8ZPDgHvXsf4/Hjxzg7O7N9+3Y6deqUbguLr9IhFSpUiKdPn6Y4bTsqKop79+7Rrp1x7QpMQZwcP0C2bNmYNGlS/PbYwcGBO3fucOfOHdavX8+AAQPw9fXFycnJqDl27NiBUqFguCBQwASp7Mt0WlyKqahZM2O28abmu+9yMXXqK7wuHaR6vU6fv+E/5M3vRIeeP9Gs3VC8Lh3k0Z1LXPC9R1hkWKLX586RF9tCpejmVpdS5WqhUHw+VBoVFU7wW39yFqwPxCpMG4u7uztqtQXRYQ/T5JDkShssbZzw8gqnZ8+cn7zv6RmNq2tBKleuTOXKlRFFEa1Wi1KZeCuRjMDBwYHQ0FD8/PyM/q7EOSM/Pz9GDR9Of6WSBqlQfv9XryeHtYxWrVIvwJoV6NgxO4MHB7F7926qVq1Kly5d8Pf3T7dEh6/OIYmiyOTJkxk4cGCK77l//z56vT5DOyi+e/eOAwcOEBMTk0DK/r+x2gIFCqDRaPD19aVr166MHj2aVatWMWvWrBTPExoaysaNG9HpdAwyQRw40GBgj07HomH5Mu2Bk1by51fStm12Tp/dQbW6HVP1OSwsralRvzM16ndGFEVCgl/z9rU/Wq0GmSDDTGVOPrtCKepp9DHBb4OAWGegVJqlOsnG3MISgz51Baz/RW7uwtOn5z95PThYx+vXMQm+N4IgpFvSQkqJs+fu3btGO6Q4Ro8eTaRGg0cqd3Zeop5KlS2ynCKDsZiby6hQwQIvLy/GjBnDhAkTGD9+PPXq1UuXbEmTJzXodDp+/vlnChUqhLm5Oc7OzkybNi3FVfJpRRRFunfv/tnukv8lLCx2dWthYZHie2JiYggKCsLX15dnz57h7+9PSEjIZzOORFFk//79zJo1i8ePH1O6dOkk74mroQgPD8fS0pLevXuzYsUKnj1LeZ3JzJkziYqKoolCgZ0JdkcbtFrUKoEePT5dLX9JDBmSi9cvA1OlCv4xgiCQPWc+ipSoSMky1SheuiqFipZLlTMC0MbEplnLlTnQamMS6MilFIPBQER4KHJF2tPxZXJLEhNmiIiI/U5nZDguJcTZk1o1ibCwMA4fOICLTMbQ6GjupSK70gsDbu5fZgThY9zczPDyiq17nD59OuvXrzcq09cYTL5Dmjt3LitWrIhVAShVCk9PT/r06YONjQ0//vijqaf7hPXr13Pq1Ck2bkxZai8Qn1qdXIp4ZGQk169fx9fXl4CAAF6+fJmoI8mWLVt8F8yyZct+ci4lCAJ6vZ4GDRpQp06dZPvPxNkTJ+Hx888/c+DAARo1asTRo0eTXf3FtXOeN28egiDQJo0tM+K4IOqpWcsKa+svI7MuKapXt8TKSoHf01s4Fyuf2eYk5H87NrV1KSBW4qZz585GDXHkyBFiYjRY5HAzgUEiiW0idbrYv/+MVjT5HHH2pLag86+//iIyOpqd5uYs1mrJa+Tne2Ew8EIr4uaWNQvFjcXNzYJFi3wJCQnBxsaGHj16pNtcJndIly5dolWrVjRr1gwAJycn/v77bzw9PU09VaI0adKE/PnzGxWGiXMKH/dPgdi01fPnz+Pl5YVer6dAgQIUKlSImjVrkj9/flT/y1jT6XQEBwcTEBCAv78/Fy5c4OjRozg6OlKqVCnq1q0bH3pp1apViuyKsyduxZcnTx6OHDlCw4YNqVSpEsOHD6dfv34JdoOiKHLq1CkWLVrE3r176dGjB5s2bcLNBA5JFEW8MPC9e8p3klkVmUygfHlzAvzSVkCaHpj9ryZJqcqDdd6a/PHHUqMd0uLFS7HKWQ6LHEmL9KYUgz6cxKK9cWrViX1vMpOPvzfGsu/ff6mnUFBCLmdpKr43Xv+LBrm5/f/3RBRF/P21vH+vQ6EQyJ9fSe7cX8aJSdzn8Pb2TiA2vXv3bi5dumTSTrMm/4lUr16dFStW8PDhQ4oVK8aNGzc4f/48CxcuTPR6jUaDRvP/leChoaGpnlur1dKkSRNmz55t1H1xysXh4eHxD/ewsDB27NjBzZs3yZ49Ow0aNKBKlSrJpi06ODhQtmxs6wC9Xs+pU6c4fvw4z58/5/z583Tp0gUXF5cU2xVX9f1fZeXChQtz6dIlJkyYwPTp05kyZQr169cnb968aDQarl+/zoMHD3BxcWHz5s28f/+ebX/9RSkTrGKDRJFXX9HKr2JFNZv+upvZZnxCztx2IAhEh94lZ8GBXLrUlWPHjtGgQYMU3X/58mUOHz6Ivesyk5zz6SJuUazYpzv57NnlyGRp+86mB3H2pEb+SxRFvK5d4/uPfm6PDQYu6/V0T8F53n2DAStzAUdHJWFhejZvDmbZsmBu3/7/EKIgQOPGNgwZkpPGja2Ry7PuWVPx4ioUChn3799P4JBev37Nr7/+SunSpenZs6dJ5jL5XnvcuHF06dKFEiVKoFQqKV++PMOHD6dLly6JXj979mxsbGzi/zk4OKR6brlczsaNG+OdQkopXrw4KpUKf39/RFHE29ubOXPm8PTp03hploYNGxpVF3XmzBn2799Pzpw56dy5MwUKFGDVqlVs2bIlyTMBjUbDkydPOH36NFu2bGHv3r0olUrGjx/PTz/9xK5du/Dz8yNPnjz8+eefBAYGMnfuXARB4OLFi2zfvh13d3dOnz7N7du36datG2/evCGvQoGZCR5Mia38vmTc3Mx5+/oVkRFJC3BmBiq1BbnzOhEZch0b25bY5G9A27btU9Sl1MfHh2bNW2KVqwo5HBL/zhmDLuYdkWGBif7Ozc1lFC9ujr+/f5rnMSVx9qTmnCMoKIhX797h9tECbqNWS+/oaM6kYDcYJYpYWcg4eDAUe/v7DB0aRNGi9dm1axdXrlzhwoULrFq1mtevC9G8+TNcXR/z7Jnms+NmFnK5gLm5nKioqASvf/fdd1StWpWff/7ZZLtkk++Qtm3bxubNm9myZQulSpXCx8eH4cOHY2dnR69evT65fsKECYwcOTL+/0NDQ1PtlGbNmsX58+c5fPiwUfcplUrKli2Lv78/W7du5cqVK5QrV4727dtjZZW69sIuLi5YWlri7u6OTCajcuXKXLlyhT179vDw4UMGDhxI/vz5MRgMPHjwgAvnz3P37l0M/+vBU0oup7QoogBe7trFWWD2/86Sijg5MXDoUHr37s2IESMYMWIEy5cv54cffmDjxo0JVsUxMTEm6+njrdeTJ4cce/vMlVYyFXEP2cDnDyla0j2TrUmIY6HiPHjojSBT4Oj2F75XWlOrdh3GjhnNgAEDPjmbfPnyJWvWrGH27LnI1EVxqvwPMnnakw0iP3gDsSoXieHurubMGb80z2NK/P39KVKkSKoK6+/fjw3hlv4oVDfZzIzzej19o6N5YGmJIpnvVBSgN0DLlr60aNGcxYuXfvJM8/DwoF+/fly5coUePbpStepTzp93pkiRrCkx9LFDOnnyJKNHj+b69etYWVnx7t07oxLJksLkDmnMmDGMHz8+PuZdpkwZ/Pz8mD17dqIOSaVSJXuwbwwjRoygdevWqbq3QoUKbNiwgZiYGLp27Zpsg7yP0el0nD9/nooVK8Y7sPz58ydomy4IAlWqVKF48eKsWrWKxYsX06BBAy6eOcPr4GDKKBT8YWZGDbkcF5ks0T/4F0olngYD2wID+WnsWH7+6Sf6DxjAzFmxnT1LlSr1SYhGpVKhMZEYxztRxDaf4otN9/4YW9tYx5rVdkgAzkXL431lLjGRfphZFKRQ1YO8uDuJOfMWMmv2bBo3akzRokUQBIFnz3zZv38/gqDExr4bdqXnIFekbiH1MSFB/5Ivn5rChRNP5a5Y0YItW14SExOT6enecfj7+6daUTwuM+/jcmmFILBVreaVKCbrjABeGwy8CxHp3LkTGzduTjJZKu6ZcPHiFapXr0rTpn7cvFkEtTprJYkACRoqRkdH0717dxwdHVmxYgWtW7c2iTOCdAjZRUZGfpJ1I5fL0z3tOzIyEgcHh/gGXcZgMBi4f/8+MTEx9O3bN8XOSBRFrl+/zuzZs/n33395+PDhZ+/JkSMHffv2BVFkz549uIWFcdHCghtqNUPMzCgrlyf5B28rk9FCoWCzWk2AuTk/A2uWLaNU8eLs2bMn0dqrPHny8EqrJcYETikaUGfR5mKpQa2O/TnrtBnfiOxzuFasj5mZBe98/wRAJldToMyvlGzwDLvSv3P+Wih/bjjCmvWHOHXxNfld5lCi4TMcyi0xmTPSa0MICfyLQYOyJ6lU3aSJNTqdPl5QNLN59eoVvr6+8UlVxpLcYiuvTEaZ/zmX5Mo7PA0G7O3tWbt2fYrEnfPkycOuXf/y6FEk//zzIcF7BoNIVJQBrTZpJfKMICrKEF+GolaruXTpEpcuXcLHx8foJqjJYfIdUosWLZg5c2Z8dtn169dZsGBB7EM4HRFFkUePHqWqiHDRokWcPXuWXr16JdnuODH8/PzYsGEDLi4ufP/99wl2REnx4sULVi1bhiI6mo1qNd0Vqdtx5JHJmKhS0dlgoM/r1zwXRV68ePFJa+gKFSqgFUVuGwxUSGOmnVYUUXzhhX7/Ja5oUZeCdhQZjUptgXu1ply9uI58xScik8dGEeTKbOQu1J/chfqnuw3v/bcgGjR8/33SfXyKFFHRsKE1Fy+eMyqqkF5cuHCB3Llz0759+1TdH1eLGAYkteaPEUW6RUfTVqGgy0fPm9cGA3eAOcOGGRX5KVWqFA0a1GPOnEs8eRKDl2ckXlcjCXr9/3+b5iqBcmXNcatsgbu7Ba1b22RI+YVWKxIZqU3QW6pgwYIEBQXRqlUr6tata7K5TL7cXbx4Me3bt2fw4MGULFmS0aNjY97Tp0839VQJmDt3Ls2bNzc6bvzw4UMmTJhAzZo1jT4EdXJyYvTo0fTv3z9FzigwMJClixZhHxXFHXNzephAXqWwTMZptZqpZmZMnz6diRMnJni/XLlyyGQyvEzQOkElCMRospQWb5rQ/O+zKBVZI9T0MVVrtUGnecebxwszfG5dTDDvHs+ifXsb7OySX+QNGZILX19/nj9/nkHWJY5Go8HT05Pvv/8+1ccAJUqUAOBWMt8XJaAGvouO5vZH123R6ZDL5fTu3dvouQcNGsKdO5H8Pv0l0Uci6PVBxhqVik1qNevVaqZhRqHrMRxd9Z5evZ5jl/82gwb5c/Nm1OcHTwN37kRhMECxYsUSvB6XVGXKBn4md0jZsmVj4cKF+Pn5ERUVxZMnT5gxY0a6x5cHDx5stBK2Xq+nd+/e2NjYfHaLHxERwe7duzl16lSC11MqyPru3TtWLl1KUZ2Os2q1STTl4pAJApNVKn5TqZg9eza//fZb/HsWFhaUL1OGgyYImaqJ3bp/LURHx34WhTJrOqS8+Z2o1bAbrx7MJCr0TobOHXRrFAr5B377zfaz1zZrZk2hQmr27t2TYYosiXH06FF0Oh0DBgxI9Rh2dnbkz507PqM0MQRBYKVaTVGZjGMfOSQ/g4FCDg7kymV8d1g3t9gi5q1KNUfVFsxSqehnZkZ3pZJeSiWjzcz4y9ycBypLAiwtGa1X8u+f73F1fcDAAf6EhZmmX9fHeHlFxSdm/Zdnz56xdOlSk7am+CoOBD58+EDp0qUTtOlOCVu2bOHSpUt06tQpSYep1+s5efIk06dP5/Lly6mqSjcYDGz96y9sNBqOqlQJmnuZkpFmZoxRKhk/blyCmH6/AQPYq9MRkMaHRQFBwM8/BoPh69glPX0ae3Zkkz3rKjI3aNGPXHkKEHD9e0RDxrSSDnlxgPf+W5DLRLZv/5Ds2UVEhJ61a98jk8Hjx08T9BLKSHx9fTl16hS//PILBQsWTPU4giDgVqkSlz9zXmMhCFyysGDER8+N2HPW1NXpxRXypiQBvIBMxhSVCj+VJUtVKjb/+Y7SJe5z8mTiIr9pwcsrkhIlinzieG7dusWlS5dMOtdX4ZDCw8N5/PgxDRs2NOq+xYsXU6JECQoXLpzkNYIg4OPjQ8WKFfn5559Tpbx84cIFHj19ynozM3Kns8zKDJWKknI5vXv0iN9Kd+/eHQu1mpVp3Fq7yeWER4k8fJh1ayaMwcsrEplMwNYh6/arUSpVdOozkajQm/h590UU02cVHEdksBcB13tTo0Yt2rfvxciRQXz3nX/8IiQ0VM+ZM+EsWPCabt38KFDgPgMGBODgEHt+tG/fPt6+fZuuNn6MVqtl27ZtlCtXjrFjx6Z5vJatWnFKp8PvMws48/8sLJ//79rsgsDrN29SlYAQ117GxogFq1IQGGxmxi21JYXfGmjY4AmbNr03eu7k8PKKwc0t4e7o7t27FChQgG7dupl0rq/CIW3cuJHWrVsbldDg5eXFtWvXqFat2ifv/bdwVSaT8eOPP9K+fXuyZUtZ75z/EhYWxv69exmgVFI3FTL2xmImCKxXKLh95w6LFi0CYsOo/fr3Z5FeH//FSQ1xSRFeXsaLfWZFvLyiyG/nGC/Vk1VxLFSKbt9NIyRwJ8+9+6XbTini/VV8rzSnXLlSHDy4nzVr1rBp0ybWrQumcOF7lCjxiOzZb1H7/9g7y/ioriYOP+u7cZwACcFdE9yLS3GKu1vxAi20SPHSAiVJcYfi0Ba34pbgBA3EAyFu63vfDyl5oSQQ2U2A5vn98iG79547a3fOmTPzn8ZPmTEjgufPSzF69BSePXtGxYqVyZs3L46Ojqxfvz7DwqbpxWQysW3bNiIiIti0aVOaO8S+j169emFjZcXqNE7g/jYYKJGQwEmDgS8kEkLCwrhw4V119A+xY8cObCWSDMl8FROLOSFXMVAio1+/ALZuNY9Tio01cvt2Im5ubm89rtPp8PLyyrASfWp88g7JZDLRpEkTjh9PX0dDT09PcufO/ZaUT1hYGOvXr2fJkiXJgqbwftHVD3HlyhUwGJhvplqrtFBdIqGfVMqvv/yC8Z8Y9+zZs7HPl48hOl2G00dziUQUl4vx9rbsJmpWcf26FkenCtltRpqoVL0JvYfOISZkD76X26JN8DPb2IIgEO63lueXW+NavQLHjx1Jrqfr06cPixYtws9Ph5tbR9av38CdO3eIjY3n0qWrzJs3D0dHRzZt2sSwYcM4evQoWq2W1atXW9wpGY1GduzYwd27d9m5c2e6MmTfh42NDf0HDWKNIBCTht9KA4mEJhIJPTUaSolElJbL8XB3T9c1dTodazw96S8WY5vBkL5EJGK1QsFAmZQB/QO4eDE+Q+O8yZYtkRgMwju94o4dO8agQYMydW9MiU/eIYWHhzN69Oh0z0hOnjxJpUqVkt/Q48ePs3DhQgIDA2nbtq1ZZlomk4nL58/TSyoldxYXk46WyQgICeHQoUMA2Nvbs2bDBk7o9bhnInTnahJz/UrWzH4tiVZr4v79RIo4l81uU9JMZdemDB23HInhMY/PuBL+fE2ma1N0if74XWlL0K0x9O/Xg5Mnjr2lnQgwduxY8uTJQ/78+RkwYACVKlV66/fx8uVL4uLiaNiwIWXLluXkyZMkJCTg7u5OWFhYpuxLjcTERDZu3MjNmzfZunVrhgviU2PKlCloZDImaj8cnpaIRGxXKmkvlWInFjNSJGLPnj3p2k9bvHgxYZGRjMzkikMkErFaoaSGVMLAvgEkJmY8IiIIAu7u0XTq1InChQu/9ZyVlRXR0dGZsjUlPnmHFBwczI4dO9KVCx8ZGYm/v/9bch558+alTZs2TJ8+HTc3N7NI6j969IjI2FhGmXlZmxZcJRJqyuWsWbUq+bFWrVrx9dixjNPp2JVBp/SFRMKlq4kEBX18xaTp4Y8/YtHpTJQoa472DFlHiTLVmfTDVlzrNCPo9lge/+1G+PM1GPXp28xOjL5J4M2RPD5TFSvxY44ePcratWtT7AmmVCoZPHgwGzZsSFGH8fVjr+tUqlatyoULF1Aqlfz000+cOXPGrNl39+/fZ/Hixfj7+7N///50K6GnBScnJ5YuW8Z6vZ6jadBpyysWs06pJLdIxEiZjHpiMV+2bZsm/cGVK1cyc+ZMfpDLKW+GFYdUJGKDVEGAv44ZM0IzPM7Zs/E8eJDAqFGj33r8/PnzhISE0KxZs8ya+g6fvEM6d+4cCxcuTNc5r1thvJmyXb16dZo1a2bW9PTnz5+TVyJ5R6gxq2gDXLpw4a1Z9C/LltGzZ096arWs06XfqfSWybASiVi9OsKMlmY97u4RFC9diYKFime3KelGqbKma59pjJjkgbUynqDbX+NzzAV/70G88vUgIeIyJsP/HYcgCGgT/IgO3k+Iz0x8zzfg8d91kOtO8P3M6Tx4cI+WLd/f5rxjx45ER0fz9OnTd557XfsXFRWV/FiZMmW4e/cuo0aN4o8//mDlypU8efIkUyu6Fy9esHXrVtasWUOdOnXw8fGhXbt2GR7vfQiCQI8ePWjUoAH99HoepcOhBggCQyUSyicm0qhRI0aNGsW9e/feOsZkMnHkyBHatm7N2LFjmSiT8YMZ7z1lJRLmSOUsW/YKP7+MJSF5eERStmwpGjdu/NbjBQoUwMHBwez7R/CJtzDXarXky5cv1dYWKXH27FkGDx4MQExMTJoKWjNKUEAANUSibNN+c5VIiIyNxd/fP7mZn1gsZtPmzdjY2DBk9WqOmky4y+VpbkJmKxLRTyxljWcEM2YUQC7/9OY0Pj4azp6No9eQbtltSqYIDXpK+Et/GjduTGRkJA8fHSAqcAfwunGeFJFYitGgST5HLreidesWDBjwLe3atUtzaDpXrlxA0m/m3xQoUAAXFxf279//Vq8vKysrfvnlF7p06cKwYcNwd3fH0dGROnXq4Orqmqb6FZ1Oh4+PD5cuXeLx48fky5ePDRs20L9/f4v8rmJiYti8eTMeHh7JQqsSoLHRyBmVirJpWMGs0OlYq9fzt0rFDJ2ONWvW4OnpSdXKlXFydkav1/Pw/n38goKoKpezTamklwVu7qPlcuYZ9axeHcH8+YU+fMIbXLuWwN690axYMfed93nx4sV069bNIu//J+2QIiMj2b17N5UqVaJSpUofPH7nzp306NGDQoUKYWtrS5kyZSxqX3BAAF2ysZvm65WZt7f3W91lJRIJnr/9RpMvvmD0iBFUiI9njkRCX5kMmzR8yUbKZHiEJ3LgQAxffZXLUuZbDE/PcGzt7KhYrXF2m5JhvC4f4uDOn3FxceHmzZvExMRQr1495syZg4ODA/fu3SMhIQG9PknyxdHRkc2bNxMUFMSBA/vTfb3XCQopORGJRMKIESP44YcfWLp06TtFofXr1+f+/fv8/fffuLu7c+DAAfbt20f+/PkpVKgQTk5O2NjYIJVKMRqNqNVqQkJCCA4OJiQkBJPJRL169Zg9ezadO3e2WJG9u7s733zzDTqdjk6dOvHdd9+RK1cugoKCmDFtGnWjo9mgVNLhA85jsULBJaORoVotV1UqiiQmoAEq+PgQ4+ODCmgjEtHXyopaYrHFJqzWIhEDxFLW/hbBDz8UTG6o+CE0GhMDBoRQvXrVd4qMBUGgbdu2GSr8TQuftEO6desW48aNS5MzgiSdvV27duHl5cXGjRstapsgCMQkJuKchdl1/8bxH9Xwly9fvvOcSCSie/fuNGnShPFff82YXbuYajDQXyymi1RKdYkEuxR+KEZBQASUkopZsiSMrl1TF978GHn1ysD69ZFI5bnRaRORSu2z26R0c+XcfvZtS+rSGRYWRv/+/Rk5cuRbv4Pq1au/c97du3f566+/iI6Ofidx4UP8/fffyOXytyY2bzJo0CC+//57fvzxR3755Zd3nheJRDRp0oQmTZoQEhLC6dOnuXDhAps2beL+/ftvyc/IZDLKly9Pq1atcHNzo0GDBulqbJkRZs2axezZsxk5ciQzZsygUKG3VxRdu3alb+/edDx2jJ4GA78qleRJxZGoRCL2qlTECwIqsRgZIvrKpCzLYAfbzDBUJmNFVCJnzsTTqlXaZNVmzXqBr6+OGze2vLOC3rdvH/v27WPz5s2WMPfT3kN6+fIl58+fT/E5tVrNwoUL38q+s7Kyolu3bigUCou3XX6dbm2OxniZQSEWv9WR99/kz5+f7b//znM/P76eNo1dtrY0Uauxj4+ntFZLG7WaLmo17RMTqavVYqdWUzExkadGAS8vNe7uWVsEmVlGjw5GLrdGIjKy6ufRxMZ8WvafObqFfdsW07hxYy5fvkxERAQeHh5pmpQNHDgQvV7Ppk2b0nVNk8nEb7/9RteuXcmdO3eKx+TLl4+FCxeybNkyFi9e/N69okKFCtGqVStu3LiBvb09jx8/Rq/XExcXl9xB+tatW6xZs4bhw4db3Blt2bKF2bNnM2/ePDw8PN5xRgB58uTh0JEjbN68mT9lMpzj4xmr0eCTiuadi1hMRYmEFyYTLwWB+mZOj04rFcRiHKQivLzSVjt49WoCS5a8Ytas2VSo8G5JRN26dencubPZ071f88k6pKioKEJCQt5ZUppMJrZs2UKZMmWYOXMmN27ceOdcOzs7EhMTLaq79TpLzxxtHzKD1mRKU4jD2dmZH3/8keCXL7l79y4bN26k1fDhKNq1I7FpU2jThhJffcXshQs5ffo0kZGRdO3alalTQ/H1/TSUG3bvjmb37ig8PVcnpeSa1KxcOJhH98wjf2LJ71NiQgw71s/iyH4Pvv/+e06fPk3t2rWT5WbSQsGCBenSpQsrV65MtWtxShw8eJCnT58yatSo9x43fvx4ZsyYwdSpU+nSpQvnzp17xzHFxcXh6elJjRo18Pf358iRI7i4uCCVSrGxsUEul2fpnqvJZGLWrFl06dKF6dOnv/dYkUhE3759eezrS41GjfhNr6dCYiJuWi0jNRrW6XRcMRq5azRyx2jkgsHATE3S/l1CNt0HRCIRriIx3mlwSC9f6undO5jq1asyZcqUd54XBIGvvvrKLCUxqfHJhuy0Wi2vXr16q4AVkuqSRo0aRcuWLVmwYAGlSr0rC1O5cmU0Gg3h4eHkz5/fIvaJxWJslEpCslFsMtxkwiAI5M2bN83nSKVSKlasSMWKFVNsqKjRaNi+fTuTJk3i5s2byOVi+vcP4Ny5kh916O7VKwOjR4fSuXNHunfvjkgk4trVqwwcOJB1v06kRr12tOs2DpUq7b2EjEYDD+5c4MrZ/QQ8v4dGk4hMriB/AWdq1GtP9dqtUaoyLzx5//Z59m9bhAgjW7ZsoU+fPhke69tvv6VOnTr06tWLXbt2fXCy4u3tzYABA2jdujV169Z977EikYi5c+dSpkwZ5s6dS6NGjahYsSI1a9ZEpVLx6tUrjhw5QkJCAh06dOCnn36iePHszXI8duwYz549Y9u2bWl2hI6Ojuzdu5fChQvTrXNnpFIp565cYbWvL6Z/RSNEIhESYIJWSyOpFJds2FOuhph9N95fzB4VZaBlS38SE204fnxPqk5n+fLlyQkulkAkZGfXpxSIjY3F3t6emJiY97aSWLNmDQ4ODnTr1g2TyfRW3VBoaCiOjqmrFEdERJA3b1769u2brLBrCTzd3Snz/DkHMyi2mFmOGQy0UqsZOXIkJpMJkUhEgQIF+OqrrzIUBrl8+TL9+/fn6dOnlCtXjnr16iGTyfDw8ODnnwsxYYJlnHtmMZkEunXz5+xZuH//4VvdLQVBYO3atUycOAmZ3IrOvadSpuKHu43ev3WOgzuXEh0ZRq3atencqRO5cuUiMTGRc+fOcfDgQWRyBQ2b96Zpm4EZmvUnJsTwx85fuHH1GGKxmLVr1zJw4MB0j/NvDh06ROfOnalduzY//fQTNWq82749MTGRbdu2MWHCBCpUqMDJkyfTJZ0lCAKnTp1i3bp1PH/+HLVajYODAw0bNmTYsGHvtPTOLjp37szz58+5ceNGuj+jgQMHcv78+eRU+ISEBHx9fVGr1YhEIqytrdm0aRM7ly9HqtczRS5nRDZ01Z2v1bLM2khYZMph3fBwA61b+/HsmYRz5y6mGKqDJO3PAwcOcPLkyXS9V2m9p8MnvEIqUKAAAQEBjBw5kvDwcHbv3p383PucESTFg52dnQkICLCoQyri7Mz1Z88sNv6H8DYakQC7du3C2dkZQRDw9/dn9uzZNG7cmPHjx7+VppsaarWa77//np9//hlnZ2e++eabt97jxo0bM3ny3zg5yena1cFyLygDCILA5Mkh7NsXzd69e99ptSwSiRg6dCgtW7ZkwICk1ZJb3ba07TIGaxuHFMe8fvFP9mxZQJs2bZg7dy7VqlV76/lx48YRHBzMsmXL+Omnn4iKCKVr32/T/CMWBIH7t85y8PdFICSwfr0Tf/0Vx4gRw3F2dqZp06YZei9e07ZtW06dOkWfPn2oWbMmNWrUoFevXhQsWDB5/2bTpk1ER0fTvXt31q5dm+4WAyKRiGbNmlmkeNKcPH36lEaNGmVowlCvXj02bdqUPCG2tramcuXKbx0jEomQiUTcsrZOUwarJRADRmPK646AAB2tWvkTEaHk1KmTqTojSEpcqVu3rkVDqp+kQ/L39+fHH3/Ex8cHmUzGzJkz3+mU+iGaNm3KH3/8QYcOHcyiypASLi4unDIauW80UiEbNjWPGo1UqlSJ6zduJC/BdTod+/btw93dnY4dO/LNN9+wcOHCVN+7yMhIWrVqxa1bt2jbti2NGzd+Z0Ozffv2xMXF0qvXTVQqEW3bfhyZa4IgMGvWC3755RXu7u507tw51WOdnJywtlYilYq4efUIN68eo0qN5tRt3AUnl/LJ789jn6vs3bqQoUOH4unpmep3p3DhwixZsoTKlSvTr18/7B3y06L90Pfaq06Mw/vyYa6e38PL0CDatrVn9erSFCoko3fvXHTo4E+HDl9y6dKVd2586aV+/fr4+vpy5MgRPDw8mDJlSnKiT/78+Rk6dCjDhw/P9pBaetDr9Rw6dAgfHx8SEhKwtbXF1dWVpk2bpvo5JSYmvtUJNT1YWVkhCAIajSZFhQtIUq9QC8JbzijUZMIxC0N3akClfPt6giCwcWMkEya8wN4+P+fPn36nAd+bGAwGSpUqxYoVKyw6if8kHZJIJOLp06c0aNCAbdu2pZr58z5GjRrFhg0b8PHxMZso478pV64cdlZW/KbX82sWOyQfo5HzRiM7vv32rXiwXC6nR48edOrUiZ9//plvv/0WhULBnDlz3hkjIiKChg0bEhgYyNdff51qmEUsFtOrV2/0ej0dO95j61ZnunfP3vokQRCYNCmEX355xaJFiz64Ib906VL++usIIGCduwoyVSnu37nCjStHKORUlnpNOlPZrRlHD/xGvXr18fDwSNNEpm/fvjx69IjFi5dQ74tuKa66ggMecfnsXm5dP4bJqKdzZwdGjSpJw4bWyY5QLhezd29Ratf2pX//Ply75p3pSnmJREK7du1o164dgiAQHx+PQqGweDNNc/Pq1Ss8PDxYvXo1ISEh5MmTB2tra2JjY4mOjqZUqVKMHDmSoUOHJovGvsbe3p7IyIwpY0dGRiKVSt/r0IoVK0aITkesXI6dSMRhg4GuajXnrKxwy6J7wiOTiWIl/v+ZBgXpGDYsmCNHYujXry/Lln14X8hgMHD79m2LZde95pPMsnNycuKLL77g4sWLGe694ubmhqurq0UbikmlUmrVq8dGo5H4LN6q89TryZ8791urgpCQEGbPno2TkxNKpZJvv00KI82fP5/Zs2e/lR4eHx9PixYtCAwMZPTo0R+M+UskEvr3H0C1aq707OnPDz+EotNlT0LHq1cGunTx45dfXrFixYoP9shZvXo133wzHancjqJuWyjZ4DIuNbZQtvlDitXeT7yuKLs3L2DOlHYE+T9k6tRv0vXDHD9+PCKxiOsX/0IQBKKjwrh/6xzH/liN+6JBLJ83gKBnJ5g5IzeBgeXZubMojRrZvLNqtbISs3FjYe7evcf8+fMz9N6khkgkwtbW9pNzRvfv38fNzY0lS5bw5ZdfcuvWLcLDw/H39ycyMpLz58/j5ubG1KlTqV+/PsHBwW+dX7duXf788893kqPSwt69e6lTp857IzOvVxM3/0kPbyqRUFEspotaTXgWJTx5i0241rQiIcGIu/srKlZ8wq1bCv788082bdqcpiSFZcuW0bx58wxN/tPDJ5vUEBcXR+3atZkwYQJDhgzJ0LU2bdrEgAEDGDduHMWKFcuoye8lKiqKeXPnMlkqZUEWFck+MpmoqlbzzYwZzJ49G71ez4QJE/jtt99QKpX07t2bunXrolKpiIiIYNeuXfz999/ky5eP3377jc6dOzNixAg2bdrEmDFj0tymHZLSaI8fP86JE8cpX17J5s1FqFo15XCGJdizJ5qRI4NJTBSjVuuYP38+06ZNS/V4Dw8PRo8eg13BtjhV80CmSDkxQ5vwjOdXupHXPhY/v+fpnin27duXvXv3IZPLiP1HfidvXjm1a6sYNCgXX35pj1SatpDz99+HsmBBONeve1G1atV02fE58ezZM+rUqUOBAgU4fPjwe7+n9+7do02bNlhZWXHp0qXkG6uPjw8VKlRgx44d6RJpTet5CQkJ5MmVix/FYib/4+wDTSa+1WpZoVSSy8L7SlGCQO74eJo3t+HqVS1xcQb69+/Hzz//kq5suYiICIxGY4ayktOT1PDJOiRISkFOTx3GvzEajdSrVw8/Pz8mTZpksdnh8ePHOXr4MFesrKhh4SWvURBoqNMRVqgQt+/fRyaT0alTJ44dO8b8+fMZNmwY9vbv7vE8fPiQ7777jv3799OlSxf27NlD165dqV+/fobsCAoK4vfft/LixUu+/TY/331nWd27pLTuIHbvjqZy5Up06/YVZ86c4cKFC9y8eTPFrMJVq1YxYsQI8hYfQ+FKixGJ3m+f74UGdGtfiXXr1qXbvs2bN9O/f3+mTctPrVpWuLpaUaSILEMbxDqdCTc3X8TiYly/fsMiIpefAnXr1iUsLIzLly+TL9+H29A/efKEOnXq0KJFC7Zv3578eJMmTQgPD+fy5cvvhPRSwmQy0a1bNy5cuEBgYGCK9w0/Pz9WrVrF6jVriI6IoJJYzE0rqyzXtfxNp2OUVkuu3PYMHz6KYcOGpaq2kRpqtRpnZ2fc3d356quv0m1Deu7pn2TI7jVvOqPnz5+n+3yJRMLGjRuJioriyJEj5jTtLZo2bUrhQoXop9NZPHT3k07HZb2e9Zs3Y2VlxdixYzl+/Dh//fUXU6ZMSdEZAZQtW5bdu3czePBg9u3bR4kSJT5Yd/I+ihQpwvjxk2natAXz5r2iRIlHLFjwkrAw83Y7ffBAw9dfB1GixEOOHNHSr18/Bg4chK2tLa1btyZ37tz069fvHWWOY8eOMXLkSPIWH0XhSks+6IwABGNCurPNXvP6Rjd5cn46dnTAySnjBaByuZh16wpz+/Y99u7dm6ExPnW8vLy4fPkyP//8c5qcEUCpUqWYOXMmu3fv5sWLF8mPL1u2DH9/fzp37kxc3PvbeBiNRsaOHcv+/fvx9PR8yxm9VvBu164dxYsXZ8UKd8pXaUqHXlO4bTJxPYUQ3WOTiVMWUo0RBIFfDQaqV6tGSMhL5s+fn25nBEkO5enTp2nKyM0sn7RDes2hQ4coXbp0htoGly1blh9//JG///6bO3fuWMC6JMfXq29f/MViOmg0qC3klLbo9UzT6Zg6dSoNGjTAz8+P1atXs2TJkg+2F4Ck5IRixYohEono1atXprMPpVIprVu3ZtKkyRQqVIVZs15RpIgPvXr5c/FifIZbEeh0JvbsiaZJE1/Kl3/Ipk2J1K7dhKlTv6V69erJN3qZTEaPHj3w9vZ+a0YcHR3NgAGDsc3XhMKVfnrHMZiMahIir/Hq2W8E3BjOsytd8b3UFk18CH/88QczZ87kwIEDBAYGpvk1vFbJPnUqfX2LUqNGDSsaNbLD03OlWcb71PD09MTZ2Zm2bdum67z+/fsjk8lYu3Zt8mNVqlTh4MGDXLlyhVq1arFhwwbU6rcLSY1GI3/++SdffPEFv/32G6tWrXprf3b37t2UKFGSNm3acPveUzr3mca3Cw/SvvsEajXoQJ5c+VmRQg+yOVotXdRqnlpgP+ms0YiP0ciCRYtQZGK7YNu2bTRp0iRTY6SVTzpk9xq9Xk/Tpk158uQJN27c+GAd0r8xGo306tWLffv2MWjQIItpZ/n6+rLK05PawB9KJfZmXL6v0ukYqdUycOBA1q5bh0gkYvr06Xh6ehIcHJymmb3RaKRYsWI4OjrSq1cvs9n2moSEBK5du8blyxcIC4vAzk5K9eoqatRQ4eqqwtXVioIFpSiVYiQS0OsF1GqB58+1eHur8fJK5Pp1DXfvqpOa65VwoW7dBlSpUuW9cia//fYbtra2XLt2DUiqp9i6bQ+lGnsjt3IGQBCMxL48RsTz34gLO4UgGBGLJRQsWAgHBztkMikmkwm1Wk1YWBixsbFAUnr30KFDGTp0aIoaaK/p1KkLh4+ewtZGw8MHpcibN/MJrrt2RdG9uz937961WKbox0qePHkYNWoUc+fOTfe5vXv35uTJk/zwww+4urpSuXJlVCoVd+/eZerUqRw9ehQHBwdatGiBg4MDCQkJnDt3joCAAGrUqMHcuXOTJ3hhYWGMGjWKvXv3UqFqQxq37ItzsQrvTHIun93H/u1LOKVS8cUb39UYQcAtIYH8IhEXzBjS0wgCrjodqnLluHbjRqYmlzdu3KBChQoZdkj/mT2kN3nx4gWzZ89m8eLF6aoof41Op6Nr164cOXKEnj17WizX/s6dO2zesIG8wEalkpaZ1IV6ZTIxWq9n9z9ZQn5+fhQtWhSj0UjBggXp06dPiurLKXHo0CHatWvHxIkTcXZ2zpRdKWE0Grl79y63b98mIiICtVqNXq/HYNASH/9+aRORCBwd81OokDNOTk6UKlXqvQ7gTe7evcu6devw8vJCp9NRt25dnKp6kMdlEIJJz6tnnkQ8X4k2IYDCRZypXasGRYsWpVChQik6OkEQiImJITAwEB8fH27evInBYKBjx47MmjXrneLCoKAgirq4UKDMLCKe/UT/vlJWr868UoFOZ6Jo0cd07jwId3f3TI/3qWAymZBIJKxevZqhQ99f25US3333HT8t/QWDXo/JZEAikdKyZSvGjEmSHHv+/DmrVq3i+vXrxMTEYGNjQ5kyZRg2bNhbqha7d+9m5MiRaHVG2nefRBW3pqk6FJPJxJqlo9A/v899lfKtuqT7/2TgmbNWcbpWyxK9npOnT7/TYC89xMbGUr9+febMmZPhNvH/SYdkDvR6fdLseetWXF1d6dy5c4b3DP6NIAh4eXlx4MABrKysKFGsGFeuXWOgTMa3cjkl0zmDUQsC2/R6phuNCDY2/PTLL4wZM4aJEycyZ84cwsPDyZcvH/v27aNTp05pGrN9+/bcuXOHCRMmZOQlporRaOTkyZNcvnyZ6OhoqlevjqOjI8+ePcPX1w+dLskZiSUq5CpHRGI5gkmPQReJQZfUhVRlZUPlShWoX79+umVnTCYT8+bNo1OnTsTHJ/DH4euUanIHTawPgTcHo465i5ubKw0aNMiQI1ar1Xh5eXH+/Hmio6OZNWsWU6ZMSXZmo0ePZvXazZRr/oxXzzyIej6XF6HlcHDI/Crp++9D+eWXOEJDX6ZpQ/5zwGQyIZPJ8PT0ZNiwYek+f/r06azw+J2SjW6jib1HQuRVYoI3Ex95i6JFi/Ptt1MZMmRIqquKV69eMWrUaPbs2U2l6k3o1HMyNnYfToeOeBXMstm96IjAdoUCsYUSHI4aDLRVq5EqlNhYW+Hh4cFXX32VodXXgwcPkMlklChRIsOrt/9MUkNqvO77kl5kMhmbN29m8+bNPH36lMWLF3Pr1q1MqziHh4ezbt06tm3bRvv27Xnw4AGXrlxh9erVHLSyolRCAq20Wvbq9bx8z7W0gsB1o5HJGg2FNRqG6XR80bEj9x8+ZMCAAfTv3581a9ag0WiS1ZxTqyD/N4IgcOHCBbOHK7VaLWvWrOHkyZP07NmTPXv2UNSlGEeOHuXJ0wBsHHvg7Lqesk1vUaldOGWb+VDmi1uUbXafim1CqdDyGcVq7cGuyChu3Q1i6dKlLF26LF37fWKxmPLly3PixAn27NmDvdMQwh4v4fHZOtgqXjFhwnh69+6d4VWhSqWiQYMGTJkyhQYNGjBjxgxq1arF48ePWbx4MR4eHhQoMweJzI48RQeg18GmTVEfHjgNdO/uQHx8ItevXzfLeJ8CYrGY/Pnz8+jRowyd//DRYyTyAoglCqxyuZKvxChKNLhMqYZniTW6Mnz4cJo2bY6fn98753p7e1OhQgWOHjtBryFz6TNsXpqcEUCefIXpNvB7dukNjNBqMf1rLRAvCHRXq7mSSkuLtHDGYKCTRkvZinWYMmcXRYpVo0ePHgwZMiRDLXf+/vtvpkyZkmXZgZ/lCmnw4MHs3LmTa9euZfgGGxISwrBhwzh06BB58+aldu3a1K5dO82zUJPJxIMHD7h48SIPHjwgX758rFq16p1lr1qtZteuXXisWMG1f1plFJbLqWYykZuk9smJwGOJhHs6HXpBILe9PYOGDmXEiBGUKFEieayHDx9StWpVOnXqxMqVK8mbNy+///473bt3/6C9fn5+FCtWjGHDhpnNKRmNRtavX4+fnx/79+/n6tWrzJo1G5HEBpnKBZnSEakiH7YFWmDv2B6x+P1p94LJQOzLo4Q/W0ncq7+pUqUqXbt2SVOI9tq1a2zfvh2xRIldwfZEB++mefNmtGzZ0uxy+n5+fmzfvp3Y2Fg0Gg0FSk/Fsfzs5Of9vXqT1+oojx+9q0SfXoxGATu7+8yevYDJkydnerxPhYkTJ7JlyxYCAwPTVfoRGhqKk5MzBcsvIl+J0SkeExd2kuA7IxCbolm7djU9e/YE4Ny5c7Rt2448+YvSb+QibNPoiP6N16VD7Nk8j85SKWsUChz+udnrBIEmiYn4CwI3rKzIn46oiSAIbDUYGKLVUayMK/1GL0YmV/7/elsW0KFDe3bs2JHmvSCTycTevXtp3rx5uhs6vsl/PmSXkJBA7dq1sba25vLlyxn27oIgcP36dTw8PNixYwcmkwlnZ2cKFy5MkSJFcHR0RC6XI5FI0Ov1REVFERgYSFBQEIGBgcTExFCtWjXGjBlDjx49Prhaef78OV5eXnh7e3Pn9m3ioqMxGAwoVSqKlSyJq6srbm5uVK1aNdUv1d69e/nqq6/o2LEjd+7cwc3NjR07dnzwte7Zs4du3boxd+7cDO3BpYSXlxdbt25l3bp1zJ07j8BAf4xGI/nyFaRixQooFHICg0K4f+82SquC2DsNpECpKYilH17VRQXvIeTO18gkenr37vFeUUhIuhEtWrQImdIRg/Ylffr0tqgmV0JCAr/99hshoeGUqP83Vg5V/m970G78vfoSFlaRfPky7wzr13+Gk1ObNH3OnwuPHz+mTJkybN68mb59+6b5vDlz5jD3x0WUbf4Mqdwh1eOM+liC74wjMnAH7u7uFC9enI4dO+FcvBL9RixEocxcsffdG2fYs3EuDgY96+QyWv8zKQoxmXBNTGSBQsGANNaXhZpMDNfq+NOgp3rNlnTt9y1S2duTu/u3z7N9zQwaN27EwYMH06TfFxkZSf/+/Zk+fXqmSkD+8w4JSJaEL1mypFnsioiIYMeOHVy5coVr167x9OnTFFN+c+XKlew4OnfunKK0v6U5ePAgPXv2RKfTIRKJCAwMpGDBgu89Z86cOSxdujRFTbuMsnz5cvLnz8/du/dITEygQcNGjB/3NV9++eVbxZz37t3D09OTdes2ILepRNFa+5HK83xwfL02jKCbI4h9eZSePXtQs2bNVI81GAxMnpzUdKxfv74ptvg2NxqNhpUrPXn5Kp5SjS4nZ/Rp4315cLICR44UT3Nb6fcxblwQR47Y8vhx9inLZzWnT5+mRYuW2NnZce3a1TT9zq9cuUKjxk2wKzSQIlU+nOgjCAIh977hle+vyGQySpWvRe+hPyKTmSf9OTryJXs3z+PRg+u0k8oYK5PSTCIhFpJXTe/Dz2RilV6Pp8GIoLKmY9/pVKzWONXjnz70YqPHFJo3a8r+/fs/WFB99uxZABo1apSOV/Uu//k9JEhyROZyRpCUZjpmzBi2bt3K48ePiYmJwdvbm/Pnz3PmzBmuXLnC8+fPiYiI4MSJEyxYsCBbnBFAhw4d+PrrrzEaTZhMAj/++OMHz4mPj8+w6nFKBAUF8fz5c27euk1iYgKzZ8/m7N9n6Ny58zs/hIoVK+Lu7s6FC+eQ8Rz/a10wGd+fdQcgU+THpdZucjv3Z/v2HSl2B37N3bt3AYEOHdpniTOCpMLtESOGolKYCLw1InkCI7cujkxhg7d32ru2vg9XVyuePHmeXOv0uRMUFETHjp2xyl0XrTEP9es3wsvL673nHD16lGbNWqCwrU6higvSdB2RSIRDkR6IJXKcilU0qzMCcMhdgEHjltN94PfczFeElmo1pTRa5mu17NTr8TWZePXGnnK0IHDaYGCJTkdrtYbiCQmsEEmo1LgLE+bseq8zAihZ1o2+w+Zz7Nhx+vcf8MG98cDAQA4dOmSGV5p2Pkm17/QQGxtLr169mDx5cqbSH/+Nra1tlt3Y0otOp2Pduo3kLTYMhU1p3N0nUahQIaZPn55q+NJgMJi1DcejR49AJEGv0zJx4kS+//77D57j5ubG0SOHqFe/Aa+erqBAmakfPEckklCkqjuCScfWrdvImzfvO8kJWq2W/fv34+LikunZXnqxsbGhR49urF69mkj/DeRxGYRIJEJlW5bHj33Nco3ixZPCMyEhIakqcXwuCILA4MFD0ZusKVljJ4JJi/+1pEhEkyZNGTNmFE2bNsXGxobo6Gj++usvfv3VA2/va9gXbIGz6zbEkrTtORm0r/C72pFCTqUYMHqJWZ3Ra0QiEa61W1O9Viv8fe9w5ex+1j30YklsRPIxMsCECCNJExqFTEGRouXoXKcN1Wq2QK5I+0SyTMU69Bj0A9vXfk/p0qWYNWtWisep1WpCQkLMnnH7IT57h2RlZYVaraZ79+7cuHGDwoULZ7dJFmf//v2Eh7+kTOXhqOzKY9RH8d1333H9uheTJk2kXr16bzkmtVrNo0eP0Gg0ZrPh1u3bIICVjS2zZ8/+8An/UKNGDfr07sXvu9eSv/RkRKIP12aIRGKcqv2GJu4e27b9zpQpE99KVDh06BBqtZrevXtbrPfV+yhfvjw1a9bC++Y32BZoiVxVGCQ2aDTmiZarVEmvyZyf38fKxo0bOX78KMVq70cqTxIHLV7vDNEh+/C6u4ouXbq8c459weZJmZoFW6fp+/SaoDvjkYh1DBy1CKUy/eUfGk0CUeGhxMaEExsdTlxMOGp1PCajEQEBsViCXKHCzj4PtvZ5sbPPS7tuX2Njl5v42EieP73NgR1LAWjcsg82drkpVKQU+Qo6IxZnvGapsmtTXoQ8Z968eXTo0OGdBpOQtAcaGBhIbGxsuoUGMsNn75CkUik7duygZs2anD59Ol0boJ8qK909scvXAJVdUrZcwbIzkFsX5/jpeRw40IDy5SvRoMH/1b4P/vEXsTFRyGSyd9rBZ4QnT54QGBCAXGHHoIH9010fM3r0aDZs2EDsiyPYO7ZL0zkisQynamt5fLYOx44dS5aUiY+P59KlS7Ro0SLNmmeWoGPHDty+fYeI56twLD8HEGEymcchKRRJk4vP3SFptVomT5lKbqee2Bdsnfy4WKIgt1NPcjv1RB1zD038Q0yGeCRSO1QOVVBYl3jPqCkTHbyP6OC99Bw8G1v7D+9nmkwmggMe8vzpbYL9HxHs/4hXYf5v7TPbKnNjJbdHKk4KWZsEIxp9AjHqV5iE/6d629vlo7BLWQoXLUOL9kN57HMVt3rtUKnMV2f2Rev+PLhzjn79++Pt5fWOQOyJEydo0KABZcqUMds108Jn75AgqQPm/fv3zVbk+jGTmJjIpUsXKFRx2VuP53bqRa4iPYh/dZpQ/w1s33MNwaRGLLFHka8/ziUqEXBjMGFhYR9MgHgfgiCwe89+VPaVUMfcTZek/2tcXV0pVrwUca9Op9khAajsK1Gg9HROnpxHnTp1yJ07N9euXUMQhExlCZkDKysratZ048r19RQo8x2CMSF5ZZNZ9Pp/9qY+sV5G6WXPnj1ERryibNXU24mo7Cuiss+cjJJB+4rgO19ToWojqtZonupxer2WJw+u43P7Ag9uXyQuLhyZRIlL7opUy9WcEsWrUciuFLmtCuGgLIBMkvLnYzQZidWGE61+wYu45zyLvMWzVze5/Ggv8doo5HIVuzf+SLnK9SlXuR42tplvfimVyujWbwa/LhjMvHnz3oli2NraEhAQkOnrpNuuLL9iNvGmMwoODv5sQ3e3b9/GZDRilevdlGaRSIxt/mbY5m/2znMGXTSQtGGcGYfk6+tL2MsQHCuMRR0znQIFCmRoHMeCBYkOSH/xaL6S4wj3Xcbly5dp3bo1Fy9epFq1ah+FikG9evWS1BxC9qOJe0iJEubpE/U69JeZViyfAr+u9MAuf2OUtpadtQfdGY9Eoqdz729S3HONeBXMlXP7uX7hLxITYyhoV5zGRXriVqQNpfPVTF4BpRWJWEIuVQFyqQpQLHcV6hTtCCRN7oJiHuIVdITrwYfYfWseYrGEyq5fUKdxF1xKVM5UwWohp9I0ad2f+fPn07Fjx+TQXXh4OIcPH35vHzFL8Z9xSK/ZtWsXAwcO5PLly1SuXDm7zTE73t7eiCUylLbvr8v5N1K5A0obF/z9/XFzc8vw9S9cuIjKtiTWuZJSsN/sQpse1BoNojRuPr+JRGqDg1NfLl7aQunSpYmIiKB3794ZssHcFCxYkOLFSxLmvwG9NhZX1w+HgtLCixdJKtKW7uaZnTx+/JirVy7hUmP7hw/OBNHB+/8fqvtX4evzp7c5c3gTj3yuYCW354vifWlasj9F7C3jIEUiEU4O5XByKEenihOZe7IDT8K9CH7wEM/rI3AsVJKGLXpSrVbLDO8ppRS6E4vFlChRIltW3J9t2ndqtGvXjlKlStG5c2eio6Oz2xyz4+Pjg5V9GcSS9GcE2eRvy40btzMkMQJJG6F37twht8sI5FZJenPe3t4ZGufx40fIVRkTIM1bbBiJCXFcv34dqVRK0aJFMzSOJShZsjia2JtAUrq2OfD2VlOgQJ5MrWw/dq5evQqAbf6mFruGIJh48eA7ylWq/1aoLjT4KRtWTsZzyQgSQ2IZWdudVZ0e0t91vsWcUUqMqbcapcyawnZlmfHFfhxFJdi5cS7L5vTH5/b5DLVzkUpldO37Hffu3k0urF67di0qlSpbvk//OYdkZWXF3r17ady4sdklYz4GEhISEEsyVmyZt9gwEhJiuX37dobODwgIwGQyYlewNXIrZ+wKNMHd47d0j7N9+3YSEuLI7ZyxlY3StixKm6L4+flRqFChdLcbtyROTk4YdLEUKaLE0dE8nV69vTW4udXK8m6kWYm3tzfW9iWQyCyX1h736hSa+Gc0ad0XkUhEQnwMuzb9yLK5/Yj0C2F8/fUsaXORJiX6oEiDmoi5yaUqwJRG2+nvOp8qhZoyvclu5rc6TR6hEBs9vsFz8QhCg5+me9zCzmUoW7EOK1cmKcY3bNjQImr/aeHzuyOngRIlSrzVoOtzwmg0Qhq6n6aE0rYMtvkacf78pQzJ6gQGBiKV2yG3Kg5A7qLDuXolqUFeWsczGo0sX74Sh4JtkFtlfGWjtHMlOvwwNWpkXi/OnLxWKm/SJGNFyBqNiXv3NISHG9DpBORyuHo1kVGj3k3d/Zy4ds0bmU366/60Cc9IiLhMYvQNdFHXMWpCMJl0iERSJPLcyHK5YeVQHatcNQj39aRg4VIULV6J+7fOsW/rYkw6I4NrLKVpyf7p3huyBKXyur3z/w9N/+JO6Gk23JjGinkDadZuMI1b9kEiSfvtvXbDTmz0+IYDBw6wevXqbGtnYhGHFBwczNSpUzly5AhqtZrSpUuzbt06i2qHZZQ7d+4QFRWV5QWTlkKlUoEpY/s2AHmLj+H51W7cvXuXSpUqpevcgMBAVPbVkmfq9gXbYe1Qns6du3HlysUP1jMIgsCYMWPweXCfEvXS1sMpNVS5XIkOPUjevHkzNY65sbe3RyqVUrp02kKqgiBw9WoiGzdGcuV8AvcfaTCkIAa9ZNEiThw5Qv3GjRk8eLDFmkxmFwEBgSis05YpKZgMxLz4i6hnnsSEJ8nfFJPIqSky4SIWowAMArxQv+JawmMe+G/CiIAEcK7WhG1rZnDH+zSuRVoxvOYKcll9fKHQRF0sq6+Np0vFKTg5lKNKoaYsKXCB3XcWcuCPX7h34yw9Bn1PgULF0jRe2Up1yZ23IHv37mXQoEHZ9rsxe8guKiqKevXqIZPJOHLkCD4+PixdujRTarGWZNasWXTp0iVbUhwtQZEiRdAmPMtwe3C7gu2wL9iG33fuISEhIV3nRoRHI7cunfy/SCylaM39hEXoqFWrLpcuXUrVrrCwMPr07cdvv/1Gkcq/YpOnXobsf43CuhQIxky3DjE3IpEIuVyKVPr+8JrRKLBhQwSuVR5Rp84Tjq2Pwu2JkV+lCq5aWRFobc0La2v8ra05r1KxWCKh9J07bP31VypUqECThg05ePBghr8HHxsarQaR+MNJLnGvzvLkZHn8rvWgbNRltiiVRNvY8MxKwe8qFQsVCmYrFMxTKFinVHLXSkG8jTXHVSoai8U8uHWOx7evMbbuaqY22vlROiMAsVhCQLQPS872JlGX1L1YJlHQq9oPzG95CmJNrFwwhPu3zqV5vJr1O7J9+w5u375tNoHl9GJ2h7Ro0SKcnJzYsGEDNWvWxMXFhaZNm77VJuFjYs2aNdjY2DBkyJDsNsUsuLq6olVHoFdnzMGKRCKKVHVHqxXYs3dvus7VG/SIJW/H1uVWRSle7wyR8bbUq1ePatXcWLNmDdeuXePWrVscOXKEXr16U7hwEXbu3EtRt03kcRmUIdvfRCxNCokZM9FbxlKIxSLe5yeePNHSqP4TBg0KpNBDA4dUKp4qrFirVDJCLqemREIRsZgCYjHOYjH1pVLGyeVsUakIUCjYrlRiuHqVjh070qVTJ16+fJl1L85CJO0Dpj65MBoSCLo9Ht+LLammDeWGlRVXrBT0kcmw/8DemlIkwgBcF0Q42riwuO15Ghbv8VHvySml1kxpuJUYzStuhpx467mSeV1Z0OpvqhRsyibPqZw6vDFNE5Oa9b5M2jtL50TUnJg9ZPfHH3/QsmVLunXrxtmzZylcuDCjRo1KtdWwVqt9KzU4NjbW3Ca9lzx58nDw4MGPok7FHLwOiyZG38zwHoxEngepypGbN27g7OREkyZNPniOTqcjNjYOe7t3v/hyK2dKNrxC3MsT+Pn9xrDhw3nzjmxlV4L8ZX8kt3NfpHIzpS7/M35GMwYtiV5vQKVK+Wb322/hTBgXTGFBxFmViobpTLxRiET0lMnoCewRixl16BAVypZl/aZNtG/f3gzWZw821jbE6VO+Nxi0r/C72BpD3ANWKBSMlsnS1Y3VQ6djrFZHtULN+br+eqzkWdupOqM42pVkRYeb2CvfDa+pZDZMarCFvXcXsevgAl6GPKf7wJnv3VeKjAhFKlPw11+H+Pnnny1peqqYfYX07NkzPD09KVWqFMeOHWPEiBF8/fXXbN68OcXjFyxYgL29ffJfettTm4MqVap8tCu49OLo6Ejhws7EhZ348MGpEBWwDW3cY/r06cPBgwc5f/78e483mUxs3boVg16P0RCX4jEikQS7gq0oVvsAFVr5U6bJNUo3ukC5Zvcp1eQu+UuOM58zAkyGeICPTgE7JiYGrVaPk9O7NR6zZoUycmQQgwQptxVW6XZG/6arTMZ9hYIGCQl06tiRjRs3Zmq87KRSpfJo4+++87hBG87z81+gjH/IVZWCsXJ5upzRUp2O0VotrcuOZErjnZ+MM3rNm84oQff2d10sEtOt8nQmNNjIXe8zbF01A4NBn+pYhZxKU/+Lbjx58pj4+HiL2fw+zO6QTCYT1atXZ/78+VSrVo3hw4czdOhQPD09Uzx++vTpxMTEJP8FBgaa26Q0ExUVRYcOHd7bxuBTYMiQgcQE/44xlRnl+xAEgaiAVbRq1YbNmzczceJE9u7dy+HDh1MNf928eZM7d+5Qv35t9AkPPngNmSI/KvvKWOVyQ2FTAlEGswLfhybOB7lc9dGFq15/vxcuDOPp0/9HBhYufMns2S9ZIJfjrlRibaZwUT6xmD0KBUOkUgYNGsTvv/9ulnEzgiAIBAYGcuDAAWbMmEHr1q2pXr065cuXp3LlytSuXZtBgwbh7u7OlStXUKv/34LEzc0VTcytt0JPgkmP/+X2KBKfc0GloHI60/uX6XRM1mrpVGES/V0XIMmEYGl2c/bZDsb94UpEQvA7z9Ut2pkpDbfx6O5ltq/5HqMx5ajBJo9viIkOB+DWrVuWNDdVzH4ncHR0fCfDp1y5cqkmDSgUCuzs7N76yy5UKhXBwcF06dKFyMjIbLMjswwdOhSTSUNkYPqr2hOjrhMfeYsxY0YhEon46aefmD9/PidPnmTFihWEhoa+c86lS5do3LgxHTp0IDH6NoIp+8Nk6pibuLgUJSQk5KPaRwoMDESlUuHnJ6dSpUcsX/6KI0dimD49lB/kcqalsb10epCIRHgqFPSRSunfrx8+Pj5mv8b7SEhIYO3atVSrVg1nZ2c6derE8uXLCQgIQKVSkS9fPuzt7TGZTBw7doyvv/6aOnXqkCtXLvr27cvNmzdxdXVFp4lCl/D/JoQvn/xEQvRNDivllEmnIPBGvZ4JWi0dKkygZ9XvP+r9orRQtVBzpGIZS8/3Q2/UvfO8a5FWTG64hQd3LrBn8/x39pSMRgO9hv5I0zYDkMnkGSpoNwdm30OqV69eUi+cN3j8+PFHVS2fGkqlkr1791KzZk1OnTpFt27dstukDFG4cGE6duzEkePLyOPcL00twV+TEHkFhVJFy5YtgaQkh+nTp/PFF1/Qv39/li5dStOmTWnQoAE2NjaEhITg6+vLwoULyZcvH0aDGk38I1R26ZMuMieCIKCLvUnNpl/w+PFDAgICKFYsbemvlsbX1xcXFxcGDBjAX3/9xfjx57FSivhCJuYHC0q1iEUiVikUXNNqGdivHxevXLF4YXh8fDxz5sxh1apVxMXFUa5cOQYOHEjRokWxt7d/b2+ukJAQHjx4wMGDB9m6dSvlypVDJpMTFbyLgmWmo465S9jDeUyTy6iVzpXRJaORYRotTUv0o3fVWZ+8M4Kk0N2khlv4w2cFBpM2RSFX1yKtGVNnFcsvDqZg4RI0avH/wnN/37ts9PiGSbO2U8ipVLY5JLO3ML9+/Tp169Zl9uzZfPXVV1y7do2hQ4eyevXqNGmKmauFeWaIjY3N1pWaOXj8+DGVKlfBrvAQilT+Kc3nhT6YixC9gZcv3l36azQaZs+ezc8//4zJZKJq1apYWVlx5coV4uPj0el05MtXAPuiEyhYdoY5X066SIi8wpNzjTl8+DDDhw+nYMGCH4We3cuXL1mwYAF9+vRJ1gu8desWmzdvpqlYzCGlEpmFb45XjEbqqdUsWLiQb775xmLX+fvvvxkwYAChoaE0aNCAunXrkidP+rX7jEYj9+/f59SpU/j7+yOWqCjf8hkBV7/CMfoKt1UKFOl4zwJNJtzUWvLmcWVGs0OpKnB/zmy/NYcD95cyYPRPlKuUVNuVEB+DyWjAxi43B3b8RNTLBzx4YJ6VdLa2MK9Rowb79+9nx44dVKxYkblz57Js2bKP4oaQVt5808LCwrLRkoxTunRpFi6YT8Rzd+LDL6T5PLHUCrU65dbaSqWSBQsWEBISwoIFCwgPD+fcuXPY2dkhk8mwtramf/++RAeuRzClvnlqaSKer8LFpQQtW7Zk1KhR3Lp1K1tTWV9z6dIlrK2tqVKlSvJjVatWZciQIZwxmRio1Vq8bqi2RMJIqZRF8+e/tUdjLvR6PWPHjqVJkyZIJBK++eYbvvzyyww5I0hK965cuTLjxo2jS5cuiEV6fI4XJzbiPLNkknQ5I60g0FGjA2V+Jjba8Vk7o+CYx/hH3U/xuR5VZlC9cEt2rP2BVy+T9jS3r/2eM0c3J5V9FC3Lo0cPsyWxwSJadu3atePu3btoNBoePHiQasr3x87GjRspV64cz58/z25TMsTXX39Nrdp1CbrZD22CX5rOUViXIC42mvv3U/4yQ1Kq/OTJk/H19WXYsGHo9f93PiNHjkSTEEJM6J+ZNT9DGLSviA7Zy5gxIxGLxQwePBiRSMTly5ezxZ7XaDQarl27Ru3atZHJ3pagKV++PL369GGbXs/GLEhTHyeXExkTw+7du806rkajoXPnznh6etKpUyfGjBljtop/sVhMgwYNmDZtGtYqKbmBzukMOf6o03HbZGJSo99TTJX+XBAEgVVXv2bJ2V4k/NNW5k3EIjFf112LvSwfuzf+iDoxjh4Dv6dVp5EAFChUHEEQ8PX1zWLL/4PiqumhQ4cOODg40KVLF4vMJi2NRCJh397dFMynwu9K6zQ5JbuCbVBYFeC33z4siioWi2nSpAkxMTE8fZok6li5cmUaNGxM2ONZmIxZ/56FPvgBpULOgAEDAMiXLx+DBw/mxIkTREREZLk9rzl48CBGo5H69eun+Hz16tWpWaMG43Q6giysLlFKLKaFXI778uVpPicgIIBly5bx3Xff8d1337Fs2TL8/f2Tn9fr9XTp0oVjx44xZMgQGjVqZJF28blz58ao0zFMLkeejtWRt9HIAp2eLpWmUjxPVbPb9TEhEokYXceTeF0Ua65OSPEYK7kdo+t44v/sLkcPruKnWT3R65KyPuXyJEWM7Ljn5Tik95ArVy727dtH5cqVPzoJmrTi6OjI33+fokAeMc8vNSU+4tJ7jxeL5TgUGcCGDZt49erVB8fv0KEDuXLlYtWqVcmP/ebpjj7Rj9AHczJtf3qIDTtBhN96li5d8laI6HXCxc6dO7Plc3z06BGXL1+mffv25MqVerfPjp06IbGyYkgWhO76isVcu3Hjg0769OnTdOjQgWLFijFt2jS2bdvGtm3bmD59OsWLF6dDhw6cOnWKkSNHcuzYMQYPHky5cuUsZnd4eDiJWi1fpCORQSsI9NfqKepQnk4VJ1nMto+JArbFmNRgM90qT0/1mHL569KqzHCuX/iTYRN+xdomSUldJk/K9MxxSB8hVapUYePGjZ90+/OiRYty6dJ5Kld05umFpgTf/QaTIeV9IoC8xUdgMKlo2679B5UzVCoVPXr0YM2aNcnHli9fnrlz5/DKd9kHHaC5MOiiCbkziiZNmjJ8+PC3nrOzs2PDhg08fvz4g0W+5iYxMZHff/+dUqVKfbCNupWVFV26d+eYwcB5C6eq1/znhp5azZ0gCMyZM4emTZvi5+eHp6cn4eHh+Pn54efnx6tXr/D09MTPz49mzZqxbt06unXrRtmyZS1q9+s6rurpcEgr9XoeGo2MrLf6o1DszioqOTamsH3p9x7Tq9oPSJCyddV3yY9JpUl7azkO6SPn9u3b2ZYOmVkcHR25dPE8SxYvJiZwFU/PuRH+fA1Gw7sblzKlI0Vr7uPWLR/q1WuYqiiqyWTixIkTHDhwgISEBLp27ZosAzVp0iRq1apDoNdXaOIevXOuOTEZEgm43hm5OI7169emmMbbrFkzxo4dy8GDBzPc7ym9aLVaVq1ahU6no0ePHmkKYVWsWJGCefPirrdsUkhJkQhbiQQvL68Un583bx4//PADP/74I7du3WLYsGFvyWvZ2NgwbNgwzpw5g62tLWXKlKFWrVoWtRmSOgk4SaXkSWO4LkYQmKc38kXJ/rjkSp96/edCgi6alZeG8yr+3VpQpdSaUXU8iAgP5tnjpMaRJlPSZOjfe51ZwX+yH1JGmTBhAk+fPuXGjRtZKs/+8uVLvL298fLyIjAwELVajVarRSqVolKpcHBwoFq1ari6ulKmTJlUG9JJJBImT55Mu3btmDJlKocPj+Plg2+xL9wb2wItsHKohkyZ1CLCKpcbxeuf4ZlXD+rVq0elSlUYMmQQLi4umEwmnjx5wqpVq/D19cXa2pratWtz7tw5WrRowZo1ayhdujSH/vqD+vUb8fxyS1xq/YXKvqLZ3xujPg7/613Qxd/i9KmTuLi4pHrsL7/8wosXL9iyZQuCIFC1alWz2/OaxMRE1qxZw4sXLxg9enSas8xEIhF1GjRg34EDvDCZKGiBfRhIqksqL5Hw+PHjd567cuUKM2fOZPr06QwfPpyEhASsra1TdPRTpkxBr9fTs2fPLKnnSUxMJH86rrNEpyMRCV0rT7OgVR83JsGIz8uLLD3XlzktjyGXvK2aXtu5I8XzVOXIPk9GTV2FXp80qVSpMtazKzOYvQ4ps3wMdUipERQURPXq1WnUqJHZM5TeJCYmhq1bt3L8+DG8va8RHJwkf5Mrl5ySJZVYWYFCAQYDqNUQFmbE1zcprdnaWkXVqlWoU6c+AwYMoEKF1AtU/f39Wb16NWvWrOfVqxcAKK0dkxrsiVWACZMhjsToOwgm3VurJJlMRteuXRk1ahROTk4UKFCAGzdu0LlzZ16+fEnz5s0ZNGgQdnZ2jB07noCglxSqtIxcRcx340qMvknwrSGIDIEcOXIo1YSBN9Hr9fTv35+dO3fSokULmjdvbvaOsoGBgWzbto3Y2FiGDRv2XieZEomJicz+/ntmi8VMtYByw2uaajTk69yZ33//nbCwMPbs2cP169f5c98+ImNjefPGkNvOjupubrjWqEGTJk1o3rw5YWFhODk50bZt2zQJ8JqDbdu2Ibl1i8vKD7eieGkyUSxRQ6vy4+lV7YcssO7j5VnELWYeb8mEBhtxK9I6+fGbwcdxcihPcOxjfjzVkf6jFpMrdwGW/dif69evJ9fLZYb03NNzHFI6uXTpEo6Ojhap/L99+zaenp5s3boZjUZDo0a21KypxNXVCldXFS4u8lRv5tHRBm7eVOPtrcbLK5EzZ9SEhWlp1KgBo0aNoWPHjshTUQIQBIGAgAC8vb3x9vYmICAAtVqNRCLBysqK8uXL4+rqmuzcxGIxDg4OKS7pY2NjOXjwICtXruTatWtvPCMCBOwLtqFIVffklVhGMJl0vHy0gLAni6lQoSLbt21JVzNBk8nE7NmzmTdvHoUKFaJHjx4ULlw4w/a8xmAwcPz4cU6ePEnBggXp168fBQtmrJ/Ob+7ulHr+nD8sOEv9QqtF0rAh+fPlS5pgmUxUlkpxFQSqicXkFYmQABrgqcmEtyDgJRIRrNNR3NmZUuXKcerUKebMmYOVVda09N61axeJ169zMw0O6UetlnlGEZ6dH2OjSD2Z5L9CZGIoua3e/t2tvjqBorkq0LL0EGYcb47BwUDDFr3YsHISz58/T/dkKiVyHNInxtmzZ/nuu2lcvHiFQoWUDBvmwNCheShUKOMxXJ3OxL59MXh4RHH+fCwFC+Zj3LiJTJo0yeyxYa1Wy927dzl69CiLFi2ioKMj/n5+yfVJIpEYuUKBCBFanQ6Qktu5D3mLDUdln3ZHote8JNJ/I+HPf8OgfcmXX7Zj06ZNGW7+eOPGDfr168eDBw+oVasW9erVo0iRIukeR6vV4u3tzdmzZ3n16hUtWrSgWbNmmZLm+fPPP/H5+29CLHijr5aYyC2jkZJyOaNEIvrLZOT+wOpVEASumUx46PXs0OsRSSR81bMnrq6uWRKyO378OJeOHiXSyuq91zMIAi6JWsoW78WI2r9a3K5PDbU+nih1KP5R96nh1BapWMaF57tZfnEwdZt0xefmSSIjI83ymeY4pCwgIiKC4cOHs2DBAkqVKpWhMeLj45k+fTorV66kdm1bpkzJw5df2iOTmfeHfe+eGnf3cNasiaRy5Ups3LiFypUrZ3rcu3fv4uHhwebNW0hMTEAslpCvoDNOLuUp4lyWwkXL4li4BDK5MvmLnRAfw6Uze7h87iDxsa+wzuWGdd5GWDlUR+VQDZmqCCKRDAQjBn0k6ujbqKNvkBh5lbiw40gwUUEECrGYawYD9ra2DBwyhG+++SZDqxGNRoO9vT0SiQS1Wk2xYsWoWbMmRYsWpUCBAqmG8+Li4ggMDOTBgwdcv34drVZLhQoVaNWqVYac2r+5ffs2GzZsINTa2iL7SAZBwDo+nq5SKVuUynS1bHhNmMnEOK2W3w0GKlesyFc9eli8r5iPjw+rV6/G19qa4u95Xw7o9XTSaFjc5gLFcmf+u/45cfLJRvbf/5khNZZyynczE+pvRCKWoDdqGXGgHFJrOdWqlOPkyZNmuV6OQ8oCYmJiqFmzJgqFgsuXL6c7Lfzvv/9m0KD+vHgRzMKFBRkzJi9isWVnmF5eiQwcGMyjR1pmzvyeadOmpXu1pNPp2Lt3Lyvd3bl08SL2ufJRo+6XlK1UN9n5pAWj0YDP7fPcuHqMgOcPiYt5s01EUnjvNTKRhIpiMX0kIgbK5eT65+b5zGRilV7PGpMJkbU1v3p4pHtzPTg4mCJFijB48GBMJhMXLlzg6dOnCIKATCajUKFC2NvbI5PJMBqNaLVaQkNDiY6OBsDW1pbatWtTp04dcuc2Xz+nsLAw5s+fz2mViiYWEEG9YzRSJTExQ00A/80+vZ7hej0SBweGjx5t1vfh38TFxTFz5kx2KpV89Z7vbiu1Bj/7SvzY+m+L2fKp8io+gG8ON8BBVYCv6619y2FvvzWHgz7LmDBhHD/9lHYNzPeRnnt6TpZdBrG3t2ffvn3UrVuXM2fO0K5duzSdZzKZmD59OosXL6ZBAzuOHy9NyZKW27h+Ezc3K7y8SjB37ktmz/6Bgwf3cfDgX2naP4mKiuKnn35i9Zo1hL96RcmyrvQZNo8KVRu+twtlakgkUipVb0Kl6kmb4XGxkQQHPCIhLgq9Xpc0pkjEq1A/7l4/zs2oMEwiGXkMBvpKpYhFIoqLxSxSKJhiMjEmMZHevXuzZ9cuNm3Zgq2tbZrseK1xZ2VlRYkSJahSpQoajYbg4GACAwMJCgoiPj6ehIQEJBIJMpmM6tWr4+TkhJOTE3ny5LFIqErxTzJD6tVimeOK0YgIqGaGhI7OMhlVJRK+iI7GY8UKxk6YgL29feaNTAFbW1sK5s3L/piYVB1SrCBw2mCgb/GeFrHhU0cmUVI6b00evrpMcOzjtxxSA5du7L/3U6r7zZYmxyFlggoVKvDs2bM0p/QaDAaGDh3Cpk2bWbKkEBMn5rP4qujfKBRifvzRkU6d7OnU6SENGtTlxInT7+2Ye+jQIYYMHUp0dAzVa7Whf6POFChk3qQOW7vclK1YJ8XnWnUayROfq1w+s5sB9y6zQSpjvUKeHLLJKxbzu1JJN4mEgX/9RbMmTTh64sR7VRFe87rF+ZtORalUUqJEiWztIvw6VKi3UABjvV5PM4kEWzM50+JiMeeUSurExbF21SrGT5pk9uzF19SuX5+9Bw/y0mSiQAphu2MGA3oE3Aq3TuHs/y6CILD//lL23/sZiVhKt8rTqFe0y1vHFLEvS16rIm/JQmUlOYWxmeRNZxQVFZXqcUajkb59+7Bly2a2bnVm8uT8We6M3sTV1YoLF4ojk4XToEHdZC26N4mKimLAgAG0a9cOhzxFmfj9djr2nGR2Z/QhxGIxZSrWYcDYnxk24Vfu2ThQSa3GXafD9MYNu4tMxhmFgqe3b9O2Vas0KXwr/8nWMmSBqGl6eJ0QorLA6uuG0chVk4nRZk5ucRaL+UOhICQkhBMnTph17DepWbMmIomENakUD/9hMOBiX5Z8Ns4Ws+FTRCQSERrrS7NSA/i1wy3alRvzzupeJBJRy7k9f58+a3H5qpTIcUhmwtPTk0qVKqXYMlsQBEaOHMGuXbvYubMovXp9HCmozs5yzp0rhq1tPM2bf0Fw8P97IB06dIjyFSqwa/deuvX7loFjfsYhd4FstDaJkmXdGDd7B1Xqd2CMVssXGi3P3tCnc5VIOCKXc8fbm/Hjxn1wvNcTig9JJGU1MTExAOS1gENaotPhJBLR1gJ7U64SCdPlck4cO/bW98mcWFlZUbN2bRYaDPj/S5tQEAQOm6CaU9pC6J87YfFvr3RG1fGgv+t8bBWp7/O5FmlNyItg7ty5Y2nz3iHHIZmJjh07YjQa6dGjxzuz7aVLl7JmzVrWrStCly4O2WNgKhQoIOPECReMxld8+WUb4uPjGTRoUPKqaMLMrdSo9+VH1VVTqbSmU+9vkldLFdVqNr4xW64pkbBUKmXtunUcP378vWPZ29tTrFixZI20j4WgoCBkIhEVzZxh96fBwO8GA3MUCqQW+kxnyOWUlEg49KflWpC0a9cOhY0Ng/8lRPtMEIg0GSiXr7bFrv0pEBj9gPmnuzL+zxpEJoYmP56W33GpvG6IRWKuX79uSRNTJMchmQlHR0d27dqFk5PTW/2BHjx4wIwZ3zFxYj4GDMhYkzJL4+ws58ABZ27fvkPVqtXYsmUrXftO/2hWRanxerVUsXYbBmo0/KTTJT83TCajqVzOkAEDiIuLe+84NWrUsNhsPqMEBgZSQZK+BnQfIlIQGKbR0FYiob8F25crRCKmSCQ8ePjQYi0/lEol3Xr25JTBwM9v/N68/xGlLZ6nmkWu+ylw6KEHkw7VIST2MWPrriaXKn3lEEqpNU65y2SLbmeOQzIjDRo0YPPmzckaUEajkYED+1G0qJQff8y4MkFWULy4nEKFFfgHBDJwzFJq1m//Ua2KUkOptKZrv29p2mYAU7RavvtnxiwSiVgjkxHyj3bd+3B1dSUoKOij2kcKfP6cGmZ8/zWCQDe1Go0gsEqptPhn21Mmw04s5uLFixa7Rrly5fjiiy+YrNWy/h+n5G0ykU9VAHtlPotd92OnbL7a9K8+j1++9KJO0Y4Z+qxd7KvidS3rHVJOlp2FuHnzJtu3b+faNS8uXCiFSvXx+v74eCOtW/sRFSVlxKTlOBdLXf/uY0QkEtGyw3CUVrbM3/MrEmCOQkExsZgOUikeK1bQvXt3rl27liSP5OVFaFAQWo0GmUyGTKlEo9Fw584dqlevnt0vh4CAAELCwmhnJtmgREGgs1rNJaOR4yoVhS0k2PomViIRfSQSdnp70759e7OMKQgCOp0uOQIhl8v58ssv0ajVDL58mQhB4KbRRNF82f8ZZicl8lSnRJ7MvQfFcldhx519mEwmizRaTI0ch2QBBEGgX79+3L9/j9Gj81K37sfbS0mrNdGpkz+3bhsYOt4DJxfLNVezNI2a90IwmZi7zx17kYiJMhkNRCL2PXpEwQIFMBiNOEilVBeLqSgIKAA98BJQSiScO3fuo3BIFy9coJBEQlszpE37GI3002h4aDLxl0pFAwuG6v5NXYkE95iYZLXw9CIIAn5+fjx8+JDAgACCAwKI+VfmZP5cuShUtCglS5bkm6dPsRHLaGjrYqZX8N8lv3VRtDot4eHh5M+fP8uum+OQLIBIJKJatWrcv3+PuDjLNlrLDEmOM5Cz59QMGrvsk3ZGr2ncsg8adTyTj2zCQ6fjmSDgIhLxtVRKe6WS4iJRiiGMPXo93fz8CAkJoVChQtlgeRIJCQl4eXsjNZnYYjDQXyrNUMjFIAgs1emYqdNRXCzmrJUVrhaqC0qN19cLCgqiaNGi+Pj4EBcXh8lkwtramnLlyqVYwKzVavHy8uLy+fMEvXhBHomEGiIRncViyimVWJGk4xED3I6P5/q9ezz+J9su0aQnQReNSTAhFn28UYmPHQdV0t5xSEhIjkP61ElISOCPP/bz1Vf2/PBDxtSes4Jt26LYtSuKPsN+pETp7F8ZmIuWHYYTFfGCO14n2CKX00sm+6BWWwepFCeJhIP79zNi1Khs2z87dOgQcrmctm3bMnDPHhbJ5YwUiegnk+GQBptCTSbW6vWsEgRC9Hpqi8WcsrKySD3ThyglEqEAjh49yosXL1Cr1SiVSiQSCQkJCUilUqpUqUL9+vWT1fMfP37Mzm3biIqJoZ1UyjqVimYSSeqf3z+1VGpBYLfBwAqdjrPPdhAW68vIeqtwtM2+4uZPmdeJECEhIRbtG/ZvcqYQFmDHjh3ExsazcGEhihXLGlmg9BIaqmfs2FCq1WxOZdem2W2OWRGJRHTsOQlbGwe2GE2k5VYsE4lYK5fz6MkTLl3Kmrbr/+bx48dcunSJJUuWsHv3bs6dO0flDh2YZDBQSK2msUbDZI2GHXo9fxsMXDQYOG0wsFGvZ6xGQx2tFufERBaKxbTp3x+VUklXmSxbnBHA7wYDepGIuLg4Jk2alNzWJD4+noiICBYtWkRUVBTLly/n0KFD7Nq1Cw8PDyomJPDI2pqDKhUt/pGJ+hCqf5y2l7U1p1UqNJE3mfJnbQ4/9MyWAs9PndcrpBcvXmTpdXMckpkRBAF39xW0beuAi0uSM3r1ykCvXn6EhFi2LXVaEQSB4cODMAnWtO8+KbvNsQgqK1s695/BcYM+OQPrQ7SQShksk/HngQMWS1dODY1Gw86dO2nUqBEjR44EkrI2d+7aRUBgIHMWLiTvl1+yN39+emk0NFGrqa9W01StZqBGwx47O4p37crylSsJDg1l9Zo1iESiNDljS/C7Xk9vjYY+ffsSFBTE3LlzcXJySn4+d+7cTJw4kSdPnjBjxgxOnTjBjcuXcVcoOK1UUjITG+lNpFLuWikYJjGxwWsq665NwiSYPnxiDslIxTKkEhkajSZrr5ulV/sPcPv2bW7dusu8ecWTHzOZBM6eTeCrr/w4c6ak2dtLpJdt26L4888Y+o1ciLWNZUQwPwbKVqxDjTptmHD1GC2kUpzScJP7WaHgmFrN+tWrGfX11xnajE8vBoOBTZs2odFo2LBhwztZTY6OjkyePDn5/6ioKCIiItDpdMhkMkqXLs2cBQsYOnToW+cp5XLUarXF7f83fiYT/XU6+vbuzcaNG98b/kxMTOTU8ePYicUcVSqpZaZ9LmuRiBVKJVXEYoY9WQfA4JpLP4lSho8FiVj6Vk1lVpCzQjIzly5dQioV88UX/+8LU6CAjD17XPD2TuT8+fhstO7tUF3Fqo2y1ZasoN1X45HY2DNEq0tT6MZOJOKYQoH61StWe3qmSQ8vM+j1ejZv3oyvry9//PFHmjoR58qVi5IlS1K+fHlKlSqFra1tijqKJUqU4KEp61cGq/R6VFZWeK5a9V4HIAgCA/v35663N8fN6IzeZLBczmqFnGNP1nL4oYfZx/+cEQSTxQRyUyPHIZkZb29vKlWyRql8+62tU8ea58/L88UXaWuLYCmmTQv9rEN1/+bN0N2+NBa+lpdIOKlUEh8aivvy5SnqE5qD2NhY1qxZw6NHj9i/fz9ffPFFhsapUaMGf/zxxzuPu9aqhVcW31C0gsBak4kBgwd/cHW5a9cu9uzbx3qZjBoWtHOwXM44mYztN38gJPaJxa7zOSEIAgajPlNdjzNCjkMyM97eV3F1TVlFuWDB/z+eHengYWF6dvweTYPmfT/rUN2/KVuxDsVLVOJXQ9rf82oSCRcUClQRESxdvJgzZ85gMtNqQxAEvLy8kjf1jx07Rps2bTI83qhRo7h48SK3b99+63E3NzcearXEZuGm/jmjkXCDgcGDB7/3uJcvXzJ6xAi6yWR0M7PqeErMVyhwEgl4XhyO0fTxlmJ8LCTqYzAJJos2W0yJHIdkRjQaDffvP8TV1eq9x/38cxhubo+JicnaH8b69ZGAhBp122bpdT8Gajf5irMGPT7GtL/nZSUS7qhUjBGL+ePgQX5dtoxHjx5lyjEFBASwfv16tm7dSrt27fDx8aFRo8yFTq2srJBIJHw/c+ZbtjVt2hREInZl4T7Aq3+cX/Hixd973OLFizHFx+OeRY3grEQi1sulPIzw4nrQX1lyzU+ZyMSk7DpHx6yVPMtxSGbk3r17GAxGqld/v+RL+/b2vHypZ+DAgCxLSTUaBTw8o6ji1gIr6//O6ug1Fas1ws7aHo903pytRCKWKpWcV6mwDgnB09OTRfPm8ffff39QtPU1iYmJXL16lV9++YWff/6Z6Oho9u7dy++//07evHkz8nLe4tfly3ERifjzzz8ZN25cslMqWrQobVu3xkMQPqrU58TERDasXcsQkYh8WShL01AqpY5EzolHq7Psmp8q0eokh5TVReI5WXZm5PXGcoEC7w9BlCypYPPmouzeHY1OJ6BQWD7z58iRWAIDNHTs3eXDB3+GSKUyajTqxKajW1ggCOnulFpPKuWORMIFoxH3mBj2HDzIgQMHyJ07N4ULF6ZIkSLY2NgglUoxGo0kJiYSHBxMSEgIL1++TNLba9mSlStX0rp1a7NtFvv6+nL0+HHWKxRoJRJGrlzJQx8fvpk2jaZNmzJy9GjaHj7MBYkkS2SD8v3zvvr6+lK5cuUUj/n999+Jjo1lRBZkMP6b0TIxfV6eJzjmMYXtS2f59T8VItVJLSuyeoWU45DMyOsUW6Xywze79u3tad8+61Yq7u4ROBcr81nIA2WUWg06cubIJrbp9YzIQKhIJBLRQCqlgVTKE6OR0omJ1K5dG41Gw5UrV4iJicFkMiESibCxsaFixYp0794dNzc3GjRogIuLi9lf0/r163GQSOgulaISiSgiFjPt/HlanD5NqWLFaNK8OY758jE8MpKbZm5nkRINJRIcpFLWrVvH8uXLUzxm986dfCGTJbegz0q6SqWMFEm4EnCQLpWmZPn1PxUCYx5S2LEIVlbv334wNzkhOzPyOmc/vXVGN24kEhSk+/CBGcTPT8uxY7HUbtjNYtf4FHDIXYDylevhYcx8ckIpiYSScjklS5bk1KlTREZGYjAY0Ov1GI1GYmNjuXTpEsuXL6dv374WcUYAF86epSn/b3XeVirljkLBeZWKmkFBXN+0CVl0NI+MRuboLPcde008oDOZWL9+PfHx75Y4CIKA9/Xr1MumeiCFSISbRMyzyJvZcv1PhedRt3Cr4Zrl181xSGZEqVQCoNWmPV5vNAr07OlP165+aLWWqRk5ezYBQYCK1RpbZPxPiYquzbhr0BNphj0VV5OJG2901RSJREgzKIaaEZ49e8aNGzdw+9dKQyQSUV8qZatSyQ25HH+lktlyOYt0Oo5YsOeTXhDop9UiVanQ6/WMGDHinb2rwMBAXkVFZbnQ65u4ieB5eNZ3Q/1UEASB55G3cHXLcUifNK8b86nVaXcsEomIrVuLcvOmmhkzQj98Qgbw9k6kgGMhlKqPtw1GVlGkaBkAbqQj2y41HEUiIsPDMz1OeomOjuabb76hbNmyxKvVabq5T5PLaSuV0kWt5qQFnJJeEOij1XJCENi1dy+bN29m27Zt9O/f/y35mfv37wNQJRvCda+pKpHwSv2SBF1MttnwMfMy/jlxmihcXbPeIeXsIZmRIkWKAODrq6N48bSLqtaoYcWOHUU/mC6eUa5f1+JY5L/b0vlN8uZ3RilT4G000iyTm/wyQJcFYbA3iY6OpnTp0iQkJND7H2ke5zTc3KUiETuVSjqr1bRVq/FQKBgkk5llNffiH6mgM4LAzl27aNmyJQAmk4n+/ftz9OhRhgwZwvDhw5MzE9OiXG4pXl9ba0jEWv7fyzj9ELdDTyOVSKlbt26WXztnhWRGSpYsia2tNV5eiek+t3NnB4oWNX9NhtEocPt2IoWLljX72J8iYrGYws5l8DZDkasWUCiyVs3dwcGBRYsW8fTpU3r27AlAWi1QikQcUKnoI5MxRKulrVpNUCbeB0EQ2KHXUzYhAS+VikOHD9OpU6fk53v06MGdO3fo2bMn7u7uuLi40KtXLyB7bzyvr20ScgpkU8I7+DANGjTEwcEhy6+d45DMiFgsxtXVFW/vjAtahoXpGTDAn6go84RVHj7UoFYbKeKc45BeU8ilPNfNoIMdABSwcFrs1atXWb367bqZgQMH4ujoiPyfTMH0VFbJRSLWKZX8qVJx22SifEICEzWa5AZ3aUEvCOzR62miVtNLoyEWOPDXXzRv3vydY8uUKcPy5csJDg5m165dDBw4EEhqq55dvL62XGKeFvGfE2p9HPdenKNDR/O0nU8vOQ7JzLi61sDbO+NhnPh4E3/8EUvfvgGYTJn/0Xp5JTnHws5lMj3W50LhomXxM0Nig7dIhFutWmay6m2ePXtGjx49qF27NuvWrcOYwp7X66LakAysctpJpdyztmaUXM5mg4EyCQl8kZjIbK2WvwwGQkwmtIKAURBIEARuGY2s0+kYpdFQNCGBbhoNRmCaTIZAUnTgfdjY2NCtWzfGjRsHwINsEH19zQOTCWupNbaKrJXF+RS4GXICvVHHl19+mS3Xz3FIZsbV1RU/v0TCwzO2wileXMG2bUU5fjyOa9fSH/r7N3fuqMlXoGBOQsMbvHbOdzOR2BBmMhGo01ls43f06NGcP3+e9evXc+nSpRQLacuWLYtSLudGBm/uuUQiFioUBFlbs1mpRA6s0On4Uq2mcEICyvh4pPHx2MTHUy0xkaFaLX8bjXSSSrltZcV5KyskIhEF8+ZNcwFl2bJlUSkUZgmZZhQvk0Dx3NVyWlGkwKmnG6ldq84HpZ8shcUd0oIFCxCJRIwfP97Sl/ooaNy4MRKJmJ07320HkFZat7bD17cctWtn3onExhr/k1JB78PK2g6A2EyMcchoRCQSUadOHfMY9S/WrFnD48ePGThwYKqqDlKplCqVKuGVyYxBpUhEX5mMo1ZWhNvY8NzamgNKJZuVStYplWz7Rzop1sYGH2tr3JVKKv9jk5cg4FqzZpqvJZVKqVq5MtfNkOWYEQRBwEsQUSxv1meQfewExzzmTujfjBk7OttssKhDun79OqtXr05VQuRzxNHRkY4dO+LhEZ0p/TAnp/8nOKQnjfzfqNUCUpkyw+d/jkhlSe+tOoOfjyAIuJtMtGrR4q0uqBkda/fu3dSsWZPo6Ojkx4sUKZKm5oC169fntEiE3kx7MiKRCBexmA4yGX1lMgbJZPSSyagvlWLzrxVFvCBwyWSidjqdcos2bfhLELJUhfw1F4xGgow6qjhmrNXH58zxJ+vIkzsvXbt2zTYbLOaQ4uPj6d27N2vWrCFXrlyWusxHyahRo/HxSeDs2cw345s//yUNGjxBo8mYU9JoTEilWZsJ9rEjkyW9HxltznzdZMJbp2P02LGZssPb25t69erx1VdfkT9//jSLtb7JgAEDCNXr+dOCBa+psV2vJ8Fkom/fvuk6b+jQoWgEgS1Z3I0UwENvoJBNUSoW/PybU6aHOG0kZ59vY+iwIVmeOfomFnNIo0ePpm3btjRr1uy9x2m1WmJjY9/6+9Rp0qQJZcqUxMMjMtNjtW5ty/37GsaODcrQ+UmT0JxY+Zu83jvIiIs3CgITDAZKFy9Oq1atMmVHaGgoarWakydP8tdff2VotVW1alXq1qqFRxbvyQiCgLsg0K5tW4oWLZqucwsXLkzHDh1YaTJhyMJVUpDJxF6DgeZlhiMW5Wyfv8n+ez+DxMSECROy1Q6LfCq///47N27cYMGCBR88dsGCBdjb2yf/ZTYE8jEgEokYNWos+/fH8PSpNlNjVatmhadnEbRaAYMh/T9epVKM0Zg5Gz439Lqk9yMjSb/L9Xou6/Ws3bgx3YrdkZGRbxXStm3bFm9v76S+RZlg7PjxnNLpOJGFq6SdBgN3dDrGfP11hs6f9u23PDYY+CmLCosFQWC4VoeNIjdNSvR557lrgX+h1qd/hfo5EJEQzLEnq5g8ZRL58+fPVlvM7pACAwMZN24cW7duTdZ2ex/Tp08nJiYm+S8wMNDcJmULgwcPxsmpCIMGBWc6fXvAgDxs2uSMVJr+lY5KJcKgz2hw6vPEoP/HIaUzy+q20ch3ej1ff/01DRo0SPN5Wq2WpUuXUqJECVatWpX8uEgkQmwGCZ3u3bvTtHFjBhsMWbIv89JkYozBQLeuXVOsPUoLbm5uTJ4yhR8MBu5nQYLDFoOBwwY9Q2u7Yy13SH78Sfh1Zh5vyZKzvbgS8G4b+P8CO+/Mx9bOlokTJ2a3KeZ3SN7e3oSFheHq6opUKkUqlXL27FlWrFiR3CvmTRQKBXZ2dm/9fQ5YW1uzfv0mzp+P5ddfM6939jrMdONGIhERaZ8J29iIUav/mzO/1FCrEwBITw7jI5OJ5lotpcqWZf78+Wk+z9fXl7JlyzJ16lR69uzJV199lU5rP4xIJGLthg1ESaWM02ot2ozPJAgM1+kQ29nh7uGRqbFmz55N8eLF6aHXE2VBm+8YjYzWaChqX54aTv9vFf8k/DrfHm2KRh/PjKYHaFKit8Vs+Fi5/+I8Z3y3MHvOrI/i3mt2h9S0aVPu3r3LrVu3kv/c3Nzo3bs3t27dMltjsk+Bxo0bM2bMGKZPf5Hp0B2AVmuiQ4fn9O7tj9GYth9wxYoqXr0IQafNuHrE50Zo0GMAKqZxdXLNaKROQgKRRiN3fXwoVqwYbdq0Yfny5clNGVOjaNGitG3blnv37uHh4UGBAgUybX9KuLi48KuHBxv1emZZKAwmCALjtFr+MBhYu2ED+fLly9R4SqWSvQcPEmJlRWudziJO6Z7RSAu9HrsCBQiMfcTzyDvJz5XM48Y3jXawqM35/2TWnVofj+e10dSv14CRI0dmtzmABRySra0tFStWfOvP2tqaPHnyULFiRXNf7qNnwYIFFCxYmAEDgtDpMrfxrFCI2bDBmRMn4li0KCxN57i6qjCZBEKCnmTq2p8TQf6PKCSVUeADDkkrCMzUaqmbmIhd4cKMmziRgQMHUrlyZZ4+fcrEiRMpWLAgAwYM4MaNGwA8efKEy5cvJ48hlUpZuXIlZctaXrppwIABLFiwgDk6HVO1WkxmvMEbBIHhWi0r9XpWrVpF+/bmkZYpX748x0+d4olKRSOtlgdmDN8dMRhoqNNRsEwZLly+TIEC+Vl8rgd6Y5LDFolE1HBqi0T835kkv8n2W7OI1b1kw8b1Zgkdm4MctW8LY2Njw+bN22ja9Av69Alkxw5nJJKMZ701a2bLhg3ONG5sk6bjK1RQIpeLCfZ/hEuJ/0492PsI8fPBjdRv1npB4KDBwA8GA4+MRpq3akXz5s2RSCQ4OztTpUoVAGJjY7ly5Qr79+9n06ZNlCtXjkePHlGmTBmmTZtGvnz5aNKkSZr2Us3FtGnTUCqVTJgwgavAOpmMEpm82dwzGhmg13PTaGTDhg0MGDDALLa+xtXVlXMXL9K5fXuq+fkxRyplklyOJINKCtGCwEStlg16PS2bNaNnnz40a9aMl2EvEQSBrTdnMtBtkVlfw6fGtcC/OPpoNcuXL/+g7FNWIhIsGXDOALGxsdjb2xMTE/NRxDTNxf79++nWrSv9+uVizZoimXJK6cXV9SkiRUO6D5iZZdf8WBEEgTnjmzHVZGDmG/UWsYLATaORU0Yjq41GXhqNlHRxoVO3bhQuXPi9Y4aFhbF3716ePn36zh5pnjx5GDRoECNGjMhSOZYzZ84wqF8/wkJDmSWVMkwmwz6dN/hwk4mVej0LDAZKlCjBxq1bqZkOVYb0olar+f7771m6dCnlpVLGisX0lsneKchNjRCTiTV6PZ6CgFou5+fly+nTpw8VK1akTJkyLF68mDNnzjBmzBhG1nbni5Lpq5/6XPCPus/ME81p82Urdu3aafHVUXru6R/HOu0/QKdOndi0aTObNkXRq1dApsN3AC9f6hk5MpDExPePVaOGgtDA+5m+3udAZHgICZpEthoMNFarqatWUyIxEfv4eBqr1SwyGrFxcaFjx46069gRKysrDO9Jp/b29mbx4sW8fPmS8ePH4+Pjg1qtRq1Wc//+ffr168eaNWsoV64cO3bsyLLX2aRJE+4+eMDA4cP51mCgkFrNcI2GiwbDexUq4gWBvw0G+ms0FFGrWSgITJgyhRt37ljUGUFSg8slS5Zw+fJlSrZqxSidjkJqNf3Uan7V6bhkNBItCOgFAa0g8NJk4rjBwAKtlvYaDc6JiSyRSOgwcCD3Hjxg8ODBKBQKrl69yl9//UX58uUZNWoUQ4cOZc318TwMu2LR1/MxEquJYMn5npQqU4JNmzZ+NKG61+SskLKY/fv306NHd2rVUrFxY+F0NfL7N3fvqqlV6zFduzqwaZNzqmKRa9dGMHx4EHOWn0Yu/2/LCN3xPsXW1TPeeVwikiIWSxEEE0bBgCD838mLEJEvXwGcnAtTpEgRnJ2dKVq0KDdv3kzuiurh4YGVVcoNFhMTExk5ciSbN29m69at9O6dtdlcISEhrF27llXu7oSEhSERiSgvk1HRZMJGJEIA4gSBOxIJD7VaBKCYkxMjx45l4MCByariWU1AQACrV6/m6F9/cdfHB10qyg62VlZUr16d1u3a4e/vz+XLl7l+/TrSVBow6nQ6mn7RjLs3HzC76VEK25e25Mv4aNAYEph3phPhBl+8vK+nu6A5o6Tnnp7jkLKB8+fP069fb8LCQlm0qACjRuVFLM5YCG/r1kgGDAjgxo0yVK6ccqnnw4caypV7SJ9hP1LZNXNFmJ86O9bN4tndm4yp8xu5VAXJpXLERpHrrcp9k2AiThtJtPoFkepQIhNC8Iu+y7PIG/hF3UNn0CCXKdAbdNSvX599+/Z98KYtCAKDBg1i27Zt3LlzJ0uSHP6NwWDg1q1beHt74+3tzSMfHxLj4xGLxaisrSlfqRKurq64urpSqVKljyojVqfTce/ePZ4+fYparUYsFmNtbU3FihUpWbIka9euZerUqRiNRqZNm8akSZPeK4ETHh5OwwaNCAuK4oemh3G0LZGFrybr0RoSWXS2O89ivDl1+iS1LNQ2JSVyHNInQHx8PFOnfoOHhyeNGtmxbl1hSpTI2GrJ11f7wXPr1XvKy/CSDJ/kmaFrfA7Ex0Uxf2oHelb5gfblM6YwYDQZCIi+z43g41wL/JNnkUmlDB06dGT06FE0adIk1ZWqVqvF2dmZr776il9//TUzLyWHf+Hu7s79+/eZNWtWmtUGXrx4QaOGjYkIjWVmkz8/25WSWh/P4nPdeRZ9gyNHD9OwYcMsvX6OQ/qEOHPmDIMG9Sc4OJiuXe0ZOTIP9etbZ7hXi1ZrQqH4/2w/JETPmjURLF8eQVSUnkmzdlDA0cVM1n9anDm6hZN/rGNV54fYKvKYZcyoxBdcCTjAiWfrCYx8SJlSZRnz9WiGDBmSYnbdjBkzWLFiBSEhIdjYpC1TMod3uX37NpUrV850T6MXL17Q9ItmBPu/YGK9rZQvUM9MFn4cRCQEs+RCL14mPuXosSPUq5f1ry8nqeETokmTJty968PixUvx8spFw4ZPqVz5KZ6e4eluY/7996G0afMMtdrE6dNxdOvmj7OzD0uWxNClS39y5c7NlbP7LPRKPm5MJiNXzx6gbtEuZnNGALmsCtK67AiWtr7KrOaHya0rx/hx4yldsgwbN258J+tu2LBhxMXFcfjwYbPZ8F/iyZMndOnShapVq/L3339neryCBQty/sI5qteswpxTX3Li8frMG/mR8OjVVaYfb4RWHs75C+eyxRmllxyH9BFgY2PD+PHjefjwCSdOnKBUqWaMGRNC7tz3KFXqCT16+LFkSRinT8cRGKgjPNxAfLyRqCgDISF6bt9Ws359BHfuqDl9Oh5b27s0berL/fv5WLZsBcHBoaxZs4ZRI0dy4+oRtJrMd6L91Hh0/wqRkSG0LD3EIuOLRCIqFKjPxAabWNr2KoWl1ZKKaCtV4eTJk8nHOTs7o1AoePnypUXsgKQ09IULF1KxYkVy586NnZ0dLi4ujBkzhvv3P91sy4MHD1K+fHmuX7/Oli1baNTIPC0kcufOzbHjRxk5agSrr41n9bUJaA2frrKJIAicfLKR2SfbUr5KabxveFG1atXsNitN5ITsPlKCgoI4c+YM3t7eeHld5ebNWyQmpi6SKhKJKFOmBFZWdkgkEpYtW0adOnXeCmkEBARQrFgxOvacTO2GnbLiZXw0rF8xEd0LNQtbnc2y1tVPwr3YemsmPi8uMnToUH766Sfs7OywsrJi/vz5Zu+irFarGTduHJs2bUIsFtOtWzcqVKiAVColKCiIHTt28PLlSxo3bsz69espVqyYWa9vaaKioli3bh2jR49GpcqIVvuHWbt2LWNGjyGvlTOjanlSOp9lU93NTURiCGuujcM76BhDhw5l5cqVyOXyD59oQXL2kD5DjEYjDx8+JDAwEI1Gg0ajQSaToVQqcXBwoHLlytja2iYLa6Z20+3YsSMXL3kxfuYW5ArL/Kg/Nvx97+KxeDgj67i/03rA0giCwIkn69l6ayZ58+Xml+U/07VrVzZv3pzuxnbvIz4+nlatWnHjxg1mzZrF4MGDyZPn7dCkTqdj//79fPvtt8THx3Pq1KmPVs7LZDKxc+dOypcvn6yMkVU8ePCA/v0G4O3tRbtyY/mq8rcopB/3b0UQBM4+286mm9OxtlOyZu1qvvzyy+w2C8hxSDn8w82bNylVqtRbm+dPnjyhcuUquNZpR4ce2S83b2n0Og3L5g7AzpSXeS1OIBFnj1pWWLw/q66O5W7oWcQSMaGhoZkWJ32NyWTiyy+/5Pz585w4ceKDKb2vXr2iWbNmREZGcv36dQoWLGgWO8zFuXPnmDx5MtevX2fOnDnMnJn1CiMGg4Gff/6Z72d+j608D10rTKdxid7Z9v15H/denGP7nR94EuZN3z59WbZ8Gblz585us5LJSWrIgYSEBJo3b87QoUPfakdQqlQpFiyYz8Uzu/F9fCMbLcwajv2xhuiIF4yp81u23kzy2xTluy8O0KXSNxiNRsaO/ZrERPPs5Z06dYrDhw+zbdu2NNWX5MuXj8OHDxMXF8eyZcvMYoO5ePnyZXKPpXPnzmWLM4IkUdxvvvmG+z73ad6uEb9dHcvkw7W45L8Poynr28WnxJNwL+ad6cjsk+1wcJZw+vRpNm/Z/FE5o/SSs0L6jNm1axfdu3fH3d2dUaNGJT9uMplo2LAhj574MX7G5xu68/e9i8eS4fSqOouOFbK3NfObXPbfj/uVEVSoWJ4jRw9nuktnp06d8PX15fbt2+naH5swYQJbt24lKCjovUWkWc2tW7eoXLnyRyVrc/PmTaZP+5Zjx4+Sz7YITYsPpGnJ/jiosrbDqtag5pL/Pk48XcOTVzcoXaoMCxbOp1OnTlm2N5peckJ2OSSzcuVK2rdvj7Oz81uPf+6hu48lVJcazyNvs+BsV/IXzsXpM6coVKhQhsYJDg7G2dkZd3d3RowYka5zHz16RNmyZdm2bRu9evXK0PUzg1qtZvny5YSGhrJ8+fIsv35G8Pb2xsPDgx3bd6DXG6heuBU1i7SlWqGW2CnNV07wJjqjhnsvzuIVdIQrgfuJ00TRskUrRo8ZRZs2bT4qRY2UyHFIOaSJZcuWMWHCBIZNXEnJMq7ZbY5Z+XP3Cq6c2cfiNhcoYl8mu81JkdDYp8w5/SW5Clhz7sLZDO3lHD9+nJYtW/Ls2bMMZc2VKFGCbt26sXDhwnSfmxm2bdvG9OnTCQ0NZcyYMfz8888f7Qw/JaKioti4cSO/b9/JNa+riEViyhaoTcX8jSmeuyrF81QjlypjzRjV+jieR97hWeRNHry6zJ3QU2j0iRQrWpwu3TozfPjwj6plxIfIcUg5vMOLFy9YsmQJCxcuRCaTAUmhu6bNmnHtmhfDJ3rgWOTT+ZK/j0tn9nDg96X0qz6fL8uPyW5z3ktonC+zT7WhgFNuLl2+iL29fbrO37dvH126dCE8PPydrLq0ULVqVerVq4e7u3u6z80MPXr0wGAwsGDBAkqVKpWl1zY3oaGhHDp0iD/++JML5y8QFR0JQB4bRwrblsFeWYBcqoLkVhXEWu6ARCxFhBijoEejTyBK/YIo9UuiNKG8SvQjOPopgiCgVChxre5Gu/Ztad++PeXKlfuknPZr0nNP/7jiGDlYDF9fX1asWAHA0qVLARCLxRzYv59GjRuzbsV4Rkz2JG9+p+w0M9PcuHKUA78vpW3Z0bQrNzq7zfkgjrYlmNHkD2aeaE6P7j3569Cf6QrBvN5nWbFiBWKxGIPBgEKhoEiRIri5uVG2bNlUVa8B4uLisLW1zfTr9stcSwAAHbxJREFU+BBRUVHkypUr+f8tW7YkT4w+dRwdHRkyZAhDhgxBEAT8/f3/qR/0wtfXl5CgYO6EXOeFbwga7du1hBKJhAL5HXF0dMS5QiHqF21FtWrVcHNzo1y5cu/97D5HclZI/yFWrFjBpEmTePDgwVtL/rCwMOrXb0B4ZCxDxq0gX4FP0yndun6C39fPplGxnoys7f5JzSZvhZxkwZmuTJ4ymUWL3t/NNCwsjPXr17NlwwYePHmCIAgoRCJyy2RISWq9/kqvRwBUCgX16tZl+KhRdOjQ4S0nkBV7SC9fvmTWrFls27YNHx8fihQpYpHrfAoIgoBer8dgMGAymZDJZMhkso8qecMS5ITsckgRQRB4+PAh5cqVe+e5oKAgmjZrxosX4Qwa+wuFnD6tMMqVc/vZv30JDYr1YFRt948uiSEt/Omzks03vk3VQQQGBjJ92jR27dqFxGSim0TCFxIJrmIx5cRipG844NcdcL1NJvYLAhd0Ohzz5WPcpElMnDgRmUxm8Sy7bdu2MWLECKRSKTNnzmT06NEfVTZfDllDjkPKIU0YDIa3QgKvXr2iRcuWPH78lJ6D51CmQu1stC5tGI0GTh3eyMm/1tG6zAgGuC18q7fRp4QgCPx6aSi3Xh3lvs89nJyckh9fv349E8eNw1qnY5JYzACZjDzpWAHeNhpx1+tZbzBQuWJFFi1dSrdu3Rg5ciQLFiywyOu5cuUKO3fuZObMmZ90bUwOmSPHIeXwQaZOnYqvry+7d+9+K7QVExNDt27dOHHiBDXrd6Bd17EoVdbZaGnqvAh5xu6N8wgKeEj3yt/SueKUTypMlxIJumgmHa6FW90qHDl6mMTERHp2786fhw4xQCbjF4UCh0y8Ri+jkYF6PT56PXYODjx48MBsSg2nT5+mRo0aWbInlcOnQ45SQw4fpHbt2uzduzc5weE19vb2HDt2jN9++437N0/xy9w+PPa5mk1WpozRaOD0kU2s+HEApmgD81qeoEulbz55ZwRgLXdgWI0VHDt+FE9PT1o2a8aZo0f5Q6Vig1KZKWcE4CaR4KVQMFYmIzo6mg0bNmTa5vv379O2bVuaNm3K1q1bMz1eDv9dclZI/2GmTZtGREQEq1evTvFm7ufnx+DBgzl9+vRHs1p6c1XUvvw4vqo8Hbnk3UZ4nzrul0dy0X83SpOBk0olNc1c/CgIAnN0OmbpdKxYsYKxY8dmaJwbN25Qo0YNXFxcWLRoEV26dPksJgY5mI+ckF0OacJkMiESid57AxEEgdWrVzNp0mTkCivqNO5GjXrtsLZxyDpDgRfBvlw+u4/rF/6kgE0xRtfxpFTeGllqQ1YSrQ5j1IGKdBUZ2G6hVguCIDBRq2WlycS169epVq1ahsbYvn073bp1y/Y2Bzl8nOQ4pBzSzZ07dyhbtmyqNxU/Pz++//57du7ahWASqOzWlDqNuuDkUt5iM2KDQc+9m39z+cw+nvvewkGVn5alhtK+wrjPclX0b36//SOH7v3EEysVRSyUGqwTBGrqdAilSnH9xo33OhWj0cjmzZtRqVT06NHDIvbk8PmRs4eUQ7qIjIykfv36TJo0KdVjXFxc2Lx5M8FBQcyb9yPhIQ9YuXAIy37sx9ULfxAT/costphMRl6EPOPYwVUsmNaJ7Wu/RxVvw8QGm/Ds9ICulaf+J5wRQPtyXyOX2jJbp7PYNeQiERulUnx8fFi8eHGqx504cYLq1aszaNAgLl68aDF7cvhvk7NCygGA3377jZEjR7Jjx440zX5NJhPHjh1j3LhxPHnyBAB7h7wUcipDYecyFC5aliLOZbBzyJfqCspkMvLqRQBBAQ8J8n9IsN9DQoKeoNOpUcpsaFy8Fy1KDcHJoaxZX+unxIH7v7D75myCrFXks2AB5ViNhp02NgSGhr5TK6TX6ylXrhwFCxbkp59+onbtj78cIIePh5yQXQ7pRhAEFi5cSJ8+fZLrX9JCYGAgLi4utGnThipVquDl5YWXtzcR4eEA2Njao1BaI5MpkMrkGA16NBo1gsFEYmIMOn2SlEpBu+IUz1WNEnmqUTx3VUrmdUUp/TjTzbOSOG0EI/aWZo5UxFQLFpU+NBopl5iYXJRrMpneUhAIDQ2lYMGCOQkLOaSbHIeUQ5bi7u7OmDFjmDFjBnPmzAGSlB+8vb3x8fEhMTERtVpNQkICmzZtJr+yODWc2mIjd8AlV2WK5a6CtTx9oqL/JVZeGo6f3x58rRRILOgQmmm1JFatSovWrTly5AgXL178z2mp5WB+csRVc8gUoaGheHp6MmvWrDTpbI0ePZqEhASmTp3K6dOnGTNmDF26dKFjx4507NgRSEoPnjp1KhqNmtFNPCmep6plX8RnRMvSQ/n22Q6OGaW0saCDcDaZ2HDtGt63bjF+/Hj0en2OQ8ohS8n5tuXwDrdu3WLu3LmoVCqmT5+epnO++eYbKlWqxJIlS+jVqxf58uWjbNmyyGQyQkNDefDgAVZWVhRxKJPjjNJJyTyuFLEpxj5tkEUdkv0/q6+dO3cmTyRyyCErycmyy+EdWrduzcyZM5k9ezYhISHpOu/06dPcv3+fQYMGUbRoUfLmzUvDhg3Zs2cPSrmKGkW+tKDlnycikYjqzu350wgmM0bYn5pMvBmxny+XIxWJCA0NNds1csghPeSskHJIkR9++IEuXbpkqLV2+fLl3+lAev78eSKjI6hRu7W5TPxP4VakNX/4LOe6SUatTKo2BJtMzNRq2WgwcFylotk/qy6VWIyTXE5AQIA5TM4hh3STs0LKIUUkEglVqlRJ/t9kMmVqvEOHDpHLOj8l8nxerdKzitJ5a2Ins+cvgyFT4xw1GCiVkMCfRiO/KhQ0+pdzUwEajSblk3PIwcLkOKQcPsj48eMZOXJkpsa4cvkqpfPU+WRbQ2Q3ErGU0vnrcNWUuZBdTYmEyXI5T62tGS2XI/tX1p4ePptOrjl8euTcHXL4IBUrVmT16tUZVoY2mUx4e3tTIndV8xr2H6N4nmp4mQTSWqkhCAKHDQbuGY3Jj+UWiZijUCQnMPz7+AijMafcIodsI8ch5fBBhgwZwuDBg/Hy8srQ+U+fPiU+IY7iedIv3pnD/ymeuxpRJgP+aXBIt4xGmqvVtFWr2ZrGMF+AIBBpMLwVqs0hh6wkJ6khhzSxatUqJBncTL958yYAxXPn3Ogyw2uHftNoxOU99WERgkDtxESKicX8oVLRLo2fm/c/KylX15x9vhyyh5wVUg5p4k1ndP/+/XQlOQQEBGCtsMNWkccSpv1ncFDmRyFWEPCBFVIekYjTVlbctbLiS6k0zXI/Z41GCuXPn6HMyhxyMAc5DimHdBEaGoqbmxtz585N8zkhISHktjZPm+z/MiKRiNzKvP9r796joqzWP4B/B2YYLuIoGOCoIHJcSaApA+YFjV8qZ5l5OaZmKmp1VppcRIzETE1NyPJaBh60qHSp2DmkRFpRImoeAwcJhBQvJIhw8MZFLjPMzP794ZEjisjAzOx34PmsNX/My4zvdztrzzPv++53b1x/oCBpGMMOtRrvPDQyboSlJcR6TDNUyxi+Zgxz5s83VFxC9GbwghQTEwM/Pz/Y29vDyckJU6ZMwYULFwy9G8JJz549sWLFCqxZswY//PBDq95TWloKmZQKkiF0s5Wj9L9HpykaDQbW1mKRSoWbjLXrptn9Gg0qtVosWLDAUFEJ0ZvBryGlp6cjODgYfn5+0Gg0WLFiBQIDA5Gfnw87O5q9uSN49913UVtbC29v71a9vuTadXSjgmQQ3Wx7o+RONgDg64YGyEUi7LW1xZB23Cxbxxg2aLUY/9e/ol+/fgZKSoj+DF6QHv7VnJCQACcnJyiVSowePdrQuyMcWFhYIDo6utWvr6mphaO4ixETdR7WEjvU/vdU3JfW1rAB2r0kxCqVClcBHNy8uf0BCWkHo19DqqysBAA4ODg0+3eVSoWqqqomD2I+SktLsXHjxhbvjdFoNLC0aN90N+QeC5EYatwrQLYiUbuL0SmtFps1GqxZtw6enp6GiEhImxm1IDHGEBERAX9//8ee3omJiYFMJmt86LM4HOEvLS0NkZGR2LVr12NfIxKJwCCoZbfMGDNYpz2v1WKyWo1hQ4e2uHw9IaZi1IIUEhKCnJwc7Nu377GvWb58OSorKxsfxcXFxoxEDGzWrFl46623EBERgdu3bzf7GrFYDK2ufXOwkXu0Og0kBijuuVotAtRqOHt4IPn772ndIyIIRitIoaGhSE5ORlpaGnr37v3Y10mlUnTt2rXJg5iXLVu24NixY489Ldu9ezfUqCtNnKpjqlHfQTe0faJbHWOIVasxXKWC3NMTR48fh6Mj3R9GhMHgBYkxhpCQECQlJeHo0aNwd3c39C6IwEil0iZ39z98PUneqycqVLTGjiHcqrmGHm18b75Wi7FqNYJVKsx54w2k//ornJycDJqPkPYw+HF6cHAw9u7di0OHDsHe3h5lZWUAAJlMBhsbG0PvjggIYwzBwcFwcHDABx980LhdLpejov4Ex2Qdx626MuzTamFTX4+FEgkGW1i0OLChnjGkaDSI1emQplbDVS5H6ldfYezYsSZMTUjrGLwgxcXFAQACAgKabE9ISMB8ugu8QxOJRHBzc0NUVBSGDh2KSZMmAbhXkG7XlIEx1u5RYZ2ZjulwV30b4ydMQEpGBuLLyyETi+EjEsEHgJNIBIlIhDrGcIUxKC0scE6thoYx+A8fjr2hoZg6dSqkUinvphDSLIMXpNZOjU86pnfeeQenT5/GsWPHGguSh4cH1Jp63KgpglMXN84JzVdZ9WVodRqEhYUhICAAaWlpyMzMhPLMGSSdOYOKyko0aDSwlkrRSy6HYtgwvOnri9GjR8PLy4t3fEKeiIbWEIMSiURITEyElZVV47b715eu3M6mgtQOV25lAwB8fHwgkUgQGBiIwMBAvqEIMSCaXJUY3IPFqKCgAM7OzujpLG/8QiVtc+V2Nlz79KVRcaTDooJEjOby5cvw9vZGbGwsFH4KXLmTxTuSWSusyIafH61VRDouKkjEaDw8PLBo0SKEh4fD1bUPzt84DZWmjncss1TXcBcXyn+D/yh/3lEIMRoqSMSoPv74YyxatAgzZsyAqqEO58qO8Y5klnJK09CgVWPixIm8oxBiNDSogRiVRCLBtm3bwBiDh/tfkHntCBS9x/OOZXbOXDsMz6efgYeHB+8ohBgNHSERkxCJRBgz7gUoS76HVqflHcesaHUanC37AZP/Nol3FEKMigoSMRmZTIaKuhs4e/0n3lHMyplrh1FZewuvvPIK7yiEGBUVJGIyGzZsgEP3Hjhy4R+8o5iVny7twvBhIzB48GDeUQgxKipIxGREIhE+WL8WOaVHUVZ9hXccs1BSWYCc68cQHLKIdxRCjI4KEjGp+fPno5usOw6fj+MdxSx8fz4OPRyfwrRp03hHIcToqCARk7KxscHStyPw86UE3LhbxDuOoJVWX8bRy18h8p23aUJU0ilQQSImFx4eju4O3ZGYE807iqAdyFkPJycnhIaG8o5CiElQQSIm16VLF6xavRLHC/ehqCKfdxxBKrz9O04W/hNr1r5P64iRTkPEBLZeRFVVFWQyGSorK2k58w5MrVbD6xlviO864v0xR2BpYck7kmBodRqsTB0HS4da5J7LgVhM968T86XPdzodIREurKys8EXC57hQ/huOXKABDg/67o9PcfnWWSR8+QUVI9KpUEEi3IwaNQphYWHY9/taXK+6yDuOIBRXnMeBnPVYunQphg0bxjsOISZFp+wIV7W1tRjoPQgWd7vi/TE/QCruvNdLVJparEwNhJWDGtk5Z2Ftbc07EiHtRqfsiNmwtbXFgW8Sca3qD8RnhEFgv49MhjGG2NOLUFZ7CYnf7KdiRDolKkiEO4VCgYQvE3D8SiKS8z/hHYeLpHMbcerPJOze/TWeffZZ3nEI4YKumBJBmDlzJnJzcxETswou9u54zrXzzGz965//wv7f12H16tV4+eWXecchhBs6QiKCsW7dOkyfPgNbf30NymtHeMcxiYziFHx66u+YM3sOVq1axTsOIVxRQSKCYWFhgT17duOliS9h44k5yChO4R3JqP599VtsPjEXf5s6FQlfJsDCgroj6dyoBxBBkUgkSEzcj8lTJmPTiSCkXkzgHcngGGP48cJObD35GmbMmI59+/bS/UaEgAoSESArKyvs378PCxa8ifjfFuPzzLeh0TXwjmUQDVo1dmYswa7MpQgJDcHuPbupGBHyX9QTiCCJxWLExsZi0KBBCA0JRVFFPiJGfQ2ZdQ/e0dqsoq4cW36dh4s3M7Br1y688cYbvCMRIih0hEQEbeHChUj9ORVXKrIQnqzA6aJDvCPpjTGGX//8F5YeHoobmotIO5ZGxYiQZlBBIoIXEBCAP87nQWSlwabjQdh0fC4q62/yjtUqFXXl2HQiCFtPvobACWOQl38OI0eO5B2LEEGigkTMQt++fVFyvQQbN27EharjCE/xwaG8rVBp6nhHa1a9pgZJ5zYiPEWBS3dP4cCBA/jmmwN46qmneEcjRLBoLjtidsrLy7FmzRrE/yMeMpunMM1rOQI8ZkNsIeEdDQ1aNdIu78Y/8z7EXdVtLHxrIVauXEmFiHRa+nynU0EiZuvSpUtYtXIV9u3fBwc7Z7zQbz7G/mU+HO16mTzLjZpi/HwxAUevfIXKupuYPWs21q5bC3d3d5NnIURIqCCRTiUvLw+xsbH46suvUV9fB0Wv8RjmOgVD5OPQRdrdaPutVt3C2ZJUnC4+COW1H2Bra4f5r83DokWL4OnpabT9EmJOqCCRTqm6uhp79uzB5zu/gPLsGVhaWMLTeQQGuwSifw9fuDsMgo3Evs3/fq26CoV3cnDp5hlklf6I8//5N3RMB18fP/z9zTcwe/ZsdOnSxYAtIsT8UUEinV5JSQlSUlJw6FAy0o4eRb2qHiKRCL2790cfe2842vZCdxsXdLdxgcz6KYgtpbAQWUDHdNBoVaioL0dF3X9wu64Ut2qvo7gqF9fu3FtE0MbaBv/3wguYPHkSXnrpJcjlcs6tJUS4qCAR8gCNRoP8/HwolUoolUrk5pxDScl1lJWVoqb27mPfZ2fbBT1d5OjVW46Bg7yhUCigUCjg6elJsysQ0kpUkAhpperqaty4cQMNDQ3QaDQQi8WQSCRwcnKi02+EGIA+3+n0M490avb29rC3b/t1JUKI4dCNsYQQQgSBChIhhBBBMFpBio2Nhbu7O6ytraFQKHDixAlj7YoQQkgHYJSClJiYiPDwcKxYsQJnz57FqFGjMH78eBQVFRljd4QQQjoAo4yye+655+Dj44O4uLjGbZ6enpgyZQpiYmJafC+NsiOEkI6D6yg7tVoNpVKJqKioJtsDAwNx6tSpR16vUqmgUqkan1dWVgK41whCCCHm7f53eWuOfQxekG7evAmtVgtnZ+cm252dnVFWVvbI62NiYrBmzZpHtvfp08fQ0QghhHBSXV0NmUzW4muMdh+SSCRq8pwx9sg2AFi+fDkiIiIan1dUVMDNzQ1FRUVPDC90VVVV6NOnD4qLi8369CO1Q1ioHcJC7WgZYwzV1dWtmmLL4AWpR48esLS0fORoqLy8/JGjJgCQSqWQSqWPbJfJZGb94T6oa9euHaIt1A5hoXYIC7Xj8Vp7cGHwUXZWVlZQKBRITU1tsj01NRUjRoww9O4IIYR0EEY5ZRcREYGgoCD4+vpi+PDhiI+PR1FRERYuXGiM3RFCCOkAjFKQXnnlFdy6dQtr165FaWkpvL29cfjwYbi5uT3xvVKpFKtXr272NJ656ShtoXYIC7VDWKgdhiO42b4JIYR0TjSXHSGEEEGggkQIIUQQqCARQggRBCpIhBBCBEFwBcncl62IiYmBn58f7O3t4eTkhClTpuDChQu8Y7VbTEwMRCIRwsPDeUfRW0lJCebMmQNHR0fY2tpi8ODBUCqVvGPpTaPR4L333oO7uztsbGzQr18/rF27Fjqdjne0Fh0/fhwTJ06EXC6HSCTCwYMHm/ydMYb3338fcrkcNjY2CAgIQF5eHp+wLWipHQ0NDVi2bBkGDhwIOzs7yOVyzJ07F9evX+cX+DGe9Hk8aMGCBRCJRNi6datJsgmqIHWEZSvS09MRHByM06dPIzU1FRqNBoGBgaipqeEdrc0yMzMRHx+PQYMG8Y6itzt37mDkyJGQSCQ4cuQI8vPzsWnTJnTr1o13NL1t2LABO3bswPbt2/HHH3/go48+wscff4xPP/2Ud7QW1dTU4Nlnn8X27dub/ftHH32EzZs3Y/v27cjMzISLiwvGjRuH6upqEydtWUvtqK2tRVZWFlauXImsrCwkJSWhoKAAkyZN4pC0ZU/6PO47ePAgfvvtt1ZN+WMwTECGDh3KFi5c2GTbgAEDWFRUFKdE7VdeXs4AsPT0dN5R2qS6upr179+fpaamsueff54tXryYdyS9LFu2jPn7+/OOYRATJkxgr7/+epNtU6dOZXPmzOGUSH8A2Lffftv4XKfTMRcXF/bhhx82bquvr2cymYzt2LGDQ8LWebgdzcnIyGAA2NWrV00Tqg0e145r166xXr16sXPnzjE3Nze2ZcsWk+QRzBHS/WUrAgMDm2x/3LIV5uL+choODg6ck7RNcHAwJkyYgLFjx/KO0ibJycnw9fXF9OnT4eTkhCFDhmDnzp28Y7WJv78/fvnlFxQUFAAAfv/9d5w8eRIvvvgi52RtV1hYiLKysib9XiqV4vnnnzfrfg/c6/sikcjsjsZ1Oh2CgoIQGRkJLy8vk+7baLN960vfZSvMAWMMERER8Pf3h7e3N+84etu/fz+ysrKQmZnJO0qbXblyBXFxcYiIiMC7776LjIwMhIWFQSqVYu7cubzj6WXZsmWorKzEgAEDYGlpCa1Wi/Xr1+PVV1/lHa3N7vft5vr91atXeUQyiPr6ekRFRWHWrFlmN+Hqhg0bIBaLERYWZvJ9C6Yg3dfaZSvMQUhICHJycnDy5EneUfRWXFyMxYsX46effoK1tTXvOG2m0+ng6+uL6OhoAMCQIUOQl5eHuLg4sytIiYmJ2LNnD/bu3QsvLy9kZ2cjPDwccrkc8+bN4x2vXTpSv29oaMDMmTOh0+kQGxvLO45elEoltm3bhqysLC7//4I5ZafvshVCFxoaiuTkZKSlpaF379684+hNqVSivLwcCoUCYrEYYrEY6enp+OSTTyAWi6HVanlHbJWePXvimWeeabLN09PTrAbK3BcZGYmoqCjMnDkTAwcORFBQEJYsWYKYmBje0drMxcUFADpMv29oaMCMGTNQWFiI1NRUszs6OnHiBMrLy+Hq6trY769evYqlS5eib9++Rt+/YApSR1m2gjGGkJAQJCUl4ejRo3B3d+cdqU3GjBmD3NxcZGdnNz58fX0xe/ZsZGdnw9LSknfEVhk5cuQjw+4LCgpaNdGv0NTW1sLCommXtbS0FPyw75a4u7vDxcWlSb9Xq9VIT083q34P/K8YXbx4ET///DMcHR15R9JbUFAQcnJymvR7uVyOyMhI/Pjjj0bfv6BO2XWEZSuCg4Oxd+9eHDp0CPb29o2//GQyGWxsbDinaz17e/tHrnvZ2dnB0dHRrK6HLVmyBCNGjEB0dDRmzJiBjIwMxMfHIz4+nnc0vU2cOBHr16+Hq6srvLy8cPbsWWzevBmvv/4672gtunv3Li5dutT4vLCwENnZ2XBwcICrqyvCw8MRHR2N/v37o3///oiOjoatrS1mzZrFMfWjWmqHXC7HtGnTkJWVhZSUFGi12sa+7+DgACsrK16xH/Gkz+PhQiqRSODi4oKnn37a+OFMMpZPD5999hlzc3NjVlZWzMfHx+yGSwNo9pGQkMA7WruZ47Bvxhj77rvvmLe3N5NKpWzAgAEsPj6ed6Q2qaqqYosXL2aurq7M2tqa9evXj61YsYKpVCre0VqUlpbWbJ+YN28eY+ze0O/Vq1czFxcXJpVK2ejRo1lubi7f0M1oqR2FhYWP7ftpaWm8ozfxpM/jYaYc9k3LTxBCCBEEwVxDIoQQ0rlRQSKEECIIVJAIIYQIAhUkQgghgkAFiRBCiCBQQSKEECIIVJAIIYQIAhUkQgghgkAFiRBCiCBQQSKEECIIVJAIIYQIAhUkQgghgvD/3RIQMjqYChIAAAAASUVORK5CYII=", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "plot_atoms(atoms, rotation='45x,75y,75z')" - ] - }, - { - "cell_type": "code", - "execution_count": 97, - "id": "31279a2b-2b1d-4a14-9ecb-f80480c4b39b", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "90" - ] - }, - "execution_count": 97, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "len(pos)" - ] - }, - { - "cell_type": "code", - "execution_count": 96, - "id": "009e6768-d7bf-40df-bf5b-3b6d9b438ed3", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0 [5.6495789, -4.8958247, 3.5803382] [-0.45592105 1.35267528 3.58033819]\n", - "1 [4.7377368, 4.8958247, 10.7410146] [5.64957895 7.60117528 3.58033819]\n", - "2 [-0.2072373, -0.3761597, 4.9644969] [-1.36776316 11.14432472 10.74101457]\n", - "3 [11.5063952, -0.3761597, 2.1961794] [ 4.73773684 4.89582472 10.74101457]\n", - "4 [10.5945531, 0.3761597, 9.3568558] [-0.20723733 12.1208403 4.96449693]\n", - "5 [-1.1190794, 0.3761597, 12.1251733] [5.89826267 5.8723403 4.96449693]\n", - "6 [0.4893104, -0.2311945, 5.5165851] [11.50639523 12.1208403 2.19617945]\n", - "7 [10.8098475, -0.2311945, 1.6440913] [5.40089523 5.8723403 2.19617945]\n", - "8 [9.8980053, 0.2311945, 8.8047677] [10.59455312 0.3761597 9.35685583]\n", - "9 [-0.4225317, 0.2311945, 12.6772615] [4.48905312 6.6246597 9.35685583]\n", - "10 [5.1568144, 5.7698649, 5.4650282] [-1.11907944 0.3761597 12.12517331]\n", - "11 [6.1423435, 5.7698649, 1.6956482] [ 4.98642056 6.6246597 12.12517331]\n", - "12 [5.2305014, -5.7698649, 8.8563245] [ 0.48931044 12.2658055 5.51658508]\n", - "13 [4.2449723, -5.7698649, 12.6257046] [6.59481044 6.0173055 5.51658508]\n", - "14 [5.6415994, -3.5166558, 5.2933152] [10.80984745 12.2658055 1.6440913 ]\n", - "15 [5.6575585, -3.5166558, 1.8673612] [4.70434745 6.0173055 1.6440913 ]\n", - "16 [4.7457164, 3.5166558, 9.0280376] [9.89800535 0.2311945 8.80476768]\n", - "17 [4.7297573, 3.5166558, 12.4539916] [3.79250535 6.4796945 8.80476768]\n", - "18 [6.2859524, -3.7416018, 5.8803474] [-0.42253167 0.2311945 12.67726146]\n", - "19 [5.0132055, -3.7416018, 1.2803289] [ 5.68296833 6.4796945 12.67726146]\n", - "20 [4.1013634, 3.7416018, 8.4410053] [11.2623144 12.0183649 5.46502821]\n", - "21 [5.3741103, 3.7416018, 13.0410238] [5.1568144 5.7698649 5.46502821]\n", - "22 [5.7890338, -2.6731083, 5.0167699] [ 0.03684349 12.0183649 1.69564817]\n", - "23 [5.5101241, -2.6731083, 2.1439065] [6.14234349 5.7698649 1.69564817]\n", - "24 [4.598282, 2.6731083, 9.3045829] [-0.87499862 0.4786351 8.85632455]\n", - "25 [4.8771917, 2.6731083, 12.1774463] [5.23050138 6.7271351 8.85632455]\n", - "26 [9.5820999, 1.512137, 3.9516909] [10.3504723 0.4786351 12.62570459]\n", - "27 [1.717058, 1.512137, 3.2089855] [ 4.2449723 6.7271351 12.62570459]\n", - "28 [0.8052159, -1.512137, 10.3696619] [-0.46390061 2.7318442 5.29331519]\n", - "29 [8.6702578, -1.512137, 11.1123672] [5.64159939 8.9803442 5.29331519]\n", - "30 [9.1445088, 1.6433555, 3.176476] [11.76305851 2.7318442 1.86736119]\n", - "31 [2.1546491, 1.6433555, 3.9842003] [5.65755851 8.9803442 1.86736119]\n", - "32 [1.2428069, -1.6433555, 11.1448767] [10.8512164 9.7651558 9.02803757]\n", - "33 [8.2326667, -1.6433555, 10.3371524] [4.7457164 3.5166558 9.02803757]\n", - "34 [9.2752567, 0.7535691, 4.3264807] [-1.37574272 9.7651558 12.45399157]\n", - "35 [2.0239012, 0.7535691, 2.8341957] [ 4.72975728 3.5166558 12.45399157]\n", - "36 [1.1120591, -0.7535691, 9.9948721] [0.18045236 2.5068982 5.88034744]\n", - "37 [8.3634146, -0.7535691, 11.487157] [6.28595236 8.7553982 5.88034744]\n", - "38 [6.1372434, 4.6563822, 4.1617851] [11.11870553 2.5068982 1.28032894]\n", - "39 [5.1619145, 4.6563822, 2.9988913] [5.01320553 8.7553982 1.28032894]\n", - "40 [4.2500724, -4.6563822, 10.1595676] [10.20686342 9.9901018 8.44100532]\n", - "41 [5.2254013, -4.6563822, 11.3224615] [4.10136342 3.7416018 8.44100532]\n", - "42 [6.0028603, 3.8665718, 4.7088608] [-0.73138975 9.9901018 13.04102382]\n", - "43 [5.2962976, 3.8665718, 2.4518156] [ 5.37411025 3.7416018 13.04102382]\n", - "44 [4.3844555, -3.8665718, 9.612492] [-0.31646618 3.5753917 5.01676987]\n", - "45 [5.0910182, -3.8665718, 11.8695372] [5.78903382 9.8238917 5.01676987]\n", - "46 [7.0486113, 4.6501337, 3.832394] [11.61562407 3.5753917 2.14390651]\n", - "47 [4.2505466, 4.6501337, 3.3282824] [5.51012407 9.8238917 2.14390651]\n", - "48 [3.3387045, -4.6501337, 10.4889588] [10.70378197 8.9216083 9.30458289]\n", - "49 [6.1367692, -4.6501337, 10.9930704] [4.59828197 2.6731083 9.30458289]\n", - "50 [4.3104823, -3.6228803, 5.9261758] [-1.22830829 8.9216083 12.17744625]\n", - "51 [6.9886756, -3.6228803, 1.2345006] [ 4.87719171 2.6731083 12.17744625]\n", - "52 [6.0768335, 3.6228803, 8.395177] [9.58209993 1.512137 3.95169087]\n", - "53 [3.3986402, 3.6228803, 13.0868522] [3.47659993 7.760637 3.95169087]\n", - "54 [4.176258, -2.8843076, 6.5391297] [1.71705796 1.512137 3.20898551]\n", - "55 [7.1228999, -2.8843076, 0.6215467] [7.82255796 7.760637 3.20898551]\n", - "56 [6.2110578, 2.8843076, 7.7822231] [ 0.80521585 10.984863 10.36966189]\n", - "57 [3.2644159, 2.8843076, 13.6998061] [ 6.91071585 4.736363 10.36966189]\n", - "58 [4.2501343, -4.4501817, 6.4288553] [ 8.67025783 10.984863 11.11236725]\n", - "59 [7.0490236, -4.4501817, 0.7318211] [ 2.56475783 4.736363 11.11236725]\n", - "60 [6.1371815, 4.4501817, 7.8924975] [9.14450884 1.6433555 3.17647604]\n", - "61 [3.3382921, 4.4501817, 13.5895316] [3.03900884 7.8918555 3.17647604]\n", - "62 [3.2536968, -3.599136, 4.8563707] [2.15464905 1.6433555 3.98420034]\n", - "63 [8.0454611, -3.599136, 2.3043057] [8.26014905 7.8918555 3.98420034]\n", - "64 [7.133619, 3.599136, 9.464982] [ 1.24280694 10.8536445 11.14487672]\n", - "65 [2.3418547, 3.599136, 12.0170471] [ 7.34830694 4.6051445 11.14487672]\n", - "66 [8.4788244, 2.5856293, 5.2588007] [ 8.23266673 10.8536445 10.33715242]\n", - "67 [2.8203335, 2.5856293, 1.9018756] [ 2.12716673 4.6051445 10.33715242]\n", - "68 [1.9084914, -2.5856293, 9.062552] [9.2752567 0.7535691 4.32648067]\n", - "69 [7.5669822, -2.5856293, 12.4194771] [3.1697567 7.0020691 4.32648067]\n", - "70 [3.3033642, -2.7668358, 4.3608519] [2.02390119 0.7535691 2.83419571]\n", - "71 [7.9957937, -2.7668358, 2.7998245] [8.12940119 7.0020691 2.83419571]\n", - "72 [7.0839516, 2.7668358, 9.9605008] [ 1.11205909 11.7434309 9.99487209]\n", - "73 [2.391522, 2.7668358, 11.5215283] [7.21755909 5.4949309 9.99487209]\n", - "74 [7.3703425, 0.0573612, 7.2166729] [ 8.36341459 11.7434309 11.48715705]\n", - "75 [2.1051312, 0.0573612, 14.2653563] [ 2.25791459 5.4949309 11.48715705]\n", - "76 [3.0169733, -0.0573612, 7.1046799] [ 0.03174337 10.9048822 4.16178511]\n", - "77 [8.2821846, -0.0573612, 0.0559965] [6.13724337 4.6563822 4.16178511]\n", - "78 [8.8728346, -1.3685465, 6.2209092] [11.26741453 10.9048822 2.99889127]\n", - "79 [2.4263233, -1.3685465, 0.9397672] [5.16191453 4.6563822 2.99889127]\n", - "80 [1.5144812, 1.3685465, 8.1004435] [10.35557242 1.5921178 10.15956765]\n", - "81 [7.9609924, 1.3685465, 13.3815856] [ 4.25007242 7.8406178 10.15956765]\n", - "82 [6.0563156, 0.2299448, 5.2058117] [-0.88009874 1.5921178 11.32246149]\n", - "83 [5.2428422, 0.2299448, 1.9548647] [ 5.22540126 7.8406178 11.32246149]\n", - "84 [4.3310001, -0.2299448, 9.115541] [-0.10263967 10.1150718 4.70886079]\n", - "85 [5.1444735, -0.2299448, 12.3664881] [6.00286033 3.8665718 4.70886079]\n", - "86 [6.1269614, -1.6094886, 8.4531785] [11.40179756 10.1150718 2.45181559]\n", - "87 [3.3485123, -1.6094886, 13.0288507] [5.29629756 3.8665718 2.45181559]\n", - "88 [4.2603544, 1.6094886, 5.8681743] [10.48995546 2.3819282 9.61249197]\n", - "89 [7.0388035, 1.6094886, 1.2925021] [4.38445546 8.6304282 9.61249197]\n" - ] - } - ], - "source": [ - "for idx, (c_p, p) in enumerate(zip(pos, cell_pos_wrap)):\n", - " if np.allclose(c_p, p, atol=1e-1, rtol=1e-1):\n", - " pass\n", - " else:\n", - " print(idx, c_p, p)" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "id": "0bcccf62-28d6-4c10-a9c2-2db9c047b929", - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "487cb4d6535e44eca3428875bb5f78c8", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "NGLWidget()" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "view = nglview.show_ase(atoms)\n", - "view.add_unitcell()\n", - "view.control.rotate([0.2, 0, 0, 1]) \n", - "view" - ] - }, - { - "cell_type": "code", - "execution_count": 60, - "id": "398156c8-d9d1-4ec6-938a-04add496e259", - "metadata": {}, - "outputs": [], - "source": [ - "ref_molecule = Atoms(symbols=ref_labels, scaled_positions=ref_fracs, cell=cell_vector, pbc=True)" - ] - }, - { - "cell_type": "code", - "execution_count": 62, - "id": "dcc2e6db-1242-4283-a76d-5f50c212ac78", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 62, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "# plot_atoms(ref_molecule, rotation='45x,75y,75z')\n", - "plot_atoms(ref_molecule)" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "id": "5e21aeec-1c5b-4f0d-876f-c034a7e508f4", - "metadata": {}, - "outputs": [ - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "8a59796dae9447c8858d537afebecbf6", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "NGLWidget()" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "view = nglview.show_ase(ref_molecule, )\n", - "view.add_unitcell()\n", - "# view.control.rotate([0, 0, 0, 1]) \n", - "view" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "id": "96235072-f2a6-4eb1-b034-d1eedb5ee0d4", - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "data": { - "text/plain": [ - "array([[0.08075, 0.1685 , 0.21068],\n", - " [0.92286, 0.9549 , 0.2213 ],\n", - " [0.8965 , 0.169 , 0.3284 ],\n", - " [0.9105 , 0.953 , 0.3654 ],\n", - " [0.0054 , 0.841 , 0.3633 ],\n", - " [0.8179 , 0.838 , 0.3894 ],\n", - " [0.8307 , 0.668 , 0.4519 ],\n", - " [0.876 , 0.664 , 0.1449 ],\n", - " [0.7889 , 0.762 , 0.1655 ],\n", - " [0.7749 , 0.965 , 0.1132 ],\n", - " [0.855 , 0.982 , 0.0677 ],\n", - " [0.9166 , 0.797 , 0.0879 ],\n", - " [0.832 , 0.25 , 0.313 ],\n", - " [0.957 , 0.291 , 0.354 ],\n", - " [0. , 0.666 , 0.375 ],\n", - " [0.07 , 0.92 , 0.363 ],\n", - " [0.734 , 0.896 , 0.354 ],\n", - " [0.794 , 0.666 , 0.515 ],\n", - " [0.88 , 0.523 , 0.442 ],\n", - " [0.908 , 0.497 , 0.172 ],\n", - " [0.738 , 0.697 , 0.213 ],\n", - " [0.71 , 0.09 , 0.11 ],\n", - " [0.868 , 0.125 , 0.021 ],\n", - " [0.99 , 0.762 , 0.061 ]])" - ] - }, - "execution_count": 10, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "ref_molecule.get_scaled_positions()" - ] - }, - { - "cell_type": "code", - "execution_count": 27, - "id": "4220cab1-fad1-4abf-9de5-c9eba14e91f9", - "metadata": {}, - "outputs": [], - "source": [ - "from cell2mol.classes import cell\n", - "from cell2mol.cell_operations import frac2cart_fromparam\n", - "\n", - "ref_pos = frac2cart_fromparam(ref_fracs, cell_param)\n", - "refcell = cell(name, ref_labels, ref_pos, ref_fracs, cell_vector, cell_param)" - ] - }, - { - "cell_type": "code", - "execution_count": 28, - "id": "a9bff313-3540-4016-a796-c6213509a07c", - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "data": { - "text/plain": [ - "------------- Cell2mol CELL Object ----------------\n", - " Version = 2.0\n", - " Type = cell\n", - " Name (Refcode) = BOFFOS\n", - " Num Atoms = 157\n", - " Cell Parameters a:c = [24.369 24.369 9.748]\n", - " Cell Parameters al:ga = [ 90. 90. 120.]\n", - "---------------------------------------------------" - ] - }, - "execution_count": 28, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "refcell" - ] - }, - { - "cell_type": "code", - "execution_count": 63, - "id": "0f27dfa6-198a-4589-b0b3-07c6cb5b8979", - "metadata": {}, - "outputs": [], - "source": [ - "new_structures = apply_symmetry_operations_reference(refcell, cell_vector, sym_ops, normalize=True)" - ] - }, - { - "cell_type": "code", - "execution_count": 64, - "id": "53df2671", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[Atoms(symbols='C42H78FeK3O33', pbc=False, cell=[[24.369, 0.0, 0.0], [-12.184499999999996, 21.104173064822987, 0.0], [0.0, 0.0, 9.748]]),\n", - " Atoms(symbols='C42H78FeK3O33', pbc=False, cell=[[24.369, 0.0, 0.0], [-12.184499999999996, 21.104173064822987, 0.0], [0.0, 0.0, 9.748]]),\n", - " Atoms(symbols='C42H78FeK3O33', pbc=False, cell=[[24.369, 0.0, 0.0], [-12.184499999999996, 21.104173064822987, 0.0], [0.0, 0.0, 9.748]]),\n", - " Atoms(symbols='C42H78FeK3O33', pbc=False, cell=[[24.369, 0.0, 0.0], [-12.184499999999996, 21.104173064822987, 0.0], [0.0, 0.0, 9.748]]),\n", - " Atoms(symbols='C42H78FeK3O33', pbc=False, cell=[[24.369, 0.0, 0.0], [-12.184499999999996, 21.104173064822987, 0.0], [0.0, 0.0, 9.748]]),\n", - " Atoms(symbols='C42H78FeK3O33', pbc=False, cell=[[24.369, 0.0, 0.0], [-12.184499999999996, 21.104173064822987, 0.0], [0.0, 0.0, 9.748]]),\n", - " Atoms(symbols='C42H78FeK3O33', pbc=False, cell=[[24.369, 0.0, 0.0], [-12.184499999999996, 21.104173064822987, 0.0], [0.0, 0.0, 9.748]]),\n", - " Atoms(symbols='C42H78FeK3O33', pbc=False, cell=[[24.369, 0.0, 0.0], [-12.184499999999996, 21.104173064822987, 0.0], [0.0, 0.0, 9.748]]),\n", - " Atoms(symbols='C42H78FeK3O33', pbc=False, cell=[[24.369, 0.0, 0.0], [-12.184499999999996, 21.104173064822987, 0.0], [0.0, 0.0, 9.748]])]" - ] - }, - "execution_count": 64, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "new_structures" - ] - }, - { - "cell_type": "code", - "execution_count": 25, - "id": "42cfc03c", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "66\n", - "33\n" - ] - } - ], - "source": [ - "updated_ref_indices=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66]\n", - "print(len(updated_ref_indices))\n", - "for i in range(len(new_structures[0])) :\n", - " if i not in updated_ref_indices:\n", - " print(i)" - ] - }, - { - "cell_type": "code", - "execution_count": 27, - "id": "e70b7d87", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "array([0.75632, 0.00384, 0.54764])" - ] - }, - "execution_count": 27, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "new_structures[0].get_scaled_positions()[33]" - ] - }, - { - "cell_type": "code", - "execution_count": 26, - "id": "5159f5e0", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "Atom('H', [9.0701512, 0.039982937970049176, 17.830063120000002], index=33)" - ] - }, - "execution_count": 26, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "new_structures[0][33]" - ] - }, - { - "cell_type": "code", - "execution_count": 28, - "id": "1e839af3", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "Atom('H', [9.070211315, 0.03987881573575217, 17.830063120000002], index=10)" - ] - }, - "execution_count": 28, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "for repr in SPAHM_a_coord_sphere SPAHM_a_coord_sphere_mean ; do for prop in HOMO_total LUMO_total gap_total dipole_moment_Debye splitting hirshfeld ; do for metal in total Fe ; do bash slurm_cv.sh ${metal} ${repr} ${prop} G ; bash slurm_cv.sh ${metal} ${repr} ${prop} L ; done ; done ; done\n", - "\n", - "new_structures[1][10]" - ] - }, - { - "cell_type": "code", - "execution_count": 29, - "id": "2a255f4b", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "array([0.75632, 0.00383, 0.54764])" - ] - }, - "execution_count": 29, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "new_structures[1].get_scaled_positions()[10]" - ] - }, - { - "cell_type": "code", - "execution_count": 32, - "id": "71f78576", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "True" - ] - }, - "execution_count": 32, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "np.allclose([9.0701512, 0.039982937970049176, 17.830063120000002], [9.070211315, 0.03987881573575217, 17.830063120000002], atol=1e-4, rtol=1e-2)" - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "id": "dd0582c8-4229-4a75-a01b-4b061c725b61", - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "67\n", - "67\n", - "67\n", - "67\n", - "67\n", - "67\n", - "67\n", - "67\n", - "67\n", - "67\n", - "67\n", - "67\n", - "67\n", - "67\n", - "67\n", - "67\n", - "67\n", - "67\n" - ] - } - ], - "source": [ - "for new in new_structures:\n", - " print(len(new))" - ] - }, - { - "cell_type": "code", - "execution_count": 73, - "id": "fcb78292-b24e-44de-a039-660aff74dfea", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 73, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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kSKaEhkZ+cY3fY1GY1cFy3+ZlwJygiAwYcIERo4cyZ49e9Dr9ZQuXZoSJUqkOCdr1qw0atQo2balS5cmS7Q1mUzExsai1WrtVst9OY5VsD+fwSKYWHT5K64+OUr58hWIOHWHu3fvJksotocnT54kKbkCbL83LWnfr7/+yqFDh+jfvz9t2rTBYDBw884dFAoF2bJlIzIyErVajVeOHGjF6HTN/y480Zvpse0GWc0CB7Q6sr0hciCTyaikUHDCwYE6BgPz58zh6xEjcHF53svp0aNHBAUFER0djbOzM+XLl0/m5GvUaoINBsYajTwWRe4LAtutVjp27Mjs2bNxcXHBarWyatUqenbvziijkSmv9KoSRZFYqzVpPluIiori9u3bODs7U6RIEWbPmEENtZriL0q3raJIJ6ORNWYzVStVomW1aty6cYMhW7cyTxDYp1YnafRUUSgoqVYze+ZMyWH5j3Lq1CkASbL/M+WDOyxPnjwhNDQUT0/PNI+pXLkye/bs4euvv07atnv3bqpUqfKhzfvPcP36dcqVK8ePP/7I8OHDadu2rd1juLm5ER8fT2JiItu3b+f06dNJvWkKFy5Mw4YNyZMnj01jxcU977psa+PDV9l9fy63406xZ88e6tatS4kSJThx4oTdDovFYmHPnj3s2bMHjUaDr68v+fLlw8PDA6VSSVxcHGFhYVy8eJFOnTrh6enJw4cP6devHz/88AOenp5EREQwfvx4Zs2ahWPWj5+/suRSJM8SLRx1cHijs/IqbjIZOzQaiiYksH//flq1asWOHTvYvXs37u7ulChRghs3bnD48GEqVKhA7dq12bdvH7GJiawRBJx1OlxdXDBarSiio1m5ciUHDx6kf//+DBs2jM6dO3Pr1i0mjR/POFHE9UWU44QgYBKEpD5DN27cYN68eVy8eBEnJyfatWtH69atUavVREZGMmzYMNasWZOUpFuoUCGuX7/OilecoGlmM+utVtavX58sQnvp0iXq1KxJ/7g41r44XiaT0VcmY/DWrcTExNjlOEn8ewgMDKRu3bosXrw4WURf4r+P3Uq38fHxSdoHZcqU4c8//6R27dq4u7vj7u7OuHHjaNOmDZ6enty7d49vv/2WkJAQrl69irOzMwBdu3bFy8sradni+PHj1KhRg59//pmWLVsSEBDAd999x9GjR23S2IDPS+k2NQRB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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "plot_atoms(new_structures[3])\n", - "# plot_atoms(new_structures[0], rotation='45x,75y,75z')" - ] - }, - { - "cell_type": "code", - "execution_count": 26, - "id": "2a671c4f-c69a-49d5-bdbb-603c70e6b8e0", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "array([[ 0.20882649, 1.017066 , 2.79206699],\n", - " [ 2.27122159, 4.035066 , 10.46057678],\n", - " [ 8.64922159, 5.018934 , 10.46057678],\n", - " [ 6.58682649, 2.000934 , 2.79206699],\n", - " [10.9093854 , 5.7637764 , 2.93281007],\n", - " [ 4.32666268, 2.7457764 , 10.3198337 ],\n", - " [-2.05133732, 0.2722236 , 10.3198337 ],\n", - " [ 4.5313854 , 3.2902236 , 2.93281007],\n", - " [10.15566659, 1.020084 , 4.35216821],\n", - " [ 5.08038149, 4.038084 , 8.90047555],\n", - " [-1.29761851, 5.015916 , 8.90047555],\n", - " [ 3.77766659, 1.997916 , 4.35216821],\n", - " [10.19002637, 5.752308 , 4.84251603],\n", - " [ 5.04602171, 2.734308 , 8.41012773],\n", - " [-1.33197829, 0.283692 , 8.41012773],\n", - " [ 3.81202637, 3.301692 , 4.84251603],\n", - " [-1.34724353, 5.076276 , 4.81468548],\n", - " [ 3.82729161, 2.058276 , 8.43795829],\n", - " [10.20529161, 0.959724 , 8.43795829],\n", - " [ 5.03075647, 3.977724 , 4.81468548],\n", - " [ 8.91526992, 5.058168 , 5.16057948],\n", - " [ 6.32077816, 2.040168 , 8.09206428],\n", - " [-0.05722184, 0.977832 , 8.09206428],\n", - " [ 2.53726992, 3.995832 , 5.16057948],\n", - " [ 8.83492473, 4.032048 , 5.98886972],\n", - " [ 6.40112335, 1.014048 , 7.26377405],\n", - " [ 0.02312335, 2.003952 , 7.26377405],\n", - " [ 2.45692473, 5.021952 , 5.98886972],\n", - " [10.60944277, 4.007904 , 1.92030808],\n", - " [ 4.62660531, 0.989904 , 11.33233569],\n", - " [-1.75139469, 2.028096 , 11.33233569],\n", - " [ 4.23144277, 5.046096 , 1.92030808],\n", - " [ 9.41809736, 4.599432 , 2.19331254],\n", - " [ 5.81795072, 1.581432 , 11.05933122],\n", - " [-0.56004928, 1.436568 , 11.05933122],\n", - " [ 3.04009736, 4.454568 , 2.19331254],\n", - " [ 9.44337624, 5.82474 , 1.50019927],\n", - " [ 5.79267184, 2.80674 , 11.75244449],\n", - " [-0.58532816, 0.21126 , 11.75244449],\n", - " [ 3.06537624, 3.22926 , 1.50019927],\n", - " [10.64248865, 5.927352 , 0.89720398],\n", - " [ 4.59355942, 2.909352 , 12.35543978],\n", - " [-1.78444058, 0.108648 , 12.35543978],\n", - " [ 4.26448865, 3.126648 , 0.89720398],\n", - " [11.34951963, 4.810692 , 1.16490739],\n", - " [ 3.88652845, 1.792692 , 12.08773638],\n", - " [-2.49147155, 1.225308 , 12.08773638],\n", - " [ 4.97151963, 4.243308 , 1.16490739],\n", - " [ 9.39293305, 1.509 , 4.1480775 ],\n", - " [ 5.84311503, 4.527 , 9.10456627],\n", - " [-0.53488497, 4.527 , 9.10456627],\n", - " [ 3.01493305, 1.509 , 4.1480775 ],\n", - " [10.82761702, 1.756476 , 4.69143589],\n", - " [ 4.40843106, 4.774476 , 8.56120787],\n", - " [-1.96956894, 4.279524 , 8.56120787],\n", - " [ 4.44961702, 1.261524 , 4.69143589],\n", - " [11.29426803, 4.019976 , 4.96974141],\n", - " [ 3.94178005, 1.001976 , 8.28290235],\n", - " [-2.43621995, 2.016024 , 8.28290235],\n", - " [ 4.91626803, 5.034024 , 4.96974141],\n", - " [-0.52203655, 5.55312 , 4.81070969],\n", - " [ 3.00208463, 2.53512 , 8.44193408],\n", - " [ 9.38008463, 0.48288 , 8.44193408],\n", - " [ 5.85596345, 3.50088 , 4.81070969],\n", - " [ 7.98302902, 5.408256 , 4.69143589],\n", - " [ 7.25301906, 2.390256 , 8.56120787],\n", - " [ 0.87501906, 0.627744 , 8.56120787],\n", - " [ 1.60502902, 3.645744 , 4.69143589],\n", - " [ 8.12081876, 4.019976 , 6.82511154],\n", - " [ 7.11522932, 1.001976 , 6.42753223],\n", - " [ 0.73722932, 2.016024 , 6.42753223],\n", - " [ 1.74281876, 5.034024 , 6.82511154],\n", - " [ 9.50238525, 3.156828 , 5.85766855],\n", - " [ 5.73366283, 0.138828 , 7.39497522],\n", - " [-0.64433717, 2.879172 , 7.39497522],\n", - " [ 3.12438525, 5.897172 , 5.85766855],\n", - " [10.91200027, 2.999892 , 2.27945473],\n", - " [ 4.32404781, 6.017892 , 10.97318904],\n", - " [-2.05395219, 3.036108 , 10.97318904],\n", - " [ 4.53400027, 0.018108 , 2.27945473],\n", - " [ 8.58366424, 4.207092 , 2.82281312],\n", - " [ 6.65238384, 1.189092 , 10.42983064],\n", - " [ 0.27438384, 1.828908 , 10.42983064],\n", - " [ 2.20566424, 4.846908 , 2.82281312],\n", - " [ 8.62798529, 0.54324 , 1.45779081],\n", - " [ 6.60806279, 3.56124 , 11.79485295],\n", - " [ 0.23006279, 5.49276 , 11.79485295],\n", - " [ 2.24998529, 2.47476 , 1.45779081],\n", - " [10.99035101, 0.7545 , 0.27830552],\n", - " [ 4.24569707, 3.7725 , 12.97433825],\n", - " [-2.13230293, 5.2815 , 12.97433825],\n", - " [ 4.61235101, 2.2635 , 0.27830552],\n", - " [12.39066493, 4.599432 , 0.80841127],\n", - " [ 2.84538315, 1.581432 , 12.4442325 ],\n", - " [-3.53261685, 1.436568 , 12.4442325 ],\n", - " [ 6.01266493, 4.454568 , 0.80841127]])" - ] - }, - "execution_count": 26, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "cell_pos" - ] - }, - { - "cell_type": "code", - "execution_count": 25, - "id": "10f24ab4-d9ff-4d2c-895d-2f17cc40b3a5", - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "data": { - "text/plain": [ - "array([[-0.20882649, -1.017066 , -2.79206699],\n", - " [ 1.8466146 , 0.2722236 , -2.93281007],\n", - " [ 2.60033341, -1.020084 , -4.35216821],\n", - " [ 2.56597363, 0.283692 , -4.84251603],\n", - " [ 1.34724353, 0.959724 , -4.81468548],\n", - " [ 3.84073008, 0.977832 , -5.16057948],\n", - " [ 3.92107527, 2.003952 , -5.98886972],\n", - " [ 2.14655723, 2.028096 , -1.92030808],\n", - " [ 3.33790264, 1.436568 , -2.19331254],\n", - " [ 3.31262376, 0.21126 , -1.50019927],\n", - " [ 2.11351135, 0.108648 , -0.89720398],\n", - " [ 1.40648037, 1.225308 , -1.16490739],\n", - " [ 3.36306695, -1.509 , -4.1480775 ],\n", - " [ 1.92838298, -1.756476 , -4.69143589],\n", - " [ 1.46173197, 2.016024 , -4.96974141],\n", - " [ 0.52203655, 0.48288 , -4.81070969],\n", - " [ 4.77297098, 0.627744 , -4.69143589],\n", - " [ 4.63518124, 2.016024 , -6.82511154],\n", - " [ 3.25361475, 2.879172 , -5.85766855],\n", - " [ 1.84399973, 3.036108 , -2.27945473],\n", - " [ 4.17233576, 1.828908 , -2.82281312],\n", - " [ 4.12801471, -0.54324 , -1.45779081],\n", - " [ 1.76564899, -0.7545 , -0.27830552],\n", - " [ 0.36533507, 1.436568 , -0.80841127]])" - ] - }, - "execution_count": 25, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "new_structures[4].positions" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "fe238dcf-8a5b-42ca-a4a2-aee1de5f6319", - "metadata": {}, - "outputs": [], - "source": [ - "2, 4 / 3, 5, / " - ] - }, - { - "cell_type": "code", - "execution_count": 55, - "id": "4001937a-ed3e-4427-98d1-5d359cd68f57", - "metadata": {}, - "outputs": [ - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "f7377cc1cf7d4c2e98f917589e9822a6", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "NGLWidget()" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "unit_cell = Atoms(cell=cell_vector, pbc=True)\n", - "view = nglview.show_ase(unit_cell + new_structures[0] + new_structures[6] )\n", - "view.add_unitcell()\n", - "view" - ] - }, - { - "cell_type": "code", - "execution_count": 56, - "id": "c1c79262-4846-452f-8580-1f4b2a933040", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "array([[ 0.20882649, 1.017066 , 2.79206699],\n", - " [10.9093854 , 5.7637764 , 2.93281007],\n", - " [10.15566659, 1.020084 , 4.35216821],\n", - " [10.19002637, 5.752308 , 4.84251603],\n", - " [-1.34724353, 5.076276 , 4.81468548],\n", - " [ 8.91526992, 5.058168 , 5.16057948],\n", - " [ 8.83492473, 4.032048 , 5.98886972],\n", - " [10.60944277, 4.007904 , 1.92030808],\n", - " [ 9.41809736, 4.599432 , 2.19331254],\n", - " [ 9.44337624, 5.82474 , 1.50019927],\n", - " [10.64248865, 5.927352 , 0.89720398],\n", - " [11.34951963, 4.810692 , 1.16490739],\n", - " [ 9.39293305, 1.509 , 4.1480775 ],\n", - " [10.82761702, 1.756476 , 4.69143589],\n", - " [-1.46173197, 4.019976 , 4.96974141],\n", - " [-0.52203655, 5.55312 , 4.81070969],\n", - " [ 7.98302902, 5.408256 , 4.69143589],\n", - " [ 8.12081876, 4.019976 , 6.82511154],\n", - " [ 9.50238525, 3.156828 , 5.85766855],\n", - " [10.91200027, 2.999892 , 2.27945473],\n", - " [ 8.58366424, 4.207092 , 2.82281312],\n", - " [ 8.62798529, 0.54324 , 1.45779081],\n", - " [10.99035101, 0.7545 , 0.27830552],\n", - " [12.39066493, 4.599432 , 0.80841127]])" - ] - }, - "execution_count": 56, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "new_structures[0].get_positions()" - ] - }, - { - "cell_type": "code", - "execution_count": 61, - "id": "d107b447-49e4-4c07-bdca-f5001a5452d8", - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0 Br [0.20882649 1.017066 2.79206699] [0.08075 0.1685 0.21068] Br [0.2088265, 1.017066, 2.792067]\n", - "1 Br [ 2.27122159 4.035066 10.46057678] [0.41925 0.6685 0.78932] Br [2.2712216, 4.035066, 10.4605768]\n", - "2 Br [ 8.64922159 5.018934 10.46057678] [0.91925 0.8315 0.78932] Br [8.6492216, 5.018934, 10.4605768]\n", - "3 Br [6.58682649 2.000934 2.79206699] [0.58075 0.3315 0.21068] Br [6.5868265, 2.000934, 2.792067]\n", - "4 Co [10.9093854 5.7637764 2.93281007] [0.92286 0.9549 0.2213 ] Co [10.9093854, 5.7637764, 2.9328101]\n", - "5 Co [ 4.32666268 2.7457764 10.3198337 ] [0.57714 0.4549 0.7787 ] Co [4.3266627, 2.7457764, 10.3198337]\n", - "6 Co [-2.05133732 0.2722236 10.3198337 ] [0.07714 0.0451 0.7787 ] Co [-2.0513373, 0.2722236, 10.3198337]\n", - "7 Co [4.5313854 3.2902236 2.93281007] [0.42286 0.5451 0.2213 ] Co [4.5313854, 3.2902236, 2.9328101]\n", - "8 C [10.15566659 1.020084 4.35216821] [0.8965 0.169 0.3284] C [10.1556666, 1.020084, 4.3521682]\n", - "9 C [5.08038149 4.038084 8.90047555] [0.6035 0.669 0.6716] C [5.0803815, 4.038084, 8.9004756]\n", - "10 C [-1.29761851 5.015916 8.90047555] [0.1035 0.831 0.6716] C [-1.2976185, 5.015916, 8.9004756]\n", - "11 C [3.77766659 1.997916 4.35216821] [0.3965 0.331 0.3284] C [3.7776666, 1.997916, 4.3521682]\n", - "12 C [10.19002637 5.752308 4.84251603] [0.9105 0.953 0.3654] C [10.1900264, 5.752308, 4.842516]\n", - "13 C [5.04602171 2.734308 8.41012773] [0.5895 0.453 0.6346] C [5.0460217, 2.734308, 8.4101277]\n", - "14 C [-1.33197829 0.283692 8.41012773] [0.0895 0.047 0.6346] C [-1.3319783, 0.283692, 8.4101277]\n", - "15 C [3.81202637 3.301692 4.84251603] [0.4105 0.547 0.3654] C [3.8120264, 3.301692, 4.842516]\n", - "16 C [-1.34724353 5.076276 4.81468548] [0.0054 0.841 0.3633] C [-1.3472435, 5.076276, 4.8146855]\n", - "17 C [3.82729161 2.058276 8.43795829] [0.4946 0.341 0.6367] C [3.8272916, 2.058276, 8.4379583]\n", - "18 C [10.20529161 0.959724 8.43795829] [0.9946 0.159 0.6367] C [10.2052916, 0.959724, 8.4379583]\n", - "19 C [5.03075647 3.977724 4.81468548] [0.5054 0.659 0.3633] C [5.0307565, 3.977724, 4.8146855]\n", - "20 C [8.91526992 5.058168 5.16057948] [0.8179 0.838 0.3894] C [8.9152699, 5.058168, 5.1605795]\n", - "21 C [6.32077816 2.040168 8.09206428] [0.6821 0.338 0.6106] C [6.3207782, 2.040168, 8.0920643]\n", - "22 C [-0.05722184 0.977832 8.09206428] [0.1821 0.162 0.6106] C [-0.0572218, 0.977832, 8.0920643]\n", - "23 C [2.53726992 3.995832 5.16057948] [0.3179 0.662 0.3894] C [2.5372699, 3.995832, 5.1605795]\n", - "24 C [8.83492473 4.032048 5.98886972] [0.8307 0.668 0.4519] C [8.8349247, 4.032048, 5.9888697]\n", - "25 C [6.40112335 1.014048 7.26377405] [0.6693 0.168 0.5481] C [6.4011234, 1.014048, 7.263774]\n", - "26 C [0.02312335 2.003952 7.26377405] [0.1693 0.332 0.5481] C [0.0231234, 2.003952, 7.263774]\n", - "27 C [2.45692473 5.021952 5.98886972] [0.3307 0.832 0.4519] C [2.4569247, 5.021952, 5.9888697]\n", - "28 C [10.60944277 4.007904 1.92030808] [0.876 0.664 0.1449] C [10.6094428, 4.007904, 1.9203081]\n", - "29 C [ 4.62660531 0.989904 11.33233569] [0.624 0.164 0.8551] C [4.6266053, 0.989904, 11.3323357]\n", - "30 C [-1.75139469 2.028096 11.33233569] [0.124 0.336 0.8551] C [-1.7513947, 2.028096, 11.3323357]\n", - "31 C [4.23144277 5.046096 1.92030808] [0.376 0.836 0.1449] C [4.2314428, 5.046096, 1.9203081]\n", - "32 C [9.41809736 4.599432 2.19331254] [0.7889 0.762 0.1655] C [9.4180974, 4.599432, 2.1933125]\n", - "33 C [ 5.81795072 1.581432 11.05933122] [0.7111 0.262 0.8345] C [5.8179507, 1.581432, 11.0593312]\n", - "34 C [-0.56004928 1.436568 11.05933122] [0.2111 0.238 0.8345] C [-0.5600493, 1.436568, 11.0593312]\n", - "35 C [3.04009736 4.454568 2.19331254] [0.2889 0.738 0.1655] C [3.0400974, 4.454568, 2.1933125]\n", - "36 C [9.44337624 5.82474 1.50019927] [0.7749 0.965 0.1132] C [9.4433762, 5.82474, 1.5001993]\n", - "37 C [ 5.79267184 2.80674 11.75244449] [0.7251 0.465 0.8868] C [5.7926718, 2.80674, 11.7524445]\n", - "38 C [-0.58532816 0.21126 11.75244449] [0.2251 0.035 0.8868] C [-0.5853282, 0.21126, 11.7524445]\n", - "39 C [3.06537624 3.22926 1.50019927] [0.2749 0.535 0.1132] C [3.0653762, 3.22926, 1.5001993]\n", - "40 C [10.64248865 5.927352 0.89720398] [0.855 0.982 0.0677] C [10.6424887, 5.927352, 0.897204]\n", - "41 C [ 4.59355942 2.909352 12.35543978] [0.645 0.482 0.9323] C [4.5935594, 2.909352, 12.3554398]\n", - "42 C [-1.78444058 0.108648 12.35543978] [0.145 0.018 0.9323] C [-1.7844406, 0.108648, 12.3554398]\n", - "43 C [4.26448865 3.126648 0.89720398] [0.355 0.518 0.0677] C [4.2644887, 3.126648, 0.897204]\n", - "44 C [11.34951963 4.810692 1.16490739] [0.9166 0.797 0.0879] C [11.3495196, 4.810692, 1.1649074]\n", - "45 C [ 3.88652845 1.792692 12.08773638] [0.5834 0.297 0.9121] C [3.8865285, 1.792692, 12.0877364]\n", - "46 C [-2.49147155 1.225308 12.08773638] [0.0834 0.203 0.9121] C [-2.4914715, 1.225308, 12.0877364]\n", - "47 C [4.97151963 4.243308 1.16490739] [0.4166 0.703 0.0879] C [4.9715196, 4.243308, 1.1649074]\n", - "48 H [9.39293305 1.509 4.1480775 ] [0.832 0.25 0.313] H [9.392933, 1.509, 4.1480775]\n", - "49 H [5.84311503 4.527 9.10456627] [0.668 0.75 0.687] H [5.843115, 4.527, 9.1045663]\n", - "50 H [-0.53488497 4.527 9.10456627] [0.168 0.75 0.687] H [-0.534885, 4.527, 9.1045663]\n", - "51 H [3.01493305 1.509 4.1480775 ] [0.332 0.25 0.313] H [3.014933, 1.509, 4.1480775]\n", - "52 H [10.82761702 1.756476 4.69143589] [0.957 0.291 0.354] H [10.827617, 1.756476, 4.6914359]\n", - "53 H [4.40843106 4.774476 8.56120787] [0.543 0.791 0.646] H [4.4084311, 4.774476, 8.5612079]\n", - "54 H [-1.96956894 4.279524 8.56120787] [0.043 0.709 0.646] H [-1.9695689, 4.279524, 8.5612079]\n", - "55 H [4.44961702 1.261524 4.69143589] [0.457 0.209 0.354] H [4.449617, 1.261524, 4.6914359]\n", - "57 H [3.94178005 1.001976 8.28290235] [0.5 0.166 0.625] H [3.94178, 1.001976, 8.2829024]\n", - "58 H [-2.43621995 2.016024 8.28290235] [3.48141431e-17 3.34000000e-01 6.25000000e-01] H [-2.43622, 2.016024, 8.2829024]\n", - "59 H [4.91626803 5.034024 4.96974141] [0.5 0.834 0.375] H [4.916268, 5.034024, 4.9697414]\n", - "60 H [-0.52203655 5.55312 4.81070969] [0.07 0.92 0.363] H [-0.5220365, 5.55312, 4.8107097]\n", - "61 H [3.00208463 2.53512 8.44193408] [0.43 0.42 0.637] H [3.0020846, 2.53512, 8.4419341]\n", - "62 H [9.38008463 0.48288 8.44193408] [0.93 0.08 0.637] H [9.3800846, 0.48288, 8.4419341]\n", - "63 H [5.85596345 3.50088 4.81070969] [0.57 0.58 0.363] H [5.8559635, 3.50088, 4.8107097]\n", - "64 H [7.98302902 5.408256 4.69143589] [0.734 0.896 0.354] H [7.983029, 5.408256, 4.6914359]\n", - "65 H [7.25301906 2.390256 8.56120787] [0.766 0.396 0.646] H [7.2530191, 2.390256, 8.5612079]\n", - "66 H [0.87501906 0.627744 8.56120787] [0.266 0.104 0.646] H [0.8750191, 0.627744, 8.5612079]\n", - "67 H [1.60502902 3.645744 4.69143589] [0.234 0.604 0.354] H [1.605029, 3.645744, 4.6914359]\n", - "68 H [8.12081876 4.019976 6.82511154] [0.794 0.666 0.515] H [8.1208188, 4.019976, 6.8251115]\n", - "69 H [7.11522932 1.001976 6.42753223] [0.706 0.166 0.485] H [7.1152293, 1.001976, 6.4275322]\n", - "70 H [0.73722932 2.016024 6.42753223] [0.206 0.334 0.485] H [0.7372293, 2.016024, 6.4275322]\n", - "71 H [1.74281876 5.034024 6.82511154] [0.294 0.834 0.515] H [1.7428188, 5.034024, 6.8251115]\n", - "72 H [9.50238525 3.156828 5.85766855] [0.88 0.523 0.442] H [9.5023853, 3.156828, 5.8576685]\n", - "73 H [5.73366283 0.138828 7.39497522] [0.62 0.023 0.558] H [5.7336628, 0.138828, 7.3949752]\n", - "74 H [-0.64433717 2.879172 7.39497522] [0.12 0.477 0.558] H [-0.6443372, 2.879172, 7.3949752]\n", - "75 H [3.12438525 5.897172 5.85766855] [0.38 0.977 0.442] H [3.1243853, 5.897172, 5.8576685]\n", - "76 H [10.91200027 2.999892 2.27945473] [0.908 0.497 0.172] H [10.9120003, 2.999892, 2.2794547]\n", - "77 H [ 4.32404781 6.017892 10.97318904] [0.592 0.997 0.828] H [4.3240478, 6.017892, 10.973189]\n", - "78 H [-2.05395219 3.036108 10.97318904] [0.092 0.503 0.828] H [-2.0539522, 3.036108, 10.973189]\n", - "79 H [4.53400027 0.018108 2.27945473] [0.408 0.003 0.172] H [4.5340003, 0.018108, 2.2794547]\n", - "80 H [8.58366424 4.207092 2.82281312] [0.738 0.697 0.213] H [8.5836642, 4.207092, 2.8228131]\n", - "81 H [ 6.65238384 1.189092 10.42983064] [0.762 0.197 0.787] H [6.6523838, 1.189092, 10.4298306]\n", - "82 H [ 0.27438384 1.828908 10.42983064] [0.262 0.303 0.787] H [0.2743838, 1.828908, 10.4298306]\n", - "83 H [2.20566424 4.846908 2.82281312] [0.238 0.803 0.213] H [2.2056642, 4.846908, 2.8228131]\n", - "84 H [8.62798529 0.54324 1.45779081] [0.71 0.09 0.11] H [8.6279853, 0.54324, 1.4577908]\n", - "85 H [ 6.60806279 3.56124 11.79485295] [0.79 0.59 0.89] H [6.6080628, 3.56124, 11.794853]\n", - "86 H [ 0.23006279 5.49276 11.79485295] [0.29 0.91 0.89] H [0.2300628, 5.49276, 11.794853]\n", - "87 H [2.24998529 2.47476 1.45779081] [0.21 0.41 0.11] H [2.2499853, 2.47476, 1.4577908]\n", - "88 H [10.99035101 0.7545 0.27830552] [0.868 0.125 0.021] H [10.990351, 0.7545, 0.2783055]\n", - "89 H [ 4.24569707 3.7725 12.97433825] [0.632 0.625 0.979] H [4.2456971, 3.7725, 12.9743382]\n", - "90 H [-2.13230293 5.2815 12.97433825] [0.132 0.875 0.979] H [-2.1323029, 5.2815, 12.9743382]\n", - "91 H [4.61235101 2.2635 0.27830552] [0.368 0.375 0.021] H [4.612351, 2.2635, 0.2783055]\n", - "92 H [12.39066493 4.599432 0.80841127] [0.99 0.762 0.061] H [12.3906649, 4.599432, 0.8084113]\n", - "93 H [ 2.84538315 1.581432 12.4442325 ] [0.51 0.262 0.939] H [2.8453831, 1.581432, 12.4442325]\n", - "94 H [-3.53261685 1.436568 12.4442325 ] [0.01 0.238 0.939] H [-3.5326169, 1.436568, 12.4442325]\n", - "95 H [6.01266493 4.454568 0.80841127] [0.49 0.738 0.061] H [6.0126649, 4.454568, 0.8084113]\n" - ] - } - ], - "source": [ - "found = []\n", - "for kdx, (l, p, f) in enumerate(zip(cell_labels, cell_pos, cell_fracs)):\n", - " for pdx, (c_l, c_p) in enumerate(zip(labels, pos)): \n", - " if np.allclose(p, c_p):\n", - " print(kdx, l, p, f, c_l, c_p)\n", - " found.append([kdx, pdx])" - ] - }, - { - "cell_type": "code", - "execution_count": 68, - "id": "847a3624-6047-460e-ab48-febf441ba681", - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "data": { - "text/plain": [ - "[[0, 0],\n", - " [1, 1],\n", - " [2, 3],\n", - " [3, 2],\n", - " [4, 4],\n", - " [5, 5],\n", - " [6, 7],\n", - " [7, 6],\n", - " [8, 8],\n", - " [9, 9],\n", - " [10, 11],\n", - " [11, 10],\n", - " [12, 12],\n", - " [13, 13],\n", - " [14, 15],\n", - " [15, 14],\n", - " [16, 16],\n", - " [17, 17],\n", - " [18, 19],\n", - " [19, 18],\n", - " [20, 20],\n", - " [21, 21],\n", - " [22, 23],\n", - " [23, 22],\n", - " [24, 24],\n", - " [25, 25],\n", - " [26, 27],\n", - " [27, 26],\n", - " [28, 28],\n", - " [29, 29],\n", - " [30, 31],\n", - " [31, 30],\n", - " [32, 32],\n", - " [33, 33],\n", - " [34, 35],\n", - " [35, 34],\n", - " [36, 36],\n", - " [37, 37],\n", - " [38, 39],\n", - " [39, 38],\n", - " [40, 40],\n", - " [41, 41],\n", - " [42, 43],\n", - " [43, 42],\n", - " [44, 44],\n", - " [45, 45],\n", - " [46, 47],\n", - " [47, 46],\n", - " [48, 48],\n", - " [49, 49],\n", - " [50, 51],\n", - " [51, 50],\n", - " [52, 52],\n", - " [53, 53],\n", - " [54, 55],\n", - " [55, 54],\n", - " [57, 57],\n", - " [58, 59],\n", - " [59, 58],\n", - " [60, 60],\n", - " [61, 61],\n", - " [62, 63],\n", - " [63, 62],\n", - " [64, 64],\n", - " [65, 65],\n", - " [66, 67],\n", - " [67, 66],\n", - " [68, 68],\n", - " [69, 69],\n", - " [70, 71],\n", - " [71, 70],\n", - " [72, 72],\n", - " [73, 73],\n", - " [74, 75],\n", - " [75, 74],\n", - " [76, 76],\n", - " [77, 77],\n", - " [78, 79],\n", - " [79, 78],\n", - " [80, 80],\n", - " [81, 81],\n", - " [82, 83],\n", - " [83, 82],\n", - " [84, 84],\n", - " [85, 85],\n", - " [86, 87],\n", - " [87, 86],\n", - " [88, 88],\n", - " [89, 89],\n", - " [90, 91],\n", - " [91, 90],\n", - " [92, 92],\n", - " [93, 93],\n", - " [94, 95],\n", - " [95, 94]]" - ] - }, - "execution_count": 68, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "found" - ] - }, - { - "cell_type": "code", - "execution_count": 69, - "id": "910258dd-ea81-4db6-a1cb-e7596abf15ff", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[0,\n", - " 1,\n", - " 2,\n", - " 3,\n", - " 4,\n", - " 5,\n", - " 6,\n", - " 7,\n", - " 8,\n", - " 9,\n", - " 10,\n", - " 11,\n", - " 12,\n", - " 13,\n", - " 14,\n", - " 15,\n", - " 16,\n", - " 17,\n", - " 18,\n", - " 19,\n", - " 20,\n", - " 21,\n", - " 22,\n", - " 23,\n", - " 24,\n", - " 25,\n", - " 26,\n", - " 27,\n", - " 28,\n", - " 29,\n", - " 30,\n", - " 31,\n", - " 32,\n", - " 33,\n", - " 34,\n", - " 35,\n", - " 36,\n", - " 37,\n", - " 38,\n", - " 39,\n", - " 40,\n", - " 41,\n", - " 42,\n", - " 43,\n", - " 44,\n", - " 45,\n", - " 46,\n", - " 47,\n", - " 48,\n", - " 49,\n", - " 50,\n", - " 51,\n", - " 52,\n", - " 53,\n", - " 54,\n", - " 55,\n", - " 57,\n", - " 58,\n", - " 59,\n", - " 60,\n", - " 61,\n", - " 62,\n", - " 63,\n", - " 64,\n", - " 65,\n", - " 66,\n", - " 67,\n", - " 68,\n", - " 69,\n", - " 70,\n", - " 71,\n", - " 72,\n", - " 73,\n", - " 74,\n", - " 75,\n", - " 76,\n", - " 77,\n", - " 78,\n", - " 79,\n", - " 80,\n", - " 81,\n", - " 82,\n", - " 83,\n", - " 84,\n", - " 85,\n", - " 86,\n", - " 87,\n", - " 88,\n", - " 89,\n", - " 90,\n", - " 91,\n", - " 92,\n", - " 93,\n", - " 94,\n", - " 95]" - ] - }, - "execution_count": 69, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "[i[0] for i in found]" - ] - }, - { - "cell_type": "code", - "execution_count": 70, - "id": "e8e28db6-3fce-4bf5-bcce-567e1314a94c", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[56]" - ] - }, - "execution_count": 70, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "[ i for i in range(len(pos)) if i not in [i[0] for i in found]]" - ] - }, - { - "cell_type": "code", - "execution_count": 71, - "id": "8b2fcd9f-6831-4eef-80c1-7503ed51461a", - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "data": { - "text/plain": [ - "[56]" - ] - }, - "execution_count": 71, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "[ i for i in range(len(pos)) if i not in [i[1] for i in found]]" - ] - }, - { - "cell_type": "code", - "execution_count": 72, - "id": "3bcf558f-ce05-473f-90a0-bb40af3c32d0", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "([-1.461732, 4.019976, 4.9697414],\n", - " array([11.29426803, 4.019976 , 4.96974141]))" - ] - }, - "execution_count": 72, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "pos[56], cell_pos[56]" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "8646e483-4304-4ee7-8526-11aa6f28cc29", - "metadata": {}, - "outputs": [], - "source": [ - "56 cell_labels[i]='H' cell_pos[i]=array([11.29426803, 4.019976 , 4.96974141]) cell_fracs[i]=array([0. , 0.666, 0.375])" - ] - }, - { - "cell_type": "code", - "execution_count": 203, - "id": "bf9d382a-d161-46f4-9e2d-46275c152ff2", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "array([[ 6.16917351, 4.035066 , -2.79206699],\n", - " [-4.5313854 , 8.7817764 , -2.93281007],\n", - " [-3.77766659, 4.038084 , -4.35216821],\n", - " [-3.81202637, 8.770308 , -4.84251603],\n", - " [ 7.72524353, 8.094276 , -4.81468548],\n", - " [-2.53726992, 8.076168 , -5.16057948],\n", - " [-2.45692473, 7.050048 , -5.98886972],\n", - " [-4.23144277, 7.025904 , -1.92030808],\n", - " [-3.04009736, 7.617432 , -2.19331254],\n", - " [-3.06537624, 8.84274 , -1.50019927],\n", - " [-4.26448865, 8.945352 , -0.89720398],\n", - " [-4.97151963, 7.828692 , -1.16490739],\n", - " [-3.01493305, 4.527 , -4.1480775 ],\n", - " [-4.44961702, 4.774476 , -4.69143589],\n", - " [ 7.83973197, 7.037976 , -4.96974141],\n", - " [ 6.90003655, 8.57112 , -4.81070969],\n", - " [-1.60502902, 8.426256 , -4.69143589],\n", - " [-1.74281876, 7.037976 , -6.82511154],\n", - " [-3.12438525, 6.174828 , -5.85766855],\n", - " [-4.53400027, 6.017892 , -2.27945473],\n", - " [-2.20566424, 7.225092 , -2.82281312],\n", - " [-2.24998529, 3.56124 , -1.45779081],\n", - " [-4.61235101, 3.7725 , -0.27830552],\n", - " [-6.01266493, 7.617432 , -0.80841127]])" - ] - }, - "execution_count": 203, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "new = new_structures[7]\n", - "new_labels = new.get_chemical_symbols()\n", - "new_pos = new.get_positions() \n", - "new_fracs = new.get_scaled_positions()\n", - "new_pos" - ] - }, - { - "cell_type": "code", - "execution_count": 176, - "id": "eef93dad-7e05-401c-9d3e-af2b071b26ac", - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "symmtry operation 0: atom of new (index: 14) H [-1.46173197 4.019976 4.96974141] [0. 0.666 0.375]\n" - ] - } - ], - "source": [ - "sp_idx = 0\n", - "for jdx, (n_l, n_p, n_f) in enumerate(zip(new_labels, new_pos, new_fracs)):\n", - " if jdx == 14 :\n", - " print(f\"symmtry operation {sp_idx}:\", f\"atom of new (index: {jdx})\", n_l, n_p, n_f)\n", - " for kdx, (l, p, f) in enumerate(zip(cell_labels, cell_pos, cell_fracs)):\n", - " if n_l == l and np.allclose(n_p, p, atol=1e-1, rtol=1e-1):\n", - " print(f\"symmtry operation {sp_idx}:\", f\"atom of new (index: {jdx})\", n_l, n_p, n_f, \\\n", - " f\"is the same as the atom of the unit cell (index: {kdx})\", l, p, f)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "6e8d9050-b714-4d3e-a8dd-798fd3d07f4a", - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": 173, - "id": "7a007d1d-5f0c-401a-a10e-150842aefbec", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "96" - ] - }, - "execution_count": 173, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "len(cell_pos)" - ] - }, - { - "cell_type": "code", - "execution_count": 193, - "id": "e2b28786-4d14-4ca4-8ae5-c414e50089a4", - "metadata": { - "scrolled": true - }, - "outputs": [], - "source": [ - "idx = 56\n", - "for jdx, new in enumerate(new_structures):\n", - " new_labels = new.get_chemical_symbols()\n", - " new_pos = new.get_positions() \n", - " new_fracs = new.get_scaled_positions()\n", - " for kdx, (l, p, f) in enumerate(zip(new_labels, new_pos, new_fracs)):\n", - " if l == cell_labels[idx] and np.allclose(p, cell_pos[idx], atol=1e-1, rtol=1e-1) :\n", - " print(f\"symmtry operation {jdx}:\", f\"new symmetry atom index {kdx}\", l, p, f)\n", - " if np.allclose(f, cell_fracs[idx], atol=1e-5, rtol=1e-3):\n", - " print(f\"\\tsame frac\", f, cell_fracs[idx])\n", - " else:\n", - " print(f\"\\tdifferent frac\", f, cell_fracs[idx])\n", - " \n", - " # if new_labels == cell_labels[idx] :\n", - " # if np.allclose(cell_pos[idx], ):" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "4be7d95e-824c-4902-bb95-8dcb81cdd35a", - "metadata": {}, - "outputs": [], - "source": [ - "ref" - ] - }, - { - "cell_type": "code", - "execution_count": 153, - "id": "b6c3371f-12be-4b1c-b120-648c5e5100aa", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "['Fe',\n", - " 'N',\n", - " 'C',\n", - " 'C',\n", - " 'H',\n", - " 'H',\n", - " 'H',\n", - " 'Sb',\n", - " 'F',\n", - " 'F',\n", - " 'N',\n", - " 'C',\n", - " 'C',\n", - " 'H',\n", - " 'H',\n", - " 'H',\n", - " 'N',\n", - " 'C',\n", - " 'C',\n", - " 'H',\n", - " 'H',\n", - " 'H',\n", - " 'N',\n", - " 'C',\n", - " 'C',\n", - " 'H',\n", - " 'H',\n", - " 'H',\n", - " 'N',\n", - " 'C',\n", - " 'C',\n", - " 'H',\n", - " 'H',\n", - " 'H',\n", - " 'N',\n", - " 'C',\n", - " 'C',\n", - " 'H',\n", - " 'H',\n", - " 'H',\n", - " 'F',\n", - " 'F',\n", - " 'F',\n", - " 'F']" - ] - }, - "execution_count": 153, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "new_structures[15].get_chemical_symbols()" - ] - }, - { - "cell_type": "code", - "execution_count": 151, - "id": "226333da-8a86-4148-92ef-3ea01b3fc328", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "numpy.ndarray" - ] - }, - "execution_count": 151, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "t = np.array([0.6667, 0.3333, 0.3333])\n", - "type(t)" - ] - }, - { - "cell_type": "code", - "execution_count": 65, - "id": "c7715d2f", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[[31, 32], [31], [6, 37]]" - ] - }, - "execution_count": 65, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "target_list = [0, 1, 2, 3, 4, 5, 6, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39]\n", - "\n", - "sublists = [\n", - " [0, 1, 10, 16, 22, 28, 34, 2, 11, 17, 23, 29, 35, 3, 36, 4, 37, 5, 38, 6, 39, 12, 13, 14, 15, 24, 25, 26, 27, 18, 19, 20, 21, 30, 33], \n", - " [0, 1, 10, 16, 22, 28, 34, 2, 11, 17, 23, 29, 35, 18, 24, 19, 25, 20, 26, 21, 27, 36, 37, 38, 39, 3, 4, 5, 6, 12, 13, 14, 15, 30, 32, 33], \n", - " [10, 11, 12, 13, 14, 15, 0, 22, 23, 24, 26, 28, 29, 30, 31, 32, 33, 1, 2, 3, 5, 16, 17, 18, 20, 34, 35, 36, 38, 4, 25, 21, 27, 39, 19], \n", - "]\n", - "\n", - "# Convert target list to a set for efficient operations\n", - "target_set = set(target_list)\n", - "\n", - "# Initialize a list to store the missing elements for each sublist\n", - "missing_elements = []\n", - "\n", - "# Compute the missing elements for each sublist\n", - "for sublist in sublists:\n", - " sublist_set = set(sublist)\n", - " missing = target_set - sublist_set # Elements in target_list but not in sublist\n", - " missing_elements.append(sorted(list(missing))) # Convert to sorted list for readability\n", - "\n", - "missing_elements\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "4ae5d239", - "metadata": {}, - "outputs": [], - "source": [ - " [6], [13], [14], [13], [19]]" - ] - }, - { - "cell_type": "code", - "execution_count": 140, - "id": "4fd6918b", - "metadata": {}, - "outputs": [], - "source": [ - "def lists_overlap(list1, list2):\n", - " # Convert lists to sets\n", - " set1 = set(list1)\n", - " set2 = set(list2)\n", - " \n", - " # Check if the intersection of both sets is non-empty\n", - " if set1.intersection(set2):\n", - " return True # There is overlap\n", - " else:\n", - " return False # No overlap\n", - "\n", - "# Example usage\n", - "list1 = [1, 2, 3, 4]\n", - "list2 = [3, 4, 5, 6]\n", - "list3 = [7, 8, 9]\n", - "if set(list1).intersection(set(list3)):\n", - " print(\"yes\")\n", - "# print(lists_overlap(list1, list2)) # This will print True, as they overlap.\n", - "# print(lists_overlap(list1, list3)) # This will print False, as they do not overlap.\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "ca278ad3", - "metadata": {}, - "outputs": [], - "source": [ - " [[0, 1, 10, 16, 22, 28, 34, 2, 11, 17, 23, 29, 35, 3, 36, 4, 5, 6, 18, 19, 20, 21, 12, 13, 14, 15, 24], \n", - " [0, 1, 10, 16, 22, 28, 34, 2, 11, 17, 23, 29, 35, 18, 24, 19, 20, 21, 3, 4, 5, 6, 36, 37, 38, 39, 12, 13, 14, 15], \n", - " [10, 11, 12, 13, 14, 15, 0, 1, 2, 3, 5, 16, 17, 18, 20, 28, 29, 30, 34, 35, 36, 4, 19, 21], \n", - " [25], [6], [27], [32], [12, 13, 14, 15], [6], [5], [4], [12, 13, 14, 15], \n", - " [21], [6], [20], [5], [19], [4], [1, 2, 3, 5], [21], [15], [14], [19], [13]]" - ] - }, - { - "cell_type": "code", - "execution_count": 71, - "id": "27f36756", - "metadata": {}, - "outputs": [], - "source": [ - "rem_frag_list = np.load(\"/Users/ycho/cell2mol/cell2mol/test/ACEYOW/rem_frag_list.pkl\",allow_pickle=True)" - ] - }, - { - "cell_type": "code", - "execution_count": 82, - "id": "b0a4f577", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 82, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "combined_mol = Atoms(symbols=rem_frag_list[0].labels, positions=rem_frag_list[0].coord, cell=cell_vector, pbc=True) + \\\n", - "Atoms(symbols=rem_frag_list[1].labels, positions=rem_frag_list[1].coord, cell=cell_vector, pbc=True) + \\\n", - "Atoms(symbols=rem_frag_list[2].labels, positions=rem_frag_list[2].coord, cell=cell_vector, pbc=True) + \\\n", - "Atoms(symbols=rem_frag_list[3].labels, positions=rem_frag_list[3].coord, cell=cell_vector, pbc=True) \n", - "plot_atoms(combined_mol, rotation='45x,50y,45z')" - ] - }, - { - "cell_type": "code", - "execution_count": 54, - "id": "3c9431f1", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n" - ] - }, - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 54, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAh8AAAE3CAYAAAAKSiMXAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/av/WaAAAACXBIWXMAAA9hAAAPYQGoP6dpAACwB0lEQVR4nOzdZXxT59vA8V/qLklb6i3QIsUpFHcb7jKc4bAN25AJY2y4jDGc4e6w4QxvsRaneAtVKjR1S9vkedGn+a/DKklTOd/Phxc7OTn3VUaT69znuq9bpFAoFAgEAoFAIBAUES1NByAQCAQCgaBsEZIPgUAgEAgERUpIPgQCgUAgEBQpIfkQCAQCgUBQpITkQyAQCAQCQZESkg+BQCAQCARFSkg+BAKBQCAQFCkh+RAIBAKBQFCkdDQdwH/J5XLCw8MxNTVFJBJpOhyBQCAQCAR5oFAoSExMxN7eHi2tj89tFLvkIzw8HCcnJ02HIRAIBAKBoABCQkJwdHT86DnFLvkwNTUFsoM3MzPTcDQCgUAgEAjyIiEhAScnJ+X3+McUu+Qj51GLmZmZkHwIBAKBQFDC5KVkQig4FQgEAoFAUKSE5EMgEAgEAkGRKnaPXQSaExUVxeHDh9HS0kIikdC5c2cMDAwASE1NxcDAQFiBJBAIBIJCE5IPAQC+vr60aNECmUyGXC5HoVAQHx+PgYEBCoUCS0tLAKysrAgKCkJbW5uMjAwmTJiAWCzGzs6OyZMnAyCTyXj27BlisRixWIyhoaEGfzKBQCAQFDdC8iFAoVBQsWJFevbsye7du9m3bx/t2rVTViwrFAo2bdqEVColKSkJbW1tAJKTk3nw4AExMTEYGhoqk4+QkBBq1qwJQJUqVXjy5AkAT58+Zfz48YjFYurVq8esWbMAiIiI4Pr160gkEpycnChfvnwR/w0IBAKBoCgJyUcZ5+3tzY8//sjhw4fZtWsXn3/+Oa1atcLY2Fh5jpaWFoMGDXrnvRYWFty8efOd4w4ODty4cYOYmJhcjWa0tLSws7MjJiaGN2/eKI/funWLXr16AdC7d28OHjwIwIEDB5g6dSoSiYSBAwcyffp05flXrlxBLBbj6elJrVq1AEhJSUFHRwc9PT0V/M0IBAKBQF2E5KOMe/z4MSKRSPmF3aVLl0Jf08DAgAYNGrxzvFKlSuzevfud4507dyY6OhqpVIqOzv/+Sbq7uzNixAhiYmKws7NTHvf19eWXX34hISGB2bNnK5OPefPmMX/+fIyNjVm6dCnjxo0DYOvWrdy8eROxWEy/fv2U57948YKMjAwkEgkSiSTX2AKBQCBQH5FCoVBoOoh/S0hIwNzcnPj4eKHPhxp5e3sTHh5Ov379yMrKUj5KUSgU9OrVi1atWvH1119rOMqPy8jIICsrS1kU++DBA+7evYtUKqV58+Z4enoCsGDBAg4ePEhMTAwrVqygR48eAHTv3p2//voLgBMnTtCpUycAxo8fz8uXLxGLxcybNw83NzflOXK5HIlEQt26dZXjCgQCgSB/399C8lEGKRQK6tevj6WlJWfPnn1nBUufPn14+fIl9+7d00yAReT169eEhoYilUpp2LAhNjY2AMyfP5979+4hlUpZv349FStWBMDNzY2AgAAAgoKCcHZ2BrJndHJmUC5evKislZk7dy5mZmaIxWKGDBmCSCRCoVAQExODhYWFMNMiEAhKFSH5EHzQnTt3qFy5MomJiZiamuaq7chx7949UlJSaNSokbC09l/S09OJjY1FKpVSqVIlZfKwYsUKoqKiiImJYc2aNcqVQBUrViQmJgaRSERSUhIAMTExWFlZAdlJy7NnzwCIjIxkypQpSCQS3N3dlbNOiYmJ+Pv7IxaLsbGxwcLCouh/cIFAIMgDIfkQvFdISAgeHh5MmDCBRYsWaTqcMiM9PR19fX0gu1/KmTNniImJAWDkyJEAvHr1ii+++AKpVIqzszN///03AFeuXKFFixYAtG7dmvPnzwNw+fJlvv32WyQSCe3bt2fKlClAdh3LrVu3EIvFuLu7Kx8ZCQQCgbrl5/tbmPctI5KSknBycmLNmjXKlSUfc/78eX7++WfOnz+Prq5uEURYeuUkHgCGhobKmpN/K1++PBcvXnzneL169Xjw4AFSqTRXjYmpqSm1atUiJiaGjIwM5fELFy4oC22/+uorVq5cCcDy5cuZN28eYrGYqVOnMn78eABOnTqFr68vYrGYVq1aUa1aNQCkUilaWlqYmZl9cmtsgUAgyDdFPl2+fFnRpUsXhZ2dnQJQHDlyRPmaTCZTTJ8+XVG9enWFkZGRws7OTjFkyBBFWFhYnq8fHx+vABTx8fH5DU3wAT4+PgorKyuFj49Pnt9z7949BaD466+/1BiZQNXkcrkiOTlZERISooiIiFAev3nzpmLBggWKb7/9VnH69Gnl8V9++UVhZ2en0NPTU6xfv155fNiwYQpAoaWlpdi/f7/y+Pz58xVDhgxRTJo0SfHs2TPlcT8/P4Wvr68iMDBQIZPJ1PxTCgSC4ig/39/5nvlITk6mVq1ajBgxgt69e+d6LSUlhTt37vDjjz9Sq1YtYmNjmTx5Mt26dcPPz08VuZKgAMqVK0eHDh2US0zzolatWmzYsIH69eurMTKBqolEIoyMjDAyMsp13MvLCy8vr3fO/+GHH/jhhx9QKBQo/vUEdsqUKXTu3BmpVErdunWVx1NSUnj9+jW3b9/O1ftl3Lhxyt/xe/fuKf+tde7cmdjYWCQSCZs2bVIW9W7btg0DAwPljEtO/YxCoRDqjASCMqBQNR8ikYgjR468dxo5h6+vL15eXrlWB3yMUPOhOt7e3qxbt47NmzcLjbcEahUWFkZUVJRy5VBOIfPPP//M69eviYmJYceOHZibmwNgZmZGYmIikN2OX1dXl8zMTIyMjLC0tMTe3p67d+8C2Tc8s2fPRiKR4ODgwLBhw5Tve/PmDWKxGBMTEyFpEQg0rFjVfMTHxyMSiT5YpZ+enk56erryvxMSEtQdUplx8uRJwsLCyMjIKFDyoVAo+PLLL6lfvz7Dhw9XfYCCUsPBwQEHB4d3jv/000/vPT8+Pp7ExESkUqmypkgul/P777+/U8eSkJDAiRMnkEqlWFtbK5OPZ8+eKdv4e3l5KbvtPnr0iO+//x6JREL9+vWV9S0RERE8fvwYsViMvb29chZGIBAUPbUmH2lpacycOZOBAwd+MAtasGABP//8szrDKHO8vb3R0tJi3rx5pKenF7gZlkgkIiQkBF9fXyH5EKiUSCTCzMws1+eCnp6eMlH4Nzs7O54+fQqQ69GQq6srZ86cQSqV5tq8MDMzk6ysLJ48eZJrKfmlS5f4/PPPARgyZAjbt28HYM+ePcpi3EGDBjF27Fgge9b23r17iMViatWqpVw59O+mfAKBoGDU9tglIyODvn37EhwczKVLlz6YfLxv5sPJyUl47FJAGRkZVK5cmerVqyu7dxaGj48P4eHh9OnTR5jWFpRoqamphIeHI5VKMTU1pUqVKkD2v/H9+/cjlUpp3749Q4YMAbLb9f/4448oFAoWLlzIjBkzgOx6mHXr1iEWi1m6dKkyodm2bZtyZqVXr164u7sD2UvctbS0kEgkQldcQalWZH0+PpR8ZGRk0K9fPwIDA7lw4QISiSTP1xRqPgru6dOnuLu78+LFC5ycnN7bQEwgEOSdXC4nLi4OHR0d5efRtWvX8PPzQyqV0rVrV2Ub/+nTp3PkyBFlfUvnzp0BaNeuHf/88w+QPfuS07flyy+/VNaszJkzR/nYKmd5u1gspkqVKkInXEGJodGaj5zE48WLF1y8eDFfiYeg4J48eYKXlxezZ8/m22+/Vem1b926xbJly9i9e7cw3SwoU7S0tBCLxbmONW7cmMaNG79z7uLFi1m8ePE7x5cvX05ISAhSqRQPDw/lcQMDA5KTkwkODkYulyuPDxkyRLnrc3R0tLIjroeHB3p6eojFYs6ePYuOjg5yuZzffvsNsViMtbW1cmNIuVxOZmamUGguKLbynXwkJSXx8uVL5X+/evVK+VzU3t6ePn36cOfOHY4fP05WVhYREREAiMVi4RdBTTIyMqhUqRKzZ89mwoQJKr++SCRi//79fPHFF3To0EHl1xcISrMaNWpQo0aNd44vXbr0veffv38fqVSKVCrF0tISyK516dOnDzExMSQkJChnQ5KSkpg7dy4JCQlYW1sTFRUFZK8+cnZ2xtjYmDp16nD16lUAQkND+fXXX5FIJFSpUkX5iCkxMZHQ0FDEYjGWlpbCZ7VA7fL92OXSpUu0atXqnePDhg1jzpw5lC9f/r3vu3jxIi1btvzk9YXHLvnj7e3N0KFDOXnypPIZtqopFAp++eUXBgwYQKVKldQyhkAgKLiMjAwSExOVszQJCQkcOXIEqVSKvr6+8qbE39+foUOHIpVKqVatGsePHwfgzJkzfPbZZwB06dJF2d7//PnzLFy4ELFYTIcOHfjiiy8AePnyJU+ePEEikVC+fHns7OyK+kcWFENqfezSsmVLPpavFKKERFAAIpGI6tWr4+TkpNYxZs+erbbrCwSCwsmpEclhZmamXJL8b9WqVeP27dvvHG/QoAFXr17NNdsC2SuQLC0tiYmJITo6Wnn82LFjfPPNNwDMmDGDhQsXArBkyRLWrl2rbOM/cOBAIDu5efLkCWKxmGbNmilvUpOTk9HX1xfqWsogYWO5Esrb25uTJ08yb968IlmFolAomDdvHlWqVKFPnz5qH08gEBRfGRkZxMTEEBMTg7m5OY6OjkD23kLnzp1DKpXSq1cv5WPaadOmsX79epKTk9mxYweDBw8GoF+/fhw4cAALCwv27t2rPH/x4sUEBwcjFosZPXq08ubq8ePHykTL0tJS2HeomBF2tS0DBg8eTFhYGKdOnSqy5XufffYZSUlJeHt7F8l4AoGgdElLS0MkEik3W/T29ubZs2dIpVJ69+5NhQoVAJgwYQI+Pj7ExMRw4sQJZbv+atWq8fjxYwCeP3+uXM7cvXt3ZDIZYrGYdevWYWpqCsD+/fsxMzNDLBZTv359oV2AmgnJRyl27do1ypUrh5OTExkZGUW6nDZn6nTSpEnCL7FAIChyT548ITIyEqlUSseOHZXN5b7++mtCQ0ORSqWcPn0aAwMDsrKy0NXVRaFQoKurS3p6OiKRiMTERFxdXRGLxVSoUIEzZ84AEBcXx++//45EIsHZ2Zlu3boB2bM8ycnJwg7PeSAkH6VUUlIS5cuXp0OHDuzcuVPT4QgEAkGxlpKSglQqJS4ujurVqwPZdSZ//PEHUqkUbW1tFixYAGQX0TZv3pyYmBg8PDyUewvdvHmThg0boqWlRceOHZVFuvfu3WP58uVYWlpSvXp1Ro0aVeZvyorV3i4C1QgJCcHJyYljx47la3daVfP392fjxo0sX75cuAsQCATFWs4Ozzk1KQDGxsbMnDnznXPd3NwIDw9HoVAgk8lyHc/pgPvvot6kpCRevXrF8ePHSUpKIiQkhLlz56r3BypFhJmPEuDOnTu0aNGCNWvWKNfla4q3tzfNmjXL89JpgUAgKM327t3L2rVrCQoKIjAwsEzflAkzH6WIQqGgcuXKTJgwgV69emk6HJo0acLYsWMxMTHRdCgCgUCgEXK5nIkTJ1KjRg0mTJhAnTp1iIuLK/OPXfKj7KZoJYC3tzdeXl4kJiayaNGiYrFXi0gkYt26ddSrV0/ToQgEAoFGJCcn4+fnpyx4rVy5Mg0aNBCSj3wQko9iLCwsDAsLC+WyseJk8+bNyipxgUAgKAvkcjmLFi0iMzOT69evM2LECOVr3t7eeHp6kpSUpMEISw4h+SiGvL292bBhA/379+fs2bPFYsbjv3bu3MmiRYs0HYZAIBAUmatXr/Ldd99x6dKld7qyOjo6cufOHQ4fPqyh6EoWoeajmFEoFPz444+IRCJGjhxZbHeR/fLLL7l+/TpyubxMF1gJBILSTy6X4+fnR4sWLXj8+DGVK1d+5xxXV1d279793r3PBO8SVrsUI76+vlSsWBGRSISenl6xnPEQCASCsmbu3Ln8+uuvvHjxAhcXF02HU2zl5/tbuGUtJqKiomjTpg2zZ8/G0tKyRCQewcHBLFq0SNhMUCAQlEpyuZzU1FRGjx7Nrl278pR4TJo0iRUrVqg/uBJOSD6KgdjYWGxsbNi+fXuJqqMICAhg5syZXLt2TdOhCAQCgUopFArGjx9Ply5dKFeuHH379s3T++Li4lizZo1wU/YJQs2Hht24cYPPPvuM/fv306NHD02Hky8tWrRQbugkEAgEpYlIJMLZ2ZlGjRrlq65typQpdO/eHYVCISy9/Qih5kPD3rx5w48//sjvv/9eIh61CAQCQWkml8uZPHkyHTt2pGPHjpoOp0QRaj5KAG9vb7p27YqZmRl//vlniU48zpw5g4+Pj6bDEAgEgkKLiori2LFjREZGFvgad+7coUuXLqSmpqowstJFSD405Pr166WmGU1OJbhAIBCUVHK5nHXr1iEWi3ny5AnDhw8v8LVMTEw4ceIEf/31l+oCLGWE5KOIeXt7c+rUKb799tti20Asv8aMGYNYLEYul2s6FIFAICiQw4cPM2HCBC5fvoyRkVGhrlWpUiWWLVtG7dq1VRNcKSTUfBShrKwsatasibOzMydPnhSKkQQCgUDD5HI5AQEBuLm5cevWLRo0aKDpkEosoeajGHrw4AFZWVmcPHmSgwcPlrrEIzY2lh07dgjLywQCQYkya9Ys6tevj1QqVXnisWDBAjZv3qzSa5YWQvJRBAICAmjSpAnz58/HxcWlVDxq+a+bN28ydOhQbt++relQBAKB4JPkcjlZWVkMGjSIVatWIZFIVD7G/fv3Wb58uXBT9h5Cnw81S01NpUKFCixZsoQhQ4ZoOhy1adeuHV5eXrx580bToQgEAsFHyeVyJkyYQHp6Olu2bKFmzZpqGeerr77i9u3bZGVlvbMRXVkn/G2okY+PD3379uXEiROMGzdO0+Golba2Njdv3tR0GAKBQPBJCoWCjIwMWrRoodZxmjRpQpMmTdQ6RkklPHZRIzMzM5o0aUKlSpU0HUqRefToEQ8ePNB0GAKBQPAOuVzOjBkz8Pf3Z9OmTYVaTptXz549Y/To0UIn6P8QZj7UwNvbm127drFq1SoOHDig6XCK1IgRI7C3t+fYsWOaDkVQzEmlUm7fvs39+/eJi4sjKysLQ0ND3Nzc8PT0xN3dPV9trTXt9u3brF27lrNnz5KYmIiJiQmtW7dmwoQJeHl5lboi85IoICCA9evXU7NmTbU9avmvzMxM/vzzTzp16kTPnj2LZMySQEg+1GDPnj08ffoUmUyGoaGhpsMpUsOHD+fQoUNkZWWhra2t6XAExUxUVBSbNm1i06ZNBAQEAGBgYICJiQkikQiZTEZ8fDwApqamdO/enQkTJtCwYcNi++WdkJDA559/zsmTJ3FycmLAgAFYW1sTExPDvn372L59O61bt+bAgQOIxWJNh1smyeVyDh8+TO/evQkICFBLcemHVKtWjenTp2Nvb19kY5YEQp8PFfLx8cHExITq1auXycQDEDZTErzX27dv+fbbb9m1axcikYjatWtTuXJlnJycsLKyyjXDkZycTGhoKEFBQfj5+REVFUXNmjX57bffaN26tQZ/inclJyfTunVrnj17xsaNG+nZs2euwsKsrCyOHz/OyJEjcXBw4OrVqyXuc600WL9+PePHj+f69etCHw81ys/3t5B8qEhaWhoVK1akcePGZe5Ry39lZGRw5coV2rRpo+lQBMXA4cOHGTduHKmpqbRp0wYvL688LzeXy+U8e/aMf/75h4CAAMaNG8eSJUswMTFRc9R5M3XqVDZs2MDly5fx9PT84Hn+/v40adKE/v37s379+iKMsGyTy+VERUUhFou5fPky7dq101gsW7ZswdTUlD59+mgsBnUTko8iFhAQQIUKFbh//z7u7u6lso9Hfhw/fpyuXbty//79InuuKih+5HI5U6ZMYeXKldSoUYO+ffsW+HdaLpfj4+PDiRMncHBw4Pz587i4uKg44vxJTk7GwcGB8ePHs2DBgk+e/+uvvzJ//nzCw8OxsLBQf4ACvv76a44dO8aTJ08K3TK9sHr16sWrV6+4e/euRuNQJ7V2OL1y5Qpdu3bF3t4ekUjE0aNHc72uUCiYM2cO9vb2GBoa0rJlS/z9/fM7TInx8OFDateuzdq1a6ldu3aZTzwAOnToQPny5Xn06JGmQxFoiEKhYMyYMfzxxx/06dOHL774olA3E1paWjRr1oxp06aRkJBA48aNef36teoCLoD9+/eTkJDA2LFj83T+qFGjyMjIYOfOnWqOTJBzT92pUyfmzp2r8cQDYPz48bRr146MjAxNh1Is5Dv5SE5OplatWqxateq9ry9evJjly5ezatUqfH19sbW1pV27diQmJhY62OImKyuLypUr88033zBs2DBNh1Ns6Orq8uLFCwYOHKjpUAQa8tNPP7Fp0yY+//xzmjZtqrI6IGtra7788ksyMzNp06aNsjhVE54+fUqFChVwdXXN0/m2trZ4eHjw9OlT9QZWxsnlcsaNG8evv/7KZ599Vmw+m9u1a8fixYvR1dXVdCjFQr6Tj44dO/Lrr7/Sq1evd15TKBSsWLGC77//nl69elG9enW2bdtGSkoKu3fvVknAxYW3tzfVq1cnPDycn376SZjx+A9tbW2ioqKUKxoEZceNGzeYN28enTp1wsvLS+XXNzc3Z8yYMYSHhzNt2jSVXz+vMjIy8t21UldXV7jzVbP09HRevnyJo6OjpkN5R0hICD/99BOZmZmaDkXjVLqI/tWrV0RERNC+fXvlMX19fVq0aMG1a9dUOZTGJScn4+rqirW1taZDKbY6duzIzJkzNR2GoAilpaUxbNgwnJ2d1VpwbGVlRdeuXdm0aRNnzpxR2zgfY2dnR0hISJ5nddPS0ggMDMTOzk7NkZVNcrmcn3/+mdjYWM6dO1ckDcTy6+3bt8ydO1dj/2aLE5UmHxEREQCUK1cu1/Fy5copX/uv9PR0EhIScv0pzry9vVm0aBEdOnTg5MmTwozHRwwaNAh/f38hyy9D1q5dS2BgIAMGDFB7n5fGjRtTqVIlvvrqK41s3DVgwADS0tLyPKt78OBBYmNjhceRauLn58e8efPw8fEpts3pateuzdChQ9HT09N0KBqnlv9D/32++7HeDwsWLMDc3Fz5x8nJSR0hqczixYs5ffo0GRkZQj+LT/jyyy959OiRsKFSGSGXy1m1ahU1a9bE1tZW7eOJRCLatWvHixcvuHjxotrH+y8nJye6devGkiVLiIuLy/VaXFwcFy5cYOnSpXz77bdMmDCByZMnU6lSJSIjI0lKSiryeEsruVzOpUuX8PLy4sWLF/Tt21fTIX2QSCRi27ZtGl3yW1yoNPnI+cD57yxHVFTUO7MhOWbNmkV8fLzyT0hIiCpDUpkbN24QHh7Onj17OH78uFA0lAd6enqIRCIeP36s6VAEReCff/4hMDCQpk2bFtmYbm5u2NnZsXr16iIb898WLlyIVCqlY8eOvHr1inXr1lGrVi0sLS1p06YNP/74Izt27ODw4cMoFApevXpF8+bNMTMzo1GjRuzYsYO0tDSNxF5aLFmyhDZt2vDs2TONL7/Oq9OnT3Pu3DlNh6FRKr0lLV++PLa2tpw7d446deoAIJPJuHz5MosWLXrve/T19dHX11dlGCoXFxdHx44d6dWrF5s2bdJ0OCXKqVOn6Ny5M0+ePKFKlSqaDkegRocOHaJcuXKUL1++yMYUiUR4eXnx999/k56eXuSfJZUrV+bvv/+mffv2uLm5oVAoqF69OoMGDcLJyQkbG5tcjwCysrKIjIwkODiYe/fuMXToUCZPnsysWbOYMmWKsCVBPsjlcpKTkxkzZgyVK1emcuXKmg4pz1atWsXbt2/L9AxIvpOPpKQkXr58qfzvV69ece/ePcRiMc7OzkyePJn58+fj7u6Ou7s78+fPx8jIqMQ+54yMjKRcuXLs37+fxo0bazqcEqdNmzZIJBKuXLkiJB+lnK+vLy4uLkX+ONLV1ZWMjAwePXr00S6j6uDn58fo0aNJT0+nVatWNG3aFEtLyw+er62tjb29Pfb29jRs2JCoqCguX77M9OnTOXjwIFu3bhV+T/Jo4sSJ+Pn5cf36dXr06KHpcPJl9OjR7N+/H5lMVmbrP/KdfPj5+dGqVSvlf0+dOhWAYcOGsXXrVqZPn05qaioTJkwgNjaWBg0acPbsWUxNTVUXdRHx9fWlTZs2bN269b1LiwWfpq+vT2BgYInpVisoGJlMhr+/P127di3ysR0cHNDS0uL27dtFmnxs3bqVUaNG4eDgwLRp0wq0cZiNjQ19+/alXr167N27l9q1a3Pw4EG6dOmihohLl1q1auHl5VUia8q6d+9O9+7dNR2GRuX7/1rLli0/WlkuEomYM2cOc+bMKUxcGqdQKHBzc2P48OF06NBB0+GUaGZmZqSlpREfH//B2h9ByRYUFIRMJiuSQtP/0tPTw9ramufPnxfZmBs2bGDs2LE0btyY3r17F/pxSfny5Zk2bRq7du2iR48eHDx4sMTdzRcFuVzOV199RdOmTRk3bpymwymU2NhYDhw4wMiRI8vk47biuR5Jw7y9vZVJ1sqVK4XltCrQunVr5SyZoPRJTU0F0NgUsp6eHikpKUUy1t9//824ceNo1qwZffv2VdkXh56eHkOHDqVmzZr079+fGzduqOS6pUlcXBwXL14kPT1d06EU2vPnzxk7diwXLlzQdCgaISQf7/HkyRO0tbWLfSFsSdKtWzfOnz8vdHcspXKKKjW1T6VCoSiSu8eYmBhGjRpFtWrV6Nmzp8rrW7S1tRk0aBD29vYMGTJEmdSVdXK5nBUrVqCvr8+9e/eKZQOx/PLy8qJ9+/bFvreVugjJx794e3uzd+9eRo8ezblz54QZDxWaOHEigYGBwhLlUiqnpqeoZh/+KyUlpUjqyr766iuSk5Pp27ev2hpZ6ejoMGDAAIKCgpg9e7Zaxihpzpw5w9SpU7l06VKpKdAUiUScOXOG3r17azoUjRCSj/+nUCiYMmUKmzZtKrK7qLLE1NQUIyMj3r59q+lQBGrg5OSEmZkZYWFhRT52UlISUqmUWrVqqXUcX19f9uzZQ/fu3TE3N1frWLa2tnTo0IHly5cTFBSk1rGKM7lczoMHD+jYsSP37t2jc+fOmg5J5R48eFAmH7EJyQdw584dkpOTOX78OEePHhU6l6rJ+fPnsbW1FTabK4VEIhF169bVSJPAnDHVvdJlzZo1SCQS6tWrp9ZxcjRr1gx9fX02bNhQJOMVR7Nnz6ZBgwa8efOGmjVrajoctfjmm2+YPn26psMocmU++QgNDaVFixbMnTuXcuXKCY9a1KhRo0YYGRlx7NgxTYciUIOGDRvy6tWrIt/L5/nz51haWlKxYkW1jRETE8OePXto1KhRke0boq+vT7169diwYUOpKLDMD7lcjkwmY8SIEWzevLlUb8Y3fPhwtLW1y1yn25K3QFqFEhMTcXR0ZN26dcKytiJgZGTE/fv3cXV11XQoAjUYOnQoCxcu5P79+4WehZDL5URGRhISEkJISAgJCQlkZmaio6ODWCzG0dERZ2dnzM3N8fX1ZfTo0WqdsTx9+jTp6el4eXmpbYz3adCgAVevXuXatWs4OzuzYcMGHj58iEwmw8bGhgEDBtC5c2e1PCbOysri1KlT+Pn5kZKSgkQioWfPnlSqVEnlY/2bXC5nwoQJREREcOTIEbUmlcXBwIEDS2wTzsIos8nHtWvX6NatG0ePHmXQoEGaDqfMKF++PAqFgqSkJExMTDQdjkCFqlatSsuWLbl27VqBk4/k5GRu3rzJVe/rxEqjATA0rYiOoSsikT4KRRrPXr4g7f83kjM3F5OUlMTgwYNV9nO8z+3bt7G2ti7yZnn29vbo6enx5Zdf8vjxYywtLWnevDmmpqY8ffqU7t274+zszPLly1VWuCiXy1m5ciUrVqwgKCgIW1tbjI2NiYyMZObMmbRt25a5c+fSqFEjlYz3XyKRCBMTE7p3715mHoHLZDLOnj1Lp06diu2OvKpWNn7K97C1taVjx47KPWgERadjx458/fXXmg5DoAZTpkwhICCA+/fv5+t9crmcixcv8tNPP3P8+CkwbkfFxieo0TmSym38qdj4BBUaHaZi45NUafeC6p3CKN/wMBg2AbRo1aoNW7ZsUdtSX19fXxwcHNRy7Y9JSkpCS0uL6OhoNm/eTFhYGEePHmXfvn3cuXMHPz8/6tSpQ9++fdm8eXOhx8vKymLo0KFMnTqVli1bcuvWLd68ecPLly+Jjo5mx44dxMTE0KpVK5U/PpXL5UydOpVr166xdOlSRowYodLrF2c3btyga9euXL16VdOhFJkyl3x4e3szcOBAHBwc2LFjh1DjoQGNGjXiyJEjyGQyTYciULGuXbvSvXt3Dh06lOdt46Ojo/n99z84duwvLF3G4tEhEBfPzZjatEFb9/2rSnT0JJjbdqJ8wwN4tH+GjkVnvvjiCzp16vLOrtqq8OLFC410592+fTtmZmbcvHmTESNGYGhomOt1T09PDh8+zJgxYxgzZgy3b98u1Hg//vgje/bsYe/evWzdupX69esrXzMwMGDw4MFcv36dLl26MGDAAO7du1eo8f4tNDSUXbt2lcmC9KZNm1KrVi0CAwM1HUqRESk01RXoAxISEjA3Nyc+Pl4tU5w//PADPj4+HD9+XEg8NOTt27fIZLIC7YUhKP4iIiLw8PDAwcGBESNGfLQeITQ0lDVr1yMXSXCsswkTSZMCjxv/5gThDydga23MpUvnVVpbZGFhQYsWLWjdujUZGRk8efKEhIQEtLS0sLGxoWLFiip/RBAcHMzy5cs5evToJ/cByczMpFKlSjRr1oxt27YVaLy4uDjs7e2ZOnUqv/7660fPTUtLo0aNGtSvX5/du3cXaLwccrmcHTt2MHjwYJKTk8vsPlAKhaLEP2bKz/d3mUk+vL29AWjSpAkymUzoXloMlOUdHUu7EydO0L17d+rWrcuAAQPem4BERkby+++rEOlXpHzD4+joWxV63PTk1wTd7IS1JVy7dlVlCa6FhQUNGjQgMzOTW7dukZSUhI6ODllZWSgUCmxtbWnUqBHNmjVT2TP73bt3Ex4ezuvXr/NUULp48WJmz55NaGgoVlb5/7tcsWIF06dPJzg4OE979Pz222/MmDGDkJCQQs0K7dixg2HDhnHx4kVatGhR4OuUBhEREUilUjw8PDQdSoHk5/u7TDx2ycjIYOjQoSxevBiRSCQkHsWAt7c3NjY2GukLIVC/zp07s2PHDu7cucPWrVtJTk7O9XpmZiabN29DoWNP+UYnVZJ4AOgbu+La8BSRb9MYNGgIcrm8UNfLzMxkwYIFJCYmcu3aNfz8/BgzZgzPnj1DJpORmZnJ5cuXad68OX/99RdbtmxR2VLj0NBQevTokeeVLD169CA9PZ0HDx4UaLwzZ87Qtm3bPG8OOHjwYDIyMrj4/8W/+SWXywkKCmLgwIFcunSpzCcekL3yZdKkSZoOo0iU+uTjyZMnaGlpcerUKfbs2aPpcAT/r1atWmRkZBR6ylZQfH3++eccOXKE4OBgFi9ezKNHj5SvnTlzhqjoaJw9d6GjJ1bpuHpGLjjU2sClSxcK1aDrzZs3NGzYkO+//x5dXV3EYjF3795l2bJlVKpUCZFIhJaWFs2bN2ffvn38/fffPHv2jH379qnk55DJZPlaEZbTXr6gLe4TEhKwsbHJ8/lWVlaIRKIC703yzTffUL9+fZKSkmjevHmBrlHaDBkyhODg4DKxp0+pTj6ePn2Kl5cXy5Yto3LlykKNRzFiamrKpUuXmDx5sqZDEahR165d8ff3p0mTJvz555+sXbuWK1eu8M8/5ylX+TsMzaurZVxTm7ZIXEcydeo3REdH5/v9ISEhNG7cmMDAQFq2bElGRgZnzpyhQoUKH3xPx44dWbVqFb6+viopejUyMsrXzGDOuWJxwZI5Y2NjYmNj83x+fHw8CoUi30vm5XI5CoWCvn37snTpUrW3qi9JhgwZwtOnT98pLC6NSm3yIZPJcHd356effmLixImaDkfwHvXr10dfX7/QU+OC4s3BwYHjx4+zb98+LC0tOXz4MFq6lti4T1PruHYec5FlZOV7CWpMTAytW7cmKSmJiRMnKvtpVKlS5ZPvHTZsGFZWVvj4+BQ0bKVq1apx+PBh4uLi8nT+li1bsLOzy7VCJT9atmzJ2bNnkUqleTp/3759aGlp0bRp0zyPkdNAbNq0aTRq1IihQ4cWKNbSSkcnu/XWnTt3NLZDdFEplcmHt7c3lStX5vnz53zzzTfCjEcxNnToUL788ktNhyFQM5FIRL9+/Th79iyGhsZYlR+DlpZ6i4119CSY2/dl1aq1ZGVl5fl9Od01x40bh0Kh4M2bN3zxxRd5eq+enh5Dhw7F39+/oGErNWzYkPT0dFavXv3Jc8PDw9mxYwdjxowp8M7Ro0aNIisriz///POT52ZlZbF69Wq6du2Ks7NznsfIysoiKiqKGjVqFCjGssDb2xtPT09u3ryp6VDUqlQmH9ra2tSqVStfvxQCzXBycmL37t1lbl+DsurkyZOkpiYjcSmaBlISly8IDQ3K8wf5oUOH2L9/P7169cLKykpZP+Hk5JTnMZ2cnN4psC0ImUyGXC5n9uzZH62NioiIoGPHjlhaWjJhwoQCj2djY8OoUaP48ccfWbt2LYsXL6Z///5UqFABY2NjdHV1MTIywtXVFXd3dx49ekSnTp3ydIcul8v5/vvvCQoK4tChQ2WqgVh+NW7cGBcXl1K/022paq/u7e3N33//zcKFCzl69KimwxHkwYQJE+jTp4+wAqmM8PPzw9DUGT2jorkxMLT0RFtHHz8/Pxo3bvzRc1NSUhg/fjw1a9ZUdj7OmUXIa8O0nHMLu4RcoVBw7NgxbGxsaN++PYMGDWLfvn1MmDCBtm3boqWlRUhICBs3bmT9+vXo6upy9uzZfBWM/ldaWhp16tTB0NCQCRMmoKenh5OTE05OTtSqVQsdHR0yMzOJjY0lODgYPT09xo4dy5o1a/jyyy8ZOHAgRkZG7722v78/v/32G9WrV8fNza3AMZYF2traPH78+IN/l6VFqUo+1q9fT2hoKOnp6RgYGGg6HEEeODg44ODgUOqfbwqy3brlh75p3SIbT0tLDyPzGnnq/Llv3z7evn3L2LFjlc2erKysMDY25ujRozRp8ukGaAqFgkOHDuVrpuR9/Pz8ePToEUePHqVbt260bNmSlStX8tlnnyESidDV1UUmk2FqasqwYcOYMWMGjo6OBR7P29ubYcOGERgYSNWqVenXrx9Vq1b9aM8SuVzOs2fP8PHxYcyYMfzyyy9s3bqVVq1a5Trn1KlTdO7cmcDAwDwv4y3rjIyMSEtLIzo6utD/loqrUtFk7Nq1a9jY2ODs7ExmZmapzxhLm9u3bzNgwACuXLlSqrfOFoC9gzNyk8+x85hbZGMG3f6Cyg5BXL/u/dHzPD09SUtLY8yYMbmOHzt2jHv37hEaGvrJz5abN2/SsGFDRo8eTbVq1QoUb2RkJCtXrqR79+7s2rVLeVyhUHDjxg0ePXpEWloa5cqVo2PHjsoltgUhk8mYMWMGv//+O66urvTv379ACUJUVBT79+/n5cuXjBs3jt9++w0DAwN+//13pkyZwt27d6lVq1aB4yyL2rdvj46ODidPntR0KHmWn+/vEj/zkZSURNu2bXFwcKBfv36MHDlSuRzO398fLS0txGIxVlZWatl2WlB4FStWJCQkhF27dvHNN99oOhyBGqWnpaFnXrQ3B1raRqSmfrym6PHjx9y5c4dRo0a981qTJk3w8fFh2LBh7NmzR7ki4b+ioqIYPHgwdnZ2VK1atUCxRkdHs27dOpydnVm1alWu10QiEY0aNVLZbrKpqan07t2bc+fO0a1bN1q0aFHg7qw2NjZMmDABHx8fNm3axLNnz9i2bRujRo3C3d1dSDwKoFevXvzwww8kJyeXykUTJb7g9NmzZ6SlpSESidi1axcxMTHK14YMGYKHhwe2trY8fvxYebxXr160b9+eAQMG5FpWtn//fo4fP861a9fyVR0vKBwLCwsOHz7MsGHDNB2KQM10dHVRyDOKdEyFPANdvY+vALl16xYikei99QhWVlYMHjyYI0eO0L59e7y9vXM9JpTJZOzbt48GDRoQHR3NyJEjC/Ql/vLlS1atWoWVlRX//PMPlpaW+b5GXmVkZNC3b1/Onz/PqFGjaNWqVaHbwmtpadGsWTPGjh3LlStXqFKlCllZWXTq1ElFUZctw4YNIyQkpFQmHlAKZj5q1apFuXLl6Nev3zubIe3bt4/IyEikUinly5dXHq9YsSJBQUFER0crC8oUCgVDhw4lPT0dQNkiWSaTYWNjg1gsxsnJicuXLwPZMy6LFy9WHu/duzeQ/UsdHx+PpaWlMNOSD8IHVNlQrlw5wuJCi3TMzPRQ7Gw/Xoh5+/ZtypUr98FasZo1azJmzBgOHTpEs2bNqFq1KtWrVyczM5MrV64QExODm5sbX3/9NRKJJF/xpaenc/z4ca5evUrTpk05fPgw1tbW+bpGfs2ZM4czZ84wcuTIPPUvySuFQoGbmxtt2rTh/PnzzJkzh+XLl6vs+mVJTqOx8PBw7OzsSvymc/9V4pMPHR0drl+//t5lte7u7ri7u79zfMmSJe8cE4lExMfHI5VKiY2NVSYOOUvEpFJprtmQ2NhYtmzZglQqxcXFRZl8+Pv7KyvlW7VqxYULFwB49OgR8+fPRyKR4OnpyfDhw4HsadbAwEDEYjE2NjZlutvftGnT0NPTY8GCBZoORaAmXvXrsu+Ib5GNp1AoSIu/S716H98v4/79+5+sN6pcuTIzZ87kxYsX+Pr6cv/+fUQiEcbGxsrPjfv37+Pl5ZWnrp9xcXFcv36da9eukZyczIoVK/jqq69UtjHdh/j5+bFo0SI6dOhQ4MdD7yOXyzl48CB2dnZ06tQJQ0NDVqxYQa9evfLViEzwPzdu3KBx48b4+flRt27RFWoXhRKffAC4urqiUChISkrKd6vff9PX18fOzi7Xh5CBgQHffvvtO+c6OTkp2xlnZPxvGtnFxYXDhw8jlUpzFYKlpqYSHh7Oo0ePkMlkyuTj7NmzDB48GIDhw4ezZcsWIHvWZvny5UgkEvr37698JHH37l2ePHmCWCzGw8OjVPUy0dLSYuPGjfz888/CbrellKenJ1u2bEOemYKWjvprP2Qpr5ClSfH09PzoeQkJCXn67NDS0qJy5cpUrlw51/Hw8HAuXLjAiRMnOHnyJBUrVsTZ2RlHR0flLGhmZiYxMTGEhoYSEhJCQEAAOjo62NvbI5fL872hWGZmJo8fP+b27dvcvXsXqVRKZmYm+vr6lC9fHk9PTzw9PXPt7JuZmcnQoUNxcHCgTZs2+RrvUzIyMggNDcXFxQWAFi1a8PDhQ4YNG8bjx4+F5fQFUK9ePcqVK8eJEydKXfJRKla7AAwaNIjk5OQS198jISGB169fI5VKEYvF1KxZE4CLFy8qa1i6deumbMrzww8/MG/ePCB7C+2cxGjKlCls374diUTCwoUL6dWrF5C9LffLly8Ri8V06dIFV1dXILs4Tk9PDzMzM7XfaeVVQEAAjx8/pmPHjh8s6hOUbAEBAbi5ueFUZwMSF/W31o54Op+410uJiAj/6Kyiq6srTk5O9OnTp1DjJSUlcevWLQICAggJCXnvpmuWlpY4OTnh7u5OvXr1uHnzJmfPns1zY7Jnz56xbt06tmzZQnx8PCKRiHLlymFqaopIJCIzM5Po6GgSExOB7EdGOX04zp07R8+ePZk6darKblzkcjkXLlygUaNGGBgY5Hrc/ObNGxYtWsTu3bv5/PPPVTJeWVOSHruUqdUuORo2bMg333xDfHx8iXp0YWZmpkw4/q1Vq1a51svn+OWXX/juu++IiYnJVYjUtWtXypUrR0xMTK514deuXePQoUPExMRQsWJFZfLx+eefc+HCBbS0tLh69aqyAdO0adN4+/YtYrGYmTNnUq5cOQB8fHwwMDBALBbj7OyslnqWihUrUrFiRZVfV1B8VKxYkfbtP+P6bfUnHwp5JnEhmxg8eOBHPxP2799PSEhIoRp05TAxMaF169a0bt0ayN58LTExkaysLHR0dDA3N39nhkUmk+VpI7HQ0FAmTJjA33//jampKfXr16datWo4ODi8U6uiUCiUzcD8/PwYO3Ys06ZNw9bWFldXV5XOmL569YoTJ05gY2PzzmeZnZ0dlSpVYtWqVULyUUD29vYoFAri4uKwsLDQdDgqU2pmPuLj44mLi1NO+QlyUygUKBQK5SzHrVu3CAoKQiqV0rNnT+UH7/jx43n48CFSqZSzZ88qGxfZ2toSGRkJZG+8lbNzZt26dTE0NEQikXDkyBG0tbXJyspiw4YNyjqWnCQq55/axzJ4f39/Jk6cyIEDB9RedCfQjL///ptu3bpRodHfmJVrp7ZxYl5vJuTeBO7cuaOsw/qvy5cv06ZNW7T1nbAWy/n2mylqi+dDtm3bhqGh4Qc3o1MoFGzdupXJkyejpaVFp06dqFOnTr72cJFKpVy8eJGrV69ibW3NqFGjlDcWBSWXywkODsbV1ZXo6OgP/r7eu3ePrVu34u/vj4eHR6HGLKt69eqFQqHgyJEjmg7lo8rkzIe5uTnm5ubIZDKhXuA9RCJRri99Ly8vvLy83jlv7dq1733/rVu3ePv2LVKpVJl9y+VyWrZsiVQqJSkpSTkbEh8fz9dff01mZia2tra8efMGgKCgICpVqoRYLKZOnTqcOnUKyL6j++2335BIJNjZ2XHt2jX27NnDyJEjlYmOsbFxiZh2FHxaly5daN26LddujcdYfAdt3bzfZOSVLDWUiMczGTp02AcTj6SkJIYMGY6xuCEm5boT8WQWmZmZRf7ILzw8nAEDBrz3taysLMaNG8eff/6Jl5cXPXr0KFATRbFYTO/evalTpw67d+9m2bJljBo1ikqVKhU47nPnznHmzBm+//77j94oeHh4KGdYheSjYFq2bMnMmTNJTEwsVFO54qTUzHwAPHz4kBYtWnD58mVh10QNUygUJCYmkpiYiIODA5C9QmjPnj1IpVKMjY2ZMiX7LvPu3bvKnit169Zl4MCBNGzYkICAADp37gxAz549OXz4MAAXLlxg5cqVSCQS2rZtq5zOff36Na9evUIsFuPo6JjvJY+CohMUFISHR3UMJN1xqvunShNLhTyDVzd7YMgTnj71/+BU9YQJE9j45zbcW/qRmRbJi6utmDx5svLRZFFITEzkxx9/ZPv27QwZMiTXa3K5nBEjRrBz50769+9PgwYNVDJmeno6W7Zs4cWLF4wZM+ad4tlPkcvlZGZmkpqayqtXr6hdu/ZHz1coFMqVflWrVkVPTw8PDw9Gjhyp/GwQfFxCQgIpKSnFvj19fr6/VV5pmJmZyQ8//ED58uUxNDSkQoUKzJ07F7lcruqh3lG5cmW0tbXZuXOn2scSfJxIJMLMzCzXh0vOrps//PCDMvEAqFOnDs+ePSM6OprTp08zbNgwKleujJeXF6dPn2b37t1MnDhReb5CoSAjI4PHjx8TGBioPH7gwAFat25N7dq1c/UWWLZsGdWrV6dFixYcOnRIefzChQts3LiRQ4cOERr6v94TOT1eBOrj4uLC+vVrkYbs4o3/9yrb20chzyTk7miS315m585tysQjKyuLgIAA7t27x40bNzhw4ADr1q3DpvJP6BtXwMiyPnpG9kW+k+iNGzfQ19dXJtn/9vPPP7Njxw4GDRqkssQDslf15cx6bNq0iYiIiDy/V6FQcPDgQTZs2ICpqeknE4/nz5+zZMkSoqOjSUlJITU1lejoaBYvXoyLiwv9+/fP1RhS8H5mZmbY2toqd1kuDVQ+v7ho0SLWrVvHtm3bqFatGn5+fowYMQJzc/N8LyXLLz09PU6fPq3SteuCopVzB7x48WIUCgUzZsx455w2bdq8d5nghAkT6NWrFzExMbmmgatWrUqbNm2QSqW5pqwPHjzIunXrUCgU7Nq1i4EDBwIwYMAATpw4gVgsZufOncqalRUrVvDmzRskEglDhgxRLskODAxUFuMKGxrm3eDBg5FKpUyaNImsDCn2NZahrVPwbo6ZshhC744lPvIky5YuJSIigilTpuB36yZ3790jOSU11/la2sZIXLPbqYu0dBC7jMbPbwHdunUrkv2h5HI5N27coFOnToSGhhIdHY2DgwMmJib4+fkxb948Pvvss08uEy4IHR0dRowYwZIlS9izZw+TJk3K06o3kUiEWCzGxcXlk+c/ePCAbdu20aRJE7Zv307r1q2Vv98JCQns2LGDOXPm0KRJE65cuaKSgt/S7M6dOzRv3pwbN25QvXp1TYdTaCp/7NKlSxfKlSvHpk2blMd69+6NkZERO3bs+OT7C/PY5d/kcnmxWUIqyL9Jkyaxb98+QkND1foMPisri/j4eAwMDJRfOP/88w+PHz9GKpUyZMgQ5QqcYcOG4e3tjVQq5fLly8rK/ipVqvDs2TMgu0V2zvn9+vVDLpcjkUhYvny5cnXS33//jbm5ORKJBA8PjzJfy7JlyxbGT5iItp4d9jU3YGKV/4ZU8W/+JuzBBLQUSZSzlhAUkj2T5WJpTHVLPWpYGeFhZYSFvjbaIhEDTgSg7zAax5rLlNfISIvg8Vl32rZp+d6ZCFW7efMme/bsyXUsu8V7FaKiwtHV1WX69OlqrWF79eoVK1eupGvXrsoVOu8jl8s5cuQIVatWzVPdRmRkJMuWLaNbt27s3r37g8WxL1++pGnTplSpUoWLFy+W+d+Fj5HJZNjb2zN27Fhlu4XiRqMFp02bNmXdunU8f/6cSpUqcf/+fby9vVmxYsV7z09PT1e2NAfeuy4+vyZNmkR0dDS7d+8u9LUEmjF27FiqVq2qXKKoLtra2sqVOznatm1L27Zt3zl327Zt773Grl27iIiIQCqV5mroZGJiQlhYGK9fv1Z+gWRmZtKtWzcgu4Fdamr23Xh8fDw1atRAIpFQsWJFDh48CGR3wfzzzz+RSCQ4OzsrZ3yysrLIysoqFcXVI0aMoGnTpgwdNoIb3m0xL9cGS5exmNt2QqT14f/38qw04sIP8zZgBSlxD9DV0SZDLqeqTjJzPnOjbjljzPXfff/jmBQS02WUs++Z67iugS3lKs3kn3/mUbNmTbVuZR4XF8fhw0cwFjfCzuMXRFp6KOTppCcHEBt3l3S5N/Fv/fl13gKaNW1My5Yt87W6Ja/Kly9Ps2bNOHPmDI0bN/7gzF1ycjKPHj1Srn77lKtXr2Jubs6OHTs+GrebmxsbNmyge/fu+Pr6vrcIXpBNT0+Pixcv5rtGp7hS+af6jBkziI+Pp0qVKspll/PmzfvgGu8FCxbw888/qzQGZ2dn1q1bR2xsrFo3ZxKoj4eHR4mpjP/QtPjmzZvfOaatrU1UVBRSqTRXoi0SiRg2bBhSqTRXQhEREcEvv/xCQkICnp6e+Pn5Adl3zU2aNMHExISOHTuyf/9+ILtN+Lp165BIJNSrV48ePXoA2cujo6OjEYvFWFpaquWLrDDc3d3xvnqZPXv2sPKP1fje6oeegSUG5nUxMKuDnrErIpEuCrmM9KSXpCfcISXuLpkZSQBYGesxsLKEz6tYYWfy8YTsUXQKIMLQovY7r5WrNJ2EiKPs2rWXqVMnqSW5k8vl7Nm7D4WWOeUbHkZH73+fUSZWzcBlOAApcXd5+2oDp07t5Nat2wwaNEAtxbCtW7fG29sbPz+/d9qgy+Vyrl+/ToMGDZg1a1ae/j7S0tK4ffs206ZNy9NjyM6dO+Pq6srq1auF5OMTchZSaGJVlqqp/LHL3r17+fbbb1myZAnVqlXj3r17TJ48meXLl79319L3zXw4OTkV6rHL27dvefnyJQ0aNBCm8UqwgIAAfvzxR1avXl3mk8iMjAySk5OVBZSRkZGcOnUKqVRKuXLlGDRoEJDdGXfatGlIpVI+++wz1q1bB8DGjRsZM2YMkF0bs3r1aiC7A+6WLVuUbfx79syeDXjw4AHBwcGIxWIqVaqElZVVkf68d+7c4fjx4/j53eaW722iIsOVfWrsHZxxdnLg8aMHZKalMsvLnn5VrNDVytvv+hyfYA4Em+Hexv+9r6fGP+Tl1Ra4ubkwetRIlX7Iy+Vy9u8/wI2bN6nQ8Chm5dp/8j2pCY8JvTuKlLh7dOvW9b3NBwtr8+bNREVFMWPGjFyfmffv32fr1q2MHTs2zxvQvXr1it9//527d+9+siA1x7Rp0zh27BgvX74sSPhlypgxY0hISGDv3r2aDuUdGn3s8u233zJz5kzluvUaNWoQFBTEggUL3pt86Ovrq7znv5WVFVZWViqroBdohrGxMfv376d58+aMGzdO0+FolK6ubq4lo+XKlVPuD/RvrVq14s6dO+8c79GjB1WrVn2nA66xsTGWlpa8ffs210zM5s2b+f333wFYtWqVcrXR5MmT+euvv5BIJMyfP5927bKbhO3fv5/w8HAkEgnt2rVTLglMTEzEyMgo3x1x69atm2svC4VCQVZWFomJiUydOpWtW7fS3MmCBV2q4vCJmY7/ikvPQlv/w0sWDc1r4NrgIC9u9GTd+o18MWKYSgpQMzMz2bdvP76+vjjX3ZCnxAPA0MwDt2ZXePNkDseOLUUmk9GhQ4dCx/Nv9evXZ9OmTUilUiQSCXK5nLdv31KzZk2mTJmSr46oMpkMIF+dps3NzfPcXr6sq1SpEj/88EOJ6+b9XypPPlJSUt4p9NTW1i6Spbb/9uzZM7p3786xY8dKzTOyssbW1pYFCxbk+e5J8GHW1tbvbQTVvXt3unfv/s7xxYsXM2PGDKRSaa5VCC1btsTQ0FC5F1GOI0eOcOzYMVJTU7l06ZIy+Wjfvj03btzAwsKCK1euKKeNZ8yYQUpKChKJhMmTJysTq7t372JiYoJEIsHS0lJ5Fy4SiQgLC6Nt61ZEhIWysLkL/StLCjSzmaVQAB9PhkytW1Oh0d+8utmbhQuXMGBA30I9BgwODmbHjh28jYnFpd5WLB375+v9Ii0d7Kv9ipaOCadOzcHMzIxGjRoVOJ7/ykkuQkNDkUgkHD9+nGvXrvHDDz/kuxV7Tqv4N2/eUL58+Ty9Jzw8vFS1Dlen4cOH065duxKdeIAako+uXbsyb948nJ2dqVatGnfv3mX58uV88cUXqh7qo1xcXIiMjGTbtm3Mnz+/SMcWqM77dhQWqJ+ent47OzxD9gxKTh3Jv+Ws2khNTc1VT/LLL78oN078dzFuYGAgz549IyYmhi+//FJ5vEWLFsoN0VJSUjA0NEQulyt7wegoMjnZqyouZvqkZ8k5FSjFwkAHK0NdqlvlbXbCUEcLRdanC9tNrJpTudVtQu+NZ8OGDdSpW5dWLVvm68s4KiqKq1ev4u3tg0gE7s2vY2RRK8/v/69ylWYgSwni8OHdVKpUSWWN9HI6RAcHB1OjRg3q16+Pvb19gXYJd3BwwMLCgu3btyv3jPqYlJQU9u/fz8iRIwsSepnz75n9klxWoPKaj5yOfUeOHCEqKgp7e3s+//xzZs+enadiJVUttYXs7eqrV6+e60NPUPJs3boVmUymrFkQlF4PHjxAKpUilUqVOzP7+/tTv149tOUZ1LUxZnsndwDCkmQ02f0QAGdTPa58nj2r8jIujb7HnmJhoENta2N+a5199x2amM6h5zE8epvC+ZBUanSNRSTSRp6VhkKejpaO2Xs/zBUKBdKgrUQ9n0d6SiiOTi7U86yDk5MTjo6OuR4bZ2RkEB4eTkhICPfvP+TFi2fo6ovRNa5ERloU1do/LvTfUVZGIs8v1sXR3pCJE8aprKXAqlWriI2NpUKFCgwcOLBQX2ynT5/mypUrBAQEfLIr55o1a/jyyy958eKFsLFkHj169IjOnTtz9uzZYjWzr9GaD1NTU1asWPHBpbVFqX37vD1TFRRvN27c4MSJE4waNUro3VLK/XdX1LCwMLp06oidoTb7u1TCyvB/syr2xro8+aIOsWmZpGX+77GumZ42o2qWIz49C7HB/z7iwpNk7HwcjTQtE7kC0pNeYGBahYSIk7z2HQgibSTOw3CqswaAxKjzSEN2oaMnwcS6NVXaPSMh4jTRASs49tcJFPIMAIyNzdDR0SUrK4uUlETk8ixEIh2MxfVw9tyMhX0vAnw6YmypmmZh2rqmONRaQ8D1rrx48UJlXz66urrI5XLc3NwKfUfdpEkTrl+/zmeffca5c+c+uPfLmTNnmDp1KiNGjBASj3xwc3MjPj6e7du3F9ueH59Sstfq5MHcuXOJiIhgzZo1mg5FUECjR4/GysqKtLS0Iuk8KSge5HI5A/r1RRb3lgNd3HIlHpBdB2KoI8LwPwWnNka6TKyT+3ERgJedKb5DahGXlkGd7Q9IjL6IgWkVjMReuNbfRaZMip6Rq/L8rMxkZMmvSIm7g46eFea2HTG360xq/F2S3l4FwNyuG4YWdVBkpZMS64eOPABdQ3ts3L/B3LYjAPFvTpIc64fErBqZ6W/R0S/8yiFTm7YYmXvg7e1T6ORDLpdz/PhxUlJScHZ2Vkkrd1NTUypUqMDDhw+pU6cOX375JSNHjlQmIb6+vqxZs4YdO3bw2WefCZ/P+WRgYMCRI0feSdZLklKffOjo6LB161YWLlxY6Mc4As3w9PRUS4tpQfH2xx9/4H3tOvu6Vsr3ipaPsTDQpZ2rJT6v12FVfhx6ho7oObzbPMvCvhsW9t3eOW5Vfhxmtp3J+v9kRd8k+449NnQ/CZFnycqIRST630drxNOfQZFBzOs/MbVpr7xm4I2+pMTeQlvPEpe6mzD6/5mR6MB1yDPi0dYTY+HQGx297MLejLQItHRM0NLO3uFZ7DqeRw8mFXrVQ0xMDNeuXcPQ0PCdGp+Cun79Onfv3mX27NkEBwfz888/8/333yMWi5HJZCQkJODi4sKCBQuYMmVKie9ZoQnqWHJdlErVrrbvEx4ezrVr1+jWrVup6AZZVoWHh7N8+XJ++umnUrOltODDXrx4Qa2aNejvZs6cxqrvNOodmsDgky9wa3oWE6vmKr9+DoUiiyf/1MbQzAP76gvR0bNCWzf7329c2BHSkp6SJZNiVWEi+sauAARe70lyrC9ZMilV2z5A38QNAP8zbmSkhiLS0sOj/QtEIm0enXKkfPnyWFtbY2xsTJcuXdDW1kahUPDy5UuMjIwwNjZ+70oSuVzOgwcPqFWrFgkJCcydO5cePXrQrFmzQv3M165d48CBA4wfP55Vq1YhEomIiYnh6NGjREZGKne17dChQ76XYAtymzVrFlKplPXr12s6FEDDNR/Fjb29PX369NF0GIJCysrKYvny5VSrVo0RI0ZoOhyBGsnlcr4YPgwbA22m11dPsXhjB1OqSEwIeTCZii1voKWlnhuT6IDVyJJf4uK5CX3j3MtOLRx6vvc9FRodAUChkAP/q71wrruBzPRoMmVStPUs0dLSQ8/QnoSEBORyOenp6crW/enp6cpGckZGRsoVf4mJiaxZswYjIyMUCgWBgYFMnjwZLS0tsrKyCtVSPjU1lWPHjnHjxg0mTpzIypUrlbUjEolEWM2iBqampqxcuZKlS5eWuJuyUp98QHbHvZEjR/Lnn39SoUIFTYcjKAAnJyemTp36ycp5Qcm3YcMG5eMWI1313BlriUQsa+FEtyNPiXy2ELuqs1U+RnrSS948no1VhYkYi/PfNlwkyl1cbWr97sZvhhb1EJs8Y+LE8bmO6+np8cMPP5CcnExGRsa/rinCzc2NlJQUQkNDsbOzw9XVlTNnzqClpUVUVBROTk75mpGQy+U8fPiQo0ePkpGRwfr16xk9enSJXgZaUowYMYLatWsre6uUJKX+sQtkb4pkZ2fH1KlTmTNnjkquKRAIVE8ul1OlkjtVRHH80TpvDaoK4ze/cFbejcTVax/mdl1Vdt1MmZSXV9sgl8uo0soXLR31FEqH3PsSg4xzfPvtlHy/18/Pj127djF79mxWrlyJiYkJISEhmJmZ0bRpU2rXro2VldV7V5gpFArevn3L/fv3uX79OjExMbRr144///wz303JBKWH8NjlP4yNjVm3bh3Vq1fXdCiCQjp58iRJSUn069dP06EI1OCff/7hRUAgC7oVTe+Cr+va8TQ2jXO+A3Gut+u9Bab5lZEeRaBPJ9KTA6nc6qbaEg8ARFoF7h5ds2ZNKlasSHBwMLGxsVy4cAG5XM7cuXP566+/OHnyJAYGBjg5OWFhYYGOjg6ZmZnExcURHBxMeno6enp6DBw4kAkTJlC/fn0V/3CCvHjx4gXDhg1j165dee4oWxyUmaYJAwcOLNHLkgTZDh48yMyZM4u8Xb+gaKxZvYqq1iZ4ljMukvG0tUT80dqVz1xMCfLtT9ijWcizUgt8vYTIswRc8kI77TkKeTryrBQVRvsueWYSenoF26FYT08PIyMj/vrrL1q0aEHt2rWpW7cuR48e5erVq7i5uZGWlkZYWJiyI+2jR4948eIFlpaWrFy5ksjISLZs2SIkHhpkb2/Pw4cP2b59u6ZDyZcyMfORY82aNbx584ZffvlF06EICmjkyJHI5XKSkpKEpdOlTHBwMH8fP8EvjR2LtF5AT1uLP9q4svGBIcv8VpIc8Rc2Hgswt+2ESCtvH5FpSS+IerYQacgumjiYs6BZJfr+HcDbVxtwrrNObbHLEh9hV8Xm0yd+wIEDB4iJiXmne3CTJk14/vw5vr6+bNq0idevX6NQKHBxceGLL76gYcOGQk1HMWFsbMyWLVtK3M11mUo+oqOjWbFiBTNnzsTYuGjurASq1aRJE5o0aaLpMARqsGXLFox0tenhLv70ySqmrSViXG1b2riYM/NqKLdv9cPA0A4Ll5EYS5piZFEHbd3/9dJQyDNJS3xKStxt4kP3kBB9CTN9PRY0c2ZAFStEIhFDqlry2909ZNVYirZO/vdI+RR5Vhop8Y9xdOxRoPffv38fPz8/JBIJV69eZeDAgbleF4lEeHl54eWV/2JZQdEqiSs6y1TyMXz4cMzNzSlmNbaCfIqNjWXr1q2MGTNGSCJLkatXrtDIzhhjNa1wyQt3S0MOdXPnYXQyOx5H89fLhUQ8zQTAwMAGbR0jFPIM0tPfkpWVDkAtGzOGt3KlY3lLDHT+9yS7jYs5S/3CSY27h4lVU5XHmhzjg0KRiYuLS77f6+/vz44dO+jXrx8//PADbm5uKo9PULSWL19OdHQ0CxYs0HQoeVKmkg8XFxcmT56s6TAEhRQbG8vUqVOxtrZm8ODBmg5HoAIKhYI7t/0Y4a76GYKCqGFtzOIWxixopiAgLo2Hb1N4HZ9GelYqOloixAbWVLcyopqVEaZ670+W3C0N0dPWJiXurlqSj5jXG7EpZ4+j47vdWT9ELpdz9epV/vrrL7p27cqOHTuUzRczMzOFTqMlWHx8PKtXr+bHH38sEdtQlLl/aeHh4cycOZN58+YVqqGOQHMqVKjAkCFDhE3mSpFXr14RG59ADauC1y+og7aWiEpiQyqJ899HQUdLRGWxMaFxt1UelywlhPg3f9O7d888115ER0ezb98+Xr58yaRJk1i6dKky2ZgxYwb379/n9OnTKo9VUDRGjBiBo2PR1ksVRplLPkxNTTl48CBVqlThu+++03Q4ggIqaZXdZVVKSgqJiYkoFAqMjY0/2IXx9u3sL+jqVsX/ji0/alvrExjiq9JrKhQKQh9MwtDQiHr16n3y3FevXuHt7c2DBw9wdHTk0qVLtGjRItd5lStXZsmSJYSFheHg4KDSeAVFw9XVldGjR2s6jDwrk8nHokWLhJ4fpcDt27eJiYmhffv2mg5F8P/i4uLYvXs3V69e5eat27wKfJHrdQdHF7zqe9K4cSMGDx6s7Fh7584d7MwMsTYq2LLR4qqGtRE7HgeSlZmksqLT2NC9JEScREtLi/Xr1+Pg4ICjoyOmpqZoaWmRkZFBdHQ0ISEhhIWFER0dTcWKFVmyZAmjRo3CxOTdOPr27UuNGjWwt1dPO3tB0QgODmbatGn89ttv+XocpwllosOpoHQaPHgwfn5+PHnypMRMNZZWL1++ZNGiRezcuRuZTIaJuB56ZnUxNK+Fjp4EEJGVGU9q/EPSE+6QEnsLhTyD3r17M2PGdH777TeeX/ib/V1KV+Hj9fBEPj/+nKptHyk3iCuMlLg7vLrWga5d2tOuXVt8fHzw9fXl+fPnuQrpjY2NqV27NvXr16dz5860bt06T48pc64h/D6VTAkJCdja2jJ79mxmzpypkfGFDqefcODAAUJDQ5kyJf9tiQXFw4gRI4iMjCQ+Pv69u3YK1C8rK4uVK1cyc9Z3aOmIsXD9BonrCHQNPrA1+/+XWWXKYokN2cXx0+s4eLA+7u7uWGkVq/sglchZ/SLPSiv0tZJjfQm62Z1atTzYtm0rJiYmjBs3Dsh+vBUfH09GRgYGBgYfbIv+MUFBQbRt25YdO3bQsGHDQscrKHpmZmYsW7aM2rVrazqUTyqzMx/fffcda9eu5c2bNxgYGKhtHIGgtIqNjaVb9574eF9BUn4i9h5z891KXCHPIPLFMiKf/oqRjhZn+lTC0VRfTREXvccxKXQ69AQb92+x85hboBkFhSKL6Jd/EPlsDvXre3Lq5HG1JNtZWVm4uLjQtWtX1q5dq/LrC0q//Hx/l9nlAsOHD2fUqFGkpha8lbJA89LS0jhw4ABpaYW/sxTkXUxMDM2ateSW7yMqNjmLY82lBdrDRKSli23lmVRqdZMMnXL0+uslwQnpaohYM7Lk2fd2US+W8PpGF5KlN/PcZ0ihUJAYfYlAnza8eTyLr78az4Xz59Q2y6etrc2ePXv46aef1HJ9QdHZvn07S5cu1XQYH1VmZz4EpcPTp0+pWrUq+/fvp2/fvpoOp0RLSUnh/v373L59m3v37hEXF0dWVhaGhoZUrFgRT09P6tWrh7W1NU2bteDBowDKNzqLoZmHSsbPSA0n0Ls1Yq0oTvR0x8Kg5D8V9o1Iou9fz9iwYQPz5y/i9esATMS1MXcYgpFlfQzNa6Cl/b9lvFmZyaTG3ydFepP4sG0kxz2lSpVqbNy4jqZNVd8rRFA6zZo1i/Xr1/PmzRv09YtuJlGo+cijt2/fsnz5cr7++mtl1b2gZKlSpQodOnQgOjpa06GUWL6+vqxZs4Y9e/aQnp6Ojo4OdnZ2GBsbIxKJyMzM5MSJEyQkJABgZ2dHREQkFZuoLvEA0DW0x7XxaV5eqseca6GsaO2qsmtrSnx6dnfUTp06MXLkSM6cOcMfq1Zz9swMsrIyEWlpY2Bkh5aWLnK5jLTkNygUcvT09OnWrRsTJ66lRYsWRVoAunDhQu7fv8+ePXuKbEyBao0YMQI9PT3S09OLNPnIjzI98xEbG4udnR3z5s1j2rRpah1LoD4KhUKozi+AJ0+eMGrUKK5du4ZEIqFhw4ZUqVIFOzu7dzpdKhQK4uPjef36NTdv3uTJk6fo6JlSrsrPWJUfi0ikuie4MUHbCbk7hj87VKSti4XKrqsJv98OZ1tACm+lsbn+jaanp/Pw4UNu375NWFgYMpkMfX19nJ2d8fT0pFq1aujqambZ8dq1a/nqq68IDQ0VbsoE+ZKf7+8ynXwA/PTTT9SsWZPevXurfSyB+oSGhhIeHi5sgpUHmZmZLFu2jNmzZ2NpaUnXrl3x8PDI1+qImJgY/vnnH65fv46JVVOc6mxA37iCSuJTKBS8ut4FcfoNLvarXKITy1FnAxC5eXL23D+aDiXPYmNjuXjxIl26dFG2XheUPJGRkcyfP59Zs2YVWRIpJB+CMqdfv348ffqU+/fvl+gvK3VLS0ujX79+HD9+nJYtW9KxY8dCfcE8f/6c3bv3kZScQfmGxzCWNFJJnElvr/DSuz27O7vT2KHkfg403POY4RMnlZjNvgSlh1Qqxc7OjgULFjB16tQiGVNY7ZJPly5dEtp1l3DDhg0jMzMTqVSq6VCKLZlMRo8ePThz5gyjR4+me/fuhb6zrVSpEjNmfIOzUzkCr3ciWXpDJbEaS5phZFqJ7Y/fquR6mhCVkkFEYiqenp6aDiXfwsLCaNGiBXfv3tV0KIICEovF/PDDD1SqVEnTobyXkHwAx48fZ9q0achkMk2HIiigTp064e/vj0Qi0XQoxdaECRM4f/48I0eOxMNDdYWihoaGjBs3Gmcne17d6IYsJbjQ1xSJRJg59Mc7LDnPS1OLm9sRSQAlMvkoV64cz549Y9u2bZoORVAIP/74I126dNF0GO8lJB9k9/xo164dcXFxmg5FUEA5j1p8fHzKTBKZmJjI+fPnOXbsGOfPnycxMfGD5548eZJNmzbRp08fKleurPJY9PT0GD16JEaG2oTcG6eShMHIwpMkmYyQxJL5/3Pvcyn1POtSvnx5TYeSbzo6OmzYsIGRI0dqOhRBIZ06dYpNmzZpOox3CMkHUL16dXbv3o2NTfHazluQP0+ePKFp06acOnVK06Go1YsXLxg6dCi2tra0bduWHj160LZtW+zs7JgwYQLPnz/PdX5cXByjRo2iatWqNGjQQG1xGRkZ8fmAfiRGXUAatLnQ1zO0qAOA/9uUQl+rqAUlpHM5OI6JX36l6VAKrFu3btSoUUPTYQgK6Z9//mHmzJnF7qZMSD7+X2JiIqtXr+bt25L7jLms8/DwoH79+vj7+2s6FJVLSUlh8+bN1KlTh6pVq3LixAmmTJmCv78/UVFRPH78mKlTp7J//36qV6/OlClTSEnJ/tL+448/kEql9OvXT+3FuFWrVqVevfpEPJ2DXF64DzsdfRtEIi1i/79XRkmy63E0luZm9O/fX9OhFMrGjRv56quSm0AJsnt+dOvW7aMzo5ogJB//Ly0tjcmTJwuNdUo4Hx8fvvvuO02HoTJxcXFMmzYNe3t7Ro4cycOHD2nbti1BQUH8+uuveHh4YG1tTdWqVZk7dy5BQUG0a9eOlStXYmNjw+TJk1m9ejV169bF0tKySGJu06Y1GWnRxIcfK9R1RCIRIpE2mfKSVfORlinnwItYvhg1GkNDw0+/oRhLSUlh/fr1wk1ZCVa9enU2bdpU7Orh1JJ8hIWFMXjwYCQSCUZGRtSuXZvbt2+rYyiVsba2ZsyYMcK69hJOV1eX5ORknj17pulQCu3UqVN4eHiwdu1a6tWrR4UKFfDw8ODIkSOYmJi89z3GxsYcOnSIGjVqYGBgwPr164mOjsbO7gO7zKqBnZ0dFSq4E/O6cJuTKeQZyOUZGGiXrHuknY+jiUvLUO44W5INHDiQZcuWFdsumYK8iYuLY8mSJcUqiVT5b3VsbCxNmjRBV1eXU6dO8fjxY5YtW1YitjxfvXo1Y8eO1XQYgkIaMWIEgwYN0nQYBSaXy5k0aRKdOnXCwsKC6dOn4+XlRWBgINOnT//k3bSBgQEzZswgJiaGL774And3dw4fPsyhQ4eQy+VF8jN4eXmS9PYaWRkJBb5GWuITAMpblJxdp1/Fp7HsdgRfffUVbm5umg6n0Kytrfnqq68wNTXVdCiCQpDJZHz33Xfs3btX06EoqTz5WLRoEU5OTmzZsgUvLy9cXV1p06YNFStWVPVQavHo0SOOHz+u6TAEhfD555/z+vVroqKiNB3KBykUCpKSksjMzF3PIJfLGTZsGKtWraJ3796MGTMGS0tL7t27h5mZGX369MnT9Xv16oWFhQUBAQGMGzeOPn364O3tza5du4okAXFxcQEgJa7gfSJSYrNnSz0kJePRhVyhYPrVEOwdHZk/f76mw1GZqKgoBg0aVCprqcoKGxsbJkyYUKySSJUnH3/99Rf16tWjb9++2NjYUKdOHTZu3PjB89PT00lISMj1R5M2bNjA6NGj3/lSEJQcXbt2JTw8vNitXlIoFHh7ezNw4EAMDQ0xNTVFV1eXWrVqsW7dOhITE5k0aRK7d+9m8ODBNGvWTFkgmpSUhKOjIwYGeZsFyNknJCkpCZFIRNOmTRk6dCh37tzh8OHD6vwxgewPOx0dPVILkXwkvb2KjrYuWSWk5GProyh8wxPYvHUbxsbGmg5HZSwsLDhz5ozQ86OE+/333xk2bJimw1BSefIRGBjI2rVrcXd358yZM4wbN46vv/76gx1EFyxYgLm5ufKPk5OTqkPKl+HDh+Pu7l6s75oFH6ejo4Oenh6vXr0qNklkSkoKPXv2pFmzZvj5+fHTTz+xe/duNm7cSIUKFZg4cSKOjo6sWrWKnj17Urdu3Vzv19HRIT09PV9jpqWl5dogrk6dOvTu3Rtvb28ePXqkkp/rQ7S1tZFIrJGlvC7Q+zNlMcSFH0augNneIcW+0diL2FSW+EXw9ddf07x5c02Ho1J6enosXbqUzz77TNOhCArp9u3bHD16VNNhAGrY20VPT4969epx7do15bGvv/4aX19frl+//s756enpuT5UExIScHJyEvZ2ERTK06dPqVq1KqdOndL4h2ZGRgZdunTBx8eHLVu20Lt373c2cXv48CH169fH1dWVcePGvbMk9tatW+zevZuXL1/m6RHmq1evqFixIv3796dhw4bK4wqFgo0bNxIaGsrMmTMxMjJSzQ/5HkuXrSBFqyXOddbl+71RL37jzZOfsK++hLAHk5hY25ZvvRzUEGXhhSSm0/f4S6ydK3D95q1SNeshKF2++uorDh8+THBwMNra2iq/vkb3drGzs3undXPVqlUJDn5/y2V9fX3MzMxy/dE0mUzG0aNHhY6nJVjlypWpVq0aFy5c0HQorFu3jvPnz/PXX3/Rt2/f9+4eu3nzZrS0tBgwYMB7e3HUrl0bY2Nj1q7N2wqS9evXY2ho+M4Mikgkol+/fshkMrU3Y8vKykIkyv+28Bmp4UQ+X4Sl4+dYVxiLffVFrL4Xweq7b9QQZeG8SZIx5HQgxla2nDn3T6lOPA4fPszcuXM1HYagEIYPH06NGjWKxaoXlScfTZo0eWeZ4/Pnz5UFaCVBTEwMvXv3Zv/+/ZoORVBAIpGIq1evsnjxYo3GoVAoWLNmDb169aJ169bvPScpKYlNmzbRpEmTD/bi0NPTo2HDhvzxxx9cvXr1o2Neu3aNFStW0KBBg/cuHbewsKBZs2bcunWLtLS0/P9QeZSUmIS2nkW+3qNQKAi59yUiLX3sq2cXbdq4TcK2yo8s8Q1n0a2wYvMI5lV8Gn1PvERubMm58xeKdDmzJgQEBDB//nzhpqwE8/T05PTp05QrV07Toag++ZgyZQo3btxg/vz5vHz5kt27d7NhwwYmTpyo6qHUxs7Ojj59+hATE6PpUASFYGlpiVwuJyIiQmMxXL9+nadPnzJ+/PgPnrN7926Sk5Np3LjxR6/VsWNHXF1d6dChA+vXr1d2MM2RmprKxo0badu2LU5OTnTq1OmD12rcuDEymUxt/XcSEhJITIzFyLxOvt4X9WIZCZEncaq9Ch29/zVFsq3yPfbVF7H2XgSTL74mXsNdTy8Gx9P3+EtMyjnic/1Gidy/Jb8GDx7M5MmTi00dlaBg0tLS2LNnj8aTSJXXfED2LrGzZs3ixYsXlC9fnqlTpzJ69Og8vTc/z4zUSaFQqL0VtUD9hg0bxsuXL/Hx8dHI+Dt37mTIkCGkpKR8sD9H8+bNiYmJYcyYMZ+8nkwmY//+/dy+fRtzc3N69eqFlZUVb9++5fDhw8TFxeHp6Un//v0/2TBv48aNpKam8vXXXxfoZ/sYf39/Nm7cSNV2T9A3ztsXc9SLFYT7z6Rc5VnYVf3pvedIQ/bw5v6XmOtlsaS5I62czVUZ9ifFp2fy640wDjx7S7u2bdm1ezfW1tZFGoNAUBjh4eE4OTmxdu3aPH3m5Ed+vr91PvpqAXXp0qXYbuObVyKRiMjISF6+fEmTJk00HY6ggDp16sSQIUOIiIjA1ta2yMfP6anxoUQ2KyuL27dv06ZNmzxdT09Pj8GDB/PZZ59x7do1zp07R3p6Ovr6+tSpU4fGjRvn+cuwYsWKnD59Grlc/t46lMJ48uQJeobl0DNy/eS5mTIpYQ+mERu6B5tK32JbZfYHzxU7fY6JpCmh98Yx4vR5eleyYnYjB8z11fJRlsvF4HhmeoeQlKXF2LFjkUgkzJ07F4VCgbGxMdWrV8fT05PKlSurpZivOIiLi2PBggWMGjUKd3d3TYcjKAB7e3sGDBjwzsxpUVP/b2wJ9tNPP3Hy5Elev36t8g9nQdHo0aMH4eHhWFlZaWT8nFqnO3fuvPexyvPnz0lJScn3EnMrKyu6detWqNicnJyQyWRERkaqtF4hLS2NW7f8sHSd/NHZQ7lcRlzYIcIefotCLsO57kbEzkM+eX09IyfKNzqONGgrfz36hoshz/iimpj+VaywNsp/gevHyBUKfMIS2fAgiquh8ejrG5Genr3fiYGxHTr6EkSIyMpIICUxu77IzMyCL74Yzvjx46lUqZJK49G0nJb9urq6/Prrr5oOR1BAu3bt0nQIQvLxMcOGDePcuXOEhISUqIJZwf/o6+ujr69PQkICJiYmRZ5ENmvWjAoVKrBu3br3Jh85XSPt7e2LNK5/j/nmzRuVJh++vr7IMtIxd+j7zmtZmcmkxt8nMfIsscGbkaVFAVo4e25G7DQgz2OIRCIkriMwtWlLxLN5/HZ3D7/diaBjeQuGelhR39akUI9N49MzOfAshh1PpQTFpYBIC20dI0zsBuJg2wVDizroGuQu2suUxZEaf5fEqH9Yu34bK1asoGfP3qxZs0ojs27qYGBgwOzZs3FwKJ7LngV5FxwczKtXr2jRooVGxheSj49o2LAhL1++FGo/SriXL19Ss2ZNjh8//sEVJ+qipaXF+PHj+f7775k4cSINGjTI9XpSUhKARnY/zRkzIyNDZddMTEzk5MmToFDw/KInRmau/184KiIjPZbUxEBAgZ6eAV5e9WjUaBh//LGatMSCte7WM3LCuc46MqstQBq8kwuv13I84DnO5sbUL2dADSsjalgZ4WFlhKHO+xNPhUJBaJKMR9EpPHybwqOYNHwjkpBlyTEwNEFbx4hylX9A4joSbd0P15jo6Flgat0KU+tW2Fb5kdjQ/Zw8/QNVqlZj7ZpVfP755wX6GYubqVOnajoEgQrMmzeP06dP8+rVK43M7AvJx0eIRCIUCgV+fn5UqVLlgzuJCoq3ihUrYm1tzbRp0+jQoQMSiYQJEyYoezI8ffoUc3NzxGKxWnbvnDhxIkeOHKFjx44cOHAgV31HcVg2qqoYFAoFBw8exNDQkLNnz/L69Wvu379PQkICmZmZ7NmzhwoVytOrVy/s7OyUdRH16tXlpt9WbKv8iJZWwXaV1tGzxMbtK6wrfknS24vEhR3mTJQvR14+Ri7PQCQS4WJujIWeCANtBXo62qRnQZpcQXBCOrEp2Y0O7cvZ4Fm/Kd0aG3PgwEG0jWpRqfE69I3ztzeVlrYBEpehmNt2IvzhFAYOHMjTp0+ZM2dOqbiZuXz5Mo8ePSpRqxgFuQ0bNgwfHx/Cw8NxdHQs8vGF5OMTwsPD8fLyYtOmTYwYMULT4QgK4PLly4SFhWFiYsKBAweQSqXKpa8KhYIaNWqQmZmJSCQiIyMDbW1t0tPT6dSpE2KxGAcHB1asWAFkL2c9e/YsYrGYcuXK5emZvqGhISdOnKBnz560bduW+vXr88UXX+Dq6qpsc56WllbkDapyenx8alVMXnl7e3P//n327dtH06ZNadq0KYMHDwbgwIEDbN68mT59+rzziKlJkyZ4e3sTH34ES8f+hYpBJBJhat0aU+vsGS65XEZagj+pcXdIin9EWMRfGOkl06ZNawwNDTE0NKSnoyOenp54enpiZ2fHnj17GDRoEGLnYTjWXo1IVPDiUR19K5zr7UDfrBZz5/6AtrY2s2d/uKC2pPD29mb+/PkMHTq0WG1WJsi7Ro0a8fDhQ40lw0Ly8QkODg60adOGx48fazoUQQGkp6fTsGFDFi9ezKRJk95ZhaBQKLhy5QpSqZSEhATl6+np6VhbWyOVSklNTVWeHxISQo8ePQCoVq2aMnm4f/8+3bp1QyKR0KRJE/744w8gu835kSNHEIvF/PLLL8TGxrJmzZp3+n6Eh4cX+eqBN2+yO4aqoh7hxo0bHDp0iMmTJ9OvX793Xt+4cSMVK1Z8b22LnZ0dlStX5fXjHzAr1wltXdV9mWlp6WFkUQcjizokRJ7l7au1/LF+O0OGvL+w9eHDhwwdOgxLp4E41l6DSKSa6ehylb4BRRY//fQTtWvXLnSxsKYNGTKEJ0+ekJCQICQfJVTOzP6VK1eoW7dukc/sq6XPR2EUlz4f/5aRkYGurmqr6AXqd+DAAb777juuXr2qsoK/rKwsYmJikEqlZGRkUKNGDSC7eGvDhg3ExMTg7OzMrFmzADh9+jT9+vUjMTGRfv36sW/fPiD7y3jMmDEYGRkhk8no3LkzrVq1UkmMeXXp0iVOnDjBwoULC7w0NDMzkzNnznDu3DnGjRvH6tWr33l+LJfLMTMzo1WrVrRt2/a914mJiWHhwsWYOQzBqfaqAsXyMVkZ8by45EnTRh6cPXv6vXd7GRkZ1PdqyMvXqVRsdgMtbdU+glMoFLy+1Qu9zLs8feqPWCxW6fUFgvwKDg7GxcWFLVu2MHz48EJfT+N9PkobXV1d0tLSCAwMfGffGkHxZWBgQNOmTVXaBEpbWxsbGxtsbGxyHXd2dn7v0sPPPvuMhIQEZDJZrg0UW7duzZYtW4iJiWHTpk0EBgYWefIREBBQqLudkJAQ9u7dS2RkJPPnz2fmzJnv/VJ//vw5ycnJH11OLJFI6N69KwcP/omxuEGeltzmlUKeQfCdEWgTz6ZNGz84zfz777/z4MF93JtdVnniAdl3mo41V/PiUl2++eYbNm/erPIxilJycjKbNm2ie/fuwmrAEsrZ2Zn27dsTEBBQ5GMLyUceTZ48mXPnzgmrX0qAAwcOEBQUxDfffEPXrl01HQ6QXVfx79qKihUrKnen1dfXZ9KkScTFxWFhYVEk8cTHx+Pv749CoWDevHk0bNiQRo0afXIKXS6X8+TJE3x8fHjy5Ak1atTgxIkT1KpV64PvuXv3LsAni9qaNGlCSEgoN2+NBbQQOw/K98/1TrxZ6bz2G0Jy1FmOH/8bZ2fn956XmZnJsmUrEDsNwciyXqHH/RBdQ3us3GayY8ePLFy48J0ktiRRKBR89913xMXFlYo6lrLq5MmTGmmKJyQfeTRgwAD27NlDYGBgnrY0F2hGzkZuDg4OJaZF/tChQ5kxYwbXr1+nY8eORTLm9evX0dPT459//mHz5s1s27aNU6dOYW9vj4uLC46Ojsq+KDmNyEJDQwkJCSEhIQGJRELr1q1p3LgxNWvWBP7XrVUsFiORSJSb5EmlUnR0dD5ZUCsSiejfP7te5ObNkaTE3cbO4xe0dQpWiJua8JjQu6NIjr3HzJnT+eyzzz547t9//01ERBiVWn54Dx5VEbsMJfLZHDZv3szMmTPVPp66mJiYMGnSJCQSyadPFhRb2traJCUlERgYqPxdLgpCzUceyeVy0tPTNdKPQZA3J06coF69epiYmGBgYFCiWlxPnDiR7du3M336dLX/u09MTGTRokUMGjSIdevWARAbG8vevXvx8fHhzp07PHv2TNkaHsDY2JimTZtSr149OnXqxKxZs5BKpchkMuUu1tHR0co7eXt7e8LCwgCYM2cO8+bNY+nSpXmKL6cI7u+/T6Cjb49ttcWY23XO86qTTJmUt4FriXq+ELFYzNu3kezdu5f+/T+8kqZnz16cvxpKxWYf3zFYVYJvj8TK6C7Pnhasv4lAoEqjRo3i8uXLPH/+vFA3bPn5/haSj3wKDQ1FIpEISUgxExISgpubG9988w3z5s3TdDj59vbtW6pWrYq9vT0jRoxQ24yNQqFg69athIaG8uTJkw/Ww6Snp5OUlERmZiaGhoaYmpp+MqaMjAweP36sLMZt3749kL0b6q5du1i+fHm+mhlFR0ezd+9+AgJeoG/kiKXLKEytW2JoVhMtHaPcY6dFkBJ3l/jww8SF7UdEFi1aNKdp06bMnTuXI0eOKFcpvY+dvRNykwHYVyualuExQdsJvTeW+Pj4Er9a5NGjR/j7+380uRMUb5cuXaJfv374+voWqn5HKDhVk4iICFxcXNixYwcDBw7UdDiC/xcUFISLiwvnzp0rsZsAWllZsW7dOvr06cOtW7fe6YSqKn5+fty/f5/9+/d/tBA3py19fujq6uaq/YiJiWHixInKFT4xMTH5Kv61trbmq68mEhwcjLe3N3fuzCPiyRxEIm0MTFzR0jEBhZyM9ChkqZEAWFhI6NSxHQ0aNMDU1JTAwEAgu8Ylx/Pnz0lKSkIsFmNra0tCQgIRb0JxrV8nXz9vYRhZ1EWhUHD37l2aN29eZOOqw4EDB1ixYgXdunUTbspKqObNmxMWFlakqzqF5CMfbG1tady4MRcuXBCSj2Li5MmT9OjRg9OnTxd563RV6927N8OHD2fHjh2YmJhQrVo1lV7f39+fffv2MXToUPr2fXffFVUKDg6mdevWRERE0LdvXw4cOEBISEiBVh45OzszcOBA+vXrx5s3bwgJCSEyMhKZTIaWlhZGRrY4ODjg5OSEWCzONUMTHByMlpZWrmO//vorO3bsAGDv3r3K3iMGpkW3ks3AtAqIRDx79qzEJx9Dhw7lypUrREREUL58eU2HIygALS0ttLS0ePnyJQ4ODkWSRArJRz4dO3ZMWUgn0Cy5XI6XlxczZ87U2OZIqrZx40bi4+PZvHkz/fv3p379+ip5BOPn58fevXvp1KkTf/75pwoi/bCwsDCaNWtGSkoKU6ZMwcrKin/++YegoCDq1q1b4Ovq6Ojg5OSUrx2Ag4ODqVu3LkOHDlUey2k4J5VKqVGjBg8ePAB451GOOom0dNDWNtD4tuaqULFiRS5evKjpMASFFBoairu7O7t37y6SfYiEfeLzKacxUEREhIYjKdsOHDhA8+bN0dfXZ+7cuSWquPRjdHR02L9/P0OGDGH37t1s3bqVxMTED56fnp7OmzdvCA0NJS4u7p3Xk5KS2Lp1Kzt37mTgwIEcPHhQrVOrOQ3TkpKSmDhxIlZWVgB4eHhw9+5dsrKy1Db2f6WmpuLv70+XLl1yHbe1tcXT05N27dpha2ur/LejUMjfdxm1USiyyMzMpGfPnowaNYpffvlF+VpycjKXLl3iwYMHyk60xZlMJuPw4cMlIlbB+zk6OtKkSRN8fHyKZDxh5qMApk6dyunTp3n8+HGJWMpZGkVERODq6oqRUdHdrRYVHR0dtmzZQqdOnRg/fjyLFy+mWbNmNGzYUFnE9ebNG7y9vbl9+7ZyjxbIvgtt3LgxFSpUwM/PjytXrqCrq8vevXvp16+f2v+9LliwgIcPHzJlypRcM4Q5H2oPHz6kdu3aao0hh6+vL1lZWYwePfqj5+UsFc1Mi0DfuGgeG2TKpMizZJiYmJCens6jR48IDQ1Vvv7ixQtl07n69etz69YtIPtn+uKLL5BIJLRo0YKff/4ZgMDAQC5cuIBYLKZSpUpUr14doMiWm6empjJ48GB++uknZsyYofbxBOpx6tSpIiuAFpKPAujUqRMrV67k+fPnVK5cWdPhlCkHDhxAS0uLr776ii+//LJUJ399+/alRYsWfP/99+zcuZMzZ85QvXp1RCIR9+/fx9ramunTp9O+fXv09fV5/vw569evZ8eOHWhra6Otrc2QIUOYN28e5cqVU3u89+/f59dff6Vt27bvPBqxt7enQoUKXLhwgZo1a6p9C++MjAyuXr1Kjx493rufzL95eHigq6tHSvw9jCWN1BpXjtS47MZrLVu2ZOzYse+N6cWLF8TExOT6uzIzM6Nly5ZIpdJcM1i+vr7KJGv48OFs2bIFgA0bNjBlyhTlTs45bf/PnTunTFZatmxJ/fr1gewVRpmZmfne4dnc3JyhQ4fmSoQFJY+pqSlZWVmEhYV9sCGfqghLbQsgKyuLqKgo7OzsNB1KmZKRkUHNmjVp0KABW7du1XQ4RSo2NpZt27bx+++/8/r1a7766iuWLl363h1pL1++TI8ePahatSoXLlzAwMCgSGLs1asX165d49tvv0VH5937moCAAFatWkX37t1p2bKlWmP566+//n+FzJ08Fe7WrlOP4JiquHiqtx4mR+TzJSQELSYhIU5liVhWVhZxcXEoFArl466HDx9y4cIFpFIpXl5edO7cGYDVq1ezbNkypFIpP/zwA9988w0AX3/9tXJTxPXr1zNmzBgAli5dys2bN5FIJIwdO5Y6dbJXBvn6+pKWloZEIqF8+fLCapdSYOLEiVy8eBF/f/9839wJfT6KSHJyMrq6uirbklzwYRcuXKBhw4YkJSUhkUhKTY1HfiQlJeHg4ECPHj3YunXrRz8Yrl27RrNmzVizZs1776xVLTQ0FFdXV3r27EnTpk0/eN7hw4e5fv0633zzjdpmY16/fs3KlSuZN29enjuIzpgxgxUrN1KlXSBa2gX/ApWlhpIivUlK3F1S4+8iz3iLQpGFSEsfXUNXDC3qYmheh8jHM2jVtDx//32swGOpyr8fzTx//pznz58jlUpp2LAhlSpVArKTj7NnzxITE8OyZcuUyWObNm24cOECkJ30uru74+/vz+rVqwkKCkIsFrNx40blKpicmwaJREK7du2UiXFmZuZ7E1ZB0Tt79ixdu3bl8ePH+e7mLSQfRSAqKgo3Nzc2b95Mnz59NB1Oqebv70+tWrVYsGAB3377rabD0ZgNGzYwfvx4AgMD89QIqHv37rx+/Zp79+6p/fHUnDlzWLRoEXPmzPnoTEt6ejpLly5FoVDw1VdfYW5urtI4oqOjWbVqFVWqVMHb2zvPX2gBAQG4ubnhVGcDEpehn37DvygUWSRGnuPtq7UkRJ4FFJiaWeLs5ICZmSna2tpkZGQQGfWWsNBQMjLS0dLSolu3bixatEj5BV8SxcTEEBUVpVw5tGDBAtavX893331HYGAgMTEx/P7778pdpd3c3JSbmMXExCgL+HNa+YvFYl68eIGuri5ZWVl8/fXXiMViypUrx5dffglkJyoBAQGIxWIsLS2FpEXFcmbQCtI2X0g+ikiDBg1wdXVVNlESqF7OB9Thw4fp0aNHmZzxyNG0aVMsLCw4fvx4ns4/deoUnTp14v79+2rfs6FBgwZkZGQwbNiwT54bExPDypUr0dPTY/z48SrbWv7NmzesX78ea2trfHx88t1TpEOHjvjcCsat+U1EWnlbEZQSe5uQu6NITXiCvb0TzZo1pnr16h8s2pPL5URGRuLn58fNmzdJSkpi+PDh/Pbbb0W2qaA6PXnyhO7du/PXX39RpUqV954jk8mIjY3F2toaLS0tZdddqVRKfHw8c+fOBbK3AWjevLmyvuXly5dAdlNBV1dXIDuZefHiBZCdQI4fPx6JREKtWrWUs17R0dHcunULsViMg4OD2msZSou4uDiMjIzyNbMvJB9F5NWrV9jb2+e7E6Qgb44ePcqQIUPw9vb+6K6pZUWFChXo378/CxYsyNP5ISEhODs7c/LkSbVuWJeZmYmpqSkdOnRQrtD4lLdv37J27VpSU1Pp1asXnp6eBZ6dkcvl+Pj4cOLECdzc3Dh37pzyTjs/7ty5Q30vL2zcZ2Fb5YdPjCkj4ukvRL9Yjr29PX369MLV1TVfP0NGRgY3b97kxIkTWFhYsHnz5o9ufldSqHuFTWpqKn5+fspi3G7dugHw8uVLZs6ciVQqxc3NjQ0bNgDZez7lLLfu3r07R48eBbI/X6ZNm4ZEIqFPnz5Mnz4dyP53cPXqVSQSCbVr11auHEpPT0dHR6dM3AC9efOGChUqsHPnTnr37p3n9wnt1YtIznPM1NRUodBKDTw8PBg5cqTyl7+s09bWJjMzM8/n5/TUUPe09JMnT0hLS8vXHaWVlRVTp07l0KFD7Ny5k3v37tGpU6dPrkz5N4VCQVBQEH///TcBAQGMGzeOxYsXF3ipYN26dflu1izmz1+IWbmOGFl6vvc8eWYKr2/1I+ntJTp27ECbNm0K9IWkq6tL06ZNqVatGvv376dTp06sXr2a8ePVv7Ouut28eZOKFSsqC19VydDQkGbNmr1z3M3NjYMHD75zvH379oSFhSGVSnPdxbu4uNC3b1+kUmmuOG/cuMHMmTNJS0vju+++U+4VNW/ePH799VcsLCyYN2+e8v/Trl27lMW4PXv2VM4yvn79mszMTCQSCebm5mpf4aVKdnZ21KhRg6NHj+Yr+cgPYeajkObMmcOxY8e4e/eupkMpNQ4cOMChQ4fYsWNHke41UNx16dKF6Ohobt68mafzt23bxvDhwwkMDFRr2+ucxztz5swp0KODBw8ecOjQIeLj46lQoQINGzakQoUKSCSSd+6g5XI50dHRBAQEcO3aNUJDQ9HW1mbcuHGsWrWq0D+LTCajUeOm+D9+TfnG/2BgmnspvTwrnVc3e5AWe43Ro0eqrF5DLpdz9OhRrly5kmuVSUkUGxuLra0tCxcuZMqUKZoOp8BSU1ORy+UYGxsDcO/ePXx9fZFKpbRs2VK5/9KCBQvYvXs3MTExrFixgn79+gHQp08fDh06BGSvvuratSsAkydP5vnz50gkEmbPno27uzuQvfxZLpcjkUioXr16ka1S+5DQ0FBsbW3zdfMizHwUoXr16vHzzz/z+PFjPDyKbm+I0szHxwdtbe0SdadQFMaMGUP37t3x8/OjXr16nzx/zZo1tG/fXu37baSnpwMFn2GpWbMm1apV49GjR3h7e7N7924AjIyMsLOzUz7WTE1NJTw8nPT0dEQiER4eHnTq1ImdO3eq7Dm+np4eZ06fpFmzlgRea4Nzvf2YSBorXw97MIVUqQ/jxo3Bzc1NJWNC9t4aPXv2RKFQMG7cONzd3fP8CKu4sbS0pEePHrx69UrToRTKf2eza9eu/d4GebNmzVL2T/m3hQsXMnHiRGJiYnL9vlpZWREUFERQUFCujr9ff/01T58+BbIfIeWsNKlduzapqamIxWJOnz6tLNJevHgxJiYmiMVi+vXrp6yfSUxMzNMu1J/i6OgIoLyeqgkzH4WUkZGBv79/kXVtLM0OHTqEo6MjXl5eyOXyMvFsNT+ysrJwc3PDzs6O8+fPf/RR36ZNmxg1ahTHjh1TPhNXl5xn6j///LNKVq8kJiYSEhJCaGgokZGRymRDX18fW1tbnJyccHR0VN6Rzpgxg4ULFzJ58uRCj50jJiaGLl27c+PGNawrTsKu6k8kxXgTeK0r/fr1o3Hjxp++SAHI5XLWrl1Leno6/v7+mJiYqGUcdcvKyhJ+f/MpOTmZmJgYpFIpHh4eykdEy5Yt482bN0ilUtavX69cCeTo6Mjbt2/R1tYmNTUVkUhEfHw8FhYWaGtr4+7uzpMnT4DsGqtvvvkGsViMm5sbEyZMUI757NkzxGIxVlZW7/x7mzlzJqdPn+bevXt5+hmEmY8ipKurS+3atZHL5SgUCuEXroCSkpKYMGECvXr1okGDBsLf43toa2uzb98+WrZsSfv27dm0adM70/4pKSmsXLmS7777jvHjxyunetUp53l5zgdPYZmamuLh4ZGnmcSUlBTS09NVXlsgkUjwvnqZ5cuX88MPP5L45gCZGUm4u1emUSP1dUHV0tKif//+LFmyhOnTp7NmzRq1jaVOOV+IT58+VTYkE3ycsbExxsbG78ziTZs27Z1ztbW1efPmDQqFguTkZOUsh76+Pvv27SMmJoZ/zyskJyfz4sULpFIpjo6OyuTj/v37NGnSBIAWLVpw6dIlILtP0PTp00lPT+f+/fs8e/ZM5d28hZkPFYiJicHT05M//vijSD7sSxtfX188PT2VtQlC4vFxN27coGfPnkRERNC2bVs6dOigbK++c+dO4uPjmTZtGosWLSqSR1epqamYmprSu3dvtc0IfMjz589Zs2YN/v7+anvs+fTpU4YOHcrt27f5/vvvC9T/IL8uXLjAiRMnCA4OzlcRbnEyffp0tm7dSlhYmFC7VUwlJyfz9OlTpFIphoaGygaBd+/eZcWKFZw7d46kpCTevn2bpyW3+fn+Fh6qq4BEIsHS0pLt27drOpQS5/r16zRq1IitW7fi5uYmJB550LBhQ169esWOHTtISUnhl19+4dtvv+Wvv/5i7NixBAQEsGTJkiKrmTE0NKRKlSqEhIQUyXj/FhoaipGRkVr3WKpUqRJSqZTatWsXSeIB0KhRI3R1ddm4cWORjKcOgwYNIiMjQ1nHICh+jI2NlTs8/7szcfXq1dm6dSt79+7l0KFDaunirfZPpwULFiASiVT6PLY42rJlC2vXrtV0GCVKSkoK9evXZ9WqVXlqTiX4HwMDAwYPHoyPjw/x8fGkpaURFBTEwoUL1V5g+j4tWrTg6dOnuQroioK/vz+NGzdWa9J64cIFAgICPto2XtUMDQ2pW7cu69aty9fy6uKkVq1aREREUKNGDU2HIsiH9PR0evTowezZs2nevDnt2rVTyzhqTT58fX3ZsGGD2rsrFge1a9fGysqKYvYUq9g6ePAg7u7uhIWFMW7cOGHGo4QbM2YMsbGxPHr0qMjGDAsLU/b3UKdz585haWlZ5EldnTp1iIiIUBYNlkT6+voEBweTkJCg6VAEeaRQKD7YS0WV1JZ8JCUlMWjQIDZu3IilpaW6hilWVqxYUWKXxxU1GxsbOnfurFzOJSjZatWqRaNGjbh69WqRJeBXr17F1tZW7at5/Pz8cHR0VPv+OP/l5OQEwO3bt4t0XFWKj4/H3d2dHTt2aDoUwSekp6czduxYIiIiOHjwIO3bt1freGpLPiZOnEjnzp1p27atuoYodpydnbl8+TKPHz/WdCjF1oEDB5g1axbNmjVjw4YNwoxHKfLdd9/x8uXLIvmyfPXqFTdv3uTbb79VazGjQqHgzp07GkmSDQwMsLW1LdHJh7m5OR06dMDHx0fToQg+4fbt2+zdu5fAwMAiGU8tS2337t3LnTt38PX1/eS56enpyiZFQImenuvSpQvHjx8v0btUqpNCoWDXrl0YGxsLfTxKoS5dujBgwACOHDmCu7u7yneszSGTydi7dy/169dn0qRJahkjR2pqaoF3+FQFS0tLQkNDNTK2quzatavE9ispC9LT0/n777/p06cPr1+/LrInFSqf+QgJCWHSpEns3LkzT+1hFyxYgLm5ufJPzlRjSaSnp0fnzp2FLZ7f49ixYwQFBbFv3z62b98uJB6l1KpVqzA2Nmb79u3IZDKVX18ul7Nv3z5iY2PZtm2b2v8dFbZ7a2Hp6OiQlpamkbFVJac7ZnBwsIYjEbzP3LlzGTJkCEFBQUVaIqHy5OP27dtERUXh6emJjo4OOjo6XL58mZUrV6Kjo/NONfysWbOIj49X/tHEcj1Vio2NpXHjxpw5c0bToRQbUVFRDBw4kD/++AN9fX0h8SjFJBIJR44cITw8nM2bN+ea1SwsuVzO/v37uXPnDjt27Pjglu2qlLPEsKhX8eTIysoqFbtmz549m0aNGmns71HwrvT0dKKjo5k5cybnz5/HxcWlSMdXefLRpk0bHj58yL1795R/6tWrx6BBg7h37947Xzz6+vqYmZnl+lOSWVhYEB8fz9atWzUdSrHw7NkzbGxsuHz5MosXL9Z0OIIi0LhxY2WDrNWrVxMREVHoa8bHx/Pnn3/i6+vLtm3blJt3qZuhoSFGRkbEx8cXyXj/lZCQgI2NjUbGVqVu3boRGRmZ5zbdAvVSKBT07duXjh07YmxsXOTNAUENNR+mpqbvbIFubGys3KmvtBOJRKxevbpUfGAU1j///MNnn33GkSNHhM6vZUyrVq24cuUKn3/+OcuWLaNDhw60bNky348v5HI5fn5+HDt2DGNjY44fP85nn32mpqjfpaWlRe3atTUyIyuTyQgPD6du3bpFPraq1atXjzdv3mBtba3pUMo8hUKBSCSiX79+2NjYaGwDT6E4QQ1atmyp6RA0LjMzkwYNGjB37lw6deqk6XAEGuDp6cn9+/eZPXs2y5cv5+rVqzRo0IBGjRp98tlycnIyt27d4vr160RFRTFo0CBWrlyJWCwuouj/p379+uzdu7fIxw0PD0cul+Pp6VnkY6uaSCTC2tqapKQktLW1P7opokB90tPT6dOnDz169GDkyJEajaVIko+czWrKkq1bt3LixAkOHDig6VCK3IEDB/jll1+4ePEi3333nabDEWiQoaEhS5YsYcSIEaxZs4Zt27Zx9uxZbGxscHBwwMHBQflFlJ6ezps3bwgLCyMiIgIdHR369u3LhAkTNDItnKN58+b8/vvvhIeHF+k+Kw8fPsTMzKzUNGlMTEzE0dGRpUuXMnr0aE2H83/t3XlYVPX+wPH3sCqK4AwlIC60uGZa7oZbKVdNw3CjxdS6ZYpUcsurVj+XSrO0bmnqrZTUNA1zjcpwww1zDcm4Ii4hCqgzsokcYOb8/vBxnstFC3RmzgCf1/P4PHLmzJzPeDzMZ77n+/18aqSrV69y+fJlp1jYIb1d7MTT05O1a9eSlpamdSgOpygKDz30EL6+vlqHIpxEq1atWLBgARcuXODrr78mIiKCWrVqkZCQwHfffcfatWvZunUrZrOZQYMGsXjxYs6dO8fXX3+taeIBMGjQIBo0aODQWhUlJSUcOHCA559/vlpMOIXrt+S7du3Kxo0btQ6lxlEUhUmTJuHi4sK+ffvsXkCsIqSrrZ1cu3aNFStWEBERUaXfR2XExsaSk5Mj32pEpdz4FeToCqKVMX36dObMmcPbb79NnTp17H68X375hW+++Yb//Oc/dm2a52gXLlzAz8/PLo3KxK1t3LiRiIgI4uPj7dqjqDKf35J8CJswm8107tyZli1bsnz5cqf+IBGisrKysmjevDnNmzfnmWeeseuxCgoKmDNnDn379uW7776z67G0kp+fb63/IexHURT2799Pz549ycjIsHul3sp8fsttFzvKzc1l2LBh7Nq1S+tQ7GrLli3k5+ezdetWvvrqK0k8RLXj7+/Pp59+ysGDB+3ePG/dunW4ubnx2Wef2fU4WpkzZw4PPvggFotF61CqvYkTJzJw4ECMRqPT9dGS5MOO6tWrx6+//srSpUu1DsVuTp06xcCBA/n000/x9fWVAmKi2nruuecYMGAAa9asITs726avXVBQwMWLF9m8eTNHjhzho48+wt/f36bHcBYhISGcPXuWAwcOaB1KtaUoCoWFhUydOpVNmzZp1h7gz8htFzvbsGEDPj4+1bLbbWZmJgEBAfz000/07dtXEg9R7ZlMJkJCQsjKymLs2LG3nSDk5+dz8OBBTp8+TUZGBjk5OWUed3Nzo1WrVnTs2JEBAwbwxBNPVJu2Daqq8vvvv9O6dWutQ6mWSktLCQsLw9XVlU2bNjn02DLnQ9jd5s2bGT58ONu3b6dr165ahyOEw2RlZfHYY4+Rnp7O0KFDadeuXYWfm56ezs6dO0lKSsLFxYXg4GCCgoIICgqiXr16uLi4UFJSwqVLlzh37hwZGRmcP3+egIAAXn75ZaKiohzaf8OeLBYLZrPZrl2Ja6p3332XTp06OXxViyQfTmbjxo3Ex8ezYMECrUOxCVVVOX/+PPPnz2fWrFky4iFqHJPJxIsvvsi6deto164dTz755J928S0uLuaHH34gISEBg8FASEgInTp1wsvL6y+PlZGRwd69ezly5Aj169fnyy+/5PHHH7fl23G4q1ev0rp1a2bOnMlzzz2ndTjVgqIoPPvss4wdO5Y+ffpoEoMkH05m+fLljBo1irNnzzq8eY+txcbGsmTJEtavXy9VCkWNpqoq3377LePHjycvL48HH3yQRx55hHvuuafMpOsLFy4QExPDlStXGDBgAL169bqtktY5OTmsWbOGlJQURo8ezeLFi6t0DZBHH30UNzc3fv75Z61DqRbOnj1Lnz59WLhwoWZ1PCrz+V09biI6ufDwcE6dOkWtWrW0DuWOpaSkYDAYZJ2+qPF0Oh0jRowgNDSUZcuWsWDBAubPn4+XlxdBQUE0bNgQs9nM/v37MRgMvPHGGzRo0OC2j+fr68tLL73EL7/8wsqVKzl//jwbN26ssl8CFi5cKD2wbEBRFD755BMmTpxISkpKlbmNJSMfokJiY2Px9fWlb9++WCwWzZoRCeGsLBYLu3btYu/evRw+fNjalyYoKIhx48bZNElITU3lyy+/JDQ0lPXr11fpyahms1lu3d6Bzz//nFdffZU9e/Zo3gdIbrs4oatXr/LWW28RERFB586dtQ6nUoqKimjRogV9+vThyy+/1DocIZzejRYDubm5TJgwoUJzOyorJSWFL774gvfee4/JkycDUFhYyNatW7l8+TKenp60bdvWqbuJL168mIULF5KUlCT1gSpJURROnjxJ69atSUlJoVWrVlqHJLddnFHt2rVZv349BQUFVSr52L17N126dGHPnj0EBARoHY4QVcLMmTM5efIk0dHRdkk8AFq2bEmvXr2YNm0aXbp0YdOmTcTExJRbthsSEsKrr77K0KFD7RLHnWjWrBnJyckkJiZq3sOnqvn73/9OfHw8p0+fdorEo7Jk7NxBXFxcmDFjBo899pjWoVTYkSNH6N27N4sXLyYoKEiGRoWogN9++405c+YQGhpq9y64/fv3x9vbmwEDBrBs2TJeeuklUlNTKS0tpaCggNjYWGt34IkTJ+JkA9306tWLLVu20KlTJ61DqTKKi4uxWCxER0ezYsUKuyW39iYjHw40atQorUOosNzcXB566CFiYmJ4+umntQ5HiCpj/vz5eHt7O+SLxrVr1yguLiY4OJitW7eWGZ2sU6cOQ4cOZejQoXz22WdMmDABPz8/3nzzTbvHVVEuLi7WlRmqqsqtl7+gKArh4eE0bdq0ypffl5EPB0tISGDmzJlah/Gn1q1bxz333ENqaiojR46UEQ8hKig3N5cVK1bQpUsXh1w3N/pGxcfH/+lt0cjISN544w3ee++9crdltFZYWEiXLl1Ys2aN1qE4PVdXV/z9/QkLC9M6lDsmyYeDpaamMmPGDC5cuKB1KLcUHBxMREQE9913n9ahCFGlfPvttyiK4pCqv6WlpRw4cIAxY8ZU6PZOdHQ0paWlfPXVV3aPrTK8vLxwdXVl2bJlWofitBRFYfTo0Zw4cYIlS5ZoVsfDliT5cLDhw4czZswYiouLtQ6lnNjYWMaOHUvbtm357LPPZMRDiEpKTEykYcOGf1rt1FZOnz5NXl4ezz//fIX29/f35/HHH+e7776zc2SV9/HHH/Pxxx9rHYbTSklJIS4ujszMTK1DsRmZ8+FgPj4+TrtcNS4ujpKSEqeblCZEVXHw4EEaNmzokGMVFhYCVKpqcpMmTUhNTbVXSLdNJpzenKIofPPNN4waNYozZ85Qt25drUOyGRn50EBRURHz5s3j2LFjWocCwPr16zl+/DhLlixh+fLlMuIhxG0oKSkhJSWFoKAghxzvRiXLq1evVvg5hYWFTlsRddWqVfTp00e+/PyXuXPnMm7cOFJTU6tV4gGSfGjC3d2djz76iM8//1zrUMjJyWHMmDEsXrwYV1dXSTyEuE0FBQWYzWaHfUg0bNgQFxcXNm/eXKH9S0pKiIuL07wK5q3o9Xq2bdvG4cOHtQ5Fc4qikJGRweuvv86uXbto3ry51iHZnCQfGnB1dWXSpEk0a9ZM0ziSkpLw8fFh7969/Otf/9I0FiGqOrPZDOCw1gO+vr488MADLFiwoEKjBZs2beLChQuMGzfOAdFVXt++fVm6dKnmvxedwVNPPUXfvn1xdXWlY8eOWodjF1JevYZKSEjgscceY8WKFTz11FNahyNElXf16lXq1q1LeHg4iqJw+fJlLBYLvr6+dOzY0S5N1NLS0liwYAFTp07l3XffvWWdjLNnz9KtWzdatGjB9u3bbR6HsI0bfW6+//57PDw8qtyqlsp8fsvIh4aSk5NZvHixw4+rKApdunThww8/ZPjw4Q4/vhDVUV5eHrVq1WLDhg1s374di8WCq6srhw4dYtasWSxatIisrCybHvO+++4jLCyMWbNmMWrUqHKTSRVFYeXKlXTt2hUvLy+++eYbmx7f1oqKiggPD2fTpk1ah+JwiqLwxBNPMG/ePAYOHFjlEo/KkuRDQ7t27SIqKoqLFy867JixsbG0bt0ak8nExIkTZY6HEDZw7tw5unXrhre3N5988gmZmZkcOHCAxMRELly4wIoVK1BVlfnz55Oenm7TY/fu3ZuwsDBWrVpF8+bN6dmzJ2PGjOGpp56iUaNGPPvss7Rr1469e/fSoEEDmx7b1mrVqsW5c+dYsmSJ1qE4XElJCSUlJbRp00brUBxCkg8NRURE0LdvX0wmk8OOWbt2bXr06GGXIWAhaiKz2czAgQNRVZVDhw4xYcKEMnU+atWqxbPPPsuBAwdo3bo1X375ZaVWqFSEwWDAbDbz8ccfU69ePf7zn/+QlZXF008/TUpKCj/++KPTJx43zJ49m9dee03rMBxGURReeeUVrl69ypYtW6r9iMcNMuejhoiNjeXMmTNMmjRJ61CEqFa+//57Bg0axL59+/6ysmlmZiZNmzalf//+9O7d22YxLFmyBFVVOXbsmPRHqWK2bdtGWFgYcXFx9OzZU+tw7ojM+ahCSkpKWL16tV0L/6iqyqJFizh27JisoRfCxhYuXEiHDh0qVFI9ICCAoUOHkpiYiMViscnxTSYTx48fJyoqqtokHnFxcTzzzDNah2FXiqLwww8/8Nhjj3H69Okqn3hUliQfTuCVV16x28TT77//nuzsbDZv3syyZcuqzS8nIZzFzp07KzVxOyIigosXL5Kbm2uT42/fvp06depUq+7TZrOZVatWkZSUpHUodjN16lSGDh1KZmZmjbwNLsmHxtzd3Rk/fjxeXl42f+2MjAyGDBnCp59+Sp06dWRyqRA2ZrFYuHbtGvXr16/wc27sqyjKHR8/LS2NPXv28M4771SrCpj9+/fnvffeq5YfyoqikJuby9SpU/npp5/+tBtxdSa9XZzA9OnTbf6aZ8+epWnTpmzdupVu3brZ/PWFENcLitWtW7dSK9ays7OB6xNR70RRURFr1qwhJCSEqKioO3otZ+Pu7s7UqVO1DsPmLBYLQ4YMIT8/n507d9KjRw+tQ9KMzUc+Zs+eTceOHfH29ubuu+9m8ODBnDhxwtaHqXYyMjJs1m3yxx9/pFmzZmzbto3u3bvLiIcQdtSvXz++/vrrCs+nWrFixR13vi0uLmbp0qUUFRWxdOlSh1VVdaQbq0C2bt2qdSg2oaoqLi4u9O/fnzfffLPG3wK3+f/YhIQEIiMj2b9/P/Hx8ZSWlhIaGmrzpWXVzbfffsvTTz99x8tuLRYLnTp1YsqUKfTq1cs2wQkhbmn8+PGkpKTw888//+W+aWlpbN68mW7dut32h8+1a9f44osvSE9PJy4ujvvvv/+2XsfZeXh4kJCQwL///W+tQ7ljiqLw5JNPEhsbS2RkZI1ZTvtnbJ58/PTTT4wePZrWrVvTtm1bYmJiSE9Pl2ZBf+GZZ56hRYsW/PHHH7f9GrGxsYSEhODu7s6MGTNkxEMIB+jVqxc9evTg2WefJTk5+Zb7XbhwgccffxyDwXDbzd1OnDjB3Llzyc7OJj4+nu7du99u2E5Pp9Mxbdo0wsPDtQ7ljl25coXTp0/f0WhXdWP3sbobM7r1ev1NH1cUhby8vDJ/aqIGDRqQlJTEQw89dNuvkZ2dzT333EOdOnVsGJkQ4s/odDrWrVtHUFAQjzzyCFOmTOHs2bPWxy9dusScOXNo164dZ86cua1rPCsri1WrVrFo0SLatm1LUlISISEhNnwXzik8PLxK955SFIVp06ZRr149jh49KiMe/8WuRcZUVSUsLIwrV66we/fum+4zffp0ZsyYUW57TSwypqoqe/bsoUmTJjRu3LjCz4uNjQVg2LBhqKpa4+8lCqGF/Px8/u///o+YmBjy8vIICgrCxcWFCxcu4OLiwuDBgykuLmbTpk24ubnRsWNHWrVqRaNGjfD29i7zWhaLhezsbOuocWpqKi4uLrzxxhvMnj27Rl3je/fuZf369cydO1frUCpt1apVvPDCC+zYsYMuXbpoHY7dVabImF2Tj8jISOLi4tizZw9BQUE33UdRlDJLzvLy8mjUqFGNTD4URSEgIICxY8cye/bsCj2npKSEtm3b0rFjR5YtW2bnCIUQf+Xq1ausXbuWtLQ0zGYzjRo1Yvjw4RgMBuD65PLFixczZ84cSktLgevLb729vXF1daWkpIRLly5Zfy927dqV/Px83N3dOXz4cI1KPADWrl3LsGHDSElJoUWLFlqHUyGKonDs2DE6duzIqVOnuPfee7UOySEqk3zYbaltVFQUmzZtYteuXbdMPAA8PT3x9PS0VxhViqenJyNHjsRoNFZo/+3bt9OlSxcSEhJueVtLCOFYderUYdSoUbd8PCgoiHfffZeGDRsyfvx4Ro8eTWBgICaTiZKSEmrVqkXTpk1p37497dq144MPPuD9999n3bp1NS7xABg0aBCRkZG4u7trHUqFjR8/nvXr13PmzJkak3hUmmpjFotFjYyMVAMDA9XU1NRKPz83N1cF1NzcXFuHViVYLJYK7Xf8+HHV1dVVnTNnjp0jEkLYg8ViUd944w0VUIcNG6bu3r3bev2bzWZ1y5Ytar9+/VRAnTt3rsbRioooKipSi4uL1dTUVHXr1q1ah+Nwlfn8tvnIR2RkJKtWrWLjxo14e3uTlZUFgI+PD7Vr17b14aodnU5HQUEBR44cuWUBmsuXL9OqVSu+/fZbwsLCHByhEMIWdDodH3zwAS1atOD999+ne/fuBAYGUr9+fS5dusTFixd58MEHWbt2LUOGDNE6XE2VlJTw8ccfExIS4rRFE4uLiwkPD8fX15eVK1dW2yXQtmLzOR+3GhaMiYlh9OjRf/l86WoLH3zwAdOnTyczM7Pc0qwNGzYwcuRIdu/eTbt27bQJUAhhUxaLhW3btrFz504KCgqoV68e/fr1u6N6INWJqqq0atWKhx9+mJUrV2odzk2pqsqkSZPo27dvjV3V4jQTTm+HJB9w/vx5Hn74YTZs2FCmU6aqqqSlpbFw4ULmzp0rdTyEEDVGTEwMOTk5TJw4UetQylAUhdGjR/Pqq6/WiBUtf0aSj2rAbDaXSS5iY2OJjY1l5cqVVWrilRBCVGcnTpzgscceIyYmhr59+2odjqYq8/ld/RoCVBOurq6cPn3a2oQqMTERd3f3atnDQQghKuK3337jww8/1DoM4PqIx/z587n//vtJS0ur8YlHZcknmZMqLi7m4YcfZsKECezfv5958+axfPlyudUihKixjh07xqRJkzh16pTWobBo0SImTZrE8ePH77hDcU0kyYeT8vDwICwsjPXr1zNs2DCefvrpMt2Bf/75Z+Li4ti/fz+FhYUaRiqEEI4xePBgnnzySU0blSqKQlpaGlFRUSQmJtKmTRvNYqnK7FZkTNy5zz//HH9/f9LS0sjOzsZsNlsfmzRpEklJSQAcP36cVq1aAdChQwdycnLQ6/XExcVx1113AddX0NSqVQu9Xk9ERARubtdP/ZUrV/Dx8ZHbOUIIp+fl5cW6des0jWHUqFEkJiaSmpoqKw7vgEw4raKuXbvGlStXMJlM3H///dYqsfPnzycjIwOTycQnn3yCl5cXqqoSHBxMVlYWxcXFlJaW4uLiQlFREbVr10an09G4cWNrM6ycnByioqLQ6/U0bdrUOru8sLCQ3377DYPBgJ+fn3RoFEI4nNlsZvXq1bRq1eqOGnFWVklJCW5ubuzZs4eioiKZ43ETstpF3NK1a9esxd6Ki4vZvHkzJpOJ4uJiIiMjAcjMzCQiIgKj0chdd93Fjh07ADhy5Ii1FXjnzp3Zv38/AAcPHuSVV15Br9fTo0cP/vnPfwJw9uxZEhMTMRgM3HPPPdx3332OfrtCiGpGVVXuu+8+evToQUxMjEOOqSgK4eHhtG3bllmzZjnkmFWRU/R2Ec7pv6vMenh43LRyYkBAAAkJCeW2t2zZkqNHj2Iymcos961duzYtW7bEZDJx7do16/bdu3fz3HPPAfD888+zZMkS4PrtpDfffBODwcDYsWOtIyvbt29n37596PV6QkJCePDBB4HrHY51Oh3e3t5ScEmIGk6n0xEVFUVmZqZDj+vl5UWvXr0ceszqTEY+hN2oqsrVq1cxmUy4ubkRGBgIwOHDh9myZQtGo5EePXpYS8TPmzePDz/8EKPRyJw5c4iOjgaul+xfuHAhbm5uLFmyxJrQ/Otf/+LXX39Fr9fzwgsv0Lp1a+D6jPjS0lIMBgMBAQF4eHho8O6FEFWdoihERUUxZcoUgoODtQ7H6cltF1GlqaqK2Wy2TopNTk7m999/x2Qy0atXL1q2bAnAO++8w08//YTRaGTRokX07t0bgF69ellHbvbu3WvtBTF8+HAyMzPR6/V89tln1m7Lq1evxtXVFb1eT/fu3SVZEaIKOHfuHDt27LB+GbGHxMRE+vfvz7p163j00UftdpzqQpIPUaNlZGSQnZ2NyWSiU6dO1omx7733HidOnMBkMrFkyRIaNGgAgL+/v7WY25UrV/D19QXA19eX2rVrYzAYSEpKwtXVldLSUqZOnYper6dBgwaMGTMGgNLSUjIzMzEYDNZJvEII+4mJieGFF17gjz/+oFGjRjZ9bUVR2LRpE8OGDSMnJ8f6O0H8OUk+hKgEi8VCXl4eJpOJ4OBgdDodFouFhQsXYjKZKCgo4IMPPgCurwTq1KkTRqOROnXqkJ6eDsDp06e59957AWjTpg3Hjh0D4NSpU7z++usYDAbatm1LVFQUAEajkeTkZAwGA/7+/tYl0UKIisnPz6dPnz588sknNu+p8tZbbzFv3jxSUlJo2rSpTV+7OpMJp0JUgouLC76+vmW+3bi4uDBhwoRy+/r6+pKamgpcvz10Q4MGDfjxxx8xGo1lJuMWFxdTVFREcnJymTot+/bt44knngAgPDyc7777DoBNmzbx1ltvYTAYCA8PtyYrSUlJHDp0CL1ezwMPPGBt162qqoyyiBrJ29ubX375xaavqSgKubm5TJ48mQEDBkjiYUeSfAhxm/77Q79OnTr069ev3D4tW7bkxx9/LLe9T58+pKamYjKZ8PLysm739/enZ8+eGI3GMnNPtm3bxj/+8Q8A3n77bWbOnGn9+8cff4xer2fmzJnW20DffvstR48eRa/XM3DgQOs8mQsXLqDT6TAYDDK3RVR5qqqya9cu/P39ad68+R2/1vDhwzl37hyHDh2yzhUT9iHJhxAaqF27tnX04r916tSJTp06ldseHR3Nq6++ypUrV6wTcQEGDRqEn58fJpOJZs2aWbf/9ttvrFmzBqPRSKNGjazJx/jx49m4cSMAP/zwA/379weuV8w9e/Yser2eyZMnW7/x7dq1CxcXF/R6Pffdd58kLMKpqKrKyJEjGTBgAIsXL76j19HpdIwYMQI/Pz+p+OwAMudDiBokOTmZP/74A5PJRJ8+fazLn6dMmcKhQ4cwmUysWrXK+i2yWbNmnDx5EoAzZ85Yk5LOnTtTUlKCwWBg3bp1eHt7A9cr7NarV8864qLT6cqtXhLClmbMmMHp06dZtmzZbT1fURSGDh1KWFgYf//7320cXc0icz6EEDfVpk2bmzbCmj179k3337NnD0ajEZPJZE1UAAYMGEBWVhZGo9FauK6kpISpU6dSUFCAl5eXtfnXjV5D9erVo3nz5hw4cACAS5cuMW3aNAwGA/feey+jR48GrpfxP3fuHAaDAV9fX0laxJ+aNm3aHT2/sLAQo9FI48aNbRSRqAi5qoUQt3T33Xdz9913l9t+s1/47u7u5OfnWyft3eDp6cnSpUsxGo1lhrPz8vJITEzEaDRyzz33WJOPI0eO0L17dwB69+7N9u3bges1F6ZPn47BYKBnz56MHTsWgD/++IPjx4+j1+tp3LhxmSRJ1Az5+fns27ePv/3tbxV+jqIovP3220ydOpW9e/fKxG0Hk+RDCGFTnp6eZRIWLy8v60TY/3bvvfdy9OjRctsffPBBEhISMJlM1ts5cH0Fkre3N5mZmZw/f966/ccff2TcuHEATJgwgfnz5wOwcOFCPvroI/R6PePGjbPGsHPnTpKTk9Hr9XTu3Nnac+jatWt4eHjg6upqg38F4UjffPMN48aNIyMjg4CAgAo9Z8uWLcyfP58nnniCkJAQO0co/pfM+RBCVGnFxcVcvnwZo9GIt7d3mcmycXFxmEwmBg4caC3j/9ZbbzF37lwURWHRokW8/PLLAIwZM4Zly5ZRv359lixZwuDBg4Hr81jS0tLQ6/U899xz1jLbqamp1sq4Pj4+MklRQzk5ObRt25aYmJi/rESqKAqJiYn06tWLjIwMa6VjceekyJgQQvyFwsJCdDqddc7Kvn37OH78OCaTibCwMFq0aAHAxIkT2bp1K0ajkbVr11qXYHbq1ImDBw8CcPToUdq1awfAU089RV5eHgaDgY8++gg/Pz8ANm7cSO3atdHr9Tz00EMywmJjFoulQglgZGQky5cv58yZM9ZzI2xDkg8hhLCz33//naysLEwmE6GhodbfV9HR0Zw+fRqj0cjmzZutxevq1q1rnYRbVFSEp6cnZrOZwMBA6tevT0BAADt27ACu3wKaO3cuBoOBwMBA6yhMaWkphYWF0uH5Fk6ePImnp+dNJ48qioLZbObKlSucPHlSOtTagSQfQgjhZAoKCjCZTJhMJusoSXFxMXPnzsVoNFJSUsKnn34KwPnz52nfvj1Go5GmTZtalzv/9ttvtGnTBjc3N3r06MG2bdsAOHHiBLNnz7aOqowcORIAk8nEH3/8gV6vx8/Pjzp16jj+jTuIxWIhKCiIoUOHWv8dbygtLbXedvv+++8lcbMTWWorhBBOpm7dutStW7fMt3IPDw+mTp1abt+GDRuSlZWFqqpcu3atzPbVq1eXm4ybn5/PyZMnrcuibyQf8fHxREREAPDss8+yYsUKANatW2etjDtkyBBrZ9jk5GROnDiBXq+nefPmNGzY0Pb/EHbi4uLCM888Q3JycrnH3NzceOSRR+jQoYMkHk5Ckg8hhHBSOp2uTPn9+vXrM2LEiHL7dejQgb1795bb3q9fPw4ePIjJZCozv8HX15fg4GBMJlOZ5CY2NpZ33nkHuF77ZfLkyQBMnjyZZcuWYTAYmDFjBkOGDAFg7dq11sm4f/vb32jSpAlwfcSlVq1aDu/wPGvWrDK9lRRF4ZlnnuHFF1+8aZIntCPJhxBCVFM+Pj506NCh3PZHH330pqtCpk+fTnR0NEajscyweZ8+ffDy8sJkMpVZyrpz505Wr17NlStX2LBhgzX5iIiIID4+Hk9PT7Zu3WpdyjplyhQuXbqEXq8nOjoaf39/AA4dOoSnpyd6vR5/f//bnozr7u6O2Wzm2LFjPPTQQ2RnZ5OUlCSjHU5I5nwIIYS4IxaLBVVVrUnDvn37OHPmDCaTiWHDhlmTjJdeeomkpCSMRiNbt261LosOCgqy1m7Jzs621ol55JFH8PDwQK/Xs3r1atzd3VFVlaVLl1rnsdwoSHfDv//9byZMmMDkyZN5++230el0ZUZDhP3IhFMhhBBVxqlTp6y1WkJDQ3Fzc0NVVV599VUuX75MXl4emzdvRqfTWT8jAPz8/Lh06RJwfZJus2bN8PHxITs7G1dXVxITE2nfvr2Wb61GkeRDCCFEtXVjyWx+fr616FtOTg5fffUVJpMJV1dXhg8fbu3mLBxDkg8hhBBCOFRlPr/tVg944cKFBAcHU6tWLdq3b8/u3bvtdSghhBBCVCF2ST7WrFnDa6+9xptvvsnRo0fp3r07/fv3Jz093R6HE0IIIUQVYpfbLp07d+bhhx9m0aJF1m0tW7Zk8ODBzJ49+0+fK7ddhBBCiKpH0wqnxcXFHD582Fqc5obQ0FD27dtXbn9FUVAUxfpzbm4ucP1NCCGEEKJquPG5XZExDZsnH5cvX8ZsNtOgQYMy2xs0aEBWVla5/WfPns2MGTPKbW/UqJGtQxNCCCGEneXn51uXQ9+K3Sqc/m9FOVVVb1plbsqUKURHR1t/zsnJoUmTJqSnp/9l8MLx8vLyaNSoEefOnZPbYk5Gzo3zknPj3OT82IaqquTn5xMYGPiX+9o8+fDz88PV1bXcKMfFixfLjYYAeHp64unpWW67j4+P/CdwYvXq1ZPz46Tk3DgvOTfOTc7PnavooIHNV7t4eHjQvn174uPjy2yPj4+nW7dutj6cEEIIIaoYu9x2iY6OZuTIkXTo0IGuXbvy+eefk56ezssvv2yPwwkhhBCiCrFL8jFixAiMRiMzZ84kMzOTBx54gB9++MHa8fDPeHp6Mm3atJveihHak/PjvOTcOC85N85Nzo/jOV15dSGEEEJUb3Yrry6EEEIIcTOSfAghhBDCoST5EEIIIYRDSfIhhBBCCIdyuuRj4cKFBAcHU6tWLdq3b8/u3bu1DqnGmz59Ojqdrswff39/rcOqsXbt2sWgQYMIDAxEp9OxYcOGMo+rqsr06dMJDAykdu3a9OrVi+PHj2sTbA3zV+dm9OjR5a6lLl26aBNsDTN79mw6duyIt7c3d999N4MHD+bEiRNl9pFrx3GcKvlYs2YNr732Gm+++SZHjx6le/fu9O/fn/T0dK1Dq/Fat25NZmam9U9ycrLWIdVYV69epW3btixYsOCmj3/wwQd89NFHLFiwgIMHD+Lv70/fvn3Jz893cKQ1z1+dG4B+/fqVuZZ++OEHB0ZYcyUkJBAZGcn+/fuJj4+ntLSU0NBQrl69at1Hrh0HUp1Ip06d1JdffrnMthYtWqiTJ0/WKCKhqqo6bdo0tW3btlqHIW4CUNevX2/92WKxqP7+/ur7779v3VZUVKT6+Pioixcv1iDCmut/z42qquqoUaPUsLAwTeIRZV28eFEF1ISEBFVV5dpxNKcZ+SguLubw4cOEhoaW2R4aGsq+ffs0ikrccPLkSQIDAwkODiYiIoLTp09rHZK4iTNnzpCVlVXmOvL09KRnz55yHTmJnTt3cvfdd9OsWTNefPFFLl68qHVINVJubi4Aer0ekGvH0Zwm+bh8+TJms7lc87kGDRqUa1InHKtz584sX76cLVu28MUXX5CVlUW3bt0wGo1ahyb+x41rRa4j59S/f39WrlzJ9u3bmTdvHgcPHuTRRx9FURStQ6tRVFUlOjqakJAQHnjgAUCuHUezS3n1O6HT6cr8rKpquW3Csfr372/9e5s2bejatSv33nsvy5YtIzo6WsPIxK3IdeScRowYYf37Aw88QIcOHWjSpAlxcXGEh4drGFnNMmHCBI4dO8aePXvKPSbXjmM4zciHn58frq6u5TLMixcvlstEhbbq1KlDmzZtOHnypNahiP9xYxWSXEdVQ0BAAE2aNJFryYGioqLYtGkTO3bsICgoyLpdrh3Hcprkw8PDg/bt2xMfH19me3x8PN26ddMoKnEziqKQkpJCQECA1qGI/xEcHIy/v3+Z66i4uJiEhAS5jpyQ0Wjk3Llzci05gKqqTJgwgXXr1rF9+3aCg4PLPC7XjmM51W2X6OhoRo4cSYcOHejatSuff/456enpvPzyy1qHVqO9/vrrDBo0iMaNG3Px4kXeffdd8vLyGDVqlNah1UgFBQWkpaVZfz5z5gy//vorer2exo0b89prrzFr1izuv/9+7r//fmbNmoWXlxdPP/20hlHXDH92bvR6PdOnT2fIkCEEBARw9uxZpk6dip+fH08++aSGUdcMkZGRrFq1io0bN+Lt7W0d4fDx8aF27drodDq5dhxJ07U2N/HZZ5+pTZo0UT08PNSHH37YugxKaGfEiBFqQECA6u7urgYGBqrh4eHq8ePHtQ6rxtqxY4cKlPszatQoVVWvLxmcNm2a6u/vr3p6eqo9evRQk5OTtQ26hvizc1NYWKiGhoaqd911l+ru7q42btxYHTVqlJqenq512DXCzc4LoMbExFj3kWvHcXSqqqqOT3mEEEIIUVM5zZwPIYQQQtQMknwIIYQQwqEk+RBCCCGEQ0nyIYQQQgiHkuRDCCGEEA4lyYcQQgghHEqSDyGEEEI4lCQfQgghhHAoST6EEEII4VCSfAghhBDCoST5EEIIIYRDSfIhhBBCCIf6f/4Wor/aL7LrAAAAAElFTkSuQmCC", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "mol = rem_frag_list[0]\n", - "# ref_molecule = Atoms(symbols=mol.labels, scaled_positions=mol.frac_coord, cell=cell_vector, pbc=True)\n", - "ref_molecule = Atoms(symbols=rem_frag_list[0].labels, scaled_positions=rem_frag_list[0].frac_coord, cell=cell_vector, pbc=True)\n", - "print()\n", - "plot_atoms(ref_molecule, rotation='45x,60y,45z')" - ] - }, - { - "cell_type": "code", - "execution_count": 64, - "id": "41cc24bb", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 64, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "mol = rem_frag_list[14]\n", - "# print(mol.frac_coord)\n", - "ref_molecule = Atoms(symbols=mol.labels, scaled_positions=mol.frac_coord, cell=cell_vector, pbc=True)\n", - "# ref_molecule = Atoms(symbols=mol.labels, positions=mol.coord, cell=cell_vector, pbc=True)\n", - "\n", - "plot_atoms(ref_molecule, rotation='45x,60y,45z')" - ] - }, - { - "cell_type": "code", - "execution_count": 69, - "id": "2f87346d", - "metadata": {}, - "outputs": [ - { - "ename": "ValueError", - "evalue": "zero-size array to reduction operation minimum which has no identity", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mValueError\u001b[0m Traceback (most recent call last)", - "Input \u001b[0;32mIn [69]\u001b[0m, in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 1\u001b[0m combine \u001b[38;5;241m=\u001b[39m Atoms(cell\u001b[38;5;241m=\u001b[39mcell_vector, pbc\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mTrue\u001b[39;00m)\n\u001b[0;32m----> 2\u001b[0m \u001b[43mplot_atoms\u001b[49m\u001b[43m(\u001b[49m\u001b[43mcombine\u001b[49m\u001b[43m)\u001b[49m\n", - "File \u001b[0;32m~/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/visualize/plot.py:97\u001b[0m, in \u001b[0;36mplot_atoms\u001b[0;34m(atoms, ax, **parameters)\u001b[0m\n\u001b[1;32m 95\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m ax \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[1;32m 96\u001b[0m ax \u001b[38;5;241m=\u001b[39m plt\u001b[38;5;241m.\u001b[39mgca()\n\u001b[0;32m---> 97\u001b[0m \u001b[43mMatplotlib\u001b[49m\u001b[43m(\u001b[49m\u001b[43matoms\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43max\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mparameters\u001b[49m\u001b[43m)\u001b[49m\u001b[38;5;241m.\u001b[39mwrite()\n\u001b[1;32m 98\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m ax\n", - "File \u001b[0;32m~/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/visualize/plot.py:8\u001b[0m, in \u001b[0;36mMatplotlib.__init__\u001b[0;34m(self, atoms, ax, rotation, radii, colors, scale, offset, **parameters)\u001b[0m\n\u001b[1;32m 5\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21m__init__\u001b[39m(\u001b[38;5;28mself\u001b[39m, atoms, ax,\n\u001b[1;32m 6\u001b[0m rotation\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124m'\u001b[39m, radii\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mNone\u001b[39;00m,\n\u001b[1;32m 7\u001b[0m colors\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mNone\u001b[39;00m, scale\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m1\u001b[39m, offset\u001b[38;5;241m=\u001b[39m(\u001b[38;5;241m0\u001b[39m, \u001b[38;5;241m0\u001b[39m), \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mparameters):\n\u001b[0;32m----> 8\u001b[0m \u001b[43mPlottingVariables\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[38;5;21;43m__init__\u001b[39;49m\u001b[43m(\u001b[49m\n\u001b[1;32m 9\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43matoms\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mrotation\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mrotation\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 10\u001b[0m \u001b[43m \u001b[49m\u001b[43mradii\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mradii\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mcolors\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mcolors\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mscale\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mscale\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 11\u001b[0m \u001b[43m \u001b[49m\u001b[43mextra_offset\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43moffset\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mparameters\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 13\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39max \u001b[38;5;241m=\u001b[39m ax\n\u001b[1;32m 14\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mfigure \u001b[38;5;241m=\u001b[39m ax\u001b[38;5;241m.\u001b[39mfigure\n", - "File \u001b[0;32m~/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/io/utils.py:71\u001b[0m, in \u001b[0;36mPlottingVariables.__init__\u001b[0;34m(self, atoms, rotation, show_unit_cell, radii, bbox, colors, scale, maxwidth, extra_offset)\u001b[0m\n\u001b[1;32m 68\u001b[0m R \u001b[38;5;241m=\u001b[39m positions[:natoms]\n\u001b[1;32m 70\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m bbox \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[0;32m---> 71\u001b[0m X1 \u001b[38;5;241m=\u001b[39m \u001b[43m(\u001b[49m\u001b[43mR\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m-\u001b[39;49m\u001b[43m \u001b[49m\u001b[43mradii\u001b[49m\u001b[43m[\u001b[49m\u001b[43m:\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43;01mNone\u001b[39;49;00m\u001b[43m]\u001b[49m\u001b[43m)\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mmin\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m0\u001b[39;49m\u001b[43m)\u001b[49m\n\u001b[1;32m 72\u001b[0m X2 \u001b[38;5;241m=\u001b[39m (R \u001b[38;5;241m+\u001b[39m radii[:, \u001b[38;5;28;01mNone\u001b[39;00m])\u001b[38;5;241m.\u001b[39mmax(\u001b[38;5;241m0\u001b[39m)\n\u001b[1;32m 73\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m show_unit_cell \u001b[38;5;241m==\u001b[39m \u001b[38;5;241m2\u001b[39m:\n", - "File \u001b[0;32m~/miniconda3/envs/cell2mol/lib/python3.10/site-packages/numpy/core/_methods.py:45\u001b[0m, in \u001b[0;36m_amin\u001b[0;34m(a, axis, out, keepdims, initial, where)\u001b[0m\n\u001b[1;32m 43\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21m_amin\u001b[39m(a, axis\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mNone\u001b[39;00m, out\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mNone\u001b[39;00m, keepdims\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mFalse\u001b[39;00m,\n\u001b[1;32m 44\u001b[0m initial\u001b[38;5;241m=\u001b[39m_NoValue, where\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mTrue\u001b[39;00m):\n\u001b[0;32m---> 45\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mumr_minimum\u001b[49m\u001b[43m(\u001b[49m\u001b[43ma\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43maxis\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43;01mNone\u001b[39;49;00m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mout\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mkeepdims\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43minitial\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mwhere\u001b[49m\u001b[43m)\u001b[49m\n", - "\u001b[0;31mValueError\u001b[0m: zero-size array to reduction operation minimum which has no identity" - ] - }, - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAi4AAAGiCAYAAADA0E3hAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/av/WaAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAcu0lEQVR4nO3db2yV5f348U9paaturRG0FkEEpxMl6mgDo6wandag0ZBskcVF1GliszmETqeMRYYxaXTRfXUKbgoaE3REReeDztEHG1Zxf2DFGCFxEWZBW0kxtqhbGXD/Hhj6W9fiOLV/uNrXK7kfnMv7Puc6uazn7X2fP3lZlmUBAJCAMcM9AQCAIyVcAIBkCBcAIBnCBQBIhnABAJIhXACAZAgXACAZwgUASIZwAQCSIVwAgGTkHC6vvPJKXHnllTFhwoTIy8uLF1988X8es2HDhqioqIji4uKYOnVqPProo/2ZKwAwyuUcLp988kmcd9558fDDDx/R/jt27IjLL788qquro7m5OX7yk5/EwoUL4/nnn895sgDA6Jb3RX5kMS8vL1544YWYN2/eYfe544474qWXXopt27Z1j9XW1sYbb7wRr7/+en8fGgAYhQoG+wFef/31qKmp6TF22WWXxapVq+Lf//53jB07ttcxXV1d0dXV1X374MGD8eGHH8a4ceMiLy9vsKcMAAyALMti7969MWHChBgzZmDeVjvo4dLW1hZlZWU9xsrKymL//v3R3t4e5eXlvY6pr6+P5cuXD/bUAIAhsHPnzpg4ceKA3Negh0tE9DpLcujq1OHOnixZsiTq6uq6b3d0dMSpp54aO3fujJKSksGbKAAwYDo7O2PSpEnx5S9/ecDuc9DD5eSTT462trYeY7t3746CgoIYN25cn8cUFRVFUVFRr/GSkhLhAgCJGci3eQz697jMnj07Ghsbe4ytX78+Kisr+3x/CwDA4eQcLh9//HFs2bIltmzZEhGffdx5y5Yt0dLSEhGfXeZZsGBB9/61tbXx7rvvRl1dXWzbti1Wr14dq1atittuu21gngEAMGrkfKlo06ZNcdFFF3XfPvRelOuuuy6efPLJaG1t7Y6YiIgpU6ZEQ0NDLF68OB555JGYMGFCPPTQQ/Gtb31rAKYPAIwmX+h7XIZKZ2dnlJaWRkdHh/e4AEAiBuP1228VAQDJEC4AQDKECwCQDOECACRDuAAAyRAuAEAyhAsAkAzhAgAkQ7gAAMkQLgBAMoQLAJAM4QIAJEO4AADJEC4AQDKECwCQDOECACRDuAAAyRAuAEAyhAsAkAzhAgAkQ7gAAMkQLgBAMoQLAJAM4QIAJEO4AADJEC4AQDKECwCQDOECACRDuAAAyRAuAEAyhAsAkAzhAgAkQ7gAAMkQLgBAMoQLAJAM4QIAJEO4AADJEC4AQDKECwCQDOECACRDuAAAyRAuAEAyhAsAkAzhAgAkQ7gAAMkQLgBAMoQLAJAM4QIAJEO4AADJEC4AQDKECwCQDOECACRDuAAAyRAuAEAyhAsAkAzhAgAkQ7gAAMkQLgBAMoQLAJAM4QIAJEO4AADJEC4AQDKECwCQjH6Fy4oVK2LKlClRXFwcFRUV0dTU9Ln7r1mzJs4777w49thjo7y8PG644YbYs2dPvyYMAIxeOYfL2rVrY9GiRbF06dJobm6O6urqmDt3brS0tPS5/6uvvhoLFiyIG2+8Md5666149tln469//WvcdNNNX3jyAMDoknO4PPDAA3HjjTfGTTfdFNOmTYv/+7//i0mTJsXKlSv73P9Pf/pTnHbaabFw4cKYMmVKfOMb34ibb745Nm3a9IUnDwCMLjmFy759+2Lz5s1RU1PTY7ympiY2btzY5zFVVVWxa9euaGhoiCzL4oMPPojnnnsurrjiisM+TldXV3R2dvbYAAByCpf29vY4cOBAlJWV9RgvKyuLtra2Po+pqqqKNWvWxPz586OwsDBOPvnkOP744+OXv/zlYR+nvr4+SktLu7dJkyblMk0AYITq15tz8/LyetzOsqzX2CFbt26NhQsXxl133RWbN2+Ol19+OXbs2BG1tbWHvf8lS5ZER0dH97Zz587+TBMAGGEKctl5/PjxkZ+f3+vsyu7du3udhTmkvr4+5syZE7fffntERJx77rlx3HHHRXV1ddxzzz1RXl7e65iioqIoKirKZWoAwCiQ0xmXwsLCqKioiMbGxh7jjY2NUVVV1ecxn376aYwZ0/Nh8vPzI+KzMzUAAEcq50tFdXV18fjjj8fq1atj27ZtsXjx4mhpaem+9LNkyZJYsGBB9/5XXnllrFu3LlauXBnbt2+P1157LRYuXBgzZ86MCRMmDNwzAQBGvJwuFUVEzJ8/P/bs2RN33313tLa2xvTp06OhoSEmT54cERGtra09vtPl+uuvj71798bDDz8cP/rRj+L444+Piy++OO69996BexYAwKiQlyVwvaazszNKS0ujo6MjSkpKhns6AMARGIzXb79VBAAkQ7gAAMkQLgBAMoQLAJAM4QIAJEO4AADJEC4AQDKECwCQDOECACRDuAAAyRAuAEAyhAsAkAzhAgAkQ7gAAMkQLgBAMoQLAJAM4QIAJEO4AADJEC4AQDKECwCQDOECACRDuAAAyRAuAEAyhAsAkAzhAgAkQ7gAAMkQLgBAMoQLAJAM4QIAJEO4AADJEC4AQDKECwCQDOECACRDuAAAyRAuAEAyhAsAkAzhAgAkQ7gAAMkQLgBAMoQLAJAM4QIAJEO4AADJEC4AQDKECwCQDOECACRDuAAAyRAuAEAyhAsAkAzhAgAkQ7gAAMkQLgBAMoQLAJAM4QIAJEO4AADJEC4AQDKECwCQDOECACRDuAAAyRAuAEAyhAsAkAzhAgAkQ7gAAMkQLgBAMvoVLitWrIgpU6ZEcXFxVFRURFNT0+fu39XVFUuXLo3JkydHUVFRnH766bF69ep+TRgAGL0Kcj1g7dq1sWjRolixYkXMmTMnfvWrX8XcuXNj69atceqpp/Z5zNVXXx0ffPBBrFq1Kr7yla/E7t27Y//+/V948gDA6JKXZVmWywGzZs2KGTNmxMqVK7vHpk2bFvPmzYv6+vpe+7/88svxne98J7Zv3x4nnHBCvybZ2dkZpaWl0dHRESUlJf26DwBgaA3G63dOl4r27dsXmzdvjpqamh7jNTU1sXHjxj6Peemll6KysjLuu+++OOWUU+LMM8+M2267Lf75z38e9nG6urqis7OzxwYAkNOlovb29jhw4ECUlZX1GC8rK4u2trY+j9m+fXu8+uqrUVxcHC+88EK0t7fH97///fjwww8P+z6X+vr6WL58eS5TAwBGgX69OTcvL6/H7SzLeo0dcvDgwcjLy4s1a9bEzJkz4/LLL48HHnggnnzyycOedVmyZEl0dHR0bzt37uzPNAGAESanMy7jx4+P/Pz8XmdXdu/e3esszCHl5eVxyimnRGlpaffYtGnTIsuy2LVrV5xxxhm9jikqKoqioqJcpgYAjAI5nXEpLCyMioqKaGxs7DHe2NgYVVVVfR4zZ86ceP/99+Pjjz/uHnv77bdjzJgxMXHixH5MGQAYrXK+VFRXVxePP/54rF69OrZt2xaLFy+OlpaWqK2tjYjPLvMsWLCge/9rrrkmxo0bFzfccENs3bo1Xnnllbj99tvje9/7XhxzzDED90wAgBEv5+9xmT9/fuzZsyfuvvvuaG1tjenTp0dDQ0NMnjw5IiJaW1ujpaWle/8vfelL0djYGD/84Q+jsrIyxo0bF1dffXXcc889A/csAIBRIefvcRkOvscFANIz7N/jAgAwnIQLAJAM4QIAJEO4AADJEC4AQDKECwCQDOECACRDuAAAyRAuAEAyhAsAkAzhAgAkQ7gAAMkQLgBAMoQLAJAM4QIAJEO4AADJEC4AQDKECwCQDOECACRDuAAAyRAuAEAyhAsAkAzhAgAkQ7gAAMkQLgBAMoQLAJAM4QIAJEO4AADJEC4AQDKECwCQDOECACRDuAAAyRAuAEAyhAsAkAzhAgAkQ7gAAMkQLgBAMoQLAJAM4QIAJEO4AADJEC4AQDKECwCQDOECACRDuAAAyRAuAEAyhAsAkAzhAgAkQ7gAAMkQLgBAMoQLAJAM4QIAJEO4AADJEC4AQDKECwCQDOECACRDuAAAyRAuAEAyhAsAkAzhAgAkQ7gAAMkQLgBAMoQLAJAM4QIAJKNf4bJixYqYMmVKFBcXR0VFRTQ1NR3Rca+99loUFBTE+eef35+HBQBGuZzDZe3atbFo0aJYunRpNDc3R3V1dcydOzdaWlo+97iOjo5YsGBBfPOb3+z3ZAGA0S0vy7IslwNmzZoVM2bMiJUrV3aPTZs2LebNmxf19fWHPe473/lOnHHGGZGfnx8vvvhibNmy5bD7dnV1RVdXV/ftzs7OmDRpUnR0dERJSUku0wUAhklnZ2eUlpYO6Ot3Tmdc9u3bF5s3b46ampoe4zU1NbFx48bDHvfEE0/EO++8E8uWLTuix6mvr4/S0tLubdKkSblMEwAYoXIKl/b29jhw4ECUlZX1GC8rK4u2trY+j/n73/8ed955Z6xZsyYKCgqO6HGWLFkSHR0d3dvOnTtzmSYAMEIdWUn8l7y8vB63syzrNRYRceDAgbjmmmti+fLlceaZZx7x/RcVFUVRUVF/pgYAjGA5hcv48eMjPz+/19mV3bt39zoLExGxd+/e2LRpUzQ3N8ctt9wSEREHDx6MLMuioKAg1q9fHxdffPEXmD4AMJrkdKmosLAwKioqorGxscd4Y2NjVFVV9dq/pKQk3nzzzdiyZUv3VltbG1/96ldjy5YtMWvWrC82ewBgVMn5UlFdXV1ce+21UVlZGbNnz45f//rX0dLSErW1tRHx2ftT3nvvvXjqqadizJgxMX369B7Hn3TSSVFcXNxrHADgf8k5XObPnx979uyJu+++O1pbW2P69OnR0NAQkydPjoiI1tbW//mdLgAA/ZHz97gMh8H4HDgAMLiG/XtcAACGk3ABAJIhXACAZAgXACAZwgUASIZwAQCSIVwAgGQIFwAgGcIFAEiGcAEAkiFcAIBkCBcAIBnCBQBIhnABAJIhXACAZAgXACAZwgUASIZwAQCSIVwAgGQIFwAgGcIFAEiGcAEAkiFcAIBkCBcAIBnCBQBIhnABAJIhXACAZAgXACAZwgUASIZwAQCSIVwAgGQIFwAgGcIFAEiGcAEAkiFcAIBkCBcAIBnCBQBIhnABAJIhXACAZAgXACAZwgUASIZwAQCSIVwAgGQIFwAgGcIFAEiGcAEAkiFcAIBkCBcAIBnCBQBIhnABAJIhXACAZAgXACAZwgUASIZwAQCSIVwAgGQIFwAgGcIFAEiGcAEAkiFcAIBkCBcAIBnCBQBIhnABAJIhXACAZPQrXFasWBFTpkyJ4uLiqKioiKampsPuu27durj00kvjxBNPjJKSkpg9e3b8/ve/7/eEAYDRK+dwWbt2bSxatCiWLl0azc3NUV1dHXPnzo2WlpY+93/llVfi0ksvjYaGhti8eXNcdNFFceWVV0Zzc/MXnjwAMLrkZVmW5XLArFmzYsaMGbFy5crusWnTpsW8efOivr7+iO7jnHPOifnz58ddd93V5z/v6uqKrq6u7tudnZ0xadKk6OjoiJKSklymCwAMk87OzigtLR3Q1++czrjs27cvNm/eHDU1NT3Ga2pqYuPGjUd0HwcPHoy9e/fGCSeccNh96uvro7S0tHubNGlSLtMEAEaonMKlvb09Dhw4EGVlZT3Gy8rKoq2t7Yju4/77749PPvkkrr766sPus2TJkujo6Ojedu7cmcs0AYARqqA/B+Xl5fW4nWVZr7G+PPPMM/Gzn/0sfvvb38ZJJ5102P2KioqiqKioP1MDAEawnMJl/PjxkZ+f3+vsyu7du3udhflva9eujRtvvDGeffbZuOSSS3KfKQAw6uV0qaiwsDAqKiqisbGxx3hjY2NUVVUd9rhnnnkmrr/++nj66afjiiuu6N9MAYBRL+dLRXV1dXHttddGZWVlzJ49O379619HS0tL1NbWRsRn709577334qmnnoqIz6JlwYIF8eCDD8bXv/717rM1xxxzTJSWlg7gUwEARrqcw2X+/PmxZ8+euPvuu6O1tTWmT58eDQ0NMXny5IiIaG1t7fGdLr/61a9i//798YMf/CB+8IMfdI9fd9118eSTT37xZwAAjBo5f4/LcBiMz4EDAINr2L/HBQBgOAkXACAZwgUASIZwAQCSIVwAgGQIFwAgGcIFAEiGcAEAkiFcAIBkCBcAIBnCBQBIhnABAJIhXACAZAgXACAZwgUASIZwAQCSIVwAgGQIFwAgGcIFAEiGcAEAkiFcAIBkCBcAIBnCBQBIhnABAJIhXACAZAgXACAZwgUASIZwAQCSIVwAgGQIFwAgGcIFAEiGcAEAkiFcAIBkCBcAIBnCBQBIhnABAJIhXACAZAgXACAZwgUASIZwAQCSIVwAgGQIFwAgGcIFAEiGcAEAkiFcAIBkCBcAIBnCBQBIhnABAJIhXACAZAgXACAZwgUASIZwAQCSIVwAgGQIFwAgGcIFAEiGcAEAkiFcAIBkCBcAIBnCBQBIhnABAJIhXACAZAgXACAZwgUASEa/wmXFihUxZcqUKC4ujoqKimhqavrc/Tds2BAVFRVRXFwcU6dOjUcffbRfkwUARrecw2Xt2rWxaNGiWLp0aTQ3N0d1dXXMnTs3Wlpa+tx/x44dcfnll0d1dXU0NzfHT37yk1i4cGE8//zzX3jyAMDokpdlWZbLAbNmzYoZM2bEypUru8emTZsW8+bNi/r6+l7733HHHfHSSy/Ftm3busdqa2vjjTfeiNdff73Px+jq6oqurq7u2x0dHXHqqafGzp07o6SkJJfpAgDDpLOzMyZNmhQfffRRlJaWDsydZjno6urK8vPzs3Xr1vUYX7hwYXbBBRf0eUx1dXW2cOHCHmPr1q3LCgoKsn379vV5zLJly7KIsNlsNpvNNgK2d955J5fc+FwFkYP29vY4cOBAlJWV9RgvKyuLtra2Po9pa2vrc//9+/dHe3t7lJeX9zpmyZIlUVdX1337o48+ismTJ0dLS8vAFRv9cqienf0aftbi6GEtji7W4+hx6IrJCSecMGD3mVO4HJKXl9fjdpZlvcb+1/59jR9SVFQURUVFvcZLS0v9S3iUKCkpsRZHCWtx9LAWRxfrcfQYM2bgPsSc0z2NHz8+8vPze51d2b17d6+zKoecfPLJfe5fUFAQ48aNy3G6AMBollO4FBYWRkVFRTQ2NvYYb2xsjKqqqj6PmT17dq/9169fH5WVlTF27NgcpwsAjGY5n7upq6uLxx9/PFavXh3btm2LxYsXR0tLS9TW1kbEZ+9PWbBgQff+tbW18e6770ZdXV1s27YtVq9eHatWrYrbbrvtiB+zqKgoli1b1uflI4aWtTh6WIujh7U4uliPo8dgrEXOH4eO+OwL6O67775obW2N6dOnxy9+8Yu44IILIiLi+uuvj3/84x/xxz/+sXv/DRs2xOLFi+Ott96KCRMmxB133NEdOgAAR6pf4QIAMBz8VhEAkAzhAgAkQ7gAAMkQLgBAMo6acFmxYkVMmTIliouLo6KiIpqamj53/w0bNkRFRUUUFxfH1KlT49FHHx2imY58uazFunXr4tJLL40TTzwxSkpKYvbs2fH73/9+CGc7suX6d3HIa6+9FgUFBXH++ecP7gRHkVzXoqurK5YuXRqTJ0+OoqKiOP3002P16tVDNNuRLde1WLNmTZx33nlx7LHHRnl5edxwww2xZ8+eIZrtyPXKK6/ElVdeGRMmTIi8vLx48cUX/+cxA/LaPWC/evQF/OY3v8nGjh2bPfbYY9nWrVuzW2+9NTvuuOOyd999t8/9t2/fnh177LHZrbfemm3dujV77LHHsrFjx2bPPffcEM985Ml1LW699dbs3nvvzf7yl79kb7/9drZkyZJs7Nix2d/+9rchnvnIk+taHPLRRx9lU6dOzWpqarLzzjtvaCY7wvVnLa666qps1qxZWWNjY7Zjx47sz3/+c/baa68N4axHplzXoqmpKRszZkz24IMPZtu3b8+ampqyc845J5s3b94Qz3zkaWhoyJYuXZo9//zzWURkL7zwwufuP1Cv3UdFuMycOTOrra3tMXbWWWdld955Z5/7//jHP87OOuusHmM333xz9vWvf33Q5jha5LoWfTn77LOz5cuXD/TURp3+rsX8+fOzn/70p9myZcuEywDJdS1+97vfZaWlpdmePXuGYnqjSq5r8fOf/zybOnVqj7GHHnoomzhx4qDNcTQ6knAZqNfuYb9UtG/fvti8eXPU1NT0GK+pqYmNGzf2eczrr7/ea//LLrssNm3aFP/+978Hba4jXX/W4r8dPHgw9u7dO6C/BDoa9XctnnjiiXjnnXdi2bJlgz3FUaM/a/HSSy9FZWVl3HfffXHKKafEmWeeGbfddlv885//HIopj1j9WYuqqqrYtWtXNDQ0RJZl8cEHH8Rzzz0XV1xxxVBMmf8wUK/d/fp16IHU3t4eBw4c6PUjjWVlZb1+nPGQtra2Pvffv39/tLe3R3l5+aDNdyTrz1r8t/vvvz8++eSTuPrqqwdjiqNGf9bi73//e9x5553R1NQUBQXD/qc9YvRnLbZv3x6vvvpqFBcXxwsvvBDt7e3x/e9/Pz788EPvc/kC+rMWVVVVsWbNmpg/f37861//iv3798dVV10Vv/zlL4diyvyHgXrtHvYzLofk5eX1uJ1lWa+x/7V/X+PkLte1OOSZZ56Jn/3sZ7F27do46aSTBmt6o8qRrsWBAwfimmuuieXLl8eZZ545VNMbVXL5uzh48GDk5eXFmjVrYubMmXH55ZfHAw88EE8++aSzLgMgl7XYunVrLFy4MO66667YvHlzvPzyy7Fjxw4/OzNMBuK1e9j/t2z8+PGRn5/fq5Z3797dq8wOOfnkk/vcv6CgIMaNGzdocx3p+rMWh6xduzZuvPHGePbZZ+OSSy4ZzGmOCrmuxd69e2PTpk3R3Nwct9xyS0R89uKZZVkUFBTE+vXr4+KLLx6SuY80/fm7KC8vj1NOOSVKS0u7x6ZNmxZZlsWuXbvijDPOGNQ5j1T9WYv6+vqYM2dO3H777RERce6558Zxxx0X1dXVcc899zhDP4QG6rV72M+4FBYWRkVFRTQ2NvYYb2xsjKqqqj6PmT17dq/9169fH5WVlTF27NhBm+tI15+1iPjsTMv1118fTz/9tOvGAyTXtSgpKYk333wztmzZ0r3V1tbGV7/61diyZUvMmjVrqKY+4vTn72LOnDnx/vvvx8cff9w99vbbb8eYMWNi4sSJgzrfkaw/a/Hpp5/GmDE9X+ry8/Mj4v//3z5DY8Beu3N6K+8gOfTxtlWrVmVbt27NFi1alB133HHZP/7xjyzLsuzOO+/Mrr322u79D32kavHixdnWrVuzVatW+Tj0AMl1LZ5++umsoKAge+SRR7LW1tbu7aOPPhqupzBi5LoW/82nigZOrmuxd+/ebOLEidm3v/3t7K233so2bNiQnXHGGdlNN900XE9hxMh1LZ544omsoKAgW7FiRfbOO+9kr776alZZWZnNnDlzuJ7CiLF3796subk5a25uziIie+CBB7Lm5ubuj6YP1mv3UREuWZZljzzySDZ58uSssLAwmzFjRrZhw4buf3bddddlF154YY/9//jHP2Zf+9rXssLCwuy0007LVq5cOcQzHrlyWYsLL7wwi4he23XXXTf0Ex+Bcv27+E/CZWDluhbbtm3LLrnkkuyYY47JJk6cmNXV1WWffvrpEM96ZMp1LR566KHs7LPPzo455pisvLw8++53v5vt2rVriGc98vzhD3/43P/+D9Zrd16WOVcGAKRh2N/jAgBwpIQLAJAM4QIAJEO4AADJEC4AQDKECwCQDOECACRDuAAAyRAuAEAyhAsAkAzhAgAk4/8BrQWhjBP+6s8AAAAASUVORK5CYII=", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "combine = Atoms(cell=cell_vector, pbc=True)\n", - "plot_atoms(combine)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "7c4567e4", - "metadata": {}, - "outputs": [], - "source": [ - "\n", - "for mol in rem_frag_list:\n", - " ref_molecule = Atoms(symbols=mol.labels, scaled_positions=mol.frac_coord, cell=cell_vector, pbc=True)\n", - " plot_atoms(ref_molecule, rotation='45x,60y,45z')\n", - "combined_mol = " - ] - }, - { - "cell_type": "code", - "execution_count": 65, - "id": "61f7134b", - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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CxYsyKQilyHycujQoWyPb2Fhga2tbabkn2fPnnHixAlOnz4tbAsPD+f06dOsX79e2DZt2jS6dOkihHoy5hUR+S8RERG0bNkST09P4aZds2bNPB9n48aNWOhp0s7GIF921CidvhJSrY0LDt2SqNk1kdLl0282jo6OSCQSoZ37P//889n+kZGRbNiwgWPHjgm/BVVVVebOncuoUaOoW7cuLi4u7N69B4CPSWmExaegp64KsmQC3cfz3ncriTHP82V/TkhTY0mMeZPnG2dAQACrV6/Gz88PuVzOjBkzKFeuHBYWFujo6lGnTn2GDx/O4cOHady4sfAZFQa6uro4OTnx6NEjoZRXLpfzzz//kJKSkmnunBwPADc3N8qWLUvLljmXOA8YMAA1NTWOHDmSb/tFskcul3Ps2DFmzZrFhAkT0vOiFJAgXVJQ+KNFWloa8+fP5++//yYsLIwyZcowZMgQfv3110KPWWVk//fr148GDRrkqQ6+d+/ewuvcOgbu7u506tQp0z4rV65EU1MzUzdIKysrnj9/jqurq7BtwIABuLu707RpUzZv3gwgeLhi5c33y9SpU3n+/Hmm70Be5bo/fvzIP/v/ZkINI5SV8ldaXsM43fmIj3yImpY1EokEixorkCip4uKyBjs7e/r0SRe56tevH/369ePChQu8fZseqrly5cpnx3z//v1nQlUGFr2ICj7CL/Us6FzREGUlCds8wokOO0tk4N+Y2k5Ds9p8APweDUBV0xI9s/boGjfP13llEB16CpBToUKFHMdC+md648YNbt++jYODAxs3bqR79+6YVV2IdilHZLIUkuPe4BPuiteBC0ilUh49dsHIyKjApbzZ0bBhQ65du4arqyv16tVDSUmJOnXqcOzYMbS1tXPldGQQFxdHhQoVcnWd1tXVxczMLM9NDkXyRo0aNbh06RKQns+ooqLC7du3M3Vq/1pR+F3ujz/+YPPmzezevZvq1avz5MkThg4dir6+Pj/++KOip8tERvZ/Rvy1Xbt21KpVi8WLF+e6JO1L5NYhkclkxMfHY2FhIewzefJkIHM4p0ePHpQuXTpTydqwYcO4cOECLVq0EJRaX758iYaGBtbW1t9cwpHIv2Qss65duxZDQ0OePXuW79Wx3bt3k5aaSp/KpfNtj5m2GvbGuvgH7KSUZbpjLpFIsLBbinap+rzynMCSJcto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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "for mol in rem_frag_list:\n", - " # ref_molecule = Atoms(symbols=mol.labels, scaled_positions=mol.frac_coord, cell=cell_vector, pbc=True)\n", - " ref_molecule = Atoms(symbols=mol.labels, positions=mol.coord, cell=cell_vector, pbc=True)\n", - "\n", - " plot_atoms(ref_molecule, rotation='45x,45y,45z')" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "7fd0d807", - "metadata": {}, - "outputs": [], - "source": [ - "[0, 1, 2, 3, 4, 5, 6, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39]\n", - "\n", - "{0, 1, 2, 3, 4, 5, 6, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 28, 29, 34, 35, 36, 37, 38, 39}" - ] - }, - { - "cell_type": "code", - "execution_count": 24, - "id": "b9091e60", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "30" - ] - }, - "execution_count": 24, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "len({0, 1, 2, 3, 4, 5, 6, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 28, 29, 34, 35, 36, 37, 38, 39})" - ] - }, - { - "cell_type": "code", - "execution_count": 23, - "id": "82ec0ff8", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "('H3-C2-N', 'H-C2-N') (0, 1)\n", - "('H3-C2-N', 'C2-F') (0, 2)\n", - "('H3-C2-N', 'C2-N') (0, 3)\n", - "('H3-C2-N', 'H') (0, 4)\n", - "merged: ('H3-C2-N', 'H') at indices (0, 4)\n", - "('H3-C2-N-H', 'H-C2-N') (0, 1)\n", - "('H3-C2-N-H', 'C2-F') (0, 2)\n", - "('H3-C2-N-H', 'C2-N') (0, 3)\n", - "('H3-C2-N-H', 'Fe') (0, 4)\n", - "merged: ('H3-C2-N-H', 'Fe') at indices (0, 4)\n", - "('H3-C2-N-H-Fe', 'H-C2-N') (0, 1)\n", - "('H3-C2-N-H-Fe', 'C2-F') (0, 2)\n", - "('H3-C2-N-H-Fe', 'C2-N') (0, 3)\n", - "('H3-C2-N-H-Fe', 'H') (0, 4)\n", - "merged: ('H3-C2-N-H-Fe', 'H') at indices (0, 4)\n", - "('H3-C2-N-H-Fe-H', 'H-C2-N') (0, 1)\n", - "('H3-C2-N-H-Fe-H', 'C2-F') (0, 2)\n", - "('H3-C2-N-H-Fe-H', 'C2-N') (0, 3)\n", - "('H-C2-N', 'C2-F') (1, 2)\n", - "merged: ('H-C2-N', 'C2-F') at indices (1, 2)\n", - "('H3-C2-N-H-Fe-H', 'H-C2-N-C2-F') (0, 1)\n", - "('H3-C2-N-H-Fe-H', 'C2-N') (0, 2)\n", - "('H-C2-N-C2-F', 'C2-N') (1, 2)\n", - "merged: ('H-C2-N-C2-F', 'C2-N') at indices (1, 2)\n", - "('H3-C2-N-H-Fe-H', 'H-C2-N-C2-F-C2-N') (0, 1)\n", - "Final fragments: ['H3-C2-N-H-Fe-H', 'H-C2-N-C2-F-C2-N']\n" - ] - } - ], - "source": [ - "from itertools import combinations\n", - "\n", - "def merge_elements(fragments):\n", - " # Start an infinite loop to handle dynamic list updates\n", - " while True:\n", - " # Create an index list for the current state of fragments\n", - " idx_list = list(range(len(fragments)))\n", - " # Keep track of whether any items were merged during this pass\n", - " merged = False\n", - "\n", - " # Generate all possible combinations of indices for current fragments\n", - " for comb, idx_comb in zip(combinations(fragments, 2), combinations(idx_list, 2)):\n", - " print(comb, idx_comb) # Optional: for debugging to see the pairs being processed\n", - "\n", - " # Check if these indices should be merged (e.g., based on some condition)\n", - " if should_merge(comb, idx_comb): # Define your merge condition here\n", - " print('merged:', comb, 'at indices', idx_comb)\n", - " # Merge fragments and update the first element in place\n", - " fragments[idx_comb[0]] = comb[0] + '-' + comb[1]\n", - " # Remove the second element from the list\n", - " fragments.pop(idx_comb[1])\n", - " # Set merged flag to True as we made a change\n", - " merged = True\n", - " # Break out of the for-loop to reset combinations\n", - " break\n", - "\n", - " # If no items were merged in this pass, stop the while loop\n", - " if not merged:\n", - " break\n", - "\n", - " return fragments\n", - "\n", - "def should_merge(comb, idx_comb):\n", - " # Example merge condition: based on specific index pairs or content\n", - " return idx_comb == (0, 4) or idx_comb == (1,2) # Customize this condition based on your needs\n", - "\n", - "# Example usage\n", - "remaining_frag = ['H3-C2-N', 'H-C2-N', 'C2-F', 'C2-N', 'H', 'Fe', 'H']\n", - "result = merge_elements(remaining_frag)\n", - "print('Final fragments:', result)\n" - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "id": "238b033e", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "('H3-C2-N', 'H-C2-N') (0, 1)\n", - "('H3-C2-N', 'C2-F') (0, 2)\n", - "('H3-C2-N', 'C2-N') (0, 3)\n", - "('H3-C2-N', 'H') (0, 4)\n", - "merged\n", - "['H3-C2-NH', 'H-C2-N', 'C2-F', 'C2-N', 'Fe', 'H']\n", - "range(0, 6)\n", - "('H3-C2-N', 'Fe') (0, 5)\n", - "('H3-C2-N', 'H') (0, 6)\n", - "('H-C2-N', 'C2-F') (1, 2)\n", - "('H-C2-N', 'C2-N') (1, 3)\n", - "('H-C2-N', 'H') (1, 4)\n", - "('H-C2-N', 'Fe') (1, 5)\n", - "('H-C2-N', 'H') (1, 6)\n", - "('C2-F', 'C2-N') (2, 3)\n", - "('C2-F', 'H') (2, 4)\n", - "('C2-F', 'Fe') (2, 5)\n", - "('C2-F', 'H') (2, 6)\n", - "('C2-N', 'H') (3, 4)\n", - "('C2-N', 'Fe') (3, 5)\n", - "('C2-N', 'H') (3, 6)\n", - "('H', 'Fe') (4, 5)\n", - "('H', 'H') (4, 6)\n", - "('Fe', 'H') (5, 6)\n" - ] - } - ], - "source": [ - "from itertools import combinations\n", - "remaining_frag = ['H3-C2-N', 'H-C2-N', 'C2-F', 'C2-N', 'H', 'Fe', 'H']\n", - "idx_list = range(len(remaining_frag))\n", - "for comb, idx_comb in zip(combinations(remaining_frag, 2), combinations(idx_list, 2)):\n", - " print(comb, idx_comb)\n", - " if idx_comb == (0, 4):\n", - " print('merged')\n", - " remaining_frag[idx_comb[0]] = comb[0] + comb[1]\n", - " remaining_frag.pop(idx_comb[1])\n", - " print(remaining_frag)\n", - " idx_list = range(len(remaining_frag))\n", - " print(idx_list)" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "id": "0fc550e4-349a-48f8-aa21-b80d4547b25c", - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 5, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "plot_atoms(atoms)" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "id": "22d737d2", - "metadata": {}, - "outputs": [], - "source": [ - "temp = [[0, 1, 10, 16, 22, 28, 34, 2, 11, 17, 23, 29, 35, 3, 12, 18, 24, 36, 4, 13, 19, 5, 14, 20, 6, 15, 21, 7, 8, 40, 41, 9, 42, 43],\n", - "[0, 1, 10, 16, 22, 28, 34, 2, 11, 17, 23, 29, 35, 3, 12, 18, 24, 36, 4, 13, 19, 37, 5, 14, 20, 38, 6, 15, 21, 39, 7, 8, 40, 41, 9, 42, 43],\n", - "[0, 1, 10, 16, 28, 34, 2, 11, 17, 29, 35, 3, 12, 18, 30, 36, 4, 13, 19, 25, 5, 14, 20, 6, 15, 21, 27, 7, 8, 40, 41, 9, 42, 43],\n", - "[32],\n", - "[12, 4, 13, 5, 14, 6, 15, 7, 8, 40, 41, 9, 42, 43],\n", - "[12, 4, 13, 19, 5, 14, 20, 6, 15, 21, 7, 8, 40, 41, 9, 42, 43],\n", - "[1, 2, 3, 13, 19, 5, 14, 15, 21, 7, 8, 40, 41, 9, 42, 43]]" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "id": "1b9bbb50", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "Counter({'Fe': 3, 'N': 18, 'C': 36, 'H': 54, 'Sb': 6, 'F': 36})" - ] - }, - "execution_count": 7, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "from collections import Counter\n", - "element_counts = Counter(cell_labels)\n", - "element_counts" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "id": "0ea4698a", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "12 C [0.3119, -0.023, 0.4763] [0.3119 0.977 0.4763]\n", - "13 H [0.324, -0.0037, 0.5316] [0.324 0.9963 0.5316]\n", - "14 H [0.3122, -0.1078, 0.4657] [0.3122 0.8922 0.4657]\n", - "15 H [0.2249, -0.0326, 0.4597] [0.2249 0.9674 0.4597]\n", - "18 C [1.023, 0.3349, 0.4763] [0.023 0.3349 0.4763]\n", - "19 H [1.0037, 0.3277, 0.5316] [0.0037 0.3277 0.5316]\n", - "20 H [1.1078, 0.42, 0.4657] [0.1078 0.42 0.4657]\n", - "21 H [1.0326, 0.2575, 0.4597] [0.0326 0.2575 0.4597]\n", - "24 C [0.668233, -0.021433, 0.190367] [0.668233 0.978567 0.190367]\n", - "25 H [0.66103, -0.00933, 0.13507] [0.66103 0.99067 0.13507]\n", - "26 H [0.75333, -0.02113, 0.20097] [0.75333 0.97887 0.20097]\n", - "27 H [0.59083, -0.10843, 0.20697] [0.59083 0.89157 0.20697]\n", - "30 C [1.021433, 0.689667, 0.190367] [0.021433 0.689667 0.190367]\n", - "31 H [1.00933, 0.67037, 0.13507] [0.00933 0.67037 0.13507]\n", - "32 H [1.02113, 0.77447, 0.20097] [0.02113 0.77447 0.20097]\n", - "33 H [1.10843, 0.69927, 0.20697] [0.10843 0.69927 0.20697]\n" - ] - } - ], - "source": [ - "for i, l in enumerate(ref_labels) :\n", - " if not np.allclose(ref_fracs[i], new_structures[0].get_scaled_positions()[i]):\n", - " print(i, l, ref_fracs[i], new_structures[0].get_scaled_positions()[i])" - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "id": "ebeabe1e", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 18, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "plot_atoms(new_structures[1], rotation='45x,60y,45z')" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "7bfbda4c", - "metadata": {}, - "outputs": [], - "source": [ - "[0.02143333, 0.68966667, 0.19036667]" - ] - }, - { - "cell_type": "code", - "execution_count": 39, - "id": "8f17b40a", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'C'" - ] - }, - "execution_count": 39, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "new_labels[12]" - ] - }, - { - "cell_type": "code", - "execution_count": 43, - "id": "5fed14f8", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "52 C [-3.66729132 6.77290934 3.30446075] [0.02143333 0.68966667 0.19036667]\n" - ] - } - ], - "source": [ - "for idx, row in enumerate(cell_pos):\n", - " if np.allclose(row, np.array([-3.66729132, 6.77290934, 3.30446075])):\n", - " print(idx, cell_labels[idx], row, cell_fracs[idx])" - ] - }, - { - "cell_type": "code", - "execution_count": 58, - "id": "14de494f", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "array([[6.66700000e-01, 3.33300000e-01, 3.33300000e-01],\n", - " [3.33366667e-01, 6.66633333e-01, 6.66633333e-01],\n", - " [3.33333333e-05, 9.99966667e-01, 9.99966667e-01],\n", - " [6.65900000e-01, 4.90600000e-01, 4.02530000e-01],\n", - " [5.09400000e-01, 1.75300000e-01, 4.02530000e-01],\n", - " [8.24700000e-01, 3.34100000e-01, 4.02530000e-01],\n", - " [3.32566667e-01, 8.23933333e-01, 7.35863333e-01],\n", - " [1.76066667e-01, 5.08633333e-01, 7.35863333e-01],\n", - " [4.91366667e-01, 6.67433333e-01, 7.35863333e-01],\n", - " [9.99233333e-01, 1.57266667e-01, 6.91966667e-02],\n", - " [8.42733333e-01, 8.41966667e-01, 6.91966667e-02],\n", - " [1.58033333e-01, 7.66666667e-04, 6.91966667e-02],\n", - " [3.34100000e-01, 5.09400000e-01, 5.97470000e-01],\n", - " [4.90600000e-01, 8.24700000e-01, 5.97470000e-01],\n", - " [1.75300000e-01, 6.65900000e-01, 5.97470000e-01],\n", - " [6.67433333e-01, 1.76066667e-01, 2.64136667e-01],\n", - " [8.23933333e-01, 4.91366667e-01, 2.64136667e-01],\n", - " [5.08633333e-01, 3.32566667e-01, 2.64136667e-01],\n", - " [7.66666667e-04, 8.42733333e-01, 9.30803333e-01],\n", - " [1.57266667e-01, 1.58033333e-01, 9.30803333e-01],\n", - " [8.41966667e-01, 9.99233333e-01, 9.30803333e-01],\n", - " [6.65800000e-01, 5.77400000e-01, 4.34370000e-01],\n", - " [4.22600000e-01, 8.84000000e-02, 4.34370000e-01],\n", - " [9.11600000e-01, 3.34200000e-01, 4.34370000e-01],\n", - " [3.32466667e-01, 9.10733333e-01, 7.67703333e-01],\n", - " [8.92666667e-02, 4.21733333e-01, 7.67703333e-01],\n", - " [5.78266667e-01, 6.67533333e-01, 7.67703333e-01],\n", - " [9.99133333e-01, 2.44066667e-01, 1.01036667e-01],\n", - " [7.55933333e-01, 7.55066667e-01, 1.01036667e-01],\n", - " [2.44933333e-01, 8.66666667e-04, 1.01036667e-01],\n", - " [3.34200000e-01, 4.22600000e-01, 5.65630000e-01],\n", - " [5.77400000e-01, 9.11600000e-01, 5.65630000e-01],\n", - " [8.84000000e-02, 6.65800000e-01, 5.65630000e-01],\n", - " [6.67533333e-01, 8.92666667e-02, 2.32296667e-01],\n", - " [9.10733333e-01, 5.78266667e-01, 2.32296667e-01],\n", - " [4.21733333e-01, 3.32466667e-01, 2.32296667e-01],\n", - " [8.66666667e-04, 7.55933333e-01, 8.98963333e-01],\n", - " [2.44066667e-01, 2.44933333e-01, 8.98963333e-01],\n", - " [7.55066667e-01, 9.99133333e-01, 8.98963333e-01],\n", - " [6.65100000e-01, 6.88100000e-01, 4.76300000e-01],\n", - " [3.11900000e-01, 9.77000000e-01, 4.76300000e-01],\n", - " [2.30000000e-02, 3.34900000e-01, 4.76300000e-01],\n", - " [3.31766667e-01, 2.14333333e-02, 8.09633333e-01],\n", - " [9.78566667e-01, 3.10333333e-01, 8.09633333e-01],\n", - " [6.89666667e-01, 6.68233333e-01, 8.09633333e-01],\n", - " [9.98433333e-01, 3.54766667e-01, 1.42966667e-01],\n", - " [6.45233333e-01, 6.43666667e-01, 1.42966667e-01],\n", - " [3.56333333e-01, 1.56666667e-03, 1.42966667e-01],\n", - " [3.34900000e-01, 3.11900000e-01, 5.23700000e-01],\n", - " [6.88100000e-01, 2.30000000e-02, 5.23700000e-01],\n", - " [9.77000000e-01, 6.65100000e-01, 5.23700000e-01],\n", - " [6.68233333e-01, 9.78566667e-01, 1.90366667e-01],\n", - " [2.14333333e-02, 6.89666667e-01, 1.90366667e-01],\n", - " [3.10333333e-01, 3.31766667e-01, 1.90366667e-01],\n", - " [1.56666667e-03, 6.45233333e-01, 8.57033333e-01],\n", - " [3.54766667e-01, 3.56333333e-01, 8.57033333e-01],\n", - " [6.43666667e-01, 9.98433333e-01, 8.57033333e-01],\n", - " [6.72300000e-01, 6.76000000e-01, 5.31600000e-01],\n", - " [3.24000000e-01, 9.96300000e-01, 5.31600000e-01],\n", - " [3.70000000e-03, 3.27700000e-01, 5.31600000e-01],\n", - " [3.38966667e-01, 9.33333333e-03, 8.64933333e-01],\n", - " [9.90666667e-01, 3.29633333e-01, 8.64933333e-01],\n", - " [6.70366667e-01, 6.61033333e-01, 8.64933333e-01],\n", - " [5.63333333e-03, 3.42666667e-01, 1.98266667e-01],\n", - " [6.57333333e-01, 6.62966667e-01, 1.98266667e-01],\n", - " [3.37033333e-01, 9.94366667e-01, 1.98266667e-01],\n", - " [3.27700000e-01, 3.24000000e-01, 4.68400000e-01],\n", - " [6.76000000e-01, 3.70000000e-03, 4.68400000e-01],\n", - " [9.96300000e-01, 6.72300000e-01, 4.68400000e-01],\n", - " [6.61033333e-01, 9.90666667e-01, 1.35066667e-01],\n", - " [9.33333333e-03, 6.70366667e-01, 1.35066667e-01],\n", - " [3.29633333e-01, 3.38966667e-01, 1.35066667e-01],\n", - " [9.94366667e-01, 6.57333333e-01, 8.01733333e-01],\n", - " [3.42666667e-01, 3.37033333e-01, 8.01733333e-01],\n", - " [6.62966667e-01, 5.63333333e-03, 8.01733333e-01],\n", - " [5.80000000e-01, 6.87800000e-01, 4.65700000e-01],\n", - " [3.12200000e-01, 8.92200000e-01, 4.65700000e-01],\n", - " [1.07800000e-01, 4.20000000e-01, 4.65700000e-01],\n", - " [2.46666667e-01, 2.11333333e-02, 7.99033333e-01],\n", - " [9.78866667e-01, 2.25533333e-01, 7.99033333e-01],\n", - " [7.74466667e-01, 7.53333333e-01, 7.99033333e-01],\n", - " [9.13333333e-01, 3.54466667e-01, 1.32366667e-01],\n", - " [6.45533333e-01, 5.58866667e-01, 1.32366667e-01],\n", - " [4.41133333e-01, 8.66666667e-02, 1.32366667e-01],\n", - " [4.20000000e-01, 3.12200000e-01, 5.34300000e-01],\n", - " [6.87800000e-01, 1.07800000e-01, 5.34300000e-01],\n", - " [8.92200000e-01, 5.80000000e-01, 5.34300000e-01],\n", - " [7.53333333e-01, 9.78866667e-01, 2.00966667e-01],\n", - " [2.11333333e-02, 7.74466667e-01, 2.00966667e-01],\n", - " [2.25533333e-01, 2.46666667e-01, 2.00966667e-01],\n", - " [8.66666667e-02, 6.45533333e-01, 8.67633333e-01],\n", - " [3.54466667e-01, 4.41133333e-01, 8.67633333e-01],\n", - " [5.58866667e-01, 9.13333333e-01, 8.67633333e-01],\n", - " [7.42500000e-01, 7.75100000e-01, 4.59700000e-01],\n", - " [2.24900000e-01, 9.67400000e-01, 4.59700000e-01],\n", - " [3.26000000e-02, 2.57500000e-01, 4.59700000e-01],\n", - " [4.09166667e-01, 1.08433333e-01, 7.93033333e-01],\n", - " [8.91566667e-01, 3.00733333e-01, 7.93033333e-01],\n", - " [6.99266667e-01, 5.90833333e-01, 7.93033333e-01],\n", - " [7.58333333e-02, 4.41766667e-01, 1.26366667e-01],\n", - " [5.58233333e-01, 6.34066667e-01, 1.26366667e-01],\n", - " [3.65933333e-01, 9.24166667e-01, 1.26366667e-01],\n", - " [2.57500000e-01, 2.24900000e-01, 5.40300000e-01],\n", - " [7.75100000e-01, 3.26000000e-02, 5.40300000e-01],\n", - " [9.67400000e-01, 7.42500000e-01, 5.40300000e-01],\n", - " [5.90833333e-01, 8.91566667e-01, 2.06966667e-01],\n", - " [1.08433333e-01, 6.99266667e-01, 2.06966667e-01],\n", - " [3.00733333e-01, 4.09166667e-01, 2.06966667e-01],\n", - " [9.24166667e-01, 5.58233333e-01, 8.73633333e-01],\n", - " [4.41766667e-01, 3.65933333e-01, 8.73633333e-01],\n", - " [6.34066667e-01, 7.58333333e-02, 8.73633333e-01],\n", - " [6.66700000e-01, 3.33300000e-01, 6.61838000e-01],\n", - " [3.33366667e-01, 6.66633333e-01, 9.95171333e-01],\n", - " [3.33333333e-05, 9.99966667e-01, 3.28504667e-01],\n", - " [3.33300000e-01, 6.66700000e-01, 3.38162000e-01],\n", - " [6.66633333e-01, 3.33366667e-01, 4.82866667e-03],\n", - " [9.99966667e-01, 3.33333333e-05, 6.71495333e-01],\n", - " [6.68200000e-01, 1.98100000e-01, 7.19500000e-01],\n", - " [8.01900000e-01, 4.70100000e-01, 7.19500000e-01],\n", - " [5.29900000e-01, 3.31800000e-01, 7.19500000e-01],\n", - " [3.34866667e-01, 5.31433333e-01, 5.28333333e-02],\n", - " [4.68566667e-01, 8.03433333e-01, 5.28333333e-02],\n", - " [1.96566667e-01, 6.65133333e-01, 5.28333333e-02],\n", - " [1.53333333e-03, 8.64766667e-01, 3.86166667e-01],\n", - " [1.35233333e-01, 1.36766667e-01, 3.86166667e-01],\n", - " [8.63233333e-01, 9.98466667e-01, 3.86166667e-01],\n", - " [3.31800000e-01, 8.01900000e-01, 2.80500000e-01],\n", - " [1.98100000e-01, 5.29900000e-01, 2.80500000e-01],\n", - " [4.70100000e-01, 6.68200000e-01, 2.80500000e-01],\n", - " [6.65133333e-01, 4.68566667e-01, 9.47166667e-01],\n", - " [5.31433333e-01, 1.96566667e-01, 9.47166667e-01],\n", - " [8.03433333e-01, 3.34866667e-01, 9.47166667e-01],\n", - " [9.98466667e-01, 1.35233333e-01, 6.13833333e-01],\n", - " [8.64766667e-01, 8.63233333e-01, 6.13833333e-01],\n", - " [1.36766667e-01, 1.53333333e-03, 6.13833333e-01],\n", - " [5.35000000e-01, 1.96800000e-01, 6.00830000e-01],\n", - " [8.03200000e-01, 3.38200000e-01, 6.00830000e-01],\n", - " [6.61800000e-01, 4.65000000e-01, 6.00830000e-01],\n", - " [2.01666667e-01, 5.30133333e-01, 9.34163333e-01],\n", - " [4.69866667e-01, 6.71533333e-01, 9.34163333e-01],\n", - " [3.28466667e-01, 7.98333333e-01, 9.34163333e-01],\n", - " [8.68333333e-01, 8.63466667e-01, 2.67496667e-01],\n", - " [1.36533333e-01, 4.86666667e-03, 2.67496667e-01],\n", - " [9.95133333e-01, 1.31666667e-01, 2.67496667e-01],\n", - " [4.65000000e-01, 8.03200000e-01, 3.99170000e-01],\n", - " [1.96800000e-01, 6.61800000e-01, 3.99170000e-01],\n", - " [3.38200000e-01, 5.35000000e-01, 3.99170000e-01],\n", - " [7.98333333e-01, 4.69866667e-01, 6.58366667e-02],\n", - " [5.30133333e-01, 3.28466667e-01, 6.58366667e-02],\n", - " [6.71533333e-01, 2.01666667e-01, 6.58366667e-02],\n", - " [1.31666667e-01, 1.36533333e-01, 7.32503333e-01],\n", - " [8.63466667e-01, 9.95133333e-01, 7.32503333e-01],\n", - " [4.86666667e-03, 8.68333333e-01, 7.32503333e-01]])" - ] - }, - "execution_count": 58, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "cell_fracs" - ] - }, - { - "cell_type": "code", - "execution_count": 74, - "id": "7b803ff0-4c74-4ed4-a312-c5cfe49c5c76", - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "data": { - "text/plain": [ - "('H', 'H')" - ] - }, - "execution_count": 74, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "labels[56] , cell_labels[56]" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "be1c39dc-09a3-4850-a576-ce838b13afff", - "metadata": {}, - "outputs": [], - "source": [ - "a" - ] - }, - { - "cell_type": "code", - "execution_count": 75, - "id": "7c8ba554-3aa5-40a9-ae1f-1b8356f98df9", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "symmtry operation 0: new symmetry atom index 14 H [-1.46173197 4.019976 4.96974141] [-1.74070716e-17 6.66000000e-01 3.75000000e-01]\n", - "symmtry operation 6: new symmetry atom index 14 H [-1.46173197 4.019976 4.96974141] [-1.74070716e-17 6.66000000e-01 3.75000000e-01]\n" - ] - } - ], - "source": [ - "for jdx, new in enumerate(new_structures):\n", - " new_labels = new.get_chemical_symbols()\n", - " new_pos = new.get_positions() \n", - " new_fracs = new.get_scaled_positions()\n", - " for kdx, (l, p, f) in enumerate(zip(new_labels, new_pos, new_fracs)):\n", - " if l == 'H' and np.allclose(p, np.array([-1.461732, 4.019976, 4.9697414])) :\n", - " print(f\"symmtry operation {jdx}:\", f\"new symmetry atom index {kdx}\", l, p, f)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "ecca5958-410d-4f81-8bcb-f6351fedc853", - "metadata": {}, - "outputs": [], - "source": [ - "[-1.461732, 4.019976, 4.9697414]" - ] - }, - { - "cell_type": "code", - "execution_count": 63, - "id": "7a216b7f", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "symmtry operation 14: new symmetry atom index 20 H [-4.15150078 7.6056924 3.48845979] [0.02113333 0.77446667 0.20096667]\n", - "\tsame frac [0.02113333 0.77446667 0.20096667] [0.02113333 0.77446667 0.20096667]\n", - "symmtry operation 23: new symmetry atom index 20 H [-4.15150078 7.6056924 3.48845979] [0.02113333 0.77446667 0.20096667]\n", - "\tsame frac [0.02113333 0.77446667 0.20096667] [0.02113333 0.77446667 0.20096667]\n" - ] - } - ], - "source": [ - "idx = 88\n", - "for jdx, new in enumerate(new_structures):\n", - " new_labels = new.get_chemical_symbols()\n", - " new_pos = new.get_positions() \n", - " new_fracs = new.get_scaled_positions()\n", - " for kdx, (l, p, f) in enumerate(zip(new_labels, new_pos, new_fracs)):\n", - " if l == cell_labels[idx] and np.allclose(p, cell_pos[idx]) :\n", - " print(f\"symmtry operation {jdx}:\", f\"new symmetry atom index {kdx}\", l, p, f)\n", - " if np.allclose(f, cell_fracs[idx], atol=1e-4, rtol=1e-4):\n", - " print(f\"\\tsame frac\", f, cell_fracs[idx])\n", - " else:\n", - " print(f\"\\tdifferent frac\", f, cell_fracs[idx])\n", - " \n", - " # if new_labels == cell_labels[idx] :\n", - " # if np.allclose(cell_pos[idx], ):" - ] - }, - { - "cell_type": "code", - "execution_count": 38, - "id": "129817f5", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "C [ 2.00260868 -3.04764553 3.30446075] [ 0.02143333 -0.31033333 0.19036667]\n", - "C [1.63803411 3.25813276 3.30446075] [0.31033333 0.33176666 0.19036667] [0.31033333 0.33176667 0.19036667]\n" - ] - } - ], - "source": [ - "sites,kinds = space_group.equivalent_sites([[0.02143333, 0.68966667, 0.19036667]])\n", - "new = new_structures[12]\n", - "new_fracs = new.get_scaled_positions()\n", - "new_labels = new.get_chemical_symbols()\n", - "new_pos = new.get_positions()\n", - "idx = 12\n", - "print(new_labels[idx], new_pos[idx], new_fracs[12])\n", - "for i in sites:\n", - " for idx, j in enumerate(new_fracs):\n", - " if np.allclose(i, j):\n", - " print(new_labels[idx], new_pos[idx], i, j)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "b77cb2d7", - "metadata": {}, - "outputs": [], - "source": [ - "[-3.66729132, 6.77290934, 3.30446075]" - ] - }, - { - "cell_type": "code", - "execution_count": 29, - "id": "28745203", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "error 22 N 2 [0.667433, 0.176067, 0.264137] [0.667433 0.176067 0.264137]\n", - "error 23 C 2 [0.667533, 0.089267, 0.232297] [0.667533 0.089267 0.232297]\n", - "error 24 C 2 [0.668233, -0.021433, 0.190367] [0.668233 0.978567 0.190367]\n", - "error 25 H 1 [0.66103, -0.00933, 0.13507] [0.66103 0.99067 0.13507]\n", - "error 26 H 0 [0.75333, -0.02113, 0.20097] [0.75333 0.97887 0.20097]\n", - "error 27 H 1 [0.59083, -0.10843, 0.20697] [0.59083 0.89157 0.20697]\n", - "error 30 C 1 [1.021433, 0.689667, 0.190367] [0.021433 0.689667 0.190367]\n", - "error 31 H 0 [1.00933, 0.67037, 0.13507] [0.00933 0.67037 0.13507]\n", - "error 32 H 1 [1.02113, 0.77447, 0.20097] [0.02113 0.77447 0.20097]\n", - "error 33 H 0 [1.10843, 0.69927, 0.20697] [0.10843 0.69927 0.20697]\n", - "error 37 H 1 [0.32963, 0.33897, 0.13507] [0.32963 0.33897 0.13507]\n", - "error 38 H 1 [0.22553, 0.24667, 0.20097] [0.22553 0.24667 0.20097]\n", - "error 39 H 1 [0.30073, 0.40917, 0.20697] [0.30073 0.40917 0.20697]\n" - ] - }, - { - "data": { - "text/plain": [ - "{'Fe': 3, 'N': 18, 'C': 36, 'H': 54, 'Sb': 6, 'F': 36}" - ] - }, - "execution_count": 29, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "new = new_structures[0]\n", - "total = {'Fe': 0, 'N': 0, 'C': 0, 'H': 0, 'Sb': 0, 'F': 0}\n", - "for i, l in enumerate(ref_labels) :\n", - " count = 0\n", - " for t in temp:\n", - " if i in t:\n", - " count += 1\n", - " if l == \"Sb\" or l == \"F\":\n", - " if count != 6:\n", - " print(\"error\", i, l, count, ref_fracs[i], new.get_scaled_positions()[i])\n", - " else: \n", - " if count < 3:\n", - " print(\"error\", i, l, count, ref_fracs[i], new.get_scaled_positions()[i])\n", - " # if l == \"N\":\n", - " # print(\"error\", i, l, count, ref_fracs[i], new.get_scaled_positions()[i])\n", - " # for index, row in enumerate(cell_fracs):\n", - " # # if np.allclose(row, ref_fracs[i]):\n", - " # # print(index, cell_fracs[index], cell_pos[index])\n", - "\n", - " # if np.allclose(row, new.get_scaled_positions()[i]):\n", - " # print(index, cell_fracs[index], i, new.get_scaled_positions()[i])\n", - " \n", - " total[l] += count\n", - "total" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "6b309792", - "metadata": {}, - "outputs": [], - "source": [ - "error 1 N 4 [0.6659, 0.4906, 0.40253] [0.6659 0.4906 0.40253]\n", - "error 2 C 4 [0.6658, 0.5774, 0.43437] [0.6658 0.5774 0.43437]\n", - "error 3 C 4 [0.6651, 0.6881, 0.4763] [0.6651 0.6881 0.4763]\n", - "error 4 H 5 [0.6723, 0.676, 0.5316] [0.6723 0.676 0.5316]\n", - "error 5 H 6 [0.58, 0.6878, 0.4657] [0.58 0.6878 0.4657]\n", - "error 6 H 5 [0.7425, 0.7751, 0.4597] [0.7425 0.7751 0.4597]\n", - "error 12 C 5 [0.3119, -0.023, 0.4763] [0.3119 0.977 0.4763]\n", - "error 13 H 6 [0.324, -0.0037, 0.5316] [0.324 0.9963 0.5316]\n", - "error 14 H 6 [0.3122, -0.1078, 0.4657] [0.3122 0.8922 0.4657]\n", - "error 15 H 6 [0.2249, -0.0326, 0.4597] [0.2249 0.9674 0.4597]\n", - "error 19 H 5 [1.0037, 0.3277, 0.5316] [0.0037 0.3277 0.5316]\n", - "error 20 H 4 [1.1078, 0.42, 0.4657] [0.1078 0.42 0.4657]\n", - "error 21 H 5 [1.0326, 0.2575, 0.4597] [0.0326 0.2575 0.4597]" - ] - }, - { - "cell_type": "code", - "execution_count": 195, - "id": "5ab17414", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "(array([[6.65800000e-01, 5.77400000e-01, 4.34370000e-01],\n", - " [4.22600000e-01, 8.84000000e-02, 4.34370000e-01],\n", - " [9.11600000e-01, 3.34200000e-01, 4.34370000e-01],\n", - " [3.32466667e-01, 9.10733333e-01, 7.67703333e-01],\n", - " [8.92666667e-02, 4.21733333e-01, 7.67703333e-01],\n", - " [5.78266667e-01, 6.67533333e-01, 7.67703333e-01],\n", - " [9.99133333e-01, 2.44066667e-01, 1.01036667e-01],\n", - " [7.55933333e-01, 7.55066667e-01, 1.01036667e-01],\n", - " [2.44933333e-01, 8.66666667e-04, 1.01036667e-01],\n", - " [3.34200000e-01, 4.22600000e-01, 5.65630000e-01],\n", - " [5.77400000e-01, 9.11600000e-01, 5.65630000e-01],\n", - " [8.84000000e-02, 6.65800000e-01, 5.65630000e-01],\n", - " [6.67533333e-01, 8.92666667e-02, 2.32296667e-01],\n", - " [9.10733333e-01, 5.78266667e-01, 2.32296667e-01],\n", - " [4.21733333e-01, 3.32466667e-01, 2.32296667e-01],\n", - " [8.66666667e-04, 7.55933333e-01, 8.98963333e-01],\n", - " [2.44066667e-01, 2.44933333e-01, 8.98963333e-01],\n", - " [7.55066667e-01, 9.99133333e-01, 8.98963333e-01]]),\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0])" - ] - }, - "execution_count": 195, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "sites,kinds = space_group.equivalent_sites([[0.6658, 0.5774, 0.43437]])\n", - "sites,kinds " - ] - }, - { - "cell_type": "code", - "execution_count": 153, - "id": "d509aecb", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "(array([[9.11600000e-01, 3.34200000e-01, 4.34370000e-01],\n", - " [6.65800000e-01, 5.77400000e-01, 4.34370000e-01],\n", - " [4.22600000e-01, 8.84000000e-02, 4.34370000e-01],\n", - " [5.78266667e-01, 6.67533333e-01, 7.67703333e-01],\n", - " [3.32466667e-01, 9.10733333e-01, 7.67703333e-01],\n", - " [8.92666667e-02, 4.21733333e-01, 7.67703333e-01],\n", - " [2.44933333e-01, 8.66666667e-04, 1.01036667e-01],\n", - " [9.99133333e-01, 2.44066667e-01, 1.01036667e-01],\n", - " [7.55933333e-01, 7.55066667e-01, 1.01036667e-01],\n", - " [8.84000000e-02, 6.65800000e-01, 5.65630000e-01],\n", - " [3.34200000e-01, 4.22600000e-01, 5.65630000e-01],\n", - " [5.77400000e-01, 9.11600000e-01, 5.65630000e-01],\n", - " [4.21733333e-01, 3.32466667e-01, 2.32296667e-01],\n", - " [6.67533333e-01, 8.92666667e-02, 2.32296667e-01],\n", - " [9.10733333e-01, 5.78266667e-01, 2.32296667e-01],\n", - " [7.55066667e-01, 9.99133333e-01, 8.98963333e-01],\n", - " [8.66666667e-04, 7.55933333e-01, 8.98963333e-01],\n", - " [2.44066667e-01, 2.44933333e-01, 8.98963333e-01]]),\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0])" - ] - }, - "execution_count": 153, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "sites,kinds = space_group.equivalent_sites([(0.9116 , 0.3342 , 0.43437)])\n", - "sites,kinds " - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "id": "7d274045-9246-41cb-b779-ab8fe754bb92", - "metadata": {}, - "outputs": [], - "source": [ - "ref_molecule = Atoms(symbols=ref_labels, scaled_positions=ref_fracs, cell=cell_vector, pbc=True)" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "id": "064dfe31-c596-434d-8996-bb24facef38b", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 11, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "plot_atoms(ref_molecule, rotation='45x,45y,45z')" - ] - }, - { - "cell_type": "code", - "execution_count": 26, - "id": "9523a792", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "array([[6.66700000e-01, 3.33300000e-01, 3.33300000e-01],\n", - " [3.33366667e-01, 6.66633333e-01, 6.66633333e-01],\n", - " [3.33333333e-05, 9.99966667e-01, 9.99966667e-01],\n", - " [6.65900000e-01, 4.90600000e-01, 4.02530000e-01],\n", - " [5.09400000e-01, 1.75300000e-01, 4.02530000e-01],\n", - " [8.24700000e-01, 3.34100000e-01, 4.02530000e-01],\n", - " [3.32566667e-01, 8.23933333e-01, 7.35863333e-01],\n", - " [1.76066667e-01, 5.08633333e-01, 7.35863333e-01],\n", - " [4.91366667e-01, 6.67433333e-01, 7.35863333e-01],\n", - " [9.99233333e-01, 1.57266667e-01, 6.91966667e-02],\n", - " [8.42733333e-01, 8.41966667e-01, 6.91966667e-02],\n", - " [1.58033333e-01, 7.66666667e-04, 6.91966667e-02],\n", - " [3.34100000e-01, 5.09400000e-01, 5.97470000e-01],\n", - " [4.90600000e-01, 8.24700000e-01, 5.97470000e-01],\n", - " [1.75300000e-01, 6.65900000e-01, 5.97470000e-01],\n", - " [6.67433333e-01, 1.76066667e-01, 2.64136667e-01],\n", - " [8.23933333e-01, 4.91366667e-01, 2.64136667e-01],\n", - " [5.08633333e-01, 3.32566667e-01, 2.64136667e-01],\n", - " [7.66666667e-04, 8.42733333e-01, 9.30803333e-01],\n", - " [1.57266667e-01, 1.58033333e-01, 9.30803333e-01],\n", - " [8.41966667e-01, 9.99233333e-01, 9.30803333e-01],\n", - " [6.65800000e-01, 5.77400000e-01, 4.34370000e-01],\n", - " [4.22600000e-01, 8.84000000e-02, 4.34370000e-01],\n", - " [9.11600000e-01, 3.34200000e-01, 4.34370000e-01],\n", - " [3.32466667e-01, 9.10733333e-01, 7.67703333e-01],\n", - " [8.92666667e-02, 4.21733333e-01, 7.67703333e-01],\n", - " [5.78266667e-01, 6.67533333e-01, 7.67703333e-01],\n", - " [9.99133333e-01, 2.44066667e-01, 1.01036667e-01],\n", - " [7.55933333e-01, 7.55066667e-01, 1.01036667e-01],\n", - " [2.44933333e-01, 8.66666667e-04, 1.01036667e-01],\n", - " [3.34200000e-01, 4.22600000e-01, 5.65630000e-01],\n", - " [5.77400000e-01, 9.11600000e-01, 5.65630000e-01],\n", - " [8.84000000e-02, 6.65800000e-01, 5.65630000e-01],\n", - " [6.67533333e-01, 8.92666667e-02, 2.32296667e-01],\n", - " [9.10733333e-01, 5.78266667e-01, 2.32296667e-01],\n", - " [4.21733333e-01, 3.32466667e-01, 2.32296667e-01],\n", - " [8.66666667e-04, 7.55933333e-01, 8.98963333e-01],\n", - " [2.44066667e-01, 2.44933333e-01, 8.98963333e-01],\n", - " [7.55066667e-01, 9.99133333e-01, 8.98963333e-01],\n", - " [6.65100000e-01, 6.88100000e-01, 4.76300000e-01],\n", - " [3.11900000e-01, 9.77000000e-01, 4.76300000e-01],\n", - " [2.30000000e-02, 3.34900000e-01, 4.76300000e-01],\n", - " [3.31766667e-01, 2.14333333e-02, 8.09633333e-01],\n", - " [9.78566667e-01, 3.10333333e-01, 8.09633333e-01],\n", - " [6.89666667e-01, 6.68233333e-01, 8.09633333e-01],\n", - " [9.98433333e-01, 3.54766667e-01, 1.42966667e-01],\n", - " [6.45233333e-01, 6.43666667e-01, 1.42966667e-01],\n", - " [3.56333333e-01, 1.56666667e-03, 1.42966667e-01],\n", - " [3.34900000e-01, 3.11900000e-01, 5.23700000e-01],\n", - " [6.88100000e-01, 2.30000000e-02, 5.23700000e-01],\n", - " [9.77000000e-01, 6.65100000e-01, 5.23700000e-01],\n", - " [6.68233333e-01, 9.78566667e-01, 1.90366667e-01],\n", - " [2.14333333e-02, 6.89666667e-01, 1.90366667e-01],\n", - " [3.10333333e-01, 3.31766667e-01, 1.90366667e-01],\n", - " [1.56666667e-03, 6.45233333e-01, 8.57033333e-01],\n", - " [3.54766667e-01, 3.56333333e-01, 8.57033333e-01],\n", - " [6.43666667e-01, 9.98433333e-01, 8.57033333e-01],\n", - " [6.72300000e-01, 6.76000000e-01, 5.31600000e-01],\n", - " [3.24000000e-01, 9.96300000e-01, 5.31600000e-01],\n", - " [3.70000000e-03, 3.27700000e-01, 5.31600000e-01],\n", - " [3.38966667e-01, 9.33333333e-03, 8.64933333e-01],\n", - " [9.90666667e-01, 3.29633333e-01, 8.64933333e-01],\n", - " [6.70366667e-01, 6.61033333e-01, 8.64933333e-01],\n", - " [5.63333333e-03, 3.42666667e-01, 1.98266667e-01],\n", - " [6.57333333e-01, 6.62966667e-01, 1.98266667e-01],\n", - " [3.37033333e-01, 9.94366667e-01, 1.98266667e-01],\n", - " [3.27700000e-01, 3.24000000e-01, 4.68400000e-01],\n", - " [6.76000000e-01, 3.70000000e-03, 4.68400000e-01],\n", - " [9.96300000e-01, 6.72300000e-01, 4.68400000e-01],\n", - " [6.61033333e-01, 9.90666667e-01, 1.35066667e-01],\n", - " [9.33333333e-03, 6.70366667e-01, 1.35066667e-01],\n", - " [3.29633333e-01, 3.38966667e-01, 1.35066667e-01],\n", - " [9.94366667e-01, 6.57333333e-01, 8.01733333e-01],\n", - " [3.42666667e-01, 3.37033333e-01, 8.01733333e-01],\n", - " [6.62966667e-01, 5.63333333e-03, 8.01733333e-01],\n", - " [5.80000000e-01, 6.87800000e-01, 4.65700000e-01],\n", - " [3.12200000e-01, 8.92200000e-01, 4.65700000e-01],\n", - " [1.07800000e-01, 4.20000000e-01, 4.65700000e-01],\n", - " [2.46666667e-01, 2.11333333e-02, 7.99033333e-01],\n", - " [9.78866667e-01, 2.25533333e-01, 7.99033333e-01],\n", - " [7.74466667e-01, 7.53333333e-01, 7.99033333e-01],\n", - " [9.13333333e-01, 3.54466667e-01, 1.32366667e-01],\n", - " [6.45533333e-01, 5.58866667e-01, 1.32366667e-01],\n", - " [4.41133333e-01, 8.66666667e-02, 1.32366667e-01],\n", - " [4.20000000e-01, 3.12200000e-01, 5.34300000e-01],\n", - " [6.87800000e-01, 1.07800000e-01, 5.34300000e-01],\n", - " [8.92200000e-01, 5.80000000e-01, 5.34300000e-01],\n", - " [7.53333333e-01, 9.78866667e-01, 2.00966667e-01],\n", - " [2.11333333e-02, 7.74466667e-01, 2.00966667e-01],\n", - " [2.25533333e-01, 2.46666667e-01, 2.00966667e-01],\n", - " [8.66666667e-02, 6.45533333e-01, 8.67633333e-01],\n", - " [3.54466667e-01, 4.41133333e-01, 8.67633333e-01],\n", - " [5.58866667e-01, 9.13333333e-01, 8.67633333e-01],\n", - " [7.42500000e-01, 7.75100000e-01, 4.59700000e-01],\n", - " [2.24900000e-01, 9.67400000e-01, 4.59700000e-01],\n", - " [3.26000000e-02, 2.57500000e-01, 4.59700000e-01],\n", - " [4.09166667e-01, 1.08433333e-01, 7.93033333e-01],\n", - " [8.91566667e-01, 3.00733333e-01, 7.93033333e-01],\n", - " [6.99266667e-01, 5.90833333e-01, 7.93033333e-01],\n", - " [7.58333333e-02, 4.41766667e-01, 1.26366667e-01],\n", - " [5.58233333e-01, 6.34066667e-01, 1.26366667e-01],\n", - " [3.65933333e-01, 9.24166667e-01, 1.26366667e-01],\n", - " [2.57500000e-01, 2.24900000e-01, 5.40300000e-01],\n", - " [7.75100000e-01, 3.26000000e-02, 5.40300000e-01],\n", - " [9.67400000e-01, 7.42500000e-01, 5.40300000e-01],\n", - " [5.90833333e-01, 8.91566667e-01, 2.06966667e-01],\n", - " [1.08433333e-01, 6.99266667e-01, 2.06966667e-01],\n", - " [3.00733333e-01, 4.09166667e-01, 2.06966667e-01],\n", - " [9.24166667e-01, 5.58233333e-01, 8.73633333e-01],\n", - " [4.41766667e-01, 3.65933333e-01, 8.73633333e-01],\n", - " [6.34066667e-01, 7.58333333e-02, 8.73633333e-01],\n", - " [6.66700000e-01, 3.33300000e-01, 6.61838000e-01],\n", - " [3.33366667e-01, 6.66633333e-01, 9.95171333e-01],\n", - " [3.33333333e-05, 9.99966667e-01, 3.28504667e-01],\n", - " [3.33300000e-01, 6.66700000e-01, 3.38162000e-01],\n", - " [6.66633333e-01, 3.33366667e-01, 4.82866667e-03],\n", - " [9.99966667e-01, 3.33333333e-05, 6.71495333e-01],\n", - " [6.68200000e-01, 1.98100000e-01, 7.19500000e-01],\n", - " [8.01900000e-01, 4.70100000e-01, 7.19500000e-01],\n", - " [5.29900000e-01, 3.31800000e-01, 7.19500000e-01],\n", - " [3.34866667e-01, 5.31433333e-01, 5.28333333e-02],\n", - " [4.68566667e-01, 8.03433333e-01, 5.28333333e-02],\n", - " [1.96566667e-01, 6.65133333e-01, 5.28333333e-02],\n", - " [1.53333333e-03, 8.64766667e-01, 3.86166667e-01],\n", - " [1.35233333e-01, 1.36766667e-01, 3.86166667e-01],\n", - " [8.63233333e-01, 9.98466667e-01, 3.86166667e-01],\n", - " [3.31800000e-01, 8.01900000e-01, 2.80500000e-01],\n", - " [1.98100000e-01, 5.29900000e-01, 2.80500000e-01],\n", - " [4.70100000e-01, 6.68200000e-01, 2.80500000e-01],\n", - " [6.65133333e-01, 4.68566667e-01, 9.47166667e-01],\n", - " [5.31433333e-01, 1.96566667e-01, 9.47166667e-01],\n", - " [8.03433333e-01, 3.34866667e-01, 9.47166667e-01],\n", - " [9.98466667e-01, 1.35233333e-01, 6.13833333e-01],\n", - " [8.64766667e-01, 8.63233333e-01, 6.13833333e-01],\n", - " [1.36766667e-01, 1.53333333e-03, 6.13833333e-01],\n", - " [5.35000000e-01, 1.96800000e-01, 6.00830000e-01],\n", - " [8.03200000e-01, 3.38200000e-01, 6.00830000e-01],\n", - " [6.61800000e-01, 4.65000000e-01, 6.00830000e-01],\n", - " [2.01666667e-01, 5.30133333e-01, 9.34163333e-01],\n", - " [4.69866667e-01, 6.71533333e-01, 9.34163333e-01],\n", - " [3.28466667e-01, 7.98333333e-01, 9.34163333e-01],\n", - " [8.68333333e-01, 8.63466667e-01, 2.67496667e-01],\n", - " [1.36533333e-01, 4.86666667e-03, 2.67496667e-01],\n", - " [9.95133333e-01, 1.31666667e-01, 2.67496667e-01],\n", - " [4.65000000e-01, 8.03200000e-01, 3.99170000e-01],\n", - " [1.96800000e-01, 6.61800000e-01, 3.99170000e-01],\n", - " [3.38200000e-01, 5.35000000e-01, 3.99170000e-01],\n", - " [7.98333333e-01, 4.69866667e-01, 6.58366667e-02],\n", - " [5.30133333e-01, 3.28466667e-01, 6.58366667e-02],\n", - " [6.71533333e-01, 2.01666667e-01, 6.58366667e-02],\n", - " [1.31666667e-01, 1.36533333e-01, 7.32503333e-01],\n", - " [8.63466667e-01, 9.95133333e-01, 7.32503333e-01],\n", - " [4.86666667e-03, 8.68333333e-01, 7.32503333e-01]])" - ] - }, - "execution_count": 26, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "atoms.get_scaled_positions()" - ] - }, - { - "cell_type": "code", - "execution_count": 24, - "id": "921fc219", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[0.6667, 0.3333, 0.3333] [0.6667 0.3333 0.3333]\n", - "[0.6659, 0.4906, 0.40253] [0.6659 0.4906 0.40253]\n", - "[0.6658, 0.5774, 0.43437] [0.6658 0.5774 0.43437]\n", - "[0.6651, 0.6881, 0.4763] [0.6651 0.6881 0.4763]\n", - "[0.6723, 0.676, 0.5316] [0.6723 0.676 0.5316]\n", - "[0.58, 0.6878, 0.4657] [0.58 0.6878 0.4657]\n", - "[0.7425, 0.7751, 0.4597] [0.7425 0.7751 0.4597]\n", - "[0.6667, 0.3333, 0.661838] [0.6667 0.3333 0.661838]\n", - "[0.6682, 0.1981, 0.7195] [0.6682 0.1981 0.7195]\n", - "[0.535, 0.1968, 0.60083] [0.535 0.1968 0.60083]\n", - "[0.5094, 0.1753, 0.40253] [0.5094 0.1753 0.40253]\n", - "[0.4226, 0.0884, 0.43437] [0.4226 0.0884 0.43437]\n", - "[0.3119, -0.023, 0.4763] [0.3119 0.977 0.4763]\n", - "[0.324, -0.0037, 0.5316] [0.324 0.9963 0.5316]\n", - "[0.3122, -0.1078, 0.4657] [0.3122 0.8922 0.4657]\n", - "[0.2249, -0.0326, 0.4597] [0.2249 0.9674 0.4597]\n", - "[0.8247, 0.3341, 0.40253] [0.8247 0.3341 0.40253]\n", - "[0.9116, 0.3342, 0.43437] [0.9116 0.3342 0.43437]\n", - "[1.023, 0.3349, 0.4763] [0.023 0.3349 0.4763]\n", - "[1.0037, 0.3277, 0.5316] [0.0037 0.3277 0.5316]\n", - "[1.1078, 0.42, 0.4657] [0.1078 0.42 0.4657]\n", - "[1.0326, 0.2575, 0.4597] [0.0326 0.2575 0.4597]\n", - "[0.667433, 0.176067, 0.264137] [0.667433 0.176067 0.264137]\n", - "[0.667533, 0.089267, 0.232297] [0.667533 0.089267 0.232297]\n", - "[0.668233, -0.021433, 0.190367] [0.668233 0.978567 0.190367]\n", - "[0.66103, -0.00933, 0.13507] [0.66103 0.99067 0.13507]\n", - "[0.75333, -0.02113, 0.20097] [0.75333 0.97887 0.20097]\n", - "[0.59083, -0.10843, 0.20697] [0.59083 0.89157 0.20697]\n", - "[0.823933, 0.491367, 0.264137] [0.823933 0.491367 0.264137]\n", - "[0.910733, 0.578267, 0.232297] [0.910733 0.578267 0.232297]\n", - "[1.021433, 0.689667, 0.190367] [0.021433 0.689667 0.190367]\n", - "[1.00933, 0.67037, 0.13507] [0.00933 0.67037 0.13507]\n", - "[1.02113, 0.77447, 0.20097] [0.02113 0.77447 0.20097]\n", - "[1.10843, 0.69927, 0.20697] [0.10843 0.69927 0.20697]\n", - "[0.508633, 0.332567, 0.264137] [0.508633 0.332567 0.264137]\n", - "[0.421733, 0.332467, 0.232297] [0.421733 0.332467 0.232297]\n", - "[0.310333, 0.331767, 0.190367] [0.310333 0.331767 0.190367]\n", - "[0.32963, 0.33897, 0.13507] [0.32963 0.33897 0.13507]\n", - "[0.22553, 0.24667, 0.20097] [0.22553 0.24667 0.20097]\n", - "[0.30073, 0.40917, 0.20697] [0.30073 0.40917 0.20697]\n", - "[0.8019, 0.4701, 0.7195] [0.8019 0.4701 0.7195]\n", - "[0.5299, 0.3318, 0.7195] [0.5299 0.3318 0.7195]\n", - "[0.8032, 0.3382, 0.60083] [0.8032 0.3382 0.60083]\n", - "[0.6618, 0.465, 0.60083] [0.6618 0.465 0.60083]\n" - ] - } - ], - "source": [ - "for i, j in zip(ref_fracs, ref_molecule.get_scaled_positions()):\n", - " print(i, j)" - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "id": "d296feca-76cf-41c6-96ff-fd5829105861", - "metadata": {}, - "outputs": [], - "source": [ - "new_structures = apply_symmetry_operations_reference(ref_molecule, cell_vector, sym_ops, False)" - ] - }, - { - "cell_type": "code", - "execution_count": 27, - "id": "c99d150d", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 27, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "plot_atoms(new_structures[0], rotation='0x,60y,45z')" - ] - }, - { - "cell_type": "code", - "execution_count": 147, - "id": "a3ab5ef7-e988-4841-a6b6-de4ea06bdfbb", - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "data": { - "text/plain": [ - "36" - ] - }, - "execution_count": 147, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "len(new_structures)" - ] - }, - { - "cell_type": "code", - "execution_count": 151, - "id": "039ebc8b", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "array([0.9116 , 0.3342 , 0.43437])" - ] - }, - "execution_count": 151, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "new_structures[0].get_scaled_positions()[17]" - ] - }, - { - "cell_type": "code", - "execution_count": 114, - "id": "7b1f87c8", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "array([[ 5.67046699e+00, 3.27319094e+00, 5.78555472e+00],\n", - " [ 5.66990000e-04, 6.54670923e+00, 1.15716881e+01],\n", - " [-5.66933301e+00, 9.82022752e+00, 1.73578214e+01],\n", - " [ 4.76951988e+00, 4.81796422e+00, 6.98727675e+00],\n", - " [ 4.78256065e+00, 1.72154327e+00, 6.98727675e+00],\n", - " [ 7.45761947e+00, 3.28104738e+00, 6.98727675e+00],\n", - " [-9.00380120e-01, 8.09148251e+00, 1.27734101e+01],\n", - " [-8.87339350e-01, 4.99506156e+00, 1.27734101e+01],\n", - " [ 1.78771947e+00, 6.55456567e+00, 1.27734101e+01],\n", - " [ 1.04394199e+01, 1.54444593e+00, 1.20114342e+00],\n", - " [ 4.78256065e+00, 8.26857985e+00, 1.20114342e+00],\n", - " [ 1.78771947e+00, 7.52909207e-03, 1.20114342e+00],\n", - " [ 9.00380120e-01, 5.00259065e+00, 1.03711232e+01],\n", - " [ 8.87339350e-01, 8.09901160e+00, 1.03711232e+01],\n", - " [-1.78771947e+00, 6.53950749e+00, 1.03711232e+01],\n", - " [ 6.57028012e+00, 1.72907236e+00, 4.58498991e+00],\n", - " [ 6.55723935e+00, 4.82549331e+00, 4.58498991e+00],\n", - " [ 3.88218053e+00, 3.26598920e+00, 4.58498991e+00],\n", - " [-4.76951988e+00, 8.27610894e+00, 1.61572566e+01],\n", - " [ 8.87339350e-01, 1.55197502e+00, 1.61572566e+01],\n", - " [ 3.88218053e+00, 9.81302578e+00, 1.61572566e+01],\n", - " [ 4.27623858e+00, 5.67038838e+00, 7.53996821e+00],\n", - " [ 4.29098032e+00, 8.68137051e-01, 7.53996821e+00],\n", - " [ 8.44248110e+00, 3.28202944e+00, 7.53996821e+00],\n", - " [-1.39366142e+00, 8.94390668e+00, 1.33261015e+01],\n", - " [-1.37891968e+00, 4.14165534e+00, 1.33261015e+01],\n", - " [ 2.77258110e+00, 6.55554773e+00, 1.33261015e+01],\n", - " [ 9.94613858e+00, 2.39687009e+00, 1.75383487e+00],\n", - " [ 4.29098032e+00, 7.41517363e+00, 1.75383487e+00],\n", - " [ 2.77258110e+00, 8.51114756e-03, 1.75383487e+00],\n", - " [ 1.39366142e+00, 4.15016649e+00, 9.81843179e+00],\n", - " [ 1.37891968e+00, 8.95241782e+00, 9.81843179e+00],\n", - " [-2.77258110e+00, 6.53852543e+00, 9.81843179e+00],\n", - " [ 7.06356142e+00, 8.76648198e-01, 4.03229846e+00],\n", - " [ 7.04881968e+00, 5.67889953e+00, 4.03229846e+00],\n", - " [ 2.89731890e+00, 3.26500714e+00, 4.03229846e+00],\n", - " [-4.27623858e+00, 7.42368478e+00, 1.56045651e+01],\n", - " [ 1.37891968e+00, 2.40538124e+00, 1.56045651e+01],\n", - " [ 2.89731890e+00, 9.81204373e+00, 1.56045651e+01],\n", - " [ 3.64064279e+00, 6.75752381e+00, 8.26780592e+00],\n", - " [-2.00260868e+00, 9.59468211e+00, 8.26780592e+00],\n", - " [-1.63803411e+00, 3.28890383e+00, 8.26780592e+00],\n", - " [ 3.64064279e+00, 2.10487226e-01, 1.40539393e+01],\n", - " [ 9.33719132e+00, 3.04764553e+00, 1.40539393e+01],\n", - " [ 4.03186589e+00, 6.56242212e+00, 1.40539393e+01],\n", - " [ 9.31054279e+00, 3.48400552e+00, 2.48167259e+00],\n", - " [ 3.66729132e+00, 6.32116382e+00, 2.48167259e+00],\n", - " [ 4.03186589e+00, 1.53855360e-02, 2.48167259e+00],\n", - " [ 2.02925721e+00, 3.06303107e+00, 9.09059408e+00],\n", - " [ 7.67250868e+00, 2.25872762e-01, 9.09059408e+00],\n", - " [ 7.30793411e+00, 6.53165105e+00, 9.09059408e+00],\n", - " [ 2.02925721e+00, 9.61006765e+00, 3.30446075e+00],\n", - " [-3.66729132e+00, 6.77290934e+00, 3.30446075e+00],\n", - " [ 1.63803411e+00, 3.25813276e+00, 3.30446075e+00],\n", - " [-3.64064279e+00, 6.33654936e+00, 1.48767274e+01],\n", - " [ 2.00260868e+00, 3.49939105e+00, 1.48767274e+01],\n", - " [ 1.63803411e+00, 9.80516934e+00, 1.48767274e+01],\n", - " [ 3.79089514e+00, 6.63869509e+00, 9.22772544e+00],\n", - " [-1.97482617e+00, 9.78421882e+00, 9.22772544e+00],\n", - " [-1.81606897e+00, 3.21819583e+00, 9.22772544e+00],\n", - " [ 3.79089514e+00, 9.16585122e-02, 1.50138588e+01],\n", - " [ 9.36497383e+00, 3.23718224e+00, 1.50138588e+01],\n", - " [ 3.85383103e+00, 6.49171412e+00, 1.50138588e+01],\n", - " [-1.87900486e+00, 3.36517680e+00, 3.44159211e+00],\n", - " [ 3.69507383e+00, 6.51070053e+00, 3.44159211e+00],\n", - " [-1.81606897e+00, 9.76523241e+00, 3.44159211e+00],\n", - " [ 1.87900486e+00, 3.18185978e+00, 8.13067456e+00],\n", - " [ 7.64472617e+00, 3.63360530e-02, 8.13067456e+00],\n", - " [ 7.48596897e+00, 6.60235904e+00, 8.13067456e+00],\n", - " [ 1.87900486e+00, 9.72889636e+00, 2.34454123e+00],\n", - " [-3.69507383e+00, 6.58337264e+00, 2.34454123e+00],\n", - " [ 1.81606897e+00, 3.32884075e+00, 2.34454123e+00],\n", - " [ 7.54890486e+00, 6.45537807e+00, 1.39168079e+01],\n", - " [ 1.97482617e+00, 3.30985434e+00, 1.39168079e+01],\n", - " [ 7.48596897e+00, 5.53224591e-02, 1.39168079e+01],\n", - " [ 2.67732678e+00, 6.75457764e+00, 8.08380688e+00],\n", - " [-1.51839922e+00, 8.76189906e+00, 8.08380688e+00],\n", - " [-1.15892756e+00, 4.12463305e+00, 8.08380688e+00],\n", - " [ 2.67732678e+00, 2.07541060e-01, 1.38699402e+01],\n", - " [ 9.82140078e+00, 2.21486248e+00, 1.38699402e+01],\n", - " [ 4.51097244e+00, 7.39815134e+00, 1.38699402e+01],\n", - " [ 8.34722678e+00, 3.48105935e+00, 2.29767355e+00],\n", - " [ 4.15150078e+00, 5.48838077e+00, 2.29767355e+00],\n", - " [ 4.51097244e+00, 8.51114756e-01, 2.29767355e+00],\n", - " [ 2.99257322e+00, 3.06597723e+00, 9.27459312e+00],\n", - " [ 7.18829922e+00, 1.05865582e+00, 9.27459312e+00],\n", - " [ 6.82882756e+00, 5.69592183e+00, 9.27459312e+00],\n", - " [ 2.99257322e+00, 9.61301381e+00, 3.48845979e+00],\n", - " [-4.15150078e+00, 7.60569240e+00, 3.48845979e+00],\n", - " [ 1.15892756e+00, 2.42240354e+00, 3.48845979e+00],\n", - " [-2.67732678e+00, 6.33949552e+00, 1.50607265e+01],\n", - " [ 1.51839922e+00, 4.33217411e+00, 1.50607265e+01],\n", - " [ 1.15892756e+00, 8.96944012e+00, 1.50607265e+01],\n", - " [ 4.02506201e+00, 7.61191208e+00, 7.97965648e+00],\n", - " [-2.93474024e+00, 9.50040478e+00, 7.97965648e+00],\n", - " [-1.09032177e+00, 2.52879288e+00, 7.97965648e+00],\n", - " [ 4.02506201e+00, 1.06487550e+00, 1.37657898e+01],\n", - " [ 8.40505976e+00, 2.95336820e+00, 1.37657898e+01],\n", - " [ 4.57957823e+00, 5.80231117e+00, 1.37657898e+01],\n", - " [-1.64483799e+00, 4.33839379e+00, 2.19352315e+00],\n", - " [ 2.73515976e+00, 6.22688649e+00, 2.19352315e+00],\n", - " [-1.09032177e+00, 9.07582946e+00, 2.19352315e+00],\n", - " [ 1.64483799e+00, 2.20864279e+00, 9.37874352e+00],\n", - " [ 8.60464024e+00, 3.20150089e-01, 9.37874352e+00],\n", - " [ 6.76022177e+00, 7.29176199e+00, 9.37874352e+00],\n", - " [ 1.64483799e+00, 8.75567937e+00, 3.59261019e+00],\n", - " [-2.73515976e+00, 6.86718667e+00, 3.59261019e+00],\n", - " [ 1.09032177e+00, 4.01824370e+00, 3.59261019e+00],\n", - " [ 7.31473799e+00, 5.48216108e+00, 1.51648769e+01],\n", - " [ 2.93474024e+00, 3.59366838e+00, 1.51648769e+01],\n", - " [ 6.76022177e+00, 7.44725411e-01, 1.51648769e+01],\n", - " [ 5.67046699e+00, 3.27319094e+00, 1.14884487e+01],\n", - " [ 5.66990000e-04, 6.54670923e+00, 1.72745821e+01],\n", - " [-5.66933301e+00, 9.82022752e+00, 5.70231541e+00],\n", - " [-5.66990000e-04, 6.54736393e+00, 5.86995126e+00],\n", - " [ 5.66933301e+00, 3.27384564e+00, 8.38179275e-02],\n", - " [ 1.13392330e+01, 3.27351829e-04, 1.16560846e+01],\n", - " [ 6.45404717e+00, 1.94545192e+00, 1.24893688e+01],\n", - " [ 6.42796563e+00, 4.61664285e+00, 1.24893688e+01],\n", - " [ 4.12768720e+00, 3.25846011e+00, 1.24893688e+01],\n", - " [ 7.84147170e-01, 5.21897021e+00, 9.17102133e-01],\n", - " [ 7.58065630e-01, 7.89016114e+00, 9.17102133e-01],\n", - " [-1.54221280e+00, 6.53197840e+00, 9.17102133e-01],\n", - " [-4.88575283e+00, 8.49248850e+00, 6.70323547e+00],\n", - " [ 7.58065630e-01, 1.34312455e+00, 6.70323547e+00],\n", - " [ 4.12768720e+00, 9.80549669e+00, 6.70323547e+00],\n", - " [-7.84147170e-01, 7.87510295e+00, 4.86903120e+00],\n", - " [-7.58065630e-01, 5.20391203e+00, 4.86903120e+00],\n", - " [ 1.54221280e+00, 6.56209477e+00, 4.86903120e+00],\n", - " [ 4.88575283e+00, 4.60158466e+00, 1.64412979e+01],\n", - " [ 4.91183437e+00, 1.93039374e+00, 1.64412979e+01],\n", - " [ 7.21211280e+00, 3.28857648e+00, 1.64412979e+01],\n", - " [ 1.05556528e+01, 1.32806637e+00, 1.06551645e+01],\n", - " [ 4.91183437e+00, 8.47743032e+00, 1.06551645e+01],\n", - " [ 1.54221280e+00, 1.50581841e-02, 1.06551645e+01],\n", - " [ 4.95095668e+00, 1.93268520e+00, 1.04294475e+01],\n", - " [ 7.19056718e+00, 3.32131166e+00, 1.04294475e+01],\n", - " [ 4.86817614e+00, 4.56655802e+00, 1.04294475e+01],\n", - " [-7.18943320e-01, 5.20620349e+00, 1.62155808e+01],\n", - " [ 1.52066718e+00, 6.59482995e+00, 1.62155808e+01],\n", - " [-8.01723860e-01, 7.84007631e+00, 1.62155808e+01],\n", - " [ 4.95095668e+00, 8.47972178e+00, 4.64331414e+00],\n", - " [ 1.52066718e+00, 4.77933671e-02, 4.64331414e+00],\n", - " [ 1.05380761e+01, 1.29303973e+00, 4.64331414e+00],\n", - " [ 7.18943320e-01, 7.88786967e+00, 6.92895253e+00],\n", - " [-1.52066718e+00, 6.49924322e+00, 6.92895253e+00],\n", - " [ 8.01723860e-01, 5.25399686e+00, 6.92895253e+00],\n", - " [ 6.38884332e+00, 4.61435138e+00, 1.14281919e+00],\n", - " [ 4.14923282e+00, 3.22572492e+00, 1.14281919e+00],\n", - " [ 6.47162386e+00, 1.98047857e+00, 1.14281919e+00],\n", - " [ 7.18943320e-01, 1.34083309e+00, 1.27150859e+01],\n", - " [ 4.14923282e+00, 9.77276151e+00, 1.27150859e+01],\n", - " [-4.86817614e+00, 8.52751515e+00, 1.27150859e+01]])" - ] - }, - "execution_count": 114, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "atoms.positions" - ] - }, - { - "cell_type": "code", - "execution_count": 117, - "id": "c8208d59", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[44,\n", - " 44,\n", - " 44,\n", - " 44,\n", - " 44,\n", - " 44,\n", - " 44,\n", - " 44,\n", - " 44,\n", - " 44,\n", - " 44,\n", - " 44,\n", - " 44,\n", - " 44,\n", - " 44,\n", - " 44,\n", - " 44,\n", - " 44,\n", - " 44,\n", - " 44,\n", - " 44,\n", - " 44,\n", - " 44,\n", - " 44,\n", - " 44,\n", - " 44,\n", - " 44,\n", - " 44,\n", - " 44,\n", - " 44,\n", - " 44,\n", - " 44,\n", - " 44,\n", - " 44,\n", - " 44,\n", - " 44]" - ] - }, - "execution_count": 117, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "[len(new.numbers) for new in new_structures]" - ] - }, - { - "cell_type": "code", - "execution_count": 125, - "id": "412ecd95", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 125, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "plot_atoms(new_structures[0], rotation='45x,45y,45z')" - ] - }, - { - "cell_type": "code", - "execution_count": 128, - "id": "92a9579e", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "23 [0.9116 0.3342 0.43437]\n" - ] - } - ], - "source": [ - "for idx, c_f in enumerate(cell_fracs):\n", - " if np.allclose([0.9116 , 0.3342 , 0.43437], c_f):\n", - " print(idx, c_f)" - ] - }, - { - "cell_type": "code", - "execution_count": 131, - "id": "44e2cb22", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "('C',\n", - " array([-3.66729132, 6.77290934, 3.30446075]),\n", - " array([0.02143333, 0.68966667, 0.19036667]))" - ] - }, - "execution_count": 131, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "cell_labels[52], cell_pos[52], cell_fracs[52]" - ] - }, - { - "cell_type": "code", - "execution_count": 124, - "id": "88044e97", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "(6,\n", - " array([8.4424811 , 3.28202944, 7.53996821]),\n", - " array([0.9116 , 0.3342 , 0.43437]))" - ] - }, - "execution_count": 124, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "new_structures[0].numbers[17], new_structures[0].positions[17], new_structures[0].get_scaled_positions()[17]" - ] - }, - { - "cell_type": "code", - "execution_count": 135, - "id": "81a35999", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0 Fe [0.6667, 0.3333, 0.3333] [0.6667 0.3333 0.3333]\n", - "1 N [0.6659, 0.4906, 0.40253] [0.6659 0.4906 0.40253]\n", - "2 C [0.6658, 0.5774, 0.43437] [0.6658 0.5774 0.43437]\n", - "3 C [0.6651, 0.6881, 0.4763] [0.6651 0.6881 0.4763]\n", - "4 H [0.6723, 0.676, 0.5316] [0.6723 0.676 0.5316]\n", - "5 H [0.58, 0.6878, 0.4657] [0.58 0.6878 0.4657]\n", - "6 H [0.7425, 0.7751, 0.4597] [0.7425 0.7751 0.4597]\n", - "7 Sb [0.6667, 0.3333, 0.661838] [0.6667 0.3333 0.661838]\n", - "8 F [0.6682, 0.1981, 0.7195] [0.6682 0.1981 0.7195]\n", - "9 F [0.535, 0.1968, 0.60083] [0.535 0.1968 0.60083]\n", - "10 N [0.5094, 0.1753, 0.40253] [0.5094 0.1753 0.40253]\n", - "11 C [0.4226, 0.0884, 0.43437] [0.4226 0.0884 0.43437]\n", - "12 C [0.3119, -0.023, 0.4763] [0.3119 0.977 0.4763]\n", - "13 H [0.324, -0.0037, 0.5316] [0.324 0.9963 0.5316]\n", - "14 H [0.3122, -0.1078, 0.4657] [0.3122 0.8922 0.4657]\n", - "15 H [0.2249, -0.0326, 0.4597] [0.2249 0.9674 0.4597]\n", - "16 N [0.8247, 0.3341, 0.40253] [0.8247 0.3341 0.40253]\n", - "17 C [0.9116, 0.3342, 0.43437] [0.9116 0.3342 0.43437]\n", - "18 C [1.023, 0.3349, 0.4763] [0.023 0.3349 0.4763]\n", - "19 H [1.0037, 0.3277, 0.5316] [0.0037 0.3277 0.5316]\n", - "20 H [1.1078, 0.42, 0.4657] [0.1078 0.42 0.4657]\n", - "21 H [1.0326, 0.2575, 0.4597] [0.0326 0.2575 0.4597]\n", - "22 N [0.667433, 0.176067, 0.264137] [0.667433 0.176067 0.264137]\n", - "23 C [0.667533, 0.089267, 0.232297] [0.667533 0.089267 0.232297]\n", - "24 C [0.668233, -0.021433, 0.190367] [0.668233 0.978567 0.190367]\n", - "25 H [0.66103, -0.00933, 0.13507] [0.66103 0.99067 0.13507]\n", - "26 H [0.75333, -0.02113, 0.20097] [0.75333 0.97887 0.20097]\n", - "27 H [0.59083, -0.10843, 0.20697] [0.59083 0.89157 0.20697]\n", - "28 N [0.823933, 0.491367, 0.264137] [0.823933 0.491367 0.264137]\n", - "29 C [0.910733, 0.578267, 0.232297] [0.910733 0.578267 0.232297]\n", - "30 C [1.021433, 0.689667, 0.190367] [0.021433 0.689667 0.190367]\n", - "31 H [1.00933, 0.67037, 0.13507] [0.00933 0.67037 0.13507]\n", - "32 H [1.02113, 0.77447, 0.20097] [0.02113 0.77447 0.20097]\n", - "33 H [1.10843, 0.69927, 0.20697] [0.10843 0.69927 0.20697]\n", - "34 N [0.508633, 0.332567, 0.264137] [0.508633 0.332567 0.264137]\n", - "35 C [0.421733, 0.332467, 0.232297] [0.421733 0.332467 0.232297]\n", - "36 C [0.310333, 0.331767, 0.190367] [0.310333 0.331767 0.190367]\n", - "37 H [0.32963, 0.33897, 0.13507] [0.32963 0.33897 0.13507]\n", - "38 H [0.22553, 0.24667, 0.20097] [0.22553 0.24667 0.20097]\n", - "39 H [0.30073, 0.40917, 0.20697] [0.30073 0.40917 0.20697]\n", - "40 F [0.8019, 0.4701, 0.7195] [0.8019 0.4701 0.7195]\n", - "41 F [0.5299, 0.3318, 0.7195] [0.5299 0.3318 0.7195]\n", - "42 F [0.8032, 0.3382, 0.60083] [0.8032 0.3382 0.60083]\n", - "43 F [0.6618, 0.465, 0.60083] [0.6618 0.465 0.60083]\n" - ] - } - ], - "source": [ - "for idx, (l, f, sf) in enumerate(zip(ref_labels, ref_fracs, new_structures[0].get_scaled_positions())):\n", - " print(idx, l, f, sf)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "a3b1bd6c", - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": 118, - "id": "a8124255", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0 Fe\n", - "1 N\n", - "2 C\n", - "3 C\n", - "4 H\n", - "5 H\n", - "6 H\n", - "7 Sb\n", - "8 F\n", - "9 F\n", - "10 N\n", - "11 C\n", - "16 N\n", - "17 C\n", - "22 N\n", - "23 C\n", - "28 N\n", - "29 C\n", - "34 N\n", - "35 C\n", - "36 C\n", - "37 H\n", - "38 H\n", - "39 H\n", - "40 F\n", - "41 F\n", - "42 F\n", - "43 F\n", - "28\n" - ] - } - ], - "source": [ - "count = 0\n", - "for s in new_structures[0].get_scaled_positions():\n", - " for idx, (l, f) in enumerate(zip(ref_labels, ref_fracs)):\n", - " if np.allclose(f, s):\n", - " print(idx, l)\n", - " count+=1\n", - " # else :\n", - " # print('not found')\n", - "print(count)" - ] - }, - { - "cell_type": "code", - "execution_count": 110, - "id": "d46252a9", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Fe [0.6667, 0.3333, 0.3333]\n", - "N [0.6659, 0.4906, 0.40253]\n", - "C [0.6658, 0.5774, 0.43437]\n", - "C [0.6651, 0.6881, 0.4763]\n", - "H [0.6723, 0.676, 0.5316]\n", - "H [0.58, 0.6878, 0.4657]\n", - "H [0.7425, 0.7751, 0.4597]\n", - "Sb [0.6667, 0.3333, 0.661838]\n", - "F [0.6682, 0.1981, 0.7195]\n", - "F [0.535, 0.1968, 0.60083]\n", - "N [0.5094, 0.1753, 0.40253]\n", - "C [0.4226, 0.0884, 0.43437]\n", - "C [0.3119, -0.023, 0.4763]\n", - "H [0.324, -0.0037, 0.5316]\n", - "H [0.3122, -0.1078, 0.4657]\n", - "H [0.2249, -0.0326, 0.4597]\n", - "N [0.8247, 0.3341, 0.40253]\n", - "C [0.9116, 0.3342, 0.43437]\n", - "C [1.023, 0.3349, 0.4763]\n", - "H [1.0037, 0.3277, 0.5316]\n", - "H [1.1078, 0.42, 0.4657]\n", - "H [1.0326, 0.2575, 0.4597]\n", - "N [0.667433, 0.176067, 0.264137]\n", - "C [0.667533, 0.089267, 0.232297]\n", - "C [0.668233, -0.021433, 0.190367]\n", - "H [0.66103, -0.00933, 0.13507]\n", - "H [0.75333, -0.02113, 0.20097]\n", - "H [0.59083, -0.10843, 0.20697]\n", - "N [0.823933, 0.491367, 0.264137]\n", - "C [0.910733, 0.578267, 0.232297]\n", - "C [1.021433, 0.689667, 0.190367]\n", - "H [1.00933, 0.67037, 0.13507]\n", - "H [1.02113, 0.77447, 0.20097]\n", - "H [1.10843, 0.69927, 0.20697]\n", - "N [0.508633, 0.332567, 0.264137]\n", - "C [0.421733, 0.332467, 0.232297]\n", - "C [0.310333, 0.331767, 0.190367]\n", - "H [0.32963, 0.33897, 0.13507]\n", - "H [0.22553, 0.24667, 0.20097]\n", - "H [0.30073, 0.40917, 0.20697]\n", - "F [0.8019, 0.4701, 0.7195]\n", - "F [0.5299, 0.3318, 0.7195]\n", - "F [0.8032, 0.3382, 0.60083]\n", - "F [0.6618, 0.465, 0.60083]\n" - ] - } - ], - "source": [ - "for l, f in zip(ref_labels, ref_fracs):\n", - " print(l, f)" - ] - }, - { - "cell_type": "code", - "execution_count": 108, - "id": "8dbdf1a6-42f4-464a-a198-9433af179d87", - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 108, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "plot_atoms(new_structures[12], rotation='45x,45y,45z')" - ] - }, - { - "cell_type": "code", - "execution_count": 63, - "id": "a7790d03-f83c-4f1d-80fc-34d8cd32b17e", - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 63, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "plot_atoms(new_structures[1])" - ] - }, - { - "cell_type": "code", - "execution_count": 64, - "id": "035b76c6-13d6-405e-ae08-50b61ba9bea9", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 64, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "plot_atoms(new_structures[12])" - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "id": "08aaf111-2422-4174-8cc9-3484054e41e0", - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "44\n", - "44\n", - "44\n", - "44\n", - "44\n", - "44\n", - "44\n", - "44\n", - "44\n", - "44\n", - "44\n", - "44\n", - "44\n", - "44\n", - "44\n", - "44\n", - "44\n", - "44\n", - "44\n", - "44\n", - "44\n", - "44\n", - "44\n", - "44\n", - "44\n", - "44\n", - "44\n", - "44\n", - "44\n", - "44\n", - "44\n", - "44\n", - "44\n", - "44\n", - "44\n", - "44\n" - ] - } - ], - "source": [ - "for new in new_structures:\n", - " print(len(new.numbers))" - ] - }, - { - "cell_type": "code", - "execution_count": 38, - "id": "e69d6c40-21d0-488e-9298-0168f8b25ef8", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "35" - ] - }, - "execution_count": 38, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "len([0, 3, 4, 5, 15, 16, 17, 21, 22, 23, 33, 34, 35, 39, 40, 41, 51, 52, 53, 57, 58, 59, 75, 76, 77, 93, 94, 95, 111, 117, 118, 119, 135, 136, 137])" - ] - }, - { - "cell_type": "code", - "execution_count": 39, - "id": "7c98adff-31c8-4999-a554-e5e9151ed52e", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "35" - ] - }, - "execution_count": 39, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "len([0, 1, 10, 16, 22, 28, 34, 2, 11, 17, 23, 29, 35, 3, 12, 18, 24, -1, 36, 4, 13, 19, 5, 14, 20, 6, 15, 21, 7, 8, 40, 41, 9, 42, 43])" - ] - }, - { - "cell_type": "code", - "execution_count": 45, - "id": "4d1815c1-6289-4abf-b039-6528b46b7d6c", - "metadata": {}, - "outputs": [], - "source": [ - "indices_in_ref=[0, 1, 10, 16, 22, 28, 34, 2, 11, 17, 23, 29, 35, 3, 12, 18, 24, -1, 36, 4, 13, 19, 5, 14, 20, 6, 15, 21, 7, 8, 40, 41, 9, 42, 43]" - ] - }, - { - "cell_type": "code", - "execution_count": 57, - "id": "887cad2c-ea13-4fdd-ab0a-88f25d37cf14", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "35 35\n", - "[17, 34]\n", - "[0, 3, 4, 5, 15, 16, 17, 21, 22, 23, 33, 34, 35, 39, 40, 41, 51, 53, 57, 58, 59, 75, 76, 77, 93, 94, 95, 111, 117, 118, 119, 135, 136]\n", - "[0, 1, 10, 16, 22, 28, 34, 2, 11, 17, 23, 29, 35, 3, 12, 18, 24, 36, 4, 13, 19, 5, 14, 20, 6, 15, 21, 7, 8, 40, 41, 9, 42]\n", - "33 33\n" - ] - } - ], - "source": [ - "# Given lists\n", - "updated = [0, 3, 4, 5, 15, 16, 17, 21, 22, 23, 33, 34, 35, 39, 40, 41, 51, 52, 53, 57, 58, 59, 75, 76, 77, 93, 94, 95, 111, 117, 118, 119, 135, 136, 137]\n", - "indices_in_ref = [0, 1, 10, 16, 22, 28, 34, 2, 11, 17, 23, 29, 35, 3, 12, 18, 24, -1, 36, 4, 13, 19, 5, 14, 20, 6, 15, 21, 7, 8, 40, 41, 9, 42, -1]\n", - "print(len(updated), len(indices_in_ref))\n", - "# Find all indices of -1 in indices_in_ref\n", - "indices_to_remove = [i for i, x in enumerate(indices_in_ref) if x == -1]\n", - "indices_in_ref = [x for x in indices_in_ref if x != -1]\n", - "\n", - "print(indices_to_remove)\n", - "\n", - "# Remove corresponding elements from 'updated' starting from the highest index\n", - "for index in sorted(indices_to_remove, reverse=True):\n", - " if index < len(updated): # Check if index is valid for 'updated'\n", - " updated.pop(index)\n", - "\n", - "print(updated)\n", - "print(indices_in_ref)\n", - "print(len(updated), len(indices_in_ref))\n" - ] - }, - { - "cell_type": "code", - "execution_count": 46, - "id": "4ef4277c-d555-477f-ba14-c1d2a9012ee0", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "17" - ] - }, - "execution_count": 46, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "indices_in_ref.index(-1)" - ] - }, - { - "cell_type": "code", - "execution_count": 26, - "id": "db16304c-262f-4ea5-a4a1-9f987c0eb87c", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 26, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "plot_atoms(new_structures[0])" - ] - }, - { - "cell_type": "code", - "execution_count": 27, - "id": "a6a74a92-7e14-45fb-8d46-f2c074a2f20a", - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 27, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAh8AAAFaCAYAAAC+ID+TAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8g+/7EAAAACXBIWXMAAA9hAAAPYQGoP6dpAAC29ElEQVR4nOzdZXhUx/vw8e9u3D1EIYHgGkGDu1N+eHEoToG2FFraUgFaWkpbKO4UKO7uFEiwGE7QhAgQd93d87zgIf9SArFNNgnzua68YPecmXtDds+9c2bukUmSJCEIgiAIglBC5JoOQBAEQRCE94tIPgRBEARBKFEi+RAEQRAEoUSJ5EMQBEEQhBIlkg9BEARBEEqUSD4EQRAEQShRIvkQBEEQBKFEieRDEARBEIQSpa3pAP5LpVIRGRmJiYkJMplM0+EIgiAIgpAPkiSRnJyMg4MDcvm7xzZKXfIRGRmJs7OzpsMQBEEQBKEQwsLCcHJyeucxpS75MDExAV4Gb2pqquFoBEEQBEHIj6SkJJydnXOu4+9S6pKPV7daTE1NRfIhCIIgCGVMfqZMiAmngiAIgiCUKJF8CIIgCIJQokTyIQiCIAhCiSp1cz6Esi0lJYWoqCgyMjKQJAkDAwNsbGzyNQFJ0JyYmBj8/f0JCAggKiqK9PR0ZDIZ+vr62NnZ4enpiYeHB5aWlpoOVRCEckAkH0KhSZKEv78/58+fx9/fn2vXrvHw4UMkSXrtOJlMhpubGw0bNsTDw4NWrVrh6ekp6rhokCRJXLx4kVWrVnHu3DnCw8MBMDAwwMLCAh0dHSRJQqFQEBcXR0ZGBgCVKlWiTZs2jB8/nkaNGon/Q0EQCkUm/fdKoWFJSUmYmZmRmJgoVruUUmlpaWzdupUlS5YQFBSErq4uTk5OODo64uTklHPxAsjOziY+Pp7w8HAiIiIIDw8nKyuLBg0aMHnyZAYNGoShoaGGX9H7IyUlhc2bN7NkyRJu375NhQoVqFWrFs7Ozjg7O2NlZfVGcSCVSkV0dDRhYWGEhYVx+/ZtYmJicHd3z/k/NDAw0NArEgShtCjI9VskH0K+ZWVlMX/+fH777TeSkpKoVasW3t7eVK9eHS0trXy1oVQqCQ4OxsfHhzt37mBqasqnn37KF198ga6ubjG/gvfb0aNHGT16NC9evKBOnTp4e3tTtWrVPCsR/pdKpeLu3bv4+Phw9+5dKlasyIYNG2jdunXxBC4IQpkgkg9B7YKCghg2bBh37tyhefPmtGzZEisrqyK1GRsby4ULF7hw4QK1atXir7/+okGDBuoJWMiRkJDAp59+yvr166lRowb9+vUr8v/dKy9evGDHjh08evSISZMmMX/+fIyNjdXStiAIZYtIPgS1UalUzJkzh7lz52JnZ8fAgQPzLJtbUOHh4Wzbto3nz5/z9ddf88033xT427iQuxs3btClSxfi4+Pp2bMnTZo0Ufs8DZVKxYULFzh8+DCOjo4cO3aMatWqqbUPQRBKP5F8CGqRnZ3N8OHD2b59Ox06dKBDhw5oaxfPHGWFQsHJkyc5efIkAwYMYOPGjTnzRoTCuXz5Mp07d8bU1JRRo0ZhYWFRrP1FR0ezdu1alEolp06dol69esXanyAIpYtIPoQiUygU9O/fn4MHDzJkyJASux0SFBTE5s2b6dGjBzt27Ci2ZKe8CwoKolWrVtjY2PDRRx+V2ITQlJQUVq1aRVpaGhcvXqR69eol0q8gCJonkg+hSCRJYtSoUWzatImRI0dSp06dfJ/3+PFjfHx8CAsLIy0tDR0dHYyNjWnQoAFNmjTJ13yA27dvs27dOoYMGcL69evFcs4CevbsGfXr18fQ0JAJEyagr69fov2npqayZMkStLS0uHHjRrGPuAiCUDqI5EMoko0bNzJixAiGDBmCl5dXvs4JCgrixIkTREZG4ubmRu/evbG0tCQrK4t79+6xe/duVCoVDRo0oGfPnnn+3/r5+bF582Y2bNjA8OHD1fGy3guSJNGrVy/++ecfPv/8c40Vd4uPj2fBggX06dOHv/76SyMxCIJQskTyIRRaREQEtWrVonr16gwePDhf5xw/fpyjR4/SpUsXPvvsM9q2bfvGaEVsbCzr169nwYIFKJVKxo4dS4UKFd7Z7pYtWwgODubOnTs4OjoW+jW9T7Zs2cKQIUMYNWqUxudcXLlyha1bt3LgwAF69Oih0VgEQSh+Bbl+iyUFQg5JkhgzZgwymYwPPvggX+ecO3eOo0ePMmfOHA4fPky7du1yvU1iZWXF9OnT8fPzw8bGhpUrV5KYmPjOtj/44ANkMhljxox5o2qq8Kbnz58zefJkPDw8NJ54ADRq1IhatWoxZswY4uPjNR2OIAiliEg+hBz79u3j6NGj9OvXDyMjozyPf/bsGfv372fGjBl8/fXX+Zqb4ezszKlTp9DX12f79u3vPNbIyIh+/fpx9OhR9u7dm+/X8b767bffyM7O5n//+5+mQwFeltXv378/8fHxLFu27I3nFQoFYWFh3Lx5kwcPHuSZjAqCUH6I5EPIsWjRItzc3PI9wdTHxwcbGxvmzJlToH4cHR2ZO3cud+/eJSYm5p3H1qlTBzc3NxYvXlygPt436enprFmzhoYNG5aqIl/m5uZ4eHiwfPlyFAoF8LKuy+zZs3F2dqZixYrUq1ePatWqYWlpSa9evTh+/DgqlUrDkQuCUJwKnHycP3+eHj164ODggEwmY9++fa89L0kSs2fPxt7eHgMDA9q3b8+DBw/UFa9QTO7cucM///xDs2bN8nV8RkYGfn5+jBs3rlBl0QcOHIiZmRm+vr55HtusWTP++ecf7ty5U+B+3hc7d+4kPj4eb29vTYfyBm9vbyIiIti3bx8fffQRLi4u/P777/Tu3ZvDhw9z6dIlzp49y59//klISAidO3emevXqXL16VdOhC4JQTApcRCE1NZX69eszatSoXId3f/nlFxYvXszGjRtxdXXlm2++oVOnTty5c6fYlvwFBQVx+/btnH/Xrl37jboUeR3z3+fzc0xZ6ufV85mZmSgUCgwNDbl+/XrOMRs3bsTY2Pi1uQKJiYkkJSW91q+pqSlmZmbcuHGDzMxMevbsSUBAQM7z9vb22Nvbv3bOs2fPePbs2RvHjBw5krVr19KqVau39gNQr149jI2NmTZtWs7KF0397kvr38n333+Pm5sbNjY2r53z3//Df/9ec3s+P8cUtA1nZ2ccHR0ZOXIkmZmZTJ06lXHjxr1RBbV69eo0btyY69ev8/vvv9OqVSv27dtHp06dCvU7ye35/Byj6fdoQdoQhDJLKgJA2rt3b86/VSqVZGdnJy1YsCDnsYSEBElPT0/aunVrvtpMTEyUACkxMTFfx+/bt0+Sy+USkPPTqlWrN45r1arVO4/57/P5OaYs9WNraysZGxvn/FtHR0eysLB47RhXV1fpjz/+yPnp1KnTG7F26tRJ+uOPP6Ru3bpJlpaW0rfffvva899+++0bsb7tmA0bNkiA1LFjx7f28+rH1dW1VPzuS/PfSZ06dV77neX2f/jf3+u7/o/V1cZvv/322t9efv9O3NzcJCMjI8nPz6/U/+7V0U9+2pDL5VJoaOgbxwlCaVCQ63eRltrKZDL27t2bszLi8ePHVKlShcDAwNey81atWtGgQQMWLVqUZ5sFXWr75MkTqlSpgq2tLQsXLgTK1red4uxn//79bNiwgZCQEJydnXOGvLW0tIiKimLz5s0EBATk/L7/W9fjXd9oDx8+zN27d7l69Wquoxr/9raRj507d9K/f3++/PJLsrKycu3nlVd1PxYuXEiFChXEyMe/jrl9+zY//fQTkydPxs3N7bVzSsPIx40bN1i3bh2///47LVu2BPL3d2JmZkbfvn0xNjbmwoULpfJ3r85+8mrj8ePHzJ49Gy8vL65du4YglDYlVufjv8mHr68v3t7eREZGvvbB0r9/f2QyWa6rGzIzM8nMzHwteGdn5wLV+fjwww/ZunWrKEj1LwcOHGDAgAHUq1ePb7/9lk6dOuW67X1AQACTJ0/m0qVLzJ07N9+TFc+cOcPZs2dJTEwsdAXSNWvWMHbsWBYuXJjnRnIpKSl8/fXXbNu2jQEDBhSqv/JqwYIFzJ49mx9//LFUbsi3fPlyzM3NuXz5coHP3bVrF/369eP69eulYvmwprVv357Tp09z4sQJOnTooOlwBOE1ZarOx08//YSZmVnOj7Ozc4HbWLduHfr6+syYMaMYIix7Lly4QL9+/ejatSv//PMPXbt2zTXxAPDw8MDb2xsLC4sCrZKws7MjOTm5SN/Ajh8/jr29fb4umMbGxlhZWeHv71/o/sorf39/HB0dS2Xi8eLFC4KDg/n4448LdX6vXr1wcHDIdanu+2jHjh1oaWkxceJETYciCEWi1k8rOzs74OUHzr+9ePEi57n/+vLLL0lMTMz5CQsLK3C/+vr67N69W8yOB5RKJcOHD6dJkyb8/fff+Zrke/PmzQJXEK1RowbW1taFvihERkayb98+mjZtmu9z7O3tuXHjRqH6K8+ePHmClZWVpsPI1c2bNzEyMqJv376FOl9HR4ehQ4eyZ88eNUdWNllaWrJ9+3Z8fHw0HYogFIlakw9XV1fs7Ow4ffp0zmNJSUlcuXLlrRcZPT09TE1NX/spjK5du1KpUqVCnVueHD9+nCdPnvDLL7+gp6eXr3OSkpIKvOupXC6nSZMmbN26laioqALHuXLlSrS1tfO9dwyAgYHBG3MLhJfLnnV0dDQdRq5SU1Oxs7PL999iblxcXIiNjRW1P/6/Pn36YGtrq+kwBKFICpx8pKSkEBQURFBQEPDyW1dQUBBPnz5FJpMxbdo05s6dy4EDB7h58ybDhg3DwcEh3+W6haJZtmwZHh4eNGrUKN/nZGZmFmrr+iZNmqCrq0vfvn3JyMjI93mnT5/mxx9/pGnTpgVKerS1tQvUz/tCqVSWylsuACqV6q23/PJLW1sblUolSuwLQjlS4E8sPz8/3N3dcXd3B+DTTz/F3d2d2bNnAzBjxgw+/vhjxo4dS8OGDUlJSeHYsWMluq33xo0buXTpUon1V1okJCRw5MgRxo4dW6BJoDo6OiiVygL3Z2xszOjRo7ly5QpdunQhISEhz3MOHDhA9+7dqVq1Kt27dy9Qf0qlslAFzco7fX19srOzNR1GrgwMDIiOji5S4hAVFYWZmVmRk5jyaNGiRQQHB2s6DEEosAInH61bt0aSpDd+NmzYALxcAfPDDz/w/PlzMjIyOHXq1BvFhIpTWloao0aNon///iXWZ2nx6kO+evXqBTrPyMjojaWu+eXq6sq4ceO4du0arq6ufPbZZ29UtM3OzmbXrl20adOGXr16Ub16dUaOHFngi0lWVhaGhoaFirM8s7S0JCUlRdNh5Kpq1arEx8dz5syZQp0vSRLbt2+ndevW6g2sHAgPD2fatGmFnk8jCJpUOsdqi8DQ0JAxY8YQHh7On3/+qelwStSrJcsFHR2oVq1aoeZtvFKlShWmT5+Oh4cHq1atolq1atSqVYsWLVrQqFEj7O3t6devH2FhYQwdOpThw4cXagQjKiqqwInV+8Dd3Z3IyEhNh5GrypUr4+DgwNKlSwt1vq+vLzdu3BCrO3Lh5OREz549uXXrFrt379Z0OIJQIOUu+QBYsmQJRkZGzJw5s9Df6Msic3NzAOLi4gp0npeXF8+fP3+t3kpBWVhY0LNnT7799ls+/PBDrKysSE9PRy6X4+7unnM7ztPTs1DzEzIzM3n+/Dmenp6FjrG88vT0JC4ujuTkZE2H8gaZTEazZs04cOAA9+7dK9C5kiTxyy+/ULVqVdq3b19MEZZtW7ZsQUdHhzFjxogJuUKZUi6TD21tbRYtWoS9vX2eu6aWJ3Z2djg6OnLgwIECnefp6YlKpSIiIqLIMejo6NCoUSP69u3L0KFDGTRoEN27d8fBwaFI7UZERKBSqQq0OuZ98ep3Uphl6iWhYcOGmJqa0qlTp9cqmL6L9P83qDxw4ADz5s0rtRNqNc3Y2Jivv/4aR0fHUnvrTRByU27f0aNHj+bRo0dFvuiVJdra2owbN44tW7bka/LnK7Vr10ZXV5eQkJBii62oQkND0dXVpXbt2poOpdRxdXXFxsamwCMLJUVPTw9nZ2eeP39O06ZN86zHk5SUxOTJk5k7dy7z58+nX79+JRRp2TR79mxu3rxZ6DIFgqAJ5Tb5eF999NFHZGVlsXr16nyfo6OjQ7du3bh27VqpXM4oSRLXrl2jW7dupbaehSbJZDJGjx6Nn59fkW6dFZfU1FTu3bvHJ598gqmpKY0bN6ZZs2Zs3ryZhIQEJEkiMzOToKAgJkyYgIODAytXrmTlypXMnDlT0+ELglAM3pvk4325H2pvb8/YsWP56quvCrTCoH///jx79ozHjx8XY3SF8/jxYyIjI5k8ebKmQym1xo0bR3p6OgEBAZoO5Q2vRjo+/fRTAgIC2LNnD0ZGRgwdOhQLCwu0tLTQ19fH3d2d/fv3M336dEJDQxk7dqyGIy+b3pfPOqFsK3hlqTKoe/fuBAQElNoVAer2xx9/8PDhQ7p168bGjRvp16/fO+t+XL9+nc8//xxdXV0uXrxIlSpVSjDavPn4+FC1alXatGmj6VBKLRcXF7p27Yqvry9NmjQp9GZ/6qZSqbh06RL9+vXLqcrZu3dvevfuzf379wkKCiIhIQF9fX3s7Oxo06aNGN0qAm9vb6Kjo7l//76mQxGEd3ovRj5q1qzJs2fP+OGHHzQdSonQ0dFh//799OzZkwEDBuDh4cHq1atJTU3NOUapVHLw4EG6dOlCgwYNsLKy4quvvuLGjRv5nhRYEp49e8b169eZNGlSqbmgllafffYZYWFhhdo9trj8888/REdHM23atDeeq1atGv3792fs2LEMGzaMjh07isSjiFxcXHjw4AHr16/XdCiC8E4yqZTd5C/Ilrz5pVKpsLKyIi0tjfj4+PemUJVKpeLkyZMsXbqUQ4cOoaOjg42NDdra2sTExJCamkrDhg2ZOHEiAwYMQCaT0aBBAzIyMpgyZYrGK0oqlUoWL16Mvr4+QUFBJVolt6waNWoU27ZtY8aMGVhYWGg0lhcvXrBw4UImTZrEb7/9ptFY3hdZWVk51WATEhIKtW2CIBRWQa7f70XyAS+3oh4wYACff/45v/zyi9raLStCQkI4cOAAsbGxKBQKLCwsaNWqFQ0bNnztuCtXrtCsWTO6dOlChw4dNBTtS6dOneLIkSP4+vrSuHFjjcZSViQkJFCrVi3MzMwYN26cxkaLVCoVf/75J3K5nBs3brw3CX9p8Mcff/DJJ5/wxx9/MHXqVE2HI7xHCnL9fm/S4v79+6Ovr0/Pnj01HYpGuLi4MGXKlDyPa9y4MdOnT+e3336jZs2aODk5lUB0bwoPD+fYsWNMnz5dJB4FYG5uztq1a+natSsnTpygU6dOJR6DJEkcPHiQkJAQLly4IBKPEjZt2jQqV6783n7WCWXDezPyIeRfRkYG3t7ePHz4kI8//hgbG5sS7T86OprFixdTuXJlLl++LG63FMKcOXOYPXs2vXv3pkWLFoSEhJCUlJSzP469vT1WVlbF0veJEyc4cuQIixcv5uOPPy6WPgRBKH3EbRehyKKjo2nevDnR0dGMGzcOOzu7Eun3+fPnLF26lNTUVCwsLBgzZgzjx4+nUqVKJdJ/eSFJEh9//DFLly7F2Nj4jeqXMpmMWrVq4e3tTY0aNdRSQVSSJA4dOsTp06eZO3cuX331VZHbFASh7CjI9fu9WO3yXwkJCYwfP16sh38HGxsbzp07h52dHUuXLi2RbbuDg4NZunQpTk5OnD17liFDhrB8+XJq1qxZ4JLx77utW7eydu1adHV16d27NxcvXiQ+Pp709HQiIyNZvXo12trarFq1ij/++IPExMQi9ZeQkMDq1as5ffo0v//+u0g8Sonnz58zadIkTYchCG94L5OPVatWieqJ+WBvb8+FCxdo2LAhy5cvZ/v27WRkZKi9n4yMDLZv387y5cvx8vLiwoULtGzZkj/++IPw8HC6du1K79692bVrl9r7Lo+WLVvG4MGD6devHxEREfz11194e3tjbm6Ovr4+9vb2jB49msDAQC5cuIBCoWDRokXEx8cXuC9Jkrhy5Qq//PILsbGxHDp0KNdltYJmzJs3j2XLlrFo0SJNhyIIr3lvb7vY2toSHx9PdHR0zm6wQu5UKhUrV65k+vTpGBgY0KtXL+rUqVPkoXqVSsWtW7fYv38/6enp/Prrr4wbN+6NdlUqFUOGDGHPnj1cvnyZBg0aFKnf8uzQoUP07NmTKVOm8Pvvv+drtUtERATNmjVDoVAwdepU9PT08jxHqVRy69YtLly4wMOHDxk6dCiLFi3S+PJe4XUKhQJzc3OUSiWJiYno6upqOiShHBNzPvLh6NGjdO3alQ4dOnDixIli66c8CQkJYfTo0Zw5cwZra2uaNGlCkyZNMDY2LlA7KSkpXL58mcuXLxMTE0Pbtm1Zu3YtLi4ubz0nMzOT2rVr06RJEzZv3lzEV1I+SZJEvXr1sLe359ixYwVKDu/evUvdunXp3bs3zZs3z/UYlUrFixcvuH79OleuXCE+Pp4mTZrwzTff0LVrV3W9DEHN1q5dy0cffcTgwYPFe0coViL5yKfOnTtTs2ZNfv/992Ltpzx5tcnbsmXL2Lp1KyqViipVquDo6IizszPOzs5YWFjkXPhUKhXx8fGEhYURFhbG06dPCQkJQS6XM2jQICZOnEjDhg3z9Q194cKFzJo1i7CwsJxS3cL/eXW76tSpU7Rr167A5/fu3ZvTp0/Tpk2bnG/I2dnZxMfHExERQXh4OJmZmRgYGDB06FAmTJggRqHKCG9vbzp27Mi3336r6VCEckwkH0KJiI2N5a+//uLcuXP4+fm9tnfOv5OPV4yNjcnOzmbOnDmMGjWqwEs9Y2NjcXJy4ttvv+WLL75Qz4soRwYNGkRgYCB3794tVHGx06dP0759ewwMDMjOzkYmk6Gnp0eFChVo2LAhXl5eeHp64unpiYmJSTG8AkEQyjKRfAgaERUVhb+/P1FRUWRkZCBJEgYGBtja2uLp6ckHH3xA1apV2bhxY6H7aN++PRYWFuzcuVONkZcPtra2TJgwge+//75Q50uShJ2dHePGjXtv9kESBEF9RIXTQsjKykIul4u9EIrA1taWLl26vPX5hIQELC0ti9SHlZUVsbGxRWqjPJIkifj4+CLVY5HJZFSoUKFQq16EsiMjI0MU7hM07r1cavtfUVFRmJubM3HiRE2HUq7p6emRmZlZpDbEB+fbyeVylEplkdpQKpUa31BQKD63b9/GzMxMjGwJGieSD15+Y7e2tmbt2rU8f/5c0+GUW3Z2dty7d6/Q50uSRHBwcIlVWy1LZDIZVlZWPH36tNBtZGdnExkZWWxl1wXNq1mzJoaGhsybN4+0tDRNhyO8x0Ty8f+9WrnRp08fTYdSbn344YecPXuWBw8eFOr88+fPExwczIcffqjmyMqHXr16sXnzZrKzswt1/oEDB0hISBAbkpVjcrmc1atXk5WVxeDBgzUdjvAeExNO/6Vly5b4+PgQHR1d5LkJwpsyMjJwcnJi+PDhLFy4sMDnDxw4kKCgoEKv5ijvbty4Qf369dm5cyd9+/Yt8Pnt2rUjMzOTixcvFkN0QmlSp04d7t+/T0pKiig8JqiN2NulkHbt2sWtW7dE4lFM9PX1GT16NKtWreLmzZsFOveff/5h9+7dTJgwQSQeb1GvXj2aN2/Ojz/+SHp6eoHOPXv2LGfOnBHznt4Thw8f5uHDhyLxEDRGjHwIJSo5OZmWLVsSHR3NyZMnqVmzZp7nXLp0ia5du+Ll5cXhw4fFB+Y7+Pn50apVKzp06MD27dvzVSo9ICCAdu3a4enpydGjR9HR0SmBSAVBKG/EyIdQapmYmHDkyBEsLCxo1qwZv//++1uXdj5//pw5c+bQtm1b6tSpw65du0TikQcvLy927NjB8ePHad++PX5+fm89Nj09nTVr1tCyZUuqVq3K7t27ReIhCEKJECMfb7F7926uX78ulqQVk8TERCZPnsz27dvR1tZm4MCBNGrUCGNjY5KSkjh//nzOxXDUqFH8+uuvYoltAfj6+vLhhx8SGhpKo0aNGDduHLVq1UJfX5+EhAQOHz7MunXriIuLY8CAAaxduxYjIyNNhy1owNq1a4mLi+Pzzz/XdChCGScqnKpBtWrVePjwIY8ePcLV1VVjcZR3L168YO3ataxdu5aQkBBUKhVaWlpUq1aNcePGMWzYMLFTaiEplUqOHDnC0qVLOX78+GvPWVhYMGrUKMaPH4+bm5uGIhRKAzs7O2JiYoiKihLz3YQiEcmHGgQFBeHu7o67uzsBAQEai+N9olKpyMjIwMDAQEwqVbOoqChevHhBeno65ubmVKxYUYwkCQAcP36czp070759e06ePKnpcIQyTCQfatK5c2eOHz/OwYMH6d69u0ZjEQRBKC5eXl74+/tz7do1vLy8NB2OUEaJCadqsm3bNurWrYuNjY2mQxEEQSg2e/bsoW7duhgYGGg6FOE9IUY+BEEQBEEoMjHyIQiCIAhCqSWSjwKIi4vTdAiCIAjFTnzWCcVNJB/5NHv2bGxsbLh9+7amQxEEQSg2EyZMwNbWlsjISE2HIpRjIvnIp6FDhyJJUqE27BIEQSgrhgwZglKpFJ91QrESyUc+Va1alf/973/cu3ePrVu3ajocQRCEYuHt7U3Lli25dOkS586d03Q4Qjklko8C+Ouvv9DT0yvUdvCCIAhlxc6dO5HL5fz888+aDkUop7Q1HUBZYmhoSGBgINWrV9d0KIIgCMXG1taWW7du5WvXaUEoDJF8FJB4MwqC8D4Qn3VCcRK3XQRBEARBKFFi5KOQ0tLSGDJkCDNnzqRx48ZvPS4rK4tTp04RERFBeno6ZmZm1K9fnwYNGpRcsIIg8Pz5c/7++2+ePn1Kamoqpqam1KpViwEDBmBsbKzp8EqthIQEBg0axLJly8QO34LaiPLqhRQeHk6lSpVwdnYmJCTkjefDwsJYtWoVq1ev5sWLF8hkMvT09MjIyACgSZMmTJw4kX79+ondRQWhGPn4+LBkyRJ2796NlpYWlStXxtDQkKSkJB4+fIixsTEjRoxg0qRJVKtWTdPhljo3btzI+cIUGBio6XCEUkyj5dWVSiXffPMNrq6uGBgYUKVKFebMmUMpy3GKzMnJiWHDhhEaGsrKlStfe27t2rVUrlyZRYsW0bdvX27cuEF2djbp6emkp6ezd+9eTExMGDZsGLVr1yY4OFhDr0IQyi9Jkvjhhx9o3rw5AQEBLFiwgMjISG7fvs21a9cIDg7m8ePHTJ48ma1bt1K/fn12796t6bBLnXr16tGlSxeCgoI4cOCApsMRygtJzebNmydZWVlJhw4dkp48eSLt3LlTMjY2lhYtWpSv8xMTEyVASkxMVHdoapednS0ZGhpKhoaGUnZ2tiRJkvTbb79JgDRu3DgpKSnpneffuXNHqlmzpmRpaSndvn27JEIWhPfGF198IQHS3LlzJaVS+c5j09LSpAEDBkgymUzasWNHCUVYdiQmJkra2tqSlZVVnr9L4f1VkOu32ud8+Pr60qtXL7p16waAi4sLW7du5erVq+ruSuO0tbX5/fffuXjxIiqVin379vHpp58yY8YM5s+fj0wme+f5NWvWxMfHh1atWtGlSxcCAgKwsrIqoegFofz6+++/mT9/PgsXLuTTTz/N83gDAwP+/vtvtLS0GDp0KNWrV6devXolEGnZYGpqyg8//EB4eLimQxHKCbXP+fjxxx9ZtWoVJ06coFq1aly/fp2OHTvy22+/MXjw4DeOz8zMJDMzM+ffSUlJODs7l/o5H/8lSRL16tXD0dGRo0eP5pl4/FtYWBjVqlXj22+/5YsvvijGKAWh/Hv1XnRxceHAgQMFei9mZmZSrVo12rVrx7p164oxSkEofzQ65+OLL75g4MCB1KhRAx0dHdzd3Zk2bVquiQfATz/9hJmZWc6Ps7OzukMqERcvXuTWrVtMnz69QB92AM7OzgwcOJAVK1agVCqLKUJBeD/4+Phw69Ytpk6dWuD3op6eHuPGjWPr1q3Ex8cXU4SCIKg9+dixYwdbtmzh77//JiAggI0bN/Lrr7+ycePGXI//8ssvSUxMzPkJCwtTd0glYtmyZVStWhUvL69CnT9x4kRCQ0M5evSomiMThPfL8uXLqVatGm3bti3U+aNHj0apVL71M0t4WULg+fPnmg5DKMPUnnx8/vnnOaMfdevWZejQoXzyySf89NNPuR6vp6eHqanpaz9l0YULF9DS0mLkyJGFOr9hw4a4uLhw/vx5NUcmCO+XoKAgOnfujFxeuI+3ChUq4OnpSVBQkHoDKydUKhUVKlSgdevWmg5FKMPUnnykpaW98abX0tJCpVKpu6tSJT4+noYNG7Jv3z5OnTpVqDZsbGzEUK8gFFFiYiLm5uZFasPCwoLExET1BFTOyOVy2rdvT3BwMFu2bNF0OEIZpfbko0ePHsybN4/Dhw8TEhLC3r17+e233+jdu7e6uypVtLW1qVu3Lt7e3kybNg2FQlHgNrKzs9HR0SmG6ATh/WFgYEB6enqR2khPT8fAwEBNEZU/mzZtQk9Pj4kTJ5b7L5ZC8VD7Uts///yTb775hokTJxIVFYWDgwPjxo1j9uzZ6u6qVLGxseHJkycsWrSItm3bcuPGDTw8PPJ9vkKhICwsDDc3N2bNmkVgYCBxcXFkZGSgpaWVU7DN09MTT09PGjRoIEpCC+81SZKIiIjg+vXrJCYmkpmZiba2Njo6Ovj4+JCVlYWurm6B283OzubevXt4enoWQ9Tlg76+Pj/88ANffPEF586dK/T8GuH9Jcqrq8nMmTNZtWoVERERKJVKTExMCnT+nj176NOnD/ByyNfBwQFjY2O0tbVRqVRkZ2cTExNDREQE2dnZyGQymjdvzqRJk+jdu3ehPmQFoax5/PgxmzZt4vLly/j5+RETE/PWY1+NRjZs2JBu3brRrVs3tLS08uzj1XsxMDBQ7MGUh8jISBwcHDQdhlBKFOT6LZIPNXn8+DFubm6sWbOGUaNGFfj8Nm3aEBwczIQJE975upVKJc+fP+fp06f4+/vz8OFDbG1tGTduHFOnThVFyoRyR6lUcuzYMZYuXcqxY8cwMDDAxcUFJyennB8jIyN0dHRQqVRkZmYSFRVFeHg4YWFhhIWF8ezZM5ycnJgwYQKjR4+mQoUKb+2vffv2pKen4+PjU4KvUhDKPpF8aEi3bt148OABV69eLdCEt5MnT9KxY0eGDh1a4KHeZ8+e4ePjg5+fHyYmJqxcubLcz68R3h8XLlxg9OjRPHjwgIoVK9KsWTM8PDwKPNL39OlTfHx8CAwMRJIkpk+fzrfffouent5rx+3cuZP+/fuzefPmt9YmEgQhdyL50JDg4GCaNWtGnTp1OHjwIC9evGDz5s189913by12dPnyZTp27IizszOjR4/O17BwbpKSkti5cyc3b95k4MCBLFmyRIyCCGVWWloas2bNYvHixbi6utKzZ08qVapU4KJh/5WamsqFCxc4deoUbm5u/PXXXzRs2BCAAwcO0L9/f/r06cOmTZsKvVT3fbRr1y7WrFnDsWPHNB2KoEEi+dAgX19funbtSsWKFenTpw/fffcd+/fvp2fPnq8dl5iYyPr16/niiy9wcnJizJgx6OvrF6lvSZLw9/dn7969mJmZcerUKWrWrFmkNgWhpF2/fp3evXsTERFB165dadmypdoTgcjISLZt20ZERAQTJkxAkiSWL1/OBx98wN9///3GiIjwbiNHjmTDhg0sW7aMCRMmaDocQUNE8qFht2/fZsiQIQQFBaGvr4+RkRHr1q3D1NSUxMREjh49yqZNm8jMzKRhw4b06dNHrUtsExISWLVqFZmZmZw+fZr69eurrW1BKE4+Pj507doVMzMzhg4diq2tbbH1pVQqOXnyJMeOHUNfX59Zs2Yxa9asQo8+vs8UCgVmZmbAyy9W2tpqX0gplAEi+SgFJEni0qVLDBo0iKdPn772nLm5OU2aNKFp06Y5b1h1S01NZeXKlaSnp3Px4kWqVatWLP0IgrpcuXKFtm3b4ujoyOjRo4s8EliQfrdv387IkSNZvXp1kW/tvK+WL1/OxIkTGTFiBOvXr9d0OIIGFOT6LdLTYiKTyXjy5AlPnz6lbt26tGrVCjMzs5yRkOK+n2xkZMTYsWNZunQpnTt35ubNmxgZGRVrn4JQWMHBwXTu3Bl7e3vGjBlTokvHGzdujEwmY+3atVSoUIF58+aVWN/lyYQJEzh79ixjx47VdChCGSBGPorJs2fPqFWrFpUrV2bYsGEaiyM6OpoFCxYwfvx4Fi1apLE4BOFtlEolzZo1IzQ0lKlTp2JoaKiROE6dOsXhw4f5559/aNGihUZiEISyrCDXbzGduxhIksTYsWORJCmncJim2NjY0LVrVxYvXvzapnUqlYrjx4/Tu3dvqlSpgrW1NRUrVqRp06asWLGC5ORkDUYtvE8WLlzItWvXGDhwoMYSD4C2bdtSuXJlhg8fTmpqqsbiEIT3gUg+isG2bds4dOgQffr0eeNWR3JyMiU92NSyZUuqVKnC8OHDSU9PZ9WqVVSrVo3OnTvz+PFj+vTpw6effsrw4cOxtbVl0qRJODo68vHHH4skRChWd+/e5ZtvvqF169a4urpqNBa5XM7AgQOJiIhg1qxZGo2lPLh165amQxBKMXHbRc0kSaJOnTrIZDLGjBnz2nMJCQn8+OOPDBw4sED7vqjD8+fPmT9/Pu3ateP06dMMGDCAKVOm0LRp0zcm2IWFhbFq1SoWLVpElSpVOHLkCPb29iUar/B+6N69O35+fnz22WelZouAc+fOsW/fPoKDg8VE7ULav38/H3zwAT/99BNffPGFpsMRSoi47aJBFy9e5M6dO7Rs2fKN58zNzalevToHDhwgKyurROOys7PD0tKSM2fOsGrVKrZt20azZs1yndnv7OzMnDlz8PHxISoqii5duogRECHf4uPj+eOPP+jSpUvOqq5u3bqxbNmy1/6OQkJCOHLkCK1bty41iQeAt7c3xsbGrFixQtOhlFk9evTA1NSU7777joyMDE2HI5RCIvlQs6VLl1KhQgWqVq2a6/O9evUiOTmZ06dPl2hcwcHBxMXF8ccff7wxIvM2devW5dixYzx58oSZM2cWc4RCWff48WM++ugjHB0dmTFjBjKZjNq1a1OzZk2ys7OZMmUKDg4OTJo0iYiICFauXImBgUGJjwLmRUdHh0aNGrFu3TrS0tI0HU6ZJJfLWbZsGZmZmQwdOlTT4QilkLjtokYxMTE4ODjQrVs3Wrdu/dbjDh48yNOnT5k4cWKJ1RRYs2YNMpmM69evF7jP7777jl9//ZXIyMgy938ilIxLly7Rs2dPdHV1mThxIqNHj8bOzu61Y8LDw1m1ahUrVqxAW1ubtLQ06tevz//+9z8NRf12MTExzJs3r9AbRQov1ahRg9TUVMLCwjQdilACxG0XDbl8+TLZ2dnUrVv3ncd16dKlRBOPuLg47ty5w+TJkwvV55gxY8jIyOCvv/4qhuiEsu769et06tSJGjVqcPPmTb766qs3Eg8AJycnfvjhB27cuIGRkRGJiYk0btxYrbFIksSDBw84evQou3fvZu/evZw4cYJnz54VqB1ra2uqVq3K7t271Rrf++bq1auEhoZqOgyhFBJFxtTI398fY2NjLC0t33lcSZce9vPzw9DQsNC7dDo6OtKrVy82bNjA5MmT1RydUJZlZ2fTq1cvqlatytGjRzE2Ns7zHDs7OwYPHsyPP/6otonMGRkZXLt2DV9fX549e4aVlRW2trYolUqePXvGkSNHqFq1Kt7e3tStWzdfJdQrVaqEn5+fWuJ7X4mRUuFtxMiHGl27dg1nZ+dSV545ISGBKlWqFKnCaf369QkPD1djVEJ5sG/fPkJDQ1m/fn2+Eo9X7ty5Q8WKFdVS6Tc2NpY//viDffv20axZM86cOUN0dDR37twhODiYmJgYtm7diq2tLRs2bGDt2rVkZmbm2a6zszNRUVFERkYWOUZBEF4nkg818vf3x8nJqUDnXLp0iYCAgGKK6KWsrKwiF28yMjIShZeENyxfvpzmzZtTr169Ap137dq1Ar9XchMfH8+ff/6Jvr4+t2/fZteuXbRp0+a1LwC6uroMHDiQixcvcvToUZ4+fcqqVavyXHHm7OwMvHxfC0WjUCjo1asX33//vaZDEUoJkXyoUUxMDObm5gU65+HDh+zZs6dYl6MZGBiQmJhYpDYSExML/NqE8u3Ro0ecPXu2wFuoZ2dnExISkuu8kIJQKpWsWbMGExMTfH19qV69ep7ndO7cmZMnTxIREcGuXbveeay5uTkGBgYEBwcXKU7h5eoXHx8f5s6dS1JSkqbDEUoBkXyoiUKhQKFQFHg+R48ePcjKyuLEiRPFFNnLe+zBwcFFum1y8uRJateurcaohLLu0aNHADRr1qxA571KtPX09IrU/+3bt3OSiILMHWnSpAkLFizAz8+P+Pj4tx4nk8nQ09MTy23VQC6Xs2HDBhQKBQMHDtR0OEIpIJIPDTM3N6d9+/b8888/REdHF0sfnp6e6OjosHr16kKdHxAQwOXLlxk/fryaIxPKspSUFABMTEwKdN6r2x35mfT5Lj4+PjRq1IhGjRoV+NwRI0ZgaGiIr6/vO4/T0tIq8YKA5VX37t2pX78+R48eFaXXBZF8qIu2tjba2tpkZ2cX+NzWrVvzv//9L89VMoWlr6+Pp6cnK1asKNTtnSVLluDk5ET37t2LITqhrHo1wbSg1W9fjXgoFIpC9x0dHU1wcHChV18ZGxszYsQIrl69ilKpfOtxCoUCfX39woYp/MfevXsZOXIkNWrU0HQogoaJ5EONbGxs3jmM+za6urp4e3sX+Zvgu7Ro0YL4+HhGjBiBSqXK93lbt25l/fr1fPbZZyW+RFgo3apUqQK8HIEoCAMDA+RyOenp6YXuOyIiAoBu3boVuo1u3bqRmJj41jkIKpWK9PT0Aq3iEd7N1dWVdevWic8SQSQf6uTl5ZXzoVja2NnZMWTIEHbs2MGgQYPyNQKybt06hg4dyrBhw5g6dWoJRCmUJVWqVKFt27YsX768QOdpaWlRvXr1Ii1hfZW4FGUStIWFxWtt/Vd0dDRZWVnUqVOn0H0IgpA7kXyokZeXF+Hh4RSlYr0kScTExKgxqv9Tv359mjVrxq5du6hSpQo//PDDG5UfMzIy2LRpE02bNmX06NF89NFHrF27ttTVLhFKhwkTJuDj48P169cLdF7Dhg2LNAFaR0cHIF/1Ot7mVQL+qq3/ehVfadt7prxQKBScP39e02EIGiKSDzXy9PQkJSWFuLi4Qrdx7tw5Fi5cmDOZT90kSaJSpUp0796dn3/+mYoVK+Lp6Um7du1o2rQpjo6ODBs2DBMTE/bt28fy5cvFEKnwVr169cLFxYURI0YUaO5HjRo1iIiIKPS8j1eVM+/cuVOo81+dK5fL31p8LywsjEqVKhXbXKz3XfPmzWnbti1RUVGaDkXQAJF8qFHTpk3R1dXlxo0bhW6jYcOGSJLE0aNH1RjZS0qlkjt37tC5c2dWrlxJZGQkv//+O15eXlhbW1OzZk0mTpxIcHAwJ06coFevXmLEQ3gnHR0dDhw4wOPHj+ncuXO+Ru0iIyNZv349SqWy0Pt+VKlSBQsLC1atWlWo8yVJYtmyZdSqVeutBfiePHlSqJU0Qv7Mnz8fpVJJv379NB2KoAEi+VAjS0tL+vXrx6VLlwo0qfPfjI2N6dSpE76+vmov63zr1i0SEhIYN24cAGZmZkyePJmVK1eyfft21q1bx5w5c6hWrZpa+xXKt7p163Ly5EkePHhA3bp1+f7773P92w0NDWXWrFnUq1ePtLQ0HBwcuHz5cqH61NLSonHjxmzatKlQBfQuXbrErVu38Pb2zvX5sLAwQkND+fDDDwsVn5C31q1b07RpU86fP1/gSctC2SeSDzWbOHEiUVFRRaqK2KJFC+zt7dU+edXHx4emTZtSv359tbYrCI0aNeLq1av06tWLBQsWULFiRTp27Mjw4cMZNmwY7dq1o3LlyixdupTBgwdz9epVpk2bRmBgYKFvMTZt2pSsrCw+//zzAs2zSk9P59NPP8XW1vatVVF9fHyws7Mr0mqa8iwtLY1Lly6xceNGVqxYwZ9//smqVavYunUrt27dyvfttF27dqGrq8uRI0eKOWKhtJFJRZkdWQySkpIwMzMjMTGxTO6IKEkS9evXR6FQ5IwwFIZKpVLLpluvREZG8ssvv7BlyxbxbU4oVomJiWzatIljx44RHx+PTCbD0tKS7t27M3jw4Jw5FrGxsTg4ONCpUyfatWtXqL4uX77Mtm3bmDlzJj/99FOetwlTU1Pp378/p06dYtKkSVSqVOmNY9LS0pg9ezYKhQIzMzM8PDzw8vKiUaNGdO3atcj7JJVFCoWCQ4cOsX//fq5evUpwcHBOfRS5XI6WlhYKhSInCdTX16dBgwY0btyYIUOG4OXl9da2s7Ky0NXVLZHXIRSvgly/RfJRDHbu3En//v0ZMWIEDRo00HQ4qFQqFi9ejLa2Nrdu3SpyWWtBUJdRo0axa9cuZs6cWeh6GmfPnmX//v106dKFmTNn0rJlyzeSkKysLPbt28fcuXO5f/8+I0aMoGbNmrm2t3fvXnx8fBgwYADx8fGEh4cTERFBbGwsZmZmjBo1ivHjx78XtyefP3/OmjVrWL58OZGRkTg5OVGxYkWcnZ1xcnLCzs4uZ7WQJElkZGQQERFBWFgY4eHhPHnyhLi4ODw9PZk0aRIDBw7EwMBAw69KKC4i+dAwSZLo06cPp06dYsaMGQUuP61uZ86c4eDBg1y8eLHA+3AIQnF68eIFtWrVomLFiowYMaLQ7Vy/fp2jR4/y/PlzatSowaBBg7C1tc2Z1Lpx40aioqJwc3OjV69eOTvW/tfjx4/5888/6dmzJ23atHntuZiYGHx9fbl69SopKSl07tyZP//8Ezc3t0LHXVplZWUxd+5c5s+fj1wux8PDA29v7wLvRKxSqbh79y4+Pj7cvXsXKysrli5dSv/+/YspckGTRPJRCvz7Q3X48OGFXjWSlJTE/v376dmzJ2ZmZoWK49dff2XKlCn8+uuvhYpBEIrTtm3bGDRoUJFHCiVJ4sGDB/j4+PDo0SPS0tJyltLWqVOH5s2bv3MDuqysLBYsWICRkRFTpkx5623P7OxsgoKCOHHiBMnJycyfP5+PP/5YrbdJNSkgIIBhw4Zx79492rdvT6tWrdRyqykmJoZDhw4RFBREnz59WLZsGba2tjnPX7x4kSFDhnD+/HkqVqxY5P6EkieSj1Ji+/btDBw4kK5du9KxY8dCtZGWlsa8efOoVasWgwcPLtC5ycnJ/Pnnn5iZmXH9+nUx3CmUSv8eKZw6dSrW1tZqaVelUiGTyfKV+EuSxPbt2/H392f69OlUqFAhz3MyMzM5dOgQFy5coHnz5mzatAkXFxc1RK4ZkiTx888/8/XXX+Pg4MDAgQNxdHRUez+BgYHs2bMHXV1dtm7dSocOHQDw8/OjYcOGeHp64ufnp/Z+heJXkOt3+UjVS6kBAwbw/fffc+TIEc6dO1eoNgwNDenatSvXrl0rUE2E5ORkVq5ciUwm49ixYyLxEEotmUzGypUrsbW1ZcWKFYVaOpsbuVye78Tj8OHDXL58mb59++Yr8YCXG+T16dOHyZMnc/fuXZo1a1akomeapFKp+PTTT/nyyy9p06YNU6dOLZbEA8Dd3Z0ZM2ZQoUIFunXrxs6dO4GXFaLbt2+Pv78/x48fL5a+hdJDJB/F7JtvvmHmzJns27ePo0ePFqr+R9OmTXFwcGD//v35Oj4uLo6lS5eSlZXF6dOnqVy5coH7FISSZGNjw5kzZ9DT02Pp0qXExsaWSL+SJHHgwAFOnTpFr169aNy4cYHbcHNzy7lN07JlyzKXgEiSxGeffcaiRYvo27cv3bt3L/aqxiYmJowePZp69eoxcOBA9u7dC7wcLdbS0mLkyJHF2r+geeK2SwmQJIn58+cza9YsqlWrxoABA7CysipQG0+fPkVbWxsHB4d39nPlyhX279+PjY0Np0+fLpeT4YTyKzQ0lLZt2xIbG8uAAQOoVatWsfWVkpLCzp07uX79On369KFFixZFai81NZVly5ahUqm4dOlSrst4S6Off/6ZL774gr59+9K8efMS7VulUrFp0yZu377NqVOnaNGiBcuWLaNq1ao5t2OEskPM+SilTp06xciRI4mOjqZHjx40a9ZMbZPU4uPj2bFjB3fv3mXEiBH8/vvvRdrxUxA05cWLFwwbNowTJ07QqFEjPvjgA7XX1rh+/To7d+5EpVLRv39/tS2JT0pKYtGiRdSqVYtz586V+kmogYGBNGrUiNatW9O9e3eNxKBQKFi+fDnZ2dncvn270EuuBc0TyUcplpyczPTp01m1ahX29vY0a9YMLy+vQs/JCAsLw8fHh4CAAKysrFizZg1du3ZVc9SCULIkSWLdunV88sknaGlp0alTJzw8PIpco+bp06ecOnWKGzduUK9ePfr166f2pfAPHjxg6dKlLF68mI8//litbatTVlYWnp6eJCQkMG3aNI1uIBkTE8OCBQsYPXo0S5cu1VgcQtGI5KMM8PHx4ffff2ffvn3o6Ojg7u5OjRo1cHJywtLS8q0T5bKysnj48CFhYWHcvXuXkJAQHB0dmThxIhMnThSjHUK5EhYWxpQpU9i/fz8GBgY0bNiQZs2a5XtSKLx8zwQGBnLx4kXCwsKwsLCge/fueHh4FNvGibt27cLf35+bN29SpUqVYumjqGbPns2PP/7IJ598UuD6HcXh/Pnz7NmzhzNnzuTUWLl27Rrm5uZUrVpVw9EJ+SGSjzIkIiKCNWvWsHbtWsLCwoCXm8s5OTlhZGSEtrY2KpWK7OxsYmJiiIiIyClh3KFDByZNmkS3bt3EtvdCufbkyRNWrlzJmjVriI2NxdLSEkdHR5ycnHJ9r7x48SKnymZkZCQqlYoaNWrQvHlzatasWey3QzIzM1mwYAGNGjXi8OHDxdpXYTx//pyKFSvSpk2bUjNSqlKpWLp0KUZGRgQFBZGeno6JiQk1a9bk1q1bmg5PyAeRfJRRz58/x9/fHz8/P4KCgkhISCAtLQ1tbW0MDAxwdXXFy8uL48ePs3fvXv744w+mTp2q6bAFocRkZmZy5MgRrly5gp+fH/7+/iQkJLxxnFwup0KFCjg7O+Ps7EzNmjXVVj8kv65cucK2bdt48OBBqRv9mDt3LnPmzOG7774rVXvV3L17l5UrV+Lr60vTpk354IMP2L9/Pzt37qRv376aDk/Ig0g+yjmFQoGFhQUKhYLExESxKZPw3lKpVNStW5eMjAw++OAD5HI5Ojo6WFhYaPx9kZWVxffff8/EiRP55ZdfNBrLvykUCipVqkTFihUZOHCgpsN5jUql4qeffqJTp05s2rSJlJQUrKysMDQ0JDY2ttRP4H3fiSJj5Zy2tjaLFy9GJpOJ4Ujhvebn58edO3do164dFStWxMnJiQoVKmg88QDQ1dWlYcOGrFmzhvT0dE2Hk+PQoUNERkbi7e2t6VDeIJfLadq0KTt27CA6OhpjY2O++uorlEplzm1poXwoluQjIiKCIUOGYGVlhYGBAXXr1hXlctVs5MiRpKSk4OHhoelQBEFjtmzZgqWl5Vt3qNW0Zs2aER8fz4kTJzQdSo59+/bh5OT01s31NK1Ro0ZkZWVx7Ngx4OXE2ISEhDJTN0XIH7UnH/Hx8Xh7e6Ojo8PRo0e5c+cOCxcuxMLCQt1dvffEEKTwvrt69SouLi6l9r1ga2uLubk5165d03QoOa5du1ZqEw94OeHe1tYWf3//nMdK6/+vUHhqXyLx888/4+zszPr163Mec3V1VXc3giC85xQKBUFBQXTq1EnTobyTo6NjqRn5TUtL4969e6V+8qaDg0OpStgE9VN7OnngwAG8vLzo168ftra2uLu7s3r1anV3I/zLrFmzqF69uqbDEIQSde/ePTIyMkr1t3gAJycn/Pz8KA1z+69fv45KpSr1vzNnZ2eCgoJQKpWvPT5hwgQ8PT01FJWgTmpPPh4/fszy5cupWrUqx48fZ8KECUyZMoWNGzfmenxmZiZJSUmv/QgFo1AouH//Pt9//72mQxGEEvNqsvW79jsqDRwdHYmNjSUqKkrTofDgwQOAAhVp0wQ7OzvS0tJ49uzZa48nJycTEBDA2rVrNRSZoC5qTz5UKhUeHh78+OOPuLu7M3bsWMaMGcOKFStyPf6nn37CzMws56e0Z+Sl0fz58zE3N+fHH38kJSVF0+EIQol49bde2K0JSsqr+ErDezM9PT1nOXJp9mq1UkZGxmuPr1u3Dn19faZOnYpCodBEaIKaqD35sLe3f2Mnypo1a/L06dNcj//yyy9JTEzM+RHLqQpOLpezevVqsrKyGDt2rKbDEYQSkZmZiba2drGVSFeXV9WH/3sh1YTs7Gzkcnmp/51paWkBL2ul/Juuri7z588nNTWVmTNnaiI0QU3UPuHU29ub4ODg1x67f//+W5dJ6enpFXmzKAH69u3L3LlzS/VGVoKgTjo6OqhUKiRJKtUX01fzFkpD7RE9PT0UCkWp/529GtXQ19d/47mpU6eSkJAgko8yTu0jH5988gmXL1/mxx9/5OHDh/z999+sWrWKSZMmqbsr4T+++uorURVWeG8YGBjk7OVSmmVmZgKUijLmr3bwLU1Fz3LzKj5jY+Ncn//2229zTUyEskPtIx8NGzZk7969fPnll/zwww+4urryxx9/MHjwYHV3JQjCe6xatWrA/22SVlo9f/4cIyMj7O3tNR0KdevWBV4Wgny1U2xGRgaRkZGkpaXl3JbR0dHB1tYWKysrjYyQREREYG1tjY2NTYn3LZSMYtkKtXv37nTv3r04mhbyafny5YwbN04U5xHKrXr16qGlpUVYWFipTj7CwsJwd3cvFe/FGjVqoK+vj4+PD5cvXyb0aQQx0S+A3JcB6xsY4ezkiItLJby8vEpslUx4eDheXl55Jj4qlYqVK1cyYcKEEolLUB+xD3s5tHHjRiZOnMjjx49ZsGCBpsMRhGJhYGBArVq1Sv0k9ZDQUKysrDhz5gxt2rTR2FyL+/fvs2LFCrIVKoKCrmNk6YmB2Qc4O7ljaO6Otr4dcrkekqREpUgmI+kuaQkBRCUEEHLeh5MnT+LmVo0WLbypU6dOzqRQdZMkifDwcPr06ZPnsXPnzuXbb78lMzOTadOmFUs8QvEQu9qWUxUqVCAuLo4XL15gaWmp6XAEoViMHj2aY8eOMWPGDE2Hkqvk5GS++eYb9AwdyEyLpHr1WqxevYIWLVqUWAwpKSnMnDmTZcuWoatvhbnzCKxcRqNnVDnfbaiUmSRG7iU2ZAUpsZexsbFj8OCBuLi4qD3e58+fM3/+fA4cOECPHj3eeazY4bt0EbvaCvz1118oFAoGDBig6VAEodj07t2byMjIty7l17SrV68i19LFrdVV3Jqf5FmcGa1atWLatGmkpaUVe//nzp2jdu16rFq9AYc6C6jR4REOtecVKPEAkGvpYeE8ELcW56jW+hJpCgcWLVrMgQMH1D7h19fXFysrKzp27Jjnsa92+M7IyGDkyJFqjUMoXiL5KKc6depE06ZNS/1KAEEoii5duuDs7MzFixc1HcobVCoVFy5ewsyhPzp61hhbt8C12Snsa//MkqUrqV27Xk6VVnWTJInvvvuONm3akJDuSNXW17B1+xi5VtFXiBiau+PW4jx2Nb/n3LkL/LrwdxISEooeNC9XBvn5+TFmzJh8l2AYOXIktWvXLpFkTlAfkXyUY76+vpw7d07TYQhCsdHS0mLixIkEBQWRmpqq6XBec/fuXRLiY7CuPC7nMZlMC1u3KVRr7Ud0ohHezVty5coVtfYrSRLTpk3j+++/x67mt7g2O4GeURW19iGTa1Oh2udUbX2ZhCQ5f/zxJzExMUVuNyAggPT0dMaNG5f3wf9y69Yt9u7dW+T+hZIjkg9BEMq00aNHA3DmzBkNR/J/VCoVJ06cwtC8PobmXm88r2fshmvTE6Bbgw4dOhEUFKS2vmfNmsXixYtxqr8Yu+pfIpMV38e8gWltqjQ/S4bClKXLVpKYmFjotjIyMjh58iQ9evQolrkkQukikg9BEMo0GxsbvvnmG86ePVtq5n6cP3+e0NAQHOosfOvqFm1dcyo12o+k40b7Dp148eJFkfvdvHkz8+fPx6HOL1i7lsxWC7qGzlRudozUDB3WrFn/xk60+bV//34yMzNZvHixmiMUSiORfLwHMjIyqFKlitj3RSi3Zs6cSb169di2bZvGNxyLiori0KEjWFeehLF183ceq6VjSqXGe0lJlRg3fgJFWXz47NkzJk2egqXzAGzdphS6ncLQNaxEJa+thIU/LdSt3nv37nHp0iUWLlz41q048iMqKgoHBwexw3cZIJbavicqVqxIREQEYWFhpX4LckEojJs3b+Lp6Unz5s3p1auXRmJQKBT8+edSXsRCtdb+yLXzV1I9IWIPIdc+ZOvWrQwcOLDA/UqSRI8evTh19ipVWwegrWuV63EqZQYZSbdISwggPekWquxkQIVMywA946oYmrtjYOaOtq5FgWMAiLw1i9gnf/L5559hZ2eXr3MSEhJYtGgR7u7unDp1qkh1UFQqFdbW1qSmphIbG/vW8uxC8RBLbYU3bN++HZVKRd++fTUdiiAUi7p16/Lzzz9z9uxZjUy0TkxMZNmy5TwNC8eq8lQyUh6gUmbm61xzx/9h4diHCRMnExsbW+C+9+7dy+HDB7Gv8+cbiYckSaTGXSHUfxS3jthy/5/mRN6ahrb2TsztTmFhfxYD44PEPv6eRz5duXXEnke+HUiI2IOkKthqObua36BrWInt23fm6/iUlBRWrFiBkZERGzduLHIBtn/v8D1kyJAitSUULzHy8R5p1aoV58+f5969e1SvXl3T4QhCsfjiiy/4+eef+eCDD2jdunWx9ZOVlUVgYCC3bt0iLPwpCfFvTraUybUwMKuJgVkTLCsOxdCi0VsvsNkZL7h3qho/zvuhwEXTvJu35NZ9qOx98rXH0xICiLgxidS4QCwcTfAe7EzVZjY41DBFR//1CqUqpUTUkxRCAuK4vD2cEP9odA0rYF/zZ8ydBuQ7MUh8dpAnV/rx2Wef4ezs/NbjEhISWLFiBSqViosXL+bsNaMOderU4c6dO8TExIgiiyWoINdvkXy8R6Kiojh27BjDhg3TdCiCUGwkSWLWrFnMnz+f1q1b061bN3R0dNTWfnJyMmfOnOHK1cukpaZT2csKF09LnOuaU8HNGF0DbSSVRGp8FuG3Ewm7GU/wxXgSIpMxtKiLtesULJwH57oK5WnAaIzx5fHjB/kuX37z5k3q1auHS8MtmDu+LEmuUmbyIvhHoh4uwK6aGT1m1qBGK1vk8vyPLETeTeT4n/e5fiQCM4fuONVbgo5+3rdSJJWCe6eq06CuM4MG5X4L6d69e2zfvh0jIyNOnz6ds0mgugQHB3Pv3j2N3X57X4nkQxCE994ff/zBjBkzsLa2ZuDAgUWayPhKYGAgu3bvRCVT0GRQRZp96IKNS97zClQqiXv/RHFhYwh3zz3DxKY5Tg1Wo2fk+tpxqXFXeXC+JYcOHaJbt275imnChAls2LSf6u3uI5ProMhKIORKT9IS/ek0pSrtJ1RDS6fwd9ivH4tkx5c3ycowonKToxiY1c3znOfB84l58CM//PAdhob/N+8lIyODffv2cfnyZdq1a8fGjRtxdHQsdGxC6SKSD0EQBF4Wnxo+fDhBQUG0bt2atm3bFmoSYlZWFlu3bSUwIJD6nR3oO7c+Jtb5q8D5X/d9ovl7+nWSY5Q41luGpfOgnOckSeLR+SZ0aV+dHTu259mWJElYWdmiYz0Ch9pzUWYn8uhSR1TZ9xi/sTEuHuq55ZAck8mKYVd48UhBlWan80xAsjOec/uYC0OGDMHLy4vMzEwCAgI4efIkmZmZLFy4kLFjx2pskz2heIjkQ8hTaGgoR44cEVtRC+VednY2CxYs4IcffkCpVNKgQQO8vb1xcXHJ18UvMzOT1WtWEfo0hEEL3PHo6VTkmDJSstn1zQ389obhVG/Ra1VQI27ORC9rP2FPn+TZTmhoKC4uLrg22YNphc48vtSFrLTLfLy9KU61zYsc57+lJ2Xz54BLRIfIqdbKL89bMPdO1aBODWsMDQ25du0aGRkZ9OzZk0WLFqllFCq/bt++jZ+fH8OHDy+xPt9XIvkQ8lSv3st9JR49eoSrq2veJwhCGRcbG8v69etZunQpISEhWFlZUblyZZydnXF2dsbOzg5dXV3kcjlKpZL09HRCQ0PZf2A/CUlxTNjUjMoNc1/CWhiSJLFvzi3+WfeIih5rsKz4cnVGfNg2Qv1HEBMTg5XVu/vbvXs3ffv2pXbnJyRE7CXi5qdM3OJNNW8btcX5b8nRGfzU4R90DNvh0nDnO5O3J1cHkxi5F2trS8aMGcPYsWM1Urm0UqVKREREEBUVJSafFrOCXL+1SygmoZTZvHkz9evX53//+x+BgYGaDkcQip2VlRXTp0/n008/ZdOmTYwYMYLULHP8/YNQvWNJqUwOEzZ5qzXxAJDJZHzwTR3SE7Px2z8JI8sm6Bm7YWDuAbzc56RDhw7vbMPf3x99I3tUyjSe35tF86GViy3xADCx0WfAT3VYP+EQCeHbsXB+e00SQwsPMmKPEBoa+tq8j5K2Zs0aOnbsSP/+/Tl16pTG4hBeJ+p8vKfq1atH586dCQoK4sCBA5oORxBKjFwup0KFCgC4NjlMne6xVGt9mUpem3B2X4VTgyVU9FiDQ50FyORatBtfrdgu6DKZjD5z6mFup0dY0GgkSYmesRtyLR2Cg4PzPD80NBRdwyo8u/sdJtba9PiiVrHE+W/1uzhSv6sjz+7OfGcdED0jNzIz0zW+4V+HDh3w8vLi9OnTXLt2TaOxCP9HJB/vse3bt2Nra1uookaCUJalp6cDoKVjglyui6F5Ayyc+mFVaRjWLh9h4TyYxGfbsXU1ofPU4q2Jo2eozeCF9UiJuUJsyDpkMjnaOkY5Mb5LRkYGKkmLxMi9tP7IBT2jkhnM7jCpKllpL0h8fvitx8i1DHJi1LTdu3djbW1NZGSkpkMR/j9x2+U9ZmpqqpbNrAShrPm//V9yr6WRFn+V1Fg/Bv/aFG29/NXbKIoqja2p39WR+z6LsHL5CJlMm+zsvKuLSpJEdnoEWjrQqG/FYo/zFafa5lRytyY2ZDnmDh/kftD/nw+iUqlKLK63qVixItHR0ZoOQ/gXMfIhCMJ7R19fHwBJlXv585gnK7FwNKFGK9sSi6n5UBfSEx+SEvMPKmUGBgYGeZ6jr6+PUvGcep3sMDTTLYEo/0/TgU4kR/2DIish1+cl5csRj/y8DuH9I5IPIUdp+IYiCCXh1aqH7IznbzynVKSQGLmT5kMrFqgiaFG5NbHGprIZsU9Wk52Vkq+VGba2tiizUnH1KvlVHK9qiKQnBuX6fFZaKLq6elhYFG6TuuIkPus0TyQfAvBy9YuRkRG3bt3SdCiCUOzq16+PTCYjPfHNlV7pCUGolNnULMFRD3g5+bRWa2vSEy8C4O7ujiRJJCUlERISwsOHD3nw4AEhISHExcUhSRI2NjZIkoRzHfMSjRXAtrIJOvo6pCfkvlouLSGAunXrq7W0vTosWrQIY2NjMf9Dw8ScDwGAxo0bk5mZSd++fbl3756mwxGEYmVsbIxb1RrEJwRCpRGvPZeWEIi2rjYVqpqUWDySJBEbloYiS0Vm6gvkci0+6NWb5y+ek56elus5erp6GBi+vKVhV63kYn1FriXDtrIp6Sn3c30+OyWQRt1bl2xQ+dCoUSPS09Pp06cPly5d0nQ47y2RfAgAVK1alT59+rBr1y62bt3KoEGD8j5JEMqwxo082X804I3H0xOvY1/dDC3t4h0YTonL5NqeMB76xhASkEBqwss5ElbGtlSxqYGlsTWNK1hiZmCJsb4pWvKXE1+VKiXpWakkpMVxM9yfhAQ/dA0181GuZ6RFWtKbq3KU2YmkJgTj5TVdA1G9W9OmTWnZsiXnz5/n3LlzxbrzsfB2IvkQcmzatImDBw8yc+ZMkXwI5V779u3ZvGULmamP0DOqkvO4MjsRE5viuVUgSRKhgfH4bH5C4MFIUMmoZl+Hti6tqWJbA1ebapjom+W7PX0dA26G+yGpJCjB+SmvSCoJZG+uBooL+xu5XE7nzp1LPKb82LlzJw4ODnz88cfcvHlT0+G8l0TyIeTQ19dn//79uLu7azoUQSh2/fv3Z8rUT4h9shaHOj/+3xOSArmaV9dmpSvw3x+Oz8YQwu8mYG1mS+8Gw2herUOBko3/0td5WTk0LSG70BvdFUVqggIt7ddv+UiSRMLTlfTu3RsHB4cSjyk/bG1t2bNnjxj10CCRfAiv6dSpk6ZDEIQSYWBgwJiPRvHn0vXY1fwmpyiWTEufrDT1rIbITFNwcsl9fP4KISM1m7rOnvTt2J06jh7I1ZDhOFm6ABBxJ5EaLUt2gmxWhpLoJ4k41q392uMpMedJTbjHpEnLSzSegurZs6emQ3ividUugiC8t8aPH09WRhwxT1bnPKZr6MKLR3lXF81L8MUofulwjn9WPaGVaw/m91vDtA7fU8+5oVoSDwBbU3v09QwIu5mglvYKIvJuIpJKhaGFZ85jkqQkKvhbatasQ6tWrUo8JqHsEMmH8Fa//fYbV65c0XQYOa5du8aECRPo0qULLVu2pFu3bnz22WdidY5QaG5ubnz88cdE3fuWzJSHABiae5D4PJmUuNwLkOUlNSGLvz8PYPkQX6wlF374YCn9G43CxuTdW9AXhlwmx9W6Kg98YtTedl4eXopBrq2Hvsn/jXxEP/yTlNgrrF694p073pYmKpWK2bNn8+jRI02H8l4RyYeQq7i4OD7//HMGDBig0TgkSWLTpk00bNiQRo0aceTIEQwMDKhUqRLa2tps2rSJmjVr0q5dOw4ffvs+E4LwNj/99BOOjvZEXB+LJKkw/P+7yoYGxRe4rdunnzO/7VluHohmRPMpzOg8nwpmjuoO+TXNqrTjvm8U0SEpxdrPv6mUEhc3h2Hm0A+51su5JhnJ93kR/B3Tpk3D29u7xGIpqidPnjBnzhz69Omj6VDeKyL5EHJlaWnJ8OHDCQ0NZflyzdy7zc7OZvTo0QwbNgwbGxsOHjzI48eP2bNnD5s2bWL//v2EhYWxZcsWMjIy6N69O99//z2SJGkkXqFsMjIyYuPGdSRF+/IieD66RpUxMK3Ctd3h+W5DkiROLAlmzUeXqWxch7m9V9KyeqcS+fbf0LUFRgZG+G4JKfa+Xrn7zwsSIpOxdh0HgCIrnjD/D6lU0Zm5c+eWWBzqUKVKFbp06cL169fFDt8lSCaVsk/qpKQkzMzMSExMxNTUVNPhvNcUCgVmZi9n4icmJqKtXXLzkyVJYsSIEWzdupV169YxZMiQPI+fP38+s2bN4ocffuCbb74poUiLX1RUFGvXruXs2bPEx8ejpaWFtbU1vXv3ZtCgQRgaGmo6xHJhzpw5zJ49G8d6f4Ck4NmdGXx3qSOmtvrvPC8rXcHWzwMJPBRBL/fB9HAfiFxWst/rdl3bwKn7e5lxvA3WlYyKtS9FloqFPS6QFOOKW3MfVIokQq70Qkv5gIsX/qF27dp5N1LKJCUlYW1tjYmJCdHR0cjl4nt5YRTk+i1+w8JbaWtr89tvv1GlShUSEhJKtO8VK1bw119/sXHjxjwTD3hZmvrLL79k7ty5zJ49mxMnTpRAlMXr9u3bDB48GCcnJ3744QcMDAxwd3endu3aZGRkMGbMGBwdHfnkk0+IiorSdLhl3tdff80nn3xCxI1pKLOTQKbDP+vePQ8gPSmb5YMvcft4NBPbzqKXx4clnngAdG8wAFNdC7Z+HoRKVbzfJ08uDeb5/UQc6y5DkRnFk0udIeseJ08cK5OJB7zc4XvWrFm4ubmRlZWl6XDeC2LkQyh1VCoVNWrUwMPDg23bthXoXEmSaNSoETY2Nhw5cqSYIix+J06coE+fPtjY2DB58mRGjBjxxkZjT548YdWqVaxcuRILCwuOHj1KtWrVNBRx+SBJEl9//TU//vgj+qa1yEy5x6cHWua6d0p6UjbLh1wi5n4Gn3acS2Wb6iUf8L/cjbzOgqOz6PFFbdqNr1osfTzxj+PP/hexcZuJvmltnt+ahomxFqdPnaBevXrF0qdQdoiRD6FMO3PmDA8ePGDSpEkFPlcmkzFx4kSOHTtWZmevX7hwgR49etCyZUtu3LjBp59+musOp66urvz0008EBASgq6tL27ZtCQ/P/zwF4U0ymYx58+axZcsWdIhELpez+ZNAFJnK147LTFOwavhlYu5n8HmnnzSeeADUdKhP13r9ODj/Npd3hKq9/fDbCawcfgUDM3cyk+8Sem0IXbu04vatGyLxEApMJB9CgZTEkOSqVauoU6cOzZs3L9T5AwYMwNzcnLVr16o5suKXkpJC7969adasGXv27MHY2DjPc1xcXDh9+jRyuZwPP/ywBKIs/z788EPuB9/Fu1lzoh4m8tdUf1TKl4PEkiTx92cBRN5O4dOOc6lk7abhaP9PH6/htK7RhW0zAjm94oHabsEEX4jiz/6+KJVGpCXcQJZxke3bt7N7105sbUu2uFlJEbdfipdIPoR8a9WqFS4uLsXez4MHD2jRokWhVwoYGhri5eXFgwcP1BxZ8du8eTPx8fFs3LgRPb38l8t2cHBg8eLFXLhwgYCANzdLEwrOzs6Oc+fOMHPmF9w8/oyNk6+hyFJx4s9grh+N5KMW00vFiMe/yWQyhjabRLf6/Tk4/zZLB/oSE5pa6PYyUrLZMSuI5UN9yUrPws7alF9+/pGHD4Lp379/manlUVD16tUToznFTCQfQr41aNCAZ8+eMX/+/GLtJzk5GROTom0RbmJiQlJSkpoiKhmSJLFs2TJ69uxJxYoVC3x+9+7dcXZ2ZtmyZcUQ3ftJJpPx008/sWfPHu6ciuLHtqc4+ts9PvAYgqdLM02HlyuZTEYfr+F83uVHEu/BL53OsnfOTaKf5L8OSGpCFmfXPGR++7Nc3fHyVt7IEaMICXnE9OnTc70NWJ7UqFGD4OBgNm/erOlQyi0x4VTIN5VKhYWFBZmZmSQkJKCv/+4liHlRKpVkZmaiUqnQ19fPWcrboEEDvL29Wbp0aaHb7tSpEyYmJuzatatIMZakq1ev0rhxY44fP07Hjh0L1ca8efOYN28e0dHRGBkV75LL982pU6fo0qUrdR08mdz+6zLxrT8jO51DQdv558ERUtNTqdbMlqreVjjVMceplhmG5rrI5DIyUxU8f5BE2M0EQgLiuXnsGSoleLl409tjGP8EH+Pk7X0EBAZQt25dTb+sYpeRkYG5uTm6urokJCSIpbf5VJDrt9hYTsg3uVzOsmXLGDJkCL/88guzZ8/O97lxcXH4+Pjg7++Pn58f165de2N5qImJCe7u7qSkpHDkyBGePHmCq6trgePMzMwkMDCQ4cOHF/hcTXo1QbZp06aFbqNJkyakp6fz/PlzqlR5uU18UlISkZGRpKenI0kS+vr6WFtbl/i9+qSkJAIDA4mMjCQjI+O1WDw8PLC2ti7ReApq3br16OsYMLz5x2Ui8QDQ1zGgb8MR9HL/kGtPLuL76BRn/O+Tnpn73jXaWto4WVWiZ70htKjWEVMDcwA+8BjCjfCrjB41mkuXL6GlpeZtf4tIkiSePn2Kv79/zmdMRETEa39nNjY2eHp64uXlhaenJ25ubm9NKvT19ZkzZw4zZsxg48aNjBw5soRfUfknRj6EAjtz5gxt27bN8zhJkrh69SrLli1j27ZtZGVlYWJigpOTE05OTlhZWaGjo4NMJiM7O5ukpCTCw8MJDw8nNjYWgHbt2jFp0iR69OiR7yJnf//9N4MHD+bu3bvUqFGjSK+1JK1evZqxY8eiUqkKfXF7NXryySef8Pz5c65du8bDhw9zPdbe3h4vLy+8vLzw9vamTZs2av2Gl5KSwrZt2zh79ixXr159axyvODk50ahRI5o3b87QoUPVloyoVCqysrLQ1dUt9Os7cuQI3bp1Y3TLT/Gu2k4tcWmKJElEJT8jPO4JGdkZqCQVetp6VDB1xNGiItpaOrme9/DFXX46/Dm//fYb06ZNy3d/KpWKBw8eEBgYSFxcHBkZGWhra2NgYED16tVxd3cv9G3WmJgY1q9fz7JlywgJCQHA3NwcR0dHLC0t0dF5+VoUCgVJSUlEREQQHR0NgI2NDWPGjGHcuHFvvc2Z38864aWCXL9F8iEUi0OHDjF79mwCAwOxtramSZMmuLu7Y2lpma8La2pqKnfu3OHSpUs8fvwYe3t7pk+fzpQpU/JMQpo3b46enh6nT59W18spEdu2bWPQoEEkJSUV+sP49OnTtG/fHl1dXZycnHB0dMTZ2TnXRC8sLIyIiAjCw8NJSUnBxcWFSZMmMXLkSKysrAr9Ou7du8eyZcvYsGEDqampVKpUCScnJ5ydnXF2dn7jopCYmEhYWFhOPE+ePEEmkzFgwAAmTpxI48aN852M3blzB19fX/z9/blyxY87d2+TmfF/3/KNjEyoW68ejRu9/PbbokWLPCdRJycnU6tmLczltnzS4YcyM+pRHLZcWo7vkzPcvn3rnaOSz549Y+3atRw/cYrAgABSU5MBkGvpoKWlh0qlRKl4+f8ik8moUqU6zZo1YtiwYbRt2zbP3/GdO3f4+eef2bZtGyqVCnd3d+rXr4+zs3NOVea3SU1NJTw8nFu3buHn50dmZibdunVj5syZZWpPmtJIJB+CxsTHxzNlyhQ2b95MtWrVaN26NTVq1CjSN+rw8HAuXLjAtWvX8PDwYOPGjdSqVSvXYxcvXszUqVPZv38/PXv2LHSfmuDn50fDhg05cuQIXbp0KVQbP/zwA3Pnzs2piJofkiQREhKCj48PQUFByOVyPvroI3766acCvQejoqKYPHkyO3fuxNTUlMaNG9O0adMCT05MSUnh6tWr+Pr6EhMTQ4sWLVi7di1Vq+ZeOCsjI4MdO3awZOlyrl29jEwmx8i8BjrG7hiY1UNL2xSZXBdJlYkiK470xOtkpwSQmvjyNleHDp2YPHki3bp1y/V2wieffMLypSuY03sZ1iYVCvRaypv0rDRm759Ew6YeHD129LXnJEni/PnzLF26jD179iCT62Js0wkDcw8Mzd0xMHdHW/f/klpJlU1G8j3SEgJITwgkPe4cqYn3cHOrzuTJExgxYsQbiYRCoWDBggV89913mJiY0KxZMxo3bpyvJem5yczMxM/PD19fXyIiIpg0aRI///yzmC9VSCL5EErE8+fPmTlzJuvXr0cul3P48GFGjx5NcnIyvXr1olGjRmr9lhgSEsK2bduIi4vj+++/Z8aMGa8lNcuWLWPy5Ml8+umn/Prrr2rrt6RIkoSHhwfOzs6F2uAqOzubihUr4urqWujdiFNSUrh06RKnTp3CxsaG9evX0759+zzP27lzJxMmTCAzM5MePXrg6elZ5L2AVCoVd+7cYf/+/SQnJzN//nw+/vjjnP9zhULB77//zo8//UxCfCxmdu2xqDgWE9t2aGnnffFQZCWQ9PwQ8U9XkRxzFQcHZ376aS5Dhw7N+btNSEjAwcGRDjU+4AOPwUV6PeXFlUf/sPLcL9y8eZM6deqQmZnJuXPnmDFjJjduXEdLxwQdAxf0jN3QM3bD0MwDA3N3dA0rvfPzQJIkUmMvEhuyisTIvVhYWrJ61Qp69+4NvNxuYNiwYQQFBdGmTRs6d+6cM4JWVCqVigsXLnD48GEcHBzYsGEDrVq1ynn+yZMn/Pjjj6xevVot/ZVXpSr5mD9/Pl9++SVTp07ljz/+yPN4kXyUHd9//z3fffcds2bNwt7eno8//phatWrRv39/zM3Ni6XPrKwsjh07xtmzZxk4cCDr1q3j9OnTLF26lKNHjzJt2jQWLlxYZmenr169mnHjxvH48eMC11TZs2cPffr0Yfr06Tg5ORUpjtjYWLZv3879+/cZM2YMixYtynUkJS0tjZEjR7Jjxw7q169P3759i7xM+r8yMzM5dOgQFy5coHnz5uzatYu4uDiGDhtBgL8fVi5jsKnyMXrGhS/2lZYQQPTD34kP30nXrt1ZvXplTu2UTz/5lAUDNmBuWL6Xl+aXQpnNjF2j6NStAxYWFmzYuJ6M9ExkcrBxNcOsgh5yLRnZGSqin6SRHPOyzoiBmRuWFSdiWXEwWjrvvjWSlR5O5I1pJDw7xMCBg+jZswcjR47E0tKSAQMGFFu9oejoaLZv386jR49YsmQJEydOBGDMmDGsWbOGpUuX5jwmvKnUJB/Xrl2jf//+mJqa0qZNG5F8lDMqlQpbW1vi4+NRqVS0atWKDz74oETuiQcFBfHXX3+hr69PWloaHh4efPbZZ2W+wmdqaiqurq5Ur16dkydP5ns5c3h4OI0aNcLY2LhQZelzo1Kp8PX15cCBAzRt2pSDBw++llgkJibSrVs3/P396d+/P+7u7sX6f//w4UM2b96MlpYWSUkp6BhWwrH+Kowsm+TrfElSkRp7kdS4q6Ql+JOVEogiOwlJpUCupYeuYWXkWlakxfugpyuxYf1aZs36CnNlBSa0+aLYXldZtNd/E4eu78DIQodmQ1yo1boCDrXM0NV/87ZVYlQGYdfj8dsbwY3jkchkuti4Tce22gzkct239iFJEvHh24i8MRmlIo06deowdOhQdHXffo46qFQq9u/fzz///MP8+fOZOXNmzg7fkiSRlJRUojt8lyWlYm+XlJQUBg8ezOrVq7GwsCiubgQNksvlDBo0CJVKhZubW4klHvCyFsjo0aPJyMigc+fOXL16tcwnHgBGRkYcOHAAPz8/evbsma9CaY8ePaJ169ZkZWUxdOhQtcUil8tp3rw548eP5+rVq3To0IGUlJeFqlJSUujcuTNBQUGMHz8eDw+PYv+/r1KlCrVq1SI2NhbzimNxa3klX4mHIiuWqAe/E3ymJg8vdiT2yQ9YOfrQqK8WHSdXoPM0J9qMsaRqkwh09HxQZCWSlppMv379ePDgPm2qdy3W11UWtarRBRnQaUo1un5aExcPy1wTDwAzW33qdLBnxDIvvr3UkdYfOfPi/o88vNCUtITrb+1DJpOhrWOBUpFBA3d3RowYUeyJB7z8u//ggw/o2LEjX3zxBUuXLs3Z4Ts9PZ0xY8YUewzvg2Ib+Rg+fDiWlpb8/vvvtG7dmgYNGuQ68pGZmUlmZmbOv5OSknB2dhYjH2VAUFAQDRs2xNHRkQ4dOlCnTp0SjyEgIIC//vqLJUuWqO0bf2lw9uxZevfujampKRMmTGD06NFv1OW4f/8+y5cvZ+3atRgaGjJmzJhiq5Xx9OlTli9fTtOmTTl06BC9evXi4sWLTJgwoVDVWAvj4MGDnD59Goc6C7B1+zjP4yVJIu7pRp7dno6kSqdBdwe8h7jg4mGJXP72RCk1Pgu/vWGc3/CY2Kep1HH2YIT3VCyNSncdkpK25PQcnuncZcaJ1gVOPMNuJbDlkyBePEqhkucmzB17v3FMZuoj7p/1okb1KowaNbLEa4tIksS+ffv4559/OHv2LK1bt6Zly5b06dOHqVOnlmgsZYXGb7ts27aNefPmce3aNfT19d+ZfHz33Xd8//33bzwuko/SLSsrC09PTxISEpg2bZpGhyF37txJQEAAt27donLlyhqLQ92Cg4P5+eef2bp1K0qlkjZt2mBnZ4dSqeTJkyf4+vpiYmJCo0aNaNu2bbHP0H/w4AHLly+nQ4cOnDhxgvHjx1O9esnsbXLhwgV2796NQ52fsXXL+4M/Oz2SsKCxJL04RcM+Fen5ZW1MrPO/Vw68vPjcOvmcXV/dICsJPmw8Hu+qeU++fV/cjghk4bGv+XhHc6o0KnhipshSsfmTAIKOROLitRlzx//lPCdJKh75dEBHGcwXX3xeoH2O1EmlUrFs2TKys7O5ffu2WAWTB43edgkLC2Pq1Kls2bIlX/erv/zySxITE3N+wsLC1B2SUAx+/PFH7t69y8CBAzV+/7NHjx4YGhoyatQoVCqVRmNRp+rVq7Nu3Tru3LmDvr4+vr6++Pj4cOXKFVJSUhgyZAizZ8+mR48eJfKhWLVqVZo2bcqJEydo0aJFiSUeL168YP/+g1i7TshX4pGZ8oiHPi1RKX0Zs64Jgxd6FDjxgJfD/nU72jPzVBvqdLNm7fnf2RewmVK2QFBjajrUp4K5Pb6bQwp1vraunGGLPXHv7kCo/zBS4y7nPBfzeDkpMT58+OEAjSUe8PIWzIABA3j27BkzZ87UWBzlkdqvGv7+/kRFReHh4ZHzmFKp5Pz58yxZsoTMzMzXhs/09PQ0+sclFFxwcDDz5s2jffv2b6yqUCgUaGlplWghJn19fQYMGJBT2GrUqFEl1ndJ+OGHH1AoFMyYMUOj86dUKhURERFYWFjQrVu3Euvz763b0dZ3xKH2vDyPz0p7yuNLHTCxTmHS1uZYOBgWOQZDM10G/+ZJhaomHPh5K3KZnJ7uZX9+UVHJZXK8KrXg/MWDSJJUqPe8XEvGkN88iA31ISxoFNVa+aPIjOLZna9o3rz5W2u7lCQbGxu6devG0qVLGThwIM2bNwdeznsqbH0RoRhGPtq1a8fNmzcJCgrK+fHy8mLw4MEEBQWVuj0BhIJbunQphoaGdOjQ4bXH09PT+fnnnzWypXu1atWoW7cuv/32W7n6Zurr68uGDRvo1auXxiduBwUFERISwuDBg0vsC8P58+cJDXmCk/sa5NrvTiQkVTYh1/6HoXkyH+9oqpbE49/aT6hGt89rsi9gC/4hPmptu6yqYluT5Lh04sLTCt2Glo6cD39rQHb6U57d/Z7ox8vR1dWiR48eaoy0aFq0aIGjoyO//PIL8LIgoLm5ebHv8F2eqT35MDExoU6dOq/9GBkZYWVlpZEJiYJ6paSksGHDBho3bvzG7RYDAwPs7e05ePDga5OIS0rz5s25ffs2Pj7l58KwePFiKlSoQKNGjTQdChcvXsTNzS1nw7riplAoOHXqLJaVRmBslXfZ6xf3fyY98Q6jVnpiViF/1V0Lqv3EatTtYM9fl5aQnJFYLH2UJZVtXt56Cw2KL1I7dm4mdPmkGtGPFhMXuo6mTRqVqhFxuVyOt7c3hw8fJjQ0FA8PD4yMjPjuu+/IyMjQdHhlUtmsxCRozN9//01qaupbd17t2bMnycnJnDlzJuex6OhoTp48yd69e9m1axeHDx/mzp07ap+fUbVqVSpUqMDSpUvV2q6mPH/+nD179tC0aVONF02LjIzk8ePHOUPOJeHmzZukpCRiU2VynsemJ97kxf2f6DC5Ks51zIstJplMRr959VFqZ7Ll0opi66esMDUww8bMltDAoiUfAM2HuaKrr4UyO4lmzZqpITr18vT0RE9Pj1WrViGXy1mxYgWZmZkMGTJE06GVSSUyU/DcuXMl0Y1QAtatW0etWrXeul+HtbU1bdq04dq1a9jb23P58mXu3buHsbExjo6O6Ojo8PDhQ06ePIm1tTVNmzalSZMmapkwKZfLadKkCbt37yY5OVntlTZL2tq1a5HJZKVi1MPHxwdTU1Pq1q1bYn1euOCDibU3Bqa18zw26sECLByM6Di5+CfBmtrq0/OrmmybeZ4PPIZgZ+ZY7H2WZpWtaxIacKvI7egb69ConxNXtoVp/BZjbvT09PDy8mLVqlXMmTOHQYMG8cMPP3D48GFUKpXGvyCUNeK3JeRbVlYWgYGBeU4Ca9OmDU5OTmzYsAETExP++usvoqOjuXfvHjdv3iQyMpLLly/TpUsXjh8/zsKFC3n27JlaYqxevTrZ2dkEBgaqpT1N2rx5M/Xr18fQUL1zFwpKkiRu3LiBl5dXic3ZiomJ4fHjh1i6jM3z2OyMFyRE7qHlyIpo65bMR5pnL2eMzPU5d/dIifRXmrlaVyXiToJa5lo17leJ7CwFoaGhaohM/erUqUNMTAwPHjwA4NixY4SFhYnEoxDEb0zIt9u3b5OVlfXOolJKpZItW7YQHBzMzp07uXr1KkOHDn1t2bVMJqNx48b89ddfPHz4EAcHB5YsWcLz58+LHGOFChXQ1dXF39+/yG1pUnJyMsHBwbi5FX6/EnVJTEwkOTm52PbTyM2ri4+Jbd51NeKebkRLBxr1LZliZwA6+lo0GejMxUcnyFKU/Pym0sTSyJbsLCVpidlFbsuhpinaulqltuTCq9V9rz5fKlWqVGyF/co7kXwI+ebv749cLsfR8e3DzAcPHuT+/fscPHiQvn375tmms7MzFy5coFKlSqxevbrIE1W1tLRwdHQs88lHUFAQkiTh7Oys6VAIDw8HKNFYwsLC0Ddyfm0L9rdJiTlFjZY2GJoVf+ntf3Pv7khaRhqhsY9KtN/Sxtzw5S2SpBdFn3ippS3HsaZZqU0+jIyMsLGxKfOfL6WBSD6EfLt+/XrOyEJuUlNT8fX15ZtvvslZhnv58mUOHjz4znbNzc3Zv38/cXFxalmm6+joqJHlvurk5+eHrq4uFSpU0HQohIWFYWxsXGw7Fefm6dNw9M288jxOkiTSEwOpWN+8+IP6D/vqpmjraBES87DE+y5NzA1fJohJUepZ9WFX3Zjo2Ci1tFUcHB0d8fPze+PxBQsWsGDBAg1EVDaJ5EPIt4SEhHdODL169SqSJDF+/Picx5YuXcpHH31EYuK7lyW6ubnRtWtXfH19i3zv2MjIKM/+Srtbt25hb29fKuriREVFYWdnV6KF456/iELfNO+l+Vlpj1FkJhfrCpe30dKR41DdjJCYByXed2lirP+yjHZqfJZa2tM10CI7u+i3cIqLqakp0dHRbzz+yy+/MGvWrHxtBimI5EMogIyMjLeWUpckiUuXLtG3b9/XNkCbP38+KSkpzJ07N8/2J02aRFhYWJEnm2lra5Oenl6kNjQtJSUlX9sTlISsrKwSr7mQnZWJlo5Z3selRwBg6ayZSbmWlQyIT4vRSN+lhZb85WeCUqGepfOSindu/KdpOjo6uX6+rF+/HoVCwYABAzQQVdkjkg8h37S1td9amyMrK4uoqKg3ym47Ojry5ZdfsmjRIu7fv//O9jt16oSWlhYRERFFilOlUqGjo1OkNjTtv9sQaJJSqSzxWFQqJcjyrgSgUr2cI1RSq1z+S0dPjkJSzzf+supVmiCpqWxPakIWerqlI/HOjSRJua5u6d69Ow0aNODYsWMEBQWVfGBljGZ3BBPKFAMDg7cOh776JpDb+vzPPvuMhIQEzMze/U1WLpdjYmJS5FGLrKwsDAyKp8JlSdHR0Sk1m+Rpa2ujUChKtE8tLR0kVd4XdZns5fwjlUIzJfUV2Sq0ZWU70S0qpaQEQEtHPaMVEbeSqO7UQC1tFQeFQvHWUck9e/YwYMCAUlmnpLQRIx9Cvrm6uhIVFZXrnIxXIw25lRo2MDDg119/zdfkyYyMjCKPWkRHR1O5cuUitaFphoaGZGWVjm/Uenp6JX4bS9/AAEXWm/fV/0tbzwaAhOeauc2W+CwTEz1zjfRdWqRnvdzXRc+o6N9lM5KziQ5JfmPDytIkLi4OBweHXJ9zdXXl6tWrVKpUqYSjKntE8iHkm6enJ6mpqcTFxb3xnIGBATo6Oty+fbvQ7T958oSMjAxMTU2LEiYRERF4eeW9UqI0q169Os+fPy8Vm+TZ29sTGRlZoiMxTo72ZCTkXShO37gacm09wm8lFH9Q/6FSSUTcTqSSVcnsdVNaJaa9/DxQx346Dy/HIEmU6ot3efh8KQ1E8iHkm6enJ0Cua/DlcjkeHh6sXLkSpVL5znZSUlJyfXzlypUYGhpSq1atQseYkpJCbGxsTqxllaenJ2lpacTEaH4yo7OzM5mZmSUai7OzE+mJAXkmXzK5Nobm9Qi7WfKrm6Ifp5CZnk0la80XgtOkhP+ffJjaFn1S8oVNT7C1s8HOzq7IbRWHpKQk4uPj8518qKNwYnklkg8h3ypUqICDg8NbV6M0b96ciIgIDh8+/NY2du7ciaur6xtL1TIyMlizZg1eXl5FWlnxKray/s3kXYleSXs1BF6SsTg7O5OdGUd2+tM8jzW0aMndczFkZbw76VW3W6eeo62tjav1u7cbKO/i02KRycDYqmjJR8zTVIIvROFoX3pvubx6D+Tny83gwYNxcnIiKqr01izRJJF8CAXSvXt3AgMDcx3dcHZ2xsXFhZkzZ5KQkJDr+a1btyY7O5vZs2e/9vh3331HbGws3t55b53+Ln5+fri5uZX5OR/W1tY4OTkREhKi6VAwMjLC2tqaR49KrpKni4sLcrk2CZH78zzWqtJI0pMyCDpctFVSBaFSSvhuCqWRS0sM9YxLrN/SKCzuCbYupmhpF/5yIkkSB+bdQUtLh+iYN2/rlhbXr1+nYsWK+botNGbMGJRKZb4qPb+PRPIhFMiECRNISEjg1q3cd7EcNGgQYWFhdO/enfj4N7fZtrGx4dtvv2XVqlXcuHEDSZKYP38+P//8M7169SpSRc+kpCRu3LjB5MmTS7QgVnHp27cvgYGBpaLgkoeHB/7+/rlOKC4OxsbG1G9Qj7iQFUh5rOHUM3bDtEJbzq8LKbE5MnfOPic2IoU2NbvlfXA59zj2LpU8zYvURuChCG4cj8Cy0iTCw0JzSvqXJqmpqQQGBjJx4sR8fb60bt2aZs2aceHCBXx8fEogwrJFJB9CgTRo0IAmTZrg6+ub6/MVKlRgzJgxXL9+nYYNG7Jhw4Y3VkpMmjSJqlWrsnjxYvr27cuXX35Jp06daN26dZFiu3z5Mjo6OgwfPrxI7ZQW48ePJzk5mevXr2s6FJo1a0Z2dnauZaWLS4vmzclIeUxK9Jk8j7Vxm0747Tgubyv+3VAz0xTs/e421exrUdmmerH3V5plKjIIiwmhUoPCLy2NDUtl59e3MHf8AIfac9E1sOfixdJ3sb5y5QoymYxRo0bl+5zdu3cjl8v5448/ii+wMkokH0KBTZ48meDgYJ4+zf1+vIuLC1OmTEFXV5eRI0fi6OjI1KlTWbx4McuXL+eXX35BS0uLtWvXcuHCBQYPHkyXLl2KNFqRkZGBr68vgwcPLtE9SIpT9erVadeuXan41mRubk6dOnXw8fEpsdEFV1dX7OwciXqwIM8+TWzaYllpOHvn3CE+Iq1Y4zr8yx2SXmQy0ntauRhhK4rQmEeoVKpCJx8Jz9JZOugKkqoCTvX+RCbXxrLSGPz9A0hOTlZztIWnUCjw9fVlwIAB2NjY5Ps8Ozs7Hj58yM6dO4sxurJJJB9CgfXv35/69euzbdu2txafsrW1Zdy4cXz11Vc0aNCAzZs38/nnnzN58mR++eUXZDIZ48aN48svv6Rhw4ZFjmn//v1kZ2fz9ddfF7mt0mTSpEk8efKE4OBgTYdCixYtePbsWYnt6CmTyejVqzvJ0f8QF7o+z+Md6/wCMis2TAogM614iqIFHYng/IbH9PEYQQWzt+/u/L54HB2Mjp429jUKvjw+4k4if/zPh9R4E1ybHM+p2WLtOhbkRuzctVvd4RbasWPHSExMZMaMGQU+19XVtRgiKvtEhVOhwHR0dPjrr7/w8vLi+PHjb5RU/zcbGxt69epFr169gJcTy9T9bTE4OJhLly6xfPlyXFxc1Nq2pvXq1YvWrVuzY8cOPv/8c43u91K1alU8PDzYtWsXVatWzbNirTrUrFmTxo0b4xcwAxPb9ugaVnzrsVo6ZlTy2sFj306sHn2NMWsaqqXw1Ss3Tzxj0xR/GldpRfvaPdXWbll2M+IaLu4WBZpsqsxWcXLpfU78eR99kxpU8d6PrqFzzvPaetY41FvMjWtDCAwMxN3dvThCz7enT59y5swZvv/+e+rUyXuzQyF/xMiHUCj16tXjm2++4fTp0wVakfHfxCMrK4uTJ08WehfatLQ0tmzZgkwmY82aNaxfv77Mbyr3b3K5nHXr1pGens6BAwc0HQ6VKlUiKyuLnTt3ltjtl169emFkoENY4Eeo8ii5bmTRENfG+3nil8zi/r68eFj0oXuVUuLMygesH38Vd+emjG75KXKZ+Oh8lhDO3YgbNOznnPfBQGaqAt+/Q/i58z8cX3wfmyozcGt5+bXE4xULx76YO/Rm5849Gr39kp2dzdatW6lfvz4zZ84sUluRkZG0atWqyBtnlhfiHSQU2hdffIGXlxdr167lxYsXhWpDoVBw7tw5Dh06VOBzMzMzWb16NXK5nNWrV2Nra8vo0aOpWbMmd+7cKVQ8pZGrqysLFizA19e3SBVkiyomJoZjx47RqlUrbt26VWJzUQwNDRk69EPS4nx56j8CSfXuWyrG1i2o4n2a2DAzfulyjjOrHqBSFi5RevEwmUX/u8jB+XfoWLs341vPRFsuBowBzt07glwm59TSRxz46RYBB8OJfpJCRnI2WRlKUhOyCAmI48Jfj9nymT+zG51gx1c3yExrTtWWPtjX+g65XPet7TvWX0S2So9Vq9aW2Cqrf1MqlWzevJnY2Fg2btxY5G0fIiMjOX/+PH369FFThGWbTCoN9Zv/JSkpCTMzMxITE4tcZlsofjExMbRo0YIXL14wfvz4Qi2V9fX1ZceOHXzyySf5LquckZHB2rVriYyM5MyZMzRq1AiA+/fv07dvX8LCwvjnn3+oV69egeMpjVQqFb169eL48eN4e3tjaGiItrY2xsbG1K5dGyMjo2LtPyEhgSVLlmBmZsa1a9f49ttvWbJkCUOHDsXDw6NY+37lxo0brF+/AVO77lTy2oRc691FrVSKNJ7d/Z7ox4sxtzOi+dCKNBlQKc9iWJIk8cA3hvMbHnH79HOsTGwZ2+Jz3CoUvvJueZOpyODTrUNJz0pD36wukjKGzJRnuR4rk2tjYFYTY5vOWLt8hK5h/kunpyUE8uhieypVrMDYsWNL7LajUqlk69atBAYGsnfvXnr06KGWdjt27MjJkyc5cuQIXbp0UUubpUlBrt8i+RCK7NmzZ7Rr147w8HBGjBhBlSoF2+tCpVLx66+/oqOjw9SpU3Pdrvrf4uPj2bBhA3FxcRw5coTmzZu/9nxiYiJt2rQhKiqKwMDAAs1OL40yMjLYsWMHS5Ys4dq1a2hpaWFmZkZ2djbJycno6uri7u5O8+bNcXbO3xB4QcTHx7NixQq0tbXx9fWlYsWKqFQqRowYwZYtWxg4cGBO8lfcTpw4wZEjxzC0cKeixzr0TfJe6pqWEETM46UkRO4AFDjWsqBSfROc6phhbKmHXFtGVrqSqEcpPL2RQGhQIsnRaWjraKEl06ZV1S4MbDKm+F9cGXLh/gk2XFzM+PHjWb58Oaa2ralQ80eU2bEosxKQpGzkcn10DSuhb1onz0QxN5KkJPrRUp7f/RoZSpycnPjoo48wMTEphlf0fzIzM9myZQt37txh06ZNDBw4UG1tJyQkYGNjg6WlZaFHi0szkXwIJS42NpYPPvgAHx8fWrZsSbdu3dDVffuQ6n89efKE+Ph43N3d3zohVZIkLl++zIEDBzA3N+fQoUNv/dYdGRlJ1apV+fLLL8v0CpjQ0FC6du3KnTt36NixIxMnTqRbt25oa78c+n/x4gVr165l2bJlRERE0KZNG3r06JFnApdfjx8/ZtOmTZiamnL69OnXEkulUsn48eNZs2YNbdu2pUuXLkUemn4blUrFxYsXOXjwIA0aNCAmNoGnT59Sofq32LhNRSbTyrMNRVYs8eE7SYu7QkbKNdITHgH/9/GnrWeCXNuMrNRwatSoxb59e1i5ciVrVq7j134b0NHO/99zeSZJEnMOTaOmZ1WOHDnCiRMnGDnyI6Ji4rGrMQ9Ll5HvvJ2SH+lJt3l2czLJMZeZMmUK/fr1o3fv3qSnp9OnT59im4T68OFDtm/fTnJyMrt27XrnZPrCmjdvHhkZGcyZM0ftbWuaSD4EjVAqlSxatIhZs2ZhZmZG3759qVq1qlpWt0RHR7N7927u3bvHyJEj+f333/NcbTFmzBiOHTvGkydPci7WZUloaCjNmjVDT0+Pffv2vfMWklKpZPHixXz22Wc0bNiQQYMGFen3npWVxeHDhzl//jyNGjViz549uW4jLkkSv/zyC7Nnz8bKyoqBAweqfUfS6Ohotm3bxqNHj5g0aRILFy5EpVLxzTff8Ntvv2FoXgfLShOxcBqAXNsw3+2qlOmoFClkZ8aQ+GwfCWHrUWW9YN68uXzyySdoaWlx//59qlevzkctP6NZ1bZqfV1l1ePoYOYe+JRDhw7lXJyTkpKYPn06q1evRs+wAuZOI7FyGZ3rZNK3kVTZJD47SFzoSpKi/sHFpQp//bWeFi1aABAVFcWECRPYs2cPDRo0oE+fPmobBcnMzOTQoUNcuHCB5s2bs379etzc3u8NAwtDJB+CRgUHBzNixAguX76Mk5MTzZo1w9PTs8AbxqlUKu7evYuPjw93797F3t6etWvX0rlz53ydHxQUhLu7O3v27KF3796FeSkak56ejqenZ07xtPzu8rl582aGDh1K9+7dad++fYH7ValU3Lt3j/379xMfH8+8efNyLsTvcuvWLYYPH05QUBDe3t60atUKa2vrAvf/b8nJyfj4+HDmzBns7e3ZsGHDG1VwL126xJy58zh29Ag6umaYOg7B1K4ThuYeaOtavbXt7PRI0hICSHx2gMTIHchQ0q9fP2bP/oYaNWq8dmznTp25fvUW3/X6E13tou/cWpZJksRvJ74hXSeR+w/uv/F3cfv2bZYvX86GDX+RlpaKiXVT9Ew9MTB3f/l/olcBuZY+kqRApUghI+k2aQmBpCcGkhHvQ0bac5o2a87Hkyfyv//9L9fPjB07djBx4kRSUlLw8PDA29s7Z/PDgoqJicHHx4dr166hUCiYP38+H3/8sdpGDt83IvkQNE6lUnHy5EmWLl3K4cOH0dPTo1atWjg7O+Ps7IyTk9MbHyxKpZJnz54RGhpKaGgo9+/fJyEhAXd3dyZPnszAgQMxNMz/N1sANzc3evXqxcKFC9X58ordxo0bGTFiBNevXy/wpNkpU6awbt06vv3223zf+kpNTeXq1atcunSJqKgomjRpwvr169+4EL+LQqHg119/5eeffyYhIYGaNWvi7e1NzZo180xeXpEkicePH+Pj48ONGzfQ0tJi3LhxzJs3D2Pjt2/g9uTJE1auXMnqNeuIi325Y7KhSSV0jOsi1zZFJtNBUmWhVMSRlXydjNSXW507OVVi4sRxjB49Gltb21zbvnfvHvXr1addzZ70azgy37+P8ujC/ZOsv/AHx44do1OnTm89Ljk5mb///puTJ09x9Zo/YU+fvPVYQ0NjGri707RJI4YOHUr9+vXzjCM6OpoVK1awfPlynj17hqurK/Xr13/rZ8sr2dnZREZGEhYWxu3bt7l79y7m5uaMGjWKyZMnl3hBsJSUFBISEgqdPJU2IvkQSpXQ0FBWr17NyZMnuX79OpmZmchkMkxNTdHR0UEul+dMnnxVMVVbWxuZTMaECRNYtGhRoftu2rQpNWvWZN26dep6OSWicePGmJubc/z48QKf+/jxY9zc3KhSpQpeXl5UrFgRS0tLdHR0kMlkZGdnk5SURFhYGOHh4YSHh+fUaunXrx8TJ06kadOmhb5tk56ezvbt21myZAn+/v7o6enh6OiIk5MTTk5OWFlZvRZLYmJiTiwRERGkpqZSpUoVJk+ezPDhw7GwyH/pbpVKxaNHj/D398ff35+bN2+RnJxKZlYW+np6mJub0qBBfTw9PfH09MTZ2Tlfr3PevHnMnv0t3/T4nUrWBZtQXRolpScSGvuAF4mRZCuzkMlk6OsY4mThgrOVK3rab64qSUyL4+u9E+jdtzebNv1VoP7i4uIICgoiLi6O9PR0dHR0MDAwoHr16lSrVq3QIw0KhYKDBw+ybNkyLly4kPPZYmdnh7m5+Wt/Z8nJyURGRqJUKtHW1sbT05Nx48YxcOBADAwMCtV/UahUKkxNTalUqZJGl9Crk0g+hFJLoVBw584d/P39CQ8PJyMjA6VSiYGBAVZWVnh4eLBu3TrWrl2LoaEh33zzDV988UWh+/Py8sLT05OVK1eq8VUUr4CAADw9Pdm3b19OZdiC6tKlC+fPnyc9Pf2dxcCcnJzw8vKiefPmDB069K3f/gvL39+fs2fP4u/vz7Vr13j06P+1d+dxUdX7H8dfDDDDooJAgCwKKuaCgQIuaJqmaamZV9NM0/TaolippbaZlRWaqeVKLmXlmqVZ9tPEjTIXFETFldRYBZRdduac3x9eudcUZZmZMzN8n48HfzBz5nzfZ9Aznznnu1y663aenp4EBwdXZunRo4dRXfouLy8nqGMQBZnFvDNgIZaq6l3JMSZXc5PZf34nsckHyc7PAsDK2hK1jRWyLFNaVI4kyahUKjydmtKtRR+6+fXBXnOzX8XyfeH8nX+e8xfO4+xc9S0tpfzvuSUmJoa0tDSKioqQZRk7OztcXFzo2LEjQUFBPPTQQ4rOFnzLkCFD+Omnn9iyZQvDhg1TOk6dieJDMGkVFRU0btyYoqIixo0bx+rVq2u9Hw8PD1544QU+/vhjHafUn2XLljF16lSKiopq3VF2zZo1TJgwgaysLM6cOUNqairFxcVIkoStrS0uLi506NDB4MOQ8/LySE9PryyKbhWdpjAc+tixY3Tp0oUhHZ9jQMBwpeNU29/XE/j++BrOp56mQWMbgoZ44tPRCe/2jjg3tau88lNRJnH1Yj4pp3O5+Od1Tu1KQ2VhSWjzR2nh2oav/ljExo0bdTr0tL4rKiqicePG2NnZkZWVZVQFd23U5PPb9IYACGbPysqKxYsXM378eDZt2sTnn39+z/v9VdmxYwfXrl0zuRkFc3JycHR0rNMInVvfTLVabeVoAWPg4OBgkDVh9CEkJITXX3+dBZ8toPkDD9LG4/59E5RUri3nlxMb+b/TW3Bv2YjRnwcR+LgHVpq7X7WxUqvw9nfE29+RriN9KLhWwpHvE9kXsY8//voNv5Z+Jvd/ydjduro7e/Zsjh07RufOnZWOZDCmXWYJZmvcuHHExsZSXFzMhg0barWP5cuX06VLF4PNwKkrarWasrJ7r2FyP7deX5O5VoSqZWZmEh4ezvr1m5BlmaV7PiIz/+4zehqDvKJsPv51KjvPbKHflFa8/msPgp/yrrLwuJuGD9jQN+xB3trbmzaPuJHwVwKOjo2ZM2eOWU6QpZR3332XjIyMelV4gCg+BCPWoUMHBg4cyLx588jKyqrRa/fs2UNkZCSTJk3SUzr9cXV1JS8vj8zMzFrv49KlS6jVar3PBmnuCgsLmTJlCp6eXsx670PySpshA5J1BV/sfZ/CUuUWPatKblE24Tunk0c6U3/qQb9XW2NpXftTfSNXGyas7syIuYEUFxfy/vsf4O3dlM8++wytVqvD5PVXXYelmyJRfAhGbcGCBeTn5/Pkk0+Sm5tbrdccOXKEoUOH0r9/f5O8Pz1o0CA0Gk2tR+hIksTq1asZPny4yd9DVtLvv/+Ov38Ay5at5IFWs/B4aCmF2YcIGerNlJ+6k1dx7eacF2VFSketVFJezILdb1OmyeeVH7vj5e+ok/1aWFjQ9Rkfxi4LQZYlLG1bM33GDLqGduf8+fM6aUOoX8SZSTBqLVu2ZOrUqURHR9OtWzd+/fXXKr9t5ebmsmjRInr16kX79u35/vvv9Tbdtz7dmik0IiKiVt8sd+/ezeXLl03yqo8xkCSJmTNn0rNnT7IL3fB75BiOnsNIOzWZwMc9GPlpB5q0asTE9V1JL0pkwe53KCq9oXRsALYc+5prhVd5eV0XXJrqfrHBwCc8GfrhQ5Tkn6JJ2485c/46AQGBbN68Wedt1UerV6+mb9++SscwCFF8CEYvLy+PiooKcnNzGThwIC1btiQ8PJwdO3awb98+tm7dyosvvoinpyczZsxg9OjR7Nmzx6RvOUyaNInExESWLl1ao9cVFRUxa9YsAgMD6dKli57Sma+Kigqef34cn86fj0e7cHxD96C2b05y3As0dLVi5PxAVJY3R4d4t3dk4oabBci8XTPJulH722S6cC7tJPvP/crAN9vg7qe/kYLdRvvw4MPuZP29GN+ukTRwG8LIkSNZs2aN3tqsLw4cOMCePXvqxXsphtoKRk+SJFxcXLhx4wa7d+9m7dq1bNq0idLS0sptPD09eemll5gwYQJNmjRRMK3uTJ06lcWLF/Pdd9/x7LPP3nf7oqIihg8fzv79+4mKiiI4ONgAKc2HJEmMH/9vvv3uO5p2/JrGXjeH016/soqUk68QtqEbfqF3DglOO5/Hquejqci35JXes2jp1tbQ0ZFkiXe3vYx9y1LCNndDpar7ekr3kpNWxNy+UTRyfxkP/3BST71G1t+r2bBhg0ne6jQWZWVlODg4YGlpSW5ursmtSVWTz29x5UMweiqVilWrVlFeXs6iRYtYu3YteXl5pKamkpCQwLVr10hMTGTWrFlmU3jAzf4uY8aMYdSoUUydOrVyFtJ/kiSJXbt20bNnT/bv38/WrVtF4VELH374Id9++w1NO6ypLDxkWeL65c/oMNDrroUHgEdrB6bt6MEDbdXM2/km+8/93z0ndtOHc2knSc9J5YnprfVeeAA09rCj+3NNyUn5CllbgudDX9DY+1lGj36OuLg4vbdvrtRqNXPnzqWwsJDJkycrHUevxJUPwWRMmDCBF154oV4NSZNlmblz5zJv3jzy8/MZMGAAQ4YMwdnZmbKyMv766y/WrFnDpUuXCAgIYPXq1aLwqIWYmBg6de7MAy3fpEmbWZWP52dEcvnwIF778WF8g+49q2dFmcS2D0/z57ortPF8iLGhr+LayDDF8JI9c0hXn2PG7kd0sop0dWQlFzKnxx68A5bj7DMOSSrj0h+h+HpZEnM8WgzzroNRo0bx9ttv065dO6Wj1IiY4VQQzExhYSEbN25k+fLlnDhxovJxtVrN008/TVhYGF26dDHYB485KSsrIzAwiOR0S1o8fBAL1X87KV+JHo5tgz+Y+VuPar+356Iy2PLmKQqulzGkwxj6thus1+nYi8uKmLxuOENm+9PjecOuO7PiucOkXXiQFqG7ASjKPUHC792Z/d7NibOE+kXcdhEEM2Nvb8+ECROIjY2lpKSE9PT0ykW61q1bV6eF4Oq78PBwLlw4j2fgqtsKD1mWKcr5k4f6u9bovW3T042Ze3oR+lxTthxbw0c7pnLharzebsUkZV1GlmVadjb8XBEtuzhRnBuLLEsA2Dl2wNVvBnPmfMTFixcNnkcwHaL4EEzSsWPHkCRJ6RiK0Gg0uLm50bhxYzGPRx0VFxezcNEXOPtOxNbhodueKy9Oobw4C+9azJWhsbdiyHvteW1rD8oaX2fe/83kve2T2H/u/3Q+L0hiVgLWakvc/Aw/usu7fWMqym5QVni58jG3Vm9ipW7M8uXLDZ7HHB09elTpCHohzlyCydm3bx+dOnVi+vTpSkcRTNzmzZvJz8vBpfnLdzxXnHcSAC//2q9F49PBiem7HmHid6E4dSxn3ZHlvL75OdYdWkFqTmKt9/u/UnOScG/pgKWV4U/nnm1uXlovzv/vkvAqSw0OXmNZ89VaCgsLDZ7JnKxbt44uXbqwcOFCpaPonCg+BJPTu3dvXF1d+eKLL8jOzlY6jmDClixZjoP7Y2js7+wrUVF6DQAHd9s6taFSWfDgw678e1Vn3jvYlx4vNeVYxl5mbZ3EvJ0z2HPmZy5fu0CFtrxW+y8tL8Gmkf76lNyLTcObt6kk7e1FhrPPBG7cyGfjxo1KxDIbzz77LA0aNOCdd96hpKRE6Tg6JYoPwSR9++23aLVahg83naXNBeNy/vx5YmOP4dTshbs+L8sVWKgsdDp0tbGHHU+83pbZR/oyZkkwUtNMvo9ZxUc/T2PSumF8tGMqG4+s5PBf+7hw9TQZeamUlBffsZ/yijKuFaSTkHGWrMJMUKi7T2VXmH/0Z9HY+9DItTebN28xfCgzolKpWLp0KSUlJYwfP17pODql8xlMwsPD2bp1K+fPn8fW1pbQ0FDmzZvHgw8+qOumhHqsX79+BAcHc/bsWSRJEn0fhBqLjo4GoIFLj7s+b6FSI0sy2gpJ57c0rNQqOg7youMgLypKtaSczSMxLofEEznExuwl8sz227a3trTG0tIKCwsLKrQVlFfcvuqx1wO1vzVUFyWFFQCoLO3ueM7WsQvHj0cgy7LoDF0HY8eO5aOPPiI2NlbpKDql8+IjKiqKsLAwQkJCqKio4O233+axxx7j7Nmz2Nvrfq0Bof6KiorCxsZGFB5CrcTExGDv0BJL67t/cFvbegCQlVSEa/MGesthpbHEp4MTPh2cYNzNx4rzy/igayTPPD2Kvn37kp2djVarRZIkrK2tadSoEU2aNMHNzY2goGAyLhUiaeXKqd8N5er5fABsGra+4zm7xkFkXMgiKSmJZs2aGTSXuTl58iR2dncWeKZM58XHrl27bvt97dq1uLq6EhMTQ48ed/+GIQi1YW7/GQXDij4Wg3XDDlU+b+fYEYDk07l6LT7upiivnJLCcoYNG8aAAQOq3O7cuXNUVJRDBWReuYF7S8OOeEmOz8XS2hZNw1Z3PGfnePO9jYmJEcVHHZnjuU7vXxnz8vIAcHJy0ndTgiAI1Xbh/AVsGla9DouV2hlNA0+ST+cYMNVNyadyAQgKCrrndomJ/x0xc+V4lj4j3dXl6GxsHQKwsLizw6u1TROsrO1vyygIt+i1+JAkiSlTptCtWzf8/f3vuk1paSn5+fm3/QhCTUiSxKBBg3jttdeUjiKYkJKSYiyt7n2lwN65Lyd+yUDSGnYi6NifU7GxtcHd3f2e2xUX3+yM2uCBhzm0IdkQ0SrlZRRzdn8GDk2q7vRtaWVbmVGou5KSEnr16sVHH32kdJQ602vxERYWRnx8PJs2bapym/DwcBwcHCp/vL299RlJMEMqlYpTp06xdOlS0tLSlI4jmAittgLu8o39f7n4vkhexg3O7ks3UCrITS/mdORVGtjfvxPprVlTnZqOI/lUFsmnc/Wc7r8Ob0rEQqXGqemoqjeysDD4InvmTK1Wc/LkST788ENu3LihdJw60VvxMXnyZHbs2MH+/fvx8vKqcru33nqLvLy8yp/kZMNW74J52LRpE5IkMWzYMKWjCCZCrbFB1pbecxs7x47YO3dk/6orBvsQ/eOby1hYWOLq6nbfbW1tb85BYu8Uisbek50LLxgk543sUn7/OhFHz1FVdtgFkCpKKjMKdfe/K3yPGnWPos8E6LzDqSzLvPLKK2zbto0DBw7g6+t7z+01Gg0ajUbXMYR6pmvXrvTs2ZOoqCgOHjxI9+7dlY4kGDlHh8YUFpwjJ+V7inJPUJIfh1SeiyyVgIUlKpUtVrbN0Ni351J0LNE/JNH5af12nEw9m8f+lZewtm2Jm9sD993ew+PmiJzyklSatFvI2f0jiNmeQvBT+r2C/ON7pykrVuPbZVaV21SUZVFeVoCjo6Nes9Q3Q4cOxd/fn59//pmEhAT8/PyUjlQrOi8+wsLC2LBhA9u3b6dhw4akp9+8XOng4CAqYEGvfvjhB9599126dOmidBTBiF26dImIiAiuXbtKaek35CR9g4OjM828PWjYoAFWVg2QZZmysjIyM0+QmpoCwI+zT/Hgw6441nHG06poyyXWv34Sm4YPIlfcIDi4431f07ZtW9RqDcW5J3igxWQaew3nh1nbadHJmcYe+hkhcWJHKid2pNAsaC3WNlX3SSnKvTkvRVhYGNHR0UycOJGAgAC9ZKpvtm7dyooVK2jRwrCrGOuShazja3RVTSbz9ddf8/zzz9/39TVZklcQBKG6IiMjWbBgAb/99hv29vYEBwfTunVrvL29adCg6qG0kiSRlJTEylVf4uSjZvKm7pXTiuuKJMlsmnGCY1tTad5lB5cOPc6mTZsYMWLEfV8bHNyZy5ktaRb0FRVlWSREdaKR6w1e3RJKQxfdXlVOOHyNL8cepYHrYJoFrbvn5GEZFz8l669P6NWrJ9HR0eTk5NC1a1fCw8Pp2bOnTnMJxqEmn9867/Mhy/Jdf6pTeAiCIOhadnY2o0eP5rHHHuP8+fOMHDmS2bNnM2TIENq0aXPPwgNu3mf38fFh0sQwrl8uIWLsYYryyu75mpqQtDLfv32S6B+T8e6wGlm+ucbL/YbZ3tKpUxBl+dHIsoyV2pnmXX8jN92axU8fIjtFdyvontmbzpdjj2Lb+GGadvjqvrOWFmUfxdvbm8cff5x3332XcePGkZ6eziOPPMLkyZNNvsOkUDdiakjBLFVUVLBz506lYwgK++WXX2jbti3btm3j2WefZcqUKXTu3Bm1Wl3jfXl5eTHx5UlkXihm0eA/+Du27osa5qQWETHmCEc2J9G0w0qcvEeSm/o93t4+1b6kPnjwYArz/qIo+wgAmgYtadntAPnXGjH3sQMc3vR3nTqhltwo5/u3T7Lq30ewd+6Pb6dtqCzvfUWlvCSd/MzdtG/fDgBLS0sCAgJ45ZVXGDJkCKtWrcLf35/ff/+91rmEm0pKSoiMjFQ6Ro2J4kMwS/369WPAgAFcunRJ6SiCAmRZZtasWTz55JO4uLgwY8YMOnXqVOc1Rpo1a8Zrr07BVnbki2F/sP2TeIrza74arbZc4s/1Vwjve4C/41S06PozTk2fo6Isi7y0LUyePLHaWfv27YuPTwuu//1l5WOaBi3x63GMBg88w+Y341j+7GEuHrpWoyKkrETL0S2JzO0bxdEt6Xg+9Dk+nb5HZWlz39dmJa7FUmVBp06dbntcpVLRs2dPpk+fjrW1NY8++ug9p2IQ7q9Lly48/vjjJrfCt877fNSV6PMh6MKpU6cICAggICCAuLg4peMIBiTLMlOmTGHx4sUMHDiQRx99VOcLm2m1Wvbv38/OXTuxtLYgeIgXoc/64NnO4Z5t5aQWceT7RP5cn8yN60U4NRuLp/+nlcNVMxMWcT3hfVJTU3Bxcal2ngULFjBj5tu0fewSVprbR8nkZ/zG1bNvUJyXwAO+DnQZ4YVPh8Z4tnPApsHtfVfyMktIPpVDwqHrHN2SSsmNUhzc++HhvxCNffNqZZFlLecjWxHY3puRI5+pcjutVsumTZs4fvw4X3/9NWPHjq328Qr/FRkZyWOPPUbv3r3Zu3evollq8vktig/BbD3xxBPs3LmT7du38+STTyodRzCQd955h08++YSnn36abt266bWtvLw8Dh8+zOEjf5KXW4DG3grv9o54t3fE1sEaCwsoK9KSdqGApJP5FFwrxNLaDkev0bj4vIitw39nftaW55NwoCNDn3qEdeu+q1GOrKwsvL2bYe8+Cq+AxXc8L8syN67/TtbfX5Kf8StSRSlYWODo3hBrW0tkSaY4v4zC7Jt9RKxtnWnsORZn33+jsa/ZiIprl5aTenoab7zxxj3neIKbnXm3bNnC0aNH+eGHHxgyZEiN2hJu6tSpE8eOHePIkSN07txZsRyi+BAEbv5bcnd3JywsjPnz5ysdRzCA9evXM3r0aAYPHkyvXr0M1q5WqyUhIYG//vqLPw4epELSorJsCMioLG1R2z2IrUMQdo4daejaB0vrO89tyXGTKM78nrNn42u1ENuyZcuYPHkyLbrtpOEDVR+7LFVQUnCOotxYSm8kIGlLsLCwRGXVAFuH9tg5dsDatmmtrhaVFl7i4v5gunYJqvaEf5Ik8e2333Lx4kXi4+PvOzeUcKeUlBRatmzJhx9+yIwZMxTLIYoPQfiPiooKrKx0Pp2NYISuXr1K27Ztad68OWPGjFEsR1ZWFnPnfkojzzF4By6p1mvyMyO5fGgQERERvPTSS7VqV5IkevV6lGOxl2nZMwZLa8OucCvLEpf+7Iu1dIE3Z06v0eSRJSUlzJ8/n/bt27N3715UKtEdsaaM4Vyn6FBbQTAmSv9nFAxDlmVefPFFZFlm6NChimZxdnZm8OBBZP29ioJr++67fVlxKmknJ9K7dx9efPHFWrerUqn4+us1oM0i+cQEZKmi1vuqjatn3+PG9T95duSIGs9abWNjw4gRIzhw4AARERF6SmjeTO1cJ4oPQRBM3qZNm9ixYwdDhw7F3t5e6TiEhobSooUfKSdeQqqoeq6NitJrJB4ZgLOjim+++brOHWObN2/O5s0byc/YQXLcS8iytk77q66Mi5+SmfAZgwcPrvV0361atSI0NJTp06dXzowtmC9RfAj1wuHDh/H09CQ+Pl7pKIKOybLMxx9/TLt27XjooYeUjgPcvArxzDPDKS1KISf1+7tuU1aUzOVDj2KrzmHfvsj7ds6srkGDBrHuu+/ITd1E0vExSFr9LWkvyxJpZ97l6tn36N+/f5372QwcOJCKigrWrFmjo4T1z86dO/Hw8CAlJUXpKPckig+hXnB1deXq1auKX5IXdO/PP//kzJkz9OjRQ+kot3nggQdo06YNWVdW3DG/Rm7qNi79EYpTw1IOHzpIq1atdNr2yJEj2frjjxRe28Ffv3emMPuoTvcPUHrjEpcOPlp5xaN///513qednR0dO3ZkxYoVVFQY9raRuXB0dOTq1atGv8K3KD6EeqFFixYMHTqUixcvsn79eqXjCDq0bNky3NzcjHJ1z+7du1GUe5Ki3OPAf26zHB/N38dG0q9vN44fP0rLli310vbgwYM5cSKWNn6O/PVHL1Lj30JbUVjn/cpSBdcuLeXC/iCs5b+YPHmyTkcWdevWjdTUVH799Ved7bM+ubXC99GjR9m37/59jpQiRrsI9UZJSQmOjo7Y2dmZ3GyAwt1lZWXRpEkTBgwYwCOPPKJ0nDtIksSHcz5Btn0YtW1T8lK+wdZWxYrlS3nmmWd0PvnZ3VRUVLBgwQJmzXoPVLY4eo3B2ecFbBrW7GpLeXEaWYlfk524irLidB5++GEGDhxY486l1fH5558TEBDATz/9pPN91wfXr1/H3d0dDw8PkpKSDNZuTT6/Tat7rCDUgY2NDatXr6ZJkyZKRxF05OjRo5SXl+Pv73//jRWgUql4qH1bDh7cTsNGjrz26gtMmzYNd/eql6LXNSsrK2bOnMmIESP48ssvWbJ0OdcuLaGBcyh2TqHYOQZh69gBtV2z24qh8pJ0inJPUJwbS1FONAWZe7GysiQ4uCPduz+Hp6en3jL7+flx5MgRve3f3Lm4uLBkyRKCg4OVjlIlUXwI9cro0aOVjiDoUExMDPb29jg7OysdpUpeXl5IksT5c2cMWnT8k4+PD+Hh4ZSWlrJq1SqaueeTlLSGzITPALBQWWNpqQELFZK2BEl7c+VeW9sGeHt70afbk4SEhGBra6v3rF5eXkRGRpKWloaHh4fe2zNHEydOVDrCPYniQxAEk3X8+HG8vLwMcvuitry9vQE4d+6cosXHLXFxcTRv3pzx48cDN6eIT0lJITs7m/LycmRZxtramkaNGuHt7Y2Tk5PB399b71lMTIwoPsyUKD6EeuvYsWNYWlrSsWNHpaMItXT8+HHatGmjdIx7cnNzQ6PREBsba9Ap36sSFxdHly5dKn93cHDAwcFBwUR3aty4MQ0aNODkyZMMGjRI6Tgmb+/evfj4+NCiRc3W6dEnUXwI9VJZWRmhoaF4eHiQmJiodByhlq5fv46jo6PSMe5JpVLh6OhIZmam0lEAKCgoMIqJ2O7FwsICe3t78vPzlY5i8rKzs+nbty/t27fn5MmTSsepJIbaCvWSWq1m7NixJCUlsXz5cqXjCLUgSRJlZWVYW1vff2OFWVlZUVysv8m+qkur1RrFGiDVYW1tbRTvmalzcnLi8ccf59SpU/z8889Kx6kkig+h3oqIiMDOzo433nhDTGgk6J0x9Eu5tWCbkc2wcFeSJJlEYWkKNm7ciLW1NePGjUOSJKXjAKL4EOoxKysrFi5ciLW1NQkJCUrHEWpIpVKhVqspLy9XOsp9lZeXG2SUyP1YWFig0WgoKytTOsp9lZWVYWNjo3QMs9CoUSNmzpyJhYWF0dz+E8WHUK+99NJL5OTkGH2nReHu3NzcjH7COK1WS25uLm5ubkpHAcDX19doPoCqUlpaSnZ2Nr6+vkpHMRsffPABmZmZRjHiCkTxIQiVl6IF0xMSEkJqaqrSMe4pIyODsrIyo5nwKSQkxOgXHUtNTUWSJKN5z8yBSqUyqnOd8SQRBEGooaCgIFJSUozmPvbdJCcnY2FhQYcOHZSOAtx8z9LS0tBqtUpHqVJycjJqtZp27dopHUXQE1F8CMJ/hIWF6Xx1UUG/goKCKCoqIisrS+koVUpOTsbPz48GDRooHQW4+Z6Vl5eTlpamdJQqJScn4+/vj1qtVjqKWXr22WcVL4ZF8SEI/6FWq0lISCA8PFzpKEI1de7cGY1GY1TzF/wvrVZLfHw8vXv3VjpKpZCQEJydnTl+/LjSUe6qpKSE+Ph4Bg4cqHQUsyVJEnFxcXz77beKZRDFhyD8x4IFC2jUqBEffPABJSUlSscRqsHR0ZGRI0dy+PBho7z1Eh8fT25uLi+99JLSUSppNBomTJjAsWPHKC0tVTrOHY4fP055eTkvvvii0lHM1tq1a9FoNEyePFmx/zei+BCE/1CpVERERFBaWsorr7yidByhmiZNmkRWVhbnzp1TOsodDh06RJcuXQgMDFQ6ym1efvlliouLOXHihNJRbiPLMocOHWLw4MF6XTW3vrOxsWHOnDkUFBTw4YcfKpLB+Ke5EwQDGjlyJFevXmXSpElKRxGqKSQkhI4dOxIVFUXbtm2NYjIvgKtXr3LhwgXWrVundJQ7+Pj48MQTTxAVFUVwcLDRzHh69uxZ0tLSCAsLUzqK2Zs+fToAU6dOVaR9C9nIprrLz8/HwcGBvLw8GjVqpHQcQRBMwPbt23nqqacYPXq0UQzPlCSJxYsXY2VlRXx8PBqNRulId4iLiyMkJITevXvzxBNPKB2HoqIi5s+fT0hICLt27TKaIlKovpp8fovbLoIgmLzBgwczYsQItm3bZhSLkR04cIDExES++eYboyw8AAIDA3nnnXfYs2cPycnJSsdh+/btVFRUsHr1alF41AOi+BCEKkiSxPz5842yI6Nwp6VLl2JnZ8eWLVsUXbskIyODnTt3Mm3aNEJDQxXLUR1vv/027dq1Y9OmTYpOuX7mzBmOHj3KokWL8Pb2VixHfVVRUcGCBQsM2qYoPgShCsuWLWPGjBm8++67SkcRqsHFxYWVK1dy+vRpdu3apUiGgoIC1qxZg4+PD3PmzFEkQ02o1Wq+++47srOzWbt2rSILLP799998++23DBw4kPHjxxu8feFmEfrGG2+wdOlSg7Up+nwIQhUkScLV1ZW8vDyysrLEv0cT8emnnzJz5kwGDhxInz59DNZuQUEBERERSJLEn3/+aVLrkkRGRjJw4EBat27NmDFjDNYB9e+//2bVqlUEBgaye/du7OzsDNKucLuKigocHByQZZnc3NxaT+4m+nwIgg6oVKrKb4MjRoxQOo5QTTNmzGD27Nns2LGDX375xSC3zbKysli6dCnl5eXs2bPHpAoPgL59+7J161YuXLjAqlWrKCgo0Hubp0+fJiIigsDAQH799VdReCjIysqKRYsWUVxcbLD5VUTxIQj3MHDgQLp27YqlpaXSUYQaeP/99/nss8/Yu3cvy5Yt49q1a3ppR5ZlDh8+zGeffYaNjQ2HDh2ibdu2emlL3wYMGMBvv/3G9evXmTdvHrGxsXrpO1NUVMT69etZs2YN/fr1Y/fu3Tg4OOi8HaFmXnzxRfz9/Q3WX0rcdhEEwWxFRUXx/PPPk5aWxoABA3j44Yd1trJnTk4Omzdv5vz584wbN45FixaZxYfotWvXmDRpEj/88AMBAQE89dRTNG7cuM77lSSJ06dPs23btsqhyGPGjBEjW8xITT6/RfEhCIJZKyws5K233mLJkiW4ubnRtWtXOnXqVOvL/ElJSRw8eJC4uDhcXFxYs2YN/fv313Fq5W3ZsoVJkyaRnZ2Nv78/3bp1w8/Pr8bFW2FhIdHR0Rw+fJjMzEyeeOIJVq5cKWYwNUOi+BAEPZIkSWffngXDiY6OZtGiRfz4449YWFgQGBhI69at8fb2xtnZucq/aWlpKampqSQlJXHixAkSExPx9vZm0qRJTJw40SyudlSloKCAdevWsXTpUs6ePYubmxt+fn54e3vj7e2Nm5vbHbckCwsLSUlJITk5maSkJM6fPw/AsGHDCAsLo2vXruJqhwmozXlOFB+CoAc3btygVatWDBkyhGXLlikdR6iljIwM1qxZw+rVq7ly5QoAtra2eHl5YWdnh7W1NZIkUV5eTlZWFunp6UiShFqtpnfv3kyePJn+/fvXq35Asixz8OBBvvrqKw4dOkRCQgKyLGNtbY29vX3le1ZWVlbZWbVBgwZ07NiR/v378+9//xtXV1eFj0KorpSUFAICAnjjjTd46623qv06UXwIgp54enqSnp7O1atXxcnUDFy/fp2YmBhiYmKIi4sjJyeHoqIirK2tsbGxwdfXl6CgIIKCgmjXrl2thyCam4KCAuLi4irfs+LiYqysrLC1tcXHx4egoKBa3aIRjIMkSTg5OVFSUkJ2dna1b1GK4kMQ9OTAgQP06tWLhx9+mN9//13pOIIgCHqxefNmnnnmGYYOHcoPP/xQrdfU5PPbOJYyFAQT8cgjjxAaGsoff/zBzp07yc7OrnyuXbt2ty2dHhcXx5kzZ257/f22+efz1dlGH/swt3ZMKauh2jGlrMbcjillrWk7Hh4ebN26lUOHDul+qQDZyOTl5cmAnJeXp3QUQbirq1evytu3b5d79uwpA5U/PXv2vG27fz5fnW3++Xx1ttHHPsytHVPKKt4T02rHlLLqqp2q1OTzW9x2EYRaMsZvKrrah7m1Y0pZDdWOKWU15nZMKauu2qmK6PMhCIIgCIJBGcXaLsuWLcPHxwcbGxs6d+5MdHS0vpoSBEEQBMGE6KX42Lx5M9OmTWP27NnExsYSEBBAv379yMzM1EdzgiAIgiCYEL0UHwsXLuSFF15g3LhxtG3bloiICOzs7Pjqq6/00ZwgCIIgCCZE50Nty8rKiImJuW1WNJVKRZ8+fTh8+PAd25eWllJaWlr5e15eHnDz3pEgCIIgCKbh1ud2dbqS6rz4uH79OlqtFjc3t9sed3Nzq5zj/3+Fh4fzwQcf3PG4t7e3rqMJgiAIgqBnBQUF913zSPFJxt566y2mTZtW+Xtubi7NmjUjKSnJLBdsys/Px9vbm+TkZLMbzWPOxwbi+EyZOR8bmPfxmfOxgXkdnyzLFBQU4OHhcd9tdV58uLi4YGlpSUZGxm2PZ2Rk4O7ufsf2Go0GjUZzx+MODg4m/4e4l0aNGpnt8ZnzsYE4PlNmzscG5n185nxsYD7HV92LBjrvcKpWqwkKCmLv3r2Vj0mSxN69e+natauumxMEQRAEwcTo5bbLtGnTGDt2LMHBwXTq1InPP/+cwsJCxo0bp4/mBEEQBEEwIXopPkaMGMG1a9d47733SE9PJzAwkF27dt3RCfVuNBoNs2fPvuutGHNgzsdnzscG4vhMmTkfG5j38ZnzsYH5H19VjG56dUEQBEEQzJveplcXBEEQBEG4G1F8CIIgCIJgUKL4EARBEATBoETxIQiCIAiCQRld8bFs2TJ8fHywsbGhc+fOREdHKx1JJ8LDwwkJCaFhw4a4urry1FNPceHCBaVj6cXcuXOxsLBgypQpSkfRmdTUVEaPHo2zszO2tra0b9+e48ePKx2rzrRaLbNmzcLX1xdbW1tatGjBnDlzqrU2gzH6/fffGTRoEB4eHlhYWPDTTz/d9rwsy7z33ns0adIEW1tb+vTpQ0JCgjJha+hex1ZeXs7MmTNp37499vb2eHh4MGbMGNLS0pQLXEP3+9v9r5dffhkLCws+//xzg+Wri+oc27lz53jyySdxcHDA3t6ekJAQkpKSDB/WQIyq+Ni8eTPTpk1j9uzZxMbGEhAQQL9+/cjMzFQ6Wp1FRUURFhbGkSNHiIyMpLy8nMcee4zCwkKlo+nUsWPH+PLLL3nooYeUjqIzOTk5dOvWDWtra3bu3MnZs2dZsGABjRs3Vjpanc2bN48VK1awdOlSzp07x7x58/j0009ZsmSJ0tFqpbCwkICAAJYtW3bX5z/99FMWL15MREQER48exd7enn79+lFSUmLgpDV3r2MrKioiNjaWWbNmERsby9atW7lw4QJPPvmkAklr535/u1u2bdvGkSNHqjWFt7G437FdunSJ7t2707p1aw4cOMCpU6eYNWsWNjY2Bk5qQLIR6dSpkxwWFlb5u1arlT08POTw8HAFU+lHZmamDMhRUVFKR9GZgoIC2c/PT46MjJR79uwpv/baa0pH0omZM2fK3bt3VzqGXgwYMEAeP378bY/961//kkeNGqVQIt0B5G3btlX+LkmS7O7uLs+fP7/ysdzcXFmj0cgbN25UIGHt/fPY7iY6OloG5MTERMOE0qGqji8lJUX29PSU4+Pj5WbNmsmLFi0yeLa6utuxjRgxQh49erQygRRiNFc+ysrKiImJoU+fPpWPqVQq+vTpw+HDhxVMph95eXkAODk5KZxEd8LCwhgwYMBtf0Nz8PPPPxMcHMzTTz+Nq6srHTp0YNWqVUrH0onQ0FD27t3LxYsXATh58iQHDx7k8ccfVziZ7l25coX09PTb/n06ODjQuXNnsz3HWFhY4OjoqHQUnZAkieeee47p06fTrl07pePojCRJ/Prrr7Rq1Yp+/frh6upK586d73nbyRwYTfFx/fp1tFrtHbOgurm5kZ6erlAq/ZAkiSlTptCtWzf8/f2VjqMTmzZtIjY2lvDwcKWj6Nzly5dZsWIFfn5+/Pbbb0ycOJFXX32Vb775Rulodfbmm2/yzDPP0Lp1a6ytrenQoQNTpkxh1KhRSkfTuVvnkfpwjikpKWHmzJmMHDnSLBYrg5u3CK2srHj11VeVjqJTmZmZ3Lhxg7lz59K/f392797NkCFD+Ne//kVUVJTS8fRGL9OrC/cWFhZGfHw8Bw8eVDqKTiQnJ/Paa68RGRlplvcoJUkiODiYTz75BIAOHToQHx9PREQEY8eOVThd3Xz//fesX7+eDRs20K5dO+Li4pgyZQoeHh4mf2z1VXl5OcOHD0eWZVasWKF0HJ2IiYnhiy++IDY2FgsLC6Xj6JQkSQAMHjyYqVOnAhAYGMihQ4eIiIigZ8+eSsbTG6O58uHi4oKlpSUZGRm3PZ6RkYG7u7tCqXRv8uTJ7Nixg/379+Pl5aV0HJ2IiYkhMzOTjh07YmVlhZWVFVFRUSxevBgrKyu0Wq3SEeukSZMmtG3b9rbH2rRpYxY90adPn1559aN9+/Y899xzTJ061SyvYN06j5jzOeZW4ZGYmEhkZKTZXPX4448/yMzMpGnTppXnmMTERF5//XV8fHyUjlcnLi4uWFlZme05pipGU3yo1WqCgoLYu3dv5WOSJLF37166du2qYDLdkGWZyZMns23bNvbt24evr6/SkXTm0Ucf5fTp08TFxVX+BAcHM2rUKOLi4rC0tFQ6Yp1069btjmHRFy9epFmzZgol0p2ioiJUqttPA5aWlpXfxsyJr68v7u7ut51j8vPzOXr0qFmcY24VHgkJCezZswdnZ2elI+nMc889x6lTp247x3h4eDB9+nR+++03pePViVqtJiQkxGzPMVUxqtsu06ZNY+zYsQQHB9OpUyc+//xzCgsLGTdunNLR6iwsLIwNGzawfft2GjZsWHmP2cHBAVtbW4XT1U3Dhg3v6Ltib2+Ps7OzWfRpmTp1KqGhoXzyyScMHz6c6OhoVq5cycqVK5WOVmeDBg3i448/pmnTprRr144TJ06wcOFCxo8fr3S0Wrlx4wZ//fVX5e9XrlwhLi4OJycnmjZtypQpU/joo4/w8/PD19eXWbNm4eHhwVNPPaVc6Gq617E1adKEYcOGERsby44dO9BqtZXnGCcnJ9RqtVKxq+1+f7t/FlPW1ta4u7vz4IMPGjpqjd3v2KZPn86IESPo0aMHvXr1YteuXfzyyy8cOHBAudD6pvRwm39asmSJ3LRpU1mtVsudOnWSjxw5onQknQDu+vP1118rHU0vzGmorSzL8i+//CL7+/vLGo1Gbt26tbxy5UqlI+lEfn6+/Nprr8lNmzaVbWxs5ObNm8vvvPOOXFpaqnS0Wtm/f/9d/5+NHTtWluWbw21nzZolu7m5yRqNRn700UflCxcuKBu6mu51bFeuXKnyHLN//36lo1fL/f52/2RKQ22rc2xr1qyRW7ZsKdvY2MgBAQHyTz/9pFxgA7CQZROdylAQBEEQBJNkNH0+BEEQBEGoH0TxIQiCIAiCQYniQxAEQRAEgxLFhyAIgiAIBiWKD0EQBEEQDEoUH4IgCIIgGJQoPgRBEARBMChRfAiCIAiCYFCi+BAEQRAEwaBE8SEIgiAIgkGJ4kMQBEEQBIMSxYcgCIIgCAb1/wckNajIjn1HAAAAAElFTkSuQmCC", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "plot_atoms(new_structures[1])" - ] - }, - { - "cell_type": "code", - "execution_count": 37, - "id": "da9a3cf1-7c96-4a59-b248-1a82a226e145", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 37, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "plot_atoms(new_structures[10])" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "id": "9047ed09-e31c-400d-9234-812888587760", - "metadata": {}, - "outputs": [], - "source": [ - "from cell2mol.classes import cell\n", - "newcell = cell(name, cell_labels, cell_pos, cell_fracs, cell_vector, cell_param)\n", - "newcell.get_subtype(\"unit_cell\")" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "id": "e4af6668-a0ac-47ba-8929-546b628772ef", - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "#########################################\n", - " GETREFS: Generate reference molecules \n", - "#########################################\n", - "GETREFS: found 10 reference molecules\n", - "GETREFS: ['C6-O12-Fe', 'H24-C12-O6', 'H2-O', 'H2-O', 'H2-O', 'H24-C12-O6', 'H24-C12-O6', 'K', 'K', 'K']\n", - "GETREFS: [------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 19\n", - " Formula = C6-O12-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 MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 42\n", - " Formula = H24-C12-O6\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 42\n", - " Formula = H24-C12-O6\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 42\n", - " Formula = H24-C12-O6\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = K\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = K\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = K\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - "]\n", - "GETREFS: working with C6-O12-Fe\n", - "GETREFS: working with H24-C12-O6\n", - "GETREFS: working with H2-O\n", - "GETREFS: working with H2-O\n", - "GETREFS: working with H2-O\n", - "GETREFS: working with H24-C12-O6\n", - "GETREFS: working with H24-C12-O6\n", - "GETREFS: working with K\n", - "GETREFS: working with K\n", - "GETREFS: working with K\n" - ] - }, - { - "data": { - "text/plain": [ - "[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 19\n", - " Formula = C6-O12-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 MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 42\n", - " Formula = H24-C12-O6\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 42\n", - " Formula = H24-C12-O6\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 42\n", - " Formula = H24-C12-O6\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = K\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = K\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = K\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " ---------------------------------------------------]" - ] - }, - "execution_count": 10, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "newcell.get_reference_molecules(ref_labels, ref_fracs, debug=0)" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "id": "d0f39693-ba49-478b-93e3-6845cf6950d7", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "C6-O12-Fe [('unit_cell', 525), ('reference', 157)]\n", - "H24-C12-O6 [('unit_cell', 525), ('reference', 157)]\n", - "H2-O [('unit_cell', 525), ('reference', 157)]\n", - "H2-O [('unit_cell', 525), ('reference', 157)]\n", - "H2-O [('unit_cell', 525), ('reference', 157)]\n", - "H24-C12-O6 [('unit_cell', 525), ('reference', 157)]\n", - "H24-C12-O6 [('unit_cell', 525), ('reference', 157)]\n", - "K [('unit_cell', 525), ('reference', 157)]\n", - "K [('unit_cell', 525), ('reference', 157)]\n", - "K [('unit_cell', 525), ('reference', 157)]\n" - ] - } - ], - "source": [ - "for ref in newcell.refmoleclist:\n", - " print(ref.formula, [(p.subtype, p.natoms) for p in ref.parents])" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "id": "dcc1bf22-d3a1-4fc6-900a-87e74df07722", - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Adjacency [8, 10, 18] ['O', 'O', 'C']\n", - "Adjacency [12, 13, 16] ['O', 'O', 'C']\n", - "Adjacency [7, 9, 17] ['O', 'O', 'C']\n", - "Adjacency [11, 14, 15] ['O', 'O', 'C']\n", - "Adjacency [1, 2, 6] ['O', 'O', 'C']\n", - "Adjacency [3, 4, 5] ['O', 'O', 'C']\n", - "Adjacency [0, 7, 8, 9] ['O', 'H', 'H', 'C']\n", - "Adjacency [1, 6, 10, 11] ['O', 'C', 'H', 'H']\n", - "Adjacency [1, 13, 14, 15] ['O', 'H', 'H', 'C']\n", - "Adjacency [2, 12, 16, 17] ['O', 'C', 'H', 'H']\n", - "Adjacency [2, 19, 20, 21] ['O', 'H', 'H', 'C']\n", - "Adjacency [3, 18, 22, 23] ['O', 'C', 'H', 'H']\n", - "Adjacency [3, 25, 26, 27] ['O', 'H', 'H', 'C']\n", - "Adjacency [4, 24, 28, 29] ['O', 'C', 'H', 'H']\n", - "Adjacency [4, 31, 32, 33] ['O', 'H', 'H', 'C']\n", - "Adjacency [5, 30, 34, 35] ['O', 'C', 'H', 'H']\n", - "Adjacency [5, 37, 38, 39] ['O', 'H', 'H', 'C']\n", - "Adjacency [0, 36, 40, 41] ['O', 'C', 'H', 'H']\n", - "Adjacency [0, 7, 8, 9] ['O', 'H', 'H', 'C']\n", - "Adjacency [1, 6, 10, 11] ['O', 'C', 'H', 'H']\n", - "Adjacency [1, 13, 14, 15] ['O', 'H', 'H', 'C']\n", - "Adjacency [2, 12, 16, 17] ['O', 'C', 'H', 'H']\n", - "Adjacency [2, 19, 20, 21] ['O', 'H', 'H', 'C']\n", - "Adjacency [3, 18, 22, 23] ['O', 'C', 'H', 'H']\n", - "Adjacency [3, 25, 26, 27] ['O', 'H', 'H', 'C']\n", - "Adjacency [4, 24, 28, 29] ['O', 'C', 'H', 'H']\n", - "Adjacency [4, 31, 32, 33] ['O', 'H', 'H', 'C']\n", - "Adjacency [5, 30, 34, 35] ['O', 'C', 'H', 'H']\n", - "Adjacency [5, 37, 38, 39] ['O', 'H', 'H', 'C']\n", - "Adjacency [0, 36, 40, 41] ['O', 'C', 'H', 'H']\n", - "Adjacency [0, 7, 8, 9] ['O', 'H', 'H', 'C']\n", - "Adjacency [1, 6, 10, 11] ['O', 'C', 'H', 'H']\n", - "Adjacency [1, 13, 14, 15] ['O', 'H', 'H', 'C']\n", - "Adjacency [2, 12, 16, 17] ['O', 'C', 'H', 'H']\n", - "Adjacency [2, 19, 20, 21] ['O', 'H', 'H', 'C']\n", - "Adjacency [3, 18, 22, 23] ['O', 'C', 'H', 'H']\n", - "Adjacency [3, 25, 26, 27] ['O', 'H', 'H', 'C']\n", - "Adjacency [4, 24, 28, 29] ['O', 'C', 'H', 'H']\n", - "Adjacency [4, 31, 32, 33] ['O', 'H', 'H', 'C']\n", - "Adjacency [5, 30, 34, 35] ['O', 'C', 'H', 'H']\n", - "Adjacency [5, 37, 38, 39] ['O', 'H', 'H', 'C']\n", - "Adjacency [0, 36, 40, 41] ['O', 'C', 'H', 'H']\n", - "-------------------------------\n", - "Errors in Reference Molecules\n", - "-------------------------------\n", - "Cell2mol terminated with error number 0. Message:\n", - "No Errors Found\n", - "\n" - ] - } - ], - "source": [ - "if not newcell.has_isolated_H: \n", - " newcell.check_missing_H() \n", - "newcell.assess_errors(ref=True)" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "id": "23ce7a42-154f-4d28-aa24-cae845140e5b", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Applying symmetry operations to reference 0\n", - "157 157\n", - "157\n", - "False\n", - "target_ref: C6-O12-Fe\n", - "Group 0: ['C3-O6-Fe', 'C-O2', 'C-O2', 'C-O2']\n", - "final_remaining ['C3-O6-Fe', 'C-O2', 'C-O2', 'C-O2'] ['fragment', 'fragment', 'fragment', 'fragment']\n", - "Fragments TO BE MERGED ['C3-O6-Fe', 'C-O2'] ['fragment', 'fragment']\n", - "Rest fragments ['C-O2', 'C-O2'] ['fragment', 'fragment']\n", - "MERGED C4-O8-Fe\n", - "small_set={1, 8, 73, 74, 9, 75, 76, 10, 11, 51, 52, 153, 154}\n", - "len(found_molecule)=0\n", - "len(bigger_fragment)=1\n", - "len(not_merged)=0\n", - "final_remaining ['C4-O8-Fe', 'C-O2', 'C-O2'] ['Rec. Fragment', 'fragment', 'fragment']\n", - "Fragments TO BE MERGED ['C4-O8-Fe', 'C-O2'] ['Rec. Fragment', 'fragment']\n", - "Rest fragments ['C-O2'] ['fragment']\n", - "MERGED C5-O10-Fe\n", - "small_set={1, 8, 73, 74, 9, 75, 76, 10, 11, 77, 80, 51, 52, 153, 154, 155}\n", - "len(found_molecule)=0\n", - "len(bigger_fragment)=1\n", - "len(not_merged)=0\n", - "final_remaining ['C5-O10-Fe', 'C-O2'] ['Rec. Fragment', 'fragment']\n", - "Fragments TO BE MERGED ['C5-O10-Fe', 'C-O2'] ['Rec. Fragment', 'fragment']\n", - "Rest fragments [] []\n", - "MERGED C6-O12-Fe\n", - "small_set={1, 8, 9, 10, 11, 153, 154, 155, 156, 51, 52, 73, 74, 75, 76, 77, 78, 79, 80}\n", - "len(found_molecule)=1\n", - "len(bigger_fragment)=0\n", - "len(not_merged)=0\n", - "count=3\n", - "list_of_found_molecules=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 19\n", - " Formula = C6-O12-Fe\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.reconstruct\n", - "---------------------------------------------------\n", - "]\n", - "target_ref: H24-C12-O6\n", - "Group 1: ['H14-C8-O5', 'H3-C2', 'H-C-O', 'H2-C', 'H', 'H', 'H', 'H']\n", - "final_remaining ['H14-C8-O5', 'H3-C2', 'H-C-O', 'H2-C', 'H', 'H', 'H', 'H'] ['fragment', 'fragment', 'fragment', 'fragment', 'fragment', 'fragment', 'fragment', 'fragment']\n", - "Fragments TO BE MERGED ['H14-C8-O5', 'H3-C2'] ['fragment', 'fragment']\n", - "Rest fragments ['H-C-O', 'H2-C', 'H', 'H', 'H', 'H'] ['fragment', 'fragment', 'fragment', 'fragment', 'fragment', 'fragment']\n", - "MERGED H17-C10-O5\n", - "small_set={2, 3, 4, 5, 7, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 39, 40, 41, 42, 43, 45, 46, 47, 48, 49, 50}\n", - "len(found_molecule)=0\n", - "len(bigger_fragment)=1\n", - "len(not_merged)=0\n", - "final_remaining ['H17-C10-O5', 'H-C-O', 'H2-C', 'H', 'H', 'H', 'H'] ['Rec. Fragment', 'fragment', 'fragment', 'fragment', 'fragment', 'fragment', 'fragment']\n", - "Fragments TO BE MERGED ['H17-C10-O5', 'H-C-O'] ['Rec. Fragment', 'fragment']\n", - "Rest fragments ['H2-C', 'H', 'H', 'H', 'H'] ['fragment', 'fragment', 'fragment', 'fragment', 'fragment']\n", - "MERGED H18-C11-O6\n", - "small_set={2, 3, 4, 5, 6, 7, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 36, 37, 39, 40, 41, 42, 43, 45, 46, 47, 48, 49, 50}\n", - "len(found_molecule)=0\n", - "len(bigger_fragment)=1\n", - "len(not_merged)=0\n", - "final_remaining ['H18-C11-O6', 'H2-C', 'H', 'H', 'H', 'H'] ['Rec. Fragment', 'fragment', 'fragment', 'fragment', 'fragment', 'fragment']\n", - "Fragments TO BE MERGED ['H18-C11-O6', 'H2-C'] ['Rec. Fragment', 'fragment']\n", - "Rest fragments ['H', 'H', 'H', 'H'] ['fragment', 'fragment', 'fragment', 'fragment']\n", - "MERGED H20-C12-O6\n", - "small_set={2, 3, 4, 5, 6, 7, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 33, 34, 35, 36, 37, 39, 40, 41, 42, 43, 45, 46, 47, 48, 49, 50}\n", - "len(found_molecule)=0\n", - "len(bigger_fragment)=1\n", - "len(not_merged)=0\n", - "final_remaining ['H20-C12-O6', 'H', 'H', 'H', 'H'] ['Rec. Fragment', 'fragment', 'fragment', 'fragment', 'fragment']\n", - "Fragments TO BE MERGED ['H20-C12-O6', 'H'] ['Rec. Fragment', 'fragment']\n", - "Rest fragments ['H', 'H', 'H'] ['fragment', 'fragment', 'fragment']\n", - "MERGED H21-C12-O6\n", - "small_set={2, 3, 4, 5, 6, 7, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 33, 34, 35, 36, 37, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50}\n", - "len(found_molecule)=0\n", - "len(bigger_fragment)=1\n", - "len(not_merged)=0\n", - "final_remaining ['H21-C12-O6', 'H', 'H', 'H'] ['Rec. Fragment', 'fragment', 'fragment', 'fragment']\n", - "Fragments TO BE MERGED ['H21-C12-O6', 'H'] ['Rec. Fragment', 'fragment']\n", - "Rest fragments ['H', 'H'] ['fragment', 'fragment']\n", - "MERGED H22-C12-O6\n", - "small_set={2, 3, 4, 5, 6, 7, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 32, 33, 34, 35, 36, 37, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50}\n", - "len(found_molecule)=0\n", - "len(bigger_fragment)=1\n", - "len(not_merged)=0\n", - "final_remaining ['H22-C12-O6', 'H', 'H'] ['Rec. Fragment', 'fragment', 'fragment']\n", - "Fragments TO BE MERGED ['H22-C12-O6', 'H'] ['Rec. Fragment', 'fragment']\n", - "Rest fragments ['H'] ['fragment']\n", - "MERGED H23-C12-O6\n", - "small_set={2, 3, 4, 5, 6, 7, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50}\n", - "len(found_molecule)=0\n", - "len(bigger_fragment)=1\n", - "len(not_merged)=0\n", - "final_remaining ['H23-C12-O6', 'H'] ['Rec. Fragment', 'fragment']\n", - "Fragments TO BE MERGED ['H23-C12-O6', 'H'] ['Rec. Fragment', 'fragment']\n", - "Rest fragments [] []\n", - "MERGED H24-C12-O6\n", - "small_set={2, 3, 4, 5, 6, 7, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50}\n", - "len(found_molecule)=1\n", - "len(bigger_fragment)=0\n", - "len(not_merged)=0\n", - "count=7\n", - "list_of_found_molecules=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 42\n", - " Formula = H24-C12-O6\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.reconstruct\n", - "---------------------------------------------------\n", - "]\n", - "target_ref: H2-O\n", - "Group 2: ['H-O', 'H']\n", - "final_remaining ['H-O', 'H'] ['fragment', 'fragment']\n", - "Fragments TO BE MERGED ['H-O', 'H'] ['fragment', 'fragment']\n", - "Rest fragments [] []\n", - "MERGED H2-O\n", - "small_set={56, 12, 53}\n", - "len(found_molecule)=1\n", - "len(bigger_fragment)=0\n", - "len(not_merged)=0\n", - "count=1\n", - "list_of_found_molecules=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.reconstruct\n", - "---------------------------------------------------\n", - "]\n", - "target_ref: H24-C12-O6\n", - "Group 5: ['H19-C11-O6', 'H2-C', 'H', 'H', 'H']\n", - "final_remaining ['H19-C11-O6', 'H2-C', 'H', 'H', 'H'] ['fragment', 'fragment', 'fragment', 'fragment', 'fragment']\n", - "Fragments TO BE MERGED ['H19-C11-O6', 'H2-C'] ['fragment', 'fragment']\n", - "Rest fragments ['H', 'H', 'H'] ['fragment', 'fragment', 'fragment']\n", - "MERGED H21-C12-O6\n", - "small_set={129, 131, 133, 135, 138, 140, 142, 144, 146, 148, 150, 152, 61, 63, 65, 67, 69, 71, 81, 83, 85, 87, 90, 92, 93, 95, 97, 99, 101, 103, 105, 107, 109, 111, 117, 119, 121, 123, 125}\n", - "len(found_molecule)=0\n", - "len(bigger_fragment)=1\n", - "len(not_merged)=0\n", - "final_remaining ['H21-C12-O6', 'H', 'H', 'H'] ['Rec. Fragment', 'fragment', 'fragment', 'fragment']\n", - "Fragments TO BE MERGED ['H21-C12-O6', 'H'] ['Rec. Fragment', 'fragment']\n", - "Rest fragments ['H', 'H'] ['fragment', 'fragment']\n", - "MERGED H22-C12-O6\n", - "small_set={129, 131, 133, 135, 138, 140, 142, 144, 146, 148, 150, 152, 61, 63, 65, 67, 69, 71, 81, 83, 85, 87, 90, 92, 93, 95, 97, 99, 101, 103, 105, 107, 109, 111, 116, 117, 119, 121, 123, 125}\n", - "len(found_molecule)=0\n", - "len(bigger_fragment)=1\n", - "len(not_merged)=0\n", - "final_remaining ['H22-C12-O6', 'H', 'H'] ['Rec. Fragment', 'fragment', 'fragment']\n", - "Fragments TO BE MERGED ['H22-C12-O6', 'H'] ['Rec. Fragment', 'fragment']\n", - "Rest fragments ['H'] ['fragment']\n", - "MERGED H23-C12-O6\n", - "small_set={129, 131, 133, 135, 138, 140, 142, 144, 146, 148, 150, 152, 61, 63, 65, 67, 69, 71, 81, 83, 85, 87, 90, 92, 93, 95, 97, 99, 101, 103, 105, 107, 109, 111, 114, 116, 117, 119, 121, 123, 125}\n", - "len(found_molecule)=0\n", - "len(bigger_fragment)=1\n", - "len(not_merged)=0\n", - "final_remaining ['H23-C12-O6', 'H'] ['Rec. Fragment', 'fragment']\n", - "Fragments TO BE MERGED ['H23-C12-O6', 'H'] ['Rec. Fragment', 'fragment']\n", - "Rest fragments [] []\n", - "MERGED H24-C12-O6\n", - "small_set={129, 131, 133, 135, 138, 140, 142, 144, 146, 148, 150, 152, 61, 63, 65, 67, 69, 71, 81, 83, 85, 87, 90, 92, 93, 95, 97, 99, 101, 103, 105, 107, 109, 111, 114, 116, 117, 119, 121, 123, 125, 127}\n", - "len(found_molecule)=1\n", - "len(bigger_fragment)=0\n", - "len(not_merged)=0\n", - "count=4\n", - "list_of_found_molecules=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 42\n", - " Formula = H24-C12-O6\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.reconstruct\n", - "---------------------------------------------------\n", - "]\n", - "target_ref: H24-C12-O6\n", - "Group 6: ['H14-C8-O5', 'H3-C2', 'H2-C', 'H-C-O', 'H', 'H', 'H', 'H']\n", - "final_remaining ['H14-C8-O5', 'H3-C2', 'H2-C', 'H-C-O', 'H', 'H', 'H', 'H'] ['fragment', 'fragment', 'fragment', 'fragment', 'fragment', 'fragment', 'fragment', 'fragment']\n", - "Fragments TO BE MERGED ['H14-C8-O5', 'H3-C2'] ['fragment', 'fragment']\n", - "Rest fragments ['H2-C', 'H-C-O', 'H', 'H', 'H', 'H'] ['fragment', 'fragment', 'fragment', 'fragment', 'fragment', 'fragment']\n", - "MERGED H17-C10-O5\n", - "small_set={130, 132, 134, 136, 137, 141, 143, 145, 147, 149, 151, 62, 64, 66, 68, 72, 82, 84, 86, 88, 89, 91, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112}\n", - "len(found_molecule)=0\n", - "len(bigger_fragment)=1\n", - "len(not_merged)=0\n", - "final_remaining ['H17-C10-O5', 'H2-C', 'H-C-O', 'H', 'H', 'H', 'H'] ['Rec. Fragment', 'fragment', 'fragment', 'fragment', 'fragment', 'fragment', 'fragment']\n", - "Fragments TO BE MERGED ['H17-C10-O5', 'H2-C'] ['Rec. Fragment', 'fragment']\n", - "Rest fragments ['H-C-O', 'H', 'H', 'H', 'H'] ['fragment', 'fragment', 'fragment', 'fragment', 'fragment']\n", - "MERGED H19-C11-O5\n", - "small_set={130, 132, 134, 136, 137, 141, 143, 145, 147, 149, 151, 62, 64, 66, 68, 72, 82, 84, 86, 88, 89, 91, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 118, 120, 122}\n", - "len(found_molecule)=0\n", - "len(bigger_fragment)=1\n", - "len(not_merged)=0\n", - "final_remaining ['H19-C11-O5', 'H-C-O', 'H', 'H', 'H', 'H'] ['Rec. Fragment', 'fragment', 'fragment', 'fragment', 'fragment', 'fragment']\n", - "Fragments TO BE MERGED ['H19-C11-O5', 'H-C-O'] ['Rec. Fragment', 'fragment']\n", - "Rest fragments ['H', 'H', 'H', 'H'] ['fragment', 'fragment', 'fragment', 'fragment']\n", - "MERGED H20-C12-O6\n", - "small_set={130, 132, 134, 136, 137, 141, 143, 145, 147, 149, 151, 62, 64, 66, 68, 70, 72, 82, 84, 86, 88, 89, 91, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 118, 120, 122, 124, 126}\n", - "len(found_molecule)=0\n", - "len(bigger_fragment)=1\n", - "len(not_merged)=0\n", - "final_remaining ['H20-C12-O6', 'H', 'H', 'H', 'H'] ['Rec. Fragment', 'fragment', 'fragment', 'fragment', 'fragment']\n", - "Fragments TO BE MERGED ['H20-C12-O6', 'H'] ['Rec. Fragment', 'fragment']\n", - "Rest fragments ['H', 'H', 'H'] ['fragment', 'fragment', 'fragment']\n", - "MERGED H21-C12-O6\n", - "small_set={130, 132, 134, 136, 137, 139, 141, 143, 145, 147, 149, 151, 62, 64, 66, 68, 70, 72, 82, 84, 86, 88, 89, 91, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 118, 120, 122, 124, 126}\n", - "len(found_molecule)=0\n", - "len(bigger_fragment)=1\n", - "len(not_merged)=0\n", - "final_remaining ['H21-C12-O6', 'H', 'H', 'H'] ['Rec. Fragment', 'fragment', 'fragment', 'fragment']\n", - "Fragments TO BE MERGED ['H21-C12-O6', 'H'] ['Rec. Fragment', 'fragment']\n", - "Rest fragments ['H', 'H'] ['fragment', 'fragment']\n", - "MERGED H22-C12-O6\n", - "small_set={130, 132, 134, 136, 137, 139, 141, 143, 145, 147, 149, 151, 62, 64, 66, 68, 70, 72, 82, 84, 86, 88, 89, 91, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 115, 118, 120, 122, 124, 126}\n", - "len(found_molecule)=0\n", - "len(bigger_fragment)=1\n", - "len(not_merged)=0\n", - "final_remaining ['H22-C12-O6', 'H', 'H'] ['Rec. Fragment', 'fragment', 'fragment']\n", - "Fragments TO BE MERGED ['H22-C12-O6', 'H'] ['Rec. Fragment', 'fragment']\n", - "Rest fragments ['H'] ['fragment']\n", - "MERGED H23-C12-O6\n", - "small_set={130, 132, 134, 136, 137, 139, 141, 143, 145, 147, 149, 151, 62, 64, 66, 68, 70, 72, 82, 84, 86, 88, 89, 91, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 113, 115, 118, 120, 122, 124, 126}\n", - "len(found_molecule)=0\n", - "len(bigger_fragment)=1\n", - "len(not_merged)=0\n", - "final_remaining ['H23-C12-O6', 'H'] ['Rec. Fragment', 'fragment']\n", - "Fragments TO BE MERGED ['H23-C12-O6', 'H'] ['Rec. Fragment', 'fragment']\n", - "Rest fragments [] []\n", - "MERGED H24-C12-O6\n", - "small_set={128, 130, 132, 134, 136, 137, 139, 141, 143, 145, 147, 149, 151, 62, 64, 66, 68, 70, 72, 82, 84, 86, 88, 89, 91, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 113, 115, 118, 120, 122, 124, 126}\n", - "len(found_molecule)=1\n", - "len(bigger_fragment)=0\n", - "len(not_merged)=0\n", - "count=7\n", - "list_of_found_molecules=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 42\n", - " Formula = H24-C12-O6\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.reconstruct\n", - "---------------------------------------------------\n", - "]\n", - "Applying symmetry operations to reference 1\n", - "156 156\n", - "166\n", - "False\n", - "target_ref: H2-O\n", - "Group 2: ['H-O', 'H']\n", - "final_remaining ['H-O', 'H'] ['fragment', 'fragment']\n", - "Fragments TO BE MERGED ['H-O', 'H'] ['fragment', 'fragment']\n", - "Rest fragments [] []\n", - "MERGED H2-O\n", - "small_set={56, 12, 53}\n", - "len(found_molecule)=1\n", - "len(bigger_fragment)=0\n", - "len(not_merged)=0\n", - "count=1\n", - "list_of_found_molecules=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.reconstruct\n", - "---------------------------------------------------\n", - "]\n", - "Applying symmetry operations to reference 2\n", - "156 156\n", - "175\n", - "False\n", - "target_ref: H2-O\n", - "Group 2: ['H-O', 'H']\n", - "final_remaining ['H-O', 'H'] ['fragment', 'fragment']\n", - "Fragments TO BE MERGED ['H-O', 'H'] ['fragment', 'fragment']\n", - "Rest fragments [] []\n", - "MERGED H2-O\n", - "small_set={56, 12, 53}\n", - "len(found_molecule)=1\n", - "len(bigger_fragment)=0\n", - "len(not_merged)=0\n", - "count=1\n", - "list_of_found_molecules=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.reconstruct\n", - "---------------------------------------------------\n", - "]\n", - "Applying symmetry operations to reference 3\n", - "157 157\n", - "332\n", - "False\n", - "target_ref: H24-C12-O6\n", - "Group 1: ['H12-C7-O3', 'H10-C5-O3', 'H', 'H']\n", - "final_remaining ['H12-C7-O3', 'H10-C5-O3', 'H', 'H'] ['fragment', 'fragment', 'fragment', 'fragment']\n", - "Fragments TO BE MERGED ['H12-C7-O3', 'H10-C5-O3'] ['fragment', 'fragment']\n", - "Rest fragments ['H', 'H'] ['fragment', 'fragment']\n", - "MERGED H22-C12-O6\n", - "small_set={2, 3, 4, 5, 6, 7, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 44, 45, 46, 47, 48, 49, 50}\n", - "len(found_molecule)=0\n", - "len(bigger_fragment)=1\n", - "len(not_merged)=0\n", - "final_remaining ['H22-C12-O6', 'H', 'H'] ['Rec. Fragment', 'fragment', 'fragment']\n", - "Fragments TO BE MERGED ['H22-C12-O6', 'H'] ['Rec. Fragment', 'fragment']\n", - "Rest fragments ['H'] ['fragment']\n", - "MERGED H23-C12-O6\n", - "small_set={2, 3, 4, 5, 6, 7, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 44, 45, 46, 47, 48, 49, 50}\n", - "len(found_molecule)=0\n", - "len(bigger_fragment)=1\n", - "len(not_merged)=0\n", - "final_remaining ['H23-C12-O6', 'H'] ['Rec. Fragment', 'fragment']\n", - "Fragments TO BE MERGED ['H23-C12-O6', 'H'] ['Rec. Fragment', 'fragment']\n", - "Rest fragments [] []\n", - "MERGED H24-C12-O6\n", - "small_set={2, 3, 4, 5, 6, 7, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50}\n", - "len(found_molecule)=1\n", - "len(bigger_fragment)=0\n", - "len(not_merged)=0\n", - "count=3\n", - "list_of_found_molecules=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 42\n", - " Formula = H24-C12-O6\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.reconstruct\n", - "---------------------------------------------------\n", - "]\n", - "target_ref: H2-O\n", - "Group 3: ['H-O', 'H']\n", - "final_remaining ['H-O', 'H'] ['fragment', 'fragment']\n", - "Fragments TO BE MERGED ['H-O', 'H'] ['fragment', 'fragment']\n", - "Rest fragments [] []\n", - "MERGED H2-O\n", - "small_set={57, 13, 54}\n", - "len(found_molecule)=1\n", - "len(bigger_fragment)=0\n", - "len(not_merged)=0\n", - "count=1\n", - "list_of_found_molecules=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.reconstruct\n", - "---------------------------------------------------\n", - "]\n", - "target_ref: H24-C12-O6\n", - "Group 5: ['H12-C7-O3', 'H10-C5-O3', 'H', 'H']\n", - "final_remaining ['H12-C7-O3', 'H10-C5-O3', 'H', 'H'] ['fragment', 'fragment', 'fragment', 'fragment']\n", - "Fragments TO BE MERGED ['H12-C7-O3', 'H10-C5-O3'] ['fragment', 'fragment']\n", - "Rest fragments ['H', 'H'] ['fragment', 'fragment']\n", - "MERGED H22-C12-O6\n", - "small_set={129, 131, 133, 135, 140, 142, 144, 146, 148, 150, 152, 61, 63, 65, 67, 69, 71, 81, 83, 85, 87, 90, 92, 93, 95, 97, 99, 103, 105, 107, 109, 111, 114, 116, 117, 119, 121, 123, 125, 127}\n", - "len(found_molecule)=0\n", - "len(bigger_fragment)=1\n", - "len(not_merged)=0\n", - "final_remaining ['H22-C12-O6', 'H', 'H'] ['Rec. Fragment', 'fragment', 'fragment']\n", - "Fragments TO BE MERGED ['H22-C12-O6', 'H'] ['Rec. Fragment', 'fragment']\n", - "Rest fragments ['H'] ['fragment']\n", - "MERGED H23-C12-O6\n", - "small_set={129, 131, 133, 135, 140, 142, 144, 146, 148, 150, 152, 61, 63, 65, 67, 69, 71, 81, 83, 85, 87, 90, 92, 93, 95, 97, 99, 101, 103, 105, 107, 109, 111, 114, 116, 117, 119, 121, 123, 125, 127}\n", - "len(found_molecule)=0\n", - "len(bigger_fragment)=1\n", - "len(not_merged)=0\n", - "final_remaining ['H23-C12-O6', 'H'] ['Rec. Fragment', 'fragment']\n", - "Fragments TO BE MERGED ['H23-C12-O6', 'H'] ['Rec. Fragment', 'fragment']\n", - "Rest fragments [] []\n", - "MERGED H24-C12-O6\n", - "small_set={129, 131, 133, 135, 138, 140, 142, 144, 146, 148, 150, 152, 61, 63, 65, 67, 69, 71, 81, 83, 85, 87, 90, 92, 93, 95, 97, 99, 101, 103, 105, 107, 109, 111, 114, 116, 117, 119, 121, 123, 125, 127}\n", - "len(found_molecule)=1\n", - "len(bigger_fragment)=0\n", - "len(not_merged)=0\n", - "count=3\n", - "list_of_found_molecules=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 42\n", - " Formula = H24-C12-O6\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.reconstruct\n", - "---------------------------------------------------\n", - "]\n", - "target_ref: H24-C12-O6\n", - "Group 6: ['H12-C7-O3', 'H10-C5-O3', 'H', 'H']\n", - "final_remaining ['H12-C7-O3', 'H10-C5-O3', 'H', 'H'] ['fragment', 'fragment', 'fragment', 'fragment']\n", - "Fragments TO BE MERGED ['H12-C7-O3', 'H10-C5-O3'] ['fragment', 'fragment']\n", - "Rest fragments ['H', 'H'] ['fragment', 'fragment']\n", - "MERGED H22-C12-O6\n", - "small_set={128, 130, 132, 134, 136, 139, 141, 143, 145, 147, 149, 151, 62, 64, 66, 68, 70, 72, 82, 84, 86, 88, 89, 91, 94, 96, 98, 100, 104, 106, 108, 110, 112, 113, 115, 118, 120, 122, 124, 126}\n", - "len(found_molecule)=0\n", - "len(bigger_fragment)=1\n", - "len(not_merged)=0\n", - "final_remaining ['H22-C12-O6', 'H', 'H'] ['Rec. Fragment', 'fragment', 'fragment']\n", - "Fragments TO BE MERGED ['H22-C12-O6', 'H'] ['Rec. Fragment', 'fragment']\n", - "Rest fragments ['H'] ['fragment']\n", - "MERGED H23-C12-O6\n", - "small_set={128, 130, 132, 134, 136, 139, 141, 143, 145, 147, 149, 151, 62, 64, 66, 68, 70, 72, 82, 84, 86, 88, 89, 91, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 113, 115, 118, 120, 122, 124, 126}\n", - "len(found_molecule)=0\n", - "len(bigger_fragment)=1\n", - "len(not_merged)=0\n", - "final_remaining ['H23-C12-O6', 'H'] ['Rec. Fragment', 'fragment']\n", - "Fragments TO BE MERGED ['H23-C12-O6', 'H'] ['Rec. Fragment', 'fragment']\n", - "Rest fragments [] []\n", - "MERGED H24-C12-O6\n", - "small_set={128, 130, 132, 134, 136, 137, 139, 141, 143, 145, 147, 149, 151, 62, 64, 66, 68, 70, 72, 82, 84, 86, 88, 89, 91, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 113, 115, 118, 120, 122, 124, 126}\n", - "len(found_molecule)=1\n", - "len(bigger_fragment)=0\n", - "len(not_merged)=0\n", - "count=3\n", - "list_of_found_molecules=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 42\n", - " Formula = H24-C12-O6\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.reconstruct\n", - "---------------------------------------------------\n", - "]\n", - "Applying symmetry operations to reference 4\n", - "156 156\n", - "341\n", - "False\n", - "target_ref: H2-O\n", - "Group 3: ['H-O', 'H']\n", - "final_remaining ['H-O', 'H'] ['fragment', 'fragment']\n", - "Fragments TO BE MERGED ['H-O', 'H'] ['fragment', 'fragment']\n", - "Rest fragments [] []\n", - "MERGED H2-O\n", - "small_set={57, 13, 54}\n", - "len(found_molecule)=1\n", - "len(bigger_fragment)=0\n", - "len(not_merged)=0\n", - "count=1\n", - "list_of_found_molecules=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.reconstruct\n", - "---------------------------------------------------\n", - "]\n", - "Applying symmetry operations to reference 5\n", - "156 156\n", - "350\n", - "False\n", - "Applying symmetry operations to reference 6\n", - "157 157\n", - "507\n", - "False\n", - "target_ref: C6-O12-Fe\n", - "Group 0: ['C2-O4', 'C2-O3', 'C2-O3', 'O-Fe', 'O']\n", - "final_remaining ['C2-O4', 'C2-O3', 'C2-O3', 'O-Fe', 'O'] ['fragment', 'fragment', 'fragment', 'fragment', 'fragment']\n", - "Fragments TO BE MERGED ['C2-O4', 'C2-O3'] ['fragment', 'fragment']\n", - "Rest fragments ['C2-O3', 'O-Fe', 'O'] ['fragment', 'fragment', 'fragment']\n", - "NOT MERGED C2-O4 C2-O3\n", - "len(found_molecule)=0\n", - "len(bigger_fragment)=0\n", - "len(not_merged)=2\n", - "final_remaining ['C2-O4', 'C2-O3', 'O-Fe', 'O', 'C2-O3'] ['fragment', 'fragment', 'fragment', 'fragment', 'fragment']\n", - "Fragments TO BE MERGED ['C2-O4', 'C2-O3'] ['fragment', 'fragment']\n", - "Rest fragments ['O-Fe', 'O', 'C2-O3'] ['fragment', 'fragment', 'fragment']\n", - "NOT MERGED C2-O4 C2-O3\n", - "len(found_molecule)=0\n", - "len(bigger_fragment)=0\n", - "len(not_merged)=2\n", - "final_remaining ['C2-O4', 'O-Fe', 'O', 'C2-O3', 'C2-O3'] ['fragment', 'fragment', 'fragment', 'fragment', 'fragment']\n", - "Fragments TO BE MERGED ['C2-O4', 'O-Fe'] ['fragment', 'fragment']\n", - "Rest fragments ['O', 'C2-O3', 'C2-O3'] ['fragment', 'fragment', 'fragment']\n", - "MERGED C2-O5-Fe\n", - "small_set={1, 74, 10, 76, 78, 79, 154, 156}\n", - "len(found_molecule)=0\n", - "len(bigger_fragment)=1\n", - "len(not_merged)=0\n", - "final_remaining ['C2-O5-Fe', 'O', 'C2-O3', 'C2-O3'] ['Rec. Fragment', 'fragment', 'fragment', 'fragment']\n", - "Fragments TO BE MERGED ['C2-O5-Fe', 'O'] ['Rec. Fragment', 'fragment']\n", - "Rest fragments ['C2-O3', 'C2-O3'] ['fragment', 'fragment']\n", - "MERGED C2-O6-Fe\n", - "small_set={1, 74, 10, 76, 77, 78, 79, 154, 156}\n", - "len(found_molecule)=0\n", - "len(bigger_fragment)=1\n", - "len(not_merged)=0\n", - "final_remaining ['C2-O6-Fe', 'C2-O3', 'C2-O3'] ['Rec. Fragment', 'fragment', 'fragment']\n", - "Fragments TO BE MERGED ['C2-O6-Fe', 'C2-O3'] ['Rec. Fragment', 'fragment']\n", - "Rest fragments ['C2-O3'] ['fragment']\n", - "MERGED C4-O9-Fe\n", - "small_set={1, 73, 74, 10, 76, 77, 78, 79, 75, 80, 153, 154, 155, 156}\n", - "len(found_molecule)=0\n", - "len(bigger_fragment)=1\n", - "len(not_merged)=0\n", - "final_remaining ['C4-O9-Fe', 'C2-O3'] ['Rec. Fragment', 'fragment']\n", - "Fragments TO BE MERGED ['C4-O9-Fe', 'C2-O3'] ['Rec. Fragment', 'fragment']\n", - "Rest fragments [] []\n", - "MERGED C6-O12-Fe\n", - "small_set={1, 8, 9, 10, 11, 153, 154, 155, 156, 51, 52, 73, 74, 75, 76, 77, 78, 79, 80}\n", - "len(found_molecule)=1\n", - "len(bigger_fragment)=0\n", - "len(not_merged)=0\n", - "count=6\n", - "list_of_found_molecules=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 19\n", - " Formula = C6-O12-Fe\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.reconstruct\n", - "---------------------------------------------------\n", - "]\n", - "target_ref: H24-C12-O6\n", - "Group 1: ['H20-C12-O6', 'H', 'H', 'H', 'H']\n", - "final_remaining ['H20-C12-O6', 'H', 'H', 'H', 'H'] ['fragment', 'fragment', 'fragment', 'fragment', 'fragment']\n", - "Fragments TO BE MERGED ['H20-C12-O6', 'H'] ['fragment', 'fragment']\n", - "Rest fragments ['H', 'H', 'H'] ['fragment', 'fragment', 'fragment']\n", - "MERGED H21-C12-O6\n", - "small_set={2, 3, 4, 5, 6, 7, 15, 16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48}\n", - "len(found_molecule)=0\n", - "len(bigger_fragment)=1\n", - "len(not_merged)=0\n", - "final_remaining ['H21-C12-O6', 'H', 'H', 'H'] ['Rec. Fragment', 'fragment', 'fragment', 'fragment']\n", - "Fragments TO BE MERGED ['H21-C12-O6', 'H'] ['Rec. Fragment', 'fragment']\n", - "Rest fragments ['H', 'H'] ['fragment', 'fragment']\n", - "MERGED H22-C12-O6\n", - "small_set={2, 3, 4, 5, 6, 7, 15, 16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 50}\n", - "len(found_molecule)=0\n", - "len(bigger_fragment)=1\n", - "len(not_merged)=0\n", - "final_remaining ['H22-C12-O6', 'H', 'H'] ['Rec. Fragment', 'fragment', 'fragment']\n", - "Fragments TO BE MERGED ['H22-C12-O6', 'H'] ['Rec. Fragment', 'fragment']\n", - "Rest fragments ['H'] ['fragment']\n", - "MERGED H23-C12-O6\n", - "small_set={2, 3, 4, 5, 6, 7, 15, 16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50}\n", - "len(found_molecule)=0\n", - "len(bigger_fragment)=1\n", - "len(not_merged)=0\n", - "final_remaining ['H23-C12-O6', 'H'] ['Rec. Fragment', 'fragment']\n", - "Fragments TO BE MERGED ['H23-C12-O6', 'H'] ['Rec. Fragment', 'fragment']\n", - "Rest fragments [] []\n", - "MERGED H24-C12-O6\n", - "small_set={2, 3, 4, 5, 6, 7, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50}\n", - "len(found_molecule)=1\n", - "len(bigger_fragment)=0\n", - "len(not_merged)=0\n", - "count=4\n", - "list_of_found_molecules=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 42\n", - " Formula = H24-C12-O6\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.reconstruct\n", - "---------------------------------------------------\n", - "]\n", - "target_ref: H2-O\n", - "Group 3: ['H-O', 'H']\n", - "final_remaining ['H-O', 'H'] ['fragment', 'fragment']\n", - "Fragments TO BE MERGED ['H-O', 'H'] ['fragment', 'fragment']\n", - "Rest fragments [] []\n", - "MERGED H2-O\n", - "small_set={57, 13, 54}\n", - "len(found_molecule)=1\n", - "len(bigger_fragment)=0\n", - "len(not_merged)=0\n", - "count=1\n", - "list_of_found_molecules=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.reconstruct\n", - "---------------------------------------------------\n", - "]\n", - "target_ref: H24-C12-O6\n", - "Group 5: ['H9-C7-O3', 'H10-C5-O3', 'H', 'H', 'H', 'H', 'H']\n", - "final_remaining ['H9-C7-O3', 'H10-C5-O3', 'H', 'H', 'H', 'H', 'H'] ['fragment', 'fragment', 'fragment', 'fragment', 'fragment', 'fragment', 'fragment']\n", - "Fragments TO BE MERGED ['H9-C7-O3', 'H10-C5-O3'] ['fragment', 'fragment']\n", - "Rest fragments ['H', 'H', 'H', 'H', 'H'] ['fragment', 'fragment', 'fragment', 'fragment', 'fragment']\n", - "MERGED H19-C12-O6\n", - "small_set={129, 131, 133, 135, 138, 140, 142, 144, 146, 148, 61, 63, 65, 67, 69, 71, 81, 87, 90, 92, 93, 95, 97, 99, 101, 103, 105, 107, 109, 111, 114, 116, 117, 119, 123, 125, 127}\n", - "len(found_molecule)=0\n", - "len(bigger_fragment)=1\n", - "len(not_merged)=0\n", - "final_remaining ['H19-C12-O6', 'H', 'H', 'H', 'H', 'H'] ['Rec. Fragment', 'fragment', 'fragment', 'fragment', 'fragment', 'fragment']\n", - "Fragments TO BE MERGED ['H19-C12-O6', 'H'] ['Rec. Fragment', 'fragment']\n", - "Rest fragments ['H', 'H', 'H', 'H'] ['fragment', 'fragment', 'fragment', 'fragment']\n", - "MERGED H20-C12-O6\n", - "small_set={129, 131, 133, 135, 138, 140, 142, 144, 146, 148, 61, 63, 65, 67, 69, 71, 81, 83, 87, 90, 92, 93, 95, 97, 99, 101, 103, 105, 107, 109, 111, 114, 116, 117, 119, 123, 125, 127}\n", - "len(found_molecule)=0\n", - "len(bigger_fragment)=1\n", - "len(not_merged)=0\n", - "final_remaining ['H20-C12-O6', 'H', 'H', 'H', 'H'] ['Rec. Fragment', 'fragment', 'fragment', 'fragment', 'fragment']\n", - "Fragments TO BE MERGED ['H20-C12-O6', 'H'] ['Rec. Fragment', 'fragment']\n", - "Rest fragments ['H', 'H', 'H'] ['fragment', 'fragment', 'fragment']\n", - "MERGED H21-C12-O6\n", - "small_set={129, 131, 133, 135, 138, 140, 142, 144, 146, 148, 150, 61, 63, 65, 67, 69, 71, 81, 83, 87, 90, 92, 93, 95, 97, 99, 101, 103, 105, 107, 109, 111, 114, 116, 117, 119, 123, 125, 127}\n", - "len(found_molecule)=0\n", - "len(bigger_fragment)=1\n", - "len(not_merged)=0\n", - "final_remaining ['H21-C12-O6', 'H', 'H', 'H'] ['Rec. Fragment', 'fragment', 'fragment', 'fragment']\n", - "Fragments TO BE MERGED ['H21-C12-O6', 'H'] ['Rec. Fragment', 'fragment']\n", - "Rest fragments ['H', 'H'] ['fragment', 'fragment']\n", - "MERGED H22-C12-O6\n", - "small_set={129, 131, 133, 135, 138, 140, 142, 144, 146, 148, 150, 61, 63, 65, 67, 69, 71, 81, 83, 87, 90, 92, 93, 95, 97, 99, 101, 103, 105, 107, 109, 111, 114, 116, 117, 119, 121, 123, 125, 127}\n", - "len(found_molecule)=0\n", - "len(bigger_fragment)=1\n", - "len(not_merged)=0\n", - "final_remaining ['H22-C12-O6', 'H', 'H'] ['Rec. Fragment', 'fragment', 'fragment']\n", - "Fragments TO BE MERGED ['H22-C12-O6', 'H'] ['Rec. Fragment', 'fragment']\n", - "Rest fragments ['H'] ['fragment']\n", - "MERGED H23-C12-O6\n", - "small_set={129, 131, 133, 135, 138, 140, 142, 144, 146, 148, 150, 61, 63, 65, 67, 69, 71, 81, 83, 85, 87, 90, 92, 93, 95, 97, 99, 101, 103, 105, 107, 109, 111, 114, 116, 117, 119, 121, 123, 125, 127}\n", - "len(found_molecule)=0\n", - "len(bigger_fragment)=1\n", - "len(not_merged)=0\n", - "final_remaining ['H23-C12-O6', 'H'] ['Rec. Fragment', 'fragment']\n", - "Fragments TO BE MERGED ['H23-C12-O6', 'H'] ['Rec. Fragment', 'fragment']\n", - "Rest fragments [] []\n", - "MERGED H24-C12-O6\n", - "small_set={129, 131, 133, 135, 138, 140, 142, 144, 146, 148, 150, 152, 61, 63, 65, 67, 69, 71, 81, 83, 85, 87, 90, 92, 93, 95, 97, 99, 101, 103, 105, 107, 109, 111, 114, 116, 117, 119, 121, 123, 125, 127}\n", - "len(found_molecule)=1\n", - "len(bigger_fragment)=0\n", - "len(not_merged)=0\n", - "count=6\n", - "list_of_found_molecules=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 42\n", - " Formula = H24-C12-O6\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.reconstruct\n", - "---------------------------------------------------\n", - "]\n", - "target_ref: H24-C12-O6\n", - "Group 6: ['H9-C7-O3', 'H10-C5-O3', 'H', 'H', 'H', 'H', 'H']\n", - "final_remaining ['H9-C7-O3', 'H10-C5-O3', 'H', 'H', 'H', 'H', 'H'] ['fragment', 'fragment', 'fragment', 'fragment', 'fragment', 'fragment', 'fragment']\n", - "Fragments TO BE MERGED ['H9-C7-O3', 'H10-C5-O3'] ['fragment', 'fragment']\n", - "Rest fragments ['H', 'H', 'H', 'H', 'H'] ['fragment', 'fragment', 'fragment', 'fragment', 'fragment']\n", - "MERGED H19-C12-O6\n", - "small_set={128, 130, 132, 134, 136, 137, 139, 141, 143, 145, 147, 62, 64, 66, 68, 70, 72, 82, 88, 89, 91, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 113, 115, 118, 120, 124, 126}\n", - "len(found_molecule)=0\n", - "len(bigger_fragment)=1\n", - "len(not_merged)=0\n", - "final_remaining ['H19-C12-O6', 'H', 'H', 'H', 'H', 'H'] ['Rec. Fragment', 'fragment', 'fragment', 'fragment', 'fragment', 'fragment']\n", - "Fragments TO BE MERGED ['H19-C12-O6', 'H'] ['Rec. Fragment', 'fragment']\n", - "Rest fragments ['H', 'H', 'H', 'H'] ['fragment', 'fragment', 'fragment', 'fragment']\n", - "MERGED H20-C12-O6\n", - "small_set={128, 130, 132, 134, 136, 137, 139, 141, 143, 145, 147, 151, 62, 64, 66, 68, 70, 72, 82, 88, 89, 91, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 113, 115, 118, 120, 124, 126}\n", - "len(found_molecule)=0\n", - "len(bigger_fragment)=1\n", - "len(not_merged)=0\n", - "final_remaining ['H20-C12-O6', 'H', 'H', 'H', 'H'] ['Rec. Fragment', 'fragment', 'fragment', 'fragment', 'fragment']\n", - "Fragments TO BE MERGED ['H20-C12-O6', 'H'] ['Rec. Fragment', 'fragment']\n", - "Rest fragments ['H', 'H', 'H'] ['fragment', 'fragment', 'fragment']\n", - "MERGED H21-C12-O6\n", - "small_set={128, 130, 132, 134, 136, 137, 139, 141, 143, 145, 147, 149, 151, 62, 64, 66, 68, 70, 72, 82, 88, 89, 91, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 113, 115, 118, 120, 124, 126}\n", - "len(found_molecule)=0\n", - "len(bigger_fragment)=1\n", - "len(not_merged)=0\n", - "final_remaining ['H21-C12-O6', 'H', 'H', 'H'] ['Rec. Fragment', 'fragment', 'fragment', 'fragment']\n", - "Fragments TO BE MERGED ['H21-C12-O6', 'H'] ['Rec. Fragment', 'fragment']\n", - "Rest fragments ['H', 'H'] ['fragment', 'fragment']\n", - "MERGED H22-C12-O6\n", - "small_set={128, 130, 132, 134, 136, 137, 139, 141, 143, 145, 147, 149, 151, 62, 64, 66, 68, 70, 72, 82, 88, 89, 91, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 113, 115, 118, 120, 122, 124, 126}\n", - "len(found_molecule)=0\n", - "len(bigger_fragment)=1\n", - "len(not_merged)=0\n", - "final_remaining ['H22-C12-O6', 'H', 'H'] ['Rec. Fragment', 'fragment', 'fragment']\n", - "Fragments TO BE MERGED ['H22-C12-O6', 'H'] ['Rec. Fragment', 'fragment']\n", - "Rest fragments ['H'] ['fragment']\n", - "MERGED H23-C12-O6\n", - "small_set={128, 130, 132, 134, 136, 137, 139, 141, 143, 145, 147, 149, 151, 62, 64, 66, 68, 70, 72, 82, 86, 88, 89, 91, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 113, 115, 118, 120, 122, 124, 126}\n", - "len(found_molecule)=0\n", - "len(bigger_fragment)=1\n", - "len(not_merged)=0\n", - "final_remaining ['H23-C12-O6', 'H'] ['Rec. Fragment', 'fragment']\n", - "Fragments TO BE MERGED ['H23-C12-O6', 'H'] ['Rec. Fragment', 'fragment']\n", - "Rest fragments [] []\n", - "MERGED H24-C12-O6\n", - "small_set={128, 130, 132, 134, 136, 137, 139, 141, 143, 145, 147, 149, 151, 62, 64, 66, 68, 70, 72, 82, 84, 86, 88, 89, 91, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 113, 115, 118, 120, 122, 124, 126}\n", - "len(found_molecule)=1\n", - "len(bigger_fragment)=0\n", - "len(not_merged)=0\n", - "count=6\n", - "list_of_found_molecules=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 42\n", - " Formula = H24-C12-O6\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.reconstruct\n", - "---------------------------------------------------\n", - "]\n", - "Applying symmetry operations to reference 7\n", - "156 156\n", - "516\n", - "False\n", - "Applying symmetry operations to reference 8\n", - "156 156\n", - "525\n", - "True\n", - "target_ref: H2-O\n", - "Group 3: ['H-O', 'H']\n", - "final_remaining ['H-O', 'H'] ['fragment', 'fragment']\n", - "Fragments TO BE MERGED ['H-O', 'H'] ['fragment', 'fragment']\n", - "Rest fragments [] []\n", - "MERGED H2-O\n", - "small_set={57, 13, 54}\n", - "len(found_molecule)=1\n", - "len(bigger_fragment)=0\n", - "len(not_merged)=0\n", - "count=1\n", - "list_of_found_molecules=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.reconstruct\n", - "---------------------------------------------------\n", - "]\n", - "Reconstructed successfully\n" - ] - } - ], - "source": [ - "from new_cell_reconstruction import *\n", - "all_molecules, reconstructed_molecules = reconstuct(ref_molecule, newcell, cell_pos, cell_fracs, cell_vector, sym_ops, debug=0)" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "id": "75af0d41-39ee-4de8-aeb9-df8f9e496ea5", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "(30, 18)" - ] - }, - "execution_count": 17, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "len(all_molecules), len(reconstructed_molecules)" - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "id": "6d075f32-03de-4ac7-9e22-cd42bc106cc7", - "metadata": {}, - "outputs": [], - "source": [ - "newcell.moleclist = []\n", - "newcell.moleclist.extend(all_molecules)\n", - "newcell.moleclist.extend(reconstructed_molecules)" - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "id": "6aecf0a8-821f-4e6f-b10b-b399915095a9", - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "data": { - "text/plain": [ - "------------- Cell2mol CELL Object ----------------\n", - " Version = 2.0\n", - " Type = cell\n", - " Sub-Type = unit_cell\n", - " Name (Refcode) = BOFFOS\n", - " Num Atoms = 525\n", - " Cell Parameters a:c = [24.369, 24.369, 9.748]\n", - " Cell Parameters al:ga = [90.0, 90.0, 120.0]\n", - " # Molecules: = 48\n", - " With Formulae: \n", - " 0: H2-O \n", - " 1: H2-O \n", - " 2: K \n", - " 3: K \n", - " 4: K \n", - " 5: H2-O \n", - " 6: H2-O \n", - " 7: H2-O \n", - " 8: H2-O \n", - " 9: C6-O12-Fe \n", - " 10: H2-O \n", - " 11: H2-O \n", - " 12: K \n", - " 13: K \n", - " 14: K \n", - " 15: H2-O \n", - " 16: H2-O \n", - " 17: H2-O \n", - " 18: H2-O \n", - " 19: H2-O \n", - " 20: H2-O \n", - " 21: H2-O \n", - " 22: K \n", - " 23: K \n", - " 24: K \n", - " 25: H2-O \n", - " 26: H2-O \n", - " 27: H2-O \n", - " 28: H2-O \n", - " 29: H2-O \n", - " 30: C6-O12-Fe \n", - " 31: H24-C12-O6 \n", - " 32: H2-O \n", - " 33: H24-C12-O6 \n", - " 34: H24-C12-O6 \n", - " 35: H2-O \n", - " 36: H2-O \n", - " 37: H24-C12-O6 \n", - " 38: H2-O \n", - " 39: H24-C12-O6 \n", - " 40: H24-C12-O6 \n", - " 41: H2-O \n", - " 42: C6-O12-Fe \n", - " 43: H24-C12-O6 \n", - " 44: H2-O \n", - " 45: H24-C12-O6 \n", - " 46: H24-C12-O6 \n", - " 47: H2-O \n", - "---------------------------------------------------\n", - " # of Ref Molecules: = 10\n", - " With Formulae: \n", - " 0: C6-O12-Fe \n", - " 1: H24-C12-O6 \n", - " 2: H2-O \n", - " 3: H2-O \n", - " 4: H2-O \n", - " 5: H24-C12-O6 \n", - " 6: H24-C12-O6 \n", - " 7: K \n", - " 8: K \n", - " 9: K " - ] - }, - "execution_count": 19, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "newcell" - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "id": "2f6ddd7e-aa15-46cf-838a-6277c48fd116", - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "data": { - "text/plain": [ - "[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.classify_fragments\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.classify_fragments\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = K\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.classify_fragments\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = K\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.classify_fragments\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = K\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.classify_fragments\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.classify_fragments\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.classify_fragments\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.classify_fragments\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.classify_fragments\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 19\n", - " Formula = C6-O12-Fe\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.classify_fragments\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.classify_fragments\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.classify_fragments\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = K\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.classify_fragments\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = K\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.classify_fragments\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = K\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.classify_fragments\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.classify_fragments\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.classify_fragments\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.classify_fragments\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.classify_fragments\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.classify_fragments\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.classify_fragments\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.classify_fragments\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = K\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.classify_fragments\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = K\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.classify_fragments\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = K\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.classify_fragments\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.classify_fragments\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.classify_fragments\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.classify_fragments\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.classify_fragments\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.classify_fragments\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 19\n", - " Formula = C6-O12-Fe\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.reconstruct\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 42\n", - " Formula = H24-C12-O6\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.reconstruct\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.reconstruct\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 42\n", - " Formula = H24-C12-O6\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.reconstruct\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 42\n", - " Formula = H24-C12-O6\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.reconstruct\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.reconstruct\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.reconstruct\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 42\n", - " Formula = H24-C12-O6\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.reconstruct\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.reconstruct\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 42\n", - " Formula = H24-C12-O6\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.reconstruct\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 42\n", - " Formula = H24-C12-O6\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.reconstruct\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.reconstruct\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 19\n", - " Formula = C6-O12-Fe\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.reconstruct\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 42\n", - " Formula = H24-C12-O6\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.reconstruct\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.reconstruct\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 42\n", - " Formula = H24-C12-O6\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.reconstruct\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 42\n", - " Formula = H24-C12-O6\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.reconstruct\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.reconstruct\n", - " ---------------------------------------------------]" - ] - }, - "execution_count": 20, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "newcell.moleclist" - ] - }, - { - "cell_type": "code", - "execution_count": 25, - "id": "8ea78a37-51d3-4f20-94a2-3c0186fb46e2", - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "------------- Cell2mol Charge State ---------------\n", - " Status = True\n", - " Smiles = O=C([O-])C(=O)[O-]\n", - " Charge Tried = -2\n", - " Uncorrected Total Charge = -2\n", - " Corrected Total Charge = -2\n", - " Corrected Absolute Total Charge = 2\n", - " Corrected Is Zwitterion? = False\n", - "---------------------------------------------------\n", - "\n", - "3.0\n", - "------------- Cell2mol Charge State ---------------\n", - " Status = True\n", - " Smiles = [H]C1([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC1([H])[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", - "\n", - "------------- Cell2mol Charge State ---------------\n", - " Status = True\n", - " Smiles = [H]O[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", - "\n", - "------------- Cell2mol Charge State ---------------\n", - " Status = True\n", - " Smiles = [K+]\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", - "\n" - ] - } - ], - "source": [ - "for specie in refcell.unique_species:\n", - " if specie.subtype == \"metal\":\n", - " print(specie.charge)\n", - " else:\n", - " print(specie.charge_state) " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "edd454b8-ada7-4424-98de-df6d7592b244", - "metadata": {}, - "outputs": [], - "source": [ - "######################################################\n", - "def set_charge_state(unique_specie, target, debug: int=0):\n", - " \n", - " prot = unique_specie.charge_state.protonation\n", - " final_charge = unique_specie.totcharge\n", - "\n", - " # For \"reference\" cell\n", - " ref_data, target_data = arrange_data_for_reorder(unique_specie, target)\n", - " if debug >=2 : print(ref_data, target_data)\n", - " dummy1, dummy2, map12 = reorder(ref_data, target_data, unique_specie.coord, target.coord)\n", - " \n", - " if np.array_equal(map12, np.arange(len(target_data))):\n", - " if debug >=1 : print(f\"({target.subtype}) {target.formula} {final_charge=} No need to reorder\")\n", - " cs = get_charge(final_charge, prot)\n", - " target.set_charges(cs.corr_total_charge, cs.corr_atom_charges, cs.smiles, cs.rdkit_obj)\n", - " \n", - " else:\n", - " temp_prot = copy.deepcopy(prot)\n", - " reordered_prot = temp_prot.reorder(map12)\n", - " # print(f\"{reordered_prot=}\")\n", - " # print(f\"{temp_prot=}\")\n", - " # print(f\"{prot=}\")\n", - " # print(map12)\n", - " if debug >=1 : print(f\"({target.subtype}) {target.formula} {final_charge=} Reordered {map12=}\")\n", - " cs = get_charge(final_charge, reordered_prot)\n", - " target.set_charges(cs.corr_total_charge, cs.corr_atom_charges, cs.smiles, cs.rdkit_obj)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "e25c4768-6206-4ea8-a5c0-eb0f386024cf", - "metadata": {}, - "outputs": [], - "source": [ - "# Add parent to all molecules & reconstructed molecules in unit cell " - ] - }, - { - "cell_type": "code", - "execution_count": 30, - "id": "ed7ed326-e2af-4990-b68c-71670031421a", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "H2-O [('unit_cell', 525)] [[120, 489, 516]]\n", - "H2-O [('unit_cell', 525)] [[111, 480, 507]]\n", - "K [('unit_cell', 525)] [[1]]\n", - "K [('unit_cell', 525)] [[2]]\n", - "K [('unit_cell', 525)] [[0]]\n", - "H2-O [('unit_cell', 525)] [[121, 490, 517]]\n", - "H2-O [('unit_cell', 525)] [[112, 481, 508]]\n", - "H2-O [('unit_cell', 525)] [[122, 491, 518]]\n", - "H2-O [('unit_cell', 525)] [[113, 482, 509]]\n", - "C6-O12-Fe [('unit_cell', 525)] [[10, 69, 70, 71, 78, 79, 80, 87, 88, 89, 96, 97, 98, 456, 457, 458, 465, 466, 467]]\n", - "H2-O [('unit_cell', 525)] [[123, 492, 519]]\n", - "H2-O [('unit_cell', 525)] [[105, 474, 501]]\n", - "K [('unit_cell', 525)] [[5]]\n", - "K [('unit_cell', 525)] [[4]]\n", - "K [('unit_cell', 525)] [[3]]\n", - "H2-O [('unit_cell', 525)] [[124, 493, 520]]\n", - "H2-O [('unit_cell', 525)] [[106, 475, 502]]\n", - "H2-O [('unit_cell', 525)] [[125, 494, 521]]\n", - "H2-O [('unit_cell', 525)] [[116, 485, 512]]\n", - "H2-O [('unit_cell', 525)] [[107, 476, 503]]\n", - "H2-O [('unit_cell', 525)] [[126, 495, 522]]\n", - "H2-O [('unit_cell', 525)] [[108, 477, 504]]\n", - "K [('unit_cell', 525)] [[8]]\n", - "K [('unit_cell', 525)] [[7]]\n", - "K [('unit_cell', 525)] [[6]]\n", - "H2-O [('unit_cell', 525)] [[127, 496, 523]]\n", - "H2-O [('unit_cell', 525)] [[118, 487, 514]]\n", - "H2-O [('unit_cell', 525)] [[109, 478, 505]]\n", - "H2-O [('unit_cell', 525)] [[128, 497, 524]]\n", - "H2-O [('unit_cell', 525)] [[110, 479, 506]]\n", - "C6-O12-Fe [] []\n", - "H24-C12-O6 [] []\n", - "H2-O [] []\n", - "H24-C12-O6 [] []\n", - "H24-C12-O6 [] []\n", - "H2-O [] []\n", - "H2-O [] []\n", - "H24-C12-O6 [] []\n", - "H2-O [] []\n", - "H24-C12-O6 [] []\n", - "H24-C12-O6 [] []\n", - "H2-O [] []\n", - "C6-O12-Fe [] []\n", - "H24-C12-O6 [] []\n", - "H2-O [] []\n", - "H24-C12-O6 [] []\n", - "H24-C12-O6 [] []\n", - "H2-O [] []\n" - ] - } - ], - "source": [ - "for mol in newcell.moleclist:\n", - " print(mol.formula, [(p.subtype, p.natoms) for p in mol.parents], mol.parents_indices)" - ] - }, - { - "cell_type": "code", - "execution_count": 28, - "id": "8e6485cc-a9fc-4b02-8348-70e426185fce", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Molecule 0: H2-O\n", - "H2-O H2-O True\n", - "\n", - "Molecule 1: H2-O\n", - "H2-O H2-O True\n", - "\n", - "Molecule 2: K\n", - "K K True\n", - "\n", - "Molecule 3: K\n", - "K K True\n", - "\n", - "Molecule 4: K\n", - "K K True\n", - "\n", - "Molecule 5: H2-O\n", - "H2-O H2-O True\n", - "\n", - "Molecule 6: H2-O\n", - "H2-O H2-O True\n", - "\n", - "Molecule 7: H2-O\n", - "H2-O H2-O True\n", - "\n", - "Molecule 8: H2-O\n", - "H2-O H2-O True\n", - "\n", - "Molecule 9: C6-O12-Fe\n" - ] - }, - { - "ename": "AttributeError", - "evalue": "'molecule' object has no attribute 'ligands'", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mAttributeError\u001b[0m Traceback (most recent call last)", - "Input \u001b[0;32mIn [28]\u001b[0m, in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mMolecule \u001b[39m\u001b[38;5;132;01m{\u001b[39;00midx\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m: \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mmol\u001b[38;5;241m.\u001b[39mformula\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m\"\u001b[39m)\n\u001b[1;32m 5\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m mol\u001b[38;5;241m.\u001b[39miscomplex:\n\u001b[0;32m----> 6\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m jdx, lig \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28menumerate\u001b[39m(\u001b[43mmol\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mligands\u001b[49m):\n\u001b[1;32m 7\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[1;32m 8\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m specie\u001b[38;5;241m.\u001b[39msubtype \u001b[38;5;241m==\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mligand\u001b[39m\u001b[38;5;124m\"\u001b[39m:\n", - "\u001b[0;31mAttributeError\u001b[0m: 'molecule' object has no attribute 'ligands'" - ] - } - ], - "source": [ - "from cell2mol.connectivity import compare_species, compare_metals\n", - "from new_charge_assignment import *\n", - "for idx, mol in enumerate(newcell.moleclist):\n", - " print(f\"Molecule {idx}: {mol.formula}\")\n", - " if mol.iscomplex:\n", - " for jdx, lig in enumerate(mol.ligands):\n", - " for specie in refcell.unique_species:\n", - " if specie.subtype == \"ligand\":\n", - " issame = compare_species(lig, specie)\n", - " if issame:\n", - " # set_charge_state(specie, lig)\n", - " print(lig.formula, specie.formula, issame)\n", - " for met in mol.metals:\n", - " for specie in refcell.unique_species:\n", - " if specie.subtype == \"metal\":\n", - " issame = compare_metals(met, specie)\n", - " if issame:\n", - " # met.set_charge(specie.charge)\n", - " print(met.formula, specie.formula, issame) \n", - " else:\n", - " for specie in refcell.unique_species: \n", - " if specie.subtype == \"molecule\":\n", - " issame = compare_species(mol, specie)\n", - " if issame:\n", - " # set_charge_state(specie, mol)\n", - " print(mol.formula, specie.formula, issame)\n", - " print(\"\")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "5a5db136-bcde-4469-b413-0c63942465a2", - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "cell2mol", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.10.6" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/cell2mol/test/Cell_reconstruction_Assign.ipynb b/cell2mol/test/Cell_reconstruction_Assign.ipynb deleted file mode 100644 index 20b519bb8..000000000 --- a/cell2mol/test/Cell_reconstruction_Assign.ipynb +++ /dev/null @@ -1,2682 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 11, - "id": "da7c39aa-eeb1-4d30-a41a-d33ab8b580ab", - "metadata": {}, - "outputs": [ - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "2fbe4fe490f74d9b89353bcd8ccae5f0", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "from scipy import sparse\n", - "from ase.build import molecule\n", - "from ase.neighborlist import get_connectivity_matrix\n", - "from ase.neighborlist import natural_cutoffs\n", - "from ase.neighborlist import NeighborList\n", - "import ase\n", - "import numpy as np\n", - "from ase.io import read\n", - "from ase import Atoms\n", - "import ase.visualize\n", - "from ase.visualize.plot import plot_atoms\n", - "from cell2mol.read_write import readinfo\n", - "from cell2mol.cell_operations import frac2cart_fromparam, cart2frac\n", - "import nglview\n", - "from ase.build import molecule\n", - "from ase.neighborlist import NeighborList\n", - "import matplotlib.pyplot as plt" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "3a776eba", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[0, 2, 3, 4, 5, 6]\n" - ] - } - ], - "source": [ - "def find_unique_closest_indices(first_list, second_list):\n", - " # Store the index and the minimum difference for each element type from the first list\n", - " closest_info = []\n", - "\n", - " # Loop through each element in the first list\n", - " for i, (type1, value1) in enumerate(first_list):\n", - " min_diff = float('inf')\n", - " min_index = None\n", - " \n", - " # Compare with each element in the second list\n", - " for j, (type2, value2) in enumerate(second_list):\n", - " # Only consider if the types match\n", - " if type1 == type2:\n", - " diff = abs(value1 - value2)\n", - " # Check if this difference is the smallest found so far and the index is not already used\n", - " if diff < min_diff and all(j != used_index for _, used_index, _ in closest_info):\n", - " min_diff = diff\n", - " min_index = j\n", - "\n", - " # Append the closest match info if a match is found\n", - " if min_index is not None:\n", - " closest_info.append((i, min_index, min_diff))\n", - "\n", - " # We now have the closest index for each item in first_list, but we need to ensure uniqueness\n", - " # Sort by minimum difference to prioritize closest matches\n", - " closest_info.sort(key=lambda x: x[2])\n", - "\n", - " # Ensure indices from the second list are used only once\n", - " used_indices = set()\n", - " unique_indices = []\n", - "\n", - " for info in closest_info:\n", - " if info[1] not in used_indices:\n", - " used_indices.add(info[1])\n", - " unique_indices.append(info[1])\n", - "\n", - " # Return the indices sorted\n", - " return sorted(unique_indices)\n", - "\n", - "# Example usage:\n", - "first_list = [('O', 1.9973), ('P', 2.223985), ('P', 2.237114), ('P', 2.1522), ('C', 1.999774), ('C', 2.030228)]\n", - "second_list = [('O', 1.997301), ('O', 4.688058), ('P', 2.223985), ('P', 2.237115), ('P', 2.152199),\n", - " ('C', 1.999774), ('C', 2.030227), ('C', 2.838303), ('C', 4.17869), ('H', 4.670193), ('C', 5.148136), \n", - " ('H', 6.17676), ('C', 5.141537), ('H', 6.161611), ('C', 4.136116), ('C', 2.779311), ('C', 6.087867), \n", - " ('H', 6.552018), ('H', 6.550176), ('H', 6.572482), ('C', 3.383277), ('H', 4.369425), ('H', 3.432583),\n", - " ('H', 3.590242), ('C', 3.626008), ('H', 3.905437), ('H', 3.842526), ('H', 4.530031), ('C', 3.358976), \n", - " ('H', 4.336857), ('H', 3.613458), ('H', 3.34665), ('C', 3.570078), ('H', 3.780718), ('H', 3.782666), \n", - " ('H', 4.504982), ('C', 3.432359), ('H', 4.401155), ('H', 3.617884), ('H', 3.533295), ('C', 3.456126), ('H', 4.425619), ('H', 3.693575), ('H', 3.546644), ('C', 3.4377), ('H', 3.698282), ('H', 3.588178), ('H', 4.378319), ('C', 3.389589), ('H', 3.61227), ('H', 3.522002), ('H', 4.34803), ('C', 3.39628), ('H', 4.351159), ('H', 3.579298), ('H', 3.576251), ('H', 2.741961), ('H', 2.722437), ('H', 2.591277)]\n", - "\n", - "indices = find_unique_closest_indices(first_list, second_list)\n", - "print(indices)\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "1fe86487", - "metadata": {}, - "outputs": [], - "source": [ - "def get_coord_sphere_list (mol, metals, coord_sphere):\n", - " coordinating_list = []\n", - " metal_index_from_mol = np.where([x in metals for x in mol.get_chemical_symbols()])[0]\n", - " non_metal_indices_from_mol = np.where([not x in metals for x in mol.get_chemical_symbols()])[0]\n", - "\n", - " met_idx = metal_index_from_mol[0]\n", - " symbols = mol.get_chemical_symbols()\n", - "\n", - "\n", - " for idx in non_metal_indices_from_mol:\n", - " for atom in coord_sphere:\n", - " if symbols[idx] == atom.label and mol[idx].position == atom.position:\n", - " print(met_idx, symbols[met_idx], mol[met_idx].position, \\\n", - " idx, symbols[idx], mol[idx].position, atom.label, atom.position)\n", - " coordinating_list.append(idx)\n", - "\n", - " print(f\"{len(coordinating_list)=} {coordinating_list=} elements={np.array(symbols)[coordinating_list]}\")\n", - " return np.array(coordinating_list)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "7639a08e", - "metadata": {}, - "outputs": [], - "source": [ - "refcell = np.load(f\"Ref_Cell_{name}_NEW.cell\", allow_pickle=True)\n", - "for ref in refcell.refmoleclist:\n", - " if ref.iscomplex:\n", - " met = ref.metals[0]\n", - "for a in met.coord_sphere:\n", - " a.coord" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "33fcc8f6-a260-4d5d-b388-46bcb94eab08", - "metadata": {}, - "outputs": [], - "source": [ - "folder = \"error_2\"\n", - "name = \"BOFFOS\"\n", - "infopath = f\"{folder}/{name}/{name}.info\"\n", - "input_path = f\"{folder}/{name}/{name}.cif\"" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "c8707364-33c5-477b-9a39-c18cb417ffd7", - "metadata": {}, - "outputs": [], - "source": [ - "labels, pos, ref_labels, ref_fracs, cellvec, cell_param = readinfo(infopath)" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "e86839c1-a7f4-4fad-a88b-e2abaf7ea3dd", - "metadata": {}, - "outputs": [], - "source": [ - "refcell = np.load(f\"{folder}/{name}/Ref_Cell_{name}_NEW.cell\", allow_pickle=True)" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "id": "64dbc5df-2ad3-4b20-bd4d-aa9b9a845908", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "------------- Cell2mol CELL Object ----------------\n", - " Version = 2.0\n", - " Type = cell\n", - " Sub-Type = reference\n", - " Name (Refcode) = BOFFOS\n", - " Num Atoms = 157\n", - " Cell Parameters a:c = [24.369, 24.369, 9.748]\n", - " Cell Parameters al:ga = [90.0, 90.0, 120.0]\n", - "---------------------------------------------------\n", - " # of Ref Molecules: = 10\n", - " With Formulae: \n", - " 0: C6-O12-Fe \n", - " 1: H24-C12-O6 \n", - " 2: H2-O \n", - " 3: H2-O \n", - " 4: H2-O \n", - " 5: H24-C12-O6 \n", - " 6: H24-C12-O6 \n", - " 7: K \n", - " 8: K \n", - " 9: K " - ] - }, - "execution_count": 5, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "refcell" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "id": "245d26c1-9d62-483a-a1b7-f7a2d0594ace", - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 0 and 59 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 0 and 60 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 2 and 61 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 2 and 62 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 3 and 63 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 3 and 64 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 4 and 65 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 4 and 66 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 5 and 67 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 5 and 68 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 6 and 69 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 6 and 70 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 7 and 71 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 7 and 72 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 8 and 73 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 8 and 74 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 9 and 75 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 9 and 76 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 10 and 77 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 10 and 78 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 11 and 79 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 11 and 80 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 15 and 81 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 15 and 82 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 16 and 83 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 16 and 84 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 17 and 85 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 17 and 86 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 18 and 87 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 18 and 88 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 19 and 89 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 19 and 90 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 20 and 91 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 20 and 92 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 21 and 93 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 21 and 94 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 22 and 95 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 22 and 96 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 23 and 97 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 23 and 98 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 24 and 99 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 24 and 100 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 25 and 101 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 25 and 102 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 26 and 103 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 26 and 104 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 27 and 105 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 27 and 106 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 28 and 107 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 28 and 108 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 29 and 109 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 29 and 110 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 30 and 111 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 30 and 112 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 31 and 113 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 31 and 114 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 32 and 115 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 32 and 116 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 33 and 117 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 33 and 118 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 34 and 119 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 34 and 120 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 35 and 121 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 35 and 122 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 36 and 123 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 36 and 124 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 37 and 125 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 37 and 126 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 38 and 127 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 38 and 128 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 39 and 129 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 39 and 130 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 40 and 131 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 40 and 132 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 41 and 133 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 41 and 134 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 42 and 135 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 42 and 136 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 43 and 137 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 43 and 138 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 44 and 139 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 44 and 140 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 45 and 141 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 45 and 142 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 46 and 143 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 46 and 144 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 47 and 145 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 47 and 146 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 48 and 147 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 48 and 148 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 49 and 149 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 49 and 150 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 50 and 151 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 50 and 152 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 51 and 153 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 51 and 154 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 52 and 155 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 52 and 156 are equivalent\n" - ] - } - ], - "source": [ - "atoms = read(input_path)\n", - "cell_labels = atoms.get_chemical_symbols()\n", - "cell_pos = atoms.positions\n", - "cell_fracs = atoms.get_scaled_positions()\n", - "cell_vector = atoms.cell.array\n", - "# cell_parameters = atoms.cell.cellpar()\n", - "space_group = atoms.info['spacegroup']\n", - "sym_ops = space_group.get_op()" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "id": "f4dcf3bb-2532-4412-a519-33517b19c4f9", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 9, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "plot_atoms(atoms)" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "id": "7d274045-9246-41cb-b779-ab8fe754bb92", - "metadata": {}, - "outputs": [], - "source": [ - "ref_molecule = Atoms(symbols=refcell.labels, scaled_positions=refcell.frac_coord, cell=cell_vector, pbc=True)" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "id": "064dfe31-c596-434d-8996-bb24facef38b", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 8, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "plot_atoms(ref_molecule)" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "id": "d2b124d8-5de1-4a60-b48b-ef0a55312e0f", - "metadata": {}, - "outputs": [], - "source": [ - "from cell2mol.new_cell_reconstruction import apply_symmetry_operations_reference" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "id": "a8a044c6-f5b8-4d7c-9d20-246ae197ecac", - "metadata": {}, - "outputs": [], - "source": [ - "new_structures = apply_symmetry_operations_reference(ref_molecule, cell_vector, sym_ops)" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "id": "eef56954-9f58-4d8c-aa0b-16604793c34f", - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "data": { - "text/plain": [ - "[Atoms(symbols='C42H78FeK3O33', pbc=False, cell=[[24.369, 0.0, 0.0], [-12.184499999999995, 21.10417306482299, 0.0], [0.0, 0.0, 9.748]]),\n", - " Atoms(symbols='C42H78FeK3O33', pbc=False, cell=[[24.369, 0.0, 0.0], [-12.184499999999995, 21.10417306482299, 0.0], [0.0, 0.0, 9.748]]),\n", - " Atoms(symbols='C42H78FeK3O33', pbc=False, cell=[[24.369, 0.0, 0.0], [-12.184499999999995, 21.10417306482299, 0.0], [0.0, 0.0, 9.748]]),\n", - " Atoms(symbols='C42H78FeK3O33', pbc=False, cell=[[24.369, 0.0, 0.0], [-12.184499999999995, 21.10417306482299, 0.0], [0.0, 0.0, 9.748]]),\n", - " Atoms(symbols='C42H78FeK3O33', pbc=False, cell=[[24.369, 0.0, 0.0], [-12.184499999999995, 21.10417306482299, 0.0], [0.0, 0.0, 9.748]]),\n", - " Atoms(symbols='C42H78FeK3O33', pbc=False, cell=[[24.369, 0.0, 0.0], [-12.184499999999995, 21.10417306482299, 0.0], [0.0, 0.0, 9.748]]),\n", - " Atoms(symbols='C42H78FeK3O33', pbc=False, cell=[[24.369, 0.0, 0.0], [-12.184499999999995, 21.10417306482299, 0.0], [0.0, 0.0, 9.748]]),\n", - " Atoms(symbols='C42H78FeK3O33', pbc=False, cell=[[24.369, 0.0, 0.0], [-12.184499999999995, 21.10417306482299, 0.0], [0.0, 0.0, 9.748]]),\n", - " Atoms(symbols='C42H78FeK3O33', pbc=False, cell=[[24.369, 0.0, 0.0], [-12.184499999999995, 21.10417306482299, 0.0], [0.0, 0.0, 9.748]])]" - ] - }, - "execution_count": 12, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "new_structures" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "id": "9b1cf17e-d413-4d96-b360-25793cce9d1c", - "metadata": {}, - "outputs": [ - { - "ename": "NameError", - "evalue": "name 'plot_atoms' is not defined", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", - "Input \u001b[0;32mIn [10]\u001b[0m, in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0m \u001b[43mplot_atoms\u001b[49m(new_structures[\u001b[38;5;241m1\u001b[39m])\n", - "\u001b[0;31mNameError\u001b[0m: name 'plot_atoms' is not defined" - ] - } - ], - "source": [ - "plot_atoms(new_structures[1])" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "id": "ff39fd42-87a7-4c86-a189-260fefb4715a", - "metadata": {}, - "outputs": [ - { - "ename": "NameError", - "evalue": "name 'plot_atoms' is not defined", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", - "Input \u001b[0;32mIn [6]\u001b[0m, in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0m \u001b[43mplot_atoms\u001b[49m(new_structures[\u001b[38;5;241m2\u001b[39m])\n", - "\u001b[0;31mNameError\u001b[0m: name 'plot_atoms' is not defined" - ] - } - ], - "source": [ - "plot_atoms(new_structures[2])" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "id": "a1010c08-df70-48d2-9c95-e103b4e35fb3", - "metadata": {}, - "outputs": [ - { - "ename": "NameError", - "evalue": "name 'plot_atoms' is not defined", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", - "Input \u001b[0;32mIn [7]\u001b[0m, in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0m \u001b[43mplot_atoms\u001b[49m(new_structures[\u001b[38;5;241m3\u001b[39m])\n", - "\u001b[0;31mNameError\u001b[0m: name 'plot_atoms' is not defined" - ] - } - ], - "source": [ - "plot_atoms(new_structures[3])" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "id": "c4db32e4-133e-43bc-9e1f-deb95cd5b9ee", - "metadata": {}, - "outputs": [ - { - "ename": "NameError", - "evalue": "name 'plot_atoms' is not defined", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", - "Input \u001b[0;32mIn [9]\u001b[0m, in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0m \u001b[43mplot_atoms\u001b[49m(new_structures[\u001b[38;5;241m4\u001b[39m])\n", - "\u001b[0;31mNameError\u001b[0m: name 'plot_atoms' is not defined" - ] - } - ], - "source": [ - "plot_atoms(new_structures[4])" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "c4afc4f7-e2f1-4c54-b887-09139839e538", - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": 9, - "id": "9047ed09-e31c-400d-9234-812888587760", - "metadata": {}, - "outputs": [], - "source": [ - "from cell2mol.classes import cell\n", - "newcell = cell(name, cell_labels, cell_pos, cell_fracs, cell_vector, cell_param)\n", - "newcell.get_subtype(\"unit_cell\")" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "id": "e4af6668-a0ac-47ba-8929-546b628772ef", - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "#########################################\n", - " GETREFS: Generate reference molecules \n", - "#########################################\n", - "GETREFS: found 10 reference molecules\n", - "GETREFS: ['C6-O12-Fe', 'H24-C12-O6', 'H2-O', 'H2-O', 'H2-O', 'H24-C12-O6', 'H24-C12-O6', 'K', 'K', 'K']\n", - "GETREFS: [------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 19\n", - " Formula = C6-O12-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 MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 42\n", - " Formula = H24-C12-O6\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 42\n", - " Formula = H24-C12-O6\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 42\n", - " Formula = H24-C12-O6\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = K\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = K\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = K\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - "]\n", - "GETREFS: working with C6-O12-Fe\n", - "GETREFS: working with H24-C12-O6\n", - "GETREFS: working with H2-O\n", - "GETREFS: working with H2-O\n", - "GETREFS: working with H2-O\n", - "GETREFS: working with H24-C12-O6\n", - "GETREFS: working with H24-C12-O6\n", - "GETREFS: working with K\n", - "GETREFS: working with K\n", - "GETREFS: working with K\n" - ] - }, - { - "data": { - "text/plain": [ - "[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 19\n", - " Formula = C6-O12-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 MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 42\n", - " Formula = H24-C12-O6\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 42\n", - " Formula = H24-C12-O6\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 42\n", - " Formula = H24-C12-O6\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = K\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = K\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = K\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " ---------------------------------------------------]" - ] - }, - "execution_count": 10, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "newcell.get_reference_molecules(ref_labels, ref_fracs, debug=0)" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "id": "d0f39693-ba49-478b-93e3-6845cf6950d7", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "C6-O12-Fe [('unit_cell', 525), ('reference', 157)]\n", - "H24-C12-O6 [('unit_cell', 525), ('reference', 157)]\n", - "H2-O [('unit_cell', 525), ('reference', 157)]\n", - "H2-O [('unit_cell', 525), ('reference', 157)]\n", - "H2-O [('unit_cell', 525), ('reference', 157)]\n", - "H24-C12-O6 [('unit_cell', 525), ('reference', 157)]\n", - "H24-C12-O6 [('unit_cell', 525), ('reference', 157)]\n", - "K [('unit_cell', 525), ('reference', 157)]\n", - "K [('unit_cell', 525), ('reference', 157)]\n", - "K [('unit_cell', 525), ('reference', 157)]\n" - ] - } - ], - "source": [ - "for ref in newcell.refmoleclist:\n", - " print(ref.formula, [(p.subtype, p.natoms) for p in ref.parents])" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "id": "dcc1bf22-d3a1-4fc6-900a-87e74df07722", - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Adjacency [8, 10, 18] ['O', 'O', 'C']\n", - "Adjacency [12, 13, 16] ['O', 'O', 'C']\n", - "Adjacency [7, 9, 17] ['O', 'O', 'C']\n", - "Adjacency [11, 14, 15] ['O', 'O', 'C']\n", - "Adjacency [1, 2, 6] ['O', 'O', 'C']\n", - "Adjacency [3, 4, 5] ['O', 'O', 'C']\n", - "Adjacency [0, 7, 8, 9] ['O', 'H', 'H', 'C']\n", - "Adjacency [1, 6, 10, 11] ['O', 'C', 'H', 'H']\n", - "Adjacency [1, 13, 14, 15] ['O', 'H', 'H', 'C']\n", - "Adjacency [2, 12, 16, 17] ['O', 'C', 'H', 'H']\n", - "Adjacency [2, 19, 20, 21] ['O', 'H', 'H', 'C']\n", - "Adjacency [3, 18, 22, 23] ['O', 'C', 'H', 'H']\n", - "Adjacency [3, 25, 26, 27] ['O', 'H', 'H', 'C']\n", - "Adjacency [4, 24, 28, 29] ['O', 'C', 'H', 'H']\n", - "Adjacency [4, 31, 32, 33] ['O', 'H', 'H', 'C']\n", - "Adjacency [5, 30, 34, 35] ['O', 'C', 'H', 'H']\n", - "Adjacency [5, 37, 38, 39] ['O', 'H', 'H', 'C']\n", - "Adjacency [0, 36, 40, 41] ['O', 'C', 'H', 'H']\n", - "Adjacency [0, 7, 8, 9] ['O', 'H', 'H', 'C']\n", - "Adjacency [1, 6, 10, 11] ['O', 'C', 'H', 'H']\n", - "Adjacency [1, 13, 14, 15] ['O', 'H', 'H', 'C']\n", - "Adjacency [2, 12, 16, 17] ['O', 'C', 'H', 'H']\n", - "Adjacency [2, 19, 20, 21] ['O', 'H', 'H', 'C']\n", - "Adjacency [3, 18, 22, 23] ['O', 'C', 'H', 'H']\n", - "Adjacency [3, 25, 26, 27] ['O', 'H', 'H', 'C']\n", - "Adjacency [4, 24, 28, 29] ['O', 'C', 'H', 'H']\n", - "Adjacency [4, 31, 32, 33] ['O', 'H', 'H', 'C']\n", - "Adjacency [5, 30, 34, 35] ['O', 'C', 'H', 'H']\n", - "Adjacency [5, 37, 38, 39] ['O', 'H', 'H', 'C']\n", - "Adjacency [0, 36, 40, 41] ['O', 'C', 'H', 'H']\n", - "Adjacency [0, 7, 8, 9] ['O', 'H', 'H', 'C']\n", - "Adjacency [1, 6, 10, 11] ['O', 'C', 'H', 'H']\n", - "Adjacency [1, 13, 14, 15] ['O', 'H', 'H', 'C']\n", - "Adjacency [2, 12, 16, 17] ['O', 'C', 'H', 'H']\n", - "Adjacency [2, 19, 20, 21] ['O', 'H', 'H', 'C']\n", - "Adjacency [3, 18, 22, 23] ['O', 'C', 'H', 'H']\n", - "Adjacency [3, 25, 26, 27] ['O', 'H', 'H', 'C']\n", - "Adjacency [4, 24, 28, 29] ['O', 'C', 'H', 'H']\n", - "Adjacency [4, 31, 32, 33] ['O', 'H', 'H', 'C']\n", - "Adjacency [5, 30, 34, 35] ['O', 'C', 'H', 'H']\n", - "Adjacency [5, 37, 38, 39] ['O', 'H', 'H', 'C']\n", - "Adjacency [0, 36, 40, 41] ['O', 'C', 'H', 'H']\n", - "-------------------------------\n", - "Errors in Reference Molecules\n", - "-------------------------------\n", - "Cell2mol terminated with error number 0. Message:\n", - "No Errors Found\n", - "\n" - ] - } - ], - "source": [ - "if not newcell.has_isolated_H: \n", - " newcell.check_missing_H() \n", - "newcell.assess_errors(ref=True)" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "id": "23ce7a42-154f-4d28-aa24-cae845140e5b", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Applying symmetry operations to reference 0\n", - "157 157\n", - "157\n", - "False\n", - "target_ref: C6-O12-Fe\n", - "Group 0: ['C3-O6-Fe', 'C-O2', 'C-O2', 'C-O2']\n", - "final_remaining ['C3-O6-Fe', 'C-O2', 'C-O2', 'C-O2'] ['fragment', 'fragment', 'fragment', 'fragment']\n", - "Fragments TO BE MERGED ['C3-O6-Fe', 'C-O2'] ['fragment', 'fragment']\n", - "Rest fragments ['C-O2', 'C-O2'] ['fragment', 'fragment']\n", - "MERGED C4-O8-Fe\n", - "small_set={1, 8, 73, 74, 9, 75, 76, 10, 11, 51, 52, 153, 154}\n", - "len(found_molecule)=0\n", - "len(bigger_fragment)=1\n", - "len(not_merged)=0\n", - "final_remaining ['C4-O8-Fe', 'C-O2', 'C-O2'] ['Rec. Fragment', 'fragment', 'fragment']\n", - "Fragments TO BE MERGED ['C4-O8-Fe', 'C-O2'] ['Rec. Fragment', 'fragment']\n", - "Rest fragments ['C-O2'] ['fragment']\n", - "MERGED C5-O10-Fe\n", - "small_set={1, 8, 73, 74, 9, 75, 76, 10, 11, 77, 80, 51, 52, 153, 154, 155}\n", - "len(found_molecule)=0\n", - "len(bigger_fragment)=1\n", - "len(not_merged)=0\n", - "final_remaining ['C5-O10-Fe', 'C-O2'] ['Rec. Fragment', 'fragment']\n", - "Fragments TO BE MERGED ['C5-O10-Fe', 'C-O2'] ['Rec. Fragment', 'fragment']\n", - "Rest fragments [] []\n", - "MERGED C6-O12-Fe\n", - "small_set={1, 8, 9, 10, 11, 153, 154, 155, 156, 51, 52, 73, 74, 75, 76, 77, 78, 79, 80}\n", - "len(found_molecule)=1\n", - "len(bigger_fragment)=0\n", - "len(not_merged)=0\n", - "count=3\n", - "list_of_found_molecules=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 19\n", - " Formula = C6-O12-Fe\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.reconstruct\n", - "---------------------------------------------------\n", - "]\n", - "target_ref: H24-C12-O6\n", - "Group 1: ['H14-C8-O5', 'H3-C2', 'H-C-O', 'H2-C', 'H', 'H', 'H', 'H']\n", - "final_remaining ['H14-C8-O5', 'H3-C2', 'H-C-O', 'H2-C', 'H', 'H', 'H', 'H'] ['fragment', 'fragment', 'fragment', 'fragment', 'fragment', 'fragment', 'fragment', 'fragment']\n", - "Fragments TO BE MERGED ['H14-C8-O5', 'H3-C2'] ['fragment', 'fragment']\n", - "Rest fragments ['H-C-O', 'H2-C', 'H', 'H', 'H', 'H'] ['fragment', 'fragment', 'fragment', 'fragment', 'fragment', 'fragment']\n", - "MERGED H17-C10-O5\n", - "small_set={2, 3, 4, 5, 7, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 39, 40, 41, 42, 43, 45, 46, 47, 48, 49, 50}\n", - "len(found_molecule)=0\n", - "len(bigger_fragment)=1\n", - "len(not_merged)=0\n", - "final_remaining ['H17-C10-O5', 'H-C-O', 'H2-C', 'H', 'H', 'H', 'H'] ['Rec. Fragment', 'fragment', 'fragment', 'fragment', 'fragment', 'fragment', 'fragment']\n", - "Fragments TO BE MERGED ['H17-C10-O5', 'H-C-O'] ['Rec. Fragment', 'fragment']\n", - "Rest fragments ['H2-C', 'H', 'H', 'H', 'H'] ['fragment', 'fragment', 'fragment', 'fragment', 'fragment']\n", - "MERGED H18-C11-O6\n", - "small_set={2, 3, 4, 5, 6, 7, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 36, 37, 39, 40, 41, 42, 43, 45, 46, 47, 48, 49, 50}\n", - "len(found_molecule)=0\n", - "len(bigger_fragment)=1\n", - "len(not_merged)=0\n", - "final_remaining ['H18-C11-O6', 'H2-C', 'H', 'H', 'H', 'H'] ['Rec. Fragment', 'fragment', 'fragment', 'fragment', 'fragment', 'fragment']\n", - "Fragments TO BE MERGED ['H18-C11-O6', 'H2-C'] ['Rec. Fragment', 'fragment']\n", - "Rest fragments ['H', 'H', 'H', 'H'] ['fragment', 'fragment', 'fragment', 'fragment']\n", - "MERGED H20-C12-O6\n", - "small_set={2, 3, 4, 5, 6, 7, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 33, 34, 35, 36, 37, 39, 40, 41, 42, 43, 45, 46, 47, 48, 49, 50}\n", - "len(found_molecule)=0\n", - "len(bigger_fragment)=1\n", - "len(not_merged)=0\n", - "final_remaining ['H20-C12-O6', 'H', 'H', 'H', 'H'] ['Rec. Fragment', 'fragment', 'fragment', 'fragment', 'fragment']\n", - "Fragments TO BE MERGED ['H20-C12-O6', 'H'] ['Rec. Fragment', 'fragment']\n", - "Rest fragments ['H', 'H', 'H'] ['fragment', 'fragment', 'fragment']\n", - "MERGED H21-C12-O6\n", - "small_set={2, 3, 4, 5, 6, 7, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 33, 34, 35, 36, 37, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50}\n", - "len(found_molecule)=0\n", - "len(bigger_fragment)=1\n", - "len(not_merged)=0\n", - "final_remaining ['H21-C12-O6', 'H', 'H', 'H'] ['Rec. Fragment', 'fragment', 'fragment', 'fragment']\n", - "Fragments TO BE MERGED ['H21-C12-O6', 'H'] ['Rec. Fragment', 'fragment']\n", - "Rest fragments ['H', 'H'] ['fragment', 'fragment']\n", - "MERGED H22-C12-O6\n", - "small_set={2, 3, 4, 5, 6, 7, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 32, 33, 34, 35, 36, 37, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50}\n", - "len(found_molecule)=0\n", - "len(bigger_fragment)=1\n", - "len(not_merged)=0\n", - "final_remaining ['H22-C12-O6', 'H', 'H'] ['Rec. Fragment', 'fragment', 'fragment']\n", - "Fragments TO BE MERGED ['H22-C12-O6', 'H'] ['Rec. Fragment', 'fragment']\n", - "Rest fragments ['H'] ['fragment']\n", - "MERGED H23-C12-O6\n", - "small_set={2, 3, 4, 5, 6, 7, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50}\n", - "len(found_molecule)=0\n", - "len(bigger_fragment)=1\n", - "len(not_merged)=0\n", - "final_remaining ['H23-C12-O6', 'H'] ['Rec. Fragment', 'fragment']\n", - "Fragments TO BE MERGED ['H23-C12-O6', 'H'] ['Rec. Fragment', 'fragment']\n", - "Rest fragments [] []\n", - "MERGED H24-C12-O6\n", - "small_set={2, 3, 4, 5, 6, 7, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50}\n", - "len(found_molecule)=1\n", - "len(bigger_fragment)=0\n", - "len(not_merged)=0\n", - "count=7\n", - "list_of_found_molecules=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 42\n", - " Formula = H24-C12-O6\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.reconstruct\n", - "---------------------------------------------------\n", - "]\n", - "target_ref: H2-O\n", - "Group 2: ['H-O', 'H']\n", - "final_remaining ['H-O', 'H'] ['fragment', 'fragment']\n", - "Fragments TO BE MERGED ['H-O', 'H'] ['fragment', 'fragment']\n", - "Rest fragments [] []\n", - "MERGED H2-O\n", - "small_set={56, 12, 53}\n", - "len(found_molecule)=1\n", - "len(bigger_fragment)=0\n", - "len(not_merged)=0\n", - "count=1\n", - "list_of_found_molecules=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.reconstruct\n", - "---------------------------------------------------\n", - "]\n", - "target_ref: H24-C12-O6\n", - "Group 5: ['H19-C11-O6', 'H2-C', 'H', 'H', 'H']\n", - "final_remaining ['H19-C11-O6', 'H2-C', 'H', 'H', 'H'] ['fragment', 'fragment', 'fragment', 'fragment', 'fragment']\n", - "Fragments TO BE MERGED ['H19-C11-O6', 'H2-C'] ['fragment', 'fragment']\n", - "Rest fragments ['H', 'H', 'H'] ['fragment', 'fragment', 'fragment']\n", - "MERGED H21-C12-O6\n", - "small_set={129, 131, 133, 135, 138, 140, 142, 144, 146, 148, 150, 152, 61, 63, 65, 67, 69, 71, 81, 83, 85, 87, 90, 92, 93, 95, 97, 99, 101, 103, 105, 107, 109, 111, 117, 119, 121, 123, 125}\n", - "len(found_molecule)=0\n", - "len(bigger_fragment)=1\n", - "len(not_merged)=0\n", - "final_remaining ['H21-C12-O6', 'H', 'H', 'H'] ['Rec. Fragment', 'fragment', 'fragment', 'fragment']\n", - "Fragments TO BE MERGED ['H21-C12-O6', 'H'] ['Rec. Fragment', 'fragment']\n", - "Rest fragments ['H', 'H'] ['fragment', 'fragment']\n", - "MERGED H22-C12-O6\n", - "small_set={129, 131, 133, 135, 138, 140, 142, 144, 146, 148, 150, 152, 61, 63, 65, 67, 69, 71, 81, 83, 85, 87, 90, 92, 93, 95, 97, 99, 101, 103, 105, 107, 109, 111, 116, 117, 119, 121, 123, 125}\n", - "len(found_molecule)=0\n", - "len(bigger_fragment)=1\n", - "len(not_merged)=0\n", - "final_remaining ['H22-C12-O6', 'H', 'H'] ['Rec. Fragment', 'fragment', 'fragment']\n", - "Fragments TO BE MERGED ['H22-C12-O6', 'H'] ['Rec. Fragment', 'fragment']\n", - "Rest fragments ['H'] ['fragment']\n", - "MERGED H23-C12-O6\n", - "small_set={129, 131, 133, 135, 138, 140, 142, 144, 146, 148, 150, 152, 61, 63, 65, 67, 69, 71, 81, 83, 85, 87, 90, 92, 93, 95, 97, 99, 101, 103, 105, 107, 109, 111, 114, 116, 117, 119, 121, 123, 125}\n", - "len(found_molecule)=0\n", - "len(bigger_fragment)=1\n", - "len(not_merged)=0\n", - "final_remaining ['H23-C12-O6', 'H'] ['Rec. Fragment', 'fragment']\n", - "Fragments TO BE MERGED ['H23-C12-O6', 'H'] ['Rec. Fragment', 'fragment']\n", - "Rest fragments [] []\n", - "MERGED H24-C12-O6\n", - "small_set={129, 131, 133, 135, 138, 140, 142, 144, 146, 148, 150, 152, 61, 63, 65, 67, 69, 71, 81, 83, 85, 87, 90, 92, 93, 95, 97, 99, 101, 103, 105, 107, 109, 111, 114, 116, 117, 119, 121, 123, 125, 127}\n", - "len(found_molecule)=1\n", - "len(bigger_fragment)=0\n", - "len(not_merged)=0\n", - "count=4\n", - "list_of_found_molecules=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 42\n", - " Formula = H24-C12-O6\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.reconstruct\n", - "---------------------------------------------------\n", - "]\n", - "target_ref: H24-C12-O6\n", - "Group 6: ['H14-C8-O5', 'H3-C2', 'H2-C', 'H-C-O', 'H', 'H', 'H', 'H']\n", - "final_remaining ['H14-C8-O5', 'H3-C2', 'H2-C', 'H-C-O', 'H', 'H', 'H', 'H'] ['fragment', 'fragment', 'fragment', 'fragment', 'fragment', 'fragment', 'fragment', 'fragment']\n", - "Fragments TO BE MERGED ['H14-C8-O5', 'H3-C2'] ['fragment', 'fragment']\n", - "Rest fragments ['H2-C', 'H-C-O', 'H', 'H', 'H', 'H'] ['fragment', 'fragment', 'fragment', 'fragment', 'fragment', 'fragment']\n", - "MERGED H17-C10-O5\n", - "small_set={130, 132, 134, 136, 137, 141, 143, 145, 147, 149, 151, 62, 64, 66, 68, 72, 82, 84, 86, 88, 89, 91, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112}\n", - "len(found_molecule)=0\n", - "len(bigger_fragment)=1\n", - "len(not_merged)=0\n", - "final_remaining ['H17-C10-O5', 'H2-C', 'H-C-O', 'H', 'H', 'H', 'H'] ['Rec. Fragment', 'fragment', 'fragment', 'fragment', 'fragment', 'fragment', 'fragment']\n", - "Fragments TO BE MERGED ['H17-C10-O5', 'H2-C'] ['Rec. Fragment', 'fragment']\n", - "Rest fragments ['H-C-O', 'H', 'H', 'H', 'H'] ['fragment', 'fragment', 'fragment', 'fragment', 'fragment']\n", - "MERGED H19-C11-O5\n", - "small_set={130, 132, 134, 136, 137, 141, 143, 145, 147, 149, 151, 62, 64, 66, 68, 72, 82, 84, 86, 88, 89, 91, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 118, 120, 122}\n", - "len(found_molecule)=0\n", - "len(bigger_fragment)=1\n", - "len(not_merged)=0\n", - "final_remaining ['H19-C11-O5', 'H-C-O', 'H', 'H', 'H', 'H'] ['Rec. Fragment', 'fragment', 'fragment', 'fragment', 'fragment', 'fragment']\n", - "Fragments TO BE MERGED ['H19-C11-O5', 'H-C-O'] ['Rec. Fragment', 'fragment']\n", - "Rest fragments ['H', 'H', 'H', 'H'] ['fragment', 'fragment', 'fragment', 'fragment']\n", - "MERGED H20-C12-O6\n", - "small_set={130, 132, 134, 136, 137, 141, 143, 145, 147, 149, 151, 62, 64, 66, 68, 70, 72, 82, 84, 86, 88, 89, 91, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 118, 120, 122, 124, 126}\n", - "len(found_molecule)=0\n", - "len(bigger_fragment)=1\n", - "len(not_merged)=0\n", - "final_remaining ['H20-C12-O6', 'H', 'H', 'H', 'H'] ['Rec. Fragment', 'fragment', 'fragment', 'fragment', 'fragment']\n", - "Fragments TO BE MERGED ['H20-C12-O6', 'H'] ['Rec. Fragment', 'fragment']\n", - "Rest fragments ['H', 'H', 'H'] ['fragment', 'fragment', 'fragment']\n", - "MERGED H21-C12-O6\n", - "small_set={130, 132, 134, 136, 137, 139, 141, 143, 145, 147, 149, 151, 62, 64, 66, 68, 70, 72, 82, 84, 86, 88, 89, 91, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 118, 120, 122, 124, 126}\n", - "len(found_molecule)=0\n", - "len(bigger_fragment)=1\n", - "len(not_merged)=0\n", - "final_remaining ['H21-C12-O6', 'H', 'H', 'H'] ['Rec. Fragment', 'fragment', 'fragment', 'fragment']\n", - "Fragments TO BE MERGED ['H21-C12-O6', 'H'] ['Rec. Fragment', 'fragment']\n", - "Rest fragments ['H', 'H'] ['fragment', 'fragment']\n", - "MERGED H22-C12-O6\n", - "small_set={130, 132, 134, 136, 137, 139, 141, 143, 145, 147, 149, 151, 62, 64, 66, 68, 70, 72, 82, 84, 86, 88, 89, 91, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 115, 118, 120, 122, 124, 126}\n", - "len(found_molecule)=0\n", - "len(bigger_fragment)=1\n", - "len(not_merged)=0\n", - "final_remaining ['H22-C12-O6', 'H', 'H'] ['Rec. Fragment', 'fragment', 'fragment']\n", - "Fragments TO BE MERGED ['H22-C12-O6', 'H'] ['Rec. Fragment', 'fragment']\n", - "Rest fragments ['H'] ['fragment']\n", - "MERGED H23-C12-O6\n", - "small_set={130, 132, 134, 136, 137, 139, 141, 143, 145, 147, 149, 151, 62, 64, 66, 68, 70, 72, 82, 84, 86, 88, 89, 91, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 113, 115, 118, 120, 122, 124, 126}\n", - "len(found_molecule)=0\n", - "len(bigger_fragment)=1\n", - "len(not_merged)=0\n", - "final_remaining ['H23-C12-O6', 'H'] ['Rec. Fragment', 'fragment']\n", - "Fragments TO BE MERGED ['H23-C12-O6', 'H'] ['Rec. Fragment', 'fragment']\n", - "Rest fragments [] []\n", - "MERGED H24-C12-O6\n", - "small_set={128, 130, 132, 134, 136, 137, 139, 141, 143, 145, 147, 149, 151, 62, 64, 66, 68, 70, 72, 82, 84, 86, 88, 89, 91, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 113, 115, 118, 120, 122, 124, 126}\n", - "len(found_molecule)=1\n", - "len(bigger_fragment)=0\n", - "len(not_merged)=0\n", - "count=7\n", - "list_of_found_molecules=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 42\n", - " Formula = H24-C12-O6\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.reconstruct\n", - "---------------------------------------------------\n", - "]\n", - "Applying symmetry operations to reference 1\n", - "156 156\n", - "166\n", - "False\n", - "target_ref: H2-O\n", - "Group 2: ['H-O', 'H']\n", - "final_remaining ['H-O', 'H'] ['fragment', 'fragment']\n", - "Fragments TO BE MERGED ['H-O', 'H'] ['fragment', 'fragment']\n", - "Rest fragments [] []\n", - "MERGED H2-O\n", - "small_set={56, 12, 53}\n", - "len(found_molecule)=1\n", - "len(bigger_fragment)=0\n", - "len(not_merged)=0\n", - "count=1\n", - "list_of_found_molecules=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.reconstruct\n", - "---------------------------------------------------\n", - "]\n", - "Applying symmetry operations to reference 2\n", - "156 156\n", - "175\n", - "False\n", - "target_ref: H2-O\n", - "Group 2: ['H-O', 'H']\n", - "final_remaining ['H-O', 'H'] ['fragment', 'fragment']\n", - "Fragments TO BE MERGED ['H-O', 'H'] ['fragment', 'fragment']\n", - "Rest fragments [] []\n", - "MERGED H2-O\n", - "small_set={56, 12, 53}\n", - "len(found_molecule)=1\n", - "len(bigger_fragment)=0\n", - "len(not_merged)=0\n", - "count=1\n", - "list_of_found_molecules=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.reconstruct\n", - "---------------------------------------------------\n", - "]\n", - "Applying symmetry operations to reference 3\n", - "157 157\n", - "332\n", - "False\n", - "target_ref: H24-C12-O6\n", - "Group 1: ['H12-C7-O3', 'H10-C5-O3', 'H', 'H']\n", - "final_remaining ['H12-C7-O3', 'H10-C5-O3', 'H', 'H'] ['fragment', 'fragment', 'fragment', 'fragment']\n", - "Fragments TO BE MERGED ['H12-C7-O3', 'H10-C5-O3'] ['fragment', 'fragment']\n", - "Rest fragments ['H', 'H'] ['fragment', 'fragment']\n", - "MERGED H22-C12-O6\n", - "small_set={2, 3, 4, 5, 6, 7, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 44, 45, 46, 47, 48, 49, 50}\n", - "len(found_molecule)=0\n", - "len(bigger_fragment)=1\n", - "len(not_merged)=0\n", - "final_remaining ['H22-C12-O6', 'H', 'H'] ['Rec. Fragment', 'fragment', 'fragment']\n", - "Fragments TO BE MERGED ['H22-C12-O6', 'H'] ['Rec. Fragment', 'fragment']\n", - "Rest fragments ['H'] ['fragment']\n", - "MERGED H23-C12-O6\n", - "small_set={2, 3, 4, 5, 6, 7, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 44, 45, 46, 47, 48, 49, 50}\n", - "len(found_molecule)=0\n", - "len(bigger_fragment)=1\n", - "len(not_merged)=0\n", - "final_remaining ['H23-C12-O6', 'H'] ['Rec. Fragment', 'fragment']\n", - "Fragments TO BE MERGED ['H23-C12-O6', 'H'] ['Rec. Fragment', 'fragment']\n", - "Rest fragments [] []\n", - "MERGED H24-C12-O6\n", - "small_set={2, 3, 4, 5, 6, 7, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50}\n", - "len(found_molecule)=1\n", - "len(bigger_fragment)=0\n", - "len(not_merged)=0\n", - "count=3\n", - "list_of_found_molecules=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 42\n", - " Formula = H24-C12-O6\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.reconstruct\n", - "---------------------------------------------------\n", - "]\n", - "target_ref: H2-O\n", - "Group 3: ['H-O', 'H']\n", - "final_remaining ['H-O', 'H'] ['fragment', 'fragment']\n", - "Fragments TO BE MERGED ['H-O', 'H'] ['fragment', 'fragment']\n", - "Rest fragments [] []\n", - "MERGED H2-O\n", - "small_set={57, 13, 54}\n", - "len(found_molecule)=1\n", - "len(bigger_fragment)=0\n", - "len(not_merged)=0\n", - "count=1\n", - "list_of_found_molecules=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.reconstruct\n", - "---------------------------------------------------\n", - "]\n", - "target_ref: H24-C12-O6\n", - "Group 5: ['H12-C7-O3', 'H10-C5-O3', 'H', 'H']\n", - "final_remaining ['H12-C7-O3', 'H10-C5-O3', 'H', 'H'] ['fragment', 'fragment', 'fragment', 'fragment']\n", - "Fragments TO BE MERGED ['H12-C7-O3', 'H10-C5-O3'] ['fragment', 'fragment']\n", - "Rest fragments ['H', 'H'] ['fragment', 'fragment']\n", - "MERGED H22-C12-O6\n", - "small_set={129, 131, 133, 135, 140, 142, 144, 146, 148, 150, 152, 61, 63, 65, 67, 69, 71, 81, 83, 85, 87, 90, 92, 93, 95, 97, 99, 103, 105, 107, 109, 111, 114, 116, 117, 119, 121, 123, 125, 127}\n", - "len(found_molecule)=0\n", - "len(bigger_fragment)=1\n", - "len(not_merged)=0\n", - "final_remaining ['H22-C12-O6', 'H', 'H'] ['Rec. Fragment', 'fragment', 'fragment']\n", - "Fragments TO BE MERGED ['H22-C12-O6', 'H'] ['Rec. Fragment', 'fragment']\n", - "Rest fragments ['H'] ['fragment']\n", - "MERGED H23-C12-O6\n", - "small_set={129, 131, 133, 135, 140, 142, 144, 146, 148, 150, 152, 61, 63, 65, 67, 69, 71, 81, 83, 85, 87, 90, 92, 93, 95, 97, 99, 101, 103, 105, 107, 109, 111, 114, 116, 117, 119, 121, 123, 125, 127}\n", - "len(found_molecule)=0\n", - "len(bigger_fragment)=1\n", - "len(not_merged)=0\n", - "final_remaining ['H23-C12-O6', 'H'] ['Rec. Fragment', 'fragment']\n", - "Fragments TO BE MERGED ['H23-C12-O6', 'H'] ['Rec. Fragment', 'fragment']\n", - "Rest fragments [] []\n", - "MERGED H24-C12-O6\n", - "small_set={129, 131, 133, 135, 138, 140, 142, 144, 146, 148, 150, 152, 61, 63, 65, 67, 69, 71, 81, 83, 85, 87, 90, 92, 93, 95, 97, 99, 101, 103, 105, 107, 109, 111, 114, 116, 117, 119, 121, 123, 125, 127}\n", - "len(found_molecule)=1\n", - "len(bigger_fragment)=0\n", - "len(not_merged)=0\n", - "count=3\n", - "list_of_found_molecules=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 42\n", - " Formula = H24-C12-O6\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.reconstruct\n", - "---------------------------------------------------\n", - "]\n", - "target_ref: H24-C12-O6\n", - "Group 6: ['H12-C7-O3', 'H10-C5-O3', 'H', 'H']\n", - "final_remaining ['H12-C7-O3', 'H10-C5-O3', 'H', 'H'] ['fragment', 'fragment', 'fragment', 'fragment']\n", - "Fragments TO BE MERGED ['H12-C7-O3', 'H10-C5-O3'] ['fragment', 'fragment']\n", - "Rest fragments ['H', 'H'] ['fragment', 'fragment']\n", - "MERGED H22-C12-O6\n", - "small_set={128, 130, 132, 134, 136, 139, 141, 143, 145, 147, 149, 151, 62, 64, 66, 68, 70, 72, 82, 84, 86, 88, 89, 91, 94, 96, 98, 100, 104, 106, 108, 110, 112, 113, 115, 118, 120, 122, 124, 126}\n", - "len(found_molecule)=0\n", - "len(bigger_fragment)=1\n", - "len(not_merged)=0\n", - "final_remaining ['H22-C12-O6', 'H', 'H'] ['Rec. Fragment', 'fragment', 'fragment']\n", - "Fragments TO BE MERGED ['H22-C12-O6', 'H'] ['Rec. Fragment', 'fragment']\n", - "Rest fragments ['H'] ['fragment']\n", - "MERGED H23-C12-O6\n", - "small_set={128, 130, 132, 134, 136, 139, 141, 143, 145, 147, 149, 151, 62, 64, 66, 68, 70, 72, 82, 84, 86, 88, 89, 91, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 113, 115, 118, 120, 122, 124, 126}\n", - "len(found_molecule)=0\n", - "len(bigger_fragment)=1\n", - "len(not_merged)=0\n", - "final_remaining ['H23-C12-O6', 'H'] ['Rec. Fragment', 'fragment']\n", - "Fragments TO BE MERGED ['H23-C12-O6', 'H'] ['Rec. Fragment', 'fragment']\n", - "Rest fragments [] []\n", - "MERGED H24-C12-O6\n", - "small_set={128, 130, 132, 134, 136, 137, 139, 141, 143, 145, 147, 149, 151, 62, 64, 66, 68, 70, 72, 82, 84, 86, 88, 89, 91, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 113, 115, 118, 120, 122, 124, 126}\n", - "len(found_molecule)=1\n", - "len(bigger_fragment)=0\n", - "len(not_merged)=0\n", - "count=3\n", - "list_of_found_molecules=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 42\n", - " Formula = H24-C12-O6\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.reconstruct\n", - "---------------------------------------------------\n", - "]\n", - "Applying symmetry operations to reference 4\n", - "156 156\n", - "341\n", - "False\n", - "target_ref: H2-O\n", - "Group 3: ['H-O', 'H']\n", - "final_remaining ['H-O', 'H'] ['fragment', 'fragment']\n", - "Fragments TO BE MERGED ['H-O', 'H'] ['fragment', 'fragment']\n", - "Rest fragments [] []\n", - "MERGED H2-O\n", - "small_set={57, 13, 54}\n", - "len(found_molecule)=1\n", - "len(bigger_fragment)=0\n", - "len(not_merged)=0\n", - "count=1\n", - "list_of_found_molecules=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.reconstruct\n", - "---------------------------------------------------\n", - "]\n", - "Applying symmetry operations to reference 5\n", - "156 156\n", - "350\n", - "False\n", - "Applying symmetry operations to reference 6\n", - "157 157\n", - "507\n", - "False\n", - "target_ref: C6-O12-Fe\n", - "Group 0: ['C2-O4', 'C2-O3', 'C2-O3', 'O-Fe', 'O']\n", - "final_remaining ['C2-O4', 'C2-O3', 'C2-O3', 'O-Fe', 'O'] ['fragment', 'fragment', 'fragment', 'fragment', 'fragment']\n", - "Fragments TO BE MERGED ['C2-O4', 'C2-O3'] ['fragment', 'fragment']\n", - "Rest fragments ['C2-O3', 'O-Fe', 'O'] ['fragment', 'fragment', 'fragment']\n", - "NOT MERGED C2-O4 C2-O3\n", - "len(found_molecule)=0\n", - "len(bigger_fragment)=0\n", - "len(not_merged)=2\n", - "final_remaining ['C2-O4', 'C2-O3', 'O-Fe', 'O', 'C2-O3'] ['fragment', 'fragment', 'fragment', 'fragment', 'fragment']\n", - "Fragments TO BE MERGED ['C2-O4', 'C2-O3'] ['fragment', 'fragment']\n", - "Rest fragments ['O-Fe', 'O', 'C2-O3'] ['fragment', 'fragment', 'fragment']\n", - "NOT MERGED C2-O4 C2-O3\n", - "len(found_molecule)=0\n", - "len(bigger_fragment)=0\n", - "len(not_merged)=2\n", - "final_remaining ['C2-O4', 'O-Fe', 'O', 'C2-O3', 'C2-O3'] ['fragment', 'fragment', 'fragment', 'fragment', 'fragment']\n", - "Fragments TO BE MERGED ['C2-O4', 'O-Fe'] ['fragment', 'fragment']\n", - "Rest fragments ['O', 'C2-O3', 'C2-O3'] ['fragment', 'fragment', 'fragment']\n", - "MERGED C2-O5-Fe\n", - "small_set={1, 74, 10, 76, 78, 79, 154, 156}\n", - "len(found_molecule)=0\n", - "len(bigger_fragment)=1\n", - "len(not_merged)=0\n", - "final_remaining ['C2-O5-Fe', 'O', 'C2-O3', 'C2-O3'] ['Rec. Fragment', 'fragment', 'fragment', 'fragment']\n", - "Fragments TO BE MERGED ['C2-O5-Fe', 'O'] ['Rec. Fragment', 'fragment']\n", - "Rest fragments ['C2-O3', 'C2-O3'] ['fragment', 'fragment']\n", - "MERGED C2-O6-Fe\n", - "small_set={1, 74, 10, 76, 77, 78, 79, 154, 156}\n", - "len(found_molecule)=0\n", - "len(bigger_fragment)=1\n", - "len(not_merged)=0\n", - "final_remaining ['C2-O6-Fe', 'C2-O3', 'C2-O3'] ['Rec. Fragment', 'fragment', 'fragment']\n", - "Fragments TO BE MERGED ['C2-O6-Fe', 'C2-O3'] ['Rec. Fragment', 'fragment']\n", - "Rest fragments ['C2-O3'] ['fragment']\n", - "MERGED C4-O9-Fe\n", - "small_set={1, 73, 74, 10, 76, 77, 78, 79, 75, 80, 153, 154, 155, 156}\n", - "len(found_molecule)=0\n", - "len(bigger_fragment)=1\n", - "len(not_merged)=0\n", - "final_remaining ['C4-O9-Fe', 'C2-O3'] ['Rec. Fragment', 'fragment']\n", - "Fragments TO BE MERGED ['C4-O9-Fe', 'C2-O3'] ['Rec. Fragment', 'fragment']\n", - "Rest fragments [] []\n", - "MERGED C6-O12-Fe\n", - "small_set={1, 8, 9, 10, 11, 153, 154, 155, 156, 51, 52, 73, 74, 75, 76, 77, 78, 79, 80}\n", - "len(found_molecule)=1\n", - "len(bigger_fragment)=0\n", - "len(not_merged)=0\n", - "count=6\n", - "list_of_found_molecules=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 19\n", - " Formula = C6-O12-Fe\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.reconstruct\n", - "---------------------------------------------------\n", - "]\n", - "target_ref: H24-C12-O6\n", - "Group 1: ['H20-C12-O6', 'H', 'H', 'H', 'H']\n", - "final_remaining ['H20-C12-O6', 'H', 'H', 'H', 'H'] ['fragment', 'fragment', 'fragment', 'fragment', 'fragment']\n", - "Fragments TO BE MERGED ['H20-C12-O6', 'H'] ['fragment', 'fragment']\n", - "Rest fragments ['H', 'H', 'H'] ['fragment', 'fragment', 'fragment']\n", - "MERGED H21-C12-O6\n", - "small_set={2, 3, 4, 5, 6, 7, 15, 16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48}\n", - "len(found_molecule)=0\n", - "len(bigger_fragment)=1\n", - "len(not_merged)=0\n", - "final_remaining ['H21-C12-O6', 'H', 'H', 'H'] ['Rec. Fragment', 'fragment', 'fragment', 'fragment']\n", - "Fragments TO BE MERGED ['H21-C12-O6', 'H'] ['Rec. Fragment', 'fragment']\n", - "Rest fragments ['H', 'H'] ['fragment', 'fragment']\n", - "MERGED H22-C12-O6\n", - "small_set={2, 3, 4, 5, 6, 7, 15, 16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 50}\n", - "len(found_molecule)=0\n", - "len(bigger_fragment)=1\n", - "len(not_merged)=0\n", - "final_remaining ['H22-C12-O6', 'H', 'H'] ['Rec. Fragment', 'fragment', 'fragment']\n", - "Fragments TO BE MERGED ['H22-C12-O6', 'H'] ['Rec. Fragment', 'fragment']\n", - "Rest fragments ['H'] ['fragment']\n", - "MERGED H23-C12-O6\n", - "small_set={2, 3, 4, 5, 6, 7, 15, 16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50}\n", - "len(found_molecule)=0\n", - "len(bigger_fragment)=1\n", - "len(not_merged)=0\n", - "final_remaining ['H23-C12-O6', 'H'] ['Rec. Fragment', 'fragment']\n", - "Fragments TO BE MERGED ['H23-C12-O6', 'H'] ['Rec. Fragment', 'fragment']\n", - "Rest fragments [] []\n", - "MERGED H24-C12-O6\n", - "small_set={2, 3, 4, 5, 6, 7, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50}\n", - "len(found_molecule)=1\n", - "len(bigger_fragment)=0\n", - "len(not_merged)=0\n", - "count=4\n", - "list_of_found_molecules=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 42\n", - " Formula = H24-C12-O6\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.reconstruct\n", - "---------------------------------------------------\n", - "]\n", - "target_ref: H2-O\n", - "Group 3: ['H-O', 'H']\n", - "final_remaining ['H-O', 'H'] ['fragment', 'fragment']\n", - "Fragments TO BE MERGED ['H-O', 'H'] ['fragment', 'fragment']\n", - "Rest fragments [] []\n", - "MERGED H2-O\n", - "small_set={57, 13, 54}\n", - "len(found_molecule)=1\n", - "len(bigger_fragment)=0\n", - "len(not_merged)=0\n", - "count=1\n", - "list_of_found_molecules=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.reconstruct\n", - "---------------------------------------------------\n", - "]\n", - "target_ref: H24-C12-O6\n", - "Group 5: ['H9-C7-O3', 'H10-C5-O3', 'H', 'H', 'H', 'H', 'H']\n", - "final_remaining ['H9-C7-O3', 'H10-C5-O3', 'H', 'H', 'H', 'H', 'H'] ['fragment', 'fragment', 'fragment', 'fragment', 'fragment', 'fragment', 'fragment']\n", - "Fragments TO BE MERGED ['H9-C7-O3', 'H10-C5-O3'] ['fragment', 'fragment']\n", - "Rest fragments ['H', 'H', 'H', 'H', 'H'] ['fragment', 'fragment', 'fragment', 'fragment', 'fragment']\n", - "MERGED H19-C12-O6\n", - "small_set={129, 131, 133, 135, 138, 140, 142, 144, 146, 148, 61, 63, 65, 67, 69, 71, 81, 87, 90, 92, 93, 95, 97, 99, 101, 103, 105, 107, 109, 111, 114, 116, 117, 119, 123, 125, 127}\n", - "len(found_molecule)=0\n", - "len(bigger_fragment)=1\n", - "len(not_merged)=0\n", - "final_remaining ['H19-C12-O6', 'H', 'H', 'H', 'H', 'H'] ['Rec. Fragment', 'fragment', 'fragment', 'fragment', 'fragment', 'fragment']\n", - "Fragments TO BE MERGED ['H19-C12-O6', 'H'] ['Rec. Fragment', 'fragment']\n", - "Rest fragments ['H', 'H', 'H', 'H'] ['fragment', 'fragment', 'fragment', 'fragment']\n", - "MERGED H20-C12-O6\n", - "small_set={129, 131, 133, 135, 138, 140, 142, 144, 146, 148, 61, 63, 65, 67, 69, 71, 81, 83, 87, 90, 92, 93, 95, 97, 99, 101, 103, 105, 107, 109, 111, 114, 116, 117, 119, 123, 125, 127}\n", - "len(found_molecule)=0\n", - "len(bigger_fragment)=1\n", - "len(not_merged)=0\n", - "final_remaining ['H20-C12-O6', 'H', 'H', 'H', 'H'] ['Rec. Fragment', 'fragment', 'fragment', 'fragment', 'fragment']\n", - "Fragments TO BE MERGED ['H20-C12-O6', 'H'] ['Rec. Fragment', 'fragment']\n", - "Rest fragments ['H', 'H', 'H'] ['fragment', 'fragment', 'fragment']\n", - "MERGED H21-C12-O6\n", - "small_set={129, 131, 133, 135, 138, 140, 142, 144, 146, 148, 150, 61, 63, 65, 67, 69, 71, 81, 83, 87, 90, 92, 93, 95, 97, 99, 101, 103, 105, 107, 109, 111, 114, 116, 117, 119, 123, 125, 127}\n", - "len(found_molecule)=0\n", - "len(bigger_fragment)=1\n", - "len(not_merged)=0\n", - "final_remaining ['H21-C12-O6', 'H', 'H', 'H'] ['Rec. Fragment', 'fragment', 'fragment', 'fragment']\n", - "Fragments TO BE MERGED ['H21-C12-O6', 'H'] ['Rec. Fragment', 'fragment']\n", - "Rest fragments ['H', 'H'] ['fragment', 'fragment']\n", - "MERGED H22-C12-O6\n", - "small_set={129, 131, 133, 135, 138, 140, 142, 144, 146, 148, 150, 61, 63, 65, 67, 69, 71, 81, 83, 87, 90, 92, 93, 95, 97, 99, 101, 103, 105, 107, 109, 111, 114, 116, 117, 119, 121, 123, 125, 127}\n", - "len(found_molecule)=0\n", - "len(bigger_fragment)=1\n", - "len(not_merged)=0\n", - "final_remaining ['H22-C12-O6', 'H', 'H'] ['Rec. Fragment', 'fragment', 'fragment']\n", - "Fragments TO BE MERGED ['H22-C12-O6', 'H'] ['Rec. Fragment', 'fragment']\n", - "Rest fragments ['H'] ['fragment']\n", - "MERGED H23-C12-O6\n", - "small_set={129, 131, 133, 135, 138, 140, 142, 144, 146, 148, 150, 61, 63, 65, 67, 69, 71, 81, 83, 85, 87, 90, 92, 93, 95, 97, 99, 101, 103, 105, 107, 109, 111, 114, 116, 117, 119, 121, 123, 125, 127}\n", - "len(found_molecule)=0\n", - "len(bigger_fragment)=1\n", - "len(not_merged)=0\n", - "final_remaining ['H23-C12-O6', 'H'] ['Rec. Fragment', 'fragment']\n", - "Fragments TO BE MERGED ['H23-C12-O6', 'H'] ['Rec. Fragment', 'fragment']\n", - "Rest fragments [] []\n", - "MERGED H24-C12-O6\n", - "small_set={129, 131, 133, 135, 138, 140, 142, 144, 146, 148, 150, 152, 61, 63, 65, 67, 69, 71, 81, 83, 85, 87, 90, 92, 93, 95, 97, 99, 101, 103, 105, 107, 109, 111, 114, 116, 117, 119, 121, 123, 125, 127}\n", - "len(found_molecule)=1\n", - "len(bigger_fragment)=0\n", - "len(not_merged)=0\n", - "count=6\n", - "list_of_found_molecules=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 42\n", - " Formula = H24-C12-O6\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.reconstruct\n", - "---------------------------------------------------\n", - "]\n", - "target_ref: H24-C12-O6\n", - "Group 6: ['H9-C7-O3', 'H10-C5-O3', 'H', 'H', 'H', 'H', 'H']\n", - "final_remaining ['H9-C7-O3', 'H10-C5-O3', 'H', 'H', 'H', 'H', 'H'] ['fragment', 'fragment', 'fragment', 'fragment', 'fragment', 'fragment', 'fragment']\n", - "Fragments TO BE MERGED ['H9-C7-O3', 'H10-C5-O3'] ['fragment', 'fragment']\n", - "Rest fragments ['H', 'H', 'H', 'H', 'H'] ['fragment', 'fragment', 'fragment', 'fragment', 'fragment']\n", - "MERGED H19-C12-O6\n", - "small_set={128, 130, 132, 134, 136, 137, 139, 141, 143, 145, 147, 62, 64, 66, 68, 70, 72, 82, 88, 89, 91, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 113, 115, 118, 120, 124, 126}\n", - "len(found_molecule)=0\n", - "len(bigger_fragment)=1\n", - "len(not_merged)=0\n", - "final_remaining ['H19-C12-O6', 'H', 'H', 'H', 'H', 'H'] ['Rec. Fragment', 'fragment', 'fragment', 'fragment', 'fragment', 'fragment']\n", - "Fragments TO BE MERGED ['H19-C12-O6', 'H'] ['Rec. Fragment', 'fragment']\n", - "Rest fragments ['H', 'H', 'H', 'H'] ['fragment', 'fragment', 'fragment', 'fragment']\n", - "MERGED H20-C12-O6\n", - "small_set={128, 130, 132, 134, 136, 137, 139, 141, 143, 145, 147, 151, 62, 64, 66, 68, 70, 72, 82, 88, 89, 91, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 113, 115, 118, 120, 124, 126}\n", - "len(found_molecule)=0\n", - "len(bigger_fragment)=1\n", - "len(not_merged)=0\n", - "final_remaining ['H20-C12-O6', 'H', 'H', 'H', 'H'] ['Rec. Fragment', 'fragment', 'fragment', 'fragment', 'fragment']\n", - "Fragments TO BE MERGED ['H20-C12-O6', 'H'] ['Rec. Fragment', 'fragment']\n", - "Rest fragments ['H', 'H', 'H'] ['fragment', 'fragment', 'fragment']\n", - "MERGED H21-C12-O6\n", - "small_set={128, 130, 132, 134, 136, 137, 139, 141, 143, 145, 147, 149, 151, 62, 64, 66, 68, 70, 72, 82, 88, 89, 91, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 113, 115, 118, 120, 124, 126}\n", - "len(found_molecule)=0\n", - "len(bigger_fragment)=1\n", - "len(not_merged)=0\n", - "final_remaining ['H21-C12-O6', 'H', 'H', 'H'] ['Rec. Fragment', 'fragment', 'fragment', 'fragment']\n", - "Fragments TO BE MERGED ['H21-C12-O6', 'H'] ['Rec. Fragment', 'fragment']\n", - "Rest fragments ['H', 'H'] ['fragment', 'fragment']\n", - "MERGED H22-C12-O6\n", - "small_set={128, 130, 132, 134, 136, 137, 139, 141, 143, 145, 147, 149, 151, 62, 64, 66, 68, 70, 72, 82, 88, 89, 91, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 113, 115, 118, 120, 122, 124, 126}\n", - "len(found_molecule)=0\n", - "len(bigger_fragment)=1\n", - "len(not_merged)=0\n", - "final_remaining ['H22-C12-O6', 'H', 'H'] ['Rec. Fragment', 'fragment', 'fragment']\n", - "Fragments TO BE MERGED ['H22-C12-O6', 'H'] ['Rec. Fragment', 'fragment']\n", - "Rest fragments ['H'] ['fragment']\n", - "MERGED H23-C12-O6\n", - "small_set={128, 130, 132, 134, 136, 137, 139, 141, 143, 145, 147, 149, 151, 62, 64, 66, 68, 70, 72, 82, 86, 88, 89, 91, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 113, 115, 118, 120, 122, 124, 126}\n", - "len(found_molecule)=0\n", - "len(bigger_fragment)=1\n", - "len(not_merged)=0\n", - "final_remaining ['H23-C12-O6', 'H'] ['Rec. Fragment', 'fragment']\n", - "Fragments TO BE MERGED ['H23-C12-O6', 'H'] ['Rec. Fragment', 'fragment']\n", - "Rest fragments [] []\n", - "MERGED H24-C12-O6\n", - "small_set={128, 130, 132, 134, 136, 137, 139, 141, 143, 145, 147, 149, 151, 62, 64, 66, 68, 70, 72, 82, 84, 86, 88, 89, 91, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 113, 115, 118, 120, 122, 124, 126}\n", - "len(found_molecule)=1\n", - "len(bigger_fragment)=0\n", - "len(not_merged)=0\n", - "count=6\n", - "list_of_found_molecules=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 42\n", - " Formula = H24-C12-O6\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.reconstruct\n", - "---------------------------------------------------\n", - "]\n", - "Applying symmetry operations to reference 7\n", - "156 156\n", - "516\n", - "False\n", - "Applying symmetry operations to reference 8\n", - "156 156\n", - "525\n", - "True\n", - "target_ref: H2-O\n", - "Group 3: ['H-O', 'H']\n", - "final_remaining ['H-O', 'H'] ['fragment', 'fragment']\n", - "Fragments TO BE MERGED ['H-O', 'H'] ['fragment', 'fragment']\n", - "Rest fragments [] []\n", - "MERGED H2-O\n", - "small_set={57, 13, 54}\n", - "len(found_molecule)=1\n", - "len(bigger_fragment)=0\n", - "len(not_merged)=0\n", - "count=1\n", - "list_of_found_molecules=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.reconstruct\n", - "---------------------------------------------------\n", - "]\n", - "Reconstructed successfully\n" - ] - } - ], - "source": [ - "from new_cell_reconstruction import *\n", - "all_molecules, reconstructed_molecules = reconstuct(ref_molecule, newcell, cell_pos, cell_fracs, cell_vector, sym_ops, debug=0)" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "id": "75af0d41-39ee-4de8-aeb9-df8f9e496ea5", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "(30, 18)" - ] - }, - "execution_count": 17, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "len(all_molecules), len(reconstructed_molecules)" - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "id": "6d075f32-03de-4ac7-9e22-cd42bc106cc7", - "metadata": {}, - "outputs": [], - "source": [ - "newcell.moleclist = []\n", - "newcell.moleclist.extend(all_molecules)\n", - "newcell.moleclist.extend(reconstructed_molecules)" - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "id": "6aecf0a8-821f-4e6f-b10b-b399915095a9", - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "data": { - "text/plain": [ - "------------- Cell2mol CELL Object ----------------\n", - " Version = 2.0\n", - " Type = cell\n", - " Sub-Type = unit_cell\n", - " Name (Refcode) = BOFFOS\n", - " Num Atoms = 525\n", - " Cell Parameters a:c = [24.369, 24.369, 9.748]\n", - " Cell Parameters al:ga = [90.0, 90.0, 120.0]\n", - " # Molecules: = 48\n", - " With Formulae: \n", - " 0: H2-O \n", - " 1: H2-O \n", - " 2: K \n", - " 3: K \n", - " 4: K \n", - " 5: H2-O \n", - " 6: H2-O \n", - " 7: H2-O \n", - " 8: H2-O \n", - " 9: C6-O12-Fe \n", - " 10: H2-O \n", - " 11: H2-O \n", - " 12: K \n", - " 13: K \n", - " 14: K \n", - " 15: H2-O \n", - " 16: H2-O \n", - " 17: H2-O \n", - " 18: H2-O \n", - " 19: H2-O \n", - " 20: H2-O \n", - " 21: H2-O \n", - " 22: K \n", - " 23: K \n", - " 24: K \n", - " 25: H2-O \n", - " 26: H2-O \n", - " 27: H2-O \n", - " 28: H2-O \n", - " 29: H2-O \n", - " 30: C6-O12-Fe \n", - " 31: H24-C12-O6 \n", - " 32: H2-O \n", - " 33: H24-C12-O6 \n", - " 34: H24-C12-O6 \n", - " 35: H2-O \n", - " 36: H2-O \n", - " 37: H24-C12-O6 \n", - " 38: H2-O \n", - " 39: H24-C12-O6 \n", - " 40: H24-C12-O6 \n", - " 41: H2-O \n", - " 42: C6-O12-Fe \n", - " 43: H24-C12-O6 \n", - " 44: H2-O \n", - " 45: H24-C12-O6 \n", - " 46: H24-C12-O6 \n", - " 47: H2-O \n", - "---------------------------------------------------\n", - " # of Ref Molecules: = 10\n", - " With Formulae: \n", - " 0: C6-O12-Fe \n", - " 1: H24-C12-O6 \n", - " 2: H2-O \n", - " 3: H2-O \n", - " 4: H2-O \n", - " 5: H24-C12-O6 \n", - " 6: H24-C12-O6 \n", - " 7: K \n", - " 8: K \n", - " 9: K " - ] - }, - "execution_count": 19, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "newcell" - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "id": "2f6ddd7e-aa15-46cf-838a-6277c48fd116", - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "data": { - "text/plain": [ - "[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.classify_fragments\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.classify_fragments\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = K\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.classify_fragments\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = K\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.classify_fragments\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = K\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.classify_fragments\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.classify_fragments\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.classify_fragments\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.classify_fragments\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.classify_fragments\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 19\n", - " Formula = C6-O12-Fe\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.classify_fragments\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.classify_fragments\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.classify_fragments\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = K\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.classify_fragments\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = K\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.classify_fragments\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = K\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.classify_fragments\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.classify_fragments\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.classify_fragments\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.classify_fragments\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.classify_fragments\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.classify_fragments\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.classify_fragments\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.classify_fragments\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = K\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.classify_fragments\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = K\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.classify_fragments\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = K\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.classify_fragments\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.classify_fragments\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.classify_fragments\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.classify_fragments\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.classify_fragments\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.classify_fragments\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 19\n", - " Formula = C6-O12-Fe\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.reconstruct\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 42\n", - " Formula = H24-C12-O6\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.reconstruct\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.reconstruct\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 42\n", - " Formula = H24-C12-O6\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.reconstruct\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 42\n", - " Formula = H24-C12-O6\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.reconstruct\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.reconstruct\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.reconstruct\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 42\n", - " Formula = H24-C12-O6\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.reconstruct\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.reconstruct\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 42\n", - " Formula = H24-C12-O6\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.reconstruct\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 42\n", - " Formula = H24-C12-O6\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.reconstruct\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.reconstruct\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 19\n", - " Formula = C6-O12-Fe\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.reconstruct\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 42\n", - " Formula = H24-C12-O6\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.reconstruct\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.reconstruct\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 42\n", - " Formula = H24-C12-O6\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.reconstruct\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 42\n", - " Formula = H24-C12-O6\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.reconstruct\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.reconstruct\n", - " ---------------------------------------------------]" - ] - }, - "execution_count": 20, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "newcell.moleclist" - ] - }, - { - "cell_type": "code", - "execution_count": 25, - "id": "8ea78a37-51d3-4f20-94a2-3c0186fb46e2", - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "------------- Cell2mol Charge State ---------------\n", - " Status = True\n", - " Smiles = O=C([O-])C(=O)[O-]\n", - " Charge Tried = -2\n", - " Uncorrected Total Charge = -2\n", - " Corrected Total Charge = -2\n", - " Corrected Absolute Total Charge = 2\n", - " Corrected Is Zwitterion? = False\n", - "---------------------------------------------------\n", - "\n", - "3.0\n", - "------------- Cell2mol Charge State ---------------\n", - " Status = True\n", - " Smiles = [H]C1([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC1([H])[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", - "\n", - "------------- Cell2mol Charge State ---------------\n", - " Status = True\n", - " Smiles = [H]O[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", - "\n", - "------------- Cell2mol Charge State ---------------\n", - " Status = True\n", - " Smiles = [K+]\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", - "\n" - ] - } - ], - "source": [ - "for specie in refcell.unique_species:\n", - " if specie.subtype == \"metal\":\n", - " print(specie.charge)\n", - " else:\n", - " print(specie.charge_state) " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "edd454b8-ada7-4424-98de-df6d7592b244", - "metadata": {}, - "outputs": [], - "source": [ - "######################################################\n", - "def set_charge_state(unique_specie, target, debug: int=0):\n", - " \n", - " prot = unique_specie.charge_state.protonation\n", - " final_charge = unique_specie.totcharge\n", - "\n", - " # For \"reference\" cell\n", - " ref_data, target_data = arrange_data_for_reorder(unique_specie, target)\n", - " if debug >=2 : print(ref_data, target_data)\n", - " dummy1, dummy2, map12 = reorder(ref_data, target_data, unique_specie.coord, target.coord)\n", - " \n", - " if np.array_equal(map12, np.arange(len(target_data))):\n", - " if debug >=1 : print(f\"({target.subtype}) {target.formula} {final_charge=} No need to reorder\")\n", - " cs = get_charge(final_charge, prot)\n", - " target.set_charges(cs.corr_total_charge, cs.corr_atom_charges, cs.smiles, cs.rdkit_obj)\n", - " \n", - " else:\n", - " temp_prot = copy.deepcopy(prot)\n", - " reordered_prot = temp_prot.reorder(map12)\n", - " # print(f\"{reordered_prot=}\")\n", - " # print(f\"{temp_prot=}\")\n", - " # print(f\"{prot=}\")\n", - " # print(map12)\n", - " if debug >=1 : print(f\"({target.subtype}) {target.formula} {final_charge=} Reordered {map12=}\")\n", - " cs = get_charge(final_charge, reordered_prot)\n", - " target.set_charges(cs.corr_total_charge, cs.corr_atom_charges, cs.smiles, cs.rdkit_obj)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "e25c4768-6206-4ea8-a5c0-eb0f386024cf", - "metadata": {}, - "outputs": [], - "source": [ - "# Add parent to all molecules & reconstructed molecules in unit cell " - ] - }, - { - "cell_type": "code", - "execution_count": 30, - "id": "ed7ed326-e2af-4990-b68c-71670031421a", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "H2-O [('unit_cell', 525)] [[120, 489, 516]]\n", - "H2-O [('unit_cell', 525)] [[111, 480, 507]]\n", - "K [('unit_cell', 525)] [[1]]\n", - "K [('unit_cell', 525)] [[2]]\n", - "K [('unit_cell', 525)] [[0]]\n", - "H2-O [('unit_cell', 525)] [[121, 490, 517]]\n", - "H2-O [('unit_cell', 525)] [[112, 481, 508]]\n", - "H2-O [('unit_cell', 525)] [[122, 491, 518]]\n", - "H2-O [('unit_cell', 525)] [[113, 482, 509]]\n", - "C6-O12-Fe [('unit_cell', 525)] [[10, 69, 70, 71, 78, 79, 80, 87, 88, 89, 96, 97, 98, 456, 457, 458, 465, 466, 467]]\n", - "H2-O [('unit_cell', 525)] [[123, 492, 519]]\n", - "H2-O [('unit_cell', 525)] [[105, 474, 501]]\n", - "K [('unit_cell', 525)] [[5]]\n", - "K [('unit_cell', 525)] [[4]]\n", - "K [('unit_cell', 525)] [[3]]\n", - "H2-O [('unit_cell', 525)] [[124, 493, 520]]\n", - "H2-O [('unit_cell', 525)] [[106, 475, 502]]\n", - "H2-O [('unit_cell', 525)] [[125, 494, 521]]\n", - "H2-O [('unit_cell', 525)] [[116, 485, 512]]\n", - "H2-O [('unit_cell', 525)] [[107, 476, 503]]\n", - "H2-O [('unit_cell', 525)] [[126, 495, 522]]\n", - "H2-O [('unit_cell', 525)] [[108, 477, 504]]\n", - "K [('unit_cell', 525)] [[8]]\n", - "K [('unit_cell', 525)] [[7]]\n", - "K [('unit_cell', 525)] [[6]]\n", - "H2-O [('unit_cell', 525)] [[127, 496, 523]]\n", - "H2-O [('unit_cell', 525)] [[118, 487, 514]]\n", - "H2-O [('unit_cell', 525)] [[109, 478, 505]]\n", - "H2-O [('unit_cell', 525)] [[128, 497, 524]]\n", - "H2-O [('unit_cell', 525)] [[110, 479, 506]]\n", - "C6-O12-Fe [] []\n", - "H24-C12-O6 [] []\n", - "H2-O [] []\n", - "H24-C12-O6 [] []\n", - "H24-C12-O6 [] []\n", - "H2-O [] []\n", - "H2-O [] []\n", - "H24-C12-O6 [] []\n", - "H2-O [] []\n", - "H24-C12-O6 [] []\n", - "H24-C12-O6 [] []\n", - "H2-O [] []\n", - "C6-O12-Fe [] []\n", - "H24-C12-O6 [] []\n", - "H2-O [] []\n", - "H24-C12-O6 [] []\n", - "H24-C12-O6 [] []\n", - "H2-O [] []\n" - ] - } - ], - "source": [ - "for mol in newcell.moleclist:\n", - " print(mol.formula, [(p.subtype, p.natoms) for p in mol.parents], mol.parents_indices)" - ] - }, - { - "cell_type": "code", - "execution_count": 28, - "id": "8e6485cc-a9fc-4b02-8348-70e426185fce", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Molecule 0: H2-O\n", - "H2-O H2-O True\n", - "\n", - "Molecule 1: H2-O\n", - "H2-O H2-O True\n", - "\n", - "Molecule 2: K\n", - "K K True\n", - "\n", - "Molecule 3: K\n", - "K K True\n", - "\n", - "Molecule 4: K\n", - "K K True\n", - "\n", - "Molecule 5: H2-O\n", - "H2-O H2-O True\n", - "\n", - "Molecule 6: H2-O\n", - "H2-O H2-O True\n", - "\n", - "Molecule 7: H2-O\n", - "H2-O H2-O True\n", - "\n", - "Molecule 8: H2-O\n", - "H2-O H2-O True\n", - "\n", - "Molecule 9: C6-O12-Fe\n" - ] - }, - { - "ename": "AttributeError", - "evalue": "'molecule' object has no attribute 'ligands'", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mAttributeError\u001b[0m Traceback (most recent call last)", - "Input \u001b[0;32mIn [28]\u001b[0m, in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mMolecule \u001b[39m\u001b[38;5;132;01m{\u001b[39;00midx\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m: \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mmol\u001b[38;5;241m.\u001b[39mformula\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m\"\u001b[39m)\n\u001b[1;32m 5\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m mol\u001b[38;5;241m.\u001b[39miscomplex:\n\u001b[0;32m----> 6\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m jdx, lig \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28menumerate\u001b[39m(\u001b[43mmol\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mligands\u001b[49m):\n\u001b[1;32m 7\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[1;32m 8\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m specie\u001b[38;5;241m.\u001b[39msubtype \u001b[38;5;241m==\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mligand\u001b[39m\u001b[38;5;124m\"\u001b[39m:\n", - "\u001b[0;31mAttributeError\u001b[0m: 'molecule' object has no attribute 'ligands'" - ] - } - ], - "source": [ - "from cell2mol.connectivity import compare_species, compare_metals\n", - "from new_charge_assignment import *\n", - "for idx, mol in enumerate(newcell.moleclist):\n", - " print(f\"Molecule {idx}: {mol.formula}\")\n", - " if mol.iscomplex:\n", - " for jdx, lig in enumerate(mol.ligands):\n", - " for specie in refcell.unique_species:\n", - " if specie.subtype == \"ligand\":\n", - " issame = compare_species(lig, specie)\n", - " if issame:\n", - " # set_charge_state(specie, lig)\n", - " print(lig.formula, specie.formula, issame)\n", - " for met in mol.metals:\n", - " for specie in refcell.unique_species:\n", - " if specie.subtype == \"metal\":\n", - " issame = compare_metals(met, specie)\n", - " if issame:\n", - " # met.set_charge(specie.charge)\n", - " print(met.formula, specie.formula, issame) \n", - " else:\n", - " for specie in refcell.unique_species: \n", - " if specie.subtype == \"molecule\":\n", - " issame = compare_species(mol, specie)\n", - " if issame:\n", - " # set_charge_state(specie, mol)\n", - " print(mol.formula, specie.formula, issame)\n", - " print(\"\")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "5a5db136-bcde-4469-b413-0c63942465a2", - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "cell2mol", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.10.6" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/cell2mol/test/Get_Reference_cell.ipynb b/cell2mol/test/Get_Reference_cell.ipynb deleted file mode 100644 index 176d382f8..000000000 --- a/cell2mol/test/Get_Reference_cell.ipynb +++ /dev/null @@ -1,3720 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 1, - "id": "f2657264-6361-480f-8f6e-2d3c7cea4cc7", - "metadata": {}, - "outputs": [ - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "68cee8da36ec4f1f90927adeb1f1e161", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "from scipy import sparse\n", - "from ase.build import molecule\n", - "from ase.neighborlist import get_connectivity_matrix\n", - "from ase.neighborlist import natural_cutoffs\n", - "from ase.neighborlist import NeighborList\n", - "import ase\n", - "import numpy as np\n", - "from ase.io import read\n", - "from ase import Atoms\n", - "import ase.visualize\n", - "from ase.visualize.plot import plot_atoms\n", - "from cell2mol.read_write import readinfo\n", - "from cell2mol.cell_operations import frac2cart_fromparam, cart2frac\n", - "import nglview\n", - "from ase.build import molecule\n", - "from ase.neighborlist import NeighborList\n", - "import matplotlib.pyplot as plt" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "5ff88c96-bda9-4f00-8323-20a1386d5253", - "metadata": {}, - "outputs": [], - "source": [ - "folder = \"error_2\"\n", - "name = \"BOFFOS\"\n", - "infopath = f\"{folder}/{name}/{name}.info\"\n", - "input_path = f\"{folder}/{name}/{name}.cif\"" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "c883d74e-e2c3-463e-86ae-1133495aaee1", - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 0 and 59 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 0 and 60 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 2 and 61 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 2 and 62 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 3 and 63 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 3 and 64 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 4 and 65 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 4 and 66 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 5 and 67 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 5 and 68 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 6 and 69 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 6 and 70 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 7 and 71 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 7 and 72 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 8 and 73 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 8 and 74 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 9 and 75 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 9 and 76 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 10 and 77 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 10 and 78 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 11 and 79 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 11 and 80 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 15 and 81 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 15 and 82 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 16 and 83 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 16 and 84 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 17 and 85 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 17 and 86 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 18 and 87 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 18 and 88 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 19 and 89 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 19 and 90 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 20 and 91 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 20 and 92 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 21 and 93 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 21 and 94 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 22 and 95 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 22 and 96 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 23 and 97 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 23 and 98 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 24 and 99 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 24 and 100 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 25 and 101 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 25 and 102 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 26 and 103 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 26 and 104 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 27 and 105 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 27 and 106 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 28 and 107 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 28 and 108 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 29 and 109 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 29 and 110 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 30 and 111 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 30 and 112 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 31 and 113 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 31 and 114 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 32 and 115 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 32 and 116 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 33 and 117 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 33 and 118 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 34 and 119 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 34 and 120 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 35 and 121 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 35 and 122 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 36 and 123 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 36 and 124 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 37 and 125 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 37 and 126 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 38 and 127 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 38 and 128 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 39 and 129 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 39 and 130 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 40 and 131 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 40 and 132 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 41 and 133 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 41 and 134 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 42 and 135 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 42 and 136 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 43 and 137 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 43 and 138 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 44 and 139 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 44 and 140 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 45 and 141 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 45 and 142 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 46 and 143 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 46 and 144 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 47 and 145 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 47 and 146 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 48 and 147 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 48 and 148 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 49 and 149 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 49 and 150 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 50 and 151 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 50 and 152 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 51 and 153 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 51 and 154 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 52 and 155 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 52 and 156 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n" - ] - } - ], - "source": [ - "atoms = read(input_path)\n", - "cell_labels = atoms.get_chemical_symbols()\n", - "cell_pos = atoms.positions\n", - "cell_fracs = atoms.get_scaled_positions()\n", - "cell_vector = atoms.cell.array\n", - "# cell_parameters = atoms.cell.cellpar()\n", - "space_group = atoms.info['spacegroup']\n", - "sym_ops = space_group.get_op()" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "0158d29e-2ed5-44ba-ad4c-42cf61be04b5", - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "#########################################\n", - " GETREFS: Generate reference molecules \n", - "#########################################\n", - "GETREFS: found 10 reference molecules\n", - "GETREFS: ['C6-O12-Fe', 'H24-C12-O6', 'H2-O', 'H2-O', 'H2-O', 'H24-C12-O6', 'H24-C12-O6', 'K', 'K', 'K']\n", - "GETREFS: [------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 19\n", - " Formula = C6-O12-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 MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 42\n", - " Formula = H24-C12-O6\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 42\n", - " Formula = H24-C12-O6\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 42\n", - " Formula = H24-C12-O6\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = K\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = K\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = K\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - "]\n", - "GETREFS: working with C6-O12-Fe\n", - "GETREFS: working with H24-C12-O6\n", - "GETREFS: working with H2-O\n", - "GETREFS: working with H2-O\n", - "GETREFS: working with H2-O\n", - "GETREFS: working with H24-C12-O6\n", - "GETREFS: working with H24-C12-O6\n", - "GETREFS: working with K\n", - "GETREFS: working with K\n", - "GETREFS: working with K\n" - ] - }, - { - "data": { - "text/plain": [ - "[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 19\n", - " Formula = C6-O12-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 MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 42\n", - " Formula = H24-C12-O6\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 42\n", - " Formula = H24-C12-O6\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 42\n", - " Formula = H24-C12-O6\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = K\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = K\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = K\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " ---------------------------------------------------]" - ] - }, - "execution_count": 4, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "from cell2mol.classes import cell\n", - "\n", - "labels, pos, ref_labels, ref_fracs, cellvec, cell_param = readinfo(infopath)\n", - "# labels, pos, and cellvec will not be used\n", - "ref_pos = frac2cart_fromparam(ref_fracs, cell_param)\n", - "refcell = cell(name, ref_labels, ref_pos, ref_fracs, cell_vector, cell_param)\n", - "refcell.get_subtype(\"reference\")\n", - "refcell.get_reference_molecules(ref_labels, ref_fracs)" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "id": "1f863811-1f37-44a3-82cc-9b91889b45e3", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Adjacency [8, 10, 18] ['O', 'O', 'C']\n", - "Adjacency [12, 13, 16] ['O', 'O', 'C']\n", - "Adjacency [7, 9, 17] ['O', 'O', 'C']\n", - "Adjacency [11, 14, 15] ['O', 'O', 'C']\n", - "Adjacency [1, 2, 6] ['O', 'O', 'C']\n", - "Adjacency [3, 4, 5] ['O', 'O', 'C']\n", - "Adjacency [0, 7, 8, 9] ['O', 'H', 'H', 'C']\n", - "Adjacency [1, 6, 10, 11] ['O', 'C', 'H', 'H']\n", - "Adjacency [1, 13, 14, 15] ['O', 'H', 'H', 'C']\n", - "Adjacency [2, 12, 16, 17] ['O', 'C', 'H', 'H']\n", - "Adjacency [2, 19, 20, 21] ['O', 'H', 'H', 'C']\n", - "Adjacency [3, 18, 22, 23] ['O', 'C', 'H', 'H']\n", - "Adjacency [3, 25, 26, 27] ['O', 'H', 'H', 'C']\n", - "Adjacency [4, 24, 28, 29] ['O', 'C', 'H', 'H']\n", - "Adjacency [4, 31, 32, 33] ['O', 'H', 'H', 'C']\n", - "Adjacency [5, 30, 34, 35] ['O', 'C', 'H', 'H']\n", - "Adjacency [5, 37, 38, 39] ['O', 'H', 'H', 'C']\n", - "Adjacency [0, 36, 40, 41] ['O', 'C', 'H', 'H']\n", - "Adjacency [0, 7, 8, 9] ['O', 'H', 'H', 'C']\n", - "Adjacency [1, 6, 10, 11] ['O', 'C', 'H', 'H']\n", - "Adjacency [1, 13, 14, 15] ['O', 'H', 'H', 'C']\n", - "Adjacency [2, 12, 16, 17] ['O', 'C', 'H', 'H']\n", - "Adjacency [2, 19, 20, 21] ['O', 'H', 'H', 'C']\n", - "Adjacency [3, 18, 22, 23] ['O', 'C', 'H', 'H']\n", - "Adjacency [3, 25, 26, 27] ['O', 'H', 'H', 'C']\n", - "Adjacency [4, 24, 28, 29] ['O', 'C', 'H', 'H']\n", - "Adjacency [4, 31, 32, 33] ['O', 'H', 'H', 'C']\n", - "Adjacency [5, 30, 34, 35] ['O', 'C', 'H', 'H']\n", - "Adjacency [5, 37, 38, 39] ['O', 'H', 'H', 'C']\n", - "Adjacency [0, 36, 40, 41] ['O', 'C', 'H', 'H']\n", - "Adjacency [0, 7, 8, 9] ['O', 'H', 'H', 'C']\n", - "Adjacency [1, 6, 10, 11] ['O', 'C', 'H', 'H']\n", - "Adjacency [1, 13, 14, 15] ['O', 'H', 'H', 'C']\n", - "Adjacency [2, 12, 16, 17] ['O', 'C', 'H', 'H']\n", - "Adjacency [2, 19, 20, 21] ['O', 'H', 'H', 'C']\n", - "Adjacency [3, 18, 22, 23] ['O', 'C', 'H', 'H']\n", - "Adjacency [3, 25, 26, 27] ['O', 'H', 'H', 'C']\n", - "Adjacency [4, 24, 28, 29] ['O', 'C', 'H', 'H']\n", - "Adjacency [4, 31, 32, 33] ['O', 'H', 'H', 'C']\n", - "Adjacency [5, 30, 34, 35] ['O', 'C', 'H', 'H']\n", - "Adjacency [5, 37, 38, 39] ['O', 'H', 'H', 'C']\n", - "Adjacency [0, 36, 40, 41] ['O', 'C', 'H', 'H']\n", - "-------------------------------\n", - "Errors in Reference Molecules\n", - "-------------------------------\n", - "Cell2mol terminated with error number 0. Message:\n", - "No Errors Found\n", - "\n" - ] - } - ], - "source": [ - "if not refcell.has_isolated_H: \n", - " refcell.check_missing_H() \n", - "refcell.assess_errors(ref=True)" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "id": "f04d448e-110b-49cf-9ff8-6fa2360caf3a", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "C6-O12-Fe ['reference'] [[1, 8, 9, 10, 11, 51, 52, 73, 74, 75, 76, 77, 78, 79, 80, 153, 154, 155, 156]]\n", - "-- C2-O4 split_complex ['molecule', 'reference'] [[8, 10, 12, 13, 16, 18], [1, 8, 9, 10, 11, 51, 52, 73, 74, 75, 76, 77, 78, 79, 80, 153, 154, 155, 156]]\n", - "-- C2-O4 split_complex ['molecule', 'reference'] [[7, 9, 11, 14, 15, 17], [1, 8, 9, 10, 11, 51, 52, 73, 74, 75, 76, 77, 78, 79, 80, 153, 154, 155, 156]]\n", - "-- C2-O4 split_complex ['molecule', 'reference'] [[1, 2, 3, 4, 5, 6], [1, 8, 9, 10, 11, 51, 52, 73, 74, 75, 76, 77, 78, 79, 80, 153, 154, 155, 156]]\n" - ] - } - ], - "source": [ - "for ref in refcell.refmoleclist:\n", - " if ref.iscomplex :\n", - " print(ref.formula, [p.subtype for p in ref.parents], [p_idx for p_idx in ref.parents_indices])\n", - " # for met in ref.metals:\n", - " # print(\"--\", met.label, [p.subtype for p in met.parents], [p_idx for p_idx in met.parents_index])\n", - " # # for g in met.groups:\n", - " # print(g.formula, [p.subtype for p in g.parents], [p_idx for p_idx in g.parents_indices])\n", - " \n", - " for lig in ref.ligands:\n", - " print(\"--\", lig.formula, lig.origin, [p.subtype for p in lig.parents], [p_idx for p_idx in lig.parents_indices])\n", - " # for a in lig.atoms:\n", - " # print(a.label, [p.subtype for p in a.parents], [p_idx for p_idx in a.parents_index])\n", - " # for g in lig.groups:\n", - " # print(g.formula, [p.subtype for p in g.parents], [p_idx for p_idx in g.parents_indices])\n", - " # else :\n", - " # print(ref.formula, [p.subtype for p in ref.parents], [p_idx for p_idx in ref.parents_indices])\n", - " # print(\"\")" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "id": "01f7c701-6be8-4363-adbd-1d03479a9602", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "------------- Cell2mol CELL Object ----------------\n", - " Version = 2.0\n", - " Type = cell\n", - " Sub-Type = reference\n", - " Name (Refcode) = BOFFOS\n", - " Num Atoms = 157\n", - " Cell Parameters a:c = [24.369, 24.369, 9.748]\n", - " Cell Parameters al:ga = [90.0, 90.0, 120.0]\n", - "---------------------------------------------------\n", - " # of Ref Molecules: = 10\n", - " With Formulae: \n", - " 0: C6-O12-Fe \n", - " 1: H24-C12-O6 \n", - " 2: H2-O \n", - " 3: H2-O \n", - " 4: H2-O \n", - " 5: H24-C12-O6 \n", - " 6: H24-C12-O6 \n", - " 7: K \n", - " 8: K \n", - " 9: K " - ] - }, - "execution_count": 7, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "refcell" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "id": "e4b8c994-8003-4527-a886-9fde45ba91ad", - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Getting unique species in cell\n" - ] - }, - { - "data": { - "text/plain": [ - "[------------- Cell2mol LIGAND Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = ligand\n", - " Number of Atoms = 6\n", - " Formula = C2-O4\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_complex\n", - " Number of Groups = 2\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol METAL Object --------------\n", - " Version = 2.0\n", - " Type = atom\n", - " Sub-Type = metal\n", - " Label = Fe\n", - " Atomic Number = 26\n", - " Index in Molecule = 0\n", - " Metal Adjacency (mconnec) = 6\n", - " Regular Adjacencies (connec) = 6\n", - " ----------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 42\n", - " Formula = H24-C12-O6\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = K\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " ---------------------------------------------------]" - ] - }, - "execution_count": 8, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "refcell.get_unique_species()" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "id": "e7a8f538-b934-4356-8db5-e622900e5911", - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "data": { - "text/plain": [ - "[------------- Cell2mol LIGAND Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = ligand\n", - " Number of Atoms = 6\n", - " Formula = C2-O4\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_complex\n", - " Number of Groups = 2\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol METAL Object --------------\n", - " Version = 2.0\n", - " Type = atom\n", - " Sub-Type = metal\n", - " Label = Fe\n", - " Atomic Number = 26\n", - " Index in Molecule = 0\n", - " Metal Adjacency (mconnec) = 6\n", - " Regular Adjacencies (connec) = 6\n", - " ----------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 42\n", - " Formula = H24-C12-O6\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = K\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " ---------------------------------------------------]" - ] - }, - "execution_count": 9, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "refcell.unique_species" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "id": "140c087d-4417-4556-9e8c-9b59f10e0d01", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[0, 0, 0, 1, 2, 3, 3, 3, 2, 2, 4, 4, 4]" - ] - }, - "execution_count": 10, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "refcell.unique_indices" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "id": "1688f436-af3c-4b47-acb5-2820f7c09728", - "metadata": {}, - "outputs": [], - "source": [ - "debug = 2" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "id": "51665722-d915-490e-8064-a0a361a4cba0", - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - " GET_PROTONATION_STATES: Evaluating group O with parent_indices [2]\n", - " GET_PROTONATION_STATES: evaluating non-haptic group with index 2 and label O\n", - " GET_PROTONATION_STATES: Evaluating group O with parent_indices [1]\n", - " GET_PROTONATION_STATES: evaluating non-haptic group with index 1 and label O\n", - " GET_PROTONATION_STATES:protonation_states=[------------- Cell2mol Protonation ----------------\n", - " Status = True\n", - " Labels = ['O', 'O', 'O', 'O', 'C', 'C']\n", - " Type = Local\n", - " Atoms added in positions = [0 0 0 0 0 0]\n", - " Atoms blocked (no atoms added) = [0 1 1 0 0 0]\n", - "---------------------------------------------------\n", - "]\n", - " POSCHARGE will try charges [0, -1, 1, -2, 2, -3, 3, -4, 4]\n", - " POSCHARGE: charge 0 with smiles [O-][C+]([O-])[C+]([O-])[O-]\n", - " POSCHARGE: charge 0 with smiles [O-][C+]([O-])[C+]([O-])[O-]\n", - " POSCHARGE: charge 0 with smiles [O-][C+]([O-])[C+]([O-])[O-]\n", - " POSCHARGE: charge 0 with smiles O=C([O-])C(=O)[O-]\n", - " POSCHARGE: charge 0 with smiles [O-][C+]([O-])[C+]([O-])[O-]\n", - " POSCHARGE: charge 0 with smiles [O-][C+]([O-])[C-]([O-])[O-]\n", - " POSCHARGE: charge 0 with smiles [O-][C+]([O-])[C+]([O-])[O-]\n", - " POSCHARGE: charge 0 with smiles [O-]C([O-])=C([O-])[O-]\n", - " POSCHARGE: charge 0 with smiles [O-][C+]([O-])[C+]([O-])[O-]\n", - " NEW SELECT FUNCTION: uncorr_total: [-2, -2, -2, -2, -2, -4, -2, -4, -2]\n", - " NEW SELECT FUNCTION: uncorr_abs_total: [2, 2, 2, 2, 2, 4, 2, 4, 2]\n", - " NEW SELECT FUNCTION: uncorr_abs_atcharge: [6, 6, 6, 2, 6, 6, 6, 4, 6]\n", - " NEW SELECT FUNCTION: uncorr_zwitt: [True, True, True, False, True, True, True, False, True]\n", - " NEW SELECT FUNCTION: coincide: [False, False, False, True, False, False, False, True, False]\n", - " NEW SELECT FUNCTION: listofmintot: [0, 1, 2, 3, 4, 6, 8]\n", - " NEW SELECT FUNCTION: listofminabs: [3]\n", - " NEW SELECT FUNCTION: tmplist: [3], including:\n", - " NEW SELECT FUNCTION: Corr_charge=-2\n", - " NEW SELECT FUNCTION: Smiles=O=C([O-])C(=O)[O-]\n", - " NEW SELECT FUNCTION: found corr_charges=[-2]\n", - " NEW SELECT FUNCTION: doing tgt_charge=-2\n", - " NEW SELECT FUNCTION: charge_state added\n", - " NEW SELECT FUNCTION: Case 1, only one entry for -2 in tmplist\n", - " POSCHARGE: doing empty PROTONATION for this specie\n", - " CREATED EMPTY PROTONATION ------------- Cell2mol Protonation ----------------\n", - " Status = True\n", - " Labels = ['O', 'O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H']\n", - " Type = Empty\n", - " Atoms added in positions = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", - " Atoms blocked (no atoms added) = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "---------------------------------------------------\n", - "\n", - " POSCHARGE will try charges [0, -1, 1, -2, 2, -3, 3]\n", - " POSCHARGE: charge 0 with smiles [H]C1([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC1([H])[H]\n", - " POSCHARGE: charge 0 with smiles [H]C1([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC1([H])[H]\n", - " POSCHARGE: charge 0 with smiles [H]C1([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC1([H])[H]\n", - " POSCHARGE: charge 0 with smiles [H]C1([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC1([H])[H]\n", - " POSCHARGE: charge 0 with smiles [H]C1([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC1([H])[H]\n", - " POSCHARGE: charge 0 with smiles [H]C1([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC1([H])[H]\n", - " POSCHARGE: charge 0 with smiles [H]C1([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC1([H])[H]\n", - " NEW SELECT FUNCTION: uncorr_total: [0, 0, 0, 0, 0, 0, 0]\n", - " NEW SELECT FUNCTION: uncorr_abs_total: [0, 0, 0, 0, 0, 0, 0]\n", - " NEW SELECT FUNCTION: uncorr_abs_atcharge: [0, 0, 0, 0, 0, 0, 0]\n", - " NEW SELECT FUNCTION: uncorr_zwitt: [False, False, False, False, False, False, False]\n", - " NEW SELECT FUNCTION: coincide: [True, False, False, False, False, False, False]\n", - " NEW SELECT FUNCTION: listofmintot: [0, 1, 2, 3, 4, 5, 6]\n", - " NEW SELECT FUNCTION: listofminabs: [0, 1, 2, 3, 4, 5, 6]\n", - " NEW SELECT FUNCTION: tmplist: [0], including:\n", - " NEW SELECT FUNCTION: Corr_charge=0\n", - " NEW SELECT FUNCTION: Smiles=[H]C1([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC1([H])[H]\n", - " NEW SELECT FUNCTION: found corr_charges=[0]\n", - " NEW SELECT FUNCTION: doing tgt_charge=0\n", - " NEW SELECT FUNCTION: charge_state added\n", - " NEW SELECT FUNCTION: Case 1, only one entry for 0 in tmplist\n", - " POSCHARGE: doing empty PROTONATION for this specie\n", - " CREATED EMPTY PROTONATION ------------- Cell2mol Protonation ----------------\n", - " Status = True\n", - " Labels = ['O', 'H', 'H']\n", - " Type = Empty\n", - " Atoms added in positions = [0, 0, 0]\n", - " Atoms blocked (no atoms added) = [0, 0, 0]\n", - "---------------------------------------------------\n", - "\n", - " POSCHARGE will try charges [0, -1, 1, -2, 2, -3, 3]\n", - " POSCHARGE: charge 0 with smiles [H]O[H]\n", - " POSCHARGE: charge 0 with smiles [H]O[H]\n", - " POSCHARGE: charge 0 with smiles [H]O[H]\n", - " POSCHARGE: charge 0 with smiles [H]O[H]\n", - " POSCHARGE: charge 0 with smiles [H]O[H]\n", - " POSCHARGE: charge 0 with smiles [H]O[H]\n", - " POSCHARGE: charge 0 with smiles [H]O[H]\n", - " NEW SELECT FUNCTION: uncorr_total: [0, 0, 0, 0, 0, 0, 0]\n", - " NEW SELECT FUNCTION: uncorr_abs_total: [0, 0, 0, 0, 0, 0, 0]\n", - " NEW SELECT FUNCTION: uncorr_abs_atcharge: [0, 0, 0, 0, 0, 0, 0]\n", - " NEW SELECT FUNCTION: uncorr_zwitt: [False, False, False, False, False, False, False]\n", - " NEW SELECT FUNCTION: coincide: [True, False, False, False, False, False, False]\n", - " NEW SELECT FUNCTION: listofmintot: [0, 1, 2, 3, 4, 5, 6]\n", - " NEW SELECT FUNCTION: listofminabs: [0, 1, 2, 3, 4, 5, 6]\n", - " NEW SELECT FUNCTION: tmplist: [0], including:\n", - " NEW SELECT FUNCTION: Corr_charge=0\n", - " NEW SELECT FUNCTION: Smiles=[H]O[H]\n", - " NEW SELECT FUNCTION: found corr_charges=[0]\n", - " NEW SELECT FUNCTION: doing tgt_charge=0\n", - " NEW SELECT FUNCTION: charge_state added\n", - " NEW SELECT FUNCTION: Case 1, only one entry for 0 in tmplist\n", - " POSCHARGE: doing empty PROTONATION for this specie\n", - " CREATED EMPTY PROTONATION ------------- Cell2mol Protonation ----------------\n", - " Status = True\n", - " Labels = ['K']\n", - " Type = Empty\n", - " Atoms added in positions = [0]\n", - " Atoms blocked (no atoms added) = [0]\n", - "---------------------------------------------------\n", - "\n", - " POSCHARGE will try charges [0, -1, 1, -2, 2, -3, 3]\n", - " POSCHARGE: charge 0 with smiles [K+]\n", - " POSCHARGE: charge 0 with smiles [K+]\n", - " POSCHARGE: charge 0 with smiles [K+]\n", - " POSCHARGE: charge 0 with smiles [K+]\n", - " POSCHARGE: charge 0 with smiles [K+]\n", - " POSCHARGE: charge 0 with smiles [K+]\n", - " POSCHARGE: charge 0 with smiles [K+]\n", - " NEW SELECT FUNCTION: uncorr_total: [1, 1, 1, 1, 1, 1, 1]\n", - " NEW SELECT FUNCTION: uncorr_abs_total: [1, 1, 1, 1, 1, 1, 1]\n", - " NEW SELECT FUNCTION: uncorr_abs_atcharge: [1, 1, 1, 1, 1, 1, 1]\n", - " NEW SELECT FUNCTION: uncorr_zwitt: [False, False, False, False, False, False, False]\n", - " NEW SELECT FUNCTION: coincide: [False, False, True, False, False, False, False]\n", - " NEW SELECT FUNCTION: listofmintot: [0, 1, 2, 3, 4, 5, 6]\n", - " NEW SELECT FUNCTION: listofminabs: [0, 1, 2, 3, 4, 5, 6]\n", - " NEW SELECT FUNCTION: tmplist: [2], including:\n", - " NEW SELECT FUNCTION: Corr_charge=1\n", - " NEW SELECT FUNCTION: Smiles=[K+]\n", - " NEW SELECT FUNCTION: found corr_charges=[1]\n", - " NEW SELECT FUNCTION: doing tgt_charge=1\n", - " NEW SELECT FUNCTION: charge_state added\n", - " NEW SELECT FUNCTION: Case 1, only one entry for 1 in tmplist\n" - ] - } - ], - "source": [ - "selected_cs = []\n", - "for idx, specie in enumerate(refcell.unique_species):\n", - " tmp = specie.get_possible_cs(debug=debug)\n", - " if tmp is None: \n", - " print(\"error\")\n", - " if specie.subtype != \"metal\":\n", - " selected_cs.append(list([cs.corr_total_charge for cs in specie.possible_cs]))\n", - " else :\n", - " selected_cs.append(specie.possible_cs) " - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "id": "886cec55-200e-452c-9714-b20943578d8b", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[[-2], [2, 3], [0], [0], [1]]" - ] - }, - "execution_count": 13, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "selected_cs" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "id": "e7aff900-25e6-41bd-a88e-d38206017d81", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "BALANCE: iterlist [[-2], [2, 3], [0], [0], [1]]\n", - "BALANCE: unique_indices [0, 0, 0, 1, 2, 3, 3, 3, 2, 2, 4, 4, 4]\n", - "BALANCE: tmpdistr [(-2, 2, 0, 0, 1), (-2, 3, 0, 0, 1)]\n", - "BALANCE: alldistr added: [-2, -2, -2, 2, 0, 0, 0, 0, 0, 0, 1, 1, 1]\n", - "BALANCE: distribution=[-2, -2, -2, 2, 0, 0, 0, 0, 0, 0, 1, 1, 1]\n", - "BALANCE: alldistr added: [-2, -2, -2, 3, 0, 0, 0, 0, 0, 0, 1, 1, 1]\n", - "BALANCE: distribution=[-2, -2, -2, 2, 0, 0, 0, 0, 0, 0, 1, 1, 1]\n", - "BALANCE: distribution=[-2, -2, -2, 3, 0, 0, 0, 0, 0, 0, 1, 1, 1]\n" - ] - } - ], - "source": [ - "from cell2mol.charge_assignment import balance_charge\n", - "final_charge_distribution, final_charges = balance_charge(refcell.unique_indices, refcell.unique_species, debug=debug)" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "id": "d40fc43b-29e8-4b27-9347-436c058d8139", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[[-2, -2, -2, 3, 0, 0, 0, 0, 0, 0, 1, 1, 1]]" - ] - }, - "execution_count": 15, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "final_charge_distribution" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "id": "c12edebe-69b1-4d31-8687-9329f3568f55", - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "data": { - "text/plain": [ - "[(-2, 3, 0, 0, 1)]" - ] - }, - "execution_count": 16, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "final_charges" - ] - }, - { - "cell_type": "code", - "execution_count": 40, - "id": "131a0049-5821-4e2f-a58c-4fb094021d14", - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0 C2-O4\n", - "1 Fe\n", - "2 H24-C12-O6\n", - "3 H2-O\n", - "4 K\n" - ] - } - ], - "source": [ - "for specie, final_charge in zip(refcell.unique_species, final_charges[0]):\n", - " print(specie.unique_index, specie.formula)\n", - " if (specie.subtype == \"molecule\" and specie.iscomplex == False) or (specie.subtype == \"ligand\"):\n", - " charge_list = [cs.corr_total_charge for cs in specie.possible_cs]\n", - " idx = charge_list.index(final_charge)\n", - " cs = specie.possible_cs[idx]\n", - " specie.charge_state = cs\n", - " # print(specie.charge_state.protonation)\n", - " specie.set_charges(cs.corr_total_charge, cs.corr_atom_charges, cs.smiles, cs.rdkit_obj)\n", - " elif specie.subtype == \"metal\" :\n", - " charge_list = specie.possible_cs \n", - " idx = charge_list.index(final_charge)\n", - " cs = specie.possible_cs[idx]\n", - " specie.set_charge(cs) \n", - " # print(specie)" - ] - }, - { - "cell_type": "code", - "execution_count": 41, - "id": "638b5114-5366-49d6-8c66-54d12ba888ad", - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "C2-O4 canonical smiles: O=C([O-])C(=O)[O-]\n" - ] - }, - { - "data": { - "image/png": "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", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "H24-C12-O6 canonical smiles: [H]C1([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC1([H])[H]\n" - ] - }, - { - "data": { - "image/png": "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", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "H2-O canonical smiles: [H]O[H]\n" - ] - }, - { - "data": { - "image/png": "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", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "K canonical smiles: [K+]\n" - ] - }, - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAMgAAADICAIAAAAiOjnJAAAABmJLR0QA/wD/AP+gvaeTAAAFqklEQVR4nO3bT0jTfxzH8e/m5sTFIlA0dRAZ0cmDEsYuXrroIUKhoReNEIXQUwQe1IMnDcFDBCJBhh6GWXjQi0SEDKIC6VDhJRrzz8FIsEjF6X6Hb3xcNe0X+OLrV5+P095fvshbeOJ33/mdJ51OW8Bh8zq9AI4nwoIEYUGCsCBBWJAgLEgQFiQICxKEBQnCggRhQYKwIEFYkCAsSBAWJAgLEoQFCcKCBGFBgrAgQViQICxIEBYkCAsShAUJwoIEYUGCsCBBWJAgLEgQFiQICxKEBQnCggRhQYKwIEFYkCAsSBAWJAgLEoQFCcKCBGFBgrAgQViQICxIEBYkCAsShAUJwoIEYUGCsCBBWJAgLEgQFiQICxKEBQnCggRhQYKwIEFYkCAsSBAWJAgLEoQFCcKCBGFBgrAgQViQICxIEBYkCAsShAUJwoIEYUGCsCBBWJAgLEgQFiQICxKEBQnCggRhQYKwIOFzegEHpFKpb9++2a8DgUB+fv7B529sbGxubpoxNzc3GAz+edrW1tabN28sy6qurvb7/Ye3rzulT55Xr16ZX//27dsHn7y8vBwOh835eXl58Xg865mfP3+2z1lZWRFs7TJcCg+ysbFx/fr1ZDJpjx6P5+HDh5FIxNmtXIGw9pVOp2/evPn69WtzZGBgoKmpycGVXISw9tXV1RWLxczY2tp6584dB/dxF8LK7tGjR/39/Wasq6t78OCBg/u4DmFlMTc3197ebsbKyspYLObz/X4Hvbi46M9w4cIF+3g4HM48bt8qnjQn8eOGg3369KmhoWFra8seS0tLp6amTp069eeZXq/39OnTZtzd3V1bW7MsKxQKeTweczwnJ0e88lFEWL/4+vVrXV3d6uqqPYZCoZmZmbKysqwnl5SUfPnyxYyJROLcuXOWZb1//764uFi/7JHGpXDP9vb2jRs3FhYW7NHv909OTlZUVDi7lUsR1p6Ojo7nz5/brz0ez8jIyNWrV51dyb0I66d79+4NDw+bsbe3t7m52cF93I6wLMuypqenu7q6zNjY2NjT0+PgPscAb96t+fn5aDS6s7Njj5FIZHR0NPO27n86e/bs27dvLcsqKCg45BVdiLCsYDCY+RnVx48fk8nk+fPn//Xn5ObmVlVVHepqLsal0Lp48eLjx4/Nn6i1tbX6+vofP344u5XbEZZlWda1a9cy32O9e/eura3NwX2OAcL6qa+vr7a21oxjY2OZN4n4V4T1k9frHR8fLy8vN0c6Ojri8biDK7kaYe05c+bM06dPzZPK29vbjY2N5t87+CeE9YuKioqRkREzJpPJaDSaSqUcXMmlCOt3TU1NnZ2dZnzx4kV3d7eD+7gUYWUxODhYU1Njxv7+/idPnji4jxsRVhY+ny8Wi5mnZeyH3z98+ODsVu5CWNkVFRVNTEwEAgF7/P79e319/fr6urNbuQhh7evKlStDQ0NmXFhYaGlpSafTDq7kIoR1kPb29lu3bpnx2bNnmanhAIT1F/fv3798+bIZ7969+/LlSwf3cQvC+ou8vLzJycnCwkJ7TKVS0Wh0aWnJ2a2OvpP42MylS5dmZ2ft1/t9USJTOByOx+OJRMIcMd/hwX48vBuFApdCSBAWJAgLEoQFCcKCBGFBgrAgQViQICxIEBYkCAsShAUJwoIEYUGCsCBBWJAgLEgQFiQICxKEBQnCggRhQYKwIEFYkCAsSBAWJAgLEoQFCcKCBGFBgrAgQViQICxIEBYkCAsShAUJwoIEYUGCsCBBWJAgLEgQFiQICxKEBQnCggRhQYKwIEFYkCAsSBAWJAgLEoQFCcKCBGFBgrAgQViQICxIEBYkCAsShAUJwoIEYUGCsCBBWJAgLEgQFiQICxKEBQnCggRhQYKwIEFYkCAsSBAWJAgLEoQFCcKCBGFBgrAgQViQICxIEBYkCAsShAWJ/wDvOzvdd4W25QAAAFl6VFh0cmRraXRQS0wgcmRraXQgMjAyMy4wOS42AAB4nHu/b+09BiDgZ0AARijdwCgswAXiM0ryAinHkvxcEM5M9ivNVZQShqqSYdDmFgExxMWQ9CIYICAGAL6SCjbiXY/kAAAAfXpUWHRNT0wgcmRraXQgMjAyMy4wOS42AAB4nONSAIEgF+/MEgU4MHLh4lJQMMCDLC0tFcKMDQwMuHwVQAwFJ1d3Tz8F5xBHJ5iIs3+oX0iwgiFQPRiiqnQM8feFiRgqeCsY6BmAATaGgrOHu60hTLWrnwuKbhAfZi+QzQUA/9kosMXA6IMAAAAtelRYdFNNSUxFUyByZGtpdCAyMDIzLjA5LjYAAHici/bWjlWo0TDQMdDRrAEAF9EDUDMzhpwAAAAASUVORK5CYII=", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "from IPython.display import display\n", - "from rdkit.Chem.Draw import IPythonConsole\n", - "IPythonConsole.drawOptions.addAtomIndices = False\n", - "IPythonConsole.molSize = 200,200\n", - "from rdkit import Chem\n", - "from cell2mol.connectivity import create_bonds_spicie\n", - "\n", - "for specie, final_charge in zip(refcell.unique_species, final_charges[0]):\n", - " if (specie.subtype == \"molecule\" and specie.iscomplex == False) or (specie.subtype == \"ligand\"):\n", - " create_bonds_spicie(specie, debug=0)\n", - " print(specie.formula, \"canonical smiles:\", Chem.MolToSmiles(specie.rdkit_obj, canonical=True))\n", - " display(specie.rdkit_obj)" - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "id": "d124aee4-31f7-4c89-b71e-7d1ab93c0fa8", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 19\n", - " Formula = C6-O12-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", - "\n", - "------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 42\n", - " Formula = H24-C12-O6\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = 0\n", - " Smiles = [H]C1([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC1([H])[H]\n", - "---------------------------------------------------\n", - "\n", - "------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = 0\n", - " Smiles = [H]O[H]\n", - "---------------------------------------------------\n", - "\n", - "------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - "\n", - "------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - "\n", - "------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 42\n", - " Formula = H24-C12-O6\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - "\n", - "------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 42\n", - " Formula = H24-C12-O6\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - "\n", - "------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = K\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = 1\n", - " Smiles = [K+]\n", - "---------------------------------------------------\n", - "\n", - "------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = K\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - "\n", - "------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = K\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - "\n" - ] - } - ], - "source": [ - "for ref in refcell.refmoleclist:\n", - " print(ref)" - ] - }, - { - "cell_type": "code", - "execution_count": 42, - "id": "a37a23c8-de26-4dac-b5ef-00a2799385e9", - "metadata": {}, - "outputs": [], - "source": [ - "from cell2mol.xyz2mol import xyz2mol\n", - "def get_charge_test(charge: int, prot: object, allow: bool=True, debug: int=0): \n", - " ## Generates the connectivity of a molecule given a desired charge (charge).\n", - " # The molecule is described by a protonation states that has labels, and the atomic cartesian coordinates \"coords\"\n", - " # The adjacency matrix is also provided in the protonation state(adjmat)\n", - " #:return charge_state which is an object with the necessary information for other functions to handle the result\n", - "\n", - " natoms = prot.natoms\n", - " atnums = prot.atnums\n", - "\n", - " # prot.coords and prot.cov_factor will not be used\n", - " mols = xyz2mol(atnums, prot.coords, prot.adjmat, prot.cov_factor, charge=charge, allow_charged_fragments=allow)\n", - " print(f\"GET_CHARGE.{len(mols)=} received from xyz2mol with charge {charge}\")\n", - " \n", - " if len(mols) > 1: print(\"WARNING: More than 1 mol received from xyz2mol for initcharge:\", charge)\n", - "\n", - " # Smiles are generated with rdkit\n", - " smiles = Chem.MolToSmiles(mols[0])\n", - " if debug >= 2: print(f\"GET_CHARGE. {smiles=}\")\n", - " # Gets the resulting charges\n", - " atom_charge = []\n", - " total_charge = 0\n", - " for i in range(natoms):\n", - " a = mols[0].GetAtomWithIdx(i) # Returns a particular Atom\n", - " atom_charge.append(a.GetFormalCharge())\n", - " total_charge += a.GetFormalCharge()\n", - "\n", - " # Connectivity is checked\n", - " iscorrect = check_rdkit_obj_connectivity(mols[0], prot.natoms, charge, debug=debug)\n", - "\n", - " # Charge_state is initiated\n", - " ch_state = charge_state(iscorrect, total_charge, atom_charge, mols[0], smiles, charge, allow, prot)\n", - "\n", - " return ch_state" - ] - }, - { - "cell_type": "code", - "execution_count": 43, - "id": "12c93c12-783e-40b7-9edf-b53549cf63f8", - "metadata": {}, - "outputs": [], - "source": [ - "import py3Dmol\n", - "\n", - "def draw_with_spheres(mol):\n", - " v = py3Dmol.view(width=300,height=300)\n", - " IPythonConsole.addMolToView(mol,v)\n", - " v.zoomTo()\n", - " v.setStyle({'sphere':{'radius':0.3},'stick':{'radius':0.2}});\n", - " v.show()" - ] - }, - { - "cell_type": "code", - "execution_count": 41, - "id": "97ea9d39-4f3a-413b-a5d7-ddd950259bc8", - "metadata": {}, - "outputs": [], - "source": [ - "def arrange_data_for_reorder(reference: object, target: object, debug: int=0):\n", - " # To do the reorder, we create new tags that include as much information as possible.\n", - " # Ideally, we aim to include the label + the connectivity + the metal connectivity\n", - " t_totconnec = 0\n", - " t_totmconnec = 0\n", - " for a in target.atoms:\n", - " t_totconnec += a.connec\n", - " t_totmconnec += a.mconnec\n", - " r_totconnec = 0\n", - " r_totmconnec = 0\n", - " for a in reference.atoms:\n", - " r_totconnec += a.connec\n", - " r_totmconnec += a.mconnec\n", - " if t_totconnec == r_totconnec: useconec = True\n", - " else: useconec = False\n", - " if t_totmconnec == r_totmconnec: usemconec = True\n", - " else: usemconec = False\n", - " # For target\n", - " target_data = []\n", - " for a in target.atoms:\n", - " data = a.label\n", - " if useconec: data += str(a.connec)\n", - " if usemconec: data += str(a.mconnec)\n", - " target_data.append(data)\n", - " # For reference\n", - " ref_data = []\n", - " for a in reference.atoms:\n", - " data = a.label\n", - " if useconec: data += str(a.connec)\n", - " if usemconec: data += str(a.mconnec)\n", - " ref_data.append(data)\n", - " return ref_data, target_data" - ] - }, - { - "cell_type": "code", - "execution_count": 50, - "id": "b14cd28d-11a8-424c-bd00-78dc8f902b8e", - "metadata": {}, - "outputs": [], - "source": [ - "from cell2mol.hungarian import reorder\n", - "import copy\n", - "\n", - "from IPython.display import display\n", - "from rdkit.Chem.Draw import IPythonConsole\n", - "IPythonConsole.ipython_3d = True\n", - "\n", - "IPythonConsole.drawOptions.addAtomIndices = True\n", - "IPythonConsole.molSize = 200,200\n", - "def set_charge_state(unique_specie, target):\n", - " prot = unique_specie.charge_state.protonation\n", - " final_charge = unique_specie.totcharge\n", - " \n", - " ref_data, target_data = arrange_data_for_reorder(unique_specie, target)\n", - " if debug >=2 : print(ref_data, target_data)\n", - " \n", - " dummy1, dummy2, map12 = reorder(ref_data, target_data, unique_specie.coord, target.coord)\n", - " \n", - " if np.array_equal(map12, np.arange(len(target_data))):\n", - " if debug >=1 : print(f\"({target.subtype}) {target.formula} {final_charge=} No need to reorder\")\n", - " cs = get_charge_test(final_charge, prot)\n", - " target.set_charges(cs.corr_total_charge, cs.corr_atom_charges, cs.smiles, cs.rdkit_obj)\n", - " \n", - " else:\n", - " temp_prot = copy.deepcopy(prot)\n", - " reordered_prot = temp_prot.reorder(map12)\n", - " # print(f\"{reordered_prot=}\")\n", - " # print(f\"{temp_prot=}\")\n", - " # print(f\"{prot=}\")\n", - " # print(map12)\n", - " if debug >=1 : print(f\"({target.subtype}) {target.formula} {final_charge=} Reordered {map12=}\")\n", - " cs = get_charge_test(final_charge, reordered_prot)\n", - " target.set_charges(cs.corr_total_charge, cs.corr_atom_charges, cs.smiles, cs.rdkit_obj)\n", - " display(target.rdkit_obj)\n", - " draw_with_spheres(target.rdkit_obj)" - ] - }, - { - "cell_type": "code", - "execution_count": 51, - "id": "ccae791c-2c63-42bf-8f00-fde94824f624", - "metadata": {}, - "outputs": [], - "source": [ - "from rdkit.Chem import rdDetermineBonds\n", - "from cell2mol.read_write import writexyz\n", - "def using_rdDetermineBonds(unique_specie, target, fdir, fname):\n", - " final_charge = unique_specie.totcharge\n", - " writexyz(fdir, fname, target.labels, target.coord, charge=final_charge)\n", - " raw_mol = Chem.MolFromXYZFile(f\"{fdir}/{fname}\")\n", - " conn_mol = Chem.Mol(raw_mol)\n", - " rdDetermineBonds.DetermineBonds(conn_mol, charge=final_charge)\n", - " \n", - " IPythonConsole.ipython_3d = False\n", - " display(conn_mol)\n", - " IPythonConsole.ipython_3d = True\n", - " draw_with_spheres(conn_mol)" - ] - }, - { - "cell_type": "code", - "execution_count": 52, - "id": "3f52255f-9317-43c5-9c9d-61f7b71c64ff", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Molecule 0: C6-O12-Fe\n", - "using rdDetermineBonds by reading xyz\n" - ] - }, - { - "data": { - "image/png": "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", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/3dmoljs_load.v0": "
\n

You appear to be running in JupyterLab (or JavaScript failed to load for some other reason). You need to install the 3dmol extension:
\n jupyter labextension install jupyterlab_3dmol

\n
\n", - "text/html": [ - "
\n", - "

You appear to be running in JupyterLab (or JavaScript failed to load for some other reason). You need to install the 3dmol extension:
\n", - " jupyter labextension install jupyterlab_3dmol

\n", - "
\n", - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "using rdDetermineBonds by reading xyz\n" - ] - }, - { - "data": { - "image/png": "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", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/3dmoljs_load.v0": "
\n

You appear to be running in JupyterLab (or JavaScript failed to load for some other reason). You need to install the 3dmol extension:
\n jupyter labextension install jupyterlab_3dmol

\n
\n", - "text/html": [ - "
\n", - "

You appear to be running in JupyterLab (or JavaScript failed to load for some other reason). You need to install the 3dmol extension:
\n", - " jupyter labextension install jupyterlab_3dmol

\n", - "
\n", - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "using rdDetermineBonds by reading xyz\n" - ] - }, - { - "data": { - "image/png": "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", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/3dmoljs_load.v0": "
\n

You appear to be running in JupyterLab (or JavaScript failed to load for some other reason). You need to install the 3dmol extension:
\n jupyter labextension install jupyterlab_3dmol

\n
\n", - "text/html": [ - "
\n", - "

You appear to be running in JupyterLab (or JavaScript failed to load for some other reason). You need to install the 3dmol extension:
\n", - " jupyter labextension install jupyterlab_3dmol

\n", - "
\n", - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "Molecule 1: H24-C12-O6\n", - "using rdDetermineBonds by reading xyz\n" - ] - }, - { - "data": { - "image/png": "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", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/3dmoljs_load.v0": "
\n

You appear to be running in JupyterLab (or JavaScript failed to load for some other reason). You need to install the 3dmol extension:
\n jupyter labextension install jupyterlab_3dmol

\n
\n", - "text/html": [ - "
\n", - "

You appear to be running in JupyterLab (or JavaScript failed to load for some other reason). You need to install the 3dmol extension:
\n", - " jupyter labextension install jupyterlab_3dmol

\n", - "
\n", - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "H24-C12-O6 H24-C12-O6 True\n", - "\n", - "Molecule 2: H2-O\n", - "using rdDetermineBonds by reading xyz\n" - ] - }, - { - "data": { - "image/png": "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", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/3dmoljs_load.v0": "
\n

You appear to be running in JupyterLab (or JavaScript failed to load for some other reason). You need to install the 3dmol extension:
\n jupyter labextension install jupyterlab_3dmol

\n
\n", - "text/html": [ - "
\n", - "

You appear to be running in JupyterLab (or JavaScript failed to load for some other reason). You need to install the 3dmol extension:
\n", - " jupyter labextension install jupyterlab_3dmol

\n", - "
\n", - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "H2-O H2-O True\n", - "\n", - "Molecule 3: H2-O\n", - "using rdDetermineBonds by reading xyz\n" - ] - }, - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAMgAAADICAIAAAAiOjnJAAAABmJLR0QA/wD/AP+gvaeTAAAM4UlEQVR4nO3da2wUVRsH8GfLbgXp9oJudylIaQkQkKTgWhC2Uk0NIboaU0Or1hapAS8o+oUQMaGskTeixFATNVVrrDRoQLTcRDFprBULgSLREq0ITdXS7YXtvaXdy3k/bOlsEehuO09nh/n/wofjXM48a/85M509M9UJIQhAbhFKFwA3JwQLWCBYwALBAhYIFrBAsIAFggUsECxggWABCwQLWCBYwALBAhYIFrBAsIAFggUsEKxwJ4SorKw8ffq0z+dTupYQIFjha2Bg4LPPPktJSVm+fLnVau3q6lK6ohAgWGGqtLR0xowZq1evbmxsjIqKUrqckCFYYSo2Nvapp56qqKhwOp3JyclKlxMyHea8h7+UlJRff/21vb09JiZG6VqChRELWCBYwALBAhYIFrBAsIAFggUsECxggWABC73SBcB1PfPMM/7vB+vr64no6aefNhgM06dPf+edd5QubWS48x6+Zs+efenSpasWzp07t6qqSpF6QoJgAQtcYwELBAtYIFjAAsECFggWsECwgAWCBSwQLGCBYAELBAtYIFjAAsECFggWsECwgAWCBSwQLGCBYAELBAtYIFjAAsECFggWsMBzhWGht7f322+/9bctFsuyZcuC3LG8vLy9vd3ffvTRRyMiwmWkwONfYaGurm7ofZArV648cuRIkDsuWrTozJkz/nZfX9/EiRNZ6gtduAQcbjIIFrBAsIAFggUsECxggWABCwQLWCBYwALBAhYIFrDAd4Vhp7W19bvvvgty47D9I4b4rjAsBH5XOGr4rhBufjgVhh2DwRAdHR3kxu3t7V6vl7We0UGwwk5GRsbops2EFZwKgQWCBSwQLGCBYAELBAtYIFjAAsECFggWsECwgAWCBSwQLGCBYAELzMcCFhixgAWmzajDqVOnTpw4sWjRouDfcKQsjFjq8M0337z44ovBz4VXHIKlDv7J7JcvX1a6kGAhWOqAYAELBAtYIFjAAsECFv5g9fX1KV1IsBAsdcCIBSwQLGCBYAELBAtYIFjAQtPBampq2rp1a1paWnJy8oIFC1544YW6ujoZ+9cy1QVLtol+1dXVdrvd6XTOmjUrKSnp3Llz9fX1MTExFRUVKSkpshxCyzo7O2Ni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", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/3dmoljs_load.v0": "
\n

You appear to be running in JupyterLab (or JavaScript failed to load for some other reason). You need to install the 3dmol extension:
\n jupyter labextension install jupyterlab_3dmol

\n
\n", - "text/html": [ - "
\n", - "

You appear to be running in JupyterLab (or JavaScript failed to load for some other reason). You need to install the 3dmol extension:
\n", - " jupyter labextension install jupyterlab_3dmol

\n", - "
\n", - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "H2-O H2-O True\n", - "\n", - "Molecule 4: H2-O\n", - "using rdDetermineBonds by reading xyz\n" - ] - }, - { - "data": { - "image/png": "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", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/3dmoljs_load.v0": "
\n

You appear to be running in JupyterLab (or JavaScript failed to load for some other reason). You need to install the 3dmol extension:
\n jupyter labextension install jupyterlab_3dmol

\n
\n", - "text/html": [ - "
\n", - "

You appear to be running in JupyterLab (or JavaScript failed to load for some other reason). You need to install the 3dmol extension:
\n", - " jupyter labextension install jupyterlab_3dmol

\n", - "
\n", - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "H2-O H2-O True\n", - "\n", - "Molecule 5: H24-C12-O6\n", - "using rdDetermineBonds by reading xyz\n" - ] - }, - { - "data": { - "image/png": "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", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/3dmoljs_load.v0": "
\n

You appear to be running in JupyterLab (or JavaScript failed to load for some other reason). You need to install the 3dmol extension:
\n jupyter labextension install jupyterlab_3dmol

\n
\n", - "text/html": [ - "
\n", - "

You appear to be running in JupyterLab (or JavaScript failed to load for some other reason). You need to install the 3dmol extension:
\n", - " jupyter labextension install jupyterlab_3dmol

\n", - "
\n", - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "H24-C12-O6 H24-C12-O6 True\n", - "\n", - "Molecule 6: H24-C12-O6\n", - "using rdDetermineBonds by reading xyz\n" - ] - }, - { - "data": { - "image/png": "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", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/3dmoljs_load.v0": "
\n

You appear to be running in JupyterLab (or JavaScript failed to load for some other reason). You need to install the 3dmol extension:
\n jupyter labextension install jupyterlab_3dmol

\n
\n", - "text/html": [ - "
\n", - "

You appear to be running in JupyterLab (or JavaScript failed to load for some other reason). You need to install the 3dmol extension:
\n", - " jupyter labextension install jupyterlab_3dmol

\n", - "
\n", - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "H24-C12-O6 H24-C12-O6 True\n", - "\n", - "Molecule 7: K\n", - "using rdDetermineBonds by reading xyz\n" - ] - }, - { - "data": { - "image/png": "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", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/3dmoljs_load.v0": "
\n

You appear to be running in JupyterLab (or JavaScript failed to load for some other reason). You need to install the 3dmol extension:
\n jupyter labextension install jupyterlab_3dmol

\n
\n", - "text/html": [ - "
\n", - "

You appear to be running in JupyterLab (or JavaScript failed to load for some other reason). You need to install the 3dmol extension:
\n", - " jupyter labextension install jupyterlab_3dmol

\n", - "
\n", - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "K K True\n", - "\n", - "Molecule 8: K\n", - "using rdDetermineBonds by reading xyz\n" - ] - }, - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAMgAAADICAIAAAAiOjnJAAAABmJLR0QA/wD/AP+gvaeTAAAHZUlEQVR4nO3cW0hU6x+H8VdzdgqeIsu0QtQO1IVgJoWYYRSERJpZeFFYEETZgagggk4E3XRhdBMUkWYU5SRlqVDQARIjwbBAoyzCQjDLaEy0LGdfrJjc/qGttb//xaz1fK7W753F8BOenMEZCvH7/Qb4r4XavQCcibAgQViQICxIEBYkCAsShAUJwoIEYUGCsCBBWJAgLEgQFiQICxKEBQnCggRhQYKwIEFYkCAsSBAWJAgLEoQFCcKCBGFBgrAgQViQICxIEBYkCAsShAUJwoIEYUEizO4F/h86OzsrKyut63nz5i1btuzX93u93pcvXwbGRYsWZWVlWddlZWUDAwPGmKioqG3bto1ygdra2idPnljXJSUliYmJY9o/KPldoLGxMfDzlpaW/vpmr9cbGvrzF3l6enpvb2/g0ejoaOs8ISFh9Ats2LAh8ISNjY2/+WMEFV4K/6G5ubmkpGRoaMgap06dWlNTExkZae9WwYiwfurs7MzPz+/r67PG6Ojourq6adOm2btVkCKsHz5//pyXl/f27Vtr9Hg8Xq83LS3N3q2CF2EZY8zQ0NC6detaWloCJ6dPn/7X9/j4BcIyxpg9e/Zcv349MB48eHD42238BsIyZ8+eLSsrC4zFxcWHDx+2bx2HcHtY9+/f37p1a2DMyckpLy8PCQmxcSVncHVYz549W7Vq1devX61xzpw5165dGz9+vL1bOYN7w/rw4cPKlSs/fvxojZMmTbpx48aECRPs3coxXBrW4ODgmjVrXrx4YY0RERE1NTWpqan2buUkrvis8H+VlpbevXvXug4NDb148eLChQvH9Ax9fX0nT54c5c1tbW1j2y/4uTEsr9d75syZwLh8+fKCgoKxPonP59u5c+d/upejuPGlMD8/Pzs7OzDW1dVVVFTYuI8jufE3lsfjqaqqysjI6OzstE62bNmSlpaWnp4+pifJzMwc5c3t7e3v3r0b86LBzI1hGWOmTJlSVVWVm5tr/a2hv79/7dq1TU1NsbGxo3yGuLi4hoaGUd68cePG8vLy31s1SLnxpdCSlZV1/PjxwNje3r5+/frAF2bwh9wbljFmx44dwz8TvHnz5rFjx+xbx1FcHZYx5tSpUxkZGYHx0KFD9fX1Nu7jGG4PKzw8/OrVq3FxcdZofX/m1atX9m7lAG4PyxiTlJR06dKlcePGWWNPT09hYWF/f7+9WwU7wjLGmKVLlx45ciQwtrS0bN682cZ9HICwfti/f39RUVFgrKysHP7XeYwVYf0QEhJy7ty5uXPnBk62b9/e1NRk40pBjbB+ioyMrK6ujomJscYvX76sXr26u7vb3q2CFGH9w+zZsysqKgLfIH3z5k1xcfH379/t3SoYEdZI+fn5+/btC4x37tw5cOCAjfsEKVd8VhgeHp6SkmJdT5w48V/vP3r06PPnzx8/fmyNV65cWbFihfXfN8ycObO3t9cYEx8fP/oFEhISZs2aZV1HRESMafkgFeL3++3eAQ7ESyEkCAsShAUJwoIEYUGCsCBBWJAgLEgQFiQICxKEBQnCggRhQYKwIEFYkCAsSBAWJAgLEoQFCcKCBGFBgrAgQViQICxIEBYkCAsShAUJwoIEYUGCsCBBWJAgLEgQFiQICxKEBQnCggRhQYKwIEFYkCAsSBAWJAgLEoQFCcKCBGFBgrAgQViQICxIEBYkCAsShAUJwoIEYUGCsCBBWJAgLEgQFiQICxKEBQnCggRhQYKwIEFYkCAsSBAWJAgLEoQFCcKCBGFBgrAgQViQICxIEBYkCAsShAUJwoIEYUGCsCBBWJAgLEgQFiQICxKEBQnCggRhQYKwIEFYkHB1WD6fb+/evcnJyR6PJy4urqCgoLm52e6lHCLE7/fbvYM9fD5fdnb206dPU1JSFi9e/Pr163v37nk8nvr6+iVLlti9XfDzu9Xu3buNMXl5eQMDA9ZJeXm5MSYpKSlwgt/m0rAGBgZiYmLCwsI6OjqGn+fm5hpjqqur7VrMMVz6HuvRo0efPn2aP3/+9OnTh58XFhYaY27fvm3TXs7h0rDa2tqMMampqSPOrZPW1lYbdnIWl4bV09NjjImPjx9xPnny5MCj+BMuDevbt2/GmL/++mvEeXh4uDFmcHDQhp2cxaVhRUZGGmPev38/4ry7u9sYExUVZcNOzuLSsJKTk40xXV1dI86tE+tR/AmXhpWZmRkSEvLw4UPrNTHgwYMHxpgFCxbYtJdzuDSsxMTEnJyc7u7u8+fPBw67urouXLjg8XiKiops3M0h7P5Dmm0aGhrCwsIiIiJOnDjR2tpaW1ublpZmjNm1a5fdqzmBe8Py+/2XL1+OiYkZ/s9s06ZNg4ODdu/lBO79ENri8/lu3brV0dERGxubk5MzY8YMuzdyCLeHBRGXvnmHGmFBgrAgQViQICxIEBYkCAsShAUJwoIEYUGCsCBBWJAgLEgQFiQICxKEBQnCggRhQYKwIEFYkCAsSBAWJAgLEoQFCcKCBGFBgrAgQViQICxIEBYkCAsShAUJwoLE3860sg3xmqrcAAAATnpUWHRyZGtpdFBLTCByZGtpdCAyMDIzLjA5LjYAAHice79v7T0GIOBnQABGKN3AKMzgARbgFgFR4mJQSbACxoVL4h1/V/o5PH54y0EMAEbtC1A8BmPOAAAAknpUWHRNT0wgcmRraXQgMjAyMy4wOS42AAB4nONSAIEgF+/MEgU4MHbh4lJQMMCDLC0tFcKMDQwMuHwVQAwFJ1d3Tz8F5xBHJ5iIs3+oX0iwgiFQPRiiqnQM8feFiRgqeCsYGutZmpubWRorGOsZGZkZWpoqmOlZmBgYmJsANYc5+tgawpS7+rmgaAfxYRYD2VwARE4pWMewLlgAAABSelRYdFNNSUxFUyByZGtpdCAyMDIzLjA5LjYAAHici/b2iFWo0TA01rM0NzfXMdYzMjIz0jHTszAxMDDX1Eksyc8NKMovsDLQAzH98ktS9QxqAGlGDszhJhzBAAAAAElFTkSuQmCC", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/3dmoljs_load.v0": "
\n

You appear to be running in JupyterLab (or JavaScript failed to load for some other reason). You need to install the 3dmol extension:
\n jupyter labextension install jupyterlab_3dmol

\n
\n", - "text/html": [ - "
\n", - "

You appear to be running in JupyterLab (or JavaScript failed to load for some other reason). You need to install the 3dmol extension:
\n", - " jupyter labextension install jupyterlab_3dmol

\n", - "
\n", - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "K K True\n", - "\n", - "Molecule 9: K\n", - "using rdDetermineBonds by reading xyz\n" - ] - }, - { - "data": { - "image/png": "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", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/3dmoljs_load.v0": "
\n

You appear to be running in JupyterLab (or JavaScript failed to load for some other reason). You need to install the 3dmol extension:
\n jupyter labextension install jupyterlab_3dmol

\n
\n", - "text/html": [ - "
\n", - "

You appear to be running in JupyterLab (or JavaScript failed to load for some other reason). You need to install the 3dmol extension:
\n", - " jupyter labextension install jupyterlab_3dmol

\n", - "
\n", - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "K K True\n", - "\n" - ] - } - ], - "source": [ - "from cell2mol.connectivity import compare_species, compare_metals\n", - "from cell2mol.charge_assignment import check_rdkit_obj_connectivity, arrange_data_for_reorder\n", - "\n", - "fdir = f\"{folder}/{name}\"\n", - "\n", - "for idx, ref in enumerate(refcell.refmoleclist):\n", - " print(f\"Molecule {idx}: {ref.formula}\")\n", - " if ref.iscomplex:\n", - " for jdx, lig in enumerate(ref.ligands):\n", - " for specie in refcell.unique_species:\n", - " if specie.subtype == \"ligand\":\n", - " issame = compare_species(lig, specie)\n", - " if issame:\n", - " # set_charge_state(specie, lig)\n", - " # print(lig.formula, specie.formula, issame)\n", - " print(\"using rdDetermineBonds by reading xyz\")\n", - " fname = f\"Ref_Molecule_{idx}_{lig.formula}_{jdx}.xyz\"\n", - " using_rdDetermineBonds(specie, lig, fdir, fname)\n", - " \n", - " \n", - " for met in ref.metals:\n", - " for specie in refcell.unique_species:\n", - " if specie.subtype == \"metal\":\n", - " issame = compare_metals(met, specie)\n", - " if issame:\n", - " met.set_charge(specie.charge)\n", - " # print(met.formula, specie.formula, issame) \n", - " else:\n", - " for specie in refcell.unique_species: \n", - " if specie.subtype == \"molecule\":\n", - " issame = compare_species(ref, specie)\n", - " if issame:\n", - " # set_charge_state(specie, ref)\n", - " print(\"using rdDetermineBonds by reading xyz\")\n", - " fname = f\"Ref_Molecule_{idx}_{ref.formula}.xyz\"\n", - " using_rdDetermineBonds(specie, ref, fdir, fname)\n", - " #print(ref.formula, specie.formula, issame)\n", - " print(\"\")" - ] - }, - { - "cell_type": "code", - "execution_count": 31, - "id": "bf45f338-25da-4887-8b34-62b309017e12", - "metadata": {}, - "outputs": [], - "source": [ - "def prepare_mol (mol):\n", - " tmp_atcharge = np.zeros((mol.natoms))\n", - " tmp_smiles = []\n", - " \n", - " for lig in mol.ligands: \n", - " tmp_smiles.append(lig.smiles)\n", - " parent_indices = lig.get_parent_indices(\"molecule\")\n", - " for kdx, a in enumerate(parent_indices):\n", - " tmp_atcharge[a] = lig.atomic_charges[kdx]\n", - " \n", - " for met in mol.metals: \n", - " parent_index = met.get_parent_index(\"molecule\")\n", - " tmp_atcharge[parent_index] = met.charge \n", - " mol.set_charges(int(sum(tmp_atcharge)), atomic_charges=tmp_atcharge, smiles=tmp_smiles)" - ] - }, - { - "cell_type": "code", - "execution_count": 34, - "id": "5bf637d1-0089-48f0-8551-09174532a2e7", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "CELL.CREATE_BONDS: Creating Bonds for molecule C6-O12-Fe\n", - "CREATE_bonds_specie: specie.formula='C2-O4', specie.subtype='ligand'\n", - "\tNumber of atoms in ligand object and RDKit object are equal: 6 6\n", - "\tidx=0 O Number of bonds : 1\n", - "\tBOND CREATED 0 0 4 2.0 O C\n", - "\tBONDS [('O', 'C', 2.0, 1.219)]\n", - "\tidx=1 O Number of bonds : 1\n", - "\tBOND CREATED 1 1 4 1.0 O C\n", - "\tBONDS [('O', 'C', 1.0, 1.28)]\n", - "\tidx=2 O Number of bonds : 1\n", - "\tBOND CREATED 2 2 5 2.0 O C\n", - "\tBONDS [('O', 'C', 2.0, 1.273)]\n", - "\tidx=3 O Number of bonds : 1\n", - "\tBOND CREATED 3 3 5 1.0 O C\n", - "\tBONDS [('O', 'C', 1.0, 1.213)]\n", - "\tidx=4 C Number of bonds : 3\n", - "\tBOND CREATED 4 4 0 2.0 C O\n", - "\tBOND CREATED 4 4 1 1.0 C O\n", - "\tBOND CREATED 4 4 5 1.0 C C\n", - "\tBONDS [('C', 'O', 2.0, 1.219), ('C', 'O', 1.0, 1.28), ('C', 'C', 1.0, 1.554)]\n", - "\tidx=5 C Number of bonds : 3\n", - "\tBOND CREATED 5 5 2 2.0 C O\n", - "\tBOND CREATED 5 5 3 1.0 C O\n", - "\tBOND CREATED 5 5 4 1.0 C C\n", - "\tBONDS [('C', 'O', 2.0, 1.273), ('C', 'O', 1.0, 1.213), ('C', 'C', 1.0, 1.554)]\n", - "CREATE_bonds_specie: specie.formula='C2-O4', specie.subtype='ligand'\n", - "\tNumber of atoms in ligand object and RDKit object are equal: 6 6\n", - "\tidx=0 O Number of bonds : 1\n", - "\tBOND CREATED 0 0 4 2.0 O C\n", - "\tBONDS [('O', 'C', 2.0, 1.219)]\n", - "\tidx=1 O Number of bonds : 1\n", - "\tBOND CREATED 1 1 4 1.0 O C\n", - "\tBONDS [('O', 'C', 1.0, 1.28)]\n", - "\tidx=2 O Number of bonds : 1\n", - "\tBOND CREATED 2 2 5 2.0 O C\n", - "\tBONDS [('O', 'C', 2.0, 1.273)]\n", - "\tidx=3 O Number of bonds : 1\n", - "\tBOND CREATED 3 3 5 1.0 O C\n", - "\tBONDS [('O', 'C', 1.0, 1.213)]\n", - "\tidx=4 C Number of bonds : 3\n", - "\tBOND CREATED 4 4 0 2.0 C O\n", - "\tBOND CREATED 4 4 1 1.0 C O\n", - "\tBOND CREATED 4 4 5 1.0 C C\n", - "\tBONDS [('C', 'O', 2.0, 1.219), ('C', 'O', 1.0, 1.28), ('C', 'C', 1.0, 1.554)]\n", - "\tidx=5 C Number of bonds : 3\n", - "\tBOND CREATED 5 5 2 2.0 C O\n", - "\tBOND CREATED 5 5 3 1.0 C O\n", - "\tBOND CREATED 5 5 4 1.0 C C\n", - "\tBONDS [('C', 'O', 2.0, 1.273), ('C', 'O', 1.0, 1.213), ('C', 'C', 1.0, 1.554)]\n", - "CREATE_bonds_specie: specie.formula='C2-O4', specie.subtype='ligand'\n", - "\tNumber of atoms in ligand object and RDKit object are equal: 6 6\n", - "\tidx=0 O Number of bonds : 1\n", - "\tBOND CREATED 0 0 4 2.0 O C\n", - "\tBONDS [('O', 'C', 2.0, 1.219)]\n", - "\tidx=1 O Number of bonds : 1\n", - "\tBOND CREATED 1 1 4 1.0 O C\n", - "\tBONDS [('O', 'C', 1.0, 1.28)]\n", - "\tidx=2 O Number of bonds : 1\n", - "\tBOND CREATED 2 2 5 2.0 O C\n", - "\tBONDS [('O', 'C', 2.0, 1.273)]\n", - "\tidx=3 O Number of bonds : 1\n", - "\tBOND CREATED 3 3 5 1.0 O C\n", - "\tBONDS [('O', 'C', 1.0, 1.213)]\n", - "\tidx=4 C Number of bonds : 3\n", - "\tBOND CREATED 4 4 0 2.0 C O\n", - "\tBOND CREATED 4 4 1 1.0 C O\n", - "\tBOND CREATED 4 4 5 1.0 C C\n", - "\tBONDS [('C', 'O', 2.0, 1.219), ('C', 'O', 1.0, 1.28), ('C', 'C', 1.0, 1.554)]\n", - "\tidx=5 C Number of bonds : 3\n", - "\tBOND CREATED 5 5 2 2.0 C O\n", - "\tBOND CREATED 5 5 3 1.0 C O\n", - "\tBOND CREATED 5 5 4 1.0 C C\n", - "\tBONDS [('C', 'O', 2.0, 1.273), ('C', 'O', 1.0, 1.213), ('C', 'C', 1.0, 1.554)]\n", - "ligand.formula='C2-O4' smiles='O=C([O-])C(=O)[O-]'\n" - ] - }, - { - "data": { - "image/png": "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", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "ligand.formula='C2-O4' smiles='O=C([O-])C(=O)[O-]'\n" - ] - }, - { - "data": { - "image/png": "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", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "ligand.formula='C2-O4' smiles='O=C([O-])C(=O)[O-]'\n" - ] - }, - { - "data": { - "image/png": "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", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "CELL.CREATE_BONDS: Creating Bonds for molecule H24-C12-O6\n", - "CREATE_bonds_specie: specie.formula='H24-C12-O6', specie.subtype='molecule'\n", - "\tNumber of atoms in molecule object and RDKit object are equal: 42 42\n", - "\tidx=0 O Number of bonds : 2\n", - "\tBOND CREATED 0 0 6 1.0 O C\n", - "\tBOND CREATED 0 0 39 1.0 O C\n", - "\tBONDS [('O', 'C', 1.0, 1.417), ('O', 'C', 1.0, 1.423)]\n", - "\tidx=1 O Number of bonds : 2\n", - "\tBOND CREATED 1 1 9 1.0 O C\n", - "\tBOND CREATED 1 1 12 1.0 O C\n", - "\tBONDS [('O', 'C', 1.0, 1.423), ('O', 'C', 1.0, 1.419)]\n", - "\tidx=2 O Number of bonds : 2\n", - "\tBOND CREATED 2 2 15 1.0 O C\n", - "\tBOND CREATED 2 2 18 1.0 O C\n", - "\tBONDS [('O', 'C', 1.0, 1.411), ('O', 'C', 1.0, 1.415)]\n", - "\tidx=3 O Number of bonds : 2\n", - "\tBOND CREATED 3 3 21 1.0 O C\n", - "\tBOND CREATED 3 3 24 1.0 O C\n", - "\tBONDS [('O', 'C', 1.0, 1.423), ('O', 'C', 1.0, 1.416)]\n", - "\tidx=4 O Number of bonds : 2\n", - "\tBOND CREATED 4 4 27 1.0 O C\n", - "\tBOND CREATED 4 4 30 1.0 O C\n", - "\tBONDS [('O', 'C', 1.0, 1.4), ('O', 'C', 1.0, 1.409)]\n", - "\tidx=5 O Number of bonds : 2\n", - "\tBOND CREATED 5 5 33 1.0 O C\n", - "\tBOND CREATED 5 5 36 1.0 O C\n", - "\tBONDS [('O', 'C', 1.0, 1.436), ('O', 'C', 1.0, 1.412)]\n", - "\tidx=6 C Number of bonds : 4\n", - "\tBOND CREATED 6 6 0 1.0 C O\n", - "\tBOND CREATED 6 6 7 1.0 C H\n", - "\tBOND CREATED 6 6 8 1.0 C H\n", - "\tBOND CREATED 6 6 9 1.0 C C\n", - "\tBONDS [('C', 'O', 1.0, 1.417), ('C', 'H', 1.0, 0.97), ('C', 'H', 1.0, 0.971), ('C', 'C', 1.0, 1.479)]\n", - "\tidx=7 H Number of bonds : 1\n", - "\tBOND CREATED 7 7 6 1.0 H C\n", - "\tBONDS [('H', 'C', 1.0, 0.97)]\n", - "\tidx=8 H Number of bonds : 1\n", - "\tBOND CREATED 8 8 6 1.0 H C\n", - "\tBONDS [('H', 'C', 1.0, 0.971)]\n", - "\tidx=9 C Number of bonds : 4\n", - "\tBOND CREATED 9 9 1 1.0 C O\n", - "\tBOND CREATED 9 9 6 1.0 C C\n", - "\tBOND CREATED 9 9 10 1.0 C H\n", - "\tBOND CREATED 9 9 11 1.0 C H\n", - "\tBONDS [('C', 'O', 1.0, 1.423), ('C', 'C', 1.0, 1.479), ('C', 'H', 1.0, 0.97), ('C', 'H', 1.0, 0.97)]\n", - "\tidx=10 H Number of bonds : 1\n", - "\tBOND CREATED 10 10 9 1.0 H C\n", - "\tBONDS [('H', 'C', 1.0, 0.97)]\n", - "\tidx=11 H Number of bonds : 1\n", - "\tBOND CREATED 11 11 9 1.0 H C\n", - "\tBONDS [('H', 'C', 1.0, 0.97)]\n", - "\tidx=12 C Number of bonds : 4\n", - "\tBOND CREATED 12 12 1 1.0 C O\n", - "\tBOND CREATED 12 12 13 1.0 C H\n", - "\tBOND CREATED 12 12 14 1.0 C H\n", - "\tBOND CREATED 12 12 15 1.0 C C\n", - "\tBONDS [('C', 'O', 1.0, 1.419), ('C', 'H', 1.0, 0.971), ('C', 'H', 1.0, 0.97), ('C', 'C', 1.0, 1.482)]\n", - "\tidx=13 H Number of bonds : 1\n", - "\tBOND CREATED 13 13 12 1.0 H C\n", - "\tBONDS [('H', 'C', 1.0, 0.971)]\n", - "\tidx=14 H Number of bonds : 1\n", - "\tBOND CREATED 14 14 12 1.0 H C\n", - "\tBONDS [('H', 'C', 1.0, 0.97)]\n", - "\tidx=15 C Number of bonds : 4\n", - "\tBOND CREATED 15 15 2 1.0 C O\n", - "\tBOND CREATED 15 15 12 1.0 C C\n", - "\tBOND CREATED 15 15 16 1.0 C H\n", - "\tBOND CREATED 15 15 17 1.0 C H\n", - "\tBONDS [('C', 'O', 1.0, 1.411), ('C', 'C', 1.0, 1.482), ('C', 'H', 1.0, 0.97), ('C', 'H', 1.0, 0.971)]\n", - "\tidx=16 H Number of bonds : 1\n", - "\tBOND CREATED 16 16 15 1.0 H C\n", - "\tBONDS [('H', 'C', 1.0, 0.97)]\n", - "\tidx=17 H Number of bonds : 1\n", - "\tBOND CREATED 17 17 15 1.0 H C\n", - "\tBONDS [('H', 'C', 1.0, 0.971)]\n", - "\tidx=18 C Number of bonds : 4\n", - "\tBOND CREATED 18 18 2 1.0 C O\n", - "\tBOND CREATED 18 18 19 1.0 C H\n", - "\tBOND CREATED 18 18 20 1.0 C H\n", - "\tBOND CREATED 18 18 21 1.0 C C\n", - "\tBONDS [('C', 'O', 1.0, 1.415), ('C', 'H', 1.0, 0.971), ('C', 'H', 1.0, 0.971), ('C', 'C', 1.0, 1.476)]\n", - "\tidx=19 H Number of bonds : 1\n", - "\tBOND CREATED 19 19 18 1.0 H C\n", - "\tBONDS [('H', 'C', 1.0, 0.971)]\n", - "\tidx=20 H Number of bonds : 1\n", - "\tBOND CREATED 20 20 18 1.0 H C\n", - "\tBONDS [('H', 'C', 1.0, 0.971)]\n", - "\tidx=21 C Number of bonds : 4\n", - "\tBOND CREATED 21 21 3 1.0 C O\n", - "\tBOND CREATED 21 21 18 1.0 C C\n", - "\tBOND CREATED 21 21 22 1.0 C H\n", - "\tBOND CREATED 21 21 23 1.0 C H\n", - "\tBONDS [('C', 'O', 1.0, 1.423), ('C', 'C', 1.0, 1.476), ('C', 'H', 1.0, 0.97), ('C', 'H', 1.0, 0.969)]\n", - "\tidx=22 H Number of bonds : 1\n", - "\tBOND CREATED 22 22 21 1.0 H C\n", - "\tBONDS [('H', 'C', 1.0, 0.97)]\n", - "\tidx=23 H Number of bonds : 1\n", - "\tBOND CREATED 23 23 21 1.0 H C\n", - "\tBONDS [('H', 'C', 1.0, 0.969)]\n", - "\tidx=24 C Number of bonds : 4\n", - "\tBOND CREATED 24 24 3 1.0 C O\n", - "\tBOND CREATED 24 24 25 1.0 C H\n", - "\tBOND CREATED 24 24 26 1.0 C H\n", - "\tBOND CREATED 24 24 27 1.0 C C\n", - "\tBONDS [('C', 'O', 1.0, 1.416), ('C', 'H', 1.0, 0.969), ('C', 'H', 1.0, 0.971), ('C', 'C', 1.0, 1.488)]\n", - "\tidx=25 H Number of bonds : 1\n", - "\tBOND CREATED 25 25 24 1.0 H C\n", - "\tBONDS [('H', 'C', 1.0, 0.969)]\n", - "\tidx=26 H Number of bonds : 1\n", - "\tBOND CREATED 26 26 24 1.0 H C\n", - "\tBONDS [('H', 'C', 1.0, 0.971)]\n", - "\tidx=27 C Number of bonds : 4\n", - "\tBOND CREATED 27 27 4 1.0 C O\n", - "\tBOND CREATED 27 27 24 1.0 C C\n", - "\tBOND CREATED 27 27 28 1.0 C H\n", - "\tBOND CREATED 27 27 29 1.0 C H\n", - "\tBONDS [('C', 'O', 1.0, 1.4), ('C', 'C', 1.0, 1.488), ('C', 'H', 1.0, 0.971), ('C', 'H', 1.0, 0.97)]\n", - "\tidx=28 H Number of bonds : 1\n", - "\tBOND CREATED 28 28 27 1.0 H C\n", - "\tBONDS [('H', 'C', 1.0, 0.971)]\n", - "\tidx=29 H Number of bonds : 1\n", - "\tBOND CREATED 29 29 27 1.0 H C\n", - "\tBONDS [('H', 'C', 1.0, 0.97)]\n", - "\tidx=30 C Number of bonds : 4\n", - "\tBOND CREATED 30 30 4 1.0 C O\n", - "\tBOND CREATED 30 30 31 1.0 C H\n", - "\tBOND CREATED 30 30 32 1.0 C H\n", - "\tBOND CREATED 30 30 33 1.0 C C\n", - "\tBONDS [('C', 'O', 1.0, 1.409), ('C', 'H', 1.0, 0.97), ('C', 'H', 1.0, 0.969), ('C', 'C', 1.0, 1.466)]\n", - "\tidx=31 H Number of bonds : 1\n", - "\tBOND CREATED 31 31 30 1.0 H C\n", - "\tBONDS [('H', 'C', 1.0, 0.97)]\n", - "\tidx=32 H Number of bonds : 1\n", - "\tBOND CREATED 32 32 30 1.0 H C\n", - "\tBONDS [('H', 'C', 1.0, 0.969)]\n", - "\tidx=33 C Number of bonds : 4\n", - "\tBOND CREATED 33 33 5 1.0 C O\n", - "\tBOND CREATED 33 33 30 1.0 C C\n", - "\tBOND CREATED 33 33 34 1.0 C H\n", - "\tBOND CREATED 33 33 35 1.0 C H\n", - "\tBONDS [('C', 'O', 1.0, 1.436), ('C', 'C', 1.0, 1.466), ('C', 'H', 1.0, 0.969), ('C', 'H', 1.0, 0.971)]\n", - "\tidx=34 H Number of bonds : 1\n", - "\tBOND CREATED 34 34 33 1.0 H C\n", - "\tBONDS [('H', 'C', 1.0, 0.969)]\n", - "\tidx=35 H Number of bonds : 1\n", - "\tBOND CREATED 35 35 33 1.0 H C\n", - "\tBONDS [('H', 'C', 1.0, 0.971)]\n", - "\tidx=36 C Number of bonds : 4\n", - "\tBOND CREATED 36 36 5 1.0 C O\n", - "\tBOND CREATED 36 36 37 1.0 C H\n", - "\tBOND CREATED 36 36 38 1.0 C H\n", - "\tBOND CREATED 36 36 39 1.0 C C\n", - "\tBONDS [('C', 'O', 1.0, 1.412), ('C', 'H', 1.0, 0.97), ('C', 'H', 1.0, 0.971), ('C', 'C', 1.0, 1.483)]\n", - "\tidx=37 H Number of bonds : 1\n", - "\tBOND CREATED 37 37 36 1.0 H C\n", - "\tBONDS [('H', 'C', 1.0, 0.97)]\n", - "\tidx=38 H Number of bonds : 1\n", - "\tBOND CREATED 38 38 36 1.0 H C\n", - "\tBONDS [('H', 'C', 1.0, 0.971)]\n", - "\tidx=39 C Number of bonds : 4\n", - "\tBOND CREATED 39 39 0 1.0 C O\n", - "\tBOND CREATED 39 39 36 1.0 C C\n", - "\tBOND CREATED 39 39 40 1.0 C H\n", - "\tBOND CREATED 39 39 41 1.0 C H\n", - "\tBONDS [('C', 'O', 1.0, 1.423), ('C', 'C', 1.0, 1.483), ('C', 'H', 1.0, 0.971), ('C', 'H', 1.0, 0.97)]\n", - "\tidx=40 H Number of bonds : 1\n", - "\tBOND CREATED 40 40 39 1.0 H C\n", - "\tBONDS [('H', 'C', 1.0, 0.971)]\n", - "\tidx=41 H Number of bonds : 1\n", - "\tBOND CREATED 41 41 39 1.0 H C\n", - "\tBONDS [('H', 'C', 1.0, 0.97)]\n", - "CELL.CREATE_BONDS: Creating Bonds for molecule H2-O\n", - "CREATE_bonds_specie: specie.formula='H2-O', specie.subtype='molecule'\n", - "\tNumber of atoms in molecule object and RDKit object are equal: 3 3\n", - "\tidx=0 O Number of bonds : 2\n", - "\tBOND CREATED 0 0 1 1.0 O H\n", - "\tBOND CREATED 0 0 2 1.0 O H\n", - "\tBONDS [('O', 'H', 1.0, 0.867), ('O', 'H', 1.0, 0.859)]\n", - "\tidx=1 H Number of bonds : 1\n", - "\tBOND CREATED 1 1 0 1.0 H O\n", - "\tBONDS [('H', 'O', 1.0, 0.867)]\n", - "\tidx=2 H Number of bonds : 1\n", - "\tBOND CREATED 2 2 0 1.0 H O\n", - "\tBONDS [('H', 'O', 1.0, 0.859)]\n", - "CELL.CREATE_BONDS: Creating Bonds for molecule H2-O\n", - "CREATE_bonds_specie: specie.formula='H2-O', specie.subtype='molecule'\n", - "\tNumber of atoms in molecule object and RDKit object are equal: 3 3\n", - "\tidx=0 O Number of bonds : 2\n", - "\tBOND CREATED 0 0 1 1.0 O H\n", - "\tBOND CREATED 0 0 2 1.0 O H\n", - "\tBONDS [('O', 'H', 1.0, 0.885), ('O', 'H', 1.0, 0.882)]\n", - "\tidx=1 H Number of bonds : 1\n", - "\tBOND CREATED 1 1 0 1.0 H O\n", - "\tBONDS [('H', 'O', 1.0, 0.885)]\n", - "\tidx=2 H Number of bonds : 1\n", - "\tBOND CREATED 2 2 0 1.0 H O\n", - "\tBONDS [('H', 'O', 1.0, 0.882)]\n", - "CELL.CREATE_BONDS: Creating Bonds for molecule H2-O\n", - "CREATE_bonds_specie: specie.formula='H2-O', specie.subtype='molecule'\n", - "\tNumber of atoms in molecule object and RDKit object are equal: 3 3\n", - "\tidx=0 O Number of bonds : 2\n", - "\tBOND CREATED 0 0 1 1.0 O H\n", - "\tBOND CREATED 0 0 2 1.0 O H\n", - "\tBONDS [('O', 'H', 1.0, 0.894), ('O', 'H', 1.0, 0.888)]\n", - "\tidx=1 H Number of bonds : 1\n", - "\tBOND CREATED 1 1 0 1.0 H O\n", - "\tBONDS [('H', 'O', 1.0, 0.894)]\n", - "\tidx=2 H Number of bonds : 1\n", - "\tBOND CREATED 2 2 0 1.0 H O\n", - "\tBONDS [('H', 'O', 1.0, 0.888)]\n", - "CELL.CREATE_BONDS: Creating Bonds for molecule H24-C12-O6\n", - "CREATE_bonds_specie: specie.formula='H24-C12-O6', specie.subtype='molecule'\n", - "\tNumber of atoms in molecule object and RDKit object are equal: 42 42\n", - "\tidx=0 O Number of bonds : 2\n", - "\tBOND CREATED 0 0 36 1.0 O C\n", - "\tBOND CREATED 0 0 39 1.0 O C\n", - "\tBONDS [('O', 'C', 1.0, 2.363), ('O', 'C', 1.0, 1.423)]\n", - "\tidx=1 O Number of bonds : 2\n", - "\tBOND CREATED 1 1 12 1.0 O C\n", - "\tBOND CREATED 1 1 30 1.0 O C\n", - "\tBONDS [('O', 'C', 1.0, 1.419), ('O', 'C', 1.0, 6.268)]\n", - "\tidx=2 O Number of bonds : 2\n", - "\tBOND CREATED 2 2 15 1.0 O C\n", - "\tBOND CREATED 2 2 18 1.0 O C\n", - "\tBONDS [('O', 'C', 1.0, 1.411), ('O', 'C', 1.0, 1.415)]\n", - "\tidx=3 O Number of bonds : 2\n", - "\tBOND CREATED 3 3 21 1.0 O C\n", - "\tBOND CREATED 3 3 24 1.0 O C\n", - "\tBONDS [('O', 'C', 1.0, 1.423), ('O', 'C', 1.0, 1.416)]\n", - "\tidx=4 O Number of bonds : 2\n", - "\tBOND CREATED 4 4 27 1.0 O C\n", - "\tBOND CREATED 4 4 33 1.0 O C\n", - "\tBONDS [('O', 'C', 1.0, 1.4), ('O', 'C', 1.0, 2.346)]\n", - "\tidx=5 O Number of bonds : 2\n", - "\tBOND CREATED 5 5 6 1.0 O C\n", - "\tBOND CREATED 5 5 9 1.0 O C\n", - "\tBONDS [('O', 'C', 1.0, 4.147), ('O', 'C', 1.0, 5.021)]\n", - "\tidx=6 C Number of bonds : 4\n", - "\tBOND CREATED 6 6 5 1.0 C O\n", - "\tBOND CREATED 6 6 7 1.0 C H\n", - "\tBOND CREATED 6 6 39 1.0 C C\n", - "\tBOND CREATED 6 6 40 1.0 C H\n", - "\tBONDS [('C', 'O', 1.0, 4.147), ('C', 'H', 1.0, 0.97), ('C', 'C', 1.0, 2.38), ('C', 'H', 1.0, 2.604)]\n", - "\tidx=7 H Number of bonds : 1\n", - "\tBOND CREATED 7 7 6 1.0 H C\n", - "\tBONDS [('H', 'C', 1.0, 0.97)]\n", - "\tidx=8 H Number of bonds : 1\n", - "\tBOND CREATED 8 8 9 1.0 H C\n", - "\tBONDS [('H', 'C', 1.0, 2.025)]\n", - "\tidx=9 C Number of bonds : 4\n", - "\tBOND CREATED 9 9 5 1.0 C O\n", - "\tBOND CREATED 9 9 8 1.0 C H\n", - "\tBOND CREATED 9 9 10 1.0 C H\n", - "\tBOND CREATED 9 9 30 1.0 C C\n", - "\tBONDS [('C', 'O', 1.0, 5.021), ('C', 'H', 1.0, 2.025), ('C', 'H', 1.0, 0.97), ('C', 'C', 1.0, 6.846)]\n", - "\tidx=10 H Number of bonds : 1\n", - "\tBOND CREATED 10 10 9 1.0 H C\n", - "\tBONDS [('H', 'C', 1.0, 0.97)]\n", - "\tidx=11 H Number of bonds : 1\n", - "\tBOND CREATED 11 11 33 1.0 H C\n", - "\tBONDS [('H', 'C', 1.0, 6.318)]\n", - "\tidx=12 C Number of bonds : 4\n", - "\tBOND CREATED 12 12 1 1.0 C O\n", - "\tBOND CREATED 12 12 15 1.0 C C\n", - "\tBOND CREATED 12 12 16 1.0 C H\n", - "\tBOND CREATED 12 12 28 1.0 C H\n", - "\tBONDS [('C', 'O', 1.0, 1.419), ('C', 'C', 1.0, 1.482), ('C', 'H', 1.0, 2.03), ('C', 'H', 1.0, 7.029)]\n", - "\tidx=13 H Number of bonds : 1\n", - "\tBOND CREATED 13 13 27 1.0 H C\n", - "\tBONDS [('H', 'C', 1.0, 6.997)]\n", - "\tidx=14 H Number of bonds : 1\n", - "\tBOND CREATED 14 14 30 1.0 H C\n", - "\tBONDS [('H', 'C', 1.0, 8.075)]\n", - "\tidx=15 C Number of bonds : 4\n", - "\tBOND CREATED 15 15 2 1.0 C O\n", - "\tBOND CREATED 15 15 12 1.0 C C\n", - "\tBOND CREATED 15 15 17 1.0 C H\n", - "\tBOND CREATED 15 15 20 1.0 C H\n", - "\tBONDS [('C', 'O', 1.0, 1.411), ('C', 'C', 1.0, 1.482), ('C', 'H', 1.0, 0.971), ('C', 'H', 1.0, 2.57)]\n", - "\tidx=16 H Number of bonds : 1\n", - "\tBOND CREATED 16 16 12 1.0 H C\n", - "\tBONDS [('H', 'C', 1.0, 2.03)]\n", - "\tidx=17 H Number of bonds : 1\n", - "\tBOND CREATED 17 17 15 1.0 H C\n", - "\tBONDS [('H', 'C', 1.0, 0.971)]\n", - "\tidx=18 C Number of bonds : 4\n", - "\tBOND CREATED 18 18 2 1.0 C O\n", - "\tBOND CREATED 18 18 19 1.0 C H\n", - "\tBOND CREATED 18 18 21 1.0 C C\n", - "\tBOND CREATED 18 18 22 1.0 C H\n", - "\tBONDS [('C', 'O', 1.0, 1.415), ('C', 'H', 1.0, 0.971), ('C', 'C', 1.0, 1.476), ('C', 'H', 1.0, 2.024)]\n", - "\tidx=19 H Number of bonds : 1\n", - "\tBOND CREATED 19 19 18 1.0 H C\n", - "\tBONDS [('H', 'C', 1.0, 0.971)]\n", - "\tidx=20 H Number of bonds : 1\n", - "\tBOND CREATED 20 20 15 1.0 H C\n", - "\tBONDS [('H', 'C', 1.0, 2.57)]\n", - "\tidx=21 C Number of bonds : 4\n", - "\tBOND CREATED 21 21 3 1.0 C O\n", - "\tBOND CREATED 21 21 18 1.0 C C\n", - "\tBOND CREATED 21 21 23 1.0 C H\n", - "\tBOND CREATED 21 21 26 1.0 C H\n", - "\tBONDS [('C', 'O', 1.0, 1.423), ('C', 'C', 1.0, 1.476), ('C', 'H', 1.0, 0.969), ('C', 'H', 1.0, 2.558)]\n", - "\tidx=22 H Number of bonds : 1\n", - "\tBOND CREATED 22 22 18 1.0 H C\n", - "\tBONDS [('H', 'C', 1.0, 2.024)]\n", - "\tidx=23 H Number of bonds : 1\n", - "\tBOND CREATED 23 23 21 1.0 H C\n", - "\tBONDS [('H', 'C', 1.0, 0.969)]\n", - "\tidx=24 C Number of bonds : 4\n", - "\tBOND CREATED 24 24 3 1.0 C O\n", - "\tBOND CREATED 24 24 25 1.0 C H\n", - "\tBOND CREATED 24 24 27 1.0 C C\n", - "\tBOND CREATED 24 24 29 1.0 C H\n", - "\tBONDS [('C', 'O', 1.0, 1.416), ('C', 'H', 1.0, 0.969), ('C', 'C', 1.0, 1.488), ('C', 'H', 1.0, 2.036)]\n", - "\tidx=25 H Number of bonds : 1\n", - "\tBOND CREATED 25 25 24 1.0 H C\n", - "\tBONDS [('H', 'C', 1.0, 0.969)]\n", - "\tidx=26 H Number of bonds : 1\n", - "\tBOND CREATED 26 26 21 1.0 H C\n", - "\tBONDS [('H', 'C', 1.0, 2.558)]\n", - "\tidx=27 C Number of bonds : 4\n", - "\tBOND CREATED 27 27 4 1.0 C O\n", - "\tBOND CREATED 27 27 13 1.0 C H\n", - "\tBOND CREATED 27 27 24 1.0 C C\n", - "\tBOND CREATED 27 27 31 1.0 C H\n", - "\tBONDS [('C', 'O', 1.0, 1.4), ('C', 'H', 1.0, 6.997), ('C', 'C', 1.0, 1.488), ('C', 'H', 1.0, 2.492)]\n", - "\tidx=28 H Number of bonds : 1\n", - "\tBOND CREATED 28 28 12 1.0 H C\n", - "\tBONDS [('H', 'C', 1.0, 7.029)]\n", - "\tidx=29 H Number of bonds : 1\n", - "\tBOND CREATED 29 29 24 1.0 H C\n", - "\tBONDS [('H', 'C', 1.0, 2.036)]\n", - "\tidx=30 C Number of bonds : 4\n", - "\tBOND CREATED 30 30 1 1.0 C O\n", - "\tBOND CREATED 30 30 9 1.0 C C\n", - "\tBOND CREATED 30 30 14 1.0 C H\n", - "\tBOND CREATED 30 30 32 1.0 C H\n", - "\tBONDS [('C', 'O', 1.0, 6.268), ('C', 'C', 1.0, 6.846), ('C', 'H', 1.0, 8.075), ('C', 'H', 1.0, 0.969)]\n", - "\tidx=31 H Number of bonds : 1\n", - "\tBOND CREATED 31 31 27 1.0 H C\n", - "\tBONDS [('H', 'C', 1.0, 2.492)]\n", - "\tidx=32 H Number of bonds : 1\n", - "\tBOND CREATED 32 32 30 1.0 H C\n", - "\tBONDS [('H', 'C', 1.0, 0.969)]\n", - "\tidx=33 C Number of bonds : 4\n", - "\tBOND CREATED 33 33 4 1.0 C O\n", - "\tBOND CREATED 33 33 11 1.0 C H\n", - "\tBOND CREATED 33 33 35 1.0 C H\n", - "\tBOND CREATED 33 33 36 1.0 C C\n", - "\tBONDS [('C', 'O', 1.0, 2.346), ('C', 'H', 1.0, 6.318), ('C', 'H', 1.0, 0.971), ('C', 'C', 1.0, 2.37)]\n", - "\tidx=34 H Number of bonds : 1\n", - "\tBOND CREATED 34 34 36 1.0 H C\n", - "\tBONDS [('H', 'C', 1.0, 2.611)]\n", - "\tidx=35 H Number of bonds : 1\n", - "\tBOND CREATED 35 35 33 1.0 H C\n", - "\tBONDS [('H', 'C', 1.0, 0.971)]\n", - "\tidx=36 C Number of bonds : 4\n", - "\tBOND CREATED 36 36 0 1.0 C O\n", - "\tBOND CREATED 36 36 33 1.0 C C\n", - "\tBOND CREATED 36 36 34 1.0 C H\n", - "\tBOND CREATED 36 36 37 1.0 C H\n", - "\tBONDS [('C', 'O', 1.0, 2.363), ('C', 'C', 1.0, 2.37), ('C', 'H', 1.0, 2.611), ('C', 'H', 1.0, 0.97)]\n", - "\tidx=37 H Number of bonds : 1\n", - "\tBOND CREATED 37 37 36 1.0 H C\n", - "\tBONDS [('H', 'C', 1.0, 0.97)]\n", - "\tidx=38 H Number of bonds : 1\n", - "\tBOND CREATED 38 38 39 1.0 H C\n", - "\tBONDS [('H', 'C', 1.0, 2.029)]\n", - "\tidx=39 C Number of bonds : 4\n", - "\tBOND CREATED 39 39 0 1.0 C O\n", - "\tBOND CREATED 39 39 6 1.0 C C\n", - "\tBOND CREATED 39 39 38 1.0 C H\n", - "\tBOND CREATED 39 39 41 1.0 C H\n", - "\tBONDS [('C', 'O', 1.0, 1.423), ('C', 'C', 1.0, 2.38), ('C', 'H', 1.0, 2.029), ('C', 'H', 1.0, 0.97)]\n", - "\tidx=40 H Number of bonds : 1\n", - "\tBOND CREATED 40 40 6 1.0 H C\n", - "\tBONDS [('H', 'C', 1.0, 2.604)]\n", - "\tidx=41 H Number of bonds : 1\n", - "\tBOND CREATED 41 41 39 1.0 H C\n", - "\tBONDS [('H', 'C', 1.0, 0.97)]\n", - "CELL.CREATE_BONDS: Creating Bonds for molecule H24-C12-O6\n", - "CREATE_bonds_specie: specie.formula='H24-C12-O6', specie.subtype='molecule'\n", - "\tNumber of atoms in molecule object and RDKit object are equal: 42 42\n", - "\tidx=0 O Number of bonds : 2\n", - "\tBOND CREATED 0 0 12 1.0 O C\n", - "\tBOND CREATED 0 0 15 1.0 O C\n", - "\tBONDS [('O', 'C', 1.0, 4.109), ('O', 'C', 1.0, 4.947)]\n", - "\tidx=1 O Number of bonds : 2\n", - "\tBOND CREATED 1 1 6 1.0 O C\n", - "\tBOND CREATED 1 1 9 1.0 O C\n", - "\tBONDS [('O', 'C', 1.0, 2.355), ('O', 'C', 1.0, 1.423)]\n", - "\tidx=2 O Number of bonds : 2\n", - "\tBOND CREATED 2 2 18 1.0 O C\n", - "\tBOND CREATED 2 2 36 1.0 O C\n", - "\tBONDS [('O', 'C', 1.0, 1.415), ('O', 'C', 1.0, 6.243)]\n", - "\tidx=3 O Number of bonds : 2\n", - "\tBOND CREATED 3 3 21 1.0 O C\n", - "\tBOND CREATED 3 3 24 1.0 O C\n", - "\tBONDS [('O', 'C', 1.0, 1.423), ('O', 'C', 1.0, 1.416)]\n", - "\tidx=4 O Number of bonds : 2\n", - "\tBOND CREATED 4 4 27 1.0 O C\n", - "\tBOND CREATED 4 4 30 1.0 O C\n", - "\tBONDS [('O', 'C', 1.0, 1.4), ('O', 'C', 1.0, 1.409)]\n", - "\tidx=5 O Number of bonds : 2\n", - "\tBOND CREATED 5 5 33 1.0 O C\n", - "\tBOND CREATED 5 5 39 1.0 O C\n", - "\tBONDS [('O', 'C', 1.0, 1.436), ('O', 'C', 1.0, 2.367)]\n", - "\tidx=6 C Number of bonds : 4\n", - "\tBOND CREATED 6 6 1 1.0 C O\n", - "\tBOND CREATED 6 6 8 1.0 C H\n", - "\tBOND CREATED 6 6 39 1.0 C C\n", - "\tBOND CREATED 6 6 41 1.0 C H\n", - "\tBONDS [('C', 'O', 1.0, 2.355), ('C', 'H', 1.0, 0.971), ('C', 'C', 1.0, 2.38), ('C', 'H', 1.0, 2.584)]\n", - "\tidx=7 H Number of bonds : 1\n", - "\tBOND CREATED 7 7 9 1.0 H C\n", - "\tBONDS [('H', 'C', 1.0, 2.025)]\n", - "\tidx=8 H Number of bonds : 1\n", - "\tBOND CREATED 8 8 6 1.0 H C\n", - "\tBONDS [('H', 'C', 1.0, 0.971)]\n", - "\tidx=9 C Number of bonds : 4\n", - "\tBOND CREATED 9 9 1 1.0 C O\n", - "\tBOND CREATED 9 9 7 1.0 C H\n", - "\tBOND CREATED 9 9 10 1.0 C H\n", - "\tBOND CREATED 9 9 12 1.0 C C\n", - "\tBONDS [('C', 'O', 1.0, 1.423), ('C', 'H', 1.0, 2.025), ('C', 'H', 1.0, 0.97), ('C', 'C', 1.0, 2.358)]\n", - "\tidx=10 H Number of bonds : 1\n", - "\tBOND CREATED 10 10 9 1.0 H C\n", - "\tBONDS [('H', 'C', 1.0, 0.97)]\n", - "\tidx=11 H Number of bonds : 1\n", - "\tBOND CREATED 11 11 12 1.0 H C\n", - "\tBONDS [('H', 'C', 1.0, 2.595)]\n", - "\tidx=12 C Number of bonds : 4\n", - "\tBOND CREATED 12 12 0 1.0 C O\n", - "\tBOND CREATED 12 12 9 1.0 C C\n", - "\tBOND CREATED 12 12 11 1.0 C H\n", - "\tBOND CREATED 12 12 14 1.0 C H\n", - "\tBONDS [('C', 'O', 1.0, 4.109), ('C', 'C', 1.0, 2.358), ('C', 'H', 1.0, 2.595), ('C', 'H', 1.0, 0.97)]\n", - "\tidx=13 H Number of bonds : 1\n", - "\tBOND CREATED 13 13 15 1.0 H C\n", - "\tBONDS [('H', 'C', 1.0, 2.029)]\n", - "\tidx=14 H Number of bonds : 1\n", - "\tBOND CREATED 14 14 12 1.0 H C\n", - "\tBONDS [('H', 'C', 1.0, 0.97)]\n", - "\tidx=15 C Number of bonds : 4\n", - "\tBOND CREATED 15 15 0 1.0 C O\n", - "\tBOND CREATED 15 15 13 1.0 C H\n", - "\tBOND CREATED 15 15 17 1.0 C H\n", - "\tBOND CREATED 15 15 36 1.0 C C\n", - "\tBONDS [('C', 'O', 1.0, 4.947), ('C', 'H', 1.0, 2.029), ('C', 'H', 1.0, 0.971), ('C', 'C', 1.0, 6.783)]\n", - "\tidx=16 H Number of bonds : 1\n", - "\tBOND CREATED 16 16 39 1.0 H C\n", - "\tBONDS [('H', 'C', 1.0, 6.24)]\n", - "\tidx=17 H Number of bonds : 1\n", - "\tBOND CREATED 17 17 15 1.0 H C\n", - "\tBONDS [('H', 'C', 1.0, 0.971)]\n", - "\tidx=18 C Number of bonds : 4\n", - "\tBOND CREATED 18 18 2 1.0 C O\n", - "\tBOND CREATED 18 18 21 1.0 C C\n", - "\tBOND CREATED 18 18 23 1.0 C H\n", - "\tBOND CREATED 18 18 35 1.0 C H\n", - "\tBONDS [('C', 'O', 1.0, 1.415), ('C', 'C', 1.0, 1.476), ('C', 'H', 1.0, 2.023), ('C', 'H', 1.0, 6.83)]\n", - "\tidx=19 H Number of bonds : 1\n", - "\tBOND CREATED 19 19 36 1.0 H C\n", - "\tBONDS [('H', 'C', 1.0, 8.042)]\n", - "\tidx=20 H Number of bonds : 1\n", - "\tBOND CREATED 20 20 33 1.0 H C\n", - "\tBONDS [('H', 'C', 1.0, 6.858)]\n", - "\tidx=21 C Number of bonds : 4\n", - "\tBOND CREATED 21 21 3 1.0 C O\n", - "\tBOND CREATED 21 21 18 1.0 C C\n", - "\tBOND CREATED 21 21 22 1.0 C H\n", - "\tBOND CREATED 21 21 25 1.0 C H\n", - "\tBONDS [('C', 'O', 1.0, 1.423), ('C', 'C', 1.0, 1.476), ('C', 'H', 1.0, 0.97), ('C', 'H', 1.0, 2.568)]\n", - "\tidx=22 H Number of bonds : 1\n", - "\tBOND CREATED 22 22 21 1.0 H C\n", - "\tBONDS [('H', 'C', 1.0, 0.97)]\n", - "\tidx=23 H Number of bonds : 1\n", - "\tBOND CREATED 23 23 18 1.0 H C\n", - "\tBONDS [('H', 'C', 1.0, 2.023)]\n", - "\tidx=24 C Number of bonds : 4\n", - "\tBOND CREATED 24 24 3 1.0 C O\n", - "\tBOND CREATED 24 24 26 1.0 C H\n", - "\tBOND CREATED 24 24 27 1.0 C C\n", - "\tBOND CREATED 24 24 29 1.0 C H\n", - "\tBONDS [('C', 'O', 1.0, 1.416), ('C', 'H', 1.0, 0.971), ('C', 'C', 1.0, 1.488), ('C', 'H', 1.0, 2.036)]\n", - "\tidx=25 H Number of bonds : 1\n", - "\tBOND CREATED 25 25 21 1.0 H C\n", - "\tBONDS [('H', 'C', 1.0, 2.568)]\n", - "\tidx=26 H Number of bonds : 1\n", - "\tBOND CREATED 26 26 24 1.0 H C\n", - "\tBONDS [('H', 'C', 1.0, 0.971)]\n", - "\tidx=27 C Number of bonds : 4\n", - "\tBOND CREATED 27 27 4 1.0 C O\n", - "\tBOND CREATED 27 27 24 1.0 C C\n", - "\tBOND CREATED 27 27 28 1.0 C H\n", - "\tBOND CREATED 27 27 31 1.0 C H\n", - "\tBONDS [('C', 'O', 1.0, 1.4), ('C', 'C', 1.0, 1.488), ('C', 'H', 1.0, 0.971), ('C', 'H', 1.0, 2.492)]\n", - "\tidx=28 H Number of bonds : 1\n", - "\tBOND CREATED 28 28 27 1.0 H C\n", - "\tBONDS [('H', 'C', 1.0, 0.971)]\n", - "\tidx=29 H Number of bonds : 1\n", - "\tBOND CREATED 29 29 24 1.0 H C\n", - "\tBONDS [('H', 'C', 1.0, 2.036)]\n", - "\tidx=30 C Number of bonds : 4\n", - "\tBOND CREATED 30 30 4 1.0 C O\n", - "\tBOND CREATED 30 30 32 1.0 C H\n", - "\tBOND CREATED 30 30 33 1.0 C C\n", - "\tBOND CREATED 30 30 34 1.0 C H\n", - "\tBONDS [('C', 'O', 1.0, 1.409), ('C', 'H', 1.0, 0.969), ('C', 'C', 1.0, 1.466), ('C', 'H', 1.0, 2.011)]\n", - "\tidx=31 H Number of bonds : 1\n", - "\tBOND CREATED 31 31 27 1.0 H C\n", - "\tBONDS [('H', 'C', 1.0, 2.492)]\n", - "\tidx=32 H Number of bonds : 1\n", - "\tBOND CREATED 32 32 30 1.0 H C\n", - "\tBONDS [('H', 'C', 1.0, 0.969)]\n", - "\tidx=33 C Number of bonds : 4\n", - "\tBOND CREATED 33 33 5 1.0 C O\n", - "\tBOND CREATED 33 33 20 1.0 C H\n", - "\tBOND CREATED 33 33 30 1.0 C C\n", - "\tBOND CREATED 33 33 38 1.0 C H\n", - "\tBONDS [('C', 'O', 1.0, 1.436), ('C', 'H', 1.0, 6.858), ('C', 'C', 1.0, 1.466), ('C', 'H', 1.0, 2.57)]\n", - "\tidx=34 H Number of bonds : 1\n", - "\tBOND CREATED 34 34 30 1.0 H C\n", - "\tBONDS [('H', 'C', 1.0, 2.011)]\n", - "\tidx=35 H Number of bonds : 1\n", - "\tBOND CREATED 35 35 18 1.0 H C\n", - "\tBONDS [('H', 'C', 1.0, 6.83)]\n", - "\tidx=36 C Number of bonds : 4\n", - "\tBOND CREATED 36 36 2 1.0 C O\n", - "\tBOND CREATED 36 36 15 1.0 C C\n", - "\tBOND CREATED 36 36 19 1.0 C H\n", - "\tBOND CREATED 36 36 37 1.0 C H\n", - "\tBONDS [('C', 'O', 1.0, 6.243), ('C', 'C', 1.0, 6.783), ('C', 'H', 1.0, 8.042), ('C', 'H', 1.0, 0.97)]\n", - "\tidx=37 H Number of bonds : 1\n", - "\tBOND CREATED 37 37 36 1.0 H C\n", - "\tBONDS [('H', 'C', 1.0, 0.97)]\n", - "\tidx=38 H Number of bonds : 1\n", - "\tBOND CREATED 38 38 33 1.0 H C\n", - "\tBONDS [('H', 'C', 1.0, 2.57)]\n", - "\tidx=39 C Number of bonds : 4\n", - "\tBOND CREATED 39 39 5 1.0 C O\n", - "\tBOND CREATED 39 39 6 1.0 C C\n", - "\tBOND CREATED 39 39 16 1.0 C H\n", - "\tBOND CREATED 39 39 40 1.0 C H\n", - "\tBONDS [('C', 'O', 1.0, 2.367), ('C', 'C', 1.0, 2.38), ('C', 'H', 1.0, 6.24), ('C', 'H', 1.0, 0.971)]\n", - "\tidx=40 H Number of bonds : 1\n", - "\tBOND CREATED 40 40 39 1.0 H C\n", - "\tBONDS [('H', 'C', 1.0, 0.971)]\n", - "\tidx=41 H Number of bonds : 1\n", - "\tBOND CREATED 41 41 6 1.0 H C\n", - "\tBONDS [('H', 'C', 1.0, 2.584)]\n", - "CELL.CREATE_BONDS: Creating Bonds for molecule K\n", - "CREATE_bonds_specie: specie.formula='K', specie.subtype='molecule'\n", - "\tNumber of atoms in molecule object and RDKit object are equal: 1 1\n", - "\tidx=0 K Number of bonds : 0\n", - "\tNO BONDS CREATED for K due to no bonds in molecule RDKit object\n", - "CELL.CREATE_BONDS: Creating Bonds for molecule K\n", - "CREATE_bonds_specie: specie.formula='K', specie.subtype='molecule'\n", - "\tNumber of atoms in molecule object and RDKit object are equal: 1 1\n", - "\tidx=0 K Number of bonds : 0\n", - "\tNO BONDS CREATED for K due to no bonds in molecule RDKit object\n", - "CELL.CREATE_BONDS: Creating Bonds for molecule K\n", - "CREATE_bonds_specie: specie.formula='K', specie.subtype='molecule'\n", - "\tNumber of atoms in molecule object and RDKit object are equal: 1 1\n", - "\tidx=0 K Number of bonds : 0\n", - "\tNO BONDS CREATED for K due to no bonds in molecule RDKit object\n" - ] - } - ], - "source": [ - "refcell.create_bonds(debug=debug)" - ] - }, - { - "cell_type": "code", - "execution_count": 47, - "id": "05f7f967-2bd0-4590-acf1-e784b5a01e74", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 19\n", - " Formula = C6-O12-Fe\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = -3\n", - " Smiles = ['O=C([O-])C(=O)[O-]', 'O=C([O-])C(=O)[O-]', 'O=C([O-])C(=O)[O-]']\n", - " Number of Ligands = 3\n", - " Number of Metals = 1\n", - "---------------------------------------------------\n", - "\n", - "mol.formula='C6-O12-Fe' smiles='O=C1[O-]~[Fe+3]23(~O=C1[O-])(~O=C([O-])C(=O)[O-]~2)~O=C([O-])C(=O)[O-]~3'\n" - ] - }, - { - "data": { - "image/png": "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", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "O=C1[O-]~[Fe+3]23(~O=C1[O-])(~O=C([O-])C(=O)[O-]~2)~O=C([O-])C(=O)[O-]~3\n" - ] - }, - { - "data": { - "application/3dmoljs_load.v0": "
\n

You appear to be running in JupyterLab (or JavaScript failed to load for some other reason). You need to install the 3dmol extension:
\n jupyter labextension install jupyterlab_3dmol

\n
\n", - "text/html": [ - "
\n", - "

You appear to be running in JupyterLab (or JavaScript failed to load for some other reason). You need to install the 3dmol extension:
\n", - " jupyter labextension install jupyterlab_3dmol

\n", - "
\n", - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 42\n", - " Formula = H24-C12-O6\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = 0\n", - " Smiles = [H]C1([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC1([H])[H]\n", - "---------------------------------------------------\n", - "\n", - "------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = 0\n", - " Smiles = [H]O[H]\n", - "---------------------------------------------------\n", - "\n", - "------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = 0\n", - " Smiles = [H]O[H]\n", - "---------------------------------------------------\n", - "\n", - "------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = 0\n", - " Smiles = [H]O[H]\n", - "---------------------------------------------------\n", - "\n", - "------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 42\n", - " Formula = H24-C12-O6\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = 0\n", - " Smiles = [H]C1([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC1([H])[H]\n", - "---------------------------------------------------\n", - "\n", - "------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 42\n", - " Formula = H24-C12-O6\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = 0\n", - " Smiles = [H]C1([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC1([H])[H]\n", - "---------------------------------------------------\n", - "\n", - "------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = K\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = 1\n", - " Smiles = [K+]\n", - "---------------------------------------------------\n", - "\n", - "------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = K\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = 1\n", - " Smiles = [K+]\n", - "---------------------------------------------------\n", - "\n", - "------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = K\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = 1\n", - " Smiles = [K+]\n", - "---------------------------------------------------\n", - "\n" - ] - } - ], - "source": [ - "from cell2mol.charge_assignment import get_smiles_complex\n", - "\n", - "for ref in refcell.refmoleclist:\n", - " if ref.iscomplex :\n", - " prepare_mol(ref)\n", - " print(ref)\n", - " smiles, obj = get_smiles_complex(ref, debug=1)\n", - " print(smiles)\n", - " draw_with_spheres(obj)\n", - " # for lig in ref.ligands:\n", - " # print(lig)\n", - " # for met in ref.metals:\n", - " # print(met)\n", - " else :\n", - " print(ref)" - ] - }, - { - "cell_type": "code", - "execution_count": 58, - "id": "60b64732-db8a-4f84-99de-b4b3d2ed3797", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "------------- Cell2mol CELL Object ----------------\n", - " Version = 2.0\n", - " Type = cell\n", - " Sub-Type = reference\n", - " Name (Refcode) = BOFFOS\n", - " Num Atoms = 157\n", - " Cell Parameters a:c = [24.369, 24.369, 9.748]\n", - " Cell Parameters al:ga = [90.0, 90.0, 120.0]\n", - "---------------------------------------------------\n", - " # of Ref Molecules: = 10\n", - " With Formulae: \n", - " 0: C6-O12-Fe \n", - " 1: H24-C12-O6 \n", - " 2: H2-O \n", - " 3: H2-O \n", - " 4: H2-O \n", - " 5: H24-C12-O6 \n", - " 6: H24-C12-O6 \n", - " 7: K \n", - " 8: K \n", - " 9: K " - ] - }, - "execution_count": 58, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "refcell" - ] - }, - { - "cell_type": "code", - "execution_count": 53, - "id": "67e05fac-d466-4765-aab2-c33d7b2fb8a1", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 19\n", - " Formula = C6-O12-Fe\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = -3\n", - " Smiles = ['O=C([O-])C(=O)[O-]', 'O=C([O-])C(=O)[O-]', 'O=C([O-])C(=O)[O-]']\n", - " Number of Ligands = 3\n", - " Number of Metals = 1\n", - "---------------------------------------------------\n", - "\n", - "------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 42\n", - " Formula = H24-C12-O6\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = 0\n", - " Smiles = [H]C1([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC1([H])[H]\n", - "---------------------------------------------------\n", - "\n", - "------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = 0\n", - " Smiles = [H]O[H]\n", - "---------------------------------------------------\n", - "\n", - "------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = 0\n", - " Smiles = [H]O[H]\n", - "---------------------------------------------------\n", - "\n", - "------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = 0\n", - " Smiles = [H]O[H]\n", - "---------------------------------------------------\n", - "\n", - "------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 42\n", - " Formula = H24-C12-O6\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = 0\n", - " Smiles = [H]C1([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC1([H])[H]\n", - "---------------------------------------------------\n", - "\n", - "------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 42\n", - " Formula = H24-C12-O6\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = 0\n", - " Smiles = [H]C1([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC1([H])[H]\n", - "---------------------------------------------------\n", - "\n", - "------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = K\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = 1\n", - " Smiles = [K+]\n", - "---------------------------------------------------\n", - "\n", - "------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = K\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = 1\n", - " Smiles = [K+]\n", - "---------------------------------------------------\n", - "\n", - "------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = K\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = 1\n", - " Smiles = [K+]\n", - "---------------------------------------------------\n", - "\n" - ] - } - ], - "source": [ - "for ref in refcell.refmoleclist:\n", - " print(ref)" - ] - }, - { - "cell_type": "code", - "execution_count": 54, - "id": "89b03457-30be-4f68-bfdd-6a1eab038a02", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "SAVING cell2mol CELL object to error_2/BOFFOS/Ref_Cell_BOFFOS_NEW.cell\n" - ] - } - ], - "source": [ - "refcell.save(f\"{folder}/{name}/Ref_Cell_{name}_NEW.cell\")" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "cell2mol", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.10.6" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/cell2mol/test/INOVAL/Cell_INOVAL.cell b/cell2mol/test/INOVAL/Cell_INOVAL.cell deleted file mode 100644 index fc94d6598..000000000 Binary files a/cell2mol/test/INOVAL/Cell_INOVAL.cell and /dev/null differ diff --git a/cell2mol/test/INOVAL/Cell_INOVAL.gmol b/cell2mol/test/INOVAL/Cell_INOVAL.gmol deleted file mode 100644 index 15b3923f7..000000000 Binary files a/cell2mol/test/INOVAL/Cell_INOVAL.gmol and /dev/null differ diff --git a/cell2mol/test/INOVAL/INOVAL.cell b/cell2mol/test/INOVAL/INOVAL.cell deleted file mode 100644 index 477931b88..000000000 Binary files a/cell2mol/test/INOVAL/INOVAL.cell and /dev/null differ diff --git a/cell2mol/test/INOVAL/INOVAL.cif b/cell2mol/test/INOVAL/INOVAL.cif deleted file mode 100644 index 80fe9b9f6..000000000 --- a/cell2mol/test/INOVAL/INOVAL.cif +++ /dev/null @@ -1,304 +0,0 @@ - -####################################################################### -# -# Cambridge Crystallographic Data Centre -# CCDC -# -####################################################################### -# -# If this CIF has been generated from an entry in the Cambridge -# Structural Database, then it will include bibliographic, chemical, -# crystal, experimental, refinement or atomic coordinate data resulting -# from the CCDC's data processing and validation procedures. -# -####################################################################### - -data_INOVAL -_symmetry_cell_setting triclinic -_symmetry_space_group_name_H-M 'P -1' -_symmetry_Int_Tables_number 2 -_space_group_name_Hall '-P 1' -loop_ -_symmetry_equiv_pos_site_id -_symmetry_equiv_pos_as_xyz -1 x,y,z -2 -x,-y,-z -_cell_length_a 10.9964(7) -_cell_length_b 14.8813(9) -_cell_length_c 16.6887(11) -_cell_angle_alpha 80.719(2) -_cell_angle_beta 72.580(2) -_cell_angle_gamma 70.917(2) -_cell_volume 2456.41 -loop_ -_atom_site_label -_atom_site_type_symbol -_atom_site_fract_x -_atom_site_fract_y -_atom_site_fract_z -Fe1 Fe 0.36730(2) 0.14887(2) 0.08332(2) -Cl1 Cl 0.31269(4) 0.06724(3) 0.20984(2) -Cl2 Cl 0.59618(4) 0.11307(3) 0.02896(2) -Cl3 Cl 0.27520(4) 0.30968(3) 0.06485(2) -O1 O 0.28960(12) 0.09751(8) 0.00872(7) -H1 H 0.336538 0.039290 -0.002394 -H2 H 0.210(2) 0.1044(15) 0.0252(13) -Fe1 Fe 0.63270(2) 0.85113(2) 0.91668(2) -Cl1 Cl 0.68731(4) 0.93276(3) 0.79016(2) -Cl2 Cl 0.40382(4) 0.88693(3) 0.97104(2) -Cl3 Cl 0.72480(4) 0.69032(3) 0.93515(2) -O1 O 0.71040(12) 0.90249(8) 0.99128(7) -H1 H 0.663462 0.960710 1.002394 -H2 H 0.790(2) 0.8956(15) 0.9748(13) -Fe2 Fe 0.38225(2) 0.46014(2) 0.49427(2) -Cl4 Cl 0.39072(4) 0.30842(3) 0.54187(2) -Cl5 Cl 0.40572(4) 0.53975(3) 0.59926(2) -Cl6 Cl 0.22252(4) 0.56856(3) 0.44005(2) -Fe2A Fe 0.61775(2) 0.53986(2) 0.50573(2) -Cl4A Cl 0.60928(4) 0.69158(3) 0.45813(2) -Cl5A Cl 0.59428(4) 0.46025(3) 0.40074(2) -Cl6A Cl 0.77748(4) 0.43144(3) 0.55995(2) -O2 O 1.02279(10) 0.11640(8) 0.05200(7) -C1 C 1.00983(18) 0.26342(13) -0.03141(11) -H3 H 1.040903 0.228595 -0.082348 -H4 H 1.086638 0.269710 -0.017010 -H5 H 0.950228 0.326917 -0.041474 -C2 C 0.93549(16) 0.20959(12) 0.04035(11) -H6 H 0.905869 0.243390 0.092468 -H7 H 0.855654 0.205144 0.027265 -C3 C 0.95747(17) 0.05816(13) 0.11500(10) -H8 H 0.883540 0.049411 0.097873 -H9 H 0.919636 0.089283 0.168872 -C4 C 1.05710(19) -0.03698(13) 0.12607(12) -H10 H 1.094482 -0.067231 0.072473 -H11 H 1.012746 -0.077787 0.168766 -H12 H 1.128996 -0.027923 0.144177 -O2 O -0.02279(10) 0.88360(8) 0.94800(7) -C1 C -0.00983(18) 0.73658(13) 1.03141(11) -H3 H -0.040903 0.771405 1.082348 -H4 H -0.086638 0.730290 1.017010 -H5 H 0.049772 0.673083 1.041474 -C2 C 0.06451(16) 0.79041(12) 0.95965(11) -H6 H 0.094131 0.756610 0.907532 -H7 H 0.144346 0.794856 0.972735 -C3 C 0.04253(17) 0.94184(13) 0.88500(10) -H8 H 0.116460 0.950589 0.902127 -H9 H 0.080364 0.910717 0.831128 -C4 C -0.05710(19) 1.03698(13) 0.87393(12) -H10 H -0.094482 1.067231 0.927527 -H11 H -0.012746 1.077787 0.831234 -H12 H -0.128996 1.027923 0.855823 -N1 N 0.50886(12) 0.26906(8) 0.78265(7) -C5 C 0.62133(15) 0.25309(11) 0.70178(9) -H13 H 0.585002 0.246105 0.656318 -H14 H 0.651859 0.310731 0.686115 -C6 C 0.74113(15) 0.16740(11) 0.70565(10) -H15 H 0.711015 0.110425 0.728982 -H16 H 0.788353 0.178382 0.743483 -C7 C 0.83631(17) 0.14982(12) 0.61805(11) -H17 H 0.786214 0.146343 0.578827 -H18 H 0.873735 0.203988 0.597477 -C8 C 0.94975(18) 0.05794(14) 0.61848(13) -H19 H 1.007867 0.048348 0.561227 -H20 H 0.912994 0.004167 0.638771 -H21 H 1.001477 0.062086 0.655705 -C9 C 0.55723(15) 0.27939(11) 0.85584(9) -H22 H 0.484865 0.278858 0.908092 -H23 H 0.633558 0.222610 0.860738 -C10 C 0.60019(16) 0.36739(11) 0.85148(10) -H24 H 0.523176 0.425300 0.852191 -H25 H 0.670113 0.371192 0.798565 -C11 C 0.65438(17) 0.36159(12) 0.92708(10) -H26 H 0.587418 0.350120 0.979269 -H27 H 0.736008 0.306642 0.922848 -C12 C 0.68714(18) 0.45147(13) 0.93321(11) -H28 H 0.757577 0.461032 0.883354 -H29 H 0.717837 0.444948 0.983848 -H30 H 0.607146 0.506378 0.936378 -C13 C 0.40438(14) 0.35915(10) 0.76340(9) -H31 H 0.377262 0.349352 0.714775 -H32 H 0.445969 0.411473 0.746080 -C14 C 0.27955(15) 0.39089(11) 0.83505(9) -H33 H 0.304884 0.385295 0.888199 -H34 H 0.222537 0.349130 0.842097 -C15 C 0.20217(16) 0.49372(11) 0.81643(10) -H35 H 0.259503 0.535102 0.809989 -H36 H 0.179122 0.499070 0.762530 -C16 C 0.07513(17) 0.52838(13) 0.88560(11) -H37 H 0.031231 0.595744 0.872727 -H38 H 0.097147 0.520972 0.939485 -H39 H 0.015023 0.490786 0.889228 -C17 C 0.45221(15) 0.18500(10) 0.80948(9) -H40 H 0.519387 0.130852 0.829614 -H41 H 0.372712 0.202615 0.857835 -C18 C 0.41262(16) 0.15114(11) 0.74292(9) -H42 H 0.493475 0.120670 0.699379 -H43 H 0.356620 0.206204 0.715371 -C19 C 0.33502(16) 0.07973(11) 0.78349(9) -H44 H 0.386190 0.030019 0.817998 -H45 H 0.248839 0.113006 0.821490 -C20 C 0.30853(19) 0.03260(13) 0.71911(11) -H46 H 0.393557 -0.003726 0.683478 -H47 H 0.259283 0.081562 0.684068 -H48 H 0.255613 -0.010528 0.748153 -N1 N 0.49114(12) 0.73094(8) 0.21735(7) -C5 C 0.37867(15) 0.74691(11) 0.29822(9) -H13 H 0.414998 0.753895 0.343682 -H14 H 0.348141 0.689269 0.313885 -C6 C 0.25887(15) 0.83260(11) 0.29435(10) -H15 H 0.288985 0.889575 0.271018 -H16 H 0.211647 0.821618 0.256517 -C7 C 0.16369(17) 0.85018(12) 0.38195(11) -H17 H 0.213786 0.853657 0.421173 -H18 H 0.126265 0.796012 0.402523 -C8 C 0.05025(18) 0.94206(14) 0.38152(13) -H19 H -0.007867 0.951652 0.438773 -H20 H 0.087006 0.995833 0.361229 -H21 H -0.001477 0.937914 0.344295 -C9 C 0.44277(15) 0.72061(11) 0.14416(9) -H22 H 0.515135 0.721142 0.091908 -H23 H 0.366442 0.777390 0.139262 -C10 C 0.39981(16) 0.63261(11) 0.14852(10) -H24 H 0.476824 0.574700 0.147809 -H25 H 0.329887 0.628808 0.201435 -C11 C 0.34562(17) 0.63841(12) 0.07292(10) -H26 H 0.412582 0.649880 0.020731 -H27 H 0.263992 0.693358 0.077152 -C12 C 0.31286(18) 0.54853(13) 0.06679(11) -H28 H 0.242423 0.538968 0.116646 -H29 H 0.282163 0.555052 0.016152 -H30 H 0.392854 0.493622 0.063622 -C13 C 0.59562(14) 0.64085(10) 0.23660(9) -H31 H 0.622738 0.650648 0.285225 -H32 H 0.554031 0.588527 0.253920 -C14 C 0.72045(15) 0.60911(11) 0.16495(9) -H33 H 0.695116 0.614705 0.111801 -H34 H 0.777463 0.650870 0.157903 -C15 C 0.79783(16) 0.50628(11) 0.18357(10) -H35 H 0.740497 0.464898 0.190011 -H36 H 0.820878 0.500930 0.237470 -C16 C 0.92487(17) 0.47162(13) 0.11440(11) -H37 H 0.968769 0.404256 0.127273 -H38 H 0.902853 0.479028 0.060515 -H39 H 0.984977 0.509214 0.110772 -C17 C 0.54779(15) 0.81500(10) 0.19052(9) -H40 H 0.480613 0.869148 0.170386 -H41 H 0.627288 0.797385 0.142165 -C18 C 0.58738(16) 0.84886(11) 0.25708(9) -H42 H 0.506525 0.879330 0.300621 -H43 H 0.643380 0.793796 0.284629 -C19 C 0.66498(16) 0.92027(11) 0.21651(9) -H44 H 0.613810 0.969981 0.182002 -H45 H 0.751161 0.886994 0.178510 -C20 C 0.69147(19) 0.96740(13) 0.28089(11) -H46 H 0.606443 1.003726 0.316522 -H47 H 0.740717 0.918438 0.315932 -H48 H 0.744387 1.010528 0.251847 -N2 N 0.15190(12) 0.31988(9) 0.34736(7) -C21 C 0.38313(15) 0.34368(12) 0.31245(9) -H49 H 0.421078 0.290981 0.350672 -H50 H 0.337270 0.401287 0.344556 -C22 C 0.17625(15) 0.25785(11) 0.42592(9) -H51 H 0.228413 0.283683 0.450464 -H52 H 0.089033 0.262764 0.467597 -C23 C 0.24891(17) 0.15359(11) 0.41288(10) -H53 H 0.332412 0.147482 0.367264 -H54 H 0.192446 0.124282 0.395799 -C24 C 0.28155(17) 0.10167(12) 0.49380(10) -H55 H 0.343425 0.128110 0.508275 -H56 H 0.198632 0.112669 0.540298 -C25 C 0.34486(18) -0.00481(12) 0.48532(11) -H57 H 0.427723 -0.015985 0.439907 -H58 H 0.283039 -0.031465 0.472244 -H59 H 0.364678 -0.035660 0.538350 -C26 C 0.07204(15) 0.28417(11) 0.30573(9) -H60 H 0.047165 0.332095 0.260319 -H61 H 0.131010 0.224804 0.278938 -C27 C -0.05433(15) 0.26418(12) 0.36301(10) -H62 H -0.114226 0.322120 0.391741 -H63 H -0.031389 0.212755 0.406493 -C28 C -0.12453(17) 0.23428(12) 0.31050(11) -H64 H -0.161677 0.290008 0.274516 -H65 H -0.058616 0.185081 0.273121 -C29 C -0.23619(18) 0.19500(13) 0.36463(12) -H66 H -0.277205 0.175440 0.328376 -H67 H -0.303605 0.244361 0.400074 -H68 H -0.199916 0.139834 0.400432 -C30 C 0.07504(15) 0.41986(11) 0.37515(9) -H69 H 0.115778 0.433789 0.415373 -H70 H -0.017471 0.420653 0.405941 -C31 C 0.06902(16) 0.49974(11) 0.30566(10) -H71 H 0.047781 0.480948 0.258361 -H72 H 0.156651 0.512219 0.284242 -C32 C -0.03844(17) 0.58969(12) 0.34079(11) -H73 H -0.127269 0.580040 0.352781 -H74 H -0.026401 0.600461 0.394563 -C33 C -0.0342(2) 0.67710(14) 0.28077(14) -H75 H -0.043489 0.666167 0.226845 -H76 H 0.051197 0.689685 0.271825 -H77 H -0.107428 0.732083 0.304776 -C34 C 0.28279(14) 0.31746(11) 0.28174(9) -H78 H 0.263311 0.361929 0.233130 -H79 H 0.324266 0.252547 0.261504 -C35 C 0.49522(16) 0.36261(13) 0.23880(10) -H80 H 0.456925 0.419208 0.204034 -H81 H 0.559033 0.378286 0.261258 -C36 C 0.57070(19) 0.28122(17) 0.18302(13) -H82 H 0.648035 0.295860 0.142260 -H83 H 0.512128 0.271883 0.152956 -H84 H 0.601075 0.222930 0.217539 -N2 N 0.84810(12) 0.68012(9) 0.65264(7) -C21 C 0.61687(15) 0.65632(12) 0.68755(9) -H49 H 0.578922 0.709019 0.649328 -H50 H 0.662730 0.598713 0.655444 -C22 C 0.82375(15) 0.74215(11) 0.57408(9) -H51 H 0.771587 0.716317 0.549536 -H52 H 0.910967 0.737236 0.532403 -C23 C 0.75109(17) 0.84641(11) 0.58712(10) -H53 H 0.667588 0.852518 0.632736 -H54 H 0.807554 0.875718 0.604201 -C24 C 0.71845(17) 0.89833(12) 0.50620(10) -H55 H 0.656575 0.871890 0.491725 -H56 H 0.801368 0.887331 0.459702 -C25 C 0.65514(18) 1.00481(12) 0.51468(11) -H57 H 0.572277 1.015985 0.560093 -H58 H 0.716961 1.031465 0.527756 -H59 H 0.635322 1.035660 0.461650 -C26 C 0.92796(15) 0.71583(11) 0.69427(9) -H60 H 0.952835 0.667905 0.739681 -H61 H 0.868990 0.775196 0.721062 -C27 C 1.05433(15) 0.73582(12) 0.63699(10) -H62 H 1.114226 0.677880 0.608259 -H63 H 1.031389 0.787245 0.593507 -C28 C 1.12453(17) 0.76572(12) 0.68950(11) -H64 H 1.161677 0.709992 0.725484 -H65 H 1.058616 0.814919 0.726879 -C29 C 1.23619(18) 0.80500(13) 0.63537(12) -H66 H 1.277205 0.824560 0.671624 -H67 H 1.303605 0.755639 0.599926 -H68 H 1.199916 0.860166 0.599568 -C30 C 0.92496(15) 0.58014(11) 0.62485(9) -H69 H 0.884222 0.566211 0.584627 -H70 H 1.017471 0.579347 0.594059 -C31 C 0.93098(16) 0.50026(11) 0.69434(10) -H71 H 0.952219 0.519052 0.741639 -H72 H 0.843349 0.487781 0.715758 -C32 C 1.03844(17) 0.41031(12) 0.65921(11) -H73 H 1.127269 0.419960 0.647219 -H74 H 1.026401 0.399539 0.605437 -C33 C 1.0342(2) 0.32290(14) 0.71923(14) -H75 H 1.043489 0.333833 0.773155 -H76 H 0.948803 0.310315 0.728175 -H77 H 1.107428 0.267917 0.695224 -C34 C 0.71721(14) 0.68254(11) 0.71826(9) -H78 H 0.736689 0.638071 0.766870 -H79 H 0.675734 0.747453 0.738496 -C35 C 0.50478(16) 0.63739(13) 0.76120(10) -H80 H 0.543075 0.580792 0.795966 -H81 H 0.440967 0.621714 0.738742 -C36 C 0.42930(19) 0.71878(17) 0.81698(13) -H82 H 0.351965 0.704140 0.857740 -H83 H 0.487872 0.728117 0.847044 -H84 H 0.398925 0.777070 0.782461 - -#END diff --git a/cell2mol/test/INOVAL/INOVAL.info b/cell2mol/test/INOVAL/INOVAL.info deleted file mode 100644 index 85039abc6..000000000 --- a/cell2mol/test/INOVAL/INOVAL.info +++ /dev/null @@ -1,565 +0,0 @@ -CIF2CELL 2.0.0 -2024-02-20 18:35 -Output for None - - BIBLIOGRAPHIC INFORMATION -Failed to get author information, No journal information - INPUT CELL INFORMATION -Symmetry information: -Triclinic crystal system. -Space group number : 2 -Hall symbol : -P 1 -Hermann-Mauguin symbol : P-1 - -Lattice parameters: - a b c - 10.9964000 14.8813000 16.6887000 - alpha beta gamma - 80.7190000 72.5800000 70.9170000 -Representative sites : -Atom x y z -Fe 0.3673000 0.1488700 0.0833200 -Cl 0.3126900 0.0672400 0.2098400 -Cl 0.5961800 0.1130700 0.0289600 -Cl 0.2752000 0.3096800 0.0648500 -O 0.2896000 0.0975100 0.0087200 -H 0.3365380 0.0392900 -0.0023940 -H 0.2100000 0.1044000 0.0252000 -Fe 0.6327000 0.8511300 0.9166800 -Cl 0.6873100 0.9327600 0.7901600 -Cl 0.4038200 0.8869300 0.9710400 -Cl 0.7248000 0.6903200 0.9351500 -O 0.7104000 0.9024900 0.9912800 -H 0.6634620 0.9607100 1.0023940 -H 0.7900000 0.8956000 0.9748000 -Fe 0.3822500 0.4601400 0.4942700 -Cl 0.3907200 0.3084200 0.5418700 -Cl 0.4057200 0.5397500 0.5992600 -Cl 0.2225200 0.5685600 0.4400500 -Fe 0.6177500 0.5398600 0.5057300 -Cl 0.6092800 0.6915800 0.4581300 -Cl 0.5942800 0.4602500 0.4007400 -Cl 0.7774800 0.4314400 0.5599500 -O 1.0227900 0.1164000 0.0520000 -C 1.0098300 0.2634200 -0.0314100 -H 1.0409030 0.2285950 -0.0823480 -H 1.0866380 0.2697100 -0.0170100 -H 0.9502280 0.3269170 -0.0414740 -C 0.9354900 0.2095900 0.0403500 -H 0.9058690 0.2433900 0.0924680 -H 0.8556540 0.2051440 0.0272650 -C 0.9574700 0.0581600 0.1150000 -H 0.8835400 0.0494110 0.0978730 -H 0.9196360 0.0892830 0.1688720 -C 1.0571000 -0.0369800 0.1260700 -H 1.0944820 -0.0672310 0.0724730 -H 1.0127460 -0.0777870 0.1687660 -H 1.1289960 -0.0279230 0.1441770 -O -0.0227900 0.8836000 0.9480000 -C -0.0098300 0.7365800 1.0314100 -H -0.0409030 0.7714050 1.0823480 -H -0.0866380 0.7302900 1.0170100 -H 0.0497720 0.6730830 1.0414740 -C 0.0645100 0.7904100 0.9596500 -H 0.0941310 0.7566100 0.9075320 -H 0.1443460 0.7948560 0.9727350 -C 0.0425300 0.9418400 0.8850000 -H 0.1164600 0.9505890 0.9021270 -H 0.0803640 0.9107170 0.8311280 -C -0.0571000 1.0369800 0.8739300 -H -0.0944820 1.0672310 0.9275270 -H -0.0127460 1.0777870 0.8312340 -H -0.1289960 1.0279230 0.8558230 -N 0.5088600 0.2690600 0.7826500 -C 0.6213300 0.2530900 0.7017800 -H 0.5850020 0.2461050 0.6563180 -H 0.6518590 0.3107310 0.6861150 -C 0.7411300 0.1674000 0.7056500 -H 0.7110150 0.1104250 0.7289820 -H 0.7883530 0.1783820 0.7434830 -C 0.8363100 0.1498200 0.6180500 -H 0.7862140 0.1463430 0.5788270 -H 0.8737350 0.2039880 0.5974770 -C 0.9497500 0.0579400 0.6184800 -H 1.0078670 0.0483480 0.5612270 -H 0.9129940 0.0041670 0.6387710 -H 1.0014770 0.0620860 0.6557050 -C 0.5572300 0.2793900 0.8558400 -H 0.4848650 0.2788580 0.9080920 -H 0.6335580 0.2226100 0.8607380 -C 0.6001900 0.3673900 0.8514800 -H 0.5231760 0.4253000 0.8521910 -H 0.6701130 0.3711920 0.7985650 -C 0.6543800 0.3615900 0.9270800 -H 0.5874180 0.3501200 0.9792690 -H 0.7360080 0.3066420 0.9228480 -C 0.6871400 0.4514700 0.9332100 -H 0.7575770 0.4610320 0.8833540 -H 0.7178370 0.4449480 0.9838480 -H 0.6071460 0.5063780 0.9363780 -C 0.4043800 0.3591500 0.7634000 -H 0.3772620 0.3493520 0.7147750 -H 0.4459690 0.4114730 0.7460800 -C 0.2795500 0.3908900 0.8350500 -H 0.3048840 0.3852950 0.8881990 -H 0.2225370 0.3491300 0.8420970 -C 0.2021700 0.4937200 0.8164300 -H 0.2595030 0.5351020 0.8099890 -H 0.1791220 0.4990700 0.7625300 -C 0.0751300 0.5283800 0.8856000 -H 0.0312310 0.5957440 0.8727270 -H 0.0971470 0.5209720 0.9394850 -H 0.0150230 0.4907860 0.8892280 -C 0.4522100 0.1850000 0.8094800 -H 0.5193870 0.1308520 0.8296140 -H 0.3727120 0.2026150 0.8578350 -C 0.4126200 0.1511400 0.7429200 -H 0.4934750 0.1206700 0.6993790 -H 0.3566200 0.2062040 0.7153710 -C 0.3350200 0.0797300 0.7834900 -H 0.3861900 0.0300190 0.8179980 -H 0.2488390 0.1130060 0.8214900 -C 0.3085300 0.0326000 0.7191100 -H 0.3935570 -0.0037260 0.6834780 -H 0.2592830 0.0815620 0.6840680 -H 0.2556130 -0.0105280 0.7481530 -N 0.4911400 0.7309400 0.2173500 -C 0.3786700 0.7469100 0.2982200 -H 0.4149980 0.7538950 0.3436820 -H 0.3481410 0.6892690 0.3138850 -C 0.2588700 0.8326000 0.2943500 -H 0.2889850 0.8895750 0.2710180 -H 0.2116470 0.8216180 0.2565170 -C 0.1636900 0.8501800 0.3819500 -H 0.2137860 0.8536570 0.4211730 -H 0.1262650 0.7960120 0.4025230 -C 0.0502500 0.9420600 0.3815200 -H -0.0078670 0.9516520 0.4387730 -H 0.0870060 0.9958330 0.3612290 -H -0.0014770 0.9379140 0.3442950 -C 0.4427700 0.7206100 0.1441600 -H 0.5151350 0.7211420 0.0919080 -H 0.3664420 0.7773900 0.1392620 -C 0.3998100 0.6326100 0.1485200 -H 0.4768240 0.5747000 0.1478090 -H 0.3298870 0.6288080 0.2014350 -C 0.3456200 0.6384100 0.0729200 -H 0.4125820 0.6498800 0.0207310 -H 0.2639920 0.6933580 0.0771520 -C 0.3128600 0.5485300 0.0667900 -H 0.2424230 0.5389680 0.1166460 -H 0.2821630 0.5550520 0.0161520 -H 0.3928540 0.4936220 0.0636220 -C 0.5956200 0.6408500 0.2366000 -H 0.6227380 0.6506480 0.2852250 -H 0.5540310 0.5885270 0.2539200 -C 0.7204500 0.6091100 0.1649500 -H 0.6951160 0.6147050 0.1118010 -H 0.7774630 0.6508700 0.1579030 -C 0.7978300 0.5062800 0.1835700 -H 0.7404970 0.4648980 0.1900110 -H 0.8208780 0.5009300 0.2374700 -C 0.9248700 0.4716200 0.1144000 -H 0.9687690 0.4042560 0.1272730 -H 0.9028530 0.4790280 0.0605150 -H 0.9849770 0.5092140 0.1107720 -C 0.5477900 0.8150000 0.1905200 -H 0.4806130 0.8691480 0.1703860 -H 0.6272880 0.7973850 0.1421650 -C 0.5873800 0.8488600 0.2570800 -H 0.5065250 0.8793300 0.3006210 -H 0.6433800 0.7937960 0.2846290 -C 0.6649800 0.9202700 0.2165100 -H 0.6138100 0.9699810 0.1820020 -H 0.7511610 0.8869940 0.1785100 -C 0.6914700 0.9674000 0.2808900 -H 0.6064430 1.0037260 0.3165220 -H 0.7407170 0.9184380 0.3159320 -H 0.7443870 1.0105280 0.2518470 -N 0.1519000 0.3198800 0.3473600 -C 0.3831300 0.3436800 0.3124500 -H 0.4210780 0.2909810 0.3506720 -H 0.3372700 0.4012870 0.3445560 -C 0.1762500 0.2578500 0.4259200 -H 0.2284130 0.2836830 0.4504640 -H 0.0890330 0.2627640 0.4675970 -C 0.2489100 0.1535900 0.4128800 -H 0.3324120 0.1474820 0.3672640 -H 0.1924460 0.1242820 0.3957990 -C 0.2815500 0.1016700 0.4938000 -H 0.3434250 0.1281100 0.5082750 -H 0.1986320 0.1126690 0.5402980 -C 0.3448600 -0.0048100 0.4853200 -H 0.4277230 -0.0159850 0.4399070 -H 0.2830390 -0.0314650 0.4722440 -H 0.3646780 -0.0356600 0.5383500 -C 0.0720400 0.2841700 0.3057300 -H 0.0471650 0.3320950 0.2603190 -H 0.1310100 0.2248040 0.2789380 -C -0.0543300 0.2641800 0.3630100 -H -0.1142260 0.3221200 0.3917410 -H -0.0313890 0.2127550 0.4064930 -C -0.1245300 0.2342800 0.3105000 -H -0.1616770 0.2900080 0.2745160 -H -0.0586160 0.1850810 0.2731210 -C -0.2361900 0.1950000 0.3646300 -H -0.2772050 0.1754400 0.3283760 -H -0.3036050 0.2443610 0.4000740 -H -0.1999160 0.1398340 0.4004320 -C 0.0750400 0.4198600 0.3751500 -H 0.1157780 0.4337890 0.4153730 -H -0.0174710 0.4206530 0.4059410 -C 0.0690200 0.4997400 0.3056600 -H 0.0477810 0.4809480 0.2583610 -H 0.1566510 0.5122190 0.2842420 -C -0.0384400 0.5896900 0.3407900 -H -0.1272690 0.5800400 0.3527810 -H -0.0264010 0.6004610 0.3945630 -C -0.0342000 0.6771000 0.2807700 -H -0.0434890 0.6661670 0.2268450 -H 0.0511970 0.6896850 0.2718250 -H -0.1074280 0.7320830 0.3047760 -C 0.2827900 0.3174600 0.2817400 -H 0.2633110 0.3619290 0.2331300 -H 0.3242660 0.2525470 0.2615040 -C 0.4952200 0.3626100 0.2388000 -H 0.4569250 0.4192080 0.2040340 -H 0.5590330 0.3782860 0.2612580 -C 0.5707000 0.2812200 0.1830200 -H 0.6480350 0.2958600 0.1422600 -H 0.5121280 0.2718830 0.1529560 -H 0.6010750 0.2229300 0.2175390 -N 0.8481000 0.6801200 0.6526400 -C 0.6168700 0.6563200 0.6875500 -H 0.5789220 0.7090190 0.6493280 -H 0.6627300 0.5987130 0.6554440 -C 0.8237500 0.7421500 0.5740800 -H 0.7715870 0.7163170 0.5495360 -H 0.9109670 0.7372360 0.5324030 -C 0.7510900 0.8464100 0.5871200 -H 0.6675880 0.8525180 0.6327360 -H 0.8075540 0.8757180 0.6042010 -C 0.7184500 0.8983300 0.5062000 -H 0.6565750 0.8718900 0.4917250 -H 0.8013680 0.8873310 0.4597020 -C 0.6551400 1.0048100 0.5146800 -H 0.5722770 1.0159850 0.5600930 -H 0.7169610 1.0314650 0.5277560 -H 0.6353220 1.0356600 0.4616500 -C 0.9279600 0.7158300 0.6942700 -H 0.9528350 0.6679050 0.7396810 -H 0.8689900 0.7751960 0.7210620 -C 1.0543300 0.7358200 0.6369900 -H 1.1142260 0.6778800 0.6082590 -H 1.0313890 0.7872450 0.5935070 -C 1.1245300 0.7657200 0.6895000 -H 1.1616770 0.7099920 0.7254840 -H 1.0586160 0.8149190 0.7268790 -C 1.2361900 0.8050000 0.6353700 -H 1.2772050 0.8245600 0.6716240 -H 1.3036050 0.7556390 0.5999260 -H 1.1999160 0.8601660 0.5995680 -C 0.9249600 0.5801400 0.6248500 -H 0.8842220 0.5662110 0.5846270 -H 1.0174710 0.5793470 0.5940590 -C 0.9309800 0.5002600 0.6943400 -H 0.9522190 0.5190520 0.7416390 -H 0.8433490 0.4877810 0.7157580 -C 1.0384400 0.4103100 0.6592100 -H 1.1272690 0.4199600 0.6472190 -H 1.0264010 0.3995390 0.6054370 -C 1.0342000 0.3229000 0.7192300 -H 1.0434890 0.3338330 0.7731550 -H 0.9488030 0.3103150 0.7281750 -H 1.1074280 0.2679170 0.6952240 -C 0.7172100 0.6825400 0.7182600 -H 0.7366890 0.6380710 0.7668700 -H 0.6757340 0.7474530 0.7384960 -C 0.5047800 0.6373900 0.7612000 -H 0.5430750 0.5807920 0.7959660 -H 0.4409670 0.6217140 0.7387420 -C 0.4293000 0.7187800 0.8169800 -H 0.3519650 0.7041400 0.8577400 -H 0.4878720 0.7281170 0.8470440 -H 0.3989250 0.7770700 0.7824610 - - OUTPUT CELL INFORMATION -Symmetry information: -Triclinic crystal system. -Space group number : 2 -Hall symbol : -P 1 -Hermann-Mauguin symbol : P-1 - -Bravais lattice vectors : - 10.9964000 0.0000000 0.0000000 - 4.8652552 14.0635124 0.0000000 - 4.9961606 1.1195897 15.8838788 -All sites, (cartesian coordinates): -Atom x y z -Fe 5.1795484 2.1869193 1.3234448 -Fe 15.6782675 12.9961829 14.5604340 -Cl 4.8139984 1.1805653 3.3330731 -Cl 16.0438174 14.0025369 12.5508057 -Cl 7.2506370 1.6225847 0.4599971 -Cl 13.6071789 13.5605175 15.4238817 -Cl 4.8568825 4.4277939 1.0300695 -Cl 16.0009333 10.7553082 14.8538092 -O 3.7025350 1.3810959 0.1385074 -O 17.1552809 13.8020062 15.7453714 -H 8.8760622 1.6694649 15.8458528 -H 11.9817537 13.5136373 0.0380260 -H 2.9430799 1.4964444 0.4002737 -H 17.9147360 13.6866578 15.4836050 -Fe 8.9115248 7.0245642 7.8509248 -Fe 11.9462911 8.1585379 8.0329540 -Cl 8.5043250 4.9441406 8.6069974 -Cl 12.3534909 10.2389616 7.2768814 -Cl 10.0814801 8.2617062 9.5185732 -Cl 10.7763357 6.9213960 6.3653056 -Cl 7.4116689 8.4886261 6.9897009 -Cl 13.4461469 6.6944761 8.8941779 -O 1.0767240 1.6952115 0.8259617 -O 19.7810918 13.4878907 15.0579171 -C 6.2289314 4.7890339 15.3849662 -C 14.6288845 10.3940683 0.4989126 -H 6.1466956 4.2422424 14.5758731 -H 14.7111203 10.9408598 1.3080057 -H 7.1760900 4.8936155 15.6136940 -H 13.6817258 10.2894867 0.2701848 -H 16.8285717 5.6707572 15.2251108 -H 4.0292442 9.5123450 0.6587680 -C 11.5083262 2.9927470 0.6409145 -C 9.3494897 12.1903552 15.2429643 -H 11.6074373 3.5264445 1.4687505 -H 9.2503785 11.6566577 14.4151283 -H 10.5434119 2.9155708 0.4330740 -H 10.3144040 12.2675314 15.4508048 -C 11.3862448 0.9466867 1.8266461 -C 9.4715710 14.2364155 14.0572327 -H 10.4451456 0.8044698 1.5546029 -H 10.4126702 14.3786323 14.3292759 -H 11.3907815 1.4446999 2.6823424 -H 9.4670343 13.7384022 13.2015364 -C 5.9430985 13.6845904 2.0024806 -C 14.9147174 1.4985118 13.8813982 -H 5.9392078 13.1991484 1.1511523 -H 14.9186080 1.9839537 14.7327264 -H 5.4701438 13.1585027 2.6806587 -H 15.3876721 2.0245995 13.2032201 -H 6.8682258 13.8322360 2.2900900 -H 13.9895901 1.3508661 13.5937888 -N 10.8149188 4.6601756 12.4315177 -N 10.0428971 10.5229266 3.4523611 -C 11.5699463 4.3450401 11.1469885 -C 9.2878696 10.8380621 4.7368903 -H 10.9093498 4.1959076 10.4248756 -H 9.9484661 10.9871945 5.4590032 -H 12.1078287 5.1381366 10.8981675 -H 8.7499872 10.0449656 4.9857113 -C 12.4897464 3.1442705 11.2084591 -C 8.3680694 12.0388317 4.6754197 -H 11.9979623 2.3691241 11.5790617 -H 8.8598535 12.8139780 4.3048171 -H 13.2514794 3.3410734 11.8093939 -H 7.6063365 11.8420287 4.0744849 -C 13.0131889 2.7989579 9.8170313 -C 7.8446269 12.3841443 6.0668475 -H 12.2494324 2.7061454 9.1940179 -H 8.6083835 12.4769568 6.6898609 -H 13.5854843 3.5377169 9.4902522 -H 7.2723315 11.6453853 6.3936265 -C 13.8157492 1.5072838 9.8238614 -C 7.0420666 13.6758184 6.0600174 -H 3.1257143 1.3082867 8.9144616 -H 17.7321016 13.8748155 6.9694171 -H 13.2513233 0.7737641 10.1461611 -H 7.6064926 14.4093380 5.7377176 -H 3.5943134 1.6072678 10.4151387 -H 17.2635024 13.5758343 5.4687400 -C 11.7627418 4.8873944 13.5940588 -C 9.0950741 10.2957077 2.2898200 -H 11.2254583 4.9384134 14.4240233 -H 9.6323575 10.2446887 1.4598555 -H 12.3502970 4.0943519 13.6718581 -H 8.5075189 11.0887502 2.2120207 -C 12.6415063 6.1201021 13.5248051 -C 8.2163096 9.0630001 2.3590737 -H 12.0799287 6.9353161 13.5360985 -H 8.7778871 8.2477860 2.3477802 -H 13.1645334 6.1143285 12.6843097 -H 7.6932824 9.0687737 3.1995691 -C 13.5868925 6.1231747 14.7256263 -C 7.2709234 9.0599274 1.1582524 -H 13.0554917 6.0202965 15.5545901 -H 7.8023242 9.1628057 0.3292887 -H 14.1960268 5.3456747 14.6584058 -H 6.6617890 9.8374274 1.2254730 -C 14.4150501 7.3940663 14.8229945 -C 6.4427657 7.7890359 1.0608843 -H 14.9870366 7.4727233 14.0310879 -H 5.8707793 7.7103788 1.8527909 -H 14.9738710 7.3590379 15.6273224 -H 5.8839448 7.8240643 0.2565564 -H 13.8183734 8.1698125 14.8733146 -H 7.0394425 7.0132897 1.0105641 -C 10.0081497 5.9056053 12.1257531 -C 10.8496662 9.2774969 3.7581257 -H 9.4193412 5.7133710 11.3533995 -H 11.4384746 9.4697312 4.5304793 -H 10.6335102 6.6220592 11.8506443 -H 10.2243057 8.5610430 4.0332345 -C 9.1478672 6.4321998 13.2638330 -C 11.7099487 8.7509024 2.6200458 -H 9.6647698 6.4130195 14.1080453 -H 11.1930460 8.7700827 1.7758335 -H 8.3529643 5.8527973 13.3757667 -H 12.5048515 9.3303049 2.5081121 -C 8.7042314 7.8575040 12.9680752 -C 12.1535844 7.3255982 2.9158036 -H 9.5038417 8.4322690 12.8657671 -H 11.3539741 6.7508332 3.0181117 -H 8.2075225 7.8723979 12.1119341 -H 12.6502934 7.3107043 3.7719447 -C 7.8214629 8.4223874 14.0667631 -C 13.0363529 6.7607148 1.8171157 -H 7.6021595 9.3553493 13.8622899 -H 13.2556564 5.8277528 2.0215889 -H 8.2967470 8.3785340 14.9226659 -H 12.5610689 6.8045682 0.9612129 -H 6.9957240 7.8977456 14.1243898 -H 13.8620919 7.2853566 1.7594890 -C 9.9170464 3.5080353 12.8576822 -C 10.9407695 11.6750669 3.0261966 -H 10.4929004 2.7690661 13.1774882 -H 10.3649155 12.4140361 2.7063906 -H 9.3701454 3.8099018 13.6257472 -H 11.4876705 11.3732003 2.2581316 -C 8.9844169 2.9573249 11.8004512 -C 11.8733989 12.2257773 4.0834276 -H 9.5077487 2.4800616 11.1088513 -H 11.3500672 12.7030406 4.7750275 -H 8.4988797 3.7008746 11.3628663 -H 12.3589362 11.4822276 4.5210125 -C 7.9863626 1.9984712 12.4448602 -C 12.8714532 13.1846309 3.4390186 -H 8.4795992 1.3379948 12.9929811 -H 12.3782166 13.8451074 2.8908977 -H 7.3904322 2.5089931 13.0484476 -H 13.4673836 12.6741091 2.8354312 -C 7.1441157 1.2635787 11.4222561 -C 13.7137002 13.9195235 4.4616227 -H 12.5896033 14.7763267 10.8562817 -H 8.2682125 0.4067754 5.0275971 -H 6.6657131 1.9129237 10.8656532 -H 14.1921027 13.2701784 5.0182256 -H 11.3627492 14.7530762 11.8835716 -H 9.4950667 0.4300260 4.0003072 -N 4.9621174 4.8875370 5.5174241 -N 15.8956985 10.2955651 10.3664547 -C 7.4461920 5.1831638 4.9629179 -C 13.4116238 9.9999384 10.9209609 -H 7.7980526 4.4848237 5.5700315 -H 13.0597633 10.6982785 10.3138472 -H 7.3825766 6.0292661 5.4728857 -H 13.4752392 9.1538361 10.4109930 -C 5.3205863 4.1031323 6.7652617 -C 15.5372296 11.0799698 9.1186171 -H 6.1425014 4.4939143 7.1551156 -H 14.7153144 10.6891879 8.7287632 -H 4.5936461 4.2189016 7.4272541 -H 16.2641697 10.9642006 8.4566247 -C 5.5471833 2.6222711 6.5581359 -C 15.3106326 12.5608311 9.3257429 -H 6.2077828 2.4852999 5.8335769 -H 14.6500330 12.6978022 10.0503019 -H 4.6983522 2.1909740 6.2868233 -H 16.1594636 12.9921282 9.5970554 -C 6.0577910 1.9826907 7.8434593 -C 14.8000248 13.2004114 8.0404194 -H 6.9391501 2.3707361 8.0733785 -H 13.9186658 12.8123661 7.8105003 -H 5.4318160 2.1894340 8.5820279 -H 15.4259999 12.9936682 7.3018508 -C 11.0588085 14.5392262 7.7087641 -C 9.7990073 0.6438759 8.1751147 -H 11.6887433 14.3312225 6.9874295 -H 9.1690725 0.8518796 8.8964493 -H 10.1839869 14.1497235 7.5010665 -H 10.6738290 1.0333786 8.3828123 -H 11.3915885 14.1647387 8.5510861 -H 9.4662274 1.0183635 7.3327926 -C 3.7022164 4.3387205 4.8561783 -C 17.1555994 10.8443817 11.0277005 -H 3.4349677 4.9618726 4.1348754 -H 17.4228482 10.2212295 11.7490033 -H 3.9279863 3.4738300 4.4306174 -H 16.9298296 11.7092722 11.4532614 -C 13.4979250 4.1217210 5.7660068 -C 7.3598909 11.0613812 10.1178719 -H 13.2647222 4.9687278 6.2223666 -H 7.5930937 10.2143743 9.6615122 -H 13.7172457 3.4471880 6.4566855 -H 7.1405702 11.7359142 9.4271932 -C 12.3181582 3.6424323 4.9319444 -C 8.5396577 11.5406699 10.9519344 -H 12.0010240 4.3858764 4.3603789 -H 8.8567919 10.7972258 11.5234999 -H 12.6168577 2.9086724 4.3382209 -H 8.2409581 12.2744298 11.5456579 -C 11.1696351 3.1506209 5.7917387 -C 9.6881807 12.0324812 10.0921401 -H 10.4423226 2.8349490 5.2158846 -H 10.4154933 12.3481531 10.6679942 -H 10.8455506 3.8844927 6.3547269 -H 10.0122653 11.2986095 9.5291519 -H 11.4789944 2.4148768 6.3604133 -H 9.3788215 12.7682254 9.5234654 -C 4.7422056 6.3247204 5.9588371 -C 16.1156103 8.8583817 9.9250417 -H 5.4589056 6.5656443 6.5977344 -H 15.3989102 8.6174578 9.2861444 -H 14.8790125 6.3703461 6.4479176 -H 5.9788033 8.8127561 9.4359611 -C 4.7174606 7.3703135 4.8550664 -C 16.1403552 7.8127887 11.0288124 -H 4.1561668 7.0530765 4.1037748 -H 16.7016490 8.1300257 11.7801040 -H 5.6347919 7.5218327 4.5148655 -H 15.2230239 7.6612695 11.3690133 -C 15.1453323 8.6746576 5.4130671 -C 5.7124835 6.5084445 10.4708117 -H 14.1814923 8.5523697 5.6035306 -H 6.6763235 6.6307324 10.2803481 -H 15.5987802 8.8863394 6.2671909 -H 5.2590357 6.2967627 9.6166879 -C 15.3173594 9.8367515 4.4597166 -C 5.5404564 5.3463507 11.4241621 -H 14.8926041 9.6226212 3.6031785 -H 5.9652118 5.5604810 12.2807003 -H 5.2765576 10.0037260 4.3176354 -H 15.5812583 5.1793761 11.5662434 -H 14.8995592 10.6368824 4.8410250 -H 5.9582566 4.5462197 11.0428537 -C 6.0618142 4.7800359 4.4751240 -C 14.7960017 10.4030663 11.4087548 -H 5.8211050 5.3510029 3.7030087 -H 15.0367109 9.8320992 12.1808701 -H 6.1009802 3.8444751 4.1536978 -H 14.7568356 11.3386271 11.7301809 -C 8.4029106 5.3669283 3.7930703 -C 12.4549053 9.8161739 12.0908085 -H 8.0834706 6.1239713 3.2408513 -H 12.7743452 9.0591309 12.6430275 -H 9.2930954 5.6125316 4.1497904 -H 11.5647205 9.5705705 11.7340884 -C 8.5582499 4.1598483 2.9070675 -C 12.2995660 11.0232539 12.9768113 -H 9.2762403 4.3201036 2.2596406 -H 11.5815756 10.8629985 13.6242382 -H 7.7185373 3.9948779 2.4295346 -H 13.1392786 11.1882242 13.4543442 -H 8.7811323 3.3787333 3.4553631 -H 12.0766836 11.8043689 12.4285157 - -Unit cell volume : 2456.4102122 A^3 -Unit cell density : 0.7339341 u/A^3 = 8.2243708 g/cm^3 diff --git a/cell2mol/test/INOVAL/Ref_Cell_INOVAL.cell b/cell2mol/test/INOVAL/Ref_Cell_INOVAL.cell deleted file mode 100644 index 3f6c7d3a5..000000000 Binary files a/cell2mol/test/INOVAL/Ref_Cell_INOVAL.cell and /dev/null differ diff --git a/cell2mol/test/INOVAL/cell2mol.out b/cell2mol/test/INOVAL/cell2mol.out deleted file mode 100644 index 424437432..000000000 --- a/cell2mol/test/INOVAL/cell2mol.out +++ /dev/null @@ -1,461 +0,0 @@ -cell2mol version 2.0 -INITIATING cell object from info path: INOVAL.info -Debug level: 1 -######################################### - GETREFS: Generate reference molecules -######################################### -GETREFS: found 9 reference molecules -GETREFS: ['H2-O-Cl3-Fe', 'H10-C4-O', 'Cl6-Fe2', 'H10-C4-O', 'H2-O-Cl3-Fe', 'H36-C16-N', 'H36-C16-N', 'H36-C16-N', 'H36-C16-N'] -GETREFS: [------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 7 - Formula = H2-O-Cl3-Fe - Has Adjacency Matrix = YES - Number of Ligands = 4 - Number of Metals = 1 ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 15 - Formula = H10-C4-O - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 8 - Formula = Cl6-Fe2 - Has Adjacency Matrix = YES - Number of Ligands = 6 - Number of Metals = 2 ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 15 - Formula = H10-C4-O - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 7 - Formula = H2-O-Cl3-Fe - Has Adjacency Matrix = YES - Number of Ligands = 4 - Number of Metals = 1 ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 53 - Formula = H36-C16-N - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 53 - Formula = H36-C16-N - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 53 - Formula = H36-C16-N - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 53 - Formula = H36-C16-N - Has Adjacency Matrix = YES ---------------------------------------------------- -] -GETREFS: working with H2-O-Cl3-Fe - -LIGAND.SPLIT_LIGAND: splitting H2-O into groups -Entering COORD_CORR_NONHAPTIC: - Coordinating atom label=O with mconnec=1, group index 0 - evaluating coordination with metal Fe - connectivity verified for atom O with ligand index 0 -LIGAND.SPLIT_LIGAND: found groups ['O'] - -LIGAND.SPLIT_LIGAND: splitting Cl into groups -Entering COORD_CORR_NONHAPTIC: - Coordinating atom label=Cl with mconnec=1, group index 0 - evaluating coordination with metal Fe - connectivity verified for atom Cl with ligand index 0 -LIGAND.SPLIT_LIGAND: found groups ['Cl'] - -LIGAND.SPLIT_LIGAND: splitting Cl into groups -Entering COORD_CORR_NONHAPTIC: - Coordinating atom label=Cl with mconnec=1, group index 0 - evaluating coordination with metal Fe - connectivity verified for atom Cl with ligand index 0 -LIGAND.SPLIT_LIGAND: found groups ['Cl'] - -LIGAND.SPLIT_LIGAND: splitting Cl into groups -Entering COORD_CORR_NONHAPTIC: - Coordinating atom label=Cl with mconnec=1, group index 0 - evaluating coordination with metal Fe - connectivity verified for atom Cl with ligand index 0 -LIGAND.SPLIT_LIGAND: found groups ['Cl'] -LIGAND.Get_denticity: final connectivity of ligand H2-O is 1 -LIGAND.Get_denticity: final connectivity of ligand Cl is 1 -LIGAND.Get_denticity: final connectivity of ligand Cl is 1 -LIGAND.Get_denticity: final connectivity of ligand Cl is 1 - -METAL.Get_coord_geometry: Fe -METAL.Get_coord_geometry: coord_nr=4 -DEFINE_coordination_geometry: The most likely geometry is 'Tetrahedral' with deviation value 0.943 -GETREFS: working with H10-C4-O -GETREFS: working with Cl6-Fe2 - -LIGAND.SPLIT_LIGAND: splitting Cl into groups -Entering COORD_CORR_NONHAPTIC: - Coordinating atom label=Cl with mconnec=1, group index 0 - evaluating coordination with metal Fe - connectivity verified for atom Cl with ligand index 0 -LIGAND.SPLIT_LIGAND: found groups ['Cl'] - -LIGAND.SPLIT_LIGAND: splitting Cl into groups -Entering COORD_CORR_NONHAPTIC: - Coordinating atom label=Cl with mconnec=2, group index 0 - evaluating coordination with metal Fe - connectivity verified for atom Cl with ligand index 0 - evaluating coordination with metal Fe - connectivity verified for atom Cl with ligand index 0 -LIGAND.SPLIT_LIGAND: found groups ['Cl'] - -LIGAND.SPLIT_LIGAND: splitting Cl into groups -Entering COORD_CORR_NONHAPTIC: - Coordinating atom label=Cl with mconnec=1, group index 0 - evaluating coordination with metal Fe - connectivity verified for atom Cl with ligand index 0 -LIGAND.SPLIT_LIGAND: found groups ['Cl'] - -LIGAND.SPLIT_LIGAND: splitting Cl into groups -Entering COORD_CORR_NONHAPTIC: - Coordinating atom label=Cl with mconnec=1, group index 0 - evaluating coordination with metal Fe - connectivity verified for atom Cl with ligand index 0 -LIGAND.SPLIT_LIGAND: found groups ['Cl'] - -LIGAND.SPLIT_LIGAND: splitting Cl into groups -Entering COORD_CORR_NONHAPTIC: - Coordinating atom label=Cl with mconnec=2, group index 0 - evaluating coordination with metal Fe - connectivity verified for atom Cl with ligand index 0 - evaluating coordination with metal Fe - connectivity verified for atom Cl with ligand index 0 -LIGAND.SPLIT_LIGAND: found groups ['Cl'] - -LIGAND.SPLIT_LIGAND: splitting Cl into groups -Entering COORD_CORR_NONHAPTIC: - Coordinating atom label=Cl with mconnec=1, group index 0 - evaluating coordination with metal Fe - connectivity verified for atom Cl with ligand index 0 -LIGAND.SPLIT_LIGAND: found groups ['Cl'] -LIGAND.Get_denticity: final connectivity of ligand Cl is 1 -LIGAND.Get_denticity: final connectivity of ligand Cl is 2 -LIGAND.Get_denticity: final connectivity of ligand Cl is 1 -LIGAND.Get_denticity: final connectivity of ligand Cl is 1 -LIGAND.Get_denticity: final connectivity of ligand Cl is 2 -LIGAND.Get_denticity: final connectivity of ligand Cl is 1 - -METAL.Get_coord_geometry: Fe -METAL.Get_coord_geometry: coord_nr=4 -DEFINE_coordination_geometry: The most likely geometry is 'Tetrahedral' with deviation value 0.745 - -METAL.Get_coord_geometry: Fe -METAL.Get_coord_geometry: coord_nr=4 -DEFINE_coordination_geometry: The most likely geometry is 'Tetrahedral' with deviation value 0.745 -GETREFS: working with H10-C4-O -GETREFS: working with H2-O-Cl3-Fe - -LIGAND.SPLIT_LIGAND: splitting H2-O into groups -Entering COORD_CORR_NONHAPTIC: - Coordinating atom label=O with mconnec=1, group index 0 - evaluating coordination with metal Fe - connectivity verified for atom O with ligand index 0 -LIGAND.SPLIT_LIGAND: found groups ['O'] - -LIGAND.SPLIT_LIGAND: splitting Cl into groups -Entering COORD_CORR_NONHAPTIC: - Coordinating atom label=Cl with mconnec=1, group index 0 - evaluating coordination with metal Fe - connectivity verified for atom Cl with ligand index 0 -LIGAND.SPLIT_LIGAND: found groups ['Cl'] - -LIGAND.SPLIT_LIGAND: splitting Cl into groups -Entering COORD_CORR_NONHAPTIC: - Coordinating atom label=Cl with mconnec=1, group index 0 - evaluating coordination with metal Fe - connectivity verified for atom Cl with ligand index 0 -LIGAND.SPLIT_LIGAND: found groups ['Cl'] - -LIGAND.SPLIT_LIGAND: splitting Cl into groups -Entering COORD_CORR_NONHAPTIC: - Coordinating atom label=Cl with mconnec=1, group index 0 - evaluating coordination with metal Fe - connectivity verified for atom Cl with ligand index 0 -LIGAND.SPLIT_LIGAND: found groups ['Cl'] -LIGAND.Get_denticity: final connectivity of ligand H2-O is 1 -LIGAND.Get_denticity: final connectivity of ligand Cl is 1 -LIGAND.Get_denticity: final connectivity of ligand Cl is 1 -LIGAND.Get_denticity: final connectivity of ligand Cl is 1 - -METAL.Get_coord_geometry: Fe -METAL.Get_coord_geometry: coord_nr=4 -DEFINE_coordination_geometry: The most likely geometry is 'Tetrahedral' with deviation value 0.943 -GETREFS: working with H36-C16-N -GETREFS: working with H36-C16-N -GETREFS: working with H36-C16-N -GETREFS: working with H36-C16-N -SAVING cell2mol CELL object to /Users/ycho/cell2mol/cell2mol/test/INOVAL/Ref_Cell_INOVAL.cell -ENTERING cell2mol with debug=1 -CLASSIFY_FRAGMENTS. 39 Blocks sorted as (Molec, Frag, H): 1 22 16 - -############################################## -FRAG_RECONSTRUCT. 22 molecules submitted to SEQUENTIAL with Heavy -############################################## -FRAG_RECONSTRUCT. 0 molecules and 8 fragments out of SEQUENTIAL with Heavy -FRAG_RECONSTRUCT. 24 fragments submitted to sequential with All -FINISHED succesfully -finalmols=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 15 - Formula = H10-C4-O - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 7 - Formula = H2-O-Cl3-Fe - Has Adjacency Matrix = YES - Number of Ligands = 4 - Number of Metals = 1 ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 15 - Formula = H10-C4-O - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 7 - Formula = H2-O-Cl3-Fe - Has Adjacency Matrix = YES - Number of Ligands = 4 - Number of Metals = 1 ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 53 - Formula = H36-C16-N - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 53 - Formula = H36-C16-N - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 53 - Formula = H36-C16-N - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 53 - Formula = H36-C16-N - Has Adjacency Matrix = YES ---------------------------------------------------- -] -remfrag=[] -FRAG_RECONSTRUCT. No remaining Molecules after Hydrogen reconstruction - -Cell Reconstruction Finished Normally. Total execution time: 5.65 seconds -Getting unique species in cell -6 Species (Metal or Ligand or Molecules) to Characterize -CREATED EMPTY PROTONATION ------------- Cell2mol Protonation ---------------- - Status = True - Labels = ['O', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] - Type = Empty - Atoms added in positions = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] - Atoms blocked (no atoms added) = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] ---------------------------------------------------- - -CREATED EMPTY PROTONATION ------------- Cell2mol Protonation ---------------- - Status = True - Labels = ['N', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] - Type = Empty - Atoms added in positions = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] - Atoms blocked (no atoms added) = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] ---------------------------------------------------- - - -FINAL Charge Distribution: [[-1, -1, -1, -1, -1, -1, 2, 2, 0, 0, -1, -1, -1, 2, 0, 0, -1, -1, -1, 2, 1, 1, 1, 1]] - -######################################### -Assigning Charges and Preparing Molecules -######################################### -CREATED EMPTY PROTONATION ------------- Cell2mol Protonation ---------------- - Status = True - Labels = ['O', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] - Type = Empty - Atoms added in positions = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] - Atoms blocked (no atoms added) = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] ---------------------------------------------------- - -CREATED EMPTY PROTONATION ------------- Cell2mol Protonation ---------------- - Status = True - Labels = ['O', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] - Type = Empty - Atoms added in positions = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] - Atoms blocked (no atoms added) = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] ---------------------------------------------------- - -CREATED EMPTY PROTONATION ------------- Cell2mol Protonation ---------------- - Status = True - Labels = ['N', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] - Type = Empty - Atoms added in positions = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] - Atoms blocked (no atoms added) = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] ---------------------------------------------------- - -CREATED EMPTY PROTONATION ------------- Cell2mol Protonation ---------------- - Status = True - Labels = ['N', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] - Type = Empty - Atoms added in positions = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] - Atoms blocked (no atoms added) = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] ---------------------------------------------------- - -CREATED EMPTY PROTONATION ------------- Cell2mol Protonation ---------------- - Status = True - Labels = ['N', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] - Type = Empty - Atoms added in positions = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] - Atoms blocked (no atoms added) = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] ---------------------------------------------------- - -CREATED EMPTY PROTONATION ------------- Cell2mol Protonation ---------------- - Status = True - Labels = ['N', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] - Type = Empty - Atoms added in positions = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] - Atoms blocked (no atoms added) = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] ---------------------------------------------------- - -CELL.CREATE_BONDS: Creating Bonds for molecule Cl6-Fe2 -CREATE_bonds_specie: specie.formula='Cl', specie.subtype='ligand' - NO BONDS CREATED for Cl due to no bonds in ligand RDKit object -CREATE_bonds_specie: specie.formula='Cl', specie.subtype='ligand' - NO BONDS CREATED for Cl due to no bonds in ligand RDKit object -CREATE_bonds_specie: specie.formula='Cl', specie.subtype='ligand' - NO BONDS CREATED for Cl due to no bonds in ligand RDKit object -CREATE_bonds_specie: specie.formula='Cl', specie.subtype='ligand' - NO BONDS CREATED for Cl due to no bonds in ligand RDKit object -CREATE_bonds_specie: specie.formula='Cl', specie.subtype='ligand' - NO BONDS CREATED for Cl due to no bonds in ligand RDKit object -CREATE_bonds_specie: specie.formula='Cl', specie.subtype='ligand' - NO BONDS CREATED for Cl due to no bonds in ligand RDKit object -CELL.CREATE_BONDS: Creating Metal-Metal Bonds for molecule Cl6-Fe2 -CELL.CREATE_BONDS: Creating Bonds for molecule H10-C4-O -CREATE_bonds_specie: specie.formula='H10-C4-O', specie.subtype='molecule' -CELL.CREATE_BONDS: Creating Bonds for molecule H2-O-Cl3-Fe -CREATE_bonds_specie: specie.formula='H2-O', specie.subtype='ligand' -CREATE_bonds_specie: specie.formula='Cl', specie.subtype='ligand' - NO BONDS CREATED for Cl due to no bonds in ligand RDKit object -CREATE_bonds_specie: specie.formula='Cl', specie.subtype='ligand' - NO BONDS CREATED for Cl due to no bonds in ligand RDKit object -CREATE_bonds_specie: specie.formula='Cl', specie.subtype='ligand' - NO BONDS CREATED for Cl due to no bonds in ligand RDKit object -CELL.CREATE_BONDS: Creating Bonds for molecule H10-C4-O -CREATE_bonds_specie: specie.formula='H10-C4-O', specie.subtype='molecule' -CELL.CREATE_BONDS: Creating Bonds for molecule H2-O-Cl3-Fe -CREATE_bonds_specie: specie.formula='H2-O', specie.subtype='ligand' -CREATE_bonds_specie: specie.formula='Cl', specie.subtype='ligand' - NO BONDS CREATED for Cl due to no bonds in ligand RDKit object -CREATE_bonds_specie: specie.formula='Cl', specie.subtype='ligand' - NO BONDS CREATED for Cl due to no bonds in ligand RDKit object -CREATE_bonds_specie: specie.formula='Cl', specie.subtype='ligand' - NO BONDS CREATED for Cl due to no bonds in ligand RDKit object -CELL.CREATE_BONDS: Creating Bonds for molecule H36-C16-N -CREATE_bonds_specie: specie.formula='H36-C16-N', specie.subtype='molecule' -CELL.CREATE_BONDS: Creating Bonds for molecule H36-C16-N -CREATE_bonds_specie: specie.formula='H36-C16-N', specie.subtype='molecule' -CELL.CREATE_BONDS: Creating Bonds for molecule H36-C16-N -CREATE_bonds_specie: specie.formula='H36-C16-N', specie.subtype='molecule' -CELL.CREATE_BONDS: Creating Bonds for molecule H36-C16-N -CREATE_bonds_specie: specie.formula='H36-C16-N', specie.subtype='molecule' - -Total execution time for Charge Assignment: 0.21 seconds -Charge Assignment successfully finished. - -######################################### - Assigning Spin multiplicity -######################################### -ASSIGN_SPIN_METAL: Spin multiplicity of the metal Fe is predicted as 5 using Random Forest model -GET_SPIN: Spin multiplicity of the metal Fe is assigned as 5 -ASSIGN_SPIN_METAL: Spin multiplicity of the metal Fe is predicted as 5 using Random Forest model -GET_SPIN: Spin multiplicity of the metal Fe is assigned as 5 -GET_SPIN: Spin multiplicity of the complex Cl6-Fe2 is assigned as None - -GET_SPIN: Spin multiplicity of the complex H10-C4-O is assigned as 1 - -ASSIGN_SPIN_METAL: Spin multiplicity of the metal Fe is predicted as 5 using Random Forest model -GET_SPIN: Spin multiplicity of the metal Fe is assigned as 5 -GET_SPIN: Spin multiplicity of the complex H2-O-Cl3-Fe is assigned as 5 - -GET_SPIN: Spin multiplicity of the complex H10-C4-O is assigned as 1 - -ASSIGN_SPIN_METAL: Spin multiplicity of the metal Fe is predicted as 5 using Random Forest model -GET_SPIN: Spin multiplicity of the metal Fe is assigned as 5 -GET_SPIN: Spin multiplicity of the complex H2-O-Cl3-Fe is assigned as 5 - -GET_SPIN: Spin multiplicity of the complex H36-C16-N is assigned as 1 - -GET_SPIN: Spin multiplicity of the complex H36-C16-N is assigned as 1 - -GET_SPIN: Spin multiplicity of the complex H36-C16-N is assigned as 1 - -GET_SPIN: Spin multiplicity of the complex H36-C16-N is assigned as 1 - - -Total execution time for Spin Assignment: 0.49 seconds -SAVING cell2mol CELL object to /Users/ycho/cell2mol/cell2mol/test/INOVAL/Cell_INOVAL.cell diff --git a/cell2mol/test/INOVAL/error_0.out b/cell2mol/test/INOVAL/error_0.out deleted file mode 100644 index c671371b9..000000000 --- a/cell2mol/test/INOVAL/error_0.out +++ /dev/null @@ -1,2 +0,0 @@ -The Warning type list is : [False, False, False, False, False, False, False, False, False] -No Warnings! diff --git a/cell2mol/test/INOVAL/error_cif2cell.txt b/cell2mol/test/INOVAL/error_cif2cell.txt deleted file mode 100644 index e69de29bb..000000000 diff --git a/cell2mol/test/INOVAL/output.out b/cell2mol/test/INOVAL/output.out deleted file mode 100644 index ad9779e3e..000000000 --- a/cell2mol/test/INOVAL/output.out +++ /dev/null @@ -1,2747 +0,0 @@ -running cell2mol with debug=2 -[Refcode] INOVAL -===================================== step 1 : Cell reconstruction ===================================== - - -GETREFS: sending listofreferences with 1.3 1.0 -lig.formula='H2-O' g.atlist=[0] list_of_coord_atoms=['O'] g.hapttype=[] g.hapticity=False - Atom 0 : O Metal 0 : Fe distance : 2.058 thres : 2.574 ->>> metal-coordinating atoms O distance : 2.058 thres : 2.574 Metal 0 : Fe ['Cl', 'Cl', 'Cl', 'O'] - -lig.formula='Cl' g.atlist=[0] list_of_coord_atoms=['Cl'] g.hapttype=[] g.hapticity=False - Atom 0 : Cl Metal 0 : Fe distance : 2.283 thres : 3.042 ->>> metal-coordinating atoms Cl distance : 2.283 thres : 3.042 Metal 0 : Fe ['Cl', 'Cl', 'Cl', 'O'] - -lig.formula='Cl' g.atlist=[0] list_of_coord_atoms=['Cl'] g.hapttype=[] g.hapticity=False - Atom 0 : Cl Metal 0 : Fe distance : 2.314 thres : 3.042 ->>> metal-coordinating atoms Cl distance : 2.314 thres : 3.042 Metal 0 : Fe ['Cl', 'Cl', 'Cl', 'O'] - -lig.formula='Cl' g.atlist=[0] list_of_coord_atoms=['Cl'] g.hapttype=[] g.hapticity=False - Atom 0 : Cl Metal 0 : Fe distance : 2.277 thres : 3.042 ->>> metal-coordinating atoms Cl distance : 2.277 thres : 3.042 Metal 0 : Fe ['Cl', 'Cl', 'Cl', 'O'] - -###### met in ref.metalist ###### -met.label='Fe' met.mconnec=array([4]) met.totmconnec=4 -met.coord_sphere=['Cl', 'Cl', 'Cl', 'O'] -met.coordinating_atoms=['Cl', 'Cl', 'Cl', 'O'] -Molecule : H2-O-Cl3-Fe -Metal : Fe Coordinating atoms : ['Cl', 'Cl', 'Cl', 'O'] -Coordination number : 4 {'Tetrahedral': 0.943, 'Square planar': 28.56, 'Seesaw': 6.482} -The most likely geometry : 'Tetrahedral' with deviation value 0.943 (hapticity : False) - -Potential hapticity=False for molecule H2-O-Cl3-Fe -Verifying Connectivity for Lig in Ref molec 3, H2-O, 1 1 -Verifying Connectivity for Lig in Ref molec 1, Cl, 1 1 -Verifying Connectivity for Lig in Ref molec 1, Cl, 1 1 -Verifying Connectivity for Lig in Ref molec 1, Cl, 1 1 -lig.formula='H2-O' g.atlist=[0] list_of_coord_atoms=['O'] g.hapttype=[] g.hapticity=False - Atom 0 : O Metal 0 : Fe distance : 2.058 thres : 2.574 ->>> metal-coordinating atoms O distance : 2.058 thres : 2.574 Metal 0 : Fe ['Cl', 'Cl', 'Cl', 'O'] - -lig.formula='Cl' g.atlist=[0] list_of_coord_atoms=['Cl'] g.hapttype=[] g.hapticity=False - Atom 0 : Cl Metal 0 : Fe distance : 2.283 thres : 3.042 ->>> metal-coordinating atoms Cl distance : 2.283 thres : 3.042 Metal 0 : Fe ['Cl', 'Cl', 'Cl', 'O'] - -lig.formula='Cl' g.atlist=[0] list_of_coord_atoms=['Cl'] g.hapttype=[] g.hapticity=False - Atom 0 : Cl Metal 0 : Fe distance : 2.314 thres : 3.042 ->>> metal-coordinating atoms Cl distance : 2.314 thres : 3.042 Metal 0 : Fe ['Cl', 'Cl', 'Cl', 'O'] - -lig.formula='Cl' g.atlist=[0] list_of_coord_atoms=['Cl'] g.hapttype=[] g.hapticity=False - Atom 0 : Cl Metal 0 : Fe distance : 2.277 thres : 3.042 ->>> metal-coordinating atoms Cl distance : 2.277 thres : 3.042 Metal 0 : Fe ['Cl', 'Cl', 'Cl', 'O'] - -###### met in ref.metalist ###### -met.label='Fe' met.mconnec=array([4]) met.totmconnec=4 -met.coord_sphere=['Cl', 'Cl', 'Cl', 'O'] -met.coordinating_atoms=['Cl', 'Cl', 'Cl', 'O'] -Molecule : H2-O-Cl3-Fe -Metal : Fe Coordinating atoms : ['Cl', 'Cl', 'Cl', 'O'] -Coordination number : 4 {'Tetrahedral': 0.943, 'Square planar': 28.56, 'Seesaw': 6.482} -The most likely geometry : 'Tetrahedral' with deviation value 0.943 (hapticity : False) - -Potential hapticity=False for molecule H2-O-Cl3-Fe -Verifying Connectivity for Lig in Ref molec 3, H2-O, 1 1 -Verifying Connectivity for Lig in Ref molec 1, Cl, 1 1 -Verifying Connectivity for Lig in Ref molec 1, Cl, 1 1 -Verifying Connectivity for Lig in Ref molec 1, Cl, 1 1 -lig.formula='Cl' g.atlist=[0] list_of_coord_atoms=['Cl'] g.hapttype=[] g.hapticity=False - Atom 0 : Cl Metal 1 : Fe distance : 2.266 thres : 3.042 ->>> metal-coordinating atoms Cl distance : 2.266 thres : 3.042 Metal 1 : Fe ['Cl', 'Cl', 'Cl', 'Cl'] - -lig.formula='Cl' g.atlist=[0] list_of_coord_atoms=['Cl'] g.hapttype=[] g.hapticity=False - Atom 0 : Cl Metal 1 : Fe distance : 2.383 thres : 3.042 ->>> metal-coordinating atoms Cl distance : 2.383 thres : 3.042 Metal 1 : Fe ['Cl', 'Cl', 'Cl', 'Cl'] - -lig.formula='Cl' g.atlist=[0] list_of_coord_atoms=['Cl'] g.hapttype=[] g.hapticity=False - Atom 0 : Cl Metal 1 : Fe distance : 2.251 thres : 3.042 ->>> metal-coordinating atoms Cl distance : 2.251 thres : 3.042 Metal 1 : Fe ['Cl', 'Cl', 'Cl', 'Cl'] - -lig.formula='Cl' g.atlist=[0] list_of_coord_atoms=['Cl'] g.hapttype=[] g.hapticity=False - Atom 0 : Cl Metal 0 : Fe distance : 2.266 thres : 3.042 ->>> metal-coordinating atoms Cl distance : 2.266 thres : 3.042 Metal 0 : Fe ['Cl', 'Cl', 'Cl', 'Cl'] - -lig.formula='Cl' g.atlist=[0] list_of_coord_atoms=['Cl'] g.hapttype=[] g.hapticity=False - Atom 0 : Cl Metal 0 : Fe distance : 2.383 thres : 3.042 ->>> metal-coordinating atoms Cl distance : 2.383 thres : 3.042 Metal 0 : Fe ['Cl', 'Cl', 'Cl', 'Cl'] - -lig.formula='Cl' g.atlist=[0] list_of_coord_atoms=['Cl'] g.hapttype=[] g.hapticity=False - Atom 0 : Cl Metal 0 : Fe distance : 2.251 thres : 3.042 ->>> metal-coordinating atoms Cl distance : 2.251 thres : 3.042 Metal 0 : Fe ['Cl', 'Cl', 'Cl', 'Cl'] - -###### met in ref.metalist ###### -met.label='Fe' met.mconnec=array([4]) met.totmconnec=4 -met.coord_sphere=['Cl', 'Cl', 'Cl', 'Cl'] -met.coordinating_atoms=['Cl', 'Cl', 'Cl', 'Cl'] -met.label='Fe' met.mconnec=array([4]) met.totmconnec=4 -met.coord_sphere=['Cl', 'Cl', 'Cl', 'Cl'] -met.coordinating_atoms=['Cl', 'Cl', 'Cl', 'Cl'] -Molecule : Cl6-Fe2 -Metal : Fe Coordinating atoms : ['Cl', 'Cl', 'Cl', 'Cl'] -Coordination number : 4 {'Tetrahedral': 0.745, 'Square planar': 33.032, 'Seesaw': 6.486} -The most likely geometry : 'Tetrahedral' with deviation value 0.745 (hapticity : False) - -Molecule : Cl6-Fe2 -Metal : Fe Coordinating atoms : ['Cl', 'Cl', 'Cl', 'Cl'] -Coordination number : 4 {'Tetrahedral': 0.745, 'Square planar': 33.032, 'Seesaw': 6.486} -The most likely geometry : 'Tetrahedral' with deviation value 0.745 (hapticity : False) - -Potential hapticity=False for molecule Cl6-Fe2 -Verifying Connectivity for Lig in Ref molec 1, Cl, 1 1 -Verifying Connectivity for Lig in Ref molec 1, Cl, 2 2 -Verifying Connectivity for Lig in Ref molec 1, Cl, 1 1 -Verifying Connectivity for Lig in Ref molec 1, Cl, 1 1 -Verifying Connectivity for Lig in Ref molec 1, Cl, 2 2 -Verifying Connectivity for Lig in Ref molec 1, Cl, 1 1 -valid_list_of_references=True Warning=False - -################## -Checking Missing H -################## -Not a Single Molecule has Missing H atoms (apparently) -H2-O-Cl3-Fe found as reference -H2-O-Cl3-Fe found as reference -H10-C4-O found as reference -H36-C16-N found as reference -Cl6-Fe2 found as reference -H10-C4-O found as reference -H36-C16-N found as reference -H36-C16-N found as reference -H36-C16-N found as reference -39 Blocks sorted for reconstruction as (Molec, Frag, H): 1 22 16 -With a total of 264 atoms - -############################################## -22 molecules submitted to SEQUENTIAL with Heavy -############################################## -Entered sequential with 22 fragments to reconstruct -Found 22 and 0 Heavy and Hydrogen fragments, respectively - -Fragments to allocate this iteration: 0 1 out of 21 21 -SEQUENTIAL Heavy iteration 1 with 22 and 22 Remaining in each list -SEQUENTIAL Heavy sending ['Fe', 'Cl', 'Cl', 'Cl', 'O', 'H'] and ['Fe', 'Cl', 'Cl', 'Cl', 'O', 'H'] to combine - -Fragments to allocate this iteration: 0 2 out of 21 21 -SEQUENTIAL Heavy iteration 2 with 22 and 22 Remaining in each list -SEQUENTIAL Heavy sending ['Fe', 'Cl', 'Cl', 'Cl', 'O', 'H'] and ['C', 'H', 'H', 'H'] to combine - -Fragments to allocate this iteration: 0 3 out of 21 21 -SEQUENTIAL Heavy iteration 3 with 22 and 22 Remaining in each list -SEQUENTIAL Heavy sending ['Fe', 'Cl', 'Cl', 'Cl', 'O', 'H'] and ['C', 'H', 'H', 'H'] to combine - -Fragments to allocate this iteration: 0 4 out of 21 21 -SEQUENTIAL Heavy iteration 4 with 22 and 22 Remaining in each list -SEQUENTIAL Heavy sending ['Fe', 'Cl', 'Cl', 'Cl', 'O', 'H'] and ['C', 'H', 'H'] to combine - -Fragments to allocate this iteration: 0 5 out of 21 21 -SEQUENTIAL Heavy iteration 5 with 22 and 22 Remaining in each list -SEQUENTIAL Heavy sending ['Fe', 'Cl', 'Cl', 'Cl', 'O', 'H'] and ['C', 'H', 'H'] to combine - -Fragments to allocate this iteration: 0 6 out of 21 21 -SEQUENTIAL Heavy iteration 6 with 22 and 22 Remaining in each list -SEQUENTIAL Heavy sending ['Fe', 'Cl', 'Cl', 'Cl', 'O', 'H'] and ['C', 'H', 'H'] to combine - -Fragments to allocate this iteration: 0 7 out of 21 21 -SEQUENTIAL Heavy iteration 7 with 22 and 22 Remaining in each list -SEQUENTIAL Heavy sending ['Fe', 'Cl', 'Cl', 'Cl', 'O', 'H'] and ['C', 'H', 'H'] to combine - -Fragments to allocate this iteration: 0 8 out of 21 21 -SEQUENTIAL Heavy iteration 8 with 22 and 22 Remaining in each list -SEQUENTIAL Heavy sending ['Fe', 'Cl', 'Cl', 'Cl', 'O', 'H'] and ['C', 'H', 'H'] to combine - -Fragments to allocate this iteration: 0 9 out of 21 21 -SEQUENTIAL Heavy iteration 9 with 22 and 22 Remaining in each list -SEQUENTIAL Heavy sending ['Fe', 'Cl', 'Cl', 'Cl', 'O', 'H'] and ['C', 'H', 'H'] to combine - -Fragments to allocate this iteration: 0 10 out of 21 21 -SEQUENTIAL Heavy iteration 10 with 22 and 22 Remaining in each list -SEQUENTIAL Heavy sending ['Fe', 'Cl', 'Cl', 'Cl', 'O', 'H'] and ['C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] to combine - -Fragments to allocate this iteration: 0 11 out of 21 21 -SEQUENTIAL Heavy iteration 11 with 22 and 22 Remaining in each list -SEQUENTIAL Heavy sending ['Fe', 'Cl', 'Cl', 'Cl', 'O', 'H'] and ['C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] to combine - -Fragments to allocate this iteration: 0 12 out of 21 21 -SEQUENTIAL Heavy iteration 12 with 22 and 22 Remaining in each list -SEQUENTIAL Heavy sending ['Fe', 'Cl', 'Cl', 'Cl', 'O', 'H'] and ['C', 'H', 'H', 'C', 'H', 'H'] to combine - -Fragments to allocate this iteration: 0 13 out of 21 21 -SEQUENTIAL Heavy iteration 13 with 22 and 22 Remaining in each list -SEQUENTIAL Heavy sending ['Fe', 'Cl', 'Cl', 'Cl', 'O', 'H'] and ['C', 'H', 'H', 'C', 'H', 'H'] to combine - -Fragments to allocate this iteration: 0 14 out of 21 21 -SEQUENTIAL Heavy iteration 14 with 22 and 22 Remaining in each list -SEQUENTIAL Heavy sending ['Fe', 'Cl', 'Cl', 'Cl', 'O', 'H'] and ['C', 'H', 'H', 'H'] to combine - -Fragments to allocate this iteration: 0 15 out of 21 21 -SEQUENTIAL Heavy iteration 15 with 22 and 22 Remaining in each list -SEQUENTIAL Heavy sending ['Fe', 'Cl', 'Cl', 'Cl', 'O', 'H'] and ['C', 'H', 'H', 'H'] to combine - -Fragments to allocate this iteration: 0 16 out of 21 21 -SEQUENTIAL Heavy SKIPPED 6 and 49 - -Fragments to allocate this iteration: 0 17 out of 21 21 -SEQUENTIAL Heavy SKIPPED 6 and 49 - -Fragments to allocate this iteration: 0 18 out of 21 21 -SEQUENTIAL Heavy iteration 18 with 22 and 22 Remaining in each list -SEQUENTIAL Heavy sending ['Fe', 'Cl', 'Cl', 'Cl', 'O', 'H'] and ['N', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] to combine - -Fragments to allocate this iteration: 0 19 out of 21 21 -SEQUENTIAL Heavy iteration 19 with 22 and 22 Remaining in each list -SEQUENTIAL Heavy sending ['Fe', 'Cl', 'Cl', 'Cl', 'O', 'H'] and ['N', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] to combine - -Fragments to allocate this iteration: 0 20 out of 21 21 -SEQUENTIAL Heavy iteration 20 with 22 and 22 Remaining in each list -SEQUENTIAL Heavy sending ['Fe', 'Cl', 'Cl', 'Cl', 'O', 'H'] and ['O'] to combine - -Fragments to allocate this iteration: 0 21 out of 21 21 -SEQUENTIAL Heavy iteration 21 with 22 and 22 Remaining in each list -SEQUENTIAL Heavy sending ['Fe', 'Cl', 'Cl', 'Cl', 'O', 'H'] and ['O'] to combine - -Fragments to allocate this iteration: 1 0 out of 21 21 -SEQUENTIAL Heavy iteration 22 with 22 and 22 Remaining in each list -SEQUENTIAL Heavy sending ['O'] and ['Fe', 'Cl', 'Cl', 'Cl', 'O', 'H'] to combine - -Fragments to allocate this iteration: 1 2 out of 21 21 -SEQUENTIAL Heavy iteration 23 with 22 and 22 Remaining in each list -SEQUENTIAL Heavy sending ['Fe', 'Cl', 'Cl', 'Cl', 'O', 'H'] and ['O'] to combine - -Fragments to allocate this iteration: 1 3 out of 21 21 -SEQUENTIAL Heavy iteration 24 with 22 and 22 Remaining in each list -SEQUENTIAL Heavy sending ['O'] and ['N', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] to combine - -Fragments to allocate this iteration: 1 4 out of 21 21 -SEQUENTIAL Heavy SKIPPED 31 and 31 - -Fragments to allocate this iteration: 1 5 out of 21 21 -SEQUENTIAL Heavy iteration 26 with 22 and 22 Remaining in each list -SEQUENTIAL Heavy sending ['N', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] and ['C', 'H', 'H', 'H'] to combine - -Fragments to allocate this iteration: 1 6 out of 21 21 -SEQUENTIAL Heavy iteration 27 with 22 and 22 Remaining in each list -SEQUENTIAL Heavy sending ['C', 'H', 'H', 'H'] and ['C', 'H', 'H', 'H'] to combine - -Fragments to allocate this iteration: 1 7 out of 21 21 -SEQUENTIAL Heavy iteration 28 with 22 and 22 Remaining in each list -SEQUENTIAL Heavy sending ['C', 'H', 'H', 'H'] and ['C', 'H', 'H', 'C', 'H', 'H'] to combine - -Fragments to allocate this iteration: 1 8 out of 21 21 -SEQUENTIAL Heavy iteration 29 with 22 and 22 Remaining in each list -SEQUENTIAL Heavy sending ['C', 'H', 'H', 'C', 'H', 'H'] and ['C', 'H', 'H', 'C', 'H', 'H'] to combine - -Fragments to allocate this iteration: 1 9 out of 21 21 -SEQUENTIAL Heavy iteration 30 with 22 and 22 Remaining in each list -SEQUENTIAL Heavy sending ['C', 'H', 'H', 'C', 'H', 'H'] and ['C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] to combine - -Fragments to allocate this iteration: 1 10 out of 21 21 -SEQUENTIAL Heavy iteration 31 with 22 and 22 Remaining in each list -SEQUENTIAL Heavy sending ['C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] and ['C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] to combine - -Fragments to allocate this iteration: 1 11 out of 21 21 -SEQUENTIAL Heavy iteration 32 with 22 and 22 Remaining in each list -SEQUENTIAL Heavy sending ['C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] and ['C', 'H', 'H'] to combine - -Fragments to allocate this iteration: 1 12 out of 21 21 -SEQUENTIAL Heavy iteration 33 with 22 and 22 Remaining in each list -SEQUENTIAL Heavy sending ['C', 'H', 'H'] and ['C', 'H', 'H'] to combine - -Fragments to allocate this iteration: 1 13 out of 21 21 -SEQUENTIAL Heavy iteration 34 with 22 and 22 Remaining in each list -SEQUENTIAL Heavy sending ['C', 'H', 'H'] and ['C', 'H', 'H'] to combine - -Fragments to allocate this iteration: 1 14 out of 21 21 -SEQUENTIAL Heavy iteration 35 with 22 and 22 Remaining in each list -SEQUENTIAL Heavy sending ['C', 'H', 'H'] and ['C', 'H', 'H'] to combine - -Fragments to allocate this iteration: 1 15 out of 21 21 -SEQUENTIAL Heavy iteration 36 with 22 and 22 Remaining in each list -SEQUENTIAL Heavy sending ['C', 'H', 'H'] and ['C', 'H', 'H'] to combine - -Fragments to allocate this iteration: 1 16 out of 21 21 -SEQUENTIAL Heavy iteration 37 with 22 and 22 Remaining in each list -SEQUENTIAL Heavy sending ['C', 'H', 'H'] and ['C', 'H', 'H'] to combine - -Fragments to allocate this iteration: 1 17 out of 21 21 -SEQUENTIAL Heavy iteration 38 with 22 and 22 Remaining in each list -SEQUENTIAL Heavy sending ['C', 'H', 'H'] and ['C', 'H', 'H', 'H'] to combine - -Fragments to allocate this iteration: 1 18 out of 21 21 -SEQUENTIAL Heavy iteration 39 with 22 and 22 Remaining in each list -SEQUENTIAL Heavy sending ['C', 'H', 'H', 'H'] and ['C', 'H', 'H', 'H'] to combine - -Fragments to allocate this iteration: 1 19 out of 21 21 -SEQUENTIAL Heavy iteration 40 with 22 and 22 Remaining in each list -SEQUENTIAL Heavy sending ['C', 'H', 'H', 'H'] and ['Fe', 'Cl', 'Cl', 'Cl', 'O', 'H'] to combine - -Fragments to allocate this iteration: 1 20 out of 21 21 -SEQUENTIAL Heavy SKIPPED 6 and 49 - -Fragments to allocate this iteration: 1 21 out of 21 21 -SEQUENTIAL Heavy SKIPPED 6 and 49 - -Fragments to allocate this iteration: 2 0 out of 21 21 -SEQUENTIAL Heavy iteration 43 with 22 and 22 Remaining in each list -SEQUENTIAL Heavy sending ['C', 'H', 'H', 'H'] and ['C', 'H', 'H', 'H'] to combine - -Fragments to allocate this iteration: 2 1 out of 21 21 -SEQUENTIAL Heavy iteration 44 with 22 and 22 Remaining in each list -SEQUENTIAL Heavy sending ['Fe', 'Cl', 'Cl', 'Cl', 'O', 'H'] and ['C', 'H', 'H', 'H'] to combine - -Fragments to allocate this iteration: 2 3 out of 21 21 -SEQUENTIAL Heavy iteration 45 with 22 and 22 Remaining in each list -SEQUENTIAL Heavy sending ['C', 'H', 'H', 'H'] and ['C', 'H', 'H'] to combine - -Fragments to allocate this iteration: 2 4 out of 21 21 -SEQUENTIAL Heavy iteration 46 with 22 and 22 Remaining in each list -SEQUENTIAL Heavy sending ['Fe', 'Cl', 'Cl', 'Cl', 'O', 'H'] and ['C', 'H', 'H'] to combine - -Fragments to allocate this iteration: 2 5 out of 21 21 -SEQUENTIAL Heavy iteration 47 with 22 and 22 Remaining in each list -SEQUENTIAL Heavy sending ['C', 'H', 'H', 'H'] and ['C', 'H', 'H'] to combine - -Fragments to allocate this iteration: 2 6 out of 21 21 -SEQUENTIAL Heavy iteration 48 with 22 and 22 Remaining in each list -SEQUENTIAL Heavy sending ['Fe', 'Cl', 'Cl', 'Cl', 'O', 'H'] and ['C', 'H', 'H'] to combine - -Fragments to allocate this iteration: 2 7 out of 21 21 -SEQUENTIAL Heavy iteration 49 with 22 and 22 Remaining in each list -SEQUENTIAL Heavy sending ['C', 'H', 'H', 'H'] and ['C', 'H', 'H'] to combine - -Fragments to allocate this iteration: 2 8 out of 21 21 -SEQUENTIAL Heavy iteration 50 with 22 and 22 Remaining in each list -SEQUENTIAL Heavy sending ['Fe', 'Cl', 'Cl', 'Cl', 'O', 'H'] and ['C', 'H', 'H'] to combine - -Fragments to allocate this iteration: 2 9 out of 21 21 -SEQUENTIAL Heavy iteration 51 with 22 and 22 Remaining in each list -SEQUENTIAL Heavy sending ['C', 'H', 'H', 'H'] and ['C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] to combine - -Fragments to allocate this iteration: 2 10 out of 21 21 -SEQUENTIAL Heavy iteration 52 with 22 and 22 Remaining in each list -SEQUENTIAL Heavy sending ['Fe', 'Cl', 'Cl', 'Cl', 'O', 'H'] and ['C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] to combine - -Fragments to allocate this iteration: 2 11 out of 21 21 -SEQUENTIAL Heavy iteration 53 with 22 and 22 Remaining in each list -SEQUENTIAL Heavy sending ['C', 'H', 'H', 'H'] and ['C', 'H', 'H', 'C', 'H', 'H'] to combine - -Fragments to allocate this iteration: 2 12 out of 21 21 -SEQUENTIAL Heavy iteration 54 with 22 and 22 Remaining in each list -SEQUENTIAL Heavy sending ['Fe', 'Cl', 'Cl', 'Cl', 'O', 'H'] and ['C', 'H', 'H', 'C', 'H', 'H'] to combine - -Fragments to allocate this iteration: 2 13 out of 21 21 -SEQUENTIAL Heavy iteration 55 with 22 and 22 Remaining in each list -SEQUENTIAL Heavy sending ['C', 'H', 'H', 'H'] and ['C', 'H', 'H', 'H'] to combine - -Fragments to allocate this iteration: 2 14 out of 21 21 -SEQUENTIAL Heavy iteration 56 with 22 and 22 Remaining in each list -SEQUENTIAL Heavy sending ['Fe', 'Cl', 'Cl', 'Cl', 'O', 'H'] and ['C', 'H', 'H', 'H'] to combine - -Fragments to allocate this iteration: 2 15 out of 21 21 -SEQUENTIAL Heavy iteration 57 with 22 and 22 Remaining in each list -SEQUENTIAL Heavy sending ['C', 'H', 'H', 'H'] and ['N', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] to combine - -Fragments to allocate this iteration: 2 16 out of 21 21 -SEQUENTIAL Heavy iteration 58 with 22 and 22 Remaining in each list -SEQUENTIAL Heavy sending ['Fe', 'Cl', 'Cl', 'Cl', 'O', 'H'] and ['O'] to combine - -Fragments to allocate this iteration: 2 17 out of 21 21 -SEQUENTIAL Heavy iteration 59 with 22 and 22 Remaining in each list -SEQUENTIAL Heavy sending ['C', 'H', 'H', 'H'] and ['Fe', 'Cl', 'Cl', 'Cl', 'O', 'H'] to combine - -Fragments to allocate this iteration: 2 18 out of 21 21 -SEQUENTIAL Heavy iteration 60 with 22 and 22 Remaining in each list -SEQUENTIAL Heavy sending ['Fe', 'Cl', 'Cl', 'Cl', 'O', 'H'] and ['O'] to combine - -Fragments to allocate this iteration: 2 19 out of 21 21 -SEQUENTIAL Heavy iteration 61 with 22 and 22 Remaining in each list -SEQUENTIAL Heavy sending ['C', 'H', 'H', 'H'] and ['N', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] to combine - -Fragments to allocate this iteration: 2 20 out of 21 21 -SEQUENTIAL Heavy SKIPPED 6 and 49 - -Fragments to allocate this iteration: 2 21 out of 21 21 -SEQUENTIAL Heavy SKIPPED 6 and 49 - -Fragments to allocate this iteration: 3 0 out of 21 21 -SEQUENTIAL Heavy iteration 64 with 22 and 22 Remaining in each list -SEQUENTIAL Heavy sending ['O'] and ['C', 'H', 'H', 'H'] to combine - -Fragments to allocate this iteration: 3 1 out of 21 21 -SEQUENTIAL Heavy iteration 65 with 22 and 22 Remaining in each list -SEQUENTIAL Heavy sending ['Fe', 'Cl', 'Cl', 'Cl', 'O', 'H'] and ['C', 'H', 'H', 'H'] to combine - -Fragments to allocate this iteration: 3 2 out of 21 21 -SEQUENTIAL Heavy iteration 66 with 22 and 22 Remaining in each list -SEQUENTIAL Heavy sending ['N', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] and ['O'] to combine - -Fragments to allocate this iteration: 3 4 out of 21 21 -SEQUENTIAL Heavy iteration 67 with 22 and 22 Remaining in each list -SEQUENTIAL Heavy sending ['C', 'H', 'H', 'H'] and ['Fe', 'Cl', 'Cl', 'Cl', 'O', 'H'] to combine - -Fragments to allocate this iteration: 3 5 out of 21 21 -SEQUENTIAL Heavy iteration 68 with 22 and 22 Remaining in each list -SEQUENTIAL Heavy sending ['O'] and ['O'] to combine - -Fragments to allocate this iteration: 3 6 out of 21 21 -SEQUENTIAL Heavy iteration 69 with 22 and 22 Remaining in each list -SEQUENTIAL Heavy sending ['Fe', 'Cl', 'Cl', 'Cl', 'O', 'H'] and ['N', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] to combine - -Fragments to allocate this iteration: 3 7 out of 21 21 -SEQUENTIAL Heavy iteration 70 with 22 and 22 Remaining in each list -SEQUENTIAL Heavy sending ['O'] and ['C', 'H', 'H', 'H'] to combine - -Fragments to allocate this iteration: 3 8 out of 21 21 -SEQUENTIAL Heavy iteration 71 with 22 and 22 Remaining in each list -SEQUENTIAL Heavy sending ['N', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] and ['C', 'H', 'H', 'H'] to combine - -Fragments to allocate this iteration: 0 1 out of 20 20 -SEQUENTIAL Heavy iteration 72 with 21 and 21 Remaining in each list -SEQUENTIAL Heavy sending ['N', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H'] and ['O'] to combine - -Fragments to allocate this iteration: 0 2 out of 20 20 -SEQUENTIAL Heavy iteration 73 with 21 and 21 Remaining in each list -SEQUENTIAL Heavy sending ['N', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H'] and ['C', 'H', 'H', 'H'] to combine - -Fragments to allocate this iteration: 0 3 out of 20 20 -SEQUENTIAL Heavy iteration 74 with 21 and 21 Remaining in each list -SEQUENTIAL Heavy sending ['N', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H'] and ['Fe', 'Cl', 'Cl', 'Cl', 'O', 'H'] to combine - -Fragments to allocate this iteration: 0 4 out of 20 20 -SEQUENTIAL Heavy iteration 75 with 21 and 21 Remaining in each list -SEQUENTIAL Heavy sending ['N', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H'] and ['O'] to combine - -Fragments to allocate this iteration: 0 5 out of 20 20 -SEQUENTIAL Heavy iteration 76 with 21 and 21 Remaining in each list -SEQUENTIAL Heavy sending ['N', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H'] and ['C', 'H', 'H', 'H'] to combine - -Fragments to allocate this iteration: 0 6 out of 20 20 -SEQUENTIAL Heavy SKIPPED 35 and 31 - -Fragments to allocate this iteration: 0 7 out of 20 20 -SEQUENTIAL Heavy iteration 78 with 21 and 21 Remaining in each list -SEQUENTIAL Heavy sending ['N', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H'] and ['Fe', 'Cl', 'Cl', 'Cl', 'O', 'H'] to combine - -Fragments to allocate this iteration: 0 8 out of 20 20 -SEQUENTIAL Heavy iteration 79 with 21 and 21 Remaining in each list -SEQUENTIAL Heavy sending ['N', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H'] and ['C', 'H', 'H', 'C', 'H', 'H'] to combine - -Fragments to allocate this iteration: 0 9 out of 20 20 -SEQUENTIAL Heavy iteration 80 with 21 and 21 Remaining in each list -SEQUENTIAL Heavy sending ['N', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H'] and ['C', 'H', 'H', 'C', 'H', 'H'] to combine - -Fragments to allocate this iteration: 0 1 out of 19 19 -SEQUENTIAL Heavy iteration 81 with 20 and 20 Remaining in each list -SEQUENTIAL Heavy sending ['N', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['C', 'H', 'H', 'C', 'H', 'H'] to combine - -Fragments to allocate this iteration: 0 2 out of 19 19 -SEQUENTIAL Heavy iteration 82 with 20 and 20 Remaining in each list -SEQUENTIAL Heavy sending ['N', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['Fe', 'Cl', 'Cl', 'Cl', 'O', 'H'] to combine - -Fragments to allocate this iteration: 0 3 out of 19 19 -SEQUENTIAL Heavy iteration 83 with 20 and 20 Remaining in each list -SEQUENTIAL Heavy sending ['N', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['C', 'H', 'H', 'H'] to combine - -Fragments to allocate this iteration: 0 4 out of 19 19 -SEQUENTIAL Heavy iteration 84 with 20 and 20 Remaining in each list -SEQUENTIAL Heavy sending ['N', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['O'] to combine - -Fragments to allocate this iteration: 0 5 out of 19 19 -SEQUENTIAL Heavy iteration 85 with 20 and 20 Remaining in each list -SEQUENTIAL Heavy sending ['N', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['Fe', 'Cl', 'Cl', 'Cl', 'O', 'H'] to combine - -Fragments to allocate this iteration: 0 6 out of 19 19 -SEQUENTIAL Heavy iteration 86 with 20 and 20 Remaining in each list -SEQUENTIAL Heavy sending ['N', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['C', 'H', 'H', 'H'] to combine - -Fragments to allocate this iteration: 0 7 out of 19 19 -SEQUENTIAL Heavy iteration 87 with 20 and 20 Remaining in each list -SEQUENTIAL Heavy sending ['N', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['O'] to combine - -Fragments to allocate this iteration: 0 8 out of 19 19 -SEQUENTIAL Heavy SKIPPED 41 and 31 - -Fragments to allocate this iteration: 0 9 out of 19 19 -SEQUENTIAL Heavy iteration 89 with 20 and 20 Remaining in each list -SEQUENTIAL Heavy sending ['N', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] to combine - -Fragments to allocate this iteration: 0 10 out of 19 19 -SEQUENTIAL Heavy iteration 90 with 20 and 20 Remaining in each list -SEQUENTIAL Heavy sending ['N', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] to combine - -Fragments to allocate this iteration: 0 1 out of 18 18 -SEQUENTIAL Heavy SKIPPED 51 and 10 - -Fragments to allocate this iteration: 0 2 out of 18 18 -SEQUENTIAL Heavy iteration 92 with 19 and 19 Remaining in each list -SEQUENTIAL Heavy sending ['N', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] and ['O'] to combine - -Fragments to allocate this iteration: 0 3 out of 18 18 -SEQUENTIAL Heavy SKIPPED 51 and 4 - -Fragments to allocate this iteration: 0 4 out of 18 18 -SEQUENTIAL Heavy SKIPPED 51 and 6 - -Fragments to allocate this iteration: 0 5 out of 18 18 -SEQUENTIAL Heavy iteration 95 with 19 and 19 Remaining in each list -SEQUENTIAL Heavy sending ['N', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] and ['O'] to combine - -Fragments to allocate this iteration: 0 6 out of 18 18 -SEQUENTIAL Heavy SKIPPED 51 and 4 - -Fragments to allocate this iteration: 0 7 out of 18 18 -SEQUENTIAL Heavy SKIPPED 51 and 6 - -Fragments to allocate this iteration: 0 8 out of 18 18 -SEQUENTIAL Heavy SKIPPED 51 and 6 - -Fragments to allocate this iteration: 0 9 out of 18 18 -SEQUENTIAL Heavy SKIPPED 51 and 31 - -Fragments to allocate this iteration: 0 10 out of 18 18 -SEQUENTIAL Heavy SKIPPED 51 and 3 - -Fragments to allocate this iteration: 0 11 out of 18 18 -SEQUENTIAL Heavy SKIPPED 51 and 3 - -Fragments to allocate this iteration: 0 12 out of 18 18 -SEQUENTIAL Heavy SKIPPED 51 and 3 - -Fragments to allocate this iteration: 0 13 out of 18 18 -SEQUENTIAL Heavy SKIPPED 51 and 3 - -Fragments to allocate this iteration: 0 14 out of 18 18 -SEQUENTIAL Heavy SKIPPED 51 and 3 - -Fragments to allocate this iteration: 0 15 out of 18 18 -SEQUENTIAL Heavy SKIPPED 51 and 3 - -Fragments to allocate this iteration: 0 16 out of 18 18 -SEQUENTIAL Heavy SKIPPED 51 and 4 - -Fragments to allocate this iteration: 0 17 out of 18 18 -SEQUENTIAL Heavy SKIPPED 51 and 49 - -Fragments to allocate this iteration: 0 18 out of 18 18 -SEQUENTIAL Heavy SKIPPED 51 and 49 - -Fragments to allocate this iteration: 1 0 out of 18 18 -SEQUENTIAL Heavy iteration 109 with 19 and 19 Remaining in each list -SEQUENTIAL Heavy sending ['O'] and ['N', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] to combine - -Fragments to allocate this iteration: 1 2 out of 18 18 -SEQUENTIAL Heavy iteration 110 with 19 and 19 Remaining in each list -SEQUENTIAL Heavy sending ['N', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] and ['O'] to combine - -Fragments to allocate this iteration: 1 3 out of 18 18 -SEQUENTIAL Heavy iteration 111 with 19 and 19 Remaining in each list -SEQUENTIAL Heavy sending ['O'] and ['C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] to combine - -Fragments to allocate this iteration: 1 4 out of 18 18 -SEQUENTIAL Heavy iteration 112 with 19 and 19 Remaining in each list -SEQUENTIAL Heavy sending ['C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] and ['C', 'H', 'H', 'H'] to combine - -Fragments to allocate this iteration: 1 5 out of 18 18 -SEQUENTIAL Heavy iteration 113 with 19 and 19 Remaining in each list -SEQUENTIAL Heavy sending ['C', 'H', 'H', 'H'] and ['Fe', 'Cl', 'Cl', 'Cl', 'O', 'H'] to combine - -Fragments to allocate this iteration: 1 6 out of 18 18 -SEQUENTIAL Heavy iteration 114 with 19 and 19 Remaining in each list -SEQUENTIAL Heavy sending ['Fe', 'Cl', 'Cl', 'Cl', 'O', 'H'] and ['C', 'H', 'H', 'H'] to combine - -Fragments to allocate this iteration: 1 7 out of 18 18 -SEQUENTIAL Heavy iteration 115 with 19 and 19 Remaining in each list -SEQUENTIAL Heavy sending ['C', 'H', 'H', 'H'] and ['Fe', 'Cl', 'Cl', 'Cl', 'O', 'H'] to combine - -Fragments to allocate this iteration: 1 8 out of 18 18 -SEQUENTIAL Heavy iteration 116 with 19 and 19 Remaining in each list -SEQUENTIAL Heavy sending ['Fe', 'Cl', 'Cl', 'Cl', 'O', 'H'] and ['C', 'H', 'H', 'C', 'H', 'H'] to combine - -Fragments to allocate this iteration: 1 9 out of 18 18 -SEQUENTIAL Heavy iteration 117 with 19 and 19 Remaining in each list -SEQUENTIAL Heavy sending ['C', 'H', 'H', 'C', 'H', 'H'] and ['N', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] to combine - -Fragments to allocate this iteration: 0 1 out of 17 17 -SEQUENTIAL Heavy iteration 118 with 18 and 18 Remaining in each list -SEQUENTIAL Heavy sending ['N', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['Fe', 'Cl', 'Cl', 'Cl', 'O', 'H'] to combine - -Fragments to allocate this iteration: 0 2 out of 17 17 -SEQUENTIAL Heavy iteration 119 with 18 and 18 Remaining in each list -SEQUENTIAL Heavy sending ['N', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['C', 'H', 'H', 'H'] to combine - -Fragments to allocate this iteration: 0 3 out of 17 17 -SEQUENTIAL Heavy iteration 120 with 18 and 18 Remaining in each list -SEQUENTIAL Heavy sending ['N', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['Fe', 'Cl', 'Cl', 'Cl', 'O', 'H'] to combine - -Fragments to allocate this iteration: 0 4 out of 17 17 -SEQUENTIAL Heavy iteration 121 with 18 and 18 Remaining in each list -SEQUENTIAL Heavy sending ['N', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['C', 'H', 'H', 'H'] to combine - -Fragments to allocate this iteration: 0 1 out of 16 16 -SEQUENTIAL Heavy iteration 122 with 17 and 17 Remaining in each list -SEQUENTIAL Heavy sending ['N', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] and ['Fe', 'Cl', 'Cl', 'Cl', 'O', 'H'] to combine - -Fragments to allocate this iteration: 0 2 out of 16 16 -SEQUENTIAL Heavy iteration 123 with 17 and 17 Remaining in each list -SEQUENTIAL Heavy sending ['N', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] and ['C', 'H', 'H', 'H'] to combine - -Fragments to allocate this iteration: 0 3 out of 16 16 -SEQUENTIAL Heavy iteration 124 with 17 and 17 Remaining in each list -SEQUENTIAL Heavy sending ['N', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] and ['Fe', 'Cl', 'Cl', 'Cl', 'O', 'H'] to combine - -Fragments to allocate this iteration: 0 4 out of 16 16 -SEQUENTIAL Heavy iteration 125 with 17 and 17 Remaining in each list -SEQUENTIAL Heavy sending ['N', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] and ['C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] to combine - -Fragments to allocate this iteration: 0 1 out of 15 15 -SEQUENTIAL Heavy SKIPPED 51 and 6 - -Fragments to allocate this iteration: 0 2 out of 15 15 -SEQUENTIAL Heavy SKIPPED 51 and 4 - -Fragments to allocate this iteration: 0 3 out of 15 15 -SEQUENTIAL Heavy SKIPPED 51 and 6 - -Fragments to allocate this iteration: 0 4 out of 15 15 -SEQUENTIAL Heavy iteration 129 with 16 and 16 Remaining in each list -SEQUENTIAL Heavy sending ['N', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] and ['O'] to combine - -Fragments to allocate this iteration: 0 5 out of 15 15 -SEQUENTIAL Heavy SKIPPED 51 and 51 - -Fragments to allocate this iteration: 0 6 out of 15 15 -SEQUENTIAL Heavy iteration 131 with 16 and 16 Remaining in each list -SEQUENTIAL Heavy sending ['N', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] and ['O'] to combine - -Fragments to allocate this iteration: 0 7 out of 15 15 -SEQUENTIAL Heavy SKIPPED 51 and 3 - -Fragments to allocate this iteration: 0 8 out of 15 15 -SEQUENTIAL Heavy SKIPPED 51 and 3 - -Fragments to allocate this iteration: 0 9 out of 15 15 -SEQUENTIAL Heavy SKIPPED 51 and 3 - -Fragments to allocate this iteration: 0 10 out of 15 15 -SEQUENTIAL Heavy SKIPPED 51 and 3 - -Fragments to allocate this iteration: 0 11 out of 15 15 -SEQUENTIAL Heavy SKIPPED 51 and 3 - -Fragments to allocate this iteration: 0 12 out of 15 15 -SEQUENTIAL Heavy SKIPPED 51 and 3 - -Fragments to allocate this iteration: 0 13 out of 15 15 -SEQUENTIAL Heavy SKIPPED 51 and 4 - -Fragments to allocate this iteration: 0 14 out of 15 15 -SEQUENTIAL Heavy SKIPPED 51 and 49 - -Fragments to allocate this iteration: 0 15 out of 15 15 -SEQUENTIAL Heavy SKIPPED 51 and 49 - -Fragments to allocate this iteration: 1 0 out of 15 15 -SEQUENTIAL Heavy iteration 141 with 16 and 16 Remaining in each list -SEQUENTIAL Heavy sending ['O'] and ['N', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] to combine - -Fragments to allocate this iteration: 1 2 out of 15 15 -SEQUENTIAL Heavy iteration 142 with 16 and 16 Remaining in each list -SEQUENTIAL Heavy sending ['N', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] and ['O'] to combine - -Fragments to allocate this iteration: 1 3 out of 15 15 -SEQUENTIAL Heavy iteration 143 with 16 and 16 Remaining in each list -SEQUENTIAL Heavy sending ['O'] and ['Fe', 'Cl', 'Cl', 'Cl', 'O', 'H'] to combine - -Fragments to allocate this iteration: 1 4 out of 15 15 -SEQUENTIAL Heavy iteration 144 with 16 and 16 Remaining in each list -SEQUENTIAL Heavy sending ['Fe', 'Cl', 'Cl', 'Cl', 'O', 'H'] and ['C', 'H', 'H', 'H'] to combine - -Fragments to allocate this iteration: 1 5 out of 15 15 -SEQUENTIAL Heavy iteration 145 with 16 and 16 Remaining in each list -SEQUENTIAL Heavy sending ['C', 'H', 'H', 'H'] and ['Fe', 'Cl', 'Cl', 'Cl', 'O', 'H'] to combine - -Fragments to allocate this iteration: 1 6 out of 15 15 -SEQUENTIAL Heavy SKIPPED 6 and 51 - -Fragments to allocate this iteration: 1 7 out of 15 15 -SEQUENTIAL Heavy iteration 147 with 16 and 16 Remaining in each list -SEQUENTIAL Heavy sending ['Fe', 'Cl', 'Cl', 'Cl', 'O', 'H'] and ['C', 'H', 'H'] to combine - -Fragments to allocate this iteration: 1 8 out of 15 15 -SEQUENTIAL Heavy iteration 148 with 16 and 16 Remaining in each list -SEQUENTIAL Heavy sending ['C', 'H', 'H'] and ['C', 'H', 'H'] to combine - -Fragments to allocate this iteration: 1 9 out of 15 15 -SEQUENTIAL Heavy iteration 149 with 16 and 16 Remaining in each list -SEQUENTIAL Heavy sending ['C', 'H', 'H'] and ['C', 'H', 'H'] to combine - -Fragments to allocate this iteration: 1 10 out of 15 15 -SEQUENTIAL Heavy iteration 150 with 16 and 16 Remaining in each list -SEQUENTIAL Heavy sending ['C', 'H', 'H'] and ['C', 'H', 'H'] to combine - -Fragments to allocate this iteration: 1 11 out of 15 15 -SEQUENTIAL Heavy iteration 151 with 16 and 16 Remaining in each list -SEQUENTIAL Heavy sending ['C', 'H', 'H'] and ['C', 'H', 'H'] to combine - -Fragments to allocate this iteration: 1 12 out of 15 15 -SEQUENTIAL Heavy iteration 152 with 16 and 16 Remaining in each list -SEQUENTIAL Heavy sending ['C', 'H', 'H'] and ['C', 'H', 'H'] to combine - -Fragments to allocate this iteration: 1 13 out of 15 15 -SEQUENTIAL Heavy iteration 153 with 16 and 16 Remaining in each list -SEQUENTIAL Heavy sending ['C', 'H', 'H'] and ['C', 'H', 'H', 'H'] to combine - -Fragments to allocate this iteration: 1 14 out of 15 15 -SEQUENTIAL Heavy iteration 154 with 16 and 16 Remaining in each list -SEQUENTIAL Heavy sending ['C', 'H', 'H', 'H'] and ['N', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H'] to combine - -Fragments to allocate this iteration: 1 15 out of 15 15 -SEQUENTIAL Heavy SKIPPED 49 and 49 - -Fragments to allocate this iteration: 2 0 out of 15 15 -SEQUENTIAL Heavy iteration 156 with 16 and 16 Remaining in each list -SEQUENTIAL Heavy sending ['C', 'H', 'H'] and ['C', 'H', 'H', 'H'] to combine - -Fragments to allocate this iteration: 2 1 out of 15 15 -SEQUENTIAL Heavy iteration 157 with 16 and 16 Remaining in each list -SEQUENTIAL Heavy sending ['N', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H'] and ['C', 'H', 'H', 'H'] to combine - -Fragments to allocate this iteration: 2 3 out of 15 15 -SEQUENTIAL Heavy iteration 158 with 16 and 16 Remaining in each list -SEQUENTIAL Heavy sending ['C', 'H', 'H'] and ['C', 'H', 'H'] to combine - -Fragments to allocate this iteration: 2 4 out of 15 15 -SEQUENTIAL Heavy iteration 159 with 16 and 16 Remaining in each list -SEQUENTIAL Heavy sending ['N', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H'] and ['C', 'H', 'H'] to combine - -Fragments to allocate this iteration: 2 5 out of 15 15 -SEQUENTIAL Heavy iteration 160 with 16 and 16 Remaining in each list -SEQUENTIAL Heavy sending ['C', 'H', 'H'] and ['C', 'H', 'H'] to combine - -Fragments to allocate this iteration: 2 6 out of 15 15 -SEQUENTIAL Heavy iteration 161 with 16 and 16 Remaining in each list -SEQUENTIAL Heavy sending ['N', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H'] and ['C', 'H', 'H'] to combine - -Fragments to allocate this iteration: 2 7 out of 15 15 -SEQUENTIAL Heavy iteration 162 with 16 and 16 Remaining in each list -SEQUENTIAL Heavy sending ['C', 'H', 'H'] and ['C', 'H', 'H'] to combine - -Fragments to allocate this iteration: 2 8 out of 15 15 -SEQUENTIAL Heavy SKIPPED 49 and 6 - -Fragments to allocate this iteration: 2 9 out of 15 15 -SEQUENTIAL Heavy iteration 164 with 16 and 16 Remaining in each list -SEQUENTIAL Heavy sending ['N', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H'] and ['C', 'H', 'H', 'H'] to combine - -Fragments to allocate this iteration: 2 10 out of 15 15 -SEQUENTIAL Heavy iteration 165 with 16 and 16 Remaining in each list -SEQUENTIAL Heavy sending ['C', 'H', 'H'] and ['Fe', 'Cl', 'Cl', 'Cl', 'O', 'H'] to combine - -Fragments to allocate this iteration: 2 11 out of 15 15 -SEQUENTIAL Heavy iteration 166 with 16 and 16 Remaining in each list -SEQUENTIAL Heavy sending ['N', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H'] and ['O'] to combine - -Fragments to allocate this iteration: 2 12 out of 15 15 -SEQUENTIAL Heavy SKIPPED 3 and 51 - -Fragments to allocate this iteration: 2 13 out of 15 15 -SEQUENTIAL Heavy iteration 168 with 16 and 16 Remaining in each list -SEQUENTIAL Heavy sending ['C', 'H', 'H'] and ['O'] to combine - -Fragments to allocate this iteration: 2 14 out of 15 15 -SEQUENTIAL Heavy SKIPPED 49 and 51 - -Fragments to allocate this iteration: 2 15 out of 15 15 -SEQUENTIAL Heavy SKIPPED 49 and 49 - -Fragments to allocate this iteration: 3 0 out of 15 15 -SEQUENTIAL Heavy iteration 171 with 16 and 16 Remaining in each list -SEQUENTIAL Heavy sending ['O'] and ['C', 'H', 'H'] to combine - -Fragments to allocate this iteration: 3 1 out of 15 15 -SEQUENTIAL Heavy iteration 172 with 16 and 16 Remaining in each list -SEQUENTIAL Heavy sending ['N', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H'] and ['C', 'H', 'H'] to combine - -Fragments to allocate this iteration: 3 2 out of 15 15 -SEQUENTIAL Heavy iteration 173 with 16 and 16 Remaining in each list -SEQUENTIAL Heavy sending ['O'] and ['O'] to combine - -Fragments to allocate this iteration: 3 4 out of 15 15 -SEQUENTIAL Heavy iteration 174 with 16 and 16 Remaining in each list -SEQUENTIAL Heavy sending ['C', 'H', 'H'] and ['Fe', 'Cl', 'Cl', 'Cl', 'O', 'H'] to combine - -Fragments to allocate this iteration: 3 5 out of 15 15 -SEQUENTIAL Heavy iteration 175 with 16 and 16 Remaining in each list -SEQUENTIAL Heavy sending ['O'] and ['C', 'H', 'H', 'H'] to combine - -Fragments to allocate this iteration: 3 6 out of 15 15 -SEQUENTIAL Heavy iteration 176 with 16 and 16 Remaining in each list -SEQUENTIAL Heavy sending ['Fe', 'Cl', 'Cl', 'Cl', 'O', 'H'] and ['C', 'H', 'H'] to combine - -Fragments to allocate this iteration: 3 7 out of 15 15 -SEQUENTIAL Heavy iteration 177 with 16 and 16 Remaining in each list -SEQUENTIAL Heavy sending ['C', 'H', 'H', 'H'] and ['C', 'H', 'H'] to combine - -Fragments to allocate this iteration: 3 8 out of 15 15 -SEQUENTIAL Heavy iteration 178 with 16 and 16 Remaining in each list -SEQUENTIAL Heavy sending ['C', 'H', 'H'] and ['C', 'H', 'H'] to combine - -Fragments to allocate this iteration: 3 9 out of 15 15 -SEQUENTIAL Heavy iteration 179 with 16 and 16 Remaining in each list -SEQUENTIAL Heavy sending ['C', 'H', 'H'] and ['C', 'H', 'H'] to combine - -Fragments to allocate this iteration: 3 10 out of 15 15 -SEQUENTIAL Heavy iteration 180 with 16 and 16 Remaining in each list -SEQUENTIAL Heavy sending ['C', 'H', 'H'] and ['C', 'H', 'H'] to combine - -Fragments to allocate this iteration: 3 11 out of 15 15 -SEQUENTIAL Heavy iteration 181 with 16 and 16 Remaining in each list -SEQUENTIAL Heavy sending ['C', 'H', 'H'] and ['C', 'H', 'H', 'H'] to combine - -Fragments to allocate this iteration: 0 1 out of 14 14 -SEQUENTIAL Heavy iteration 182 with 15 and 15 Remaining in each list -SEQUENTIAL Heavy sending ['C', 'H', 'H', 'H', 'C', 'H', 'H'] and ['C', 'H', 'H'] to combine - -Fragments to allocate this iteration: 0 2 out of 14 14 -SEQUENTIAL Heavy iteration 183 with 15 and 15 Remaining in each list -SEQUENTIAL Heavy sending ['C', 'H', 'H', 'H', 'C', 'H', 'H'] and ['C', 'H', 'H'] to combine - -Fragments to allocate this iteration: 0 3 out of 14 14 -SEQUENTIAL Heavy iteration 184 with 15 and 15 Remaining in each list -SEQUENTIAL Heavy sending ['C', 'H', 'H', 'H', 'C', 'H', 'H'] and ['C', 'H', 'H'] to combine - -Fragments to allocate this iteration: 0 4 out of 14 14 -SEQUENTIAL Heavy iteration 185 with 15 and 15 Remaining in each list -SEQUENTIAL Heavy sending ['C', 'H', 'H', 'H', 'C', 'H', 'H'] and ['C', 'H', 'H'] to combine - -Fragments to allocate this iteration: 0 5 out of 14 14 -SEQUENTIAL Heavy iteration 186 with 15 and 15 Remaining in each list -SEQUENTIAL Heavy sending ['C', 'H', 'H', 'H', 'C', 'H', 'H'] and ['C', 'H', 'H', 'H'] to combine - -Fragments to allocate this iteration: 0 6 out of 14 14 -SEQUENTIAL Heavy iteration 187 with 15 and 15 Remaining in each list -SEQUENTIAL Heavy sending ['C', 'H', 'H', 'H', 'C', 'H', 'H'] and ['Fe', 'Cl', 'Cl', 'Cl', 'O', 'H'] to combine - -Fragments to allocate this iteration: 0 7 out of 14 14 -SEQUENTIAL Heavy iteration 188 with 15 and 15 Remaining in each list -SEQUENTIAL Heavy sending ['C', 'H', 'H', 'H', 'C', 'H', 'H'] and ['O'] to combine - -Fragments to allocate this iteration: 0 8 out of 14 14 -SEQUENTIAL Heavy iteration 189 with 15 and 15 Remaining in each list -SEQUENTIAL Heavy sending ['C', 'H', 'H', 'H', 'C', 'H', 'H'] and ['C', 'H', 'H'] to combine - -Fragments to allocate this iteration: 0 9 out of 14 14 -SEQUENTIAL Heavy iteration 190 with 15 and 15 Remaining in each list -SEQUENTIAL Heavy sending ['C', 'H', 'H', 'H', 'C', 'H', 'H'] and ['O'] to combine - -Fragments to allocate this iteration: 0 1 out of 13 13 -SEQUENTIAL Heavy iteration 191 with 14 and 14 Remaining in each list -SEQUENTIAL Heavy sending ['C', 'H', 'H', 'H', 'C', 'H', 'H', 'O'] and ['C', 'H', 'H'] to combine - -Fragments to allocate this iteration: 0 2 out of 13 13 -SEQUENTIAL Heavy iteration 192 with 14 and 14 Remaining in each list -SEQUENTIAL Heavy sending ['C', 'H', 'H', 'H', 'C', 'H', 'H', 'O'] and ['O'] to combine - -Fragments to allocate this iteration: 0 3 out of 13 13 -SEQUENTIAL Heavy iteration 193 with 14 and 14 Remaining in each list -SEQUENTIAL Heavy sending ['C', 'H', 'H', 'H', 'C', 'H', 'H', 'O'] and ['Fe', 'Cl', 'Cl', 'Cl', 'O', 'H'] to combine - -Fragments to allocate this iteration: 0 4 out of 13 13 -SEQUENTIAL Heavy iteration 194 with 14 and 14 Remaining in each list -SEQUENTIAL Heavy sending ['C', 'H', 'H', 'H', 'C', 'H', 'H', 'O'] and ['C', 'H', 'H', 'H'] to combine - -Fragments to allocate this iteration: 0 5 out of 13 13 -SEQUENTIAL Heavy iteration 195 with 14 and 14 Remaining in each list -SEQUENTIAL Heavy sending ['C', 'H', 'H', 'H', 'C', 'H', 'H', 'O'] and ['C', 'H', 'H'] to combine - -Fragments to allocate this iteration: 0 6 out of 13 13 -SEQUENTIAL Heavy iteration 196 with 14 and 14 Remaining in each list -SEQUENTIAL Heavy sending ['C', 'H', 'H', 'H', 'C', 'H', 'H', 'O'] and ['C', 'H', 'H'] to combine - -Fragments to allocate this iteration: 0 1 out of 12 12 -SEQUENTIAL Heavy iteration 197 with 13 and 13 Remaining in each list -SEQUENTIAL Heavy sending ['C', 'H', 'H', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'H'] and ['C', 'H', 'H'] to combine - -Fragments to allocate this iteration: 0 2 out of 12 12 -SEQUENTIAL Heavy iteration 198 with 13 and 13 Remaining in each list -SEQUENTIAL Heavy sending ['C', 'H', 'H', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'H'] and ['C', 'H', 'H', 'H'] to combine - -Fragments to allocate this iteration: 0 3 out of 12 12 -SEQUENTIAL Heavy iteration 199 with 13 and 13 Remaining in each list -SEQUENTIAL Heavy sending ['C', 'H', 'H', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'H'] and ['Fe', 'Cl', 'Cl', 'Cl', 'O', 'H'] to combine - -Fragments to allocate this iteration: 0 4 out of 12 12 -SEQUENTIAL Heavy iteration 200 with 13 and 13 Remaining in each list -SEQUENTIAL Heavy sending ['C', 'H', 'H', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'H'] and ['O'] to combine - -Fragments to allocate this iteration: 0 5 out of 12 12 -SEQUENTIAL Heavy iteration 201 with 13 and 13 Remaining in each list -SEQUENTIAL Heavy sending ['C', 'H', 'H', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'H'] and ['C', 'H', 'H'] to combine - -Fragments to allocate this iteration: 0 1 out of 11 11 -SEQUENTIAL Heavy iteration 202 with 12 and 12 Remaining in each list -SEQUENTIAL Heavy sending ['C', 'H', 'H', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'H', 'C', 'H', 'H'] and ['O'] to combine - -Fragments to allocate this iteration: 0 2 out of 11 11 -SEQUENTIAL Heavy iteration 203 with 12 and 12 Remaining in each list -SEQUENTIAL Heavy sending ['C', 'H', 'H', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'H', 'C', 'H', 'H'] and ['Fe', 'Cl', 'Cl', 'Cl', 'O', 'H'] to combine - -Fragments to allocate this iteration: 0 3 out of 11 11 -SEQUENTIAL Heavy iteration 204 with 12 and 12 Remaining in each list -SEQUENTIAL Heavy sending ['C', 'H', 'H', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'H', 'C', 'H', 'H'] and ['C', 'H', 'H', 'H'] to combine - -Fragments to allocate this iteration: 0 4 out of 11 11 -SEQUENTIAL Heavy iteration 205 with 12 and 12 Remaining in each list -SEQUENTIAL Heavy sending ['C', 'H', 'H', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'H', 'C', 'H', 'H'] and ['C', 'H', 'H'] to combine - -Fragments to allocate this iteration: 0 5 out of 11 11 -SEQUENTIAL Heavy iteration 206 with 12 and 12 Remaining in each list -SEQUENTIAL Heavy sending ['C', 'H', 'H', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'H', 'C', 'H', 'H'] and ['C', 'H', 'H'] to combine - -Fragments to allocate this iteration: 0 6 out of 11 11 -SEQUENTIAL Heavy iteration 207 with 12 and 12 Remaining in each list -SEQUENTIAL Heavy sending ['C', 'H', 'H', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'H', 'C', 'H', 'H'] and ['C', 'H', 'H'] to combine - -Fragments to allocate this iteration: 0 7 out of 11 11 -SEQUENTIAL Heavy SKIPPED 14 and 49 - -Fragments to allocate this iteration: 0 8 out of 11 11 -SEQUENTIAL Heavy iteration 209 with 12 and 12 Remaining in each list -SEQUENTIAL Heavy sending ['C', 'H', 'H', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'H', 'C', 'H', 'H'] and ['Fe', 'Cl', 'Cl', 'Cl', 'O', 'H'] to combine - -Fragments to allocate this iteration: 0 9 out of 11 11 -SEQUENTIAL Heavy SKIPPED 14 and 51 - -Fragments to allocate this iteration: 0 10 out of 11 11 -SEQUENTIAL Heavy SKIPPED 14 and 51 - -Fragments to allocate this iteration: 0 11 out of 11 11 -SEQUENTIAL Heavy SKIPPED 14 and 49 - -Fragments to allocate this iteration: 1 0 out of 11 11 -SEQUENTIAL Heavy iteration 213 with 12 and 12 Remaining in each list -SEQUENTIAL Heavy sending ['Fe', 'Cl', 'Cl', 'Cl', 'O', 'H'] and ['C', 'H', 'H', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'H', 'C', 'H', 'H'] to combine - -Fragments to allocate this iteration: 1 2 out of 11 11 -SEQUENTIAL Heavy iteration 214 with 12 and 12 Remaining in each list -SEQUENTIAL Heavy sending ['C', 'H', 'H', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'H', 'C', 'H', 'H'] and ['C', 'H', 'H'] to combine - -Fragments to allocate this iteration: 1 3 out of 11 11 -SEQUENTIAL Heavy iteration 215 with 12 and 12 Remaining in each list -SEQUENTIAL Heavy sending ['C', 'H', 'H'] and ['C', 'H', 'H'] to combine - -Fragments to allocate this iteration: 1 4 out of 11 11 -SEQUENTIAL Heavy iteration 216 with 12 and 12 Remaining in each list -SEQUENTIAL Heavy sending ['C', 'H', 'H'] and ['C', 'H', 'H'] to combine - -Fragments to allocate this iteration: 0 1 out of 10 10 -SEQUENTIAL Heavy iteration 217 with 11 and 11 Remaining in each list -SEQUENTIAL Heavy sending ['C', 'H', 'H', 'C', 'H', 'H'] and ['C', 'H', 'H'] to combine - -Fragments to allocate this iteration: 0 2 out of 10 10 -SEQUENTIAL Heavy iteration 218 with 11 and 11 Remaining in each list -SEQUENTIAL Heavy sending ['C', 'H', 'H', 'C', 'H', 'H'] and ['C', 'H', 'H', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'H', 'C', 'H', 'H'] to combine - -Fragments to allocate this iteration: 0 3 out of 10 10 -SEQUENTIAL Heavy iteration 219 with 11 and 11 Remaining in each list -SEQUENTIAL Heavy sending ['C', 'H', 'H', 'C', 'H', 'H'] and ['Fe', 'Cl', 'Cl', 'Cl', 'O', 'H'] to combine - -Fragments to allocate this iteration: 0 4 out of 10 10 -SEQUENTIAL Heavy iteration 220 with 11 and 11 Remaining in each list -SEQUENTIAL Heavy sending ['C', 'H', 'H', 'C', 'H', 'H'] and ['C', 'H', 'H', 'H'] to combine - -Fragments to allocate this iteration: 0 5 out of 10 10 -SEQUENTIAL Heavy iteration 221 with 11 and 11 Remaining in each list -SEQUENTIAL Heavy sending ['C', 'H', 'H', 'C', 'H', 'H'] and ['Fe', 'Cl', 'Cl', 'Cl', 'O', 'H'] to combine - -Fragments to allocate this iteration: 0 6 out of 10 10 -SEQUENTIAL Heavy iteration 222 with 11 and 11 Remaining in each list -SEQUENTIAL Heavy sending ['C', 'H', 'H', 'C', 'H', 'H'] and ['O'] to combine - -Fragments to allocate this iteration: 0 1 out of 9 9 -SEQUENTIAL Heavy iteration 223 with 10 and 10 Remaining in each list -SEQUENTIAL Heavy sending ['C', 'H', 'H', 'C', 'H', 'H', 'O'] and ['Fe', 'Cl', 'Cl', 'Cl', 'O', 'H'] to combine - -Fragments to allocate this iteration: 0 2 out of 9 9 -SEQUENTIAL Heavy iteration 224 with 10 and 10 Remaining in each list -SEQUENTIAL Heavy sending ['C', 'H', 'H', 'C', 'H', 'H', 'O'] and ['C', 'H', 'H', 'H'] to combine - -Fragments to allocate this iteration: 0 3 out of 9 9 -SEQUENTIAL Heavy iteration 225 with 10 and 10 Remaining in each list -SEQUENTIAL Heavy sending ['C', 'H', 'H', 'C', 'H', 'H', 'O'] and ['Fe', 'Cl', 'Cl', 'Cl', 'O', 'H'] to combine - -Fragments to allocate this iteration: 0 4 out of 9 9 -SEQUENTIAL Heavy iteration 226 with 10 and 10 Remaining in each list -SEQUENTIAL Heavy sending ['C', 'H', 'H', 'C', 'H', 'H', 'O'] and ['C', 'H', 'H', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'H', 'C', 'H', 'H'] to combine - -Fragments to allocate this iteration: 0 5 out of 9 9 -SEQUENTIAL Heavy iteration 227 with 10 and 10 Remaining in each list -SEQUENTIAL Heavy sending ['C', 'H', 'H', 'C', 'H', 'H', 'O'] and ['C', 'H', 'H'] to combine - -Fragments to allocate this iteration: 0 1 out of 8 8 -SEQUENTIAL Heavy iteration 228 with 9 and 9 Remaining in each list -SEQUENTIAL Heavy sending ['C', 'H', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'H'] and ['C', 'H', 'H', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'H', 'C', 'H', 'H'] to combine - -Fragments to allocate this iteration: 0 2 out of 8 8 -SEQUENTIAL Heavy iteration 229 with 9 and 9 Remaining in each list -SEQUENTIAL Heavy sending ['C', 'H', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'H'] and ['Fe', 'Cl', 'Cl', 'Cl', 'O', 'H'] to combine - -Fragments to allocate this iteration: 0 3 out of 8 8 -SEQUENTIAL Heavy iteration 230 with 9 and 9 Remaining in each list -SEQUENTIAL Heavy sending ['C', 'H', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'H'] and ['C', 'H', 'H', 'H'] to combine - -Fragments to allocate this iteration: 0 1 out of 7 7 -SEQUENTIAL Heavy iteration 231 with 8 and 8 Remaining in each list -SEQUENTIAL Heavy sending ['C', 'H', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] and ['Fe', 'Cl', 'Cl', 'Cl', 'O', 'H'] to combine - -Fragments to allocate this iteration: 0 2 out of 7 7 -SEQUENTIAL Heavy iteration 232 with 8 and 8 Remaining in each list -SEQUENTIAL Heavy sending ['C', 'H', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] and ['C', 'H', 'H', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'H', 'C', 'H', 'H'] to combine - -Fragments to allocate this iteration: 0 3 out of 7 7 -SEQUENTIAL Heavy iteration 233 with 8 and 8 Remaining in each list -SEQUENTIAL Heavy sending ['C', 'H', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] and ['Fe', 'Cl', 'Cl', 'Cl', 'O', 'H'] to combine - -Fragments to allocate this iteration: 0 4 out of 7 7 -SEQUENTIAL Heavy SKIPPED 14 and 49 - -Fragments to allocate this iteration: 0 5 out of 7 7 -SEQUENTIAL Heavy SKIPPED 14 and 51 - -Fragments to allocate this iteration: 0 6 out of 7 7 -SEQUENTIAL Heavy SKIPPED 14 and 51 - -Fragments to allocate this iteration: 0 7 out of 7 7 -SEQUENTIAL Heavy SKIPPED 14 and 49 - -Fragments to allocate this iteration: 1 0 out of 7 7 -SEQUENTIAL Heavy iteration 238 with 8 and 8 Remaining in each list -SEQUENTIAL Heavy sending ['Fe', 'Cl', 'Cl', 'Cl', 'O', 'H'] and ['C', 'H', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] to combine - -Fragments to allocate this iteration: 1 2 out of 7 7 -SEQUENTIAL Heavy iteration 239 with 8 and 8 Remaining in each list -SEQUENTIAL Heavy sending ['C', 'H', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] and ['C', 'H', 'H', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'H', 'C', 'H', 'H'] to combine - -Fragments to allocate this iteration: 1 3 out of 7 7 -SEQUENTIAL Heavy iteration 240 with 8 and 8 Remaining in each list -SEQUENTIAL Heavy sending ['C', 'H', 'H', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'H', 'C', 'H', 'H'] and ['Fe', 'Cl', 'Cl', 'Cl', 'O', 'H'] to combine - -Fragments to allocate this iteration: 1 4 out of 7 7 -SEQUENTIAL Heavy SKIPPED 6 and 49 - -Fragments to allocate this iteration: 1 5 out of 7 7 -SEQUENTIAL Heavy SKIPPED 6 and 51 - -Fragments to allocate this iteration: 1 6 out of 7 7 -SEQUENTIAL Heavy SKIPPED 6 and 51 - -Fragments to allocate this iteration: 1 7 out of 7 7 -SEQUENTIAL Heavy SKIPPED 6 and 49 - -Fragments to allocate this iteration: 2 0 out of 7 7 -SEQUENTIAL Heavy iteration 245 with 8 and 8 Remaining in each list -SEQUENTIAL Heavy sending ['C', 'H', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] and ['C', 'H', 'H', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'H', 'C', 'H', 'H'] to combine - -Fragments to allocate this iteration: 2 1 out of 7 7 -SEQUENTIAL Heavy iteration 246 with 8 and 8 Remaining in each list -SEQUENTIAL Heavy sending ['Fe', 'Cl', 'Cl', 'Cl', 'O', 'H'] and ['C', 'H', 'H', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'H', 'C', 'H', 'H'] to combine - -Fragments to allocate this iteration: 2 3 out of 7 7 -SEQUENTIAL Heavy iteration 247 with 8 and 8 Remaining in each list -SEQUENTIAL Heavy sending ['C', 'H', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] and ['Fe', 'Cl', 'Cl', 'Cl', 'O', 'H'] to combine - -Fragments to allocate this iteration: 2 4 out of 7 7 -SEQUENTIAL Heavy SKIPPED 6 and 49 - -Fragments to allocate this iteration: 2 5 out of 7 7 -SEQUENTIAL Heavy SKIPPED 6 and 51 - -Fragments to allocate this iteration: 2 6 out of 7 7 -SEQUENTIAL Heavy SKIPPED 6 and 51 - -Fragments to allocate this iteration: 2 7 out of 7 7 -SEQUENTIAL Heavy SKIPPED 6 and 49 - -Fragments to allocate this iteration: 3 0 out of 7 7 -SEQUENTIAL Heavy iteration 252 with 8 and 8 Remaining in each list -SEQUENTIAL Heavy sending ['C', 'H', 'H', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'H', 'C', 'H', 'H'] and ['C', 'H', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] to combine - -Fragments to allocate this iteration: 3 1 out of 7 7 -SEQUENTIAL Heavy iteration 253 with 8 and 8 Remaining in each list -SEQUENTIAL Heavy sending ['Fe', 'Cl', 'Cl', 'Cl', 'O', 'H'] and ['C', 'H', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] to combine - -Fragments to allocate this iteration: 3 2 out of 7 7 -SEQUENTIAL Heavy iteration 254 with 8 and 8 Remaining in each list -SEQUENTIAL Heavy sending ['Fe', 'Cl', 'Cl', 'Cl', 'O', 'H'] and ['C', 'H', 'H', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'H', 'C', 'H', 'H'] to combine - -Fragments to allocate this iteration: 3 4 out of 7 7 -SEQUENTIAL Heavy SKIPPED 14 and 49 - -Fragments to allocate this iteration: 3 5 out of 7 7 -SEQUENTIAL Heavy SKIPPED 14 and 51 - -Fragments to allocate this iteration: 3 6 out of 7 7 -SEQUENTIAL Heavy SKIPPED 14 and 51 - -Fragments to allocate this iteration: 3 7 out of 7 7 -SEQUENTIAL Heavy SKIPPED 14 and 49 - -Fragments to allocate this iteration: 4 0 out of 7 7 -SEQUENTIAL Heavy SKIPPED 49 and 6 - -Fragments to allocate this iteration: 4 1 out of 7 7 -SEQUENTIAL Heavy SKIPPED 49 and 14 - -Fragments to allocate this iteration: 4 2 out of 7 7 -SEQUENTIAL Heavy SKIPPED 49 and 6 - -Fragments to allocate this iteration: 4 3 out of 7 7 -SEQUENTIAL Heavy SKIPPED 49 and 14 - -Fragments to allocate this iteration: 4 5 out of 7 7 -SEQUENTIAL Heavy SKIPPED 49 and 51 - -Fragments to allocate this iteration: 4 6 out of 7 7 -SEQUENTIAL Heavy SKIPPED 49 and 51 - -Fragments to allocate this iteration: 4 7 out of 7 7 -SEQUENTIAL Heavy SKIPPED 49 and 49 - -Fragments to allocate this iteration: 5 0 out of 7 7 -SEQUENTIAL Heavy SKIPPED 51 and 6 - -Fragments to allocate this iteration: 5 1 out of 7 7 -SEQUENTIAL Heavy SKIPPED 51 and 14 - -Fragments to allocate this iteration: 5 2 out of 7 7 -SEQUENTIAL Heavy SKIPPED 51 and 6 - -Fragments to allocate this iteration: 5 3 out of 7 7 -SEQUENTIAL Heavy SKIPPED 51 and 14 - -Fragments to allocate this iteration: 5 4 out of 7 7 -SEQUENTIAL Heavy SKIPPED 51 and 49 - -Fragments to allocate this iteration: 5 6 out of 7 7 -SEQUENTIAL Heavy SKIPPED 51 and 51 - -Fragments to allocate this iteration: 5 7 out of 7 7 -SEQUENTIAL Heavy SKIPPED 51 and 49 - -Fragments to allocate this iteration: 6 0 out of 7 7 -SEQUENTIAL Heavy SKIPPED 51 and 6 - -Fragments to allocate this iteration: 6 1 out of 7 7 -SEQUENTIAL Heavy SKIPPED 51 and 14 - -Fragments to allocate this iteration: 6 2 out of 7 7 -SEQUENTIAL Heavy SKIPPED 51 and 6 - -Fragments to allocate this iteration: 6 3 out of 7 7 -SEQUENTIAL Heavy SKIPPED 51 and 14 - -Fragments to allocate this iteration: 6 4 out of 7 7 -SEQUENTIAL Heavy SKIPPED 51 and 49 - -Fragments to allocate this iteration: 6 5 out of 7 7 -SEQUENTIAL Heavy SKIPPED 51 and 51 - -Fragments to allocate this iteration: 6 7 out of 7 7 -SEQUENTIAL Heavy SKIPPED 51 and 49 - -Fragments to allocate this iteration: 7 0 out of 7 7 -SEQUENTIAL Heavy SKIPPED 49 and 6 - -Fragments to allocate this iteration: 7 1 out of 7 7 -SEQUENTIAL Heavy SKIPPED 49 and 14 - -Fragments to allocate this iteration: 7 2 out of 7 7 -SEQUENTIAL Heavy SKIPPED 49 and 6 - -Fragments to allocate this iteration: 7 3 out of 7 7 -SEQUENTIAL Heavy SKIPPED 49 and 14 - -Fragments to allocate this iteration: 7 4 out of 7 7 -SEQUENTIAL Heavy SKIPPED 49 and 49 - -Fragments to allocate this iteration: 7 5 out of 7 7 -SEQUENTIAL Heavy SKIPPED 49 and 51 - -Fragments to allocate this iteration: 7 6 out of 7 7 -SEQUENTIAL Heavy SKIPPED 49 and 51 - Increased Threshold_tmat. Now: 0.6000000000000001 - Maxsize of the translation matrix is= 12 - -Fragments to allocate this iteration: 0 1 out of 7 7 -SEQUENTIAL Heavy iteration 1 with 8 and 8 Remaining in each list -SEQUENTIAL Heavy sending ['Fe', 'Cl', 'Cl', 'Cl', 'O', 'H'] and ['C', 'H', 'H', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'H', 'C', 'H', 'H'] to combine - -Fragments to allocate this iteration: 0 2 out of 7 7 -SEQUENTIAL Heavy iteration 2 with 8 and 8 Remaining in each list -SEQUENTIAL Heavy sending ['Fe', 'Cl', 'Cl', 'Cl', 'O', 'H'] and ['Fe', 'Cl', 'Cl', 'Cl', 'O', 'H'] to combine - -Fragments to allocate this iteration: 0 3 out of 7 7 -SEQUENTIAL Heavy iteration 3 with 8 and 8 Remaining in each list -SEQUENTIAL Heavy sending ['Fe', 'Cl', 'Cl', 'Cl', 'O', 'H'] and ['C', 'H', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] to combine - -Fragments to allocate this iteration: 0 4 out of 7 7 -SEQUENTIAL Heavy SKIPPED 6 and 49 - -Fragments to allocate this iteration: 0 5 out of 7 7 -SEQUENTIAL Heavy SKIPPED 6 and 51 - -Fragments to allocate this iteration: 0 6 out of 7 7 -SEQUENTIAL Heavy SKIPPED 6 and 51 - -Fragments to allocate this iteration: 0 7 out of 7 7 -SEQUENTIAL Heavy SKIPPED 6 and 49 - -Fragments to allocate this iteration: 1 0 out of 7 7 -SEQUENTIAL Heavy iteration 8 with 8 and 8 Remaining in each list -SEQUENTIAL Heavy sending ['C', 'H', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] and ['Fe', 'Cl', 'Cl', 'Cl', 'O', 'H'] to combine - -Fragments to allocate this iteration: 1 2 out of 7 7 -SEQUENTIAL Heavy iteration 9 with 8 and 8 Remaining in each list -SEQUENTIAL Heavy sending ['Fe', 'Cl', 'Cl', 'Cl', 'O', 'H'] and ['Fe', 'Cl', 'Cl', 'Cl', 'O', 'H'] to combine - -Fragments to allocate this iteration: 1 3 out of 7 7 -SEQUENTIAL Heavy iteration 10 with 8 and 8 Remaining in each list -SEQUENTIAL Heavy sending ['Fe', 'Cl', 'Cl', 'Cl', 'O', 'H'] and ['C', 'H', 'H', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'H', 'C', 'H', 'H'] to combine - -Fragments to allocate this iteration: 1 4 out of 7 7 -SEQUENTIAL Heavy SKIPPED 14 and 49 - -Fragments to allocate this iteration: 1 5 out of 7 7 -SEQUENTIAL Heavy SKIPPED 14 and 51 - -Fragments to allocate this iteration: 1 6 out of 7 7 -SEQUENTIAL Heavy SKIPPED 14 and 51 - -Fragments to allocate this iteration: 1 7 out of 7 7 -SEQUENTIAL Heavy SKIPPED 14 and 49 - -Fragments to allocate this iteration: 2 0 out of 7 7 -SEQUENTIAL Heavy iteration 15 with 8 and 8 Remaining in each list -SEQUENTIAL Heavy sending ['Fe', 'Cl', 'Cl', 'Cl', 'O', 'H'] and ['Fe', 'Cl', 'Cl', 'Cl', 'O', 'H'] to combine - -Fragments to allocate this iteration: 2 1 out of 7 7 -SEQUENTIAL Heavy iteration 16 with 8 and 8 Remaining in each list -SEQUENTIAL Heavy sending ['C', 'H', 'H', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'H', 'C', 'H', 'H'] and ['Fe', 'Cl', 'Cl', 'Cl', 'O', 'H'] to combine - -Fragments to allocate this iteration: 2 3 out of 7 7 -SEQUENTIAL Heavy iteration 17 with 8 and 8 Remaining in each list -SEQUENTIAL Heavy sending ['Fe', 'Cl', 'Cl', 'Cl', 'O', 'H'] and ['C', 'H', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] to combine - -Fragments to allocate this iteration: 2 4 out of 7 7 -SEQUENTIAL Heavy SKIPPED 14 and 49 - -Fragments to allocate this iteration: 2 5 out of 7 7 -SEQUENTIAL Heavy SKIPPED 14 and 51 - -Fragments to allocate this iteration: 2 6 out of 7 7 -SEQUENTIAL Heavy SKIPPED 14 and 51 - -Fragments to allocate this iteration: 2 7 out of 7 7 -SEQUENTIAL Heavy SKIPPED 14 and 49 - -Fragments to allocate this iteration: 3 0 out of 7 7 -SEQUENTIAL Heavy iteration 22 with 8 and 8 Remaining in each list -SEQUENTIAL Heavy sending ['Fe', 'Cl', 'Cl', 'Cl', 'O', 'H'] and ['Fe', 'Cl', 'Cl', 'Cl', 'O', 'H'] to combine - -Fragments to allocate this iteration: 3 1 out of 7 7 -SEQUENTIAL Heavy iteration 23 with 8 and 8 Remaining in each list -SEQUENTIAL Heavy sending ['C', 'H', 'H', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'H', 'C', 'H', 'H'] and ['Fe', 'Cl', 'Cl', 'Cl', 'O', 'H'] to combine - -Fragments to allocate this iteration: 3 2 out of 7 7 -SEQUENTIAL Heavy iteration 24 with 8 and 8 Remaining in each list -SEQUENTIAL Heavy sending ['C', 'H', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] and ['Fe', 'Cl', 'Cl', 'Cl', 'O', 'H'] to combine - -Fragments to allocate this iteration: 3 4 out of 7 7 -SEQUENTIAL Heavy SKIPPED 6 and 49 - -Fragments to allocate this iteration: 3 5 out of 7 7 -SEQUENTIAL Heavy SKIPPED 6 and 51 - -Fragments to allocate this iteration: 3 6 out of 7 7 -SEQUENTIAL Heavy SKIPPED 6 and 51 - -Fragments to allocate this iteration: 3 7 out of 7 7 -SEQUENTIAL Heavy SKIPPED 6 and 49 - -Fragments to allocate this iteration: 4 0 out of 7 7 -SEQUENTIAL Heavy SKIPPED 49 and 14 - -Fragments to allocate this iteration: 4 1 out of 7 7 -SEQUENTIAL Heavy SKIPPED 49 and 6 - -Fragments to allocate this iteration: 4 2 out of 7 7 -SEQUENTIAL Heavy SKIPPED 49 and 14 - -Fragments to allocate this iteration: 4 3 out of 7 7 -SEQUENTIAL Heavy SKIPPED 49 and 6 - -Fragments to allocate this iteration: 4 5 out of 7 7 -SEQUENTIAL Heavy SKIPPED 49 and 51 - -Fragments to allocate this iteration: 4 6 out of 7 7 -SEQUENTIAL Heavy SKIPPED 49 and 51 - -Fragments to allocate this iteration: 4 7 out of 7 7 -SEQUENTIAL Heavy SKIPPED 49 and 49 - -Fragments to allocate this iteration: 5 0 out of 7 7 -SEQUENTIAL Heavy SKIPPED 51 and 14 - -Fragments to allocate this iteration: 5 1 out of 7 7 -SEQUENTIAL Heavy SKIPPED 51 and 6 - -Fragments to allocate this iteration: 5 2 out of 7 7 -SEQUENTIAL Heavy SKIPPED 51 and 14 - -Fragments to allocate this iteration: 5 3 out of 7 7 -SEQUENTIAL Heavy SKIPPED 51 and 6 - -Fragments to allocate this iteration: 5 4 out of 7 7 -SEQUENTIAL Heavy SKIPPED 51 and 49 - -Fragments to allocate this iteration: 5 6 out of 7 7 -SEQUENTIAL Heavy SKIPPED 51 and 51 - -Fragments to allocate this iteration: 5 7 out of 7 7 -SEQUENTIAL Heavy SKIPPED 51 and 49 - -Fragments to allocate this iteration: 6 0 out of 7 7 -SEQUENTIAL Heavy SKIPPED 51 and 14 - -Fragments to allocate this iteration: 6 1 out of 7 7 -SEQUENTIAL Heavy SKIPPED 51 and 6 - -Fragments to allocate this iteration: 6 2 out of 7 7 -SEQUENTIAL Heavy SKIPPED 51 and 14 - -Fragments to allocate this iteration: 6 3 out of 7 7 -SEQUENTIAL Heavy SKIPPED 51 and 6 - -Fragments to allocate this iteration: 6 4 out of 7 7 -SEQUENTIAL Heavy SKIPPED 51 and 49 - -Fragments to allocate this iteration: 6 5 out of 7 7 -SEQUENTIAL Heavy SKIPPED 51 and 51 - -Fragments to allocate this iteration: 6 7 out of 7 7 -SEQUENTIAL Heavy SKIPPED 51 and 49 - -Fragments to allocate this iteration: 7 0 out of 7 7 -SEQUENTIAL Heavy SKIPPED 49 and 14 - -Fragments to allocate this iteration: 7 1 out of 7 7 -SEQUENTIAL Heavy SKIPPED 49 and 6 - -Fragments to allocate this iteration: 7 2 out of 7 7 -SEQUENTIAL Heavy SKIPPED 49 and 14 - -Fragments to allocate this iteration: 7 3 out of 7 7 -SEQUENTIAL Heavy SKIPPED 49 and 6 - -Fragments to allocate this iteration: 7 4 out of 7 7 -SEQUENTIAL Heavy SKIPPED 49 and 49 - -Fragments to allocate this iteration: 7 5 out of 7 7 -SEQUENTIAL Heavy SKIPPED 49 and 51 - -Fragments to allocate this iteration: 7 6 out of 7 7 -SEQUENTIAL Heavy SKIPPED 49 and 51 - Increased Threshold_tmat. Now: 0.8 - Maxsize of the translation matrix is= 27 - -Fragments to allocate this iteration: 0 1 out of 7 7 -SEQUENTIAL Heavy iteration 1 with 8 and 8 Remaining in each list -SEQUENTIAL Heavy sending ['C', 'H', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] and ['Fe', 'Cl', 'Cl', 'Cl', 'O', 'H'] to combine - -Fragments to allocate this iteration: 0 2 out of 7 7 -SEQUENTIAL Heavy iteration 2 with 8 and 8 Remaining in each list -SEQUENTIAL Heavy sending ['C', 'H', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] and ['C', 'H', 'H', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'H', 'C', 'H', 'H'] to combine - -Fragments to allocate this iteration: 0 3 out of 7 7 -SEQUENTIAL Heavy iteration 3 with 8 and 8 Remaining in each list -SEQUENTIAL Heavy sending ['C', 'H', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] and ['Fe', 'Cl', 'Cl', 'Cl', 'O', 'H'] to combine - -Fragments to allocate this iteration: 0 4 out of 7 7 -SEQUENTIAL Heavy SKIPPED 14 and 49 - -Fragments to allocate this iteration: 0 5 out of 7 7 -SEQUENTIAL Heavy SKIPPED 14 and 51 - -Fragments to allocate this iteration: 0 6 out of 7 7 -SEQUENTIAL Heavy SKIPPED 14 and 51 - -Fragments to allocate this iteration: 0 7 out of 7 7 -SEQUENTIAL Heavy SKIPPED 14 and 49 - -Fragments to allocate this iteration: 1 0 out of 7 7 -SEQUENTIAL Heavy iteration 8 with 8 and 8 Remaining in each list -SEQUENTIAL Heavy sending ['Fe', 'Cl', 'Cl', 'Cl', 'O', 'H'] and ['C', 'H', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] to combine - -Fragments to allocate this iteration: 1 2 out of 7 7 -SEQUENTIAL Heavy iteration 9 with 8 and 8 Remaining in each list -SEQUENTIAL Heavy sending ['C', 'H', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] and ['C', 'H', 'H', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'H', 'C', 'H', 'H'] to combine - -Fragments to allocate this iteration: 1 3 out of 7 7 -SEQUENTIAL Heavy iteration 10 with 8 and 8 Remaining in each list -SEQUENTIAL Heavy sending ['C', 'H', 'H', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'H', 'C', 'H', 'H'] and ['Fe', 'Cl', 'Cl', 'Cl', 'O', 'H'] to combine - -Fragments to allocate this iteration: 1 4 out of 7 7 -SEQUENTIAL Heavy SKIPPED 6 and 49 - -Fragments to allocate this iteration: 1 5 out of 7 7 -SEQUENTIAL Heavy SKIPPED 6 and 51 - -Fragments to allocate this iteration: 1 6 out of 7 7 -SEQUENTIAL Heavy SKIPPED 6 and 51 - -Fragments to allocate this iteration: 1 7 out of 7 7 -SEQUENTIAL Heavy SKIPPED 6 and 49 - -Fragments to allocate this iteration: 2 0 out of 7 7 -SEQUENTIAL Heavy iteration 15 with 8 and 8 Remaining in each list -SEQUENTIAL Heavy sending ['C', 'H', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] and ['C', 'H', 'H', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'H', 'C', 'H', 'H'] to combine - -Fragments to allocate this iteration: 2 1 out of 7 7 -SEQUENTIAL Heavy iteration 16 with 8 and 8 Remaining in each list -SEQUENTIAL Heavy sending ['Fe', 'Cl', 'Cl', 'Cl', 'O', 'H'] and ['C', 'H', 'H', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'H', 'C', 'H', 'H'] to combine - -Fragments to allocate this iteration: 2 3 out of 7 7 -SEQUENTIAL Heavy iteration 17 with 8 and 8 Remaining in each list -SEQUENTIAL Heavy sending ['C', 'H', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] and ['Fe', 'Cl', 'Cl', 'Cl', 'O', 'H'] to combine - -Fragments to allocate this iteration: 2 4 out of 7 7 -SEQUENTIAL Heavy SKIPPED 6 and 49 - -Fragments to allocate this iteration: 2 5 out of 7 7 -SEQUENTIAL Heavy SKIPPED 6 and 51 - -Fragments to allocate this iteration: 2 6 out of 7 7 -SEQUENTIAL Heavy SKIPPED 6 and 51 - -Fragments to allocate this iteration: 2 7 out of 7 7 -SEQUENTIAL Heavy SKIPPED 6 and 49 - -Fragments to allocate this iteration: 3 0 out of 7 7 -SEQUENTIAL Heavy iteration 22 with 8 and 8 Remaining in each list -SEQUENTIAL Heavy sending ['C', 'H', 'H', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'H', 'C', 'H', 'H'] and ['C', 'H', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] to combine - -Fragments to allocate this iteration: 3 1 out of 7 7 -SEQUENTIAL Heavy iteration 23 with 8 and 8 Remaining in each list -SEQUENTIAL Heavy sending ['Fe', 'Cl', 'Cl', 'Cl', 'O', 'H'] and ['C', 'H', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] to combine - -Fragments to allocate this iteration: 3 2 out of 7 7 -SEQUENTIAL Heavy iteration 24 with 8 and 8 Remaining in each list -SEQUENTIAL Heavy sending ['Fe', 'Cl', 'Cl', 'Cl', 'O', 'H'] and ['C', 'H', 'H', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'H', 'C', 'H', 'H'] to combine - -Fragments to allocate this iteration: 3 4 out of 7 7 -SEQUENTIAL Heavy SKIPPED 14 and 49 - -Fragments to allocate this iteration: 3 5 out of 7 7 -SEQUENTIAL Heavy SKIPPED 14 and 51 - -Fragments to allocate this iteration: 3 6 out of 7 7 -SEQUENTIAL Heavy SKIPPED 14 and 51 - -Fragments to allocate this iteration: 3 7 out of 7 7 -SEQUENTIAL Heavy SKIPPED 14 and 49 - -Fragments to allocate this iteration: 4 0 out of 7 7 -SEQUENTIAL Heavy SKIPPED 49 and 6 - -Fragments to allocate this iteration: 4 1 out of 7 7 -SEQUENTIAL Heavy SKIPPED 49 and 14 - -Fragments to allocate this iteration: 4 2 out of 7 7 -SEQUENTIAL Heavy SKIPPED 49 and 6 - -Fragments to allocate this iteration: 4 3 out of 7 7 -SEQUENTIAL Heavy SKIPPED 49 and 14 - -Fragments to allocate this iteration: 4 5 out of 7 7 -SEQUENTIAL Heavy SKIPPED 49 and 51 - -Fragments to allocate this iteration: 4 6 out of 7 7 -SEQUENTIAL Heavy SKIPPED 49 and 51 - -Fragments to allocate this iteration: 4 7 out of 7 7 -SEQUENTIAL Heavy SKIPPED 49 and 49 - -Fragments to allocate this iteration: 5 0 out of 7 7 -SEQUENTIAL Heavy SKIPPED 51 and 6 - -Fragments to allocate this iteration: 5 1 out of 7 7 -SEQUENTIAL Heavy SKIPPED 51 and 14 - -Fragments to allocate this iteration: 5 2 out of 7 7 -SEQUENTIAL Heavy SKIPPED 51 and 6 - -Fragments to allocate this iteration: 5 3 out of 7 7 -SEQUENTIAL Heavy SKIPPED 51 and 14 - -Fragments to allocate this iteration: 5 4 out of 7 7 -SEQUENTIAL Heavy SKIPPED 51 and 49 - -Fragments to allocate this iteration: 5 6 out of 7 7 -SEQUENTIAL Heavy SKIPPED 51 and 51 - -Fragments to allocate this iteration: 5 7 out of 7 7 -SEQUENTIAL Heavy SKIPPED 51 and 49 - -Fragments to allocate this iteration: 6 0 out of 7 7 -SEQUENTIAL Heavy SKIPPED 51 and 6 - -Fragments to allocate this iteration: 6 1 out of 7 7 -SEQUENTIAL Heavy SKIPPED 51 and 14 - -Fragments to allocate this iteration: 6 2 out of 7 7 -SEQUENTIAL Heavy SKIPPED 51 and 6 - -Fragments to allocate this iteration: 6 3 out of 7 7 -SEQUENTIAL Heavy SKIPPED 51 and 14 - -Fragments to allocate this iteration: 6 4 out of 7 7 -SEQUENTIAL Heavy SKIPPED 51 and 49 - -Fragments to allocate this iteration: 6 5 out of 7 7 -SEQUENTIAL Heavy SKIPPED 51 and 51 - -Fragments to allocate this iteration: 6 7 out of 7 7 -SEQUENTIAL Heavy SKIPPED 51 and 49 - -Fragments to allocate this iteration: 7 0 out of 7 7 -SEQUENTIAL Heavy SKIPPED 49 and 6 - -Fragments to allocate this iteration: 7 1 out of 7 7 -SEQUENTIAL Heavy SKIPPED 49 and 14 - -Fragments to allocate this iteration: 7 2 out of 7 7 -SEQUENTIAL Heavy SKIPPED 49 and 6 - -Fragments to allocate this iteration: 7 3 out of 7 7 -SEQUENTIAL Heavy SKIPPED 49 and 14 - -Fragments to allocate this iteration: 7 4 out of 7 7 -SEQUENTIAL Heavy SKIPPED 49 and 49 - -Fragments to allocate this iteration: 7 5 out of 7 7 -SEQUENTIAL Heavy SKIPPED 49 and 51 - -Fragments to allocate this iteration: 7 6 out of 7 7 -SEQUENTIAL Heavy SKIPPED 49 and 51 -Launching Last Attempt -Trying Full Tmatrix for all Items in list - -Fragments to allocate this iteration: 0 1 out of 7 7 -SEQUENTIAL Heavy iteration 1 with 8 and 8 Remaining in each list -SEQUENTIAL Heavy sending ['Fe', 'Cl', 'Cl', 'Cl', 'O', 'H'] and ['C', 'H', 'H', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'H', 'C', 'H', 'H'] to combine - -Fragments to allocate this iteration: 0 2 out of 7 7 -SEQUENTIAL Heavy iteration 2 with 8 and 8 Remaining in each list -SEQUENTIAL Heavy sending ['Fe', 'Cl', 'Cl', 'Cl', 'O', 'H'] and ['Fe', 'Cl', 'Cl', 'Cl', 'O', 'H'] to combine - -Fragments to allocate this iteration: 0 3 out of 7 7 -SEQUENTIAL Heavy iteration 3 with 8 and 8 Remaining in each list -SEQUENTIAL Heavy sending ['Fe', 'Cl', 'Cl', 'Cl', 'O', 'H'] and ['C', 'H', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] to combine - -Fragments to allocate this iteration: 0 4 out of 7 7 -SEQUENTIAL Heavy SKIPPED 6 and 49 - -Fragments to allocate this iteration: 0 5 out of 7 7 -SEQUENTIAL Heavy SKIPPED 6 and 51 - -Fragments to allocate this iteration: 0 6 out of 7 7 -SEQUENTIAL Heavy SKIPPED 6 and 51 - -Fragments to allocate this iteration: 0 7 out of 7 7 -SEQUENTIAL Heavy SKIPPED 6 and 49 - -Fragments to allocate this iteration: 1 0 out of 7 7 -SEQUENTIAL Heavy iteration 8 with 8 and 8 Remaining in each list -SEQUENTIAL Heavy sending ['C', 'H', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] and ['Fe', 'Cl', 'Cl', 'Cl', 'O', 'H'] to combine - -Fragments to allocate this iteration: 1 2 out of 7 7 -SEQUENTIAL Heavy iteration 9 with 8 and 8 Remaining in each list -SEQUENTIAL Heavy sending ['Fe', 'Cl', 'Cl', 'Cl', 'O', 'H'] and ['Fe', 'Cl', 'Cl', 'Cl', 'O', 'H'] to combine - -Fragments to allocate this iteration: 1 3 out of 7 7 -SEQUENTIAL Heavy iteration 10 with 8 and 8 Remaining in each list -SEQUENTIAL Heavy sending ['Fe', 'Cl', 'Cl', 'Cl', 'O', 'H'] and ['C', 'H', 'H', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'H', 'C', 'H', 'H'] to combine - -Fragments to allocate this iteration: 1 4 out of 7 7 -SEQUENTIAL Heavy SKIPPED 14 and 49 - -Fragments to allocate this iteration: 1 5 out of 7 7 -SEQUENTIAL Heavy SKIPPED 14 and 51 - -Fragments to allocate this iteration: 1 6 out of 7 7 -SEQUENTIAL Heavy SKIPPED 14 and 51 - -Fragments to allocate this iteration: 1 7 out of 7 7 -SEQUENTIAL Heavy SKIPPED 14 and 49 - -Fragments to allocate this iteration: 2 0 out of 7 7 -SEQUENTIAL Heavy iteration 15 with 8 and 8 Remaining in each list -SEQUENTIAL Heavy sending ['Fe', 'Cl', 'Cl', 'Cl', 'O', 'H'] and ['Fe', 'Cl', 'Cl', 'Cl', 'O', 'H'] to combine - -Fragments to allocate this iteration: 2 1 out of 7 7 -SEQUENTIAL Heavy iteration 16 with 8 and 8 Remaining in each list -SEQUENTIAL Heavy sending ['C', 'H', 'H', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'H', 'C', 'H', 'H'] and ['Fe', 'Cl', 'Cl', 'Cl', 'O', 'H'] to combine - -Fragments to allocate this iteration: 2 3 out of 7 7 -SEQUENTIAL Heavy iteration 17 with 8 and 8 Remaining in each list -SEQUENTIAL Heavy sending ['Fe', 'Cl', 'Cl', 'Cl', 'O', 'H'] and ['C', 'H', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] to combine - -Fragments to allocate this iteration: 2 4 out of 7 7 -SEQUENTIAL Heavy SKIPPED 14 and 49 - -Fragments to allocate this iteration: 2 5 out of 7 7 -SEQUENTIAL Heavy SKIPPED 14 and 51 - -Fragments to allocate this iteration: 2 6 out of 7 7 -SEQUENTIAL Heavy SKIPPED 14 and 51 - -Fragments to allocate this iteration: 2 7 out of 7 7 -SEQUENTIAL Heavy SKIPPED 14 and 49 - -Fragments to allocate this iteration: 3 0 out of 7 7 -SEQUENTIAL Heavy iteration 22 with 8 and 8 Remaining in each list -SEQUENTIAL Heavy sending ['Fe', 'Cl', 'Cl', 'Cl', 'O', 'H'] and ['Fe', 'Cl', 'Cl', 'Cl', 'O', 'H'] to combine - -Fragments to allocate this iteration: 3 1 out of 7 7 -SEQUENTIAL Heavy iteration 23 with 8 and 8 Remaining in each list -SEQUENTIAL Heavy sending ['C', 'H', 'H', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'H', 'C', 'H', 'H'] and ['Fe', 'Cl', 'Cl', 'Cl', 'O', 'H'] to combine - -Fragments to allocate this iteration: 3 2 out of 7 7 -SEQUENTIAL Heavy iteration 24 with 8 and 8 Remaining in each list -SEQUENTIAL Heavy sending ['C', 'H', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] and ['Fe', 'Cl', 'Cl', 'Cl', 'O', 'H'] to combine - -Fragments to allocate this iteration: 3 4 out of 7 7 -SEQUENTIAL Heavy SKIPPED 6 and 49 - -Fragments to allocate this iteration: 3 5 out of 7 7 -SEQUENTIAL Heavy SKIPPED 6 and 51 - -Fragments to allocate this iteration: 3 6 out of 7 7 -SEQUENTIAL Heavy SKIPPED 6 and 51 - -Fragments to allocate this iteration: 3 7 out of 7 7 -SEQUENTIAL Heavy SKIPPED 6 and 49 - -Fragments to allocate this iteration: 4 0 out of 7 7 -SEQUENTIAL Heavy SKIPPED 49 and 14 - -Fragments to allocate this iteration: 4 1 out of 7 7 -SEQUENTIAL Heavy SKIPPED 49 and 6 - -Fragments to allocate this iteration: 4 2 out of 7 7 -SEQUENTIAL Heavy SKIPPED 49 and 14 - -Fragments to allocate this iteration: 4 3 out of 7 7 -SEQUENTIAL Heavy SKIPPED 49 and 6 - -Fragments to allocate this iteration: 4 5 out of 7 7 -SEQUENTIAL Heavy SKIPPED 49 and 51 - -Fragments to allocate this iteration: 4 6 out of 7 7 -SEQUENTIAL Heavy SKIPPED 49 and 51 - -Fragments to allocate this iteration: 4 7 out of 7 7 -SEQUENTIAL Heavy SKIPPED 49 and 49 - -Fragments to allocate this iteration: 5 0 out of 7 7 -SEQUENTIAL Heavy SKIPPED 51 and 14 - -Fragments to allocate this iteration: 5 1 out of 7 7 -SEQUENTIAL Heavy SKIPPED 51 and 6 - -Fragments to allocate this iteration: 5 2 out of 7 7 -SEQUENTIAL Heavy SKIPPED 51 and 14 - -Fragments to allocate this iteration: 5 3 out of 7 7 -SEQUENTIAL Heavy SKIPPED 51 and 6 - -Fragments to allocate this iteration: 5 4 out of 7 7 -SEQUENTIAL Heavy SKIPPED 51 and 49 - -Fragments to allocate this iteration: 5 6 out of 7 7 -SEQUENTIAL Heavy SKIPPED 51 and 51 - -Fragments to allocate this iteration: 5 7 out of 7 7 -SEQUENTIAL Heavy SKIPPED 51 and 49 - -Fragments to allocate this iteration: 6 0 out of 7 7 -SEQUENTIAL Heavy SKIPPED 51 and 14 - -Fragments to allocate this iteration: 6 1 out of 7 7 -SEQUENTIAL Heavy SKIPPED 51 and 6 - -Fragments to allocate this iteration: 6 2 out of 7 7 -SEQUENTIAL Heavy SKIPPED 51 and 14 - -Fragments to allocate this iteration: 6 3 out of 7 7 -SEQUENTIAL Heavy SKIPPED 51 and 6 - -Fragments to allocate this iteration: 6 4 out of 7 7 -SEQUENTIAL Heavy SKIPPED 51 and 49 - -Fragments to allocate this iteration: 6 5 out of 7 7 -SEQUENTIAL Heavy SKIPPED 51 and 51 - -Fragments to allocate this iteration: 6 7 out of 7 7 -SEQUENTIAL Heavy SKIPPED 51 and 49 - -Fragments to allocate this iteration: 7 0 out of 7 7 -SEQUENTIAL Heavy SKIPPED 49 and 14 - -Fragments to allocate this iteration: 7 1 out of 7 7 -SEQUENTIAL Heavy SKIPPED 49 and 6 - -Fragments to allocate this iteration: 7 2 out of 7 7 -SEQUENTIAL Heavy SKIPPED 49 and 14 - -Fragments to allocate this iteration: 7 3 out of 7 7 -SEQUENTIAL Heavy SKIPPED 49 and 6 - -Fragments to allocate this iteration: 7 4 out of 7 7 -SEQUENTIAL Heavy SKIPPED 49 and 49 - -Fragments to allocate this iteration: 7 5 out of 7 7 -SEQUENTIAL Heavy SKIPPED 49 and 51 - -Fragments to allocate this iteration: 7 6 out of 7 7 -SEQUENTIAL Heavy SKIPPED 49 and 51 -Sequential: list1 end: ['C', 'H', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] -Sequential: list1 end: ['Fe', 'Cl', 'Cl', 'Cl', 'O', 'H'] -Sequential: list1 end: ['C', 'H', 'H', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'H', 'C', 'H', 'H'] -Sequential: list1 end: ['Fe', 'Cl', 'Cl', 'Cl', 'O', 'H'] -Sequential: list1 end: ['N', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H'] -Sequential: list1 end: ['N', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] -Sequential: list1 end: ['N', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] -Sequential: list1 end: ['N', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H'] -0 molecules and 8 fragments out of SEQUENTIAL with Heavy - -NO Molecules reconstructed after Heavy -Remaining after Heavy 14 H9-C4-O Rec. Fragment -Remaining after Heavy 6 H-O-Cl3-Fe Heavy -Remaining after Heavy 14 H9-C4-O Rec. Fragment -Remaining after Heavy 6 H-O-Cl3-Fe Heavy -Remaining after Heavy 49 H32-C16-N Heavy -Remaining after Heavy 51 H34-C16-N Rec. Fragment -Remaining after Heavy 51 H34-C16-N Rec. Fragment -Remaining after Heavy 49 H32-C16-N Heavy - - -############################################## -24 molecules submitted to sequential with All -############################################## -Entered sequential with 24 fragments to reconstruct -Found 8 and 16 Heavy and Hydrogen fragments, respectively - -Fragments to allocate this iteration: 0 0 out of 7 15 -SEQUENTIAL All iteration 1 with 8 and 16 Remaining in each list -SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] and ['H'] to combine - -Fragments to allocate this iteration: 0 1 out of 7 15 -SEQUENTIAL All iteration 2 with 8 and 16 Remaining in each list -SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] and ['H'] to combine - -Fragments to allocate this iteration: 0 2 out of 7 15 -SEQUENTIAL All iteration 3 with 8 and 16 Remaining in each list -SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] and ['H'] to combine - -Fragments to allocate this iteration: 0 3 out of 7 15 -SEQUENTIAL All iteration 4 with 8 and 16 Remaining in each list -SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] and ['H'] to combine - -Fragments to allocate this iteration: 0 4 out of 7 15 -SEQUENTIAL All iteration 5 with 8 and 16 Remaining in each list -SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] and ['H'] to combine - -Fragments to allocate this iteration: 0 5 out of 7 15 -SEQUENTIAL All iteration 6 with 8 and 16 Remaining in each list -SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] and ['H'] to combine - -Fragments to allocate this iteration: 0 6 out of 7 15 -SEQUENTIAL All iteration 7 with 8 and 16 Remaining in each list -SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] and ['H'] to combine - -Fragments to allocate this iteration: 0 7 out of 7 15 -SEQUENTIAL All iteration 8 with 8 and 16 Remaining in each list -SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] and ['H'] to combine - -Fragments to allocate this iteration: 0 8 out of 7 15 -SEQUENTIAL All iteration 9 with 8 and 16 Remaining in each list -SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] and ['H'] to combine - -Fragments to allocate this iteration: 0 9 out of 7 15 -SEQUENTIAL All iteration 10 with 8 and 16 Remaining in each list -SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] and ['H'] to combine - -Fragments to allocate this iteration: 0 10 out of 7 15 -SEQUENTIAL All iteration 11 with 8 and 16 Remaining in each list -SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] and ['H'] to combine - -Fragments to allocate this iteration: 0 11 out of 7 15 -SEQUENTIAL All iteration 12 with 8 and 16 Remaining in each list -SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] and ['H'] to combine - -Fragments to allocate this iteration: 0 12 out of 7 15 -SEQUENTIAL All iteration 13 with 8 and 16 Remaining in each list -SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] and ['H'] to combine - -Fragments to allocate this iteration: 0 13 out of 7 15 -SEQUENTIAL All iteration 14 with 8 and 16 Remaining in each list -SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] and ['H'] to combine - -Fragments to allocate this iteration: 0 14 out of 7 15 -SEQUENTIAL All iteration 15 with 8 and 16 Remaining in each list -SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] and ['H'] to combine - -Fragments to allocate this iteration: 0 15 out of 7 15 -SEQUENTIAL All iteration 16 with 8 and 16 Remaining in each list -SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] and ['H'] to combine -SEQUENTIAL: Molecules found so far: -0 15 ['C', 'H', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] - -Fragments to allocate this iteration: 0 1 out of 6 14 -SEQUENTIAL All iteration 17 with 7 and 15 Remaining in each list -SEQUENTIAL All sending ['Fe', 'Cl', 'Cl', 'Cl', 'O', 'H'] and ['H'] to combine - -Fragments to allocate this iteration: 0 2 out of 6 14 -SEQUENTIAL All iteration 18 with 7 and 15 Remaining in each list -SEQUENTIAL All sending ['Fe', 'Cl', 'Cl', 'Cl', 'O', 'H'] and ['H'] to combine - -Fragments to allocate this iteration: 0 3 out of 6 14 -SEQUENTIAL All iteration 19 with 7 and 15 Remaining in each list -SEQUENTIAL All sending ['Fe', 'Cl', 'Cl', 'Cl', 'O', 'H'] and ['H'] to combine - -Fragments to allocate this iteration: 0 4 out of 6 14 -SEQUENTIAL All iteration 20 with 7 and 15 Remaining in each list -SEQUENTIAL All sending ['Fe', 'Cl', 'Cl', 'Cl', 'O', 'H'] and ['H'] to combine - -Fragments to allocate this iteration: 0 5 out of 6 14 -SEQUENTIAL All iteration 21 with 7 and 15 Remaining in each list -SEQUENTIAL All sending ['Fe', 'Cl', 'Cl', 'Cl', 'O', 'H'] and ['H'] to combine - -Fragments to allocate this iteration: 0 6 out of 6 14 -SEQUENTIAL All iteration 22 with 7 and 15 Remaining in each list -SEQUENTIAL All sending ['Fe', 'Cl', 'Cl', 'Cl', 'O', 'H'] and ['H'] to combine - -Fragments to allocate this iteration: 0 7 out of 6 14 -SEQUENTIAL All iteration 23 with 7 and 15 Remaining in each list -SEQUENTIAL All sending ['Fe', 'Cl', 'Cl', 'Cl', 'O', 'H'] and ['H'] to combine - -Fragments to allocate this iteration: 0 8 out of 6 14 -SEQUENTIAL All iteration 24 with 7 and 15 Remaining in each list -SEQUENTIAL All sending ['Fe', 'Cl', 'Cl', 'Cl', 'O', 'H'] and ['H'] to combine - -Fragments to allocate this iteration: 0 9 out of 6 14 -SEQUENTIAL All iteration 25 with 7 and 15 Remaining in each list -SEQUENTIAL All sending ['Fe', 'Cl', 'Cl', 'Cl', 'O', 'H'] and ['H'] to combine - -Fragments to allocate this iteration: 0 10 out of 6 14 -SEQUENTIAL All iteration 26 with 7 and 15 Remaining in each list -SEQUENTIAL All sending ['Fe', 'Cl', 'Cl', 'Cl', 'O', 'H'] and ['H'] to combine - -Fragments to allocate this iteration: 0 11 out of 6 14 -SEQUENTIAL All iteration 27 with 7 and 15 Remaining in each list -SEQUENTIAL All sending ['Fe', 'Cl', 'Cl', 'Cl', 'O', 'H'] and ['H'] to combine - -Fragments to allocate this iteration: 0 12 out of 6 14 -SEQUENTIAL All iteration 28 with 7 and 15 Remaining in each list -SEQUENTIAL All sending ['Fe', 'Cl', 'Cl', 'Cl', 'O', 'H'] and ['H'] to combine - -Fragments to allocate this iteration: 0 13 out of 6 14 -SEQUENTIAL All iteration 29 with 7 and 15 Remaining in each list -SEQUENTIAL All sending ['Fe', 'Cl', 'Cl', 'Cl', 'O', 'H'] and ['H'] to combine -SEQUENTIAL: Molecules found so far: -0 15 ['C', 'H', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] -1 7 ['Fe', 'Cl', 'Cl', 'Cl', 'O', 'H', 'H'] - -Fragments to allocate this iteration: 0 1 out of 5 13 -SEQUENTIAL All iteration 30 with 6 and 14 Remaining in each list -SEQUENTIAL All sending ['C', 'H', 'H', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine - -Fragments to allocate this iteration: 0 2 out of 5 13 -SEQUENTIAL All iteration 31 with 6 and 14 Remaining in each list -SEQUENTIAL All sending ['C', 'H', 'H', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine - -Fragments to allocate this iteration: 0 3 out of 5 13 -SEQUENTIAL All iteration 32 with 6 and 14 Remaining in each list -SEQUENTIAL All sending ['C', 'H', 'H', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine - -Fragments to allocate this iteration: 0 4 out of 5 13 -SEQUENTIAL All iteration 33 with 6 and 14 Remaining in each list -SEQUENTIAL All sending ['C', 'H', 'H', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine - -Fragments to allocate this iteration: 0 5 out of 5 13 -SEQUENTIAL All iteration 34 with 6 and 14 Remaining in each list -SEQUENTIAL All sending ['C', 'H', 'H', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine - -Fragments to allocate this iteration: 0 6 out of 5 13 -SEQUENTIAL All iteration 35 with 6 and 14 Remaining in each list -SEQUENTIAL All sending ['C', 'H', 'H', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine - -Fragments to allocate this iteration: 0 7 out of 5 13 -SEQUENTIAL All iteration 36 with 6 and 14 Remaining in each list -SEQUENTIAL All sending ['C', 'H', 'H', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine - -Fragments to allocate this iteration: 0 8 out of 5 13 -SEQUENTIAL All iteration 37 with 6 and 14 Remaining in each list -SEQUENTIAL All sending ['C', 'H', 'H', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine - -Fragments to allocate this iteration: 0 9 out of 5 13 -SEQUENTIAL All iteration 38 with 6 and 14 Remaining in each list -SEQUENTIAL All sending ['C', 'H', 'H', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine - -Fragments to allocate this iteration: 0 10 out of 5 13 -SEQUENTIAL All iteration 39 with 6 and 14 Remaining in each list -SEQUENTIAL All sending ['C', 'H', 'H', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine - -Fragments to allocate this iteration: 0 11 out of 5 13 -SEQUENTIAL All iteration 40 with 6 and 14 Remaining in each list -SEQUENTIAL All sending ['C', 'H', 'H', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine - -Fragments to allocate this iteration: 0 12 out of 5 13 -SEQUENTIAL All iteration 41 with 6 and 14 Remaining in each list -SEQUENTIAL All sending ['C', 'H', 'H', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -SEQUENTIAL: Molecules found so far: -0 15 ['C', 'H', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] -1 7 ['Fe', 'Cl', 'Cl', 'Cl', 'O', 'H', 'H'] -2 15 ['C', 'H', 'H', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] - -Fragments to allocate this iteration: 0 1 out of 4 12 -SEQUENTIAL All iteration 42 with 5 and 13 Remaining in each list -SEQUENTIAL All sending ['Fe', 'Cl', 'Cl', 'Cl', 'O', 'H'] and ['H'] to combine - -Fragments to allocate this iteration: 0 2 out of 4 12 -SEQUENTIAL All iteration 43 with 5 and 13 Remaining in each list -SEQUENTIAL All sending ['Fe', 'Cl', 'Cl', 'Cl', 'O', 'H'] and ['H'] to combine - -Fragments to allocate this iteration: 0 3 out of 4 12 -SEQUENTIAL All iteration 44 with 5 and 13 Remaining in each list -SEQUENTIAL All sending ['Fe', 'Cl', 'Cl', 'Cl', 'O', 'H'] and ['H'] to combine - -Fragments to allocate this iteration: 0 4 out of 4 12 -SEQUENTIAL All iteration 45 with 5 and 13 Remaining in each list -SEQUENTIAL All sending ['Fe', 'Cl', 'Cl', 'Cl', 'O', 'H'] and ['H'] to combine - -Fragments to allocate this iteration: 0 5 out of 4 12 -SEQUENTIAL All iteration 46 with 5 and 13 Remaining in each list -SEQUENTIAL All sending ['Fe', 'Cl', 'Cl', 'Cl', 'O', 'H'] and ['H'] to combine - -Fragments to allocate this iteration: 0 6 out of 4 12 -SEQUENTIAL All iteration 47 with 5 and 13 Remaining in each list -SEQUENTIAL All sending ['Fe', 'Cl', 'Cl', 'Cl', 'O', 'H'] and ['H'] to combine - -Fragments to allocate this iteration: 0 7 out of 4 12 -SEQUENTIAL All iteration 48 with 5 and 13 Remaining in each list -SEQUENTIAL All sending ['Fe', 'Cl', 'Cl', 'Cl', 'O', 'H'] and ['H'] to combine - -Fragments to allocate this iteration: 0 8 out of 4 12 -SEQUENTIAL All iteration 49 with 5 and 13 Remaining in each list -SEQUENTIAL All sending ['Fe', 'Cl', 'Cl', 'Cl', 'O', 'H'] and ['H'] to combine - -Fragments to allocate this iteration: 0 9 out of 4 12 -SEQUENTIAL All iteration 50 with 5 and 13 Remaining in each list -SEQUENTIAL All sending ['Fe', 'Cl', 'Cl', 'Cl', 'O', 'H'] and ['H'] to combine - -Fragments to allocate this iteration: 0 10 out of 4 12 -SEQUENTIAL All iteration 51 with 5 and 13 Remaining in each list -SEQUENTIAL All sending ['Fe', 'Cl', 'Cl', 'Cl', 'O', 'H'] and ['H'] to combine - -Fragments to allocate this iteration: 0 11 out of 4 12 -SEQUENTIAL All iteration 52 with 5 and 13 Remaining in each list -SEQUENTIAL All sending ['Fe', 'Cl', 'Cl', 'Cl', 'O', 'H'] and ['H'] to combine -SEQUENTIAL: Molecules found so far: -0 15 ['C', 'H', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] -1 7 ['Fe', 'Cl', 'Cl', 'Cl', 'O', 'H', 'H'] -2 15 ['C', 'H', 'H', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] -3 7 ['Fe', 'Cl', 'Cl', 'Cl', 'O', 'H', 'H'] - -Fragments to allocate this iteration: 0 1 out of 3 11 -SEQUENTIAL All iteration 53 with 4 and 12 Remaining in each list -SEQUENTIAL All sending ['N', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H'] and ['H'] to combine - -Fragments to allocate this iteration: 0 1 out of 3 10 -SEQUENTIAL All iteration 54 with 4 and 11 Remaining in each list -SEQUENTIAL All sending ['N', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine - -Fragments to allocate this iteration: 0 2 out of 3 10 -SEQUENTIAL All iteration 55 with 4 and 11 Remaining in each list -SEQUENTIAL All sending ['N', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine - -Fragments to allocate this iteration: 0 3 out of 3 10 -SEQUENTIAL All iteration 56 with 4 and 11 Remaining in each list -SEQUENTIAL All sending ['N', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine - -Fragments to allocate this iteration: 0 4 out of 3 10 -SEQUENTIAL All iteration 57 with 4 and 11 Remaining in each list -SEQUENTIAL All sending ['N', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine - -Fragments to allocate this iteration: 0 5 out of 3 10 -SEQUENTIAL All iteration 58 with 4 and 11 Remaining in each list -SEQUENTIAL All sending ['N', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine - -Fragments to allocate this iteration: 0 1 out of 3 9 -SEQUENTIAL All iteration 59 with 4 and 10 Remaining in each list -SEQUENTIAL All sending ['N', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] and ['H'] to combine - -Fragments to allocate this iteration: 0 2 out of 3 9 -SEQUENTIAL All iteration 60 with 4 and 10 Remaining in each list -SEQUENTIAL All sending ['N', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] and ['H'] to combine - -Fragments to allocate this iteration: 0 3 out of 3 9 -SEQUENTIAL All iteration 61 with 4 and 10 Remaining in each list -SEQUENTIAL All sending ['N', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] and ['H'] to combine - -Fragments to allocate this iteration: 0 4 out of 3 9 -SEQUENTIAL All iteration 62 with 4 and 10 Remaining in each list -SEQUENTIAL All sending ['N', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] and ['H'] to combine - -Fragments to allocate this iteration: 0 5 out of 3 9 -SEQUENTIAL All iteration 63 with 4 and 10 Remaining in each list -SEQUENTIAL All sending ['N', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] and ['H'] to combine - -Fragments to allocate this iteration: 0 1 out of 3 8 -SEQUENTIAL All iteration 64 with 4 and 9 Remaining in each list -SEQUENTIAL All sending ['N', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine - -Fragments to allocate this iteration: 0 2 out of 3 8 -SEQUENTIAL All iteration 65 with 4 and 9 Remaining in each list -SEQUENTIAL All sending ['N', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine - -Fragments to allocate this iteration: 0 3 out of 3 8 -SEQUENTIAL All iteration 66 with 4 and 9 Remaining in each list -SEQUENTIAL All sending ['N', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine - -Fragments to allocate this iteration: 0 4 out of 3 8 -SEQUENTIAL All iteration 67 with 4 and 9 Remaining in each list -SEQUENTIAL All sending ['N', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine - -Fragments to allocate this iteration: 0 5 out of 3 8 -SEQUENTIAL All iteration 68 with 4 and 9 Remaining in each list -SEQUENTIAL All sending ['N', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine - -Fragments to allocate this iteration: 0 6 out of 3 8 -SEQUENTIAL All iteration 69 with 4 and 9 Remaining in each list -SEQUENTIAL All sending ['N', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -SEQUENTIAL: Molecules found so far: -0 15 ['C', 'H', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] -1 7 ['Fe', 'Cl', 'Cl', 'Cl', 'O', 'H', 'H'] -2 15 ['C', 'H', 'H', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] -3 7 ['Fe', 'Cl', 'Cl', 'Cl', 'O', 'H', 'H'] -4 53 ['N', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H'] - -Fragments to allocate this iteration: 0 1 out of 2 7 -SEQUENTIAL All iteration 70 with 3 and 8 Remaining in each list -SEQUENTIAL All sending ['N', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] and ['H'] to combine - -Fragments to allocate this iteration: 0 2 out of 2 7 -SEQUENTIAL All iteration 71 with 3 and 8 Remaining in each list -SEQUENTIAL All sending ['N', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] and ['H'] to combine - -Fragments to allocate this iteration: 0 1 out of 2 6 -SEQUENTIAL All iteration 72 with 3 and 7 Remaining in each list -SEQUENTIAL All sending ['N', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine - -Fragments to allocate this iteration: 0 2 out of 2 6 -SEQUENTIAL All iteration 73 with 3 and 7 Remaining in each list -SEQUENTIAL All sending ['N', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine - -Fragments to allocate this iteration: 0 3 out of 2 6 -SEQUENTIAL All iteration 74 with 3 and 7 Remaining in each list -SEQUENTIAL All sending ['N', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -SEQUENTIAL: Molecules found so far: -0 15 ['C', 'H', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] -1 7 ['Fe', 'Cl', 'Cl', 'Cl', 'O', 'H', 'H'] -2 15 ['C', 'H', 'H', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] -3 7 ['Fe', 'Cl', 'Cl', 'Cl', 'O', 'H', 'H'] -4 53 ['N', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H'] -5 53 ['N', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H'] - -Fragments to allocate this iteration: 0 1 out of 1 5 -SEQUENTIAL All iteration 75 with 2 and 6 Remaining in each list -SEQUENTIAL All sending ['N', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] and ['H'] to combine - -Fragments to allocate this iteration: 0 2 out of 1 5 -SEQUENTIAL All iteration 76 with 2 and 6 Remaining in each list -SEQUENTIAL All sending ['N', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] and ['H'] to combine - -Fragments to allocate this iteration: 0 3 out of 1 5 -SEQUENTIAL All iteration 77 with 2 and 6 Remaining in each list -SEQUENTIAL All sending ['N', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] and ['H'] to combine - -Fragments to allocate this iteration: 0 1 out of 1 4 -SEQUENTIAL All iteration 78 with 2 and 5 Remaining in each list -SEQUENTIAL All sending ['N', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine - -Fragments to allocate this iteration: 0 2 out of 1 4 -SEQUENTIAL All iteration 79 with 2 and 5 Remaining in each list -SEQUENTIAL All sending ['N', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -SEQUENTIAL: Molecules found so far: -0 15 ['C', 'H', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] -1 7 ['Fe', 'Cl', 'Cl', 'Cl', 'O', 'H', 'H'] -2 15 ['C', 'H', 'H', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] -3 7 ['Fe', 'Cl', 'Cl', 'Cl', 'O', 'H', 'H'] -4 53 ['N', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H'] -5 53 ['N', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H'] -6 53 ['N', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H'] - -Fragments to allocate this iteration: 0 1 out of 0 3 -SEQUENTIAL All iteration 80 with 1 and 4 Remaining in each list -SEQUENTIAL All sending ['N', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H'] and ['H'] to combine - -Fragments to allocate this iteration: 0 1 out of 0 2 -SEQUENTIAL All iteration 81 with 1 and 3 Remaining in each list -SEQUENTIAL All sending ['N', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine - -Fragments to allocate this iteration: 0 1 out of 0 1 -SEQUENTIAL All iteration 82 with 1 and 2 Remaining in each list -SEQUENTIAL All sending ['N', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] and ['H'] to combine - Increased Threshold_tmat. Now: 0.6000000000000001 - Maxsize of the translation matrix is= 12 - -Fragments to allocate this iteration: 0 0 out of 0 0 -SEQUENTIAL All iteration 1 with 1 and 1 Remaining in each list -SEQUENTIAL All sending ['N', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -SEQUENTIAL: Molecules found so far: -0 15 ['C', 'H', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] -1 7 ['Fe', 'Cl', 'Cl', 'Cl', 'O', 'H', 'H'] -2 15 ['C', 'H', 'H', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] -3 7 ['Fe', 'Cl', 'Cl', 'Cl', 'O', 'H', 'H'] -4 53 ['N', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H'] -5 53 ['N', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H'] -6 53 ['N', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H'] -7 53 ['N', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H'] -FINISHED succesfully -NO remaining Molecules after Hydrogen reconstruction - -Molecule Types assigned. These are: -Cl6-Fe2 Complex -H10-C4-O Other -H2-O-Cl3-Fe Complex -H10-C4-O Other -H2-O-Cl3-Fe Complex -H36-C16-N Other -H36-C16-N Other -H36-C16-N Other -H36-C16-N Other - -Total execution time for Cell Reconstruction: 10.94 seconds -Cell reconstruction successfully finished. - -===================================== step 2 : Charge Assignment ======================================= - -New ligand found with: formula Cl and totmconnec=1, and added in position 0 -Ligand 1 is the same than 0 in typelist -New ligand found with: formula Cl and totmconnec=2, and added in position 1 -Ligand 3 is the same than 1 in typelist -Ligand 4 is the same than 0 in typelist -Ligand 5 is the same than 0 in typelist -New Metal Center found with: labels Fe and added in position 2 -Metal 1 is the same than 0 in typelist -New molecule found with: formula=H10-C4-O, totmconnec=0, and added in position 3 -New ligand found with: formula H2-O and totmconnec=1, and added in position 4 -Ligand 1 is the same than 0 in typelist -Ligand 2 is the same than 0 in typelist -Ligand 3 is the same than 0 in typelist -New Metal Center found with: labels Fe and added in position 5 -Molecule 3 is the same than 0 in typelist -Ligand 0 is the same than 2 in typelist -Ligand 1 is the same than 0 in typelist -Ligand 2 is the same than 0 in typelist -Ligand 3 is the same than 0 in typelist -Metal 0 is the same than 1 in typelist -New molecule found with: formula=H36-C16-N, totmconnec=0, and added in position 6 -Molecule 6 is the same than 1 in typelist -Molecule 7 is the same than 1 in typelist -Molecule 8 is the same than 1 in typelist -CLASSIFY: molec_indices [0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 2, 2, 2, 2, 3, 4, 4, 4, 4, 4, 5, 6, 7, 8] -CLASSIFY: ligand_indices [0, 1, 2, 3, 4, 5, 0, 1, '-', 0, 1, 2, 3, 0, '-', 0, 1, 2, 3, 0, '-', '-', '-', '-'] -CLASSIFY: unique_indices [0, 0, 1, 1, 0, 0, 2, 2, 3, 4, 0, 0, 0, 5, 3, 4, 0, 0, 0, 5, 6, 6, 6, 6] -CLASSIFY: specie 0 appears 10 times, with type: Ligand -CLASSIFY: specie 1 appears 2 times, with type: Ligand -CLASSIFY: specie 2 appears 2 times, with type: Metal -CLASSIFY: specie 3 appears 2 times, with type: Other -CLASSIFY: specie 4 appears 2 times, with type: Ligand -CLASSIFY: specie 5 appears 2 times, with type: Metal -CLASSIFY: specie 6 appears 4 times, with type: Other -7 Species (Ligand or Molecules) to Characterize - - --------------- - #### Ligand #### - --------------- - 1 Cl 1 - DEFINE_SITES: evaluating non-haptic group with index 0 and label Cl - DEFINE_SITES: Added H to atom 0 with: a.mconnec=1 and label=Cl - DEFINE_SITES: evaluating non-haptic group with index 0 and label Cl - POSCHARGE: received 1 protonations for this specie - - POSCHARGE: doing PROTONATION with added atoms: 1 - POSCHARGE will try charges [0, -1, 1, -2, 2] - POSCHARGE: charge 0 with smiles [H]Cl - POSCHARGE: charge -1 with smiles [H]Cl - POSCHARGE: charge 1 with smiles [H]Cl - POSCHARGE: charge -2 with smiles [H]Cl - POSCHARGE: charge 2 with smiles [H]Cl - NEW SELECT FUNCTION: uncorr_total: [0, 0, 0, 0, 0] - NEW SELECT FUNCTION: uncorr_abs_total: [0, 0, 0, 0, 0] - NEW SELECT FUNCTION: uncorr_abs_atcharge: [0, 0, 0, 0, 0] - NEW SELECT FUNCTION: uncorr_zwitt: [False, False, False, False, False] - NEW SELECT FUNCTION: coincide: [True, False, False, False, False] - NEW SELECT FUNCTION: listofmintot: [0, 1, 2, 3, 4] - NEW SELECT FUNCTION: listofminabs: [0, 1, 2, 3, 4] - NEW SELECT FUNCTION: tmplist: [0], including: - NEW SELECT FUNCTION: Corr_charge=-1 - NEW SELECT FUNCTION: Smiles=[H]Cl - NEW SELECT FUNCTION: found corr_charges=[-1] - NEW SELECT FUNCTION: doing tgt_charge=-1 - NEW SELECT FUNCTION: charge_state added - NEW SELECT FUNCTION: Case 1, only one entry for -1 in tmplist - POSCHARGE. poscharge added with corrected charge: -1 and uncorrected: 0 - POSCHARGE. poscharge added with smiles: [H]Cl -Charge state and protonation received for molecule 1 - - --------------- - #### Ligand #### - --------------- - 1 Cl 2 - DEFINE_SITES: evaluating non-haptic group with index 0 and label Cl - DEFINE_SITES: Added H to atom 0 with: a.mconnec=2 and label=Cl - DEFINE_SITES: evaluating non-haptic group with index 0 and label Cl - POSCHARGE: received 1 protonations for this specie - - POSCHARGE: doing PROTONATION with added atoms: 1 - POSCHARGE will try charges [0, -1, 1, -2, 2] - POSCHARGE: charge 0 with smiles [H]Cl - POSCHARGE: charge -1 with smiles [H]Cl - POSCHARGE: charge 1 with smiles [H]Cl - POSCHARGE: charge -2 with smiles [H]Cl - POSCHARGE: charge 2 with smiles [H]Cl - NEW SELECT FUNCTION: uncorr_total: [0, 0, 0, 0, 0] - NEW SELECT FUNCTION: uncorr_abs_total: [0, 0, 0, 0, 0] - NEW SELECT FUNCTION: uncorr_abs_atcharge: [0, 0, 0, 0, 0] - NEW SELECT FUNCTION: uncorr_zwitt: [False, False, False, False, False] - NEW SELECT FUNCTION: coincide: [True, False, False, False, False] - NEW SELECT FUNCTION: listofmintot: [0, 1, 2, 3, 4] - NEW SELECT FUNCTION: listofminabs: [0, 1, 2, 3, 4] - NEW SELECT FUNCTION: tmplist: [0], including: - NEW SELECT FUNCTION: Corr_charge=-1 - NEW SELECT FUNCTION: Smiles=[H]Cl - NEW SELECT FUNCTION: found corr_charges=[-1] - NEW SELECT FUNCTION: doing tgt_charge=-1 - NEW SELECT FUNCTION: charge_state added - NEW SELECT FUNCTION: Case 1, only one entry for -1 in tmplist - POSCHARGE. poscharge added with corrected charge: -1 and uncorrected: 0 - POSCHARGE. poscharge added with smiles: [H]Cl -Charge state and protonation received for molecule 1 - - --------------- - #### Metal #### - --------------- - Fe coordination_sphere ['Cl', 'Cl', 'Cl', 'Cl'] - Fe coordinating_atoms ['Cl', 'Cl', 'Cl', 'Cl'] -Possible charges received for metal: [2, 3] - - --------------- - #### NON-Complex #### - --------------- - 15 H10-C4-O - POSCHARGE: doing empty PROTONATION for this specie - POSCHARGE: received 1 protonations for this specie - - POSCHARGE: doing PROTONATION with added atoms: 0 - POSCHARGE will try charges [0, -1, 1, -2, 2, -3, 3] - POSCHARGE: charge 0 with smiles [H]C([H])([H])C([H])([H])OC([H])([H])C([H])([H])[H] - POSCHARGE: charge -1 with smiles [H]C([H])([H])C([H])([H])OC([H])([H])C([H])([H])[H] - POSCHARGE: charge 1 with smiles [H]C([H])([H])C([H])([H])OC([H])([H])C([H])([H])[H] - POSCHARGE: charge -2 with smiles [H]C([H])([H])C([H])([H])OC([H])([H])C([H])([H])[H] - POSCHARGE: charge 2 with smiles [H]C([H])([H])C([H])([H])OC([H])([H])C([H])([H])[H] - POSCHARGE: charge -3 with smiles [H]C([H])([H])C([H])([H])OC([H])([H])C([H])([H])[H] - POSCHARGE: charge 3 with smiles [H]C([H])([H])C([H])([H])OC([H])([H])C([H])([H])[H] - NEW SELECT FUNCTION: uncorr_total: [0, 0, 0, 0, 0, 0, 0] - NEW SELECT FUNCTION: uncorr_abs_total: [0, 0, 0, 0, 0, 0, 0] - NEW SELECT FUNCTION: uncorr_abs_atcharge: [0, 0, 0, 0, 0, 0, 0] - NEW SELECT FUNCTION: uncorr_zwitt: [False, False, False, False, False, False, False] - NEW SELECT FUNCTION: coincide: [True, False, False, False, False, False, False] - NEW SELECT FUNCTION: listofmintot: [0, 1, 2, 3, 4, 5, 6] - NEW SELECT FUNCTION: listofminabs: [0, 1, 2, 3, 4, 5, 6] - NEW SELECT FUNCTION: tmplist: [0], including: - NEW SELECT FUNCTION: Corr_charge=0 - NEW SELECT FUNCTION: Smiles=[H]C([H])([H])C([H])([H])OC([H])([H])C([H])([H])[H] - NEW SELECT FUNCTION: found corr_charges=[0] - NEW SELECT FUNCTION: doing tgt_charge=0 - NEW SELECT FUNCTION: charge_state added - NEW SELECT FUNCTION: Case 1, only one entry for 0 in tmplist - POSCHARGE. poscharge added with corrected charge: 0 and uncorrected: 0 - POSCHARGE. poscharge added with smiles: [H]C([H])([H])C([H])([H])OC([H])([H])C([H])([H])[H] -Charge state and protonation received for molecule 1 - - --------------- - #### Ligand #### - --------------- - 3 H2-O 1 - DEFINE_SITES: evaluating non-haptic group with index 0 and label O - DEFINE_SITES: evaluating non-haptic group with index 0 and label O - POSCHARGE: received 1 protonations for this specie - - POSCHARGE: doing PROTONATION with added atoms: 0 - POSCHARGE will try charges [0, -1, 1, -2, 2] - POSCHARGE: charge 0 with smiles [H]O[H] - POSCHARGE: charge -1 with smiles [H]O[H] - POSCHARGE: charge 1 with smiles [H]O[H] - POSCHARGE: charge -2 with smiles [H]O[H] - POSCHARGE: charge 2 with smiles [H]O[H] - NEW SELECT FUNCTION: uncorr_total: [0, 0, 0, 0, 0] - NEW SELECT FUNCTION: uncorr_abs_total: [0, 0, 0, 0, 0] - NEW SELECT FUNCTION: uncorr_abs_atcharge: [0, 0, 0, 0, 0] - NEW SELECT FUNCTION: uncorr_zwitt: [False, False, False, False, False] - NEW SELECT FUNCTION: coincide: [True, False, False, False, False] - NEW SELECT FUNCTION: listofmintot: [0, 1, 2, 3, 4] - NEW SELECT FUNCTION: listofminabs: [0, 1, 2, 3, 4] - NEW SELECT FUNCTION: tmplist: [0], including: - NEW SELECT FUNCTION: Corr_charge=0 - NEW SELECT FUNCTION: Smiles=[H]O[H] - NEW SELECT FUNCTION: found corr_charges=[0] - NEW SELECT FUNCTION: doing tgt_charge=0 - NEW SELECT FUNCTION: charge_state added - NEW SELECT FUNCTION: Case 1, only one entry for 0 in tmplist - POSCHARGE. poscharge added with corrected charge: 0 and uncorrected: 0 - POSCHARGE. poscharge added with smiles: [H]O[H] -Charge state and protonation received for molecule 1 - - --------------- - #### Metal #### - --------------- - Fe coordination_sphere ['Cl', 'Cl', 'Cl', 'O'] - Fe coordinating_atoms ['Cl', 'Cl', 'Cl', 'O'] -Possible charges received for metal: [2, 3] - - --------------- - #### NON-Complex #### - --------------- - 53 H36-C16-N - POSCHARGE: doing empty PROTONATION for this specie - POSCHARGE: received 1 protonations for this specie - - POSCHARGE: doing PROTONATION with added atoms: 0 - POSCHARGE will try charges [0, -1, 1, -2, 2, -3, 3] - POSCHARGE: charge 0 with smiles [H]C([H])([H])C([H])([H])C([H])([H])C([H])([H])[N+](C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])(C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H] - POSCHARGE: charge -1 with smiles [H]C([H])([H])C([H])([H])C([H])([H])C([H])([H])[N+](C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])(C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H] - POSCHARGE: charge 1 with smiles [H]C([H])([H])C([H])([H])C([H])([H])C([H])([H])[N+](C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])(C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H] - POSCHARGE: charge -2 with smiles [H]C([H])([H])C([H])([H])C([H])([H])C([H])([H])[N+](C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])(C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H] - POSCHARGE: charge 2 with smiles [H]C([H])([H])C([H])([H])C([H])([H])C([H])([H])[N+](C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])(C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H] - POSCHARGE: charge -3 with smiles [H]C([H])([H])C([H])([H])C([H])([H])C([H])([H])[N+](C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])(C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H] - POSCHARGE: charge 3 with smiles [H]C([H])([H])C([H])([H])C([H])([H])C([H])([H])[N+](C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])(C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H] - NEW SELECT FUNCTION: uncorr_total: [1, 1, 1, 1, 1, 1, 1] - NEW SELECT FUNCTION: uncorr_abs_total: [1, 1, 1, 1, 1, 1, 1] - NEW SELECT FUNCTION: uncorr_abs_atcharge: [1, 1, 1, 1, 1, 1, 1] - NEW SELECT FUNCTION: uncorr_zwitt: [False, False, False, False, False, False, False] - NEW SELECT FUNCTION: coincide: [False, False, True, False, False, False, False] - NEW SELECT FUNCTION: listofmintot: [0, 1, 2, 3, 4, 5, 6] - NEW SELECT FUNCTION: listofminabs: [0, 1, 2, 3, 4, 5, 6] - NEW SELECT FUNCTION: tmplist: [2], including: - NEW SELECT FUNCTION: Corr_charge=1 - NEW SELECT FUNCTION: Smiles=[H]C([H])([H])C([H])([H])C([H])([H])C([H])([H])[N+](C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])(C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H] - NEW SELECT FUNCTION: found corr_charges=[1] - NEW SELECT FUNCTION: doing tgt_charge=1 - NEW SELECT FUNCTION: charge_state added - NEW SELECT FUNCTION: Case 1, only one entry for 1 in tmplist - POSCHARGE. poscharge added with corrected charge: 1 and uncorrected: 1 - POSCHARGE. poscharge added with smiles: [H]C([H])([H])C([H])([H])C([H])([H])C([H])([H])[N+](C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])(C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H] -Charge state and protonation received for molecule 1 -BALANCE: iterlist [[-1], [-1], [2, 3], [0], [0], [2, 3], [1]] -BALANCE: unique_indices [0, 0, 1, 1, 0, 0, 2, 2, 3, 4, 0, 0, 0, 5, 3, 4, 0, 0, 0, 5, 6, 6, 6, 6] -BALANCE: tmpdistr [(-1, -1, 2, 0, 0, 2, 1), (-1, -1, 2, 0, 0, 3, 1), (-1, -1, 3, 0, 0, 2, 1), (-1, -1, 3, 0, 0, 3, 1)] -BALANCE: alldistr added: [-1, -1, -1, -1, -1, -1, 2, 2, 0, 0, -1, -1, -1, 2, 0, 0, -1, -1, -1, 2, 1, 1, 1, 1] -BALANCE: alldistr added: [-1, -1, -1, -1, -1, -1, 2, 2, 0, 0, -1, -1, -1, 3, 0, 0, -1, -1, -1, 3, 1, 1, 1, 1] -BALANCE: alldistr added: [-1, -1, -1, -1, -1, -1, 3, 3, 0, 0, -1, -1, -1, 2, 0, 0, -1, -1, -1, 2, 1, 1, 1, 1] -BALANCE: alldistr added: [-1, -1, -1, -1, -1, -1, 3, 3, 0, 0, -1, -1, -1, 3, 0, 0, -1, -1, -1, 3, 1, 1, 1, 1] -final_charge_distribution [[-1, -1, -1, -1, -1, -1, 2, 2, 0, 0, -1, -1, -1, 2, 0, 0, -1, -1, -1, 2, 1, 1, 1, 1]] - -FINAL Charge Distribution: [[-1, -1, -1, -1, -1, -1, 2, 2, 0, 0, -1, -1, -1, 2, 0, 0, -1, -1, -1, 2, 1, 1, 1, 1]] - -######################################### -Assigning Charges and Preparing Molecules -######################################### -PREPARE: 7 selected_charge_states received - -PREPARE: 9 molecules to prepare, of types -PREPARE: Molecule 0 is a Complex with formula Cl6-Fe2 -PREPARE: Molecule 1 is a Other with formula H10-C4-O -PREPARE: Molecule 2 is a Complex with formula H2-O-Cl3-Fe -PREPARE: Molecule 3 is a Other with formula H10-C4-O -PREPARE: Molecule 4 is a Complex with formula H2-O-Cl3-Fe -PREPARE: Molecule 5 is a Other with formula H36-C16-N -PREPARE: Molecule 6 is a Other with formula H36-C16-N -PREPARE: Molecule 7 is a Other with formula H36-C16-N -PREPARE: Molecule 8 is a Other with formula H36-C16-N - -PREPARE: State 0 and option 0. Target state and protonation received with -1 and 1 -PREPARE: State 1 and option 0. Target state and protonation received with -1 and 1 -PREPARE: State 3 and option 0. Target state and protonation received with 0 and 0 -PREPARE: State 4 and option 0. Target state and protonation received with 0 and 0 -PREPARE: State 6 and option 0. Target state and protonation received with 1 and 0 - -PREPARE: Molecule 0 is a Complex with formula Cl6-Fe2 -PREPARE: Molecule 0 has 6 ligands - -PREPARE: Ligand 0, formula: Cl is specie 0 -PREPARE: Ligand poscharges: [-1] -PREPARE: Doing ligand 0 with idxtoallocate 0 -PREPARE: Doing -1 of options [-1]. jdx=0 -PREPARE: Found Target Prot State with 1 added atoms and 0 OS -PREPARE: addedlist of Target Prot State: [1] -PREPARE: evaluating prot state with added_atoms=1 -PREPARE: tmp_addedlist=[1] -PREPARE: found match in protonation with tmpsmiles: -PREPARE: Sending getcharge with prot.added_atoms=1 to obtain charge -1 -PREPARE: Wanted charge -1, obtained: -1 -PREPARE: smiles: [H]Cl -PREPARE: Success doing ligand 0. Created Charge State with total_charge=-1 - -PREPARE: Ligand 1, formula: Cl is specie 0 -PREPARE: Ligand poscharges: [-1] -PREPARE: Doing ligand 1 with idxtoallocate 1 -PREPARE: Doing -1 of options [-1]. jdx=0 -PREPARE: Found Target Prot State with 1 added atoms and 0 OS -PREPARE: addedlist of Target Prot State: [1] -PREPARE: evaluating prot state with added_atoms=1 -PREPARE: tmp_addedlist=[1] -PREPARE: found match in protonation with tmpsmiles: -PREPARE: Sending getcharge with prot.added_atoms=1 to obtain charge -1 -PREPARE: Wanted charge -1, obtained: -1 -PREPARE: smiles: [H]Cl -PREPARE: Success doing ligand 1. Created Charge State with total_charge=-1 - -PREPARE: Ligand 2, formula: Cl is specie 1 -PREPARE: Ligand poscharges: [-1] -PREPARE: Doing ligand 2 with idxtoallocate 2 -PREPARE: Doing -1 of options [-1]. jdx=0 -PREPARE: Found Target Prot State with 1 added atoms and 0 OS -PREPARE: addedlist of Target Prot State: [1] -PREPARE: evaluating prot state with added_atoms=1 -PREPARE: tmp_addedlist=[1] -PREPARE: found match in protonation with tmpsmiles: -PREPARE: Sending getcharge with prot.added_atoms=1 to obtain charge -1 -PREPARE: Wanted charge -1, obtained: -1 -PREPARE: smiles: [H]Cl -PREPARE: Success doing ligand 2. Created Charge State with total_charge=-1 - -PREPARE: Ligand 3, formula: Cl is specie 1 -PREPARE: Ligand poscharges: [-1] -PREPARE: Doing ligand 3 with idxtoallocate 3 -PREPARE: Doing -1 of options [-1]. jdx=0 -PREPARE: Found Target Prot State with 1 added atoms and 0 OS -PREPARE: addedlist of Target Prot State: [1] -PREPARE: evaluating prot state with added_atoms=1 -PREPARE: tmp_addedlist=[1] -PREPARE: found match in protonation with tmpsmiles: -PREPARE: Sending getcharge with prot.added_atoms=1 to obtain charge -1 -PREPARE: Wanted charge -1, obtained: -1 -PREPARE: smiles: [H]Cl -PREPARE: Success doing ligand 3. Created Charge State with total_charge=-1 - -PREPARE: Ligand 4, formula: Cl is specie 0 -PREPARE: Ligand poscharges: [-1] -PREPARE: Doing ligand 4 with idxtoallocate 4 -PREPARE: Doing -1 of options [-1]. jdx=0 -PREPARE: Found Target Prot State with 1 added atoms and 0 OS -PREPARE: addedlist of Target Prot State: [1] -PREPARE: evaluating prot state with added_atoms=1 -PREPARE: tmp_addedlist=[1] -PREPARE: found match in protonation with tmpsmiles: -PREPARE: Sending getcharge with prot.added_atoms=1 to obtain charge -1 -PREPARE: Wanted charge -1, obtained: -1 -PREPARE: smiles: [H]Cl -PREPARE: Success doing ligand 4. Created Charge State with total_charge=-1 - -PREPARE: Ligand 5, formula: Cl is specie 0 -PREPARE: Ligand poscharges: [-1] -PREPARE: Doing ligand 5 with idxtoallocate 5 -PREPARE: Doing -1 of options [-1]. jdx=0 -PREPARE: Found Target Prot State with 1 added atoms and 0 OS -PREPARE: addedlist of Target Prot State: [1] -PREPARE: evaluating prot state with added_atoms=1 -PREPARE: tmp_addedlist=[1] -PREPARE: found match in protonation with tmpsmiles: -PREPARE: Sending getcharge with prot.added_atoms=1 to obtain charge -1 -PREPARE: Wanted charge -1, obtained: -1 -PREPARE: smiles: [H]Cl -PREPARE: Success doing ligand 5. Created Charge State with total_charge=-1 - -PREPARE: Metal 0, label Fe is specie 2 -PREPARE: Metal poscharges: [2, 3] - -PREPARE: Metal 1, label Fe is specie 2 -PREPARE: Metal poscharges: [2, 3] -PREPARE: Building Molecule 0 From Ligand&Metal Information - -PREPARE: Molecule 1 is a Other with formula H10-C4-O -PREPARE: Specie number=3 with molecule poscharges: [0] -PREPARE: Doing molecule 1 with idxtoallocate: 8 -PREPARE: target state and protonation loaded, with 0 and 0 -PREPARE: Success doing molecule 1. Created Charge State with total_charge=0 - -PREPARE: Molecule 2 is a Complex with formula H2-O-Cl3-Fe -PREPARE: Molecule 2 has 4 ligands - -PREPARE: Ligand 0, formula: H2-O is specie 4 -PREPARE: Ligand poscharges: [0] -PREPARE: Doing ligand 0 with idxtoallocate 9 -PREPARE: Doing 0 of options [0]. jdx=0 -PREPARE: Found Target Prot State with 0 added atoms and 0 OS -PREPARE: addedlist of Target Prot State: [0 0 0] -PREPARE: evaluating prot state with added_atoms=0 -PREPARE: tmp_addedlist=[0, 0, 0] -PREPARE: found match in protonation with tmpsmiles: -PREPARE: Sending getcharge with prot.added_atoms=0 to obtain charge 0 -PREPARE: Wanted charge 0, obtained: 0 -PREPARE: smiles: [H]O[H] -PREPARE: Success doing ligand 0. Created Charge State with total_charge=0 - -PREPARE: Ligand 1, formula: Cl is specie 0 -PREPARE: Ligand poscharges: [-1] -PREPARE: Doing ligand 1 with idxtoallocate 10 -PREPARE: Doing -1 of options [-1]. jdx=0 -PREPARE: Found Target Prot State with 1 added atoms and 0 OS -PREPARE: addedlist of Target Prot State: [1] -PREPARE: evaluating prot state with added_atoms=1 -PREPARE: tmp_addedlist=[1] -PREPARE: found match in protonation with tmpsmiles: -PREPARE: Sending getcharge with prot.added_atoms=1 to obtain charge -1 -PREPARE: Wanted charge -1, obtained: -1 -PREPARE: smiles: [H]Cl -PREPARE: Success doing ligand 1. Created Charge State with total_charge=-1 - -PREPARE: Ligand 2, formula: Cl is specie 0 -PREPARE: Ligand poscharges: [-1] -PREPARE: Doing ligand 2 with idxtoallocate 11 -PREPARE: Doing -1 of options [-1]. jdx=0 -PREPARE: Found Target Prot State with 1 added atoms and 0 OS -PREPARE: addedlist of Target Prot State: [1] -PREPARE: evaluating prot state with added_atoms=1 -PREPARE: tmp_addedlist=[1] -PREPARE: found match in protonation with tmpsmiles: -PREPARE: Sending getcharge with prot.added_atoms=1 to obtain charge -1 -PREPARE: Wanted charge -1, obtained: -1 -PREPARE: smiles: [H]Cl -PREPARE: Success doing ligand 2. Created Charge State with total_charge=-1 - -PREPARE: Ligand 3, formula: Cl is specie 0 -PREPARE: Ligand poscharges: [-1] -PREPARE: Doing ligand 3 with idxtoallocate 12 -PREPARE: Doing -1 of options [-1]. jdx=0 -PREPARE: Found Target Prot State with 1 added atoms and 0 OS -PREPARE: addedlist of Target Prot State: [1] -PREPARE: evaluating prot state with added_atoms=1 -PREPARE: tmp_addedlist=[1] -PREPARE: found match in protonation with tmpsmiles: -PREPARE: Sending getcharge with prot.added_atoms=1 to obtain charge -1 -PREPARE: Wanted charge -1, obtained: -1 -PREPARE: smiles: [H]Cl -PREPARE: Success doing ligand 3. Created Charge State with total_charge=-1 - -PREPARE: Metal 0, label Fe is specie 5 -PREPARE: Metal poscharges: [2, 3] -PREPARE: Building Molecule 2 From Ligand&Metal Information - -PREPARE: Molecule 3 is a Other with formula H10-C4-O -PREPARE: Specie number=3 with molecule poscharges: [0] -PREPARE: Doing molecule 3 with idxtoallocate: 14 -PREPARE: target state and protonation loaded, with 0 and 0 -PREPARE: Success doing molecule 3. Created Charge State with total_charge=0 - -PREPARE: Molecule 4 is a Complex with formula H2-O-Cl3-Fe -PREPARE: Molecule 4 has 4 ligands - -PREPARE: Ligand 0, formula: H2-O is specie 4 -PREPARE: Ligand poscharges: [0] -PREPARE: Doing ligand 0 with idxtoallocate 15 -PREPARE: Doing 0 of options [0]. jdx=0 -PREPARE: Found Target Prot State with 0 added atoms and 0 OS -PREPARE: addedlist of Target Prot State: [0 0 0] -PREPARE: evaluating prot state with added_atoms=0 -PREPARE: tmp_addedlist=[0, 0, 0] -PREPARE: found match in protonation with tmpsmiles: -PREPARE: Sending getcharge with prot.added_atoms=0 to obtain charge 0 -PREPARE: Wanted charge 0, obtained: 0 -PREPARE: smiles: [H]O[H] -PREPARE: Success doing ligand 0. Created Charge State with total_charge=0 - -PREPARE: Ligand 1, formula: Cl is specie 0 -PREPARE: Ligand poscharges: [-1] -PREPARE: Doing ligand 1 with idxtoallocate 16 -PREPARE: Doing -1 of options [-1]. jdx=0 -PREPARE: Found Target Prot State with 1 added atoms and 0 OS -PREPARE: addedlist of Target Prot State: [1] -PREPARE: evaluating prot state with added_atoms=1 -PREPARE: tmp_addedlist=[1] -PREPARE: found match in protonation with tmpsmiles: -PREPARE: Sending getcharge with prot.added_atoms=1 to obtain charge -1 -PREPARE: Wanted charge -1, obtained: -1 -PREPARE: smiles: [H]Cl -PREPARE: Success doing ligand 1. Created Charge State with total_charge=-1 - -PREPARE: Ligand 2, formula: Cl is specie 0 -PREPARE: Ligand poscharges: [-1] -PREPARE: Doing ligand 2 with idxtoallocate 17 -PREPARE: Doing -1 of options [-1]. jdx=0 -PREPARE: Found Target Prot State with 1 added atoms and 0 OS -PREPARE: addedlist of Target Prot State: [1] -PREPARE: evaluating prot state with added_atoms=1 -PREPARE: tmp_addedlist=[1] -PREPARE: found match in protonation with tmpsmiles: -PREPARE: Sending getcharge with prot.added_atoms=1 to obtain charge -1 -PREPARE: Wanted charge -1, obtained: -1 -PREPARE: smiles: [H]Cl -PREPARE: Success doing ligand 2. Created Charge State with total_charge=-1 - -PREPARE: Ligand 3, formula: Cl is specie 0 -PREPARE: Ligand poscharges: [-1] -PREPARE: Doing ligand 3 with idxtoallocate 18 -PREPARE: Doing -1 of options [-1]. jdx=0 -PREPARE: Found Target Prot State with 1 added atoms and 0 OS -PREPARE: addedlist of Target Prot State: [1] -PREPARE: evaluating prot state with added_atoms=1 -PREPARE: tmp_addedlist=[1] -PREPARE: found match in protonation with tmpsmiles: -PREPARE: Sending getcharge with prot.added_atoms=1 to obtain charge -1 -PREPARE: Wanted charge -1, obtained: -1 -PREPARE: smiles: [H]Cl -PREPARE: Success doing ligand 3. Created Charge State with total_charge=-1 - -PREPARE: Metal 0, label Fe is specie 5 -PREPARE: Metal poscharges: [2, 3] -PREPARE: Building Molecule 4 From Ligand&Metal Information - -PREPARE: Molecule 5 is a Other with formula H36-C16-N -PREPARE: Specie number=6 with molecule poscharges: [1] -PREPARE: Doing molecule 5 with idxtoallocate: 20 -PREPARE: target state and protonation loaded, with 1 and 0 -PREPARE: Success doing molecule 5. Created Charge State with total_charge=1 - -PREPARE: Molecule 6 is a Other with formula H36-C16-N -PREPARE: Specie number=6 with molecule poscharges: [1] -PREPARE: Doing molecule 6 with idxtoallocate: 21 -PREPARE: target state and protonation loaded, with 1 and 0 -PREPARE: Success doing molecule 6. Created Charge State with total_charge=1 - -PREPARE: Molecule 7 is a Other with formula H36-C16-N -PREPARE: Specie number=6 with molecule poscharges: [1] -PREPARE: Doing molecule 7 with idxtoallocate: 22 -PREPARE: target state and protonation loaded, with 1 and 0 -PREPARE: Success doing molecule 7. Created Charge State with total_charge=1 - -PREPARE: Molecule 8 is a Other with formula H36-C16-N -PREPARE: Specie number=6 with molecule poscharges: [1] -PREPARE: Doing molecule 8 with idxtoallocate: 23 -PREPARE: target state and protonation loaded, with 1 and 0 -PREPARE: Success doing molecule 8. Created Charge State with total_charge=1 - -Total execution time for Charge Assignment: 0.05 seconds -Charge Assignment successfully finished. - -######################################### -Assigning spin multiplicity -######################################### -elem_nr=26 m_ox=2 d_elec=6 rel=0.987 hapticity=0 - -mol.type='Complex', mol.formula='H2-O-Cl3-Fe', mol.spin=5 -met.label='Fe' met.hapticity=False met.hapttype=[] met.geometry='Tetrahedral' met.coordination_number=4 met.coordinating_atoms=['Cl', 'Cl', 'Cl', 'O'] -elem_nr=26 m_ox=2 d_elec=6 rel=0.987 hapticity=0 - -mol.type='Complex', mol.formula='H2-O-Cl3-Fe', mol.spin=5 -met.label='Fe' met.hapticity=False met.hapttype=[] met.geometry='Tetrahedral' met.coordination_number=4 met.coordinating_atoms=['Cl', 'Cl', 'Cl', 'O'] -mol.type='Complex', mol.formula='Cl6-Fe2', mol.spin=1 - lig.formula='Cl' - lig.formula='Cl' - lig.formula='Cl' - lig.formula='Cl' - lig.formula='Cl' - lig.formula='Cl' -mol.type='Other', mol.formula='H10-C4-O', mol.spin=1 -mol.type='Complex', mol.formula='H2-O-Cl3-Fe', mol.spin=5 - lig.formula='H2-O', lig.spin=1 - lig.formula='Cl' - lig.formula='Cl' - lig.formula='Cl' -mol.type='Other', mol.formula='H10-C4-O', mol.spin=1 -mol.type='Complex', mol.formula='H2-O-Cl3-Fe', mol.spin=5 - lig.formula='H2-O', lig.spin=1 - lig.formula='Cl' - lig.formula='Cl' - lig.formula='Cl' -mol.type='Other', mol.formula='H36-C16-N', mol.spin=1 -mol.type='Other', mol.formula='H36-C16-N', mol.spin=1 -mol.type='Other', mol.formula='H36-C16-N', mol.spin=1 -mol.type='Other', mol.formula='H36-C16-N', mol.spin=1 -=====================================Charges for all species in the unit cell===================================== -[Ref.code] : INOVAL - -Complex, totcharge -2, spin multiplicity 1 - Metal: Fe charge 2 - Metal: Fe charge 2 - Ligand charge -1, [Cl-] - Ligand charge -1, [Cl-] - Ligand charge -1, [Cl-] - Ligand charge -1, [Cl-] - Ligand charge -1, [Cl-] - Ligand charge -1, [Cl-] - -Other totcharge 0, [H]C([H])([H])C([H])([H])OC([H])([H])C([H])([H])[H] - -Complex, totcharge -1, spin multiplicity 5 - Metal: Fe charge 2 - Ligand charge 0, [H]O[H] - Ligand charge -1, [Cl-] - Ligand charge -1, [Cl-] - Ligand charge -1, [Cl-] - -Other totcharge 0, [H]C([H])([H])C([H])([H])OC([H])([H])C([H])([H])[H] - -Complex, totcharge -1, spin multiplicity 5 - Metal: Fe charge 2 - Ligand charge 0, [H]O[H] - Ligand charge -1, [Cl-] - Ligand charge -1, [Cl-] - Ligand charge -1, [Cl-] - -Other totcharge 1, [H]C([H])([H])C([H])([H])C([H])([H])C([H])([H])[N+](C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])(C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H] - -Other totcharge 1, [H]C([H])([H])C([H])([H])C([H])([H])C([H])([H])[N+](C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])(C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H] - -Other totcharge 1, [H]C([H])([H])C([H])([H])C([H])([H])C([H])([H])[N+](C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])(C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H] - -Other totcharge 1, [H]C([H])([H])C([H])([H])C([H])([H])C([H])([H])[N+](C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])(C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H] - - -The Warning type list is : [False, False, False, False, False, False, False, False, False] -No Warnings! - -[Output files] -Output file path /Users/ycho/Projects/Update_cell2mol/test/INOVAL/Cell_INOVAL.gmol diff --git a/cell2mol/test/MUKJOS.cif b/cell2mol/test/MUKJOS.cif deleted file mode 100644 index a9bdd9ffd..000000000 --- a/cell2mol/test/MUKJOS.cif +++ /dev/null @@ -1,298 +0,0 @@ - -####################################################################### -# -# Cambridge Crystallographic Data Centre -# CCDC -# -####################################################################### -# -# If this CIF has been generated from an entry in the Cambridge -# Structural Database, then it will include bibliographic, chemical, -# crystal, experimental, refinement or atomic coordinate data resulting -# from the CCDC's data processing and validation procedures. -# -####################################################################### - -data_CSD_CIF_MUKJOS -_audit_creation_date 2010-07-30 -_audit_creation_method CSD-ConQuest-V1 -_database_code_CSD MUKJOS -_database_code_depnum_ccdc_archive 'CCDC 727461' -_chemical_formula_sum 'C40 H36 F20 N1 Ni1' -_chemical_formula_moiety -; -C16 H36 N1 1+,C24 F20 Ni1 1- -; -_journal_coden_Cambridge 1220 -_journal_volume 15 -_journal_year 2009 -_journal_page_first 11020 -_journal_name_full 'Chem.-Eur.J. ' -loop_ -_publ_author_name -"P.J.Alonso" -"A.B.Arauzo" -"M.A.Garcia-Monforte" -"A.Martin" -"B.Menjon" -"C.Rillo" -"M.Tomas" -_chemical_name_systematic -; -(Tetra-n-butylammonium) tetrakis(pentafluorophenyl)-nickel(iii) -; -_cell_volume 3953.016 -_exptl_crystal_density_diffrn 1.629 -_exptl_crystal_preparation 'thf/diethyl ether' -_diffrn_ambient_temperature 100 -#These two values have been output from a single CSD field. -_refine_ls_R_factor_gt 0.0279 -_refine_ls_wR_factor_gt 0.0279 -_symmetry_cell_setting tetragonal -_symmetry_space_group_name_H-M 'I 41/a' -_symmetry_Int_Tables_number 88 -loop_ -_symmetry_equiv_pos_site_id -_symmetry_equiv_pos_as_xyz -1 x,y,z -2 -x,1/2-y,z -3 3/4-y,1/4+x,1/4+z -4 1/4+y,1/4-x,1/4+z -5 1/2+x,1/2+y,1/2+z -6 1/2-x,-y,1/2+z -7 1/4-y,3/4+x,3/4+z -8 3/4+y,3/4-x,3/4+z -9 -x,-y,-z -10 x,-1/2+y,-z -11 -3/4+y,-1/4-x,-1/4-z -12 -1/4-y,-1/4+x,-1/4-z -13 -1/2-x,-1/2-y,-1/2-z -14 -1/2+x,y,-1/2-z -15 -1/4+y,-3/4-x,-3/4-z -16 -3/4-y,-3/4+x,-3/4-z -_cell_length_a 17.9784(13) -_cell_length_b 17.9784(13) -_cell_length_c 12.2300(12) -_cell_angle_alpha 90 -_cell_angle_beta 90 -_cell_angle_gamma 90 -_cell_formula_units_Z 4 -loop_ -_atom_type_symbol -_atom_type_radius_bond -C 0.68 -H 0.23 -F 0.64 -N 0.68 -Ni 1.24 -loop_ -_atom_site_label -_atom_site_type_symbol -_atom_site_fract_x -_atom_site_fract_y -_atom_site_fract_z -Ni1 Ni 1.00000 0.25000 0.12500 -C1 C 1.03775(8) 0.35124(9) 0.13660(13) -F1 F 1.04470(6) 0.37021(5) -0.05317(8) -C2 C 1.05505(9) 0.39572(9) 0.04897(13) -F2 F 1.09953(6) 0.50843(5) -0.02773(8) -C3 C 1.08296(9) 0.46686(9) 0.06020(14) -F3 F 1.11898(6) 0.56486(5) 0.17546(9) -C4 C 1.09341(9) 0.49578(9) 0.16320(15) -F4 F 1.08459(6) 0.48230(6) 0.35371(8) -C5 C 1.07607(9) 0.45335(9) 0.25315(14) -F5 F 1.03259(6) 0.34257(5) 0.32872(8) -C6 C 1.04896(8) 0.38254(9) 0.23796(13) -N1 N 1.00000 0.75000 0.37500 -C7 C 0.97221(8) 0.68777(8) 0.30159(12) -H1 H 0.93090 0.70710 0.25620 -H2 H 1.01290 0.67300 0.25160 -C8 C 0.94524(9) 0.61919(9) 0.36219(13) -H3 H 0.98780 0.59500 0.39920 -H4 H 0.90890 0.63410 0.41890 -C9 C 0.90911(10) 0.56447(9) 0.28427(14) -H5 H 0.94580 0.54900 0.22830 -H6 H 0.86720 0.58910 0.24630 -C10 C 0.88053(12) 0.49602(10) 0.34415(18) -H7 H 0.85750 0.46190 0.29160 -H8 H 0.84360 0.51110 0.39870 -H9 H 0.92210 0.47100 0.38070 -C1A C 0.96225(8) 0.14876(9) 0.13660(13) -C1N C 1.10124(8) 0.21225(9) 0.11340(13) -C1O C 0.89876(8) 0.28775(9) 0.11340(13) -F1A F 0.95530(6) 0.12979(5) -0.05317(8) -F1N F 1.12021(6) 0.20530(5) 0.30317(8) -F1O F 0.87979(6) 0.29470(5) 0.30317(8) -C2A C 0.94495(9) 0.10428(9) 0.04897(13) -C2N C 1.14572(9) 0.19495(9) 0.20103(13) -C2O C 0.85428(9) 0.30505(9) 0.20103(13) -F2A F 0.90047(6) -0.00843(5) -0.02773(8) -F2N F 1.25843(6) 0.15047(5) 0.27773(8) -F2O F 0.74157(6) 0.34953(5) 0.27773(8) -C3A C 0.91704(9) 0.03314(9) 0.06020(14) -C3N C 1.21686(9) 0.16704(9) 0.18980(14) -C3O C 0.78314(9) 0.33296(9) 0.18980(14) -F3A F 0.88102(6) -0.06486(5) 0.17546(9) -F3N F 1.31486(6) 0.13102(5) 0.07454(9) -F3O F 0.68514(6) 0.36898(5) 0.07454(9) -C4A C 0.90659(9) 0.00422(9) 0.16320(15) -C4N C 1.24578(9) 0.15659(9) 0.08680(15) -C4O C 0.75422(9) 0.34341(9) 0.08680(15) -F4A F 0.91541(6) 0.01770(6) 0.35371(8) -F4N F 1.23230(6) 0.16541(6) -0.10371(8) -F4O F 0.76770(6) 0.33459(6) -0.10371(8) -C5A C 0.92393(9) 0.04665(9) 0.25315(14) -C5N C 1.20335(9) 0.17393(9) -0.00315(14) -C5O C 0.79665(9) 0.32607(9) -0.00315(14) -F5A F 0.96741(6) 0.15743(5) 0.32872(8) -F5N F 1.09257(6) 0.21741(5) -0.07872(8) -F5O F 0.90743(6) 0.28259(5) -0.07872(8) -C6A C 0.95104(8) 0.11746(9) 0.23796(13) -C6N C 1.13254(8) 0.20104(9) 0.01204(13) -C6O C 0.86746(8) 0.29896(9) 0.01204(13) -C7A C 1.02779(8) 0.81223(8) 0.30159(12) -C7J C 0.93777(8) 0.77779(8) 0.44841(12) -C7K C 1.06223(8) 0.72221(8) 0.44841(12) -H1A H 1.06910 0.79290 0.25620 -H1J H 0.95710 0.81910 0.49380 -H1K H 1.04290 0.68090 0.49380 -H2A H 0.98710 0.82700 0.25160 -H2J H 0.92300 0.73710 0.49840 -H2K H 1.07700 0.76290 0.49840 -C8A C 1.05476(9) 0.88081(9) 0.36219(13) -C8J C 0.86919(9) 0.80476(9) 0.38781(13) -C8K C 1.13081(9) 0.69524(9) 0.38781(13) -H3A H 1.01220 0.90500 0.39920 -H3J H 0.84500 0.76220 0.35080 -H3K H 1.15500 0.73780 0.35080 -H4A H 1.09110 0.86590 0.41890 -H4J H 0.88410 0.84110 0.33110 -H4K H 1.11590 0.65890 0.33110 -C9A C 1.09089(10) 0.93553(9) 0.28427(14) -C9J C 0.81447(10) 0.84089(9) 0.46573(14) -C9K C 1.18553(10) 0.65911(9) 0.46573(14) -H5A H 1.05420 0.95100 0.22830 -H5J H 0.79900 0.80420 0.52170 -H5K H 1.20100 0.69580 0.52170 -H6A H 1.13280 0.91090 0.24630 -H6J H 0.83910 0.88280 0.50370 -H6K H 1.16090 0.61720 0.50370 -C10A C 1.11947(12) 1.00398(10) 0.34415(18) -C10J C 0.74602(12) 0.86947(10) 0.40585(18) -C10K C 1.25398(12) 0.63053(10) 0.40585(18) -H7A H 1.14250 1.03810 0.29160 -H7J H 0.71190 0.89250 0.45840 -H7K H 1.28810 0.60750 0.45840 -H8A H 1.15640 0.98890 0.39870 -H8J H 0.76110 0.90640 0.35130 -H8K H 1.23890 0.59360 0.35130 -H9A H 1.07790 1.02900 0.38070 -H9J H 0.72100 0.82790 0.36930 -H9K H 1.27900 0.67210 0.36930 -loop_ -_geom_bond_atom_site_label_1 -_geom_bond_atom_site_label_2 -_geom_bond_distance -_geom_bond_site_symmetry_1 -_geom_bond_site_symmetry_2 -Ni1 C1 1.948 1_555 1_555 -C1 C2 1.373 1_555 1_555 -F1 C2 1.344 1_555 1_555 -C2 C3 1.381 1_555 1_555 -F2 C3 1.343 1_555 1_555 -C3 C4 1.376 1_555 1_555 -F3 C4 1.333 1_555 1_555 -C4 C5 1.375 1_555 1_555 -F4 C5 1.344 1_555 1_555 -C5 C6 1.376 1_555 1_555 -F5 C6 1.355 1_555 1_555 -C6 C1 1.376 1_555 1_555 -N1 C7 1.519 1_555 1_555 -C7 H1 0.990 1_555 1_555 -H2 C7 0.990 1_555 1_555 -C8 C7 1.518 1_555 1_555 -H3 C8 0.990 1_555 1_555 -H4 C8 0.990 1_555 1_555 -C9 C8 1.516 1_555 1_555 -H5 C9 0.990 1_555 1_555 -H6 C9 0.990 1_555 1_555 -C10 C9 1.521 1_555 1_555 -H7 C10 0.980 1_555 1_555 -H8 C10 0.979 1_555 1_555 -H9 C10 0.980 1_555 1_555 -C1A Ni1 1.948 1_555 1_555 -C1N Ni1 1.948 1_555 1_555 -C1O Ni1 1.948 1_555 1_555 -F1A C2A 1.344 1_555 1_555 -F1N C2N 1.344 1_555 1_555 -F1O C2O 1.344 1_555 1_555 -C2A C1A 1.373 1_555 1_555 -C2N C1N 1.373 1_555 1_555 -C2O C1O 1.373 1_555 1_555 -F2A C3A 1.343 1_555 1_555 -F2N C3N 1.343 1_555 1_555 -F2O C3O 1.343 1_555 1_555 -C3A C2A 1.381 1_555 1_555 -C3N C2N 1.381 1_555 1_555 -C3O C2O 1.381 1_555 1_555 -F3A C4A 1.333 1_555 1_555 -F3N C4N 1.333 1_555 1_555 -F3O C4O 1.333 1_555 1_555 -C4A C3A 1.376 1_555 1_555 -C4N C3N 1.376 1_555 1_555 -C4O C3O 1.376 1_555 1_555 -F4A C5A 1.344 1_555 1_555 -F4N C5N 1.344 1_555 1_555 -F4O C5O 1.344 1_555 1_555 -C5A C4A 1.375 1_555 1_555 -C5N C4N 1.375 1_555 1_555 -C5O C4O 1.375 1_555 1_555 -F5A C6A 1.355 1_555 1_555 -F5N C6N 1.355 1_555 1_555 -F5O C6O 1.355 1_555 1_555 -C6A C1A 1.376 1_555 1_555 -C6N C1N 1.376 1_555 1_555 -C6O C1O 1.376 1_555 1_555 -C7A N1 1.519 1_555 1_555 -C7J N1 1.519 1_555 1_555 -C7K N1 1.519 1_555 1_555 -H1A C7A 0.990 1_555 1_555 -H1J C7J 0.990 1_555 1_555 -H1K C7K 0.990 1_555 1_555 -H2A C7A 0.990 1_555 1_555 -H2J C7J 0.990 1_555 1_555 -H2K C7K 0.990 1_555 1_555 -C8A C7A 1.518 1_555 1_555 -C8J C7J 1.518 1_555 1_555 -C8K C7K 1.518 1_555 1_555 -H3A C8A 0.990 1_555 1_555 -H3J C8J 0.990 1_555 1_555 -H3K C8K 0.990 1_555 1_555 -H4A C8A 0.990 1_555 1_555 -H4J C8J 0.990 1_555 1_555 -H4K C8K 0.990 1_555 1_555 -C9A C8A 1.516 1_555 1_555 -C9J C8J 1.516 1_555 1_555 -C9K C8K 1.516 1_555 1_555 -H5A C9A 0.990 1_555 1_555 -H5J C9J 0.990 1_555 1_555 -H5K C9K 0.990 1_555 1_555 -H6A C9A 0.990 1_555 1_555 -H6J C9J 0.990 1_555 1_555 -H6K C9K 0.990 1_555 1_555 -C10A C9A 1.521 1_555 1_555 -C10J C9J 1.521 1_555 1_555 -C10K C9K 1.521 1_555 1_555 -H7A C10A 0.980 1_555 1_555 -H7J C10J 0.980 1_555 1_555 -H7K C10K 0.980 1_555 1_555 -H8A C10A 0.979 1_555 1_555 -H8J C10J 0.979 1_555 1_555 -H8K C10K 0.979 1_555 1_555 -H9A C10A 0.980 1_555 1_555 -H9J C10J 0.980 1_555 1_555 -H9K C10K 0.980 1_555 1_555 -C5A C6A 1.376 1_555 1_555 -C5N C6N 1.376 1_555 1_555 -C5O C6O 1.376 1_555 1_555 -#END diff --git a/cell2mol/test/New_cell_reconstruction.ipynb b/cell2mol/test/New_cell_reconstruction.ipynb deleted file mode 100644 index cc5603154..000000000 --- a/cell2mol/test/New_cell_reconstruction.ipynb +++ /dev/null @@ -1,1846 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 1, - "id": "64011125-1516-41ab-8fdd-b36593c63228", - "metadata": {}, - "outputs": [ - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "4ac383e7b1fb4604b4100321c3c4d0fe", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "from scipy import sparse\n", - "from ase.build import molecule\n", - "from ase.neighborlist import get_connectivity_matrix\n", - "from ase.neighborlist import natural_cutoffs\n", - "from ase.neighborlist import NeighborList\n", - "import ase\n", - "import numpy as np\n", - "from ase.io import read\n", - "from ase import Atoms\n", - "import ase.visualize\n", - "from ase.visualize.plot import plot_atoms\n", - "from cell2mol.read_write import readinfo\n", - "from cell2mol.cell_operations import frac2cart_fromparam, cart2frac\n", - "import nglview\n", - "from ase.build import molecule\n", - "from ase.neighborlist import NeighborList\n", - "import matplotlib.pyplot as plt" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "0a7ce659-b63c-459b-bbec-56b42072c628", - "metadata": {}, - "outputs": [], - "source": [ - "def view_nglview (ase_object):\n", - " view = nglview.show_ase(ase_object)\n", - " view.add_unitcell()\n", - " return view" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "ef4fbfb0-5e46-4ada-86e0-860c9131c949", - "metadata": {}, - "outputs": [], - "source": [ - "folder = \"error_2\"\n", - "name = \"BOFFOS\"\n", - "infopath = f\"{folder}/{name}/{name}.info\"\n", - "input_path = f\"{folder}/{name}/{name}.cif\"" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "8c86e1ac-3ea3-41c9-a3a7-79329b40d821", - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 0 and 59 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 0 and 60 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 2 and 61 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 2 and 62 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 3 and 63 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 3 and 64 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 4 and 65 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 4 and 66 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 5 and 67 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 5 and 68 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 6 and 69 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 6 and 70 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 7 and 71 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 7 and 72 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 8 and 73 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 8 and 74 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 9 and 75 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 9 and 76 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 10 and 77 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 10 and 78 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 11 and 79 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 11 and 80 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 15 and 81 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 15 and 82 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 16 and 83 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 16 and 84 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 17 and 85 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 17 and 86 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 18 and 87 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 18 and 88 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 19 and 89 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 19 and 90 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 20 and 91 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 20 and 92 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 21 and 93 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 21 and 94 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 22 and 95 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 22 and 96 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 23 and 97 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 23 and 98 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 24 and 99 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 24 and 100 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 25 and 101 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 25 and 102 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 26 and 103 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 26 and 104 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 27 and 105 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 27 and 106 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 28 and 107 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 28 and 108 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 29 and 109 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 29 and 110 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 30 and 111 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 30 and 112 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 31 and 113 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 31 and 114 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 32 and 115 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 32 and 116 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 33 and 117 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 33 and 118 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 34 and 119 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 34 and 120 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 35 and 121 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 35 and 122 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 36 and 123 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 36 and 124 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 37 and 125 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 37 and 126 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 38 and 127 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 38 and 128 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 39 and 129 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 39 and 130 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 40 and 131 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 40 and 132 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 41 and 133 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 41 and 134 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 42 and 135 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 42 and 136 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 43 and 137 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 43 and 138 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 44 and 139 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 44 and 140 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 45 and 141 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 45 and 142 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 46 and 143 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 46 and 144 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 47 and 145 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 47 and 146 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 48 and 147 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 48 and 148 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 49 and 149 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 49 and 150 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 50 and 151 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 50 and 152 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 51 and 153 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 51 and 154 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 52 and 155 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 52 and 156 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n" - ] - } - ], - "source": [ - "atoms = read(input_path)\n", - "cell_labels = atoms.get_chemical_symbols()\n", - "cell_pos = atoms.positions\n", - "cell_fracs = atoms.get_scaled_positions()\n", - "cell_vector = atoms.cell.array\n", - "# cell_parameters = atoms.cell.cellpar()\n", - "space_group = atoms.info['spacegroup']\n", - "sym_ops = space_group.get_op()" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "id": "9edc124c-9a9a-48a1-93ae-dd1cf688dc53", - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 6, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "plot_atoms(atoms)" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "id": "3ae40c80-c36d-4742-a824-fff5f94fd317", - "metadata": {}, - "outputs": [ - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "4f3f2852c5dc4536a5109d2cf7b0f2b0", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "NGLWidget()" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "view_nglview(atoms)" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "id": "94c85424-6c78-43c9-9c63-db1a3f7a2dcf", - "metadata": {}, - "outputs": [], - "source": [ - "labels, pos, ref_labels, ref_fracs, cellvec, cell_param = readinfo(infopath)\n", - "ref_molecule = Atoms(symbols=ref_labels, scaled_positions=ref_fracs, cell=cell_vector, pbc=True)" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "id": "24aa3d77-79ac-4e46-ad5e-8549d2b5832f", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 9, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "plot_atoms(ref_molecule)" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "id": "bc67809e-1cb6-4554-a7d9-5792a1a29f4d", - "metadata": {}, - "outputs": [ - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "52208742419241f997be8f6a85fec4e6", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "NGLWidget()" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "view_nglview(ref_molecule)" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "id": "906c356e-011c-4fee-a382-ca3b81f7345d", - "metadata": {}, - "outputs": [], - "source": [ - "def apply_symmetry_operations_reference (ref_molecule, cell_vector, sym_ops, normalize=True):\n", - " \n", - " new_structures = []\n", - " ref_labels = ref_molecule.get_chemical_symbols()\n", - " fractional_coords = ref_molecule.get_scaled_positions()\n", - " \n", - " for rot, trans in zip(sym_ops[0], sym_ops[1]):\n", - " transformed_positions = np.dot(fractional_coords, rot.T)\n", - " transformed_positions += np.array(trans) \n", - " if normalize:\n", - " transformed_positions = np.remainder(transformed_positions, 1)\n", - " new_molecule = Atoms(symbols=ref_labels, scaled_positions=transformed_positions, cell=cell_vector) \n", - " new_structures.append(new_molecule)\n", - " \n", - " return new_structures" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "id": "7958a81e-05cb-4b94-ab7f-f7d98bddf773", - "metadata": {}, - "outputs": [], - "source": [ - "new_structures = apply_symmetry_operations_reference(ref_molecule, cell_vector, sym_ops)" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "id": "b67397e1-d25d-4b59-a4a2-286c39fd9bf6", - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "data": { - "text/plain": [ - "[Atoms(symbols='C42H78FeK3O33', pbc=False, cell=[[24.369, 0.0, 0.0], [-12.184499999999995, 21.10417306482299, 0.0], [0.0, 0.0, 9.748]]),\n", - " Atoms(symbols='C42H78FeK3O33', pbc=False, cell=[[24.369, 0.0, 0.0], [-12.184499999999995, 21.10417306482299, 0.0], [0.0, 0.0, 9.748]]),\n", - " Atoms(symbols='C42H78FeK3O33', pbc=False, cell=[[24.369, 0.0, 0.0], [-12.184499999999995, 21.10417306482299, 0.0], [0.0, 0.0, 9.748]]),\n", - " Atoms(symbols='C42H78FeK3O33', pbc=False, cell=[[24.369, 0.0, 0.0], [-12.184499999999995, 21.10417306482299, 0.0], [0.0, 0.0, 9.748]]),\n", - " Atoms(symbols='C42H78FeK3O33', pbc=False, cell=[[24.369, 0.0, 0.0], [-12.184499999999995, 21.10417306482299, 0.0], [0.0, 0.0, 9.748]]),\n", - " Atoms(symbols='C42H78FeK3O33', pbc=False, cell=[[24.369, 0.0, 0.0], [-12.184499999999995, 21.10417306482299, 0.0], [0.0, 0.0, 9.748]]),\n", - " Atoms(symbols='C42H78FeK3O33', pbc=False, cell=[[24.369, 0.0, 0.0], [-12.184499999999995, 21.10417306482299, 0.0], [0.0, 0.0, 9.748]]),\n", - " Atoms(symbols='C42H78FeK3O33', pbc=False, cell=[[24.369, 0.0, 0.0], [-12.184499999999995, 21.10417306482299, 0.0], [0.0, 0.0, 9.748]]),\n", - " Atoms(symbols='C42H78FeK3O33', pbc=False, cell=[[24.369, 0.0, 0.0], [-12.184499999999995, 21.10417306482299, 0.0], [0.0, 0.0, 9.748]])]" - ] - }, - "execution_count": 13, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "new_structures" - ] - }, - { - "cell_type": "code", - "execution_count": 33, - "id": "2bc4e0f6-11c5-4d10-944e-a866fc88f71a", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 33, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "mol = new_structures[1]\n", - "plot_atoms(mol)" - ] - }, - { - "cell_type": "markdown", - "id": "fbdb2756-f8c6-49f8-8876-af8585d5dcf7", - "metadata": {}, - "source": [ - "## check NeighborList" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "id": "2c287469-48da-46d5-9b38-77b5342078e9", - "metadata": {}, - "outputs": [], - "source": [ - "cutoffs = natural_cutoffs(mol)" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "id": "6fc626ba-23fb-423a-8573-c3639970b722", - "metadata": {}, - "outputs": [], - "source": [ - "neighbor_list = NeighborList(cutoffs, self_interaction=False, bothways=True)" - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "id": "e453b75c-5795-462d-9109-76cbd7c56331", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "True" - ] - }, - "execution_count": 18, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "neighbor_list.update(mol)" - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "id": "cf57974e-79ed-4e12-84e1-ef257ada7695", - "metadata": {}, - "outputs": [], - "source": [ - "matrix = neighbor_list.get_connectivity_matrix()" - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "id": "48b2c73a-e5da-4681-a081-4d61504f793c", - "metadata": {}, - "outputs": [], - "source": [ - "n_components, component_list = sparse.csgraph.connected_components(matrix)" - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "id": "e8c142de-587d-465a-ae8f-432636b8129a", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "24" - ] - }, - "execution_count": 21, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "n_components" - ] - }, - { - "cell_type": "code", - "execution_count": 22, - "id": "8a42bddd-d83e-468c-a258-616ac9578c67", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "array([ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 2, 3, 4, 0, 0,\n", - " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 6, 7,\n", - " 7, 7, 0, 0, 8, 9, 9, 9, 9, 9, 10, 0, 0, 0, 0, 0, 0,\n", - " 0, 1, 2, 3, 4, 11, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 13, 13, 12, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 15, 16, 17, 18, 19,\n", - " 18, 19, 18, 19, 0, 0, 0, 0, 20, 21, 0, 22, 0, 22, 0, 22, 0,\n", - " 22, 22, 0, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 12, 13], dtype=int32)" - ] - }, - "execution_count": 22, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "component_list" - ] - }, - { - "cell_type": "code", - "execution_count": 23, - "id": "27fc9e47-1e1e-4956-a96b-a08cfbdb644e", - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "There are 24 molecules in the system\n", - "Atom 12 is part of molecule 2\n", - "Atoms are part of molecule 2: [12, 53]\n" - ] - } - ], - "source": [ - "idx = 12\n", - "molIdx = component_list[idx]\n", - "print(\"There are {} molecules in the system\".format(n_components))\n", - "print(\"Atom {} is part of molecule {}\".format(idx, molIdx))\n", - "molIdxs = [i for i in range(len(component_list)) if component_list[i] == molIdx]\n", - "print(\"Atoms are part of molecule {}: {}\".format(molIdx, molIdxs))" - ] - }, - { - "cell_type": "code", - "execution_count": 24, - "id": "9587c32c-b774-455b-b071-f44cb9455b50", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 36, 37, 45, 46, 47, 48, 49, 50, 51, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 123, 124, 125, 126, 129, 131, 133, 135, 138, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154]\n", - "1 [10, 11, 52]\n", - "2 [12, 53]\n", - "3 [13, 54, 57]\n", - "4 [14, 55, 58]\n", - "5 [31]\n", - "6 [32]\n", - "7 [33, 34, 35]\n", - "8 [38]\n", - "9 [39, 40, 41, 42, 43]\n", - "10 [44]\n", - "11 [56]\n", - "12 [77, 80, 155]\n", - "13 [78, 79, 156]\n", - "14 [113]\n", - "15 [114]\n", - "16 [115]\n", - "17 [116]\n", - "18 [117, 119, 121]\n", - "19 [118, 120, 122]\n", - "20 [127]\n", - "21 [128]\n", - "22 [130, 132, 134, 136, 137]\n", - "23 [139]\n" - ] - }, - { - "data": { - "image/png": "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RkRERGTkWLARERERGTkWbERERERGjgUbERERkZFjwUZERERk5FiwERERERk5FmxERERERo4FGxEREZGRY8FGREREZORYsBEREREZORZsREREREaOBRsRERGRkWPBRkRERGTkWLARERERGTkWbERERERGjgUbERERkZFjwUZERERk5FiwERERERk5FmxERERERo4FGxEREZGRY8FGREREZORYsBEREREZORZsREREREaOBRsRERGRkWPBRkRERGTkWLARERERGTkWbERERERGjgUbERERkZEzEx1AH7RaLTIyMtC0aVMoFArRcYiIiIhqJUkS7t27BycnJyiVD29DaxAFW0ZGBlxcXETHICIiIqqzW7duwdnZ+aHrNIiCrWnTpgD+/MDW1taC0xARERHVrqCgAC4uLro65mEaRMF2/zKotbU1CzYiIiIyKY/SnYs3HRAREREZORZsREREREaOBRsRERGRkWPBRkRERGTkGsRNB4+roqIC+/fvh1arRfv27dG5c2ckJCTgxo0bunkADyyraR5ArevUZb8i39sY9tsQPxO/f37//P6r369CocC4ceNARDWQGoD8/HwJgJSfn1+n7Xx9fSWFQiEBkPr16ydJkiT169evynx1y2qaf5R16rJfke9tDPttiJ+J3z+//0fdb0P8TA/bLwDp0KFDEpGc1KV+UUiSJD28pDN+BQUFsLGxQX5+fp2G9fjyyy8xduxYvPjii4iIiDC6v0ZFvrcx7LchfiZ+//z++f0/uN8rV65g1qxZ6NSpE65cuQIiuahL/SLrgg0ALl++DD8/PwMlIyKiRxEXF4euXbvW+ngeooakLvWL7P/P8PPzQ0lJCdavXy86ChGRbHXv3h1KpRIbN25EQUGB6DhERkf2BRsAzJ49G/Pnz8eBAwdERyEikq3Lly9j7ty5CA0NFR2FyOiwYAOwadMmWFhY4MiRI6KjEBHJlp+fH3x9ffHDDz+IjkJkdGQ9rMd9lpaWuHv3LiwtLUVHISKStQsXLsDCwkJ0DCKjwxa2/7K0tEReXh5GjRqFvLw80XGIiGTp/h/OERER2LNnj+A0RMaDLWz/IzY2FkeOHEFRURG+//570XGIiGSpoqIC7733HlQqFcaOHcs7R4nAFrYqgoKC0Lt3bzRu3Fh0FCIi2VKpVPjHP/4BGxsbZGdni45DZBRkPw4bERERkQgc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1UtKSkoSG7qaVXSO8vPzpd69e0vu7u5SrVq1JF9fX2nixImy+kdSWecGgLR27VrDNg8ePJBef/11qW7dupK9vb00aNAg6fbt2+JCV7PKzlFqaqrUtWtXydXVVbK1tZUaN24svfvuu1J2drbY4NVo/Pjxkq+vr6RUKiV3d3epV69ehmJNkngNSVLF50hu15CVJElS9bXnEREREVFVWXQfNiIiIiI5YMFGREREZOZYsBERERGZORZsRERERGaOBRsRERGRmWPBRkRERGTmWLARERERmTkWbERERERmjgUbERERkZljwUZERERk5liwEREREZk5FmxEREREZo4FGxEREZGZY8FGREREZOZYsBERERGZORZsRERERGaOBRsRERGRmWPBRkRERGTmWLARERERmTkWbERERERmjgUbERERkZljwUZERERk5liwEREREZk5FmxEREREZo4FGxEREZGZY8FGREREZOZYsBERERGZORZsRERERGaOBRsRERGRmWPBRkRERGTmWLARERERmTkWbERERERmjgUbERERkZljwUZERERk5liwEREREZk5FmxEREREZo4FGxEREZGZY8FGREREZOZYsBERERGZORZsRERERGaOBRsRERGRmbMRHcAY9Ho90tPT4ejoCCsrK9FxiIiIiColSRLu378PtVoNhaLiNrQaUbClp6fD29tbdAwiIiKiKrt16xYaNGhQ4TY1omBzdHQE8OcXdnJyEpyGiIiIqHI5OTnw9vY21DEVqREF28PboE5OTizYiIiIyKI8TncuPnRAREREZOZYsBERERGZORZsRERERGaOBRsRERGRmasRDx08qWPHjmH9+vXo0aMHWrRogTZt2iAxMRGXLl0yvAbwyLryXgOodJuqHFfkZ5vDcWvid+Lfn39//v0fPe6pU6ewb98+7N27t9KxqIhkS6oBsrOzJQBSdnZ2lfZr06aNBEACIHXr1k2SJEnq1q1bqddlrSvv9eNsU5XjivxsczhuTfxO/Pvz7/+4x62J36mi4wKQoqKiJCI5qUr9YiVJklRhRWcBcnJy4OzsjOzs7CoN65GcnIxWrVph7NixmDRpktn9a1TkZ5vDcWvid+Lfn39//v3LPu67776L0NBQrF+/HkRyUZX6RdYFGxEREZEoValf2FkAwP79+9G+fXvo9XrRUYiIZCstLQ3t27dHQkKC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H3+UJInXkCRVfI7kdg1ZfMEmSZL0xRdfSD4+PpJSqZQ6duwonTp1SnQkszF8+HDJy8tLUiqVUv369aXhw4dL169fFx1LqCNHjkgAHlkiIiIkSfpzaI+ZM2dKnp6ekq2trdSrVy8pKSlJbOhqVtE5ys/Pl3r37i25u7tLtWrVknx9faWJEyfK6h9JZZ0bANLatWsN2zx48EB6/fXXpbp160r29vbSoEGDpNu3b4sLXc0qO0epqalS165dJVdXV8nW1lZq3Lix9O6770rZ2dlig1ej8ePHS76+vpJSqZTc3d2lXr16GYo1SeI1JEkVnyO5XUNWkiRJ1deeR0RERERVZdF92IiIiIjkgAUbERERkZljwUZERERk5liwEREREZk5FmxEREREZo4FGxEREZGZY8FGREREZOZYsBERERGZORZsRERERGaOBRsRERGRmWPBRkRERGTmWLARERERmTkWbERERERmjgUbERERkZljwUZERERk5liwEREREZk5FmxEREREZo4FGxEREZGZY8FGREREZOZYsBERERGZORZsRERERGaOBRsRERGRmWPBRkRERGTmWLARERERmTkWbERERERmjgUbERERkZljwUZERERk5liwEREREZk5FmxEREREZo4FGxEREZGZY8FGREREZOZYsBERERGZORZsRERERGaOBRsRERGRmWPBRkRERGTmWLARERERmTkWbERERERmjgUbERERkZljwUZERERk5liwEREREZk5FmxEREREZs5GdABj0Ov1SE9Ph6OjI6ysrETHISIiIqqUJEm4f/8+1Go1FIqK29BqRMGWnp4Ob29v0TGIiIiIquzWrVto0KBBhdvUiILN0dERwJ9f2MnJSXAaIiIiosrl5OTA29vbUMdUpEYUbA9vgzo5ObFgIyIiIovyON25+NABERERkZljwUZERERk5liwEREREZm5GtGH7WkkJibi0qVLaNGiBdq0afPI68fZ5uFrAJVuU5XjivxsczhuTfxO/Pvz78+/f8XHJaJySDVAdna2BEDKzs6u0n6TJ0+W6tSpIwGQunXrJkmSJHXr1q3U67LWlff6cbapynFFfrY5HLcmfif+/fn3f9zj1sTvVNFxa9WqJWVkZEhEclKV+sVKkiSpkprO7OXk5MDZ2RnZ2dlVeko0IiIC69evx6uvvoopU6aY3b9GRX62ORy3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RAaOBRsRERGRgWPBRkRERGTgWLARERERGTgWbEREREQGjgUbERERkYFjwUZERERk4FiwERERERk4FmxEREREBo4FGxEREZGBY8FGREREZOBYsBEREREZOBZsRERERAaOBRsRERGRgWPBRkRERGTgWLARERERGTgWbEREREQGjgUbERERkYFjwUZERERk4FiwERERERk4FmxEREREBo4FGxEREZGBY8FGREREZOBYsBEREREZOBZsRERERAaOBRsRERGRgTMRHUAXNBoNcnJy0LZtWygUCtFxiIiIiBolSRJu3rwJJycnKJUNt6G1iIItJycHLi4uomMQERERNdn169fh7Ozc4DotomBr27YtgL8+sKWlpeA0RERERI0rKSmBi4uLto5pSIso2O5cBrW0tGTBRkREREblXrpz8aYDIiIiIgPHgo2IiIjIwLFgIyIiIjJwLNiIiIiIDFyLuOngfl29ehWffvopevXqhR49esDPzw/Jycm4cuWK9jGAu56r7zGARtdpyn5Fvrch7LclfiZ+//z++f3fvd+LFy/i9OnT2Lp1K4ioHlILUFxcLAGQiouLm7Sdt7e3BEACIAUHB0uSJEnBwcG1Htf1XH2P72WdpuxX5Hsbwn5b4mfi98/v/1732xI/U0P7BSAtXbpUIpKTptQvCkmSpAYrOiNQUlICKysrFBcXN2lYj0uXLiEgIABTpkzB888/b3B/jYp8b0PYb0v8TPz++f3z+797vykpKZg3bx4GDRqEgwcPgkgumlK/yLpgA4Dq6mqYmMj6yjARkXD8LSY5akr9IvubDkxMTHDhwgUMGzYMGo1GdBwiIlkyMTFBYWEhhg0bhqtXr4qOQ2RwZF+wAcBXX32FY8eOYcmSJaKjEBHJ1h9//IFvv/0W48aNEx2FyOCwYAOwfPlydO3aFWZmZqKjEBHJlqenJyZOnAgnJyfRUYgMjuz7sBERERGJwD5s9+nHH3+Es7MzLl26JDoKEZFsVVRUoE+fPli0aJHoKEQGgwXb/7CxsUFOTg7Gjx8vOgoRkWyZmZkhKysLa9asQWFhoeg4RAaB91D/j86dO+OFF16Ao6Oj6ChERLL22WefYdOmTexbTPR/2IetHneG+FAq2QhJRCQSx2ijlop92B5Qfn4+rK2tsWDBAtFRiIhk7dFHH0W3bt1ExyASjgVbHezs7GBhYYH169ej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8vPzxYVuYPUdo5ycHGnAgAGSs7OzZG1tLT322GPSa6+9JpWUlIgN3oBmzJgh+fj4SCqVSmrVqpU0ePBgfbEmSTyHJOn+x0hu55BCkiSp4drziIiIiMhQFt2HjYiIiEgOWLARERERmTkWbERERERmjgUbERERkZljwUZERERk5liwEREREZk5FmxEREREZo4FGxEREZGZY8FGREREZOZYsBERERGZORZsRERERGaOBRsRERGRmWPBRkRERGTmWLARERERmTkWbERERERmjgUbERERkZljwUZERERk5liwEREREZk5FmxEREREZo4FGxEREZGZY8FGREREZOZYsBERERGZORZsRERERGaOBRsRERGRmWPBRkRERGTmWLARERERmTkWbERERERmjgUbERERkZljwUZERERk5liwEREREZk5FmxEREREZo4FGxEREZGZY8FGREREZOZYsBERERGZORZsRERERGaOBRsRERGRmWPBRkRERGTmWLARERERmTkWbERERERmjgUbERERkZljwUZERERk5qxEBzAGnU6HvLw82NvbQ6FQiI5DREREVC9JknDz5k2o1WoolfdvQ2sUBVteXh68vLxExyAiIiIy2NWrV+Hp6XnfbRpFwWZvbw/g9w/s4OAgOA0RERFR/bRaLby8vPR1zP00ioLt7mVQBwcHFmxERERkUR6kOxdvOiAiIiIycyzYiIiIiMwcCzYiIiIiM8eCjYiIiMjMNYqbDh7Wu+++i8OHD2Pu3Lno1KkTunTpguTkZFy8eFG/DuCex+paB1DvNoa8rsj3NofXbYyfid8/v39+//e+7o4dO7B161ZcvHiRN44R1UVqBEpKSiQAUklJiUH7jRw5UgIgAZAGDhwoSZIkDRw4sMZ6bY/Vtf4g2xjyuiLf2xxetzF+Jn7//P4f9HUb42e63+sCkIYOHSoRyYkh9YtCkiTpvhWdBdBqtXB0dERJSYlBf52Vl5ejR48eiIiIwPDhw83ur1GR720Or9sYPxO/f37//P5rf90vvvgCY8aMQVRUFIjkwpD6RdYF2//S6XT1TgtBRESmxd9ikhND6hf+XwFg6dKlcHR0RHFxsegoRESylZycDEdHR2zevFl0FCKzw4INQHBwMEpLS/Hss8+KjkJEJFsBAQG4ffs2XnrpJdFRiMyOrO8SvWvo0KF49dVXMWPGDNFRiIhk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Ko0YMUJq2bKl9OeffwpOXneq20cPHz6U5syZI0VFRUnJycnS999/L3Xp0kVq06aNVFRUJDp6nZg2bZpkY2MjnT9/XsrIyNBOhYWF2javvfaa5ObmJp09e1aKiYmRAgICpICAAIGp61ZN++jWrVvSsmXLpJiYGCk5OVk6fPiw1KpVK6lPnz6Ck9edt99+W7pw4YKUnJwsXb16VXr77bclExMT6dSpU5Ik8RiSpOr3kdyOIaMv2CRJkj799FPJzc1NUiqVUvfu3aUrV66IjmQwxo8fLzVr1kxSKpVS8+bNpfHjx0u3bt0SHUuoc+fOSQAem8LCwiRJ+uvWHgsXLpScnJwkMzMzKTAwULp586bY0HWsun1UWFgoDRo0SHJwcJAaNmwoubu7S1OmTJHVH0mV7RsA0ubNm7Vt/vzzT+n111+XmjRpIllYWEijRo2SMjIyxIWuYzXto9TUVKlPnz6SnZ2dZGZmJrVu3VqaO3eulJubKzZ4HXr55Zcld3d3SalUSg4ODlJgYKC2WJMkHkOSVP0+ktsxZCJJklR3/XlEREREVFtGPYaNiIiISA5YsBEREREZOBZsRERERAaOBRsRERGRgWPBRkRERGTgWLARERERGTgWbEREREQGjgUbERERkYFjwUZERERk4FiwERERERk4FmxEREREBo4FGxEREZGBY8FGREREZOBYsBEREREZOBZsRERERAaOBRsRERGRgWPBRkRERGTgWLARERERGTgWbEREREQGjgUbERERkYFjwUZERERk4FiwERERERk4FmxEREREBo4FGxEREZGBY8FGREREZOBYsBEREREZOBZsRERERAaOBRsRERGRgWPBRkRERGTgWLARERERGTgWbEREREQGjgUbERERkYFjwUZERERk4FiwERERERk4FmxEREREBo4FGxEREZGBY8FGREREZOBYsBEREREZOBZsRERERAaOBRsRERGRgWPBRkRERGTgTEUH0AWNRoP09HRYWVnBxMREdBwiIiKiGkmShIcPH8LZ2RkKRfV9aPWiYEtPT4erq6voGERERES1dufOHbi4uFTbpl4UbFZWVgD++sDW1taC0xARERHVLC8vD66urto6pjr1omB7dBrU2tqaBRsREREZlScZzsWLDoiIiIgMHAs2IiIiIgPHgo2IiIjIwLFgIyIiIjJw9eKig6f16aef4vDh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ERERmTgWbEREREQmjgUbERERkYljwUZERERk4liwEREREZk4FmxEREREJo4FGxEREZGJY8FGREREZOJYsBERERGZOBZsRERERCaOBRsRERGRiWPBRkRERGTiWLARERERmTgWbEREREQmjgUbERERkYljwUZERERk4liwEREREZk4FmxEREREJo4FGxEREZGJY8FGREREZOJYsBERERGZOBZsRERERCaOBRsRERGRiWPBRkRERGTiWLARERERmTgWbEREREQmjgUbERERkYljwUZERERk4liwEREREZk4FmxEREREJo4FGxEREZGJY8FGREREZOJYsBERERGZOEvRAQxBq9UiPT0ddnZ2UCgUouMQERERPZIkSbh79y7UajWUyqrb0GpEwZaeng5PT0/RMYiIiIj0dvPmTTRo0KDKdWpEwWZnZwfgrw9sb28vOA0RERHRo+Xl5cHT01NXx1SlRhRsDy6D2tvbs2AjIiIis/I43bl40wERERGRiWPBRkRERGTiWLARERERmTgWbEREREQmrkbcdPCk8vPzsW7dOjg6OqJVq1Zo27YtEhIScPnyZd1jAA89V9ljAI9cR5/9inxvU9hvTfxM/P75/fP7r3i/t27dwtSpU0FElZBqgNzcXAmAlJubq9d2rVq1kgBIAKRu3bpJkiRJ3bp1K/e4oucqe/w46+izX5HvbQr7rYmfid8/v//H3W9N/ExV7ReAFB0dLRHJiT71i0KSJKnKis4M5OXlwcHBAbm5uXoN63HgwAH07t0bYWFheO+990zur1GR720K+62Jn4nfP79/fv8P7/f8+fN46623EBAQgFOnToFILvSpX2RdsAHAjRs34O3tbaRkRET0OPhbTHKkT/0i+5sOvL29kZWVhffee090FCIi2fL29oZWq8X777+PW7duiY5DZHJkX7ABQGRkJL788kusWrVKdBQiItmKj4/HF198gcGDB4uOQmRyWLABWLJkCezt7REfHy86ChGRbHXo0AHPPfccNBqN6ChEJkfWw3o8oFKpcOfOHSiVrF+JiET65Zdf+FtMVAH+V/E/SqUSN27cQOfOnZGeni46DhGRLCmVSpSWliI8PBwrVqwQHYfIZLBg+5u0tDScPHkSgwYNEh2FiEjWtm/fjqlTp6K4uFh0FCKTwILtbzp16oSXX34ZTZo0ER2FiEi2LC0tsWDBAjRq1Ag5OTmi4xCZBNmPw0ZEREQkAsdhe0pZWVlo1qwZ5s+fLzoKEZGsDRs2DC+88ILoGETCsWCrgJOTEzQaDT766CMUFhaKjkNEJFtZWVk4cuQIDhw4IDoKkVAc1qMCSqUSy5Ytw8mTJ2FpyUNERCTK999/j6FDh6JNmzaioxAJxT5sj6G4uBgqlcrg+yUiosfH32KqadiHzYCaNGmCwMBA0TGIiGRt3LhxcHR0REFBgegoREKwYHuEpk2bIiEhASdOnBAdhYhItnr06IH79+9j3LhxoqMQCcEOWo+wZcsWfPPNN3juuedERyEikq2hQ4ciKSkJkyZNEh2FSAj2YXtMWq0WiYmJaNGihVH2T0REj+fKlSv8LaYagX3YjKBz587w9/dHfn6+6ChERLK1YMECtGzZEtu2bRMdhaha6VWwRUVFoUOHDrCzs4Orqyv69euHxMTEcusUFhZi4sSJqFevHmxtbTFw4EBkZmZWuV9JkjBjxgx4eHigdu3aCA4ORlJSkv6fxojeffddlJSU4F//+pfoKEREsjVmzBioVCp8/PHHoqMQVSu9CrZjx45h4sSJOH36NA4ePIiSkhL06tUL9+7d060zdepU/PDDD9i6dSuOHTuG9PR0DBgwoMr9fvHFF/jmm2+wfPlynDlzBnXq1EFISIhJDVrbv39/xMTEsGAjIhLI1tYWhw8fxvnz50VHIapWT9WH7c8//4SrqyuOHTuGrl27Ijc3Fy4uLti4cSMGDRoEALh69SpatGiB2NhYPPvssw/tQ5IkqNVqTJs2De+88w4AIDc3F25uboiOjsawYcMemaM65xItLS3F6tWr8eabbxr1fYiIqGrr16/HK6+8AkdHR9FRiJ5ItfVhy83NBfDXVE4AEB8fj5KSEgQHB+vWad68Oby8vBAbG1vhPlJSUqDRaMpt4+DggMDAwEq3KSoqQl5eXrmlukyePBlvvfUWNm3aVG3vSURE5V26dAnh4eEYOnSo6ChE1eKJCzatVospU6agU6dOaN26NQBAo9FApVI99NeOm5sbNBpNhft58Lybm9tjbxMVFQUHBwfd4unp+aQfQ2/z5s2DtbU1Nm/eXG3vSURE5bVu3RoBAQGIi4uDVqsVHYfI6J54HLaJEyfi0qVLQgaUjYyMREREhO5xXl5etRVt1tbWyMjIYBM8EZFghw8fhq2tLZRKDnhANd8TneWTJk3Cjz/+iCNHjqBBgwa6593d3VFcXIycnJxy62dmZsLd3b3CfT14/p93kla1jZWVFezt7cst1enB9CivvfYasrKyqvW9iYjoL/b29lAqlZg3bx67qVCNp1fBJkkSJk2ahJ07d+Lw4cPw8fEp93pAQABq1aqFmJgY3XOJiYlITU1FUFBQhfv08fGBu7t7uW3y8vJw5syZSrcxBadPn8Z3332HIUOGiI5CRCRbpaWlmD59OsaOHYvS0lLRcYiMRq+CbeLEidiwYQM2btwIOzs7aDQaaDQa3L9/H8BfNwu88cYbiIiIwJEjRxAfH49Ro0YhKCio3B2izZs3x86dOwEACoUCU6ZMwZw5c7Bnzx5cvHgRI0aMgFqtRr9+/Qz3SQ3shRdeQKdOnVBSUiI6ChGRbFlaWmLu3LmoXbs2/vjjD9FxiIxGr2E9FApFhc+vXbsWI0eOBPDXwLnTpk3Dpk2bUFRUhJCQECxdurTc5U2FQlFuG0mS8Mknn2DlypXIyclB586dsXTpUjRr1uyxclXnsB5EREREhqBP/cK5RJ9Sfn4++vXrh8GDB3NsNiIigT766CMkJiZy2ioyG5xLtBpZW1sjNjYWERER7D9BRCTQ8ePHsX37diGjFxAZGwu2p2RpaYn58+fj2WefNamptIiI5Gb79u1o2bIlrK2tRUchMjheEiUiIiISgJdEBenWrRu6du0qOgYRkazNmjULLi4uKC4uFh2FyGBYsBmQUqnEL7/8gsOHD4uOQkQkW56ensjKysLo0aNFRyEymCeemooetnXrVkyePLncmHNERFS9Ro0ahZMnT2Lq1KmioxAZDPuwGUlOTg7nGyUiEoy/xWTK2IdNsH79+sHDw4N3jRIRCbR+/Xo4OTlh7969oqMQPTUWbEYwePBg3YwPREQkxiuvvAILCwtMmDBBdBSip8Y+bEYwfPhw5OXlYezYsaKjEBHJlqOjIzZt2sR+xVQjsA+bkR0/fpxDfRARCXb27Fm0aNECtra2oqMQ6bAPm4n46KOP0K1bN+zevVt0FCIi2UpJSUHHjh0xfPhw0VGInhhb2IwoPz8fTk5OaN++PU6dOiU6DhGRbLVu3RrJycm4e/cuLC3ZG4hMgz71C89aI7K1tcX58+fRokUL0VGIiGRt//79sLGxYbFGZouXRI2sVatWAIA5c+YgLy9PcBoiInlq0KABnJyccODAAQ7zQWaJf2pUg1OnTuHjjz/GqVOn+ENBRCSIVqtFv379YGVlhezsbCiVbLMg88GztRp07twZ/v7++O2330RHISKSLaVSienTp6OwsBBXrlwRHYdIL7zpoJoUFxdDpVKJjkFEJHv8PSZTwWE9TJBKpYJWq8XEiRPx3XffiY5DRCRbKpUK3333HWdAILPCFrZqVFhYCEdHR6hUKuTk5LD/BBGRIB06dEBcXBx+/fVXdOjQQXQckim2sJkoa2trzJ49G+7u7sjOzhYdh4hItrZv3w5XV1dkZmaKjkL0WNjCRkRERCQAW9jMQHh4OPr27Ss6BhGRrK1duxZNmzZFaWmp6ChEVWLBJkhSUhL27NmD2NhY0VGIiGTr/v37uHbtGsaPHy86ClGVWLAJsm3bNjz33HNwd3cXHYWISLYmTJiA3r174+WXXxYdhahKehdsx48fR58+faBWq6FQKLBr165yrysUigqXL7/8stJ9zpw586H1mzdvrveHMSdqtRonT56Ej48PtFqt6DhERLK1b98+9O3bl7/FZNL0Ltju3bsHf39/LFmypMLXMzIyyi1r1qyBQqHAwIEDq9xvq1atym134sQJfaOZpQkTJsDJyQnFxcWioxARydaPP/4IGxsbHD58WHQUogrpPZdoaGgoQkNDK339n5f4du/ejeeffx6NGjWqOoilpSwvD7Zt2xbLli3DxIkT8e2334qOQ0QkS88++yxKS0sRHh6Omzdvio5D9BCjTv6emZmJn376CevWrXvkuklJSVCr1bC2tkZQUBCioqLg5eVV4bpFRUUoKirSPc7LyzNY5uo2btw4JCYm4v333xcdhYhItpydnbFgwQL4+fmJjkJUIaPedLBu3TrY2dlhwIABVa4XGBiI6Oho7N+/H8uWLUNKSgq6dOmCu3fvVrh+VFQUHBwcdIunp6cx4lebefPmwdXVFampqaKjEBHJ1qRJk9C1a1doNBoUFhaKjkNUjlELtjVr1mD48OGwtraucr3Q0FAMHjwYfn5+CAkJwd69e5GTk4Pvv/++wvUjIyORm5urW2pC8/W8efPg7e2NAwcOiI5CRCRb6enpaNCgAUaOHCk6ClE5RivYfvnlFyQmJmLMmDF6b+vo6IhmzZrh2rVrFb5uZWUFe3v7cou5GzVqFCwsLBARESE6ChGRbKnVajRq1Ajbt29nKxuZFKMVbKtXr0ZAQAD8/f313jY/Px/Jycnw8PAwQjLT5OTkhJ9++glnzpwRHYWISNZ2796N+Pj4R14dIqpOehds+fn5SEhIQEJCAgAgJSUFCQkJ5fpf5eXlYevWrZW2rvXo0QOLFy/WPX7nnXdw7NgxXL9+HadOnUL//v1hYWGBsLAwfeOZtZCQENja2mL37t0oKCgQHYeISJZatGgBPz8/JCcnczYaMhl63yUaFxeH559/Xvf4wSW88PBwREdHAwA2b94MSZIqLbiSk5ORlZWle5yWloawsDDcvn0bLi4u6Ny5M06fPg0XFxd945m9hIQE9OvXDwMGDMD27dtFxyEiki1/f39YWVnhzz//hFLJiYFILIUkSZLoEE9Ln9nuzUGLFi2QmZmJrKws/kgQEQny0UcfISoqCmfOnEGHDh1Ex6EaSJ/6hQWbCbp16xYcHR2hUqlERyEiki2tVguNRgO1Wi06CtVQ+tQvbL4xQa6urlCpVFixYgX27NkjOg4RkSwplUqo1WrExcVh1qxZouOQzLGFzUQVFxfDzs4ONjY2uH37Ni+NEhEJ0q5dO5w/fx4XL15E69atRcehGoQtbDWASqXChx9+CEmSkJaWJjoOEZFsbd26FbVr18bp06dFRyEZYwubidNqtWxdIyISjL/FZAxsYatBlEoloqKiMHr0aNFRiIhkS6lU4vDhw+jUqRO0Wq3oOCRDLNjMwLZt27B27VqcO3dOdBQiItmKi4vDqVOnMHXqVNFRSIZYsJmBHTt2wMfHByUlJaKjEBHJ1nvvvYd27drBy8tLdBSSIb1nOqDq5+3tjd9//110DCIi2YuPjxcdgWSKLWxm5LPPPoOnpydKS0tFRyEikq3Y2Fi4uLhwnlGqVizYzEidOnWQlpaGt99+W3QUIiLZ8vb2RnZ2NoYNGyY6CskIL4makSlTpuDkyZN44403REchIpIttVqNjz76CB4eHqKjkIxwHDYzVVhYCGtra9ExiIhk7UEXFUtLtn+Q/jgOWw23bt062Nra4sSJE6KjEBHJVnZ2NhwcHDB27FjRUUgGWLCZoZCQEEiShJEjR4qOQkQkW05OTnBxccH69euRn58vOg7VcGzDNUPu7u5YuXIlunbtKjoKEZGsbdu2Db///jtsbW1FR6Eajn3YzNylS5fQrFkzqFQq0VGIiGQrPz8ff/zxB3x9fUVHITPCPmwykZiYiDZt2nCeUSIiwRo2bIju3buLjkE1GAs2M+br64tGjRph+/btnIyYiEig119/HRqNBocPHxYdhWooXhI1c0lJSbCzs4O7u7voKEREsqXVanHmzBkEBQWJjkJmhJdEZaRp06Zwd3fHiRMncPz4cdFxiIhkSalUIigoCFlZWVi9erXoOFQD8S7RGkCr1SI4OBj29va4deuW6DhERLIVGhqK+Ph4dO3aFU2bNhUdh2oQtrDVAEqlEpMnT8adO3eQmJgoOg4RkWxFR0dDoVDg+++/Fx2Fahj2YashtFotCgoKOBYQEZFg+fn5/C2mx8I+bDKkVCpha2uL3bt34/333xcdh4hItmxtbZGSkoIhQ4bwDn4yGBZsNcz06dPxxRdf4PLly6KjEBHJ1vr167F161ZMnz5ddBSqIfQu2I4fP44+ffpArVZDoVBg165d5V4fOXIkFApFuaV3796P3O+SJUvQsGFDWFtbIzAwEL/++qu+0Qh/TZPi6OiIa9euiY5CRCRbH3/8MRo2bIi7d++KjkI1hN53id67dw/+/v4YPXo0BgwYUOE6vXv3xtq1a3WPraysqtznli1bEBERgeXLlyMwMBALFixASEgIEhMT4erqqm9EWfP19cWdO3dExyAikjWlUomUlBTRMagG0buFLTQ0FHPmzEH//v0rXcfKygru7u66pW7dulXuc/78+Rg7dixGjRqFli1bYvny5bCxscGaNWv0jUf/891336Ft27bsP0FEJFBSUhJatmyJhIQE0VHIzBmlD9vRo0fh6uoKX19fjB8/Hrdv36503eLiYsTHxyM4OPj/h1IqERwcjNjY2Aq3KSoqQl5eXrmFyrt+/Tr+85//4N133xUdhYhItiwtLXH16lUMHjxYdBQycwYfOLd3794YMGAAfHx8kJycjA8//BChoaGIjY2FhYXFQ+tnZWWhrKwMbm5u5Z53c3PD1atXK3yPqKgofPrpp4aOXqN89NFH2LdvH9q3by86ChGRbPn4+GD8+PGiY1ANYPCCbdiwYbp/t2nTBn5+fmjcuDGOHj2KHj16GOQ9IiMjERERoXucl5cHT09Pg+y7Jjlx4oToCEREsrdkyRLREagGMPqwHo0aNYKzs3Oldy06OzvDwsICmZmZ5Z7PzMysdEJzKysr2Nvbl1uoYj/++CNsbW0RFxcnOgoRkWzl5+ejfv36mDBhgugoZKaMXrClpaXh9u3b8PDwqPB1lUqFgIAAxMTE6J7TarWIiYlBUFCQsePVeH5+figoKMDQoUNFRyEikq0HMx+sWLEC2dnZgtOQOdL7kmh+fn651rKUlBQkJCTAyckJTk5O+PTTTzFw4EC4u7sjOTkZ7733Hpo0aYKQkBDdNj169ED//v0xadIkAEBERATCw8PRvn17dOzYEQsWLMC9e/cwatQoA3xEefPy8sJnn32Gtm3bio5CRCRrmzZtwqFDh+Do6Cg6CpkhvQu2uLg4PP/887rHD/qShYeHY9myZbhw4QLWrVuHnJwcqNVq9OrVC7Nnzy43FltycjKysrJ0j4cOHYo///wTM2bMgEajQdu2bbF///6HbkSgJxMZGQkAyMnJga2tLSwtDd51kYiIHqFr167o2rUrtFotsrKy4OzsLDoSmRFO/i4TqampaNy4MUaNGoWVK1eKjkNEJFuNGzdGSUkJUlNTRUchwTj5Oz3Ey8sLHh4eWLt2LYqLi0XHISKSrR49euDmzZvYs2eP6ChkRnhtTEZ27dqFkpISqFQq0VGIiGRr6dKlCAoKwiuvvCI6CpkRXhKVobS0NGRnZ8PPz090FCIi2SotLcWRI0fQs2dP0VFIEH3qF7awyYxWq4Wvry8cHByQnp4uOg4RkWwFBwfj+PHjuH79Ory8vETHIRPHPmwyo1QqMXr0aGg0Gk5GTEQk0FdffQVJkrBgwQLRUcgM8JKoDGm1WqSkpKBx48aioxARyVpSUhKaNm0qOgYJwrtEqUpKpRKNGzfGlStXsHDhQtFxiIhkq2nTpigoKNCNl0lUGRZsMjZ48GBMnToVycnJoqMQEcnWF198gblz52LWrFmio5AJY8EmYxs3boSlpSWOHDkiOgoRkWzNmDED9erVw/nz50VHIRPGu0Rl7MHE8JyqiohIHKVSCY1Gw99iqhJb2GTO0tISsbGx6N27N7Rareg4RESyZGlpiezsbISEhODKlSui45AJYsFG+OGHH3DgwAHMnDlTdBQiItnKzMzEzz//jEGDBomOQiaIBRthzpw5aNasGWrXri06ChGRbLVo0QJhYWGoX7++6ChkgjgOGxEREZEAHIeNnsiZM2fQoEEDXLp0SXQUIiLZKiwsRIcOHTg2G5XDgo10nJyckJ6ezv4TREQCWVtb48aNG/jqq6+Qk5MjOg6ZCN5DTDpNmzbF5MmToVarRUchIpK1devWYdWqVVCpVKKjkIlgHzaq0IMhPpRKNsISEYlUWlrKMdpqKPZho6dy69YtODo6YurUqaKjEBHJWlBQEJo3by46BpkAFmz0EFdXV9SpUwdLlixBQUGB6DhERLLVtGlTJCcnY9OmTaKjkGBsY6UKbdmyBcnJybCxsREdhYhItlatWgU3NzcMHjxYdBQSjH3YqErFxcXQaDTw8vISHYWISNaSk5PRuHFj0THIgNiHjQxGrVaja9euomMQEcnawIED0axZM2g0GtFRSBAWbFSlV155BTdu3MDJkydFRyEikq2pU6dCq9XivffeEx2FBOElUapSaWkpYmJiEBISIjoKEZGs7du3DyEhIRxuqQYx6iXR48ePo0+fPlCr1VAoFNi1a5futZKSErz//vto06YN6tSpA7VajREjRiA9Pb3Kfc6cORMKhaLcwtuYTYOlpSVCQkKQl5eHbdu2iY5DRCRboaGhAP4aVJfkR++C7d69e/D398eSJUseeq2goADnzp3Dxx9/jHPnzmHHjh1ITEzEK6+88sj9tmrVChkZGbrlxIkT+kYjI+revTuGDBmCtLQ00VGIiGTriy++wMiRIzF//nzRUaiaPdUlUYVCgZ07d6Jfv36VrnP27Fl07NgRN27cqPROw5kzZ2LXrl1ISEh4ohy8JGp8Z86cQVBQED777DNOSExEJIhWq4WDgwNatWqF06dPi45DT0mf+sXo47Dl5uZCoVDA0dGxyvWSkpKgVqthbW2NoKAgREVFVVrgFRUVoaioSPc4Ly/PkJGpAoGBgdBoNHB1dRUdhYhItpRKJZKTk/lbLENG7blYWFiI999/H2FhYVVWjoGBgYiOjsb+/fuxbNkypKSkoEuXLrh7926F60dFRcHBwUG3eHp6Gusj0N+4urpCo9Fg3LhxoqMQEcmWq6srtFot3n77baSkpIiOQ9XEaAVbSUkJhgwZAkmSsGzZsirXDQ0NxeDBg+Hn54eQkBDs3bsXOTk5+P777ytcPzIyErm5ubrl5s2bxvgIVIF58+bh22+/xdy5c0VHISKSrStXrmDx4sUYOHCg6ChUTYxSsD0o1m7cuIGDBw/q3a/M0dERzZo1w7Vr1yp83crKCvb29uUWqh6ff/45XF1dcePGDdFRiIhkq1WrVujduzfu378PrVYrOg5VA4P3YXtQrCUlJeHIkSOoV6+e3vvIz89HcnIyXn/9dUPHo6ekVCqRkZHBcYCIiAT76aef+FssI3p/0/n5+UhISNDd0ZmSkoKEhASkpqaipKQEgwYNQlxcHL777juUlZVBo9FAo9GguLhYt48ePXpg8eLFusfvvPMOjh07huvXr+PUqVPo378/LCwsEBYW9vSfkAxOqVQiJSUFAQEBSEpKEh2HiEiWlEolSktLMWzYMERFRYmOQ0amd8EWFxeHZ555Bs888wwAICIiAs888wxmzJiBP/74A3v27EFaWhratm0LDw8P3XLq1CndPpKTk5GVlaV7nJaWhrCwMPj6+mLIkCGoV68eTp8+DRcXFwN8RDKGe/fu4dy5c+w/QUQkkFKpxM8//4xPPvkE+fn5ouOQEel9SbR79+6oaui2xxnW7fr16+Ueb968Wd8YJFjr1q3x+uuvw8LCQnQUIiLZUiqVWL16NWbNmoX8/HzY2tqKjkRGwrlEiYiIiAQw6lyiRH+Xk5MDHx8ffPjhh6KjEBHJ2uDBgxEQECA6BhkJCzZ6Kvb29rh79y6+/PJLzjhBRCSQJEk4d+4cNm3aJDoKGYHRp6aimk2pVGL9+vU4dOgQ+04QEQm0fv16lJWVoWfPnqKjkBGwDxsZFDu9EhGJx99i88A+bCREkyZN0K5dO9ExiIhkbfz48XByckJ2drboKGRALNjIYDp06ICkpCQcOHBAdBQiItkaMGAASkpKMGbMGNFRyIDYh40MZu3atQgMDERISIjoKEREstWzZ08sWrQII0eOFB2FDIh92MjgtFot4uPj0aFDB9FRiIhk7cyZMwgMDBQdgyrBPmwkVPfu3REUFIRbt26JjkJEJFsrVqzAs88+ixUrVoiOQgbAgo0MbtasWSgrK8Pnn38uOgoRkWyNGjUKtWvXxrx580RHIQNgHzYyuO7duyM+Pp53jBIRCaRSqXD69Gk0b95cdBQyALawkVG0a9cOxcXFmDt3rugoRESy5efnB5VKhRUrViA9PV10HHoKLNjIaKZPn47IyEgsWrRIdBQiItlKTk7GW2+9hYEDB4qOQk+BBRsZzb/+9S/Y2dnh559/Fh2FiEi2GjdujO7duyMpKQmlpaWi49ATYh82MhpLS0toNBrY2NiIjkJEJGv79u2DSqWCUsl2GnPFb46MysbGBvn5+RgwYABSU1NFxyEikiVra2solUrMmTMHS5cuFR2HngAHziWji4uLQ4cOHRAQEIC4uDjRcYiIZEmr1cLR0RHFxcXIycmBtbW16Eiyx4FzyaS0b98eL730EurUqSM6ChGRbCmVSixduhR169bFH3/8IToO6YktbEREREQCsIWNTFJBQQG6du2KqKgo0VGIiGTt/fffR8+ePUXHID2wYKNqY21tjQsXLmDmzJkoKCgQHYeISLYuXbqEQ4cOYffu3aKj0GNiwUbVRqlUYuXKlXjhhReg1WpFxyEikq1NmzYhICAA3t7eoqPQY2IfNhJGq9VyTCAiIsH4WywO+7CRyevSpQueeeYZ0TGIiGRt1qxZcHR0RF5enugo9Ags2EgIZ2dnXLhwgf0niIgE8vf3x927d/H666+LjkKPoHfBdvz4cfTp0wdqtRoKhQK7du0q97okSZgxYwY8PDxQu3ZtBAcHIykp6ZH7XbJkCRo2bAhra2sEBgbi119/1TcamZHvvvsOb775JkJDQ0VHISKSrb59+yIiIgLz588XHYUeQe+C7d69e/D398eSJUsqfP2LL77AN998g+XLl+PMmTOoU6cOQkJCUFhYWOk+t2zZgoiICHzyySc4d+4c/P39ERISglu3bukbj8yEjY0Nli9fDpVKBY1GIzoOEZFszZs3D40bN+ZvsYnTu2ALDQ3FnDlz0L9//4dekyQJCxYswPTp09G3b1/4+flh/fr1SE9Pf6gl7u/mz5+PsWPHYtSoUWjZsiWWL18OGxsbrFmzRt94ZGYGDhwIT09P5OTkiI5CRCRbW7ZsgYeHBzZs2CA6ClXCoH3YUlJSoNFoEBwcrHvOwcEBgYGBiI2NrXCb4uJixMfHl9tGqVQiODi40m2KioqQl5dXbiHzNGbMGJSWliIiIkJ0FCIi2erbty+srKzwwQcfiI5ClTBowfagOdXNza3c825ubpU2tWZlZaGsrEyvbaKiouDg4KBbPD09DZCeRAgNDcXmzZuxatUq0VGIiGTL2toau3fvRlxcnOgoVAmzvEs0MjISubm5uuXmzZuiI9FTGDp0KJRKJfbs2SM6ChGRbIWEhMDd3R0nTpxgH3ITZNCCzd3dHQCQmZlZ7vnMzEzda//k7OwMCwsLvbaxsrKCvb19uYXM25w5c9C3b1+sXr1adBQiItlKT09Hly5dMGTIENFR6B8MWrD5+PjA3d0dMTExuufy8vJw5swZBAUFVbiNSqVCQEBAuW20Wi1iYmIq3YZqnvfeew/W1tZYuXKl6ChERLKlVqsRGBiIM2fOoLi4WHQc+htLfTfIz8/HtWvXdI9TUlKQkJAAJycneHl5YcqUKZgzZw6aNm0KHx8ffPzxx1Cr1ejXr59umx49eqB///6YNGkSACAiIgLh4eFo3749OnbsiAULFuDevXsYNWrU039CMgsqlQpXr17lvHZERIL9+OOPUKlUUKlUoqPQ3+hdsMXFxeH555/XPX5wd194eDiio6Px3nvv4d69exg3bhxycnLQuXNn7N+/H9bW1rptkpOTkZWVpXs8dOhQ/Pnnn5gxYwY0Gg3atm2L/fv3P3QjAtVs3t7e0Gq1+OijjzB58uRKL4kTEZHxODs7AwB2796NgoIChIWFCU5EACd/JxNz7tw5BAQEoFOnTjhx4oToOEREsmVnZ4eysjLk5OSwtc1IOPk7ma127dqhc+fOyMzMhFarFR2HiEi25s2bBwC4dOmS4CQEsIWNTJBWq4VSyb8liIhE4++xcbGFjcyaUqlEaWkpxowZg6VLl4qOQ0QkW0qlEmvXrsWrr74qOorssYWNTJJWq4WDgwNKS0uRm5vL/hNERIL06NEDhw8fxs8//4yePXuKjlOjsIWNzJ5SqcQ333yDhg0bIjs7W3QcIiLZ2rp1Kzw9PVFUVCQ6iqyxhY2IiIhIALawUY0yfPhwdOvWTXQMIiJZW716NerXr4+CggLRUWSJBRuZvNu3b+P48ePYu3ev6ChERLJla2uL9PR0vP7666KjyBILNjJ5mzdvRnBwMPz8/ERHISKSraFDh2LYsGEYM2aM6CiyxD5sZFaKi4t5xygRkWD8LTYM9mGjGmnixIlwdHREfn6+6ChERLJ14MAB2NraYvv27aKjyAoLNjIbL7zwAu7fv4+xY8eKjkJEJFudOnUCAEyYMEFwEnmxFB2A6HENHDgQs2fPxqRJk0RHISKSLVtbW6xatQq+vr6io8gK+7CRWbpy5QpatGghOgYRkaylpaXB3t6e/+99QuzDRjXa0qVL0bJlS2zatEl0FCIi2crKyoK3tzeGDBkiOoossIWNzE5BQQHq1q0Lb29v/Pbbb6LjEBHJVrt27XDhwgXk5OTA1tZWdByzo0/9wj5sZHZsbGxw+PBhBAQEiI5CRCRru3btwv3791msVQNeEiWz1KlTJ1hbW2PTpk2cHJ6ISBAvLy/4+vriypUrOHjwoOg4NRpb2MhsJSYm4tVXX0WPHj1w6NAh0XGIiGQrKCgIZWVlyM3NhVLJtiBj4FEls+Xr64v27dvj3Llz0Gq1ouMQEcnWjBkzUFBQgBMnToiOUmPxpgMya3l5ebCxsYGlJRuLiYhEysnJgaOjo+gYZoXDepBs2Nvbw9LSEvPnz8eGDRtExyEiki1HR0fExsYiIiJCdJQaiS1sZPa0Wi1sbW2hVCqRk5PD1jYiIkG6dOmCEydO4JdffkHnzp1FxzF5bGEjWVEqlfjqq69gbW2NGzduiI5DRCRbW7duhb29Pf773/+KjlLjsIWNiIiISAChLWwNGzaEQqF4aJk4cWKF60dHRz+0rrW1taFjkUzMnDkTAwYMEB2DiEjWDh48CH9/fxQXF4uOUmMYvGA7e/YsMjIydMuDgfQGDx5c6Tb29vbltuFlLXpSR48exc6dO3H48GHRUYiIZCs1NRUXLlzA6NGjRUepMQzeO9vFxaXc47lz56Jx48bo1q1bpdsoFAq4u7sbOgrJ0LZt29C1a1fUqVNHdBQiItl64403sGHDBnTo0EF0lBrDqLfTFRcXY8OGDYiIiIBCoah0vfz8fHh7e0Or1aJdu3b417/+hVatWlW6flFREYqKinSP8/LyDJqbzJezszM7uxIRmYAjR46IjlCjGPUu0V27diEnJwcjR46sdB1fX1+sWbMGu3fvxoYNG6DVavHcc88hLS2t0m2ioqLg4OCgWzw9PY2QnszZZ599BmdnZxQWFoqOQkQkW2fOnIGjoyP27dsnOorZM+pdoiEhIVCpVPjhhx8ee5uSkhK0aNECYWFhmD17doXrVNTC5unpybtESWfDhg14/fXXMWzYMGzatEl0HCIiWcrJyYGLiwucnJyQmZkpOo7J0ecuUaNdEr1x4wYOHTqEHTt26LVdrVq18Mwzz+DatWuVrmNlZQUrK6unjUg12GuvvYZjx45h8uTJoqMQEcmWo6MjPv/8c9StW1d0FLNntIJt7dq1cHV1xUsvvaTXdmVlZbh48SJefPFFIyUjufj2228B/PUXDFteiYjEeDBV1YMuKhy668kYpQ+bVqvF2rVrER4e/tA0QSNGjEBkZKTu8axZs/Dzzz/j999/x7lz5/Daa6/hxo0bGDNmjDGikcx89913cHR0xJ49e0RHISKSrfz8fDg5OSEsLEx0FLNllILt0KFDSE1NrXD8ldTUVGRkZOge37lzB2PHjkWLFi3w4osvIi8vD6dOnULLli2NEY1kpk+fPrCwsMCkSZNERyGqkYqKipCdnY2SkhLRUciE2drawsfHB7t370Z2drboOGaJU1NRjbdt2zZ06NAB3t7eoqMQ1QgXL17E0qVLsWnDBuTm5+ued6tXD+FvvIE333wTjRo1EpiQTFFiYiISExPxyiuviI5iMvSpX1iwkWzExcWhWbNmPEeIntCRI0cw46OPcCI2Fh61amGUQgFfpRJ1ANwFkFBWhnWShNyyMoSGhOCzqCi0bdtWcGoyNTk5Ofj999/Rrl070VGEY8FG9A83btxAw4YN8eKLL+Knn34SHYfI7KxevRpvjhuHDhYWmGZhgb6WlqhVwYDoBZKEzaWlmFdWhhuWlvh+2zbeREbluLq6oqSkBLdv34ZSadThYE2e0MnfiUyRt7c3/Pz8EBMTg9LSUtFxiMzKhg0bMGbMGIy1sMAvVlYYVKtWhcUaANgoFBhdqxZ+tbJCj9JS9OvblyPeUzmTJ09GTk4O9u7dKzqKWWELG8lGeno6VCoVnJ2dRUchMhvnzp3Ds4GBeF2hwCorqyqnGfynEknCS0VF+NXKCpeuXEGDBg2MmJTMyaVLl9C6dWvRMYRjCxtRBdRqNZydnRETE4Mff/xRdBwiszB/3jx4KZVYrmexBgC1FAp8b2UF7f37WLFihZESkjlq3bo10tPTMX/+fNFRzAZb2EhWtFotbG1tYWlpiZycHNn3nyCqyp9//okGajX+ZWGBaSrVE+9nYmEhttvbI/V/rdxEANC1a1f88ssvOHv2LNq3by86jhBsYSOqhFKpxKeffoqioiJcunRJdBwik7ZmzRootVqMrFXrqfYzvlYtZN6+jV27dhkmGNUI//73v1GrVi32ZXtMbGEjWSouLuZf+kSP0OW55+B+9iy21q791PsKKCpCyyFD8O9//9sAyaimkPtvMVvYiB5BpVJhy5YteOutt0RHITJZt//8Ew307LdWGU+tFtm3bxtkX1RzqFQqJCYmonfv3ryD/xFYsJFsff3111ixYgXOnDkjOgqRSSoqKoKVgQo2KwCF9+8bZF9Us/z88884cOAAJkyYIDqKSWPBRrK1Y8cOuLq6QqPRiI5CZJIcHR2RY6BeM3cUCtStV88g+6Ka5e2330abNm1Q2wCX3msyS9EBiERRq9XIzMwUHYPIZDVv3RrHEhMhSZLeQ3r83T1Jwq+ShIm+vgZMRzXJhQsXREcweWxhI9lbv349mjZtyv4TRP8w7s03cbW4GEfKyp5qP5tLSpBXVoYxY8YYKBnVRElJSWjcuDGOHj0qOopJYsFGsnf//n1cu3YNY8eOFR2FyKR07doVLZs1w9Kn+GNGkiQskSS82Ls3fHx8DJiOahoHBwdcv34dw4cPFx3FJLFgI9l78803ERoaipdffll0FCKTolAoMOH//g+7Sktx/AmLtk2lpThfXIwJkyYZOB3VNK6urvjggw8wdOhQ0VFMEsdhI/obrVbL2Q+I/qa4uBihvXrh3MmTOKJSoa2FxWNv+3NpKfoUFWHY8OGIXrfuqfrBkfzI4feY47ARPYF9+/bBxsYGBw8eFB2FyGSoVCps37UL9Rs3Ruf797GtpATaR/ydXyxJWFZcjJcKCxHcqxe+XbWKxRo9tsLCQri7u/PS6D+wYCP6n8DAQJSWlmLkyJGioxCZjNLSUixevBiJyckoq1ULgwsL0fj+fXxVXIzb/yjc0rRazCgqQv179zChqAhdu3fHrj17ZD2SPenP2toadnZ22LJlC4dd+hsO60H0P05OTvjmm2/QsmVL0VGITEJxcTGGDBmCH374AT169ECvXr3wxx9/4MQvvyDy/Hl8UFQEJwsL2CoUyJMkZJeVwapWLfh37AiXvDwcPnIEs2fPxqeffsoWNtLL1q1bsW/fPri7u4uOYjLYh42oArdu3YKtrS1sbGxERyESQpIkvPrqq9i+fTtGjRr10B8y+fn5uHDhAu7evYuioiJYW1vD0dERfn5+sLa2BgAcOnQIP/74I7766itMmzZNxMcgM6fVapGeno4GDRqIjmIU+tQvLNiI/uHWrVtQq9Xo168ftm3bJjoOkRAbNmzA66+/jhEjRqBdu3ZPvJ89e/bgl19+QVxcHPz8/AyYkOSgSZMmyMnJwa1bt2rkDQi86YDoKbi6uqJJkybYtWsXCgsLRcchqnY5OTmYNGkSAgICnqpYA4AXX3wRLi4uGD16NGpA+wBVs8GDB+P27dvYsmWL6CjCsWAjqsDu3bsRFxenu7RDJCfr1q1Dfn4+Xnnllafel6WlJfr06YP4+HicOnXKAOlITj777DNs27YNYWFhoqMIx4KNqAK+vr5o27YtUlJScPLkSdFxiKrV8uXL4efnBwcHB4Psz9fXF66urli5cqVB9kfyoVQqMXDgQBQXF2P79u2i4wjFgo2oCv7+/ujTpw+0Wq3oKETV4vbt27h69Spat25tsH0qlUq0aNECx44dM9g+SV5efvllDBo0CJcuXRIdRRgWbERViIiIQE5ODmJjY0VHIaoW58+fBwB4enoadL+enp64ceMGsrOzDbpfkoclS5ZAoVBgxYoVoqMIY/CCbebMmVAoFOWW5s2bV7nN1q1b0bx5c1hbW6NNmzbYu3evoWMRPZEZM2YgLS0NnTp1Eh2FqFo8GKjU0dHRoPutW7cugL/uwibSV9OmTZGWloZFixaJjiKMUVrYWrVqhYyMDN1y4sSJStc9deoUwsLC8MYbb+D8+fPo168f+vXrJ+tmTzIdSqUSarUaCQkJ+PTTT0XHITK6B3dyGnqg2wf7452i9KTUajXy8/Mxfvx4WXZTMUrBZmlpCXd3d93i7Oxc6boLFy5E79698e6776JFixaYPXs22rVrh8WLF1e6TVFREfLy8sotRMY0ZswYzJw5EwkJCaKjEBmVq6srACA3N9eg+83JyQEAuLi4GHS/JC8rV67E8uXLZTkQs1EKtqSkJKjVajRq1AjDhw9HampqpevGxsYiODi43HMhISFV9hmKioqCg4ODbjF0Xwuif9q6dStq166NM2fOiI5CZFQPxl07f/48rly5gsuXLyMlJQX37t17qv3evHkTDRo0qPIPeKJHiYiIgKenJ65fvy46SrUz+FyigYGBiI6Ohq+vLzIyMvDpp5+iS5cuuHTpEuzs7B5aX6PRwM3Nrdxzbm5uVU74GhkZiYiICN3jvLw8Fm1kVD4+PsjPz6+RI20TPXD9+nWsWLECKqUSP/30U7nXLJVKtH3mGXTq3BkNGzbU65KpJEm4evUqunXrZujIJEPXr1+X5W+xwT9xaGgoBg8eDD8/P4SEhGDv3r3IycnB999/b7D3sLKygr29fbmFyNiUSiWOHz+O5557Tpb9J6jmys3NxZBBg9CoUSMs++orjLewwGkbG1yvUwdpderggo0NomrVQlZCAhYuXIj5X3yBjIyMx97/tWvXkJGRgXHjxhnxU5BcKJVKZGVloVu3brK66mH0EtXR0RHNmjXDtWvXKnzd3d0dmZmZ5Z7LzMyEu7u7saMR6S0uLg6xsbGYNGmS6ChEBpGeno4uQUE4uHs3lqtU+MPaGgusrRFoYQFvpRL1lUq0sbDAOyoVkmvXxr7atWH/559YtGABkpOTH7n/srIy/PDDD2jdujW6d+9u/A9EslBYWIgTJ05g6NChoqNUG6MXbPn5+UhOToaHh0eFrwcFBSEmJqbccwcPHkRQUJCxoxHpLSIiAgEBAWjYsKHoKERPLS8vDy+GhCD72jWcVKkwTqVCnSoudSoVCvS2tMQpa2sElpVh1YoVSE9Pr/I9Dh48iLS0NKxZs8bgd56SfDVo0ABvvfUWWrZsKZsrHgbvw/bOO++gT58+8Pb2Rnp6Oj755BNYWFjo5gEbMWIE6tevj6ioKADA5MmT0a1bN8ybNw8vvfQSNm/ejLi4OE5hQiYrLi5OdAQig5g6ZQquX72KEyoVWlpYPPZ29goFdltbo0thIdauWoXI6dMr7FN04sQJ7N+/H59++ik6dOhgyOhEWLJkiegI1crgLWxpaWkICwuDr68vhgwZgnr16uH06dO6W7lTU1PL9X147rnnsHHjRqxcuRL+/v7Ytm0bdu3aZdBpUYgM7ezZs3B1da1yjEEiU5aVlYXvNmxApFKJ1noUaw/YKRT4VqXCn9nZuHLlSrnXCgsLsWXLFmzbtg2TJ0/Gxx9/bKjYROWUlpaibdu2sugfqZBqwCiGeXl5cHBwQG5uLm9AoGqh0WhQv359qNVq3Lx5U3QcIr19+eWX+PiDD5BWuzacn+KOu4D791HYpAnGvfUW8vPzcfr0aZw4cQIlJSWYN28exo0bx0uhZFQNGzbEzZs3cePGDTRo0EB0HL3oU78Y/JIokRy4u7tjxowZqFevnugoRHrTarVYvngxhlhYPFWxBgCTLC0x+upVfPbZZ8jKyoJKpUJYWBhmzpwJb29vAyUmqtyWLVuwcOFC3aDPNRVb2IieUmlpKbRaLVQqlegoRI/lwZ34O6yt0b9WrafaV64kwTE/Hz179kRYWBheeeUV/iFDwhQWFsLa2lp0jMemT/0iv5HniAwoJycHjo6OGD16tOgoRI/tzp07AABnA1yqtAdgqVCgX79+GDVqFIs1EubZZ59Fo0aNRMcwGhZsRE/B0dERbm5u2LRpE+e0JbNh6AsrCiPsk0hfgYGByMjIqLGjTLAPG9FT2rp1K5KSkng5nsxG3bp1AQBZBiiy7gIokSTdPolE+frrr+Hi4oIxY8aIjmIUbGEjekrt2rXD0KFDUVBQgMTERNFxiB7J1dUVPp6e2FVW9tT72lFaCgDo2LHjU++L6GkolUpM/9+YgAkJCaLjGBwLNiIDadiwIbp27So6BtEjKZVKvDVpEraUlSHrKUeJX6rVonevXmjSpImB0hE9nSFDhqBdu3ZISkoSHcWgWLARGUh4eDhu3bqFAwcOiI5C9EijR48GLCyw9n8tZE/ibFkZzhYXYwLn1iUTMmPGDEiSVOMGbOawHkQGotVqcebMGc6DS2Zj9KhR2LFhA06qVGil52wH+ZKEbsXFyHF3x2+//w6LJ5gtgchYTp48iU6dOomO8Ugc1oNIAKVSiaCgIGRlZWH16tWi4xA90oKFC+Ht64veJSW4okd/tjxJQr+iIiRZWmLHnj0s1sjkdOrUCVqtFgsWLKgxk8OzYCMysJdffhljxox5aH5FIlNjb2+PfT//DMcmTfBccTFWFRejoIqLLlpJwoHSUnQpKsJZlQp7fvoJ/v7+1ZiY6PEtXboUU6dOrTGXRlmwERnY2rVroVQqsXXrVtFRiB5JrVbjRGwsevTpg3HFxahfWIiIwkKcLSvDTa0WGVot/ltWhnnFxWhWXIze9+9D0awZTp4+je7du4uOT1SpCRMmoF69ejh06JDoKAbBPmxERpCfnw9bW1vRMYj0kpKSghUrVmDVihW4nZNT7jWVpSUGDxmCCRMnIigoiBO6k1kw9d9ifeoXFmxERpKamop33nkHmzdvhvIpJ9gmqk6FhYX4z3/+gzt37qC0tBR169aFr68vnJ2dRUcj0ltpaSnGjRuHKVOmwM/PT3SccvSpXzjTAZGRrF+/Hlu3boW3tze+/PJL0XGIHpu1tTUCAwNFxyAyiJs3byI6OhonTpzAb7/9JjrOE+Of/URGMn36dDRq1Aj5+fmioxARyZaPjw/CwsJQq1YtlD7FuIOi8ZIoERERkQAch43IhCQnJ6NVq1aIi4sTHYWISLa0Wi369++Pd999V3SUJ8KCjcjILC0tceXKFQwdOlR0FCIi2VIqlThz5gy+/vpr3Lp1S3QcvbFgIzIyb29vTJo0CT179hQdhYhI1jZu3Ij27dub5ewH7MNGREREJAD7sBGZoIKCAnh6euKtt94SHYWISNYGDhyIZs2aiY6hFxZsRNXExsYGAPDtt98iKytLcBoiIvlycnJCUlISli1bJjrKY+PAuUTVaPPmzfjpp5/g5OQkOgoRkWwtW7YMRUVFCAsLEx3lsbEPG5EAWq0W2dnZnOqHiEiwrKwsYb/FQvuwRUVFoUOHDrCzs4Orqyv69euHxMTEKreJjo6GQqEot1hbWxs6GpHJ8PX1Rdu2bUXHICKStbfffhtubm5ITU0VHeWRDF6wHTt2DBMnTsTp06dx8OBBlJSUoFevXrh3716V29nb2yMjI0O33Lhxw9DRiExGr1698Mcff2D79u2ioxARyVZ4eDi0Wi3efPNN0VEeyeB92Pbv31/ucXR0NFxdXREfH4+uXbtWup1CoYC7u7uh4xCZpEWLFqF9+/YYOHCg6ChERLLVvn17/Pvf/8agQYNER3kko98lmpubCwCP7GSdn58Pb29veHp6om/fvrh8+XKl6xYVFSEvL6/cQmROlEolRo0ahdLSUsTExIiOQ0QkW6+99hqsra1x8OBB0VGqZNSCTavVYsqUKejUqRNat25d6Xq+vr5Ys2YNdu/ejQ0bNkCr1eK5555DWlpahetHRUXBwcFBt3h6ehrrIxAZVUhICHr27ImUlBTRUYiIZGv9+vXo1asXPvvsM9FRKmXUu0THjx+Pffv24cSJE2jQoMFjb1dSUoIWLVogLCwMs2fPfuj1oqIiFBUV6R7n5eXB09OTd4mS2UlISMAzzzyDSZMmYdGiRaLjEBHJklarhZOTE+rVq4fk5ORqe1997hI12jhskyZNwo8//ojjx4/rVawBQK1atfDMM8/g2rVrFb5uZWUFKysrQ8QkEqpt27a4evUqfH19RUchIpItpVKJ+Ph4eHt7i45SKYNfEpUkCZMmTcLOnTtx+PBh+Pj46L2PsrIyXLx4ER4eHoaOR2RyfH19UVhYiMjISLOckJiIqCZo3LgxLC0tsWDBgkcORyaCwQu2iRMnYsOGDdi4cSPs7Oyg0Wig0Whw//593TojRoxAZGSk7vGsWbPw888/4/fff8e5c+fw2muv4caNGxgzZoyh4xGZpK+++gpz587FrFmzREchIpKttLQ0TJ061STv4Dd4wbZs2TLk5uaie/fu8PDw0C1btmzRrZOamoqMjAzd4zt37mDs2LFo0aIFXnzxReTl5eHUqVNo2bKloeMRmaQPP/wQLi4uiI+PFx2FiEi2GjRogL59++LWrVsoLi4WHaccTk1FZCJKS0thacnpfYmIRCotLYVSqYRSafSRz8ROTUVET8bS0hI5OTkIDQ2tchxCIiIyngd/OH/00UeIiooSnOb/YwsbkQlJSkqCr68vfH19ceXKFdFxiIhky9XVFXfu3MGff/4JR0dHo7wHW9iIzFTTpk3x6quvQq1W845RIiKBoqOj4eHhgczMTNFRALCFjYiIiEgItrARmbni4mIEBgbi3XffFR2FiEjWpk2bho4dO4qOwYKNyBSpVCrcuHEDX3/9NbKzs0XHISKSLY1Gg7Nnz2Lt2rVCc3AMASIT9e9//xtLly6FtbW16ChERLK1du1a/PHHH+jQoYPQHOzDRmQGOEYbEZF4hv4tZh82ohqkS5cunByeiEiwOXPm6KbcFIEFG5GJa9y4MX7//Xds2LBBdBQiItnq3r07CgsLMXz4cCHvz2ssRCZu5cqVqFevHoYNGyY6ChGRbHXu3BmffvopRo4cKeT92YeNyIwkJyejcePGomMQEcmaoX6L2YeNqAYaMmQImjVrhrS0NNFRiIhka/fu3WjSpAkWLFhQre/Lgo3ITEydOhVarRbvvfee6ChERLL10ksvwdbWttonhmcfNiIzERQUhL179yIkJER0FCIi2bK0tMT+/fvRokWLan1ftrARmZHQ0FAolUqsX79edBQiItnq1KkTnJyccPDgQdy4caNa3pMFG5GZmT9/PsLDw/HFF1+IjkJEJFtZWVkICQnBgAEDquX9WLARmZkpU6bAzs4OW7duFR2FiEi2nJ2d0bNnT/z3v/9FQUGB0d+PfdiIzIxSqcS1a9fg6uoqOgoRkaxt374dSqUSNjY2Rn8vtrARmSFXV1dotVpMnjwZSUlJouMQEcmSra0tbGxssGXLFqxYscKo78WBc4nMVGJiIpo3b442bdrgwoULouMQEclWvXr1kJ+fj9u3b8PW1vaxt9OnfuElUSIz5evri5dffhkXLlzAhg0boFAo0KpVK7Rt2xYJCQm4fPlypY8BGGSdB48BGPS9TWG/NfEz8fvn989jZZz/ViIjIzF9+nTs2LEDI0aMgFFINUBubq4EQMrNzRUdhahalZWVSd26dZMASACkbt26SZIk6Z6r7LGh1jHWe5vCfmviZ+L3z++fx6p6/lt5XPrUL7wkSmTm2MLCVgN+//z+eaxM67+Vx6VP/cKCjYiIiEgATv5OREREVIMYrWBbsmQJGjZsCGtrawQGBuLXX3+tcv2tW7eiefPmsLa2Rps2bbB3715jRSMiIiIyK0Yp2LZs2YKIiAh88sknOHfuHPz9/RESEoJbt25VuP6pU6cQFhaGN954A+fPn0e/fv3Qr18/XLp0yRjxiIiIiMyKUfqwBQYGokOHDli8eDEAQKvVwtPTE2+//TY++OCDh9YfOnQo7t27hx9//FH33LPPPou2bdti+fLlD61fVFSEoqIi3ePc3Fx4eXnh5s2b7MNGREREZiEvLw+enp7IycmBg4NDlesafBy24uJixMfHIzIyUvecUqlEcHAwYmNjK9wmNjYWERER5Z4LCQnBrl27Klw/KioKn3766UPPe3p6PnlwIiIiIgHu3r1b/QVbVlYWysrK4ObmVu55Nzc3XL16tcJtNBpNhetrNJoK14+MjCxX4OXk5MDb2xupqamP/MBy9aCKZytk5XiMHo3H6NF4jB6Nx+jReIwerSYcI0mScPfuXajV6keua5YzHVhZWcHKyuqh5x0cHMz2S6su9vb2PEaPwGP0aDxGj8Zj9Gg8Ro/GY/Ro5n6MHrehyeA3HTg7O8PCwgKZmZnlns/MzIS7u3uF27i7u+u1PhEREZGcGLxgU6lUCAgIQExMjO45rVaLmJgYBAUFVbhNUFBQufUB4ODBg5WuT0RERCQnRrkkGhERgfDwcLRv3x4dO3bEggULcO/ePYwaNQoAMGLECNSvXx9RUVEAgMmTJ6Nbt26YN28eXnrpJWzevBlxcXFYuXLlY72flZUVPvnkkwovk9JfeIwejcfo0XiMHo3H6NF4jB6Nx+jR5HaMjDY11eLFi/Hll19Co9Ggbdu2+OabbxAYGAgA6N69Oxo2bIjo6Gjd+lu3bsX06dNx/fp1NG3aFF988QVefPFFY0QjIiIiMis1Yi5RIiIiopqMc4kSERERmTgWbEREREQmjgUbERERkYljwUZERERk4mpEwbZkyRI0bNgQ1tbWCAwMxK+//io6ksmYOXMmFApFuaV58+aiYwl1/Phx9OnTB2q1GgqF4qE5ayVJwowZM+Dh4YHatWsjODgYSUlJYsIK8qhjNHLkyIfOq969e4sJK0BUVBQ6dOgAOzs7uLq6ol+/fkhMTCy3TmFhISZOnIh69erB1tYWAwcOfGiA8JrscY5R9+7dHzqP3nrrLUGJq9+yZcvg5+enG6k/KCgI+/bt070u93MIePQxktM5ZPYF25YtWxAREYFPPvkE586dg7+/P0JCQnDr1i3R0UxGq1atkJGRoVtOnDghOpJQ9+7dg7+/P5YsWVLh61988QW++eYbLF++HGfOnEGdOnUQEhKCwsLCak4qzqOOEQD07t273Hm1adOmakwo1rFjxzBx4kScPn0aBw8eRElJCXr16oV79+7p1pk6dSp++OEHbN26FceOHUN6ejoGDBggMHX1epxjBABjx44tdx598cUXghJXvwYNGmDu3LmIj49HXFwcXnjhBfTt2xeXL18GwHMIePQxAmR0DklmrmPHjtLEiRN1j8vKyiS1Wi1FRUUJTGU6PvnkE8nf3190DJMFQNq5c6fusVarldzd3aUvv/xS91xOTo5kZWUlbdq0SUBC8f55jCRJksLDw6W+ffsKyWOKbt26JQGQjh07JknSX+dMrVq1pK1bt+rWuXLligRAio2NFRVTqH8eI0mSpG7dukmTJ08WF8oE1a1bV1q1ahXPoSo8OEaSJK9zyKxb2IqLixEfH4/g4GDdc0qlEsHBwYiNjRWYzLQkJSVBrVajUaNGGD58OFJTU0VHMlkpKSnQaDTlzikHBwcEBgbynPqHo0ePwtXVFb6+vhg/fjxu374tOpIwubm5AAAnJycAQHx8PEpKSsqdR82bN4eXl5dsz6N/HqMHvvvuOzg7O6N169aIjIxEQUGBiHjClZWVYfPmzbh37x6CgoJ4DlXgn8foAbmcQ0aZmqq6ZGVloaysDG5ubuWed3Nzw9WrVwWlMi2BgYGIjo6Gr68vMjIy8Omnn6JLly64dOkS7OzsRMczORqNBgAqPKcevEZ/XQ4dMGAAfHx8kJycjA8//BChoaGIjY2FhYWF6HjVSqvVYsqUKejUqRNat24N4K/zSKVSwdHRsdy6cj2PKjpGAPDqq6/C29sbarUaFy5cwPvvv4/ExETs2LFDYNrqdfHiRQQFBaGwsBC2trbYuXMnWrZsiYSEBJ5D/1PZMQLkdQ6ZdcFGjxYaGqr7t5+fHwIDA+Ht7Y3vv/8eb7zxhsBkZM6GDRum+3ebNm3g5+eHxo0b4+jRo+jRo4fAZNVv4sSJuHTpkuz7hlalsmM0btw43b/btGkDDw8P9OjRA8nJyWjcuHF1xxTC19cXCQkJyM3NxbZt2xAeHo5jx46JjmVSKjtGLVu2lNU5ZNaXRJ2dnWFhYfHQXTOZmZlwd3cXlMq0OTo6olmzZrh27ZroKCbpwXnDc0o/jRo1grOzs+zOq0mTJuHHH3/EkSNH0KBBA93z7u7uKC4uRk5OTrn15XgeVXaMKvJgvmk5nUcqlQpNmjRBQEAAoqKi4O/vj4ULF/Ic+pvKjlFFavI5ZNYFm0qlQkBAAGJiYnTPabVaxMTElLu+Tf9ffn4+kpOT4eHhITqKSfLx8YG7u3u5cyovLw9nzpzhOVWFtLQ03L59WzbnlSRJmDRpEnbu3InDhw/Dx8en3OsBAQGoVatWufMoMTERqampsjmPHnWMKpKQkAAAsjmPKqLValFUVMRzqAoPjlFFavQ5JPquh6e1efNmycrKSoqOjpb++9//SuPGjZMcHR0ljUYjOppJmDZtmnT06FEpJSVFOnnypBQcHCw5OztLt27dEh1NmLt370rnz5+Xzp8/LwGQ5s+fL50/f166ceOGJEmSNHfuXMnR0VHavXu3dOHCBalv376Sj4+PdP/+fcHJq09Vx+ju3bvSO++8I8XGxkopKSnSoUOHpHbt2klNmzaVCgsLRUevFuPHj5ccHByko0ePShkZGbqloKBAt85bb70leXl5SYcPH5bi4uKkoKAgKSgoSGDq6vWoY3Tt2jVp1qxZUlxcnJSSkiLt3r1batSokdS1a1fByavPBx98IB07dkxKSUmRLly4IH3wwQeSQqGQfv75Z0mSeA5JUtXHSG7nkNkXbJIkSYsWLZK8vLwklUoldezYUTp9+rToSCZj6NChkoeHh6RSqaT69etLQ4cOla5duyY6llBHjhyRADy0hIeHS5L019AeH3/8seTm5iZZWVlJPXr0kBITE8WGrmZVHaOCggKpV69ekouLi1SrVi3J29tbGjt2rKz+SKro2ACQ1q5dq1vn/v370oQJE6S6detKNjY2Uv/+/aWMjAxxoavZo45Ramqq1LVrV8nJyUmysrKSmjRpIr377rtSbm6u2ODVaPTo0ZK3t7ekUqkkFxcXqUePHrpiTZJ4DklS1cdIbueQQpIkqfra84iIiIhIX2bdh42IiIhIDliwEREREZk4FmxEREREJo4FGxEREZGJY8FGREREZOJYsBERERGZOBZsRERERCaOBRsRERGRiWPBRkRERGTiWLARERERmTgWbEREREQmjgUbERERkYljwUZERERk4liwEREREZk4FmxEREREJo4FGxEREZGJY8FGREREZOJYsBERERGZOBZsRERERCaOBRsRERGRiWPBRkRERGTiWLARERERmTgWbEREREQmjgUbERERkYljwUZERERk4liwEREREZk4FmxEREREJo4FGxEREZGJY8FGREREZOJYsBERERGZOBZsRERERCaOBRsRERGRiWPBRkRERGTiWLARERERmTgWbEREREQmjgUbERERkYljwUZERERk4liwEREREZk4FmxEREREJo4FGxEREZGJY8FGREREZOIsRQcwBK1Wi/T0dNjZ2UGhUIiOQ0RERPRIkiTh7t27UKvVUCqrbkOrEQVbeno6PD09RccgIiIi0tvNmzfRoEGDKtepEQWbnZ0dgL8+sL29veA0RERERI+Wl5cHT09PXR1TlRpRsD24DGpvb8+CjYiIiMzK43Tn4k0HRERERCaOBRsRERGRiWPBRkRERGTiWLARERERmbgacdPBk/r++++xZcsWDBgwAK1atULbtm2RkJCAy5cv6x4DeOi5yh4DeOQ6+uxX5Hubwn5r4mfi98/vn9//w/s9dOgQdu7ciWPHjsHSUtb/WyKqnFQD5ObmSgCk3NxcvbYLCgqSAEgApG7dukmSJEndunUr97ii5yp7/Djr6LNfke9tCvutiZ+J3z+//8fdb038TFXtF4A0ZswYiUhO9KlfFJIkSVVWdGYgLy8PDg4OyM3N1WtYj/T0dLRu3RojRozAyJEjTe6vUZHvbQr7rYmfid8/v39+/xXvd+bMmejduzcWLVoEIrnQp36RdcFGREREJIo+9QtvOgCwYcMGNGnSBMXFxaKjEBHJVlJSEpo0aYLDhw+LjkJkcliwASgoKEBycjLGjh0rOgoRkWzVrVsX169fx2uvvSY6CpHJ4e04AMaNG4fdu3ejT58+oqMQEcmWs7MzIiMjkZ+fLzoKkclhH7Z/0Gq1UCrZ8EhEJBp/j6mmYx+2J3TgwAHUqVMHBw4cEB2FiEi2CgsL4eHhgeHDh4uOQmQyWLD9TYcOHVBSUoJRo0aJjkJEJFvW1taws7PDli1bkJ6eLjoOkUlgH7a/cXJywjfffANfX1/RUYiIZG3btm3Ys2cP1Gq16ChEJoF92CqRlZUFGxsb2NjYGGR/RESkP61Wi/T0dDRo0EB0FCKDYx+2p3Tr1i14eHjg9ddfFx2FiEjWfH194e/vD61WKzoKkVAs2Crg6uqKJk2aYPfu3SgoKBAdh4hItoYMGYLs7Gxs3LhRdBQiodiHrRJ79uzB3bt3eUmUiEig2bNno127dhg4cKDoKERCsYWtEk2bNkW7du2QkpKCkydPio5DRCRLSqUSAwcORHFxMbZv3y46DpEwbGF7BH9/f1hYWOD27dscwJGISJA+ffrg559/xsWLF9G6dWvRcYiqHSuQR5g2bRpyc3Nx6tQp0VGIiGRr6dKlUCgUWLp0qegoREJwWI/HkJaWxlvKiYgE428x1TQc1sPAGjRogAsXLmDmzJmioxARyVaDBg2Qn5+P8ePHc5gPkh0WbI9pzJgx+PTTT3Hu3DnRUYiIZGv16tVYvnw5pkyZIjoKUbXSq2CLiopChw4dYGdnB1dXV/Tr1w+JiYnl1iksLMTEiRNRr1492NraYuDAgcjMzKxyv5IkYcaMGfDw8EDt2rURHByMpKQk/T+NEW3duhW1a9fGmTNnREchIpKtyZMnw9PTEzdu3BAdhaha6VWwHTt2DBMnTsTp06dx8OBBlJSUoFevXrh3755unalTp+KHH37A1q1bcezYMaSnp2PAgAFV7veLL77AN998g+XLl+PMmTOoU6cOQkJCUFhY+GSfygi8vb11TfFERCTO9evXsXv3btExiKrVU9108Oeff8LV1RXHjh1D165dkZubCxcXF2zcuBGDBg0CAFy9ehUtWrRAbGwsnn322Yf2IUkS1Go1pk2bhnfeeQcAkJubCzc3N0RHR2PYsGEPbVNUVISioiLd47y8PHh6ehrtpoO/O378OD744AMcP34clpYcFYWISISsrCwMGjQIUVFRCAoKEh2H6IlU200Hubm5AAAnJycAQHx8PEpKShAcHKxbp3nz5vDy8kJsbGyF+0hJSYFGoym3jYODAwIDAyvdJioqCg4ODrrF09PzaT6GXs6dO4fY2Fi8/fbb1faeRERUXnFxMX755ZcK/6gnqomeuGDTarWYMmUKOnXqpBvEUKPRQKVSwdHRsdy6bm5u0Gg0Fe7nwfNubm6PvU1kZCRyc3N1y82bN5/0Y+htypQpCAgIgLe3d7W9JxERladWq/HWW2+hRYsWvGOUZOGJr+lNnDgRly5dwokTJwyZ57FYWVnBysqq2t/3gbi4OGHvTUREf1myZInoCETV5ola2CZNmoQff/wRR44cKTeIobu7O4qLi5GTk1Nu/czMTLi7u1e4rwfP//NO0qq2MQVnz56Fq6srjh8/LjoKEZFslZaW4plnnsHYsWNFRyEyKr0KNkmSMGnSJOzcuROHDx+Gj49PudcDAgJQq1YtxMTE6J5LTExEampqpZ1CfXx84O7uXm6bvLw8nDlzxqQ7knp6euL27dt49dVXRUchIpItS0tL3LlzB6tXr0ZqaqroOERGo9cl0YkTJ2Ljxo3YvXs37OzsdH3MHBwcULt2bTg4OOCNN95AREQEnJycYG9vj7fffhtBQUHl7hBt3rw5oqKi0L9/fygUCkyZMgVz5sxB06ZN4ePjg48//hhqtRr9+vUz6Ic1JHd3d8yYMUN3wwUREYmxdetWfP3113B1dRUdhcho9BrWQ6FQVPj82rVrMXLkSAB/DZw7bdo0bNq0CUVFRQgJCcHSpUvLXd5UKBTltpEkCZ988glWrlyJnJwcdO7cGUuXLkWzZs0eK5ex5xJ9lNLSUgDgMB9ERIIVFhbC2tpadAyix6JP/cLJ3w3w3g9aAzds2FCt701ERP/fc889h5SUFGRkZIiOQvRYOPl7NbK3t4e7uzs2btz40M0WRERUfZ599lloNBqsWLFCdBQig+M1PAPYtm0bLl++/ND4c0REVH2++uorODk58Y5RqpF4SdSACgoKcOPGDbRo0UJYBiIiAhISEtC2bVvRMYiqxEuigvj4+KBbt26iYxARyVpYWBjatWuHpKQk0VGIDIYFmwGNHDkSf/75J/bt2yc6ChGRbE2fPh2SJOGjjz4SHYXIYHhJ1IC0Wi1iY2PRqVMnYRmIiAg4efIkf4vJ5PGSqCBKpRKdOnVCdnY2Vq9eLToOEZFsderUCVqtFgsXLuTk8FQjsGAzgpdffhljxozBlStXREchIpKtFStWYMqUKbw0SjUCCzYjWLt2LZRKJb7//nvRUYiIZOvNN9+Es7MzDh06JDoK0VPjOGxG4Ovrizt37gjtT0dEJHdKpRLJycn8LaYagS1sRmJvb4/U1FQMGTKE/SeIiASxt7dHaWkpxowZg4SEBNFxiJ4YCzYj+u6777B161a8++67oqMQEcnWH3/8gTVr1mDw4MGioxA9MRZsRhQZGYlGjRrh3r17oqMQEcmWt7c3Xn31VahUKpSWloqOQ/REOA4bERERkQAch83EJCcno3Xr1jh79qzoKEREsqXVajFgwAB2UyGzxIKtGtSqVQv//e9/MXToUNFRiIhkS6lU4syZM5g/fz5u3bolOg6RXliwVQMvLy9MmjQJwcHBoqMQEcnapk2b0L59e969T2aHfdiIiIiIBGAfNhNVUFAALy8vjB07VnQUIiJZGzx4MJo0aSI6BtFjY8FWjWxsbAAAa9asYf8JIiKB6tWrh+TkZCxevFh0FKLHwqmpqtmWLVvwww8/wNnZWXQUIiLZWrx4Me7fv4/XXntNdBSix8I+bIJotVrk5OTAyclJdBQiIlnLzs7mbzEJwT5sZqB58+Zo3bq16BhERLL2f//3f3BxccGNGzdERyGqEgs2QUJCQpCRkYHvv/9edBQiItkaMWIEtFotxo0bJzoKUZXYh02QhQsXom3bthgyZIjoKEREstW+fXusW7eOv8Vk8vRuYTt+/Dj69OkDtVoNhUKBXbt2lXtdoVBUuHz55ZeV7nPmzJkPrd+8eXO9P4w5USqVeOONN6DVahETEyM6DhGRbI0YMQLW1tY4ePCg6ChEldK7YLt37x78/f2xZMmSCl/PyMgot6xZswYKhQIDBw6scr+tWrUqt92JEyf0jWaWQkJC0LNnTyQnJ4uOQkQkW9999x169eqFWbNmiY5CVKGnuktUoVBg586d6NevX6Xr9OvXD3fv3q2yFWnmzJnYtWsXEhISniiHOd4l+sCFCxfg7++PCRMmVFoEExGRcWm1WtSrVw9169bF77//LjoOyYQ+9YtR+7BlZmbip59+wrp16x65blJSEtRqNaytrREUFISoqCh4eXlVuG5RURGKiop0j/Py8gyWubr5+fnh6tWr8PX1FR2FiEi2lEol4uLi4O3tLToKUYWMepfounXrYGdnhwEDBlS5XmBgIKKjo7F//34sW7YMKSkp6NKlC+7evVvh+lFRUXBwcNAtnp6exohfbXx9fVFYWIjIyEhOSExEJEjjxo1haWmJRYsW4cqVK6LjEJVj1EuizZs3R8+ePbFo0SK99puTkwNvb2/Mnz8fb7zxxkOvV9TC5unpaZaXRB+IiorChx9+iI8//ph9KIiIBElPT0eDBg3QokULXL58WXQcquFMYuDcX375BYmJiRgzZoze2zo6OqJZs2a4du1aha9bWVnB3t6+3GLu3n//fbi4uCA+Pl50FCIi2VKr1ejbty8yMzNRXFwsOg6RjtH6sK1evRoBAQHw9/fXe9v8/HwkJyfj9ddfN0Iy06RUKpGeng5LSw6NR0Qk0tatW6FUKqFUcmx5Mh16n435+flISEjQ3dGZkpKChIQEpKam6tbJy8vD1q1bK21d69GjBxYvXqx7/M477+DYsWO4fv06Tp06hf79+8PCwgJhYWH6xjNrlpaWyMnJwYsvvohLly6JjkNEJEuWlpZQKpX4+OOP8dlnn4mOQwTgCVrY4uLi8Pzzz+seR0REAADCw8MRHR0NANi8eTMkSaq04EpOTkZWVpbucVpaGsLCwnD79m24uLigc+fOOH36NFxcXPSNZ/Zu376N/fv3Izk5GYmJiaLjEBHJ1sqVK5GdnY2JEyfC0dFRdBySuae66cBUmPM4bBUZMWIE0tLScOjQITbJExEJcuDAAYwdOxYHDx7k0EtkFPrULyzYiIiIiAQwibtE6ekUFxfj2WefxbRp00RHISKStXfffRcdO3YUHYNkjgWbiVKpVLhx4wYWLlxYrr8fERFVr8zMTJw9exarV68WHYVkjAWbCduwYQNeeuklWFtbi45CRCRbq1atQteuXdGhQwfRUUjG2IfNTJSWlnKMNiIiwfhbTIbEPmw1TNeuXdGsWTPRMYiIZO2zzz6Dra0tNBqN6CgkQyzYzECTJk2QkpKCdevWiY5CRCRb3bp1Q1FRkewGdSfTwHZdM7By5UrUrVsXw4cPFx2FiEi2OnfujNmzZ8tq2kQyHezDZmZSUlLg4+MjOgYRkazxt5gMgX3Yaqhhw4ahSZMmSEtLEx2FiEi29uzZg0aNGmH+/Pmio5CMsGAzI1OnToVWq8U777wjOgoRkWy9/PLLsLW1xdy5c0VHIRlhHzYzEhgYiJ9++gm9e/cWHYWISLaUSiX279/P+UWpWrGFzcy8+OKLUCqVWL9+vegoRESy1alTJzg7OyMmJgYpKSmi45AMsGAzQwsWLEB4eDib44mIBMrOzkbPnj0xYMAA0VFIBliwmaH/+7//g729PbZt2yY6ChGRbDk5OSEkJARXrlxBfn6+6DhUw7EPmxlSKpVISkqCq6ur6ChERLK2detWKJVK2NjYiI5CNRxb2MyUq6srtFotJk+ejKSkJNFxiIhkydbWFjY2NtiyZQtWrFghOg7VYBw414wlJiaiefPmaNOmDS5cuCA6DhGRbDk7OyMvLw/Z2dmwtbUVHYfMBAfOlQlfX1+88soruH//PrRareg4RESy9e2330KlUuHixYuio1ANxRY2M6fVaqFUsu4mIhKNv8ekL7awyYhSqYRWq8Vrr72GWbNmiY5DRCRbSqUSK1aswIsvvig6CtVALNhqiP3792P27NnIy8sTHYWISLYOHjyIffv2YdOmTaKjUA3Dgq0GUCqViI6ORosWLTgWEBGRQOvXr4evry/s7OxER6Eahn3YiIiIiARgHzYZe/XVV9G2bVvRMYiIZG316tWoV68esrOzRUehGoIFWw0jSRL+85//cHJ4IiKBvLy8kJ2djcGDB4uOQjWE3gXb8ePH0adPH6jVaigUCuzatavc6yNHjoRCoSi39O7d+5H7XbJkCRo2bAhra2sEBgbi119/1TcaAVi7di369u2LXr16iY5CRCRbPXv2xJtvvomPPvpIdBSqIfQu2O7duwd/f38sWbKk0nV69+6NjIwM3fKou2W2bNmCiIgIfPLJJzh37hz8/f0REhKCW7du6RtP9qytrbFr1y64u7ujoKBAdBwiItlavnw5XnjhBf4Wk0HoXbCFhoZizpw56N+/f6XrWFlZwd3dXbfUrVu3yn3Onz8fY8eOxahRo9CyZUssX74cNjY2WLNmTYXrFxUVIS8vr9xC5f3f//0fHB0dWfQSEQl09OhR2Nvbc55RempG6cN29OhRuLq6wtfXF+PHj8ft27crXbe4uBjx8fEIDg7+/6GUSgQHByM2NrbCbaKiouDg4KBbPD09Df4ZzN2AAQNQUlKCUaNGiY5CRCRbnTt3hpWVFT744APRUcjMGbxg6927N9avX4+YmBh8/vnnOHbsGEJDQ1FWVlbh+llZWSgrK4Obm1u5593c3KDRaCrcJjIyErm5ubrl5s2bhv4YZq979+5YtGgRB28kIhLI0tISmzZtQkxMjOgoZOYsDb3DYcOG6f7dpk0b+Pn5oXHjxjh69Ch69OhhkPewsrKClZWVQfZVk02aNAkAcPbsWXTo0EFwGiIieXrllVcAACkpKahduzbc3d0FJyJzZPRhPRo1agRnZ2dcu3atwtednZ1hYWGBzMzMcs9nZmbypDaAtWvXomPHjli8eLHoKEREspWfn4+mTZtW2f+bqCpGL9jS0tJw+/ZteHh4VPi6SqVCQEBAueZirVaLmJgYBAUFGTtejff666+jTp06mD9/vugoRESyZWtri86dO+PXX3/lYLr0RPS+JJqfn1+utSwlJQUJCQlwcnKCk5MTPv30UwwcOBDu7u5ITk7Ge++9hyZNmiAkJES3TY8ePdC/f3/dJbuIiAiEh4ejffv26NixIxYsWIB79+6xw7wBWFpa4tSpU2jevLnoKEREsrZt2zbk5ubCyclJdBQyQ3oXbHFxcXj++ed1jyMiIgAA4eHhWLZsGS5cuIB169YhJycHarUavXr1wuzZs8v1OUtOTkZWVpbu8dChQ/Hnn39ixowZ0Gg0aNu2Lfbv3//QjQj0ZPz8/AD8NVVKz5494eXlJTgREZH8ODs7w9nZGRcuXMBvv/2GQYMGiY5EZoSTv8tEamoqvL29ERAQgLi4ONFxiIhky8XFBXfv3kVOTg6sra1FxyGBOPk7PcTLywvBwcH4/fffUVxcLDoOEZFsff311ygtLcWxY8dERyEzwhY2GSksLIRKpYJSyTqdiEikgoIC2NjYiI5BgrGFjSpkbW0NpVKJuXPnYtGiRaLjEBHJlo2NDY4ePYrRo0eLjkJmgi1sMqPValGvXj0UFBTgzp07/AuPiEiQl156CXv37sWuXbvQt29f0XFIALawUaWUSiVWrFgBR0dHTulFRCTQpk2b4OLiUuk0jER/xxY2IiIiIgHYwkaP5eOPP8YLL7wgOgYRkawdOHAATZs2RV5enugoZMJYsMnYxYsXceTIEWzbtk10FCIi2SoqKsK1a9cQFhYmOgqZMBZsMrZhwwYEBASgYcOGoqMQEcnWK6+8gn79+uGll14SHYVMGPuwEYC/7h7l+GxERGLxt1he2IeN9BIVFQUHBwfk5OSIjkJEJFvnzp2Dg4MDNmzYIDoKmSAWbIS2bdsiPz+f/SeIiARq2bIlSkpKMHHiRNFRyARZig5A4oWGhuKdd97BmDFjREchIpIta2trLFu2jBPCU4XYh43K0Wg0cHd3Fx2DiEjWCgoKUFxcDEdHR9FRyIjYh42eyM6dO6FWq7F69WrRUYiIZKuwsBDOzs7o16+f6ChkQtjCRjrFxcVwcHCAg4MDp0ohIhIoKCgIp0+fxh9//AG1Wi06DhmJPvUL+7CRjkqlwp49e9CqVSvRUYiIZG379u24ePEiizXS4SVRKqdnz55Qq9WIjY1lKxsRkSBqtRohISHIzs7G8ePHRcchE8AWNnrIrVu30KlTJzz33HM4ceKE6DhERLLVpk0b3LlzBzk5OVCpVKLjkEBsYaOHuLq6olOnTjh79iwKCgpExyEikq1PPvkE9+/fx86dO0VHIcF40wFVKDs7G0qlkreUExEJlpKSAh8fH9ExyAg4rAc9NScnJzg6OmLv3r2cJoWISCAfHx+kpqZixowZoqOQQGxhoyo5OjqiqKgIubm57D9BRCTIiy++iH379uHnn39Gz549RcchA2ELGxnMwoULAQD/+c9/BCchIpKvDRs2oHbt2vjll19ERyFB2MJGj6TVaqFUsrYnIhKJv8U1j1Fb2I4fP44+ffpArVZDoVBg165dutdKSkrw/vvvo02bNqhTpw7UajVGjBiB9PT0Kvc5c+ZMKBSKckvz5s31jUZGolQqsWHDBgwbNkx0FCIi2VIqlbh8+TK6dOnCO/hlSO+C7d69e/D398eSJUseeq2goADnzp3Dxx9/jHPnzmHHjh1ITEzEK6+88sj9tmrVChkZGbqF43+Zlg0bNmDLli3Yu3ev6ChERLJ16dIlnDhxAiNGjBAdhaqZ3gPnhoaGIjQ0tMLXHBwccPDgwXLPLV68GB07dkRqaiq8vLwqD2JpCXd3d33jUDXZvHkz/Pz8UFRUJDoKEZFsDR06FIsWLUL9+vVFR6FqZvSZDnJzc6FQKB45nldSUhLUajWsra0RFBSEqKioSgu8oqKicoVDXl6eISNTBRwdHZGamio6BhGR7PEKlDwZtfdiYWEh3n//fYSFhVXZmS4wMBDR0dHYv38/li1bhpSUFHTp0gV3796tcP2oqCg4ODjoFk9PT2N9BPqH9evXo379+sjPzxcdhYhItpKTk+Hl5YXt27eLjkLVxGgFW0lJCYYMGQJJkrBs2bIq1w0NDcXgwYPh5+eHkJAQ7N27Fzk5Ofj+++8rXD8yMhK5ubm65ebNm8b4CFSBOnXqID09HcOHDxcdhYhIttzc3KDRaDBmzBhotVrRcagaGOWS6INi7caNGzh8+LDeQ204OjqiWbNmuHbtWoWvW1lZwcrKyhBRSU8DBw5EWFgYXn31VdFRiIhky9bWFnPnzkVWVpboKFRNDF6wPSjWkpKScOTIEdSrV0/vfeTn5yM5ORmvv/66oeORAWzcuBEAUFxczNkPiIgEiYiIAPDX+Gz8Pa759L4kmp+fj4SEBCQkJAD4a1LahIQEpKamoqSkBIMGDUJcXBy+++47lJWVQaPRQKPRoLi4WLePHj16YPHixbrH77zzDo4dO4br16/j1KlT6N+/PywsLBAWFvb0n5CMIiYmBra2ttiyZYvoKEREslVaWgoPD4/HGj6LzJveBVtcXByeeeYZPPPMMwD+qvCfeeYZzJgxA3/88Qf27NmDtLQ0tG3bFh4eHrrl1KlTun0kJyeXa8ZNS0tDWFgYfH19MWTIENSrVw+nT5+Gi4uLAT4iGUNQUBAUCgUmTpwoOgoRkWxZWlqifv36OHDgAFJSUkTHISPS+5Jo9+7dUdVsVo8z09X169fLPd68ebO+MUgwGxsbrFmzBg0bNhQdhYhI1nbu3Int27fDx8dHdBQyIs4lSk8tPT0dNjY2jxxrj4iIjEer1SIpKQm+vr6io9BjMupcokR/l5OTAy8vLwwaNEh0FCIiWWvRogXat2/PYT5qKBZs9FQcHR3xzDPP4MiRI5xxgohIoPHjxyM/Px+rVq0SHYWMwOhTU1HNt3PnTl6OJiISbMqUKfDz88MLL7wgOgoZAVvY6Kk1aNAArVq1QmJiIg4cOCA6DhGRbL3wwgsoLCzE2rVrRUchA2MLGxlMUFAQiouLkZOTA0tLnlpERCIMGzYMu3fvRtOmTdG5c2fRcchA2MJGBjNnzhwUFBTgyJEjoqMQEcnW8uXLYWFhgfXr14uOQgbEYT3IoLKzs+Hk5CQ6BhGRrPG32DxwWA8SxsnJCWfPnsXUqVNFRyEiki0nJyfk5ORg+PDh5aaGJPPFgo0M7v3338eCBQtw+PBh0VGIiGRr9+7d2LhxI0aPHi06ChkACzYyuO+//x729va4evWq6ChERLIVHh6Oli1bIj8/X3QUMgDeykcG5+zsjNzcXNExiIhk7/Lly6IjkIGwhY2M5vDhw/D390dhYaHoKEREspWVlYWgoCDs27dPdBR6CizYyGjS09Nx4cIFjBw5UnQUIiLZsrS0RFxcHMLDw0VHoafAgo2M5rXXXsMLL7yAgIAA0VGIiGTL0dERH3zwAZ577jmUlpaKjkNPiOOwEREREQnAcdjIpJw7dw5169bF7t27RUchIpItrVYLPz8/DBw4UHQUegIs2MjomjRpgnv37uGNN94QHYWISLaUSiXKysqwY8cOJCYmio5DeuKwHmR09vb2+PLLL1G7dm3RUYiIZG3Hjh34/PPP0bhxY9FRSE/sw0bVqri4GKWlpbCxsREdhYhI1vLy8vj/TMHYh41MUkFBAZycnDBkyBDRUYiIZK1Tp07w9vaGVqsVHYUeEws2qjY2NjZo3Lgx9u7di1u3bomOQ0QkW6GhocjJycG8efNER6HHxD5sVK127NiBCxcuwNXVVXQUIiLZmj59OhwcHDBx4kTRUegxsQ8bCZGfn4+rV6+iffv2oqMQEcnaiRMn0LlzZ9ExZIl92MjkNWvWDC+88AL7TxARCTRixAh06dIFcXFxoqPQI+hdsB0/fhx9+vSBWq2GQqHArl27yr0uSRJmzJgBDw8P1K5dG8HBwUhKSnrkfpcsWYKGDRvC2toagYGB+PXXX/WNRmZk6tSpuHv3Lnbu3Ck6ChGRbM2ZMwcKhQKfffaZ6Cj0CHoXbPfu3YO/vz+WLFlS4etffPEFvvnmGyxfvhxnzpxBnTp1EBISgsLCwkr3uWXLFkREROCTTz7BuXPn4O/vj5CQEHZMr8HeffddXLx4kSNuExEJ5OXlhQsXLvCPZzPwVH3YFAoFdu7ciX79+gH4q3VNrVZj2rRpeOeddwAAubm5cHNzQ3R0NIYNG1bhfgIDA9GhQwcsXrwYwF/TZ3h6euLtt9/GBx988Mgc7MNmvm7duoUNGzYgIiJCdBQiItnSarWYPXs2PvroI1ha8n7E6iKsD1tKSgo0Gg2Cg4N1zzk4OCAwMBCxsbEVblNcXIz4+Phy2yiVSgQHB1e6TVFREfLy8sotZJ7CwsIwbdq0Sr9rIiIyvo0bN2LmzJmYMGGC6ChUCYMWbBqNBgDg5uZW7nk3Nzfda/+UlZWFsrIyvbaJioqCg4ODbvH09DRAehLh3//+N2rVqoW9e/eKjkJEJFuvvfYaPD09cf78edFRqBJm2e4ZGRlZ7hJaXl4eizYzpVarkZ+fD5VKJToKEZGsXbt2jb/FJsygLWzu7u4AgMzMzHLPZ2Zm6l77J2dnZ1hYWOi1jZWVFezt7cstZL5UKhWSk5PRu3dvlJaWio5DRCRLKpUKxcXFeO2113D06FHRcegfDFqw+fj4wN3dHTExMbrn8vLycObMGQQFBVW4jUqlQkBAQLlttFotYmJiKt2Gap5Dhw7hwIEDGDt2rOgoRESylZOTg02bNmH48OGio9A/6F2w5efnIyEhAQkJCQD+utEgISEBqampUCgUmDJlCubMmYM9e/bg4sWLGDFiBNRqte5OUgDo0aOH7o5QAIiIiMC3336LdevW4cqVKxg/fjzu3buHUaNGPfUHJPPw5ptvws/PD7Vr1xYdhYhItlxdXTFx4kQ4OzujuLhYdBz6G737sMXFxeH555/XPX7Qlyw8PBzR0dF47733cO/ePYwbNw45OTno3Lkz9u/fD2tra902ycnJyMrK0j0eOnQo/vzzT8yYMQMajQZt27bF/v37H7oRgWq2//znP6IjEBHJ3jfffCM6AlWAc4mSSUlOTkZoaCiWLFmCnj17io5DRCRbffr0gZubG1atWiU6So3FuUTJbNWtWxe///47RowYIToKEZGsJSYmYs2aNUhJSREdhWCmw3pQzeXk5ITp06cjOzsbWq0WSiX/piAiEmHbtm14++23UadOHdFRCLwkSiaORRsRkXj8LTYOXhIls1dcXIz69etjyJAhoqMQEcna4MGDUb9+fWi1WtFRZI0FG5kklUoFe3t77NixA2lpaaLjEBHJVtOmTaHRaPCvf/1LdBRZYx82Mlnbtm3Dtm3b0KBBA9FRiIhka86cObh79y6mTJkiOoqssQ8bmTytVov09HQWbkREgqWlpfG32IDYh41qlJYtW8LPz4/9J4iIBJo2bRq8vLxw6dIl0VFkiQUbmbxhw4bhzp07WLdunegoRESy9dZbbwEAJk2aJDiJPPGSKJk8rVaLHTt2YNCgQaKjEBHJ2u7duxEaGgqVSiU6So3AS6JUoyiVSgwaNAilpaXYvn276DhERLLVt29fqFQqbNu2jd1UqhkLNjIb/fr1w6BBg5CQkCA6ChGRbO3evRuDBw/GtGnTREeRFRZsZDYWLVoEhUKBpUuXio5CRCRbffv2hbu7O3bu3Ck6iqxwHDYyGz4+PkhNTeUt5UREgsXHx8Pd3V10DFlhCxuZlQYNGqCgoAATJkxg/wkiIkHUajWUSiXmzp2Ls2fPio4jCyzYyOxER0dj2bJlvLWciEigrKwsfPTRRxg8eLDoKLLAgo3MzoQJE+Dt7Y0bN26IjkJEJFvOzs4YMWIE7t+/j/z8fNFxajyOw0ZmSavVQqnk3xtERCLxt/jpcBw2qvGUSiWys7Pxwgsv4MSJE6LjEBHJ0oNibdq0aXj33XcFp6nZ2MJGZkuj0aB+/fpQq9W4efOm6DhERLLVsGFD3Lx5Ezdu3OCd/HpgCxvJgru7OyZNmoSWLVvyjlEiIoG2bNkCHx8f3L17V3SUGostbEREREQCsIWNZEWr1SIgIACjRo0SHYWISNYiIiLQokUL0TFqJBZsZPaUSiVycnKwbt06DvVBRCRQWVkZrl69irlz54qOUuNwaiqqEbZu3Yq5c+fCzc1NdBQiItn6+uuvkZycjP79+4uOUuOwDxvVOIWFhbC2thYdg4hI1vhb/GhC+7A1bNgQCoXioWXixIkVrh8dHf3QuvyC6Ul16dIFDRs2FB2DiEjW5s6dCzs7OyQlJYmOUmMYvGA7e/YsMjIydMvBgwcBoMq5xuzt7cttw35I9KSeffZZZGZmYtGiRaKjEBHJ1ssvv4zS0lK89tproqPUGAbvw+bi4lLu8dy5c9G4cWN069at0m0UCgXc3d0NHYVk6PPPP4ednR3Gjx8vOgoRkWy1bt0a33zzDQYOHCg6So1h1LtEi4uLsWHDBowePRoKhaLS9fLz8+Ht7Q1PT0/07dsXly9frnK/RUVFyMvLK7cQAX/dMTpjxgxYWlriwoULouMQEcnW22+/DbVajQsXLnBwcwMwasG2a9cu5OTkYOTIkZWu4+vrizVr1mD37t3YsGEDtFotnnvuOaSlpVW6TVRUFBwcHHSLp6enEdKTOXvttdfQtm1bXLlyRXQUIiLZiomJgb+/Pz7++GPRUcyeUe8SDQkJgUqlwg8//PDY25SUlKBFixYICwvD7NmzK1ynqKgIRUVFusd5eXnw9PTkXaKkc+XKFbRq1Qr9+vXDjh07RMchIpIlrVYLV1dXSJKE27dvi45jcvS5S9Ro47DduHEDhw4d0vt/lrVq1cIzzzyDa9euVbqOlZUVrKysnjYi1WAtWrTAL7/8gqCgINFRiIhkS6lU4vDhw/Dy8hIdxewZ7ZLo2rVr4erqipdeekmv7crKynDx4kV4eHgYKRnJRadOnQAACxcuZP8JIiJB/Pz84OjoiB9//BGXLl0SHcdsGaVg02q1WLt2LcLDw2FpWb4Rb8SIEYiMjNQ9njVrFn7++Wf8/vvvOHfuHF577TXcuHEDY8aMMUY0kpk1a9ZgypQpeP/990VHISKSrfz8fPTt2xcDBgwQHcVsGaVgO3ToEFJTUzF69OiHXktNTUVGRobu8Z07dzB27Fi0aNECL774IvLy8nDq1Cm0bNnSGNFIZsaMGQNXV1fExMSIjkJEJFu2trYYMmQIbt68iezsbNFxzBKnpqIaLy8vj+cFEZFgxcXF0Gq1nM3ob4ROTUVkauzt7VFaWopx48YhLi5OdBwiIllSqVSwtrbGunXrMHfuXNFxzA5b2EgW0tLS4OXlBR8fHyQnJ4uOQ0QkW/Xr10dmZibS09Ph6uoqOo5QbGEj+ocGDRpgxIgRqFWrFkpLS0XHISKSre+++44Twz8BtrARERERCcAWNqJKaLVaDB48GBEREaKjEBHJ2uLFi9G5c2fRMcwGCzaSFaVSidOnT2PhwoVIT08XHYeISLb+85//4OTJk1i8eLHoKGaBBRvJzubNm9GuXTvRMYiIZG3ZsmVo164dmjZtKjqKWWAfNiIiIiIB2IeN6DGEhYWhcePGomMQEcna2rVrYWdnh9TUVNFRTBoLNpItJycn/P7771i4cKHoKEREstWmTRvk5+dj0KBBoqOYNMtHr0JUMy1atAh3797F66+/LjoKEZFstW/fHu+99x5eeeUV0VFMGvuwEQHIzs6Gk5OT6BhERLImt99i9mEj0kNERARcXFyQkpIiOgoRkWydOXMGLi4umDNnjugoJokFG8neiBEjoNVqMXbsWNFRiIhkq0OHDrCzs8Pnn38uOopJYh82kr22bdti3bp17PBKRCSQUqnEjh074ObmJjqKSWIfNqK/iYmJwfPPPw+lko3PRESiJCYmQqVSwcfHR3QUo2IfNqInsGXLFgQHB2PWrFmioxARyVZhYSFat26NPn36iI5iUliwEf3P4MGDUbduXURHR4uOQkQkW9bW1njppZdw5coVaDQa0XFMBvuwEf2PUqnE2bNn4e3tLToKEZGsbdiwAdnZ2XB3dxcdxWSwhY3obxo3bgxLS0ssXrwYly9fFh2HiEiWbG1t4eXlhbNnz2L16tWi45gE3nRA9A+3bt2Cu7s7fH19ceXKFdFxiIhkS61W488//8Sff/4JR0dH0XEMjjcdED0FV1dXDBgwALdu3UJhYaHoOEREsrVq1SooFAqcOHFCdBTh2MJGVIHS0lIolUoO70FEJFhpaSksLWtml3u2sBE9JUtLSyiVSsycOZPDfBARCWRpaYkDBw5g4MCBoqMIxYKNqAorVqzArFmzkJ2dLToKEZFs/fvf/8aOHTuwdu1a0VGEMXjBNnPmTCgUinJL8+bNq9xm69ataN68OaytrdGmTRvs3bvX0LGInsiGDRvg7u6OjIwM0VGIiGRrzZo18PT0RElJiegowhjlonCrVq1w6NCh//8mVVx7PnXqFMLCwhAVFYWXX34ZGzduRL9+/XDu3Dm0bt3aGPGIHluPHj2QlpYmOgYRkaypVCqkpqaKjiGUUS6JWlpawt3dXbc4OztXuu7ChQvRu3dvvPvuu2jRogVmz56Ndu3aYfHixcaIRvREIiMj0b59e9ExiIhkbd++fWjQoIEsZ0AwSsGWlJQEtVqNRo0aYfjw4VVWxbGxsQgODi73XEhICGJjYyvdpqioCHl5eeUWImPSaDSIj4/HihUrREchIpItOzs7/PHHHxg0aJDoKNXO4AVbYGAgoqOjsX//fixbtgwpKSno0qUL7t69W+H6Go0Gbm5u5Z5zc3OrsnqOioqCg4ODbvH09DToZyD6p2+//RbdunVDYGCg6ChERLLVuXNnhIeHY+TIkaKjVDuD92ELDQ3V/dvPzw+BgYHw9vbG999/jzfeeMMg7xEZGYmIiAjd47y8PBZtZFSWlpY4evQogJo9JhARkamLjo4GIL/fYqMP6+Ho6IhmzZrh2rVrFb7u7u6OzMzMcs9lZmZWOeGrlZUV7O3tyy1E1eGLL76Ara0tb0QgIhLo8uXLsLe3x4IFC0RHqTZGL9jy8/ORnJwMDw+PCl8PCgpCTExMuecOHjyIoKAgY0cj0lu3bt1QVFSEV199VXQUIiLZatGiBSwsLPDhhx9Cq9WKjlMtDN6W+M4776BPnz7w9vZGeno6PvnkE1hYWCAsLAwAMGLECNSvXx9RUVEAgMmTJ6Nbt26YN28eXnrpJWzevBlxcXFYuXKloaMRPbXAwEDMnj0bw4cPFx2FiEi2lEoloqOjZTWFoMELtrS0NISFheH27dtwcXFB586dcfr0abi4uAAAUlNTyx3c5557Dhs3bsT06dPx4YcfomnTpti1axfHYCOTNX36dABASkoKfHx8BKchInP322+/YdmyZTh69CjKysrQrl07jB8/njc5PcKDqary8vJQWFgIV1dXwYmMi5O/Ez2Bffv24cUXX8Tnn3+O9957T3QcIjJTK1euxPjx4+Hk5IR+/fpBpVJh7969uH79OiIiIvDVV19BoVCIjmmySktLYW9vjxYtWiA+Pl50HL3pU7+wYCN6AlqtFnXr1kWtWrWQlZUlOg4RmaGDBw+iV69emDhxIr766itYW1sDAMrKyrBo0SJMnToVixYtwqRJkwQnNW0hISH4+eef8fvvv5vdVQ8WbETVIDY2Fo0bN67xzfBEZBy9evVCbm4uYmNjK+yHNXLkSBw5cgS///47LCwsBCQ0Dzk5Obhw4QK6du0qOore9Klf5NFTj8gIgoKC4OrqiqNHjyI5OVl0HCIyI3fu3MHBgwcxduzYSjvNv/nmm0hNTcWZM2eqOZ15cXR0RNeuXaHRaPDjjz+KjmM08hlxjsgIcnJy8MILL6B169a4cOGC6DhEZCYezP7ToEGDStd58Fpubm61ZDJ3gYGB0Gg0uH37NmxtbUXHMTi2sBE9BUdHR4SGhuK3337jnLZE9NicnZ1hbW2Nc+fOVbrOg070Xl5e1RXLrM2bNw8lJSXYvn276ChGwT5sRE8pPz8fAGrkX3REZDyjRo3CoUOHcOnSJTg4OJR7rbS0FN27d0dpaSlOnz4tKKH5uXXrlln1K2YfNqJqZGtrC1tbW2zbtg1Lly4VHYeIzERkZCTu3r2LXr164ezZs7rnf/vtNwwePBinT5/GZ599JjCh+XF1dUVycjImT54sOorBsYWNyEBcXV1x584d3L59m+chET2W+Ph4DB48WDcQt0qlQmJiIurVq4fVq1ejb9++oiOancGDB2Pbtm3YvHkzhg4dKjpOldjCRiTAqlWrYGVlhYsXL4qOQkRmIiAgAElJSfjxxx8xYMAAhIaGYv369UhLS2Ox9oTWrVsHBwcHXL58WXQUg2ILG5EBabVa2cxrR0Rkqszlt5gtbESCKJVKrFq1CqGhoaKjEBHJllKpxIULFxAQEIDs7GzRcQyCBRuRgR06dAj79+/H+vXrRUchIpKtjIwMnDt3DkOGDBEdxSBYsBEZWHR0NHx9fR+6TZ+IiKpPSEgIQkND4e/vLzrK/2PvzuOiqvf/gb8YcSBkExEGAhFIAUXBFXFPSaQ01zLMNdOroaWYGZW79+LNm5lLmrdyyTV385ZFuF0VF0SuYcZFIpBgQCQYgWCAOb8/+jq/S7KIMnxmOK/n43Eej2bmnDOvOXMa33zO53w+DYJ92IiIiIgEYB82IiOwY8cOtGrVCnl5eaKjEBHJVnp6OlxcXLBlyxbRUR4LCzYiA3Fzc0N+fj7Gjh0rOgoRkWy5uLigsLAQkZGRqKioEB3nkXHydyIDGTRoEGbNmoVRo0aJjkJEJFtKpRLr16/Hr7/+CnNz0y172IeNqBGUlJTAyspKdAwiIlnT6XQoLS01mt9j9mEjMiLnzp2Dra0tNmzYIDoKEZFs6XQ6qFQqhISEiI7ySFiwERlYr169YGlpiXfffVd0FCIi2VIoFPDz80NcXJxJTltluhdziUyEubk5du/eDVdXV9FRiIhk7eDBg9i/fz86duwoOkq9sQ8bUSNKT09H8+bNWbwREQlUUVGB69evo2vXrkJzsA8bkREqKSnBU089hREjRoiOQkQka507d0bv3r1RWloqOspDY8FG1EisrKwwYMAAJCQkcDBdIiKB3nnnHZSVlWHz5s2iozw0XhIlakT5+fm4e/cu2rVrJzoKEZGsxcfHo3v37kIz8JIokZFycHBAu3btkJSUhC+//FJ0HCIi2erevTuKioqwdu1a0VEeSoMXbNHR0ejRowdsbGzg5OSEkSNHIjk5udZttm3bBjMzsyqLpaVlQ0cjMhqDBw/GxIkTUVJSIjoKEZFsTZ8+HfPmzcOxY8dER6lTgxdsZ86cQUREBC5evIiYmBiUl5djyJAhKC4urnU7W1tbZGdn65f09PSGjkZkNNatW4fKykqcPHlSdBQiItn65JNPYGFhga+++kp0lDo1+DhsJ06cqPJ427ZtcHJywtWrV9G/f/8atzMzM4NKpWroOERGady4cRg+fLjRTI9CRCRHtra2yM/PN4nfYoP3YSssLATwR9+d2hQVFcHDwwPu7u4YMWJEraMQl5WVQaPRVFmITI2VlRXOnTuHqVOnio5CRCRbVlZWyMvLw4gRI4y6njBowabT6TB37lz06dMH/v7+Na7n4+ODzz//HEePHsXOnTuh0+nQu3dvZGZmVrt+dHQ07Ozs9Iu7u7uhPgKRQa1evRrbtm3DwYMHRUchIpKt8+fP49ixYxg/frzoKDUy6LAes2bNwjfffINz587Bzc3tobcrLy+Hn58fwsPDsWLFigdeLysrQ1lZmf6xRqOBu7s7h/Ugk1NUVAQvLy8sXboUr732mug4RESy1atXL7i6uuLQoUON9p71GdbDYHOJzp49G8ePH8fZs2frVawBQPPmzdGlSxfcunWr2tctLCxgYWHREDGJhLK2tkZubq7oGEREsnfx4kXREWrV4JdEJUnC7NmzcfjwYZw8eRKenp713kdlZSV++OEHuLi4NHQ8IqMUExODdu3aoaCgQHQUIiLZysvLQ9euXbFr1y7RUR7Q4AVbREQEdu7cid27d8PGxgZqtRpqtRq///67fp1JkyYhKipK/3j58uX47rvv8PPPPyMhIQETJkxAeno6Xn311YaOR2SUysvLcevWLbz00kuioxARyZa1tTV+/PFHvPbaa9DpdKLjVNHgl0Q3bdoEABg4cGCV57du3YopU6YAADIyMqBQ/P9a8bfffsP06dOhVqvRsmVLdOvWDRcuXECHDh0aOh6RUXr22WcxatQoDBgwQHQUIiLZsrS0xN/+9jdcvnwZOp2uSq0iGucSJTIyxvYjQUQkV4b+PeZcokQm6vr167Czs8PWrVtFRyEiki2dTgd/f38888wzoqPosWAjMiK+vr6oqKjAG2+8YXT9J4iI5EKhUKBFixY4efIkEhISRMcBYMBhPYio/pRKJTZv3oxmzZrxsigRkUAHDx7E3//+dwQGBoqOAoB92IiMVmlpKUpLS2Fvby86ChGRrOXm5sLJyanB98s+bEQmTqvVolWrVhg+fLjoKEREstavXz94enqioqJCaA4WbERGSKlUIjAwEOfOnatxTl0iIjK88ePHo6SkBH/961+F5mAfNiIjdfDgQSQkJNR7ajciImo4s2bNgo2NjfCJ4dnCRmSkVCoVnn32WRQUFODs2bOi4xARydaECRMAAMePHxeWgQUbkZHr1KkTQkNDodVqRUchIpKtv/zlLxg+fDhiYmKEvD8LNiIjt3TpUpSWlmL//v2ioxARyVZ0dDSaNWuGdevWCXl/DutBZALS0tLg6ekpOgYRkaw19G8xh/UgamI8PT2RmZmJxYsXi45CRCRb94f3mD9/PkpLSxv1vVmwEZmIWbNmYcWKFfjmm29ERyEikq1//etfWLNmDSZOnNio78uCjchEfPHFF3jiiSdw7tw50VGIiGRrxIgR8PPzwy+//NKo78tx2IhMhL29PYqKijjHKBGRYElJSY3+W8xffiITolAocPPmTfTr1w9FRUWi4xARyZJCoUBpaSnGjh2Lw4cPN857Nsq7EFGDuXHjBs6dO6cfyJGIiBpfRUUFjh07hmnTpkGn0xn8/ViwEZmYsWPHol+/fnB3dxcdhYhItqytrfHuu+/Cy8urUe4Y5ThsRERERAJwHDYiGUhPT0fbtm2xb98+0VGIiGQtLCwMY8aMMeh78C5RIhPVunVrZGdn49VXX0V5eTnMzMzQsWNHBAYGIjExETdu3KjxMYAGWef+YwAN+t7GsN+m+Jn4/fP757EyzP8rP//8M/773//iyy+/xIsvvgiDkJqAwsJCCYBUWFgoOgpRo/rwww8lNzc3CYAEQBowYIAkSZI0YMCAWh831Dr3Hzf0exvDfpviZ+L3z++fx8ow/6/07NlTAiD17t1bqo/61C/sw0Zk4tjCwlYDfv/8/nmsjOv/lYdVn/qFBRsRERGRALzpgIiIiKgJMVjBtnHjRrRt2xaWlpYICgrC5cuXa11///798PX1haWlJTp16oSvv/7aUNGIiIiITIpBCrZ9+/YhMjISS5YsQUJCAgICAhAaGorc3Nxq179w4QLCw8Mxbdo0XLt2DSNHjsTIkSORlJRkiHhEREREJsUgfdiCgoLQo0cPbNiwAQCg0+ng7u6OOXPm4O23335g/XHjxqG4uBjHjx/XP9erVy8EBgZi8+bNdb4f+7ARERGRqalP/dLg47BptVpcvXoVUVFR+ucUCgVCQkIQFxdX7TZxcXGIjIys8lxoaCiOHDlS7fplZWUoKyvTPy4sLATwxwcnIiIiMgX365aHaTtr8IItLy8PlZWVcHZ2rvK8s7Mzfvrpp2q3UavV1a6vVqurXT86OhrLli174HnOrUhERESm5t69e7Czs6t1HZOc6SAqKqpKi1xBQQE8PDyQkZFR5weWK41GA3d3d9y+fZuXjWvAY1Q3HqO68RjVjceobjxGdWsKx0iSJNy7dw+urq51rtvgBZujoyOaNWuGnJycKs/n5ORApVJVu41KparX+hYWFrCwsHjgeTs7O5P90hqLra0tj1EdeIzqxmNUNx6juvEY1Y3HqG6mfowetqGpwe8SVSqV6NatG2JjY/XP6XQ6xMbGIjg4uNptgoODq6wPADExMTWuT0RERCQnBrkkGhkZicmTJ6N79+7o2bMn1q5di+LiYkydOhUAMGnSJDz55JOIjo4GALzxxhsYMGAAPvjgAzz33HPYu3cv4uPjsWXLFkPEIyIiIjIpBinYxo0bhzt37mDx4sVQq9UIDAzEiRMn9DcWZGRkQKH4/417vXv3xu7du/Hee+/hnXfeQbt27XDkyBH4+/s/1PtZWFhgyZIl1V4mpT/wGNWNx6huPEZ14zGqG49R3XiM6ia3Y9Qk5hIlIiIiaso4lygRERGRkWPBRkRERGTkWLARERERGTkWbERERERGrkkUbBs3bkTbtm1haWmJoKAgXL58WXQko7F06VKYmZlVWXx9fUXHEurs2bMYPnw4XF1dYWZm9sCctZIkYfHixXBxccETTzyBkJAQpKSkiAkrSF3HaMqUKQ+cV0OHDhUTVoDo6Gj06NEDNjY2cHJywsiRI5GcnFxlndLSUkRERKBVq1awtrbGmDFjHhggvCl7mGM0cODAB86jmTNnCkrc+DZt2oTOnTvrB34NDg7GN998o39d7ucQUPcxktM5ZPIF2759+xAZGYklS5YgISEBAQEBCA0NRW5uruhoRqNjx47Izs7WL+fOnRMdSaji4mIEBARg48aN1b7+/vvvY926ddi8eTMuXbqEFi1aIDQ0FKWlpY2cVJy6jhEADB06tMp5tWfPnkZMKNaZM2cQERGBixcvIiYmBuXl5RgyZAiKi4v168ybNw9fffUV9u/fjzNnziArKwujR48WmLpxPcwxAoDp06dXOY/ef/99QYkbn5ubG1atWoWrV68iPj4egwYNwogRI3Djxg0APIeAuo8RIKNzSDJxPXv2lCIiIvSPKysrJVdXVyk6OlpgKuOxZMkSKSAgQHQMowVAOnz4sP6xTqeTVCqVtHr1av1zBQUFkoWFhbRnzx4BCcX78zGSJEmaPHmyNGLECCF5jFFubq4EQDpz5owkSX+cM82bN5f279+vX+fmzZsSACkuLk5UTKH+fIwkSZIGDBggvfHGG+JCGaGWLVtKn376Kc+hWtw/RpIkr3PIpFvYtFotrl69ipCQEP1zCoUCISEhiIuLE5jMuKSkpMDV1RVeXl54+eWXkZGRITqS0UpLS4Nara5yTtnZ2SEoKIjn1J+cPn0aTk5O8PHxwaxZs3D37l3RkYQpLCwEADg4OAAArl69ivLy8irnka+vL9q0aSPb8+jPx+i+Xbt2wdHREf7+/oiKikJJSYmIeMJVVlZi7969KC4uRnBwMM+havz5GN0nl3PIIDMdNJa8vDxUVlbqZ1C4z9nZGT/99JOgVMYlKCgI27Ztg4+PD7Kzs7Fs2TL069cPSUlJsLGxER3P6KjVagCo9py6/xr9cTl09OjR8PT0RGpqKt555x2EhYUhLi4OzZo1Ex2vUel0OsydOxd9+vTRz86iVquhVCphb29fZV25nkfVHSMAGD9+PDw8PODq6orr169j4cKFSE5OxqFDhwSmbVw//PADgoODUVpaCmtraxw+fBgdOnRAYmIiz6H/U9MxAuR1Dpl0wUZ1CwsL0/93586dERQUBA8PD3z55ZeYNm2awGRkyl566SX9f3fq1AmdO3eGt7c3Tp8+jcGDBwtM1vgiIiKQlJQk+76htanpGM2YMUP/3506dYKLiwsGDx6M1NRUeHt7N3ZMIXx8fJCYmIjCwkIcOHAAkydPxpkzZ0THMio1HaMOHTrI6hwy6Uuijo6OaNas2QN3zeTk5EClUglKZdzs7e3Rvn173Lp1S3QUo3T/vOE5VT9eXl5wdHSU3Xk1e/ZsHD9+HKdOnYKbm5v+eZVKBa1Wi4KCgirry/E8qukYVScoKAgAZHUeKZVKPPXUU+jWrRuio6MREBCAjz76iOfQ/6jpGFWnKZ9DJl2wKZVKdOvWDbGxsfrndDodYmNjq1zfpv+vqKgIqampcHFxER3FKHl6ekKlUlU5pzQaDS5dusRzqhaZmZm4e/eubM4rSZIwe/ZsHD58GCdPnoSnp2eV17t164bmzZtXOY+Sk5ORkZEhm/OormNUncTERACQzXlUHZ1Oh7KyMp5Dtbh/jKrTpM8h0Xc9PK69e/dKFhYW0rZt26Qff/xRmjFjhmRvby+p1WrR0YzC/PnzpdOnT0tpaWnS+fPnpZCQEMnR0VHKzc0VHU2Ye/fuSdeuXZOuXbsmAZDWrFkjXbt2TUpPT5ckSZJWrVol2dvbS0ePHpWuX78ujRgxQvL09JR+//13wckbT23H6N69e9Kbb74pxcXFSWlpadL3338vde3aVWrXrp1UWloqOnqjmDVrlmRnZyedPn1ays7O1i8lJSX6dWbOnCm1adNGOnnypBQfHy8FBwdLwcHBAlM3rrqO0a1bt6Tly5dL8fHxUlpamnT06FHJy8tL6t+/v+Dkjeftt9+Wzpw5I6WlpUnXr1+X3n77bcnMzEz67rvvJEniOSRJtR8juZ1DJl+wSZIkrV+/XmrTpo2kVCqlnj17ShcvXhQdyWiMGzdOcnFxkZRKpfTkk09K48aNk27duiU6llCnTp2SADywTJ48WZKkP4b2WLRokeTs7CxZWFhIgwcPlpKTk8WGbmS1HaOSkhJpyJAhUuvWraXmzZtLHh4e0vTp02X1R1J1xwaAtHXrVv06v//+u/Taa69JLVu2lKysrKRRo0ZJ2dnZ4kI3srqOUUZGhtS/f3/JwcFBsrCwkJ566ilpwYIFUmFhodjgjeiVV16RPDw8JKVSKbVu3VoaPHiwvliTJJ5DklT7MZLbOWQmSZLUeO15RERERFRfJt2HjYiIiEgOWLARERERGTkWbERERERGjgUbERERkZFjwUZERERk5FiwERERERk5FmxERERERo4FGxEREZGRY8FGREREZORYsBEREREZORZsREREREaOBRsRERGRkWPBRkRERGTkWLARERERGTkWbERERERGjgUbERERkZFjwUZERERk5FiwERERERk5FmxERERERo4FGxEREZGRY8FGREREZORYsBEREREZORZsREREREaOBRsRERGRkWPBRkRERGTkWLARERERGTkWbERERERGjgUbERERkZFjwUZERERk5FiwERERERk5FmxERERERo4FGxEREZGRY8FGREREZORYsBEREREZORZsREREREaOBRsRERGRkWPBRkRERGTkWLARERERGTkWbERERERGjgUbERERkZFjwUZERERk5FiwERERERk5c9EBGoJOp0NWVhZsbGxgZmYmOg4RERFRnSRJwr179+Dq6gqFovY2tCZRsGVlZcHd3V10DCIiIqJ6u337Ntzc3Gpdp0kUbDY2NgD++MC2traC0xARERHVTaPRwN3dXV/H1KZJFGz3L4Pa2tqyYCMiIiKT8jDduXjTAREREZGRY8FGREREZORYsBEREREZuSbRh+1xJCYm4saNG+jYsSMCAwMfePww69x/DKDOdeqzX5HvbQz7bYqfid8/v39+/7Xvl4hqIDUBhYWFEgCpsLCwXtuFh4dLFhYWEgBpwIABkiRJ0oABA6o8ru65mh4/zDr12a/I9zaG/TbFz8Tvn9//w+63KX6m2varUCikX375RSKSk/rUL2aSJEl11HRGT6PRwM7ODoWFhfW6S3TOnDnYsGEDxo8fjwULFhjdX6Mi39sY9tsUPxO/f37//P4f3O/x48exaNEidOvWDfHx8SCSi/rUL7Iu2HQ6HaZMmYI1a9bA0dHRgAmJiKg2UVFReO6559C3b1/RUYgaDQu2R5Cfnw8HB4cGTkZERPXB32KSk/rUL7xLFMCCBQvQunVrpKamio5CRCRbV65cQevWrbF8+XLRUYiMDgs2ABMnToROp8P06dNFRyEikq1u3brB1tYW77//vugoREZH9sN6AEDnzp3xxRdfYPTo0aKjEBHJlkKhwOHD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zpKFhYU0ePBgKTk5WWzoRlbbMSopKZGGDBkitW7dWmrevLnk4eEhTZ8+XVZ/JFV3bABIW7du1a/z+++/S6+99prUsmVLycrKSho1apSUnZ0tLnQjq+sYZWRkSP3795ccHBwkCwsL6amnnpIWLFggFRYWig3eiF555RXJw8NDUiqVUuvWraXBgwfrizVJ4jkkSbUfI7mdQ2aSJEmN155HRERERPVl0n3YiIiIiOSABRsRERGRkWPBRkRERGTkWLARERERGTkWbERERERGjgUbERERkZFjwUZERERk5FiwERERERk5FmxERERERo4FGxEREZGRY8FGREREZORYsBEREREZORZsREREREaOBRsRERGRkWPBRkRERGTkWLARERERGTkWbERERERGjgUbERERkZFjwUZERERk5FiwERERERk5FmxERERERo4FGxEREZGRY8FGREREZORYsBEREREZORZsREREREaOBRsRERGRkWPBRkRERGTkWLARERERGTkWbERERERGjgUbERERkZFjwUZERERk5FiwERERERk5FmxERERERo4FGxEREZGRY8FGREREZORYsBEREREZORZsREREREaOBRsRERGRkWPBRkRERGTkWLARERERGTkWbERERERGzlx0gIag0+mQlZUFGxsbmJmZiY5DREREVCdJknDv3j24urpCoai9Da1JFGxZWVlwd3cXHYOIiIio3m7fvg03N7da12kSBZuNjQ2APz6wra2t4DREREREddNoNHB3d9fXMbVpEgXb/cugtra2LNiIiIjIpDxMdy7edEBERERk5FiwERERERk5FmxERERERo4FGxEREZGRaxI3HTyqiooK7N+/HzqdDh07dkRgYCASExNx48YN/WMADzxX02MAda5Tn/2KfG9j2G9T/Ez8/vn98/uvfr9mZmYYP348iKgGUhNQWFgoAZAKCwvrtV1AQIAEQAIgDRgwQJIkSRowYECVx9U9V9Pjh1mnPvsV+d7GsN+m+Jn4/fP7f9j9NsXPVNt+AUiHDh2SiOSkPvWLmSRJUq0VnQnQaDSws7NDYWFhvYb1+PLLLzFu3Di8+OKLiIqKMrq/RkW+tzHstyl+Jn7//P75/T+436tXr2LmzJno3Lkzrl69CiK5qE/9IuuCDQCuXLmCHj16GCgZERE9jPj4eHTt2rXO6XmImpL61C+y/z+j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8IHk7Ows7dmzRzp37pw0aNAgydfXV7pz547g5HXnQcfo9u3b0ptvviklJydLmZmZ0nfffSc9+eSTUqtWraTS0lLR0evE5MmTJScnJ+no0aPS9evXDUtJSYlhnVdeeUXy9vaWjhw5IqWmpkrh4eFSeHi4wNR1q6ZjdPnyZWnevHlSamqqlJmZKe3Zs0dq0aKF1L17d8HJ684777wjJSUlSZmZmdK5c+ekd955R7KyspK+/fZbSZJ4DknSg4+R3M4hiy/YJEmSPv30U8nb21tSKpVS586dpVOnTomOZDZGjhwpeXp6SkqlUmratKk0cuRI6fLly6JjCfX9999LAO5bYmJiJEn6c2iPWbNmSR4eHpKNjY3Up08fKT09XWzoOvagY1RSUiL17dtXcnNzkxo2bCj5+PhIEydOlNUfSVUdGwDS2rVrDevcuXNHevXVV6XGjRtLdnZ20pAhQ6Tr16+LC13HajpGWVlZUvfu3SUXFxfJxsZGatmypfTWW29JBQUFYoPXoZdfflny8fGRlEql5ObmJvXp08dQrEkSzyFJevAxkts5ZCVJklR37XlEREREVFsW3YeNiIiISA5YsBERERGZORZsRERERGaOBRsRERGRmWPBRkRERGTmWLARERERmTkWbERERERmjgUbERERkZljwUZERERk5liwEREREZk5FmxEREREZo4FGxEREZGZY8FGREREZOZYsBERERGZORZsRERERGaOBRsRERGRmWPBRkRERGTmWLARERERmTkWbERERERmjgUbERERkZljwUZERERk5liwEREREZk5FmxEREREZo4FGxEREZGZY8FGREREZOZYsBERERGZORZsRERERGaOBRsRERGRmWPBRkRERGTmWLARERERmTkWbERERERmjgUbERERkZljwUZERERk5liwEREREZk5FmxEREREZo4FGxEREZGZY8FGREREZOZYsBERERGZORZsRERERGaOBRsRERGRmWPBRkRERGTmrEUHMAa9Xo+cnBw4ODjAyspKdBwiIiKiGkmShNu3b0OtVkOheHAbWr0o2HJycuDl5SU6BhEREVGtXbt2Dc2aNXvgOvWiYHNwcADw5wd2dHQUnIaIiIioZoWFhfDy8jLUMQ9SLwq2e5dBHR0dWbARERGRRXmY7ly86YCIiIjIzLFgIyIiIjJzLNiIiIiIzBwLNiIi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qCp6vR5lZWU8hx7g3jGqSr0+h0Tf9fC4tm7dKtnY2Ejr1q2Tfv75Z2nSpEmSs7OzpNFoREczC2+88YZ09OhRKTMzUzpx4oQUEREhubq6Snl5eaKjCXP79m3p7Nmz0tmzZyUA0kcffSSdPXtWunr1qiRJkvTBBx9Izs7O0p49e6Rz585JgwYNknx9faU7d+4ITl53HnSMbt++Lb355ptScnKylJmZKX333XfSk08+KbVq1UoqLS0VHb1OTJ48WXJycpKOHj0qXb9+3bCUlJQY1nnllVckb29v6ciRI1JqaqoUHh4uhYeHC0xdt2o6RpcvX5bmzZsnpaamSpmZmdKePXukFi1aSN27dxecvO688847UlJSkpSZmSmdO3dOeueddyQrKyvp22+/lSSJ55AkPfgYye0csviCTZIk6dNPP5W8vb0lpVIpde7cWTp16pToSGZj5MiRkqenp6RUKqWmTZtKI0eOlC5fviw6llDff/+9BOC+JSYmRpKkP4f2mDVrluTh4SHZ2NhIffr0kdLT08WGrmMPOkYlJSVS3759JTc3N6lhw4aSj4+PNHHiRFn9kVTVsQEgrV271rDOnTt3pFdffVVq3LixZGdnJw0ZMkS6fv26uNB1rKZjlJWVJXXv3l1ycXGRbGxspJYtW0pvvfWWVFBQIDZ4HXr55ZclHx8fSalUSm5ublKfPn0MxZok8RySpAcfI7mdQ1aSJEl1155HRERERLVl0X3YiIiIiOSABRsRERGRmWPBRkRERGTmWLARERERmTkWbERERERmjgUbERERkZljwUZERERk5liwEREREZk5FmxEREREZo4FGxEREZGZY8FGREREZOZYsBERERGZORZsRERERGaOBRsRERGRmWPBRkRERGTmWLARERERmTkWbERERERmjgUbERERkZljwUZERERk5liwEREREZk5FmxEREREZo4FGxEREZGZY8FGREREZOZYsBERERGZORZsRERERGaOBRsRERGRmWPBRkRERGTmWLARERERmTkWbERERERmjgUbERERkZljwUZERERk5liwEREREZk5FmxEREREZo4FGxEREZGZY8FGREREZOZYsBERERGZORZsRERERGaOBRsRERGRmWPBRkRERGTmWLARERERmTkWbERERERmzlp0AGPQ6/XIycmBg4MDrKysRMchIiIiqpEkSbh9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RERERHqOBRsRERGRnmPBRkRERKTnWLARERER6TkWbERERER6jgUbERERkZ5jwUZERESk51iwEREREek5FmxEREREeo4FGxEREZGeY8FGREREpOdYsBERERHpORZsRERERHqOBRsRERGRnmPBRkRERKTnWLARERER6TkWbERERER6jgUbERERkZ5jwUZERESk51iwEREREek5FmxEREREeo4FGxEREZGeY8FGREREpOdYsBERERHpORZsRERERHqOBRsRERGRnmPBRkRERKTnWLARERER6TkWbERERER6jgUbERERkZ5jwUZERESk54xFB9AGtVqNrKwsWFhYwMjISHQcIiIionpJkoS7d+/CyckJCkXdbWhNomDLysqCi4uL6BhEREREDXbz5k04OzvXuU6TKNgsLCwA/P2BLS0tBachIiIiql9hYSFcXFw0dUxdmkTBdv8yqKWlJQs2IiIiMigP052LNx0QERER6TkWbERERER6jgUbERERkZ5jwUZERESk55rETQeP48iRI7h9+za6du0KPz8/JCUl4dq1a5rHAB54rrbHAOpdpyH7Ffne+rDfpviZ+P3z++f3X/N+W7dujcGDB4OIaiE1AQUFBRIAqaCgoEHb9ezZUzIyMpIASP369ZMkSZL69etX7XFNz9X2+GHWach+Rb63Puy3KX4mfv/8/h92v03xM9W1XwBSTEyMRCQnDalfjCRJkuou6fRfYWEhrKysUFBQ0KBhPTZu3IiXX34Zo0aNwsKFC/Xuf6Mi31sf9tsUPxO/f37//P4f3O/58+cxc+ZMeHt74/LlyyCSi4bUL7Iu2ABg3759GDFihI6SERHRwzh8+DD69esHMzMz0VGIGk1D6hfZ33QwYsQIqNVq7Ny5U3QUIiLZCgsLg5mZGfbu3YvS0lLRcYj0juwLNgCYMmUKxowZg6NHj4qOQkQkWxcvXsSoUaMwadIk0VGI9A4LNgArV66EsbExNm7cKDoKEZFsBQYGolOnTvjxxx9FRyHSO7If1gMAbGxskJ6eDicnJ9FRiIhk7aeffoKNjY3oGER6hy1s/8fJyQnl5eWYMWMGSkpKRMchIpIlOzs7GBsbY82aNTh8+LDoOER6gy1s/+Xw4cNYv349cnJy8O2334qOQ0QkS6WlpYiIiICFhQX+/PNPKBRsWyDi34L/MmzYMHh7eyM3N1d0FCIi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3ry55OrqKk2bNk1W/0mq6dgAkKKjozXr3Lt3T5o5c6bUqlUryczMTBoxYoSUnZ0tLnQjq+8YZWRkSH379pVsbGwkExMTqWPHjtIbb7whFRQUiA3eiF566SXJ1dVVUiqVUps2baSBAwdqijVJ4jkkSXUfI7mdQ0aSJEmN155HRERERA1l0H3YiIiIiOSABRsRERGRnmPBRkRERKTnWLARERER6TkWbERERER6jgUbERERkZ5jwUZERESk51iwEREREek5FmxEREREeo4FGxEREZGeY8FGREREpOdYsBERERHpORZsRERERHqOBRsRERGRnmPBRkRERKTnWLARERER6TkWbERERER6jgUbERERkZ5jwUZERESk51iwEREREek5FmxEREREeo4FGxEREZGeY8FGREREpOdYsBERERHpORZsRERERHqOBRsRERGRnmPBRkRERKTnWLARERER6TkWbERERER6jgUbERERkZ5jwUZERESk51iwEREREek5FmxEREREeo4FGxEREZGeY8FGREREpOdYsBERERHpORZsRERERHqOBRsRERGRnmPBRkRERKTnWLARERER6TkWbERERER6zlh0AG1Qq9XIysqChYUFjIyMRMchIiIiqpckSbh79y6cnJygUNTdhtYkCrasrCy4uLiIjkFERETUYDdv3oSzs3Od6zSJgs3CwgLA3x/Y0tJScBoiIiKi+hUWFsLFxUVTx9SlSRRs9y+DWlpasmAjIiIig/Iw3bl40wERERGRnmPBRkRERKTnWLARERER6TkWbERERER6rkncdPCorl+/ji+//BLdu3dH165d4efnh6SkJFy7dk3zGMADz9X2GEC96zRkvyLfWx/22xQ/E79/fv/8/h/c76VLl3D69GlER0eDiGohNQEFBQUSAKmgoKBB23l7e0sAJABSv379JEmSpH79+lV7XNNztT1+mHUasl+R760P+22Kn4nfP7//h91vU/xMde0XgLRkyRKJSE4aUr8YSZIk1VnRGYDCwkJYWVmhoKCgQcN6XL58GQEBAZgwYQJeffVVvfvfqMj31of9NsXPxO+f3z+//wf3e/XqVcyePRtPPfUU9u/fDyK5aEj9IuuCDQAqKythbCzrK8NERMLxt5jkqCH1i+xvOjA2NsaFCxcwePBgqNVq0XGIiGTJ2NgYd+7cweDBg3H9+nXRcYj0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M2ek9PR07ZSfn69dZ8aMGZKXl5d06tQpKSYmRgoMDJQCAwMFpjasqs7RzZs3paVLl0oxMTFSUlKSdODAAalx48ZSz549BSc3nNdff12KioqSkpKSpKtXr0qvv/66ZGFhIR07dkySJF5DklT5OZLbNWTyBZskSdJnn30meXl5SUqlUurcubN04cIF0ZGMxqhRoyR3d3dJqVRKDRs2lEaNGiXdvHlTdCyhTp8+LQF4ZJowYYIkSX917fHWW29Jrq6ukpWVldSnTx8pISFBbGgDq+wc5efnS3379pUaNGgg1a5dW/L29pamTZsmq1+Syjs3AKSNGzdq13n48KH00ksvSfXq1ZNsbGykoUOHSunp6eJCG1hV5yglJUXq2bOn5OTkJFlZWUlNmzaV5s2bJ2VnZ4sNbkCTJ0+WvL29JaVSKTVo0EDq06ePtliTJF5DklT5OZLbNWQhSZJkuPt5RERERFRdJt2GjYiIiEgOWLARERERGTkWbERERERGjgUbERERkZFjwUZERERk5FiwERERERk5FmxERERERo4FGxEREZGRY8FGREREZORYsBEREREZORZsREREREaOBRsRERGRkWPBRkRERGTkWLARERERGTkWbERERERGjgUbERERkZFjwUZERERk5FiwERERERk5FmxERERERo4FGxEREZGRY8FGREREZORYsBEREREZORZsREREREaOBRsRERGRkWPBRkRERGTkWLARERERGTkWbERERERGjgUbERERkZFjwUZERERk5FiwERERERk5FmxERERERo4FGxEREZGRY8FGREREZORYsBEREREZORZsREREREaOBRsRERGRkWPBRkRERGTkWLARERERGTkWbERERERGjgUbERERkZFjwUZERERk5CxFB9A1jUaDtLQ02NnZwcLCQnQcIiIiojIkScKDBw+gUqmgUDzevTOzK9jS0tLg6ekpOgYRERFRpW7fvg0PD4/HWtfsCjY7OzsAf50Ee3t7wWmIiIiIysrJyYGnp6e2ZnkcZlew/f0Y1N7engUbERERGa3qNN3iSwdERERERo4FGxEREZGRY8FGREREZOTMrg0bERleamoqsrKy4O7ujvr164uOQ0RkdniHjYhq7Ntvv0W3bt3g6emJNm3awNXVFcOGDcPPP/8sOhoRkVlhwUZENbJ69Wo899xzqF27NrZv347z58/jk08+QXx8PLp27Ypz586JjkhEZDb4SPT/7NmzB4WFhfDz80O7du0QFxeH+Ph4AHhkWUXzAKpc50m2YRbDZqnOfuWWxd7eHi+//DKmTJmCmTNnQqVSwd3dHY0aNUK7du0wd+5cjBkzBvv27UNCQoJszou5/5vQVxYbGxsMHDgQSqWywu9oItmTzEx2drYEQMrOzn7sbWbNmiUBkABIvXr1kiRJknr16lXhsormH2edJ9mGWQybpTr7lVsWDw8PydHRUVq4cKEEQFq8eLEkSZK0ePFiCYA0ffp0CYDk5+cnq/Oij/3KIQsA6YUXXpCI5KImtYqFJElSpRWdicnJyYGDgwOys7Mfu+PclJQUeHt7o02bNvj6669N+jdVZuHdG0NkWblyJVq0aIGVK1ciPT0d7u7ucHd3R3p6unY+MDAQTz/9NJ599lnZnBdz/zehryzz58/HvXv3kJub+9jjKhKZsprUKizY/s/FixfRqVMnflkQPYaePXuiYcOG2L59e4XreHt7IzQ0FCtWrDBgMjJFiYmJsLOzg4uLi+goRAZRk1qF1cn/CQgIAACsWLECJSUlgtMQGbeuXbviyJEjyMvLK/fzy5cvIyUlBV27djVwMjJFTZo0gYuLC77//nucOXNGdBwio8SC7R92796NBQsWYObMmaKjEBm1F198EQ8ePMBrr72Gf9+kz83NxZw5c+Dt7Y2BAwcKSkimpqSkBM899xxGjhwpOgqRUWLB9g+jRo2Cl5cXfvrpJ9FRiIyaj48P1qxZg88//xzdu3fHN998g7Nnz+Ljjz9Gu3bt8PPPP2P79u2oVauW6KhkIiwtLfHKK6/gwYMHSEpKEh2HyOiwDdu/FBQUwNraWg/JiMzPkSNH8N577yEqKgrAX//pDhs2DG+++SZat24tOB2ZGo1Gg5KSEnbvQWaPLx3gyQs24K+ibfz48ZgxYwZ69+6t44RE5ufOnTvIysqCq6srHB0dRcchE/fFF1/g119/xSeffCI6CpFesGCDbgq2zMxMuLm5wcXFBWlpaTpOSERElWndujXi4+Nx7do1+Pn5iY5DpHN8S1RHnJ2d8Z///AdeXl4oKioSHYeISFb27t0LlUqF+/fvi45CZDR4h42IiIjIgHiHTcc0Gg169OiBCRMmiI5CRCQ7ERERaNKkCTQajegoRMKxYKuEQqHAnTt38M033yAxMVF0HCIiWdFoNLh16xbmzZsnOgqRcCzYqrBnzx4MHToU7u7uoqMQEcnKG2+8gZCQEIwdO1Z0FCLh2IatGvLz82FjY6PTfRIRUdX4/UvmhG3Y9Khnz57w8vJiWwoiIgP7/PPPYW9vj5iYGNFRiIRhwfaYevTogbt37+Kzzz4THYWISFYGDRoEjUaDSZMmiY5CJIyl6ACmYtmyZXBycsLLL78sOgoRkax4eXnhq6++QnBwsOgoRMKwDVs1aTQanDt3Dj179tT5vomIqHI//vgjAgICYGnJ+w1kutiGzQBGjx6NXr164dq1a6KjEBHJysWLF9G9e3fMnDlTdBQig6tRwRYREYFOnTrBzs4OLi4uGDJkCBISEsqsU1BQgLCwMNSvXx+2trYYNmwY7ty5U+l+JUnCokWL4O7ujjp16iAoKAg3btyoSUS9iYiIgIWFBVasWCE6ChGRrAQEBMDT0xN79+4VHYXI4GpUsEVFRSEsLAwXLlzA8ePHUVxcjL59+yIvL0+7zpw5c/Dtt99i9+7diIqKQlpaGp5//vlK9/v+++/j008/xdq1a3Hx4kXUrVsXwcHBKCgoqElMvWjSpAni4+OxZcsW0VGIiGQnKioKqampomMQGZxO2rD9+eefcHFxQVRUFHr27Ins7Gw0aNAA27Ztw/DhwwEAv/32G1q2bIno6Gh06dLlkX1IkgSVSoW5c+fi1VdfBQBkZ2fD1dUVmzZtwujRox8ri6HGEi0qKsIbb7yB9957DwoFnywTERnS5s2b0aRJE3Tv3l10FKJqE9aGLTs7GwDg5OQEALhy5QqKi4sRFBSkXadFixbw8vJCdHR0uftISkqCWq0us42DgwMCAgIq3AYACgsLkZOTU2YyhPXr1+O///0vZs+ebZDjERHRX/Lz8zFlyhSMHDlSdBQig3nigk2j0WD27Nno1q0bWrduDQBQq9VQKpVwdHQss66rqyvUanW5+/l7uaur62NvA/zVpszBwUE7eXp6PsFP8/heeuklNGzYEP/73/8McjwiIvqLjY0NXnzxRTx8+BD37t0THYfIIJ64YAsLC8O1a9ewY8cOXeSptgULFiA7O1s73b5922DHTklJwdGjRw12PCIi+stnn32Gu3fvap/sEJm7JyrYZs2ahUOHDuH06dPw8PDQLndzc0NRURGysrLKrH/nzh24ubmVu6+/l//7TdLKtgEAKysr2Nvbl5kMRaFQ4N69e+jdu3elj22JiEi3FAoFFAoF3nrrLfznP/8RHYdI72pUsEmShFmzZiEyMhKnTp2Cj49Pmc87dOiA2rVr4+TJk9plCQkJSElJQWBgYLn79PHxgZubW5ltcnJycPHixQq3MQYFBQWIiop67JciiIhId3bu3IlVq1YhMTFRdBQivapRwRYWFoYtW7Zg27ZtsLOzg1qthlqtxsOHDwH89bLAlClTEB4ejtOnT+PKlSuYNGkSAgMDy7wh2qJFC0RGRgIALCwsMHv2bCxfvhwHDx7EL7/8gvHjx0OlUmHIkCFP/pPqiUqlwksvvYS2bdtyYHgiIgPbs2cPmjZtalTdPxHpQ4269bCwsCh3+caNGzFx4kQAf915mjt3LrZv347CwkIEBwfj888/L/N408LCosw2kiRh8eLFWLduHbKystC9e3d8/vnnaN68+WNnM1S3HkREREQ1UZNahWOJ6khRURH8/f0RGBiIDRs2GOy4REQEvPLKKzhw4ABu3brFvjHJ6HEsUYGUSiUePnyITZs2IS0tTXQcIiJZqVu3LpKTk7F06VLRUYj0wlJ0AHOye/dubNq0qdK3WomISPeWL1+O33//HZMnTxYdhUgv+EhUT7Kysh7pOJiIiPSP379k7PhI1Ej4+fmhZcuWomMQEcnO22+/jfr16+PatWuioxDpFAs2Pejbty/UajV27twpOgoRkayMGzcOkiRh2rRpoqMQ6RTbsOnBypUr0a5dO4waNUp0FCIiWWnSpAm2b9+OgQMHio5CpFO8w6YHCoUCEyZMQElJCQ4dOiQ6DhGRrIwaNQq2trY4ePAgOzQns8GCTY/69euH5557DgkJCaKjEBHJyqFDhxASEoI5c+aIjkKkEyzY9OiTTz4BAHzxxReCkxARycugQYPg5uaG/fv3i45CpBNsw6ZHfn5+SElJgYeHh+goRESyc+XKFfaLSWaDd9j0zMPDA/fu3cP06dPZloKIyIBUKhUUCgWWLl2Kixcvio5D9ERYsBnA559/ji+//BJvvPGG6ChERLKSmZmJt99+m2/tk8ljwWYACxcuRMOGDfHHH3+IjkJEJCvOzs4YP348SkpKkJ+fLzoOUY1xaCoD0Wg0UChYHxMRGRq/f8nYcGgqI6ZQKJCcnIz27dsjLi5OdBwiItn4u1ibNGkSu/kgk8WCzYA0Gg1+/vlnjBgxQnQUIiLZOX36ND799FOkpqaKjkJUbezWw4B8fHwwY8YMlJSUiI5CRCQ7O3fuxEsvvSQ6BlGNsA2bQGxXQUQkBr9/SSS2YTMRubm5UKlUePnll0VHISKSnTFjxqBx48aiYxBVCws2AWxtbWFhYYG1a9ciKytLdBwiIllxdXVFcnIyVq5cKToK0WNjGzZBtm/fjvPnz8PR0VF0FCIiWVm5ciXy8vIwbdo00VGIHhvbsAlWUlKCjIwMqFQq0VGIiGQnNTWV4z2TwbENmwny9vZGly5dRMcgIpKdsLAweHl54caNG6KjEFWJBZtggwcPxu3bt3Hy5EnRUYiIZGXmzJmQJAmvvPKK6ChEVeIjUcFKSkpw9OhRDBo0SHQUIiLZOXToEPr16wdLSzbpJsMx6CPRs2fPYvDgwVCpVLCwsMD+/fvLfG5hYVHu9MEHH1S4zyVLljyyfosWLWoa0SRYWlpi0KBByMnJwa5du0THISKSlUGDBsHS0hKbN2+GRqMRHYeoQjUu2PLy8uDv74/Vq1eX+3l6enqZacOGDbCwsMCwYcMq3a+fn1+Z7c6dO1fTiCald+/eGD16NJKTk0VHISKSlY0bN2LixIl48803RUchqlCNC7b+/ftj+fLlGDp0aLmfu7m5lZkOHDiAZ555psrOCi0tLcts5+zsXNOIJmXt2rUAgG3btglOQkQkLxMmTED9+vVx+PBh0VGIKmSQh/Z37tzBd999h82bN1e57o0bN6BSqWBtbY3AwEBERETAy8urwvULCwtRWFionc/JydFJZkPr2LEjMjMz4eTkJDoKEZGsKBQK/O9//+P3Lxk1g7wlunnzZtjZ2eH555+vdL2AgABs2rQJR48exZo1a5CUlIQePXrgwYMHFW4TEREBBwcH7eTp6anr+Abj5OSEpKQkjB07VnQUIiJZcXJyQklJCaZPn464uDjRcYgeYZCCbcOGDRg7diysra0rXa9///4YMWIE2rZti+DgYBw+fBhZWVmVNsZfsGABsrOztdPt27d1Hd+g1qxZg23btmH58uWioxARycoff/yB9evXY+TIkaKjED1C7wXbDz/8gISEBEydOrXa2zo6OqJ58+a4efNmhetYWVnB3t6+zGTKVqxYAU9PT2RnZ4uOQkQkK97e3hgzZgysra35xigZHb23Yfvqq6/QoUMH+Pv7V3vb3NxcJCYm4oUXXtBDMuOkUCiQkpIiOgYRkSxt2bJFdASictX4Dltubi7i4uK0z/qTkpIQFxdXptjIycnB7t27K7y71qdPH6xatUo7/+qrryIqKgq///47zp8/j6FDh6JWrVoIDQ2taUyTFRcXh2bNmuH69euioxARyYpGo0G/fv0wd+5c0VGItGpcsMXExKB9+/Zo3749ACA8PBzt27fHokWLtOvs2LEDkiRVWHAlJiYiMzNTO5+amorQ0FD4+vpi5MiRqF+/Pi5cuIAGDRrUNKbJsrKyws2bNzF8+HDRUYiIZEWhUODq1av45JNPkJGRIToOEQAOTWXUZs6cCTc3NyxevFh0FCIiWTlz5gyWL1+OPXv2wNHRUXQcMjM1qVVYsJmAvxu/KhQGeamXiIj+QaPR8PuXdMqgY4mSYajVatSrVw+vv/666ChERLITFBRU5Qg9RIbAgs3Iubm5wdraGh999BGKiopExyEikpXGjRsjOTkZX331legoJHMGGZqKnsz27duRlpYGpVIpOgoRkax8/vnncHBwwIQJE0RHIZljGzYTkpubi7t378Lb21t0FCIi2bl+/TpatmwpOgaZAbZhM2MajQYNGzZE7969RUchIpKdESNGwM/Pjx2bkzAs2EyEQqFASEgIbt26xYGJiYgMbP78+ZAkCW+++aboKCRTfCRqQoqKinDlyhUEBgaKjkJEJDvnzp1D9+7dRccgM8BHomZOqVQiMDAQqamp+Prrr0XHISKSle7du0Oj0eDDDz8UHYVkiAWbCQoKCsKkSZOgVqtFRyEikpX3338fc+fOxfLly0VHIZlhwWaC1q9fDwsLCxw6dEh0FCIiWXnttdfg6OiIM2fOiI5CMsN+2ExQ9+7dkZOTAxsbG9FRiIhkRaFQ4I8//uD3Lxkc77CZKBsbG1y+fBnDhg0THYWISFZsbGyQm5uLoUOHIiEhQXQckgkWbCZs48aN2LdvHxvAEhEZ2O3bt7F//37+0kwGw4LNhK1atQre3t4ws55ZiIiMXsuWLTF69Gi4uLiIjkIywX7YiIiIiAyI/bDJ1KlTp+Dh4YGkpCTRUYiIZKWgoAAdO3bEggULREchM8eCzQw4OTnhjz/+YFsKIiIDs7a2RkpKCv773/8iKytLdBwyY+zWwwy0a9cOL730Etq3by86ChGR7GzevBnffPMNrK2tRUchM8Y2bGamqKgIlpaWUCh485SIyNCKioqgVCpFxyAjxzZsMpeQkAB7e3ssXbpUdBQiItnx9/dHy5YtRccgM8WCzYw0a9YMNjY2WLFiBTQajeg4RESy0qZNG9y6dQsHDhwQHYXMENuwmRGFQoGdO3dCoVDwkSgRkYFt2LABrVu3xuDBg0VHITPENmxmSq1W4+HDh/Dx8REdhYhIVjQaDa5cuYJOnTqJjkJGim3YCABQUlKCRo0aYcCAAaKjEBHJTp8+fdClSxeo1WrRUciM1LhgO3v2LAYPHgyVSgULCwvs37+/zOcTJ06EhYVFmalfv35V7nf16tVo1KgRrK2tERAQgEuXLtU0omxZWlpi0KBBSEhIQHJysug4RESysmzZMmg0GqxcuVJ0FDIjNS7Y8vLy4O/vj9WrV1e4Tr9+/ZCenq6dtm/fXuk+d+7cifDwcCxevBixsbHw9/dHcHAwMjIyahpTtr7++mtcv34d3t7eoqMQEclK9+7d8fPPP+ODDz4QHYXMSI0Ltv79+2P58uUYOnRohetYWVnBzc1NO9WrV6/SfX744YeYNm0aJk2ahFatWmHt2rWwsbHBhg0bahpTtmxsbODr64u4uDh89dVXouMQEclK27ZtkZ+fj0WLFomOQmZCr23Yzpw5AxcXF/j6+mLmzJm4e/duhesWFRXhypUrCAoK+v/hFAoEBQUhOjq6wu0KCwuRk5NTZqL/77nnnsOLL76Ie/fuiY5CRCQrixcvxrJly/Dxxx+LjkJmQG8FW79+/fD111/j5MmTeO+99xAVFYX+/fujtLS03PUzMzNRWloKV1fXMstdXV0rbbgZEREBBwcH7eTp6anTn8PUffXVV1AoFPjhhx9ERyEikpW//3+6ePGi6ChkBvTWD9vo0aO1f27Tpg3atm2LJk2a4MyZM+jTp4/OjrNgwQKEh4dr53Nycli0/cOzzz6L/Px8WFqyyz0iIkOytLREZmYmv39JJwzWrUfjxo3h7OyMmzdvlvu5s7MzatWqhTt37pRZfufOHbi5uVW4XysrK9jb25eZqCxLS0scPHiQnTkSERmYpaUl0tLS8PTTTyMpKUl0HDJhBivYUlNTcffuXbi7u5f7uVKpRIcOHXDy5EntMo1Gg5MnTyIwMNBQMc3Wvn37cOjQIXzxxReioxARyUpGRgaioqIwbNgw0VHIhNW4YMvNzUVcXBzi4uIAAElJSYiLi0NKSgpyc3Mxb948XLhwAb///jtOnjyJkJAQNG3aFMHBwdp99OnTB6tWrdLOh4eH48svv8TmzZtx/fp1zJw5E3l5eZg0aVLNf0ICAKxbtw5NmzZF3bp1RUchIpKVdu3aYfjw4fD19RUdhUxYjR+sx8TE4JlnntHO/92ObMKECVizZg2uXr2KzZs3IysrCyqVCn379sWyZctgZWWl3SYxMRGZmZna+VGjRuHPP//EokWLoFar0a5dOxw9evSRFxGo+pRKJW7cuCE6BhGRLO3evVt0BDJxHEtUZvbs2YMZM2YgLi4OHh4eouMQEclGVlYWOnTogPHjx2Px4sWi45BAHEuUqtSwYUPcvXsXw4cPFx2FiEhW7O3tcf/+fbzzzjvIz88XHYdMDN81lpnAwEC8/PLL6N+/v+goRESyolAosHHjRvz444+wtrYWHYdMDB+JylhOTg7PERGRABqNBrm5ufwOlik+EqXHdvHiRTg5OeH9998XHYWISHYaNWqEgIAA0THIhLBgk6lOnTrBxsYGy5cvFx2FiEh2OnXqhN9++w0//vij6ChkItiGTaYUCgX27t1bYUfGRESkP9988w0GDBiAbt26iY5CJoJt2Ajx8fGwtbWFt7e36ChERLJSUFCA8+fPo3fv3qKjkAGxDRtVW35+Pvz9/fHcc8+JjkJEJDtdunRB3759ce/ePdFRyMixYJM5GxsbBAcH49dff+UXBhGRgb333nsoLS3F+vXrRUchI8dHooTc3Fzk5+fDxcVFdBQiItlJSkqCj4+P6BhkQHwkSjVia2sLFxcXfP/991i3bp3oOEREsuLj44OMjAztmNxE5WHBRlovvPACZs2ahZycHNFRiIhk5c0338RHH33EX5qpQizYSOvLL79E7dq1cfXqVdFRiIhkZdWqVahXrx7i4+NFRyEjxX7YSCskJAQPHjyAQsE6nojIkJRKJTIzM/n9SxXilUFlKBQKrF+/Hv369RMdhYhIVhQKBa5fv46nnnoKaWlpouOQkWHBRo84ceIEvv/+e3z99deioxARyUpWVhZ++uknDBs2THQUMjJ8JEqP2LRpE3755Rc0aNBAdBQiIlkJDAzEsGHD4OXlJToKGRn2w0ZERERkQOyHjXRqzZo1cHBwQGZmpugoRESykpKSAhcXF3zwwQeio5CRYMFGFfL19UVOTg5GjhwpOgoRkax4eHigoKAAb731FkpKSkTHISPANmxUod69eyM8PBxjx44VHYWISFYUCgU2bNiA9PR0WFryv2piGzZ6TGq1Gm5ubqJjEBHJTlFREXJycuDs7Cw6CukI27CRXhw+fBgqlQqrVq0SHYWISFY0Gg1cXFwQFBQkOgoJxoKNqtS3b1/UqVMHS5cuFR2FiEhWFAoFunbtip9//hnXr18XHYcE4oNxqpKlpSW+++47NG/eXHQUIiLZ2bFjB86dO4eWLVuKjkIC1fgO29mzZzF48GCoVCpYWFhg//792s+Ki4sxf/58tGnTBnXr1oVKpcL48eOrHGpjyZIlsLCwKDO1aNGiphFJh55++mmoVCqcOnUKqampouMQEcmGvb09BgwYgHv37uHw4cOi45AgNS7Y8vLy4O/vj9WrVz/yWX5+PmJjY/HWW28hNjYW+/btQ0JCAp577rkq9+vn54f09HTtdO7cuZpGJB3LyMhAUFAQnn/+edFRiIhkp1OnThgyZAhyc3NFRyEBavxItH///ujfv3+5nzk4OOD48eNllq1atQqdO3dGSkpKpUNuWFpa8m1EI+Xi4oJnnnkG0dHRKCgogLW1tehIRESy8eGHH2Lo0KHYuXMnpkyZIjoOGZjB2rBlZ2fDwsICjo6Ola5348YNqFQqWFtbIzAwEBEREZUWeIWFhSgsLNTO5+Tk6CoylSMyMhJKpZLFGhGRgYWEhECtVsPFxUV0FBLAIG+JFhQUYP78+QgNDa20v5GAgABs2rQJR48exZo1a5CUlIQePXrgwYMHFW4TEREBBwcH7eTp6amPH4H+j729PaytrfHVV19h3bp1ouMQEcmKi4sLEhISMHPmTNFRyMB00nGuhYUFIiMjMWTIkEc+Ky4uxrBhw5CamoozZ85UqzPbrKwseHt748MPP6zw9m95d9g8PT3Zca6e1atXD/n5+bh//z5sbGxExyEiko3Q0FDs2LED33zzDcaNGyc6DtWA0XWcW1xcjJEjRyI5ORnHjx+vdgHl6OiI5s2b4+bNmxWuY2VlBXt7+zIT6d/atWtRt25d3Lp1S3QUIiJZ2bhxI+rXr4/k5GTRUciA9NaG7e9i7caNGzh9+jTq169f7X3k5uYiMTERL7zwgh4S0pMYNWoURo0aJToGEZHsWFtbIzMzU3QMMrAa32HLzc1FXFwc4uLiAABJSUmIi4tDSkoKiouLMXz4cMTExGDr1q0oLS2FWq2GWq1GUVGRdh99+vQpM9zRq6++iqioKPz+++84f/48hg4dilq1aiE0NLTmPyHp1dtvv42+ffuKjkFEJDs//vgjWrRoweJNJmpcsMXExKB9+/Zo3749ACA8PBzt27fHokWL8Mcff+DgwYNITU1Fu3bt4O7urp3Onz+v3UdiYmKZCy01NRWhoaHw9fXFyJEjUb9+fVy4cAENGjR4gh+R9Ck2NhbHjx/H3r17RUchIpKVwsJCJCQkYMSIEaKjkAHU+JHo008/jcreV3icdxl+//33MvM7duyoaRwSZOvWrXj66afh7e0tOgoRkaz07t0bI0aMQEBAgOgoZAA6eUvUmNTkzQvSDY1GA4XCID3FEBHRP/D717QY3VuiJB9vv/027O3tkZWVJToKEZGsxMfHw97eHp9//rnoKKRHLNhIJzp06IC8vDy+0UtEZGC+vr6QJAmvvfYaNBqN6DikJwYbmorM26BBg7Bw4UK8+OKLoqMQEcmKpaUlNmzYAEtLSz4WNWNsw0Y6l5iYiCZNmoiOQUQkO1lZWSgqKuJ4o0aObdhIuM2bN6Np06bYvHmz6ChERLJSVFQEd3d3DB48WHQU0gMWbKRToaGhsLa2xpIlS0RHISKSFaVSia5du+Ly5ctIS0sTHYd0jG3YSKeUSiVOnDgBf39/0VGIiGRn9+7duHXrFlQqlegopGO8w0Y6161bN9ja2mLr1q3IyMgQHYeISDacnJzQsWNHJCYm4sCBA6LjkA7xDhvpRWJiIsaNG4cePXrg7NmzouMQEclK9+7dcf/+fdy7dw82Njai45AO8A4b6UWTJk3QrVs3xMfHs18gIiID+/DDD1FcXIwTJ06IjkI6wm49SG9yc3NhY2PDfoGIiATIzc2Fra2t6BhUDnbrQUbF1tYWCoUCS5cuxbp160THISKSFVtbW5w7dw6TJ08WHYV0gHfYSK80Gg3s7e1RWlqK7OxsKJVK0ZGIiGRj8ODBOHToEPbs2YNhw4aJjkP/h3fYyOgoFAp88skncHZ2Rnp6uug4RESysn37dri6uuL+/fuio9AT4h02IiIiIgPiHTYyajNnzkRQUJDoGEREsnPgwAF4e3sjJydHdBSqIRZsZDCJiYk4efIkjhw5IjoKEZGs1KpVCykpKRg1apToKFRDLNjIYHbt2oWePXuiRYsWoqMQEcnKoEGDMHr0aIwfP150FKohtmEjIUpKSmBpyYE2iIgMjd+/4rENG5mEsLAw2NvbIz8/X3QUIiJZOXfuHOrWrYvNmzeLjkLVxIKNDO6ZZ57Bw4cPMW3aNNFRiIhkpXPnzlAoFJgzZ47oKFRNvCdKBjd8+HAsX74cL7/8sugoRESyolQqsXnzZnh6eoqOQtXENmwkVFxcHNq1ayc6BhGR7KSkpMDGxgbOzs6io8gO27CRSVm5ciXat2+PXbt2iY5CRCQrOTk5aNy4MZ5//nnRUegxsWAjYWbOnAmlUol33nlHdBQiIlmxt7dHQEAAzp8/z850TUSNC7azZ89i8ODBUKlUsLCwwP79+8t8LkkSFi1aBHd3d9SpUwdBQUG4ceNGlftdvXo1GjVqBGtrawQEBODSpUs1jUhGzsbGBtHR0bhy5YroKEREshMZGYnExEQ2HzIRNS7Y8vLy4O/vj9WrV5f7+fvvv49PP/0Ua9euxcWLF1G3bl0EBwejoKCgwn3u3LkT4eHhWLx4MWJjY+Hv74/g4GBkZGTUNCYZuaeeegqWlpZYuXIl7t27JzoOEZFsuLi4wNvbG9HR0dizZ4/oOFQFnbx0YGFhgcjISAwZMgTAX3fXVCoV5s6di1dffRUAkJ2dDVdXV2zatAmjR48udz8BAQHo1KkTVq1aBQDQaDTw9PTEyy+/jNdff73cbQoLC1FYWKidz8nJgaenJ186MCExMTHo1KkTgoKCcPz4cdFxiIhkpV69eigsLERWVhaUSqXoOLJgNC8dJCUlQa1Wlxno28HBAQEBAYiOji53m6KiIly5cqXMNgqFAkFBQRVuAwARERFwcHDQTnxV2fR07NgRHTp0wM2bN0VHISKSnQ8++AAlJSW4fPmy6ChUCb0UbGq1GgDg6upaZrmrq6v2s3/LzMxEaWlptbYBgAULFiA7O1s73b59+wnTkwjnz59HUlKS6BhERLIzdepU5Obmolu3bqKjUCVM/i1RKysr2Nvbl5nI9CiVSpSUlGD69OnYuHGj6DhERLKiVCqxa9cujBs3TnQUqoBeCjY3NzcAwJ07d8osv3Pnjvazf3N2dkatWrWqtQ2ZF41Ggy1btuDll19GSUmJ6DhERLLy5ZdfYuvWrThy5IjoKFQOvRRsPj4+cHNzw8mTJ7XLcnJycPHiRQQGBpa7jVKpRIcOHcpso9FocPLkyQq3IfOiVCrx3nvvwcfHh/0CEREZ2M6dO+Hp6YmioiLRUagcNR5LNDc3t0wj8aSkJMTFxcHJyQleXl6YPXs2li9fjmbNmsHHxwdvvfUWVCqV9k1SAOjTpw+GDh2KWbNmAQDCw8MxYcIEdOzYEZ07d8bHH3+MvLw8TJo0qeY/IZmUl19+mWOMEhEJ4OTkhJSUFNExqAI1LthiYmLwzDPPaOfDw8MBABMmTMCmTZvw2muvIS8vD9OnT0dWVha6d++Oo0ePwtraWrtNYmIiMjMztfOjRo3Cn3/+iUWLFkGtVqNdu3Y4evToIy8ikPkbMmQI8vLy2M0HEZGBrV+/HosWLcLNmzdhY2MjOg79Hw7+TkapZ8+e+OGHH3D69Gk8/fTTouMQEcnGzp07MXr0aAwZMgSRkZGi45ilmtQqNb7DRqRPe/bswZQpU9C2bVvRUYiIZGXUqFH47rvvMHnyZNFR6B94h42MXn5+Pm/LExEJwO9f/TCakQ6IdGX48OFwdnaudAxaIiLSvYMHD8LOzg67du0SHYXAgo2M3HPPPYeHDx9i3rx5oqMQEclKUFAQLC0t8corr4iOQmAbNjJy48ePR05ODmbMmCE6ChGRrNjY2GDbtm1sS2wk2IaNTMaZM2f4xigRkQCxsbFo3LgxHB0dRUcxC2zDRmZr/vz5eOaZZ3Dw4EHRUYiIZCUtLQ0dO3bEyJEjRUeRNRZsZBLeeOMNWFpa4qOPPhIdhYhIVlQqFZ566imcPXuWw1YJxDZsZBLs7e1x7do1+Pr6io5CRCQ7hw4dgrW1NZRKpegossU7bGQyfH19odFo8NprryE3N1d0HCIi2XBzc4OjoyMiIyOxZ88e0XFkiS8dkEk5fvw4+vbti0GDBuHbb78VHYeISDY0Gg3s7OxgYWGBrKwsWFryIV1N8aUDMnvPPvss2rZti/T0dNFRiIhkRaFQ4N133wUAJCQkCE4jP7zDRiZHo9FAoeDvGkREIvA7+MnxDhvJgkKhQH5+PgYPHozt27eLjkNEJCsKhQIffvghxowZIzqKrLBgI5OkUChw/PhxzJgxAxqNRnQcIiJZiYyMxPbt23H27FnRUWSDBRuZJGtrayxduhTt2rXjwPBERAa2d+9eNG3alI9GDYht2IiIiIgMiG3YSJa6du2Kfv36iY5BRCQ7ERERcHFx4ZMOA2DBRiavpKQE33//PWJiYkRHISKSFZVKhT///BNTpkwRHcXssdc7Mnn79u3Dm2++ibZt24qOQkQkKxMmTMC5c+cQHh4uOorZYxs2MiuZmZlwdnYWHYOISHb4/fv42IaNZO2ZZ56Bt7c3SkpKREchIpKVr776Ci4uLjh06JDoKGaLBRuZjZEjRyI/Px/vvPOO6ChERLIyYsQI1KpVC7NnzxYdxWyxDRuZjZkzZ8LOzo69bxMRGZi9vT327t2Lrl27io5itniHjczKuHHjAPzVCzcRERnOc889B2dnZ3z//ffIzc0VHcfs6K1ga9SoESwsLB6ZwsLCyl1/06ZNj6xrbW2tr3hkxqZMmYLnn38eJ0+eFB2FiEhW4uPj0a9fP4wdO1Z0FLOjt4Lt8uXLSE9P107Hjx8H8Ndz7orY29uX2SY5OVlf8ciMffDBB6hVqxbWrl0rOgoRkaz4+fmhdevWiIqK4jjPOqa3NmwNGjQoM79ixQo0adIEvXr1qnAbCwsLuLm5Ves4hYWFKCws1M7n5ORULyiZHWdnZ6SkpEClUomOQkQkOydPnoSjoyPHGdUxg5zNoqIibNmyBZMnT4aFhUWF6+Xm5sLb2xuenp4ICQlBfHx8lfuOiIiAg4ODdvL09NRldDJRKpUK+fn5mDx5ModMISIyIBcXFyiVSqxatYrtiXXIIB3n7tq1C2PGjKn0rkd0dDRu3LiBtm3bIjs7G//9739x9uxZxMfHw8PDo8J9l3eHzdPTkx3nEnbt2oVRo0ZhxIgR2LVrl+g4RESyUVJSAltbW1hbW+PevXu82/YvNek41yAFW3BwMJRKJb799tvH3qa4uBgtW7ZEaGgoli1b9tjbcaQD+qe2bduiYcOGOHLkiOgoRESyEhERgZUrVyIuLq7SGy9yZJQFW3JyMho3box9+/YhJCSkWtuOGDEClpaW2L59+2Nvw4KNiIiIjJlRDk21ceNGuLi4YODAgdXarrS0FL/88gvc3d31lIzkIjMzE126dMGBAwdERyEikp158+Zh9OjRomOYPL0WbBqNBhs3bsSECRNgaVn2hdTx48djwYIF2vmlS5fi2LFjuHXrFmJjYzFu3DgkJydj6tSp+oxIMmBtbY3Y2FhMnjyZr5kTERlYVFQUdu7ciYsXL4qOYtL0OjTViRMnkJKSgsmTJz/yWUpKSplGiPfv38e0adOgVqtRr149dOjQAefPn0erVq30GZFkwNbWFosWLcLPP/8MjUbDxq9ERAa0b98+DBw4ELa2tqKjmDSDvHRgSGzDRlVh0UZEJAa/f/9ilG3YiIyFRqNB8+bNMXjwYNFRiIhkZ86cOWjQoAFKSkpERzFJLNhINhQKBWxsbHD48GEkJCSIjkNEJCvNmjXDvXv3MGvWLNFRTJJe27ARGZvIyEisWbMGzZo1Ex2FiEhWXnrpJfz2229YuHCh6CgmiW3YSJY0Gg1SU1Ph5eUlOgoRkeykpKTI+vuXbdiIHlO7du3QunVrdvNBRGRgK1asgLe3N06dOiU6iklhwUay9MILL+DBgwf44osvREchIpKVqVOnolatWpg7d67oKCaFbdhIlubNmwc/Pz8MGDBAdBQiIllxdnbGkSNH0KNHD9FRTArvsJFsDRgwAAUFBdi8ebPoKEREsvLss8/C2toamzdvRkFBgeg4JoEFG8naqFGjMHHiRERHR4uOQkQkK+fOncPEiRMxceJE0VFMAgs2krU1a9agVq1a2LJli+goRESy0r17dzRr1gw//vij6CgmgW3YSNZUKhUyMzPh6OgoOgoRkexcunSJXXA9Jt5hI9lzdHRERkYGhg8fjqKiItFxiIhk4+9flufPn49Dhw6JDWPkWLARATh48CD27t2L6dOni45CRCQr+fn5+OijjzBhwgT2jVkJFmxE+KtfoNatW4uOQUQkO7a2tpg/fz4cHByQk5MjOo7R4tBURERERAbEoamInlBycjJatGiB77//XnQUIiLZGTt2LEJDQ0XHMEos2Ij+wc7ODjdv3sT48eNFRyEikp1r165hx44duHr1qugoRofdehD9g5OTE9566y3cu3cPGo0GCgV/pyEiMpR9+/Zh4sSJcHZ2Fh3F6LANG1ElSkpKYGnJ32uIiAzNnL9/2YaNSEeKiorg6uqKUaNGiY5CRCQ7Y8aMgYuLC7v5+AcWbETlUCqVqF+/PiIjI5GWliY6DhGRrLRv3x7379/HggULREcxGuZ5r5FIB/bu3YsTJ05ApVKJjkJEJCvz5s1DVlYW3njjDdFRjAbbsBFVoaioCElJSfD19RUdhYhIduLj4+Hn5yc6hk6xDRuRHjRt2hRdunRhWwoiIgObO3cuWrdujejoaNFRhGPBRlSFKVOmICsrC5GRkaKjEBHJyty5c6FQKPhoFHos2JYsWQILC4syU4sWLSrdZvfu3WjRogWsra3Rpk0bHD58WF/xiB7b4sWLce7cOQwbNkx0FCIiWVGpVDh37hxOnDghOopwer3D5ufnh/T0dO107ty5Ctc9f/48QkNDMWXKFPz0008YMmQIhgwZgmvXrukzItFj6datGzIzM/H555+LjkJEJCuBgYEAgA8++ABFRUWC04ij14LN0tISbm5u2qmynos/+eQT9OvXD/PmzUPLli2xbNkyPPXUU1i1apU+IxI9tmHDhiEsLAyxsbGioxARycqBAwfw2muvYfr06aKjCKPXgu3GjRtQqVRo3Lgxxo4di5SUlArXjY6ORlBQUJllwcHBVTY0LCwsRE5OTpmJSB++/vprWFpa4ttvvxUdhYhIVoYOHYpGjRrhp59+Eh1FGL31wxYQEIBNmzbB19cX6enpePvtt9GjRw9cu3YNdnZ2j6yvVqvh6upaZpmrqyvUanWlx4mIiMDbb7+t0+xE5fH29saDBw9gbW0tOgoRkexcv35d1t+/ervD1r9/f4wYMQJt27ZFcHAwDh8+jKysLOzatUunx1mwYAGys7O10+3bt3W6f6J/sra2xvXr19GvXz9280FEZEDW1tYoKirCuHHjcPz4cdFxDM5g3Xo4OjqiefPmuHnzZrmfu7m54c6dO2WW3blzB25ubpXu18rKCvb29mUmIn06duwYvv/+e8yaNUt0FCIiWcnNzcWOHTvwwgsviI5icAYr2HJzc5GYmAh3d/dyPw8MDMTJkyfLLDt+/Lj27RAiY/HKK6+gTZs25T7aJyIi/XFycsKcOXPQsGFDFBQUiI5jUHobmurVV1/F4MGD4e3tjbS0NCxevBhxcXH49ddf0aBBA4wfPx4NGzZEREQEgL+69ejVqxdWrFiBgQMHYseOHXj33XcRGxuL1q1bP/ZxOTQVERERGTOjGpoqNTUVoaGh8PX1xciRI1G/fn1cuHABDRo0AACkpKQgPT1du37Xrl2xbds2rFu3Dv7+/tizZw/2799frWKNyJCuXr0KDw8PnD17VnQUIiJZ0Wg06NOnD8aOHSs6isFw8HeiGlKr1WjYsCHc3d2RmpoqOg4Rkay0bNkSCQkJuH79Onx9fUXHqZaa1Cp669aDyNy5ubnhrbfeQt26dUVHISKSnT179mDhwoVo2LCh6CgGwTtsRDpQUlICjUYDpVIpOgoRkewUFBSYVB9tRtWGjUgucnJy4OjoiEmTJomOQkQkO0FBQWjYsKHZ943Jgo3oCdnb28PV1RU7duzg0GhERAbWvXt33Lt3DytXrhQdRa/Yho1IB/bu3YukpCQ+hiciMrBFixbBxsYGc+fOFR1Fr9iGjUiHsrKykJqayu5oiIgEiI6ONokO99mGjUiwJk2aoHfv3qJjEBHJzrhx49C1a1fExcWJjqIXLNiIdGjKlCn4888/2ZkuEZGBLVu2DBYWFnj33XdFR9ELPhIl0iGNRoPr16/Dz89PdBQiItm5du2aSTRJ4SNRIsEUCgX8/PyQmJiIDz/8UHQcIiJZad26NUpKSrBgwQKz6+aDBRuRHowYMQJz587F9evXRUchIpKVTZs2YcWKFZg1a5boKDrFgo1ID7Zu3QqlUokzZ86IjkJEJCtTp06Fp6cnEhISREfRKfbDRqQHLVu2RF5eHiwt+U+MiMjQbt26ZXbfv7zDRqQnlpaWOHfuHHr16mV2bSmIiIyZpaUlsrKy0LdvX5w7d050HJ1gwUakR1FRUTh79izmzZsnOgoRkawUFBTg5MmTCA0NFR1FJ1iwEenRG2+8gfbt26Nhw4aioxARyYqbmxv+85//oFWrVmbxlIP9sBEREREZEPthIzJSZ8+eRf369RETEyM6ChGRrJSUlKBt27aYOHGi6ChPhAUbkQE0atQI9+/fx8iRI0VHISKSFUtLS+Tl5eHrr79GSkqK6Dg1Zl7vvBIZKS8vLyxatAi+vr6ioxARyc7u3bvx+eefQ6VSiY5SY2zDRmRgubm5sLa2Nrs+goiITEFWVhYcHR2FZmAbNiIjl5qaCicnJ8ycOVN0FCIi2WnXrh2aN28uOkaNsGAjMiAPDw+4ublh06ZNKCoqEh2HiEhWnn32Wfz555/YvHmz6CjVxmcyRAa2b98+FBcXQ6lUio5CRCQr7733Hnx9fTFhwgTRUaqNbdiIBElOTsb9+/fRrl070VGIiGSlpKQEx48fR//+/YUc36jasEVERKBTp06ws7ODi4sLhgwZgoSEhEq32bRpEywsLMpM1tbW+opIJIxGo0HLli0xYMAA0VGIiGRn8ODBGDBgAK5fvy46ymPTW8EWFRWFsLAwXLhwAcePH0dxcTH69u2LvLy8Srezt7dHenq6dkpOTtZXRCJhFAoFpkyZArVajWvXromOQ0QkKx9//DEsLCzw2WefiY7y2Az2SPTPP/+Ei4sLoqKi0LNnz3LX2bRpE2bPno2srKwaH4ePRMlUaDQapKWlwcPDQ3QUIiLZSUlJgZeXl5BjG9Uj0X/Lzs4GADg5OVW6Xm5uLry9veHp6YmQkBDEx8dXun5hYSFycnLKTESmQKFQwMPDA9HR0VixYoXoOEREsuLl5YWcnBzMnDnTJAaHN0jBptFoMHv2bHTr1g2tW7eucD1fX19s2LABBw4cwJYtW6DRaNC1a1ekpqZWuE1ERAQcHBy0k6enpz5+BCK9mTx5MhYuXIjExETRUYiIZOWLL77A2rVrMX/+fNFRqmSQR6IzZ87EkSNHcO7cuWo9/ikuLkbLli0RGhqKZcuWlbtOYWEhCgsLtfM5OTnw9PTkI1EyGVevXkWXLl2wadMmjjVKRGRgnp6e6NatG3bs2GGwY9bkkaje+2GbNWsWDh06hLNnz1a7rU7t2rXRvn173Lx5s8J1rKysYGVl9aQxiYRp27YtcnNzoVCwH2siIkNLTk42ie9fvSWUJAmzZs1CZGQkTp06BR8fn2rvo7S0FL/88gvc3d31kJDIeCgUCuzZswddunQxibYURETmQqFQIDU1FR07dkRMTIzoOBXSW8EWFhaGLVu2YNu2bbCzs4NarYZarcbDhw+164wfPx4LFizQzi9duhTHjh3DrVu3EBsbi3HjxiE5ORlTp07VV0wio/HTTz/h4sWLWLx4segoRESyotFoEBsba9TNUvT2SHTNmjUAgKeffrrM8o0bN2LixIkA/nql9p+3Ie/fv49p06ZBrVajXr166NChA86fP49WrVrpKyaR0Vi2bBmOHTvG652IyMC8vLwQFhaGBw8eiI5SIQ5NRURERGRARt0PGxE9nr1798LOzo4jIBARGVh+fj68vLwwY8YM0VEewYKNyMi0bdsWeXl5GDFihOgoRESyYmNjA0mS8OWXXyIzM1N0nDL03q0HEVVPs2bNsGTJkgqHcCMiIv3ZsWMHTpw4AWdnZ9FRymAbNiIjplar4eLiYhJ9BBERmRONRoOMjAy4ubnpfN9sw0ZkRuLj49GwYUPMmTNHdBQiItnx8fFBhw4dRMfQYsFGZKT8/Pzg4uKCL7/8kp3pEhEZ2KBBg5CWlobDhw+LjgKAbdiIjNq3336LevXq8ZEoEZGBffbZZwgKCsKAAQNERwHAO2xERq1jx45o0qQJYmJiEBcXJzoOEZFsKBQKDB06FLm5udi1a5foOLzDRmTsSkpK0LVrV6hUKvz++++i4xARycqzzz6LixcvolOnTjUaF11XeIeNyMhZWlpi/Pjx+OOPP5Camio6DhGRrHzxxRcAgK+//lpoDnbrQWQCSkpKkJubC0dHR9FRiIhkJzMzU6f9srFbDyIzZWlpCUdHR0RGRuKdd94RHYeISFacnZ2RmpqK8ePHC3trnwUbkQkJDw/HokWL+GiUiMjA1qxZg2+++QZLly4VcnwWbEQmZNeuXbCzs0NCQoLoKEREsrJs2TJ4enri/v37Qo7Pt0SJTEinTp2QlZUlOgYRkewoFAqkpKSIO76wIxNRja1atQodO3YUHYOISHbi4+Ph6+uL+Ph4gx6XBRuRCUpMTMSVK1ewYsUK0VGIiGRFqVTixo0bGD58uEGPy0eiRCZo5cqVuHTpEjp16iQ6ChGRrDRr1gwzZ86Eg4ODQY/LftiITJxGo+FYo0REAvzdxUd1v4PZDxuRzKxbtw42Nja4ceOG6ChERLKSmZmJ+vXrY+7cuQY5Hh+JEpmwrl27orCwECEhIXjjjTfg5+eHdu3aAQDi4uIQHx+vXVbVfHW2ASB8v8xi/FlM9TpkFuPPYgz/JlJTUyFJEj799FOMHDkSgYGBFX1V64ZkZrKzsyUAUnZ2tugoRAbx3nvvSR07dpQASL169dIu79WrV5llVc1XZxtj2C+zGH+W6uyXWZhFX/s1ZJbHVZNahW3YiMwAf2tmFmPMYqrXIbMYfxZj/TfxuGpSq7BgIyIiIjIgvnRAREREZIb0XrCtXr0ajRo1grW1NQICAnDp0qVK19+9ezdatGgBa2trtGnTBocPH9Z3RCIiIiKjpteCbefOnQgPD8fixYsRGxsLf39/BAcHIyMjo9z1z58/j9DQUEyZMgU//fQThgwZgiFDhuDatWv6jElERERk1PTahi0gIACdOnXCqlWrAPzVwZynpydefvllvP7664+sP2rUKOTl5eHQoUPaZV26dEG7du2wdu3axzom27ARERGRMatJraK3ftiKiopw5coVLFiwQLtMoVAgKCgI0dHR5W4THR2N8PDwMsuCg4Oxf//+Co9TWFiIwsJC7Xx2djaAv04GERERkbH5u0apzj0zvRVsmZmZKC0thaura5nlrq6u+O2338rdRq1Wl7u+Wq2u8DgRERF4++23H1nu6elZg9REREREhvHgwYPHHpPU5Ec6WLBgQZm7cllZWfD29kZKSorBB2Y1BTk5OfD09MTt27f5yLgcPD9V4zmqHM9P5Xh+qsZzVDlzOD+SJOHBgwdQqVSPvY3eCjZnZ2fUqlULd+7cKbP8zp07cHNzK3cbNze3aq0PAFZWVrCysnpkuYODg8n+RRqCvb09z08leH6qxnNUOZ6fyvH8VI3nqHKmfn6qe1NJb2+JKpVKdOjQASdPntQu02g0OHnyZIXjbQUGBpZZHwCOHz+u//G5iIiIiIyYXh+JhoeHY8KECejYsSM6d+6Mjz/+GHl5eZg0aRIAYPz48WjYsCEiIiIAAK+88gp69eqFlStXYuDAgdixYwdiYmKwbt06fcYkIiIiMmp6LdhGjRqFP//8E4sWLYJarUa7du1w9OhR7YsFKSkpUCj+/02+rl27Ytu2bXjzzTexcOFCNGvWDPv370fr1q0f+5hWVlZYvHhxuY9JieenKjw/VeM5qhzPT+V4fqrGc1Q5uZ4fsxtLlIiIiMjccCxRIiIiIiPHgo2IiIjIyLFgIyIiIjJyLNiIiIiIjJxZFWyrV69Go0aNYG1tjYCAAFy6dEl0JKOxZMkSWFhYlJlatGghOpYwZ8+exeDBg6FSqWBhYfHIeLWSJGHRokVwd3dHnTp1EBQUhBs3bogJK0BV52fixImPXE/9+vUTE1aAiIgIdOrUCXZ2dnBxccGQIUOQkJBQZp2CggKEhYWhfv36sLW1xbBhwx7pGNycPc45evrppx+5jmbMmCEosWGtWbMGbdu21Xb+GhgYiCNHjmg/l/v1U9X5keO1YzYF286dOxEeHo7FixcjNjYW/v7+CA4ORkZGhuhoRsPPzw/p6ena6dy5c6IjCZOXlwd/f3+sXr263M/ff/99fPrpp1i7di0uXryIunXrIjg4GAUFBQZOKkZV5wcA+vXrV+Z62r59uwETihUVFYWwsDBcuHABx48fR3FxMfr27Yu8vDztOnPmzMG3336L3bt3IyoqCmlpaXj++ecFpjasxzlHADBt2rQy19H7778vKLFheXh4YMWKFbhy5QpiYmLQu3dvhISEID4+HgCvn6rODyDDa0cyE507d5bCwsK086WlpZJKpZIiIiIEpjIeixcvlvz9/UXHMEoApMjISO28RqOR3NzcpA8++EC7LCsrS7KyspK2b98uIKFY/z4/kiRJEyZMkEJCQoTkMUYZGRkSACkqKkqSpL+ul9q1a0u7d+/WrnP9+nUJgBQdHS0qplD/PkeSJEm9evWSXnnlFXGhjEy9evWk9evX8/qpwN/nR5Lkee2YxR22oqIiXLlyBUFBQdplCoUCQUFBiI6OFpjMuNy4cQMqlQqNGzfG2LFjkZKSIjqSUUpKSoJarS5zPTk4OCAgIIDX0z+cOXMGLi4u8PX1xcyZM3H37l3RkYTJzs4GADg5OQEArly5guLi4jLXUIsWLeDl5SXba+jf5+hvW7duhbOzM1q3bo0FCxYgPz9fRDyhSktLsWPHDuTl5SEwMJDXz7/8+/z8TW7Xjl5HOjCUzMxMlJaWakdQ+Jurqyt+++03QamMS0BAADZt2gRfX1+kp6fj7bffRo8ePXDt2jXY2dmJjmdU1Go1AJR7Pf39mdz169cPzz//PHx8fJCYmIiFCxeif//+iI6ORq1atUTHMyiNRoPZs2ejW7du2lFZ1Go1lEolHB0dy6wr12uovHMEAGPGjIG3tzdUKhWuXr2K+fPnIyEhAfv27ROY1nB++eUXBAYGoqCgALa2toiMjESrVq0QFxfH6wcVnx9AnteOWRRsVLX+/ftr/9y2bVsEBATA29sbu3btwpQpUwQmI1M0evRo7Z/btGmDtm3bokmTJjhz5gz69OkjMJnhhYWF4dq1a7JuE1qVis7R9OnTtX9u06YN3N3d0adPHyQmJqJJkyaGjmlwvr6+iIuLQ3Z2Nvbs2YMJEyYgKipKdCyjUdH5adWqlSyvHbN4JOrs7IxatWo98gbNnTt34ObmJiiVcXN0dETz5s1x8+ZN0VGMzt/XDK+nx9e4cWM4OzvL7nqaNWsWDh06hNOnT8PDw0O73M3NDUVFRcjKyiqzvhyvoYrOUXkCAgIAQDbXkVKpRNOmTdGhQwdERETA398fn3zyCa+f/1PR+SmPHK4dsyjYlEolOnTogJMnT2qXaTQanDx5sszzbvr/cnNzkZiYCHd3d9FRjI6Pjw/c3NzKXE85OTm4ePEir6cKpKam4u7du7K5niRJwqxZsxAZGYlTp07Bx8enzOcdOnRA7dq1y1xDCQkJSElJkc01VNU5Kk9cXBwAyOY6+jeNRoPCwkJePxX4+/yURxbXjui3HnRlx44dkpWVlbRp0ybp119/laZPny45OjpKarVadDSjMHfuXOnMmTNSUlKS9OOPP0pBQUGSs7OzlJGRITqaEA8ePJB++ukn6aeffpIASB9++KH0008/ScnJyZIkSdKKFSskR0dH6cCBA9LVq1elkJAQycfHR3r48KHg5IZR2fl58OCB9Oqrr0rR0dFSUlKSdOLECempp56SmjVrJhUUFIiObhAzZ86UHBwcpDNnzkjp6enaKT8/X7vOjBkzJC8vL+nUqVNSTEyMFBgYKAUGBgpMbVhVnaObN29KS5culWJiYqSkpCTpwIEDUuPGjaWePXsKTm4Yr7/+uhQVFSUlJSVJV69elV5//XXJwsJCOnbsmCRJvH4qOz9yvXbMpmCTJEn67LPPJC8vL0mpVEqdO3eWLly4IDqS0Rg1apTk7u4uKZVKqWHDhtKoUaOkmzdvio4lzOnTpyUAj0wTJkyQJOmvrj3eeustydXVVbKyspL69OkjJSQkiA1tQJWdn/z8fKlv375SgwYNpNq1a0ve3t7StGnTZPXLUXnnBoC0ceNG7ToPHz6UXnrpJalevXqSjY2NNHToUCk9PV1caAOr6hylpKRIPXv2lJycnCQrKyupadOm0rx586Ts7GyxwQ1k8uTJkre3t6RUKqUGDRpIffr00RZrksTrp7LzI9drx0KSJMlw9/OIiIiIqLrMog0bERERkTljwUZERERk5FiwERERERk5FmxERERERo4FGxEREZGRY8FGREREZORYsBEREREZORZsREREREaOBRsRERGRkWPBRkRERGTkWLARERERGTkWbERERERGjgUbERERkZFjwUZERERk5FiwERERERk5FmxERERERo4FGxEREZGRY8FGREREZORYsBEREREZORZsREREREaOBRsRERGRkWPBRkRERGTkWLARERERGTkWbERERERGjgUbERERkZFjwUZERERk5FiwERERERk5FmxERERERo4FGxEREZGRY8FGREREZORYsBEREREZORZsREREREaOBRsRERGRkWPBRkRERGTkWLARERERGTkWbERERERGjgUbERERkZFjwUZERERk5FiwERERERk5FmxERERERo4FGxEREZGRY8FGREREZOQsRQcwFI1Gg7S0NNjZ2cHCwkJ0HCIiIjJzkiThwYMHUKlUUCie7B6ZbAq2tLQ0eHp6io5BREREMnP79m14eHg80T5kU7DZ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\n", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "fig, axes = plt.subplots(nrows=n_components, ncols=1, figsize=(20, n_components*5))\n", - "for molIdx, ax in zip(range(n_components), axes):\n", - " molIdxs = [i for i in range(len(component_list)) if component_list[i] == molIdx]\n", - " print(molIdx, molIdxs)\n", - " plot_atoms(mol[molIdxs], ax=ax)" - ] - }, - { - "cell_type": "code", - "execution_count": 25, - "id": "09c3e83d-a749-4681-a739-df3826050217", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "C 0.73 0.76\n" - ] - } - ], - "source": [ - "from ase.data import covalent_radii, atomic_numbers\n", - "from cell2mol.elementdata import ElementData\n", - "elementdatabase = ElementData()\n", - "\n", - "for k, v in atomic_numbers.items() :\n", - " if k in elementdatabase.CovalentRadius3.keys():\n", - " if elementdatabase.CovalentRadius3[k] != covalent_radii[v] :\n", - " print(k, elementdatabase.CovalentRadius3[k], covalent_radii[v])" - ] - }, - { - "cell_type": "markdown", - "id": "e6b74f52-150d-46c3-8780-dd70607db352", - "metadata": {}, - "source": [ - "# Generate newcell" - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "id": "3d143023-95c5-4124-9098-a873ae9b6ac6", - "metadata": {}, - "outputs": [], - "source": [ - "from cell2mol.classes import cell\n", - "newcell = cell(name, cell_labels, cell_pos, cell_fracs, cell_vector, cell_param)\n", - "newcell.get_subtype(\"unit_cell\")" - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "id": "c491916a-f2cf-4ae2-a768-a6c7b4724578", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "------------- Cell2mol CELL Object ----------------\n", - " Version = 2.0\n", - " Type = cell\n", - " Sub-Type = unit_cell\n", - " Name (Refcode) = BOFFOS\n", - " Num Atoms = 525\n", - " Cell Parameters a:c = [24.369, 24.369, 9.748]\n", - " Cell Parameters al:ga = [90.0, 90.0, 120.0]\n", - "---------------------------------------------------" - ] - }, - "execution_count": 21, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "newcell" - ] - }, - { - "cell_type": "code", - "execution_count": 22, - "id": "b5bfc325-a774-45ed-83dc-debe1f5d8741", - "metadata": {}, - "outputs": [], - "source": [ - "debug = 2" - ] - }, - { - "cell_type": "code", - "execution_count": 23, - "id": "9a248c4f-96e8-4fe6-b895-3c44f80760af", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "#########################################\n", - " GETREFS: Generate reference molecules \n", - "#########################################\n", - "GETREFS: found 10 reference molecules\n", - "GETREFS: ['C6-O12-Fe', 'H24-C12-O6', 'H2-O', 'H2-O', 'H2-O', 'H24-C12-O6', 'H24-C12-O6', 'K', 'K', 'K']\n", - "GETREFS: [------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 19\n", - " Formula = C6-O12-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 MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 42\n", - " Formula = H24-C12-O6\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 42\n", - " Formula = H24-C12-O6\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 42\n", - " Formula = H24-C12-O6\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = K\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = K\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = K\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - "]\n", - "GETREFS: working with C6-O12-Fe\n", - "GETREFS: working with H24-C12-O6\n", - "GETREFS: working with H2-O\n", - "GETREFS: working with H2-O\n", - "GETREFS: working with H2-O\n", - "GETREFS: working with H24-C12-O6\n", - "GETREFS: working with H24-C12-O6\n", - "GETREFS: working with K\n", - "GETREFS: working with K\n", - "GETREFS: working with K\n" - ] - }, - { - "data": { - "text/plain": [ - "[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 19\n", - " Formula = C6-O12-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 MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 42\n", - " Formula = H24-C12-O6\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 42\n", - " Formula = H24-C12-O6\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 42\n", - " Formula = H24-C12-O6\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = K\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = K\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = K\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " ---------------------------------------------------]" - ] - }, - "execution_count": 23, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "newcell.get_reference_molecules(ref_labels, ref_fracs, debug=0)" - ] - }, - { - "cell_type": "code", - "execution_count": 25, - "id": "5ae9ec3f-d82b-4f6e-bc21-291faa0c64ac", - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[------------- Cell2mol CELL Object ----------------\n", - " Version = 2.0\n", - " Type = cell\n", - " Sub-Type = unit_cell\n", - " Name (Refcode) = BOFFOS\n", - " Num Atoms = 525\n", - " Cell Parameters a:c = [24.369, 24.369, 9.748]\n", - " Cell Parameters al:ga = [90.0, 90.0, 120.0]\n", - "---------------------------------------------------\n", - " # of Ref Molecules: = 10\n", - " With Formulae: \n", - " 0: C6-O12-Fe \n", - " 1: H24-C12-O6 \n", - " 2: H2-O \n", - " 3: H2-O \n", - " 4: H2-O \n", - " 5: H24-C12-O6 \n", - " 6: H24-C12-O6 \n", - " 7: K \n", - " 8: K \n", - " 9: K \n", - ", ------------- Cell2mol CELL Object ----------------\n", - " Version = 2.0\n", - " Type = cell\n", - " Sub-Type = reference\n", - " Name (Refcode) = BOFFOS\n", - " Num Atoms = 157\n", - " Cell Parameters a:c = [24.369, 24.369, 9.748]\n", - " Cell Parameters al:ga = [90.0, 90.0, 120.0]\n", - "---------------------------------------------------\n", - "]\n", - "[------------- Cell2mol CELL Object ----------------\n", - " Version = 2.0\n", - " Type = cell\n", - " Sub-Type = unit_cell\n", - " Name (Refcode) = BOFFOS\n", - " Num Atoms = 525\n", - " Cell Parameters a:c = [24.369, 24.369, 9.748]\n", - " Cell Parameters al:ga = [90.0, 90.0, 120.0]\n", - "---------------------------------------------------\n", - " # of Ref Molecules: = 10\n", - " With Formulae: \n", - " 0: C6-O12-Fe \n", - " 1: H24-C12-O6 \n", - " 2: H2-O \n", - " 3: H2-O \n", - " 4: H2-O \n", - " 5: H24-C12-O6 \n", - " 6: H24-C12-O6 \n", - " 7: K \n", - " 8: K \n", - " 9: K \n", - ", ------------- Cell2mol CELL Object ----------------\n", - " Version = 2.0\n", - " Type = cell\n", - " Sub-Type = reference\n", - " Name (Refcode) = BOFFOS\n", - " Num Atoms = 157\n", - " Cell Parameters a:c = [24.369, 24.369, 9.748]\n", - " Cell Parameters al:ga = [90.0, 90.0, 120.0]\n", - "---------------------------------------------------\n", - "]\n", - "[------------- Cell2mol CELL Object ----------------\n", - " Version = 2.0\n", - " Type = cell\n", - " Sub-Type = unit_cell\n", - " Name (Refcode) = BOFFOS\n", - " Num Atoms = 525\n", - " Cell Parameters a:c = [24.369, 24.369, 9.748]\n", - " Cell Parameters al:ga = [90.0, 90.0, 120.0]\n", - "---------------------------------------------------\n", - " # of Ref Molecules: = 10\n", - " With Formulae: \n", - " 0: C6-O12-Fe \n", - " 1: H24-C12-O6 \n", - " 2: H2-O \n", - " 3: H2-O \n", - " 4: H2-O \n", - " 5: H24-C12-O6 \n", - " 6: H24-C12-O6 \n", - " 7: K \n", - " 8: K \n", - " 9: K \n", - ", ------------- Cell2mol CELL Object ----------------\n", - " Version = 2.0\n", - " Type = cell\n", - " Sub-Type = reference\n", - " Name (Refcode) = BOFFOS\n", - " Num Atoms = 157\n", - " Cell Parameters a:c = [24.369, 24.369, 9.748]\n", - " Cell Parameters al:ga = [90.0, 90.0, 120.0]\n", - "---------------------------------------------------\n", - "]\n", - "[------------- Cell2mol CELL Object ----------------\n", - " Version = 2.0\n", - " Type = cell\n", - " Sub-Type = unit_cell\n", - " Name (Refcode) = BOFFOS\n", - " Num Atoms = 525\n", - " Cell Parameters a:c = [24.369, 24.369, 9.748]\n", - " Cell Parameters al:ga = [90.0, 90.0, 120.0]\n", - "---------------------------------------------------\n", - " # of Ref Molecules: = 10\n", - " With Formulae: \n", - " 0: C6-O12-Fe \n", - " 1: H24-C12-O6 \n", - " 2: H2-O \n", - " 3: H2-O \n", - " 4: H2-O \n", - " 5: H24-C12-O6 \n", - " 6: H24-C12-O6 \n", - " 7: K \n", - " 8: K \n", - " 9: K \n", - ", ------------- Cell2mol CELL Object ----------------\n", - " Version = 2.0\n", - " Type = cell\n", - " Sub-Type = reference\n", - " Name (Refcode) = BOFFOS\n", - " Num Atoms = 157\n", - " Cell Parameters a:c = [24.369, 24.369, 9.748]\n", - " Cell Parameters al:ga = [90.0, 90.0, 120.0]\n", - "---------------------------------------------------\n", - "]\n", - "[------------- Cell2mol CELL Object ----------------\n", - " Version = 2.0\n", - " Type = cell\n", - " Sub-Type = unit_cell\n", - " Name (Refcode) = BOFFOS\n", - " Num Atoms = 525\n", - " Cell Parameters a:c = [24.369, 24.369, 9.748]\n", - " Cell Parameters al:ga = [90.0, 90.0, 120.0]\n", - "---------------------------------------------------\n", - " # of Ref Molecules: = 10\n", - " With Formulae: \n", - " 0: C6-O12-Fe \n", - " 1: H24-C12-O6 \n", - " 2: H2-O \n", - " 3: H2-O \n", - " 4: H2-O \n", - " 5: H24-C12-O6 \n", - " 6: H24-C12-O6 \n", - " 7: K \n", - " 8: K \n", - " 9: K \n", - ", ------------- Cell2mol CELL Object ----------------\n", - " Version = 2.0\n", - " Type = cell\n", - " Sub-Type = reference\n", - " Name (Refcode) = BOFFOS\n", - " Num Atoms = 157\n", - " Cell Parameters a:c = [24.369, 24.369, 9.748]\n", - " Cell Parameters al:ga = [90.0, 90.0, 120.0]\n", - "---------------------------------------------------\n", - "]\n", - "[------------- Cell2mol CELL Object ----------------\n", - " Version = 2.0\n", - " Type = cell\n", - " Sub-Type = unit_cell\n", - " Name (Refcode) = BOFFOS\n", - " Num Atoms = 525\n", - " Cell Parameters a:c = [24.369, 24.369, 9.748]\n", - " Cell Parameters al:ga = [90.0, 90.0, 120.0]\n", - "---------------------------------------------------\n", - " # of Ref Molecules: = 10\n", - " With Formulae: \n", - " 0: C6-O12-Fe \n", - " 1: H24-C12-O6 \n", - " 2: H2-O \n", - " 3: H2-O \n", - " 4: H2-O \n", - " 5: H24-C12-O6 \n", - " 6: H24-C12-O6 \n", - " 7: K \n", - " 8: K \n", - " 9: K \n", - ", ------------- Cell2mol CELL Object ----------------\n", - " Version = 2.0\n", - " Type = cell\n", - " Sub-Type = reference\n", - " Name (Refcode) = BOFFOS\n", - " Num Atoms = 157\n", - " Cell Parameters a:c = [24.369, 24.369, 9.748]\n", - " Cell Parameters al:ga = [90.0, 90.0, 120.0]\n", - "---------------------------------------------------\n", - "]\n", - "[------------- Cell2mol CELL Object ----------------\n", - " Version = 2.0\n", - " Type = cell\n", - " Sub-Type = unit_cell\n", - " Name (Refcode) = BOFFOS\n", - " Num Atoms = 525\n", - " Cell Parameters a:c = [24.369, 24.369, 9.748]\n", - " Cell Parameters al:ga = [90.0, 90.0, 120.0]\n", - "---------------------------------------------------\n", - " # of Ref Molecules: = 10\n", - " With Formulae: \n", - " 0: C6-O12-Fe \n", - " 1: H24-C12-O6 \n", - " 2: H2-O \n", - " 3: H2-O \n", - " 4: H2-O \n", - " 5: H24-C12-O6 \n", - " 6: H24-C12-O6 \n", - " 7: K \n", - " 8: K \n", - " 9: K \n", - ", ------------- Cell2mol CELL Object ----------------\n", - " Version = 2.0\n", - " Type = cell\n", - " Sub-Type = reference\n", - " Name (Refcode) = BOFFOS\n", - " Num Atoms = 157\n", - " Cell Parameters a:c = [24.369, 24.369, 9.748]\n", - " Cell Parameters al:ga = [90.0, 90.0, 120.0]\n", - "---------------------------------------------------\n", - "]\n", - "[------------- Cell2mol CELL Object ----------------\n", - " Version = 2.0\n", - " Type = cell\n", - " Sub-Type = unit_cell\n", - " Name (Refcode) = BOFFOS\n", - " Num Atoms = 525\n", - " Cell Parameters a:c = [24.369, 24.369, 9.748]\n", - " Cell Parameters al:ga = [90.0, 90.0, 120.0]\n", - "---------------------------------------------------\n", - " # of Ref Molecules: = 10\n", - " With Formulae: \n", - " 0: C6-O12-Fe \n", - " 1: H24-C12-O6 \n", - " 2: H2-O \n", - " 3: H2-O \n", - " 4: H2-O \n", - " 5: H24-C12-O6 \n", - " 6: H24-C12-O6 \n", - " 7: K \n", - " 8: K \n", - " 9: K \n", - ", ------------- Cell2mol CELL Object ----------------\n", - " Version = 2.0\n", - " Type = cell\n", - " Sub-Type = reference\n", - " Name (Refcode) = BOFFOS\n", - " Num Atoms = 157\n", - " Cell Parameters a:c = [24.369, 24.369, 9.748]\n", - " Cell Parameters al:ga = [90.0, 90.0, 120.0]\n", - "---------------------------------------------------\n", - "]\n", - "[------------- Cell2mol CELL Object ----------------\n", - " Version = 2.0\n", - " Type = cell\n", - " Sub-Type = unit_cell\n", - " Name (Refcode) = BOFFOS\n", - " Num Atoms = 525\n", - " Cell Parameters a:c = [24.369, 24.369, 9.748]\n", - " Cell Parameters al:ga = [90.0, 90.0, 120.0]\n", - "---------------------------------------------------\n", - " # of Ref Molecules: = 10\n", - " With Formulae: \n", - " 0: C6-O12-Fe \n", - " 1: H24-C12-O6 \n", - " 2: H2-O \n", - " 3: H2-O \n", - " 4: H2-O \n", - " 5: H24-C12-O6 \n", - " 6: H24-C12-O6 \n", - " 7: K \n", - " 8: K \n", - " 9: K \n", - ", ------------- Cell2mol CELL Object ----------------\n", - " Version = 2.0\n", - " Type = cell\n", - " Sub-Type = reference\n", - " Name (Refcode) = BOFFOS\n", - " Num Atoms = 157\n", - " Cell Parameters a:c = [24.369, 24.369, 9.748]\n", - " Cell Parameters al:ga = [90.0, 90.0, 120.0]\n", - "---------------------------------------------------\n", - "]\n", - "[------------- Cell2mol CELL Object ----------------\n", - " Version = 2.0\n", - " Type = cell\n", - " Sub-Type = unit_cell\n", - " Name (Refcode) = BOFFOS\n", - " Num Atoms = 525\n", - " Cell Parameters a:c = [24.369, 24.369, 9.748]\n", - " Cell Parameters al:ga = [90.0, 90.0, 120.0]\n", - "---------------------------------------------------\n", - " # of Ref Molecules: = 10\n", - " With Formulae: \n", - " 0: C6-O12-Fe \n", - " 1: H24-C12-O6 \n", - " 2: H2-O \n", - " 3: H2-O \n", - " 4: H2-O \n", - " 5: H24-C12-O6 \n", - " 6: H24-C12-O6 \n", - " 7: K \n", - " 8: K \n", - " 9: K \n", - ", ------------- Cell2mol CELL Object ----------------\n", - " Version = 2.0\n", - " Type = cell\n", - " Sub-Type = reference\n", - " Name (Refcode) = BOFFOS\n", - " Num Atoms = 157\n", - " Cell Parameters a:c = [24.369, 24.369, 9.748]\n", - " Cell Parameters al:ga = [90.0, 90.0, 120.0]\n", - "---------------------------------------------------\n", - "]\n" - ] - } - ], - "source": [ - "for ref in newcell.refmoleclist:\n", - " print(ref.parents)" - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "id": "43d362b3-ba55-4648-8e80-2db3eacf19d9", - "metadata": {}, - "outputs": [], - "source": [ - "import itertools\n", - "from new_reconstruction import *\n", - "from cell2mol.other import get_dist" - ] - }, - { - "cell_type": "code", - "execution_count": 26, - "id": "bdcab19a-34cd-4a28-a501-44182f240765", - "metadata": {}, - "outputs": [], - "source": [ - "def merge_fragments_test(frags: list, cell_vector: list, cov_factor: float=1.3, metal_factor: float=1.0, debug: int=0):\n", - "\n", - " #finds biggest fragment and keeps it in the original cell\n", - " sizes = []\n", - " for f in frags:\n", - " size = f.natoms\n", - " sizes.append(size)\n", - " keep_idx = np.argmax(sizes)\n", - " if keep_idx == 0: move_idx = 1\n", - " elif keep_idx == 1: move_idx = 0\n", - " keep_frag = frags[keep_idx]\n", - " move_frag = frags[move_idx]\n", - " if debug > 0: print(\"MERGE_FRAGMENTS: keep_idx\", keep_idx)\n", - " if debug > 0: print(\"MERGE_FRAGMENTS: move_idx\", move_idx)\n", - "\n", - " move_frag.get_centroid()\n", - " move_frag.tmatrix = tmatgenerator(move_frag.frac_centroid)\n", - " \n", - " if len(move_frag.tmatrix) == 0: return None\n", - "\n", - " for t in move_frag.tmatrix:\n", - " if debug > 0: print(\"MERGE_FRAGMENTS: translation\", t)\n", - " ## Applies Translations and each time, it checks if a bigger molecule is formed\n", - " ## meaning that the translation was successful\n", - " reclabels = []\n", - " reclabels.extend(keep_frag.labels)\n", - " reclabels.extend(move_frag.labels)\n", - " reccoord = []\n", - " reccoord.extend(keep_frag.coord)\n", - " if t == (0, 0, 0): reccoord.extend(move_frag.coord)\n", - " else: reccoord.extend(translate(t, move_frag.coord, cell_vector))\n", - " rec_ref_indices = []\n", - " rec_ref_indices.extend(keep_frag.ref_indices)\n", - " rec_ref_indices.extend(move_frag.ref_indices)\n", - "\n", - " recfracs = []\n", - " recfracs.extend(keep_frag.frac_coord)\n", - " recfracs.extend(move_frag.frac_coord)\n", - " \n", - " numspecs = count_species(reclabels, reccoord, cov_factor=cov_factor, debug=debug)\n", - " \n", - " if debug > 0: print(\"MERGE_FRAGMENTS: count_species found\", numspecs)\n", - " if numspecs != 1: continue\n", - " blocklist = split_species(reclabels, reccoord, cov_factor=cov_factor, debug=debug)\n", - " if blocklist is None: continue\n", - " else:\n", - " if len(blocklist) != 1: continue\n", - " if len(blocklist) == 1: \n", - " newmolec = molecule(reclabels, reccoord, recfracs)\n", - " newmolec.origin = \"cell.reconstruct\"\n", - " newmolec.ref_indices = rec_ref_indices\n", - " newmolec.set_adjacency_parameters(cov_factor, metal_factor)\n", - " newmolec.set_adj_types()\n", - " newmolec.set_element_count()\n", - " newmolec.get_adjmatrix()\n", - " newmolec.get_centroid()\n", - " newmolec.get_metal_adjmatrix()\n", - " return newmolec\n", - " return None" - ] - }, - { - "cell_type": "code", - "execution_count": 27, - "id": "ce59027a-8494-4b3f-ab58-e4b80243cfa1", - "metadata": {}, - "outputs": [], - "source": [ - "def fragments_reconstruct_test(subset_remaining_fragments, target_ref, cell_vector, debug: int=0):\n", - " \n", - " list_of_found_molecules = [] \n", - " final_remaining = subset_remaining_fragments.copy()\n", - " \n", - " count = 0\n", - " while (len(final_remaining) > 0):\n", - " print(\"final_remaining\", [k.formula for k in final_remaining], [k.subtype for k in final_remaining])\n", - " \n", - " tobemerged = final_remaining[:2]\n", - " rest = final_remaining[2:]\n", - " \n", - " print(\"Fragments TO BE MERGED\", [k.formula for k in tobemerged], [k.subtype for k in tobemerged])\n", - " print(\"Rest fragments\",[k.formula for k in rest],[k.subtype for k in rest])\n", - " \n", - " found_molecule =[]\n", - " bigger_fragment = []\n", - " not_merged = [] \n", - " newmolec = merge_fragments_test(tobemerged, cell_vector, debug=debug)\n", - "\n", - " if newmolec is None: \n", - " print(\"NOT MERGED\", tobemerged[0].formula, tobemerged[1].formula)\n", - " not_merged.append(tobemerged[0])\n", - " not_merged.append(tobemerged[1])\n", - "\n", - " else :\n", - " print(\"MERGED\", newmolec.formula)\n", - " small_set = set(newmolec.ref_indices)\n", - " print(f\"{small_set=}\")\n", - " if small_set.issubset(target_ref): \n", - " if sorted(small_set) == target_ref:\n", - " newmolec.subtype = \"molecule\"\n", - " found_molecule.append(newmolec)\n", - " else :\n", - " newmolec.subtype = \"Rec. Fragment\"\n", - " bigger_fragment.append(newmolec)\n", - " \n", - " print(f\"{len(found_molecule)=}\")\n", - " print(f\"{len(bigger_fragment)=}\")\n", - " print(f\"{len(not_merged)=}\")\n", - " \n", - " if len(not_merged) == 2:\n", - " final_remaining = []\n", - " final_remaining.append(tobemerged[0])\n", - " final_remaining.extend(rest)\n", - " final_remaining.append(tobemerged[1])\n", - " \n", - " elif len(found_molecule) == 1 :\n", - " list_of_found_molecules.append(newmolec)\n", - " final_remaining = []\n", - " final_remaining.extend(rest)\n", - " elif len(bigger_fragment) == 1 :\n", - " final_remaining = []\n", - " final_remaining.append(newmolec)\n", - " final_remaining.extend(rest)\n", - " \n", - " count +=1\n", - " \n", - " if len(final_remaining) == 0:\n", - " print(f\"{count=}\")\n", - " break\n", - " \n", - " return list_of_found_molecules, final_remaining" - ] - }, - { - "cell_type": "code", - "execution_count": 34, - "id": "91902b5b-b8a6-41d4-99ac-279d35160649", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "**********\n", - "157 157\n", - "157\n", - "False\n" - ] - }, - { - "ename": "TypeError", - "evalue": "'NoneType' object is not iterable", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)", - "Input \u001b[0;32mIn [34]\u001b[0m, in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 22\u001b[0m \u001b[38;5;66;03m# #### make blocks and get fragments ####\u001b[39;00m\n\u001b[1;32m 23\u001b[0m fragments \u001b[38;5;241m=\u001b[39m get_fragments (newcell, updated, indices_in_ref, debug\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m0\u001b[39m) \n\u001b[0;32m---> 24\u001b[0m molecules, remaining_fragments \u001b[38;5;241m=\u001b[39m \u001b[43mclassify_fragments\u001b[49m\u001b[43m(\u001b[49m\u001b[43mfragments\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mnewcell\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mdebug\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;241;43m0\u001b[39;49m\u001b[43m)\u001b[49m\n\u001b[1;32m 25\u001b[0m all_molecules\u001b[38;5;241m.\u001b[39mextend(molecules)\n\u001b[1;32m 27\u001b[0m \u001b[38;5;66;03m# Grouping remaining fragments for reconstruction\u001b[39;00m\n", - "File \u001b[0;32m~/cell2mol/cell2mol/test/new_reconstruction.py:94\u001b[0m, in \u001b[0;36mclassify_fragments\u001b[0;34m(fragments, newcell, debug)\u001b[0m\n\u001b[1;32m 92\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m idx, ref \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28menumerate\u001b[39m(newcell\u001b[38;5;241m.\u001b[39mrefmoleclist):\n\u001b[1;32m 93\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m (ref\u001b[38;5;241m.\u001b[39mnatoms \u001b[38;5;241m==\u001b[39m frag\u001b[38;5;241m.\u001b[39mnatoms) \u001b[38;5;241m&\u001b[39m (ref\u001b[38;5;241m.\u001b[39mformula \u001b[38;5;241m==\u001b[39m frag\u001b[38;5;241m.\u001b[39mformula):\n\u001b[0;32m---> 94\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m (\u001b[38;5;28;43msorted\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43mref\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget_parent_indices\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mrefcell\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m)\u001b[49m\u001b[43m)\u001b[49m \u001b[38;5;241m==\u001b[39m \u001b[38;5;28msorted\u001b[39m(frag\u001b[38;5;241m.\u001b[39mref_indices)):\n\u001b[1;32m 95\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m debug \u001b[38;5;241m>\u001b[39m\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m1\u001b[39m : \n\u001b[1;32m 96\u001b[0m \u001b[38;5;28mprint\u001b[39m(frag\u001b[38;5;241m.\u001b[39mformula, frag\u001b[38;5;241m.\u001b[39mref_indices, frag\u001b[38;5;241m.\u001b[39mfrac_coord, \\\n\u001b[1;32m 97\u001b[0m \u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mequivalent to Ref \u001b[39m\u001b[38;5;132;01m{\u001b[39;00midx\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mref\u001b[38;5;241m.\u001b[39mformula\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m\"\u001b[39m)\n", - "\u001b[0;31mTypeError\u001b[0m: 'NoneType' object is not iterable" - ] - } - ], - "source": [ - "from new_reconstruction import *\n", - "from cell2mol.other import get_dist\n", - "all_found = []\n", - "all_molecules = []\n", - "debug = 2\n", - "reconstructed_molecules = []\n", - "for new in new_structures:\n", - " print(\"**********\")\n", - " found_indices, found_rows = find_row_indices(cell_pos, new.positions)\n", - " print(len(found_indices), len(found_rows))\n", - " \n", - " updated = [i for i in found_indices if i not in all_found]\n", - "\n", - " new_fracs = new.get_scaled_positions()\n", - " new_labels = new.get_chemical_symbols()\n", - " indices_in_ref = [ find_row_index_from_matrix(new_fracs, cell_fracs[u]) for u in updated ]\n", - " # print(f\"{indices_in_ref=}\")\n", - " all_found.extend(updated)\n", - " print(len(all_found))\n", - " print(len(all_found) == len(cell_pos))# If Ture, stop\n", - "\n", - " # #### make blocks and get fragments ####\n", - " fragments = get_fragments (newcell, updated, indices_in_ref, debug=0) \n", - " molecules, remaining_fragments = classify_fragments(fragments, newcell, debug=0)\n", - " all_molecules.extend(molecules)\n", - "\n", - " # Grouping remaining fragments for reconstruction\n", - " grouped_lists = [[] for _ in range(len(newcell.refmoleclist))]\n", - " \n", - " for i, ref in enumerate(newcell.refmoleclist):\n", - " target_set = set(ref.get_parent_indices(\"refcell\"))\n", - " for j, rem_frag in enumerate(remaining_fragments):\n", - " small_set = set(rem_frag.ref_indices)\n", - " if small_set.issubset(target_set):\n", - " # if debug >=1 : print(f\"{j} {rem_frag.formula} is a subset of target_set {i} {ref.formula}\")\n", - " grouped_lists[i].append(rem_frag)\n", - "\n", - " for i, group in enumerate(grouped_lists):\n", - " if len(group) > 0:\n", - " \n", - " # group[0] : a biggest fragment within the group\n", - " \n", - " # dist = np.array([get_dist(rem.frac_centroid, [0.5, 0.5, 0.5]) for rem in group])\n", - " # dist = np.array([get_dist(rem.frac_centroid, group[0].frac_centroid) for rem in group])\n", - " # dist = np.array([get_dist(rem.centroid, group[0].centroid) for rem in group])\n", - "\n", - " # dist = np.array([get_dist(rem.frac_centroid, [0.5, 0.5, 0.5]) for rem in group])\n", - " # sorted_group = [ group[k] for k in np.argsort(dist) ] \n", - " \n", - " # fig, axes = plt.subplots(nrows=len(dist), ncols=1, figsize=(10, len(dist)*5))\n", - " \n", - " # for k, ax in zip(np.argsort(dist), axes):\n", - " # rem = group[k]\n", - " # distance = dist[k]\n", - " # plot_atoms(Atoms(symbols=rem.labels, scaled_positions=rem.frac_coord, cell=cell_vector, pbc=True), ax=ax)\n", - " # ax.set_title(f\"{i} {newcell.refmoleclist[i].formula} / {rem.formula} ({distance})\")\n", - " \n", - " if debug >=1 :\n", - " print(f\"target_ref: {newcell.refmoleclist[i].formula}\")\n", - " print(f\"Group {i}: {[rem.formula for rem in group]}\")\n", - " # print(\"Remaining_fragments unit cell center:\", [get_dist(rem.frac_centroid, [0.5, 0.5, 0.5]) for rem in group]) \n", - " # print(\"Remaining_fragments frac_centroid:\", [get_dist(rem.frac_centroid, group[0].frac_centroid) for rem in group]) \n", - " # print(\"Remaining_fragments centroid:\", [get_dist(rem.centroid, group[0].centroid) for rem in group]) \n", - " \n", - " target_ref = newcell.refmoleclist[i].get_parent_indices(\"refcell\")\n", - " list_of_found_molecules, final_remaining = fragments_reconstruct_test(group, target_ref, cell_vector, debug=0)\n", - " print(f\"{list_of_found_molecules=}\")\n", - " reconstructed_molecules.extend(list_of_found_molecules)\n", - " # TODO : get charge, spin, bond, rdkit information from reference\n", - " \n", - " if len(final_remaining) > 0 :\n", - " Warning = True\n", - " elif len(final_remaining) == 0 :\n", - " Warning = False \n", - " \n", - " # smaller_lists = [rem_frag.ref_indices for rem_frag in remaining_fragments]\n", - "\n", - " # target_sets = [set(ref.get_parent_indices(\"cell\")) for ref in newcell.refmoleclist]\n", - " \n", - " # print(f\"{smaller_lists=}\")\n", - " # print(f\"{target_sets=}\")\n", - " # for i, target_set in enumerate(target_sets):\n", - " # for j, small_list in enumerate(smaller_lists):\n", - " # small_set = set(small_list)\n", - " # if small_set.issubset(target_set):\n", - " # if debug >=1 : print(f\"{j} {small_set} is a subset of target_set {target_set} {newcell.refmoleclist[i].formula}\")\n", - "\n", - " \n", - " # grouped_rem_frags, indices_of_rem_frags, target_idx_lists = grouping_smaller_lists_for_target_sets(target_sets, smaller_lists, debug=0)\n", - " # print(f\"{indices_of_rem_frags=}\")\n", - " # print(f\"{target_idx_lists=}\")\n", - " # smaller_lists.sort(key=len, reverse=True)\n", - " # print(f\"{smaller_lists=}\")\n", - " \n", - " # grouped_rem_frags, indices_from_rem_frags, indices_of_target_ref = grouping_remaining_fragments(remaining_fragments, not_found_list, newcell, debug=debug)\n", - " # print(f\"{grouped_rem_frags=} {indices_from_rem_frags=}\")\n", - " # all_found_molecules = []\n", - " # for indices, target_ref in zip(indices_from_rem_frags, indices_of_target_ref):\n", - " # subset_remaining_fragments = [ remaining_fragments[idx] for idx in indices]\n", - " # list_of_found_molecules, final_remaining = find_molecule_from_subset_rem_frags(subset_remaining_fragments, target_ref, cell_vector, debug=0)\n", - " # reconstructed_molecules.extend(list_of_found_molecules)\n", - " \n", - " # if len(final_remaining) > 0 :\n", - " # Warning = True\n", - " # elif len(final_remaining) == 0 :\n", - " # Warning = False \n", - " # if len(all_found) == 157:\n", - " \n", - " if len(all_found) == len(cell_pos):\n", - " break\n", - "# all_molecules.extend(reconstructed_molecules)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "4ce97980-08e2-4fd2-b562-8de102fc32c2", - "metadata": {}, - "outputs": [], - "source": [ - "all_molecules" - ] - }, - { - "cell_type": "code", - "execution_count": 73, - "id": "6432696b-497e-491b-8907-f6fc3f62ad99", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "H2-O\n", - "H2-O\n", - "K\n", - "K\n", - "K\n", - "H2-O\n", - "H2-O\n", - "H2-O\n", - "H2-O\n", - "C6-O12-Fe\n", - "H2-O\n", - "H2-O\n", - "K\n", - "K\n", - "K\n", - "H2-O\n", - "H2-O\n", - "H2-O\n", - "H2-O\n", - "H2-O\n", - "H2-O\n", - "H2-O\n", - "K\n", - "K\n", - "K\n", - "H2-O\n", - "H2-O\n", - "H2-O\n", - "H2-O\n", - "H2-O\n" - ] - } - ], - "source": [ - "combined_mol = Atoms(cell=cell_vector, pbc=True)\n", - "for k in all_molecules:\n", - " print(k.formula)\n", - " mol = Atoms(symbols=k.labels, positions=k.coord, cell=cell_vector, pbc=True)\n", - " combined_mol += mol" - ] - }, - { - "cell_type": "code", - "execution_count": 75, - "id": "70991d34-b2c1-40f0-a437-93b6e02578db", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "C6-O12-Fe\n", - "H24-C12-O6\n", - "H2-O\n", - "H24-C12-O6\n", - "H24-C12-O6\n", - "H2-O\n", - "H2-O\n", - "H24-C12-O6\n", - "H2-O\n", - "H24-C12-O6\n", - "H24-C12-O6\n", - "H2-O\n", - "C6-O12-Fe\n", - "H24-C12-O6\n", - "H2-O\n", - "H24-C12-O6\n", - "H24-C12-O6\n", - "H2-O\n" - ] - } - ], - "source": [ - "for k in reconstructed_molecules:\n", - " print(k.formula)\n", - " mol = Atoms(symbols=k.labels, positions=k.coord, cell=cell_vector, pbc=True)\n", - " combined_mol += mol" - ] - }, - { - "cell_type": "code", - "execution_count": 76, - "id": "0a252c2b-187c-46b6-a834-1039b837a17d", - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "3865c032bfa64f0292baed43127cb782", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "NGLWidget()" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "view_nglview(combined_mol)" - ] - }, - { - "cell_type": "code", - "execution_count": 77, - "id": "3f76ba30-eeef-4031-bdc0-70244eeba8ad", - "metadata": {}, - "outputs": [], - "source": [ - "combined_mol.write(f\"{folder}/{name}/reconstructed_positions_{name}.xyz\")" - ] - }, - { - "cell_type": "code", - "execution_count": 78, - "id": "8664bab2-6958-42d9-b94f-0e5d8c6dbc60", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[]" - ] - }, - "execution_count": 78, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "final_remaining" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "cell2mol", - "language": "python", - "name": "cell2mol" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.10.6" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/cell2mol/test/Untitled.ipynb b/cell2mol/test/Untitled.ipynb deleted file mode 100644 index ca0be0daa..000000000 --- a/cell2mol/test/Untitled.ipynb +++ /dev/null @@ -1,659 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 1, - "id": "f1008e37", - "metadata": {}, - "outputs": [], - "source": [ - "import cif2cell\n", - "import pymatgen" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "ca359f55", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "/Users/ycho/cell2mol/cell2mol/test\r\n" - ] - } - ], - "source": [ - "! pwd" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "b733f7d6", - "metadata": {}, - "outputs": [], - "source": [ - "help(cif2cell)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "07dadcde", - "metadata": { - "scrolled": false - }, - "outputs": [], - "source": [ - "! cif2cell --h" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "d6f5794d", - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "f9b7366f", - "metadata": {}, - "outputs": [], - "source": [ - "from pymatgen.io.cif import CifParser\n" - ] - }, - { - "cell_type": "code", - "execution_count": 25, - "id": "ab96bd87", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Help on class CifParser in module pymatgen.io.cif:\n", - "\n", - "class CifParser(builtins.object)\n", - " | CifParser(filename: 'str | StringIO', occupancy_tolerance: 'float' = 1.0, site_tolerance: 'float' = 0.0001, frac_tolerance: 'float' = 0.0001, check_cif: 'bool' = True, comp_tol: 'float' = 0.01) -> 'None'\n", - " | \n", - " | Parses a CIF file. Attempts to fix CIFs that are out-of-spec, but will issue warnings\n", - " | if corrections applied. These are also stored in the CifParser's errors attribute.\n", - " | \n", - " | Methods defined here:\n", - " | \n", - " | __init__(self, filename: 'str | StringIO', occupancy_tolerance: 'float' = 1.0, site_tolerance: 'float' = 0.0001, frac_tolerance: 'float' = 0.0001, check_cif: 'bool' = True, comp_tol: 'float' = 0.01) -> 'None'\n", - " | Args:\n", - " | filename (str): CIF filename, gzipped or bzipped CIF files are fine too.\n", - " | occupancy_tolerance (float): If total occupancy of a site is between 1 and occupancy_tolerance, the\n", - " | occupancies will be scaled down to 1.\n", - " | site_tolerance (float): This tolerance is used to determine if two sites are sitting in the same position,\n", - " | in which case they will be combined to a single disordered site. Defaults to 1e-4.\n", - " | frac_tolerance (float): This tolerance is used to determine is a coordinate should be rounded to an ideal\n", - " | value. E.g., 0.6667 is rounded to 2/3. This is desired if symmetry operations are going to be applied.\n", - " | However, for very large CIF files, this may need to be set to 0.\n", - " | check_cif (bool): Whether to check that stoichiometry reported in CIF matches\n", - " | that of resulting Structure, and whether elements are missing. Defaults to True.\n", - " | comp_tol (float): Tolerance for how closely stoichiometries of CIF file and pymatgen should match.\n", - " | Defaults to 0.01. Context: Experimental CIF files often don't report hydrogens positions due to being\n", - " | hard-to-locate with X-rays. pymatgen warns if the stoichiometry of the CIF file and the Structure\n", - " | don't match to within comp_tol.\n", - " | \n", - " | as_dict(self)\n", - " | MSONable dict\n", - " | \n", - " | check(self, structure: 'Structure') -> 'str | None'\n", - " | Check whether a structure constructed from CIF passes sanity checks.\n", - " | \n", - " | Checks:\n", - " | - Composition from CIF is valid\n", - " | - CIF composition contains only valid elements\n", - " | - CIF and structure contain the same elements (often hydrogens\n", - " | are omitted from CIFs, as their positions cannot be determined from\n", - " | X-ray diffraction, needs more difficult neutron diffraction)\n", - " | - CIF and structure have same relative stoichiometry. Thus\n", - " | if CIF reports stoichiometry LiFeO, and the structure has\n", - " | composition (LiFeO)4, this check passes.\n", - " | \n", - " | Args:\n", - " | structure (Structure) : structure created from CIF\n", - " | \n", - " | Returns:\n", - " | str | None: If any check fails, on output, returns a human-readable str for the\n", - " | reason why (e.g., which elements are missing). Returns None if all checks pass.\n", - " | \n", - " | get_bibtex_string(self) -> 'str'\n", - " | Get BibTeX reference from CIF file.\n", - " | \n", - " | args:\n", - " | data:\n", - " | \n", - " | Returns:\n", - " | BibTeX string.\n", - " | \n", - " | get_lattice(self, data, length_strings=('a', 'b', 'c'), angle_strings=('alpha', 'beta', 'gamma'), lattice_type=None)\n", - " | Generate the lattice from the provided lattice parameters. In\n", - " | the absence of all six lattice parameters, the crystal system\n", - " | and necessary parameters are parsed.\n", - " | \n", - " | get_magsymops(self, data)\n", - " | Equivalent to get_symops except for magnetic symmetry groups.\n", - " | Separate function since additional operation for time reversal symmetry\n", - " | (which changes magnetic moments on sites) needs to be returned.\n", - " | \n", - " | get_structures = wrapped(*args, **kwargs)\n", - " | \n", - " | get_symops(self, data)\n", - " | In order to generate symmetry equivalent positions, the symmetry\n", - " | operations are parsed. If the symops are not present, the space\n", - " | group symbol is parsed, and symops are generated.\n", - " | \n", - " | parse_structures(self, primitive: 'bool | None' = None, symmetrized: 'bool' = False, check_occu: 'bool' = True, on_error: \"Literal['ignore', 'warn', 'raise']\" = 'warn') -> 'list[Structure]'\n", - " | Return list of structures in CIF file.\n", - " | \n", - " | Args:\n", - " | primitive (bool): Set to True to return primitive unit cells.\n", - " | Defaults to False. With magnetic CIF files, True will return primitive\n", - " | magnetic cell which may be larger than nuclear primitive cell.\n", - " | symmetrized (bool): If True, return a SymmetrizedStructure which will\n", - " | include the equivalent indices and symmetry operations used to\n", - " | create the Structure as provided by the CIF (if explicit symmetry\n", - " | operations are included in the CIF) or generated from information\n", - " | in the CIF (if only space group labels are provided). Note that\n", - " | currently Wyckoff labels and space group labels or numbers are\n", - " | not included in the generated SymmetrizedStructure, these will be\n", - " | notated as \"Not Parsed\" or -1 respectively.\n", - " | check_occu (bool): If False, site occupancy will not be checked, allowing unphysical\n", - " | occupancy != 1. Useful for experimental results in which occupancy was allowed\n", - " | to refine to unphysical values. Warning: unphysical site occupancies are incompatible\n", - " | with many pymatgen features. Defaults to True.\n", - " | on_error ('ignore' | 'warn' | 'raise'): What to do in case of KeyError or ValueError\n", - " | while parsing CIF file. Defaults to 'warn'.\n", - " | \n", - " | Returns:\n", - " | list[Structure]: All structures in CIF file.\n", - " | \n", - " | ----------------------------------------------------------------------\n", - " | Class methods defined here:\n", - " | \n", - " | from_str(cif_string: 'str', **kwargs) -> 'Self' from builtins.type\n", - " | Creates a CifParser from a string.\n", - " | \n", - " | Args:\n", - " | cif_string (str): String representation of a CIF.\n", - " | **kwargs: Passthrough of all kwargs supported by CifParser.\n", - " | \n", - " | Returns:\n", - " | CifParser\n", - " | \n", - " | ----------------------------------------------------------------------\n", - " | Static methods defined here:\n", - " | \n", - " | get_lattice_no_exception(data, length_strings=('a', 'b', 'c'), angle_strings=('alpha', 'beta', 'gamma'), lattice_type=None)\n", - " | Take a dictionary of CIF data and returns a pymatgen Lattice object.\n", - " | \n", - " | Args:\n", - " | data: a dictionary of the CIF file\n", - " | length_strings: The strings that are used to identify the length parameters in the CIF file.\n", - " | angle_strings: The strings that are used to identify the angles in the CIF file.\n", - " | lattice_type: The type of lattice. This is a string, and can be any of the following:\n", - " | \n", - " | Returns:\n", - " | Lattice object\n", - " | \n", - " | parse_magmoms(data, lattice=None)\n", - " | Parse atomic magnetic moments from data dictionary.\n", - " | \n", - " | parse_oxi_states(data)\n", - " | Parse oxidation states from data dictionary.\n", - " | \n", - " | ----------------------------------------------------------------------\n", - " | Readonly properties defined here:\n", - " | \n", - " | has_errors\n", - " | Whether there are errors/warnings detected in CIF parsing.\n", - " | \n", - " | ----------------------------------------------------------------------\n", - " | Data descriptors defined here:\n", - " | \n", - " | __dict__\n", - " | dictionary for instance variables (if defined)\n", - " | \n", - " | __weakref__\n", - " | list of weak references to the object (if defined)\n", - "\n" - ] - } - ], - "source": [ - "help(CifParser)" - ] - }, - { - "cell_type": "code", - "execution_count": 68, - "id": "161edb7b", - "metadata": {}, - "outputs": [], - "source": [ - "# Step 1: Parse the CIF file\n", - "cif_file = \"AFUGIS/AFUGIS.cif\" # Replace with the path to your CIF file\n", - "parser = CifParser(cif_file)" - ] - }, - { - "cell_type": "code", - "execution_count": 85, - "id": "06b7e724", - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/var/folders/q1/vbq9gpvn2y354rlq_177ltlr0000gn/T/ipykernel_68258/735796837.py:1: FutureWarning: get_structures is deprecated\n", - "get_structures is deprecated and will be removed in 2024. Use parse_structures instead.The only difference is that primitive defaults to False in the new parse_structures method.So parse_structures(primitive=True) is equivalent to the old behavior of get_structures().\n", - " asymmetric_unit_structure = parser.get_structures()[0]\n" - ] - } - ], - "source": [ - "asymmetric_unit_structure = parser.get_structures()[0]" - ] - }, - { - "cell_type": "code", - "execution_count": 88, - "id": "4c2ed2d8", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "Structure Summary\n", - "Lattice\n", - " abc : 10.878 12.781 15.368\n", - " angles : 98.70500000000001 99.605 107.216\n", - " volume : 1966.0612198939482\n", - " A : 10.72550653941314 0.0 -1.815046410703041\n", - " B : -4.163985271996719 11.927841873079336 -1.9343670555015344\n", - " C : 0.0 0.0 15.368\n", - " pbc : True True True\n", - "PeriodicSite: Fe1 (Fe) (-0.001858, 8.605, 9.397) [0.2799, 0.7214, 0.7353]\n", - "PeriodicSite: Fe1 (Fe) (6.563, 3.323, 2.222) [0.7201, 0.2786, 0.2647]\n", - "PeriodicSite: H1 (H) (3.297, 8.912, 8.535) [0.5975, 0.7472, 0.72]\n", - "PeriodicSite: H1 (H) (3.264, 3.015, 3.083) [0.4025, 0.2528, 0.28]\n", - "PeriodicSite: H2 (H) (3.594, 10.28, 10.43) [0.6697, 0.8618, 0.8663]\n", - "PeriodicSite: H2 (H) (2.967, 1.648, 1.188) [0.3303, 0.1382, 0.1337]\n", - "PeriodicSite: H3 (H) (1.733, 11.43, 11.29) [0.5335, 0.958, 0.9183]\n", - "PeriodicSite: H3 (H) (4.829, 0.501, 0.3276) [0.4665, 0.042, 0.0817]\n", - "PeriodicSite: H4 (H) (2.762, 11.13, -2.886) [0.6199, 0.9335, 0.0029]\n", - "PeriodicSite: H4 (H) (3.8, 0.7932, 14.5) [0.3801, 0.0665, 0.9971]\n", - "PeriodicSite: H5 (H) (1.446, 10.24, 12.32) [0.468, 0.8583, 0.9652]\n", - "PeriodicSite: H5 (H) (5.116, 1.69, -0.7049) [0.532, 0.1417, 0.0348]\n", - "PeriodicSite: H6 (H) (4.08, 8.073, 11.21) [0.6432, 0.6768, 0.8903]\n", - "PeriodicSite: H6 (H) (2.481, 3.855, 0.4131) [0.3568, 0.3232, 0.1097]\n", - "PeriodicSite: H7 (H) (2.954, 8.222, 12.33) [0.543, 0.6893, 0.9534]\n", - "PeriodicSite: H7 (H) (3.608, 3.706, -0.7143) [0.457, 0.3107, 0.0466]\n", - "PeriodicSite: H8 (H) (4.264, 9.139, 12.38) [0.695, 0.7662, 0.9844]\n", - "PeriodicSite: H8 (H) (2.298, 2.789, -0.7661) [0.305, 0.2338, 0.0156]\n", - "PeriodicSite: H9 (H) (1.349, 6.975, 6.504) [0.3528, 0.5848, 0.5385]\n", - "PeriodicSite: H9 (H) (5.213, 4.952, 5.114) [0.6472, 0.4152, 0.4615]\n", - "PeriodicSite: H10 (H) (0.2121, 8.871, 5.727) [0.3085, 0.7437, 0.5027]\n", - "PeriodicSite: H10 (H) (6.349, 3.057, 5.892) [0.6915, 0.2563, 0.4973]\n", - "PeriodicSite: H11 (H) (1.359, 8.462, 4.688) [0.4021, 0.7094, 0.4418]\n", - "PeriodicSite: H11 (H) (5.203, 3.466, 6.931) [0.5979, 0.2906, 0.5582]\n", - "PeriodicSite: H12 (H) (1.582, 9.697, 5.68) [0.4631, 0.813, 0.5266]\n", - "PeriodicSite: H12 (H) (4.98, 2.231, 5.939) [0.5369, 0.187, 0.4734]\n", - "PeriodicSite: H13 (H) (3.665, 7.105, 7.028) [0.573, 0.5957, 0.6]\n", - "PeriodicSite: H13 (H) (2.896, 4.822, 4.59) [0.427, 0.4043, 0.4]\n", - "PeriodicSite: H14 (H) (3.718, 8.563, 6.371) [0.6254, 0.7179, 0.5788]\n", - "PeriodicSite: H14 (H) (2.843, 3.365, 5.247) [0.3746, 0.2821, 0.4212]\n", - "PeriodicSite: H15 (H) (3.397, 7.286, 5.462) [0.5539, 0.6108, 0.4977]\n", - "PeriodicSite: H15 (H) (3.164, 4.642, 6.157) [0.4461, 0.3892, 0.5023]\n", - "PeriodicSite: H16 (H) (-2.265, 10.37, 11.98) [0.1265, 0.8698, 0.9038]\n", - "PeriodicSite: H16 (H) (8.827, 1.553, -0.3589) [0.8735, 0.1302, 0.0962]\n", - "PeriodicSite: H17 (H) (1.86, 1.01, 12.86) [0.2063, 0.0847, 0.8718]\n", - "PeriodicSite: H17 (H) (4.702, 10.92, -1.241) [0.7937, 0.9153, 0.1282]\n", - "PeriodicSite: H18 (H) (0.9202, 0.1598, 13.84) [0.091, 0.0134, 0.9129]\n", - "PeriodicSite: H18 (H) (5.641, 11.77, -2.22) [0.909, 0.9866, 0.0871]\n", - "PeriodicSite: H19 (H) (0.2791, 1.262, 12.87) [0.0671, 0.1058, 0.8588]\n", - "PeriodicSite: H19 (H) (6.282, 10.67, -1.253) [0.9329, 0.8942, 0.1412]\n", - "PeriodicSite: H20 (H) (1.403, 0.7872, 10.32) [0.1564, 0.066, 0.6986]\n", - "PeriodicSite: H20 (H) (5.159, 11.14, 1.294) [0.8436, 0.934, 0.3014]\n", - "PeriodicSite: H21 (H) (-0.1623, 0.8982, 10.64) [0.0141, 0.0753, 0.7035]\n", - "PeriodicSite: H21 (H) (6.724, 11.03, 0.9784) [0.9859, 0.9247, 0.2965]\n", - "PeriodicSite: H22 (H) (-3.763, 11.57, 7.885) [0.0259, 0.9703, 0.6383]\n", - "PeriodicSite: H22 (H) (10.32, 0.3543, 3.733) [0.9741, 0.0297, 0.3617]\n", - "PeriodicSite: H23 (H) (6.145, 10.2, 9.251) [0.905, 0.8554, 0.8165]\n", - "PeriodicSite: H23 (H) (0.4168, 1.725, 2.368) [0.095, 0.1446, 0.1835]\n", - "PeriodicSite: H24 (H) (5.947, 9.979, 7.679) [0.8793, 0.8366, 0.7088]\n", - "PeriodicSite: H24 (H) (0.6142, 1.949, 3.94) [0.1207, 0.1634, 0.2912]\n", - "PeriodicSite: H25 (H) (5.309, 11.26, 8.389) [0.8616, 0.9443, 0.7665]\n", - "PeriodicSite: H25 (H) (1.252, 0.6644, 3.229) [0.1384, 0.0557, 0.2335]\n", - "PeriodicSite: H26 (H) (-0.2123, 7.487, -0.7846) [0.2239, 0.6277, 0.0544]\n", - "PeriodicSite: H26 (H) (6.774, 4.441, 12.4) [0.7761, 0.3723, 0.9456]\n", - "PeriodicSite: H27 (H) (0.5209, 7.989, 13.25) [0.3086, 0.6698, 0.9831]\n", - "PeriodicSite: H27 (H) (6.041, 3.939, -1.634) [0.6914, 0.3302, 0.0169]\n", - "PeriodicSite: H28 (H) (-0.3226, 6.629, 13.24) [0.1857, 0.5558, 0.9532]\n", - "PeriodicSite: H28 (H) (6.884, 5.298, -1.618) [0.8143, 0.4442, 0.0468]\n", - "PeriodicSite: H29 (H) (7.949, 7.517, -2.513) [0.9858, 0.6302, 0.0322]\n", - "PeriodicSite: H29 (H) (-1.388, 4.411, 14.13) [0.0142, 0.3698, 0.9678]\n", - "PeriodicSite: H30 (H) (7.93, 6.672, 11.5) [0.9565, 0.5594, 0.9314]\n", - "PeriodicSite: H30 (H) (-1.368, 5.255, 0.123) [0.0435, 0.4406, 0.0686]\n", - "PeriodicSite: H31 (H) (7.138, 8.06, 11.59) [0.9278, 0.6757, 0.9485]\n", - "PeriodicSite: H31 (H) (-0.576, 3.868, 0.03309) [0.0722, 0.3243, 0.0515]\n", - "PeriodicSite: H32 (H) (-1.307, 9.45, -0.4189) [0.1857, 0.7923, 0.0944]\n", - "PeriodicSite: H32 (H) (7.869, 2.477, 12.04) [0.8143, 0.2077, 0.9056]\n", - "PeriodicSite: H33 (H) (-2.331, 10.12, -1.453) [0.1119, 0.8481, 0.0254]\n", - "PeriodicSite: H33 (H) (8.893, 1.812, 13.07) [0.8881, 0.1519, 0.9746]\n", - "PeriodicSite: H34 (H) (-0.7552, 10.21, -1.717) [0.2618, 0.8557, 0.0269]\n", - "PeriodicSite: H34 (H) (7.317, 1.721, 13.34) [0.7382, 0.1443, 0.9731]\n", - "PeriodicSite: H35 (H) (-2.423, 10.46, 4.594) [0.1144, 0.8766, 0.4228]\n", - "PeriodicSite: H35 (H) (8.985, 1.472, 7.024) [0.8856, 0.1234, 0.5772]\n", - "PeriodicSite: H36 (H) (3.217, 0.3018, 6.215) [0.3098, 0.0253, 0.4442]\n", - "PeriodicSite: H36 (H) (3.344, 11.63, 5.403) [0.6902, 0.9747, 0.5558]\n", - "PeriodicSite: H37 (H) (4.496, 1.079, 7.998) [0.4543, 0.0905, 0.5855]\n", - "PeriodicSite: H37 (H) (2.066, 10.85, 3.62) [0.5457, 0.9095, 0.4145]\n", - "PeriodicSite: H38 (H) (7.5, 8.915, 5.91) [0.9894, 0.7474, 0.5955]\n", - "PeriodicSite: H38 (H) (-0.9381, 3.013, 5.708) [0.0106, 0.2526, 0.4045]\n", - "PeriodicSite: H39 (H) (7.618, 7.02, 4.481) [0.9387, 0.5885, 0.4765]\n", - "PeriodicSite: H39 (H) (-1.056, 4.908, 7.138) [0.0613, 0.4115, 0.5235]\n", - "PeriodicSite: H40 (H) (-1.641, 7.534, 6.674) [0.0922, 0.6316, 0.5247]\n", - "PeriodicSite: H40 (H) (8.203, 4.394, 4.944) [0.9078, 0.3684, 0.4753]\n", - "PeriodicSite: H41 (H) (-2.26, 7.868, 5.236) [0.0454, 0.6596, 0.4291]\n", - "PeriodicSite: H41 (H) (8.821, 4.06, 6.382) [0.9546, 0.3404, 0.5709]\n", - "PeriodicSite: H42 (H) (5.678, 8.613, 4.504) [0.8097, 0.7221, 0.4796]\n", - "PeriodicSite: H42 (H) (0.8839, 3.315, 7.115) [0.1903, 0.2779, 0.5204]\n", - "PeriodicSite: H43 (H) (6.426, 9.337, 3.289) [0.903, 0.7828, 0.4192]\n", - "PeriodicSite: H43 (H) (0.136, 2.591, 8.33) [0.097, 0.2172, 0.5808]\n", - "PeriodicSite: H44 (H) (5.965, 10.19, 4.565) [0.8877, 0.8539, 0.5094]\n", - "PeriodicSite: H44 (H) (0.5961, 1.743, 7.053) [0.1123, 0.1461, 0.4906]\n", - "PeriodicSite: H45 (H) (0.3705, 11.68, 9.396) [0.4147, 0.9792, 0.7836]\n", - "PeriodicSite: H45 (H) (6.191, 0.2481, 2.223) [0.5853, 0.0208, 0.2164]\n", - "PeriodicSite: H46 (H) (3.331, 1.78, 11.23) [0.3685, 0.1492, 0.793]\n", - "PeriodicSite: H46 (H) (3.23, 10.15, 0.3892) [0.6315, 0.8508, 0.207]\n", - "PeriodicSite: H47 (H) (4.36, 2.361, 10.15) [0.4833, 0.1979, 0.7424]\n", - "PeriodicSite: H47 (H) (2.202, 9.567, 1.469) [0.5167, 0.8021, 0.2576]\n", - "PeriodicSite: H48 (H) (4.846, 2.079, 11.65) [0.5195, 0.1743, 0.8412]\n", - "PeriodicSite: H48 (H) (1.715, 9.849, -0.0289) [0.4805, 0.8257, 0.1588]\n", - "PeriodicSite: H49 (H) (2.204, 11.34, 7.873) [0.5747, 0.951, 0.6999]\n", - "PeriodicSite: H49 (H) (4.358, 0.5845, 3.745) [0.4253, 0.049, 0.3001]\n", - "PeriodicSite: H50 (H) (6.686, 0.5212, 10.92) [0.6403, 0.0437, 0.7916]\n", - "PeriodicSite: H50 (H) (-0.1241, 11.41, 0.7) [0.3597, 0.9563, 0.2084]\n", - "PeriodicSite: H51 (H) (6.3, 0.9685, 9.433) [0.6189, 0.0812, 0.6971]\n", - "PeriodicSite: H51 (H) (0.2616, 10.96, 2.186) [0.3811, 0.9188, 0.3029]\n", - "PeriodicSite: H52 (H) (0.3398, 3.365, 11.19) [0.1412, 0.2821, 0.7806]\n", - "PeriodicSite: H52 (H) (6.222, 8.563, 0.4243) [0.8588, 0.7179, 0.2194]\n", - "PeriodicSite: H53 (H) (8.904, 2.528, 9.571) [0.9124, 0.2119, 0.7572]\n", - "PeriodicSite: H53 (H) (-2.342, 9.4, 2.048) [0.0876, 0.7881, 0.2428]\n", - "PeriodicSite: H54 (H) (7.086, 3.982, 9.4) [0.7903, 0.3338, 0.747]\n", - "PeriodicSite: H54 (H) (-0.5249, 7.946, 2.219) [0.2097, 0.6662, 0.253]\n", - "PeriodicSite: H55 (H) (1.308, 6.789, 10.92) [0.3429, 0.5692, 0.8228]\n", - "PeriodicSite: H55 (H) (5.254, 5.139, 0.6972) [0.6571, 0.4308, 0.1772]\n", - "PeriodicSite: H56 (H) (1.257, 5.667, 8.812) [0.3016, 0.4751, 0.6688]\n", - "PeriodicSite: H56 (H) (5.305, 6.261, 2.807) [0.6984, 0.5249, 0.3312]\n", - "PeriodicSite: H57 (H) (1.899, 4.37, 9.495) [0.3193, 0.3664, 0.7017]\n", - "PeriodicSite: H57 (H) (4.663, 7.557, 2.123) [0.6807, 0.6336, 0.2983]\n", - "PeriodicSite: H58 (H) (2.742, 5.728, 9.401) [0.4421, 0.4802, 0.7244]\n", - "PeriodicSite: H58 (H) (3.819, 6.2, 2.217) [0.5579, 0.5198, 0.2756]\n", - "PeriodicSite: H59 (H) (3.091, 5.61, 11.91) [0.4708, 0.4703, 0.8898]\n", - "PeriodicSite: H59 (H) (3.47, 6.318, -0.2916) [0.5292, 0.5297, 0.1102]\n", - "PeriodicSite: H60 (H) (2.209, 4.276, 11.98) [0.3451, 0.3585, 0.8653]\n", - "PeriodicSite: H60 (H) (4.353, 7.652, -0.3595) [0.6549, 0.6415, 0.1347]\n", - "PeriodicSite: H61 (H) (1.822, 5.539, 12.88) [0.3502, 0.4644, 0.938]\n", - "PeriodicSite: H61 (H) (4.739, 6.389, -1.263) [0.6498, 0.5356, 0.062]\n", - "PeriodicSite: H62 (H) (7.145, 7.501, 9.2) [0.9103, 0.6289, 0.7853]\n", - "PeriodicSite: H62 (H) (-0.5832, 4.426, 2.419) [0.0897, 0.3711, 0.2147]\n", - "PeriodicSite: H63 (H) (5.752, 5.994, 10.44) [0.7314, 0.5025, 0.8292]\n", - "PeriodicSite: H63 (H) (0.8093, 5.934, 1.175) [0.2686, 0.4975, 0.1708]\n", - "PeriodicSite: H64 (H) (5.381, 5.249, 9.076) [0.6726, 0.4401, 0.7254]\n", - "PeriodicSite: H64 (H) (1.18, 6.678, 2.543) [0.3274, 0.5599, 0.2746]\n", - "PeriodicSite: H65 (H) (4.941, 6.77, 9.304) [0.681, 0.5676, 0.7573]\n", - "PeriodicSite: H65 (H) (1.621, 5.158, 2.314) [0.319, 0.4324, 0.2427]\n", - "PeriodicSite: H66 (H) (7.692, 6.918, 6.949) [0.9423, 0.58, 0.6365]\n", - "PeriodicSite: H66 (H) (-1.13, 5.01, 4.669) [0.0577, 0.42, 0.3635]\n", - "PeriodicSite: H67 (H) (6.142, 7.295, 7.09) [0.8101, 0.6116, 0.634]\n", - "PeriodicSite: H67 (H) (0.4195, 4.633, 4.529) [0.1899, 0.3884, 0.366]\n", - "PeriodicSite: H68 (H) (6.587, 5.761, 6.988) [0.8017, 0.483, 0.6102]\n", - "PeriodicSite: H68 (H) (-0.02591, 6.167, 4.63) [0.1983, 0.517, 0.3898]\n", - "PeriodicSite: C1 (C) (2.389, 8.815, 8.797) [0.5097, 0.7391, 0.7256]\n", - "PeriodicSite: C1 (C) (4.172, 3.112, 2.822) [0.4903, 0.2609, 0.2744]\n", - "PeriodicSite: C2 (C) (2.907, 9.765, 10.94) [0.5889, 0.8187, 0.8848]\n", - "PeriodicSite: C2 (C) (3.654, 2.162, 0.6743) [0.4111, 0.1813, 0.1152]\n", - "PeriodicSite: C3 (C) (2.144, 10.73, 11.84) [0.5491, 0.8993, 0.9484]\n", - "PeriodicSite: C3 (C) (4.417, 1.201, -0.2208) [0.4509, 0.1007, 0.05157]\n", - "PeriodicSite: C4 (C) (3.615, 8.704, 11.79) [0.6204, 0.7297, 0.9325]\n", - "PeriodicSite: C4 (C) (2.946, 3.224, -0.1749) [0.3796, 0.2703, 0.06747]\n", - "PeriodicSite: C5 (C) (1.784, 7.868, 6.621) [0.4225, 0.6596, 0.5638]\n", - "PeriodicSite: C5 (C) (4.777, 4.06, 4.998) [0.5775, 0.3404, 0.4362]\n", - "PeriodicSite: C6 (C) (1.18, 8.808, 5.586) [0.3967, 0.7385, 0.5033]\n", - "PeriodicSite: C6 (C) (5.381, 3.12, 6.032) [0.6033, 0.2615, 0.4967]\n", - "PeriodicSite: C7 (C) (3.275, 7.69, 6.346) [0.5556, 0.6447, 0.5597]\n", - "PeriodicSite: C7 (C) (3.287, 4.238, 5.273) [0.4444, 0.3553, 0.4403]\n", - "PeriodicSite: C8 (C) (-3.361, 11.44, 9.92) [0.0591, 0.9594, 0.7732]\n", - "PeriodicSite: C8 (C) (9.922, 0.4847, 1.698) [0.9409, 0.04064, 0.2268]\n", - "PeriodicSite: C9 (C) (-2.187, 10.42, 9.961) [0.1352, 0.8734, 0.774]\n", - "PeriodicSite: C9 (C) (8.748, 1.51, 1.658) [0.8648, 0.1266, 0.226]\n", - "PeriodicSite: C10 (C) (-2.009, 9.811, 11.26) [0.132, 0.8225, 0.8516]\n", - "PeriodicSite: C10 (C) (8.571, 2.117, 0.3614) [0.868, 0.1775, 0.1484]\n", - "PeriodicSite: C11 (C) (-1.54, 8.569, 11.66) [0.1354, 0.7184, 0.8654]\n", - "PeriodicSite: C11 (C) (8.101, 3.359, -0.04578) [0.8646, 0.2816, 0.1346]\n", - "PeriodicSite: C12 (C) (-1.533, 8.322, 13.21) [0.1279, 0.6977, 0.9624]\n", - "PeriodicSite: C12 (C) (8.095, 3.606, -1.59) [0.8721, 0.3023, 0.03761]\n", - "PeriodicSite: C13 (C) (0.982, 0.5847, 12.96) [0.1106, 0.04902, 0.8624]\n", - "PeriodicSite: C13 (C) (5.58, 11.34, -1.339) [0.8894, 0.951, 0.1376]\n", - "PeriodicSite: C14 (C) (0.5924, 0.2809, 10.54) [0.06438, 0.02355, 0.6965]\n", - "PeriodicSite: C14 (C) (5.969, 11.65, 1.077) [0.9356, 0.9765, 0.3035]\n", - "PeriodicSite: C15 (C) (6.074, 10.65, 8.38) [0.913, 0.8929, 0.7655]\n", - "PeriodicSite: C15 (C) (0.4876, 1.278, 3.238) [0.08705, 0.1071, 0.2345]\n", - "PeriodicSite: C16 (C) (-0.2722, 7.536, 13.61) [0.2199, 0.6318, 0.9908]\n", - "PeriodicSite: C16 (C) (6.834, 4.392, -1.987) [0.7801, 0.3682, 0.00917]\n", - "PeriodicSite: C17 (C) (7.938, 7.575, 11.88) [0.9867, 0.6351, 0.9692]\n", - "PeriodicSite: C17 (C) (-1.377, 4.353, -0.2572) [0.0133, 0.3649, 0.03077]\n", - "PeriodicSite: C18 (C) (-1.477, 9.644, -1.364) [0.1762, 0.8086, 0.0338]\n", - "PeriodicSite: C18 (C) (8.038, 2.283, 12.98) [0.8238, 0.1914, 0.9662]\n", - "PeriodicSite: C19 (C) (-1.328, 10.69, 7.669) [0.2242, 0.8964, 0.6383]\n", - "PeriodicSite: C19 (C) (7.89, 1.236, 3.949) [0.7758, 0.1036, 0.3617]\n", - "PeriodicSite: C20 (C) (-2.085, 10.2, 6.589) [0.1375, 0.8548, 0.5526]\n", - "PeriodicSite: C20 (C) (8.646, 1.732, 5.03) [0.8625, 0.1452, 0.4474]\n", - "PeriodicSite: C21 (C) (-1.919, 10.78, 5.331) [0.172, 0.904, 0.481]\n", - "PeriodicSite: C21 (C) (8.481, 1.146, 6.287) [0.828, 0.09605, 0.519]\n", - "PeriodicSite: C22 (C) (-1.034, 11.83, 5.138) [0.2886, 0.9918, 0.4932]\n", - "PeriodicSite: C22 (C) (7.596, 0.09817, 6.481) [0.7114, 0.00823, 0.5068]\n", - "PeriodicSite: C23 (C) (3.887, 0.3637, 8.137) [0.3742, 0.03049, 0.5775]\n", - "PeriodicSite: C23 (C) (2.675, 11.56, 3.481) [0.6258, 0.9695, 0.4225]\n", - "PeriodicSite: C24 (C) (-0.3906, 11.73, 7.476) [0.3453, 0.9832, 0.651]\n", - "PeriodicSite: C24 (C) (6.952, 0.2007, 4.142) [0.6547, 0.01683, 0.349]\n", - "PeriodicSite: C25 (C) (-3.063, 9.047, 6.747) [0.00889, 0.7585, 0.5356]\n", - "PeriodicSite: C25 (C) (9.625, 2.88, 4.871) [0.9911, 0.2415, 0.4644]\n", - "PeriodicSite: C26 (C) (-2.464, 7.75, 6.188) [0.02251, 0.6497, 0.4871]\n", - "PeriodicSite: C26 (C) (9.026, 4.178, 5.431) [0.9775, 0.3503, 0.5129]\n", - "PeriodicSite: C27 (C) (6.311, 9.32, 4.263) [0.8917, 0.7814, 0.481]\n", - "PeriodicSite: C27 (C) (0.2509, 2.608, 7.356) [0.1083, 0.2186, 0.519]\n", - "PeriodicSite: C28 (C) (4.655, 0.3388, 10.53) [0.445, 0.0284, 0.7413]\n", - "PeriodicSite: C28 (C) (1.907, 11.59, 1.089) [0.555, 0.9716, 0.2587]\n", - "PeriodicSite: C29 (C) (4.262, 1.769, 10.92) [0.455, 0.1483, 0.7833]\n", - "PeriodicSite: C29 (C) (2.299, 10.16, 0.6938) [0.545, 0.8517, 0.2167]\n", - "PeriodicSite: C30 (C) (6.135, 0.3085, 10.14) [0.5821, 0.02586, 0.7316]\n", - "PeriodicSite: C30 (C) (0.4261, 11.62, 1.482) [0.4179, 0.9741, 0.2684]\n", - "PeriodicSite: C31 (C) (-1.251, 6.231, 10.97) [0.0862, 0.5224, 0.7897]\n", - "PeriodicSite: C31 (C) (7.812, 5.697, 0.6495) [0.9138, 0.4776, 0.2103]\n", - "PeriodicSite: C32 (C) (-0.1546, 5.337, 11.02) [0.1593, 0.4475, 0.7921]\n", - "PeriodicSite: C32 (C) (6.716, 6.59, 0.5997) [0.8407, 0.5525, 0.2079]\n", - "PeriodicSite: C33 (C) (-0.3968, 3.964, 11.16) [0.09203, 0.3323, 0.779]\n", - "PeriodicSite: C33 (C) (6.958, 7.964, 0.457) [0.908, 0.6677, 0.221]\n", - "PeriodicSite: C34 (C) (9.046, 3.459, 9.442) [0.956, 0.29, 0.7638]\n", - "PeriodicSite: C34 (C) (-2.485, 8.469, 2.177) [0.044, 0.71, 0.2362]\n", - "PeriodicSite: C35 (C) (7.97, 4.328, 9.348) [0.8839, 0.3629, 0.7584]\n", - "PeriodicSite: C35 (C) (-1.408, 7.6, 2.27) [0.1161, 0.6371, 0.2416]\n", - "PeriodicSite: C36 (C) (8.156, 5.703, 9.179) [0.9461, 0.4781, 0.7692]\n", - "PeriodicSite: C36 (C) (-1.595, 6.225, 2.439) [0.05391, 0.5219, 0.2308]\n", - "PeriodicSite: C37 (C) (1.29, 5.79, 10.89) [0.3087, 0.4854, 0.806]\n", - "PeriodicSite: C37 (C) (5.272, 6.138, 0.7315) [0.6913, 0.5146, 0.194]\n", - "PeriodicSite: C38 (C) (1.847, 5.349, 9.526) [0.3463, 0.4484, 0.7172]\n", - "PeriodicSite: C38 (C) (4.714, 6.579, 2.092) [0.6537, 0.5516, 0.2828]\n", - "PeriodicSite: C39 (C) (2.184, 5.256, 12.02) [0.3747, 0.4406, 0.8816]\n", - "PeriodicSite: C39 (C) (4.378, 6.672, -0.3977) [0.6253, 0.5594, 0.1184]\n", - "PeriodicSite: C40 (C) (6.956, 6.579, 8.861) [0.8627, 0.5516, 0.7479]\n", - "PeriodicSite: C40 (C) (-0.3946, 5.348, 2.757) [0.1373, 0.4484, 0.2521]\n", - "PeriodicSite: C41 (C) (5.64, 6.106, 9.476) [0.7245, 0.5119, 0.7666]\n", - "PeriodicSite: C41 (C) (0.922, 5.822, 2.142) [0.2755, 0.4881, 0.2334]\n", - "PeriodicSite: C42 (C) (6.833, 6.644, 7.335) [0.8534, 0.5571, 0.6482]\n", - "PeriodicSite: C42 (C) (-0.2716, 5.283, 4.284) [0.1466, 0.4429, 0.3518]\n", - "PeriodicSite: N1 (N) (1.972, 9.153, 10.0) [0.4818, 0.7673, 0.8043]\n", - "PeriodicSite: N1 (N) (4.589, 2.775, 1.618) [0.5182, 0.2327, 0.1957]\n", - "PeriodicSite: N2 (N) (1.472, 8.335, 7.973) [0.4085, 0.6988, 0.655]\n", - "PeriodicSite: N2 (N) (5.089, 3.593, 3.646) [0.5915, 0.3012, 0.345]\n", - "PeriodicSite: N3 (N) (-1.394, 10.07, 8.97) [0.1978, 0.8443, 0.7133]\n", - "PeriodicSite: N3 (N) (7.956, 1.858, 2.649) [0.8022, 0.1557, 0.2867]\n", - "PeriodicSite: N4 (N) (-1.061, 7.638, 10.78) [0.1497, 0.6403, 0.7996]\n", - "PeriodicSite: N4 (N) (7.622, 4.29, 0.8404) [0.8503, 0.3597, 0.2004]" - ] - }, - "execution_count": 88, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "asymmetric_unit_structure" - ] - }, - { - "cell_type": "code", - "execution_count": 89, - "id": "0a4b1dcc", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Space group symbol: P-1\n" - ] - } - ], - "source": [ - "spacegroup = asymmetric_unit_structure.get_space_group_info()[0]\n", - "print(\"Space group symbol:\", spacegroup)" - ] - }, - { - "cell_type": "code", - "execution_count": 90, - "id": "3784d85b", - "metadata": {}, - "outputs": [], - "source": [ - "from pymatgen.symmetry.analyzer import SpacegroupAnalyzer\n" - ] - }, - { - "cell_type": "code", - "execution_count": 94, - "id": "1376fc6c", - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "data": { - "text/plain": [ - "'P-1'" - ] - }, - "execution_count": 94, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "spacegroup" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "9358d568", - "metadata": {}, - "outputs": [], - "source": [ - "SpacegroupAnalyzer" - ] - }, - { - "cell_type": "code", - "execution_count": 93, - "id": "a50bd922", - "metadata": {}, - "outputs": [ - { - "ename": "AttributeError", - "evalue": "'str' object has no attribute 'site_properties'", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mAttributeError\u001b[0m Traceback (most recent call last)", - "Input \u001b[0;32mIn [93]\u001b[0m, in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0m analyzer \u001b[38;5;241m=\u001b[39m \u001b[43mSpacegroupAnalyzer\u001b[49m\u001b[43m(\u001b[49m\u001b[43mspacegroup\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 2\u001b[0m symmetry_ops \u001b[38;5;241m=\u001b[39m analyzer\u001b[38;5;241m.\u001b[39mget_symmetry_operations()\n\u001b[1;32m 4\u001b[0m \u001b[38;5;66;03m# Apply symmetry operations to generate unit cell\u001b[39;00m\n", - "File \u001b[0;32m~/miniconda3/envs/cell2mol/lib/python3.10/site-packages/pymatgen/symmetry/analyzer.py:81\u001b[0m, in \u001b[0;36mSpacegroupAnalyzer.__init__\u001b[0;34m(self, structure, symprec, angle_tolerance)\u001b[0m\n\u001b[1;32m 79\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_angle_tol \u001b[38;5;241m=\u001b[39m angle_tolerance\n\u001b[1;32m 80\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_structure \u001b[38;5;241m=\u001b[39m structure\n\u001b[0;32m---> 81\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_site_props \u001b[38;5;241m=\u001b[39m \u001b[43mstructure\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43msite_properties\u001b[49m\n\u001b[1;32m 82\u001b[0m unique_species: \u001b[38;5;28mlist\u001b[39m[Element \u001b[38;5;241m|\u001b[39m Species] \u001b[38;5;241m=\u001b[39m []\n\u001b[1;32m 83\u001b[0m zs \u001b[38;5;241m=\u001b[39m []\n", - "\u001b[0;31mAttributeError\u001b[0m: 'str' object has no attribute 'site_properties'" - ] - } - ], - "source": [ - "analyzer = SpacegroupAnalyzer(spacegroup)\n", - "symmetry_ops = analyzer.get_symmetry_operations()\n", - "\n", - "# Apply symmetry operations to generate unit cell\n", - "unit_cell_coords = asymmetric_unit_structure.cart_coords\n", - "# for symm_op in symmetry_ops:\n", - "# transformed_coords = [symm_op.operate(coord) for coord in unit_cell_coords]\n", - "# unit_cell_coords.extend(transformed_coords)\n", - "\n", - "# # Convert to Structure object\n", - "# unit_cell_structure = Structure(\n", - "# lattice=asymmetric_unit_structure.lattice,\n", - "# species=asymmetric_unit_structure.species,\n", - "# coords=unit_cell_coords\n", - "# )\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "3766a425", - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "cell2mol", - "language": "python", - "name": "cell2mol" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.10.6" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/cell2mol/test/Untitled1.ipynb b/cell2mol/test/Untitled1.ipynb deleted file mode 100644 index f4c581499..000000000 --- a/cell2mol/test/Untitled1.ipynb +++ /dev/null @@ -1,5480 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 54, - "id": "9e404ed6-9dc4-4911-8f6f-b4cd759f9b2d", - "metadata": {}, - "outputs": [], - "source": [ - "import ase\n", - "import numpy as np\n", - "from ase.io import read\n", - "from ase import Atoms\n", - "from ase.visualize.plot import plot_atoms\n", - "from cell2mol.read_write import readinfo\n", - "from cell2mol.cell_operations import frac2cart_fromparam, cart2frac\n", - "import nglview" - ] - }, - { - "cell_type": "code", - "execution_count": 424, - "id": "f3891735-ea30-447f-8354-db2085018e91", - "metadata": {}, - "outputs": [], - "source": [ - "infopath = \"error_2/BOFFOS/BOFFOS.info\"\n", - "labels, pos, ref_labels, ref_fracs, cellvec, cellparam = readinfo(infopath)\n", - "# ref_pos = frac2cart_fromparam(ref_fracs, cellparam)" - ] - }, - { - "cell_type": "code", - "execution_count": 425, - "id": "c8a593ff-c0e9-4461-8878-0dfee0cf0c20", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[[14.0694487, 0.0, 3.2493333],\n", - " [-7.0347244, 12.1845, 3.2493333],\n", - " [-7.0347244, -12.1845, 3.2493333]]" - ] - }, - "execution_count": 425, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "cellvec" - ] - }, - { - "cell_type": "code", - "execution_count": 428, - "id": "e85cdc56-712d-423e-8e94-d367da58136f", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[24.369, 24.369, 9.748, 90.0, 90.0, 120.0]" - ] - }, - "execution_count": 428, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "cellparam" - ] - }, - { - "cell_type": "code", - "execution_count": 427, - "id": "b3c04eeb-153d-4fed-8847-b01bb4635005", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "Cell([[24.369, 0.0, 0.0], [-12.184499999999995, 21.10417306482299, 0.0], [0.0, 0.0, 9.748]])" - ] - }, - "execution_count": 427, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "cell_ase" - ] - }, - { - "cell_type": "code", - "execution_count": 55, - "id": "d3b5e138-82a1-4d28-88ac-eeed84d5478b", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Help on class Cell in module ase.cell:\n", - "\n", - "class Cell(builtins.object)\n", - " | Cell(array)\n", - " | \n", - " | Parallel epipedal unit cell of up to three dimensions.\n", - " | \n", - " | This object resembles a 3x3 array whose [i, j]-th element is the jth\n", - " | Cartesian coordinate of the ith unit vector.\n", - " | \n", - " | Cells of less than three dimensions are represented by placeholder\n", - " | unit vectors that are zero.\n", - " | \n", - " | Methods defined here:\n", - " | \n", - " | __array__(self, dtype=)\n", - " | \n", - " | __bool__(self)\n", - " | \n", - " | __iadd__(self, value, /)\n", - " | Return self+=value.\n", - " | \n", - " | __imatmul__(self, value, /)\n", - " | Return self@=value.\n", - " | \n", - " | __imul__(self, value, /)\n", - " | Return self*=value.\n", - " | \n", - " | __init__(self, array)\n", - " | Create cell.\n", - " | \n", - " | Parameters:\n", - " | \n", - " | array: 3x3 arraylike object\n", - " | The three cell vectors: cell[0], cell[1], and cell[2].\n", - " | \n", - " | __ipow__(self, value, /)\n", - " | Return self**=value.\n", - " | \n", - " | __isub__(self, value, /)\n", - " | Return self-=value.\n", - " | \n", - " | __itruediv__(self, value, /)\n", - " | Return self/=value.\n", - " | \n", - " | __nonzero__ = __bool__(self)\n", - " | \n", - " | __repr__(self)\n", - " | Return repr(self).\n", - " | \n", - " | angles(self)\n", - " | Return an array with the three angles alpha, beta, and gamma.\n", - " | \n", - " | bandpath(self, path: str = None, npoints: int = None, *, density: float = None, special_points: Mapping[str, Sequence[float]] = None, eps: float = 0.0002, pbc: Union[bool, Sequence[bool]] = True) -> 'ase.dft.kpoints.BandPath'\n", - " | Build a :class:`~ase.dft.kpoints.BandPath` for this cell.\n", - " | \n", - " | If special points are None, determine the Bravais lattice of\n", - " | this cell and return a suitable Brillouin zone path with\n", - " | standard special points.\n", - " | \n", - " | If special special points are given, interpolate the path\n", - " | directly from the available data.\n", - " | \n", - " | Parameters:\n", - " | \n", - " | path: string\n", - " | String of special point names defining the path, e.g. 'GXL'.\n", - " | npoints: int\n", - " | Number of points in total. Note that at least one point\n", - " | is added for each special point in the path.\n", - " | density: float\n", - " | density of kpoints along the path in Å⁻¹.\n", - " | special_points: dict\n", - " | Dictionary mapping special points to scaled kpoint coordinates.\n", - " | For example ``{'G': [0, 0, 0], 'X': [1, 0, 0]}``.\n", - " | eps: float\n", - " | Tolerance for determining Bravais lattice.\n", - " | pbc: three bools\n", - " | Whether cell is periodic in each direction. Normally not\n", - " | necessary. If cell has three nonzero cell vectors, use\n", - " | e.g. pbc=[1, 1, 0] to request a 2D bandpath nevertheless.\n", - " | \n", - " | Example\n", - " | -------\n", - " | >>> cell = Cell.fromcellpar([4, 4, 4, 60, 60, 60])\n", - " | >>> cell.bandpath('GXW', npoints=20)\n", - " | BandPath(path='GXW', cell=[3x3], special_points={GKLUWX}, kpts=[20x3])\n", - " | \n", - " | cartesian_positions(self, scaled_positions) -> numpy.ndarray\n", - " | Calculate Cartesian positions from scaled positions.\n", - " | \n", - " | cellpar(self, radians=False)\n", - " | Get unit cell parameters. Sequence of 6 numbers.\n", - " | \n", - " | First three are unit cell vector lengths and second three\n", - " | are angles between them::\n", - " | \n", - " | [len(a), len(b), len(c), angle(b,c), angle(a,c), angle(a,b)]\n", - " | \n", - " | in degrees.\n", - " | \n", - " | See also :func:`ase.geometry.cell.cell_to_cellpar`.\n", - " | \n", - " | complete(self)\n", - " | Convert missing cell vectors into orthogonal unit vectors.\n", - " | \n", - " | copy(self)\n", - " | Return a copy of this cell.\n", - " | \n", - " | get_bravais_lattice(self, eps=0.0002, *, pbc=True)\n", - " | Return :class:`~ase.lattice.BravaisLattice` for this cell:\n", - " | \n", - " | >>> cell = Cell.fromcellpar([4, 4, 4, 60, 60, 60])\n", - " | >>> print(cell.get_bravais_lattice())\n", - " | FCC(a=5.65685)\n", - " | \n", - " | .. note:: The Bravais lattice object follows the AFlow\n", - " | conventions. ``cell.get_bravais_lattice().tocell()`` may\n", - " | differ from the original cell by a permutation or other\n", - " | operation which maps it to the AFlow convention. For\n", - " | example, the orthorhombic lattice enforces a < b < c.\n", - " | \n", - " | To build a bandpath for a particular cell, use\n", - " | :meth:`ase.cell.Cell.bandpath` instead of this method.\n", - " | This maps the kpoints back to the original input cell.\n", - " | \n", - " | lengths(self)\n", - " | Return the length of each lattice vector as an array.\n", - " | \n", - " | minkowski_reduce(self)\n", - " | Minkowski-reduce this cell, returning new cell and mapping.\n", - " | \n", - " | See also :func:`ase.geometry.minkowski_reduction.minkowski_reduce`.\n", - " | \n", - " | niggli_reduce(self, eps=1e-05)\n", - " | Niggli reduce this cell, returning a new cell and mapping.\n", - " | \n", - " | See also :func:`ase.build.tools.niggli_reduce_cell`.\n", - " | \n", - " | permute_axes(self, permutation)\n", - " | Permute axes of cell.\n", - " | \n", - " | reciprocal(self) -> 'Cell'\n", - " | Get reciprocal lattice as a Cell object.\n", - " | \n", - " | Does not include factor of 2 pi.\n", - " | \n", - " | scaled_positions(self, positions) -> numpy.ndarray\n", - " | Calculate scaled positions from Cartesian positions.\n", - " | \n", - " | The scaled positions are the positions given in the basis\n", - " | of the cell vectors. For the purpose of defining the basis, cell\n", - " | vectors that are zero will be replaced by unit vectors as per\n", - " | :meth:`~ase.cell.Cell.complete`.\n", - " | \n", - " | standard_form(self)\n", - " | Rotate axes such that unit cell is lower triangular. The cell\n", - " | handedness is preserved.\n", - " | \n", - " | A lower-triangular cell with positive diagonal entries is a canonical\n", - " | (i.e. unique) description. For a left-handed cell the diagonal entries\n", - " | are negative.\n", - " | \n", - " | Returns:\n", - " | \n", - " | rcell: the standardized cell object\n", - " | \n", - " | Q: ndarray\n", - " | The orthogonal transformation. Here, rcell @ Q = cell, where cell\n", - " | is the input cell and rcell is the lower triangular (output) cell.\n", - " | \n", - " | todict(self)\n", - " | \n", - " | uncomplete(self, pbc)\n", - " | Return new cell, zeroing cell vectors where not periodic.\n", - " | \n", - " | ----------------------------------------------------------------------\n", - " | Class methods defined here:\n", - " | \n", - " | ascell(cell) from builtins.type\n", - " | Return argument as a Cell object. See :meth:`ase.cell.Cell.new`.\n", - " | \n", - " | A new Cell object is created if necessary.\n", - " | \n", - " | fromcellpar(cellpar, ab_normal=(0, 0, 1), a_direction=None) from builtins.type\n", - " | Return new Cell from cell lengths and angles.\n", - " | \n", - " | See also :func:`~ase.geometry.cell.cellpar_to_cell()`.\n", - " | \n", - " | new(cell=None) from builtins.type\n", - " | Create new cell from any parameters.\n", - " | \n", - " | If cell is three numbers, assume three lengths with right angles.\n", - " | \n", - " | If cell is six numbers, assume three lengths, then three angles.\n", - " | \n", - " | If cell is 3x3, assume three cell vectors.\n", - " | \n", - " | ----------------------------------------------------------------------\n", - " | Readonly properties defined here:\n", - " | \n", - " | T\n", - " | \n", - " | __abs__\n", - " | \n", - " | __add__\n", - " | \n", - " | __contains__\n", - " | \n", - " | __eq__\n", - " | \n", - " | __ge__\n", - " | \n", - " | __getitem__\n", - " | \n", - " | __gt__\n", - " | \n", - " | __iter__\n", - " | \n", - " | __le__\n", - " | \n", - " | __len__\n", - " | \n", - " | __lt__\n", - " | \n", - " | __matmul__\n", - " | \n", - " | __mul__\n", - " | \n", - " | __ne__\n", - " | \n", - " | __neg__\n", - " | \n", - " | __pos__\n", - " | \n", - " | __pow__\n", - " | \n", - " | __radd__\n", - " | \n", - " | __rmatmul__\n", - " | \n", - " | __rmul__\n", - " | \n", - " | __rpow__\n", - " | \n", - " | __rsub__\n", - " | \n", - " | __rtruediv__\n", - " | \n", - " | __setitem__\n", - " | \n", - " | __sub__\n", - " | \n", - " | __truediv__\n", - " | \n", - " | all\n", - " | \n", - " | any\n", - " | \n", - " | argmax\n", - " | \n", - " | argmin\n", - " | \n", - " | argpartition\n", - " | \n", - " | argsort\n", - " | \n", - " | astype\n", - " | \n", - " | base\n", - " | \n", - " | byteswap\n", - " | \n", - " | choose\n", - " | \n", - " | clip\n", - " | \n", - " | compress\n", - " | \n", - " | conj\n", - " | \n", - " | conjugate\n", - " | \n", - " | ctypes\n", - " | \n", - " | cumprod\n", - " | \n", - " | cumsum\n", - " | \n", - " | data\n", - " | \n", - " | diagonal\n", - " | \n", - " | dot\n", - " | \n", - " | dtype\n", - " | \n", - " | dump\n", - " | \n", - " | dumps\n", - " | \n", - " | fill\n", - " | \n", - " | flags\n", - " | \n", - " | flat\n", - " | \n", - " | flatten\n", - " | \n", - " | getfield\n", - " | \n", - " | handedness\n", - " | Sign of the determinant of the matrix of cell vectors.\n", - " | \n", - " | 1 for right-handed cells, -1 for left, and 0 for cells that\n", - " | do not span three dimensions.\n", - " | \n", - " | imag\n", - " | \n", - " | item\n", - " | \n", - " | itemset\n", - " | \n", - " | itemsize\n", - " | \n", - " | max\n", - " | \n", - " | mean\n", - " | \n", - " | min\n", - " | \n", - " | nbytes\n", - " | \n", - " | ndim\n", - " | \n", - " | newbyteorder\n", - " | \n", - " | nonzero\n", - " | \n", - " | orthorhombic\n", - " | Return whether this cell is represented by a diagonal matrix.\n", - " | \n", - " | partition\n", - " | \n", - " | prod\n", - " | \n", - " | ptp\n", - " | \n", - " | put\n", - " | \n", - " | rank\n", - " | \"Return the dimension of the cell.\n", - " | \n", - " | Equal to the number of nonzero lattice vectors.\n", - " | \n", - " | ravel\n", - " | \n", - " | real\n", - " | \n", - " | repeat\n", - " | \n", - " | reshape\n", - " | \n", - " | resize\n", - " | \n", - " | round\n", - " | \n", - " | searchsorted\n", - " | \n", - " | setfield\n", - " | \n", - " | setflags\n", - " | \n", - " | shape\n", - " | \n", - " | size\n", - " | \n", - " | sort\n", - " | \n", - " | squeeze\n", - " | \n", - " | std\n", - " | \n", - " | strides\n", - " | \n", - " | sum\n", - " | \n", - " | swapaxes\n", - " | \n", - " | take\n", - " | \n", - " | tobytes\n", - " | \n", - " | tofile\n", - " | \n", - " | tolist\n", - " | \n", - " | tostring\n", - " | \n", - " | trace\n", - " | \n", - " | transpose\n", - " | \n", - " | var\n", - " | \n", - " | view\n", - " | \n", - " | volume\n", - " | Get the volume of this cell.\n", - " | \n", - " | If there are less than 3 lattice vectors, return 0.\n", - " | \n", - " | ----------------------------------------------------------------------\n", - " | Data descriptors defined here:\n", - " | \n", - " | __dict__\n", - " | dictionary for instance variables (if defined)\n", - " | \n", - " | __weakref__\n", - " | list of weak references to the object (if defined)\n", - " | \n", - " | ----------------------------------------------------------------------\n", - " | Data and other attributes defined here:\n", - " | \n", - " | __hash__ = None\n", - " | \n", - " | ase_objtype = 'cell'\n", - "\n" - ] - } - ], - "source": [ - "help(ase.cell.Cell)" - ] - }, - { - "cell_type": "code", - "execution_count": 63, - "id": "3325e8a1-684b-4124-873f-9231cef37cfc", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Help on Cell in module ase.cell object:\n", - "\n", - "class Cell(builtins.object)\n", - " | Cell(array)\n", - " | \n", - " | Parallel epipedal unit cell of up to three dimensions.\n", - " | \n", - " | This object resembles a 3x3 array whose [i, j]-th element is the jth\n", - " | Cartesian coordinate of the ith unit vector.\n", - " | \n", - " | Cells of less than three dimensions are represented by placeholder\n", - " | unit vectors that are zero.\n", - " | \n", - " | Methods defined here:\n", - " | \n", - " | __array__(self, dtype=)\n", - " | \n", - " | __bool__(self)\n", - " | \n", - " | __iadd__(self, value, /)\n", - " | Return self+=value.\n", - " | \n", - " | __imatmul__(self, value, /)\n", - " | Return self@=value.\n", - " | \n", - " | __imul__(self, value, /)\n", - " | Return self*=value.\n", - " | \n", - " | __init__(self, array)\n", - " | Create cell.\n", - " | \n", - " | Parameters:\n", - " | \n", - " | array: 3x3 arraylike object\n", - " | The three cell vectors: cell[0], cell[1], and cell[2].\n", - " | \n", - " | __ipow__(self, value, /)\n", - " | Return self**=value.\n", - " | \n", - " | __isub__(self, value, /)\n", - " | Return self-=value.\n", - " | \n", - " | __itruediv__(self, value, /)\n", - " | Return self/=value.\n", - " | \n", - " | __nonzero__ = __bool__(self)\n", - " | \n", - " | __repr__(self)\n", - " | Return repr(self).\n", - " | \n", - " | angles(self)\n", - " | Return an array with the three angles alpha, beta, and gamma.\n", - " | \n", - " | bandpath(self, path: str = None, npoints: int = None, *, density: float = None, special_points: Mapping[str, Sequence[float]] = None, eps: float = 0.0002, pbc: Union[bool, Sequence[bool]] = True) -> 'ase.dft.kpoints.BandPath'\n", - " | Build a :class:`~ase.dft.kpoints.BandPath` for this cell.\n", - " | \n", - " | If special points are None, determine the Bravais lattice of\n", - " | this cell and return a suitable Brillouin zone path with\n", - " | standard special points.\n", - " | \n", - " | If special special points are given, interpolate the path\n", - " | directly from the available data.\n", - " | \n", - " | Parameters:\n", - " | \n", - " | path: string\n", - " | String of special point names defining the path, e.g. 'GXL'.\n", - " | npoints: int\n", - " | Number of points in total. Note that at least one point\n", - " | is added for each special point in the path.\n", - " | density: float\n", - " | density of kpoints along the path in Å⁻¹.\n", - " | special_points: dict\n", - " | Dictionary mapping special points to scaled kpoint coordinates.\n", - " | For example ``{'G': [0, 0, 0], 'X': [1, 0, 0]}``.\n", - " | eps: float\n", - " | Tolerance for determining Bravais lattice.\n", - " | pbc: three bools\n", - " | Whether cell is periodic in each direction. Normally not\n", - " | necessary. If cell has three nonzero cell vectors, use\n", - " | e.g. pbc=[1, 1, 0] to request a 2D bandpath nevertheless.\n", - " | \n", - " | Example\n", - " | -------\n", - " | >>> cell = Cell.fromcellpar([4, 4, 4, 60, 60, 60])\n", - " | >>> cell.bandpath('GXW', npoints=20)\n", - " | BandPath(path='GXW', cell=[3x3], special_points={GKLUWX}, kpts=[20x3])\n", - " | \n", - " | cartesian_positions(self, scaled_positions) -> numpy.ndarray\n", - " | Calculate Cartesian positions from scaled positions.\n", - " | \n", - " | cellpar(self, radians=False)\n", - " | Get unit cell parameters. Sequence of 6 numbers.\n", - " | \n", - " | First three are unit cell vector lengths and second three\n", - " | are angles between them::\n", - " | \n", - " | [len(a), len(b), len(c), angle(b,c), angle(a,c), angle(a,b)]\n", - " | \n", - " | in degrees.\n", - " | \n", - " | See also :func:`ase.geometry.cell.cell_to_cellpar`.\n", - " | \n", - " | complete(self)\n", - " | Convert missing cell vectors into orthogonal unit vectors.\n", - " | \n", - " | copy(self)\n", - " | Return a copy of this cell.\n", - " | \n", - " | get_bravais_lattice(self, eps=0.0002, *, pbc=True)\n", - " | Return :class:`~ase.lattice.BravaisLattice` for this cell:\n", - " | \n", - " | >>> cell = Cell.fromcellpar([4, 4, 4, 60, 60, 60])\n", - " | >>> print(cell.get_bravais_lattice())\n", - " | FCC(a=5.65685)\n", - " | \n", - " | .. note:: The Bravais lattice object follows the AFlow\n", - " | conventions. ``cell.get_bravais_lattice().tocell()`` may\n", - " | differ from the original cell by a permutation or other\n", - " | operation which maps it to the AFlow convention. For\n", - " | example, the orthorhombic lattice enforces a < b < c.\n", - " | \n", - " | To build a bandpath for a particular cell, use\n", - " | :meth:`ase.cell.Cell.bandpath` instead of this method.\n", - " | This maps the kpoints back to the original input cell.\n", - " | \n", - " | lengths(self)\n", - " | Return the length of each lattice vector as an array.\n", - " | \n", - " | minkowski_reduce(self)\n", - " | Minkowski-reduce this cell, returning new cell and mapping.\n", - " | \n", - " | See also :func:`ase.geometry.minkowski_reduction.minkowski_reduce`.\n", - " | \n", - " | niggli_reduce(self, eps=1e-05)\n", - " | Niggli reduce this cell, returning a new cell and mapping.\n", - " | \n", - " | See also :func:`ase.build.tools.niggli_reduce_cell`.\n", - " | \n", - " | permute_axes(self, permutation)\n", - " | Permute axes of cell.\n", - " | \n", - " | reciprocal(self) -> 'Cell'\n", - " | Get reciprocal lattice as a Cell object.\n", - " | \n", - " | Does not include factor of 2 pi.\n", - " | \n", - " | scaled_positions(self, positions) -> numpy.ndarray\n", - " | Calculate scaled positions from Cartesian positions.\n", - " | \n", - " | The scaled positions are the positions given in the basis\n", - " | of the cell vectors. For the purpose of defining the basis, cell\n", - " | vectors that are zero will be replaced by unit vectors as per\n", - " | :meth:`~ase.cell.Cell.complete`.\n", - " | \n", - " | standard_form(self)\n", - " | Rotate axes such that unit cell is lower triangular. The cell\n", - " | handedness is preserved.\n", - " | \n", - " | A lower-triangular cell with positive diagonal entries is a canonical\n", - " | (i.e. unique) description. For a left-handed cell the diagonal entries\n", - " | are negative.\n", - " | \n", - " | Returns:\n", - " | \n", - " | rcell: the standardized cell object\n", - " | \n", - " | Q: ndarray\n", - " | The orthogonal transformation. Here, rcell @ Q = cell, where cell\n", - " | is the input cell and rcell is the lower triangular (output) cell.\n", - " | \n", - " | todict(self)\n", - " | \n", - " | uncomplete(self, pbc)\n", - " | Return new cell, zeroing cell vectors where not periodic.\n", - " | \n", - " | ----------------------------------------------------------------------\n", - " | Class methods defined here:\n", - " | \n", - " | ascell(cell) from builtins.type\n", - " | Return argument as a Cell object. See :meth:`ase.cell.Cell.new`.\n", - " | \n", - " | A new Cell object is created if necessary.\n", - " | \n", - " | fromcellpar(cellpar, ab_normal=(0, 0, 1), a_direction=None) from builtins.type\n", - " | Return new Cell from cell lengths and angles.\n", - " | \n", - " | See also :func:`~ase.geometry.cell.cellpar_to_cell()`.\n", - " | \n", - " | new(cell=None) from builtins.type\n", - " | Create new cell from any parameters.\n", - " | \n", - " | If cell is three numbers, assume three lengths with right angles.\n", - " | \n", - " | If cell is six numbers, assume three lengths, then three angles.\n", - " | \n", - " | If cell is 3x3, assume three cell vectors.\n", - " | \n", - " | ----------------------------------------------------------------------\n", - " | Readonly properties defined here:\n", - " | \n", - " | T\n", - " | \n", - " | __abs__\n", - " | \n", - " | __add__\n", - " | \n", - " | __contains__\n", - " | \n", - " | __eq__\n", - " | \n", - " | __ge__\n", - " | \n", - " | __getitem__\n", - " | \n", - " | __gt__\n", - " | \n", - " | __iter__\n", - " | \n", - " | __le__\n", - " | \n", - " | __len__\n", - " | \n", - " | __lt__\n", - " | \n", - " | __matmul__\n", - " | \n", - " | __mul__\n", - " | \n", - " | __ne__\n", - " | \n", - " | __neg__\n", - " | \n", - " | __pos__\n", - " | \n", - " | __pow__\n", - " | \n", - " | __radd__\n", - " | \n", - " | __rmatmul__\n", - " | \n", - " | __rmul__\n", - " | \n", - " | __rpow__\n", - " | \n", - " | __rsub__\n", - " | \n", - " | __rtruediv__\n", - " | \n", - " | __setitem__\n", - " | \n", - " | __sub__\n", - " | \n", - " | __truediv__\n", - " | \n", - " | all\n", - " | \n", - " | any\n", - " | \n", - " | argmax\n", - " | \n", - " | argmin\n", - " | \n", - " | argpartition\n", - " | \n", - " | argsort\n", - " | \n", - " | astype\n", - " | \n", - " | base\n", - " | \n", - " | byteswap\n", - " | \n", - " | choose\n", - " | \n", - " | clip\n", - " | \n", - " | compress\n", - " | \n", - " | conj\n", - " | \n", - " | conjugate\n", - " | \n", - " | ctypes\n", - " | \n", - " | cumprod\n", - " | \n", - " | cumsum\n", - " | \n", - " | data\n", - " | \n", - " | diagonal\n", - " | \n", - " | dot\n", - " | \n", - " | dtype\n", - " | \n", - " | dump\n", - " | \n", - " | dumps\n", - " | \n", - " | fill\n", - " | \n", - " | flags\n", - " | \n", - " | flat\n", - " | \n", - " | flatten\n", - " | \n", - " | getfield\n", - " | \n", - " | handedness\n", - " | Sign of the determinant of the matrix of cell vectors.\n", - " | \n", - " | 1 for right-handed cells, -1 for left, and 0 for cells that\n", - " | do not span three dimensions.\n", - " | \n", - " | imag\n", - " | \n", - " | item\n", - " | \n", - " | itemset\n", - " | \n", - " | itemsize\n", - " | \n", - " | max\n", - " | \n", - " | mean\n", - " | \n", - " | min\n", - " | \n", - " | nbytes\n", - " | \n", - " | ndim\n", - " | \n", - " | newbyteorder\n", - " | \n", - " | nonzero\n", - " | \n", - " | orthorhombic\n", - " | Return whether this cell is represented by a diagonal matrix.\n", - " | \n", - " | partition\n", - " | \n", - " | prod\n", - " | \n", - " | ptp\n", - " | \n", - " | put\n", - " | \n", - " | rank\n", - " | \"Return the dimension of the cell.\n", - " | \n", - " | Equal to the number of nonzero lattice vectors.\n", - " | \n", - " | ravel\n", - " | \n", - " | real\n", - " | \n", - " | repeat\n", - " | \n", - " | reshape\n", - " | \n", - " | resize\n", - " | \n", - " | round\n", - " | \n", - " | searchsorted\n", - " | \n", - " | setfield\n", - " | \n", - " | setflags\n", - " | \n", - " | shape\n", - " | \n", - " | size\n", - " | \n", - " | sort\n", - " | \n", - " | squeeze\n", - " | \n", - " | std\n", - " | \n", - " | strides\n", - " | \n", - " | sum\n", - " | \n", - " | swapaxes\n", - " | \n", - " | take\n", - " | \n", - " | tobytes\n", - " | \n", - " | tofile\n", - " | \n", - " | tolist\n", - " | \n", - " | tostring\n", - " | \n", - " | trace\n", - " | \n", - " | transpose\n", - " | \n", - " | var\n", - " | \n", - " | view\n", - " | \n", - " | volume\n", - " | Get the volume of this cell.\n", - " | \n", - " | If there are less than 3 lattice vectors, return 0.\n", - " | \n", - " | ----------------------------------------------------------------------\n", - " | Data descriptors defined here:\n", - " | \n", - " | __dict__\n", - " | dictionary for instance variables (if defined)\n", - " | \n", - " | __weakref__\n", - " | list of weak references to the object (if defined)\n", - " | \n", - " | ----------------------------------------------------------------------\n", - " | Data and other attributes defined here:\n", - " | \n", - " | __hash__ = None\n", - " | \n", - " | ase_objtype = 'cell'\n", - "\n" - ] - } - ], - "source": [ - "help(atoms.cell)" - ] - }, - { - "cell_type": "code", - "execution_count": 426, - "id": "15578f7c-cf73-4cc4-80b7-2ee6d23bb255", - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 0 and 59 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 0 and 60 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 2 and 61 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 2 and 62 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 3 and 63 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 3 and 64 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 4 and 65 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 4 and 66 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 5 and 67 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 5 and 68 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 6 and 69 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 6 and 70 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 7 and 71 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 7 and 72 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 8 and 73 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 8 and 74 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 9 and 75 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 9 and 76 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 10 and 77 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 10 and 78 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 11 and 79 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 11 and 80 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 15 and 81 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 15 and 82 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 16 and 83 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 16 and 84 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 17 and 85 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 17 and 86 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 18 and 87 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 18 and 88 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 19 and 89 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 19 and 90 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 20 and 91 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 20 and 92 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 21 and 93 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 21 and 94 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 22 and 95 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 22 and 96 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 23 and 97 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 23 and 98 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 24 and 99 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 24 and 100 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 25 and 101 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 25 and 102 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 26 and 103 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 26 and 104 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 27 and 105 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 27 and 106 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 28 and 107 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 28 and 108 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 29 and 109 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 29 and 110 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 30 and 111 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 30 and 112 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 31 and 113 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 31 and 114 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 32 and 115 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 32 and 116 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 33 and 117 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 33 and 118 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 34 and 119 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 34 and 120 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 35 and 121 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 35 and 122 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 36 and 123 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 36 and 124 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 37 and 125 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 37 and 126 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 38 and 127 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 38 and 128 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 39 and 129 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 39 and 130 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 40 and 131 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 40 and 132 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 41 and 133 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 41 and 134 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 42 and 135 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 42 and 136 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 43 and 137 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 43 and 138 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 44 and 139 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 44 and 140 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 45 and 141 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 45 and 142 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 46 and 143 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 46 and 144 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 47 and 145 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 47 and 146 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 48 and 147 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 48 and 148 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 49 and 149 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 49 and 150 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 50 and 151 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 50 and 152 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 51 and 153 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 51 and 154 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 52 and 155 are equivalent\n", - " /opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 52 and 156 are equivalent\n" - ] - } - ], - "source": [ - "input_path = \"error_2/BOFFOS/BOFFOS.cif\"\n", - "atoms = read(input_path)\n", - "cell_labels = atoms.get_chemical_symbols()\n", - "cell_pos = atoms.positions\n", - "cell_fracs = atoms.get_scaled_positions()\n", - "cell_ase = atoms.cell\n", - "# cell_parameters = atoms.cell.cellpar()\n", - "space_group = atoms.info['spacegroup']\n", - "sym_ops = space_group.get_op()" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "id": "550a0072-1314-454b-aff4-40c7a3088cb9", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 5, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "plot_atoms(atoms)" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "id": "3a9c5584-00f8-45f0-93ef-7bb5323c5522", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "(525, 525, 525)" - ] - }, - "execution_count": 6, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "len(cell_labels), len(cell_pos), len(cell_fracs)" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "id": "c9d07a2d-d43f-4c17-bceb-f47da830c283", - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "data": { - "text/plain": [ - "(157, 157, 157)" - ] - }, - "execution_count": 7, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "len(ref_labels), len(ref_pos), len(ref_fracs)" - ] - }, - { - "cell_type": "code", - "execution_count": 279, - "id": "7f23a87f-de69-4580-bcf2-f9ad95d65734", - "metadata": {}, - "outputs": [], - "source": [ - "def apply_symmetry_operations_to_frac (molecule, cell_parameters, fractional_coords, sym_ops, normalize = False):\n", - " new_structures = []\n", - " for rot, trans in zip(sym_ops[0], sym_ops[1]):\n", - " transformed_positions = np.dot(fractional_coords, rot.T)\n", - " transformed_positions += np.array(trans) \n", - " if normalize:\n", - " transformed_positions = np.remainder(transformed_positions, 1)\n", - " new_positions = frac2cart_fromparam(transformed_positions, cell_parameters)\n", - " new_molecule = molecule.copy()\n", - " new_molecule.set_positions(new_positions)\n", - " new_molecule.set_scaled_positions(fractional_coords)\n", - " new_structures.append(new_molecule)\n", - " return new_structures" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "083f1267-b067-45ca-a214-9c6ab0bfc080", - "metadata": {}, - "outputs": [], - "source": [ - "apply_symmetry_operations_to_frac(ref_molecule, " - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "id": "ca93827a-b3f7-4b08-84ab-16ae6cbf49f7", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "array([ 24.369, 24.369, 9.748, 90. , 90. , 120. ])" - ] - }, - "execution_count": 10, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "cell_parameters" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "id": "f9222fde-9fff-4a45-88ca-c42fabed525f", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "Cell([[24.369, 0.0, 0.0], [-12.184499999999995, 21.10417306482299, 0.0], [0.0, 0.0, 9.748]])" - ] - }, - "execution_count": 11, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "atoms.cell" - ] - }, - { - "cell_type": "code", - "execution_count": 191, - "id": "35e5a4e6-b629-435d-9228-0f5db49e3721", - "metadata": {}, - "outputs": [], - "source": [ - "# ref_molecuele = Atoms(symbols=ref_labels, positions=ref_pos)\n", - "ref_molecule = Atoms(symbols=ref_labels, scaled_positions=ref_fracs, cell=atoms.cell, pbc=True)" - ] - }, - { - "cell_type": "code", - "execution_count": 23, - "id": "87e593e8-70c4-4e10-8bba-25ce00b51b30", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "Atoms(symbols='C126H270Fe3K9O117', pbc=True, cell=[[24.369, 0.0, 0.0], [-12.184499999999995, 21.10417306482299, 0.0], [0.0, 0.0, 9.748]], spacegroup_kinds=...)" - ] - }, - "execution_count": 23, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "atoms" - ] - }, - { - "cell_type": "code", - "execution_count": 193, - "id": "09666ca4-8074-4aa5-8cdd-b55f9393c4f4", - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "data": { - "text/plain": [ - "array([[14.5861868 , 10.49193964, 6.84007412],\n", - " [12.18571845, 7.03402088, 9.3951224 ],\n", - " [15.03530747, 9.65114938, 4.23131436],\n", - " [12.4636469 , 10.43622462, 4.93229304],\n", - " [12.00940874, 11.2968528 , 7.55450504],\n", - " [14.17264487, 12.40819855, 9.00724948],\n", - " [16.71213836, 11.83121046, 8.1503028 ],\n", - " [17.23339127, 10.87392517, 5.5544104 ],\n", - " [15.7326264 , 8.57842427, 8.4251964 ],\n", - " [13.60155735, 7.98666325, 8.33142064],\n", - " [13.77323696, 6.63325264, 10.54948056],\n", - " [15.9202677 , 7.135743 , 10.7920108 ],\n", - " [18.38446098, 8.70800389, 9.4643332 ],\n", - " [ 8.94756573, 13.33150613, 4.5493916 ],\n", - " [18.45062282, 6.83922937, 2.0090628 ],\n", - " [13.97184431, 9.66761064, 3.294824 ],\n", - " [14.1242724 , 8.99459856, 2.6134388 ],\n", - " [13.9293204 , 10.53520319, 2.861038 ],\n", - " [12.69698007, 9.39388951, 3.9927808 ],\n", - " [11.96883435, 9.35547992, 3.3523372 ],\n", - " [12.74620545, 8.54085884, 4.4509368 ],\n", - " [11.20913078, 10.29946958, 5.5817048 ],\n", - " [11.1731865 , 9.4504487 , 6.0505836 ],\n", - " [10.4957283 , 10.31571979, 4.9246896 ],\n", - " [11.03233368, 11.41313679, 6.5438324 ],\n", - " [11.12810385, 12.26363497, 6.087626 ],\n", - " [10.1448147 , 11.37514928, 6.9347272 ],\n", - " [11.8592957 , 12.26595643, 8.5743408 ],\n", - " [10.9855452 , 12.18132869, 8.9886308 ],\n", - " [11.93471775, 13.15845191, 8.2000176 ],\n", - " [12.92032196, 12.04689511, 9.57741 ],\n", - " [12.7474239 , 12.58652882, 10.3640736 ],\n", - " [12.93384675, 11.11556795, 9.8445052 ],\n", - " [15.23964153, 12.25392705, 9.9254136 ],\n", - " [15.303732 , 11.3287201 , 10.2071308 ],\n", - " [15.08562945, 12.8039018 , 10.7101276 ],\n", - " [16.49744747, 12.67157863, 9.2489024 ],\n", - " [16.42348755, 13.59319787, 8.9525632 ],\n", - " [17.2435044 , 12.60763299, 9.8659508 ],\n", - " [17.95581027, 12.00658614, 7.5118088 ],\n", - " [18.6617802 , 12.05892449, 8.1756476 ],\n", - " [17.95142385, 12.83344764, 7.0058876 ],\n", - " [18.20413038, 10.87582455, 6.6120684 ],\n", - " [19.09432995, 10.94673457, 6.2367704 ],\n", - " [18.14881275, 10.04347596, 7.1082416 ],\n", - " [17.3471945 , 9.74611816, 4.713158 ],\n", - " [17.2264461 , 8.93550688, 5.2327264 ],\n", - " [18.2328858 , 9.72058211, 4.3164144 ],\n", - " [16.32138144, 9.81470673, 3.6438024 ],\n", - " [16.37231265, 10.67238032, 3.1914952 ],\n", - " [16.47709935, 9.11489235, 2.9897116 ],\n", - " [14.76286205, 7.9894068 , 8.87068 ],\n", - " [14.86594292, 7.18196114, 10.1944584 ],\n", - " [17.5554276 , 8.67381513, 9.21186 ],\n", - " [ 8.9214909 , 14.16090013, 4.24038 ],\n", - " [17.5797966 , 6.66891869, 1.90086 ],\n", - " [18.53871675, 8.25384209, 10.176912 ],\n", - " [ 8.11365855, 13.58897704, 4.67904 ],\n", - " [18.422964 , 6.79554373, 2.895156 ],\n", - " [ 7.98962034, 7.38603849, 6.84007412],\n", - " [13.97769287, 3.22619494, 6.84007412],\n", - " [ 8.49320573, 8.19538353, 4.23131436],\n", - " [13.02498681, 3.25764015, 4.23131436],\n", - " [ 9.09914091, 5.57572252, 4.93229304],\n", - " [14.9907122 , 5.09222592, 4.93229304],\n", - " [ 8.58093413, 4.75202665, 7.55450504],\n", - " [15.96315714, 5.05529362, 7.55450504],\n", - " [ 6.53686241, 6.06977122, 9.00724948],\n", - " [15.84399273, 2.6262033 , 9.00724948],\n", - " [ 5.76680201, 8.55753114, 8.1503028 ],\n", - " [14.07455964, 0.71543147, 8.1503028 ],\n", - " [ 6.33520893, 9.48759204, 5.5544104 ],\n", - " [12.98489981, 0.74265585, 5.5544104 ],\n", - " [ 9.07355346, 9.335642 , 8.4251964 ],\n", - " [11.74732014, 3.1901068 , 8.4251964 ],\n", - " [10.65156806, 7.78596257, 8.33142064],\n", - " [12.3003746 , 5.33154724, 8.33142064],\n", - " [11.73781623, 8.61134678, 10.54948056],\n", - " [11.04244682, 5.85957365, 10.54948056],\n", - " [10.40410086, 3.7489453 , 10.7920108 ],\n", - " [10.22913144, 10.21948476, 10.7920108 ],\n", - " [ 9.01068144, 7.26616679, 3.294824 ],\n", - " [13.57097425, 4.17039564, 3.294824 ],\n", - " [ 9.51731295, 7.73467943, 2.6134388 ],\n", - " [12.91191465, 4.37489508, 2.6134388 ],\n", - " [ 8.2805862 , 6.79554373, 2.861038 ],\n", - " [14.3435934 , 3.77342614, 2.861038 ],\n", - " [ 9.88516301, 6.29896253, 3.9927808 ],\n", - " [13.97135693, 5.41132102, 3.9927808 ],\n", - " [14.3021661 , 6.0611185 , 3.3523372 ],\n", - " [10.28249955, 5.68757464, 3.3523372 ],\n", - " [13.207998 , 5.79520592, 4.4509368 ],\n", - " [10.59929655, 6.7681083 , 4.4509368 ],\n", - " [ 9.84483231, 4.55765722, 5.5817048 ],\n", - " [15.49953691, 6.24704627, 5.5817048 ],\n", - " [10.5980781 , 4.951039 , 6.0505836 ],\n", - " [14.7822354 , 6.70268537, 6.0505836 ],\n", - " [10.18746045, 3.93170744, 4.9246896 ],\n", - " [15.87031125, 6.85674583, 4.9246896 ],\n", - " [ 8.96876676, 3.84771283, 6.5438324 ],\n", - " [16.55239956, 5.84332344, 6.5438324 ],\n", - " [ 8.18432865, 3.50540315, 6.087626 ],\n", - " [17.2410675 , 5.33513495, 6.087626 ],\n", - " [ 9.4454244 , 3.09809261, 6.9347272 ],\n", - " [16.9632609 , 6.63093118, 6.9347272 ],\n", - " [ 7.81672229, 4.13747313, 8.5743408 ],\n", - " [16.87748202, 4.70074351, 8.5743408 ],\n", - " [ 8.3268873 , 3.42309687, 8.9886308 ],\n", - " [17.2410675 , 5.4997475 , 8.9886308 ],\n", - " [ 7.0060875 , 3.75654281, 8.2000176 ],\n", - " [17.61269475, 4.18917835, 8.2000176 ],\n", - " [ 7.47592182, 5.16587948, 9.57741 ],\n", - " [16.15725623, 3.89139847, 9.57741 ],\n", - " [16.71104175, 3.77131573, 10.3640736 ],\n", - " [ 7.09503435, 4.74632852, 10.3640736 ],\n", - " [15.34394085, 4.34534923, 9.8445052 ],\n", - " [ 8.2757124 , 5.64325588, 9.8445052 ],\n", - " [ 6.13696712, 7.07095319, 9.9254136 ],\n", - " [15.17689136, 1.77929283, 9.9254136 ],\n", - " [ 6.9061746 , 7.58906063, 10.2071308 ],\n", - " [14.3435934 , 2.18639233, 10.2071308 ],\n", - " [ 5.73768105, 6.66258744, 10.7101276 ],\n", - " [15.7301895 , 1.63768383, 10.7101276 ],\n", - " [ 5.14636727, 7.95141929, 9.2489024 ],\n", - " [14.90968527, 0.48117515, 9.2489024 ],\n", - " [ 4.38520155, 7.4265585 , 8.9525632 ],\n", - " [15.7448109 , 0.08441669, 8.9525632 ],\n", - " [ 4.82871735, 8.62949637, 9.8659508 ],\n", - " [14.48127825, -0.13295629, 9.8659508 ],\n", - " [ 4.99308626, 9.54689477, 7.5118088 ],\n", - " [13.60460347, -0.44930784, 7.5118088 ],\n", - " [ 4.59477495, 10.13211349, 8.1756476 ],\n", - " [13.29694485, -1.08686491, 8.1756476 ],\n", - " [ 4.2791964 , 9.12966527, 7.0058876 ],\n", - " [14.32287975, -0.85893984, 7.0058876 ],\n", - " [ 5.84819447, 10.32732709, 6.6120684 ],\n", - " [12.50117516, -0.09897857, 6.6120684 ],\n", - " [12.11748525, -0.90536902, 6.2367704 ],\n", - " [ 5.3416848 , 11.06280752, 6.2367704 ],\n", - " [11.80799895, 0.36510219, 7.1082416 ],\n", - " [ 6.5966883 , 10.69559491, 7.1082416 ],\n", - " [11.95128867, 1.20800287, 4.713158 ],\n", - " [ 7.25501684, 10.15005204, 4.713158 ],\n", - " [11.3096529 , 1.71787969, 5.2327264 ],\n", - " [ 8.017401 , 10.4507865 , 5.2327264 ],\n", - " [11.48632815, 0.45373972, 4.3164144 ],\n", - " [ 6.83428605, 10.92985123, 4.3164144 ],\n", - " [12.52359464, 2.06208875, 3.6438024 ],\n", - " [ 7.70852393, 9.22737759, 3.6438024 ],\n", - " [13.24089615, 1.58914423, 3.1914952 ],\n", - " [ 6.9402912 , 8.84264851, 3.1914952 ],\n", - " [11.83967865, 2.27714027, 2.9897116 ],\n", - " [ 8.236722 , 9.71214044, 2.9897116 ],\n", - " [10.06853973, 8.79031016, 8.87068 ],\n", - " [11.72209822, 4.3244561 , 8.87068 ],\n", - " [10.71626775, 9.28330365, 10.1944584 ],\n", - " [10.97128933, 4.63890828, 10.1944584 ]])" - ] - }, - "execution_count": 193, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "ref_molecule.positions" - ] - }, - { - "cell_type": "code", - "execution_count": 194, - "id": "9537e432-cefb-434e-bd01-8bc86fd61ff7", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 194, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "plot_atoms(Atoms(symbols=ref_labels, positions=ref_molecule.positions, cell=atoms.cell, pbc=True))" - ] - }, - { - "cell_type": "code", - "execution_count": 192, - "id": "26733c6b-b2fd-4a96-b697-eea3a82b7c41", - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 192, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "plot_atoms(ref_molecule)" - ] - }, - { - "cell_type": "code", - "execution_count": 32, - "id": "bf1c7c60-fe4e-405f-a359-99bc67eb76d8", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "array([[0.84713 , 0.49715 , 0.70169 ],\n", - " [0.50285 , 0.34998 , 0.70169 ],\n", - " [0.65002 , 0.15287 , 0.70169 ],\n", - " ...,\n", - " [0.25033333, 0.98866667, 0.96366667],\n", - " [0.01133333, 0.26166667, 0.96366667],\n", - " [0.73833333, 0.74966667, 0.96366667]])" - ] - }, - "execution_count": 32, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "atoms.get_scaled_positions()" - ] - }, - { - "cell_type": "code", - "execution_count": 49, - "id": "33c6f414-68b6-42c6-ac3d-2cbc9ef8935f", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "True" - ] - }, - "execution_count": 49, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "ref_molecule.get_chemical_symbols() == ref_labels" - ] - }, - { - "cell_type": "code", - "execution_count": 46, - "id": "b6a875f1-99be-4f65-bd28-3c141395324f", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "True" - ] - }, - "execution_count": 46, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "np.allclose(ref_molecule.get_scaled_positions(), ref_fracs)" - ] - }, - { - "cell_type": "code", - "execution_count": 281, - "id": "c4ea8510-ba13-4342-929e-3eb1e58fa22a", - "metadata": {}, - "outputs": [], - "source": [ - "def apply_symmetry_operations_reference (ref_molecule, cell_ase, sym_ops, normalize=True):\n", - " new_structures = []\n", - " \n", - " ref_labels = ref_molecule.get_chemical_symbols()\n", - " fractional_coords = ref_molecule.get_scaled_positions()\n", - "\n", - " for rot, trans in zip(sym_ops[0], sym_ops[1]):\n", - " transformed_positions = np.dot(fractional_coords, rot.T)\n", - " transformed_positions += np.array(trans) \n", - " if normalize:\n", - " transformed_positions = np.remainder(transformed_positions, 1)\n", - " new_molecule = Atoms(symbols=ref_labels, scaled_positions=transformed_positions, cell=cell_ase) \n", - " \n", - " # new_positions = frac2cart_fromparam(transformed_positions, cell_parameters)\n", - " # new_molecule = molecule.copy()\n", - " # new_molecule.set_positions(new_positions)\n", - " # new_molecule.set_scaled_positions(fractional_coords)\n", - " new_structures.append(new_molecule)\n", - " return new_structures" - ] - }, - { - "cell_type": "code", - "execution_count": 345, - "id": "82595f75-f64a-4eb0-bba1-538fe78f0a64", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "Cell([[24.369, 0.0, 0.0], [-12.184499999999995, 21.10417306482299, 0.0], [0.0, 0.0, 9.748]])" - ] - }, - "execution_count": 345, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "cell_ase" - ] - }, - { - "cell_type": "code", - "execution_count": 342, - "id": "e8472340-7eae-4537-8dfe-6315ef342376", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "array([[-5.11285989, 20.75904949, 1.30005827],\n", - " [-4.3815462 , 20.36693395, 0.99104667],\n", - " [ 7.71157005, 0.24832577, 1.42970667]])" - ] - }, - "execution_count": 342, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "from ase.geometry import wrap_positions\n", - "test = Atoms(symbols=remaining_fragments[0].labels, scaled_positions=remaining_fragments[0].frac_coord, cell=cell_ase, pbc=True)\n", - "test_2 = Atoms(symbols=remaining_fragments[1].labels, scaled_positions=remaining_fragments[1].frac_coord, cell=cell_ase, pbc=True)\n", - "combine_mol = test+ test_2\n", - "temp=wrap_positions(combine_mol.positions, combine_mol.cell, \"pretty_translation\")\n", - "# combine_mol.wrap_positions(\"pretty_translation\")\n", - "te" - ] - }, - { - "cell_type": "code", - "execution_count": 343, - "id": "23e348e7-c6fd-4965-ba69-f2507c910e50", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "array([[-5.11285989, 20.75904949, 1.30005827],\n", - " [-4.3815462 , 20.36693395, 0.99104667],\n", - " [ 7.71157005, 0.24832577, 1.42970667]])" - ] - }, - "execution_count": 343, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "combine_mol.positions" - ] - }, - { - "cell_type": "code", - "execution_count": 321, - "id": "a687c686-6046-4210-bd60-ddcb20d699a0", - "metadata": {}, - "outputs": [], - "source": [ - "test_new_structures_2 = apply_symmetry_operations_reference(test, cell_ase, sym_ops, normalize=False)" - ] - }, - { - "cell_type": "code", - "execution_count": 331, - "id": "a38868d3-bca3-4e39-acdc-c080f68b7fe6", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 331, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "plot_atoms(test_new_structures_2[0])" - ] - }, - { - "cell_type": "code", - "execution_count": 285, - "id": "22a31fd1-0d64-45d0-af6e-4a4a285f75d0", - "metadata": {}, - "outputs": [], - "source": [ - "new_structures_2 = apply_symmetry_operations_reference(ref_molecule, cell_ase, sym_ops, normalize=False)" - ] - }, - { - "cell_type": "code", - "execution_count": 287, - "id": "337fb44d-1f31-4fdf-9e7d-cd596a02d5fe", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 287, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAh8AAAF0CAYAAACDhlvVAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8g+/7EAAAACXBIWXMAAA9hAAAPYQGoP6dpAADjjElEQVR4nOzdd1SU19bA4d9UehERQUBF7L2LimLvvbeoidFYo6YYNcYWjcZ+7UaNLfZuYou9F9CIvWEFBaXX6e/3h5FPAiggOJbzrMW6d966Z+LM7Dlnn3NkkiRJCIIgCIIgvCNycwcgCIIgCMKnRSQfgiAIgiC8UyL5EARBEAThnRLJhyAIgiAI75RIPgRBEARBeKdE8iEIgiAIwjslkg9BEARBEN4pkXwIgiAIgvBOieRDEARBEIR3SmnuAP7LZDLx5MkT7OzskMlk5g5HEARBEIQMkCSJuLg48uXLh1z+hrYNKRN++eUXqXLlypKtra2UJ08eqXXr1tLNmzdTHOPn5ycBKf6++uqrDN/j8ePHqc4Xf+JP/Ik/8Sf+xN+H8ff48eM3ftdnquXj2LFjDBo0iCpVqmAwGBg9ejSNGjXi+vXr2NjYJB/Xt29fJk6cmPzY2to6w/ews7MD4PHjx9jb22cmPEEQBEEQzCQ2NhZPT8/k7/HXyVTysW/fvhSPV65ciYuLCxcuXKB27drJ262trXF1dc3MpZO97Gqxt7cXyYcgCIIgfGAyUjLxVgWnMTExADg5OaXYvnbtWpydnSldujSjRo0iMTEx3WtotVpiY2NT/AmCIAiC8PHKcsGpyWRi2LBh1KxZk9KlSydv79atGwUKFCBfvnxcvnyZH374gVu3brFt27Y0rzNlyhQmTJiQ1TAEQRAEQfjAyCRJkrJy4oABA9i7dy8nT57Ew8Mj3eMOHz5M/fr1uXv3Lt7e3qn2a7VatFpt8uOXfUYxMTGi20UQBEEQPhCxsbE4ODhk6Ps7Sy0fgwcP5q+//uL48eOvTTwAqlWrBpBu8mFhYYGFhUVWwhAEQRAE4QOUqeRDkiSGDBnC9u3bOXr0KF5eXm8859KlSwC4ubllKUBBEIRPUVRUFBcvXuTChQvcuHGDxMREJEnCysqKwoULU7lyZSpVqoSLi4u5QxWETMtU8jFo0CDWrVvHzp07sbOzIzQ0FAAHBwesrKwICgpi3bp1NGvWjNy5c3P58mWGDx9O7dq1KVu2bI48AUEQhI+FRqNh8+bNLJw/j7Pn/QGwsVBRNJcVNsoXIwiSjBK7NmuITtIBULpkCQYMGkyPHj1EV7XwwchUzUd6w2dWrFhB7969efz4MT169ODq1askJCTg6elJ27ZtGTNmTIbfFJnpMxIEQfgY6PV6pk+fzqwZ04mIiqaWpyNtvB0p52JDIQcL5P/57JUkicdxOi4/T+Cve9EceBiNlaUVXw0YwIQJE1LMuyQI70pmvr+zXHCaU0TyIQjCp+Ty5cv07vkZl69c4bMSzvQs5UIhR8tMXeNpvI51N56z7Go4+Tw8+H3lqhRzLwnCu5CZ72+xsJwgCIKZLF68mMqVKpEYco/trYsxvmb+TCceAG62ar6t4s6edsXIpYnEz8+PsWPH8p79thSEZCL5EARBMIPp06czYMAAuhbNxa7WRSib5+27SrwcLNnYvDDfV8nHzz//zJAhQ0QCIryX3rtVbQVBED52ixcvZsSIEQyu4Mq3lfNl6wreCrmMQRXcyGWpZPSCBdjb2/PLL79k2/UFITuIlg9BEIR3KDAwkCFDBtOrVJ5sTzxe1a1EHkZXc2fKlCns3bs3R+4hCFklkg9BEIR3RK/X07vnZxR2tOJHH48cSzxe6ls2L7U9Henb54vktbgE4X0gkg9BEIR3ZNq0aVy5epXptTxQK3L+41cmkzGllicxkRF8++23OX4/QcgokXwIgiC8A0lJScyaMZ3PSuahTDYUl2aUu62aYRXysmrlSp48efLO7isIryOSD0EQhHdg06ZNREbH0LtUnnd+707FnVErZCxbtuyd31sQ0iKSD0EQhHdgwfx5+OV3pKBD5ufxeFv2agVtvB1ZsmghBoPhnd9fEP5LDLUV3ujJkyesWLGC27dvExcXh42NDYUKFaJ3794ZWlxQED51ERER+AdcYE7dgmaLoV2R3KzbdYsrV65QoUIFs8UhCCBaPgAwGo3s3r2bFs2a4e7igq21NXly5aJ86dLMnDmTyMhIc4doFmfOnKFTx44UyJ+fX8aNI2jDBpL+/JOHmzbxv19+wdvbm5bNm3Pw4EFzhyoI77ULFy4AUM7FfGuulHK2Ri6TERAQYLYYBOGlTz75WLp0KYULFqRFixY8PXSIPjEx/GwyMTwxkRK3bzN6xAjc3dzo88UXREdHZ+u9g4KC2L59O/v37ycpKSlbr/22FixYgG/NmlzZtYtZSiVPrKw4aWHBXisrjltYEGJpyW9qNcEHD9KwYUMmTpwoZlIUhHQEBARgb6mmgL2F2WKwUsopktsmORESBHP6ZLtdJEnim2++Yc6cOXRVqdhobU0VuTzVuPtnJhO/6/VMW7OGc6dPs+/gQTw8PN7q3iEhIXz55Zfs27cveZuTkxM//PAD33//fY6P/X+TBQsWMHjwYIarVExXq1GkEY+NTMaXajV9JIlfgDHjxmEymRg/fvw7j1cQ0hIXF8fGjRsJCgrCycmJzp07kz9//ndy78jISEJCQnB2dsbNzY2bN29SJJdlqtVp37ViDiquX71i1hgEAT6S5GPLli1otVpKlSpF+fLluXTpEteuXXvt4wkTJrBjxw4WWFjQVqnkqSQRKkm4yWQ8NZl4+u//d5PL6aVSUcRo5OugIJo2asTCJUuws7NLvtaBAwcAKFu2LLly5eLOnTsp7nX16lVsbW2xt7cnMDCQyZMno1arWblyJRUrVuTmzZvs2bOHH374gaCgIGrXrp2p55LRx8Abj925cycTxo9nmErF92o1gSZT8uvw39fl5eMvVCrkwOgJE4iPj6dHjx7ZFjuQ7a9DTj/OyOv8vjz+kGLNzL+Jmzdv0qdPH5KSkvDw8CAiIoIffviBJk2aMGnSJCpWrJipeysUCmbOnMn58+cJDQ3FZDJhYWGBu7s7tWvXZtSoUTx9+pRjx46xZ88eDh8+nFzYWa1aNYxGI5LJxLNEPS7WKp4l6pP/f2YeK4ASztZZ/qy0USkITkjI8vmCkG2k90xMTIwESDExMRk6fsmSJRIgAZKfn58kSZLk5+f32scVKlSQAKmeXC5JdnbSOLVaAqRxavVrHw9UKiUHpVJyc3OT/Pz8pLt370qOjo7J9wcklUolAVLt2rWlY8eOSXny5Emx/9XjOnfuLPXu3fvFvcaNk3788UdJJpNl6LkULVpUWrFiheTj45Ph5/6m1+Xl41wymWSwtc3w6zJOrZZMtraSewZjz8zj7LzWu3r8PsVirlgrVKgg9ezZU7K1tZUAydvbW4qKisqW67/p2HLlyklyuVwqVapU8nsrNjZWql+/vgRIBQoUyNS9HRwcUry3vb29pZYtW0oFCxaUAEkmk0kqlUpycXGRAMnW1laaPXu29MUXX0hA8nZAGlrRTXrQr5I0tKJblh7LZUiHOpWSHvSrlKW/biWcpfJly0iCkBMy8/0tk6T3q6M+NjYWBwcHYmJisLe3f+PxOp0OR0dHypUrx6JFizL066lVy5b479uHv1qNh0KR7i/6tB4v0uuZIZOxbsMGBg0ahIWFBf369aNly5ZIksTUqVNZu3YthQoV4t69ezg7O1OsWDG8vb3x9PQkLi6OJ0+eEBERwfXr1wkLC6N27drMnTsXd3d3XF1d6dWrF0OGDEkVu6urK23atOHcuXPJz18ul1OzZk2mTZuGj4/PW/3KPXjwIE0aNWKsSsVYC4tMvS5ucjkLdDoGa7Vs27aNtm3bipaP9yAWc8T6yy+/sHnzZry8vKhZsyYhISGcOHECDw8P5s2bR0xMTI7+m1iwYAE6nY4dO3bw7Nkz3NzccHNz4+nTp3z33Xf8+eefhIaGcvv27dfea+zYsUyZMgVHR0datGhBgQIFiI+Px97ePvkzKjY2FqVSyY0bN/jrr7+wt7fnyJEjlC9fnqdPn/L06VNy5cpFpUqVcJVrWNW0SJZbPh7Havnu2AOGVcpH68JOWfp8/ebIfUJzF+HUmbNZOl8QXicz398ffPIBoNFosLTM2Nj5iIgI3N3cmCCT8YNF5ou/gk0mCiYmUrd+fQICArhx4waurq4pjhkyZAiLFi2ia9euVKpUKd0aDpPJxOXLl9m2bRtqtZoDBw7QoEEDvv32W0aNGpXi2MTERKpWrUpUVBQzZ86kbdu2aLVaVq1axciRI2nYsCE7duzI9PN51dSpU5k4ZgxPrKxwzELftFaS8NRo+Ozrr5k5c+ZbxSJ8mA4cOECjRo0YN24cY8eORS5/UdP+4MEDGjZsiIODA/7+/jlW16TRaLCysmLhwoUMGDAg1f6bN29SokQJ9u3bR+PGjdO9zsKFCxk0aBA1atSgTZs2qNXq195Xr9fz448/8tNPPzFmzJhU+zt37sz+HVu51KvcWz13g0lCKc/6+a123qFCk7asXLkyy9cQhPRk5vv7oxjtYmlpyZ49e3B3dyc0NPS1x27btg2DwcAXKlWW7uUhl9NcqeTU8eP07NkzVeIB8P3332M0GpGnUcD6KrlcTvny5RkxYgQ2NjbUrVuXiIgIvL29Ux27YcMGrl+/zv79++nSpQsWFhbY29szZMgQli9fzs6dO/H398/Sc3rp9u3blFUospR4AFjIZPgAt2/deqs4hA/X3LlzqVChAuPGjUtOPAAKFizI/PnzuXDhAmfOnAFeFH0fOXKEIUOG0LVrVzp16kT//v3ZvHkzer0+S/d/eZ6Dg0Oa+19u12q16V7D39+fIUOGULt2bTp27PjGxANeTJ2u0+koX758mvsbNWpEjM7I04SsPa+XlHIZV8MTGXTwHnpT5n436owmbobHU6lSpbeKQRCyw0eRfADY29vz5MkTevXq9drjnj59irNSSR551p96cZkMo16f7gRbnp6eKJVKEhMTM3Q9W1tb+vXrh1wuR61W07Jly+R9RqORhIQENmzYQP369SldunSq8zt27IibmxubNm3K2hP6V1xcHHZv2RBmB0Q+f05ERIQYevsJOnfuHG3atEkz6W7YsCFWVlacPHmSuXPnUrJoUerVq8ee334jbNs2onbs4NTKlXTq1IkC7u6MGzeO58+fZ+r+tra2FC1alD///DPN/bt27UpO+tNiNBrp3bs3Hh4etG7dOsOtFJaWlqjVai5fvpzmfqXyRW3/5edvX+wpl8He+1FsuRWeqfNuR2nQGU1Urlz5rWMQhLf10SQfvr6+zJ49m/Xr17/2OI1Gg+VbNvlaAgq5nJMnT6a5/9y5cxgMBpydnTN8TRsbG7p164ZOp2P69OkMHjyYcuXKYWlpia2tLYcPH8bd3T3NcxUKBW5ubsTFxWXl6SSztbUl/i1fm1hJ4vT58zg7O1O+fHlWr14tkpBPiEqlIj4+Ps19Go0Gg8HA4oUL+XbYMMo+fMhRKyvuqtUctrDggKUlV9Rqrlhb0yY6mlmTJ1O1YkVu3LiR4fvLZDIGDx7Mpk2b2LhxY4p9169fZ+zYsbRp0ybdIbd79+7l+vXrtGvXDoVCkeH7qtVqypcvz7x583j27FmKfVqtliVLlmBtacHu+9EZvmZ6Sua2ZnXTIrQvmjtT5/0VFImjvZ2Y3VR4L3w0yQfAsGHDsLa2ZuLEiekekytXLiKNxrf6QoyUJJxy52bHjh0cOXIkxb6kpCR++OEHnJ2dKVq0aKau6+TkhK2tLePGjWPdunVYW1vTunVrPvvsM/Lnz8+hQ4cwGo2pzgsLC+PKlSuUKFEiy88JwNvbm6tGI3FZfG30ksR5SaJx48asX7+eAgUK0KtXL8aOHftWcQkfjhYtWrB27Vo0Gk2qfWvXrkWv1xMTHMwpKys2Wlrip1Smal0orVCw0NKSa5aW2ISFUadWLe7du5fhGAYOHEiXLl3o0qULPj4+fPvtt7Rp04ayZcvi4uLC4sWL0z136dKlFChQgIIFC2b4fi81adKEpKQkqlSpwsKFC7l48SIbNmzAx8eH8+fPY2ttw967kZRcfhGf1YF8vucOhx5GY8xk9wmAr4c9EnA8ODZDx2sMJjbdiebzPl9muD5OEHLSR1Fw+qpRo0YxdepUZs+ezbBhw1LtP3r0KHXr1uWwlRV1lZmf5sQoSXhrtfh16cLT0FCOHTtGt27daNCgAU+fPmXx4sU8fvyYr776Ks3ajfRcvXqVNWvWYGlpSdu2bSlTpkyKX16PHj1i1qxZ/PzzzykK2gwGAz179mTHjh0EBwfj5JS1KniA4OBgChYowDyVigEZ6Of+ry16PR01GgIDAylbtiwAv/zyCz/++CPXr19/6+RIeP/duHGDSpUq4efnx8KFC/Hy8sJgMLB582b69OmDUaslwNKSMhlsVQg3maiu02FRqBCXr19PUUfyOiaTiV27drF06dLkScZ69OhBz549sbW1TfMcSZLIkycPlStXpmnTphl+ziniDQ/nzz//5MqVK5hMJgCUMhlyoJ1SSRmZDCuZjGhJYrfRyAWjEQ8bFQMrutG1uHOmilHX33jOjycf8Ve7EpTM/fq5P7bejuDbow+4detWpn8UCUJGfXKjXV5lMpkoWrQo33zzDQMHDky1X5IkShUrRqkHD9ichV8Auw0GWiQl0blzZ6ZOncrGjRuZNWsWz549Q6FQULZsWRo0aJBuF0larl27xvLlyyldujTdunVL95fJvn372LdvHz4+PnTs2JGkpCRWrFjB/fv3Wb9+PZ06dcr08/mvdm3acHvvXq6o1Zmuyq+n1aKvVIkTp08nb9NqteTPn58ePXqIETCfiAMHDtC5c2eio6MpVqwYERERPH/+HLlcziylkqGZHGV22mikZmIie/bsyXJSkBFPnz4lX758fPHFF8nJc1aFhISwcO5c5Dodo1Qq+qhUuKSROPkbjczR6VhnMNC7VB7G1fDM8PtOb5IYfvg+/cu7Uvo1E4/FaA002naLan4N2JlOLYwgZIfMfH9/FDOcvkoul3P37l3gxfBUa+uUb0qZTMbAr79m2Ndfc89kolAmCk8lSWKWXk8+FxcOHjyIn58fJ0+eRKPRMGvWLMaNG5epfmKAmJgY1q5dS4kSJejVq9drz2/SpAkeHh6cOHGCUaNGIZfLcXR0xGQy4ebmlqn7pmfo8OHU2bmTccDETHxJzNPpOKLTseXbb1Nst7CwoGLFity/fz9b4hPefw0bNuTx48ds3LiRK1euYGNjQ2hoKJtWrqRPFlrUqsvlVFCrWTh/fo4kH5Ikcf369eQF12JjYzM1fP+/kpKSWLt6NQ56PYesrCj+mvd0FYWCtVZW+Op0DLz2HFu1gu+qZOyHi0ouY36DQsCLRESVzhDcn8+EkCQpWbBoUeafjCDkkI8u+Xhp/PjxTJ48mdu3b6caldKzZ09m/vorLcPCOGlhQa4M/NKQJIkfdToOGwzsXLqUihUrUr16db755huKFy+OSqXKdOIBsH37dhQKBd26dcvQ+aVLl04x4sVkMjF//nw+//xzbt68mVxVn1V+fn5MnTqVkSNHIgfGZaAFZJ5Ox1Ctlm+++Yb27dun2Gcymbhz5w716tV7q7iED4uNjQ1ffPEF8OLfgFuePPSSy7HNQkGzTCZjoExGv717CQ4Ofuu1lV6Ki4vjjz/+YOHcuVy9eTN5+5YtW9i9axeVqlalZs2amU7sd+/eTfzz55yxtHxt4vGqAWo1sZLEyH9CqV/AkQqZWP12591I5l58yu52JbBUpvwxtedeFFtuh7N8+fJse90EITt8VAWnr2rTpg0Gg4Fp06al2H716lWmTJlClerVeaRQUFOr5fa/fbPpSZIkvtZqmaLT4efnR6VKlfDw8GDEiBHs2LEDlUpFXFxcmsWgrxMZGUlgYCBNmjTBxiZrS23L5XLatm1LUFAQu3fvztI1/mvEiBH88ssvTNDpqKbTsUqvJ+k/vXM6SWKTXk8drZavtVokwMfHJ9W1tmzZQlBQED179syW2IQPT0xMDM8iI6mdheT8pdpKJZIkERQUlC0xbdmyBXc3NwYPGkSRoCD2WFlx18aGRzY2XLS25jvg1pkz/Prrr6xZtQqdTpeh62o0GgLOnWOoUknJTD7f79RqvBRy1lx79uaDX1Ha2ZrHcVrOPEk52u1EcCzDjj6kc6dOfP7555m6piDktI82+ShfvjxXrlxh0b9NjQaDgT59+lCmTBmWL1/O/fv3MQB39HqKJyTQLCmJPQYDxle+ZO+aTHyn0ZAvMZEFej1FixYlICCAEiVKsHz5cnx9fTEYDOTNmxedTkdYWFimYgwICECtVr/1uHtPT08KFizI77///lbXeUkmkzFq1Cj279+PU+3a9NZo8NBoaJqUROekJJonJZFfq6WzRoNUpQpbtmxJHpUzfvx4bt26xc2bNxk7diyfffYZ7dq1o2bNmtkSm/DheTkE3P4thnG/7D2Ojc3Y6I7XWbp0KZ06daKpTsdDa2u2WVrSVKnEWy7HUy6ngkLBRAsLgq2s+N3SkmuXLvHbwoUZSkACAgLQ6/X0y8IkhgqZjP4KJbuDoojUGDJ8nrejJae6lqFu/v+fWG3vvSj6/H2Pho0asXrNGrOvlC0I//XRdrvAiy6Ko0ePMnnyZCpXrsyqVatYsmQJn3/+OSqViujoaEaOHMmSJUs4aDKxNykJOWAnl5MkSegkCVtLS6rWqkWNGjVwdnYmMTGRnTt38uWXXyZPBubj44O1tTWXL18mX758GY7v4cOHFCxYEIssTPP+X0WKFOHs2bNIkpRtHzSNGjWiUaNG3L17l2XLlnHr1i3Co6Kwc3Skq5cXffr0Se4CatGiBT/88AMzZsxgwoQJwIt5QwYNGsTUqVPFh98n7OXokvi3qG1/OXOIjY0N9+/f586dOxgMBnLnzk2ZMmVS1XYBBAUF8fvvv/Po0SNcXFzo2bMnT548of9XXzFAqWSehcVrl7hXy2R8rlJRQi6n3sOH/LF6NZ/36fPaf8v/+PvTVKnEI4uTGH6hUjFap2Pf/Si6lciT4fPyWKu4E5XEvvvRPIrTsflWOJ07dWL1mjUZmqFVEN61jzr5gBeTBh08eJATJ04wYsQI+vXrl7zP0dGRRYsWceXKFZ48eUKbNm0ICQlBo9GgUqlwcHCgRIkSKd681tbWdO3aFU9PT7Zs2YKHhwflypXjs88+Y+PGjdStWzfDycTTp0/TnWkxs9zd3Tlw4AARERGZmtwsIwoXLszUqVNfe4yFhQVz5sxhwoQJyWt3VKlSJUsjloSPi4ODA7ns7TmTlET7LC5rsPnfadPbtWtHTExMin0KhYKqVasycODA5OnQJ06cyPjx48mVKxelS5fm0KFDzJo1C0cHB+oqFMx9Q+LxKh+FglUWFnS6epV79+69dgh9XGwsJd9i9mRnuRxnuYzniZmbhl1rNLH0chibbkVgaWHBsmXL+OKLL0TSL7y3PvrkY8qUKZw6dYpTp06lOfW6TCajT58+9OnTBzc3twxPLuTr60tUVBTHjh3j8uXLfP/996xatYrdu3fTrl27DF1Dp9O91YQ/JpOJ69evc/78eZ4/f45MJmPXrl1vHDWTkxwcHGjQoIFZ7i28nxQKBV/07cuK//2PnyUJq0x8ISZIEqO1Wubq9dja2lK5cmW8vb3JmzcvCoWCuLg4Hj16xJUrV/jss8+YNGkSnTp14ueff2b8+PGMGDECKysr9Ho9K1asoH///ngoFCgy+aXcXqmksFLJqZMnX5t86PV63nYKL6UEBx9G4+fpQIncVlgo0k5mDCaJ21FJ/BUUxbobz4nWGnF2zs3evfvEFOrCe++jTz7kcjmjRo2iRYsWPHv2jGLFiqU6xsrKCiB5UqCMatq0KdevX2fo0KHUq1cPKwsLjh8/joeHB1WrVn3j+QqFghs3bpCUlAS8aFUpVapUhrpuDAYDq1at4sqVK1SsWJFmzZpx4cIF+vTpw86dO9m8ebNobhXeG/3792fmzJlsNBjoncHWjzCTiQZaLbckiTZt2lCrVq1USbWjoyOenp7UrFmTJ0+esGHDBqZMmUKrVq0YN25c8nEqlYp+/fpx48YNVs+fT1ImkyC5TMYghYLvAwOJjY1Ns0VPq9Wi1+uJeIvuJUmSiJHJCIvS0mbHTVQyKJbLiqK5rbBRKZABiQYTQZFJ3IhMQmOScJDLaC9XcEipRG1nj4eHB8ePH6d27dpZjkMQctpHN8lYWsLCwsiXLx9qtZqHDx/i4uKSYn+7du04e/YsI0aMyFQzZVJSEksWL+bhw4dYyeV0lcu5JUmcMhpp3KQJDRs2TPVhaTAY+Oeffzh9/Dj3Hz/GVibDVaFAAp6ZTMSZTHgXKECN2rUpX758ui0Yu3fv5ujRo2zZsoVWrVolb//zzz/p0KED3377Lb/88kvGXyRByGGtWrTg7P79nLGwwPsNXRMJkoSPRkOwpSVfDRqU4eGukZGRTJw4ka1bt6bZAnnx4kUqVarESSsramZyWPozk4m8CQn06tUrxfooJpOJa9eusXPnTqKionCXybhnaZnp1hWAowYDdf/9MfKbhQV64ILJxHXJRCJgAqyAYsiopFBQSS6nkkKBtUzGPZOJSlotNnnz8vTpU0JCQtJcdVsQckpmvr8/2tEur8qbNy8tW7ZEp9Oxbdu25O2SJLF48WK2b99O7dq1M5V4xMTEMG/OHKIeP2a2hQUh1tYss7LimJUVY9VqDuzbx6zp05Or3wESEhJYtGABa9euxfvpU7ZZWhJlY8MdKyvuWlkRYW3NFktLPENCWLNmDUsWLkxzZVy9Xs+ZM2cYNGhQisQDoGXLlgwePJglS5akub6GIJjLilWrcPT0pJ5Ox/U3DEsf/W+LR2YSDyB5+vX05rtR/dvqkrk2zhec/50m/ebNm1y5coWzZ8+yZcsWfvnll+QZirds2cIjg4G9mRx2/9JCgwFrtZqWSiV91WoGqtUst7TkjJU1gVbWXLGy5ryVNWusrBimVlNLqcT638+tQnI5fWQy4qKjUSqVnDp1KksxCMK78Em0fLy8btOmTTl9+jS+vr4ULlyYkydPcvfuXXx9fWnfvn2Gkw+NRsOCuXPRh4Vx2MKCEmm0TgQYjYzQ6ThiMKBWKHB1dSUyIgKlVstflpZv/NV1zGCgjVaLvZsbg77+GgsLCwwGA0+fPuXhw4ds2bKFEydO4Ovrm+rcU6dO4evry+XLlylTpkzGXiBBeAeCg4Np1qgRQbdv01MuZ6BKlWqdl4MGAw2TkmjTpg116tTJ1PVNJhNTpkyhYcOGrF27NtX+n376if9NmUKIlRV2mWyZMEoSyv+s2GthYUHnzp0ZNGgQVapUQSaTUbFsWRyuX+eQlVWGi1oB7ptMFE1MxCBJ7LOyonEWJgy8azJRJCGB33//XcztIbxzn/T06umxt7fnyJEjdO7cmT179nDmzBlKlCjB4MGD8fb2zlSrx+HDhwkPDeWspWWaiQdAZYWCw1ZW3DQa2Ws0MvvJE5AkTlhbUzoDxaB+SiVHZDJ8nzxh0YIFKNVq7t+/n2Iis5e1Iv+V3nZBMDcPDw9OnDnD7Nmz+W3hQhY/f05llYoCkoQCCJPJOKbXY2NjQ61atTJ9fblcjq+vL+vWrcPPz48vv/wSuVyOJEn89ddfTPv1VwqZTHyv1eItl9NTqSRvBkenBP/7O23NmjU0atSI4OBgGjRowOnTp6lWrRp6vZ7AwECePn/OP0Yjo3U6pmRwjaQoSaKlToedrS0WSUk0zGLBeGG5nNoqFTt37uTMmTMcO3aMW7duZelagpCTPolul5fUajVVq1ZFp9NhNBpp3bo1hQsXzlTiYTAYOHfqFF8oFJTNwAdEcYWCRgoFjyWJRZaWGUo8XpKAXHI5Dx49Qvq36G7YsGGMHTsWJyendCcVW7ly5VtPsy4IOcXBwYHx48fzMCSEzZs3U6RDB+Lq1CGiVi2cW7XCxsYGHx+fLI/YqlWrFtWrV+err76iUKFCdO7cmdKlS9OqVSssjUby8GJBt7FaLZ4JCXRLSuLcG7pJTJLEDJ0OC5WKp0+fsnnzZsLCwvjzzz8pXbo0Q4YMwdfXlyFDhlC9enV++OEHftXpGKzVkviGxuU7JhO+Oh1Pra2p27AhBeTyTLWY/Fd+SSIiLAyVSsXt27fZsmVLlq8lCDnlk/uGGjVqFDqdjvHjxxMVFUWePBmfyAfg8uXLxCQkMCCNSY3Ss0ivJ69MRqdMJAQb9Xp6aLW45s3LN926kT9//hT769evz4YNGyhevDjffvsttra2xMfHM2vWrDSbmwXhfaNSqejQoQMdOnRI3vbgwQO2bt1KoUKFsnxduVxOp06dqFq16ouari1bKA1stLSkg1KZ/MUeKUms0utZqNNRPTGRuRYWDP7PCLEoSWKxTsdCo5HgfxOUMWPGYDKZMBhezELq6+vLkiVL8PHxwdXVlevXr9O3b1/gxXt/rcFAH6WS/mo1hWUyZDIZRkliv9HIfJ2OfUYjueztOXbyJDNmzOBtB8krAKPRyLx586hQoUKK1xdedE0FBQVx4cIFAgMDiY6ORqPRYDAYsLS0xMrKioIFC1K5cmUqVKiAnZ3dW0YkCKl9MjUfrzKZTNja2lK6dGm6d++eqXN///13rK9f58y/w3PfJEGScIuP52u1mkkZnHxsr8FAy6QkKlSqRJeuXdNsxZAkib1793LgwAFsbGzw9vYmKCiI+Ph4LC0tsbW1JSQkRAy3FT4oBw8epGHDhowZMyZbJsv7/fffcbl2jQOv+bFgkiS+12qZpdczx8KCof++Z/4yGPhSpyMKKF+pEhUqVCB//vzY2NggSRIRERHcv3+f8+fPc+fOHWrXro2npyfr169PTqwKFizImTNnOH/6NPEaDWqZDEuZjHiTCRPg6eaGQ+7cXL9+nSZNmlCoUCF2//YbQRnsrklLk6QkFA0bsnvPHgD8/f3ZvHkzSqWSM6fPcvHiRWLjXkzU5mTjiq3KCaXMAplMjlHSoTNpCI9/hM6oRSaTUbhQEar6VKFp06Z06NAhW2ZkFj5OoubjDeRyOVZWVvj7+9OsWTNy5cqV4XMTYmMpl4l7PTSZiAMaZ7AJOUKS6K3TUax4cbp1755cvf9fMpmMZs2a4ePjg7+/PzExMdSqVYsCBQqwbNkyChUqJBIP4YPzsjXh1S4Xo9GIwWBAnYUvZIVCgfEN58hlMmZaWiIHhmu1VJDLuWAy8Y1WS8nixRnQpQuOjo4pzpHJZDg7O+Ps7EyVKlW4ffs2K1eu5OTJk9jZ2TFo0KDkIf2tWrVKnhMoJiYGvV6PlZUV7u7u5M+fH5lMxo0bN/j9998pWbIk93U6fpAkfBQKKioUFPi3tSQjQk0mDhmNzGjcGIPBwK5du/jss89ITEzERm2Pt0NVfJ174elVCg/bktiq0/7sM5oMhCXeIzjuOo/jr3Nq9xXWrl3L0K+H07dfH7766qsMT8goCGn5JJMPgPnz59OtWzfu3LmToQnBXjIaDKgyMyT33/91zOA547RaElQqBnXtmm7i8SonJycaN26cYlvr1q3ZunUr//zzT4r5CAThffeytSM2NhaNRsPBgwcJDAzEYDDg5OSEj48PderUyXBiHRcVRZEM3vtXCwv+Nhr5RqvlgslE/fr1adGiRYa++IsUKZJ8XN++fVPNJaRSqShXLv2fLSVKlKBTp07JXaYzjUZM/w7RL6xUMkihoK9Khc0bYlmu16NSq4mJiSG/Z0GehoaQ36EUakcbepSYgoNF3jc+FwCFXEk+26Lksy1KVdoAEJZwj9NPNjF31gJ+/fVXmjVtxpSpU8SIOiFLPqmC01d16dKFRo0asXfvXqKjozN8nqWNDc8z0VP1srE39WwdqcVKEiuNRnz9/HBwcHjzCemoUaMGTk5OLFiwIMvXEARzKF26NEqlkkuXLjFnzhwiIiKYNGkSa9eupV27dhw8eJClS5cmz53zOiaTieCQECpmcDSLXCZjoErFRZOJMqVLZzjxAHjy5AkJCQk0bNgQDw+PDJ3zX5UrV6ZkyZLkzp07eYHGL7/8ErvSpflOp6NUUhJHDemvdhspSSw0mbC2tmHC+AkUkPnwXaUtDK+wkUHlf8fBIi86Y9ZHwuW1KUTbIiMZW+0QnYqMI+D4dSpVrMTkyZMz9N9DEF71ySYfMpmMZcuWERcXx5QpU9KczCsthby9OWA0EpXBBCSfTIYMCMzApEN7DQYSTCaqV6+eoWunR6FQUKVKFTZt2pTpKeMFwZwsLS2pWrUqZ8+epXz58ly9epUffviBbt26sXTpUg4fPsyDBw84ceLEG6918+ZNNHo9dTNR6N1dpcIKyOPikqkungsXLqBUKvHz88vwOf8lk8lo1KgRERER3Lx5EwcHB0qXLk2v3r0ZOXo0qvz5qZ+UxIo0vujjJYmWGg3PDAbkOjuGVlhL52ITcLcrnnzM1tuTWXF1GG9b5mehsMYnXwe+rbCF2vl6MvansVSrUo0rV6681XWFT8snm3wAeHp68vXXX6PVapk1axaPHj164zmVK1dGB6zKYKafRy6nuULBIr3+jW/6AKMRZweHVP3LWVGoUCHi4uK4e/fuW19LEN6levXqkZSUxNSpU7GxsUmxr2bNmnTs2JFz58699hqSJHHkyBGs5XLkmfiytZXJqKZQEBkZmamY7969S7ly5bDOxCi4tBQoUIA8efJw/fr1FNvz5MnDwCFDqObjQx+Nht2vtIBcMhrxTUzknMFA+bwt+b7iNvLbp+4KKZrLh8fx14nRhr1VjC+pFBa0KDScryusJfReHJUqVmL+/PnZcm3h4/dJJx8AM2fO5NChQ3h6ejJnzhxWrlzJrVu30Gq1yce8rGw/fPgwCxcuBGCuwfDG8fsvDVSruWQyce4NrRB3JIk8mZhK+nXy5n3Rt3v79u1suZ4gvCsvh5WnNXsvQO3atXn+/Plrk/mAgADu3LmDtYMDPklJzNTpMnx/R5kMTSYm6jMajTx58iTVcPiskMlkFChQIM0fQnK5nI6dOlGieHF66XQs0umortFQITGRGxJ0LT6VhgX68TDuMs8TU59f2rkeY6rtxdEye9d7KWBfhuHlN+KTtxNDhgxhwoQJb926Inz8PtmC01fVq1ePVq1aYTKZSExMZNGiRcjlcpydnVEqlcTExJCQkIBaraZLly60adOGz7p3p6tWy2YLC9TpNM9eNRqZp9dzVCbDSqWiRWIi+6ytqfxKJX+MJLFFr+eMycRxkwnto0fMnj0bNzc3ChYsSPny5bG0zPwi3S+H5xpe00csCO+jl3Pv3Lt3j6JFi6baf+/ePaytrdPtFnnw4AFbtmyhUqVKdOvWjd27d/Pd4cMYJIkfMjBMNA6wyMR7Lj4+HoPBkC1Dg+FF0e2dO3fS3CeXy+nctSuTJ09moFaLpUqNg2Ue2hYaxbEnq7h/MzD5WO9clWhd6Ac87UoCLxIbS6Utl57tR2tMpJpb22yJF160grQrMgp7dR7Gjx+PRqNhypQp2XZ94eMjko9/HT16lMDAQI4fP469vT0BAQHcvn07ucq+QoUK+Pj44OTkBMCmLVto07o1zXU6VqhUePynqG2TXk93rRaXPHno0KULJpOJDRs24BMZySq1mtZKJT9ptfxmNKKRJPLlzUthT08sLS3RaDQ8evSIc+fOsW3bNqpXr06zZs0yNb4+NjYWgNy5c2ffiyQI70Djxo3JlSsX06dPZ+nSpSn2PX/+nOXLl1OxYsVU50mShL+/P1u3bsXd3Z1OnTqhUCho1aoVSqWSUX//TQ2FglqvqQHRSRIXjUacEhJISEhI1e2Tlpe/8rM6L8frrpkWBwcHatas+eKzSu1K60I/sPL6N5QrX4YZo7dSunRpLl26xORJk1l4+XMGl1uFu+3/134ERQcQEPYnpXLXSXeobVY1KPAlSrmaqVOn4uDgwMiRI7P1+sLHQyQf/9qyZQujRo2iWrVqqNXq1w6LA2jWrBl/HzhAu9atKRgXRyulkgFKJVUUCmJMJj7T6ejUpQsrV61KXklzxowZdOvWjZ47dmCv05Ekl1OnYUOqV6+eZp1HdHQ0p0+f5ujRo1y9epVevXpluGn38ePHAEydOpX4+HiaNGmSrR+OgpBTrKys+Pnnnxk8eDB6vZ7hw4fj6enJkSNH+PHHH9Hr9dStWzf5eJPJxI0bNzh27Bi3b9+mcuXKdOzYMUWy3qRJE+7eukXv4GBuKRQo03kvbDMYiJQkou/dY9KkSbRr147KlSu/9r1ja2uLQqEgIiIiW55/ZGTkG0e7VatWjSNHjtDQcwBHgldQukwpTpw8kdxKWrRoUZo3b06lilXY82AufUsvTD63idcgvBwqYKNyzJZ4/6uOZ080hjhGjRpF0aJFadeuXY7cR/iwfZIznL7Os2fPCAwMpGHDhhk6Pi4ujj/++IMF//sf115ZwMnS0pKwsLBUzyEiIoJ8+fJhZWXFkCFDMtRUGx4ezurVqwkLC2PAgAEZmtxnyZIlREVF4erqyqVLlxg0aBDz5s0TCYjwwViyZAnjxo0jLOz/CyQVCgV2dnZ4eHigUCiIi4sjODgYnU6Hp6cnjRs3pnTp0mleLzg4mBkzZrDN0pK2//4g+C/fpCSe5c9Pz88/Z8eOHVy4cAEfHx86deqU7rw7JpOJX375BblcTr58+ZAkCWtra4oVK0aZMmUyvUbN1KlTKVSoEJ06dUr3GJPJxKhRo6mRpytHglewfv16unTpkuq4ZcuW0a9fPyZUP4qdOmUraJI+lkRDLLmtsjY0+HUkSWLl9WE8MV7mxq3r2dYlJbzfMvP9/ckXnP5XxYoVadmyJRqNJkPH29nZMWDAAK7cuMG5c+fYtGkT5cuXp169emm++Llz56ZmzZrkz58/w29IZ2dnBg0aRL58+fj9999JSEh47fFhYWHcvHmTyZMnc/HiRZYsWcKCBQtYt25dhu4nCO+Dr776ikePHtG/f38UCgX9+vWjS5culC1bFqPRiEajwdHRkSZNmvDNN9/w7bffppt4wIsVdb08PVmWTh3UPJ2OUwYDterUwc7Ojs8++4yuXbty7tw5tm/fnup4rVbLkSNHmDppEuHh4Vg/f47T1avkuXaNWH9/Vq5cyc/jxrF3717i4+Mz9JwfP35MaGgoJUqUeO1xcrmcPM4uhCe9KCwtXrx4mseVKFECSZJI0Een2rf86tesu/ljjhSHymQy2hf+CU2CnkGDBmf79YUPn0g+/mPq1KlYWVlleoiqTCajatWqdOzYkSJFirx2qF5kZGSm10ewsLCgd+/e6PV6duzYke5xL2tLvLy86Nq1KzKZjH79+tGoUSPmzZuXqXsKgrmp1WoiIyPx8vKiZMmSVKlShXbt2vHVV18xYMAAevbsSb169TLcHVmsVCnOSFKqL9wFOh1DtVrq1q1L2bJlk7dXq1aN9u3bc+LEiRTDX+Pi4lg4bx57du2iQVwcp6ytuWdjwyErKw5YWXHVyorL1tZ01Wo5eeAA/5s5M0ULTnoOHjyIo6MjpUqVeuOxcpkMlcICmUxGQEBAmscEBASgkCuxU6f+odOwQD8sFNZoja//MZNV9hbOtC00mk2bNrJ169YcuYfw4RLJx3/06NGDqKgoSpcuneUJutq0acPZs2e5fPlyqn3+/v4EBgZmaUpiBwcHmjdvTkBAQJrJjSRJbNu2jQcPHrBq1SqsXln8rlWrVgQEBIghcMIHJzAwELdsGoLu7u5OlNFIqCRhkCR26vU0TEpisFZLbT8/WrZsmeqcmjVrUrx4cTZv3ozRaHwxIm7ePJKePuWclRVrLS2poVCk6tIso1Cw0NKSa1ZWOMXFsXDu3Nf+KAkMDCQwMJCWLVu+cWkFSZKIiooit5UnJXPXZuqUX1Nd+9mzZ8yYPouyzg2wUaWuISnmVIN+ZRdhqbTNsc+FCi5NKZunPv37DSAmJubNJwifDJF8pKNmzZqp1ny5cuUKM2bMYNq0aZw+fTrdN2z79u0pXrw4rVq14sCBA5hMJkwmE3v37qV169a4u7u/tnn4v4xGI1evXuXIkSPAi1+DZ8+eTXFMQkICq1at4uTJkyxevDjVHAkxMTFYWFiImg/hg6HX6zlz5gxRUVFZGm6elpfX+UKjoWBSEm00GoLc3OjVqxdt27ZN80tfJpPRvHlzoqKiuHbtGhvWrSMxPJxjFhZUyEA9RwG5nOMWFjhqNPz+229pfm7cu3ePtWvXUq5cuTRH8vxXdHQ0cQmxeNqWpFWh7wgLiaBC+YrMmTOHAwcOMH36dCqUr0hcZBLNvYalex1Jkth8eyIHH/32xntmhUwmo23h0URFR7FmzZocuYfwYRKjXdLh4ODA3r17uXPnDs7OznTr1o19+/ZhbW2dXOhWrVo1Nm/ejKenZ4pzLSws+Pvvv2nXrh2NGjUid+7cGAwGYmJi8PLyonfv3hkuQrt9+zbr168nKioKGxsbEhMTUSgU+Pv707RpUxISEjh37hzHjh0jPj6eTp060a9fvxTX0Ol0rFy5klatWmXb6yMIOUWSJObOncuvv/7K06dPUSgUGa7BepOXkwfeKVCAgm5udPHxSfX+TYunpyeenp6cOXPmxQq0lpYUz0QhqYtcziq1mjqhody+fZtixYoBL7pJjx8/zu7duylQoADdu3fP0A+ECxcuoFKoKeRYGRuVA1+X+4O9D+bz/bcjMJj0KBVqyjk3olnZIThZuad7HZlMhoXChmPBf+Dn0Qu1InuSvFc5WuSljHN95s9bwKBBg8QPIAEQyUe6NmzYgL+/P97e3tSuXZsbN26wYcMG2rVrh0KhYP/+/QwYMIAGDRrwzz//pJpW2dPTk/Pnz3Py5EmOHDnCpEmTqFGjBh07dszwmy84OJhly5bh6+vLjBkzqFChAmFhYcyePZtff/2VsWPHEh8fj0qlokuXLqjValauXMm8efPo06cP1tbWBAUFMXz4cB4+fMiGDRty4qUShGw1btw4fv75Z/r06UPfvn0ZN25cti0TEBwcjLW1NYOHDMn0l2ChQoU4f/48ueRyumRivZiXaisUlFQqOXXiRPIU6idPniQsLIxatWrRokWLDK3Wq9VqOXn8FBXyNE3uTsljXYCeJaejMcSToI/GVuWEhTJjU703KvAVtdy75Uji8VJNt84sCPyCo0ePphgmLXy6MtXtMmXKFKpUqYKdnR0uLi60adOGW68MLwXQaDQMGjSI3LlzY2trS/v27TNUaPW+sbe3p379+owYMYJTp06xceNGOnfujEqlQi6X07Rp0+SWkfS+1GUyGbVq1UqemyB//vyZ+sA7dOgQ+fPnZ/fu3VSoUAF4MW361KlTGTx4MAaDgQULFhASEsKqVatYtGgRX3zxBUOHDiVv3rx4eXlRpEgRTp48yfbt2zPUnCsI5vTkyROmTJnC2LFjWbZsGdWqVaNRo0Y8fvw4w4s/vs6tW7coWLBgln59u7i4oEtKoo9CgVUWzpfJZAxWKLhy9SoTJ05k69atuLi48PXXX9OuXbsMJR4Af/75JwkJiTTI/1WqfZZKW3JbeWQ48Xh5Ti5LN+5EnedR7NUMn5cZ3o5VcLPzZsGChW8+WPgkZCr5OHbsGIMGDeLs2bMcOHAAvV5Po0aNUgz9HD58OH/++SebN2/m2LFjPHny5IOeZGb+/Pkolco015koUaIEdevWZdu2ba+9hlwuRy6XZ2qqc5PJxOXLl+nbt2+a/d2DBw8mKSkpxZBdpVLJkiVLuHPnDj/++CNdu3ZlxYoVBAcH06xZswzfWxDMZcOGDSiVSr755pvkbd27d0eSpDcuJvcmISEh3L9/n2rVqmXpfKPRiBFeO0Pqm9RSKHhZ8VGhQgV69+6Nl5dXhs8/ceIEJ0+epKXXt+Sxfvu1ZF6SJIldQTPYfHsiJin7V8KWyWT45O3Ejh3bM71on/BxytS7aN++fSker1y5EhcXFy5cuEDt2rWJiYlh+fLlrFu3jnr16gGwYsUKSpQowdmzZ/Hx8cm+yN+RGjVqcOfOnXR/KTk7O/P8+fPXXkMmk1GkSBFCQ0MzfF+j0YjRaExeIO6/Xm5Pa84Pb29vMa2x8EF69uwZbm5uKWb4zJs3Lz169GDTpk1UrFjxjbN/vvT8+XOOHTvGlStX0Ol0yGQy7OzsMjSMNS3R0dEA2GXp7Bfs//0c+e6775g1axaJiYl06dLljStZa7Vadu36k1OnTlLHoxe+7l3fIorUZDIZ7YqM4lHcVSTJBLLsH4tQ3Kkm2+8auXDhQoYncRQ+Xm/1L+zl0KmX651cuHABvV5PgwYNko8pXrw4+fPn58yZM2leQ6vVEhsbm+LvfdKqVSvCwsKIiIggLi4uxT6NRsPhw4cpX778G69TrVo1goKCMjykTaVS4eLiwv79+9Pc/3J7ZkbNCML7rkCBAskTbb1q+vTp2NjYsGbNmgy1ID548IBZs2Zx69Yt+vbty4QJE6hSpQpxcXFs3bo1S0NLnz17BkDGpgtLW/y/923Tpg3ff/89t2/fZsrkyWzfvp0nT56kGN4vSRKRkZEcOHCAqZMmcfb0KZQyBWWdG+RI0aaXQwX8PD5DwoTOmPFVfTPK2So/VipbLly4kO3XFj48WU4+TCYTw4YNo2bNmslfgKGhoajV6lRZfN68edP91T9lyhQcHByS/zJSef4u9erVC6VSSbly5Rg6dGjydpPJxHfffUdkZCRffZW67/W/unfvztOnT7l//36G712jRg02b97Mnj17UmwPCQlh9OjR1KlTh5IlS2b8yQjCe65r166oVCrGjh2bIkHInTs3w4YNIygoiGXLlr12ll+TycQff/xBuXLluHv3LtOnT+f777/n6NGjrFixgjNnzhAYGJju+WnRarXcvXsXS5WKM0Zjlp/fGaMRmUxGdHQ0s2fOpJ1cztfAlRMnmDZtGj+OHMmsX39l9rRpjBs9mokTJ3Jwzx5aJyURaGVFNbmc368OJFqT8VbUzDBJRmZd6Mz+B4uz/dpymRx3uxJcCBDJh/AWo10GDRrE1atXOXny5FsFMGrUqBT9u7Gxse9VApIrVy42bNhA27ZtWbNmDfb29lhZWbF161bu3r3L4sWLk4fNvU6DBg0oWrQou3fvZtCgQW+cRAigVq1aBAUF0aJFCxo3boyfnx/3799n7dq1ODk58fvvv2fHUxSE94ajoyP/+9//6NevH3fu3KFv3744ODiwa9cuVqxYQfXq1bl+/Tq//vorzZs3p2LFiskLN7508+ZNwsPD2bNnT6olDnr37s3SpUs5ffp0hlosXzp//jw6nY6ePXuyfO1axkkSFplsfZAkiQWSRLMmTVi+dCneMhlrLSxQy2RMlCROGo1cMBp5EB6OCXCVyahkZUUthYJc/95rl5WcQgmJnAhZT0vv4Zm6f0bIZQrK5mnI7aizmCQjclnm1qV5Ew/rkvifP5at1xQ+TFlaWG7w4MHs3LmT48ePpyiWOnz4MPXr1ycqKipF60eBAgUYNmwYw4e/+c1i7oXl0hMQEMCiRYs4ePAgJpMJX19fhg4dmqk6luPHj+Pn50fz5s0z3OdpNBrx9/fn7NmzhIaGYjAY6NGjB1OnTk23HkQQPnS7du1iypQpyZPp5cuXjwEDBvDDDz8QHh7OwIED2bFjB3Z2dhQtWhQPDw+sra3R6/X4+/un2U360s8//8zMmTOZMGFCuvcPDg7m9OnTPH/+HIVCQVBQEF26dGH06NGUKFGCtZaWdEtncbr0nDUaqZ6YyKpVq/j888+Zr1IxIIMjXF41XKNhuWTFT9WPoFJkbpmGjDCY9MhlCuQ5UPdxIewv/rgxkujo6AzX7ggfjhxbWE6SJAYPHsz27ds5fPhwqirtSpUqoVKpOHToUPK2W7du8ejRI6pXr56ZW713KleuzJIlSyhatChdunRh/fr1mS6grV27NmPGjGH37t0cPXo0Q/3OCoWCatWqUa5cOTQaDT/++CMrVqwQiYfwUWvVqhVnzpzh2bNnPH78mIcPHzJmzBhUKhVubm5s376dmzdv8tVXXyXPu7N+/Xq2bNlCWFgYGo0m3em8nz59+tq1lfbt28eMGTN48OABlSpVwsHBAb1ez7Vr18ibNy9NGjZkuMHA/UwsvxAlSXyh11PM25vbt29jLZPRI5PJy0v91WriDLFcep52PdjbUspVmCQju+/N4XbU2TefkAk2qlwAYqp1IXPJx6BBg/jjjz9Yt24ddnZ2hIaGEhoaSlLSi+IkBwcH+vTpwzfffMORI0e4cOECn3/+OdWrV/8gR7r8l1Kp5Nq1a8yePTvLcw60adOGMmXKsGPHDhYvXkx4ePhrjw8PD+e3335j586djBw5knHjxmXpvoLwIcqTJw8eHh4o0xjeWqxYMaZPn865c+dITExMnslXo9FgMplYsmRJqnPCw8P5448/0l1bKTAwkH379vHzzz/z8OFD1q9fz9mzZzlz5gwPHjzgyy+/ZPXatdi5u1NPp+NmBuo/Qk0mGup0hFlbs3P3bgL8/akvk2GXxaLRYnI5xRVqHsflzJwcAAqZkqCYi+y8Oz1b131RyV9MG/DyO0P4dGWq5mPRokUA1KlTJ8X2FStW0Lt3bwBmz56NXC6nffv2aLVaGjduzMKFH8/EMhs2bCAoKCjVjKZvEhISQteOHTlx5gweKhU9lEr23LnD5EmTKF68OMWKF8fd3R1LS0s0Gg0hISHcunWLmzdv4urqyu7du8VcHYKQDplMhkqlolevXphMJgYNGsSoUaMwGAz079+fXLlycfjwYYYNG0ZSUhKxsbGEhobi6uqa4jonTpygVq1ajBkzJsV2Hx8ffv31V/r168eMGTM4fPw4zRo1ovLdu/SUyxmgUlHmP9Ot3zeZWKLXs8xkwsLJiUP791OsWDFiIiPJ95bP1wlIMqTdrZQdZDIZnYqOwyQZs3VkjeLfGhK9Xp9t1xQ+TFmq+chJ72vNx38dOHCAXLlyUbly5Tcee+fOHerVro0sIoK5CgUtlEqUMhmJksQGg4FlBgMXjEZ0r/ynkMvlVKpUiQEDBtC5c+dMJzuC8ClLTEykW7du7N69G6PRiEqlQqfTUapUKerWrcuGDRsIDw8nd+7cuLm5JSf9V69eZf78+QwaNCjVNWNiYnB0dOSPP/6ge/fuL0aszJ7NbwsXEhoeTiW1mvwmEwogVCbjlF6Pva0tn3/5Jd999x3u7i/WWKlTqxbuZ8+y9pVVpzOrUqIWtUsrOhcbn+VrZNST+Fs4WLimuTJuZt2JOs/CwC+4e/cu3t7e2RCd8D7JzPe3WNslCzQaDU2bNsXd3Z2HDx++9tjnz5/TtGFDbCIiOKxWk++VUS7WMhlfqFR8oVKhlyTumkwkAs/+7R+WDAY6deokEg9ByCRra2t27NhBWFgYu3fvJjExkXLlyuHr64tMJmPGjBns3r2bs2fPEhgYSHx8PI6Ojly/fh2dTpfmNV9ufzlSzdHRkQkTJjBmzBh27NjBjh07iIyIwGgwkC93bpY2akSXLl2wsbFJcR1Xd3duvkVrglaSuG8yUVmdO8vXyPC9jInMv/Q5lfO2oF2R0W99Pb3pxQKB2bVKsfDhEi0fWdS/f3/Onj1LQEBAmv3RL40YMYLfZs/mHwsLvDIwvPalf4xGqiYlMWP27BTziwiCkHOaN29OaGgo/v7+qYbDz5w5k1GjRvHo0aNU3TWZsWvXLlq3bo2/tTWVM7Ey7kvr9Xq6aTSMrLKTvDY533pwLHgNifoYmnoNzpZr7Xk0h/j4uFRDpIUPX46NdhH+3+LFi7l06dJr12xJSkpi+W+/0Ucmy1TiAVBBoaCdUsnCuXOzteBLEITUTCYT+/fvx8LCgosXL1KvXj2ePn2avG/Tpk389NNP9OrV660SD3iR4OTPl4+FWax7mKc3UsSh8jtJPAD8PD6jqddgTJLprT+LHsddo2yZsiLxEETy8TZiY2NxcnKib9++ae7fvHkzkTEx9M/CWH6AQUolt+/d4/Dhw28TpiAIrxEaGkrVqlVp0qQJgYGBlC5dmmPHjpE/f37Kli2Ll5cXnTt3pmHDhsydO/et76dQKBgwZAhrjUZOZmKxSYB1ej1njHpqenR/6zgyI0kfy5yLXbkWcfStrvMk6QZVq1XJnqCED5pIPt6Cvb09jo6ObNq0KcWaDC/9+eef1FSpKJLJVo+XaikUeKnV7Nq1621DFQQhDZIk0bp1a54+fcrRo0e5e/cuV65c4e7du1StWpU7d+7QsGFDzpw5w44dO7B6iyLRVw0fPpzqNWrQSq/nbAana9+u19Nbo6VK3laUdW7w5hOykaXSDmulA6dCNmT5GlpDIqGx96hUqVI2RiZ8qETB6Vvav38/uXLlSnO69Ihnz8j/Fs2UMpkMDxBLUAtCDjl69Cjnz5/n4MGD+Pn5JW/39vbmzz//JH/+/Hh6emb7PEUWFhZs37WLls2aUc/fn28UCr5SqfD893MkXpIIkyQcZTLCTCYW6PUs0uspl6cRnYpNyJGF5V5HJpPRvcQvWCmzXocXHH8dCUkkHwIgWj7eWrFixXB0dKRXr14cOHAgxb60WkMySwai5kMQcsjevXvx8PCgXr16qfY5OTnRunXrVAs7ZpdcuXJx8MgRvhoyhLlKJQUTE2mSlETlhARyJyZSOCEB5/h4SiclsUSvp67nF3xWcgZKuXnqJezUzsiQcSx4DbHacDSGeG5HneXIoxXsvjeHvffnExD6J2EJ99L8zAoI+ws3V3dKlSplhuiF941o+cgG8fHxrF27lr///ju5SA3AKU8enrzFLxRJkngKlM2VKxuiFAThvwwGA5aWlum2JFhZWWF8i1Vs38TS0pLZs2czceJEFi1axIQJE7C0sOCnb76hRo0aBAUFMWvWLG7fvk2cLiJH1lv5r9tRZzkesoagmABkyCjiWI3a7j3xdqyExpjIvvsLORWykWjdU/RGLWqVBba2dhgNBmLiogFwtyuGb75uVHVtg1ymIEkfyz/Pd/Pj2FGvHR0ofDrEv4Js4OTkxPjx41ONemnSpAkDduzgkclE/izUffibTNzR6ZjdpEl2hSoIwr8ePXpErly5uHv3LmvWrKFp06Y4Ozsn79dqtfz555907tw5x2Oxs7MjJCQECwsL/AMCKFSoEAD16tWjR48e+Pn5cemfvXQ0jkOlyFoBe0acCF7Htru/UK5secZ/9xMmk4k/1qxlQWBvOhYZj8YQi86USKLMRMPG9SlbtiwuLi7J3c6JiYncv3+fM6fPsOnaeM6FbqVbsSnciDyBUdLz5Zdf5ljswodFzPORza5evUqhQoWwtrYmPj4ed1dXhuj1THrNQlbp6a3RcCxvXu4+eIAiC/MBCIKQksFgYNeuXSycN49DR4+m2KdSKOjQsSMDBg6kUqVK9O/fn/Xr13PlyhWKFy+e43E5OzszYMAApkyZkmr/3r17adasGc0Kfk3Dgv1yJIbniQ+Zcr4FQ4cNZdasWcmtQSaTif79+7Ns2XIkyUTdunVp2rQpSUlJ2Nvbp9tqdO/ePdav3UBCrAYrlS31mvuyadPGHIldeD+IeT7M5P79+5QtW5aePXsCYGtrS8/PP2eJyURoJus/bptMbDAa6T94sEg8BCEb/PPPPxQuWJD27duTdPo0qy0tuW5tzQMbGy5bWzNNqeTcpk3Url0bJ3t71q1bx5o1a3I88QCIi4sjJiYm3WLMihUrAnA2dCtGU+aG52bUmaebcXTIxS+//JIioZDL5cyYMQNLSwvKli1L69atSUhIYNKkSVy8eDHd6xUqVIjh3w4jt6sjUZpQOnfulCNxCx8mkXxkIy8vL4oVK8aNGzeSt40cORK1kxPNdToiM9jIFGwy0VSno5C3N/3798+pcAXhk3Hy5Elq16xJnmfP+MfamlMWFnymUlFCoaCAXE4ZhYJhajV3rK3ZZ2WFoyThlicPNWvWfCfx2draYm1tzfXr19Pc//IzJVITwpHHK3MkhtCEIGr5+aY5nNje3h4fH5/k7pVcuXJRsmRJQkNDX3tNa2trvvqqH9bW1qxYsUIUzwvJRPKRzQIDA7l27VryY3d3d/b8/TcPbWyoqdVy0mBI9w1okiT2Ggz46HQY8uRhz99/4+Dw9os5CcKn7M6dO7Rq3pxKBgNHLSwo/29LYoQksU2vZ5Nez8N/WyblMhmNlUrOW1mhiIigeePGxMXl3OqxL6lUKrp168bixYt59uxZin0Gg4FJkybh6upK3bp12fdwAaEJQdkeg6XChuDHIWnukyQpuSblpV69etG8efM3XtfW1paOHTuye/duTpw4kW3xCh82kXxkM7VazZ07d8ifPz9bt24FoFy5cpw+dw65lxe1kpIop9OxSKfjotHIbZOJAKORmTodRXU6miUlkb98ec4GBFCwYEHzPhlB+Aj8PHEidklJ7LCwwEYmQydJfK3R4JGYSHuNhs4aDV4JCbTXapNbJ/PL5exRqbhx8yYrVqzI1ngkSWLHjh00atQIV1dXvL29+f777/n8888xmUzUqFGD5cuXc+PGDf766y/q16/PkSNHaNWqFc2aNSN3bifW3xqd7d0v5V0ac/GfC5w+fTrVvoMHD3L79m3Kly+fvE0ulxMdHc2yZcveOBdRmTJlyJs3LwsWLMjWmIUPl0g+coCbmxuhoaEMGTIkeVvRokW5cuMGixYtItbVlaEmEz56PcUSEqiSmMhooxGfDh04deoUp86dw83NzYzPQBA+DuHh4WzcsIHBcjmO/9YxfK7VskSS+HHCBB4/fkx4eDiLlyzhmLU1jXQ6tP8mICVzYH0lSZIYOnQobdu2JT4+noEDB9K0aVOWL19Oy5Yt+eWXX5DL5Xz55ZeULFmSli1bcurUKUwmEzt27OCvv/6iabMmPI67zoGHS954vxjtc+5G+/M47jom6fV1Z6Vy16WgYxlaNm/FmjVr0Gg0JCYmsnz5cjp06EDhwoUpVqxYinMsLS159OgRf//992uvLZfLqVixInv37s2W+Y+ED58Y7ZJDNm7cSNmyZSlRokTytvXr1/PZZ5/h5uZGhw4dkhesioiI4Pfff6dHjx5mjFgQPj7Tpk1j7KhRBFtZ4SyXE2g0Uj4xkRUrVtC7d+8UxwYEBFClShXWWFrS49+Fz44ZDNRJSuLQoUNpTkT2Ji/f44sWLeL69esolUpCQ0OZMmUKI0eOTD4uKiqK+vXrc+XKFRQKBSVKlCBXrlzkzZsXJycnoqKiePToEZcuXSIhIQFPT08eP35Mx6JjqZEvdSFnjPY52+9O4Ur4IUzSi3lKXGwL0NhzEBXzNks33gR9DOtvjeZa+DFkMlly0lW+fHk6d+6cZj3Iw4cPcXFxeePU8zdu3GDJkiXcvn2bIkWKZOj1Ez4smfn+FslHDjKZTPz8888MHz6cmJgYvL296dKlC8uXL09e1VGr1dKjRw92797Nw4cPyZMnj5mjFoSPR8P69bE+fpyd/34xjtRqWWFrS3BoaJorq9atXRurs2fZY2kJvGip8NTp6DF8OFOnTs3UvU0mE59//jmrV6+mbt261K9fn5CQEP744w+sra05cuRIih8np06dwtfXlz59+lCmTJk0r6nX6zl37hy7du1CJpOh0+roUuxnqrq1ST4mQR/N3MDuyKx1/DT2R+rXr8/Tp0/53//msnPnDjoXm4CPW/vXxv4s8T5B0Rc4/Ph3XL3t3zg/hyRJXLt2jZIlS6a51ATA8+fPmTx5MkeOHKFOnTqvvZ7wYRJDbd8Tp0+fZvz48XTu3JmlS5diaWnJwoULU3zoWVhYsHjxYkwmE7///rsZoxWEj09UeDiurwwbjZIkPNzd013S3atwYaJeOV4mk+EqkxEVFZXpe69Zs4bVq1ezbt06Dh8+zI8//sjChQsJCgrC2dmZ7t27p+jOqVGjBra2tjx//jzda6pUKnx9fRk5ciSOjo4oVUrW3xrDseA1ycecCF5LvDGc02dOMmjQIIoXL07dunXZvn0bvXr2YveD2eiMmtfG7mLtRfV8HXCwyJOiyDQ9ISEhLFu2jPPnz6d7zMvn+q7XpRHeTyL5yEG+vr7Uq1ePQoUKcfHiRfz8/LC1tU11XO7cualRowb//POPGaIUhI+XXC7n1QqDonI5127eJCIiItWxJpOJ44cPU/Q/jcFGyNJcOwsWLKBp06Z07do1xfY8efIwY8YM/vnnH86dO5e8PS4uDo1Gg1r95hlMnZycGDx4MDY2Njg6OrLj7q+suzGaJH0sF8L/pMdn3ZNnSX1JJpMx5qcxxGujuR5xPEPPwUHtSvjz1K/Vf71cHyetz7eXwsPDk48VBJF85LBDhw6xYMEClErlayvCIyMjsfy3qVcQhOyRO29eHr3yuKdSiWQ08sOIEakKH+fNm0fQw4f0e2XtEaMkEWIy4eTklOl7X758mcaNG6e5r2HDhshkMi5fvpy8bdmyZZhMJkqXLp2h69vZ2dGtWzeio6OpVq0aV6IP8GtAa2K0z1N057yqcOHCKBVK4vUZWynb064kT56EoNfr33hsq1atKF26dKplJl569OgRDg4OqZIi4dMkko93YP/+/ezatYvTp09z5cqVVPvPnj1LYGAgbdq0effBCcJHrHWbNhw0GHj8b6KRRy5nsVrN77//TtWKFZk3bx7Lli2jaaNGDBs2jG9VKmq+knzsMRp5rte/8b0pSRKHDx+mQ/v2FMiXDwdbWySdjqmTJjFt2rTkX/0vhYeHI0kSVlZWxMXFMXv2bEaOHImPjw+Ojo4Zfn5FixalVKlSPH78mBE/fI+blzMSRvz9/dM8PjAwEIPRQC4L1wxdv2Tu2ugNegIDAzN0/KNHj5g4cWKqriOTycTFixdp0aKF6HYRAFFw+k5oNBocHR2RyWS4uLiwdOlSGjRogCRJ7N27l379+pE3b178/f3Fio+CkI3i4uJwd3VlqMHAz6/ULhw2GJhuMLBfr0cCKqvVDJPL6aZUpvhybKrVElGqFOdfM434hg0bmPDTT9y8e5eSajWtgNwyGRpJ4rrJxDaTCRQKunTtyoyZM3F2dmbcuHFMmjQJKysrdDodRqMRHx8f2rdvn+kunuvXr/Pbb7/RvHlzAvz9efbsGQqlkrNnz6aYrt1gMNCmdRtOHfFnTJW/UchffNYYTQZuRZ0mPOkRWmMiFgprnK3yUyxXDRRyJQsD+5BgGcy3333zxth0Oh1TpkyhRo0aNGzYMHn7xYsXWb16NadOnaJGjRqZen7Ch0OMdnkP3bp1C0tLSzp27Ii/vz9OTk6YTCaio6Px9fVl8+bNuLpm7NeIIAgZN3jwYDYsWcJFC4tUq0sbJQkToErj1/jLYbZpDcuFF60dEydOZPz48bRSqfhGqaS2QpHql324ycQKg4FpRiMO7u60bt+eOXPmYDKZqFOnDrlz56ZMmTKZavF4yWQycfToUfbs2oUBKCmXU1kuZz8Qp1IxaPBgGjRowNOnT5k3dx6XLgXSu8RsSuepS5wunLNPt3I2ZAORuudYIMdWLifeZEKLCSd1Hnzcu5DPphjLr31No0YNadq06Rtjio+PT1H7ERcXx7Rp02jYsCFbtmwRLR8fMZF8vKeCgoLo3r07o0eP5vLly8hkMho0aEDVqlXFG1IQckhYWBg+lStjHRbGQbUat3SGgr7qotFIA52O8jVqsO/AgVRFoE+ePOHLL79k79691JDLmWlhQbU0Eo9XBZlM1E9MJESS8PH15cyZM0yfPj3doalvotfrWbtmDYGXL9NVqWSwWo2PXI5MJiNOkhiv1bJCkoj6twZDLpdjMplwsHLGQeXG07gbKCQj3VRKBqpUVHqlVeOC0chCvZ61ej0GXhTdAnTp0gUfH583xhYTE8Px48epXbs2y5YtQ6vVcvnyZfLmzZul5yp8GETy8Z46fvw4fn5+1KpVi+PHM1ZtLgjC27t58yb1/fxQRkUxS6GglVKZZmtHnCSxWq/nB4OBkuXK8fehQ6laJJYsWcLgwYNRKpWUL1uW4EePCA4Npa1KxToLCyxfk4DcM5moptVSoGxZrt+4wZQpU7L0fEwmE6tXreLG5ctstLCgdTpDh7WSxFNJwhZYoNczXqejZMmS3LxxgwZyOeutrHB6TbyRkkSnpCQOGY3JyUvNmjVp1arVa4fgBgcHM2PGDKysrLCxseHQoUOULVs2S89V+HBk5vtbFBi8Q7Vr12bw4MG0b//6CX4EQchexYsX52xAAD26dqXDqVPkU6noJ5NRSaHABoiRJA4ajaw2mUgwmejapQtLli7FxsYmxXUOHDhA//79GTBgAFOmTMHBwQGj0cjmzZv5vFcvhmu1LHrNqLVCcjkjFAp+DAzEYDKh0+kyNLT2v06fPk1gYCBbLS3TTTwALGQyCv6bXIyzsCBakph7/TotVCq2WligfEOL63mjkUDAysKCOvXqIZPJOHjwIIGBgVSvXp2yZcvi5uaWXKsWGxvLvXv3OHv2LAAlSpRgy5YteHl5Zfo5Ch830fJhJvv37093GJ4gCDnn0qVLLFq0iD9WryZR8/+TbeXNnZu+AwbQt29f8ufPn+a5jRo1IiYmhrNnz6bqYvn1118ZO3o0If9O5Z6eCEnCPTERrcnEsGHDMr2ApCRJ/Dp5Mr4xMWzO5PD8L5KS2G80csfGBus3JB7b9Ho6aTQUK16czl27Jq+wHRERwdGjR/H390ej0aBQKLCxscFgMJCYmAiAjY0NM2fOpG/fvhw4cEB81n0iRLfLe27+/PkMGTKEOXPmMHToUHOHIwifJJ1OR0REBPHx8Tg4OODk5PTa0WZGoxGVSsXcuXMZPHhwqv1PnjzB3d2dzZaWdHhNawTAZxoNm4xG/OrXz9Cy9K+6c+cOCxYs4KiVFX6ZGB0XJUnki4/nJ7Wa0W+YtfSa0UjFpCRKlytH988+S3OUi06nIyQkhODgYBITE5HL5bi4uGBpackff/yBj48PFStW5Ndff2XLli2ixfcTIKZXf8/1798fJycnbty4Ye5QBOGTpVarcXNzo0iRIri4uLxxmLskSUiSlG43ycvtGVmztYRMhkql4ty5c+h0ukzFfe7cOYr9O7ImM1bp9RiBPm9IjIySRC+dDqfcuenavXu6w2vVajVeXl7UqlWLxo0b07BhQ8qVK0exYsXo2rUrBw4cwNPTE1tbWy6+Zqiy8GkSNR9moFQqef78eZar3AVBePeUSiU+Pj5s3LiRfv36pdq/ZcsW5DIZ1TOQFFjKZCCTodFo2L17N23bts1wHDGRkVQh82ukBBiN+CgU5H3D584+o5ELBgNDunZNdw2cNylZsiQVK1Zk2rRpREZGZvk6wsdLfPuZiVwuZ/369Tg6OvLo0aM3nyAIgtkNHz6cw4cPM2XKlBTTiJ8+fZrRP/xAB5UKzwz8qIiUJBzt7MidOzfHjh3j0qVLyfvi4uI4e/YsJ06cICgoiP/2jOs0GiTghMHAUYOBa0Yjhgz0nkdJ0mtHtry0SK8nf758bz0Nup+fH48ePeLgwYMsXLgQJycnoqOj3+qawsdDtHyYUZEiRYiJieGrr75i79695g5HEIQ36NSpE3///TejR49m4bx51KpTh/t373LW3x8flYolGVgBVpIkdgFxGg0Ojo40aNCA1atXExMTQ3h4OGfOnEmuL9HpdHh4eNCjRw8ATp06xZPnz1lvMLD+leTHUiajjkLBQJWKZgoFijSSDEuZjIQ3JCkmSeKYyYRfhQpvPfdQ/vz5cXJy4ujRo/j5+REVFcWwYcNYuXLlW11X+DiIglMzW79+Pe3bt8/ScDtBEMyjdIkSxNy+TWGlklwmE92USlqnM3fIf500GKiVlAS8qN+oWLEiw4YNY8GCBSgUCiZNmsRXX32Fo6Mjhw8f5uuvv+bevXtoNBpsbW2pUqUKXl5euLi4oFAoiImJ4fHjx1wKCOBhSAjVlEpWqtUU/0/3zxCNhj8NBu7Z2CBPJ867JhNFEhLo378/xYsXf+vXafny5bi4uHDw4EH++OMPunTpIpaQ+IiJ0S4fmPDwcH766ScWLVpk7lAEQciAVatW0bt3b65aW1MqE4WfkiTRQavliKUlbp6eXLt2DXgxKVeBAgWYPn0633zzTYpznj17hpeXFx4eHvTr1++1X95BQUFsWreO6MhItlha0uKVY88ajVRPTGSvlRVN0rnGOaMRn8RERowYQb58+TL8vNKzadMmEhMT+eeff5Kf5/Tp0/nf//731tcW3j9itMsHZtasWSxevJiJEyeaOxRBEDKgU6dOFPP2prVezzNTRsa3vDBdp2ObXk+pcuVSrH+yfft2lEolffv2TXWOi4sLPXr0ICYm5o2tBt7e3nz7ww8UK1WK9hoNx17pmqkml1NOLmfea0bXvCwLfbWe5W0YDAaCgoKoWrUqw4YNY/DgwcydO5cVK1Zky/WFD5dIPt4DkyZNomLFihQrVszcoQiCkAFWVlbsPXCABEdHauh0XDMaX3u8TpIYo9Xyg07Hjz/+SPfu3QkICODx48fA/y/GZmdnl+b5bm5uGR6Sq1ar6dm7NwW8vOiu0xErSWglie0GA6GSxF6jkV3pJBfe/xbLhoaGZuheb/L06VOcnJwoVaoU69at46+//sLDw0MsoimI5ON9IJfLuXDhAp07d+bZs2fmDkcQhAzw8vLi9LlzKPPnp3RiIk3/rakwvtKT/dhk4ietlvxaLZN1OqZNm8bPP/9M9+7dcXR0pGfPnkRHR1O6dGkiIyPTnQ9j3759mVqUTalU0qV7d8JlMpomJuKelER7jYZ4a2vsbG3plJTEvjQSEAeZDG+lknv37iVvy2rPvEajITQ0lGHDhrFixQoeP35M165dCQsLo2jRouKz7hMnKn/eI99//z0zZ87k2rVrlChRwtzhCILwBl5eXvxz5QobN25k4dy5tPrnH5QyGQ5KJRqTiQSjETtra3p98QX9+/enVKlSANjZ2bFz506aN2+Op6cnLVq0wM7OjsGDB7N///4ULSDLly/n3LlzfPHFF5mKTaPRoLSw4GxSEjVr1MDX15e8efOi0+lYvWIFLW7cYJBKxUC1mmKvDA/uJpczLSAANzc3/P39efLkCRYWFpQpU4Z69epluNUiICAAk8lEhw4dALCwsOC3335j9+7dtGzZktu3bxMcHCxaQT5RouD0PXLjxg1KlSrF8OHDmTlzprnDEQQhk/z9/QkICCA6OhpLS0tcXV2TE4u0PHnyhCVLlrB//35iYmK4f/8+uXLl4rPPPiNPnjzs3r2bY8eOUbNmTTp06JDh4a+PHj1i4cKF5M6dmx49euDm5pZiv9Fo5MCBA5w+fpzYxETqqlTUksmwk8l4bDQy32hEAlq2bEnjxo0JCwvj999/5/nz53z11VdvnANEo9Ewbdo06tSpw9atW1Ps69GjB5cvX+bq1av8+uuvfP/99xl6TsL7T4x2+YCFhoaKXwKC8Im6c+cOP/30E1u3bkWpVOLh4UHNmjUpX758hhOP+Ph4fv31V5ycnBgwYACWr1l8zmAwcOnSJc6dOkX48+dotFr0BgMGSWLr1q20a9cu+diEhASaNGnCzZs3GT16dLozNEuSxNq1a7lx4wbXrl2jQIECKfa3adOGmJgY1q9fLz7rPjJitMsHzNXVlU2bNlGpUiVMmaiiFwThw1ekSBE6deqEwWBgzJgxDB48mAqZnPBr+/btGI1G+vTp89rEA17UhlSuXJlBQ4cybtIkpkyfjqu7O/Xr10+ReMD/r1QbHh7OzZs307yeyWRix44dBAQEMHTo0FSJx9OnT9m7dy8tWrTA1dWV3377DV9f3ww/N+HjIZKP99Dt27e5ePEiP/74o7lDEQThHdPr9QBZmowrLCyMCxcu0KpVqyy3HEdFRVG/fv0091WpUgVra+s0i0VDQ0OZP38+x48fx9PTk5UrV3LkyJHkgtWrV6/SokULcuXKxeeffw7AxYsXOXXqFAsXLsxSrMKHSxScvofGjBnDkydP+Pbbb80diiAI75iTkxPwogn7TS0X/3XmzBlsbGyoXLlylu9vZWVFcHBwmvsiIiLQaDTodDoiIiKIj4/n8ePHXL16lZs3b+Lt7c3x48fx9vamVatW1KtXj/z582Npacnt27fx9PRk//79yc9x/vz5mEwmevbsmeV4hQ+TqPl4j+l0OrZu3UrXrl3NHYogCO9IeHg4efLkoWfPnlSsWDFT506fPh0PD4+3+sz4888/8ff3586dO7i4uKTYN3bsWCZPnpyiS/hl182AAQPo1KlTcsIkSRKHDx9mz549GI1GatSoQdu2bdNc4TY+Pp59+/Ylj4wRPkyZ+f4WLR/vsTZt2rB3716KFCnyVr9kBEH4cDg7O1OiRAkuX76cqeTDYDDw9OlTqlev/lb3r127NgEBAdSqVYuZM2cmj3aZP38+06ZNY8iQIbRr1w6dTkeuXLkoXbp0mi00MpmM+vXrp9uF86p69eoREBDA/fv3U9WJCB8nUfPxHlu0aBEODg7cuXPH3KEIgvAODRgwgCtXrhAREZHhczQaDSaT6a1bjB0cHBg4cCDh4eG0bNkStVqNp6cn8+fPZ+zYscyePRs/Pz8aNmxI5cqVM901lJbFixdjb2+fbiGr8PERLR/vsQIFChAdHQ28qCJPb2ibIAgfl969ezN16lQ2bdpE//79MzTa5eXng/ENU71nRN68efHx8eHQoUN89913lClThiZNmuDg4PDW105LxYoVxWfdJ0b8F/4A9O/fnzx58mTbYk+CILzf7OzsWLFiBbdu3eKvv/7K0BTnVlZW2NjYEBYWli0xvLzO5MmTWbt2bZq1GtmtQ4cOeHp65vh9BPMTyccHoFSpUkRGRrJo0SJzhyIIwjsil8tRKpUcOnSIDRs2oNFoXnu8TCbD09MzxbosWWUymXj48CFffvklmzZt4tChQwwcOPCtr/smhQoV4smTJ2zfvj3H7yWYl+h2+QAMGTKEwoUL07RpU3OHIgjCO6DT6fjss8+oV68e7du3Z/jw4dy9e5c6depQuXJlrKysUhxvMpm4desW0dHRhIaGEh4ejrOzM48ePcLf35+4uDgcHR2pVq1aqqnW03Lnzh3Cw8Pp0qULvr6+hIaGMnz4cCZNmoSHh0dOPW2mTp1K3bp1xWfdJ0AMtf2AHD16lG3btjF37lxzhyIIQg7aunUrHTp04OrVq5QqVYr79+8zYsQItm/fjkwmw8XFBVdXV+RyOXFxcQQHB5OQkECpUqV49OgRRYoUQalUcv78edzd3SlevDiXL1/m+fPn1KtXj5YtW6ZbR2IymZg3bx42NjZcvnwZmUyW/Lm8YsUKevfunePPf9euXZw5c4YpU6bk+L2E7COmV/9IjR07lnnz5nH8+HFzhyIIQg66desWuXPnTl4F18vLi82bN/Pw4UP+97//4eLiwrVr11Cr1ZQoUYKRI0dy+vRprly5woIFC7h48SIXLlxg2bJlPHz4kIMHDxIcHMy0adM4fPgwp0+fTvfehw4d4sGDByxevDg5QbGwsACyp5g1I0aPHs3UqVO5cePGO7mf8O6JbpcPyJYtW2jVqlWGmk0FQfhwOTo6EhsbS3R0NI6Ojsnb3d3dGThwIAEBAWi1Wk6dOpXq3A4dOvDVV1/Rr18/+vTpk7xdrVbz/fffExAQwLFjx6hevXqqUSUnT55k9+7djBkzhpo1ayZvf7kybY0aNbL5maZt69at9OnTJ8dG1wjml+mWj+PHj9OyZUvy5cuHTCZjx44dKfb37t0bmUyW4q9JkybZFe8nzcXFhbNnz+Lt7S3m/hCEj1i7du2QJIn58+en2hccHMzGjRvTncX08uXLJCUl0aNHjzT39+jRg7CwsOShrfCiuXzFihVs2bKFatWqMXbs2OR9gYGBfPvttzRu3JgSJUq83RPLoGLFinHy5ElcXFwICgp6J/cU3q1Mt3wkJCRQrlw5vvjii1SrHr7UpEkTVqxYkfz4ZZOdkD2qVKnC9evXiYqKypYJfgRBeL+4uroyfPhwxo4dS1xcHAMHDiRPnjzs3r2bUaNG4ezsTP/+/dM892UZX3pzZSgUCgCePXvGvXv3uH79OpcvX8be3p5OnTqxadMmvL298fPzIyQkhCNHjlC2bFlWr16dM0/2NYoVK0ZERASRkZFi7o+PTKb/azZt2pRJkybRtm3bdI+xsLDA1dU1+S9XrlxvFaSQ0tdff41Op+PIkSPmDkUQhBwydepUfvrpJxYuXEjBggWxsbGhU6dOuLu7c/ToUfLkyZPmeWXLlsXR0ZENGzakuX/9+vUolUoWL17MH3/8QUJCAr/++it3795l48aNXLhwgaZNm/LgwQOsrKxYtWoV586dS7XOy7vw+eefk5CQwOXLl9/5vYWc9VajXWQyGdu3b6dNmzbJ23r37s2OHTtQq9XkypWLevXqMWnSJHLnzp3mNbRaLVqtNvlxbGwsnp6eYrTLG8THx2Nra2vuMARByGGxsbEcPHiQxMREypUrR5kyZd54zujRo5kxYwZr1qyhU6dOyGQyjEYjv/32GwMHDqRfv35069aNsmXLvvc/DsVn3YcjM6Ndsj352LBhA9bW1nh5eREUFMTo0aOxtbXlzJkzyc19rxo/fjwTJkxItV0kH282ZMgQbty4wcGDB80diiAI7xG9Xk/37t3ZvHkzRYsWpUSJEly6dImHDx8yYMAAFixYkKEp298X3bt3R6PRJBe+Cu8nsyYf/3Xv3j28vb05ePBgmqsbipaPrGvSpAn79+/nxIkT+Pr6mjscQRDeI5Ikcfz4cVatWkVoaCj58+enT58+VKlSxdyhZVrlypW5cOECt2/fpkiRIuYOR0hHZpKPHB9qW6hQIZydnbl7926ayYeFhYUoSM2iDRs28L///e+dDX8TBOHDIZPJ8PPzw8/Pz9yhvLVt27axceNGkXh8RHK8fDg4OJiIiAgxN0UOcHR0ZNy4cdy6dYuNGzeaOxxBEIQckT9//uQ5Sv766y9zhyNkg0y3fMTHx3P37t3kx/fv3+fSpUs4OTnh5OTEhAkTaN++Pa6urgQFBTFixAgKFy5M48aNszVw4f/Vr1+f8PBwmjdvLgqzBEH4aNWvXx+j0Uh0dDRKpZgj80OW6ZaPgIAAKlSoQIUKFQD45ptvqFChAmPHjkWhUHD58mVatWpF0aJF6dOnD5UqVeLEiROiayUHLViwgLx58/L06VNzhyIIgpBjJk+ejKurK+Hh4eYORXhLYmG5j4xOp0OtVps7DEEQhBwlPuveP2JhuU9U6dKlKVeunLnDEARByDEmk4n8+fNTp04dc4civAWRfHxEihcvzq1bt8RaCIIgfLTkcjkFCxbk3LlzKdanET4sotvlI5KYmMi9e/coXbq0uUMRBEHIMeHh4cTFxeHl5WXuUIRXiG6XT5S1tTWlS5dmwoQJTJw40dzhCIIg5AhnZ2cKFCjA8OHD01z5V3j/iZaPj5CbmxvPnz/n2bNnODk5mTscQRCEbGcymXB0dESv14sVvt8T79UMp8K798cff7Bq1Sox54cgCB8tuVzOokWLOHv2rBj18gESLR8fsWfPnhEVFUWxYsXMHYogCEKOefToEfBiJlTBfETLh4DJZMLLy4s8efLw4MEDc4cjCIKQIzQaDd7e3pQqVYpLly6ZOxwhg0TB6UdKLpfTqVMnoqOjiY2NNXc4giAIOcLS0pKGDRsSFhaGwWAwdzhCBolul4+YwWBALpcjl4scUxCEj5fBYBBrvbwHxFBbAQClUonJZKJChQr069fP3OEIgiDkCKVSSWxsLMWKFWPs2LHmDkfIANHy8QkoUKAAISEhxMfHi+FogiB8lEwmE3ny5CExMZGEhATR4msGouBUSGHr1q1ERESIxEMQhI+WXC5n8+bNWFlZicTjAyBaPj4hK1aswNvbm9q1a5s7FEEQhBwzZ84cGjRoIJaaeMcy8/0tko9PRGJiIvb29ri4uPDkyRNzhyMIgpAjQkNDyZcvH0WLFuXmzZvmDueTIrpdhFSsra0ZPnw4ly5dEpXhgiB8tFxdXenVqxdxcXHmDkV4DdHy8QnSaDQAogZEEISPWnx8PNbW1qIG5B0RQ22FdEVHR5MrVy569+5t7lAEQRByTFBQELly5eLbb781dyhCGkTLxyeoWLFihIWFERkZKX4RCILw0XJzc0MulxMSEmLuUD4JouZDeK0jR47g5OQkEg9BED5qZ8+exd3d3dxhCGkQ3z6foHz58qHT6WjUqBE7d+40dziCIAg5okCBAkRGRlKrVi3OnTtn7nCEV4hul09UbGwszs7O2NvbEx4ebu5wBEEQckRwcDAFChTA09NTrPCdw0S3i/BG9vb2zJw5E2tra3OHIgiCkGM8PDyYOHEixYsXN3cowitEy4fAoUOHqFKlini9BUH4qO3Zs4dGjRqJeY5yiBhqK2RYUFAQDRo0oEuXLuYORRAEIcecPHmS5s2bixW+3xMi+fjEeXt7U6lSJWJiYswdiiAIQo7x9fWlcOHChIWFmTsUAVHzIQDnz58Xw24FQfjo3bp1S3zWvSfEfwUBuVzO1atXyZUrF6tXrzZ3OIIgCDlCLpdz8uRJ7O3tOXTokLnD+aSJglMBeLHei6OjI87OzgQHB5s7HEEQhBwRHh6Oq6srxYoV49q1a+YO56MiCk6FTLO0tOTPP//k4sWL5g5FEAQhxzg7O7Nt2zbOnDlj7lA+aSL5EJI1bNgQR0dH+vXrJyYeEwTho9WqVSuUSiWff/558irfwrslkg8hhfPnz7N06VI6dOhg7lAEQRByzF9//cXKlSv57LPPzB3KJ0kkH0IKvr6+tG/fnnr16pk7FEEQhBzTqVMnGjVqRO3atc0dyidJFJwK6QoODsbDw8PcYQiCIOQo8VmXPUTBqfDWdu3ahaenJ/Pnzzd3KIIgCDnmt99+w9PTk+3bt5s7lE+KSD6ENDVr1gwbGxs2bdpk7lAEQRByTLdu3VCr1axZs8bcoXxSxAynQpqUSiUPHjzA2dnZ3KEIgiDkGFtbW0JCQsRn3TsmWj6EdDk7O3Px4kWKFy/Oo0ePzB2OIAhCjnB2dubw4cMUL16c2NhYc4fzSRDJh/BaJpOJW7du0blzZ3OHIgiCkGMSExO5deuWGHr7johuF+G1KleuzPjx4+nUqZO5QxEEQcgxLVq0YOTIkfTv39/coXwSRMuH8Ebjxo2jWLFiLFu2zNyhCIIg5JgpU6bg6ekpPuveAZF8CBkyZ84c+vbty+TJk80diiAIQo757rvv6Nu3r1jhO4eJ5EPIkGHDhuHp6SmKsQRB+Kj98ssvuLi4EBYWZu5QPmqi5kPIELlcnjzixWQyIZeLvFUQhI+PpaVlcuIhPutyjnhVhUz57bffsLa25tatW+YORRAEIcdMnjwZW1tbnj17Zu5QPkoi+RAypWbNmmi1Wn744QdzhyIIgpBjatasSVJSEmPHjjV3KB8l0e0iZEqpUqU4dOgQderUMXcogiAIOaZOnTocOnRIrPCdQ0TLh5Bp9erVIygoiPbt22MymcwdjiAIQo6oV68ely5dolu3buYO5aMjkg8hS9atW8e2bdv48ccfzR2KIAhCjlm4cCHr168XK3xnM9HtImTJuHHjOHnyJA0bNjR3KIIgCDlm4cKF3Lp1Cx8fH3OH8lGRSZIkmTuIV8XGxuLg4EBMTAz29vbmDkfIgGvXrlGqVClzhyEIgpCjxGfd62Xm+1t0uwhvZeDAgZQuXZqLFy+aOxRBEIQc0759e8qUKSNW+M4mIvkQ3sr333+PUqlk165d5g5FEAQhx4waNQq5XM5ff/1l7lA+CqLmQ3grXl5exMTEYG1tbe5QBEEQckzlypWJjY0Vn3XZJNMtH8ePH6dly5bky5cPmUzGjh07UuyXJImxY8fi5uaGlZUVDRo04M6dO9kVr/Aesra2ZuHChRQuXFgMvRUE4aNlbW3N5MmTKVOmjLlD+eBlOvlISEigXLlyLFiwIM3906ZNY+7cuSxevJhz585hY2ND48aN0Wg0bx2s8P7SaDQEBQUxatQoc4ciCIKQYyIjI7l69aoYevuWMt3t0rRpU5o2bZrmPkmSmDNnDmPGjKF169YArF69mrx587Jjxw66dOnydtEK761vvvmG+Ph4RowYYe5QBEEQcsz06dOxs7Ojf//+5g7lg5atBaf3798nNDSUBg0aJG9zcHCgWrVqnDlzJs1ztFotsbGxKf6ED9PYsWNJTExkzpw55g5FEAQhR8jlcsaPH09oaCgLFy40dzgfrGxNPkJDQwHImzdviu158+ZN3vdfU6ZMwcHBIfnP09MzO0MS3rFu3boxfPhwTp48ae5QBEEQckybNm0YPHiwWOE7i8w+1HbUqFHExMQk/z1+/NjcIQlvYeXKleTLl0+0YAmC8FFbs2YNbm5uhIeHmzuUD1K2DrV1dXUFICwsDDc3t+TtYWFhlC9fPs1zLCwssLCwyM4wBDNydXUlJCQEeFGEamlpaeaIBEEQsl+JEiXEZ91byNaWDy8vL1xdXTl06FDyttjYWM6dO0f16tWz81bCe65r1644Ozuj0+nMHYogCEKOadSoEe7u7mKagUzKdPIRHx/PpUuXuHTpEvCiyPTSpUs8evQImUzGsGHDmDRpErt27eLKlSv07NmTfPny0aZNm2wOXXifNWjQgISEBFauXGnuUARBEHKMr68vkZGR7Nmzx9yhfFAyvbDc0aNHqVu3bqrtvXr1YuXKlUiSxLhx4/jtt9+Ijo7G19eXhQsXUrRo0QxdXyws9/G4fPkyZcuWNXcYgiAIOUp81r2Qme9vsaqtkKPWrl3L7t27WbdunblDEQRByDELFy7k0qVL/Pbbb+YOxWzEqrbCe2PVqlWsX7+evXv3mjsUQRCEHLN8+XKWLl0qVvjOIJF8CDlq06ZNNG/enCpVqpg7FEEQhByzbds22rRpk+ESg0+dSD6EHOXo6Mhff/2Fvb19urPcCoIgfOgKFCjA9u3bAfD39zdzNO+/bJ3nQxDSU758eYKCgoiIiMDW1tbc4Qhp8Pf3Z82aNURERODl5UWfPn3w8vIyd1iC8EEpXrw40dHRREdHo1SKr9j0iJYP4Z2YOHEiMpmMgIAAc4ci/Ider6dbt25UrVqVHTt2EBISwoIFC/D29mbq1KnmDk8QPijfffcdJpOJmzdvmjuU95oY7SK8MyaTCblc5Lvvm++//57//e9/LFu2jO7du6NQKEhMTGTy5Mn88ssvbNy4kU6dOpk7TEH4YHyqn3ViqK3w3urSpQtBQUGiT/Q9ERsbi7u7O0OHDmXSpEmp9jdu3JioqCjOnz9vhugE4cPVuHFjjEYjBw8eNHco74wYaiu8t3Q6HQEBAaL49D1x7tw54uPj+eyzz9Lc36NHD/z9/YmOjn63gQnCBy4xMZFDhw5x//59c4fyXhLVMMI79ccff7Bx48YPbq0fSZLQ6XSo1WpkMpm5w8k2L9ejSK8wTqVSpThOEISM2bp1K0eOHBFF2+kQ3S6CWRw/fpxr164xYMAAc4fyWg8ePGDq1KmsXbuW+Ph48uXLR9++ffn222+xs7Mzd3hvLTIyEnd3d8aMGUPbtm3x9/fn5s2baLVaHBwc2Lt3L9HR0dy4ceOjSroE4V3ZtWsXcXFxdO/e3dyh5DhR8yG89/Lly8fz588JCwvDycnJ3OGk6ebNm9SuXRuFQkHfvn0pXLgwZ86cYfXq1ZQoUYIjR4588AmIyWSiQYMGHD9+HKPRCICzszNqtZrY2Fji4+ORyWS0bt2akSNHUq1aNTNHLAgfFgcHB3Q6HTExMajVanOHk6NE8iG89/bv3893333H3r178fDwMHc4aapTpw5hYWGcOHECZ2fn5O2XLl3C19eXIUOGMGXKFDNG+HYePnxI7969OXr0KCVKlMDX1xdvb28sLS2BF11NMTExXL16lVOnThEaGsrw4cP55ZdfsLCwMHP0gvBhWLFiBYsWLWLfvn3v7Q+t7CKSD+GDYTKZiI6Ofu/elLdu3aJ48eJs2LCBzp07p9o/dOhQ1q1bR2hoKAqFwgwRvp2bN29Sp04dDAYDnTt3fuOU0CaTiaNHj7J37178/Pz4888/k5MUQRDezGAwEB8fj6Ojo7lDyTFitIvwwShUqNB7ue7LnTt3AKhdu3aa+/38/AgPD39vRoEEBQWxYMEC5syZw7lz53jdb4ro6GgaNmyIQqFg2LBhGVqLQi6XU69ePfr168fx48fp06fPa49/+vQpEyZMoEqVKpQrV44+ffqIBbeET5bJZCJv3rzUr1/f3KG8N0TyIZiVn58fDx484OHDh+YOJYWXv07OnDnD3r172b59OwcPHuTZs2cA3L9/H6VSiY2NTbbeV6vVsn79epo2bkzZEiUoUrAgVcqXp1/fvvzzzz+pjk9ISKBLly4UKVKE4cOHM2rUKHx8fKhQoQKBgYFp3mP48OFERETQt2/fTNesFClShE6dOrFu3Tq2bt2a5jEXL16kTJkyTJ8+nWLFilGzZk0OHDhA5cqVWbRoUabuJwgfA7lcTuXKlbly5QqxsbHmDue9ILpdBLPS6XSEh4eTL18+c4eS7P79+yxcuJA5c+ZgMBhS7ffy8iImJoZatWqxY8eObLmnRqNh0qRJLF20iGeRkdRWqSgDWAFRwH4gWK/Hp0oVfhw7lhYtWgDQqlUrDh8+zJw5c+jevTtqtZr9+/fTv39/njx5Qr58+WjevDkDBgygbNmy3Lhxg5IlS9KxY0dq1qyZpVglSWL58uUkJSVx+/btFDM56vV6vL29cXV1Zc+ePcm1MgaDgW+//ZZ58+YREBBAxYoV3+4FE4QPTGxsLAaD4b3rYs5OouZD+OD07dsXR0dHpk+fbrYYDAYDM2bMYNy4cahUKipVqkTRokXJly8farWapKQkgoODuXbtGv/88w82NjYsWrSIrl27IpPJiIuLY+3atZw5cwaVSkXz5s1p2bLlGxeXioyMpFXz5lw4f56+CgUDVCpK/KeOxCBJ/GUwMMdo5Jhez7Rp06hRowa+vr5pTn8eFBREsWLF8PLyIiIigqioKDp37oy9vT0bN25k7NixWV706tGjR+zZs4egoCAcHR1p0qQJQ4cOpVKlSmzZsoWOHTsSGBhI2bJlU72+hQoVolGjRixbtixL9xaED5nBYKBbt25UrFiRkSNHmjucbCeSD+GDkz9/fkJCQnj69CkuLi7v/P5JSUm0a9eOv//+mzp16tC4cePXjuiIi4tj+/btXLx4kSFDhtChQwfatm1LdHQ0lStXJj4+nuvXr5M3b16++eYbGjRoQJkyZZIn7Xr1vg3q1uXWhQv8pVbj84biVUmSGKPT8YtOh52dHRYWFukWvbZo0YLbt2/Tv39/Lly4wM6dO9HpdJQqVYrevXtn6XXy9/dn/fr15M+fny5dugCwceNGHj16xOrVqwkMDGTz5s3cu3cvzfMHDhzIyZMnuXz5cpbuLwgfMpPJhLOzM/Hx8cTGxn50Rdui4FT44Kxfv54ffvghxZDWd0WSJLp06cLhw4f56quvaNWq1RuHktrZ2dGzZ086duzIvHnzaNy4MWXKlOHBgwecO3eOa9eu4e/vj1Kp5Mcff6RSpUrJk3k9f/48+Trjx4/nn4AAdmcg8QCQyWT8oFaTWy5Ho9GQJ0+edEfbuLq6otfrUSgUVK1alREjRpAnTx5u3LiRXLuSGdHR0WzYsIGePXty9+5dpkyZwpQpU7h9+zbdu3end+/eJCUlERkZSZ8+fShXrhx2dnZYWVnh4eFBq1at8Pf3/yQX3BIEeFH7sXLlSiZNmvTRJR6ZJVo+hPfKrVu3SEhIeKc1AUuXLqVfv358+eWXlC5dOtPnz5o1i2fPnvH06dNUw+hOnjxJrVq1aNWqFVFRUQQEBGBjY8PixYtp1qwZ7q6u9ElKYnomPoi+1GhYC/jVq8eBAwd48OABnp6eKY4xGo0ULFgQd3d3unbtmrw9MTGR2bNnY2VlxdChQzM1THjv3r2cOnWKJ0+epCpUjYmJwd3dHaVSSUxMDHnz5sXLy4u8efMil8uJjY3l8ePH3L17F4VCwffff8/YsWPFfCHCJysgIAA7OzuKFStm7lCyTWa+v8XaLsJ7w2QyUb58eZycnAgJCcnx+/n7+/P3338zadIkqlatmqXE486dOzx58oQOHTqkOX6/Zs2aFChQgJiYGNq3b0+jRo3YvHkzHTp0oGPHjkTFxtI/EyNmThuNLNfr6dSpExUrVuTEiRMMGDCArVu3Jn+RS5LEhAkTCA4OTlULYm1tTffu3fnf//7H6dOnqVWrVobvHRISgq+vb5ojZBwcHKhevTpnzpzh66+/xsvLK83p2GNjYzlx4gTTpk1j+/bt7N69W6x9IXxyEhMT8fHxoUiRIty4ccPc4ZiFaP8U3htyuZwvvvgCmUxGfHx8jt3nn3/+oWjRolStWpXx48ej1Wpp2rRppq8TGhrK0qVLsbCwSFXL8ZJMJkOlUiXPu2FnZ8fnn3+enISUVijwzkQ3xP90OlydnalevTqWlpb06NGDv//+G29vb0aOHMnPP/9MhQoV+Pnnn2nRogX58+dPdY2CBQtSvnx5jh8/nqkF49Rq9Wu7a8LCwihevDiFChVKdx0Ye3t7mjdvzjfffEN4eDi+vr48evQowzEIwsfA2tqaNm3aYDQa0xxR9ykQyYfwXlmwYAHBwcHY2tpm+0qqWq2WPn36/F979x1f0/0/cPx1980OEpKQRGxCbBFi1Yx+ae1Vq0WFqrZ0aKuqrVKjNWpvtbeqvWdsgthKIkIG2cnNXef3B8mvkZAhEeTzfDw8Hu45557zOefe3PM+n/H+UKdOnbQkYkajEWtr6xxPmmYymVi5ciX29vbUrl2brVu3kpSUlGG7wMBAbt26RZkyZdKWyWQy/Pz8npRDkrifzfNMkiQ2Go14N2yYVt4qVarwxRdf4Orqypw5c5g0aRImkwl/f39atGjx3H01aNCAyMjIHN34vby8OHfuHKdOncqwLiAggEuXLlG9evVs7cvFxYVPPvmElJQUevbsKWbNFQqd9evXc+PGDZRKZaH8/ovgQ3jt6PV6PDw88nwWyH79+rFixQomTpxIdHQ0KSkprF27FltbW2bPno1Op8v2vi5cuEBISAg9evSgcePGJCYm0rt3b+Lj49O2CQkJoVevXjg4OFCtWrV075fJZHTs2BG1hQVj9frsHdNsxsiTRF//5ezsTPfu3Rk7diw///wzAwYMyLId2cPDA4VCwb1797J3wkC1atVwdXWlXbt2bNq0CaPRiNFoZMOGDbz33nu4ubnh6emZ7f1ptVqqVavGiRMnKF26NF27dmXfvn0vzM4qCG+Tx48f4+TkxJdfflnQRXnlRPAhvHbUajVKpZL169ejz+aNOSuXLl1i9erVzJkzhxEjRmBvb49araZLly7s37+fqKgozpw5k+39HT16lPLly+Ph4YGDgwN9+vRh69atODs707FjR1q3bk2ZMmW4f/8+AwYMyLRjp6WlJQ0bNWK5yURMNm64V5/OOuvk5JT9E38OpVJJ8eLFCQ8Pz/Z7FAoFgwYNws7Ojo4dO2JjY4ONjQ2dO3emSJEiDBo0KNsdWOPi4pg6dSqHDx+mdevWtG/fnitXrtCiRQuGDx8uAhChUChatCiSJDFnzpxCV/shOpwKr6W///4bg8GQZ1NQr127lmLFimVam1KhQgXatGmTNlttVpKSkrhz5w49e/ZMW1atWjW+++47jh8/ztWrV5HJZLz//vvUrVv3hUPq6tWrx86dOzloNPL+c/qNpEoBFHJ5rpODPUulUuW4vdnGxoZq1apx8+ZNDDodaq2WkSNH5nhm4tWrVyNJEpcvX6Zy5coAaT/CQ4YMoW7duvTu3TtH+xSEN9G2bdsoUqRIoRuCLoIP4bWUekP66aefqFOnDm3btn2p/UVHR+Pg4PDcjqGurq7ZTnyV2lTh7u6ebrm9vX2Oy1mkSBFsLS05azTyfhbb2stkmMxmkpOTsbCwyNFxMhMXF5fjtPaBgYFs3rSJYSoVDRUKuut0OX5ii4iI4MqVKyxbtiztc4YnTVH+/v5s2bKFGTNmiOBDKBTq1KmD2Wzmiy++oEePHq/lRJv5oXCFWsIbJSkpiZ9//pk+ffq8VJXkoUOHWL16NTdu3CA0NDTDerPZzJ49e7KdWTV1Jtu8SIgmk8ko4uBAaDbOr/rTJ6PMziGnkpKSiImJ4dy5c5w5cybLZg69Xs/mzZtZsngxXZVK/tBo6KxU4qpQcPTo0RwdO7WT6/vvv5/p+vfff58zZ84UumpoofB6+PAhU6dOpVu3bgVdlFdGBB/Ca8vS0pLRo0fTpk2bXO9j5syZNGvWDFtbWzQaDZ9++ikGgyHdNn/88Qe3b9+mQYMGL1vk3JHJuJKNG20luZxiCgWXL19+6UMGBQUBoFGrWb58OX9MmsTx48eJjIxMu+kbjca0eVzGjR3L8UOHmKjRsFyjQSGToZDJGKJQcOHsWRITE7N97NR+Ic8bTh0fH49SqczxCCRBeFO5uLgwfPjwXA35f1OJZhfhtfbDDz8AEBUVhVarxdraOtvv/euvv/jkk09o0qQJ7733HkFBQSxdupTKlSvTt29frK2t2bhxI0ePHqVy5cqULVs2W/u1s7MDnvRUd3R0zPlJPePxo8cEm81MSEnhK7Ua+XNuugqZjJ5yOfNPnMDPzy/X6ZnNZjNHDh9Bq7QiPiGB4SoVNyMiWLd2LRKgVihQKZUk6/WYJQkruZy+CgWfWVpS/pl26U4qFaP0ekJDQ7OdqbFChQqo1WoWLFjA6NGj060zGo0sXbqU//3vfyL4EAqVP/74A3hSs+nk5JRnfbteV6LmQ3jtPX78GGdn53RpwrMSHByMv78/devW5f3330cul1OtWjWGDx+OnZ0d48eP55tvviE8PBwPDw+Cg4OJjY3N1r5TU5kHBwfn6nz+KyYmhviEeKo7tGKUXk/5pBR+1+t5/EwzyHmTiQE6HfMNRvR6A5s3b8n1MQMCAgi5F0LHct8B0EShYJuFBZHW1uyysGCiUskPksQstZoTlpZEWloyU6vNEHgAODwNEJKTk7N9fCsrK3x8fPj555+ZM2dO2hDn0NBQevXqxbVr1wrl0ENBuHnzJm5ubvj7+xd0UfLd2x1aCW+FokWLUrlyZU6dOoXZbM5Wr/CRI0ei0Wjo1KlTuidoV1dX+vTpk27bhIQEfvvtNxYtWoS/v3+WNQpWVla4ublx5swZ6tSpk7uTeur06dOoFGq6VPyBJq69OXZ/FV9H7uabFD3OchUWMoiRJMLNBoqqHWhWugdKuZKtJ/6gTBkP6tWrl6Pj3b17ly2bt+Dj3JlqDu8AkDqYuZhMRiulklY52J/+aZCU06e09u3bo9Pp8Pf35+uvv6ZYsWKEhIRgYWHB6tWr8fHxydH+BOFtUL58eUqVKsXBgwcLuij5TgQfwhvh6NGjWFtbZxp43Lhxg8mTJ7Nu3ToSEhKoVKkSQUFBdOjQIVtNE9bW1gwcOJBZs2Yxbdo0evfuneUoEF9fX1auXMm9e/cyTOqWXTqdjqOHj1HDoQ1WKns87GriYVeT9/RfcyFiF7H6cAymFEorbShpXYkqxZqgkCuRJImo5HusWrmKuLg43nnnnXTXJTIykjt37iCXyylfvnxaM1FgYCArV6yipJUn75f7GpVci0qm4uZLdOy89fS9VjmYnwae9Pvo0aMH77zzDn/99Rfh4eFMnz6d3r17Zzp3jCAUFhcvXsx0nqi3jQg+hDeCra0tUVFRtGrVihEjRqTl6zh58iStWrXC2tqaoUOH4uzszK5duwgKCuLWrVv4+vpmq6bEzc2NTz/9lGnTpjF58mR8fHxo2LAhzs7O6WpOzGYzd+7cIejyZeRyOSuWL2fEyJHPHcL7Ips3byE5KYXWVYakW26jLkajUj2f864nI2Q6V/gBS5Ud2/5ZxKWLl2nVuiWurq6sWbMmrTMpPLnJV6pUCRkyLgddpppDc3pVGo9a8WSobo3ifiyI3MEotYQiF30s5hkMWKnVGYYdZ5derycsLIxff/2VIUOGZP0GQXjL2dvbExwcTJs2bZg5cybvvPNOQRcpX8ik1yyVYE6m5BUKF51Oh729PZaWljx+/Biz2UzFihVxcHBg9+7d6Z6YN23aRMeOHenRowfe3t7Z2v/9+/eZNGkSPZRK9kkSESYTthYWOJUsiVqrRZeQwP2wMJL1esoplfSSyZhgNFKhShX69u+fo6aHffv2sXXrVrpUGEMDly45vhap/o09x+bbE7gXdwWVSo2trQ1Tpkyhc+fOpKSksGzZMr755hswKehSfgy1irdNF0wFx11k6rmebLOwoG0Om04eSRLOCQkYgAEDBuR4VuCkpCT++OMPoqOjmTlzJgMHDhSdTAWBJx3snZyccHFxeaMmXszJ/VsEH8IbZdmyZZQoUYLWrVuzd+9eWrZsybFjxzIdJtumTRuuX7/OZ599lq19r127ln9PnuSehQUSsNtk4pTJRJDZjE6SsJHJqC6X00ChoJFCgUwmY7vRSAedDpeSJen+wQc4OTkhSRJ3797l3Llz6HQ6SpQogbe3NzY2NiQlJbFx40bOnDlDK/fB+Hl8kifXZdedWewMnsXZs2epVatWunVr1qyhe/fufFZrFe626eeYkSSJP850pojuX45ZaLDO5s1fkiQG6XQsMRpxk8m4K5PRq1cvateuna33R0dHs3DhQh4/fkzZsmW5dOkSAwcOZM6cOYUu06MgZGbWrFnUrFnzjer/lJP7t2h2Ed4oqZ1Fly9fTkhICBqN5rl/nC1atODw4cPZ3vf94GDelctRPr0Bv6tU8m4WtQFtlUoOW1jQ++FDJk+cSLXq1YmOjubu3buUKlWKkiVLsmfPHnbu3EmFChUIvhOCyQg9Ko2jntN72S5bVu4lBtHIt3GGwAOgc+fOODu5cD5iR4bgQyaT0a3yOGae+4D3k1PYZKHBJosARJIkvtfrWWA0slCr5QOlkj46HX/99ReXLl2ibdu2z03YlpKSwqlTp/jnn3+wsLDgk08+wcXFhZMnT7JgwQLs7e2ZOHFi7i+EUCgEBgbyxx9/sG3bNgwGAz4+Pnz66advVZ6M1GbIefPm0adPn1wPrX9dieBDeONcv36d3r17U7lyZfR6PZGRkZne7EJDQ3P0B6tLSqJoLsrjrVAQqNXyp8HAqMBAVGo169evp0OHDsjlch4/fszIkSNZsmQJXsVa8n75r7HXlMjFkV5QdnMCbu6VMl2nUCgo6VISXVjmSb1KWleif7VZLL40FJ8kHT+qlbynVKJ6JgiRJIkTZjO/6fVsMRqZpNHw4dO+Lqu0WrQ6HX9dvMiFCxcoW7YsZcqUoUSJEsjlcuLi4rh37x5BQUGkpKTg7e3Ne++9l5Ym3tvbm8TERCZNmsS7776LpaUlx48fR6lU0rp1a8qVK5eHV0t4k/3zzz906tQJFxcXBg8ejKWlJZs2baJt27b8/PPPfP/997na7/Xr13n06BHu7u6ULFkyj0udO/v37+fjjz9m//79rF69uqCLk6dE8CG8cSpWrEjTpk1Rq9XcuXOH6dOn88svv6TbJioqimXLllGjRo1s71elUqHLZZksZDJ6KpV8rdczceJEOnXqlLauaNGiLFiwgFMnT2OONOZ54AHgqPHg0MHDmEymDDPLPnr0iIuXL9K6VKPnvr98kXp8Ums5G2/8RJe4QIrL5fRXKvGQyVDJZESYzawxGrlgNlNGJmONVkvX/3SyjQPWm81416tH2XLlOH/+PCdPniQuLg54cm1dXFzw9fXFx8eHYsWKZShD06ZNCQoK4t133yUxMRGtVovJZMJgMNC5c2cWLVokRsIUcvHx8fTq1Qs/Pz/Wrl2bNvHkN998w88//8zo0aNp1apVjoagHzhwgK+//prTp08DT2oD27Zty9SpUws86H3nnXeoVatWnk2w+ToRwYfwRjpw4AAA3333HePGjcNoNDJs2DCcnJzYs2cPX3zxBXq9nsaNG2d7nzb29lx+/DjXZdpqNCJJUoY8IgByuZw+fXvz/bc/5Hr/L9LApQu/n13PhAkT+O6779KWm0wmRowYiWSSqOf0/gv34WJdkU9qrWD33bnsuDuDP2UyElNSALABmioUjLewoJVCkSEL61KDAZ0k0cbPDzs7u7T8J3q9HrPZjFqtzrIvh1wup3Xr1syaNYvx48fz5ZdfotfrWbVqFZ999hldunRhx44dolNqIbZixQoSExP5888/092QZTIZ3333HYsWLWLGjBkMHz6cmJgYNBoNlStXfu48THv37sXPzw9vb282bdpE+fLlCQgIYMKECTRs2JATJ07g4eHxqk4vU2fPngWeZP99m7Keip5dwhvr3LlzTJkyhbZt2/Lnn39SqlQplEolfn5+BAcH4+LiQpEiRbK9v9r16nHAaORGLvNeHDaZAJ477FatViNJ5iwnccsNVxtPWrv78/3339OwgS/Tp09n0qRJVPeqwV/LltG1/Fis1dlrVGrm2g8rjS0KlYr+SiUGa2vibGz429KSNkplpunf15tMVK5SJS2nSCq1Wo1Wq812J9Ly5ctTrFgxwsLCUCgUWFhY8OGHH7J06VJ27drFiRMnsrUf4e10+fJlqlSpQqlSpdItT0pKYunSpSQnJ7NixQrq1q1Ly5Ytady4MY6Ojri7uzN69Oi0GanhSTPikCFD8PLyYv369bz//vt4enoyYMAAAgICUCqV/Pzzz6/6FDO1Z88erKys+Pvvvwu6KHlGjHYR3lhGoxE7OzscHR0JDAxk586dJCQk4Onpyb///kuvXr3o378/1atXz9b+DAYDP/3wAwOMRn7PYecusyRROiGBe8DSpUsz1H5IkkQDn4Y8vmnG32thjvadE5ci93E4bDl3Ys8jl8mpVNSXpiX7UcY+Y0fU/5btUtQ+Ah6u5WHyLTQKS4xGI4+SQwmwtKT+M804zzJLErZJSTRr25YWLVq89DksXboUjUZDQEDA/x/DbMbd3Z2uXbsyZcqUlz6G8Gb65ptvWLJkCffv309rXty/fz/9+vVLm1+oWrVquLq6YmVlhcFgICwsjFu3bnH+/HlMJhO//PILVatWZeTIkVy5cgV48sDQpUsXJk+ejLOzMwDjxo3jl19+SatBKUhxcXEUK1YMT09PLly4UKBleREx2kUoFJRKJQcPHsTT0xNLS8t001F7e3uzdu1a1qxZQ7FixTI8KWVGpVJRr0ED5hw4QE+TiTpZ3HT/6w+DgXuAVmnJiM9HUrlyZerWrQs8CWrGjRvHiZMBfFT1zxfuJy4lCpNkwFbtgEKe88Rl1RybU82xOZIkZat5QpIk1t38iYCwddT39qFbG38ePHjAiuUrUCqUmMxmyOI6REoSiWbzc0e45FSJEiU4d+5cumVyuRxHR8cczZ4rvH26dOnCb7/9xrp16+jevTuTJ0/myy+/pHz58owaNSrT76CTkxO1atWiffv27Nq1i6+++gqZTIavry8bN27E3d2dQ4cOMXHiRBo1asTOnTvZvn07W7ZsQa/XY2tri0KhwMPDg7p169K5c2f8/Pwy9K3KT7a2thw+fJi6desSFhbG2rVrCQsLQ6fTUaRIEerUqUPbtm1faZlelqj5EN54MTEx9O7dm9mzZ6cLMlJTj1+9epXOnTtTs2bNLG/IERERTPv9dzQ6HXssLamVjT/muXo9g1NSKC6TU9KxNVEpwdyLvUIDnwa4ubtx8MBhHoaH0dbjU1q6D8p0H5ejDrAvdB53Yy4BYGfhSP0SXWjhNhBlLoKQ7DoXvp2/rn7FwoUL+fDDD9OWR0RE0KRJE7h9mysazQuv2wOzGZfERAYOHIinp+dLl2n37t2cPHmSqKiotGVhYWG4ubkxbdo0hg4d+tLHEN5c77//Pnv27KF9+/asXr2ali1b4ufnl62mPbPZzNixY/Hx8eGff/5Jd7O+e/cuXl5eJCUlAVC2bFlcXV2xt7fHZDIRERHB3bt3CQsLw93dnVmzZtG2bVvgSRCv0+nQaDT5lqfm4MGDTJk8mW3btqGWySilVqMFHksSD/R63Fxc+HjoUAYOHJgns23nhkgyJhQqJ0+epH79+tSrV4+TJ0+mWxcXF4e3tzfXrl2jUqVKNGnShIoVK2b4gYiJiSEgIIBDhw6hVCqx0mqJf/yYz5RKPlapcHtme0mSCDCbma7Xs8ZoZIhKxTyDgffKf0d9585cjNzD+cid6M2JOGpL4+PShZLWmQ+FPRG2njU3fqRpk2Z8PHgQdnZ2/PPPP8yfv4AKdj70rzINhTx/Kin/DOyDa3U7DhzYn2Hdnj17aNWqFUctLGj4go5uOknCOiGBjl260LBhw5cu09q1a4mOjk6rEtfr9XTv3p09e/YQGhqaoV+JULgkJSXRrVs3tm3bRsOGDTNMHvkiN27cYNasWZw8eTLTETGfffYZc+fOZdSoUZl+zyRJIiQkhB07dnDt2jUGDBiAu7s78+fPT8s71LVrV0aNGkXlypVf+lzhScD01VdfMWXKFDyUSoKNRsaq1Xz/n6ag0yYTsw0GVplMFClWjG27dlGzZs08OX5OiGYXoVDx9vZmwIABGdKo37t3jy1btnDjxg1q1qxJeHg4c+fORaPRULJkSWxsbDAajTx8+JBHjx6h0WioV68ebdq0QalUsm3bNv44cYIJiYn4KRTUVCiwAmKAXU+HnZaVyZiv0eAtlzPLYMDFqiJKuYpaJdpSq0TbLMuebIhj87+/8dFHHzF//vy0H1E/Pz/atWuHn58fgZG7s7Wv3AhLvMHgd8dkuq558+YolUoumM28KKTQymRUUirTdeZ7GcHBwSQlJfHTTz+RnJzMypUrefjwIevXrxeBh4ClpSUpKSk4OjrSvn37HI1+Sh367eXllel6Ly8vdDrdc4d0y2Qy3N3d+fjjjzly5AiLFy9GoVDwwQcf0KxZM0JCQpg3bx6bN29m3759aU2vuSVJEkP8/Zk3bx7TNBqGqVTMNhjwfaZGtq5CQV2FgnFmM+1jYmji68uR48ez3d+tIIjgQ3grzJ8/H4ALFy7g7OyMv78/W7ZswWw2U6RIET744APkcjnBwcHcvn2b0NBQkpKSUCgUaR3UPD090yUl69ixI++++y6nT59m66ZNHNbrUQF2MhleCgUTNBpaPh12GvB0pIuFKme1decjd2KSDPz8888ZfkTbtGlDk8ZNOBm0Md+CD5VcQ2RkZKbrYmJiMBqNaLPR9NRKJmNBYCCGTp1yNcleqsjISO7fv0/NmjWZMWMGCoWCtm3b8tlnnz33hiEULtevX2fPnj188MEHOc5/kfo0fuHCBerXr59h/YULF7Czs8uy6UQmk2E0GpHL5ezfvz9djd+wYcNo0aIF/fv359KlSy81NHz27NnMnTePhVptWkK/IU/P+YHZjPMz5XSWyzmg0dAkJYW2rVpx9ebN17YFQQQfwltj/fr1dOnSBUdHRxQKBVOmTOGrr76iUaNGaW27pUuXpnTp0tnep0ajwdfXF5PJxNbNm7ljZUWxTH5MdE9bL1XynPWKj9Y9wNnJJa2H/bPq1qvLX+fX52ifOVG1aHOWLlnG6NGjsba2TrcudZ6V7Aw8/lit5o/ERE6dOvVSTS+HDh2iSJEiHDt2LC37qSD819q1a7G0tMzVU325cuVwcHBgzJgxbNu2LV3ejFu3brF48eJMg5LMnDhxgm7dumX4vtvY2DBu3DhatmxJQEBApvNOZYfJZOK3cePorVKlBR6pDhuNtEhOJsDSktrPPBxYy2RsUqspExnJX3/99dr2kRJ5PoS3RseOHdFqtTx69IjDhw9TrVo1DAZDnnSC9PT0xChJnH5aw/Gs1Bu0jJw95VirixIeGU50dHSm668EXcFKmZuk79nTtFRf4qITaNO6TdoIk7i4OKZMmcIPP/yAZDYzPCWFc88571QV5XI+UKnY9vffxMTE5Kos//77L8eOHeO7774TgUchFRcXx6RJk6hWrRqOjo7UqlWLmTNnkpycnLbN6dOncXNzy1UNm1wup2PHjuzbt49GjRqxevXqtKRiPj4+WFlZ0axZsyz3YzabiYiIeG4Sw9TlN2/ezHEZU+3YsYOQsDA+zeQ8GygUeMnlXHjO36WbXM77SiWzpk/Pl7xCeUEEH8JbQy6XU758ebp370758uUJDAxEo9HkSc/vYsWKYaFWE/icP/bUxhqjOSVH+63p6IfZaM40d8XZs2fZsXMHdRzb57S42eZo6c7AqrO5euFfateuTRH7Yjg6OPLVl1+jklnQoGFD1NbWNEpKYqPB8MIfsvFqNQqDgXnz5qWNGIAnfThWrVrF9OnTmTdvHqdOnUKv16d7b2RkJEuXLsXb2zvbsxALb5dHjx7h6+vL999/T/Xq1fn888/x8PBg+PDhtGrViitXrnDp0iUuX7783Iyl2VGlShUGDx5MZGQkPXr0oEGDBvzwww+UKVOGTz75BCsrqyz3IZfLsbKy4s6dO5muT12ekySHz5ozaxZ11epMh/wrZTJOWlry0QuanYYolVy5cYMjR47kugz5STS7CG+VR48e4eDgQIcOHahQoQKWlpZ5MvRNJpNhZWFB3H+ewP7L8mlTTIopKdP1z2OrcaCF2yDGjRtHaGgogwYNwt7enq1btzL+1wm42Valdon/vXT5X8TDribf1tnB1cdHeZh4C42jJdUcm/PHuW5YW1vToXNnli1ZQiedjnIKBUOVSroplTjKZBiBf81mFhoMLDKZiDebSYmKYurUqfTu3ZtLly6xe/du3NzcaNq0KSEhIaxcuZLDhw8zePBgrK2tuXTpEuvWrcPZ2ZktW7a8UbkKhLzz+eef8+DBA86fP0+VKlXSlp84cYJmzZqlq8EMCQnh/v371KlThzp16uQ4CVj58uXTHlAWL17M0KFDc9QcC1CzZk0WLFjAiBEjMsxVNHnyZIoVK0arVq1ytM//unj+PH1fsF4hk3HZZOIHvZ7lWm3ab1CqZgoFKpmMS5cu5WiaiVdFBB/CW8XDw4PAwEDOnTtHdHQ0KSkp2U64lRW9Xs/z8p6WfRrgPEz6F7dnpq3PSiv3wVip7Nm6biFLly4FQKVQU8vxXd4r9xVqRf5Ppa2QK6nq0JSqDk0BSDTEEpcShVarZeXKlVT29KRx48acCAhgZGAgn6ekr+Gx1mqp6+tLgwYNMJlMLF++nN9//x1JktLmaUkNKi5cuECrVq2YP38+1tbWaZPJLV68uMDyEwgFKyoqijVr1jBu3Lh0gQdA/fr1GTp0KLNmzeKjjz7CbDbz4MEDbty4wfr169m+fTudOnXKVh6f58lsosOsNGvWjMDAQBo3bsy4ceNo2rQp9+7d448//mDx4sXMnDkzR7NqPys2Ph67LM5HK5OxzWhktsHAiGdqQWQyGXZKJbGxsbkuQ34SwYfwVhk4cCD9+vVj8uTJlCpVikOHDhETE/NS1Z/wpC06LjmZKs/5MbGVySgnVxMaH0Q9p/dytG+ZTIZvyR74OHchNOEqRrMeJ6uyWKnsX6rMLyM0/kmOjbNnz2JjY0OfPn3QaDRUrFiRuLg47ty5Q3JyMnK5HGtra8qVK5du5MHnn3/OhAkTqFChAt988026fdeoUYPJkyfTt29fKlSowIoVK+jRo4eYMK4Qu379Onq9njZt2mS63s/PjylTpmBvb4+DgwMVKlSgSZMmREdHs3nzZpYtW8bNmzfp0qVLjmo67927h6WlZbaaWp5VrFgxhgwZwpo1a+jQoUPa8uLFizN79mwGDx6c433+l6VWS1J8/Au3KSeXs8vCAp/n1BYmmky5OrdXIc/7fPz444/IZLJ0/ypVyjy5kiDktV69evHuu+8yatQoNmzYADz5YXtZqR3Hyr3gh62u3Mz9uEu5PoZCrsTdthpl7WsXaOABEJpwBbVKQ2hoKJ07d05XrW1ra0v16tXTErtVqVIlw5BHuVzO48eP06W8/69OnToB8O2339KzZ08ReBRyqTfIiIiITNenLn+2k2mRIkXo378/3bt358SJE6xfn/2RYWazmQvnz5OUlMS4sWPTktrlhLOzM5999hn+/v7Ak7lnfv75ZyIjI5k/f/4LO1/rdDpCQ0O5ceMG4eHhmJ7pT+bq5saFbHQWbapUIge2G43plt8wm0k2m/n3339fy2kJ8qXDqaenJw8ePEj7d/To0fw4jCBkoFQq2bhxI2PHjmXPnj3Ak2mzX7bH9/Hjx1GrVAw2GHj8nH3VVigITbiOyWzMdP2b5F78ZdRqNSVKlMj1w4NcLk83SuG/dDodQIaOp0Lh5OXlhbu7O3/++WeGv1Wz2czMmTMpU6bMc5PM1a9fn65du3L8+HEuXryYrWNevXqVqEePmKPRUCcxkQXz52fIkJxdqYHDjBkz8Pf3Z+bMmfj7+1OyZElmzJiRtp0kSZw4cYI+vXtjb2uLq6srFStWxMnJCTcXF3766SfCwsIA6DdgAH8bjdzPxizbG41G3k1O5th/ApA5ej0qmYzp06fj4uLCV1999VoFIfkSfCiVSpycnNL+vUzPZEHIKbVazahRo4iMjMTFxYWoqCjOnz+f6/0FBgZy+/Ztxv36KzctLamXlMQagwH9Mz+SteVy9JKesMQbL3sKBcosmQmOv0iKXkf16tVzVSshk8moXLkyS5cuzfBEB7BkyRJkMlmOnlSFt1fq6JFNmzbh7++fli335s2b9OjRg+PHj9OyZcsX7qN+/fpUrVqVdevWYTAYXritTqdj49q1NFEqGaRSsU2r5UOlkjWrVxMUFJTj8qc+YHfr1o3g4GAePnzIvXv36N+/P59++inLly/nxo0b1K1ZEx8fH46uWcNYmYztFhYcsLBgk1ZLu+hoJv70E+5ubgwaOJAuXbpgodUyP4tzAeiiVNJHqUTx9G81SZJYZDLRqFkzRo8eTd26dZk2bRpVq1bl9OnTOT6//JAvwcfNmzdxcXGhTJky9OrVi5CQkPw4jCC8kFKp5P79+3Tu3JkNGzakm6gslV6vJyYmhpSUzIfIPnr0iA0bNvDee+8xYsQIevXty12zme46HaWSk/kmJYXFBgMrDQbOmUyoZQpOP9ycz2eWv25GnyRGF47BYMjWbMDP07RpU65du0a/fv3SsqiaTCZWrlzJ999/T5MmTdi9ezdXr17Nq6ILb6grV65w5coV6tWrx7Jly3B3d8fW1pYKFSqwfft2evfuneVcKTKZjPbt2xMfH//CaeeNRiPLly0jOT6eRU8nTVTIZMzRaGijULBu1apMA+bnSUlJ4ebNm7Rs2ZIFCxak/c04OzszY8YMOnTowPfff49PvXokXrnCdgsLbmk0fK3R4KdU0lSp5H2VijlaLfctLJioVLJs0SK6dOxIz969mWIyPTefRyq5TMZSCwvqKxTon+bmSQAaNGhAsWLFaNeuHV9++SXw5O/y+PHj2T6//JLnHU69vb1ZsmQJFStW5MGDB4wdO5ZGjRpx+fLlTPPlp6SkpPvhT829Lwh5xcvLi/Xr1/Pnn3/y8ccf4+zsTExMDDt37uTcuXPo9XqUSiVeXl74+fmljbh4+PAhCxYsoFixYsybN4+7d+8ya9Ys3mnZklq1anHs2DFmnjlDwtMmBIVcjo2NNafCN/Oux2dolJYFedq5dixsNY7FihP5KOKlUjOnPnysXr2aNWvWULlyZSIjI3nw4AGdOnVi4cKFODk5sXPnzjybhEt4M61YsQJra2u6du1Kx44duXjxIgkJCdjb21O1atVsp1EvXrw45cuX58yZM5nOqxIdHc2q5cu5+++/bNZqKfOfPlwKmYxxajU1ExK4fPlytjOobtq0CYPBwJAhQzLUEspkMgYPHkzr1q2pqlRySKul6AtqEu1kMj5Xq6krl9MmIAAra2sqVq1KmytX2A5ZzrK90WCgv05HHNCjR490rQ6Ojo74+/uzYMEC2rdvz5UrVyhevHi2zjE/5Hnw4efnl/Z/Ly8vvL29cXd3Z+3atXz00UcZth8/fjxjx47N62IIQpoPPviAMWPGIEkSU6ZMoVGjRgQGBqJQKBg9ejS1atXi6tWrTJs2jWnTpjFo0CBu3LjBrl27KFOmDGPGjMHf35+9e/eiVCpp2bIlarWazp0707lzZ0wmE0ajEbVaTXR0ND///DNnI7bRwKVLQZ96jsXoHnL50QFatWrJrl27cvQEmJnatWtTqVIlFixYQEhICAMGDKB79+7Url0bs9mMUqnEaHzz+8gIL+fUqVOULl0apVKJUqnMdMbZ7CpbtiyHDx9ON8Q+ddbqwwcOYG8ysUurpWkmMzXXUCior1Ry7MiRbAUfV69e5cSJEwAULZp5JuLUYbx/KJUvDDz+y1epZBXQfudOli5dyp/TptEoMJBBcjn+ajUVnun4rpckNhmN/GYwEMeTSoBnJ9qEJ9NF9OnTh4kTJzJkyJACbfbM96G29vb2VKhQgVu3bmW6ftSoUXzxxRdpr+Pi4nB1dc3vYgmFiIeHB0FBQXh4ePDjjz8yceJEHBwcOHfuXFoVadu2bfnwww+pV68e06dPx2w28/nnn2NlZUXPnj3x9PREkiTq1q2b4SlMoVCk5bAoWrQonlU8ORa8Eh/nzm/cKI6AB+tRq9Q0bNiQPXv28PDhQ8qWLftS+7SyskKlUtG0aVMmTZqUtnzPnj0kJCS81Fwwwtvh6tWreVb75eLiQlJSEkuWLEGSJMJDQwl//BgruZwBCgU/WVhg/4K/ywEKBQNu3SI5OfmFaf4vXLjAihUrqFy5MsHBwWzfvj3TZF7btm1Do1BQN5Ng50XaKZV4q9Ws+OsvDhw+zPfff8/i+fOZmphIE4UCT7kcLfBYktguSUSYTJTz8KBfkybUqFHjufu1sbHhf//7H6tWrcrT655T+Z5ePSEhgdu3bz934iyNRoOtrW26f4KQ1ypXrsz58+c5cuQIKpWKESNGZOjPUKRIEb7//nuMRiPHjh2jffv2/PTTT2kjZ+Lj47N1I/Zt5EtYwk0uRe3Lr9PJF/H6KI6GraRuvTrY2tri7OzMv//++9L71ev1BAcHU6tWrbRlN2/eZMiQIdSpUwcfH5+XPobwZtPr9S81G/J/pe5Hffkyxa9coWt8PMu0WsIsLZmu1b4w8AAo/bRW4XkjQyKfTti2ZMkSPD09+eijj6hbty4zZszI0Jfi7NmzTJw4kR4yWZYJwzLjL5Oxe+9e/Pz8mDZtGrGJichkMsJKl+bvokVZaWPDIScnKvj48PXXX/PJ8OHUqFGDiIiItNF+malduza2trbMnTs3x2XKK3le8zFy5EjatWuHu7s7YWFhjBkzBoVCQY8ePfL6UIKQI0ePHk37ccisPRhIq+41Go3MnDmTSpUqMXr0aA4fPgzw3CD6vypWrEhVz6qsv/UTZe3rFHjOjuyQJInV10djREdYWBgzZsxAq9USGBhIx44dXypR0YULF0hJSWHGjBncunWLiIgIdu/ejYeHB+vWrXvjaoeEvPPgwQOmTp1KbGxsng0DTUhIAGCvhQW2ufhupfaq2LBhA+XLl8fOzg6TyURERAR37tzh9u3bWFhY0LBhQ1QqFevWrUOn06FUKvH19aVNmzbUrl2bS5cu8ffff1NMoWBaLjKdhpnNrHna7Hnnzh06d+6c1pE2q5lq79+/z7Zt23Bzc6NixYoZ1iuVSipXrsyBAwdyXK68kufBR2hoKD169ODRo0c4Ojri6+vLiRMnRNpkocB9+eWXBAQEsHnzZq5fv84777yTYZvUhGSOjo6cP3+edu3aIZPJ0vJRKLNRdSqTyejStQu/jf+NjTfH0bvKpCzf86wE/WMe6ULRKqwpbumR7zfovcHzuR5zHIVCQbVq1bC0tGT79u2YzWZWrFjBoEGDcrXflJQU9uzZQ8OGDfHy8iIwMBBLS0tmzpxJr169Mu2ELhQO//77L40bNyYhIQE3NzdCQ0PzZL+hoaE4KxS5CjwAwp8OoU9KSmLnzp1pf/tqtRqV8sm/5ORkjh07RlFLF2xUxVDJNRSXV0KjfcjBfUfYt3cfZsmMTJL4AHJclqsmE81TUkjSavmwTx+8vLyAJzmLatasmeX7a9SokWUXBldXVzZv3oxer892h968lOfBx+rVq/N6l4KQZzZu3Ej79u2ZNGkSvXv3xtraOm2dXq9n4sSJ1KxZk40bNxL+4AErli7l1PHjKJ8+ucTFxWVrHgg7Ozs6du7I8uXLqe7YGi/HFtkqX2xKBJtv/8alqH1pycpK2VaijfswPIs1ycUZPxGWcJ2o5HukmJLQKqxwtCyNk9WTJqTHuvvsDp1N9erV2b59OyVKlACe/Pj269eP9evXc/r06bTaIrPZzM2bNwkLC0OlUlG1alXs7e0zHFOSJLZs2UJcXByLFi2iQoUKuS6/8Pb5+OOP0Wg0nDp1io0bN/L5558TFxf3Uk3vJpOJwMBAHEwm4iUJa8hx4L7SaMRaq2XYsGFcvnyZo0eOcuv2LVRYUM7KG1enqrjaVKGUdWUsVZknPZMkiUe6UGae64FGlrPJJiPMZpqnpCBzcGDE0KHprkdSUlK2AnaZTEaTJk2QJInIyMhMH/5tbGwwGo0kJCQ8t7NsfhJzuwiFjkwm486dO3h7ezN27Fhq167NlStXGD16NIGBgchlMq4GBtJcJqO4TofxzBluP/0Bmz97Ng2bNKF58+ZZThpVu3ZtLpy/wLqbYylpXYliFi/OmRGvf8TMi31RWJv4/Y8pabPATv1jKgsPfELfKr9T3fHFiZb+S2/ScT5iB8fvryAk4VqG9WVsvajv0p39IQsxGg2sXLkyLfAAsLS0ZMmSJezcuZNVq1Zhb2+PhYUFf/31F+Hh4VhZWZGSksLGjRtp0KABHTp0SOt4azab2bZtG8ePH2fu3Lki8BDSuXnzJnv37mX58uW4uLjQq1cvvvzyS44dO5ZuxGR2JSQkcOLECY4cOEBsYiIxgG1CAkWA/ioV/mr1C6dGSHXGaORvoxE7Kyt+GvszcfGxlLbz4oPKE6ju2AqlPHs1BDKZDAcLV+w0TjzUZT7YIjOSJOGfkkKCWs3IIUMyBGIKhSJHo8P27dvH/v37+e677zI0nabuJzu1uflBBB9CoTN79mx27dpFcnIyXbr8/3BYpVyOm1zOMIWCfipVhmFxV1QqZhsMLNq3j2uXLzNg8ODnpnuGJz9A3bp3Y9rU6cy++BHDaizHTvP85seD95aSIo/j4slA3N3dgSfD1du2bUvHjp3Ysuc3qhZrhkKe9Z9tSNwlFl0aQqwhmtYKFTMsLPCRy7GWyYiXJI6YTPyZeJWV175FBlSqVCnTtmFLS0vatWvHtm3bmDVrFmq1mipVqrBhwwYaNGhAfHw88+fP55tvvkGSJLp06UJERATr1q3j5s2bTJkyJddNNsLbK3UelRYtntQIFilShKFDhzJjxgxq1aqVLgh+EaPRyKaNGzl54gRySaK7QkFLrRZbmYwkSeKMycRig4HfDQbeVShYqNVSIpMgJMJs5lO9nnVPb8ixsbFYqq1p7T6ENh5Dcn2e5Yv6suneTWZKElbZqIE5bDKx0WikT8+emf62ODo6Eh4enu3je3t7c/bsWR49epQh+Hj48CGOjo4F1vSZ76NdBOF1kzoU799//+XatWv8/vvvqJVKWisUXNJq+UKtznQ8fhWFghlaLSe0WkwREcz580+Skl5cpWpjY8OQof6YVEnMvvghMSnP/+E4E7mF/h/2Sws8Usnlcn74YTTRSQ+5GZP13BO3Y84w83xfKpkTuGllxU5LLe2VShzlcixkMorL5XRSqThgqSXI0hJ7IDk5+bnz3+h0Ory8vPD19UWj0bBv3z4aNmyITCbD1taWESNGMGHCBAICApg5cybjx48nJSWF/fv3pxtGLwipUm94qfOYAPz000+4urqybNmybHU+TUlJYe6sWZwOCOBnpZIwKyuWWljwgUpFe6WS7ioVk7VaQq2tWaLVctZsxicpiX+fmSslRpJoqtezz9aWqdOmcf36dY4cOUL7Dv9jV/AsDoeuyPV5+rh0JV4ysyobKdIB/jQacXJweG6/Djc3N27fvo05G/O9wJPr/NVXX+Hm5pZh3Z07d6hbt26BdfgWwYdQKMnlcn755RcaNWrEL2PH0lAuZ6NGg3U2/hCrKRTs12rRPXrE+rVrs9y+aNGiDB02BL0qlunnPyAyKeN0A2bJTJzuEZ6enpnuo2rVqgDE6TOmiP+vqOQQFl/6hAZyiQMWmiyrmqsoFMzTagkODiYgICDD+oiICLZt28a7775LaGgovXv3pkiRIhm2GzhwIHK5HL1ez8KFC7l27RrNmjV74bGFwsvX1xcnJyemTZuWtszS0pK///6b5ORkpk+fzoMHD0hKSuLYsWPs2LGDgICAtIkKTSYTy5YsIezuXfZrtXyj0VDsOX+7FjIZfVUqTlhaogD8kpJ49J9Ae1xKCrdlMo4dP86wYcOoUKECvr6+rFq9Cn9/f3YET0dnzN1InKJaFzyLNmKywUxiFpNbGiWJrUYjdX18nhsQ1KxZk+joaG7cyP78UTKZjAsXLrB06dK0B4yHDx9y69Ytevbsmf2TyWMi+BAKreLFixMZGUl0bCyLVSrUOXgCqCiX87NKxYXAQGJjY9OWR0VFce7cOQIDA9PVijg6OtKzVw/i9VFMPtuJE2Hr09U0yGVy7C2KP3cCvHPnzgFgr3lxdfT+kMVYSzo2WWiwyOb5dFAqqaJS0blzZ44dO5ZWrhs3btC+fXusra358MMPSUxMfG46ZhsbGywtLRk6dCj9+/d/YXImQVCr1YwZM4alS5cyZMgQ7t69iyRJxMfHU65cOaKiopg0aRI//PADmzZt4sKFC6xfv54ff/yRY8eOcf78eYKuXmWDRkPDbPZZcJfL2WFpSYQkMUqnI8BkoldyMtMk6Nq1a6b9kr799ltSjElcitqb63NtU+ZT7iKnqy4F3QsCkCtmMymSROnSpZ+7jYeHB6VKlWLbtm05yj6sUqk4f/48d+7cQZIktm/fTvHixencuXNOTiVPieBDKLQGDhyIq4sL/1Mqcc9GZ7Rn9Vap0MpkBAQEpPV9+OWXX1i2bBmLFy/mxx9/ZNOmTZhMJq5du8ayZcsoU86Dzt06sObGj8y7/DHRugdp+6tbvAPLlv7FtWvpO4caDAbG/DAGB6tSlLN/MuJEkiRSTEnoTf/fXJJsjOdc+BaGKOVZJlL6L4VMxm61GlNkJL6+vlSsWJHq1atTsWJFgoOD2bVrF46Ojnh5ebFr165M93HixAni4uLShgQKQlYGDx7MtGnTWLlyJR4eHqhUKurXr09ERASff/45ZrOZIUOGEBoaysOHDwkJCaFv376sW7eOtatX01ShoHUOO0uWk8sZpFazyGikQVIS6yQ5PJ2BOTOlSpXC2sqGBP3jXJ9nSetK9Ks6nb0maJmcQtBzgoY7T5tSXjTfikwmo3PnzoSGhrJ79+5sl6FKlSp89tlnlClThlOnTnHx4kVmzZqFRqPJ2cnkIZn0vIbeAhIXF4ednR2xsbEi26mQr86ePUudOnVYq9WiAt7PRYbFj3U6VioU2BQpgslkYsKECXTo0IGEhAQWLlzIL7/8gr29PVFRUTRv3pzVq1fj4ODAzp07+ejDAURHxfJu6c+o59QBg1nHzIv9SJY/4rMvhqeNdpk+bTrnzp2nZ8VfeawL41r0Ee4nXEurCrZS21HKugpahQ2XI3cTYmWFSy6CqSsmE55JSbRs2ZKyZcvi4+ND165d00b1bNq0iY4dOzJ37tx0nUhjYmJo1aoV0dHRXL9+HXkuji0UXomJiWzbto1Hjx5RtmxZmjVrhqenJ9WqVWP9+vXpmiAkSaJ169bs37+fdpJER7Uab4Uiw1wnL/Kv2Uy5xESKFimGlKLBQmlN3WZV2LR5U4Ztr1+/TqVKlehbZQo1ird+qfO8E3ueZZeHE2N4TGOFCn+VAi+5HEuZjGhJ4ne9nuVGI7/88ku6FACZ2bVrFzt27KB9+/Y0a9Ys2/02jh49ysaNG+nXrx8LFy58qfPJTE7u3yL4EAqtjRs30qlTJ35Qqxmv13PZyipHP2IAC/V6Bjydlfny5csZ+mzMmTMHf39/xo4dy+jRo5HJZOh0OtauXcv27ds5fuwY90JDUcrVVC7aiHdcP+LUw02ci/yHFOOT9u2yRWpTROXC+aidyOVQqXJl3NxcKVq0KJIkERUVxd27wVy/fg0FMFmtZphKhTwXHclqpqRQp08f5s+fn2GdJEkMGzaMmTNn0qBBA/z8/IiIiGDlypWYzWb27t2bLoW6IORGUFAQVatWZffu3bRsmXFoeWoQbG9tTczTbKbeSiVfKJV0USqzdSNulpTEMUnOl3U2cz06gM23x3Po8KF08wyZTCa6dOnK3h0H+KHevmwPs30Ro9nApai9HA9dya249E2sShQYMTFixIgs5zeTJIlt27axd+9eqlSpQqdOnV6YfyghIYG///6bU6dOAXD69Gnq1Knz0ufzrJzcv8VQW6HQSu1R/5lKxUNJIjcVkKkdVFu0aJFpZ9H+/fvz7bffYjabCQ8P5/fff2fR/Pk8iomhrlpNDbMZL6WSu5KJS1H7uBq1jyKWpWnr/hkOFq5YqYuw9sYP3I29QIuWLWjcuPFzU53HxMSwd+9ePjt6lM0mE5u12hzPJ+EoSURHR2e6TiaTMWPGDN555x1mz57NtGnTsLKyom/fvgwbNuyFbdWCkF2pnUqzmiXWf9gwbGxsuHnzJsePHqXbzZssUSpZqNHgnMVDRFm5nOtKFxwt3bHXOBEYtYsWzVvy8eBBtG7dmoiICGbPms3p06fpU2VKngQeAEq5iprF/ahZ3I/HyfeJ0YejNyVjobTFTl2cn062JCQkJMvgQyaT8b///Y/SpUuzdu1afvnlFzw9PalcuTKlSpXC0tKSlJQU7t+/z40bNwgMDMTCwoLffvuNxYsXF0hG02eJ4EMotFKH+xmAuU+bFhKzOR4/VezTisNy5cplul6j0eDs7Mzt27epW7MmCVFRfCiTMdjKivLP/ECeNZmYZTCwPOkuf98ejwlQyBVY21gzYuQIXFxcXlgWe3t7OnfuTPXq1VmyYAGtdTr2a7VY5uB8DDLZCyf4kslkdOzYkY4dO2Z7n4KQExUqVMDS0pJt27ZRu3btDOv/+ecfrKysKFKkCGq1murVq1O9enUuX77MulWrqK/TcVirfWE/LgWgehpQqBQaBladzZ7gOSye+1faCJzyRevxsdc8KhSpny/nWdSiJEUtSqZbVsauJufOns/2TM9Vq1alfPnynDlzhpMnT7Jhw4Z0w3BlMhmVKlVi/Pjx9O/fn2LFivHVV18BT0ayvah/SX4TzS5CoXXt2jUqV67Maq2WbioVk/R6lhgMXLC0RJXNG3Z3nY5dGg0l3d25dOlShirfsLAw3NzcsFSrKWM0sl2tzrI/xmWTiTZ6PY+VShRKJZ9//nm2Urr/V0hICH9Om4a/XM7UbE5qZZYkyuj1tP/4Y6ZPn56j4wlCXpEkCXd3dx49esTBgwfTTQJ59OhRWrVqRf369XnvvfcyvDc6OppZ06dTJC6O8xYWzw28OyQnc8W6Fv41FqVbbjQbiNdHoVZYFMiEkOcjdrDsypd8/vnnGfL9ZIderycsLIxly5YREx1Nt27dGP7ZZ9SrVy/db5OPjw+XL18mNjY2T/to5eT+LXqGCYVWpUqVaOLry6ynTwotFQpCzWYCs5nA56HZzAajkZ59+hAUFJRhemqTycTIkSORm824GI3s12iy1RG0qkLB1woFyTodXbt2zXHgAU+SEbVt147pBgOnszkkb5/JRLBeT9euXXN8PEHIK4sWLeLevXvY2tpSv3592rdvz3fffYefnx+NGzemVKlSz03BXqRIEQYMHswdYPTTvljPipYkdprMlCvinWGdUq6iiNa5wGai9nJoQSmbSqxcsRpDNhOT/ZdarebmzZtEP37MxwoFJzZsoH79+tStWZOrV6+mbdelSxcSExPZt29fXhY/R0TNh1CorV27lm7dunHB0pLqCgXxkoRNNms9fkpJYYJMxv0HD/jhhx/4888/8fPzo0OHDsTHx7N06VIuX76M2WzmuKUlPgpF1jt9yic5mUelSzP0k09ye2qYzWYm/PILLeLiWJGNvBsddDpulytHYFCQmOZeKBB6vR5XV1fc3d3p0qULZ86c4fTp08THx2Nra0u9evWoU6dOlvOR7N27lx3//EOwlRUlnwn4p+r1fKk3Mrr+Pmw1Dvl5OrkSlnCDP851p4pnJfr265s2X1J2BAYGsnTJEr5SqRiv0WCSJHaZTHxlNHJfq2XH7t3Ur/+kGSksLCzLptycEjUfgpBNHTp0oFzp0vQwGol+GnjsNxqZ8JynplSHjEbGGY0M+vhjihQpwvTp01m6dCkREREMGjSIr776itKlS1O/Xj1qqtXUz0HV5g2zmRNGI76NGr3Uucnlcur7+rLOZCIhi2eMQ08n1PIfNkwEHkKB2bx5MxEREbzzzjuo1WoaNGjA8OHD+f777/n000+pX79+tiZC8/X1RaVSMe+Z2oMESWKawUQ1h5avZeAB4GJdgb5VphAUdJVZM2cTFfXirMbwZI6bHTt2sHTJEroqlfzytEOpQiajrVLJMY0GT52O//n5pWVHdXFx4bvvviuwmk4RfAiFmkqlYtuuXYRbWNBUr09rdvlOr39uMqAdRiPv6vX4NmrExEmTgCcdu/r06cOZM2cwGAzo9Xpmz55NwMmT+MtkObqhn3x63LyYCbZixYoYJInzL2h6OWUy8b7BQLMmTfjoo49e+piCkFs7duzA1dUVZ2fnl9qPVqvF08uL7f9pQtVJEl10KYSjpGXpwS9b1HxV1aEZ/l4LiH6QxMTfJrJ+/Xru37+fYU6XhIQEjhw5wuQJE9i3ezffq1Qs12hQPPN7YyeT8bdGg31iIl+OGJG2/ODBg6xbt46TJ7OeMyqvidEuQqFXoUIFDh87hl/LllSMiKC7TMYYtZqK/6mtSJ13YZbZzF69nnbvvsuqNWsyHbKW+mT277//IkkSDXNQbQpw2WzGwc4uT1KUOzk5oZDLuWw282w9SpTZzEKDgbEmEzXr1GHD5s2vxRA8ofA6ffo0pUqVypN9ubm5se3cOQySRLAk0U+XwmmzjA+rTcfZKvPRaQXtXvwVDof+xY2445glM25W1bBU1ibw9DGOHj2KWq3G0dERuVxOUmwsj+LiUADvKZWMtrCgxgt+a4rKZHwll+O/bRvBwcG4u7uzYcMGfvrpp0xHFeU3EXwIAuDp6cnZwEDmzJnD3JkzuR8ezlJJwgZQyeUEm81EGgz41K3LsmHD6NmzZ5ZtsQlPEyBltw9JqiRJQvuCtMcmk4m7d+8SEhJCZGQkJpMJS0tLSpYsSdmyZdNN/KZQKJArFCwxGFDzJC9JnCRxxGxmrckECgV9P/yQqdOmiflYhAIXFhaWZ/liihYtil6SaJmczCGTCRulHYNr/ImHXeYzxgKYzAYM5hQ0CqtX3vx4MXIPy65+SalSpRj2xWA0Gg1r16zjTNBh2pUZgc6YwJ6QuYTdv089uZwmSiW1tFoaKxRZ5jVJ1Uul4kujkXnz5jFu3DicnJyYNWsWYWFhBAUFZZrULb+I4EMQnnJ0dGT06NGMGjWKrVu38uGHH3InNpbevXvTqlQpOnfu/NyprjOTmkckPod9uq1lMpJ1ugzLDQYDhw4d4ujRo8TExKBSqShRogQKhYKEhAQOHDiA7Ok8FS1btsTDwwOj0YjJZOKWrS0DYmLS9lWudGl+HjKE/v374+DwerZ9C4WPTCYjr8ZApO7ngoUFjuZi9Ko0ARtVUcySGbks/c36QeIt9oXMJzByN0azAXuL4ngX70Qzt/5oFJZ5Up4XSTTEsuL6KDp26siKFcvTcu18//33fPPNN0ycOJFhNf5iT8iTEXU7LS1zNH9TKiuZjG5yOZvWrmXcuHFpy2vVqkVcXBwxMTGvrPZTBB+C8AylUkmHDh3QaDT07NmTIUOG4O2dcVheVjw8PJDLZBw1maiSg6YXL7mcR3FxJCYmpmUzvXfvHsuXLycqKoq6detSv359XF1d09W+JCYmcunSJQ4fPsz06dNp3LgxNWvWxGw2s23HDqpUqcKyZcsICAgg+vFjjhw+zNWrV+nYsSN+fn456lUvCPnBzc0tWx0ss6LT6Th9+jQKhYK4xEQkKYGp53oAoFVZ42Fbg/pOnfEs1pTQhKvMuTSAEs6O/PLrz7i7u3Po0CGWLF7CzbgTfFx1HmpF/tYKnn64BUlm5s8/Z6RL8ieTyfj5559ZsngZ5yO2Y6W2Q2GMz1XgkcpdJmPzo0fplv3yyy98/fXXBAcHU758+VzvOyfEUFtByAaz2ZyrZDzt//c/7u3Zwzm1OtvVuHfMZsokJtK7d29q167NrVu3mDdvHsWLF6dXr15ZdsYzm80cOnSIf/75h6JFixIbG8ugQYNYvnQpsfHxeKvVlDCbMQF35HKC9HrcS5Zk8CefMGzYsOembxeE/GA2m1m+fDmzZ8/mzJkzFClShO+++y5X+5IkiXPnzrFhwwaSk5OpUqUKFSpUwMXFBbVaTVJSEqGhoVy+FERwyF2KW5ZGkpkpXbkE+w/sTzeh26lTp2jUqDEtSw6mhfvAvDrdTK2+NhqTSyinz57KdH3Pnj05vfMmCfoYdEm3ic5i4rkXmZCSwiStlkexsZmuz+1vHYiJ5QQhT7Vq1Yp79+6lS9KTXTt37sTPz4+jFhY0zMH03+8kJ3PHxYXeffsyadIkXF1dGThwYI6qRK9fv87cuXNRyWRYy2QMkMv5WKXC45kfltNP07qvMpmo6uXFPzt24OTklO3jFLS4p7VEDg4OL0wNL7x+zGYz/fr146+//qJ169aUKlWKhQsX8sUXX+Dm5pajfZlMJtauXcvJkyepWbMm7733Hvb29s/dPiQkhOV/rSAiMpw9e/bQokWLDNv079+ff9bt4bu6u3J6ajmy8eavBMuOcTfkTqYPKe80a074JQNyVFx5tJ9Ea2u0uaz9+Eyn4x9nZ24FB2dYV6dOHRQKRa5Hv4g8H4KQh4oXL861a9c4ffp0jt/bqlUrPCtWpL/RSFQ2M6cC9FAouBsSwvz589FqtXz44Yc5bou1tbVFJZfjKUlc0WiYoNFkCDwA6ioULNZqOaHVEhYURIumTYn5T/+Q11VAQAB+fn7Y2dnh4uJCyZIl+e6770hKSiroognZtHLlSv766y9WrVrFzp07mTt3Lm5ubuzevTvHfT/WrVvH6dOn6dmzJ3379n1h4AFPmnhatGwO8Ny5VBo1akRU4n3MUvayBOdWdcdWhIQGs23btgzrgoKCOHjoANUdWuPp0BQzsM5ozNVxDJLEOqDFCzLEnjp1iuBMApO8JoIPQcjCokWL2LlzZ7o5JrJLLpezZds2YmxsaG4wEJqNAOSiycRYsxlLCwsePnxI165dczwSxWQysWjePMoB+y0tKZ6NatQaCgX7VCrCbt9m0IABOTreq7Zr1y6aNGnCgwcPmDNnDn///Tc9evRg6tSptGrVKm1mVOH1Nnv2bFq2bEn37t2BJ6Oz/vjjDy5fvszZs2ezvZ/z589z4sQJunXrRr169bL9vtQmxn///TfT9bdv38ZCbY1clr/9ocrY1aZiMR969ujFokWLSE5Oxmg0smnTJlq1bI2TdRlqFG9DSetKyIGZ2Zwy4Vl/G42EGQz4+/tnun7dunUcOXIkV/PK5JQIPgQhC2q1mtatW7Nq1SrGjx+f4/eXLVuWA4cPE+PggGdKCsN1Oq5nEoScMpnop9NRT6ejeKVKNPT1pXjx4lSuXDnHx7x8+TKR0dEsV6uxy0H1bGWFggkKBRs2bnwlTz+5YTQaGTBgAO+88w6nTp3i448/pl27dkybNo19+/Zx6tQp5syZU9DFFLIhKCgoQ3NHx44d6dWrF2vWrMlWU6der2fDhg1Ur149R4EHPEnCZ2try8SJEzPUtDx69Ij58xZSy+HdHO0zN2QyGf0qT6WMpTcfffQRtja2WFla0bFjRyxTnPm46nzUCi1quQYzcNJgYH8Oaz/0ksQkk4mG9etTvXr1TLext7fH19eX2bNnM2vWrDw4s+cTwYcgZNNXX33F999/z8OHD3P8Xk9PT06dO8fQL79klbU1lRITqZOSwv+Sk/FLTsYzJQXvpCQOFi/O2F9/5eDRo5w4cYK6devmKt/A8SNHqK9UvjDp0PP0VKmwlsuZN29ejt/7KuzZs4fQ0FB+/fXXDE1R9evXp3PnzsyfP7+ASifkhI2NDWFhYRmWL1y4kKZNmzJv3jy2b9+O8QU32vPnz5OYmEi7du1y/LeiVCrx8/Nj2bJl9OrVi3PnzhEVFcWGDRvwbdgIXYKed1w/zPF55YZWaUW/Kn/wbb3tvFfmG951H8GI2usY6rUEO01xAOSyJ/3Ganp50cVg4HI2a0BMksSAlBTOSRLjJ07Mcvtvv/2Wzz//PF+bMEXwIQjZtGrVKho1apTrcfAlSpTg119/5d6DByxfvpyqPXqgaNsWi3bt8Ondm3/++YfbwcF8/fXXhIeHEx8fn+NOdwBRUVFcv3WLoTno4Ppf1jIZfeVyFsyZk2c5F/LSnTt3UCqV1KpVK9P19erV4+7du6+2UEKudOnSheXLlxMdHZ1uuUajoX79+sjlcvbt28evv/7K7t27uXfvXlogYjabefjwIfv27aNcuXK5zlfj4+NDjx492LFjB7Vr18bR0ZHOnTujj7BgaLUlFLUo+dLnmROOlm74luxO41K9KGWTvtbTYH6S/2filCm4VqyIr17PeoMB0wv+Tu+azXRISWGlycTSZctolI05o+bOnUuLFi0ypHPPSyLPhyBkk6+vLwcPHkSv16elJ84NjUZDr1696NWr13O3CQ8PB8DOzi7H+3/0dAx/TtO6/1cDhYIZjx+nzSb6OnF0dMRoNHLnzh08PDwyrL9x44ZInPaGGD58OMuWLaN58+ZMnjyZZs2aERUVxcyZMxk3bhwjR46kT58+/P7776xcuZLt27ejUCjQarXo9XoMBgNyuTxX/bH+y9vbmzp16jBt6jRM0Zb0qjzhtUzBrjc9CT4cHR05dOwYPbt1o8uuXbipVAyWyWinVFJUJkMHXDGbmWs0ss1gwM7Ghq1r1uD3nI6mz+ratStdu3YlISEhX2a/BRF8CEKOubq6olKpCA0NzbdjpFYf56bmIeXpjLw2L3H81JTwr2Pw8e6772Jvb8+vv/7KvHnz0lW1h4SEsHz5cj799NMCLKGQXe7u7uzbt4+ePXvSvHlzlEolRqMRjUbDl19+ya+//opcLmfhwoXMmDGDCxcuEBgYSHx8PFqtlhIlStC9e/eXnogOnnR2LVe+HBcCrr6WgQdAZPJdAEqXLo2dnR3bdu7kzJkzzJo5k59WruTbZ5pJalStyrzhw+nRo0eO8/eYzWacnJxwd3cnKCgor04hjQg+BCGHOnbsyKJFi9ixYwePHz/G09OTGjVqcOHCBYC0/wcFBaVbl5PXqfPCBAcH4+zsTGxsLHFxcdja2qaNo3/ea83TeWECTCbqAM5yOQ/MZh5IEs4yWYbXQIZ1F5+2Jdva2r70ueT16xs3bjBkyBB+/fVXwsPDef/996latSqBgYH8+OOPaLVamjd/MoSyoMual9+JV/kaeKXHXr58ORs3bsRgMFC5cmXc3d25f/8+Fy9ezLC9v79/2uvUKQz0ej2xsbFZ/m1k9VqlUmEwp3Av/gq2akfsNI7EpkQSp4/Ml9dAjt57O+YsxR1KcOfOnbTrcv36dT4dPpzJU6awZcsWgoKCKF++PI0aNSIlJYUrV65w8+bNXH0u9erV49ixYxw/fpwGDRrk7Q+p9JqJjY2VACk2NragiyIImTIYDFJ8fLzUpEkTCZCaNGkiSZIkNWnSJN3/n12Xk9eNGzeWAKl06dLS1KlTpdatW0uA1Lp16yxfjx49WgIkQBqjVkuSjY00Rq1+7uvnrVMrlZLZbH7pc8mP102aNJEWL14sabXatHOVyWRS0aJFC7xs+fWdeJWvX6eyvOh1gwYNJEDy8vLK1t9GVq99fX0lK5X9k9fu/tIfTS9Lrd398+11Tt9rrynxSq9zo0aN0r3OSk7u3yLDqSDkUn4/5Y4cOZJTp07x448/kpCQkKOnuT+nTUMTEsIerTbHNR+3TCaq63T0+ugj5s2b91o9kT97nc+ePcvWrVspUaIE7777Lo8fPy7wsomaj1f7ul27dri5udG6deuXrvlYtHAxtollaVn649eu5sNGXZRRR73p1LUDX331VYFc96yI9OqC8Ba4dOkSXl5edO7cGV9f3xy99+LFiyxatIizlpbUymHH0zl6PUP1eu4GB+Pq6pqj9wrCq9a7d2/27NnD119/nes5SQBiYmL4aexPdCz3HQ1LdsvDEuaNBwk3mXimA/v376dZs2YFXZxMifTqgvAWqFatGgMHDmTr1q1ERkbm6L2enp4UL1qUnjodMTl4vrhsMvGNyUSXzp1F4CG8EQYNGkR4eDjXrl17qf0cO3YMpVxD7RL5n1QsN86Eb8XetkiuZth+HYngQxBeY5MnT6ZkyZLMnTs3bQhtdigUCjyrV+eW2UwznY6H2Rivf8ZkooXBgHvFisxbsOBlii0Ir4yvry8NGzZk06ZNaSO9curhw4fs33+ARiV7olXmfsbY/GIwpXAqYhP9P+qHpaVlQRcnT4jgQxBeY7a2tuzf/2Sq799//50zZ85kOfw2ISGBJUuWcODAAfp99BERRYtSOSWFL3Q6bjwThEiSxHGTiQ90OhrqdJSuXp09+/eLJk/hjSGTyVi8eDHx8fGsWrUKUw7nPUlISGDxoqUU05aktfuQfCrly7kQuYuElGgGDx5c0EXJM6LPhyC8AaKiohg2bBirV6+mZMmSeHt7U6ZMGZydnZHL5SQmJnLv3j0uXrzIuXPnsLKyYubMmXTv3p2wsDCmTp3KwnnzeBwbS221mhJmMyaZjLsyGdf1esq6u+M/bBj+/v5vzZOVULhs2rSJLl26UKlSJXr06IG1ddY1GGFhYSxdsozEmBQ+qb6UElZlXkFJc27ahZ6Uq12cPXv3FHRRXkh0OBWEt9T+/fuZMWMGW7duTXvCk8lkabUhzs7O+Pv7M3jwYBwdHdO9V6fTsW7dOvbt20d0dDRKpRIHBwc6duxIy5YtX6qzniC8DrZv307v3r0xGAw0b96cevXqZRpMP3r0iKNHj3L40GEcLUvTv8pUiltmzJb7OrgZfZJZgR+xceNGOnToUNDFeSERfAjCWy4xMTEtwZDBYKBo0aLUrFmTsmXL5moiOkF4W0RERDBy5EhWrVqFTCajVKlSODk5oVarSUpK4l7IPcLDw9GqrGnk0ouW7oNQynM3X1N+SzEmMfl8RyrX9ODgoYOv/QOCCD4EQRCEQu3hw4esWbOGU6dOERQUhE6nIzk5mZCQEFq4DaSl+yDUCouCLuYLbbg5jrOPtnDp8kXKli1b0MXJUk7u3yK9uiAIgvDWcXJyYvjw4emWmUwmGjVqzMVLu2npPqiASpY9t6JPcfT+KqZPn/5GBB459XrX4QiCIAhCHlEoFCxZsphYQzibbv2Wq4kbX4UE/WPW3PqBRr6NGDp0aEEXJ1+I4EMQBEEoNCpUqMDMmX9y4sF6dt6dWdDFySDZGM+8oMHILQwsXbb0te/nkVui2UUQBEEoVD766COioqL45ptvUMk1tHAfWNBFAp4EHguChhInhXF43yE8PF7PETh5QQQfgiAIQqHz9ddfo9Pp+PHHH0k2JvC/Mp8V6EixBP1j5gV9TJz0gF27d+Ll5VVgZXkVRPAhCIIgFEpjxozB1taWL774gvDkW3QpPwY7TfFXXo5rj4+x7taPKC3NHN536K0PPED0+RAEQRAKsc8//5wtW7YQKbvOxLPvc+rhllfWEVVnTGDN9R+Ze/FjqterzKkzJwtF4AEi+BAEQRAKufbt23P1WhAdurRn1bXvWBj0CdG6B/l2PEmSuProCJPOdeBS7E5mz57Nvv17cXd3z7djvm5EkjFBEARBeOrvv/9m0ICPiYyKpKpDMxq6dKe8vXee9AfRGRM5G/4PAeFruB93g2ZN32HR4oWULl365Qv+GhAZTgVBEAQhl+Li4li+fDl/zpjJ1WtXcLLxoH6JrlQu6ouDhTtyWfYbDfSmZO4nXONc+HbORm4lxZREu/+1Y+gnQ2nRosVbNR2CCD4EQRAE4SVJksSRI0eYOXMWGzdswGgyYqGypqR1JUpaVcHVpgrWqqKo5FoUciUGcwoGUwpRySGEJlzhfvIVHsTdxiyZcHQowceDBzJo0CBcXV0L+tTyhQg+BEEQBCEPRUdHc/bsWc6ePcuZ02c4feoMwffuZrqtSqmiqmc16nrXoXbt2tSpU4dq1aqhUqlebaFfMRF8CIIgCEI+i4mJISYmhuTkZAwGA1qtFgsLC4oXL45Goyno4r1yYmI5QRAEQchn9vb22NvbF3Qx3khiqK0gCIIgCK9UvgUfM2fOpHTp0mi1Wry9vTl16lR+HUoQBEEQhDdIvgQfa9as4YsvvmDMmDGcO3eO6tWr07p1ayIiIvLjcIIgCIIgvEHyJfj4/fffGThwIP3796dKlSrMmTMHS0tLFi1alB+HEwRBEAThDZLnHU71ej1nz55l1KhRacvkcjktWrQgICAgw/YpKSmkpKSkvY6NjQWe9JoVBEEQBOHNkHrfzs4g2jwPPqKiojCZTJQoUSLd8hIlSnDt2rUM248fP56xY8dmWP62JmERBEEQhLdZfHw8dnZ2L9ymwIfajho1ii+++CLtdUxMDO7u7oSEhGRZ+LdVXFwcrq6u3Lt3r9DmOins16Cwnz+Ia1DYzx/ENYA36xpIkkR8fDwuLi5ZbpvnwYeDgwMKhYLw8PB0y8PDw3FycsqwvUajyTQZi52d3Wt/ofObra2tuAaF/BoU9vMHcQ0K+/mDuAbw5lyD7FYa5HmHU7VaTe3atdm3b1/aMrPZzL59+/Dx8cnrwwmCIAiC8IbJl2aXL774gr59+1KnTh3q1avH1KlTSUxMpH///vlxOEEQBEEQ3iD5Enx069aNyMhIfvjhBx4+fEiNGjXYuXNnhk6omdFoNIwZM6ZQ5sVPJa6BuAaF/fxBXIPCfv4grgG8vdfgtZtYThAEQRCEt5uY20UQBEEQhFdKBB+CIAiCILxSIvgQBEEQBOGVEsGHIAiCIAiv1GsXfMycOZPSpUuj1Wrx9vbm1KlTBV2kV+bHH39EJpOl+1epUqWCLla+OXz4MO3atcPFxQWZTMbmzZvTrZckiR9++AFnZ2csLCxo0aIFN2/eLJjC5pOsrkG/fv0yfCfatGlTMIXNB+PHj6du3brY2NhQvHhx3n//fa5fv55uG51Ox9ChQylWrBjW1tZ06tQpQxLDN1l2rkHTpk0zfA8GDx5cQCXOW7Nnz8bLyystiZaPjw87duxIW/+2f/6Q9TV4Gz//1yr4WLNmDV988QVjxozh3LlzVK9endatWxMREVHQRXtlPD09efDgQdq/o0ePFnSR8k1iYiLVq1dn5syZma6fOHEi06dPZ86cOZw8eRIrKytat26NTqd7xSXNP1ldA4A2bdqk+06sWrXqFZYwfx06dIihQ4dy4sQJ9uzZg8FgoFWrViQmJqZt8/nnn7N161bWrVvHoUOHCAsLo2PHjgVY6ryVnWsAMHDgwHTfg4kTJxZQifNWqVKlmDBhAmfPnuXMmTO88847vPfeewQFBQFv/+cPWV8DeAs/f+k1Uq9ePWno0KFpr00mk+Ti4iKNHz++AEv16owZM0aqXr16QRejQADSpk2b0l6bzWbJyclJmjRpUtqymJgYSaPRSKtWrSqAEua/Z6+BJElS3759pffee69AylMQIiIiJEA6dOiQJElPPnOVSiWtW7cubZurV69KgBQQEFBQxcxXz14DSZKkJk2aSMOHDy+4Qr1iRYoUkRYsWFAoP/9UqddAkt7Oz/+1qfnQ6/WcPXuWFi1apC2Ty+W0aNGCgICAAizZq3Xz5k1cXFwoU6YMvXr1IiQkpKCLVCDu3LnDw4cP030f7Ozs8Pb2LlTfB4CDBw9SvHhxKlasiL+/P48ePSroIuWb2NhYAIoWLQrA2bNnMRgM6b4HlSpVws3N7a39Hjx7DVKtWLECBwcHqlatyqhRo0hKSiqI4uUrk8nE6tWrSUxMxMfHp1B+/s9eg1Rv2+df4LPapoqKisJkMmXIglqiRAmuXbtWQKV6tby9vVmyZAkVK1bkwYMHjB07lkaNGnH58mVsbGwKuniv1MOHDwEy/T6krisM2rRpQ8eOHfHw8OD27dt8++23+Pn5ERAQgEKhKOji5Smz2cxnn31Gw4YNqVq1KvDke6BWq7G3t0+37dv6PcjsGgD07NkTd3d3XFxcuHjxIl9//TXXr19n48aNBVjavHPp0iV8fHzQ6XRYW1uzadMmqlSpwoULFwrN5/+8awBv5+f/2gQfAvj5+aX938vLC29vb9zd3Vm7di0fffRRAZZMKCjdu3dP+3+1atXw8vKibNmyHDx4kObNmxdgyfLe0KFDuXz58lvdzykrz7sGgwYNSvt/tWrVcHZ2pnnz5ty+fZuyZcu+6mLmuYoVK3LhwgViY2NZv349ffv25dChQwVdrFfqedegSpUqb+Xn/9o0uzg4OKBQKDL0Yg4PD8fJyamASlWw7O3tqVChArdu3SroorxyqZ+5+D6kV6ZMGRwcHN6678Qnn3zCP//8w4EDByhVqlTacicnJ/R6PTExMem2fxu/B8+7Bpnx9vYGeGu+B2q1mnLlylG7dm3Gjx9P9erVmTZtWqH6/J93DTLzNnz+r03woVarqV27Nvv27UtbZjab2bdvX7p2r8IkISGB27dv4+zsXNBFeeU8PDxwcnJK932Ii4vj5MmThfb7ABAaGsqjR4/emu+EJEl88sknbNq0if379+Ph4ZFufe3atVGpVOm+B9evXyckJOSt+R5kdQ0yc+HCBYC35nvwLLPZTEpKSqH4/J8n9Rpk5q34/Au6x+t/rV69WtJoNNKSJUukK1euSIMGDZLs7e2lhw8fFnTRXokRI0ZIBw8elO7cuSMdO3ZMatGiheTg4CBFREQUdNHyRXx8vHT+/Hnp/PnzEiD9/vvv0vnz56Xg4GBJkiRpwoQJkr29vbRlyxbp4sWL0nvvvSd5eHhIycnJBVzyvPOiaxAfHy+NHDlSCggIkO7cuSPt3btXqlWrllS+fHlJp9MVdNHzhL+/v2RnZycdPHhQevDgQdq/pKSktG0GDx4subm5Sfv375fOnDkj+fj4SD4+PgVY6ryV1TW4deuW9NNPP0lnzpyR7ty5I23ZskUqU6aM1Lhx4wIued745ptvpEOHDkl37tyRLl68KH3zzTeSTCaTdu/eLUnS2//5S9KLr8Hb+vm/VsGHJEnSjBkzJDc3N0mtVkv16tWTTpw4UdBFemW6desmOTs7S2q1WipZsqTUrVs36datWwVdrHxz4MABCcjwr2/fvpIkPRluO3r0aKlEiRKSRqORmjdvLl2/fr1gC53HXnQNkpKSpFatWkmOjo6SSqWS3N3dpYEDB75VwXhm5w5IixcvTtsmOTlZGjJkiFSkSBHJ0tJS6tChg/TgwYOCK3Qey+oahISESI0bN5aKFi0qaTQaqVy5ctKXX34pxcbGFmzB88iHH34oubu7S2q1WnJ0dJSaN2+eFnhI0tv/+UvSi6/B2/r5yyRJkl5dPYsgCIIgCIXda9PnQxAEQRCEwkEEH4IgCIIgvFIi+BAEQRAE4ZUSwYcgCIIgCK+UCD4EQRAEQXilRPAhCIIgCMIrJYIPQRAEQRBeKRF8CIIgCILwSongQxAEQRCEV0oEH4IgCIIgvFIi+BAEQRAE4ZUSwYcgCIIgCK/U/wH9802hO33psQAAAABJRU5ErkJggg==\n", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "plot_atoms(new_structures[8])" - ] - }, - { - "cell_type": "code", - "execution_count": 286, - "id": "c78f3e3c-1c14-46e3-bb8c-574600ca01a6", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 286, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "plot_atoms(new_structures_2[8])" - ] - }, - { - "cell_type": "code", - "execution_count": 70, - "id": "730cb2b3-5d6d-4d93-a257-3ce9c4379242", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "157\n", - "157\n", - "157\n", - "157\n", - "157\n", - "157\n", - "157\n", - "157\n", - "157\n" - ] - } - ], - "source": [ - "new_structures = apply_symmetry_operations_reference(ref_molecule, cell_ase, sym_ops)" - ] - }, - { - "cell_type": "code", - "execution_count": 78, - "id": "c9fc15e7-a87f-45ea-a8ec-0321b84ad14f", - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 78, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "plot_atoms(new_structures[8])\n", - "plot_atoms(new_structures[0])" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "858a5587-d38f-424f-8bbb-68e417721751", - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "45c0e9de-6a65-481f-be70-bba6a4649d08", - "metadata": {}, - "outputs": [], - "source": [ - "combined_mol = new_structures[0] + new_structures[1] + new_structures[2] + new_structures[3] + new_structures[4] + new_structures[5] + new_structures[6] + new_structures[7] + new_structures[8]\n", - "combined_mol.set_cell(atoms.get_cell())\n", - "combined_mol.set_pbc(True)\n", - "plot_atoms(combined_mol)" - ] - }, - { - "cell_type": "code", - "execution_count": 79, - "id": "03f607c1-832b-4a5c-8ab9-1858d54efad1", - "metadata": {}, - "outputs": [], - "source": [ - "from cell2mol.connectivity import split_species\n", - "from cell2mol.other import extract_from_list\n", - "from cell2mol.classes import molecule, cell" - ] - }, - { - "cell_type": "code", - "execution_count": 80, - "id": "e13847aa-a2c0-48ca-b726-15cd48973e72", - "metadata": {}, - "outputs": [], - "source": [ - "def find_row_indices(source, target):\n", - " # List to store the indices of found rows\n", - " found_indices = []\n", - " found_rows = []\n", - " remaining_indices = []\n", - " remaining_rows = []\n", - " # Iterate over each row in the source array with enumeration to track the index\n", - " for index, row in enumerate(source):\n", - " # Check if any row in the target array matches the current row\n", - " if any(np.allclose(row, target_row) for target_row in target):\n", - " found_indices.append(index)\n", - " found_rows.append(row)\n", - " else :\n", - " remaining_indices.append(index)\n", - " remaining_rows.append(row)\n", - " # return remaining_indices, remaining_rows\n", - " return found_indices, found_rows" - ] - }, - { - "cell_type": "code", - "execution_count": 131, - "id": "0adbff62-febc-4af9-9b2f-040ad665e4f7", - "metadata": {}, - "outputs": [], - "source": [ - "all_found = []" - ] - }, - { - "cell_type": "code", - "execution_count": 141, - "id": "9aff040c-51b1-4f86-ad35-05a703fa114a", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "['K',\n", - " 'Fe',\n", - " 'O',\n", - " 'O',\n", - " 'O',\n", - " 'O',\n", - " 'O',\n", - " 'O',\n", - " 'O',\n", - " 'O',\n", - " 'O',\n", - " 'O',\n", - " 'O',\n", - " 'O',\n", - " 'O',\n", - " 'C',\n", - " 'H',\n", - " 'H',\n", - " 'C',\n", - " 'H',\n", - " 'H',\n", - " 'C',\n", - " 'H',\n", - " 'H',\n", - " 'C',\n", - " 'H',\n", - " 'H',\n", - " 'C',\n", - " 'H',\n", - " 'H',\n", - " 'C',\n", - " 'H',\n", - " 'H',\n", - " 'C',\n", - " 'H',\n", - " 'H',\n", - " 'C',\n", - " 'H',\n", - " 'H',\n", - " 'C',\n", - " 'H',\n", - " 'H',\n", - " 'C',\n", - " 'H',\n", - " 'H',\n", - " 'C',\n", - " 'H',\n", - " 'H',\n", - " 'C',\n", - " 'H',\n", - " 'H',\n", - " 'C',\n", - " 'C',\n", - " 'H',\n", - " 'H',\n", - " 'H',\n", - " 'H',\n", - " 'H',\n", - " 'H',\n", - " 'K',\n", - " 'K',\n", - " 'O',\n", - " 'O',\n", - " 'O',\n", - " 'O',\n", - " 'O',\n", - " 'O',\n", - " 'O',\n", - " 'O',\n", - " 'O',\n", - " 'O',\n", - " 'O',\n", - " 'O',\n", - " 'O',\n", - " 'O',\n", - " 'O',\n", - " 'O',\n", - " 'O',\n", - " 'O',\n", - " 'O',\n", - " 'O',\n", - " 'C',\n", - " 'C',\n", - " 'H',\n", - " 'H',\n", - " 'H',\n", - " 'H',\n", - " 'C',\n", - " 'C',\n", - " 'H',\n", - " 'H',\n", - " 'H',\n", - " 'H',\n", - " 'C',\n", - " 'C',\n", - " 'H',\n", - " 'H',\n", - " 'H',\n", - " 'H',\n", - " 'C',\n", - " 'C',\n", - " 'H',\n", - " 'H',\n", - " 'H',\n", - " 'H',\n", - " 'C',\n", - " 'C',\n", - " 'H',\n", - " 'H',\n", - " 'H',\n", - " 'H',\n", - " 'C',\n", - " 'C',\n", - " 'H',\n", - " 'H',\n", - " 'H',\n", - " 'H',\n", - " 'C',\n", - " 'C',\n", - " 'H',\n", - " 'H',\n", - " 'H',\n", - " 'H',\n", - " 'C',\n", - " 'C',\n", - " 'H',\n", - " 'H',\n", - " 'H',\n", - " 'H',\n", - " 'C',\n", - " 'C',\n", - " 'H',\n", - " 'H',\n", - " 'H',\n", - " 'H',\n", - " 'C',\n", - " 'C',\n", - " 'H',\n", - " 'H',\n", - " 'H',\n", - " 'H',\n", - " 'C',\n", - " 'C',\n", - " 'H',\n", - " 'H',\n", - " 'H',\n", - " 'H',\n", - " 'C',\n", - " 'C',\n", - " 'H',\n", - " 'H',\n", - " 'H',\n", - " 'H',\n", - " 'C',\n", - " 'C',\n", - " 'C',\n", - " 'C']" - ] - }, - "execution_count": 141, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "new_structures[0].get_chemical_symbols()" - ] - }, - { - "cell_type": "code", - "execution_count": 146, - "id": "d977a972-96cc-4a48-8972-9ff89bd45898", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "array([[0.84713, 0.49715, 0.70169],\n", - " [0.6667 , 0.3333 , 0.9638 ],\n", - " [0.84564, 0.45731, 0.43407],\n", - " [0.75871, 0.49451, 0.50598],\n", - " [0.76046, 0.53529, 0.77498],\n", - " [0.87556, 0.58795, 0.92401],\n", - " [0.9661 , 0.56061, 0.8361 ],\n", - " [0.96481, 0.51525, 0.5698 ],\n", - " [0.84884, 0.40648, 0.8643 ],\n", - " [0.74737, 0.37844, 0.85468],\n", - " [0.72235, 0.31431, 0.08222],\n", - " [0.82236, 0.33812, 0.1071 ],\n", - " [0.96073, 0.41262, 0.9709 ],\n", - " [0.68302, 0.6317 , 0.4667 ],\n", - " [0.91917, 0.32407, 0.2061 ],\n", - " [0.80239, 0.45809, 0.338 ],\n", - " [0.7927 , 0.4262 , 0.2681 ],\n", - " [0.8212 , 0.4992 , 0.2935 ],\n", - " [0.74359, 0.44512, 0.4096 ],\n", - " [0.7128 , 0.4433 , 0.3439 ],\n", - " [0.7254 , 0.4047 , 0.4566 ],\n", - " [0.70399, 0.48803, 0.5726 ],\n", - " [0.6824 , 0.4478 , 0.6207 ],\n", - " [0.6751 , 0.4888 , 0.5052 ],\n", - " [0.72312, 0.5408 , 0.6713 ],\n", - " [0.7472 , 0.5811 , 0.6245 ],\n", - " [0.6858 , 0.539 , 0.7114 ],\n", - " [0.77726, 0.58121, 0.8796 ],\n", - " [0.7394 , 0.5772 , 0.9221 ],\n", - " [0.8015 , 0.6235 , 0.8412 ],\n", - " [0.81561, 0.57083, 0.9825 ],\n", - " [0.8213 , 0.5964 , 0.0632 ],\n", - " [0.7941 , 0.5267 , 0.0099 ],\n", - " [0.91569, 0.58064, 0.0182 ],\n", - " [0.8964 , 0.5368 , 0.0471 ],\n", - " [0.9224 , 0.6067 , 0.0987 ],\n", - " [0.9772 , 0.60043, 0.9488 ],\n", - " [0.996 , 0.6441 , 0.9184 ],\n", - " [0.0063 , 0.5974 , 0.0121 ],\n", - " [0.02129, 0.56892, 0.7706 ],\n", - " [0.0515 , 0.5714 , 0.8387 ],\n", - " [0.0407 , 0.6081 , 0.7187 ],\n", - " [0.00469, 0.51534, 0.6783 ],\n", - " [0.0429 , 0.5187 , 0.6398 ],\n", - " [0.9827 , 0.4759 , 0.7292 ],\n", - " [0.94276, 0.46181, 0.4835 ],\n", - " [0.9186 , 0.4234 , 0.5368 ],\n", - " [0.9785 , 0.4606 , 0.4428 ],\n", - " [0.90229, 0.46506, 0.3738 ],\n", - " [0.9247 , 0.5057 , 0.3274 ],\n", - " [0.8921 , 0.4319 , 0.3067 ],\n", - " [0.79509, 0.37857, 0.91 ],\n", - " [0.78019, 0.34031, 0.0458 ],\n", - " [0.9259 , 0.411 , 0.945 ],\n", - " [0.7016 , 0.671 , 0.435 ],\n", - " [0.8794 , 0.316 , 0.195 ],\n", - " [0.9563 , 0.3911 , 0.044 ],\n", - " [0.6549 , 0.6439 , 0.48 ],\n", - " [0.917 , 0.322 , 0.297 ],\n", - " [0.50285, 0.34998, 0.70169],\n", - " [0.65002, 0.15287, 0.70169],\n", - " [0.54269, 0.38833, 0.43407],\n", - " [0.61167, 0.15436, 0.43407],\n", - " [0.50549, 0.2642 , 0.50598],\n", - " [0.7358 , 0.24129, 0.50598],\n", - " [0.46471, 0.22517, 0.77498],\n", - " [0.77483, 0.23954, 0.77498],\n", - " [0.41205, 0.28761, 0.92401],\n", - " [0.71239, 0.12444, 0.92401],\n", - " [0.43939, 0.40549, 0.8361 ],\n", - " [0.59451, 0.0339 , 0.8361 ],\n", - " [0.48475, 0.44956, 0.5698 ],\n", - " [0.55044, 0.03519, 0.5698 ],\n", - " [0.59352, 0.44236, 0.8643 ],\n", - " [0.55764, 0.15116, 0.8643 ],\n", - " [0.62156, 0.36893, 0.85468],\n", - " [0.63107, 0.25263, 0.85468],\n", - " [0.68569, 0.40804, 0.08222],\n", - " [0.59196, 0.27765, 0.08222],\n", - " [0.51576, 0.17764, 0.1071 ],\n", - " [0.66188, 0.48424, 0.1071 ],\n", - " [0.54191, 0.3443 , 0.338 ],\n", - " [0.6557 , 0.19761, 0.338 ],\n", - " [0.5738 , 0.3665 , 0.2681 ],\n", - " [0.6335 , 0.2073 , 0.2681 ],\n", - " [0.5008 , 0.322 , 0.2935 ],\n", - " [0.678 , 0.1788 , 0.2935 ],\n", - " [0.55488, 0.29847, 0.4096 ],\n", - " [0.70153, 0.25641, 0.4096 ],\n", - " [0.7305 , 0.2872 , 0.3439 ],\n", - " [0.5567 , 0.2695 , 0.3439 ],\n", - " [0.6793 , 0.2746 , 0.4566 ],\n", - " [0.5953 , 0.3207 , 0.4566 ],\n", - " [0.51197, 0.21596, 0.5726 ],\n", - " [0.78404, 0.29601, 0.5726 ],\n", - " [0.5522 , 0.2346 , 0.6207 ],\n", - " [0.7654 , 0.3176 , 0.6207 ],\n", - " [0.5112 , 0.1863 , 0.5052 ],\n", - " [0.8137 , 0.3249 , 0.5052 ],\n", - " [0.4592 , 0.18232, 0.6713 ],\n", - " [0.81768, 0.27688, 0.6713 ],\n", - " [0.4189 , 0.1661 , 0.6245 ],\n", - " [0.8339 , 0.2528 , 0.6245 ],\n", - " [0.461 , 0.1468 , 0.7114 ],\n", - " [0.8532 , 0.3142 , 0.7114 ],\n", - " [0.41879, 0.19605, 0.8796 ],\n", - " [0.80395, 0.22274, 0.8796 ],\n", - " [0.4228 , 0.1622 , 0.9221 ],\n", - " [0.8378 , 0.2606 , 0.9221 ],\n", - " [0.3765 , 0.178 , 0.8412 ],\n", - " [0.822 , 0.1985 , 0.8412 ],\n", - " [0.42917, 0.24478, 0.9825 ],\n", - " [0.75522, 0.18439, 0.9825 ],\n", - " [0.7751 , 0.1787 , 0.0632 ],\n", - " [0.4036 , 0.2249 , 0.0632 ],\n", - " [0.7326 , 0.2059 , 0.0099 ],\n", - " [0.4733 , 0.2674 , 0.0099 ],\n", - " [0.41936, 0.33505, 0.0182 ],\n", - " [0.66495, 0.08431, 0.0182 ],\n", - " [0.4632 , 0.3596 , 0.0471 ],\n", - " [0.6404 , 0.1036 , 0.0471 ],\n", - " [0.3933 , 0.3157 , 0.0987 ],\n", - " [0.6843 , 0.0776 , 0.0987 ],\n", - " [0.39957, 0.37677, 0.9488 ],\n", - " [0.62323, 0.0228 , 0.9488 ],\n", - " [0.3559 , 0.3519 , 0.9184 ],\n", - " [0.6481 , 0.004 , 0.9184 ],\n", - " [0.4026 , 0.4089 , 0.0121 ],\n", - " [0.5911 , 0.9937 , 0.0121 ],\n", - " [0.43108, 0.45237, 0.7706 ],\n", - " [0.54763, 0.97871, 0.7706 ],\n", - " [0.4286 , 0.4801 , 0.8387 ],\n", - " [0.5199 , 0.9485 , 0.8387 ],\n", - " [0.3919 , 0.4326 , 0.7187 ],\n", - " [0.5674 , 0.9593 , 0.7187 ],\n", - " [0.48466, 0.48935, 0.6783 ],\n", - " [0.51065, 0.99531, 0.6783 ],\n", - " [0.4758 , 0.9571 , 0.6398 ],\n", - " [0.4813 , 0.5242 , 0.6398 ],\n", - " [0.4932 , 0.0173 , 0.7292 ],\n", - " [0.5241 , 0.5068 , 0.7292 ],\n", - " [0.51905, 0.05724, 0.4835 ],\n", - " [0.53819, 0.48095, 0.4835 ],\n", - " [0.5048 , 0.0814 , 0.5368 ],\n", - " [0.5766 , 0.4952 , 0.5368 ],\n", - " [0.4821 , 0.0215 , 0.4428 ],\n", - " [0.5394 , 0.5179 , 0.4428 ],\n", - " [0.56277, 0.09771, 0.3738 ],\n", - " [0.53494, 0.43723, 0.3738 ],\n", - " [0.581 , 0.0753 , 0.3274 ],\n", - " [0.4943 , 0.419 , 0.3274 ],\n", - " [0.5398 , 0.1079 , 0.3067 ],\n", - " [0.5681 , 0.4602 , 0.3067 ],\n", - " [0.62143, 0.41652, 0.91 ],\n", - " [0.58348, 0.20491, 0.91 ],\n", - " [0.65969, 0.43988, 0.0458 ],\n", - " [0.56012, 0.21981, 0.0458 ]])" - ] - }, - "execution_count": 146, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "array_2d" - ] - }, - { - "cell_type": "code", - "execution_count": 151, - "id": "52c4eb59-92dd-4902-951d-24f0839f4d5f", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "All rows in the 2D array are unique.\n" - ] - } - ], - "source": [ - "# Convert each row into a tuple and check for uniqueness\n", - "array_2d = new_structures[2].get_scaled_positions()\n", - "unique_rows, indices = np.unique(array_2d, axis=0, return_index=True)\n", - "\n", - "# print(unique_rows)\n", - "# Check if the number of unique rows is equal to the number of rows in the original array\n", - "if len(unique_rows) == len(array_2d):\n", - " print(\"All rows in the 2D array are unique.\")\n", - "else:\n", - " print(\"There are duplicate rows in the 2D array.\")" - ] - }, - { - "cell_type": "code", - "execution_count": 143, - "id": "298a59b0-be59-4520-bbd9-526533b100e1", - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "K [0.84713 0.49715 0.70169]\n", - "K [0.50285 0.34998 0.70169]\n", - "K [0.65002 0.15287 0.70169]\n" - ] - } - ], - "source": [ - "for i, j in zip(new_structures[0].get_chemical_symbols(), new_structures[0].get_scaled_positions()):\n", - " if i == \"K\":\n", - " print(i, j)" - ] - }, - { - "cell_type": "code", - "execution_count": 156, - "id": "029ada3b-87a9-4f53-84f3-1dece572d09f", - "metadata": {}, - "outputs": [], - "source": [ - "def find_row_index(matrix, query_row):\n", - " # Convert the inputs to NumPy arrays if they aren't already\n", - " matrix = np.array(matrix)\n", - " query_row = np.array(query_row)\n", - " \n", - " # Check each row for equality with the query_row\n", - " for index, row in enumerate(matrix):\n", - " if np.allclose(row, query_row):\n", - " return index\n", - " return -1" - ] - }, - { - "cell_type": "code", - "execution_count": 161, - "id": "4d96cf1f-43d4-4d36-aaa1-0fe0c80e298b", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "['K',\n", - " 'Fe',\n", - " 'O',\n", - " 'O',\n", - " 'O',\n", - " 'O',\n", - " 'O',\n", - " 'O',\n", - " 'O',\n", - " 'O',\n", - " 'O',\n", - " 'O',\n", - " 'O',\n", - " 'O',\n", - " 'O',\n", - " 'C',\n", - " 'H',\n", - " 'H',\n", - " 'C',\n", - " 'H',\n", - " 'H',\n", - " 'C',\n", - " 'H',\n", - " 'H',\n", - " 'C',\n", - " 'H',\n", - " 'H',\n", - " 'C',\n", - " 'H',\n", - " 'H',\n", - " 'C',\n", - " 'H',\n", - " 'H',\n", - " 'C',\n", - " 'H',\n", - " 'H',\n", - " 'C',\n", - " 'H',\n", - " 'H',\n", - " 'C',\n", - " 'H',\n", - " 'H',\n", - " 'C',\n", - " 'H',\n", - " 'H',\n", - " 'C',\n", - " 'H',\n", - " 'H',\n", - " 'C',\n", - " 'H',\n", - " 'H',\n", - " 'C',\n", - " 'C',\n", - " 'H',\n", - " 'H',\n", - " 'H',\n", - " 'H',\n", - " 'H',\n", - " 'H',\n", - " 'K',\n", - " 'K',\n", - " 'O',\n", - " 'O',\n", - " 'O',\n", - " 'O',\n", - " 'O',\n", - " 'O',\n", - " 'O',\n", - " 'O',\n", - " 'O',\n", - " 'O',\n", - " 'O',\n", - " 'O',\n", - " 'O',\n", - " 'O',\n", - " 'O',\n", - " 'O',\n", - " 'O',\n", - " 'O',\n", - " 'O',\n", - " 'O',\n", - " 'C',\n", - " 'C',\n", - " 'H',\n", - " 'H',\n", - " 'H',\n", - " 'H',\n", - " 'C',\n", - " 'C',\n", - " 'H',\n", - " 'H',\n", - " 'H',\n", - " 'H',\n", - " 'C',\n", - " 'C',\n", - " 'H',\n", - " 'H',\n", - " 'H',\n", - " 'H',\n", - " 'C',\n", - " 'C',\n", - " 'H',\n", - " 'H',\n", - " 'H',\n", - " 'H',\n", - " 'C',\n", - " 'C',\n", - " 'H',\n", - " 'H',\n", - " 'H',\n", - " 'H',\n", - " 'C',\n", - " 'C',\n", - " 'H',\n", - " 'H',\n", - " 'H',\n", - " 'H',\n", - " 'C',\n", - " 'C',\n", - " 'H',\n", - " 'H',\n", - " 'H',\n", - " 'H',\n", - " 'C',\n", - " 'C',\n", - " 'H',\n", - " 'H',\n", - " 'H',\n", - " 'H',\n", - " 'C',\n", - " 'C',\n", - " 'H',\n", - " 'H',\n", - " 'H',\n", - " 'H',\n", - " 'C',\n", - " 'C',\n", - " 'H',\n", - " 'H',\n", - " 'H',\n", - " 'H',\n", - " 'C',\n", - " 'C',\n", - " 'H',\n", - " 'H',\n", - " 'H',\n", - " 'H',\n", - " 'C',\n", - " 'C',\n", - " 'H',\n", - " 'H',\n", - " 'H',\n", - " 'H',\n", - " 'C',\n", - " 'C',\n", - " 'C',\n", - " 'C']" - ] - }, - "execution_count": 161, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "ref_labels" - ] - }, - { - "cell_type": "code", - "execution_count": 170, - "id": "a375a254-77fd-4df2-b281-46923a8ecfc1", - "metadata": {}, - "outputs": [], - "source": [ - "debug = 2" - ] - }, - { - "cell_type": "code", - "execution_count": 180, - "id": "6d92311f-42a1-4e72-9b76-20c35eee01a7", - "metadata": {}, - "outputs": [], - "source": [ - "name = \"BOFFOS\"\n", - "# refcell = cell(name, ref_labels, ref_pos, cellvec, cellparam)" - ] - }, - { - "cell_type": "code", - "execution_count": 181, - "id": "280547a2-6f9f-4b13-b25a-c0f6d5e81164", - "metadata": {}, - "outputs": [], - "source": [ - "newcell = cell(name, cell_labels, cell_pos, cellvec, cellparam)" - ] - }, - { - "cell_type": "code", - "execution_count": 184, - "id": "008d3248-a634-40e0-8d84-e3f96fe074dd", - "metadata": {}, - "outputs": [], - "source": [ - "newcell.frac_coord = cell_fracs" - ] - }, - { - "cell_type": "code", - "execution_count": 186, - "id": "9cf41555-5f2c-421a-a4f5-01dc637fb130", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "525" - ] - }, - "execution_count": 186, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "len(newcell.frac_coord)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "bab56d02-c63b-4116-9924-19019ad0fa2d", - "metadata": {}, - "outputs": [], - "source": [ - "refcell = cell(name, ref_labels, ref_pos, cellvec, cellparam)" - ] - }, - { - "cell_type": "code", - "execution_count": 225, - "id": "97f8fc30-f3dd-4321-8e4f-06c4c1eca0dd", - "metadata": {}, - "outputs": [], - "source": [ - "def get_fragments (newcell, updated, indices_in_ref, cov_factor: float=1.3, metal_factor: float=1.0, debug=debug):\n", - " \n", - " updated_labels = extract_from_list(updated, newcell.labels, dimension=1)\n", - " updated_coord = extract_from_list(updated, newcell.coord, dimension=1)\n", - " updated_fracs = extract_from_list(updated, newcell.frac_coord, dimension=1)\n", - " \n", - " blocklist = split_species(updated_labels, updated_coord, debug=debug)\n", - " \n", - " fragments = []\n", - " list_ref_indices = []\n", - " for b in blocklist:\n", - " if debug > 0: print(f\"CELL.MOLECLIST: doing block={b}\")\n", - " mol_labels = extract_from_list(b, updated_labels, dimension=1)\n", - " mol_coord = extract_from_list(b, updated_coord, dimension=1)\n", - " mol_frac_coord = extract_from_list(b, updated_fracs, dimension=1)\n", - "\n", - " cell_indices = extract_from_list(b, updated, dimension=1)\n", - " ref_indices = extract_from_list(b, indices_in_ref, dimension=1)\n", - " \n", - " # Creates Molecule Object\n", - " newmolec = molecule(mol_labels, mol_coord)\n", - " # For debugging\n", - " newmolec.origin = \"cell.get_fragments\"\n", - " \n", - " # Adds cell as parent of the molecule, with indices\n", - " newmolec.add_parent(newcell, indices=cell_indices) \n", - " newmolec.set_fractional_coord(mol_frac_coord)\n", - " newmolec.set_adjacency_parameters(cov_factor=cov_factor, metal_factor=metal_factor)\n", - " newmolec.set_atoms(create_adjacencies=True, debug=debug)\n", - " newmolec.ref_indices = ref_indices\n", - " fragments.append(newmolec)\n", - " return fragments\n", - " # list_ref_indices.append(ref_indices)\n", - " # return fragments, list_ref_indices" - ] - }, - { - "cell_type": "code", - "execution_count": 433, - "id": "d5a44f44-3107-411c-9665-1746f2d7cf01", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[1, 8, 73, 74, 9, 75, 76, 51, 153, 154]\n", - "[10, 11, 52]\n", - "[77, 80, 155]\n", - "[78, 79, 156]\n", - "[130, 132, 134, 136, 137]\n", - "[70, 124, 126]\n", - "[12, 53]\n", - "H2-O [14, 55, 58] [array([0.91917, 0.32407, 0.2061 ]), array([0.8794, 0.316 , 0.195 ]), array([0.917, 0.322, 0.297])] equivalent to Ref 4 H2-O\n", - "[39, 40, 41, 42, 43]\n", - "H2-O [13, 54, 57] [array([0.68302, 0.6317 , 0.4667 ]), array([0.7016, 0.671 , 0.435 ]), array([0.6549, 0.6439, 0.48 ])] equivalent to Ref 3 H2-O\n", - "[62, 64, 66, 68, 72, 82, 84, 86, 88, 89, 91, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 141, 143, 145, 147, 149, 151]\n", - "[33, 34, 35]\n", - "[117, 119, 121]\n", - "[118, 120, 122]\n", - "[6, 36, 37]\n", - "[61, 63, 65, 67, 69, 71, 81, 83, 85, 87, 90, 92, 93, 95, 97, 99, 101, 103, 105, 107, 109, 111, 123, 125, 129, 131, 133, 135, 138, 140, 142, 144, 146, 148, 150, 152]\n", - "[2, 3, 4, 5, 7, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 45, 46, 47, 48, 49, 50]\n", - "[38]\n", - "[56]\n", - "K [59] [array([0.50285, 0.34998, 0.70169])] equivalent to Ref 7 K\n", - "K [60] [array([0.65002, 0.15287, 0.70169])] equivalent to Ref 8 K\n", - "[114]\n", - "[31]\n", - "[127]\n", - "[113]\n", - "[32]\n", - "[139]\n", - "[116]\n", - "[44]\n", - "[115]\n", - "[128]\n", - "K [0] [array([0.84713, 0.49715, 0.70169])] equivalent to Ref 9 K\n" - ] - } - ], - "source": [ - "molecules = []\n", - "filtered_fragments = []\n", - "hydrogens = []\n", - "found_list = []\n", - "remaining_fragments = []\n", - "for frag in fragments:\n", - " found = False\n", - " for idx, ref in enumerate(newcell.refmoleclist):\n", - " if (ref.natoms == frag.natoms) & (ref.formula == frag.formula) & (sorted(ref.get_parent_indices(\"cell\")) == sorted(frag.ref_indices)):\n", - " print(frag.formula, frag.ref_indices, frag.frac_coord, f\"equivalent to Ref {idx} {ref.formula}\")\n", - " molecules.append(frag)\n", - " found = True\n", - " found_list.append(idx)\n", - " if found == False:\n", - " remaining_fragments.append(frag)\n", - " print(frag.ref_indices)\n", - " if frag.natoms == 1 and frag.labels == [\"H\"] :\n", - " hydrogens.append(frag)\n", - " else :\n", - " filtered_fragments.append(frag)" - ] - }, - { - "cell_type": "code", - "execution_count": 432, - "id": "7f9a48ce-dd0f-4166-8bef-4489c7080a3d", - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[1, 8, 9, 10, 11, 51, 52, 73, 74, 75, 76, 77, 78, 79, 80, 153, 154, 155, 156]\n", - "[2, 3, 4, 5, 6, 7, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50]\n", - "[12, 53, 56]\n", - "[61, 63, 65, 67, 69, 71, 81, 83, 85, 87, 90, 92, 93, 95, 97, 99, 101, 103, 105, 107, 109, 111, 114, 116, 117, 119, 121, 123, 125, 127, 129, 131, 133, 135, 138, 140, 142, 144, 146, 148, 150, 152]\n", - "[62, 64, 66, 68, 70, 72, 82, 84, 86, 88, 89, 91, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 113, 115, 118, 120, 122, 124, 126, 128, 130, 132, 134, 136, 137, 139, 141, 143, 145, 147, 149, 151]\n" - ] - } - ], - "source": [ - "for j in [i for i in range(len(newcell.refmoleclist)) if i not in found_list]:\n", - " print(newcell.refmoleclist[j].get_parent_indices(\"cell\"))" - ] - }, - { - "cell_type": "code", - "execution_count": 441, - "id": "8831731d-db80-4f1a-85c2-121bf1f00666", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "grouped_lists 0 add {1, 8, 73, 74, 9, 75, 76, 51, 153, 154}\n", - "continue for 0 [0]\n", - "grouped_lists 0 add {10, 11, 52}\n", - "continue for 0 [0, 1]\n", - "grouped_lists 0 add {80, 155, 77}\n", - "continue for 0 [0, 1, 2]\n", - "grouped_lists 0 add {156, 78, 79}\n", - "grouped_lists 0 is same with {1, 8, 9, 10, 11, 153, 154, 155, 156, 51, 52, 73, 74, 75, 76, 77, 78, 79, 80} [0, 1, 2, 3]\n", - "grouped_lists 4 add {130, 132, 134, 136, 137}\n", - "continue for 4 [4]\n", - "grouped_lists 4 add {126, 124, 70}\n", - "continue for 4 [4, 5]\n", - "grouped_lists 2 add {12, 53}\n", - "continue for 2 [6]\n", - "grouped_lists 1 add {39, 40, 41, 42, 43}\n", - "continue for 1 [7]\n", - "grouped_lists 4 add {141, 143, 145, 147, 149, 151, 62, 64, 66, 68, 72, 82, 84, 86, 88, 89, 91, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112}\n", - "continue for 4 [4, 5, 8]\n", - "grouped_lists 1 add {33, 34, 35}\n", - "continue for 1 [7, 9]\n", - "grouped_lists 3 add {121, 117, 119}\n", - "continue for 3 [10]\n", - "grouped_lists 4 add {120, 122, 118}\n", - "continue for 4 [4, 5, 8, 11]\n", - "grouped_lists 1 add {36, 37, 6}\n", - "continue for 1 [7, 9, 12]\n", - "grouped_lists 3 add {129, 131, 133, 135, 138, 140, 142, 144, 146, 148, 150, 152, 61, 63, 65, 67, 69, 71, 81, 83, 85, 87, 90, 92, 93, 95, 97, 99, 101, 103, 105, 107, 109, 111, 123, 125}\n", - "continue for 3 [10, 13]\n", - "grouped_lists 1 add {2, 3, 4, 5, 7, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 45, 46, 47, 48, 49, 50}\n", - "continue for 1 [7, 9, 12, 14]\n", - "grouped_lists 1 add {38}\n", - "continue for 1 [7, 9, 12, 14, 15]\n", - "grouped_lists 2 add {56}\n", - "grouped_lists 2 is same with {56, 12, 53} [6, 16]\n", - "grouped_lists 3 add {114}\n", - "continue for 3 [10, 13, 17]\n", - "grouped_lists 1 add {31}\n", - "continue for 1 [7, 9, 12, 14, 15, 18]\n", - "grouped_lists 3 add {127}\n", - "continue for 3 [10, 13, 17, 19]\n", - "grouped_lists 4 add {113}\n", - "continue for 4 [4, 5, 8, 11, 20]\n", - "grouped_lists 1 add {32}\n", - "continue for 1 [7, 9, 12, 14, 15, 18, 21]\n", - "grouped_lists 4 add {139}\n", - "continue for 4 [4, 5, 8, 11, 20, 22]\n", - "grouped_lists 3 add {116}\n", - "grouped_lists 3 is same with {129, 131, 133, 135, 138, 140, 142, 144, 146, 148, 150, 152, 61, 63, 65, 67, 69, 71, 81, 83, 85, 87, 90, 92, 93, 95, 97, 99, 101, 103, 105, 107, 109, 111, 114, 116, 117, 119, 121, 123, 125, 127} [10, 13, 17, 19, 23]\n", - "grouped_lists 1 add {44}\n", - "grouped_lists 1 is same with {2, 3, 4, 5, 6, 7, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50} [7, 9, 12, 14, 15, 18, 21, 24]\n", - "grouped_lists 4 add {115}\n", - "continue for 4 [4, 5, 8, 11, 20, 22, 25]\n", - "grouped_lists 4 add {128}\n", - "grouped_lists 4 is same with {128, 130, 132, 134, 136, 137, 139, 141, 143, 145, 147, 149, 151, 62, 64, 66, 68, 70, 72, 82, 84, 86, 88, 89, 91, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 113, 115, 118, 120, 122, 124, 126} [4, 5, 8, 11, 20, 22, 25, 26]\n", - "Group 1: [1, 8, 73, 74, 9, 75, 76, 51, 153, 154, 10, 11, 52, 77, 80, 155, 78, 79, 156]\n", - "Group 2: [39, 40, 41, 42, 43, 33, 34, 35, 6, 36, 37, 2, 3, 4, 5, 7, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 45, 46, 47, 48, 49, 50, 38, 31, 32, 44]\n", - "Group 3: [12, 53, 56]\n", - "Group 4: [117, 119, 121, 61, 63, 65, 67, 69, 71, 81, 83, 85, 87, 90, 92, 93, 95, 97, 99, 101, 103, 105, 107, 109, 111, 123, 125, 129, 131, 133, 135, 138, 140, 142, 144, 146, 148, 150, 152, 114, 127, 116]\n", - "Group 5: [130, 132, 134, 136, 137, 70, 124, 126, 62, 64, 66, 68, 72, 82, 84, 86, 88, 89, 91, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 141, 143, 145, 147, 149, 151, 118, 120, 122, 113, 139, 115, 128]\n" - ] - } - ], - "source": [ - "# Define the larger target lists as sets for fast lookup\n", - "target_sets = [\n", - " set([1, 8, 9, 10, 11, 51, 52, 73, 74, 75, 76, 77, 78, 79, 80, 153, 154, 155, 156]),\n", - " set([2, 3, 4, 5, 6, 7, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50]),\n", - " set([12, 53, 56]),\n", - " set([61, 63, 65, 67, 69, 71, 81, 83, 85, 87, 90, 92, 93, 95, 97, 99, 101, 103, 105, 107, 109, 111, 114, 116, 117, 119, 121, 123, 125, 127, 129, 131, 133, 135, 138, 140, 142, 144, 146, 148, 150, 152]),\n", - " set([62, 64, 66, 68, 70, 72, 82, 84, 86, 88, 89, 91, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 113, 115, 118, 120, 122, 124, 126, 128, 130, 132, 134, 136, 137, 139, 141, 143, 145, 147, 149, 151])\n", - "]\n", - "\n", - "# List of smaller lists to be grouped\n", - "smaller_lists = [\n", - " [1, 8, 73, 74, 9, 75, 76, 51, 153, 154], [10, 11, 52], [77, 80, 155], [78, 79, 156], \n", - " [130, 132, 134, 136, 137], [70, 124, 126], [12, 53], [39, 40, 41, 42, 43], \n", - " [62, 64, 66, 68, 72, 82, 84, 86, 88, 89, 91, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 141, 143, 145, 147, 149, 151], \n", - " [33, 34, 35], [117, 119, 121], [118, 120, 122], [6, 36, 37], \n", - " [61, 63, 65, 67, 69, 71, 81, 83, 85, 87, 90, 92, 93, 95, 97, 99, 101, 103, 105, 107, 109, 111, 123, 125, 129, 131, 133, 135, 138, 140, 142, 144, 146, 148, 150, 152],\n", - " [2, 3, 4, 5, 7, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 45, 46, 47, 48, 49, 50],\n", - " [38], [56], [114], [31], [127], [113], [32], [139], [116], [44], [115], [128]\n", - "]\n", - "\n", - "# Group smaller lists into their respective larger list\n", - "grouped_lists = [[] for _ in range(len(target_sets))]\n", - "grouped_lists_idx = [[] for _ in range(len(target_sets))]\n", - "for j, small_list in enumerate(smaller_lists):\n", - " small_set = set(small_list)\n", - " for i, target_set in enumerate(target_sets):\n", - " if small_set.issubset(target_set):\n", - " print(f\"grouped_lists {i} add {small_set}\")\n", - " grouped_lists[i].extend(small_list)\n", - " grouped_lists_idx[i].append(j)\n", - " if set(grouped_lists[i]) == target_set:\n", - " print(f\"grouped_lists {i} is same with {target_set} {grouped_lists_idx[i]}\")\n", - " else :\n", - " print(f\"continue for {i} {grouped_lists_idx[i]}\")\n", - " break\n", - "\n", - "# Print the grouped lists\n", - "for i, group in enumerate(grouped_lists):\n", - " print(f\"Group {i+1}: {group}\")\n" - ] - }, - { - "cell_type": "code", - "execution_count": 423, - "id": "232afc1a-cfe1-452a-8df1-b3c9d215695c", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_fragments\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_fragments\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = K\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_fragments\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = K\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_fragments\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = K\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_fragments\n", - " ---------------------------------------------------]" - ] - }, - "execution_count": 423, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "molecules" - ] - }, - { - "cell_type": "code", - "execution_count": 420, - "id": "76aaefdb-fa15-497e-aa01-dfd9f84d90ce", - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "data": { - "text/plain": [ - "[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 10\n", - " Formula = C3-O6-Fe\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_fragments\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = C-O2\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_fragments\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = C-O2\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_fragments\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = C-O2\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_fragments\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 5\n", - " Formula = H3-C2\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_fragments\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H-C-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_fragments\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 2\n", - " Formula = H-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_fragments\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 5\n", - " Formula = H3-C2\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_fragments\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 27\n", - " Formula = H14-C8-O5\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_fragments\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-C\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_fragments\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-C\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_fragments\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-C\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_fragments\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H-C-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_fragments\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 36\n", - " Formula = H19-C11-O6\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_fragments\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 27\n", - " Formula = H14-C8-O5\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_fragments\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = H\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_fragments\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = H\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_fragments\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = H\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_fragments\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = H\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_fragments\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = H\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_fragments\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = H\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_fragments\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = H\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_fragments\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = H\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_fragments\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = H\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_fragments\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = H\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_fragments\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = H\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_fragments\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = H\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_fragments\n", - " ---------------------------------------------------]" - ] - }, - "execution_count": 420, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "for rem in remaining_fragments" - ] - }, - { - "cell_type": "code", - "execution_count": 292, - "id": "542e82b7-6c8e-4952-a15a-a5a513bf89bd", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "H-O [13, 54] True\n", - "H [57] True\n" - ] - } - ], - "source": [ - "def is_within_unit_cell(point, cell):\n", - " fractional = np.linalg.solve(cell.T, point) # Convert to fractional coordinates\n", - " return np.all(fractional >= 0) and np.all(fractional <= 1)\n", - "for frag in remaining_fragments:\n", - " print(frag.formula, frag.ref_indices, is_within_unit_cell(np.mean(frag.frac_coord, axis=0), cell_ase))" - ] - }, - { - "cell_type": "code", - "execution_count": 314, - "id": "58b57df4-acdd-4547-9d0c-f0e18d221839", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[13, 54]\n", - "H-O [13, 54] True\n", - "[0.2923733 0.9743567 0.1175167] [0.29237333 0.97435667 0.11751667] [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (0, -1, -1), (0, -1, 1), (-1, 1, 0), (0, 1, -1), (0, 1, 1), (-1, 0, -1), (-1, 0, 1), (1, 1, 0), (1, -1, 0), (1, 0, 1), (1, 0, -1), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, 1, 1), (1, 1, -1), (1, -1, -1), (1, -1, 1)]\n", - "[57]\n", - "H [57] True\n", - "[0.3223333 0.0117667 0.1466667] [0.32233333 0.01176667 0.14666667] [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (0, -1, -1), (0, -1, 1), (-1, 1, 0), (0, 1, -1), (0, 1, 1), (-1, 0, -1), (-1, 0, 1), (1, 1, 0), (1, -1, 0), (1, 0, 1), (1, 0, -1), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, 1, 1), (1, 1, -1), (1, -1, -1), (1, -1, 1)]\n", - "MERGE_FRAGMENTS: keep_idx 1\n", - "MERGE_FRAGMENTS: move_idx 0\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (0, -1, -1), (0, -1, 1), (-1, 1, 0), (0, 1, -1), (0, 1, 1), (-1, 0, -1), (-1, 0, 1), (1, 1, 0), (1, -1, 0), (1, 0, 1), (1, 0, -1), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, 1, 1), (1, 1, -1), (1, -1, -1), (1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "None\n" - ] - } - ], - "source": [ - "from cell2mol.cell_reconstruction import tmatgenerator\n", - "from cell2mol.other import additem, absolute_value\n", - "from cell2mol.connectivity import count_species\n", - "from cell2mol.cell_operations import translate\n", - "import itertools\n", - "threshold_tmat = 1.0\n", - "for frag in remaining_fragments:\n", - " print(frag.ref_indices)\n", - " if not hasattr(frag,\"frac_centroid\"): frag.get_centroid()\n", - " frag.tmatrix = tmatgenerator(frag.frac_centroid, threshold_tmat)\n", - " print(frag.formula, frag.ref_indices, is_within_unit_cell(frag.frac_centroid, cell_ase))\n", - " print(frag.frac_centroid, np.mean(frag.frac_coord, axis=0), frag.tmatrix)\n", - "merge = merge_fragments(remaining_fragments, cellvec, debug =2)\n", - "print(merge)" - ] - }, - { - "cell_type": "code", - "execution_count": 346, - "id": "dfbbb175-3616-4d10-8c2d-6f328403dc87", - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "data": { - "text/plain": [ - "[[14.0694487, 0.0, 3.2493333],\n", - " [-7.0347244, 12.1845, 3.2493333],\n", - " [-7.0347244, -12.1845, 3.2493333]]" - ] - }, - "execution_count": 346, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "cellvec" - ] - }, - { - "cell_type": "code", - "execution_count": 397, - "id": "8727861f-6420-487f-9c7b-4469f883cc89", - "metadata": {}, - "outputs": [], - "source": [ - "import matplotlib.pyplot as plt\n" - ] - }, - { - "cell_type": "code", - "execution_count": 464, - "id": "b8c0a4db-a6c1-409e-8698-872b6edf4d39", - "metadata": {}, - "outputs": [], - "source": [ - "def merge_fragments(frags: list, cellvec: list, cov_factor: float=1.3, metal_factor: float=1.0, debug: int=0):\n", - " from cell2mol.classes import molecule\n", - "\n", - " #finds biggest fragment and keeps it in the original cell\n", - " sizes = []\n", - " for f in frags:\n", - " size = f.natoms\n", - " sizes.append(size)\n", - " keep_idx = np.argmax(sizes)\n", - " if keep_idx == 0: move_idx = 1\n", - " elif keep_idx == 1: move_idx = 0\n", - " keep_frag = frags[keep_idx]\n", - " move_frag = frags[move_idx]\n", - " if debug > 0: print(\"MERGE_FRAGMENTS: keep_idx\", keep_idx)\n", - " if debug > 0: print(\"MERGE_FRAGMENTS: move_idx\", move_idx)\n", - " # if debug > 0: print(\"MERGE_FRAGMENTS: move_frag.tmatrix\", move_frag.tmatrix)\n", - "\n", - " # move_frac = cart2frac(move_frag.coord, cellvec)\n", - " # print(f\"{move_frac=} {move_frag.frac_coord=}\")\n", - " # move_frag.frac_centroid = np.mean(move_frac, axis=0)\n", - " move_frag.get_centroid()\n", - " move_frag.tmatrix = tmatgenerator(move_frag.frac_centroid)\n", - " \n", - " #applytranspose = list(itertools.product(*move_frag.tmatrix))\n", - " #print(\"applytranspose\", applytranspose)\n", - " if len(move_frag.tmatrix) == 0: return None\n", - "\n", - " fig, axes = plt.subplots(nrows=len(move_frag.tmatrix), ncols=1, figsize=(10, 40))\n", - " for t, ax in zip(move_frag.tmatrix, axes):\n", - " if debug > 0: print(\"MERGE_FRAGMENTS: translation\", t)\n", - " ## Applies Translations and each time, it checks if a bigger molecule is formed\n", - " ## meaning that the translation was successful\n", - " reclabels = []\n", - " reclabels.extend(keep_frag.labels)\n", - " reclabels.extend(move_frag.labels)\n", - " reccoord = []\n", - " reccoord.extend(keep_frag.coord)\n", - " if t == (0, 0, 0): reccoord.extend(move_frag.coord)\n", - " else: reccoord.extend(translate(t, move_frag.coord, cellvec))\n", - " rec_ref_indices = []\n", - " rec_ref_indices.extend(keep_frag.ref_indices)\n", - " rec_ref_indices.extend(move_frag.ref_indices)\n", - " \n", - " \n", - " numspecs = count_species(reclabels, reccoord, cov_factor=cov_factor, debug=debug)\n", - " if debug > 0: print(\"MERGE_FRAGMENTS: count_species found\", numspecs)\n", - " if numspecs != 1: continue\n", - " blocklist = split_species(reclabels, reccoord, cov_factor=cov_factor, debug=debug)\n", - " if blocklist is None: continue\n", - " else:\n", - " if len(blocklist) != 1: continue\n", - " if len(blocklist) == 1: \n", - " plot_atoms(Atoms(reclabels, reccoord, cell=cell_ase),ax=ax)\n", - " newmolec = molecule(reclabels, reccoord)\n", - " newmolec.ref_indices = rec_ref_indices\n", - " newmolec.set_adjacency_parameters(cov_factor, metal_factor)\n", - " newmolec.set_adj_types()\n", - " newmolec.set_element_count()\n", - " newmolec.get_adjmatrix()\n", - " newmolec.get_centroid()\n", - " newmolec.get_metal_adjmatrix()\n", - " return newmolec\n", - " return None\n" - ] - }, - { - "cell_type": "code", - "execution_count": 376, - "id": "20cd5c2e-0574-454f-a4b1-7f1137cb6884", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "Cell([[24.369, 0.0, 0.0], [-12.184499999999995, 21.10417306482299, 0.0], [0.0, 0.0, 9.748]])" - ] - }, - "execution_count": 376, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "cell_ase" - ] - }, - { - "cell_type": "code", - "execution_count": 375, - "id": "a1d10240-dc10-4a46-8289-7d0a4253e847", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[[14.0694487, 0.0, 3.2493333],\n", - " [-7.0347244, 12.1845, 3.2493333],\n", - " [-7.0347244, -12.1845, 3.2493333]]" - ] - }, - "execution_count": 375, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "cellvec" - ] - }, - { - "cell_type": "code", - "execution_count": 406, - "id": "6b739987-2410-4786-be23-f3606c470748", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "Cell([[24.369, 0.0, 0.0], [-12.184499999999995, 21.10417306482299, 0.0], [0.0, 0.0, 9.748]])" - ] - }, - "execution_count": 406, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "atoms.cell" - ] - }, - { - "cell_type": "code", - "execution_count": 404, - "id": "a6b7751d-fe21-466b-9e90-d7c0a55d24cf", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[[14.0694487, 0.0, 3.2493333],\n", - " [-7.0347244, 12.1845, 3.2493333],\n", - " [-7.0347244, -12.1845, 3.2493333]]" - ] - }, - "execution_count": 404, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "cellvec" - ] - }, - { - "cell_type": "code", - "execution_count": 412, - "id": "1b41493a-3ecd-4a2e-a6f6-e422ada0cada", - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 1\n", - "SPILT_SPECIES: Laplacian lap=array([[-2, 1, 1],\n", - " [ 1, -1, 0],\n", - " [ 1, 0, -1]])\n", - "SPILT_SPECIES: graph=<3x3 sparse matrix of type ''\n", - "\twith 7 stored elements in Compressed Sparse Row format>\n" - ] - }, - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAA0UAAAwzCAYAAACftMmAAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8g+/7EAAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOzde1xUdeL/8TcTAqkwrBdAEtTMks0UL4ikQSVqWua1zCwvWVaiqZglXTTNorISS82szNzyrl00a9fUcDW8YWRaWpkb+CVQchm8BKgzvz92l5+MN1TgM8O8no/HPB7NZz7nnPcc57E7b86Zc7wcDodDAAAAAOChLKYDAAAAAIBJlCIAAAAAHo1SBAAAAMCjUYoAAAAAeDRKEQAAAACPRikCAAAA4NEoRQAAAAA8mrfpAADgCex2u7Kzs+Xv7y8vLy/TceDBHA6Hjhw5otDQUFks/G0UACRKEQBUiuzsbIWFhZmOAZTIyspS/fr1TccAAJdAKQKASuDv7y/pP19EAwICjGQ4efKk/u///k+BgYGyWq1GMsC8goIChYWFlXwmAQCUIgCoFP87ZS4gIMBIKVq0aJGeSExU1u+/q5q3t+677z69OWOGatSoUelZ4Bo4jRMA/j9KEQAYsG/fPmVkZKhx48bas2ePmjZtqsjISElSRkZGqTHn5xc759ixY3rooYd0m8WiJ3x9letwaNrf/qYTxcUaO27cJW9L0jmXc8c5/3uvP/zwg3bu3KmXXnqpIj8CAABX4gAAVDibzeaQ5LDZbA6Hw+Ho1KmTY8qUKY4OHTo4rFarIy4urmRuXFxcqTHn5xc7p06dOo5m1ao5JlSr5oizWBwTfXwcb/j6Oq6wWBwxMTGXvK3zLeeOc/435uvr6wgKCnJs3rz5PP+i7sv5swgAcDi8HA6Hw3QxA4CqrqCgQFarVTabTQEBAdq3b59uu+02PfHEE/L396/QI0XJzz+vFj/9pJd9fZVrtyvYYtGvdrs6/PmnQkJCNGbMGHXu3JkjRae91xdffFH33HOPnnjiCXl7V62TKpw/iwAAiVIEAJXgbF9EExMTtWPHDq1evVrVq1evsG2PGjVKC2bN0o++vqrz30swDy8s1PuSwho2VHh4uL766qsK27472rt3r2699VZ9/vnnJYWpqqAUAcCZuEEBAI+XnJysqKgo+fv7KygoSD179tTevXtLzSksLFRCQoJq166tmjVrqk+fPsrNzb2s7b766qs6fPiwXn311ctaz4UkJibKKyBAzYuLlVBYqFsKC/XWiRNq2aaNqlWrplOnTlXo9t3Rddddp3vuuUcPP/yw7Ha76TgAgApGKQLg8VJTU5WQkKDNmzdrzZo1OnHihDp37qxjx46VzBkzZoxWrlyppUuXKjU1VdnZ2erdu/dlbddisWjWrFmaPXu2srOzL/dtnFODBg20eds23TF4sFIbNZLlxht19913a9u2bSooKKjwUuaunn/+eTkcDj3//POmowAAKhinzwGAk0OHDikoKEipqamKjY2VzWZT3bp1tWDBAvXt21eStGfPHkVERCgtLU3t2rW74DrPdcrS8ePHlZycrE2bNmndunUV9p7Oxm63y8vLi0szn8fq1as1atQobdq0SUFBQabjlAtOnwOAM3GkCACc2Gw2SVKtWrUkSenp6Tpx4oTi4+NL5jRt2lTh4eFKS0s76zqKiopUUFBQ6nE21atXV6dOnVS3bl29+eab5fxOzs9isVCILqBNmza6//779dBDD5mOAgCoQJQiADiN3W7X6NGj1b59ezVr1kySlJOTIx8fHwUGBpaaGxwcrJycnLOuJzk5WVarteQRFhZ2zm3Gxsbqhhtu0BdffKHjx4+X23vB5QsKCtLVV1+thg0b6r333jMdBwBQQShFAHCahIQE7dq1S4sWLbqs9SQlJclms5U8srKyzjs/JiZGLVq00NSpUy9ruyh/9957r44dO6atW7eqsLDQdBwAQAWgFAHAf40YMUKrVq3S+vXrVb9+/ZLxkJAQFRcXKz8/v9T83NxchYSEnHVdvr6+CggIKPU4n44dO+rf//63LBaLMjIyLvetoBxZLBZ17dpVdrtdixcvNh0HAFABKEUAPJ7D4dCIESP08ccfa926dWrUqFGp11u3bq1q1app7dq1JWN79+5VZmamYmJiyi1HSkqKPvnkE3377bfltk6Ujz59+shms5X8uwMAqpaqdZtuALgECQkJWrBggT799FP5+/uX/E7IarXqyiuvlNVq1dChQ5WYmKhatWopICBAI0eOVExMTJmuPFdWfn5+evDBB/X222/r5ptvPqOcwax58+apefPmatWqlcLDw03HAQCUIy7JDcDjnesKbO+//74GDx4s6T83bx07dqwWLlyooqIidenSRbNmzTrn6XPOLuYyyLfccouaNWumadOmydubv125khkzZmjWrFnavn27qlevbjrOJeGS3ABwJkoRAFSCi/kimpOTo5YtW2rx4sWKjY2tpIQoC7vdrs6dO6thw4aaM2eOLBb3OwudUgQAZ3K//zUHgCouJCRE48eP18MPP2w6CpxYLBbNnj1b//jHP855jyoAgPuhFAGAC+rVq5datGihxx57zHQUOLn66quVmJiokSNHmo4CACgnlCIAcEHh4eHq1auXtm/frh9//NF0HJzGYrGoffv2ateunZ544gnTcQAA5YBSBAAuqmPHjoqPj9fkyZNNR4GTqKgoNW7cWPv27dPPP/9sOg4A4DJRigDARdWpU0e1a9fWX//6V82fP990HDi58847Va9ePb3zzjumowAALhOlCABc2KhRo7R161bt379fhYWFpuPgNE2aNJHVapW3t3epG/sCANwPpQgAXNzYsWO1Zs0arVu3znQUOHnhhRe0fv16fffdd7Lb7abjAAAuEaUIAFzczTffrKuvvlpLly7VwYMHTceBkylTpui9997Trl27TEcBAFwiShEAuIF58+Zp/fr1+uKLL0xHgZOOHTuqRYsWmjhxIqc4AoCbohQBgBuwWCx67bXX9PTTT/PF2wXNmzdP3377rRYuXGg6CgDgElCKAMBNdO3aVZ06ddI999xjOgqc+Pj46NVXX9Vzzz1HaQUAN0QpAgA3Ub16dT322GM6cOCAli1bZjoOnMTGxqpHjx4aMGCA6SgAgItEKQIAN9KiRQsNHDhQr7/+Olc7czFBQUHq3LmzCgsL9emnn5qOAwC4CJQiAHAjFotFzZo1U5cuXZSUlGQ6DpzcdtttatmypebOnUtpBQA3QikCADdz6623qqCgQJK4DLSL8fb2VkREhCIjI/Xmm2+ajgMAKCNKEQC4oXHjxum7777TV199ZToKnAwYMEA//fSTbDabDhw4YDoOAKAMKEUA4IZCQkLUrl07paena8eOHabjwMnUqVP1ySefKC0tzXQUAEAZUIoAwE0999xz2rt3r7744gt+v+Ji6tevr9tuu03vvvsuR4sAwA1QigDAjc2dO1czZ87Ujz/+aDoKnLz44ovKzc3V3LlzTUcBAFwApQgA3FizZs10zz33aOjQoaaj4CzmzZunmTNnav/+/aajAADOg1IEAG7uueeek91u15QpU0xHgZPm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ZQUFBZmOc9FMf74BoDJxpAgA3JTFYtHkyZM1efJkflvkgubPn6/169dr9erVpqMAAC6AUgQAbqxv375q3bq1HnzwQdNR4MRisejVV1/VM888w2+LAMDFUYoAwI1ZLBbNmjVL33//vZYsWWI6Dpx069ZNHTt2VP/+/U1HAQCcB6UIANxcUFCQxo8fr0mTJslut5uOg9NUr15dY8aMUVZWlpYvX246DgDgHChFAFAFREdH6/bbb9fw4cNNR4GT5s2b6/7779drr71GaQUAF0UpAoAqoFmzZqpfv77+/PNPbdq0yXQcnMZisahZs2bq0qWLnn76adNxAABnQSkCgCri3nvvVbVq1ThNywV17NhRNptNp06d0q5du0zHAQA4oRQBQBVRp04dXXvttZKkVatWGU4DZ48//ri+++47ffXVV6ajAACcUIoAoAp54okn9O2332rXrl1cBtrFhIaGKjo6Wt9++6127NhhOg4A4DSUIgCoYmbNmqV33nmHL94uaPLkyfrhhx/05ZdfctEFAHAhlCIAqGIiIiJ0++23c9NQF/Xee+9pxowZ+vHHH01HAQD8F6UIAKqglJQUHTx4UCkpKaajwEnz5s11zz336MEHHzQdBQDwX5QiAKiCLBaLpk+frhkzZigvL890HDh57rnndOLECSUnJ5uOAgAQpQgAqqyoqCgNHjxYAwYMMB0FTgICAvTss89q3rx5Onz4sOk4AODxKEUAUEUFBATopptuUq1atTRnzhzTceCkdevWuvfeezVs2DDTUQDA41GKAKAK69Spkxo3bqzPP/+ciy64mPr16+uqq65SWFiYPvroI9NxAMCjUYoAoAqzWCy68cYbFRERoTfeeMN0HDgZPHiw/v3vf2vLli06efKk6TgA4LEoRQBQxXXr1k0HDx5UYWGhdu/ebToOTuPt7a0uXbro6NGjWrp0qek4AOCxKEUA4AHeeOMNLV++XOnp6aajwEn//v2Vn5+vXbt2KTs723QcAPBIlCIA8AA1a9bUAw88oFmzZunAgQOm48DJvHnztHDhQkorABhCKQIADzFq1Cj5+Pho6tSpstvtpuPgNAEBARoxYoTGjx/PBTEAwABKEQB4kAULFmjJkiXatm2b6ShwMnr0aAUHB2v06NGmowCAx6EUAYAHqV+/vsaOHasHH3zQdBQ4sVgsmjlzpr744gtKKwBUMkoR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LK+99pq+/PJL7dixw3QUOGnfvr2CgoK0efNm7d+/33QcAHBZlCIAwGWxWCyaOHGipk+frl9//dV0HDiZM2eO1qxZo3Xr1pmOAgAui1IEALhsPXr0ULNmzTRu3DidPHnSdBycxmKx6OWXX9akSZNUUFBgOg4AuCRKEQCgXMyfP1/p6elaunSp6Shw0r17d3Xo0EEDBgwwHQUAXBKlCABQLqpXr64pU6bomWee4WiRi/H29tYrr7yiX375RQsXLjQdBwBcDqUIAFBuYmNjdccdd2jw4MGmo8BJ/fr1NXbsWCUnJ8tut5uOAwAuhVIEACg34eHhateunY4cOaI1a9aYjgMnrVq1Uvfu3ZWQkGA6CgC4FEoRAKBc9ejRQ9dccw03dHVBrVq1kr+/v+x2uzZt2mQ6DgC4DEoRAKBcVa9eXddee60aN26s999/33QcOHnwwQd15MgRffnll6ajAIDLoBQBAMrdww8/rO+++07/93//p/z8fNNxcJo6deqoefPm+uOPP7R27VrTcQDAJVCKAAAV4vXXX9fixYu1efNm01HgZPz48dq1a5c2b96s4uJi03EAwDhKEQCgQjRu3FidOnVSSkqKDh8+bDoOnLzzzjt655139N1335mOAgDGUYoAABXm9ddf14EDBzRnzhzTUeDkuuuuU69evTRmzBjuKwXA41GKAAAV6u2339b06dOVnZ1tOgqcTJ06VUePHtWLL75oOgoAGEUpAoBy9MknnygiIkLt2rXT7t27TcdxCVFRURo4cKDuvfde01HgxNvbW6+++qree+89HTx40HQcADCGUgQA5eTo0aO65557VK9ePR0+fFgPPPCA6UguwcfHR/369dOVV16pN99803QcOGnTpo0GDx6sQYMGmY4CAMZ4mw4AAKbNnDlTU6dOVU5Ojlq0aKE333xTbdu2vej1FBYWqqioSDfccIMsFouysrIqIK17atWqlW677TYtW7ZMQ4cOVfXq1ZWRkaE9e/aoadOmioyMPOO5pMuaI+mcy7nanMt9r5c7JzAwUIWFhXr66af1wgsvVOAnAQBclAMAPNiiRYscPj4+jrlz5zp2797teOihhxyBgYGO3NzcCy5rs9kckhw2m61kLCkpySHJ4ePj41i+fHlFRnc733zzjeNvf/tbyfO4uDiH1Wp1xMXFnfX55c4533KuNqcy9sf55sTGxjp8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QrfFkSIAcE/cpwgA3MxLL70kLy8vjR49umSssLBQCQkJql27tmrWrKk+ffqccR+lsqpfv766d++upUuXKi8vr0zL+Pn56dlnn9WCBQu0bt06Pffccy5RiCSpevXquv/++7Vu3Trt3r3bdBwAgAuiFAGAG9m2bZvefvttNW/evNT4mDFjtHLlSi1dulSpqanKzs5W7969L3k7vXr1UkhIiKZMmXK5kV3CnXfeqYYNG+qVV14xHQUA4IIoRQDgJo4ePaoBAwbonXfe0V/+8peScZvNpvfee0+vv/66br31VrVu3Vrvv/++vvnmG23evPmSthUSEqIOHTooKytL69atK6+3YIyPj4969+6t/Px8ffjhh6bjAABcDKUIANxEQkKCbr/9dsXHx5caT09P14kTJ0qNN23aVOHh4UpLSzvruoqKilRQUFDq4Wzw4MGqUaOGPvvsM508ebJ834wBnTp1UsOGDbV+/foynxYIAPAMlCIAcAOLFi3Sjh07lJycfMZrOTk58vHxUWBgYKnx4OBg5eTknHV9ycnJslqtJY+wsLAz5lgsFiUmJmrv3r368ssvy+V9mPbkk08qJydHn3zyiekoAAAXQikCABeXlZWlUaNG6aOPPpKfn1+5rDMpKUk2m63kkZWVddZ5kZGRat++vebMmaPi4uJy2bZJoaGh6t69uz755BNlZ2ebjgMAcBGUIgBwcenp6Tp48KBatWolb29veXt7KzU1VW+88Ya8vb0VHBys4uJi5efnl1ouNzdXISEhZ12nr6+vAgICSj3O5a677lKNGjXOepTKHd19992qU6eOXn75ZdNRAAAuglIEAC6uY8eO+v7775WRkVHyaNOmjQYMGFDy39WqVdPatWtLltm7d68yMzMVExNz2du/7rrr1LJlS/3www/atWvXZa/PtFq1aik+Pl7/+te/9NVXX5mOAwBwAZQiAHBx/v7+atasWalHjRo1VLt2bTVr1kxWq1VDhw5VYmKi1q9fr/T0dA0ZMkQxMTFq165duWRITEzUyZMntXz58nJZn2n33HOPateurU8//bRKnBYIALg8lCIAqAKmTZumO+64Q3369FFsbKxCQkK0YsWKclu/t7e3Hn74YW3evFlbtmwpt/Wa4u3trREjRujXX3/V559/bjoOAMAwL4fD4TAdAgBgVkFBgaxWq2w22zl/X2S32zV27Fj9/vvvWrRoUSUnrBiTJ0/Wt99+q4ULF5bLRSzKsh8BAK6HI0UAgDKxWCy6++67VVxcrFmzZpmOUy7uv/9++fj4cNEFAPBwlCIAQJnFxMSoSZMm2rx5sw4cOGA6zmVr1KiRYmJi9N133+n77783HQcAYAilCABwUZKSknT48OFy/c2SSY888oh8fHy0cOFC01EAAIZQigAAFyUwMFD33HOPvvzyS+3fv990nMvm5+enwYMHKyMjQ5s2bTIdBwBgAKUIAHDRevfurdDQ0CpzQ9fbbrtN1157rWbNmiW73W46DgCgklGKAAAXrXr16urevbtyc3O1bNky03HKxcCBA3X06FHNnj3bdBQAQCWjFAEALkn37t111VVXac2aNSooKDAd57K1atVKkZGR2rBhg7Kzs03HAQBUIkoRAOCSWCwWJSYm6sCBA/rkk09MxykXI0eOVGFhoT766CPTUQAAlYhSBAC4ZNdcc406duyoZcuWKT8/33Scy1anTh316NFDqamp+vHHH03HAQBUEkoRAOCy3HvvvapZs6ZefPFF01HKxf3336+goCC98cYbpqMAACoJpQgAcFlCQkJ0yy23aO/evVXiktbe3t7q37+/srKytHz5ctNxAACVgFIEALhsgwYNktVq1fLly6vEJa07deqka665RqtWraoSF5EAAJwfpQgAcNl8fHw0bNgw7dmzR3//+99NxykXCQkJOnjwoJYsWWI6CgCgglGKAADlokOHDoqMjNR7772nkydPmo5z2Zo0aaLY2Fh9/vnnXKIbAKo4ShEAoNwMGjRIDodDr7/+uuko5eLhhx+Wr6+vZsyYYToKAKACUYoAAOXmuuuuU1RUlLZs2aJ9+/aZjnPZAgMD1b17d+3cubNKXEQCAHB2lCIAQLkaMWKEvLy89OGHH5qOUi7uuusu1atXTx999FGVOC0QAHAmShEAoFzVrFlT/fv317Zt27R161bTcS6bj4+P7rvvPv3222/67LPPTMcBAFQAShEAoNz16tVLYWFhmjVrluko5SIuLk7NmjXT4sWLdfz4cdNxAADljFIEACh3FotFAwcO1B9//KH333/fdJxyMXz4cJ04cUKzZ882HQUAUM4oRQCAChETE6MbbrhBX331lfLy8kzHuWwNGjTQzTffrK+//lr79+83HQcAUI4oRQCACjNixAgdPXpUH330keko5WLg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ef413ZvzZxEA4HBwpAgAKoHzX+e///57devWTdOmTdPJkycr9EhR8vPP64afftJUX1/l2u0Ktli0z27XTX/+qd69e6tHjx5q3rw5R4r++14zMjI0e/ZstW3bVm+88UZFfiyM4EgRAJyJUgQAlcD5i+jJkyc1depUffrppyVXQqsovXr0UOaXX2q7j0/Jle/mFBfr4aIi+fj4aNCgQZozZ06FZnA3X3/9tR599FGtWLFCERERpuOUK0oRAJyJa3ECgAHe3t6KjY1V8+bNNWnSpArd1vARI7SjuFhDCgu18eRJzSku1uNFRWrXtq3i4+P13XffVej23VHbtm113333afTo0aajAAAqAaUIgMdLTk5WVFSU/P39FRQUpJ49e2rv3r2l5hQWFiohIUG1a9dWzZo11adPnzNueHqx2rdvr0aNGikjI0PZ2dmXta7z6dSpk+bMmaPP/f11059/6pHiYnlbrdq8datWr16te++9t8K27a6qV6+uJk2aqHXr1kpJSTEdBwBQwShFADxeamqqEhIStHnzZq1Zs0YnTpxQ586ddezYsZI5Y8aM0cqVK7V06VKlpqYqOztbvXv3vuxtd+nSReHh4Xrrrbcue13n89BDDykrO1s7d+5Udna2Mg8c0OLFi7VhwwaNGjWqQrftru6++27l5eXpl19+UX5+vuk4AIAKxG+KAMDJoUOHFBQUpNTUVMXGxspms6lu3bpasGCB+vbtK0nas2ePIiIilJaWpnbt2p2xjqKiIhUVFZU8/9+9Yc72O47ExET5+/urc+fOat++fcW+OVyUDRs2aMaMGYqPj9ewYcNMxykX/KYIAM7EkSIAcGKz2SRJtWrVkiSlp6frxIkTio+PL5nTtGlThYeHKy0t7azrSE5OltVqLXmEhYWdc3uvvvqqPv/8c2VkZJTfm0C5iI2NVc2aNfXDDz/o559/Nh0HAFBBKEUAcBq73a7Ro0erffv2atasmSQpJydHPj4+CgwMLDU3ODhYOTk5Z11PUlKSbDZbySMrK+uc27RYLEpKStLbb7/NF28X9O6772r16tXatGmT6SgAgApCKQKA0yQkJGjXrl1atGjRZa3H19dXAQEBpR7n06dPH1199dV67rnnVFxcfFnbRvmyWCyaMmWKJk+erMOHD5uOAwCoAJQiAPivESNGaNWqVVq/fr3q169fMh4SEqLi4uIzfmyfm5urkJCQctv+ggULtGHDBq1cubLc1ony0bdvX7Vq1UoPPfSQ6SgAgApAKQLg8RwOh0aMGKGPP/5Y69atU6NGjUq93rp1a1WrVk1r164tGdu7d68yMzMVExNTbjmqV6+uF154QePGjZPdbi+39eLyWSwWzZgxQ999952WLVtmOg4AoJxRigB4vISEBH344YdasGCB/P39lZOTo5ycHP3555+SJKvVqqFDhyoxMVHr169Xenq6hgwZopiYmLNeee5y3HrrrerUqZMGDx5cruvF5QsJCdH48eP13HPPUVoBoIqhFAHweG+99ZZsNptuvvlm1atXr+SxePHikjnTpk3THXfcoT59+ig2NlYhISFasWJFuWepX7++OnXqpN9//11ff/11ua8fl6dt27bq1q2bEhISTEcBAJQj7lMEAJXgYu4Nc/z4cb3wwgv66aeftHTp0kpKiLJKSUnRjh079Oijj5br6ZOVhfsUAcCZOFIEAC6mevXqatSoka6//nrNmTPHdBw4uffee+Xt7a3ly5ebjgIAKCeUIgBwQQ8++KB27typnJycM656B7OCgoJ07bXX6tSpU1q9erXpOACAckApAgAX9cILL+izzz5Tamqq6ShwMn78eH377bfauXMn95UCgCqAUgQALioiIkLt27fX+++/r5ycHNNx4GTGjBl699139e2335qOAgC4TJQiAHBh06dP1969e7VgwQLTUeCkWbNm6tq1q8aPH8/RIgBwc5QiAHBx77zzjl555RUdPHjQdBQ4mT59ug4ePKjXX3/ddBQAwGWgFAGAi2vbtq3uvfde9evXz3QUOLFYLHrjjTc0c+ZM5eXlmY4DALhElCIAcHE+Pj4aOnSoHA6HZs2aZToOnLRu3VoDBw7UfffdZzoKAOASUYoAwA1cf/31uvvuu/W3v/1NhYWFpuPgNIGBgerQoYMCAwO5rxQAuClKEQC4idatW6tr16564oknTEeBky5duqhJkyZavXo1pRUA3BClCADcRHR0tP78809ZrVZt3LjRdBycxmKxKDo6WhEREXrzzTdNxwEAXCRKEQC4kWeffVYbN27Uli1bTEeBkzvuuEO///67/vzzT/3444+m4wAALgKlCADcSPXq1dW7d29t2LBB27ZtMx0HTmbMmKFly5YpPT3ddBQAwEWgFAGAmxk5cqQKCgq0fPlyfr/iYmrW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HACosihFAAB17NhRMTExevHFF01HgZNbb71VVqtVe/bsUXZ2tuk4AFAlUYoAAGrcuLF8fX0VGhqqzz77zHQcOOnRo4dq1KihefPmmY4CAFUSpQgAIEl69tln9fXXX+uHH37gEt0upk2bNrryyit19OhR7l0EABWAUgQAkPSfiy4kJibq008/VVpamuk4cJKSkqLPP/9c27dvNx0FAKocShEAoMQdd9yhq666Su+9954KCgpMx8FpLBaLnnvuOU2fPl3/+te/TMcBgCqFUgQAKGXBggVas2aNvvzyS9NR4KRXr166/vrr9fjjj+vkyZOm4wBAlUEpAgCU4uPjo5deeokv3i7qgw8+0Pbt27V06VLTUQCgyqAUAQDOcPvtt+vWW2/VfffdZzoKnNSsWVPPP/+8nn32WUorAJQTShEA4AyBgYEaPHiw9u/fr7///e+m48BJbGysunXrpqFDh5qOAgBVAqUIAHBWHTp0UI8ePTR16lTTUeCkQYMGatu2rfLz87V27VrTcQDA7VGKAABn5e3trYiICMXGxuqFF14wHQdOevbsqcaNG3NDVwAoB5QiAMA59erVS5mZmTp+/LgyMzNNx8FpatasqWuuuUbh4eGaP3++6TgA4NYoRQCA83r66ae1ceNGffXVV6ajwMnw4cP13XffKTMzU/n5+abjAIDbohQBAM6rUaNGatu2rdatW6e9e/eajgMn06ZN0+LFi7VlyxbTUQDAbVGKAAAXNHXqVO3cuVOrVq0yHQVOmjRpovj4eL3++us6fPiw6TgA4JYoRQCAMnnnnXf06quv8tsiFzRt2jRlZWXp3XffNR0FANwSpQgAUCZRUVHq27cvN3R1Ue+8846mTZumnJwc01EAwO1QigAAZWKxWPT000+rsLBQ06dPNx0HTqKiojRw4ED179/fdBQAcDuUIgBAmYWEhGjUqFF69913dfToUdNxcBofHx/ddddduvLKKzVjxgzTcQDArVCKAAAXpU2bNurbt68SEhJMR4GTNm3aqEuXLlq+fLmOHz9uOg4AuA1KEQDgolx33XXy9/dXUFCQPvvsM9Nx4KRNmza66aabNHHiRNNRAMBtUIoAABdt+PDh+vXXX7V582bZ7XbTcXCa9u3b68iRI6pZsyb3LgKAMqIUAQAump+fn7p27arMzEx9+eWXpuMoLS1Na9as0alTp0xHcQkvvPCC/vGPf2j79u2mowCAW6AUAQAuyYMPPqi8vDx98803ys/PN5bjueee04033qjOnTvr7rvvlsPhMJbFVVSvXl0DBgzQihUr9P3335uOAwAuj1IEALhkH374oebPn2/0iMS7776rQYMG6eWXX9aKFSv073//21gWVzJ8+HDZ7XbNmzdPxcXFpuMAgEvzNh0AANzFzJkzNXXqVOXk5KhFixZ688031bZtW9OxjKpTp44effRRPfLII1q2bJkiIyOVkZGhPXv2qGnTpoqMjJSkM8YuZo6kcy6XkZGhwMBALV26VAEBAapXr55+/fVX/eMf/7jo9VTWnMvdHxczZ/HixYqIiNANN9ygwYMHV+yHAQDcmQMAcEGLFi1y+Pj4OObOnevYvXu346GHHnIEBgY6cnNzy7S8zWZzSHLYbLYKTlr5ioqKHHFxcY64uDiHw+FwxMXFOaxWa8nzs41dzJzzLRcXF+fw9/d3VKtWzREUFOTYvXv3Ja+nsuZc7v642Dk33XRTqedV+bMIAJfKy+Hg5GsAuJDo6GhFRUWV3BTTbrcrLCxMI0eO1Pjx48+YX1RUpKKiopLnNptN4eHhysrKUkBAQKXlriw7d+6UJDVv3lw7d+7UTz/9pGuvvVbNmzcvef30sYuZI+mcy7njnMvdH5cy53//NpJUUFCgsLAw5efny2q1VsjnAQDcDafPAcAFFBcXKz09XUlJSSVjFotF8fHxSktLO+syycnJmjRp0hnjYWFhFZYTuBhHjhyhFAHAf1GKAOAC8vLydOrUKQUHB5caDw4OLvn9iLOkpCQlJiaWPM/Pz1eDBg2UmZnJF9Fy8r8jHlX16FtFcTgcOnLkiEJDQ01HAQCXQSkCgArg6+srX1/fM8atVitf4MtZQEAA+/QiUcwBoDQuyQ0AF1CnTh1dccUVys3NLTWem5urkJAQQ6kAAEB5oRQBwAX4+PiodevWWrt2bcmY3W7X2rVrFRMTYzAZAAAoD5w+BwBlkJiYqEGDBqlNmzZq27atUlJSdOzYMQ0ZMqRMy/v6+mrixIlnPaUOl4Z9CgAoL1ySGwDKaMaMGSU3b42MjNQbb7yh6Oho07EAAMBlohQBAAAA8Gj8pggAAACAR6MUAQAAAPBolCIAAAAAHo1SBAAAAMCjUYoAoILNnDlTDRs2lJ+fn6Kjo7V161bTkdxGcnKyoqKi5O/vr6CgIPXs2VN79+4tNaewsFAJCQmqXbu2atasqT59+pxxo10AAM6HUgQAFWjx4sVKTEzUxIkTtWPHDrVo0UJdunTRwYMHTUdzC6mpqUpISNDmzZu1Zs0anThxQp07d9axY8dK5owZM0YrV67U0qVLlZqaquzsbPXu3dtgagCAu+GS3ABQgaKjoxUVFaUZM2ZIkux2u8LCwjRy5EiNHz/ecDr3c+jQIQUFBSk1NVWxsbGy2WyqW7euFixYoL59+0qS9uzZo4iICKWlpaldu3aGEwMA3AFHigCgghQXFys9PV3x8fElYxaLRfHx8UpLSzOYzH3ZbDZJUq1atSRJ6enpOnHiRKl93LRpU4WHh7OPAQBlRikCgAqSl5enU6dOKTg4uNR4cHCwcnJyDKVyX3a7XaNHj1b79u3VrFkzSVJOTo58fHwUGBhYai77GABwMbxNBwAAoCwSEhK0a9cubdy40XQUAEAVQykCgApSp04dXXHFFcrNzZXdbld2drb8/f2VlZWl2rVrq6CgwHREt/H444/r888/1xdffKGAgICSfefv76/i4mJlZmaWOlr0+++/KzAwkH18Fg6HQ0eOHFFoaKgsFk4YAQCJCy0AQIWKjo5W27Zt9eSTTyosLMx0HKBEVlaW6tevbzoGALgEjhQBQAVKTEzUoEGD9Ne//lXSf76IBgQEGMvjcDjk5eVlbPswr6CgQGFhYfL39zcdBQBcBqUIACpQv379dOjQIb344ouSpICAACOl6J///KeeevJJbdq8WSF16mj4Y48pKSlJV1xxRaVngWugHAPA/8fpcwBQCQoKCmS1WmWz2RQQEKDjx4/rhx9+kLe3t/bs2aOmTZsqMjJSkpSRkVFqzPn5xc7x8vLSoPvvV4TDoS5eXvrd4dBHp07psVGjNHDQoEvelqRzLueOc05/r8ePH9cDDzxQkR8JY5w/iwAASQ4AQIWz2WwOSQ6bzeZwOByOdu3aOZ577jlHbGysw2q1OuLi4krmxsXFlRpzfn6xc4KDgx2NqlVzPF2tmiPOYnFM9PFxTPLxcfj5+Djat29/yds633LuOOd/Y76+vg6r1erIyso6z7+o+3L+LAIAHA6OFAFAJXD+6/zPP/+suLg4vfrqq7JYLBV6pCj5+efV8qeflOzrq1y7XcEWi/7lcOjG48d1ww03aNiwYerQoQNHik57r5MnT1afPn00adKkKneFNo4UAcCZKEUAUAnO9kX0qaee0j/+8Q9t3769Qrf9wJAhWvvRR9rj66sr//s7kglFRUo+eVK169ZV27Zt9dlnn1VoBnfz448/6pZbbtH69esVERFhOk65ohQBwJmq1p+/AOASJCcnKyoqSv7+/goKClLPnj21d+/eUnMKCwuVkJCg2rVrq2bNmurTp49yc3Mva7vjx4+Xr6+vnn322ctaz4Ukjh2rQxaLYoqK9GpxsYYUFmpKcbHa3XijGjZsqD/++KNCt++OrrvuOj3yyCO6//77TUcBAFQCShEAj5eamqqEhARt3rxZa9as0YkTJ9S5c2cdO3asZM6YMWO0cuVKLV26VKmpqcrOzlbv3r0va7sBAQF6+umntXTpUmVnZ1/u2zinZs2aaX1qqup26KAJklJDQtSqdWtt3LhRO3fu1IQJEyps2+7KYrFowIABCgkJ0aRJk0zHAQBUME6fAwAnhw4dUlBQkFJTUxUbGyubzaa6detqwYIF6tu3ryRpz549ioiIUFpamtq1a3fBdZ7rlKWDBw/q7bffVnp6uj755JOKektncDgcyszMlNVqVWBgYKVt1928//77mjNnjj799FMFBQWZjlMuOH0OAM7EkSIAcGKz2SRJtWrVkiSlp6frxIkTio+PL5nTtGlThYeHKy0t7azrKCoqUkFBQanH2QQFBSk8PFyNGzfWe++9V87v5Ny8vLzUoEEDCtEFdOjQQZ07d9ZTTz1lOgoAoAJRigDgNHa7XaNHj1b79u3VrFkzSVJOTo58fHzOKBDBwcHKyck563qSk5NltVpLHmFhYefc5v33368//vhDGRkZKiwsLLf3gsvXpEkTVatWTfXr1+diFABQhVGKAOA0CQkJ2rVrlxYtWnRZ60lKSpLNZit5ZGVlnXOuxWJRjx49ZLPZtGzZssvaLsrfU089pU2bNmnXrl2y2+2m4wAAKgClCAD+a8SIEVq1apXWr1+v+vXrl4yHhISouLhY+fn5pebn5uYqJCTkrOvy9fVVQEBAqcf59OrVS4WFhdq9e7cyMzMv+72g/FgsFj344INau3atNmzYYDoOAKACUIoAeDyHw6ERI0bo448/1rp169SoUaNSr7du3VrVqlXT2rVrS8b27t2rzMxMxcTElFuO+fPna8mSJRV+3yJcvH79+qlmzZpasWLFOX8fBgBwX5QiAB4vISFBH374oRYsWCB/f3/l5OQoJydHf/75pyTJarVq6NChSkxM1Pr165Wenq4hQ4YoJiamTFeeKys/Pz89/vjjGj9+PL8tckELFy7U8uXLOVoEAFUQl+QG4PG8vLzOOv7+++9r8ODBkv5z89axY8dq4cKFKioqUpcuXTRr1qxznj7nrKyXQbbb7erWrZtCQkI0b968i30rqGDvvvuuXnjhBe3bt08Wi3v+XZFLcgPAmShFAFAJLuaL6L59+xQfH6/3339fN998c+UERJkUFBRoyJAh8vf3d9vSSikCgDO555+5AKAKa9SokUaPHq2xY8eajgInAQEBGjt2rL799ltt2rTJdBwAQDmhFAGAi7FYLGrXrp1uuukmjRs3znQcOGnTpo369++vZ5991nQUAEA5oRQBgAuKjo5WSEiIDhw4oL1795qOg9P4+PjouuuuU2xsrF544QXTcQAA5YBSBAAu6q677lKNGjU0f/5801HgpFevXvr999+Vl5en7Oxs03EAAJeJUgQALqpx48YKCgrSyZMntW7dOtNx4GTkyJH66aeftGrVKtNRAACXiVIEAC7sxRdfVGpqqr777jvZ7XbTcXCaZs2a6ZprrtH27du1e/du03EAAJeBUgQALu6ll17S7Nmz+eLtgqZPn65vvvlG69evNx0FAHAZKEUA4OJuvvlmRUdHa/z48SouLjYdB06mT5+ul156id8WAYAboxQBgBuYO3eu9uzZ47Y3DK3KbrnlFnXu3FmDBg0yHQUAcIkoRQDgBry9vfXqq6/qhRdeUGFhoek4OI3FYtErr7yinJwczZkzx3QcAMAloBQBgJuIiYlR3759NWDAANNR4KROnTp68sknNW3aNEorALghShEAuImQkBDddNNNcjgcWr58uek4cNK6dWvdfffdevjhh01HAQBcJEoRALiRO+64Q9ddd50WLFjAJbpdTEREhOrUqaMaNWroiy++MB0HAHARKEUA4Ea8vb11/fXXKyIiQrNmzTIdB06GDBmigoICffXVV5RWAHAjlCIAcDP33XeffvnlF/373//WgQMHTMfBaWrWrKl27drp+PHjWrlypek4AIAyohQBgBtKSUnR0qVLtWXLFtNR4GTEiBH69ddflZGRoYKCAtNxAABlQCkCADcUEhKinj17asaMGcrJyTEdB07ee+89vf/++9qxY4fpKACAMqAUAYCbmjx5sgoKCjRz5kzTUeCkfv36GjBggMaNG6fi4mLTcQAAF0ApAgA39sEHH+idd97Rzz//bDoKnDz//PPy8vLSs88+azoKAOACKEUA4Mb++te/6uGHH9Z9991nOgqcWCwWTZ8+XQsXLtT+/ftNxwEAnAelCADcmMVi0T333KOgoCBNmTLFdBw4admypR588EENGTLEdBQAwHlQigDAzUVEROiOO+7QF198oby8PNNxcBo/Pz+1b99ejRs31tSpU03HAQCcA6UIAKqADh06qFOnTpowYYLpKHDSsWNHhYaGauvWrcrPzzcdBwBwFpQiAKgCrr/+ep06dUohISH6+9//bjoOnHTq1EmhoaGaPXu26SgAgLOgFAFAFTFx4kStX79eO3fulN1uNx0Hp4mNjVVRUZGOHz+ujIwM03EAAE4oRQBQRXh7e+vBBx/U6tWrtWXLFtNx4GTGjBn65JNPuKErALggShEAVCEDBgxQ9erVtWDBAh09etR0HJzG29tbjz/+uFJSUnTgwAHTcQAAp6EUAUAVs3jxYi1fvlwbNmwwHQVOBg4cqNDQUD3zzDM6efKk6TgAgP+iFAFAFVOzZk09++yzGjlyJL8tckELFizQmjVrtGbNGtNRAAD/RSkCgCqof//+ioyM1LBhw0xHgZNatWppwoQJGj16NKUVAFwEpQgAqqDAwEAlJCQoPT2diy64oPj4eMXGxmr48OGmowAARCkCgCrrxhtvVL9+/fTss8+ajgInjRs3VlxcnH799Vdt377ddBwA8HiUIgAeb8OGDerevbtCQ0Pl5eWlTz75pNTrDodDEyZMUL169XTllVcqPj5eP//8s5mwF8HPz0+NGjVS+/btNXXqVNNx4KRbt25q2bKl3nzzTdNRAMDjUYoAeLxjx46pRYsWmjlz5llff+WVV/TGG29o9uzZ2rJli2rUqKEuXbqosLCwkpNevH79+um3337ToUOHdPDgQdNxcJpatWqpXr16atSokT766CPTcQDAo1GKAHi8rl27asqUKerVq9cZrzkcDqWkpOiZZ55Rjx491Lx5c82fP1/Z2dlnHFFyVY899ph27typzz//3HQUOBk9erS2bt2qf/3rXzp+/LjpOADgsShFAHAe+/fvV05OjuLj40vGrFaroqOjlZaWds7lioqKVFBQUOphSmRkpK6++mp98803bnHan6eZPHmyli9frm+++cZ0FADwWJQiADiPnJwcSVJwcHCp8eDg4JLXziY5OVlWq7XkERYWVqE5L2TGjBnauHGjvvrqK6M5cKY2bdqodevWmjVrlg4fPmw6DgB4JEoRAFSApKQk2Wy2kkdWVpbRPBaLRSkpKXrhhReUl5dnNAvO9Pbbb2vnzp1atGiR6SgA4JEoRQBwHiEhIZKk3NzcUuO5ubklr52Nr6+vAgICSj1M69Spkzp16qQBAwaYjgInFotFM2fO1JQpU4yeagkAnopSBADn0ahRI4WEhGjt2rUlYwUFBdqyZYtiYmIMJrt4FotFycnJ+v333/Xee++ZjgMnN910k3r37q27777bdBQA8DiUIgAe7+jRo8rIyFBGRoak/1xcISMjQ5mZmfLy8tLo0aM1ZcoUffbZZ/r+++81cOBAhYaGqmfPnkZzX4qQkBCNHTtWKSkpKi4uNh0Hp6levboGDRqkP//8U/PnzzcdBwA8CqUIgMfbvn27WrZsqZYtW0qSEhMT1bJlS02YMEGS9MQTT2jkyJEaNmyYoqKidPToUX355Zfy8/MzGfuStW7dWr169dLw4cNNR4GT1q1bq0ePHnr33Xd18uRJ03EAwGN4ORwOh+kQAFDVFRQUyGq1ymazucTvi6ZOnaqsrCz16NFDHTt2NB0Hp1m7dq02bdqkP//8U8nJyeW+flf7LAKAK+BIEQB4oIcfflgHDx4s9VspuIaOHTsqLy9PPj4+Jad0AgAqFqUIADxQQECA2rVrp7y8PK1evdp0HDiZPHmy1q1bxw1dAaCSUIoAwEONHj1av/zyi7Zt26bjx4+bjoPTBAYGqlu3bvriiy+0a9cu03EAoMqjFAGAB3v//fc1d+5c7dixw3QUOElKStIff/yhxYsXy263m44DAFUapQgAPFiDBg107733asyYMVztzAV99NFHeuedd7Rz507TUQCgSqMUAYCHe/755yWp5BLkcB2NGjXSww8/rMGDB5uOAgBVGqUIADyct7e3XnvtNS1YsECZmZmm48DJyJEj9Ze//EVPP/206SgAUGVRigAAatWqlYYOHaoHHnjAdBQ4qVOnjkaPHq3PPvtMBw4cMB0HAKokShEAQDVr1lTLli3VuHFjTZ8+3XQcOImOjtbdd9+tUaNGmY4CAFUSpQgAIEm64447FBgYqC1btqigoMB0HJwmJCREQUFBatq0qT744APTcQCgyqEUAQBKxMfHq06dOnr33XdNR4GThx56SD///LN27dql4uJi03EAoEqhFAEASnTq1ElHjx7Vv//9b+3evdt0HJzGYrFowIAB+vXXX/XZZ5+ZjgMAVQqlCABQyuzZs/Xxxx9zQ1cX1KNHD1ksFqWlpSk7O9t0HACoMihFAIBSfHx8NHr0aE2dOlUHDx40HQdO/va3v2n58uXatGmT6SgAUGVQigAAZ3jwwQcVEhKiJ598Una73XQcnMbPz0/PPPOMxo8fz2+LAKCcUIoAAGf14Ycfas2aNVq7dq3pKHAyePBg/fWvf+W+UgBQTihFAICzCgoK0tNPP829cVyQt7e3XnnlFW3dupXSCgDlgFIEADinW2+9Ve3bt1dCQoLpKHBy3XXXafjw4Ro/frzpKADg9ihFAIBzuu6663TjjTfq119/1c6dO03HwWksFotatWqljh076sknnzQdBwDcGqUIAHBet99+u5o1a6Y333zTdBQ4iY2NlZ+fn/Ly8rR3717TcQDAbVGKAADnFRQUpLp16+qqq67SsmXLTMeBk/vvv1+FhYVaunSp6SgA4LYoRQCAC3riiSe0adMm/fLLL1wG2sU0btxY4eHh+uOPP7h3EQBcIkoRAKBMJk+erEWLFumbb74xHQVOkpOT9c9//lNbt27lvlIAcAkoRQCAMomJiVHLli315ptvKj8/33QcOElJSdGbb76pn3/+2XQUAHA7lCIAQJm99957ysjI0JIlS0xHgZMOHTooLi5Ojz32GEeLAOAiUYoAAGVmsVg0ffp0Pffcczp69KjpOHDy1ltvaf/+/Zo9e7bpKADgVihFAICLEhsbq759+6pfv36mo8CJn5+fXn75Zb366qs6fvy46TgA4DYoRQCAixIQEKC77rpLhYWFWrhwoek4cBIdHa27775bAwcONB0FANwGpQgAcNHat2+vzp0765133tHJkydNx8FpQkND1aJFC/n6+nJfKQAoI0oRAOCiWSwWNW/eXHFxcZoyZYrRLIWFhZo2bZqef/55HTp0yGgWV9GnTx/VqVNHn376KRddAIAyoBQBAC5J165d9fvvv0uSfvzxR2M5Bg8erHHjxumll17SLbfcQgmQ5OPjo9atWyskJETvv/++6TgA4PIoRQBQRjNnzlTDhg3l5+en6Ohobd261XQk46ZMmaI1a9Zo06ZNxjL885//1KOPPqqUlBTt3r1b//73v41lcSUDBw7Uvn37dODAAeXk5JiOAwAuzdt0AABwB4sXL1ZiYqJmz56t6OhopaSkqEuXLtq7d6+CgoJMxzOmTp066tq1qz788EO1adNGkZGRysjI0J49e9S0aVNFRkZK0hljFzNH0jmXy8jI0LXXXqsZM2boiiuuUFRUlH777TetWbPmotdTWXMud39czJz/fV6bN2+uXr16VfCnAQDcmAMAcEFt27Z1JCQklDw/deqUIzQ01JGcnFym5W02m0OSw2azVVREo+Li4hxxcXEl/221Wkuen23sYuacb7m4uDhHQECA48orr3Rcc801DpvNdsnrqaw5l7s/LmXO6c+r+mcRAC6Fl8PhcJguZgDgyoqLi1W9enUtW7ZMPXv2LBkfNGiQ8vPz9emnn56xTFFRkYqKikqe22w2hYeHKysrSwEBAZURu1Lt3LlTktS8eXPt3LlTP/30k6699lo1b9685PXTxy5mjqRzLueOcy53f1zKnP/920hSQUGBwsLClJ+fL6vVWiGfBwBwN5w+BwAXkJeXp1OnTik4OLjUeHBwcMmpUs6Sk5M1adKkM8bDwsIqJCNwsY4cOUIpAoD/ohQBQAVISkpSYmJiyfP8/Hw1aNBAmZmZfBEtJ/874lFVj75VFIfDoSNHjig0NNR0FABwGZQiALiAOnXq6IorrlBubm6p8dzcXIWEhJx1GV9fX/n6+p4xbrVa+QJfzgICAtinF4liDgClcUluALiA/93zZe3atSVjdrtda9euVUxMjMFkAACgPHCkCADKIDExUYMGDVKbNm3Utm1bpaSk6NixYxoyZIjpaAAA4DJRigCgDPr166dDhw5pwoQJysnJUWRkpL788sszLr5wLr6+vpo4ceJZT6nDpWGfAgDKC5fkBgAAAODR+E0RAAAAAI9GKQIAAADg0ShFAAAAADwapQgAAACAR6MUAQAAAPBolCIAqGAzZ85Uw4YN5efnp+joaG3dutV0JLeRnJysqKgo+fv7KygoSD179tTevXtLzSksLFRCQoJq166tmjVrqk+fPsrNzTWUGADgjihFAFCBFi9erMTERE2cOFE7duxQixYt1KVLFx08eNB0NLeQmpqqhIQEbd68WWvWrNGJEyfUuXNnHTt2rGTOmDFjtHLlSi1dulSpqanKzs5W7969DaYGALgb7lMEABUoOjpaUVFRmjFjhiTJbrcrLCxMI0eO1Pjx4w2ncz+HDh1SUFCQUlNTFRsbK5vNprp162rBggXq27evJGnPnj2KiIhQWlqa2rVrZzgxAMAdcKQIACpIcXGx0tPTFR8fXzJmsVgUHx+vtLQ0g8ncl81mkyTVqlVLkpSenq4TJ06U2sdNmzZVeHg4+xgAUGaUIgCoIHl5eTp16pSCg4NLjQcHBysnJ8dQKvdlt9s1evRotW/fXs2aNZMk5eTkyMfHR4GBgaXmso8BABfD23QAAADKIiEhQbt27dLGjRtNRwEAVDGUIgCoIHXq1NEVV1xRciU0u92u7OxsZWZmqnbt2iooKDCc0H08/vjj+vzzz/XFF18oICCgZN/5+/uruLhYmZmZpY4W/f777woMDGQfO3E4HDpy5IhCQ0NlsXCyCAD8DxdaAIAKFB0drbZt2+rNN9/UgQMHFBYWZjoSoKysLNWvX990DABwGRwpAoAKlJiYqEGDBqlNmzaKiIiQ9J8vpAEBAUZznTp1Srt371adOnUUGhpqNAsqT0FBgcLCwuTv7286CgC4FEoRAFSgfv366dChQ5owYYJ+//13SVJAQICxUvTLL7/o2LFjeuaZZ7Rq1SpVq1ZNS5YsUc+ePY3kgRleXl6mIwCAS+H0OQCoJAUFBbJarbLZbJVeivbt26d7775bW3fsKBlLSUnRkiVL5O3trdTU1ErNAzNMfgYBwJVxpAgADBk1apQ6deqkO+64QxkZGdqzZ4+k/9xnJzIysmTsf88lnTFWluVOnTqljnFxOpWTo3d9fRXg5aV7ioo0e/ZsZWZmKi4u7qzrvtTtufty//znP7Vv3z6lpKRUxD87AMAVOQAAlcJmszkkOWw2m+PXX391/OUvf3E0btzY4XA4HHFxcQ6r1eqwWq2OuLi4UmP/e362sbIs949//MMhydHSy8sx0cfH4fD3d9x1xRUOSQ6LxeK48cYby3V77r5ctWrVHOHh4Y5du3ad65/SbZ3+GQQA/H8cKQIAAxo1aqTu3bvLZrNp586dSklJKXVkQ1LJ2P+en22sLMsdOnToP+N+fmry38swT/fz04Zjx5Rrt+u6664r1+25+3LfffedXnzxRW3fvl3XX3/92f8BAQBVCr8pAoBKcrbfc7Rs2VKDBw/WqFGjKmy7v/32m65u1EiTq1XT076+kqQvT55U1z//1O23367PP/9c//rXv9SgQYMKy+Bu3nzzTS1cuFALFixQw4YNTccpN/ymCADOjju3AfB4ycnJioqKkr+/v4KCgtSzZ0/t3bu31JzCwkIlJCSodu3aqlmzpvr06VNyU9bLMX36dL322mv617/+ddnrOpcGDRpo3BNP6JniYrUtLFSnwkLd/uefquHnJy8vL11xxRXy8/OrsO27o5EjR+qKK67QG2+8IbvdbjoOAKCCUYoAeLzU1FQlJCRo8+bNWrNmjU6cOKHOnTvr2LFjJXPGjBmjlStXaunSpUpNTVV2drZ69+592dvu0KGD4uPjNWzYsAr98p2cnKwVK1YovHt3+cTHa8JzzymiWTN9//33evfddxUcHFxh23ZXH330kRYuXKht27aZjgIAqGCcPgcATg4dOqSgoCClpqYqNjZWNptNdevW1YIFC9S3b19J0p49exQREaG0tDS1a9euTOs916lLR48eVVRUlEaPHq2HH364Qt4TLk1ycrIWLlyonTt3mo5SLjh9DgDOjiNFAODEZrNJkmrVqiVJSk9P14kTJxQfH18yp2nTpgoPD1daWto511NUVKSCgoJSj7OpWbOmJk6cqFdffVWFhYXl+E5wue6//37Vr19fSUlJpqMAACoQpQgATmO32zV69Gi1b99ezZo1kyTl5OTIx8dHgYGBpeYGBwcrJyfnnOtKTk6W1WoteYSFhZ1zbkxMjHr16qWhQ4eWy/tA+ahfv76GDBmiv//978rMzDQdBwBQQShFAHCahIQE7dq1S4sWLbrsdSUlJclms5U8srKyzjm3QYMGuv766+VwOLR69erL3jbKT/v27XXnnXfq8ccfNx0FAFBBKEUA8F8jRozQqlWrtH79etWvX79kPCQkRMXFxcrPzy81Pzc3VyEhIedcn6+vrwICAko9zueuu+5S3bp1tWjRIq545kJCQ0MVFBSkJk2aaP78+abjAAAqAKUIgMdzOBwaMWKEPv74Y61bt06NGjUq9Xrr1q1VrVo1rV27tmRs7969yszMVExMTLnlqF69uq6//nrVr19fH3zwQbmtF5fvkUce0c8//6ydO3equLjYdBwAQDmjFAHweAkJCfrwww+1YMEC+fv7KycnRzk5Ofrzzz8lSVarVUOHDlViYqLWr1+v9PR0DRkyRDExMWW+8lxZDRs2TD/88IOysrJ0+PDhcl03Lp3FYlH//v2VmZmpTz75xHQcAEA5oxQB8HhvvfWWbDabbr75ZtWrV6/ksXjx4pI506ZN0x133KE+ffooNjZWISEhWrFiRYXkmTZtmpYtW6aNGzdWyPpxaXr16iW73a709HRlZ2ebjgMAKEfcpwgAKsnF3CNm7Nix+vHHHzVv3jwFBQVVUkJcyPHjx3XDDTfotddeU8+ePU3HuWjcpwgAzo4jRQDggl577TVlZmby2yIXU716dY0ZM0ZJSUncUwoAqhBKEQC4qLfffluvv/76ee+FhMo3fPhwXXXVVXrsscdMRwEAlBNKEQC4qOjoaN1zzz3q37+/6Sg4jcVi0cyZM/X3v/9dW7ZsMR0HAFAOKEUA4KK8vb31yCOPqLi4WG+99ZbpODhNkyZNNGLECI0YMcJ0FABAOaAUAYALu+6663T//fdr7ty5/IbFhVgsFt18881q0aKFnn76adNxAACXiVIEAC6uTZs2uuOOO5SYmGg6Ck4TFRWlpk2b6rvvvlNmZqbpOACAy0ApAgAX16ZNG0lSzZo19fXXX5sNg1Juv/12XXvttZo+fbrpKACAy0ApAgA3MGbMGO3du1cbNmwwHQWniYiIkJ+fnwICArRmzRrTcQAAl4hSBABuICAgQHFxcfr111+1du1a03FwmilTpmjNmjXauXOn7Ha76TgAgEtAKQIAN5GYmKjMzExt3LiRiy64EIvFojFjxmjJkiXavn276TgAgEtAKQIAN/Lee+9p7ty5Sk9PNx0Fp+nTp4/q1aund955R0ePHjUdBwBwkShFAOBGGjVqpH79+unxxx/XyZMnTcfBaRYsWKAvvviC0xsBwA1RigDAzbz44osqKirSCy+8YDoKTlO9enVNnDhRY8aM4bdFAOBmKEUA4Ga8vb316quvau7cucrJyTEdB6e566671KpVKz344IOmowAALgKlCADcUJs2bTRw4EANGjTIdBScJjAwUCNGjFB6erq2bNliOg4AoIwoRQDghgICAtShQwfVrl1bb7/9tuk4OM2NN96oe+65R08//bTpKACAMqIUAYCb6tSpk5o0aaJVq1ZxiW4X4uPjo6ZNm6pt27Z66aWXTMcBAJQBpQgA3JTFYlG7du3UrFkzvfbaa6bj4DS9evVSfn6+srKy+N0XALgBShEAuLGuXbsqLy9PJ0+e1K5du/4fe/cfH1V953v8nQQywV1mCkYmBEdAUEDBBBITJsqKbHCKLEv2l7n0rmGRH/WxwRWmlhIsyUNwiVVT015DIwEWH9cHS4QraCXgTVOpl0t2syRkFSvcthESXSZANRkIkkBy7h/WKZEEc0JmhuS8no/H94/58v2e8xn6SeTdc+ZMuMvBFR577DGdPn1aO3fuDHcpAIBvQCgCgH6uoKBAP//5z/Vv//Zv4S4FV0hOTtYtt9yijz/+WO+//364ywEAXAOhCAD6ObvdrgULFmj79u36zW9+E+5ycIWXX35Z5eXlPIkOAG5whCIAGAC+973vqbW1VVu3buWLQ28gkZGRWrdunZ5//nk+WwQANzBCEQAMEK+99pr+5V/+hVu1bjB/9Vd/pXvuuUdPPPEEgRUAblCEIgAYIMaOHavHH39cixYtCncp+JotW7boP/7jP7R79+5wlwIA6AKhCAAGkMcff1zf+ta3lJubG+5ScIVvfetbysvL05o1a7haBAA3IEIRAAwgcXFx+qd/+ift3r2bz7DcYP7sz/5Mf/7nf65ly5aFuxQAwNcQigBggElNTdXf/M3f6Iknngh3KbjCuHHjlJaWpk8//ZSn0QHADYZQBAADTHx8vOLj4zVmzBi99tpr4S4HV/iLv/gLTZkyRf/jf/yPcJcCALgCoQgABqAlS5bo1KlTqqqqUltbW7jLwR9861vfksvl0rhx4/Tqq6+GuxwAwB8QigBgAIqMjNRf/uVfyu/3a+fOneEuB1d44oknVFtbqxMnTuj8+fPhLgcAIEIRAAxYjzzyiM6fP68PP/xQ//Vf/xXucnCFtWvXqqysTL/85S/DXQoAQIQiAJAkvffee5o3b57i4+MVERGhPXv2dPpzwzCUm5urkSNHasiQIUpPT9dvfvOb8BRrwrZt21RaWqqqqqpwl4IrJCcna8qUKSotLeUpgQBwAyAUAYCklpYWJSQkqKioqMs/f/755/XTn/5UxcXF+vd//3f9yZ/8iTwejy5evBjiSs350z/9U2VnZysvL49btW4wmzZt0r//+7/r7bffDncpAGB5EYZhGOEuAgBuJBEREdq9e7cyMjIkfXmVKD4+Xt/73vf01FNPSZKam5vldDq1bds2/bf/9t96dFy/3y+Hw6Hm5mbZ7fZglX+Vjo4OzZw5U1OmTOk29CE83nrrLf3jP/6jfv3rX4ekJ8LVgwBwo+NKEQB8g48//lg+n0/p6emBOYfDodTUVFVWVna7r7W1VX6/v9MIh8jISL3yyit68803VVtbG5Ya0LVvf/vb+vM//3P99//+38NdCgBYGqEIAL7BV5/5cDqdneadTuc1Pw+Sn58vh8MRGC6XK6h1XsuECRO0fPlyLV26NGw14GrR0dFas2aN6uvr9frrr4e7HACwLEIRAARJTk6OmpubA6OhoSFstURGRuqhhx7ShAkTlJubG7Y6cLUJEyZo2bJlev7559XR0RHucgDAkghFAPAN4uLiJEmNjY2d5hsbGwN/1hWbzSa73d5phNO0adOUmpqqQ4cO8cSzG8y0adP07W9/WytXrgx3KQBgSYQiAPgGY8eOVVxcnCoqKgJzfr9f//7v/y632x3GysybNWuW7r33Xv3zP/9zuEvBFdxutwYPHqyLFy+qpqYm3OUAgOUQigBA0vnz51VbWxt4EMHHH3+s2tpa1dfXKyIiQitWrNCzzz6rt956Sx988IGysrIUHx8feEJdf3H33XcrMjJSt9xyi955551wl4MrLF26VOfOndObb74Z7lIAwHIGhbsAALgRHD58WA8++GDgtdfrlSQtXLhQ27Zt06pVq9TS0qJly5apqalJ999/v/bv36+YmJhwldxr69ev16xZszRkyBDNnj1bkZH8/2M3gvj4eE2cOFFnz57VL3/5S82aNSvcJQGAZfA9RQAQIjfSd8SUlpZq48aN2rBhg+67776w1oLO7r//fs2bN0/f+973NGhQ3/5/lzdSDwLAjYT/exAALCgzM1NDhw7Vv/7rv4bt+5PQtcLCQm3evFn/+Z//Ge5SAMAyCEUAYFE7duzQ7t27dfDgwXCXgiskJyfrwQcf1NNPP622trZwlwMAlkAoAgCL+tM//VPl5OToySef5PtxbjAbN25UXV2dNm3aFO5SAMASCEUAYGH/8A//oDvvvFOPP/54uEvBFQYNGqQXX3xRzz//vM6fPx/ucgBgwCMUAYCFfXW16P/8n/8TeBw5bgz333+//u7v/k5///d/H+5SAGDAIxQBgMWlpKQoKysr8Bhy3BiGDx+u9PR0tbW16fXXXw93OQAwoBGKAMDioqOjdffdd2vatGl67rnnwl0OruDxeDR9+nT9y7/8C5/7AoAgIhQBAPSXf/mXam9v129+8xudPn063OXgDyIjIzVlyhSlpKToRz/6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O3bs0OHDh7Vp06Yen9NmsykvL6/LW+qAvkSvIVToNYQKvYZQodcQKsHoNdOP5Jakl19+WS+88IJ8Pp8SExP105/+VKmpqZKkmTNnasyYMdq2bVtg/c6dO/XDH/5QJ06c0B133KHnn39eDz/8cJ+9CQAAAADorV6FIgAAAAAYKPrukQ0AAAAA0A8RigAAAABYGqEIAAAAgKURigAAAABY2g0TioqKijRmzBjFxMQoNTVVVVVV11y/c+dOTZw4UTExMZoyZYrKyspCVCn6OzO9VlJSohkzZmjYsGEaNmyY0tPTv7E3ga+Y/b32lR07digiIkIZGRnBLRADhtlea2pqUnZ2tkaOHCmbzaY777yT/46iR8z2WmFhoSZMmKAhQ4bI5XJp5cqVunjxYoiqRX/03nvvad68eYqPj1dERIT27NnzjXsOHDigadOmyWazafz48Z2egt1TN0QoKi0tldfrVV5enmpqapSQkCCPx6PTp093uf7QoUNasGCBFi9erCNHjigjI0MZGRk6evRoiCtHf2O21w4cOKAFCxbo3XffVWVlpVwulx566CF9+umnIa4c/Y3ZXvvKiRMn9NRTT2nGjBkhqhT9ndlea2tr0+zZs3XixAnt2rVLx48fV0lJiUaNGhXiytHfmO217du3a/Xq1crLy9NHH32kLVu2qLS0VGvWrAlx5ehPWlpalJCQoKKioh6t//jjjzV37lw9+OCDqq2t1YoVK7RkyRK988475k5s3ABSUlKM7OzswOv29nYjPj7eyM/P73L9I488YsydO7fTXGpqqvHd7343qHWi/zPba193+fJlY+jQocarr74arBIxQPSm1y5fvmykpaUZmzdvNhYuXGjMnz8/BJWivzPbaz/72c+M22+/3WhrawtViRggzPZadna2MWvWrE5zXq/XuO+++4JaJwYOScbu3buvuWbVqlXG3Xff3WkuMzPT8Hg8ps4V9itFbW1tqq6uVnp6emAuMjJS6enpqqys7HJPZWVlp/WS5PF4ul0PSL3rta+7cOGCLl26pOHDhwerTAwAve21devWacSIEVq8eHEoysQA0Jtee+utt+R2u5WdnS2n06nJkydrw4YNam9vD1XZ6Id602tpaWmqrq4O3GJXV1ensrIyPfzwwyGpGdbQV7nAdCjq6/v8zp49q/b2djmdzk57nE6nfD5fl8fz+Xym1gNS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igAAAABYGqEIAAAAgKURigAAAABYGqEIAAAAgKURigAAAABYGqEIAAAAgKURigAAAABYGqEIAAAAgKURigAAAABYGqEIAAAAgKURigAAAABYGqEIAAAAgKURigAAAABYGqEIAAAAgKURigAAAABYGqEIAAAAgKURigAAAABYGqEIAAAAgKURigAAAABYGqEIAAAAgKURigAAAABYGqEIAAAAgKURigAAAABYGqEIAAAAgKURigAAAABYGqEIAAAAgKURigAAAABYGqEIAAAAgKURigAAAABYGqEIAAAAgKURigAAAABYGqEIAAAAgKURigAAAABYGqEIAAAAgKURigAAAABYWkihqLi4WJMnT1ZsbKzS0tJUW1t70/UHDhzQrFmzFBsbq3nz5qmysjKkYgEAAABgoJkOReXl5fL5fMrPz1d9fb0SExPl9Xp1/vz5XtcfP35cK1eu1Jo1a3Ty5EllZmYqMzNTp06duuXiAQAAAOBW2QzDMMxsSEtL0wMPPKB33nlHktTd3S23263nnntOmzdvvmF9VlaW2tvb9emnnwbnFixYoKSkJJWUlPTrnIFAQE6nU21tbXI4HGbKBQAAADCMhCMbjDCzuLOzU3V1dcrNzQ3ORUVFKSMjQzU1Nb3uqampkc/n6zHn9Xp1+PDhPs/T0dGhjo6O4M9tbW2Sfv8PAAAAAMC6/sgEJq/t3JSpUHTx4kV1dXXJ5XL1mHe5XDp9+nSve/x+f6/r/X5/n+cpKCjQK6+8csO82+02Uy4AAACAYernn3+W0+kckGOZCkWRkpub2+PqUmtrqyZNmqSmpqYBe+FAbwKBgNxut5qbm7lVE2FFryFS6DVECr2GSGlra9Pdd9+tcePGDdgxTYWiuLg4RUdHq6Wlpcd8S0uL4uPje90THx9var0k2e122e32G+adTie/ZIgIh8NBryEi6DVECr2GSKHXEClRUQP37UKmjhQTE6OUlBRVV1cH57q7u1VdXS2Px9PrHo/H02O9JFVVVfW5HgAAAAAiyfTtcz6fT6tWrVJqaqrmz5+voqIitbe3a/Xq1ZKk7OxsTZw4UQUFBZKk559/XosWLVJhYaGWLVumsrIynThxQrt27RrYVwIAAAAAITAdirKysnThwgXl5eXJ7/crKSlJR44cCT5MoampqcelrPT0dO3fv18vv/yytmzZounTp+vw4cOa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pk6dqtbW1iF74UB/rv6fB65KItzoNUQKvYZIodcQKVfvIps4ceKQHdNUKIoUm80mm812zbzD4eCXDBERFxdHryEi6DVECr2GSKHXECnR0UP3IG1TR4qPj1dMTIza29v7zLe3tyshIaHfPQkJCabWAwAAAEAkmQpFsbGxSktLU11dXXAuEAiorq5Obre73z1ut7vPekmqra0dcD0AAAAARJLp2+e8Xq/y8/OVnp6ujIwMlZWVqaurS8uXL5ck5eXlacqUKSopKZEkPffcc1qwYIFKS0u1aNEiVVVV6ciRI9q2bdugz2mz2VRcXNzvLXXAUKLXECn0GiKFXkOk0GuIlHD0mulHckvSm2++qS1btsjn8yklJUV//OMflZmZKUlauHChkpKStGvXruD63bt365VXXtGpU6d011136Xe/+50ef/zxIXsRAAAAABCqkEIRAAAAAIwWQ/fIBgAAAAAYgQhFAAAAACyNUAQAAADA0ghFAAAAACztpglF5eXlSkpKkt1uV2ZmphoaGq67fvfu3Zo5c6bsdrvmzp2rmpqaCFWKkc5Mr1VWVmr+/PmaMGGCJkyYoOzs7F/sTeAqs+9rV1VVVSkqKko5OTnhLRCjhtle6+joUEFBgSZPniybzaa7776bv0cxKGZ7raysTDNmzNC4cePkcrm0Zs0a/fjjjxGqFiPR559/rieeeEKJiYmKiorSvn37fnHPwYMHdd9998lms2n69Ol9noI9WDdFKKqurpbX61VxcbGampqUnJwsj8ejs2fP9rv+8OHDWrp0qVasWKGjR48qJydHOTk5OnbsWIQrx0hjttcOHjyopUuX6rPPPlN9fb1cLpceffRRffvttxGuHCON2V676tSpU3rhhRc0f/78CFWKkc5sr/X09OiRRx7RqVOntGfPHp08eVKVlZWaMmVKhCvHSGO219577z2tW7dOxcXFOn78uHbs2KHq6mq99NJLEa4cI0lXV5eSk5NVXl4+qPVff/21Fi1apIceekjNzc16/vnntXLlSn366afmTmzcBDIyMoyCgoLgz729vUZiYqJRUlLS7/olS5YYixYt6jOXmZlpPP3002GtEyOf2V77uStXrhjjx4833nnnnXCViFEilF67cuWKkZWVZWzfvt3Iz883Fi9eHIFKMdKZ7bW33nrLuPPOO42enp5IlYhRwmyvFRQUGA8//HCfOa/XazzwwANhrROjhyRj7969112zdu1a45577ukzl5uba3g8HlPnGvYrRT09PWpsbFR2dnZwLjo6WtnZ2aqvr+93T319fZ/1kuTxeAZcD0ih9drPXbp0SZcvX9bEiRPDVSZGgVB7bcOGDZo0aZJWrFgRiTIxCoTSax999JHcbrcKCgrkdDo1Z84cbdq0Sb29vZEqGyNQKL2WlZWlxsbG4C12LS0tqqmp0eOPPx6RmmENQ5ULTIeiob7P7/z58+rt7ZXT6eyzx+l0yufz9Xs8n89naj0ghdZrP/fiiy8qMTHxml8+4J+F0muHDh3Sjh07VFlZGYkSMUqE0mstLS3as2ePent7VVNTo/Xr16u0tFSvvfZaJErGCBVKrz355JPasGGDHnzwQY0dO1bTpk3TwoULuX0OQ2qgXOD3+/XDDz8M+jimQ9Gw3ecHDLPNmzerqqpKe/fuld1uH+5yMIpcuHBBy5YtU2VlpeLj44e7HIxygUBAkyZN0rZt25SWlqbc3Fy9/PLLqqioGO7SMMocPHhQmzZt0tatW9XU1KQPPvhA+/fv18aNG4e7NOAaY8xueOyxx/TYY48Nen1FRYXuuOMOlZaWSpJmzZqlQ4cO6fe//708Ho/i4+MVExOj9vb24J7u7m61tbXp1ltvld/vVyAQ0N///nfdeuutioqK0qRJk3T69Gn5/f7gntbWVt1222195oB/Fhsbq+joaH399de65557gvP/3GsD+eMf/6gtW7boww8/VFJSEn2G6zLba3/5y1906tQp/cu//EtwLhAISJJiYmLU2NioO++8MzLFY0QJ5X3ttttu09ixY9XV1RWcmzp1qnw+n86fP6/Y2NiI1I6RJZReKyws1JIlS7RkyRJJP/XZ+vXr9e///u969tlnFR097J/iwAhw6dKla/rLMAxduHBBiYmJSkhI6JMjJKm9vV1xcXEaN27c4E9k8vNOfWgQH36aP3++8dxzz/WZ27lzpxEXFxf8OSMjw1i9enXw56KiIkMSg8FgMBgMBoPBYPQ72trajLVr1xpz5szpkzWWLl1q+kELpq8UmfVL9/mNGzdOXq9X+fn5Sk9PV0ZGhr799ls5HA4dOXJEkyZN0r/+679q7969amtrU1xcXLhLBgAAAHCT8vv9crlcGj9+vJ555hm9+eabWrt2rX7961/rz3/+s95//33t37/f1DHDHooGIzc3V+fOnVNRUZF8Pp9SUlL06aefavr06ZIUfP59XFwcoQgAAACAoqKidMcdd2j//v1as2aN/vCHP+hXv/qVtm/fLo/HY+pYYQ9Fg73Pb/Xq1Vq9enW/x6ipqZHD4QhrnQAAAABGnoULF+ro0aM3dIywf8LN7Xarrq6uz1xtba3cbne4Tw0AAAAAv8h0KLp48aKam5vV3Nws6adHbjc3N6u1tVXST08aycvLC65/5pln1NLSorVr1+rEiRPaunWr3n//fa1Zs2ZoXgEAAAAA3ADToejIkSNKTU1VamqqJMnr9So1NVVFRUWSpDNnzgQDkqTgfX61tbVKTk5WaWlpSPf5AQAAAEA4RP3no7Vvan6/Xw6HQ52dnTxoAQAAALCwcGQDvjULAAAAgKURigAAAABYGqEIAAAAgKURigAAAABYGqEIAAAAgKURigAAAABYGqEIAAAAgKURigAAAABYGqEIAAAAgKURigAAAABYGqEIAAAAgKURigAAAABYGqEIAAAAgKURigAAAABYGqEIAAAAgKURigAAAABYGqEIAAAAgKURigAAAABYGqEIAAAAgKURigAAAABYGqEIAAAAgKURigAAAABYGqEIAAAAgKURigAAAABYGqEIAAAAgKURigAAAABYGqEIAAAAgKURigAAAABYGqEIAAAAgKURigAAAABYGqEIAAAAgKURigAAAABYGqEIAAAAgKURigAAAABYGqEIAAAAgKURigAAAABYGqEIAAAAgKWFFIrKy8uVlJQku92uzMxMNTQ0DLh2165dioqK6jPsdnvIBQMAAADAUDIdiqqrq+X1elVcXKympiYlJyfL4/Ho7NmzA+6Ji4vTmTNnguP06dM3VDQAAAAADBXToeiNN97QqlWrtHz5cs2ePVsVFRW65ZZbtHPnzgH3REVFKSEhITicTud1z9Hd3S2/399nAAAAAEA4mApFPT09amxsVHZ29j8OEB2t7Oxs1dfXD7jv4sWLmjp1qlwulxYvXqwvv/zyuucpKSmRw+EIDpfLZaZMAAAAABg0U6Ho/Pnz6u3tveZKj9PplM/n63fPjBkztHPnTn344Yd69913FQgElJWVpW+++WbA8xQWFqqzszM42trazJQJAAAAAIM2JtwncLvdcrvdwZ+zsrI0a9Ysvf3229q4cWO/e2w2m2w2W7hLAwAAAABzV4ri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tGiRHnroITU3N+v555/XypUr9emnn5o7sXETyMjIMAoKCoI/9/b2GomJiUZJSUm/65csWWIsWrSoz1xmZqbx9NNPh7VOjHxme+3nrly5YowfP9545513wlUiRolQeu3KlStGVlaWsX37diM/P99YvHhxBCrFSGe219566y3jzjvvNHp6eiJVIkYJs71WUFBgPPzww33mvF6v8cADD4S1Towekoy9e/ded83atWuNe+65p89cbm6u4fF4TJ1r2K8U9fT0qLGxUdnZ2cG56OhoZWdnq76+vt899fX1fdZLksfjGXA9IIXWaz936dIlXb58WRMnTgxXmRgFQu21DRs2aNKkSVqxYkUkysQoEEqvffTRR3K73SooKJDT6dScOXO0adMm9fb2RqpsjECh9FpWVpYaGxuDt9i1tLSopqZGjz/+eERqhjUMVS4wHYqG+j6/8+fPq7e3V06ns88ep9Mpn8/X7/F8Pp+p9YAUWq/93IsvvqjExMRrfvmAfxZKrx06dEg7duxQZWVlJErEKBFKr7W0tGjPnj3q7e1VTU2N1q9fr9LSUr322muRKBkjVCi99uSTT2rDhg168MEHNXbsWE2bNk0LFy7k9jkMqYFygd/v1w8//DDo45gORcN2nx8wzDZv3qyqqirt3btXdrt9uMvBKHLhwgUtW7ZMlZWVio+PH+5yMMoFAgFNmjRJ27ZtU1pamnJzc/Xyyy+roqJiuEvDKHPw4EFt2rRJW7duVVNTkz744APt379fGzduHO7SgGuMMbvhscce02OPPTbo9RUVFbrjjjtUWloqSZo1a5YOHTqk3//+9/J4PIqPj1dMTIza29v77Gtvb1dCQkK/x0xISDC1HpAUUq9d9frrr2vz5s3605/+pHvvvTecZWIUMNtrf/vb33Tq1Ck98cQTwblAICBJGjNmjE6ePKlp06aFt2iMSKG8r02ePFljx45VTExMcG7WrFny+Xzq6elRbGxsWGvGyBRKr61fv17Lli3TypUrJUlz585VV1eXnnrqKb388suKjh72T3FgFBgoF8TFxWncuHGDPo7pUGTWQPf5Pf/885Kk2NhYpaWlqa6uLvj42R9++EG1tbV66qmn5Pf7FQgE9Pe//1233nqroqKilJ6ergMHDujXv/518JiffPKJ0tLS5Pf7w/2SMIKlpKTok08+0cMPPyzpp394/nOv9aesrEyvv/669u7dq7vvvpsew6CY6bXExMRr7n3euHGjLl68qN/+9rdyOBz0HQZk9n0tPT1du3fvVkdHR/AfpX/5y1/kdDr1448/8rhkDMhsr124cEGXL1/u82fd3d0yDEOdnZ19gjkwkEuXLl3TX4Zh6MKFC0pMTJTb7b7mKwVqa2vldrvNncjcMyD60iCeCHHXXXcZmzZt6jO3f/9+Q5Jx6dIlwzAMo6qqyrDZbMauXbuMv/71r8Z9991nSGIwGAwGg8FgMBiMfkdbW5vR0tJi3HLLLcZvfvMb4/jx40Z5ebkRExNjHDhwwFSuCfuVosHIzc3VuXPnVFRUJJ/Pp3vvvVd1dXVKT0+XJD3yyCNqaGhQW1ub4uLihrlaAAAAAMPF7/fL5XJp/Pjxcjgc2r9/v9asWaM//OEP+tWvfqXt27fL4/GYOmbYQ9Fg7/NbvXq1Vq9e3e8xamtr5XA4FBcXRygCAAAAoKioKEnSwoULdfTo0Rs6Vtg/4eZ2u1VXV9dnLqT7/AAAAAAgDEyHoosXL6q5uVnNzc2SfnrkdnNzs1pbWyVJhYWFysvLC65/5pln1NLSorVr1+rEiRPaunWr3n//fa1Zs2ZoXgEAAAAA3ADToejIkSNKTU1VamqqJMnr9So1NVVFRUWSpDNnzgQDkiTdcccd2r9/v2pra5WcnKzS0tKQ7vMDAAAAgHCI+s+nyN3U/H6/HA6HOjs7+UwRAAAAYGHhyAZ8axYAAAAASyMUAQAAALA0QhEAAAAASyMUAQAAALA0QhEAAAAASyMUAQAAALA0QhEAAAAASyMUAQAAALA0QhEAAAAASyMUAQAAALA0QhEAAAAASyMUAQAAALA0QhEAAAAASyMUAQAAALA0QhEAAAAASyMUAQAAALA0QhEAAAAASyMUAQAAALA0QhEAAAAASyMUAQAAALA0QhEAAAAASyMUAQAAALA0QhEAAAAASyMUAQAAALA0QhEAAAAASyMUAQAAALA0QhEAAAAASyMUAQAAALA0QhEAAAAASyMUAQAAALA0QhEAAAAASyMUAQAAALA0QhEAAAAASyMUAQAAALA0QhEAAAAASyMUAQAAALA0QhEAAAAASwspFJWXlyspKUl2u12ZmZlqaGgYcO2uXbsUFRXVZ9jt9pALBgAAAIChZDoUVVdXy+v1qri4WE1NTUpOTpbH49HZs2cH3BMXF6czZ84Ex+nTp2+oaAAAAAAYKqZD0RtvvKFVq1Zp+fLlmj17tioqKnTLLbdo586dA+6JiopSQkJCcDidzuueo7u7W36/v88AAAAAgHAwFYp6enrU2Nio7OzsfxwgOlrZ2dmqr68fcN/Fixc1depUuVwuLV68WF9++eV1z1NSUiKHwxEcLpfLTJkAAAAAMGimQtH58+fV29t7zZUep9Mpn8/X754ZM2Zo586d+vDDD/Xuu+8qEAgoKytL33zzzYDnKSwsVGdnZ3C0tbWZKRMAAAAABm1MuE/gdrvldruDP2dlZWnWrFl6++23tXHjxn732Gw22Wy2cJcGAAAAAOauFMXHxysmJkbt7e195tvb25WQkDCoY4wdO1apqan66quvzJwaAAAAAMLCVCiKjY1VWlqa6urqgnOBQEB1dXV9rgZdT29vr7744gtNnjzZXKUAAAAAEAamb5/zer3Kz89Xenq6MjIyVFZWpq6uLi1fvlySlJeXpylTpqikpESStGHDBs2bN0/Tp09XR0eHtmzZotOnT2vlypVD+0oAAAAAIASmQ1Fubq7OnTunoqIi+Xw+paSk6MCBA8GHL7S2tio6+h8XoL7//nutWrVKPp9PEyZMUFpamg4fPqzZs2cP3asAAAAAgBBFGYZhDHcRv8Tv98vhcKizs1NxcXHDXQ4AAACAYRKObGD6y1sBAAAAYDQhFAEAAACwNEIRAAAAAEsjFAEAAACwNEIRAAAAAEsjFAEAAACwNEIRAAAAAEsjFAEAAACwNEIRAAAAAEsjFAEAAACwNEIRAAAAAEsjFAEAAACwNEIRAAAAAEsjFAEAAACwNEIRAAAAAEsjFAEAAACwNEIRAAAAAEsjFAEAAACwNEIRAAAAAEsjFAEAAACwNEIRAAAAAEsjFAEAAACwNEIRAAAAAEsjFAEAAACwNEIRAAAAAEsjFAEAAACwNEIRAAAAAEsjFAEAAACwNEIRAAAAAEsjFAEAAACwNEIRAAAAAEsjFAEAAACwNEIRAAAAAEsjFAEAAACwNEIRAAAAAEsjFAEAAACwtJBCUXl5uZKSkmS325WZmamGhobrrt+9e7dmzpwpu92uuXPnqqamJqRiAQAAAGComQ5F1dXV8nq9Ki4uVlNTk5KTk+XxeHT27Nl+1x8+fFhLly7VihUrdPToUeXk5CgnJ0fHjh274eIBAAAA4EZFGYZhmNmQmZmp+++/X2+++aYkKRAIyOVy6dlnn9W6deuuWZ+bm6uuri59/PHHwbl58+YpJSVFFRUVgzqn3++Xw+FQZ2en4uLizJQLAAAAYBQJRzYYY2ZxT0+PGhsbVVhYGJyLjo5Wdna26uvr+91TX18vr9fbZ87j8Wjfvn0Dnqe7u1vd3d3Bnzs7OyX99B8AAAAAgHVdzQQmr+1cl6lQdP78efX29srpdPaZdzqdOnHiRL97fD5fv+t9Pt+A5ykpKdGrr756zbzL5TJTLgAAAIBR6rvvvpPD4RiSY5kKRZFSWFjY5+pSR0eHpk6dqtbW1iF74UB//H6/XC6X2trauFUTYUWvIVLoNUQKvYZI6ezs1O23366JEycO2TFNhaL4+HjFxMSovb29z3x7e7sSEhL63ZOQkGBqvSTZbDbZbLZr5h0OB79kiIi4uDh6DRFBryFS6DVECr2GSImOHrpvFzJ1pNjYWKWlpamuri44FwgEVFdXJ7fb3e8et9vdZ70k1dbWDrgeAAAAACLJ9O1zXq9X+fn5Sk9PV0ZGhsrKytTV1aXly5dLkvLy8jRlyhSVlJRIkp577jktWLBApaWlWrRokaqqqnTkyBFt27ZtaF8JAAAAAITAdCjKzc3VuXPnVFRUJJ/Pp5SUFB04cCD4MIXW1tY+l7KysrL03nvv6ZVXXtFLL72ku+66S/v27dOcOXMGfU6bzabi4uJ+b6kDhhK9hkih1xAp9BoihV5DpISj10x/TxEAAAAAjCZD9+kkAAAAABiBCEUAAAAALI1QBAAAAMDSCEUAAAAALI1QBAAAAMDSbppQVF5erqSkJNntdmVmZqqhoeG663fv3q2ZM2fKbrdr7ty5qqmpiVClGOnM9FplZaXmz5+vCRMmaMKECcrOzv7F3gSuMvu+dlVVVZWioqKUk5MT3gIxapjttY6ODhUUFGjy5Mmy2Wy6++67+XsUg2K218rKyjRjxgyNGzdOLpdLa9as0Y8//hihajESff7553riiSeUmJioqKgo7du37xf3HDx4UPfdd59sNpumT5+uXbt2mT7vTRGKqqur5fV6VVxcrKamJiUnJ8vj8ejs2bP9rj98+LCWLl2qFStW6OjRo8rJyVFOTo6OHTsW4cox0pjttYMHD2rp0qX67LPPVF9fL5fLpUcffVTffvtthCvHSGO21646deqUXnjhBc2fPz9ClWKkM9trPT09euSRR3Tq1Cnt2bNHJ0+eVGVlpaZMmRLhyjHSmO219957T+vWrVNxcbGOHz+uHTt2qLq6Wi+99FKEK8dI0tXVpeTkZJWXlw9q/ddff61FixbpoYceUnNzs55//nmtXLlSn376qbkTGzeBjIwMo6CgIPhzb2+vkZiYaJSUlPS7fsmSJcaiRYv6zGVmZhpPP/10WOvEyGe2137uypUrxvjx44133nknXCVilAil165cuWJkZWUZ27dvN/Lz843FixdHoFKMdGZ77a233jLuvPNOo6enJ1IlYpQw22sFBQXGww8/3GfO6/UaDzzwQFjrxOghydi7d+9116xdu9a45557+szl5uYaHo/H1LmG/UpRT0+PGhsblZ2dHZyLjo5Wdna26uvr+91TX1/fZ70keTyeAdcDUmi99nOXLl3S5cuXNXHixHCViVEg1F7bsGGDJk2apBUrVkSiTIwCofTaRx99JLfbrYKCAjmdTs2ZM0ebNm1Sb29vpMrGCBRKr2VlZamxsTF4i11LS4tqamr0+OOPR6RmWMNQ5YIxQ1lUKM6fP6/e3l45nc4+806nUydOnOh3j8/n63e9z+cLW50Y+ULptZ978cUXlZiYeM0vH/DPQum1Q4cOaceOHWpubo5AhRgtQum1lpYW/fnPf9Z/+2//TTU1Nfrqq6/0b//2b7p8+bKKi4sjUTZGoFB67cknn9T58+f14IMPyjAMXblyRc888wy3z2FIDZQL/H6/fvjhB40bN25Qxxn2K0XASLF582ZVVVVp7969stvtw10ORpELFy5o2bJlqqysVHx8/HCXg1EuEAho0qRJ2rZtm9LS0pSbm6uXX35ZFRUVw10aRpmDBw9q06ZN2rp1q5qamvTBBx9o//792rhx43CXBlxj2K8UxcfHKyYmRu3t7X3m29vblZCQ0O+ehIQEU+sBKbReu+r111/X5s2b9ac//Un33ntvOMvEKGC21/72t7/p1KlTeuKJJ4JzgUBAkjRmzBidPHlS06ZNC2/RGJFCeV+bPHmyxo4dq5iYmODcrFmz5PP51NPTo9jY2LDWjJEplF5bv369li1bppUrV0qS5s6dq66uLj311FN6+eWXFR3N/5vHjRsoF8TFxQ36KpF0E1wpio2NVVpamurq6oJzgUBAdXV1crvd/e5xu9191ktSbW3tgOsBKbRek6Tf/e532rhxow4cOKD09PRIlIoRzmyvzZw5U1988YWam5uD47/+1/8afJKOy+WKZPkYQUJ5X3vggQf01VdfBYO3JP2///f/NHnyZAIRBhRKr126dOma4HM1jP/0GXrgxg1ZLjD3DIjwqKqqMmw2m7Fr1y7jr3/9q/HUU08Z/+W//BfD5/MZhmEYy5YtM9atWxdc/3/+z/8xxowZY7z++uvG8ePHjeLiYmPs2LHGF198MVwvASOE2V7bvHmzERsba+zZs8c4c+ZMcFy4cGG4XgJGCLO99nM8fQ6DZbbXWltbjfHjxxurV682Tp48aXz88cfGpEmTjNdee224XgJGCLO9VlxcbIwfP974X//rfxktLS3G//7f/9uYNm2asWTJkuF6CRgBLly4YBw9etQ4evSoIcl44403jKNHjxqnT582DMMw1q1bZyxbtiy4vqWlxbjllluM3/zmN8bx48eN8vJyIyYmxjhw4ICp894UocgwDOM//uM/jNtvv92IjY01MjIyjP/7f/9v8M8WLFhg5Ofn91n//vvvG3fffbcRGxtr3HPPPcb+/fsjXDFGKjO9NnXqVEPSNaO4uDjyhWPEMfu+9s8IRTDDbK8dPnzYyMzMNGw2m3HnnXca/+N//A/jypUrEa4aI5GZXrt8+bLx3//7fzemTZtm2O12w+VyGf/2b/9mfP/995EvHCPGZ5991u+/va72Vn5+vrFgwYJr9qSkpBixsbHGnXfeafzP//k/TZ83yjC4fgkAAADAuob9M0UAAAAAMJwIRQAAAAAsjVAEAAAAwNIIRQAAAAAsjVAEAAAAwNIIRQAAAAAsjVAEAAAAwNIIRQAAAAAsjVAEAAAAwNIIRQAAAAAsjVAEAAAAwNL+P3eaPZHqIXWdAAAAAElFTkSuQmCC\n", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "merge = merge_fragments(remaining_fragments, atoms.cell, debug=debug)" - ] - }, - { - "cell_type": "code", - "execution_count": 460, - "id": "dbc9eb21-2e03-47b8-a631-a97f8bee64a3", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[1, 8, 9, 10, 11, 51, 52, 73, 74, 75, 76, 77, 78, 79, 80, 153, 154, 155, 156]" - ] - }, - "execution_count": 460, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "newcell.refmoleclist[0].get_parent_indices(\"cell\")" - ] - }, - { - "cell_type": "code", - "execution_count": 468, - "id": "754d835d-083b-436b-9c25-d6c2611ce179", - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[1, 8, 73, 74, 9, 75, 76, 51, 153, 154, 10, 11, 52]\n", - "yes\n", - "[1, 8, 73, 74, 9, 75, 76, 51, 153, 154, 77, 80, 155]\n", - "yes\n", - "[1, 8, 73, 74, 9, 75, 76, 51, 153, 154, 78, 79, 156]\n", - "yes\n" - ] - }, - { - "data": { - "image/png": "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gyXnKJo2bVq89tprMW/evGhsbIwJEybEypUruz58YdOmTd2uDF1zzTWRl5cX11xzTbzyyivxwQ9+MKZMmRLf+c53+u5ZAAAA9FJeNgRew9bS0hIlJSXR3NwcxcXFgz0OAAAwSPqjDfr90+cAAAD2ZaIIAABImigCAACSJooAAICkiSIAACBpoggAAEiaKAIAAJImigAAgKSJIgAAIGmiCAAASJooAgAAkiaKAACApIkiAAAgaaIIAABImigCAACSJooAAICkiSIAACBpoggAAEiaKAIAAJImigAAgKSJIgAAIGmiCAAASJooAgAAkiaKAACApIkiAAAgaaIIAABImigCAACSJooAAICkiSIAACBpoggAAEiaKAIAAJImigAAgKSJIgAAIGmiCAAASJooAgAAkiaKAACApIkiAAAgaaIIAABImigCAACSJooAAICkiSIAACBpoggAAEiaKAIAAJImigAAgKSJIgAAIGmiCAAASJooAgAAkiaKAACApIkiAAAgaaIIAABImigCAACSJooAAICkiSIAACBpoggAAEhar6Jo4cKFMW7cuCgqKoqKiopYvXr1e67ftm1bzJ49O0aPHh2FhYVx1FFHxYoVK3o1MAAAQF8anusJS5cujZqamli0aFFUVFTEggULorq6OjZs2BCjRo3aZX17e3t87nOfi1GjRsUDDzwQY8eOjd/85jdxyCGH9MX8AAAAeyUvy7IslxMqKiripJNOittuuy0iIjo7O6O8vDwuueSSmDNnzi7rFy1aFN/73vdi/fr1ccABB/RqyJaWligpKYnm5uYoLi7u1X0AAABDX3+0QU4vn2tvb481a9ZEVVXVn+4gPz+qqqqioaGhx3MeeuihqKysjNmzZ0dpaWkcd9xxMX/+/Ojo6Njt47S1tUVLS0u3GwAAQH/IKYq2bt0aHR0dUVpa2u14aWlpNDY29njOxo0b44EHHoiOjo5YsWJFXHvttXHLLbfEt7/97d0+Tl1dXZSUlHTdysvLcxkTAABgj/X7p891dnbGqFGj4o477oiJEyfGtGnT4uqrr45Fixbt9py5c+dGc3Nz123z5s39PSYAAJConD5oYeTIkTFs2LBoamrqdrypqSnKysp6PGf06NFxwAEHxLBhw7qOHXPMMdHY2Bjt7e1RUFCwyzmFhYVRWFiYy2gAAAC9ktOVooKCgpg4cWLU19d3Hevs7Iz6+vqorKzs8ZxTTjklXnjhhejs7Ow69vzzz8fo0aN7DCIAAICBlPPL52pqamLx4sXxox/9KJ577rn42te+Fq2trTFr1qyIiJgxY0bMnTu3a/3Xvva1+P3vfx+XXnppPP/887F8+fKYP39+zJ49u++eBQAAQC/l/D1F06ZNi9deey3mzZsXjY2NMWHChFi5cmXXhy9s2rQp8vP/1Frl5eXxyCOPxOWXXx4nnHBCjB07Ni699NK48sor++5ZAAAA9FLO31M0GHxPEQAAELEPfE8RAADA/kYUAQAASRNFAABA0kQRAACQNFEEAAAkTRQBAABJE0UAAEDSRBEAAJA0UQQAACRNFAEAAEkTRQAAQNJEEQAAkDRRBAAAJE0UAQAASRNFAABA0kQRAACQNFEEAAAkTRQBAABJE0UAAEDSRBEAAJA0UQQAACRNFAEAAEkTRQAAQNJEEQAAkDRRBAAAJE0UAQAASRNFAABA0kQRAACQNFEEAAAkTRQBAABJE0UAAEDSRBEAAJA0UQQAACRNFAEAAEkTRQAAQNJEEQAAkDRRBAAAJE0UAQAASRNFAABA0kQRAACQNFEEAAAkTRQBAABJE0UAAEDSRBEAAJA0UQQAACRNFAEAAEkTRQAAQNJEEQAAkDRRBAAAJE0UAQAASRNFAABA0kQRAACQNFEEAAAkTRQBAABJE0UAAEDSehVFCxcujHHjxkVRUVFUVFTE6tWr9+i8JUuWRF5eXkydOrU3DwsAANDnco6ipUuXRk1NTdTW1sbatWtj/PjxUV1dHVu2bHnP815++eW44oor4tRTT+31sAAAAH0t5yi69dZb44ILLohZs2bFJz7xiVi0aFEcdNBBcffdd+/2nI6Ojjj33HPjuuuuiyOOOGKvBgYAAOhLOUVRe3t7rFmzJqqqqv50B/n5UVVVFQ0NDbs97/rrr49Ro0bFeeedt0eP09bWFi0tLd1uAAAA/SGnKNq6dWt0dHREaWlpt+OlpaXR2NjY4zlPPPFE3HXXXbF48eI9fpy6urooKSnpupWXl+cyJgAAwB7r10+f2759e0yfPj0WL14cI0eO3OPz5s6dG83NzV23zZs39+OUAABAyobnsnjkyJExbNiwaGpq6na8qakpysrKdln/4osvxssvvxxTpkzpOtbZ2fnHBx4+PDZs2BBHHnnkLucVFhZGYWFhLqMBAAD0Sk5XigoKCmLixIlRX1/fdayzszPq6+ujsrJyl/VHH310PPPMM7Fu3bqu2xe+8IU4/fTTY926dV4WBwAADLqcrhRFRNTU1MTMmTNj0qRJMXny5FiwYEG0trbGrFmzIiJixowZMXbs2Kirq4uioqI47rjjup1/yCGHRETschwAAGAw5BxF06ZNi9deey3mzZsXjY2NMWHChFi5cmXXhy9s2rQp8vP79a1KAAAAfSYvy7JssId4Py0tLVFSUhLNzc1RXFw82OMAAACDpD/awCUdAAAgaaIIAABImigCAACSJooAAICkiSIAACBpoggAAEiaKAIAAJImigAAgKSJIgAAIGmiCAAASJooAgAAkiaKAACApIkiAAAgaaIIAABImigCAACSJooAAICkiSIAACBpoggAAEiaKAIAAJImigAAgKSJIgAAIGmiCAAASJooAgAAkiaKAACApIkiAAAgaaIIAABImigCAACSJooAAICkiSIAACBpoggAAEiaKAIAAJImigAAgKSJIgAAIGmiCAAASJooAgAAkiaKAACApIkiAAAgaaIIAABImigCAACSJooAAICkiSIAACBpoggAAEiaKAIAAJImigAAgKSJIgAAIGmiCAAASJooAgAAkiaKAACApIkiAAAgaaIIAABImigCAACSJooAAICkiSIAACBpoggAAEhar6Jo4cKFMW7cuCgqKoqKiopYvXr1btcuXrw4Tj311Dj00EPj0EMPjaqqqvdcDwAAMJByjqKlS5dGTU1N1NbWxtq1a2P8+PFRXV0dW7Zs6XH9qlWr4uyzz47HH388Ghoaory8PM4444x45ZVX9np4AACAvZWXZVmWywkVFRVx0kknxW233RYREZ2dnVFeXh6XXHJJzJkz533P7+joiEMPPTRuu+22mDFjxh49ZktLS5SUlERzc3MUFxfnMi4AALAf6Y82yOlKUXt7e6xZsyaqqqr+dAf5+VFVVRUNDQ17dB9vvPFG7NixIw477LDdrmlra4uWlpZuNwAAgP6QUxRt3bo1Ojo6orS0tNvx0tLSaGxs3KP7uPLKK2PMmDHdwurd6urqoqSkpOtWXl6ey5gAAAB7bEA/fe7GG2+MJUuWxLJly6KoqGi36+bOnRvNzc1dt82bNw/glAAAQEqG57J45MiRMWzYsGhqaup2vKmpKcrKyt7z3JtvvjluvPHG+NnPfhYnnHDCe64tLCyMwsLCXEYDAADolZyuFBUUFMTEiROjvr6+61hnZ2fU19dHZWXlbs+76aab4oYbboiVK1fGpEmTej8tAABAH8vpSlFERE1NTcycOTMmTZoUkydPjgULFkRra2vMmjUrIiJmzJgRY8eOjbq6uoiI+O53vxvz5s2Le++9N8aNG9f13qODDz44Dj744D58KgAAALnLOYqmTZsWr732WsybNy8aGxtjwoQJsXLlyq4PX9i0aVPk5//pAtQPfvCDaG9vjy9/+cvd7qe2tja+9a1v7d30AAAAeynn7ykaDL6nCAAAiNgHvqcIAABgfyOKAACApIkiAAAgaaIIAABImigCAACSJooAAICkiSIAACBpoggAAEiaKAIAAJImigAAgKSJIgAAIGmiCAAASJooAgAAkiaKAACApIkiAAAgaaIIAABImigCAACSJooAAICkiSIAACBpoggAAEiaKAIAAJImigAAgKSJIgAAIGmiCAAASJooAgAAkiaKAACApIkiAAAgaaIIAABImigCAACSJooAAICkiSIAACBpoggAAEiaKAIAAJImigAAgKSJIgAAIGmiCAAASJooAgAAkiaKAACApIkiAAAgaaIIAABImigCAACSJooAAICkiSIAACBpoggAAEiaKAIAAJImigAAgKSJIgAAIGmiCAAASJooAgAAkiaKAACApIkiAAAgaaIIAABImigCAACSJooAAICkiSIAACBpvYqihQsXxrhx46KoqCgqKipi9erV77n+/vvvj6OPPjqKiori+OOPjxUrVvRqWAAAgL6WcxQtXbo0ampqora2NtauXRvjx4+P6urq2LJlS4/rn3zyyTj77LPjvPPOi6effjqmTp0aU6dOjWeffXavhwcAANhbeVmWZbmcUFFRESeddFLcdtttERHR2dkZ5eXlcckll8ScOXN2WT9t2rRobW2Nhx9+uOvYpz71qZgwYUIsWrRojx6zpaUlSkpKorm5OYqLi3MZFwAA2I/0RxsMz2Vxe3t7rFmzJubOndt1LD8/P6qqqqKhoaHHcxoaGqKmpqbbserq6njwwQd3+zhtbW3R1tbW9XNzc3NE/PEPAAAASNfbTZDjtZ33lFMUbd26NTo6OqK0tLTb8dLS0li/fn2P5zQ2Nva4vrGxcbePU1dXF9ddd90ux8vLy3MZFwAA2E/9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v/51duGFF2aHHHJI1tjYmGVZlk2fPj2bM2dO1/pf/vKX2fDhw7Obb745e+6557La2trsgAMOyJ555pnBegoMEbnutRtvvDErKCjIHnjggezVV1/tum3fvn2wngJDRK577d18+hx7Kte9tmnTpmzEiBHZ17/+9WzDhg3Zww8/nI0aNSr79re/PVhPgSEi171WW1ubjRgxIvvnf/7nbOPGjdlPf/rT7Mgjj8y+8pWvDNZTYAjYvn179vTTT2dPP/10FhHZrbfemj399NPZb37zmyzLsmzOnDnZ9OnTu9Zv3LgxO+igg7JvfOMb2XPPPZctXLgwGzZsWLZy5cqcHnefiKIsy7Lvf//72eGHH54VFBRkkydPzn71q191/bPTTjstmzlzZrf19913X3bUUUdlBQUF2bHHHpstX758gCdmqMplr334wx/OImKXW21t7cAPzpCT6++1dxJF5CLXvfbkk09mFRUVWWFhYXbEEUdk3/nOd7KdO3cO8NQMRbnstR07dmTf+ta3siOPPDIrKirKysvLs4svvjj7wx/+MPCDM2Q8/vjjPf7d6+29NXPmzOy0007b5ZwJEyZkBQUF2RFHHJH98Ic/zPlx87LM9UsAACBdg/6eIgAAgMEkigAAgKSJIgAAIGmiCAAASJooAgAAkiaKAACApIkiAAAgaaIIAABImigCAACSJooAAICkiSIAACBpoggAAEiaKAIAAJImigAAgKSJIgAAIGmiCAAASJooAgAAkiaKAACApIkiAAAgaaIIAABImigCAACSJooAAICkiSIAACBpoggAAEiaKAIAAJImigAAgKSJIgAAIGmiCAAASJooAgAAkiaKAACApIkiAAAgaaIIAABImigCAACSJooAAICkiSIAACBpoggAAEiaKAIAAJImigAAgKSJIgAAIGk5R9EvfvGLmDJlSowZMyby8vLiwQcffN9zVq1aFZ/85CejsLAwPvrRj8Y999zTi1EBAAD6Xs5R1NraGuPHj4+FCxfu0fqXXnopzjzzzDj99NNj3bp1cdlll8X5558fjzzySM7DAgAA9LW8LMuyXp+clxfLli2LqVOn7nbNlVdeGcuXL49nn32269hZZ50V27Zti5UrV/b2oQEAAPrE8P5+gIaGhqiqqup2rLq6Oi677LLdntPW1hZtbW1dP3d2dsbvf//7+MAHPhB5eXn9NSoAALCPy7Istm/fHmPGjIn8/L75iIR+j6LGxsYoLS3tdqy0tDRaWlrizTffjAMPPHCXc+rq6uK6667r79EAAIAhavPmzfGhD32oT+6r36OoN+bOnRs1NTVdPzc3N8fhhx8emzdvjuLi4kGcDAAAGEwtLS1RXl4eI0aM6LP77PcoKisri6ampm7Hmpqaori4uMerRBERhYWFUVhYuMvx4uJiUQQAAPTp22r6/XuKKisro76+vtuxRx99NCorK/v7oQEAAN5XzlH0+uuvx7p162LdunUR8ceP3F63bl1s2rQpIv740rcZM2Z0rb/oooti48aN8c1vfjPWr18ft99+e9x3331x+eWX980zAAAA2As5R9FTTz0VJ554Ypx44okREVFTUxMnnnhizJs3LyIiXn311a5Aioj4yEc+EsuXL49HH300xo8fH7fcckvceeedUV1d3UdPAQAAoPf26nuKBkpLS0uUlJREc3Oz9xQBAEDC+qMN+v09RQAAAPsyUQQAACRNFAEAAEkTRQAAQNJEEQAAkDRRBAAAJE0UAQAASRNFAABA0kQRAACQNFEEAAAkTRQBAABJE0UAAEDSRBEAAJA0UQQAACRNFAEAAEkTRQAAQNJEEQAAkDRRBAAAJE0UAQAASRNFAABA0kQRAACQNFEEAAAkTRQBAABJE0UAAEDSRBEAAJA0UQQAACRNFAEAAEkTRQAAQNJEEQAAkDRRBAAAJE0UAQAASRNFAABA0kQRAACQNFEEAAAkTRQBAABJE0UAAEDSRBEAAJA0UQQAACRNFAEAAEkTRQAAQNJEEQAAkDRRBAAAJE0UAQAASRNFAABA0kQRAACQNFEEAAAkTRQBAABJE0UAAEDSRBEAAJA0UQQAACRNFAEAAEkTRQAAQNJEEQAAkDRRBAAAJE0UAQAASetVFC1cuDDGjRsXRUVFUVFREatXr37P9QsWLIiPf/zjceCBB0Z5eXlcfvnl8dZbb/VqYAAAgL6UcxQtXbo0ampqora2NtauXRvjx4+P6urq2LJlS4/r77333pgzZ07U1tbGc889F3fddVcsXbo0rrrqqr0eHgAAYG/lHEW33nprXHDBBTFr1qz4xCc+EYsWLYqDDjoo7r777h7XP/nkk3HKKafEOeecE+PGjYszzjgjzj777Pe9ugQAADAQcoqi9vb2WLNmTVRVVf3pDvLzo6qqKhoaGno85+STT441a9Z0RdDGjRtjxYoV8fnPf363j9PW1hYtLS3dbgAAAP1heC6Lt27dGh0dHVFaWtrteGlpaaxfv77Hc84555zYunVrfPrTn44sy2Lnzp1x0UUXvefL5+rq6uK6667LZTQAAIBe6fdPn1u1alXMnz8/br/99li7dm385Cc/ieXLl8cNN9yw23Pmzp0bzc3NXbfNmzf395gAAECicrpSNHLkyBg2bFg0NTV1O97U1BRlZWU9nnPttdfG9OnT4/zzz4+IiOOPPz5aW1vjwgsvjKuvvjry83ftssLCwigsLMxlNAAAgF7J6UpRQUFBTJw4Merr67uOdXZ2Rn19fVRWVvZ4zhtvvLFL+AwbNiwiIrIsy3VeAACAPpXTlaKIiJqampg5c2ZMmjQpJk+eHAsWLIjW1taYNWtWRETMmDEjxo4dG3V1dRERMWXKlLj11lvjxBNPjIqKinjhhRfi2muvjSlTpnTFEQAAwGDJOYqmTZsWr732WsybNy8aGxtjwoQJsXLlyq4PX9i0aVO3K0PXXHNN5OXlxTXXXBOvvPJKfPCDH4wpU6bEd77znb57FgAAAL2Ulw2B17C1tLRESUlJNDc3R3Fx8WCPAwAADJL+aIN+//Q5AACAfZkoAgAAkiaKAACApIkiAAAgaaIIAABImigCAACSJooAAICkiSIAACBpoggAAEiaKAIAAJImigAAgKSJIgAAIGmiCAAASJooAgAAkiaKAACApIkiAAAgaaIIAABImigCAACSJooAAICkiSIAACBpoggAAEiaKAIAAJImigAAgKSJIgAAIGmiCAAASJooAgAAkiaKAACApIkiAAAgaaIIAABImigCAACSJooAAICkiSIAACBpoggAAEiaKAIAAJImigAAgKSJIgAAIGmiCAAASJooAgAAkiaKAACApIkiAAAgaaIIAABImigCAACSJooAAICkiSIAACBpoggAAEiaKAIAAJImigAAgKSJIgAAIGmiCAAASJooAgAAkiaKAACApIkiAAAgaaIIAABImigCAACS1qsoWrhwYYwbNy6KioqioqIiVq9e/Z7rt23bFrNnz47Ro0dHYWFhHHXUUbFixYpeDQwAANCXhud6wtKlS6OmpiYWLVoUFRUVsWDBgqiuro4NGzbEqFGjdlnf3t4en/vc52LUqFHxwAMPxNixY+M3v/lNHHLIIX0xPwAAwF7Jy7Isy+WEioqKOOmkk+K2226LiIjOzs4oLy+PSy65JObMmbPL+kWLFsX3vve9WL9+fRxwwAG9GrKlpSVKSkqiubk5iouLe3UfAADA0NcfbZDTy+fa29tjzZo1UVVV9ac7yM+PqqqqaGho6PGchx56KCorK2P27NlRWloaxx13XMyfPz86Ojr2bnIAAIA+kNPL57Zu3RodHR1RWlra7XhpaWmsX7++x3M2btwYjz32WJx77rmxYsWKeOGFF+Liiy+OHTt2RG1tbY/ntLW1RVtbW9fPLS0tuYwJAACwx/r90+c6Oztj1KhRcccdd8TEiRNj2rRpcfXVV8eiRYt2e05dXV2UlJR03crLy/t7TAAAIFE5RdHIkSNj2LBh0dTU1O14U1NTlJWV9XjO6NGj46ijjophw4Z1HTvmmGOisbEx2tvbezxn7ty50dzc3HXbvHlzLmMCAADssZyiqKCgICZOnBj19fVdxzo7O6O+vj4qKyt7POeUU06JF154ITo7O7uOPf/88zF69OgoKCjo8ZzCwsIoLi7udgMAAOgPOb98rqamJhYvXhw/+tGP4rnnnouvfe1r0draGrNmzYqIiBkzZsTcuXO71n/ta1+L3//+93HppZfG888/H8uXL4/58+fH7Nmz++5ZAAAA9FLO31M0bdq0eO2112LevHnR2NgYEyZMiJUrV3Z9+MKmTZsiP/9PrVVeXh6PPPJIXH755XHCCSfE2LFj49JLL40rr7yy754FAABAL+X8PUWDwfcUAQAAEfvA9xQBAADsb0QRAACQNFEEAAAkTRQBAABJE0UAAEDSRBEAAJA0UQQAACRNFAEAAEkTRQAAQNJEEQAAkDRRBAAAJE0UAQAASRNFAABA0kQRAACQNFEEAAAkTRQBAABJE0UAAEDSRBEAAJA0UQQAACRNFAEAAEkTRQAAQNJEEQAAkDRRBAAAJE0UAQAASRNFAABA0kQRAACQNFEEAAAkTRQBAABJE0UAAEDSRBEAAJA0UQQAACRNFAEAAEkTRQAAQNJEEQAAkDRRBAAAJE0UAQAASRNFAABA0kQRAACQNFEEAAAkTRQBAABJE0UAAEDSRBEAAJA0UQQAACRNFAEAAEkTRQAAQNJEEQAAkDRRBAAAJE0UAQAASRNFAABA0kQRAACQNFEEAAAkTRQBAABJE0UAAEDSRBEAAJA0UQQAACStV1G0cOHCGDduXBQVFUVFRUWsXr16j85bsmRJ5OXlxdSpU3vzsAAAAH0u5yhaunRp1NTURG1tbaxduzbGjx8f1dXVsWXLlvc87+WXX44rrrgiTj311F4PCwAA0NdyjqJbb701Lrjggpg1a1Z84hOfiEWLFsVBBx0Ud999927P6ejoiHPPPTeuu+66OOKII/ZqYAAAgL6UUxS1t7fHmjVroqqq6k93kJ8fVVVV0dDQsNvzrr/++hg1alScd955e/Q4bW1t0dLS0u0GAADQH3KKoq1bt0ZHR0eUlpZ2O15aWhqNjY09nvPEE0/EXXfdFYsXL97jx6mrq4uSkpKuW3l5eS5jAgAA7LF+/fS57du3x/Tp02Px4sUxcuTIPT5v7ty50dzc3HXbvHlzP04JAACkbHgui0eOHBnDhg2LpqambsebmpqirKxsl/UvvvhivPzyyzFlypSuY52dnX984OHDY8OGDXHkkUfucl5hYWEUFhbmMhoAAECv5HSlqKCgICZOnBj19fVdxzo7O6O+vj4qKyt3WX/00UfHM888E+vWreu6feELX4jTTz891q1b52VxAADAoMvpSlFERE1NTcycOTMmTZoUkydPjgULFkRra2vMmjUrIiJmzJgRY8eOjbq6uigqKorjjjuu2/mHHHJIRMQuxwEAAAZDzlE0bdq0eO2112LevHnR2NgYEyZMiJUrV3Z9+MKmTZsiP79f36oEAADQZ/KyLMsGe4j309LSEiUlJdHc3BzFxcWDPQ4AADBI+qMNXNIBAACSJooAAICkiSIAACBpoggAAEiaKAIAAJImigAAgKSJIgAAIGmiCAAASJooAgAAkiaKAACApIkiAAAgaaIIAABImigCAACSJooAAICkiSIAACBpoggAAEiaKAIAAJImigAAgKSJIgAAIGmiCAAASJooAgAAkiaKAACApIkiAAAgaaIIAABImigCAACSJooAAICkiSIAACBpoggAAEiaKAIAAJImigAAgKSJIgAAIGmiCAAASJooAgAAkiaKAACApIkiAAAgaaIIAABImigCAACSJooAAICkiSIAACBpoggAAEiaKAIAAJImigAAgKSJIgAAIGmiCAAASJooAgAAkiaKAACApIkiAAAgaaIIAABImigCAACSJooAAICkiSIAACBpoggAAEiaKAIAAJImigAAgKT1KooW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CAAASJooAgAAkiaKAACApIkiAAAgaaIIAABImigCAACSJooAAICkiSIAACBpoggAAEiaKAIAAJImigAAgKSJIgAAIGmiCAAASJooAgAAkiaKAACApIkiAAAgaaIIAABImigCAACSJooAAICkiSIAACBpoggAAEiaKAIAAJImigAAgKSJIgAAIGmiCAAASJooAgAAkiaKAACApIkiAAAgaaIIAABImigCAACS1qsoWrhwYYwbNy6KioqioqIiVq9e/Z7rFyxYEB//+MfjwAMPjPLy8rj88svjrbfe6tXAAAAAfSnnKFq6dGnU1NREbW1trF27NsaPHx/V1dWxZcuWHtffe++9MWfOnKitrY3nnnsu7rrrrli6dGlcddVVez08AADA3so5im699da44IILYtasWfGJT3wiFi1aFAcddFDcfffdPa5/8skn45RTTolzzjknxo0bF2eccUacffbZ73t1CQAAYCDkFEXt7e2xZs2aqKqq+tMd5OdHVVVVNDQ09HjOySefHGvWrOmKoI0bN8aKFSvi85///G4fp62tLVpaWrrdAAAA+sPwXBZv3bo1Ojo6orS0tNvx0tLSWL9+fY/nnHPOObF169b49Kc/HVmWxc6dO+Oiiy56z5fP1dXVxXXXXZfLaAAAAL3S758+t2rVqpg/f37cfvvtsXbt2vjJT34Sy5cvjxtuuGG358ydOzeam5u7bps3b+7vMQEAgETldKVo5MiRMWzYsGhqaup2vKmpKcrKyno859prr43p06fH+eefHxERxx9/fLS2tsaFF14YV199deTn79plhYWFUVhYmMtoAAAAvZLTlaKCgoKYOHFi1NfXdx3r7OyM+vr6qKys7PGcN954Y5fwGTZsWEREZFmW67wAAAB9KqcrRRERNTU1MXPmzJg0aVJMnjw5FixYEK2trTFr1qyIiJgxY0aMHTs26urqIiJiypQpceutt8aJJ54YFRUV8cILL8S1114bU6ZM6YojAACAwZJzFE2bNi1ee+21mDdvXjQ2NsaECRNi5cqVXR++sGnTpm5Xhq655prIy8uLa665Jl555ZX44Ac/GFOmTInvfOc7ffcsAAAAeikvGwKvYWtpaYmSkpJobm6O4uLiwR4HAAAYJP3RBv3+6XMAAAD7MlEEAAAkTRQBAABJE0UAAEDSRBEAAJA0UQQAACRNFAEAAEkTRQAAQNJEEQAAkDRRBAAAJE0UAQAASRNFAABA0kQRAACQNFEEAAAkTRQBAABJE0UAAEDSRBEAAJA0UQQAACRNFAEAAEkTRQAAQNJEEQAAkDRRBAAAJE0UAQAASRNFAABA0kQRAACQNFEEAAAkTRQBAABJE0UAAEDSRBEAAJA0UQQAACRNFAEAAEkTRQAAQNJEEQAAkDRRBAAAJE0UAQAASRNFAABA0kQRAACQNFEEAAAkTRQBAABJE0UAAEDSRBEAAJA0UQQAACRNFAEAAEkTRQAAQNJEEQAAkDRRBAAAJE0UAQAASRNFAABA0kQRAACQNFEEAAAkTRQBAABJE0UAAEDSRBEAAJA0UQQAACStV1G0cOHCGDduXBQVFUVFRUWsXr36Pddv27YtZs+eHaNHj47CwsI46qijYsWKFb0aGAAAoC8Nz/WEpUuXRk1NTSxatCgqKipiwYIFUV1dHRs2bIhRo0btsr69vT0+97nPxahRo+KBBx6IsWPHxm9+85s45JBD+mJ+AACAvZKXZVmWywkVFRVx0kknxW233RYREZ2dnVFeXh6XXHJJzJkzZ5f1ixYtiu9973uxfv36OOCAA3o1ZEtLS5SUlERzc3MUFxf36j4AAIChrz/aIKeXz7W3t8eaNWuiqqrqT3eQnx9VVVXR0NDQ4zkPPfRQVFZWxuzZs6O0tDSOO+64mD9/fnR0dOzd5AAAAH0gp5fPbd26NTo6OqK0tLTb8dLS0li/fn2P52zcuDEee+yxOPfcc2PFihXxwgsvxMUXXxw7duyI2traHs9pa2uLtra2rp9bWlpyGRMAAGCP9funz3V2dsaoUaPijjvuiIkTJ8a0adPi6quvjkWLFu32nLq6uigpKem6lZeX9/eYAABAonKKopEjR8awYcOiqamp2/GmpqYoKyvr8ZzRo0fHUUcdFcOGDes6dswxx0RjY2O0t7f3eM7cuXOjubm567Z58+ZcxgQAANhjOUVRQUFBTJw4Merr67uOdXZ2Rn19fVRWVvZ4zimnnBIvvPBCdHZ2dh17/vnnY/To0VFQUNDjOYWFhVFcXNztBgAA0B9yfvlcTU1NLF68OH70ox/Fc889F1/72teitbU1Zs2aFRERM2bMiLlz53at/9rXvha///3v49JLL43nn38+li9fHvPnz4/Zs2f33bMAAADopZy/p2jatGnx2muvxbx586KxsTEmTJgQK1eu7PrwhU2bNkV+/p9aq7y8PB555JG4/PLL44QTToixY8fGpZdeGldeeWXfPQsAAIBeyvl7igaD7ykCAAAi9oHvKQIAANjfiCIAACBpoggAAEiaKAIAAJImigAAgKSJIgAAIGmiCAAASJooAgAAkiaKAACApIkiAAAgaaIIAABImigCAACSJooAAICkiSIAACBpoggAAEiaKAIAAJImigAAgKSJIgAAIGmiCAAASJooAgAAkiaKAACApIkiAAAgaaIIAABImigCAACSJooAAICkiSIAACBpoggAAEiaKAIAAJImigAAgKSJIgAAIGmiCAAASJooAgAAkiaKAACApIkiAAAgaaIIAABImigCAACSJooAAICkiSIAACBpoggAAEiaKAIAAJImigAAgKSJIgAAIGmiCAAASJooAgAAkiaKAACApIkiAAAgaaIIAABImigCAACSJooAAICkiSIAACBpoggAAEiaKAIAAJImigAAgKSJIgAAIGmiCAAASFqvomjhwoUxbty4KCoqioqKili9evUenbdkyZLIy8uLqVOn9uZhAQAA+lzOUbR06dKoqamJ2traWLt2bYwfPz6qq6tjy5Yt73neyy+/HFdccUWceuqpvR4WAACgr+UcRbfeemtccMEFMWvWrPjEJz4RixYtioMOOijuvvvu3Z7T0dER5557blx33XVxxBFH7NXAAAAAfSmnKGpvb481a9ZEVVXVn+4gPz+qqqqioaFht+ddf/31MWrUqDjvvPP26HHa2tqipaWl2w0AAKA/5BRFW7dujY6OjigtLe12vLS0NBobG3s854knnoi77rorFi9evMePU1dXFyUlJV238vLyXMYEAADYY/366XPbt2+P6dOnx+LFi2PkyJF7fN7cuXOjubm567Z58+Z+nBIAAEjZ8FwWjxw5MoYNGxZNTU3djjc1NUVZWdku61988cV4+eWXY8qUKV3HOjs7//jAw4fHhg0b4sgjj9zlvMLCwigsLMxlNAAAgF7J6UpRQUFBTJw4Merr67uOdXZ2Rn19fVRWVu6y/uijj45nnnkm1q1b13X7whe+EKeffnqsW7fOy+IAAIBBl9OVooiImpqamDlzZkyaNCkmT54cCxYsiNbW1pg1a1ZERMyYMSPGjh0bdXV1UVRUFMcdd1y38w855JCIiF2OAwAADIaco2jatGnx2muvxbx586KxsTEmTJgQK1eu7PrwhU2bNkV+fr++VQkAAKDP5GVZlg32EO+npaUlSkpKorm5OYqLiwd7HAAAYJD0Rxu4pAMAACRNFAEAAEkTRQAAQNJEEQAAkDRRBAAAJE0UAQAASRNFAABA0kQRAACQNFEEAAAkTRQBAABJE0UAAEDSRBEAAJA0UQQAACRNFAEAAEkTRQAAQNJEEQAAkDRRBAAAJE0UAQAASRNFAABA0kQRAACQNFEEAAAkTRQBAABJE0UAAEDSRBEAAJA0UQQAACRNFAEAAEkTRQAAQNJEEQAAkDRRBAAAJE0UAQAASRNFAABA0kQRAACQNFEEAAAkTRQBAABJE0UAAEDSRBEAAJA0UQQAACRNFAEAAEkTRQAAQNJEEQAAkDRRBAAAJE0UAQAASRNFAABA0kQRAACQNFEEAAAkTRQBAABJE0UAAEDSRBEAAJA0UQQAACRNFAEAAEkTRQAAQNJEEQAAkDRRBAAAJE0UAQAASRNFAABA0noVRQsXLoxx48ZFUVFRVFRUxOrVq3e7dvHixXHqqafGoYceGoceemhUVVW953oAAICBlHMULV26NGpqaqK2tjbWrl0b48ePj+rq6tiyZUuP61etWhVnn312PP7449HQ0BDl5eVxxhlnxCuvvLLXwwMAAOytvCzLslxOqKioiJNOOiluu+22iIjo7OyM8vLyuOSSS2LOnDnve35HR0cceuihcdttt8WMGTP26DFbWlqipKQkmpubo7i4OJdxAQCA/Uh/tEFOV4ra29tjzZo1UVVV9ac7yM+PqqqqaGho2KP7eOONN2LHjh1x2GGH7XZNW1tbtLS0dLsBAAD0h5yiaOvWrdHR0RGlpaXdjpeWlkZjY+Me3ceVV14ZY8aM6RZW71ZXVxclJSVdt/Ly8lzGBAAA2GMD+ulzN954YyxZsiSWLVsWRUVFu103d+7caG5u7rpt3rx5AKcEAABSMjyXxSNHjoxhw4ZFU1NTt+NNTU1RVlb2nufefPPNceONN8bPfvazOOGEE95zbWFhYRQWFuYyGgAAQK/kdKWooKAgJk6cGPX19V3HOjs7o76+PiorK3d73k033RQ33HBDrFy5MiZNmtT7aQEAAPpYTleKIiJqampi5syZMWnSpJg8eXIsWLAgWltbY9asWRERMWPGjBg7dmzU1dVFRMR3v/vdmDdvXtx7770xbty4rvceHXzwwXHwwQf34VMBAADIXc5RNG3atHjttddi3rx50djYGBMmTIiVK1d2ffjCpk2bIj//TxegfvCDH0R7e3t8+ctf7nY/tbW18a1vfWvvpgcAANhLOX9P0WDwPUUAAEDEPvA9RQAAAPsbUQQAACRNFAEAAEkTRQAAQNJEEQAAkDRRBAAAJE0UAQAASRNFAABA0kQRAACQNFEEAAAkTRQBAABJE0UAAEDSRBEAAJA0UQQAACRNFAEAAEkTRQAAQNJEEQAAkDRRBAAAJE0UAQAASRNFAABA0kQRAACQNFEEAAAkTRQBAABJE0UAAEDSRBEAAJA0UQQAACRNFAEAAEkTRQAAQNJEEQAAkDRRBAAAJE0UAQAASRNFAABA0kQRAACQNFEEAAAkTRQBAABJE0UAAEDSRBEAAJA0UQQAACRNFAEAAEkTRQAAQNJEEQAAkDRRBAAAJE0UAQAASRNFAABA0kQRAACQNFEEAAAkTRQBAABJE0UAAEDSRBEAAJA0UQQAACRNFAEAAEkTRQAAQNJEEQAAkDRRBAAAJK1XUbRw4cIYN25cFBUVRUVFRaxevfo9199///1x9NFHR1FRURx//PGxYsWKXg0LAADQ13KOoqVLl0ZNTU3U1tbG2rVrY/z48VFdXR1btmzpcf2TTz4ZZ599dpx33nnx9NNPx9SpU2Pq1Knx7LPP7vXwAAAAeysvy7IslxMqKiripJNOittuuy0iIjo7O6O8vDwuueSSmDNnzi7rp02bFq2trfHwww93HfvUpz4VEyZMiEWLFu3RY7a0tERJSUk0NzdHcXFxLuMCAAD7kf5og+G5LG5vb481a9bE3Llzu47l5+dHVVVVNDQ09HhOQ0ND1NTUdDtWXV0dDz744G4fp62tLdra2rp+bm5ujog//gEAAADpersJcry2855yiqKtW7dGR0dHlJaWdjteWloa69ev7/GcxsbGHtc3Njbu9nHq6uriuuuu2+V4eXl5LuMCAAD7qd/97ndRUlLSJ/eVUxQNlLlz53a7urRt27b48Ic/HJs2beqzJw49aWlpifLy8ti8ebOXatKv7DUGir3GQLHXGCjNzc1x+OGHx2GHHdZn95lTFI0cOTKGDRsWTU1N3Y43NTVFWVlZj+eUlZXltD4iorCwMAoLC3c5XlJS4l8yBkRxcbG9xoCw1xgo9hoDxV5joOTn9923C+V0TwUFBTFx4sSor6/vOtbZ2Rn19fVRWVnZ4zmVlZXd1kdEPProo7tdDwAAMJByfvlcTU1NzJw5MyZNmhSTJ0+OBQsWRGtra8yaNSsiImbMmBFjx46Nurq6iIi49NJL47TTTotbbrklzjzzzFiyZEk89dRTcccdd/TtMwEAAOiFnKNo2rRp8dprr8W8efOisbExJkyYECtXruz6MIVNmzZ1u5R18sknx7333hvXXHNNXHXVVfGxj30sHnzwwTjuuOP2+DELCwujtra2x5fUQV+y1xgo9hoDxV5joNhrDJT+2Gs5f08RAADA/qTv3p0EAAAwBIkiAAAgaaIIAABImigCAACSts9E0cKFC2PcuHFRVFQUFRUVsXr16vdcf//998fRRx8dRUVFcfzxx8eKFSsGaFKGulz22uLFi+PUU0+NQw89NA499NCoqqp6370Jb8v199rblixZEnl5eTF16tT+HZD9Rq57bdu2bTF79uwYPXp0FBYWxlFHHeW/o+yRXPfaggUL4uMf/3gceOCBUV5eHpdffnm89dZbAzQtQ9EvfvGLmDJlSowZMyby8vLiwQcffN9zVq1aFZ/85CejsLAwPvrRj8Y999yT8+PuE1G0dOnSqKmpidra2li7dm2MHz8+qqurY8uWLT2uf/LJJ+Pss8+O8847L55++umYOnVqTJ06NZ599tkBnpyhJte9tmrVqjj77LPj8ccfj4aGhigvL48zzjgjXnnllQGenKEm1732tpdffjmuuOKKOPXUUwdoUoa6XPdae3t7fO5zn4uXX345HnjggdiwYUMsXrw4xo4dO8CTM9TkutfuvffemDNnTtTW1sZzzz0Xd911VyxdujSuuuqqAZ6coaS1tTXGjx8fCxcu3KP1L730Upx55plx+umnx7p16+Kyyy6L888/Px555JHcHjjbB0yePDmbPXt2188dHR3ZmDFjsrq6uh7Xf+UrX8nOPPPMbscqKiqyr371q/06J0Nfrnvt3Xbu3JmNGDEi+9GPftRfI7Kf6M1e27lzZ3byySdnd955ZzZz5szsi1/84gBMylCX6177wQ9+kB1xxBFZe3v7QI3IfiLXvTZ79uzsM5/5TLdjNTU12SmnnNKvc7L/iIhs2bJl77nmm9/8Znbsscd2OzZt2rSsuro6p8ca9CtF7e3tsWbNmqiqquo6lp+fH1VVVdHQ0NDjOQ0NDd3WR0RUV1fvdj1E9G6vvdsbb7wRO3bsiMMOO6y/xmQ/0Nu9dv3118eoUaPivPPOG4gx2Q/0Zq899NBDUVlZGbNnz47S0tI47rjjYv78+dHR0TFQYzME9WavnXzyybFmzZqul9ht3LgxVqxYEZ///OcHZGbS0FddMLwvh+qNrVu3RkdHR5SWlnY7XlpaGuvXr+/xnMbGxh7XNzY29tucDH292WvvduWVV8aYMWN2+ZcP3qk3e+2JJ56Iu+66K9atWzcAE7K/6M1e27hxYzz22GNx7rnnxooVK+KFF16Iiy++OHbs2BG1tbUDMTZDUG/22jnnnBNbt26NT3/605FlWezcuTMuuugiL5+jT+2uC1paWuLNN9+MAw88cI/uZ9CvFMFQceONN8aSJUti2bJlUVRUNNjjsB/Zvn17TJ8+PRYvXhwjR44c7HHYz3V2dsaoUaPijjvuiIkTJ8a0adPi6quvjkWLFg32aOxnVq1aFfPnz4/bb7891q5dGz/5yU9i+fLlccMNNwz2aLCLQb9SNHLkyBg2bFg0NTV1O97U1BRlZWU9nlNWVpbTeojo3V5728033xw33nhj/OxnP4sTTjihP8dkP5DrXnvxxRfj5ZdfjilTpnQd6+zsjIiI4cOHx4YNG+LII4/s36EZknrze2306NFxwAEHxLBhw7qOHXPMMdHY2Bjt7e1RUFDQrzMzNPVmr1177bUxffr0OP/88yMi4vjjj4/W1ta48MIL4+qrr478fP9vnr23uy4oLi7e46tEEfvAlaKCgoKYOHFi1NfXdx3r7OyM+vr6qKys7PGcysrKbusjIh599NHdroeI3u21iIibbropbrjhhli5cmVMmjRpIEZliMt1rx199NHxzDPPxLp167puX/jCF7o+Sae8vHwgx2cI6c3vtVNOOSVeeOGFrvCOiHj++edj9OjRgojd6s1ee+ONN3YJn7dj/I/voYe912ddkNtnQPSPJUuWZIWFhdk999yT/frXv84uvPDC7JBDDskaGxuzLMuy6dOnZ3PmzOla/8tf/jIbPnx4dvPNN2fPPfdcVltbmx1wwAHZM888M1hPgSEi17124403ZgUFBdkDDzyQvfrqq1237du3D9ZTYIjIda+9m0+fY0/lutc2bdqUjRgxIvv617+ebdiwIXv44YezUaNGZd/+9rcH6ykwROS612pra7MRI0Zk//zP/5xt3Lgx++lPf5odeeSR2Ve+8pXBegoMAdu3b8+efvrp7Omnn84iIrv11luzp59+OvvNb36TZVmWzZkzJ5s+fXrX+o0bN2YHHXRQ9o1vfCN77rnnsoULF2bDhg3LVq5cmdPj7hNRlGVZ9v3vfz87/PDDs4KCgmzy5MnZr371q65/dtppp2UzZ87stv6+++7LjjrqqKygoCA79thjs+XLlw/wxAxVuey1D3/4w1lE7HKrra0d+MEZcnL9vfZOoohc5LrXnnzyyayioiIrLCzMjjjiiOw73/lOtnPnzgGemqEol722Y8eO7Fvf+lZ25JFHZkVFRVl5eXl28cUXZ3/4wx8GfnCGjMcff7zHv3u9vbdmzpyZnXbaabucM2HChKygoCA74ogjsh/+8Ic5P25elrl+CQAApGvQ31MEAAAwmEQRAACQNFEEAAAkTRQBAABJE0UAAEDSRBEAAJA0UQQAACRNFAEAAEkTRQAAQNJEEQAAkDRRBAAAJE0UAQAASRNFAABA0kQRAACQNFEEAAAkTRQBAABJE0UAAEDSRBEAAJA0UQQAACRNFAEAAEkTRQAAQNJEEQAAkDRRBAAAJE0UAQAASRNFAABA0kQRAACQNFEEAAAkTRQBAABJE0UAAEDSRBEAAJA0UQQAACRNFAEAAEkTRQAAQNJEEQAAkDRRBAAAJE0UAQAASRNFAABA0kQRAACQNFEEAAAkTRQBAABJE0UAAEDSRBEAAJA0UQQAACRt+GAPwNDW2dkZv/3tb2PEiBGRl5c32OMAAOy1LMti+/btMWbMmMjPdw0hBaKIvfLb3/42ysvLB3sMAIA+t3nz5vjQhz402GMwAEQRe2XEiBER8cdfGsXFxYM8DQDA3mtpaYny8vKuv+ew/xNF7JW3XzJXXFwsigCA/Yq3BqTDiyQBAICkiSIAACBpoggAAEiaKAIAAJLmgxYYFA0NDTF37ty44IIL4thjj40JEybEunXr4v/+3/8bEbHLscFc8/bPETHk1uyrf6b+3PfdNfvqn6k/94Fb89RTT8WPf/zj+Id/+Ic45phjAiAJGeyF5ubmLCKy5ubmnM77u7/7uywisojITjvttCzLsuy0007b7bHBXPP2z0Nxzb76Z+rPfd9ds6/+mfpzH9g1EZEdc8wxGaSqt3+/YejKy7Is230ywXtraWmJkpKSaG5uzukjuTs7O2Ps2LFRWVkZ8+bN839w/Z/zfeLPy5/7vvtn6s99YNf8+Mc/jj/84Q/xq1/9KvLzvdKe9PT27zcMXaKIveKXBgCwv/H3m/T43z8MqmeffTaOOeaYePHFFwd7FADeYefOnfHFL34xrr766sEeBaDfiSIGVWdnZ6xfvz7+8i//crBHAeAdhg8fHr/61a/iu9/9bvz+978f7HEA+pUoYlCdcMIJMX369Dj55JMHexQA3uXHP/5xnHDCCfHWW28N9igA/cp7itgrXnMLAOxv/P0mPa4UsU9oaWmJj370o167DrAPmjVrVpxwwgmDPQZAvxFF7BMOPvjg2LZtW9x0003R0tIy2OMA8A6dnZ3xzDPPxJ133jnYowD0i+GDPQBEROTn58fdd98dy5Yti4MOOmiwxwHgHRYvXhyNjY1x+umnD/YoAP3Ce4rYK/31mtudO3fG8OGaHWBf4/czKfCeovR4+Rz7nJNOOimOO+64wR4DgHf5zne+EwcffHA0NjYO9igAfUoUsc/5yEc+Ehs2bIj77rtvsEcB4B3+/M//PNra2mLatGmDPQpAn3L9m33Oj3/84/jgBz8YU6dOHexRAHiHU045Ja699to4++yzB3sUgD7lPUXslf5+ze2WLVti1KhRfX6/AOwdv5/Zn3lPUXq8fI591t/8zd/EmDFjYuvWrYM9CgDv8Nhjj0VZWVnccsstgz0KQJ8QReyz/st/+S/R0dERX/3qVwd7FADe4c///M/j4IMPjuuvv36wRwHoE95TxD7rM5/5TCxevDj+5m/+ZrBHAeAd8vPz41/+5V9izJgxgz0KQJ/wniL2ykC95vbf/u3foqKiot/uH4De2bRpU0REHH744YM8CfQd7ylKj5fPsc+7884741Of+lTcdtttgz0KAO/w1ltvxZFHHhlf+MIXBnsUgL0iioaIurq6OOmkk2LEiBExatSomDp1amzYsKHbmrfeeitmz54dH/jAB+Lggw+OL33pS9HU1PSe95tlWcybNy9Gjx4dBx54YFRVVcV//Md/9OdTydnf/u3fxp/92Z/FzTffPNijAPAORUVFUVVVFf/n//yf+H//7/8N9jgAvSaKhoif//znMXv27PjVr34Vjz76aOzYsSPOOOOMaG1t7Vpz+eWXx//6X/8r7r///vj5z38ev/3tb+Ov/uqv3vN+b7rppvjv//2/x6JFi+Lf/u3f4s/+7M+iuro63nrrrf5+Snts+PDhsWrVqli/fv1gjwLAuyxdujTWrVsXH/rQhwZ7FIBe856iIeq1116LUaNGxc9//vP4//6//y+am5vjgx/8YNx7773x5S9/OSIi1q9fH8ccc0w0NDTEpz71qV3uI8uyGDNmTPz93/99XHHFFRER0dzcHKWlpXHPPffEWWed9b5zDPRrbh966KGYMGGC164D7GN++9vfxr//+7/HF7/4xcEeBfaa9xSlx5WiIaq5uTkiIg477LCIiFizZk3s2LEjqqqqutYcffTRcfjhh0dDQ0OP9/HSSy9FY2Njt3NKSkqioqJit+e0tbVFS0tLt9tAaWxsjC9+8YvxpS99acAeE4A986lPfSr++q//Ol5//fXBHgUgZ6JoCOrs7IzLLrssTjnllDjuuOMi4o/BUFBQEIcccki3taWlpdHY2Njj/bx9vLS0dI/Pqauri5KSkq5beXn5Xj6bPVdWVhaf+cxn4tlnn4033nhjwB4XgPf33/7bf4sdO3bE0qVLB3sUgJz5nqIhaPbs2fHss8/GE088MeCPPXfu3Kipqen6uaWlZUDDaNmyZTF8+PA46KCDBuwxAXh/f/mXfxmvvvpqlJWVDfYoADlzpWiI+frXvx4PP/xwPP74493e1FpWVhbt7e2xbdu2buubmpp2+x+ot4+/+xPq3uucwsLCKC4u7nYbSMXFxXHQQQfFihUr4oc//OGAPjYA762srCwaGxvjyiuvHOxRAHIiioaILMvi61//eixbtiwee+yx+MhHPtLtn0+cODEOOOCAqK+v7zq2YcOG2LRpU1RWVvZ4nx/5yEeirKys2zktLS3xb//2b7s9Z1/xN3/zN3HRRRd5GR3APubv//7v46abbop/+qd/GuxRAPaYKBoiZs+eHf/4j/8Y9957b4wYMSIaGxujsbEx3nzzzYj44wcknHfeeVFTUxOPP/54rFmzJmbNmhWVlZXdPnnu6KOPjmXLlkVERF5eXlx22WXx7W9/Ox566KF45plnYsaMGTFmzJiYOnXqYDzNPfaDH/wgIiJWr149yJMA8E533XVX/Nmf/dmgvMQboLe8p2iIeDsC/vzP/7zb8R/+8Ifxt3/7txER8V//63+N/Pz8+NKXvhRtbW1RXV0dt99+e7f1GzZs6PrkuoiIb37zm9Ha2hoXXnhhbNu2LT796U/HypUro6ioqF+fz96aNm1afOlLX4rhw21hgH1JUVFRbNu2ze9nYEjxPUXslcH+HP9HH300fvSjH8U//uM/DvhjA7B7W7ZsiZkzZ8b/+B//I0aOHDnY40BOBvvvNww8L59jSLvtttvin/7pn+Jf/uVfBnsUAN7hmWeeiZUrV8ZXvvKVwR4F4H2JIoa0f/qnf4oPfvCD8eqrrw72KAC8w2c/+9k47bTToqCgYLBHAXhfXvDLkHbwwQfHli1bBnsMAHqwatWqwR4BYI+4UsR+4Ze//GUce+yxu3xPEwCD6/XXX4/Pfvaz8Q//8A+DPQrAboki9gvNzc3x61//Os4666zBHgWAdygqKopf/epXUVNTEzt37hzscQB6JIrYL3z+85+P//Sf/lN88pOfHOxRAHiH4cOHx8033xwnnniiL9wG9lk+kpu94iMrAYD9jb/fpMeVIvYrv/nNb+JDH/pQ/PCHPxzsUQB4ly9+8Ytx+umnD/YYALsQRexXRo8eHb/73e/i7/7u76Kzs3OwxwHgHbZv3x6rVq2K+vr6wR4FoBsfyc1+paCgIG699dZ4/vnnB3sUAN7lvvvui7POOiuOOeaYwR4FoBvvKWKv7Ouvue3s7Iz8fBdEAfY1fj+zL9vX/35D3/PbiP1SZ2dnfOxjH4vTTjttsEcB4F0uvfTSKCkpibfeemuwRwGICFHEfio/Pz9KS0vjiSeeiH//938f7HEAeIfJkyfH66+/HrNmzRrsUQAiwnuK2I898MADMX/+/Jg4ceJgjwLAO5x77rnx1FNPxeWXXz7YowBEhPcUsZeGymtut27dGiNHjhzsMQB4F7+f2RcNlb/f0He8fI793uc+97k4/PDDo729fbBHAeAdfvzjH8eoUaNi2bJlgz0KkDhRxH7vrLPOijfffDOuvPLKwR4FgHf4q7/6qxg+fHhccsklgz0KkDjvKWK/d95558Wbb74ZF1100WCPAsA7HHzwwXHvvfd67ycw6LyniL0y1F5z+9RTT8WkSZMGewwA3uW5556LsWPHDon/lrD/G2p/v2Hvefkcybj22mvjpJNOin/9138d7FEAeIfGxsY49thj46yzzhrsUYBEuVLEXhlK/ydl27Zt8cEPfjCOP/74WLt27WCPA8A7TJgwIZ599tloaWmJgw46aLDHIXFD6e839A3vKSIZhxxySKxatSoqKioGexQA3uWhhx6KHTt2CCJgUHj5HEk55ZRTYvjw4bF06dJ44403BnscAP7/Dj/88DjyyCPjxRdfjMcee2ywxwESI4pIzlNPPRVnnXVWnHvuuYM9CgDvMnHixJg6dWp0dnYO9ihAQkQRyZk0aVJ84hOfiFWrVvmPLsA+5uqrr47XX389Hn300cEeBUiIKBpCfvGLX8SUKVNizJgxkZeXFw8++GC3f56Xl9fj7Xvf+95u7/Nb3/rWLuuPPvrofn4mg+/xxx+PpqamyM/3rwDAvuQb3/hGbNq0Kaqrqwd7FCAh/kY4hLS2tsb48eNj4cKFPf7zV199tdvt7rvvjry8vPjSl770nvd77LHHdjvviSee6I/x9ymjRo2KgoKCWLp0aTz88MODPQ4A7/ChD30oXnrppbj++usHexQgET59bgj5i7/4i/iLv/iL3f7zsrKybj//z//5P+P000+PI4444j3vd/jw4bucm4LOzs6YOXNmFBUVxe9//3tXjQD2IbNmzYqf//zn8dnPfjZOOeWUwR4H2M/5W+B+qqmpKZYvXx7nnXfe+679j//4jxgzZkwcccQRce6558amTZsGYMLBl5+fH9dee220tbXFhg0bBnscAN7h3nvvjYKCAu8tAgaEL28dovLy8mLZsmUxderUHv/5TTfdFDfeeGP89re/jaKiot3ez7/+67/G66+/Hh//+Mfj1Vdfjeuuuy5eeeWVePbZZ2PEiBG7rG9ra4u2traun1taWqK8vHxIf7lZe3t7FBQUDPYYALyL388MFl/emh5XivZTd999d5x77rnvGUQRf3xJ3l//9V/HCSecENXV1bFixYrYtm1b3HfffT2ur6uri5KSkq5beXl5f4w/oAoKCuJf/uVf4u/+7u8GexQA3qGgoCA2bdoU//k//+dob28f7HGA/Zgo2g/97//9v2PDhg1x/vnn53zuIYccEkcddVS88MILPf7zuXPnRnNzc9dt8+bNezvuPqGuri6+//3vx1NPPTXYowDwDj/96U9j+fLlccEFFwz2KMB+TBTth+66666YOHFijB8/PudzX3/99XjxxRdj9OjRPf7zwsLCKC4u7nbbH/zkJz+JQw45JP7jP/5jsEcB4B3OP//8OO6442LHjh2DPQqwH/Ppc0PI66+/3u0KzksvvRTr1q2Lww47LA4//PCI+ONrYO+///64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TWrUqJF++ukns6MAVQpHigAUW0pKirZt26apU6fq6aefNjsO4BaaNm2qpk2b6ocfflArb2/91+Eo8boOuFzql5WlBjUcih3QUnX9vMow6flual5b1bzsGvNlokZlZ2mut0+RCpi3pJyL3Gz1xIkTWrdundavX6/09HRJyl/vX2WoVq1aioiIUERERP6gFTk5OZKk2Tk5mv3n//6Lf7VqGjx0qMaOHeuWP+4EBATowIEDuu2227Rz506z4wBVBqUIQLG9/vrrWr9+vbp162Z2FMDtbNu6VV3y8kq8vMswdGd2lvJ8PPTRDeVfiP4S2aim3vhbEz389V5dZs/R/UUodS3tdmVmZSktLU0BAQH50/Py8hQXF6dVq1bJy8tLPXr0UJs2bRQWFqYaNWrIMAylpaXpwIED2rFjh1avXq2vvvpKAwYM0OWXX67k5D+GGI+Pj1dubq5SU1OV9+d1T7Vq1VL16tXVtGnTcvsszNSiRQuNGTOmwOcJ4NIoRQCKzW63a926dWbHANzSqbQ01SrFaW7Tc3L0v9w8Lby2mYKrlfxoU0nc2Ly24g+d0uO7jinK01ONLzE0dLc/B4vYv39//gh8GRkZmj17tg4cOKCrr75a11xzTf7pcH+x2WyqWbOmatasqQ4dOuimm27S8uXL9fHHH+unn35S06ZN5ePjo1atWik2NlbvzZyprdu3y/XnwA5/raNdq1YaOXq0RowYUebXNZnp7bffNjsCUOVwTRGAEouNjVWNGjW0e/dus6MAbsPH11eZJbxbxh6XS087szW8bV1FhBbv/kdl5ZleDRTg66l7s7MuOSJdQ5tNbT09tWnDBkl/3JT27bff1rFjx/Twww/rhhtuOK8QFcbPz0+33XabxowZo7179youLk4dOnRQ21atNO7BB9Xw558108tLG/z8tLtaNW3289MH3t7qkJiop594Qs2bNNH8+fNLNIJeZZWenq769evr0UcfNTsKUCVQigCUWLt27ZSRkaFbb73V7CiA22jbsaO2leAmqJL0VHa26vo59FR4/TJOVXQ1HB6a2qex4nLztPQi1wtJfxytGefhoe0//aSjR48qNjZWJ0+e1NixY9W4ceNiv3br1q11//33y+l0auPGjep28qQS/fz0iY+PRjsc6uHhoeZ2u7p6eGiEl5cW+PgoyddX1545o7vvvlv333dfgaNJVZm/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dUBZY//GeihFKBW+NFAaTzzxhDZs2KC1a9eaHQVwa7///rvuv2+0vli+Qv2b1tI97eupe1C1Eg3CcCbXpf8mHte721N14JRTL7z4oh577DF5el56pLucnBylp6fL09NT/v7+DKVdia1evVqjR4/Wpk2bFBgYaHacCsf+jfVw+hwA0+zZs0fffvutlixZYnYUwK3Vr19f//38C82bN0+7VVODPtul65b9qvk/H1VSevYlrznKznPpxyOZ+nv8AfX8z496cu1++QY30taEBD311FNFKkSS5OXlpTp16iggIIBCVMl5eHho//79uu2228yOAlSIir2BAQCc5cMPP9SVV16psLAws6MAbs9ms2nYsGG66667FBcXp+cnT9bE7+IlSTW97Gpft5pa1fFVNS8Pedptcua5lHomVzuOZGrXiTPKMaQ6dpvGeHgq1dOuOT//rL1796pt27YmvzOUh6uvvlq33XabunXrZnYUoEJw+hxKhcPLAFD1nDp1Sh3atFGDI0c0wcNDW1wubXa59LPh0hlJOYYhH5tNNW02dZVN3T081M3DQ53tdnnbbDIMQzc4ndoaEKCfdu1SrVq1zH5LQJli/8Z6OH0OgOneeust1axZUydPnjQ7CmAJ7777rg4fPqz/OBy63stLz3l7a5mvr371q6YDftWUXK269vlVU4Kvnz7w9dWDDofCPTzk/ecpbzabTbO8vJR2/LimT59u8rtBedq7d68CAwP5/xluj1IEwHTNmzdXWlqabr/9drOjAG7PMAzNnD5dt3t4qEkp7gdU327XnXa73p0xQ3l5eWWYEJVJWFiYzpw5oyeffFK5ueUzrDtQGXBNEQDT9e/fX/fff7+GDh1qdhTA7f32229K3L9f/yqDIbCHenpqdkqKdu7cqfbt25dBOlQ2np6eeuedd7R3794iD6gBVEVs3QAqhZkzZ0qSsrKy5OPjY3IawH1t3rxZktSjFEeJ/tLVw0O2P9dJKXJfw4YNy//ffEfDXXH6HIBK49tvv1WNGjX0/vvvmx0FcFspKSnytttVtwxKkb/NpgBPT6WkpJRBMlRmLpdLYWFhuuqqq8yOApQLShGASqNXr17y9PRUdHS02VEAt2W325VnGJe8N1FR5RmG7GVQsFC52e12tWzZUhs3btT69evNjgOUOU6fA1BpOBwOzZ07V3Xr1jU7CuC2mjRpolzD0F7DUNNS3kD1sMulU3l5atKkSRmlQ2X20Ucf6a233lKPHj3MjgKUOe5ThFJhHH+Ul/T0dOXm5qp27dpmRwHcyu+//64GDRpoqsOhwV5eCrPZ5FHCcvRJTo5uzcrS3r171bhx47INikpt//79atSokdkxyg37N9bD8W4AlU5WVpbq1aunG2+80ewogFs4evSopk6dql69eql58+aSpKedTjXJzJT/6dO6/MwZ/dPp1Ili/k76vsulbp06ufXOMc7Xu3dvtWrVSqdPnzY7ClBmOH0OQKXj4+OjHj166LvvvlNSUpIaNmxodiSgSjp9+rSee+65/Btvtm3bVlFRUQoJCZHD4VB2drYOHz6sfXv36smfftIzTqce9/LSRIcj/0atFxKfl6cVTqfef+QR2Up5Gh6qljFjxujbb7/VxIkT9cYbb5gdBygTnD6HUuHwMsrLkSNHtHXrVkVFRZkdBaiStm3bpltuuUUHDhxQZGSkLr/8clWrVu2C8586dUrffvutvv7qK7Xy8NAyb2+1uMAACqcMQz2cTtXs2FHf//CDPDw8yuttoJJauHChBg8e7LaDbLB/Yz2UIpQKXxoobxkZGfrxxx91+eWXmx0FqDK2bNmiq6++Wv7+/rrrrrsUFBRU5GV///13/WfOHOWdOKFvvb3V+pzCk2YYGuB0apvDoR82blTr1q3LOj6qkNWrV+uaa64xO0aZY//Getyz3gNwG+3bt1dkZKScTqfZUYAqITU1Vf3791etWrX04IMPFqsQSVL9+vU1bvx4edaurWuzs3XqrN9OV+fmqlN2trY5HFrx5ZcUIoubMGGC+vXrp48//tjsKECpUYrcyPPPPy+bzVbgcal/sD766CO1bt1aPj4+6tChg5YvX15BaYGimTJlirKysjRnzhyzowBVwtixY3X69Gndc8898vX1LdE6qlevrlH3369ku10jsrL0ltOpHtnZ6nfmjJpGRGjrtm2KiIgo4+Soap599ll5eXlp6tSpZkcBSo1S5GbatWunw4cP5z++++67C867bt06DRkyRKNGjdLWrVs1cOBADRw4UDt27KjAxMDFDR8+XD/++KPuv/9+s6MAld7333+vxYsXa+DAgaU+5ScwMFDXDxigT3Jz9WhOjgL79NFnn32mr775hvsSQdIf5XnLli3czBVugVLkZjw9PRUcHJz/CAwMvOC8b775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369ly5apYcOGZscBAPzJ5XKpV69eevzxx3X77beX++uxf2M9lCKUCl8aAADA3bB/Yz2cPgcA53jggQfUvHlzs2MAAM6xfPly1apVixvNo8xRigDgHD4+PkpMTFRMTIzZUQAAZ2nRooXS0tJ06623mh0FboYhuQHgHK+//rr27NmjW265xewoAICztGjRQo8//rjatWtndhS4Ga4pQqlwzi3cndPplMPhMDsGAOAcubm5stvtstvL/sQn9m+sh9PnAOACpk2bpurVq2vXrl1mRwEAnOXQoUMKCAjQY489ZnYUuAlKEQBcwDXXXKOcnBwNGTLE7CgAgLOEhobK399fb731lk6fPm12HLgBrikCgAto166dYmJiNGDAALOjAADOsXDhQu3Zs0d+fn5mR4Eb4JoilArn3MIqDh06pODg4HI5dx0AUHK5ublKTU1VcHBwma2T/Rvr4V93ALiETZs2qUGDBnr22WfNjgIAOEfDhg3Vq1cvs2OgiqMUAcAldO3aVXXq1NG0adPkcrnMjgMAOEtUVJT279+vFStWmB0FVRjXFAHAJdjtdi1btkw1atTg9DkAqGRmz56tPn36qH///mZHQRXGNUUoFc65hdUcPHhQZ86cUYsWLcyOAgA4i8vl0rp163TFFVeUel3s31gPP3kCQBHl5uaqefPmuu6668yOAgA4R9++fdW7d28dPHjQ7CiogihFAFBEnp6euuWWW7Rnzx7t3LnT7DgAgLO8/PLLcrlceumll8yOgiqI0+dQKhxehtU4nU79/PPP6ty5s9lRAADn2Lhxo3r06FHq9bB/Yz0cKQKAYnA4HOrcubMOHTqkhQsXmh0HAHCWHj16yOVyafr06WZHQRVDKQKAErj66qt111136ciRI2ZHAQCc5R//+IceeughvfLKK2ZHQRVCKQKAEpg1a5YMw9CCBQvMjgIAOMtTTz0lf39/LVmyxOwoqEK4TxEAlMBVV12lI0eOKDAw0OwoAICz2O12JSYm8v2MYuFIEQCUUGBgoI4cOaKHH37Y7CgAgLMEBgbK5XJpwoQJ2r17t9lxUAVQigCgFF588UW99dZbevPNN82OAgA4S2JioqZOnapbb73V7CioAjh9DgBK4Z///Kfmz5+vr776SoGBgWrXrl3+cN0JCQn66aef8qed+7ys5vnruaQqN48Znxefe+X9TPncK+88lfUz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WgcAAACAqq88ukGxTp9zOp3avHmzIiMj/38FdrsiIyMVHx9f6DKfffaZIiIiNHbsWAUFBal9+/Z6+eWXlZeXd8HXyc7OVnp6eoEHAAAAAJSHYpWi1NRU5eXlKSgoqMD0oKAgJScnF7rMb7/9piVLligvL0/Lly/Xc889p9dff11///vfL/g6MTExCggIyH+EhYUVJyYAAAAAFFm5jz7ncrlUr149zZo1S926ddPgwYP17LPPaubMmRdcZsKECUpLS8t/HDhwoLxjAgAAALCoYg20EBgYKA8PD6WkpBSYnpKSouDg4EKXCQkJkZeXlzw8PPKntWnTRsnJyXI6nXI4HOct4+3tLW9v7+JEAwAAAIASKdaRIofDoW7duikuLi5/msvlUlxcnCIiIgpd5vLLL9eePXvkcrnyp/36668KCQkptBABAAAAQEUq9ulz0dHRmj17tubNm6edO3fqgQceUGZmpkaOHClJGjZsmCZMmJA//wMPPKDjx4/rkUce0a+//qovvvhCL7/8ssaOHVt27wIAAAAASqjY9ykaPHiwjh49qkmTJik5OVmdO3fWypUr8wdfSEpKkt3+/10rLCxMq1at0qOPPqqOHTuqfv36euSRR/TUU0+V3bsAAAAAgBIq9n2KzMB9igAAAABIleA+RQAAAADgbihFAAAAACyNUgQAAADA0ihFAAAAACyNUgQAAADA0ihFAAAAACyNUgQAAADA0ihFAAAAACyNUgQAAADA0ihFAAAAACyNUgQAAADA0ihFAAAAACyNUgQAAADA0ihFAAAAACyNUgQAAADA0ihFAAAAACyNUgQAAADA0ihFAAAAACyNUgQAAADA0ihFAAAAACyNUgQAAADA0ihFAAAAACyNUgQAAADA0ihFAAAAACyNUgQAAADA0ihFAAAAACyNUgQAAADA0ihFAAAAACyNUgQAAADA0ihFAAAAACyNUgQAAADA0ihFAAAAACyNUgQAAADA0ihFAAAAACyNUgQAAADA0ihFAAAAACyNUgQAAADA0ihFAAAAACyNUgQAAADA0ihFAAAAACyNUgQAAADA0ihFAAAAACyNUgQAAADA0ihFAAAAACyNUgQAAADA0ihFAAAAACyNUgQAAADA0ihFAAAAACyNUgQAAADA0ihFAAAAACyNUgQAAADA0ihFAAAAACyNUgQAAADA0ihFAAAAACytRKVoxowZaty4sXx8fBQeHq4NGzYUablFixbJZrNp4MCBJXlZAAAAAChzxS5FsbGxio6O1uTJk7VlyxZ16tRJUVFROnLkyEWX27dvnx5//HFdeeWVJQ4LAAAAAGWt2KXojTfe0OjRozVy5Ei1bdtWM2fOlJ+fnz744IMLLpOXl6c777xTU6ZMUdOmTUsVGAAAAADKUrFKkdPp1ObNmxUZGfn/K7DbFRkZqfj4+Asu98ILL6hevXoaNWpUyZMCAAAAQDnwLM7MqampysvLU1BQUIHpQUFB+uWXXwpd5rvvvtP777+vhISEIr9Odna2srOz85+np6cXJyYAAAAAFFm5jj536tQp3X333Zo9e7YCAwOLvFxMTIwCAgLyH2FhYeWYEgAAAICVFetIUWBgoDw8PJSSklJgekpKioKDg8+bPzExUfv27dOAAQPyp7lcrj9e2NNTu3btUrNmzc5bbsKECYqOjs5/np6eTjECAAAAUC6KVYocDoe6deumuLi4/GG1XS6X4uLiNG7cuPPmb926tbZv315g2sSJE3Xq1Cm9+eabFyw63t7e8vb2Lk40AAAAACiRYpUiSYqOjtbw4cPVvXt39ezZU9OmTVNmZqZGjhwpSRo2bJjq16+vmJgY+fj4qH379gWWr1mzpiSdNx0AAAAAzFDsUjR48GAdPXpUkyZNUnJysjp37qyVK1fmD76QlJQku71cL1UCAAAAgDJjMwzDMDvEpaSnpysgIEBpaWny9/c3Ow4AAAAAk5RHN+CQDgAAAABLoxQBAAAAsDRKEQAAAABLoxQBAAAAsDRKEQAAAABLoxQBAAAAsDRKEQAAAABLoxQBAAAAsDRKEQAAAABLoxQBAAAAsDRKEQAAAABLoxQBAAAAsDRKEQAAAABLoxQBAAAAsDRKEQAAAABLoxQBAAAAsDRKEQAAAABLoxQBAAAAsDRKEQAAAABLoxQBAAAAsDRKEQAAAABLoxQBAAAAsDRKEQAAAABLoxQBAAAAsDRKEQAAAABLoxQBAAAAsDRKEQAAAABLoxQBAAAAsDRKEQAAAABLoxQBAAAAsDRKEQAAAABLoxQBAAAAsDRKEQAAAABLoxQBAAAAsDRKEQAAAABLoxQBAAAAsDRKEQAAAABLoxQBAAAAsDRKEQAAAABLoxQBAAAAsDRKEQAAAABLoxQBAAAAsDRKEQAAAABLoxQBAAAAsDRKEQAAAABLoxQBAAAAsDRKEQAAAABLoxQBAAAAsDRKEQAAAABLoxQBAAAAsDRKEQAAAABLoxQBAAAAsDRKEQAAAABLoxQBAAAAsDRKEQAAAABLK1EpmjFjhho3biwfHx+Fh4drw4YNF5x39uzZuvLKK1WrVi3VqlVLkZGRF50fAAAAACpSsUtRbGysoqOjNXnyZG3ZskWdOnVSVFSUjhw5Uuj8a9as0ZAhQ/TNN98oPj5eYWFh6tevn37//fdShwcAAACA0rIZhmEUZ4Hw8HD16NFD06dPlyS5XC6FhYXpoYce0tNPP33J5fPy8lSrVi1Nnz5dw4YNK9JrpqenKyAgQGlpafL39y9OXAAAAABupDy6QbGOFDmdTm3evFmRkZH/vwK7XZGRkYqPjy/SOk6fPq2cnBzVrl37gvNkZ2crPT29wAMAAAAAykOxSlFqaqry8vIUFBRUYHpQUJCSk5OLtI6nnnpKoaGhBYrVuWJiYhQQEJD/CAsLK05MAAAAACiyCh19burUqVq0aJGWLl0qHx+fC843YcIEpaWl5T8OHDhQgSkBAAAAWIlncWYODAyUh4eHUlJSCkxPSUlRcHDwRZd97bXXNHXqVH311Vfq2LHjRef19vaWt7d3caIBAAAAQIkU60iRw+FQt27dFBcXlz/N5XIpLi5OERERF1zulVde0YsvvqiVK1eqe/fuJU8LAAAAAGWsWEeKJCk6OlrDhw9X9+7d1bNnT02bNk2ZmZkaOXKkJGnYsGGqX7++YmJiJEn/+Mc/NGnSJC1YsECNGzfOv/aoevXqql69ehm+FQAAAAAovmKXosGDB+vo0aOaNGmSkpOT1blzZ61cuTJ/8IWkpCTZ7f9/AOqdd96R0+nUbbfdVmA9kydP1vPPP1+69AAAAABQSsW+T5EZuE8RAAAAAKkS3KcIAAAAANwNpQgAAACApVGKAAAAAFgapQgAAACApVGKAAAAAFgapQgAAACApVGKAAAAAFgapQgAAACApVGKAAAAAFgapQgAAACApVGKAAAAAFgapQgAAACApVGKAAAAAFgapQgAAACApVGKAAAAAFgapQgAAACApVGKAAAAAFgapQgAAACApVGKAAAAAFgapQgAAACApVGKAAAAAFgapQgAAACApVGKAAAAAFgapQgAAACApVGKAAAAAFgapQgAAACApVGKAAAAAFgapQgAAACApVGKAAAAAFgapQgAAACApVGKAAAAAFgapQgAAACApVGKAAAAAFgapQgAAACApVGKAAAAAFgapQgAAACApVGKAAAAAFgapQgAAACApVGKAAAAAFgapQgAAACApVGKAAAAAFgapQgAAACApVGKAAAAAFgapQgAAACApVGKAAAAAFgapQgAAACApVGKAAAAAFgapQgAAACApVGKAAAAAFgapQgAAACApVGKAAAAAFgapQgAAACApVGKAAAAAFgapQgAAACApZWoFM2YMUONGzeWj4+PwsPDtWHDhovO/9FHH6l169by8fFRhw4dtHz58hKFBQAAAICyVuxSFBsbq+joaE2ePFlbtmxRp06dFBUVpSNHjhQ6/7p16zRkyBCNGjVKW7du1cCBAzVw4EDt2LGj1OEBAAAAoLRshmEYxVkgPDxcPXr00PTp0yVJLpdLYWFheuihh/T000+fN//gwYOVmZmpzz//PH9ar1691LlzZ82cObNIr5menq6AgAClpaXJ39+/OHEBAAAAuJHy6AbFOlLkdDq1efNmRUZG/v8K7HZFRkYqPj6+0GXi4+MLzC9JUVFRF5wfAAAAACqSZ3FmTk1NVV5enoKCggpMDwoK0i+//FLoMsnJyYXOn5ycfMHXyc7OVnZ2dv7ztLQ0SX+0QgAAAADW9VcnKOYJbxdVrFJUUWJiYjRlypTzpoeFhZmQBgAAAEBlc+zYMQUEBJTJuopVigIDA+Xh4aGUlJQC01NSUhQcHFzoMsHBwcWaX5ImTJig6Ojo/OcnT55Uo0aNlJSUVGZvHChMenq6wsLCdODAAa5fQ7liW0NFYVtDRWFbQ0VJS0tTw4YNVbt27TJbZ7FKkcPhULdu3RQXF6eBAwdK+mOghbi4OI0bN67QZSIiIhQXF6fx48fnT1u9erUiIiIu+Dre3t7y9vY+b3pAQAD/kaFC+Pv7s62hQrCtoaKwraGisK2hotjtZXfL1WKfPhcdHa3hw4ere/fu6tmzp6ZNm6bMzEyNHDlSkjRs2DDVr19fMTExkqRHHnlEvXv31uuvv67rr79eixYt0qZNmzRr1qwyexMAAAAAUFLFLkWDBw/W0aNHNWnSJCUnJ6tz585auXJl/mAKSUlJBVrbZZddpgULFmjixIl65pln1KJFCy1btkzt27cvu3cBAAAAACVUooEWxo0bd8HT5dasWXPetEGDBmnQoEEleSlJf5xON3ny5EJPqQPKEtsaKgrbGioK2xoqCtsaKkp5bGvFvnkrAAAAALiTsrs6CQAAAACqIEoRAAAAAEujFAEAAACwNEoRAAAAAEurNKVoxowZaty4sXx8fBQeHq4NGzZcdP6PPvpIrVu3lo+Pjzp06KDly5dXUFJUdcXZ1mbPnq0rr7xStWrVUq1atRQZGXnJbRP4S3G/1/6yaNEi2Wy2/JtkA5dS3G3t5MmTGjt2rEJCQuTt7a2WLVvy7yiKpLjb2rRp09SqVSv5+voqLCxMjz76qLKysiooLaqib7/9VgMGDFBoaKhsNpuWLVt2yWXWrFmjrl27ytvbW82bN9fcuXOL/bqVohTFxsYqOjpakydP1pYtW9SpUydFRUXpyJEjhc6/bt06DRkyRKNGjdLWrVs1cOBADRw4UDt27Kjg5KhqirutrVmzRkOGDNE333yj+Ph4hYWFqV+/fvr9998rODmqmuJua3/Zt2+fHn/8cV155ZUVlBRVXXG3NafTqWuuuUb79u3TkiVLtGvXLs2ePVv169ev4OSoaoq7rS1YsEBPP/20Jk+erJ07d+r9999XbGysnnnmmQpOjqokMzNTnTp10owZM4o0/969e3X99dfrb3/7mxISEjR+/Hjde++9WrVqVfFe2KgEevbsaYwdOzb/eV5enhEaGmrExMQUOv/tt99uXH/99QWmhYeHG/fff3+55kTVV9xt7Vy5ublGjRo1jHnz5pVXRLiJkmxrubm5xmWXXWa89957xvDhw42bbrqpApKiqivutvbOO+8YTZs2NZxOZ0VFhJso7rY2duxY4+qrry4wLTo62rj88svLNSfchyRj6dKlF53nySefNNq1a1dg2uDBg42oqKhivZbpR4qcTqc2b96syMjI/Gl2u12RkZGKj48vdJn4+PgC80tSVFTUBecHpJJta+c6ffq0cnJyVLt27fKKCTdQ0m3thRdeUL169TRq1KiKiAk3UJJt7bPPPlNERITGjh2roKAgtW/fXi+//LLy8vIqKjaqoJJsa5dddpk2b96cf4rdb7/9puXLl+u6666rkMywhrLqBZ5lGaokUlNTlZeXp6CgoALTg4KC9MsvvxS6THJycqHzJycnl1tOVH0l2dbO9dRTTyk0NPS8//iAs5VkW/vuu+/0/vvvKyEhoQISwl2UZFv77bff9PXXX+vOO+/U8uXLtWfPHj344IPKycnR5MmTKyI2qqCSbGtDhw5VamqqrrjiChmGodzcXI0ZM4bT51CmLtQL0tPTdebMGfn6+hZpPaYfKQKqiqlTp2rRokVaunSpfHx8zI4DN3Lq1Cndfffdmj17tgIDA82OAzfncrlUr149zZo1S926ddPgwYP17LPPaubMmWZHg5tZs2aNXn75Zb399tvasmWLPvnkE33xxRd68cUXzY4GnMf0I0WBgYHy8PBQSkpKgekpKSkKDg4udJng4OBizQ9IJdvW/vLaa69p6tSp+uqrr9SxY8fyjAk3UNxtLTExUfv27dOAAQPyp7lcLkmSp6endu3apWbNmpVvaFRJJfleCwkJkZeXlzw8PPKntWnTRsnJyXI6nXI4HOWaGVVTSba15557TnfffbfuvfdeSVKHDh2UmZmp++67T88++6zsdn6bR+ldqBf4+/sX+SiRVAmOFDkcDnXr1k1xcXH501wul+Li4hQREVHoMhEREQXml6TVq1dfcH5AKtm2JkmvvPKKXnzxRa1cuVLdu3eviKio4oq7rbVu3Vrbt29XQkJC/uPGG2/MH0knLCysIuOjCinJ99rll1+uPXv25BdvSfr1118VEhJCIcIFlWRbO3369HnF568y/sc19EDplVkvKN4YEOVj0aJFhre3tzF37lzj559/Nu677z6jZs2aRnJysmEYhnH33XcbTz/9dP7833//veHp6Wm89tprxs6dO43JkycbXl5exvbt2816C6giirutTZ061XA4HMaSJUuMw4cP5z9OnTpl1ltAFVHcbe1cjD6HoirutpaUlGTUqFHDGDdunLFr1y7j888/N+rVq2f8/e9/N+stoIoo7rY2efJko0aNGsbChQuN3377zfjyyy+NZs2aGbfffrtZbwFVwKlTp4ytW7caW7duNSQZb7zxhrF161Zj//79hmEYxtNPP23cfffd+fP/9ttvhp+fn/HEE08YO3fuNGbMmGF4eHgYK1euLNbrVopSZBiG8dZbbxkNGzY0HA6H0bNnT+OHH37I/1vv3r2N4cOHF5h/8eLFRsuWLQ2Hw2G0a9fO+OKLLyo4Maqq4mxrjRo1MiSd95g8eXLFB0eVU9zvtbNRilAcxd3W1q1bZ4SHhxve3t5G06ZNjZdeesnIzc2t4NSoioqzreXk5BjPP/+80axZM8PHx8cICwszHnzwQePEiRMVHxxVxjfffFPovtdf29bw4cON3r17n7dM586dDYfDYTRt2tSYM2dOsV/XZhgcvwQAAABgXaZfUwQAAAAAZqIUAQAAALA0ShEAAAAAS6MUAQAAALA0ShEAAAAAS6MUAQAAALA0ShEAAAAAS6MUAQAAALA0ShEAAAAAS6MUAQAAALA0ShEAAAAAS6MUAQAAALA0ShEAAAAAS6MUAQAAALA0ShEAAAAAS6MUAQAAALA0ShEAAAAAS6MUAQAAALA0ShEAAAAAS6MUAQAAALA0ShEAAAAAS6MUAQAAALA0ShEAAAAAS6MUAQAAALA0ShEAAAAAS6MUAQAAALA0ShEAAAAAS6MUAQAAALA0ShEAAAAAS6MUAQAAALA0ShEAAAAAS6MUAQAAALA0ShEAAAAAS6MUAQAAALA0ShEAAAAAS6MUAQAAALA0ShEAAAAAS6MUAQAAALA0ShEAAAAASyt2Kfr22281YMAAhYaGymazadmyZZdcZs2aNeratau8vb3VvHlzzZ07twRRAQAAAKDsFbsUZWZmqlOnTpoxY0aR5t+7d6+uv/56/e1vf1NCQoLGjx+ve++9V6tWrSp2WAAAAAAoazbDMIwSL2yzaenSpRo4cOAF53nqqaf0xRdfaMeOHfnT7rjjDp08eVIrV64s6UsDAAAAQJnwLO8XiI+PV2RkZIFpUVFRGj9+/AWXyc7OVnZ2dv5zl8ul48ePq06dOrLZbOUVFQAAAEAlZxiGTp06pdDQUNntZTNEQrmXouTkZAUFBRWYFhQUpPT0dJ05c0a+vr7nLRMTE6MpU6aUdzQAAAAAVdSBAwfUoEGDMllXuZeikpgwYYKio6Pzn6elpalhw4Y6cODA/7V3/7F1l3Xj/19rR08h0jLuuXbbfXCCIiqw4cZqwYVgKk0kw/1h7D3ItiwgIpMgjcrGj1VE190KZIkUFiYKySe4KRG+xi1FrCxGqVnc1gTiNjLn3EJst6m0s2i7te/vH4Z613Ww0/UH3fV4JOePXlzXeV+HXAyevE/PibKysnHcGQAAMJ66uroin8/HueeeO2LPOepRVFlZGR0dHYPGOjo6oqysbMi7RBERuVwucrncCeNlZWWiCAAAGNFfqxn17ymqrq6OlpaWQWMvvvhiVFdXj/alAQAA3lHBUfT3v/892traoq2tLSL+9ZHbbW1tceDAgYj411vfli5dOjD/tttui3379sXXvva12L17dzz22GPxox/9KO66666ReQUAAACnoeAo+t3vfhdXXHFFXHHFFRERUV9fH1dccUWsXr06IiL+/Oc/DwRSRMT73//+2Lx5c7z44osxe/bsePjhh+N73/te1NbWjtBLAAAAGL7T+p6isdLV1RXl5eXR2dnpd4oAACBho9EGo/47RQAAAO9moggAAEiaKAIAAJImigAAgKSJIgAAIGmiCAAASJooAgAAkiaKAACApIkiAAAgaaIIAABImigCAACSJooAAICkiSIAACBpoggAAEiaKAIAAJImigAAgKSJIgAAIGmiCAAASJooAgAAkiaKAACApIkiAAAgaaIIAABImigCAACSJooAAICkiSIAACBpoggAAEiaKAIAAJImigAAgKSJIgAAIGmiCAAASJooAgAAkiaKAACApIkiAAAgaaIIAABImigCAACSJooAAICkiSIAACBpoggAAEiaKAIAAJImigAAgKSJIgAAIGmiCAAASJooAgAAkiaKAACApIkiAAAgaaIIAABImigCAACSJooAAICkiSIAACBpoggAAEiaKAIAAJImigAAgKSJIgAAIGmiCAAASNqwoqipqSlmzZoVpaWlUVVVFdu2bXvb+evWrYsPfehDcfbZZ0c+n4+77ror/vnPfw5rwwAAACOp4CjatGlT1NfXR0NDQ+zYsSNmz54dtbW1cejQoSHnP/PMM7Fy5cpoaGiIXbt2xZNPPhmbNm2Ke+6557Q3DwAAcLoKjqJHHnkkPv/5z8fy5cvjIx/5SKxfvz7OOeec+P73vz/k/JdffjmuvvrquPHGG2PWrFlx3XXXxeLFi9/x7hIAAMBYKCiKent7Y/v27VFTU/PvJygqipqammhtbR1yzVVXXRXbt28fiKB9+/bFli1b4tOf/vRpbBsAAGBkTC5k8pEjR6Kvry8qKioGjVdUVMTu3buHXHPjjTfGkSNH4hOf+ERkWRbHjx+P22677W3fPtfT0xM9PT0DP3d1dRWyTQAAgFM26p8+t3Xr1lizZk089thjsWPHjvjJT34SmzdvjgcffPCkaxobG6O8vHzgkc/nR3ubAABAoiZlWZad6uTe3t4455xz4tlnn41FixYNjC9btizeeOON+P/+v//vhDULFiyIj3/84/Gd73xnYOz//b//F7feemv8/e9/j6KiE7tsqDtF+Xw+Ojs7o6ys7FS3CwAAnGG6urqivLx8RNugoDtFJSUlMXfu3GhpaRkY6+/vj5aWlqiurh5yzZtvvnlC+BQXF0dExMl6LJfLRVlZ2aAHAADAaCjod4oiIurr62PZsmUxb968mD9/fqxbty66u7tj+fLlERGxdOnSmDlzZjQ2NkZExMKFC+ORRx6JK664IqqqqmLv3r1x//33x8KFCwfiCAAAYLwUHEV1dXVx+PDhWL16dbS3t8ecOXOiubl54MMXDhw4MOjO0H333ReTJk2K++67L15//fV473vfGwsXLoxvfetbI/cqAAAAhqmg3ykaL6PxvkEAAGDiGfffKQIAADjTiCIAACBpoggAAEiaKAIAAJImigAAgKSJIgAAIGmiCAAASJooAgAAkiaKAACApIkiAAAgaaIIAABImigCAACSJooAAICkiSIAACBpoggAAEiaKAIAAJImigAAgKSJIgAAIGmiCAAASJooAgAAkiaKAACApIkiAAAgaaIIAABImigCAACSJooAAICkiSIAACBpoggAAEiaKAIAAJImigAAgKSJIgAAIGmiCAAASJooAgAAkiaKAACApIkiAAAgaaIIAABImigCAACSJooAAICkiSIAACBpoggAAEiaKAIAAJImigAAgKSJIgAAIGmiCAAASJooAgAAkiaKAACApIkiAAAgaaIIAABImigCAACSJooAAICkiSIAACBpoggAAEiaKAIAAJImigAAgKSJIgAAIGmiCAAASNqwoqipqSlmzZoVpaWlUVVVFdu2bXvb+W+88UasWLEipk+fHrlcLi6++OLYsmXLsDYMAAAwkiYXumDTpk1RX18f69evj6qqqli3bl3U1tbGnj17Ytq0aSfM7+3tjU996lMxbdq0ePbZZ2PmzJnxpz/9Kc4777yR2D8AAMBpmZRlWVbIgqqqqrjyyivj0UcfjYiI/v7+yOfzcccdd8TKlStPmL9+/fr4zne+E7t3746zzjprWJvs6uqK8vLy6OzsjLKysmE9BwAAMPGNRhsU9Pa53t7e2L59e9TU1Pz7CYqKoqamJlpbW4dc89Of/jSqq6tjxYoVUVFREZdeemmsWbMm+vr6Tnqdnp6e6OrqGvQAAAAYDQVF0ZEjR6Kvry8qKioGjVdUVER7e/uQa/bt2xfPPvts9PX1xZYtW+L+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480334xjx47F+eeff9I5PT090dXVNegBAAAwGgqKoiNHjkRfX19UVFQMGq+oqIj29vZTeo677747ZsyYMSis/lNjY2OUl5cPPPL5fCHbBAAAOGVj+ulza9eujY0bN8Zzzz0XpaWlJ523atWq6OzsHHgcPHhwDHcJAACkZHIhk6dOnRrFxcXR0dExaLyjoyMqKyvfdu1DDz0Ua9eujV/84hdx+eWXv+3cXC4XuVyukK0BAAAMS0F3ikpKSmLu3LnR0tIyMNbf3x8tLS1RXV190nXf/va348EHH4zm5uaYN2/e8HcLAAAwwgq6UxQRUV9fH8uWLYt58+bF/PnzY926ddHd3R3Lly+PiIilS5fGzJkzo7GxMSIi/vd//zdWr14dzzzzTMyaNWvgd4/e8573xHve854RfCkAAACFKziK6urq4vDhw7F69epob2+POXPmRHNz88CHLxw4cCCKiv59A+rxxx+P3t7e+OxnPzvoeRoaGuLrX//66e0eAADgNBX8PUXjwfcUAQAAEe+C7ykCAAA404giAAAgaaIIAABImigCAACSJooAAICkiSIAACBpoggAAEiaKAIAAJImigAAgKSJIgAAIGmiCAAASJooAgAAkiaKAACApIkiAAAgaaIIAABImigCAACSJooAAICkiSIAACBpoggAAEiaKAIAAJImigAAgKSJIgAAIGmiCAAASJooAgAAkiaKAACApIkiAAAgaaIIAABImigCAACSJooAAICkiSIAACBpoggAAEiaKAIAAJImigAAgKSJIgAAIGmiCAAASJooAgAAkiaKAACApIkiAAAgaaIIAABImigCAACSJooAAICkiSIAACBpoggAAEiaKAIAAJImigAAgKSJIgAAIGmiCAAASJooAgAAkiaKAACApIkiAAAgaaIIAABImigCAACSJooAAICkiSIAACBpoggAAEjasKKoqakpZs2aFaWlpVFVVRXbtm172/k//vGP45JLLonS0tK47LLLYsuWLcPaLAAAwEgrOIo2bdoU9fX10dDQEDt27IjZs2dHbW1tHDp0aMj5L7/8cixevDhuvvnm2LlzZyxatCgWLVoUr7766mlvHgAA4HRNyrIsK2RBVVVVXHnllfHoo49GRER/f3/k8/m44447YuXKlSfMr6uri+7u7vjZz342MPbxj3885syZE+vXrz+la3Z1dUV5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7txoaWkZGOvv74+Wlpaorq4eck11dfWg+RERL7744knnQ8TwzlpExLe//e148MEHo7m5OebNmzcWW2WCK/SsXXLJJfHKK69EW1vbwOOGG24Y+CSdfD4/lttnAhnOn2tXX3117N27dyC8IyJee+21mD59uiDipIZz1t58880TwuetGP/X79DD6RuxLijsMyBGx8aNG7NcLpc99dRT2e9///vs1ltvzc4777ysvb09y7IsW7JkSbZy5cqB+b/5zW+yyZMnZw899FC2a9eurKGhITvrrLOyV155ZbxeAhNEoWdt7dq1WUlJSfbss89mf/7znwceR48eHa+XwARR6Fn7Tz59jlNV6Fk7cOBAdu6552Zf+tKXsj179mQ/+9nPsmnTpmXf/OY3x+slMEEUetYaGhqyc889N/vhD3+Y7du3L/v5z3+eXXTRRdnnPve58XoJTABHjx7Ndu7cme3cuTOLiOyRRx7Jdu7cmf3pT3/KsizLVq5cmS1ZsmRg/r59+7Jzzjkn++pXv5rt2rUra2pqyoqLi7Pm5uaCrvuuiKIsy7Lvfve72QUXXJCVlJRk8+fPz377298O/LVrrrkmW7Zs2aD5P/rRj7KLL744KykpyT760Y9mmzdvHuMdM1EVctbe9773ZRFxwqOhoWHsN86EU+ifa/+XKKIQhZ61l19+OauqqspyuVx24YUXZt/61rey48ePj/GumYgKOWvHjh3Lvv71r2cXXXRRVlpamuXz+ez222/P/va3v439xpkwXnrppSH/2+uts7Vs2bLsmmuuOWHNnDlzspKSkuzCCy/MfvCDHxR83UlZ5v4lAACQrnH/nSIAAIDxJIoAAICkiSIAACBpoggAAEiaKAIAAJImigAAgKSJIgAAIGmiCAAASJooAgAAkiaKAACApIkiAAAgaaIIAABImigCAACSJooAAICkiSIAACBpoggAAEiaKAIAAJImigAAgKSJIgAAIGmiCAAASJooAgAAkiaKAACApIkiAAAgaaIIAABImigCAACSJooAAICkiSIAACBpoggAAEiaKAIAAJImigAAgKSJIgAAIGmiCAAASJooAgAAkiaKAACApIkiAAAgaaIIAABImigCAACSJooAAICkiSIAACBpBUfRr371q1i4cGHMmDEjJk2aFM8///w7rtm6dWt87GMfi1wuFx/4wAfiqaeeGsZWAQAARl7BUdTd3R2zZ8+OpqamU5r/xz/+Ma6//vq49tpro62tLb785S/HLbfcEi+88ELBmwUAABhpk7Isy4a9eNKkeO6552LRokUnnXP33XfH5s2b49VXXx0Y+5//+Z944403orm5ebiXBgAAGBGTR/sCra2tUVNTM2istrY2vvzlL590TU9PT/T09Az83N/fH3/961/jv/7rv2LSpEmjtVUAAOBdLsuyOHr0aMyYMSOKikbmIxJGPYra29ujoqJi0FhFRUV0dXXFP/7xjzj77LNPWNPY2BgPPPDAaG8NAACYoA4ePBj//d//PSLPNepRNByrVq2K+vr6gZ87OzvjggsuiIMHD0ZZWdk47gwAABhPXV1dkc/n49xzzx2x5xz1KKqsrIyOjo5BYx0dHVFWVjbkXaKIiFwuF7lc7oTxsrIyUQQAAIzor9WM+vcUVVdXR0tLy6CxF198Maqrq0f70gAAAO+o4Cj6+9//Hm1tbdHW1hYR//rI7ba2tjhw4EBE/Outb0uXLh2Yf9ttt8W+ffvia1/7WuzevTsee+yx+NGPfhR33XXXyLwCAACA01BwFP3ud7+LK664Iq644oqIiKivr48rrrgiVq9eHRERf/7znwcCKSLi/e9/f2zevDlefPHFmD17djz88MPxve99L2pra0foJQAAAAzfaX1P0Vjp6uqK8vLy6Ozs9DtFAACQsNFog1H/nSIAAIB3M1EEAAAkTRQBAABJE0UAAEDSRBEAAJA0UQQAACRNFAEAAEkTRQAAQNJEEQAAkDRRBAAAJE0UAQAASRNFAABA0kQRAACQNFEEAAAkTRQBAABJE0UAAEDSRBEAAJA0UQQAACRNFAEAAEkTRQAAQNJEEQAAkDRRBAAAJE0UAQAASRNFAABA0kQRAACQNFEEAAAkTRQBAABJE0UAAEDSRBEAAJA0UQQAACRNFAEAAEkTRQAAQNJEEQAAkDRRBAAAJE0UAQAASRNFAABA0kQRAACQNFEEAAAkTRQBAABJE0UAAEDSRBEAAJA0UQQAACRNFAEAAEkTRQAAQNJEEQAAkDRRBAAAJE0UAQAASRNFAABA0kQRAACQNFEEAAAkTRQBAABJE0UAAEDSRBEAAJA0UQQAACRNFAEAAEkbVhQ1NTXFrFmzorS0NKqqqmLbtm1vO3/dunXxoQ99KM4+++zI5/Nx1113xT//+c9hbRgAAGAkFRxFmzZtivr6+mhoaIgdO3bE7Nmzo7a2Ng4dOjTk/GeeeSZWrlwZDQ0NsWvXrnjyySdj06ZNcc8995z25gEAAE5XwVH0yCOPxOc///lYvnx5fOQjH4n169fHOeecE9///veHnP/yyy/H1VdfHTfeeGPMmjUrrrvuuli8ePE73l0CAAAYCwVFUW9vb2zfvj1qamr+/QRFRVFTUxOtra1Drrnqqqti+/btAxG0b9++2LJlS3z6058+6XV6enqiq6tr0AMAAGA0TC5k8pEjR6Kvry8qKioGjVdUVMTu3buHXHPjjTfGkSNH4hOf+ERkWRbHjx+P22677W3fPtfY2BgPPPBAIVsDAAAYllH/9LmtW7fGmjVr4rHHHosdO3bET37yk9i8eXM8+OCDJ12zatWq6OzsHHgcPHhwtLcJAAAkqqA7RVOnTo3i4uLo6OgYNN7R0RGVlZVDrrn//vtjyZIlccstt0RExGWXXRbd3d1x6623xr333htFRSd2WS6Xi1wuV8jWAAAAhqWgO0UlJSUxd+7caGlpGRjr7++PlpaWqK6uHnLNm2++eUL4FBcXR0RElmWF7hcAAGBEFXSnKCKivr4+li1bFvPmzYv58+fHunXroru7O5YvXx4REUuXLo2ZM2dGY2NjREQsXLgwHnnkkbjiiiuiqqoq9u7dG/fff38sXLhwII4AAADGS8FRVFdXF4cPH47Vq1dHe3t7zJkzJ5qbmwc+fOHAgQOD7gzdd999MWnSpLjvvvvi9ddfj/e+972xcOHC+Na3vjVyrwIAAGCYJmUT4D1sXV1dUV5eHp2dnVFWVjbe2wEAAMbJaLTBqH/6HAAAwLuZKAIAAJImigAAgKSJIgAAIGmiCAAASJooAgAAkiaKAACApIkiAAAgaaIIAABImigCAACSJooAAICkiSIAACBpoggAAEiaKAIAAJImigAAgKSJIgAAIGmiCAAASJooAgAAkiaKAACApIkiAAAgaaIIAABImigCAACSJooAAICkiSIAACBpoggAAEiaKAIAAJImigAAgKSJIgAAIGmiCAAASJooAgAAkiaKAACApIkiAAAgaaIIAABImigCAACSJooAAICkiSIAACBpoggAAEiaKAIAAJImigAAgKSJIgAAIGmiCAAASJooAgAAkiaKAACApIkiAAAgaaIIAABImigCAACSJooAAICk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AEiaKAIAAJImigAAgKSJIgAAIGmiCAAASJooAgAAkiaKAACApIkiAAAgaaIIAABImigCAACSJooAAICkiSIAACBpoggAAEiaKAIAAJImigAAgKSJIgAAIGmiCAAASJooAgAAkiaKAACApIkiAAAgaaIIAABImigCAACSJooAAICkiSIAACBpoggAAEiaKAIAAJImigAAgKSJIgAAIGmiCAAASJooAgAAkiaKAACApIkiAAAgaaIIAABImigCAACSJooAAICkiSIAACBpoggAAEiaKAIAAJImigAAgKSJIgAAIGmiCAAASJooAgAAkiaKAACApIkiAAAgaaIIAABImigCAACSJooAAICkiSIAACBpoggAAEiaKAIAAJImigAAgKSJIgAAIGmiCAAASNqwoqipqSlmzZoVpaWlUVVVFdu2bXvb+evWrYsPfehDcfbZZ0c+n4+77ror/vnPfw5rwwAAACOp4CjatGlT1NfXR0NDQ+zYsSNmz54dtbW1cejQoSHnP/PMM7Fy5cpoaGiIXbt2xZNPPhmbNm2Ke+6557Q3DwAAcLoKjqJHHnkkPv/5z8fy5cvjIx/5SKxfvz7OOeec+P73vz/k/JdffjmuvvrquPHGG2PWrFlx3XXXxeLFi9/x7hIAAMBYKCiKent7Y/v27VFTU/PvJygqipqammhtbR1yzVVXXRXbt28fiKB9+/bFli1b4tOf/vRJr9PT0xNdXV2DHgAAAKNhciGTjxw5En19fVFRUTFovKKiInbv3j3kmhtvvDGOHDkSn/jEJyLLsjh+/Hjcdtttb/v2ucbGxnjggQcK2RoAAMCwjPqnz23dujXWrFkTjz32WOzYsSN+8pOfxObNm+PBBx886ZpVq1ZFZ2fnwOPgwYOjvU0AACBRBd0pmjp1ahQXF0dHR8eg8Y6OjqisrBxyzf333x9LliyJW265JSIiLrvssuju7o5bb7017r333igqOrHLcrlc5HK5QrYGAAAwLAXdKSopKYm5c+dGS0vLwFh/f3+0tLREdXX1kGvefPPNE8KnuLg4IiKyLCt0vwAAACOqoDtFERH19fWxbNmymDdvXsyfPz/WrVsX3d3dsXz58oiIWLp0acycOTMaGxsjImLhwoXxyCOPxBVXXBFVVVWxd+/euP/++2PhwoUDcQQAADBeCo6iurq6OHz4cKxevTra29tjzpw50dzcPPDhCwcOHBh0Z+i+++6LSZMmxX333Revv/56vPe9742FCxfGt771rZF7FQAAAMM0KZsA72Hr6uqK8vLy6OzsjLKysvHeDgAAME5Gow1G/dPnAAAA3s1EEQAAkDRRBAAAJE0UAQAASRNFAABA0kQRAACQNFEEAAAkTRQBAABJE0UAAEDSRBEAAJA0UQQAACRNFAEAAEkTRQAAQNJEEQAAkDRRBAAAJE0UAQAASRNFAABA0kQRAACQNFEEAAAkTRQBAABJE0UAAEDSRBEAAJA0UQQAACRNFAEAAEkTRQAAQNJEEQAAkDRRBAAAJE0UAQAASRNFAABA0kQRAACQNFEEAAAkTRQBAABJE0UAAEDSRBEAAJA0UQQAACRNFAEAAEkTRQAAQNJEEQAAkDRRBAAAJE0UAQAASRNFAABA0kQRAACQNFEEAAAkTRQBAABJE0UAAEDSRBEAAJA0UQQAACRNFAEAAEkTRQAAQNJEEQAAkDRRBAAAJE0UAQAASRNFAABA0kQRAACQtGFFUVNTU8yaNStKS0ujqqoqtm3b9rbz33jjjVixYkVMnz49crlcXHzxxbFly5ZhbRgAAGAkTS50waZNm6K+vj7Wr18fVVVVsW7duqitrY09e/bEtGnTTpjf29sbn/rUp2LatGnx7LPPxsyZM+NPf/pTnHfeeSOxfwAAgNMyKcuyrJAFVVVVceWVV8ajjz4aERH9/f2Rz+fjjjvuiJUrV54wf/369fGd73wndu/eHWedddawNtnV1RXl5eXR2dkZZWVlw3oOAABg4huNNijo7XO9vb2xffv2qKmp+fcTFBVFTU1NtLa2Drnmpz/9aVRXV8eKFSuioqIiLr300lizZk309fWd3s4BAABGQEFvnzty5Ej09fVFRUXFoPGKiorYvXv3kGv27dsXv/zlL+Omm26KLVu2xN69e+P222+PY8eORUNDw5Brenp6oqenZ+Dnrq6uQrYJAABwykb90+f6+/tj2rRp8cQTT8TcuXOjrq4u7r333li/fv1J1zQ2NkZ5efnAI5/Pj/Y2AQCARBUURVOnTo3i4uLo6OgYNN7R0RGVlZVDrpk+fXpcfPHFUVxcPDD24Q9/ONrb26O3t3fINatWrYrOzs6Bx8GDBwvZJgAAwCkrKIpKSkpi7ty50dLSMjDW398fLS0tUV1dPeSaq6++Ovbu3Rv9/f0DY6+99lpMnz49SkpKhlyTy+WirKxs0AMAAGA0FPz2ufr6+tiwYUM8/fTTsWvXrvjiF78Y3d3dsXz58oiIWLp0aaxatWpg/he/+MX461//GnfeeWe89tprsXnz5lizZk2sWLFi5F4FAADAMBX8PUV1dXVx+PDhWL16dbS3t8ecOXOiubl54MMXDhw4EEVF/26tfD4fL7zwQtx1111x+eWXx8yZM+POO++Mu+++e+ReBQAAwDAV/D1F48H3FAEAABHvgu8pAgAAONOIIgAAIGmiCAAASJooAgAAkiaKAACApIkiAAAgaaIIAABImigCAACSJooAAICkiSIAACBpoggAAEiaKAIAAJImigAAgKSJIgAAIGmiCAAASJooAgAAkiaKAACApIkiAAAgaaIIAABImigCAACSJooAAICkiSIAACBpoggAAEiaKAIAAJImigAAgKSJIgAAIGmiCAAASJooAgAAkiaKAACApIkiAAAgaaIIAABImigCAACSJooAAICkiSIAACBpoggAAEiaKAIAAJImigAAgKSJIgAAIGmiCAAASJooAgAAkiaKAACApIkiAAAgaaIIAABImigCAACSJooAAICkiSIAACBpoggAAEiaKAIAAJImigAAgKSJIgAAIGmiCAAASJooAgAAkiaKAACApIkiAAAgaaIIAABI2rCiqKmpKWbNmhWlpaVRVVUV27ZtO6V1GzdujEmTJsWiRYuGc1kAAIARV3AUbdq0Kerr66OhoSF27NgRs2fPjtra2jh06NDbrtu/f3985StfiQULFgx7swAAACOt4Ch65JFH4vOf/3wsX748PvKRj8T69evjnHPOie9///snXdPX1xc33XRTPPDAA3HhhRee1oYBAABGUkFR1NvbG9u3b4+ampp/P0FRUdTU1ERra+tJ133jG9+IadOmxc0333xK1+np6Ymurq5BDwAAgNFQUBQdOXIk+vr6oqKiYtB4RUVFtLe3D7nm17/+dTz55JOxYcOGU75OY2NjlJeXDzzy+Xwh2wQAADhlo/rpc0ePHo0lS5bEhg0bYurUqae8btWqVdHZ2TnwOHjw4CjuEgAASNnkQiZPnTo1iouLo6OjY9B4R0dHVFZWnjD/D3/4Q+zfvz8WLlw4MNbf3/+vC0+eHHv27ImLLrrohHW5XC5yuVwhWwMAABiWgu4UlZSUxNy5c6OlpWVgrL+/P1paWqK6uvqE+Zdcckm88sor0dbWNvC44YYb4tprr422tjZviwMAAMZdQXeKIiLq6+tj2bJlMW/evJg/f36sW7cuuru7Y/ny5RERsXTp0pg5c2Y0NjZGaWlpXHrppYPWn3feeRERJ4wDAACMh4KjqK6uLg4fPhyrV6+O9vb2mDNnTjQ3Nw98+MKBAweiqGhUf1UJAABgxEzKsiwb7028k66urigvL4/Ozs4oKysb7+0AAADjZDTawC0dAAAgaaIIAABImigCAACSJooAAICkiSIAACBpoggAAEiaKAIAAJImigAAgKSJIgAAIGmiCAAASJooAgAAkiaKAACApIkiAAAgaaIIAABImigCAACSJooAAICkiSIAACBpoggAAEiaKAIAAJImigAAgKSJIgAAIGmiCAAASJooAgAAkiaKAACApIkiAAAgaaIIAABImigCAACSJooAAICkiSIAACBpoggAAEiaKAIAAJImigAAgKSJIgAAIGmiCAAASJooAgAAkiaKAACApIkiAAAgaaIIAABImigCAACSJooAAICkiSIAACBpoggAAEiaKAIAAJImigAAgKSJIgAAIGmiCAAASJooAgAAkiaKAACApIkiAAAgaaIIAABImigCAACSJooAAICkiSIAACBpoggAAEjasKKoqakpZs2aFaWlpVFVVRXbtm076dwNGzbEggULYsqUKTFlypSoqal52/kAAABjqeAo2rRpU9TX10dDQ0Ps2LEjZs+eHbW1tXHo0KEh52/dujUWL14cL730UrS2tkY+n4/rrrsuXn/99dPePAAAwOmalGVZVsiCqqqquPLKK+PRRx+NiIj+/v7I5/Nxxx13xMqVK99xfV9fX0yZMiUeffTRWLp06Slds6urK8rLy6OzszPKysoK2S4AAHAGGY02KOhOUW9vb2zfvj1qamr+/QRFRVFTUxOtra2n9BxvvvlmHDt2LM4///zCdgoAADAKJhcy+ciRI9HX1xcVFRWDxisqKmL37t2n9Bx33313zJgxY1BY/aeenp7o6ekZ+Lmrq6uQbQIAAJyyMf30ubVr18bGjRvjueeei9LS0pPOa2xsjPLy8oFHPp8fw10CAAApKSiKpk6dGsXFxdHR0TFovKOjIyorK9927UMPPRRr166Nn//853H55Ze/7dxVq1ZFZ2fnwOPgwYOFbBMAAOCUFRRFJSUlMXfu3GhpaRkY6+/vj5aWlqiurj7pum9/+9vx4IMPRnNzc8ybN+8dr5PL5aKsrGzQAwAAYDQU9DtFERH19fWxbNmymDdvXsyfPz/WrVsX3d3dsXz58oiIWLp0acycOTMaGxsjIuJ///d/Y/Xq1fHMM8/ErFmzor29PSIi3vOe98R73vOeEXwpAAAAhSs4iurq6uLw4cOxevXqaG9vjzlz5kRzc/PAhy8cOHAgior+fQPq8ccfj97e3vjsZz876HkaGhri61//+untHgAA4DQV/D1F48H3FAEAABHvgu8pAgAAONOIIgAAIGmiCAAASJooAgAAkiaKAACApIkiAAAgaaIIAABImigCAACSJooAAICkiSIAACBpoggAAEiaKAIAAJImigAAgKSJIgAAIGmiCAAASJooAgAAkiaKAACApIkiAAAgaaIIAABImigCAACSJooAAICkiSIAACBpoggAAEiaKAIAAJImigAAgKSJIgAAIGmiCAAASJooAgAAkiaKAACApIkiAAAgaaIIAABImigCAACSJooAAICkiSIAACBpoggAAEiaKAIAAJImigAAgKSJIgAAIGmiCAAASJooAgAAkiaKAACApIkiAAAgaaIIAABImigCAACSJooAAICkiSIAACBpoggAAEiaKAIAAJImigAAgKSJIgAAIGmiCAAASJooAgAAkiaKAACApIkiAAAgaaIIAABI2rCiqKmpKWbNmhWlpaVRVVUV27Zte9v5P/7xj+OSSy6J0tLSuOyyy2LLli3D2iwAAMBIKziKNm3aFPX19dHQ0BA7duyI2bNnR21tbRw6dGjI+S+//HIsXrw4br755ti5c2csWrQoFi1aFK+++uppbx4AAOB0TcqyLCtkQVVVVVx55ZXx6KOPRkREf39/5PP5uOOOO2LlypUnzK+rq4vu7u742c9+NjD28Y9/PObMmRPr168/pWt2dXVFeXl5dHZ2RllZWSHbBQAAziCj0QaTC5nc29sb27dvj1WrVg2MFRUVRU1NTbS2tg65prW1Nerr6weN1dbWxvPPP3/S6/T09ERPT8/Az52dnRHxr78BAABAut5qggLv7bytgqLoyJEj0dfXFxUVFYPGKyoqYvfu3UOuaW9vH3J+e3v7Sa/T2NgYDzzwwAnj+Xy+kO0CAABnqL/85S9RXl4+Is9VUBSNlVWrVg26u/TG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gfm/+c1vssmTJ2cPPfRQtmvXrqyhoSE766yzsldeeWW8XgITRKFnbe3atVlJSUn27LPPZn/+858HHkePHh2vl8AEUehZ+08+fY5TVehZO3DgQHbuuedmX/rSl7I9e/ZkP/vZz7Jp06Zl3/zmN8frJTBBFHrWGhoasnPPPTf74Q9/mO3bty/7+c9/nl100UXZ5z73ufF6CUwAR48ezXbu3Jnt3Lkzi4jskUceyXbu3Jn96U9/yrIsy1auXJktWbJkYP6+ffuyc845J/vqV7+a7dq1K2tqasqKi4uz5ubmgq77roiiLMuy7373u9kFF1yQlZSUZPPnz89++9vfDvy1a665Jlu2bNmg+T/60Y+yiy++OCspKck++tGPZps3bx7jHTNRFXLW3ve+92URccKjoaFh7DfOhFPon2v/lyiiEIWetZdffjmrqqrKcrlcduGFF2bf+ta3suPHj4/xrpmICjlrx44dy77+9a9nF110UVZaWprl8/ns9ttvz/72t7+N/caZMF566aUh/9vrrbO1bNmy7JprrjlhzZw5c7KSkpLswgsvzH7wgx8UfN1JWeb+JQAAkK5x/50iAACA8SSKAACApIkiAAAgaaIIAABImigCAACSJooAAICkiSIAACBpoggAAEiaKAIAAJImigAAgKSJIgAAIGmiCAAASNr/D1Xg1HZRHlZ5AAAAAElFTkSuQmCC\n", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "image/png": "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5ujs7Bz2mmuuuSa2bds2GEp79+6NTZs2xac//elh9x87dix6e3uHPAAAAMplfKmf8PDhw9Hf3x/19fVD1uvr62P37t3DXnPzzTfH4cOH45Of/GQURRHHjx+PO+6446Rv1Wtvb4+HH3641KMDAAAM633xqXpbtmyJlStXxpNPPhnbt2+P733ve7Fx48Z45JFHht2/fPny6OnpGXwcOHBglCcGAAD+nJT8jtPEiROjsrIyuru7h6x3d3fH5MmTh73moYceioULF8Ztt90WERFXXHFFHD16NG6//fZ44IEHoqJiaN9VV1dHdXV1qUcHAAAYVsnvOFVVVcWsWbOio6NjcG1gYCA6Ojqiqalp2GvefvvtE+KosrIyIiKKoij1iAAAACNS8jtOERGtra2xePHimD17dsyZMydWr14dR48ejSVLlkRExKJFi2LatGnR3t4eERFz586Nxx9/PK666qpobGyMN954Ix566KGYO3fuYEABAACcKWUJp/nz58ehQ4dixYoV0dXVFTNnzozNmzcPfmDE/v37h9xhevDBB2PcuHHx4IMPxptvvhl/+Zd/GXPnzo2vfvWr5RgPAABgRMYVZ8F74Xp7e6Ouri56enqitrb2TI8DAACcIeVqg/fFp+oBAAC8nwknAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABIlC2c1qxZE9OnT4+amppobGyMrVu3vuf+t956K5YuXRpTpkyJ6urquPTSS2PTpk3lGg8AAOCUjS/Hk27YsCFaW1tj7dq10djYGKtXr46WlpbYs2dPTJo06YT9fX198alPfSomTZoUzz33XEybNi1+8YtfxAUXXFCO8QAAAEZkXFEURamftLGxMa6++up44oknIiJiYGAgGhoa4q677oply5adsH/t2rXx9a9/PXbv3h3nnHPOiF+vt7c36urqoqenJ2pra//k+QEAgLGpXG1Q8rfq9fX1xbZt26K5ufn3L1JREc3NzdHZ2TnsNd///vejqakpli5dGvX19XH55ZfHypUro7+/f9j9x44di97e3iEPAACAcil5OB0+fDj6+/ujvr5+yHp9fX10dXUNe83evXvjueeei/7+/ti0aVM89NBD8dhjj8VXvvKVYfe3t7dHXV3d4KOhoaHU3wYAAMCg98Wn6g0MDMSkSZPiqaeeilmzZsX8+fPjgQceiLVr1w67f/ny5dHT0zP4OHDgwChPDAAA/Dkp+YdDTJw4MSorK6O7u3vIend3d0yePHnYa6ZMmRLnnHNOVFZWDq595CMfia6urujr64uqqqoh+6urq6O6urrUowMAAAyr5HecqqqqYtasWdHR0TG4NjAwEB0dHdHU1DTsNddee2288cYbMTAwMLj2+uuvx5QpU06IJgAAgNFWlrfqtba2xrp16+Lb3/527Nq1Kz7/+c/H0aNHY8mSJRERsWjRoli+fPng/s9//vPxq1/9Ku6+++54/fXXY+PGjbFy5cpYunRpOcYDAAAYkbL8Hqf58+fHoUOHYsWKFdHV1RUzZ86MzZs3D35gxP79+6Oi4vfN1tDQEC+++GLce++9ceWVV8a0adPi7rvvjvvuu68c4wEAAIxIWX6P02jze5wAAICIMfR7nAAAAM42wgkAACAhnAAAABLCCQAAICGcAAAAEsIJAAAgIZwAAAASwgkAACAhnAAAABLCCQAAICGcAAAAEsIJAAAgIZwAAAASwgkAACAhnAAAABLCCQAAICGcAAAAEsIJAAAgIZwAAAASwgkAACAhnAAAABLCCQAAICGcAAAAEsIJAAAgIZwAAAASwgkAACAhnAAAABLCCQAAICGcAAAAEsIJAAAgIZwAAAASwgkAACAhnAAAABLCCQAAICGcAAAAEsIJAAAgIZwAAAASwgkAACAhnAAAABLCCQAAICGcAAAAEsIJAAAgIZwAAAASwgkAACAhnAAAABLCCQAAICGcAAAAEsIJAAAgIZwAAAASwgkAACAhnAAAABLCCQAAICGcAAAAEsIJAAAgIZwAAAASwgkAACAhnAAAABLCCQAAICGcAAAAEsIJAAAgIZwAAAASwgkAACAhnAAAABLCCQAAICGcAAAAEsIJAAAgIZwAAAASwgkAACAhnAAAABLCCQAAICGcAAAAEsIJAAAgIZwAAAASwgkAACAhnAAAABLCCQAAICGcAAAAEsIJAAAgIZwAAAASwgkAACAhnAAAABLCCQAAICGcAAAAEsIJAAAgIZwAAAASwgkAACAhnAAAABLCCQAAICGcAAAAEsIJAAAgIZwAAAASwgkAACAhnAAAABLCCQAAICGcAAAAEsIJAAAgIZwAAAASwgkAACAhnAAAABLCCQAAICGcAAAAEsIJAAAgIZwAAAASwgkAACAhnAAAABLCCQAAICGcAAAAEsIJAAAgIZwAAAASwgkAACAhnAAAABLCCQAAICGcAAAAEsIJAAAgIZwAAAASwgkAACAhnAAAABLCCQAAICGcAAAAEsIJAAAgIZwAAAASwgkAACAhnAAAABJlC6c1a9bE9OnTo6amJhobG2Pr1q2ndN369etj3LhxMW/evHKNBgAAMCJlCacNGzZEa2trtLW1xfbt22PGjBnR0tISBw8efM/r9u3bF1/4whfiuuuuK8dYAAAAp6Us4fT444/H5z73uViyZEl89KMfjbVr18Z5550X3/rWt056TX9/f9xyyy3x8MMPx8UXX1yOsQAAAE5LycOpr68vtm3bFs3Nzb9/kYqK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ABLCCQAAICGcAAAAEsIJAAAgIZwAAAASwgkAACAhnAAAABLCCQAAICGcAAAAEsIJAAAgIZwAAAASwgkAACAhnAAAABLCCQAAICGcAAAAEsIJAAAgIZwAAAASwgkAACAhnAAAABLCCQAAICGcAAAAEsIJAAAgIZwAAAASwgkAACAhnAAAABLCCQAAICGcAAAAEsIJAAAgIZwAAAASwgkAACAhnAAAABLCCQAAICGcAAAAEsIJAAAgIZwAAAASwgkAACAhnAAAABLCCQAAIFHycPrxj38cc+fOjalTp8a4cePihRdeSK/ZsmVLfPzjH4/q6ur40Ic+FM8880ypxwIAADhtJQ+no0ePxowZM2LNmjWntP/nP/953HTTTXHDDTfEzp0745577onbbrstXnzxxVKPBgAAcFrGFUVRlO3Jx42L559/PubNm3fSPffdd19s3LgxXnvttcG1f/iHf4i33norNm/eXK7RAAAATtkZ/xmnzs7OaG5uHrLW0tISnZ2dZ2giAACAocaf6QG6urqivr5+yFp9fX309vbGb37zmzj33HNPuObYsWNx7Nixwa8HBgbiV7/6VfzFX/xFjBs3ruwzAwAA709FUcSRI0di6tSpUVFRuvtEZzycTkd7e3s8/PDDZ3oMAADgferAgQPxV3/1VyV7vjMeTpMnT47u7u4ha93d3VFbWzvs3aaIiOXLl0dra+vg1z09PXHRRRfFgQMHora2tqzzAgAA71+9vb3R0NAQ559/fkmf94yHU1NTU2zatGnI2ksvvRRNTU0nvaa6ujqqq6tPWK+trRVOAABAyX+Ep+QfDvHrX/86du7cGTt37oyI333c+M6dO2P//v0R8bu7RYsWLRrcf8cdd8TevXvji1/8YuzevTuefPLJ+M53vhP33ntvqUcDAAA4LSUPp5/+9Kdx1VVXxVVXXRUREa2trXHVVVfFihUrIiLil7/85WBERUT89V//dWzcuDFeeumlmDFjRjz22GPxzW9+M1paWko9GgAAwGkp6+9xGi29vb1RV1cXPT093qoHAAB/xsrVBmf89zgBAAC83wknAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABIlC2c1qxZE9OnT4+amppobGyMrVu3vuf+1atXx4c//OE499xzo6GhIe6999747W9/W67xAAAATllZwmnDhg3R2toabW1tsX379pgxY0a0tLTEwYMHh93/7LPPxrJly6KtrS127doVTz/9dGzYsCHuv//+cowHAAAwImUJp8cffzw+97nPxZIlS+KjH/1orF27Ns4777z41re+Nez+V155Ja699tq4+eabY/r06XHjjTfGggUL0rtUAAAAo6Hk4dTX1xfbtm2L5ubm379IRUU0NzdHZ2fnsNdcc801sW3btsFQ2rt3b2zatCk+/elPl3o8AACAERtf6ic8fPhw9Pf3R319/ZD1+vr62L1797DX3HzzzXH48OH45Cc/GUVRxPHjx+OOO+446Vv1jh07FseOHRv8ure3t3TfAAAAwB95X3yq3pYtW2LlypXx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AgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACARNnCac2aNTF9+vSoqamJxsbG2Lp16yldt379+hg3blzMmzevXKMBAACMSFnCacOGDdHa2hptbW2xffv2mDFjRrS0tMTBgwff87p9+/bFF77whbjuuuvKMRYAAMBpKUs4Pf744/G5z30ulixZEh/96Edj7dq1cd5558W3vvWtk17T398ft9xySzz88MNx8cUXl2MsAACA01LycOrr64tt27ZFc3Pz71+koiKam5ujs7PzpNd9+ctfjkmTJsWtt96avsaxY8eit7d3yAMAAKBcSh5Ohw8fjv7+/qivrx+yXl9fH11dXcNe85Of/CSefvrpWLdu3Sm9Rnt7e9TV1Q0+Ghoa/uS5AQAA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rDFaenp64qKLLooLL7ywpM9b8nCaOHFiVFZWRnd395D17u7umDx58rDXTJ48eUT7q6uro7q6+oT1uro6/yAyKmpra501RoWzxmhx1hgtzhqjpaKitJ+DV/JP1auqqopZs2ZFR0fH4NrAwEB0dHREU1PTsNc0NTUN2R8R8dJLL510PwAAwGgqy1v1WltbY/HixTF79uyYM2dOrF69Oo4ePRpLliyJiIhFixbFtGnTor29PSIi7r777rj++uvjsccei5tuuinWr18fP/3pT+Opp54qx3gAAAAjUpZwmj9/fhw6dChWrFgRXV1dMXPmzNi8efPgB0Ds379/yK2za665Jp599tl48MEH4/7774+/+Zu/iRdeeCEuv/zyU3q96urqaGtrG/bte1BKzhqjxVljtDhrjBZnjdFSrrNWlt/jBAAAcDYp+c84AQAAnG2EEwAAQEI4AQAAJIQTAABAYsyE05o1a2L69OlRU1MTjY2NsXXr1vfc/93vfjcuu+yyqKmpiSuuuCI2bdo0SpMy1o3krK1bty6uu+66mDBhQkyYMCGam5vTswnvGumfa+9av359jBs3LubNm1feATlrjPSsvfXWW7F06dKYMmVKVFdXx6WXXurfo5ySkZ611atXx4c//OE499xzo6GhIe6999747W9/O0rTMlb9+Mc/jrlz58bUqVNj3Lhx8cILL6TXbNmyJT7+8Y9HdXV1fOhDH4pnnnlmxK87JsJpw4YN0draGm1tbbF9+/aYMWNGtLS0xMGDB4fd/8orr8SCBQvi1ltvjR07dsS8efNi3rx58dprr43y5Iw1Iz1rW7ZsiQULFsTLL78cnZ2d0dDQEDfeeGO8+eabozw5Y81Iz9q79u3bF1/4whfiuuuuG6VJGetGetb6+vriU5/6VOzbty+ee+652LNnT6xbty6mTZs2ypMz1oz0rD377LOxbNmyaGtri127dsXTTz8dGzZsiPvvv3+UJ2esOXr0aMyYMSPWrFlzSvt//vOfx0033RQ33HBD7Ny5M+6555647bbb4sUXXxzZCxdjwJw5c4qlS5cOft3f319MnTq1aG9vH3b/Zz/72eKmm24astbY2Fj84z/+Y1nnZOwb6Vn7Y8ePHy/OP//84tvf/na5RuQscTpn7fjx48U111xTfPOb3ywWL15c/N3f/d0oTMpYN9Kz9o1vfKO4+OKLi76+vtEakbPESM/a0qVLi7/9278dstba2lpce+21ZZ2Ts0tEFM8///x77vniF79YfOxjHxuyNn/+/KKlpWVEr/W+v+PU19cX27Zti+bm5sG1ioqKaG5ujs7OzmGv6ezsHLI/IqKlpeWk+yHi9M7aH3v77bfjnXfeiQsvvLBcY3IWON2z9uUvfzkmTZoUt95662iMyVngdM7a97///WhqaoqlS5dGfX19XH755bFy5cro7+8frbEZg07nrF1zzTWxbdu2wbfz7d27NzZt2hSf/vSnR2Vm/nyUqg3Gl3Kocjh8+HD09/dHfX39kPX6+vrYvXv3sNd0dXUNu7+rq6tsczL2nc5Z+2P33XdfTJ069YR/OOEPnc5Z+8lPfhJPP/107Ny5cxQm5GxxOmdt79698aMf/ShuueWW2LRpU7zxxhtx5513xjvvvBNtbW2jMTZj0OmctZtvvjkOHz4cn/zkJ6Moijh+/Hjccccd3qpHyZ2sDXp7e+M3v/lNnHvuuaf0PO/7O04wVqxatSrWr18fzz//fNTU1JzpcTiLHDlyJBYuXBjr1q2LiRMnnulxOMsNDAzEpEmT4qmnnopZs2bF/Pnz44EHHoi1a9ee6dE4y2zZsiVWrlwZTz75ZGzfvj2+973vxcaNG+ORRx4506PBsN73d5wmTpwYlZWV0d3dPWS9u7s7Jk+ePOw1kydPHtF+iDi9s/auRx99NFatWhU//OEP48orryznmJwFRnrWfvazn8W+ffti7ty5g2sDAwMRETF+/PjYs2dPXHLJJeUdmjHpdP5cmzJlSpxzzjlRWVk5uPaRj3wkurq6oq+vL6qqqso6M2PT6Zy1hx56KBYuXBi33XZbRERcccUVcfTo0bj99tvjgQceiIoK/3+f0jhZG9TW1p7y3aaIMXDHqaqqKmbNmhUdHR2DawMDA9HR0RFNTU3DXtPU1DRkf0TESy+9dNL9EHF6Zy0i4mtf+1o88sgjsXnz5pg9e/ZojMoYN9Kzdtlll8Wrr74aO3fuHHx85jOfGfx0oIaGhtEcnzHkdP5cu/baa+ONN94YjPOIiNdffz2mTJkimjip0zlrb7/99glx9G6w/+5n/qE0StYGI/vcijNj/fr1RXV1dfHMM88U//3f/13cfvvtxQUXXFB0dXUVRVEUCxcuLJYtWza4/z//8z+L8ePHF48++mixa9euoq2trTjnnHOKV1999Ux9C4wRIz1rq1atKqqqqornnnuu+OUvfzn4OHLkyJn6FhgjRnrW/phP1eNUjfSs7d+/vzj//POLf/qnfyr27NlT/OAHPygmTZpUfOUrXzlT3wJjxEjPWltbW3H++ecX//7v/17s3bu3+I//+I/ikksuKT772c+eqW+BMeLIkSPFjh07ih07dhQRUTz++OPFjh07il/84hdFURTFsmXLioULFw7u37t3b3HeeecV//zP/1zs2rWrWLNmTVFZWVls3rx5RK87JsKpKIriX//1X4uLLrqoqKqqKubMmVP813/91+Bfu/7664vFixcP2f+d73ynuPTSS4uqqqriYx/7WLFx48ZRnpixaiRn7YMf/GARESc82traRn9wxpyR/rn2h4QTIzHSs/bKK68UjY2NRXV1dXHxxRcXX/3qV4vjx4+P8tSMRSM5a++8807xpS99qbjkkkuKmpqaoqGhobjzzjuL//3f/x39wRlTXn755WH/++vd87V48eLi+uuvP+GamTNnFlVVVcXFF19c/Nu//duIX3dcUbgXCgAA8F7e9z/jBAAAcKYJJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgP/H3n2HN1X9fwB/Z7eltKXQQWnZexYLVAQFWWVvgYpsQRnK+IqKfhG+iuJebJQhsreIoGJlymyx7FmgpUALBdLSkaTJvb8/lP6sdNA26cl4v54nz2OTm3vel5jcfHLOPacQLJyIiIiIiIgKwcKJiIiIiIioECyciIiIiIiICsHCiYiIiIiIqBAsnIiIiIiIiArBwomIiIiIiKgQLJyIiIiIiIgKwcKJiIiIiIioECyciIiIiIiICsHCiYiIiIiIqBAsnIiIiIiIiArBwomIiIiIiKgQLJyIiIiIiIgKwcKJiIiIiIioECyciIiIiIiICsHCiYiIiIiIqBAsnIiIiIiIiArBwomIiIiIiKgQLJyIiIiIiIgKwcKJiIiIiIioECyciIiIiIiICsHCiYiIiIiIqBAsnIiI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X19f/O9//0O/fv0QGBiIuLg4vP7666hZsyYiIiIEpnZu48ePx+rVq/HDDz+gbNmyOddkeHt7w93dHd7e3hg1ahSmTJkCX19feHl54ZVXXkHLli3x5JNPCk7vnAp7TeLi4rB69Wp07doV5cuXx8mTJzF58mQ888wzaNy4seD0zmnatGno0qULKleujAcPHmD16tXYs2cPfvnlF75HBCnoNeF7pBSIntbPGubMmSNXrlxZ1mq1cosWLeTDhw+LjuSyBg4cKFesWFHWarVypUqV5IEDB8qXL18WHcul7N69WwbwyG3YsGGyLP81Jfn06dPlgIAAWafTye3bt5cvXLggNrSTK+g1yczMlDt16iT7+fnJGo1GrlKlijx69Gg5KSlJdGynltfrAUBetmxZzjZZWVnyuHHj5HLlyskeHh5ynz595Fu3bokL7eQKe00SEhLkZ555Rvb19ZV1Op1cs2ZNeerUqXJqaqrY4E5s5MiRcpUqVWStViv7+fnJ7du3l3/99decx/keKX0FvSZ8j9ieQpZluTQLNSIiIiIiIkfj0Nc4ERERERERlQYWTkRERERERIVg4URERERERFQIFk5ERERERESFYOFERERERERUCBZOREREREREhWDhREREREREVAgWTkRERERERIVg4URERERERFQIFk5ERERERESFYOFERERERERUCBZOREREREREhWDhREREREREVAgWTkRERERERIVg4URERERERFQIFk5ERERERESFYOFERERERERUCBZOREREREREhWDhREREREREVAgWTkRERERERIVg4URERERERFQIFk5ERERERESFYOFERERERERUCBZOREREREREhWDhREREREREVAgWTkRERERERIVg4URERERERFQIFk5ERERERESFYOFERERERERUCBZORPR/7d1/bNX1vfjxFz9sq5mteLmUH7eOq7vObSo4kK46YrzpbDLDLn/cjIsGCNF5nVzjbHYnqKNz3lHu5gzJFUdk7rrkxgubmd5lELyukyy79oaMH4nmAoYxBjFrgbtLy3Brof18/9h33TqKL8rOKZY9Hsn5o2/fn3NeNW/Rp5/TUwAAEsIJAAAgIZwAAAASwgkAACAhnAAAABLCCQAAICGcAAAAEsIJAAAgIZwAAAASwgkAACAhnAAAABLCCQAAICGcAAAAEsIJAAAgIZwAAAASwgkAACAhnAAAABLCCQAAICGcAAAAEsIJAAAgIZwAAAASwgkAACAhnAAAABLCCQAAICGcAAAAEsIJAAAgIZwAAAASwgkAACAhnAAAABLCCQAAICGcAAAAEsIJAAAgIZwAAAASwgkAACAhnAAAABLCCQAAICGcAAAAEsIJAAAgIZwAAAASwgkAACAhnAAAABLCCQAAICGcAAAAEsIJAAAgIZwAAAASwgkAACAhnAAAABLCCQAAICGcAAAAEsIJAAAgIZwAAAASwgkAACAhnAAAABLCCQAAICGcAAAAEsIJAAAgIZwAAAASwgkAACAhnAAAABLCCQAAICGcAAAAEsIJAAAgIZwAAAASwgkAACAhnAAAABLCCQAAICGcAAAAEsIJAAAgIZwAAAASwgkAACAhnAAAABLCCQAAICGcAAAAEsIJAAAgIZwAAAASwgkAACAhnAAAABLCCQAAICGcAAAAEsIJAAAgIZwAAAASwgkAACAhnAAAABLCCQAAICGcAAAAEsIJAAAgIZwAAAASwgkAACAhnAAAABLCCQAAICGcAAAAEsIJAAAgIZwAAAASwgkAACAhnAAAABLCCQAAICGcAAAAEsIJAAAgIZwAAAASwgkAACAhnAAAABLCCQAAICGcAAAAEsIJAAAgIZwAAAASwgkAACAhnAAAABLCCQAAICGcAAAAEsIJAAAgIZwAAAASwgkAACAhnAAAABLCCQAAICGcAAAAEsIJAAAgIZwAAAASwgkAACAhnAAAABLCCQAAICGcAAAAEsIJAAAgIZwAAAASwgkAACAhnAAAABLCCQAAICGcAAAAEsIJAAAgIZwAAAASwgkAACAhnAAAABLCCQAAICGcAAAAEsIJAAAgIZwAAAASwgkAACAhnAAAABLCCQAAICGcAAAAEsIJAAAgIZwAAAASwgkAACAhnAAAABLCCQAAICGcAAAAEsIJAAAgIZwAAAASwgkAACAhnAAAABLCCQAAICGcAAAAEsIJAAAgIZwAAAASwgkAACAhnAAAABLCCQAAICGcAAAAEsIJAAAgIZwAAAASwgkAACAhnAAAABLCCQAAICGcAAAAEsIJAAAgIZwAAAASwgkAACAhnAAAABLCCQAAICGcAAAAEsIJAAAgIZwAAAASwgkAACAhnAAAABLCCQAAICGcAAAAEsIJAAAgIZwAAAASwgkAACAh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AACQKFs4rV27NqZPnx5VVVVRX18f27Zte8f9x44di2XLlsWUKVOisrIyrr766ti8eXO5xgMAADhr48vxpBs3bozm5uZYt25d1NfXx5o1a6KpqSn27t0bkyZNOm1/b29vfOxjH4tJkybFCy+8ENOmTYuf/exncdlll5VjPAAAgGEZUxRFUeonra+vjxtvvDGeeuqpiIjo7++Purq6uP/++2P58uWn7V+3bl185StfiT179sRFF1007Nfr7u6Ompqa6Orqiurq6j96fgAAYHQqVxuU/K16vb29sX379mhsbPzdi4wdG42NjdHe3j7kNd/97nejoaEhli1bFrW1tXHttdfGqlWroq+vr9TjAQAADFvJ36p39OjR6Ovri9ra2kHrtbW1sWfPniGv2b9/f/zgBz+IO++8MzZv3hz79u2L++67L06ePBktLS2n7e/p6Ymenp6Br7u7u0v7TQAAAPyed8Wn6vX398ekSZPimWeeiVmzZsWCBQvikUceiXXr1g25v7W1NWpqagYedXV1IzwxAADwp6Tk4TRx4sQYN25cdHZ2Dlrv7OyMyZMnD3nNlClT4uqrr45x48YNrH3gAx+Ijo6O6O3tPW3/ihUroqura+Bx6NCh0n4TAAAAv6fk4VRRURGzZs2Ktra2gbX+/v5oa2uLhoaGIa+5+eabY9++fdHf3z+w9uabb8aUKVOioqLitP2VlZVRXV096AEAAFAuZXmrXnNzc6xfvz6++c1vxu7du+PTn/50nDhxIpYuXRoREYsXL44VK1YM7P/0pz8dv/jFL+KBBx6IN998MzZt2hSrVq2KZcuWlWM8AACAYSnL73FasGBBHDlyJFauXBkdHR0xc+bM2LJly8AHRhw8eDDGjv1ds9XV1cXLL78cDz74YFx//fUxbdq0eOCBB+Khhx4qx3gAAADDUpbf4zTS/B4nAAAgYhT9HicAAIALjXACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAIBE2cJp7dq1MX369Kiqqor6+vrYtm3bWV23YcOGGDNmTMyfP79cowEAAAxLWcJp48aN0dzcHC0tLbFjx46YMWNGNDU1xeHDh9/xugMHDsRnP/vZmDt3bjnGAgAAOCdlCacnn3wyPvWpT8XSpUvjgx/8YKxbty4uueSS+MY3vnHGa/r6+uLOO++Mxx57LK688spyjAUAAHBOSh5Ovb29sX379mhsbPzdi4wdG42NjdHe3n7G6774xS/GpEmT4q677kpfo6enJ7q7uwc9AAAAyqXk4XT06NHo6+uL2traQeu1tbXR0dEx5DU/+tGP4tlnn43169ef1Wu0trZGTU3NwKOuru6PnhsAAOBMzvun6h0/fjwWLVoU69evj4kTJ57VNStWrIiurq6Bx6FDh8o8JQAA8KdsfKmfcOLEiTFu3Ljo7OwctN7Z2RmTJ08+bf9PfvKTOHDgQMybN29grb+//zfDjR8fe/fujauuumrQNZWVlVFZWVnq0QEAAIZU8jtOFRUVMWvWrGhraxtY6+/vj7a2tmhoaDht/zXXXBOv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Z+273/1uNDQ0xLJly6K2tjauvfbaWLVqVfT19Y3U2IxC53LWbrrppti+ffvA2/n2798fmzdvjo9//OMjMjN/OkrVBuNLOVQ5HD16NPr6+qK2tnbQem1tbezZs2fIazo6Oobc39HRUbY5Gf3O5az9oYceeiimTp162j+c8PvO5az96Ec/imeffTZ27do1AhNyoTiXs7Z///74wQ9+EHfeeWds3rw59u3bF/fdd1+cPHkyWlpaRmJsRqFzOWt33HFHHD16ND760Y9GURRx6tSpuPfee71Vj5I7Uxt0d3fHr371q7j44ovP6nne9XecYLRYvXp1bNiwIV588cWoqqo63+NwATl+/HgsWrQo1q9fHxMnTjzf43CB6+/vj0mTJsUzzzwTs2bNigULFsQjjzwS69atO9+jcYHZunVrrFq1Kp5++unYsWNHfOc734lNmzbF448/fr5HgyG96+84TZw4McaNGxednZ2D1js7O2Py5MlDXjN58uRh7YeIcztrv/XEE0/E6tWr4/vf/35cf/315RyTC8Bwz9pPfvKTOHDgQMybN29grb+/PyIixo8fH3v37o2rrrqqvEMzKp3Ln2tTpkyJiy66KMaNGzew9oEPfCA6Ojqit7c3Kioqyjozo9O5nLXPf/7zsWjRorj77rsjIuK6666LEydOxD333BOPPPJIjB3r/+9TGmdqg+rq6rO+2xQxCu44VVRUxKxZs6KtrW1grb+/P9ra2qKhoWHIaxoaGgbtj4h45ZVXzrgfIs7trEVEfPnLX47HH388tmzZErNnzx6JURnlhnvWrrnmmnj99ddj165dA49PfOITA58OVFdXN5LjM4qcy59rN998c+zbt28gziMi3nzzzZgyZYpo4ozO5ay9/fbbp8XRb4P9Nz/zD6VRsjYY3udWnB8bNmwoKisri+eee674n//5n+Kee+4pLrvssqKjo6MoiqJYtGhRsXz58oH9//Vf/1WMHz++eOKJJ4rdu3cXLS0txUUXXVS8/vrr5+tbYJQY7llbvXp1UVFRUbzwwgvFz3/+84HH8ePHz9e3wCgx3LP2h3yqHmdruGft4MGDxaWXXlr8wz/8Q7F3797ie9/7XjFp0qTin/7pn87Xt8AoMdyz1tLSUlx66aXFv//7vxf79+8v/vM//7O46qqrik9+8pPn61tglDh+/Hixc+fOYufOnUVEFE8++WSxc+fO4mc/+1lRFEWxfPnyYtGiRQP79+/fX1xyySXFP/7jPxa7d+8u1q5dW4wbN67YsmXLsF53VIRTURTFv/zLvxRXXHFFUVFRUcyZM6f47//+74G/dssttxRLliwZtP9b3/pWcfXVVxcVFRXFhz70oWLTpk0jPDGj1XDO2nvf+94iIk57tLS0jPzgjDrD/XPt9wknhmO4Z+21114r6uvri8rKyuLKK68svvSlLxWnTp0a4akZjYZz1k6ePFl84QtfKK666qqiqqqqqKurK+67777i//7v/0Z+cEaVV199dcj//vrt+VqyZElxyy23nHbNzJkzi4qKiuLKK68s/vVf/3XYrzumKNwLBQAAeCfv+p9xAgAAON+EEwAAQEI4AQAAJIQTAABAQjgBAAAkhBMAAEBCOAEAACSEEwAAQEI4AQAAJIQTAABAQjgBAAAkhBMAAEDi/wH+xVHLO2dQ6AAAAABJRU5ErkJggg==\n", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "image/png": "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5ujs7Bz2mmuuuSa2bds2GEp79+6NTZs2xac//elh9x87dix6e3uHPAAAAMplfKmf8PDhw9Hf3x/19fVD1uvr62P37t3DXnPzzTfH4cOH45Of/GQURRHHjx+PO+6446Rv1Wtvb4+HH3641KMDAAAM633xqXpbtmyJlStXxpNPPhnbt2+P733ve7Fx48Z45JFHht2/fPny6OnpGXwcOHBglCcGAAD+nJT8jtPEiROjsrIyuru7h6x3d3fH5MmTh73moYceioULF8Ztt90WERFXXHFFHD16NG6//fZ44IEHoqJiaN9VV1dHdXV1qUcHAAAYVsnvOFVVVcWsWbOio6NjcG1gYCA6Ojqiqalp2GvefvvtE+KosrIyIiKKoij1iAAAACNS8jtOERGtra2xePHimD17dsyZMydWr14dR48ejSVLlkRExKJFi2LatGnR3t4eERFz586Nxx9/PK666qpobGyMN954Ix566KGYO3fuYEABAACcKWUJp/nz58ehQ4dixYoV0dXVFTNnzozNmzcPfmDE/v37h9xhevDBB2PcuHHx4IMPxptvvhl/+Zd/GXPnzo2vfvWr5RgPAABgRMYVZ8F74Xp7e6Ouri56enqitrb2TI8DAACcIeVqg/fFp+oBAAC8nwknAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABIlC2c1qxZE9OnT4+amppobGyMrVu3vuf+t956K5YuXRpTpkyJ6urquPTSS2PTpk3lGg8AAOCUjS/Hk27YsCFaW1tj7dq10djYGKtXr46WlpbYs2dPTJo06YT9fX198alPfSomTZoUzz33XEybNi1+8YtfxAUXXFCO8QAAAEZkXFEURamftLGxMa6++up44oknIiJiYGAgGhoa4q677oply5adsH/t2rXx9a9/PXbv3h3nnHPOiF+vt7c36urqoqenJ2pra//k+QEAgLGpXG1Q8rfq9fX1xbZt26K5ufn3L1JREc3NzdHZ2TnsNd///vejqakpli5dGvX19XH55ZfHypUro7+/f9j9x44di97e3iEPAACAcil5OB0+fDj6+/ujvr5+yHp9fX10dXUNe83evXvjueeei/7+/ti0aVM89NBD8dhjj8VXvvKVYfe3t7dHXV3d4KOhoaHU3wYAAMCg98Wn6g0MDMSkSZPiqaeeilmzZsX8+fPjgQceiLVr1w67f/ny5dHT0zP4OHDgwChPDAAA/Dkp+YdDTJw4MSorK6O7u3vIend3d0yePHnYa6ZMmRLnnHNOVFZWDq595CMfia6urujr64uqqqoh+6urq6O6urrUowMAAAyr5HecqqqqYtasWdHR0TG4NjAwEB0dHdHU1DTsNddee2288cYbMTAwMLj2+uuvx5QpU06IJgAAgNFWlrfqtba2xrp16+Lb3/527Nq1Kz7/+c/H0aNHY8mSJRERsWjRoli+fPng/s9//vPxq1/9Ku6+++54/fXXY+PGjbFy5cpYunRpOcYDAAAYkbL8Hqf58+fHoUOHYsWKFdHV1RUzZ86MzZs3D35gxP79+6Oi4vfN1tDQEC+++GLce++9ceWVV8a0adPi7rvvjvvuu68c4wEAAIxIWX6P02jze5wAAICIMfR7nAAAAM42wgkAACAhnAAAABLCCQAAICGcAAAAEsIJAAAgIZwAAAASwgkAACAhnAAAABLCCQAAICGcAAAAEsIJAAAgIZwAAAASwgkAACAhnAAAABLCCQAAICGcAAAAEsIJAAAgIZwAAAASwgkAACAhnAAAABLCCQAAICGcAAAAEsIJAAAgIZwAAAASwgkAACAhnAAAABLCCQAAICGcAAAAEsIJAAAgIZwAAAASwgkAACAhnAAAABLCCQAAICGcAAAAEsIJAAAgIZwAAAASwgkAACAhnAAAABLCCQAAICGcAAAAEsIJAAAgIZwAAAASwgkAACAhnAAAABLCCQAAICGcAAAAEsIJAAAgIZwAAAASwgkAACAhnAAAABLCCQAAICGcAAAAEsIJAAAgIZwAAAASwgkAACAhnAAAABLCCQAAICGcAAAAEsIJAAAgIZwAAAASwgkAACAhnAAAABLCCQAAICGcAAAAEsIJAAAgIZwAAAASwgkAACAhnAAAABLCCQAAICGcAAAAEsIJAAAgIZwAAAASwgkAACAhnAAAABLCCQAAICGcAAAAEsIJAAAgIZwAAAASwgkAACAhnAAAABLCCQAAICGcAAAAEsIJAAAgIZwAAAASwgkAACAhnAAAABLCCQAAICGcAAAAEsIJAAAgIZwAAAASwgkAACAhnAAAABLCCQAAICGcAAAAEsIJAAAgIZwAAAASwgkAACAhnAAAABLCCQAAICGcAAAAEsIJAAAgIZwAAAASwgkAACAhnAAAABLCCQAAICGcAAAAEsIJAAAgIZwAAAASwgkAACAhnAAAABLCCQAAICGcAAAAEsIJAAAgIZwAAAASwgkAACAhnAAAABLCCQAAICGcAAAAEsIJAAAgIZwAAAASwgkAACAhnAAAABJlC6c1a9bE9OnTo6amJhobG2Pr1q2ndN369etj3LhxMW/evHKNBgAAMCJlCacNGzZEa2trtLW1xfbt22PGjBnR0tISBw8efM/r9u3bF1/4whfiuuuuK8dYAAAAp6Us4fT444/H5z73uViyZEl89KMfjbVr18Z5550X3/rWt056TX9/f9xyyy3x8MMPx8UXX1yOsQAAAE5LycOpr68vtm3bFs3Nzb9/kYqKaG5ujs7OzpNe9+UvfzkmTZoUt956a/oax44di97e3iEPAACAcil5OB0+fDj6+/ujvr5+yHp9fX10dXUNe81PfvKTePrpp2PdunWn9Brt7e1RV1c3+GhoaPiT5wYAADiZM/6pekeOHImFCxfGunXrYuLEiad0zfLly6Onp2fwceDAgTJPCQAA/DkbX+onnDhxYlRWVkZ3d/eQ9e7u7pg8efIJ+3/2s5/Fvn37Yu7cuYNrAwMDvxtu/PjYs2dPXHLJJUOuqa6ujurq6lKPDgAAMKyS33GqqqqKWbNmRUdHx+DawMBAdHR0RFNT0wn7L7vssnj11Vdj586dg4/PfOYzccMNN8TOnTu9DQ8AADjjSn7HKSKitbU1Fi9eHLNnz445c+bE6tWr4+jRo7FkyZKIiFi0aFFMmzYt2tvbo6amJi6//PIh119wwQURESesAwAAnAllCaf58+fHoUOHYsWKFdHV1RUzZ86MzZs3D35gxP79+6Oi4oz/eBUAAMApGVcURXGmh/hT9fb2Rl1dXfT09ERtbe2ZHgcAADhDytUGbvsAAAAkhBMAAEBCOAEAACSEEwAAQEI4AQAAJIQTAABAQjgBAAAkhBMAAEBCOAEAACSEEwAAQEI4AQAAJIQTAABAQjgBAAAkhBMAAEBCOAEAACSEEwAAQEI4AQAAJIQTAABAQjgBAAAkhBMAAEBCOAEAACSEEwAAQEI4AQAAJIQTAABAQjgBAAAkhBMAAEBCOAEAACSEEwAAQEI4AQAAJIQTAABAQjgBAAAkhBMAAEBCOAEAACSEEwAAQEI4AQAAJIQTAABAQjgBAAAkhBMAAEBCOAEAACSEEwAAQEI4AQAAJIQTAABAQjgBAAAkhBMAAEBCOAEAACSEEwAAQEI4AQAAJIQTAABAQjgBAAAkhBMAAEBCOAEAACSEEwAAQEI4AQAAJIQTAABAQjgBAAAkhBMAAEBCOAEAACSEEwAAQEI4AQAAJIQTAABAQjgBAAAkhBMAAEBCOAEAACSEEwAAQEI4AQAAJIQTAABAQjgBAAAkhBMAAEBCOAEAACSEEwAAQEI4AQAAJIQTAABAQjgBAAAkhBMAAEBCOAEAACSEEwAAQEI4AQAAJIQTAABAQjgBAAAkhBMAAEBCOAEAACSEEwAAQEI4AQAAJIQTAABAQjgBAAAkhBMAAEBCOAEAACSEEwAAQEI4AQAAJIQTAABAQjgBAAAkhBMAAEBCOAEAACSEEwAAQEI4AQAAJIQTAABAQjgBAAAkhBMAAEBCOAEAACSEEwAAQEI4AQAAJIQTAABAQjgBAAAkhBMAAEBCOAEAACSEEwAAQEI4AQAAJIQTAABAQjgBAAAkhBMAAEBCOAEAACSEEwAAQEI4AQAAJIQTAABAQjgBAAAkhBMAAEBCOAEAACSEEwAAQEI4AQAAJIQTAABAQjgBAAAkhBMAAEBCOAEAACTKFk5r1qyJ6dOnR01NTTQ2NsbWrVtPunfdunVx3XXXxYQJE2LChAnR3Nz8nvsBAABGU1nCacOGDdHa2hptbW2xffv2mDFjRrS0tMTBgweH3b9ly5ZYsGBBvPzyy9HZ2RkNDQ1x4403xptvvlmO8QAAAEZkXFEURamftLGxMa6++up44oknIiJiYGAgGhoa4q677oply5al1/f398eECRPiiSeeiEWLFqX7e3t7o66uLnp6eqK2tvZPnh8AABibytUGJb/j1NfXF9u2bYvm5ubfv0hFRTQ3N0dnZ+cpPcfbb78d77zzTlx44YXD/vVjx45Fb2/vkAcAAEC5lDycDh8+HP39/VFfXz9kvb6+Prq6uk7pOe67776YOnXqkPj6Q+3t7VFXVzf4aGho+JPnBgAAOJn33afqrVq1KtavXx/PP/981NTUDLtn+fLl0dPTM/g4cODAKE8JAAD8ORlf6iecOHFiVFZWRnd395D17u7umDx58nte++ijj8aqVavihz/8YVx55ZUn3VddXR3V1dUlmRcAACBT8jtOVVVVMWvWrOjo6BhcGxgYiI6OjmhqajrpdV/72tfikUceic2bN8fs2bNLPRYAAMBpK/kdp4iI1tbWWLx4ccyePTvmzJkTq1evjqNHj8aSJUsiImLRokUxbdq0aG9vj4iIf/mXf4kVK1bEs88+G9OnTx/8WagPfOAD8YEPfKAcIwIAAJyysoTT/Pnz49ChQ7FixYro6uqKmTNnxubNmwc/MGL//v1RUfH7m13f+MY3oq+vL/7+7/9+yPO0tbXFl770pXKMCAAAcMrK8nucRpvf4wQAAESMod/jBAAAcLYRTgAAAAnhBAAAkBBOAAAACeEEAACQEE4AAAAJ4QQAAJAQTgAAAAnhBAAAkBBOAAAACeEEAACQEE4AAAAJ4QQAAJAQTgAAAAnhBAAAkBBOAAAACeEEAACQEE4AAAAJ4QQAAJAQTgAAAAnhBAAAkBBOAAAACeEEAACQEE4AAAAJ4QQAAJAQTgAAAAnhBAAAkBBOAAAACeEEAACQEE4AAAAJ4QQAAJAQTgAAAAnhBAAAkBBOAAAACeEEAACQEE4AAAAJ4QQAAJAQTgAAAAnhBAAAkBBOAAAACeEEAACQEE4AAAAJ4QQAAJAQTgAAAAnhBAAAkBBOAAAACeEEAACQEE4AAAAJ4QQAAJAQTgAAAAnhBAAAkBBOAAAACeEEAACQEE4AAAAJ4QQAAJAQTgAAAAnhBAAAkBBOAAAACeEEAACQEE4AAAAJ4QQAAJAQTgAAAAnhBAAAkBBOAAAACeEEAACQEE4AAAAJ4QQAAJAQTgAAAAnhBAAAkBBOAAAACeEEAACQEE4AAAAJ4QQAAJAQTgAAAAnhBAAAkBBOAAAACeEEAACQEE4AAAAJ4QQAAJAQTgAAAAnhBAAAkBBOAAAACeEEAACQEE4AAAAJ4QQAAJAQTgAAAAnhBAAAkBBOAAAACeEEAACQEE4AAAAJ4QQAAJAQTgAAAAnhBAAAkBBOAAAACeEEAACQEE4AAAAJ4QQAAJAQTgAAAAnhBAAAkBBOAAAACeEEAACQEE4AAAAJ4QQAAJAQTgAAAAnhBAAAkBBOAAAACeEEAACQEE4AAAAJ4QQAAJAQTgAAAAnhBAAAkBBOAAAACeEEAACQEE4AAAAJ4QQAAJAQTgAAAAnhBAAAkBBOAAAACeEEAACQEE4AAAAJ4QQAAJAQTgAAAAnhBAAAkChbOK1ZsyamT58eNTU10djYGFu3bn3P/d/97nfjsssui5qamrjiiiti06ZN5RoNAABgRMoSThs2bIjW1tZoa2uL7du3x4wZM6KlpSUOHjw47P5XXnklFixYELfeemvs2LEj5s2bF/PmzYvXXnutHOMBAACMyLiiKIpSP2ljY2NcffXV8cQTT0RExMDAQDQ0NMRdd90Vy5YtO2H//Pnz4+jRo/GDH/xgcO0Tn/hEzJw5M9auXZu+Xm9vb9TV1UVPT0/U1taW7hsBAADGlHK1wfiSPdP/19fXF9u2bYvly5cPrlVUVERzc3N0dnYOe01nZ2e0trYOWWtpaYkXXnhh2P3Hjh2LY8eODX7d09MTEb/7mwQAAPz5ercJSn1/qOThdPjw4ejv74/6+voh6/X19bF79+5hr+nq6hp2f1dX17D729vb4+GHHz5hvaGh4TSnBgAAzib/8z//E3V1dSV7vpKH02hYvnz5kDtUb731Vnzwgx+M/fv3l/RvDvyx3t7eaGhoiAMHDnhbKGXlrDFanDVGi7PGaOnp6YmLLrooLrzwwpI+b8nDaeLEiVFZWRnd3d1D1ru7u2Py5MnDXjN58uQR7a+uro7q6uoT1uvq6vyDyKiora111hgVzhqjxVljtDhrjJaKitJ+Dl7JP1WvqqoqZs2aFR0dHYNrAwMD0dHREU1NTcNe09TUNGR/RMRLL7100v0AAACjqSxv1WttbY3FixfH7NmzY86cObF69eo4evRoLFmyJCIiFi1aFNOmTYv29vaIiLj77rvj+uuvj8ceeyxuuummWL9+ffz0pz+Np556qhzjAQAAjEhZwmn+/Plx6NChWLFiRXR1dcXMmTNj8+bNgx8AsX///iG3zq655pp49tln48EHH4z7778//uZv/iZeeOGFuPzyy0/p9aqrq6OtrW3Yt+9BKTlrjBZnjdHirDFanDVGS7nOWll+jxMAAMDZpOQ/4wQAAHC2EU4AAAAJ4QQAAJAQTgAAAIkxE05r1qyJ6dOnR01NTTQ2NsbWrVvfc/93v/vduOyyy6KmpiauuOKK2LRp0yhNylg3krO2bt26uO6662LChAkxYcKEaG5uTs8mvGukf669a/369TFu3LiYN29eeQfkrDHSs/bWW2/F0qVLY8qUKVFdXR2XXnqpf49ySkZ61lavXh0f/vCH49xzz42Ghoa4995747e//e0oTctY9eMf/zjmzp0bU6dOjXHjxsULL7yQXrNly5b4+Mc/HtXV1fGhD30onnnmmRG/7pgIpw0bNkRra2u0tbXF9u3bY8aMGdHS0hIHDx4cdv8rr7wSCxYsiFtvvTV27NgR8+bNi3nz5sVrr702ypMz1oz0rG3ZsiUWLFgQL7/8cnR2dkZDQ0PceOON8eabb47y5Iw1Iz1r79q3b1984QtfiOuuu26UJmWsG+lZ6+vri0996lOxb9++eO6552LPnj2xbt26mDZt2ihPzlgz0rP27LPPxrJly6KtrS127doVTz/9dGzYsCHuv//+UZ6csebo0aMxY8aMWLNmzSnt//nPfx433XRT3HDDDbFz586455574rbbbosXX3xxZC9cjAFz5swpli5dOvh1f39/MXXq1KK9vX3Y/Z/97GeLm266achaY2Nj8Y//+I9lnZOxb6Rn7Y8dP368OP/884tvf/vb5RqRs8TpnLXjx48X11xzTfHNb36zWLx4cfF3f/d3ozApY91Iz9o3vvGN4uKLLy76+vpGa0TOEiM9a0uXLi3+9m//dshaa2trce2115Z1Ts4uEVE8//zz77nni1/8YvGxj31syNr8+fOLlpaWEb3W+/6OU19fX2zbti2am5sH1yoqKqK5uTk6OzuHvaazs3PI/oiIlpaWk+6HiNM7a3/s7bffjnfeeScuvPDCco3JWeB0z9qXv/zlmDRpUtx6662jMSZngdM5a9///vejqakpli5dGvX19XH55ZfHypUro7+/f7TGZgw6nbN2zTXXxLZt2wbfzrd3797YtGlTfPrTnx6VmfnzUao2GF/Kocrh8OHD0d/fH/X19UPW6+vrY/fu3cNe09XVNez+rq6uss3J2Hc6Z+2P3XfffTF16tQT/uGEP3Q6Z+0nP/lJPP3007Fz585RmJCzxemctb1798aPfvSjuOWWW2LTpk3xxhtvxJ133hnvvPNOtLW1jcbYjEGnc9ZuvvnmOHz4cHzyk5+Moiji+PHjcccdd3irHiV3sjbo7e2N3/zmN3Huueee0vO87+84wVixatWqWL9+fTz//PNRU1NzpsfhLHLkyJFYuHBhrFu3LiZOnHimx+EsNzAwEJMmTYqnnnoqZs2aFfPnz48HHngg1q5de6ZH4yyzZcuWWLlyZTz55JOxffv2+N73vhcbN26MRx555EyPBsN6399xmjhxYlRWVkZ3d/eQ9e7u7pg8efKw10yePHlE+yHi9M7aux599NFYtWpV/PCHP4wrr7yynGNyFhjpWfvZz34W+/bti7lz5w6uDQwMRETE+PHjY8+ePXHJJZeUd2jGpNP5c23KlClxzjnnRGVl5eDaRz7ykejq6oq+vr6oqqoq68yMTadz1h566KFYuHBh3HbbbRERccUVV8TRo0fj9ttvjwceeCAqKvz/fUrjZG1QW1t7ynebIsbAHaeqqqqYNWtWdHR0DK4NDAxER0dHNDU1DXtNU1PTkP0RES+99NJJ90PE6Z21iIivfe1r8cgjj8TmzZtj9uzZozEqY9xIz9pll10Wr776auzcuXPw8ZnPfGbw04EaGhpGc3zGkNP5c+3aa6+NN954YzDOIyJef/31mDJlimjipE7nrL399tsnxNG7wf67n/mH0ihZG4zscyvOjPXr1xfV1dXFM888U/z3f/93cfvttxcXXHBB0dXVVRRFUSxcuLBYtmzZ4P7//M//LMaPH188+uijxa5du4q2trbinHPOKV599dUz9S0wRoz0rK1ataqoqqoqnnvuueKXv/zl4OPIkSNn6ltgjBjpWftjPlWPUzXSs7Z///7i/PPPL/7pn/6p2LNnT/GDH/ygmDRpUvGVr3zlTH0LjBEjPWttbW3F+eefX/z7v/97sXfv3uI//uM/iksuuaT47Gc/e6a+BcaII0eOFDt27Ch27NhRRETx+OOPFzt27Ch+8YtfFEVRFMuWLSsWLlw4uH/v3r3FeeedV/zzP/9zsWvXrmLNmjVFZWVlsXnz5hG97pgIp6Ioin/9138tLrrooqKqqqqYM2dO8V//9V+Df+36668vFi9ePGT/d77zneLSSy8tqqqqio997GPFxo0bR3lixqqRnLUPfvCDRUSc8Ghraxv9wRlzRvrn2h8STozESM/aK6+8UjQ2NhbV1dXFxRdfXHz1q18tjh8/PspTMxaN5Ky98847xZe+9KXikksuKWpqaoqGhobizjvvLP73f/939AdnTHn55ZeH/e+vd8/X4sWLi+uvv/6Ea2bOnFlUVVUVF198cfFv//ZvI37dcUXhXigAAMB7ed//jBMAAMCZJpwAAAASwgkAACAhnAAAABLCCQAAICGcAAAAEsIJAAAgIZwAAAASwgkAACAhnAAAABLCCQAAICGcAAAAEsIJAAAgIZwAAAASwgkAACAhnAAAABLCCQAAICGcAAAAEsIJAAAgIZwAAAASwgkAACAhnAAAABLCCQAAICGcAAAAEsIJAAAgIZwAAAASwgkAACAhnAAAABLCCQAAICGcAAAAEsIJAAAgIZwAAAASwgkAACAhnAAAABLCCQAAICGcAAAAEsIJAAAgIZwAAAASwgkAACAhnAAAABLCCQAAICGcAAAAEsIJAAAgIZwAAAASwgkAACAhnAAAABLCCQAAICGcAAAAEsIJAAAgIZwAAAASwgkAACAhnAAAABLCCQAAICGcAAAAEsIJAAAgIZwAAAASwgkAACAhnAAAABLCCQAAICGcAAAAEsIJAAAgIZwAAAASwgkAACAhnAAAABLCCQAAICGcAAAAEsIJAAAgIZwAAAASwgkAACAhnAAAABLCCQAAICGcAAAAEsIJAAAgIZwAAAASwgkAACAhnAAAABLCCQAAICGcAAAAEsIJAAAgIZwAAAASwgkAACAhnAAAABLCCQAAICGcAAAAEsIJAAAgIZwAAAASwgkAACAhnAAAABLCCQAAICGcAAAAEsIJAAAgIZwAAAASwgkAACAhnAAAABLCCQAAICGcAAAAEsIJAAAgIZwAAAASwgkAACAhnAAAABLCCQAAICGcAAAAEsIJAAAgIZwAAAASwgkAACAhnAAAABLCCQAAIFHycPrxj38cc+fOjalTp8a4cePihRdeSK/ZsmVLfPzjH4/q6ur40Ic+FM8880ypxwIAADhtJQ+no0ePxowZM2LNmjWntP/nP/953HTTTXHDDTfEzp0745577onbbrstXnzxxVKPBgAAcFrGFUVRlO3Jx42L559/PubNm3fSPffdd19s3LgxXnvttcG1f/iHf4i33norNm/eXK7RAAAATtkZ/xmnzs7OaG5uHrLW0tISnZ2dZ2giAACAocaf6QG6urqivr5+yFp9fX309vbGb37zmzj33HNPuObYsWNx7Nixwa8HBgbiV7/6VfzFX/xFjBs3ruwzAwAA709FUcSRI0di6tSpUVFRuvtEZzycTkd7e3s8/PDDZ3oMAADgferAgQPxV3/1VyV7vjMeTpMnT47u7u4ha93d3VFbWzvs3aaIiOXLl0dra+vg1z09PXHRRRfFgQMHora2tqzzAgAA71+9vb3R0NAQ559/fkmf94yHU1NTU2zatGnI2ksvvRRNTU0nvaa6ujqqq6tPWK+trRVOAABAyX+Ep+QfDvHrX/86du7cGTt37oyI333c+M6dO2P//v0R8bu7RYsWLRrcf8cdd8TevXvji1/8YuzevTuefPLJ+M53vhP33ntvqUcDAAA4LSUPp5/+9Kdx1VVXxVVXXRUREa2trXHVVVfFihUrIiLil7/85WBERUT89V//dWzcuDFeeumlmDFjRjz22GPxzW9+M1paWko9GgAAwGkp6+9xGi29vb1RV1cXPT093qoHAAB/xsrVBmf89zgBAAC83wknAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABIlC2c1qxZE9OnT4+amppobGyMrVu3vuf+1atXx4c//OE499xzo6GhIe6999747W9/W67xAAAATllZwmnDhg3R2toabW1tsX379pgxY0a0tLTEwYMHh93/7LPPxrJly6KtrS127doVTz/9dGzYsCHuv//+cowHAAAwImUJp8cffzw+97nPxZIlS+KjH/1orF27Ns4777z41re+Nez+V155Ja699tq4+eabY/r06XHjjTfGggUL0rtUAAAAo6Hk4dTX1xfbtm2L5ubm379IRUU0NzdHZ2fnsNdcc801sW3btsFQ2rt3b2zatCk+/elPl3o8AACAERtf6ic8fPhw9Pf3R319/ZD1+vr62L1797DX3HzzzXH48OH45Cc/GUVRxPHjx+OOO+446Vv1jh07FseOHRv8ure3t3TfAAAAwB95X3yq3pYtW2LlypXx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AgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACARNnCac2aNTF9+vSoqamJxsbG2Lp16yldt379+hg3blzMmzevXKMBAACMSFnCacOGDdHa2hptbW2xffv2mDFjRrS0tMTBgwff87p9+/bFF77whbjuuuvKMRYAAMBpKUs4Pf744/G5z30ulixZEh/96Edj7dq1cd5558W3vvWtk17T398ft9xySzz88MNx8cUXl2MsAACA01LycOrr64tt27ZFc3Pz71+koiKam5ujs7PzpNd9+ctfjkmTJsWtt96avsaxY8eit7d3yAMAAKBcSh5Ohw8fjv7+/qivrx+yXl9fH11dXcNe85Of/CSefvrpWLdu3Sm9Rnt7e9TV1Q0+Ghoa/uS5AQAA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rDFaenp64qKLLooLL7ywpM9b8nCaOHFiVFZWRnd395D17u7umDx58rDXTJ48eUT7q6uro7q6+oT1uro6/yAyKmpra501RoWzxmhx1hgtzhqjpaKitJ+DV/JP1auqqopZs2ZFR0fH4NrAwEB0dHREU1PTsNc0NTUN2R8R8dJLL510PwAAwGgqy1v1WltbY/HixTF79uyYM2dOrF69Oo4ePRpLliyJiIhFixbFtGnTor29PSIi7r777rj++uvjsccei5tuuinWr18fP/3pT+Opp54qx3gAAAAjUpZwmj9/fhw6dChWrFgRXV1dMXPmzNi8efPgB0Ds379/yK2za665Jp599tl48MEH4/7774+/+Zu/iRdeeCEuv/zyU3q96urqaGtrG/bte1BKzhqjxVljtDhrjBZnjdFSrrNWlt/jBAAAcDYp+c84AQAAnG2EEwAAQEI4AQAAJIQTAABAYsyE05o1a2L69OlRU1MTjY2NsXXr1vfc/93vfjcuu+yyqKmpiSuuuCI2bdo0SpMy1o3krK1bty6uu+66mDBhQkyYMCGam5vTswnvGumfa+9av359jBs3LubNm1feATlrjPSsvfXWW7F06dKYMmVKVFdXx6WXXurfo5ySkZ611atXx4c//OE499xzo6GhIe6999747W9/O0rTMlb9+Mc/jrlz58bUqVNj3Lhx8cILL6TXbNmyJT7+8Y9HdXV1fOhDH4pnnnlmxK87JsJpw4YN0draGm1tbbF9+/aYMWNGtLS0xMGDB4fd/8orr8SCBQvi1ltvjR07dsS8efNi3rx58dprr43y5Iw1Iz1rW7ZsiQULFsTLL78cnZ2d0dDQEDfeeGO8+eabozw5Y81Iz9q79u3bF1/4whfiuuuuG6VJGetGetb6+vriU5/6VOzbty+ee+652LNnT6xbty6mTZs2ypMz1oz0rD377LOxbNmyaGtri127dsXTTz8dGzZsiPvvv3+UJ2esOXr0aMyYMSPWrFlzSvt//vOfx0033RQ33HBD7Ny5M+6555647bbb4sUXXxzZCxdjwJw5c4qlS5cOft3f319MnTq1aG9vH3b/Zz/72eKmm24astbY2Fj84z/+Y1nnZOwb6Vn7Y8ePHy/OP//84tvf/na5RuQscTpn7fjx48U111xTfPOb3ywWL15c/N3f/d0oTMpYN9Kz9o1vfKO4+OKLi76+vtEakbPESM/a0qVLi7/9278dstba2lpce+21ZZ2Ts0tEFM8///x77vniF79YfOxjHxuyNn/+/KKlpWVEr/W+v+PU19cX27Zti+bm5sG1ioqKaG5ujs7OzmGv6ezsHLI/IqKlpeWk+yHi9M7aH3v77bfjnXfeiQsvvLBcY3IWON2z9uUvfzkmTZoUt95662iMyVngdM7a97///WhqaoqlS5dGfX19XH755bFy5cro7+8frbEZg07nrF1zzTWxbdu2wbfz7d27NzZt2hSf/vSnR2Vm/nyUqg3Gl3Kocjh8+HD09/dHfX39kPX6+vrYvXv3sNd0dXUNu7+rq6tsczL2nc5Z+2P33XdfTJ069YR/OOEPnc5Z+8lPfhJPP/107Ny5cxQm5GxxOmdt79698aMf/ShuueWW2LRpU7zxxhtx5513xjvvvBNtbW2jMTZj0OmctZtvvjkOHz4cn/zkJ6Moijh+/Hjccccd3qpHyZ2sDXp7e+M3v/lNnHvuuaf0PO/7O04wVqxatSrWr18fzz//fNTU1JzpcTiLHDlyJBYuXBjr1q2LiRMnnulxOMsNDAzEpEmT4qmnnopZs2bF/Pnz44EHHoi1a9ee6dE4y2zZsiVWrlwZTz75ZGzfvj2+973vxcaNG+ORRx4506PBsN73d5wmTpwYlZWV0d3dPWS9u7s7Jk+ePOw1kydPHtF+iDi9s/auRx99NFatWhU//OEP48orryznmJwFRnrWfvazn8W+ffti7ty5g2sDAwMRETF+/PjYs2dPXHLJJeUdmjHpdP5cmzJlSpxzzjlRWVk5uPaRj3wkurq6oq+vL6qqqso6M2PT6Zy1hx56KBYuXBi33XZbRERcccUVcfTo0bj99tvjgQceiIoK/3+f0jhZG9TW1p7y3aaIMXDHqaqqKmbNmhUdHR2DawMDA9HR0RFNTU3DXtPU1DRkf0TESy+9dNL9EHF6Zy0i4mtf+1o88sgjsXnz5pg9e/ZojMoYN9Kzdtlll8Wrr74aO3fuHHx85jOfGfx0oIaGhtEcnzHkdP5cu/baa+ONN94YjPOIiNdffz2mTJkimjip0zlrb7/99glx9G6w/+5n/qE0StYGI/vcijNj/fr1RXV1dfHMM88U//3f/13cfvvtxQUXXFB0dXUVRVEUCxcuLJYtWza4/z//8z+L8ePHF48++mixa9euoq2trTjnnHOKV1999Ux9C4wRIz1rq1atKqqqqornnnuu+OUvfzn4OHLkyJn6FhgjRnrW/phP1eNUjfSs7d+/vzj//POLf/qnfyr27NlT/OAHPygmTZpUfOUrXzlT3wJjxEjPWltbW3H++ecX//7v/17s3bu3+I//+I/ikksuKT772c+eqW+BMeLIkSPFjh07ih07dhQRUTz++OPFjh07il/84hdFURTFsmXLioULFw7u37t3b3HeeecV//zP/1zs2rWrWLNmTVFZWVls3rx5RK87JsKpKIriX//1X4uLLrqoqKqqKubMmVP813/91+Bfu/7664vFixcP2f+d73ynuPTSS4uqqqriYx/7WLFx48ZRnpixaiRn7YMf/GARESc82traRn9wxpyR/rn2h4QTIzHSs/bKK68UjY2NRXV1dXHxxRcXX/3qV4vjx4+P8tSMRSM5a++8807xpS99qbjkkkuKmpqaoqGhobjzzjuL//3f/x39wRlTXn755WH/++vd87V48eLi+uuvP+GamTNnFlVVVcXFF19c/Nu//duIX3dcUbgXCgAA8F7e9z/jBAAAcKYJJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgP/H3n1HR1H1bwB/tmSzCSEJIYQQCB1CTzBAQBBQeq9SpRelKOUVlVcBC4q90VGKSO8igoCRIlITDE1qDIQQEkjIprK72Z35/aHm90bTs5u75fmcs+eY3dmZZxhnZ79779xbCBZOREREREREhWDhREREREREVAgWTkRERERERIVg4URERERERFQIFk5ERERERESFYOFERERERERUCBZOREREREREhWDhREREREREVAgWTkRERERERIVg4URERERERFQIFk5ERERERESFYOFERERERERUCBZOREREREREhWDhREREREREVAgWTkRERERERIVg4URERERERFQIFk5ERERERESFYOFERERERERUCBZOREREREREhWDhREREREREVAgWTkRERERERIVg4URERERERFQIFk5E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GDZsGLvYEzk5dtUTKCsrCz4+PnB1dUVKSgqUStaxREREtsZkMsHb2xtmsxmpqanQaDSiIxFRAdhVzwG5u7vjzTffRFpaGl599VXRcYiIiCgParUaX3zxBfR6PSZPniw6DhEJohYdwNm99tpruHPnDubMmSM6ChEREeVjwoQJuHDhAl555RXRUYhIEHbVIyIiIiIih8Guek7g4MGDOH/+vOgYREREVIATJ07g+PHjomMQURlji5ON0Ov18PDwQLVq1XD79m3RcYiIiCgPkiTB3d0dnp6eePDggeg4RJQHtjg5OK1Wi1GjRuHOnTtYuXKl6DhERESUB6VSiZdeegkPHz7E22+/LToOEZUhFk425KuvvkLt2rWhVnPMDiIiIlv1/vvvIygoyG57uRBRyfAbug1Rq9WIjo4WHYOIiIgKoFQqce3aNdExiKiMscXJRplMJqSlpYmOQURERAWQJAk6nU50DCIqAyycbJDJZIKvry+6desmOgoREREVoGrVqnjyySdFxyCiMsDCyQap1WqEhITg9OnT+Pnnn0XHISIiony0adMGV69exdatW0VHISIrY+Fko3bs2AG1Wo3169eLjkJERET52LBhA1xdXbFp0ybRUYjIyjg4hI3y9fVFYmIifHx8REchIiKifLi7uyM+Pp7XayInwBYnG8YPYSIiItvH6zWRc2DhZAd69OiBsWPHio5BREREBRgyZAgGDhwoOgYRWQkLJzvwxx9/YP369bh586boKERERJSPP/74A7t370ZERIToKERkBSyc7MDOnTshyzLGjRsnOgoRERHlY9euXVAoFBg/frzoKERkBSyc7ECTJk3w1VdfYd++faKjEBERUT6qV6+OtWvX4tChQ6KjEJEVKGRZlkWHKK20tDR4eXkhNTUVnp6eouMQEREREZEg1qoN2OJkZ/bu3Yvly5eLjkFEREQFCA8PxyeffCI6BhFZEFuc7Iyfnx9SUlKQnJzs8PtKRERkr2rWrIm7d+/i3r178Pf3Fx2HyKmwxYkAAF9//TVMJhOGDx8uOgoRERHlY+PGjZAkCYMGDRIdhYgsRC06ABVP3759MWDAAHTr1k10FCIiIspH27ZtMXLkSAQHB4uOQkQWwq56RERERETkMNhVj/7FaDTi8uXLomMQERFRAUwmEy5evCg6BhGVErvq2bH69evj0aNH0Ol0UCpZAxMR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oHr16pg5cyYWLlyIevXqoVatWpg3bx4CAgLQv39/caEdXEHHxMfHB2+99RYGDRoEf39/REdH45VXXkHdunXRrVs3gakd27Rp07Bp0yZ89913KF++fM49GV5eXnBzc4OXlxcmTJiA2bNnw8fHB56ennjxxRfRpk0btG7dWnB6x1TYMYmOjsamTZvQs2dPVKxYERcvXsSsWbPQvn17NGvWTHB6xzR37lz06NED1atXR3p6OjZt2oSjR4/i4MGDPEcEKeiY8BwpA6KH9bOExYsXy9WrV5c1Go3cqlUr+fTp06IjOa2hQ4fKVapUkTUajVy1alV56NCh8q1bt0THcipHjhyRAfzrMWbMGFmW/xySfN68eXLlypVlV1dXuVOnTvL169fFhnZwBR2TrKwsuWvXrnKlSpVkFxcXuUaNGvKkSZPkhIQE0bEdWl7HA4C8du3anGUeP34sT506Va5QoYLs7u4uDxgwQL5//7640A6usGMSGxsrt2/fXvbx8ZFdXV3lunXrynPmzJFTU1PFBndg48ePl2vUqCFrNBq5UqVKcqdOneRDhw7lvM5zpOwVdEx4jlifQpZluSwLNSIiIiIiIntj1/c4ERERERERlQUWTkRERERERIVg4URERERERFQIFk5ERERERESFYOFERERERERUCBZOREREREREhWDhREREREREVAgWTkRERERERIVg4URERERERFQIFk5ERERERESFYOFERERERERUCBZOREREREREhWDhREREREREVAgWTkRERERERIVg4URERERERFQIFk5ERERERESFYOFERERERERUCBZOREREREREhWDhREREREREVAgWTkRERERERIVg4URERERERFQIFk5ERERERESFYOFERERERERUCBZORERE9H/t3X9s1fW9+PEXP2yrma14uZQft46ru85tKjiQrjpivOlsMsMuf9yMiwYI0XmdXONsdieoo3PeUe7mDMkVR2TuuuTGC5uZ3mUQvK6TLLv2howfieYChjEGMWuBu0vLcGuh/Xz/2HfdOoovys4plj0eyfmjb9+fc141b9Gnn9NTABLCCQAAICGcAAAAEsIJAAAgIZwAAAASwgkAACAhnAAAABLCCQAAICGcAAAAEsIJAAAgIZwAAAASwgkAACAhnAAAABLCCQAAICGcAAAAEsIJAAAgIZwAAAASwgkAACAhnAAAABLCCQAAICGcAAAAEsIJAAAgIZwAAAASwgkAACAhnAAAABLCCQAAICGcAAAAEsIJAAAgIZwAAAASwgkAACAhnAAAABLCCQAAICGcAAAAEsIJAAAgIZwAAAASwgkAACAhnAAAABLCCQAAICGcAAAAEsIJAAAgIZwAAAASwgkAACAhnAAAABLCCQAAICGcAAAAEsIJAAAgIZwAAAASwgkAACAhnAAAABLCCQAAICGcAAAAEsIJAAAgIZwAAAASwgkAACAhnAAAABLCCQAAICGcAAAAEsIJAAAgIZwAAAASwgkAACAhnAAAABLCCQAAICGcAAAAEsIJAAAgIZwAAAASwgkAACAhnAAAABLCCQAAICGcAAAAEsIJAAAgIZwAAAASwgkAACAhnAAAABLCCQAAICGcAAAAEsIJAAAgIZwAAAASwgkAACAhnAAAABLCCQAAICGcAAAAEsIJAAAgIZwAAAASwgkAACAhnAAAABLCCQAAICGcAAAAEsIJAAAgIZwAAAASwgkAACAhnAAAABLCCQAAICGcAAAAEsIJAAAgIZwAAAASwgkAACAhnAAAABLCCQAAICGcAAAAEsIJAAAgIZwAAAASwgkAACAhnAAAABLCCQAAICGcAAAAEsIJAAAgIZwAAAASwgkAACAhnAAAABLCCQAAICGcAAAAEsIJAAAgIZwAAAASwgkAACAhnAAAABLCCQAAICGcAAAAEsIJAAAgIZwAAAASwgkAACAhnAAAABLCCQAAICGcAAAAEsIJAAAgIZwAAAASwgkAACAhnAAAABLCCQAAICGcAAAAEsIJAAAgIZwAAAASwgkAACAhnAAAABLCCQAAICGcAAAAEsIJAAAgIZwAAAASwgkAACAhnAAAABLCCQAAICGcAAAAEsIJAAAgIZwAAAASwgkAACAhnAAAABLCCQAAICGcAAAAEsIJAAAgIZwAAAASwgkAACAhnAAAABLCCQAAICGcAAAAEsIJAAAgIZwAAAASwgkAACAhnAAAABLCCQAAICGcAAAAEsIJAAAgIZwAAAASwgkAACAhnAAAABLCCQAAICGcAAAAEsIJAAAgIZwAAAASwgkAACAhnAAAABLCCQAAICGcAAAAEsIJAAAgIZwAAAASwgkAACAhnAAAABLCCQAAICGcAAAAEsIJAAAgIZwAAAASwgkAACAhnAAAABLCCQAA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4QQAAJAQTgAAAAnhBAAAkChbOK1duzamT58eVVVVUV9fH9u2bXvH/ceOHYtly5bFlClTorKyMq6++urYvHlzucYDAAA4a+PL8aQbN26M5ubmWLduXdTX18eaNWuiqakp9u7dG5MmTTptf29vb3zsYx+LSZMmxQsvvBDTpk2Ln/3sZ3HZZZeVYzwAAIBhGVMURVHqJ62vr48bb7wxnnrqqYiI6O/vj7q6urj//vtj+fLlp+1ft25dfOUrX4k9e/bERRddNOzX6+7ujpqamujq6orq6uo/en4AAGB0KlcblPyter29vbF9+/ZobGz83YuMHRuNjY3R3t4+5DXf/e53o6GhIZYtWxa1tbVx7bXXxqpVq6Kvr6/U4wEAAAxbyd+qd/To0ejr64va2tpB67W1tbFnz54hr9m/f3/84Ac/iDvvvDM2b94c+/bti/vuuy9OnjwZLS0tp+3v6emJnp6ega+7u7tL+00AAAD8nnfFp+r19/fHpEmT4plnnolZs2bFggUL4pFHHol169YNub+1tTVqamoGHnV1dSM8MQAA8Kek5OE0ceLEGDduXHR2dg5a7+zsjMmTJw95zZQpU+Lqq6+OcePGDax94AMfiI6Ojujt7T1t/4oVK6Krq2vgcejQodJ+EwAAAL+n5OFUUVERs2bNira2toG1/v7+aGtri4aGhiGvufnmm2Pfvn3R398/sPbmm2/GlClToqKi4rT9lZWVUV1dPegBAABQLmV5q15zc3OsX78+vvnNb8bu3bvj05/+dJw4cSKWLl0aERGLFy+OFStWDOz/9Kc/Hb/4xS/igQceiDfffDM2bdoUq1atimXLlpVjPAAAgGEpy+9xWrBgQRw5ciRWrlwZHR0dMXPmzNiyZcvAB0YcPHgwxo79XbPV1dXFyy+/HA8++GBcf/31MW3atHjggQfioYceKsd4AAAAw1KW3+M00vweJwAAIGIU/R4nAACAC41wAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACAhHACAABICCcAAICEcAIAAEgIJwAAgIRwAgAASAgnAACARNnCae3atTF9+vSoqqqK+vr62LZt21ldt2HDhhgzZkzMnz+/XKMBAAAMS1nCaePGjdHc3BwtLS2xY8eOmDFjRjQ1NcXhw4ff8boDBw7EZz/72Zg7d245xgIAADgnZQmnJ598Mj71qU/F0qVL44Mf/GCsW7cuLrnkkvjGN75xxmv6+vrizjvvjMceeyyuvPLKcowFAABwTkoeTr29vbF9+/ZobGz83YuMHRuNjY3R3t5+xuu++MUvxqRJk+Kuu+5KX6Onpye6u7sHPQAAAMql5OF09OjR6Ovri9ra2kHrtbW10dHRMeQ1P/rRj+LZZ5+N9evXn9VrtLa2Rk1NzcCjrq7uj54bAADgTM77p+odP348Fi1aFOvXr4+JEyee1TUrVqyIrq6ugcehQ4fKPCUAAPCnbHypn3DixIkxbty46OzsHLTe2dkZkydPPm3/T37ykzhw4EDMmzdvYK2/v/83w40fH3v37o2rrrpq0DWVlZVRWVlZ6tEBAACGVPI7ThUVFTFr1qxoa2sbWOvv74+2trZoaGg4bf8111wTr7/+euzatWvg8YlPfCJuvfXW2LVrl7fhAQAA513J7zhFRDQ3N8eSJUti9uzZMWfOnFizZk2cOHEili5dGhERixcvjmnTpkVra2tUVVXFtddeO+j6yy67LCLitHUAAIDzoSzhtGDBgjhy5EisXLkyOjo6YubMmbFly5aBD4w4ePBgjB173n+8CgAA4KyMKYqiON9D/LG6u7ujpqYmurq6orq6+nyPAwAAnCflagO3fQAAABLCCQAAICGcAAAAEsIJAAAgIZwAAAASwgkAACAhnAAAABLCCQAAICGcAAAAEsIJAAAgIZwAAAASwgkAACAhnAAAABLCCQAAICGcAAAAEsIJAAAgIZwAAAASwgkAACAhnAAAABLCCQAAICGcAAAAEsIJAAAgIZwAAAASwgkAACAhnAAAABLCCQAAICGcAAAAEsIJAAAgIZwAAAASwgkAACAhnAAAABLCCQAAICGcAAAAEsIJAAAgIZwAAAASwgkAACAhnAAAABLCCQAAICGcAAAAEsIJAAAgIZwAAAASwgkAACAhnAAAABLCCQAAICGcAAAAEsIJAAAgIZwAAAASwgkAACAhnAAAABLCCQAAICGcAAAAEsIJAAAgIZwAAAASwgkAACAhnAAAABLCCQAAICGcAAAAEsIJAAAgIZwAAAASwgkAACAhnAAAABLCCQAAICGcAAAAEsIJAAAgIZwAAAASwgkAACAhnAAAABLCCQAAICGcAAAAEsIJAAAgIZwAAAASwgkAACAhnAAAABLCCQAAICGcAAAAEsIJAAAgIZwAAAASwgkAACAhnAAAABLCCQAAICGcAAAAEsIJAAAgIZwAAAASwgkAACAhnAAAABLCCQAAICGcAAAAEsIJAAAgIZwAAAASwgkAACAhnAAAABLCCQAAICGcAAAAEsIJAAAgIZwAAAASwgkAACAhnAAAABLCCQAAICGcAAAAEsIJAAAgIZwAAAASwgkAACAhnAAAABLCCQAAICGcAAAAEsIJAAAgIZwAAAASwgkAACAhnAAAABLCCQAAICGcAAAAEsIJAAAgIZwAAAASwgkAACAhnAAAABLCCQAAICGcAAAAEsIJAAAgIZwAAAASwgkAACAhnAAAABLCCQAAICGcAAAAEmULp7Vr18b06dOjqqoq6uvrY9u2bWfcu379+pg7d25MmDAhJkyY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\n", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAA0UAAAw5CAYAAAA+L+rmAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8g+/7EAAAACXBIWXMAAA9hAAAPYQGoP6dpAACZhElEQVR4nOzdf2zW5b3w8U8LttXMVh2H8mN1THec21RgIF11xnjS2WSGHf44GcMFCPHHcXKM2uxM8Aedc6OeTQ3JEUdk7rjkiQc2M32WQfC4TrLs2BMi2ERzQOPQQcxa5OzYsrq10n6fP5Z1T0dR7tIW4fN6JfcfXLuu+3vdyyXuve/9o6woiiIAAACSKj/RGwAAADiRRBEAAJCaKAIAAFITRQAAQGqiCAAASE0UAQAAqYkiAAAgNVEEAACkJooAAIDURBEAAJBayVH0y1/+MhYuXBgzZsyIsrKyePrpp993zfbt2+Mzn/lMVFZWxsc//vF4/PHHR7FVAACAsVdyFPX29sbs2bNj/fr1xzT/9ddfj2uuuSauuuqq6OjoiNtuuy2uv/76eOaZZ0reLAAAwFgrK4qiGPXisrJ46qmnYtGiRUedc8cdd8SWLVvi5ZdfHhr78pe/HG+//XZs27ZttJcGAAAYE5PH+wLt7e3R2Ng4bKypqSluu+22o67p6+uLvr6+oT8PDg7G7373u/jwhz8cZWVl47VVAADgA64oijh06FDMmDEjysvH5isSxj2KOjs7o7a2dthYbW1t9PT0xB/+8Ic4/fTTj1jT2toa995773hvDQAAOEnt378/PvKRj4zJc417FI3G6tWro7m5eejP3d3dce6558b+/fujurr6BO4MAAA4kXp6eqKuri7OPPPMMXvOcY+iadOmRVdX17Cxrq6uqK6uHvEuUUREZWVlVFZWHjFeXV0tigAAgDH9WM24/05RQ0NDtLW1DRt79tlno6GhYbwvDQAA8L5KjqLf//730dHRER0dHRHxp6/c7ujoiH379kXEn976tmzZsqH5N910U+zduze+/vWvx549e+KRRx6JH/3oR3H77bePzSsAAAA4DiVH0QsvvBBz586NuXPnRkREc3NzzJ07N9asWRMREb/97W+HAiki4mMf+1hs2bIlnn322Zg9e3Y8+OCD8f3vfz+amprG6CUAAACM3nH9TtFE6enpiZqamuju7vaZIgAASGw82mDcP1MEAADwQSaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQ2qiiaP369TFr1qyoqqqK+vr62LFjx3vOX7duXXziE5+I008/Perq6uL222+PP/7xj6PaMAAAwFgqOYo2b94czc3N0dLSErt27YrZs2dHU1NTHDhwYMT5TzzxRKxatSpaWlpi9+7d8dhjj8XmzZvjzjvvPO7NAwAAHK+So+ihhx6KG264IVasWBGf+tSnYsOGDXHGGWfED37wgxHnP//883H55ZfHtddeG7NmzYqrr746lixZ8r53lwAAACZCSVHU398fO3fujMbGxr88QXl5NDY2Rnt7+4hrLrvssti5c+dQBO3duze2bt0aX/jCF456nb6+vujp6Rn2AAAAGA+TS5l88ODBGBgYiNra2mHjtbW1sWfPnhHXXHvttXHw4MH43Oc+F0VRxOHDh+Omm256z7fPtba2xr333lvK1gAAAEZl3L99bvv27bF27dp45JFHYteuXfGTn/wktmzZEvfdd99R16xevTq6u7uHHvv37x/vbQIAAEmVdKdoypQpMWnSpOjq6ho23tXVFdOmTRtxzT333BNLly6N66+/PiIiLr744ujt7Y0bb7wx7rrrrigvP7LLKisro7KyspStAQAAjEpJd4oqKipi3rx50dbWNjQ2ODgYbW1t0dDQMOKad95554jwmTRpUkREFEVR6n4BAADGVEl3iiIimpubY/ny5TF//vxYsGBBrFu3Lnp7e2PFihUREbFs2bKYOXNmtLa2RkTEwoUL46GHHoq5c+dGfX19vPbaa3HPPffEwoULh+IIAADgRCk5ihYvXhxvvfVWrFmzJjo7O2POnDmxbdu2oS9f2Ldv37A7Q3fffXeUlZXF3XffHW+++Wb8zd/8TSxcuDC+/e1vj92rAAAAGKWy4iR4D1tPT0/U1NREd3d3VFdXn+jtAAAAJ8h4tMG4f/scAADAB5koAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqOKovXr18esWbOiqqoq6uvrY8eOHe85/+23346VK1fG9OnTo7KyMi644ILYunXrqDYMAAAwliaXumDz5s3R3NwcGzZsiPr6+li3bl00NTXFK6+8ElOnTj1ifn9/f3z+85+PqVOnxpNPPhkzZ86M3/zmN3HWWWeNxf4BAACOS1lRFEUpC+rr6+PSSy+Nhx9+OCIiBgcHo66uLm655ZZYtWrVEfM3bNgQ3/3ud2PPnj1x2mmnjWqTPT09UVNTE93d3VFdXT2q5wAAAE5+49EGJb19rr+/P3bu3BmNjY1/eYLy8mhsbIz29vYR1/z0pz+NhoaGWLlyZdTW1sZFF10Ua9eujYGBgaNep6+vL3p6eoY9AAAAxkNJUXTw4MEYGBiI2traYeO1tbXR2dk54pq9e/fGk08+GQMDA7F169a455574sEHH4xvfetbR71Oa2tr1NTUDD3q6upK2SYAAMAxG/dvnxscHIypU6fGo48+GvPmzYvFixfHXXfdFRs2bDjqmtWrV0d3d/fQY//+/eO9TQAAIKmSvmhhypQpMWnSpOjq6ho23tXVFdOmTRtxzfTp0+O0006LSZMmDY198pOfjM7Ozujv74+Kiooj1lRWVkZlZWUpWwMAABiVku4UVVRUxLx586KtrW1obHBwMNra2qKhoWHENZdffnm89tprMTg4ODT26quvxvTp00cMIgAAgIlU8tvnmpubY+PGjfHDH/4wdu/eHV/96lejt7c3VqxYERERy5Yti9WrVw/N/+pXvxq/+93v4tZbb41XX301tmzZEmvXro2VK1eO3asAAAAYpZJ/p2jx4sXx1ltvxZo1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OSeT3t7emD17dqxfv/6Y5r/++utxzTXXxFVXXRUdHR1x2223xfXXXx/PPPNMaRcuPgAWLFhQrFy5cujPAwMDxYwZM4rW1tYR53/pS18qrrnmmmFj9fX1xT/+4z+O6z45+ZV61v7a4cOHizPPPLP44Q9/OF5b5BQxmrN2+PDh4rLLLiu+//3vF8uXLy/+/u//fgJ2ysmu1LP2ve99rzjvvPOK/v7+idoip4hSz9rKlSuLv/u7vxs21tzcXFx++eXjuk9OHRFRPPXUU+855+tf/3rx6U9/etjY4sWLi6amppKudcLvFPX398fOnTujsbFxaKy8vDwaGxujvb19xDXt7e3D5kdENDU1HXU+RIzurP21d955J959990455xzxmubnAJGe9a++c1vxtSpU+O6666biG1yChjNWfvpT38aDQ0NsXLlyqitrY2LLroo1q5dGwMDAxO1bU5Cozlrl112WezcuXPoLXZ79+6NrVu3xhe+8IUJ2TM5jFUXTB7LTY3GwYMHY2BgIGpra4eN19bWxp49e0Zc09nZOeL8zs7OcdsnJ7/RnLW/dscdd8SMGTOO+IcP/n+jOWu/+tWv4rHHHouOjo4J2CGnitGctb1798YvfvGL+MpXvhJbt26N1157LW6++eZ49913o6WlZSK2zUloNGft2muvjYMHD8bnPve5KIoiDh8+HDfddJO3zzGmjtYFPT098Yc//CFOP/30Y3qeE36nCE4W999/f2zatCmeeuqpqKqqOtHb4RRy6NChWLp0aWzcuDGmTJlyorfDKW5wcDCmTp0ajz76aMybNy8WL14cd911V2zYsOFEb41TzPbt22Pt2rXxyCOPxK5du+InP/lJbNmyJe67774TvTU4wgm/UzRlypSYNGlSdHV1DRvv6uqKadOmjbhm2rRpJc2HiNGdtT974IEH4v7774+f//zncckll4znNjkFlHrWfv3rX8cbb7wRCxcuHBobHByMiIjJkyfHK6+8Eueff/74bpqT0mj+Xps+fXqcdtppMWnSpKGxT37yk9HZ2Rn9/f1RUVExrnvm5DSas3bPPffE0qVL4/rrr4+IiIsvvjh6e3vjxhtvjLvuuivKy/1/8xy/o3VBdXX1Md8livgA3CmqqKiIefPmRVtb29DY4OBgtLW1RUNDw4hrGhoahs2PiHj22WePOh8iRnfWIiK+853vxH333Rfbtm2L+fPnT8RWOcmVetYuvPDCeOmll6Kjo2Po8cUvfnHom3Tq6uomcvucREbz99rll18er7322lB4R0S8+uqrMX36dEHEUY3mrL3zzjtHhM+fY/xPn6GH4zdmXVDad0CMj02bNhWVlZXF448/Xvz3f/93ceONNxZnnXVW0dnZWRRFUSxdurRYtWrV0Pz//M//LCZPnlw88MADxe7du4uWlpbitNNOK1566aUT9RI4SZR61u6///6ioqKiePLJJ4vf/va3Q49Dhw6dqJfASaLUs/bXfPscx6rUs7Zv377izDPPLP7pn/6peOWVV4qf/exnxdSpU4tvfetbJ+olcJIo9ay1tLQUZ555ZvHv//7vxd69e4v/+I//KM4///ziS1/60ol6CZwEDh06VLz44ovFiy++WERE8dBDDxUvvvhi8Zvf/KYoiqJYtWpVsXTp0qH5e/fuLc4444zin//5n4vdu3cX69evLyZNmlRs27atpOt+IKKoKIriX//1X4tzzz23qKioKBYsWFD813/919B/duWVVxbLly8fNv9HP/pRccEFFxQVFRXFpz/96WLLli0TvGNOVqWctY9+9KNFRBzxaGlpmfiNc9Ip9e+1/58oohSlnrXnn3++qK+vLyorK4vzzjuv+Pa3v10cPnx4gnfNyaiUs/buu+8W3/jGN4rzzz+/qKqqKurq6oqbb765+N///d+J3zgnjeeee27E/+3157O1fPny4sorrzxizZw5c4qKiorivPPOK/7t3/6t5OuWFYX7lwAAQF4n/DNFAAAAJ5IoAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaiVH0S9/+ctYuHBhzJgxI8rKyuLpp59+3zXbt2+Pz3zmM1FZWRkf//jH4/HHHx/FVgEAAMZeyVHU29sbs2fPjvXr1x/T/Ndffz2uueaauOqqq6KjoyNuu+22uP766+OZZ54pebMAAABjrawoimLUi8vK4qmnnopFixYddc4dd9wRW7ZsiZdffnlo7Mtf/nK8/fbbsW3bttFeGgAAYEyM+2eK2tvbo7GxcdhYU1NTtLe3j/elAQAA3tfk8b5AZ2dn1NbWDhurra2Nnp6e+MMf/hCnn376EWv6+vqir69v6M+Dg4Pxu9/9Lj784Q9HWVnZeG8ZAAD4gCqKIg4dOhQzZsyI8vKxuccz7lE0Gq2trXHvvfee6G0AAAAfUPv374+PfOQjY/Jc4x5F06ZNi66urmFjXV1dUV1dPeJdooiI1atXR3Nz89Cfu7u749xzz439+/dHdXX1uO4XAAD44Orp6Ym6uro488wzx+w5xz2KGhoaYuvWrcPGnn322WhoaDjqmsrKyqisrDxivLq6WhQBAABj+rGakt+E9/vf/z46Ojqio6MjIv70ldsdHR2xb9++iPjTXZ5ly5YNzb/pppti79698fWvfz327NkTjzzySPzoRz+K22+/fWxeAQAAwHEoOYpeeOGFmDt3bsydOzciIpqbm2Pu3LmxZs2aiIj47W9/OxRIEREf+9jHYsuWLfHss8/G7Nmz48EHH4zvf//70dTUNEYvAQAAYPSO63eKJkpPT0/U1NREd3e3t88BAEBi49EG4/47RQAAAB9koggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmNKorWr18fs2bNiqqqqqivr48dO3a85/x169bFJz7xiTj99NOjrq4ubr/99vjjH/84qg0DAACMpZKjaPPmzdHc3BwtLS2xa9eumD17djQ1NcWBAwdGnP/EE0/EqlWroqWlJXbv3h2PPfZYbN68Oe68887j3jwAAMDxKjmKHnroobjhhhtixYoV8alPfSo2bNgQZ5xxRvzgBz8Ycf7zzz8fl19+eVx77bUxa9asuPrqq2PJkiXve3cJAABgIpQURf39/bFz585obGz8yxOUl0djY2O0t7ePuOayyy6LnTt3DkXQ3r17Y+vWrfGF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bds29OUL+/bti/Lyv7RWXV1dPPPMM3H77bfHJZdcEjNnzoxbb7017rjjjrF7FQAAAKNU8u8UnQh+pwgAAIj4APxOEQAAwKlGFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAILVRRdH69etj1qxZUVVVFfX19bFjx45jWrdp06YoKyuLRYsWjeayAAAAY67kKNq8eXM0NzdHS0tL7Nq1K2bPnh1NTU1x4MCB91z3xhtvxNe+9rW44oorRr1ZAACAsVZyFD300ENxww03xIoVK+JTn/pUbNiwIc4444z4wQ9+cNQ1AwMD8ZWvfCXuvffeOO+8845rwwAAAGOppCjq7++PnTt3RmNj41+eoLw8Ghsbo729/ajrvvnNb8bUqVPjuuuuO6br9PX1RU9Pz7AHAADAeCgpig4ePBgDAwNRW1s7bLy2tjY6OztHXPOrX/0qHnvssdi4ceMxX6e1tTVqamqGHnV1daVsEwAA4JiN67fPHTp0KJYuXRobN26MKVOmHPO61atXR3d399Bj//7947hLAAAgs8mlTJ4yZUpMmjQpurq6ho13dXXFtGnTjpj/61//Ot54441YuHDh0Njg4OCfLjx5crzyyitx/vnnH7GusrIyKisrS9kaAADAqJR0p6iioiLmzZsXbW1tQ2ODg4PR1tYWDQ0NR8y/8MIL46WXXoqOjo6hxxe/+MW46qqroqOjw9viAACAE66kO0UREc3NzbF8+fKYP39+LFiwINatWxe9vb2xYsWKiIhYtmxZzJw5M1pbW6OqqiouuuiiYevPOuusiIgjxgEAAE6EkqNo8eLF8dZbb8WaNWuis7Mz5syZE9u2bRv68oV9+/ZFefm4flQJAABgzJQVRVGc6E28n56enqipqYnu7u6orq4+0dsBAABOkPFoA7d0AACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSG1UUrV+/PmbNmhVVVVVRX18fO3bsOOrcjRs3xhVXXBFnn312nH322dHY2Pie8wEAACZSyVG0efPmaG5ujpaWlti1a1fMnj07mpqa4sCBAyPO3759eyxZsiSee+65aG9vj7q6urj66qvjzTffPO7NAwAAHK+yoiiKUhbU19fHpZdeGg8//HBERAwODkZdXV3ccsstsWrVqvddPzAwEGeffXY8/PDDsWzZsmO6Zk9PT9TU1ER3d3dUV1eXsl0AAOAUMh5tUNKdov7+/ti5c2c0Njb+5QnKy6OxsTHa29uP6TneeeedePfdd+Occ8456py+vr7o6ekZ9gAAABgPJUXRwYMHY2BgIGpra4eN19bWRmdn5zE9xx133BEzZswYFlZ/rbW1NWpqaoYedXV1pWwTAADgmE3ot8/df//9sWnTpnjqqaeiqqrqqPNWr14d3d3dQ4/9+/dP4C4BAIBMJpcyecqUKTFp0qTo6uoaNt7V1RXTpk17z7UPPPBA3H///fHzn/88LrnkkvecW1lZGZWVlaVsDQAAYFRKulNUUVER8+bNi7a2tqGxwcHBaGtri4aGhqOu+853vhP33XdfbNu2LebPnz/63QIAAIyxku4URUQ0NzfH8uXLY/78+bFgwYJYt25d9Pb2xooVKyIiYtmyZTFz5sxobW2NiIh/+Zd/iTVr1sQTTzwRs2bNGvrs0Yc+9KH40Ic+NIYvBQAAoHQlR9HixYvjrbfeijVr1kRnZ2fMmTMntm3bNvTlC/v27Yvy8r/cgPre974X/f398Q//8A/DnqelpSW+8Y1vHN/uAQAAjlPJv1N0IvidIgAAIOID8DtFAAAApxpRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EYVRevXr49Zs2ZFVVVV1NfXx44dO95z/o9//OO48MILo6qqKi6++OLYunXrqDYLAAAw1kqOos2bN0dzc3O0tLTErl27Yvbs2dHU1BQHDhwYcf7zzz8fS5Ysieuuuy5efPHFWLRoUSxatChefvnl4948AADA8SoriqIoZUF9fX1ceuml8fDDD0dExODgYNTV1cUtt9wSq1atOmL+4sWLo7e3N372s58NjX32s5+NOXPmxIYNG47pmj09PVFTUxPd3d1RXV1dynYBAIBTyHi0weRSJvf398fOnTtj9erVQ2Pl5eXR2NgY7e3tI65pb2+P5ubmYWNNTU3x9NNPH/U6fX190dfXN/Tn7u7uiPjTfwEAAEBef26CEu/tvKeSoujgwYMxMDAQtbW1w8Zra2tjz549I67p7OwccX5nZ+dRr9Pa2hr33nvvEeN1dXWlbBcAADhF/c///E/U1NSMyXOVFEUTZfXq1cPuLr399tvx0Y9+NPbt2zdmLxxG0tPTE3V1dbF//35v1WRcOWtMFGeNieKsMVG6u7vj3HPPjXPOOWfMnrOkKJoyZUpMmjQpurq6ho13dXXFtGnTRlwzbdq0kuZHRFRWVkZlZeUR4zU1Nf4hY0JUV1c7a0wIZ42J4qwxUZw1Jkp5+dj9ulBJz1RRURHz5s2Ltra2obHBwcFoa2uLhoaGEdc0NDQMmx8R8eyzzx51PgAAwEQq+e1zzc3NsXz58pg/f34sWLAg1q1bF729vbFixYqIiFi2bFnMnDkzWltbIyLi1ltvjSuvvDIefPDBuOaaa2LTpk3xwgsvxKOPPjq2rwQAAGAUSo6ixYsXx1tvvRVr1qyJzs7OmDNnTmzbtm3oyxT27ds37FbWZZddFk888UTcfffdceedd8bf/u3fxtNPPx0XXXTRMV+zsrIyWlpaRnxLHYwlZ42J4qwxUZw1JoqzxkQZj7NW8u8UAQAAnErG7tNJAAAAJyFRBAAApCaKAACA1EQRAACQ2gcmitavXx+zZs2KqqqqqK+vjx07drzn/B//+Mdx4YUXRlVVVVx88cWxdevWCdopJ7tSztrGjRvjiiuuiLPPPjvOPvvsaGxsfN+zCX9W6t9rf7Zp06YoKyuLRYsWje8GOWWUetbefvvtWLlyZUyfPj0qKyvjggsu8O9RjkmpZ23dunXxiU98Ik4//fSoq6uL22+/Pf74xz9O0G45Gf3yl7+MhQsXxowZM6KsrCyefvrp912zffv2+MxnPhOVlZXx8Y9/PB5//PGSr/uBiKLNmzdHc3NztLS0xK5du2L27NnR1NQUBw4cGHH+888/H0uWLInrrrsuXnzxxVi0aFEsWrQoXn755QneOSebUs/a9u3bY8mSJfHcc89Fe3t71NXVxdVXXx1vvvnmBO+ck02pZ+3P3njjjfja174WV1xxxQTtlJNdqWetv78/Pv/5z8cbb7wRTz75ZLzyyiuxcePGmDlz5gTvnJNNqWftiSeeiFWrVkVLS0vs3r07Hnvssdi8eXPceeedE7xzTia9vb0xe/bsWL9+/THNf/311+Oaa66Jq666Kjo6OuK2226L66+/Pp555pnSLlx8ACxYsKBYuXLl0J8HBgaKGTNmFK2trSPO/9KXvlRcc801w8bq6+uLf/zHfxzXfXLyK/Ws/bXDhw8XZ555ZvHDH/5wvLbIKWI0Z+3w4cPFZZddVnz/+98vli9fXvz93//9BOyUk12pZ+173/tecd555xX9/f0TtUVOEaWetZUrVxZ/93d/N2ysubm5uPzyy8d1n5w6IqJ46qmn3nPO17/+9eLTn/70sLHFixcXTU1NJV3rhN8p6u/vj507d0ZjY+PQWHl5eTQ2NkZ7e/uIa9rb24fNj4hoamo66nyIGN1Z+2vvvPNOvPvuu3HOOeeM1zY5BYz2rH3zm9+MqVOnxnXXXTcR2+QUMJqz9tOf/jQaGhpi5cqVUVtbGxdddFGsXbs2BgYGJmrbnIRGc9Yuu+yy2Llz59Bb7Pbu3Rtbt26NL3zhCxOyZ3IYqy6YPJabGo2DBw/GwMBA1NbWDhuvra2NPXv2jLims7NzxPmdnZ3jtk9OfqM5a3/tjjvuiBkzZhzxDx/8/0Zz1n71q1/FY489Fh0dHROwQ04Vozlre/fujV/84hfxla98JbZu3RqvvfZa3HzzzfHuu+9GS0vLRGybk9Boztq1114bBw8ejM997nNRFEUcPnw4brrpJm+fY0wdrQt6enriD3/4Q5x++unH9Dwn/E4RnCzuv//+2LRpUzz11FNRVVV1orfDKeTQoUOxdOnS2LhxY0yZMuVEb4dT3ODgYEydOjUeffTRmDdvXixevDjuuuuu2LBhw4neGqeY7du3x9q1a+ORRx6JXbt2xU9+8pPYsmVL3HfffSd6a3CEE36naMqUKTFp0qTo6uoaNt7V1RXTpk0bcc20adNKmg8Roztrf/bAAw/E/fffHz//+c/jkksuGc9tcgoo9az9+te/jjfeeCMWLlw4NDY4OBgREZMnT45XXnklzj///PHdNCel0fy9Nn369DjttNNi0qRJQ2Of/OQno7OzM/r7+6OiomJc98zJaTRn7Z577omlS5fG9ddfHxERF198cfT29saNN94Yd911V5SX+//mOX5H64Lq6upjvksU8QG4U1RRURHz5s2Ltra2obHBwcFoa2uLhoaGEdc0NDQMmx8R8eyzzx51PkSM7qxFRHznO9+J++67L7Zt2xbz58+fiK1ykiv1rF144YXx0ksvRUdHx9Dji1/84tA36dTV1U3k9jmJjObvtcsvvzxee+21ofCOiHj11Vdj+vTpgoijGs1Ze+edd44Inz/H+J8+Qw/Hb8y6oLTvgBgfmzZtKiorK4vHH3+8+O///u/ixhtvLM4666yis7OzKIqiWLp0abFq1aqh+f/5n/9ZTJ48uXjggQeK3bt3Fy0tLcVpp51WvPTSSyfqJXCSKPWs3X///UVFRUXx5JNPFr/97W+HHocOHTpRL4GTRKln7a/59jmOValnbd++fcWZZ55Z/NM//VPxyiuvFD/72c+KqVOnFt/61rdO1EvgJFHqWWtpaSnOPPPM4t///d+LvXv3Fv/xH/9RnH/++cWXvvSlE/USOAkcOnSoePHFF4sXX3yxiIjioYceKl588cXiN7/5TVEURbFq1api6dKlQ/P37t1bnHHGGcU///M/F7t37y7Wr19fTJo0qdi2bVtJ1/1ARFFRFMW//uu/Fueee25RUVFRLFiwoPiv//qvof/syiuvLJYvXz5s/o9+9KPiggsuKCoqKopPf/rTxZYtWyZ4x5ysSjlrH/3oR4uIOOLR0tIy8RvnpFPq32v/P1FEKUo9a88//3xRX19fVFZWFuedd17x7W9/uzh8+PAE75qTUSln7d133y2+8Y1vFOeff35RVVVV1NXVFTfffHPxv//7vxO/cU4azz333Ij/2+vPZ2v58uXFlVdeecSaOXPmFBUVFcV5551X/Nu//VvJ1y0rCvcvAQCAvE74Z4oAAABOJFEEAACkJooAAIDURBEAAJCaKAIAAFITRQAAQGqiCAAASE0UAQAAqYkiAAAgNVEEAACkJooAAIDURBEAAJCaKAIAAFITRQAAQGqiCAAASE0UAQAAqYkiAAAgNVEEAACkJooAAIDURBEAAJCaKAIAAFITRQAAQGqiCAAASE0UAQAAqYkiAAAgNVEEAACkJooAAIDURBEAAJCaKAIAAFITRQAAQGqiCAAASE0UAQAAqYkiAAAgNVEEAACkJooAAIDURBEAAJCaKAIAAFITRQAAQGqiCAAASE0UAQAAqYkiAAAgNVEEAACkJooAAIDURBEAAJCaKAIAAFITRQAAQGqiCAAASE0UAQAAqYkiAAAgNVEEAACkJooAAIDURBEAAJCaKAIAAFITRQAAQGqiCAAASE0UAQAAqYkiAAAgNVEEAACkJooAAIDURBEAAJCaKAIAAFITRQAAQGqiCAAASE0UAQAAqYkiAAAgNVEEAACkJooAAIDURBEAAJCaKAIAAFITRQAAQGqiCAAASE0UAQAAqYkiAAAgNVEEAACkJooAAIDURBEAAJCaKAIAAFITRQAAQGqiCAAASE0UAQAAqYkiAAAgNVEEAACkJooAAIDURBEAAJCaKAIAAFITRQAAQGqiCAAASE0UAQAAqYkiAAAgNVEEAACkJooAAIDURBEAAJCaKAIAAFITRQAAQGqiCAAASE0UAQAAqYkiAAAgNVEEAACkJooAAIDURBEAAJCaKAIAAFITRQAAQGqiCAAASE0UAQAAqYkiAAAgNVEEAACkJooAAIDURBEAAJBayVH0y1/+MhYuXBgzZsyIsrKyePrpp993zfbt2+Mzn/lMVFZWxsc//vF4/PHHR7FVAACAsVdyFPX29sbs2bNj/fr1xzT/9ddfj2uuuSauuuqq6OjoiNtuuy2uv/76eOaZZ0reLAAAwFgrK4qiGPXisrJ46qmnYtGiRUedc8cdd8SWLVvi5ZdfHhr78pe/HG+//XZs27ZttJcGAAAYE5PH+wLt7e3R2Ng4bKypqSluu+22o67p6+uLvr6+oT8PDg7G7373u/jwhz8cZWVl47VVAADgA64oijh06FDMmDEjysvH5isSxj2KOjs7o7a2dthYbW1t9PT0xB/+8Ic4/fTTj1jT2toa995773hvDQAAOEnt378/PvKRj4zJc417FI3G6tWro7m5eejP3d3dce6558b+/fujurr6BO4MAAA4kXp6eqKuri7OPPPMMXvOcY+iadOmRVdX17Cxrq6uqK6uHvEuUUREZWVlVFZWHjFeXV0tigAAgDH9WM24/05RQ0NDtLW1DRt79tlno6GhYbwvDQAA8L5KjqLf//730dHRER0dHRHxp6/c7ujoiH379kXEn976tmzZsqH5N910U+zduze+/vWvx549e+KRRx6JH/3oR3H77bePzSsAAAA4DiVH0QsvvBBz586NuXPnRkREc3NzzJ07N9asWRMREb/97W+HAiki4mMf+1hs2bIlnn322Zg9e3Y8+OCD8f3vfz+amprG6CUAAACM3nH9TtFE6enpiZqamuju7vaZIgAASGw82mDcP1MEAADwQSaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQ2qiiaP369TFr1qyoqqqK+vr62LFjx3vOX7duXXziE5+I008/Perq6uL222+PP/7xj6PaMAAAwFgqOYo2b94czc3N0dLSErt27YrZs2dHU1NTHDhwYMT5TzzxRKxatSpaWlpi9+7d8dhjj8XmzZvjzjvvPO7NAwAAHK+So+ihhx6KG264IVasWBGf+tSnYsOGDXHGGWfED37wgxHnP//883H55ZfHtddeG7NmzYqrr746lixZ8r53lwAAACZCSVHU398fO3fujMbGxr88QXl5NDY2Rnt7+4hrLrvssti5c+dQBO3duze2bt0aX/jCF456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zc3NsXHjxvje974Xe/bsic9//vNx4sSJWL58eURELF26NFatWjUw//Of/3z89re/jfvuuy9ef/312LJlS6xZsyZWrFgxcq8CAABgmEr+nqKmpqY4evRorF69Ojo7O2POnDnR1tY28OELhw4diokT/9hatbW18eKLL8b9998f119/fcycOTPuu+++eOCBB0buVQAAAAxTyd9TdD74niIAACDiPfA9RQAAABcaUQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNSGFUXr16+PWbNmRWVlZdTV1cX27dvPad2mTZtiwoQJsWjRouFcFgAAYMSV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Dh48GF/84hdjwYIFY7RTxrtSz1pvb2984hOfiIMHD8Zzzz0X+/bti40bN8bMmTPHeOeMN6WetWeffTZWrlwZLS0tsWfPnnj66adj8+bN8eCDD47xzhlPTpw4EbNnz47169ef0/xf/epXcfvtt8ett94au3fvji984Qtx1113xYsvvljahYv3gPnz5xcrVqwY+Lmvr6+YMWNG0draOuT8T3/608Xtt98+aKyurq74u7/7u1HdJ+NfqWftT50+fbq49NJLi+9973ujtUUuEMM5a6dPny5uuumm4jvf+U6xbNmy4m/+5m/GYKeMd6WetW9/+9vFlVdeWfT29o7VFrlAlHrWVqxYUfz1X//1oLHm5ubi5ptvHtV9cuGIiOL5559/xzlf+tKXio985CODxpqamorGxsaSrnXe7xT19vbGjh07oqGhYWBs4sSJ0dDQEB0dHUOu6ejoGDQ/IqKxsfGs8yFieGftT7311ltx6tSpuPzyy0drm1wAhnvWvvKVr8TUqVPjzjvvHIttcgEYzln70Y9+FPX19bFixYqoqamJa6+9NtasWRN9fX1jtW3GoeGctZtuuil27Ngx8Ba7AwcOxNatW+OTn/zkmOyZHEaqCyaN5KaG49ixY9HX1xc1NTWDxmtqamLv3r1Druns7Bxyfmdn56jtk/FvOGftTz3wwAMxY8aMM/7hg/9pOGft5z//eTz99NOxe/fuMdghF4rhnLUDBw7ET3/607jjjjti69atsX///rjnnnvi1KlT0dLSMhbbZhwazln7zGc+E8eOHYuPf/zjURRFnD59Oj73uc95+xwj6mxd0NPTE7/73e/i4osvPqfnOe93imC8WLt2bWzatCmef/75qKysPN/b4QJy/PjxWLJkSWzcuDGmTJlyvrfDBa6/vz+mTp0aTz31VMydOzeamprioYceig0bNpzvrXGB2bZtW6xZsya+9a1vxc6dO+OHP/xhbNmyJR577LHzvTU4w3m/UzRlypQoKyuLrq6uQeNdXV0xbdq0IddMmzatpPkQMbyz9rbHH3881q5dGz/5yU/i+uuvH81tcgEo9az98pe/jIMHD8bChQsHxvr7+yMiYtKkSbFv37646qqrRnfTjEvD+XNt+vTpcdFFF0VZWdnA2Ic+9KHo7OyM3t7eKC8vH9U9Mz4N56w98sgjsWTJkrjrrrsiIuK6666LEydOxN133x0PPfRQTJzo/83z7p2tC6qqqs75LlHEe+BOUXl5ecydOzfa29sHxvr7+6O9vT3q6+uHXFNfXz9ofkTESy+9dNb5EDG8sxYR8fWvfz0ee+yxaGtri3nz5o3FVhnnSj1r11xzTbz66quxe/fugcenPvWpgU/Sqa2tHcvtM44M58+1m2++Ofbv3z8Q3hERr7/+ekyfPl0QcVbDOWtvvfXWGeHzdoz/4Xfo4d0bsS4o7TMgRsemTZuKioqK4plnnin+4z/+o7j77ruLyy67rOjs7CyKoiiWLFlSrFy5cmD+v/3bvxWTJk0qHn/88WLPnj1FS0tLcdFFFxWvvvrq+XoJjBOlnrW1a9cW5eXlxXPPPVf85je/GXgcP378fL0ExolSz9qf8ulznKtSz9qhQ4eKSy+9tPj7v//7Yt++fcWPf/zjYurUqcVXv/rV8/USGCdKPWstLS3FpZdeWvzLv/xLceDAgeJf//Vfi6uuuqr49Kc/fb5eAuPA8ePHi127dhW7du0qIqJ44oknil27dhW//vWvi6IoipUrVxZLliwZmH/gwIHikksuKf7hH/6h2LNnT7F+/fqirKysaGtrK+m674koKoqi+Kd/+qfiiiuuKMrLy4v58+cX//7v/z7w12655ZZi2bJlg+Z///vfL66++uqivLy8+MhHPlJs2bJljHfMeFXKWXv/+99fRMQZj5aWlrHfOONOqX+u/U+iiFKUetZeeeWVoq6urqioqCiuvPLK4mtf+1px+vTpMd4141EpZ+3UqVPFl7/85eKqq64qKisri9ra2uKee+4p/uu//mvsN8648fLLLw/5315vn61ly5YVt9xyyxlr5syZU5SXlxdXXnll8c///M8lX3dCUbh/CQAA5HXef6cIAADgfBJFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABIreQo+tnPfhYLFy6MGTNmxIQJE+KFF174s2u2bdsWH/3oR6OioiI+8IEPxDPPPDOMrQIAAIy8kqPoxIkTMXv27Fi/fv05zf/Vr34Vt99+e9x6662xe/fu+MIXvhB33XVXvPjiiyVvFgAAYKRNKIqiGPbiCRPi+eefj0WLFp11zgMPPBBbtmyJ1157bWDs//yf/xNvvvlmtLW1DffSAAAAI2LUf6eoo6MjGhoaBo01NjZGR0fHaF8aAADgz5o02hfo7OyMmpqaQWM1NTXR09MTv/vd7+Liiy8+Y83Jkyfj5MmTAz/39/fHb3/72/hf/+t/xYQJE0Z7ywAAwHtUURRx/PjxmDFjRkycODL3eEY9ioajtbU1Hn300fO9DQAA4D3q8OHD8b//9/8ekeca9SiaNm1adHV1DRrr6uqKqqqqIe8SRUSsWrUqmpubB37u7u6OK664Ig4fPhxVVVWjul8AAOC9q6enJ2pra+PSSy8dsecc9Siqr6+PrVu3Dhp76aWXor6+/qxrKioqoqKi4ozxqqoqUQQAAIzor9WU/Ca8//7v/47du3fH7t27I+IPH7m9e/fuOHToUET84S7P0qVLB+Z/7nOfiwMHDsSXvvSl2Lt3b3zrW9+K73//+3H//fePzCsAAAB4F0qOol/84hdxww03xA033BAREc3NzXHDDTfE6tWrIyLiN7/5zUAgRUT85V/+ZWzZsiVeeumlmD17dnzzm9+M73znO9HY2DhCLwEAAGD43tX3FI2Vnp6eqK6uju7ubm+fAwCAxEajDUb9e4oAAADey0QRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSG1YUrV+/PmbNmhWVlZVRV1cX27dvf8f569atiw9+8INx8cUXR21tbdx///3x+9//flgbBgAAGEklR9HmzZujubk5WlpaYufOnTF79uxobGyMI0eODDn/2WefjZUrV0ZLS0vs2bMnnn766di8eXM8+OCD73rzAAAA71bJUfTEE0/EZz/72Vi+fHl8+MMfjg0bNsQl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92LPnj3x+c9/Pk6cOBHLly+PiIilS5fGqlWrBuZ//vOfj9/+9rdx3333xeuvvx5btmyJNWvWxIoVK0buVQAAAAxTyd9T1NTUFEePHo3Vq1dHZ2dnzJkzJ9ra2gY+fOHQoUMxceIfW6u2tjZefPHFuP/+++P666+PmTNnxn333RcPPPDAyL0KAACAYSr5e4rOB99TBAAARLwHvqcIAADgQiOKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQ2rCiaP369TFr1qyorKyMurq62L59+zmt27RpU0yYMCEWLVo0nMsCAACMuJKjaPPmzdHc3BwtLS2xc+fOmD17djQ2NsaRI0fecd3Bgwfji1/8YixYsGDYmwUAABhpJUfRE088EZ/97Gdj+fLl8eEPfzg2bNgQl1xySXz3u98965q+vr6444474tFHH40rr7zyXW0YAABgJJUURb29vbFjx45oaGj44xNMnBgNDQ3R0dFx1nVf+cpXYurUqXHnnXee03VOnjwZPT09gx4AAACjoaQoOnbsWPT19UVNTc2g8Zqamujs7Bxyzc9//vN4+umnY+PGjed8ndbW1qiurh541NbWlrJNAACAczaqnz53/PjxWLJkSWzcuDGmTJlyzutWrVoV3d3dA4/Dhw+P4i4BAIDMJpUyecqUKVFWVhZdXV2Dxru6umLatGlnzP/lL38ZBw8ejIULFw6M9ff3/+HCkybFvn374qqrrjpjXUVFRVRUVJSyNQAAgGEp6U5ReXl5zJ07N9rb2wfG+vv7o729Perr68+Yf80118Srr74au3fvHnh86lOfiltvvTV2797tbXEAAMB5V9KdooiI5ubmWLZsWcybNy/mz58f69atixMnTsTy5csjImLp0qUxc+bMaG1tjcrKyrj22msHrb/ssssiIs4YBwAAOB9KjqKmpqY4evRorF69Ojo7O2POnDnR1tY28OELhw4diokTR/VXlQAAAEbMhKIoivO9iT+np6cnqquro7u7O6qqqs73dgAAgPNkNNrALR0AACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQm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/3hg7GMf+1jMmTMnNmzYcE7X7Onpierq6uju7o6qqqpStgsAAFxARqMNJpUyube3N3bs2BGrVq0aGJs4cWI0NDRER0fHkGs6Ojqiubl50FhjY2O88MILZ73OyZMn4+TJkwM/d3d3R8Qf/gYAAAB5vd0EJd7beUclRdGxY8eir68vampqBo3X1NTE3r17h1zT2dk55PzOzs6zXqe1tTUeffTRM8Zra2tL2S4AAHCB+s///M+orq4ekecqKYrGyqpVqwbdXXrzzTfj/e9/fxw6dGjEXjgMpaenJ2pra+Pw4cPeqsmoctYYK84aY8VZY6x0d3fHFVdcEZdffvmIPWdJUTRlypQoKyuLrq6uQeNdXV0xbdq0IddMmzatpPkRERUVFVFRUXHGeHV1tX/IGBNVVVXOGmPCWWOsOGuMFWeNsTJx4sh9u1BJz1ReXh5z586N9vb2gbH+/v5ob2+P+vr6IdfU19cPmh8R8dJLL511PgAAwFgq+e1zzc3NsWzZspg3b17Mnz8/1q1bFydOnIjly5dHRMTSpUtj5syZ0draGhER9913X9xyyy3xzW9+M26//fbYtGlT/OIXv4innnpqZF8JAADAMJQcRU1NTXH06NFYvXp1dHZ2xpw5c6KtrW3gwxQOHTo06FbWTTfdFM8++2w8/PDD8eCDD8Zf/dVfxQsvvBDXXnvtOV+zoqIiWlpahnxLHYwkZ42x4qwxVpw1xoqzxlgZjbNW8vcUAQAAXEhG7reTAAAAxiFRBAAApCaKAACA1EQRAACQ2nsmitavXx+zZs2KysrKqKuri+3bt7/j/B/84AdxzTXXRGVlZVx33XWxdevWMdop410pZ23jxo2xYMGCmDx5ckyePDkaGhr+7NmEt5X659rbNm3aFBMmTIhFixaN7ga5YJR61t58881YsWJFTJ8+PSoqKuLqq6/271HOSalnbd26dfHBD34wLr744qitrY37778/fv/734/RbhmPfvazn8XChQtjxowZMWHChHjhhRf+7Jpt27bFRz/60aioqIgPfOAD8cwzz5R83fdEFG3evDmam5ujpaUldu7cGbNnz47GxsY4cuTIkPNfeeWVWLx4cdx5552xa9euWLRoUSxatChee+21Md45402pZ23btm2xePHiePnll6OjoyNqa2vjtttuizfeeGOMd854U+pZe9vBgwfji1/8YixYsGCMdsp4V+pZ6+3tjU984hNx8ODBeO6552Lfvn2xcePGmDlz5hjvnPGm1LP27LPPxsqVK6OlpSX27NkTTz/9dGzevDkefPDBMd4548mJEydi9uzZsX79+nOa/6tf/Spuv/32uPXWW2P37t3xhS98Ie6666548cUXS7tw8R4wf/78YsWKFQM/9/X1FTNmzChaW1uHnP/pT3+6uP322weN1dXVFX/3d383qvtk/Cv1rP2p06dPF5deemnxve99b7S2yAViOGft9OnTxU033VR85zvfKZYtW1b8zd/8zRjslPGu1LP27W9/u7jyyiuL3t7esdoiF4hSz9qKFSuKv/7rvx401tzcXNx8882juk8uHBFRPP/88+8450tf+lLxkY98ZNBYU1NT0djYWNK1zvudot7e3tixY0c0NDQMjE2cODEaGhqio6NjyDUdHR2D5kdENDY2nnU+RAzvrP2pt956K06dOhWXX375aG2TC8Bwz9pXvvKVmDp1atx5551jsU0uAMM5az/60Y+ivr4+VqxYETU1NXHttdfGmjVroq+vb6y2zTg0nLN20003xY4dOwbeYnfgwIHYunVrfPKTnxyTPZPDSHXBpJHc1HAcO3Ys+vr6oqamZtB4TU1N7N27d8g1nZ2dQ87v7OwctX0y/g3nrP2pBx54IGbMmHHGP3zwPw3nrP385z+Pp59+Onbv3j0GO+RCMZyzduDAgfjpT38ad9xxR2zdujX2798f99xzT5w6dSpaWlrGYtuMQ8M5a5/5zGfi2LFj8fGPfzyKoojTp0/H5z73OW+fY0SdrQt6enrid7/7XVx88cXn9Dzn/U4RjBdr166NTZs2xfPPPx+VlZXneztcQI4fPx5LliyJjRs3xpQpU873drjA9ff3x9SpU+Opp56KuXPnRlNTUzz00EOxYcOG8701LjDbtm2LNWvWxLe+9a3YuXNn/PCHP4wtW7bEY489dr63Bmc473eKpkyZEmVlZdHV1TVovKurK6ZNmzbkmmnTppU0HyKGd9be9vjjj8fatWvjJz/5SVx//fWjuU0uAKWetV/+8pdx8ODBWLhw4cBYf39/RERMmjQp9u3bF1ddddXobppxaTh/rk2fPj0uuuiiKCsrGxj70Ic+FJ2dndHb2xvl5eWjumfGp+GctUceeSSWLFkSd911V0REXHfddXHixIm4++6746GHHoqJE/2/ed69s3VBVVXVOd8lingP3CkqLy+PuXPnRnt7+8BYf39/tLe3R319/ZBr6uvrB82PiHjppZfOOh8ihnfWIiK+/vWvx2OPPRZtbW0xb968sdgq41ypZ+2aa66JV199NXbv3j3w+NSnPjXwSTq1tbVjuX3GkeH8uXbzzTfH/v37B8I7IuL111+P6dOnCyLOajhn7a233jojfN6O8T/8Dj28eyPWBaV9BsTo2LRpU1FRUVE888wzxX/8x38Ud999d3HZZZcVnZ2dRVEUxZIlS4qVK1cOzP+3f/u3YtKkScXjjz9e7Nmzp2hpaSkuuuii4tVXXz1fL4FxotSztnbt2qK8vLx47rnnit/85jcDj+PHj5+vl8A4UepZ+1M+fY5zVepZO3ToUHHppZcWf//3f1/s27ev+PGPf1xMnTq1+OpXv3q+XgLjRKlnraWlpbj00kuLf/mXfykOHDhQ/Ou//mtx1VVXFZ/+9KfP10tgHDh+/Hixa9euYteuXUVEFE888USxa9eu4te//nVRFEWxcuXKYsmSJQPzDxw4UFxyySXFP/zDPxR79uwp1q9fX5SVlRVtbW0lXfc9EUVFURT/9E//VFxxxRVFeXl5MX/+/OLf//3fB/7aLbfcUixbtmzQ/O9///vF1VdfXZSXlxcf+chHii1btozxjhmvSjlr73//+4uIOOPR0tIy9htn3Cn1z7X/SRRRilLP2iuvvFLU1dUVFRUVxZVXXll87WtfK06fPj3Gu2Y8KuWsnTp1qvjyl79cXHXVVUVlZWVRW1tb3HPPPcV//dd/jf3GGTdefvnlIf/b6+2ztWzZsuKWW245Y82cOXOK8vLy4sorryz++Z//ueTrTigK9y8BAIC8zvvvFAEAAJxPoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAILX/D2/UBUbvbAtsAAAAAElFTkSuQmCC\n", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAA0UAAAw5CAYAAAA+L+rmAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8g+/7EAAAACXBIWXMAAA9hAAAPYQGoP6dpAACZhElEQVR4nOzdf2zW5b3w8U8LttXMVh2H8mN1THec21RgIF11xnjS2WSGHf44GcMFCPHHcXKM2uxM8Aedc6OeTQ3JEUdk7rjkiQc2M32WQfC4TrLs2BMi2ERzQOPQQcxa5OzYsrq10n6fP5Z1T0dR7tIW4fN6JfcfXLuu+3vdyyXuve/9o6woiiIAAACSKj/RGwAAADiRRBEAAJCaKAIAAFITRQAAQGqiCAAASE0UAQAAqYkiAAAgNVEEAACkJooAAIDURBEAAJBayVH0y1/+MhYuXBgzZsyIsrKyePrpp993zfbt2+Mzn/lMVFZWxsc//vF4/PHHR7FVAACAsVdyFPX29sbs2bNj/fr1xzT/9ddfj2uuuSauuuqq6OjoiNtuuy2uv/76eOaZZ0reLAAAwFgrK4qiGPXisrJ46qmnYtGiRUedc8cdd8SWLVvi5ZdfHhr78pe/HG+//XZs27ZttJcGAAAYE5PH+wLt7e3R2Ng4bKypqSluu+22o67p6+uLvr6+oT8PDg7G7373u/jwhz8cZWVl47VVAADgA64oijh06FDMmDEjysvH5isSxj2KOjs7o7a2dthYbW1t9PT0xB/+8Ic4/fTTj1jT2toa995773hvDQAAOEnt378/PvKRj4zJc417FI3G6tWro7m5eejP3d3dce6558b+/fujurr6BO4MAAA4kXp6eqKuri7OPPPMMXvOcY+iadOmRVdX17Cxrq6uqK6uHvEuUUREZWVlVFZWHjFeXV0tigAAgDH9WM24/05RQ0NDtLW1DRt79tlno6GhYbwvDQAA8L5KjqLf//730dHRER0dHRHxp6/c7ujoiH379kXEn976tmzZsqH5N910U+zduze+/vWvx549e+KRRx6JH/3oR3H77bePzSsAAAA4DiVH0QsvvBBz586NuXPnRkREc3NzzJ07N9asWRMREb/97W+HAiki4mMf+1hs2bIlnn322Zg9e3Y8+OCD8f3vfz+amprG6CUAAACM3nH9TtFE6enpiZqamuju7vaZIgAASGw82mDcP1MEAADwQSaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQ2qiiaP369TFr1qyoqqqK+vr62LFjx3vOX7duXXziE5+I008/Perq6uL222+PP/7xj6PaMAAAwFgqOYo2b94czc3N0dLSErt27YrZs2dHU1NTHDhwYMT5TzzxRKxatSpaWlpi9+7d8dhjj8XmzZvjzjvvPO7NAwAAHK+So+ihhx6KG264IVasWBGf+tSnYsOGDXHGGWfED37wgxHnP//883H55ZfHtddeG7NmzYqrr746lixZ8r53lwAAACZCSVHU398fO3fujMbGxr88QXl5NDY2Rnt7+4hrLrvssti5c+dQBO3duze2bt0aX/jCF456nb6+vujp6Rn2AAAAGA+TS5l88ODBGBgYiNra2mHjtbW1sWfPnhHXXHvttXHw4MH43Oc+F0VRxOHDh+Omm256z7fPtba2xr333lvK1gAAAEZl3L99bvv27bF27dp45JFHYteuXfGTn/wktmzZEvfdd99R16xevTq6u7uHHvv37x/vbQIAAEmVdKdoypQpMWnSpOjq6ho23tXVFdOmTRtxzT333BNLly6N66+/PiIiLr744ujt7Y0bb7wx7rrrrigvP7LLKisro7KyspStAQAAjEpJd4oqKipi3rx50dbWNjQ2ODgYbW1t0dDQMOKad95554jwmTRpUkREFEVR6n4BAADGVEl3iiIimpubY/ny5TF//vxYsGBBrFu3Lnp7e2PFihUREbFs2bKYOXNmtLa2RkTEwoUL46GHHoq5c+dGfX19vPbaa3HPPffEwoULh+IIAADgRCk5ihYvXhxvvfVWrFmzJjo7O2POnDmxbdu2oS9f2Ldv37A7Q3fffXeUlZXF3XffHW+++Wb8zd/8TSxcuDC+/e1vj92rAAAAGKWy4iR4D1tPT0/U1NREd3d3VFdXn+jtAAAAJ8h4tMG4f/scAADAB5koAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqOKovXr18esWbOiqqoq6uvrY8eOHe85/+23346VK1fG9OnTo7KyMi644ILYunXrqDYMAAAwliaXumDz5s3R3NwcGzZsiPr6+li3bl00NTXFK6+8ElOnTj1ifn9/f3z+85+PqVOnxpNPPhkzZ86M3/zmN3HWWWeNxf4BAACOS1lRFEUpC+rr6+PSSy+Nhx9+OCIiBgcHo66uLm655ZZYtWrVEfM3bNgQ3/3ud2PPnj1x2mmnjWqTPT09UVNTE93d3VFdXT2q5wAAAE5+49EGJb19rr+/P3bu3BmNjY1/eYLy8mhsbIz29vYR1/z0pz+NhoaGWLlyZdTW1sZFF10Ua9eujYGBgaNep6+vL3p6eoY9AAAAxkNJUXTw4MEYGBiI2traYeO1tbXR2dk54pq9e/fGk08+GQMDA7F169a455574sEHH4xvfetbR71Oa2tr1NTUDD3q6upK2SYAAMAxG/dvnxscHIypU6fGo48+GvPmzYvFixfHXXfdFRs2bDjqmtWrV0d3d/fQY//+/eO9TQAAIKmSvmhhypQpMWnSpOjq6ho23tXVFdOmTRtxzfTp0+O0006LSZMmDY198pOfjM7Ozujv74+Kiooj1lRWVkZlZWUpWwMAABiVku4UVVRUxLx586KtrW1obHBwMNra2qKhoWHENZdffnm89tprMTg4ODT26quvxvTp00cMIgAAgIlU8tvnmpubY+PGjfHDH/4wdu/eHV/96lejt7c3VqxYERERy5Yti9WrVw/N/+pXvxq/+93v4tZbb41XX301tmzZEmvXro2VK1eO3asAAAAYpZJ/p2jx4sXx1ltvxZo1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OSeT3t7emD17dqxfv/6Y5r/++utxzTXXxFVXXRUdHR1x2223xfXXXx/PPPNMaRcuPgAWLFhQrFy5cujPAwMDxYwZM4rW1tYR53/pS18qrrnmmmFj9fX1xT/+4z+O6z45+ZV61v7a4cOHizPPPLP44Q9/OF5b5BQxmrN2+PDh4rLLLiu+//3vF8uXLy/+/u//fgJ2ysmu1LP2ve99rzjvvPOK/v7+idoip4hSz9rKlSuLv/u7vxs21tzcXFx++eXjuk9OHRFRPPXUU+855+tf/3rx6U9/etjY4sWLi6amppKudcLvFPX398fOnTujsbFxaKy8vDwaGxujvb19xDXt7e3D5kdENDU1HXU+RIzurP21d955J959990455xzxmubnAJGe9a++c1vxtSpU+O6666biG1yChjNWfvpT38aDQ0NsXLlyqitrY2LLroo1q5dGwMDAxO1bU5Cozlrl112WezcuXPoLXZ79+6NrVu3xhe+8IUJ2TM5jFUXTB7LTY3GwYMHY2BgIGpra4eN19bWxp49e0Zc09nZOeL8zs7OcdsnJ7/RnLW/dscdd8SMGTOO+IcP/n+jOWu/+tWv4rHHHouOjo4J2CGnitGctb1798YvfvGL+MpXvhJbt26N1157LW6++eZ49913o6WlZSK2zUloNGft2muvjYMHD8bnPve5KIoiDh8+HDfddJO3zzGmjtYFPT098Yc//CFOP/30Y3qeE36nCE4W999/f2zatCmeeuqpqKqqOtHb4RRy6NChWLp0aWzcuDGmTJlyorfDKW5wcDCmTp0ajz76aMybNy8WL14cd911V2zYsOFEb41TzPbt22Pt2rXxyCOPxK5du+InP/lJbNmyJe67774TvTU4wgm/UzRlypSYNGlSdHV1DRvv6uqKadOmjbhm2rRpJc2HiNGdtT974IEH4v7774+f//zncckll4znNjkFlHrWfv3rX8cbb7wRCxcuHBobHByMiIjJkyfHK6+8Eueff/74bpqT0mj+Xps+fXqcdtppMWnSpKGxT37yk9HZ2Rn9/f1RUVExrnvm5DSas3bPPffE0qVL4/rrr4+IiIsvvjh6e3vjxhtvjLvuuivKy/1/8xy/o3VBdXX1Md8livgA3CmqqKiIefPmRVtb29DY4OBgtLW1RUNDw4hrGhoahs2PiHj22WePOh8iRnfWIiK+853vxH333Rfbtm2L+fPnT8RWOcmVetYuvPDCeOmll6Kjo2Po8cUvfnHom3Tq6uomcvucREbz99rll18er7322lB4R0S8+uqrMX36dEHEUY3mrL3zzjtHhM+fY/xPn6GH4zdmXVDad0CMj02bNhWVlZXF448/Xvz3f/93ceONNxZnnXVW0dnZWRRFUSxdurRYtWrV0Pz//M//LCZPnlw88MADxe7du4uWlpbitNNOK1566aUT9RI4SZR61u6///6ioqKiePLJJ4vf/va3Q49Dhw6dqJfASaLUs/bXfPscx6rUs7Zv377izDPPLP7pn/6peOWVV4qf/exnxdSpU4tvfetbJ+olcJIo9ay1tLQUZ555ZvHv//7vxd69e4v/+I//KM4///ziS1/60ol6CZwEDh06VLz44ovFiy++WERE8dBDDxUvvvhi8Zvf/KYoiqJYtWpVsXTp0qH5e/fuLc4444zin//5n4vdu3cX69evLyZNmlRs27atpOt+IKKoKIriX//1X4tzzz23qKioKBYsWFD813/919B/duWVVxbLly8fNv9HP/pRccEFFxQVFRXFpz/96WLLli0TvGNOVqWctY9+9KNFRBzxaGlpmfiNc9Ip9e+1/58oohSlnrXnn3++qK+vLyorK4vzzjuv+Pa3v10cPnx4gnfNyaiUs/buu+8W3/jGN4rzzz+/qKqqKurq6oqbb765+N///d+J3zgnjeeee27E/+3157O1fPny4sorrzxizZw5c4qKiorivPPOK/7t3/6t5OuWFYX7lwAAQF4n/DNFAAAAJ5IoAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaiVH0S9/+ctYuHBhzJgxI8rKyuLpp59+3zXbt2+Pz3zmM1FZWRkf//jH4/HHHx/FVgEAAMZeyVHU29sbs2fPjvXr1x/T/Ndffz2uueaauOqqq6KjoyNuu+22uP766+OZZ54pebMAAABjrawoimLUi8vK4qmnnopFixYddc4dd9wRW7ZsiZdffnlo7Mtf/nK8/fbbsW3bttFeGgAAYEyM+2eK2tvbo7GxcdhYU1NTtLe3j/elAQAA3tfk8b5AZ2dn1NbWDhurra2Nnp6e+MMf/hCnn376EWv6+vqir69v6M+Dg4Pxu9/9Lj784Q9HWVnZeG8ZAAD4gCqKIg4dOhQzZsyI8vKxuccz7lE0Gq2trXHvvfee6G0AAAAfUPv374+PfOQjY/Jc4x5F06ZNi66urmFjXV1dUV1dPeJdooiI1atXR3Nz89Cfu7u749xzz439+/dHdXX1uO4XAAD44Orp6Ym6uro488wzx+w5xz2KGhoaYuvWrcPGnn322WhoaDjqmsrKyqisrDxivLq6WhQBAABj+rGakt+E9/vf/z46Ojqio6MjIv70ldsdHR2xb9++iPjTXZ5ly5YNzb/pppti79698fWvfz327NkTjzzySPzoRz+K22+/fWxeAQAAwHEoOYpeeOGFmDt3bsydOzciIpqbm2Pu3LmxZs2aiIj47W9/OxRIEREf+9jHYsuWLfHss8/G7Nmz48EHH4zvf//70dTUNEYvAQAAYPSO63eKJkpPT0/U1NREd3e3t88BAEBi49EG4/47RQAAAB9koggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmNKorWr18fs2bNiqqqqqivr48dO3a85/x169bFJz7xiTj99NOjrq4ubr/99vjjH/84qg0DAACMpZKjaPPmzdHc3BwtLS2xa9eumD17djQ1NcWBAwdGnP/EE0/EqlWroqWlJXbv3h2PPfZYbN68Oe68887j3jwAAMDxKjmKHnroobjhhhtixYoV8alPfSo2bNgQZ5xxRvzgBz8Ycf7zzz8fl19+eVx77bUxa9asuPrqq2PJkiXve3cJAABgIpQURf39/bFz585obGz8yxOUl0djY2O0t7ePuOayyy6LnTt3DkXQ3r17Y+vWrfGF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bds29OUL+/bti/Lyv7RWXV1dPPPMM3H77bfHJZdcEjNnzoxbb7017rjjjrF7FQAAAKNU8u8UnQh+pwgAAIj4APxOEQAAwKlGFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAILVRRdH69etj1qxZUVVVFfX19bFjx45jWrdp06YoKyuLRYsWjeayAAAAY67kKNq8eXM0NzdHS0tL7Nq1K2bPnh1NTU1x4MCB91z3xhtvxNe+9rW44oorRr1ZAACAsVZyFD300ENxww03xIoVK+JTn/pUbNiwIc4444z4wQ9+cNQ1AwMD8ZWvfCXuvffeOO+8845rwwAAAGOppCjq7++PnTt3RmNj41+eoLw8Ghsbo729/ajrvvnNb8bUqVPjuuuuO6br9PX1RU9Pz7AHAADAeCgpig4ePBgDAwNRW1s7bLy2tjY6OztHXPOrX/0qHnvssdi4ceMxX6e1tTVqamqGHnV1daVsEwAA4JiN67fPHTp0KJYuXRobN26MKVOmHPO61atXR3d399Bj//7947hLAAAgs8mlTJ4yZUpMmjQpurq6ho13dXXFtGnTjpj/61//Ot54441YuHDh0Njg4OCfLjx5crzyyitx/vnnH7GusrIyKisrS9kaAADAqJR0p6iioiLmzZsXbW1tQ2ODg4PR1tYWDQ0NR8y/8MIL46WXXoqOjo6hxxe/+MW46qqroqOjw9viAACAE66kO0UREc3NzbF8+fKYP39+LFiwINatWxe9vb2xYsWKiIhYtmxZzJw5M1pbW6OqqiouuuiiYevPOuusiIgjxgEAAE6EkqNo8eLF8dZbb8WaNWuis7Mz5syZE9u2bRv68oV9+/ZFefm4flQJAABgzJQVRVGc6E28n56enqipqYnu7u6orq4+0dsBAABOkPFoA7d0AACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSG1UUrV+/PmbNmhVVVVVRX18fO3bsOOrcjRs3xhVXXBFnn312nH322dHY2Pie8wEAACZSyVG0efPmaG5ujpaWlti1a1fMnj07mpqa4sCBAyPO3759eyxZsiSee+65aG9vj7q6urj66qvjzTffPO7NAwAAHK+yoiiKUhbU19fHpZdeGg8//HBERAwODkZdXV3ccsstsWrVqvddPzAwEGeffXY8/PDDsWzZsmO6Zk9PT9TU1ER3d3dUV1eXsl0AAOAUMh5tUNKdov7+/ti5c2c0Njb+5QnKy6OxsTHa29uP6TneeeedePfdd+Occ8456py+vr7o6ekZ9gAAABgPJUXRwYMHY2BgIGpra4eN19bWRmdn5zE9xx133BEzZswYFlZ/rbW1NWpqaoYedXV1pWwTAADgmE3ot8/df//9sWnTpnjqqaeiqqrqqPNWr14d3d3dQ4/9+/dP4C4BAIBMJpcyecqUKTFp0qTo6uoaNt7V1RXTpk17z7UPPPBA3H///fHzn/88LrnkkvecW1lZGZWVlaVsDQAAYFRKulNUUVER8+bNi7a2tqGxwcHBaGtri4aGhqOu+853vhP33XdfbNu2LebPnz/63QIAAIyxku4URUQ0NzfH8uXLY/78+bFgwYJYt25d9Pb2xooVKyIiYtmyZTFz5sxobW2NiIh/+Zd/iTVr1sQTTzwRs2bNGvrs0Yc+9KH40Ic+NIYvBQAAoHQlR9HixYvjrbfeijVr1kRnZ2fMmTMntm3bNvTlC/v27Yvy8r/cgPre974X/f398Q//8A/DnqelpSW+8Y1vHN/uAQAAjlPJv1N0IvidIgAAIOID8DtFAAAApxpRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EYVRevXr49Zs2ZFVVVV1NfXx44dO95z/o9//OO48MILo6qqKi6++OLYunXrqDYLAAAw1kqOos2bN0dzc3O0tLTErl27Yvbs2dHU1BQHDhwYcf7zzz8fS5Ysieuuuy5efPHFWLRoUSxatChefvnl4948AADA8SoriqIoZUF9fX1ceuml8fDDD0dExODgYNTV1cUtt9wSq1atOmL+4sWLo7e3N372s58NjX32s5+NOXPmxIYNG47pmj09PVFTUxPd3d1RXV1dynYBAIBTyHi0weRSJvf398fOnTtj9erVQ2Pl5eXR2NgY7e3tI65pb2+P5ubmYWNNTU3x9NNPH/U6fX190dfXN/Tn7u7uiPjTfwEAAEBef26CEu/tvKeSoujgwYMxMDAQtbW1w8Zra2tjz549I67p7OwccX5nZ+dRr9Pa2hr33nvvEeN1dXWlbBcAADhF/c///E/U1NSMyXOVFEUTZfXq1cPuLr399tvx0Y9+NPbt2zdmLxxG0tPTE3V1dbF//35v1WRcOWtMFGeNieKsMVG6u7vj3HPPjXPOOWfMnrOkKJoyZUpMmjQpurq6ho13dXXFtGnTRlwzbdq0kuZHRFRWVkZlZeUR4zU1Nf4hY0JUV1c7a0wIZ42J4qwxUZw1Jkp5+dj9ulBJz1RRURHz5s2Ltra2obHBwcFoa2uLhoaGEdc0NDQMmx8R8eyzzx51PgAAwEQq+e1zzc3NsXz58pg/f34sWLAg1q1bF729vbFixYqIiFi2bFnMnDkzWltbIyLi1ltvjSuvvDIefPDBuOaaa2LTpk3xwgsvxKOPPjq2rwQAAGAUSo6ixYsXx1tvvRVr1qyJzs7OmDNnTmzbtm3oyxT27ds37FbWZZddFk888UTcfffdceedd8bf/u3fxtNPPx0XXXTRMV+zsrIyWlpaRnxLHYwlZ42J4qwxUZw1JoqzxkQZj7NW8u8UAQAAnErG7tNJAAAAJyFRBAAApCaKAACA1EQRAACQ2gcmitavXx+zZs2KqqqqqK+vjx07drzn/B//+Mdx4YUXRlVVVVx88cWxdevWCdopJ7tSztrGjRvjiiuuiLPPPjvOPvvsaGxsfN+zCX9W6t9rf7Zp06YoKyuLRYsWje8GOWWUetbefvvtWLlyZUyfPj0qKyvjggsu8O9RjkmpZ23dunXxiU98Ik4//fSoq6uL22+/Pf74xz9O0G45Gf3yl7+MhQsXxowZM6KsrCyefvrp912zffv2+MxnPhOVlZXx8Y9/PB5//PGSr/uBiKLNmzdHc3NztLS0xK5du2L27NnR1NQUBw4cGHH+888/H0uWLInrrrsuXnzxxVi0aFEsWrQoXn755QneOSebUs/a9u3bY8mSJfHcc89Fe3t71NXVxdVXXx1vvvnmBO+ck02pZ+3P3njjjfja174WV1xxxQTtlJNdqWetv78/Pv/5z8cbb7wRTz75ZLzyyiuxcePGmDlz5gTvnJNNqWftiSeeiFWrVkVLS0vs3r07Hnvssdi8eXPceeedE7xzTia9vb0xe/bsWL9+/THNf/311+Oaa66Jq666Kjo6OuK2226L66+/Pp555pnSLlx8ACxYsKBYuXLl0J8HBgaKGTNmFK2trSPO/9KXvlRcc801w8bq6+uLf/zHfxzXfXLyK/Ws/bXDhw8XZ555ZvHDH/5wvLbIKWI0Z+3w4cPFZZddVnz/+98vli9fXvz93//9BOyUk12pZ+173/tecd555xX9/f0TtUVOEaWetZUrVxZ/93d/N2ysubm5uPzyy8d1n5w6IqJ46qmn3nPO17/+9eLTn/70sLHFixcXTU1NJV3rhN8p6u/vj507d0ZjY+PQWHl5eTQ2NkZ7e/uIa9rb24fNj4hoamo66nyIGN1Z+2vvvPNOvPvuu3HOOeeM1zY5BYz2rH3zm9+MqVOnxnXXXTcR2+QUMJqz9tOf/jQaGhpi5cqVUVtbGxdddFGsXbs2BgYGJmrbnIRGc9Yuu+yy2Llz59Bb7Pbu3Rtbt26NL3zhCxOyZ3IYqy6YPJabGo2DBw/GwMBA1NbWDhuvra2NPXv2jLims7NzxPmdnZ3jtk9OfqM5a3/tjjvuiBkzZhzxDx/8/0Zz1n71q1/FY489Fh0dHROwQ04Vozlre/fujV/84hfxla98JbZu3RqvvfZa3HzzzfHuu+9GS0vLRGybk9Boztq1114bBw8ejM997nNRFEUcPnw4brrpJm+fY0wdrQt6enriD3/4Q5x++unH9Dwn/E4RnCzuv//+2LRpUzz11FNRVVV1orfDKeTQoUOxdOnS2LhxY0yZMuVEb4dT3ODgYEydOjUeffTRmDdvXixevDjuuuuu2LBhw4neGqeY7du3x9q1a+ORRx6JXbt2xU9+8pPYsmVL3HfffSd6a3CEE36naMqUKTFp0qTo6uoaNt7V1RXTpk0bcc20adNKmg8Roztrf/bAAw/E/fffHz//+c/jkksuGc9tcgoo9az9+te/jjfeeCMWLlw4NDY4OBgREZMnT45XXnklzj///PHdNCel0fy9Nn369DjttNNi0qRJQ2Of/OQno7OzM/r7+6OiomJc98zJaTRn7Z577omlS5fG9ddfHxERF198cfT29saNN94Yd911V5SX+//mOX5H64Lq6upjvksU8QG4U1RRURHz5s2Ltra2obHBwcFoa2uLhoaGEdc0NDQMmx8R8eyzzx51PkSM7qxFRHznO9+J++67L7Zt2xbz58+fiK1ykiv1rF144YXx0ksvRUdHx9Dji1/84tA36dTV1U3k9jmJjObvtcsvvzxee+21ofCOiHj11Vdj+vTpgoijGs1Ze+edd44Inz/H+J8+Qw/Hb8y6oLTvgBgfmzZtKiorK4vHH3+8+O///u/ixhtvLM4666yis7OzKIqiWLp0abFq1aqh+f/5n/9ZTJ48uXjggQeK3bt3Fy0tLcVpp51WvPTSSyfqJXCSKPWs3X///UVFRUXx5JNPFr/97W+HHocOHTpRL4GTRKln7a/59jmOValnbd++fcWZZ55Z/NM//VPxyiuvFD/72c+KqVOnFt/61rdO1EvgJFHqWWtpaSnOPPPM4t///d+LvXv3Fv/xH/9RnH/++cWXvvSlE/USOAkcOnSoePHFF4sXX3yxiIjioYceKl588cXiN7/5TVEURbFq1api6dKlQ/P37t1bnHHGGcU///M/F7t37y7Wr19fTJo0qdi2bVtJ1/1ARFFRFMW//uu/Fueee25RUVFRLFiwoPiv//qvof/syiuvLJYvXz5s/o9+9KPiggsuKCoqKopPf/rTxZYtWyZ4x5ysSjlrH/3oR4uIOOLR0tIy8RvnpFPq32v/P1FEKUo9a88//3xRX19fVFZWFuedd17x7W9/uzh8+PAE75qTUSln7d133y2+8Y1vFOeff35RVVVV1NXVFTfffHPxv//7vxO/cU4azz333Ij/2+vPZ2v58uXFlVdeecSaOXPmFBUVFcV5551X/Nu//VvJ1y0rCvcvAQCAvE74Z4oAAABOJFEEAACkJooAAIDURBEAAJCaKAIAAFITRQAAQGqiCAAASE0UAQAAqYkiAAAgNVEEAACkJooAAIDURBEAAJCaKAIAAFITRQAAQGqiCAAASE0UAQAAqYkiAAAgNVEEAACkJooAAIDURBEAAJCaKAIAAFITRQAAQGqiCAAASE0UAQAAqYkiAAAgNVEEAACkJooAAIDURBEAAJCaKAIAAFITRQAAQGqiCAAASE0UAQAAqYkiAAAgNVEEAACkJooAAIDURBEAAJCaKAIAAFITRQAAQGqiCAAASE0UAQAAqYkiAAAgNVEEAACkJooAAIDURBEAAJCaKAIAAFITRQAAQGqiCAAASE0UAQAAqYkiAAAgNVEEAACkJooAAIDURBEAAJCaKAIAAFITRQAAQGqiCAAASE0UAQAAqYkiAAAgNVEEAACkJooAAIDURBEAAJCaKAIAAFITRQAAQGqiCAAASE0UAQAAqYkiAAAgNVEEAACkJooAAIDURBEAAJCaKAIAAFITRQAAQGqiCAAASE0UAQAAqYkiAAAgNVEEAACkJooAAIDURBEAAJCaKAIAAFITRQAAQGqiCAAASE0UAQAAqYkiAAAgNVEEAACkJooAAIDURBEAAJCaKAIAAFITRQAAQGqiCAAASE0UAQAAqYkiAAAgNVEEAACkJooAAIDURBEAAJCaKAIAAFITRQAAQGqiCAAASE0UAQAAqYkiAAAgNVEEAACkJooAAIDURBEAAJCaKAIAAFITRQAAQGqiCAAASE0UAQAAqYkiAAAgNVEEAACkJooAAIDURBEAAJBayVH0y1/+MhYuXBgzZsyIsrKyePrpp993zfbt2+Mzn/lMVFZWxsc//vF4/PHHR7FVAACAsVdyFPX29sbs2bNj/fr1xzT/9ddfj2uuuSauuuqq6OjoiNtuuy2uv/76eOaZZ0reLAAAwFgrK4qiGPXisrJ46qmnYtGiRUedc8cdd8SWLVvi5ZdfHhr78pe/HG+//XZs27ZttJcGAAAYE5PH+wLt7e3R2Ng4bKypqSluu+22o67p6+uLvr6+oT8PDg7G7373u/jwhz8cZWVl47VVAADgA64oijh06FDMmDEjysvH5isSxj2KOjs7o7a2dthYbW1t9PT0xB/+8Ic4/fTTj1jT2toa995773hvDQAAOEnt378/PvKRj4zJc417FI3G6tWro7m5eejP3d3dce6558b+/fujurr6BO4MAAA4kXp6eqKuri7OPPPMMXvOcY+iadOmRVdX17Cxrq6uqK6uHvEuUUREZWVlVFZWHjFeXV0tigAAgDH9WM24/05RQ0NDtLW1DRt79tlno6GhYbwvDQAA8L5KjqLf//730dHRER0dHRHxp6/c7ujoiH379kXEn976tmzZsqH5N910U+zduze+/vWvx549e+KRRx6JH/3oR3H77bePzSsAAAA4DiVH0QsvvBBz586NuXPnRkREc3NzzJ07N9asWRMREb/97W+HAiki4mMf+1hs2bIlnn322Zg9e3Y8+OCD8f3vfz+amprG6CUAAACM3nH9TtFE6enpiZqamuju7vaZIgAASGw82mDcP1MEAADwQSaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQ2qiiaP369TFr1qyoqqqK+vr62LFjx3vOX7duXXziE5+I008/Perq6uL222+PP/7xj6PaMAAAwFgqOYo2b94czc3N0dLSErt27YrZs2dHU1NTHDhwYMT5TzzxRKxatSpaWlpi9+7d8dhjj8XmzZvjzjvvPO7NAwAAHK+So+ihhx6KG264IVasWBGf+tSnYsOGDXHGGWfED37wgxHnP//883H55ZfHtddeG7NmzYqrr746lixZ8r53lwAAACZCSVHU398fO3fujMbGxr88QXl5NDY2Rnt7+4hrLrvssti5c+dQBO3duze2bt0aX/jCF456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zc3NsXHjxvje974Xe/bsic9//vNx4sSJWL58eURELF26NFatWjUw//Of/3z89re/jfvuuy9ef/312LJlS6xZsyZWrFgxcq8CAABgmEr+nqKmpqY4evRorF69Ojo7O2POnDnR1tY28OELhw4diokT/9hatbW18eKLL8b9998f119/fcycOTPuu+++eOCBB0buVQAAAAxTyd9TdD74niIAACDiPfA9RQAAABcaUQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNSGFUXr16+PWbNmRWVlZdTV1cX27dvPad2mTZtiwoQJsWjRouFcFgAAYMSV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Dh48GF/84hdjwYIFY7RTxrtSz1pvb2984hOfiIMHD8Zzzz0X+/bti40bN8bMmTPHeOeMN6WetWeffTZWrlwZLS0tsWfPnnj66adj8+bN8eCDD47xzhlPTpw4EbNnz47169ef0/xf/epXcfvtt8ett94au3fvji984Qtx1113xYsvvljahYv3gPnz5xcrVqwY+Lmvr6+YMWNG0draOuT8T3/608Xtt98+aKyurq74u7/7u1HdJ+NfqWftT50+fbq49NJLi+9973ujtUUuEMM5a6dPny5uuumm4jvf+U6xbNmy4m/+5m/GYKeMd6WetW9/+9vFlVdeWfT29o7VFrlAlHrWVqxYUfz1X//1oLHm5ubi5ptvHtV9cuGIiOL5559/xzlf+tKXio985CODxpqamorGxsaSrnXe7xT19vbGjh07oqGhYWBs4sSJ0dDQEB0dHUOu6ejoGDQ/IqKxsfGs8yFieGftT7311ltx6tSpuPzyy0drm1wAhnvWvvKVr8TUqVPjzjvvHIttcgEYzln70Y9+FPX19bFixYqoqamJa6+9NtasWRN9fX1jtW3GoeGctZtuuil27Ngx8Ba7AwcOxNatW+OTn/zkmOyZHEaqCyaN5KaG49ixY9HX1xc1NTWDxmtqamLv3r1Druns7Bxyfmdn56jtk/FvOGftTz3wwAMxY8aMM/7hg/9pOGft5z//eTz99NOxe/fuMdghF4rhnLUDBw7ET3/607jjjjti69atsX///rjnnnvi1KlT0dLSMhbbZhwazln7zGc+E8eOHYuPf/zjURRFnD59Oj73uc95+xwj6mxd0NPTE7/73e/i4osvPqfnOe93imC8WLt2bWzatCmef/75qKysPN/b4QJy/PjxWLJkSWzcuDGmTJlyvrfDBa6/vz+mTp0aTz31VMydOzeamprioYceig0bNpzvrXGB2bZtW6xZsya+9a1vxc6dO+OHP/xhbNmyJR577LHzvTU4w3m/UzRlypQoKyuLrq6uQeNdXV0xbdq0IddMmzatpPkQMbyz9rbHH3881q5dGz/5yU/i+uuvH81tcgEo9az98pe/jIMHD8bChQsHxvr7+yMiYtKkSbFv37646qqrRnfTjEvD+XNt+vTpcdFFF0VZWdnA2Ic+9KHo7OyM3t7eKC8vH9U9Mz4N56w98sgjsWTJkrjrrrsiIuK6666LEydOxN133x0PPfRQTJzo/83z7p2tC6qqqs75LlHEe+BOUXl5ecydOzfa29sHxvr7+6O9vT3q6+uHXFNfXz9ofkTESy+9dNb5EDG8sxYR8fWvfz0ee+yxaGtri3nz5o3FVhnnSj1r11xzTbz66quxe/fugcenPvWpgU/Sqa2tHcvtM44M58+1m2++Ofbv3z8Q3hERr7/+ekyfPl0QcVbDOWtvvfXWGeHzdoz/4Xfo4d0bsS4o7TMgRsemTZuKioqK4plnnin+4z/+o7j77ruLyy67rOjs7CyKoiiWLFlSrFy5cmD+v/3bvxWTJk0qHn/88WLPnj1FS0tLcdFFFxWvvvrq+XoJjBOlnrW1a9cW5eXlxXPPPVf85je/GXgcP378fL0ExolSz9qf8ulznKtSz9qhQ4eKSy+9tPj7v//7Yt++fcWPf/zjYurUqcVXv/rV8/USGCdKPWstLS3FpZdeWvzLv/xLceDAgeJf//Vfi6uuuqr49Kc/fb5eAuPA8ePHi127dhW7du0qIqJ44oknil27dhW//vWvi6IoipUrVxZLliwZmH/gwIHikksuKf7hH/6h2LNnT7F+/fqirKysaGtrK+m674koKoqi+Kd/+qfiiiuuKMrLy4v58+cX//7v/z7w12655ZZi2bJlg+Z///vfL66++uqivLy8+MhHPlJs2bJljHfMeFXKWXv/+99fRMQZj5aWlrHfOONOqX+u/U+iiFKUetZeeeWVoq6urqioqCiuvPLK4mtf+1px+vTpMd4141EpZ+3UqVPFl7/85eKqq64qKisri9ra2uKee+4p/uu//mvsN8648fLLLw/5315vn61ly5YVt9xyyxlr5syZU5SXlxdXXnll8c///M8lX3dCUbh/CQAA5HXef6cIAADgfBJFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABIreQo+tnPfhYLFy6MGTNmxIQJE+KFF174s2u2bdsWH/3oR6OioiI+8IEPxDPPPDOMrQIAAIy8kqPoxIkTMXv27Fi/fv05zf/Vr34Vt99+e9x6662xe/fu+MIXvhB33XVXvPjiiyVvFgAAYKRNKIqiGPbiCRPi+eefj0WLFp11zgMPPBBbtmyJ1157bWDs//yf/xNvvvlmtLW1DffSAAAAI2LUf6eoo6MjGhoaBo01NjZGR0fHaF8aAADgz5o02hfo7OyMmpqaQWM1NTXR09MTv/vd7+Liiy8+Y83Jkyfj5MmTAz/39/fHb3/72/hf/+t/xYQJE0Z7ywAAwHtUURRx/PjxmDFjRkycODL3eEY9ioajtbU1Hn300fO9DQAA4D3q8OHD8b//9/8ekeca9SiaNm1adHV1DRrr6uqKqqqqIe8SRUSsWrUqmpubB37u7u6OK664Ig4fPhxVVVWjul8AAOC9q6enJ2pra+PSSy8dsecc9Siqr6+PrVu3Dhp76aWXor6+/qxrKioqoqKi4ozxqqoqUQQAAIzor9WU/Ca8//7v/47du3fH7t27I+IPH7m9e/fuOHToUET84S7P0qVLB+Z/7nOfiwMHDsSXvvSl2Lt3b3zrW9+K73//+3H//fePzCsAAAB4F0qOol/84hdxww03xA033BAREc3NzXHDDTfE6tWrIyLiN7/5zUAgRUT85V/+ZWzZsiVeeumlmD17dnzzm9+M73znO9HY2DhCLwEAAGD43tX3FI2Vnp6eqK6uju7ubm+fAwCAxEajDUb9e4oAAADey0QRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSG1YUrV+/PmbNmhWVlZVRV1cX27dvf8f569atiw9+8INx8cUXR21tbdx///3x+9//flgbBgAAGEklR9HmzZujubk5WlpaYufOnTF79uxobGyMI0eODDn/2WefjZUrV0ZLS0vs2bMnnn766di8eXM8+OCD73rzAAAA71bJUfTEE0/EZz/72Vi+fHl8+MMfjg0bNsQl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92LPnj3x+c9/Pk6cOBHLly+PiIilS5fGqlWrBuZ//vOfj9/+9rdx3333xeuvvx5btmyJNWvWxIoVK0buVQAAAAxTyd9T1NTUFEePHo3Vq1dHZ2dnzJkzJ9ra2gY+fOHQoUMxceIfW6u2tjZefPHFuP/+++P666+PmTNnxn333RcPPPDAyL0KAACAYSr5e4rOB99TBAAARLwHvqcIAADgQiOKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQ2rCiaP369TFr1qyorKyMurq62L59+zmt27RpU0yYMCEWLVo0nMsCAACMuJKjaPPmzdHc3BwtLS2xc+fOmD17djQ2NsaRI0fecd3Bgwfji1/8YixYsGDYmwUAABhpJUfRE088EZ/97Gdj+fLl8eEPfzg2bNgQl1xySXz3u98965q+vr6444474tFHH40rr7zyXW0YAABgJJUURb29vbFjx45oaGj44xNMnBgNDQ3R0dFx1nVf+cpXYurUqXHnnXee03VOnjwZPT09gx4AAACjoaQoOnbsWPT19UVNTc2g8Zqamujs7Bxyzc9//vN4+umnY+PGjed8ndbW1qiurh541NbWlrJNAACAczaqnz53/PjxWLJkSWzcuDGmTJlyzutWrVoV3d3dA4/Dhw+P4i4BAIDMJpUyecqUKVFWVhZdXV2Dxru6umLatGlnzP/lL38ZBw8ejIULFw6M9ff3/+HCkybFvn374qqrrjpjXUVFRVRUVJSyNQAAgGEp6U5ReXl5zJ07N9rb2wfG+vv7o729Perr68+Yf80118Srr74au3fvHnh86lOfiltvvTV2797tbXEAAMB5V9KdooiI5ubmWLZsWcybNy/mz58f69atixMnTsTy5csjImLp0qUxc+bMaG1tjcrKyrj22msHrb/ssssiIs4YBwAAOB9KjqKmpqY4evRorF69Ojo7O2POnDnR1tY28OELhw4diokTR/VXlQAAAEbMhKIoivO9iT+np6cnqquro7u7O6qqqs73dgAAgPNkNNrALR0AACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQm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/3hg7GMf+1jMmTMnNmzYcE7X7Onpierq6uju7o6qqqpStgsAAFxARqMNJpUyube3N3bs2BGrVq0aGJs4cWI0NDRER0fHkGs6Ojqiubl50FhjY2O88MILZ73OyZMn4+TJkwM/d3d3R8Qf/gYAAAB5vd0EJd7beUclRdGxY8eir68vampqBo3X1NTE3r17h1zT2dk55PzOzs6zXqe1tTUeffTRM8Zra2tL2S4AAHCB+s///M+orq4ekecqKYrGyqpVqwbdXXrzzTfj/e9/fxw6dGjEXjgMpaenJ2pra+Pw4cPeqsmoctYYK84aY8VZY6x0d3fHFVdcEZdffvmIPWdJUTRlypQoKyuLrq6uQeNdXV0xbdq0IddMmzatpPkRERUVFVFRUXHGeHV1tX/IGBNVVVXOGmPCWWOsOGuMFWeNsTJx4sh9u1BJz1ReXh5z586N9vb2gbH+/v5ob2+P+vr6IdfU19cPmh8R8dJLL511PgAAwFgq+e1zzc3NsWzZspg3b17Mnz8/1q1bFydOnIjly5dHRMTSpUtj5syZ0draGhER9913X9xyyy3xzW9+M26//fbYtGlT/OIXv4innnpqZF8JAADAMJQcRU1NTXH06NFYvXp1dHZ2xpw5c6KtrW3gwxQOHTo06FbWTTfdFM8++2w8/PDD8eCDD8Zf/dVfxQsvvBDXXnvtOV+zoqIiWlpahnxLHYwkZ42x4qwxVpw1xoqzxlgZjbNW8vcUAQAAXEhG7reTAAAAxiFRBAAApCaKAACA1EQRAACQ2nsmitavXx+zZs2KysrKqKuri+3bt7/j/B/84AdxzTXXRGVlZVx33XWxdevWMdop410pZ23jxo2xYMGCmDx5ckyePDkaGhr+7NmEt5X659rbNm3aFBMmTIhFixaN7ga5YJR61t58881YsWJFTJ8+PSoqKuLqq6/271HOSalnbd26dfHBD34wLr744qitrY37778/fv/734/RbhmPfvazn8XChQtjxowZMWHChHjhhRf+7Jpt27bFRz/60aioqIgPfOAD8cwzz5R83fdEFG3evDmam5ujpaUldu7cGbNnz47GxsY4cuTIkPNfeeWVWLx4cdx5552xa9euWLRoUSxatChee+21Md45402pZ23btm2xePHiePnll6OjoyNqa2vjtttuizfeeGOMd854U+pZe9vBgwfji1/8YixYsGCMdsp4V+pZ6+3tjU984hNx8ODBeO6552Lfvn2xcePGmDlz5hjvnPGm1LP27LPPxsqVK6OlpSX27NkTTz/9dGzevDkefPDBMd4548mJEydi9uzZsX79+nOa/6tf/Spuv/32uPXWW2P37t3xhS98Ie6666548cUXS7tw8R4wf/78YsWKFQM/9/X1FTNmzChaW1uHnP/pT3+6uP322weN1dXVFX/3d383qvtk/Cv1rP2p06dPF5deemnxve99b7S2yAViOGft9OnTxU033VR85zvfKZYtW1b8zd/8zRjslPGu1LP27W9/u7jyyiuL3t7esdoiF4hSz9qKFSuKv/7rvx401tzcXNx8882juk8uHBFRPP/88+8450tf+lLxkY98ZNBYU1NT0djYWNK1zvudot7e3tixY0c0NDQMjE2cODEaGhqio6NjyDUdHR2D5kdENDY2nnU+RAzvrP2pt956K06dOhWXX375aG2TC8Bwz9pXvvKVmDp1atx5551jsU0uAMM5az/60Y+ivr4+VqxYETU1NXHttdfGmjVroq+vb6y2zTg0nLN20003xY4dOwbeYnfgwIHYunVrfPKTnxyTPZPDSHXBpJHc1HAcO3Ys+vr6oqamZtB4TU1N7N27d8g1nZ2dQ87v7OwctX0y/g3nrP2pBx54IGbMmHHGP3zwPw3nrP385z+Pp59+Onbv3j0GO+RCMZyzduDAgfjpT38ad9xxR2zdujX2798f99xzT5w6dSpaWlrGYtuMQ8M5a5/5zGfi2LFj8fGPfzyKoojTp0/H5z73OW+fY0SdrQt6enrid7/7XVx88cXn9Dzn/U4RjBdr166NTZs2xfPPPx+VlZXneztcQI4fPx5LliyJjRs3xpQpU873drjA9ff3x9SpU+Opp56KuXPnRlNTUzz00EOxYcOG8701LjDbtm2LNWvWxLe+9a3YuXNn/PCHP4wtW7bEY489dr63Bmc473eKpkyZEmVlZdHV1TVovKurK6ZNmzbkmmnTppU0HyKGd9be9vjjj8fatWvjJz/5SVx//fWjuU0uAKWetV/+8pdx8ODBWLhw4cBYf39/RERMmjQp9u3bF1ddddXobppxaTh/rk2fPj0uuuiiKCsrGxj70Ic+FJ2dndHb2xvl5eWjumfGp+GctUceeSSWLFkSd911V0REXHfddXHixIm4++6746GHHoqJE/2/ed69s3VBVVXVOd8lingP3CkqLy+PuXPnRnt7+8BYf39/tLe3R319/ZBr6uvrB82PiHjppZfOOh8ihnfWIiK+/vWvx2OPPRZtbW0xb968sdgq41ypZ+2aa66JV199NXbv3j3w+NSnPjXwSTq1tbVjuX3GkeH8uXbzzTfH/v37B8I7IuL111+P6dOnCyLOajhn7a233jojfN6O8T/8Dj28eyPWBaV9BsTo2LRpU1FRUVE888wzxX/8x38Ud999d3HZZZcVnZ2dRVEUxZIlS4qVK1cOzP+3f/u3YtKkScXjjz9e7Nmzp2hpaSkuuuii4tVXXz1fL4FxotSztnbt2qK8vLx47rnnit/85jcDj+PHj5+vl8A4UepZ+1M+fY5zVepZO3ToUHHppZcWf//3f1/s27ev+PGPf1xMnTq1+OpXv3q+XgLjRKlnraWlpbj00kuLf/mXfykOHDhQ/Ou//mtx1VVXFZ/+9KfP10tgHDh+/Hixa9euYteuXUVEFE888USxa9eu4te//nVRFEWxcuXKYsmSJQPzDxw4UFxyySXFP/zDPxR79uwp1q9fX5SVlRVtbW0lXfc9EUVFURT/9E//VFxxxRVFeXl5MX/+/OLf//3fB/7aLbfcUixbtmzQ/O9///vF1VdfXZSXlxcf+chHii1btozxjhmvSjlr73//+4uIOOPR0tIy9htn3Cn1z7X/SRRRilLP2iuvvFLU1dUVFRUVxZVXXll87WtfK06fPj3Gu2Y8KuWsnTp1qvjyl79cXHXVVUVlZWVRW1tb3HPPPcV//dd/jf3GGTdefvnlIf/b6+2ztWzZsuKWW245Y82cOXOK8vLy4sorryz++Z//ueTrTigK9y8BAIC8zvvvFAEAAJxPoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAILX/D2/UBUbvbAtsAAAAAElFTkSuQmCC\n", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAA0UAAAw5CAYAAAA+L+rmAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8g+/7EAAAACXBIWXMAAA9hAAAPYQGoP6dpAACZhElEQVR4nOzdf2zW5b3w8U8LttXMVh2H8mN1THec21RgIF11xnjS2WSGHf44GcMFCPHHcXKM2uxM8Aedc6OeTQ3JEUdk7rjkiQc2M32WQfC4TrLs2BMi2ERzQOPQQcxa5OzYsrq10n6fP5Z1T0dR7tIW4fN6JfcfXLuu+3vdyyXuve/9o6woiiIAAACSKj/RGwAAADiRRBEAAJCaKAIAAFITRQAAQGqiCAAASE0UAQAAqYkiAAAgNVEEAACkJooAAIDURBEAAJBayVH0y1/+MhYuXBgzZsyIsrKyePrpp993zfbt2+Mzn/lMVFZWxsc//vF4/PHHR7FVAACAsVdyFPX29sbs2bNj/fr1xzT/9ddfj2uuuSauuuqq6OjoiNtuuy2uv/76eOaZZ0reLAAAwFgrK4qiGPXisrJ46qmnYtGiRUedc8cdd8SWLVvi5ZdfHhr78pe/HG+//XZs27ZttJcGAAAYE5PH+wLt7e3R2Ng4bKypqSluu+22o67p6+uLvr6+oT8PDg7G7373u/jwhz8cZWVl47VVAADgA64oijh06FDMmDEjysvH5isSxj2KOjs7o7a2dthYbW1t9PT0xB/+8Ic4/fTTj1jT2toa995773hvDQAAOEnt378/PvKRj4zJc417FI3G6tWro7m5eejP3d3dce6558b+/fujurr6BO4MAAA4kXp6eqKuri7OPPPMMXvOcY+iadOmRVdX17Cxrq6uqK6uHvEuUUREZWVlVFZWHjFeXV0tigAAgDH9WM24/05RQ0NDtLW1DRt79tlno6GhYbwvDQAA8L5KjqLf//730dHRER0dHRHxp6/c7ujoiH379kXEn976tmzZsqH5N910U+zduze+/vWvx549e+KRRx6JH/3oR3H77bePzSsAAAA4DiVH0QsvvBBz586NuXPnRkREc3NzzJ07N9asWRMREb/97W+HAiki4mMf+1hs2bIlnn322Zg9e3Y8+OCD8f3vfz+amprG6CUAAACM3nH9TtFE6enpiZqamuju7vaZIgAASGw82mDcP1MEAADwQSaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQ2qiiaP369TFr1qyoqqqK+vr62LFjx3vOX7duXXziE5+I008/Perq6uL222+PP/7xj6PaMAAAwFgqOYo2b94czc3N0dLSErt27YrZs2dHU1NTHDhwYMT5TzzxRKxatSpaWlpi9+7d8dhjj8XmzZvjzjvvPO7NAwAAHK+So+ihhx6KG264IVasWBGf+tSnYsOGDXHGGWfED37wgxHnP//883H55ZfHtddeG7NmzYqrr746lixZ8r53lwAAACZCSVHU398fO3fujMbGxr88QXl5NDY2Rnt7+4hrLrvssti5c+dQBO3duze2bt0aX/jCF456nb6+vujp6Rn2AAAAGA+TS5l88ODBGBgYiNra2mHjtbW1sWfPnhHXXHvttXHw4MH43Oc+F0VRxOHDh+Omm256z7fPtba2xr333lvK1gAAAEZl3L99bvv27bF27dp45JFHYteuXfGTn/wktmzZEvfdd99R16xevTq6u7uHHvv37x/vbQIAAEmVdKdoypQpMWnSpOjq6ho23tXVFdOmTRtxzT333BNLly6N66+/PiIiLr744ujt7Y0bb7wx7rrrrigvP7LLKisro7KyspStAQAAjEpJd4oqKipi3rx50dbWNjQ2ODgYbW1t0dDQMOKad95554jwmTRpUkREFEVR6n4BAADGVEl3iiIimpubY/ny5TF//vxYsGBBrFu3Lnp7e2PFihUREbFs2bKYOXNmtLa2RkTEwoUL46GHHoq5c+dGfX19vPbaa3HPPffEwoULh+IIAADgRCk5ihYvXhxvvfVWrFmzJjo7O2POnDmxbdu2oS9f2Ldv37A7Q3fffXeUlZXF3XffHW+++Wb8zd/8TSxcuDC+/e1vj92rAAAAGKWy4iR4D1tPT0/U1NREd3d3VFdXn+jtAAAAJ8h4tMG4f/scAADAB5koAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqOKovXr18esWbOiqqoq6uvrY8eOHe85/+23346VK1fG9OnTo7KyMi644ILYunXrqDYMAAAwliaXumDz5s3R3NwcGzZsiPr6+li3bl00NTXFK6+8ElOnTj1ifn9/f3z+85+PqVOnxpNPPhkzZ86M3/zmN3HWWWeNxf4BAACOS1lRFEUpC+rr6+PSSy+Nhx9+OCIiBgcHo66uLm655ZZYtWrVEfM3bNgQ3/3ud2PPnj1x2mmnjWqTPT09UVNTE93d3VFdXT2q5wAAAE5+49EGJb19rr+/P3bu3BmNjY1/eYLy8mhsbIz29vYR1/z0pz+NhoaGWLlyZdTW1sZFF10Ua9eujYGBgaNep6+vL3p6eoY9AAAAxkNJUXTw4MEYGBiI2traYeO1tbXR2dk54pq9e/fGk08+GQMDA7F169a455574sEHH4xvfetbR71Oa2tr1NTUDD3q6upK2SYAAMAxG/dvnxscHIypU6fGo48+GvPmzYvFixfHXXfdFRs2bDjqmtWrV0d3d/fQY//+/eO9TQAAIKmSvmhhypQpMWnSpOjq6ho23tXVFdOmTRtxzfTp0+O0006LSZMmDY198pOfjM7Ozujv74+Kiooj1lRWVkZlZWUpWwMAABiVku4UVVRUxLx586KtrW1obHBwMNra2qKhoWHENZdffnm89tprMTg4ODT26quvxvTp00cMIgAAgIlU8tvnmpubY+PGjfHDH/4wdu/eHV/96lejt7c3VqxYERERy5Yti9WrVw/N/+pXvxq/+93v4tZbb41XX301tmzZEmvXro2VK1eO3asAAAAYpZJ/p2jx4sXx1ltvxZo1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OSeT3t7emD17dqxfv/6Y5r/++utxzTXXxFVXXRUdHR1x2223xfXXXx/PPPNMaRcuPgAWLFhQrFy5cujPAwMDxYwZM4rW1tYR53/pS18qrrnmmmFj9fX1xT/+4z+O6z45+ZV61v7a4cOHizPPPLP44Q9/OF5b5BQxmrN2+PDh4rLLLiu+//3vF8uXLy/+/u//fgJ2ysmu1LP2ve99rzjvvPOK/v7+idoip4hSz9rKlSuLv/u7vxs21tzcXFx++eXjuk9OHRFRPPXUU+855+tf/3rx6U9/etjY4sWLi6amppKudcLvFPX398fOnTujsbFxaKy8vDwaGxujvb19xDXt7e3D5kdENDU1HXU+RIzurP21d955J959990455xzxmubnAJGe9a++c1vxtSpU+O6666biG1yChjNWfvpT38aDQ0NsXLlyqitrY2LLroo1q5dGwMDAxO1bU5Cozlrl112WezcuXPoLXZ79+6NrVu3xhe+8IUJ2TM5jFUXTB7LTY3GwYMHY2BgIGpra4eN19bWxp49e0Zc09nZOeL8zs7OcdsnJ7/RnLW/dscdd8SMGTOO+IcP/n+jOWu/+tWv4rHHHouOjo4J2CGnitGctb1798YvfvGL+MpXvhJbt26N1157LW6++eZ49913o6WlZSK2zUloNGft2muvjYMHD8bnPve5KIoiDh8+HDfddJO3zzGmjtYFPT098Yc//CFOP/30Y3qeE36nCE4W999/f2zatCmeeuqpqKqqOtHb4RRy6NChWLp0aWzcuDGmTJlyorfDKW5wcDCmTp0ajz76aMybNy8WL14cd911V2zYsOFEb41TzPbt22Pt2rXxyCOPxK5du+InP/lJbNmyJe67774TvTU4wgm/UzRlypSYNGlSdHV1DRvv6uqKadOmjbhm2rRpJc2HiNGdtT974IEH4v7774+f//zncckll4znNjkFlHrWfv3rX8cbb7wRCxcuHBobHByMiIjJkyfHK6+8Eueff/74bpqT0mj+Xps+fXqcdtppMWnSpKGxT37yk9HZ2Rn9/f1RUVExrnvm5DSas3bPPffE0qVL4/rrr4+IiIsvvjh6e3vjxhtvjLvuuivKy/1/8xy/o3VBdXX1Md8livgA3CmqqKiIefPmRVtb29DY4OBgtLW1RUNDw4hrGhoahs2PiHj22WePOh8iRnfWIiK+853vxH333Rfbtm2L+fPnT8RWOcmVetYuvPDCeOmll6Kjo2Po8cUvfnHom3Tq6uomcvucREbz99rll18er7322lB4R0S8+uqrMX36dEHEUY3mrL3zzjtHhM+fY/xPn6GH4zdmXVDad0CMj02bNhWVlZXF448/Xvz3f/93ceONNxZnnXVW0dnZWRRFUSxdurRYtWrV0Pz//M//LCZPnlw88MADxe7du4uWlpbitNNOK1566aUT9RI4SZR61u6///6ioqKiePLJJ4vf/va3Q49Dhw6dqJfASaLUs/bXfPscx6rUs7Zv377izDPPLP7pn/6peOWVV4qf/exnxdSpU4tvfetbJ+olcJIo9ay1tLQUZ555ZvHv//7vxd69e4v/+I//KM4///ziS1/60ol6CZwEDh06VLz44ovFiy++WERE8dBDDxUvvvhi8Zvf/KYoiqJYtWpVsXTp0qH5e/fuLc4444zin//5n4vdu3cX69evLyZNmlRs27atpOt+IKKoKIriX//1X4tzzz23qKioKBYsWFD813/919B/duWVVxbLly8fNv9HP/pRccEFFxQVFRXFpz/96WLLli0TvGNOVqWctY9+9KNFRBzxaGlpmfiNc9Ip9e+1/58oohSlnrXnn3++qK+vLyorK4vzzjuv+Pa3v10cPnx4gnfNyaiUs/buu+8W3/jGN4rzzz+/qKqqKurq6oqbb765+N///d+J3zgnjeeee27E/+3157O1fPny4sorrzxizZw5c4qKiorivPPOK/7t3/6t5OuWFYX7lwAAQF4n/DNFAAAAJ5IoAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaiVH0S9/+ctYuHBhzJgxI8rKyuLpp59+3zXbt2+Pz3zmM1FZWRkf//jH4/HHHx/FVgEAAMZeyVHU29sbs2fPjvXr1x/T/Ndffz2uueaauOqqq6KjoyNuu+22uP766+OZZ54pebMAAABjrawoimLUi8vK4qmnnopFixYddc4dd9wRW7ZsiZdffnlo7Mtf/nK8/fbbsW3bttFeGgAAYEyM+2eK2tvbo7GxcdhYU1NTtLe3j/elAQAA3tfk8b5AZ2dn1NbWDhurra2Nnp6e+MMf/hCnn376EWv6+vqir69v6M+Dg4Pxu9/9Lj784Q9HWVnZeG8ZAAD4gCqKIg4dOhQzZsyI8vKxuccz7lE0Gq2trXHvvfee6G0AAAAfUPv374+PfOQjY/Jc4x5F06ZNi66urmFjXV1dUV1dPeJdooiI1atXR3Nz89Cfu7u749xzz439+/dHdXX1uO4XAAD44Orp6Ym6uro488wzx+w5xz2KGhoaYuvWrcPGnn322WhoaDjqmsrKyqisrDxivLq6WhQBAABj+rGakt+E9/vf/z46Ojqio6MjIv70ldsdHR2xb9++iPjTXZ5ly5YNzb/pppti79698fWvfz327NkTjzzySPzoRz+K22+/fWxeAQAAwHEoOYpeeOGFmDt3bsydOzciIpqbm2Pu3LmxZs2aiIj47W9/OxRIEREf+9jHYsuWLfHss8/G7Nmz48EHH4zvf//70dTUNEYvAQAAYPSO63eKJkpPT0/U1NREd3e3t88BAEBi49EG4/47RQAAAB9koggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmNKorWr18fs2bNiqqqqqivr48dO3a85/x169bFJz7xiTj99NOjrq4ubr/99vjjH/84qg0DAACMpZKjaPPmzdHc3BwtLS2xa9eumD17djQ1NcWBAwdGnP/EE0/EqlWroqWlJXbv3h2PPfZYbN68Oe68887j3jwAAMDxKjmKHnroobjhhhtixYoV8alPfSo2bNgQZ5xxRvzgBz8Ycf7zzz8fl19+eVx77bUxa9asuPrqq2PJkiXve3cJAABgIpQURf39/bFz585obGz8yxOUl0djY2O0t7ePuOayyy6LnTt3DkXQ3r17Y+vWrfGFL3zhOLYNAAAwNiaXMvngwYMxMDAQtbW1w8Zra2tjz549I6659tpr4+DBg/G5z30uiqKIw4cPx0033fSeb5/r6+uLvr6+oT/39PSUsk0AAIBjNu7fPrd9+/ZYu3ZtPPLII7Fr1674yU9+Elu2bIn77rvvqGtaW1ujpqZm6FFXVzfe2wQAAJIqK4qiONbJ/f39ccYZZ8STTz4ZixYtGhpfvnx5vP322/F//+//PWLNFVdcEZ/97Gfju9/97tDY//k//yduvPHG+P3vfx/l5Ud22Uh3iurq6qK7uzuqq6uPdbsAAMAppqenJ2pqasa0DUq6U1RRURHz5s2Ltra2obHBwcFoa2uLhoaGEde88847R4TPpEmTIiLiaD1WWVkZ1dXVwx4AAADjoaTPFEVENDc3x/Lly2P+/PmxYMGCWLduXfT29saKFSsiImLZsmUxc+bMaG1tjYiIhQsXxkMPPRRz586N+vr6eO211+Kee+6JhQsXDsURAADAiVJyFC1evDjeeuutWLNmTXR2dsacOXNi27ZtQ1++sG/fvmF3hu6+++4oKyuLu+++O9588834m7/5m1i4cGF8+9vfHrtXAQAAMEolfaboRBmP9w0CAAAnnxP+mSIAAIBTjSgCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqo4qi9evXx6xZs6Kqqirq6+tjx44d7zn/7bffjpUrV8b06dOjsrIyLrjggti6deuoNgwAADCWJpe6YPPmzdHc3BwbNmyI+vr6WLduXTQ1NcUrr7wSU6dOPWJ+f39/fP7zn4+pU6fGk08+GTNnzozf/OY3cdZZZ43F/gEAAI5LWVEURSkL6uvr49JLL42HH344IiIGBwejrq4ubrnllli1atUR8zds2BDf/e53Y8+ePXHaaaeNapM9PT1RU1MT3d3dUV1dParnAAAATn7j0QYlvX2uv78/du7cGY2NjX95gvLyaGxsjPb29hHX/PSnP42GhoZYuXJl1NbWxkUXXRRr166NgYGB49s5AADAGCjp7XMHDx6MgYGBqK2tHTZeW1sbe/bsGXHN3r174xe/+EV85Stfia1bt8Zrr70WN998c7z77rvR0tIy4pq+vr7o6+sb+nNPT08p2wQAADhm4/7tc4ODgzF16tR49NFHY968ebF48eK46667YsOGDUdd09raGjU1NUOPurq68d4mAACQVElRNGXKlJg0aVJ0dXUNG+/q6opp06aNuGb69OlxwQUXxKRJk4bGPvnJT0ZnZ2f09/ePuGb16tXR3d099Ni/f38p2wQAADhmJUVRRUVFzJs3L9ra2obGBgcHo62tLRoaGkZcc/nll8drr70Wg4ODQ2OvvvpqTJ8+PSoqKkZcU1lZGdXV1cMeAAAA46Hkt881NzfHxo0b44c//GHs3r07vvrVr0Zvb2+sWLEiIiKWLVsWq1evHpr/1a9+NX73u9/FrbfeGq+++mps2bIl1q5dGytXrhy7VwEAADBKJf9O0eLFi+Ott96KNWvWRGdnZ8yZMye2bds29OUL+/bti/Lyv7RWXV1dPPPMM3H77bfHJZdcEjNnzoxbb7017rjjjrF7FQAAAKNU8u8UnQh+pwgAAIj4APxOEQAAwKlGFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAILVRRdH69etj1qxZUVVVFfX19bFjx45jWrdp06YoKyuLRYsWjeayAAAAY67kKNq8eXM0NzdHS0tL7Nq1K2bPnh1NTU1x4MCB91z3xhtvxNe+9rW44oorRr1ZAACAsVZyFD300ENxww03xIoVK+JTn/pUbNiwIc4444z4wQ9+cNQ1AwMD8ZWvfCXuvffeOO+8845rwwAAAGOppCjq7++PnTt3RmNj41+eoLw8Ghsbo729/ajrvvnNb8bUqVPjuuuuO6br9PX1RU9Pz7AHAADAeCgpig4ePBgDAwNRW1s7bLy2tjY6OztHXPOrX/0qHnvssdi4ceMxX6e1tTVqamqGHnV1daVsEwAA4JiN67fPHTp0KJYuXRobN26MKVOmHPO61atXR3d399Bj//7947hLAAAgs8mlTJ4yZUpMmjQpurq6ho13dXXFtGnTjpj/61//Ot54441YuHDh0Njg4OCfLjx5crzyyitx/vnnH7GusrIyKisrS9kaAADAqJR0p6iioiLmzZsXbW1tQ2ODg4PR1tYWDQ0NR8y/8MIL46WXXoqOjo6hxxe/+MW46qqroqOjw9viAACAE66kO0UREc3NzbF8+fKYP39+LFiwINatWxe9vb2xYsWKiIhYtmxZzJw5M1pbW6OqqiouuuiiYevPOuusiIgjxgEAAE6EkqNo8eLF8dZbb8WaNWuis7Mz5syZE9u2bRv68oV9+/ZFefm4flQJAABgzJQVRVGc6E28n56enqipqYnu7u6orq4+0dsBAABOkPFoA7d0AACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSG1UUrV+/PmbNmhVVVVVRX18fO3bsOOrcjRs3xhVXXBFnn312nH322dHY2Pie8wEAACZSyVG0efPmaG5ujpaWlti1a1fMnj07mpqa4sCBAyPO3759eyxZsiSee+65aG9vj7q6urj66qvjzTffPO7NAwAAHK+yoiiKUhbU19fHpZdeGg8//HBERAwODkZdXV3ccsstsWrVqvddPzAwEGeffXY8/PDDsWzZsmO6Zk9PT9TU1ER3d3dUV1eXsl0AAOAUMh5tUNKdov7+/ti5c2c0Njb+5QnKy6OxsTHa29uP6TneeeedePfdd+Occ8456py+vr7o6ekZ9gAAABgPJUXRwYMHY2BgIGpra4eN19bWRmdn5zE9xx133BEzZswYFlZ/rbW1NWpqaoYedXV1pWwTAADgmE3ot8/df//9sWnTpnjqqaeiqqrqqPNWr14d3d3dQ4/9+/dP4C4BAIBMJpcyecqUKTFp0qTo6uoaNt7V1RXTpk17z7UPPPBA3H///fHzn/88LrnkkvecW1lZGZWVlaVsDQAAYFRKulNUUVER8+bNi7a2tqGxwcHBaGtri4aGhqOu+853vhP33XdfbNu2LebPnz/63QIAAIyxku4URUQ0NzfH8uXLY/78+bFgwYJYt25d9Pb2xooVKyIiYtmyZTFz5sxobW2NiIh/+Zd/iTVr1sQTTzwRs2bNGvrs0Yc+9KH40Ic+NIYvBQAAoHQlR9HixYvjrbfeijVr1kRnZ2fMmTMntm3bNvTlC/v27Yvy8r/cgPre974X/f398Q//8A/DnqelpSW+8Y1vHN/uAQAAjlPJv1N0IvidIgAAIOID8DtFAAAApxpRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EYVRevXr49Zs2ZFVVVV1NfXx44dO95z/o9//OO48MILo6qqKi6++OLYunXrqDYLAAAw1kqOos2bN0dzc3O0tLTErl27Yvbs2dHU1BQHDhwYcf7zzz8fS5Ysieuuuy5efPHFWLRoUSxatChefvnl4948AADA8SoriqIoZUF9fX1ceuml8fDDD0dExODgYNTV1cUtt9wSq1atOmL+4sWLo7e3N372s58NjX32s5+NOXPmxIYNG47pmj09PVFTUxPd3d1RXV1dynYBAIBTyHi0weRSJvf398fOnTtj9erVQ2Pl5eXR2NgY7e3tI65pb2+P5ubmYWNNTU3x9NNP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NVEEAACkJooAAIDURBEAAJCaKAIAAFITRQAAQGqiCAAASE0UAQAAqYkiAAAgNVEEAACkJooAAIDURBEAAJCaKAIAAFITRQAAQGqiCAAASE0UAQAAqYkiAAAgNVEEAACkJooAAIDURBEAAJCaKAIAAFITRQAAQGqiCAAASE0UAQAAqYkiAAAgNVEEAACkJooAAIDURBEAAJCaKAIAAFITRQAAQGqiCAAASE0UAQAAqYkiAAAgNVEEAACkJooAAIDURBEAAJCaKAIAAFITRQAAQGqiCAAASE0UAQAAqYkiAAAgNVEEAACkJooAAIDURBEAAJCaKAIAAFITRQAAQGqiCAAASE0UAQAAqYkiAAAgNVEEAACkJooAAIDURBEAAJBayVH0y1/+MhYuXBgzZsyIsrKyePrpp993zfbt2+Mzn/lMVFZWxsc//vF4/PHHR7FVAACAsVdyFPX29sbs2bNj/fr1xzT/9ddfj2uuuSauuuqq6OjoiNtuuy2uv/76eOaZZ0reLAAAwFgrK4qiGPXisrJ46qmnYtGiRUedc8cdd8SWLVvi5ZdfHhr78pe/HG+//XZs27ZttJcGAAAYE5PH+wLt7e3R2Ng4bKypqSluu+22o67p6+uLvr6+oT8PDg7G7373u/jwhz8cZWVl47VVAADgA64oijh06FDMmDEjysvH5isSxj2KOjs7o7a2dthYbW1t9PT0xB/+8Ic4/fTTj1jT2toa995773hvDQAAOEnt378/PvKRj4zJc417FI3G6tWro7m5eejP3d3dce6558b+/fujurr6BO4MAAA4kXp6eqKuri7OPPPMMXvOcY+iadOmRVdX17Cxrq6uqK6uHvEuUUREZWVlVFZWHjFeXV0tigAAgDH9WM24/05RQ0NDtLW1DRt79tlno6GhYbwvDQAA8L5KjqLf//730dHRER0dHRHxp6/c7ujoiH379kXEn976tmzZsqH5N910U+zduze+/vWvx549e+KRRx6JH/3oR3H77bePzSsAAAA4DiVH0QsvvBBz586NuXPnRkREc3NzzJ07N9asWRMREb/97W+HAiki4mMf+1hs2bIlnn322Zg9e3Y8+OCD8f3vfz+amprG6CUAAACM3nH9TtFE6enpiZqamuju7vaZIgAASGw82mDcP1MEAADwQSaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQ2qiiaP369TFr1qyoqqqK+vr62LFjx3vOX7duXXziE5+I008/Perq6uL222+PP/7xj6PaMAAAwFgqOYo2b94czc3N0dLSErt27YrZs2dHU1NTHDhwYMT5TzzxRKxatSpaWlpi9+7d8dhjj8XmzZvjzjvvPO7NAwAAHK+So+ihhx6KG264IVasWBGf+tSnYsOGDXHGGWfED37wgxHnP//883H55ZfHtddeG7NmzYqrr746lixZ8r53lwAAACZCSVHU398fO3fujMbGxr88QXl5NDY2Rnt7+4hrLrvssti5c+dQBO3duze2bt0aX/jCF456nb6+vujp6Rn2AAAAGA+TS5l88ODBGBgYiNra2mHjtbW1sWfPnhHXXHvttXHw4MH43Oc+F0VRxOHDh+Omm256z7fPtba2xr333lvK1gAAAEZl3L99bvv27bF27dp45JFHYteuXfGTn/wktmzZEvfdd99R16xevTq6u7uHHvv37x/vbQIAAEmVdKdoypQpMWnSpOjq6ho23tXVFdOmTRtxzT333BNLly6N66+/PiIiLr744ujt7Y0bb7wx7rrrrigvP7LLKisro7KyspStAQAAjEpJd4oqKv5fe/cfW3V9L378BcW2mtmKXy7lx7eOq7vObSo4kK46YrzpbDLDLn/crF9mgBCdd5NrnM3uBH/QOTfK3ZwhubIRmbsu+cYLm5l+l0HqdZ1k2bU3ZPxINBcwjDGIWQvcXVsubhTaz/ePxe52FMepbbG8Ho/k/NG37/f5vI95iz79nJ5THnPnzo329vaBsf7+/mhvb4/6+voh17z11ltnhE9ZWVlERBRFUep+AQAARlRJd4oiIpqbm2PZsmUxb968mD9/fqxbty5OnDgRy5cvj4iIpUuXxsyZM6O1tTUiIhYuXBhPPPFE3HDDDVFXVxf79++PRx55JBYuXDgQRwAAAOdLyVHU1NQUR48ejdWrV0dnZ2fMmTMn2traBj584dChQ4PuDD388MMxYcKEePjhh+ONN96Iv/iLv4iFCxfG1772tZF7FQAAAMM0oRgH72Hr6emJ6urq6O7ujqqqqvO9HQAA4DwZjTYY9U+fAwAAeC8TRQAAQGqiCAAASE0UAQAAqYkiAAAgNVEEAACkJooAAIDURBEAAJCaKAIAAFITRQAAQGqiCAAASE0UAQAAqYkiAAAgNVEEAACkJooAAIDURBEAAJCaKAIAAFITRQAAQGqiCAAASE0UAQAAqYkiAAAgNVEEAACkJooAAIDURBEAAJCaKAIAAFITRQAAQGqiCAAASE0UAQAAqYkiAAAgNVEEAACkJooAAIDURBEAAJCaKAIAAFITRQAAQGqiCAAASE0UAQAAqYkiAAAgNVEEAACkJooAAIDURBEAAJCaKAIAAFITRQAAQGqiCAAASE0UAQAAqYkiAAAgNVEEAACkJooAAIDURBEAAJCaKAIAAFITRQAAQGqiCAAASE0UAQAAqYkiAAAgNVEEAACkJooAAIDURBEAAJCaKAIAAFITRQAAQGqiCAAASE0UAQAAqYkiAAAgNVEEAACkJooAAIDURBEAAJCaKAIAAFITRQAAQGqiCAAASE0UAQAAqYkiAAAgNVEEAACkJooAAIDURBEAAJCaKAIAAFITRQAAQGqiCAAASE0UAQAAqYkiAAAgNVEEAACkJooAAIDURBEAAJCaKAIAAFITRQAAQGqiCAAASE0UAQAAqYkiAAAgNVEEAACkJooAAIDURBEAAJCaKAIAAFITRQAAQGqiCAAASE0UAQAAqYkiAAAgNVEEAACkJooAAIDURBEAAJCaKAIAAFITRQAAQGqiCAAASE0UAQAAqYkiAAAgNVEEAACkJooAAIDURBEAAJCaKAIAAFITRQAAQGqiCAAASE0UAQAAqYkiAAAgNVEEAACkJooAAIDURBEAAJCaKAIAAFITRQAAQGqiCAAASE0UAQAAqYkiAAAgNVEEAACkJooAAIDURBEAAJCaKAIAAFITRQAAQGqiCAAASG1YUbR+/fqYNWtWVFZWRl1dXWzfvv0d57/55puxYsWKmD59elRUVMTVV18dW7duHdaGAQAARtKkUhds3rw5mpubY8OGDVFXVxfr1q2LxsbG2LdvX0ydOvWM+b29vfGJT3wipk6dGs8991zMnDkzfv3rX8dll102EvsHAAB4VyYURVGUsqCuri5uvPHGePLJJyMior+/P2pra+Pee++NlStXnjF/w4YN8Y1vfCP27t0bF1100bA22dPTE9XV1dHd3R1VVVXDeg4AAGD8G402KOntc729vbFjx45oaGj44xNMnBgNDQ3R0dEx5Jof/ehHUV9fHytWrIiampq49tprY82aNdHX13fW65w8eTJ6enoGPQAAAEZDSVF07Nix6Ovri5qamkHjNTU10dnZOeSaAwcOxHPPPRd9fX2xdevWeOSRR+Kb3/xmfPWrXz3rdVpbW6O6unrgUVtbW8o2AQAAztmof/pcf39/TJ06NZ566qmYO3duNDU1xUMPPRQbNmw465pVq1ZFd3f3wOPw4cOjvU0AACCpkj5oYcqUKVFWVhZdXV2Dxru6umLatGlDrpk+fXpcdNFFUVZWNjD2oQ99KDo7O6O3tzfKy8vPWFNRUREVFRWlbA0AAGBYSrpTVF5eHnPnzo329vaBsf7+/mhvb4/6+voh19x8882xf//+6O/vHxh7/fXXY/r06UMGEQAAwFgq+e1zzc3NsXHjxvje974Xe/bsic9//vNx4sSJWL58eURELF26NFatWjUw//Of/3z89re/jfvuuy9ef/312LJlS6xZsyZWrFgxcq8CAABgmEr+nqKmpqY4evRorF69Ojo7O2POnDnR1tY28OELhw4diokT/9hatbW18eKLL8b9998f119/fcycOTPuu+++eOCBB0buVQAAAAxTyd9TdD74niIAACDiPfA9RQAAABcaUQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNSGFUXr16+PWbNmRWVlZdTV1cX27dvPad2mTZtiwoQJsWjRouFcFgAAYMSV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Dh48GF/84hdjwYIFY7RTxrtSz1pvb2984hOfiIMHD8Zzzz0X+/bti40bN8bMmTPHeOeMN6WetWeffTZWrlwZLS0tsWfPnnj66adj8+bN8eCDD47xzhlPTpw4EbNnz47169ef0/xf/epXcfvtt8ett94au3fvji984Qtx1113xYsvvljahYv3gPnz5xcrVqwY+Lmvr6+YMWNG0draOuT8T3/608Xtt98+aKyurq74u7/7u1HdJ+NfqWftT50+fbq49NJLi+9973ujtUUuEMM5a6dPny5uuumm4jvf+U6xbNmy4m/+5m/GYKeMd6WetW9/+9vFlVdeWfT29o7VFrlAlHrWVqxYUfz1X//1oLHm5ubi5ptvHtV9cuGIiOL5559/xzlf+tKXio985CODxpqamorGxsaSrnXe7xT19vbGjh07oqGhYWBs4sSJ0dDQEB0dHUOu6ejoGDQ/IqKxsfGs8yFieGftT7311ltx6tSpuPzyy0drm1wAhnvWvvKVr8TUqVPjzjvvHIttcgEYzln70Y9+FPX19bFixYqoqamJa6+9NtasWRN9fX1jtW3GoeGctZtuuil27Ngx8Ba7AwcOxNatW+OTn/zkmOyZHEaqCyaN5KaG49ixY9HX1xc1NTWDxmtqamLv3r1Druns7Bxyfmdn56jtk/FvOGftTz3wwAMxY8aMM/7hg/9pOGft5z//eTz99NOxe/fuMdghF4rhnLUDBw7ET3/607jjjjti69atsX///rjnnnvi1KlT0dLSMhbbZhwazln7zGc+E8eOHYuPf/zjURRFnD59Oj73uc95+xwj6mxd0NPTE7/73e/i4osvPqfnOe93imC8WLt2bWzatCmef/75qKysPN/b4QJy/PjxWLJkSWzcuDGmTJlyvrfDBa6/vz+mTp0aTz31VMydOzeamprioYceig0bNpzvrXGB2bZtW6xZsya+9a1vxc6dO+OHP/xhbNmyJR577LHzvTU4w3m/UzRlypQoKyuLrq6uQeNdXV0xbdq0IddMmzatpPkQMbyz9rbHH3881q5dGz/5yU/i+uuvH81tcgEo9az98pe/jIMHD8bChQsHxvr7+yMiYtKkSbFv37646qqrRnfTjEvD+XNt+vTpcdFFF0VZWdnA2Ic+9KHo7OyM3t7eKC8vH9U9Mz4N56w98sgjsWTJkrjrrrsiIuK6666LEydOxN133x0PPfRQTJzo/83z7p2tC6qqqs75LlHEe+BOUXl5ecydOzfa29sHxvr7+6O9vT3q6+uHXFNfXz9ofkTESy+9dNb5EDG8sxYR8fWvfz0ee+yxaGtri3nz5o3FVhnnSj1r11xzTbz66quxe/fugcenPvWpgU/Sqa2tHcvtM44M58+1m2++Ofbv3z8Q3hERr7/+ekyfPl0QcVbDOWtvvfXWGeHzdoz/4Xfo4d0bsS4o7TMgRsemTZuKioqK4plnnin+4z/+o7j77ruLyy67rOjs7CyKoiiWLFlSrFy5cmD+v/3bvxWTJk0qHn/88WLPnj1FS0tLcdFFFxWvvvrq+XoJjBOlnrW1a9cW5eXlxXPPPVf85je/GXgcP378fL0ExolSz9qf8ulznKtSz9qhQ4eKSy+9tPj7v//7Yt++fcWPf/zjYurUqcVXv/rV8/USGCdKPWstLS3FpZdeWvzLv/xLceDAgeJf//Vfi6uuuqr49Kc/fb5eAuPA8ePHi127dhW7du0qIqJ44oknil27dhW//vWvi6IoipUrVxZLliwZmH/gwIHikksuKf7hH/6h2LNnT7F+/fqirKysaGtrK+m674koKoqi+Kd/+qfiiiuuKMrLy4v58+cX//7v/z7w12655ZZi2bJlg+Z///vfL66++uqivLy8+MhHPlJs2bJljHfMeFXKWXv/+99fRMQZj5aWlrHfOONOqX+u/U+iiFKUetZeeeWVoq6urqioqCiuvPLK4mtf+1px+vTpMd4141EpZ+3UqVPFl7/85eKqq64qKisri9ra2uKee+4p/uu//mvsN8648fLLLw/5315vn61ly5YVt9xyyxlr5syZU5SXlxdXXnll8c///M8lX3dCUbh/CQAA5HXef6cIAADgfBJFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABIreQo+tnPfhYLFy6MGTNmxIQJE+KFF174s2u2bdsWH/3oR6OioiI+8IEPxDPPPDOMrQIAAIy8kqPoxIkTMXv27Fi/fv05zf/Vr34Vt99+e9x6662xe/fu+MIXvhB33XVXvPjiiyVvFgAAYKRNKIqiGPbiCRPi+eefj0WLFp11zgMPPBBbtmyJ1157bWDs//yf/xNvvvlmtLW1DffSAAAAI2LUf6eoo6MjGhoaBo01NjZGR0fHaF8aAADgz5o02hfo7OyMmpqaQWM1NTXR09MTv/vd7+Liiy8+Y83Jkyfj5MmTAz/39/fHb3/72/hf/+t/xYQJE0Z7ywAAwHtUURRx/PjxmDFjRkycODL3eEY9ioajtbU1Hn300fO9DQAA4D3q8OHD8b//9/8ekeca9SiaNm1adHV1DRrr6uqKqqqqIe8SRUSsWrUqmpubB37u7u6OK664Ig4fPhxVVVWjul8AAOC9q6enJ2pra+PSSy8dsecc9Siqr6+PrVu3Dhp76aWXor6+/qxrKioqoqKi4ozxqqoqUQQAAIzor9WU/Ca8//7v/47du3fH7t27I+IPH7m9e/fuOHToUET84S7P0qVLB+Z/7nOfiwMHDsSXvvSl2Lt3b3zrW9+K73//+3H//fePzCsAAAB4F0qOol/84hdxww03xA033BAREc3NzXHDDTfE6tWrIyLiN7/5zUAgRUT85V/+ZWzZsiVeeumlmD17dnzzm9+M73znO9HY2DhCLwEAAGD43tX3FI2Vnp6eqK6uju7ubm+fAwCAxEajDUb9e4oAAADey0QRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSG1YUrV+/PmbNmhWVlZVRV1cX27dvf8f569atiw9+8INx8cUXR21tbdx///3x+9//flgbBgAAGEklR9HmzZujubk5WlpaYufOnTF79uxobGyMI0eODDn/2WefjZUrV0ZLS0vs2bMnnn766di8eXM8+OCD73rzAAAA71bJUfTEE0/EZz/72Vi+fHl8+MMfjg0bNsQl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92LPnj3x+c9/Pk6cOBHLly+PiIilS5fGqlWrBuZ//vOfj9/+9rdx3333xeuvvx5btmyJNWvWxIoVK0buVQAAAAxTyd9T1NTUFEePHo3Vq1dHZ2dnzJkzJ9ra2gY+fOHQoUMxceIfW6u2tjZefPHFuP/+++P666+PmTNnxn333RcPPPDAyL0KAACAYSr5e4rOB99TBAAARLwHvqcIAADgQiOKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQ2rCiaP369TFr1qyorKyMurq62L59+zmt27RpU0yYMCEWLVo0nMsCAACMuJKjaPPmzdHc3BwtLS2xc+fOmD17djQ2NsaRI0fecd3Bgwfji1/8YixYsGDYmwUAABhpJUfRE088EZ/97Gdj+fLl8eEPfzg2bNgQl1xySXz3u98965q+vr6444474tFHH40rr7zyXW0YAABgJJUURb29vbFjx45oaGj44xNMnBgNDQ3R0dFx1nVf+cpXYurUqXHnnXee03VOnjwZPT09gx4AAACjoaQoOnbsWPT19UVNTc2g8Zqamujs7Bxyzc9//vN4+umnY+PGjed8ndbW1qiurh541NbWlrJNAACAczaqnz53/PjxWLJkSWzcuDGmTJlyzutWrVoV3d3dA4/Dhw+P4i4BAIDMJpUyecqUKVFWVhZdXV2Dxru6umLatGlnzP/lL38ZBw8ejIULFw6M9ff3/+HCkybFvn374qqrrjpjXUVFRVRUVJSyNQAAgGEp6U5ReXl5zJ07N9rb2wfG+vv7o729Perr68+Yf80118Srr74au3fvHnh86lOfiltvvTV2797tbXEAAMB5V9KdooiI5ubmWLZsWcybNy/mz58f69atixMnTsTy5csjImLp0qUxc+bMaG1tjcrKyrj22msHrb/ssssiIs4YBwAAOB9KjqKmpqY4evRorF69Ojo7O2POnDnR1tY28OELhw4diokTR/VXlQAAAEbMhKIoivO9iT+np6cnqquro7u7O6qqqs73dgAAgPNkNNrALR0AACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQmigAAgNREEQAAkJooAgAAUhNFAABAaqIIAABITRQBAACpiSIAACA1UQQAAKQm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/3hg7GMf+1jMmTMnNmzYcE7X7Onpierq6uju7o6qqqpStgsAAFxARqMNJpUyube3N3bs2BGrVq0aGJs4cWI0NDRER0fHkGs6Ojqiubl50FhjY2O88MILZ73OyZMn4+TJkwM/d3d3R8Qf/gYAAAB5vd0EJd7beUclRdGxY8eir68vampqBo3X1NTE3r17h1zT2dk55PzOzs6zXqe1tTUeffTRM8Zra2tL2S4AAHCB+s///M+orq4ekecqKYrGyqpVqwbdXXrzzTfj/e9/fxw6dGjEXjgMpaenJ2pra+Pw4cPeqsmoctYYK84aY8VZY6x0d3fHFVdcEZdffvmIPWdJUTRlypQoKyuLrq6uQeNdXV0xbdq0IddMmzatpPkRERUVFVFRUXHGeHV1tX/IGBNVVVXOGmPCWWOsOGuMFWeNsTJx4sh9u1BJz1ReXh5z586N9vb2gbH+/v5ob2+P+vr6IdfU19cPmh8R8dJLL511PgAAwFgq+e1zzc3NsWzZspg3b17Mnz8/1q1bFydOnIjly5dHRMTSpUtj5syZ0draGhER9913X9xyyy3xzW9+M26//fbYtGlT/OIXv4innnpqZF8JAADAMJQcRU1NTXH06NFYvXp1dHZ2xpw5c6KtrW3gwxQOHTo06FbWTTfdFM8++2w8/PDD8eCDD8Zf/dVfxQsvvBDXXnvtOV+zoqIiWlpahnxLHYwkZ42x4qwxVpw1xoqzxlgZjbNW8vcUAQAAXEhG7reTAAAAxiFRBAAApCaKAACA1EQRAACQ2nsmitavXx+zZs2KysrKqKuri+3bt7/j/B/84AdxzTXXRGVlZVx33XWxdevWMdop410pZ23jxo2xYMGCmDx5ckyePDkaGhr+7NmEt5X659rbNm3aFBMmTIhFixaN7ga5YJR61t58881YsWJFTJ8+PSoqKuLqq6/271HOSalnbd26dfHBD34wLr744qitrY37778/fv/734/RbhmPfvazn8XChQtjxowZMWHChHjhhRf+7Jpt27bFRz/60aioqIgPfOAD8cwzz5R83fdEFG3evDmam5ujpaUldu7cGbNnz47GxsY4cuTIkPNfeeWVWLx4cdx5552xa9euWLRoUSxatChee+21Md45402pZ23btm2xePHiePnll6OjoyNqa2vjtttuizfeeGOMd854U+pZe9vBgwfji1/8YixYsGCMdsp4V+pZ6+3tjU984hNx8ODBeO6552Lfvn2xcePGmDlz5hjvnPGm1LP27LPPxsqVK6OlpSX27NkTTz/9dGzevDkefPDBMd4548mJEydi9uzZsX79+nOa/6tf/Spuv/32uPXWW2P37t3xhS98Ie6666548cUXS7tw8R4wf/78YsWKFQM/9/X1FTNmzChaW1uHnP/pT3+6uP322weN1dXVFX/3d383qvtk/Cv1rP2p06dPF5deemnxve99b7S2yAViOGft9OnTxU033VR85zvfKZYtW1b8zd/8zRjslPGu1LP27W9/u7jyyiuL3t7esdoiF4hSz9qKFSuKv/7rvx401tzcXNx8882juk8uHBFRPP/88+8450tf+lLxkY98ZNBYU1NT0djYWNK1zvudot7e3tixY0c0NDQMjE2cODEaGhqio6NjyDUdHR2D5kdENDY2nnU+RAzvrP2pt956K06dOhWXX375aG2TC8Bwz9pXvvKVmDp1atx5551jsU0uAMM5az/60Y+ivr4+VqxYETU1NXHttdfGmjVroq+vb6y2zTg0nLN20003xY4dOwbeYnfgwIHYunVrfPKTnxyTPZPDSHXBpJHc1HAcO3Ys+vr6oqamZtB4TU1N7N27d8g1nZ2dQ87v7OwctX0y/g3nrP2pBx54IGbMmHHGP3zwPw3nrP385z+Pp59+Onbv3j0GO+RCMZyzduDAgfjpT38ad9xxR2zdujX2798f99xzT5w6dSpaWlrGYtuMQ8M5a5/5zGfi2LFj8fGPfzyKoojTp0/H5z73OW+fY0SdrQt6enrid7/7XVx88cXn9Dzn/U4RjBdr166NTZs2xfPPPx+VlZXneztcQI4fPx5LliyJjRs3xpQpU873drjA9ff3x9SpU+Opp56KuXPnRlNTUzz00EOxYcOG8701LjDbtm2LNWvWxLe+9a3YuXNn/PCHP4wtW7bEY489dr63Bmc473eKpkyZEmVlZdHV1TVovKurK6ZNmzbkmmnTppU0HyKGd9be9vjjj8fatWvjJz/5SVx//fWjuU0uAKWetV/+8pdx8ODBWLhw4cBYf39/RERMmjQp9u3bF1ddddXobppxaTh/rk2fPj0uuuiiKCsrGxj70Ic+FJ2dndHb2xvl5eWjumfGp+GctUceeSSWLFkSd911V0REXHfddXHixIm4++6746GHHoqJE/2/ed69s3VBVVXVOd8lingP3CkqLy+PuXPnRnt7+8BYf39/tLe3R319/ZBr6uvrB82PiHjppZfOOh8ihnfWIiK+/vWvx2OPPRZtbW0xb968sdgq41ypZ+2aa66JV199NXbv3j3w+NSnPjXwSTq1tbVjuX3GkeH8uXbzzTfH/v37B8I7IuL111+P6dOnCyLOajhn7a233jojfN6O8T/8Dj28eyPWBaV9BsTo2LRpU1FRUVE888wzxX/8x38Ud999d3HZZZcVnZ2dRVEUxZIlS4qVK1cOzP+3f/u3YtKkScXjjz9e7Nmzp2hpaSkuuuii4tVXXz1fL4FxotSztnbt2qK8vLx47rnnit/85jcDj+PHj5+vl8A4UepZ+1M+fY5zVepZO3ToUHHppZcWf//3f1/s27ev+PGPf1xMnTq1+OpXv3q+XgLjRKlnraWlpbj00kuLf/mXfykOHDhQ/Ou//mtx1VVXFZ/+9KfP10tgHDh+/Hixa9euYteuXUVEFE888USxa9eu4te//nVRFEWxcuXKYsmSJQPzDxw4UFxyySXFP/zDPxR79uwp1q9fX5SVlRVtbW0lXfc9EUVFURT/9E//VFxxxRVFeXl5MX/+/OLf//3fB/7aLbfcUixbtmzQ/O9///vF1VdfXZSXlxcf+chHii1btozxjhmvSjlr73//+4uIOOPR0tIy9htn3Cn1z7X/SRRRilLP2iuvvFLU1dUVFRUVxZVXXll87WtfK06fPj3Gu2Y8KuWsnTp1qvjyl79cXHXVVUVlZWVRW1tb3HPPPcV//dd/jf3GGTdefvnlIf/b6+2ztWzZsuKWW245Y82cOXOK8vLy4sorryz++Z//ueTrTigK9y8BAIC8zvvvFAEAAJxPoggAAEhNFAEAAKmJIgAAIDVRBAAApCaKAACA1EQRAACQmigCAABSE0UAAEBqoggAAEhNFAEAAKmJIgAAILX/D2/UBUbvbAtsAAAAAElFTkSuQmCC\n", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "subset = [0,1,2,3]\n", - "target_set = newcell.refmoleclist[0].get_parent_indices(\"cell\")\n", - "\n", - "list1 = []\n", - "list2 = []\n", - "\n", - "goodlist = [] ## List of molecules coming from the two fragments received\n", - "avglist = [] ## List of bigger fragments coming from the two fragments received\n", - "badlist = [] ## List of fragments as they entered the function\n", - "for comb in itertools.combinations(subset, 2):\n", - " temp = []\n", - " temp.append(remaining_fragments[comb[0]])\n", - " temp.append(remaining_fragments[comb[1]])\n", - " newmolec = merge_fragments(temp, atoms.cell, debug=0)\n", - " if newmolec is None: \n", - " badlist.append(temp[0])\n", - " badlist.append(temp[1])\n", - " if newmolec is not None:\n", - " print(newmolec.ref_indices)\n", - " newmolec.get_fractional_coord(atoms.cell)\n", - " newmolec.get_centroid()\n", - " newmolec.tmatrix = tmatgenerator(newmolec.frac_centroid)\n", - " small_set = set(newmolec.ref_indices)\n", - " if small_set.issubset(target_set): \n", - " if small_set == target_set:\n", - " goodlist.append(newmolec)\n", - " else :\n", - " avglist.append(newmolec)\n", - " return goodlist, avglist, badlist" - ] - }, - { - "cell_type": "code", - "execution_count": 454, - "id": "8332be99-23dd-4fae-b2b0-0dc581877ee3", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 10\n", - " Formula = C3-O6-Fe\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_fragments\n", - "---------------------------------------------------" - ] - }, - "execution_count": 454, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "remaining_fragments[0]" - ] - }, - { - "cell_type": "code", - "execution_count": 452, - "id": "7b54a862-e081-427f-8ccb-ef2cd5c35228", - "metadata": {}, - "outputs": [ - { - "ename": "TypeError", - "evalue": "'molecule' object is not subscriptable", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)", - "Input \u001b[0;32mIn [452]\u001b[0m, in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0m merge \u001b[38;5;241m=\u001b[39m \u001b[43mmerge_fragments\u001b[49m\u001b[43m(\u001b[49m\u001b[43mremaining_fragments\u001b[49m\u001b[43m[\u001b[49m\u001b[43mcomb\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;241;43m0\u001b[39;49m\u001b[43m]\u001b[49m\u001b[43m]\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m+\u001b[39;49m\u001b[43m \u001b[49m\u001b[43mremaining_fragments\u001b[49m\u001b[43m[\u001b[49m\u001b[43mcomb\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;241;43m1\u001b[39;49m\u001b[43m]\u001b[49m\u001b[43m]\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43matoms\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mcell\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mdebug\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mdebug\u001b[49m\u001b[43m)\u001b[49m\n", - "Input \u001b[0;32mIn [410]\u001b[0m, in \u001b[0;36mmerge_fragments\u001b[0;34m(frags, cellvec, cov_factor, metal_factor, debug)\u001b[0m\n\u001b[1;32m 4\u001b[0m move_idx \u001b[38;5;241m=\u001b[39m \u001b[38;5;241m1\u001b[39m\n\u001b[1;32m 5\u001b[0m \u001b[38;5;66;03m# finds biggest fragment and keeps it in the original cell\u001b[39;00m\n\u001b[1;32m 6\u001b[0m \u001b[38;5;66;03m# sizes = []\u001b[39;00m\n\u001b[1;32m 7\u001b[0m \u001b[38;5;66;03m# for f in frags:\u001b[39;00m\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 11\u001b[0m \u001b[38;5;66;03m# if keep_idx == 0: move_idx = 1\u001b[39;00m\n\u001b[1;32m 12\u001b[0m \u001b[38;5;66;03m# elif keep_idx == 1: move_idx = 0\u001b[39;00m\n\u001b[0;32m---> 13\u001b[0m keep_frag \u001b[38;5;241m=\u001b[39m \u001b[43mfrags\u001b[49m\u001b[43m[\u001b[49m\u001b[43mkeep_idx\u001b[49m\u001b[43m]\u001b[49m\n\u001b[1;32m 14\u001b[0m move_frag \u001b[38;5;241m=\u001b[39m frags[move_idx]\n\u001b[1;32m 15\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m debug \u001b[38;5;241m>\u001b[39m \u001b[38;5;241m0\u001b[39m: \u001b[38;5;28mprint\u001b[39m(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mMERGE_FRAGMENTS: keep_idx\u001b[39m\u001b[38;5;124m\"\u001b[39m, keep_idx)\n", - "\u001b[0;31mTypeError\u001b[0m: 'molecule' object is not subscriptable" - ] - } - ], - "source": [ - "merge = merge_fragments(remaining_fragments[comb[0]] + remaining_fragments[comb[1]], atoms.cell, debug=debug)" - ] - }, - { - "cell_type": "code", - "execution_count": 413, - "id": "6dfdaab9-0d38-4504-9d9f-3273927d09a0", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------" - ] - }, - "execution_count": 413, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "merge" - ] - }, - { - "cell_type": "code", - "execution_count": 275, - "id": "16937cdb-6a47-4e79-93ff-795184868b66", - "metadata": {}, - "outputs": [ - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "c004ff1582f644e2868e647a19af91ef", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "NGLWidget()" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "temp = Atoms(molecules[0].labels, molecules[0].coord, cell=cell_ase, pbc=True)\n", - "plot_atoms(temp)\n", - "view = nglview.show_ase(temp)\n", - "view.add_unitcell()\n", - "view" - ] - }, - { - "cell_type": "code", - "execution_count": 352, - "id": "99dd30f5-263f-42d4-b825-a9f9fe9a920b", - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "data": { - "text/plain": [ - "[array([7.71157005, 0.24832577, 1.42970667])]" - ] - }, - "execution_count": 352, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "remaining_fragments[1].coord" - ] - }, - { - "cell_type": "code", - "execution_count": 354, - "id": "5faf4b42-6215-4e88-97bd-743f49708a37", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "Atoms(symbols='OH', pbc=False)" - ] - }, - "execution_count": 354, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "frag_1" - ] - }, - { - "cell_type": "code", - "execution_count": 357, - "id": "11555119-1deb-41b6-88fa-3cad509377ec", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[array([-5.11285989, 20.75904949, 1.30005827]),\n", - " array([-4.3815462 , 20.36693395, 0.99104667])]" - ] - }, - "execution_count": 357, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "remaining_fragments[0].coord" - ] - }, - { - "cell_type": "code", - "execution_count": 356, - "id": "a1d80b98-cc12-430a-b1c0-1e4c1b018c2d", - "metadata": {}, - "outputs": [], - "source": [ - "tmatrix = tmatgenerator(remaining_fragments[0].frac_centroid, full=True)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "ed6db485-654c-4e8e-b6fe-dbcd0b8e5714", - "metadata": {}, - "outputs": [], - "source": [ - "for t in tmatrix:\n", - " new_coord = translate(t, remaining_fragments[0].coord, cellvec)" - ] - }, - { - "cell_type": "code", - "execution_count": 353, - "id": "18e2e655-d9bd-4643-a252-fe88ce0cb1f6", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 353, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "frag_1 = Atoms(['O', 'H'], [[-5.11285989, 20.75904949, 1.30005827],[-4.3815462 , 20.36693395, 0.99104667]])\n", - "frag_2 = Atoms(['H'], [[7.71157005, 0.24832577, 1.42970667]])\n", - "combined_mol = frag_1 + frag_2\n", - "combined_mol.set_cell(cell_ase)\n", - "plot_atoms(combined_mol)" - ] - }, - { - "cell_type": "code", - "execution_count": 243, - "id": "565aa41d-911c-4619-8103-b8ca3d0ca26f", - "metadata": {}, - "outputs": [], - "source": [ - "merge" - ] - }, - { - "cell_type": "code", - "execution_count": 417, - "id": "db4c617f-ec46-486d-b228-1d5267a17036", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "157 157\n", - "157\n", - "False\n", - "----\n", - "['C3-O6-Fe', 'C-O2', 'C-O2', 'C-O2', 'H3-C2', 'H-C-O', 'H-O', 'H2-O', 'H3-C2', 'H2-O', 'H14-C8-O5', 'H2-C', 'H2-C', 'H2-C', 'H-C-O', 'H19-C11-O6', 'H14-C8-O5', 'H', 'H', 'K', 'K', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'K'] [[1, 8, 73, 74, 9, 75, 76, 51, 153, 154], [10, 11, 52], [77, 80, 155], [78, 79, 156], [130, 132, 134, 136, 137], [70, 124, 126], [12, 53], [14, 55, 58], [39, 40, 41, 42, 43], [13, 54, 57], [62, 64, 66, 68, 72, 82, 84, 86, 88, 89, 91, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 141, 143, 145, 147, 149, 151], [33, 34, 35], [117, 119, 121], [118, 120, 122], [6, 36, 37], [61, 63, 65, 67, 69, 71, 81, 83, 85, 87, 90, 92, 93, 95, 97, 99, 101, 103, 105, 107, 109, 111, 123, 125, 129, 131, 133, 135, 138, 140, 142, 144, 146, 148, 150, 152], [2, 3, 4, 5, 7, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 45, 46, 47, 48, 49, 50], [38], [56], [59], [60], [114], [31], [127], [113], [32], [139], [116], [44], [115], [128], [0]]\n" - ] - } - ], - "source": [ - "all_found = []\n", - "for new in new_structures:\n", - " found_indices, found_rows = find_row_indices(cell_pos, new.positions)\n", - " print(len(found_indices), len(found_rows))\n", - " \n", - " updated = [i for i in found_indices if i not in all_found]\n", - "\n", - " new_fracs = new.get_scaled_positions()\n", - " new_labels = new.get_chemical_symbols()\n", - " indices_in_ref = [ find_row_index(new_fracs, cell_fracs[u]) for u in updated ]\n", - " \n", - " # if debug >=2 :\n", - " # print(f\"{updated=}\")\n", - " # print(f\"{indices_in_ref=}\")\n", - " # for u, j in zip(updated, indices_in_ref):\n", - " # if j == -1:\n", - " # print(\"Error in returning invalid row index from reference\")\n", - " # else :\n", - " # print(cell_labels[u]==new_labels[j], np.allclose(cell_pos[u], new.positions[j]), np.allclose(cell_fracs[u], new_fracs[j]))\n", - " # print(u, cell_labels[u], cell_pos[u], cell_fracs[u], j, new_labels[j], new_fracs[j])\n", - " \n", - " all_found.extend(updated)\n", - " print(len(all_found))\n", - " print(len(all_found) == len(cell_pos))# If Ture, stop\n", - " print(\"----\")\n", - "\n", - " #### make blocks and get fragments ####\n", - " fragments = get_fragments (newcell, updated, indices_in_ref, debug=0)\n", - " print([frag.formula for frag in fragments], [frag.ref_indices for frag in fragments])\n", - " if len(all_found) == 157:\n", - " break\n", - " # fragments, list_ref_indices = get_fragments (newcell, updated, indices_in_ref, debug=0)\n", - " # print([frag.formula for frag in fragments], [frag.ref_indices for frag in fragments],list_ref_indices)\n", - " # updated_labels = extract_from_list(updated, cell_labels, dimension=1)\n", - " # updated_coord = extract_from_list(updated, cell_pos, dimension=1)\n", - " # updated_fracs = extract_from_list(updated, cell_fracs, dimension=1)\n", - " \n", - " # blocklist = split_species(updated_labels, updated_coord, debug=2)\n", - " \n", - " # fragments = []\n", - " # for b in blocklist:\n", - " # if debug > 0: print(f\"CELL.MOLECLIST: doing block={b}\")\n", - " # mol_labels = extract_from_list(b, updated_labels, dimension=1)\n", - " # mol_coord = extract_from_list(b, updated_coord, dimension=1)\n", - " # mol_frac_coord = extract_from_list(b, updated_fracs, dimension=1)\n", - "\n", - " # cell_indices = extract_from_list(b, updated, dimension=1)\n", - " # ref_indices = extract_from_list(b, indices_in_ref, dimension=1)\n", - " \n", - " # # Creates Molecule Object\n", - " # newmolec = molecule(mol_labels, mol_coord)\n", - " # # For debugging\n", - " # newmolec.origin = \"cell.get_moleclist\"\n", - " \n", - " # # Adds cell as parent of the molecule, with indices\n", - " # newmolec.add_parent(newcell, indices=cell_indices) \n", - " # newmolec.set_fractional_coord(mol_frac_coord)\n", - " # newmolec.set_adjacency_parameters(cov_factor=newcell.cov_factor, metal_factor=newcell.metal_factor)\n", - " # newmolec.set_atoms(create_adjacencies=True, debug=debug)\n", - " # fragments.append(newmolec)\n", - " # blocklist and fragments return together\n", - " # molecules = []\n", - " # filtered_fragments = []\n", - " # hydrogens = []\n", - " # found_list = []\n", - " # for frag in fragments:\n", - " # # print(frag.formula, frag.get_parent_indices(\"cell\"), frag.frac_coord)\n", - " # found = False\n", - " # for idx, ref in enumerate(newcell.refmoleclist):\n", - " # if (ref.natoms == frag.natoms) & (ref.formula == frag.formula) & (sorted(ref.get_parent_indices(\"cell\")) == sorted(frag.get_parent_indices(\"cell\"))):\n", - " # print(frag.formula, frag.get_parent_indices(\"cell\"), frag.frac_coord, f\"equivalent to Ref {idx} {ref.formula}\")\n", - " # molecules.append(frag)\n", - " # found = True\n", - " # found_list.append(idx)\n", - " # if found == False:\n", - " # if frag.natoms == 1 and frag.labels == [\"H\"] :\n", - " # hydrogens.append(frag)\n", - " # else :\n", - " # filtered_fragments.append(frag)" - ] - }, - { - "cell_type": "code", - "execution_count": 418, - "id": "412206b3-ccad-4091-814a-aabfe544d7a0", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 10\n", - " Formula = C3-O6-Fe\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_fragments\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = C-O2\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_fragments\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = C-O2\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_fragments\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = C-O2\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_fragments\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 5\n", - " Formula = H3-C2\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_fragments\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H-C-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_fragments\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 2\n", - " Formula = H-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_fragments\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_fragments\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 5\n", - " Formula = H3-C2\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_fragments\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_fragments\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 27\n", - " Formula = H14-C8-O5\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_fragments\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-C\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_fragments\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-C\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_fragments\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-C\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_fragments\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H-C-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_fragments\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 36\n", - " Formula = H19-C11-O6\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_fragments\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 27\n", - " Formula = H14-C8-O5\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_fragments\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = H\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_fragments\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = H\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_fragments\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = K\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_fragments\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = K\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_fragments\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = H\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_fragments\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = H\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_fragments\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = H\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_fragments\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = H\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_fragments\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = H\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_fragments\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = H\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_fragments\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = H\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_fragments\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = H\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_fragments\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = H\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_fragments\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = H\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_fragments\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = K\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_fragments\n", - " ---------------------------------------------------]" - ] - }, - "execution_count": 418, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "fragments" - ] - }, - { - "cell_type": "code", - "execution_count": 173, - "id": "8ddba568-4891-4d61-a642-0e57a15f3d6f", - "metadata": {}, - "outputs": [], - "source": [ - "updated_labels = extract_from_list(updated, cell_labels, dimension=1)\n", - "updated_coord = extract_from_list(updated, cell_pos, dimension=1)\n", - "updated_fracs = extract_from_list(updated, cell_fracs, dimension=1)" - ] - }, - { - "cell_type": "code", - "execution_count": 109, - "id": "82ecfd52-e60e-479b-b0df-f745b9ff3cf7", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "166\n", - "False\n" - ] - } - ], - "source": [ - "all_found.extend(found_indices)\n", - "print(len(set(all_found)))\n", - "print(len(set(all_found)) == len(cell_pos) )# If Ture, stop" - ] - }, - { - "cell_type": "code", - "execution_count": 175, - "id": "c17958c2-b3ba-4b13-9caf-a37112a791d0", - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "SPILT_SPECIES: Laplacian lap=array([[-2, 0, 0, 1, 0, 0, 1, 0, 0],\n", - " [ 0, -1, 0, 0, 1, 0, 0, 0, 0],\n", - " [ 0, 0, -2, 0, 0, 1, 0, 0, 1],\n", - " [ 1, 0, 0, -1, 0, 0, 0, 0, 0],\n", - " [ 0, 1, 0, 0, -1, 0, 0, 0, 0],\n", - " [ 0, 0, 1, 0, 0, -1, 0, 0, 0],\n", - " [ 1, 0, 0, 0, 0, 0, -1, 0, 0],\n", - " [ 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [ 0, 0, 1, 0, 0, 0, 0, 0, -1]])\n", - "SPILT_SPECIES: graph=<9x9 sparse matrix of type ''\n", - "\twith 18 stored elements in Compressed Sparse Row format>\n" - ] - }, - { - "data": { - "text/plain": [ - "[[2, 5, 8], [0, 3, 6], [1, 4], [7]]" - ] - }, - "execution_count": 175, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "blocklist = split_species(updated_labels, updated_coord, debug=2)\n", - "blocklist" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "210f8926-46d4-4a33-955a-5509d1bad20c", - "metadata": {}, - "outputs": [], - "source": [ - "debug =2\n", - "fragments = []\n", - "for b in blocklist:\n", - " if debug > 0: print(f\"CELL.MOLECLIST: doing block={b}\")\n", - " mol_labels = extract_from_list(b, updated_labels, dimension=1)\n", - " mol_coord = extract_from_list(b, updated_coord, dimension=1)\n", - " mol_indices = extract_from_list(b, updated, dimension=1)\n", - " mol_frac_coord = extract_from_list(b, updated_fracs, dimension=1)\n", - " # Creates Molecule Object\n", - " newmolec = molecule(mol_labels, mol_coord)\n", - " # For debugging\n", - " newmolec.origin = \"cell.get_moleclist\"\n", - " # Adds cell as parent of the molecule, with indices b\n", - " newmolec.add_parent(newcell, indices=mol_indices) \n", - " newmolec.set_fractional_coord(mol_frac_coord)\n", - " newmolec.set_adjacency_parameters(cov_factor=newcell.cov_factor, metal_factor=newcell.metal_factor)\n", - " newmolec.set_atoms(create_adjacencies=True, debug=debug)\n", - " fragments.append(newmolec)" - ] - }, - { - "cell_type": "code", - "execution_count": 188, - "id": "dc2f7936-4061-4887-ae80-cf2846cdb56e", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[[14.586186795000003, 10.49193963917675, 6.840074119999999],\n", - " [12.18571845, 7.034020882505503, 9.395122399999998],\n", - " [15.035307465, 9.651149384274202, 4.231314359999999],\n", - " [12.463646895000004, 10.436224622285618, 4.9322930399999985],\n", - " [12.009408735000001, 11.2968527998691, 7.554505039999998],\n", - " [14.172644865000004, 12.408198553462679, 9.007249479999997],\n", - " [16.712138355, 11.831210461870418, 8.150302799999997],\n", - " [17.233391265, 10.873925171650045, 5.554410399999998],\n", - " [15.732626400000003, 8.578424267389252, 8.425196399999997],\n", - " [13.601557350000002, 7.986663254651614, 8.331420639999997],\n", - " [13.773236955000005, 6.6332526360045145, 10.549480559999997],\n", - " [15.9202677, 7.13574299667795, 10.792010799999996],\n", - " [18.38446098, 8.708003890007264, 9.464333199999997],\n", - " [8.947565730000004, 13.331506125048683, 4.549391599999999],\n", - " [18.450622815000003, 6.839229365117188, 2.0090627999999997],\n", - " [13.971844305000003, 9.667610639264764, 3.2948239999999993],\n", - " [14.1242724, 8.994598560227558, 2.6134387999999995],\n", - " [13.929320400000003, 10.535203193959637, 2.8610379999999993],\n", - " [12.696980070000002, 9.39388951461401, 3.9927807999999994],\n", - " [11.96883435, 9.355479919636032, 3.352337199999999],\n", - " [12.746205450000005, 8.540858839333865, 4.450936799999999],\n", - " [11.209130775000004, 10.299469580825564, 5.581704799999999],\n", - " [11.1731865, 9.450448698427735, 6.050583599999999],\n", - " [10.495728300000003, 10.315719794085478, 4.924689599999999],\n", - " [11.032333680000004, 11.413136793456273, 6.5438323999999986],\n", - " [11.128103850000002, 12.263634967968638, 6.087625999999999],\n", - " [10.144814700000001, 11.375149281939592, 6.934727199999998],\n", - " [11.859295695, 12.265956427005772, 8.574340799999998],\n", - " [10.985545200000002, 12.181328693015834, 8.988630799999997],\n", - " [11.934717750000004, 13.158451905917136, 8.200017599999997],\n", - " [12.920321955000002, 12.046895110592908, 9.577409999999999],\n", - " [12.747423900000003, 12.586528815860435, 10.364073599999996],\n", - " [12.933846750000003, 11.11556795324227, 9.844505199999997],\n", - " [15.239641530000004, 12.253927048358824, 9.925413599999997],\n", - " [15.303732, 11.328720101196984, 10.207130799999996],\n", - " [15.085629450000004, 12.803901798428111, 10.710127599999998],\n", - " [16.497447465000004, 12.67157863331167, 9.248902399999997],\n", - " [16.423487550000004, 13.59319787105249, 8.952563199999998],\n", - " [17.2435044, 12.607632988925257, 9.865950799999997],\n", - " [17.955810270000004, 12.006586140039095, 7.511808799999998],\n", - " [18.661780200000003, 12.058924489239857, 8.175647599999998],\n", - " [17.95142385, 12.83344764071886, 7.0058875999999985],\n", - " [18.204130380000002, 10.87582454722588, 6.612068399999998],\n", - " [19.09432995, 10.946734568723686, 6.236770399999998],\n", - " [18.148812750000005, 10.04347596154926, 7.108241599999998],\n", - " [17.347194495000004, 9.746118163065905, 4.713157999999999],\n", - " [17.2264461, 8.935506875646054, 5.232726399999999],\n", - " [18.232885800000005, 9.72058211365747, 4.316414399999999],\n", - " [16.321381440000003, 9.81470672552658, 3.6438023999999993],\n", - " [16.37231265, 10.672380318880988, 3.1914951999999994],\n", - " [16.477099350000003, 9.114892346697049, 2.989711599999999],\n", - " [14.762862045, 7.989406797150041, 8.870679999999998],\n", - " [14.865942915000002, 7.181961135689913, 10.194458399999998],\n", - " [17.5554276, 8.67381512964225, 9.211859999999998],\n", - " [8.921490900000002, 14.160900126496228, 4.240379999999999],\n", - " [17.579796599999998, 6.668918688484065, 1.9008599999999996],\n", - " [18.538716750000003, 8.253842085652273, 10.176911999999998],\n", - " [8.113658550000004, 13.588977036439525, 4.679039999999999],\n", - " [18.422964, 6.795543726873003, 2.895155999999999],\n", - " [7.989620340000003, 7.386038489226752, 6.840074119999999],\n", - " [13.977692865000002, 3.2261949364194917, 6.840074119999999],\n", - " [8.493205725000003, 8.195383526262713, 4.231314359999999],\n", - " [13.024986810000001, 3.257640154286077, 4.231314359999999],\n", - " [9.099140910000001, 5.575722523726235, 4.9322930399999985],\n", - " [14.990712195, 5.09222591881114, 4.9322930399999985],\n", - " [8.580934125000002, 4.7520266490061935, 7.554505039999998],\n", - " [15.963157140000002, 5.0552936159477, 7.554505039999998],\n", - " [6.5368624050000035, 6.06977121517374, 9.007249479999997],\n", - " [15.84399273, 2.6262032961865738, 9.007249479999997],\n", - " [5.766802005000002, 8.557531136055076, 8.150302799999997],\n", - " [14.074559639999999, 0.7154314668975003, 8.150302799999997],\n", - " [6.335208930000003, 9.487592043021824, 5.554410399999998],\n", - " [12.984899805000001, 0.7426558501511216, 5.554410399999998],\n", - " [9.073553460000005, 9.335641996955099, 8.425196399999997],\n", - " [11.747320140000001, 3.190106800478644, 8.425196399999997],\n", - " [10.651568055000002, 7.785962568805147, 8.331420639999997],\n", - " [12.300374595000001, 5.331547241366233, 8.331420639999997],\n", - " [11.73781623, 8.611346777370375, 10.549480559999997],\n", - " [11.042446815000002, 5.8595736514481045, 10.549480559999997],\n", - " [10.40410086, 3.7489453032351574, 10.792010799999996],\n", - " [10.229131440000003, 10.219484764909886, 10.792010799999996],\n", - " [9.010681440000003, 7.266166786218555, 3.2948239999999993],\n", - " [13.570974255, 4.170395639339671, 3.2948239999999993],\n", - " [9.51731295, 7.734679428257626, 2.6134387999999995],\n", - " [12.91191465, 4.374895076337806, 2.6134387999999995],\n", - " [8.280586200000002, 6.795543726873003, 2.8610379999999993],\n", - " [14.343593400000001, 3.773426143990351, 2.8610379999999993],\n", - " [9.885163005000003, 6.2989625346577185, 3.9927807999999994],\n", - " [13.971356925, 5.411321015551263, 3.9927807999999994],\n", - " [14.302166100000003, 6.061118504217164, 3.352337199999999],\n", - " [10.28249955, 5.687574640969796, 3.352337199999999],\n", - " [13.207998, 5.7952059236003945, 4.450936799999999],\n", - " [10.599296550000002, 6.768108301888733, 4.450936799999999],\n", - " [9.844832310000001, 4.557657215079174, 5.581704799999999],\n", - " [15.499536915, 6.247046268918254, 5.581704799999999],\n", - " [10.598078100000002, 4.951039001007475, 6.050583599999999],\n", - " [14.782235400000001, 6.702685365387783, 6.050583599999999],\n", - " [10.18746045, 3.9317074419765237, 4.924689599999999],\n", - " [15.870311250000002, 6.8567458287609915, 4.924689599999999],\n", - " [8.968766760000001, 3.847712833178529, 6.5438323999999986],\n", - " [16.552399559999998, 5.843323438188191, 6.5438323999999986],\n", - " [8.18432865, 3.505403146067099, 6.087625999999999],\n", - " [17.2410675, 5.335134950787253, 6.087625999999999],\n", - " [9.4454244, 3.0980926059160163, 6.934727199999998],\n", - " [16.9632609, 6.630931176967384, 6.934727199999998],\n", - " [7.816722285000002, 4.137473129358549, 8.574340799999998],\n", - " [16.877482020000002, 4.7007435084586735, 8.574340799999998],\n", - " [8.326887300000001, 3.42309687111429, 8.988630799999997],\n", - " [17.2410675, 5.499747500692872, 8.988630799999997],\n", - " [7.006087500000002, 3.7565428055384933, 8.200017599999997],\n", - " [17.61269475, 4.189178353367365, 8.200017599999997],\n", - " [7.475921820000001, 5.165879482807372, 9.577409999999999],\n", - " [16.157256225, 3.891398471422712, 9.577409999999999],\n", - " [16.711041750000003, 3.7713157266838695, 10.364073599999996],\n", - " [7.0950343500000015, 4.7463285222786915, 10.364073599999996],\n", - " [15.343940850000003, 4.345349234047054, 9.844505199999997],\n", - " [8.2757124, 5.643255877533669, 9.844505199999997],\n", - " [6.136967115000004, 7.0709531853689445, 9.925413599999997],\n", - " [15.176891355, 1.7792928310952274, 9.925413599999997],\n", - " [6.9061746000000035, 7.589060634110348, 10.207130799999996],\n", - " [14.3435934, 2.186392329515663, 10.207130799999996],\n", - " [5.737681050000002, 6.6625874365646185, 10.710127599999998],\n", - " [15.7301895, 1.6376838298302652, 10.710127599999998],\n", - " [5.146367265000002, 7.951419285633359, 9.248902399999997],\n", - " [14.909685269999999, 0.4811751458779652, 9.248902399999997],\n", - " [4.385201550000002, 7.426558501511211, 8.952563199999998],\n", - " [15.7448109, 0.08441669225929291, 8.952563199999998],\n", - " [4.828717350000003, 8.629496366206123, 9.865950799999997],\n", - " [14.481278249999997, -0.1329562903083838, 9.865950799999997],\n", - " [4.993086255000003, 9.546894769333976, 7.511808799999998],\n", - " [13.604603474999998, -0.4493078445500807, 7.511808799999998],\n", - " [4.594774950000003, 10.132113488421519, 8.175647599999998],\n", - " [13.296944850000001, -1.0868649128383832, 8.175647599999998],\n", - " [4.279196400000003, 9.129665267842425, 7.0058875999999985],\n", - " [14.32287975, -0.8589398437382949, 7.0058875999999985],\n", - " [5.8481944650000015, 10.327327089271131, 6.612068399999998],\n", - " [12.501175155000002, -0.09897857167401912, 6.612068399999998],\n", - " [12.11748525, -0.9053690244809056, 6.236770399999998],\n", - " [5.341684800000003, 11.062807520580211, 6.236770399999998],\n", - " [11.807998950000002, 0.3651021940214385, 7.108241599999998],\n", - " [6.596688300000002, 10.695594909252293, 7.108241599999998],\n", - " [11.95128867, 1.2080028662304685, 4.713157999999999],\n", - " [7.255016835000001, 10.150052035526617, 4.713157999999999],\n", - " [11.3096529, 1.7178796874765918, 5.232726399999999],\n", - " [8.017401000000003, 10.450786501700344, 5.232726399999999],\n", - " [11.48632815, 0.4537397208936947, 4.316414399999999],\n", - " [6.834286050000003, 10.929851230271828, 4.316414399999999],\n", - " [12.523594635, 2.062088750163855, 3.6438023999999993],\n", - " [7.708523925000001, 9.227377589132557, 3.6438023999999993],\n", - " [13.24089615, 1.5891442317811717, 3.1914951999999994],\n", - " [6.940291200000003, 8.842648514160834, 3.1914951999999994],\n", - " [11.83967865, 2.277140273694401, 2.989711599999999],\n", - " [8.236722000000004, 9.71214044443154, 2.989711599999999],\n", - " [10.068539730000003, 8.790310164960074, 8.870679999999998],\n", - " [11.722098225, 4.3244561027128805, 8.870679999999998],\n", - " [10.716267750000004, 9.28330364775434, 10.194458399999998],\n", - " [10.971289335, 4.638908281378742, 10.194458399999998]]" - ] - }, - "execution_count": 188, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "ref_pos" - ] - }, - { - "cell_type": "code", - "execution_count": 196, - "id": "26d2513a-fa06-47f1-b6f4-95c0deeb0fc9", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "#########################################\n", - " GETREFS: Generate reference molecules \n", - "#########################################\n", - "GETREFS: found 10 reference molecules\n", - "GETREFS: ['C6-O12-Fe', 'H24-C12-O6', 'H2-O', 'H2-O', 'H2-O', 'H24-C12-O6', 'H24-C12-O6', 'K', 'K', 'K']\n", - "GETREFS: [------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 19\n", - " Formula = C6-O12-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 MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 42\n", - " Formula = H24-C12-O6\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 42\n", - " Formula = H24-C12-O6\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 42\n", - " Formula = H24-C12-O6\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = K\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = K\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = K\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - "]\n", - "GETREFS: working with C6-O12-Fe\n", - "\n", - "LIGAND.SPLIT_LIGAND: splitting C2-O4 into groups\n", - "LIGAND.SPLIT_LIGAND: self.indices=[0, 1, 2, 3, 4, 5]\n", - "LIGAND.SPLIT_LIGAND: connected_idx=[1, 2]\n", - "LIGAND.SPLIT_LIGAND: conn_labels=['O', 'O']\n", - "SPILT_SPECIES: Laplacian lap=array([[0, 0],\n", - " [0, 0]])\n", - "SPILT_SPECIES: graph=<2x2 sparse matrix of type ''\n", - "\twith 0 stored elements in Compressed Sparse Row format>\n", - "LIGAND.SPLIT_LIGAND: blocklist=[[1], [0]]\n", - "LIGAND.SPLIT_LIGAND: block=[1]\n", - "EXTRACT_FROM_LIST. received: entrylist=[1] old_array=[1, 2]\n", - "EXTRACT_FROM_LIST. received: idx=0 val=1 old_array[val]=2\n", - "EXTRACT_FROM_LIST. new_array=array([2], dtype=object)\n", - "LIGAND.SPLIT_LIGAND: gr_indices=[2]\n", - "EXTRACT_FROM_LIST. received: entrylist=[1] old_array=['O', 'O']\n", - "EXTRACT_FROM_LIST. received: idx=0 val=1 old_array[val]='O'\n", - "EXTRACT_FROM_LIST. new_array=array(['O'], dtype=object)\n", - "Entering COORD_CORR_NONHAPTIC:\n", - "\tCoordinating atom label=O with mconnec=1, group index 0\n", - "\tevaluating coordination with metal Fe\n", - "\n", - "------------- Cell2mol METAL Object --------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Sub-Type = metal\n", - " Label = Fe\n", - " Atomic Number = 26\n", - " Index in Molecule = 0\n", - " Metal Adjacency (mconnec) = 6\n", - " Regular Adjacencies (connec) = 6\n", - "----------------------------------------------------\n", - "\n", - "ADD_ATOM: Metalist length 1\n", - "ADD_ATOM: Ligand Atoms 6\n", - "ADD_ATOM: site= 2\n", - "ADD_ATOM: target ligand atom O\n", - "ADD_ATOM: evaluating apos=array([11.04244682, 5.85957365, 10.54948056]) and tgt.coord=[12.18571845, 7.034020882505503, 9.395122399999998]\n", - "ADD_ATOM: Chosen Metal index 0. H is added at site 2\n", - "\tconnectivity verified for atom O with ligand index 2\n", - "LIGAND.SPLIT_LIGAND: new group is found\n", - "LIGAND.SPLIT_LIGAND: block=[0]\n", - "EXTRACT_FROM_LIST. received: entrylist=[0] old_array=[1, 2]\n", - "EXTRACT_FROM_LIST. received: idx=0 val=0 old_array[val]=1\n", - "EXTRACT_FROM_LIST. new_array=array([1], dtype=object)\n", - "LIGAND.SPLIT_LIGAND: gr_indices=[1]\n", - "EXTRACT_FROM_LIST. received: entrylist=[0] old_array=['O', 'O']\n", - "EXTRACT_FROM_LIST. received: idx=0 val=0 old_array[val]='O'\n", - "EXTRACT_FROM_LIST. new_array=array(['O'], dtype=object)\n", - "Entering COORD_CORR_NONHAPTIC:\n", - "\tCoordinating atom label=O with mconnec=1, group index 0\n", - "\tevaluating coordination with metal Fe\n", - "\n", - "------------- Cell2mol METAL Object --------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Sub-Type = metal\n", - " Label = Fe\n", - " Atomic Number = 26\n", - " Index in Molecule = 0\n", - " Metal Adjacency (mconnec) = 6\n", - " Regular Adjacencies (connec) = 6\n", - "----------------------------------------------------\n", - "\n", - "ADD_ATOM: Metalist length 1\n", - "ADD_ATOM: Ligand Atoms 6\n", - "ADD_ATOM: site= 1\n", - "ADD_ATOM: target ligand atom O\n", - "ADD_ATOM: evaluating apos=array([12.3003746 , 5.33154724, 8.33142064]) and tgt.coord=[12.18571845, 7.034020882505503, 9.395122399999998]\n", - "ADD_ATOM: Chosen Metal index 0. H is added at site 1\n", - "\tconnectivity verified for atom O with ligand index 1\n", - "LIGAND.SPLIT_LIGAND: new group is found\n", - "LIGAND.SPLIT_LIGAND: found groups ['O', 'O']\n", - "[------------- Cell2mol GROUP Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = group\n", - " Number of Atoms = 1\n", - " Formula = O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_ligand\n", - " Number of Metals = 1\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol GROUP Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = group\n", - " Number of Atoms = 1\n", - " Formula = O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_ligand\n", - " Number of Metals = 1\n", - "---------------------------------------------------\n", - "]\n", - "\n", - "LIGAND.SPLIT_LIGAND: splitting C2-O4 into groups\n", - "LIGAND.SPLIT_LIGAND: self.indices=[0, 1, 2, 3, 4, 5]\n", - "LIGAND.SPLIT_LIGAND: connected_idx=[1, 2]\n", - "LIGAND.SPLIT_LIGAND: conn_labels=['O', 'O']\n", - "SPILT_SPECIES: Laplacian lap=array([[0, 0],\n", - " [0, 0]])\n", - "SPILT_SPECIES: graph=<2x2 sparse matrix of type ''\n", - "\twith 0 stored elements in Compressed Sparse Row format>\n", - "LIGAND.SPLIT_LIGAND: blocklist=[[1], [0]]\n", - "LIGAND.SPLIT_LIGAND: block=[1]\n", - "EXTRACT_FROM_LIST. received: entrylist=[1] old_array=[1, 2]\n", - "EXTRACT_FROM_LIST. received: idx=0 val=1 old_array[val]=2\n", - "EXTRACT_FROM_LIST. new_array=array([2], dtype=object)\n", - "LIGAND.SPLIT_LIGAND: gr_indices=[2]\n", - "EXTRACT_FROM_LIST. received: entrylist=[1] old_array=['O', 'O']\n", - "EXTRACT_FROM_LIST. received: idx=0 val=1 old_array[val]='O'\n", - "EXTRACT_FROM_LIST. new_array=array(['O'], dtype=object)\n", - "Entering COORD_CORR_NONHAPTIC:\n", - "\tCoordinating atom label=O with mconnec=1, group index 0\n", - "\tevaluating coordination with metal Fe\n", - "\n", - "------------- Cell2mol METAL Object --------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Sub-Type = metal\n", - " Label = Fe\n", - " Atomic Number = 26\n", - " Index in Molecule = 0\n", - " Metal Adjacency (mconnec) = 6\n", - " Regular Adjacencies (connec) = 6\n", - "----------------------------------------------------\n", - "\n", - "ADD_ATOM: Metalist length 1\n", - "ADD_ATOM: Ligand Atoms 6\n", - "ADD_ATOM: site= 2\n", - "ADD_ATOM: target ligand atom O\n", - "ADD_ATOM: evaluating apos=array([11.73781623, 8.61134678, 10.54948056]) and tgt.coord=[12.18571845, 7.034020882505503, 9.395122399999998]\n", - "ADD_ATOM: Chosen Metal index 0. H is added at site 2\n", - "\tconnectivity verified for atom O with ligand index 2\n", - "LIGAND.SPLIT_LIGAND: new group is found\n", - "LIGAND.SPLIT_LIGAND: block=[0]\n", - "EXTRACT_FROM_LIST. received: entrylist=[0] old_array=[1, 2]\n", - "EXTRACT_FROM_LIST. received: idx=0 val=0 old_array[val]=1\n", - "EXTRACT_FROM_LIST. new_array=array([1], dtype=object)\n", - "LIGAND.SPLIT_LIGAND: gr_indices=[1]\n", - "EXTRACT_FROM_LIST. received: entrylist=[0] old_array=['O', 'O']\n", - "EXTRACT_FROM_LIST. received: idx=0 val=0 old_array[val]='O'\n", - "EXTRACT_FROM_LIST. new_array=array(['O'], dtype=object)\n", - "Entering COORD_CORR_NONHAPTIC:\n", - "\tCoordinating atom label=O with mconnec=1, group index 0\n", - "\tevaluating coordination with metal Fe\n", - "\n", - "------------- Cell2mol METAL Object --------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Sub-Type = metal\n", - " Label = Fe\n", - " Atomic Number = 26\n", - " Index in Molecule = 0\n", - " Metal Adjacency (mconnec) = 6\n", - " Regular Adjacencies (connec) = 6\n", - "----------------------------------------------------\n", - "\n", - "ADD_ATOM: Metalist length 1\n", - "ADD_ATOM: Ligand Atoms 6\n", - "ADD_ATOM: site= 1\n", - "ADD_ATOM: target ligand atom O\n", - "ADD_ATOM: evaluating apos=array([10.65156806, 7.78596257, 8.33142064]) and tgt.coord=[12.18571845, 7.034020882505503, 9.395122399999998]\n", - "ADD_ATOM: Chosen Metal index 0. H is added at site 1\n", - "\tconnectivity verified for atom O with ligand index 1\n", - "LIGAND.SPLIT_LIGAND: new group is found\n", - "LIGAND.SPLIT_LIGAND: found groups ['O', 'O']\n", - "[------------- Cell2mol GROUP Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = group\n", - " Number of Atoms = 1\n", - " Formula = O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_ligand\n", - " Number of Metals = 1\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol GROUP Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = group\n", - " Number of Atoms = 1\n", - " Formula = O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_ligand\n", - " Number of Metals = 1\n", - "---------------------------------------------------\n", - "]\n", - "\n", - "LIGAND.SPLIT_LIGAND: splitting C2-O4 into groups\n", - "LIGAND.SPLIT_LIGAND: self.indices=[0, 1, 2, 3, 4, 5]\n", - "LIGAND.SPLIT_LIGAND: connected_idx=[1, 2]\n", - "LIGAND.SPLIT_LIGAND: conn_labels=['O', 'O']\n", - "SPILT_SPECIES: Laplacian lap=array([[0, 0],\n", - " [0, 0]])\n", - "SPILT_SPECIES: graph=<2x2 sparse matrix of type ''\n", - "\twith 0 stored elements in Compressed Sparse Row format>\n", - "LIGAND.SPLIT_LIGAND: blocklist=[[1], [0]]\n", - "LIGAND.SPLIT_LIGAND: block=[1]\n", - "EXTRACT_FROM_LIST. received: entrylist=[1] old_array=[1, 2]\n", - "EXTRACT_FROM_LIST. received: idx=0 val=1 old_array[val]=2\n", - "EXTRACT_FROM_LIST. new_array=array([2], dtype=object)\n", - "LIGAND.SPLIT_LIGAND: gr_indices=[2]\n", - "EXTRACT_FROM_LIST. received: entrylist=[1] old_array=['O', 'O']\n", - "EXTRACT_FROM_LIST. received: idx=0 val=1 old_array[val]='O'\n", - "EXTRACT_FROM_LIST. new_array=array(['O'], dtype=object)\n", - "Entering COORD_CORR_NONHAPTIC:\n", - "\tCoordinating atom label=O with mconnec=1, group index 0\n", - "\tevaluating coordination with metal Fe\n", - "\n", - "------------- Cell2mol METAL Object --------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Sub-Type = metal\n", - " Label = Fe\n", - " Atomic Number = 26\n", - " Index in Molecule = 0\n", - " Metal Adjacency (mconnec) = 6\n", - " Regular Adjacencies (connec) = 6\n", - "----------------------------------------------------\n", - "\n", - "ADD_ATOM: Metalist length 1\n", - "ADD_ATOM: Ligand Atoms 6\n", - "ADD_ATOM: site= 2\n", - "ADD_ATOM: target ligand atom O\n", - "ADD_ATOM: evaluating apos=array([13.77323696, 6.63325264, 10.54948056]) and tgt.coord=[12.18571845, 7.034020882505503, 9.395122399999998]\n", - "ADD_ATOM: Chosen Metal index 0. H is added at site 2\n", - "\tconnectivity verified for atom O with ligand index 2\n", - "LIGAND.SPLIT_LIGAND: new group is found\n", - "LIGAND.SPLIT_LIGAND: block=[0]\n", - "EXTRACT_FROM_LIST. received: entrylist=[0] old_array=[1, 2]\n", - "EXTRACT_FROM_LIST. received: idx=0 val=0 old_array[val]=1\n", - "EXTRACT_FROM_LIST. new_array=array([1], dtype=object)\n", - "LIGAND.SPLIT_LIGAND: gr_indices=[1]\n", - "EXTRACT_FROM_LIST. received: entrylist=[0] old_array=['O', 'O']\n", - "EXTRACT_FROM_LIST. received: idx=0 val=0 old_array[val]='O'\n", - "EXTRACT_FROM_LIST. new_array=array(['O'], dtype=object)\n", - "Entering COORD_CORR_NONHAPTIC:\n", - "\tCoordinating atom label=O with mconnec=1, group index 0\n", - "\tevaluating coordination with metal Fe\n", - "\n", - "------------- Cell2mol METAL Object --------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Sub-Type = metal\n", - " Label = Fe\n", - " Atomic Number = 26\n", - " Index in Molecule = 0\n", - " Metal Adjacency (mconnec) = 6\n", - " Regular Adjacencies (connec) = 6\n", - "----------------------------------------------------\n", - "\n", - "ADD_ATOM: Metalist length 1\n", - "ADD_ATOM: Ligand Atoms 6\n", - "ADD_ATOM: site= 1\n", - "ADD_ATOM: target ligand atom O\n", - "ADD_ATOM: evaluating apos=array([13.60155735, 7.98666325, 8.33142064]) and tgt.coord=[12.18571845, 7.034020882505503, 9.395122399999998]\n", - "ADD_ATOM: Chosen Metal index 0. H is added at site 1\n", - "\tconnectivity verified for atom O with ligand index 1\n", - "LIGAND.SPLIT_LIGAND: new group is found\n", - "LIGAND.SPLIT_LIGAND: found groups ['O', 'O']\n", - "[------------- Cell2mol GROUP Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = group\n", - " Number of Atoms = 1\n", - " Formula = O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_ligand\n", - " Number of Metals = 1\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol GROUP Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = group\n", - " Number of Atoms = 1\n", - " Formula = O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_ligand\n", - " Number of Metals = 1\n", - "---------------------------------------------------\n", - "]\n", - "LIGAND.Get_denticity: checking connectivity of ligand C2-O4\n", - "LIGAND.Get_denticity: initial connectivity is 2\n", - "LIGAND.Get_denticity: final connectivity of ligand C2-O4 is 2\n", - "LIGAND.Get_denticity: checking connectivity of ligand C2-O4\n", - "LIGAND.Get_denticity: initial connectivity is 2\n", - "LIGAND.Get_denticity: final connectivity of ligand C2-O4 is 2\n", - "LIGAND.Get_denticity: checking connectivity of ligand C2-O4\n", - "LIGAND.Get_denticity: initial connectivity is 2\n", - "LIGAND.Get_denticity: final connectivity of ligand C2-O4 is 2\n", - "\n", - "METAL.Get_coord_geometry: Fe\n", - "METAL.Get_coord_geometry:\n", - "coord_group=[------------- Cell2mol GROUP Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = group\n", - " Number of Atoms = 1\n", - " Formula = O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_ligand\n", - " Number of Metals = 1\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol GROUP Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = group\n", - " Number of Atoms = 1\n", - " Formula = O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_ligand\n", - " Number of Metals = 1\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol GROUP Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = group\n", - " Number of Atoms = 1\n", - " Formula = O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_ligand\n", - " Number of Metals = 1\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol GROUP Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = group\n", - " Number of Atoms = 1\n", - " Formula = O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_ligand\n", - " Number of Metals = 1\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol GROUP Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = group\n", - " Number of Atoms = 1\n", - " Formula = O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_ligand\n", - " Number of Metals = 1\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol GROUP Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = group\n", - " Number of Atoms = 1\n", - " Formula = O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_ligand\n", - " Number of Metals = 1\n", - "---------------------------------------------------\n", - "]\n", - "METAL.Get_coord_geometry: coord_nr=6\n", - "SHAPE_MEASURE: symbols=['Fe', 'O', 'O', 'O', 'O', 'O', 'O']\n", - "SHAPE_MEASURE: positions=[[12.18571845, 7.034020882505503, 9.395122399999998], [11.042446815000002, 5.8595736514481045, 10.549480559999997], [12.300374595000001, 5.331547241366233, 8.331420639999997], [11.73781623, 8.611346777370375, 10.549480559999997], [10.651568055000002, 7.785962568805147, 8.331420639999997], [13.773236955000005, 6.6332526360045145, 10.549480559999997], [13.601557350000002, 7.986663254651614, 8.331420639999997]]\n", - "SHAPE_MEASURE: coordination number of metal center 6\n", - "SHAPE_MEASURE: connectivity of metal center(1) [[1, 2], [1, 3], [1, 4], [1, 5], [1, 6], [1, 7]]\n", - "DEFINE_coordination_geometry: The number of coordinating points: 6\n", - "DEFINE_coordination_geometry: {'Hexagon': 31.305, 'Pentagonal pyramidal': 26.061, 'Octahedral': 0.861, 'Trigonal prismatic': 12.204}\n", - "DEFINE_coordination_geometry: The type of hapticity : []\n", - "DEFINE_coordination_geometry: The most likely geometry is 'Octahedral' with deviation value 0.861\n", - "METAL.Get_coord_geometry: self.coord_geometry='Octahedral' self.geom_deviation=0.861\n", - "METAL.Get_relative_metal_radius: diff_list=[1.345, 1.351, 1.345, 1.353, 1.343, 1.351]\n", - "METAL.Get_relative_metal_radius: average=1.348\n", - "METAL.Get_coord_geometry: self.rel_metal_radius=1.021\n", - "GETREFS: working with H24-C12-O6\n", - "GETREFS: working with H2-O\n", - "GETREFS: working with H2-O\n", - "GETREFS: working with H2-O\n", - "GETREFS: working with H24-C12-O6\n", - "GETREFS: working with H24-C12-O6\n", - "GETREFS: working with K\n", - "GETREFS: working with K\n", - "GETREFS: working with K\n" - ] - }, - { - "data": { - "text/plain": [ - "[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 19\n", - " Formula = C6-O12-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 MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 42\n", - " Formula = H24-C12-O6\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 42\n", - " Formula = H24-C12-O6\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 42\n", - " Formula = H24-C12-O6\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = K\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = K\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = K\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " ---------------------------------------------------]" - ] - }, - "execution_count": 196, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "newcell.get_reference_molecules(ref_labels, ref_fracs, debug=debug)" - ] - }, - { - "cell_type": "code", - "execution_count": 203, - "id": "422cfbc6-e5e5-4bf1-9eff-25a6b3f46e68", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "C6-O12-Fe [array([0.50285, 0.34998, 0.70169]), array([0.98335333, 0.81953667, 0.36835667]), array([0.6667, 0.3333, 0.9638]), array([0.33336667, 0.66663333, 0.29713333]), array([3.33333333e-05, 9.99966667e-01, 6.30466667e-01]), array([0.63276667, 0.89394333, 0.16943333]), array([0.10605667, 0.73882333, 0.16943333]), array([0.92685333, 0.10902667, 0.53096667]), array([0.89097333, 0.81782667, 0.53096667]), array([0.74737, 0.37844, 0.85468]), array([0.62156, 0.36893, 0.85468]), array([0.63107, 0.25263, 0.85468]), array([0.41403667, 0.71177333, 0.18801333]), array([0.28822667, 0.70226333, 0.18801333]), array([0.29773667, 0.58596333, 0.18801333]), array([0.15453333, 0.16586667, 0.96016667]), array([0.83413333, 0.98866667, 0.96016667]), array([0.01133333, 0.84546667, 0.96016667]), array([0.74359, 0.44512, 0.4096 ])] [1, 8, 9, 10, 11, 51, 52, 73, 74, 75, 76, 77, 78, 79, 80, 153, 154, 155, 156]\n", - "H24-C12-O6 [array([0.65002, 0.15287, 0.70169]), array([0.51379667, 0.83048333, 0.03502333]), array([0.16951667, 0.68331333, 0.03502333]), array([0.31668667, 0.48620333, 0.03502333]), array([0.18046333, 0.16381667, 0.36835667]), array([0.83618333, 0.01664667, 0.36835667]), array([0.51230667, 0.79064333, 0.76740333]), array([0.20935667, 0.72166333, 0.76740333]), array([0.27833667, 0.48769333, 0.76740333]), array([0.17897333, 0.12397667, 0.10073667]), array([0.87602333, 0.05499667, 0.10073667]), array([0.94500333, 0.82102667, 0.10073667]), array([0.75871, 0.49451, 0.50598]), array([0.50549, 0.2642 , 0.50598]), array([0.7358 , 0.24129, 0.50598]), array([0.42537667, 0.82784333, 0.83931333]), array([0.17215667, 0.59753333, 0.83931333]), array([0.40246667, 0.57462333, 0.83931333]), array([0.09204333, 0.16117667, 0.17264667]), array([0.83882333, 0.93086667, 0.17264667]), array([0.06913333, 0.90795667, 0.17264667]), array([0.76046, 0.53529, 0.77498]), array([0.46471, 0.22517, 0.77498]), array([0.77483, 0.23954, 0.77498]), array([0.42712667, 0.86862333, 0.10831333]), array([0.13137667, 0.55850333, 0.10831333]), array([0.44149667, 0.57287333, 0.10831333]), array([0.09379333, 0.20195667, 0.44164667]), array([0.79804333, 0.89183667, 0.44164667]), array([0.10816333, 0.90620667, 0.44164667]), array([0.87556, 0.58795, 0.92401]), array([0.41205, 0.28761, 0.92401]), array([0.71239, 0.12444, 0.92401]), array([0.54222667, 0.92128333, 0.25734333]), array([0.07871667, 0.62094333, 0.25734333]), array([0.37905667, 0.45777333, 0.25734333]), array([0.20889333, 0.25461667, 0.59067667]), array([0.74538333, 0.95427667, 0.59067667]), array([0.04572333, 0.79110667, 0.59067667]), array([0.9661 , 0.56061, 0.8361 ]), array([0.43939, 0.40549, 0.8361 ]), array([0.59451, 0.0339 , 0.8361 ])] [2, 3, 4, 5, 6, 7, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50]\n", - "H2-O [array([0.84564, 0.45731, 0.43407]), array([0.26117667, 0.36723333, 0.16943333]), array([0.92784333, 0.70056667, 0.50276667])] [12, 53, 56]\n", - "H2-O [array([0.54269, 0.38833, 0.43407]), array([0.29943333, 0.22727667, 0.50276667]), array([0.96481, 0.51525, 0.5698 ])] [13, 54, 57]\n", - "H2-O [array([0.61167, 0.15436, 0.43407]), array([0.77272333, 0.07215667, 0.50276667]), array([0.48475, 0.44956, 0.5698 ])] [14, 55, 58]\n", - "H24-C12-O6 [array([0.15141667, 0.78289333, 0.90313333]), array([0.29814333, 0.18191667, 0.23646667]), array([0.88377333, 0.70185667, 0.23646667]), array([0.59352, 0.44236, 0.8643 ]), array([0.51550667, 0.73981333, 0.19763333]), array([0.22430667, 0.48449333, 0.19763333]), array([0.08070333, 0.04510667, 0.52134667]), array([0.96440333, 0.91929667, 0.52134667]), array([0.68569, 0.40804, 0.08222]), array([0.38901667, 0.64764333, 0.41555333]), array([0.05568333, 0.98097667, 0.74888667]), array([0.92529333, 0.94431667, 0.74888667]), array([0.82236, 0.33812, 0.1071 ]), array([0.51576, 0.17764, 0.1071 ]), array([0.32854667, 0.81757333, 0.44043333]), array([0.15569333, 0.00478667, 0.77376667]), array([0.84909333, 0.84430667, 0.77376667]), array([0.58738, 0.54811, 0.9709 ]), array([0.62739667, 0.74595333, 0.30423333]), array([0.11855667, 0.37260333, 0.30423333]), array([0.92071333, 0.21477667, 0.63756667]), array([0.68302, 0.6317 , 0.4667 ]), array([0.34968667, 0.96503333, 0.80003333]), array([0.61534667, 0.65031333, 0.80003333]), array([0.01635333, 0.29836667, 0.13336667]), array([0.28201333, 0.98364667, 0.13336667]), array([0.67593, 0.5951 , 0.2061 ]), array([0.58583667, 0.65740333, 0.53943333]), array([0.07156667, 0.41416333, 0.53943333]), array([0.00926333, 0.26176667, 0.87276667]), array([0.80239, 0.45809, 0.338 ]), array([0.6557 , 0.19761, 0.338 ]), array([0.20857667, 0.67763333, 0.67133333]), array([0.13572333, 0.12475667, 0.00466667]), array([0.7927, 0.4262, 0.2681]), array([0.6335, 0.2073, 0.2681]), array([0.24046667, 0.69983333, 0.60143333]), array([0.12603333, 0.09286667, 0.93476667]), array([0.96683333, 0.87396667, 0.93476667]), array([0.5008, 0.322 , 0.2935]), array([0.48786667, 0.83253333, 0.62683333]), array([0.34466667, 0.51213333, 0.62683333])] [61, 63, 65, 67, 69, 71, 81, 83, 85, 87, 90, 92, 93, 95, 97, 99, 101, 103, 105, 107, 109, 111, 114, 116, 117, 119, 121, 123, 125, 127, 129, 131, 133, 135, 138, 140, 142, 144, 146, 148, 150, 152]\n", - "H24-C12-O6 [array([0.21710667, 0.36852333, 0.90313333]), array([0.81808333, 0.11622667, 0.23646667]), array([0.84884, 0.40648, 0.8643 ]), array([0.55764, 0.15116, 0.8643 ]), array([0.26018667, 0.77569333, 0.19763333]), array([0.18217333, 0.07314667, 0.53096667]), array([0.95489333, 0.03559667, 0.52134667]), array([0.72235, 0.31431, 0.08222]), array([0.59196, 0.27765, 0.08222]), array([0.35235667, 0.74137333, 0.41555333]), array([0.25862667, 0.61098333, 0.41555333]), array([0.01902333, 0.07470667, 0.74888667]), array([0.66188, 0.48424, 0.1071 ]), array([0.48902667, 0.67145333, 0.44043333]), array([0.18242667, 0.51097333, 0.44043333]), array([0.99521333, 0.15090667, 0.77376667]), array([0.96073, 0.41262, 0.9709 ]), array([0.45189, 0.03927, 0.9709 ]), array([0.25404667, 0.88144333, 0.30423333]), array([0.29406333, 0.07928667, 0.63756667]), array([0.78522333, 0.70593667, 0.63756667]), array([0.3683 , 0.05132, 0.4667 ]), array([0.94868, 0.31698, 0.4667 ]), array([0.03496667, 0.38465333, 0.80003333]), array([0.70163333, 0.71798667, 0.13336667]), array([0.91917, 0.32407, 0.2061 ]), array([0.4049 , 0.08083, 0.2061 ]), array([0.34259667, 0.92843333, 0.53943333]), array([0.25250333, 0.99073667, 0.87276667]), array([0.73823333, 0.74749667, 0.87276667]), array([0.54191, 0.3443 , 0.338 ]), array([0.46905667, 0.79142333, 0.67133333]), array([0.32236667, 0.53094333, 0.67133333]), array([0.87524333, 0.01096667, 0.00466667]), array([0.98903333, 0.86427667, 0.00466667]), array([0.5738, 0.3665, 0.2681]), array([0.45936667, 0.75953333, 0.60143333]), array([0.30016667, 0.54063333, 0.60143333]), array([0.90713333, 0.03316667, 0.93476667]), array([0.8212, 0.4992, 0.2935]), array([0.678 , 0.1788, 0.2935]), array([0.16746667, 0.65533333, 0.62683333])] [62, 64, 66, 68, 70, 72, 82, 84, 86, 88, 89, 91, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 113, 115, 118, 120, 122, 124, 126, 128, 130, 132, 134, 136, 137, 139, 141, 143, 145, 147, 149, 151]\n", - "K [array([0.55044, 0.03519, 0.5698 ])] [59]\n", - "K [array([0.63147667, 0.84858333, 0.90313333])] [60]\n", - "K [array([0.84713, 0.49715, 0.70169])] [0]\n" - ] - } - ], - "source": [ - "for ref in newcell.refmoleclist:\n", - " ref_indices= ref.get_parent_indices(\"cell\")\n", - " print(ref.formula, ref.frac_coord, ref_indices)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "21443b69-07b9-4f8c-86de-ce4524f419ef", - "metadata": {}, - "outputs": [], - "source": [ - "molecules = []\n", - "filtered_fragments = []\n", - "hydrogens = []\n", - "found_list = []\n", - "for frag in fragments:\n", - " # print(frag.formula, frag.get_parent_indices(\"cell\"), frag.frac_coord)\n", - " found = False\n", - " for idx, ref in enumerate(newcell.refmoleclist):\n", - " if (ref.natoms == frag.natoms) & (ref.formula == frag.formula) & (sorted(ref.get_parent_indices(\"cell\")) == sorted(frag.get_parent_indices(\"cell\"))):\n", - " print(frag.formula, frag.get_parent_indices(\"cell\"), frag.frac_coord, f\"equivalent to Ref {idx} {ref.formula}\")\n", - " molecules.append(frag)\n", - " found = True\n", - " found_list.append(idx)\n", - " if found == False:\n", - " if frag.natoms == 1 and frag.labels == [\"H\"] :\n", - " hydrogens.append(frag)\n", - " else :\n", - " filtered_fragments.append(frag)" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "cell2mol", - "language": "python", - "name": "cell2mol" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.10.6" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/cell2mol/test/YETBUV/Ref_Cell_YETBUV.cell b/cell2mol/test/YETBUV/Ref_Cell_YETBUV.cell deleted file mode 100644 index d489548d2..000000000 Binary files a/cell2mol/test/YETBUV/Ref_Cell_YETBUV.cell and /dev/null differ diff --git a/cell2mol/test/YETBUV/YETBUV.cif b/cell2mol/test/YETBUV/YETBUV.cif deleted file mode 100644 index aa906538b..000000000 --- a/cell2mol/test/YETBUV/YETBUV.cif +++ /dev/null @@ -1,224 +0,0 @@ - -####################################################################### -# -# Cambridge Crystallographic Data Centre -# CCDC -# -####################################################################### -# -# If this CIF has been generated from an entry in the Cambridge -# Structural Database, then it will include bibliographic, chemical, -# crystal, experimental, refinement or atomic coordinate data resulting -# from the CCDC's data processing and validation procedures. -# -####################################################################### - -data_CSD_CIF_YETBUV -_audit_creation_date 2007-04-11 -_audit_creation_method CSD-ConQuest-V1 -_database_code_CSD YETBUV -_database_code_depnum_ccdc_archive 'CCDC 618532' -_chemical_formula_sum 'C14 H36 Cl3 Co1 O4 P4' -_chemical_formula_moiety -; -C14 H36 Cl2 Co1 P4 1+,Cl1 O4 1- -; -_journal_coden_Cambridge 222 -_journal_year 2007 -_journal_page_first 308 -_journal_name_full 'Dalton Trans. ' -loop_ -_publ_author_name -"T.Suzuki" -"K.Fujiiwara" -"H.D.Takagi" -"K.Kashiwabara" -_chemical_name_systematic -; -trans-Dichloro-bis(1,3-bis(dimethylphosphino)propane-P,P')-cobalt(iii) -perchlorate -; -_cell_volume 2382.832 -_exptl_crystal_colour 'green' -_exptl_crystal_density_diffrn 1.554 -_exptl_crystal_description 'block' -_exptl_crystal_preparation 'acetonitrile/diethyl ether' -_diffrn_ambient_temperature 296 -#These two values have been output from a single CSD field. -_refine_ls_R_factor_gt 0.0427 -_refine_ls_wR_factor_gt 0.0427 -_symmetry_cell_setting tetragonal -_symmetry_space_group_name_H-M 'P 42/n b c' -_symmetry_Int_Tables_number 133 -loop_ -_symmetry_equiv_pos_site_id -_symmetry_equiv_pos_as_xyz -1 x,y,z -2 1/2-y,x,1/2+z -3 y,1/2-x,1/2+z -4 y,x,1/2-z -5 x,1/2-y,-z -6 1/2-y,1/2-x,1/2-z -7 1/2-x,y,-z -8 1/2-x,1/2-y,z -9 -x,-y,-z -10 -1/2+y,-x,-1/2-z -11 -y,-1/2+x,-1/2-z -12 -y,-x,-1/2+z -13 -x,-1/2+y,z -14 -1/2+y,-1/2+x,-1/2+z -15 -1/2+x,-y,z -16 -1/2+x,-1/2+y,-z -_cell_length_a 11.4228(15) -_cell_length_b 11.4228(15) -_cell_length_c 18.262(3) -_cell_angle_alpha 90 -_cell_angle_beta 90 -_cell_angle_gamma 90 -_cell_formula_units_Z 4 -loop_ -_atom_type_symbol -_atom_type_radius_bond -C 0.68 -H 0.23 -Cl 0.99 -Co 1.33 -O 0.68 -P 1.05 -loop_ -_atom_site_label -_atom_site_type_symbol -_atom_site_fract_x -_atom_site_fract_y -_atom_site_fract_z -Co1 Co 0.75000 0.25000 0.50000 -Cl1 Cl 0.94746(7) 0.25000 0.50000 -Cl2 Cl 0.25000 0.25000 0.25000 -P1 P 0.76355(5) 0.10723(6) 0.41267(4) -O1 O 0.1566(7) 0.2452(7) 0.2917(5) -C1 C 0.8621(3) 0.1351(3) 0.33638(17) -H1 H 0.93600 0.16250 0.35470 -H2 H 0.82860 0.19350 0.30490 -H3 H 0.87380 0.06410 0.30920 -C2 C 0.6304(3) 0.0570(3) 0.36794(18) -H4 H 0.58980 0.12270 0.34730 -H5 H 0.58100 0.01890 0.40320 -H6 H 0.65020 0.00270 0.32970 -C3 C 0.8280(3) -0.0273(2) 0.44813(17) -H7 H 0.84940 -0.07650 0.40690 -H8 H 0.89950 -0.00740 0.47390 -C4 C 0.75000 -0.0991(3) 0.50000 -H9 H 0.70010 -0.14940 0.47070 -H10 H 0.79990 -0.14940 0.52930 -Cl1F Cl 0.55254(7) 0.25000 0.50000 -P1F P 0.73645(5) 0.10723(6) 0.58733(4) -P1D P 0.76355(5) 0.39277(6) 0.58733(4) -P1G P 0.73645(5) 0.39277(6) 0.41267(4) -O1C O 0.2452(7) 0.1566(7) 0.2083(5) -O1E O 0.2548(7) 0.3434(7) 0.2083(5) -O1G O 0.3434(7) 0.2548(7) 0.2917(5) -C1D C 0.8621(3) 0.3649(3) 0.66362(17) -C1G C 0.6379(3) 0.3649(3) 0.33638(17) -C1F C 0.6379(3) 0.1351(3) 0.66362(17) -H1D H 0.93600 0.33750 0.64530 -H1G H 0.56400 0.33750 0.35470 -H1F H 0.56400 0.16250 0.64530 -H2D H 0.82860 0.30650 0.69510 -H2G H 0.67140 0.30650 0.30490 -H2F H 0.67140 0.19350 0.69510 -H3D H 0.87380 0.43590 0.69080 -H3G H 0.62620 0.43590 0.30920 -H3F H 0.62620 0.06410 0.69080 -C2D C 0.6304(3) 0.4430(3) 0.63206(18) -C2G C 0.8696(3) 0.4430(3) 0.36794(18) -C2F C 0.8696(3) 0.0570(3) 0.63206(18) -H4D H 0.58980 0.37730 0.65270 -H4G H 0.91020 0.37730 0.34730 -H4F H 0.91020 0.12270 0.65270 -H5D H 0.58100 0.48110 0.59680 -H5G H 0.91900 0.48110 0.40320 -H5F H 0.91900 0.01890 0.59680 -H6D H 0.65020 0.49730 0.67030 -H6G H 0.84980 0.49730 0.32970 -H6F H 0.84980 0.00270 0.67030 -C3F C 0.6720(3) -0.0273(2) 0.55187(17) -C3D C 0.8280(3) 0.5273(2) 0.55187(17) -C3G C 0.6720(3) 0.5273(2) 0.44813(17) -H7D H 0.84940 0.57650 0.59310 -H7G H 0.65060 0.57650 0.40690 -H7F H 0.65060 -0.07650 0.59310 -H8D H 0.89950 0.50740 0.52610 -H8G H 0.60050 0.50740 0.47390 -H8F H 0.60050 -0.00740 0.52610 -C4D C 0.75000 0.5991(3) 0.50000 -H9D H 0.70010 0.64940 0.52930 -H9G H 0.79990 0.64940 0.47070 -loop_ -_geom_bond_atom_site_label_1 -_geom_bond_atom_site_label_2 -_geom_bond_distance -_geom_bond_site_symmetry_1 -_geom_bond_site_symmetry_2 -Co1 Cl1 2.256 1_555 1_555 -Cl2 O1 1.312 1_555 1_555 -P1 Co1 2.286 1_555 1_555 -C1 P1 1.819 1_555 1_555 -H1 C1 0.960 1_555 1_555 -H2 C1 0.960 1_555 1_555 -H3 C1 0.960 1_555 1_555 -C2 P1 1.819 1_555 1_555 -H4 C2 0.959 1_555 1_555 -H5 C2 0.960 1_555 1_555 -H6 C2 0.961 1_555 1_555 -C3 P1 1.823 1_555 1_555 -H7 C3 0.971 1_555 1_555 -H8 C3 0.970 1_555 1_555 -C4 C3 1.537 1_555 1_555 -H9 C4 0.970 1_555 1_555 -H10 C4 0.970 1_555 1_555 -Cl1F Co1 2.256 1_555 1_555 -P1F Co1 2.286 1_555 1_555 -P1D Co1 2.286 1_555 1_555 -P1G Co1 2.286 1_555 1_555 -O1C Cl2 1.312 1_555 1_555 -O1E Cl2 1.312 1_555 1_555 -O1G Cl2 1.312 1_555 1_555 -C1D P1D 1.819 1_555 1_555 -C1G P1G 1.819 1_555 1_555 -C1F P1F 1.819 1_555 1_555 -H1D C1D 0.960 1_555 1_555 -H1G C1G 0.960 1_555 1_555 -H1F C1F 0.960 1_555 1_555 -H2D C1D 0.960 1_555 1_555 -H2G C1G 0.960 1_555 1_555 -H2F C1F 0.960 1_555 1_555 -H3D C1D 0.960 1_555 1_555 -H3G C1G 0.960 1_555 1_555 -H3F C1F 0.960 1_555 1_555 -C2D P1D 1.819 1_555 1_555 -C2G P1G 1.819 1_555 1_555 -C2F P1F 1.819 1_555 1_555 -H4D C2D 0.959 1_555 1_555 -H4G C2G 0.959 1_555 1_555 -H4F C2F 0.959 1_555 1_555 -H5D C2D 0.960 1_555 1_555 -H5G C2G 0.960 1_555 1_555 -H5F C2F 0.960 1_555 1_555 -H6D C2D 0.961 1_555 1_555 -H6G C2G 0.961 1_555 1_555 -H6F C2F 0.961 1_555 1_555 -C3F C4 1.537 1_555 1_555 -C3D P1D 1.823 1_555 1_555 -C3G P1G 1.823 1_555 1_555 -H7D C3D 0.971 1_555 1_555 -H7G C3G 0.971 1_555 1_555 -H7F C3F 0.971 1_555 1_555 -H8D C3D 0.970 1_555 1_555 -H8G C3G 0.970 1_555 1_555 -H8F C3F 0.970 1_555 1_555 -C4D C3D 1.537 1_555 1_555 -H9D C4D 0.970 1_555 1_555 -H9G C4D 0.970 1_555 1_555 -P1F C3F 1.823 1_555 1_555 -C3G C4D 1.537 1_555 1_555 -#END diff --git a/cell2mol/test/YETBUV/YETBUV.info b/cell2mol/test/YETBUV/YETBUV.info deleted file mode 100644 index af25cf66a..000000000 --- a/cell2mol/test/YETBUV/YETBUV.info +++ /dev/null @@ -1,1077 +0,0 @@ -CIF2CELL 2.0.0 -2024-04-25 15:45 -Output for None (trans-Dichloro-bis(1,3-bis(dimethylphosphino)propane-P,P')-cobalt(iii) -perchlorate) -CIF file exported from Cambridge Structural Database. -Database reference code: YETBUV. - BIBLIOGRAPHIC INFORMATION -T.Suzuki et al., Dalton Trans. , 308- (2007) - INPUT CELL INFORMATION -Symmetry information: -Tetragonal crystal system. -Space group number : 133 -Hall symbol : P 4n 2c -1n -Hermann-Mauguin symbol : P42/nbc - -Lattice parameters: - a b c - 11.4228000 11.4228000 18.2620000 - alpha beta gamma - 90.0000000 90.0000000 90.0000000 -Representative sites : -Atom x y z -Co 0.7500000 0.2500000 0.5000000 -Cl 0.9474600 0.2500000 0.5000000 -Cl 0.2500000 0.2500000 0.2500000 -P 0.7635500 0.1072300 0.4126700 -O 0.1566000 0.2452000 0.2917000 -C 0.8621000 0.1351000 0.3363800 -H 0.9360000 0.1625000 0.3547000 -H 0.8286000 0.1935000 0.3049000 -H 0.8738000 0.0641000 0.3092000 -C 0.6304000 0.0570000 0.3679400 -H 0.5898000 0.1227000 0.3473000 -H 0.5810000 0.0189000 0.4032000 -H 0.6502000 0.0027000 0.3297000 -C 0.8280000 -0.0273000 0.4481300 -H 0.8494000 -0.0765000 0.4069000 -H 0.8995000 -0.0074000 0.4739000 -C 0.7500000 -0.0991000 0.5000000 -H 0.7001000 -0.1494000 0.4707000 -H 0.7999000 -0.1494000 0.5293000 -Cl 0.5525400 0.2500000 0.5000000 -P 0.7364500 0.1072300 0.5873300 -P 0.7635500 0.3927700 0.5873300 -P 0.7364500 0.3927700 0.4126700 -O 0.2452000 0.1566000 0.2083000 -O 0.2548000 0.3434000 0.2083000 -O 0.3434000 0.2548000 0.2917000 -C 0.8621000 0.3649000 0.6636200 -C 0.6379000 0.3649000 0.3363800 -C 0.6379000 0.1351000 0.6636200 -H 0.9360000 0.3375000 0.6453000 -H 0.5640000 0.3375000 0.3547000 -H 0.5640000 0.1625000 0.6453000 -H 0.8286000 0.3065000 0.6951000 -H 0.6714000 0.3065000 0.3049000 -H 0.6714000 0.1935000 0.6951000 -H 0.8738000 0.4359000 0.6908000 -H 0.6262000 0.4359000 0.3092000 -H 0.6262000 0.0641000 0.6908000 -C 0.6304000 0.4430000 0.6320600 -C 0.8696000 0.4430000 0.3679400 -C 0.8696000 0.0570000 0.6320600 -H 0.5898000 0.3773000 0.6527000 -H 0.9102000 0.3773000 0.3473000 -H 0.9102000 0.1227000 0.6527000 -H 0.5810000 0.4811000 0.5968000 -H 0.9190000 0.4811000 0.4032000 -H 0.9190000 0.0189000 0.5968000 -H 0.6502000 0.4973000 0.6703000 -H 0.8498000 0.4973000 0.3297000 -H 0.8498000 0.0027000 0.6703000 -C 0.6720000 -0.0273000 0.5518700 -C 0.8280000 0.5273000 0.5518700 -C 0.6720000 0.5273000 0.4481300 -H 0.8494000 0.5765000 0.5931000 -H 0.6506000 0.5765000 0.4069000 -H 0.6506000 -0.0765000 0.5931000 -H 0.8995000 0.5074000 0.5261000 -H 0.6005000 0.5074000 0.4739000 -H 0.6005000 -0.0074000 0.5261000 -C 0.7500000 0.5991000 0.5000000 -H 0.7001000 0.6494000 0.5293000 -H 0.7999000 0.6494000 0.4707000 - - OUTPUT CELL INFORMATION -Symmetry information: -Tetragonal crystal system. -Space group number : 133 -Hall symbol : P 4n 2c -1n -Hermann-Mauguin symbol : P42/nbc - -Bravais lattice vectors : - 11.4228000 0.0000000 0.0000000 - 0.0000000 11.4228000 0.0000000 - 0.0000000 0.0000000 18.2620000 -All sites, (cartesian coordinates): -Atom x y z -Co 8.5671000 2.8557000 9.1310000 -Co 2.8557000 2.8557000 0.0000000 -Co 8.5671000 2.8557000 0.0000000 -Co 8.5671000 8.5671000 0.0000000 -Co 2.8557000 8.5671000 9.1310000 -Co 2.8557000 2.8557000 9.1310000 -Co 8.5671000 8.5671000 9.1310000 -Co 2.8557000 8.5671000 0.0000000 -Cl 10.8226461 2.8557000 9.1310000 -Cl 0.6001539 2.8557000 0.0000000 -Cl 8.5671000 0.6001539 0.0000000 -Cl 6.3115539 2.8557000 0.0000000 -Cl 8.5671000 6.3115539 0.0000000 -Cl 0.6001539 8.5671000 9.1310000 -Cl 2.8557000 0.6001539 9.1310000 -Cl 2.8557000 6.3115539 9.1310000 -Cl 6.3115539 8.5671000 9.1310000 -Cl 8.5671000 10.8226461 9.1310000 -Cl 10.8226461 8.5671000 0.0000000 -Cl 2.8557000 10.8226461 0.0000000 -Cl 2.8557000 5.1112461 0.0000000 -Cl 5.1112461 8.5671000 0.0000000 -Cl 8.5671000 5.1112461 9.1310000 -Cl 5.1112461 2.8557000 9.1310000 -Cl 2.8557000 2.8557000 4.5655000 -Cl 8.5671000 2.8557000 4.5655000 -Cl 8.5671000 8.5671000 13.6965000 -Cl 8.5671000 2.8557000 13.6965000 -Cl 8.5671000 8.5671000 4.5655000 -Cl 2.8557000 8.5671000 13.6965000 -Cl 2.8557000 2.8557000 13.6965000 -Cl 2.8557000 8.5671000 4.5655000 -P 8.7218789 1.2248668 7.5361795 -P 2.7009211 1.2248668 1.5948205 -P 10.1979332 2.7009211 16.6671795 -P 8.4123211 4.4865332 1.5948205 -P 6.9362668 8.4123211 16.6671795 -P 2.7009211 10.1979332 7.5361795 -P 1.2248668 2.7009211 10.7258205 -P 4.4865332 8.4123211 10.7258205 -P 8.4123211 6.9362668 7.5361795 -P 10.1979332 8.7218789 10.7258205 -P 8.7218789 10.1979332 1.5948205 -P 1.2248668 8.7218789 16.6671795 -P 4.4865332 3.0104789 16.6671795 -P 3.0104789 6.9362668 1.5948205 -P 6.9362668 3.0104789 10.7258205 -P 3.0104789 4.4865332 7.5361795 -O 1.7888105 2.8008706 5.3270254 -O 9.6339895 2.8008706 3.8039746 -O 8.6219294 9.6339895 14.4580254 -O 3.9225895 2.9105294 3.8039746 -O 8.5122706 3.9225895 14.4580254 -O 9.6339895 8.6219294 5.3270254 -O 2.8008706 9.6339895 12.9349746 -O 2.9105294 3.9225895 12.9349746 -O 3.9225895 8.5122706 5.3270254 -O 8.6219294 1.7888105 12.9349746 -O 1.7888105 8.6219294 3.8039746 -O 2.8008706 1.7888105 14.4580254 -O 2.9105294 7.5002105 14.4580254 -O 7.5002105 8.5122706 3.8039746 -O 8.5122706 7.5002105 12.9349746 -O 7.5002105 2.9105294 5.3270254 -C 9.8475959 1.5432203 6.1429716 -C 1.5752041 1.5432203 2.9880284 -C 9.8795797 1.5752041 15.2739716 -C 7.2866041 4.1681797 2.9880284 -C 7.2546203 7.2866041 15.2739716 -C 1.5752041 9.8795797 6.1429716 -C 1.5432203 1.5752041 12.1190284 -C 4.1681797 7.2866041 12.1190284 -C 7.2866041 7.2546203 6.1429716 -C 9.8795797 9.8475959 12.1190284 -C 9.8475959 9.8795797 2.9880284 -C 1.5432203 9.8475959 15.2739716 -C 4.1681797 4.1361959 15.2739716 -C 4.1361959 7.2546203 2.9880284 -C 7.2546203 4.1361959 12.1190284 -C 4.1361959 4.1681797 6.1429716 -H 10.6917408 1.8562050 6.4775314 -H 0.7310592 1.8562050 2.6534686 -H 9.5665950 0.7310592 15.6085314 -H 6.4424592 3.8551950 2.6534686 -H 7.5676050 6.4424592 15.6085314 -H 0.7310592 9.5665950 6.4775314 -H 1.8562050 0.7310592 11.7844686 -H 3.8551950 6.4424592 11.7844686 -H 6.4424592 7.5676050 6.4775314 -H 9.5665950 10.6917408 11.7844686 -H 10.6917408 9.5665950 2.6534686 -H 1.8562050 10.6917408 15.6085314 -H 3.8551950 4.9803408 15.6085314 -H 4.9803408 7.5676050 2.6534686 -H 7.5676050 4.9803408 11.7844686 -H 4.9803408 3.8551950 6.4775314 -H 9.4649321 2.2103118 5.5680838 -H 1.9578679 2.2103118 3.5629162 -H 9.2124882 1.9578679 14.6990838 -H 7.6692679 3.5010882 3.5629162 -H 7.9217118 7.6692679 14.6990838 -H 1.9578679 9.2124882 5.5680838 -H 2.2103118 1.9578679 12.6939162 -H 3.5010882 7.6692679 12.6939162 -H 7.6692679 7.9217118 5.5680838 -H 9.2124882 9.4649321 12.6939162 -H 9.4649321 9.2124882 3.5629162 -H 2.2103118 9.4649321 14.6990838 -H 3.5010882 3.7535321 14.6990838 -H 3.7535321 7.9217118 3.5629162 -H 7.9217118 3.7535321 12.6939162 -H 3.7535321 3.5010882 5.5680838 -H 9.9812426 0.7322015 5.6466104 -H 1.4415574 0.7322015 3.4843896 -H 10.6905985 1.4415574 14.7776104 -H 7.1529574 4.9791985 3.4843896 -H 6.4436015 7.1529574 14.7776104 -H 1.4415574 10.6905985 5.6466104 -H 0.7322015 1.4415574 12.6153896 -H 4.9791985 7.1529574 12.6153896 -H 7.1529574 6.4436015 5.6466104 -H 10.6905985 9.9812426 12.6153896 -H 9.9812426 10.6905985 3.4843896 -H 0.7322015 9.9812426 14.7776104 -H 4.9791985 4.2698426 14.7776104 -H 4.2698426 6.4436015 3.4843896 -H 6.4436015 4.2698426 12.6153896 -H 4.2698426 4.9791985 5.6466104 -C 7.2009331 0.6510996 6.7193203 -C 4.2218669 0.6510996 2.4116797 -C 10.7717004 4.2218669 15.8503203 -C 9.9332669 5.0603004 2.4116797 -C 6.3624996 9.9332669 15.8503203 -C 4.2218669 10.7717004 6.7193203 -C 0.6510996 4.2218669 11.5426797 -C 5.0603004 9.9332669 11.5426797 -C 9.9332669 6.3624996 6.7193203 -C 10.7717004 7.2009331 11.5426797 -C 7.2009331 10.7717004 2.4116797 -C 0.6510996 7.2009331 15.8503203 -C 5.0603004 1.4895331 15.8503203 -C 1.4895331 6.3624996 2.4116797 -C 6.3624996 1.4895331 11.5426797 -C 1.4895331 5.0603004 6.7193203 -H 6.7371674 1.4015776 6.3423926 -H 4.6856326 1.4015776 2.7886074 -H 10.0212224 4.6856326 15.4733926 -H 10.3970326 4.3098224 2.7886074 -H 7.1129776 10.3970326 15.4733926 -H 4.6856326 10.0212224 6.3423926 -H 1.4015776 4.6856326 11.9196074 -H 4.3098224 10.3970326 11.9196074 -H 10.3970326 7.1129776 6.3423926 -H 10.0212224 6.7371674 11.9196074 -H 6.7371674 10.0212224 2.7886074 -H 1.4015776 6.7371674 15.4733926 -H 4.3098224 1.0257674 15.4733926 -H 1.0257674 7.1129776 2.7886074 -H 7.1129776 1.0257674 11.9196074 -H 1.0257674 4.3098224 6.3423926 -H 6.6366468 0.2158909 7.3632384 -H 4.7861532 0.2158909 1.7677616 -H 11.2069091 4.7861532 16.4942384 -H 10.4975532 5.4955091 1.7677616 -H 5.9272909 10.4975532 16.4942384 -H 4.7861532 11.2069091 7.3632384 -H 0.2158909 4.7861532 10.8987616 -H 5.4955091 10.4975532 10.8987616 -H 10.4975532 5.9272909 7.3632384 -H 11.2069091 6.6366468 10.8987616 -H 6.6366468 11.2069091 1.7677616 -H 0.2158909 6.6366468 16.4942384 -H 5.4955091 0.9252468 16.4942384 -H 0.9252468 5.9272909 1.7677616 -H 5.9272909 0.9252468 10.8987616 -H 0.9252468 5.4955091 7.3632384 -H 7.4271046 0.0308416 6.0209814 -H 3.9956954 0.0308416 3.1100186 -H 11.3919584 3.9956954 15.1519814 -H 9.7070954 5.6805584 3.1100186 -H 5.7422416 9.7070954 15.1519814 -H 3.9956954 11.3919584 6.0209814 -H 0.0308416 3.9956954 12.2410186 -H 5.6805584 9.7070954 12.2410186 -H 9.7070954 5.7422416 6.0209814 -H 11.3919584 7.4271046 12.2410186 -H 7.4271046 11.3919584 3.1100186 -H 0.0308416 7.4271046 15.1519814 -H 5.6805584 1.7157046 15.1519814 -H 1.7157046 5.7422416 3.1100186 -H 5.7422416 1.7157046 12.2410186 -H 1.7157046 5.6805584 6.0209814 -C 9.4580784 11.1109576 8.1837501 -C 1.9647216 11.1109576 0.9472499 -C 0.3118424 1.9647216 17.3147501 -C 7.6761216 6.0232424 0.9472499 -C 5.3995576 7.6761216 17.3147501 -C 1.9647216 0.3118424 8.1837501 -C 11.1109576 1.9647216 10.0782499 -C 6.0232424 7.6761216 10.0782499 -C 7.6761216 5.3995576 8.1837501 -C 0.3118424 9.4580784 10.0782499 -C 9.4580784 0.3118424 0.9472499 -C 11.1109576 9.4580784 17.3147501 -C 6.0232424 3.7466784 17.3147501 -C 3.7466784 5.3995576 0.9472499 -C 5.3995576 3.7466784 10.0782499 -C 3.7466784 6.0232424 8.1837501 -H 9.7025263 10.5489558 7.4308078 -H 1.7202737 10.5489558 1.7001922 -H 0.8738442 1.7202737 16.5618078 -H 7.4316737 6.5852442 1.7001922 -H 4.8375558 7.4316737 16.5618078 -H 1.7202737 0.8738442 7.4308078 -H 10.5489558 1.7202737 10.8311922 -H 6.5852442 7.4316737 10.8311922 -H 7.4316737 4.8375558 7.4308078 -H 0.8738442 9.7025263 10.8311922 -H 9.7025263 0.8738442 1.7001922 -H 10.5489558 9.7025263 16.5618078 -H 6.5852442 3.9911263 16.5618078 -H 3.9911263 4.8375558 1.7001922 -H 4.8375558 3.9911263 10.8311922 -H 3.9911263 6.5852442 7.4308078 -H 10.2748086 11.3382713 8.6543618 -H 1.1479914 11.3382713 0.4766382 -H 0.0845287 1.1479914 17.7853618 -H 6.8593914 5.7959287 0.4766382 -H 5.6268713 6.8593914 17.7853618 -H 1.1479914 0.0845287 8.6543618 -H 11.3382713 1.1479914 9.6076382 -H 5.7959287 6.8593914 9.6076382 -H 6.8593914 5.6268713 8.6543618 -H 0.0845287 10.2748086 9.6076382 -H 10.2748086 0.0845287 0.4766382 -H 11.3382713 10.2748086 17.7853618 -H 5.7959287 4.5634086 17.7853618 -H 4.5634086 5.6268713 0.4766382 -H 5.6268713 4.5634086 9.6076382 -H 4.5634086 5.7959287 8.6543618 -C 8.5671000 10.2908005 9.1310000 -C 2.8557000 10.2908005 0.0000000 -C 1.1319995 2.8557000 0.0000000 -C 8.5671000 6.8433995 0.0000000 -C 4.5794005 8.5671000 0.0000000 -C 2.8557000 1.1319995 9.1310000 -C 10.2908005 2.8557000 9.1310000 -C 6.8433995 8.5671000 9.1310000 -C 8.5671000 4.5794005 9.1310000 -C 1.1319995 8.5671000 9.1310000 -C 8.5671000 1.1319995 0.0000000 -C 10.2908005 8.5671000 0.0000000 -C 6.8433995 2.8557000 0.0000000 -C 2.8557000 4.5794005 0.0000000 -C 4.5794005 2.8557000 9.1310000 -C 2.8557000 6.8433995 9.1310000 -H 7.9971023 9.7162337 8.5959234 -H 3.4256977 9.7162337 0.5350766 -H 1.7065663 3.4256977 17.7269234 -H 9.1370977 7.4179663 0.5350766 -H 4.0048337 9.1370977 17.7269234 -H 3.4256977 1.7065663 8.5959234 -H 9.7162337 3.4256977 9.6660766 -H 7.4179663 9.1370977 9.6660766 -H 9.1370977 4.0048337 8.5959234 -H 1.7065663 7.9971023 9.6660766 -H 7.9971023 1.7065663 0.5350766 -H 9.7162337 7.9971023 17.7269234 -H 7.4179663 2.2857023 17.7269234 -H 2.2857023 4.0048337 0.5350766 -H 4.0048337 2.2857023 9.6660766 -H 2.2857023 7.4179663 8.5959234 -H 9.1370977 9.7162337 9.6660766 -H 2.2857023 9.7162337 17.7269234 -H 1.7065663 2.2857023 0.5350766 -H 7.9971023 7.4179663 17.7269234 -H 4.0048337 7.9971023 0.5350766 -H 2.2857023 1.7065663 9.6660766 -H 9.7162337 2.2857023 8.5959234 -H 7.4179663 7.9971023 8.5959234 -H 7.9971023 4.0048337 9.6660766 -H 1.7065663 9.1370977 8.5959234 -H 9.1370977 1.7065663 17.7269234 -H 9.7162337 9.1370977 0.5350766 -H 7.4179663 3.4256977 0.5350766 -H 3.4256977 4.0048337 17.7269234 -H 4.0048337 3.4256977 8.5959234 -H 3.4256977 7.4179663 9.6660766 -Cl 6.3115539 2.8557000 9.1310000 -Cl 5.1112461 2.8557000 0.0000000 -Cl 8.5671000 5.1112461 0.0000000 -Cl 10.8226461 2.8557000 0.0000000 -Cl 8.5671000 10.8226461 0.0000000 -Cl 5.1112461 8.5671000 9.1310000 -Cl 2.8557000 5.1112461 9.1310000 -Cl 2.8557000 10.8226461 9.1310000 -Cl 10.8226461 8.5671000 9.1310000 -Cl 8.5671000 6.3115539 9.1310000 -Cl 6.3115539 8.5671000 0.0000000 -Cl 2.8557000 6.3115539 0.0000000 -Cl 2.8557000 0.6001539 0.0000000 -Cl 0.6001539 8.5671000 0.0000000 -Cl 8.5671000 0.6001539 9.1310000 -Cl 0.6001539 2.8557000 9.1310000 -P 8.4123211 1.2248668 10.7258205 -P 3.0104789 1.2248668 16.6671795 -P 10.1979332 3.0104789 1.5948205 -P 8.7218789 4.4865332 16.6671795 -P 6.9362668 8.7218789 1.5948205 -P 3.0104789 10.1979332 10.7258205 -P 1.2248668 3.0104789 7.5361795 -P 4.4865332 8.7218789 7.5361795 -P 8.7218789 6.9362668 10.7258205 -P 10.1979332 8.4123211 7.5361795 -P 8.4123211 10.1979332 16.6671795 -P 1.2248668 8.4123211 1.5948205 -P 4.4865332 2.7009211 1.5948205 -P 2.7009211 6.9362668 16.6671795 -P 6.9362668 2.7009211 7.5361795 -P 2.7009211 4.4865332 10.7258205 -P 8.7218789 4.4865332 10.7258205 -P 2.7009211 4.4865332 16.6671795 -P 6.9362668 2.7009211 1.5948205 -P 8.4123211 1.2248668 16.6671795 -P 10.1979332 8.4123211 1.5948205 -P 2.7009211 6.9362668 10.7258205 -P 4.4865332 2.7009211 7.5361795 -P 1.2248668 8.4123211 7.5361795 -P 8.4123211 10.1979332 10.7258205 -P 6.9362668 8.7218789 7.5361795 -P 8.7218789 6.9362668 16.6671795 -P 4.4865332 8.7218789 1.5948205 -P 1.2248668 3.0104789 1.5948205 -P 3.0104789 10.1979332 16.6671795 -P 10.1979332 3.0104789 7.5361795 -P 3.0104789 1.2248668 10.7258205 -P 8.4123211 4.4865332 7.5361795 -P 3.0104789 4.4865332 1.5948205 -P 6.9362668 3.0104789 16.6671795 -P 8.7218789 1.2248668 1.5948205 -P 10.1979332 8.7218789 16.6671795 -P 3.0104789 6.9362668 7.5361795 -P 4.4865332 3.0104789 10.7258205 -P 1.2248668 8.7218789 10.7258205 -P 8.7218789 10.1979332 7.5361795 -P 6.9362668 8.4123211 10.7258205 -P 8.4123211 6.9362668 1.5948205 -P 4.4865332 8.4123211 16.6671795 -P 1.2248668 2.7009211 16.6671795 -P 2.7009211 10.1979332 1.5948205 -P 10.1979332 2.7009211 10.7258205 -P 2.7009211 1.2248668 7.5361795 -O 2.8008706 1.7888105 3.8039746 -O 8.6219294 1.7888105 5.3270254 -O 9.6339895 8.6219294 12.9349746 -O 2.9105294 3.9225895 5.3270254 -O 7.5002105 2.9105294 12.9349746 -O 8.6219294 9.6339895 3.8039746 -O 1.7888105 8.6219294 14.4580254 -O 3.9225895 2.9105294 14.4580254 -O 2.9105294 7.5002105 3.8039746 -O 9.6339895 2.8008706 14.4580254 -O 2.8008706 9.6339895 5.3270254 -O 1.7888105 2.8008706 12.9349746 -O 3.9225895 8.5122706 12.9349746 -O 8.5122706 7.5002105 5.3270254 -O 7.5002105 8.5122706 14.4580254 -O 8.5122706 3.9225895 3.8039746 -O 2.9105294 3.9225895 3.8039746 -O 8.5122706 3.9225895 5.3270254 -O 7.5002105 8.5122706 12.9349746 -O 2.8008706 1.7888105 5.3270254 -O 9.6339895 2.8008706 12.9349746 -O 8.5122706 7.5002105 3.8039746 -O 3.9225895 8.5122706 14.4580254 -O 1.7888105 2.8008706 14.4580254 -O 2.8008706 9.6339895 3.8039746 -O 7.5002105 2.9105294 14.4580254 -O 2.9105294 7.5002105 5.3270254 -O 3.9225895 2.9105294 12.9349746 -O 1.7888105 8.6219294 12.9349746 -O 8.6219294 9.6339895 5.3270254 -O 9.6339895 8.6219294 14.4580254 -O 8.6219294 1.7888105 3.8039746 -O 3.9225895 2.9105294 5.3270254 -O 7.5002105 2.9105294 3.8039746 -O 8.5122706 7.5002105 14.4580254 -O 1.7888105 2.8008706 3.8039746 -O 8.6219294 1.7888105 14.4580254 -O 7.5002105 8.5122706 5.3270254 -O 2.9105294 7.5002105 12.9349746 -O 2.8008706 1.7888105 12.9349746 -O 1.7888105 8.6219294 5.3270254 -O 8.5122706 3.9225895 12.9349746 -O 3.9225895 8.5122706 3.8039746 -O 2.9105294 3.9225895 14.4580254 -O 2.8008706 9.6339895 14.4580254 -O 9.6339895 8.6219294 3.8039746 -O 8.6219294 9.6339895 12.9349746 -O 9.6339895 2.8008706 5.3270254 -C 9.8475959 4.1681797 12.1190284 -C 1.5752041 4.1681797 15.2739716 -C 7.2546203 1.5752041 2.9880284 -C 7.2866041 1.5432203 15.2739716 -C 9.8795797 7.2866041 2.9880284 -C 1.5752041 7.2546203 12.1190284 -C 4.1681797 1.5752041 6.1429716 -C 1.5432203 7.2866041 6.1429716 -C 7.2866041 9.8795797 12.1190284 -C 7.2546203 9.8475959 6.1429716 -C 9.8475959 7.2546203 15.2739716 -C 4.1681797 9.8475959 2.9880284 -C 1.5432203 4.1361959 2.9880284 -C 4.1361959 9.8795797 15.2739716 -C 9.8795797 4.1361959 6.1429716 -C 4.1361959 1.5432203 12.1190284 -C 7.2866041 4.1681797 6.1429716 -C 4.1361959 4.1681797 2.9880284 -C 7.2546203 4.1361959 15.2739716 -C 9.8475959 1.5432203 2.9880284 -C 9.8795797 9.8475959 15.2739716 -C 4.1361959 7.2546203 6.1429716 -C 4.1681797 4.1361959 12.1190284 -C 1.5432203 9.8475959 12.1190284 -C 9.8475959 9.8795797 6.1429716 -C 7.2546203 7.2866041 12.1190284 -C 7.2866041 7.2546203 2.9880284 -C 4.1681797 7.2866041 15.2739716 -C 1.5432203 1.5752041 15.2739716 -C 1.5752041 9.8795797 2.9880284 -C 9.8795797 1.5752041 12.1190284 -C 1.5752041 1.5432203 6.1429716 -C 7.2866041 1.5432203 12.1190284 -C 4.1361959 1.5432203 15.2739716 -C 9.8795797 4.1361959 2.9880284 -C 9.8475959 4.1681797 15.2739716 -C 7.2546203 9.8475959 2.9880284 -C 4.1361959 9.8795797 12.1190284 -C 1.5432203 4.1361959 6.1429716 -C 4.1681797 9.8475959 6.1429716 -C 9.8475959 7.2546203 12.1190284 -C 9.8795797 7.2866041 6.1429716 -C 7.2866041 9.8795797 15.2739716 -C 1.5432203 7.2866041 2.9880284 -C 4.1681797 1.5752041 2.9880284 -C 1.5752041 7.2546203 15.2739716 -C 7.2546203 1.5752041 6.1429716 -C 1.5752041 4.1681797 12.1190284 -H 10.6917408 3.8551950 11.7844686 -H 0.7310592 3.8551950 15.6085314 -H 7.5676050 0.7310592 2.6534686 -H 6.4424592 1.8562050 15.6085314 -H 9.5665950 6.4424592 2.6534686 -H 0.7310592 7.5676050 11.7844686 -H 3.8551950 0.7310592 6.4775314 -H 1.8562050 6.4424592 6.4775314 -H 6.4424592 9.5665950 11.7844686 -H 7.5676050 10.6917408 6.4775314 -H 10.6917408 7.5676050 15.6085314 -H 3.8551950 10.6917408 2.6534686 -H 1.8562050 4.9803408 2.6534686 -H 4.9803408 9.5665950 15.6085314 -H 9.5665950 4.9803408 6.4775314 -H 4.9803408 1.8562050 11.7844686 -H 6.4424592 3.8551950 6.4775314 -H 4.9803408 3.8551950 2.6534686 -H 7.5676050 4.9803408 15.6085314 -H 10.6917408 1.8562050 2.6534686 -H 9.5665950 10.6917408 15.6085314 -H 4.9803408 7.5676050 6.4775314 -H 3.8551950 4.9803408 11.7844686 -H 1.8562050 10.6917408 11.7844686 -H 10.6917408 9.5665950 6.4775314 -H 7.5676050 6.4424592 11.7844686 -H 6.4424592 7.5676050 2.6534686 -H 3.8551950 6.4424592 15.6085314 -H 1.8562050 0.7310592 15.6085314 -H 0.7310592 9.5665950 2.6534686 -H 9.5665950 0.7310592 11.7844686 -H 0.7310592 1.8562050 6.4775314 -H 6.4424592 1.8562050 11.7844686 -H 4.9803408 1.8562050 15.6085314 -H 9.5665950 4.9803408 2.6534686 -H 10.6917408 3.8551950 15.6085314 -H 7.5676050 10.6917408 2.6534686 -H 4.9803408 9.5665950 11.7844686 -H 1.8562050 4.9803408 6.4775314 -H 3.8551950 10.6917408 6.4775314 -H 10.6917408 7.5676050 11.7844686 -H 9.5665950 6.4424592 6.4775314 -H 6.4424592 9.5665950 15.6085314 -H 1.8562050 6.4424592 2.6534686 -H 3.8551950 0.7310592 2.6534686 -H 0.7310592 7.5676050 15.6085314 -H 7.5676050 0.7310592 6.4775314 -H 0.7310592 3.8551950 11.7844686 -H 9.4649321 3.5010882 12.6939162 -H 1.9578679 3.5010882 14.6990838 -H 7.9217118 1.9578679 3.5629162 -H 7.6692679 2.2103118 14.6990838 -H 9.2124882 7.6692679 3.5629162 -H 1.9578679 7.9217118 12.6939162 -H 3.5010882 1.9578679 5.5680838 -H 2.2103118 7.6692679 5.5680838 -H 7.6692679 9.2124882 12.6939162 -H 7.9217118 9.4649321 5.5680838 -H 9.4649321 7.9217118 14.6990838 -H 3.5010882 9.4649321 3.5629162 -H 2.2103118 3.7535321 3.5629162 -H 3.7535321 9.2124882 14.6990838 -H 9.2124882 3.7535321 5.5680838 -H 3.7535321 2.2103118 12.6939162 -H 7.6692679 3.5010882 5.5680838 -H 3.7535321 3.5010882 3.5629162 -H 7.9217118 3.7535321 14.6990838 -H 9.4649321 2.2103118 3.5629162 -H 9.2124882 9.4649321 14.6990838 -H 3.7535321 7.9217118 5.5680838 -H 3.5010882 3.7535321 12.6939162 -H 2.2103118 9.4649321 12.6939162 -H 9.4649321 9.2124882 5.5680838 -H 7.9217118 7.6692679 12.6939162 -H 7.6692679 7.9217118 3.5629162 -H 3.5010882 7.6692679 14.6990838 -H 2.2103118 1.9578679 14.6990838 -H 1.9578679 9.2124882 3.5629162 -H 9.2124882 1.9578679 12.6939162 -H 1.9578679 2.2103118 5.5680838 -H 7.6692679 2.2103118 12.6939162 -H 3.7535321 2.2103118 14.6990838 -H 9.2124882 3.7535321 3.5629162 -H 9.4649321 3.5010882 14.6990838 -H 7.9217118 9.4649321 3.5629162 -H 3.7535321 9.2124882 12.6939162 -H 2.2103118 3.7535321 5.5680838 -H 3.5010882 9.4649321 5.5680838 -H 9.4649321 7.9217118 12.6939162 -H 9.2124882 7.6692679 5.5680838 -H 7.6692679 9.2124882 14.6990838 -H 2.2103118 7.6692679 3.5629162 -H 3.5010882 1.9578679 3.5629162 -H 1.9578679 7.9217118 14.6990838 -H 7.9217118 1.9578679 5.5680838 -H 1.9578679 3.5010882 12.6939162 -H 9.9812426 4.9791985 12.6153896 -H 1.4415574 4.9791985 14.7776104 -H 6.4436015 1.4415574 3.4843896 -H 7.1529574 0.7322015 14.7776104 -H 10.6905985 7.1529574 3.4843896 -H 1.4415574 6.4436015 12.6153896 -H 4.9791985 1.4415574 5.6466104 -H 0.7322015 7.1529574 5.6466104 -H 7.1529574 10.6905985 12.6153896 -H 6.4436015 9.9812426 5.6466104 -H 9.9812426 6.4436015 14.7776104 -H 4.9791985 9.9812426 3.4843896 -H 0.7322015 4.2698426 3.4843896 -H 4.2698426 10.6905985 14.7776104 -H 10.6905985 4.2698426 5.6466104 -H 4.2698426 0.7322015 12.6153896 -H 7.1529574 4.9791985 5.6466104 -H 4.2698426 4.9791985 3.4843896 -H 6.4436015 4.2698426 14.7776104 -H 9.9812426 0.7322015 3.4843896 -H 10.6905985 9.9812426 14.7776104 -H 4.2698426 6.4436015 5.6466104 -H 4.9791985 4.2698426 12.6153896 -H 0.7322015 9.9812426 12.6153896 -H 9.9812426 10.6905985 5.6466104 -H 6.4436015 7.1529574 12.6153896 -H 7.1529574 6.4436015 3.4843896 -H 4.9791985 7.1529574 14.7776104 -H 0.7322015 1.4415574 14.7776104 -H 1.4415574 10.6905985 3.4843896 -H 10.6905985 1.4415574 12.6153896 -H 1.4415574 0.7322015 5.6466104 -H 7.1529574 0.7322015 12.6153896 -H 4.2698426 0.7322015 14.7776104 -H 10.6905985 4.2698426 3.4843896 -H 9.9812426 4.9791985 14.7776104 -H 6.4436015 9.9812426 3.4843896 -H 4.2698426 10.6905985 12.6153896 -H 0.7322015 4.2698426 5.6466104 -H 4.9791985 9.9812426 5.6466104 -H 9.9812426 6.4436015 12.6153896 -H 10.6905985 7.1529574 5.6466104 -H 7.1529574 10.6905985 14.7776104 -H 0.7322015 7.1529574 3.4843896 -H 4.9791985 1.4415574 3.4843896 -H 1.4415574 6.4436015 14.7776104 -H 6.4436015 1.4415574 5.6466104 -H 1.4415574 4.9791985 12.6153896 -C 7.2009331 5.0603004 11.5426797 -C 4.2218669 5.0603004 15.8503203 -C 6.3624996 4.2218669 2.4116797 -C 9.9332669 0.6510996 15.8503203 -C 10.7717004 9.9332669 2.4116797 -C 4.2218669 6.3624996 11.5426797 -C 5.0603004 4.2218669 6.7193203 -C 0.6510996 9.9332669 6.7193203 -C 9.9332669 10.7717004 11.5426797 -C 6.3624996 7.2009331 6.7193203 -C 7.2009331 6.3624996 15.8503203 -C 5.0603004 7.2009331 2.4116797 -C 0.6510996 1.4895331 2.4116797 -C 1.4895331 10.7717004 15.8503203 -C 10.7717004 1.4895331 6.7193203 -C 1.4895331 0.6510996 11.5426797 -C 9.9332669 5.0603004 6.7193203 -C 1.4895331 5.0603004 2.4116797 -C 6.3624996 1.4895331 15.8503203 -C 7.2009331 0.6510996 2.4116797 -C 10.7717004 7.2009331 15.8503203 -C 1.4895331 6.3624996 6.7193203 -C 5.0603004 1.4895331 11.5426797 -C 0.6510996 7.2009331 11.5426797 -C 7.2009331 10.7717004 6.7193203 -C 6.3624996 9.9332669 11.5426797 -C 9.9332669 6.3624996 2.4116797 -C 5.0603004 9.9332669 15.8503203 -C 0.6510996 4.2218669 15.8503203 -C 4.2218669 10.7717004 2.4116797 -C 10.7717004 4.2218669 11.5426797 -C 4.2218669 0.6510996 6.7193203 -C 9.9332669 0.6510996 11.5426797 -C 1.4895331 0.6510996 15.8503203 -C 10.7717004 1.4895331 2.4116797 -C 7.2009331 5.0603004 15.8503203 -C 6.3624996 7.2009331 2.4116797 -C 1.4895331 10.7717004 11.5426797 -C 0.6510996 1.4895331 6.7193203 -C 5.0603004 7.2009331 6.7193203 -C 7.2009331 6.3624996 11.5426797 -C 10.7717004 9.9332669 6.7193203 -C 9.9332669 10.7717004 15.8503203 -C 0.6510996 9.9332669 2.4116797 -C 5.0603004 4.2218669 2.4116797 -C 4.2218669 6.3624996 15.8503203 -C 6.3624996 4.2218669 6.7193203 -C 4.2218669 5.0603004 11.5426797 -H 6.7371674 4.3098224 11.9196074 -H 4.6856326 4.3098224 15.4733926 -H 7.1129776 4.6856326 2.7886074 -H 10.3970326 1.4015776 15.4733926 -H 10.0212224 10.3970326 2.7886074 -H 4.6856326 7.1129776 11.9196074 -H 4.3098224 4.6856326 6.3423926 -H 1.4015776 10.3970326 6.3423926 -H 10.3970326 10.0212224 11.9196074 -H 7.1129776 6.7371674 6.3423926 -H 6.7371674 7.1129776 15.4733926 -H 4.3098224 6.7371674 2.7886074 -H 1.4015776 1.0257674 2.7886074 -H 1.0257674 10.0212224 15.4733926 -H 10.0212224 1.0257674 6.3423926 -H 1.0257674 1.4015776 11.9196074 -H 10.3970326 4.3098224 6.3423926 -H 1.0257674 4.3098224 2.7886074 -H 7.1129776 1.0257674 15.4733926 -H 6.7371674 1.4015776 2.7886074 -H 10.0212224 6.7371674 15.4733926 -H 1.0257674 7.1129776 6.3423926 -H 4.3098224 1.0257674 11.9196074 -H 1.4015776 6.7371674 11.9196074 -H 6.7371674 10.0212224 6.3423926 -H 7.1129776 10.3970326 11.9196074 -H 10.3970326 7.1129776 2.7886074 -H 4.3098224 10.3970326 15.4733926 -H 1.4015776 4.6856326 15.4733926 -H 4.6856326 10.0212224 2.7886074 -H 10.0212224 4.6856326 11.9196074 -H 4.6856326 1.4015776 6.3423926 -H 10.3970326 1.4015776 11.9196074 -H 1.0257674 1.4015776 15.4733926 -H 10.0212224 1.0257674 2.7886074 -H 6.7371674 4.3098224 15.4733926 -H 7.1129776 6.7371674 2.7886074 -H 1.0257674 10.0212224 11.9196074 -H 1.4015776 1.0257674 6.3423926 -H 4.3098224 6.7371674 6.3423926 -H 6.7371674 7.1129776 11.9196074 -H 10.0212224 10.3970326 6.3423926 -H 10.3970326 10.0212224 15.4733926 -H 1.4015776 10.3970326 2.7886074 -H 4.3098224 4.6856326 2.7886074 -H 4.6856326 7.1129776 15.4733926 -H 7.1129776 4.6856326 6.3423926 -H 4.6856326 4.3098224 11.9196074 -H 6.6366468 5.4955091 10.8987616 -H 4.7861532 5.4955091 16.4942384 -H 5.9272909 4.7861532 1.7677616 -H 10.4975532 0.2158909 16.4942384 -H 11.2069091 10.4975532 1.7677616 -H 4.7861532 5.9272909 10.8987616 -H 5.4955091 4.7861532 7.3632384 -H 0.2158909 10.4975532 7.3632384 -H 10.4975532 11.2069091 10.8987616 -H 5.9272909 6.6366468 7.3632384 -H 6.6366468 5.9272909 16.4942384 -H 5.4955091 6.6366468 1.7677616 -H 0.2158909 0.9252468 1.7677616 -H 0.9252468 11.2069091 16.4942384 -H 11.2069091 0.9252468 7.3632384 -H 0.9252468 0.2158909 10.8987616 -H 10.4975532 5.4955091 7.3632384 -H 0.9252468 5.4955091 1.7677616 -H 5.9272909 0.9252468 16.4942384 -H 6.6366468 0.2158909 1.7677616 -H 11.2069091 6.6366468 16.4942384 -H 0.9252468 5.9272909 7.3632384 -H 5.4955091 0.9252468 10.8987616 -H 0.2158909 6.6366468 10.8987616 -H 6.6366468 11.2069091 7.3632384 -H 5.9272909 10.4975532 10.8987616 -H 10.4975532 5.9272909 1.7677616 -H 5.4955091 10.4975532 16.4942384 -H 0.2158909 4.7861532 16.4942384 -H 4.7861532 11.2069091 1.7677616 -H 11.2069091 4.7861532 10.8987616 -H 4.7861532 0.2158909 7.3632384 -H 10.4975532 0.2158909 10.8987616 -H 0.9252468 0.2158909 16.4942384 -H 11.2069091 0.9252468 1.7677616 -H 6.6366468 5.4955091 16.4942384 -H 5.9272909 6.6366468 1.7677616 -H 0.9252468 11.2069091 10.8987616 -H 0.2158909 0.9252468 7.3632384 -H 5.4955091 6.6366468 7.3632384 -H 6.6366468 5.9272909 10.8987616 -H 11.2069091 10.4975532 7.3632384 -H 10.4975532 11.2069091 16.4942384 -H 0.2158909 10.4975532 1.7677616 -H 5.4955091 4.7861532 1.7677616 -H 4.7861532 5.9272909 16.4942384 -H 5.9272909 4.7861532 7.3632384 -H 4.7861532 5.4955091 10.8987616 -H 7.4271046 5.6805584 12.2410186 -H 3.9956954 5.6805584 15.1519814 -H 5.7422416 3.9956954 3.1100186 -H 9.7070954 0.0308416 15.1519814 -H 11.3919584 9.7070954 3.1100186 -H 3.9956954 5.7422416 12.2410186 -H 5.6805584 3.9956954 6.0209814 -H 0.0308416 9.7070954 6.0209814 -H 9.7070954 11.3919584 12.2410186 -H 5.7422416 7.4271046 6.0209814 -H 7.4271046 5.7422416 15.1519814 -H 5.6805584 7.4271046 3.1100186 -H 0.0308416 1.7157046 3.1100186 -H 1.7157046 11.3919584 15.1519814 -H 11.3919584 1.7157046 6.0209814 -H 1.7157046 0.0308416 12.2410186 -H 9.7070954 5.6805584 6.0209814 -H 1.7157046 5.6805584 3.1100186 -H 5.7422416 1.7157046 15.1519814 -H 7.4271046 0.0308416 3.1100186 -H 11.3919584 7.4271046 15.1519814 -H 1.7157046 5.7422416 6.0209814 -H 5.6805584 1.7157046 12.2410186 -H 0.0308416 7.4271046 12.2410186 -H 7.4271046 11.3919584 6.0209814 -H 5.7422416 9.7070954 12.2410186 -H 9.7070954 5.7422416 3.1100186 -H 5.6805584 9.7070954 15.1519814 -H 0.0308416 3.9956954 15.1519814 -H 3.9956954 11.3919584 3.1100186 -H 11.3919584 3.9956954 12.2410186 -H 3.9956954 0.0308416 6.0209814 -H 9.7070954 0.0308416 12.2410186 -H 1.7157046 0.0308416 15.1519814 -H 11.3919584 1.7157046 3.1100186 -H 7.4271046 5.6805584 15.1519814 -H 5.7422416 7.4271046 3.1100186 -H 1.7157046 11.3919584 12.2410186 -H 0.0308416 1.7157046 6.0209814 -H 5.6805584 7.4271046 6.0209814 -H 7.4271046 5.7422416 12.2410186 -H 11.3919584 9.7070954 6.0209814 -H 9.7070954 11.3919584 15.1519814 -H 0.0308416 9.7070954 3.1100186 -H 5.6805584 3.9956954 3.1100186 -H 3.9956954 5.7422416 15.1519814 -H 5.7422416 3.9956954 6.0209814 -H 3.9956954 5.6805584 12.2410186 -C 7.6761216 11.1109576 10.0782499 -C 3.7466784 11.1109576 17.3147501 -C 0.3118424 3.7466784 0.9472499 -C 9.4580784 6.0232424 17.3147501 -C 5.3995576 9.4580784 0.9472499 -C 3.7466784 0.3118424 10.0782499 -C 11.1109576 3.7466784 8.1837501 -C 6.0232424 9.4580784 8.1837501 -C 9.4580784 5.3995576 10.0782499 -C 0.3118424 7.6761216 8.1837501 -C 7.6761216 0.3118424 17.3147501 -C 11.1109576 7.6761216 0.9472499 -C 6.0232424 1.9647216 0.9472499 -C 1.9647216 5.3995576 17.3147501 -C 5.3995576 1.9647216 8.1837501 -C 1.9647216 6.0232424 10.0782499 -C 9.4580784 6.0232424 10.0782499 -C 1.9647216 6.0232424 17.3147501 -C 5.3995576 1.9647216 0.9472499 -C 7.6761216 11.1109576 17.3147501 -C 0.3118424 7.6761216 0.9472499 -C 1.9647216 5.3995576 10.0782499 -C 6.0232424 1.9647216 8.1837501 -C 11.1109576 7.6761216 8.1837501 -C 7.6761216 0.3118424 10.0782499 -C 5.3995576 9.4580784 8.1837501 -C 9.4580784 5.3995576 17.3147501 -C 6.0232424 9.4580784 0.9472499 -C 11.1109576 3.7466784 0.9472499 -C 3.7466784 0.3118424 17.3147501 -C 0.3118424 3.7466784 8.1837501 -C 3.7466784 11.1109576 10.0782499 -C 7.6761216 6.0232424 8.1837501 -C 3.7466784 6.0232424 0.9472499 -C 5.3995576 3.7466784 17.3147501 -C 9.4580784 11.1109576 0.9472499 -C 0.3118424 9.4580784 17.3147501 -C 3.7466784 5.3995576 8.1837501 -C 6.0232424 3.7466784 10.0782499 -C 11.1109576 9.4580784 10.0782499 -C 9.4580784 0.3118424 8.1837501 -C 5.3995576 7.6761216 10.0782499 -C 7.6761216 5.3995576 0.9472499 -C 6.0232424 7.6761216 17.3147501 -C 11.1109576 1.9647216 17.3147501 -C 1.9647216 0.3118424 0.9472499 -C 0.3118424 1.9647216 10.0782499 -C 1.9647216 11.1109576 8.1837501 -H 9.7025263 6.5852442 10.8311922 -H 1.7202737 6.5852442 16.5618078 -H 4.8375558 1.7202737 1.7001922 -H 7.4316737 10.5489558 16.5618078 -H 0.8738442 7.4316737 1.7001922 -H 1.7202737 4.8375558 10.8311922 -H 6.5852442 1.7202737 7.4308078 -H 10.5489558 7.4316737 7.4308078 -H 7.4316737 0.8738442 10.8311922 -H 4.8375558 9.7025263 7.4308078 -H 9.7025263 4.8375558 16.5618078 -H 6.5852442 9.7025263 1.7001922 -H 10.5489558 3.9911263 1.7001922 -H 3.9911263 0.8738442 16.5618078 -H 0.8738442 3.9911263 7.4308078 -H 3.9911263 10.5489558 10.8311922 -H 7.4316737 6.5852442 7.4308078 -H 3.9911263 6.5852442 1.7001922 -H 4.8375558 3.9911263 16.5618078 -H 9.7025263 10.5489558 1.7001922 -H 0.8738442 9.7025263 16.5618078 -H 3.9911263 4.8375558 7.4308078 -H 6.5852442 3.9911263 10.8311922 -H 10.5489558 9.7025263 10.8311922 -H 9.7025263 0.8738442 7.4308078 -H 4.8375558 7.4316737 10.8311922 -H 7.4316737 4.8375558 1.7001922 -H 6.5852442 7.4316737 16.5618078 -H 10.5489558 1.7202737 16.5618078 -H 1.7202737 0.8738442 1.7001922 -H 0.8738442 1.7202737 10.8311922 -H 1.7202737 10.5489558 7.4308078 -H 7.4316737 10.5489558 10.8311922 -H 3.9911263 10.5489558 16.5618078 -H 0.8738442 3.9911263 1.7001922 -H 9.7025263 6.5852442 16.5618078 -H 4.8375558 9.7025263 1.7001922 -H 3.9911263 0.8738442 10.8311922 -H 10.5489558 3.9911263 7.4308078 -H 6.5852442 9.7025263 7.4308078 -H 9.7025263 4.8375558 10.8311922 -H 0.8738442 7.4316737 7.4308078 -H 7.4316737 0.8738442 16.5618078 -H 10.5489558 7.4316737 1.7001922 -H 6.5852442 1.7202737 1.7001922 -H 1.7202737 4.8375558 16.5618078 -H 4.8375558 1.7202737 7.4308078 -H 1.7202737 6.5852442 10.8311922 -H 10.2748086 5.7959287 9.6076382 -H 1.1479914 5.7959287 17.7853618 -H 5.6268713 1.1479914 0.4766382 -H 6.8593914 11.3382713 17.7853618 -H 0.0845287 6.8593914 0.4766382 -H 1.1479914 5.6268713 9.6076382 -H 5.7959287 1.1479914 8.6543618 -H 11.3382713 6.8593914 8.6543618 -H 6.8593914 0.0845287 9.6076382 -H 5.6268713 10.2748086 8.6543618 -H 10.2748086 5.6268713 17.7853618 -H 5.7959287 10.2748086 0.4766382 -H 11.3382713 4.5634086 0.4766382 -H 4.5634086 0.0845287 17.7853618 -H 0.0845287 4.5634086 8.6543618 -H 4.5634086 11.3382713 9.6076382 -H 6.8593914 5.7959287 8.6543618 -H 4.5634086 5.7959287 0.4766382 -H 5.6268713 4.5634086 17.7853618 -H 10.2748086 11.3382713 0.4766382 -H 0.0845287 10.2748086 17.7853618 -H 4.5634086 5.6268713 8.6543618 -H 5.7959287 4.5634086 9.6076382 -H 11.3382713 10.2748086 9.6076382 -H 10.2748086 0.0845287 8.6543618 -H 5.6268713 6.8593914 9.6076382 -H 6.8593914 5.6268713 0.4766382 -H 5.7959287 6.8593914 17.7853618 -H 11.3382713 1.1479914 17.7853618 -H 1.1479914 0.0845287 0.4766382 -H 0.0845287 1.1479914 9.6076382 -H 1.1479914 11.3382713 8.6543618 -H 6.8593914 11.3382713 9.6076382 -H 4.5634086 11.3382713 17.7853618 -H 0.0845287 4.5634086 0.4766382 -H 10.2748086 5.7959287 17.7853618 -H 5.6268713 10.2748086 0.4766382 -H 4.5634086 0.0845287 9.6076382 -H 11.3382713 4.5634086 8.6543618 -H 5.7959287 10.2748086 8.6543618 -H 10.2748086 5.6268713 9.6076382 -H 0.0845287 6.8593914 8.6543618 -H 6.8593914 0.0845287 17.7853618 -H 11.3382713 6.8593914 0.4766382 -H 5.7959287 1.1479914 0.4766382 -H 1.1479914 5.6268713 17.7853618 -H 5.6268713 1.1479914 8.6543618 -H 1.1479914 5.7959287 9.6076382 -C 8.5671000 6.8433995 9.1310000 -C 2.8557000 6.8433995 0.0000000 -C 4.5794005 2.8557000 0.0000000 -C 8.5671000 10.2908005 0.0000000 -C 1.1319995 8.5671000 0.0000000 -C 2.8557000 4.5794005 9.1310000 -C 6.8433995 2.8557000 9.1310000 -C 10.2908005 8.5671000 9.1310000 -C 8.5671000 1.1319995 9.1310000 -C 4.5794005 8.5671000 9.1310000 -C 8.5671000 4.5794005 0.0000000 -C 6.8433995 8.5671000 0.0000000 -C 10.2908005 2.8557000 0.0000000 -C 2.8557000 1.1319995 0.0000000 -C 1.1319995 2.8557000 9.1310000 -C 2.8557000 10.2908005 9.1310000 -H 7.9971023 7.4179663 9.6660766 -H 3.4256977 7.4179663 17.7269234 -H 4.0048337 3.4256977 0.5350766 -H 9.1370977 9.7162337 17.7269234 -H 1.7065663 9.1370977 0.5350766 -H 3.4256977 4.0048337 9.6660766 -H 7.4179663 3.4256977 8.5959234 -H 9.7162337 9.1370977 8.5959234 -H 9.1370977 1.7065663 9.6660766 -H 4.0048337 7.9971023 8.5959234 -H 7.9971023 4.0048337 17.7269234 -H 7.4179663 7.9971023 0.5350766 -H 9.7162337 2.2857023 0.5350766 -H 2.2857023 1.7065663 17.7269234 -H 1.7065663 2.2857023 8.5959234 -H 2.2857023 9.7162337 9.6660766 -H 9.1370977 7.4179663 8.5959234 -H 2.2857023 7.4179663 0.5350766 -H 4.0048337 2.2857023 17.7269234 -H 7.9971023 9.7162337 0.5350766 -H 1.7065663 7.9971023 17.7269234 -H 2.2857023 4.0048337 8.5959234 -H 7.4179663 2.2857023 9.6660766 -H 9.7162337 7.9971023 9.6660766 -H 7.9971023 1.7065663 8.5959234 -H 4.0048337 9.1370977 9.6660766 -H 9.1370977 4.0048337 0.5350766 -H 7.4179663 9.1370977 17.7269234 -H 9.7162337 3.4256977 17.7269234 -H 3.4256977 1.7065663 0.5350766 -H 1.7065663 3.4256977 9.6660766 -H 3.4256977 9.7162337 8.5959234 - -Unit cell volume : 2382.8323314 A^3 -Unit cell density : 3.4271930 u/A^3 = 38.4046832 g/cm^3 diff --git a/cell2mol/test/YETBUV/YETBUV.xyz b/cell2mol/test/YETBUV/YETBUV.xyz deleted file mode 100644 index e47217a83..000000000 --- a/cell2mol/test/YETBUV/YETBUV.xyz +++ /dev/null @@ -1,978 +0,0 @@ -976 - -Co 8.5671000 2.8557000 9.1310000 -Co 2.8557000 2.8557000 0.0000000 -Co 8.5671000 2.8557000 0.0000000 -Co 8.5671000 8.5671000 0.0000000 -Co 2.8557000 8.5671000 9.1310000 -Co 2.8557000 2.8557000 9.1310000 -Co 8.5671000 8.5671000 9.1310000 -Co 2.8557000 8.5671000 0.0000000 -Cl 10.8226461 2.8557000 9.1310000 -Cl 0.6001539 2.8557000 0.0000000 -Cl 8.5671000 0.6001539 0.0000000 -Cl 6.3115539 2.8557000 0.0000000 -Cl 8.5671000 6.3115539 0.0000000 -Cl 0.6001539 8.5671000 9.1310000 -Cl 2.8557000 0.6001539 9.1310000 -Cl 2.8557000 6.3115539 9.1310000 -Cl 6.3115539 8.5671000 9.1310000 -Cl 8.5671000 10.8226461 9.1310000 -Cl 10.8226461 8.5671000 0.0000000 -Cl 2.8557000 10.8226461 0.0000000 -Cl 2.8557000 5.1112461 0.0000000 -Cl 5.1112461 8.5671000 0.0000000 -Cl 8.5671000 5.1112461 9.1310000 -Cl 5.1112461 2.8557000 9.1310000 -Cl 2.8557000 2.8557000 4.5655000 -Cl 8.5671000 2.8557000 4.5655000 -Cl 8.5671000 8.5671000 13.6965000 -Cl 8.5671000 2.8557000 13.6965000 -Cl 8.5671000 8.5671000 4.5655000 -Cl 2.8557000 8.5671000 13.6965000 -Cl 2.8557000 2.8557000 13.6965000 -Cl 2.8557000 8.5671000 4.5655000 -P 8.7218789 1.2248668 7.5361795 -P 2.7009211 1.2248668 1.5948205 -P 10.1979332 2.7009211 16.6671795 -P 8.4123211 4.4865332 1.5948205 -P 6.9362668 8.4123211 16.6671795 -P 2.7009211 10.1979332 7.5361795 -P 1.2248668 2.7009211 10.7258205 -P 4.4865332 8.4123211 10.7258205 -P 8.4123211 6.9362668 7.5361795 -P 10.1979332 8.7218789 10.7258205 -P 8.7218789 10.1979332 1.5948205 -P 1.2248668 8.7218789 16.6671795 -P 4.4865332 3.0104789 16.6671795 -P 3.0104789 6.9362668 1.5948205 -P 6.9362668 3.0104789 10.7258205 -P 3.0104789 4.4865332 7.5361795 -O 1.7888105 2.8008706 5.3270254 -O 9.6339895 2.8008706 3.8039746 -O 8.6219294 9.6339895 14.4580254 -O 3.9225895 2.9105294 3.8039746 -O 8.5122706 3.9225895 14.4580254 -O 9.6339895 8.6219294 5.3270254 -O 2.8008706 9.6339895 12.9349746 -O 2.9105294 3.9225895 12.9349746 -O 3.9225895 8.5122706 5.3270254 -O 8.6219294 1.7888105 12.9349746 -O 1.7888105 8.6219294 3.8039746 -O 2.8008706 1.7888105 14.4580254 -O 2.9105294 7.5002105 14.4580254 -O 7.5002105 8.5122706 3.8039746 -O 8.5122706 7.5002105 12.9349746 -O 7.5002105 2.9105294 5.3270254 -C 9.8475959 1.5432203 6.1429716 -C 1.5752041 1.5432203 2.9880284 -C 9.8795797 1.5752041 15.2739716 -C 7.2866041 4.1681797 2.9880284 -C 7.2546203 7.2866041 15.2739716 -C 1.5752041 9.8795797 6.1429716 -C 1.5432203 1.5752041 12.1190284 -C 4.1681797 7.2866041 12.1190284 -C 7.2866041 7.2546203 6.1429716 -C 9.8795797 9.8475959 12.1190284 -C 9.8475959 9.8795797 2.9880284 -C 1.5432203 9.8475959 15.2739716 -C 4.1681797 4.1361959 15.2739716 -C 4.1361959 7.2546203 2.9880284 -C 7.2546203 4.1361959 12.1190284 -C 4.1361959 4.1681797 6.1429716 -H 10.6917408 1.8562050 6.4775314 -H 0.7310592 1.8562050 2.6534686 -H 9.5665950 0.7310592 15.6085314 -H 6.4424592 3.8551950 2.6534686 -H 7.5676050 6.4424592 15.6085314 -H 0.7310592 9.5665950 6.4775314 -H 1.8562050 0.7310592 11.7844686 -H 3.8551950 6.4424592 11.7844686 -H 6.4424592 7.5676050 6.4775314 -H 9.5665950 10.6917408 11.7844686 -H 10.6917408 9.5665950 2.6534686 -H 1.8562050 10.6917408 15.6085314 -H 3.8551950 4.9803408 15.6085314 -H 4.9803408 7.5676050 2.6534686 -H 7.5676050 4.9803408 11.7844686 -H 4.9803408 3.8551950 6.4775314 -H 9.4649321 2.2103118 5.5680838 -H 1.9578679 2.2103118 3.5629162 -H 9.2124882 1.9578679 14.6990838 -H 7.6692679 3.5010882 3.5629162 -H 7.9217118 7.6692679 14.6990838 -H 1.9578679 9.2124882 5.5680838 -H 2.2103118 1.9578679 12.6939162 -H 3.5010882 7.6692679 12.6939162 -H 7.6692679 7.9217118 5.5680838 -H 9.2124882 9.4649321 12.6939162 -H 9.4649321 9.2124882 3.5629162 -H 2.2103118 9.4649321 14.6990838 -H 3.5010882 3.7535321 14.6990838 -H 3.7535321 7.9217118 3.5629162 -H 7.9217118 3.7535321 12.6939162 -H 3.7535321 3.5010882 5.5680838 -H 9.9812426 0.7322015 5.6466104 -H 1.4415574 0.7322015 3.4843896 -H 10.6905985 1.4415574 14.7776104 -H 7.1529574 4.9791985 3.4843896 -H 6.4436015 7.1529574 14.7776104 -H 1.4415574 10.6905985 5.6466104 -H 0.7322015 1.4415574 12.6153896 -H 4.9791985 7.1529574 12.6153896 -H 7.1529574 6.4436015 5.6466104 -H 10.6905985 9.9812426 12.6153896 -H 9.9812426 10.6905985 3.4843896 -H 0.7322015 9.9812426 14.7776104 -H 4.9791985 4.2698426 14.7776104 -H 4.2698426 6.4436015 3.4843896 -H 6.4436015 4.2698426 12.6153896 -H 4.2698426 4.9791985 5.6466104 -C 7.2009331 0.6510996 6.7193203 -C 4.2218669 0.6510996 2.4116797 -C 10.7717004 4.2218669 15.8503203 -C 9.9332669 5.0603004 2.4116797 -C 6.3624996 9.9332669 15.8503203 -C 4.2218669 10.7717004 6.7193203 -C 0.6510996 4.2218669 11.5426797 -C 5.0603004 9.9332669 11.5426797 -C 9.9332669 6.3624996 6.7193203 -C 10.7717004 7.2009331 11.5426797 -C 7.2009331 10.7717004 2.4116797 -C 0.6510996 7.2009331 15.8503203 -C 5.0603004 1.4895331 15.8503203 -C 1.4895331 6.3624996 2.4116797 -C 6.3624996 1.4895331 11.5426797 -C 1.4895331 5.0603004 6.7193203 -H 6.7371674 1.4015776 6.3423926 -H 4.6856326 1.4015776 2.7886074 -H 10.0212224 4.6856326 15.4733926 -H 10.3970326 4.3098224 2.7886074 -H 7.1129776 10.3970326 15.4733926 -H 4.6856326 10.0212224 6.3423926 -H 1.4015776 4.6856326 11.9196074 -H 4.3098224 10.3970326 11.9196074 -H 10.3970326 7.1129776 6.3423926 -H 10.0212224 6.7371674 11.9196074 -H 6.7371674 10.0212224 2.7886074 -H 1.4015776 6.7371674 15.4733926 -H 4.3098224 1.0257674 15.4733926 -H 1.0257674 7.1129776 2.7886074 -H 7.1129776 1.0257674 11.9196074 -H 1.0257674 4.3098224 6.3423926 -H 6.6366468 0.2158909 7.3632384 -H 4.7861532 0.2158909 1.7677616 -H 11.2069091 4.7861532 16.4942384 -H 10.4975532 5.4955091 1.7677616 -H 5.9272909 10.4975532 16.4942384 -H 4.7861532 11.2069091 7.3632384 -H 0.2158909 4.7861532 10.8987616 -H 5.4955091 10.4975532 10.8987616 -H 10.4975532 5.9272909 7.3632384 -H 11.2069091 6.6366468 10.8987616 -H 6.6366468 11.2069091 1.7677616 -H 0.2158909 6.6366468 16.4942384 -H 5.4955091 0.9252468 16.4942384 -H 0.9252468 5.9272909 1.7677616 -H 5.9272909 0.9252468 10.8987616 -H 0.9252468 5.4955091 7.3632384 -H 7.4271046 0.0308416 6.0209814 -H 3.9956954 0.0308416 3.1100186 -H 11.3919584 3.9956954 15.1519814 -H 9.7070954 5.6805584 3.1100186 -H 5.7422416 9.7070954 15.1519814 -H 3.9956954 11.3919584 6.0209814 -H 0.0308416 3.9956954 12.2410186 -H 5.6805584 9.7070954 12.2410186 -H 9.7070954 5.7422416 6.0209814 -H 11.3919584 7.4271046 12.2410186 -H 7.4271046 11.3919584 3.1100186 -H 0.0308416 7.4271046 15.1519814 -H 5.6805584 1.7157046 15.1519814 -H 1.7157046 5.7422416 3.1100186 -H 5.7422416 1.7157046 12.2410186 -H 1.7157046 5.6805584 6.0209814 -C 9.4580784 11.1109576 8.1837501 -C 1.9647216 11.1109576 0.9472499 -C 0.3118424 1.9647216 17.3147501 -C 7.6761216 6.0232424 0.9472499 -C 5.3995576 7.6761216 17.3147501 -C 1.9647216 0.3118424 8.1837501 -C 11.1109576 1.9647216 10.0782499 -C 6.0232424 7.6761216 10.0782499 -C 7.6761216 5.3995576 8.1837501 -C 0.3118424 9.4580784 10.0782499 -C 9.4580784 0.3118424 0.9472499 -C 11.1109576 9.4580784 17.3147501 -C 6.0232424 3.7466784 17.3147501 -C 3.7466784 5.3995576 0.9472499 -C 5.3995576 3.7466784 10.0782499 -C 3.7466784 6.0232424 8.1837501 -H 9.7025263 10.5489558 7.4308078 -H 1.7202737 10.5489558 1.7001922 -H 0.8738442 1.7202737 16.5618078 -H 7.4316737 6.5852442 1.7001922 -H 4.8375558 7.4316737 16.5618078 -H 1.7202737 0.8738442 7.4308078 -H 10.5489558 1.7202737 10.8311922 -H 6.5852442 7.4316737 10.8311922 -H 7.4316737 4.8375558 7.4308078 -H 0.8738442 9.7025263 10.8311922 -H 9.7025263 0.8738442 1.7001922 -H 10.5489558 9.7025263 16.5618078 -H 6.5852442 3.9911263 16.5618078 -H 3.9911263 4.8375558 1.7001922 -H 4.8375558 3.9911263 10.8311922 -H 3.9911263 6.5852442 7.4308078 -H 10.2748086 11.3382713 8.6543618 -H 1.1479914 11.3382713 0.4766382 -H 0.0845287 1.1479914 17.7853618 -H 6.8593914 5.7959287 0.4766382 -H 5.6268713 6.8593914 17.7853618 -H 1.1479914 0.0845287 8.6543618 -H 11.3382713 1.1479914 9.6076382 -H 5.7959287 6.8593914 9.6076382 -H 6.8593914 5.6268713 8.6543618 -H 0.0845287 10.2748086 9.6076382 -H 10.2748086 0.0845287 0.4766382 -H 11.3382713 10.2748086 17.7853618 -H 5.7959287 4.5634086 17.7853618 -H 4.5634086 5.6268713 0.4766382 -H 5.6268713 4.5634086 9.6076382 -H 4.5634086 5.7959287 8.6543618 -C 8.5671000 10.2908005 9.1310000 -C 2.8557000 10.2908005 0.0000000 -C 1.1319995 2.8557000 0.0000000 -C 8.5671000 6.8433995 0.0000000 -C 4.5794005 8.5671000 0.0000000 -C 2.8557000 1.1319995 9.1310000 -C 10.2908005 2.8557000 9.1310000 -C 6.8433995 8.5671000 9.1310000 -C 8.5671000 4.5794005 9.1310000 -C 1.1319995 8.5671000 9.1310000 -C 8.5671000 1.1319995 0.0000000 -C 10.2908005 8.5671000 0.0000000 -C 6.8433995 2.8557000 0.0000000 -C 2.8557000 4.5794005 0.0000000 -C 4.5794005 2.8557000 9.1310000 -C 2.8557000 6.8433995 9.1310000 -H 7.9971023 9.7162337 8.5959234 -H 3.4256977 9.7162337 0.5350766 -H 1.7065663 3.4256977 17.7269234 -H 9.1370977 7.4179663 0.5350766 -H 4.0048337 9.1370977 17.7269234 -H 3.4256977 1.7065663 8.5959234 -H 9.7162337 3.4256977 9.6660766 -H 7.4179663 9.1370977 9.6660766 -H 9.1370977 4.0048337 8.5959234 -H 1.7065663 7.9971023 9.6660766 -H 7.9971023 1.7065663 0.5350766 -H 9.7162337 7.9971023 17.7269234 -H 7.4179663 2.2857023 17.7269234 -H 2.2857023 4.0048337 0.5350766 -H 4.0048337 2.2857023 9.6660766 -H 2.2857023 7.4179663 8.5959234 -H 9.1370977 9.7162337 9.6660766 -H 2.2857023 9.7162337 17.7269234 -H 1.7065663 2.2857023 0.5350766 -H 7.9971023 7.4179663 17.7269234 -H 4.0048337 7.9971023 0.5350766 -H 2.2857023 1.7065663 9.6660766 -H 9.7162337 2.2857023 8.5959234 -H 7.4179663 7.9971023 8.5959234 -H 7.9971023 4.0048337 9.6660766 -H 1.7065663 9.1370977 8.5959234 -H 9.1370977 1.7065663 17.7269234 -H 9.7162337 9.1370977 0.5350766 -H 7.4179663 3.4256977 0.5350766 -H 3.4256977 4.0048337 17.7269234 -H 4.0048337 3.4256977 8.5959234 -H 3.4256977 7.4179663 9.6660766 -Cl 6.3115539 2.8557000 9.1310000 -Cl 5.1112461 2.8557000 0.0000000 -Cl 8.5671000 5.1112461 0.0000000 -Cl 10.8226461 2.8557000 0.0000000 -Cl 8.5671000 10.8226461 0.0000000 -Cl 5.1112461 8.5671000 9.1310000 -Cl 2.8557000 5.1112461 9.1310000 -Cl 2.8557000 10.8226461 9.1310000 -Cl 10.8226461 8.5671000 9.1310000 -Cl 8.5671000 6.3115539 9.1310000 -Cl 6.3115539 8.5671000 0.0000000 -Cl 2.8557000 6.3115539 0.0000000 -Cl 2.8557000 0.6001539 0.0000000 -Cl 0.6001539 8.5671000 0.0000000 -Cl 8.5671000 0.6001539 9.1310000 -Cl 0.6001539 2.8557000 9.1310000 -P 8.4123211 1.2248668 10.7258205 -P 3.0104789 1.2248668 16.6671795 -P 10.1979332 3.0104789 1.5948205 -P 8.7218789 4.4865332 16.6671795 -P 6.9362668 8.7218789 1.5948205 -P 3.0104789 10.1979332 10.7258205 -P 1.2248668 3.0104789 7.5361795 -P 4.4865332 8.7218789 7.5361795 -P 8.7218789 6.9362668 10.7258205 -P 10.1979332 8.4123211 7.5361795 -P 8.4123211 10.1979332 16.6671795 -P 1.2248668 8.4123211 1.5948205 -P 4.4865332 2.7009211 1.5948205 -P 2.7009211 6.9362668 16.6671795 -P 6.9362668 2.7009211 7.5361795 -P 2.7009211 4.4865332 10.7258205 -P 8.7218789 4.4865332 10.7258205 -P 2.7009211 4.4865332 16.6671795 -P 6.9362668 2.7009211 1.5948205 -P 8.4123211 1.2248668 16.6671795 -P 10.1979332 8.4123211 1.5948205 -P 2.7009211 6.9362668 10.7258205 -P 4.4865332 2.7009211 7.5361795 -P 1.2248668 8.4123211 7.5361795 -P 8.4123211 10.1979332 10.7258205 -P 6.9362668 8.7218789 7.5361795 -P 8.7218789 6.9362668 16.6671795 -P 4.4865332 8.7218789 1.5948205 -P 1.2248668 3.0104789 1.5948205 -P 3.0104789 10.1979332 16.6671795 -P 10.1979332 3.0104789 7.5361795 -P 3.0104789 1.2248668 10.7258205 -P 8.4123211 4.4865332 7.5361795 -P 3.0104789 4.4865332 1.5948205 -P 6.9362668 3.0104789 16.6671795 -P 8.7218789 1.2248668 1.5948205 -P 10.1979332 8.7218789 16.6671795 -P 3.0104789 6.9362668 7.5361795 -P 4.4865332 3.0104789 10.7258205 -P 1.2248668 8.7218789 10.7258205 -P 8.7218789 10.1979332 7.5361795 -P 6.9362668 8.4123211 10.7258205 -P 8.4123211 6.9362668 1.5948205 -P 4.4865332 8.4123211 16.6671795 -P 1.2248668 2.7009211 16.6671795 -P 2.7009211 10.1979332 1.5948205 -P 10.1979332 2.7009211 10.7258205 -P 2.7009211 1.2248668 7.5361795 -O 2.8008706 1.7888105 3.8039746 -O 8.6219294 1.7888105 5.3270254 -O 9.6339895 8.6219294 12.9349746 -O 2.9105294 3.9225895 5.3270254 -O 7.5002105 2.9105294 12.9349746 -O 8.6219294 9.6339895 3.8039746 -O 1.7888105 8.6219294 14.4580254 -O 3.9225895 2.9105294 14.4580254 -O 2.9105294 7.5002105 3.8039746 -O 9.6339895 2.8008706 14.4580254 -O 2.8008706 9.6339895 5.3270254 -O 1.7888105 2.8008706 12.9349746 -O 3.9225895 8.5122706 12.9349746 -O 8.5122706 7.5002105 5.3270254 -O 7.5002105 8.5122706 14.4580254 -O 8.5122706 3.9225895 3.8039746 -O 2.9105294 3.9225895 3.8039746 -O 8.5122706 3.9225895 5.3270254 -O 7.5002105 8.5122706 12.9349746 -O 2.8008706 1.7888105 5.3270254 -O 9.6339895 2.8008706 12.9349746 -O 8.5122706 7.5002105 3.8039746 -O 3.9225895 8.5122706 14.4580254 -O 1.7888105 2.8008706 14.4580254 -O 2.8008706 9.6339895 3.8039746 -O 7.5002105 2.9105294 14.4580254 -O 2.9105294 7.5002105 5.3270254 -O 3.9225895 2.9105294 12.9349746 -O 1.7888105 8.6219294 12.9349746 -O 8.6219294 9.6339895 5.3270254 -O 9.6339895 8.6219294 14.4580254 -O 8.6219294 1.7888105 3.8039746 -O 3.9225895 2.9105294 5.3270254 -O 7.5002105 2.9105294 3.8039746 -O 8.5122706 7.5002105 14.4580254 -O 1.7888105 2.8008706 3.8039746 -O 8.6219294 1.7888105 14.4580254 -O 7.5002105 8.5122706 5.3270254 -O 2.9105294 7.5002105 12.9349746 -O 2.8008706 1.7888105 12.9349746 -O 1.7888105 8.6219294 5.3270254 -O 8.5122706 3.9225895 12.9349746 -O 3.9225895 8.5122706 3.8039746 -O 2.9105294 3.9225895 14.4580254 -O 2.8008706 9.6339895 14.4580254 -O 9.6339895 8.6219294 3.8039746 -O 8.6219294 9.6339895 12.9349746 -O 9.6339895 2.8008706 5.3270254 -C 9.8475959 4.1681797 12.1190284 -C 1.5752041 4.1681797 15.2739716 -C 7.2546203 1.5752041 2.9880284 -C 7.2866041 1.5432203 15.2739716 -C 9.8795797 7.2866041 2.9880284 -C 1.5752041 7.2546203 12.1190284 -C 4.1681797 1.5752041 6.1429716 -C 1.5432203 7.2866041 6.1429716 -C 7.2866041 9.8795797 12.1190284 -C 7.2546203 9.8475959 6.1429716 -C 9.8475959 7.2546203 15.2739716 -C 4.1681797 9.8475959 2.9880284 -C 1.5432203 4.1361959 2.9880284 -C 4.1361959 9.8795797 15.2739716 -C 9.8795797 4.1361959 6.1429716 -C 4.1361959 1.5432203 12.1190284 -C 7.2866041 4.1681797 6.1429716 -C 4.1361959 4.1681797 2.9880284 -C 7.2546203 4.1361959 15.2739716 -C 9.8475959 1.5432203 2.9880284 -C 9.8795797 9.8475959 15.2739716 -C 4.1361959 7.2546203 6.1429716 -C 4.1681797 4.1361959 12.1190284 -C 1.5432203 9.8475959 12.1190284 -C 9.8475959 9.8795797 6.1429716 -C 7.2546203 7.2866041 12.1190284 -C 7.2866041 7.2546203 2.9880284 -C 4.1681797 7.2866041 15.2739716 -C 1.5432203 1.5752041 15.2739716 -C 1.5752041 9.8795797 2.9880284 -C 9.8795797 1.5752041 12.1190284 -C 1.5752041 1.5432203 6.1429716 -C 7.2866041 1.5432203 12.1190284 -C 4.1361959 1.5432203 15.2739716 -C 9.8795797 4.1361959 2.9880284 -C 9.8475959 4.1681797 15.2739716 -C 7.2546203 9.8475959 2.9880284 -C 4.1361959 9.8795797 12.1190284 -C 1.5432203 4.1361959 6.1429716 -C 4.1681797 9.8475959 6.1429716 -C 9.8475959 7.2546203 12.1190284 -C 9.8795797 7.2866041 6.1429716 -C 7.2866041 9.8795797 15.2739716 -C 1.5432203 7.2866041 2.9880284 -C 4.1681797 1.5752041 2.9880284 -C 1.5752041 7.2546203 15.2739716 -C 7.2546203 1.5752041 6.1429716 -C 1.5752041 4.1681797 12.1190284 -H 10.6917408 3.8551950 11.7844686 -H 0.7310592 3.8551950 15.6085314 -H 7.5676050 0.7310592 2.6534686 -H 6.4424592 1.8562050 15.6085314 -H 9.5665950 6.4424592 2.6534686 -H 0.7310592 7.5676050 11.7844686 -H 3.8551950 0.7310592 6.4775314 -H 1.8562050 6.4424592 6.4775314 -H 6.4424592 9.5665950 11.7844686 -H 7.5676050 10.6917408 6.4775314 -H 10.6917408 7.5676050 15.6085314 -H 3.8551950 10.6917408 2.6534686 -H 1.8562050 4.9803408 2.6534686 -H 4.9803408 9.5665950 15.6085314 -H 9.5665950 4.9803408 6.4775314 -H 4.9803408 1.8562050 11.7844686 -H 6.4424592 3.8551950 6.4775314 -H 4.9803408 3.8551950 2.6534686 -H 7.5676050 4.9803408 15.6085314 -H 10.6917408 1.8562050 2.6534686 -H 9.5665950 10.6917408 15.6085314 -H 4.9803408 7.5676050 6.4775314 -H 3.8551950 4.9803408 11.7844686 -H 1.8562050 10.6917408 11.7844686 -H 10.6917408 9.5665950 6.4775314 -H 7.5676050 6.4424592 11.7844686 -H 6.4424592 7.5676050 2.6534686 -H 3.8551950 6.4424592 15.6085314 -H 1.8562050 0.7310592 15.6085314 -H 0.7310592 9.5665950 2.6534686 -H 9.5665950 0.7310592 11.7844686 -H 0.7310592 1.8562050 6.4775314 -H 6.4424592 1.8562050 11.7844686 -H 4.9803408 1.8562050 15.6085314 -H 9.5665950 4.9803408 2.6534686 -H 10.6917408 3.8551950 15.6085314 -H 7.5676050 10.6917408 2.6534686 -H 4.9803408 9.5665950 11.7844686 -H 1.8562050 4.9803408 6.4775314 -H 3.8551950 10.6917408 6.4775314 -H 10.6917408 7.5676050 11.7844686 -H 9.5665950 6.4424592 6.4775314 -H 6.4424592 9.5665950 15.6085314 -H 1.8562050 6.4424592 2.6534686 -H 3.8551950 0.7310592 2.6534686 -H 0.7310592 7.5676050 15.6085314 -H 7.5676050 0.7310592 6.4775314 -H 0.7310592 3.8551950 11.7844686 -H 9.4649321 3.5010882 12.6939162 -H 1.9578679 3.5010882 14.6990838 -H 7.9217118 1.9578679 3.5629162 -H 7.6692679 2.2103118 14.6990838 -H 9.2124882 7.6692679 3.5629162 -H 1.9578679 7.9217118 12.6939162 -H 3.5010882 1.9578679 5.5680838 -H 2.2103118 7.6692679 5.5680838 -H 7.6692679 9.2124882 12.6939162 -H 7.9217118 9.4649321 5.5680838 -H 9.4649321 7.9217118 14.6990838 -H 3.5010882 9.4649321 3.5629162 -H 2.2103118 3.7535321 3.5629162 -H 3.7535321 9.2124882 14.6990838 -H 9.2124882 3.7535321 5.5680838 -H 3.7535321 2.2103118 12.6939162 -H 7.6692679 3.5010882 5.5680838 -H 3.7535321 3.5010882 3.5629162 -H 7.9217118 3.7535321 14.6990838 -H 9.4649321 2.2103118 3.5629162 -H 9.2124882 9.4649321 14.6990838 -H 3.7535321 7.9217118 5.5680838 -H 3.5010882 3.7535321 12.6939162 -H 2.2103118 9.4649321 12.6939162 -H 9.4649321 9.2124882 5.5680838 -H 7.9217118 7.6692679 12.6939162 -H 7.6692679 7.9217118 3.5629162 -H 3.5010882 7.6692679 14.6990838 -H 2.2103118 1.9578679 14.6990838 -H 1.9578679 9.2124882 3.5629162 -H 9.2124882 1.9578679 12.6939162 -H 1.9578679 2.2103118 5.5680838 -H 7.6692679 2.2103118 12.6939162 -H 3.7535321 2.2103118 14.6990838 -H 9.2124882 3.7535321 3.5629162 -H 9.4649321 3.5010882 14.6990838 -H 7.9217118 9.4649321 3.5629162 -H 3.7535321 9.2124882 12.6939162 -H 2.2103118 3.7535321 5.5680838 -H 3.5010882 9.4649321 5.5680838 -H 9.4649321 7.9217118 12.6939162 -H 9.2124882 7.6692679 5.5680838 -H 7.6692679 9.2124882 14.6990838 -H 2.2103118 7.6692679 3.5629162 -H 3.5010882 1.9578679 3.5629162 -H 1.9578679 7.9217118 14.6990838 -H 7.9217118 1.9578679 5.5680838 -H 1.9578679 3.5010882 12.6939162 -H 9.9812426 4.9791985 12.6153896 -H 1.4415574 4.9791985 14.7776104 -H 6.4436015 1.4415574 3.4843896 -H 7.1529574 0.7322015 14.7776104 -H 10.6905985 7.1529574 3.4843896 -H 1.4415574 6.4436015 12.6153896 -H 4.9791985 1.4415574 5.6466104 -H 0.7322015 7.1529574 5.6466104 -H 7.1529574 10.6905985 12.6153896 -H 6.4436015 9.9812426 5.6466104 -H 9.9812426 6.4436015 14.7776104 -H 4.9791985 9.9812426 3.4843896 -H 0.7322015 4.2698426 3.4843896 -H 4.2698426 10.6905985 14.7776104 -H 10.6905985 4.2698426 5.6466104 -H 4.2698426 0.7322015 12.6153896 -H 7.1529574 4.9791985 5.6466104 -H 4.2698426 4.9791985 3.4843896 -H 6.4436015 4.2698426 14.7776104 -H 9.9812426 0.7322015 3.4843896 -H 10.6905985 9.9812426 14.7776104 -H 4.2698426 6.4436015 5.6466104 -H 4.9791985 4.2698426 12.6153896 -H 0.7322015 9.9812426 12.6153896 -H 9.9812426 10.6905985 5.6466104 -H 6.4436015 7.1529574 12.6153896 -H 7.1529574 6.4436015 3.4843896 -H 4.9791985 7.1529574 14.7776104 -H 0.7322015 1.4415574 14.7776104 -H 1.4415574 10.6905985 3.4843896 -H 10.6905985 1.4415574 12.6153896 -H 1.4415574 0.7322015 5.6466104 -H 7.1529574 0.7322015 12.6153896 -H 4.2698426 0.7322015 14.7776104 -H 10.6905985 4.2698426 3.4843896 -H 9.9812426 4.9791985 14.7776104 -H 6.4436015 9.9812426 3.4843896 -H 4.2698426 10.6905985 12.6153896 -H 0.7322015 4.2698426 5.6466104 -H 4.9791985 9.9812426 5.6466104 -H 9.9812426 6.4436015 12.6153896 -H 10.6905985 7.1529574 5.6466104 -H 7.1529574 10.6905985 14.7776104 -H 0.7322015 7.1529574 3.4843896 -H 4.9791985 1.4415574 3.4843896 -H 1.4415574 6.4436015 14.7776104 -H 6.4436015 1.4415574 5.6466104 -H 1.4415574 4.9791985 12.6153896 -C 7.2009331 5.0603004 11.5426797 -C 4.2218669 5.0603004 15.8503203 -C 6.3624996 4.2218669 2.4116797 -C 9.9332669 0.6510996 15.8503203 -C 10.7717004 9.9332669 2.4116797 -C 4.2218669 6.3624996 11.5426797 -C 5.0603004 4.2218669 6.7193203 -C 0.6510996 9.9332669 6.7193203 -C 9.9332669 10.7717004 11.5426797 -C 6.3624996 7.2009331 6.7193203 -C 7.2009331 6.3624996 15.8503203 -C 5.0603004 7.2009331 2.4116797 -C 0.6510996 1.4895331 2.4116797 -C 1.4895331 10.7717004 15.8503203 -C 10.7717004 1.4895331 6.7193203 -C 1.4895331 0.6510996 11.5426797 -C 9.9332669 5.0603004 6.7193203 -C 1.4895331 5.0603004 2.4116797 -C 6.3624996 1.4895331 15.8503203 -C 7.2009331 0.6510996 2.4116797 -C 10.7717004 7.2009331 15.8503203 -C 1.4895331 6.3624996 6.7193203 -C 5.0603004 1.4895331 11.5426797 -C 0.6510996 7.2009331 11.5426797 -C 7.2009331 10.7717004 6.7193203 -C 6.3624996 9.9332669 11.5426797 -C 9.9332669 6.3624996 2.4116797 -C 5.0603004 9.9332669 15.8503203 -C 0.6510996 4.2218669 15.8503203 -C 4.2218669 10.7717004 2.4116797 -C 10.7717004 4.2218669 11.5426797 -C 4.2218669 0.6510996 6.7193203 -C 9.9332669 0.6510996 11.5426797 -C 1.4895331 0.6510996 15.8503203 -C 10.7717004 1.4895331 2.4116797 -C 7.2009331 5.0603004 15.8503203 -C 6.3624996 7.2009331 2.4116797 -C 1.4895331 10.7717004 11.5426797 -C 0.6510996 1.4895331 6.7193203 -C 5.0603004 7.2009331 6.7193203 -C 7.2009331 6.3624996 11.5426797 -C 10.7717004 9.9332669 6.7193203 -C 9.9332669 10.7717004 15.8503203 -C 0.6510996 9.9332669 2.4116797 -C 5.0603004 4.2218669 2.4116797 -C 4.2218669 6.3624996 15.8503203 -C 6.3624996 4.2218669 6.7193203 -C 4.2218669 5.0603004 11.5426797 -H 6.7371674 4.3098224 11.9196074 -H 4.6856326 4.3098224 15.4733926 -H 7.1129776 4.6856326 2.7886074 -H 10.3970326 1.4015776 15.4733926 -H 10.0212224 10.3970326 2.7886074 -H 4.6856326 7.1129776 11.9196074 -H 4.3098224 4.6856326 6.3423926 -H 1.4015776 10.3970326 6.3423926 -H 10.3970326 10.0212224 11.9196074 -H 7.1129776 6.7371674 6.3423926 -H 6.7371674 7.1129776 15.4733926 -H 4.3098224 6.7371674 2.7886074 -H 1.4015776 1.0257674 2.7886074 -H 1.0257674 10.0212224 15.4733926 -H 10.0212224 1.0257674 6.3423926 -H 1.0257674 1.4015776 11.9196074 -H 10.3970326 4.3098224 6.3423926 -H 1.0257674 4.3098224 2.7886074 -H 7.1129776 1.0257674 15.4733926 -H 6.7371674 1.4015776 2.7886074 -H 10.0212224 6.7371674 15.4733926 -H 1.0257674 7.1129776 6.3423926 -H 4.3098224 1.0257674 11.9196074 -H 1.4015776 6.7371674 11.9196074 -H 6.7371674 10.0212224 6.3423926 -H 7.1129776 10.3970326 11.9196074 -H 10.3970326 7.1129776 2.7886074 -H 4.3098224 10.3970326 15.4733926 -H 1.4015776 4.6856326 15.4733926 -H 4.6856326 10.0212224 2.7886074 -H 10.0212224 4.6856326 11.9196074 -H 4.6856326 1.4015776 6.3423926 -H 10.3970326 1.4015776 11.9196074 -H 1.0257674 1.4015776 15.4733926 -H 10.0212224 1.0257674 2.7886074 -H 6.7371674 4.3098224 15.4733926 -H 7.1129776 6.7371674 2.7886074 -H 1.0257674 10.0212224 11.9196074 -H 1.4015776 1.0257674 6.3423926 -H 4.3098224 6.7371674 6.3423926 -H 6.7371674 7.1129776 11.9196074 -H 10.0212224 10.3970326 6.3423926 -H 10.3970326 10.0212224 15.4733926 -H 1.4015776 10.3970326 2.7886074 -H 4.3098224 4.6856326 2.7886074 -H 4.6856326 7.1129776 15.4733926 -H 7.1129776 4.6856326 6.3423926 -H 4.6856326 4.3098224 11.9196074 -H 6.6366468 5.4955091 10.8987616 -H 4.7861532 5.4955091 16.4942384 -H 5.9272909 4.7861532 1.7677616 -H 10.4975532 0.2158909 16.4942384 -H 11.2069091 10.4975532 1.7677616 -H 4.7861532 5.9272909 10.8987616 -H 5.4955091 4.7861532 7.3632384 -H 0.2158909 10.4975532 7.3632384 -H 10.4975532 11.2069091 10.8987616 -H 5.9272909 6.6366468 7.3632384 -H 6.6366468 5.9272909 16.4942384 -H 5.4955091 6.6366468 1.7677616 -H 0.2158909 0.9252468 1.7677616 -H 0.9252468 11.2069091 16.4942384 -H 11.2069091 0.9252468 7.3632384 -H 0.9252468 0.2158909 10.8987616 -H 10.4975532 5.4955091 7.3632384 -H 0.9252468 5.4955091 1.7677616 -H 5.9272909 0.9252468 16.4942384 -H 6.6366468 0.2158909 1.7677616 -H 11.2069091 6.6366468 16.4942384 -H 0.9252468 5.9272909 7.3632384 -H 5.4955091 0.9252468 10.8987616 -H 0.2158909 6.6366468 10.8987616 -H 6.6366468 11.2069091 7.3632384 -H 5.9272909 10.4975532 10.8987616 -H 10.4975532 5.9272909 1.7677616 -H 5.4955091 10.4975532 16.4942384 -H 0.2158909 4.7861532 16.4942384 -H 4.7861532 11.2069091 1.7677616 -H 11.2069091 4.7861532 10.8987616 -H 4.7861532 0.2158909 7.3632384 -H 10.4975532 0.2158909 10.8987616 -H 0.9252468 0.2158909 16.4942384 -H 11.2069091 0.9252468 1.7677616 -H 6.6366468 5.4955091 16.4942384 -H 5.9272909 6.6366468 1.7677616 -H 0.9252468 11.2069091 10.8987616 -H 0.2158909 0.9252468 7.3632384 -H 5.4955091 6.6366468 7.3632384 -H 6.6366468 5.9272909 10.8987616 -H 11.2069091 10.4975532 7.3632384 -H 10.4975532 11.2069091 16.4942384 -H 0.2158909 10.4975532 1.7677616 -H 5.4955091 4.7861532 1.7677616 -H 4.7861532 5.9272909 16.4942384 -H 5.9272909 4.7861532 7.3632384 -H 4.7861532 5.4955091 10.8987616 -H 7.4271046 5.6805584 12.2410186 -H 3.9956954 5.6805584 15.1519814 -H 5.7422416 3.9956954 3.1100186 -H 9.7070954 0.0308416 15.1519814 -H 11.3919584 9.7070954 3.1100186 -H 3.9956954 5.7422416 12.2410186 -H 5.6805584 3.9956954 6.0209814 -H 0.0308416 9.7070954 6.0209814 -H 9.7070954 11.3919584 12.2410186 -H 5.7422416 7.4271046 6.0209814 -H 7.4271046 5.7422416 15.1519814 -H 5.6805584 7.4271046 3.1100186 -H 0.0308416 1.7157046 3.1100186 -H 1.7157046 11.3919584 15.1519814 -H 11.3919584 1.7157046 6.0209814 -H 1.7157046 0.0308416 12.2410186 -H 9.7070954 5.6805584 6.0209814 -H 1.7157046 5.6805584 3.1100186 -H 5.7422416 1.7157046 15.1519814 -H 7.4271046 0.0308416 3.1100186 -H 11.3919584 7.4271046 15.1519814 -H 1.7157046 5.7422416 6.0209814 -H 5.6805584 1.7157046 12.2410186 -H 0.0308416 7.4271046 12.2410186 -H 7.4271046 11.3919584 6.0209814 -H 5.7422416 9.7070954 12.2410186 -H 9.7070954 5.7422416 3.1100186 -H 5.6805584 9.7070954 15.1519814 -H 0.0308416 3.9956954 15.1519814 -H 3.9956954 11.3919584 3.1100186 -H 11.3919584 3.9956954 12.2410186 -H 3.9956954 0.0308416 6.0209814 -H 9.7070954 0.0308416 12.2410186 -H 1.7157046 0.0308416 15.1519814 -H 11.3919584 1.7157046 3.1100186 -H 7.4271046 5.6805584 15.1519814 -H 5.7422416 7.4271046 3.1100186 -H 1.7157046 11.3919584 12.2410186 -H 0.0308416 1.7157046 6.0209814 -H 5.6805584 7.4271046 6.0209814 -H 7.4271046 5.7422416 12.2410186 -H 11.3919584 9.7070954 6.0209814 -H 9.7070954 11.3919584 15.1519814 -H 0.0308416 9.7070954 3.1100186 -H 5.6805584 3.9956954 3.1100186 -H 3.9956954 5.7422416 15.1519814 -H 5.7422416 3.9956954 6.0209814 -H 3.9956954 5.6805584 12.2410186 -C 7.6761216 11.1109576 10.0782499 -C 3.7466784 11.1109576 17.3147501 -C 0.3118424 3.7466784 0.9472499 -C 9.4580784 6.0232424 17.3147501 -C 5.3995576 9.4580784 0.9472499 -C 3.7466784 0.3118424 10.0782499 -C 11.1109576 3.7466784 8.1837501 -C 6.0232424 9.4580784 8.1837501 -C 9.4580784 5.3995576 10.0782499 -C 0.3118424 7.6761216 8.1837501 -C 7.6761216 0.3118424 17.3147501 -C 11.1109576 7.6761216 0.9472499 -C 6.0232424 1.9647216 0.9472499 -C 1.9647216 5.3995576 17.3147501 -C 5.3995576 1.9647216 8.1837501 -C 1.9647216 6.0232424 10.0782499 -C 9.4580784 6.0232424 10.0782499 -C 1.9647216 6.0232424 17.3147501 -C 5.3995576 1.9647216 0.9472499 -C 7.6761216 11.1109576 17.3147501 -C 0.3118424 7.6761216 0.9472499 -C 1.9647216 5.3995576 10.0782499 -C 6.0232424 1.9647216 8.1837501 -C 11.1109576 7.6761216 8.1837501 -C 7.6761216 0.3118424 10.0782499 -C 5.3995576 9.4580784 8.1837501 -C 9.4580784 5.3995576 17.3147501 -C 6.0232424 9.4580784 0.9472499 -C 11.1109576 3.7466784 0.9472499 -C 3.7466784 0.3118424 17.3147501 -C 0.3118424 3.7466784 8.1837501 -C 3.7466784 11.1109576 10.0782499 -C 7.6761216 6.0232424 8.1837501 -C 3.7466784 6.0232424 0.9472499 -C 5.3995576 3.7466784 17.3147501 -C 9.4580784 11.1109576 0.9472499 -C 0.3118424 9.4580784 17.3147501 -C 3.7466784 5.3995576 8.1837501 -C 6.0232424 3.7466784 10.0782499 -C 11.1109576 9.4580784 10.0782499 -C 9.4580784 0.3118424 8.1837501 -C 5.3995576 7.6761216 10.0782499 -C 7.6761216 5.3995576 0.9472499 -C 6.0232424 7.6761216 17.3147501 -C 11.1109576 1.9647216 17.3147501 -C 1.9647216 0.3118424 0.9472499 -C 0.3118424 1.9647216 10.0782499 -C 1.9647216 11.1109576 8.1837501 -H 9.7025263 6.5852442 10.8311922 -H 1.7202737 6.5852442 16.5618078 -H 4.8375558 1.7202737 1.7001922 -H 7.4316737 10.5489558 16.5618078 -H 0.8738442 7.4316737 1.7001922 -H 1.7202737 4.8375558 10.8311922 -H 6.5852442 1.7202737 7.4308078 -H 10.5489558 7.4316737 7.4308078 -H 7.4316737 0.8738442 10.8311922 -H 4.8375558 9.7025263 7.4308078 -H 9.7025263 4.8375558 16.5618078 -H 6.5852442 9.7025263 1.7001922 -H 10.5489558 3.9911263 1.7001922 -H 3.9911263 0.8738442 16.5618078 -H 0.8738442 3.9911263 7.4308078 -H 3.9911263 10.5489558 10.8311922 -H 7.4316737 6.5852442 7.4308078 -H 3.9911263 6.5852442 1.7001922 -H 4.8375558 3.9911263 16.5618078 -H 9.7025263 10.5489558 1.7001922 -H 0.8738442 9.7025263 16.5618078 -H 3.9911263 4.8375558 7.4308078 -H 6.5852442 3.9911263 10.8311922 -H 10.5489558 9.7025263 10.8311922 -H 9.7025263 0.8738442 7.4308078 -H 4.8375558 7.4316737 10.8311922 -H 7.4316737 4.8375558 1.7001922 -H 6.5852442 7.4316737 16.5618078 -H 10.5489558 1.7202737 16.5618078 -H 1.7202737 0.8738442 1.7001922 -H 0.8738442 1.7202737 10.8311922 -H 1.7202737 10.5489558 7.4308078 -H 7.4316737 10.5489558 10.8311922 -H 3.9911263 10.5489558 16.5618078 -H 0.8738442 3.9911263 1.7001922 -H 9.7025263 6.5852442 16.5618078 -H 4.8375558 9.7025263 1.7001922 -H 3.9911263 0.8738442 10.8311922 -H 10.5489558 3.9911263 7.4308078 -H 6.5852442 9.7025263 7.4308078 -H 9.7025263 4.8375558 10.8311922 -H 0.8738442 7.4316737 7.4308078 -H 7.4316737 0.8738442 16.5618078 -H 10.5489558 7.4316737 1.7001922 -H 6.5852442 1.7202737 1.7001922 -H 1.7202737 4.8375558 16.5618078 -H 4.8375558 1.7202737 7.4308078 -H 1.7202737 6.5852442 10.8311922 -H 10.2748086 5.7959287 9.6076382 -H 1.1479914 5.7959287 17.7853618 -H 5.6268713 1.1479914 0.4766382 -H 6.8593914 11.3382713 17.7853618 -H 0.0845287 6.8593914 0.4766382 -H 1.1479914 5.6268713 9.6076382 -H 5.7959287 1.1479914 8.6543618 -H 11.3382713 6.8593914 8.6543618 -H 6.8593914 0.0845287 9.6076382 -H 5.6268713 10.2748086 8.6543618 -H 10.2748086 5.6268713 17.7853618 -H 5.7959287 10.2748086 0.4766382 -H 11.3382713 4.5634086 0.4766382 -H 4.5634086 0.0845287 17.7853618 -H 0.0845287 4.5634086 8.6543618 -H 4.5634086 11.3382713 9.6076382 -H 6.8593914 5.7959287 8.6543618 -H 4.5634086 5.7959287 0.4766382 -H 5.6268713 4.5634086 17.7853618 -H 10.2748086 11.3382713 0.4766382 -H 0.0845287 10.2748086 17.7853618 -H 4.5634086 5.6268713 8.6543618 -H 5.7959287 4.5634086 9.6076382 -H 11.3382713 10.2748086 9.6076382 -H 10.2748086 0.0845287 8.6543618 -H 5.6268713 6.8593914 9.6076382 -H 6.8593914 5.6268713 0.4766382 -H 5.7959287 6.8593914 17.7853618 -H 11.3382713 1.1479914 17.7853618 -H 1.1479914 0.0845287 0.4766382 -H 0.0845287 1.1479914 9.6076382 -H 1.1479914 11.3382713 8.6543618 -H 6.8593914 11.3382713 9.6076382 -H 4.5634086 11.3382713 17.7853618 -H 0.0845287 4.5634086 0.4766382 -H 10.2748086 5.7959287 17.7853618 -H 5.6268713 10.2748086 0.4766382 -H 4.5634086 0.0845287 9.6076382 -H 11.3382713 4.5634086 8.6543618 -H 5.7959287 10.2748086 8.6543618 -H 10.2748086 5.6268713 9.6076382 -H 0.0845287 6.8593914 8.6543618 -H 6.8593914 0.0845287 17.7853618 -H 11.3382713 6.8593914 0.4766382 -H 5.7959287 1.1479914 0.4766382 -H 1.1479914 5.6268713 17.7853618 -H 5.6268713 1.1479914 8.6543618 -H 1.1479914 5.7959287 9.6076382 -C 8.5671000 6.8433995 9.1310000 -C 2.8557000 6.8433995 0.0000000 -C 4.5794005 2.8557000 0.0000000 -C 8.5671000 10.2908005 0.0000000 -C 1.1319995 8.5671000 0.0000000 -C 2.8557000 4.5794005 9.1310000 -C 6.8433995 2.8557000 9.1310000 -C 10.2908005 8.5671000 9.1310000 -C 8.5671000 1.1319995 9.1310000 -C 4.5794005 8.5671000 9.1310000 -C 8.5671000 4.5794005 0.0000000 -C 6.8433995 8.5671000 0.0000000 -C 10.2908005 2.8557000 0.0000000 -C 2.8557000 1.1319995 0.0000000 -C 1.1319995 2.8557000 9.1310000 -C 2.8557000 10.2908005 9.1310000 -H 7.9971023 7.4179663 9.6660766 -H 3.4256977 7.4179663 17.7269234 -H 4.0048337 3.4256977 0.5350766 -H 9.1370977 9.7162337 17.7269234 -H 1.7065663 9.1370977 0.5350766 -H 3.4256977 4.0048337 9.6660766 -H 7.4179663 3.4256977 8.5959234 -H 9.7162337 9.1370977 8.5959234 -H 9.1370977 1.7065663 9.6660766 -H 4.0048337 7.9971023 8.5959234 -H 7.9971023 4.0048337 17.7269234 -H 7.4179663 7.9971023 0.5350766 -H 9.7162337 2.2857023 0.5350766 -H 2.2857023 1.7065663 17.7269234 -H 1.7065663 2.2857023 8.5959234 -H 2.2857023 9.7162337 9.6660766 -H 9.1370977 7.4179663 8.5959234 -H 2.2857023 7.4179663 0.5350766 -H 4.0048337 2.2857023 17.7269234 -H 7.9971023 9.7162337 0.5350766 -H 1.7065663 7.9971023 17.7269234 -H 2.2857023 4.0048337 8.5959234 -H 7.4179663 2.2857023 9.6660766 -H 9.7162337 7.9971023 9.6660766 -H 7.9971023 1.7065663 8.5959234 -H 4.0048337 9.1370977 9.6660766 -H 9.1370977 4.0048337 0.5350766 -H 7.4179663 9.1370977 17.7269234 -H 9.7162337 3.4256977 17.7269234 -H 3.4256977 1.7065663 0.5350766 -H 1.7065663 3.4256977 9.6660766 -H 3.4256977 9.7162337 8.5959234 diff --git a/cell2mol/test/YETBUV/YETBUV_ref.xyz b/cell2mol/test/YETBUV/YETBUV_ref.xyz deleted file mode 100644 index 3049eaa5f..000000000 --- a/cell2mol/test/YETBUV/YETBUV_ref.xyz +++ /dev/null @@ -1,64 +0,0 @@ -62 - -Co 0.7500000 0.2500000 0.5000000 -Cl 0.9474600 0.2500000 0.5000000 -Cl 0.2500000 0.2500000 0.2500000 -P 0.7635500 0.1072300 0.4126700 -O 0.1566000 0.2452000 0.2917000 -C 0.8621000 0.1351000 0.3363800 -H 0.9360000 0.1625000 0.3547000 -H 0.8286000 0.1935000 0.3049000 -H 0.8738000 0.0641000 0.3092000 -C 0.6304000 0.0570000 0.3679400 -H 0.5898000 0.1227000 0.3473000 -H 0.5810000 0.0189000 0.4032000 -H 0.6502000 0.0027000 0.3297000 -C 0.8280000 -0.0273000 0.4481300 -H 0.8494000 -0.0765000 0.4069000 -H 0.8995000 -0.0074000 0.4739000 -C 0.7500000 -0.0991000 0.5000000 -H 0.7001000 -0.1494000 0.4707000 -H 0.7999000 -0.1494000 0.5293000 -Cl 0.5525400 0.2500000 0.5000000 -P 0.7364500 0.1072300 0.5873300 -P 0.7635500 0.3927700 0.5873300 -P 0.7364500 0.3927700 0.4126700 -O 0.2452000 0.1566000 0.2083000 -O 0.2548000 0.3434000 0.2083000 -O 0.3434000 0.2548000 0.2917000 -C 0.8621000 0.3649000 0.6636200 -C 0.6379000 0.3649000 0.3363800 -C 0.6379000 0.1351000 0.6636200 -H 0.9360000 0.3375000 0.6453000 -H 0.5640000 0.3375000 0.3547000 -H 0.5640000 0.1625000 0.6453000 -H 0.8286000 0.3065000 0.6951000 -H 0.6714000 0.3065000 0.3049000 -H 0.6714000 0.1935000 0.6951000 -H 0.8738000 0.4359000 0.6908000 -H 0.6262000 0.4359000 0.3092000 -H 0.6262000 0.0641000 0.6908000 -C 0.6304000 0.4430000 0.6320600 -C 0.8696000 0.4430000 0.3679400 -C 0.8696000 0.0570000 0.6320600 -H 0.5898000 0.3773000 0.6527000 -H 0.9102000 0.3773000 0.3473000 -H 0.9102000 0.1227000 0.6527000 -H 0.5810000 0.4811000 0.5968000 -H 0.9190000 0.4811000 0.4032000 -H 0.9190000 0.0189000 0.5968000 -H 0.6502000 0.4973000 0.6703000 -H 0.8498000 0.4973000 0.3297000 -H 0.8498000 0.0027000 0.6703000 -C 0.6720000 -0.0273000 0.5518700 -C 0.8280000 0.5273000 0.5518700 -C 0.6720000 0.5273000 0.4481300 -H 0.8494000 0.5765000 0.5931000 -H 0.6506000 0.5765000 0.4069000 -H 0.6506000 -0.0765000 0.5931000 -H 0.8995000 0.5074000 0.5261000 -H 0.6005000 0.5074000 0.4739000 -H 0.6005000 -0.0074000 0.5261000 -C 0.7500000 0.5991000 0.5000000 -H 0.7001000 0.6494000 0.5293000 -H 0.7999000 0.6494000 0.4707000 diff --git a/cell2mol/test/YETBUV/cell2mol.out b/cell2mol/test/YETBUV/cell2mol.out deleted file mode 100644 index bc22ec913..000000000 --- a/cell2mol/test/YETBUV/cell2mol.out +++ /dev/null @@ -1,457 +0,0 @@ -cell2mol version 2.0 -INITIATING cell object from info path: /Users/ycho/cell2mol/cell2mol/test/YETBUV/YETBUV.info -Debug level: 2 -######################################### - GETREFS: Generate reference molecules -######################################### -GETREFS: found 2 reference molecules -GETREFS: ['O4-Cl', 'H36-C14-P4-Cl2-Co'] -GETREFS: [------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 5 - Formula = O4-Cl - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 57 - Formula = H36-C14-P4-Cl2-Co - Has Adjacency Matrix = YES - Number of Ligands = 4 - Number of Metals = 1 ---------------------------------------------------- -] -GETREFS: working with O4-Cl -GETREFS: working with H36-C14-P4-Cl2-Co - -LIGAND.SPLIT_LIGAND: splitting H18-C7-P2 into groups -LIGAND.SPLIT_LIGAND: self.indices=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26] -LIGAND.SPLIT_LIGAND: connected_idx=[0, 15] -LIGAND.SPLIT_LIGAND: conn_labels=['P', 'P'] -SPILT_SPECIES: Laplacian lap=array([[0, 0], - [0, 0]]) -SPILT_SPECIES: graph=<2x2 sparse matrix of type '' - with 0 stored elements in Compressed Sparse Row format> -LIGAND.SPLIT_LIGAND: blocklist=[[1], [0]] -LIGAND.SPLIT_LIGAND: block=[1] -EXTRACT_FROM_LIST. received: entrylist=[1] old_array=[0, 15] -EXTRACT_FROM_LIST. received: idx=0 val=1 old_array[val]=15 -EXTRACT_FROM_LIST. new_array=array([15], dtype=object) -LIGAND.SPLIT_LIGAND: gr_indices=[15] -EXTRACT_FROM_LIST. received: entrylist=[1] old_array=['P', 'P'] -EXTRACT_FROM_LIST. received: idx=0 val=1 old_array[val]='P' -EXTRACT_FROM_LIST. new_array=array(['P'], dtype=object) -Entering COORD_CORR_NONHAPTIC: - Coordinating atom label=P with mconnec=1, group index 0 - evaluating coordination with metal Co - -------------- Cell2mol METAL Object -------------- - Version = 0.1 - Type = atom - Sub-Type = metal - Label = Co - Atomic Number = 27 - Index in Molecule = 0 - Metal Adjacency (mconnec) = 6 - Regular Adjacencies (connec) = 6 ----------------------------------------------------- - -ADD_ATOM: Metalist length 1 -ADD_ATOM: Ligand Atoms 27 -ADD_ATOM: site= 15 -ADD_ATOM: target ligand atom P -ADD_ATOM: evaluating apos=array([ 8.41232106, 1.22486684, 10.72582046]) and tgt.coord=[8.5671, 2.8557000000000006, 9.131] -ADD_ATOM: Chosen Metal index 0. H is added at site 15 - connectivity verified for atom P with ligand index 15 -LIGAND.SPLIT_LIGAND: new group is found -LIGAND.SPLIT_LIGAND: block=[0] -EXTRACT_FROM_LIST. received: entrylist=[0] old_array=[0, 15] -EXTRACT_FROM_LIST. received: idx=0 val=0 old_array[val]=0 -EXTRACT_FROM_LIST. new_array=array([0], dtype=object) -LIGAND.SPLIT_LIGAND: gr_indices=[0] -EXTRACT_FROM_LIST. received: entrylist=[0] old_array=['P', 'P'] -EXTRACT_FROM_LIST. received: idx=0 val=0 old_array[val]='P' -EXTRACT_FROM_LIST. new_array=array(['P'], dtype=object) -Entering COORD_CORR_NONHAPTIC: - Coordinating atom label=P with mconnec=1, group index 0 - evaluating coordination with metal Co - -------------- Cell2mol METAL Object -------------- - Version = 0.1 - Type = atom - Sub-Type = metal - Label = Co - Atomic Number = 27 - Index in Molecule = 0 - Metal Adjacency (mconnec) = 6 - Regular Adjacencies (connec) = 6 ----------------------------------------------------- - -ADD_ATOM: Metalist length 1 -ADD_ATOM: Ligand Atoms 27 -ADD_ATOM: site= 0 -ADD_ATOM: target ligand atom P -ADD_ATOM: evaluating apos=array([8.72187894, 1.22486684, 7.53617954]) and tgt.coord=[8.5671, 2.8557000000000006, 9.131] -ADD_ATOM: Chosen Metal index 0. H is added at site 0 - connectivity verified for atom P with ligand index 0 -LIGAND.SPLIT_LIGAND: new group is found -LIGAND.SPLIT_LIGAND: found groups ['P', 'P'] -[------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 1 - Formula = P - Has Adjacency Matrix = YES - Origin = split_ligand - Number of Metals = 1 ---------------------------------------------------- -, ------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 1 - Formula = P - Has Adjacency Matrix = YES - Origin = split_ligand - Number of Metals = 1 ---------------------------------------------------- -] - -LIGAND.SPLIT_LIGAND: splitting H18-C7-P2 into groups -LIGAND.SPLIT_LIGAND: self.indices=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26] -LIGAND.SPLIT_LIGAND: connected_idx=[0, 1] -LIGAND.SPLIT_LIGAND: conn_labels=['P', 'P'] -SPILT_SPECIES: Laplacian lap=array([[0, 0], - [0, 0]]) -SPILT_SPECIES: graph=<2x2 sparse matrix of type '' - with 0 stored elements in Compressed Sparse Row format> -LIGAND.SPLIT_LIGAND: blocklist=[[1], [0]] -LIGAND.SPLIT_LIGAND: block=[1] -EXTRACT_FROM_LIST. received: entrylist=[1] old_array=[0, 1] -EXTRACT_FROM_LIST. received: idx=0 val=1 old_array[val]=1 -EXTRACT_FROM_LIST. new_array=array([1], dtype=object) -LIGAND.SPLIT_LIGAND: gr_indices=[1] -EXTRACT_FROM_LIST. received: entrylist=[1] old_array=['P', 'P'] -EXTRACT_FROM_LIST. received: idx=0 val=1 old_array[val]='P' -EXTRACT_FROM_LIST. new_array=array(['P'], dtype=object) -Entering COORD_CORR_NONHAPTIC: - Coordinating atom label=P with mconnec=1, group index 0 - evaluating coordination with metal Co - -------------- Cell2mol METAL Object -------------- - Version = 0.1 - Type = atom - Sub-Type = metal - Label = Co - Atomic Number = 27 - Index in Molecule = 0 - Metal Adjacency (mconnec) = 6 - Regular Adjacencies (connec) = 6 ----------------------------------------------------- - -ADD_ATOM: Metalist length 1 -ADD_ATOM: Ligand Atoms 27 -ADD_ATOM: site= 1 -ADD_ATOM: target ligand atom P -ADD_ATOM: evaluating apos=array([8.41232106, 4.48653316, 7.53617954]) and tgt.coord=[8.5671, 2.8557000000000006, 9.131] -ADD_ATOM: Chosen Metal index 0. H is added at site 1 - connectivity verified for atom P with ligand index 1 -LIGAND.SPLIT_LIGAND: new group is found -LIGAND.SPLIT_LIGAND: block=[0] -EXTRACT_FROM_LIST. received: entrylist=[0] old_array=[0, 1] -EXTRACT_FROM_LIST. received: idx=0 val=0 old_array[val]=0 -EXTRACT_FROM_LIST. new_array=array([0], dtype=object) -LIGAND.SPLIT_LIGAND: gr_indices=[0] -EXTRACT_FROM_LIST. received: entrylist=[0] old_array=['P', 'P'] -EXTRACT_FROM_LIST. received: idx=0 val=0 old_array[val]='P' -EXTRACT_FROM_LIST. new_array=array(['P'], dtype=object) -Entering COORD_CORR_NONHAPTIC: - Coordinating atom label=P with mconnec=1, group index 0 - evaluating coordination with metal Co - -------------- Cell2mol METAL Object -------------- - Version = 0.1 - Type = atom - Sub-Type = metal - Label = Co - Atomic Number = 27 - Index in Molecule = 0 - Metal Adjacency (mconnec) = 6 - Regular Adjacencies (connec) = 6 ----------------------------------------------------- - -ADD_ATOM: Metalist length 1 -ADD_ATOM: Ligand Atoms 27 -ADD_ATOM: site= 0 -ADD_ATOM: target ligand atom P -ADD_ATOM: evaluating apos=array([ 8.72187894, 4.48653316, 10.72582046]) and tgt.coord=[8.5671, 2.8557000000000006, 9.131] -ADD_ATOM: Chosen Metal index 0. H is added at site 0 - connectivity verified for atom P with ligand index 0 -LIGAND.SPLIT_LIGAND: new group is found -LIGAND.SPLIT_LIGAND: found groups ['P', 'P'] -[------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 1 - Formula = P - Has Adjacency Matrix = YES - Origin = split_ligand - Number of Metals = 1 ---------------------------------------------------- -, ------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 1 - Formula = P - Has Adjacency Matrix = YES - Origin = split_ligand - Number of Metals = 1 ---------------------------------------------------- -] - -LIGAND.SPLIT_LIGAND: splitting Cl into groups -LIGAND.SPLIT_LIGAND: self.indices=[0] -LIGAND.SPLIT_LIGAND: connected_idx=[0] -LIGAND.SPLIT_LIGAND: conn_labels=['Cl'] -SPILT_SPECIES: Laplacian lap=array([[0]]) -SPILT_SPECIES: graph=<1x1 sparse matrix of type '' - with 0 stored elements in Compressed Sparse Row format> -LIGAND.SPLIT_LIGAND: blocklist=[[0]] -LIGAND.SPLIT_LIGAND: block=[0] -EXTRACT_FROM_LIST. received: entrylist=[0] old_array=[0] -EXTRACT_FROM_LIST. received: idx=0 val=0 old_array[val]=0 -EXTRACT_FROM_LIST. new_array=array([0], dtype=object) -LIGAND.SPLIT_LIGAND: gr_indices=[0] -EXTRACT_FROM_LIST. received: entrylist=[0] old_array=['Cl'] -EXTRACT_FROM_LIST. received: idx=0 val=0 old_array[val]='Cl' -EXTRACT_FROM_LIST. new_array=array(['Cl'], dtype=object) -Entering COORD_CORR_NONHAPTIC: - Coordinating atom label=Cl with mconnec=1, group index 0 - evaluating coordination with metal Co - -------------- Cell2mol METAL Object -------------- - Version = 0.1 - Type = atom - Sub-Type = metal - Label = Co - Atomic Number = 27 - Index in Molecule = 0 - Metal Adjacency (mconnec) = 6 - Regular Adjacencies (connec) = 6 ----------------------------------------------------- - -ADD_ATOM: Metalist length 1 -ADD_ATOM: Ligand Atoms 1 -ADD_ATOM: site= 0 -ADD_ATOM: target ligand atom Cl -ADD_ATOM: evaluating apos=array([6.31155391, 2.8557 , 9.131 ]) and tgt.coord=[8.5671, 2.8557000000000006, 9.131] -ADD_ATOM: Chosen Metal index 0. H is added at site 0 - connectivity verified for atom Cl with ligand index 0 -LIGAND.SPLIT_LIGAND: new group is found -LIGAND.SPLIT_LIGAND: found groups ['Cl'] -[------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 1 - Formula = Cl - Has Adjacency Matrix = YES - Origin = split_ligand - Number of Metals = 1 ---------------------------------------------------- -] - -LIGAND.SPLIT_LIGAND: splitting Cl into groups -LIGAND.SPLIT_LIGAND: self.indices=[0] -LIGAND.SPLIT_LIGAND: connected_idx=[0] -LIGAND.SPLIT_LIGAND: conn_labels=['Cl'] -SPILT_SPECIES: Laplacian lap=array([[0]]) -SPILT_SPECIES: graph=<1x1 sparse matrix of type '' - with 0 stored elements in Compressed Sparse Row format> -LIGAND.SPLIT_LIGAND: blocklist=[[0]] -LIGAND.SPLIT_LIGAND: block=[0] -EXTRACT_FROM_LIST. received: entrylist=[0] old_array=[0] -EXTRACT_FROM_LIST. received: idx=0 val=0 old_array[val]=0 -EXTRACT_FROM_LIST. new_array=array([0], dtype=object) -LIGAND.SPLIT_LIGAND: gr_indices=[0] -EXTRACT_FROM_LIST. received: entrylist=[0] old_array=['Cl'] -EXTRACT_FROM_LIST. received: idx=0 val=0 old_array[val]='Cl' -EXTRACT_FROM_LIST. new_array=array(['Cl'], dtype=object) -Entering COORD_CORR_NONHAPTIC: - Coordinating atom label=Cl with mconnec=1, group index 0 - evaluating coordination with metal Co - -------------- Cell2mol METAL Object -------------- - Version = 0.1 - Type = atom - Sub-Type = metal - Label = Co - Atomic Number = 27 - Index in Molecule = 0 - Metal Adjacency (mconnec) = 6 - Regular Adjacencies (connec) = 6 ----------------------------------------------------- - -ADD_ATOM: Metalist length 1 -ADD_ATOM: Ligand Atoms 1 -ADD_ATOM: site= 0 -ADD_ATOM: target ligand atom Cl -ADD_ATOM: evaluating apos=array([10.82264609, 2.8557 , 9.131 ]) and tgt.coord=[8.5671, 2.8557000000000006, 9.131] -ADD_ATOM: Chosen Metal index 0. H is added at site 0 - connectivity verified for atom Cl with ligand index 0 -LIGAND.SPLIT_LIGAND: new group is found -LIGAND.SPLIT_LIGAND: found groups ['Cl'] -[------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 1 - Formula = Cl - Has Adjacency Matrix = YES - Origin = split_ligand - Number of Metals = 1 ---------------------------------------------------- -] -LIGAND.Get_denticity: checking connectivity of ligand H18-C7-P2 -LIGAND.Get_denticity: initial connectivity is 2 -LIGAND.Get_denticity: final connectivity of ligand H18-C7-P2 is 2 -LIGAND.Get_denticity: checking connectivity of ligand H18-C7-P2 -LIGAND.Get_denticity: initial connectivity is 2 -LIGAND.Get_denticity: final connectivity of ligand H18-C7-P2 is 2 -LIGAND.Get_denticity: checking connectivity of ligand Cl -LIGAND.Get_denticity: initial connectivity is 1 -LIGAND.Get_denticity: final connectivity of ligand Cl is 1 -LIGAND.Get_denticity: checking connectivity of ligand Cl -LIGAND.Get_denticity: initial connectivity is 1 -LIGAND.Get_denticity: final connectivity of ligand Cl is 1 - -METAL.Get_coord_geometry: Co -METAL.Get_coord_geometry: -coord_group=[------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 1 - Formula = P - Has Adjacency Matrix = YES - Origin = split_ligand - Number of Metals = 1 ---------------------------------------------------- -, ------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 1 - Formula = P - Has Adjacency Matrix = YES - Origin = split_ligand - Number of Metals = 1 ---------------------------------------------------- -, ------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 1 - Formula = P - Has Adjacency Matrix = YES - Origin = split_ligand - Number of Metals = 1 ---------------------------------------------------- -, ------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 1 - Formula = P - Has Adjacency Matrix = YES - Origin = split_ligand - Number of Metals = 1 ---------------------------------------------------- -, ------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 1 - Formula = Cl - Has Adjacency Matrix = YES - Origin = split_ligand - Number of Metals = 1 ---------------------------------------------------- -, ------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 1 - Formula = Cl - Has Adjacency Matrix = YES - Origin = split_ligand - Number of Metals = 1 ---------------------------------------------------- -] -METAL.Get_coord_geometry: coord_nr=6 -SHAPE_MEASURE: symbols=['Co', 'P', 'P', 'P', 'P', 'Cl', 'Cl'] -SHAPE_MEASURE: positions=[[8.5671, 2.8557000000000006, 9.131], [8.412321060000002, 1.2248668440000008, 10.725820460000001], [8.72187894, 1.2248668440000006, 7.53617954], [8.412321060000002, 4.486533156000001, 7.53617954], [8.72187894, 4.486533156000001, 10.725820460000001], [6.311553912000002, 2.8557000000000006, 9.131], [10.822646088, 2.8557000000000006, 9.131]] -SHAPE_MEASURE: coordination number of metal center 6 -SHAPE_MEASURE: connectivity of metal center(1) [[1, 2], [1, 3], [1, 4], [1, 5], [1, 6], [1, 7]] -DEFINE_coordination_geometry: The number of coordinating points: 6 -DEFINE_coordination_geometry: {'Hexagon': 33.049, 'Pentagonal pyramidal': 27.536, 'Octahedral': 0.319, 'Trigonal prismatic': 14.615} -DEFINE_coordination_geometry: The type of hapticity : [] -DEFINE_coordination_geometry: The most likely geometry is 'Octahedral' with deviation value 0.319 -METAL.Get_coord_geometry: self.coord_geometry='Octahedral' self.geom_deviation=0.319 -METAL.Get_relative_metal_radius: diff_list=[1.216, 1.216, 1.216, 1.216, 1.236, 1.236] -METAL.Get_relative_metal_radius: average=1.223 -METAL.Get_coord_geometry: self.rel_metal_radius=0.971 - -################## -Checking Missing H -################## -Not a Single Molecule has Missing H atoms (apparently) -------------------------------- -Errors in Reference Molecules -------------------------------- -Cell2mol terminated with error number 0. Message: -No Errors Found - -SAVING cell2mol CELL object to /Users/ycho/cell2mol/cell2mol/test/YETBUV/Ref_Cell_YETBUV.cell -ENTERING cell2mol with debug=2 -Entered CELL.MOLECLIST with debug=2 -CELL.MOLECLIST passed initial checks -Adjacency Matrix: Distance 0.062 smaller than clash for atoms 179 762 H H -Adjacency Matrix: Distance 0.062 smaller than clash for atoms 180 763 H H -Adjacency Matrix: Distance 0.062 smaller than clash for atoms 183 761 H H -Adjacency Matrix: Distance 0.062 smaller than clash for atoms 184 752 H H -Adjacency Matrix: Distance 0.062 smaller than clash for atoms 188 754 H H -Adjacency Matrix: Distance 0.062 smaller than clash for atoms 189 753 H H -Adjacency Matrix: Distance 0.062 smaller than clash for atoms 190 758 H H -Adjacency Matrix: Distance 0.062 smaller than clash for atoms 191 757 H H -Adjacency Matrix: Distance 0.169 smaller than clash for atoms 227 906 H H -Adjacency Matrix: Distance 0.169 smaller than clash for atoms 228 907 H H -Adjacency Matrix: Distance 0.169 smaller than clash for atoms 231 905 H H -Adjacency Matrix: Distance 0.169 smaller than clash for atoms 232 896 H H -Adjacency Matrix: Distance 0.169 smaller than clash for atoms 236 898 H H -Adjacency Matrix: Distance 0.169 smaller than clash for atoms 237 897 H H -Adjacency Matrix: Distance 0.169 smaller than clash for atoms 238 902 H H -Adjacency Matrix: Distance 0.169 smaller than clash for atoms 239 901 H H -Adjacency Matrix: Distance 0.062 smaller than clash for atoms 736 776 H H -Adjacency Matrix: Distance 0.062 smaller than clash for atoms 737 781 H H -Adjacency Matrix: Distance 0.062 smaller than clash for atoms 738 780 H H -Adjacency Matrix: Distance 0.062 smaller than clash for atoms 741 783 H H -Adjacency Matrix: Distance 0.062 smaller than clash for atoms 742 782 H H -Adjacency Matrix: Distance 0.062 smaller than clash for atoms 745 775 H H -Adjacency Matrix: Distance 0.062 smaller than clash for atoms 746 771 H H -Adjacency Matrix: Distance 0.062 smaller than clash for atoms 747 772 H H -Adjacency Matrix: Distance 0.169 smaller than clash for atoms 880 920 H H -Adjacency Matrix: Distance 0.169 smaller than clash for atoms 881 925 H H -Adjacency Matrix: Distance 0.169 smaller than clash for atoms 882 924 H H -Adjacency Matrix: Distance 0.169 smaller than clash for atoms 885 927 H H -Adjacency Matrix: Distance 0.169 smaller than clash for atoms 886 926 H H -Adjacency Matrix: Distance 0.169 smaller than clash for atoms 889 919 H H -Adjacency Matrix: Distance 0.169 smaller than clash for atoms 890 915 H H -Adjacency Matrix: Distance 0.169 smaller than clash for atoms 891 916 H H diff --git a/cell2mol/test/YETBUV/cif2cell.err b/cell2mol/test/YETBUV/cif2cell.err deleted file mode 100644 index e69de29bb..000000000 diff --git a/cell2mol/test/YOBCUO/YOBCUO.cell b/cell2mol/test/YOBCUO/YOBCUO.cell deleted file mode 100644 index ae965e7a9..000000000 Binary files a/cell2mol/test/YOBCUO/YOBCUO.cell and /dev/null differ diff --git a/cell2mol/test/YOBCUO/YOBCUO.info b/cell2mol/test/YOBCUO/YOBCUO.info deleted file mode 100644 index d567e916b..000000000 --- a/cell2mol/test/YOBCUO/YOBCUO.info +++ /dev/null @@ -1,282 +0,0 @@ -CIF2CELL 2.0.0 -2024-02-22 12:12 -Output for None (bromo-(N-(2-(((2,6-diisopropylphenyl)imino)methyl)phenyl)-2,4,6-trimethylbenze -nesulfonamido)-tetrahydrofuran-nickel(ii)) -CIF file exported from Cambridge Structural Database. -Database reference code: YOBCUO. - BIBLIOGRAPHIC INFORMATION -Jianfeng Li et al., Organometallics 27, 1605- (2008) - INPUT CELL INFORMATION -Symmetry information: -Triclinic crystal system. -Space group number : 2 -Hall symbol : -P 1 -Hermann-Mauguin symbol : P-1 - -Lattice parameters: - a b c - 8.2770000 9.6480000 20.5740000 - alpha beta gamma - 77.6990000 81.8380000 77.8030000 -Representative sites : -Atom x y z -Ni 0.5463000 0.2310600 0.2301700 -Br 0.3011800 0.4074600 0.2357470 -S 0.6553000 0.0753900 0.1273000 -N 0.5779000 0.1545000 0.3282100 -N 0.6623000 0.0444000 0.2073200 -O 0.5337000 0.2116000 0.1192600 -O 0.8173000 0.0786000 0.0909200 -O 0.7298000 0.3470000 0.1994000 -C 0.4677000 0.2207000 0.3797500 -C 0.4860000 0.3534000 0.3911800 -C 0.3759000 0.4146000 0.4402600 -H 0.3895000 0.5028000 0.4504000 -C 0.2465000 0.3472000 0.4743700 -H 0.1709000 0.3906000 0.5068000 -C 0.2289000 0.2181000 0.4608600 -H 0.1407000 0.1730000 0.4845000 -C 0.3380000 0.1508000 0.4128500 -C 0.6246000 0.4314000 0.3533400 -H 0.6572000 0.3963000 0.3101000 -C 0.5696000 0.5941000 0.3360000 -H 0.4687000 0.6171000 0.3130000 -H 0.6580000 0.6364000 0.3068000 -H 0.5468000 0.6338000 0.3772000 -C 0.7777000 0.3892000 0.3917000 -H 0.7516000 0.4247000 0.4339000 -H 0.8687000 0.4320000 0.3648000 -H 0.8110000 0.2838000 0.4011000 -C 0.3005000 0.0166000 0.3945400 -H 0.3919000 -0.0171000 0.3609000 -C 0.1370000 0.0546000 0.3618000 -H 0.0437000 0.0772000 0.3953000 -H 0.1229000 -0.0278000 0.3437000 -H 0.1401000 0.1386000 0.3255000 -C 0.2939000 -0.1074000 0.4549600 -H 0.4019000 -0.1350000 0.4731000 -H 0.2680000 -0.1904000 0.4410000 -H 0.2077000 -0.0758000 0.4894000 -C 0.6751000 0.0354000 0.3492900 -H 0.6798000 0.0113000 0.3963000 -C 0.7795000 -0.0681000 0.3110800 -C 0.8865000 -0.1819000 0.3472000 -H 0.8876000 -0.1853000 0.3936000 -C 0.9908000 -0.2897000 0.3180300 -H 1.0654000 -0.3633000 0.3432000 -C 0.9821000 -0.2862000 0.2504700 -H 1.0517000 -0.3597000 0.2297000 -C 0.8748000 -0.1785000 0.2123500 -H 0.8711000 -0.1802000 0.1666000 -C 0.7708000 -0.0657000 0.2418700 -C 0.5662000 -0.0593000 0.1055800 -C 0.4101000 -0.0863000 0.1394900 -C 0.3370000 -0.1851000 0.1203600 -H 0.2348000 -0.2053000 0.1440000 -C 0.4066000 -0.2570000 0.0677300 -C 0.5587000 -0.2297000 0.0358900 -H 0.6087000 -0.2787000 0.0005000 -C 0.6426000 -0.1329000 0.0534100 -C 0.3168000 -0.0130000 0.1966000 -H 0.3800000 -0.0442000 0.2357000 -H 0.2072000 -0.0400000 0.2083000 -H 0.3035000 0.0920000 0.1824000 -C 0.3195000 -0.3623000 0.0479700 -H 0.3837000 -0.3991000 0.0094000 -H 0.2083000 -0.3131000 0.0362000 -H 0.3100000 -0.4429000 0.0855000 -C 0.8091000 -0.1155000 0.0129200 -H 0.8047000 -0.0142000 -0.0090000 -H 0.8318000 -0.1764000 -0.0210000 -H 0.8975000 -0.1446000 0.0428000 -C 0.9084000 0.2867000 0.1989700 -H 0.9282000 0.1798000 0.2070000 -H 0.9565000 0.3170000 0.2339000 -C 0.9836000 0.3465000 0.1301600 -H 0.9724000 0.2892000 0.0970000 -H 1.1023000 0.3498000 0.1302000 -C 0.8781000 0.4980000 0.1165000 -H 0.9190000 0.5649000 0.1379000 -H 0.8795000 0.5366000 0.0679000 -C 0.7050000 0.4775000 0.1471300 -H 0.6462000 0.5621000 0.1666000 -H 0.6392000 0.4645000 0.1130000 - - OUTPUT CELL INFORMATION -Symmetry information: -Triclinic crystal system. -Space group number : 2 -Hall symbol : -P 1 -Hermann-Mauguin symbol : P-1 - -Bravais lattice vectors : - 8.2770000 0.0000000 0.0000000 - 2.0383679 9.4302153 0.0000000 - 2.9209413 3.8530963 19.9977805 -All sites, (cartesian coordinates): -Atom x y z -Ni 5.6650235 3.0658127 4.6028891 -Ni 7.5712858 10.2174988 15.3948914 -Br 4.0120234 4.7507914 4.7144168 -Br 9.2242858 8.5325201 15.2833638 -S 5.9494265 1.2014431 2.5457175 -S 7.2868827 12.0818685 17.4520631 -N 6.0568883 2.7215930 6.5634716 -N 7.1794209 10.5617186 13.4343090 -N 6.1779302 1.2175255 4.1459399 -N 7.0583790 12.0657861 15.8518407 -O 5.1971050 2.4549538 2.3849353 -O 8.0392042 10.8283577 17.6128452 -O 7.1905798 1.0915384 1.8181982 -O 6.0457294 12.1917731 18.1795823 -O 7.3303040 4.0405921 3.9875574 -O 5.9060053 9.2427195 16.0102231 -C 5.4302482 3.5444618 7.5941572 -C 7.8060611 9.7388497 12.4036234 -C 5.8855950 4.8398923 7.8227318 -C 7.3507142 8.4434193 12.1750488 -C 5.2424053 5.6061314 8.8042229 -C 7.9939040 7.6771801 11.1935577 -H 5.5643749 6.4769468 9.0070004 -H 7.6719344 6.8063647 10.9907802 -C 4.1336088 5.1019640 9.4863472 -C 9.1027004 8.1813475 10.5114334 -H 3.6910589 5.6361913 10.1348752 -H 9.5452504 7.6471203 9.8629054 -C 3.6853184 3.8324679 9.2161771 -C 9.5509909 9.4508437 10.7816034 -H 2.9324076 3.4982524 9.6889247 -H 10.3039016 9.7850592 10.3088559 -C 4.3109225 3.0128273 8.2560837 -C 8.9253867 10.2704843 11.7416968 -C 7.0812515 5.4296479 7.0660158 -C 6.1550577 7.8536636 12.9317648 -H 7.1532335 4.9320395 6.2013117 -H 6.0830757 8.3512721 13.7964688 -C 6.9070098 6.8971312 6.7192543 -C 6.3292994 6.3861803 13.2785263 -H 6.0515614 7.0254050 6.2593053 -H 7.1847479 6.2579066 13.7384752 -H 7.6396281 7.1835189 6.1353191 -H 5.5966811 6.0997926 13.8624615 -H 6.9195602 7.4302584 7.5431628 -H 6.3167490 5.8530532 12.4546177 -C 8.3744884 5.1794976 7.8331306 -C 4.8618208 8.1038140 12.1646499 -H 8.3540845 5.6768709 8.6770370 -H 4.8822247 7.6064407 11.3207436 -H 9.1363642 5.4794625 7.2951903 -H 4.0999450 7.8038490 12.7025902 -H 8.4627254 4.2217720 8.0211098 -H 4.7735838 9.0615395 11.9766708 -C 3.6735036 1.6767422 7.8899243 -C 9.5628056 11.6065694 12.1078562 -H 6.3014358 10.6595410 7.2171990 -H 6.9348734 2.6237705 12.7805815 -C 2.3020405 1.9089400 7.2351970 -C 10.9342688 11.3743716 12.7625835 -H 1.6737150 2.2511416 7.9051227 -H 11.5625942 11.0321700 12.0926579 -H 4.0028721 10.4923645 6.8732372 -H 9.2334371 2.7909471 13.1245434 -H 2.3928919 2.5612107 6.5092776 -H 10.8434173 10.7221009 13.4885030 -C 5.5809689 10.1704148 9.0981902 -C 7.6553403 3.1128967 10.8995903 -H 6.4716119 9.9800361 9.4609500 -H 6.7646974 3.3032755 10.5368306 -H 5.1566338 9.3339178 8.8190212 -H 8.0796755 3.9493938 11.1787593 -H 5.0325012 10.6011103 9.7869138 -H 8.2038080 2.6822013 10.2108667 -C 6.6802165 1.6796776 6.9850248 -C 6.5560927 11.6036339 13.0127558 -H 6.8073072 1.6335435 7.9251204 -H 6.4290020 11.6497681 12.0726601 -C 9.2601230 9.9866388 6.2209096 -C 3.9761863 3.2966727 13.7768710 -C 10.0193001 9.0526542 6.9432294 -C 3.2170091 4.2306574 13.0545511 -H 10.1570060 9.1993751 7.8711264 -H 3.0793032 4.0839365 12.1266541 -C 10.5776513 7.9236821 6.3598941 -C 2.6586579 5.3596294 13.6378864 -H 2.8416117 7.3266007 6.8632383 -H 10.3946975 5.9567108 13.1345423 -C 10.3154369 7.6963727 5.0088441 -C 2.9208724 5.5869389 14.9889365 -H 2.4040281 6.9232231 4.5934902 -H 10.8322811 6.3600885 15.4042904 -C 9.5355007 8.5651269 4.2465287 -C 3.7008085 4.7181847 15.7512518 -H 9.3677775 8.3728163 3.3316302 -H 3.8685317 4.9104952 16.6661503 -C 8.9908468 9.7425985 4.8368632 -C 4.2454624 3.5407130 15.1609174 -C 6.9123230 9.2778134 2.1113657 -C 6.3239862 4.0054981 17.8864149 -C 5.6642965 9.1538561 2.7894904 -C 7.5720127 4.1294554 17.2082901 -C 4.8019795 8.1484411 2.4069329 -C 8.4343297 5.1348704 17.5908477 -H 3.9839461 8.0490380 2.8796804 -H 9.2523631 5.2342736 17.1181001 -C 5.0777709 7.2676202 1.3544497 -C 8.1585383 6.0156914 18.6433309 -C 6.2993473 7.4023825 0.7177203 -C 6.9369620 5.8809291 19.2800602 -H 6.5099451 6.8039408 0.0099989 -H 6.7263641 6.4793707 19.9877817 -C 7.2422765 8.3827335 1.0680815 -C 5.9940328 4.9005780 18.9296991 -C 5.2082798 10.0651412 3.9315637 -C 8.0280295 3.2181703 16.0662169 -H 5.7819979 9.9215746 4.7134769 -H 7.4543113 3.3617370 15.2843037 -H 4.2802596 9.8556066 4.1655377 -H 8.9560496 3.4277049 15.8322429 -H 3.2323790 1.5703846 3.6475952 -H 10.0039302 11.7129270 16.3501854 -C 4.0844862 6.1984813 0.9592935 -C 9.1518230 7.0848302 19.0384870 -H 4.4281970 5.7028355 0.1879791 -H 8.8081122 7.5804761 19.8098014 -H 3.2299921 6.6170970 0.7239197 -H 10.0063172 6.6662146 19.2738609 -H 3.9511852 5.5830127 1.7098102 -H 9.2851240 7.7002989 18.2879703 -C 8.5375956 8.3908074 0.2583713 -C 4.6987136 4.8925041 19.7394092 -H 11.5645778 13.1147246 19.8178005 -H 1.6717314 0.1685869 0.1799800 -H 11.4232100 11.5389066 19.5778272 -H 1.8130993 1.7444050 0.4199534 -H 9.2972437 8.2315187 0.8559050 -H 3.9390656 5.0517929 19.1418755 -C 8.6844066 3.4702933 3.9789584 -C 4.5519027 9.8130183 16.0188222 -H 8.6538448 2.4931436 4.1395406 -H 4.5824644 10.7901679 15.8582400 -H 9.2463213 3.8906175 4.6774809 -H 3.9899879 9.3926941 15.3202997 -C 9.2277414 3.7690886 2.6029111 -C 4.0085678 9.5142229 17.3948694 -H 8.9213821 3.1009686 1.9397847 -H 4.3149271 10.1823430 18.0579958 -H 1.9400647 3.8003624 2.6037110 -H 11.2962445 9.4829491 17.3940695 -C 8.6234306 5.1451329 2.3297414 -C 4.6128787 8.1381786 17.6680391 -H 9.1608348 5.8584706 2.7576939 -H 4.0754744 7.4248410 17.2400866 -H 8.5717416 5.3218788 1.3578493 -H 4.6645676 7.9614328 18.6399312 -C 7.2383638 5.0698339 2.9422735 -C 5.9979455 8.2134777 17.0555071 -H 6.9809928 5.9426499 3.3316302 -H 6.2553164 7.3406617 16.6661503 -H 6.5675466 4.8157349 2.2597492 -H 6.6687626 8.4675767 17.7380313 - -Unit cell volume : 1560.9046021 A^3 -Unit cell density : 0.8614512 u/A^3 = 9.6533114 g/cm^3 diff --git a/cell2mol/test/YOBCUO/mol1.xyz b/cell2mol/test/YOBCUO/mol1.xyz deleted file mode 100644 index 01eaf1c83..000000000 --- a/cell2mol/test/YOBCUO/mol1.xyz +++ /dev/null @@ -1,83 +0,0 @@ -81 -0 1 -Ni 5.665024 3.065813 4.602889 -Br 4.012023 4.750791 4.714417 -S 5.949427 1.201443 2.545717 -N 6.056888 2.721593 6.563472 -N 6.177930 1.217526 4.145940 -O 5.197105 2.454954 2.384935 -O 7.190580 1.091538 1.818198 -O 7.330304 4.040592 3.987557 -C 5.430248 3.544462 7.594157 -C 5.885595 4.839892 7.822732 -C 5.242405 5.606131 8.804223 -H 5.564375 6.476947 9.007000 -C 4.133609 5.101964 9.486347 -H 3.691059 5.636191 10.134875 -C 3.685318 3.832468 9.216177 -H 2.932408 3.498252 9.688925 -C 4.310923 3.012827 8.256084 -C 7.081251 5.429648 7.066016 -H 7.153233 4.932040 6.201312 -C 6.907010 6.897131 6.719254 -H 6.051561 7.025405 6.259305 -H 7.639628 7.183519 6.135319 -H 6.919560 7.430258 7.543163 -C 8.374488 5.179498 7.833131 -H 8.354085 5.676871 8.677037 -H 9.136364 5.479463 7.295190 -H 8.462725 4.221772 8.021110 -C 3.673504 1.676742 7.889924 -C 2.302040 1.908940 7.235197 -H 1.673715 2.251142 7.905123 -H 2.392892 2.561211 6.509278 -C 6.680217 1.679678 6.985025 -H 6.807307 1.633544 7.925120 -C 8.684407 3.470293 3.978958 -H 8.653845 2.493144 4.139541 -H 9.246321 3.890617 4.677481 -C 9.227741 3.769089 2.602911 -H 8.921382 3.100969 1.939785 -C 8.623431 5.145133 2.329741 -H 9.160835 5.858471 2.757694 -H 8.571742 5.321879 1.357849 -C 7.238364 5.069834 2.942274 -H 6.980993 5.942650 3.331630 -H 6.567547 4.815735 2.259749 -C 7.221755 0.556423 6.220910 -C 7.980932 -0.377561 6.943229 -H 8.118638 -0.230840 7.871126 -C 8.539283 -1.506533 6.359894 -C 8.277069 -1.733843 5.008844 -C 7.497133 -0.865088 4.246529 -H 7.329410 -1.057399 3.331630 -C 6.952479 0.312383 4.836863 -C 4.873955 -0.152402 2.111366 -C 3.625929 -0.276359 2.789490 -C 2.763612 -1.281774 2.406933 -H 1.945578 -1.381177 2.879680 -C 3.039403 -2.162595 1.354450 -C 4.260979 -2.027833 0.717720 -H 4.471577 -2.626275 0.009999 -C 5.203909 -1.047482 1.068081 -C 3.169912 0.634926 3.931564 -H 3.743630 0.491359 4.713477 -H 2.241892 0.425391 4.165538 -C 2.046118 -3.231734 0.959294 -H 2.389829 -3.727380 0.187979 -H 1.191624 -2.813118 0.723920 -H 1.912817 -3.847203 1.709810 -C 6.499228 -1.039408 0.258371 -H 7.258876 -1.198697 0.855905 -C 3.542601 0.740199 9.098190 -H 4.433244 0.549821 9.460950 -H 3.118266 -0.096298 8.819021 -H 2.994133 1.170895 9.786914 -H 4.263068 1.229326 7.217199 -H 10.217065 3.800362 2.603711 -H 6.463901 -1.744405 -0.419953 -H 3.232379 1.570385 3.647595 -H 8.642660 -2.506992 4.593490 -H 1.964504 1.062149 6.873237 -H 9.080244 -2.103615 6.863238 -H 6.605269 -0.168587 -0.179980 diff --git a/cell2mol/test/YOBCUO/mol2.xyz b/cell2mol/test/YOBCUO/mol2.xyz deleted file mode 100644 index 8fd345bec..000000000 --- a/cell2mol/test/YOBCUO/mol2.xyz +++ /dev/null @@ -1,83 +0,0 @@ -81 -0 1 -Ni 5.665023 3.065813 4.602889 -Br 4.012023 4.750791 4.714417 -S 5.949426 1.201443 2.545717 -N 6.056888 2.721593 6.563472 -N 6.177930 1.217525 4.145940 -O 5.197105 2.454954 2.384935 -O 7.190580 1.091538 1.818198 -O 7.330304 4.040592 3.987557 -C 5.430248 3.544462 7.594157 -C 5.885595 4.839892 7.822732 -C 5.242405 5.606131 8.804223 -H 5.564375 6.476947 9.007000 -C 4.133609 5.101964 9.486347 -H 3.691059 5.636191 10.134875 -C 3.685318 3.832468 9.216177 -H 2.932408 3.498252 9.688925 -C 4.310923 3.012827 8.256084 -C 7.081252 5.429648 7.066016 -H 7.153234 4.932039 6.201312 -C 6.907010 6.897131 6.719254 -H 6.051561 7.025405 6.259305 -H 7.639628 7.183519 6.135319 -H 6.919560 7.430258 7.543163 -C 8.374488 5.179498 7.833131 -H 8.354084 5.676871 8.677037 -H 9.136364 5.479463 7.295190 -H 8.462725 4.221772 8.021110 -C 3.673504 1.676742 7.889924 -H 4.263068 1.229326 7.217199 -C 2.302040 1.908940 7.235197 -H 1.673715 2.251142 7.905123 -H 1.964504 1.062149 6.873237 -H 2.392892 2.561211 6.509278 -C 3.542601 0.740200 9.098190 -H 4.433244 0.549821 9.460950 -H 3.118266 -0.096298 8.819021 -H 2.994133 1.170895 9.786914 -C 6.680217 1.679678 6.985025 -H 6.807307 1.633543 7.925120 -C 7.221755 0.556424 6.220910 -C 7.980932 -0.377561 6.943229 -H 8.118638 -0.230840 7.871126 -C 8.539283 -1.506533 6.359894 -H 9.080244 -2.103615 6.863238 -C 8.277069 -1.733843 5.008844 -H 8.642660 -2.506992 4.593490 -C 7.497133 -0.865088 4.246529 -H 7.329410 -1.057399 3.331630 -C 6.952479 0.312383 4.836863 -C 4.873955 -0.152402 2.111366 -C 3.625929 -0.276359 2.789490 -C 2.763612 -1.281774 2.406933 -H 1.945578 -1.381177 2.879680 -C 3.039403 -2.162595 1.354450 -C 4.260979 -2.027833 0.717720 -H 4.471577 -2.626274 0.009999 -C 5.203909 -1.047482 1.068081 -C 3.169912 0.634926 3.931564 -H 3.743630 0.491359 4.713477 -H 2.241892 0.425391 4.165538 -H 3.232379 1.570385 3.647595 -C 2.046118 -3.231734 0.959294 -H 2.389829 -3.727380 0.187979 -H 1.191624 -2.813118 0.723920 -H 1.912817 -3.847203 1.709810 -C 6.499228 -1.039408 0.258371 -H 6.605269 -0.168587 -0.179980 -H 6.463901 -1.744405 -0.419953 -H 7.258876 -1.198697 0.855905 -C 8.684407 3.470293 3.978958 -H 8.653845 2.493144 4.139541 -H 9.246321 3.890617 4.677481 -C 9.227741 3.769089 2.602911 -H 8.921382 3.100969 1.939785 -H 10.217065 3.800362 2.603711 -C 8.623431 5.145133 2.329741 -H 9.160835 5.858471 2.757694 -H 8.571742 5.321879 1.357849 -C 7.238364 5.069834 2.942273 -H 6.980993 5.942650 3.331630 -H 6.567547 4.815735 2.259749 diff --git a/cell2mol/test/YOBCUO/reorder_molec_0.xyz b/cell2mol/test/YOBCUO/reorder_molec_0.xyz deleted file mode 100644 index c39defd16..000000000 --- a/cell2mol/test/YOBCUO/reorder_molec_0.xyz +++ /dev/null @@ -1,83 +0,0 @@ -81 -0 1 -Ni 7.571286 10.217499 15.394891 -Br 9.224286 8.532520 15.283364 -S 7.286883 12.081869 17.452063 -N 7.058379 12.065786 15.851841 -N 7.179421 10.561719 13.434309 -O 5.906005 9.242719 16.010223 -O 8.039204 10.828358 17.612845 -O 6.045729 12.191773 18.179582 -C 8.362354 13.435713 17.886415 -C 8.032401 14.330793 18.929699 -C 8.975330 15.311144 19.280060 -H 6.772409 15.027717 20.417734 -C 6.737081 14.322719 19.739409 -H 5.977434 14.482008 19.141876 -C 4.959240 15.017154 14.988936 -H 6.631041 13.451898 20.177761 -C 5.739176 14.148400 15.751252 -C 10.196906 15.445907 18.643331 -H 9.492679 12.791952 15.284304 -C 11.190191 16.515045 19.038487 -H 4.593649 15.790304 15.404290 -H 11.323492 17.130514 18.287970 -H 8.764732 15.909586 19.987782 -C 10.472698 14.565086 17.590848 -H 10.846480 17.010691 19.809801 -H 11.290731 14.664489 17.118100 -H 12.044685 16.096430 19.273861 -C 4.008568 9.514223 17.394869 -H 4.582464 10.790168 15.858240 -C 4.551903 9.813018 16.018822 -H 5.906900 14.340711 16.666150 -H 3.019245 9.482949 17.394070 -H 4.156065 15.386926 13.134542 -C 4.612879 8.138179 17.668039 -H 4.664568 7.961433 18.639931 -H 4.075474 7.424841 17.240087 -H 4.314927 10.182343 18.057996 -C 9.610381 13.559671 17.208290 -H 10.003930 11.712927 16.350185 -C 6.283830 12.970928 15.160917 -C 10.066397 12.648386 16.066217 -H 6.668763 8.467577 17.738031 -C 5.997946 8.213478 17.055507 -H 6.255316 7.340662 16.666150 -C 9.550991 9.450844 10.781603 -H 7.184748 6.257907 13.738475 -C 8.925387 10.270484 11.741697 -H 10.843417 10.722101 13.488503 -C 6.014554 12.726888 13.776871 -C 7.806061 9.738850 12.403623 -C 6.556093 11.603634 13.012756 -C 4.861821 8.103814 12.164650 -H 4.099945 7.803849 12.702590 -C 6.155058 7.853664 12.931765 -C 7.993904 7.677180 11.193558 -H 6.316749 5.853053 12.454618 -C 7.350714 8.443419 12.175049 -C 5.255377 13.660873 13.054551 -H 6.083076 8.351272 13.796469 -H 3.989988 9.392694 15.320300 -H 6.429002 11.649768 12.072660 -C 6.329299 6.386180 13.278526 -H 4.882225 7.606441 11.320744 -H 4.773584 9.061540 11.976671 -H 5.596681 6.099793 13.862462 -C 9.102700 8.181347 10.511433 -H 10.303902 9.785059 10.308856 -H 7.671934 6.806365 10.990780 -H 9.545250 7.647120 9.862905 -C 10.934269 11.374372 12.762583 -H 8.973241 12.053986 12.780582 -H 10.994418 12.857920 15.832243 -C 9.562806 11.606569 12.107856 -H 11.562594 11.032170 12.092658 -H 11.271805 12.221162 13.124543 -C 9.693708 12.543112 10.899590 -H 10.118043 13.379609 11.178759 -H 10.242176 12.112417 10.210867 -C 4.697026 14.789845 13.637886 -H 5.117671 13.514152 12.126654 -H 8.803065 12.733491 10.536831 diff --git a/cell2mol/test/YOBCUO/reorder_molec_1.xyz b/cell2mol/test/YOBCUO/reorder_molec_1.xyz deleted file mode 100644 index a7fcaba59..000000000 --- a/cell2mol/test/YOBCUO/reorder_molec_1.xyz +++ /dev/null @@ -1,83 +0,0 @@ -81 -0 1 -Ni 5.665024 3.065813 4.602889 -Br 4.012023 4.750791 4.714417 -S 5.949427 1.201443 2.545717 -N 6.056888 2.721593 6.563472 -N 6.177930 1.217526 4.145940 -O 5.197105 2.454954 2.384935 -O 7.190580 1.091538 1.818198 -O 7.330304 4.040592 3.987557 -C 5.430248 3.544462 7.594157 -C 5.885595 4.839892 7.822732 -C 5.242405 5.606131 8.804223 -H 5.564375 6.476947 9.007000 -C 4.133609 5.101964 9.486347 -H 3.691059 5.636191 10.134875 -C 3.685318 3.832468 9.216177 -H 2.932408 3.498252 9.688925 -C 4.310923 3.012827 8.256084 -C 7.081251 5.429648 7.066016 -H 7.153233 4.932040 6.201312 -C 6.907010 6.897131 6.719254 -H 6.051561 7.025405 6.259305 -H 7.639628 7.183519 6.135319 -H 6.919560 7.430258 7.543163 -C 8.374488 5.179498 7.833131 -H 8.354085 5.676871 8.677037 -H 9.136364 5.479463 7.295190 -H 8.462725 4.221772 8.021110 -C 3.673504 1.676742 7.889924 -H 4.263068 1.229326 7.217199 -C 2.302040 1.908940 7.235197 -H 1.673715 2.251142 7.905123 -H 1.964504 1.062149 6.873237 -H 2.392892 2.561211 6.509278 -C 3.542601 0.740199 9.098190 -H 4.433244 0.549821 9.460950 -H 3.118266 -0.096298 8.819021 -H 2.994133 1.170895 9.786914 -C 6.680217 1.679678 6.985025 -H 6.807307 1.633544 7.925120 -C 7.221755 0.556423 6.220910 -C 7.980932 -0.377561 6.943229 -H 8.118638 -0.230840 7.871126 -C 8.539283 -1.506533 6.359894 -H 9.080244 -2.103615 6.863238 -C 8.277069 -1.733843 5.008844 -H 8.642660 -2.506992 4.593490 -C 7.497133 -0.865088 4.246529 -H 7.329410 -1.057399 3.331630 -C 6.952479 0.312383 4.836863 -C 4.873955 -0.152402 2.111366 -C 3.625929 -0.276359 2.789490 -C 2.763612 -1.281774 2.406933 -H 1.945578 -1.381177 2.879680 -C 3.039403 -2.162595 1.354450 -C 4.260979 -2.027833 0.717720 -H 4.471577 -2.626275 0.009999 -C 5.203909 -1.047482 1.068081 -C 3.169912 0.634926 3.931564 -H 3.743630 0.491359 4.713477 -H 2.241892 0.425391 4.165538 -H 3.232379 1.570385 3.647595 -C 2.046118 -3.231734 0.959294 -H 2.389829 -3.727380 0.187979 -H 1.191624 -2.813118 0.723920 -H 1.912817 -3.847203 1.709810 -C 6.499228 -1.039408 0.258371 -H 6.605269 -0.168587 -0.179980 -H 6.463901 -1.744405 -0.419953 -H 7.258876 -1.198697 0.855905 -C 8.684407 3.470293 3.978958 -H 8.653845 2.493144 4.139541 -H 9.246321 3.890617 4.677481 -C 9.227741 3.769089 2.602911 -H 8.921382 3.100969 1.939785 -H 10.217065 3.800362 2.603711 -C 8.623431 5.145133 2.329741 -H 9.160835 5.858471 2.757694 -H 8.571742 5.321879 1.357849 -C 7.238364 5.069834 2.942274 -H 6.980993 5.942650 3.331630 -H 6.567547 4.815735 2.259749 diff --git a/cell2mol/test/check_Cell_object.ipynb b/cell2mol/test/check_Cell_object.ipynb deleted file mode 100644 index 061745213..000000000 --- a/cell2mol/test/check_Cell_object.ipynb +++ /dev/null @@ -1,6980 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'2023.09.6'" - ] - }, - "execution_count": 1, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "import numpy as np\n", - "from rdkit import Chem\n", - "from rdkit.Chem import Draw\n", - "from IPython.display import display\n", - "from rdkit.Chem.Draw import IPythonConsole\n", - "from rdkit.Chem import rdDetermineBonds\n", - "import matplotlib.pyplot as plt \n", - "from cell2mol.read_write import writexyz\n", - "\n", - "IPythonConsole.ipython_3d = False\n", - "import rdkit\n", - "rdkit.__version__" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [], - "source": [ - "from cell2mol.elementdata import ElementData\n", - "from cell2mol.xyz2mol import get_atomic_valences\n", - "from collections import defaultdict\n", - "\n", - "elemdatabase = ElementData()" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [], - "source": [ - "refcode = \"CESMUK\"\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)" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "28\n", - "H5-C5 ligand 0 No possible cs ['molecule', 'unitcell', 'reference']\n", - "C-O ligand 1 No possible cs ['molecule', 'unitcell', 'reference']\n", - "C-O ligand 1 No possible cs ['molecule', 'unitcell', 'reference']\n", - "Fe metal 2 No possible cs ['molecule', 'unitcell', 'reference']\n", - "Mg molecule 5 No possible cs ['unitcell', 'reference', 'molecule']\n", - "H8-C4-O molecule 3 No possible cs ['unitcell', 'reference', 'molecule']\n", - "Mg molecule 5 No possible cs ['unitcell', 'reference', 'molecule']\n", - "H5-C5 ligand 0 No possible cs ['molecule', 'unitcell', 'reference']\n", - "C-O ligand 1 No possible cs ['molecule', 'unitcell', 'reference']\n", - "C-O ligand 1 No possible cs ['molecule', 'unitcell', 'reference']\n", - "Fe metal 2 No possible cs ['molecule', 'unitcell', 'reference']\n", - "Mg molecule 5 No possible cs ['unitcell', 'reference', 'molecule']\n", - "H8-C4-O molecule 3 No possible cs ['unitcell', 'reference', 'molecule']\n", - "Mg molecule 5 No possible cs ['unitcell', 'reference', 'molecule']\n", - "H8-C4-O molecule 3 No possible cs ['unitcell', 'reference', 'molecule']\n", - "H41-C29-N2 molecule 4 No possible cs ['unitcell', 'reference', 'molecule']\n", - "H5-C5 ligand 0 No possible cs ['molecule', 'unitcell', 'reference']\n", - "C-O ligand 1 No possible cs ['molecule', 'unitcell', 'reference']\n", - "C-O ligand 1 No possible cs ['molecule', 'unitcell', 'reference']\n", - "Fe metal 2 No possible cs ['molecule', 'unitcell', 'reference']\n", - "H41-C29-N2 molecule 4 No possible cs ['unitcell', 'reference', 'molecule']\n", - "H8-C4-O molecule 3 No possible cs ['unitcell', 'reference', 'molecule']\n", - "H41-C29-N2 molecule 4 No possible cs ['unitcell', 'reference', 'molecule']\n", - "H5-C5 ligand 0 No possible cs ['molecule', 'unitcell', 'reference']\n", - "C-O ligand 1 No possible cs ['molecule', 'unitcell', 'reference']\n", - "C-O ligand 1 No possible cs ['molecule', 'unitcell', 'reference']\n", - "Fe metal 2 No possible cs ['molecule', 'unitcell', 'reference']\n", - "H41-C29-N2 molecule 4 No possible cs ['unitcell', 'reference', 'molecule']\n" - ] - } - ], - "source": [ - "cell = refcell\n", - "\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.subtype, specie.unique_index, specie.possible_cs, [p.subtype for p in specie.parents])\n", - " else:\n", - " print(specie.formula, specie.subtype, specie.unique_index, \"No possible cs\", [p.subtype for p in specie.parents])\n" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 15\n", - " Formula = H5-C7-O2-Fe\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = -1\n", - " Spin = 1\n", - " Smiles = ['[H]C1=C([H])[C-]([H])C([H])=C1[H]', '[C-]#[O+]', '[C-]#[O+]']\n", - " Origin = cell.reconstruct\n", - " Number of Ligands = 3\n", - " Number of Metals = 1\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = Mg\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = 2\n", - " Spin = 1\n", - " Smiles = [Mg+2]\n", - " Origin = cell.reconstruct\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 13\n", - " Formula = H8-C4-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = 0\n", - " Spin = 1\n", - " Smiles = [H]C1([H])OC([H])([H])C([H])([H])C1([H])[H]\n", - " Origin = cell.reconstruct\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = Mg\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = 2\n", - " Spin = 1\n", - " Smiles = [Mg+2]\n", - " Origin = cell.reconstruct\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 15\n", - " Formula = H5-C7-O2-Fe\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = -1\n", - " Spin = 1\n", - " Smiles = ['[H]C1=C([H])[C-]([H])C([H])=C1[H]', '[C-]#[O+]', '[C-]#[O+]']\n", - " Origin = cell.reconstruct\n", - " Number of Ligands = 3\n", - " Number of Metals = 1\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = Mg\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = 2\n", - " Spin = 1\n", - " Smiles = [Mg+2]\n", - " Origin = cell.reconstruct\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 13\n", - " Formula = H8-C4-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = 0\n", - " Spin = 1\n", - " Smiles = [H]C1([H])OC([H])([H])C([H])([H])C1([H])[H]\n", - " Origin = cell.reconstruct\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = Mg\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = 2\n", - " Spin = 1\n", - " Smiles = [Mg+2]\n", - " Origin = cell.reconstruct\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 13\n", - " Formula = H8-C4-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = 0\n", - " Spin = 1\n", - " Smiles = [H]C1([H])OC([H])([H])C([H])([H])C1([H])[H]\n", - " Origin = cell.reconstruct\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 72\n", - " Formula = H41-C29-N2\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = -1\n", - " Spin = 1\n", - " Smiles = [H]C(C(=Nc1c(C([H])(C([H])([H])[H])C([H])([H])[H])c([H])c([H])c([H])c1C([H])(C([H])([H])[H])C([H])([H])[H])C([H])([H])[H])=C([N-]c1c(C([H])(C([H])([H])[H])C([H])([H])[H])c([H])c([H])c([H])c1C([H])(C([H])([H])[H])C([H])([H])[H])C([H])([H])[H]\n", - " Origin = cell.reconstruct\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 15\n", - " Formula = H5-C7-O2-Fe\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = -1\n", - " Spin = 1\n", - " Smiles = ['[H]C1=C([H])[C-]([H])C([H])=C1[H]', '[C-]#[O+]', '[C-]#[O+]']\n", - " Origin = cell.reconstruct\n", - " Number of Ligands = 3\n", - " Number of Metals = 1\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 72\n", - " Formula = H41-C29-N2\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = -1\n", - " Spin = 1\n", - " Smiles = [H]C(C(=Nc1c(C([H])(C([H])([H])[H])C([H])([H])[H])c([H])c([H])c([H])c1C([H])(C([H])([H])[H])C([H])([H])[H])C([H])([H])[H])=C([N-]c1c(C([H])(C([H])([H])[H])C([H])([H])[H])c([H])c([H])c([H])c1C([H])(C([H])([H])[H])C([H])([H])[H])C([H])([H])[H]\n", - " Origin = cell.reconstruct\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 13\n", - " Formula = H8-C4-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = 0\n", - " Spin = 1\n", - " Smiles = [H]C1([H])OC([H])([H])C([H])([H])C1([H])[H]\n", - " Origin = cell.reconstruct\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 72\n", - " Formula = H41-C29-N2\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = -1\n", - " Spin = 1\n", - " Smiles = [H]C(C(=Nc1c(C([H])(C([H])([H])[H])C([H])([H])[H])c([H])c([H])c([H])c1C([H])(C([H])([H])[H])C([H])([H])[H])C([H])([H])[H])=C([N-]c1c(C([H])(C([H])([H])[H])C([H])([H])[H])c([H])c([H])c([H])c1C([H])(C([H])([H])[H])C([H])([H])[H])C([H])([H])[H]\n", - " Origin = cell.reconstruct\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 15\n", - " Formula = H5-C7-O2-Fe\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = -1\n", - " Spin = 1\n", - " Smiles = ['[H]C1=C([H])[C-]([H])C([H])=C1[H]', '[C-]#[O+]', '[C-]#[O+]']\n", - " Origin = cell.reconstruct\n", - " Number of Ligands = 3\n", - " Number of Metals = 1\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 72\n", - " Formula = H41-C29-N2\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = -1\n", - " Spin = 1\n", - " Smiles = [H]C(C(=Nc1c(C([H])(C([H])([H])[H])C([H])([H])[H])c([H])c([H])c([H])c1C([H])(C([H])([H])[H])C([H])([H])[H])C([H])([H])[H])=C([N-]c1c(C([H])(C([H])([H])[H])C([H])([H])[H])c([H])c([H])c([H])c1C([H])(C([H])([H])[H])C([H])([H])[H])C([H])([H])[H]\n", - " Origin = cell.reconstruct\n", - " ---------------------------------------------------]" - ] - }, - "execution_count": 11, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "cell = unitcell\n", - "cell.moleclist\n", - "# print(len(cell.moleculeist))\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.subtype, specie.unique_index, specie.possible_cs, [p.subtype for p in specie.parents])\n", - "# else:\n", - "# print(specie.formula, specie.subtype, specie.unique_index, \"No possible cs\", [p.subtype for p in specie.parents])\n" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [], - "source": [ - "refcode = \"YAGYIP01\"\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": 9, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "------------- Cell2mol CELL Object ----------------\n", - " Version = 2.0\n", - " Type = cell\n", - " Sub-Type = reference\n", - " Name (Refcode) = YAGYIP01\n", - " Num Atoms = 84\n", - " Cell Parameters a:c = [12.2832 18.0705 10.4767]\n", - " Cell Parameters al:ga = [90. 90.106 90. ]\n", - "---------------------------------------------------\n", - " # of Ref Molecules: = 2\n", - " With Formulae: \n", - " 0: H30-C18-N24-Fe-Br6 \n", - " 1: B-F4 " - ] - }, - "execution_count": 9, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "refcell" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Reference Molecule : H30-C18-N24-Fe-Br6\n", - "\t Fe N6\n", - "\t H5-C3-N4-Br\n", - "\t H5-C3-N4-Br\n", - "\t H5-C3-N4-Br\n", - "\t H5-C3-N4-Br\n", - "\t H5-C3-N4-Br\n", - "\t H5-C3-N4-Br\n", - "Reference Molecule : B-F4\n" - ] - } - ], - "source": [ - "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", - " if ref.iscomplex:\n", - " for met in ref.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 ref.ligands:\n", - " if hasattr(lig, \"totcharge\"):\n", - " print(\"\\t\", lig.formula, lig.totcharge, lig.smiles)\n", - " else:\n", - " if hasattr(lig, \"smiles\"):\n", - " print(\"\\t\", lig.formula, lig.smiles)\n", - " else:\n", - " print(\"\\t\", lig.formula)\n", - "\n", - "# print(\"Unique Species in Reference Cell:\")\n", - "# for specie in refcell.unique_species:\n", - "# if specie.subtype == \"metal\":\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", - "# 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": 7, - "metadata": {}, - "outputs": [], - "source": [ - "for idx, ref in enumerate(refcell.refmoleclist):\n", - " writexyz(f\"{refcode}/\", f\"{refcode}_ref_{idx}.xyz\", ref.labels, ref.coord)" - ] - }, - { - "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": [ - "7" - ] - }, - "execution_count": 34, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "len(refcell.species_list)" - ] - }, - { - "cell_type": "code", - "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": [ - "import pandas as pd" - ] - }, - { - "cell_type": "code", - "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": [ - { - "data": { - "text/plain": [ - "------------- 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", - " # 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": 82, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "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" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "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", - " 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", - " 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", - " 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", - " 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", - " 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)" - ] - }, - { - "cell_type": "code", - "execution_count": 68, - "metadata": {}, - "outputs": [], - "source": [ - "refcell = np.load(\"ABIJEB/Ref_Cell_ABIJEB.cell\", allow_pickle=True)\n", - "unitcell = np.load(\"ABIJEB/Cell_ABIJEB.cell\", allow_pickle=True)" - ] - }, - { - "cell_type": "code", - "execution_count": 100, - "metadata": {}, - "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", - "execution_count": null, - "metadata": {}, - "outputs": [ - { - "ename": "AttributeError", - "evalue": "'molecule' object has no attribute 'totcharge'", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mAttributeError\u001b[0m Traceback (most recent call last)", - "Cell \u001b[0;32mIn[73], line 2\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m i, ref \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28menumerate\u001b[39m(refcell\u001b[38;5;241m.\u001b[39mrefmoleclist):\n\u001b[0;32m----> 2\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mReference Molecule \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mi\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m:\u001b[39m\u001b[38;5;124m\"\u001b[39m, ref\u001b[38;5;241m.\u001b[39mformula, \u001b[43mref\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mtotcharge\u001b[49m)\n\u001b[1;32m 3\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m met \u001b[38;5;129;01min\u001b[39;00m ref\u001b[38;5;241m.\u001b[39mmetals:\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, met\u001b[38;5;241m.\u001b[39mcharge)\n", - "\u001b[0;31mAttributeError\u001b[0m: 'molecule' object has no attribute 'totcharge'" - ] - } - ], - "source": [ - "for i, ref in enumerate(refcell.refmoleclist):\n", - " print(f\"Reference Molecule :\", ref.formula, ref.totcharge)\n", - " for met in ref.metals:\n", - " print(\"\\t\", met.label, met.charge)\n", - " for lig in ref.ligands:\n", - " print(\"\\t\", lig.formula, lig.totcharge)\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, specie.charge)\n", - " else:\n", - " print(\"\\t\", specie.formula, specie.totcharge) " - ] - }, - { - "cell_type": "code", - "execution_count": 70, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Unitcell's Reference 0 H20-C10-N3-O-S2-Fe 0\n", - "\t Fe 3\n", - "\t N-O -1\n", - "\t H20-C10-N2-S2 -2\n", - "=============================================================\n", - "Unitcell's Molecule 0: H20-C10-N3-O-S2-Fe 0\n", - "\t Fe 3\n", - "\t N-O -1\n", - "\t\t N -1\n", - "\t\t O 0\n", - "\t H20-C10-N2-S2 -2\n", - "Unitcell's Molecule 1: H20-C10-N3-O-S2-Fe 0\n", - "\t Fe 3\n", - "\t N-O -1\n", - "\t\t N -1\n", - "\t\t O 0\n", - "\t H20-C10-N2-S2 -2\n", - "Unitcell's Molecule 2: H20-C10-N3-O-S2-Fe 0\n", - "\t Fe 3\n", - "\t N-O -1\n", - "\t\t N -1\n", - "\t\t O 0\n", - "\t H20-C10-N2-S2 -2\n", - "Unitcell's Molecule 3: H20-C10-N3-O-S2-Fe 0\n", - "\t Fe 3\n", - "\t N-O -1\n", - "\t\t N -1\n", - "\t\t O 0\n", - "\t H20-C10-N2-S2 -2\n", - "=============================================================\n", - "Unique Species in Unit Cell:\n", - "\t N-O -1\n", - "\t\t N -1\n", - "\t\t O 0\n", - "\t H20-C10-N2-S2 -2\n", - "\t Fe 3\n" - ] - } - ], - "source": [ - "for i, ref in enumerate(unitcell.refmoleclist):\n", - " print(f\"Unitcell's Reference {i}\", ref.formula, ref.totcharge)\n", - " for met in ref.metals:\n", - " print(\"\\t\", met.label, met.charge)\n", - " for lig in ref.ligands:\n", - " print(\"\\t\", lig.formula, lig.totcharge)\n", - "print(\"=============================================================\")\n", - "for j, mol in enumerate(unitcell.moleclist):\n", - " print(f\"Unitcell's Molecule {j}:\", mol.formula, mol.totcharge)\n", - " for met in mol.metals:\n", - " print(\"\\t\",met.label, met.charge)\n", - " for lig in mol.ligands:\n", - " print(\"\\t\", lig.formula, lig.totcharge)\n", - " if lig.formula == \"N-O\":\n", - " for atom in lig.atoms:\n", - " print(\"\\t\\t\", atom.label, atom.charge)\n", - "print(\"=============================================================\")\n", - "print(\"Unique Species in Unit Cell:\")\n", - "for specie in unitcell.unique_species:\n", - " if specie.subtype == \"metal\":\n", - " print(\"\\t\", specie.formula, specie.charge)\n", - " else:\n", - " print(\"\\t\", specie.formula, specie.totcharge) \n", - " if specie.formula == \"N-O\":\n", - " for atom in specie.atoms:\n", - " print(\"\\t\\t\", atom.label, atom.charge)" - ] - }, - { - "cell_type": "code", - "execution_count": 34, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "H20-C10-N3-O-S2-Fe 0\n", - "Fe 3.0\n", - "N-O -1\n", - "H20-C10-N2-S2 -2\n" - ] - } - ], - "source": [ - "for mol in unitcell.refmoleclist:\n", - " print(mol.formula, ref.totcharge)\n", - " for met in ref.metals:\n", - " print(met.label, met.charge)\n", - " for lig in ref.ligands:\n", - " print(lig.formula, lig.totcharge)" - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "metadata": {}, - "outputs": [], - "source": [ - "met = mol.metals[0]" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "met." - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Help on built-in function MolFromSmiles in module rdkit.Chem.rdmolfiles:\n", - "\n", - "MolFromSmiles(...)\n", - " MolFromSmiles( (object)SMILES, (SmilesParserParams)params) -> Mol :\n", - " Construct a molecule from a SMILES string.\n", - " \n", - " ARGUMENTS:\n", - " \n", - " - SMILES: the smiles string\n", - " \n", - " - params: used to provide optional parameters for the SMILES parsing\n", - " \n", - " RETURNS:\n", - " \n", - " a Mol object, None on failure.\n", - " \n", - " \n", - " \n", - " C++ signature :\n", - " RDKit::ROMol* MolFromSmiles(boost::python::api::object,RDKit::SmilesParserParams)\n", - " \n", - " MolFromSmiles( (object)SMILES [, (bool)sanitize=True [, (dict)replacements={}]]) -> Mol :\n", - " Construct a molecule from a SMILES string.\n", - " \n", - " ARGUMENTS:\n", - " \n", - " - SMILES: the smiles string\n", - " \n", - " - sanitize: (optional) toggles sanitization of the molecule.\n", - " Defaults to True.\n", - " \n", - " - replacements: (optional) a dictionary of replacement strings (see below)\n", - " Defaults to {}.\n", - " \n", - " RETURNS:\n", - " \n", - " a Mol object, None on failure.\n", - " \n", - " The optional replacements dict can be used to do string substitution of abbreviations \n", - " in the input SMILES. The set of substitutions is repeatedly looped through until \n", - " the string no longer changes. It is the responsibility of the caller to make sure \n", - " that substitutions results in legal and sensible SMILES. \n", - " \n", - " Examples of replacements: \n", - " \n", - " CC{Q}C with {'{Q}':'OCCO'} -> CCOCCOC \n", - " \n", - " C{A}C{Q}C with {'{Q}':'OCCO', '{A}':'C1(CC1)'} -> CC1(CC1)COCCOC \n", - " \n", - " C{A}C{Q}C with {'{Q}':'{X}CC{X}', '{A}':'C1CC1', '{X}':'N'} -> CC1CC1CNCCNC \n", - " \n", - " \n", - " \n", - " \n", - " C++ signature :\n", - " RDKit::ROMol* MolFromSmiles(boost::python::api::object [,bool=True [,boost::python::dict={}]])\n", - "\n" - ] - } - ], - "source": [ - "help(Chem.MolFromSmiles)" - ] - }, - { - "cell_type": "code", - "execution_count": 52, - "metadata": {}, - "outputs": [], - "source": [ - "from IPython.display import display\n", - "from rdkit.Chem.Draw import IPythonConsole\n", - "IPythonConsole.drawOptions.addAtomIndices = True\n", - "# IPythonConsole.molSize = 300,300\n", - "\n", - "# print(f\"{ligand.formula=} {smiles=}\")\n", - "# display(mol_with_atom_index(obj))" - ] - }, - { - "cell_type": "code", - "execution_count": 57, - "metadata": {}, - "outputs": [], - "source": [ - "mol = Chem.MolFromSmiles(\"I[I-]I\", sanitize=False)" - ] - }, - { - "cell_type": "code", - "execution_count": 55, - "metadata": {}, - "outputs": [], - "source": [ - "mol = Chem.MolFromSmiles(\"[N-]=[N+]=[N-]\", sanitize=False)" - ] - }, - { - "cell_type": "code", - "execution_count": 58, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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", - "text/plain": [ - "" - ] - }, - "execution_count": 58, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "mol" - ] - }, - { - "cell_type": "code", - "execution_count": 43, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[2, 0, 1, 3]\n" - ] - } - ], - "source": [ - "def move_to_front(lst, index):\n", - " element = lst.pop(index) # Remove the element from its current position\n", - " lst.insert(0, element) # Insert the element at the beginning\n", - " return lst\n", - "\n", - "original_list = [0, 1, 2, 3]\n", - "new_list = move_to_front(original_list, 2)\n", - "print(new_list)" - ] - }, - { - "cell_type": "code", - "execution_count": 64, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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", - "text/plain": [ - "" - ] - }, - "execution_count": 64, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "Chem.MolFromSmiles(\"[Cl-]\", sanitize=False)" - ] - }, - { - "cell_type": "code", - "execution_count": 59, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "mol = Chem.MolFromSmiles(\"[O-]Cl(=O)(=O)=O\", sanitize=False)\n", - "# for atom in mol.GetAtoms():\n", - "# print(atom.GetSymbol(), atom.GetIdx(), atom.GetFormalCharge())\n", - "display(mol)\n", - "# mol2 = Chem.RenumberAtoms(mol, [1, 0, 2, 3, 4])\n", - "# for bond in mol.GetBonds():\n", - "# print(mol.GetAtomWithIdx(bond.GetBeginAtomIdx()).GetSymbol(), bond.GetBeginAtomIdx(),\\\n", - "# mol.GetAtomWithIdx(bond.GetEndAtomIdx()).GetSymbol(), bond.GetEndAtomIdx(), bond.GetBondType())" - ] - }, - { - "cell_type": "code", - "execution_count": 34, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "O 0 Cl 1 SINGLE\n", - "Cl 1 O 2 DOUBLE\n", - "Cl 1 O 3 DOUBLE\n", - "Cl 1 O 4 DOUBLE\n" - ] - } - ], - "source": [ - "for bond in mol.GetBonds():\n", - " print(mol.GetAtomWithIdx(bond.GetBeginAtomIdx()).GetSymbol(), bond.GetBeginAtomIdx(),\\\n", - " mol.GetAtomWithIdx(bond.GetEndAtomIdx()).GetSymbol(), bond.GetEndAtomIdx(), bond.GetBondType())" - ] - }, - { - "cell_type": "code", - "execution_count": 60, - "metadata": {}, - "outputs": [], - "source": [ - "mol2 = Chem.RenumberAtoms(mol, [1, 0, 2, 3, 4])" - ] - }, - { - "cell_type": "code", - "execution_count": 61, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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", - "text/plain": [ - "" - ] - }, - "execution_count": 61, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "mol2" - ] - }, - { - "cell_type": "code", - "execution_count": 37, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "O 1 Cl 0 SINGLE\n", - "Cl 0 O 2 DOUBLE\n", - "Cl 0 O 3 DOUBLE\n", - "Cl 0 O 4 DOUBLE\n" - ] - } - ], - "source": [ - "for bond in mol2.GetBonds():\n", - " print(mol2.GetAtomWithIdx(bond.GetBeginAtomIdx()).GetSymbol(), bond.GetBeginAtomIdx(),\\\n", - " mol2.GetAtomWithIdx(bond.GetEndAtomIdx()).GetSymbol(), bond.GetEndAtomIdx(), bond.GetBondType())" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "Chem.MolFromSmiles(\"[O-]Cl(=O)(=O)=O\", sanitize=False)" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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", - "text/plain": [ - "" - ] - }, - "execution_count": 17, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "mol" - ] - }, - { - "cell_type": "code", - "execution_count": 27, - "metadata": {}, - "outputs": [], - "source": [ - "import ase\n", - "from ase.io import read\n" - ] - }, - { - "cell_type": "code", - "execution_count": 29, - "metadata": {}, - "outputs": [], - "source": [ - "test = read(\"TOCSOV/molecule.xyz\")" - ] - }, - { - "cell_type": "code", - "execution_count": 34, - "metadata": {}, - "outputs": [], - "source": [ - "natoms = test.get_global_number_of_atoms()\n", - "labels = test.get_chemical_symbols()\n", - "coord = test.get_positions()\n", - "xyzblock = \"\"\n", - "xyzblock += str(natoms) + \"\\n\" # Number of atoms\n", - "xyzblock += \"\\n\"\n", - "for l, pos in zip(labels, coord):\n", - " xyzblock += f\"{l}\\t{pos[0]}\\t{pos[1]}\\t{pos[2]}\\n\"\n" - ] - }, - { - "cell_type": "code", - "execution_count": 35, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'80\\n\\nCl\\t8.399108\\t8.834795\\t5.068369\\nCl\\t5.980653\\t12.692528\\t6.900009\\nCl\\t9.13361\\t11.669721\\t6.628015\\nCl\\t6.931979\\t11.608428\\t3.935754\\nCl\\t9.768349\\t13.363361\\t3.854316\\nMg\\t7.823379\\t13.510632\\t5.410922\\nMg\\t6.917541\\t10.472208\\t6.239704\\nMg\\t9.371604\\t10.916458\\t4.144709\\nN\\t6.891262\\t9.514305\\t8.22734\\nN\\t4.993963\\t9.423795\\t5.96723\\nN\\t6.700758\\t15.134396\\t4.428703\\nN\\t8.610534\\t15.149007\\t6.654095\\nN\\t9.550589\\t10.270586\\t2.047315\\nC\\t5.845487\\t8.457159\\t8.071824\\nH\\t5.570074\\t8.134485\\t8.966204\\nH\\t6.224945\\t7.691519\\t7.572634\\nN\\t11.502057\\t10.356116\\t4.252707\\nC\\t11.888333\\t10.36998\\t2.812739\\nH\\t12.781593\\t9.9539\\t2.708741\\nH\\t11.950409\\t11.305964\\t2.500745\\nC\\t5.118054\\t8.245338\\t5.067089\\nH\\t4.267404\\t7.758059\\t5.04789\\nH\\t5.82398\\t7.652877\\t5.399882\\nH\\t5.343159\\t8.54645\\t4.163109\\nC\\t7.926986\\t15.248735\\t7.967826\\nH\\t8.287045\\t16.011953\\t8.465415\\nH\\t8.078814\\t14.42479\\t8.478215\\nH\\t6.965837\\t15.374297\\t7.827029\\nC\\t5.259681\\t14.87783\\t4.310306\\nH\\t4.820993\\t15.660125\\t3.913514\\nH\\t4.883937\\t14.708509\\t5.198286\\nH\\t5.11255\\t14.096335\\t3.737518\\nC\\t6.515748\\t10.435842\\t9.322996\\nH\\t6.494212\\t9.944528\\t10.170978\\nH\\t5.630724\\t10.815686\\t9.1422\\nH\\t7.175316\\t11.159375\\t9.382195\\nC\\t9.479457\\t11.421389\\t1.105576\\nH\\t9.527392\\t11.091469\\t0.183996\\nH\\t10.229768\\t12.02815\\t1.275172\\nH\\t8.634883\\t11.900751\\t1.238373\\nC\\t3.900354\\t10.275605\\t5.446281\\nH\\t4.105853\\t10.545465\\t4.526301\\nH\\t3.81063\\t11.073877\\t6.007869\\nH\\t3.059747\\t9.772509\\t5.457481\\nC\\t11.738067\\t9.023905\\t4.830294\\nH\\t11.200777\\t8.360422\\t4.350305\\nH\\t11.484729\\t9.027531\\t5.775874\\nH\\t12.688126\\t8.795333\\t4.747096\\nC\\t8.178795\\t8.877993\\t8.590212\\nH\\t8.856983\\t9.571477\\t8.732609\\nH\\t8.465618\\t8.283814\\t7.865428\\nH\\t8.06601\\t8.358776\\t9.414194\\nC\\t7.21826\\t15.390409\\t3.062333\\nH\\t7.157487\\t14.56968\\t2.529545\\nH\\t8.154442\\t15.67556\\t3.115132\\nH\\t6.686361\\t16.094978\\t2.638342\\nC\\t4.647137\\t8.981557\\t7.342239\\nH\\t3.95697\\t8.273576\\t7.294241\\nH\\t4.266238\\t9.745015\\t7.844628\\nC\\t8.320002\\t16.35191\\t5.833472\\nH\\t8.961737\\t16.395429\\t5.081489\\nH\\t8.44504\\t17.161575\\t6.38866\\nC\\t10.063767\\t15.088337\\t6.903849\\nH\\t10.53961\\t15.018987\\t6.049468\\nH\\t10.269268\\t14.304887\\t7.455837\\nH\\t10.348333\\t15.901107\\t7.371039\\nC\\t8.515559\\t9.298899\\t1.638364\\nH\\t7.63916\\t9.739373\\t1.630364\\nH\\t8.498952\\t8.552238\\t2.27035\\nH\\t8.718881\\t8.963148\\t0.740784\\nC\\t10.895747\\t9.628627\\t1.964757\\nH\\t11.203791\\t9.623836\\t1.023978\\nH\\t10.834567\\t8.689593\\t2.27195\\nC\\t6.913825\\t16.332254\\t5.289484\\nH\\t6.268792\\t16.320046\\t6.039868\\nH\\t6.752675\\t17.153835\\t4.759896\\nC\\t12.341767\\t11.33114\\t4.995091\\nH\\t12.086429\\t11.329144\\t5.94067\\nH\\t12.206639\\t12.227077\\t4.622299\\nH\\t13.285125\\t11.081874\\t4.910293\\n'" - ] - }, - "execution_count": 35, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "xyzblock" - ] - }, - { - "cell_type": "code", - "execution_count": 38, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "80 0\n" - ] - }, - { - "data": { - "image/png": "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", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAcIAAACWCAIAAADCEh9HAAAABmJLR0QA/wD/AP+gvaeTAAAgAElEQVR4nO3deVyN2f8A8M/d2t32fdFesq9tomjITmEKZZ0wRvyEGFs0iFCYIevYS/YYzNdeMhmFSmnTqlK3ut3q1q3uvef3xzF3kqS6NzGd98sfj2c55zy98nGe5znncygIISAIgiDai9rZDSAIgvi2kTBKEAQhFhJGCYIgxELCKEEQhFhIGCUIghALCaMEQRBiIWGU6FixsbHFxcV4+9q1a+0r5M8//8zPz8fbR48elUzLCEJCSBglOlZERERmZibe3rZtW/sK+fPPP/Py8vD2kSNHJNMygpAQemc3gCBapba2trq6GgCEQmFnt4UgPkDCKNHh/P391dTUAEDUo2yHffv2nT9/HgCKiook1jKCkAQSRokO5+/vb29vDwDW1tbtLsTPz0/8QgiiI5B3owRBEGKh+fv7d3YbiP8yFRUVY2NjeXn5+vp6FRWVnj17tqMQIyMjPp+vpKQkJSXVt29fXV1dibeTINqN9EaJjjV48GANDY29e/cqKCgkJye3rxBzc/PvvvuuW7du5eXlQ4YMkWwLCUJMJIwSX4KOjk5DQ8Pz58/bd3lRURGHw1FWVlZRUZFswwhCfCSMEl/CgAEDACAuLq59l6empgJAjx49JNkmgpAQEkaJL8HY2FhFReXdu3ftG66UlpYGABYWFo13crnchoYGvM1ms8VvJEG0DwmjhMQIhcKamhq8XV9fX19fLzpEoVD69esHAO17rm82jAYEBMTExODtMWPGtK/NBCE+EkYJicnNzZ0/fz7ePnny5OnTpxsfxc/17Quj+KHe0tJS7DYShOSR4fdEB3rw4IFAIACAuro63Dm9fv26oaFhbW2t6Bwul9u438rhcETTPRFCFRUVAIB7nXv27Nm+fTubzWaz2SYmJsOGDdu+ffvx48cBICcn58vdFUF8iEKWtCMkJTs729nZ2cnJCQDS0tLmzJmzePFi0etLAKDT6Xw+v32FUygf/K6amJhMnTr1u+++GzZsGAAMHTr06dOn4jWfINqJ9EYJSRo4cODevXsB4MSJEwBgYmIiJSWloaEhJSX1119/sdlsdXV1FxcXWVlZ0SXy8vJSUlKivzKZTBqNhrcpFIqSkhIA7Nq1KyMjY+PGjS4uLioqKsrKysrKyhs2bKDRaAwGA5/5Be+SID5AwighSTQaTV5eHgBwZJw/f76hoeHUqVMBwNLSks1mf//99/v37299gQsWLNi5c2d+fv4vv/wSFha2efNm0aFevXqpq6vjbUdHRwneBUG0CQmjhMTIycn1798fbxsYGFAoFDabferUqb/++gsACgoKAKB3795tKrO4uFggEDg4OMBHuZ1mzZol2g4MDGx9mQ8ePLC1tZWRkQGAmzdvjh07tk1NIogmyLtRogPt2rVLUVFx3LhxAGBhYVFdXf3kyRNbW9vWlzBhwgR7e3sGg7F69WqEUGVlpYKCgpitmjx5cmhoqJaWFgDY2NjExsaKWSDRxZEBT0THUlZW1tHR0dDQqKmpoVAo7UhN0rt3bxsbGwsLC4QQCXnEV4g81BNNlZeX46nreLyRsrJyu4vS1dXFCZszM99SKHR9fW06vbW/cmlpabgZQ4YMSUtLGz9+YnZ2cWKirLNzu5vzr8WLF+OH+rq6OgkUR3RtpDdKNCV6V8hms2fOnClOUR4eHvjjT2KiIYVSJyf3+8iRIxsPgWrBuXPn4uPjVVVVaTSan5+fre0vPJ5dZKS9OO0ROXjwYFhYWFhYmLS0tEQKJLoyEkaJLyExEfh8KCp6FRsbu379+lZelZmZWV9f//btWwCwtwcq9frTp8DjdWRDCaLtyEM90ZRAIMAfwRtPLhJTYiIAwKpVLps3SwUFBdna2k6ePPlTJycnJ+OP8lu2bGGxWC9evCgtLVVRgZ49ISkJ4uPBXrwuqZubW7du3fD2mjVrxCqLIAAAEcSHrK2t+Xw+n89nsVhjxoyRSJmGhgggMzGxLigoCACYTGZWVlbjE/h8fnR0tJ+fH544371796VLl1KpVGlp6YKCAjs7u4aGhh9/RABo2zaxWiIUCg0MDPT09HJycsQqiCD+QR7qiWbQaDQajUalSubXo7IScnOBRlsnJ1fo6+s7ZcqUyspKd3f3+vp6Dodz/vz5mTNnqqurOzg47NixIzU1VV1dfcSIEVFRUUKhcPbs2To6OrgcBwcAgOhosRrz+PHjvLw8KpVqYGAg9p0RBAB5qCc+hifFA4CUlJS9vX1tbW3juZvtkJQECAGTCTQaUCiUY8eO3bx58++//zY3Ny8sLBR9cerRo8fEiRMnTJhga2tbVFRkZGREo9FWrlwJAIsXL6bRaMOHAwDExIBAAP/MF22zsLAwAPDw8CDzRwlJIcPviU/Kzs5etGiRgoLCpUuXxCmnuBiuX4djx9zV1WtkZeXz8thxcfdw5icA0NbWHjhwoIuLy/Dhw42MjOTk5ABgxYoVwcHB33//fXh4uKgcHg/OnIFRo8DAAFgsUFICBqNtLeHz+bq6uiUlJS9fvuzbt684N0UQ/+rstwrE1+vdu3dMJhMAHj161L4SEhKQoSFisRBCyNLy+19+ydbXR5qafCr1k51JTU3NwYMH44QjW7duffr0aXm5EJcWHY0UFBB+pTlnDkpPb3N7/vjjDwDo0aNH+26HIJpF3o0Sn6SpqYmfqZcvXy7KAdomAgHo6wP+GC4QAJMJb9+CpibN0NAcALS1tS9evBgUFPTjjz+6uLhYWFhIS0sXFxc/e/YMz/hct27dyJFTVFQo6upgZwf5+TBmDKxY8b7whgbIyQE2uw1DoPATPR4My+Px7t69i/dnZWWlpKS04wYJAsi7UaJlK1euPHr06IsXL86dO9c4FUjLioogKQkSEmD4cBg0CDgciI6G7t3H9unDjI4GOztYtWrs7t2vtbW13dzcGl+IECooKIiOjp4xYwaTyXRxcampMXz4EEpLobQU/PzAwgJ4PLhyBQAgLQ1cXf+9VkkJpKVBXh66dQNz891s9m05OTlpaWklJSVpaWl5eXkZGZkLFy4AQO/evblcbnV19b59+5ydnQEgNja2tLTUyspKQj82omshYZRoiaysbEBAwOzZs9esWePq6opfXDZRUyNMTqYmJkJSEiQlQWIilJa+P4RfbAYGwtSpYGXlpagI/foBAIwePXr37t0fr5ZMoVD09PS+//57b2/vysrK3377Dc8lLSqCjAzA34Q2bQIXF9DTA6EQuneHykqoqYG6Oqio+LccoTAzKenux01VVlauq6ubNGkSABw9elTcnw5BAAAJo8RnzZo1a//+/XFxccHBwevWrQOAwsLC+Pj4lJSU5OTk+Ph4BYVpf//t3/gSZWXo0wd69wb8hV9dHTw8YMMGWLjw/QllZWUAoKqq2myNVCq1V69esbGxSUlJeNiAtjZoa8PjxwAACgqwbBl4eUFAADReOgQ/3dfWAocDfP5PHI4bl8utq6urqKjg8Xi1tbVFRUV79+6l0Wjm5uZZWVm6urrPnz/38PAAgNzcXHd3d8n+3Iiug4RRohk5OTmGhoYAwOPxOBzOrl27HB0dAwICLl26lJ6ezuVyG5+sr3+7d2//3r2hTx/o0wd69QJ9/feH0tIgMxMAwNsb7twBObn3Y5VaDqMA0Ldv39jY2ISEBNHoKwBQUoJBgwAApk2DV69AUfGDSz7MoNIToJlUUvfu3Xv16lVoaOjQoUOLi4sHDBiA35aeO3euVNSFJog2ImGUaIa7uztOSZeQkHDixAm8zJGsrOyLFy8AQFlZ2crKauDAgT179sQbnxpXamEBeFFkKhXOnIHNmyE9HS5fblUYxbWL9nC5MGoUjB4No0aBrCw0yoLfBiNHjnz16tW9e/eGDRsmqckFBEHCKPEZUlJSCgoKDAajoqLi119/nTFjRvtS55WVweHDwGYLNm9+uW7dzwsXLqysrBR1e5vAi9q/fPlStOfQISgqgtevQZypACNHjty7d++9e/c2b96sqKi4dOlSvN/a2ppkzCPajQy/J5qhp6eH1+0oKyvr0aOHj4+PlZUVn8/ncDjiJJ8/eRLmzKmi010zM+907w5XrlxJT0/38/P7+Mzq6mpFRUUmk1laWkqj0erqwMQECgrgxg0YN67991VVVaWqqooQKisrw0NiCUJ85LmGaIaenh5OxxkQEAAAVVVV9fX1pqamYi7gMXs2TJkCfD7MmgX/TGJqXn5+/t9//41jaHR09O+/Q0EB9O0LYi6b1K1bt0GDBuE0KGIVRBCNkId64vPww7VouTpx7NkD164lPX7sMXgwyMu/HT9+fLOnnTx50sXFBa+07Ou7ks1+CgDr1oH48+AnTpyoqqoq/oJOBCFCeqNEM/DISgDQ0NCwtbXFYVQik9BVVaFv394USlhKSpib24rPXwBQVgaZmWBhAR8O1W8nLpd79erV4cOH8/n8jRs3SqBEossjYZRoxtq1a/GGkZGRu7s7DqP4s4/4VFVhwQKoq4N9+1p6tA8ICPDw8HB398jLywaAtWtBIp/WHz58iCe2CgSCR48eSaBEossjD/XE582bN8/CwmLAgAHiFyUtLT179uzJk+HePSgp0Sso+ORM9g0bNjg6Ot648ebChUxDQ5gxQ/zK33v69CmNRmvlklAE8VmkN0q0BM/t8fLy2rJly7Zt28QvUEpKatasWQoKcOZMjbLy94cObXry5MmnTkYIbdo0nUZL8Pd/2daceC2Ii4t79uxZfHy8xEokujYSRomW5Pwz3bKhoaGgoECCJdvays2c+b1AIPD09KyqqmpydMyYMcbGxrdu3Xr+/LmcnNz06RYSrHrJkiU+Pj4//vijBMskujLyUE+0pL6+/tixYwDAZrMlXviWLVvu3LkTHx+/atWq0NDQxoeGDx8O/2S027Bhg5jp9wmiQ5HeKNESKpXavXv37t276+npSbxwBoNx6tQpGRmZQ4cO4YTKjT18+PDx48cqKire3t4SrPTq1as4J7S0tPQVnHGPIMRDwijREjqd7uzs7OzsPHTo0I4o38rKasuWLQAwb968kpKSxoe2bt0KAMuXLxcthiwRjSfyf5ypjyDagYRRoiWK/6RRolKpkg1nIr6+vo6OjiUlJQtFefQA/v7777t37zKZzJ9++qkjKiUICSJz6onOl52d3bdv36qqqrNnz86YMQMAJk2aFBkZuWbNmu3bt3d26wjiM0hvlOh8RkZGISEho0ePdnR0BIC6ujoulysnJ/d///d/nd00gvg8EkaJzjd58mQFBYXbt2/r6Oh4eXmdOXPm7t27qampGhoand00gvg8EkaJzldUVBQREQEA5eXlCQkJiYmJAKCvrx8fH3/x4sUbN25IpBaukNuAyMwlQvLIuFGik3G5XE1NTSqVWlZWdvnyZR8fn+vXrwPAoUOHEhMTJ02atHz5chMTk1u3bql+5LOFR1VHHS09igAtUFvwoOqBo4KjYzfHDr8looshYZToZDgBvrW19aVLl65fvx4WFnbu3DkAOHfu3J07d6SkpFRVVWNjY319fZtcSKVSVVVVrW9Ys5XYqjRVVbqqKl1Vna6uRldTpatq0bWU6cp+BX7XTa7LUmXvVN7pjJsjugQSRonOJBQKs7OzDQ0NJ0yYMGrUKH19fVEmUBkZmaqqKiUlJbyC/IoVK8rKysrKykpLS/FGeXk5i8XKoGekVad9XLKljKW3mre3mrcaXQ0AJitNfln78uPTCEJ8JIwSnePFixfBwcElJSWzZs3q0aMHk8ns0aMHzuJsaWnJ4XA2btw4f/58RUVFHo9nbW1tbW3dpASBQFBWVlYuX16KSssEZWX8sjJ+GYvPwhs6UjrVgmo9huQnXxFEEySMEl+UUCiMjIwMDg6OiooCAAaDcfjwYQMDAwDo27fv8+fPHRwcfvvtNwCws7O7evUqAHxqAhWNRtPQ0NCAT37Nv8a59qDqwTTlaR1yJwTxDzL8nvhCqqurz507FxwcnJqaCgBMJnPOnDkrVqzo3r07ANTU1BgaGrJYrAcPHuDRo2FhYffu3auvrx8+fPj8+fPbUaMQhJ45nlSg6jJ0lWhKPMQjn5iIjkB6o0SHe8t6uy9o35EjRyoqKgDAxMTEx8dn3rx5jRdEOnr0KIvFGjJkCI6hAODh4TF+/PiVK1e2+396KlDnq85Xpakq05X1pPS4Aq40VVrsuyGIpkhvlOhAz2ueh5SE3OHc4ThyaitqBw4c6OPjM2PGDDr9g/+/GxoazMzMcnNzr1y5MnnyZNH+y5cvu7m5ycvLx8fHW1i0OeVopaBSKUFJmipd3beaRqFJ4H4Iojlk+D0heUIQXq647JDuMDB14Ony02XCsh9Df3z27FlcXJyXl1eTGAoAYWFhubm5FhYWEydObLzf1dXV09OTy+XOmDGjvr6+rc1I4aUgQD1kepAYSnQoEkaJdqoR1uwp2eOT73O54nIqL9Un3wcAqoXVh0sP90zp6Zbl9rj6MZPG9NHwyeyZuev7XYMGDWq2HIRQUFAQAPj5+VE/WrXuwIEDZmZmz58/37RpU1tb+Jr3GgB6yPRo870RRFuQMEq009SsqdoM7bVaawsaCqoEVbXC2tUFq/WS9BbmLUzlpZpKm+7X31/Qu2Cv3l4DKYMWyrl+/fqrV6/09PRwrvsmFBQUzp49y2Awdu7cef/+/Ta1kIRR4ssgYZRoj3cN73iI56Hsoc3QXqq+VJ4mT6fQb3BucAScgXIDTxqeTLVK/Un9JwWqwmeL2rlzJwCsWLFCSkqq2RMGDx78888/C4VCLy+v8vLy1jcyhZcCAFYyVq2/hCDagYRRoj3KBeXqdPUmO/fr74+zjIuzjPNS8Wrl68ioqKiYmBgVFZUffvihhdPWr19va2tbUFDQ8mlNkN4o8WWQMEq0R3ep7mm8NCEIG+8c2W3kQLmBbSpnx44dALB06dLGg58+RqfTz549y2QyL1++fOLEidaUXCuszanLYVAYptKmbWoSQbQVCaNEe8hT5T1VPKdnTQ8tDfXJ92lADWwBe3He4tuVt1tfSFJtEncx18TepDUrhRgZGe3bt093kG5oz9D0uvTPnp/KSxWC0EzajEGR3Ar3BNEcEkaJdvLV9N2jt8dS2nK11mpzaXMTaZPQ0tDgkuDWl7CzeOcjnUfjwsepqam15vzZs2ePCB/xlPbUK8eLj/gtn4xfjHb0E/3Lly/T0t4nRomMjKytre3Q6oivEwmjRPsZSBk4dnPUY+jJUmVXaa6Sp8rfqbyTykttzbXZ9dnh7HAGhbFCY0Xra9xvuL+7VPen3Kdb3m1p+Uz8YtRKtmO/Lz169Cg+Ph5vHzlypKqqqkOrI75OJIwSkqFEU5qhMgMBOlh6sDXn7y7ezUf8GSozukt1b30tijTFM4ZnaBTa1qKtD6setnAm+b5EfDEkjBIS46PuAwC/l/1eKahs+cwSfsnxsuMUoKzUWNnWWoYqDPXT9BOC0CvXiy1gf+q0Zh/qnz59evbsWbx98ODB169ft7X2j/36668eHh4eHh7Pnz8XvzTiW0TCKCExvWR7OSg4VAmqzpSfafnMfSX7aoW1ExUn9pLt1Y6KNmtvtpG3ya/PX5i3sNkTGhoalNnKhlRDC+kPZuKzWKzs7Gy8nZaWxuFw2lF7Ez/99FNYWFhYWNiAAQPEL434FpEwSkjSEvUlAPAr61cEn0x5UyWoOsA6AACrtVa3tXwbGxsAoFPoywqWSe2TusC+0GzIzsjI+GvoX7SpNFmq7MeHbt++ffv27dzc3LbWThDNImGUkCQ3JTddhu5r3usHVQ8+dU5oaShbwB6uMNxO3q7dFekydJ0UnABgcd7izLrMJkdTUlIAoEePZl6Mcrnc4uLi4uLimpqadtcuMnbsWJxVuqqqaunSpYqKiuKXSXxzSBglJIlOof+g9gMA/Mb6rdkT6lBdSEkIAPhp+bWj/MLCQl9fX19f399++623bO+pSlMHyw9u3OUUgpAr5OKXnlZWH3ymZ7FYANCvX7/Zs2fPnj272SDbVmZmZgYGBuvWrWMymUlJSdLSJJ9pV0TCKCFhC9UWSlGkrnGu5dTnNDlUKagMLg4ubCjsI9vHhenSjsI1NDRwGHV3dweAX2i/3Ox+U44qt6ZgzfTs6cElwTn1OUvyl+AwKgqUCKEdO3b06NGjqKhIrHv7BG1tbQDIyMjoiMKJrx/Jfk9ImBZDy03JLYwddqT0yFadrc9qnm1/t50KVGNp47HMsfE18RYyFn6afhSgtKNwOp2uo6MDAHiRes9pnhUVFTK/y+zsvXMbc9t1znWugAsfPtRzOJwZM2bcvHmTTqfLycmtWbMGFxUUFESjSSYPKU4pLRqHT3Q1JIwSkrdEfUkYO+xw6eGVGit/yP3htultLYZWYm0iR8CxkLE4b3y+3Wsu9O3bF28oKioqKytXV1dnFGdAKgRtDNLeoz2p76Sc+hyEUHp6OgBYWlpmZGRMmjTp9evXqqqq58+fHzlypKgoBkNik0TNzc2BhNEujCwiQnSIQamD4mviN+tszq7L/r3773jn4+rHtytv437oGMUx1nLWYualz67JDo8I9+f51y+up1KpM2fOXLp9aSA78HLvy3p6eocOHZo5c2ZFRUWfPn2uXr1qZGQkgRtrjlAo7NatW01NDYfDYTKZHVQL8dUi70aJDrGMucwxyfHG9hs0+CBQIkAHSg/88u4X+zR7pQSlCW8mHC49/LbhbVvLz6vPW5i30DzNfNT0Ucb2xit/XslgME6fPu3o6PjixQsAkJWVnTBhQkVFxfTp0588eSLxGCoQCPCrAwBgs9l4fVPyerRrImGU6BBTlacm+SY9O/osujS6Rvjv0CIE6JzhuWUayyxkLKqF1Tc4NxbmLTRIMuj/uv/awrVR1VGfzTnC4rOWvV1mlmx2uPQwnUJ/Vftqk96muDlxP8T9oPe7Xo2gBg+wxxFt+/bt4eHh8vLykr27MaNH1+3ff3f69IKgoJW+vvfv38evCMhzfReFCKJjrFq1CgBGbBrhnO78fdb37lnuT6qfbCncIjohqy7rEOvQtKxpzJdMiAf8R/6FvHO6c0hxSG5dbpMCuQJu4LtAxZeKEA/UeOq0rGlZdVn4UI2g5lXNq1uVt07/ebqbbjcAoNFoV69e7ZAbEwh2GBkhAPznj/79IyIi8FvXhQsXCgSCDqmU+IqRd6NER8nNzTUxMaHT6bm5uZqamgBwuvx0rbD2wowLd/53BwDYbPbixYvDw8PrUF10dfTtytu3OLfwXHjMPdVd/6W+i4uLjb3Nmaoz/kX+RQ1FAODczTlIL6ifbL/G1a0uWB1UHLRWa+21766lpKRoamq+e/euQ26MzwcGA1Eo92g0Zz7/vpzcxv79Kysrs7KyuFyumpqak5OTs7Ozvb19z549O6QBxNems+M48YUcOHDgxYsXeNvb2/vLVDphwgQA2Lp1K/6rWoIaxMPAIQPxX0tLS8eOHdvkknf1706WnZyWNU3ppZKR4/sXmlQZKlgDrIQ+d/vcr7zfbF2PCh/ZbbEb7DQYD2PS1tbOz893c3OT/F01NCAARKEkMJkIIMHAAC9tQqPR8ABSESMjox9++CE8PLykpAQh5OrqKhQKEUK1tbUeHh6SbxjRSci70a4iOztblIkjISHhy1S6ZMkSAAgNDeXz+QAgQAIAEAqE27dv3759e0hIyMeXaDI0vVS8IowiSvqU+Pr56i3QAzMQ8oTwFGAXJDonLrFe4uvre+fOHR6P1/hCO3U71mmWqZZpt27dAKCy8jNZptqPRktWUACE+lRWAsBzGZnjx49TKJRjx44VFhamp6cfOHDAzc1NRUUlOzv7yJEj7u7umpqas2fPLioqQggBgFAo7KieMtEZyLjRLuTx48dsNhsAJJLZqDVGjRplYWGRlpYWGRnp6uoqAAEAUKnUcePG4WZ8Krncq1evQktCf9P4DRaDto/2/zH+Tz9R/+aNmzdu3Hj9+vXr16/37NkjKytrb2/v7Ow8YcIEKyur5ORkT0/PDRs29OvXj8PhcLnczZs3d8hdUShBzs6Hp06NiYmR19RctH27QCDAE0wBwMzMzMzMbPHixUKh8MWLF48fP46Jibl9+7a+vn5GRsZvv/1GoVAaGho6pGFEZ+ns7jDxhaxatWrTpk3h4eHh4eHm5ubiFBUXF4c3GhoaXr582fLJuMs5YsQIhJDcCzmIh8HWg/GhZh/q8/Pzvb29aTSakoGSboKu31s/Dp8jOtrQ0BAVFfXzzz8PGDCAQvl3HtTWrVsPHjyooaFRWFg4ZMgQWVlZALh16xZ+qGez2TU1NbW1teLcdRNbtmzx8/PT1dUFgJkzZ+Kn9U+pra1ls9m2trbR0dGPHz++d++ek5OTBBtDdC7SG+1CnJychg8fDgDBwW1YMeljS5YsiY2NBYCqqqo1a9bcunWrhZPnzZu3cePG+/fvJyUl9TjdQ8ZYRtvg/QtEGo2mr68vOpPNZm/fvn3//v08Hk9KSsprstd6/fXqyh8s40yn0x0cHBwcHLZu3cpisR4+fHj37t3IyEhbW9vbt28vWrQoIiKCQqEwmb0UFXWqqqQQQh4eHlpaWm/evBk2bNjKlW3OEv0p27fvra29MGiQnLHx3WPHjjWO6R+TkZGRkZEBADs7OyqVKpHkUsTXg4RRomN169Zt5syZBw8e/OWXX+Ij4gFAlB9ESUkpNDQUAOrr60+cOLF+/XoWi0WhUKZNm7Zt2zZT008ujMzn8/Py8pKTk5OTk9lstoqKSkNDQ3Z2dnBw8Pz58/X09LKz9YuLVXJyKuTk5LS0tIKCgq5evZqZ2TSfXrvV1NTV1p4AcOJynf78c3krEzupq6vjaEulUlu5ih/xTSBhtKvYsWMHhUJ58OBBRkZGy/3HzxIIBB4eHgCA3/EhhFrui/3000+hoaEXLlzAf1VX/7eDKRQKL1265Ofnh8fMOzs779ix4+M08qWlpQkJCYmJiQCnyFcAABipSURBVElJSQkJCSkpKU2+LyUlJZWVlenq6qqrqwuFQj09t5KS3OLiiunTp+PvafX19QDw119/GRkZaWlpiXP7AODjIwAYT6Wyr15VVlFp7ezPa9eu4Q0ZGZmIiAgx20B8RTr7rQLxRQ0ePBgAdu7cmZaWhvfs3LmzrYVYW1vjjfLychcXly1bttjb20dERPD5/GbPLykpkZOTw79vFApFtP/OnTuiVCM9e/aMiIjA+xsaGt68eRMZGblp06bx48cbGxt/HKa1tbXHjx/v5+d38uTJV69e8fl8/Pr1ypUrWlpaU6YIAB5PnbqBw+EMGzYsKCjIzs4uKCgIv0MwNjb29vaOiIgoLy9v670jhIKD8bj7OgMDr3ZcTvz3kDDatbi6ugLAlClT7t27h/eIYmLrNQmjOL8RAJiamoaEhHA4nJUrV+bmvp+DtG7dusYJkhkMBkLo6dOnjo6OeI+BgUFwcPCjR49CQkK8vb3t7e3xB6LGunXrNnDgQE9Pz5CQkDt37rBYrI9bdeXKlZs3b9bX12dnZ48e/RagPjiYhRCqra1NTk4+e/bsrl27XFxcGk8MpdPptra269evf/DgAY/Xqnu/dg3RaIhCQQDutra2bf3REf9JJIx2LcuWLQOAkSNHnj17NisrKysrq3///m0tJDQ0FG/U1taePHmSw+EcOnTI0tISxyYFBQUZGZnly5cjhHJzc/FkcxMTk9WrV58+ffrmzZsIIbykkqysrIWFBZ7g1BiVSjUxMXF1dfX39798+XJmZmbL38Exa2trADh16pSfn7+Ozh8AKCgIVVZW/vjjj3v27Bk1alR6ejpCqKGhIS4uLjAw0NnZWfRO09DQXFYWOTujwEAUHY0aGj5ZS0YGMjNDXl6pAPDxMAOiayKTQbuWXbt2rVq1asiQIaampjgp0alTp96+bXOCpY8JhcLr16/v37///v37+Jdq9OjRmZmZb968UVBQwO80jx07ZmJiEhUVZWZmdv78edG1TCbTzMzMyspq4MCBAwcO7Nevn4KCQptqf/DgwYgRIzQ0NHJycuLiZHfuBFVV+OEHsLeH6urq/Px8AwODjxOUVFdXP3r06N69e0VFmufP+4n+KaiqgpMTjBwJI0eCmRkoK8OpUzBhAly8CPn5MG8eXL9+xtPTc+bMmWfOfGYNVKJL6Ow4TnxR4eHhAGBpaSnOQ33Lfv/9d1tbW9wJxQnnx40bhxCytbWtq6tDCA0dOvTixYtTp04NCAi4evVqVlaW+JWOHj0aAAICAhBChw6hefPe758+vbUlFBejsDC0YAFqlHUEASA/P2RjgxwdEZeLLlxAe/agR4/Q0qV+ALBo0SLxW078B5Av9V0L/sZSVVXVcVXw+fylS5fKycnNnTuXzWZ369YNf1VHCElJSSGE+Hy+m5ubm5ubpGpMSEj43//+Jy8vv3jxYgCoqICXL+HWLRgzBgoLW1uIhga4u4O7OwBAVhY8fgwxMfDHHzBkCDx9CkuWQEAADBwIADBxYl5d3VFFRcWzZ89qamr6+PioqKhI6l6IbxGZU9+1vHz5EgDq6urwWkYAcPr0aclWkZOTY2hoOG7cOBw92Wx2WVkZANjZ2a1fv3758uXV1dXl5eUPHz6UVI3bt29HCC1atEh0U35+sG0b1Na2s0BjY/DygkOHIC8PJk0CAJg6FV69gvR0SExMrKnpy+OVNTQ0VFVVbd682dDQ0NfXVyIvRohvVSf3hokvJSUlpfFKRIqKih2UjjM3N/fRo0cODg7Dhg3D33BcXFzwoYSEhIKCAltbWysrK1lZ2cePH4tf3Zs3b+h0OoPBEI0N2LED/fEHCgtDGzagoUNRWRn63//EqsLRESGEUlIa5OWrKJQVADBp0qTy8vLo6Ojx48fjwVgMBsPT0zM5OVnsGyK+PSSM/vdxudxNmzbhiKasrLxjx45p06YBAIVC8fHxaWjhs3TbJScnT5w4EUfqESNGFBQU0Gg0Op1eWFi8f//+vXv3+vn5bdy4cenSpTiUf3ZK/mctWrQIAObPny/ag8MoQmj8eGRpifz9EQDq2xedPIk+MbD1M3x9UU5Ojo2NDcAyGm16YGBg45EDCQkJnp6edDod/0jHjx8fExNz/vz54uJifMK+ffvEuUHi60fC6H9cZGSkgYEB/hfu6emJE18ihA4dOoS/Ag0fPvzdu3fiV1RSUuLj44OjiZycnLGxMYfDQQiNGbNSS2trQACqrq6+desW7oHy+fypU6cCgK6ubk5OTrsrLS4ulpWVpVAouBt45gwaOxbt3v2++5maiiwt0YEDSFPz/fciKyt0+nRL45madeXKFSUlZQCQl+/+119/NXvOmzdvfvzxRzziVVVV1cvLS9QzlfhHPOJrQ8LofwcOW1hFRUVaWhr+fg0AAwYM+Pjf/8OHD/G0SH19/adPn7e73urq6sDAQJzlk06ne3t7p6amih7k16+PANilr4+io58AgGjIel1dHX7JYGZmJuq4tdXatWsBwNXVFSG0bx8eFY8uXmx6Go+HTp5Epqbvg6mhIQoJQTU1ny+fx+P5+PjgnyGDMRmgvOWWFhcXr1u3bteuXXPnzo2Kinr37t27d+8GDx7cvrsjvhUkjP53ODk5cblchJBAILCxsTE2NgYANTW1w4cPN7tA0KNHj06ePDlixAhFxe5qans2bmxzr7C+Hh0//gLPkadQKK6urniOaXl5uba2tru7u7u7u729vbr6LgAUGJhhbt538uR/s75zOJx+/frhSPr333/jnQEBAa0ZbI8Q4nA5SkpKABAbGxsYiBPSo127Wmrt778jS8v3wXT8+IRdu3ZVVVV96vzs7Gw8pF9aWjokJMTeHgGgu3db9ZOZO3eup6fnsmXLli1bZmFh0apriG8WCaP/HY3DqK2t7cWLFxctWlRWVvap88PCwoKDg+vr6/398wDmAyR5ebWqj4ZFRiIzMyQlVWdgYGJtbR0VFSU6hCeJ4u2IiIjx43cBIGtrBID+2f1eQUGBoaEhAAwZMgS/pbW1tf3U3Pwmdr7bafnccs6vc1etQgCIRkNHjnz+KoEAXbiArK2FurpDAIDJZPr5+ZWWljY57dy5czhGd+/ePTo6GiG0aBECQMHBrWkamjt3Lnmo7zrIgKf/lIULF86ZM2fevHkA4ObmdvDgwZaHNGZmZsbExAwf/qZfvyI5OTh1Cmxt4c2bz9QSFQU2NjBxImRkgLGx1MGDUbGxsQ4ODp86f/BgYDJBUREGDoRG0+sBAHR0dO7cuSMvL//3339PmTIlMTGxlbk4b/7vZkhJSKog4+3j/wsKei4lBefOwYIFn7+QSoWpUyE2lhIevnv8+PGVlZU7duwwNDRctmxZQUEBAPB4vEWLFs2YMaOiosLV1XXz5s1//fUXAPTuDQCQlNSa1hFdTGfHcUJinJyc2Gw2j8erra1tTdaMsLCw6dOnh4aGhoaG2tvbX7+eZGWFABCTiS5dav6S16/RtGnvH4rV1FBISPOfa+rq6vCUUIRQbm7u69evjx1DN2++P/pxSql58+bR6XQKheKy0MXAwIDP5+NudQuMBhjBU1CdYScrG0OnL7t167O327yoqKgxY8bgfwsyMjIeHh5GRkYAQKVSceqACxcu4CRY0dEIAA0a1KpiMzMza/7p2CcmJrazccQ3goTR/44mD/WfPR8/1OPt+fPnJyUlcTjI1fX9S8aDB9HTp+/PvH8fFRQgb29EpyMAJC+P/PxQow9an+ftjXr3Rjgv3dChTY9u2LAhICBg+N3hEA+GgwyjoqJUVFQ2bdpUUVHRbGkCJJDpKQP2AAB9+86ZNm1ZG5rSHDxoiUaj4UGgWlpampqaCxYsWLBgwciRI3EYrahAFAqSlW3nqCniP4w81P932NnZiUYvtvCI3QImEy5ehJAQGDAAEIIJE95Ppty4Edatg8OHgUKBH3+ErCwIDARma7MVv/fTT/Dzz588OnjwYO/+3lSg5tTn/HLul/Ly8s2bN5uamgYGBlZXVzc5+ezbs7wMHsSAlJSUtHSKjk5bb7SpPn36nDp1Cq8xRaVSDxw40KtXr+Dg4ODg4Dlz5uBzFBXB3r56wIA3WVkl4tZH/Md0dhwnOk19fT3vnyybUVFRotXkEUL19ejoUbRyJcKrqQ8dirKzkbs7Sk9vZ13e3igtDc2YgZ4+RUOHotraD/p0ZWVluB+9891OuAmM54zdt3ePGDEC/4qqqqo27pmWl5cr9FUAAEVNxaSkpCdPnixbJm5vFMMTOnV1ddls9qhRo/BO0UM9QggvaHrx4xFVRNdGeqNdF4PBwFObKioqXFxc1q9fj2fcAwCDAQDQpw+oqsLt2wAAhoYQFgZmZmLVGBQEGzYAQrB7N5iZweHDwOcDAKioqOD0+Ks0V/n28W1ADf5a/juv74yOjnZyciorK9u8ebOJiYm/v39GRsYA+wHVCdUUKUpMdEyvXr3EatCHKioqAEBJSYnBYOBlAgBAS0sLDx0DgD59+gBAEvnMRDTR2XGc+Cr4+voCwJQpU0R7jh5Fp04hNhsNG4bEGbGTl4eSk9/3RhFCe/YgW9v3g58AkIkJOn4c1df/e74QCefkzIF4UE9QT61NRQj973//s7Ozw7+u7xMtq8OUoPdNLSoqajzWShzR0dEAMPTjd7f/OHfuHPwz2p8gREgYJRBC6N27d3JychQKRTTJHYdRhNCpU4hGa2exb98iU1OkoYHu3kV4lfiGBvT6NRIIUETEvyPhu3dHISFItIx8vbDeJcMF4sH4lXFRfRHeGR0dbWFhgT8B0XrSWLxm1hERU2RkJABMmDDhUyfgfqipqanEqya+aeShngAA0NTUxEmIt2zZ0tAAt27B4MGAF+icNQtCQtpTZnExfPcdZGaCri707w8yMgAAdDpYWgKVCtOmwatXcOYM9OgBubmwfDlYWcHRo+H19fUMCuOS8SVbedusuqxRmaMqBBUAYG5ujmccgTwsiViiJq0mFAorKysl+EMQPdQ33hkTE7N+/Xq8fenSJTqdnpWVxeVyJVgv8a0jYZR4b/Xq1XJycleuXFm8+MnYsRAZCT17gpsbyMvDRwsef15xMYwYAa9fQ79+cPcuNDsJgEaDmTPh1SuIjIT+/UFL6+0PP3iYmpru3buXUke5ZnLNXNo8qTZpT8keFos1YsSIwsJCAKAwKH5mfgBQXFw8e/ZscW+7ETabDQDKysqNdwoEArw4M97W19cXCoXJyckSrJf41pEwSrwn6pCeOOHk4JAxahQAAEJQWwsFBW0rqqQERo6ElBTo2/eTMVSESoUJEyAuDlatyujdu3d+fv7y5cvNzMzCDoRd1bu6XGP5Yvrikd+NTK5I1jbTBgB5RXkdhthDnJrTbBgFgJiYGH9/f39//0ePHklLS1Op1KlTpy5cuPDChQssFqsjWkJ8W0gYJf41ZMgQBoMBIEhIGHTzpj+LxdLVBYC2hdGSEhgxApKT38fQfxLSfwaVClOmOCUkJERGRg4aNKigoGDZsmWO5o6KRxW/m/Fdkk+SireKcrAyOEIdtW7OnDlz5sxZvnx5e27y0+rq6gBAUVGxyX4rKysPDw8PDw8lJaWMjAwajZafn3/48OHp06dramr27Nlz8eLFZ8+eFSXAFw01zc3N9ff3l2wjia9RJ7+bJb4ad+/exekyccYmAJCRkRk8eAFA0sqVrS2kuLh4+vTzVCrq0wc1t5h8qwiFwqtXrw7EKx8BwDrQddUtKirauXMnUEHKQorH4/F4vJycnMmTJ7ezjg/xeDw8e1UgEKSnp79+/Vp06NGjR6tWrUIIZWdn41FZa9asuXfv3qZNm0aMGIH3iBgaGu7du3fIkCH42tTUVC8vL4m0kPiakd4oAQAQExMzefLk2tra+fPnFxcXR0dHT5s2raGh4dmzowC9T54ceuHCBYFA0HIhLBbL2dk5IuJ7N7ewu3dBTa2djaFQKJMmTXr27BlexxRMYEafGVpaWgoKCsaGxhQqRVpaWlpaWkpKqp0VfKSqqmr37t0AQKVS4+Pjb+OxsgAAoKCgoKOjU11dPXHixJqaGgcHh61bt44YMcLf3//evXscDicuLi4kJGTatGmqqqo5OTl8Pr+2tjY8PDw8PPzmzZuSaiHxVevsOE50vidPnuCky3Pnzm2cmTQzM9Pd3Q/g/ZdrY2PjwMBANpt94cKFjwspLy/H/UcLC4vCwkKJNOzPP/8EANgHar3VDhw4gHfqzdYLCwvDNeLF7MTHYrHwKtDow1QDmFAonD59Or61T03zRwgJBIKXL18WFRX16dPn6tWrV69ePXDgAOmNdgUkjHZ1z58/xx9VvLy8Ps7unJZWamOzx9LyO/y8DwBMJlNTUzM7O7vxaWw2e9CgQZKNoQihLVu2AADTiwnrobthdw6f867+nd0TuxaGdrYPi8XS0dHBeabt7OyahNEdO3YAgJKSEk5K/Vnkob6rIQ/1XVpCQoKzszObzZ46deqxY8eo1Ka/Dzo60rGxK3JzHw8fPvzs2bPOzs6VlZXFxcUmJiYTJky4e/cuAFRUVIwaNSouLs7c3Pz+/fva2tqSap6zs7Ofn98KkxXwEvJR/pLUJdmcbFu6raTKb6x///5hYWFhYWF4ub3GPDw8Bg8efObMGXNz89YUJXrbQKVS8YJXxH8bBSHU2W0gOodAIOjZs2daWpqbm1t4eDjODvUxJpNZVVXl7OzMZDKlpKTKy8vj4uKqq6vxaMr+/ftzudz09HQzM7OHDx/qiJ9tCQAAFixYEBQUhLvJrq6u9fX1iYmJzs7OVCqVx+NVVlbiGUeSUlpaOmfOnBs3bgBAeHh4RkYG/hYPAJcuXeJyubNmzfr4/xiCwMhvRtdy/PjxlJQUvL169eqIiIi5c+eGhYV9KoYCgK6uLgDweLzDhw+HhYX9+eefpqameXl5mzZtUlNTe/HiBYvF0tLSevDggaRiKAAUFRWJvmgVFhauXbuWSqUeP3786NGjpqameLqRBCkoKCxZsgRvDxo0yN7evrS0FP+Vy+VWV1eTGEq04JP/eIj/pJSUFNGTaUxMzO7du48fP97yJbq6uqmpqXhMpYimpqa/v//y5cutra3T09P19PQ0NDQk29Tff/9dXl4eAAQCAZfL5eNkUAClpaWfHTPQVjIyMqIc+KampnJycm/evNm7dy8APHv2TJQYhSCaRcJol/PixYuGhgYA+DgdcrMUFBQAYOjQofhr/oYNG0Qdt59++iklJaVXr16pqamnTp2aP3++BNvZo0cPPBIe9wSNjIyOHDkCAOnp6XixqQ6loqKClwUtLy/v6LqIbx15VOly8vPzMzIyMjIymnQwP9bQ0LB37947d+4wmcwTJ05kZ2fjy4cMGYJPyMzMpNFomzZtAoCAgADR3HOJsLGxcXBwcHBwwFmdjIyMTExMTExMVFRUzMTMe9oKysrKNjY2NjY2JiYmHV0X8a0jvdEuZ+LEiUOHDgWAlh/nIyMjV65cmZGRAQDKyspsNnvo0KGXL1/Gh549ewYAeBXP6dOnb9269dWrV2fPnp07d65EGqmsrCx6HamqqgoAhoaGOB9+47HxHYROp4umcikoKOA4ThCfQnqjRFOpqanjxo2bNGlSRkaGhYXFjRs38vLyJk6cWFpa6uzsnJmZqaSkpKqqqqqqiiMdlUpdu3YtAGzdulX0BlNMZ86cES0N/ccff0hJSYmmXcrLy3f0KCINDY1Dhw7hbVdXV09Pzw6tjvjmdfbAVeKLqqmp4f+zClJlZWWTo2VlZT4+PvirvbKycmBgYF1dHT7E5/P9/Pzw74ynpyceqG/9T1p8Pp9vaWkJACdOnPhSt0IQXwvyUN+1iCYjAUBiYmJJScmUKVMA4MCBAxQK5eeff66oqGAwGD4+Pps2bVJplOGORqMFBgaamZl5e3ufPn26tLQ0PDxc1EOk0Wjr1q0LDw/HqxURRJdCHuq7rqKiojdv3uDtxMREZWXlyspKZ2fn58+f7927V6W5LKHz58+/e/euiorKrVu3Vq5c+euvv+L9eXl5zs7OhoaGotFUomRxBPGfR3qjXdqbN28ePnwIAIWFhZaWli9fvuzdu3fLlzg5OcXGxq5YscLLy2vPnj1Hjx4FgEuXLmlra6enp4vejb5+/bqD204QXwsSRrs0FouVlpYGABwOBwA+G0MxMzOz69evN7vO8OXLlxu/NyCIroCE0S7NxsZm4cKFAPDixYt2XP7gwQMPDw8ASEtLW716NQDIyMiQMEp0NSSMEu3n5OSEH+qDg4PxnrFjx+KpR9u2bevMlhHEF0TCaNc1adIk0eT0PXv2SEtLi1kgg8EQjVQnCeKIroMkyiPaqaSkJDY2duLEiQAQGxuroKDQq1evzm4UQXQCEkYJgiDEQsaNEgRBiIWEUYIgCLGQMEoQBCEWEkYJgiDEQsIoQRCEWEgYJQiCEMv/A7l4uWPH5P+gAAAFCHpUWHRyZGtpdFBLTCByZGtpdCAyMDIzLjA5LjYAAHic5ZJrUJRlFMfP7vLuu7AXWOOyKLAgF1cF5O7K6u75L7jGTbxgQZITmCZminIxMRNBG1C8koKkkdCYZujkPTTUBkRTA81Lo6JYUt5GJnUckrTW8UPTjGPThz51Zv7Pb+ac58y5PE93U8MVspsz/WVj7Eq3q1ii9VU8dbwIqudB/GfIn0HyN7wo9lzn/zn232/pX1dQCg4kyEiQkiAhuf2ujORSkktItL+tnEQHEmUkSkkhJ0c5OQn2BFKJpFaQRk3OanIRSetCfbT0kpZcHcnNldxdycOVdEry1FFfHfXTkZcTeXuRjxfpvche1c+X+vuSvy8FqCgwgIICaEAAGRxpoIEGGWiwgYJdKCSYQoNpSDCFKSg8jCLCKDKMopwoOopiomhoFBkdyaimYUaKNZJJScNNNMJEZiVZzMRmgpmsKoqzUryVRlrJpiKblkbZ6GUbJThRgokSEygpgZJdKCWZRidTavLT5onsw4syqV0yuejgIMoE+yEVHCRymSCoRBetTVDIHY1qwUlQmhI8vpXZ10jPRGMOZcsxbqIarmF1XJJ1iKtdk9B58jLH+/dByL5Y7NKd5aNnOlh/cBim/DSfDUleSGufAO+GQtZnPOKKwemwBTXwwswOHrRiALZsa2WPe25o3xqKgk2L2bjkMlfH6jCkXoZl39VyR6s7Ku438YYZ5/m9oDno3recDzU7YkL2HGTcPcsxbTqMSwtAtChjk+YAfzBGRHiQBCrzTr4YJMWaAmccjmjlO74PWRh/j99RGPHZzkCEuJfxxhgzcm8H4pYsiqctSkZInB6yzBDujLLA1BWFaJUve7bW8407MlQH1nHlijIWrD08tmwTKyc18qTrD/jciS94YO/nbG1SIMy4hK9ufcxnHuVhZs8TPljlgPm6Yrw6R8QZqwS/npiKls0i/G9cYf3jAsjnPuLU1C1cpZwJ8W45V46s4asriyCbW8QxCRtY88rbyEzfzNKaeq5amoWFkbNYuqido38LwpNBbljX3sbHvfQYf7A/rofuZrU6BPm2Pgjb0MWnKiIwz9sdl7Z5QNoUg8Wlyy2RuTpsKQxHXs5ws1+DP1LyGOeN9Zb5BicU5ZghLf3YMrV2Hl+bFoDuUds5aHIpxzYaUHBhFb9+LY9rQsNRyIe560wcR2R6YUf9dta3mXArywUtq2s4OyYSic0CdkUv47wjQ9Gc64KH3+/nVdIk7PhKhZgbVZx+WQqrSoOS2Y6I2qtGS4AnmvcrEZwnYtFSB6z7spezNBJUfC1g6Sfu+L33Z/axFCL+cRz3d+riHO8caK/7cfW7UujaijB+0ije9vAcL/6mGNUXDZyx50Mu2O2M2vu3+A/zAl79hgNmTL/J8iVlvPZ2P4SLvdzoI2BvewlObWtk22RnXBhYipUf1fGPPiJuJJbjl1knOVzww9mc2Zhw5zKb6wxoScmFee0RvjM6AKc738TQdXf56JpAdE9/H8uv3uYDFgUSj7ni5p7TFsp/wPPO9kPzjnbLnl4RPecUmJ6i5fJiJTQ5zhA+HWHpTQvFJU1fGBb0WhqtkTD1emKvttQy+bUQVCqU2PSWljXmDi7YUoL8uK18b/0xzl9ZgvW2I3zL7QfWmMqhHVvN1+aOREZyNI5fqGVZNhAcH40ezyaeMjoO/eri0Hmz0v6n0jAxNRx6v43s/icwOK/YKAVkKwAAB856VFh0TU9MIHJka2l0IDIwMjMuMDkuNgAAeJx9WE2uHkUM3L9TzAlG7bbddi/JjwhCeZEgcAWExJL7iyrPy4zfhsDiG8dTXe2fsicvB//89unXv/897j/66eXlOMb//L/3Pv7UMcbL14M/jg+ff/7l9fj4/acPPywfv/3x+v33I8eRiXfw33vfn75/+/rDIsfHf448dW8ZiR+pFtsPP8dKXft5ddLRz51juR4yz7WnzzzWuUFmNE+l5z5FdQkOkHOtHVPguWYO8cfT6AkAlR27PEcaMBUmD7fH0y/MACmDp566CA/PdFNZj+c6vv51xJlTNcrTZSydoG4y9pyPZ9ATpwtOkkPGaTHn4I2m7hjt9KTnPjVkwQzPLcs8DzvFLPrd9/GK93PLXBNvuJgOR1jnDLWWCATmFa/vrXspHG3qFfa9Ymp3lEKMMQIHiiOshnfwLgIVQ5vnhGeeiLmrlachM8Gwu43dwi4KT5Dz4bl5nRn4tY55DgvtCRJkCKTS3DIAbh7iGz9GSM4WIbz0BY5Onoa/B0tLXnyvNXsokaovjPC0bY48rS0uGz885tLuGCCJkvAxhwdZqi8R3hx1F7jY45pgCdfMVNVyXRuFigulIPAtPzjqC4s3Evdg4LcrogTPGBkog6feBz0FDgPR4y9kci+Dq/OSLUqobUZJJIfz8tNcNauHgNp7aAIT/FcYYhInUgpMOlrkblmfWuFEEfMaiBI6LQIW9Glmq2HkgI6oiSsvbijMwcJcKr0wJzoIQHuujUyjOiYyqswAKi5na6DJDOESqC5cUtY5RBAlZh+F1KtjRnmOyEShCEsS4jHoCch3nllZ38tTg6dr2NxRfRpjdp67YjkR6hRi4t5JqThxHx2Np44KZk5IohJzrSG4JsRDFI3XPOXyTN083ZhrH4y77JzZMWeFU4DjrP5zoD2VmKHhqLPHEyqHG7l4WJZ4qEO7qBJz7t0xre6Oep/Cv99m1E28IpCO6JhXEy0dMUtmUKQL9KClBmVq9aHMUQDAqX2oTVZzOE9H4Huv48IfqS+Bdgt6goWy60/ohEfnyRxBFdgwk55ji3ECnILAvbtRNRFkAylcyXYaE1QRMCiJS7T6tFElgs5G9KudKGRCT0UpNPkyNpHy79XtEiVfg5JohrnROtOuLgL/9Op2hzwth8khIaN7so0wIjgBahKNUPYRahpF26ebWXmiG8OCgybmVSHG/HZIv7QGQOhueA706ODhqNK5W9XZugQEiYugeCqGBxQAleyDU+HxjMvTEhNoFyYTi9MDChEdMy/5Wug49GmeGBqUPJQ051DLkbGPoMORnCvJNmKbQCH2YB0+k/XKUDqEgYIIhbeiGzpXVxCXckSkl2QJhLLt0cKQhdnK2OclC+xHigEaI4JVbGLSI+RamjQxStYoVdiltcjDmrzW42lXvTMZ1cFgu0rgfW7vWuxeh4uboU6oCuGoI2AKBo32i1+TCA3GRYI6t43tiOiiNK17sofsXBaijMxGsTvFC16zTxfPqqINdsGbo5XYYrgimr8PF99vgwD3TJYbRFsoxlnF3raZUWlUFNGYJAllw6bG2aDY1BrJdaVnLwmKHDwRmFnDBWnqU2hd+YEMIdqYs5gVCKwjFpqJpDVPJggNhvaJVbo9OGKjlj5N66B2aQLGaW19cJXcWb0G6Vv9Tv4mH9ggKR9oiAF5YEDNa0A8rutyhXzUZMd+hGk0KvaBedAJREUKguzOHpoYlJs6x2yuVnUrq5aWYokbjD2ngpbjeO+4rzjt3ChpQPtktibXJbRwWySvFsJKhLasHCgiDuHEmI9siCFXPAF4yQxyvTBFIYsoLm8Xj/lDPLAXSnnyGvCk3vShEXqFCCXri9W5gI5OJ01Mgk7TamRhOuaswa4YVegsTNvc9o6nX0vagnhcVYf6g54hl1hIei7jaqKA8uIl1pKDJ+UwHHFrghTMD6RLTaqWsE+piI3agqG1rTviTeVGLlYwXSdmEZlu407VXN/2uQm1QTXwF3fDYLtODuK2xNdCp7isc03gNEihuoKAQLqb3Hx+/fTuI+n6bPrw7fXT89mE75nDn48jPtrzBcRHfT5z+DifbxnBt4c8Hyx8vN+NerzfzXq838UVaWqfEXyO9rXA55uXzHq+wUXr+Ubn2gbM531yA+hjIDugrraWC2EfAxkCN9uKzcXt2G2TlkK+aUzSJPRjIVFg3yiTTIl9U+FKVOCPD9kS/bGQLtH7jipEn3fMuHsRvlnIGPCPpTJM+DvwSsqAn3dslZQB3yzkDPhmIecq4bbjyVFntl1OCN8s5Az4ZiFnwD8GUga6PkVGylxVHwspA71ZSJnoj4WUga53mI2UAd8spGyjW0jZepiNlAFv90W5FRO+WcgZ8I+FK2PB38hcDQlvdwidnAHfLOQM+GYhZ8Df4XFS5nfQYyFll24hZaA3CykT/SFIypTIO2BcVAjfLKQM+GYh5fpmbYP0stwFv0gZB/p99VWcd7eQMw+8q5DCyQNXn2bCA1cfW1IH3m8FOePAdTOM0i/vlpKw1S2lYr1YooQsYWyDQnhgs5ScjW4pRZOOk2+Wu2/5LzWkEHfkk5xBoVnImRQey7wsz935jUFSccc5yZk72GMp/Y1WdFmcIaOPpTjvbiFnfovfFg6JPhL4/ONf4fD75T+Ok7nIm+cOWQAABBB6VFh0U01JTEVTIHJka2l0IDIwMjMuMDkuNgAAeJyNVbtuXFcQ+5WUMrBYzPuBLd24SX5AUJ3Gn+CPDzlOYRiwk0LSXmqWh8PDmfv+5ePz2/uXj0/36y99++GJPz88/lj3c9nPz+9//v2h5vH5633K6rd/Pw4+GOq/evJ31H+T/ULD/Kbuf4n8BW//nvePb2/xHJPdh+azSvThz1VPfeXTcmseioLuecTTVVxfeBzfIN4y+cin7tiiXtUyicuWg6e9016FMukiv3oEeMKmX/00HTvYVwLlUuYOXLNjSZO1/bBn2ma+Bnjg65TZWahXTXXQ15SDp3Bsorx8PACji3HC7uZQabMxwK2m93B74Du+EAONadUP5enOXjt3cSZqWJm6YBj3aIBb2nH4ZgCX0WBxRKIRcpQWuH2mCnippF//6At6M2TR51p9t91i+oHn6nGUwx3J60ftAVbUG2DpGaUtgXriPUZ3t3LOFu9w0Iy1+EsFfqITpTz4gDrxSeLpe7aLUo3EoinAUOOkdyCgiQQtcY858SuqwL1V4sVjnPT+TJWCCaGyhhDsSEE97mEt71gRvetomAW+aKPx5ksvfRe0A2+j6bHUeL+WxxSrV8EWcC5aATf+nTzVy5mZyXADru4FcxQRRmbgsY2cOY5wHi7D+vXsRH2m5JIfZhVCI9HHAxFRrA9TqH3i5nJYb+1LXFbzIU/FCGydbcYDwGCDrIAvlX1B3tzB6H+IO/sauJUI7z7xLfBdWAtulqNRwDjF+3BxRidQlrAn0yygk3fLWWidYQgwaKenA/G460J9gwgGYAZxfEVDJwTg+g93pgVyEfyrdzQMvfje3gG6yfphanj9HMFRa7Dbs+dkLjIEGPNPGKdc8BXZoZmJeT+OFNPjSFxOYJ+AnXg7krynAfC4YH2cRGFPXhLGdZPMMa5ioq+6k3PcnZhYBozzACsgxjmxTAhgDz3j3ZWHLrQtcZn6rtFWQbMhdTQmVbxAgzjUlxlOdUxhXqAw3BS5SpGk4/QgKPCRLNUo5+ob4T1ZpN9KqBaWY6kEhgaSb0gQs+GmHLoPvNKGNAjTDHAPV95GRsXFHterL2eIGHvGNW/YAvcLesRzDk+MK+qxxBzlg5H0E8/UYsYRjgaOzHcyZW1JDwKbljTICNKONA1ebpzxQNp47G1gdNWelGuL3XNdFdIIHiw848qBHrowkdgdQ95rQxBT7oTkGwDP3P/fU1scThyydKcwU6TJpvxChNXocSrs4PE4nxsds9PXbVAOdoSxGhzGNC3W7yVWmy8vTFAbH9ET46PoiS8XhMhojeayBR9T7m5tvhWGr7rl31xkF/jAAp6Fjk461kQRx1YubmcbZhkWYEtzecu9QxFihJTfCw3dT9/+ATzyzUO+5YbHAAAAAElFTkSuQmCC", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "ename": "ValueError", - "evalue": "Valence of atom 0 is 2, which is larger than the allowed maximum, 1", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mValueError\u001b[0m Traceback (most recent call last)", - "Input \u001b[0;32mIn [38]\u001b[0m, in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 6\u001b[0m display(conn_mol)\n\u001b[1;32m 7\u001b[0m charge \u001b[38;5;241m=\u001b[39m \u001b[38;5;241m+\u001b[39m\u001b[38;5;241m1\u001b[39m\n\u001b[0;32m----> 8\u001b[0m \u001b[43mrdDetermineBonds\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mDetermineBonds\u001b[49m\u001b[43m(\u001b[49m\u001b[43mconn_mol\u001b[49m\u001b[43m,\u001b[49m\u001b[43mcharge\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mcharge\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 9\u001b[0m display(conn_mol)\n", - "\u001b[0;31mValueError\u001b[0m: Valence of atom 0 is 2, which is larger than the allowed maximum, 1" - ] - } - ], - "source": [ - "raw_mol = Chem.MolFromXYZBlock(xyzblock)\n", - "print(raw_mol.GetNumAtoms(),raw_mol.GetNumBonds())\n", - "display(raw_mol)\n", - "conn_mol = Chem.Mol(raw_mol)\n", - "rdDetermineBonds.DetermineConnectivity(conn_mol)\n", - "display(conn_mol)\n", - "charge = +1\n", - "rdDetermineBonds.DetermineBonds(conn_mol,charge=charge)\n", - "display(conn_mol)" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "/Users/ycho/cell2mol/cell2mol/test\n" - ] - } - ], - "source": [ - "! pwd" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "[17:48:42] Initializing MetalDisconnector\n", - "[17:48:42] Running MetalDisconnector\n", - "[17:48:42] Removed covalent bond between Pt and N\n", - "[17:48:42] Removed covalent bond between Pt and O\n", - "[17:48:42] Removed covalent bond between Pt and N\n", - "[17:48:42] Removed covalent bond between Pt and O\n", - "[17:48:42] Initializing Normalizer\n", - "[17:48:42] Running Normalizer\n" - ] - }, - { - "data": { - "text/plain": [ - "'O=C([O-])C1(C(=O)[O-])CCC1.[NH2-].[NH2-].[Pt+4]'" - ] - }, - "execution_count": 2, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "from rdkit.Chem.MolStandardize import rdMolStandardize\n", - "rdMolStandardize.StandardizeSmiles(\"[H]N([H])[Pt]1(OC(=O)C2(CCC2)C(=O)O1)N([H])[H]\")" - ] - }, - { - "cell_type": "code", - "execution_count": 56, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Got atomic valence [1] of 1=H as a result.\n", - "Got atomic valence [0] of 2=He as a result.\n", - "Got atomic valence [1] of 3=Li as a result.\n", - "Got atomic valence [2] of 4=Be as a result.\n", - "Got atomic valence [3, 4] of 5=B as a result.\n", - "Got atomic valence [4] of 6=C as a result.\n", - "Got atomic valence [3, 4] of 7=N as a result.\n", - "Got atomic valence [2, 1, 3] of 8=O as a result.\n", - "Got atomic valence [1] of 9=F as a result.\n", - "Got atomic valence [0] of 10=Ne as a result.\n", - "Got atomic valence [1] of 11=Na as a result.\n", - "Got atomic valence [2] of 12=Mg as a result.\n", - "Got atomic valence [5] of 13=Al as a result.\n", - "Got atomic valence [4] of 14=Si as a result.\n", - "Got atomic valence [6, 5, 3] of 15=P as a result.\n", - "Got atomic valence [6, 3, 2, 1] of 16=S as a result.\n", - "Got atomic valence [1] of 17=Cl as a result.\n", - "Got atomic valence [0] of 18=Ar as a result.\n", - "Got atomic valence [1] of 19=K as a result.\n", - "Got atomic valence [2] of 20=Ca as a result.\n", - "Got atomic valence [17] of 21=Sc as a result.\n", - "Got atomic valence [16] of 22=Ti as a result.\n", - "Got atomic valence [15] of 23=V as a result.\n", - "Got atomic valence [14] of 24=Cr as a result.\n", - "Got atomic valence [13] of 25=Mn as a result.\n", - "Got atomic valence [12] of 26=Fe as a result.\n", - "Got atomic valence [11] of 27=Co as a result.\n", - "Got atomic valence [10] of 28=Ni as a result.\n", - "Got atomic valence [19] of 29=Cu as a result.\n", - "Got atomic valence [18] of 30=Zn as a result.\n", - "Got atomic valence [5] of 31=Ga as a result.\n", - "Got atomic valence [4] of 32=Ge as a result.\n", - "Got atomic valence [6, 5, 3] of 33=As as a result.\n", - "Got atomic valence [6, 3, 2, 1] of 34=Se as a result.\n", - "Got atomic valence [1] of 35=Br as a result.\n", - "Got atomic valence [0] of 36=Kr as a result.\n", - "Got atomic valence [1] of 37=Rb as a result.\n", - "Got atomic valence [2] of 38=Sr as a result.\n", - "Got atomic valence [17] of 39=Y as a result.\n", - "Got atomic valence [16] of 40=Zr as a result.\n", - "Got atomic valence [15] of 41=Nb as a result.\n", - "Got atomic valence [14] of 42=Mo as a result.\n", - "Got atomic valence [13] of 43=Tc as a result.\n", - "Got atomic valence [12] of 44=Ru as a result.\n", - "Got atomic valence [11] of 45=Rh as a result.\n", - "Got atomic valence [10] of 46=Pd as a result.\n", - "Got atomic valence [19] of 47=Ag as a result.\n", - "Got atomic valence [18] of 48=Cd as a result.\n", - "Got atomic valence [5] of 49=In as a result.\n", - "Got atomic valence [4] of 50=Sn as a result.\n", - "Got atomic valence [6, 5, 3] of 51=Sb as a result.\n", - "Got atomic valence [2] of 52=Te as a result.\n", - "Got atomic valence [1] of 53=I as a result.\n", - "Got atomic valence [0] of 54=Xe as a result.\n", - "Got atomic valence [1] of 55=Cs as a result.\n", - "Got atomic valence [2] of 56=Ba as a result.\n", - "Got atomic valence [1] of 57=La as a result.\n", - "Got atomic valence [1] of 58=Ce as a result.\n", - "Got atomic valence [1] of 59=Pr as a result.\n", - "Got atomic valence [1] of 60=Nd as a result.\n", - "Got atomic valence [1] of 61=Pm as a result.\n", - "Got atomic valence [1] of 62=Sm as a result.\n", - "Got atomic valence [1] of 63=Eu as a result.\n", - "Got atomic valence [1] of 64=Gd as a result.\n", - "Got atomic valence [1] of 65=Tb as a result.\n", - "Got atomic valence [1] of 66=Dy as a result.\n", - "Got atomic valence [1] of 67=Ho as a result.\n", - "Got atomic valence [1] of 68=Er as a result.\n", - "Got atomic valence [1] of 69=Tm as a result.\n", - "Got atomic valence [1] of 70=Yb as a result.\n", - "Got atomic valence [1] of 71=Lu as a result.\n", - "Got atomic valence [16] of 72=Hf as a result.\n", - "Got atomic valence [15] of 73=Ta as a result.\n", - "Got atomic valence [14] of 74=W as a result.\n", - "Got atomic valence [13] of 75=Re as a result.\n", - "Got atomic valence [12] of 76=Os as a result.\n", - "Got atomic valence [11] of 77=Ir as a result.\n", - "Got atomic valence [10] of 78=Pt as a result.\n", - "Got atomic valence [19] of 79=Au as a result.\n", - "Got atomic valence [18] of 80=Hg as a result.\n", - "Got atomic valence [5] of 81=Tl as a result.\n", - "Got atomic valence [4] of 82=Pb as a result.\n", - "Got atomic valence [3] of 83=Bi as a result.\n", - "Got atomic valence [2] of 84=Po as a result.\n", - "Got atomic valence [1] of 85=At as a result.\n", - "Got atomic valence [0] of 86=Rn as a result.\n", - "Got atomic valence [1] of 87=Fr as a result.\n", - "Got atomic valence [2] of 88=Ra as a result.\n", - "Got atomic valence [1] of 89=Ac as a result.\n", - "Got atomic valence [1] of 90=Th as a result.\n", - "Got atomic valence [1] of 91=Pa as a result.\n", - "Got atomic valence [1] of 92=U as a result.\n", - "Got atomic valence [1] of 93=Np as a result.\n", - "Got atomic valence [1] of 94=Pu as a result.\n", - "Got atomic valence [1] of 95=Am as a result.\n", - "Got atomic valence [1] of 96=Cm as a result.\n", - "Got atomic valence [1] of 97=Bk as a result.\n", - "Got atomic valence [1] of 98=Cf as a result.\n", - "Got atomic valence [1] of 99=Es as a result.\n" - ] - } - ], - "source": [ - "from cell2mol.elementdata import ElementData\n", - "from collections import defaultdict\n", - "\n", - "elemdatabase = ElementData()\n", - "\n", - "###############################\n", - "#### RUBEN Changes for V14 ####\n", - "###############################\n", - "valence_electrons = []\n", - "for i in elemdatabase.elementsym:\n", - " try:\n", - " valence_electrons.append(\n", - " elemdatabase.valenceelectrons[elemdatabase.elementsym[i]]\n", - " )\n", - " except KeyError:\n", - " continue\n", - "\n", - "atomic_valence_electrons = dict(zip(elemdatabase.elementsym, valence_electrons))\n", - "\n", - "\n", - "def get_atomic_valences(k):\n", - " symb = elemdatabase.elementsym[k]\n", - " block = elemdatabase.elementblock[symb]\n", - " group = elemdatabase.elementgroup[symb]\n", - " period = elemdatabase.elementperiod[symb]\n", - " ave = elemdatabase.valenceelectrons[symb]\n", - " if k == 5: # B\n", - " return [3, 4]\n", - " if k == 7: # N\n", - " return [3, 4]\n", - " if k == 8: # O\n", - " return [2, 1, 3]\n", - " if k == 15: # P\n", - " return [6, 5, 3] # [5,4,3]\n", - " if k == 33: # As\n", - " return [6, 5, 3] # [5,4,3]\n", - " if k == 51: # Sb\n", - " return [6, 5, 3] # [5,4,3]\n", - " if k in [16, 34]: # S, Se\n", - " return [6, 3, 2, 1] # [6,4,2]\n", - " if block == \"s\" and period == 1:\n", - " av = 2 - ave\n", - " elif block == \"s\" and period != 1:\n", - " av = ave\n", - " elif group == 18:\n", - " av = 0\n", - " elif block == \"p\" and group != 18:\n", - " av = 8 - ave\n", - " elif block in \"d\":\n", - " av = 20 - ave\n", - " else:\n", - " av = 1\n", - " return [av]\n", - "\n", - "\n", - "atomic_valence = defaultdict(list)\n", - "for k in elemdatabase.elementsym:\n", - " try:\n", - " # print(f\"Getting atomic valence for element number {k}={elemdatabase.elementsym[k]}\")\n", - " av = get_atomic_valences(k)\n", - " atomic_valence[k].extend(av)\n", - " print(f\"Got atomic valence {atomic_valence[k]} of {k}={elemdatabase.elementsym[k]} as a result.\")\n", - " except KeyError:\n", - " continue" - ] - }, - { - "cell_type": "code", - "execution_count": 39, - "metadata": {}, - "outputs": [], - "source": [ - "# name = \"ACEYOW\"\n", - "name = \"FIYFEB\"\n", - "refcell = np.load(f\"{name}/Ref_Cell_{name}.cell\", allow_pickle=True)\n", - "cell = np.load(f\"{name}/Cell_{name}.cell\", allow_pickle=True)" - ] - }, - { - "cell_type": "code", - "execution_count": 40, - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "data": { - "text/plain": [ - "------------- Cell2mol CELL Object ----------------\n", - " Version = 2.0\n", - " Type = cell\n", - " Sub-Type = reference\n", - " Name (Refcode) = FIYFEB\n", - " Num Atoms = 70\n", - " Cell Parameters a:c = [ 9.1546 20.9176 15.0072]\n", - " Cell Parameters al:ga = [90. 91.405 90. ]\n", - "---------------------------------------------------\n", - " # of Ref Molecules: = 2\n", - " With Formulae: \n", - " 0: H43-C19-N2-Si4-Fe \n", - " 1: K " - ] - }, - "execution_count": 40, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "refcell" - ] - }, - { - "cell_type": "code", - "execution_count": 42, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "1.25\n", - "1.25\n", - "1.25\n", - "1.25\n" - ] - } - ], - "source": [ - "for ref in refcell.refmoleclist:\n", - " if ref.iscomplex:\n", - " for lig in ref.ligands:\n", - " print(lig.cov_factor)\n", - " else:\n", - " print(ref.cov_factor)" - ] - }, - { - "cell_type": "code", - "execution_count": 50, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "H7-C7 1.25\n", - "H18-C6-N-Si2 1.25\n", - "H18-C6-N-Si2 1.25\n", - "K 1.25\n", - "H7-C7 1.25\n", - "H18-C6-N-Si2 1.25\n", - "K 1.25\n" - ] - } - ], - "source": [ - "for specie in refcell.species_list:\n", - " if specie.subtype != \"metal\":\n", - " print(specie.formula, specie.cov_factor)\n", - "for specie in refcell.unique_species:\n", - " if specie.subtype != \"metal\":\n", - " print(specie.formula, specie.cov_factor)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "for ref in refcell.refmoleclist:\n", - " if ref.iscomplex:\n", - " for lig in ref.ligands:\n", - " print(lig.cov_factor)\n", - " else:\n", - " print(ref.cov_factor)" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [], - "source": [ - "ref = refcell.refmoleclist[1]" - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "1.248" - ] - }, - "execution_count": 21, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "(elemdatabase.CovalentRadius3[\"C\"] + elemdatabase.CovalentRadius3[\"H\"]) * 1.2" - ] - }, - { - "cell_type": "code", - "execution_count": 24, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'N'" - ] - }, - "execution_count": 24, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "elemdatabase.elementsym[7]" - ] - }, - { - "cell_type": "code", - "execution_count": 51, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "2.544" - ] - }, - "execution_count": 51, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "(elemdatabase.CovalentRadius3[\"S\"] + elemdatabase.CovalentRadius3[\"Te\"]) * 1.2\n", - "(elemdatabase.CovalentRadius3[\"C\"] + elemdatabase.CovalentRadius3[\"Sb\"]) * 1.2" - ] - }, - { - "cell_type": "code", - "execution_count": 52, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "2.928" - ] - }, - "execution_count": 52, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "(elemdatabase.CovalentRadius3[\"S\"] + elemdatabase.CovalentRadius3[\"Sb\"]) * 1.2" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "------------- Cell2mol LIGAND Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = ligand\n", - " Number of Atoms = 46\n", - " Formula = H30-C12-P4\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_complex\n", - " Number of Groups = 4\n", - "---------------------------------------------------\n", - "\n", - "------------- Cell2mol LIGAND Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = ligand\n", - " Number of Atoms = 27\n", - " Formula = H11-C16\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_complex\n", - " Number of Groups = 1\n", - "---------------------------------------------------\n", - "\n" - ] - } - ], - "source": [ - "for lig in ref.ligands:\n", - " print(lig)" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "COMPARE_SPECIES. kdx ldx elem1 - elem2\n", - "COMPARE_SPECIES. 4 9 H - C : 11 - 11\n", - "COMPARE_SPECIES. 9 4 C - H : 11 - 11\n", - "COMPARE_SPECIES. 9 9 C - C : 17 - 17\n" - ] - } - ], - "source": [ - "lig = ref.ligands[1]\n", - "lig.set_adj_types()\n", - "from cell2mol.elementdata import ElementData\n", - "from cell2mol.read_write import writexyz\n", - "import os\n", - "elemdatabase = ElementData()\n", - "elems = elemdatabase.elementnr.keys()\n", - "debug=1\n", - "if debug > 0: print(\"COMPARE_SPECIES. kdx ldx elem1 - elem2\")\n", - "for kdx, (elem, row1) in enumerate(zip(elems, lig.adj_types)):\n", - " for ldx, (elem2, val1) in enumerate(zip(elems, row1)):\n", - " if val1 != 0:\n", - " print(f\"COMPARE_SPECIES. {kdx} {ldx} {elem} - {elem2} : {val1} - {lig.adj_types[kdx, ldx]}\")\n", - " # if debug > 0: print(f\"COMPARE_SPECIES. {kdx} {ldx} {elem} - {elem2} : {val1} - {ref.adj_types[kdx, ldx]}\")\n", - " # val2 = mol2.adj_types[kdx, ldx]\n", - " # if val1 != val2: \n", - " # count += 1\n", - " # if debug > 0: print(f\"COMPARE_SPECIES. FALSE, different adjacency count\")\n", - " # if debug > 0: print(f\"COMPARE_SPECIES. {kdx} {ldx} {elem} - {elem2} : {val1} - {val2}\")" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[[0 0 0 ... 0 0 0]\n", - " [0 0 0 ... 0 0 0]\n", - " [0 0 0 ... 0 0 0]\n", - " ...\n", - " [0 0 0 ... 0 0 0]\n", - " [0 0 0 ... 0 0 0]\n", - " [0 0 0 ... 0 0 0]]\n" - ] - } - ], - "source": [ - "lig = ref.ligands[0]" - ] - }, - { - "cell_type": "code", - "execution_count": 46, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[0, 2, 1, 3, 4]\n" - ] - } - ], - "source": [ - "def move_element(lst, old_index, new_index):\n", - " element = lst.pop(old_index) # Remove the element from its current position\n", - " lst.insert(new_index, element) # Insert the element at the new position\n", - " return lst\n", - "\n", - "# Example usage:\n", - "original_list = [0, 1, 2, 3, 4]\n", - "new_list = move_element(original_list, 1, 2)\n", - "print(new_list)\n" - ] - }, - { - "cell_type": "code", - "execution_count": 25, - "metadata": {}, - "outputs": [], - "source": [ - " wrap_keywords = {\n", - " 'pbc': True, # Periodic boundary conditions\n", - " 'center': (0.5, 0.5, 0.5), # Center the positions in the unit cell\n", - " # 'pretty_translation': True, # Use pretty translation (minimizing jumps in the trajectory)\n", - " # 'eps': 1e-5 # Epsilon for numerical precision\n", - " }" - ] - }, - { - "cell_type": "code", - "execution_count": 28, - "metadata": {}, - "outputs": [], - "source": [ - "wrap_keywords[\"pbc\"] =not(wrap_keywords[\"pbc\"])" - ] - }, - { - "cell_type": "code", - "execution_count": 29, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'pbc': False, 'center': (0.5, 0.5, 0.5)}" - ] - }, - "execution_count": 29, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "wrap_keywords" - ] - }, - { - "cell_type": "code", - "execution_count": 24, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "False" - ] - }, - "execution_count": 24, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "not(True)" - ] - }, - { - "cell_type": "code", - "execution_count": 23, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "------------- Cell2mol LIGAND Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = ligand\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = 0\n", - " Smiles = [H]O[H]\n", - " Origin = split_complex\n", - " Number of Groups = 1\n", - "---------------------------------------------------\n", - "\n", - "------------- Cell2mol LIGAND Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = ligand\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = 0\n", - " Smiles = [H]O[H]\n", - " Origin = split_complex\n", - " Number of Groups = 1\n", - "---------------------------------------------------\n", - "\n", - "------------- Cell2mol LIGAND Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = ligand\n", - " Number of Atoms = 15\n", - " Formula = H10-C3-N2\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = 0\n", - " Smiles = [H]N([H])C([H])([H])C([H])([H])C([H])([H])N([H])[H]\n", - " Origin = split_complex\n", - " Number of Groups = 2\n", - "---------------------------------------------------\n", - "\n", - "------------- Cell2mol LIGAND Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = ligand\n", - " Number of Atoms = 15\n", - " Formula = H10-C3-N2\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = 0\n", - " Smiles = [H]N([H])C([H])([H])C([H])([H])C([H])([H])N([H])[H]\n", - " Origin = split_complex\n", - " Number of Groups = 2\n", - "---------------------------------------------------\n", - "\n", - "------------- Cell2mol LIGAND Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = ligand\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = 0\n", - " Smiles = [H]O[H]\n", - " Origin = split_complex\n", - " Number of Groups = 1\n", - "---------------------------------------------------\n", - "\n", - "------------- Cell2mol LIGAND Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = ligand\n", - " Number of Atoms = 15\n", - " Formula = H10-C3-N2\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = 0\n", - " Smiles = [H]N([H])C([H])([H])C([H])([H])C([H])([H])N([H])[H]\n", - " Origin = split_complex\n", - " Number of Groups = 2\n", - "---------------------------------------------------\n", - "\n", - "------------- Cell2mol LIGAND Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = ligand\n", - " Number of Atoms = 15\n", - " Formula = H10-C3-N2\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = 0\n", - " Smiles = [H]N([H])C([H])([H])C([H])([H])C([H])([H])N([H])[H]\n", - " Origin = split_complex\n", - " Number of Groups = 2\n", - "---------------------------------------------------\n", - "\n", - "------------- Cell2mol LIGAND Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = ligand\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = 0\n", - " Smiles = [H]O[H]\n", - " Origin = split_complex\n", - " Number of Groups = 1\n", - "---------------------------------------------------\n", - "\n", - "------------- Cell2mol LIGAND Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = ligand\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = 0\n", - " Smiles = [H]O[H]\n", - " Origin = split_complex\n", - " Number of Groups = 1\n", - "---------------------------------------------------\n", - "\n", - "------------- Cell2mol LIGAND Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = ligand\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = 0\n", - " Smiles = [H]O[H]\n", - " Origin = split_complex\n", - " Number of Groups = 1\n", - "---------------------------------------------------\n", - "\n", - "------------- Cell2mol LIGAND Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = ligand\n", - " Number of Atoms = 15\n", - " Formula = H10-C3-N2\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = 0\n", - " Smiles = [H]N([H])C([H])([H])C([H])([H])C([H])([H])N([H])[H]\n", - " Origin = split_complex\n", - " Number of Groups = 2\n", - "---------------------------------------------------\n", - "\n", - "------------- Cell2mol LIGAND Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = ligand\n", - " Number of Atoms = 15\n", - " Formula = H10-C3-N2\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = 0\n", - " Smiles = [H]N([H])C([H])([H])C([H])([H])C([H])([H])N([H])[H]\n", - " Origin = split_complex\n", - " Number of Groups = 2\n", - "---------------------------------------------------\n", - "\n", - "------------- Cell2mol LIGAND Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = ligand\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = 0\n", - " Smiles = [H]O[H]\n", - " Origin = split_complex\n", - " Number of Groups = 1\n", - "---------------------------------------------------\n", - "\n", - "------------- Cell2mol LIGAND Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = ligand\n", - " Number of Atoms = 15\n", - " Formula = H10-C3-N2\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = 0\n", - " Smiles = [H]N([H])C([H])([H])C([H])([H])C([H])([H])N([H])[H]\n", - " Origin = split_complex\n", - " Number of Groups = 2\n", - "---------------------------------------------------\n", - "\n", - "------------- Cell2mol LIGAND Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = ligand\n", - " Number of Atoms = 15\n", - " Formula = H10-C3-N2\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = 0\n", - " Smiles = [H]N([H])C([H])([H])C([H])([H])C([H])([H])N([H])[H]\n", - " Origin = split_complex\n", - " Number of Groups = 2\n", - "---------------------------------------------------\n", - "\n", - "------------- Cell2mol LIGAND Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = ligand\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = 0\n", - " Smiles = [H]O[H]\n", - " Origin = split_complex\n", - " Number of Groups = 1\n", - "---------------------------------------------------\n", - "\n" - ] - } - ], - "source": [ - "for mol in cell.moleclist:\n", - " if mol.iscomplex:\n", - " for lig in mol.ligands:\n", - " if lig.formula == " - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "data": { - "text/plain": [ - "'KOTBAW'" - ] - }, - "execution_count": 17, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "refcell.refmoleclist[0].get_parent(\"reference\").name" - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "metadata": {}, - "outputs": [ - { - "ename": "AttributeError", - "evalue": "'cell' object has no attribute 'species_list'", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mAttributeError\u001b[0m Traceback (most recent call last)", - "Input \u001b[0;32mIn [18]\u001b[0m, in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m specie \u001b[38;5;129;01min\u001b[39;00m \u001b[43mrefcell\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mspecies_list\u001b[49m:\n\u001b[1;32m 2\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m specie\u001b[38;5;241m.\u001b[39msubtype \u001b[38;5;241m==\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mmetal\u001b[39m\u001b[38;5;124m\"\u001b[39m:\n\u001b[1;32m 3\u001b[0m \u001b[38;5;28mprint\u001b[39m(specie\u001b[38;5;241m.\u001b[39mlabel, specie\u001b[38;5;241m.\u001b[39mformula, specie\u001b[38;5;241m.\u001b[39mget_parent_index(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mreference\u001b[39m\u001b[38;5;124m\"\u001b[39m))\n", - "\u001b[0;31mAttributeError\u001b[0m: 'cell' object has no attribute 'species_list'" - ] - } - ], - "source": [ - "for specie in refcell.species_list:\n", - " if specie.subtype == \"metal\":\n", - " print(specie.label, specie.formula, specie.get_parent_index(\"reference\"))\n", - " else :\n", - " print(specie.natoms, specie.formula, specie.get_parent_indices(\"reference\"), len(specie.get_parent_indices(\"reference\")))" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "1 Li [110] 1\n", - "1 Li [110] 1\n", - "1 Li [110] 1\n", - "1 Li [110] 1\n", - "27 H18-C6-N-Si2 [1, 2, 5, 32, 33, 34, 35, 36, 37, 92, 93, 94, 95, 96, 97, 98, 101, 102, 104, 105, 106, 107, 108, 109, 99, 100, 103] 27\n", - "41 H27-C13-O [4, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 31, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91] 41\n", - "41 H27-C13-O [3, 6, 7, 8, 9, 10, 23, 24, 25, 26, 27, 28, 29, 30, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 58, 60, 62, 63, 53, 54, 56, 57, 59, 61, 64, 55] 41\n", - "Co Co 0\n", - "27 H18-C6-N-Si2 [1, 2, 5, 32, 33, 34, 35, 36, 37, 92, 93, 94, 95, 96, 97, 99, 100, 101, 102, 103, 104, 105, 106, 108, 107, 98, 109] 27\n", - "41 H27-C13-O [4, 11, 12, 13, 14, 15, 16, 17, 18, 20, 22, 31, 66, 67, 69, 72, 74, 75, 76, 81, 88, 90, 21, 83, 84, 85, 19, 78, 79, 82, 91, 89, 87, 86, 80, 77, 73, 71, 70, 68, 65] 41\n", - "41 H27-C13-O [3, 6, 7, 8, 9, 10, 23, 24, 25, 26, 27, 28, 29, 30, 38, 39, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 40] 41\n", - "Co Co 0\n", - "27 H18-C6-N-Si2 [1, 2, 5, 32, 33, 34, 35, 36, 37, 92, 93, 94, 95, 96, 97, 98, 101, 102, 104, 105, 106, 107, 108, 109, 99, 100, 103] 27\n", - "41 H27-C13-O [4, 11, 12, 13, 14, 15, 16, 17, 18, 20, 22, 31, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 81, 88, 89, 90, 91, 21, 83, 84, 85, 19, 78, 79, 77, 80, 82, 86, 87] 41\n", - "41 H27-C13-O [3, 6, 7, 8, 9, 10, 23, 24, 25, 26, 27, 28, 29, 30, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 58, 60, 62, 63, 53, 54, 56, 57, 59, 61, 64, 55] 41\n", - "Co Co 0\n", - "27 H18-C6-N-Si2 [1, 2, 5, 32, 33, 34, 35, 36, 37, 92, 93, 94, 95, 96, 97, 99, 100, 101, 102, 103, 104, 105, 106, 108, 107, 109, 98] 27\n", - "41 H27-C13-O [4, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 31, 66, 67, 69, 72, 74, 75, 76, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 90, 91, 89, 77, 73, 71, 70, 68, 65] 41\n", - "41 H27-C13-O [3, 6, 7, 8, 9, 10, 23, 24, 25, 26, 27, 28, 29, 30, 38, 39, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 40] 41\n", - "Co Co 0\n" - ] - } - ], - "source": [ - "for specie in cell.species_list:\n", - " if specie.subtype == \"metal\":\n", - " print(specie.label, specie.formula, specie.get_parent_index(\"reference\"))\n", - " else :\n", - " print(specie.natoms, specie.formula, specie.get_parent_indices(\"reference\"), len(specie.get_parent_indices(\"reference\")))" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [], - "source": [ - "def generate_xyzblock(specie):\n", - " xyzblock = \"\"\n", - " xyzblock += str(specie.natoms) + \"\\n\" # Number of atoms\n", - " xyzblock += \"\\n\"\n", - " for l, pos in zip(specie.labels, specie.coord):\n", - " xyzblock += f\"{l}\\t{pos[0]}\\t{pos[1]}\\t{pos[2]}\\n\"\n", - " return xyzblock" - ] - }, - { - "cell_type": "code", - "execution_count": 66, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "112" - ] - }, - "execution_count": 66, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "len(['N', 'N', 'N', 'N', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'])" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "raw_mol = Chem.MolFromXYZBlock(xyzblock)\n", - "print(raw_mol.GetNumAtoms(),raw_mol.GetNumBonds())\n", - "display(raw_mol)\n", - "conn_mol = Chem.Mol(raw_mol)\n", - "rdDetermineBonds.DetermineConnectivity(conn_mol)" - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "27 H11-C16\n", - "27 0\n" - ] - }, - { - "data": { - "image/png": "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", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "image/png": "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", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "image/png": "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", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "for ref in refcell.refmoleclist:\n", - " if ref.iscomplex:\n", - " for lig in ref.ligands:\n", - " if lig.formula == \"H11-C16\":\n", - " print(lig.natoms, lig.formula)\n", - " xyzblock = generate_xyzblock(lig)\n", - " raw_mol = Chem.MolFromXYZBlock(xyzblock)\n", - " print(raw_mol.GetNumAtoms(),raw_mol.GetNumBonds())\n", - " display(raw_mol)\n", - " conn_mol = Chem.Mol(raw_mol)\n", - " rdDetermineBonds.DetermineConnectivity(conn_mol)\n", - " display(conn_mol)\n", - " charge = -1\n", - " rdDetermineBonds.DetermineBonds(conn_mol,charge=charge)\n", - " display(conn_mol)" - ] - }, - { - "cell_type": "code", - "execution_count": 57, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 57, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "fconn_mol.GetAtoms()" - ] - }, - { - "cell_type": "code", - "execution_count": 64, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "N 1\n", - "C -1\n", - "C -1\n", - "C -1\n" - ] - } - ], - "source": [ - "for rdkit_atom in conn_mol.GetAtoms():\n", - " if rdkit_atom.GetFormalCharge() !=0 :\n", - " print(rdkit_atom.GetSymbol(), rdkit_atom.GetFormalCharge())\n", - " # if rdkit_atom.GetSymbol() == \"N\":\n", - " # print(rdkit_atom.GetSymbol(), rdkit_atom.GetFormalCharge())\n", - " # for b in rdkit_atom.GetBonds():\n", - " # bond_startatom = b.GetBeginAtomIdx()\n", - " # bond_endatom = b.GetEndAtomIdx()\n", - " # bond_order = b.GetBondTypeAsDouble()\n", - " # print(conn_mol.GetAtomWithIdx(bond_startatom).GetSymbol(), conn_mol.GetAtomWithIdx(bond_endatom).GetSymbol(), bond_order)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "conn_mol = Chem.Mol(raw_mol)\n", - "rdDetermineBonds.DetermineBonds(conn_mol,charge=0)\n", - "draw_with_spheres(conn_mol)" - ] - }, - { - "cell_type": "code", - "execution_count": 29, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "------------- Cell2mol Charge State ---------------\n", - " Status = True\n", - " Smiles = [H][C+]1[C-]([H])[C-]([H])C([H])([H])[C-]1[H]\n", - " Charge Tried = -1\n", - " Uncorrected Total Charge = -2\n", - " Corrected Total Charge = -3\n", - " Corrected Absolute Total Charge = 5\n", - " Corrected Is Zwitterion? = True\n", - "---------------------------------------------------\n", - "\n", - "------------- Cell2mol Charge State ---------------\n", - " Status = True\n", - " Smiles = N#CC([S-])=C([S-])C#N\n", - " Charge Tried = -2\n", - " Uncorrected Total Charge = -2\n", - " Corrected Total Charge = -2\n", - " Corrected Absolute Total Charge = 2\n", - " Corrected Is Zwitterion? = False\n", - "---------------------------------------------------\n", - "\n" - ] - } - ], - "source": [ - "for spec in refcell.unique_species:\n", - " if spec.subtype == \"ligand\":\n", - " print(spec.charge_state)" - ] - }, - { - "cell_type": "code", - "execution_count": 26, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "------------- Cell2mol CELL Object ----------------\n", - " Version = 2.0\n", - " Type = cell\n", - " Sub-Type = reference\n", - " Name (Refcode) = XAWJUB\n", - " Num Atoms = 19\n", - " Cell Parameters a:c = [17.2403, 8.4805, 14.7512]\n", - " Cell Parameters al:ga = [90.0, 109.8361, 90.0]\n", - "---------------------------------------------------\n", - " # of Ref Molecules: = 1\n", - " With Formulae: \n", - " 0: H5-C9-N2-S2-Ni " - ] - }, - "execution_count": 26, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "refcell" - ] - }, - { - "cell_type": "code", - "execution_count": 27, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[H][C+]1[C-]([H])[C-]([H])[C-]([H])[C-]1[H]\n", - "N#CC([S-])=C([S-])C#N\n" - ] - } - ], - "source": [ - "for ref in refcell.refmoleclist:\n", - " if ref.iscomplex:\n", - " for lig in ref.ligands:\n", - " print(lig.smiles)" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "['O', 'O', 'O', 'O', 'C', 'C']\n", - "1 O\n", - "2 O\n", - "[0 1 1 0 0 0]\n", - "[0, 1, 1, 0, 0, 0]\n", - "['O', 'O', 'O', 'O', 'C', 'C']\n", - "1 O\n", - "2 O\n", - "[0 1 1 0 0 0]\n", - "[0, 1, 1, 0, 0, 0]\n", - "['O', 'O', 'O', 'O', 'C', 'C']\n", - "1 O\n", - "2 O\n", - "[0 1 1 0 0 0]\n", - "[0, 1, 1, 0, 0, 0]\n" - ] - } - ], - "source": [ - "for ref in refcell.refmoleclist:\n", - " if ref.iscomplex:\n", - " for lig in ref.ligands:\n", - " print(lig.labels)\n", - " for idx, b in enumerate(lig.charge_state.protonation.block):\n", - " if b >= 1 :\n", - " print(idx, lig.charge_state.protonation.labels[idx])\n", - " print(lig.charge_state.protonation.block)\n", - " print([a.mconnec for a in lig.atoms])" - ] - }, - { - "cell_type": "code", - "execution_count": 177, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "------------- Cell2mol CELL Object ----------------\n", - " Version = 2.0\n", - " Type = cell\n", - " Sub-Type = unit_cell\n", - " Name (Refcode) = BOFFOS\n", - " Num Atoms = 525\n", - " Cell Parameters a:c = [24.369, 24.369, 9.748]\n", - " Cell Parameters al:ga = [90.0, 90.0, 120.0]\n", - " # Molecules: = 48\n", - " With Formulae: \n", - " 0: H2-O \n", - " 1: H2-O \n", - " 2: K \n", - " 3: K \n", - " 4: K \n", - " 5: H2-O \n", - " 6: H2-O \n", - " 7: H2-O \n", - " 8: H2-O \n", - " 9: C6-O12-Fe \n", - " 10: H2-O \n", - " 11: H2-O \n", - " 12: K \n", - " 13: K \n", - " 14: K \n", - " 15: H2-O \n", - " 16: H2-O \n", - " 17: H2-O \n", - " 18: H2-O \n", - " 19: H2-O \n", - " 20: H2-O \n", - " 21: H2-O \n", - " 22: K \n", - " 23: K \n", - " 24: K \n", - " 25: H2-O \n", - " 26: H2-O \n", - " 27: H2-O \n", - " 28: H2-O \n", - " 29: H2-O \n", - " 30: C6-O12-Fe \n", - " 31: H24-C12-O6 \n", - " 32: H2-O \n", - " 33: H24-C12-O6 \n", - " 34: H24-C12-O6 \n", - " 35: H2-O \n", - " 36: H2-O \n", - " 37: H24-C12-O6 \n", - " 38: H2-O \n", - " 39: H24-C12-O6 \n", - " 40: H24-C12-O6 \n", - " 41: H2-O \n", - " 42: C6-O12-Fe \n", - " 43: H24-C12-O6 \n", - " 44: H2-O \n", - " 45: H24-C12-O6 \n", - " 46: H24-C12-O6 \n", - " 47: H2-O \n", - "---------------------------------------------------\n", - " # of Ref Molecules: = 10\n", - " With Formulae: \n", - " 0: C6-O12-Fe \n", - " 1: H24-C12-O6 \n", - " 2: H2-O \n", - " 3: H2-O \n", - " 4: H2-O \n", - " 5: H24-C12-O6 \n", - " 6: H24-C12-O6 \n", - " 7: K \n", - " 8: K \n", - " 9: K " - ] - }, - "execution_count": 177, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "cell" - ] - }, - { - "cell_type": "code", - "execution_count": 181, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Octahedral 0.861 1.021\n", - "Octahedral 0.861 1.021\n", - "Octahedral 0.861 1.021\n" - ] - } - ], - "source": [ - "for mol in cell.moleclist:\n", - " if mol.iscomplex:\n", - " for met in mol.metals:\n", - " print(met.coord_geometry, met.geom_deviation, met.rel_metal_radius)" - ] - }, - { - "cell_type": "code", - "execution_count": 162, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "------------- Cell2mol Protonation ----------------\n", - " Status = True\n", - " Labels = ['O', 'O', 'O', 'O', 'C', 'C']\n", - " Type = Local\n", - " Atoms added in positions = [0 0 0 0 0 0]\n", - " Atoms blocked (no atoms added) = [0 1 1 0 0 0]\n", - "---------------------------------------------------\n", - " [74, 76, 78, 79, 154, 156]\n", - "------------- Cell2mol Protonation ----------------\n", - " Status = True\n", - " Labels = ['O', 'O', 'O', 'O', 'C', 'C']\n", - " Type = Local\n", - " Atoms added in positions = [0 0 0 0 0 0]\n", - " Atoms blocked (no atoms added) = [0 1 1 0 0 0]\n", - "---------------------------------------------------\n", - " [73, 75, 77, 80, 153, 155]\n", - "------------- Cell2mol Protonation ----------------\n", - " Status = True\n", - " Labels = ['O', 'O', 'O', 'O', 'C', 'C']\n", - " Type = Local\n", - " Atoms added in positions = [0 0 0 0 0 0]\n", - " Atoms blocked (no atoms added) = [0 1 1 0 0 0]\n", - "---------------------------------------------------\n", - " [8, 9, 10, 11, 51, 52]\n", - "3.0\n", - "------------- Cell2mol Protonation ----------------\n", - " Status = True\n", - " Labels = ['O', 'O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H']\n", - " Type = Empty\n", - " Atoms added in positions = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", - " Atoms blocked (no atoms added) = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "---------------------------------------------------\n", - "\n", - "------------- Cell2mol Protonation ----------------\n", - " Status = True\n", - " Labels = ['O', 'H', 'H']\n", - " Type = Empty\n", - " Atoms added in positions = [0, 0, 0]\n", - " Atoms blocked (no atoms added) = [0, 0, 0]\n", - "---------------------------------------------------\n", - "\n", - "------------- Cell2mol Protonation ----------------\n", - " Status = True\n", - " Labels = ['O', 'H', 'H']\n", - " Type = Empty\n", - " Atoms added in positions = [0, 0, 0]\n", - " Atoms blocked (no atoms added) = [0, 0, 0]\n", - "---------------------------------------------------\n", - "\n", - "------------- Cell2mol Protonation ----------------\n", - " Status = True\n", - " Labels = ['O', 'H', 'H']\n", - " Type = Empty\n", - " Atoms added in positions = [0, 0, 0]\n", - " Atoms blocked (no atoms added) = [0, 0, 0]\n", - "---------------------------------------------------\n", - "\n", - "------------- Cell2mol Protonation ----------------\n", - " Status = True\n", - " Labels = ['O', 'O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H']\n", - " Type = Empty\n", - " Atoms added in positions = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", - " Atoms blocked (no atoms added) = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "---------------------------------------------------\n", - "\n", - "------------- Cell2mol Protonation ----------------\n", - " Status = True\n", - " Labels = ['O', 'O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H']\n", - " Type = Empty\n", - " Atoms added in positions = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", - " Atoms blocked (no atoms added) = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "---------------------------------------------------\n", - "\n", - "------------- Cell2mol Protonation ----------------\n", - " Status = True\n", - " Labels = ['K']\n", - " Type = Empty\n", - " Atoms added in positions = [0]\n", - " Atoms blocked (no atoms added) = [0]\n", - "---------------------------------------------------\n", - "\n", - "------------- Cell2mol Protonation ----------------\n", - " Status = True\n", - " Labels = ['K']\n", - " Type = Empty\n", - " Atoms added in positions = [0]\n", - " Atoms blocked (no atoms added) = [0]\n", - "---------------------------------------------------\n", - "\n", - "------------- Cell2mol Protonation ----------------\n", - " Status = True\n", - " Labels = ['K']\n", - " Type = Empty\n", - " Atoms added in positions = [0]\n", - " Atoms blocked (no atoms added) = [0]\n", - "---------------------------------------------------\n", - "\n" - ] - } - ], - "source": [ - "for ref in refcell.refmoleclist:\n", - " if ref.iscomplex: \n", - " for lig in ref.ligands:\n", - " print(lig.charge_state.protonation, lig.get_parent_indices(\"reference\"))\n", - " for met in ref.metals:\n", - " print(met.charge)\n", - " else:\n", - " print(ref.charge_state.protonation)" - ] - }, - { - "cell_type": "code", - "execution_count": 168, - "metadata": {}, - "outputs": [], - "source": [ - "from cell2mol.charge_assignment import check_rdkit_obj_connectivity, arrange_data_for_reorder, charge_state, protonation\n", - "from cell2mol.new_charge_assignment import get_charge\n", - "from cell2mol.hungarian import reorder\n", - "import copy\n", - "\n", - "def set_charge_state(reference, target, mode, debug: int=0):\n", - " \n", - " final_charge = reference.totcharge\n", - "\n", - " if target.subtype == \"molecule\" and target.iscomplex == False:\n", - " if debug >=1 : print(f\"({target.subtype}) {target.formula} {final_charge=} Create Empty PROTONATION for this specie\")\n", - " empty_list = [int(0)]*len(target.labels)\n", - " empty_prot = protonation(target.labels, target.coord, target.cov_factor, \n", - " int(0), empty_list, empty_list, empty_list, empty_list, typ=\"Empty\", parent=target)\n", - " cs = get_charge(final_charge, empty_prot)\n", - " \n", - " elif target.subtype == \"ligand\":\n", - " if debug >=1 : print(f\"({target.subtype}) {target.formula} {final_charge=} Ligand\")\n", - " prot = reference.charge_state.protonation\n", - " temp_prot = copy.deepcopy(prot)\n", - " temp_prot.parent = target\n", - " if mode == 1:\n", - " # For \"reference\" cell\n", - " ref_data, target_data = arrange_data_for_reorder(reference, target)\n", - " if debug >=2 : print(ref_data, target_data)\n", - " dummy1, dummy2, map12 = reorder(ref_data, target_data, reference.coord, target.coord)\n", - " \n", - " if np.array_equal(map12, np.arange(len(target_data))):\n", - " if debug >=1 : print(f\"({target.subtype}) {target.formula} {final_charge=} No need to reorder\")\n", - " temp_prot.coords = target.coord\n", - " cs = get_charge(final_charge, temp_prot) \n", - " else:\n", - " reordered_prot = temp_prot.reorder(map12)\n", - " reordered_prot.coords = target.coord\n", - " if debug >=1 : print(f\"({target.subtype}) {target.formula} {final_charge=} Reordered {map12=}\")\n", - " cs = get_charge(final_charge, reordered_prot)\n", - " \n", - " elif mode == 2:\n", - " # For \"unit\" cell\n", - " ref_data = reference.get_parent_indices(\"reference\")\n", - " target_data = target.get_parent_indices(\"reference\")\n", - " index_map = {value: index for index, value in enumerate(ref_data)}\n", - " sorted_indices = sorted(range(len(target_data)), key=lambda i: index_map[target_data[i]]) \n", - " \n", - " reordered_prot = temp_prot.reorder(sorted_indices)\n", - " reordered_prot.coords = target.coord\n", - " if debug >=1 : print(f\"({target.subtype}) {target.formula} {final_charge=} Reordered {sorted_indices=}\")\n", - " cs = get_charge(final_charge, reordered_prot)\n", - "\n", - " target.charge_state = cs\n", - " target.set_charges(cs.corr_total_charge, cs.corr_atom_charges, cs.smiles, cs.rdkit_obj)" - ] - }, - { - "cell_type": "code", - "execution_count": 163, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[0, 19, 20, 21, 1, 2, 3, 37, 40, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 4, 5, 39, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 38, 41]\n" - ] - } - ], - "source": [ - "list_1 = [61, 63, 65, 67, 69, 71, 81, 83, 85, 87, 90, 92, 93, 95, 97, 99, 101, 103, 105, 107, 109, 111, 114, 116, 117, 119, 121, 123, 125, 127, 129, 131, 133, 135, 138, 140, 142, 144, 146, 148, 150, 152]\n", - "list_2 = [61, 69, 71, 81, 117, 119, 123, 125, 127, 129, 131, 133, 135, 138, 140, 142, 144, 146, 148, 63, 65, 67, 87, 90, 92, 93, 95, 97, 99, 101, 103, 105, 107, 109, 111, 114, 116, 83, 150, 121, 85, 152]\n", - "\n", - "# Create a dictionary from list_1 with element as key and index as value\n", - "index_map = {value: index for index, value in enumerate(list_1)}\n", - "\n", - "# Get the indices in list_2 reordered to match the order in list_1\n", - "sorted_indices = sorted(range(len(list_2)), key=lambda i: index_map[list_2[i]])\n", - "\n", - "print(sorted_indices)\n" - ] - }, - { - "cell_type": "code", - "execution_count": 166, - "metadata": {}, - "outputs": [], - "source": [ - "def compare_molecules(ref, mol):\n", - " if (ref.natoms == mol.natoms) & (ref.formula == mol.formula):\n", - " if (sorted(ref.get_parent_indices(\"reference\")) == sorted(mol.get_parent_indices(\"reference\"))):\n", - " print(\"Matched\", mol.formula, ref.formula, ref.get_parent_indices(\"reference\"), mol.get_parent_indices(\"reference\"))\n", - " set_charge_state(ref, mol, mode=2, debug=1) " - ] - }, - { - "cell_type": "code", - "execution_count": 169, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Matched H2-O H2-O [14, 55, 58] [14, 55, 58]\n", - "(molecule) H2-O final_charge=0 Create Empty PROTONATION for this specie\n", - "GET_CHARGE.len(mols)=1 received from xyz2mol with charge 0\n", - "Matched H2-O H2-O [13, 54, 57] [13, 54, 57]\n", - "(molecule) H2-O final_charge=0 Create Empty PROTONATION for this specie\n", - "GET_CHARGE.len(mols)=1 received from xyz2mol with charge 0\n", - "Matched K K [59] [59]\n", - "(molecule) K final_charge=1 Create Empty PROTONATION for this specie\n", - "GET_CHARGE.len(mols)=1 received from xyz2mol with charge 1\n", - "Matched K K [60] [60]\n", - "(molecule) K final_charge=1 Create Empty PROTONATION for this specie\n", - "GET_CHARGE.len(mols)=1 received from xyz2mol with charge 1\n", - "Matched K K [0] [0]\n", - "(molecule) K final_charge=1 Create Empty PROTONATION for this specie\n", - "GET_CHARGE.len(mols)=1 received from xyz2mol with charge 1\n", - "Matched H2-O H2-O [14, 55, 58] [14, 55, 58]\n", - "(molecule) H2-O final_charge=0 Create Empty PROTONATION for this specie\n", - "GET_CHARGE.len(mols)=1 received from xyz2mol with charge 0\n", - "Matched H2-O H2-O [13, 54, 57] [13, 54, 57]\n", - "(molecule) H2-O final_charge=0 Create Empty PROTONATION for this specie\n", - "GET_CHARGE.len(mols)=1 received from xyz2mol with charge 0\n", - "Matched H2-O H2-O [14, 55, 58] [14, 55, 58]\n", - "(molecule) H2-O final_charge=0 Create Empty PROTONATION for this specie\n", - "GET_CHARGE.len(mols)=1 received from xyz2mol with charge 0\n", - "Matched H2-O H2-O [13, 54, 57] [13, 54, 57]\n", - "(molecule) H2-O final_charge=0 Create Empty PROTONATION for this specie\n", - "GET_CHARGE.len(mols)=1 received from xyz2mol with charge 0\n", - "Matched C2-O4 C2-O4 [73, 75, 77, 80, 153, 155] [73, 75, 77, 80, 153, 155]\n", - "(ligand) C2-O4 final_charge=-2 Ligand\n", - "(ligand) C2-O4 final_charge=-2 Reordered sorted_indices=[0, 1, 2, 3, 4, 5]\n", - "GET_CHARGE.len(mols)=1 received from xyz2mol with charge -2\n", - "Matched C2-O4 C2-O4 [74, 76, 78, 79, 154, 156] [74, 76, 78, 79, 154, 156]\n", - "(ligand) C2-O4 final_charge=-2 Ligand\n", - "(ligand) C2-O4 final_charge=-2 Reordered sorted_indices=[0, 1, 2, 3, 4, 5]\n", - "GET_CHARGE.len(mols)=1 received from xyz2mol with charge -2\n", - "Matched C2-O4 C2-O4 [8, 9, 10, 11, 51, 52] [8, 9, 10, 11, 51, 52]\n", - "(ligand) C2-O4 final_charge=-2 Ligand\n", - "(ligand) C2-O4 final_charge=-2 Reordered sorted_indices=[0, 1, 2, 3, 4, 5]\n", - "GET_CHARGE.len(mols)=1 received from xyz2mol with charge -2\n", - "Matched H2-O H2-O [14, 55, 58] [14, 55, 58]\n", - "(molecule) H2-O final_charge=0 Create Empty PROTONATION for this specie\n", - "GET_CHARGE.len(mols)=1 received from xyz2mol with charge 0\n", - "Matched H2-O H2-O [12, 53, 56] [12, 53, 56]\n", - "(molecule) H2-O final_charge=0 Create Empty PROTONATION for this specie\n", - "GET_CHARGE.len(mols)=1 received from xyz2mol with charge 0\n", - "Matched K K [60] [60]\n", - "(molecule) K final_charge=1 Create Empty PROTONATION for this specie\n", - "GET_CHARGE.len(mols)=1 received from xyz2mol with charge 1\n", - "Matched K K [59] [59]\n", - "(molecule) K final_charge=1 Create Empty PROTONATION for this specie\n", - "GET_CHARGE.len(mols)=1 received from xyz2mol with charge 1\n", - "Matched K K [0] [0]\n", - "(molecule) K final_charge=1 Create Empty PROTONATION for this specie\n", - "GET_CHARGE.len(mols)=1 received from xyz2mol with charge 1\n", - "Matched H2-O H2-O [14, 55, 58] [14, 55, 58]\n", - "(molecule) H2-O final_charge=0 Create Empty PROTONATION for this specie\n", - "GET_CHARGE.len(mols)=1 received from xyz2mol with charge 0\n", - "Matched H2-O H2-O [12, 53, 56] [12, 53, 56]\n", - "(molecule) H2-O final_charge=0 Create Empty PROTONATION for this specie\n", - "GET_CHARGE.len(mols)=1 received from xyz2mol with charge 0\n", - "Matched H2-O H2-O [14, 55, 58] [14, 55, 58]\n", - "(molecule) H2-O final_charge=0 Create Empty PROTONATION for this specie\n", - "GET_CHARGE.len(mols)=1 received from xyz2mol with charge 0\n", - "Matched H2-O H2-O [13, 54, 57] [13, 54, 57]\n", - "(molecule) H2-O final_charge=0 Create Empty PROTONATION for this specie\n", - "GET_CHARGE.len(mols)=1 received from xyz2mol with charge 0\n", - "Matched H2-O H2-O [12, 53, 56] [12, 53, 56]\n", - "(molecule) H2-O final_charge=0 Create Empty PROTONATION for this specie\n", - "GET_CHARGE.len(mols)=1 received from xyz2mol with charge 0\n", - "Matched H2-O H2-O [14, 55, 58] [14, 55, 58]\n", - "(molecule) H2-O final_charge=0 Create Empty PROTONATION for this specie\n", - "GET_CHARGE.len(mols)=1 received from xyz2mol with charge 0\n", - "Matched H2-O H2-O [12, 53, 56] [12, 53, 56]\n", - "(molecule) H2-O final_charge=0 Create Empty PROTONATION for this specie\n", - "GET_CHARGE.len(mols)=1 received from xyz2mol with charge 0\n", - "Matched K K [60] [60]\n", - "(molecule) K final_charge=1 Create Empty PROTONATION for this specie\n", - "GET_CHARGE.len(mols)=1 received from xyz2mol with charge 1\n", - "Matched K K [59] [59]\n", - "(molecule) K final_charge=1 Create Empty PROTONATION for this specie\n", - "GET_CHARGE.len(mols)=1 received from xyz2mol with charge 1\n", - "Matched K K [0] [0]\n", - "(molecule) K final_charge=1 Create Empty PROTONATION for this specie\n", - "GET_CHARGE.len(mols)=1 received from xyz2mol with charge 1\n", - "Matched H2-O H2-O [14, 55, 58] [14, 55, 58]\n", - "(molecule) H2-O final_charge=0 Create Empty PROTONATION for this specie\n", - "GET_CHARGE.len(mols)=1 received from xyz2mol with charge 0\n", - "Matched H2-O H2-O [13, 54, 57] [13, 54, 57]\n", - "(molecule) H2-O final_charge=0 Create Empty PROTONATION for this specie\n", - "GET_CHARGE.len(mols)=1 received from xyz2mol with charge 0\n", - "Matched H2-O H2-O [12, 53, 56] [12, 53, 56]\n", - "(molecule) H2-O final_charge=0 Create Empty PROTONATION for this specie\n", - "GET_CHARGE.len(mols)=1 received from xyz2mol with charge 0\n", - "Matched H2-O H2-O [14, 55, 58] [14, 55, 58]\n", - "(molecule) H2-O final_charge=0 Create Empty PROTONATION for this specie\n", - "GET_CHARGE.len(mols)=1 received from xyz2mol with charge 0\n", - "Matched H2-O H2-O [12, 53, 56] [12, 53, 56]\n", - "(molecule) H2-O final_charge=0 Create Empty PROTONATION for this specie\n", - "GET_CHARGE.len(mols)=1 received from xyz2mol with charge 0\n", - "Matched C2-O4 C2-O4 [74, 76, 78, 79, 154, 156] [74, 76, 154, 78, 79, 156]\n", - "(ligand) C2-O4 final_charge=-2 Ligand\n", - "(ligand) C2-O4 final_charge=-2 Reordered sorted_indices=[0, 1, 3, 4, 2, 5]\n", - "GET_CHARGE.len(mols)=1 received from xyz2mol with charge -2\n", - "Matched C2-O4 C2-O4 [73, 75, 77, 80, 153, 155] [73, 75, 153, 77, 80, 155]\n", - "(ligand) C2-O4 final_charge=-2 Ligand\n", - "(ligand) C2-O4 final_charge=-2 Reordered sorted_indices=[0, 1, 3, 4, 2, 5]\n", - "GET_CHARGE.len(mols)=1 received from xyz2mol with charge -2\n", - "Matched C2-O4 C2-O4 [8, 9, 10, 11, 51, 52] [8, 9, 51, 10, 11, 52]\n", - "(ligand) C2-O4 final_charge=-2 Ligand\n", - "(ligand) C2-O4 final_charge=-2 Reordered sorted_indices=[0, 1, 3, 4, 2, 5]\n", - "GET_CHARGE.len(mols)=1 received from xyz2mol with charge -2\n", - "Matched H24-C12-O6 H24-C12-O6 [2, 3, 4, 5, 6, 7, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50] [2, 3, 4, 5, 7, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 45, 46, 47, 48, 49, 50, 39, 40, 41, 42, 43, 6, 36, 37, 33, 34, 35, 44, 32, 38, 31]\n", - "(molecule) H24-C12-O6 final_charge=0 Create Empty PROTONATION for this specie\n", - "GET_CHARGE.len(mols)=1 received from xyz2mol with charge 0\n", - "Matched H2-O H2-O [12, 53, 56] [12, 53, 56]\n", - "(molecule) H2-O final_charge=0 Create Empty PROTONATION for this specie\n", - "GET_CHARGE.len(mols)=1 received from xyz2mol with charge 0\n", - "Matched H24-C12-O6 H24-C12-O6 [61, 63, 65, 67, 69, 71, 81, 83, 85, 87, 90, 92, 93, 95, 97, 99, 101, 103, 105, 107, 109, 111, 114, 116, 117, 119, 121, 123, 125, 127, 129, 131, 133, 135, 138, 140, 142, 144, 146, 148, 150, 152] [61, 63, 65, 67, 69, 71, 81, 83, 85, 87, 90, 92, 93, 95, 97, 99, 101, 103, 105, 107, 109, 111, 123, 125, 129, 131, 133, 135, 138, 140, 142, 144, 146, 148, 150, 152, 117, 119, 121, 116, 114, 127]\n", - "(molecule) H24-C12-O6 final_charge=0 Create Empty PROTONATION for this specie\n", - "GET_CHARGE.len(mols)=1 received from xyz2mol with charge 0\n", - "Matched H24-C12-O6 H24-C12-O6 [62, 64, 66, 68, 70, 72, 82, 84, 86, 88, 89, 91, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 113, 115, 118, 120, 122, 124, 126, 128, 130, 132, 134, 136, 137, 139, 141, 143, 145, 147, 149, 151] [62, 64, 66, 68, 72, 82, 84, 86, 88, 89, 91, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 141, 143, 145, 147, 149, 151, 130, 132, 134, 136, 137, 118, 120, 122, 70, 124, 126, 139, 115, 113, 128]\n", - "(molecule) H24-C12-O6 final_charge=0 Create Empty PROTONATION for this specie\n", - "GET_CHARGE.len(mols)=1 received from xyz2mol with charge 0\n", - "Matched H2-O H2-O [12, 53, 56] [12, 53, 56]\n", - "(molecule) H2-O final_charge=0 Create Empty PROTONATION for this specie\n", - "GET_CHARGE.len(mols)=1 received from xyz2mol with charge 0\n", - "Matched H2-O H2-O [12, 53, 56] [12, 53, 56]\n", - "(molecule) H2-O final_charge=0 Create Empty PROTONATION for this specie\n", - "GET_CHARGE.len(mols)=1 received from xyz2mol with charge 0\n", - "Matched H24-C12-O6 H24-C12-O6 [2, 3, 4, 5, 6, 7, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50] [4, 5, 6, 24, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 44, 2, 3, 7, 15, 16, 17, 18, 19, 20, 21, 22, 23, 45, 46, 47, 48, 49, 50, 25, 43]\n", - "(molecule) H24-C12-O6 final_charge=0 Create Empty PROTONATION for this specie\n", - "GET_CHARGE.len(mols)=1 received from xyz2mol with charge 0\n", - "Matched H2-O H2-O [13, 54, 57] [13, 57, 54]\n", - "(molecule) H2-O final_charge=0 Create Empty PROTONATION for this specie\n", - "GET_CHARGE.len(mols)=1 received from xyz2mol with charge 0\n", - "Matched H24-C12-O6 H24-C12-O6 [61, 63, 65, 67, 69, 71, 81, 83, 85, 87, 90, 92, 93, 95, 97, 99, 101, 103, 105, 107, 109, 111, 114, 116, 117, 119, 121, 123, 125, 127, 129, 131, 133, 135, 138, 140, 142, 144, 146, 148, 150, 152] [65, 67, 69, 99, 103, 105, 107, 109, 111, 114, 116, 117, 119, 121, 123, 125, 127, 129, 131, 133, 135, 140, 61, 63, 71, 81, 83, 85, 87, 90, 92, 93, 95, 97, 142, 144, 146, 148, 150, 152, 101, 138]\n", - "(molecule) H24-C12-O6 final_charge=0 Create Empty PROTONATION for this specie\n", - "GET_CHARGE.len(mols)=1 received from xyz2mol with charge 0\n", - "Matched H24-C12-O6 H24-C12-O6 [62, 64, 66, 68, 70, 72, 82, 84, 86, 88, 89, 91, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 113, 115, 118, 120, 122, 124, 126, 128, 130, 132, 134, 136, 137, 139, 141, 143, 145, 147, 149, 151] [66, 68, 70, 100, 104, 106, 108, 110, 112, 113, 115, 118, 120, 122, 124, 126, 128, 130, 132, 134, 136, 139, 62, 64, 72, 82, 84, 86, 88, 89, 91, 94, 96, 98, 141, 143, 145, 147, 149, 151, 102, 137]\n", - "(molecule) H24-C12-O6 final_charge=0 Create Empty PROTONATION for this specie\n", - "GET_CHARGE.len(mols)=1 received from xyz2mol with charge 0\n", - "Matched H2-O H2-O [13, 54, 57] [13, 57, 54]\n", - "(molecule) H2-O final_charge=0 Create Empty PROTONATION for this specie\n", - "GET_CHARGE.len(mols)=1 received from xyz2mol with charge 0\n", - "Matched C2-O4 C2-O4 [73, 75, 77, 80, 153, 155] [77, 73, 75, 80, 153, 155]\n", - "(ligand) C2-O4 final_charge=-2 Ligand\n", - "(ligand) C2-O4 final_charge=-2 Reordered sorted_indices=[1, 2, 0, 3, 4, 5]\n", - "GET_CHARGE.len(mols)=1 received from xyz2mol with charge -2\n", - "Matched C2-O4 C2-O4 [8, 9, 10, 11, 51, 52] [10, 8, 9, 11, 51, 52]\n", - "(ligand) C2-O4 final_charge=-2 Ligand\n", - "(ligand) C2-O4 final_charge=-2 Reordered sorted_indices=[1, 2, 0, 3, 4, 5]\n", - "GET_CHARGE.len(mols)=1 received from xyz2mol with charge -2\n", - "Matched C2-O4 C2-O4 [74, 76, 78, 79, 154, 156] [74, 76, 78, 79, 154, 156]\n", - "(ligand) C2-O4 final_charge=-2 Ligand\n", - "(ligand) C2-O4 final_charge=-2 Reordered sorted_indices=[0, 1, 2, 3, 4, 5]\n", - "GET_CHARGE.len(mols)=1 received from xyz2mol with charge -2\n", - "Matched H24-C12-O6 H24-C12-O6 [2, 3, 4, 5, 6, 7, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50] [2, 3, 4, 5, 6, 7, 15, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 16, 50, 49, 17]\n", - "(molecule) H24-C12-O6 final_charge=0 Create Empty PROTONATION for this specie\n", - "GET_CHARGE.len(mols)=1 received from xyz2mol with charge 0\n", - "Matched H2-O H2-O [13, 54, 57] [13, 54, 57]\n", - "(molecule) H2-O final_charge=0 Create Empty PROTONATION for this specie\n", - "GET_CHARGE.len(mols)=1 received from xyz2mol with charge 0\n", - "Matched H24-C12-O6 H24-C12-O6 [61, 63, 65, 67, 69, 71, 81, 83, 85, 87, 90, 92, 93, 95, 97, 99, 101, 103, 105, 107, 109, 111, 114, 116, 117, 119, 121, 123, 125, 127, 129, 131, 133, 135, 138, 140, 142, 144, 146, 148, 150, 152] [61, 69, 71, 81, 117, 119, 123, 125, 127, 129, 131, 133, 135, 138, 140, 142, 144, 146, 148, 63, 65, 67, 87, 90, 92, 93, 95, 97, 99, 101, 103, 105, 107, 109, 111, 114, 116, 83, 150, 121, 85, 152]\n", - "(molecule) H24-C12-O6 final_charge=0 Create Empty PROTONATION for this specie\n", - "GET_CHARGE.len(mols)=1 received from xyz2mol with charge 0\n", - "Matched H24-C12-O6 H24-C12-O6 [62, 64, 66, 68, 70, 72, 82, 84, 86, 88, 89, 91, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 113, 115, 118, 120, 122, 124, 126, 128, 130, 132, 134, 136, 137, 139, 141, 143, 145, 147, 149, 151] [62, 70, 72, 82, 118, 120, 124, 126, 128, 130, 132, 134, 136, 137, 139, 141, 143, 145, 147, 64, 66, 68, 88, 89, 91, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 113, 115, 151, 149, 122, 86, 84]\n", - "(molecule) H24-C12-O6 final_charge=0 Create Empty PROTONATION for this specie\n", - "GET_CHARGE.len(mols)=1 received from xyz2mol with charge 0\n", - "Matched H2-O H2-O [13, 54, 57] [13, 54, 57]\n", - "(molecule) H2-O final_charge=0 Create Empty PROTONATION for this specie\n", - "GET_CHARGE.len(mols)=1 received from xyz2mol with charge 0\n" - ] - } - ], - "source": [ - "for mol in cell.moleclist:\n", - " if not mol.iscomplex:\n", - " for ref in refcell.refmoleclist:\n", - " if not ref.iscomplex:\n", - " compare_molecules(ref, mol)\n", - " else:\n", - " for ref in refcell.refmoleclist:\n", - " if ref.iscomplex:\n", - " for lig in mol.ligands:\n", - " for ref_lig in ref.ligands:\n", - " compare_molecules(ref_lig, lig)\n", - " for met in mol.metals:\n", - " for ref_met in ref.metals:\n", - " if ref_met.get_parent_index(\"reference\") == met.get_parent_index(\"reference\"):\n", - " met.set_charge(ref_met.charge)" - ] - }, - { - "cell_type": "code", - "execution_count": 173, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = 0\n", - " Spin = 1\n", - " Smiles = [H]O[H]\n", - " Origin = cell.reconstruct\n", - "---------------------------------------------------\n", - "\n", - "GET_SPIN: Spin multiplicity of the complex H2-O is assigned as 1\n", - "\n", - "------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = 0\n", - " Spin = 1\n", - " Smiles = [H]O[H]\n", - " Origin = cell.reconstruct\n", - "---------------------------------------------------\n", - "\n", - "GET_SPIN: Spin multiplicity of the complex H2-O is assigned as 1\n", - "\n", - "------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = K\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = 1\n", - " Spin = 1\n", - " Smiles = [K+]\n", - " Origin = cell.reconstruct\n", - "---------------------------------------------------\n", - "\n", - "GET_SPIN: Spin multiplicity of the complex K is assigned as 1\n", - "\n", - "------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = K\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = 1\n", - " Spin = 1\n", - " Smiles = [K+]\n", - " Origin = cell.reconstruct\n", - "---------------------------------------------------\n", - "\n", - "GET_SPIN: Spin multiplicity of the complex K is assigned as 1\n", - "\n", - "------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = K\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = 1\n", - " Spin = 1\n", - " Smiles = [K+]\n", - " Origin = cell.reconstruct\n", - "---------------------------------------------------\n", - "\n", - "GET_SPIN: Spin multiplicity of the complex K is assigned as 1\n", - "\n", - "------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = 0\n", - " Spin = 1\n", - " Smiles = [H]O[H]\n", - " Origin = cell.reconstruct\n", - "---------------------------------------------------\n", - "\n", - "GET_SPIN: Spin multiplicity of the complex H2-O is assigned as 1\n", - "\n", - "------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = 0\n", - " Spin = 1\n", - " Smiles = [H]O[H]\n", - " Origin = cell.reconstruct\n", - "---------------------------------------------------\n", - "\n", - "GET_SPIN: Spin multiplicity of the complex H2-O is assigned as 1\n", - "\n", - "------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = 0\n", - " Spin = 1\n", - " Smiles = [H]O[H]\n", - " Origin = cell.reconstruct\n", - "---------------------------------------------------\n", - "\n", - "GET_SPIN: Spin multiplicity of the complex H2-O is assigned as 1\n", - "\n", - "------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = 0\n", - " Spin = 1\n", - " Smiles = [H]O[H]\n", - " Origin = cell.reconstruct\n", - "---------------------------------------------------\n", - "\n", - "GET_SPIN: Spin multiplicity of the complex H2-O is assigned as 1\n", - "\n", - "------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 19\n", - " Formula = C6-O12-Fe\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = -3\n", - " Spin = 6\n", - " Smiles = ['O=C([O-])C(=O)[O-]', 'O=C([O-])C(=O)[O-]', 'O=C([O-])C(=O)[O-]']\n", - " Origin = cell.reconstruct\n", - " Number of Ligands = 3\n", - " Number of Metals = 1\n", - "---------------------------------------------------\n", - "\n", - "GENERATE_feature_vector: Fe\n", - "GENERATE_feature_vector: elem_nr=26 m_ox=3.0 valence_elec=5.0\n", - "GENERATE_feature_vector: metal.coord_nr=6 metal.coord_geometry='Octahedral' geom_nr=14\n", - "GENERATE_feature_vector: metal.rel_metal_radius=1.021\n", - "GENERATE_feature_vector: hapticity=0\n", - "GENERATE_feature_vector: feature=array([[26. , 3. , 5. , 6. , 14. , 1.021, 0. ]])\n", - "ASSIGN_SPIN_METAL: Spin multiplicity of the metal Fe is predicted as 6 using Random Forest model\n", - "GET_SPIN: Spin multiplicity of the metal Fe is assigned as 6\n", - "GET_SPIN: Spin multiplicity of the complex C6-O12-Fe is assigned as 6\n", - "\n", - "------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = 0\n", - " Spin = 1\n", - " Smiles = [H]O[H]\n", - " Origin = cell.reconstruct\n", - "---------------------------------------------------\n", - "\n", - "GET_SPIN: Spin multiplicity of the complex H2-O is assigned as 1\n", - "\n", - "------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = 0\n", - " Spin = 1\n", - " Smiles = [H]O[H]\n", - " Origin = cell.reconstruct\n", - "---------------------------------------------------\n", - "\n", - "GET_SPIN: Spin multiplicity of the complex H2-O is assigned as 1\n", - "\n", - "------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = K\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = 1\n", - " Spin = 1\n", - " Smiles = [K+]\n", - " Origin = cell.reconstruct\n", - "---------------------------------------------------\n", - "\n", - "GET_SPIN: Spin multiplicity of the complex K is assigned as 1\n", - "\n", - "------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = K\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = 1\n", - " Spin = 1\n", - " Smiles = [K+]\n", - " Origin = cell.reconstruct\n", - "---------------------------------------------------\n", - "\n", - "GET_SPIN: Spin multiplicity of the complex K is assigned as 1\n", - "\n", - "------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = K\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = 1\n", - " Spin = 1\n", - " Smiles = [K+]\n", - " Origin = cell.reconstruct\n", - "---------------------------------------------------\n", - "\n", - "GET_SPIN: Spin multiplicity of the complex K is assigned as 1\n", - "\n", - "------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = 0\n", - " Spin = 1\n", - " Smiles = [H]O[H]\n", - " Origin = cell.reconstruct\n", - "---------------------------------------------------\n", - "\n", - "GET_SPIN: Spin multiplicity of the complex H2-O is assigned as 1\n", - "\n", - "------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = 0\n", - " Spin = 1\n", - " Smiles = [H]O[H]\n", - " Origin = cell.reconstruct\n", - "---------------------------------------------------\n", - "\n", - "GET_SPIN: Spin multiplicity of the complex H2-O is assigned as 1\n", - "\n", - "------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = 0\n", - " Spin = 1\n", - " Smiles = [H]O[H]\n", - " Origin = cell.reconstruct\n", - "---------------------------------------------------\n", - "\n", - "GET_SPIN: Spin multiplicity of the complex H2-O is assigned as 1\n", - "\n", - "------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = 0\n", - " Spin = 1\n", - " Smiles = [H]O[H]\n", - " Origin = cell.reconstruct\n", - "---------------------------------------------------\n", - "\n", - "GET_SPIN: Spin multiplicity of the complex H2-O is assigned as 1\n", - "\n", - "------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = 0\n", - " Spin = 1\n", - " Smiles = [H]O[H]\n", - " Origin = cell.reconstruct\n", - "---------------------------------------------------\n", - "\n", - "GET_SPIN: Spin multiplicity of the complex H2-O is assigned as 1\n", - "\n", - "------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = 0\n", - " Spin = 1\n", - " Smiles = [H]O[H]\n", - " Origin = cell.reconstruct\n", - "---------------------------------------------------\n", - "\n", - "GET_SPIN: Spin multiplicity of the complex H2-O is assigned as 1\n", - "\n", - "------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = 0\n", - " Spin = 1\n", - " Smiles = [H]O[H]\n", - " Origin = cell.reconstruct\n", - "---------------------------------------------------\n", - "\n", - "GET_SPIN: Spin multiplicity of the complex H2-O is assigned as 1\n", - "\n", - "------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = K\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = 1\n", - " Spin = 1\n", - " Smiles = [K+]\n", - " Origin = cell.reconstruct\n", - "---------------------------------------------------\n", - "\n", - "GET_SPIN: Spin multiplicity of the complex K is assigned as 1\n", - "\n", - "------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = K\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = 1\n", - " Spin = 1\n", - " Smiles = [K+]\n", - " Origin = cell.reconstruct\n", - "---------------------------------------------------\n", - "\n", - "GET_SPIN: Spin multiplicity of the complex K is assigned as 1\n", - "\n", - "------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = K\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = 1\n", - " Spin = 1\n", - " Smiles = [K+]\n", - " Origin = cell.reconstruct\n", - "---------------------------------------------------\n", - "\n", - "GET_SPIN: Spin multiplicity of the complex K is assigned as 1\n", - "\n", - "------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = 0\n", - " Spin = 1\n", - " Smiles = [H]O[H]\n", - " Origin = cell.reconstruct\n", - "---------------------------------------------------\n", - "\n", - "GET_SPIN: Spin multiplicity of the complex H2-O is assigned as 1\n", - "\n", - "------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = 0\n", - " Spin = 1\n", - " Smiles = [H]O[H]\n", - " Origin = cell.reconstruct\n", - "---------------------------------------------------\n", - "\n", - "GET_SPIN: Spin multiplicity of the complex H2-O is assigned as 1\n", - "\n", - "------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = 0\n", - " Spin = 1\n", - " Smiles = [H]O[H]\n", - " Origin = cell.reconstruct\n", - "---------------------------------------------------\n", - "\n", - "GET_SPIN: Spin multiplicity of the complex H2-O is assigned as 1\n", - "\n", - "------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = 0\n", - " Spin = 1\n", - " Smiles = [H]O[H]\n", - " Origin = cell.reconstruct\n", - "---------------------------------------------------\n", - "\n", - "GET_SPIN: Spin multiplicity of the complex H2-O is assigned as 1\n", - "\n", - "------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = 0\n", - " Spin = 1\n", - " Smiles = [H]O[H]\n", - " Origin = cell.reconstruct\n", - "---------------------------------------------------\n", - "\n", - "GET_SPIN: Spin multiplicity of the complex H2-O is assigned as 1\n", - "\n", - "------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 19\n", - " Formula = C6-O12-Fe\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = -3\n", - " Spin = 6\n", - " Smiles = ['O=C([O-])C(=O)[O-]', 'O=C([O-])C(=O)[O-]', 'O=C([O-])C(=O)[O-]']\n", - " Origin = cell.reconstruct\n", - " Number of Ligands = 3\n", - " Number of Metals = 1\n", - "---------------------------------------------------\n", - "\n", - "GENERATE_feature_vector: Fe\n", - "GENERATE_feature_vector: elem_nr=26 m_ox=3.0 valence_elec=5.0\n", - "GENERATE_feature_vector: metal.coord_nr=6 metal.coord_geometry='Octahedral' geom_nr=14\n", - "GENERATE_feature_vector: metal.rel_metal_radius=1.021\n", - "GENERATE_feature_vector: hapticity=0\n", - "GENERATE_feature_vector: feature=array([[26. , 3. , 5. , 6. , 14. , 1.021, 0. ]])\n", - "ASSIGN_SPIN_METAL: Spin multiplicity of the metal Fe is predicted as 6 using Random Forest model\n", - "GET_SPIN: Spin multiplicity of the metal Fe is assigned as 6\n", - "GET_SPIN: Spin multiplicity of the complex C6-O12-Fe is assigned as 6\n", - "\n", - "------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 42\n", - " Formula = H24-C12-O6\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = 0\n", - " Spin = 1\n", - " Smiles = [H]C1([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC1([H])[H]\n", - " Origin = cell.reconstruct\n", - "---------------------------------------------------\n", - "\n", - "GET_SPIN: Spin multiplicity of the complex H24-C12-O6 is assigned as 1\n", - "\n", - "------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = 0\n", - " Spin = 1\n", - " Smiles = [H]O[H]\n", - " Origin = cell.reconstruct\n", - "---------------------------------------------------\n", - "\n", - "GET_SPIN: Spin multiplicity of the complex H2-O is assigned as 1\n", - "\n", - "------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 42\n", - " Formula = H24-C12-O6\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = 0\n", - " Spin = 1\n", - " Smiles = [H]C1([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC1([H])[H]\n", - " Origin = cell.reconstruct\n", - "---------------------------------------------------\n", - "\n", - "GET_SPIN: Spin multiplicity of the complex H24-C12-O6 is assigned as 1\n", - "\n", - "------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 42\n", - " Formula = H24-C12-O6\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = 0\n", - " Spin = 1\n", - " Smiles = [H]C1([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC1([H])[H]\n", - " Origin = cell.reconstruct\n", - "---------------------------------------------------\n", - "\n", - "GET_SPIN: Spin multiplicity of the complex H24-C12-O6 is assigned as 1\n", - "\n", - "------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = 0\n", - " Spin = 1\n", - " Smiles = [H]O[H]\n", - " Origin = cell.reconstruct\n", - "---------------------------------------------------\n", - "\n", - "GET_SPIN: Spin multiplicity of the complex H2-O is assigned as 1\n", - "\n", - "------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = 0\n", - " Spin = 1\n", - " Smiles = [H]O[H]\n", - " Origin = cell.reconstruct\n", - "---------------------------------------------------\n", - "\n", - "GET_SPIN: Spin multiplicity of the complex H2-O is assigned as 1\n", - "\n", - "------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 42\n", - " Formula = H24-C12-O6\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = 0\n", - " Spin = 1\n", - " Smiles = [H]C1([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC1([H])[H]\n", - " Origin = cell.reconstruct\n", - "---------------------------------------------------\n", - "\n", - "GET_SPIN: Spin multiplicity of the complex H24-C12-O6 is assigned as 1\n", - "\n", - "------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = 0\n", - " Spin = 1\n", - " Smiles = [H]O[H]\n", - " Origin = cell.reconstruct\n", - "---------------------------------------------------\n", - "\n", - "GET_SPIN: Spin multiplicity of the complex H2-O is assigned as 1\n", - "\n", - "------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 42\n", - " Formula = H24-C12-O6\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = 0\n", - " Spin = 1\n", - " Smiles = [H]C1([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC1([H])[H]\n", - " Origin = cell.reconstruct\n", - "---------------------------------------------------\n", - "\n", - "GET_SPIN: Spin multiplicity of the complex H24-C12-O6 is assigned as 1\n", - "\n", - "------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 42\n", - " Formula = H24-C12-O6\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = 0\n", - " Spin = 1\n", - " Smiles = [H]C1([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC1([H])[H]\n", - " Origin = cell.reconstruct\n", - "---------------------------------------------------\n", - "\n", - "GET_SPIN: Spin multiplicity of the complex H24-C12-O6 is assigned as 1\n", - "\n", - "------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = 0\n", - " Spin = 1\n", - " Smiles = [H]O[H]\n", - " Origin = cell.reconstruct\n", - "---------------------------------------------------\n", - "\n", - "GET_SPIN: Spin multiplicity of the complex H2-O is assigned as 1\n", - "\n", - "------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 19\n", - " Formula = C6-O12-Fe\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = -3\n", - " Spin = 6\n", - " Smiles = ['O=C([O-])C(=O)[O-]', 'O=C([O-])C(=O)[O-]', 'O=C([O-])C(=O)[O-]']\n", - " Origin = cell.reconstruct\n", - " Number of Ligands = 3\n", - " Number of Metals = 1\n", - "---------------------------------------------------\n", - "\n", - "GENERATE_feature_vector: Fe\n", - "GENERATE_feature_vector: elem_nr=26 m_ox=3.0 valence_elec=5.0\n", - "GENERATE_feature_vector: metal.coord_nr=6 metal.coord_geometry='Octahedral' geom_nr=14\n", - "GENERATE_feature_vector: metal.rel_metal_radius=1.021\n", - "GENERATE_feature_vector: hapticity=0\n", - "GENERATE_feature_vector: feature=array([[26. , 3. , 5. , 6. , 14. , 1.021, 0. ]])\n", - "ASSIGN_SPIN_METAL: Spin multiplicity of the metal Fe is predicted as 6 using Random Forest model\n", - "GET_SPIN: Spin multiplicity of the metal Fe is assigned as 6\n", - "GET_SPIN: Spin multiplicity of the complex C6-O12-Fe is assigned as 6\n", - "\n", - "------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 42\n", - " Formula = H24-C12-O6\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = 0\n", - " Spin = 1\n", - " Smiles = [H]C1([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC1([H])[H]\n", - " Origin = cell.reconstruct\n", - "---------------------------------------------------\n", - "\n", - "GET_SPIN: Spin multiplicity of the complex H24-C12-O6 is assigned as 1\n", - "\n", - "------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = 0\n", - " Spin = 1\n", - " Smiles = [H]O[H]\n", - " Origin = cell.reconstruct\n", - "---------------------------------------------------\n", - "\n", - "GET_SPIN: Spin multiplicity of the complex H2-O is assigned as 1\n", - "\n", - "------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 42\n", - " Formula = H24-C12-O6\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = 0\n", - " Spin = 1\n", - " Smiles = [H]C1([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC1([H])[H]\n", - " Origin = cell.reconstruct\n", - "---------------------------------------------------\n", - "\n", - "GET_SPIN: Spin multiplicity of the complex H24-C12-O6 is assigned as 1\n", - "\n", - "------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 42\n", - " Formula = H24-C12-O6\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = 0\n", - " Spin = 1\n", - " Smiles = [H]C1([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC1([H])[H]\n", - " Origin = cell.reconstruct\n", - "---------------------------------------------------\n", - "\n", - "GET_SPIN: Spin multiplicity of the complex H24-C12-O6 is assigned as 1\n", - "\n", - "------------- Cell2mol MOLECULE Object --------------\n", - " Version = 2.0\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = 0\n", - " Spin = 1\n", - " Smiles = [H]O[H]\n", - " Origin = cell.reconstruct\n", - "---------------------------------------------------\n", - "\n", - "GET_SPIN: Spin multiplicity of the complex H2-O is assigned as 1\n", - "\n" - ] - } - ], - "source": [ - "debug = 2\n", - "from cell2mol.new_charge_assignment import prepare_mol\n", - "for mol in cell.moleclist:\n", - " if mol.iscomplex :\n", - " prepare_mol(mol)\n", - " print(mol)\n", - " for met in mol.metals:\n", - " if not hasattr(met, \"coord_nr\"): met.get_coordination_geometry()\n", - " met.get_spin(debug=debug)\n", - " else :\n", - " print(mol)\n", - " mol.get_spin(debug=debug)" - ] - }, - { - "cell_type": "code", - "execution_count": 175, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "CELL.CREATE_BONDS: Creating Bonds for molecule H2-O\n", - "CREATE_bonds_specie: specie.formula='H2-O', specie.subtype='molecule'\n", - "CELL.CREATE_BONDS: Creating Bonds for molecule H2-O\n", - "CREATE_bonds_specie: specie.formula='H2-O', specie.subtype='molecule'\n", - "CELL.CREATE_BONDS: Creating Bonds for molecule K\n", - "CREATE_bonds_specie: specie.formula='K', specie.subtype='molecule'\n", - "\tNO BONDS CREATED for K due to no bonds in molecule RDKit object\n", - "CELL.CREATE_BONDS: Creating Bonds for molecule K\n", - "CREATE_bonds_specie: specie.formula='K', specie.subtype='molecule'\n", - "\tNO BONDS CREATED for K due to no bonds in molecule RDKit object\n", - "CELL.CREATE_BONDS: Creating Bonds for molecule K\n", - "CREATE_bonds_specie: specie.formula='K', specie.subtype='molecule'\n", - "\tNO BONDS CREATED for K due to no bonds in molecule RDKit object\n", - "CELL.CREATE_BONDS: Creating Bonds for molecule H2-O\n", - "CREATE_bonds_specie: specie.formula='H2-O', specie.subtype='molecule'\n", - "CELL.CREATE_BONDS: Creating Bonds for molecule H2-O\n", - "CREATE_bonds_specie: specie.formula='H2-O', specie.subtype='molecule'\n", - "CELL.CREATE_BONDS: Creating Bonds for molecule H2-O\n", - "CREATE_bonds_specie: specie.formula='H2-O', specie.subtype='molecule'\n", - "CELL.CREATE_BONDS: Creating Bonds for molecule H2-O\n", - "CREATE_bonds_specie: specie.formula='H2-O', specie.subtype='molecule'\n", - "CELL.CREATE_BONDS: Creating Bonds for molecule C6-O12-Fe\n", - "CREATE_bonds_specie: specie.formula='C2-O4', specie.subtype='ligand'\n", - "CREATE_bonds_specie: specie.formula='C2-O4', specie.subtype='ligand'\n", - "CREATE_bonds_specie: specie.formula='C2-O4', specie.subtype='ligand'\n", - "CELL.CREATE_BONDS: Creating Bonds for molecule H2-O\n", - "CREATE_bonds_specie: specie.formula='H2-O', specie.subtype='molecule'\n", - "CELL.CREATE_BONDS: Creating Bonds for molecule H2-O\n", - "CREATE_bonds_specie: specie.formula='H2-O', specie.subtype='molecule'\n", - "CELL.CREATE_BONDS: Creating Bonds for molecule K\n", - "CREATE_bonds_specie: specie.formula='K', specie.subtype='molecule'\n", - "\tNO BONDS CREATED for K due to no bonds in molecule RDKit object\n", - "CELL.CREATE_BONDS: Creating Bonds for molecule K\n", - "CREATE_bonds_specie: specie.formula='K', specie.subtype='molecule'\n", - "\tNO BONDS CREATED for K due to no bonds in molecule RDKit object\n", - "CELL.CREATE_BONDS: Creating Bonds for molecule K\n", - "CREATE_bonds_specie: specie.formula='K', specie.subtype='molecule'\n", - "\tNO BONDS CREATED for K due to no bonds in molecule RDKit object\n", - "CELL.CREATE_BONDS: Creating Bonds for molecule H2-O\n", - "CREATE_bonds_specie: specie.formula='H2-O', specie.subtype='molecule'\n", - "CELL.CREATE_BONDS: Creating Bonds for molecule H2-O\n", - "CREATE_bonds_specie: specie.formula='H2-O', specie.subtype='molecule'\n", - "CELL.CREATE_BONDS: Creating Bonds for molecule H2-O\n", - "CREATE_bonds_specie: specie.formula='H2-O', specie.subtype='molecule'\n", - "CELL.CREATE_BONDS: Creating Bonds for molecule H2-O\n", - "CREATE_bonds_specie: specie.formula='H2-O', specie.subtype='molecule'\n", - "CELL.CREATE_BONDS: Creating Bonds for molecule H2-O\n", - "CREATE_bonds_specie: specie.formula='H2-O', specie.subtype='molecule'\n", - "CELL.CREATE_BONDS: Creating Bonds for molecule H2-O\n", - "CREATE_bonds_specie: specie.formula='H2-O', specie.subtype='molecule'\n", - "CELL.CREATE_BONDS: Creating Bonds for molecule H2-O\n", - "CREATE_bonds_specie: specie.formula='H2-O', specie.subtype='molecule'\n", - "CELL.CREATE_BONDS: Creating Bonds for molecule K\n", - "CREATE_bonds_specie: specie.formula='K', specie.subtype='molecule'\n", - "\tNO BONDS CREATED for K due to no bonds in molecule RDKit object\n", - "CELL.CREATE_BONDS: Creating Bonds for molecule K\n", - "CREATE_bonds_specie: specie.formula='K', specie.subtype='molecule'\n", - "\tNO BONDS CREATED for K due to no bonds in molecule RDKit object\n", - "CELL.CREATE_BONDS: Creating Bonds for molecule K\n", - "CREATE_bonds_specie: specie.formula='K', specie.subtype='molecule'\n", - "\tNO BONDS CREATED for K due to no bonds in molecule RDKit object\n", - "CELL.CREATE_BONDS: Creating Bonds for molecule H2-O\n", - "CREATE_bonds_specie: specie.formula='H2-O', specie.subtype='molecule'\n", - "CELL.CREATE_BONDS: Creating Bonds for molecule H2-O\n", - "CREATE_bonds_specie: specie.formula='H2-O', specie.subtype='molecule'\n", - "CELL.CREATE_BONDS: Creating Bonds for molecule H2-O\n", - "CREATE_bonds_specie: specie.formula='H2-O', specie.subtype='molecule'\n", - "CELL.CREATE_BONDS: Creating Bonds for molecule H2-O\n", - "CREATE_bonds_specie: specie.formula='H2-O', specie.subtype='molecule'\n", - "CELL.CREATE_BONDS: Creating Bonds for molecule H2-O\n", - "CREATE_bonds_specie: specie.formula='H2-O', specie.subtype='molecule'\n", - "CELL.CREATE_BONDS: Creating Bonds for molecule C6-O12-Fe\n", - "CREATE_bonds_specie: specie.formula='C2-O4', specie.subtype='ligand'\n", - "\tError with Bond EndAtom O C\n", - "\tError with Bond EndAtom O C\n", - "\tError with Bond EndAtom O C\n", - "\tError with Bond EndAtom O C\n", - "CREATE_bonds_specie: specie.formula='C2-O4', specie.subtype='ligand'\n", - "\tError with Bond EndAtom O C\n", - "\tError with Bond EndAtom O C\n", - "\tError with Bond EndAtom O C\n", - "\tError with Bond EndAtom O C\n", - "CREATE_bonds_specie: specie.formula='C2-O4', specie.subtype='ligand'\n", - "\tError with Bond EndAtom O C\n", - "\tError with Bond EndAtom O C\n", - "\tError with Bond EndAtom O C\n", - "\tError with Bond EndAtom O C\n" - ] - }, - { - "ename": "AttributeError", - "evalue": "'atom' object has no attribute 'bonds'", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mAttributeError\u001b[0m Traceback (most recent call last)", - "Input \u001b[0;32mIn [175]\u001b[0m, in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0m \u001b[43mcell\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mcreate_bonds\u001b[49m\u001b[43m(\u001b[49m\u001b[43mdebug\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;241;43m1\u001b[39;49m\u001b[43m)\u001b[49m\n", - "File \u001b[0;32m~/miniconda3/envs/cell2mol/lib/python3.10/site-packages/cell2mol/classes.py:1660\u001b[0m, in \u001b[0;36mcreate_bonds\u001b[0;34m(self, debug)\u001b[0m\n\u001b[1;32m 1658\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m index_1 \u001b[38;5;241m<\u001b[39m index_2 : \n\u001b[1;32m 1659\u001b[0m bond_startatom \u001b[38;5;241m=\u001b[39m met1\n\u001b[0;32m-> 1660\u001b[0m bond_endatom \u001b[38;5;241m=\u001b[39m met2\n\u001b[1;32m 1661\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m 1662\u001b[0m bond_startatom \u001b[38;5;241m=\u001b[39m met2\n", - "File \u001b[0;32m~/miniconda3/envs/cell2mol/lib/python3.10/site-packages/cell2mol/classes.py:463\u001b[0m, in \u001b[0;36mcorrect_smiles\u001b[0;34m(self, debug)\u001b[0m\n\u001b[1;32m 461\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28mhasattr\u001b[39m(lig,\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mis_haptic\u001b[39m\u001b[38;5;124m\"\u001b[39m): lig\u001b[38;5;241m.\u001b[39mget_hapticity(debug\u001b[38;5;241m=\u001b[39mdebug)\n\u001b[1;32m 462\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m lig\u001b[38;5;241m.\u001b[39mis_haptic: \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mis_haptic \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mTrue\u001b[39;00m\n\u001b[0;32m--> 463\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m entry \u001b[38;5;129;01min\u001b[39;00m lig\u001b[38;5;241m.\u001b[39mhaptic_type:\n\u001b[1;32m 464\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m entry \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mhaptic_type: \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mhaptic_type\u001b[38;5;241m.\u001b[39mappend(entry)\n\u001b[1;32m 465\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mhaptic_type\n", - "File \u001b[0;32m~/miniconda3/envs/cell2mol/lib/python3.10/site-packages/cell2mol/charge_assignment.py:985\u001b[0m, in \u001b[0;36mcorrect_smiles_ligand\u001b[0;34m(ligand, debug)\u001b[0m\n\u001b[1;32m 983\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m jdx, atom \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28menumerate\u001b[39m(ligand\u001b[38;5;241m.\u001b[39matoms):\n\u001b[1;32m 984\u001b[0m nbonds \u001b[38;5;241m=\u001b[39m \u001b[38;5;241m0\u001b[39m\n\u001b[0;32m--> 985\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m b \u001b[38;5;129;01min\u001b[39;00m \u001b[43matom\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mbonds\u001b[49m:\n\u001b[1;32m 986\u001b[0m \u001b[38;5;66;03m# if debug >=2 : print(b.atom1.label, b.atom2.label, b.order)\u001b[39;00m\n\u001b[1;32m 987\u001b[0m ismetal_1 \u001b[38;5;241m=\u001b[39m elemdatabase\u001b[38;5;241m.\u001b[39melementblock[b\u001b[38;5;241m.\u001b[39matom1\u001b[38;5;241m.\u001b[39mlabel] \u001b[38;5;241m==\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124md\u001b[39m\u001b[38;5;124m\"\u001b[39m \u001b[38;5;129;01mor\u001b[39;00m elemdatabase\u001b[38;5;241m.\u001b[39melementblock[b\u001b[38;5;241m.\u001b[39matom1\u001b[38;5;241m.\u001b[39mlabel] \u001b[38;5;241m==\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m 988\u001b[0m ismetal_2 \u001b[38;5;241m=\u001b[39m elemdatabase\u001b[38;5;241m.\u001b[39melementblock[b\u001b[38;5;241m.\u001b[39matom2\u001b[38;5;241m.\u001b[39mlabel] \u001b[38;5;241m==\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124md\u001b[39m\u001b[38;5;124m\"\u001b[39m \u001b[38;5;129;01mor\u001b[39;00m elemdatabase\u001b[38;5;241m.\u001b[39melementblock[b\u001b[38;5;241m.\u001b[39matom2\u001b[38;5;241m.\u001b[39mlabel] \u001b[38;5;241m==\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\n", - "\u001b[0;31mAttributeError\u001b[0m: 'atom' object has no attribute 'bonds'" - ] - } - ], - "source": [ - "cell.create_bonds(debug=1)" - ] - }, - { - "cell_type": "code", - "execution_count": 150, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[73, 75, 77, 80, 153, 155]\n", - "O True False [0.26018667 0.77569333 0.19763333] [0.59352, 0.44236, 0.8643]\n", - "O True False [0.28822667 0.70226333 0.18801333] [0.62156, 0.36893, 0.85468]\n", - "O True False [0.35235667 0.74137333 0.41555333] [0.68569, 0.40804, 1.08222]\n", - "O True False [0.32854667 0.81757333 0.44043333] [0.66188, 0.48424, 1.1071]\n", - "C True False [0.28809667 0.74985333 0.24333333] [0.62143, 0.41652, 0.91]\n", - "C True False [0.32635667 0.77321333 0.37913333] [0.65969, 0.43988, 1.0458]\n", - "[74, 76, 78, 79, 154, 156]\n", - "O True False [0.22430667 0.48449333 0.19763333] [0.55764, 0.15116, 0.8643]\n", - "O True False [0.29773667 0.58596333 0.18801333] [0.63107, 0.25263, 0.85468]\n", - "O True False [0.25862667 0.61098333 0.41555333] [0.59196, 0.27765, 1.08222]\n", - "O True False [0.18242667 0.51097333 0.44043333] [0.51576, 0.17764, 1.1071]\n", - "C True False [0.25014667 0.53824333 0.24333333] [0.58348, 0.20491, 0.91]\n", - "C True False [0.22678667 0.55314333 0.37913333] [0.56012, 0.21981, 1.0458]\n", - "[8, 9, 10, 11, 51, 52]\n", - "O True False [0.51550667 0.73981333 0.19763333] [0.84884, 0.40648, 0.8643]\n", - "O True False [0.41403667 0.71177333 0.18801333] [0.74737, 0.37844, 0.85468]\n", - "O True False [0.38901667 0.64764333 0.41555333] [0.72235, 0.31431, 1.08222]\n", - "O True False [0.48902667 0.67145333 0.44043333] [0.82236, 0.33812, 1.1071]\n", - "C True False [0.46175667 0.71190333 0.24333333] [0.79509, 0.37857, 0.91]\n", - "C True False [0.44685667 0.67364333 0.37913333] [0.78019, 0.34031, 1.0458]\n", - "[74, 76, 154, 78, 79, 156]\n", - "O True True [0.55764 0.15116 0.8643 ] [0.55764, 0.15116, 0.8643]\n", - "O True True [0.63107 0.25263 0.85468] [0.63107, 0.25263, 0.85468]\n", - "C True True [0.58348 0.20491 0.91 ] [0.58348, 0.20491, 0.91]\n", - "O True False [0.59196 0.27765 0.08222] [0.59196, 0.27765, 1.08222]\n", - "O True False [0.51576 0.17764 0.1071 ] [0.51576, 0.17764, 1.1071]\n", - "C True False [0.56012 0.21981 0.0458 ] [0.56012, 0.21981, 1.0458]\n", - "[73, 75, 153, 77, 80, 155]\n", - "O True True [0.59352 0.44236 0.8643 ] [0.59352, 0.44236, 0.8643]\n", - "O True True [0.62156 0.36893 0.85468] [0.62156, 0.36893, 0.85468]\n", - "C True True [0.62143 0.41652 0.91 ] [0.62143, 0.41652, 0.91]\n", - "O True False [0.68569 0.40804 0.08222] [0.68569, 0.40804, 1.08222]\n", - "O True False [0.66188 0.48424 0.1071 ] [0.66188, 0.48424, 1.1071]\n", - "C True False [0.65969 0.43988 0.0458 ] [0.65969, 0.43988, 1.0458]\n", - "[8, 9, 51, 10, 11, 52]\n", - "O True True [0.84884 0.40648 0.8643 ] [0.84884, 0.40648, 0.8643]\n", - "O True True [0.74737 0.37844 0.85468] [0.74737, 0.37844, 0.85468]\n", - "C True True [0.79509 0.37857 0.91 ] [0.79509, 0.37857, 0.91]\n", - "O True False [0.72235 0.31431 0.08222] [0.72235, 0.31431, 1.08222]\n", - "O True False [0.82236 0.33812 0.1071 ] [0.82236, 0.33812, 1.1071]\n", - "C True False [0.78019 0.34031 0.0458 ] [0.78019, 0.34031, 1.0458]\n", - "[77, 73, 75, 80, 153, 155]\n", - "O True False [0.01902333 0.07470667 0.74888667] [0.68569, 0.40804, 1.08222]\n", - "O True False [0.92685333 0.10902667 0.53096667] [0.59352, 0.44236, 0.8643]\n", - "O True False [0.95489333 0.03559667 0.52134667] [0.62156, 0.36893, 0.85468]\n", - "O True False [0.99521333 0.15090667 0.77376667] [0.66188, 0.48424, 1.1071]\n", - "C True False [0.95476333 0.08318667 0.57666667] [0.62143, 0.41652, 0.91]\n", - "C True False [0.99302333 0.10654667 0.71246667] [0.65969, 0.43988, 1.0458]\n", - "[10, 8, 9, 11, 51, 52]\n", - "O True False [0.05568333 0.98097667 0.74888667] [0.72235, 0.31431, 1.08222]\n", - "O True False [0.18217333 0.07314667 0.53096667] [0.84884, 0.40648, 0.8643]\n", - "O True False [0.08070333 0.04510667 0.52134667] [0.74737, 0.37844, 0.85468]\n", - "O True False [0.15569333 0.00478667 0.77376667] [0.82236, 0.33812, 1.1071]\n", - "C True False [0.12842333 0.04523667 0.57666667] [0.79509, 0.37857, 0.91]\n", - "C True False [0.11352333 0.00697667 0.71246667] [0.78019, 0.34031, 1.0458]\n", - "[74, 76, 78, 79, 154, 156]\n", - "O True False [0.89097333 0.81782667 0.53096667] [0.55764, 0.15116, 0.8643]\n", - "O True False [0.96440333 0.91929667 0.52134667] [0.63107, 0.25263, 0.85468]\n", - "O True False [0.92529333 0.94431667 0.74888667] [0.59196, 0.27765, 1.08222]\n", - "O True False [0.84909333 0.84430667 0.77376667] [0.51576, 0.17764, 1.1071]\n", - "C True False [0.91681333 0.87157667 0.57666667] [0.58348, 0.20491, 0.91]\n", - "C True False [0.89345333 0.88647667 0.71246667] [0.56012, 0.21981, 1.0458]\n" - ] - } - ], - "source": [ - "for mol in cell.moleclist: \n", - " # if mol.formula == \"H24-C12-O6\":\n", - " # print(mol.formula, f\"{mol.natoms=}\", [(p.subtype, p.natoms) for p in mol.parents], [ len(indicies) for indicies in mol.parents_indices],mol.parents_indices, mol.origin)\n", - " # # p_molec = mol.get_parent(\"molecule\")\n", - " # # p_molec_idx = mol.get_parent_indices(\"molecule\")\n", - " # p_ref = mol.get_parent(\"reference\")\n", - " # p_ref_idx = mol.get_parent_indices(\"reference\")\n", - " # p_cell = mol.get_parent(\"unit_cell\")\n", - " # p_cell_idx = mol.get_parent_indices(\"unit_cell\")\n", - " # for idx1, (idx2, idx3) in enumerate(zip(p_ref_idx, p_cell_idx)):\n", - " # print(mol.labels[idx1], mol.labels[idx1] == p_ref.labels[idx2] == p_cell.labels[idx3], np.allclose(mol.frac_coord[idx1], p_ref.frac_coord[idx2]))\n", - " # if not np.allclose(mol.frac_coord[idx1], p_ref.frac_coord[idx2]):\n", - " # print(mol.frac_coord[idx1], p_ref.frac_coord[idx2])\n", - " if mol.iscomplex:\n", - " # pass\n", - " for lig in mol.ligands:\n", - " p_molec = lig.get_parent(\"molecule\")\n", - " p_molec_idx = lig.get_parent_indices(\"molecule\")\n", - " p_ref = lig.get_parent(\"reference\")\n", - " p_ref_idx = lig.get_parent_indices(\"reference\")\n", - " p_cell = lig.get_parent(\"unit_cell\")\n", - " p_cell_idx = lig.get_parent_indices(\"unit_cell\")\n", - " print(p_ref_idx)\n", - " for idx1, idx2, idx3 in zip(p_molec_idx, p_ref_idx, p_cell_idx):\n", - " print(p_molec.labels[idx1], p_molec.labels[idx1] == p_ref.labels[idx2] == p_cell.labels[idx3], np.allclose(p_molec.frac_coord[idx1], p_ref.frac_coord[idx2]), p_molec.frac_coord[idx1], p_ref.frac_coord[idx2]) # print(lig.formula, [(p.subtype, p.natoms) for p in lig.parents], [ len(indicies) for indicies in lig.parents_indices], lig.parents_indices, lig.origin)\n", - " \n", - " # for p, p_indicies in zip(lig.parents, lig.parents_indices):\n", - " # print(p.labels)\n", - " # print(p.subtype, [p.frac_coord[idx]for idx in p_indicies])\n", - " # for atom in lig.atoms:\n", - " # print(atom.formula, [(p.subtype, p.natoms) for p in atom.parents], atom.parents_index)\n", - " # # for met in mol.metals:\n", - " # # print(met.formula, [(p.subtype, p.natoms) for p in met.parents], met.parents_index)\n", - " # else:\n", - " # for atom in mol.atoms:\n", - " # print(atom.formula, [(p.subtype, p.natoms) for p in atom.parents], atom.parents_index)\n", - " # pass\n", - " # # print(mol.formula, mol.get_parent_indices(\"reference\"))\n", - " # print(mol.formula, f\"{mol.natoms=}\", [(p.subtype, p.natoms) for p in mol.parents], [ len(indicies) for indicies in mol.parents_indices], mol.origin)" - ] - }, - { - "cell_type": "code", - "execution_count": 118, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "molecule 19 0\n", - "0 Fe [12.18571845, 7.034020882505502, 9.3951224] [0.6667, 0.3333, 0.9638]\n", - "reference 157 1\n", - "1 Fe [12.18571845, 7.034020882505502, 9.3951224] [0.6667, 0.3333, 0.9638]\n", - "C2-O4 [('molecule', 19), ('reference', 157)] [6, 6] [[8, 10, 12, 13, 16, 18], [74, 76, 78, 79, 154, 156]] split_complex\n", - "True True True\n", - "True True True\n", - "True True True\n", - "True True True\n", - "True True True\n", - "True True True\n", - "C2-O4 [('molecule', 19), ('reference', 157)] [6, 6] [[7, 9, 11, 14, 15, 17], [73, 75, 77, 80, 153, 155]] split_complex\n", - "True True True\n", - "True True True\n", - "True True True\n", - "True True True\n", - "True True True\n", - "True True True\n", - "C2-O4 [('molecule', 19), ('reference', 157)] [6, 6] [[1, 2, 3, 4, 5, 6], [8, 9, 10, 11, 51, 52]] split_complex\n", - "True True True\n", - "True True True\n", - "True True True\n", - "True True True\n", - "True True True\n", - "True True True\n" - ] - } - ], - "source": [ - "for ref in refcell.refmoleclist:\n", - " if ref.iscomplex:\n", - " pass\n", - " for met in ref.metals:\n", - " for p, p_idx in zip(met.parents, met.parents_index):\n", - " print(p.subtype, p.natoms, p_idx)\n", - " print(p_idx, p.labels[p_idx], p.coord[p_idx], p.frac_coord[p_idx])\n", - " for lig in ref.ligands:\n", - " # print(lig.formula, lig.get_parent_indices(\"molecule\"))\n", - " print(lig.formula, [(p.subtype, p.natoms) for p in lig.parents], [ len(indicies) for indicies in lig.parents_indices], lig.parents_indices, lig.origin)\n", - " p_molec = lig.get_parent(\"molecule\")\n", - " p_molec_idx = lig.get_parent_indices(\"molecule\")\n", - " p_ref = lig.get_parent(\"reference\")\n", - " p_ref_idx = lig.get_parent_indices(\"reference\")\n", - " for idx1, idx2 in zip(p_molec_idx, p_ref_idx):\n", - " print(p_molec.labels[idx1] == p_ref.labels[idx2], np.allclose(p_molec.coord[idx1], p_ref.coord[idx2]), np.allclose(p_molec.frac_coord[idx1], p_ref.frac_coord[idx2]))\n", - " # print(idx1, p_molec.labels[idx1], p_molec.coord[idx1], p_molec.frac_coord[idx1], ind2, p_ref.labels[ind2], p_ref.coord[ind2], p_ref.frac_coord[ind2])\n", - " # for p, p_indicies in zip(lig.parents, lig.parents_indices):\n", - " # # print(p.labels)\n", - " # print(p.subtype)\n", - " # for idx in p_indicies:\n", - " # print(idx, p.labels[idx], p.coord[idx], p.frac_coord[idx])\n", - " # print(lig.formula, lig.charge_state.protonation.parent.get_parent_indices(\"molecule\"))\n", - " # for l, c, pl, pc in zip(lig.labels, lig.coord, lig.charge_state.protonation.labels, lig.charge_state.protonation.coords):\n", - " # print(l, l==pl, np.allclose(c,pc), c, pc)\n", - " # for atom in lig.atoms:\n", - " # print(atom.formula, [(p.subtype, p.natoms) for p in atom.parents], atom.parents_index, atom.get_parent_index(\"reference\")) \n", - " # for met in ref.metals:\n", - " # print(met.charge, [(p.subtype, p.natoms) for p in met.parents], met.parents_index, met.get_parent_index(\"reference\")) \n", - " # else:\n", - " # for p, p_indicies in zip(ref.parents, ref.parents_indices):\n", - " # # print(p.labels)\n", - " # print(p.subtype)\n", - " # for idx in p_indicies:\n", - " # print(idx, p.labels[idx], p.coord[idx], p.frac_coord[idx])\n", - " # pass\n", - " # print(ref.formula, f\"{ref.natoms=}\", [(p.subtype, p.natoms) for p in ref.parents], [ len(indicies) for indicies in ref.parents_indices], ref.parents_indices)\n", - " # for atom in ref.atoms:\n", - " # print(atom.formula, [(p.subtype, p.natoms) for p in atom.parents], atom.parents_index, atom.get_parent_index(\"reference\")) \n", - " \n", - " # print(ref.formula, ref.charge_state.protonation.parent.get_parent_indices(\"reference\"))\n", - " # for l, c, pl, pc in zip(ref.labels, ref.coord, ref.charge_state.protonation.labels, ref.charge_state.protonation.coords):\n", - " # print(l, l==pl, np.allclose(c,pc), c, pc)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 19\n", - " Formula = C6-O12-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 MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 42\n", - " Formula = H24-C12-O6\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 42\n", - " Formula = H24-C12-O6\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 42\n", - " Formula = H24-C12-O6\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = K\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = K\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = K\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " ---------------------------------------------------]" - ] - }, - "execution_count": 6, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "cell.refmoleclist" - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "metadata": {}, - "outputs": [ - { - "ename": "AttributeError", - "evalue": "'cell' object has no attribute 'get_unique_species_V2'", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mAttributeError\u001b[0m Traceback (most recent call last)", - "Input \u001b[0;32mIn [18]\u001b[0m, in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0m \u001b[43mcell\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget_unique_species_V2\u001b[49m(debug\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m2\u001b[39m)\n", - "\u001b[0;31mAttributeError\u001b[0m: 'cell' object has no attribute 'get_unique_species_V2'" - ] - } - ], - "source": [ - "cell.get_unique_species_V2(debug=2)" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": {}, - "outputs": [ - { - "ename": "AttributeError", - "evalue": "'cell' object has no attribute 'unique_species'", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mAttributeError\u001b[0m Traceback (most recent call last)", - "Input \u001b[0;32mIn [13]\u001b[0m, in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0m \u001b[43mcell\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43munique_species\u001b[49m\n", - "\u001b[0;31mAttributeError\u001b[0m: 'cell' object has no attribute 'unique_species'" - ] - } - ], - "source": [ - "cell.unique_species" - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Molecule 0 formula=C6-O12-Fe\n", - "New ligand found with: formula C2-O4 added in position 0\n", - "ligand 1 is the same with 0 in typelist\n", - "ligand 2 is the same with 0 in typelist\n", - "New Metal Center found with: labels Fe and added in position 1\n", - "Molecule 1 formula=H24-C12-O6\n", - "New molecule found with: formula=H24-C12-O6 and added in position 2\n", - "Molecule 2 formula=H2-O\n", - "New molecule found with: formula=H2-O and added in position 3\n", - "Molecule 3 formula=H2-O\n", - "Molecule 3 is the same with 1 in typelist\n", - "Molecule 4 formula=H2-O\n", - "Molecule 4 is the same with 1 in typelist\n", - "Molecule 5 formula=H24-C12-O6\n", - "Molecule 5 is the same with 0 in typelist\n", - "Molecule 6 formula=H24-C12-O6\n", - "Molecule 6 is the same with 0 in typelist\n", - "Molecule 7 formula=K\n", - "New molecule found with: formula=K and added in position 4\n", - "Molecule 8 formula=K\n", - "Molecule 8 is the same with 2 in typelist\n", - "Molecule 9 formula=K\n", - "Molecule 9 is the same with 2 in typelist\n" - ] - } - ], - "source": [ - "from cell2mol.connectivity import compare_atoms, compare_species, compare_metals\n", - "debug = 2\n", - "unique_species = []\n", - "unique_indices = []\n", - "\n", - "typelist_mols = [] # temporary variable \n", - "typelist_ligs = [] # temporary variable\n", - "typelist_mets = [] # temporary variable\n", - "\n", - "specs_found = -1\n", - "for idx, mol in enumerate(cell.refmoleclist):\n", - " if debug >= 2: print(f\"Molecule {idx} formula={mol.formula}\")\n", - " if not mol.iscomplex:\n", - " found = False\n", - " for ldx, typ in enumerate(typelist_mols): # Molecules\n", - " issame = compare_species(mol, typ[0], debug=0)\n", - " if issame :\n", - " found = True ; kdx = typ[1]\n", - " if debug >= 2: print(f\"Molecule {idx} is the same with {ldx} in typelist\")\n", - " if not found:\n", - " specs_found += 1 ; kdx = specs_found\n", - " typelist_mols.append(list([mol, kdx]))\n", - " unique_species.append(mol)\n", - " if debug >= 2: print(f\"New molecule found with: formula={mol.formula} and added in position {kdx}\")\n", - " unique_indices.append(kdx)\n", - " mol.unique_index = kdx\n", - "\n", - " else:\n", - " if not hasattr(mol,\"ligands\"): mol.split_complex(debug=debug)\n", - " for jdx, lig in enumerate(mol.ligands): # ligands\n", - " found = False\n", - " for ldx, typ in enumerate(typelist_ligs):\n", - " issame = compare_species(lig, typ[0], debug=0)\n", - " if issame :\n", - " found = True ; kdx = typ[1]\n", - " if debug >= 2: print(f\"ligand {jdx} is the same with {ldx} in typelist\")\n", - " if not found:\n", - " specs_found += 1 ; kdx = specs_found\n", - " typelist_ligs.append(list([lig, kdx]))\n", - " unique_species.append(lig)\n", - " if debug >= 2: print(f\"New ligand found with: formula {lig.formula} added in position {kdx}\")\n", - " unique_indices.append(kdx)\n", - " lig.unique_index = kdx\n", - "\n", - " for jdx, met in enumerate(mol.metals): # metals\n", - " found = False\n", - " for ldx, typ in enumerate(typelist_mets):\n", - " issame = compare_metals(met, typ[0], debug=0)\n", - " if issame :\n", - " found = True ; kdx = typ[1]\n", - " if debug >= 2: print(f\"Metal {jdx} is the same with {ldx} in typelist\")\n", - " if not found:\n", - " specs_found += 1 ; kdx = specs_found\n", - " typelist_mets.append(list([met, kdx]))\n", - " unique_species.append(met)\n", - " if debug >= 2: print(f\"New Metal Center found with: labels {met.label} and added in position {kdx}\")\n", - " unique_indices.append(kdx)\n", - " met.unique_index = kdx" - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[------------- Cell2mol LIGAND Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = ligand\n", - " Number of Atoms = 6\n", - " Formula = C2-O4\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_complex\n", - " Number of Groups = 2\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol METAL Object --------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Sub-Type = metal\n", - " Label = Fe\n", - " Atomic Number = 26\n", - " Index in Molecule = 0\n", - " Metal Adjacency (mconnec) = 6\n", - " Regular Adjacencies (connec) = 6\n", - " ----------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 42\n", - " Formula = H24-C12-O6\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = K\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " ---------------------------------------------------]" - ] - }, - "execution_count": 21, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "unique_species" - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[0, 0, 0, 1, 2, 3, 3, 3, 2, 2, 4, 4, 4]" - ] - }, - "execution_count": 20, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "unique_indices" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "selected_cs = []\n", - "for idx, spec in enumerate(unique_species):\n", - " tmp = spec.get_possible_cs(debug=debug)\n", - " if tmp is None: \n", - " print(\"error\")\n", - " # cell.error_empty_poscharges = True\n", - " # return # Stopping. Empty list of possible charges received. \n", - " if spec.subtype != \"metal\":\n", - " selected_cs.append(list([cs.corr_total_charge for cs in spec.possible_cs]))\n", - " else :\n", - " selected_cs.append(spec.possible_cs) \n", - "# self.error_empty_poscharges = False\n", - "print(\"done\")" - ] - }, - { - "cell_type": "code", - "execution_count": 24, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "BALANCE: iterlist [[-2], [2, 3], [0], [0], [1]]\n", - "BALANCE: unique_indices [0, 0, 0, 1, 2, 3, 3, 3, 2, 2, 4, 4, 4]\n", - "BALANCE: tmpdistr [(-2, 2, 0, 0, 1), (-2, 3, 0, 0, 1)]\n", - "BALANCE: alldistr added: [-2, -2, -2, 2, 0, 0, 0, 0, 0, 0, 1, 1, 1]\n", - "BALANCE: distribution=[-2, -2, -2, 2, 0, 0, 0, 0, 0, 0, 1, 1, 1]\n", - "BALANCE: alldistr added: [-2, -2, -2, 3, 0, 0, 0, 0, 0, 0, 1, 1, 1]\n", - "BALANCE: distribution=[-2, -2, -2, 2, 0, 0, 0, 0, 0, 0, 1, 1, 1]\n", - "BALANCE: distribution=[-2, -2, -2, 3, 0, 0, 0, 0, 0, 0, 1, 1, 1]\n" - ] - } - ], - "source": [ - "from cell2mol.charge_assignment import balance_charge\n", - "final_charge_distribution = balance_charge(unique_indices, unique_species, debug=debug)\n" - ] - }, - { - "cell_type": "code", - "execution_count": 25, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[[-2, -2, -2, 3, 0, 0, 0, 0, 0, 0, 1, 1, 1]]" - ] - }, - "execution_count": 25, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "final_charge_distribution" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 42\n", - " Formula = H24-C12-O6\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 57\n", - " Formula = H36-C12-N2-Si4-Fe-I2\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Number of Ligands = 4\n", - " Number of Metals = 1\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = K\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " ---------------------------------------------------]" - ] - }, - "execution_count": 9, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "cell.refmoleclist" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = K\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = 1\n", - " Spin = 1\n", - " Smiles = [K+]\n", - " Origin = cell.reconstruct\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = K\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = 1\n", - " Spin = 1\n", - " Smiles = [K+]\n", - " Origin = cell.reconstruct\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 42\n", - " Formula = H24-C12-O6\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = 0\n", - " Spin = 1\n", - " Smiles = [H]C1([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC1([H])[H]\n", - " Origin = cell.reconstruct\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 42\n", - " Formula = H24-C12-O6\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = 0\n", - " Spin = 1\n", - " Smiles = [H]C1([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC1([H])[H]\n", - " Origin = cell.reconstruct\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 57\n", - " Formula = H36-C12-N2-Si4-Fe-I2\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = -1\n", - " Spin = 6\n", - " Smiles = ['[H]C([H])([H])[Si]([N-][Si](C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H]', '[H]C([H])([H])[Si]([N-][Si](C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H]', '[I-]', '[I-]']\n", - " Origin = cell.reconstruct\n", - " Number of Ligands = 4\n", - " Number of Metals = 1\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 57\n", - " Formula = H36-C12-N2-Si4-Fe-I2\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = -1\n", - " Spin = 6\n", - " Smiles = ['[H]C([H])([H])[Si]([N-][Si](C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H]', '[H]C([H])([H])[Si]([N-][Si](C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H]', '[I-]', '[I-]']\n", - " Origin = cell.reconstruct\n", - " Number of Ligands = 4\n", - " Number of Metals = 1\n", - " ---------------------------------------------------]" - ] - }, - "execution_count": 10, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "cell.moleclist" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "molecule(specie) H24-C12-O6\n", - "\n", - "molecule(specie) H36-C12-N2-Si4-Fe-I2 False\n", - "|- ligand(specie) H18-C6-N-Si2 False 1\n", - "|= group (specie) N False 1 Fe\n", - "\n", - "|- ligand(specie) H18-C6-N-Si2 False 1\n", - "|= group (specie) N False 1 Fe\n", - "\n", - "|- ligand(specie) I False 1\n", - "|= group (specie) I False 1 Fe\n", - "\n", - "|- ligand(specie) I False 1\n", - "|= group (specie) I False 1 Fe\n", - "\n", - "|# metal(atom) Fe 4 Tetrahedral\n", - "|# N2-I2\n", - "\n", - "molecule(specie) K\n", - "\n" - ] - } - ], - "source": [ - "for ref in cell.refmoleclist:\n", - " if ref.iscomplex:\n", - " print(f\"{ref.subtype}({ref.type}) {ref.formula} {ref.is_haptic}\")\n", - " for lig in ref.ligands:\n", - " # print(lig)\n", - " print(f\"|- {lig.subtype}({lig.type}) {lig.formula} {lig.is_haptic} {lig.denticity}\")\n", - " # print(lig.groups)\n", - " for group in lig.groups:\n", - " print(f\"|= {group.subtype} ({group.type}) {group.formula} {group.is_haptic} {group.denticity} {group.closest_metal.label}\")\n", - " print(\"\")\n", - " for metal in ref.metals:\n", - " print(f\"|# {metal.subtype}({metal.type}) {metal.label} {metal.coord_nr} {metal.coord_geometry}\")\n", - " print(f\"|# {metal.get_coord_sphere_formula()}\")\n", - " else:\n", - " print(f\"{ref.subtype}({ref.type}) {ref.formula}\")\n", - " print(\"\")" - ] - }, - { - "cell_type": "code", - "execution_count": 25, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0: molecule(specie) K mol.totcharge=1 mol.spin=1\n", - " [K+]\n", - "\n", - "1: molecule(specie) K mol.totcharge=1 mol.spin=1\n", - " [K+]\n", - "\n", - "2: molecule(specie) H24-C12-O6 mol.totcharge=0 mol.spin=1\n", - " [H]C1([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC1([H])[H]\n", - "\n", - "3: molecule(specie) H24-C12-O6 mol.totcharge=0 mol.spin=1\n", - " [H]C1([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC([H])([H])C([H])([H])OC1([H])[H]\n", - "\n", - "4: molecule(specie) H36-C12-N2-Si4-Fe-I2 False -1 6\n", - "|- ligand(specie) H18-C6-N-Si2 lig.is_haptic=False lig.denticity=1 lig.totcharge=-1\n", - "|-- group (specie) N group.is_haptic=False group.denticity=1 Fe\n", - "|--- Fe met.mconnec=4\n", - "\n", - "|- ligand(specie) H18-C6-N-Si2 lig.is_haptic=False lig.denticity=1 lig.totcharge=-1\n", - "|-- group (specie) N group.is_haptic=False group.denticity=1 Fe\n", - "|--- Fe met.mconnec=4\n", - "\n", - "|- ligand(specie) I lig.is_haptic=False lig.denticity=1 lig.totcharge=-1\n", - "|-- group (specie) I group.is_haptic=False group.denticity=1 Fe\n", - "|--- Fe met.mconnec=4\n", - "\n", - "|- ligand(specie) I lig.is_haptic=False lig.denticity=1 lig.totcharge=-1\n", - "|-- group (specie) I group.is_haptic=False group.denticity=1 Fe\n", - "|--- Fe met.mconnec=4\n", - "\n", - "|# metal(atom) Fe metal.coord_nr=4 Tetrahedral metal.charge=3.0 metal.spin=6 N2-I2 metal.mconnec=4 metal.connec=4\n", - "\n", - "5: molecule(specie) H36-C12-N2-Si4-Fe-I2 False -1 6\n", - "|- ligand(specie) H18-C6-N-Si2 lig.is_haptic=False lig.denticity=1 lig.totcharge=-1\n", - "|-- group (specie) N group.is_haptic=False group.denticity=1 Fe\n", - "|--- Fe met.mconnec=4\n", - "\n", - "|- ligand(specie) H18-C6-N-Si2 lig.is_haptic=False lig.denticity=1 lig.totcharge=-1\n", - "|-- group (specie) N group.is_haptic=False group.denticity=1 Fe\n", - "|--- Fe met.mconnec=4\n", - "\n", - "|- ligand(specie) I lig.is_haptic=False lig.denticity=1 lig.totcharge=-1\n", - "|-- group (specie) I group.is_haptic=False group.denticity=1 Fe\n", - "|--- Fe met.mconnec=4\n", - "\n", - "|- ligand(specie) I lig.is_haptic=False lig.denticity=1 lig.totcharge=-1\n", - "|-- group (specie) I group.is_haptic=False group.denticity=1 Fe\n", - "|--- Fe met.mconnec=4\n", - "\n", - "|# metal(atom) Fe metal.coord_nr=4 Tetrahedral metal.charge=3.0 metal.spin=6 N2-I2 metal.mconnec=4 metal.connec=4\n", - "\n" - ] - } - ], - "source": [ - "for idx, mol in enumerate(cell.moleclist):\n", - " \n", - " if mol.iscomplex:\n", - " print(f\"{idx}: {mol.subtype}({mol.type}) {mol.formula} {mol.is_haptic} {mol.totcharge} {mol.spin}\") #\\n {mol.adjnum=}\\n {mol.madjnum=} \\n {mol.smiles=}\")\n", - " # print(mol.adjnum)\n", - " for lig in mol.ligands:\n", - " print(f\"|- {lig.subtype}({lig.type}) {lig.formula} {lig.is_haptic=} {lig.denticity=} {lig.totcharge=}\")# \\n {lig.smiles=}\")\n", - " # print(f\"|- {lig.connected_idx}\")\n", - " # print(lig.groups)\n", - " for group in lig.groups:\n", - " print(f\"|-- {group.subtype} ({group.type}) {group.formula} {group.is_haptic=} {group.denticity=} {group.closest_metal.label}\")\n", - " for met in group.metals:\n", - " print(f\"|--- {met.label} {met.mconnec=}\")\n", - " print(\"\")\n", - " for metal in mol.metals:\n", - " print(f\"|# {metal.subtype}({metal.type}) {metal.label} {metal.coord_nr=} {metal.coord_geometry} {metal.charge=} {metal.spin=} {metal.coord_sphere_formula} {metal.mconnec=} {metal.connec=}\")\n", - " # print(f\"|# {metal.get_coord_sphere_formula()}\")\n", - " # print(f\"|# {metal.coord_sphere_formula}\")\n", - " # print(f\"|# {metal.mconnec=} {metal.connec=}\")\n", - " # print(metal.metal_adjacency)\n", - " # for bond in metal.bonds:\n", - " # print(f\"|--- {bond}\")\n", - " \n", - " else:\n", - " print(f\"{idx}: {mol.subtype}({mol.type}) {mol.formula} {mol.totcharge=} {mol.spin=}\\n {mol.smiles}\")\n", - " print(\"\")" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Co-P 0\n", - "Co-P 0\n", - "Co-P 0\n", - "Co-P 0\n", - "Co-Cl 0\n", - "Co-Cl 0\n", - "\n", - "Co-P 0\n", - "Co-P 0\n", - "Co-P 0\n", - "Co-P 0\n", - "Co-Cl 0\n", - "Co-Cl 0\n", - "\n", - "Co-P 0\n", - "Co-P 0\n", - "Co-P 0\n", - "Co-P 0\n", - "Co-Cl 0\n", - "Co-Cl 0\n", - "\n", - "Co-P 0\n", - "Co-P 0\n", - "Co-P 0\n", - "Co-P 0\n", - "Co-Cl 0\n", - "Co-Cl 0\n", - "\n" - ] - } - ], - "source": [ - "for idx, mol in enumerate(cell.moleclist):\n", - " if mol.iscomplex:\n", - " for metal in mol.metals:\n", - " for bond in metal.bonds:\n", - " print(f\"{bond.atom1.label}-{bond.atom2.label} {bond.order}\")\n", - " print(\"\")" - ] - }, - { - "cell_type": "code", - "execution_count": 35, - "metadata": {}, - "outputs": [], - "source": [ - "from cell2mol.read_write import writexyz" - ] - }, - { - "cell_type": "code", - "execution_count": 36, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "array([[ 0. , 0. , 0.44415413],\n", - " [ 5.615 , 9.3705 , 6.08944587],\n", - " [ 1.4870766 , 17.86279674, 6.16987449],\n", - " [ 9.7429234 , 0.87820326, 6.16987449],\n", - " [ 7.1020766 , 10.24870326, 0.36372551],\n", - " [ 4.1279234 , 8.49229674, 0.36372551],\n", - " [ 2.7256333 , 18.09968298, 6.42056872],\n", - " [ 8.5043667 , 0.64131702, 6.42056872],\n", - " [ 8.3406333 , 10.01181702, 0.11303128],\n", - " [ 2.8893667 , 8.72918298, 0.11303128],\n", - " [ 3.6579479 , 17.13358443, 5.67704504],\n", - " [ 7.5720521 , 1.60741557, 5.67704504],\n", - " [ 9.2729479 , 10.97791557, 0.85655496],\n", - " [ 1.9570521 , 7.76308443, 0.85655496],\n", - " [ 3.383599 , 15.89405469, 5.99327128],\n", - " [ 7.846401 , 2.84694531, 5.99327128],\n", - " [ 8.998599 , 12.21744531, 0.54032872],\n", - " [ 2.231401 , 6.52355469, 0.54032872],\n", - " [ 4.9054886 , 17.3148099 , 5.91682816],\n", - " [ 6.3245114 , 1.4261901 , 5.91682816],\n", - " [10.5204886 , 10.7966901 , 0.61677184],\n", - " [ 0.7095114 , 7.9443099 , 0.61677184],\n", - " [ 3.5036477 , 17.22185454, 4.37947208],\n", - " [ 7.7263523 , 1.51914546, 4.37947208],\n", - " [ 9.1186477 , 10.88964546, 2.15412792],\n", - " [ 2.1113523 , 7.85135454, 2.15412792],\n", - " [ 3.2418764 , 0.30266715, 0.68341456],\n", - " [ 7.9881236 , 18.43833285, 0.68341456],\n", - " [ 8.8568764 , 9.06783285, 5.85018544],\n", - " [ 2.3731236 , 9.67316715, 5.85018544],\n", - " [ 4.111303 , 0.4235466 , 0.8363008 ],\n", - " [ 7.118697 , 18.3174534 , 0.8363008 ],\n", - " [ 9.726303 , 8.9469534 , 5.6972992 ],\n", - " [ 1.503697 , 9.7940466 , 5.6972992 ],\n", - " [ 2.4524074 , 1.25808333, 1.37336272],\n", - " [ 8.7775926 , 17.48291667, 1.37336272],\n", - " [ 8.0674074 , 8.11241667, 5.16023728],\n", - " [ 3.1625926 , 10.62858333, 5.16023728],\n", - " [ 3.0510787 , 2.39659908, 2.15020776],\n", - " [ 8.1789213 , 16.34440092, 2.15020776],\n", - " [ 8.6660787 , 6.97390092, 4.38339224],\n", - " [ 2.5639213 , 11.76709908, 4.38339224],\n", - " [ 3.735098 , 3.38312532, 1.1727812 ],\n", - " [ 7.494902 , 15.35787468, 1.1727812 ],\n", - " [ 9.350098 , 5.98737468, 5.3608188 ],\n", - " [ 1.879902 , 12.75362532, 5.3608188 ],\n", - " [ 3.802478 , 4.2860667 , 1.568064 ],\n", - " [ 7.427522 , 14.4549333 , 1.568064 ],\n", - " [ 9.417478 , 5.0844333 , 4.965536 ],\n", - " [ 1.812522 , 13.6565667 , 4.965536 ],\n", - " [ 3.15563 , 3.3583872 , 0.3658816 ],\n", - " [ 8.07437 , 15.3826128 , 0.3658816 ],\n", - " [ 8.77063 , 6.0121128 , 6.1677184 ],\n", - " [ 2.45937 , 12.7288872 , 6.1677184 ],\n", - " [ 4.487508 , 2.9142255 , 0.9016368 ],\n", - " [ 6.742492 , 15.8267745 , 0.9016368 ],\n", - " [10.102508 , 6.4562745 , 5.6319632 ],\n", - " [ 1.127492 , 12.2847255 , 5.6319632 ],\n", - " [ 4.079859 , 1.92376365, 3.17990312],\n", - " [ 7.150141 , 16.81723635, 3.17990312],\n", - " [ 9.694859 , 7.44673635, 3.35369688],\n", - " [ 1.535141 , 11.29426365, 3.35369688],\n", - " [ 3.446487 , 1.3643448 , 3.822156 ],\n", - " [ 7.783513 , 17.3766552 , 3.822156 ],\n", - " [ 9.061487 , 8.0061552 , 2.711444 ],\n", - " [ 2.168513 , 10.7348448 , 2.711444 ],\n", - " [ 4.513337 , 2.7642975 , 3.7045512 ],\n", - " [ 6.716663 , 15.9767025 , 3.7045512 ],\n", - " [10.128337 , 6.6062025 , 2.8290488 ],\n", - " [ 1.101663 , 12.1347975 , 2.8290488 ],\n", - " [ 4.35724 , 1.293129 , 2.3455624 ],\n", - " [ 6.87276 , 17.447871 , 2.3455624 ],\n", - " [ 9.97224 , 8.077371 , 4.1880376 ],\n", - " [ 1.25776 , 10.663629 , 4.1880376 ],\n", - " [ 1.8580035 , 2.9629521 , 2.76501952],\n", - " [ 9.3719965 , 15.7780479 , 2.76501952],\n", - " [ 7.4730035 , 6.4075479 , 3.76858048],\n", - " [ 3.7569965 , 12.3334521 , 3.76858048],\n", - " [ 1.8712549 , 4.26151599, 2.96494768],\n", - " [ 9.3587451 , 14.47948401, 2.96494768],\n", - " [ 7.4862549 , 5.10898401, 3.56865232],\n", - " [ 3.7437451 , 13.63201599, 3.56865232],\n", - " [ 1.866426 , 4.83030534, 4.17562376],\n", - " [ 9.363574 , 13.91069466, 4.17562376],\n", - " [ 7.481426 , 4.54019466, 2.35797624],\n", - " [ 3.748574 , 14.20080534, 2.35797624],\n", - " [ 2.78504 , 4.4678544 , 4.8413976 ],\n", - " [ 8.44496 , 14.2731456 , 4.8413976 ],\n", - " [ 8.40004 , 4.9026456 , 1.6922024 ],\n", - " [ 2.82996 , 13.8383544 , 1.6922024 ],\n", - " [ 1.11177 , 4.3198005 , 4.704192 ],\n", - " [10.11823 , 14.4211995 , 4.704192 ],\n", - " [ 6.72677 , 5.0506995 , 1.829408 ],\n", - " [ 4.50323 , 13.6903005 , 1.829408 ],\n", - " [ 1.536264 , 5.8115841 , 4.5212512 ],\n", - " [ 9.693736 , 12.9294159 , 4.5212512 ],\n", - " [ 7.151264 , 3.5589159 , 2.0123488 ],\n", - " [ 4.078736 , 15.1820841 , 2.0123488 ],\n", - " [ 0.6549336 , 2.43801669, 2.11884648],\n", - " [10.5750664 , 16.30298331, 2.11884648],\n", - " [ 6.2699336 , 6.93248331, 4.41475352],\n", - " [ 4.9600664 , 11.80851669, 4.41475352],\n", - " [10.882993 , 1.99273053, 3.15180864],\n", - " [ 0.347007 , 16.74826947, 3.15180864],\n", - " [ 5.267993 , 7.37776947, 3.38179136],\n", - " [ 5.962007 , 11.36323053, 3.38179136],\n", - " [ 0.32567 , 1.1338305 , 3.626148 ],\n", - " [10.90433 , 17.6071695 , 3.626148 ],\n", - " [ 5.94067 , 8.2366695 , 2.907452 ],\n", - " [ 5.28933 , 10.5043305 , 2.907452 ],\n", - " [10.20807 , 1.7560317 , 2.744112 ],\n", - " [ 1.02193 , 16.9849683 , 2.744112 ],\n", - " [ 4.59307 , 7.6144683 , 3.789488 ],\n", - " [ 6.63693 , 11.1265317 , 3.789488 ],\n", - " [10.677484 , 2.6912076 , 3.9266936 ],\n", - " [ 0.552516 , 16.0497924 , 3.9266936 ],\n", - " [ 5.062484 , 6.6792924 , 2.6069064 ],\n", - " [ 6.167516 , 12.0617076 , 2.6069064 ],\n", - " [ 0.047166 , 3.46764723, 1.110712 ],\n", - " [11.182834 , 15.27335277, 1.110712 ],\n", - " [ 5.662166 , 5.90285277, 5.422888 ],\n", - " [ 5.567834 , 12.83814723, 5.422888 ],\n", - " [10.97171 , 4.3066818 , 1.5549968 ],\n", - " [ 0.25829 , 14.4343182 , 1.5549968 ],\n", - " [ 5.35671 , 5.0638182 , 4.9786032 ],\n", - " [ 5.87329 , 13.6771818 , 4.9786032 ],\n", - " [10.467483 , 3.036042 , 0.6272256 ],\n", - " [ 0.762517 , 15.704958 , 0.6272256 ],\n", - " [ 4.852483 , 6.334458 , 5.9063744 ],\n", - " [ 6.377517 , 12.406542 , 5.9063744 ],\n", - " [ 1.0107 , 3.298416 , 0.0392016 ],\n", - " [10.2193 , 15.442584 , 0.0392016 ],\n", - " [ 6.6257 , 6.072084 , 6.4943984 ],\n", - " [ 4.6043 , 12.668916 , 6.4943984 ],\n", - " [ 1.1437755 , 1.28432073, 1.36748248],\n", - " [10.0862245 , 17.45667927, 1.36748248],\n", - " [ 6.7587755 , 8.08617927, 5.16611752],\n", - " [ 4.4712245 , 10.65482073, 5.16611752]])" - ] - }, - "execution_count": 36, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "cell.coord" - ] - }, - { - "cell_type": "code", - "execution_count": 37, - "metadata": {}, - "outputs": [ - { - "ename": "FileNotFoundError", - "evalue": "[Errno 2] No such file or directory: 'MUFXIU/MUFXIU_cell.xyz'", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mFileNotFoundError\u001b[0m Traceback (most recent call last)", - "Input \u001b[0;32mIn [37]\u001b[0m, in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0m \u001b[43mwritexyz\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;124;43mf\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;132;43;01m{\u001b[39;49;00m\u001b[43mname\u001b[49m\u001b[38;5;132;43;01m}\u001b[39;49;00m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;124;43mf\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;132;43;01m{\u001b[39;49;00m\u001b[43mname\u001b[49m\u001b[38;5;132;43;01m}\u001b[39;49;00m\u001b[38;5;124;43m_cell.xyz\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mcell\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mlabels\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mcell\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mcoord\u001b[49m\u001b[43m)\u001b[49m\n", - "File \u001b[0;32m/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/cell2mol/read_write.py:73\u001b[0m, in \u001b[0;36mwritexyz\u001b[0;34m(fdir, fname, labels, pos, charge, spin)\u001b[0m\n\u001b[1;32m 71\u001b[0m natoms \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mlen\u001b[39m(labels)\n\u001b[1;32m 72\u001b[0m fullname \u001b[38;5;241m=\u001b[39m fdir \u001b[38;5;241m+\u001b[39m fname\n\u001b[0;32m---> 73\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m \u001b[38;5;28;43mopen\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43mfullname\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mw\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m)\u001b[49m \u001b[38;5;28;01mas\u001b[39;00m fil:\n\u001b[1;32m 74\u001b[0m \u001b[38;5;28mprint\u001b[39m(natoms, file\u001b[38;5;241m=\u001b[39mfil)\n\u001b[1;32m 75\u001b[0m \u001b[38;5;28mprint\u001b[39m(charge, spin, file\u001b[38;5;241m=\u001b[39mfil)\n", - "\u001b[0;31mFileNotFoundError\u001b[0m: [Errno 2] No such file or directory: 'MUFXIU/MUFXIU_cell.xyz'" - ] - } - ], - "source": [ - "writexyz(f\"{name}\", f\"{name}_cell.xyz\", cell.labels, cell.coord)" - ] - }, - { - "cell_type": "code", - "execution_count": 38, - "metadata": {}, - "outputs": [ - { - "ename": "FileNotFoundError", - "evalue": "[Errno 2] No such file or directory: 'MUFXIU/MUFXIU_0.xyz'", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mFileNotFoundError\u001b[0m Traceback (most recent call last)", - "Input \u001b[0;32mIn [38]\u001b[0m, in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m idx, mol \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28menumerate\u001b[39m(cell\u001b[38;5;241m.\u001b[39mmoleclist):\n\u001b[0;32m----> 2\u001b[0m \u001b[43mwritexyz\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;124;43mf\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;132;43;01m{\u001b[39;49;00m\u001b[43mname\u001b[49m\u001b[38;5;132;43;01m}\u001b[39;49;00m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;124;43mf\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;132;43;01m{\u001b[39;49;00m\u001b[43mname\u001b[49m\u001b[38;5;132;43;01m}\u001b[39;49;00m\u001b[38;5;124;43m_\u001b[39;49m\u001b[38;5;132;43;01m{\u001b[39;49;00m\u001b[43midx\u001b[49m\u001b[38;5;132;43;01m}\u001b[39;49;00m\u001b[38;5;124;43m.xyz\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mmol\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mlabels\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mmol\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mcoord\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mmol\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mtotcharge\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mmol\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mspin\u001b[49m\u001b[43m)\u001b[49m\n", - "File \u001b[0;32m/opt/anaconda3/envs/cell2mol/lib/python3.10/site-packages/cell2mol/read_write.py:73\u001b[0m, in \u001b[0;36mwritexyz\u001b[0;34m(fdir, fname, labels, pos, charge, spin)\u001b[0m\n\u001b[1;32m 71\u001b[0m natoms \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mlen\u001b[39m(labels)\n\u001b[1;32m 72\u001b[0m fullname \u001b[38;5;241m=\u001b[39m fdir \u001b[38;5;241m+\u001b[39m fname\n\u001b[0;32m---> 73\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m \u001b[38;5;28;43mopen\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43mfullname\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mw\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m)\u001b[49m \u001b[38;5;28;01mas\u001b[39;00m fil:\n\u001b[1;32m 74\u001b[0m \u001b[38;5;28mprint\u001b[39m(natoms, file\u001b[38;5;241m=\u001b[39mfil)\n\u001b[1;32m 75\u001b[0m \u001b[38;5;28mprint\u001b[39m(charge, spin, file\u001b[38;5;241m=\u001b[39mfil)\n", - "\u001b[0;31mFileNotFoundError\u001b[0m: [Errno 2] No such file or directory: 'MUFXIU/MUFXIU_0.xyz'" - ] - } - ], - "source": [ - "for idx, mol in enumerate(cell.moleclist):\n", - " writexyz(f\"{name}\", f\"{name}_{idx}.xyz\", mol.labels, mol.coord, mol.totcharge, mol.spin)" - ] - }, - { - "cell_type": "code", - "execution_count": 39, - "metadata": {}, - "outputs": [], - "source": [ - "from cell2mol.charge_assignment import get_smiles_complex\n", - "from rdkit import Chem" - ] - }, - { - "cell_type": "code", - "execution_count": 40, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "mol.formula='H32-C22-N4-O4-F6-Ni' smiles='[H]C1=C(C(F)(F)F)[O-]~[Ni+2]2(~O=C(C(F)(F)F)C([H])=C3[N-]~2C(C([H])([H])[H])(C([H])([H])[H])N(OC([H])([H])[H])C3(C([H])([H])[H])C([H])([H])[H])~N2=C1C(C([H])([H])[H])(C([H])([H])[H])N(OC([H])([H])[H])C2(C([H])([H])[H])C([H])([H])[H]'\n" - ] - }, - { - "data": { - "image/png": "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", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "['Ni', 'O', 'C', 'C', 'F', 'F', 'F', 'C', 'H', 'C', 'C', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'N', 'O', 'C', 'H', 'H', 'H', 'C', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'N', 'O', 'C', 'C', 'F', 'F', 'F', 'C', 'H', 'C', 'C', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'N', 'O', 'C', 'H', 'H', 'H', 'C', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'N']\n", - "smiles_2='[H]C1=C(C(F)(F)F)[O-]~[Ni+2]2(~O=C(C(F)(F)F)C([H])=C3[N-]~2C(C([H])([H])[H])(C([H])([H])[H])N(OC([H])([H])[H])C3(C([H])([H])[H])C([H])([H])[H])~N2=C1C(C([H])([H])[H])(C([H])([H])[H])N(OC([H])([H])[H])C2(C([H])([H])[H])C([H])([H])[H]'\n", - "True\n", - "mol.formula='H32-C22-N4-O4-F6-Ni' smiles='[H]C1=C2[N-](~[Ni+2]3(~O=C1C(F)(F)F)~O=C(C(F)(F)F)C([H])=C1[N-]~3C(C([H])([H])[H])(C([H])([H])[H])N(OC([H])([H])[H])C1(C([H])([H])[H])C([H])([H])[H])C(C([H])([H])[H])(C([H])([H])[H])N(OC([H])([H])[H])C2(C([H])([H])[H])C([H])([H])[H]'\n" - ] - }, - { - "data": { - "image/png": "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", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "['Ni', 'O', 'C', 'C', 'F', 'F', 'F', 'C', 'H', 'C', 'C', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'N', 'O', 'C', 'H', 'H', 'H', 'C', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'N', 'O', 'C', 'C', 'F', 'F', 'F', 'C', 'H', 'C', 'C', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'N', 'O', 'C', 'H', 'H', 'H', 'C', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'N']\n", - "smiles_2='[H]C1=C2[N-](~[Ni+2]3(~O=C1C(F)(F)F)~O=C(C(F)(F)F)C([H])=C1[N-]~3C(C([H])([H])[H])(C([H])([H])[H])N(OC([H])([H])[H])C1(C([H])([H])[H])C([H])([H])[H])C(C([H])([H])[H])(C([H])([H])[H])N(OC([H])([H])[H])C2(C([H])([H])[H])C([H])([H])[H]'\n", - "True\n" - ] - } - ], - "source": [ - "for idx, mol in enumerate(cell.moleclist):\n", - " if mol.iscomplex:\n", - " smiles, obj = get_smiles_complex(mol, debug=1)\n", - " print([atom.GetSymbol() for atom in obj.GetAtoms()])\n", - " smiles_2 = Chem.MolToSmiles(obj)\n", - " print(f\"{smiles_2=}\")\n", - " print(smiles == smiles_2)\n", - " # m = Chem.MolFromSmiles(smiles, sanitize=False)\n", - " # display(m)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "cell2mol", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.10.6" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} diff --git a/cell2mol/test/check_radius.ipynb b/cell2mol/test/check_radius.ipynb deleted file mode 100644 index 948ef074b..000000000 --- a/cell2mol/test/check_radius.ipynb +++ /dev/null @@ -1,609 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "from cell2mol.elementdata import ElementData\n", - "elemdatabase = ElementData()\n", - "from cell2mol.coordination_sphere import covalent_factor_for_metal_v2" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "3.575" - ] - }, - "execution_count": 5, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "1.3*(elemdatabase.CovalentRadius3[\"Au\"] + elemdatabase.CovalentRadius3[\"Mn\"])" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "2.6390000000000002" - ] - }, - "execution_count": 7, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "1.3*(elemdatabase.CovalentRadius3[\"Fe\"] + elemdatabase.CovalentRadius3[\"N\"])" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "2.63" - ] - }, - "execution_count": 4, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "elemdatabase.CovalentRadius3[\"Y\"] + elemdatabase.CovalentRadius3[\"C\"]" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [], - "source": [ - "from collections import defaultdict\n", - "\n", - "from cell2mol.elementdata import ElementData\n", - "from cell2mol.connectivity import labels2formula\n", - "elemdatabase = ElementData()\n", - "\n", - "###############################\n", - "#### RUBEN Changes for V14 ####\n", - "###############################\n", - "valence_electrons = []\n", - "for i in elemdatabase.elementsym:\n", - " try:\n", - " valence_electrons.append(\n", - " elemdatabase.valenceelectrons[elemdatabase.elementsym[i]]\n", - " )\n", - " except KeyError:\n", - " continue\n", - "\n", - "atomic_valence_electrons = dict(zip(elemdatabase.elementsym, valence_electrons))\n", - "\n", - "\n", - "def get_atomic_valences(k):\n", - " symb = elemdatabase.elementsym[k]\n", - " block = elemdatabase.elementblock[symb]\n", - " group = elemdatabase.elementgroup[symb]\n", - " period = elemdatabase.elementperiod[symb]\n", - " ave = elemdatabase.valenceelectrons[symb]\n", - " if k == 5: # B\n", - " return [3, 4]\n", - " if k == 7: # N\n", - " return [3, 4]\n", - " if k == 8: # O\n", - " return [2, 1, 3]\n", - " if k == 15: # P\n", - " return [6, 5, 3] # [5,4,3]\n", - " if k == 33: # As\n", - " return [6, 5, 3] # [5,4,3]\n", - " if k == 51: # Sb\n", - " return [6, 5, 3] # [5,4,3]\n", - " if k in [16, 34]: # S, Se\n", - " return [6, 3, 2, 1] # [6,4,2]\n", - " if k in [17]: # Cl\n", - " return [1, 7]\n", - " if k in [53]: # I\n", - " return [1, 2]\n", - " if block == \"s\" and period == 1:\n", - " av = 2 - ave\n", - " elif block == \"s\" and period != 1:\n", - " av = ave\n", - " elif group == 18:\n", - " av = 0\n", - " elif block == \"p\" and group != 18:\n", - " av = 8 - ave\n", - " elif block in \"d\":\n", - " av = 20 - ave\n", - " else:\n", - " av = 1\n", - " return [av]\n", - "\n", - "\n", - "atomic_valence = defaultdict(list)\n", - "for k in elemdatabase.elementsym:\n", - " try:\n", - " # print(f\"Getting atomic valence for element number {k}={elemdatabase.elementsym[k]}\")\n", - " av = get_atomic_valences(k)\n", - " atomic_valence[k].extend(av)\n", - " # print(f\"Got atomic valence {atomic_valence[k]} as a result.\")\n", - " except KeyError:\n", - " continue" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Li\n", - "Na\n", - "K\n", - "Rb\n", - "Cs\n", - "Fr\n" - ] - } - ], - "source": [ - "for k in elemdatabase.elementname:\n", - " try:\n", - " if elemdatabase.elementgroup[k]==1 and k != \"H\" and k != \"D\":\n", - " print(k)\n", - " except :\n", - " pass" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Al\n", - "Ga\n", - "Ge\n", - "In\n", - "Sn\n", - "Sb\n", - "Tl\n", - "Pb\n", - "Bi\n", - "Na\n", - "Mg\n", - "K\n", - "Ca\n", - "Sr\n", - "Ba\n" - ] - } - ], - "source": [ - "elem_list = [\"Al\", \"Ga\", \"Ge\", \"In\", \"Sn\", \"Sb\", \"Tl\", \"Pb\", \"Bi\", \"Na\", \"Mg\", \"K\", \"Ca\", \"Sr\", \"Ba\"]\n", - "for elem in elem_list :\n", - " print(elem)\n", - " # print(elem, elemdatabase.CovalentRadius3[elem], elemdatabase.elementname[elem], atomic_valence[elemdatabase.elementnr[elem]])" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Is ring compound (square ring)? False\n", - "Is ring compound (linear chain)? False\n" - ] - } - ], - "source": [ - "import numpy as np\n", - "import networkx as nx\n", - "\n", - "def is_haptic_ring(adjacency_matrix):\n", - " # Convert adjacency matrix to a NetworkX graph\n", - " G = nx.from_numpy_array(np.array(adjacency_matrix))\n", - " \n", - " # Check if the graph is connected\n", - " if not nx.is_connected(G):\n", - " return False # If not connected, can't form a single ring\n", - " \n", - " # Check if all nodes have degree 2\n", - " for node, degree in G.degree():\n", - " if degree != 2:\n", - " return False # If any node doesn't have degree 2, it's not a simple ring\n", - "\n", - " # Check if the graph has exactly one cycle\n", - " cycles = list(nx.simple_cycles(nx.DiGraph(G)))\n", - " if len(cycles) == 1 and len(cycles[0]) == G.number_of_nodes():\n", - " return True # The graph is a simple ring compound\n", - "\n", - " return False # Otherwise, not a ring compound\n", - "\n", - "\n", - "# Example Usage:\n", - "# Adjacency matrix for a ring of 4 atoms (square)\n", - "adj_matrix_ring = [\n", - " [0, 1, 0, 1],\n", - " [1, 0, 1, 0],\n", - " [0, 1, 0, 1],\n", - " [1, 0, 1, 0],\n", - "]\n", - "\n", - "# Adjacency matrix for a chain (not a ring)\n", - "adj_matrix_chain = [\n", - " [0, 1, 0, 0],\n", - " [1, 0, 1, 0],\n", - " [0, 1, 0, 1],\n", - " [0, 0, 1, 0],\n", - "]\n", - "\n", - "print(\"Is ring compound (square ring)?\", is_ring_compound(adj_matrix_ring)) # True\n", - "print(\"Is ring compound (linear chain)?\", is_ring_compound(adj_matrix_chain)) # False\n" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "0.7890000000000001" - ] - }, - "execution_count": 5, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "3.419 - 2.63" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "3.419" - ] - }, - "execution_count": 3, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "1.3*(elemdatabase.CovalentRadius3[\"Y\"] + elemdatabase.CovalentRadius3[\"C\"])" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "3.71" - ] - }, - "execution_count": 5, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "elemdatabase.CovalentRadius3[\"Nd\"] + elemdatabase.CovalentRadius3[\"Sc\"]" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "1.1130000000000004" - ] - }, - "execution_count": 6, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "4.823 - (elemdatabase.CovalentRadius3[\"Nd\"] + elemdatabase.CovalentRadius3[\"Sc\"])" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "1.7" - ] - }, - "execution_count": 4, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "elemdatabase.CovalentRadius3[\"Sc\"]" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "4.823" - ] - }, - "execution_count": 2, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "1.3*(elemdatabase.CovalentRadius3[\"Nd\"] + elemdatabase.CovalentRadius3[\"Sc\"])" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'H': 1.19,\n", - " 'D': 1.19,\n", - " 'He': 1.68,\n", - " 'Li': 0.99,\n", - " 'Be': 0.95,\n", - " 'B': 1.1,\n", - " 'C': 1.22,\n", - " 'N': 1.19,\n", - " 'O': 1.21,\n", - " 'F': 1.14,\n", - " 'Ne': 1.56,\n", - " 'Na': 0.88,\n", - " 'Mg': 1.04,\n", - " 'Al': 1.32,\n", - " 'Si': 1.06,\n", - " 'P': 1.14,\n", - " 'S': 1.19,\n", - " 'Cl': 1.19,\n", - " 'Ar': 1.5,\n", - " 'K': 0.79,\n", - " 'Ca': 0.97,\n", - " 'Sc': 1.3,\n", - " 'Ti': 1.3,\n", - " 'V': 1.3,\n", - " 'Cr': 1.3,\n", - " 'Mn': 1.3,\n", - " 'Fe': 1.3,\n", - " 'Co': 1.3,\n", - " 'Ni': 1.3,\n", - " 'Cu': 1.3,\n", - " 'Zn': 1.3,\n", - " 'Ga': 1.26,\n", - " 'Ge': 1.24,\n", - " 'As': 1.12,\n", - " 'Se': 1.12,\n", - " 'Br': 1.21,\n", - " 'Kr': 1.6,\n", - " 'Rb': 1.02,\n", - " 'Sr': 0.97,\n", - " 'Y': 1.3,\n", - " 'Zr': 1.3,\n", - " 'Nb': 1.3,\n", - " 'Mo': 1.3,\n", - " 'Tc': 1.3,\n", - " 'Ru': 1.3,\n", - " 'Rh': 1.3,\n", - " 'Pd': 1.3,\n", - " 'Ag': 1.3,\n", - " 'Cd': 1.3,\n", - " 'In': 1.35,\n", - " 'Sn': 1.29,\n", - " 'Sb': 1.04,\n", - " 'Te': 1.06,\n", - " 'I': 1.21,\n", - " 'Xe': 1.51,\n", - " 'Cs': 1.03,\n", - " 'Ba': 0.99,\n", - " 'La': 1.3,\n", - " 'Ce': 1.3,\n", - " 'Pr': 1.3,\n", - " 'Nd': 1.3,\n", - " 'Pm': 1.3,\n", - " 'Sm': 1.3,\n", - " 'Eu': 1.3,\n", - " 'Gd': 1.3,\n", - " 'Tb': 1.3,\n", - " 'Dy': 1.3,\n", - " 'Ho': 1.3,\n", - " 'Er': 1.3,\n", - " 'Tm': 1.3,\n", - " 'Yb': 1.3,\n", - " 'Lu': 1.3,\n", - " 'Hf': 1.3,\n", - " 'Ta': 1.3,\n", - " 'W': 1.3,\n", - " 'Re': 1.3,\n", - " 'Os': 1.3,\n", - " 'Ir': 1.3,\n", - " 'Pt': 1.3,\n", - " 'Au': 1.3,\n", - " 'Hg': 1.3,\n", - " 'Tl': 1.3,\n", - " 'Pb': 1.29,\n", - " 'Bi': 1.28,\n", - " 'Po': 1.38,\n", - " 'At': 1.34,\n", - " 'Rn': 1.63,\n", - " 'Fr': 1.09,\n", - " 'Ra': 1.16,\n", - " 'Ac': 1.3,\n", - " 'Th': 1.3,\n", - " 'Pa': 1.3,\n", - " 'U': 1.3,\n", - " 'Np': 1.3,\n", - " 'Pu': 1.3,\n", - " 'Am': 1.3,\n", - " 'Cm': 1.3,\n", - " 'Bk': 1.3,\n", - " 'Cf': 1.3,\n", - " 'Es': 1.3,\n", - " 'Fm': 1.3,\n", - " 'Md': 1.3,\n", - " 'No': 1.3,\n", - " 'Lr': 1.3,\n", - " 'Rf': 1.3,\n", - " 'Db': 1.3,\n", - " 'Sg': 1.3,\n", - " 'Bh': 1.3,\n", - " 'Hs': 1.3,\n", - " 'Mt': 1.3}" - ] - }, - "execution_count": 12, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "covalent_factor_for_metal_v2" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "metadata": {}, - "outputs": [], - "source": [ - "elemdatabase = ElementData()" - ] - }, - { - "cell_type": "code", - "execution_count": 25, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "H 0.23 0.31 1.35\n", - "D 0.23 0.31 1.35\n", - "Li 0.68 1.28 1.88\n", - "Be 0.35 0.96 2.74\n", - "Na 0.68 1.66 2.44\n", - "Mg 0.88 1.41 1.6\n", - "K 0.68 2.03 2.99\n", - "Ca 0.99 1.76 1.78\n", - "Rb 1.47 2.2 1.5\n", - "Sr 1.12 1.95 1.74\n", - "Cs 1.67 2.44 1.46\n", - "Ba 1.34 2.15 1.6\n", - "Fr 2.0 2.6 1.3\n", - "Ra 1.9 2.21 1.16\n" - ] - } - ], - "source": [ - "for elem in elemdatabase.elementgroup.keys():\n", - " if elemdatabase.elementgroup[elem] == 1 or elemdatabase.elementgroup[elem] == 2:\n", - " print(elem, elemdatabase.CovalentRadius2[elem], elemdatabase.CovalentRadius3[elem], \n", - " round(elemdatabase.CovalentRadius3[elem]/elemdatabase.CovalentRadius2[elem],2),)\n", - " # covalent_factor_for_metal_v2[elem],\n", - " # round(elemdatabase.CovalentRadius3[elem]*covalent_factor_for_metal_v2[elem],2),\n", - " # round(elemdatabase.CovalentRadius3[elem]*0.6, 2) )" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - " \"Na1+\": 0.970,\n", - " \"Mg1+\": 0.820,\n", - " \"Mg2+\": 0.660,\n", - " \"K1+\": 1.330,\n", - " \"Ca1+\": 1.180,\n", - " \"Ca2+\": 0.990," - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "cell2mol", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.10.6" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/cell2mol/test/cif/YOXKUS.cif b/cell2mol/test/cif/YOXKUS.cif deleted file mode 100644 index 1ec6981b2..000000000 --- a/cell2mol/test/cif/YOXKUS.cif +++ /dev/null @@ -1,206 +0,0 @@ - -####################################################################### -# -# Cambridge Crystallographic Data Centre -# CCDC -# -####################################################################### -# -# If this CIF has been generated from an entry in the Cambridge -# Structural Database, then it will include bibliographic, chemical, -# crystal, experimental, refinement or atomic coordinate data resulting -# from the CCDC's data processing and validation procedures. -# -####################################################################### - -data_CSD_CIF_YOXKUS -_audit_creation_date 2009-11-24 -_audit_creation_method CSD-ConQuest-V1 -_database_code_CSD YOXKUS -_database_code_depnum_ccdc_archive 'CCDC 703987' -_chemical_formula_sum 'C23 H24 I2 O1 P1 Re1' -_chemical_formula_moiety -; -C23 H24 I2 O1 P1 Re1 -; -_journal_coden_Cambridge 222 -_journal_year 2009 -_journal_page_first 3044 -_journal_name_full 'Dalton Trans. ' -loop_ -_publ_author_name -"F.Godoy" -"A.H.Klahn" -"B.Oelckers" -"M.T.Garland" -"A.Ibanez" -"R.N.Perutz" -_chemical_name_systematic -; -cis-(\h^5^-Tetramethylcyclopentadienylmethylene(diphenyl)phosphine)-carbonyl-d -iiodo-rhenium(iii) -; -_cell_volume 2326.703 -_exptl_crystal_colour 'red' -_exptl_crystal_density_diffrn 2.248 -_exptl_special_details -; -Cif gives the study temperature as 273 K - -; -_exptl_crystal_description 'plates' -_exptl_crystal_preparation 'dichloromethane/hexanes' -_diffrn_ambient_temperature 298 -#These two values have been output from a single CSD field. -_refine_ls_R_factor_gt 0.0561 -_refine_ls_wR_factor_gt 0.0561 -_symmetry_cell_setting monoclinic -_symmetry_space_group_name_H-M 'P 21/n' -_symmetry_Int_Tables_number 14 -loop_ -_symmetry_equiv_pos_site_id -_symmetry_equiv_pos_as_xyz -1 x,y,z -2 1/2-x,1/2+y,1/2-z -3 -x,-y,-z -4 -1/2+x,-1/2-y,-1/2+z -_cell_length_a 15.1360(15) -_cell_length_b 8.7980(8) -_cell_length_c 17.9659(17) -_cell_angle_alpha 90 -_cell_angle_beta 103.464(2) -_cell_angle_gamma 90 -_cell_formula_units_Z 4 -loop_ -_atom_type_symbol -_atom_type_radius_bond -C 0.68 -H 0.23 -I 1.40 -O 0.68 -P 1.05 -Re 1.51 -loop_ -_atom_site_label -_atom_site_type_symbol -_atom_site_fract_x -_atom_site_fract_y -_atom_site_fract_z -Re1 Re -0.00653(3) 0.94596(4) 0.76561(2) -I1 I 0.09638(5) 1.21082(8) 0.79712(5) -I2 I -0.14816(5) 1.15565(9) 0.73264(5) -P1 P 0.12236(18) 0.8253(3) 0.85209(15) -C1 C 0.0612(7) 0.7562(10) 0.7151(6) -C2 C -0.0302(7) 0.7141(11) 0.7097(6) -C3 C -0.0826(7) 0.8228(11) 0.6602(6) -C4 C -0.0248(7) 0.9287(12) 0.6341(6) -C5 C 0.0654(8) 0.8889(12) 0.6675(6) -C6 C -0.0634(8) 0.5731(12) 0.7409(8) -H1 H -0.07870 0.49830 0.70100 -H2 H -0.11610 0.59650 0.75970 -H3 H -0.01650 0.53390 0.78190 -C7 C -0.1840(8) 0.8070(15) 0.6288(7) -H4 H -0.19530 0.73740 0.58650 -H5 H -0.20940 0.90440 0.61190 -H6 H -0.21140 0.76910 0.66820 -C8 C -0.0558(9) 1.0502(15) 0.5764(7) -H7 H -0.07430 1.00560 0.52640 -H8 H -0.00700 1.12030 0.57730 -H9 H -0.10620 1.10330 0.58830 -C9 C 0.1522(7) 0.9567(13) 0.6525(7) -H10 H 0.16900 0.90240 0.61160 -H11 H 0.20010 0.94880 0.69800 -H12 H 0.14220 1.06180 0.63860 -C10 C 0.1421(7) 0.6999(12) 0.7762(6) -H13 H 0.19970 0.71950 0.76310 -H14 H 0.13720 0.59320 0.78820 -C11 C 0.2294(7) 0.9229(11) 0.8941(6) -C12 C 0.3037(7) 0.9124(12) 0.8673(7) -H15 H 0.30220 0.85340 0.82410 -C13 C 0.3835(8) 0.9865(15) 0.9017(7) -H16 H 0.43520 0.97640 0.88250 -C14 C 0.3846(10) 1.0753(15) 0.9648(9) -H17 H 0.43690 1.12930 0.98730 -C15 C 0.3107(10) 1.0851(14) 0.9945(8) -H18 H 0.31310 1.14100 1.03890 -C16 C 0.2309(8) 1.0115(13) 0.9586(7) -H19 H 0.17890 1.02140 0.97750 -C17 C 0.1077(7) 0.7064(11) 0.9306(6) -C18 C 0.1416(8) 0.5620(13) 0.9405(7) -H20 H 0.16720 0.51970 0.90300 -C19 C 0.1390(9) 0.4779(14) 1.0037(8) -H21 H 0.16160 0.37910 1.00890 -C20 C 0.1024(9) 0.5419(18) 1.0597(8) -H22 H 0.09930 0.48500 1.10260 -C21 C 0.0704(9) 0.6880(18) 1.0530(7) -H23 H 0.04780 0.73080 1.09210 -C22 C 0.0718(8) 0.7721(14) 0.9881(6) -H24 H 0.04910 0.87080 0.98280 -C23 C -0.0730(8) 0.8988(12) 0.8379(6) -O1 O -0.1186(4) 0.8657(7) 0.8731(4) -loop_ -_geom_bond_atom_site_label_1 -_geom_bond_atom_site_label_2 -_geom_bond_distance -_geom_bond_site_symmetry_1 -_geom_bond_site_symmetry_2 -Re1 I1 2.787 1_555 1_555 -I2 Re1 2.785 1_555 1_555 -P1 Re1 2.436 1_555 1_555 -C1 Re1 2.257 1_555 1_555 -C2 Re1 2.265 1_555 1_555 -C3 Re1 2.252 1_555 1_555 -C4 Re1 2.319 1_555 1_555 -C5 Re1 2.332 1_555 1_555 -C6 C2 1.496 1_555 1_555 -H1 C6 0.961 1_555 1_555 -H2 C6 0.958 1_555 1_555 -H3 C6 0.960 1_555 1_555 -C7 C3 1.513 1_555 1_555 -H4 C7 0.960 1_555 1_555 -H5 C7 0.959 1_555 1_555 -H6 C7 0.960 1_555 1_555 -C8 C4 1.487 1_555 1_555 -H7 C8 0.960 1_555 1_555 -H8 C8 0.960 1_555 1_555 -H9 C8 0.960 1_555 1_555 -C9 C5 1.523 1_555 1_555 -H10 C9 0.959 1_555 1_555 -H11 C9 0.961 1_555 1_555 -H12 C9 0.961 1_555 1_555 -C10 P1 1.832 1_555 1_555 -H13 C10 0.970 1_555 1_555 -H14 C10 0.970 1_555 1_555 -C11 P1 1.834 1_555 1_555 -C12 C11 1.326 1_555 1_555 -H15 C12 0.930 1_555 1_555 -C13 C12 1.385 1_555 1_555 -H16 C13 0.930 1_555 1_555 -C14 C13 1.374 1_555 1_555 -H17 C14 0.931 1_555 1_555 -C15 C14 1.350 1_555 1_555 -H18 C15 0.931 1_555 1_555 -C16 C11 1.392 1_555 1_555 -H19 C16 0.931 1_555 1_555 -C17 P1 1.811 1_555 1_555 -C18 C17 1.366 1_555 1_555 -H20 C18 0.930 1_555 1_555 -C19 C18 1.363 1_555 1_555 -H21 C19 0.931 1_555 1_555 -C20 C19 1.377 1_555 1_555 -H22 C20 0.929 1_555 1_555 -C21 C20 1.369 1_555 1_555 -H23 C21 0.930 1_555 1_555 -C22 C17 1.399 1_555 1_555 -H24 C22 0.931 1_555 1_555 -C23 Re1 1.865 1_555 1_555 -O1 C23 1.079 1_555 1_555 -C1 C2 1.414 1_555 1_555 -C1 C5 1.457 1_555 1_555 -C1 C10 1.524 1_555 1_555 -C2 C3 1.416 1_555 1_555 -C3 C4 1.430 1_555 1_555 -C4 C5 1.402 1_555 1_555 -C15 C16 1.390 1_555 1_555 -C21 C22 1.385 1_555 1_555 -#END diff --git a/cell2mol/test/cif_file.ipynb b/cell2mol/test/cif_file.ipynb deleted file mode 100644 index 102d69c89..000000000 --- a/cell2mol/test/cif_file.ipynb +++ /dev/null @@ -1,1838 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import re\n", - "from collections import defaultdict\n", - "\n", - "def extract_chemical_formula_moiety(file_path):\n", - " with open(file_path, 'r') as file:\n", - " cif_content = file.read()\n", - " \n", - " # Find the chemical formula moiety using regex\n", - " pattern = r\"_chemical_formula_moiety\\s+['\\\";]([^;'\\\"]+)['\\\";]\"\n", - " match = re.search(pattern, cif_content)\n", - " if not match:\n", - " raise ValueError(\"Chemical formula moiety not found.\")\n", - " formula = match.group(1).strip()\n", - " return formula\n", - "\n", - "def parse_formula_with_quantity(formula: str):\n", - " element_pattern = r\"(\\d*)\\(?([A-Za-z0-9\\s]+)\\)?(\\d*)(\\d+[+-]?)\"\n", - " moieties_info = []\n", - "\n", - " for match in re.findall(element_pattern, formula):\n", - " quantity = int(match[0]) if match[0] else 1\n", - " elements = defaultdict(int)\n", - " for element, count in re.findall(r\"([A-Z][a-z]*)(\\d*)\", match[1]):\n", - " elements[element] += int(count) if count else 1\n", - "\n", - " charge_str = match[3]\n", - " charge = int(charge_str[:-1]) * (1 if charge_str.endswith(\"+\") else -1)\n", - "\n", - " moieties_info.append({\n", - " \"elements\": dict(elements),\n", - " \"quantity\": quantity,\n", - " \"charge\": charge\n", - " })\n", - " return moieties_info\n", - "\n", - "# Example usage\n", - "file_path = \"error_2/CSCNCC01/CSCNCC01.cif\"\n", - "file_path = \"error_2/APRCOB/APRCOB.cif\"\n", - "chemical_formula = extract_chemical_formula_moiety(file_path)\n", - "moieties_info = parse_formula_with_quantity(chemical_formula)\n", - "\n", - "# Display results\n", - "print(\"Chemical Formula Moiety:\", chemical_formula)\n", - "print(\"Moieties Information:\")\n", - "for i, moiety in enumerate(moieties_info, 1):\n", - " print(f\"Moiety {i}:\")\n", - " print(f\" Elements: {moiety['elements']}\")\n", - " print(f\" Quantity: {moiety['quantity']}\")\n", - " print(f\" Charge: {moiety['charge']}\")\n" - ] - }, - { - "cell_type": "code", - "execution_count": 210, - "metadata": {}, - "outputs": [], - "source": [ - "from cell2mol.cell_operations import cart2frac, frac2cart_fromparam\n", - "import numpy as np\n", - "from cell2mol.read_write import writexyz" - ] - }, - { - "cell_type": "code", - "execution_count": 207, - "metadata": {}, - "outputs": [], - "source": [ - "newcell = np.load(\"error_2/APRCOB/Cell_APRCOB.cell\", allow_pickle=True)" - ] - }, - { - "cell_type": "code", - "execution_count": 212, - "metadata": {}, - "outputs": [], - "source": [ - "for idx, mol in enumerate(newcell.moleclist):\n", - " writexyz(\"error_2/APRCOB\", f\"Mol_APRCOB_{idx}.xyz\", mol.labels, mol.coord)" - ] - }, - { - "cell_type": "code", - "execution_count": 214, - "metadata": {}, - "outputs": [], - "source": [ - "mol_0 = read('error_2/APRCOB/Mol_APRCOB_0.xyz')\n", - "mol_1 = read('error_2/APRCOB/Mol_APRCOB_1.xyz')\n", - "mol_2 = read('error_2/APRCOB/Mol_APRCOB_2.xyz')\n", - "mol_3 = read('error_2/APRCOB/Mol_APRCOB_3.xyz')" - ] - }, - { - "cell_type": "code", - "execution_count": 223, - "metadata": {}, - "outputs": [], - "source": [ - "combined_mol = mol_0 + mol_1 + mol_2 + mol_3\n", - "combined_mol.set_cell(atoms.get_cell())" - ] - }, - { - "cell_type": "code", - "execution_count": 225, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 225, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "plot_atoms(combined_mol)" - ] - }, - { - "cell_type": "code", - "execution_count": 220, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 220, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "plot_atoms(mol_0 + mol_1 + mol_2 + mol_3)\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "newcell.cellvec" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "for ref in newcell.refmoleclist:\n", - " print(cart2frac(ref.coord, newcell.cellvec))" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "newcell.cellparam" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "newcell.frac_coord" - ] - }, - { - "cell_type": "code", - "execution_count": 221, - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - " /Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/io/cif.py:401: UserWarning: crystal system 'orthorhombic' is not interpreted for space group Spacegroup(18, setting=1). This may result in wrong setting!\n", - " /Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 12 and 16 are equivalent\n", - " /Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 13 and 17 are equivalent\n", - " /Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 14 and 18 are equivalent\n", - " /Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 3 and 19 are equivalent\n", - " /Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 5 and 20 are equivalent\n", - " /Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 6 and 21 are equivalent\n", - " /Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 4 and 22 are equivalent\n", - " /Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 7 and 23 are equivalent\n", - " /Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 8 and 24 are equivalent\n", - " /Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 2 and 25 are equivalent\n", - " /Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 9 and 26 are equivalent\n", - " /Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 10 and 27 are equivalent\n", - " /Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 11 and 28 are equivalent\n", - " /Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 15 and 29 are equivalent\n" - ] - } - ], - "source": [ - "from ase.io import read\n", - "from ase.visualize.plot import plot_atoms\n", - "\n", - "cif_file_path = 'error_2/APRCOB/APRCOB.cif'\n", - "atoms = read(cif_file_path)\n", - "cell = atoms.cell.cellpar()\n", - "space_group = atoms.info['spacegroup']" - ] - }, - { - "cell_type": "code", - "execution_count": 174, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "Cell([11.76, 7.49, 5.91])" - ] - }, - "execution_count": 174, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "atoms.get_cell()" - ] - }, - { - "cell_type": "code", - "execution_count": 175, - "metadata": {}, - "outputs": [], - "source": [ - "sym_ops = space_group.get_op()" - ] - }, - { - "cell_type": "code", - "execution_count": 176, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "array([[0. , 0. , 0. ],\n", - " [0.5, 0.5, 0. ],\n", - " [0.5, 0.5, 0. ],\n", - " [0. , 0. , 0. ]])" - ] - }, - "execution_count": 176, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "sym_ops[1]" - ] - }, - { - "cell_type": "code", - "execution_count": 177, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[[1 0 0]\n", - " [0 1 0]\n", - " [0 0 1]] [0. 0. 0.]\n", - "Symmetry operation #1\n", - "Rotation matrix: [1 0 0]\n", - " [0 1 0]\n", - " [0 0 1]\n", - "Translation vector: [0. 0. 0.]\n", - "\n", - "[[ 1 0 0]\n", - " [ 0 -1 0]\n", - " [ 0 0 -1]] [0.5 0.5 0. ]\n", - "Symmetry operation #2\n", - "Rotation matrix: [1 0 0]\n", - " [ 0 -1 0]\n", - " [ 0 0 -1]\n", - "Translation vector: [0.5 0.5 0. ]\n", - "\n", - "[[-1 0 0]\n", - " [ 0 1 0]\n", - " [ 0 0 -1]] [0.5 0.5 0. ]\n", - "Symmetry operation #3\n", - "Rotation matrix: [-1 0 0]\n", - " [0 1 0]\n", - " [ 0 0 -1]\n", - "Translation vector: [0.5 0.5 0. ]\n", - "\n", - "[[-1 0 0]\n", - " [ 0 -1 0]\n", - " [ 0 0 1]] [0. 0. 0.]\n", - "Symmetry operation #4\n", - "Rotation matrix: [-1 0 0]\n", - " [ 0 -1 0]\n", - " [0 0 1]\n", - "Translation vector: [0. 0. 0.]\n", - "\n" - ] - } - ], - "source": [ - "for i, (rot, trans) in enumerate(space_group.get_symop()):\n", - " print(rot, trans)\n", - " print(\"Symmetry operation #{}\".format(i + 1))\n", - " print(\"Rotation matrix: \", rot[0,:])\n", - " print(\" \", rot[1,:])\n", - " print(\" \", rot[2,:])\n", - " print(\"Translation vector: \", trans)\n", - " print()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": 237, - "metadata": {}, - "outputs": [], - "source": [ - "def apply_symmetry_operations_to_frac (molecule, cellparam, fractional_coords, sym_ops):\n", - " new_structures = []\n", - " for rot, trans in zip(sym_ops[0], sym_ops[1]):\n", - " transformed_positions = np.dot(fractional_coords, rot.T)\n", - " transformed_positions += np.array(trans)\n", - " normalized_positions = np.mod(transformed_positions, 1)\n", - " new_positions = frac2cart_fromparam(normalized_positions, cellparam)\n", - " new_molecule = molecule.copy()\n", - " new_molecule.set_positions(new_positions)\n", - " new_structures.append(new_molecule)\n", - " return new_structures" - ] - }, - { - "cell_type": "code", - "execution_count": 202, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 202, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "plot_atoms(atoms)" - ] - }, - { - "cell_type": "code", - "execution_count": 204, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 204, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "plot_atoms(atoms)" - ] - }, - { - "cell_type": "code", - "execution_count": 232, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[Atoms(symbols='BrCoC3H7N2O2N2OCH2CH2CH3O', pbc=False, cell=[11.76, 7.49, 5.91]),\n", - " Atoms(symbols='BrCoC3H7N2O2N2OCH2CH2CH3O', pbc=False, cell=[11.76, 7.49, 5.91]),\n", - " Atoms(symbols='BrCoC3H7N2O2N2OCH2CH2CH3O', pbc=False, cell=[11.76, 7.49, 5.91]),\n", - " Atoms(symbols='BrCoC3H7N2O2N2OCH2CH2CH3O', pbc=False, cell=[11.76, 7.49, 5.91])]" - ] - }, - "execution_count": 232, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "new_structures" - ] - }, - { - "cell_type": "code", - "execution_count": 248, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 248, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "new_structures = apply_symmetry_operations_to_frac(cart_ref, cell, frac_ref.positions, sym_ops)\n", - "plot_atoms(new_structures[0] + new_structures[1])" - ] - }, - { - "cell_type": "code", - "execution_count": 249, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 249, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "plot_atoms(atoms)" - ] - }, - { - "cell_type": "code", - "execution_count": 150, - "metadata": {}, - "outputs": [], - "source": [ - "def apply_symmetry_operations(molecule, sym_ops):\n", - " new_structures = []\n", - " positions = molecule.get_positions()\n", - " cell = molecule.get_cell()\n", - " for rot, trans in zip(sym_ops[0], sym_ops[1]):\n", - " print(rot, trans)\n", - " new_positions = np.dot(positions, np.transpose(rot)) + np.array(trans)# * cell.diagonal()\n", - " new_molecule = molecule.copy()\n", - " print(np.mean(new_positions, axis=0))\n", - " # if is_within_unit_cell(np.mean(new_positions, axis=0), cell):\n", - " new_molecule.set_positions(new_positions)\n", - " new_molecule.set_cell(cell)\n", - " new_structures.append(new_molecule)\n", - "\n", - " return new_structures" - ] - }, - { - "cell_type": "code", - "execution_count": 107, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 107, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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u3YtWrVqBY1GI1lMR129ehVmsxljxoxBRdkFlF3NkDul29zIX4/reWuRlvaJ05vnabVabP323/BtpkX+kfG4nrcOdlsZrl69ivnz5zs1FpErUQgSb55RWloKnU4Ho9HIPilUb4WFhcFkMuHMmTNYuXIlRo4cKXrMEydOIDQ0FKNGjXJ6K3tnysjIwI4dO3D16lX07TsAF676okXPjXKnBQCwmAtx9j/heG5QX3z99Veixdm1axcGDBgA94eC0bdPKDp3DsWiRYtw9OhRPProo6LFJaqLuly/ObNBJILY2FicPXsWrVu3xrx58yR5FHXevHnw9vZGly5dRI9VW3a7HVlZWYiOjoZOp8PkyRNRUrAN5vLzcqcGACg88xHcNTYkJy8WNU7//v3x+uuvw2rKx7hxY5CQkIBmzZph4cKFosYlkguLDSIRjBgxAp6enmjatClycnKwYMECUePt3LkTaWlpePrpp1167f/EiRO4du0a4uLiAADDhg2DVqvDtQvLZc4MsFnLUXJpJSbEvgFfX1/R482cORN2ux03btyAp6cn3njjDXz++ecwGo2ixyaSGosNIhFotVqMHj0ap0+fxuOPP4533nkHJ06cECVWaWkpXnvtNbRt2xa9e/cWJYaz7N27F3q9vmYbdy8vL8SOfx3XL6TIPrtRculLWKtKMX78eEnitWzZEoMGDarpOfX666/DZDJh7dq1ksQnkhKLDSKRTJgwAUajEYGBgWjatCkGDRqE/Px8p8aorKzEiy++iOLiYgwbNgxKpev+J11cXIyTJ09i0qRJtx1/55134Ne8GfKPjIcg2GXKDigt3IbevR9Hy5YtJYs5atQoHDp0CAUFBQgICIBer8eePXski08kFdf9y0T0gOvUqRP69OmD/fv344033kB5eTn69OmDs2fPOmX80tJSPPvss/jxxx8xbty4+95sSi579+6Fj48PXnnllduOa7VafPrpCpQW7sa188tkyg6oKjuEXr2k79ILoGY/Fr1eL/neLERSYLFBJKK4uDj8/PPPKC8vR1xcHCorK9G1a1csXbq0Tl2UMzIyEBoain379iE2Nlbyhm+OMplMyM7OxpgxY+7ZbGzAgAEYP348Ck7+TZblFKu5GJVluZLv4tmiRQs0bty4psAIDw/HqVOnUFlZKWkeRGJjsUEkopdeegnt2rXDV199BZ1Oh6lT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OnfujIsXLyIxMZHFhoz8/PwA3Jrh8Pf3rzlem2u3JPdssDW9axAEAZMmTcKGDRuwa9cutGzZUu6UGqQBAwbg2LFjOHz4cM0rIiICr776Kg4fPsxCQ0K9e/e+6/HvM2fOICQkRKaMGqaKigoolbdfjlQqFR99lVnLli3h5+d327W7qqoK33//vcPXbsmWUeramp7qLi4uDmvWrMGmTZug1WprZpp0Oh08PT1lzq7h0Gq1d90n89BDD6Fp06a8f0Zif/7znxEZGYk5c+Zg6NCh2L9/P1JTU5Gamip3ag3K888/j9mzZyM4OBihoaE4dOgQFixYgDFjxsidWr138+ZNnD17tubn8+fP4/Dhw2jSpAmCg4MxdepUzJkzB23btkXbtm0xZ84ceHl5Yfjw4Y4FcsbjMvdr8eLFQkhIiKDRaITw8HA+cikxAPd8paWlyZ1ag8dHX+WzZcsWoVOnToK7u7vQvn17ITU1Ve6UGpzS0lLhzTffFIKDgwUPDw+hVatWwttvvy2YzWa5U6v3MjMz73ldGD16tCAItx5/fffddwU/Pz/B3d1deOKJJ4Rjx445HIct5omIiEhU7I1CREREomKxQURERKJisUFERESiYrFBREREomKxQURERKJisUFERESiYrFBREREomKxQURERKJisUFERESiYrFBREREomKxQURERKL6P79AeR2aB0anAAAAAElFTkSuQmCC", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "plot_atoms(atoms)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "array([11.76, 7.49, 5.91, 90. , 90. , 90. ])" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "cell" - ] - }, - { - "cell_type": "code", - "execution_count": 61, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 61, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "plot_atoms(molecule_2)" - ] - }, - { - "cell_type": "code", - "execution_count": 154, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Help on function plot_atoms in module ase.visualize.plot:\n", - "\n", - "plot_atoms(atoms, ax=None, **parameters)\n", - " Plot an atoms object in a matplotlib subplot.\n", - " \n", - " Parameters\n", - " ----------\n", - " atoms : Atoms object\n", - " ax : Matplotlib subplot object\n", - " rotation : str, optional\n", - " In degrees. In the form '10x,20y,30z'\n", - " show_unit_cell : int, optional, default 2\n", - " Draw the unit cell as dashed lines depending on value:\n", - " 0: Don't\n", - " 1: Do\n", - " 2: Do, making sure cell is visible\n", - " radii : float, optional\n", - " The radii of the atoms\n", - " colors : list of strings, optional\n", - " Color of the atoms, must be the same length as\n", - " the number of atoms in the atoms object.\n", - " scale : float, optional\n", - " Scaling of the plotted atoms and lines.\n", - " offset : tuple (float, float), optional\n", - " Offset of the plotted atoms and lines.\n", - "\n" - ] - } - ], - "source": [ - "help(plot_atoms)" - ] - }, - { - "cell_type": "code", - "execution_count": 156, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[[1 0 0]\n", - " [0 1 0]\n", - " [0 0 1]] [0. 0. 0.]\n", - "[5.88 3.745 0.98169176]\n", - "[[ 1 0 0]\n", - " [ 0 -1 0]\n", - " [ 0 0 -1]] [0.5 0.5 0. ]\n", - "[ 6.38 -3.245 -0.98169176]\n", - "[[-1 0 0]\n", - " [ 0 1 0]\n", - " [ 0 0 -1]] [0.5 0.5 0. ]\n", - "[-5.38 4.245 -0.98169176]\n", - "[[-1 0 0]\n", - " [ 0 -1 0]\n", - " [ 0 0 1]] [0. 0. 0.]\n", - "[-5.88 -3.745 0.98169176]\n" - ] - }, - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 156, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAh8AAAGcCAYAAAB5kcI6AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/av/WaAAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOzddVxV9//A8ddtSkJQlLYDA8XudnbndHbn1Ok2t33ddNacbrbYXZvdXWAAtmKLpIKCIHH7/P5Q+c1ZXLiE8zwfD/8Qzvl8Phe497zP53w+77dEEAQBkUgkEolEomwizekBiEQikUgk+ryIwYdIJBKJRKJsJQYfIpFIJBKJspUYfIhEIpFIJMpWYvAhEolEIpEoW4nBh0gkEolEomwlBh8ikUgkEomylRh8iEQikUgkylbynB7AvxmNRqKiosiTJw8SiSSnhyMSiUQikSgdBEHgxYsXuLi4IJV+eG4j1wUfUVFRuLu75/QwRCKRSCQSZUB4eDhubm4fPCbXBR958uQBXg7e1tY2h0cjEolEIpEoPRITE3F3d0+7jn9Irgs+Xj9qsbW1FYMPkUgkEok+MelZMiEuOBWJRCKRSJStxOBDJBKJRCJRthKDD5FIJBKJRNlKDD5EIpFIJBJlKzH4yMV0Oh2JiYkYjcacHopIJBKJRGYjBh+5THx8PHPmzKFEiRIolUrs7OyQy+XUrFmT9evXo9FocnqIIpFIJBJlihh85CJz587F1dWVCRMm4Ovry/Lly9m0aRMLFizA0tKSHj164O7uzqFDh3J6qCKRSCQSZViuy/Pxufrf//7HL7/8wogRI5g4cSLOzs5vfH/IkCHcunWLMWPG0KJFC7Zs2UK7du1yaLQikUgkEmWcOPORC2zatIlffvmFadOmMXfu3LcCj9dKlizJrl27aNeuHd27d+f69evZPFKRSCQSiTJPIgiCkNOD+KfExETs7OxISEj4LDKcCoJA+fLl8fDwYPfu3enKDKdWqylRogSNGjVi+fLl2TBKkUgkEok+zJTrtzjzkcPOnDnDtWvXGDVqVLqr+FpYWDBo0CA2bNhAfHx8Fo9QJBKJRCLzEoOPHLZ+/XoKFy5Mw4YNTTqvX79+aLVatm3blkUjE4lEIpEoa4jBRw6Ljo6mVKlSSKWm/SqcnZ1xcnLi8ePHWTQykUgkEomyhhh85DCj0Zjuxy3/JpFIxARkIpFIJPrkiMFHDsufPz/379/H1HW/8fHxPHv2jHz58mXRyEQikUgkyhpi8JHDOnfuTEhICGfPnjXpvNWrVwPQtm3bLBiVSCQSiURZRww+cljjxo0pUqQI8+bNS/c5BoOBxYsX06FDBwoUKJCFoxOJRCLRh2g0Gp4+fUpqampOD+WTIgYfOUwqlTJu3Dg2bdrEypUrP3q8IAiMGjWKe/fu8fXXX2fDCEUikUj0T0lJSfj5+eHj44OFhQX58uXDysqKEiVK8Mcff4gpENJBDD5ygUGDBjFw4ED69evHtGnTSElJeedxsbGx9OnThwULFvDTTz+hUCgIDAzk+vXrxMXFZfOoRSKR6POzZcsWXF1dGTJkCJ6enqxYsYJt27axevVqKlasyPjx43F1dWXx4sU5PdRcTcxwmksYjUa+//57Zs6cib29PX369KFx48ZYW1sTFxfH1q1b2bJlS9ruFoPB8FYbnp6eVK5cmSpVqtCtWzfc3Nyy+2WIRCLRf9aKFSvo168fXbp0YebMmXh4eLx1zOPHj/n5559ZvHgx06ZN49tvv82BkeYMU67fYvCRyzx48IAlS5awfPlynj17lvZ1uVyOlZUVRYoUoXDhwhQsWBCVSoVEIkGv1/Ps2TPCw8OJjIwkLCwMvV5P69atGTZsGA0aNMjwdt7M0Ov17N27l9WrVxMSEkJcXBxyuZwiRYrQsGFD+vfvj6ura7aPSyQSiUwVEBBAnTp16N+/P4sWLfroZ+rrYqE7d+6kdevW2TTKnCUGH584jUbDpEmTmDlzJiqVivLly1O/fv33Fpz7N7VaTVBQEAEBAURFRVGvXj1WrFhBoUKFzDK+8PBwAgMDCQoK4uLFS8TEPkOr0aKyUFHAOR+VKvkSGxvLjh07iI6OxtramuTkZFxdXXF1dUWtVnPnzh20Wi2tW7fmp59+okKFCmYZm0gkEmWFdu3acffuXS5fvoxc/vGC8IIg0KBBAzQaDQEBAdkwwpwnBh+fsODgYL766ivu3LlDo0aNaNCgAUqlMkNtCYJASEgIf//9N6mpqcyaNYtBgwaZnE0VQKvVsmPHDubPX8jp0ycBsLAuiCqPDzJVAaRSJUajBoMmipT4IHSauLQ7gw4dOjB8+HDq1KmT9rXExETWrVvHnDlziIyMZNOmTZ/N3YFIJPq0hIeH4+XlxYIFCxg8eHC6z9u+fTvt27fn4sWLn8UNlhh8fKI2bdpEz549KViwIN26dcPFxcUs7arVanbu3MnZs2fp1q0bq1evRqFQpOtcQRDYsGEDX48ZR2zMY2zz1cLBoz82TnVQWL57fEajkbDgr0h6spONGzfQsWPH97afmprKl19+yd69ezl8+DB16tTJ0GsUiUSirPL777/z448/8uTJE/LkyZPu8/R6Pe7u7vTo0YPffvstC0eYO5hy/f743JEoW6xZs4bevXvj6+tLt27dkMlkZmvbwsKCLl26UKJECdatW0dycjJ//fXXRwOQx48fM3DgYHbv3omDW0dK1P8WS7syH+0vJc6f55F/sWLFig8GHgCWlpZs2rSJBg0aMHjwYG7cuJEj61NEIpHofR4/foybm5tJgQe8XKtXtGhRnjx5kkUj+3SJW21zgd27d9O3b1+qVq1K9+7dzRp4/JOPjw99+vRh79699OvX74Mp3QMDAyntXZZDR87iVWUTnpXWpSvwAHgW6kfRoiXo3bt3uo5XKpVMnjyZkJAQTp48ma5zRCKRKLsIgpCpGly57AFDrmBy8HHq1ClatWqFi4sLEomEHTt2vPfYQYMGIZFI+OOPPzIxxP+2x48f06tXL0qXLk3nzp0ztB7DFN7e3nTr1o21a9eybt26dx4TEBBAvXoN0EuLUqzeRexd2qa7fZ36CQlR2xk+fIhJb9Z69epRsmRJFi5cmO5zRCKRKDvkz5+fyMjI9+Zgeh+DwcCDBw/Inz9/Fo3s02XylS45OZny5cszf/78Dx63Y8cOzp8/b7Z1C/9FgiAwaNAgDAYDXbp0yfLA47VKlSrh6+vLiBEjiI6OfuN7N27c4IsvmiO39sGr2l7kKieT2la/uIHRqKdFixYmnSeRSGjRogWXLl0y6TyRSCTKah07diQlJYVNmzaZdN6BAweIjIykS5cuWTSyT5fJV7tmzZoxZcoU2rdv/95jIiMjGT58OOvXr0/3wsbP0aZNm9i1axcdOnTAxsYmW/t+/fv758ptnU5H125fYpS54lllGzK5tcntGvXJABlaLGxra8uLFy9MPk8kEomyUuHChWnWrBnz589PS/T4MYIgMG/ePHx9falcuXIWj/DTY/ZbbaPRSM+ePfnmm2/w9vb+6PEajYbExMQ3/n0OBEHg559/xtvbm/Lly2d7/9bW1rRu3Zpdu3Zx9epVAKZOncqNG9dx9VmOTJGxnUZS+csgKiEhweRzP8cdTiKR6NPwzTffcPnyZSZMmJCuNRy///47Bw8eZPz48eIi+ncwe/AxY8YM5HI5I0eOTNfx06ZNw87OLu2fu7u7uYeUK508eZLbt29Tt27dHBuDj48P9vb2LFq0iJCQECZPnkL+YuOxss/4fnRL2zLIZEp27dpl0nlGo5Hdu3dTqVKlDPctEolE5hQdHU1wcDD+/v5YWFgwfvz4tHxJsbGx7zwnISGBCRMm8M033/D999/TuXPnbB71p8GsW22Dg4P5888/uXjxYrojve+++44xY8ak/T8xMfGzCEAWLFiAk5MTxYoVy7ExyGQyqlatypo1a9DpdMhVTjgXz1wdArkqH7Yu7Zk/fxFff/11utexHDlyhLt377JixYpM9S8SiUQZde/ePTZs2MCFCxcIDAwkJibmrWOkUikrVqxg+fLlVK9enWHDhpE/f35evHjB/v37WbduHVqtlunTpzN+/PgceBWfBrMGH6dPnyYmJuaNYjsGg4GxY8fyxx9/EBoa+tY5KpUKlUplzmHkWkajkSNHjrB//37+/vtvWrdunePTcdWrV+fgwYOsXbsOh0Jjkcoy/7tw8hrE3dOb8PPzS1c2wNTUVL7//nu8vb2pWbNmpvsXiUS5z927d1myZAknT54kIiICo9GIvb09pUuXpnfv3rRo0SJdacvNzWAwsGfPHhYsWMDhw4exsrLC09OT8uXL4+bmRt68eVEoFBiNRtRqNVFRUYSHhxMeHo6/vz9nz55NWwfi4uLChAkT6N+/v7jZ4iPM+pvu2bMnjRo1euNrTZs2pWfPnvTp08ecXX1S4uLiWLlyJQsWLODhw4fY2toiCAKFCxfO6aFhb2+Po6Mjz57F4ejV1yxtWuWthlOhQQwbNhwbGxt69Ojx3mOTkpLo1Kkzly5dYsqUKTkejIlEIvM6ffo0P//8M0ePHkUqlSKVSmnevDnu7u7o9XoCAwNp27YtLi4utGrVCltbW4KDLxEb+wyNVotKqSR/ficqVaqIr68vVapUwdPT0yxju3HjBr169SI4OBgvLy+6d++Oj4/PB0ta/PNz+8mTJwQEBHDhwgW0Wi39+/fn22+/zXBJjM+JycFHUlIS9+7dS/v/w4cPuXz5Mnnz5sXDwwNHR8c3jlcoFBQoUIASJUpkfrSfGEEQWLZsGWPGjEGtVlO+fHlat25NZGQk27ZtyzWRsZubGwkv9Cgt3czSnkQiwbXs7xgNqfTs2ZMNGzYxfPhQvvjii7THMM+ePWPFihXMm7eQ6CdPUVgWJDIy0iz9i0Si3GHNmjX07dsXKysrrKys+P777+nfv/9bRTKDgoKYNWsWS5YsQa6wxcapHnKLIkikSoxaDWFPowk4v57UpBkA1KlTj+HDh9K2bdsM7ajU6/X89ttvTJo0CUdHR0aOHJmhm0FnZ2fatWtH8+bNOXr0KFOmTGH79u2sXbs2RzYSfEpMDj6CgoKoX79+2v9fr9fo1asXq1atMtvAcpP4+HiCg4O5fv06SUlJCIKAlZUVJUuWxNfXlwIFCrx1TlhYGP369ePIkSNUrVqVli1bpqXmPX/+PAUKFMg125Dd3d25dj0kU1n8/k0ileNeYQk2TrU5fX4B+/e3wNExP84FCqLRaAgLe4jBIGDn0pGitb7hyZ0ZnD8fZJa+RSJRztu9eze9e/fGxcWF5ORkjh8/jq+v7zuPrVSpEps2baJixYpMmDABm/yNcCo08K3jdOonJD09weWQpXTu3BlnZxfmzp1j0qLOlJQUOnbsyMGDB6lfvz5ffPFFpj+LVSoVzZs3p2zZsmzatIkqVaqwefNm2rZtm6l2/8vEwnLvERkZydKlS1m/ahX3Hj0CwFImw/bVnXuS0UiywQCAq7Mznbp1Y8iQIRQvXpyzZ8/SrFkzZDIZnTp1olSpUm+0vWzZMgRBYMCAAdn7ot4jKCiIdevWUa5VPFKZpdnbFwSBlPhAEh/vRa+LRypVobTyxMGtC3JVPgBi7s3l6d2fSE56kSPPfUUikfno9Xq8vLxwdXXlwoULHDhwgKZNm6br3P79+7N2/XZKNr7/wc+j1MQbxNyeQnzkdtp36MiihQs+mkk0NTWVZs2ace7cOfr06UPJkiVNel3podfrWb9+PVevXmXDhg2f1W4XU67fYm2XfwkLC6Nzx454enjw+5Qp1I+KYr2FBbesrUmytOSxhQWPLSx4YWnJQ2tr/rKwoHNcHOvmz6dEiRJUrliR+vXr4+TkxLhx494KPODlH2duusC+HovRoM6S9iUSCdZ5q1Cw9M+4l5+La9nfyFdkeFrgAWCRpyRazcvFXCKR6NO2e/duIiMjsbCwoGLFijRp0iTd53777bdo1XE8j/zrg8dZ2nrjWXkjnpXXsXffCUp7l+Xy5cvvPd5oNNKpUyfOnTvHoEGDsiTwgJefpz179sTHx4cePXpw+PDhLOnnUycGH68IgsDSpUspU6oUZ3ftYq5CQaSlJX4WFnRXKCghlSL9xyMJiUSCl1RKB4WC2RYWRFhYsM7CgsQrV9BpNBQpUuS9u3ikUimGV7Mmr71eSZ2cnIxarX7r+1np9UptiTTnHgO9vsNJTU3NsTGIRCLzWLRoERUrVuT06dMMGWJanaeiRYvSqHFT4sOWp+t4B9eOFK0bjMboTp069QgKevfj27lz57J371569eqVZYv9X3+WSqVSunfvTpEiRejRowdxcXFZ0t+nLPfcfucgtVrNl926sW3HDvopFPyuUmFn4toHlUTClwoFHeVyftFqmXHoEHdv3aL/oEFYW7+ZplylUhEXF0dAQEDalq3o6Og3Ag6ZTEbBggVxd3fHzc2N0qVL4+DgYJbX+2+pqakgkWbJI5f0EoT/f9OKRKJP2+XLl2nTpg0XL16kVq1aJp9fp3ZNzvgvSPfxCgtnClXfT+i5ljRu8gUXzp99I4fS3bt3+e6776hduzalS5c2eTzvo9fruXr1atpnuUajQalU4u7uTvXq1enUqROzZ89mxIgRrF+/3mz9/hd89sGHWq2mdYsWnD5xgu0WFrTN7MIjiYRfVSpayeW0jIxk4dy5DB05EmtrawRB4O7du0RHR/P48WPCw8NxdnbG3d2dKlWqYGNjg1wux2AwkJSURHh4OI8ePeL8+fP89ddflClThlq1alGsWDGzXqQjIyOxsPZAIpGZrU1TGfUva7r8O1ATiUSfnqSkpLTHuRYWFiafb2FhgcFg2iyoTGGLZ9UdPDhTmx49exHgfxqZTIYgCPTt25c8efLQsmVLk8fyPjdu3GDLli0kJCRQp04dhgwZgp2dHYmJiezevZt169Zha2tLhQoV2LBhA127dqVVq1Zm6/9T91kHH4Ig0PPLLzl94gT7VCrqm3EdRjWZjFMqFXViY1m6eDEdOndmy5YtaQFHx44dqVSpUrremGq1muDgYM6cOcOiRYtwdXWlW7duuLmZZ2vso0ePkCrM01ZGpSZeI4+tPQULFszRcYhEoszLkydP2kzu48eP8fLyMun8J0+eIFfam9yvXJkXl/JLuXCmIXPmzGHcuHGcOnWKM2fOMHDgQLMltAwODmb9+vU0a9aMGTNmvFXH7Ouvv+bWrVt8//337NixA2dnZyZPniwGH//wWc9xr1mzhr+2bWOdUmnWwOO10jIZBywsCA8PZ/bs2ej1eoYNG8a3335LrVq10n1HYGFhQc2aNRk/fjwjRoxAEARmz57N/v370ev1mRqjXq/n8ePHQM4m90p9fpFKvr5ikjGR6D+gSpUqnD9/HkdHRzZs2GDSuXq9ng0bNmOZt2GG+rZxrEG+wiOYOPEHQkNDWbBgAQUKFHjn4v+MCA0NZePGjfTo0YOdO3e+t4BqyZIl+euvvxgwYACxsbEEBgYSHBxsljH8F3y2wUdkZCSjhg+np0JBhyzMt1FJJuMnpRKJINClSxeKFSuW4QusRCKhSJEijBkzhsaNG3P48GHmzZtHcnJyhsd39erVl3cohmcZbiOzBMGIJjGYypXfnQNAJBJ9WoYOHcrVq1fJly8fK1asICkpKd3n7t69m+joCJwKfbw0w/sUKPU/kFjy22+/sX37dqpXr262G5tjx45RtGhRli1bhkz24UfVUqmUBQsWUK5cOVQqFQsWpH8dy3/dZxt8fP/dd1hqNPyZDXVlvlMqKSOXs3v7drO0J5fLadasGaNHj+bp06fMmzfPpDf3PwUEBODt7U1K4l1Snl8xy/hMlRR7DHVylFmfx4pEopzTtGlTvLy8uHPnPikpakaPHp2uMvSxsbGMGfMNtvmqY2Wf8QyhMrk1dm5fsXLVWoxGI5UrV85wW//0/Plzrl+/zsiRI9OdmEwulzNq1Cg0Gg1r1qzh66+/5tChQ2k7Yz5Xn2XwERsby6aNGxkrleKQDdP8ComESXI59x89IiIiwmztenh4MHLkSJKTk1m8eDFqtWl5OqKiorh37x4TJ07E2dmFZ6F+ZhubKZ6F+lG6dNkMrYoXiUS5j1QqpVOnThiNegqW/pXly5czePBgdDrde88JCwujbt0GRD95gatP5qtbOxYaQGrKC+zt7bGyssp0e/ByrYdKpfpgvap36dKlC3ny5MHJyYm1a9fStGlTihUrxuzZsz/bbbifZfCxYsUKJEYjfbIxvXkruZyCMhn+/v5mbdfZ2ZkhQ4YQGxvLdhNmVgRBYNeuXbi5udGxY0eGDBlIQuRG9JpYs47vYzTJ90mI3sOIEUPF9R4i0X9IZGQkNnl9yV9sNO4VFrN02XLc3Dz56aefePDgAXq9ntTUVPz9/fnyyx4ULVqM0PBEClU/iMq6UKb7t7AphoWt90cfjZji+fPneHl5pZXKSC9LS0uKFStG4cKF+eGHHxg1ahQODg5MmDCBQoUKsXLlynTNDP2XfJa7XTatW0cHmQzHbLzYySUS+stkzAoOplOnTmbdKuvi4kKbNm3YsmULPj4+6VpYde7cOW7dusWBAwdQKBQMGTKEOX/MJfLaGDwrrTXb2D5EEIxEXhmKi4ubyXcSIpEodzt/PhgLu5d1wBw9e2PlUIWnDxczfcYcJk+e/MaxVraFyVf8F/J69kKuNF8+IyuHymgTdputPb1en+GbJJlMhtFoRCKRUKhQIQoVKkTbtm3ZvXs3ffv2ZevWrSxduhRXV9c3zhMEgUePHhEUFMSdO3dITU1FKpWSJ08eypYti6+vL05OTuZ4ednqsws+1Go110NCGJQD6c1ry2RMTk0lNjb2raqOmVW9enWuXLnC5s2bmTBhApaW708YFhcXx65du+jbt29avYX8+fOzaOF8unfvjl3B9ti7tjPr+N7lWegyEmNO8vfhw9jY2GR5fyKRKHu8ePGCBw/u4OYzJu1rlralcS8/F0PpX0l6ehK99hkSqRKlpRvWjjWRSMw/EW9lX5HIsDXodLpMF49LTk7m5s2bCIJgcnsGg4FHjx5RpkyZN76eJ08eunfvTvny5dm6dSvly5fn4MGD+Pr6cunSJRYtXMi2rVt5lpAAQF65HGupFAGINxjS6osV9vCgZ58+DBgw4K3gJbf67B67XL16Fb3BgK8Zp+LSq+KrPs257uM1iURC165dSUpKIiAg4L3HJSUl4efnh5OTE7Nnz37je127dqVN23ZEXRuOOumu2cf4TynPL/L45ncMHDiQRo0aZWlfIpEoe4WGhiIIAhY2xd/6nkyRB7uCLXH07EVe927YONXOksADQGVTHEEw8vz580y1k5yczPz589FqtSQmJrJz506Tzj9w4AAxMTGUL//uRbTe3t5888035MmThzp16lC2dGkqVqzI/tWrGZSayh5LS6KtrXlmaUmYSkW4SkWipSV3rK3ZaGFBw+hoZk2ZgqeHB127dCEyMjJTrzc7fHbBx82bNwEomwNpvB0lEgrK5a/yapifg4MDPj4+BAQEvHMldWJiIosXL8ZgMHDkyBHs7Oze+L5EImH5sqUU8nQm9FxzNMn3s2ScqQnXCD3XCh+fMvz+++9Z0odIJMo5rxe/S2TmWeiZUdJX/X9ooevHaLValixZwosXLxg1ahRFihRh3rx5Jq3RmD9/Ph4eHnh4eLz3GGtra4YMGUK+fPm4ffs2c5VKHqpU/KpS0UIup8C/rllSiYRiUildFQr8LCyItLTkD4WCU9u3412yZK5fR/LZBR/JycmopFIscmhxo51EglarzbL2a9WqxbNnz7h169YbX3/w4AFz587FYDBw4sQJihd/+44EwNHRkaNHD+HqbMkD/4Ykx50z6/gSYw7zMKAxpUt5cfDAPvFxi0j0H/T/a9py+uKX+ZpRe/fuJTo6mkGDBlGgQAHq1q3LqVOn3po5fp+FCxdy4MAB6tat+9H1IiqVikGDBuHk6MhKo9Gkn56dRMJwpZIbKhVtNBr69u1L927dsvR6kxmfXfCRGyLBrByDp6cnLi4uBAYGAi+j9u3btzNv3jyKFi1KQEDARwsrubq6EhBwmnJlvLh3ugGR17/DaGKdhX8z6BIJvzyUBwGtqFO7CidPHCNv3ryZalMkEuVOr2s0GXQJOToOgy4RIMPrPR48eMCpU6do3rw57u7uAJQrV47GjRszbtw4fvzxR1JSUt55rlqtZsqUKQwbNoy6devi65u+JIpWVlZ069mTKwYDMzIQODhIJKy2sGCLhQXbtm6lQ7t2mZr5ySqfXfBhbW2NxmhEk0NBSKIgmK2+wLtIJBKKFSvGo0ePOHr0KDNmzODcuXPMmjWLM2fOpLvGQv78+QnwP8306dNICFvIvZOVeRq6DIPetGRmeu1zYu/P5+5JX1JjtrB48WIOHTqAra1tBl6dSCT6FBQuXBilUoU68VqOjiM18RpSqTxDFcF1Oh0bN27Ey8uLunXrvvG95s2b06JFC3799VdcXFwYM2YMJ06c4NKlS5w8eZLx48fj4uLCjz/+SJMmTWjbtq1JfXt4eNCwUSN+0em4/o9q56bopFCwS6Xi4IEDDOjXL0NtZKXPbrfL67v+a0YjlbJ50WmcIBCl19OwQIEs7cfd3Z2TJ09y4MABunbtysSJEylRooTJ7cjlcsaPH0+rVq0YP/5b9u0byZOQ77Fz6Y6NU10s7SugtPJ8YypREAS0yQ9IeX6RF7FHSYjcjGDUUqdOHf788w/KlStnzpcqEolyIaVSSZky5XgYezFHx5EaHwwZfMR+6dIlYmNj6dev31uPbSQSCY0bN6ZChQoEBASwdOlS5syZk/Z9a2trqlSpQo0aNciXL1+G+m/atCmXAgOZmZzMmgxeq5rK5SwXBL5au5aWrVvTsWPHDLWTFT674KNcuXLIpFKCDIZsDz6CX0Ww5qpG+z6vpwc3bdpE+/btM91eqVKl2L17J48ePWLJkiUsXbaS0IeLgZdlrGXKfEilSoxGDXr1E4yGl7VmZDIlCinoEDhx4jjly5enaOHCVKpSBV9fX6pVq0aNGjXMmvNEJBLlDlWq+HJ741EEQciRBIKCIKBODMRo0BESEvLeAnDvc+bMGUqWLEmBD9wsOjk50bp1a5o1a0ZcXBwajQaVSoWDgwNKpTJT45fL5dSoU4fNu3cz22jEKYOfkz3kcnYoFAwdNIi6detmOBgyt88u+LC0tKRMqVKcvn2bjJctypgzBgOWSmWW//IdHR0BMlzv5V3UajWnTp3i+LFjPI19jFwmw83BEXsLS/JYKnGwsqaArSvOthXwcfOivLsnTjYvH60YjEbuxkRzKSyUyxGhXAm8yK7t20nRaChauAhDhg2ld+/e4hoQkeg/pHXr1ixevJiU+AtY562a7f0nPT2FOimcokWL4u/vb1LwERYWRlhYGP3790/X8QqFwuy5m+BldeD9e/eyQqdjfAYf10skEhYqlZROTGTSpEm5prjdZxd8AHTt0YOfJ07kmSBkW5ZTvSCwzGCgfOXKWX6nL5PJkEgkJtd6eZcHDx6wZMkSli9bxrO4OOqXLMP6fiNpVKosKnn6FnHJpFJKFnClZAFXulWpCbwMSC6E3mOl/3G+m/AtE7//nq7dujFs2DAqVaqU6XGLRKKc1bRpUzw8CvEsdEmOBB9xoX4UK1aSCRPGMWDAAJ4+fZruTKCXLl3Czs7uo4vzs5qNjQ1ly5Vjw7VrjM9EO85SKcOlUmavXMn06dNNTg+fFT7L+e5+/fphlEpZlY0rgPfo9UQZDNlSPE0QBARByFRNg+TkZEaMGEHRokXxW7CALmUrE/T9dLYPHkeLshXTHXi8j0wqpXrh4vj1HMSN//3O+EatOLp7D5UrV6ZlixafRJIckUj0flKplOHDh5AQ9Tfa1Ox9P2uSQ0mI3smIEUPp1q0bTk5O7Ny5M907DcPCwvDy8soVj4QLFynCDb0e9b/GLggCJ/V6Fmm1/K7VslSrJeQDi1MHKBSkqtWsW7cuq4ecLjn/k80B+fLlo0vXrvxuNBKfDbtedILAJL2ewp6eWb7eA0jb153RSo4nT56kXJmyLPdbyuTWXbj5v9lMbdeNovmzZqFsvjy2jGnckssTZ7Kq91CC/M9Sxtub1atX59jWaKPRyLlz59ixYwfbt2/H398fQwZXnYtEn6v+/fuT18GBqKsjsu29LAgCUVeH4uxcgN69e2NlZcXixYu5du0aFy9+fAGs0WgkIiIibe1cTnN3d0fPy00SAMmCwDytltIaDfVSUxmh0/GzTMYgrZbSKSk0UKv5W6d76+ftJpXSXC5n0/r1OfAq3vZZBh8A06ZPJ0WlYrRGk+V9TddquWYw0C6bVhpHRUUBpKvA3D+9nu2oV68ezjIlZ775meH1v8BKmXVbg/9JJpXS1qcK58ZPpkkxb3r37k2rli3TXk92iIuLY9asWRQrVozq1avTrl072rdvT61atShcuDDTpk0jJiYm28YjEn3KHBwcWLZsCc+j9xEfviFb+nz2aDkJT46xcuWytMcL7du3p3Pnzmzbto2EhA/nHnn27BkajSbXBB8uLi7IpFKCDQYeG43U0WgYo9dTtnVrjh8/jk6vJzE5mdTUVDZs2ICuUiU6qtX00mjQ/isAqSWRcPHixXdmwM5un23w4erqypy5c1mj07EtCx+/BBsMTNbpaNioUbb9MYeHh6NUKk1aYHXt2rW02Y5p7bqzd9gEiuTL2i3B7+NgbYNfj4Fs6D+KIP+zeJcuze7d5qtM+T5BQUGULl2aiRMnUqNGDU6dOkVMTAyxsbEEBATQsGFDfvnlF0qVKsWZM2eyfDwi0X9B69at+fLLHkTfGENqwvUs7Svl+UWe3PyWfv36pRXNfG3BggXY2tqydOnS9yYGg5dF8QDs7e2zcqjpplAoyGNpSZgg0Fir5bGDA4FBQWz56y/q1auXtpNIpVLRrVs3TgcEsHHjRjYLAv00mjdmQHxlMpJSU7lz505OvZw0n23wAdC7d286tGvHl1otJ/V6s7d/y2DgC40GF1fXt94IWSkiIoKyZcumO6vf+fPnqVunDtZ6I2e++ZkhdZvkimedzctU4Nz4ydTwKEK7du1Yn4XThVeuXKFBgwZ4eXkRGhrK2rVrqV27Nvny5cPJyYnq1auzYsUKwsPD0zIcnjtn3tTzItF/1YIF8ylVojCh51uiTgzJkj5SE67y6Hxrypf35o8//njr+05OThw+fJjk5GQWL1783t2A+lfXgsysmTM3hULBAb2ecJWKw8eP4+Pj88Hju3btypp161in07H5H9e2cq8+11/XOMtJOX+FyUESiYR1GzZQq25dmmm17DZjAHLBYKC2RoPS0ZGBQ4Ygl2fPxiKtVktISAj169dP1/GnTp2iYYMGlHDMz+6h43NstuN9HKxtWNN7GF0r1aBnz574+fmZvQ+DwUD79u0pVqwYR44coWDBgu891snJif3791OpUiXatWuHJhse24lEnzo7OzuOHDlI0UL5eRDQiBexx83afuKTwzwMaELJEh4frBnl7e3NsWPHSE1NZd68eYSGhr51zOsbr9xQiuM1g8HAdUFg9Nix6d6B06VLF+rXqcOCfzxisX01S5KcnJwl4zTFZx18AFhYWLB73z6atmhB69RUBqjVJGbij04rCPyo0VAjJQUbFxeGjRqVVucgO1y+fJmkpCQGDhz40WMDAwNp0bw5ldwLsW3QWOytsm+cppDLZMzr0ocBtRoyePBgs8+A7N27N21LcXoK3VlYWLBs2TIeP37MX3/9ZdaxiET/Vfny5eP06RNUq1qO+/7NiLgyyuRyDf9m0CUSfmkID86mv2bU68rfHh4ezJ07l127dr1R++R1+YvU1MzVszIXQRBIVqvRAwMGDDDp3KEjRnBGq+Xqq8Xyr69sOZH07d8+++ADXl5Mtu3YweLFi9kkl1NGo2GRVssLE4IQjSCwXqfDJyWFaTodjb/4ghGjR2dr4AEQEBBA48aNKVas2AePCwkJ4YumTSmVvyDr+47ItkWlGSWVSpnerjvdKtekV69e7Nmzx2xtL1y4kCpVqpiUX6REiRI0bNgw1yTsEYk+BQ4ODhw/doR58+aRFL2WeycqEnt/AXrtc5Pa0Wvjibk3l7snKpIauzWtZpSdnV26zn9dZHPq1KmcOXOGGTNmcOzYMZKTk3F2dkYikeSa7f7Pnj1Do9PhXbo0rq6uJp3bpk0blAoFJ18FH69vrDO6E9KcJEJumlsCEhMTsbOzIyEhIUeKjz169IhxY8awfccOLCUSvpRKqSuT4SuTUVQiQfoqYhQEgTBBINhgwN9gYK0gEKvXIwVatWmT7sce5nTx4kXWrFlD4cKFKVmyJF5eXpQpU4Z69epRvHjxtGeYOp2OKpUqkxr7lIMjvs+1Mx7vojcY6LlyPuciHnLj5s0PPiJJV3t6PUqlkrlz5zJ8+HCTzl2zZg29evUiPj4+1yxOE4k+FRcuXGDs2HH4+/sjkchQ2pRCaemGwsodhYUrcqU9lnblsLQth0RmgSbpLinPg0mKPU5i1F+Ano4dOzJ9+jQ8PT0zPI6QkBCmTZvGpk2bMBqN+Pj4cO/ePby9vencubP5XnAGXbp0idWrV9OiRYsM3XQ5OzoyPCmJH1UqDuv1NElN5fbt2xQvXtzsYzXl+v1ZZjj9EE9PT7b+/TcRERH4+fmxftUqloSHA2Alk2ErkyEBkgwGXryKJgvmy0e3bt0YPHgw3333HcePH6dy5crpmsLPrKdPnxIQEMCNy5d5EhcHvMxKGvbgAUbg9dM+C4WCalWr0mfAAO7evcu169c4+vVPn1TgAS8fwczv2pdqM39g8KBB7Ni5M1NTiAkJCQiCgIuLi8nnvj4nLi5ODD5Eog/Q6/UcO3aM8+fPExwURHBQEBGvttBbqVRYKpQoJeHItJFoUs6QqteTpFFjeLVeQSGTozO8XJPn5ubJ2J9/oF+/fmZJaV6qVCnWrFlDvXr16NevHxERESQkJLxzPUhOCA8Px0omQ8jg9tiU1FSsX31GBhsM5LGyomjRouYcYoaIwcd7uLm58csvv/DLL7/w7NkzgoODuX79OklJSRiNRqysrChVqhS+vr5vXLgWL15M6dKl2bZtGz179syyZ2sRERHs27OHkFu3sJNK6SKTUc3CAl+plJJSKQqJBEEQeA5cMhgINhrZf/Ysvc6cQQ5ULlSM4s6ZmzXIKY42efi9Q0++WjmfDRs28OWXX2a4rdfPd18nZjPF68WmFhYWGe5fJPovi46OZunSpfgtXkJkdBQO1jaUd/OkYykffJq0xcfNC0/HfO/8nNTq9dyMjuBKRCiXw0O5GB5KSHQEERGP2LN7Nx4eHnTs2NFs77/k5GSUSiXfffcd586dY9OmTcTExJA/f36ztJ8RRqORy8HBFBEEzgUEkJqaiqWlZbrPDwoKIik1lRKvzjktCPj6+uaK3Yxi8JEOjo6ONGnShCZNmnz02AIFCrBgwQK6d+9OwYIFady4sVnHotfrOXz4MEcOHaKYTMZyCwu6yOVYvePNK5FIcAAayOU0AL5RKrlrNLJIq2VR6D1qz/iB+V8OoHph80+/ZbXW5SvRoWJVRgwfToMGDShYsCCCIBAUFPTy7io4mAuBF3n69Ck6rRaFUomTkxOVK1XA19eXqlWrUrlyZaytrXFycuLcuXN07drVpDFcuHABGxubtEJ+IpHoVdrvkydZuGAB23fsQCmT0blidXp3H0h5N89035Ap5XJ83L3wcfeiV/WXX9Pq9Ry8eYUVAcfp2bMnX48eTb/+/Rk0aBCFChXK1LhTU1PT0hP4+vqye/du/P39adeuXabazYyQkBDiEhJYamFBh4QEtmzZQq9evdJ9/qKFC/FQKPhCJuOR0cgBvZ5FPXpk4YjTT1zzkUUmTZrEzz//TOvWrWnQoIFZ2kxMTGTZ4sVERUfzvULBRKUSZQZnVm4bjfTVaDir1/N98/aMa9wqV6yANsWzpBdUm/kDVWrVoukXTZk3byF3795CKlNgbVcGZZ4KyC0KIpWpMBo06DWP0b64RPLzaxgNOooVK8nw4UN48OABq1evJjIyMt0LsXQ6HR4eHrRr146FCxdm8SsViT4N9+7do2+fPpw+c4biBVzpV6MeXSvXxM7S/Asc78U8ZoX/cTYEnSEhJYXRo0czZcqUDC+m/P333/nxxx+ZNm0aQFrw8fPPP6fNkGa3RYsWob93j3tWVnyhVhNZtCjng4LS9Rrv3r1L+bJl+UEQ+F6lYqJGw3yFgsjHj7NsSYC45iMX+N///oder+fXX38lPj6eVq1aoVQqM9xeQkICC/78E2lCAuctLamYyQQ4JaRSTllYMEWrZdK+bbxQp/Jzq86fVADiaJOHqW26MmDtEvbu24fKugjWeUohMagxpj5FozmJztIDCwdfrOwrYu00CIUqP0ajluRn/jx9tJyvvx6LQqFAq1WzdOlSRo0ala6+161bx+PHjxkyZEgWv0qR6N00Gg1nzpwhNjYWmUyGq6sr1apVy5EpdaPRyLx58/ju229xzmPHX4PG0LBk2Sz9PCmavwBT23XjhxbtWXbmKFMXLGDPrt2sXL2KmjVrmtyejY0NGo0Gg8GATCajRo0anDhxgkOHDtGqVasseAUfdvv2bW7fvs34V7Mx0xQKat25Q6cOHdj6998fDEBCQ0Np1rgxHkYjQ1QqooxGFhqN9O7XL1vWIqaHOPORxebPn8/YsWNxcHCga9euGZoaVKvV/Dl7NpJnzzhtYUFhM3+4/KnVMlqjYVLLToxu1MKsbWcVvcHAgRuXWXbqMCfu3QLAS6akssSIm0SCQiJBIwjcEyDQCDFGHVKJHDuXdjgWHox13hpIJBJ06mie3PmNpw8WIpPJ2LlzJy1afPhncOLECZo1a0b79u2zNOuqSPQuYWFhLFmyhGXLlr1VZ6hIkSIMGTKEPn36fDTfhbn8c7ZjQO2GTGrZGescmCm4+ySaYZtWEBh6L0OzIKdOnaJu3bqMHz8+bR3f4cOH2bdvH6NHj87UjhpTqdVqpk2bRmJiIo8sLXF/dbN5SK+nnVZL0ZIlGf/dd3Ts2PGNWZlnz56xcuVKfps2DZsXLziiVOIlkdBKoyHY3p4bt25l6d+FKddvk4OPU6dO8dtvvxEcHEx0dDTbt2+nbdu2wMup6B9++IF9+/bx4MED7OzsaNSoEdOnT0/3boL/WvABL5/b9e7dm8DAQCpXrkzt2rVNqvOyefNmrpw/T5CFBaWyKOXv9xoNM3U6jo75Hz7uXlnSh7kEhd5n2Ho/bsc+oZpczlC5nFZyOfYfuMuKMhrZrNczT2fkoVGHrVMdXCv4obL2AuBFzHEeBXbCaEjhu+++Y8iQIW/tqX/y5Al+fn5MmTKFOnXqsHv3bnGxqShb7dmzhy5duiCXy+nVqxd9+/alcOHCGI1Grl27xpIlS9i6dStOTk7s27eP8uXLZ+l41q1bx8ABA3DOY8f8Ln2oVbRklvb3MQajkYUnD/Lr/u24u3uwa89uSpZM35hevHiBnZ0dXbt2pWrVqi/bMxj4448/0Gq1jB07NlOz16bYtGkTQUFB5DEaeWZl9cYM0kWDgfF6PUe1WvI5OFC7fn2sra159vQpR48cQTAY6CyT8btSSX6plGVaLQM0Gnbu3Enr1q2zdNxZGnzs378ff39/KlasSIcOHd4IPhISEujYsSMDBgygfPnyxMfHM3r0aPR6PUFBQWYf/KfEYDAwb948Zs2aRWRkJF5eXlSuXBlPT08KFiz4zjoCBoOBc+fOsXXrVhaqVAzJwj98nSBQVa1G45iP49/8gkqevrow2Umj1zF133bmHd+Pr0zGQqWSSiYGY0ZBYK/BwBCNnifIKFD2Nxy9+iORSNBrn3P3ZDX06pdbq1u2bEnJkiWRSCTcu3ePnTt3IpfLGThwIDNnzsy2DyKRCODgwYO0aNGCli1bsnbt2rSKrf8WGRlJmzZtuH//PgEBASZXt06vuXPnMmrUKLpVqcWsDj1zZLbjfe4+iear1QuI1aRy8NAhKlasmK7zihcvjrOzMx3/UYE8Ojqa2bNnU7x4cfr27ZvlNV+OHTvGrl27KFigAOWfPmX/e3a33DIYWKLTESIIJEul2BmN1JJK6adQkO/V7PguvZ72ajX9+vdnSRaUpvi3LA0+3jhZInkj+HiXwMBAqlSpwqNHj/Dw8Phom//V4OM1vV7P3r17WbBgAUeOHEEQBBQKBa6urlhZWSGTydDr9bxISiEqMhKpUU9NmYxjlpZpCc6yylWDgUqpqfzUqjMjGjTL0r5MlazR0GPZH/jfu8XPCgXjlErkmfh5JAoC32g0+Ol0OBUagmu535FIpBiNWh6d70DysxN4e5fmxYsXCIJA/vz56dq1K7169cLBwcGMr0wk+riEhAQ8PDyoXbs2O3bs+GitqOfPn1O7dm0EQeDatWtmX3sxdepUJk6cyIj6X/BL6y65cq1YXHISHf1mcy8uloOHDlGtWrWPnjN48GC2bNnCDz/88EaQERISwrJly/D29uarr77Kslpdx48fZ+fOndSrV4+A06eZLJMxPoNB3Rqdjn4aDW3btWPj5s3ZUl/MlOt3lq9MSkhIQCKRiEmYXpHL5bRp04ZDhw7x4sULzpw5w6xZs6hXrx7W1tZcu3aNsNj8JFMbB/ev0AMzVaosDzwAyslkdJPLWXbqcFpyn9xArdPSbekcAu/f5qCFBd+qVJkKPOBlgaUlFhYsUal49nARkVfHIAgCUqkSzypbsLAtS2qqlhs3bvDgwQPOnTvH6NGjxcBDlCPWrFlDSkoKS5cuTddFxN7ennnz5nHjxg1OnDhh1rHMnTuXiRMn8u0XbXNt4AGQ19qGnUO+wTu/C82++IKrV69+9JzBgwcTHx/PjRs33vh6qVKl6Nu3LyEhISxcuJCnT5+adawajYYtW7awc+dOGjdu/HJWy2ikTzork/9TrNFIZ7WaXmo1PXv1yrbAw1RZGnyo1Wq+/fZbunfv/t4oSKPRkJiY+Ma/z4W1tTU1a9Zk5MiRrFy5EksrG2zz1aBYrYN4+i5DnxqBj0xJ5WxcvT5UoeDR8ziO3rqWbX1+zDd/reXC/dvsVamoZ+Y30UClkiUqFU8fLubpwyUASGWWuPos4/79+/z8889m7U8kMpUgCCxcuJB27dqZVE6gbt26lCpVyqxbwdevX8+oUaMYUf8LJjRtk2sDj9fyWFiyqf8oPGwdaNK4MQ8ePPjg8T4+PlSrVg1/f/+3vuft7c2QIUN4/vw5M2fO5PTp0xjNcJN29+5dZs6cSVBQEJ06daJZs2acOXOGylJpWhXa9HhqNPKbVou3RsMxa2s2bdrE8hUrcmXgAVn42EWn09GpUyfCwsI4ceLEe4OP1/kw/u2/+tjlfW7dukWpUqXwrLQaB7cu6LXPuL7PDT+VkgHZuLZAEAQqqNUULevL8l45v430SMhVOi6ZjZ9KlaU/h6FqNUsNMoo1DEZlXQSAJ3dm8uTWJK5cuUKZMmWyrG+R6ENCQ0MpVKhQhhYMTp06lalTp5KUlLnqsQD379+nXNmytCnry8Ju/XJ94PFPT5MSafTnr7gUKcypM6fTHqlotVquX7/OsWPHuHnzJmFhYdy+fYeIyCjy53cmTx4b8jrY4ebmhru7O25ubgiCwO7duzlz5gzu7u7Url0bHx8fk9aACYLAnTt38Pf35+rVqxQpUoRu3brh5OTE2bNn2bx5MwD55HJ6SCRUl8moJJPhJZGk/dx1gsBNo5Fgo5HjBgNbDQYEqZTuX37J9BkzzJJ63lQ5nudDp9PRuXNnHj58yLFjxz44iO+++44xY8ak/T8xMdGknSD/FUePHkUqU2BXsA0AKc8vAoLZ7/Q/RiKRUE8iYVfovWzt910SUlMYtXE5TeRy+mdg+tEUM1Uq9qRoiAweQKHaR5FIJOQv+jXxoYtYsGABixYtytL+RaL3ef78OfAye7KpChYsSHJyMjqdLi17Z0YYjUb69ulDPus8/NahxycVeAA42diyqFs/ms+bxowZM7C3t2fl0qVcunYNgxEQXtbpkqucsbKvgINbbfQSGc9S1Tx+dp/gi3sxGrQoFCoqV/alZs2a+Pj4cOTIETZs2MCOHTvw9fWlUKFCuLu74+Tk9NbP6MWLF4SHhxMWFkZwcDCxsbEUKFCArl27UqVKFaRSKfHx8ezatYu+ffsybtw4Fi9ezNYtW5jz+DEAllIp1jIZRuCFXo9OEJBIJJQuXpxf+valT58+5MuXL5t/uhlj9ivb68Dj7t27HD9+/KOpp1UqVY5lj8tNgoODsbYvg1T2cutm6vNLWEtkFMmBN7mvTMaf8c94npKco4Xn1pw7SeyLRJb+a6tZVrCRSPBTyWkWF0DS0xPkyVcfiVSBnXtfVq/+g+nTp6e7XLdIZE6ZrT8kk8kyPfU+f/58Tp0+ze5hE7BRfZrby6sXLs7gOo35YeJEAGQSGQbBiJ1zExw8+2KdtxoKi3fPFghGHamJN0l8vJugS8sICAigSJFidO7cEalUSkBAAJcvX+b06dPAy3pPtra2KBQKDAYDKSkpaUsKLC0tKVmyJF27dqVw4cJpn22CILB582YcHByYPXs2dnZ2/Pnnn/z55588efKE4OBg7ty5Q0pKCjKZDBsbG8qVK4ePj897dz7lZib/RSYlJXHv3v/fFT98+JDLly+TN29eXFxc6NixIxcvXmTPnj0YDAYev4rY8ubNK25N/IBz54NQ2lRO+7868QblpLJsWWj6bz6v1piEPI7MsbovRqORFaeO0EkuxyOb1rw0lckoIVMS82AxefLVB8DJqx8xd6ezYcMGMZupKEe4urqiVCo5e/YstWrVMuncc+fOUahQISQSCQaDgdOnTxMYGEhwcDCBgZeIj49Dq9OiVKrInz8/VSpXxNfXl2rVqlGlSpW0bebfTpjAgNoNqV0sa7btZpeulWqwwv8kGr0We6+B5Cs6EpX1xxM/SqQKrOzLY2VfHufiE0iI3k3krR+ZOXMWLVo0o1WrVrRp04akpCTCw8OJiIggKSkJvV6PTCbDwsICFxcX3NzccHR0fOtmShAEdu7cya1bt9i/f/9bNzrOzs40b96c5s2bm/XnkZNMXvNx4sQJ6tev/9bXe/XqxaRJk96bwfP48ePUq1fvo+3/17favo+FpRWORX8hf9ERADw414G6sQfYlcE6BZkRbjTikZzMX4PG0KhUuWzvH+BoyDU6LPkdfysramTxvvp/WqDVMkKjo1TTuygtXyYZu3+mHi0bF2LDhg3ZNg6R6J969uxJQEAAd+/eTXf69GfPnuHq6sq4ceOwsrJi4cIlREaGIVdYY2VfHmWeCigsnJFIlAhGDdrUCLQvLpHy/BoGg4bixUsxfPgQNm3cSOTd+/h/88snO+sBsOPyBQasXYrc0gO3CsuwdqyeqfaMhlSiQ34m9t6fFClSjAED+mYo6aAgCOzZs4ejR48yb948hg8fnqlx5aQsXfNRr149PhSv5LJs7Z8EQRDQatRI5Zb//GKOPVd93asxB3+Xx25fx1Mup3o216noplAwXKMh6elJ8rp3B0BlW5Hz549k6zhEon8aOnQo69at46+//qJz587pOmfOnDno9XpmzPwNQZBi59qFYnX6YeXgi0Ty/oBeMOpIenaGmId+jBr1NYIg0L9mPawUn+7M9cYL/gzduBx71064V1iMVJb+svTvI5VZ4lpmOnYFmhN6viPz5y9i2LDBJpW8T01NZdu2bQQGBjJ79uxPOvAwVfZXIBKli1RuRYKQM8FH0qugwzIHP2wuhz2kMmR7AJZXIsFTpiT1+aW0r1nZV+DBgzskJCRk61hEoteqVatGmzZt6Nu3LwEBAR89furUqfw6dTpGIzgW+ppSTR7gUWEJ1nmrfDDwgJePGPLkq49XlY2UbnIXR68+LPM/RquFvxH6LNZcLynb7Lt+iaEbl+Pg3hMP35VmCTz+ycapDoVrHuZxTDx+fsvQ6/XpOi8kJITffvuNkJAQ1q5dy9dff23WceV2YvCRC0gkEiwsrDDq/n87nMqmONeFnJlJuv5q73px5/TnFDAno9HItYhH+OZAdU6AKhIjmvgLaf9XWRcFICIiIkfGIxJJJBLWr19PxYoVadiwIVOmTOHJkydvHXf37l2aN2/OxIk/YJmnBMXq+lOw9M/IlRkrJqawdMHdZwFFau7jYlQSNWf+j7MP7mT25WSbJ4nPGbx+BbYFmuNeYSESSdZ8pljZl6dQtV2Ehj7i4MGD7z1OEATu37/PqlWrWLJkCRUrVuTGjRv06NEjS8aVm+XO7COfoeIlShL27Hra/63sK/LQqCNCUOKezXf/QUYjLnlscba1z9Z+X0tUp5Ko1VAkh4q2FZNK2ZsSlvZ/yas7pdTU1BwZj0gEL5MSHjp0iHHjxjF16lR++eUXWrVqRaFChTAYDNy4cYPDhw8DEuzdOuBRcQVSqXlmL/Pka0DR+sE8Ot+Btgt/Z9uQMdQsUsIsbWcVQRAYvWUNaqOS4j6LPzrjk1nWeavhXOI7jhz5lXLlyqWljNBqtURGRhIaGkpgYCBRUVEULVqU5cuX06dPn09u27K5iMFHLlG1ii/3t/5/Vj1L+woABBgMdMnmGYAAo5HyHoWztc9/0hpeTlta5NCb0gIwGjX//wXh5Xhya6ZA0efDwsKC+fPnM3nyZFatWsVff/3FtWvXkMlkWFpaIpXKsHftjHvFZWa/2MoUtnhV30XoubZ08vuDo6N/oFRB14+fmEN2XQli//WLeFXeiFzllC19Ohcfz/Oo7cxfsAhPDzeSk5OJjo7GaDSiUCho2bIlw4YNo0GDBp9t0PGa+Ngll/D19SX5eQgG3QsAlJau5LGvxFJ99tZYuW00clqvp22FKtna7z8ppC8/NPU5tOBVB0gl/5+QSa+LB/gk99KL/pscHBz4+uuv8ff3586dO5w7d44nT55i41Qb9wp+WXaXL5VZ4lnlL1B5MHD9MnSG9K1vyAl/HDuAbf762Lu2y7Y+JVIFbuX/RKNOwdnZmZYtW7Jo0SKCgoJ48eIF27Zto2HDhp994AHizEeu0bRpU0DgeeQWHL36AeBQZChHg/tyx6igeDbNfizWanG0tKJN+UrZ0t+72FhYoJBKicqh4CNaEJCq/v8ZeWrCVSwtrfHy8sqR8YhEHzN27FhinsZTvN4SJFLzZAMWjHoSHu/hecRWjLqX60ukygLYu3bGxWcx1083ZO6x/Yxt3Mos/ZnT5fBQLoXdp1DV6QDotfHEha0lKfYYGJ6D1BKFVVEcvfphZe9j1r6t89bAxqEcdnYOLF682Kxt/5eIMx+5hKenJ82btyT+kV/aIlN7l/YoFfb8nIHMhhkRYTSy3GCgZ416WOTgTheFTE4pZxcu5lBl3fNGCUqH/0/4lvr8Ej4VKrxRYlskyi38/f1Zvnw5BUpNQ2nlmen2BEEg5t5cbh8tQeiFrhQuGEarJp60bOyBV/6HhF7oTOTFr7B2qsfUfTty5Q6Y5WeOYWHlinXeGoRfGsqtQ4WJuTWR6j7QtnlxvqiXD6VmP3dOVOP+6bokPT1ttr4lEgn2ngPZt28P4eHhZmv3v0YMPnKR4cOHkhR/heRnZwCQyixwLjOTDTodu9O5fSujBEFggEaLjZUNoxu2yNK+0sPHszDBOTDxoREEQgw6LO0rAiAIRjQJF6hS2Tf7ByMSpcOff87Fyq44jl79M92WIBgJvzSQqOvj6d6lKZcuXSI46ALr1q1j/fr1XLoY9LL6avsGJMUeQ5DIWHHmmBlehXkdvXML63xf8PBsE7Tx25g0aSIREeEcOLCf1atXs3nzZsLCHrJ9+3ZKFZHw4Gxz4iO2mq1/e5eOGI1GTpw4YbY2/2vE4CMXadKkCT4VfIm+PhKjQQ1AXo+e2Dk3pZ9GR2wWzgQs0+k4oNfxR7e+OVrP5bWqhYpxVa8jNJtnPw4ZDOgRsHGsAUBS7HFSk8Lo0KFDto5DJEqP6Ohotm3bhoPHILOsI4i+8QPx4etYt24dy5cvx8fH561jfH19Wb16FStXrsRo1LLk9FHUuuyZnU2PuOQkouJjSIk7hrUyjvPnApg4ceJbVV7lcjlt27blzJlTdO3SmfBLfXkRe9IsY5Ar7bG2K0JwcLBZ2vsvEoOPXEQqlbJm9Uo0Sfd4fPtX4OUUnqvPQhLltjRWa0nIgnUQe/R6hmq19K5Wl6bePmZvPyPa+lQhj1KFn06Xrf3O1+nJY+eDpd3LtPLPQv0oVaqMyTU1RKLssGrVKiRSJQ7uX2a6LU1yKDH35zB16lS+/PLj7fXu3Zuff/4ZrUHH2nOnMt2/uVyJCAVAk/yIAwf2UqrUh+vRKBQKVq1aSdUqVXgS8p3ZcispbCpy4YIYfLyPGHzkEklJSdy/fx+FQsG4cWOJvfs7iTGHgZc7X7xqHuCmxII6qVoem3E2YItOR3u1mqbePszq9JXZ2s0sa5WKbtXqsMxgIDWbFp7eNRo5pNehR8Ktw8W4utuO51E7uXv3Fo6OjtSpU4cxY8awfv16oqKismVMItGHnDp1GmvH2siV9plu69mj5dhY52HEiBHpPmf06NFYWFiw4cKZTPdvLg9inyCXy2nRohUVKlRI1zkKhYKJE78jKe4iKc+DzDIOizwluXP3rlna+i8Sg48cJAgCAQEB9OjRA0dHR4oWLUqpUqWYPn06Dg72hJ7vQGLMUQAs7cpRuPYxbstsKZWqYbNOl6kI/bkg0EetpotaTdsKVVnVZxjyXLagclDtRiQI8D+N5uMHZ5IgCAxWq5EjoYDjC6pXKUqb1s3p1KkTbdq0oXr16rx48YJ169bRo0cPPDw86NChA8eOHRPrGYlyhCAIXAgMxsKuohnaMpAQvoq+fXtjbZ3+x662trb06tWLkCfRueZ9cCfmMXq9nuHDh5p03hdffIG7uxfPHi4zyzikMivUajEx4fuIW21zSGJiIl27dmX//v0UKVKEKVOm4Ovri0KhIDw8nNWrV3Po0CHCLrQhX/FJOBcfh6VdWYo1vETklZF0jdrOermC75UKqkql6X7emywIbNTpmKTX80ImZ27XPvSsWidX7jsvnM+Z75u355c9W2mvUFAtC4OjZTodxwwGBg4cSOnSpT94bHJyMpcuXcLf359t27ZRunRpli9fTrVq1bJsfCLRv0VERBD3LIZCRTMffBi08WhSY9NVefzf6tWrx+LFi4lPSSKvdc7nwnmWlAhA3bp1TTpPJpNRv34dduw3V/p4Id0ViD9HYvCRA5KTk2ncuDG3bt3i77//pm3btm/9kXbv3p07d+7Qs2dPgoJ+Iin2OJ6V1yBX5cOzykbsIv/myPUJ7E6JoJxMST+5hKoyGeWkUiz/FUhEG40EG40c1utZbTCQaDTSokwFpnfogZuDY3a+dJMNr/8Fuy8H8mV0BP4WKgpkwZv5osHA1zod1apW/WjgAS/TXNeqVYuaNWty//599uzZQ82aNRk7diy//PJLhspqi0Smer2NU2md+WzERkMKAFZWViaf+/qciPi4XBF8SCQSpFIpSqXp6QKsrKwQjOaZrTDoX2BpafrP83MhhmU5YMiQIdy8eZPjx4/Tvn3790bHxYsX5/jx41SrVo3U+JPcOVaemHtz0WvjsXftQPEmdyhcfSePnOrztVZPtZQUbJKS8UrR4p2ipUSKFqdkNS7JybRKTWWhTscXFatx+cffWNd/VK4PPADkMhnL+wwjxdKSJhoNT8y8++WKwUATjQYnFxfatjMtE6JEIqFo0aKMGDGC5s2bM2fOHCpWrCgWoBNlC7X65Y44qSzzwa5MYQdAbKzpOTten6OUmye5WWZ5OebHaDQSHx9v8rmxsbFIZLZmGYc68TplvD9+M/O5EoOPbBYREcGGDRuYNm0aFSt+fLrUysqKrVtf7j8vU9qTJyHfc+tQYcIvDSYhejcWeUrhVW0HZVrGUbyuPy7l55JSaCiP3XrwxLkFmrw1UVq+3GImV6p4lpyER97sqXNgLl6O+dgx/FtiLSypqdYQaDCYpd1tOh111GqsCxRg4JAhGZ6xkMlkNGrU6GWWyZgYatSowcOHD80yRpHofV7XGhKEzAfkUrktNnl92Lhxs8nnbti4CZlMho1KlelxmEMn32pIJBK2bNli0nkJCQns3bsfq7ymPa55H+2LS1QW8wO9lxh8ZDM/Pz8sLS3p1atXus9xcXGhQ4cOJCW9IDw8jEmTJmJpOE7ohS7cPFScW4fcCT3bkMchE0iMWk9K7B7iwlaQELUN3YtzdGzXCH9/fzZu3sSRkKtsCgzIwleYNUoWcOXA6B/JU8CFaikpfKfRoMngArenRiNd1Wo6qNV4lirF0BEjTFpk9z4FCxZkxIgRaDQaGjZsSHR0dKbbFIne53WtIYM2LtNtSSQSHDwGsn//XkJDQ9N93t27dzl65DAGgwEbVe543Fjc2QVrlQVz584zaRHsmjVr0Gq1OHr1zfQYdOpoUpMi8PUVg4/3kQi5ZYnyK4mJidjZ2ZGQkICtrXmmv3KTUqVKUbNmTZYtM21F9ZEjR2jcuDGXL1+mfPnyCIJAVFQUwcHBBAcHExkZiVqtRqFQYGtri4+PD76+vpQqVQqF4v+nQ3t8+SV7d+7k7PgpFLRzMPfLy3I6g54/j+5jxoEdOAgCQxQKBigUuKZjLcgNg4FFOh2rDQYEpZJ2HTvi6+tr9sW2z549Y968efj6+nL48OFcuZhX9OlLTU3FJk8eXMr8gVOhAZluz6BP5tbhIjRuWIudO7d/tIqzTqejRYtWnDh5BgeVijuTZ2d6DObSa+UCdl4JZN68eQwfPvyjxz969IhKlatiUNbGs/K6TPf/5O7vPLv7C1FRkTg65v7H2+ZiyvVbXHCazWJjYylSpIjJ570+5/XzVYlEgqurK66urrRu3Trd7cydN48jR44weutqNvUb9cldGBUyOeOatCY64TkrAo4zE5iSnIyPVEo1mQxfmQwXiQQFoAEeGI0EGwycEwRCDAbsrK2pUbMmtWvXzrIqtY6OjnTp0oUlS5bg5+fHoEGDAHj48CEXLlwgODiYq5cv8yIhAaPRiKWVFcVLlcLX15dKlSpRvnx5cZW86KMsLS0pVaoM0c8vmqU9mdwa94qr2X+gPV27dWfd2jXvfRSZkpJC9+49OHr0KBa23vi65a5t+v9r2ZGdVwIZOXIkEomEoUOHvvez7s6dOzRp0oxktSWFK2U+gBIEAwlhS+natetnFXiYSgw+splEIsnQfnjjq4WWmb0o5c2blyV+frRt25ZNgQF0q1IzU+3lhCsRj1h97iQ//vgjY8eOZdOmTRw/fpwdx46xICbmjWMlgEIioZyvL728vSlbtuxH7+jMoVSpUlSrVo0xY8agVqvZumkT/ufOAeChVOJjNFLw1fiSAf/z51nq54dRECjs4cHg4cPp06cPTk6f1vocUfaqWsWXzdsCEATBLDcSts5N8ay0gR07euHhUYhBg/ozYMAAPDw8gJczBH5+fixZsoyExCQ8Kq0n6vJAKrg3yHTf5lQ4nzP1S5TlTGg0w4cPx89vOSNGDKVbt25YW1sjCAJnz55lwYKFbN26FYVVIbyq7UShyp/pvhMf7yPlRSjDhpm+fuZzIj52yWblypWjXLlyrFtn2tTe7t27ad26NTdv3vxouuD06PHll+zctp3dQ8dTwaNQptvLLk8Sn/PFvGnkcc5PYHDQW9vpkpOTiYmJISQkhAMHDjBv3jx69+79zhoVWS04OJhN69ahEwQaKJUMkkqpL5OR7z0BZLIgcMFgYKVez2aDAYlMxg8//cSECRPeeHQmEr22f/9+mjdvTrE6J7HOW9Vs7apf3Obpg0UkRK5Hp32BUmUBgoBWq0GhssXOtQdOhYeQ+vwSj4K+4ty3v1KygKvZ+jcH//u3aTFvGo5eA9BrIkl4vB8EAUtLa7RaNQaDASvbwti7D8TRq0/ajp/MMOgSuXfSl2qVi3P06Of3yNWU67cYfGSzmTNn8tNPPxEREWHSXW3Lli2Jjo4mKCjILH/QSUlJNGrYkLs3Q9g//DtKFHDJdJtZ7XlKMi0WzCDeqOOMvz+FCn04aOrRoweHDx/m22+/zdbHGMnJyWz7+2+CL16kuVzOLKWSUiYmSIs1Gpml0zFLp8OnXDlWr1tHmTJlsmjEok+V0WikUKGiJFEdj4orzN6+QfeCxCcH0GtiAAlyi/zYOn+BTG4DwIMzDShjF8++ERPM3rc5jPtrLavOBVCsfhAgJenpKQy6BKQyS1Q2RbBxqodEYr7PhvDLw0iN2cyNG9fw8vIyW7ufCjH4yMWePn2Km5sbP/74IxMnTkzXOXfu3KFkyZIsXbqUfv36mW0scXFx1KtTl6eRUWwfPDbX3bn8U1xyEh39ZvPoxXNOnT790WRgMTExuLu706xZM+rXr59No4T4+HgWzZ+PJj6eeUolPeTyTAWLgQYDvfV6QqVSdu7eTaNGjcw4WtGn5sGDBxw/fpzg4GAuXLhASEgIKSkpIJFTuvFNlFYe2TaW5PhA7p6szareQ2nrUyXb+jVFkkZNtRk/8Vxwo1DNQ2lBU1aIj/yLR4E9+PXXX2nZsiUqlYqCBQv+J69j72PK9Vtc1ZbNnJycGDRoEJMmTeLQoUMfPf7Zs2e0a9cOLy8vunXrZtax5M2bl8NHj+Dk6kLz+dO5FJY7c1NEJ8TTYsF0wpISOHzkSLqykG7cuBFBEKhSJfs+FJ8/f86CP//E4vlzgi0t6alQZHqWqrJMRqBSSV2jkZbNm3Ps2DEzjVb0qTAYDOzatYumTZtSpEgRBg4cyM6dO5FIJDRq1Ih27dphaWFB+KVB2VZfxWjQEHVpAGVcvWhRNvPp3bOKjcqCtb2HYEgO4dH5jhj0yVnST0L0XsKC+2BnZ8/EiRMpX748JUuWJF++fPTs2ZOzZ8/mmto3uYUYfOSAWbNm0aRJE1q2bMncuXNJTn77DSEIAsePH6d69erExsayf//+DKU+/hhnZ2dOnDpJce/StFo4k7XnTuWqN8mpuyE0mfsrLxA4feZMuqtUnj9/Hnd3d7Pk70gPvV7P8iVLUL14wWkLC4qY8TGPlUTCDqWSehIJbVq14v79+2ZrW5S7HT58mKJFi9KmTRvu3LlD9+7dmTZtGuPHj6dHjx40aNCAunXr0rNnd17EHifukfkfvbzLk9u/okm6x5Iv+6GQ5e59CxU8CrF14Ch0z88RerY52tRIs7UtCALPQpfz8HwnBKOeevXqsm3bNs6dO8epU6eYMmUKAQEB1KhRg7Zt277zs/5zJT52ySFarZYRI0awdOnStMqQFStWRKFQEBERwapVqwgJCaFcuXJs27YtQ9tzTZGUlMTw4cNZvXo1jUuX44/OvXG1z5ulfX5wPBo1k3ZvYdmZY9SpXZu169alrbhPj2LFilGwYEE6dOiQhaP8f/v37+fooUNcsLSkQhYVwEsSBMppNLhXqcLxU6fE7bj/YYmJiYwbN46lS5dSvHhxWrZs+dG//40bNxIUfI3CNQ5gnTfrZvwSoncTeqEL333RhvFN22RZP+YW/OgBXZbOJUFjpGDZ33Fw75GpmUltaiSRV4aR8PgArm5unDl9+p3rPIxGI3///Td9+/bFx8eHw4cP/2frP4lrPj4hoaGh+Pn5sXLlSh4/fgyAUqmkTZs2DB06lLp162brium9e/cycMAAkhMS+bVNV76sUivbV2yfuhvC8M0reZr8gukzZjBs2DCTLrSv/4a6d++eLY9dIiIimPP77/ygUDApi1NMn9DrqZ+ayty5cxkxYkSW9iXKGXfu3KFx48bExMTQqlUratSoka73oEajYdGiJUREPaNw9X1YOZg/u2bi4wM8CuxMizLlWdlrCLJPLACOT05i/LYNbA0OwMapHvmLjSVP/oYmLTrVqR/z7NFKnt3/A70+mYoVynP27NmP7kg7d+4cDRo0oFevXixatCizLyVXEoOPT5RWq0Wn02FlZZWjW7Ti4+P5+uuvWb16NQ1KluXrhs2pVbRklo/pZnQEC08cZN3509SpXZsVK1dmaMbnxo0blClThlGjRn10R4w5LPPzQ3fnDlctLFBmw+9tkFrN39bWRERH/2fvoD5X169fp379+igUCvr3729ykqqUlBSWLFlKRGQM7hX8sHc1z8yfIBh5+tCP6GvjaOpdjlW9h6DKJYXkTGUwGqk2YyIRiS9ITU3CMk9h7N17Y523GpZ2PsgUb153BMGIJvk+qc8vkvh4DwlR21EoFZTxLk1ISAiRkZHY29unq+/p06czadIkIiP/m5lPxQWnnyilUom1tXWO7w13cHBg1apV7NmzhyijllYLZlBt5g/4nT5CQmqKWfvS6vVsu3ie5vOnU2PGDxx5eId58+Zx/MSJDD9qel3tMzuSicXFxXHj5k3GymTZEngAjFUqefb8eVrBQdF/w4MHD2jUqBEWFhYMGzYsQxcnKysrhg4dTBnvYoQGfkloYHf0GtMr1f6TJvkh9840IfLqaPrWrMvaPsM+2cADYPGpw9x9Es3+/Xvw9/enXavqxD+czr0zTbi2Nz93j5XmwZmaPDhTl/unqnDzQAFuHSnLo6Be5Le+wezZswgPe0RUVBRfffVVugMPgH79+iEIAitXrsy6F/iJEGc+RB8kCAInTpxg4YIFbN+xAwuFgs4Vq9GsTAV83L3In8f0xDyJ6lSuRjzixO0brLlwmpiE59StU4ehw4bRtm3btxKHmerixYv4+voyduxY3N3dM9XWx+zdu5dzR48SbWWFdTYGjU3UahLLl+dcYGC29SnKOnq9nqpVqxIREcGIESPeSv2fkJBAaGgo4eHhhIeH8/TpU3Q6HQAKhYK8efPi5uaGu7s7np6e5M2bl0uXLrH1r23o9HLyeg3Ayas/SivPdI9JnRjC04d+PH+0EqOgp7CTI+e/m/bJPWr5p/uxj6n5208MHDyYP//8M+3rBoOBW7duERQUxLVr13jx4gV6vR4LCwvc3d3x9fWlYsWKaQHhqVOnqFu3LoGBgVSqVMmkMXTu3JlHjx5x/vx5s7623ECs7SIyG4lEQv369alfvz5RUVEsXbqUpUv8WBlwAgDXvI6Ud/XEx82Tcm6e5LWyIUmj5s6TKG5ER3AzOpLohBckazXojQb0BgMaXSoAVpaW9Ordm2HDhuHt7W22Mb/eFaTVas3W5vvcunaNjlJptgYeAD1lMr4KCiIuLo68eXNuYbDobTqdjsDAQIKDgwkKCuLerVukpqQgk8mwy5uXcj4+VKpUiapVq6bN7s2cOZPLly8zatSotMDDaDRy+/Ztzpw5w82bNxEEAVtbW9zd3SlfvnxakK7T6YiNjeXy5cscP34ceLngumbNmkwYP46jR49y4cJ8Yu7+jm3+Jtg41cXSvgJW9hXeyOqp1zwl5fklUp4Hk/zkEC/iApBL5OgFPTZWVtyPjWHBiQOMbNA8m3+i5mEwGhm2aQWurm5MnTr1je/JZDK8vb3T/TkU86qMQ+HChU0eR5EiRQgKCjL5vP8aMfgQpZuLiwv/+9//+Omnn3j48GFaRd3goCAWBhzjeUICL6uVvJxMkykdsXKojCpvUVQyC5SCAYP2GfLEy6Qk3iQlNZXdu/fh7u5Ovnz5yJ8/83UVBEEgLCwMiURCdHR0lu4S0ul0RMXEUCUHUp9XebWjJjg4mMaNG2d7/6K3RUZG4ufnh9/ChTx++hSlVEo5uZxSRiPWEgkG4JkgsMPfnzmvAuOa1arRul07Jk2aRP369fH0fDkzcePGDbZv387Tp09xcXGhU6dOeHt7Y2f34ZnGpKQkbt++jb+/P6tWrcLOzo4WLVrQokULLl68SGBgMBF3jqPTaQCQylSAHMGoRRBezqQgkSEBPN3caNC4MfXr16djx478+OOP/Dp3Lk1L+3wSGZH/bfGpw5x/cJeTJ09megu+7NX7z2AwmHyuwWBIO/9zJj52EWWav78/ffsO4M6dEKzty+DgOQi7Ai1QWL7/A8po0JDyPIi4R6tJiNqCBANffz2an3/+GUtLywyN48iRI4wcOZKQkBCUSiUVK1aka9euGX1ZH/Xo0SPmzJnDBSsrKmfzh4lRELBPTeX7KVP49ttvs7Vv0ZvUajU//fQTs3//HUuJhJ5SKb0VCnyk0veuA4oTBI7q9SwyGjmu1ZI3b16+++47dDod27dvJzAwkJIlS9K0aVO8vLwytA4sKiqKw4cPc+nSJby9vencuTN2dnYYjUaePHlCZGQkycnJPHz4kMuXL/Pjjz/SqFEjihYtiqOjI6p/7dxKTU2lQnkfSEpm37BvcbTJmqrQWeHknZt0XjqHwUOH8scff2S6vfPnz1OtWjWOHz9OvXr1TDq3efPmJCcnc/LkyUyPI7cRF5yKskVKSgpjxoyhdu3aRMfZUbT2UYrWDcSp0IAPBh7w8o7LxrEmHhX9KNXkAU5Fv2P2nLmUL1+Rc6+qv6ZXYmIiAwcOpHHjxuj1eoYOHUqFChUIDw/PzMv7qLi4OACK58AzcKlEQlG5nIcPc2dW2s/F+fPnqVC2LH/+/ju/yOVEWlqy0MKCKh9ZgJxXIqGTQsFahQIpUL9+fR4/fsyMGTO4du0a3bp1Y9CgQRQqVCjDC9BdXFzo1asX/fr1IywsjOnTp3P79m2kUikFCxakUqVKrxKU9cTe3p7Y2Fjq1KmDi4vLW4EHgKWlJbv27CZOp6Hj0jkkqlMzNK7sFhR6n+7L51K3Xj1mzJhhljYrV65M8eLFWbx4sUnnhYaGcuDAAXr27GmWcXzKxOBDlCGPHz+mSpXqzJ23iIKlp1G45lFsHGtm6INSrsxLgZLfU6zOOR7H5aFmzZr4+fml69wrV67g7e3N2rVr6dSpE0OHDqV48eIULlyYqKgonj17ZvJ40uv1gr+MzdNknpUgpO3sEWW/v/76i9q1amEbFsYlCwu+V6mwNfHvf6lOh1KhIF++fMyfPx87Ozu+/fZbqlatarZdb2XLluXbb7/F09MTPz8/rl69+sb3ZTIZVatWZc2aNSQmJn6wreLFi3Pw0CHux8XSeekcnqfk7oydQaH36bR0DuUrVGDb9u3vDKoyQiqVMnToUP7++2/CwsLSfd68efOwtbU1e6mMT5EYfIhMFh0dTc2adbgf+pSidfzJX2w0EknmHztY2JaicM3j5PUaxKBBg5g7d+4Hjz937hx16tRBKpXyzTffULPm/wc/Pj4+qFQqAgICMj2u93n93FafZT18mE4i+WhiI1HW2LZtG106d6ajRMIZpZLSr/4WBEHghSAQYzSiSccT7ZUGA8VKlmTVqlW4ubkxdOhQk7Zuppe1tTX9+/enTJkyrF69mlu3br3x/Ro1aqBWq/n7778/2laFChU4dPgwt54+odWimcS++HDAklNO3rlJm0W/UapsWfbu32f2Ugu9evWiQIECtG3blufPn3/0+C1btjBnzhzGjBmTbWUfcjMx+BCZJCkpiUaNmhL1JIVCNY5gaWu+XSoAEqkc17KzyV90DKNGjWL9+vXvPO7KlSs0bdqUfPnyMXTo0LdyIqhUKqpUqcK5c+fSZijM7fXalJgcWjYVIwhZcqESfdjly5fp1rUrneRy1qpUKCQSIoxGftJocNFosE1Kwjk5GYukJGprNGzU6dC+42/kidFImMHAgwcPyJ8/PwMGDMjSpHFyuZyePXtSokQJVq1a9cYF087OjoIFC6Z7+2fVqlU5dfo0sVo1jf6cgv/921k0atMZjEYWnDhI56VzqFW3DoeOHM6S94m9vT379u0jNDSUmjVrcuLEiXfWxYqPj2fy5Ml069aN7t2788MPP5h9LJ8ik4OPU6dO0apVK1xcXJBIJOzYseON7wuCwKRJk3BxccHS0pJ69epx48YNc41XlMPGjx/Pnbv38aq6B5W16dvM0kMikVDQ+1fyenRn4MDBPHr06I3vJyYm0rJlS+zt7T/4gV2zZk1SUlI4c+ZMlozT1dUVgIsZWPGeWXGCQKhWm+5CeyLz0Gq19OrRg5ISCWtUKiTABI0Gr5QU5shktOvfnw0bNrB9+3aWLFmColo1uqvVeKrVnNa/OUcWbDQCL3N89OrVK1uy1crlcnr06IFSqWTz5s1vXCxdXFwINCFvTNmyZQk4exa3YkVpOX86E7atJ1mjyYphp9u9mMe0WDCdH3ZuYvDQoezavTtLZxnKli1LQEBAWkoCb29vpk2bxurVq/Hz86Nfv364uroyefJkxo4dy5o1a8SaTK+Y/FNITk6mfPnyzJ8//53fnzlzJrNnz2b+/PkEBgZSoEABGjduzIsXLzI9WFHOOnbsGIsWLcK51K9Y2JbK0r4kEgmuZedglNjTr9+ANz4kx40bx9OnTz/6ge3s7Ezt2rXZt29f2r58c7Kzs8PBxibtIpKdXgc8vr7mr98her+pU6dy8+ZNVsnlKIB+Gg2/6XT8PHkyUU+esHDhQrp160bbtm0ZOHAgx06e5MaNG5SsXp1GGg2H/xGAbH41I9e6detsTbVtZWVFly5dCAkJ4cKFC2lfd3d35/r16yblxylUqBAnT59i9uzZrLlwmlqzfiIgB2ZBXs921Jr1E7FGPSdPnuSPP/7IdMLC9ChZsiTXrl3j2LFjeHt7M2XKFHr37s3gwYM5fvw4EydOJCwsjJkzZ4qBxz9kaqutRCJh+/bttG3bFng56+Hi4sLo0aOZMGEC8LLYkbOzMzNmzGDQoEEfbVPcaps76XQ6ihYtwfNUNwrVOGhSIabMSHxymAdnW7FmzRp69uzJ4cOHadKkCZ06daJmzZofPV+r1TJz5kzy5MnDiBEjzP7mX7liBdy8ySULi2xNiz9OrWallRWxcXHiB1o2ef78Oa4FCzLCaGS6SsUsrZZvNBrWrVvHl19++cFzNRoNbVu1wv/YMa5aWOApkeCUmoqDpyfDR4zIkZIK69at49atW0yaNAm5XM7Nmzfx8/MjPDwcNzc3k9u7e/cufXr1JuDcWXpWrc3guk0oXdD0dkxhMBo5HHKV2Uf2Ehh6j5EjRzJ16tS0RIM5RaPRoFAoPrv3Zo5ttX348CGPHz+mSZMmaV9TqVTUrVs3Sxf+ibLerl27CAt7SMEyv2db4AFg69wYu4LN+O232RiNRkaOHEnx4sWpUaNGus5XKpV0796d0NBQtm/f/s5nsplRtVo1ruj1XMjG2Y9UQWCFINB3wIDP7sMtJ61ZswatRsMohQKtIDDLaGTgwIEfDTzg5efglr//RmZlxSKdjjMGA3EGA02aNs2xWk6NGjUiKSmJK1euAKQtXk5NzdgW2mLFinHy9CnmzJnDwfu3qDHjB5rPn872SxfQ6s27LPtpUiJzjuyhwq8T6Lr0D4wOedJmO3I68ICXv2/xvflhZv3pvC4J7+zs/MbXnZ2d0773bxqNhsTExDf+iXKfefMWYJuvBpZ25bK9b0evwVy7dpnFixdz69YtGjdubNIHduHChenUqROnT59m165dZg1ASpYsiZO9PfOyaFHru2zS64nX6xk8eHC29fm5EwSBhXPn0l4up6BUyna9nic6HSNHjkx3G3ny5KFP//4sNxqZq9Ph5OhIsWLFsnDUH1agQAGKFSuGv78/QNr7IjMXTZlMxqhRowiLCGfz5s3IC+ajz+qFlJ38DVP2/s3JOzcztD1XEATC4p6y60oQA9cuofSkscw4vJsGrVpw4cIFAoODqV27dobHLcp+WZJe/d8XBkEQ3nuxmDZtGj///HNWDENkJnfu3OHkyeN4VlqdI/3nyd8YyzxezJw5kwIFClC0aFGT26hRo0Za9sjk5GQ6dOhglj3/UqmU2vXrs2H7doYpFFTP4kyn8YLADwYDbVq1ytLU8aI3hYaGcvv+fX57tcNpg15PjapVTa5JNHDgQObMmcN2iYRWtWvn+N1xzZo1WbVqFQEBAWnrI8wxc6BUKuncuTOdO3fm+vXrzJ8/n0Vr1zLr8G4A3B0c8fUsTAX3QpQu6Ia1SoWlQolcJkOj06HW63iW9IIrEY+4HBHKlcgwnr3a0lu0cBGmTp9G7969/5Nl6T8XZg0+ChQoALycASlYsGDa12NiYt6aDXntu+++Y8yYMWn/T0xMzPJKpCLTnDx5EolEim2BljnSv0QixcqpKWGhfrRt2zbD09R169bFysqKrVu3cv/+fbp27WqWO08fHx8OHzhAj9RUrltbY5mF0+hjNBqSlErmL1yYZX2I3va6EFiVV8HCY6mUMhkohli8eHEADIJAqVJZu2g7PUqWLAm8zEEhkUiQy+XcunWLAgUKmOVxUFhYGBs3buSvv7aTnJKCTG6BwsKVWIMlB+5Es/vqZQzG988aFsifn0qVKzO8Swd8fX3x9fXFxeXTqysjeptZg49ChQpRoEABDh8+nLYFUKvVcvLkyfemtVWpVGbLOifKGsHBwVjbl0Imz7nEODK5NYIgZLr6beXKlSlUqBAbN25kwYIFVK5cmXr16qVtmzVFSkoKFy5c4MiRIxiAMImE4RoNy1SqLHmOv0GnY5VOx/LFizO0IFCUccHBwbgqlTi/Cj4E3p7hNYXqVVbTnGZhYUH+/Pnx9PTEzc2N06dP06BBA0qXLs38+fOpX79+htpNTExk3LhxLF++HJnCBjvXHhQv+xWWdmXfSEgoCAZ0qREYDWqMhlR06ickx50l6fHfpCTexT5vPn748UeqVq1qrpcsyiVMDj6SkpK4d+9e2v9fFyXKmzcvHh4ejB49mqlTp1KsWDGKFSuWtvK4e/fuZh24KPucvxCMwiZn80kIBh0qlcos06xOTk4MGzYMf39/jhw5QmBgIIUKFaJatWoUKVIER0fH915YUlJSCA8P5+LFiwQHByMIAhUrVqR169bcvHmTFRs3Yg/MMnMAsl2no5dGQ6+vvqJPnz5ma1eUPqGhoRT7x1ohZ6ORu//KEpoe9+/fB8DNzS3HH7m85u7uTmxsLF9++SV16tTh7t27HDx4kAYNGjBkyBBmzpyJjY1Nuts7dOgQffr0J+ZpPAVKz8DRqw8y+bvPl0hkKK083/iaXYGmCKX+R/IzfyJDvqVGjRqMGzeOn3/+OVtyoYiyh8nBR1BQ0BvR8OtHJr169WLVqlWMHz+e1NRUhg4dSnx8PFWrVuXQoUPkyfPpVEAUvelRaCgWBVrl6Bi0KQ9xd3c32wVdKpVSu3ZtatSowfXr1/H392fjxo3Ay8ylbm5u2NvbI5fLMRqNpKamEhUVxdOnT4GXz7Tt7OwYPXp02t921apV0Wq1zP77b2KABRmo9fFvRkFgrk7HWK2WTp06sWz58hzbHfE502g0WP4j+Ogql9PD359bt26lPbpIj6VLl6KQycj/6hF1bpA/f37u3LkDvJzNKV68OEWLFuXMmTOsWLGCffv2sW/fPkqXLv3BdgRBYPr06Xz//ffY5q9HsbqLUVl7ZWhMEokEG6daWNc8Qcy9Ocz6fTKHDh/l8KEDODk5ZahNUe5icvBRr169D+4WkEgkTJo0iUmTJmVmXKJcRK1OxVKWs9vXdKn3KVDU/B/YMpmM8uXLU758eZKSkggPDyc8PJyIiAiePn2KXq9HKpWiUqnw9vbG3d0dNzc3AgMDuXjx4ltBde3atbG0tGTr5s2cSE1lhVJJY3nGnm7eNxrpq9NxSqtl9KhRzPr997R6MqLsJZfLSf5H0NdRLme0XM78+fPfm3Dx35KTk1nh54ct5KqaPEql8q0SBFKplDp16lC6dGlWrlxJ7dq1OXz4MBUrVnxvO//73/+YPHkyziUmUqDkD2YJkiVSOc7FvyFP/saEnG9NrVp1OX36RK54ZCXKnCzZ7SL6b5HKZCBkfwrxfzIaUrM8W6GNjQ2lSpVK10JAlUr13poxlSpVokCBAiycN48mqak0VigYJpPRQi5Hno4P5CCDgYU6HRsNBgq4uHBszZoMP3sXmUfevHm584/HJCqJhNFSKT8uXEiDBg1o3779B8/X6/X06N6d1KQkCn5CM1evH1H6+fnRuHFjTp8+/c4ZkHnz5jF58mQKlp6Cc/FxZh+Hlb0PhWoc4WFAI5o0bUaA/+m02kqiT1PueOgoytWsrW0w6BNydhCC8ZN53PD06VM2bNiAysqKKVOmkFiuHG3Varw0GrqnpvK7VssxvZ5LBgNXDAYCDAaWarUMUqspp9FQOSWFo/ny8ePkyVwLCREDj1zAx8eHm1ot6n/M+n6nVNJZLqdzp0788ccf703O9fDhQ1q3aMGe3bvZrFRiK5FkWbHDjHidjfN9rKysGDBgAJaWlrRu3ZqUlJQ3vn/jxg3Gjh2HU+HhWRJ4vGaRpzieVXdx9eo1/ve//2VZP6LsIc58iD6qbBlvgm9eA14+1016eoq4R8vQJd/EaEhGJrdFZVcdx0IDzV7lNo1EalLNiaym0+mQ/+txitFo5MyZM+zdu5cCBQpw5MgRSpUqxcSJEwkODmbt2rUEnj3LjitX3rpQSaVSShcrhm+1avzaoQPNmzcXH7HkIpUqVUIvCFw1Gqny6vcilUhYp1KRT6Ph66+/ZvKkSfQdMIDatWtjYWFBbGwsG9evZ9+BA9hLpeyzsKCxXM5anY6L0dE5/Ir+X0xMzEfXUVhbW/PVV1/x+++/88MPPzB79mzg5YxOz696o7QqjIv3lCwfq5W9D84lfuL333+iffv2VKtWLcv7FGUNMfgQfVTlyr4EnF/Li9hjPL4+huSEWxQrVpKmbRthbW1NXFwc27fv4PaxJdjmq4VL+UVY2Jg5c6PUmidPnpi3zUyIiYlJ23kjCAL37t3j4MGD3Lt37507BF7nKICXH9gPHjzgxYsXGAwGrKysKFy4cK5ICy16t7Jly2Jtack+vT4t+ACQSyTMs7BglFLJ4pQUlv/xB7NmzUr7fkWlkmUqFV3lcqxezdz5SqXsjIzEaDTmih0v4eHh6Vo06+zsTLNmzfjjjz9o3749tWrVYsGCBVy+dJGitU8glWXPTpT8RUeT9GQnvXv34+bNa7niZygynRh8iD7K19eX1KTpPDzbmlq1ajFp0kLq1av3xmOQ+fPns2PHDiZO/IkHZ+rhVW0PVvbm3J4rITw8/IPZcrNTeHg4xYsX59SpUwQEBPD48WNKlizJsWPHPvqYRC6XpyWbEn0aLCws6PHVVyxdsYKJgoDiX3+DRaVSZllYME0QiBMEUgE7iQR73s4H4iuToUlNJSYmJi0xY05JTU0lNjaWxo0bp+v4unXrcvXqVUaPHs358+eZPftPHNy7Yp23ShaP9P9JpHKcS8/g9ukGHD58mKZNm2Zb3yLzEUNG0UfZ2NggkUjo0qUTR44con79+m99oL5Op3zhwlnKeBfm0YV2aFMjzdK/QZeANvkuqampxMfHm6XNzEhOTiYuLo5z586xa9cuatWqxfHjx7l586a4PuM/bMiQIUTpdOz4QJE0hUSCs1SKl1SKg0TyzkC5kkyGQiIhJCQkK4ebLrde5SopVKhQuo6XSqU0bNiQ4OBg5s+fT1jYQxy9sr/GkHXe6tg4lGP+fDHT76dKDD5EH/Xbb7/h4+PDqlWrPrpF0MHBgf379qBSaHh6f4FZ+o8L34Ag6JBKpWkfljnp9Rj8/PyIjIxk69atb80Eif57ypcvT6P69ZlgMJCUieKEdhIJnWQyzp4+jTEbqyG/y5kzZyhSpIhJW1dLly6No6Mjv/8+B5u8FbByqJyFI3w3iUSCvedA9u3bQ2SkeW5yRNlLDD5EHxQSEsKxY8cYN25cure65s+fn/79+vA8YhVGQ8bKc78mGHXEP1pE+3btadGiBWfPnjVrVdqMOH36NPXq1WPAgAHkz58/R8ciyl6Lly7lsVTKtxpNptoZplQSExeXltwrM9RqNefOnWP//v3s2bOH48ePExMT89HzoqOjuX//PrVq1TKpP6lUSpUqVYiIiMTGuXWOBd32BdtiNBrTqvKKPi1i8CH6oBUrVpAvXz46dOhg0nmDBw9Gq44jIXp3pvp/cmcG6qT7TJz4PcOGDSM8PJzQ0NBMtZkZUVFRhIaGMmzYsBwbgyjnFClShOkzZ7JAp2NbJrbLVpdKKSuXc/jgwQzPfsTGxrJlyxYmTZrEli1buHr1Knfu3OHgwYNMnTqVRYsWcePGjfeef+jQIWxtbSlbtqzJfbu6uiIIeqzsfTM0dnOQq5ywyuORVvRP9GkRgw/RBz18+JCKFSuaXPyvWLFiODg4oU0JzXDfKc+vEHNnOhO//54KFSrQuHFjChUqxJEjR3Js9uPw4cM4OzvTpk2bHOlflPOGDx9Op44d6abVsu8D6z8+RCKR8KdCwf2HDzN053737l3mzJnD/fv3mTBhAmFhYURFRfHo0SPi4+NZu3YtdnZ2LF26lN27d7/1frl69SqXLl2idevWb20ZTw+1Wg1g5kXlplPmqUBgYHCOjkGUMWLwIfogjUaT4cyiSqUKo0GdoXP1mqdEXPqKkiVL8cMPPwAvp3tnz57NjRs3CA7O/g+ca9eucenSJX777bdclR5blL2kUinr1q+necuWtFGrWaDVYsxAMFxfLmeIQsGenTvTagalR1hYGMuWLaNGjRrcuXOHSZMmvVGV2cLCgh49enDu3DlmzZrF0aNHOXjwYNr3k5OT2bp1K2XKlEnb/m2qhIQEpHIb5KqcTXOutC7G/QehOToGUcaIwYfog+zt7YnOQEIkjUZD/PNnyBT2Jp+r1zwl9HwrLORxbN/+1xvBT9u2benWrRvbt28nISH7sq4mJyfz119/0bJlS3r06JFt/YpyJ6VSyda//2bQkCEM12horNUSmoHHJzNVKpwFgZXLl783Q+o/CYLApk2bKFu2LDt37sTW1va9x0okEsaOHcvkyZM5cOAA0dHR6PV61qxZg16vp1OnThler6HT6bItr8eHSKQqNJqM3eCIcpYYfIg+qFmzZgQFBZm8LfDvv/9Gq1Fj62zaHnx1YggPAxqhlERw7Ojhd+bDmDdvHtbW1qxduzZbsp7q9XrWrVsHvNzhIu5qEcHLfC3zFyzg8OHD3HNyolRqKv3UaoIN6auDpBEEdur1OEgkRD1+zJIlSz4agNy/f5+oqChmzJiR7qR048ePJ3/+/Jw+fZpVq1Zx//59+vbti52dXbrOfxepVApCzu7UecmITCpmAv4UicGH6IM6dOhAvnz5WLx4sUnnzZu/ENv89bDIUyJdxwtGPU/u/Madk1VxyQ8B/qcpX778O491dHRk+/btREZGsmrVqiwNQPR6PWvXruX+/fv8/fffFCxYMMv6En2aGjVqxPVbt/hx8mQOOzlRKSWFshoNA9RqFmu1nNTrCTIYOG8wsE+v51eNhvZqNW4aDT3Uapxq1WLGjBnEx8ezcOFCnj179t6+/P39KVasmEn5ZJRKJYMGDeLChQvcunWLvn37UqxY5jIQq1QqDPokhBwOQAy6hDcyCYs+HWLwIfoglUrFoEGDWLx4MadPn07XOYsXL+bcWX/yeg396LFGQypxYWu5d7oGT279j3FjR3P16iVKlPhw0FKjRg127tzJgwcPWLp0KS9evEjX2EyRnJzM8uXLCQkJYevWrTRs2NDsfYj+G/LkycP333/Pw/Bwdu7cSZUePQgsVowRej31UlOpnJJCtZQUWqSmMkulIqFGDfqPHUtISAhHjh/nm2++4dSpUwiCwMyZMzlz5sw7d8GEhYXRoUMHk2ff2rdvj16vp02bNu+sSmuqggULIhi1aJLuZrqtfxOMep5H7eBRcD8enG3Hg3OdiLg6hpTnl946VvviKj4+Zcw+BlHWE9Oriz7qxx9/xN/fnxYtWrB582aaNWv2zuOMRiPz5s3j66+/xjpvTWTKvBj0Scjk/39nIggC2uQHpDy/SHLcORKjNqJVx9G4cVMmT/ajatWq6R5X48aNOXLkCG3atGHGjBm0b9+eChUqmOWxyLVr1/jrr78A2Lt3L40aNcp0m6L/PplMRuvWrWndujXwcldIaGgoarUamUyGra0tHh4e7/wbLVeuHDdu3GDcuHEsXbqUK1eu0KRJE4oWLZp2fGpqKnnz5jV5XA4ODgAfLSCXXm5ubgCkPA9O9+zmxwiCgZi7c4h/tAh1ciRlypTHy8sDvV7P5cs7uXNiIXkcq5Cv+ERsnZsiCEZSEi5TqVIrs/Qvyl5i8CH6KKVSya5du+jSpQvNmzenUqVKjBw5ksaNG6cVlvv7779ZtGgR9+7dQ65QkhwXwP0zjUAiwdKqAFKZBYJgQKeJR6d9OUvh4urB8KG9GTx4cIangWvWrElISAhDhw5lzZo1XL58mSZNmqR9OJoqOjqaw4cPc/HiRVq0aIGfnx8uLi4ZaksksrCwSFfRttdsbW3x8/OjU6dOjBgxggULFlCgQAFq1KiBt7c3KpWKpKQkk8fx+hxTt8y/j0qlQiJVkBJ3gbzu3TPdntGoJSyoJ4mPd9O3b1+GDh1KhQr/v41Xr9ezd+9eZs2azRn/triV/QNrx5rotUkZ3rEjylkSIafTRf5LYmIidnZ2JCQkfHAltyj7GQwGdu/ezcyZMzl79uwb35NKpUgkEgwGA61atWLEiBHkz5+f4OBgIiIiSE1NRaFQkCdPHsqVK0fFihVNSumcHlu3bmX06NFERUVRqFAhatSoQenSpbG2tv7geSkpKVy6dImTJ08SExNDnjx5GDhwINOmTRO31IpyjCAInDx5kgULFrBjxw70ej1yuZwKFSpw4cIFk9qaM2cO48ePZ9KkSWZZIxEZGflyy7nKgVJNHiCVWWa4LUEQCL/UnxfRW9m27W9atmz53mONRiNjxozhzz//JI/zFyTFHOHMmZPUqFEjw/2LzMeU67cYfIgy5P79+5w/f55jx46RkpKCs7Mznp6etG3bFi8vrxwbl16vZ8+ePSxYsIAjR44AL6eaXVxccHZ2Ttu2q9PpiImJITQ0lOfPnyORSBAEAQsLC3Q6HQaDAVdXVwYNGsTgwYPNHiiJRKZ4+vQpmzdvZvjw4QAEBwdTsWLFdJ1rNBopXrw49vb29OzZ0yzjOXLkCAcPHkSn0+FRcSl5PTLebnLcOe6eqseqVavo1avXR48XBIFOnTq/2mqch9q1a7Njx44M9y8yHzH4EImAR48ecfbsWYKCgggKCuLu3buo1eq0IEOpVPLo0SOKFi3KsGHD+Oqrr8ibNy+CIHD58mUWLlzI+vXrcXR0ZN++fRlKQy0SmVPFihUJCQmhYcOG7Nq16+WW149Ys2YNvXr1YuTIkRQuXDjTYzAajUydOpUWLVoQFfWYs0GPKVInAIkkY1teHwX3wU52gfv376Tr9QDcuHGDMmXK0KVLF7Zu3crDhw/x8PDIUP8i8zHl+i3udhH9Z3l6etK1a1dmzZrFiRMniIyM5NmzZ8TFxfHNN9/w6NEjJk6cyO3btxk9enTaQj6JREKFChVYunQpd+/exdHRkYYNG/LgwYMcfkWiz92IESNQq9Xs27ePwYMHo/9Ievfdu3fTv39/KleuTKFChcwyhpCQEJ4+fcrQoUP5+ef/kfz8KrH35maoLb02joSovxk+fEi6Aw8Ab29vateuTVRUFNbW1qxevTpD/Ytyjhh8iD47N2/eZOzYsUyYMIEpU6Z88EPP1dWVI0eOYG9vT+/evbNvkCLRO3Tp0gV7e3sKFSrE8uXLqVmzJps2bXor101QUBB9+vShbdu2lCpVii5duphlF5jRaOTo0aP4+PhQuXJlqlevztdff82T25NQv7htcnua5PsYDdoM7SZr2rQpt27dwtvbm4cPH5p8vihnicGH6LOzaNEi8uXLxy+//JKu452cnJg6dSqnT5/m6tWrWTw6kej9rKysmDZtGg8ePKBFixbEx8fTrVs3XF1dadCgAU2bNqV06dJUrlyZ3bt307JlS3r37p2h4nHvcvr0aR48eMAff/yRFsxMnjwZTw8Pwi/2QK99blJ7Rn0ywEcXhb+LtbU1ycnJqFQqNBqNyeeLcpYYfIg+K0lJSaxevZoBAwaYVDCvTZs2FCxYkEWLFmXh6ESijxs0aBANGjQgICCAfv36MWHCBMqVK8fz5895/PgxdnZ29O/fn4kTJ9KgQQOTHmd8SGxsLHv37mXEiBHUrVs37etWVlbs2rUduRDJo/NtTApAZIqX6wLi4uJMHk9cXBy2trZERkZmKPeJKGeJC05Fn5WTJ09Sr149rl69avIC0pEjR3Lw4EFu3zZ9elkkMqdHjx7h7e1N4cKF6d27NzJZ1tY3SUlJYdGiRchkMq5fv/7OmYqgoCAaNW6KXuKKe8X1WOR5uy7TvxkNqdw6XJjRIwcwY8aMdI9HEAS8vb1xdnbmxIkT7N+/ny+++MKk1yQyP3HBqUj0Hq8r4ebPn9/kc52cnLK1kq5I9D6enp5s3ryZkJAQNmzYgCGdxewyIjU1lWXLlvHixQt27dr13kcklSpVwv/MKZwd1Nw9WYWYu38gCB8el1RmiZ3rV/gtXY5anf7qtCdPniQkJAS5XE7hwoVp0qSJSa9JlPPE4EP0WbG0fJkMKSUlxeRzU1NT084XiXJaixYt2LBhA1euXGHVqlUZ+pv+mLi4uLRidwcPHvzobKG3tzfXrl1m5IghRN/8jvunahIXtg6j4f2BhVOhATyPf5buNVgpKSmMHz8eDw8Pjh49yvDhw832aEmUfcTfmOizUrz4y6ngkydPmnzuyZMnP1rwTiTKTp06dfo/9u47vqb7f+D46+6bQSKRRCQh9iZErNh716q9d+yiiraoUqOoGrG3WiW22ntEiCC2IDIIguzcfX5/qPzqa2XcJMZ5Ph75w835jBvJPe/zGe8PO3fuJDQ0lJkzZ3Ljxg2z1CsIAmfOnGHmzJmYTCZOnjxJpUqVUlXW0tKSOXPmcOrUKap4OhJ2qS+3DhUi4sp3vAzfhCb+zhun4aqsC5On+M9MmzaNyZMn86GVALGxsbRs2ZLg4GAeP35Mq1atGDZsWIbfryjriWs+RF+dJk2a8Pz58zSlqL58+TLly5fHz8+P1q1bZ2LvRKK0i4iIoG/fvhw4cABPT0/q16+Ps7NzmusRBIH79+9z8OBBbt++Td++fZk1axY2Njbp7tvdu3dZvHgxf2/dTnjYqy2xcoUlcmVOJBI5RkMSOs3/LzgtXbo0w4YNo3PnzilTPGFhYSxdupSlS5cSExODXq+nc+fOrFy50mzn1YgyTsxwKhJ9wO7du2nZsiUHDhxI1VyxIAi0b9+ec+fOERoaarZtiyKROSUnJ/P999+zbt064uLiKFSoEN7e3hQrVuyDW1kFQSA2NpZr165x9uxZHj16ROHChVm4cKHZ11I8f/6cS5cuERwcTEJCAgaDAQsLC/Lnz0/FihV5+PAh8+fPZ8+ePchkMmxsbDAajcTGxiKVSjGZTDRs2JDRo0dTr149s+QuEZmPGHyIRB9gNBpp0qQJAQEBHDx48IPDyYIgMGbMGGbNmsXGjRvp2LFjFvZUJPq4iIgIFixYwIoVK4iOjkatVgOg1WpTpjDs7e1xdXUld+7cKYcl6nQ6oqKiiIyMTLm5t2zZksGDB5t1i256hIaGsmfPHsLCwoiOjsba2pp69epRsWJFXFxcsq1fog8Tgw+R6CPi4uJo0qQJQUFBjBw5kgEDBuDm5pbyfUEQOHr0KLNmzWL//v3MnTuX4cOHZ2OPRaK3nTt3jhYtWmA0GunZsycDBw5MWZf04sUL5syZw4oVK4iKiqJw4cLo9XqSk5ORSqVYWFhQrFgxKlasiKenJ1WqVCFPnjzZ/I5EnzMx+BCJUiE5OZnx48ezYsUKEhMTqVu3Li4uLuh0OgIDA7lz5w6lSpViypQptGrVKru7KxK94cqVK9SoUYNy5cqxc+fO9ybaMplM/PDDD8yaNQtfX198fHyyuKeir4UYfIhEaRAfH8+GDRvYvXs3L1++RKlUkj9/fvr06UP16tXFeWXRJ0cQBMqWLYtCoeDkyZNYW1t/9Prhw4ezcOFC7t27h7u7e9Z0VPRVEYMPkUgk+oKdPHmSWrVqcfjwYerVq5eqMomJieTNm5fBgwfz22+/ZXIPRV8jMcOpSCQSfcF8fX0pVqwYdevWTXUZKysrevbsyfLly8WD2ETZTgw+RCKR6DNz/Phxvv322zRPCXbo0IFnz55x8+bNTOqZSJQ6Zg8+DAYDP/30EwUKFMDCwoKCBQsyefJkTCbTxwuLRCKR6KNiY2NxcHBIc7ncuXOnlBeJspPZsyXNmDGDxYsXs2bNGkqVKsXFixfp1asXNjY24lZFkUgkMgNLS8t0neXyuoylpaW5uyQSpYnZRz7OnTvHN998Q7NmzXB3d6ddu3Y0bNiQixcvmrspkUgk+ioVL16cY8eOpbncsWPHUCgUFChQIBN6JRKlntmDj+rVq3PkyBHu3LkDvNqLfvr0aZo2bWrupkQikeirNGDAAA4ePMjdu3dTXcZkMuHr60u7du1Spl9Eouxi9uDjhx9+oFOnThQvXhyFQkH58uUZMWIEnTp1euf1Wq2WuLi4N75EIpFI9H7t27fHzs6OKVOmfPAU2P/atGkTISEhDBo0KJN7JxJ9nNmDj82bN7N+/Xo2bNjApUuXWLNmDbNmzWLNmjXvvH7atGnY2NikfP03xbVIJBKJ3qZWq5k1axZr165l4sSJHw1ADh8+TJ8+fWjfvj3e3t5Z1EuR6P3MnmTMzc2NsWPHMnjw4JTXpkyZwvr167l169Zb12u12jf2nMfFxeHm5iYmGROJRKKPmDlzJj/88ANNmzZl5MiR1K1b943tt7dv32bRokUsXLiQBg0a4Ofnl3LwnEhkbmlJMmb23S5JSUlvnYYok8neu9VWpVKhUqnM3Q2RSCT64o0ZM4aCBQsyadIk6tevT5EiRShXrhwKhYKwsDDOnDlD7ty5GT9+PD///DNyudk/8kWidDH7b2KLFi2YOnUq+fLlo1SpUgQFBTFnzhx69+5t7qZEIpHoq9euXTvatm3LqVOnWL16NeHh4ej1epycnFi3bh3t2rUTRztEnxyzT7vEx8fz888/s337dp4+fUrevHnp1KkTEyZMQKlUfrS8eLaLSCQSiUSfH/FgOZFIJBKJRFlKPFhOJBKJRCLRJ0sMPkQikUgkEmUpMfgQiUQikUiUpcTgQyQSiUQiUZYSN32LRCLRV+j+/fusX7+eiIgIDAYDuXPnpnXr1lSpUuWNRGUiUWYQRz5EIpHoK3LmzBmaNm1K4cKFmTNnDpcvX+bmzZv89ddfVKtWjQoVKrBu3bpUnxkjEqWHGHyIRCLRV2Lt2rXUrl2bx48fs2LFCh49ekRAQADnzp0jPDycf/75B1dXV7p3787QoUPfm5laJMoocdpFJBKJvgI7d+6kV69e9OrVi8WLF7+Val0qldK4cWMaN27MsmXLGDBgANbW1kyfPj2beiz6kolJxkQikegLp9PpyJ8/P15eXuzYseOt87fe5fWhdTdu3KBEiRJZ0EvR505MMiYSiUSiFDt27CAqKorffvstVYEHwIgRI3B0dGTRokWZ3DvR10gMPkQikegLt2jRImrWrEnp0qVTXUapVNK3b1/WrFlDYmJiJvZO9DUSgw+RSCT6wl26dIlmzZqluVzz5s2Ji4vj/v37mdAr0ddMDD5EIpHoCyYIAgkJCelaQ/e6THx8vLm7JfrKicGHSCQSfcEkEgk5cuQgNjY2zWVjYmIAxMX/IrMTgw+RSCT6wlWsWJFdu3aludyuXbuwtbWlYMGCmdAr0ddMDD5EIpHoCzdo0CDOnj3L5cuXU11Go9GwYsUKevXqhaWlZeZ1TvRVEpOMib44JpOJI0eOsHv3bl68eIFCoSB//vx0795dfIITfZVatmyJi4sLY8eOZc+ePW8lGHuXmTNn8vz5cwYOHJgFPRR9bcSRD9EXw2QysWDBAooXL07Dhg3Zu3cv4eHh3L59m7lz51K4cGGaNWvGuXPnsrurIlGWksvlrFixgsOHD9OjRw90Ot0Hr//zzz+ZOHEikyZNomjRolnUS9HXRMxwKvoi6PV6evTowaZNm+jQoQODBw/G29s75XTOpKQkNm3axLx587h58yZr166lQ4cO2dxrkShr/f3333Tt2pUCBQowZMgQunfvnvI5q9fr2bVrFwsWLOD48eOUKlWK3Llzo9FokEgkWFlZUaxYMTw9PfH09KRkyZIoFIpsfkeiT0la7t9i8CH67AmCQP/+/Vm9ejUbN26kXbt2771Wp9PRp08fNm3axN69e2nYsGEW9lQkyn4XL15kxowZbN++HZVKhbu7OzKZjPDwcGJiYpDJZAiCgJubG3Z2dikBhlar5enTp0RFRSEIAra2tvTp04eBAwdSuHDhbH1P8fHxnDhxgqioKOLi4rC1taVatWq4u7ujVquztW9fEzH4EH1Vzp49i7e3N8uXL6dPnz4fvd5gMNC0aVNCQkIICQlJdbppkehLEhkZyaRJk9ixYwfR0dFYWlpSsWJFvLy8cHZ2fu+6EK1WS0REBNeuXePChQskJCTQuHFj5syZY/YzYEwmEyEhIVy7do2EhASMRiNqtZoCBQpQrlw5Hjx4gK+vL6tXryYxMRG5XI7BYEgpb21tTc+ePRkxYgSFChUya99EbxODD9FXpWvXrvj7+3Pnzp1UBxL+/v5UrVqVffv20aRJk0zuoUj0aYmLi2PkyJGsWLGCwoULU7duXYoXL57mQFyn03H58mWOHDnCy5cv+fXXXxk1ahQymSzdfYuJiWHNmjX4+e3g0qVLJCTEvfM6iVSKYJIil4PRaCRnzpz07NmTli1bYmNjQ1xcHHv37mXZsmXExcUxceJEJk6cmDIVKzI/MfgQfTWio6NxcXHht99+Y9SoUakuJwgCnp6euLi4sHv37kzsoUj0aQkICKBNmzY8f/6cFi1aUK1atQzfkHU6Hf/88w/Hjx/Hy8uL7du3kzdv3jTVERISwvTp01n/1wb0Oj05HBthaVcZC9vyWOQsi0xhi0Qiw2RMQpsYQtLLQJ6HLic59grjx49n/PjxWFlZvVVvcnIyv//+OxMnTmTkyJHMnj07Q+9V9H5puX+LW21Fn7Vbt26h0+lo2rRpmspJJBKaNm3K2rVrM6lnItGn5/jx4zRr1gwnJyfGjBmDnZ2dWepVKpV88803lC1blnXr1uHt7c3Ro0cpUKDAR8sajUbmzZvH2HHjkcrtyVVgDPb5e6FQ53nn9TJpTixtK6BPjiQ59gozZsxgzJgx763fwsKCCRMmYGdnx9ChQ/Hy8qJjx47pfq8i8xAnu0WftYSEBODV3G5a5ciRI6W8SPSlO3fuHM2aNSNfvnwMHDjQbIHHf73eRZOYmEjdunV59OjRB6+PiIigeo1ajBo1ipwufSlaJ5g8xca9N/D4r+f35+JdvSbff/99qvo2ZMgQGjVqJI58fCLE4EP0WcuRIwdAus+teF1eJPqSPXnyhBYtWpA3b1569+6NSqXKtLbs7Ozw8fEhLi6OVq1avbEA9L9CQkKoUsWbK8FhFPI+hGvZWUjlqcukmhx3nbhnZxg+bEiapoyGDBnCxYsXuXDhQqrLiDKHGHyIPmulSpXCwsKCHTt2pKmcIAjs3LmTSpUqZU7HRKJPhCAI+Pj4oNfr6dmzJ0qlMtPbtLOzo3v37gQGBjJnzpy3vh8WFkatWnV5maCmgPcxrHNXT1P9sY+2k9MmF61atUpTuSZNmuDs7MzWrVvTVE5kfmLwIfqs2dra0qVLF5YsWfLeJ6x3OX78ODdv3mTw4MGZ2DuRKPtt3ryZ7du306ZNm3RNT6aXu7s7tWrV4ueff+bmzZspr+v1elq2bM3LeCnuVf5BaeGa5roN2mhcXdzSnORMJpORL18+oqOj09ymyLzE4EP02Rs0aBARERHMnTs3VddrNBrGjx9PiRIlqFWrVuZ2TiTKRlqtluHDh+Ph4YGHh0eWt9+kSRPs7Oz47rvvUl6bPn06V4Ov4Oa5EaWFS/oqlsgwGI3pKmo0GjO0FVhkHmLwIfrslS9fnjFjxjBmzBgWL178wWsTExNp27Ytly9fZuXKleKef9EXzc/Pj6dPn9K4ceNsaV+pVFK3bl0OHDhASEgIV69eZfLkX3EsPBpL2wrprldhkZfwsFDi4+PTVC45OZmQkJA0bwMWmZ8YfIg+GxqNhvPnz+Pr60vv3r2pXr06np6eVKhQgdOnT1O0aFF8fHyoWLEiGzZseGMa5tmzZ0yfPp1SpUpx8uRJdu7cSZUqVbLx3YhEmW/BggUUKlSIPHk+vnsks5QvXx5ra2sWLVrETz9NQGlVAKdi4zNUZy6X9mg0yfz1119pKrdlyxZiYmLo2rVrhtoXZZyYZEwEvNqyevfuXU6dOkV8fDz29vbkyZOHevXqZfuOkKtXr+Lr68u6detISkpCJpORN29eHB0dUxbP6fV6oqOjiYiIwGAwIJFIUCgUODs7p5xbIZVK6dixI2PGjKFkyZLZ+p5EosxkMBjYt28f33zzDT179syWKZf/2rVrV0oqdpey88hdoF+G6wwNaE+enPe4ejUoVWs/jEYjXl5eODo6sn///gy3L3qbmGRMlGrBwcHMnj2bDRs2IAjCW4s2X5+NMHjwYJydnbl06RLh4eFoNBrkcjk5cuSgTJkyFC1a1OxnpFy4cIERI0Zw9uxZbG1tqVGjBqVKlcLZ2fm9HzZGo5HHjx9z69Ytzp49y8OHD3FycmLgwIFMnDgRe3t7s/ZRJPqUhISEsHjxYlasWEFMTAwSieSTCLRLly7N0aNHkcstyeXWySx1OhQexZ0z9enfvz/Lly//4DoOk8nEkCFDUlLBi7KfGHx8pYxGI9999x3z589HoVAgk8no0qULPj4+lClTBplMRlhYGCtXrmTx4sX4+vpiMpneW5+lpTUe5cvT/tu29OjRA1tb23T3TavV8ssvvzBz5kzy5s1Lz549U/r0MTKZDFdXV1xdXalbty63bt3iyJEjzJ8/H71ez++//56lK/5FoqwQHBzM6NGjOXjwINbW1nh5efHkyRNevnyZJVtrP8bFxQWJRILKpgIyuXn+/qzsKuPqsYQ1a/ry/PlLZsyY9s6D7e7cucOPP/7E1q1/A2BpmbpcIqLMJU67fIUEQaBnz56sX78etVpN6dKl2blz53vnhbVaLf3792ft2rXkLT2D3AUGIpEqARNGfQzJsVdIigki6YU/8U/+QalU0qVLJ8aPH0/BggXT1Ld79+7RokUL7t69S8OGDalXr16GV6abTCbOnDnD3r17cXR0ZMeOHZQvXz5DdYpEmUWr1ZKcnIxMJsPS0vKDv/96vZ4ZM2YwefJkcufOTZ06dfDw8ECpVDJr1izy5s1L586ds7D37zd16lSShVIUrm7eKY/Yx3t4dNUHbfIzataqQ+tW/3+w3O7dezly5BBKtT15Ss0m4nI/5s+by6BBg8zaB9Er4rSL6IN8fX1Zu3Yt+fPnJ2fOnBw6dOiDvygqlYrVq1ej0xv4e8sEcrl1QqFyBGTIlfbkcKhLDoe6AOg1UTx/uIq/Ni3jr782MnPmdAYPHpyqKZnr169Tt25dJBIJI0eONNuKdKlUSo0aNShRogTr1q2jVq1a7N+/n2rVqpmlfpEoIy5fvszu3bu5eOECgefPE/n0acr35DIZZUqWxLNyZapUqUK7du2wsbEB4OHDh7Ru3ZorV65Qr149GjVqhFz+/x/pT58+pUKF9O8oMTcXFxfuhiWavV4b5+bkcGxA7OMdXL6xhDOnx2I0apHJVFjaepCvwgpsXdoilal5+WAugYGBZu+DKO3EkY+vjMlkomjRori7u3PkyBGOHDlC3bp1U1X2+fPn5HVxxb7QeJyKvv8gJwCjIYHH138k+sESqlevyZYtm3B2dn7v9SEhIXh7e6NUKhkwYECmLXLVaDSsWLGCqKgojh8//kl9OIu+Hnq9ns2bN+M7fz7nAgKwlcupKJFQUSKhuFSKJWACogWBIJOJi1Ip13Q6VCoVXbp1o3nz5vj4+KDT6ejevTv58uV7o35BEBg5ciTt2rXD29s7W97j/9qwYQPXQ0wUqXk609sSTHok0rfXhYUFDcQtVzCXgy5meh++Rmm5f2fKVtvIyEi6du2Kvb09lpaWeHh4iNHmJ+LQoUPcu3cPQRAoVqwYderUSXVZe3t7OnXsSEzYMgThwwl+ZHJrXMv9SSHv/VwMCqFatRqEhoa+81qNRkOzZs2QSCSZGngAqNVq+vTpg729Pc2aNePFixeZ1pZI9C7BwcFU8fKiW7duWF2+jJ9azTO1mkNqNdNUKnooFHyrUNBBoWCwUslytZrLSiVhlpb8YDKxb/VqWn3zDbGxsQwcOPCtwOM1QRA+qTw2r0Y/s+ZZ912BB4BcaU9MTNrPgRKZn9mnXV6+fIm3tzd16tThn3/+wdHRkXv37mVoAaLIfPz8/ChWrBhBQUEMHz48zR9OXbt2Yc2a1WgTQlDnKPbR63M41KZAtaOE+jehdu16nDt3+q0RkIkTJ3L//n1Gjx5t1sBDEATCwsK4ceNGyhZdOzs7PD096dmzJzNnzmT48OGsW7fObG2KRO8jCAIzZsxgws8/U1QiIcDSEq80rGfKK5UyQaVivCAwWyLh56Qkli9eTNeePXF1fTNF+eut5nq9Hp1OR2RkJOHh4URFRaHT6RAEAblcTs6cOXFzc8PNzQ1bW9tMDVb0ej1SqUWm1Z8aEokcg16frX0QvWL24GPGjBm4ubmxatWqlNfc3d3N3YwonaKjo8mXLx93795NV+IhJycnAIz6mFSXUVm5U6Dqfu6fqUubtt9y+tSJlEV0/v7+zJo1i6ZNm5otEZIgCFy8eJFTp04RFhaGnZ0dzs7O6HQ6zpw5w+7du/Hw8KB27dqsX7+e9u3b06JFC7O0LRK9i8lkYpCPD0uWLuUHpZJflEpU6bzRyyUSflCpaCGX0zkmhoXz5tF3wAAKFSqUco1er0etVnP06FF27NiBIAjIZDKcnJxQq9VIJBIMBgM3b97k0KFDwKtt9Z6enlSvXh0HBwezvO//evLkCXKLmmavNy1MJi0qtTpb+yB6xezBx65du2jUqBHffvstJ06cwMXFhUGDBtGvX8aTyogyTi6XYzKZUKvVJCcnp7n86zJSWdqeYJSW+XEtv4bzZxowb968lLMehg4dipubW5qmfz7EZDKxZcsW/P39ady4Mb6+vjRu3Dgl2Hn27BmrVq1iwYIFXLt2jXz58jF48GCaNm0qnvcgyhSCIDBi+HCWLl3KCrWa3mk8DO19SspknFKraanRsGzxYgYNHYqTkxOHDx/m7NmzJCYmUqRIERo1aoSbmxvOzs5vLEh9LTY2lvDwcEJCQrhw4QInTpygWLFiNG7cmAIFCpilr6/z7zgWK2WW+tJLnxSKWxExtfqnwOzBx/3791m0aBEjR45k/PjxBAQEMGzYMFQqFd27d3/req1Wi1arTfl3XFycubsk+g9XV1dOnTpF4cKFOXnyJCNGjEhT+dOnTyOVKVCk4yRK69zVsS8wmLHjxtOsWTNiY2O5ePEiffv2NcuNXxAE/Pz8CAgIYPXq1fTo0eOtaxwcHBgzZgyDBg2iXbt2HD16FL1ezz///EPz5s0z3AeR6H+tX7+e+QsWsFilMlvg8VoOiYQ9ajX1NBqWL16MTKUiMTGRqlWr4u3tjaOj40frsLGxwcbGhtKlS9OsWTOCgoI4ceIE8+bNo2bNmjRr1izDuUKioqIwGo1IZdmbY0MXH4SX17fZ2gfRK2ZfcGoymahQoQK//fYb5cuXZ8CAAfTr149Fixa98/pp06al/PLb2Njg5uZm7i6J/qNbt248fvyYEiVKsHPnTiIjI1Nd1mQysWDBImyc2yBX2qWrfeeSvyBTODB58q/4+vpib29vtgyMoaGhnD59mvnz578z8Pgva2trtm/fjoeHBxYWFixYsMAsfRCJ/uvRo0cMGzyYLgoFAzIp2ZeVRMIWlQpDUhIGg4ExY8bQunXrVAUe/0uhUFCpUiVGjRpFixYtOHPmDL///jvh4eEZ6uOdO3eQSCQYDebfaptaBm00SfEP8fT0zLY+iP6f2YMPZ2fnt24mJUqUICws7J3Xjxs3jtjY2JSvjP6Siz7Mw8ODqlWrcvr0aSQSCb///nuqy27dupUHD0KwLzAg3e3L5Fbkyu/Dli1b2LBhA1WqVDFbWvbTp09ToEABBg4cmKrrLSwsmDJlCsnJyRw4cIADBw68lV5eJMqIwT4+qJKTmadSZWo7+aRS5qpUxMfH8/z58wzXJ5VKqVu3Lt9//z1qtZoFCxYQEhKSrrpMJhPnzp3DPndukl8czXDf0ivuyavkZlWrVs22Poj+n9mDD29vb27fvv3Ga3fu3CF//vzvvF6lUpEzZ843vkSZa+zYsUQ+ikJlU5k///wzVU/9p06dokePXtjmbYmVXcb+eO3y98BokqDT6ShdunSG6notISGBK1eupDqh2Wv169dPWRDduHFjHBwcGD16dLo/aEWi127dusWOXbuYIZdjlwVbXvsqFFSUyzl6+LDZ6nRycmLIkCHkz5+fpUuX8uDBgzTXcefOHZ4+fcrAAQOIfXIUTcJds/UvLV6GLaV+/YbvvReJspbZg4/vvvsOf39/fvvtN0JCQtiwYQNLly5l8ODB5m5KlE4qlQoEI67l5uFQaDhDhw6lW7fuBAUFvXVteHg4P/30E/Xq1UeZ04t8FVZneDueXGmPjfM3SKSKlN0zGfXo0SMMBgMtW7ZMUzmpVEqbNm1wcnJi6NChlC9fniVLllCkSBEaN27MjRs3zNI/0ddn8eLF5JbL6fiORZ6ZQSKRMFwu5/bduzx58sRs9apUKvr27YurqyvLli0jJiYm1WUFQeDo0aOULl2a8ePHY5vLnucPlpmtb6mVFHOJ+OgAhgwR06p/KswefHh5ebF9+3Y2btxI6dKl+fXXX5k7dy5dunQxd1OidLp48SIKlQ0WOUuRt/R0XMvNZ+v2Y1SoUIGKXpXp378/Pj4+NG7cBHd3d2b+Pg/bfD64V9mNVG6eBWOWdtUQBOMHD6tLC41GA5CufDI2NjZotVoKFSrEN998w4QJE+jcuTNXrlyhfPnyzJgx46PTMRqNhufPn/Ps2TMSEhLS8xZEXxCtVsvqFSvoK5Wme0tterSTy7GXyfD39zdrvUqlkr59+6JQKNi8eTOpTYx9/vx57ty5w8yZM7GwsMBnYH9ehi1Hm3jPrP37EEEQeHLzJ/LlKyAuKv+EZEpI3rx5c/E/+RN28WIgFjYeKSMYuQv0wz5/L2Kj9nEvYj13Q4MQBAMSuT15y/xJLteOyBTmzTpqaVseBBOPHj16b4bGtHi9SyouLi7NOQri4+NfjQb9S6lUUqlSJTw8PNi/fz/jx49n27ZtbN++HRcXF+DVuRmbN2/m/PnzBPr7c/v+/Tc+kPPkzo1npUpU9PKidevWlCtXLsPvUfT5uHr1KrEJCbTK4hNU1RIJTSUSTt01/9SGpaUl7du3Z9myZQQEBFC5cuUPXv/y5Ut27txJz549adKkCQDjx4/nr782EXl5AAWqHUQiyZQk2294Hrqc2CdH2XLggLid/hOS+f/zok9OUNBVVDk83nhNIpVjm7cl7pW2ULD6aQrV8Kdg1b3kLtDP7IEHgIVNWUDCo0ePMlzXvXv32LVrF1KplH379qWprCAI7N69+53nziiVSlq2bMmwYcO4d+8e1apVY9u2bXTp3BlXFxdGjxhByN9/Uy8sjKVKJdvUarar1axXq+kdF4fh0CHmT52Kh4cH3lWq8Ndff4kLWr8SgYGByCQSypppMXVaeMpkRD5+jNH44SMQ0qNUqVIpo9uvRxvfRafTsW7dOmxtbfnjjz9SXre2tmbNmpXEPTvNs3uZv8NMm3iPqJvj6Nu3Lw0bNsz09kSpJwYfX6G4uNh0b5U1F6nMAqlM/cEPsNR4+PAhS5cuJX/+/JQuXZoFCxakekgY4Pjx49y+ffuDh2+5u7szdOhQkpKSaN++PWe3bmW6TMZjS0v8VSoWqNX0VSppo1DQSqGgi0LBVJWK/Wo1UWo129RqLIKC6Nq1K96VK4vrSL4Cly5dopRSiUU2nK3iKZWiNxrNuu7jv5o1a4ZOp+PChQvv/L5er2f16tU8fvyYrVu3vjUVWrt2bb777jseXx9LTKRfpvQRQK95TKh/c9xc8jB79uxMa0eUPmLw8RUyGA0gzZpFcB8ikcgz9HSWkJDAsmXLcHZ2pm/fvtSsWZM7d+6wdu3aVJXX6XRMmDABZ2dnChcu/MFrc+XKxeDBg8lpbY2dIDBMoUjVDgaFREIbhYLDKhXnLC2Ju3aN8uXKMWfOnDQFSaLPy9OnT3HNhJGH1HD9d7QlPj4+U+q3tbWldOnSnDlz5q3f4cTERJYtW8b9+/fZtWsX1apVe2cds2bNomPHjjwM7MaL8I1m76M2MZQHZ+tjY6Xj6NFD4i7KT5AYfHyFlEoVgjFjIw7mYDJp3pnuObW2bduGyWSid+/eqFQqChUqRKVKlejXrx9+fh9+otJoNHTq1Al/f3/atWuXqh08uXLlolefPlw2Gvldp0tzf6vIZFxSKhkqkTBq1ChGjhwpBiBfKJ1WS+akFPu41+1mxrTLa9WrVycqKor79++nvHb16lVmzpzJ06dPOXToEPXr139vealUytq1a+jRvRthgb0IvzwYoz7j2a0FQeBF+EbunaqKQy6Bs2dPiWeLfaLE4OMr5Orqii4pNFv7oE9+hGDSY2Njk67yV65cISgoiLZt26Y81UgkEtq3b0/p0qVp164dHTp04OTJk2/c4OPj41m0aBHlypVjz5499OjR440DuT4mf/781Klbl0l6PdfS8eFuIZEwS63GV6Vi7ty5jBs3Ls11iD59KrUa7ccvyxSv281IYP8xRYoUwcrKKiWHx7p161i5ciU1a9bkxo0bVK9e/aN1yOVyVq5cyaJFi0h6somQE57ERu1DENK3A06b+ICHAd8SFtiLNq0aExgYYLazaUTml/1j76IsV7mSJ/f+PpOtfUiKeZVTJEeOtC9mNRqN+Pn5UaZMGSpUqPDG9+RyOd26daNgwYKcOHGCLVu2kC9fPlxcXNBqtdy+fZvk5GRKly6dcqhdWjVu3JgbV68y4uVLDluk74hwH6USDTByxgwqVapEmzZt0lWP6NPk4uLCkWzaWfHg3+3rmTnVIJFIcHV15cyZMxw4cIDcuXOzbt06unTpkqY8QBKJhIEDB9K4cWN69erD8eNtsLQpgq1bf+zydfno2jRBMBL/5BDPHy4hNmo/9vYO+Pn50bp164y+RVEmE4OPr5CnpyfLli3HZEgyW96OtEqKuQQSOY8fP07TyANAcHAwsbGxNGnS5J0fdFKplBo1auDt7c3du3e5fv06SUlJKJVKatWqhZeXF7ly5Up33xUKBfUaNWL9+vXcMhopns6bzAiFghMmEz79+1OzZk1y586d7j6JPi2enp74LlxIvEJBjixedHrRaESlUKTrbJe0yJcvH6Ghoaxbt4527dqhzsBR9e7u7hw9ephTp07h67uIrVvH8ej6GKxsiqK0Lo+FTTlkipwgkWEyatAm3CXpZQDJsVcRTFqQyFAqFBQpWIDjx48THx+Pp6cnxYsXF7fXfqLE4OMrVL16dQTBRNzTg9jmbZUtfUiK3o+TY27Onz+Pt7d3mp6WTp8+TcGCBcmb98NHY0ulUooVK0axYsUy2t23eHh4sHPbNhbr9cxN54ebRCJhsVJJqdhYvhs+nHV//WXmXoqyi6enJwJwyWikVhZlOH0t0GTC1dXVbGcmvY+zszNarZZmzZplKPB4TSKRULNmTUqWLEmRIoVZuWIFjx7fJjE2hJeRf4PwappTKpFiZ21LGXt7ChauSGGHPOSxseV5YjxXwh+yd/PfzJs3DwBLCwtq1KjBQB8fmjdvnqlTUaK0Ef8nvkIlS5akUuWq3Apdki3BR+LLC8Q/D2T0L78wceJEQkNDUz03++zZM0JCQujevXsm9/LD5HI5lapVY9WxY8wQhHRnscwjlTJZJmPYxo38Nn26eKrzF6JkyZLkyZ2bLbGxWRp8xAkCe00mqmdCwP2/XgccSUlJGRpJhFcLRc+fP4+vry+bN29GIgh8U7YiNWs3xcPNnWJOzsgkUkyCgDwVwX5schJXIh5yJTyUXcGBtG7dGte8LgzwGUjfvn3JkydPhvoryjhxwelXauiQQcQ9OYYm/vbHLzaz5w+W4Obmzrhx4yhQoABHjhxJ9a6Pe/fuIZFIKFWqVCb38uPKlClDnMnEtQ+kiNcLwkffW3eFAiuplKVLl5q7i6JsIpfL6efjw1qTifgs3NG0Xq8nWRCy5OTW19MZGU2c5+fnh2f5ClStWpVT+w/yU+NW3Jg4h6XdBtC1cg1K53VDIZMjlUpTFXgA2FhYUrNICYbWbcKh4T9xfNQk6uYrxG+/TsHNzY2OHTq8sVNHlPXE4OMr1a5dOxwc8xB148cs3e6ZFHOFmIhNDBs2GIVCwe+//861a9feeajdu4SHh+Po6PhGOvTskjdvXqQSCRf/s+vFKAjsNRhoptFgmZiIMiEBZWIiZbRa5ut0xL7jZ51DIqGHVMryxYvNdtaNKPv179+fZEFghV6fJe3pBYF5RiNlSpdO1xlHaW7v3/eV3imXZ8+e0aF9e9q2bUsurYGtA0Zyadw0htVtir21ebMqe7i5M69jb25OmsOUFh04e+QoZf5NSij+zWUPMfj4SqnVapYs9iXm8R5eRmzKkjZNJh2PrvSjRImSDBs2DIC2bdvy7bff4ufnl6qkSOHh4Z/M1IRSqcTZ0ZHAfz+8AoxGimi1NE9O5knJkkyeMYNVq1Yxb+FCSrRowUiDgbzJyfyh070V8LWUy4mKjiYkJCQ73oooE7i6utK7d28mGAyEZcENbqZOx12jkXoNGmR6W/Dq7BalUpmuKZetW7dSqmRJDv+znxXdB7JtwCjqlyib6etUbC2tGFirAefGTKGzZ1WGDh1K3Tp1smUU5O7du4waNYpSpUrh4uJCwYIFqV+/Pps2bUKXjjxCnxsx+PiKtW7dmo4dOxF1fSS6pPBMb+/Jrd9IjrvBunWrUSr/PwXTwoULUavVrF+//qNDuE+fPv2k5mudXFy4JQgcNxiordGQp3x5AgICuHj5MqNHj6Znz574+PiwZetWHoaF0XfwYEZqtfz4Px8uFf4dTg4MDMyOtyHKJL/PmoWNgwN93xFwmlOw0cgvej1169Uzy0GNqREeHk6pUqXe+Fv+mOjoaDq0b8+3335L5bz58f9hCm0rVEnTgnNzsFapmdWuOzsHjeHBjVspoyBZMQr8+PFjmjZtStGiRVm9ejU1atSgf//+dOjQAYPBQKdOnXBzc2P58uWZ3pfsJAYfX7kFC+bjYJ+D0PPNMWifZVo70aHLeXJnOpMn/0L58uXf+J6DgwN///03Dx48YO3atR8MQPR6/Scx5fKaSqUiBmil0+FdqxZHjh/Hy8vrndfmzZuXP//8k1mzZjFNp2P1f4bj7SUS3JVKLl26lDUdF2UJGxsblq9ezSG9np8y6Wn2iclEa62W3Llz07hx40xp410iIyPf+7v+LmFhYXhXrcahf/azvNtA1vUagmOO9CUZNJdaRUtyZvQvdKrwahRk4MCBmZoZNjQ0lKpVq3LlyhXWrFlDZGQkixcvZuLEiUybNo3jx49z/fp1GjVqRL9+/fjll18yrS/ZTQw+vnL29vYcO3YYS2UM98/WR5ccYfY2nt3zJeLyEAYPHvzejJ61a9fGz8+PW7dusXz5cpKSkt55nSAIWf6U9CESiYSngoDUyoqt27djkYqkY6NGjaJd27ZMNZkw/edJy4VX8+CiL0ujRo2YNWsWv+l0TNBqzfp0/chkoo5Wy3MLC/oMGJBlW0kTEhJ4/PgxFStWTNX1d+7coXo1bzQxsRwZ/hPtPLN+tON9cqgtmP1td+Z37M3y5cvp2qVLynoWc0pISKBp06bIZDL8/f3p3r37O9fLlCxZkjVr1jB16lQmTZrEqlWrzN6XT4EYfIgoUqQIZ06fxNYqiZATlXkZ8bdZPiAN2mgeXuxGZPBIRo0axfz58z/4gdOsWTP++ecfHj16xMyZM7l+/fpb1ygUikz5YEgvvV7PS6B3v35pShU/4rvvCNHpOPyfpywlfBVzvV+jUaNGMWPGDH7V6eio1RJthjUghwwGKmk0PLG0xGfo0CxNUufv749CoUhVZt779+9Tu1YtLE0C+4eMo6CDUxb0MO26VanJ6h6D8NvmR7euXc0+AvLXX39x+/Zt9uzZ89F1axKJhHHjxtGpUycmTJiQ4R1FnyIx+BABULRoUYKCLtK8WR0eXuxG2MXOaBND01WXYDLwMmIzd4+Xx5RwhL/++ovff/89VU86devW5caNG1StWpVly5axfv16nj59mvL9XLlyER0dna5+ZYbop0/RGY0MHDgwTeWqVatG6eLFWfufQEojkXxSU0oi8xozZgybNm3isKUlJbVatuj1b4x8pdZzQaC/RkPD5GSsCxRg6Hff4eSUdTd0k8nEuXPn6NSpE/b29h+89tGjRzSoVx8LE+weNIa8thnLB5LZWparyIruA/l761YGDhxotlEqQRDw9fWlZcuWlChRIlVlJBIJY8aMISIigt27d5ulH58SMfgQpXB0dGTb1r/ZsmULJJ/i5qHiPDjXkpcRf6NLCsegfYZRH49gencUrtc8Jur2dO4cLcHDiz1o1MCbWzev07lz5zQNsbq4uLB3715WrVrFgwcP+O233/D19eXq1avkzZuX8PDMXxybGkajkYjISGRSKYULF05TWYlEQmkPDx79+3MRBIH7/2amFH25OnTowPVbt/Bu2pQOGg1FdTpm6XQ8+8hIiEkQOG800lOjIW9CAqsMBtq1a8fAwYMznOArra5evcrz58+pXbs2Gs37T8fW6/V806Il2rg4dgwcne3rO1KrRVlPFvw7BTN79myz1BkYGMjVq1fx8fFJUzkPDw+qVKnCihUrzNKPT4mY4VQEgFarJTg4mMDAQAIDA8nvmpf42JfEPjlI7JODb12vVjsgUbshV9pjMiZj0j4kOSEcldqCrl06M2jQoLcOfUsLiURCz5496dixI5s3b6ZPnz7cuXMHiUSCVCrFaDRm+5kNT58+RW8woFIo0lVeJpNh/Df4eCQIPNHr8fT0NGcXRZ+gPHny4LdjB+fOnWORry8/bt7M91otBZVKPE0mSkilWAEGIFoQCJJIuGQyEWcw4O7qSo8mTVi2bFmWrn8SBIGHDx9y8+ZNjhw+jALo3bMnvXr2RCqRkMPSEg8vL+rXr0+dOnWoWrUqM2bMIOjyZQ6N+JF8dp/XuUWdK1Xn+qNwfvrxJ5o1a5bq0Yr3CQ0NBUjTAt3XvLy8OHbsWIba/xSJwcdXTKPRsHXrVpYsWsz5CwHo9XpkUikl8rpRLm8+On3TEXurHKgUCpQyGQaTCa1eT7w2mRuPI7kYeo9rj4LRGl5NHbjmzUvf/v0ZPHiw2eaf1Wo1tWrVwmg08u233/L8+XOOHj3K/fv3KVKkiFnaSK/bt28jA7R6PU+ePEnz0Pf9u3fJ++8T7+tEZWLw8XWQSCRUq1aNatWqMeePPzh48CAXL14kMCCA03fukKzVIpfJsMmZk3Kenoz18qJy5crUqlULmUyGTCZj1apVlChRIlPXemi1Wi5dusTZkycJf/wYK4mEKhIplRQK8kulqAAd8FCnI+DUKaafOMFPgkCRAgW49/Ahg2o2pEK+gpnWv8z0U9O2HLh5lV49e3Lm7NkMPey8XsuVlm3Jr6lUKrRabbrb/lSJwcdX6MGDByxZsoQVy5cT/fw5tYuV5reWHfBwc6d03nxYpOEPxGgycefJYy6Hh3LsznWmTZ3KtN+m0b5DewYNGkTlypUz/HSWmJgIvNqqWq1aNa5du8bZs2ezNfgQBIEzp07RXC7ngMnEypUr37uT511u3LjBuYAANv672n2z0UjRggXFaZevkIODA126dKFLly6pLvP777+zb98+/vrrL3x8fNJ1U/uYO3fusPmvv3gZG0szuZxlFhY0kMmQfuDv2SQIHDUaWRAWxj2TCb/Ac9QpVop6JcqYvX+ZzUKpZGHH3jSe9xtz5szh+++/f+P7cXFxXLp0ieDgYOLj4zEajajVavLly4enpyeFChVK+eyzs7MDXm1PLlq0aJr6ERkZmVL+SyIGH1+R4OBgxo0dy75//iGnhSWdvbzpXa0ORZyc012nTCqlhLMLJZxd6FTJm2mtOvFXwClW/HOAdevWUb6cBxN/mcQ333yT7jZerzqXSqVIJBK8vb3ZuXMncXFx5MyZM931ZsTdu3d59vw531lYYKfXs3jBAkaPHo0ilVMwvr6+OCoUtJHLeWIysdVoZObQoZ/M9kPRp83a2potW7ZQp04dVq9eTe/evc22zVan07Fjxw7Onj1LLbmc5VZWFE5l5lGpREJ9uZz6cjkPTCYGJCfSdslsulWuwfQ2XbH6zBZUVy5QhMG1G/HzTz/TvHlzLC0tWbJkCZu3bOP+vTsASGVKFMqcSCQyjMZk9No4AHLktKVmjRoMHNifGjVqkCNHDtatW8evv/6a6vZjYmLYuXMnY8eOzZT3l50kQlYe7JEKcXFx2NjYEBsbm203li+NXq9nxowZTJ48GXd7B4bWbkTb8lUy9YPAaDJx5FYwC48f5MSd63Tu1Il58+d/dHX8u9y5c4dixYoxdOhQChUqRFJSEpMmTaJ69eq0bNkyE3r/YYIgsHjxYp6FhBBtYcFVk4mKycn06tOHJUuXfjSA2L17N62++YZfFAp+UqmYqNXyu0RC5OPHWb54UPR5O3ToEC1atMDd3Z1evXpl+Gh7jUbDiqVLCXvwgDlKJQMVig+OdHyMIAgs1+sZoddTNl8BNg8YhY2FZYb6mNWSdTqqz5pAvGDi6bOnyOVWqG09katdUFq4orTMjzpHMSxsPJApcqDXPiU55jJJMYEkPNlNwotLuLrmJ39+V0JCQggLC0v1SNWff/7J6NGjCQsLw9k5/Q+JWSUt929xt4uZJSUlsWLFCry9vXFxccHBwYFixYoxevTobDm3Izg4mCqVKzNx4kSG1mrE6dG/0L1KrUx/ApFJpTQsWY4dPqNZ3KUf+3btolTJkuzcuTPNdb1Op/78+XMALC0tqV+/PsePHycsLMys/U6NCxcucPv2bZpJJEgkEsrJZCxTqVi2fDk9unVL6ef/0uv1LF26lLZt2tBKLmecUsl1o5HpBgNDhw8XAw9RmjVo0IADBw4QGRnJ77//zu3b6T+lWqfTsWLpUqJCQzmsVjNIqcxQ4AGv1rb0Uyo5olZzK+wBHZbMJkn3ea1fMJiMeOUvxPNnT5FKpBgMiSREnyQxYjMxd2cTcWUIIacbELzXkbuHShJ9bwHqHMXJU2wchWuepWit0yRJa3Dm7DmePn3K8OHDU7WF9+bNm0yaNIkOHTp8FoFHWokjH2YiCAKzZs1i6tSpxMXF0aRJE7y8vFAqlURERLB582ZevHhBs2bNWLVqFQ4ODpnaH6PRyPTp0/nll18olNsJ3069s3Xh1+PYl4z4ew0Hrl2mc6dOLFi4ME0328KFC+Pi4pKS1MhoNPLHH39gMBgYPXp0lmV2jI2NZfr06SQnJ3PAwoKG/2l3o15PL50OZDI6dupEh44dcXBwICkpiePHj7Nk4UIePX1KH4WCRSoVEqCqVktC/vwEBQdn+KlV9PUKDQ2ld+/eHDt2jKpVq9K0aVNy5EjbybBbtmwh8Nw5DqvVVM+Ev6fzRiP1NBpaVazGws59zV6/ucUkJTJt/w7+OneCZL2OpjI59eUyPKVSPGQyrP4NzPSCwE2TiUCTibNGI5sMJhIFEzZ5mpKn1FTUOYoDkPQykNCAb9ElP2LAgAH88ccf782I7O/vT6tWrXBwcOD06dNpSmCYndJy/xaDDzMQBIGhQ4eycOFChg4dynfffUeBAgXeuCY5OZktW7bwww8/YG1tzYkTJ3BxccmU/uh0Orp17crWbdsYUbcpPzT+BpU8fdtBzUkQBLYEnuOH7X/hki8/Bw8fIm/evKkq26lTJwICAlJOw4VXCYxmz55NpUqVaN++faavl9Dr9SxevJhHjx6RnJxMtLU19v/T5jOTiZV6PYsEgYf/SSBmJZPRVSrFR6GgnEyGIAgM1GpZbjRy9uxZKleunKl9F335TCYTS5Ys4fvvv0er1VK2bFm8vb0pWLDgR/827ty5g6+vLwtUKgZnwuLV11bodPTVatnS/zsaliyXae1k1MEbVxi+YQWJSQkMl8vpr1Dgmsp1LwmCwAa9nul6E2ECOJachGPhEUgkMkxGLQ/Of0vCs0PY2NjQt29funbtirOzMxqNBn9/f3x9fTlx4gSVK1dm9+7dmf6gak5i8JHFfv/9d8aMGcPSpUvp16/fB6998OABtWrVIleuXAQEBJg9o2VSUhJt27Th6JGjrOw+kOZlP72tm3eePKL1ktmocubk0JHDFCz48RGZOXPmMG7cOCZPnvzGCIG/vz+bNm2ibt26tGjRItMCEIPBwKpVq1LWn8TfukXoB85xMQoCDwWBWEHAUiLBRSLB+t++mQSBoVotvno9q1atomfPnpnSZ9HX6cWLF6xZs4aFCxdy7949bG1tcXFxwdXVlbx586JWq5FKpej1el68eMHDhw+5EniJyhI4bmGR4amWDxEEgSZaLcFqS/x/nE5O9cfPQspKJpOJcds3sOTUYRrLFSxTKVMddPyvZEFgglbLbL2eHHaVyVdlB3Llq9Hexzcm8eTOdCwtLd86x6pmzZoMGjSI1q1bZ8oupswkBh9ZKDExERcXF7p27cqCBQtSVSYoKIgKFSqwfv36NG2v+xitVkvLFi04c+oUf/UaSu1ipcxWt7mFvYim1eJZGJQKTp8989GzDiIjI8mfPz+tWrWiRo0ab3zvxIkTbN++nWrVqtGmTRuzT8EkJSWxevVqHjx4QNeuXdm4fj3fSyRMTkfgGGEy0Ven46DBwNKlS+nb99MffhZ9nkwmE8eOHePYsWNcuHCBixcv8uLFizeukUjkKNRO6JMjuZOGXS0Z8dBkolBiItPadqV/jfqZ3l5qmUwmBm9cwaYLZ5inUjFYoTDLw8xpg4HmGj0G6yIUqHEYufLVovsnd2by+MYEfvvtN0qWLIlaraZAgQJp3or7KRGDjyy0YsUK+vXrR0hISKqe4F+rX78+ycnJnDlzxiz9MBqNdOzQgd27dvF3/5HULJKxjHxZITLmBU3mT8PCLhenzpz+6PBi27ZtOXfuHGPGjHnrQ8Hf358tW7bg5ORE586dPxrMpNa1a9fYsmULer2ePn36EBUVxfatWwm1skrTE5FeEFij1zPKYMDa3p7lq1fTpEkTs/RRJEoNQRB49uwZlStX5UVyEVw9fJEp7Hhwsjq1ku6yxyLrtsF+m5xMcC57/MdP/2S2l4/fvoFFJw6yXq2mczqzFr/PdaORGhod+pxlKFjjGFKZGkEQCD3fGpXpCrduXf8iFpyLu12y0KpVq2jcuHGaAg8AHx8fzp49m6HV6f/1888/s337Dlb1GPRZBB4ALrZ2bB84ipdPn9KmVev3niIpCAIvX76kRo0aPH78mN27d3PlyhVCQkJITk4GoEqVKowaNQqpVMoff/zBnj17iI+PT3ffnj17xvr161m+fDmurq788MMPuLu7c/z4cZBI+Fmn47zR+NGDwcJNJn7RanHXaumn1dK6Sxeu3bolBh6iLCeRSLh27RqhofdxLDIKpYULmrhgEuKuM0SRtUcVDFIouP3sCWfv38nSdt/n6K1r+J44yB8qldkDD4BSMhkH1Eo0MVeIuj0VePX/4VJuIS9jkxg+fITZ2/zUiUnGMujhw4f06tUrzeVep9EOCwujWLFiGepDQEAAM2bM4McmrWlaunyG6spqhRzysLq7D80WTGf+/PkMGzaMo0ePcuLECQ4eOMDVq1fR6kwIwv8v3jx69OgbddjZO+Ke3w0vr4qMGDGCI0eOcOTIEY4dO4aHhwfe3t64u7sj/chIhcFg4NatW5w+fZpbt25hZWVF586d8fLyQiKRsH//fl6+fMmgIUPY5efH6shIrGUyKshklBcEckkkSIEk4LogECiR8Einw8rCgq7du+Pj40O5cp/uIjvRl2/jxo1Y2hTByv7V1GVC9AmsJDIaZPE5SbVlMuxlMk7dvYl3oYx9/mVUbHISwzYsp75cwbBMCDxe85LJmKiUM+HOLGydv8EyV0WUFi44FZ/CunVD+fnnn7L9yIisJAYfGaTT6VKd1fK/Xi8kep3zP700Gg09u/egnJs7w+s2zVBd2aVaoWL0r1GfH8aMYfaMGURERSGTyDEKBtRWhbHP2wAL2/JY2lZAYZEXiVSJYNJj0ESRFHOJpJggbt07yqVLS7Czd6C6d1V+/PFHgoKCOHPmDIGBgSiVSlxcXHBzc8PBwQGFQoEgCOh0OqKioggPD+fx48cYjUby5ctH586d8fDwSPl/ioiI4NChQ4wfP57Jkyfzxx9/cOrUKQICAggMDGT/xYuvUiybTFio1RQtUYIeXl54enrSoEGDz2IKUfTl8z9/EbWtd8pUR1LMJTykMmRZPPUhkUioIJFwOexBlrb7LrMP7SYmIY7lFhaZPgX0g1LJNiPcuzyYgrX9kUgk2OXrxtPbE1m8eLHZTtH9HIjBRwbZ29sTERGR5nKvy/w3Z//rJ+/AwEAiIyPRaDTI5XJy5sxJ2bJlqVChAra2tm/U88svv3Dv3j2Oj5qIPJtPec2ICc3asSMogKgn0UiQktO5JfYFB2JlX+O9HwhyZS7UOUtgl68LgiCQ9PI80feXsHvP35w9e54uXTpSq1YtHjx4wMOHDwkPD+fGjRu8fPkyZYpHLpfj4OCAm5sblStXpmDBgm9tgU5KSmLDhg0UL16cn376CXh1Im3t2rWpXbt2pv5cRCJz0Wg03LxxDefSvVNe07+8QCVp9iz785RKWRN2P1vafi1Jp2Xd2WP4yGTkz4LFtgqJhN+UMprGXiHpZQBWdpWRytTYuvZk+YpV/Prrr1hafl4ZYNNLDD4yqHnz5ixbtow//vgjTb80a9asIU+ePJQpU4ZNmzaxeMky/P3PodW8WsOgsnRAJlMjmAzotTEYDK9edy9QmE4dv2XAgAE8efKEmTNn8mOT1pR0/nwPJDOZTMw7uo9nCfEorUtQqOIqLGzKpqkOiUSClV0VrOyq4BT/A+FBffnzz3nUrVuH5s2bU6hQobfaBD46FaPRaFi+fDlJSUkcPHjws9v6JhK9duPGDYxGAxY2Himv6bTPyK/InqV/+SUSniQmIAhCti069QsKIEajYYCVVZa12UgmI59UQfT9JVjZvcrvY5e/B7dC5nDixImvZj2YuOA0gwYMGEBsbCwbN25MdZn4+HjWrFlD0aJFcXcvRKdOnQi6rse+0EQKVz9ImWZPKdEwnKL17lKswQNKNYumeL3L5PNcSbxQm99nL6BgwYI0atiYwo55PtvpFgCD0cjgjSuYcWAXDkXHUayOf5oDj/+lzlGcwjVO4FxqCseOnWDNmrUYDIY3rpFKpR8NPBISEli0aBHPnj1j//79lCr16W5dFok+JiYmBgC56v93lZkEA9l11JtKIsEkCBj/fRDIDn9fOEN9uZxCWTDq8ZpUImGgXEJc5N+YTK+m3VXWRVGqbAkMDMyyfmQ3MfjIoEKFCtGiRQvGjRvHvXv3Pnq9yWSidevWJCXrOHPmPJKcbSheN4iC3odwLDIC69w1kSneXB8gkchQ5yiOnVtn3DwWUKJhKC5l55NssCfkyRNmHtyF7n9urp8Dk8nEsM2r2XTRn/yeq3Au8TMSqXkWfEkkMpyKjMK90iaCg6+zbt36lNGO1Lhy5QozZswgKSkpJdugSPQ50/+bcVci+f8Bb6lETnadtKITBKQSCbIsvPH/l8lk4nL4A2pnQ/u15XKMgh5N3HXg1cit2qY8Fy+KwYcoDVasWIGtrS21atXiwoUL770uNjaW0qVLc+TIEaxsPShSOwDXcnNR50zb1liZ3Ap79z4Uq3cJh6I/MOvgXmrOnkzo82cZfStZauGJA2wIOIVbhWXkcuuYKW3YOLcgX8X1XL0azIEDBz56/evskKtWraJevXoEBwdTvvzntYNIJHqX19mUBdP/L3JXqnITlk0jD2GCgKOVdbZNuTx4/pRYrRbPbFgrV04qRYqE5JhLKa+pcpbj8uXgLO9Ldsn04GPatGlIJBJGjBiR2U1lm9y5c3PixAkcHR2pVKkStWvXZvPmzdy7d4/w8HD8/f0ZOHAguXPn5ubNmziX+IVCNY6jzpGxLWZSqRLnEhMoXOs0D+NlNPxzGneePDLTu8pcd548YvIePxwKDcPOrXOmtmWb9xsci47l0KHD71wcbDKZuHnzJsuXL2fKlCk8fPiQDRs24Ofnh5OTU6b2TSTKKq9Ph9YlP0x5TWnrRUA2zXpcNJkol42HXd54HAm8CgSymqVEQkGZkuS4GymvyRQ2JCQmZHlfskumLji9cOECS5cupWzZjM3hfw6cnZ3x9/fHz88PX19fOnZ880ne0tISg9FEvgorsMtnvpTqAJa2HhSsfozQs41pvnAWh4aPI7/9p3sYkdFkYuCGlSgs8uFcYlKWtOlU7AfionawcuUaWrVqgV6vJzIyksjISCIiIkhMTKRs2bIsXryYzp07Y5WFC9BEoqxQpEgRLCysSIoJIodDXQAsclUgKGo3pn+nQLKKIAhcEgT6uLlnWZv/K1GrAcA2m0ZebIEXhv8PNiQSOcbPcPo8vTIt5EtISKBLly4sW7bsi0gbmxpKpZKOHTty8uRJ7t69y+HDh9m3bx8//fQTSUlJuJVbYPbA4zWFOg/u1f4h3piTbqsWYXhPttBPwZ7gQC49DCFv+aVI5VmzrUwqVeJWfgUvXkSzcuVK1q1bx+3btylevDhjx47l3LlzXL58mX79+omBh+iLJJPJ8ChfnuSYoJTXrHPXJFEwcjiLPy9OGo1EG41UL1w8S9v9r9fJibMrufurmOf/h51MxiTUHzis8kuTaSMfgwcPplmzZtSvX58pU6a89zqtVotW+/9LnuLi4jKrS1mqcOHCFC5cmMjISDp06IRdvs7Yu/f+eME0SI67gS7xPiaTBpnCBqtcVXD1XEvwqdrMO/oPIxs0N2t75rLs1DFy2lfF2t4bAMFkIPGFPwbtM5BIkKscsbKrjERi3rlYS1sPbPI0xC13FKdPn8DGxsas9YtEn7oa1atxKWglJqMWqUyFZa7KWOUowYLkEBqa+UDGD/E1GCiS2zFbgw/Lf7fNxwsCqmwY/UgQQCr7/4cvbWIIxd3zZ3k/skum/LZt2rSJS5cufXDx5WvTpk3jl19+yYxufBL69u2P3mhJ/tLmyVxnMmqJebSNl6FLiH9+/o3vyZXW2Lp0IZdbN37bv4EmpctTwtnlPTVlj9tRjzgdcoP8Fdeg1zzh+cNVxIavIDkh/I3rLHK4Y5uvH/b5eiBX5TZb+3buA7jm34Y7d+7g5eVltnpFos9Br169mDlzJrGPtpPLrSMSiYRcBQex98ow7ptMFMyC9Q/hJhN+BgNTajTI1kPlijg5A3DNZMryHS86QSDEqMcxx/8HX/r4ICp5fb5pE9LK7D/x8PBwhg8fzvr161Gr1R+9fty4ccTGxqZ8hYeHf7TM5+LChQvs37+PPKVmIVdmfOpJr3nC/TN1CQvsTSWPnPj5+REVFUVMTAy3bt1i3A/fQfwOXoavQyKz5o/De8zwLsxr++UAlEobZEoH7h7z4OWDGXRq3wB/f3+eP39OdHQ0p0+fpl2rmjy/O5m7xyuQ9PKi2drP6dQICyuXNOVlEYm+FMWLF6dOnXq8DFuS8lout04o1Xnop9WT2YecC4KAj06HvaU1nSp5Z2pbH1PU0RkLuZzAbNjtc81kQo8JS9tXO+mM+lgSY0NSzvz6Gpg9+AgMDOTp06d4enoil8uRy+WcOHGCefPmIZfL3zq5VKVSkTNnzje+vhS+vr5YWLthk7dVhusy6F4S6t8YC1kkAQEBHD58kNatW+Pk5ISNjQ3FihVj8uTJREaGMWLEcPS6l2y9dJ7ohE9rGisw7AEKq6I8DGhDlSoeRISHsWLFCipXroydnR329vZ4e3uzdu0aHj4MpVzZQtw/15ikmCtmaV8ikaGyrcL5APMFNCLR52TYsCHEPTtHbNQ+AGRya/JWWMpRg46lev1HSmfMWoOBvXo9czv1xsYie9OIy2Uyyrrk40w2rI87YzQiQYpFzlebMWIf7wagevXqWd6X7GL24ON1boTLly+nfFWsWJEuXbpw+fJlZJ/x+SNp8fz5czZs3IRtvn5mWbsQGfwdMiGKkyePfXC6QKlUMmfOHEaNGoVJMPH7gd0ZbtucAh8+RJd4i0qVKnJg/z5y537/lEqePHk4cvggpUsVI/xiewSTeVaCW9iU53JQUJqSjolEX4pvvvmGRo2a8PjqYAy6lwDkdGyAXf5ejNAZOJdJN+OLRiNDdTo6VKxKk0/k9O1vyldmj9FIVBZ+FgiCwBKDgE2exikL7l8+XEr9+g0pWDD7th5nNbMHHzly5KB06dJvfFlZWWFvb0/p0qXN3dwn6+DBg+i0GuzydctwXXpNFLGRW5n8y0SKF0/dAq3p06fj5JSHrZfOf/ziLPI0PpYXiTHodfGsWrk8VdNy1tbWrFi+lOSEh8Q9+ccs/bC09SApKYH797P3UCuRKDtIJBKWL1+KQpZEZPB3KVMtrmVmo8jlRaNkHf5mDkAuGo000mgp5pKP2d/2MGvdGdG5UnXkMhkrMnnE57/OmUxcN+pQ2VQg6vY0Hgb2If55ADlyWDFz5kwOHz7Mixcvsqw/2UXMcJpJAgMDscyRH4XaOcN1PX+4CoVSQY8eqf+jlcvlDB48iJjkRJ4nxGe4D+YQm5SETCajTt16FCuW+gRrFSpUoGLFyjwPXWyWfsiUr3KgvD7rQiT60hkMBvz8/OjSpQuNGjViwIABeHqW52X4Jh7f/BUAqdwS96o7IVdF6iRrWabTZXgNiCAIrNHrqavRUNDFja0+32Ot+vhDR1axtbTi24rVmGc08iKT17vAq5/HBK0WOfDk9hRiQ2cjSdyPg4MDZ8+eZeLEiTRo0AB7e3vc3d35/vvvU3Vsx+coS/ZWHT9+PCua+aQEBFxEmaOCWepKfHaAli1aYGtrm6Zy3bp1Y8KECfx9yZ+BNRuYpS8Z8TI5EaPRSM8e3dNctlev7gwePBjBpM/w+S8S6atfe30WPu2IRNnBZDIxa9Ys/vzzTx49eoSnpyfu7u4YjUZu374NwPN7M9DG38C90kZkChsKVNtH5NXv6B+2hi1GgWUqBe7p2A0SbjLho9OxV6+nQ8WqzP62xycVeLw2rklrdgUFMEyrZX0qRmMzYqVezxGjkQYNGlCtWjVsbW3f2PFjMpl49uwZERERPHjwgEWLFjFr1iwaNWrE2LFjqV27dqb2LyuJIx+ZJDj4GuqcZcxSl2CMwcUlb5rLOTu/GnW5HRVpln5klO7fm33evOl/L0Z9bIb7IZhe5ZVJzbSPSPS50uv1dOzYkbFjx9KsWTMuX77MxYsX2bp1K9u3b+fOnTscPHiQBg0aEPt4B7ePeqBPfoRUbolbhSUUrLqL0zI7CiUm0SZZwxGD4aMjIYIgcMJgoINGQ8GkJAJVajb2Hc6SrgM+ycADwNkmF9PbdeMvvZ5tmfhA8sBkYoReT6VKlWjWrBm5cuV6a6uxVCrFyckJT09P2rVrx8SJE+nUqRM3b96kTp06DBw4kPj4T2MkO6OyLqvMVyYpKQErha1Z6pJIVG8kYkut12WMpswfTkyNPDavthtn5L1IpBk/AFyX+Opsi9cBjUj0JRo0aBDbt2/Hz8+PVq1avfV9qVRKgwYNqF+/PpMmTWLy5MncOlKKvGX+xM6tMzmdGmJVP5iX4Rs4eH8B2xPuYiOR4ymT4CWVkF8iQSWRoBMEwgSBCyaBC0YDsYJA0dyOTK3ZgE6VqpNT/eln7exQsRr/BF+iW3AQDhIJNc2ccO2xyUR9rRYLG5t3/l+8j1KppHLlynh5eXHmzBnWrFnDvn37+Ouvv6hRo4ZZ+5jVxJGPTGI0Gs2WoVOmdufs2fNpnn89f/7VYtNclp9GuvB8drmRy+X4+/unuez58+dRWeRGKrfOcD+SYi/h6JQ35aAtkehLExQUxPLly1mwYMFHb3YSiYRJkybRq1cv5DIT4UH9uXO0BFG3p2MyJpG74AAK17tK4eqHsSg2jsDcDZknsWWwVk8fjYZBWj1/CFacUroSL3l1017S3YcBNRt8FoEHvPoZLOk2AK9CRWis0bDPjGes3DOZ8NZoeGFhwYDBg7G0TPsWY6lUSo0aNRg9ejRKpZL69euzY8cOs/UxO4jBRyZRqdSYjElmqStXvp5cuZK6jLH/tXDhImQyGYUdP42brFIuJ38uexYvXoJOp/t4gX8lJiayYsUqbFx7miUjojY2iEpeX08yH9HXx9fXF1dXV/r06ZOq6yUSCRMmTECn0/HTTz/R8dv6vLg/nRsHChByvDxhl/qQHHsZlXVhcrl1xbH0TPKUnIxN3jZY5MyHRv8StTKWESOGUqhAQUZtW/dJny/1LmqFks39R1GzeBmaJSczWKMhIQOLUE2CwCKdjrLJySTY2DB0xIgPphZIjdy5c+Pj40PJkiX59ttv2bPn00skmVpi8JFJ8uV3R5sYYpa6cjo1xCJHfqZPn5Hq0Y+bN2+ye/dOjEbjJ3XCbatyXkRHP2PdunWpLrNs2TLiE+Kwd0/dB+mHGPWxJL44R7VqVTNcl0j0KYqLi+Ovv/5iwIAByNMwfeDu7k6zZs3Yv38/K1euJOrxI5YvX0bXjrUo4HCXZ7d/5OHFHoRe6MTDwJ7Ehk6ndMFoBvRpzebNm3n8KILZs2ezfsNfXA4PZf4x82yNz0oWSiUb+41gRpsurBagbLKGtXo9mjQEIYIgcNhgoJ5GwyCtlnKVKzNqzBjs7e3N0ke5XE63bt0oWbIkbdu2JSgo6OOFPkESIbPz6aZRXFwcNjY2xMbGftbZTnv16sW23VcpVOOsWep7GbGZhxd78NNPPzF58uQPjgCEhYVRo0Ztnj7Xokl8xMNpvtmeTfC1l4kJFP55OFK5jP3//EPdunU/eP2ePXto1ao1tvl641ZuXobbf3Z/EY+vjyY8LCxdC19Fok/dtWvXKFOmDGfPnqVq1bQF2XPnzuXHH38kMTHxre8ZjUaSk5PR6XSoVCosLCyQvmcXzJgxY/jzj7mcGDXpkztfKrUeRD/l28WzCIl+iq1EQm+5nLpyOZ5SKXn+533HCwJBRiPnjEaWm0yEGAzkdXTkm7Zt05RWIC0MBgNz587F1taWwMBAlP8elAev/q9u3brF3bt3SU5ORiqVkjNnTsqUKYOLi0umnamTlvu3OPKRSTw9PUmMCcZkTPviynfJ5doB51JTmTJlCu3bd+DSpUtvXZOUlMSKFSvw8qrCsxcmLOzqkd/e+ZMJPAByWVnzbYUqCIKcRo0aM2nSJB4/fvzWdREREYwfP55vWrUih1NTXMvMyXDbgiAQE7aE1q1ai4GH6IuVlPRqujc9awusrKxISkp65wirTCbD2toaOzs7rKys3ht4AEyePJmCBQsyeNOKz2765bUErYbQl88ZNGgQvb/7jjWWljRPTsY5MRH7+HgKJyRQLDEJl4QkbBISqJWczM9GIzlKl2bo0KF8P25cpgUe8GoEpGPHjty8eZOpU6fy4sULZs+eTfWqVclpbU3p0qVp3bo1nTt3pmPHjjRt2hQ3NzecHRxo2bw527Zty9Z0A+LIRyYJDg6mbNmyuFfajG3eb8xW74vwDTy7PZHkhHAqVqxMjRrVUKvVREVFsXXbduLjY7HN04y8Zefx4FRNvi1bkHkde5utfXO4HB5K7dmTsMpdC23sBQSTjhYtWlC0aBEEQeDmzdvs+2cvUpkFdu4+OJeYZJbFuy/C1hN2qS/Hjx+nVq1aZngnItGn59atW5QoUYIjR458dGTxf02fPp1p06YRG5vxLe3+/v54e3vzfYMWjGvSOsP1ZaUErYbG83+DnDm4eCkQlUqFIAg8fPgQf39/9u3bR2hoKFFRUTx6FEViYjzffPMNNWvWzPIjRPz8/Dh16hRKuRzBaKS5VEpVmQxPqZSSUilWEgkm4IUgcNloJNBk4ghwTqcjr6Mjg4YNY9SoUWZJPZCW+7cYfGSiylWqcTvUggJV95m1XsFkIO7JP7wIW4kx+T4mkwap3BZL+wbYu/dBZVWA2Md7eXC+LcdGTqR8vgJmbd8cvtuyhnUB/hSsfozE52eIf/w3Rv1TQIJM6UTOvB3J5doJmSKHWdrTJz/i7vEKtGvbjL/+Wm+WOkWiT5Feryd//vy0atUKX1/fVJcTBAFPT0/y5s1rtoWMU6ZM4eeff+aPb3vQy7uOWerMbFqDnvbL5nIp8iGnTp+mXLlyH7y+bt26hIWFMXTo0Czq4SuCIODv788uPz9yGAx8p1DQW6HAMZUJ4a4Yjfjq9aw2GilUqBCr16+nUqVKGeqTGHxko0ePHhEYGMjly5c5c+YMBw4coHi9K6hzZN7w27s8ONscd9V9ToyakKXtpla8JpnK0ycQLy9GwWr7U7KOZgZBMBEa0BalIYhbt65jZ2eXaW2JRJ+CiRMnMmfOHCIjI1P9Oerv70/VqlXZt28fTZo0MUs/BEFgxIgRzJ8/n6Vd+/Ot56e90FtnMNB77SIO377G/gMHPjpCevPmTUqWLEm3bt3w9My6HXRarZY1q1Zx49Yt+igUzFapsEnnOo5rRiO99HouGQxM/e03fvjhh3SvCRHXfGSx4OBgfHx8cHJywsXFhZYtW/L7779z9epVZDIlkcGjMnxGQlrERe0n9ulhhtTO/pTq75NDbcGSLr1JenGO8KCBCELmnCopCAKRwSOJi9pPqVLFad++PXXr1qVjx474+flhMON+fpHoU9G/f380Gg0//PBDqj57kpOTGTVqFAULFqRRo0Zm64dEIuGPP/6gR48e9F+/lDXnjputbnNL0mnpsnIeB28Fs3XbtlRNzS5evJicOXN+dHTEnDQaDYsXLiTszh32WViwXK1Od+ABUFom45xKxTiFgnHjxjFu3LgsuV+JGU4zYM+ePUybNo2zZ89ia2tLhQoVcHd3x83NLSVn/40bN1i6dCkvwtZgn79npvfJoIvh0ZWB1C1elnYVqmR6exlRo0gJlnTpR791SwATbuWXmnUERBBMRFwZzvPQZQBER0dTqlQpJBIJISEhtG3bFhcXF7777ju+++67Dy6gE4k+Jy4uLvj6+tK/f38sLCyYNWvWe3+/4+PjadeuHUFBQRw7dszsfwdSqZQVK1ZgZWXF8IULeRYfx8j6zT+pv7dn8XF0X72QK4/C2Lt3L/Xr109Vuf3791OmTJk0bWnOCKPRyIqlS3keEcExtZqKZlpfIpdImKJSkVsi4bsZM7C1tWXs2LFmqfu9bWZq7V+o6OhohgwZwubNmylcuDA9e/akTJky71xoVLJkSSpVqsSloO+xzl0DlVWhTOuXIAhEXh2OzBTH/I5jMm07lTm186yCRAL91y9Dn3gHl/LLUeconuF6tYn3CA8aQEL0Gby8vPjzzz+pUqXKGz+TK1eusGDBAkaPHs3ly5dZvXp1li8WE4kyS79+/dBqtQwbNox9+/bh4+NDjx49Ug6ofPjwIUuWLGH58uVotVr27NlD5cqVM6UvUqmU+fPnY29vz+TJkzly5zoLO/SmoINTprSXWoIgsD0ogNF+65GqlBw+ciTV25Pj4+O5e/dulk63HDp0iPv373PMwsJsgcd/jVAqeS4I/Dh+PHXr1s3wGpAPEdd8pNHevXvp1asXSUlJtG7dGk9Pz4/e5JOSkpgz50/ik1UUqn4UpYWr2fslCAKPro/jWchcVnQfSNtPfNTjfwU8CGHAXysIe/kcx2ITcCg0GKks7amZTUYtz0OX8/jmT5iMOoYM9mH+/PkfLLN582Y6d+7MkCFD+PPPP9P7FkSiT9K5c+f4888/2bZtGyaTCVtbW4xGY8pnbM+ePRk2bBiFCmXeg9F/nThxgt49e/H40SMmNGvLgBr1s2UU5Fl8HKO2rmPXlQu0bdMG30WLcHR0THX5U6dOUbNmTcaMGZMlW/cjIyOZM2sW4xUKJqsyfsbV+xgEgao6HYn583Pp6tU07YIRF5xmktWrV9OnTx9KlChBhw4d0tS/ly9f8uefC0jWWVKg2j7U1kXM1i/BZCAyeBTRD5Yws21X+tdI3ZDhpyZZp2PgX0vZeeUicoUNufL3Ird7P1TWH/9Q1CU9JDp0ObHhq9EmP0MqlTJ06FDmzp2bqrb/+OMPRo4cye3btylatGgG34lI9OmJiopi9+7dREdHI5fLU9anWVtn/LyktEpMTGTs2LEsWLCAqoWLMe/bnhRxypqDHk0mE9svBzBm+wYkSgULfX1p3759muvx9fVl+PDhzJgxI0tGTP+cPRvLx4+5pFajzORR7WtGI54aDRMmT+bHH39MdTkx+MgE69ato3v37lStWpVvv/02XZH6y5cv8fVdwouXceQp+Ru5C/RHIslYxK+Jv0XEpT4kxQTxR/vu9KhaO0P1ZadknY6acyZh4WBPg4YNWb5iFbExL7DMkR9ljvJY2JRHYZEXiVSJYNKj10SRHBuELv4SSXEPsM5hQ5/ePVEoFMyfP5+IiIhUn6Wg0WhwdXWle/fuzJmT8YRmIpHo416Pgjx4GErDkuXoXa029UuURZYJIyExSYn8FXCaleeOc+/J43SNdvzXjBkzmDJlClOmTDFzT98WFhbGnDlz2G1hQfMsWl8yQKNhT65chEZEoFAoUlUmLfdvcc1HKpw4cYJevXpRpUoV2rdv/85pFq1WS0REBI8fP0ar1WI0GlEoFFhbW+Pq6oqTkxO5cuVi1KgR7N69mzNnRhD3aBvOpaZjmSvtc4YG3UuiHyzmya3fUMpl7Bs6jioFzTeakh2m7d/OwxfRBB05RMmSJfn111/Zu3cv58+fJ+BCIJcuzSEh/v+TH1laWlO+QgUqebWiUqVKtGjRAisrKwoXLkz79u3TdIiTWq2mT58+LF26lGnTpqHKxGFNkUj0Sq1atQi+fo1NmzaxcP4COiybS/7cjvSqUouuVWqQ2zrjD6CXw0NZfvoI24ICMAgm2rVty6pBgzJ8JL3BYMiy6aLTp0+TTyajSRauSRukULD06VN2795NmzZtzF7/Vxl8CILAvXv3uHbtGvHx8QiCgKWlJcWKFaNEiRJvrFxOSEigR48eFChQ4K3A48mTJ5w5c4bbt2/z9OlTBEFAKpWiVquRSqUYDAY0Gg0ASqUSFxcXypcvT/PmzSlXrhybNv/NnRPeWOWqgJ37AGzyNEWuev8hcCaTjuSYSzwPXUlsxGYEkw4ZAlq9ngsPQz7r4ONCaAgLjh/gt99+o2TJkgBYWFjQrl072rVrB7z6fzMYDGi1WlQqFXK5/K1AUK/Xc+/ePX766ac096Fu3brMnDmTp0+f4ubmlvE3JRKJPsrS0pLevXvTq1cvLly4gK+vL9M2bmLKP36UcsmHh0s+PFzd8XBzp2ReV1Ty/38KN5lMPHj+lCvhD3mRlEBMUhJP42N5kZjAy6RE7jx7TPjzaNxcXPlp4gT69OmDk5N5FrmqVKos2apvMBi4HBjIRJkMWRZuIignk1FVqWTNqlVi8JERycnJbNmyhfVr1nDhwgViExLeeZ2FSkW5MmVo17EjvXr1YuLEiURFRfH9998jlUoRBIHr169z4sQJ7t69i7W1NWXLlqVOnTq4ubmRJ0+eN+b/kpOTiYiIICIigvv377Njxw727NmDp6cn/fv1ITo6mlOnz3A7aADhgMrSBbWNJ0qrgkilagTBgFH3gqSYi2jibiAIBpDIQTDg4uREnwEDePz4MVPXrKFxSY8smzc1p2SdjkGbVlLR05NRo0a99zqJRIJCofjgEGBycjLwKnBJq9dnYbw+G0MkEmUdiURCpUqVqFSpErNnz+bvv/8mICCAwAsXWO93+tVoslxOQUcntDo9L5OSSNBoMZr+PZ9EIkMikSOY9MCrvEEqlSXly3syevRI2rVr98bhaxllZ2dHUlISGo3GLKnJ3+fRo0fojEbqZcNobF1ghb8/giCYfffkF7/mIz4+nqlTp7Js8WJexMZSX6GgjkSCp0xGOamUXBIJEiCBV4tsAk0mzhqN7DKZQCpFZzDQpk0batasSXx8PH///TdXr17F3d2d6tWr4+HhkaY93rGxsZw7d45z586RmJhI06ZNqV27NrGxsTx48ICIiAgehkUQExNHUlIimmQNNjY5yZvXibx581KwYEGaNWtGpUqVyJMnD/DqZulRthw5jQJ7Bv2AhRn/wDKbIAiM8VvPmvOnCAoKShn1SC+TyYRcLmf+/PkMHjw4TWW3b99OmzZtePz4ccrPViQSZb/k5GROnTrFjBkzOH3mHDptMjkcamOduw4WuSpgaVMeuer/p1n1mickxwSRFHOJpOdHiHt2hty5nRg4sB9jxowhR470H9vw5MkT5s+fj6+vLy9fvmTIkCEULlzYHG/znc6cOYPf338Tb22NRRanT9iu19NGoyEiIgIXl4+fTiwuOP3XkSNH6NOjB9FRUQyUShmoVFI4lXN0T00mGicn8yBnTiZMmMDVq1f5+++/kUgktGvXDg8Pjwz1TafTsW/fPk6cOEG+fPno2rUrDg5vTrkIgsDs2bMpX748u3bt+mB9AQEB1KldmxoFi7K+91AUss9jUGv2od38uncbvr6++Pj4mKXO2rVrIwgCJ06cSFO5jh07cvnyZW7evPlZ5EgRib4WO3fupG+/AcTGJWPr1jvVu+BeS467wfMHS4mJWEseJwdWr15BvXr10tQHQRDYuHEjQ4YMQaPR4Onpib+/P82aNaNOncw7t2br1q089/fnRjpGczMq1GSiQGJiqlPuf/Xp1U0mE2PGjKF+/foUfPaMYLWaWWp1qgMPePWDuS4I1KhRg+PHj7N69WoKFy7M2LFjMxx4wKs1IK1atWLo0KEkJiYyd+5cwsPD37hGIpFQrVo19u7dy8OHDz9YX6VKlfDbvp2jd24w8K9ln8Ux1otPHOLXvdv45ZdfzBZ4AAwaNIiTJ09y7dq1VJeJiopi27Zt+Pj4iIGHSPSJSE5OpmvXbrRq1QqDvCJF61zBpfT0NAUeABY5S+Jabi5FagcSp8tP/fr1GTx4cKqPlH/69CmtW7emS5cuFChQgB9//JF27drh5ubG/fv30/PWUk2j0WCXTZ9Juf5tNz4+3ux1f3HBh8lkYkD//sz6/Xdmq1QcViopkI4VyasNBgSpFL1ez65du2jQoAE9e/Y0+574ggUL8t1332Fvb8/ChQuJiIh44/uenp6oVCqWLl360boaNWrExo0b2Xk1kB5rfNHodWbtqznNObSHsdv/YtSoUfz8889mrbtVq1Y4OzszbNgwdLqP/wxMJhMjRoxAqVTSo0cPs/ZFJBKlT0JCAo0bN2Xz5m3kq7Cc/JW2olBnbE2byqoABarux6XsXBYvWUabNu3QarUfLBMaGkrVqlU5duwYvXr1onv37in3AQ8PD65fv05sbOwH68gIQRCQZtMExevVi8ZMeJj94oKPH374gRUrVrBarWakUolUIiFZEFit19Nfo6FjcjJ9NBrm6nS8+MB/6AGjEScnJ/bv30+DBg1o1qxZpj0RW1lZMWjQIBwcHFi8eDExMTEp31OpVJQqVYqDBw+mqq62bduyY8cOjty+Roflf/I8wfwRa0bojQZ+2rmJyXu3MnHiRH7//Xez/1yVSiUbN27kzJkztG3blsTExPf3R6+nb9++bNmyhbVr16aknhaJRNlHo9HQsmUrzvkH4l51D3b5uprtc0IikeJQcCDulbbyz/4DdOrc5b27VsLCwqhRowYJCQkMHz78rQPkvLy8kMvl+Pv7m6Vv76JQKEjMppGPxH/vkelZwP8xX1TwcfDgQWbNmsVslYruCgVxgsBojQYXjYZeGg0Xihblmbc318qUYYzRiEtSEr2TkwkzvXmiqiAIXDAaefLsGRUqVKBp06aZ3ne1Ws2AAQOQSqVs2bLljVMF3dzcuHr1aqqHCJs1a8b+AwcIfvqIKjN/YteVi5nV7TQJjgyj7txfWXTyEHPnzmXSpEmZFtDVqlWLnTt3cuzYMQoWLMiPP/74xtTVkydPmDp1KoULF2b9+vWsXbuWtm3bZkpfRCJR2nz//fecPHWa/JX8sLb3zpQ2cjo1Ip/nBnbs2MHUqVPf+n58fDz169dHo9EwaNAg7O3t37rG0tIST09Pzp49m6pR1vRwcHDgttGIKRtGP67/e2/MjKzPX0zwERcXR9+ePamvVDJCoeCxyUQNrZalCgV9RowgJCSEoGvXOHL8OOcDAwmPiGDClCnsz5WLylotV/4zrBRqMhErCKjVatq2bZtlawCsra1p3749N27c4MKFCymvu7m5odPpuH79eqrrqlWrFtdv3MC7Tm26r1pAn7WLsm0URG80MGP/TurM+QUhhzXnz59n+PDhmd5u48aNCQoKokOHDixYsAB3d3esrKywtrYmT548TJ06lQYNGnDx4kW6du2a6f0RiUQfd/z4cRYsWECeElOxzp2xRGAfY+PcDMciY/j11ylcvnz5je99//33hIWF0b9//w+OiNapU4fExET++eefTOmjm5sbiSYTd/7nITkrBJpMWFlYUKxYMbPX/cXsdhk9ejRL5s7lmlqNvURCDa2WZ3Z2HDhyhFKlSr233JMnT2jaqBGPbtzAX6kkv1TKDxoNM/8dji9durQ53laarF+/nuvXr/PTTz9hZWWFVqvlhx9+YN26dWm+SQqCwKZNmxgyeDAyo4nf23ShZdmKWZaZ73J4KEO3rOLGowjGjRvHTz/9lC3ZQxMSEtizZw9RUVGYTCYcHBxo3rw5uXLlyvK+iESid0tMTKRkyTLEJOelQLVDGT5+IjVMJh33TnlTwFVK4MUAlEolR44coX79+rRr147q1at/tI6jR4+ye/duhg0bRoECBczav6SkJMaPH89KtZpeqUxzbi5tNBqeenpy+ty5VF3/1e12SUxMZPmSJQyRycgvlbJQp+MmsO/gwQ8GHgBOTk78c/AgMjs7fv532GybyUSRIkWyJfAA+Oabb9DpdAQEBACv1n1IpVIS3pMY7UMkEgmdOnVKGQXpudqXSjN+xPf4AWKS3r8WIiN0BgPbgwJoumA6tWdPShnt+PXXX7Mtbbm1tTUdO3ZkxIgRjBw5km7duomBh0j0iVm5ciUREeG4lFuaJYEHgFSqxKXcEq4FX2Hr1q1otVp69epFkSJFqFatWqrqqF27Nvny5WPDhg0fXGOWHpaWlhQpWJAVWZBN9b+emkzsMRpp8+23mVL/FxF8bNy4kbiEBAYoFBgFgUWCQKfOnSlbtmyqyjs6OjJ81Cg2G40c0eu5ZzRSq1atTO71++XIkQMPDw/OnDmD6d+hNplMluo1H++SJ08e/LZv5+TJk1SsXZOJe7dSYtJIhm5ayeXwULP0OzLmBVP3+VHm1+/ptcYXubMDmzdv5tLlIDw9035+jUgk+noIgsD8+b7YOH+T5q20GWVpW4GcjrWZv8CXbdu2ER4eTtu2bVM9QiyVSunatStJSUksWbIk5VgNc/GuWZMzBgPBWZhCYYVej0wup2fPnplS/+eRieoj1q5aRWOFAneplL0GAw/1egalMbtlr169+PnHHxmn05ErZ84MZ9rMqOrVqxMYGMitW7coUaIEer0+wyl8JRIJNWrUoEaNGkRFRbFixQoW+y5inf9JXO1yU84lHx5u7innKDjkeP+wWYJWQ3BkGJfDQ7kcHsqVR2HcfhyJlaUl3Xv0wMfHJ9tGjkQi0efn+PHj3L17i0Lef2ZL+3b5++N/rjPJSQkULVo0zVmOHRwcGDhwIAsXLmThwoUMGDDAbKkZypQpg621NVO0WjZnweFysYLAfEGgU5cu2NnZZUobn33wYTQaCbx0iV/+jVAvG43Y29jg5eWVpnpy585N5UqVuHDuHNW8vLJsTcT7uLu7Y2try6pVq3B3dwcw6zRBnjx5+O6773BwcGDun/O4e+cOj14Gsf/6ZYz/jrY4WOckl5UVFgolaoUSg9GI1mggUa8j9NkTBEFApVRRrmwZ6nzTgrGVK9OmTZsMpS4WiURfp61bt2KZswDWuWtmS/s2zi1QqGy4cuUKvXr1Slcdbm5uDBkyhMWLFzNz5kzat29vlocwmUxG05Yt2bBhAx1lMlpn8tqPkVotCQoFk375JdPa+OyDj1u3bpGk0eD57z7kRMDayipddSlUKpJNJvLnz2/GHqaPRCKhQIEChIaGpiR4GThwIFeuXGHYsGFvpWJPi+joaKZOncqKlauJj4/FxqkBjsW6YGFbAXXOcpgML0iKCUITe5Vo7TP0yZHo459g1D5Fr3mMUqWmYcOGjB8/nqpVq37woDeRSCRKjfPnL6KyqZptGYYlUgVShQMqNBkKGFxdXRk9ejRbtmxh+fLlVKxYkW+++SZDD2VPnz7l/PnzSIB+Wi3eMhmOmfSAvM9gYKVezzJfX/Lly5cpbcAXEHwEBwcD4PHvUFQOIDY+Pl2n8EX+m978UzlO3c3NjevXr/Pzzz/z5MkTzp49y+zZs1m0aBGLFi3i23QsBPLz86P/AB/i43XY5uuLa+U+qKz+Z3W2Khcqq0Lg0u6t8tqEe0SHLuPosRVcvtyJFSuW0qxZs/S+RZFIJEKv1xMcfAWHYu2zuSdSXF1d3ziZPD1sbW3p168fFy5cwM/Pj6CgIDw8PKhevTru7u6pujeZTCZu3rzJ6dOnuXXrFra2tnTv0YPtf/9NY62WY2o1NmYO1C4YjXTQ6WjWpAl9+vQxa93/67MPPl7nnLf999+VZTJi4uM5efJkmhaNPnr0iNshIViq1Z9MlktXV1d0Oh3R0dE4OzvTtm1bGjZsyNatW2nfvj1t27ZlyZIl70x+87+Sk5Pp3acvmzZuwDZvC4rUmY9CnfaTW1XWhXApPR2HQkOIvDKI5s2b06tXLxYtWpRtO1lEItHn7e7du+h0WixsUrdJILMIhufky2eePkgkEipVqkSpUqUICAjgzJkzBAYGYm9vT758+XBzc8PV1RVLS0tkMhlGo5G4uDjCw8MJDw/n4cOHxMfHY29vT8eOHSlfvjxKpRJHR0d8582jjkbDfpXKbCMgpwwGmut0lK5QgU1btmT6CNRnH3yYTCb++yOqI5NRXKnEd8GCNAUfy5YtQw7ksLT8ZA4Ws7S0BHhj5XSOHDno2bMnQUFB+Pn54e3tzZEjRz543HF8fDzNmrXg7LkA8nmuIpdrxwy/R6WFK+6Vd/Li4WrWrhtBeHgkO3duT+mzSCQSpdbrh0iZInMWN6aGQReDTvMcV1dXs9ZrZWVFnTp1qFWrFrdv3+bmzZuEh4dz/fr1d2ZFtbS0xNXVlUqVKhEYGEjp0qWpXLlyyvddXFzwGTqUpb6+lNZoWKJQZGgNiFYQ+FWnY7peT43q1dm1d6/ZzzB7l88++LCwsEAANIAFr6LNQRIJI7dv5/Tp06lKEPPgwQPmz51LMYmEF1mwkji15PJX/z3/e6iPRCKhQoUKuLq6snjxYmrUqMGZM2dwdn770CWNRkOLFt/gf/4SBaruxdo+dfvWU0MikWDv3gullTvHT7SlTZt27Nq1A6VSabY2RCLRl+/12SoSafbdkoz6GIBMu/FKpVJKlChBiRIlgFcPztHR0Wg0GoxGI3K5HEtLS+zs7FIeDu/du0dycvJbdbm6ujLqhx/4e/Nm2ty4wbcGAz8plZRNw/3LKAjsMxoZbzBwy2RiwqRJjBs3LsvW8H32eT5e55y//p/Us/0VCqpLpbRo2pTTp09/sHxISAgN6tQhV2IitWUyjFmcyOVDXv9Bvg5C/pejoyODBw8mJiaGhg0bvvOX9Pvvv+f0mXP/npFgvsDjv3I41CG/1xYOHT7MhAkTMqUNkUj05XqdRsBkNG9+jLQQhFd5lDK63iO1pFIpjo6O5MuXjwIFCuDm5oa9vf0bo9Kvp2PexcLCAtO/1xy1sqJcUhLVtVpW6HTcMBoxviN5eZIgcM5oZKpWS0GtlpbJyVh7eHAxMJAJEyZk6eYBswcf06ZNw8vLixw5cuDo6EirVq24ffu2uZtJUa5cOWRSKYH/+Q9SSSRsV6kop9FQt3ZtunTuzJkzZ944rO3GjRsMHTqUCuXKIXv0iINKJW4SCbEJCSmJvbJbXFwcwAenMuzt7enfvz+3b99+68b//2ckTMn0MxJyONbHqehP/P7775w/fz5T2xKJRF+W11MdusT7Ka+ZjFpiH+8h+v4Snt1byMvwTRh0LzKtD1LpqxHbzDg+Pr0MBsM7g6Hw8HDmzp3LgwcP2Lt3L4+fPWPr1q2oqlalr1ZLqaQkbJKT8dLpqKXVUkOrpZROR87ERKolJTEFqNelCwEBAZwLCHjrtN6sYPYxrhMnTjB48GC8vLwwGAz8+OOPNGzYkBs3bmCVzi2wH2JhYUGp4sU5e+cOA/7zuq1EwgGVioV6PYu2bWPDxo042dtjlysXCQkJhEdF4ahQMEwi4TuVCnuJhPIyGZrkZJ49e4aTk5PZ+5pWERERKcNwH+Ls7Ezjxo2ZPXs2bdq0oWrVqiQmJtKjR29yOniTu+CgLOmvY5FRxD/ZRffuvbhy5VKGk6KJRKKvg5OTE055XEiKuYSlXWWeP1hCTPhqtMlPkcnkyGQydDotMrkam7zfkrvgICxty5u1DzLFqzxKr9effAoSEhLeOCtGr9dz8OBBjhw5QpkyZfjnn39SMnm3bduWtm3bEhMTw6VLlwgMDOTOnTskJycjk8kolyMHw8uWpWLFipQuXTrbp8fNHnzs37//jX+vWrUKR0dHAgMDqVkzc5LHtO3QgRmTJzNPEN7YeqSSSBipVDJCEDgkk3EuPp7YuDisJRJKq9W0lstR/uf6Cv9GmBEREZ9E8BEWFoarq2uqFofWqVOH4OBgevTowc2bN1m9ejXhEWEUr7s7y85IkEjluHgs5faximzatCnT0vKKRKIvTyUvT46cPkZsxGoUMh39+/Zg4MCBlChRAolEwpMnT1i1ahULFy7m7skNuJT9k9zufc3WvkyRE7lCTXh4OBUrVjRbvemVlJTE8+evFsC+ePGCM2fOcOHCBZKTk5k0aRJjx4595zSJra0tdevWpW7dutnQ69TL9LtSbGwswHuf3rVaLXFxcW98pVXfvn3RAWvfc/aJVCKhkVzOJJWKP9RqflWp6KBQvBF4ANhLJOSXywkNDU1zH8zNZDKlBB+pIZVKadOmDXfv3mXv3r3Mn++LrfM3qKwLZ3JP32SRsxQ2Tg2ZN29hlrYrEok+b4ULF0Ibd5nyHsV48OAe8+bNo2TJkikPX05OTowdO5YHD0LwGTiAiMtDeBG2zmzt65IeYtBriIiIMFudGfG6H6dOneLXX3/lwoUL9OrVi2vXrvHzzz9/9skdMzX4EASBkSNHUr169fdmjJs2bRo2NjYpX+lJ8JU3b15at27NHJOJxHcsskmLdhIJQRcuvHMLVFa6efMmcXFxaZqLy5cvH/nz52fq1Kncvn0DO/f+mdjD97NzH0BQ0EUuXLiQLe2LRKLPiyAI/PPPP5QoUYJDB/eTO3fu914rl8tZsGABffr0IeLyIHTJkWbpQ3TocpRKFZGRkSmL/bNTaGgoUqmUChUqsGTJEh49esTcuXNTNll87jI1+BgyZAhXr15l48aN771m3LhxxMbGpnyF/5tlNK1+mzaNJ1Ip47Ta9HYXAB+lkgSNhqCgoAzV85ogCGg0GmJjY9FqtW8sev2Q06dP4+bmlub0ttWqVSMgIACLHO5Y586ek3lzOjVCbZmHbdu2ZUv7IpHo83L8+HFu3brFvHnzUrXVVSKRMHv2bFQqJS8erspw+yajltiINbRv/y0ajYbLly9nuM4M9cdk4vz583Ts2BE/Pz/69euXKWsms1OmbaoeOnQou3bt4uTJkx+cOlCpVGbJjFm4cGGmzZjBiBEjaC2XU+c921M/ppBUSiO5nDMnTuCVgQPmEhISOH/+POfOnSM6Ojrl9bx581KtWjUqVqz43gWZT58+5datW3To0CHNycDKly/Ppk1/o7apnH1nJEhkqGy8uHAhMFvaF4lEnxdfX19KlChB7dq1U13GxsaGHj26sXrdSpyK/oBEmv5piKd3Z6PXPufHH3/k0aNHnD17NlvXfdy5c4fnz58zaFDWbBbIDmYf+RAEgSFDhuDn58fRo0ffWKmb2YYOHUrdWrVoo9dzJQPbpcYqFIT9+wuYHidOnOCXX37hwIEDNGnShA0bNrB7927WrVtH5cqV2b59O5MmTSIw8O2bs8lkYsuWLdja2lKhQoU0t/1qW5aAhW3ay5qThU15LgYGpnqkRyQSfb2OHTuWroetjh07okl8hCbhbrrbTo4N5undaYwbO5bixYszePBg7t+/n+5ReHM4efIkpUuXplq1zMnN9Ckwe/AxePBg1q9fz4YNG8iRIwdRUVFERUW9MwGWuUmlUvx27qRgqVLU0enwT2cAUlsup79Cwe6dO3n+/Hmayu7fv5/t27fj4+NDZGQka9eupVOnTjRv3pyuXbvi5+fHw4cPadOmDevWrePcuXNvlD979iwhISF06tQpXVuhnj9/jiAYs/2MBAubcsTFviQy0jzzsSKR6MsVGxubrpO6X68NMelj09WuyZhM5JV+FCtajJ9//hmAli1bUqRIEbZt25YtOT+uXbvGjRs3GDt27Cdz1EdmMHvwsWjRImJjY6lduzbOzs4pX5s3bzZ3U+9kY2PDkePHKVmxIjWSk/lFq0WXjqfvWSoVDiYTG9evT/XioytXrrB//36mTp3Kn3/++d5FUy4uLqxfvx4fHx/+/vtv7t9/lVjnyZMn7Nq1i2rVqqV7UZH23zUvr/esZxeZ0hZ4Nf0kEolEH2JhYZGuB9TXZSQyizSXNZl0PLzYGUPSHdavX5My/S+Xy1mzZg1hYWEcP348zfVmRFJSElu3bqVp06Z07tw5S9vOapky7fKur6zM+WBra8vREycY//PPTDEaqaTVsttgeGe62fexBsbJ5dwPDWXdunWpioCPHj1K/fr1GTdu3EevlUgkzJ8/n+LFi3P8+HFevHjBokWLsLOzo2XLlqnu5/963U+JJHvPqJFIXq25+RRWjYtEok9bsWLF0nWjP3HiBFKZEqVl/jSVMxoSeRjQjqToI+zateOtKe6qVasycuRI9u/fn2Wjt4IgsHXrVkwmE0uXLv2iRz3gCzjb5X2USiW//PILARcuoC5blpbJyRTSapmq1XLGYHjnllydIHDJaGSBTkcFnY7BWi2OuXMTHBzM2rVrP3gjDQsL4+HDhwwbNizVvzQymYwhQ4YQHBzM3Llzkclk+Pj4ZCgz6Ou93yZT9p2RAK+GMwExy6lIJPqo/v37s3fv3jTlWDKZTCxYsAibvG2RK1M/0pvw/Cz3TlZGF3uGf/7ZR4MGDd553eTJkylZsiRLly7l2bNnqa4/PQRBYNeuXVy6dImlS5d+8JTyL8UXG3y8Vr58efwvXiQgIIC6XbowVSKhenIyORMTKa7TUUWno5pORxmdjhxJSXgmJTFcr8etlqEY+QAAGw5JREFUQQP++ecfIqOi2LFjBzdv3mTu3LnvTUBz6dIl8uTJQ9OmTdPUv65du6JUKhEEgWHDhmFjY5Oh92trawu8eUaCuWkTQoh/dpz4p4dJiglCEN4eFdIl3kcqlb7zpF2RSCT6r86dO5MzZ06mTZuW6jKbNm0iNPQeuQsM+PjFgF77lMjg7wk5XY/SJRwICgqkXr16773ewsKCgwcP4ujoyMKFC3n8+HGq+5YWJpOJ7du3c+zYMebNm0eHDh0ypZ1PTfadX5zFvLy88Fq1iiVLl3L9+nUCAwMJDg4mPj4eQRCwtLRkQPHieHp6Uq5cuTcOc2vRogX+/v5069aNP/74gwYNGlC/fv03TpuNj4+nSJEiaT4RMUeOHOTJk4f8+fNnOPAAsLKywtIyJ0kvL5HL1Xy/xCajhphHfrx8uJT4aP83vmeRIz+2bv2wz98DuerVorGkmCCKFC3xxe1NF4lE5mdlZcW0adMYNGgQ7u7uH11seeTIEXr17oOtS1ssc1V+73WCYCTxxXmehy4l9pEfCoWMWb//zogRI1L1We3o6MjJkydp0KAB8+bNo2XLllSpUsVsUyIvX75k8+bN3L59G19fX3x8fMxS7+fgqwk+XlMoFHh4eODh4ZGmcuXLl+fSpUtMmTKF3377jbNnz1KpUiWqVauWkjo+vb+QMpnsjUAmo1QqOUkxF81Wny4pjIcB35AYc5O6deszaNBWypUrh1wuJywsjBUrVrJp069Eh8wkX8WN5HCshzYukMo1Pc3WB5FI9GXz8fHhyZMnjB8/ngsXLjBy5Ei8vb3f+FwNCQlh8eLFzJ07F0EQiHm8D8Pp+ljYVkShdkIiVWIyadEnP0IXf4mkmKsY9Im4uxfixxm/0bNnT+zt7dPUrzx58nD69Gm+++47Vq1axZUrV+jQoQO5cqV/Uf/rJGK7du0iV65c7Nu3j8aNG6e7vs+RRPjEEjHExcVhY2NDbGwsOXPmzO7uvNPrKHXVqlUkJCRQsGBBNBoNRqORiIiINI1+JCQk4ODgQKNGjahTp45Z+jdx4kTi4pMo2egeCpVjhurSJz/i/plaONjJ2bVr+3vTvUdHR9OlSzcOHzmCq8dywgJ7MnnyLynb10QikSg11q9fz4QJE3jw4AHFixenQoUKyP89c+vkyZOo1Wq0Wi0KhYIaNWpga2vLhYtBvHjxHL1eh1KpInduByp5VaBixYpUrlwZb2/vdCeM/K/9+/fTp08fnj59Srly5fD29qZAgQKpfvBMSkoiICCAs2fP8vTpU3r37s2cOXPMMur9KUjL/VsMPjIgMTGRDRs2sH//fnbs2IHJZGLPnj00a9Ys1XUsWbKEQYMG8fPPP2cokn4tOTmZ8ePHI5MpcCj6M05Fv89QfffPNsRSeo8LF/w/esidXq+nabMWHD9+EqNB93/t3XlQVFf2B/BvAw2NaDAqCi2IHYwgogQRBRHJaIliQtxGJDoooIkmBkWSAiI1pZkkijpqySBiHETjPgIuKTQKssioICAmGBIkYXOBEFEWF6Dpvr8/fkNXkKbpxt49n6qusl/fezm3Ds93eP3eu5gw4S0UFirvDAwh5NUgFotx+fJl7N69Gz/88AMePXqE9vZ2mJiYYNSoUVi5ciUCAwM1ctBubm5GYmIi4uLiUFFRAT6fD4FAABsbG1hbW2PQoEEwMjKCWCxGa2srHjx4gOrqapSWlqK2thZisRhisRg8Hg8TJkzAxx9/jL/+9a9KedK3plHxoQF+fn7IyMiAl5cXLl68KFclLBKJ4OzsDAMDA6xYsUIpceTm5uLs2bNYuHAhzp3Pw+jppX2+7fZ5048oy5qE5ORkLFy4UK4+dXV1sLGxwejRo1FaWoqCggKtWJ6aEEKUSSwWIyMjA0ePHsWNGzdw584diMViqW25XC6EQiGmTp2KefPmYeDAgWhubkZaWhouX74MCwsLJCQkYMGCBWqehXJR8aEBFy9elHxnt3XrVkRERMhszxhDWFgY4uLisGbNGtjZ2b10DIwxbNu2DZ6entiwYQNcXV1hNTYGQ0et69N4d299AqPn53HvXrVC16QEBAQgLy8PYrEYM2fORGJiYp9+PiGE6IqnT5/i1q1bqKurQ2trK4yMjFBYWIhdu3Zh9uzZiImJkbq6+y+//ILo6GicPn0a+/fvV9ofopqgyPFb72+1VZeZM2dCIBDA0tISkZGR+Oyzz/D48WOpbevq6hAUFITY2FgsWLBAKYUHAJSXl6O2thYff/wxXFxcsHbtWvz+y8Y+r3vw9I80LFu2VOGLYYODg1FdXY0ZM2ao/QmBhBCiCWZmZvD09MTChQuxdOlSvPHGG4iNjcWSJUtw9uxZqYUHADg4OODUqVP48MMPsWrVKuTk5Kg5cs2g4kNJDAwMEBkZibq6OkyZMgW7d+8Gn89HSEgITp06he+//x4nTpyAv78/bGxscOLECSxduhRTp05Vys8XCoVITU3FxIkTJStDbt68GSNsrHH/1gcQi9oUHrO9tQE2NjYK9+u8NsTExARNTX1bc4EQQnTZ1q1bYWdnh3//+9+93oRgYGCAuLg4ODs7K/SsE132yt1qq0offPABjh8/jtu3byMyMhK3bt3C2bNnkZSUJGljaWkJPz8/uLm5dXmWyMu6cOECHj16hMuXL0uuN+nXrx+OHv0Wb7/9F9TcXA5b1yPgGMifckNDYwiFQoVj6ezT0dGh1DkSQoguuH//Ps6cOYPY2Fi5Fwg1MjLC2rVrERQUhF9//RWjRo1ScZSaRcWHEhkYGCApKQlOTk7IyMhAQEAAZsyYgefPn0uu1DY1NVX6M/t/++03ZGdn4+uvv4ajo2OXzzw8PJCcfArz5y9AdeH7GOH6LQzkXITJuJ8NCguLFI6nqKgIHA4HJSUlcHBwULg/IYTosuPHj8PY2Bh/+9vfFOrn7++PsLAwHD58GF988YWKotMO9LWLkgkEAuzZswf5+fm4cOECDAwMYGZmhtdffx39+vVTeuFx7949JCYmwsvLC5999pnUNn5+fjh37iyeN6Tj1yvuePooX66xzYcvQ3JyskLrGjDGEB8fD09PT9y4cQOrVsn36GNCCNEX9+7dg0AgUPimCVNTU7z55ptqW8xOk6j4UIGgoCBs3boVly5dwnfffQdV3VBUVVWFvXv3wsHBAefOnZN5YeicOXNQVFQIh1Gv4dfcv+D+7c/R0Sa7qBhkuwxixkFcXJzcMV25cgU3b94EYwx8Pv+lVuglhBBdJBKJFF5qo5OhoaFcq6jrOio+VCQiIgK7du3C5cuXsX//fjQ2NiptbLFYjMzMTOzZswdvvfUWMjMz5aqwx44di/y8a9i8+Ws0392L0kt2qC4KwpOGq2Di7iv2GhkPxmBBKL766iucOnWq1/HLysrg7++P4cOH4+rVq9ixY4dklV1CCHlVWFhY4N69ewpfMycWi1FTU4MhQ4aoKDLtQc/5ULG0tDSsWLECLS0tmDt3Ltzc3F7qMb91dXU4efIkqqqqsH79enz11VcwNZXvGo4/a2hoQFJSEuLi9qK6ugJGRqYwHTgeJgNcwOVZgWPAhVjcDuHzB2iuTUFH+yNERUUhNDS020q1z549w7FjxxAREQGRSITm5mbExsYiNDS0z/MkhBBdVVJSgvHjx+M///kPFi1aJHe/CxcuYM6cObh+/Trc3d1VGKFq0EPGtMzjx4+xbt06HD58GMOGDYOHhwcmTZok950gYrEYZWVluHr1KkpLSyEQCHDo0CF4enq+dGxisRjXr1/HjRs3UFRUhPwbRf97lHHb/9ZIGAK3iS74448/kJubC6FQCD8/P7i4uIDL5aK6uhrHjh1Dc3MzOBwOHB0dsXnzZvq6hRDySps2bRo4HA6ys7PlvtbvnXfeQW1treSifV1DxYcWefLkCY4ePYqEhASUlJRAJBKBw+HA0NAQ9vb2sLa2ho2NDfh8PkxMTGBgYICOjg48fPgQ9+7dw927d1FZWYk//vgDTk5OCA0NRWBgYJ/OdryspqYmHD58GAcOHEBlZSVaW1vB5XIxePBgTJo0CevWrYOHh4dO7jSEEKJMZ86cwfz587F9+/Yebwb4s4SEBHz00Uc4fPiwwnfJaAsqPrREYmIi1q9fj6dPn8LPzw8+Pj7o378/qqqqkJSUhKqqKpkXF3G5XDg5OWHy5MkIDAykAzshhOiQ6OhobN68GdHR0diwYYPUs92tra3YuXMnoqOjERoait27d+vs//NUfGiB7du3IyIiAiEhIdi4cSNGjBjRrc3t27cRHh6OzMxMfP7553BxcYFIJAKPx8Pw4cPh5OQk9wNqCCGEaBfGGGJiYhAdHQ1zc3MEBwdj7ty5MDc3lywsl5iYiIaGBkRHR+PLL7/U2cIDoOJD486ePYt58+bJ9cvU0dGBJUuW4LvvvkN+fj7Gjx+vxkgJIYSoWkVFBfbt2ycpNDoNHDgQwcHBWL16NUaPHq3BCJWDig8NmzRpEgYMGICMjAy5qtjW1laMGTMG3t7eOHjwoOoDJIQQonatra2oqqpCS0sL+vfvj5EjR2rk+j1VoVVtNaigoAAFBQUICwuT+/QZj8fD6tWrceLEiS5VMSGEEP3B4/Hg4OAANzc3jBkzRq8KD0VR8aFkR44cwfDhwzFnzhyF+oWEhEAkEiE5OVlFkRFCCCHagYoPJXvw4AEcHR0VfrSuhYUFhg4digcPHqgoMkIIIUQ7UPGhZCKRqM9PMH1VnulPCCHk1UbFh5JZWFigoqJC4cXknjx5gvr6elhYWKgoMkIIIUQ7UPGhZIsWLUJ5eTmuXr2qUL9jx45BKBRi/vz5KoqMEEII0Q5UfCjZ9OnTMXr0aIWWoReLxdizZw/8/PykPoyMEEII0SdUfCiZgYEBwsPDcfLkSRw6dKjX9owxbNiwASUlJVi/fr0aIiSEEEI0y0jTAeijDz/8EIWFhQgODkZ9fT1CQ0PB4/G6tWtsbER0dDTi4+OxY8cOeHt7ayBaQgghRL2o+FABDoeDffv2YeDAgYiIiMC2bdsQEhKCWbNmoX///nj8+DFSUlJw9OhRtLe3Y+/evVi9erWmwyaEEELUgh6vrmJlZWVISEhAUlISmpqaJNv5fD5WrVqFlStXgs/nazBCQggh5OXR2i5a6Pnz57h//z6ePHkCc3Nz2NjYwMiITjwRQgjRD4ocv+nopyampqYYNWqUpsMghBBCNI7udiGEEEKIWlHxQQghhBC1UlnxER8fD4FAAB6PB1dXV+Tm5qrqRxFCCCFEh6ik+Dh58iTCwsIQHR2N4uJieHl5wdfXFzU1Nar4cYQQQgjRISq522Xy5MmYMGEC9u7dK9k2ZswYzJs3D1u2bJHZV1/vdiGEEEL0mUbvdmlvb0dRURGioqK6bPfx8cG1a9e6tW9ra0NbW5vkfeezMJqbm5UdGiGEEEJUpPO4Lc85DaUXHw8fPoRIJMKwYcO6bB82bBjq6uq6td+yZQu++OKLbtttbGyUHRohhBBCVKylpQXm5uYy26jsOR8cDqfLe8ZYt20A8PnnnyM8PFzyvrGxEba2tqipqek1eH3Q3NwMGxsb3L1795X4monmq99ovvqN5qvfXna+jDG0tLTI9dRupRcfQ4YMgaGhYbezHPX19d3OhgCAiYkJTExMum03Nzd/JZLd6bXXXqP56jGar36j+eo3mq/85D1poPS7XYyNjeHq6or09PQu29PT0zFlyhRl/zhCCCGE6BiVfO0SHh6OwMBATJw4ER4eHvjmm29QU1NDK7cSQgghRDXFx+LFi9HQ0IB//OMfqK2thZOTE86fPw9bW9te+5qYmGDjxo1Sv4rRRzRf/Ubz1W80X/1G81UdrVvVlhBCCCH6jdZ2IYQQQohaUfFBCCGEELWi4oMQQgghakXFByGEEELUSiPFR3x8PAQCAXg8HlxdXZGbmyuzfU5ODlxdXcHj8fDGG28gISFBTZG+nC1btsDNzQ0DBgzA0KFDMW/ePJSVlcnsk52dDQ6H0+31yy+/qCnqvtu0aVO3uC0tLWX20dXcAsDIkSOl5mrNmjVS2+tabq9cuQI/Pz/w+XxwOBycOXOmy+eMMWzatAl8Ph+mpqZ4++238dNPP/U6bkpKChwdHWFiYgJHR0ecPn1aRTNQjKz5CoVCREZGYty4cTAzMwOfz8eyZcvw4MEDmWMePHhQas5bW1tVPJve9ZbfoKCgbnG7u7v3Oq4u5heA1DxxOBxs3769xzG1Nb/yHHs0vf+qvfg4efIkwsLCEB0djeLiYnh5ecHX1xc1NTVS21dWVmLOnDnw8vJCcXExNmzYgLVr1yIlJUXNkSsuJycHa9asQV5eHtLT09HR0QEfHx88ffq0175lZWWora2VvN588001RPzyxo4d2yXukpKSHtvqcm4BoKCgoMtcOx+st2jRIpn9dCW3T58+hbOzM+Li4qR+vm3bNuzcuRNxcXEoKCiApaUlZs6ciZaWlh7HvH79OhYvXozAwED88MMPCAwMhL+/P/Lz81U1DbnJmu+zZ89w8+ZN/P3vf8fNmzeRmpqKO3fu4L333ut13Ndee61Lvmtra8Hj8VQxBYX0ll8AmD17dpe4z58/L3NMXc0vgG45OnDgADgcDhYuXChzXG3MrzzHHo3vv0zNJk2axFavXt1lm4ODA4uKipLaPiIigjk4OHTZtmrVKubu7q6yGFWlvr6eAWA5OTk9tsnKymIA2OPHj9UXmJJs3LiROTs7y91en3LLGGPr1q1jdnZ2TCwWS/1cl3MLgJ0+fVryXiwWM0tLSxYTEyPZ1trayszNzVlCQkKP4/j7+7PZs2d32TZr1iwWEBCg9JhfxovzlebGjRsMAKuuru6xTVJSEjM3N1ducCogbb7Lly9nc+fOVWgcfcrv3Llz2fTp02W20ZX8vnjs0Yb9V61nPtrb21FUVAQfH58u2318fHDt2jWpfa5fv96t/axZs1BYWAihUKiyWFWhqakJADBo0KBe27q4uMDKygozZsxAVlaWqkNTmvLycvD5fAgEAgQEBKCioqLHtvqU2/b2dhw5cgQhISFSF1D8M13N7Z9VVlairq6uS/5MTEzg7e3d474M9JxzWX20VVNTEzgcDgYOHCiz3ZMnT2Brawtra2u8++67KC4uVk+ASpCdnY2hQ4di9OjR+OCDD1BfXy+zvb7k9/fff0daWhpWrFjRa1tdyO+Lxx5t2H/VWnw8fPgQIpGo2wJzw4YN67YQXae6ujqp7Ts6OvDw4UOVxapsjDGEh4dj6tSpcHJy6rGdlZUVvvnmG6SkpCA1NRX29vaYMWMGrly5osZo+2by5Mn49ttvcfHiRezfvx91dXWYMmUKGhoapLbXl9wCwJkzZ9DY2IigoKAe2+hybl/Uub8qsi939lO0jzZqbW1FVFQUlixZInMBLgcHBxw8eBDnzp3D8ePHwePx4OnpifLycjVG2ze+vr44evQoMjMzsWPHDhQUFGD69Oloa2vrsY++5PfQoUMYMGAAFixYILOdLuRX2rFHG/ZflTxevTcv/mXIGJP516K09tK2a7NPPvkEP/74I/773//KbGdvbw97e3vJew8PD9y9exf//Oc/MW3aNFWH+VJ8fX0l/x43bhw8PDxgZ2eHQ4cOITw8XGoffcgtACQmJsLX11fmUtK6nNueKLov97WPNhEKhQgICIBYLEZ8fLzMtu7u7l0u0vT09MSECRPwr3/9C7GxsaoO9aUsXrxY8m8nJydMnDgRtra2SEtLk3lQ1vX8AsCBAwewdOnSXq/d0IX8yjr2aHL/VeuZjyFDhsDQ0LBblVRfX9+tmupkaWkptb2RkREGDx6ssliVKTQ0FOfOnUNWVhasra0V7u/u7q5VlbS8zMzMMG7cuB5j14fcAkB1dTUyMjKwcuVKhfvqam4772JSZF/u7KdoH20iFArh7++PyspKpKenK7zsuIGBAdzc3HQy51ZWVrC1tZUZu67nFwByc3NRVlbWp/1Z2/Lb07FHG/ZftRYfxsbGcHV1ldwV0Ck9PR1TpkyR2sfDw6Nb+0uXLmHixIngcrkqi1UZGGP45JNPkJqaiszMTAgEgj6NU1xcDCsrKyVHp3ptbW34+eefe4xdl3P7Z0lJSRg6dCjeeecdhfvqam4FAgEsLS275K+9vR05OTk97stAzzmX1UdbdBYe5eXlyMjI6FOBzBjDrVu3dDLnDQ0NuHv3rszYdTm/nRITE+Hq6gpnZ2eF+2pLfns79mjF/qvwJaov6cSJE4zL5bLExERWWlrKwsLCmJmZGauqqmKMMRYVFcUCAwMl7SsqKli/fv3Y+vXrWWlpKUtMTGRcLpclJyerO3SFffTRR8zc3JxlZ2ez2tpayevZs2eSNi/Od9euXez06dPszp077Pbt2ywqKooBYCkpKZqYgkI+/fRTlp2dzSoqKlheXh5799132YABA/Qyt51EIhEbMWIEi4yM7PaZrue2paWFFRcXs+LiYgaA7dy5kxUXF0vu7oiJiWHm5uYsNTWVlZSUsPfff59ZWVmx5uZmyRiBgYFd7mS7evUqMzQ0ZDExMeznn39mMTExzMjIiOXl5al9fi+SNV+hUMjee+89Zm1tzW7dutVlf25ra5OM8eJ8N23axL7//nv222+/seLiYhYcHMyMjIxYfn6+JqbYhaz5trS0sE8//ZRdu3aNVVZWsqysLObh4cGGDx+ul/nt1NTUxPr168f27t0rdQxdya88xx5N779qLz4YY2zPnj3M1taWGRsbswkTJnS59XT58uXM29u7S/vs7Gzm4uLCjI2N2ciRI3v8xdA2AKS+kpKSJG1enO/WrVuZnZ0d4/F47PXXX2dTp05laWlp6g++DxYvXsysrKwYl8tlfD6fLViwgP3000+Sz/Upt50uXrzIALCysrJun+l6bjtvDX7xtXz5csbY/9+ut3HjRmZpaclMTEzYtGnTWElJSZcxvL29Je07nTp1itnb2zMul8scHBy0pviSNd/Kysoe9+esrCzJGC/ONywsjI0YMYIZGxszCwsL5uPjw65du6b+yUkha77Pnj1jPj4+zMLCgnG5XDZixAi2fPlyVlNT02UMfclvp3379jFTU1PW2NgodQxdya88xx5N77+c/wVKCCGEEKIWtLYLIYQQQtSKig9CCCGEqBUVH4QQQghRKyo+CCGEEKJWVHwQQgghRK2o+CCEEEKIWlHxQQghhBC1ouKDEEIIIWpFxQchhBBC1IqKD0IIIYSoFRUfhBBCCFErKj4IIYQQolb/B9I9sUgLNg8zAAAAAElFTkSuQmCC", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "new_structures =apply_symmetry_operations (molecule_1, sym_ops)\n", - "new_structures\n", - "plot_atoms(molecule_1 + new_structures[1] + new_structures[2] + new_structures[3] )\n", - "# new_structures2 =apply_symmetry_operations (molecule_2, sym_ops)\n", - "# plot_atoms(molecule_1 + new_structures[1] + new_structures[2] + new_structures[3] \n", - "# + molecule_2 + new_structures2[1] + new_structures2[2] + new_structures2[3])" - ] - }, - { - "cell_type": "code", - "execution_count": 130, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 130, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "plot_atoms(atoms)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "atoms.arrays()\n", - "\n", - "\n", - "\n" - ] - }, - { - "cell_type": "code", - "execution_count": 95, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "Cell([11.76, 7.49, 5.91])" - ] - }, - "execution_count": 95, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "molecule_1.set_cell atoms.get_cell()" - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "array([11.76, 7.49, 5.91, 90. , 90. , 90. ])" - ] - }, - "execution_count": 20, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "cell" - ] - }, - { - "cell_type": "code", - "execution_count": 148, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 148, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "plot_atoms(atoms)" - ] - }, - { - "cell_type": "code", - "execution_count": 172, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 172, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "frac_ref = read('error_2/APRCOB/Ref_All_frac_APRCOB.xyz')\n", - "cart_ref = read('error_2/APRCOB/Ref_All_APRCOB.xyz')\n", - "cart_ref.set_cell(atoms.get_cell())\n", - "plot_atoms(cart_ref) " - ] - }, - { - "cell_type": "code", - "execution_count": 158, - "metadata": {}, - "outputs": [], - "source": [ - "# Load molecules from the XYZ files\n", - "molecule_1 = read('error_2/APRCOB/Ref_Molecule_APRCOB_0.xyz')\n", - "# molecule_1 = read('error_2/APRCOB/Ref_Molecule_APRCOB_frac_0.xyz')\n", - "\n", - "molecule_2 = read('error_2/APRCOB/Ref_Molecule_APRCOB_1.xyz')\n", - "# molecule_2 = read('error_2/APRCOB/Ref_Molecule_APRCOB_frac_1.xyz')\n", - "\n", - "molecule_1.set_cell(atoms.get_cell())\n", - "molecule_2.set_cell(atoms.get_cell())\n" - ] - }, - { - "cell_type": "code", - "execution_count": 159, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 159, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "plot_atoms(atoms)" - ] - }, - { - "cell_type": "code", - "execution_count": 164, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 164, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "plot_atoms(atoms+ molecule_1)\n", - "\n", - "# plot_atoms(molecule_1)\n", - "# plot_atoms(molecule_2)" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": {}, - "outputs": [], - "source": [ - "import numpy as np\n", - "def calculate_centroid(atoms):\n", - " positions = atoms.get_positions()\n", - " centroid = np.mean(positions, axis=0)\n", - " return centroid" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "array([0. , 3.745 , 2.207385])" - ] - }, - "execution_count": 16, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "calculate_centroid(molecule_2)" - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "metadata": {}, - "outputs": [], - "source": [ - "# Function to check if a point is within the unit cell\n", - "def is_within_unit_cell(point, cell):\n", - " fractional = np.linalg.solve(cell.T, point) # Convert to fractional coordinates\n", - " return np.all(fractional >= 0) and np.all(fractional <= 1)" - ] - }, - { - "cell_type": "code", - "execution_count": 23, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "Cell([11.76, 7.49, 5.91])" - ] - }, - "execution_count": 23, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "atoms.get_cell()" - ] - }, - { - "cell_type": "code", - "execution_count": 25, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "True" - ] - }, - "execution_count": 25, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "is_within_unit_cell(calculate_centroid(molecule_1), atoms.get_cell())" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "is_within_unit_cell" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from ase.io import read\n", - "from ase import Atoms\n", - "import numpy as np\n", - "\n", - "# Load molecules from the XYZ files\n", - "molecule_1 = read('error_2/APRCOB/Ref_Molecule_APRCOB_0.xyz')\n", - "molecule_2 = read('error_2/APRCOB/Ref_Molecule_APRCOB_1.xyz')\n", - "\n", - "# Create the orthorhombic unit cell\n", - "cell_a = 11.76\n", - "cell_b = 7.49\n", - "cell_c = 5.91\n", - "unit_cell = Atoms(cell=[(cell_a, 0, 0), (0, cell_b, 0), (0, 0, cell_c)])\n", - "\n", - "# Adding symmetry operations from space group 'P 21 21 2'\n", - "# Define symmetry operations as transformation matrices and translation vectors\n", - "sym_ops = [\n", - " {\"rot\": [[1, 0, 0], [0, 1, 0], [0, 0, 1]], \"trans\": [0, 0, 0]},\n", - " {\"rot\": [[1, 0, 0], [0, -1, 0], [0, 0, -1]], \"trans\": [0.5, 0.5, 0]},\n", - " {\"rot\": [[-1, 0, 0], [0, 1, 0], [0, 0, -1]], \"trans\": [0.5, 0.5, 0]},\n", - " {\"rot\": [[-1, 0, 0], [0, -1, 0], [0, 0, 1]], \"trans\": [0, 0, 0]}\n", - "]\n", - "\n", - "# Function to apply symmetry operations to a molecule\n", - "def apply_symmetry(molecule, sym_ops, unit_cell):\n", - " for op in sym_ops:\n", - " rot_matrix = np.array(op[\"rot\"])\n", - " trans_vector = np.array(op[\"trans\"])\n", - " new_positions = np.dot(molecule.get_positions(), rot_matrix.T) + trans_vector * [cell_a, cell_b, cell_c]\n", - " \n", - " # Create new molecule instance with transformed positions\n", - " new_molecule = molecule.copy()\n", - " new_molecule.set_positions(new_positions)\n", - " unit_cell += new_molecule\n", - "\n", - "# Apply symmetry operations to each molecule and add to the unit cell\n", - "apply_symmetry(molecule_1, sym_ops, unit_cell)\n", - "apply_symmetry(molecule_2, sym_ops, unit_cell)\n", - "\n", - "# The unit cell is now prepared with molecules positioned according to the specified symmetry\n", - "unit_cell.positions, unit_cell.get_chemical_symbols()\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "len(unit_cell.positions)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "len(unit_cell.get_chemical_symbols())" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from ase.io import read, write\n", - "from ase.spacegroup import crystal, get_spacegroup\n", - "cif_file_path = \"error_2/APRCOB/APRCOB.cif\"\n", - "xyz_file_path = \"error_2/APRCOB/Ref_All_APRCOB.xyz\"\n", - "# Load the initial structure from CIF file\n", - "initial_structure = read(cif_file_path, format='cif')\n", - "# positions = initial_structure.get_positions('center')\n", - "# view(initial_structure, viewer='x3d')\n", - "# # Extract cell parameters and atomic positions from the CIF file\n", - "cell = initial_structure.cell.cellpar()\n", - "# # symbols = initial_structure.get_chemical_symbols()\n", - "# # positions = initial_structure.get_positions()\n", - "print(cell)\n", - "space_group = initial_structure.info['spacegroup']\n", - "print(space_group)\n", - "# crystal_structure = crystal(symbols=initial_structure.get_chemical_symbols(),\n", - "# basis=initial_structure.get_positions(),\n", - "# spacegroup=space_group,\n", - "# cellpar=cell)\n", - "\n", - "# view(crystal_structure)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "supercell_size=[[2, 0, 0], [0, 1, 0], [0, 0, 1]]\n", - "supercell = make_supercell(initial_structure, supercell_size)\n", - "view(supercell, viewer='x3d')\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from ase.build import molecule, make_supercell\n", - "from ase.spacegroup import crystal\n", - "from ase.visualize import view\n", - "\n", - "# Define the molecular structure (e.g., water)\n", - "molecule = molecule('H2O')\n", - "\n", - "# Create a supercell to fill the unit cell\n", - "supercell = make_supercell(molecule, [[3, 0, 0], [0, 3, 0], [0, 0, 3]])\n", - "\n", - "# Define lattice parameters and space group (e.g., cubic cell with P1 symmetry)\n", - "a = b = c = 10 # lattice parameters\n", - "spacegroup = 1 # P1 symmetry\n", - "\n", - "# Create a crystal object representing the filled unit cell\n", - "unit_cell = crystal(symbols=supercell.get_chemical_symbols(),\n", - " basis=supercell.get_positions(),\n", - " spacegroup=spacegroup,\n", - " cellpar=[a, b, c, 90, 90, 90],symprec=1e-5)\n", - "\n", - "# Optionally, visualize the filled unit cell\n", - "view(unit_cell)\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from ase.visualize import view\n", - "\n", - "# Create a molecule (e.g., water)\n", - "atoms = molecule('H2O')\n", - "\n", - "# Optionally, visualize the original molecule\n", - "view(atoms, viewer='x3d')\n", - "\n", - "# Ensure that molecules are not fragmented\n", - "atoms.wrap()\n", - "\n", - "# Optionally, visualize the unit cell after wrapping\n", - "view(atoms, viewer='x3d')" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import matplotlib.pyplot as plt\n", - "\n", - "from ase.visualize import view\n", - "from ase.visualize.plot import plot_atoms\n", - "plot_atoms(crystal_structure)\n", - "# crystal_structure.get_positions(\"center\")\n", - "view(crystal_structure, viewer='x3d')" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "help(crystal_structure.wrap)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "help(view)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "cell" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "space_group, space_group.no, space_group.symbol" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Access symmetry operations\n", - "symmetry_operations = space_group.get_symop()\n", - "for op in symmetry_operations:\n", - " print(op)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "for i, (rot, trans) in enumerate(space_group.get_symop()):\n", - " print(\"Symmetry operation #{}\".format(i + 1))\n", - " print(\"Rotation matrix: \", rot[0,:])\n", - " print(\" \", rot[1,:])\n", - " print(\" \", rot[2,:])\n", - " print(\"Translation vector: \", trans)\n", - " print()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "help(space_group.equivalent_sites)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "newcell" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "for label, fcoord, ccoord in zip(newcell.labels, newcell.frac_coord, newcell.coord):\n", - " if label == \"Br\":\n", - " print(label, fcoord, ccoord)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "help(space_group)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from cell2mol.read_write import writexyz\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "for idx, ref in enumerate(newcell.refmoleclist):\n", - " print(ref.formula)\n", - " frac_coord = cart2frac(ref.coord, newcell.cellvec)\n", - " # print(space_group.symmetry_normalised_sites(frac_coord))\n", - " sites, kind = space_group.equivalent_sites(frac_coord, onduplicates='keep')\n", - " # for i, (label, fcoord) in enumerate(zip(ref.labels, frac_coord)): \n", - " # print(i, label, fcoord)\n", - " # # sites, kind = space_group.equivalent_sites(fcoord)\n", - " # # if label == \"Br\":\n", - " # # print(frac_coord)\n", - " # print(kind)\n", - " cart_coords = frac2cart_fromparam(np.array(sites), newcell.cellparam)\n", - " new_labels = [ref.labels[i] for i in kind]\n", - " writexyz(\"error_2/APRCOB\", f\"Ref_frac_APRCOB_{idx}.xyz\", new_labels, cart_coords)\n", - "# for site, ccord, i in zip(sites, cart_coords, kind):\n", - "# # print(site)\n", - "# print(i, ref.labels[i], site, ccord)\n", - " # # print(len(ref.labels), len(sites), len(kind))\n", - " # # for label, fcoord in zip(ref.labels, frac_coord): \n", - "\n", - " print(len(ref.labels), len(sites), len(kind))\n", - " # # print(sites, kind)\n", - " # print(\"---\")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "labels = atoms.get_chemical_symbols(),\n", - "positions = atoms.positions" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "sym_ops_cartesian" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "labels" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "positions" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# List to collect all transformed structures and their labels\n", - "all_transformed_positions = []\n", - "all_labels = []\n", - "\n", - "# Apply all symmetry operations\n", - "for rot_cart, trans_cart in sym_ops_cartesian:\n", - " transformed_positions = (rot_cart @ positions.T + trans_cart[:, np.newaxis]).T\n", - " all_transformed_positions.append(transformed_positions)\n", - " all_labels.append(labels) # Copy labels directly since symmetry operations don't alter the type of atoms\n", - "\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "sym_ops_cartesian" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "len(all_labels)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from cell2mol.read_write import writexyz" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import os" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "os." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "for idx, (lab, pos) in enumerate(zip(all_labels, all_transformed_positions)):\n", - " writexyz(\"error_2/BOFFOS\", f\"BOFFOS_symmetry_operation_{idx}.xyz\", lab[0], pos)\n", - " print(lab[0])\n", - " print(pos)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "len(all_transformed_positions)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "transformed_positions" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import matplotlib.pyplot as plt\n", - "from ase.visualize.plot import plot_atoms\n", - "plot_atoms(initial_structure)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "atoms.get_scaled_positions()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Load your initial atomic positions; assuming these are stored in an XYZ file\n", - "atoms = read(xyz_file_path, format='xyz')\n", - "\n", - "# Create the crystal structure using the symmetry of the space group\n", - "crystal_structure = crystal(symbols=atoms.get_chemical_symbols(),\n", - " basis=atoms.get_positions(),\n", - " spacegroup=space_group,\n", - " cellpar=cell)\n", - "\n", - "# # # Save the complete structure to a new XYZ file\n", - "# cell_xyz_file_path = \"error_2/BOFFOS/BOFFOS_complete_structure.xyz\"\n", - "# write(cell_xyz_file_path, crystal_structure, format='xyz')\n", - "\n", - "# print(f\"XYZ file with complete structure saved as {xyz_file_path}\")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "plot_atoms(atoms)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "plot_atoms(crystal_structure)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from ase.visualize import view\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "view(atoms)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "len(atoms)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "atoms.get_positions()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from ase import Atoms\n", - "from ase.io import read, write\n", - "from ase.spacegroup import crystal\n", - "\n", - "# Define the unit cell parameters\n", - "a = 24.369 # Lattice constant a\n", - "c = 9.748 # Lattice constant c\n", - "cell = [a, a, c, 90, 90, 120] # Rhombohedral cell parameters\n", - "spacegroup = 'R3' # Space group 'R 3'\n", - "\n", - "# Load your initial atomic positions; assuming these are stored in an XYZ file\n", - "atoms = read('path_to_your_file.xyz', format='xyz')\n", - "\n", - "# Create the crystal structure using the symmetry of the space group\n", - "crystal_structure = crystal(symbols=atoms.get_chemical_symbols(),\n", - " basis=atoms.get_positions(),\n", - " spacegroup=spacegroup,\n", - " cellpar=cell)\n", - "\n", - "# Save the complete structure to a new XYZ file\n", - "xyz_file_path = 'complete_structure.xyz'\n", - "write(xyz_file_path, crystal_structure, format='xyz')\n", - "\n", - "print(f\"XYZ file with complete structure saved as {xyz_file_path}\")\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "help(ase.io.read)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "atoms = ase.io.read(input_path)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "atoms[0]" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "atoms[59]" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "atoms._get_cell()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import ase.structure\n", - "\n", - "\n", - "ase.structur" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import ase.spacegroup\n", - "\n", - "\n", - "help(ase.spacegroup)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from ase.io import read, write\n", - "from ase.spacegroup import crystal\n", - "\n", - "# Path to your CIF file\n", - "cif_file_path = 'path_to_your_cif_file.cif'\n", - "\n", - "# Load the initial structure from CIF file\n", - "initial_structure = read(cif_file_path, format='cif')\n", - "\n", - "# Extract cell parameters and atomic positions from the CIF file\n", - "cell = initial_structure.cell.cellpar()\n", - "symbols = initial_structure.get_chemical_symbols()\n", - "positions = initial_structure.get_positions()\n", - "spacegroup = 'R3' # Space group 'R 3', make sure it matches the CIF space group if different\n", - "\n", - "# Create the crystal structure using the symmetry of the space group\n", - "crystal_structure = crystal(symbols=symbols,\n", - " basis=positions,\n", - " spacegroup=spacegroup,\n", - " cellpar=cell)\n", - "\n", - "# Save the complete structure to an XYZ file\n", - "xyz_file_path = 'complete_structure.xyz'\n", - "write(xyz_file_path, crystal_structure, format='xyz')\n", - "\n", - "print(f\"XYZ file with complete structure saved as {xyz_file_path}\")\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import numpy as np\n", - "import gemmi" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import numpy as np\n", - "import gemmi\n", - "import re\n", - "\n", - "def clean_number(string):\n", - " # Remove uncertainty parentheses\n", - " return re.sub(r'\\(.*\\)', '', string)\n", - "\n", - "def read_cif(cif_path):\n", - " doc = gemmi.cif.read_file(cif_path)\n", - " block = doc.sole_block()\n", - "\n", - " # Extract unit cell parameters with uncertainties removed\n", - " cell = gemmi.UnitCell(\n", - " float(clean_number(block.find_value('_cell_length_a'))),\n", - " float(clean_number(block.find_value('_cell_length_b'))),\n", - " float(clean_number(block.find_value('_cell_length_c'))),\n", - " float(clean_number(block.find_value('_cell_angle_alpha'))),\n", - " float(clean_number(block.find_value('_cell_angle_beta'))),\n", - " float(clean_number(block.find_value('_cell_angle_gamma')))\n", - " )\n", - "\n", - " # Extract symmetry operations\n", - " symmetry_ops = []\n", - " sym_loop = block.find_loop('_symmetry_equiv_pos_as_xyz')\n", - " for op in sym_loop:\n", - " symmetry_ops.append(op)\n", - "\n", - " return cell, symmetry_ops\n", - "\n", - "def convert_symmetry_to_cartesian(cell, symmetry_ops):\n", - " # Create transformation matrix from fractional to Cartesian\n", - " to_cartesian = np.array(cell.orthogonalization_matrix).reshape(3, 3)\n", - " to_fractional = np.linalg.inv(to_cartesian)\n", - "\n", - " cartesian_ops = []\n", - " for op in symmetry_ops:\n", - " # Parse the operation using gemmi\n", - " mat, vec = gemmi.cif.parse_symop(op)\n", - " rot_matrix_frac = np.array(mat.mat).reshape(3, 3)\n", - " trans_vector_frac = np.array(vec)\n", - "\n", - " # Convert rotation and translation to Cartesian\n", - " rot_matrix_cart = np.dot(to_cartesian, np.dot(rot_matrix_frac, to_fractional))\n", - " trans_vector_cart = np.dot(to_cartesian, trans_vector_frac)\n", - "\n", - " cartesian_ops.append((rot_matrix_cart, trans_vector_cart))\n", - "\n", - " return cartesian_ops\n", - "\n", - "# Path to the CIF file\n", - "cif_path = \"error_2/BOFFOS/BOFFOS.cif\"\n", - "\n", - "# Process the CIF file\n", - "cell, symmetry_ops = read_cif(cif_path)\n", - "cartesian_ops = convert_symmetry_to_cartesian(cell, symmetry_ops)\n", - "\n", - "# Print the converted Cartesian symmetry operations\n", - "for i, op in enumerate(cartesian_ops, 1):\n", - " print(f\"Operation {i}: Rotation Matrix\\n{op[0]}\\nTranslation Vector\\n{op[1]}\\n\")\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "gemmi" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "cell2mol", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.10.6" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/cell2mol/test/cif_file_BOFFOS.ipynb b/cell2mol/test/cif_file_BOFFOS.ipynb deleted file mode 100644 index 8580ea3d9..000000000 --- a/cell2mol/test/cif_file_BOFFOS.ipynb +++ /dev/null @@ -1,2261 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [], - "source": [ - "from cell2mol.cell_operations import cart2frac, frac2cart_fromparam\n", - "import numpy as np\n", - "from cell2mol.read_write import writexyz\n", - "from ase.io import read\n", - "from ase.visualize.plot import plot_atoms\n", - "from ase.visualize import view\n", - "from ase import Atoms" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [ - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "04db7d638c5c4cc1bed33ceed27e3aa2", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "import nglview" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 0 and 59 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 0 and 60 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 2 and 61 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 2 and 62 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 3 and 63 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 3 and 64 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 4 and 65 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 4 and 66 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 5 and 67 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 5 and 68 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 6 and 69 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 6 and 70 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 7 and 71 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 7 and 72 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 8 and 73 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 8 and 74 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 9 and 75 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 9 and 76 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 10 and 77 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 10 and 78 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 11 and 79 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 11 and 80 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 15 and 81 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 15 and 82 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 16 and 83 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 16 and 84 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 17 and 85 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 17 and 86 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 18 and 87 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 18 and 88 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 19 and 89 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 19 and 90 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 20 and 91 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 20 and 92 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 21 and 93 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 21 and 94 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 22 and 95 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 22 and 96 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 23 and 97 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 23 and 98 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 24 and 99 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 24 and 100 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 25 and 101 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 25 and 102 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 26 and 103 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 26 and 104 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 27 and 105 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 27 and 106 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 28 and 107 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 28 and 108 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 29 and 109 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 29 and 110 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 30 and 111 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 30 and 112 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 31 and 113 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 31 and 114 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 32 and 115 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 32 and 116 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 33 and 117 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 33 and 118 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 34 and 119 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 34 and 120 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 35 and 121 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 35 and 122 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 36 and 123 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 36 and 124 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 37 and 125 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 37 and 126 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 38 and 127 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 38 and 128 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 39 and 129 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 39 and 130 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 40 and 131 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 40 and 132 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 41 and 133 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 41 and 134 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 42 and 135 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 42 and 136 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 43 and 137 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 43 and 138 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 44 and 139 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 44 and 140 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 45 and 141 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 45 and 142 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 46 and 143 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 46 and 144 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 47 and 145 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 47 and 146 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 48 and 147 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 48 and 148 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 49 and 149 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 49 and 150 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 50 and 151 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 50 and 152 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 51 and 153 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 51 and 154 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 52 and 155 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 52 and 156 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n" - ] - } - ], - "source": [ - "cif_file_path = 'error_2/BOFFOS/BOFFOS.cif'\n", - "atoms = read(cif_file_path)\n", - "cell = atoms.cell.cellpar()\n", - "space_group = atoms.info['spacegroup']" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 6, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "plot_atoms(atoms, rotation='45x,75y,75z')" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "f431b1710eab4010befb3a857dd1086d", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "NGLWidget()" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "view = nglview.show_ase(atoms)\n", - "view.add_unitcell()\n", - "view" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "array([ 24.369, 24.369, 9.748, 90. , 90. , 120. ])" - ] - }, - "execution_count": 6, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "cell" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "(Spacegroup(146, setting=1), 146)" - ] - }, - "execution_count": 7, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "space_group, space_group.no" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [], - "source": [ - "newcell = np.load(\"error_2/BOFFOS/Cell_BOFFOS.cell\", allow_pickle=True)" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [], - "source": [ - "unit_cell = Atoms(cell=cell, pbc=True)" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "Atoms(symbols='', pbc=True, cell=[[24.369, 0.0, 0.0], [-12.184499999999996, 21.10417306482299, 0.0], [0.0, 0.0, 9.748]])" - ] - }, - "execution_count": 10, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "unit_cell" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "t = np.array([0.6667, 0.3333, 0.3333])" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": {}, - "outputs": [], - "source": [ - "# for idx, mol in enumerate(newcell.refmoleclist):\n", - "# writexyz(\"error_2/BOFFOS\", f\"Mol_BOFFOS_{idx}.xyz\", mol.labels, mol.coord)\n", - "\n", - "mol_0 = read('error_2/BOFFOS/Mol_BOFFOS_0.xyz')\n", - "mol_1 = read('error_2/BOFFOS/Mol_BOFFOS_1.xyz')\n", - "mol_2 = read('error_2/BOFFOS/Mol_BOFFOS_2.xyz')\n", - "mol_3 = read('error_2/BOFFOS/Mol_BOFFOS_3.xyz')\n", - "mol_4 = read('error_2/BOFFOS/Mol_BOFFOS_4.xyz')\n", - "mol_5 = read('error_2/BOFFOS/Mol_BOFFOS_5.xyz')\n", - "mol_6 = read('error_2/BOFFOS/Mol_BOFFOS_6.xyz')\n", - "mol_7 = read('error_2/BOFFOS/Mol_BOFFOS_7.xyz')\n", - "mol_8 = read('error_2/BOFFOS/Mol_BOFFOS_8.xyz')\n", - "mol_9 = read('error_2/BOFFOS/Mol_BOFFOS_9.xyz') " - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": {}, - "outputs": [ - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "210b9e1cc3a547bb8cb31807e9155ba1", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "NGLWidget()" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAh8AAAFdCAYAAACjJQ8rAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8g+/7EAAAACXBIWXMAAA9hAAAPYQGoP6dpAADJOElEQVR4nOzdd3xN9//A8dfdN3vLIJHYe++996qttVvU7FB8Ua1qq63SlipqU7NF7T1qBbVCbSJIkEhkj7vP7w/kV01wE4kb8Xk+Hv0jd5zzPmnc876f8X7LJEmSEARBEARBeEXktg5AEARBEIQ3i0g+BEEQBEF4pUTyIQiCIAjCKyWSD0EQBEEQXimRfAiCIAiC8EqJ5EMQBEEQhFdKJB+CIAiCILxSIvkQBEEQBOGVUto6gP+yWCzcu3cPJycnZDKZrcMRBEEQBMEKkiSRlJSEn58fcvnzxzbyXPJx7949/P39bR2GIAiCIAjZEB4eTqFChZ77mjyXfDg5OQGPgnd2drZxNIIgCIIgWCMxMRF/f//0+/jz5Lnk48lUi7Ozs0g+BEEQBOE1Y82SCbHgVBAEQRCEV0okH4IgCIIgvFIi+RAEQRAE4ZXKc2s+suPYsWPcvHmTsmXLUqlSJUJCQrh48WKu/gy8snPl1M9AnolF/J7zxs+vU6zib+IiRYoUoXbt2q/uw1UQcouUxyQkJEiAlJCQYNXrV6xYIQESIDVs2FCSJElq2LBhrv/8Ks+VUz/npVjE7zlv/JyXYhF/Ey/+GZDOnTsnCUJelJX7t0ySJCmrCUtuSkxMxMXFhYSEBKt2u8TGxuLl5UXp0qVZsWKF+PYlvuXa/OfX6ff8OsX6pv9N7N+/n9GjR9OrVy9WrVqVg5+6gpAzsnL/fu2TD+Cpf+CCIAj5lfisE/KyrNy/88WC07Jly3LhwgXq1auHTqezdTiCIAi5omzZshw7doxGjRphsVhsHY4gZFu+SD4A/vnnH44ePUqfPn1sHYogCEKuOXLkCAcPHuTDDz+0dSiCkG35YrcLQK9evdi1axdDhw61dSiCIAi5ZsyYMZw5c4YhQ4bYOhRByLZ8sebjv/bv30+TJk1yODJBEIS8w2KxcODAAZo2bWrrUAQBeAPXfPzbhAkTaNq0KevXr7d1KIIgCLlm4MCBNGvWjGPHjtk6FEHIsnyZfDg4OPD333/bOhRBEIRcM3XqVLRaLcHBwbYORRCyLN+s+XjC0dGRxMRE5PJ8l1cJgiCk8/PzIyUlRXzWCa+lfPlXK5fLmTt3Lh4eHiQmJto6HEEQhFwhl8v56quv8PHxwWAw2DocQbBavkw+APz9/YmNjWXkyJG2DkUQBCHXFChQgKioKCZPnmzrUATBavlu2uWJdu3asXjxYlH3QxCEfG3w4MEoFAoGDBhg61AEwWr5duQDYMCAATx48IDRo0fbOhRBEIRc8+677xIWFsaECRNsHYogWCVfJx8A48eP54cffmDZsmW2DkUQBCHXDB8+nG+++YY9e/bYOhRBeKF8n3wsWLCAMmXK4OXlZetQBEEQcs2qVasoWbIkdnZ2tg5FEF4o3675eEKtVnPx4kUAYmJi8PT0tHFEgiAIOc/d3Z0rV64A4rNOyPvy/cjHE/3798fHx4cHDx7YOhRBEIRc07ZtWwoVKkRqaqqtQxGEZ3qjkg+z2czSpUttHYogCEKu6du3L3q9nnXr1tk6FEF4pnzZWO5Z7t27h5+fX44eUxAEIa8Rn3WCLbzRjeWex8/Pj0WLFtGwYUNbhyIIgpBr/Pz8mDFjBm3atLF1KIKQqTcq+QA4ceIEhw4dYs6cObYORRAEIdccOnSIHTt2sGnTJluHIggZ5PvdLv81Z84cjEYjvXv3tnUogiAIuWblypWMGjWKli1b2joUQcjgjRv5UCqVLFmyBKVSyfr1620djiAIQq5wdHRk8eLFpKamsnXrVluHIwhPeeNGPp5o1KgRp06dIiwsjMKFC9s6HEEQhFxRq1YtwsLCiI6OxtXV1dbhCALwBo58PDFv3jwcHR3TC5AJgiDkRz/88AP29vZcvXrV1qEIQro3aqvts1gsFuTyNzYPEwThDSE+64TcJLbaZkGvXr3EtIsgCPleixYtKFu2rK3DEARAJB8UKlSIiIgI/vzzT1uHIgiCkGu8vLy4cuUKJ0+etHUogiCmXSwWC9u3b6ddu3a5fi5BEARbMRgMHDhwQGy9FXKNmHbJArlcTrt27di+fTsTJ060dTiCIAi5Qq1W07JlS1avXs23335r63CEN9wbP/LxRNmyZbl06RKXLl2idOnSr+y8giAIr1KhQoW4f/8+d+/excfHx9bhCPmIGPnIhnXr1lGzZk2cnJxsHYogCEKuWbVqFfXq1UOpfGPLPAl5gBj5+A+LxcLt27cJCgp65ecWBEF4VQwGA5GRkQQEBNg6FCGfyMr9W6S+/1GyZEliYmJ4+PCh2A8vCEK+5e/vj1qtJjw83NahCG+gLN1dv/nmG6pXr46TkxMFChSgU6dOGarm6XQ6hg8fjoeHB46OjnTp0oWoqKgcDTo39evXj6SkJEJCQmwdiiAIQq556623iIqKIiIiwtahCG+gLE27tGrVip49e1K9enVMJhMTJkzgwoULXLp0CQcHBwCGDh3Ktm3bWLp0KS4uLowYMQK5XM7Ro0etOoetp12exGCrcwuCILwKJpMJnU6Ho6OjrUMR8oms3L9fas1HdHQ0BQoU4ODBgzRo0ICEhAS8vLxYtWoVXbt2BeDKlSuULl2aY8eOUatWrRwNPjf169eP1NRU/vjjD5vFIAiCkJssFgsdO3bE19eX+fPn2zoc4TX3yna7JCQkAODu7g7A6dOnMRqNNGvWLP01pUqVIiAggGPHjr3MqV65ixcvsm7dOq5fv27rUARBEHKFXC7n0qVLLFy4kNjYWFuHI7xBsr3g1GKx8OGHH1K3bl3KlSsHQGRkJGq1OkPbZm9vbyIjIzM9jl6vR6/Xp/+cmJiY3ZBy1IYNG1i5ciXFixe3dSiCIAi55o8//uD48ePpXyIF4VXIdvIxfPhwLly4wJEjR14qgG+++YYvvvjipY6RGwICAhg/fjwhISHcu3ePNm3a2DokQRCEHFelShWqVKnCkSNHsFgsNGjQwNYhCW+AbCUfI0aMYOvWrRw6dIhChQqlP+7j44PBYCA+Pv6p0Y+oqKhnVtIbP348H3/8cfrPiYmJ+Pv7ZyesXNGwYUPMZjPx8fGiKI8gCPmSxWKhWbNmODs78+DBA1uHI7wBsrTmQ5IkRowYwZ9//sn+/fszFOKqWrUqKpWKffv2pT929epV7ty5Q+3atTM9pkajwdnZ+an/8pIpU6ZQoEABYmJibB2KIAhCrpDL5XzwwQd4eXmRmppq63CEN0CWdrsMGzaMVatWsWnTJkqWLJn+uIuLC3Z2dsCjrbbbt29n6dKlODs7M3LkSACCg4OtOkde2e2SGZPJJEY/BEHI1ywWCxaLRXzWCVmWa7td5s6dS0JCAo0aNcLX1zf9v7Vr16a/5scff6Rdu3Z06dKFBg0a4OPjw4YNG7J3JXmExWIhMDCQhg0b2joUQRCEXGMwGPD29qZbt262DkXI50RvFyvVr1+f4OBgHj58mGE3jyAIQn5RtmxZbty4QVJSEmq12tbhCK8R0dslF6xfv56EhASReAiCkK9t374dhUIhEg8hV4nOaVYqUKAARYsWZcyYMcydO9fW4QiCIOSKwoUL4+Pjw+DBg1m3bp2twxHyKTHtkgUWiwUXFxdMJhNxcXFotVpbhyQIgpDjUlNTcXNzw87OjtjYWNHhW7CKmHbJJXK5nLlz53L06FGxElwQhHzL3t6e7777jvv379s6FCGfEiMf2fSkDfW/i6wJgiDkN9evX8fDw0OUXxde6JU1lntT6XQ6ihQpQocOHWwdiiAIQq558OABpUqVokePHrYORchnRPKRDVqtliZNmhAREYHJZLJ1OIIgCLmiQIECVK5cmZs3b9o6FCGfEdMu2WQwGFAqlWIhliAI+ZrBYBDbbgWriGmXV0CtVpOcnEyZMmXyZFdeQRCEnKBWq4mIiCAoKIiFCxfaOhwhnxAjHy/BYrHg6elJWloaKSkpYhREEIR8yWAw4OrqilarJTY21tbhCHmU2Gr7isjlcv744w80Go1IPARByLfUajWrV6+mcOHCtg5FyCfEHfMlNW3alHr16jF79mwuXrxo63AEQRByRceOHalUqRLffPMNkZGRtg5HeM2JaZcc8ODBA3x8fChZsiSXL1+2dTiCIAi54sKFC5QvX57atWsTHBxs63CEPEZMu7xiBQoUoE+fPiQkJNg6FEEQhFxTrlw5OnTogJubm61DEV5zYuQjhyUnJ2Nvby/WgAiCkK8lJyfj6Oho6zCEPERstbWRsLAw3N3d+eSTT2wdiiAIQq45ceIErq6uzJgxw9ahCK8pMfKRw3x9fQFEQyZBEPIti8WCq6srvr6+XL161dbhCHmEWPNhQ8HBwRQsWNDWYQiCIOQauVzO2bNnCQoKsnUowmtKTLvksKCgIBITE2nUqBEnTpywdTiCIAi5omjRokRERFC7dm3CwsJsHY7wmhHJRy7Q6XQcOnRIdIIUBCFfi4+P5/jx43Tu3NnWoQivGTHtkgsKFSrE5MmTKVmypK1DEQRByDUVKlTgk08+oUmTJrYORXjNiAWnuWzPnj00btwYpVLkeYIg5F87duygZcuWoszAG0xstc0jjhw5QosWLXj//fdtHYogCEKuWb16NW3atGHy5Mm2DkV4TYjkIxfVq1ePIkWKcPfuXVuHIgiCkGt69OiBj48PoaGhtg5FeE2IuYBcdv36dTEMKQhCviaXy7l79674rBOsJv5ScplcLufo0aO4urqyf/9+W4cjCIKQK+RyOZs3b8bFxYULFy7YOhwhjxPJxytQsmRJkpOTGT58uK1DEQRByDWlS5cmKSmJIUOG2DoUIY8Tyccr4Onpyfr16zl27JitQxEEQcg1xYsXZ82aNezZs8fWoQh5nEg+XpGOHTui1WoZNGgQOp3O1uEIgiDkiu7du2MymRg0aBAWi8XW4Qh5lEg+XqHNmzezcOFC+vfvb+tQBEEQcs2CBQtYuHAho0ePtnUoQh4lko9XqHv37jRt2pQaNWrYOhRBEIRcM3r0aGrVqkWFChVsHYqQR4kKpzYSGRmJj4+PrcMQBEHIVeKz7s0hKpzmcQsXLsTX15dNmzbZOhRBEIRc89VXX+Hn5yc6fAsZiOTDBrp3745KpWLJkiW2DkUQBCHX9O/fH5lMxsKFC20dipDHiAqnNuDs7ExERAQFChSwdSiCIAi5plChQty/f1981gkZiJEPGylQoACHDh2ibNmyJCYm2jocQRCEXFGgQAG2bt1KhQoVMJlMtg5HyCNE8mFDcXFxXLp0iT59+tg6FEEQhFwTHh7OP//8w7Bhw2wdipBHiGkXG+rYsSNjxoxh6NChtg5FEAQh1wwdOpQrV64wfvx4W4ci5BFi5MPGpk2bRuHChVm2bJmtQxEEQcg1M2fOxNPTkxUrVtg6FCEPECMfecCYMWP44YcfUCgU9O7d29bhCMIb4d69eyxYsIDg4GCUSiWtW7emb9+++bq+kK316dOHNWvW4OvrS9OmTW0djmBDYuQjD/j666/x9PQkIiLC1qEIwhth27ZtFCtWjO+//x47OztMJhMffvghpUqVEu3gc9HPP/+Mq6sroaGhtg5FsDFR4TSPsVgsyOUiJxSE3HL79m1KlSpFixYtWL58OS4uLgDcuXOHDh06EBcXx/Xr11Gr1TaONH8Tn3X5j6hw+pr69ttvcXJyIiYmxtahCEK+9euvv6JWq1m5cmV64gEQEBDAihUruHPnDhs3brRdgG+AMWPG4OrqKjp8v8FE8pGH1KhRg9TUVCZMmGDrUAQh3zp06BBt27bF0dExw3PlypWjTJkyHDx40AaRvTkqVapEUlIS3333na1DEWxELDjNQ5o0acLOnTtp2bKlrUMRhHxLLpc/t9iV0WgU0wG57J133sHT01N81r3BRPKRx7Rs2ZILFy4wbdo0li9fbutwBCHfad68Od9++y1Xr15l//79REZGotfrcXFxwdnZmevXrzNjxgxbh5nvtWzZkmPHjrF48WIWLFhg63CEV0wkH3nQzJkz+e2336hRowYjRoywdTiC8FqxWCwcPnyY+/fvU6hQIerWrYtMJkt/vlKlShgNBsqULo0c8Fap0MhkxJpMxJvN2KlU3Lhxg4SEhKfWhAg5b+rUqWzduhW1Wk2tWrVo0aIF3t7etg5LeAXE2GIeNHfuXOrWrUv16tVtHYogvFa2bNlCsWLFaNSoEb169aJ+/fqULl2affv2YbFYGDduHB06dCBAJuN7tZooBwciNBpC1Wpi7ew4aGdHB2Ds6NFUKleOy5cv2/qS8q3w8HDi4uIAmDNnDn379sXf35/hw4djMBhsHJ2Q20TykQcplUqOHDlCzZo1uXr1qq3DEYTXwq5du+jUqROlSpXi6NGjJCQk8Ndff+Hr60ubNm3o2qUL30+bxgyNhmsaDR+r1bj/a0REJpPRQKlkjVbLdXt7HKKiqFe7tvg3mAsSEhJo3LgxERERrFu3Dr1ez7Vr1/jqq69YuHAhgwYNsnWIQi4TdT7ysK5du7Jhwwbu3LlDoUKFbB2OIORZkiRRtWpVXFxc2Lt3LwqFIv05g8FA7dq1CQkJ4VeVivesrN8RJ0nUMxhI8/bmwpUr2Nvb51b4b5yZM2fyySefcOXKFYoWLcrkyZNZsWIFFy9eZNmyZQwZMoTLly9TqlQpW4cqZIGo85FPjBs3DplMJmoOCMILXLt2jbNnz/Lhhx8+lXgAqNVqPvjgAywWC+2U1i9zc5PJ+FOl4lZ4OGvWrMnpkN9oa9eupX379hQtWhSA7t27k5aWxpUrV+jbty8uLi788ccfNo5SyE1iwWkeVr16dZKSksQ3LkF4gfj4eACCgoIyff7J4/GShE8WjltCLqe1SsUvM2cyYMCApxauCtmXmJhItWrV0n8uU6YMt27dQqVSAeDl5UViYqKtwhNeAZF85HH29vZ8++23rFq1ivPnz9s6HEHIkwIDA1EoFBw+fJgKFSpkeP7QoUPYyeUUzEb9jmFKJe3On+fUqVOvbBH4lStXmDt3LqdOnUKtVtOhQwf69++Pm5vbKzl/bitdujT79+9HkiRSU1M5d+4c0dHRnDhxgrCwMG7cuEGZMmVsHaaQi8S0y2vgwYMH/PPPP/z888+2DkUQ8iRvb286derEd999l6FB440bN/hxxgzeVihwysbIRcvH0zjnzp3LkVhfZOnSpZQrV47Vq1dTtGhRnJ2dGTduHOXKlePSpUuvJIbcNnDgQC5evJh+fXXr1qVTp0588803rFmzBplMxt69ezl58qStQxVySZZHPg4dOsT333/P6dOnuX//Pn/++SedOnVKf75///4sW7bsqfe0bNmSnTt3vnSwb6rp06djZ2fH0KFDbR2KIORZP/74I3Xr1qVixYq89957lCtXjjNnzrBw4UIc9HqmZrNRnFImw0mhSJ/ayU3nz5/n3XffZeDAgcyePRuNRgNAREQErVu3pmPHjly5ciXDupbXycmTJ/n444+BRzv7unXrhr+/Py4uLhgMBk6fPo3ZbGbXrl2sWrWKgQMH8sMPP4iaK/lMlpOPlJQUKlasyMCBA+ncuXOmr2nVqhVLlixJ//nJPyAhe+RyOV9//TWRkZFs3ryZwYMH2zokQchz/P39OXHiBN999x2//vorCQkJeHh4YDIYGAQUyGbJdEmSSLNYXsnaq9mzZ+Pr68ucOXPS1z8AFCpUiEWLFlGzZk22b99O+/btcz2W3LBy5Ur69etHwYIFGTNmDAULFszwmhYtWpCSkkKZMmW4e/cuq1ev5uDBg+zfv5+AgAAbRC3khiwnH61bt6Z169bPfY1Go8HHJyvLugRrtGvXjjNnztCwYUNKlixp63AEIc/x9fXlp59+4scff0Sv16PRaKhYtiyhN25k+5hXLRZMkpTpjTKnBQcH07Fjx6cSjydq1KiBv78/x44dyzPJR1RUFHfv3sXLywt/f//nvnbr1q307duX6tWr07179+eO3mzcuJHr168zfvx4ihcvzq+//kqTJk04ffr0c0dAHjx4wG+//UZYWBienp688847FC9ePNvXJ+SeXFnz8ddff1GgQAFKlizJ0KFDefjw4TNfq9frSUxMfOo/IXPLli3D29ub6OhoW4ciCHmaTCZDq9Uik8noO3Ag681mHlgs2TrWPKMRTzc3WrVqlcNRZqRUKklLS8NsNhMfH09iYiJPSjFZLBZ0Ol2uTLmYTCY2bNjA2LFjGTx4MCNHjuTrr7/mxjOSths3btCpUyf8/PyoWrUqAQEBNGnShL///jvT18fExDBgwADKlClDjx49XngNLVu2JCAgAIPBgJeXF++//z737t3jo48+euZ75s2bh7+/PxMnTuTQoUPMnDmTEiVKMHz4cCzZ/H8v5J4cTz5atWrF8uXL2bdvH9999x0HDx6kdevWmM3mTF//zTff4OLikv7fi7LnN1nZsmW5f/8+9erVE+WHBcFKAwYMQKZQsNhozPJ7UySJpZLEe0OG5Pr0cXh4OA4ODqxYsQJHR0fc3NxwcXHBw8OD5s2bM3LkSKKjo2nTpk2OnTMqKoovvviCwgUL0qVLF/6YOZMzy5dzcMECvvv8c4oXL06r5s3ZvHlzehJ08+ZN6tatyz///MMvv/zCqVOnWLFiBTExMdSpU4fatWszZcoUwsLC0s/z+eefo9Pp6N69u1Udgz09PRk4cCBOTk7pP3fo0IElS5ZkmuBs3bqVoUOH8u6773L37l3Onz/P/fv3+emnn5g3bx5ffvllDv3GhJzyUhVOZTJZhgWn/3Xz5k2KFi3K3r17adq0aYbn9Xo9er0+/efExET8/f1FhdPnaNWqFadOneLBgwei9bcgWGHggAH8uWIFx9RqSlk5ciBJEkP1ehaazdwIDSUwMDBXYktOTmbcuHHMmzcPtVpNmTJl8Pf3x83NDYvFwoMHD7h16xZXr15FoVAwc+ZM3n///fR/+6mpqezatYvY2FiKFy9O/fr1rapHcubMGdq2akVSbCy95XKGqlRU/NfvJk2S+N1kYo7Fwt8GAwMHDGDer7/y9ttvc+zYMUJCQvD09Pz/16elUa9ePa5du4bZbEan09GpUyemTp1K1apVqV+//gun7J/n9u3bzJ07F29vb7p27crAgQPTt+PWr18fuVzOX3/9leHaR48ezZIlS4iIiBA1k3JZViqc5nqdjyJFiuDp6cmNGzcyTT40Go1YkJpFtWvXZteuXWzfvp127drZOhxByPN++PFH/j52jBY3b7ITKPOCBMQiSYzV6/nVaGTx4sW5lnhcv36dli1bcu/ePdq3b0/t2rXRarWZvjYuLo7du3czfPhwtmzZwrp161i8eDGff/55eoM2eFTz5LPPPqNbt244Ojpmeqzz58/TqH59SplMbNZq8cnkS4ydTEY/lYp+wHK5nHeXLiU0NJTDR47w3XffPZV4ANjZ2TFx4kS6dOnCJ598QkREBDt37qRq1aqkpqZSq1atbP2OLBYLa9as4e+//8bHx4fAwECWL1/OjBkzGDNmDBMmTODIkSMsWbIk06TryW6ZY8eOZXoPEmwj15OPiIgIHj58iK+vb26f6o3x+eef0759e6pUqWLrUAThteDq6squffto3bw5ta9fZ4RczhCVioD/3HRNksRWk4kfzWYOm0zMmjWLAQMG5EpMt27dokGDBgB88skneHl5Pff1bm5u9OjRgwoVKrBs2TIqV67M9evXGTJkCGPGjCEwMJAjR44wduxY3nvvvfSRgf79+zNw4EA8PDyARyMtbVq0oJjJxD612qraJ31VKu5YLEw6dAgg00Ju/348LS2NWrVqUaFCBdasWcP58+e5c+dOtoqk7d69m1OnTrFgwQL69++PUqnEYDAwc+ZMxo4dm765ITw8nG+//ZaQkBDi4uLQarWUKlWKwoULA2DMxrSbkHuyPGafnJxMSEgIISEhAISFhRESEsKdO3dITk5mzJgxHD9+nFu3brFv3z46duxIsWLFaNmyZU7H/karUqUK8+fPF7U/BMFKBQsW5PCxY/R9/31+VioJSk2lnU7HJzodn+r1DNPpCNLreUunw1CpEtu2bWPkyJG5EovFYqFPnz4YjUaGDRv2wsTj30qXLs3AgQMJCwtj4MCBzJs3j6JFi6JQKGjYsCH79u3D39+fwMBA7OzsmDBhAkFBQSxatAhJkli1ahX3HzxgnUplddG1h5LEz2YzQYGBqFSq9M///3ry+JMdKfb29vTv359KlSqxcuVKYmJirL5OeJQwHD16lBEjRvDee++hfNybR61WM2bMGLp378706dNRq9V89tlnTJkyhdOnTxMZGcn169dZuHAhw4cPRy6Xs23bNpKTk7N0fiH3ZHnNx19//UXjxo0zPN6vXz/mzp1Lp06dOHv2LPHx8fj5+dGiRQu+/PJLvL29rTq+6GprvSpVqnD27FnOnj1LpUqVbB2OILw2kpOTWblyJSuXLyfq/n10Oh2urq7UqFOHocOG5eqo4s2bN1mwYAHffvstw4cPz/JWUEmSWLlyJadOneL8+fOUL18+w2u++eYbPvvsM6ZNm0ZqaipbtmzhxIkT9OrViwshIQTduMGmZ0zvZKavTscGhYKx48ezZcsW7t69S0hICAUKFEh/TWpqKvXq1SMhIYFRo0Y99X69Xs+0adNwc3NjxIgRVp/31q1b/PTTT5w4cYIaNWpkeH7Lli106NCBEiVK0KxZM4oVK5ZhHVxMTAxHjx4lODgYHx8fVq9eTe3ata2OQbBerq75aNSoEc/LV3bt2pXVQwrZtH79ekaNGkWRIkVsHYogvFYcHR0ZMmQIQ4YMeWXn3L17N+PHj+fMmTPI5XIqVKiQrRoUf/31F6dOnQIeFR/LjL+/PyaTCZPJhKOjI7169aJkyZKsXLkSs9nM93Z2Vp8vwmJhpdFIp/btcXFxoXXr1syaNYtq1aoxduxYqlWrxtWrV5k+fTrXr19n2LBhGY6h0Wjo1KkTixYt4s6dO1kuFvasrblPHu/Ro0f6tNJ/eXp60rFjR+rWrcuqVato3Lgx27ZtE+s/bExslXiNBQUFsWXLFpRKJWfOnLF1OIIgZCIiIoJWrVrRunVrzpw5g0wmQ5IkSpUqla1jbdmyJX0U4MCBA5m+bt++fXh4eDxVrKxKlSr07NkTgNgs1L1YajSiVqnSz+nh4cHIkSPx8PDgww8/pHbt2vTv3x+TycSIESPS11j8V9myZXF3d+fYsWNWn9vPzw8HBwfWrl2b6fOrV6/G09PTqrUknp6eDB06lCJFitCpUydu375tdRxCzhNdbfOBUqVKERcXR0JCgth6Kwh5SEREBHXq1MFgMPDNN99Qs2bN9FGCTZs2UahQoSyNAqxbtw5vb2+6d+9OTEwMEyZMoEGDBk/tPDl06BArV66kRYsWGXZ/VK9enX/++YdRFy7QSaXCzoo1H0csFooWL/7ULhxPT0/69+9PSkoKCQkJODg4vLD3ilwup1SpUty8edPq61Wr1dSuXZuffvqJatWq0a1bN2QyGWazmQULFrBixQreeustqz/3VCoVPXv2ZNq0adSvX5+3336brl27Uq1aNatjEnKGuFPlAx9//DEmkynfdLwUhPxi8uTJGI1GTp8+zdixY2nYsCGDBw/m7NmzlClTho0bN1p9rDt37nDr1i3atm2LUqmkR48e3L9/n1KlSjF27Fjmzp1Lr169aNasGUFBQTRq1CjT47Rv354Yi4U/TCarzhsiSRR8RvFHBwcH/Pz8rG765u/vT1RUFCYrzw2PWnqULVuWHj16ULx4cTp37kxQUBBDhw6lTp061K9f3+pjXbt2je+//57U1FTUajVLliyhevXqtG3bVixGfcVE8pEPfPjhhyQlJVGuXDlbhyIIwmNpaWmsWrWK4cOHZ+gL4+DgwKeffsrNmzeJioqy6nhnz57F2dk5vbCWt7c3H330EWXLlmXu3LmMGDGCAwcO0KZNGwYPHpxpfxgALy8vShQrxkorE4BkScqx4lz29vZIkpSlCs0KhYI+ffrg7eVFWGgoG//8EycnJz766CO6detm9ajHgwcPWLRoEbVr1+bGjRvcuHGDe/fu8fvvv3P48GH69++fzasSskNMu+QTSqWS1q1bY7FYxKJfQcgD4uLiSEtLo3Llypk+/2RHTXx8vFW7Ae/cuUORIkWeutm6ubnRuXNnOnfujCRJVlU2BShSrBgnwsKseo9aJsuxdg5Pqlk/2TJrDYvFwvp164iOjuYPrZYBOh1JSUmEh4c/c31JZg4dOoSzszMbN25MT6YUCgXdunUjJSWFAQMGcO3aNUqUKJG1ixKyRYx85COJiYns3r2b0NBQW4ciCG80SZLYvXs3crn8mdOhFy9eBEjvX/Ii0dHRz01SrE08AHx8fIgzm4l78UspJ5Nx7+5dq4/9PPfv30ehUPD3339b1ewtOTmZZUuWcOzYMRZqtXRWqRimVnP/7l127NiRpcJhV65c4Z133sl0FKdnz55otVq2bduWpesRsk8kH/nI+vXr+e233yhatKitQxGEN5bBYKB3794MGDAAFxcXZs2alaGzt8Fg4OuvvyYgIMDq6s9mszlLIwbP82RKRmdFAlBTJiPsxo1nNge1liRJXLlyBRcXF9atW8fPM2cSEhKS6fqPhIQEdu/ezbSpUwm/eJF1Wi0DHsf8vkqFyWKhfv36z5xayozZbH5muXmNRoNarRZVUF8hMe2Sj/j4+NC7d2927NhBfHw8vXr1snVIgvBGMZvN9OjRg61bt9K3b18CAgKYOXMmNWvWZPz48em7Xb799lvOnDnDsGHDrB6xsLOzy7FFkUlJSQCM1RtYYqdF9ZwY+qhUTE9J4Z9//nmpYoa3b9/m/v37ALjK5fjevcvSpUtRKRQU9PHB0c0Ni9lM9P37RMfHo5XJ6K1U8pWdHd7/mmoqLJfTRKnkzp07REREoFKprJq28vf3Z/369UyZMiXD73z//v0kJiZSs2bNbF+fkDVi5CMf6tmzJwMHDsyxeVpBEKwza9YsNm7cSP/+/alSpQqenp6MGDECrVbLoEGDKF++PF27diU8PByLxUJqaqrVxy5UqBDh4eE5Emd4eDiu2gKstUhUSdOzyGAgNZPikRfNZuYbjShkcjZv3pLtzxSLxcLGPzfhZV8Yd20hCgNH7ew4b2/PdKWSBlFR+F+5QtFr13gnJYUVWi33HBxYoNU+lXg8EQCkJSWxYsUK1q1b99zCl0/Ur1+fy5cv8+mnnz41inP79m2GDRtGxYoV03vtCLlPjHzkQz/88ANz5swhOTkZd3d3W4cjCG+E8PBwxo8fT4MGDZ7aeebt7c2gQYOIj48nLi4OR0dHPD09WbRoEWvXrsXX19eq3i7FihVjw4YNJCQkWL21NTNms5kL5y9Szr0l1bzbs/f2PAbFHmW0wURLhQwPmQw9cMUCwWYjLipXavq25O/IP1m/fj09e/bM0voSeFTd9fbtW4yotIwTkRswPdgCQHmFgvIv6DCcGcXjQm0dO3YkLCwMi8XyzCqoTxQvXpz27dszdepUfvvtN1q3bk1UVBTbt2/H19eXbdu2Zfm6hOzLcm+X3CZ6u+Qci8VCcnKy+D0KQi64dOkSv/76K5cuXcLJyQlJkti5cyeTJ09+qiDXsyQnJzNr1ix0Oh0DBgwgKCjoua9PS0vj888/p2HDhrRt2zbbcZ85c4bly5fzSbV1FHR8VGX1YVoEwff+IDwxhDRjPCq5BgdNAap4t6W8ZzOUchV/39/I6qufUrduXd56660M609SU1NJTU3FyckJjUYDPPoM2rNnDzt27KB14AhaBL7P5tDpXL+7kjv2mmzf7NukpRFWtCjvP26sabFYkCTphQkIPNo19Ndff3HhwgUKFizIqFGj6N+/P66urtmKRfh/udrbRXg9WCwWChQoQGBgYHofCEEQcsYPP/zA6NGjKVCgAA0aNODu3bscO3YMZ2dnqwtoOTo6MnLkSObMmcOsWbOoX78+jRo1ynS0UpIkoqKicHJ0ZN++fVSpUsXqhar/lpKSwp8bNlHWs2F64gHgYVeI9kU/eu57a/h2wiKZ+CP4S26GhtG5y1sUK1aMu3fvsnPnTi5evIgkSWg0GipXrkylSpXYtWs3YWE3aRU4nOaFH/XRKeFWmwPhSzlqVlIvGwtooywW9phMtHrcF8dsNjNr1izKlStH8+bNX/j+gIAAXFxckMlkHD9+/KnmeMKrI5KPfEoul1OlShUOHDhAYmKiGP0QhByya9cuRo8ezbhx45gyZQpqtRqAkydP0rp1a1avXs2gQYOsOpaTkxOFChUiJTKSs0eOcOTwYYIKF6ZQ4cK4urpisViIjo7mTmgo96KjCZDLsZPJWLZoEcM/+MDqbbrwqD39smXLMektdCv/ebauvZZfV/ydy7H66qf88ssveLh7kpAYT7FixZgzZw7FihXj2LFj/PTTT5w6dQpnlRfDKy2hmGv19GOUcKtNAW1BfjE+yFbyschoxALExsYCj2p1BAYGcu7cOZo2bfrComM3btzgwIEDtGvX7pnN6ITcJ6Zd8rHExEQMBsNTfR8EQXg5rVu3JiYmhr///jvDtMGKFSvo06cP48ePt2oHRkpKCl989hmTFQpGqdWsNhrZYzZzEnhgsSAHAuVyqstkdFEqaalQcFOSqK/Tgasr7/Tr91RvmPDwcO7fv49araZUqVLp0z8PHz5kxYqVRNyOYFD5eRR3y9iePisskoVrscdZeW0sJcoW4fDhw0/VzwgLC6NK5aqUc2hFlxITM7z/r/DlbA/9nnP2dpTOwpqPWEmiXEoKOkkiDmjTpg3NmzfHYDCgUCheuBU5LCyMX3/9Fa1WS3x8PI0bN2bjxo3iXpNDsnL/FslHPmcymejXrx8VK1Zk7Nixtg5HyIcuX77MggULuHHjBm5ubrz99ts0b9483zY5dHBwYPLkyYwZMybDc3q9Hq1WS48ePahdu/YLj3X+/HkWL17MHQcH/LPw+wq1WOiq13PebKZ2nTqULVuW3bt3c+vWrfTXaDQaatWqhVqt5tDBw9jJXehT+nuKuFSx+jzPczf5CtNPdWXLli20a9cuw/MTJkzgpxk/82WtwyjkT9fj0JlS+PlMT5S6CI7Yqa269iRJok1aGlcsFk7Y27PUaORLg4FSpUrRo0cPnJ2dOXToEEWKFMlQ+dRoNLJ371727NlDYGAggwcPJjw8nCVLllC5cmX27t1r1Tod4fmycv/On58OQjq5XM727duZNGkSOp3O1uEI+czUqVMpU6YMK1aswGKxcPr0aVq1akWrVq1ISUmxdXi5Qi6XP3Ndx5PHrV1I+WSrrW8WF14Wlcv5W6vla5WKkOBgFi1ahFKpZNOmTeh0Om7fvs0HH3zAoUOH2L/3ADW9ujKu2qYcSzwA4nSRAFStWjXT56tVq0aaIRmdOePfgVbpwHsV5pOicqdGmp6dJhOW53wPPm020yA1lfNmM5vt7CgilzNFo2GTVsvNa9eYMmUKy5Yt4+DBg6xdu5bExEQePnzIhQsX2LhxI5MnT2bPnj00b96cYcOGodVqKV68OIMHD+bEiRNMnjwZgFu3bnHmzBmio6Nf/hckPJdIPvI5uVzO0qVLmTRpksjshRy1fv16Jk6cyKRJkwgPD2fr1q38888/bN++neDgYEaOHJnlY27bto3mzZtjZ2eHo6MjXbp0ITg4OBeiz77mzZuzcuXKTCt+rly5EplMZnV/kCdJSnaGn1UyGf/TaKgnk6HVajly5AgdOnRAo9EQEBDAd999x6effopcLqd54SFolZlX98wuJ/Wj9RKXL1/O9PlLly6hUmjQKBwyfd5N68uoKmuxcyhF67Q0iqWk8KPBwDmzmVsWCxfNZpYajdRMSaFaaiqJksQRe3tq/2ua5rYkYbRYaNSoETExMcTHx3Pv3j0+++wzvvzySxYuXMipU6eoXr0648ePp3Xr1k9NzQQGBtKyZUu+//57KlWqRFBQEFWrVsXPz4/u3bvnWF0VISMx7fIGCQkJwcHBgeKPV4kLwsuoW7cuGo2G/fv3Z3juhx9+4H//+x/h4eEUKFDAqjoM33zzDRMmTKBWrVp069YNvV7PihUruHLlCsuWLaN37965dSlZcvToURo0aEC/fv2YMWMGbm5uSJLEtm3b6NmzJyVLlqRv375WHevChQssXLiQmw4OBGVzmspTp6P7e+8xZ86cDM/FxMTg7e1Nt+KfU8u3S7aO/yySJDHtTEfKVg9i566dT93UY2JiKF+uIoVlNelZ6ssXHudK7FEWXRgOMgnzf0q+t1QoGKZW01ahQPGvESKLJFEsLQ33ihXp8/j3nZqayr1794iOjsbBwYFChQrh5ub23JEos9nM5MmTsbOz4+eff6Zo0aIcPXqU77//Pn1HjJ+fX3Z+RW8cMe0iZJCamkq1atXo2LGjrUMR8gGDwUBwcHCmJfyNRiNOTk4YjUYqVqyIXC5HqVTi6upKkyZNmDp1KpGRkU+959y5c0yYMIFJkyYRHBzMxx9/zPjx4zl//jx9+vTh3XffzTND4XXr1mXJkiWsWLGCggUL0qBBg/QCVnq9nvbt21t9rKJFi6JVqViWzZ4iZkkiUZLw9/fP9HlPT0+0Gjt0ppwpy/5vMpmMDoFjOXDgL5o2acbWrVu5evUqS5YsoWaN2qQm6NO3177oOKU96lHDpzNOTo+Kp/2q0XDU3p47Dg7stLeng1L5VOIBcMxsJsxspm69eumP2dvb4+/vz+bNm4mIiMDd3f2FU2AKhYI6deqQnJxM586dqVq1KqNGjeL48eOkpaUxderUbPx2hBcRyccbwt7eno4dO6LX662uQyAIWbVx48b0BX0FCxakVKlSdOvWjZ49e1K3bl1iYmL44osv8Pf354MPPiAlJYUtW7bQvn17lEolc+fOZeDAgfzzzz/AoxvDjBkzkMlkLF261LYX9y99+/blzp07fPrppxQuXJgWLVqwfv16NBoNO3futPo4dnZ2VKlenXlmM8ZsDELvMpuxSBL792UcfYJH239T01IoYP/8AmbZVdqjHoPLz+XmuQe0b9+eUqVK8e6776JJ9GFEheV42BWy+lhlPBoQnxBHNZWKwWo1dRSK5y5EPWGxoFYqMywu1Wg01K9fP0tr3EqUKEFqaupTHYgLFizIkCFDWLZsmfjMzAVi2uUNYrFY8u0OBOHVq1evHiqViv3792M2m3n//fdZtGgR5cqVo3Xr1hQsWDDT96WmphIcHMzu3buxt7cnPj6eGjVq0LlzZ5Ie9+uIjIxk48aNNGzYkO3btzNy5EiUSiWlSpXCxcWFihUrUq9ePRo0aGDTv+n4+HhCQkKIi4tDrVYTHBzM1KlT6d27N9WqVbPqGPfu3WPatGnM0mgY+bhmiDX0kkTj1FSOWyxIPFqD07lz5/TnU1JSaN2qNZfO3GRC9e3IZVkvY24tSZKITA0l1RiPu7YgbtqsF0BL0D9g8rEmtFco2JxJ2/v/ek+nY6+XFx9lsotPkqQsVU9NS0tj/PjxrFq16qnRvN9//50ePXoQHx//UiXt3xSiwqmQKblcTnx8PGXKlOGdd97h+++/t3VIwmvsk08+4a233mLChAmEhoayYcMGevXqRY0aNZ77wW9vb0+zZs1wc3Pjt99+47vvvntqG/ikSZPo0qULnTt3Rq1Wk5CQkF6M68GDB9y6dYsdO3aQkpJC0aJFGT9+PAMHDnylfTnOnDnDnF9+YdXKlaTp9U895+LoyMqVK4mPj6dp06YvjMvPz48qlSvz4dmzFJTJ6GxFm3ijJNFPp+P048SjjEcDunbtSvt27Wnd5lHPkoULFhH94CGDys7N1cQDHk2d+DoUe6ljuGgK4KByJdacaNXrdZKE6nEZ98ziSU1NZdmyZTRr1uyF69yeFIr772jJuXPncHZ2xtExZxfrCiL5eOO4urpiNpv55Zdf+O6778RIiJBtnTp14rvvvmPcuHEA9O/fP0st1y9evEjx4sUz1MvQaDTpC/8KFy7MiBEjMjRekySJmzdvcvjwYd577z3WrFnD3Llz2bVrF+vXryc1NZUKFSowdOhQKleu/NLX+kRqaip93nmHDRs34q9SMUEmo4u9PZ4yGQbgusXCQr2e34HtW7dy8uRJevXqReHChTNNQpKSkjh8+DAh586h0WjoqtPxmcXCCJUKz2f82zxtNjNWr+ew2UxnpZKtkoaBZWdxInIDxw6uZcuWLWhU9lTwaM47lQbg41A0x64/twU4lSci7qhVr3WSyUh7TldgrVaLTqdj7969L0w+nmx5/nfF2PDwcH799Vf69etnVc8YIWtE8vEG2rp1K66uriLxEF5a7969mTx5cnovj6x48OABHTt2zPSmHBQURJEiRZ7Z8VUmk1G0aFGKFi3K5cuXWbVqFeXLl8doNNK6dWsCAwPZsWMHCxYsYMaMGXz88cfZvcR0KSkpNG/ShPOnT7NSq6W7UonyP7EXlMtppFTyg8XCWL2eZVFR/PTTT/j4+BAUFIS3tzdyuZyEhATCw8MJDQ1FLpfTtGlTmjdvzu7du5l64ADfGI30UCjoqlI9SmwkiRsWCwuMRv62WPCXydhtZ8dMo5GCTmVRyJXU8etOHb/uWZ5yyEv8ncpyIO6YVddQQS5nQXQ0RqMRVSajRXK5nD59+lg1ahEREQE8ajp3/PhxgoODmTFjBo6OjkyYMCF7FyM8l0g+3kDVq1fHYrEwbtw4unXrZvXctCD816+//ookSVna4fGEWq3m3r17mT5nMBiIjY2lWLEXD+WXKlUKJycnVCoV+/bto2jRR9/0TSYTkyZNYvTo0VSpUoVGjRplOcYnJEmiV48e/HP6NAc0Gqq/4JtwAbmcJVotBfR6vjcacXR05Pbt25w+fRqLxZK+DbRDhw5Ur149vTR5u3btaNSoESdOnGDD7t38lpb21HFbKhRssrNL33Y6yWDCSfN0Y7TXNfEAcFZ7YpTMBJvN1H1BqfS6CgVmvZ6rV69Srly5TF/j6emZXvyudOnST5WA/7dLly6hVqsZPXo08Ohvs2vXrkybNg0fH5+XuyghUyL5eENFRkby/fffs27dOkJDQ20djvAakiSJRYsWUaVKFezs7LL8/goVKrB161bCwsIytJNfvXo1cXFxVo2mhIWFce/ePXbu3JmeeAAolUqmTp3K1q1bmTVr1kslH4cPH2bLtm2s12pfmHg8IZPJ+Faj4aIkcTo2lnGPC369iKOjI02bNqVKlSp8+cUXjFOpGKBW4yGT4f6fxEKHDJU8/xQPVMo1gMRMg+GFyUcFhYKqSiWHDx58ZvIBj0as1q5dS+3atXnrrbcyPK/T6Th16hSjR49m2LBhxMXFpdcHEXKPGHd/Q/n5+TFixAirWlALb6bk5GTmz59Pr1696NWrFwsWLHiqZPq9e/e4e/cupUqVes5Rnq1mzZq4uLjQpEkTtmzZgtlsJjExkVmzZjFkyBCr28bfunULBweHTP+WZTIZb731FseOHctWjE/M+eUXSqrVvJXFLqxymYzxKhVRsbFcv349S+91c3OjePHiXJAkisvlGRIPACOgyOXFpK+SQvbo9/vH4+qmLzJeqeTq9euEhIQ88zVOTk689dZbTyWm/7Z582ZkMhnDhg2jUKFClC9fXiQer4BIPt5gs2bNYt68edy7d0/sYxeecvbsWYoVK8bQoUMJDw/nzp07DBkyhGLFinHu3DngUXVOINvVH+3s7Bg6dOijYlWPy4K7urry0UcfUalSpUwLmGXmSa8V4zNuVqmpqS/sdvo8kZGRrF+/nqEyWbamNOoqFJRVKjl6+HCW31soIIBTz6mGoAFMFkOWj5tXmaRH11LQz4+BOh3zDM+/ts5KJe2VStauWZOhcF1ERAS7du1i27ZtODg4ULZs2Qy7WU6fPk1wcDDTp0+nUCHra5IIL08kH2+469ev4+/vz7Bhw2wdipBHJCUl0apVK/z9/QkNDeXIkSMcPXqU0NBQfHx8qFWrFh4eHnTt2hW5XM6WLVv4+++/MbzgRpEZDw8PPvjgAz7++GMKFCiAj48Pn332Gb169cp0EWFmSpcujV6vZ82aNRme0+l0rF69mrZt22Y5tieOHDmCyWymRzYTGJlMxttyOdevXcvye11dXYn5T7nxf7NDwmjRP/P5143RrEehUPLx6NF4eHgwVK+namoqS41G0v6ThN22WJhoMHDUYsFgMPDzzz9z48YNdDodCxYsYPr06QQHB3PhwgUWL17Ml19+yeTJk7l06RIWi4WDBw+ycuVK+vfvz5AhL67EKuQssebjDVe8eHEKFizIvn37bB2KkEesWLGCmJgYTp48SUBAQPrjQUFB/PnnnxQtWpRixYoRGBhIfHw8d+7cYdWqVWzcuJHmzZvTsGHDLO+kCggIwN7eHicnJ1xdXbP0Xm9vbypWrMjIkSNxdnamY8eOyOVywsPDGTZsGLGxsYwaNSpLx/y3uLg4ALxeYiFnAZmMNL0es9mcpW2bFovlud8QC8kkjqbdynZcec1DXQSuzq4cPHiQmIcPqVu3LrExMQy4epUP5XKKKhTYAfHAZaMRjVpN9Xr1qFq1Kps3b2b27Nm4u7tjNBpZs2YNXbp0QalUcvbsWd59913Onz/PkSNHOHDgANevX2fUqFH88MMPYuefDYjkQyAkJCTLH/hC/rV3714aNGjwVOLxRGBgYHofjGbNmqU/HhMTw19//cXmzZs5f/48AwcOfKpmwotIksTdu3dp3LhxtmLu1asXy5Yto3Pnznh7e+Pu7s7Vq1dxdHTkzz//pEyZMtk6LpA+ZWMBsru6wsyj9R9ZnbaJjo4m8DnJSjWFgj+Sr2O2GFHIrRspyssiki/i6e3Btm3baNy4cXovqpiYGE6dOkVCQgJ6oxE3rZZuBQtSpUoVNI8LjQ0fPpwtW7Zw4MAB1q5dS/fu3dOPW7lyZXbv3o2/vz+XLl2iZMmS7N27l6ZNm9rkOgWRfAiAu7s7t2/fpm3btsyePfuldgUI+cPzvgnK5XL+25XB09OTrl27UqVKFZYuXcrs2bMZOXKk1ZUh79y5g06n49iRIzg4OFC3bt0s3ai1Wi2DBw/m9u3bbNiwgfDwcGbNmkWpUqWws7MjOTk521UqPT09AbglSRTP5uhHmCRhp1ZjNpuz9C07NDSUis9Z81FVLscg6YlMDaWgY/YW/uYVFslCRPIlXDXOuLu706ZNm/TnPD09adWq1XPfL5fLUavVuLm5PVVm/t/H6NatG4cOHUKSJLGF1sbEWJMAPFr8d/nyZatbgQv5V8OGDTl06BB3797N8FxERARHjx59ZsXIIkWKMGLECJKTk1mzZk2GJOVZjhw5grdCQbO0NNatW8fqVaswm81ZilsmkxEYGIiTkxPe3t5MnjyZZs2aUbduXfz8/Pj444/R/6cU+uXLlxk1ahTlS5WikLc3gQULUr1yZb799tv0LrpNmjTBxdGRxdnsPGuUJBYbjaTo9UyePJnNmzeTlJT0wveFh4dz//59jkkS156x7qOyQoEMiEi6lOnzr5Po1FvoTWlERUXRuHFjq9f8/JvZbMbBweGZC4yfjPBev37d6gXNQu4QyYcAQIECBfjpp59YsWKFrUMRbOzJdErXrl25f/9++uP37t2ja9eu2NvbP7cwXYECBejRowcXLlzg7NmzLzxfWFgYp06eZLxSyR92dqzQajlz6hTr/vjD6uTlCbPZzM2bNwkNDaVSpUqcOHGCkJAQRo0axdy5c+nSpQsWi4UjR47QuEEDypQpw9p586h78yYD4+N5OyaGYhcuMHniRAr5+dH7nXeIi4uj38CBLJIk9Nnow7nJZCJakujTpw/Vq1fn2LFjfPPNN5w5c+aZ75EkiV27duHn54dPUBB1dDo2m0xY/nN+R5mM4goV4UkXsxxXXvPkGmQyGVWqVMnWMQoVKkRERATnz5/P8JzZbGbjxo1ER0czYcIEli9f/lLxCi9HJB9CupEjR9KgQQOWLFmSpXbUQv6ycuVKFAoF//zzDwEBATRv3pxmzZpRuHBhLl68yKBBg9Bqn1/YqkKFCpQqVYr9+/c/N4FISkpi1fLlVFcqGfH4m+47KhULNBqOHT+evq3XWhcuXCAtLY0SJUqwd+9ePv/8c/z9/fnqq6/4448/2LZtGxMmTKBp48YkHz/Oaq2WcI2GeVotUzQapmo0rLaz4669PVMVCg788Qe1qlWjadOmRBuNzMjijp5kSeILo5GihQtTtWpVOnXqxMSJEylRogTLly9nz549mb7v77//5sKFC8yZM4f9hw6hV6vpmJZG0bQ0vjcYuGQ2c89iIdRioTgWQh7sxGTJ3shMXnE2ejuODk74+Pi88O/rWcqXL4+7uzuDBg0iNjY2/XGLxcKECRMIDw8HHiU4lSpVYv78+Vies5tIyD0i+RCe8tdffzFw4EAGDhxo61AEG5AkiYULF1KjRg0mTpxI+/btiYyMJCoqig4dOjBx4sRMF6Jmpn79+kRERGQ6fQOPervMmTULeWIiqzUaFP9aT9FfpaLh4+qV1jKZTOzcuZMiRYowbNgwBg0axJEjR2jYsCFxcXG0bduWoKAgpn33HT1kMo5qNPRUqVBnso7DQyZjtFrNKbUaz9hYhrz7LsOHD2eiwWD19EuKJNFFp+OGXM5b3bqlP+7o6Ei/fv1o1aoV27Zty5CAnD9/nj/++IP+/fvTsWNH5s6dS5rBQO/evfGsVIkJRiNlU1MpmJJCsZQUtpnNpJgSOB+deSLzOniYFsHlh0dwcnbEw8Mj28dRKBT079+fS5cuUbhwYQYOHMhHH31EiRIlmDZtGj/88AO9e/dm1apVrFixgiFDhmRobCi8GmLBqfCURo0aUalSpde6P4SQfTdv3uTBgwd06tQJe3t7GjZsSMOGDbN1rJIlS6JQKAgLC3uqgFNKSgrBwcHs2bkTf2CHVkuRTBZhDlcq6f64dLo1hcx27NhBVFRUehO5smXLMnz4cH755Rf69u3LihUruBceTlulkiX/SXaexVcuZ5daTe2EBC6eP8+QwYN5d/58zprNfKxWE5RJ3BZJYrfZzASjkUsyGe8OGpShgJVMJqNly5bExMSwfft2HBwcqFq1Ktu2bePQoUN06dKFvn37MmTIEJYuXUqDBg2oVq0a1apVo9Nbb/HgwQPS0tJQqVS4uLjwx+/rOHp/DVW822SI53UQfO8PNBotzs7OL32sgIAAPvnkE/bv389vv/2Gr68vDRo0YMWKFdSqVYtvv/2W+Pj49KaI2alPI7w8kXwIGTyZp7dYLGL/+xvmyTRHTlR7VCqVFChQgDNnzqBUKklISCAiPJxrV64gWSyMUCr5SqPB/hlJQCelEi+FgpMnT6ZvucyMJEns37+fffv20b59+6di9/X1pXv37ixevJgPPvgAo8nEPAcHqxKPJ7zlcqYqFPQ6fJjZc+dStFgxvp4yhV+Sk2mpUNDtP51n51sshJlMFPLxYWTv3s/8XcpkMjp37syVK1f4448/2LJlC5Ik8d1337F//36aNGmCp6cnBoOBunXrpr/P0dExw86devXrsnTpUu4lX8PPsYTV15YXGM16TkStp2btGhgMBm7fvv3Sx3R1daVSpUocOnSITZs2Ubly5fTnDh48SIkSj35HN27cAMRnnS2I37aQqT179mBvb8/WrVttHYrwCj3ZhfGs7p9ZZW9vT1hYGGvXruXEnj34XL3KFwoFEfb2/KDVPjPxAFDJZJSVyYiPj3/ma+Li4li4cCFbtmyhRYsWNGnSJMNrKlSoQLly5Vi7YgUdFAoKZuMm01mpxEup5LPPPuPcuXPYOTqCTMZhpZJ3dTo6pqXRTadjksmEe4UKfPDBB4weN+6FSZy9vT316tUDoGLFily5coXz589z9OhRNm7cSLdu3fD19U3f7vss5cuXx8nRhQPhS7J8bbZ2MmoTKYZ46tSpQ6FChYiMjMywKyk7bt++jVqtfqrp3NatW9m5cyeDBw9Of2zt2rXY29tz6tSplz6nYD0x8iFkqmbNmpjNZiZOnEi7du1sHY7wCkRFRbFz504A9Hr9S/VDecKg09FfqWSxVputqTwHSeL87ducP38ePz8/VCoVqamphIeHc+nSJc6fP4+DgwOdOnXC2dmZv//+G6PRiEwmQ6VSodFo8PPzo3Tp0ly4cIGh2ei+CxAhSdhJEhs2bMDb25tixYoRGRlJ1549KV++PKmpqSgUCuzs7LL8DbpatWrs3LkTSZKQyWSsXr2an3/+mY4dOzJt2jSrppwUCgVt2rZi7dq1VPVuRyn3ui98T14Qp7vPlpszqF69Ot7e3qhUKiRJ4syZM9SuXTvbx5Ukib///huVSsWMGTPw9vZm165drFu3jk6dOtGnT5/019auXRuDwcDYsWPZv39/TlyWYAWRfAiZcnZ25sCBA9SoUcPWoQivwO7du+ncuXN6c7Z79+49s5aHtSwWC5FRUZRVKLK9huihJJGQkMDixYszPGdnZ4eLkyuJSQls3Lgx/XG57FERNIn/32WjUqoBKJ+NUY9tJhPddDrsXFwY1K0bpUuX5vLlyxw9epSAgACUSuVLrVXw8PDAzs6OpKQk9u/fj8ViSb85JiUl4eLiYtVxatWqxdmzIay9Nomx1TZhp7S+wqwtSJLE79cmo7FTpbe6d3d3p0yZMhw4cIDq1atnOwG+cuUK9+/fp379+kyaNAmTyYSjVkuAnx+pyclMnTqVQYMG4evrS0BAAPv376dBgwY5eXnCC4hpF+GZ6tWrR3x8PO3btyc5OdnW4Qi5JCIigrfeeouGDRsSHh6Oo6Njltu/Z+bWrVsYTSbKZnMuPcZi4bTFQp06dfj8889p3749QYFByGRy5DI5rsqCFLdrQMci4/ig8kq+qXec6Q1CmNHwPDManmd6g7NMqXOQIRV+pZzbozLadllMgvabTLyl01GsTBnGjR9P2bJlkcvlxMfHI5PJcHd3z9a1/duT47i7u3PgwAEAPv/8c6ZOnYper7d627tMJqNXr56kWRLZdOP7l44rJxjMOhL0D0jUx2Tovvt35J9ciT1K957dnprma9u2LQ8fPmTHjh1PvV6SJCIjI7lz5w6pqanPPGdqaiq///47QUFB3LhyBZPJRA2Vik4mE40jI9H+9RffTZlCgL8/3bt1IyQkhEaNGhEeHk7Hjh1Fh+9XRIx8CM917Ngxtm7dSq9evdiyZYutwxFywfz585HL5axevRpnZ2f69OnDqlWraNGiRba+eep0Ok6fPs3unTtRAe+mpREkl9NQqWSISkVhK5ORJSYTJkClUjF3zjweREfh7ViEzsXGU9W73XO/2ctkMhQyFU5qj/QpiLPRO4iTJFytTEDiJIm3DQaKFCtG/4EDn2oIJ5PJslwA7Vnu3LlDXGwsUffvc+zoUbxkMjbOnk2CJBFrMqFRKNjn60utWrVwcHB47rHc3Nzo9FZH1q5dSznPJpTzbJQjMWaFyWLgXPQegu+u5Gbi/xf7kiGjjHtdahfshZddABtDv6N69eqULVv2qff7+flRrVo19u3bh7u7O3Xr1iUkJIRdu3alF71Tq9VUqVKFDh06PJW46HQ6fv31V1ISEkhLSKCfQsEwe3sq/Kc/ToIksdxo5OdNm6izZQur164lPDyczZs3M3ToUBYsWJCLvyEBQCbl1L+gHJKYmIiLiwsJCQk5su1KeHndunWjc+fOohxxPtWgQQN8fX1Zu3YtAJcuXaJChQq0aNGCli1bWn2c5ORkdu7cyem//0ZvMNBcoaCYXI4SiJYktppMJAHtFAo+12io+pyGaQZJIiA5mWgUIJOo4NWcun49KepSLVtTOAn6B0w51oxZGhXD1Wqr3jNUp2O5XM7Y8eMzNF68dOkS8+fPZ9KkSdmuSyFJEnv27GH79u0UlMkYoVIxUKWiwOPkTJIkTlgs/GIw8LvZjL2DA++9//4LF7FKksSihYu5euUa71dYQBGX7FULzY4T9/9kW+j3JJkSaaRQ8Y5Sjo9cjgW4Y7GwyGQhxGxELVOgcXBk/IRx6cmDyWQiNDSUo0ePPlWhtGjRooSGhtKmTRtGjBhBgQIF2LVrF99//z1OTk6MGDECjUbDrVu3WLVqFfExMbjK5WxXq5/7NwaQJkn00evZZLGwfccOfvrpJ4YPH/5UXxnBelm5f4vkQ7DahQsXnlo5LuQPDRs2pECBAvzxxx/pj3366ad89913DBs2jCJFirzwGDExMcyfMwdDfDwjlEoGq1T4/2eEI0WSWGU08pPRSJjFwmqtlo6Z9O9Is1iokZrKBQl8HYrRu/S3+DmWfOnrXHrhQ/RxB7lkp3lhAhMvSfimpNC4VatME7CkpCQmTZpE3759s10KfMuWLezbt48pajUT1Ornbv+9b7HQTq/nslzO8FGjXpiAGAwGfp03n7vhkQwtv4AA5/LZijErdt+ax45bs+mtVDFBraJ0Jjd+SZI4abEwUa9nn9mMs4tL+nbi+/fvYzKZKF26NL169eKzzz5j1KhR/PLLL/Tp04fFixc/9f/tn3/+oWrVqlSpUoW0tDQuXLiAu5sb+vh4jmg0GUY7nsUkSXQ0GDiiUnErPBw3NzfxWZdNWbl/izUfglV+/vlnypcvz+rVq20dipDDmjVrxvbt258qRz1p0iTq1KnD/PnzuXLlCvDohnbz5k1u3rz51FbIpKQk5s2ejVNCAqft7PhSo8mQeAA4yGQMUqs5ZW9PG6WSrjod+/4zv37aZMI3Vccl5LQOHM7oqr/nSOIBUKdgT66Yjey1omHdBpMJAzxzx4WTkxP+/v6cPHkyW7GcOnWKffv2MUOjYZIVBc985XIOarWUtlhYOG/ec9c8wKNpiUGD38PHz4s55wdyPe7vbMVpraN317Dj1my+VKtZrtVkmnjAo+mqGgoFO+zs6K9SkZiQQGBgIG3atOGnn37i5MmTXLx4EaVSiVarpWzZspjNZj7//POnEg+j0ciFCxfw9PTk7Nmz3Lp1i3feeYekxEQmKhRWJx4ASpmMxSoVaWlpLFu2jAkTJlC+fHn++uuvl/21CM8hRj4Eq+h0Otzd3enatatoyJTPREZGUqpUKSpXrsyKFSsoWLAgACdPnqRx48akpKRQqFAhYmNj0296dnZ21K5dmzZt2rB00SIeXLvGSa2WACvXcxglifZpaZwwm7nj6MgDSeJznY7VZvC0D6Bfmek5lnQ8IUkSP595m+Tky5yw12RanfSJ93U6tri6MnbixGe+5sSJE6xZs4aPP/4Yf3//LMUxbepUqsfFsTGLW5DvWiwEpabStmNHGjVqlP64TqdDr9dn6Oiq1+v58cefiI6Kpm2RD2lYqA9ymfU3ZmukGOP5Irgx7ylhThZ6spgkibZpaYS4uHDvwYP0NTUnT56kefPmdOvWjZIlS/Lll1+SkJCQ/r60tDTat2/Pvn37aNCgARUrViQkJITDhw+jBu46OOCZjUXOvXQ6ThcqxKHgYAICAhgxYgQ//PBDlo/zJsvK/VssOBWsotVqiY2NzXbDJyHv8vHxYevWrXTo0IHChQtTu3ZtdDodp06dIigoCCcnJy5evMhHH33EO++8g0wmY82aNUyfPp1Lly4RGRnJ4iwkHvCogNgCrZbAlBQC0tKIN5uRy+QEOJdncPm52Kly/ouHTCZjQPnZ/HymF3XSHrBV++w1AZclCe8XTG1Uq1aNQ4cOsWrVKj7++GOrW8DfuHGD+9HRfGhnl+X1KwXlcrooFBw4dIgGDRpw9+5ddu3axaVLl7BYLDg4OFCtWjVatmyJnZ0dJ0+eJCoqknLlyrHlwgwuxO6jR/EpFLAPytJ5n+fvyI3IJBOT1VkrTKeUyZiq0VAtNpbKlSvTsmVLLl26xI4dO6hZsyYzZsxg27ZtJCYmEhoaStGiRQGYOHEiwcHB7N+/n8aNG6cfr7CfH/Wjo7OVeAAMVSppGBbG9evXSUxMFJ91uUyMfAhZsnnzZoYNG8b58+dzZJuhkHckJiayfPlygoODHxWtatOGQoUK0aBBA5YuXUq/fv2eev0ff/xB9+7dUQO77eyooVBkeStrx7Q0gh0dSUxJo7BTJd4rOxu1InuFwKyVqI9h4fkhhKdcpZlCxXCVgnZKJcrHsSdKEhXT0ihQtSpvv/32c4919+5dfvrpJ0qUKEH//v2tSkCWLVlCysWLXMlm4bUjJhP109Lo0KEDO3fupGjRogwfPpzAwEAOHTrE3LlzcXBwwMXFhatXrzJixAhmzpxJcHAw/fsNIPxOOK0Kj7R6FCTVmMC56D3cTjxPVNoNTJIBjdwBP4dSBDpXYkfoD7SwxLDSLns36xppaYQ5OeHm6Ym3tzf9+vWjd+/eaLVaUlNTKVSoEG3atGH58uWkpaXh5+fH8OHDmTp16lPH0arVTJPLGWXlguL/SpMk7JOTWb58OX369GHZsmV89tlnXL16VSQiVhIjH0KucXBw4O7du/Tr109svc1nnJ2dGTFiBCNGjEh/bPjw4RQuXJjevXtneH3Xrl0pUqQIN2/epFFaGgqgnlLJUKWSzkolKiturMNUKjbHx+PnWJx3y/yc64kHgLPGk5FVVhESvZPgu6t4K+kidjI57jIFRiDO8miLr0NKyguPVbBgQQYOHMjixYuZOXMmb7/99gsrkt67c4e3ZbJsF16rq1BgD2zbto0aNWqwb98+7B5Xbm3bti19+vShevXqJCcns3XrVtq2bQtAjRo1+ObbqcydO5fNB6az784Cyns2o3XgCJw1XhnOk2pMYFvYTE5GbcRsMeHj44dfcR/UakdSUlK5HLGHw3dXIpfL0crlGCXJqv/n/zVQoWBoXBy3wsMzbCW2t7dn5syZ9O3bl/v379OqVSsSExPp1KnTU68zm83ojUYcNJosn/8JLY8WQT6paaRQKLhz5w4jR44UW29zgUg+hCxp2rQp06dPZ8CAAbYORXgFHjx4QIkSJZ6qcfGETCajXLlyKJVK2rdvz507dzh76hQ9w8KorFSyTK2m/AsW/lV+PETeuNC7aJQ500/GGiqFhuo+Hanu05HwpEuExp8k1ZSIXKbAUeXG/eQbXArfbdWxSpcuzahRo1i5ciXTp0+nQoUK1KxZk8KFC6dvIzUYDNy9e5czZ84QGxeHaza/ncOj37urUsk9k4mvvvoqPfF4oly5cgwYMICNGzfStm1bwsPDmT9/PgvmziXq4UM0cjluSiWJxgSO31/Pqfvr8XEqQ6vA4ZR0q4NSruJ63N+suDIWAyk0b9mM2rVr4+SUsa5KVFQUhw8fZunRo5zW6Viv0VA0i9MegY9fHxsbm2kdkz59+uDq6srkyZMZO3Ys8Ogb9r8pFArstVoSXzCQH2OxsMtsJk2SqKxQPDXtlgpYIL2ibO/evQkPD+eDDz7I0vUI1hHTLkK26HQ6ZsyYwcTnLMgTXn+jR49mxYoVhIeHo/7PDdNkMhEYGEhgYCDdunVLf/zWrVv8vmoVMdHR/KHV0uE5hcqSJQmn5GR6l/6Oqt5tc+06supCzF8sujCCTz75xOoOvyaTieDgYI4cOcKDBw+ARx1oJUkiNTUVSZLw8vLCotMxSK/nm5f4lu6Rmkqs2UxycnKmN+ylS5cyYMAAfvvtN94dOBCNxUI/uZz3VSrKPr7hSpLEX2YzvxiN/GkyIQOQK3G3K8jD1HCKFC1K797vZKhxkpnw8HBWLF0K8fEc1mopnoUEZI/JRIu0NG7evElQ0LPXokiSRFhYGA0bNqRevXoZdt5Vq1QJn4sX2ZpJ/x6TJPE/vZ7ZZjN6iyX98VpqNStUKorK5WwxmeiQlsaZM2ee6oKbmJjIvHnz0hMf4dnEVlsh140bN45PP/2UuXPn2joUIRd16NCBBw8e8OOPP2Z4bu7cudy9e5datWo99XhgYCAfjx1LmfLl6arTcfA55aoTHn/3yWt9SEq718NF68WhQ4esfo9SqaRBgwaMHz+e//3vf/Tu3ZvKlSuTkpJC8WLFWLFiBXfv3qVMuXKcf4nvfBEWC3GPtwtfvXo109dcu3YNrVZLnz596A7ctbPjZ602PfGARyMojZVK1tnZEebgQCWVCqUc4vR3KVmqJO+/P8SqxAPA39+fER9+iMzNjQ56PbosXF/U49e6ubk993UymYwiRYrw2WefsWbNGiZMmJDe8TguLg4Pb2+2m0zc+ldy8cQHej0/mc1MnDyZBw8eYDQa2bx5Mw8LFqSxwUC0xcIck4nqlSs/lXgAvPfee4wbN47NmzdbfU3Ci4nkQ8iWGTNmEBgYmOUOnsLrQ5IkfvrpJ9RqNf/73//o2rUrf/75J5s2baJnz56MGjWKBg0aZLrNVKlU0qdfPwKDguhjMJD0jJvRLrMZGTJ87Ivm9uVkiUKupHGhgZz8+yShoaFZeq9MJsPHx4cqVapwNzwcZ7mclLAwevfuTYO6dalcvTo7jMZMb5LWmG80olYqcXNzY9KkSVj+c5yoqCjmzJmDQa9nsErFco0GpxesxQiQyzmo0WAnSdjb29OvX78sl9Z3cnKi78CB3LBY+NJgePEbHlttsVC1YkWrG+i99957fPXVV3z//ff4+flRqlQp/Pz82L9/P1q1mrmPmyM+ccdiYZ7JxHfTpjFp0iS8vLzSpwoPHD5MjFzONwYDO41Gho0aleF8CxcupFChQlb32BGsk+U7x6FDh2jfvj1+fn7IZLKnuknCow+szz77DF9fX+zs7GjWrFmONKkS8halUklYWBhDhgwR/yjzqd27d7Nx40Z69epFjx49OHr0KJ07d6ZTp04cOHCArl27pncjzYxCoaDnO+8QLZfz7TNuRrONZkq718HdrmBuXUa21S/4NoEuFflt+Qri4uKy9F5Jkti2bRs3b91ik0bDLa2WP7Va1CEhzJo1CzuNhvn/uUlawyhJzDMakSERFxfH9u3bcXV2YujQoYSEhLBs2TLq1q2LIS2NSkolv2heXM31iYsWC/FmM126dMn27g4/Pz8aNWnCTJPphesvAMIsFnYYDAwdOdLqOGUyGRMnTuTOnTtMmTKFtm3b8vXXXxMREcGHo0czw2hk179G29abTKhVKgYPHpzhWAULFqRb9+4sAPx9fenRo0eG1zg7OxMeHk737t3FZ10OynLykZKSQsWKFfnll18yfX7atGnMmjWLefPmceLECRwcHGjZsqX4n5ZPTZw4EScnJyIiImwdipDDZs+eTaFChahUqRK1a9dm3LhxTJ48mcmTJ/O///2PevXqvfCG4eHhQY3atZlvNqP/z83omNnMWbOROgWfv53VVuQyBX1LT0dusGPWzNncunXLqvcZDAbWrVuXXsG00eNtvJ1UKg5oNIxRqUjV65lpMnHGimqr//apwUCMJPFnxxIcf6c881sUpYmPhoW/zqNq5cr0798fLy8v0gwGPlAo0rcPW2Oe0Yinqyvly79cKfZ69eqRJkmstiK5mmYw4OzomK2+Ub6+vnzyySfMmDGDjz/+GG9vb6ZMmUKrVq3opNfz5+PzJ0kSLk5OmS6YBSjk749BJmPbrl0ZFu/+26BBg3B1dRUdvnNIlpOP1q1b89VXX2X6jefJMO2nn35Kx44dqVChAsuXL+fevXsZRkiE/KFDhw6YTCa+/z5vtPAWckZycjLbt2+nZs2a6QmGTCbD1dUVV1fXLE231apVixizmYP/utHet1jooTNQ0L4opd3r5Xj8OcVV68OIistwtHgzc+ZM1q9fT3R0dKavNRqNnDp1ihnffsup4GDmaTR8/J9FunKZjO80Gt5TKtFbLLQ2GKxKQCRJ4gu9nmkGA5/WLkRpD3t8HNS0CHRlZtMiHO9dgdHV/XDUKLl04R8c5XK6Z3Ha5KAkUaZChZeeSnV1dSXQ3/+p/9+ZmWkwMM9o5KtvvnmqM+3LUCqVrNuwgfadO9NZp6OxXk+8JBH18CEXL17M9D27du2iWrVqL0y62rRpg16vZ/bs2TkS65suR7fahoWFERkZSbNmzdIfc3FxoWbNmhw7doyePXtmeI9er3+qT8R/t1AJeVvNmjX5559/RBOmfCYkJASLxfLc3QfW8vHxwU6t5pTZTAulkmsWC63S9CQpXBhVYV6Ol/vOaW5aXz6otIq/Ipax//giDh8+jLe3N4ULF8bJyQmTyUTU/fuE375Nil5Pc6WSn+3tKfmMm7hMJmOWVssfaWkY7Oyom5TECJWK99XqDNtUzZLETrOZWUYDu01mPqnmx7vlvTMc09NOxfDKvnQq7sHYg7c4mmxhgl7PdI0GuRWjH0mSxE2TiVpW7ux5kYKFC3P63r1Mn4uXJKbq9XxvNPLJJ588VVcmJ2i1WtasXUvn339n7uzZ/Hj0KCqlklGjRrF169anRjeWLl3K6dOnrfpy/NZbb4nPuhyUo8lHZGQkAN7eT//j8Pb2Tn/uv7755hu++OKLnAxDeMXKlSvHvn37mD59Ojt27LB1OEIOeLLI0sfH56WPJZfL8S5QgMP379M1LY2NJhNedgGMqDAfN63vSx//VVDIlTQNeJf6Bd8h5MEu1t/4itTUy6SmpuIvk1EO6CWX08PB4ZlJx7/ZyWRUkiQOJiVRxsOOBYl6pqek0EypoLxMjp1MRrwksd1i5pbZQjl3O+ZV9aVV0PN3hBR0VLOiTXGWXoxmSnA4cUgs0mhfmIA82XX0rKkJeDT6kpCQwN27d0lNTUWhUODl5YWvr2+GxamOjo6ckSTOmM34yGSYebTwc6nJxEqzGaNMxrRp0/jkk09e+LvKDrlcTs+ePenZsycXLlzg22+/5ffff6dkyZIMGDAADw8Ptm3bxu7duxk0aBAdOnSw6rjlypXjzz//5LfffmPDhg25EvubwuZFxsaPH8/HH3+c/nNiYmKWmjQJecPmzZvZuXMn06ZNE/vh8wHT4wV7ObWbSVIo2Gk2owSq+3ahY9ExaJWOmb72fvJ1jt5bQ3jqBRSoKOPWkJq+nXFSe+RILC9DrdBSw7cj4UkXOBOzgU5yOeuysThzgcHAQYuFYZV8GFPdD71ZYktoLBuuPmRzihGd2YKzWkFVLyd+LFuASl72WVqQOaBcAdy1Sj7cH4YDema/IMYnReGNmazTSE1N5fjx4wQHBxMTE5PheaVSScWKFalXr176SJnJZEIvk1H1P913C/n4MGH4cN57770cSWytUa5cOVasWMH//vc/ZsyYwcyZM0lLS6Ny5cosX76c3r17Z6na7KpVq/jzzz9ZuXIl77zzTi5Gnr/laPLx5I8pKioKX9///0YTFRVFpUqVMn2PRqNB8xLFdoS84ccff+T27dt06dLF1qEIOcDT0xN49GXA2loPz2IymYiJicHLy4uHDx9yLmY3/zzci5vWl0IO5Sjv2YRS7nWRyxScuL+B369NxsurAO26tCUpMYlNm3/l0P3fGFJ2PgWdSuXA1b28Qk5lOH5vNRWzUan0gtnMcL2e3qU9GVP90a5BrVJGt5KedCvpmWMxdizmTrLBzMQjd2isUNDlOX1nCshkOMvlREZGUqFChfTH//nnH37//XdSU1OpXLkyHTp0wN/fP3266f79+4SGhnL8+HFOnz5NrVq16NixI5GRkdSvX5+vvvqKyMhIzp49S2pqKh4eHri5uREaGoq3t3e2S8xnR7ly5ViyZAlLlix5qeP89ttv6HQ6mjZtmkORvZlyNPkICgrCx8eHffv2pScbiYmJnDhxgqFDh+bkqYQ8Ri6Xs3HjRiwWC4ced9wUXj8mk4mtW7eyePFiAO7cuZPt5MNisXDs2DG2b99OSkoKrq6u1K5dGzc3NyRJIjo6mpthRzj+zzrc7fxoULAvm0OnMWjwIH7++ef0Jm0PHjygdcvWLL48ignVtqGQW9c9Njf5O5VBgiw30jNJEv31eoJcNHxa2z/Xb75vl/bkUHgCQ8MTaaBQ4PWcdSjV5HJu3rgBLVoAj7Zab9++nbJly9KtW7cMfwdKpZKgoCCCgoJo0qQJJ06cYOPGjdy8eZPU1FTq1q3L5s2bWTR/PjFxcWjlcuwVChJMJsySRLlSpRg2ahS9e/d+7nRPXqPVatmyZQsmk4kjR45Qr17eXTCdl2U5+UhOTubGjRvpP4eFhRESEoK7uzsBAQF8+OGHfPXVVxQvXpygoCAmTZqEn59fhkZAQv7Url07du7cydWrVylevLitwxGyIC4ujjZt2nD8+HEqV66Mo6MjISEhT30TtlZqaipLly7l2rVr1KhRg6ZNm2ZYCwaP1hHcvn2bXbt2s/Hyt3gX8H4q8QAoUKAAi5cuplKlSvwTc4BKBVq81HXmBG/7osh5tHgyK34wGDhrNrOhcXG0ytwv0CeTyfiqfmFa/H6RD/R6Vj1nK+k7SiXvXbtGTEwMV65cYfv27bRu3ZoWLVq8MEmSy+XUrl2bYsWKMXv2bFJSUlg4fz4OcjkDZDLe/9daGIsksd9sZk5oKCOGD2fqlCls3737pbf4vmp16tThzJkzREZGpo8UCtbL8l//qVOnqPyvErQff/wxlStX5rPPPgNg7NixjBw5ksGDB6d3Vty5c6doSfyGmDZtGiqViiNHjtg6FCGLBgwYwLVr1zh8+DBnzpxh8uTJnD9/PssFtnQ6HXPnziUiIoL333+ft99+O9PEAx7dHAMDAxk8eBAeHh50eqtTpm3pK1asSGBAEHeSzmfr2nKaQq5ErXRiq9mMte2x9JLEDJORt8t4UalAxn4sucXLXsWYmgVZYzIR9pyqqj2VShzkctatW8emTZuoV68eLVu2zNLojJeXFzVr1kSSJPopFNzTavlRq31qEa5cJqOZUskGrZYb9vZ4xsZSv04dzp0791LX+ap98803KBQKgoODbR3Ka0k0lhNynMViEWXXXzM3btygePHiLF68OL1jcUJCAqVLl8bFxYUhQ4ZYfRNauXIl58+fZ+TIkVY3ZYNH64bq1avHihUrMjxnsVjw8falon0H2hb50Opj5qZZZ/oSlniGE/b21HhB916AVUYj7+h07O1elmKur/bLWJrJQq3fzjFEpuS7Z6yxW2U00lunQ+JRcbhx48ZlaCb4IlevXuXXefMYpVTyg5XVVRMlicYGA1Fubpy7eBEPj5xdWCxJEkeOHHnUy+XhQywWC+7u7rRo0YIWLVq81GeV+Kx7mmgsJ9iUXC5nzJgxBAUFZeg7IeRNTxqo/bsWj4uLC4sXL+bKlSts2bLFqm/4V65c4eTJk3Tu3DlLiQdAqVKl+PPPP4mNjc3w3I4dO4iOeUBpj7yzlshd64e9Ws1MK8ukzzEaqePr+MoTDwA7pZyupTxZZDJmaPp2zmzmPZ2Od3S69OnxZs2aZTnxANizYwc1FQpmZKGsu7NMxmaVipjoaBYtWpTlcz7LkxG4CmXK0KBBA9bMmsWVVau4vno1G3/5hdatW1OiSBGmT59OQkJCts4hl8sZOHCgqP2RDSL5EHKFVqvl1q1bzJs3z9ahCFnw32SxVatW/Pjjj+zfv5+VK1eS+p+tk/+1f/9+ChcuTI0aNbJ87jp16iCTyWjbti1XrlxJj2fHjh307zuAom5VCXKu/IKjvDoqhQZPb19WGY38+oJGaomSxFGzmU7Fbbdd+K3iHjy0SIzU6fjRYGCyXk9dvZ5KqanscHPjhx9+oH6DBqjVaqpUqZLl49+7d48bt27xkVJpVWGzfysol9NDoWDe7NmYs1hyPjMxMTE0bdSIEcOHUzw0lD12dtxWqwlWqzmq0RCqVhNsb0/te/eYOG4cdWrU4Pbt29k+38WLF9m6detLx/0mEcmHkCu++OIL5s2bx/vvv2/rUAQrNG7cGJlMxqpVqzI8N2rUKPz9/Tl37hzTpk1j//79mfa3iIqK4tq1a9SvXz9buzhcXFwYPHgwV65coXTp0hQtWpRCBf1p06YNLpI/A8rMfKVbM1/EZDFQsGBBRgwfzlC9nukGA5ZnjA49KaFe8RWu9fivku52KGXwm1zOOKORb4xGThiNOGq1eHh4IJPJOH78OAULFsxW+YOjR49SQKGgUxbLuj8xXKUiLDycnTt3Zuv9TyQmJtKsUSOunz5NsJ0dG7Ramv0nIZLJZNRWKPhNq+W8nR1pYWE0qFOH+/fvZ/l88+fPZ8GCBbRr1+6l4n7T2LzImJA/yeVyhgwZwsWLF9m4cSMTJ060dUjCcwQFBdG1a1fGjBlDYGAgzZo1QyaTkZSUxLhx44iIiGDt2rVs2bKFtWvXsnnzZry9vfHw8EAul6dXvgQoU6ZMtuMoXLgwn376KXv37mXnzp1U825Pl0rfUMSlSp5KPACMFgMu9nbMnDULJ2dnxnzzDb9KEkNlMvqrVLg/jleSJNabTGgVMoraYMoFHu0wWXA+CgUy9AYDjdVqmvFoyiPVYuH0jRuMeVzs0c3TE71en+UE5O6tW7STy1Fl8/9Tdbkcb5WKU6dO0bZt22wdA+DdAQO4dfUqR9RqylmxFqekXM4htZpa0dF07tCB4L//ztLfmlKp5L333uPEiRMcO3aMDz/8MNuxv0nEyIeQq/r168enn37K+fN5Y5eC8GwLFy6kUqVKtGjRgrJly9K8eXMKFizI/Pnz+fXXX+nWrRvLly8nIiKCpUuX0r17d4oUKULhwoVp1qwZTZo0wcPD46WbhCmVSpo0aYIMGcVcq1PUtWqeSzwAEk2RePt4I5fLmTp1KkePHqVGly78z2zGJyUFf52O4no9Xno9s41Ggly1KOWv/jqMFokP94fx/d93GahUctHenv0aDRM0Gkao1YzVaFir1RJub89nKhUpMTHMnjmTpKSkLJ0nLTUV95eIUyaT4S6XEx8fn+1jhIaGsm7DBmYoFE8lHsmSxEKDgU90Oqbo9Vz5z9ROIbmcRUolx0+d4ujRo9k69zvvvMPo0aNFh28rieRDyFV//PEHJUqUEAtPXwPOzs7s37+fnTt3phcD++ijjwgLC2PQoEHpr/Py8qJfv37MmjWLLVu2pBclK168eI51J1Wr1SiVKnTmlBw5Xk4zW0yEJ1zm9OnTTJ06lXv37lGnTh2++vprmrdogQmIMBq5YTDgVLAgVapUwUWb9QWcL0uSJCYdvs320Dh+12qZo9VS5hmjAT5yOZM0Go7a2aGLimLRr79ieMFaln9TqlToXjJeHbxUWYZ58+bhplTy9r+2a28yGimYlsYQg4HNBQvyg1pN6dRU+ul0GP41TdZcoaC4Ws2cX37J1rlXr15NiRIlnmqUKjybmHYRclVQUBBXr14FIDY2Fnf3l/luJOQ2uVxOy5YtadmyZZbfa2dnl36zCg0N5ejRo0RFRaFSqShfvjy1atXCwcG6NQ9msxmT2YhKnjdbL0Sl3sRkMaDT6ZgyZQqfffYZXbp04eDBg9jZ2TF79mxq1qzJtWvXmDFjBmfPnqWGT+a9bHLT/jsJrLn6kKVaLV2fU1793yopFOzQaKh39y579+6lTZs2Vr3PycWFS5nsVLJWgiRxz2hMb9MhSRInTpzg9OnTaDQa2rRpg5+fX/pzW7du5ZdffuHs2bPY2dnRoUMHflu6lHdlsvTKs6fMZroZDLTv0IEfZ84kICAAvV7PsmXLGDF8OC4GA7MeTy/JZTKGymSMW7eOWT//nOXCYdWrV+fy5cuA+Kyzhkg+hFeiTp06XLhwgfj4eLEvPp8qW7Ys0dHRbN26lb1791KsWDE6d+5MVFQUGzdu5MiRIwwbNgwvL68XHuv+/ftIkoSPfbFXEHnWRSRdAmDo0KHpN8n169fj4eHB8ePH04uqVa1alc6dO+Pv70+y4dWP4vx2MZpqCgX9rEw8nqiqUPCuUsmKo0dp0aJFhq61malSvTqrrl/nhsVCsWz8G19mNGKWyejevTs3btygV69enDp1CqVSidlsRqFQ8O677zJz5kw+/fRTpk+fTs2aNRk2bBixsbH89ttvxCcl0fhfVVy/NxoJCgxkze+/pxev02g0DB48mIcPHzL500+ZpFKll51vrFBg1OsJCwvLdtXS0qVLEx8fn63Fq28ScRcQXom33nqLpKQk9uzZY+tQhFxSo0YNLBYLe/fu5euvv+batWvMmjWLtWvXEhoaiqenJ8uXL7eqXsj169dRyJUUdMwbjeT+Kzz5EgU8vdFqtdjZ2VGnTh3kcjkffPBBhmquGo2G1q1bExqve+ZumNxwO1HPwYhEhmUx8XhiqEpFQkqK1eu1KlWqhKNWy7wsTNU8IUkScySJzp07o1KpaNy4MYmJiWzfvh29Xk9cXBzfffcdS5YsoV27dkyfPp2ZM2dy/PhxPv/8c2bOnMmuXbsA+HeXmK0WC/3efTfTqrnvvfceBouFPf9a/+H8eMQku3U/AFq0aEFUVJRY5/YCIvkQXokxY8Zw+/btbA3nC6+HsmXL4uLiQqVKlRg/fvxTi0QLFSrEL7/8Qnh4OGFhYc89jsViIfjIMSp6NkejzJk1JDnJIpm58HAfRYsXSX9Mp9NhNBqf2QenRYsWpJks3Ep4desBtobG4iiT0SObW1/LKhTUUSo5c/q0Va9Xq9XUqFOHuWYzIVms1THLaOSqwcCw4cNZsGABMTEx7Nu3j9atWyOXy3FxceHjjz/mp59+Yu/evZQtW5aRI0c+dYwn0zVPxpckScJgsTyz0uaTZnb/TpWSHyeHjo7ZnyL78ccfuXPnTrZ6Ir1JRPIhvDIBAQFMnjyZXr162ToUIRc8STY6d+6c6e6Upk2bYmdnx507d557nMOHDxP98AEKmYokQ0yuxPoyLj08RLwuijp16qQ/Zmdnh1qtJiQk5Lnv/Sfm+UXaclJ0qpEAhQz7l9gpVFomIzkLowBNmjRBplLRPC2N81YmIIuNRj7S6/nggw+oUKECv//++zMr5Pbv3x87Ozu8vLwy/I15eXlhr9Vy8vF5ZTIZ1VUqNm3YkOl5N23aBDza4vvESbMZmUxGQECAVbFnRi6XU6hQIT744ANR5+g5RPIhvFK7du1izZo1nDx50tahCLnA0dGRxMTETJ9LS0vDZDKheE7thYiICLZt2UIFuZwrD7bx06lu3E++nlvhZsvRe6sJ8C+Mv79/+mMqlYoqVarw888/Z5jr1+l0zJo1CycHe7bcjH9lcerNEmpebmuvBkhKTLRqt9qDBw9YsGABerMZubs7dXU6vtDrufeM954ym+mblsa7Oh1Ozs7MnDkTd3d3Ll68iK+vb6bvsbOzw9XVNdPtuFqtlh49ezLHaMT0eARjlFzO3gMHmD179lPTfdevX2fMRx/RRK2m7OO/xydTP61btkxf2Poydu3axfz581840vemEsmH8EqtX7+eQYMGpXdFFvKX9u3bP7MM+/LlyzGZTM8sQnbz5k3m/fIL5YCj9vZcttdS0BzP3JB+RKc+f7TkVYlOvcOV2GDq1a+b4bmWLVtiMBioXr16+nqE3377jerVq3PmzBns1BoO3Iqj2ILTVF0WQp+t19gZFofJkjvrQJw1CmJfco3JQ0kiLjGRH3/8kdOnT2fYRipJEvfu3WP9+vV8//33pKSkMGLECEaPHUvF2rX5VpIonJpKl7Q0vtTr+cFg4DO9nmppaVRPTWW1yYSTkxMVKlSgZ8+eDBgwAB8fH3bu3Jnp2qDLly9z//59rl69SkxMxlExbx8foiSJzSYTAD2USj5UqRg5ciTlSpVi5MiRdOrQgdKlSmEXE8Pyf60FOWmxcMZgYNiIES/1O3ti/fr1fPDBBxQuXDhHjpffiK62gk1ERkZy8eJFmjZtautQhBx09epVqlSpQu3atZkzZw4lSpTAYDCwZs0ahgwZQrly5ejdu/dT70lKSmLfvn0cOniQWgoFW7Va3B4PqcdKErVS9SRr/PikxmbkshdXrMxN669P5UzsJiZ/8XmmjddiY2PZsmUL58+fT+9RopDJUMlkdFcoKC+XYwfESxJbLWaOm8z42CkZVsWXPmUyTiW8jJ1hcby/5yZn7e2pZEWlz/9KlSQK6nQ07diRvXv3kpCQgEwmw9vbG0dHR4xGI5GRkej1ehwdHalTpw5NmzZ9qjJqWloaJ0+e5NTx48THx2MwGlHK5aTp9Ti5utKjRw9KlSr11HVfuXKFefPmMWvWrKfWdaSlpdGxY0fOnj0LPFpHNGvWLOrVq0dKSgqLFy9mzJgxeLi6ooyL47hajZ9cjiRJHDCbmWcycUUux1mS6CmT0Vel+v8FppJEfb0eXaFCXL5+/bmjc1kVFhZGZGQktWvXzrFj5lVZuX+L5EOwCV9fXxISEoiPj89W90wh7zpw4ADdu3cnJiaGwMBAHj58SFJSEu7u7tSrVw8vLy8sFgvR0dHcuX2bSxcvopQkvlCp+FitRvmfG/AJs5laqam8V/4Xyno0tNFVwa2Ec8wK6UPbtm1o1qzZc1979+5dfpk1C7XBwKdqNf1VKjwySSzOms3MNBhYZjLRu7QnU+oFZLkp27OYLBJ1V56no0nGr9ko3LXYaORdnY4BAwYwefJkfvzxR+bPn09qaipyuRx3d3fKlStHyZIlKV68uFXbcU+cOMHq1aupXbt2+s6W/5IkiU2bNvHXX39Rp04dOnbsSHx8PEuWLCE2NpYdO3bg5eVFt27duHr1Ks7OzqSlpWE2mxkwYAATJ06kQZ06OD58yA61msAXbPuNtljoYDRyWa0m+MSJl2oPkBlnZ2eUSiUxMTH5vsyASD6EPG/hwoWMHTuWY8eOUbJkSVuHI+QwnU7HunXr0kcA9u/fz8Xz55FJUnpVSQe5nCpyOW89rkPh/oybriRJVE3To3epwaAKv77Ky0hnNOuZfqYLWneJDz4c9dxvxqmpqfz8448oHz5kn50dxa244SwyGBik1zOkojf/q5lxoWV2zTx9j3mn7xPm4IB3Fm58Rkmimk5Hir8/D+PiKFCgAEeOHGHKlCls2LCBMWPGZHmUJioqiunTp1O1alV69Ojx3PdLksT58+c5evQo4eHhKJVKHBwciI6O5vTp01SsWBGLxcL+/fsJCQlBq9XSoUOH9IWi165do3Xz5sTdu8d7Mhnvq9UU+c/137NYWGg0MleSsDg7s3XHDqpXr56la7LGZ599xvz58zl//jwFChTI8ePnJSL5EF4rFosl338jeJNZLBZ8vLzolZTEdI2GeElCLpPhBlZ/y19sNPKeTs+kWrtx02a+GDE3bQ6dwaF7vzFmzCfpWzqf5ffff+fi8eOcsLOjZBb+rn8wGBit17O+Y0mqeudMNdTfr0Qz/tAdKiqV/KXV4mTF79siSbyr17NSkvjr4EG8vb2pVasWnTt3Ri6Xs337dj5+3IQuK37++WcSExMZM2ZMtkY7TSYTP/74I97e3pw6deqFyU90dDTffvstixcsICEpiQYqFQGShAyIBPabzWg0Gnr368f48eNfydqM/P5Zl5X7d/79LQivhZo1az61ZVHIfxISEoiOjaW+QoFKJsNLLsdDJsvS9EJ9hQIJiYdp4bkYaeZuJpzhr4hltG7d6oWJh06n4/TJk3yoVGYp8QD4UKWiiELOiovRLxNuuiMRiUw8GkEBHx8uyWQ01OsJe8GulXhJoqdOx1KjkZatWlGkSBGKFi3KiBEjWLlyJc7Ozs/czfQ84eHhhIaG0r59+2xPsyqVSjp06MCZM2esav7m5eXFjBkzuBsZyaLFi3Ft04awatW4UaUKqhYt+GHmTO5GRjJv3rxcTzwsFgulSpWiXbt2uXqe14lIPgSbcnJy4sSJE9y+fdvWoQi55El3VGu+dT/Lk6qVOvOrq5MBEJkSysJ/hqNVa6xKkk+ePInJaGRQNqqKymUyhipVbLsZx8M0Y3bCTbfjZhz9d95AqVLjHxCARSbjH6ORYikptE9LY5fJlL4d1SJJnDWbGazT4ZeSwkZJokyZMuzfv5/SpUuzatUq6tatS0pKCoGBgcTHx2e5AujJkydxcXGhbNmyL3VdxYsXx9vbm6VLl1r9Hnt7ewYMGMDGjRs5fOwYR0+cYOu2bYwcORIXF5eXisdacrkcOzs7du3ala3kLT8SvV0Em/r9998JCQkR29HysSfVIpNfYob3SXN3jVzLg9QwolNvY5HM2KtcKehYEq0y4zRFVMpNTkT+SbzuPo5qd6p5dyDAuZzV54xJu8P8cwPxtaQRaTazasUK3h006LnD/WdPnaKtUknBbA6tD1CpGK/XszMsnnfKvLgHzn8l6E1MORbB+msPqV2rFvv278fOzo7Y2FhGjRrFypUr2S1JbE1LA8BeLkdnsWAB3J2caFy/PjVr1sTFxYXk5GQ2bNjAO++8Q9u2bZHJZDRt2hSlUsm5c+do0KCB1XHdvn2b4sWLv/QuErlcTtGiRTl27NhLHccWNm7cyIMHD8RygsdE8iHYlLu7O02aNGH+/PmYzWaGDh1q65CEHObi4oKHqytHU1Loks0+I2uMj0YCFl0ahd709OiHDBn+zmWo49uDygXaoJJr2B42i713FuDh5kmFihW4evUgh8+soppPe3qW+BKF/PkfffeSrzH/3Lt4mZM5ZKfhuNlM50uXCA0NpVixZze7S0pIoPRLzOl7yGR4yuVEZ3HkQ2eysO1mHN+fjiQ6WUfPnj1ZtWpVeqLk7u7O8uXLCQkJQZIkWrRoQWRkJGlpaWg0Gtzc3ChRosRTyYGjoyN9+/bF19eXbdu2Ub58eUqUKMFbb73FoUOHqFOnjlU7XODR1vqKFStm6Zqexc/Pj+PHj6c3m3tdFC5cmMKFC/P9998TEBBAjx49bB2STYnkQ8gTxo0bR2pqKv369cPePu/18xCyT6FQMHDQIBb++CNfSVKWyn0nSRJj9Hp+NRpxdnKmdp3aFClSBG9vb5RKJYmJiYSHhxMSco61lz9nX/hCyns2Z/+dRXz99deMHj0ajUaD2Wxm+fLlDHpvEO6agrQOenYhqXPRe/jjyqcUw8BuOzUF5HI6yWSUUCo5evjwc5MPk8nEy24cV0gSu27FU8vXifJe9jioMr/BGswWrsamsfVmHKsvx5BoMFOmdGkiL19mzpw5GUZo5HI5ffv2ZdKkSQwePJjAwECr4mnevDmxsbGcPXuWmzdvMnHiRP7880/27NlD69atrTqGwWB4qv5HVplMJkJCQjh16hQPHz5EkiQ2b95Mx44dX6sFnCaTic8++wylUkm3bt1eq9hzmkg+hDzh119/ZfHixVaVcRZeP0OGDGH69OmsMZkYaOXox32LhaZ6PTdlMrp06UKdOnUyfNN1dHTEz8+PmjVrEhkZyepVazh0bxlvdXqLCRMmpL9OoVAwYMAALly4wK+/LKJpwHuoFU/Xvkg2xLLh+lecjd5NJ6WKpVoNLo9v4DKZjBEKBR+dP09CQkKmawXS0tIwGgw8fInpJUmSSJTJiIo30HPrNWRAcRcNJTzscVI/unadycKNuDSuxukwWCRc5TJ6yBXsUyp5+OABwDNv9BqNBovFgiRJWdoq27FjR65evcpHH31EiRIlUCuV7N69Gz8/vxeOaEiShEqlIiQkhMjISGQyGY6OjpQvX/6ZZdT/TafTsWDBAkJDQ2nYsCENGzYkODiYzp0706tXL3777bfXZgREqVTy7bffcuTIkUeJ6htc40hstRXylNTUVBITE1+4q0B4/bzVoQOHd+wgWKOhxAu+8SVLEjV0OiLt7Hh/xIgMbeqfJTY2lilTprB+/Xo6d+6c4fmzZ89SpUoVRlZeThGXKumPn4vew/qrk1GZk/lFo6KHUpnh5hxtsVAgJYV+/fo91R7AbDbzzz//sGnTJpKSkvABbmm1KLKxwHa/yUTTx+sxlmu1GCSJ0xYLlyULyYAFsAeKIaOqQkFVhYJKcjl2Mhm3LBaq6HTEmc0sXbqUfv36ZTh+nTp1ePjwIcOGDctSXAkJCcz95RciHzzATamkL3BMkjhlsdCufXsaNWqU4Vu8Xq/n5MmTBB86xL0HD/CQyfBRKjED98xmEi0WigUFUad+fSpWrPjMBGLNmjVcuHCBXbt2pS/6lSSJ33//nbfffptp06YxevToLF1PXhAfH4/FYsHd3d3WoeSYrNy/xciHkGdYLBZ8fHwICAjgwoULtg5HyGGLli6lbs2aNLl9mx0qFeWf8211nF5PKPDx8OFWJx5A+g3wWTcyxb+aiJksBs5H7+Xo3RXcTDxPJ6WKefbaZxbj8pDJkAOXLl1CJpORkpJCREQEV69eJTY2lhYtWjBq1CjatWvHVpOJjtlY3/KLyYSDWk0zi4U+j9//rpXvDZTLeU8uZ5ZMxieffELZsmWpVq0a8Gi4f+rUqRw7doz33nsvSzFFR0czb/ZsVMnJLNZq6alUYieTYZIkxuv1zNi8mZDTp2nYpAkVK1ZEqVQSHx/PgrlziYyKoqNSyXA7OxorFOkJnUGS2GgyMTs8nOXLl1OudGn69O+fYcQmJSWF06dPM2XKlKd2G8lkMnr06MH27dv5+eef+fDDD1+b0Q949CXL29ubmjVrcujQIVuHYxNi5EPIUzp27MiePXt48OBB+i4JIf+4d+8ebVu14srFi7yj+L/27jsqiutt4Ph3l92lNykCCojYe4kiaGzYE2Ms0Vhii10TozHGEqNp1sSfmlhiorFL1ERTbDEWbNgrVsRCFRSkCGyf9w8jbwgooMBS7uccznF32jOz486zM/fex4wxSiWN/nPR2K3X0yUjg+7du9OqVf6GUzcajcydO5e2bduyefPmbNOnTZvGoq+X4Ff+Lc7d306KPpnWZkomqBR0/dfFMScGSULx+HHma5lMhrm5Of369WPcuHGZd0NeadgQy8uXCba0zNdYJreMRmqkp2OQJP6ytKR9Hhtz/lu40UjVtDS8vL25d+8ezZs3x8vLi0OHDhEbG0uXLl3o0KFDnteXmprKkoULcUxNZb+5ORVzSMyOGwxM12o5pNejNDOjvKsrCQ8fUs5gYI+FBXVySQp26/W8pdHg7u3NqLFjUSgUqNVqYmJiuHXrFrt27eL69es5joT8tN1HdHR0gVSiLUoBAQFcu3aNBw8e5LnhbnEn7nwIJdbmzZuRy+VYvEAtCqH48/Dw4PCxYyxZsoTvly5lVWws9VUqvI1GzIA4uZzjWi02Nja0aNEi3+uXy+W8+uqrBAUF0aJFC0aNGoWZmRmSJLF9+3YWLFiAXq/naNRaXpHLmGthQas83qGI+Od32ubNm+nUqRNRUVG0adOGAwcOUK9ePZKSkrh06RKRMTHEGwx8pNHwtbl5ntpWJEgSXbVa7G1tMU9PJ/AFf8X7yuW0VCqxq1uX2bNn87///Y8tW7bQuHFj+vfvT8WK+Ru6fdeuXRhTUthrYZFj4gEQYGbGQUtLrhkM7NXrmRMbi51MxnErK7zy0KCys0LBXqDNnTssX7YMrU5HVFRUlqq2j/+V9P3b0/dL4sV7z549WFlZlcjYC0LZbWorFEtWVlbI5XICAwOZPn26qcMRCoGtrS3Tp0/ndkQEO3bsoEHfvhg6dCAjMBCvHj2wtramWbNmL3wbvUWLFrRo0YJx48bh7e1Njx49qF69Oj179sTWaKSNXE5juYzLRiOBajVvZWRw9J8S7M9ikCTmaTRYqFTcuXOHNWvWcPv2bbZv307Tpk2ZNGkSbdu2ZdKkSbRu3ZpPPvmEhTodIzSaXMc3uWowEKDRkGBrS+t27fA2M3up4nJeksSjhw/p168fH330EQaDge7du+c78UhPT+fc6dOMNzPLtTgbQE0zMxqYmREPrLewyFPi8ZQWsDUzI/z2bWxtbXn77bf56KOP+PTTT7GxsWH16tXZlpEkiVWrVmUmlyWNnZ0d6enp+Pn58d1335k6nCInHrsIxZKrqyuPHj0iLS2tTLcIL2vu3LlD5cqVGT58+EuPhhkREcHSpUsxarU0kMn4RKWi678akiZLEut1OpbpdFw3Gvna3JwJSmWWOxUJksRSrZblBgP3DQYALC0tMRgMaLVa4EmJgKFDh9K6dWtcXV05c+YMI0eO5Pbt28gAK5mMIQoFo5RKasnlyGQytJLEbr2eJTodBwwGnOztOXz8OAsWLODG5s0cf4lzflBGBrcaNeLYyZMcO3aMFi1aMGnSpMzkw2g0Eh8fT2RkJDExMU966eh0GI1GFAoFSqWScuXK8ejRI04cO0aktTXueUwkemdkEGo0csXKKs+9ab7Vanlfo6GKjw+9+/bNVnxt37597Ny5k/nz5zN27FisrKxITExk5syZmRft2NjYEtlIXa/X4+DgADy59pX0rrfisYtQ4m3cuJGYmBiReJQx4eHhAPlqZPosXl5eVK9enfJXrvBXDmPH2MtkjFOpGKNUMv2fom4S8OE/59x2nY6ROh0pMhmN/fzo2bAhFStWxNLSEkmSSEpK4s6dO5w6dYqRI0cSEBCAh4cHv/76KyqVioEDB1KpUiVCQkJYd+wY36WnIwfM5XIy/ulSXqliReo7OREaGsqECROoXr06sZKU766w/3YfcHR2BqBBgwbI5XIuX77M2bNnuXvnHtHR0Wh1GgCcrCpgo3REITNHLlOil7RojSmcTT+PRv+k141/hpamconOCkVmY9OcxBmNbNfr+V8eHzUBrNPpeF+joU2bNnTt2jXHi29gYCBpaWl8/PHHfPHFF3h6ehIeHo5Op8PKygpPT88COV9MQaFQsGbNGpRKZYlPPPJLJB9CsdS+fXsA9u7di7u7O/Xq1TNxREJR0P/z+OPfj1z0ej1arRYLC4t8f0HL5XIMuVwI5TIZc8zNkQGTNBoayeWcNhj4WKulbu3avNenT7ZfcTKZDEdHRxwdHWnUqBHh4eH89NNPnDhxAjs7O8aNG4fzPwnAa6+9RseOHbl+/TrJycnodDosLS3x8PDA09MTeFIC/ocffiAmJoa7Wi0TJIlm/3Sl9c1HEb4Yo5EDBgMLO3VCq9Xyxx9/YGdrz969e7E1L0cVu6bU9exORdvaVLSpgaUy51+nRsnIg/S7RD2+SmTqVc6mXGBryiUmyswYqpAzWqWiyn8+ixtGI3rIc0PZu0YjY7RamjZpwhtvvPHMhEUul/Pmm2/y6quvcubMGR4/fkzVqlXx8PDg+++/x9fX94UTteKgV69ewJNSE82aNcPLy8vEERUNkXwIxVZ6ejpdunTBx8eHW7dumTocoQg8vWAnJyeTnp7Ovn37uHTpEkajEXt7e5o1a0ZgYGCe74ilJiWRvY9Ezr5Uqdit1zNRo+GC0UiHDh3o3Llzni5slStXxmg0IpPJGDFiROZ+PKVQKKhT59l1ZapVq8bbb7/N+vXrkcvlLJMkFqvVAFQyM2OMQsFIpRK7XGL5UadDZW7Ow4cPqVjBiwcP46ji+ArdavWlrnNbzOR5a1wrl8kpb12Z8taVaVz+SSXWhxkRHI/ZwsqYbSxMe0wHMyXzzJU0+CdRfFpqLq+l2iZpNFjY2tKjZ888HWMnJyc6duyY5b1OnTqxd+9ebt++TeXKlfO45eInJiaGPn360LhxY86cOWPqcIpE2brPI5QoVlZWvPPOO9jb24uRT8uIOnXqoFAoOH/+PEuWLOHx48csWLCALVu20L9/f4KDg/n+++8z21s8j9FoJDo6mkZ5vFsil8kYq1RywWikXr16eU48AKKiokhPT6djx44v3OWzUaNG1KlTBwcHB+bNn8+XX37JiBEjcGnYkGk6HbUzMtj3nIaxD41GlhuNWFha8dWXs6mmasPkJjsYW38NDVw75jnxeBZnSy/e8J3EjIBD9K3xFaHmFWmSnsFMjQatJPH0wVZe6g5HGY3s0Otp0779S/Vsa926NRYWFnz//fcvvI7iwMPDg9dee61MtXMUyYdQrK1Zs4azZ88CiASkDLCwsMDf359Tp07xyiuvcOnSJSZOnMhbb73F0qVLOXToEBERERw5ciTXdV27dg21TkfbfHRl7KtUYsOTX9n5uZV/7tw5FApFviq9/pdMJsuso3Lt2jVsbGyoVasW/QcMYOr06Vj7+NAxI4Mfcki8UiSJ1zUaHur1KHUOfNBwM72qfYK79bPr0LwolZkFTd26MeGVX2nrPZKvtHpeSf//Xj3n/2mY+zzb9XpkcnnmIGgvHItKRcOGDXMc06Wk+fPPPzlw4EDmo8fSTiQfQrGXmJiIo6MjY8eONXUoQhFo06YNGRkZzJ49G0tLyyzT/Pz8ePvttzl58uRz1yFJEgcOHMBKLif3S+H/s5bJaGJmxqNHj/IV861bt6hfv/5Lj0/j7e2Nq6srV69ezfK+k5MTI8eMoXmLFozUaPhN9/9Vb08bDASkp3NGr6exW3cmNfqFirY1XyqOvFDIlXT2GccHjX8m0cKLXmoNlWUylutyr8h7xmCggrt7gYzn4+PjQ2RkJA8fPnzpdZlaWFgYdnZ2fPnll6YOpdCJ5EMo9sqVK4etrS0bNmwQdz/KgKeNMP89nPa/NW/enAcPHjx3bIdTp04RHh6OtaMjAenpzNFo8jwWhINMhvqf+ip5odfriYmJyXOV2Nx4e3sTGRmZ7X25XE6PHj2oXbs2Q7RaFmu1NFGraZqeTpgkY0Cthbxd4wsUL/l4Jb8q2tbkg1e20aLiQG5LEvsNBq7ncvfjJuCSh6JyefG0i21paBfm6+uLSqUqE+N+iORDKBH27dvHnTt3ylx3tLLIxcUF+P9ut/9169YtbGxsnvlY5Pbt2/zyyy80adKEKdOm0a5DB6ZptXyZh3YiAKmAeT5+kaelpWEwGAqsQJiTkxPJyck5TpPL5fTu04d0pZIPNBpCkeFgWZ6Pm+6igWveh00vaFGpV0jRPcDWwgGlUkmb9HQu/ycBiTcaWaLV0j8jg8uSxNWrV/nmm28ICgri5MmTaDSaF9r2055RpeFxhVwu59ChQ6UikcqN+CYXSoSaNWtiZ2dH//79y2whprKiY8eOODk5MXfu3Gx3K+Li4li9ejWNGjXKtpwkSYSEhLBixQq8vLx46623MDMzo0uXLnTq1IlP/6k/8jwaSeKswUBqauozh/TOabsF7XnrtLOzo3nz5piZmWFv7sGHDbdSzrJCgceQV0ejN7P4/ACSrW8y+v0RjBo1Cm25cjRSq/lDp+OB0chgtZqK6el8qNNxwsOD+n5+NG3aFHd3dyIjIwkKCuLTTz/ljz/+yFNj4n9LSUkByNbDqKRq0KABAN27d+fatWumDaYQia62QomRmJhIUFAQwcHBREVFmTocoZBYWFgwe/ZsRo4ciUajYcKECXh6enLw4EFmzJiBwWCgTZs2mfMbDAauXLlCcHAw4eHhNG3alF69emXpjtuhQwfCbtxgSEQEN83MUD7jrsk2vZ5HkkRqRARffvklb775Jn5+fs9tfGpjY4OZmRmJiYkFsv8JCQnY2z+/w6qfnx8HDhygXcWR2KhMV5I95vFNfr01mw8++IBvvvkm887kvHnzePPNN+mxfz/mGg0yc3O6dOlC06ZNsba2zraeR48ecfToUYKDg7l8+TJDhgzBPY+PZSIjI5HL5UyZMoVx48bRrl27At1HU4iMjGTHjh3cvHmTK1eumDqcQiGSD6HEcHNzY/r06WLU0zJgxIgRKBQKPv300yw9GeRyOTY2NgQFBaFQKEhJSSEmJga9Xk+lSpUYOXIkNWtmb2wpl8vp0asXCxYs4De9nl45FJOTJInv9HqqV6nCO4MH8/vvvxMUFER4eDh9+/Z95iM/uVyOo6MjwcHBhIWFYTQasbKyonr16pkl5vMjIiICX1/f587j6uqKhbkljzSx+Vp3QTse8zOuLuWZP39+luNjaWnJypUr8fHxwdrFhXHjxj23G6mjoyNdu3alSZMmrFu3jm+//ZZx48blqdvy+fPnqVSpErdv36Z9+/ZMnTqV2bNnF8j+mUrNmjV5//33qVKl4HsrFRci+RBKlM8//xyA0NBQqlWrJhKRUmzo0KEMHDiQ8ePHs3LlSkaMGMHjx4+JjIzkwYMHGI1GypcvT6NGjahatSoVKjz/0UOFChXw9fZmdXR0jsnHIp2OE3o9w1q3xsbGhn79+lG9enU2btyIUqmkd+/eWebXaDQcOXKEkCNHSEhOpppcjntSEnIgFlh/6hS//fILTQMCaNWqFba2trnuc0REBHFxcXTt2vW588lkMpydXXikNm3yEZNxnY5dO6DM4Xh6e3tTq1Yt7O3t8zx+hZubG+PGjWPp0qWsWrWKyZMnY25u/sz5w8PDiYqK4s8//6RLly4sXLiQSZMm0aJFC7p06fLC+1UcLF68GHjSjfvpMPmlSenaG6FMuHHjBnXr1mXIkCGmDkUoZAqFggcPHlCpUiWqVatGo0aN6NatG8OGDWPEiBH079+f1q1b55p4PFW1Zk1O/FM75d8W/VPbJTAwMMtIpI0bN6ZXr14cP36c0NDQzPeTk5P5bvFi/tq5k67p6ZyysuKGtTV7LC3ZZWnJeUtLrlpZMVin4+SBAyz6+mvu37+fa3x///03jo6O1KpVK9d55TIZEqbt/aWQmZOQkPPjJqPRSFJSUo6JyfNYWVkxePBgUlJS2Llz5zPn02q1bN26lSZNmtCpUydkMhkffvghr7zySqnpLXLgwAEaN27MlClTTB1KgRPJh1DiVK9eHV9f3ywXA6H0unTpUp6f/+emYsWKPDIYiJUkdJLEVp2OVhkZTNBoaBsYyGuvvZZtGX9/f2rVqsW2bdswGAykpaWx/Ntv0cfFcdrSkp8sLGjyr1o0T9U0M2OxhQVXLC1xS0tj6ZIlzx2L4ty5c1y6dIk33ngj11+5kiSR+OgRdiqX/B+EAlSnXCB79+zh7t272abt2rWL6Oho6tevn+/1uri40L59e44fP05aWlq26QaDgU2bNpGYmMiaNWuy1AJ6/fXXOXfuXL63WRy1bdsWV1dXTp06ZepQCpxIPoQS6erVq1y8eNHUYQiFSKPRcPjwYR49elQgg1EBmbfw31Gr8czIoLdaTbSnJ0OHDn1mVVWZTEaXLl1ISkoiNDSUoI0b0SYmcsjCgno5JB3/5SmXc8jcHBeNhp9++CHHsWrCwsLYvHkzDRo0yOzt8DxJSUk8Tkuhom3ud0gKUxO3N7A3L0+7wPYcPHgQSZLQ6XQEBQUxYMAAqlWrho+PT57Xp9VqOXv2LH///Tfm5uYYjUZOnz6dZZ6kpCRWrFhBaGgoP//8c7a7RImJiQV2vhQHkZGRHDp0yNRhFDjR5kMokVQqFdeuXaNDhw6sXLmSzp07mzokoYBIksQ333zD/PnzefDgAXK5HPU/RdZe1tP1RFauTHV3dwY1a5anRo0VK1bEy8uLEydOcO3aNdZYWFAtH8/gneVy1qpUvBoXx82bN6lRowbw5Bf8wYMH2b17N76+vvTr1y9Pw7qfOXMGpVyFr33jPMdQGCwVtoyq+wNrrk2gbdu2ONg5otFpyMhIp3bt2vTv3z/Pw9RfuHCBbdu28fjxYxwcHEhJSUEmk3Hy5Elat27No0ePCAkJ4ejRo6jVasaMGcObb76ZZR2pqals2rSJAQMGFMLemoZKpeLkyZN0796dP//8M8du5iWRSD6EEsvd3Z379+8zcuRIIiIiTB2OUECmT5/OnDlzGDVqFMOHD2fGjBlcv369QNYdHR2NtbU1Y8aMyXcZdh8fH06ePEk5MzP65LMHC0BzMzPqKBQcO3IEJycnrl69ytGjR3n48CFt2rShS5cueeoZo1arOXrkGI1cX8NKmdcasoXH2dKLDxtu41bSacKTzrD33jI6depEp06d8ryOmzdvsm7dOnr06MGcOXOoUqUKsbGxzJs3j8WLF/PJJ5/w+PFjbGxsGDZsGPHx8fzwww/UrVuXgQMHYmFhwcWLFxk3bhxarZb33nuvEPe46Lm5uXH//n0GDx7MpUuXTB1OgRDJh1BiOTg4sGbNmpcuTiUUH9HR0cyfP5/PP/+cGTNmANC+fXv27dtHWlpajmNE5Me1a9eoVKlSvhMPeNK9VadW865SicULLC+TyRhnZsboK1e4fOUKcrmc+vXr88477+Dl5ZXn9fz22+9kpGloX3NkvmMoLDKZjKqOTXGzrszee8uoWLFivpbft28fTZo0ISgoKLP9hru7O4sWLeLBgwfs3LmTjRs30rVrV2xtbVGr1SgUCkaOHMnEiROxs7MjNjaWChUqsGfPHipXrlwYu2ky3t7erFy5Ml8JXXEn2nwIJVr//v2pWrUqn332WZ5HpBSKr6CgIFQqFePHj8987+mjiNyKyeUmKiqKe/fu4efn90LL6/V6DMCrL3DX46kWZmZIPLlYv0jicejQIUJCjvNG5Uk4WebvAl8UzGRPerbo8lBc7qm0tDTCwsIYPXp0loajT40dO5bk5GR8fX0zuytbWFiwfv16bt68yaeffsrw4cP59ddfuXPnDv7+/gWzM8XMsGHDcHNzY8aMGaViKHlx50Mo8Q4ePMisWbM4f/48O3bsMHU4wkt48OABbm5uWcaFcHV15Z133mHz5s00atQIBweHPK0rLi6OQ4cOcfnyZbRaLQqFAltb2xwHIcuLp/VWch+t49ls/7ljMnnyZL7++mtWrFjB22+/nWtdGLVazY4dOzhx4gRtPd8lwKP3c+c3FUuFHTbmjsTGxtKwYcM8LfM0UXnW8OhPa/3k1OulatWqTJ48+QWjLXk2btzIl19+yYMHD1ixYoWpw3kp4s6HUOIFBgbSsmXLfP2CFIonHx8fIiIiiImJyfL+ggULsLW1Zd26dXn6VX3nzh3+97//cffuXd5//33mzZtHQEAAqampbN269YXqscTFxQFPCs+9qNR/tvvGG2/w0UcfcevWLebOns22bduIjIzE8K9ibJIk8eDBA/bs2cOcL77g9MmTmGFGzXKvvtBjo6Igk8nwsqnLrbCciwLmxNbWFjs7O/bu3Zvj9D179qBQKPI09klpN2jQIBo1alRgXc9NSSYVRlWkl5CSkoK9vT3Jycl5HhVPEJ5KT0/HysrK1GEILyg5ORkPDw969+7NqlWrsnR9nT17Np988glVqlRh4MCBzxwx1Gg08tVXX1GjRg327NmDjY1N5rSNGzcyYMAABg0alOdf5vDkzsOsWbOQG428B8x9zqibz/ODVstIrZbffvuNnj168BZQSSbjB6ORBwYDKoUCF0dHZHI5j5KSSNNosJTJeEehYKJSySiNjtOo+LDJDhwtiucF6FzcLtZfm8yUKVMyy93nZteuXQQHB7N3715atWqV+f7169dp1aoVbdq0ISgoqLBCLpGK43ddfq7f4s6HUGr8/vvv2Nra8vPPP5s6FOEF2dvbs3TpUtauXUurVq1Yu3YtO3bsYOjQoXz66ae0bNmShIQE5s2bR0hISI4VUK9du0ZCQgKLFy/OknjAkzZCLVq0ICQkJF9xnTx5Eq1WS9933mGV0YjmBX6zSZLEMkni9S5dWPXDD1STyVhjYcFXFhZEWVpyyNKSOWZm9EhKoltiIlMkiV2WlsRaW/O9hQXVzczYbmmO0qjmSPSmfG+/qNRzaY+9hQu//fZ7nu8wtW/fnkqVKtGmTRtef/11vvjiC/r160e9evVwcXHh22+/LeSoS5ZVq1Zha2tboit8izsfQqmRnp6Oo6MjDRo0eOnGiYJp7dmzh9mzZ3PkyBEAvLy8GDt2LBMnTiQxMZH333+fLVu2YGVllVnXxdraGp1Ox5kzZ3j06BGpqTk/IPniiy/45ptv+Oyzz565/Xv37nH8+HEePnyIXC7n7t279O/fnylTplCjRg3WW1gwIJ/Dhh83GGiens7atWsZMngwy1QqRr5AbaIP1WpWGs2ZEXAIlVnxHEwr9OEhVoWOo1evXrRo0SJPy+j1ek6fPs3JkyeJi4tDr9czfvx4ZsyYIa4F/xEfH4+7uzudOnV67hD0Rc2kdz5mzZqFTCbL8vd0QB1BKExWVlZcuHAh379qheKnU6dOHD58mMTERO7fv8/t27eZPHkyCoUCV1dXgoKCuHXrFuPHj8fW1pYjR46wZcsWduzYQUJCAmq1mqSkpBzXHR0d/dxiZTt37uR///sfsbGxNG/eHDc3N3Q6HefPn8fZ2ZnXOnViol5PeA4jlT5LgiQxVK+nVrVq3LhxAxszM/rnM3l5apRKxWPDYy4+yLmNRHFQx7k1LSr05ZdffuHYsWN5ugOiUCjw8/PDx8eHjIwMlixZwoIFC0TikQNXV1dCQ0OLVeKRX4Xy2KV27drExsZm/h09erQwNiMI2dSsWZPw8HACAgJITMy54JVQcjg6OlK+fPkcu2BWrlyZr776isOHD5OcnIzRaGTDhg2kp6djNBpZvnx5tmXi4+PZuHHjM+uNXLhwgX379jF37lxu377N2rVrOXz4MGfOnCE6OpqhQ4eydsMGHDw9aaPVcuVfDUSfJcZoJFCjIcHamt927uTsmTO0BWxesNFoVbmcGmYqIlOvvNDyRUGSJOo5BeJkXoGtW7eyatUqEhISnrtMVFQUS5Ys4dChQyxatIhRo0YVUbQlU82aNTl37hzNmzfP8fFjcVcoXW0VCkWeGxoJQkG7ffs2ISEh9O7dm7///tvU4QhFRCaT0a9fP4xGI6NGjWL69OloNBrGjBmDs7Mzf/31FxMmTECtVpOYmEhMTEy2odWPHDlCq1at+Pjjj7O837hxY+bNm8ewYcNISkri4JEjdOnYkSbXr9NfLmeMUknD/yRIYUYjK7RaVksSNs7OHPjrL6pUqUJSQgIVXrK3SjkgQ/8y/W4KT3z6HdaFjic6/TbV5EpeVyjYfvUqX165Qs0aNahWvToeHh6oVCrS09OJjo7m+vXrhIeHU6VKFY4dO1Zqx+ooaBcvXuT48eMMGTKEjRs3mjqcfCnwNh+zZs1iwYIF2NvbY2Fhgb+/P3PmzMlzN0jR5kMoCKNHj6Zv3760bNnS1KEIJqBWqxk0aBDbt29Hp9Mhl8sxGo00aNCAtm3bsnHjRuLi4nBwcMDDwwNzc3PUajXXrl3ju+++Y+zYsdnW+fS7acOGDfTv35+UlBS+/fZbvl+6lMjYWOqpVHgZjZgB9+VyTmq1lLO3590RI5g4cWLmD7LWr75KhRMn2Ghp+cL71zhdg8r1DfpUn/XC6ygMESmhrLw4DE9JwzJzBa3NzJDJZKRJEpt1OlYbDJwzGLI02FUoFLRs2ZKxY8fStWtXlC/4OKqsGjx4MO+//36xqPmSn+t3gScfu3fv5vHjx1SvXp3Y2Fg+++wzoqOjCQ0NzbFrnEajQaPRZAne09NTJB9Cgdi3bx/t27c3dRiCiSQkJLBr1y7S09OpX78+fn5+yGQydDode/bs4cSJE1y8eJG0tDQsLS3566+/mD9/PhMnTsy2rvj4eMqXL8/mzZt5++23M9/X6/Xs3LnzSXuThw8xGAyUc3KiQ4cOvPXWW9kqrPbt25frv/7KOZXqhcbrUEsS7mkZNPUaTmefcfk/KIUkMSOaxWd7U11KZ6+lOY7P2De9JHFHklBLEpFGIwN0OuoHBLD3779RvUADXOGJ4vBdZ9Lk47+SkpLw9vZm4cKFvPvuu9mmz5o1K8dW5yL5EF7WggULmDx5Mt9//z0jRowwdThCCdC1a1eioqI4e/ZsljFG4Mn5NH36dKKionB1dX3hbezcuZPXX3+dk1ZWNM2hLUtuNuh0vKNWM7XpH7ha5b1cfWHbeG0q0Q92c9HSHJd8VPw9otfTMiODdevW8c477xRihKXXhAkTWLRoETt37qRLly4mi6NYjfPh4OBAtWrVuHXrVo7Tp06dSnJycuZfZGRkYYcklBHjx4/H3t6eixcvmjoUoYSYNGkSFy9eZNiwYTx8+BB4cmdj48aNzJgxg6FDh75U4gFPevJUqliRZfmof/JvS3UGqjs0LVaJx2PtIy7G7+YDhTxfiQc8qZXTXqVimRjL44XNnDkTa2trTp06ZepQ8qzQa7s8fvyY8PDwZ2a05ubmz+32JggvSqVSkZiYmO0XrCA8S6tWrVizZg0jRoxg06ZN1K1bl+joaGJjY+nVqxeLFi166W2YmZkx+r33+GTqVIbo9bTKR6G6dTodJww6hlTo99JxFKRT97cjk4wMVb7Yd/kYuZzup09z7ty5YtF2oaRxcHAgJSWlRH3XFXikkyZNIjg4mLt373L8+HG6d++OmZkZffv2LehNCUKu5HI569atw9HRMVu9EEHIycCBA4mMjOTLL7+kYcOG9O/fnzNnzrB169Zs7Tde1AcffEDLli15U6fjWB4rlG7V6XhXraGZWw/qOgcWSBwF5drDg3RRyHF+wYvf6woFjgpFiR63wtTkcjmLFi3C2dm5RFT4LvA7H1FRUfTt25eEhARcXFxo0aIFJ06cyKxMKAhFzdfXl6SkJMaMGSOq3gp54uLiwqRJkwpt/SqVil927KDb668TePw44w0GRimV+ORw8b5oMLBUp+MHnY7Grl3oVW1GsSssl6F7hOdLxKSQyXAzMxNj87wkT09PEhISmDRpUrGvelvgyYco/iMUN82bN2f9+vX07l08y5ALZZO9vT17//6bGTNmsHLFChakptJJqaSJTIaNTEaKJLFPr+ek0YgCaOc1nM4+7yGXFY9b6+m6ZO6lXCLq8TWSdIkcNxpYrdPxilxOXbk83wmSDF6o2rDw/3r27MmaNWtKRMPd4nEWC0IhGzBgACkpKbz33numDkUQMpmbmzN//nyi79/nm4ULCZbLmafXM1OSWGZuzmmjkcaNG2OmevK4pygSj+uJx/j+8ggmH2nE5CON+DF0LGGP/r9W0v20cDZem8bMkNasvDyaAzE/YGGnJNzGhmFqNfXT06mlVrNcq0Wfx2TCIEncNxhwdHQsrN0qMwYNGkRUVBQffvihqUN5rkJvcCoIxcXs2bP57rvvqFSpUrH/jymULVZWVty+fRtLGxvOnj1LhQoV8PX1xcXDgwEDBrB9+3ZOnNhGx0qjUcgLbyyMQ5Hr+C18Po0bvcLcaXOeDFm/fiPLLr5Lr6ozSNcns/fecuzs7Oj8Wifq1auHs7Nz5l0OtVrNnTt3OBkSwrjLl/nRYGCDSkXNXLoU7zYYSNTrTdpNtDT5+OOPCQoKomnTpvTp08fU4eRIJB9CmfH1119z4MABKlWqZOpQBCELvV7PunXrGDduHN7e3mzfvp2IiAg+/PBDZDIZAQEBHD58mIsP9tG4/GuFEkN8+l1+C5/PRx99xLx58zITig8//JD33nuPZcu+RJIkAgMD6dSpU44jkVpYWFCzZk1q1qzJ3bt3CdqwAf/ERP6ysHjumCbLDAZeadCAJk2aFMq+lTWrVq3i0qVLlCtXztShPJN47CKUGXK5nAsXLtCzZ0/i4+NNHY4gZEpNTSUlJYWGDRsCsGnTJry9vfH09ATAzc2NKr5VORC1CoPxxcYHyU1IzFbKOTrz+eefZ2mvIZPJmDt3LpaWltSvXz/PQ6BXqlSJDyZNwsnTk05qNdHPqAJ80mBgj1bLmPffL7B9KeusrKy4cuUK7du3L7bfdSL5EMqc8ePH4+7uTnh4uKlDEQQAbGxssLa2JjQ0FICTJ09SuXLlLPO80a0rsY/DOBC5ulBiiEu/TYtXA3LsTmxjY5M5NH1+WFhY8O6IEUhWVgzXaLI1KL1mMNBVq8Xfz49+/YrX2CWlQd++falQoUKx7EUkkg+hzHn33XeRJIlVq1aZOhRBAECpVNK/f39WrFjB3bt3iYyMzFYZ3MvLi7Zt27L33nJiHt8s8BgsFDZE3Mt5hGlJkoiKinqhcU6sra3p0bs3u/V6gg0GAHT/FJoL0GopX7Uqv/35pxhsshAMHToUvV7P+vXrTR1KNiL5EMqcevXqERMTw+zZs00dilAGSZLE1q1badOmDeXKlcPT05MPPviAgQMHIpfLs1RijouL4/79+6SnpwPQuXNnnJ1d2HxjWoE/fmno0okLF89z5MiRbNP27t1LWFhY5mOh/Kpbty7lnZ35XKdjpkaDl0ZDP7WaFu3bc+T4cZydnV82fCEH7du3JzY2lvHjx5s6lGwKvbBcfuWnMI0gvIyNGzeyePFiTpw4UaKGJRZKLkmSGDNmDCtWrKBly5Z06tSJ+Ph4NmzYgF6vZ968eSxYsIDbt29j/E8bCScnJ2rWrEnlypXZsH4DbT3f5bXKBXdRMRj1LL00mEfSPb7+ZgF9+vTBaDSyadMmJk+ejLu7O6NGjcrz/5Xbt29z+PBhIiIikMvlWFlZERERgbWFBQOHDGH06NHUrVu3wOIXnm3ZsmVs2bKFQ4cOFep2ilVV2/wSyYdQVKZNm8acOXOYNWsWM2fONHU4Qhnwyy+/0KtXL3788ccsVb6Tk5Np164dFy5cQKlU0qBBA7y9vXFxcUEmk5GYmEhERATnz58nNTWVChUqEB0dTfcqU2lZsX+BxZehSyEo7FMuP9if2T5DJpPRsGFDevfunefHLsHBwWzfvp1q1arRs2dP0tPT2bRpEwkJCSxdupRRo0YVWMxC7gYPHszatWtZvXo1Q4YMKbTtiORDEPLAaDQyatQo5s6dW6y7pAmlR2BgIFqtNsdHGyEhIQQEBDB06FDq1auX4/J6vZ7Tp0+zY8cOJElCq9XSu9os/D16FWicDzMiuZ18jr8jVuLma5clUcpNVFQUX3/9NZMmTWL+/PmZjVQzMjLo1q0bJ06cIDY2Fmtr6wKNWXg2rVbLmDFjWLJkCVZWVoW2nfxcv8W9ZqHMksvlrFy5EisrK37++WdThyOUAaGhoXTo0CHHac2aNcPGxoaHDx8+c3mFQoG/vz9Tp07FyckJpVLJlpuzOBjxU4HG6WzpSVO3btipnFGp8jeo2bFjx3B3d2fOnDlZesdYWlryww8/8PjxYzZv3lyg8QrPp1Kp+PHHH9Hr9fzyyy+mDgcQyYcg8Prrr/P2229ndnMUhMJibW1NXFxcjtNSUlJQq9V5utg7ODgwduxYbG1tcXBw4Pfb37D+2mTSdEkFGq+Dyo2HDxLytUxsbCydOnVCocg+hqW3tze1a9fmwoULBRShkB+tWrWid+/exaLCt0g+hDLv+++/x87OjuvXr5s6FKGU69WrF5s2bcpx3IWVK1diNBrz3AjTxsaGfv36kZSURLNmzbiefIh5Z97g8sMDBRZvRdvaxMREo9PlvWeNUqnkwYMHOU4zGo08evQIS0vLggpRyIdly5ZhY2NTLL7rRPIhlHm+vr4kJyfTq1evbD0MBKEgvffee8jlctq1a0dwcDCSJJGUlMS8efOYNm0aAQEB2Nvb53l9VapUoU6dOty7d4/JUybj5evB6tD3WXd1Mqna/N2xyEltp1bo9DrOnz+f52Xq1KnDnj17uHv3brZpf/zxB9HR0fTo0eOlYxPyz9/fn+TkZNq2bWvy7zqRfAjCP4YNG4abm5vJ/1MKpZenpyf79+8nLS2N1q1bY2VlhZOTE9OnT8ff35/u3bvne50BAQHExsYSEhJCfFwsZsDF+L3MCglkw7Up3E2+8NxS9QajjssPD3Awcg177izlYMRPXH54AINRh4uVN9XL+XNg/0H0en2e4mnatCn29va0a9eOAwcOZDaM3bhxI4MGDaJ9+/Y0a9Ys3/spFJzu3bvj4+Nj0hhEYTlB+Ee1atV48OABq1evZtiwYaYORyil6tevz9KlS2nfvj3NmzfHycmJOnXqvFDvPqPRSFRUFAqeDATWQC6np1KJXJI4azRyPn4PZ+P+xN26Ki0q9KWaoz9OFhWRyWQkaeI4EbONkzE/k6RLxEZmho1MzmPJyGPJgIOyHH4efWju3pc1Vyewd+9eXnst96J2lpaWjB49mjVr1hAYGIidnR1arRa1Ws0bb7zB+vXr8z1Mu1CwPD092bFjB3v37qVjx44miUF0tRWEf9m9ezedO3c2dRhCKffdd98xYcIE5s+f/8ID3Gm1WjasW0doaCjvKBSMValo8p/KsXqjkfk6HUt0euKkJ3f0rM3tcVC5E/84DCUSAxVmjFYqqfevZS8ZDCzX6Vir06EBnt4L7N27NwEBAXmKT5IkLl++zLZt25AkiV27dtGiRYsX2lehYBmNRvbu3Vvg33Wiq60gvKDOnTuzf/9+Jk6caOpQhFJMo9GgVCpfOPEwGo1sWL+em1eu8LulJWssLbMlHgAKuZxp5ubct7Fm9j+9aLx9KxCbep2OZjJirK1YbmGRJfEAqGdmxnILC2JtbGj/zzS5XM6WLVvYvHkzarU61xivX7/Ojh07sLS05MSJEyLxKEbkcjmdO3dm+/btzJgxwyQxiMcugvAf06dP5+TJk/Tp0wc/Pz9ThyOUQg4ODmg0GrRabb7H0QA4evQooZcvs8PSktdy6NKak6nm5iRIEv+7epXuSiU/m5tjlsvjjyMGA6clCStLS9q0bYtCoWDPnj2Ehobi5+dHvXr18PDwQKVSZTaevX37NidOnCAsLIx27dqxatUqvLy88r2PQuGbMmUKYWFhDB48GF9f3yLdtkg+BOE/tm3bRs+ePUWxK6HQNGjQAKPRSExMDJUqVcrXspIkcSw4mLeUSrrmMfF4KkGS8JDJWJ+HxONnnY5+ajW1atWiT9++2NraZsYeHBxMSEgIBw4cQC6XY2lpiV6vR6PRAE/GM/nxxx8ZOnSoaN9RjG3dupUxY8aYZLRZ0eZDEJ7BaDQSHh5O1apVTR2KUMpoNBpcXV1p0qQJXbt2zdeyN2/eZNmyZRy2tOTVfCQfCZJExcePmaVS8XEu5esvGQy8kpFB/UaN6Ne/f46Ph/R6PTExMURFRZGeno5cLsfV1RULCwvWrVtH48aN2b9/v0g+SgC9Xk9kZORL94DJz/Vb3PkQhGdo0KABt27dIiUlJcfRGgXhRZmbmzN48GDWrFlDhw4dMM8lGfi3U6dOUUOhoEUObTyeZ61OhxEYqlQ+dz6DJDFIq8XFxYW3+/Z9ZrsUhUKBl5dXjo9U+vXrx4oVK/jhhx8YMWJEvuIUip6vry+PHz/mwYMHRVbhWzQ4FYRnGDt2LBqNhsOHD5s6FKEUGj9+PFqtlj///DNfyyUnJtII8n1H4azBgJ+ZGS65XFx2GQxc0Ot5q2/fF066a9SoQePGjfniiy8wGAwvtA6h6AwYMICUlBSuXbtWZNsUyYcgPMPIkSMzRwMUhIJmZmaGg4MDR44c4dy5c5nvJyUlcezYMQ4ePMjNmzezDRCmVasxAPv1ev7S6zlvMKDNw9PzJEmiXB4SlhV6Pd4VK770LfhWrVoRFRXFnj17Xmo9QuH74osvePToEbVr1y6ybYp7yYLwHDY2NowaNYp79+6xe/duU4cjlBJ6vZ7OnTtjYWFB586d2bBhA0lJSTx8+JATJ04gl8tRqVSkp6fj5ubGwIEDgSe9XKLj4/lZr+fnf404qpLJeNXMjDEKBW8oFChySDIsZTIe55KkGCWJwwYDrRs0eOl99PLywsnJieDg4DwNTiaYjlwux8bGht69eyOXywkKCir0bYrkQxBycfPmTQ4ePMjp06dp0qSJqcMRSoHff/+da9eucfbsWerXr8/kyZNZuHAhCoWCBQsWMGzYMGxtbTl69Cjjxo1j8eLFaDQa7OzsaN26NT4+Pri6umJmZkZycjIRERFcPHeOnvfu0UihYK1KRZ3/tAnxkMnYYTBgkKRn9nQJlyQeG414enoWyH56eHhw9uzZAlmXUPhu3LjBpUuXmDdvHt7e3oW6LZF8CEIutm3bxnfffUfjxo1NHYpQSuzevZu6devSqFEj4En7j0WLFvH1118zfvz4zPleffVV9u/fT6VKlahUqRIjRozA7D9JRbly5fDx8aFVq1bcuXOHLZs20fjhQ342N+fNfzUuHaBU8q1Oxx6D4ZljgyT+c2fkabfal2Vra0tCwssXuBOKxq+//spvv/1W6IkHiDYfgpCrcuXK8emnn3Lt2jV++eUXU4cjlAJ6vT5LWfkdO3agUCh49913s83r7OzMgAEDSEpKypZ4/JePjw8TJ0+mdr169NZoOPCvRzNN5HIayuV8q9U+c/mnqUpei8jlRq/XEx4eToMGDRgzZgxXrlwpkPUKhcPX15eJEydy+vRp9u7dW6jbEsmHIORR27Zt6d+/f56GlhaE5wkICODMmTPcu3cPgLS0NKytrbGxsclx/vLly6N9TtLwb0qlkgEDB1LZ15cBWi1JkkSGJLFFrydakthrMLBdp8txWd9/esLcv3//BfYqu5iYGFxcXPDz82P79u3Ur1+fDRs2FMi6hcLTpk0b3nrrrUKt8C2SD0HIo4ULF+Lq6kpsbKypQxFKuH79+lGuXDneeecdEhISqFu3Lo8ePeL06dM5zr9r1y7c3NzyvH4zMzPe7t+fR3I5HdPTcU9P5221GrWtLfZ2drytVvNnDnc37GUyqioU3L59O/M9o9GYrcdNXqjVauLi4hg/fjzff/899+7dY+DAgQwZMoSwsLB8r08oOjNnzsTNzY3ExMRC24YY4VQQXsCL1uQQhKdCQkLo0qULGo2GLl26sG/fPqpXr86+ffuwt7fPnG/FihWMHj2aYcOGUadOnTyvPzIykuXLl6PRaGjZsiUBAQG4uLig0+lYv3YtoaGhjFAqGatUZmmcOkujYa7RSMcuXTh9+jSxsbEolUrq1atHYGAgHh4eedr+kSNH2LFjB/fu3aNChQrAk4SkYsWKDBw4kIULF+Z5XwTTyc93XX6u3yL5EIR8qlmzJkqlkkuXLpk6FKGEi4uL48cff2Tv3r0kJycTFhaGtbU1AwYMwNnZmZ07dxISEkLLli3p3r17ngcWu3v3LsuXL8fFxYV33nmH8uXLZ5luNBrZv38/Rw8dIjktjeYKBa/K5dgCUUYj3xsMIJPRo0cPOnbsmBlnbGwsI0aMyLUIWXp6OgsWLCAwMJCtW7dmmTZgwADu3r3L0aNH83WshKJlNBqpWLEi1atX5+DBg3laRiQfglCIunbtys6dO9m5cyeJiYnUrl2bBg0acOHCBYDMf1+5ciXLtOL6Gig2seT1dUk6zvmJ9dChQ/z111/s27cPpVKJq6sr/v7++Pn5kZKSQkpKCnZ2dpnfkTm9NjMzY9myZZQrV44333wTJyenZ86flJREdHQ0l86fJz4ujgy1Gq1Wi1EmY8eOHbzxxhuZ5316ejpdunQhNDSU6dOnZxmG+9/rtrOzY/Xq1dy6dYvDhw/zyiuvEBsbS2xsLO7u7owaNYrY2FjGjx9fZs+JkvJ/r27duly9epUjR44QEBCQ63djvq7fUjGTnJwsAVJycrKpQxGEHKWmpkqhoaFSq1atJEBq1aqVJEmS1KpVqyz//u+04vq6OMWS19fFKZaCjrVWrVoSILVp00YCpI4dO0qLFi2SOnbsmKfX5cuXl6ytrV94eXt7e6l9+/ZSTs6cOSMB0vDhw6VFixZl/j1dtkOHDlKLFi0kQAKkmTNnSpIkSTNnzpQAacKECZJSqZQqV65s8uNcHF4Xp1hyeu3v75/ldW7yc/0Wdz4E4QWJX18l426CqV/nN9aoqCimTJnCtGnTMgcWe96djn+/vnPnDmvWrKFv377UqFEjT3dK/vt6+fLlzJgxgylTpuR43ltbW9OhQwdat26d+V5ycjLh4eHs37+f2NhY3NzcUKvVfPvtt/Tt25f79+9z4MABvvrqK5KSkggKCiIyMrLMnhMl9f9ebsRjF0EQhBLq77//pn379kydOjVbW43cbN++nbNnzzJr1qwXLgr31Vdf0bNnT5YvX55tWnx8PO7u7nTo0IFGjRrx+PFjIiMjCQ0NJSwsjGrVqrFu3ToqVapE9+7dCQkJwd3dHQsLC+7cuYOPjw+///57vhrOCiVHfq7fYoRTQRCEYqRhw4YAREVF5Tv5CAsLo06dOi+ceMCTuwcbN27M7G75b4sXLwZgz549mQXjVCoV/v7+fP755/To0SOzZ8SxY8c4cuQIu3fvxmAwEBAQwOuvv/5SsQmlhzgLBEEQihEnJydq167NpUuX8jWkv16v5/79+3lqGPg8r776KqdPn6ZFixbMnz8/s7fL0qVLWbhwIZMmTaJHjx5otVocHR0ze3/9l0wmo2XLlrRs2fKl4hFKJ5F8CIIgFDNjxozhvffe4+HDhzg7O+dpGbVajdFofOnH1XZ2dowdO5bvv/+enj17Znn/yy+/ZNq0aXnu8isIzyJGOBUEQShmBg4cSIUKFdiyZUueh7h+2vXVYDC89PZdXFxo2rQp5ubmfPLJJ/z6669ER0czffp0kXgIBUIkH4IgCMWMjY0NP/30Ezdv3uSPP/7I0/DmlpaWWFtbF1hdlri4OGQyGV9++SUrV64USYdQoETyIQiCUAzp9XrMzMw4ePAgGzduJD09/bnzy2QyPD09s9RleVFGo5G7d+8ybNgwduzYwdGjRxk5cuRLr1cQnhLJhyAIQjGj1WoZOHAgHTp04KeffuL69essWLCAQ4cO5ZiEGI1GQkNDSUxMJCwsjIcPHyJJEnfu3GHLli2sWrWKX375hejo6Dxt/8aNGyQkJNC3b1+6devGvHnz2Lx5M5GRkQW9q0IZJcb5EARBKGa2bdvGW2+9xZUrV6hVqxYRERFMmTKFbdu2YTAYcHZ2xt3dHblcTmpqKlFRUajVaho2bEh4eDi+vr7I5XLOnj2Lt7c3NWvW5MKFC9y/fz/XOjEGg4ElS5bg4ODA+fPnkclkpKamZg6bPmTIkCI+GkJJkZ/rt7jzIQiCUMzcvHkTJycnatWqBYCXlxebNm0iMjKSFStW4OnpyfXr17G3t6dRo0bMmjWL06dPc+7cOVasWMH58+e5cOECa9eu5fbt2+zevZuIiAj+97//cfjwYY4dO/bMbe/bty9zO08TlKddafPa+FUQciO62gqCIBQzjo6OpKSkkJiYSLly5TLfL1++PMOHD+fYsWNkZGTkWG20W7duWFpaMnr0aAYOHJj5vlKp5IMPPuDUqVPs37+fgICALMXhJEkiODiYPXv2MGvWLJo1a5Y5bdu2bQC0aNGiMHZXKIPEnQ9BEIRi5un4GkuWLMk27d69e2zZsoV+/frluOzly5fJyMigb9++OU7v168f8fHxJCUlZb6XlJTEqlWr2LFjB82aNWPq1KmZ086cOcOHH35Ily5dqF69+kvslSD8P3HnQxAEoZhxdXVl0qRJfPbZZ6SkpDBmzBicnZ3ZtWsX06ZNo3z58owaNSrHZZ8243tWm46n78fGxhIWFsa1a9e4dOkSTk5ODBgwgA0bNlCpUiVatmxJVFQUx44do2HDhqxdu7ZwdlYok8SdD0EQhGLoq6++4osvvmDVqlVUrVoVR0dH+vfvT5UqVQgODsbJySnH5erXr4+joyObN2/OcfrGjRtRKBT88MMPBAUFodfrWbRoEWFhYaxfv55Lly7Ro0cP4uPjcXZ2ZtOmTYSEhOR5pFVByAvR20UQBKEYS0tL48CBA6Snp1O/fn1q1KiR6zIzZsxg7ty5rF69mv79+yOXy9Hr9SxdupQPPviAcePG0a9fP+rUqYOtrW0R7IVQFuTn+i2SD0EQhFJGr9czaNAgNm3ahI+PDzVr1uTixYtER0fz/vvvs2jRIjFiqVDgRPIhCIJQxkmSxIkTJ1izZg1xcXF4enry7rvv0qBBA1OHJpRS+bl+iwangiAIpZBMJsPf3x9/f39ThyII2YgGp4IgCIIgFKlCSz6WLl1KpUqVsLCwwM/Pj1OnThXWpgRBEARBKEEKJfn4+eefmThxIjNnzuTcuXPUr1+fjh07Eh8fXxibEwRBEAShBCmU5GPhwoUMHz6cIUOGUKtWLVasWIGVlRWrV68ujM0JgiAIglCCFHiDU61Wy9mzZ7MMzyuXy2nXrh0hISHZ5tdoNGg0mszXycnJwJNWs4IgCIIglAxPr9t56URb4MnHw4cPMRgMlC9fPsv75cuX5/r169nmnzNnDp999lm29z09PQs6NEEQBEEQCllqair29vbPncfkXW2nTp3KxIkTM18nJSXh7e1NRERErsGXVikpKXh6ehIZGVlmxzop68egrO8/iGNQ1vcfxDGAknUMJEkiNTUVDw+PXOct8OTD2dkZMzMz4uLisrwfFxeHm5tbtvnNzc0xNzfP9r69vX2xP9CFzc7OThyDMn4Myvr+gzgGZX3/QRwDKDnHIK83DQq8walKpaJx48bs378/8z2j0cj+/fvFYDeCIAiCIBTOY5eJEycyaNAgXnnlFZo2bcqiRYtIS0tjyJAhhbE5QRAEQRBKkEJJPvr06cODBw/49NNPuX//Pg0aNGDPnj3ZGqHmxNzcnJkzZ+b4KKasEMdAHIOyvv8gjkFZ338QxwBK7zEodoXlBEEQBEEo3URtF0EQBEEQipRIPgRBEARBKFIi+RAEQRAEoUiJ5EMQBEEQhCJV7JKPpUuXUqlSJSwsLPDz8+PUqVOmDqnIzJo1C5lMluWvRo0apg6r0Bw+fJiuXbvi4eGBTCZjx44dWaZLksSnn36Ku7s7lpaWtGvXjrCwMNMEW0hyOwaDBw/Odk506tTJNMEWgjlz5tCkSRNsbW1xdXXlzTff5MaNG1nmUavVjB07FicnJ2xsbOjZs2e2QQxLsrwcg9atW2c7D0aNGmWiiAvW8uXLqVevXuYgWv7+/uzevTtzemn//CH3Y1AaP/9ilXz8/PPPTJw4kZkzZ3Lu3Dnq169Px44diY+PN3VoRaZ27drExsZm/h09etTUIRWatLQ06tevz9KlS3OcPn/+fJYsWcKKFSs4efIk1tbWdOzYEbVaXcSRFp7cjgFAp06dspwTmzdvLsIIC1dwcDBjx47lxIkT7Nu3D51OR4cOHUhLS8ucZ8KECfzxxx9s3bqV4OBgYmJi6NGjhwmjLlh5OQYAw4cPz3IezJ8/30QRF6yKFSsyd+5czp49y5kzZ2jbti3dunXjypUrQOn//CH3YwCl8POXipGmTZtKY8eOzXxtMBgkDw8Pac6cOSaMqujMnDlTql+/vqnDMAlA2r59e+Zro9Eoubm5SQsWLMh8LykpSTI3N5c2b95sgggL33+PgSRJ0qBBg6Ru3bqZJB5TiI+PlwApODhYkqQnn7lSqZS2bt2aOc+1a9ckQAoJCTFVmIXqv8dAkiSpVatW0vjx400XVBFzdHSUfvzxxzL5+T/19BhIUun8/IvNnQ+tVsvZs2dp165d5ntyuZx27doREhJiwsiKVlhYGB4eHlSuXJn+/fsTERFh6pBM4s6dO9y/fz/L+WBvb4+fn1+ZOh8ADh06hKurK9WrV2f06NEkJCSYOqRCk5ycDEC5cuUAOHv2LDqdLst5UKNGDby8vErtefDfY/DUxo0bcXZ2pk6dOkydOpX09HRThFeoDAYDQUFBpKWl4e/vXyY///8eg6dK2+dv8qq2Tz18+BCDwZBtFNTy5ctz/fp1E0VVtPz8/FizZg3Vq1cnNjaWzz77jFdffZXQ0FBsbW1NHV6Run//PkCO58PTaWVBp06d6NGjBz4+PoSHhzNt2jQ6d+5MSEgIZmZmpg6vQBmNRj744AOaN29OnTp1gCfngUqlwsHBIcu8pfU8yOkYAPTr1w9vb288PDy4dOkSH3/8MTdu3ODXX381YbQF5/Lly/j7+6NWq7GxsWH79u3UqlWLCxculJnP/1nHAErn519skg8BOnfunPnvevXq4efnh7e3N1u2bOHdd981YWSCqbz99tuZ/65bty716tXD19eXQ4cOERgYaMLICt7YsWMJDQ0t1e2ccvOsYzBixIjMf9etWxd3d3cCAwMJDw/H19e3qMMscNWrV+fChQskJyezbds2Bg0aRHBwsKnDKlLPOga1atUqlZ9/sXns4uzsjJmZWbZWzHFxcbi5uZkoKtNycHCgWrVq3Lp1y9ShFLmnn7k4H7KqXLkyzs7Ope6cGDduHH/++ScHDx6kYsWKme+7ubmh1WpJSkrKMn9pPA+edQxy4ufnB1BqzgOVSkWVKlVo3Lgxc+bMoX79+ixevLhMff7POgY5KQ2ff7FJPlQqFY0bN2b//v2Z7xmNRvbv35/luVdZ8vjxY8LDw3F3dzd1KEXOx8cHNze3LOdDSkoKJ0+eLLPnA0BUVBQJCQml5pyQJIlx48axfft2Dhw4gI+PT5bpjRs3RqlUZjkPbty4QURERKk5D3I7Bjm5cOECQKk5D/7LaDSi0WjKxOf/LE+PQU5Kxedv6hav/xYUFCSZm5tLa9aska5evSqNGDFCcnBwkO7fv2/q0IrEhx9+KB06dEi6c+eOdOzYMaldu3aSs7OzFB8fb+rQCkVqaqp0/vx56fz58xIgLVy4UDp//rx07949SZIkae7cuZKDg4P022+/SZcuXZK6desm+fj4SBkZGSaOvOA87xikpqZKkyZNkkJCQqQ7d+5If//9t9SoUSOpatWqklqtNnXoBWL06NGSvb29dOjQISk2NjbzLz09PXOeUaNGSV5eXtKBAwekM2fOSP7+/pK/v78Joy5YuR2DW7duSZ9//rl05swZ6c6dO9Jvv/0mVa5cWWrZsqWJIy8YU6ZMkYKDg6U7d+5Ily5dkqZMmSLJZDLpr7/+kiSp9H/+kvT8Y1BaP/9ilXxIkiR9++23kpeXl6RSqaSmTZtKJ06cMHVIRaZPnz6Su7u7pFKppAoVKkh9+vSRbt26ZeqwCs3BgwclINvfoEGDJEl60t12xowZUvny5SVzc3MpMDBQunHjhmmDLmDPOwbp6elShw4dJBcXF0mpVEre3t7S8OHDS1UyntO+A9JPP/2UOU9GRoY0ZswYydHRUbKyspK6d+8uxcbGmi7oApbbMYiIiJBatmwplStXTjI3N5eqVKkiffTRR1JycrJpAy8gQ4cOlby9vSWVSiW5uLhIgYGBmYmHJJX+z1+Snn8MSuvnL5MkSSq6+yyCIAiCIJR1xabNhyAIgiAIZYNIPgRBEARBKFIi+RAEQRAEoUiJ5EMQBEEQhCIlkg9BEARBEIqUSD4EQRAEQShSIvkQBEEQBKFIieRDEARBEIQiJZIPQRAEQRCKlEg+BEEQBEEoUiL5EARBEAShSInkQxAEQRCEIvV/flJGsyvv7YEAAAAASUVORK5CYII=", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "# Combine the unit cell and the molecule\n", - "combined_structure = unit_cell + mol_0 + mol_1 + mol_2 + mol_3 + mol_4 + mol_5 + mol_6 + mol_7 + mol_8 + mol_9\n", - "\n", - "# Visualize the structure\n", - "plot_atoms(combined_structure)\n", - "view = nglview.show_ase(combined_structure)\n", - "view.add_unitcell()\n", - "view" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "ref_0_cart = read(\"error_2/BOFFOS/Ref_Molecule_BOFFOS_0.xyz\")\n", - "ref_1_cart = read(\"error_2/BOFFOS/Ref_Molecule_BOFFOS_1.xyz\")\n", - "ref_2_cart = read(\"error_2/BOFFOS/Ref_Molecule_BOFFOS_2.xyz\")\n", - "ref_3_cart = read(\"error_2/BOFFOS/Ref_Molecule_BOFFOS_3.xyz\")\n", - "ref_4_cart = read(\"error_2/BOFFOS/Ref_Molecule_BOFFOS_4.xyz\")\n", - "ref_5_cart = read(\"error_2/BOFFOS/Ref_Molecule_BOFFOS_5.xyz\")\n", - "ref_6_cart = read(\"error_2/BOFFOS/Ref_Molecule_BOFFOS_6.xyz\")\n", - "ref_7_cart = read(\"error_2/BOFFOS/Ref_Molecule_BOFFOS_7.xyz\")\n", - "ref_8_cart = read(\"error_2/BOFFOS/Ref_Molecule_BOFFOS_8.xyz\")\n", - "ref_9_cart = read(\"error_2/BOFFOS/Ref_Molecule_BOFFOS_9.xyz\")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "combine_ref = ref_0_cart + ref_1_cart + ref_2_cart + ref_3_cart + ref_4_cart + ref_5_cart + ref_6_cart + ref_7_cart + ref_8_cart + ref_9_cart\n", - "combine_ref.set_cell(atoms.get_cell())" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## cell" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "data": { - "text/plain": [ - "Atoms(symbols='', pbc=True, cell=[[24.369, 0.0, 0.0], [-12.184499999999996, 21.10417306482299, 0.0], [0.0, 0.0, 9.748]])" - ] - }, - "execution_count": 14, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "unit_cell" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "metadata": {}, - "outputs": [], - "source": [ - "ref_frac_all = read(f\"error_2/BOFFOS/Ref_All_frac_BOFFOS.xyz\")\n", - "ref_cart_all = read(f\"error_2/BOFFOS/Ref_All_BOFFOS.xyz\")" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "d5fd2c4103ac4717993bcd9104c3cb2e", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "NGLWidget()" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "view = nglview.show_ase(atoms)\n", - "view.add_unitcell()\n", - "view" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "error_reconstruction = True\n", - "if error_reconstruction:\n", - " \n" - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "metadata": {}, - "outputs": [ - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "d5fd2c4103ac4717993bcd9104c3cb2e", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "NGLWidget()" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "view" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "new_structures = apply_symmetry_operations_to_frac(ref_cart_all, cell, ref_frac_all.positions, sym_ops, normalize=True)\n", - "# for new_structure in new_structures:\n", - "# combined_mol = unit_cell + new_structure\n", - "# print(new_structures)\n", - "# combined_mol= unit_cell + new_structures[8]\n", - "# plot_atoms(combined_mol)\n", - "# view = nglview.show_ase(combined_mol)\n", - "# view.add_unitcell()\n", - "# view\n", - "for idx, transformed in enumerate(new_structures):\n", - " writexyz(\"error_2/BOFFOS\", f\"Normal_Transformed_BOFFOS_{idx}.xyz\", transformed.get_chemical_symbols(), transformed.positions)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "plot_atoms(unit_cell+ref_cart_all)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "i=1\n", - "# combined_mol = unit_cell\n", - "ref_frac = read(f\"error_2/BOFFOS/Ref_Molecule_BOFFOS_frac_{i}.xyz\")\n", - "ref_cart = read(f\"error_2/BOFFOS/Ref_Molecule_BOFFOS_{i}.xyz\")\n", - "plot_atoms(unit_cell+ref_cart)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "scrolled": true - }, - "outputs": [], - "source": [ - "new_structures" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "plot_atoms(atoms)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "def apply_symmetry_operations_to_frac (molecule, cellparam, fractional_coords, sym_op, normalize = False):\n", - " new_structures = []\n", - " for rot, trans in zip(sym_ops[0], sym_ops[1]):\n", - " transformed_positions = np.dot(fractional_coords, rot.T)\n", - " transformed_positions += np.array(trans)\n", - " is_inside, centroid_fractional = check_centroid_inside_unit_cell(fractional_coords)\n", - " print(is_inside, centroid_fractional) \n", - " if normalize:\n", - " transformed_positions = np.mod(transformed_positions, 1)\n", - " new_positions = frac2cart_fromparam(transformed_positions, cellparam)\n", - " new_molecule = molecule.copy()\n", - " \n", - " new_molecule.set_positions(new_positions)\n", - " new_molecule.set_cell(molecule.get_cell())\n", - " new_structures.append(new_molecule)\n", - " return new_structures" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "ref_cart" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "scrolled": true - }, - "outputs": [], - "source": [ - "ref_frac" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "unit_cell" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "new_structures = apply_symmetry_operations_to_frac(ref_cart, cell, ref_frac.positions, sym_ops, normalize=False)\n", - "# for new_structure in new_structures:\n", - "# combined_mol = unit_cell + new_structure\n", - "# print(new_structures)\n", - "combined_mol= unit_cell + new_structures[8]\n", - "plot_atoms(combined_mol)\n", - "view = nglview.show_ase(combined_mol)\n", - "view.add_unitcell()\n", - "view" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "new_structures = apply_symmetry_operations_to_frac(ref_cart, cell, ref_frac.positions, sym_ops, normalize=False)\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "new_structures = apply_symmetry_operations_to_frac(ref_cart, cell, ref_frac.positions, sym_ops)\n", - "for new_structure in new_structures:\n", - " combined_mol += new_structure\n", - "plot_atoms(combined_mol)\n", - "view = nglview.show_ase(combined_mol)\n", - "view.add_unitcell()\n", - "view" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "new_structures = apply_symmetry_operations_to_frac(ref_8_cart, cell, ref_8.positions, sym_ops)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "combined_mol = new_structures[0] + new_structures[1] + new_structures[2] + new_structures[3] + new_structures[4] + new_structures[5] + new_structures[6] + new_structures[7] + new_structures[8]\n", - "combined_mol.set_cell(atoms.get_cell())\n", - "plot_atoms(combined_mol)\n", - "# combined_mol.set_cell(atoms.get_cell())\n", - "# combined_mol.set_pbc(True)\n", - "view = nglview.show_ase(combined_mol)\n", - "view.add_unitcell()\n", - "view" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "combined_mol = mol_0 + mol_1 + mol_2 + mol_3 + mol_4 + mol_5 + mol_6 + mol_7 + mol_8 + mol_9\n", - "combined_mol.set_cell(atoms.get_cell())" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "plot_atoms(atoms)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# plot_atoms(mol_0 + mol_1 + mol_2 + mol_3 + mol_4 + mol_5 + mol_6 + mol_7 + mol_8 + mol_9)\n", - "plot_atoms(combined_mol)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "atoms.cell" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "sym_ops = space_group.get_op()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "sym_ops[1]" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "for i, (rot, trans) in enumerate(space_group.get_symop()):\n", - " print(rot, trans)\n", - " print(\"Symmetry operation #{}\".format(i + 1))\n", - " print(\"Rotation matrix: \", rot[0,:])\n", - " print(\" \", rot[1,:])\n", - " print(\" \", rot[2,:])\n", - " print(\"Translation vector: \", trans)\n", - " print()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "def apply_symmetry_operations_to_frac (molecule, cellparam, fractional_coords, sym_op, normalize = False):\n", - " new_structures = []\n", - " for rot, trans in zip(sym_ops[0], sym_ops[1]):\n", - " transformed_positions = np.dot(fractional_coords, rot.T)\n", - " transformed_positions += np.array(trans)\n", - " is_inside, centroid_fractional = check_centroid_inside_unit_cell(transformed_positions)\n", - " print(is_inside, centroid_fractional) \n", - " if normalize:\n", - " transformed_positions = np.mod(transformed_positions, 1)\n", - " new_positions = frac2cart_fromparam(transformed_positions, cellparam)\n", - " new_molecule = molecule.copy()\n", - " \n", - " new_molecule.set_positions(new_positions)\n", - " # new_molecule.set_cell(molecule.get_cell())\n", - " new_structures.append(new_molecule)\n", - " return new_structures" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "plot_atoms(atoms)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "scrolled": true - }, - "outputs": [], - "source": [ - "frac_ref = read('error_2/BOFFOS/Ref_All_frac_BOFFOS.xyz')\n", - "cart_ref = read('error_2/BOFFOS/Ref_All_BOFFOS.xyz')\n", - "cart_ref.set_cell(atoms.get_cell())\n", - "plot_atoms(cart_ref) " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "def check_centroid_inside_unit_cell(positions):\n", - " \"\"\"\n", - " Check if the centroid of a set of fractional positions is inside the unit cell.\n", - "\n", - " Parameters:\n", - " - positions (np.array): 2D array of fractional coordinates.\n", - "\n", - " Returns:\n", - " - bool: True if centroid is inside the unit cell, False otherwise.\n", - " \"\"\"\n", - " # Calculate the centroid of the positions\n", - " centroid_fractional = np.mean(positions, axis=0)\n", - "\n", - " # Check if the centroid is inside the unit cell\n", - " is_inside = np.all((centroid_fractional >= 0) & (centroid_fractional < 1))\n", - " \n", - " return is_inside, centroid_fractional" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "cell" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "unit_cell = Atoms(cell=cell)\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "new_structures = apply_symmetry_operations_to_frac(cart_ref, cell, frac_ref.positions, sym_ops, normalize=True)\n", - "new_structures" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import nglview" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "scrolled": true - }, - "outputs": [], - "source": [ - "atoms" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "plot_atoms(new_structures[0])\n", - "plot_atoms(new_structures[1])\n", - "plot_atoms(new_structures[2])\n", - "plot_atoms(new_structures[3])\n", - "plot_atoms(new_structures[4])\n", - "plot_atoms(new_structures[5])\n", - "plot_atoms(new_structures[6])\n", - "plot_atoms(new_structures[7])" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "view = nglview.show_ase(new_structures[5])\n", - "view.add_unitcell()\n", - "view" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "view = nglview.show_ase(atoms)\n", - "view.add_unitcell()\n", - "view" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "scrolled": true - }, - "outputs": [], - "source": [ - "help(view.add_unitcell)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "atoms" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "combined_mol" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "scrolled": true - }, - "outputs": [], - "source": [ - "combined_mol = new_structures[0] + new_structures[1] + new_structures[2] + new_structures[3] + new_structures[4] + new_structures[5] + new_structures[6] + new_structures[7] + new_structures[8]\n", - "combined_mol.set_cell(atoms.get_cell())\n", - "combined_mol.set_pbc(True)\n", - "view = nglview.show_ase(combined_mol)\n", - "view.add_unitcell()\n", - "view" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "len(combined_mol)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "atoms.get_cell()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "new_structures = apply_symmetry_operations_to_frac(cart_ref, cell, frac_ref.positions, sym_ops)\n", - "new_structures" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "scrolled": true - }, - "outputs": [], - "source": [ - "combined_mol = new_structures[0] + new_structures[1] + new_structures[2] + new_structures[3] + new_structures[4] + new_structures[5] + new_structures[6] + new_structures[7] + new_structures[8]\n", - "combined_mol.set_cell(atoms.get_cell())\n", - "combined_mol.set_pbc(True)\n", - "view = nglview.show_ase(combined_mol)\n", - "view.add_unitcell()\n", - "view" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "view = nglview.show_ase(new_structures[0] + new_structures[3] + new_structures[4] + new_structures[6] + new_structures[7])\n", - "view.add_unitcell()\n", - "view" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "for new_structure in new_structures :\n", - " centroid = np.mean(new_structure.positions, axis=0)\n", - " print(centroid)\n", - " print(new_structure.get_center_of_mass())\n", - " print(is_within_unit_cell(centroid, combined_mol.get_cell()))" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Function to check if a point is within the unit cell\n", - "def is_within_unit_cell(point, cell):\n", - " fractional = np.linalg.solve(cell.T, point) # Convert to fractional coordinates\n", - " return np.all(fractional >= 0) and np.all(fractional <= 1)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "combined_mol = new_structures[0] + new_structures[1] + new_structures[2] + new_structures[3] + new_structures[4] + new_structures[5] + new_structures[6] + new_structures[7] + new_structures[8]\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "scrolled": true - }, - "outputs": [], - "source": [ - "combined_mol.get_cell()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "scaled_positions = atoms.get_scaled_positions(wrap=False)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "new_atoms" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "plot_atoms(atoms)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "scrolled": true - }, - "outputs": [], - "source": [ - "plot_atoms(new_atoms)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "scrolled": true - }, - "outputs": [], - "source": [ - "help(plot_atoms)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "scrolled": true - }, - "outputs": [], - "source": [ - "combined_mol = new_structures[0] + new_structures[1] + new_structures[2] + new_structure[3] + new_structure[4]\n", - "# + new_structures[3] + new_structures[4] + new_structures[5] + new_structures[6] + new_structures[7] + new_structures[8]\n", - "# combined_mol = new_structures[8]\n", - "# combined_mol.set_cell(atoms.get_cell())\n", - "# combined_mol.set_pbc(True)\n", - "print(combined_mol)\n", - "view = nglview.show_ase(combined_mol)\n", - "view.add_unitcell()\n", - "view" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "len(combined_mol)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "len(atoms)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "plot_atoms(new_structures[0] + new_structures[1] + new_structures[2] + new_structures[3] + new_structures[4] + new_structures[5] + new_structures[6] + \n", - " new_structures[7] + new_structures[8])" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "plot_atoms(atoms)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "plot_atoms(atoms)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "def apply_symmetry_operations(molecule, sym_ops):\n", - " new_structures = []\n", - " positions = molecule.get_positions()\n", - " cell = molecule.get_cell()\n", - " for rot, trans in zip(sym_ops[0], sym_ops[1]):\n", - " print(rot, trans)\n", - " new_positions = np.dot(positions, np.transpose(rot)) + np.array(trans)# * cell.diagonal()\n", - " new_molecule = molecule.copy()\n", - " print(np.mean(new_positions, axis=0))\n", - " # if is_within_unit_cell(np.mean(new_positions, axis=0), cell):\n", - " new_molecule.set_positions(new_positions)\n", - " new_molecule.set_cell(cell)\n", - " new_structures.append(new_molecule)\n", - "\n", - " return new_structures" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "plot_atoms(atoms)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "cell" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "plot_atoms(molecule_2)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "help(plot_atoms)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "new_structures =apply_symmetry_operations (molecule_1, sym_ops)\n", - "new_structures\n", - "plot_atoms(molecule_1 + new_structures[1] + new_structures[2] + new_structures[3] )\n", - "# new_structures2 =apply_symmetry_operations (molecule_2, sym_ops)\n", - "# plot_atoms(molecule_1 + new_structures[1] + new_structures[2] + new_structures[3] \n", - "# + molecule_2 + new_structures2[1] + new_structures2[2] + new_structures2[3])" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "plot_atoms(atoms)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "atoms.arrays()\n", - "\n", - "\n", - "\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "molecule_1.set_cell atoms.get_cell()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "cell" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "plot_atoms(atoms)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "frac_ref = read('error_2/BOFFOS/Ref_All_frac_BOFFOS.xyz')\n", - "cart_ref = read('error_2/BOFFOS/Ref_All_BOFFOS.xyz')\n", - "cart_ref.set_cell(atoms.get_cell())\n", - "plot_atoms(cart_ref) " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Load molecules from the XYZ files\n", - "molecule_1 = read('error_2/BOFFOS/Ref_Molecule_BOFFOS_0.xyz')\n", - "# molecule_1 = read('error_2/BOFFOS/Ref_Molecule_BOFFOS_frac_0.xyz')\n", - "\n", - "molecule_2 = read('error_2/BOFFOS/Ref_Molecule_BOFFOS_1.xyz')\n", - "# molecule_2 = read('error_2/BOFFOS/Ref_Molecule_BOFFOS_frac_1.xyz')\n", - "\n", - "molecule_1.set_cell(atoms.get_cell())\n", - "molecule_2.set_cell(atoms.get_cell())\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "plot_atoms(atoms)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "plot_atoms(atoms+ molecule_1)\n", - "\n", - "# plot_atoms(molecule_1)\n", - "# plot_atoms(molecule_2)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import numpy as np\n", - "def calculate_centroid(atoms):\n", - " positions = atoms.get_positions()\n", - " centroid = np.mean(positions, axis=0)\n", - " return centroid" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "calculate_centroid(molecule_2)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "is_within_unit_cell(calculate_centroid(molecule_1), atoms.get_cell())" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "is_within_unit_cell" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from ase.io import read\n", - "from ase import Atoms\n", - "import numpy as np\n", - "\n", - "# Load molecules from the XYZ files\n", - "molecule_1 = read('error_2/BOFFOS/Ref_Molecule_BOFFOS_0.xyz')\n", - "molecule_2 = read('error_2/BOFFOS/Ref_Molecule_BOFFOS_1.xyz')\n", - "\n", - "# Create the orthorhombic unit cell\n", - "cell_a = 11.76\n", - "cell_b = 7.49\n", - "cell_c = 5.91\n", - "unit_cell = Atoms(cell=[(cell_a, 0, 0), (0, cell_b, 0), (0, 0, cell_c)])\n", - "\n", - "# Adding symmetry operations from space group 'P 21 21 2'\n", - "# Define symmetry operations as transformation matrices and translation vectors\n", - "sym_ops = [\n", - " {\"rot\": [[1, 0, 0], [0, 1, 0], [0, 0, 1]], \"trans\": [0, 0, 0]},\n", - " {\"rot\": [[1, 0, 0], [0, -1, 0], [0, 0, -1]], \"trans\": [0.5, 0.5, 0]},\n", - " {\"rot\": [[-1, 0, 0], [0, 1, 0], [0, 0, -1]], \"trans\": [0.5, 0.5, 0]},\n", - " {\"rot\": [[-1, 0, 0], [0, -1, 0], [0, 0, 1]], \"trans\": [0, 0, 0]}\n", - "]\n", - "\n", - "# Function to apply symmetry operations to a molecule\n", - "def apply_symmetry(molecule, sym_ops, unit_cell):\n", - " for op in sym_ops:\n", - " rot_matrix = np.array(op[\"rot\"])\n", - " trans_vector = np.array(op[\"trans\"])\n", - " new_positions = np.dot(molecule.get_positions(), rot_matrix.T) + trans_vector * [cell_a, cell_b, cell_c]\n", - " \n", - " # Create new molecule instance with transformed positions\n", - " new_molecule = molecule.copy()\n", - " new_molecule.set_positions(new_positions)\n", - " unit_cell += new_molecule\n", - "\n", - "# Apply symmetry operations to each molecule and add to the unit cell\n", - "apply_symmetry(molecule_1, sym_ops, unit_cell)\n", - "apply_symmetry(molecule_2, sym_ops, unit_cell)\n", - "\n", - "# The unit cell is now prepared with molecules positioned according to the specified symmetry\n", - "unit_cell.positions, unit_cell.get_chemical_symbols()\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "len(unit_cell.positions)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "len(unit_cell.get_chemical_symbols())" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from ase.io import read, write\n", - "from ase.spacegroup import crystal, get_spacegroup\n", - "cif_file_path = \"error_2/BOFFOS/BOFFOS.cif\"\n", - "xyz_file_path = \"error_2/BOFFOS/Ref_All_BOFFOS.xyz\"\n", - "# Load the initial structure from CIF file\n", - "initial_structure = read(cif_file_path, format='cif')\n", - "# positions = initial_structure.get_positions('center')\n", - "# view(initial_structure, viewer='x3d')\n", - "# # Extract cell parameters and atomic positions from the CIF file\n", - "cell = initial_structure.cell.cellpar()\n", - "# # symbols = initial_structure.get_chemical_symbols()\n", - "# # positions = initial_structure.get_positions()\n", - "print(cell)\n", - "space_group = initial_structure.info['spacegroup']\n", - "print(space_group)\n", - "# crystal_structure = crystal(symbols=initial_structure.get_chemical_symbols(),\n", - "# basis=initial_structure.get_positions(),\n", - "# spacegroup=space_group,\n", - "# cellpar=cell)\n", - "\n", - "# view(crystal_structure)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "supercell_size=[[2, 0, 0], [0, 1, 0], [0, 0, 1]]\n", - "supercell = make_supercell(initial_structure, supercell_size)\n", - "view(supercell, viewer='x3d')\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from ase.build import molecule, make_supercell\n", - "from ase.spacegroup import crystal\n", - "from ase.visualize import view\n", - "\n", - "# Define the molecular structure (e.g., water)\n", - "molecule = molecule('H2O')\n", - "\n", - "# Create a supercell to fill the unit cell\n", - "supercell = make_supercell(molecule, [[3, 0, 0], [0, 3, 0], [0, 0, 3]])\n", - "\n", - "# Define lattice parameters and space group (e.g., cubic cell with P1 symmetry)\n", - "a = b = c = 10 # lattice parameters\n", - "spacegroup = 1 # P1 symmetry\n", - "\n", - "# Create a crystal object representing the filled unit cell\n", - "unit_cell = crystal(symbols=supercell.get_chemical_symbols(),\n", - " basis=supercell.get_positions(),\n", - " spacegroup=spacegroup,\n", - " cellpar=[a, b, c, 90, 90, 90],symprec=1e-5)\n", - "\n", - "# Optionally, visualize the filled unit cell\n", - "view(unit_cell)\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from ase.visualize import view\n", - "\n", - "# Create a molecule (e.g., water)\n", - "atoms = molecule('H2O')\n", - "\n", - "# Optionally, visualize the original molecule\n", - "view(atoms, viewer='x3d')\n", - "\n", - "# Ensure that molecules are not fragmented\n", - "atoms.wrap()\n", - "\n", - "# Optionally, visualize the unit cell after wrapping\n", - "view(atoms, viewer='x3d')" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import matplotlib.pyplot as plt\n", - "\n", - "from ase.visualize import view\n", - "from ase.visualize.plot import plot_atoms\n", - "plot_atoms(crystal_structure)\n", - "# crystal_structure.get_positions(\"center\")\n", - "view(crystal_structure, viewer='x3d')" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "help(crystal_structure.wrap)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "help(view)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "cell" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "space_group, space_group.no, space_group.symbol" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Access symmetry operations\n", - "symmetry_operations = space_group.get_symop()\n", - "for op in symmetry_operations:\n", - " print(op)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "for i, (rot, trans) in enumerate(space_group.get_symop()):\n", - " print(\"Symmetry operation #{}\".format(i + 1))\n", - " print(\"Rotation matrix: \", rot[0,:])\n", - " print(\" \", rot[1,:])\n", - " print(\" \", rot[2,:])\n", - " print(\"Translation vector: \", trans)\n", - " print()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "help(space_group.equivalent_sites)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "newcell" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "for label, fcoord, ccoord in zip(newcell.labels, newcell.frac_coord, newcell.coord):\n", - " if label == \"Br\":\n", - " print(label, fcoord, ccoord)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "help(space_group)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from cell2mol.read_write import writexyz\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "for idx, ref in enumerate(newcell.refmoleclist):\n", - " print(ref.formula)\n", - " frac_coord = cart2frac(ref.coord, newcell.cellvec)\n", - " # print(space_group.symmetry_normalised_sites(frac_coord))\n", - " sites, kind = space_group.equivalent_sites(frac_coord, onduplicates='keep')\n", - " # for i, (label, fcoord) in enumerate(zip(ref.labels, frac_coord)): \n", - " # print(i, label, fcoord)\n", - " # # sites, kind = space_group.equivalent_sites(fcoord)\n", - " # # if label == \"Br\":\n", - " # # print(frac_coord)\n", - " # print(kind)\n", - " cart_coords = frac2cart_fromparam(np.array(sites), newcell.cellparam)\n", - " new_labels = [ref.labels[i] for i in kind]\n", - " writexyz(\"error_2/BOFFOS\", f\"Ref_frac_BOFFOS_{idx}.xyz\", new_labels, cart_coords)\n", - "# for site, ccord, i in zip(sites, cart_coords, kind):\n", - "# # print(site)\n", - "# print(i, ref.labels[i], site, ccord)\n", - " # # print(len(ref.labels), len(sites), len(kind))\n", - " # # for label, fcoord in zip(ref.labels, frac_coord): \n", - "\n", - " print(len(ref.labels), len(sites), len(kind))\n", - " # # print(sites, kind)\n", - " # print(\"---\")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "labels = atoms.get_chemical_symbols(),\n", - "positions = atoms.positions" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "sym_ops_cartesian" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "labels" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "positions" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# List to collect all transformed structures and their labels\n", - "all_transformed_positions = []\n", - "all_labels = []\n", - "\n", - "# Apply all symmetry operations\n", - "for rot_cart, trans_cart in sym_ops_cartesian:\n", - " transformed_positions = (rot_cart @ positions.T + trans_cart[:, np.newaxis]).T\n", - " all_transformed_positions.append(transformed_positions)\n", - " all_labels.append(labels) # Copy labels directly since symmetry operations don't alter the type of atoms\n", - "\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "sym_ops_cartesian" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "len(all_labels)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from cell2mol.read_write import writexyz" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import os" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "os." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "for idx, (lab, pos) in enumerate(zip(all_labels, all_transformed_positions)):\n", - " writexyz(\"error_2/BOFFOS\", f\"BOFFOS_symmetry_operation_{idx}.xyz\", lab[0], pos)\n", - " print(lab[0])\n", - " print(pos)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "len(all_transformed_positions)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "transformed_positions" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import matplotlib.pyplot as plt\n", - "from ase.visualize.plot import plot_atoms\n", - "plot_atoms(initial_structure)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "atoms.get_scaled_positions()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Load your initial atomic positions; assuming these are stored in an XYZ file\n", - "atoms = read(xyz_file_path, format='xyz')\n", - "\n", - "# Create the crystal structure using the symmetry of the space group\n", - "crystal_structure = crystal(symbols=atoms.get_chemical_symbols(),\n", - " basis=atoms.get_positions(),\n", - " spacegroup=space_group,\n", - " cellpar=cell)\n", - "\n", - "# # # Save the complete structure to a new XYZ file\n", - "# cell_xyz_file_path = \"error_2/BOFFOS/BOFFOS_complete_structure.xyz\"\n", - "# write(cell_xyz_file_path, crystal_structure, format='xyz')\n", - "\n", - "# print(f\"XYZ file with complete structure saved as {xyz_file_path}\")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "plot_atoms(atoms)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "plot_atoms(crystal_structure)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from ase.visualize import view\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "view(atoms)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "len(atoms)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "atoms.get_positions()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from ase import Atoms\n", - "from ase.io import read, write\n", - "from ase.spacegroup import crystal\n", - "\n", - "# Define the unit cell parameters\n", - "a = 24.369 # Lattice constant a\n", - "c = 9.748 # Lattice constant c\n", - "cell = [a, a, c, 90, 90, 120] # Rhombohedral cell parameters\n", - "spacegroup = 'R3' # Space group 'R 3'\n", - "\n", - "# Load your initial atomic positions; assuming these are stored in an XYZ file\n", - "atoms = read('path_to_your_file.xyz', format='xyz')\n", - "\n", - "# Create the crystal structure using the symmetry of the space group\n", - "crystal_structure = crystal(symbols=atoms.get_chemical_symbols(),\n", - " basis=atoms.get_positions(),\n", - " spacegroup=spacegroup,\n", - " cellpar=cell)\n", - "\n", - "# Save the complete structure to a new XYZ file\n", - "xyz_file_path = 'complete_structure.xyz'\n", - "write(xyz_file_path, crystal_structure, format='xyz')\n", - "\n", - "print(f\"XYZ file with complete structure saved as {xyz_file_path}\")\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "help(ase.io.read)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "atoms = ase.io.read(input_path)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "atoms[0]" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "atoms[59]" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "atoms._get_cell()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import ase.structure\n", - "\n", - "\n", - "ase.structur" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import ase.spacegroup\n", - "\n", - "\n", - "help(ase.spacegroup)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from ase.io import read, write\n", - "from ase.spacegroup import crystal\n", - "\n", - "# Path to your CIF file\n", - "cif_file_path = 'path_to_your_cif_file.cif'\n", - "\n", - "# Load the initial structure from CIF file\n", - "initial_structure = read(cif_file_path, format='cif')\n", - "\n", - "# Extract cell parameters and atomic positions from the CIF file\n", - "cell = initial_structure.cell.cellpar()\n", - "symbols = initial_structure.get_chemical_symbols()\n", - "positions = initial_structure.get_positions()\n", - "spacegroup = 'R3' # Space group 'R 3', make sure it matches the CIF space group if different\n", - "\n", - "# Create the crystal structure using the symmetry of the space group\n", - "crystal_structure = crystal(symbols=symbols,\n", - " basis=positions,\n", - " spacegroup=spacegroup,\n", - " cellpar=cell)\n", - "\n", - "# Save the complete structure to an XYZ file\n", - "xyz_file_path = 'complete_structure.xyz'\n", - "write(xyz_file_path, crystal_structure, format='xyz')\n", - "\n", - "print(f\"XYZ file with complete structure saved as {xyz_file_path}\")\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import numpy as np\n", - "import gemmi" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import numpy as np\n", - "import gemmi\n", - "import re\n", - "\n", - "def clean_number(string):\n", - " # Remove uncertainty parentheses\n", - " return re.sub(r'\\(.*\\)', '', string)\n", - "\n", - "def read_cif(cif_path):\n", - " doc = gemmi.cif.read_file(cif_path)\n", - " block = doc.sole_block()\n", - "\n", - " # Extract unit cell parameters with uncertainties removed\n", - " cell = gemmi.UnitCell(\n", - " float(clean_number(block.find_value('_cell_length_a'))),\n", - " float(clean_number(block.find_value('_cell_length_b'))),\n", - " float(clean_number(block.find_value('_cell_length_c'))),\n", - " float(clean_number(block.find_value('_cell_angle_alpha'))),\n", - " float(clean_number(block.find_value('_cell_angle_beta'))),\n", - " float(clean_number(block.find_value('_cell_angle_gamma')))\n", - " )\n", - "\n", - " # Extract symmetry operations\n", - " symmetry_ops = []\n", - " sym_loop = block.find_loop('_symmetry_equiv_pos_as_xyz')\n", - " for op in sym_loop:\n", - " symmetry_ops.append(op)\n", - "\n", - " return cell, symmetry_ops\n", - "\n", - "def convert_symmetry_to_cartesian(cell, symmetry_ops):\n", - " # Create transformation matrix from fractional to Cartesian\n", - " to_cartesian = np.array(cell.orthogonalization_matrix).reshape(3, 3)\n", - " to_fractional = np.linalg.inv(to_cartesian)\n", - "\n", - " cartesian_ops = []\n", - " for op in symmetry_ops:\n", - " # Parse the operation using gemmi\n", - " mat, vec = gemmi.cif.parse_symop(op)\n", - " rot_matrix_frac = np.array(mat.mat).reshape(3, 3)\n", - " trans_vector_frac = np.array(vec)\n", - "\n", - " # Convert rotation and translation to Cartesian\n", - " rot_matrix_cart = np.dot(to_cartesian, np.dot(rot_matrix_frac, to_fractional))\n", - " trans_vector_cart = np.dot(to_cartesian, trans_vector_frac)\n", - "\n", - " cartesian_ops.append((rot_matrix_cart, trans_vector_cart))\n", - "\n", - " return cartesian_ops\n", - "\n", - "# Path to the CIF file\n", - "cif_path = \"error_2/BOFFOS/BOFFOS.cif\"\n", - "\n", - "# Process the CIF file\n", - "cell, symmetry_ops = read_cif(cif_path)\n", - "cartesian_ops = convert_symmetry_to_cartesian(cell, symmetry_ops)\n", - "\n", - "# Print the converted Cartesian symmetry operations\n", - "for i, op in enumerate(cartesian_ops, 1):\n", - " print(f\"Operation {i}: Rotation Matrix\\n{op[0]}\\nTranslation Vector\\n{op[1]}\\n\")\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "gemmi" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "cell2mol", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.10.6" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} diff --git a/cell2mol/test/error_2/APRCOB.search6.cif b/cell2mol/test/error_2/APRCOB.search6.cif deleted file mode 100755 index a98d684fc..000000000 --- a/cell2mol/test/error_2/APRCOB.search6.cif +++ /dev/null @@ -1,112 +0,0 @@ - -####################################################################### -# -# Cambridge Crystallographic Data Centre -# CCDC -# -####################################################################### -# -# If this CIF has been generated from an entry in the Cambridge -# Structural Database, then it will include bibliographic, chemical, -# crystal, experimental, refinement or atomic coordinate data resulting -# from the CCDC's data processing and validation procedures. -# -####################################################################### - -data_CSD_CIF_APRCOB -_audit_creation_date 1971-12-31 -_audit_creation_method CSD-ConQuest-V1 -_database_code_CSD APRCOB -_database_code_depnum_ccdc_archive 'CCDC 1103373' -_chemical_formula_sum 'C6 H14 Br1 Co1 N4 O4' -_chemical_formula_moiety -; -C6 H14 Co1 N4 O4 1+,Br1 1- -; -_journal_coden_Cambridge 9 -_journal_volume 8 -_journal_year 1969 -_journal_page_first 1911 -_journal_name_full 'Inorg.Chem. ' -loop_ -_publ_author_name -"C.F.Liu" -"J.A.Ibers" -_chemical_name_systematic -; -(-)~546~-cis,trans,cis-bis(Diaminopropionato)-cobalt(iii) bromide -; -_cell_volume 520.567 -_exptl_crystal_density_diffrn 2.21 -_diffrn_ambient_temperature ? -_diffrn_special_details -; -The study was carried out at room temperature,in the range 283-303K - -; -#These two values have been output from a single CSD field. -_refine_ls_R_factor_gt 0.07 -_refine_ls_wR_factor_gt 0.07 -_symmetry_cell_setting orthorhombic -_symmetry_space_group_name_H-M 'P 21 21 2' -_symmetry_Int_Tables_number 18 -loop_ -_symmetry_equiv_pos_site_id -_symmetry_equiv_pos_as_xyz -1 x,y,z -2 1/2+x,1/2-y,-z -3 1/2-x,1/2+y,-z -4 -x,-y,z -_cell_length_a 11.76(2) -_cell_length_b 7.49(2) -_cell_length_c 5.91(2) -_cell_angle_alpha 90 -_cell_angle_beta 90 -_cell_angle_gamma 90 -_cell_formula_units_Z 2 -loop_ -_atom_type_symbol -_atom_type_radius_bond -C 0.68 -H 0.20 -Br 1.09 -Co 1.26 -N 0.68 -O 0.68 -loop_ -_atom_site_label -_atom_site_type_symbol -_atom_site_fract_x -_atom_site_fract_y -_atom_site_fract_z -Br1 Br 0.00000 0.50000 0.37350 -Co1 Co 0.50000 0.50000 0.11710 -C1 C 0.32220 0.34650 -0.09200 -C2 C 0.36360 0.23430 0.10410 -C3 C 0.31440 0.30690 0.30690 -H1 H 0.51600 0.18200 0.26000 -H2 H 0.52200 0.18300 -0.02500 -H3 H 0.32100 0.59800 0.32200 -H4 H 0.41000 0.50000 0.50700 -H5 H 0.33600 0.09700 0.08700 -H6 H 0.22300 0.32900 0.28600 -H7 H 0.32900 0.22000 0.45100 -N1 N 0.48530 0.24100 0.11110 -N2 N 0.37610 0.49210 0.34340 -O1 O 0.38710 0.48730 -0.10680 -O2 O 0.23900 0.31410 -0.20470 -N1C N 0.51470 0.75900 0.11110 -N2C N 0.62390 0.50790 0.34340 -O1C O 0.61290 0.51270 -0.10680 -C2C C 0.63640 0.76570 0.10410 -H1C H 0.48400 0.81800 0.26000 -H2C H 0.47800 0.81700 -0.02500 -C3C C 0.68560 0.69310 0.30690 -H3C H 0.67900 0.40200 0.32200 -H4C H 0.59000 0.50000 0.50700 -C1C C 0.67780 0.65350 -0.09200 -H5C H 0.66400 0.90300 0.08700 -H6C H 0.77700 0.67100 0.28600 -H7C H 0.67100 0.78000 0.45100 -O2C O 0.76100 0.68590 -0.20470 -#END diff --git a/cell2mol/test/error_2/APRCOB/APRCOB.cif b/cell2mol/test/error_2/APRCOB/APRCOB.cif deleted file mode 100644 index d019e4e84..000000000 --- a/cell2mol/test/error_2/APRCOB/APRCOB.cif +++ /dev/null @@ -1,150 +0,0 @@ - -####################################################################### -# -# Cambridge Crystallographic Data Centre -# CCDC -# -####################################################################### -# -# If this CIF has been generated from an entry in the Cambridge -# Structural Database, then it will include bibliographic, chemical, -# crystal, experimental, refinement or atomic coordinate data resulting -# from the CCDC's data processing and validation procedures. -# -####################################################################### - -data_CSD_CIF_APRCOB -_audit_creation_date 1971-12-31 -_audit_creation_method CSD-ConQuest-V1 -_database_code_CSD APRCOB -_database_code_depnum_ccdc_archive 'CCDC 1103373' -_chemical_formula_sum 'C6 H14 Br1 Co1 N4 O4' -_chemical_formula_moiety -; -C6 H14 Co1 N4 O4 1+,Br1 1- -; -_journal_coden_Cambridge 9 -_journal_volume 8 -_journal_year 1969 -_journal_page_first 1911 -_journal_name_full 'Inorg.Chem. ' -loop_ -_publ_author_name -"C.F.Liu" -"J.A.Ibers" -_chemical_name_systematic -; -(-)~546~-cis,trans,cis-bis(Diaminopropionato)-cobalt(iii) bromide -; -_cell_volume 520.567 -_exptl_crystal_density_diffrn 2.21 -_diffrn_ambient_temperature ? -_diffrn_special_details -; -The study was carried out at room temperature,in the range 283-303K - -; -#These two values have been output from a single CSD field. -_refine_ls_R_factor_gt 0.07 -_refine_ls_wR_factor_gt 0.07 -_symmetry_cell_setting orthorhombic -_symmetry_space_group_name_H-M 'P 21 21 2' -_symmetry_Int_Tables_number 18 -loop_ -_symmetry_equiv_pos_site_id -_symmetry_equiv_pos_as_xyz -1 x,y,z -2 1/2+x,1/2-y,-z -3 1/2-x,1/2+y,-z -4 -x,-y,z -_cell_length_a 11.76(2) -_cell_length_b 7.49(2) -_cell_length_c 5.91(2) -_cell_angle_alpha 90 -_cell_angle_beta 90 -_cell_angle_gamma 90 -_cell_formula_units_Z 2 -loop_ -_atom_type_symbol -_atom_type_radius_bond -C 0.68 -H 0.20 -Br 1.09 -Co 1.26 -N 0.68 -O 0.68 -loop_ -_atom_site_label -_atom_site_type_symbol -_atom_site_fract_x -_atom_site_fract_y -_atom_site_fract_z -Br1 Br 0.00000 0.50000 0.37350 -Co1 Co 0.50000 0.50000 0.11710 -C1 C 0.32220 0.34650 -0.09200 -C2 C 0.36360 0.23430 0.10410 -C3 C 0.31440 0.30690 0.30690 -H1 H 0.51600 0.18200 0.26000 -H2 H 0.52200 0.18300 -0.02500 -H3 H 0.32100 0.59800 0.32200 -H4 H 0.41000 0.50000 0.50700 -H5 H 0.33600 0.09700 0.08700 -H6 H 0.22300 0.32900 0.28600 -H7 H 0.32900 0.22000 0.45100 -N1 N 0.48530 0.24100 0.11110 -N2 N 0.37610 0.49210 0.34340 -O1 O 0.38710 0.48730 -0.10680 -O2 O 0.23900 0.31410 -0.20470 -N1C N 0.51470 0.75900 0.11110 -N2C N 0.62390 0.50790 0.34340 -O1C O 0.61290 0.51270 -0.10680 -C2C C 0.63640 0.76570 0.10410 -H1C H 0.48400 0.81800 0.26000 -H2C H 0.47800 0.81700 -0.02500 -C3C C 0.68560 0.69310 0.30690 -H3C H 0.67900 0.40200 0.32200 -H4C H 0.59000 0.50000 0.50700 -C1C C 0.67780 0.65350 -0.09200 -H5C H 0.66400 0.90300 0.08700 -H6C H 0.77700 0.67100 0.28600 -H7C H 0.67100 0.78000 0.45100 -O2C O 0.76100 0.68590 -0.20470 -loop_ -_geom_bond_atom_site_label_1 -_geom_bond_atom_site_label_2 -_geom_bond_distance -_geom_bond_site_symmetry_1 -_geom_bond_site_symmetry_2 -Co1 N1 1.948 1_555 1_555 -C1 C2 1.512 1_555 1_555 -C2 C3 1.438 1_555 1_555 -C3 H6 1.095 1_555 1_555 -H1 N1 1.049 1_555 1_555 -H2 N1 1.011 1_555 1_555 -H3 N2 1.032 1_555 1_555 -H4 N2 1.048 1_555 1_555 -H5 C2 1.083 1_555 1_555 -H7 C3 1.086 1_555 1_555 -N1 C2 1.433 1_555 1_555 -N2 Co1 1.979 1_555 1_555 -O1 Co1 1.877 1_555 1_555 -O2 C1 1.208 1_555 1_555 -N1C Co1 1.948 1_555 1_555 -N2C Co1 1.979 1_555 1_555 -O1C Co1 1.877 1_555 1_555 -C2C N1C 1.433 1_555 1_555 -H1C N1C 1.049 1_555 1_555 -H2C N1C 1.011 1_555 1_555 -C3C N2C 1.580 1_555 1_555 -H3C N2C 1.032 1_555 1_555 -H4C N2C 1.048 1_555 1_555 -C1C O1C 1.305 1_555 1_555 -H5C C2C 1.083 1_555 1_555 -H6C C3C 1.095 1_555 1_555 -H7C C3C 1.086 1_555 1_555 -O2C C1C 1.208 1_555 1_555 -C1 O1 1.305 1_555 1_555 -C3 N2 1.580 1_555 1_555 -C2C C3C 1.438 1_555 1_555 -C2C C1C 1.512 1_555 1_555 -#END diff --git a/cell2mol/test/error_2/APRCOB/APRCOB.info b/cell2mol/test/error_2/APRCOB/APRCOB.info deleted file mode 100644 index a5a0c65b6..000000000 --- a/cell2mol/test/error_2/APRCOB/APRCOB.info +++ /dev/null @@ -1,128 +0,0 @@ -CIF2CELL 2.0.0 -2024-05-07 16:25 -Output for None ((-)~546~-cis,trans,cis-bis(Diaminopropionato)-cobalt(iii) bromide) -CIF file exported from Cambridge Structural Database. -Database reference code: APRCOB. - BIBLIOGRAPHIC INFORMATION -C.F.Liu and J.A.Ibers, Inorg.Chem. 8, 1911- (1969) - INPUT CELL INFORMATION -Symmetry information: -Orthorhombic crystal system. -Space group number : 18 -Hall symbol : P 2 2ab -Hermann-Mauguin symbol : P21212 - -Lattice parameters: - a b c - 11.7600000 7.4900000 5.9100000 - alpha beta gamma - 90.0000000 90.0000000 90.0000000 -Representative sites : -Atom x y z -Br 0.0000000 0.5000000 0.3735000 -Co 0.5000000 0.5000000 0.1171000 -C 0.3222000 0.3465000 -0.0920000 -C 0.3636000 0.2343000 0.1041000 -C 0.3144000 0.3069000 0.3069000 -H 0.5160000 0.1820000 0.2600000 -H 0.5220000 0.1830000 -0.0250000 -H 0.3210000 0.5980000 0.3220000 -H 0.4100000 0.5000000 0.5070000 -H 0.3360000 0.0970000 0.0870000 -H 0.2230000 0.3290000 0.2860000 -H 0.3290000 0.2200000 0.4510000 -N 0.4853000 0.2410000 0.1111000 -N 0.3761000 0.4921000 0.3434000 -O 0.3871000 0.4873000 -0.1068000 -O 0.2390000 0.3141000 -0.2047000 -N 0.5147000 0.7590000 0.1111000 -N 0.6239000 0.5079000 0.3434000 -O 0.6129000 0.5127000 -0.1068000 -C 0.6364000 0.7657000 0.1041000 -H 0.4840000 0.8180000 0.2600000 -H 0.4780000 0.8170000 -0.0250000 -C 0.6856000 0.6931000 0.3069000 -H 0.6790000 0.4020000 0.3220000 -H 0.5900000 0.5000000 0.5070000 -C 0.6778000 0.6535000 -0.0920000 -H 0.6640000 0.9030000 0.0870000 -H 0.7770000 0.6710000 0.2860000 -H 0.6710000 0.7800000 0.4510000 -O 0.7610000 0.6859000 -0.2047000 - - OUTPUT CELL INFORMATION -Symmetry information: -Orthorhombic crystal system. -Space group number : 18 -Hall symbol : P 2 2ab -Hermann-Mauguin symbol : P21212 - -Bravais lattice vectors : - 11.7600000 0.0000000 0.0000000 - 0.0000000 7.4900000 0.0000000 - 0.0000000 0.0000000 5.9100000 -All sites, (cartesian coordinates): -Atom x y z -Br 0.0000000 3.7450000 2.2073850 -Br 5.8800000 0.0000000 3.7026150 -Co 5.8800000 3.7450000 0.6920610 -Co 0.0000000 0.0000000 5.2179390 -C 3.7890720 2.5952850 5.3662800 -C 2.0909280 6.3402850 0.5437200 -C 9.6690720 1.1497150 0.5437200 -C 7.9709280 4.8947150 5.3662800 -C 4.2759360 1.7549070 0.6152310 -C 1.6040640 5.4999070 5.2947690 -C 10.1559360 1.9900930 5.2947690 -C 7.4840640 5.7350930 0.6152310 -C 3.6973440 2.2986810 1.8137790 -C 2.1826560 6.0436810 4.0962210 -C 9.5773440 1.4463190 4.0962210 -C 8.0626560 5.1913190 1.8137790 -H 6.0681600 1.3631800 1.5366000 -H 11.5718400 5.1081800 4.3734000 -H 0.1881600 2.3818200 4.3734000 -H 5.6918400 6.1268200 1.5366000 -H 6.1387200 1.3706700 5.7622500 -H 11.5012800 5.1156700 0.1477500 -H 0.2587200 2.3743300 0.1477500 -H 5.6212800 6.1193300 5.7622500 -H 3.7749600 4.4790200 1.9030200 -H 2.1050400 0.7340200 4.0069800 -H 9.6549600 6.7559800 4.0069800 -H 7.9850400 3.0109800 1.9030200 -H 4.8216000 3.7450000 2.9963700 -H 1.0584000 0.0000000 2.9136300 -H 10.7016000 0.0000000 2.9136300 -H 6.9384000 3.7450000 2.9963700 -H 3.9513600 0.7265300 0.5141700 -H 1.9286400 4.4715300 5.3958300 -H 9.8313600 3.0184700 5.3958300 -H 7.8086400 6.7634700 0.5141700 -H 2.6224800 2.4642100 1.6902600 -H 3.2575200 6.2092100 4.2197400 -H 8.5024800 1.2807900 4.2197400 -H 9.1375200 5.0257900 1.6902600 -H 3.8690400 1.6478000 2.6654100 -H 2.0109600 5.3928000 3.2445900 -H 9.7490400 2.0972000 3.2445900 -H 7.8909600 5.8422000 2.6654100 -N 5.7071280 1.8050900 0.6566010 -N 0.1728720 5.5500900 5.2533990 -N 11.5871280 1.9399100 5.2533990 -N 6.0528720 5.6849100 0.6566010 -N 4.4229360 3.6858290 2.0294940 -N 1.4570640 7.4308290 3.8805060 -N 10.3029360 0.0591710 3.8805060 -N 7.3370640 3.8041710 2.0294940 -O 4.5522960 3.6498770 5.2788120 -O 1.3277040 7.3948770 0.6311880 -O 10.4322960 0.0951230 0.6311880 -O 7.2077040 3.8401230 5.2788120 -O 2.8106400 2.3526090 4.7002230 -O 3.0693600 6.0976090 1.2097770 -O 8.6906400 1.3923910 1.2097770 -O 8.9493600 5.1373910 4.7002230 - -Unit cell volume : 520.5669840 A^3 -Unit cell density : 1.3255839 u/A^3 = 14.8543219 g/cm^3 diff --git a/cell2mol/test/error_2/APRCOB/Cell_APRCOB.cell b/cell2mol/test/error_2/APRCOB/Cell_APRCOB.cell deleted file mode 100644 index 398de4207..000000000 Binary files a/cell2mol/test/error_2/APRCOB/Cell_APRCOB.cell and /dev/null differ diff --git a/cell2mol/test/error_2/APRCOB/Cell_APRCOB_ase.xyz b/cell2mol/test/error_2/APRCOB/Cell_APRCOB_ase.xyz deleted file mode 100644 index a61f5aac9..000000000 --- a/cell2mol/test/error_2/APRCOB/Cell_APRCOB_ase.xyz +++ /dev/null @@ -1,62 +0,0 @@ -60 -0 1 -Br 0.000000 3.745000 2.207385 -Br 5.880000 0.000000 3.702615 -Co 5.880000 3.745000 0.692061 -Co 0.000000 0.000000 5.217939 -C 3.789072 2.595285 5.366280 -C 9.669072 1.149715 0.543720 -C 2.090928 6.340285 0.543720 -C 7.970928 4.894715 5.366280 -C 4.275936 1.754907 0.615231 -C 10.155936 1.990093 5.294769 -C 1.604064 5.499907 5.294769 -C 7.484064 5.735093 0.615231 -C 3.697344 2.298681 1.813779 -C 9.577344 1.446319 4.096221 -C 2.182656 6.043681 4.096221 -C 8.062656 5.191319 1.813779 -H 6.068160 1.363180 1.536600 -H 0.188160 2.381820 4.373400 -H 11.571840 5.108180 4.373400 -H 5.691840 6.126820 1.536600 -H 6.138720 1.370670 5.762250 -H 0.258720 2.374330 0.147750 -H 11.501280 5.115670 0.147750 -H 5.621280 6.119330 5.762250 -H 3.774960 4.479020 1.903020 -H 9.654960 6.755980 4.006980 -H 2.105040 0.734020 4.006980 -H 7.985040 3.010980 1.903020 -H 4.821600 3.745000 2.996370 -H 10.701600 0.000000 2.913630 -H 1.058400 0.000000 2.913630 -H 6.938400 3.745000 2.996370 -H 3.951360 0.726530 0.514170 -H 9.831360 3.018470 5.395830 -H 1.928640 4.471530 5.395830 -H 7.808640 6.763470 0.514170 -H 2.622480 2.464210 1.690260 -H 8.502480 1.280790 4.219740 -H 3.257520 6.209210 4.219740 -H 9.137520 5.025790 1.690260 -H 3.869040 1.647800 2.665410 -H 9.749040 2.097200 3.244590 -H 2.010960 5.392800 3.244590 -H 7.890960 5.842200 2.665410 -N 5.707128 1.805090 0.656601 -N 11.587128 1.939910 5.253399 -N 0.172872 5.550090 5.253399 -N 6.052872 5.684910 0.656601 -N 4.422936 3.685829 2.029494 -N 10.302936 0.059171 3.880506 -N 1.457064 7.430829 3.880506 -N 7.337064 3.804171 2.029494 -O 4.552296 3.649877 5.278812 -O 10.432296 0.095123 0.631188 -O 1.327704 7.394877 0.631188 -O 7.207704 3.840123 5.278812 -O 2.810640 2.352609 4.700223 -O 8.690640 1.392391 1.209777 -O 3.069360 6.097609 1.209777 -O 8.949360 5.137391 4.700223 diff --git a/cell2mol/test/error_2/APRCOB/Cell_APRCOB_cif2cell.xyz b/cell2mol/test/error_2/APRCOB/Cell_APRCOB_cif2cell.xyz deleted file mode 100644 index afa3efce2..000000000 --- a/cell2mol/test/error_2/APRCOB/Cell_APRCOB_cif2cell.xyz +++ /dev/null @@ -1,62 +0,0 @@ -60 -0 1 -Br 0.000000 3.745000 2.207385 -Br 5.880000 0.000000 3.702615 -Co 5.880000 3.745000 0.692061 -Co 0.000000 0.000000 5.217939 -C 3.789072 2.595285 5.366280 -C 2.090928 6.340285 0.543720 -C 9.669072 1.149715 0.543720 -C 7.970928 4.894715 5.366280 -C 4.275936 1.754907 0.615231 -C 1.604064 5.499907 5.294769 -C 10.155936 1.990093 5.294769 -C 7.484064 5.735093 0.615231 -C 3.697344 2.298681 1.813779 -C 2.182656 6.043681 4.096221 -C 9.577344 1.446319 4.096221 -C 8.062656 5.191319 1.813779 -H 6.068160 1.363180 1.536600 -H 11.571840 5.108180 4.373400 -H 0.188160 2.381820 4.373400 -H 5.691840 6.126820 1.536600 -H 6.138720 1.370670 5.762250 -H 11.501280 5.115670 0.147750 -H 0.258720 2.374330 0.147750 -H 5.621280 6.119330 5.762250 -H 3.774960 4.479020 1.903020 -H 2.105040 0.734020 4.006980 -H 9.654960 6.755980 4.006980 -H 7.985040 3.010980 1.903020 -H 4.821600 3.745000 2.996370 -H 1.058400 0.000000 2.913630 -H 10.701600 0.000000 2.913630 -H 6.938400 3.745000 2.996370 -H 3.951360 0.726530 0.514170 -H 1.928640 4.471530 5.395830 -H 9.831360 3.018470 5.395830 -H 7.808640 6.763470 0.514170 -H 2.622480 2.464210 1.690260 -H 3.257520 6.209210 4.219740 -H 8.502480 1.280790 4.219740 -H 9.137520 5.025790 1.690260 -H 3.869040 1.647800 2.665410 -H 2.010960 5.392800 3.244590 -H 9.749040 2.097200 3.244590 -H 7.890960 5.842200 2.665410 -N 5.707128 1.805090 0.656601 -N 0.172872 5.550090 5.253399 -N 11.587128 1.939910 5.253399 -N 6.052872 5.684910 0.656601 -N 4.422936 3.685829 2.029494 -N 1.457064 7.430829 3.880506 -N 10.302936 0.059171 3.880506 -N 7.337064 3.804171 2.029494 -O 4.552296 3.649877 5.278812 -O 1.327704 7.394877 0.631188 -O 10.432296 0.095123 0.631188 -O 7.207704 3.840123 5.278812 -O 2.810640 2.352609 4.700223 -O 3.069360 6.097609 1.209777 -O 8.690640 1.392391 1.209777 -O 8.949360 5.137391 4.700223 diff --git a/cell2mol/test/error_2/APRCOB/Mol_APRCOB_0.xyz b/cell2mol/test/error_2/APRCOB/Mol_APRCOB_0.xyz deleted file mode 100644 index 510f7aa50..000000000 --- a/cell2mol/test/error_2/APRCOB/Mol_APRCOB_0.xyz +++ /dev/null @@ -1,3 +0,0 @@ -1 -0 1 -Br 0.000000 3.745000 2.207385 diff --git a/cell2mol/test/error_2/APRCOB/Mol_APRCOB_1.xyz b/cell2mol/test/error_2/APRCOB/Mol_APRCOB_1.xyz deleted file mode 100644 index f0a33cf2f..000000000 --- a/cell2mol/test/error_2/APRCOB/Mol_APRCOB_1.xyz +++ /dev/null @@ -1,3 +0,0 @@ -1 -0 1 -Br 5.880000 0.000000 3.702615 diff --git a/cell2mol/test/error_2/APRCOB/Mol_APRCOB_2.xyz b/cell2mol/test/error_2/APRCOB/Mol_APRCOB_2.xyz deleted file mode 100644 index 79ae23eb7..000000000 --- a/cell2mol/test/error_2/APRCOB/Mol_APRCOB_2.xyz +++ /dev/null @@ -1,31 +0,0 @@ -29 -0 1 -Co 11.760000 0.000000 5.217939 -C 9.577344 1.446319 4.096221 -C 13.364064 -1.990093 5.294769 -C 9.669072 1.149715 6.453720 -H 13.688640 -3.018470 5.395830 -H 13.770960 -2.097200 3.244590 -H 8.502480 1.280790 4.219740 -H 10.701600 0.000000 2.913630 -H 11.571840 -2.381820 4.373400 -H 9.654960 -0.734020 4.006980 -H 11.501280 -2.374330 6.057750 -N 11.932872 -1.939910 5.253399 -N 10.302936 0.059171 3.880506 -O 10.432296 0.095123 6.541188 -O 8.690640 1.392391 7.119777 -N 11.587128 1.939910 5.253399 -N 13.217064 -0.059171 3.880506 -O 13.087704 -0.095123 6.541188 -C 10.155936 1.990093 5.294769 -H 9.831360 3.018470 5.395830 -H 9.749040 2.097200 3.244590 -C 13.850928 -1.149715 6.453720 -H 15.017520 -1.280790 4.219740 -H 12.818400 0.000000 2.913630 -C 13.942656 -1.446319 4.096221 -H 11.948160 2.381820 4.373400 -H 13.865040 0.734020 4.006980 -H 12.018720 2.374330 6.057750 -O 14.829360 -1.392391 7.119777 diff --git a/cell2mol/test/error_2/APRCOB/Mol_APRCOB_3.xyz b/cell2mol/test/error_2/APRCOB/Mol_APRCOB_3.xyz deleted file mode 100644 index 47dae7689..000000000 --- a/cell2mol/test/error_2/APRCOB/Mol_APRCOB_3.xyz +++ /dev/null @@ -1,31 +0,0 @@ -29 -0 1 -Co 5.880000 3.745000 0.692061 -C 3.789072 2.595285 -0.543720 -C 4.275936 1.754907 0.615231 -C 3.697344 2.298681 1.813779 -H 6.068160 1.363180 1.536600 -H 6.138720 1.370670 -0.147750 -H 3.774960 4.479020 1.903020 -H 4.821600 3.745000 2.996370 -H 3.951360 0.726530 0.514170 -H 2.622480 2.464210 1.690260 -H 3.869040 1.647800 2.665410 -N 5.707128 1.805090 0.656601 -N 4.422936 3.685829 2.029494 -O 4.552296 3.649877 -0.631188 -O 2.810640 2.352609 -1.209777 -N 6.052872 5.684910 0.656601 -N 7.337064 3.804171 2.029494 -O 7.207704 3.840123 -0.631188 -C 7.484064 5.735093 0.615231 -H 5.691840 6.126820 1.536600 -H 5.621280 6.119330 -0.147750 -C 8.062656 5.191319 1.813779 -H 7.985040 3.010980 1.903020 -H 6.938400 3.745000 2.996370 -C 7.970928 4.894715 -0.543720 -H 7.808640 6.763470 0.514170 -H 9.137520 5.025790 1.690260 -H 7.890960 5.842200 2.665410 -O 8.949360 5.137391 -1.209777 diff --git a/cell2mol/test/error_2/APRCOB/Ref_All_APRCOB.xyz b/cell2mol/test/error_2/APRCOB/Ref_All_APRCOB.xyz deleted file mode 100644 index 15d4e128b..000000000 --- a/cell2mol/test/error_2/APRCOB/Ref_All_APRCOB.xyz +++ /dev/null @@ -1,32 +0,0 @@ -30 -0 1 -Br 0.000000 3.745000 2.207385 -Co 5.880000 3.745000 0.692061 -C 3.789072 2.595285 -0.543720 -C 4.275936 1.754907 0.615231 -C 3.697344 2.298681 1.813779 -H 6.068160 1.363180 1.536600 -H 6.138720 1.370670 -0.147750 -H 3.774960 4.479020 1.903020 -H 4.821600 3.745000 2.996370 -H 3.951360 0.726530 0.514170 -H 2.622480 2.464210 1.690260 -H 3.869040 1.647800 2.665410 -N 5.707128 1.805090 0.656601 -N 4.422936 3.685829 2.029494 -O 4.552296 3.649877 -0.631188 -O 2.810640 2.352609 -1.209777 -N 6.052872 5.684910 0.656601 -N 7.337064 3.804171 2.029494 -O 7.207704 3.840123 -0.631188 -C 7.484064 5.735093 0.615231 -H 5.691840 6.126820 1.536600 -H 5.621280 6.119330 -0.147750 -C 8.062656 5.191319 1.813779 -H 7.985040 3.010980 1.903020 -H 6.938400 3.745000 2.996370 -C 7.970928 4.894715 -0.543720 -H 7.808640 6.763470 0.514170 -H 9.137520 5.025790 1.690260 -H 7.890960 5.842200 2.665410 -O 8.949360 5.137391 -1.209777 diff --git a/cell2mol/test/error_2/APRCOB/Ref_All_frac_APRCOB.xyz b/cell2mol/test/error_2/APRCOB/Ref_All_frac_APRCOB.xyz deleted file mode 100644 index c1449f131..000000000 --- a/cell2mol/test/error_2/APRCOB/Ref_All_frac_APRCOB.xyz +++ /dev/null @@ -1,32 +0,0 @@ -30 -0 1 -Br 0.000000 0.500000 0.373500 -Co 0.500000 0.500000 0.117100 -C 0.322200 0.346500 -0.092000 -C 0.363600 0.234300 0.104100 -C 0.314400 0.306900 0.306900 -H 0.516000 0.182000 0.260000 -H 0.522000 0.183000 -0.025000 -H 0.321000 0.598000 0.322000 -H 0.410000 0.500000 0.507000 -H 0.336000 0.097000 0.087000 -H 0.223000 0.329000 0.286000 -H 0.329000 0.220000 0.451000 -N 0.485300 0.241000 0.111100 -N 0.376100 0.492100 0.343400 -O 0.387100 0.487300 -0.106800 -O 0.239000 0.314100 -0.204700 -N 0.514700 0.759000 0.111100 -N 0.623900 0.507900 0.343400 -O 0.612900 0.512700 -0.106800 -C 0.636400 0.765700 0.104100 -H 0.484000 0.818000 0.260000 -H 0.478000 0.817000 -0.025000 -C 0.685600 0.693100 0.306900 -H 0.679000 0.402000 0.322000 -H 0.590000 0.500000 0.507000 -C 0.677800 0.653500 -0.092000 -H 0.664000 0.903000 0.087000 -H 0.777000 0.671000 0.286000 -H 0.671000 0.780000 0.451000 -O 0.761000 0.685900 -0.204700 diff --git a/cell2mol/test/error_2/APRCOB/Ref_Cell_APRCOB.cell b/cell2mol/test/error_2/APRCOB/Ref_Cell_APRCOB.cell deleted file mode 100644 index e59983535..000000000 Binary files a/cell2mol/test/error_2/APRCOB/Ref_Cell_APRCOB.cell and /dev/null differ diff --git a/cell2mol/test/error_2/APRCOB/Ref_Molecule_APRCOB_0.xyz b/cell2mol/test/error_2/APRCOB/Ref_Molecule_APRCOB_0.xyz deleted file mode 100644 index 47dae7689..000000000 --- a/cell2mol/test/error_2/APRCOB/Ref_Molecule_APRCOB_0.xyz +++ /dev/null @@ -1,31 +0,0 @@ -29 -0 1 -Co 5.880000 3.745000 0.692061 -C 3.789072 2.595285 -0.543720 -C 4.275936 1.754907 0.615231 -C 3.697344 2.298681 1.813779 -H 6.068160 1.363180 1.536600 -H 6.138720 1.370670 -0.147750 -H 3.774960 4.479020 1.903020 -H 4.821600 3.745000 2.996370 -H 3.951360 0.726530 0.514170 -H 2.622480 2.464210 1.690260 -H 3.869040 1.647800 2.665410 -N 5.707128 1.805090 0.656601 -N 4.422936 3.685829 2.029494 -O 4.552296 3.649877 -0.631188 -O 2.810640 2.352609 -1.209777 -N 6.052872 5.684910 0.656601 -N 7.337064 3.804171 2.029494 -O 7.207704 3.840123 -0.631188 -C 7.484064 5.735093 0.615231 -H 5.691840 6.126820 1.536600 -H 5.621280 6.119330 -0.147750 -C 8.062656 5.191319 1.813779 -H 7.985040 3.010980 1.903020 -H 6.938400 3.745000 2.996370 -C 7.970928 4.894715 -0.543720 -H 7.808640 6.763470 0.514170 -H 9.137520 5.025790 1.690260 -H 7.890960 5.842200 2.665410 -O 8.949360 5.137391 -1.209777 diff --git a/cell2mol/test/error_2/APRCOB/Ref_Molecule_APRCOB_1.xyz b/cell2mol/test/error_2/APRCOB/Ref_Molecule_APRCOB_1.xyz deleted file mode 100644 index 510f7aa50..000000000 --- a/cell2mol/test/error_2/APRCOB/Ref_Molecule_APRCOB_1.xyz +++ /dev/null @@ -1,3 +0,0 @@ -1 -0 1 -Br 0.000000 3.745000 2.207385 diff --git a/cell2mol/test/error_2/APRCOB/Ref_Molecule_APRCOB_frac_0.xyz b/cell2mol/test/error_2/APRCOB/Ref_Molecule_APRCOB_frac_0.xyz deleted file mode 100644 index e237b9f22..000000000 --- a/cell2mol/test/error_2/APRCOB/Ref_Molecule_APRCOB_frac_0.xyz +++ /dev/null @@ -1,31 +0,0 @@ -29 -0 1 -Co 0.500000 0.500000 0.117100 -C 0.322200 0.346500 -0.092000 -C 0.363600 0.234300 0.104100 -C 0.314400 0.306900 0.306900 -H 0.516000 0.182000 0.260000 -H 0.522000 0.183000 -0.025000 -H 0.321000 0.598000 0.322000 -H 0.410000 0.500000 0.507000 -H 0.336000 0.097000 0.087000 -H 0.223000 0.329000 0.286000 -H 0.329000 0.220000 0.451000 -N 0.485300 0.241000 0.111100 -N 0.376100 0.492100 0.343400 -O 0.387100 0.487300 -0.106800 -O 0.239000 0.314100 -0.204700 -N 0.514700 0.759000 0.111100 -N 0.623900 0.507900 0.343400 -O 0.612900 0.512700 -0.106800 -C 0.636400 0.765700 0.104100 -H 0.484000 0.818000 0.260000 -H 0.478000 0.817000 -0.025000 -C 0.685600 0.693100 0.306900 -H 0.679000 0.402000 0.322000 -H 0.590000 0.500000 0.507000 -C 0.677800 0.653500 -0.092000 -H 0.664000 0.903000 0.087000 -H 0.777000 0.671000 0.286000 -H 0.671000 0.780000 0.451000 -O 0.761000 0.685900 -0.204700 diff --git a/cell2mol/test/error_2/APRCOB/Ref_Molecule_APRCOB_frac_1.xyz b/cell2mol/test/error_2/APRCOB/Ref_Molecule_APRCOB_frac_1.xyz deleted file mode 100644 index be9b458d4..000000000 --- a/cell2mol/test/error_2/APRCOB/Ref_Molecule_APRCOB_frac_1.xyz +++ /dev/null @@ -1,3 +0,0 @@ -1 -0 1 -Br 0.000000 0.500000 0.373500 diff --git a/cell2mol/test/error_2/APRCOB/cell2mol.out b/cell2mol/test/error_2/APRCOB/cell2mol.out deleted file mode 100644 index 3a316369f..000000000 --- a/cell2mol/test/error_2/APRCOB/cell2mol.out +++ /dev/null @@ -1,4158 +0,0 @@ -cell2mol version 2.0 -INITIATING cell object from info path: /Users/ycho/cell2mol/cell2mol/test/error_2/APRCOB/APRCOB.info -Debug level: 2 -Checking atomic labels and coordinates -Atomic labels: 60 from ase 60 from cif2cell -Cartesian coordinates: 60 from ase 60 from cif2cell -######################################### - GETREFS: Generate reference molecules -######################################### -GETREFS: found 2 reference molecules -GETREFS: ['H14-C6-N4-O4-Co', 'Br'] -GETREFS: [------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 29 - Formula = H14-C6-N4-O4-Co - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Number of Ligands = 2 - Number of Metals = 1 ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = Br - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES ---------------------------------------------------- -] -GETREFS: working with H14-C6-N4-O4-Co - -LIGAND.SPLIT_LIGAND: splitting H7-C3-N2-O2 into groups -LIGAND.SPLIT_LIGAND: self.indices=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13] -LIGAND.SPLIT_LIGAND: connected_idx=[0, 1, 2, 3] -LIGAND.SPLIT_LIGAND: conn_labels=['N', 'N', 'O', 'C'] -SPILT_SPECIES: Laplacian lap=array([[-1, 0, 0, 1], - [ 0, 0, 0, 0], - [ 0, 0, 0, 0], - [ 1, 0, 0, -1]]) -SPILT_SPECIES: graph=<4x4 sparse matrix of type '' - with 4 stored elements in Compressed Sparse Row format> -LIGAND.SPLIT_LIGAND: blocklist=[[0, 3], [2], [1]] -LIGAND.SPLIT_LIGAND: block=[0, 3] -EXTRACT_FROM_LIST. received: entrylist=[0, 3] old_array=[0, 1, 2, 3] -EXTRACT_FROM_LIST. received: idx=0 val=0 old_array[val]=0 -EXTRACT_FROM_LIST. received: idx=1 val=3 old_array[val]=3 -EXTRACT_FROM_LIST. new_array=array([0, 3], dtype=object) -LIGAND.SPLIT_LIGAND: gr_indices=[0, 3] -EXTRACT_FROM_LIST. received: entrylist=[0, 3] old_array=['N', 'N', 'O', 'C'] -EXTRACT_FROM_LIST. received: idx=0 val=0 old_array[val]='N' -EXTRACT_FROM_LIST. received: idx=1 val=3 old_array[val]='C' -EXTRACT_FROM_LIST. new_array=array(['N', 'C'], dtype=object) -Entering COORD_CORR_NONHAPTIC: - Coordinating atom label=N with mconnec=1, group index 0 - evaluating coordination with metal Co - -------------- Cell2mol METAL Object -------------- - Version = 0.1 - Type = atom - Sub-Type = metal - Label = Co - Atomic Number = 27 - Index in Molecule = 0 - Metal Adjacency (mconnec) = 8 - Regular Adjacencies (connec) = 8 ----------------------------------------------------- - -ADD_ATOM: Metalist length 1 -ADD_ATOM: Ligand Atoms 14 -ADD_ATOM: site= 0 -ADD_ATOM: target ligand atom N -ADD_ATOM: evaluating apos=array([6.052872, 5.68491 , 0.656601]) and tgt.coord=[5.88, 3.745, 0.692061] -ADD_ATOM: Chosen Metal index 0. H is added at site 0 - connectivity verified for atom N with ligand index 0 - Coordinating atom label=C with mconnec=1, group index 1 - evaluating coordination with metal Co - -------------- Cell2mol METAL Object -------------- - Version = 0.1 - Type = atom - Sub-Type = metal - Label = Co - Atomic Number = 27 - Index in Molecule = 0 - Metal Adjacency (mconnec) = 8 - Regular Adjacencies (connec) = 8 ----------------------------------------------------- - -ADD_ATOM: Metalist length 1 -ADD_ATOM: Ligand Atoms 14 -ADD_ATOM: site= 3 -ADD_ATOM: target ligand atom C -ADD_ATOM: evaluating apos=array([7.484064, 5.735093, 0.615231]) and tgt.coord=[5.88, 3.745, 0.692061] -ADD_ATOM: Chosen Metal index 0. H was added at site 3 but RESET due to connec=2 - correcting mconnec of atom C with ligand index 3 -ATOM.RESET_MCONN: resetting mconnec (and connec) for atom self.label='C' -ATOM.RESET_MCONN: initial self.connec=5 self.mconnec=1 -ATOM.RESET_MCONN: initial = self.adjacency=[0, 15, 21, 24, 25] self.metal_adjacency=[0] -ATOM.RESET_MCONN: initial met.connec=8 met.mconnec=8 -ATOM.RESET_MCONN: initial = met.adjacency=[2, 11, 12, 13, 15, 16, 17, 18] met.metal_adjacency=[2, 11, 12, 13, 15, 16, 17, 18] -ATOM.RESET_MCONN: resetting mconnec (and connec) for atom self.label='C' in ligadn lig_idx=3 -ATOM.RESET_MCONN: updating ligand atoms and madjnum -ATOM.RESET_MCONN: lig.natoms=14 -ATOM.RESET_MCONN: lig.labels=['N', 'N', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'O'] -ATOM.RESET_MCONN: initial lig.madjnum=array([1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]) 14 -ATOM.RESET_MCONN: updating ligand atoms and adjnum -ATOM.RESET_MCONN: initial lig.adjnum=array([4, 4, 2, 5, 1, 1, 4, 1, 1, 3, 1, 1, 1, 1]) 14 -ATOM.RESET_MCONN: initial lig.atoms[lig_idx].connec=4 lig.atoms[lig_idx].mconnec=0 -ATOM.RESET_MCONN: initial lig.madjnum[lig_idx]=1 -ATOM.RESET_MCONN: initial lig.adjnum[lig_idx]=5 -ATOM.RESET_MCONN: initial met.connec=7 met.mconnec=7 -ATOM.RESET_MCONN: initial lig.madjmat[lig_idx]=array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], dtype=object) lig.adjmat[lig_idx]=array([1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0], dtype=object) -ATOM.RESET_MCONN: final lig.madjnum=array([1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]) -ATOM.RESET_MCONN: final lig.adjnum=array([4, 4, 2, 4, 1, 1, 4, 1, 1, 3, 1, 1, 1, 1]) -ATOM.RESET_MCONN: final lig.atoms[lig_idx].connec=4 lig.atoms[lig_idx].mconnec=0 -ATOM.RESET_MCONN: final lig.atoms[lig_idx].adjacency=[0, 15, 21, 24, 25] lig.atoms[lig_idx].metal_adjacency=[0] -ATOM.RESET_MCONN: final lig.madjnum[lig_idx]=0 -ATOM.RESET_MCONN: final lig.adjnum[lig_idx]=4 -ATOM.RESET_MCONN: resetting mconnec (and connec) for atom self.label='C' in molecule mol_idx=18 with metal met_idx=0 -ATOM.RESET_MCONN: updating molecule atoms and madjnum -ATOM.RESET_MCONN: mol.natoms=29 -ATOM.RESET_MCONN: mol.labels=['Co', 'C', 'C', 'C', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'N', 'N', 'O', 'O', 'N', 'N', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'O'] -ATOM.RESET_MCONN: initial mol.madjnum=array([8, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0]) 29 -ATOM.RESET_MCONN: updating molecule atoms and adjnum -ATOM.RESET_MCONN: initial mol.adjnum=array([8, 3, 5, 4, 1, 1, 1, 1, 1, 1, 1, 4, 4, 2, 1, 4, 4, 2, 5, 1, 1, 4, - 1, 1, 3, 1, 1, 1, 1]) 29 -ATOM.RESET_MCONN: initial mol.atoms[mol_idx].mconnec=0 mol.atoms[mol_idx].connec=4 -ATOM.RESET_MCONN: initial met.mconnec=7 met.connec=7 -ATOM.RESET_MCONN: initial mol.madjnum[mol_idx]=1 -ATOM.RESET_MCONN: initial mol.adjnum[mol_idx]=5 -ATOM.RESET_MCONN: initial mol.madjnum[met_idx]=8 mol.madjnum[mol_idx]=1 -ATOM.RESET_MCONN: initial mol.adjnum[met_idx]=8 mol.adjnum[mol_idx]=5 -ATOM.RESET_MCONN: initial mol.madjmat[met_idx,mol_idx]=1 mol.madjmat[mol_idx,met_idx]=1 -ATOM.RESET_MCONN: initial mol.adjmat[met_idx,mol_idx]=1 mol.adjmat[mol_idx,met_idx]=1 -ATOM.RESET_MCONN: final mol.atoms[mol_idx].connec=4 mol.atoms[mol_idx].mconnec=0 -ATOM.RESET_MCONN: final mol.atoms[mol_idx].adjacency=[15, 21, 24, 25] mol.atoms[mol_idx].metal_adjacency=[] -ATOM.RESET_MCONN: final met.connec=7 met.mconnec=7 -ATOM.RESET_MCONN: final met.adjacency=[2, 11, 12, 13, 15, 16, 17] met.metal_adjacency=[2, 11, 12, 13, 15, 16, 17] -ATOM.RESET_MCONN: final mol.madjnum[mol_idx]=0 -ATOM.RESET_MCONN: final mol.adjnum[mol_idx]=4 -ATOM.RESET_MCONN: final mol.madjnum[met_idx]=7 mol.madjnum[mol_idx]=0 -ATOM.RESET_MCONN: final mol.adjnum[met_idx]=7 mol.adjnum[mol_idx]=4 -ATOM.RESET_MCONN: final mol.madjmat[met_idx,mol_idx]=0 mol.madjmat[mol_idx,met_idx]=0 -ATOM.RESET_MCONN: final mol.adjmat[met_idx,mol_idx]=0 mol.adjmat[mol_idx,met_idx]=0 -enterting SPLIT_GROUP for the GROUP C-N with conn_idx=[0] -GROUP.SPLIT_GROUP: conn_idx=[0] -GROUP.SPLIT_GROUP: conn_labels=['N'] -SPILT_SPECIES: Laplacian lap=array([[0]]) -SPILT_SPECIES: graph=<1x1 sparse matrix of type '' - with 0 stored elements in Compressed Sparse Row format> -GROUP.SPLIT_GROUP: blocklist=[[0]] -GROUP.SPLIT_GROUP: block=[0] -Entering COORD_CORR_NONHAPTIC: - Coordinating atom label=N with mconnec=1, group index 0 - evaluating coordination with metal Co - -------------- Cell2mol METAL Object -------------- - Version = 0.1 - Type = atom - Sub-Type = metal - Label = Co - Atomic Number = 27 - Index in Molecule = 0 - Metal Adjacency (mconnec) = 7 - Regular Adjacencies (connec) = 7 - Coordination Sphere Formula = C-N4-O2 ----------------------------------------------------- - -ADD_ATOM: Metalist length 1 -ADD_ATOM: Ligand Atoms 14 -ADD_ATOM: site= 0 -ADD_ATOM: target ligand atom N -ADD_ATOM: evaluating apos=array([6.052872, 5.68491 , 0.656601]) and tgt.coord=[5.88, 3.745, 0.692061] -ADD_ATOM: Chosen Metal index 0. H is added at site 0 - connectivity verified for atom N with ligand index 0 -LIGAND.SPLIT_LIGAND: block=[2] -EXTRACT_FROM_LIST. received: entrylist=[2] old_array=[0, 1, 2, 3] -EXTRACT_FROM_LIST. received: idx=0 val=2 old_array[val]=2 -EXTRACT_FROM_LIST. new_array=array([2], dtype=object) -LIGAND.SPLIT_LIGAND: gr_indices=[2] -EXTRACT_FROM_LIST. received: entrylist=[2] old_array=['N', 'N', 'O', 'C'] -EXTRACT_FROM_LIST. received: idx=0 val=2 old_array[val]='O' -EXTRACT_FROM_LIST. new_array=array(['O'], dtype=object) -Entering COORD_CORR_NONHAPTIC: - Coordinating atom label=O with mconnec=1, group index 0 - evaluating coordination with metal Co - -------------- Cell2mol METAL Object -------------- - Version = 0.1 - Type = atom - Sub-Type = metal - Label = Co - Atomic Number = 27 - Index in Molecule = 0 - Metal Adjacency (mconnec) = 7 - Regular Adjacencies (connec) = 7 - Coordination Sphere Formula = C-N4-O2 ----------------------------------------------------- - -ADD_ATOM: Metalist length 1 -ADD_ATOM: Ligand Atoms 14 -ADD_ATOM: site= 2 -ADD_ATOM: target ligand atom O -ADD_ATOM: evaluating apos=array([ 7.207704, 3.840123, -0.631188]) and tgt.coord=[5.88, 3.745, 0.692061] -ADD_ATOM: Chosen Metal index 0. H is added at site 2 - connectivity verified for atom O with ligand index 2 -LIGAND.SPLIT_LIGAND: new group is found -LIGAND.SPLIT_LIGAND: block=[1] -EXTRACT_FROM_LIST. received: entrylist=[1] old_array=[0, 1, 2, 3] -EXTRACT_FROM_LIST. received: idx=0 val=1 old_array[val]=1 -EXTRACT_FROM_LIST. new_array=array([1], dtype=object) -LIGAND.SPLIT_LIGAND: gr_indices=[1] -EXTRACT_FROM_LIST. received: entrylist=[1] old_array=['N', 'N', 'O', 'C'] -EXTRACT_FROM_LIST. received: idx=0 val=1 old_array[val]='N' -EXTRACT_FROM_LIST. new_array=array(['N'], dtype=object) -Entering COORD_CORR_NONHAPTIC: - Coordinating atom label=N with mconnec=1, group index 0 - evaluating coordination with metal Co - -------------- Cell2mol METAL Object -------------- - Version = 0.1 - Type = atom - Sub-Type = metal - Label = Co - Atomic Number = 27 - Index in Molecule = 0 - Metal Adjacency (mconnec) = 7 - Regular Adjacencies (connec) = 7 - Coordination Sphere Formula = C-N4-O2 ----------------------------------------------------- - -ADD_ATOM: Metalist length 1 -ADD_ATOM: Ligand Atoms 14 -ADD_ATOM: site= 1 -ADD_ATOM: target ligand atom N -ADD_ATOM: evaluating apos=array([7.337064, 3.804171, 2.029494]) and tgt.coord=[5.88, 3.745, 0.692061] -ADD_ATOM: Chosen Metal index 0. H is added at site 1 - connectivity verified for atom N with ligand index 1 -LIGAND.SPLIT_LIGAND: new group is found -LIGAND.SPLIT_LIGAND: found groups ['N', 'O', 'N'] -[------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 1 - Formula = N - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = split_group - Number of Metals = 1 ---------------------------------------------------- -, ------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 1 - Formula = O - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = split_ligand - Number of Metals = 1 ---------------------------------------------------- -, ------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 1 - Formula = N - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = split_ligand - Number of Metals = 1 ---------------------------------------------------- -] - -LIGAND.SPLIT_LIGAND: splitting H7-C3-N2-O2 into groups -LIGAND.SPLIT_LIGAND: self.indices=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13] -LIGAND.SPLIT_LIGAND: connected_idx=[1, 10, 11, 12] -LIGAND.SPLIT_LIGAND: conn_labels=['C', 'N', 'N', 'O'] -SPILT_SPECIES: Laplacian lap=array([[-1, 1, 0, 0], - [ 1, -1, 0, 0], - [ 0, 0, 0, 0], - [ 0, 0, 0, 0]]) -SPILT_SPECIES: graph=<4x4 sparse matrix of type '' - with 4 stored elements in Compressed Sparse Row format> -LIGAND.SPLIT_LIGAND: blocklist=[[0, 1], [3], [2]] -LIGAND.SPLIT_LIGAND: block=[0, 1] -EXTRACT_FROM_LIST. received: entrylist=[0, 1] old_array=[1, 10, 11, 12] -EXTRACT_FROM_LIST. received: idx=0 val=0 old_array[val]=1 -EXTRACT_FROM_LIST. received: idx=1 val=1 old_array[val]=10 -EXTRACT_FROM_LIST. new_array=array([1, 10], dtype=object) -LIGAND.SPLIT_LIGAND: gr_indices=[1, 10] -EXTRACT_FROM_LIST. received: entrylist=[0, 1] old_array=['C', 'N', 'N', 'O'] -EXTRACT_FROM_LIST. received: idx=0 val=0 old_array[val]='C' -EXTRACT_FROM_LIST. received: idx=1 val=1 old_array[val]='N' -EXTRACT_FROM_LIST. new_array=array(['C', 'N'], dtype=object) -Entering COORD_CORR_NONHAPTIC: - Coordinating atom label=C with mconnec=1, group index 0 - evaluating coordination with metal Co - -------------- Cell2mol METAL Object -------------- - Version = 0.1 - Type = atom - Sub-Type = metal - Label = Co - Atomic Number = 27 - Index in Molecule = 0 - Metal Adjacency (mconnec) = 7 - Regular Adjacencies (connec) = 7 - Coordination Sphere Formula = C-N4-O2 ----------------------------------------------------- - -ADD_ATOM: Metalist length 1 -ADD_ATOM: Ligand Atoms 14 -ADD_ATOM: site= 1 -ADD_ATOM: target ligand atom C -ADD_ATOM: evaluating apos=array([4.275936, 1.754907, 0.615231]) and tgt.coord=[5.88, 3.745, 0.692061] -ADD_ATOM: Chosen Metal index 0. H was added at site 1 but RESET due to connec=2 - correcting mconnec of atom C with ligand index 1 -ATOM.RESET_MCONN: resetting mconnec (and connec) for atom self.label='C' -ATOM.RESET_MCONN: initial self.connec=5 self.mconnec=1 -ATOM.RESET_MCONN: initial = self.adjacency=[0, 1, 3, 8, 11] self.metal_adjacency=[0] -ATOM.RESET_MCONN: initial met.connec=7 met.mconnec=7 -ATOM.RESET_MCONN: initial = met.adjacency=[2, 11, 12, 13, 15, 16, 17] met.metal_adjacency=[2, 11, 12, 13, 15, 16, 17] -ATOM.RESET_MCONN: resetting mconnec (and connec) for atom self.label='C' in ligadn lig_idx=1 -ATOM.RESET_MCONN: updating ligand atoms and madjnum -ATOM.RESET_MCONN: lig.natoms=14 -ATOM.RESET_MCONN: lig.labels=['C', 'C', 'C', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'N', 'N', 'O', 'O'] -ATOM.RESET_MCONN: initial lig.madjnum=array([0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0]) 14 -ATOM.RESET_MCONN: updating ligand atoms and adjnum -ATOM.RESET_MCONN: initial lig.adjnum=array([3, 5, 4, 1, 1, 1, 1, 1, 1, 1, 4, 4, 2, 1]) 14 -ATOM.RESET_MCONN: initial lig.atoms[lig_idx].connec=4 lig.atoms[lig_idx].mconnec=0 -ATOM.RESET_MCONN: initial lig.madjnum[lig_idx]=1 -ATOM.RESET_MCONN: initial lig.adjnum[lig_idx]=5 -ATOM.RESET_MCONN: initial met.connec=6 met.mconnec=6 -ATOM.RESET_MCONN: initial lig.madjmat[lig_idx]=array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], dtype=object) lig.adjmat[lig_idx]=array([1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0], dtype=object) -ATOM.RESET_MCONN: final lig.madjnum=array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0]) -ATOM.RESET_MCONN: final lig.adjnum=array([3, 4, 4, 1, 1, 1, 1, 1, 1, 1, 4, 4, 2, 1]) -ATOM.RESET_MCONN: final lig.atoms[lig_idx].connec=4 lig.atoms[lig_idx].mconnec=0 -ATOM.RESET_MCONN: final lig.atoms[lig_idx].adjacency=[0, 1, 3, 8, 11] lig.atoms[lig_idx].metal_adjacency=[0] -ATOM.RESET_MCONN: final lig.madjnum[lig_idx]=0 -ATOM.RESET_MCONN: final lig.adjnum[lig_idx]=4 -ATOM.RESET_MCONN: resetting mconnec (and connec) for atom self.label='C' in molecule mol_idx=2 with metal met_idx=0 -ATOM.RESET_MCONN: updating molecule atoms and madjnum -ATOM.RESET_MCONN: mol.natoms=29 -ATOM.RESET_MCONN: mol.labels=['Co', 'C', 'C', 'C', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'N', 'N', 'O', 'O', 'N', 'N', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'O'] -ATOM.RESET_MCONN: initial mol.madjnum=array([7, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0]) 29 -ATOM.RESET_MCONN: updating molecule atoms and adjnum -ATOM.RESET_MCONN: initial mol.adjnum=array([7, 3, 5, 4, 1, 1, 1, 1, 1, 1, 1, 4, 4, 2, 1, 4, 4, 2, 4, 1, 1, 4, - 1, 1, 3, 1, 1, 1, 1]) 29 -ATOM.RESET_MCONN: initial mol.atoms[mol_idx].mconnec=0 mol.atoms[mol_idx].connec=4 -ATOM.RESET_MCONN: initial met.mconnec=6 met.connec=6 -ATOM.RESET_MCONN: initial mol.madjnum[mol_idx]=1 -ATOM.RESET_MCONN: initial mol.adjnum[mol_idx]=5 -ATOM.RESET_MCONN: initial mol.madjnum[met_idx]=7 mol.madjnum[mol_idx]=1 -ATOM.RESET_MCONN: initial mol.adjnum[met_idx]=7 mol.adjnum[mol_idx]=5 -ATOM.RESET_MCONN: initial mol.madjmat[met_idx,mol_idx]=1 mol.madjmat[mol_idx,met_idx]=1 -ATOM.RESET_MCONN: initial mol.adjmat[met_idx,mol_idx]=1 mol.adjmat[mol_idx,met_idx]=1 -ATOM.RESET_MCONN: final mol.atoms[mol_idx].connec=4 mol.atoms[mol_idx].mconnec=0 -ATOM.RESET_MCONN: final mol.atoms[mol_idx].adjacency=[1, 3, 8, 11] mol.atoms[mol_idx].metal_adjacency=[] -ATOM.RESET_MCONN: final met.connec=6 met.mconnec=6 -ATOM.RESET_MCONN: final met.adjacency=[11, 12, 13, 15, 16, 17] met.metal_adjacency=[11, 12, 13, 15, 16, 17] -ATOM.RESET_MCONN: final mol.madjnum[mol_idx]=0 -ATOM.RESET_MCONN: final mol.adjnum[mol_idx]=4 -ATOM.RESET_MCONN: final mol.madjnum[met_idx]=6 mol.madjnum[mol_idx]=0 -ATOM.RESET_MCONN: final mol.adjnum[met_idx]=6 mol.adjnum[mol_idx]=4 -ATOM.RESET_MCONN: final mol.madjmat[met_idx,mol_idx]=0 mol.madjmat[mol_idx,met_idx]=0 -ATOM.RESET_MCONN: final mol.adjmat[met_idx,mol_idx]=0 mol.adjmat[mol_idx,met_idx]=0 - Coordinating atom label=N with mconnec=1, group index 1 - evaluating coordination with metal Co - -------------- Cell2mol METAL Object -------------- - Version = 0.1 - Type = atom - Sub-Type = metal - Label = Co - Atomic Number = 27 - Index in Molecule = 0 - Metal Adjacency (mconnec) = 6 - Regular Adjacencies (connec) = 6 - Coordination Sphere Formula = N4-O2 ----------------------------------------------------- - -ADD_ATOM: Metalist length 1 -ADD_ATOM: Ligand Atoms 14 -ADD_ATOM: site= 10 -ADD_ATOM: target ligand atom N -ADD_ATOM: evaluating apos=array([5.707128, 1.80509 , 0.656601]) and tgt.coord=[5.88, 3.745, 0.692061] -ADD_ATOM: Chosen Metal index 0. H is added at site 10 - connectivity verified for atom N with ligand index 10 -enterting SPLIT_GROUP for the GROUP C-N with conn_idx=[1] -GROUP.SPLIT_GROUP: conn_idx=[1] -GROUP.SPLIT_GROUP: conn_labels=['N'] -SPILT_SPECIES: Laplacian lap=array([[0]]) -SPILT_SPECIES: graph=<1x1 sparse matrix of type '' - with 0 stored elements in Compressed Sparse Row format> -GROUP.SPLIT_GROUP: blocklist=[[0]] -GROUP.SPLIT_GROUP: block=[0] -Entering COORD_CORR_NONHAPTIC: - Coordinating atom label=N with mconnec=1, group index 0 - evaluating coordination with metal Co - -------------- Cell2mol METAL Object -------------- - Version = 0.1 - Type = atom - Sub-Type = metal - Label = Co - Atomic Number = 27 - Index in Molecule = 0 - Metal Adjacency (mconnec) = 6 - Regular Adjacencies (connec) = 6 - Coordination Sphere Formula = N4-O2 ----------------------------------------------------- - -ADD_ATOM: Metalist length 1 -ADD_ATOM: Ligand Atoms 14 -ADD_ATOM: site= 10 -ADD_ATOM: target ligand atom N -ADD_ATOM: evaluating apos=array([5.707128, 1.80509 , 0.656601]) and tgt.coord=[5.88, 3.745, 0.692061] -ADD_ATOM: Chosen Metal index 0. H is added at site 10 - connectivity verified for atom N with ligand index 10 -LIGAND.SPLIT_LIGAND: block=[3] -EXTRACT_FROM_LIST. received: entrylist=[3] old_array=[1, 10, 11, 12] -EXTRACT_FROM_LIST. received: idx=0 val=3 old_array[val]=12 -EXTRACT_FROM_LIST. new_array=array([12], dtype=object) -LIGAND.SPLIT_LIGAND: gr_indices=[12] -EXTRACT_FROM_LIST. received: entrylist=[3] old_array=['C', 'N', 'N', 'O'] -EXTRACT_FROM_LIST. received: idx=0 val=3 old_array[val]='O' -EXTRACT_FROM_LIST. new_array=array(['O'], dtype=object) -Entering COORD_CORR_NONHAPTIC: - Coordinating atom label=O with mconnec=1, group index 0 - evaluating coordination with metal Co - -------------- Cell2mol METAL Object -------------- - Version = 0.1 - Type = atom - Sub-Type = metal - Label = Co - Atomic Number = 27 - Index in Molecule = 0 - Metal Adjacency (mconnec) = 6 - Regular Adjacencies (connec) = 6 - Coordination Sphere Formula = N4-O2 ----------------------------------------------------- - -ADD_ATOM: Metalist length 1 -ADD_ATOM: Ligand Atoms 14 -ADD_ATOM: site= 12 -ADD_ATOM: target ligand atom O -ADD_ATOM: evaluating apos=array([ 4.552296, 3.649877, -0.631188]) and tgt.coord=[5.88, 3.745, 0.692061] -ADD_ATOM: Chosen Metal index 0. H is added at site 12 - connectivity verified for atom O with ligand index 12 -LIGAND.SPLIT_LIGAND: new group is found -LIGAND.SPLIT_LIGAND: block=[2] -EXTRACT_FROM_LIST. received: entrylist=[2] old_array=[1, 10, 11, 12] -EXTRACT_FROM_LIST. received: idx=0 val=2 old_array[val]=11 -EXTRACT_FROM_LIST. new_array=array([11], dtype=object) -LIGAND.SPLIT_LIGAND: gr_indices=[11] -EXTRACT_FROM_LIST. received: entrylist=[2] old_array=['C', 'N', 'N', 'O'] -EXTRACT_FROM_LIST. received: idx=0 val=2 old_array[val]='N' -EXTRACT_FROM_LIST. new_array=array(['N'], dtype=object) -Entering COORD_CORR_NONHAPTIC: - Coordinating atom label=N with mconnec=1, group index 0 - evaluating coordination with metal Co - -------------- Cell2mol METAL Object -------------- - Version = 0.1 - Type = atom - Sub-Type = metal - Label = Co - Atomic Number = 27 - Index in Molecule = 0 - Metal Adjacency (mconnec) = 6 - Regular Adjacencies (connec) = 6 - Coordination Sphere Formula = N4-O2 ----------------------------------------------------- - -ADD_ATOM: Metalist length 1 -ADD_ATOM: Ligand Atoms 14 -ADD_ATOM: site= 11 -ADD_ATOM: target ligand atom N -ADD_ATOM: evaluating apos=array([4.422936, 3.685829, 2.029494]) and tgt.coord=[5.88, 3.745, 0.692061] -ADD_ATOM: Chosen Metal index 0. H is added at site 11 - connectivity verified for atom N with ligand index 11 -LIGAND.SPLIT_LIGAND: new group is found -LIGAND.SPLIT_LIGAND: found groups ['N', 'O', 'N'] -[------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 1 - Formula = N - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = split_group - Number of Metals = 1 ---------------------------------------------------- -, ------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 1 - Formula = O - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = split_ligand - Number of Metals = 1 ---------------------------------------------------- -, ------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 1 - Formula = N - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = split_ligand - Number of Metals = 1 ---------------------------------------------------- -] -LIGAND.Get_denticity: checking connectivity of ligand H7-C3-N2-O2 -LIGAND.Get_denticity: initial connectivity is 3 -LIGAND.Get_denticity: final connectivity of ligand H7-C3-N2-O2 is 3 -LIGAND.Get_denticity: checking connectivity of ligand H7-C3-N2-O2 -LIGAND.Get_denticity: initial connectivity is 3 -LIGAND.Get_denticity: final connectivity of ligand H7-C3-N2-O2 is 3 - -METAL.Get_coord_geometry: Co -METAL.Get_coord_geometry: -coord_group=[------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 1 - Formula = N - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = split_group - Number of Metals = 1 ---------------------------------------------------- -, ------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 1 - Formula = O - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = split_ligand - Number of Metals = 1 ---------------------------------------------------- -, ------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 1 - Formula = N - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = split_ligand - Number of Metals = 1 ---------------------------------------------------- -, ------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 1 - Formula = N - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = split_group - Number of Metals = 1 ---------------------------------------------------- -, ------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 1 - Formula = O - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = split_ligand - Number of Metals = 1 ---------------------------------------------------- -, ------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 1 - Formula = N - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = split_ligand - Number of Metals = 1 ---------------------------------------------------- -] -METAL.Get_coord_geometry: coord_nr=6 -SHAPE_MEASURE: symbols=['Co', 'N', 'O', 'N', 'N', 'O', 'N'] -SHAPE_MEASURE: positions=[[5.88, 3.745, 0.692061], [6.052872000000001, 5.68491, 0.656601], [7.207704, 3.8401230000000006, -0.6311880000000001], [7.337064, 3.804171, 2.029494], [5.707128, 1.80509, 0.656601], [4.552296, 3.649877, -0.6311880000000001], [4.422936, 3.685829, 2.029494]] -SHAPE_MEASURE: coordination number of metal center 6 -SHAPE_MEASURE: connectivity of metal center(1) [[1, 2], [1, 3], [1, 4], [1, 5], [1, 6], [1, 7]] -DEFINE_coordination_geometry: The number of coordinating points: 6 -DEFINE_coordination_geometry: {'Hexagon': 29.982, 'Pentagonal pyramidal': 27.962, 'Octahedral': 0.481, 'Trigonal prismatic': 14.882} -DEFINE_coordination_geometry: The type of hapticity : [] -DEFINE_coordination_geometry: The most likely geometry is 'Octahedral' with deviation value 0.481 -METAL.Get_coord_geometry: self.coord_geometry='Octahedral' self.geom_deviation=0.481 -METAL.Get_relative_metal_radius: diff_list=[1.238, 1.217, 1.269, 1.238, 1.217, 1.269] -METAL.Get_relative_metal_radius: average=1.241 -METAL.Get_coord_geometry: self.rel_metal_radius=0.985 -GETREFS: working with Br - -################## -Checking Missing H -################## -Adjacency [15, 21, 24, 25] ['N', 'C', 'C', 'H'] -Adjacency [16, 18, 26, 27] ['N', 'C', 'H', 'H'] -Adjacency [17, 18, 28] ['O', 'C', 'O'] -Adjacency [2, 13, 14] ['C', 'O', 'O'] -Adjacency [1, 3, 8, 11] ['C', 'C', 'H', 'N'] -Adjacency [2, 9, 10, 12] ['C', 'H', 'H', 'N'] -Not a Single Molecule has Missing H atoms (apparently) -------------------------------- -Errors in Reference Molecules -------------------------------- -Cell2mol terminated with error number 0. Message: -No Errors Found - -SAVING cell2mol CELL object to /Users/ycho/cell2mol/cell2mol/test/error_2/APRCOB/Ref_Cell_APRCOB.cell -ENTERING cell2mol with debug=2 -Entered CELL.MOLECLIST with debug=2 -CELL.MOLECLIST passed initial checks -CELL.MOLECLIST: ions_idx=[0, 1] with label='Br' -CELL.MOLECLIST: found 2 ions -CELL.MOLECLIST: rest_idx=[2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59] -CELL.MOLECLIST: rest_labels=['Co', 'Co', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O'] -CELL.MOLECLIST: rest_coord=[array([5.88 , 3.745 , 0.692061]), array([0. , 0. , 5.217939]), array([3.789072, 2.595285, 5.36628 ]), array([9.669072, 1.149715, 0.54372 ]), array([2.090928, 6.340285, 0.54372 ]), array([7.970928, 4.894715, 5.36628 ]), array([4.275936, 1.754907, 0.615231]), array([10.155936, 1.990093, 5.294769]), array([1.604064, 5.499907, 5.294769]), array([7.484064, 5.735093, 0.615231]), array([3.697344, 2.298681, 1.813779]), array([9.577344, 1.446319, 4.096221]), array([2.182656, 6.043681, 4.096221]), array([8.062656, 5.191319, 1.813779]), array([6.06816, 1.36318, 1.5366 ]), array([0.18816, 2.38182, 4.3734 ]), array([11.57184, 5.10818, 4.3734 ]), array([5.69184, 6.12682, 1.5366 ]), array([6.13872, 1.37067, 5.76225]), array([0.25872, 2.37433, 0.14775]), array([11.50128, 5.11567, 0.14775]), array([5.62128, 6.11933, 5.76225]), array([3.77496, 4.47902, 1.90302]), array([9.65496, 6.75598, 4.00698]), array([2.10504, 0.73402, 4.00698]), array([7.98504, 3.01098, 1.90302]), array([4.8216 , 3.745 , 2.99637]), array([10.7016 , 0. , 2.91363]), array([1.0584 , 0. , 2.91363]), array([6.9384 , 3.745 , 2.99637]), array([3.95136, 0.72653, 0.51417]), array([9.83136, 3.01847, 5.39583]), array([1.92864, 4.47153, 5.39583]), array([7.80864, 6.76347, 0.51417]), array([2.62248, 2.46421, 1.69026]), array([8.50248, 1.28079, 4.21974]), array([3.25752, 6.20921, 4.21974]), array([9.13752, 5.02579, 1.69026]), array([3.86904, 1.6478 , 2.66541]), array([9.74904, 2.0972 , 3.24459]), array([2.01096, 5.3928 , 3.24459]), array([7.89096, 5.8422 , 2.66541]), array([5.707128, 1.80509 , 0.656601]), array([11.587128, 1.93991 , 5.253399]), array([0.172872, 5.55009 , 5.253399]), array([6.052872, 5.68491 , 0.656601]), array([4.422936, 3.685829, 2.029494]), array([10.302936, 0.059171, 3.880506]), array([1.457064, 7.430829, 3.880506]), array([7.337064, 3.804171, 2.029494]), array([4.552296, 3.649877, 5.278812]), array([10.432296, 0.095123, 0.631188]), array([1.327704, 7.394877, 0.631188]), array([7.207704, 3.840123, 5.278812]), array([2.81064 , 2.352609, 4.700223]), array([8.69064 , 1.392391, 1.209777]), array([3.06936 , 6.097609, 1.209777]), array([8.94936 , 5.137391, 4.700223])] -CELL.MOLECLIST: rest_indices=[2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59] -SPILT_SPECIES: Laplacian lap=array([[-6, 0, 0, ..., 0, 0, 0], - [ 0, 0, 0, ..., 0, 0, 0], - [ 0, 0, -2, ..., 0, 0, 0], - ..., - [ 0, 0, 0, ..., -1, 0, 0], - [ 0, 0, 0, ..., 0, -1, 0], - [ 0, 0, 0, ..., 0, 0, -1]]) -SPILT_SPECIES: graph=<58x58 sparse matrix of type '' - with 138 stored elements in Compressed Sparse Row format> -CELL.MOLECLIST: found 19 blocks -CELL.MOLECLIST: blocklist=[[7, 55, 59], [6, 54, 58], [5, 53, 57], [4, 52, 56], [10, 14, 34, 38, 42, 46, 50], [9, 13, 29, 33, 37, 41, 45, 49], [2, 8, 11, 12, 15, 16, 19, 24, 27, 28, 31, 32, 35, 36, 39, 40, 43, 44, 47, 48, 51], [17], [18], [20], [21], [22], [23], [25], [26], [3], [30], [0], [1]] -CELL.MOLECLIST: doing block=[7, 55, 59] -CELL.MOLECLIST: doing block=[6, 54, 58] -CELL.MOLECLIST: doing block=[5, 53, 57] -CELL.MOLECLIST: doing block=[4, 52, 56] -CELL.MOLECLIST: doing block=[10, 14, 34, 38, 42, 46, 50] -CELL.MOLECLIST: doing block=[9, 13, 29, 33, 37, 41, 45, 49] -CELL.MOLECLIST: doing block=[2, 8, 11, 12, 15, 16, 19, 24, 27, 28, 31, 32, 35, 36, 39, 40, 43, 44, 47, 48, 51] -CELL.MOLECLIST: doing block=[17] -CELL.MOLECLIST: doing block=[18] -CELL.MOLECLIST: doing block=[20] -CELL.MOLECLIST: doing block=[21] -CELL.MOLECLIST: doing block=[22] -CELL.MOLECLIST: doing block=[23] -CELL.MOLECLIST: doing block=[25] -CELL.MOLECLIST: doing block=[26] -CELL.MOLECLIST: doing block=[3] -CELL.MOLECLIST: doing block=[30] -CELL.MOLECLIST: doing block=[0] -CELL.MOLECLIST: doing block=[1] -CLASSIFY_FRAGMENTS, preparing block -C-O2 -CLASSIFY_FRAGMENTS, preparing block -C-O2 -CLASSIFY_FRAGMENTS, preparing block -C-O2 -CLASSIFY_FRAGMENTS, preparing block -C-O2 -CLASSIFY_FRAGMENTS, preparing block -H3-C2-N2 -CLASSIFY_FRAGMENTS, preparing block -H4-C2-N2 -CLASSIFY_FRAGMENTS, preparing block -H12-C4-N4-Co -CLASSIFY_FRAGMENTS, preparing block -H -CLASSIFY_FRAGMENTS, preparing block -H -CLASSIFY_FRAGMENTS, preparing block -H -CLASSIFY_FRAGMENTS, preparing block -H -CLASSIFY_FRAGMENTS, preparing block -H -CLASSIFY_FRAGMENTS, preparing block -H -CLASSIFY_FRAGMENTS, preparing block -H -CLASSIFY_FRAGMENTS, preparing block -H -CLASSIFY_FRAGMENTS, preparing block -Co -CLASSIFY_FRAGMENTS, preparing block -H -CLASSIFY_FRAGMENTS, preparing block -Br -CLASSIFY_FRAGMENTS, preparing block -Br -CLASSIFY_FRAGMENTS, preparing reference -H14-C6-N4-O4-Co -CLASSIFY_FRAGMENTS, preparing reference -Br -CLASSIFY_FRAGMENTS. 19 Blocks sorted as (Molec, Frag, H): 2 8 9 -CELL.RECONSTRUCT: 2 molecules=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = Br - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = Br - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -CELL.RECONSTRUCT: 8 fragments=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = fragment - Number of Atoms = 3 - Formula = C-O2 - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = fragment - Number of Atoms = 3 - Formula = C-O2 - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = fragment - Number of Atoms = 3 - Formula = C-O2 - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = fragment - Number of Atoms = 3 - Formula = C-O2 - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = fragment - Number of Atoms = 7 - Formula = H3-C2-N2 - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = fragment - Number of Atoms = 8 - Formula = H4-C2-N2 - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = fragment - Number of Atoms = 21 - Formula = H12-C4-N4-Co - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = fragment - Number of Atoms = 1 - Formula = Co - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -CELL.RECONSTRUCT: 9 hydrogens=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] - -############################################## -FRAG_RECONSTRUCT. 8 molecules submitted to SEQUENTIAL with Heavy -############################################## -FRAG_RECONSTRUCT. 0 molecules and 2 fragments out of SEQUENTIAL with Heavy -FRAG_RECONSTRUCT. remfrag=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 22 - Formula = H7-C6-N4-O4-Co - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 27 - Formula = H12-C6-N4-O4-Co - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES ---------------------------------------------------- -] -FRAG_RECONSTRUCT. 11 fragments submitted to sequential with All -Entered sequential with 11 fragments to reconstruct -Found 2 and 9 Heavy and Hydrogen fragments, respectively - -Fragments to allocate: 0 0 out of 1 8 -sublist 2 ['H7-C6-N4-O4-Co', 'H'] -list1 2 ['H7-C6-N4-O4-Co', 'H12-C6-N4-O4-Co'] -list2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 1 ['H12-C6-N4-O4-Co'] -keeplist2 8 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 1 with 2 and 9 Remaining in each list -SEQUENTIAL All sending ['C', 'C', 'H', 'H', 'H', 'H', 'N', 'N', 'Co', 'C', 'C', 'H', 'H', 'H', 'N', 'N', 'C', 'O', 'O', 'C', 'O', 'O'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (1, 0, 0), (0, 1, 0), (1, 1, 0), (0, 1, -1), (1, 0, -1), (1, 1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 1 -SPILT_SPECIES: Laplacian lap=array([[-5, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0], - [ 1, -4, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, -1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0], - [ 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0], - [ 0, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0], - [ 0, 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0], - [ 1, 0, 0, 0, 0, 0, -3, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1], - [ 0, 1, 1, 0, 0, 0, 0, -3, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0], - [ 1, 0, 0, 0, 0, 0, 1, 1, -8, 1, 0, 0, 0, 0, 1, 1, - 0, 1, 0, 0, 1, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 1, -5, 1, 1, 0, 0, 1, 0, - 0, 0, 0, 1, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -4, 0, 1, 1, 0, 1, - 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, -1, 0, 0, - 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, -2, 0, - 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, -2, - 0, 0, 0, 0, 0, 0, 0], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - -3, 1, 1, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 1, -2, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, -1, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, -3, 1, 1, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, -2, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, 0, -1, 0], - [ 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, -1]]) -SPILT_SPECIES: graph=<23x23 sparse matrix of type '' - with 79 stored elements in Compressed Sparse Row format> -COMBINE. received molecule: ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 23 - Formula = H8-C6-N4-O4-Co - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES ---------------------------------------------------- - from merge fragments -COMBINE: Fragment H8-C6-N4-O4-Co added to avglist -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 1 ['H8-C6-N4-O4-Co'] -SEQUENTIAL: badlist 0 [] - -Fragments to allocate: 0 1 out of 1 7 -sublist 2 ['H8-C6-N4-O4-Co', 'H'] -list1 2 ['H8-C6-N4-O4-Co', 'H12-C6-N4-O4-Co'] -list2 8 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 1 ['H12-C6-N4-O4-Co'] -keeplist2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 2 with 2 and 8 Remaining in each list -SEQUENTIAL All sending ['C', 'C', 'H', 'H', 'H', 'H', 'N', 'N', 'Co', 'C', 'C', 'H', 'H', 'H', 'N', 'N', 'C', 'O', 'O', 'C', 'O', 'O', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H8-C6-N4-O4-Co', 'H'] - -Fragments to allocate: 0 2 out of 1 7 -sublist 2 ['H8-C6-N4-O4-Co', 'H'] -list1 2 ['H8-C6-N4-O4-Co', 'H12-C6-N4-O4-Co'] -list2 8 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 1 ['H12-C6-N4-O4-Co'] -keeplist2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 3 with 2 and 8 Remaining in each list -SEQUENTIAL All sending ['C', 'C', 'H', 'H', 'H', 'H', 'N', 'N', 'Co', 'C', 'C', 'H', 'H', 'H', 'N', 'N', 'C', 'O', 'O', 'C', 'O', 'O', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (1, 0, 0), (0, 1, 0), (0, 0, 1), (1, 1, 0), (0, 1, 1), (1, 0, 1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 1 -SPILT_SPECIES: Laplacian lap=array([[-5, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0], - [ 1, -4, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, -1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0], - [ 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0], - [ 1, 0, 0, 0, 0, 0, -4, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1, 1], - [ 0, 1, 1, 0, 0, 0, 0, -3, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0], - [ 1, 0, 0, 0, 0, 0, 1, 1, -8, 1, 0, 0, 0, 0, 1, 1, - 0, 1, 0, 0, 1, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 1, -5, 1, 1, 0, 0, 1, 0, - 0, 0, 0, 1, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -4, 0, 1, 1, 0, 1, - 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, -1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, -2, 0, - 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, -2, - 0, 0, 0, 0, 0, 0, 0, 0], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - -3, 1, 1, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 1, -2, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, -1, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, -3, 1, 1, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, -2, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, 0, -1, 0, 0], - [ 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, -1, 0], - [ 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, -1]]) -SPILT_SPECIES: graph=<24x24 sparse matrix of type '' - with 82 stored elements in Compressed Sparse Row format> -COMBINE. received molecule: ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 24 - Formula = H9-C6-N4-O4-Co - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES ---------------------------------------------------- - from merge fragments -COMBINE: Fragment H9-C6-N4-O4-Co added to avglist -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 1 ['H9-C6-N4-O4-Co'] -SEQUENTIAL: badlist 0 [] - -Fragments to allocate: 0 1 out of 1 6 -sublist 2 ['H9-C6-N4-O4-Co', 'H'] -list1 2 ['H9-C6-N4-O4-Co', 'H12-C6-N4-O4-Co'] -list2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 1 ['H12-C6-N4-O4-Co'] -keeplist2 6 ['H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 4 with 2 and 7 Remaining in each list -SEQUENTIAL All sending ['C', 'C', 'H', 'H', 'H', 'H', 'N', 'N', 'Co', 'C', 'C', 'H', 'H', 'H', 'N', 'N', 'C', 'O', 'O', 'C', 'O', 'O', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 1 -SPILT_SPECIES: Laplacian lap=array([[-5, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0], - [ 1, -4, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, -1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 1, 0, 0, 0, 0, 0, -4, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1, 1, 0], - [ 0, 1, 1, 0, 0, 0, 0, -3, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 1, 0, 0, 0, 0, 0, 1, 1, -8, 1, 0, 0, 0, 0, 1, 1, - 0, 1, 0, 0, 1, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 1, -5, 1, 1, 0, 0, 1, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -4, 0, 1, 1, 0, 1, - 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, -1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, -3, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1], - [ 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, -2, - 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - -3, 1, 1, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 1, -2, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, -1, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, -3, 1, 1, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, -2, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, 0, -1, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, -1, 0, 0], - [ 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, -1, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, -1]]) -SPILT_SPECIES: graph=<25x25 sparse matrix of type '' - with 85 stored elements in Compressed Sparse Row format> -COMBINE. received molecule: ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 25 - Formula = H10-C6-N4-O4-Co - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES ---------------------------------------------------- - from merge fragments -COMBINE: Fragment H10-C6-N4-O4-Co added to avglist -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 1 ['H10-C6-N4-O4-Co'] -SEQUENTIAL: badlist 0 [] - -Fragments to allocate: 0 1 out of 1 5 -sublist 2 ['H10-C6-N4-O4-Co', 'H'] -list1 2 ['H10-C6-N4-O4-Co', 'H12-C6-N4-O4-Co'] -list2 6 ['H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 1 ['H12-C6-N4-O4-Co'] -keeplist2 5 ['H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 5 with 2 and 6 Remaining in each list -SEQUENTIAL All sending ['C', 'C', 'H', 'H', 'H', 'H', 'N', 'N', 'Co', 'C', 'C', 'H', 'H', 'H', 'N', 'N', 'C', 'O', 'O', 'C', 'O', 'O', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 1 -SPILT_SPECIES: Laplacian lap=array([[-5, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 1, -4, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, -1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 1, 0, 0, 0, 0, 0, -4, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1, 1, 0, 0], - [ 0, 1, 1, 0, 0, 0, 0, -3, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 1, 0, 0, 0, 0, 0, 1, 1, -8, 1, 0, 0, 0, 0, 1, 1, - 0, 1, 0, 0, 1, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 1, -5, 1, 1, 0, 0, 1, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -4, 0, 1, 1, 0, 1, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, -1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, -4, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 1], - [ 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, -2, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - -3, 1, 1, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 1, -2, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, -1, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, -3, 1, 1, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, -2, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, 0, -1, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, -1, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, -1, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, -1, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, -1]]) -SPILT_SPECIES: graph=<26x26 sparse matrix of type '' - with 88 stored elements in Compressed Sparse Row format> -COMBINE. received molecule: ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 26 - Formula = H11-C6-N4-O4-Co - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES ---------------------------------------------------- - from merge fragments -COMBINE: Fragment H11-C6-N4-O4-Co added to avglist -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 1 ['H11-C6-N4-O4-Co'] -SEQUENTIAL: badlist 0 [] - -Fragments to allocate: 0 1 out of 1 4 -sublist 2 ['H11-C6-N4-O4-Co', 'H'] -list1 2 ['H11-C6-N4-O4-Co', 'H12-C6-N4-O4-Co'] -list2 5 ['H', 'H', 'H', 'H', 'H'] -keeplist1 1 ['H12-C6-N4-O4-Co'] -keeplist2 4 ['H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 6 with 2 and 5 Remaining in each list -SEQUENTIAL All sending ['C', 'C', 'H', 'H', 'H', 'H', 'N', 'N', 'Co', 'C', 'C', 'H', 'H', 'H', 'N', 'N', 'C', 'O', 'O', 'C', 'O', 'O', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, -1), (0, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H11-C6-N4-O4-Co', 'H'] - -Fragments to allocate: 0 2 out of 1 4 -sublist 2 ['H11-C6-N4-O4-Co', 'H'] -list1 2 ['H11-C6-N4-O4-Co', 'H12-C6-N4-O4-Co'] -list2 5 ['H', 'H', 'H', 'H', 'H'] -keeplist1 1 ['H12-C6-N4-O4-Co'] -keeplist2 4 ['H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 7 with 2 and 5 Remaining in each list -SEQUENTIAL All sending ['C', 'C', 'H', 'H', 'H', 'H', 'N', 'N', 'Co', 'C', 'C', 'H', 'H', 'H', 'N', 'N', 'C', 'O', 'O', 'C', 'O', 'O', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 1 -SPILT_SPECIES: Laplacian lap=array([[-5, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 1, -4, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, -1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 1, 0, 0, 0, 0, 0, -4, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0], - [ 0, 1, 1, 0, 0, 0, 0, -4, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1], - [ 1, 0, 0, 0, 0, 0, 1, 1, -8, 1, 0, 0, 0, 0, 1, 1, - 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 1, -5, 1, 1, 0, 0, 1, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -4, 0, 1, 1, 0, 1, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, -1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, -4, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, -2, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - -3, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 1, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, -3, 1, 1, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, -2, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, 0, -1, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0], - [ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1]]) -SPILT_SPECIES: graph=<27x27 sparse matrix of type '' - with 91 stored elements in Compressed Sparse Row format> -COMBINE. received molecule: ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 27 - Formula = H12-C6-N4-O4-Co - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES ---------------------------------------------------- - from merge fragments -COMBINE: Fragment H12-C6-N4-O4-Co added to avglist -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 1 ['H12-C6-N4-O4-Co'] -SEQUENTIAL: badlist 0 [] - -Fragments to allocate: 0 1 out of 1 3 -sublist 2 ['H12-C6-N4-O4-Co', 'H'] -list1 2 ['H12-C6-N4-O4-Co', 'H12-C6-N4-O4-Co'] -list2 4 ['H', 'H', 'H', 'H'] -keeplist1 1 ['H12-C6-N4-O4-Co'] -keeplist2 3 ['H', 'H', 'H'] - -SEQUENTIAL All iteration 8 with 2 and 4 Remaining in each list -SEQUENTIAL All sending ['C', 'C', 'H', 'H', 'H', 'H', 'N', 'N', 'Co', 'C', 'C', 'H', 'H', 'H', 'N', 'N', 'C', 'O', 'O', 'C', 'O', 'O', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H12-C6-N4-O4-Co', 'H'] - -Fragments to allocate: 0 2 out of 1 3 -sublist 2 ['H12-C6-N4-O4-Co', 'H'] -list1 2 ['H12-C6-N4-O4-Co', 'H12-C6-N4-O4-Co'] -list2 4 ['H', 'H', 'H', 'H'] -keeplist1 1 ['H12-C6-N4-O4-Co'] -keeplist2 3 ['H', 'H', 'H'] - -SEQUENTIAL All iteration 9 with 2 and 4 Remaining in each list -SEQUENTIAL All sending ['C', 'C', 'H', 'H', 'H', 'H', 'N', 'N', 'Co', 'C', 'C', 'H', 'H', 'H', 'N', 'N', 'C', 'O', 'O', 'C', 'O', 'O', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (1, 0, 0), (0, 1, 0), (1, 1, 0), (0, 1, -1), (1, 0, -1), (1, 1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 1 -SPILT_SPECIES: Laplacian lap=array([[-5, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 1, -4, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, -1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 1, 0, 0, 0, 0, 0, -4, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0], - [ 0, 1, 1, 0, 0, 0, 0, -4, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0], - [ 1, 0, 0, 0, 0, 0, 1, 1, -8, 1, 0, 0, 0, 0, 1, 1, - 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 1, -5, 1, 1, 0, 0, 1, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -4, 0, 1, 1, 0, 1, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, -1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, -4, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, -3, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - -3, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 1, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, -3, 1, 1, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, -2, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, 0, -1, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1]]) -SPILT_SPECIES: graph=<28x28 sparse matrix of type '' - with 94 stored elements in Compressed Sparse Row format> -COMBINE. received molecule: ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 28 - Formula = H13-C6-N4-O4-Co - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES ---------------------------------------------------- - from merge fragments -COMBINE: Fragment H13-C6-N4-O4-Co added to avglist -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 1 ['H13-C6-N4-O4-Co'] -SEQUENTIAL: badlist 0 [] - -Fragments to allocate: 0 1 out of 1 2 -sublist 2 ['H13-C6-N4-O4-Co', 'H'] -list1 2 ['H13-C6-N4-O4-Co', 'H12-C6-N4-O4-Co'] -list2 3 ['H', 'H', 'H'] -keeplist1 1 ['H12-C6-N4-O4-Co'] -keeplist2 2 ['H', 'H'] - -SEQUENTIAL All iteration 10 with 2 and 3 Remaining in each list -SEQUENTIAL All sending ['C', 'C', 'H', 'H', 'H', 'H', 'N', 'N', 'Co', 'C', 'C', 'H', 'H', 'H', 'N', 'N', 'C', 'O', 'O', 'C', 'O', 'O', 'H', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, -1), (0, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H13-C6-N4-O4-Co', 'H'] - -Fragments to allocate: 0 2 out of 1 2 -sublist 2 ['H13-C6-N4-O4-Co', 'H'] -list1 2 ['H13-C6-N4-O4-Co', 'H12-C6-N4-O4-Co'] -list2 3 ['H', 'H', 'H'] -keeplist1 1 ['H12-C6-N4-O4-Co'] -keeplist2 2 ['H', 'H'] - -SEQUENTIAL All iteration 11 with 2 and 3 Remaining in each list -SEQUENTIAL All sending ['C', 'C', 'H', 'H', 'H', 'H', 'N', 'N', 'Co', 'C', 'C', 'H', 'H', 'H', 'N', 'N', 'C', 'O', 'O', 'C', 'O', 'O', 'H', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (1, 0, 0), (0, 1, 0), (1, 1, 0)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 1 -SPILT_SPECIES: Laplacian lap=array([[-5, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 1, -4, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, -1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 1, 0, 0, 0, 0, 0, -4, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0], - [ 0, 1, 1, 0, 0, 0, 0, -4, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0], - [ 1, 0, 0, 0, 0, 0, 1, 1, -8, 1, 0, 0, 0, 0, 1, 1, - 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 1, -5, 1, 1, 0, 0, 1, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -4, 0, 1, 1, 0, 1, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, -1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, -4, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, -4, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - -3, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 1, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, -3, 1, 1, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, -2, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, 0, -1, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1]]) -SPILT_SPECIES: graph=<29x29 sparse matrix of type '' - with 97 stored elements in Compressed Sparse Row format> -COMBINE. received molecule: ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 29 - Formula = H14-C6-N4-O4-Co - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES ---------------------------------------------------- - from merge fragments - -LIGAND.SPLIT_LIGAND: splitting H7-C3-N2-O2 into groups -LIGAND.SPLIT_LIGAND: self.indices=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13] -LIGAND.SPLIT_LIGAND: connected_idx=[0, 5, 6, 7] -LIGAND.SPLIT_LIGAND: conn_labels=['C', 'N', 'N', 'O'] -SPILT_SPECIES: Laplacian lap=array([[-1, 1, 0, 0], - [ 1, -1, 0, 0], - [ 0, 0, 0, 0], - [ 0, 0, 0, 0]]) -SPILT_SPECIES: graph=<4x4 sparse matrix of type '' - with 4 stored elements in Compressed Sparse Row format> -LIGAND.SPLIT_LIGAND: blocklist=[[0, 1], [3], [2]] -LIGAND.SPLIT_LIGAND: block=[0, 1] -EXTRACT_FROM_LIST. received: entrylist=[0, 1] old_array=[0, 5, 6, 7] -EXTRACT_FROM_LIST. received: idx=0 val=0 old_array[val]=0 -EXTRACT_FROM_LIST. received: idx=1 val=1 old_array[val]=5 -EXTRACT_FROM_LIST. new_array=array([0, 5], dtype=object) -LIGAND.SPLIT_LIGAND: gr_indices=[0, 5] -EXTRACT_FROM_LIST. received: entrylist=[0, 1] old_array=['C', 'N', 'N', 'O'] -EXTRACT_FROM_LIST. received: idx=0 val=0 old_array[val]='C' -EXTRACT_FROM_LIST. received: idx=1 val=1 old_array[val]='N' -EXTRACT_FROM_LIST. new_array=array(['C', 'N'], dtype=object) -Entering COORD_CORR_NONHAPTIC: - Coordinating atom label=C with mconnec=1, group index 0 - evaluating coordination with metal Co - -------------- Cell2mol METAL Object -------------- - Version = 0.1 - Type = atom - Sub-Type = metal - Label = Co - Atomic Number = 27 - Index in Molecule = 0 - Metal Adjacency (mconnec) = 8 - Regular Adjacencies (connec) = 8 ----------------------------------------------------- - -ADD_ATOM: Metalist length 1 -ADD_ATOM: Ligand Atoms 14 -ADD_ATOM: site= 0 -ADD_ATOM: target ligand atom C -ADD_ATOM: evaluating apos=array([13.364064, -1.990093, 5.294769]) and tgt.coord=[11.76, 0.0, 5.217939] -ADD_ATOM: Chosen Metal index 0. H was added at site 0 but RESET due to connec=2 - correcting mconnec of atom C with ligand index 0 -ATOM.RESET_MCONN: resetting mconnec (and connec) for atom self.label='C' -ATOM.RESET_MCONN: initial self.connec=5 self.mconnec=1 -ATOM.RESET_MCONN: initial = self.adjacency=[0, 4, 11, 21, 24] self.metal_adjacency=[0] -ATOM.RESET_MCONN: initial met.connec=8 met.mconnec=8 -ATOM.RESET_MCONN: initial = met.adjacency=[2, 11, 12, 13, 15, 16, 17, 18] met.metal_adjacency=[2, 11, 12, 13, 15, 16, 17, 18] -ATOM.RESET_MCONN: resetting mconnec (and connec) for atom self.label='C' in ligadn lig_idx=0 -ATOM.RESET_MCONN: updating ligand atoms and madjnum -ATOM.RESET_MCONN: lig.natoms=14 -ATOM.RESET_MCONN: lig.labels=['C', 'H', 'H', 'H', 'H', 'N', 'N', 'O', 'C', 'H', 'H', 'C', 'H', 'O'] -ATOM.RESET_MCONN: initial lig.madjnum=array([1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0]) 14 -ATOM.RESET_MCONN: updating ligand atoms and adjnum -ATOM.RESET_MCONN: initial lig.adjnum=array([5, 1, 1, 1, 1, 4, 4, 2, 3, 1, 1, 4, 1, 1]) 14 -ATOM.RESET_MCONN: initial lig.atoms[lig_idx].connec=4 lig.atoms[lig_idx].mconnec=0 -ATOM.RESET_MCONN: initial lig.madjnum[lig_idx]=1 -ATOM.RESET_MCONN: initial lig.adjnum[lig_idx]=5 -ATOM.RESET_MCONN: initial met.connec=7 met.mconnec=7 -ATOM.RESET_MCONN: initial lig.madjmat[lig_idx]=array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], dtype=object) lig.adjmat[lig_idx]=array([0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0], dtype=object) -ATOM.RESET_MCONN: final lig.madjnum=array([0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0]) -ATOM.RESET_MCONN: final lig.adjnum=array([4, 1, 1, 1, 1, 4, 4, 2, 3, 1, 1, 4, 1, 1]) -ATOM.RESET_MCONN: final lig.atoms[lig_idx].connec=4 lig.atoms[lig_idx].mconnec=0 -ATOM.RESET_MCONN: final lig.atoms[lig_idx].adjacency=[0, 4, 11, 21, 24] lig.atoms[lig_idx].metal_adjacency=[0] -ATOM.RESET_MCONN: final lig.madjnum[lig_idx]=0 -ATOM.RESET_MCONN: final lig.adjnum[lig_idx]=4 -ATOM.RESET_MCONN: resetting mconnec (and connec) for atom self.label='C' in molecule mol_idx=2 with metal met_idx=0 -ATOM.RESET_MCONN: updating molecule atoms and madjnum -ATOM.RESET_MCONN: mol.natoms=29 -ATOM.RESET_MCONN: mol.labels=['Co', 'C', 'C', 'C', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'N', 'N', 'O', 'O', 'N', 'N', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'O'] -ATOM.RESET_MCONN: initial mol.madjnum=array([8, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0]) 29 -ATOM.RESET_MCONN: updating molecule atoms and adjnum -ATOM.RESET_MCONN: initial mol.adjnum=array([8, 4, 5, 3, 1, 1, 1, 1, 1, 1, 1, 4, 4, 2, 1, 4, 4, 2, 5, 1, 1, 3, - 1, 1, 4, 1, 1, 1, 1]) 29 -ATOM.RESET_MCONN: initial mol.atoms[mol_idx].mconnec=0 mol.atoms[mol_idx].connec=4 -ATOM.RESET_MCONN: initial met.mconnec=7 met.connec=7 -ATOM.RESET_MCONN: initial mol.madjnum[mol_idx]=1 -ATOM.RESET_MCONN: initial mol.adjnum[mol_idx]=5 -ATOM.RESET_MCONN: initial mol.madjnum[met_idx]=8 mol.madjnum[mol_idx]=1 -ATOM.RESET_MCONN: initial mol.adjnum[met_idx]=8 mol.adjnum[mol_idx]=5 -ATOM.RESET_MCONN: initial mol.madjmat[met_idx,mol_idx]=1 mol.madjmat[mol_idx,met_idx]=1 -ATOM.RESET_MCONN: initial mol.adjmat[met_idx,mol_idx]=1 mol.adjmat[mol_idx,met_idx]=1 -ATOM.RESET_MCONN: final mol.atoms[mol_idx].connec=4 mol.atoms[mol_idx].mconnec=0 -ATOM.RESET_MCONN: final mol.atoms[mol_idx].adjacency=[4, 11, 21, 24] mol.atoms[mol_idx].metal_adjacency=[] -ATOM.RESET_MCONN: final met.connec=7 met.mconnec=7 -ATOM.RESET_MCONN: final met.adjacency=[11, 12, 13, 15, 16, 17, 18] met.metal_adjacency=[11, 12, 13, 15, 16, 17, 18] -ATOM.RESET_MCONN: final mol.madjnum[mol_idx]=0 -ATOM.RESET_MCONN: final mol.adjnum[mol_idx]=4 -ATOM.RESET_MCONN: final mol.madjnum[met_idx]=7 mol.madjnum[mol_idx]=0 -ATOM.RESET_MCONN: final mol.adjnum[met_idx]=7 mol.adjnum[mol_idx]=4 -ATOM.RESET_MCONN: final mol.madjmat[met_idx,mol_idx]=0 mol.madjmat[mol_idx,met_idx]=0 -ATOM.RESET_MCONN: final mol.adjmat[met_idx,mol_idx]=0 mol.adjmat[mol_idx,met_idx]=0 - Coordinating atom label=N with mconnec=1, group index 1 - evaluating coordination with metal Co - -------------- Cell2mol METAL Object -------------- - Version = 0.1 - Type = atom - Sub-Type = metal - Label = Co - Atomic Number = 27 - Index in Molecule = 0 - Metal Adjacency (mconnec) = 7 - Regular Adjacencies (connec) = 7 - Coordination Sphere Formula = C-N4-O2 ----------------------------------------------------- - -ADD_ATOM: Metalist length 1 -ADD_ATOM: Ligand Atoms 14 -ADD_ATOM: site= 5 -ADD_ATOM: target ligand atom N -ADD_ATOM: evaluating apos=array([11.932872, -1.93991 , 5.253399]) and tgt.coord=[11.76, 0.0, 5.217939] -ADD_ATOM: Chosen Metal index 0. H is added at site 5 - connectivity verified for atom N with ligand index 5 -enterting SPLIT_GROUP for the GROUP C-N with conn_idx=[1] -GROUP.SPLIT_GROUP: conn_idx=[1] -GROUP.SPLIT_GROUP: conn_labels=['N'] -SPILT_SPECIES: Laplacian lap=array([[0]]) -SPILT_SPECIES: graph=<1x1 sparse matrix of type '' - with 0 stored elements in Compressed Sparse Row format> -GROUP.SPLIT_GROUP: blocklist=[[0]] -GROUP.SPLIT_GROUP: block=[0] -Entering COORD_CORR_NONHAPTIC: - Coordinating atom label=N with mconnec=1, group index 0 - evaluating coordination with metal Co - -------------- Cell2mol METAL Object -------------- - Version = 0.1 - Type = atom - Sub-Type = metal - Label = Co - Atomic Number = 27 - Index in Molecule = 0 - Metal Adjacency (mconnec) = 7 - Regular Adjacencies (connec) = 7 - Coordination Sphere Formula = C-N4-O2 ----------------------------------------------------- - -ADD_ATOM: Metalist length 1 -ADD_ATOM: Ligand Atoms 14 -ADD_ATOM: site= 5 -ADD_ATOM: target ligand atom N -ADD_ATOM: evaluating apos=array([11.932872, -1.93991 , 5.253399]) and tgt.coord=[11.76, 0.0, 5.217939] -ADD_ATOM: Chosen Metal index 0. H is added at site 5 - connectivity verified for atom N with ligand index 5 -LIGAND.SPLIT_LIGAND: block=[3] -EXTRACT_FROM_LIST. received: entrylist=[3] old_array=[0, 5, 6, 7] -EXTRACT_FROM_LIST. received: idx=0 val=3 old_array[val]=7 -EXTRACT_FROM_LIST. new_array=array([7], dtype=object) -LIGAND.SPLIT_LIGAND: gr_indices=[7] -EXTRACT_FROM_LIST. received: entrylist=[3] old_array=['C', 'N', 'N', 'O'] -EXTRACT_FROM_LIST. received: idx=0 val=3 old_array[val]='O' -EXTRACT_FROM_LIST. new_array=array(['O'], dtype=object) -Entering COORD_CORR_NONHAPTIC: - Coordinating atom label=O with mconnec=1, group index 0 - evaluating coordination with metal Co - -------------- Cell2mol METAL Object -------------- - Version = 0.1 - Type = atom - Sub-Type = metal - Label = Co - Atomic Number = 27 - Index in Molecule = 0 - Metal Adjacency (mconnec) = 7 - Regular Adjacencies (connec) = 7 - Coordination Sphere Formula = C-N4-O2 ----------------------------------------------------- - -ADD_ATOM: Metalist length 1 -ADD_ATOM: Ligand Atoms 14 -ADD_ATOM: site= 7 -ADD_ATOM: target ligand atom O -ADD_ATOM: evaluating apos=array([13.087704, -0.095123, 6.541188]) and tgt.coord=[11.76, 0.0, 5.217939] -ADD_ATOM: Chosen Metal index 0. H is added at site 7 - connectivity verified for atom O with ligand index 7 -LIGAND.SPLIT_LIGAND: new group is found -LIGAND.SPLIT_LIGAND: block=[2] -EXTRACT_FROM_LIST. received: entrylist=[2] old_array=[0, 5, 6, 7] -EXTRACT_FROM_LIST. received: idx=0 val=2 old_array[val]=6 -EXTRACT_FROM_LIST. new_array=array([6], dtype=object) -LIGAND.SPLIT_LIGAND: gr_indices=[6] -EXTRACT_FROM_LIST. received: entrylist=[2] old_array=['C', 'N', 'N', 'O'] -EXTRACT_FROM_LIST. received: idx=0 val=2 old_array[val]='N' -EXTRACT_FROM_LIST. new_array=array(['N'], dtype=object) -Entering COORD_CORR_NONHAPTIC: - Coordinating atom label=N with mconnec=1, group index 0 - evaluating coordination with metal Co - -------------- Cell2mol METAL Object -------------- - Version = 0.1 - Type = atom - Sub-Type = metal - Label = Co - Atomic Number = 27 - Index in Molecule = 0 - Metal Adjacency (mconnec) = 7 - Regular Adjacencies (connec) = 7 - Coordination Sphere Formula = C-N4-O2 ----------------------------------------------------- - -ADD_ATOM: Metalist length 1 -ADD_ATOM: Ligand Atoms 14 -ADD_ATOM: site= 6 -ADD_ATOM: target ligand atom N -ADD_ATOM: evaluating apos=array([13.217064, -0.059171, 3.880506]) and tgt.coord=[11.76, 0.0, 5.217939] -ADD_ATOM: Chosen Metal index 0. H is added at site 6 - connectivity verified for atom N with ligand index 6 -LIGAND.SPLIT_LIGAND: new group is found -LIGAND.SPLIT_LIGAND: found groups ['N', 'O', 'N'] -[------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 1 - Formula = N - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = split_group - Number of Metals = 1 ---------------------------------------------------- -, ------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 1 - Formula = O - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = split_ligand - Number of Metals = 1 ---------------------------------------------------- -, ------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 1 - Formula = N - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = split_ligand - Number of Metals = 1 ---------------------------------------------------- -] - -LIGAND.SPLIT_LIGAND: splitting H7-C3-N2-O2 into groups -LIGAND.SPLIT_LIGAND: self.indices=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13] -LIGAND.SPLIT_LIGAND: connected_idx=[5, 6, 8, 9] -LIGAND.SPLIT_LIGAND: conn_labels=['N', 'O', 'N', 'C'] -SPILT_SPECIES: Laplacian lap=array([[ 0, 0, 0, 0], - [ 0, 0, 0, 0], - [ 0, 0, -1, 1], - [ 0, 0, 1, -1]]) -SPILT_SPECIES: graph=<4x4 sparse matrix of type '' - with 4 stored elements in Compressed Sparse Row format> -LIGAND.SPLIT_LIGAND: blocklist=[[2, 3], [1], [0]] -LIGAND.SPLIT_LIGAND: block=[2, 3] -EXTRACT_FROM_LIST. received: entrylist=[2, 3] old_array=[5, 6, 8, 9] -EXTRACT_FROM_LIST. received: idx=0 val=2 old_array[val]=8 -EXTRACT_FROM_LIST. received: idx=1 val=3 old_array[val]=9 -EXTRACT_FROM_LIST. new_array=array([8, 9], dtype=object) -LIGAND.SPLIT_LIGAND: gr_indices=[8, 9] -EXTRACT_FROM_LIST. received: entrylist=[2, 3] old_array=['N', 'O', 'N', 'C'] -EXTRACT_FROM_LIST. received: idx=0 val=2 old_array[val]='N' -EXTRACT_FROM_LIST. received: idx=1 val=3 old_array[val]='C' -EXTRACT_FROM_LIST. new_array=array(['N', 'C'], dtype=object) -Entering COORD_CORR_NONHAPTIC: - Coordinating atom label=N with mconnec=1, group index 0 - evaluating coordination with metal Co - -------------- Cell2mol METAL Object -------------- - Version = 0.1 - Type = atom - Sub-Type = metal - Label = Co - Atomic Number = 27 - Index in Molecule = 0 - Metal Adjacency (mconnec) = 7 - Regular Adjacencies (connec) = 7 - Coordination Sphere Formula = C-N4-O2 ----------------------------------------------------- - -ADD_ATOM: Metalist length 1 -ADD_ATOM: Ligand Atoms 14 -ADD_ATOM: site= 8 -ADD_ATOM: target ligand atom N -ADD_ATOM: evaluating apos=array([11.587128, 1.93991 , 5.253399]) and tgt.coord=[11.76, 0.0, 5.217939] -ADD_ATOM: Chosen Metal index 0. H is added at site 8 - connectivity verified for atom N with ligand index 8 - Coordinating atom label=C with mconnec=1, group index 1 - evaluating coordination with metal Co - -------------- Cell2mol METAL Object -------------- - Version = 0.1 - Type = atom - Sub-Type = metal - Label = Co - Atomic Number = 27 - Index in Molecule = 0 - Metal Adjacency (mconnec) = 7 - Regular Adjacencies (connec) = 7 - Coordination Sphere Formula = C-N4-O2 ----------------------------------------------------- - -ADD_ATOM: Metalist length 1 -ADD_ATOM: Ligand Atoms 14 -ADD_ATOM: site= 9 -ADD_ATOM: target ligand atom C -ADD_ATOM: evaluating apos=array([10.155936, 1.990093, 5.294769]) and tgt.coord=[11.76, 0.0, 5.217939] -ADD_ATOM: Chosen Metal index 0. H was added at site 9 but RESET due to connec=2 - correcting mconnec of atom C with ligand index 9 -ATOM.RESET_MCONN: resetting mconnec (and connec) for atom self.label='C' -ATOM.RESET_MCONN: initial self.connec=5 self.mconnec=1 -ATOM.RESET_MCONN: initial = self.adjacency=[0, 1, 3, 15, 19] self.metal_adjacency=[0] -ATOM.RESET_MCONN: initial met.connec=7 met.mconnec=7 -ATOM.RESET_MCONN: initial = met.adjacency=[11, 12, 13, 15, 16, 17, 18] met.metal_adjacency=[11, 12, 13, 15, 16, 17, 18] -ATOM.RESET_MCONN: resetting mconnec (and connec) for atom self.label='C' in ligadn lig_idx=9 -ATOM.RESET_MCONN: updating ligand atoms and madjnum -ATOM.RESET_MCONN: lig.natoms=14 -ATOM.RESET_MCONN: lig.labels=['C', 'C', 'H', 'H', 'H', 'N', 'O', 'O', 'N', 'C', 'H', 'H', 'H', 'H'] -ATOM.RESET_MCONN: initial lig.madjnum=array([0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0]) 14 -ATOM.RESET_MCONN: updating ligand atoms and adjnum -ATOM.RESET_MCONN: initial lig.adjnum=array([4, 3, 1, 1, 1, 4, 2, 1, 4, 5, 1, 1, 1, 1]) 14 -ATOM.RESET_MCONN: initial lig.atoms[lig_idx].connec=4 lig.atoms[lig_idx].mconnec=0 -ATOM.RESET_MCONN: initial lig.madjnum[lig_idx]=1 -ATOM.RESET_MCONN: initial lig.adjnum[lig_idx]=5 -ATOM.RESET_MCONN: initial met.connec=6 met.mconnec=6 -ATOM.RESET_MCONN: initial lig.madjmat[lig_idx]=array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], dtype=object) lig.adjmat[lig_idx]=array([1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0], dtype=object) -ATOM.RESET_MCONN: final lig.madjnum=array([0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0]) -ATOM.RESET_MCONN: final lig.adjnum=array([4, 3, 1, 1, 1, 4, 2, 1, 4, 4, 1, 1, 1, 1]) -ATOM.RESET_MCONN: final lig.atoms[lig_idx].connec=4 lig.atoms[lig_idx].mconnec=0 -ATOM.RESET_MCONN: final lig.atoms[lig_idx].adjacency=[0, 1, 3, 15, 19] lig.atoms[lig_idx].metal_adjacency=[0] -ATOM.RESET_MCONN: final lig.madjnum[lig_idx]=0 -ATOM.RESET_MCONN: final lig.adjnum[lig_idx]=4 -ATOM.RESET_MCONN: resetting mconnec (and connec) for atom self.label='C' in molecule mol_idx=18 with metal met_idx=0 -ATOM.RESET_MCONN: updating molecule atoms and madjnum -ATOM.RESET_MCONN: mol.natoms=29 -ATOM.RESET_MCONN: mol.labels=['Co', 'C', 'C', 'C', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'N', 'N', 'O', 'O', 'N', 'N', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'O'] -ATOM.RESET_MCONN: initial mol.madjnum=array([7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0]) 29 -ATOM.RESET_MCONN: updating molecule atoms and adjnum -ATOM.RESET_MCONN: initial mol.adjnum=array([7, 4, 4, 3, 1, 1, 1, 1, 1, 1, 1, 4, 4, 2, 1, 4, 4, 2, 5, 1, 1, 3, - 1, 1, 4, 1, 1, 1, 1]) 29 -ATOM.RESET_MCONN: initial mol.atoms[mol_idx].mconnec=0 mol.atoms[mol_idx].connec=4 -ATOM.RESET_MCONN: initial met.mconnec=6 met.connec=6 -ATOM.RESET_MCONN: initial mol.madjnum[mol_idx]=1 -ATOM.RESET_MCONN: initial mol.adjnum[mol_idx]=5 -ATOM.RESET_MCONN: initial mol.madjnum[met_idx]=7 mol.madjnum[mol_idx]=1 -ATOM.RESET_MCONN: initial mol.adjnum[met_idx]=7 mol.adjnum[mol_idx]=5 -ATOM.RESET_MCONN: initial mol.madjmat[met_idx,mol_idx]=1 mol.madjmat[mol_idx,met_idx]=1 -ATOM.RESET_MCONN: initial mol.adjmat[met_idx,mol_idx]=1 mol.adjmat[mol_idx,met_idx]=1 -ATOM.RESET_MCONN: final mol.atoms[mol_idx].connec=4 mol.atoms[mol_idx].mconnec=0 -ATOM.RESET_MCONN: final mol.atoms[mol_idx].adjacency=[1, 3, 15, 19] mol.atoms[mol_idx].metal_adjacency=[] -ATOM.RESET_MCONN: final met.connec=6 met.mconnec=6 -ATOM.RESET_MCONN: final met.adjacency=[11, 12, 13, 15, 16, 17] met.metal_adjacency=[11, 12, 13, 15, 16, 17] -ATOM.RESET_MCONN: final mol.madjnum[mol_idx]=0 -ATOM.RESET_MCONN: final mol.adjnum[mol_idx]=4 -ATOM.RESET_MCONN: final mol.madjnum[met_idx]=6 mol.madjnum[mol_idx]=0 -ATOM.RESET_MCONN: final mol.adjnum[met_idx]=6 mol.adjnum[mol_idx]=4 -ATOM.RESET_MCONN: final mol.madjmat[met_idx,mol_idx]=0 mol.madjmat[mol_idx,met_idx]=0 -ATOM.RESET_MCONN: final mol.adjmat[met_idx,mol_idx]=0 mol.adjmat[mol_idx,met_idx]=0 -enterting SPLIT_GROUP for the GROUP C-N with conn_idx=[0] -GROUP.SPLIT_GROUP: conn_idx=[0] -GROUP.SPLIT_GROUP: conn_labels=['N'] -SPILT_SPECIES: Laplacian lap=array([[0]]) -SPILT_SPECIES: graph=<1x1 sparse matrix of type '' - with 0 stored elements in Compressed Sparse Row format> -GROUP.SPLIT_GROUP: blocklist=[[0]] -GROUP.SPLIT_GROUP: block=[0] -Entering COORD_CORR_NONHAPTIC: - Coordinating atom label=N with mconnec=1, group index 0 - evaluating coordination with metal Co - -------------- Cell2mol METAL Object -------------- - Version = 0.1 - Type = atom - Sub-Type = metal - Label = Co - Atomic Number = 27 - Index in Molecule = 0 - Metal Adjacency (mconnec) = 6 - Regular Adjacencies (connec) = 6 - Coordination Sphere Formula = N4-O2 ----------------------------------------------------- - -ADD_ATOM: Metalist length 1 -ADD_ATOM: Ligand Atoms 14 -ADD_ATOM: site= 8 -ADD_ATOM: target ligand atom N -ADD_ATOM: evaluating apos=array([11.587128, 1.93991 , 5.253399]) and tgt.coord=[11.76, 0.0, 5.217939] -ADD_ATOM: Chosen Metal index 0. H is added at site 8 - connectivity verified for atom N with ligand index 8 -LIGAND.SPLIT_LIGAND: block=[1] -EXTRACT_FROM_LIST. received: entrylist=[1] old_array=[5, 6, 8, 9] -EXTRACT_FROM_LIST. received: idx=0 val=1 old_array[val]=6 -EXTRACT_FROM_LIST. new_array=array([6], dtype=object) -LIGAND.SPLIT_LIGAND: gr_indices=[6] -EXTRACT_FROM_LIST. received: entrylist=[1] old_array=['N', 'O', 'N', 'C'] -EXTRACT_FROM_LIST. received: idx=0 val=1 old_array[val]='O' -EXTRACT_FROM_LIST. new_array=array(['O'], dtype=object) -Entering COORD_CORR_NONHAPTIC: - Coordinating atom label=O with mconnec=1, group index 0 - evaluating coordination with metal Co - -------------- Cell2mol METAL Object -------------- - Version = 0.1 - Type = atom - Sub-Type = metal - Label = Co - Atomic Number = 27 - Index in Molecule = 0 - Metal Adjacency (mconnec) = 6 - Regular Adjacencies (connec) = 6 - Coordination Sphere Formula = N4-O2 ----------------------------------------------------- - -ADD_ATOM: Metalist length 1 -ADD_ATOM: Ligand Atoms 14 -ADD_ATOM: site= 6 -ADD_ATOM: target ligand atom O -ADD_ATOM: evaluating apos=array([10.432296, 0.095123, 6.541188]) and tgt.coord=[11.76, 0.0, 5.217939] -ADD_ATOM: Chosen Metal index 0. H is added at site 6 - connectivity verified for atom O with ligand index 6 -LIGAND.SPLIT_LIGAND: new group is found -LIGAND.SPLIT_LIGAND: block=[0] -EXTRACT_FROM_LIST. received: entrylist=[0] old_array=[5, 6, 8, 9] -EXTRACT_FROM_LIST. received: idx=0 val=0 old_array[val]=5 -EXTRACT_FROM_LIST. new_array=array([5], dtype=object) -LIGAND.SPLIT_LIGAND: gr_indices=[5] -EXTRACT_FROM_LIST. received: entrylist=[0] old_array=['N', 'O', 'N', 'C'] -EXTRACT_FROM_LIST. received: idx=0 val=0 old_array[val]='N' -EXTRACT_FROM_LIST. new_array=array(['N'], dtype=object) -Entering COORD_CORR_NONHAPTIC: - Coordinating atom label=N with mconnec=1, group index 0 - evaluating coordination with metal Co - -------------- Cell2mol METAL Object -------------- - Version = 0.1 - Type = atom - Sub-Type = metal - Label = Co - Atomic Number = 27 - Index in Molecule = 0 - Metal Adjacency (mconnec) = 6 - Regular Adjacencies (connec) = 6 - Coordination Sphere Formula = N4-O2 ----------------------------------------------------- - -ADD_ATOM: Metalist length 1 -ADD_ATOM: Ligand Atoms 14 -ADD_ATOM: site= 5 -ADD_ATOM: target ligand atom N -ADD_ATOM: evaluating apos=array([10.302936, 0.059171, 3.880506]) and tgt.coord=[11.76, 0.0, 5.217939] -ADD_ATOM: Chosen Metal index 0. H is added at site 5 - connectivity verified for atom N with ligand index 5 -LIGAND.SPLIT_LIGAND: new group is found -LIGAND.SPLIT_LIGAND: found groups ['N', 'O', 'N'] -[------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 1 - Formula = N - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = split_group - Number of Metals = 1 ---------------------------------------------------- -, ------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 1 - Formula = O - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = split_ligand - Number of Metals = 1 ---------------------------------------------------- -, ------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 1 - Formula = N - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = split_ligand - Number of Metals = 1 ---------------------------------------------------- -] -LIGAND.Get_denticity: checking connectivity of ligand H7-C3-N2-O2 -LIGAND.Get_denticity: initial connectivity is 3 -LIGAND.Get_denticity: final connectivity of ligand H7-C3-N2-O2 is 3 -LIGAND.Get_denticity: checking connectivity of ligand H7-C3-N2-O2 -LIGAND.Get_denticity: initial connectivity is 3 -LIGAND.Get_denticity: final connectivity of ligand H7-C3-N2-O2 is 3 - -METAL.Get_coord_geometry: Co -METAL.Get_coord_geometry: -coord_group=[------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 1 - Formula = N - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = split_group - Number of Metals = 1 ---------------------------------------------------- -, ------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 1 - Formula = O - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = split_ligand - Number of Metals = 1 ---------------------------------------------------- -, ------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 1 - Formula = N - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = split_ligand - Number of Metals = 1 ---------------------------------------------------- -, ------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 1 - Formula = N - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = split_group - Number of Metals = 1 ---------------------------------------------------- -, ------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 1 - Formula = O - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = split_ligand - Number of Metals = 1 ---------------------------------------------------- -, ------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 1 - Formula = N - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = split_ligand - Number of Metals = 1 ---------------------------------------------------- -] -METAL.Get_coord_geometry: coord_nr=6 -SHAPE_MEASURE: symbols=['Co', 'N', 'O', 'N', 'N', 'O', 'N'] -SHAPE_MEASURE: positions=[[11.76, 0.0, 5.217939], [11.932872, -1.9399100000000002, 5.253399], [13.087704, -0.09512300000000007, 6.541188], [13.217064, -0.059171000000000085, 3.880506], array([11.587128, 1.93991 , 5.253399]), [10.432296, 0.09512300000000032, 6.541188], array([10.302936, 0.059171, 3.880506])] -SHAPE_MEASURE: coordination number of metal center 6 -SHAPE_MEASURE: connectivity of metal center(1) [[1, 2], [1, 3], [1, 4], [1, 5], [1, 6], [1, 7]] -DEFINE_coordination_geometry: The number of coordinating points: 6 -DEFINE_coordination_geometry: {'Hexagon': 29.982, 'Pentagonal pyramidal': 27.962, 'Octahedral': 0.481, 'Trigonal prismatic': 14.882} -DEFINE_coordination_geometry: The type of hapticity : [] -DEFINE_coordination_geometry: The most likely geometry is 'Octahedral' with deviation value 0.481 -METAL.Get_coord_geometry: self.coord_geometry='Octahedral' self.geom_deviation=0.481 -METAL.Get_relative_metal_radius: diff_list=[1.238, 1.217, 1.269, 1.238, 1.217, 1.269] -METAL.Get_relative_metal_radius: average=1.241 -METAL.Get_coord_geometry: self.rel_metal_radius=0.985 -COMBINE: reordered_newmolec.formula='H14-C6-N4-O4-Co' -COMBINE: reordered_newmolec=------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 29 - Formula = H14-C6-N4-O4-Co - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Number of Ligands = 2 - Number of Metals = 1 ---------------------------------------------------- - -COMPARE_SPECIES. Comparing: -H14-C6-N4-O4-Co -H14-C6-N4-O4-Co -mol1.adj_types=array([[0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0], - ..., - [0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0]]) -mol2.adj_types=array([[0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0], - ..., - [0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0]]) -COMPARE_SPECIES. kdx ldx elem1 - elem2 : reordered - reference -COMBINE: Fragment H14-C6-N4-O4-Co added to goodlist with reordered_newmolec.cell_indices=[8, 1, 9, 16, 11, 13, 4, 2, 24, 26, 25, 14, 7, 17, 18, 6, 15, 20, 0, 3, 5, 19, 12, 28, 10, 22, 27, 23, 21] -SEQUENTIAL: goodlist 1 ['H14-C6-N4-O4-Co'] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 0 [] -SEQUENTIAL: Found molecule H14-C6-N4-O4-Co - -Fragments to allocate: 0 1 out of 0 1 -sublist 2 ['H12-C6-N4-O4-Co', 'H'] -list1 1 ['H12-C6-N4-O4-Co'] -list2 2 ['H', 'H'] -keeplist1 0 [] -keeplist2 1 ['H'] - -SEQUENTIAL All iteration 12 with 1 and 2 Remaining in each list -SEQUENTIAL All sending ['Co', 'C', 'C', 'C', 'C', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'N', 'N', 'N', 'N', 'C', 'O', 'O', 'C', 'O', 'O'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 1 -SPILT_SPECIES: Laplacian lap=array([[-8, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 1, 1, 0, 1, 0, 0, 1, 0, 0], - [ 1, -5, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, - 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0], - [ 1, 0, -5, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0], - [ 0, 1, 0, -4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 1, 0, -4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0], - [ 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, -4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1], - [ 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, -3, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, -4, 0, 0, 0, 0, 0, 0, 0, 0], - [ 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, -4, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, -3, 1, 1, 0, 0, 0, 0], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1, -2, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1, 0, -1, 0, 0, 0, 0], - [ 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, -3, 1, 1, 0], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, -2, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1]]) -SPILT_SPECIES: graph=<28x28 sparse matrix of type '' - with 94 stored elements in Compressed Sparse Row format> -COMBINE. received molecule: ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 28 - Formula = H13-C6-N4-O4-Co - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES ---------------------------------------------------- - from merge fragments -COMBINE: Fragment H13-C6-N4-O4-Co added to avglist -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 1 ['H13-C6-N4-O4-Co'] -SEQUENTIAL: badlist 0 [] - Increased Threshold_tmat. Now: 0.6000000000000001 - Maxsize of the translation matrix is= 8 - -Fragments to allocate: 0 0 out of 0 0 -sublist 2 ['H13-C6-N4-O4-Co', 'H'] -list1 1 ['H13-C6-N4-O4-Co'] -list2 1 ['H'] -keeplist1 0 [] -keeplist2 0 [] - -SEQUENTIAL All iteration 1 with 1 and 1 Remaining in each list -SEQUENTIAL All sending ['Co', 'C', 'C', 'C', 'C', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'N', 'N', 'N', 'N', 'C', 'O', 'O', 'C', 'O', 'O', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 1 -SPILT_SPECIES: Laplacian lap=array([[-8, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 1, 1, 0, 1, 0, 0, 1, 0, 0, 0], - [ 1, -5, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, - 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0], - [ 1, 0, -5, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0], - [ 0, 1, 0, -4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 1, 0, -4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, -4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0], - [ 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, -4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1], - [ 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, -4, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, -4, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, -3, 1, 1, 0, 0, 0, 0, 0], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1, -2, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1, 0, -1, 0, 0, 0, 0, 0], - [ 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, -3, 1, 1, 0, 0], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, -2, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1]]) -SPILT_SPECIES: graph=<29x29 sparse matrix of type '' - with 97 stored elements in Compressed Sparse Row format> -COMBINE. received molecule: ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 29 - Formula = H14-C6-N4-O4-Co - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES ---------------------------------------------------- - from merge fragments - -LIGAND.SPLIT_LIGAND: splitting H7-C3-N2-O2 into groups -LIGAND.SPLIT_LIGAND: self.indices=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13] -LIGAND.SPLIT_LIGAND: connected_idx=[0, 1, 2, 3] -LIGAND.SPLIT_LIGAND: conn_labels=['N', 'N', 'O', 'C'] -SPILT_SPECIES: Laplacian lap=array([[-1, 0, 0, 1], - [ 0, 0, 0, 0], - [ 0, 0, 0, 0], - [ 1, 0, 0, -1]]) -SPILT_SPECIES: graph=<4x4 sparse matrix of type '' - with 4 stored elements in Compressed Sparse Row format> -LIGAND.SPLIT_LIGAND: blocklist=[[0, 3], [2], [1]] -LIGAND.SPLIT_LIGAND: block=[0, 3] -EXTRACT_FROM_LIST. received: entrylist=[0, 3] old_array=[0, 1, 2, 3] -EXTRACT_FROM_LIST. received: idx=0 val=0 old_array[val]=0 -EXTRACT_FROM_LIST. received: idx=1 val=3 old_array[val]=3 -EXTRACT_FROM_LIST. new_array=array([0, 3], dtype=object) -LIGAND.SPLIT_LIGAND: gr_indices=[0, 3] -EXTRACT_FROM_LIST. received: entrylist=[0, 3] old_array=['N', 'N', 'O', 'C'] -EXTRACT_FROM_LIST. received: idx=0 val=0 old_array[val]='N' -EXTRACT_FROM_LIST. received: idx=1 val=3 old_array[val]='C' -EXTRACT_FROM_LIST. new_array=array(['N', 'C'], dtype=object) -Entering COORD_CORR_NONHAPTIC: - Coordinating atom label=N with mconnec=1, group index 0 - evaluating coordination with metal Co - -------------- Cell2mol METAL Object -------------- - Version = 0.1 - Type = atom - Sub-Type = metal - Label = Co - Atomic Number = 27 - Index in Molecule = 0 - Metal Adjacency (mconnec) = 8 - Regular Adjacencies (connec) = 8 ----------------------------------------------------- - -ADD_ATOM: Metalist length 1 -ADD_ATOM: Ligand Atoms 14 -ADD_ATOM: site= 0 -ADD_ATOM: target ligand atom N -ADD_ATOM: evaluating apos=array([6.052872, 5.68491 , 0.656601]) and tgt.coord=array([5.88 , 3.745 , 0.692061]) -ADD_ATOM: Chosen Metal index 0. H is added at site 0 - connectivity verified for atom N with ligand index 0 - Coordinating atom label=C with mconnec=1, group index 1 - evaluating coordination with metal Co - -------------- Cell2mol METAL Object -------------- - Version = 0.1 - Type = atom - Sub-Type = metal - Label = Co - Atomic Number = 27 - Index in Molecule = 0 - Metal Adjacency (mconnec) = 8 - Regular Adjacencies (connec) = 8 ----------------------------------------------------- - -ADD_ATOM: Metalist length 1 -ADD_ATOM: Ligand Atoms 14 -ADD_ATOM: site= 3 -ADD_ATOM: target ligand atom C -ADD_ATOM: evaluating apos=array([7.484064, 5.735093, 0.615231]) and tgt.coord=array([5.88 , 3.745 , 0.692061]) -ADD_ATOM: Chosen Metal index 0. H was added at site 3 but RESET due to connec=2 - correcting mconnec of atom C with ligand index 3 -ATOM.RESET_MCONN: resetting mconnec (and connec) for atom self.label='C' -ATOM.RESET_MCONN: initial self.connec=5 self.mconnec=1 -ATOM.RESET_MCONN: initial = self.adjacency=[0, 15, 21, 24, 25] self.metal_adjacency=[0] -ATOM.RESET_MCONN: initial met.connec=8 met.mconnec=8 -ATOM.RESET_MCONN: initial = met.adjacency=[2, 11, 12, 13, 15, 16, 17, 18] met.metal_adjacency=[2, 11, 12, 13, 15, 16, 17, 18] -ATOM.RESET_MCONN: resetting mconnec (and connec) for atom self.label='C' in ligadn lig_idx=3 -ATOM.RESET_MCONN: updating ligand atoms and madjnum -ATOM.RESET_MCONN: lig.natoms=14 -ATOM.RESET_MCONN: lig.labels=['N', 'N', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'O'] -ATOM.RESET_MCONN: initial lig.madjnum=array([1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]) 14 -ATOM.RESET_MCONN: updating ligand atoms and adjnum -ATOM.RESET_MCONN: initial lig.adjnum=array([4, 4, 2, 5, 1, 1, 4, 1, 1, 3, 1, 1, 1, 1]) 14 -ATOM.RESET_MCONN: initial lig.atoms[lig_idx].connec=4 lig.atoms[lig_idx].mconnec=0 -ATOM.RESET_MCONN: initial lig.madjnum[lig_idx]=1 -ATOM.RESET_MCONN: initial lig.adjnum[lig_idx]=5 -ATOM.RESET_MCONN: initial met.connec=7 met.mconnec=7 -ATOM.RESET_MCONN: initial lig.madjmat[lig_idx]=array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], dtype=object) lig.adjmat[lig_idx]=array([1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0], dtype=object) -ATOM.RESET_MCONN: final lig.madjnum=array([1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]) -ATOM.RESET_MCONN: final lig.adjnum=array([4, 4, 2, 4, 1, 1, 4, 1, 1, 3, 1, 1, 1, 1]) -ATOM.RESET_MCONN: final lig.atoms[lig_idx].connec=4 lig.atoms[lig_idx].mconnec=0 -ATOM.RESET_MCONN: final lig.atoms[lig_idx].adjacency=[0, 15, 21, 24, 25] lig.atoms[lig_idx].metal_adjacency=[0] -ATOM.RESET_MCONN: final lig.madjnum[lig_idx]=0 -ATOM.RESET_MCONN: final lig.adjnum[lig_idx]=4 -ATOM.RESET_MCONN: resetting mconnec (and connec) for atom self.label='C' in molecule mol_idx=18 with metal met_idx=0 -ATOM.RESET_MCONN: updating molecule atoms and madjnum -ATOM.RESET_MCONN: mol.natoms=29 -ATOM.RESET_MCONN: mol.labels=['Co', 'C', 'C', 'C', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'N', 'N', 'O', 'O', 'N', 'N', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'O'] -ATOM.RESET_MCONN: initial mol.madjnum=array([8, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0]) 29 -ATOM.RESET_MCONN: updating molecule atoms and adjnum -ATOM.RESET_MCONN: initial mol.adjnum=array([8, 3, 5, 4, 1, 1, 1, 1, 1, 1, 1, 4, 4, 2, 1, 4, 4, 2, 5, 1, 1, 4, - 1, 1, 3, 1, 1, 1, 1]) 29 -ATOM.RESET_MCONN: initial mol.atoms[mol_idx].mconnec=0 mol.atoms[mol_idx].connec=4 -ATOM.RESET_MCONN: initial met.mconnec=7 met.connec=7 -ATOM.RESET_MCONN: initial mol.madjnum[mol_idx]=1 -ATOM.RESET_MCONN: initial mol.adjnum[mol_idx]=5 -ATOM.RESET_MCONN: initial mol.madjnum[met_idx]=8 mol.madjnum[mol_idx]=1 -ATOM.RESET_MCONN: initial mol.adjnum[met_idx]=8 mol.adjnum[mol_idx]=5 -ATOM.RESET_MCONN: initial mol.madjmat[met_idx,mol_idx]=1 mol.madjmat[mol_idx,met_idx]=1 -ATOM.RESET_MCONN: initial mol.adjmat[met_idx,mol_idx]=1 mol.adjmat[mol_idx,met_idx]=1 -ATOM.RESET_MCONN: final mol.atoms[mol_idx].connec=4 mol.atoms[mol_idx].mconnec=0 -ATOM.RESET_MCONN: final mol.atoms[mol_idx].adjacency=[15, 21, 24, 25] mol.atoms[mol_idx].metal_adjacency=[] -ATOM.RESET_MCONN: final met.connec=7 met.mconnec=7 -ATOM.RESET_MCONN: final met.adjacency=[2, 11, 12, 13, 15, 16, 17] met.metal_adjacency=[2, 11, 12, 13, 15, 16, 17] -ATOM.RESET_MCONN: final mol.madjnum[mol_idx]=0 -ATOM.RESET_MCONN: final mol.adjnum[mol_idx]=4 -ATOM.RESET_MCONN: final mol.madjnum[met_idx]=7 mol.madjnum[mol_idx]=0 -ATOM.RESET_MCONN: final mol.adjnum[met_idx]=7 mol.adjnum[mol_idx]=4 -ATOM.RESET_MCONN: final mol.madjmat[met_idx,mol_idx]=0 mol.madjmat[mol_idx,met_idx]=0 -ATOM.RESET_MCONN: final mol.adjmat[met_idx,mol_idx]=0 mol.adjmat[mol_idx,met_idx]=0 -enterting SPLIT_GROUP for the GROUP C-N with conn_idx=[0] -GROUP.SPLIT_GROUP: conn_idx=[0] -GROUP.SPLIT_GROUP: conn_labels=['N'] -SPILT_SPECIES: Laplacian lap=array([[0]]) -SPILT_SPECIES: graph=<1x1 sparse matrix of type '' - with 0 stored elements in Compressed Sparse Row format> -GROUP.SPLIT_GROUP: blocklist=[[0]] -GROUP.SPLIT_GROUP: block=[0] -Entering COORD_CORR_NONHAPTIC: - Coordinating atom label=N with mconnec=1, group index 0 - evaluating coordination with metal Co - -------------- Cell2mol METAL Object -------------- - Version = 0.1 - Type = atom - Sub-Type = metal - Label = Co - Atomic Number = 27 - Index in Molecule = 0 - Metal Adjacency (mconnec) = 7 - Regular Adjacencies (connec) = 7 - Coordination Sphere Formula = C-N4-O2 ----------------------------------------------------- - -ADD_ATOM: Metalist length 1 -ADD_ATOM: Ligand Atoms 14 -ADD_ATOM: site= 0 -ADD_ATOM: target ligand atom N -ADD_ATOM: evaluating apos=array([6.052872, 5.68491 , 0.656601]) and tgt.coord=array([5.88 , 3.745 , 0.692061]) -ADD_ATOM: Chosen Metal index 0. H is added at site 0 - connectivity verified for atom N with ligand index 0 -LIGAND.SPLIT_LIGAND: block=[2] -EXTRACT_FROM_LIST. received: entrylist=[2] old_array=[0, 1, 2, 3] -EXTRACT_FROM_LIST. received: idx=0 val=2 old_array[val]=2 -EXTRACT_FROM_LIST. new_array=array([2], dtype=object) -LIGAND.SPLIT_LIGAND: gr_indices=[2] -EXTRACT_FROM_LIST. received: entrylist=[2] old_array=['N', 'N', 'O', 'C'] -EXTRACT_FROM_LIST. received: idx=0 val=2 old_array[val]='O' -EXTRACT_FROM_LIST. new_array=array(['O'], dtype=object) -Entering COORD_CORR_NONHAPTIC: - Coordinating atom label=O with mconnec=1, group index 0 - evaluating coordination with metal Co - -------------- Cell2mol METAL Object -------------- - Version = 0.1 - Type = atom - Sub-Type = metal - Label = Co - Atomic Number = 27 - Index in Molecule = 0 - Metal Adjacency (mconnec) = 7 - Regular Adjacencies (connec) = 7 - Coordination Sphere Formula = C-N4-O2 ----------------------------------------------------- - -ADD_ATOM: Metalist length 1 -ADD_ATOM: Ligand Atoms 14 -ADD_ATOM: site= 2 -ADD_ATOM: target ligand atom O -ADD_ATOM: evaluating apos=array([ 7.207704, 3.840123, -0.631188]) and tgt.coord=array([5.88 , 3.745 , 0.692061]) -ADD_ATOM: Chosen Metal index 0. H is added at site 2 - connectivity verified for atom O with ligand index 2 -LIGAND.SPLIT_LIGAND: new group is found -LIGAND.SPLIT_LIGAND: block=[1] -EXTRACT_FROM_LIST. received: entrylist=[1] old_array=[0, 1, 2, 3] -EXTRACT_FROM_LIST. received: idx=0 val=1 old_array[val]=1 -EXTRACT_FROM_LIST. new_array=array([1], dtype=object) -LIGAND.SPLIT_LIGAND: gr_indices=[1] -EXTRACT_FROM_LIST. received: entrylist=[1] old_array=['N', 'N', 'O', 'C'] -EXTRACT_FROM_LIST. received: idx=0 val=1 old_array[val]='N' -EXTRACT_FROM_LIST. new_array=array(['N'], dtype=object) -Entering COORD_CORR_NONHAPTIC: - Coordinating atom label=N with mconnec=1, group index 0 - evaluating coordination with metal Co - -------------- Cell2mol METAL Object -------------- - Version = 0.1 - Type = atom - Sub-Type = metal - Label = Co - Atomic Number = 27 - Index in Molecule = 0 - Metal Adjacency (mconnec) = 7 - Regular Adjacencies (connec) = 7 - Coordination Sphere Formula = C-N4-O2 ----------------------------------------------------- - -ADD_ATOM: Metalist length 1 -ADD_ATOM: Ligand Atoms 14 -ADD_ATOM: site= 1 -ADD_ATOM: target ligand atom N -ADD_ATOM: evaluating apos=array([7.337064, 3.804171, 2.029494]) and tgt.coord=array([5.88 , 3.745 , 0.692061]) -ADD_ATOM: Chosen Metal index 0. H is added at site 1 - connectivity verified for atom N with ligand index 1 -LIGAND.SPLIT_LIGAND: new group is found -LIGAND.SPLIT_LIGAND: found groups ['N', 'O', 'N'] -[------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 1 - Formula = N - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = split_group - Number of Metals = 1 ---------------------------------------------------- -, ------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 1 - Formula = O - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = split_ligand - Number of Metals = 1 ---------------------------------------------------- -, ------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 1 - Formula = N - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = split_ligand - Number of Metals = 1 ---------------------------------------------------- -] - -LIGAND.SPLIT_LIGAND: splitting H7-C3-N2-O2 into groups -LIGAND.SPLIT_LIGAND: self.indices=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13] -LIGAND.SPLIT_LIGAND: connected_idx=[1, 10, 11, 12] -LIGAND.SPLIT_LIGAND: conn_labels=['C', 'N', 'N', 'O'] -SPILT_SPECIES: Laplacian lap=array([[-1, 1, 0, 0], - [ 1, -1, 0, 0], - [ 0, 0, 0, 0], - [ 0, 0, 0, 0]]) -SPILT_SPECIES: graph=<4x4 sparse matrix of type '' - with 4 stored elements in Compressed Sparse Row format> -LIGAND.SPLIT_LIGAND: blocklist=[[0, 1], [3], [2]] -LIGAND.SPLIT_LIGAND: block=[0, 1] -EXTRACT_FROM_LIST. received: entrylist=[0, 1] old_array=[1, 10, 11, 12] -EXTRACT_FROM_LIST. received: idx=0 val=0 old_array[val]=1 -EXTRACT_FROM_LIST. received: idx=1 val=1 old_array[val]=10 -EXTRACT_FROM_LIST. new_array=array([1, 10], dtype=object) -LIGAND.SPLIT_LIGAND: gr_indices=[1, 10] -EXTRACT_FROM_LIST. received: entrylist=[0, 1] old_array=['C', 'N', 'N', 'O'] -EXTRACT_FROM_LIST. received: idx=0 val=0 old_array[val]='C' -EXTRACT_FROM_LIST. received: idx=1 val=1 old_array[val]='N' -EXTRACT_FROM_LIST. new_array=array(['C', 'N'], dtype=object) -Entering COORD_CORR_NONHAPTIC: - Coordinating atom label=C with mconnec=1, group index 0 - evaluating coordination with metal Co - -------------- Cell2mol METAL Object -------------- - Version = 0.1 - Type = atom - Sub-Type = metal - Label = Co - Atomic Number = 27 - Index in Molecule = 0 - Metal Adjacency (mconnec) = 7 - Regular Adjacencies (connec) = 7 - Coordination Sphere Formula = C-N4-O2 ----------------------------------------------------- - -ADD_ATOM: Metalist length 1 -ADD_ATOM: Ligand Atoms 14 -ADD_ATOM: site= 1 -ADD_ATOM: target ligand atom C -ADD_ATOM: evaluating apos=array([4.275936, 1.754907, 0.615231]) and tgt.coord=array([5.88 , 3.745 , 0.692061]) -ADD_ATOM: Chosen Metal index 0. H was added at site 1 but RESET due to connec=2 - correcting mconnec of atom C with ligand index 1 -ATOM.RESET_MCONN: resetting mconnec (and connec) for atom self.label='C' -ATOM.RESET_MCONN: initial self.connec=5 self.mconnec=1 -ATOM.RESET_MCONN: initial = self.adjacency=[0, 1, 3, 8, 11] self.metal_adjacency=[0] -ATOM.RESET_MCONN: initial met.connec=7 met.mconnec=7 -ATOM.RESET_MCONN: initial = met.adjacency=[2, 11, 12, 13, 15, 16, 17] met.metal_adjacency=[2, 11, 12, 13, 15, 16, 17] -ATOM.RESET_MCONN: resetting mconnec (and connec) for atom self.label='C' in ligadn lig_idx=1 -ATOM.RESET_MCONN: updating ligand atoms and madjnum -ATOM.RESET_MCONN: lig.natoms=14 -ATOM.RESET_MCONN: lig.labels=['C', 'C', 'C', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'N', 'N', 'O', 'O'] -ATOM.RESET_MCONN: initial lig.madjnum=array([0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0]) 14 -ATOM.RESET_MCONN: updating ligand atoms and adjnum -ATOM.RESET_MCONN: initial lig.adjnum=array([3, 5, 4, 1, 1, 1, 1, 1, 1, 1, 4, 4, 2, 1]) 14 -ATOM.RESET_MCONN: initial lig.atoms[lig_idx].connec=4 lig.atoms[lig_idx].mconnec=0 -ATOM.RESET_MCONN: initial lig.madjnum[lig_idx]=1 -ATOM.RESET_MCONN: initial lig.adjnum[lig_idx]=5 -ATOM.RESET_MCONN: initial met.connec=6 met.mconnec=6 -ATOM.RESET_MCONN: initial lig.madjmat[lig_idx]=array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], dtype=object) lig.adjmat[lig_idx]=array([1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0], dtype=object) -ATOM.RESET_MCONN: final lig.madjnum=array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0]) -ATOM.RESET_MCONN: final lig.adjnum=array([3, 4, 4, 1, 1, 1, 1, 1, 1, 1, 4, 4, 2, 1]) -ATOM.RESET_MCONN: final lig.atoms[lig_idx].connec=4 lig.atoms[lig_idx].mconnec=0 -ATOM.RESET_MCONN: final lig.atoms[lig_idx].adjacency=[0, 1, 3, 8, 11] lig.atoms[lig_idx].metal_adjacency=[0] -ATOM.RESET_MCONN: final lig.madjnum[lig_idx]=0 -ATOM.RESET_MCONN: final lig.adjnum[lig_idx]=4 -ATOM.RESET_MCONN: resetting mconnec (and connec) for atom self.label='C' in molecule mol_idx=2 with metal met_idx=0 -ATOM.RESET_MCONN: updating molecule atoms and madjnum -ATOM.RESET_MCONN: mol.natoms=29 -ATOM.RESET_MCONN: mol.labels=['Co', 'C', 'C', 'C', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'N', 'N', 'O', 'O', 'N', 'N', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'O'] -ATOM.RESET_MCONN: initial mol.madjnum=array([7, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0]) 29 -ATOM.RESET_MCONN: updating molecule atoms and adjnum -ATOM.RESET_MCONN: initial mol.adjnum=array([7, 3, 5, 4, 1, 1, 1, 1, 1, 1, 1, 4, 4, 2, 1, 4, 4, 2, 4, 1, 1, 4, - 1, 1, 3, 1, 1, 1, 1]) 29 -ATOM.RESET_MCONN: initial mol.atoms[mol_idx].mconnec=0 mol.atoms[mol_idx].connec=4 -ATOM.RESET_MCONN: initial met.mconnec=6 met.connec=6 -ATOM.RESET_MCONN: initial mol.madjnum[mol_idx]=1 -ATOM.RESET_MCONN: initial mol.adjnum[mol_idx]=5 -ATOM.RESET_MCONN: initial mol.madjnum[met_idx]=7 mol.madjnum[mol_idx]=1 -ATOM.RESET_MCONN: initial mol.adjnum[met_idx]=7 mol.adjnum[mol_idx]=5 -ATOM.RESET_MCONN: initial mol.madjmat[met_idx,mol_idx]=1 mol.madjmat[mol_idx,met_idx]=1 -ATOM.RESET_MCONN: initial mol.adjmat[met_idx,mol_idx]=1 mol.adjmat[mol_idx,met_idx]=1 -ATOM.RESET_MCONN: final mol.atoms[mol_idx].connec=4 mol.atoms[mol_idx].mconnec=0 -ATOM.RESET_MCONN: final mol.atoms[mol_idx].adjacency=[1, 3, 8, 11] mol.atoms[mol_idx].metal_adjacency=[] -ATOM.RESET_MCONN: final met.connec=6 met.mconnec=6 -ATOM.RESET_MCONN: final met.adjacency=[11, 12, 13, 15, 16, 17] met.metal_adjacency=[11, 12, 13, 15, 16, 17] -ATOM.RESET_MCONN: final mol.madjnum[mol_idx]=0 -ATOM.RESET_MCONN: final mol.adjnum[mol_idx]=4 -ATOM.RESET_MCONN: final mol.madjnum[met_idx]=6 mol.madjnum[mol_idx]=0 -ATOM.RESET_MCONN: final mol.adjnum[met_idx]=6 mol.adjnum[mol_idx]=4 -ATOM.RESET_MCONN: final mol.madjmat[met_idx,mol_idx]=0 mol.madjmat[mol_idx,met_idx]=0 -ATOM.RESET_MCONN: final mol.adjmat[met_idx,mol_idx]=0 mol.adjmat[mol_idx,met_idx]=0 - Coordinating atom label=N with mconnec=1, group index 1 - evaluating coordination with metal Co - -------------- Cell2mol METAL Object -------------- - Version = 0.1 - Type = atom - Sub-Type = metal - Label = Co - Atomic Number = 27 - Index in Molecule = 0 - Metal Adjacency (mconnec) = 6 - Regular Adjacencies (connec) = 6 - Coordination Sphere Formula = N4-O2 ----------------------------------------------------- - -ADD_ATOM: Metalist length 1 -ADD_ATOM: Ligand Atoms 14 -ADD_ATOM: site= 10 -ADD_ATOM: target ligand atom N -ADD_ATOM: evaluating apos=array([5.707128, 1.80509 , 0.656601]) and tgt.coord=array([5.88 , 3.745 , 0.692061]) -ADD_ATOM: Chosen Metal index 0. H is added at site 10 - connectivity verified for atom N with ligand index 10 -enterting SPLIT_GROUP for the GROUP C-N with conn_idx=[1] -GROUP.SPLIT_GROUP: conn_idx=[1] -GROUP.SPLIT_GROUP: conn_labels=['N'] -SPILT_SPECIES: Laplacian lap=array([[0]]) -SPILT_SPECIES: graph=<1x1 sparse matrix of type '' - with 0 stored elements in Compressed Sparse Row format> -GROUP.SPLIT_GROUP: blocklist=[[0]] -GROUP.SPLIT_GROUP: block=[0] -Entering COORD_CORR_NONHAPTIC: - Coordinating atom label=N with mconnec=1, group index 0 - evaluating coordination with metal Co - -------------- Cell2mol METAL Object -------------- - Version = 0.1 - Type = atom - Sub-Type = metal - Label = Co - Atomic Number = 27 - Index in Molecule = 0 - Metal Adjacency (mconnec) = 6 - Regular Adjacencies (connec) = 6 - Coordination Sphere Formula = N4-O2 ----------------------------------------------------- - -ADD_ATOM: Metalist length 1 -ADD_ATOM: Ligand Atoms 14 -ADD_ATOM: site= 10 -ADD_ATOM: target ligand atom N -ADD_ATOM: evaluating apos=array([5.707128, 1.80509 , 0.656601]) and tgt.coord=array([5.88 , 3.745 , 0.692061]) -ADD_ATOM: Chosen Metal index 0. H is added at site 10 - connectivity verified for atom N with ligand index 10 -LIGAND.SPLIT_LIGAND: block=[3] -EXTRACT_FROM_LIST. received: entrylist=[3] old_array=[1, 10, 11, 12] -EXTRACT_FROM_LIST. received: idx=0 val=3 old_array[val]=12 -EXTRACT_FROM_LIST. new_array=array([12], dtype=object) -LIGAND.SPLIT_LIGAND: gr_indices=[12] -EXTRACT_FROM_LIST. received: entrylist=[3] old_array=['C', 'N', 'N', 'O'] -EXTRACT_FROM_LIST. received: idx=0 val=3 old_array[val]='O' -EXTRACT_FROM_LIST. new_array=array(['O'], dtype=object) -Entering COORD_CORR_NONHAPTIC: - Coordinating atom label=O with mconnec=1, group index 0 - evaluating coordination with metal Co - -------------- Cell2mol METAL Object -------------- - Version = 0.1 - Type = atom - Sub-Type = metal - Label = Co - Atomic Number = 27 - Index in Molecule = 0 - Metal Adjacency (mconnec) = 6 - Regular Adjacencies (connec) = 6 - Coordination Sphere Formula = N4-O2 ----------------------------------------------------- - -ADD_ATOM: Metalist length 1 -ADD_ATOM: Ligand Atoms 14 -ADD_ATOM: site= 12 -ADD_ATOM: target ligand atom O -ADD_ATOM: evaluating apos=array([ 4.552296, 3.649877, -0.631188]) and tgt.coord=array([5.88 , 3.745 , 0.692061]) -ADD_ATOM: Chosen Metal index 0. H is added at site 12 - connectivity verified for atom O with ligand index 12 -LIGAND.SPLIT_LIGAND: new group is found -LIGAND.SPLIT_LIGAND: block=[2] -EXTRACT_FROM_LIST. received: entrylist=[2] old_array=[1, 10, 11, 12] -EXTRACT_FROM_LIST. received: idx=0 val=2 old_array[val]=11 -EXTRACT_FROM_LIST. new_array=array([11], dtype=object) -LIGAND.SPLIT_LIGAND: gr_indices=[11] -EXTRACT_FROM_LIST. received: entrylist=[2] old_array=['C', 'N', 'N', 'O'] -EXTRACT_FROM_LIST. received: idx=0 val=2 old_array[val]='N' -EXTRACT_FROM_LIST. new_array=array(['N'], dtype=object) -Entering COORD_CORR_NONHAPTIC: - Coordinating atom label=N with mconnec=1, group index 0 - evaluating coordination with metal Co - -------------- Cell2mol METAL Object -------------- - Version = 0.1 - Type = atom - Sub-Type = metal - Label = Co - Atomic Number = 27 - Index in Molecule = 0 - Metal Adjacency (mconnec) = 6 - Regular Adjacencies (connec) = 6 - Coordination Sphere Formula = N4-O2 ----------------------------------------------------- - -ADD_ATOM: Metalist length 1 -ADD_ATOM: Ligand Atoms 14 -ADD_ATOM: site= 11 -ADD_ATOM: target ligand atom N -ADD_ATOM: evaluating apos=array([4.422936, 3.685829, 2.029494]) and tgt.coord=array([5.88 , 3.745 , 0.692061]) -ADD_ATOM: Chosen Metal index 0. H is added at site 11 - connectivity verified for atom N with ligand index 11 -LIGAND.SPLIT_LIGAND: new group is found -LIGAND.SPLIT_LIGAND: found groups ['N', 'O', 'N'] -[------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 1 - Formula = N - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = split_group - Number of Metals = 1 ---------------------------------------------------- -, ------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 1 - Formula = O - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = split_ligand - Number of Metals = 1 ---------------------------------------------------- -, ------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 1 - Formula = N - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = split_ligand - Number of Metals = 1 ---------------------------------------------------- -] -LIGAND.Get_denticity: checking connectivity of ligand H7-C3-N2-O2 -LIGAND.Get_denticity: initial connectivity is 3 -LIGAND.Get_denticity: final connectivity of ligand H7-C3-N2-O2 is 3 -LIGAND.Get_denticity: checking connectivity of ligand H7-C3-N2-O2 -LIGAND.Get_denticity: initial connectivity is 3 -LIGAND.Get_denticity: final connectivity of ligand H7-C3-N2-O2 is 3 - -METAL.Get_coord_geometry: Co -METAL.Get_coord_geometry: -coord_group=[------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 1 - Formula = N - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = split_group - Number of Metals = 1 ---------------------------------------------------- -, ------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 1 - Formula = O - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = split_ligand - Number of Metals = 1 ---------------------------------------------------- -, ------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 1 - Formula = N - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = split_ligand - Number of Metals = 1 ---------------------------------------------------- -, ------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 1 - Formula = N - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = split_group - Number of Metals = 1 ---------------------------------------------------- -, ------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 1 - Formula = O - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = split_ligand - Number of Metals = 1 ---------------------------------------------------- -, ------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 1 - Formula = N - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = split_ligand - Number of Metals = 1 ---------------------------------------------------- -] -METAL.Get_coord_geometry: coord_nr=6 -SHAPE_MEASURE: symbols=['Co', 'N', 'O', 'N', 'N', 'O', 'N'] -SHAPE_MEASURE: positions=[array([5.88 , 3.745 , 0.692061]), array([6.052872, 5.68491 , 0.656601]), [7.207704, 3.8401230000000006, -0.6311879999999999], array([7.337064, 3.804171, 2.029494]), array([5.707128, 1.80509 , 0.656601]), [4.552296, 3.649876999999999, -0.6311879999999999], array([4.422936, 3.685829, 2.029494])] -SHAPE_MEASURE: coordination number of metal center 6 -SHAPE_MEASURE: connectivity of metal center(1) [[1, 2], [1, 3], [1, 4], [1, 5], [1, 6], [1, 7]] -DEFINE_coordination_geometry: The number of coordinating points: 6 -DEFINE_coordination_geometry: {'Hexagon': 29.982, 'Pentagonal pyramidal': 27.962, 'Octahedral': 0.481, 'Trigonal prismatic': 14.882} -DEFINE_coordination_geometry: The type of hapticity : [] -DEFINE_coordination_geometry: The most likely geometry is 'Octahedral' with deviation value 0.481 -METAL.Get_coord_geometry: self.coord_geometry='Octahedral' self.geom_deviation=0.481 -METAL.Get_relative_metal_radius: diff_list=[1.238, 1.217, 1.269, 1.238, 1.217, 1.269] -METAL.Get_relative_metal_radius: average=1.241 -METAL.Get_coord_geometry: self.rel_metal_radius=0.985 -COMBINE: reordered_newmolec.formula='H14-C6-N4-O4-Co' -COMBINE: reordered_newmolec=------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 29 - Formula = H14-C6-N4-O4-Co - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Number of Ligands = 2 - Number of Metals = 1 ---------------------------------------------------- - -COMPARE_SPECIES. Comparing: -H14-C6-N4-O4-Co -H14-C6-N4-O4-Co -mol1.adj_types=array([[0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0], - ..., - [0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0]]) -mol2.adj_types=array([[0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0], - ..., - [0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0]]) -COMPARE_SPECIES. kdx ldx elem1 - elem2 : reordered - reference -COMBINE: Fragment H14-C6-N4-O4-Co added to goodlist with reordered_newmolec.cell_indices=[0, 24, 1, 3, 5, 27, 7, 9, 11, 13, 15, 17, 19, 25, 26, 18, 20, 22, 2, 6, 28, 4, 8, 10, 21, 12, 14, 16, 23] -SEQUENTIAL: goodlist 1 ['H14-C6-N4-O4-Co'] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 0 [] -SEQUENTIAL: Found molecule H14-C6-N4-O4-Co -FINISHED succesfully -FRAG_RECONSTRUCT. moleclist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = Br - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = Br - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 29 - Formula = H14-C6-N4-O4-Co - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Number of Ligands = 2 - Number of Metals = 1 ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 29 - Formula = H14-C6-N4-O4-Co - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Number of Ligands = 2 - Number of Metals = 1 ---------------------------------------------------- -] -FRAG_RECONSTRUCT. remfrag=[] -FRAG_RECONSTRUCT. No remaining Molecules after Hydrogen reconstruction - -Cell Reconstruction Finished Normally. Total execution time: 0.21 seconds -Getting unique species in cell -Molecule 0 formula=Br -New molecule found with: formula=Br and added in position 0 -Molecule 1 formula=Br -Molecule 1 is the same with 0 in typelist -Molecule 2 formula=H14-C6-N4-O4-Co -New ligand found with: formula H7-C3-N2-O2 added in position 1 -ligand 1 is the same with 0 in typelist -New Metal Center found with: labels Co and added in position 2 -Molecule 3 formula=H14-C6-N4-O4-Co -ligand 0 is the same with 0 in typelist -ligand 1 is the same with 0 in typelist -Metal 0 is the same with 0 in typelist -3 Species (Metal or Ligand or Molecules) to Characterize - POSCHARGE: doing empty PROTONATION for this specie - CREATED EMPTY PROTONATION ------------- Cell2mol Protonation ---------------- - Status = True - Labels = ['Br'] - Type = Empty - Atoms added in positions = [0] - Atoms blocked (no atoms added) = [0] ---------------------------------------------------- - - POSCHARGE will try charges [0, -1, 1, -2, 2, -3, 3] - POSCHARGE: charge 0 with smiles [Br-] - POSCHARGE: charge 0 with smiles [Br-] - POSCHARGE: charge 0 with smiles [Br-] - POSCHARGE: charge 0 with smiles [Br-] - POSCHARGE: charge 0 with smiles [Br-] - POSCHARGE: charge 0 with smiles [Br-] - POSCHARGE: charge 0 with smiles [Br-] - NEW SELECT FUNCTION: uncorr_total: [-1, -1, -1, -1, -1, -1, -1] - NEW SELECT FUNCTION: uncorr_abs_total: [1, 1, 1, 1, 1, 1, 1] - NEW SELECT FUNCTION: uncorr_abs_atcharge: [1, 1, 1, 1, 1, 1, 1] - NEW SELECT FUNCTION: uncorr_zwitt: [False, False, False, False, False, False, False] - NEW SELECT FUNCTION: coincide: [False, True, False, False, False, False, False] - NEW SELECT FUNCTION: listofmintot: [0, 1, 2, 3, 4, 5, 6] - NEW SELECT FUNCTION: listofminabs: [0, 1, 2, 3, 4, 5, 6] - NEW SELECT FUNCTION: tmplist: [1], including: - NEW SELECT FUNCTION: Corr_charge=-1 - NEW SELECT FUNCTION: Smiles=[Br-] - NEW SELECT FUNCTION: found corr_charges=[-1] - NEW SELECT FUNCTION: doing tgt_charge=-1 - NEW SELECT FUNCTION: charge_state added - NEW SELECT FUNCTION: Case 1, only one entry for -1 in tmplist - GET_PROTONATION_STATES: Evaluating group N with parent_indices [1] - GET_PROTONATION_STATES: evaluating non-haptic group with index 1 and label H - GET_PROTONATION_STATES: Evaluating group O with parent_indices [7] - GET_PROTONATION_STATES: evaluating non-haptic group with index 7 and label O - GET_PROTONATION_STATES: Evaluating group N with parent_indices [6] - GET_PROTONATION_STATES: evaluating non-haptic group with index 6 and label N - GET_PROTONATION_STATES:protonation_states=[------------- Cell2mol Protonation ---------------- - Status = True - Labels = ['C', 'H', 'H', 'H', 'H', 'N', 'N', 'O', 'C', 'H', 'H', 'C', 'H', 'O'] - Type = Local - Atoms added in positions = [0 0 0 0 0 0 0 0 0 0 0 0 0 0] - Atoms blocked (no atoms added) = [0 1 0 0 0 0 1 1 0 0 0 0 0 0] ---------------------------------------------------- -] - POSCHARGE will try charges [0, -1, 1, -2, 2, -3, 3, -4, 4] - POSCHARGE: charge 0 with smiles [H]N([H])C([H])([H])C([H])([C+]([O-])[O-])N([H])[H] - POSCHARGE: charge 0 with smiles [H]N([H])C([H])([H])C([H])(C(=O)[O-])N([H])[H] - POSCHARGE: charge 0 with smiles [H]N([H])C([H])([H])C([H])([C+]([O-])[O-])N([H])[H] - POSCHARGE: charge 0 with smiles [H]N([H])C([H])([H])C([H])([C-]([O-])[O-])N([H])[H] - POSCHARGE: charge 0 with smiles [H]N([H])C([H])([H])C([H])([C+]([O-])[O-])N([H])[H] - POSCHARGE: charge 0 with smiles [H]N([H])C([H])([H])C([H])([C-]([O-])[O-])N([H])[H] - POSCHARGE: charge 0 with smiles [H]N([H])C([H])([H])C([H])([C+]([O-])[O-])N([H])[H] - POSCHARGE: charge 0 with smiles [H]N([H])C([H])([H])C([H])([C-]([O-])[O-])N([H])[H] - POSCHARGE: charge 0 with smiles [H]N([H])C([H])([H])C([H])([C+]([O-])[O-])N([H])[H] - NEW SELECT FUNCTION: uncorr_total: [-1, -1, -1, -3, -1, -3, -1, -3, -1] - NEW SELECT FUNCTION: uncorr_abs_total: [1, 1, 1, 3, 1, 3, 1, 3, 1] - NEW SELECT FUNCTION: uncorr_abs_atcharge: [3, 1, 3, 3, 3, 3, 3, 3, 3] - NEW SELECT FUNCTION: uncorr_zwitt: [True, False, True, False, True, False, True, False, True] - NEW SELECT FUNCTION: coincide: [False, True, False, False, False, True, False, False, False] - NEW SELECT FUNCTION: listofmintot: [0, 1, 2, 4, 6, 8] - NEW SELECT FUNCTION: listofminabs: [1] - NEW SELECT FUNCTION: tmplist: [1], including: - NEW SELECT FUNCTION: Corr_charge=-1 - NEW SELECT FUNCTION: Smiles=[H]N([H])C([H])([H])C([H])(C(=O)[O-])N([H])[H] - NEW SELECT FUNCTION: found corr_charges=[-1] - NEW SELECT FUNCTION: doing tgt_charge=-1 - NEW SELECT FUNCTION: charge_state added - NEW SELECT FUNCTION: Case 1, only one entry for -1 in tmplist -BALANCE: iterlist [[-1], [-1], [1, 2, 3]] -BALANCE: unique_indices [0, 0, 1, 1, 2, 1, 1, 2] -BALANCE: tmpdistr [(-1, -1, 1), (-1, -1, 2), (-1, -1, 3)] -BALANCE: alldistr added: [-1, -1, -1, -1, 1, -1, -1, 1] -BALANCE: distribution=[-1, -1, -1, -1, 1, -1, -1, 1] -BALANCE: alldistr added: [-1, -1, -1, -1, 2, -1, -1, 2] -BALANCE: distribution=[-1, -1, -1, -1, 1, -1, -1, 1] -BALANCE: distribution=[-1, -1, -1, -1, 2, -1, -1, 2] -BALANCE: alldistr added: [-1, -1, -1, -1, 3, -1, -1, 3] -BALANCE: distribution=[-1, -1, -1, -1, 1, -1, -1, 1] -BALANCE: distribution=[-1, -1, -1, -1, 2, -1, -1, 2] -BALANCE: distribution=[-1, -1, -1, -1, 3, -1, -1, 3] - -FINAL Charge Distribution: [[-1, -1, -1, -1, 3, -1, -1, 3]] - -######################################### -Assigning Charges and Preparing Molecules -######################################### -SET_TARGET_CHARGE: ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = Br - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.reconstruct ---------------------------------------------------- - [0, 1] -1 -SET_TARGET_CHARGE: Target charge -1 of Br exists in [-1]. -SET_TARGET_CHARGE: Br - POSCHARGE: doing empty PROTONATION for this specie - CREATED EMPTY PROTONATION ------------- Cell2mol Protonation ---------------- - Status = True - Labels = ['Br'] - Type = Empty - Atoms added in positions = [0] - Atoms blocked (no atoms added) = [0] ---------------------------------------------------- - - POSCHARGE will try charges [0, -1, 1, -2, 2, -3, 3] - POSCHARGE: charge 0 with smiles [Br-] - POSCHARGE: charge 0 with smiles [Br-] - POSCHARGE: charge 0 with smiles [Br-] - POSCHARGE: charge 0 with smiles [Br-] - POSCHARGE: charge 0 with smiles [Br-] - POSCHARGE: charge 0 with smiles [Br-] - POSCHARGE: charge 0 with smiles [Br-] - NEW SELECT FUNCTION: uncorr_total: [-1, -1, -1, -1, -1, -1, -1] - NEW SELECT FUNCTION: uncorr_abs_total: [1, 1, 1, 1, 1, 1, 1] - NEW SELECT FUNCTION: uncorr_abs_atcharge: [1, 1, 1, 1, 1, 1, 1] - NEW SELECT FUNCTION: uncorr_zwitt: [False, False, False, False, False, False, False] - NEW SELECT FUNCTION: coincide: [False, True, False, False, False, False, False] - NEW SELECT FUNCTION: listofmintot: [0, 1, 2, 3, 4, 5, 6] - NEW SELECT FUNCTION: listofminabs: [0, 1, 2, 3, 4, 5, 6] - NEW SELECT FUNCTION: tmplist: [1], including: - NEW SELECT FUNCTION: Corr_charge=-1 - NEW SELECT FUNCTION: Smiles=[Br-] - NEW SELECT FUNCTION: found corr_charges=[-1] - NEW SELECT FUNCTION: doing tgt_charge=-1 - NEW SELECT FUNCTION: charge_state added - NEW SELECT FUNCTION: Case 1, only one entry for -1 in tmplist -SET_TARGET_CHARGE: Target charge -1 of Br exists in [-1]. -SET_TARGET_CHARGE: ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = Br - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Total Charge = -1 - Smiles = [Br-] - Origin = cell.reconstruct ---------------------------------------------------- - [0, 1] -1 -SET_TARGET_CHARGE: Target charge -1 of Br exists in [-1]. -SET_TARGET_CHARGE: Br - POSCHARGE: doing empty PROTONATION for this specie - CREATED EMPTY PROTONATION ------------- Cell2mol Protonation ---------------- - Status = True - Labels = ['Br'] - Type = Empty - Atoms added in positions = [0] - Atoms blocked (no atoms added) = [0] ---------------------------------------------------- - - POSCHARGE will try charges [0, -1, 1, -2, 2, -3, 3] - POSCHARGE: charge 0 with smiles [Br-] - POSCHARGE: charge 0 with smiles [Br-] - POSCHARGE: charge 0 with smiles [Br-] - POSCHARGE: charge 0 with smiles [Br-] - POSCHARGE: charge 0 with smiles [Br-] - POSCHARGE: charge 0 with smiles [Br-] - POSCHARGE: charge 0 with smiles [Br-] - NEW SELECT FUNCTION: uncorr_total: [-1, -1, -1, -1, -1, -1, -1] - NEW SELECT FUNCTION: uncorr_abs_total: [1, 1, 1, 1, 1, 1, 1] - NEW SELECT FUNCTION: uncorr_abs_atcharge: [1, 1, 1, 1, 1, 1, 1] - NEW SELECT FUNCTION: uncorr_zwitt: [False, False, False, False, False, False, False] - NEW SELECT FUNCTION: coincide: [False, True, False, False, False, False, False] - NEW SELECT FUNCTION: listofmintot: [0, 1, 2, 3, 4, 5, 6] - NEW SELECT FUNCTION: listofminabs: [0, 1, 2, 3, 4, 5, 6] - NEW SELECT FUNCTION: tmplist: [1], including: - NEW SELECT FUNCTION: Corr_charge=-1 - NEW SELECT FUNCTION: Smiles=[Br-] - NEW SELECT FUNCTION: found corr_charges=[-1] - NEW SELECT FUNCTION: doing tgt_charge=-1 - NEW SELECT FUNCTION: charge_state added - NEW SELECT FUNCTION: Case 1, only one entry for -1 in tmplist -SET_TARGET_CHARGE: Target charge -1 of Br exists in [-1]. -SET_TARGET_CHARGE: ------------- Cell2mol LIGAND Object -------------- - Version = 0.1 - Type = specie - Sub-Type = ligand - Number of Atoms = 14 - Formula = H7-C3-N2-O2 - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = split_complex - Number of Groups = 3 ---------------------------------------------------- - [2, 3, 5, 6] -1 -SET_TARGET_CHARGE: Target charge -1 of H7-C3-N2-O2 exists in [-1]. -SET_TARGET_CHARGE: H7-C3-N2-O2 - GET_PROTONATION_STATES: Evaluating group N with parent_indices [1] - GET_PROTONATION_STATES: evaluating non-haptic group with index 1 and label H - GET_PROTONATION_STATES: Evaluating group O with parent_indices [7] - GET_PROTONATION_STATES: evaluating non-haptic group with index 7 and label O - GET_PROTONATION_STATES: Evaluating group N with parent_indices [6] - GET_PROTONATION_STATES: evaluating non-haptic group with index 6 and label N - GET_PROTONATION_STATES:protonation_states=[------------- Cell2mol Protonation ---------------- - Status = True - Labels = ['C', 'H', 'H', 'H', 'H', 'N', 'N', 'O', 'C', 'H', 'H', 'C', 'H', 'O'] - Type = Local - Atoms added in positions = [0 0 0 0 0 0 0 0 0 0 0 0 0 0] - Atoms blocked (no atoms added) = [0 1 0 0 0 0 1 1 0 0 0 0 0 0] ---------------------------------------------------- -] - POSCHARGE will try charges [0, -1, 1, -2, 2, -3, 3, -4, 4] - POSCHARGE: charge 0 with smiles [H]N([H])C([H])([H])C([H])([C+]([O-])[O-])N([H])[H] - POSCHARGE: charge 0 with smiles [H]N([H])C([H])([H])C([H])(C(=O)[O-])N([H])[H] - POSCHARGE: charge 0 with smiles [H]N([H])C([H])([H])C([H])([C+]([O-])[O-])N([H])[H] - POSCHARGE: charge 0 with smiles [H]N([H])C([H])([H])C([H])([C-]([O-])[O-])N([H])[H] - POSCHARGE: charge 0 with smiles [H]N([H])C([H])([H])C([H])([C+]([O-])[O-])N([H])[H] - POSCHARGE: charge 0 with smiles [H]N([H])C([H])([H])C([H])([C-]([O-])[O-])N([H])[H] - POSCHARGE: charge 0 with smiles [H]N([H])C([H])([H])C([H])([C+]([O-])[O-])N([H])[H] - POSCHARGE: charge 0 with smiles [H]N([H])C([H])([H])C([H])([C-]([O-])[O-])N([H])[H] - POSCHARGE: charge 0 with smiles [H]N([H])C([H])([H])C([H])([C+]([O-])[O-])N([H])[H] - NEW SELECT FUNCTION: uncorr_total: [-1, -1, -1, -3, -1, -3, -1, -3, -1] - NEW SELECT FUNCTION: uncorr_abs_total: [1, 1, 1, 3, 1, 3, 1, 3, 1] - NEW SELECT FUNCTION: uncorr_abs_atcharge: [3, 1, 3, 3, 3, 3, 3, 3, 3] - NEW SELECT FUNCTION: uncorr_zwitt: [True, False, True, False, True, False, True, False, True] - NEW SELECT FUNCTION: coincide: [False, True, False, False, False, True, False, False, False] - NEW SELECT FUNCTION: listofmintot: [0, 1, 2, 4, 6, 8] - NEW SELECT FUNCTION: listofminabs: [1] - NEW SELECT FUNCTION: tmplist: [1], including: - NEW SELECT FUNCTION: Corr_charge=-1 - NEW SELECT FUNCTION: Smiles=[H]N([H])C([H])([H])C([H])(C(=O)[O-])N([H])[H] - NEW SELECT FUNCTION: found corr_charges=[-1] - NEW SELECT FUNCTION: doing tgt_charge=-1 - NEW SELECT FUNCTION: charge_state added - NEW SELECT FUNCTION: Case 1, only one entry for -1 in tmplist -SET_TARGET_CHARGE: Target charge -1 of H7-C3-N2-O2 exists in [-1]. -SET_TARGET_CHARGE: ------------- Cell2mol LIGAND Object -------------- - Version = 0.1 - Type = specie - Sub-Type = ligand - Number of Atoms = 14 - Formula = H7-C3-N2-O2 - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Total Charge = -1 - Smiles = [H]N([H])C([H])([H])C([H])(C(=O)[O-])N([H])[H] - Origin = split_complex - Number of Groups = 3 ---------------------------------------------------- - [2, 3, 5, 6] -1 -SET_TARGET_CHARGE: Target charge -1 of H7-C3-N2-O2 exists in [-1]. -SET_TARGET_CHARGE: H7-C3-N2-O2 - GET_PROTONATION_STATES: Evaluating group N with parent_indices [0] - GET_PROTONATION_STATES: evaluating non-haptic group with index 0 and label C - GET_PROTONATION_STATES: Evaluating as carbene and False - GET_PROTONATION_STATES: will be sent to nonlocal due to C atom - GET_PROTONATION_STATES: Evaluating group O with parent_indices [6] - GET_PROTONATION_STATES: evaluating non-haptic group with index 6 and label O - GET_PROTONATION_STATES: Evaluating group N with parent_indices [5] - GET_PROTONATION_STATES: evaluating non-haptic group with index 5 and label N - - GET_PROTONATION_STATES: Enters non-local with: - GET_PROTONATION_STATES: block: [0 0 0 0 0 1 1 0 0 0 0 0 0 0] - GET_PROTONATION_STATES: addedlist: [0 0 0 0 0 0 0 0 0 0 0 0 0 0] - GET_PROTONATION_STATES: 1 non_local_groups groups found - - GET_PROTONATION_STATES: doing combination 0 - GET_PROTONATION_STATES: Protonation SAVED with 0 atoms added to ligand. status=True - - GET_PROTONATION_STATES: doing combination 1 - GET_PROTONATION_STATES: Added H to atom 8 with: a.mconnec=1 and label=N - GET_PROTONATION_STATES: Protonation SAVED with 1 atoms added to ligand. status=True - GET_PROTONATION_STATES:protonation_states=[------------- Cell2mol Protonation ---------------- - Status = True - Labels = ['C', 'C', 'H', 'H', 'H', 'N', 'O', 'O', 'N', 'C', 'H', 'H', 'H', 'H'] - Type = Non-local - Atoms added in positions = [0 0 0 0 0 0 0 0 0 0 0 0 0 0] - Atoms blocked (no atoms added) = [0 0 0 0 0 1 1 0 0 0 0 0 0 0] ---------------------------------------------------- -, ------------- Cell2mol Protonation ---------------- - Status = True - Labels = ['C', 'C', 'H', 'H', 'H', 'N', 'O', 'O', 'N', 'C', 'H', 'H', 'H', 'H', 'H'] - Type = Non-local - Atoms added in positions = [0 0 0 0 0 0 0 0 1 0 0 0 0 0] - Atoms blocked (no atoms added) = [0 0 0 0 0 1 1 0 0 0 0 0 0 0] ---------------------------------------------------- -] - POSCHARGE will try charges [0, -1, 1, -2, 2, -3, 3, -4, 4] - POSCHARGE: charge 0 with smiles [H]N([H])C([H])([H])C([H])([C-]([O-])[O-])N([H])[H] - POSCHARGE: charge 0 with smiles [H]N([H])C([H])([H])C([H])(C(=O)[O-])N([H])[H] - POSCHARGE: charge 0 with smiles [H]N([H])C([H])([H])C([H])([C+]([O-])[O-])N([H])[H] - POSCHARGE: charge 0 with smiles [H]N([H])C([H])([H])C([H])([C-]([O-])[O-])N([H])[H] - POSCHARGE: charge 0 with smiles [H]N([H])C([H])([H])C([H])([C+]([O-])[O-])N([H])[H] - POSCHARGE: charge 0 with smiles [H]N([H])C([H])([H])C([H])([C-]([O-])[O-])N([H])[H] - POSCHARGE: charge 0 with smiles [H]N([H])C([H])([H])C([H])([C+]([O-])[O-])N([H])[H] - POSCHARGE: charge 0 with smiles [H]N([H])C([H])([H])C([H])([C-]([O-])[O-])N([H])[H] - POSCHARGE: charge 0 with smiles [H]N([H])C([H])([H])C([H])([C+]([O-])[O-])N([H])[H] - POSCHARGE will try charges [0, -1, 1, -2, 2, -3, 3] - POSCHARGE: charge 0 with smiles [H]N([H])C([H])([H])C([H])(C(=O)[O-])[N+]([H])([H])[H] - POSCHARGE: charge 0 with smiles [H]N([H])C([H])([H])C([H])([C-]([O-])[O-])[N+]([H])([H])[H] - POSCHARGE: charge 0 with smiles [H]N([H])C([H])([H])C([H])([C+]([O-])[O-])[N+]([H])([H])[H] - POSCHARGE: charge 0 with smiles [H]N([H])C([H])([H])C([H])([C-]([O-])[O-])[N+]([H])([H])[H] - POSCHARGE: charge 0 with smiles [H]N([H])C([H])([H])C([H])([C+]([O-])[O-])[N+]([H])([H])[H] - POSCHARGE: charge 0 with smiles [H]N([H])C([H])([H])C([H])([C-]([O-])[O-])[N+]([H])([H])[H] - POSCHARGE: charge 0 with smiles [H]N([H])C([H])([H])C([H])([C+]([O-])[O-])[N+]([H])([H])[H] - NEW SELECT FUNCTION: uncorr_total: [0, -2, 0, -2, 0, -2, 0] - NEW SELECT FUNCTION: uncorr_abs_total: [0, 2, 0, 2, 0, 2, 0] - NEW SELECT FUNCTION: uncorr_abs_atcharge: [2, 4, 4, 4, 4, 4, 4] - NEW SELECT FUNCTION: uncorr_zwitt: [True, True, True, True, True, True, True] - NEW SELECT FUNCTION: coincide: [True, False, False, True, False, False, False] - NEW SELECT FUNCTION: listofmintot: [0, 2, 4, 6] - NEW SELECT FUNCTION: listofminabs: [0] - NEW SELECT FUNCTION: tmplist: [0], including: - NEW SELECT FUNCTION: Corr_charge=-1 - NEW SELECT FUNCTION: Smiles=[H]N([H])C([H])([H])C([H])(C(=O)[O-])[N+]([H])([H])[H] - NEW SELECT FUNCTION: found corr_charges=[-1] - NEW SELECT FUNCTION: doing tgt_charge=-1 - NEW SELECT FUNCTION: charge_state added - NEW SELECT FUNCTION: Case 1, only one entry for -1 in tmplist -SET_TARGET_CHARGE: Target charge -1 of H7-C3-N2-O2 exists in [-1]. -SET_TARGET_CHARGE: ------------- Cell2mol METAL Object -------------- - Version = 0.1 - Type = atom - Sub-Type = metal - Label = Co - Atomic Number = 27 - Index in Molecule = 0 - Metal Adjacency (mconnec) = 6 - Regular Adjacencies (connec) = 6 - Coordination Sphere Formula = N4-O2 - Possible Charges = [1, 2, 3] ----------------------------------------------------- - [4, 7] 3 -SET_TARGET_CHARGE: Target charge 3 of Co exists in [1, 2, 3]. -SET_TARGET_CHARGE: Co -SET_TARGET_CHARGE: Target charge 3 of Co exists in [1, 2, 3]. -SET_TARGET_CHARGE: ------------- Cell2mol LIGAND Object -------------- - Version = 0.1 - Type = specie - Sub-Type = ligand - Number of Atoms = 14 - Formula = H7-C3-N2-O2 - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Total Charge = -1 - Smiles = [H]N([H])C([H])([H])C([H])(C(=O)[O-])N([H])[H] - Origin = split_complex - Number of Groups = 3 ---------------------------------------------------- - [2, 3, 5, 6] -1 -SET_TARGET_CHARGE: Target charge -1 of H7-C3-N2-O2 exists in [-1]. -SET_TARGET_CHARGE: H7-C3-N2-O2 - GET_PROTONATION_STATES: Evaluating group N with parent_indices [0] - GET_PROTONATION_STATES: evaluating non-haptic group with index 0 and label N - GET_PROTONATION_STATES: Evaluating group O with parent_indices [2] - GET_PROTONATION_STATES: evaluating non-haptic group with index 2 and label O - GET_PROTONATION_STATES: Evaluating group N with parent_indices [1] - GET_PROTONATION_STATES: evaluating non-haptic group with index 1 and label N - GET_PROTONATION_STATES:protonation_states=[------------- Cell2mol Protonation ---------------- - Status = True - Labels = ['N', 'N', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'O'] - Type = Local - Atoms added in positions = [0 0 0 0 0 0 0 0 0 0 0 0 0 0] - Atoms blocked (no atoms added) = [1 1 1 0 0 0 0 0 0 0 0 0 0 0] ---------------------------------------------------- -] - POSCHARGE will try charges [0, -1, 1, -2, 2, -3, 3, -4, 4] - POSCHARGE: charge 0 with smiles [H]N([H])C([H])([H])C([H])([C+]([O-])[O-])N([H])[H] - POSCHARGE: charge 0 with smiles [H]N([H])C([H])([H])C([H])(C(=O)[O-])N([H])[H] - POSCHARGE: charge 0 with smiles [H]N([H])C([H])([H])C([H])([C+]([O-])[O-])N([H])[H] - POSCHARGE: charge 0 with smiles [H]N([H])C([H])([H])C([H])([C-]([O-])[O-])N([H])[H] - POSCHARGE: charge 0 with smiles [H]N([H])C([H])([H])C([H])([C+]([O-])[O-])N([H])[H] - POSCHARGE: charge 0 with smiles [H]N([H])C([H])([H])C([H])([C-]([O-])[O-])N([H])[H] - POSCHARGE: charge 0 with smiles [H]N([H])C([H])([H])C([H])([C+]([O-])[O-])N([H])[H] - POSCHARGE: charge 0 with smiles [H]N([H])C([H])([H])C([H])([C-]([O-])[O-])N([H])[H] - POSCHARGE: charge 0 with smiles [H]N([H])C([H])([H])C([H])([C+]([O-])[O-])N([H])[H] - NEW SELECT FUNCTION: uncorr_total: [-1, -1, -1, -3, -1, -3, -1, -3, -1] - NEW SELECT FUNCTION: uncorr_abs_total: [1, 1, 1, 3, 1, 3, 1, 3, 1] - NEW SELECT FUNCTION: uncorr_abs_atcharge: [3, 1, 3, 3, 3, 3, 3, 3, 3] - NEW SELECT FUNCTION: uncorr_zwitt: [True, False, True, False, True, False, True, False, True] - NEW SELECT FUNCTION: coincide: [False, True, False, False, False, True, False, False, False] - NEW SELECT FUNCTION: listofmintot: [0, 1, 2, 4, 6, 8] - NEW SELECT FUNCTION: listofminabs: [1] - NEW SELECT FUNCTION: tmplist: [1], including: - NEW SELECT FUNCTION: Corr_charge=-1 - NEW SELECT FUNCTION: Smiles=[H]N([H])C([H])([H])C([H])(C(=O)[O-])N([H])[H] - NEW SELECT FUNCTION: found corr_charges=[-1] - NEW SELECT FUNCTION: doing tgt_charge=-1 - NEW SELECT FUNCTION: charge_state added - NEW SELECT FUNCTION: Case 1, only one entry for -1 in tmplist -SET_TARGET_CHARGE: Target charge -1 of H7-C3-N2-O2 exists in [-1]. -SET_TARGET_CHARGE: ------------- Cell2mol LIGAND Object -------------- - Version = 0.1 - Type = specie - Sub-Type = ligand - Number of Atoms = 14 - Formula = H7-C3-N2-O2 - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Total Charge = -1 - Smiles = [H]N([H])C([H])([H])C([H])(C(=O)[O-])N([H])[H] - Origin = split_complex - Number of Groups = 3 ---------------------------------------------------- - [2, 3, 5, 6] -1 -SET_TARGET_CHARGE: Target charge -1 of H7-C3-N2-O2 exists in [-1]. -SET_TARGET_CHARGE: H7-C3-N2-O2 - GET_PROTONATION_STATES: Evaluating group N with parent_indices [1] - GET_PROTONATION_STATES: evaluating non-haptic group with index 1 and label C - GET_PROTONATION_STATES: Evaluating as carbene and False - GET_PROTONATION_STATES: will be sent to nonlocal due to C atom - GET_PROTONATION_STATES: Evaluating group O with parent_indices [12] - GET_PROTONATION_STATES: evaluating non-haptic group with index 12 and label O - GET_PROTONATION_STATES: Evaluating group N with parent_indices [11] - GET_PROTONATION_STATES: evaluating non-haptic group with index 11 and label N - - GET_PROTONATION_STATES: Enters non-local with: - GET_PROTONATION_STATES: block: [0 0 0 0 0 0 0 0 0 0 0 1 1 0] - GET_PROTONATION_STATES: addedlist: [0 0 0 0 0 0 0 0 0 0 0 0 0 0] - GET_PROTONATION_STATES: 1 non_local_groups groups found - - GET_PROTONATION_STATES: doing combination 0 - GET_PROTONATION_STATES: Protonation SAVED with 0 atoms added to ligand. status=True - - GET_PROTONATION_STATES: doing combination 1 - GET_PROTONATION_STATES: Added H to atom 10 with: a.mconnec=1 and label=N - GET_PROTONATION_STATES: Protonation SAVED with 1 atoms added to ligand. status=True - GET_PROTONATION_STATES:protonation_states=[------------- Cell2mol Protonation ---------------- - Status = True - Labels = ['C', 'C', 'C', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'N', 'N', 'O', 'O'] - Type = Non-local - Atoms added in positions = [0 0 0 0 0 0 0 0 0 0 0 0 0 0] - Atoms blocked (no atoms added) = [0 0 0 0 0 0 0 0 0 0 0 1 1 0] ---------------------------------------------------- -, ------------- Cell2mol Protonation ---------------- - Status = True - Labels = ['C', 'C', 'C', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'N', 'N', 'O', 'O', 'H'] - Type = Non-local - Atoms added in positions = [0 0 0 0 0 0 0 0 0 0 1 0 0 0] - Atoms blocked (no atoms added) = [0 0 0 0 0 0 0 0 0 0 0 1 1 0] ---------------------------------------------------- -] - POSCHARGE will try charges [0, -1, 1, -2, 2, -3, 3, -4, 4] - POSCHARGE: charge 0 with smiles [H]N([H])C([H])([H])C([H])([C-]([O-])[O-])N([H])[H] - POSCHARGE: charge 0 with smiles [H]N([H])C([H])([H])C([H])(C(=O)[O-])N([H])[H] - POSCHARGE: charge 0 with smiles [H]N([H])C([H])([H])C([H])([C+]([O-])[O-])N([H])[H] - POSCHARGE: charge 0 with smiles [H]N([H])C([H])([H])C([H])([C-]([O-])[O-])N([H])[H] - POSCHARGE: charge 0 with smiles [H]N([H])C([H])([H])C([H])([C+]([O-])[O-])N([H])[H] - POSCHARGE: charge 0 with smiles [H]N([H])C([H])([H])C([H])([C-]([O-])[O-])N([H])[H] - POSCHARGE: charge 0 with smiles [H]N([H])C([H])([H])C([H])([C+]([O-])[O-])N([H])[H] - POSCHARGE: charge 0 with smiles [H]N([H])C([H])([H])C([H])([C-]([O-])[O-])N([H])[H] - POSCHARGE: charge 0 with smiles [H]N([H])C([H])([H])C([H])([C+]([O-])[O-])N([H])[H] - POSCHARGE will try charges [0, -1, 1, -2, 2, -3, 3] - POSCHARGE: charge 0 with smiles [H]N([H])C([H])([H])C([H])(C(=O)[O-])[N+]([H])([H])[H] - POSCHARGE: charge 0 with smiles [H]N([H])C([H])([H])C([H])([C-]([O-])[O-])[N+]([H])([H])[H] - POSCHARGE: charge 0 with smiles [H]N([H])C([H])([H])C([H])([C+]([O-])[O-])[N+]([H])([H])[H] - POSCHARGE: charge 0 with smiles [H]N([H])C([H])([H])C([H])([C-]([O-])[O-])[N+]([H])([H])[H] - POSCHARGE: charge 0 with smiles [H]N([H])C([H])([H])C([H])([C+]([O-])[O-])[N+]([H])([H])[H] - POSCHARGE: charge 0 with smiles [H]N([H])C([H])([H])C([H])([C-]([O-])[O-])[N+]([H])([H])[H] - POSCHARGE: charge 0 with smiles [H]N([H])C([H])([H])C([H])([C+]([O-])[O-])[N+]([H])([H])[H] - NEW SELECT FUNCTION: uncorr_total: [0, -2, 0, -2, 0, -2, 0] - NEW SELECT FUNCTION: uncorr_abs_total: [0, 2, 0, 2, 0, 2, 0] - NEW SELECT FUNCTION: uncorr_abs_atcharge: [2, 4, 4, 4, 4, 4, 4] - NEW SELECT FUNCTION: uncorr_zwitt: [True, True, True, True, True, True, True] - NEW SELECT FUNCTION: coincide: [True, False, False, True, False, False, False] - NEW SELECT FUNCTION: listofmintot: [0, 2, 4, 6] - NEW SELECT FUNCTION: listofminabs: [0] - NEW SELECT FUNCTION: tmplist: [0], including: - NEW SELECT FUNCTION: Corr_charge=-1 - NEW SELECT FUNCTION: Smiles=[H]N([H])C([H])([H])C([H])(C(=O)[O-])[N+]([H])([H])[H] - NEW SELECT FUNCTION: found corr_charges=[-1] - NEW SELECT FUNCTION: doing tgt_charge=-1 - NEW SELECT FUNCTION: charge_state added - NEW SELECT FUNCTION: Case 1, only one entry for -1 in tmplist -SET_TARGET_CHARGE: Target charge -1 of H7-C3-N2-O2 exists in [-1]. -SET_TARGET_CHARGE: ------------- Cell2mol METAL Object -------------- - Version = 0.1 - Type = atom - Sub-Type = metal - Label = Co - Atomic Number = 27 - Index in Molecule = 0 - Metal Adjacency (mconnec) = 6 - Regular Adjacencies (connec) = 6 - Atom Charge = 3.0 - Coordination Sphere Formula = N4-O2 - Possible Charges = [1, 2, 3] ----------------------------------------------------- - [4, 7] 3 -SET_TARGET_CHARGE: Target charge 3 of Co exists in [1, 2, 3]. -SET_TARGET_CHARGE: Co -SET_TARGET_CHARGE: Target charge 3 of Co exists in [1, 2, 3]. -CELL.CREATE_BONDS: Creating Bonds for molecule Br -CREATE_bonds_specie: specie.formula='Br', specie.subtype='molecule' - Number of atoms in molecule object and RDKit object are equal: 1 1 - idx=0 Br Number of bonds : 0 - NO BONDS CREATED for Br due to no bonds in molecule RDKit object -CELL.CREATE_BONDS: Creating Bonds for molecule Br -CREATE_bonds_specie: specie.formula='Br', specie.subtype='molecule' - Number of atoms in molecule object and RDKit object are equal: 1 1 - idx=0 Br Number of bonds : 0 - NO BONDS CREATED for Br due to no bonds in molecule RDKit object -CELL.CREATE_BONDS: Creating Bonds for molecule H14-C6-N4-O4-Co -CREATE_bonds_specie: specie.formula='H7-C3-N2-O2', specie.subtype='ligand' - Number of atoms in ligand object and RDKit object are equal: 14 14 - idx=0 C Number of bonds : 4 - BOND CREATED 0 0 1 1.0 C H - BOND CREATED 0 0 5 1.0 C N - BOND CREATED 0 0 8 1.0 C C - BOND CREATED 0 0 11 1.0 C C - BONDS [('C', 'H', 1.0, 1.083), ('C', 'N', 1.0, 1.433), ('C', 'C', 1.0, 1.512), ('C', 'C', 1.0, 1.438)] - idx=1 H Number of bonds : 1 - BOND CREATED 1 1 0 1.0 H C - BONDS [('H', 'C', 1.0, 1.083)] - idx=2 H Number of bonds : 1 - BOND CREATED 2 2 11 1.0 H C - BONDS [('H', 'C', 1.0, 1.086)] - idx=3 H Number of bonds : 1 - BOND CREATED 3 3 5 1.0 H N - BONDS [('H', 'N', 1.0, 1.049)] - idx=4 H Number of bonds : 1 - BOND CREATED 4 4 5 1.0 H N - BONDS [('H', 'N', 1.0, 1.011)] - idx=5 N Number of bonds : 3 - BOND CREATED 5 5 0 1.0 N C - BOND CREATED 5 5 3 1.0 N H - BOND CREATED 5 5 4 1.0 N H - BONDS [('N', 'C', 1.0, 1.433), ('N', 'H', 1.0, 1.049), ('N', 'H', 1.0, 1.011)] - idx=6 N Number of bonds : 3 - BOND CREATED 6 6 10 1.0 N H - BOND CREATED 6 6 11 1.0 N C - BOND CREATED 6 6 12 1.0 N H - BONDS [('N', 'H', 1.0, 1.048), ('N', 'C', 1.0, 1.58), ('N', 'H', 1.0, 1.032)] - idx=7 O Number of bonds : 1 - BOND CREATED 7 7 8 2.0 O C - BONDS [('O', 'C', 2.0, 1.305)] - idx=8 C Number of bonds : 3 - BOND CREATED 8 8 0 1.0 C C - BOND CREATED 8 8 7 2.0 C O - BOND CREATED 8 8 13 1.0 C O - BONDS [('C', 'C', 1.0, 1.512), ('C', 'O', 2.0, 1.305), ('C', 'O', 1.0, 1.208)] - idx=9 H Number of bonds : 1 - BOND CREATED 9 9 11 1.0 H C - BONDS [('H', 'C', 1.0, 1.095)] - idx=10 H Number of bonds : 1 - BOND CREATED 10 10 6 1.0 H N - BONDS [('H', 'N', 1.0, 1.048)] - idx=11 C Number of bonds : 4 - BOND CREATED 11 11 0 1.0 C C - BOND CREATED 11 11 2 1.0 C H - BOND CREATED 11 11 6 1.0 C N - BOND CREATED 11 11 9 1.0 C H - BONDS [('C', 'C', 1.0, 1.438), ('C', 'H', 1.0, 1.086), ('C', 'N', 1.0, 1.58), ('C', 'H', 1.0, 1.095)] - idx=12 H Number of bonds : 1 - BOND CREATED 12 12 6 1.0 H N - BONDS [('H', 'N', 1.0, 1.032)] - idx=13 O Number of bonds : 1 - BOND CREATED 13 13 8 1.0 O C - BONDS [('O', 'C', 1.0, 1.208)] -CREATE_bonds_specie: specie.formula='H7-C3-N2-O2', specie.subtype='ligand' - Number of atoms in ligand object and RDKit object are different: 14 15 - [(0, 'C'), (1, 'C'), (2, 'H'), (3, 'H'), (4, 'H'), (5, 'N'), (6, 'O'), (7, 'O'), (8, 'N'), (9, 'C'), (10, 'H'), (11, 'H'), (12, 'H'), (13, 'H')] - [(0, 'C'), (1, 'C'), (2, 'H'), (3, 'H'), (4, 'H'), (5, 'N'), (6, 'O'), (7, 'O'), (8, 'N'), (9, 'C'), (10, 'H'), (11, 'H'), (12, 'H'), (13, 'H'), (14, 'H')] - NON_BONDED_ATOMS [14] - idx=0 C Number of bonds : 4 - BOND CREATED 0 0 2 1.0 C H - BOND CREATED 0 0 5 1.0 C N - BOND CREATED 0 0 9 1.0 C C - BOND CREATED 0 0 11 1.0 C H - BONDS [('C', 'H', 1.0, 1.095), ('C', 'N', 1.0, 1.58), ('C', 'C', 1.0, 1.438), ('C', 'H', 1.0, 1.086)] - idx=1 C Number of bonds : 3 - BOND CREATED 1 1 6 2.0 C O - BOND CREATED 1 1 7 1.0 C O - BOND CREATED 1 1 9 1.0 C C - BONDS [('C', 'O', 2.0, 1.305), ('C', 'O', 1.0, 1.208), ('C', 'C', 1.0, 1.512)] - idx=2 H Number of bonds : 1 - BOND CREATED 2 2 0 1.0 H C - BONDS [('H', 'C', 1.0, 1.095)] - idx=3 H Number of bonds : 1 - BOND CREATED 3 3 5 1.0 H N - BONDS [('H', 'N', 1.0, 1.048)] - idx=4 H Number of bonds : 1 - BOND CREATED 4 4 5 1.0 H N - BONDS [('H', 'N', 1.0, 1.032)] - idx=5 N Number of bonds : 3 - BOND CREATED 5 5 0 1.0 N C - BOND CREATED 5 5 3 1.0 N H - BOND CREATED 5 5 4 1.0 N H - BONDS [('N', 'C', 1.0, 1.58), ('N', 'H', 1.0, 1.048), ('N', 'H', 1.0, 1.032)] - idx=6 O Number of bonds : 1 - BOND CREATED 6 6 1 2.0 O C - BONDS [('O', 'C', 2.0, 1.305)] - idx=7 O Number of bonds : 1 - BOND CREATED 7 7 1 1.0 O C - BONDS [('O', 'C', 1.0, 1.208)] - idx=8 N Number of bonds : 4 - BOND CREATED 8 8 9 1.0 N C - BOND CREATED 8 8 12 1.0 N H - BOND CREATED 8 8 13 1.0 N H - NO BOND CREATED bond_startatom=8 or bond_endatom=14 is not in the specie.atoms. It belongs to non_bonded_atoms=[14]. - BONDS [('N', 'C', 1.0, 1.433), ('N', 'H', 1.0, 1.049), ('N', 'H', 1.0, 1.011)] - idx=9 C Number of bonds : 4 - BOND CREATED 9 9 0 1.0 C C - BOND CREATED 9 9 1 1.0 C C - BOND CREATED 9 9 8 1.0 C N - BOND CREATED 9 9 10 1.0 C H - BONDS [('C', 'C', 1.0, 1.438), ('C', 'C', 1.0, 1.512), ('C', 'N', 1.0, 1.433), ('C', 'H', 1.0, 1.083)] - idx=10 H Number of bonds : 1 - BOND CREATED 10 10 9 1.0 H C - BONDS [('H', 'C', 1.0, 1.083)] - idx=11 H Number of bonds : 1 - BOND CREATED 11 11 0 1.0 H C - BONDS [('H', 'C', 1.0, 1.086)] - idx=12 H Number of bonds : 1 - BOND CREATED 12 12 8 1.0 H N - BONDS [('H', 'N', 1.0, 1.049)] - idx=13 H Number of bonds : 1 - BOND CREATED 13 13 8 1.0 H N - BONDS [('H', 'N', 1.0, 1.011)] - idx=14 H Number of bonds : 1 - NO BOND CREATED bond_startatom=8 or bond_endatom=14 is not in the specie.atoms. It belongs to non_bonded_atoms=[14]. - NO BONDS for H with ligand RDKit object index 14 because it is an added atom -CELL.CREATE_BONDS: error creating bonds for atom: -------------- Cell2mol ATOM Object ---------------- - Version = 0.1 - Type = atom - Label = C - Atomic Number = 6 - Index in Molecule = 2 - Index in Ligand = 0 - Metal Adjacency (mconnec) = 0 - Regular Adjacencies (connec) = 0 - Atom Charge = 0.0 ----------------------------------------------------- - - of ligand: -------------- Cell2mol LIGAND Object -------------- - Version = 0.1 - Type = specie - Sub-Type = ligand - Number of Atoms = 14 - Formula = H7-C3-N2-O2 - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Total Charge = -1 - Smiles = [H]N([H])C([H])([H])C([H])(C(=O)[O-])N([H])[H] - Origin = split_complex - Number of Groups = 3 ---------------------------------------------------- - - -CELL.CREATE_BONDS: count differs from atom.mconnec: 1, 0 -CELL.CREATE_BONDS: error creating bonds for atom: -------------- Cell2mol ATOM Object ---------------- - Version = 0.1 - Type = atom - Label = C - Atomic Number = 6 - Index in Molecule = 18 - Index in Ligand = 9 - Metal Adjacency (mconnec) = 0 - Regular Adjacencies (connec) = 0 - Atom Charge = 0.0 ----------------------------------------------------- - - of ligand: -------------- Cell2mol LIGAND Object -------------- - Version = 0.1 - Type = specie - Sub-Type = ligand - Number of Atoms = 14 - Formula = H7-C3-N2-O2 - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Total Charge = -1 - Smiles = [H]N([H])C([H])([H])C([H])(C(=O)[O-])[N+]([H])([H])[H] - Origin = split_complex - Number of Groups = 3 ---------------------------------------------------- - - -CELL.CREATE_BONDS: count differs from atom.mconnec: 1, 0 -ligand.formula='H7-C3-N2-O2' smiles='[H]N([H])C([H])([H])C([H])(C(=O)[O-])N([H])[H]' - -ligand.formula='H7-C3-N2-O2' smiles='[H]N([H])C([H])([H])C([H])(C(=O)[O-])N([H])[H]' - -CELL.CREATE_BONDS: Creating Bonds for molecule H14-C6-N4-O4-Co -CREATE_bonds_specie: specie.formula='H7-C3-N2-O2', specie.subtype='ligand' - Number of atoms in ligand object and RDKit object are equal: 14 14 - idx=0 N Number of bonds : 3 - BOND CREATED 0 0 3 1.0 N C - BOND CREATED 0 0 4 1.0 N H - BOND CREATED 0 0 5 1.0 N H - BONDS [('N', 'C', 1.0, 1.433), ('N', 'H', 1.0, 1.049), ('N', 'H', 1.0, 1.011)] - idx=1 N Number of bonds : 3 - BOND CREATED 1 1 6 1.0 N C - BOND CREATED 1 1 7 1.0 N H - BOND CREATED 1 1 8 1.0 N H - BONDS [('N', 'C', 1.0, 1.58), ('N', 'H', 1.0, 1.032), ('N', 'H', 1.0, 1.048)] - idx=2 O Number of bonds : 1 - BOND CREATED 2 2 9 2.0 O C - BONDS [('O', 'C', 2.0, 1.305)] - idx=3 C Number of bonds : 4 - BOND CREATED 3 3 0 1.0 C N - BOND CREATED 3 3 6 1.0 C C - BOND CREATED 3 3 9 1.0 C C - BOND CREATED 3 3 10 1.0 C H - BONDS [('C', 'N', 1.0, 1.433), ('C', 'C', 1.0, 1.438), ('C', 'C', 1.0, 1.512), ('C', 'H', 1.0, 1.083)] - idx=4 H Number of bonds : 1 - BOND CREATED 4 4 0 1.0 H N - BONDS [('H', 'N', 1.0, 1.049)] - idx=5 H Number of bonds : 1 - BOND CREATED 5 5 0 1.0 H N - BONDS [('H', 'N', 1.0, 1.011)] - idx=6 C Number of bonds : 4 - BOND CREATED 6 6 1 1.0 C N - BOND CREATED 6 6 3 1.0 C C - BOND CREATED 6 6 11 1.0 C H - BOND CREATED 6 6 12 1.0 C H - BONDS [('C', 'N', 1.0, 1.58), ('C', 'C', 1.0, 1.438), ('C', 'H', 1.0, 1.095), ('C', 'H', 1.0, 1.086)] - idx=7 H Number of bonds : 1 - BOND CREATED 7 7 1 1.0 H N - BONDS [('H', 'N', 1.0, 1.032)] - idx=8 H Number of bonds : 1 - BOND CREATED 8 8 1 1.0 H N - BONDS [('H', 'N', 1.0, 1.048)] - idx=9 C Number of bonds : 3 - BOND CREATED 9 9 2 2.0 C O - BOND CREATED 9 9 3 1.0 C C - BOND CREATED 9 9 13 1.0 C O - BONDS [('C', 'O', 2.0, 1.305), ('C', 'C', 1.0, 1.512), ('C', 'O', 1.0, 1.208)] - idx=10 H Number of bonds : 1 - BOND CREATED 10 10 3 1.0 H C - BONDS [('H', 'C', 1.0, 1.083)] - idx=11 H Number of bonds : 1 - BOND CREATED 11 11 6 1.0 H C - BONDS [('H', 'C', 1.0, 1.095)] - idx=12 H Number of bonds : 1 - BOND CREATED 12 12 6 1.0 H C - BONDS [('H', 'C', 1.0, 1.086)] - idx=13 O Number of bonds : 1 - BOND CREATED 13 13 9 1.0 O C - BONDS [('O', 'C', 1.0, 1.208)] -CREATE_bonds_specie: specie.formula='H7-C3-N2-O2', specie.subtype='ligand' - Number of atoms in ligand object and RDKit object are different: 14 15 - [(0, 'C'), (1, 'C'), (2, 'C'), (3, 'H'), (4, 'H'), (5, 'H'), (6, 'H'), (7, 'H'), (8, 'H'), (9, 'H'), (10, 'N'), (11, 'N'), (12, 'O'), (13, 'O')] - [(0, 'C'), (1, 'C'), (2, 'C'), (3, 'H'), (4, 'H'), (5, 'H'), (6, 'H'), (7, 'H'), (8, 'H'), (9, 'H'), (10, 'N'), (11, 'N'), (12, 'O'), (13, 'O'), (14, 'H')] - NON_BONDED_ATOMS [14] - idx=0 C Number of bonds : 3 - BOND CREATED 0 0 1 1.0 C C - BOND CREATED 0 0 12 2.0 C O - BOND CREATED 0 0 13 1.0 C O - BONDS [('C', 'C', 1.0, 1.512), ('C', 'O', 2.0, 1.305), ('C', 'O', 1.0, 1.208)] - idx=1 C Number of bonds : 4 - BOND CREATED 1 1 0 1.0 C C - BOND CREATED 1 1 2 1.0 C C - BOND CREATED 1 1 7 1.0 C H - BOND CREATED 1 1 10 1.0 C N - BONDS [('C', 'C', 1.0, 1.512), ('C', 'C', 1.0, 1.438), ('C', 'H', 1.0, 1.083), ('C', 'N', 1.0, 1.433)] - idx=2 C Number of bonds : 4 - BOND CREATED 2 2 1 1.0 C C - BOND CREATED 2 2 8 1.0 C H - BOND CREATED 2 2 9 1.0 C H - BOND CREATED 2 2 11 1.0 C N - BONDS [('C', 'C', 1.0, 1.438), ('C', 'H', 1.0, 1.095), ('C', 'H', 1.0, 1.086), ('C', 'N', 1.0, 1.58)] - idx=3 H Number of bonds : 1 - BOND CREATED 3 3 10 1.0 H N - BONDS [('H', 'N', 1.0, 1.049)] - idx=4 H Number of bonds : 1 - BOND CREATED 4 4 10 1.0 H N - BONDS [('H', 'N', 1.0, 1.011)] - idx=5 H Number of bonds : 1 - BOND CREATED 5 5 11 1.0 H N - BONDS [('H', 'N', 1.0, 1.032)] - idx=6 H Number of bonds : 1 - BOND CREATED 6 6 11 1.0 H N - BONDS [('H', 'N', 1.0, 1.048)] - idx=7 H Number of bonds : 1 - BOND CREATED 7 7 1 1.0 H C - BONDS [('H', 'C', 1.0, 1.083)] - idx=8 H Number of bonds : 1 - BOND CREATED 8 8 2 1.0 H C - BONDS [('H', 'C', 1.0, 1.095)] - idx=9 H Number of bonds : 1 - BOND CREATED 9 9 2 1.0 H C - BONDS [('H', 'C', 1.0, 1.086)] - idx=10 N Number of bonds : 4 - BOND CREATED 10 10 1 1.0 N C - BOND CREATED 10 10 3 1.0 N H - BOND CREATED 10 10 4 1.0 N H - NO BOND CREATED bond_startatom=10 or bond_endatom=14 is not in the specie.atoms. It belongs to non_bonded_atoms=[14]. - BONDS [('N', 'C', 1.0, 1.433), ('N', 'H', 1.0, 1.049), ('N', 'H', 1.0, 1.011)] - idx=11 N Number of bonds : 3 - BOND CREATED 11 11 2 1.0 N C - BOND CREATED 11 11 5 1.0 N H - BOND CREATED 11 11 6 1.0 N H - BONDS [('N', 'C', 1.0, 1.58), ('N', 'H', 1.0, 1.032), ('N', 'H', 1.0, 1.048)] - idx=12 O Number of bonds : 1 - BOND CREATED 12 12 0 2.0 O C - BONDS [('O', 'C', 2.0, 1.305)] - idx=13 O Number of bonds : 1 - BOND CREATED 13 13 0 1.0 O C - BONDS [('O', 'C', 1.0, 1.208)] - idx=14 H Number of bonds : 1 - NO BOND CREATED bond_startatom=10 or bond_endatom=14 is not in the specie.atoms. It belongs to non_bonded_atoms=[14]. - NO BONDS for H with ligand RDKit object index 14 because it is an added atom -CELL.CREATE_BONDS: error creating bonds for atom: -------------- Cell2mol ATOM Object ---------------- - Version = 0.1 - Type = atom - Label = C - Atomic Number = 6 - Index in Molecule = 18 - Index in Ligand = 3 - Metal Adjacency (mconnec) = 0 - Regular Adjacencies (connec) = 0 - Atom Charge = 0.0 ----------------------------------------------------- - - of ligand: -------------- Cell2mol LIGAND Object -------------- - Version = 0.1 - Type = specie - Sub-Type = ligand - Number of Atoms = 14 - Formula = H7-C3-N2-O2 - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Total Charge = -1 - Smiles = [H]N([H])C([H])([H])C([H])(C(=O)[O-])N([H])[H] - Origin = split_complex - Number of Groups = 3 ---------------------------------------------------- - - -CELL.CREATE_BONDS: count differs from atom.mconnec: 1, 0 -CELL.CREATE_BONDS: error creating bonds for atom: -------------- Cell2mol ATOM Object ---------------- - Version = 0.1 - Type = atom - Label = C - Atomic Number = 6 - Index in Molecule = 2 - Index in Ligand = 1 - Metal Adjacency (mconnec) = 0 - Regular Adjacencies (connec) = 0 - Atom Charge = 0.0 ----------------------------------------------------- - - of ligand: -------------- Cell2mol LIGAND Object -------------- - Version = 0.1 - Type = specie - Sub-Type = ligand - Number of Atoms = 14 - Formula = H7-C3-N2-O2 - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Total Charge = -1 - Smiles = [H]N([H])C([H])([H])C([H])(C(=O)[O-])[N+]([H])([H])[H] - Origin = split_complex - Number of Groups = 3 ---------------------------------------------------- - - -CELL.CREATE_BONDS: count differs from atom.mconnec: 1, 0 -ligand.formula='H7-C3-N2-O2' smiles='[H]N([H])C([H])([H])C([H])(C(=O)[O-])N([H])[H]' - -ligand.formula='H7-C3-N2-O2' smiles='[H]N([H])C([H])([H])C([H])(C(=O)[O-])N([H])[H]' - -Charge Assignment Finished Normally. Total execution time: 0.53 seconds -######################################### - Assigning Spin multiplicity -######################################### -GET_SPIN: Spin multiplicity of the complex Br is assigned as 1 - -GET_SPIN: Spin multiplicity of the complex Br is assigned as 1 - -GENERATE_feature_vector: Co -GENERATE_feature_vector: elem_nr=27 m_ox=3.0 valence_elec=6.0 -GENERATE_feature_vector: metal.coord_nr=6 metal.coord_geometry='Octahedral' geom_nr=14 -GENERATE_feature_vector: metal.rel_metal_radius=0.985 -GENERATE_feature_vector: hapticity=0 -GENERATE_feature_vector: feature=array([[27. , 3. , 6. , 6. , 14. , 0.985, 0. ]]) -ASSIGN_SPIN_METAL: Spin multiplicity of the metal Co is predicted as 1 using Random Forest model -GET_SPIN: Spin multiplicity of the metal Co is assigned as 1 -GET_SPIN: Spin multiplicity of the complex H14-C6-N4-O4-Co is assigned as 1 - -GENERATE_feature_vector: Co -GENERATE_feature_vector: elem_nr=27 m_ox=3.0 valence_elec=6.0 -GENERATE_feature_vector: metal.coord_nr=6 metal.coord_geometry='Octahedral' geom_nr=14 -GENERATE_feature_vector: metal.rel_metal_radius=0.985 -GENERATE_feature_vector: hapticity=0 -GENERATE_feature_vector: feature=array([[27. , 3. , 6. , 6. , 14. , 0.985, 0. ]]) -ASSIGN_SPIN_METAL: Spin multiplicity of the metal Co is predicted as 1 using Random Forest model -GET_SPIN: Spin multiplicity of the metal Co is assigned as 1 -GET_SPIN: Spin multiplicity of the complex H14-C6-N4-O4-Co is assigned as 1 - - -Total execution time for Spin Assignment: 0.45 seconds -------------------------------- -Errors in Unit Cell -------------------------------- -Cell2mol terminated with error number 0. Message: -No Errors Found - -*** Cell *** -SAVING cell2mol CELL object to /Users/ycho/cell2mol/cell2mol/test/error_2/APRCOB/Cell_APRCOB.cell -------------- Cell2mol CELL Object ---------------- - Version = 0.1 - Type = cell - Name (Refcode) = APRCOB - Num Atoms = 60 - Cell Parameters a:c = [11.76, 7.49, 5.91] - Cell Parameters al:ga = [90.0, 90.0, 90.0] - # Molecules: = 4 - With Formulae: - 0: Br - 1: Br - 2: H14-C6-N4-O4-Co - 3: H14-C6-N4-O4-Co ---------------------------------------------------- - # of Ref Molecules: = 2 - With Formulae: - 0: H14-C6-N4-O4-Co - 1: Br - -*** Reference molecules *** -[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 29 - Formula = H14-C6-N4-O4-Co - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Number of Ligands = 2 - Number of Metals = 1 ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = Br - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES ---------------------------------------------------- -] diff --git a/cell2mol/test/error_2/APRCOB/cif2cell.err b/cell2mol/test/error_2/APRCOB/cif2cell.err deleted file mode 100644 index e69de29bb..000000000 diff --git a/cell2mol/test/error_2/APRCOB/error_0.out b/cell2mol/test/error_2/APRCOB/error_0.out deleted file mode 100644 index 1ed2c65bd..000000000 --- a/cell2mol/test/error_2/APRCOB/error_0.out +++ /dev/null @@ -1,2 +0,0 @@ -Cell2mol terminated with error number 0. Message: -No Errors Found diff --git a/cell2mol/test/error_2/APRCOB/error_2.out b/cell2mol/test/error_2/APRCOB/error_2.out deleted file mode 100644 index 5efa9bb3b..000000000 --- a/cell2mol/test/error_2/APRCOB/error_2.out +++ /dev/null @@ -1,2 +0,0 @@ -Cell2mol terminated with error number 2. Message: -We detected that H atoms are likely missing. This will cause errors in the charge prediction, so STOPPING pre-emptively. diff --git a/cell2mol/test/error_2/BOFFOS.search5.cif b/cell2mol/test/error_2/BOFFOS.search5.cif deleted file mode 100755 index 87efae19a..000000000 --- a/cell2mol/test/error_2/BOFFOS.search5.cif +++ /dev/null @@ -1,249 +0,0 @@ - -####################################################################### -# -# Cambridge Crystallographic Data Centre -# CCDC -# -####################################################################### -# -# If this CIF has been generated from an entry in the Cambridge -# Structural Database, then it will include bibliographic, chemical, -# crystal, experimental, refinement or atomic coordinate data resulting -# from the CCDC's data processing and validation procedures. -# -####################################################################### - -data_CSD_CIF_BOFFOS -_audit_creation_date 2008-11-25 -_audit_creation_method CSD-ConQuest-V1 -_database_code_CSD BOFFOS -_database_code_depnum_ccdc_archive 'CCDC 680756' -_chemical_formula_sum 'C42 H90 Fe1 K3 O39' -_chemical_formula_moiety -; -C42 H72 Fe1 K3 O30,9(H2 O1) -; -_journal_coden_Cambridge 1295 -_journal_volume 11 -_journal_year 2008 -_journal_page_first 799 -_journal_name_full 'Inorg.Chem.Commun. ' -loop_ -_publ_author_name -"Wei-Hua Yu" -"Xiao-Zu Wang" -"Yun-Xia Sui" -"Xiao-Ming Ren" -"Qing-Jin Meng" -_chemical_name_systematic -; -tris(\m~2~-oxalato)-tris(1,4,7,10,13,16-hexaoxacyclooctadecane)-iron(iii)-tri- -potassium(i) nonahydrate -; -_cell_volume 5013.275 -_exptl_crystal_colour 'light yellow' -_exptl_crystal_density_diffrn 1.383 -_exptl_special_details -; -isostructural with chromium analogue - -; -_exptl_crystal_description 'prismatic' -_diffrn_ambient_temperature 293 -#These two values have been output from a single CSD field. -_refine_ls_R_factor_gt 0.0281 -_refine_ls_wR_factor_gt 0.0281 -_symmetry_cell_setting rhombohedral -_symmetry_space_group_name_H-M 'R 3' -_symmetry_Int_Tables_number 146 -loop_ -_symmetry_equiv_pos_site_id -_symmetry_equiv_pos_as_xyz -1 x,y,z -2 -y,x-y,z -3 -x+y,-x,z -4 2/3+x,1/3+y,1/3+z -5 2/3-y,1/3+x-y,1/3+z -6 2/3-x+y,1/3-x,1/3+z -7 1/3+x,2/3+y,2/3+z -8 1/3-y,2/3+x-y,2/3+z -9 1/3-x+y,2/3-x,2/3+z -_cell_length_a 24.369(3) -_cell_length_b 24.369(3) -_cell_length_c 9.748(2) -_cell_angle_alpha 90 -_cell_angle_beta 90 -_cell_angle_gamma 120 -_cell_formula_units_Z 3 -loop_ -_atom_type_symbol -_atom_type_radius_bond -C 0.68 -H 0.23 -Fe 1.34 -K 2.00 -O 0.68 -loop_ -_atom_site_label -_atom_site_type_symbol -_atom_site_fract_x -_atom_site_fract_y -_atom_site_fract_z -K1 K 0.84713(2) 0.49715(2) 0.70169(5) -Fe1 Fe 0.66670 0.33330 0.96380(5) -O1 O 0.84564(8) 0.45731(9) 0.43407(18) -O2 O 0.75871(7) 0.49451(7) 0.50598(16) -O3 O 0.76046(8) 0.53529(8) 0.77498(19) -O4 O 0.87556(9) 0.58795(9) 0.92401(17) -O5 O 0.96610(8) 0.56061(10) 0.8361(2) -O6 O 0.96481(8) 0.51525(9) 0.5698(2) -O7 O 0.84884(8) 0.40648(8) 0.8643(2) -O8 O 0.74737(7) 0.37844(7) 0.85468(16) -O9 O 0.72235(8) 0.31431(8) 1.08222(16) -O10 O 0.82236(9) 0.33812(10) 1.1071(2) -O11 O 0.96073(11) 0.41262(15) 0.9709(3) -O12 O 0.68302(19) 0.6317(2) 0.4667(4) -O13 O 0.91917(16) 0.32407(19) 0.2061(4) -C1 C 0.80239(15) 0.45809(15) 0.3380(3) -H1 H 0.79270 0.42620 0.26810 -H2 H 0.82120 0.49920 0.29350 -C2 C 0.74359(13) 0.44512(14) 0.4096(3) -H3 H 0.71280 0.44330 0.34390 -H4 H 0.72540 0.40470 0.45660 -C3 C 0.70399(12) 0.48803(14) 0.5726(3) -H5 H 0.68240 0.44780 0.62070 -H6 H 0.67510 0.48880 0.50520 -C4 C 0.72312(13) 0.54080(14) 0.6713(3) -H7 H 0.74720 0.58110 0.62450 -H8 H 0.68580 0.53900 0.71140 -C5 C 0.77726(14) 0.58121(13) 0.8796(3) -H9 H 0.73940 0.57720 0.92210 -H10 H 0.80150 0.62350 0.84120 -C6 C 0.81561(14) 0.57083(14) 0.9825(3) -H11 H 0.82130 0.59640 1.06320 -H12 H 0.79410 0.52670 1.00990 -C7 C 0.91569(15) 0.58064(17) 1.0182(3) -H13 H 0.89640 0.53680 1.04710 -H14 H 0.92240 0.60670 1.09870 -C8 C 0.97720(15) 0.60043(16) 0.9488(3) -H15 H 0.99600 0.64410 0.91840 -H16 H 1.00630 0.59740 1.01210 -C9 C 1.02129(13) 0.56892(17) 0.7706(4) -H17 H 1.05150 0.57140 0.83870 -H18 H 1.04070 0.60810 0.71870 -C10 C 1.00469(14) 0.51534(16) 0.6783(4) -H19 H 1.04290 0.51870 0.63980 -H20 H 0.98270 0.47590 0.72920 -C11 C 0.94276(14) 0.46181(14) 0.4835(4) -H21 H 0.91860 0.42340 0.53680 -H22 H 0.97850 0.46060 0.44280 -C12 C 0.90229(15) 0.46506(16) 0.3738(3) -H23 H 0.92470 0.50570 0.32740 -H24 H 0.89210 0.43190 0.30670 -C13 C 0.79509(10) 0.37857(10) 0.9100(2) -C14 C 0.78019(11) 0.34031(10) 1.0458(2) -H25 H 0.9259(14) 0.411(2) 0.945(4) -H26 H 0.7016(17) 0.6710(11) 0.435(4) -H27 H 0.8794(11) 0.316(2) 0.195(5) -H28 H 0.9563(16) 0.3911(15) 1.044(3) -H29 H 0.6549(14) 0.6439(18) 0.480(4) -H30 H 0.917(3) 0.322(3) 0.297(2) -K1A K 0.50285(2) 0.34998(2) 0.70169(5) -K1B K 0.65002(2) 0.15287(2) 0.70169(5) -O1A O 0.54269(8) 0.38833(9) 0.43407(18) -O1B O 0.61167(8) 0.15436(9) 0.43407(18) -O2A O 0.50549(7) 0.26420(7) 0.50598(16) -O2B O 0.73580(7) 0.24129(7) 0.50598(16) -O3A O 0.46471(8) 0.22517(8) 0.77498(19) -O3B O 0.77483(8) 0.23954(8) 0.77498(19) -O4A O 0.41205(9) 0.28761(9) 0.92401(17) -O4B O 0.71239(9) 0.12444(9) 0.92401(17) -O5A O 0.43939(8) 0.40549(10) 0.8361(2) -O5B O 0.59451(8) 0.0339(1) 0.8361(2) -O6A O 0.48475(8) 0.44956(9) 0.5698(2) -O6B O 0.55044(8) 0.03519(9) 0.5698(2) -O7A O 0.59352(8) 0.44236(8) 0.8643(2) -O7B O 0.55764(8) 0.15116(8) 0.8643(2) -O8A O 0.62156(7) 0.36893(7) 0.85468(16) -O8B O 0.63107(7) 0.25263(7) 0.85468(16) -O9A O 0.68569(8) 0.40804(8) 1.08222(16) -O9B O 0.59196(8) 0.27765(8) 1.08222(16) -O10B O 0.51576(9) 0.17764(10) 1.1071(2) -O10A O 0.66188(9) 0.48424(10) 1.1071(2) -C1A C 0.54191(15) 0.34430(15) 0.3380(3) -C1B C 0.65570(15) 0.19761(15) 0.3380(3) -H1A H 0.57380 0.36650 0.26810 -H1B H 0.63350 0.20730 0.26810 -H2A H 0.50080 0.32200 0.29350 -H2B H 0.67800 0.17880 0.29350 -C2A C 0.55488(13) 0.29847(14) 0.4096(3) -C2B C 0.70153(13) 0.25641(14) 0.4096(3) -H3B H 0.73050 0.28720 0.34390 -H3A H 0.55670 0.26950 0.34390 -H4B H 0.67930 0.27460 0.45660 -H4A H 0.59530 0.32070 0.45660 -C3A C 0.51197(12) 0.21596(14) 0.5726(3) -C3B C 0.78404(12) 0.29601(14) 0.5726(3) -H5A H 0.55220 0.23460 0.62070 -H5B H 0.76540 0.31760 0.62070 -H6A H 0.51120 0.18630 0.50520 -H6B H 0.81370 0.32490 0.50520 -C4A C 0.45920(13) 0.18232(14) 0.6713(3) -C4B C 0.81768(13) 0.27688(14) 0.6713(3) -H7A H 0.41890 0.16610 0.62450 -H7B H 0.83390 0.25280 0.62450 -H8A H 0.46100 0.14680 0.71140 -H8B H 0.85320 0.31420 0.71140 -C5A C 0.41879(14) 0.19605(13) 0.8796(3) -C5B C 0.80395(14) 0.22274(13) 0.8796(3) -H9A H 0.42280 0.16220 0.92210 -H9B H 0.83780 0.26060 0.92210 -H10A H 0.37650 0.17800 0.84120 -H10B H 0.82200 0.19850 0.84120 -C6A C 0.42917(14) 0.24478(14) 0.9825(3) -C6B C 0.75522(14) 0.18439(14) 0.9825(3) -H11B H 0.77510 0.17870 1.06320 -H11A H 0.40360 0.22490 1.06320 -H12B H 0.73260 0.20590 1.00990 -H12A H 0.47330 0.26740 1.00990 -C7A C 0.41936(15) 0.33505(17) 1.0182(3) -C7B C 0.66495(15) 0.08431(17) 1.0182(3) -H13A H 0.46320 0.35960 1.04710 -H13B H 0.64040 0.10360 1.04710 -H14A H 0.39330 0.31570 1.09870 -H14B H 0.68430 0.07760 1.09870 -C8A C 0.39957(15) 0.37677(16) 0.9488(3) -C8B C 0.62323(15) 0.02280(16) 0.9488(3) -H15A H 0.35590 0.35190 0.91840 -H15B H 0.64810 0.00400 0.91840 -H16A H 0.40260 0.40890 1.01210 -H16B H 0.59110 -0.00630 1.01210 -C9A C 0.43108(13) 0.45237(17) 0.7706(4) -C9B C 0.54763(13) -0.02129(17) 0.7706(4) -H17A H 0.42860 0.48010 0.83870 -H17B H 0.51990 -0.05150 0.83870 -H18A H 0.39190 0.43260 0.71870 -H18B H 0.56740 -0.04070 0.71870 -C10A C 0.48466(14) 0.48935(16) 0.6783(4) -C10B C 0.51065(14) -0.00469(16) 0.6783(4) -H19B H 0.47580 -0.04290 0.63980 -H19A H 0.48130 0.52420 0.63980 -H20B H 0.49320 0.01730 0.72920 -H20A H 0.52410 0.50680 0.72920 -C11B C 0.51905(14) 0.05724(14) 0.4835(4) -C11A C 0.53819(14) 0.48095(14) 0.4835(4) -H21B H 0.50480 0.08140 0.53680 -H21A H 0.57660 0.49520 0.53680 -H22B H 0.48210 0.02150 0.44280 -H22A H 0.53940 0.51790 0.44280 -C12B C 0.56277(15) 0.09771(16) 0.3738(3) -C12A C 0.53494(15) 0.43723(16) 0.3738(3) -H23B H 0.58100 0.07530 0.32740 -H23A H 0.49430 0.41900 0.32740 -H24B H 0.53980 0.10790 0.30670 -H24A H 0.56810 0.46020 0.30670 -C13A C 0.62143(10) 0.41652(10) 0.9100(2) -C13B C 0.58348(10) 0.20491(10) 0.9100(2) -C14A C 0.65969(11) 0.43988(10) 1.0458(2) -C14B C 0.56012(11) 0.21981(10) 1.0458(2) -#END diff --git a/cell2mol/test/error_2/BOFFOS/BOFFOS.cif b/cell2mol/test/error_2/BOFFOS/BOFFOS.cif deleted file mode 100755 index 87efae19a..000000000 --- a/cell2mol/test/error_2/BOFFOS/BOFFOS.cif +++ /dev/null @@ -1,249 +0,0 @@ - -####################################################################### -# -# Cambridge Crystallographic Data Centre -# CCDC -# -####################################################################### -# -# If this CIF has been generated from an entry in the Cambridge -# Structural Database, then it will include bibliographic, chemical, -# crystal, experimental, refinement or atomic coordinate data resulting -# from the CCDC's data processing and validation procedures. -# -####################################################################### - -data_CSD_CIF_BOFFOS -_audit_creation_date 2008-11-25 -_audit_creation_method CSD-ConQuest-V1 -_database_code_CSD BOFFOS -_database_code_depnum_ccdc_archive 'CCDC 680756' -_chemical_formula_sum 'C42 H90 Fe1 K3 O39' -_chemical_formula_moiety -; -C42 H72 Fe1 K3 O30,9(H2 O1) -; -_journal_coden_Cambridge 1295 -_journal_volume 11 -_journal_year 2008 -_journal_page_first 799 -_journal_name_full 'Inorg.Chem.Commun. ' -loop_ -_publ_author_name -"Wei-Hua Yu" -"Xiao-Zu Wang" -"Yun-Xia Sui" -"Xiao-Ming Ren" -"Qing-Jin Meng" -_chemical_name_systematic -; -tris(\m~2~-oxalato)-tris(1,4,7,10,13,16-hexaoxacyclooctadecane)-iron(iii)-tri- -potassium(i) nonahydrate -; -_cell_volume 5013.275 -_exptl_crystal_colour 'light yellow' -_exptl_crystal_density_diffrn 1.383 -_exptl_special_details -; -isostructural with chromium analogue - -; -_exptl_crystal_description 'prismatic' -_diffrn_ambient_temperature 293 -#These two values have been output from a single CSD field. -_refine_ls_R_factor_gt 0.0281 -_refine_ls_wR_factor_gt 0.0281 -_symmetry_cell_setting rhombohedral -_symmetry_space_group_name_H-M 'R 3' -_symmetry_Int_Tables_number 146 -loop_ -_symmetry_equiv_pos_site_id -_symmetry_equiv_pos_as_xyz -1 x,y,z -2 -y,x-y,z -3 -x+y,-x,z -4 2/3+x,1/3+y,1/3+z -5 2/3-y,1/3+x-y,1/3+z -6 2/3-x+y,1/3-x,1/3+z -7 1/3+x,2/3+y,2/3+z -8 1/3-y,2/3+x-y,2/3+z -9 1/3-x+y,2/3-x,2/3+z -_cell_length_a 24.369(3) -_cell_length_b 24.369(3) -_cell_length_c 9.748(2) -_cell_angle_alpha 90 -_cell_angle_beta 90 -_cell_angle_gamma 120 -_cell_formula_units_Z 3 -loop_ -_atom_type_symbol -_atom_type_radius_bond -C 0.68 -H 0.23 -Fe 1.34 -K 2.00 -O 0.68 -loop_ -_atom_site_label -_atom_site_type_symbol -_atom_site_fract_x -_atom_site_fract_y -_atom_site_fract_z -K1 K 0.84713(2) 0.49715(2) 0.70169(5) -Fe1 Fe 0.66670 0.33330 0.96380(5) -O1 O 0.84564(8) 0.45731(9) 0.43407(18) -O2 O 0.75871(7) 0.49451(7) 0.50598(16) -O3 O 0.76046(8) 0.53529(8) 0.77498(19) -O4 O 0.87556(9) 0.58795(9) 0.92401(17) -O5 O 0.96610(8) 0.56061(10) 0.8361(2) -O6 O 0.96481(8) 0.51525(9) 0.5698(2) -O7 O 0.84884(8) 0.40648(8) 0.8643(2) -O8 O 0.74737(7) 0.37844(7) 0.85468(16) -O9 O 0.72235(8) 0.31431(8) 1.08222(16) -O10 O 0.82236(9) 0.33812(10) 1.1071(2) -O11 O 0.96073(11) 0.41262(15) 0.9709(3) -O12 O 0.68302(19) 0.6317(2) 0.4667(4) -O13 O 0.91917(16) 0.32407(19) 0.2061(4) -C1 C 0.80239(15) 0.45809(15) 0.3380(3) -H1 H 0.79270 0.42620 0.26810 -H2 H 0.82120 0.49920 0.29350 -C2 C 0.74359(13) 0.44512(14) 0.4096(3) -H3 H 0.71280 0.44330 0.34390 -H4 H 0.72540 0.40470 0.45660 -C3 C 0.70399(12) 0.48803(14) 0.5726(3) -H5 H 0.68240 0.44780 0.62070 -H6 H 0.67510 0.48880 0.50520 -C4 C 0.72312(13) 0.54080(14) 0.6713(3) -H7 H 0.74720 0.58110 0.62450 -H8 H 0.68580 0.53900 0.71140 -C5 C 0.77726(14) 0.58121(13) 0.8796(3) -H9 H 0.73940 0.57720 0.92210 -H10 H 0.80150 0.62350 0.84120 -C6 C 0.81561(14) 0.57083(14) 0.9825(3) -H11 H 0.82130 0.59640 1.06320 -H12 H 0.79410 0.52670 1.00990 -C7 C 0.91569(15) 0.58064(17) 1.0182(3) -H13 H 0.89640 0.53680 1.04710 -H14 H 0.92240 0.60670 1.09870 -C8 C 0.97720(15) 0.60043(16) 0.9488(3) -H15 H 0.99600 0.64410 0.91840 -H16 H 1.00630 0.59740 1.01210 -C9 C 1.02129(13) 0.56892(17) 0.7706(4) -H17 H 1.05150 0.57140 0.83870 -H18 H 1.04070 0.60810 0.71870 -C10 C 1.00469(14) 0.51534(16) 0.6783(4) -H19 H 1.04290 0.51870 0.63980 -H20 H 0.98270 0.47590 0.72920 -C11 C 0.94276(14) 0.46181(14) 0.4835(4) -H21 H 0.91860 0.42340 0.53680 -H22 H 0.97850 0.46060 0.44280 -C12 C 0.90229(15) 0.46506(16) 0.3738(3) -H23 H 0.92470 0.50570 0.32740 -H24 H 0.89210 0.43190 0.30670 -C13 C 0.79509(10) 0.37857(10) 0.9100(2) -C14 C 0.78019(11) 0.34031(10) 1.0458(2) -H25 H 0.9259(14) 0.411(2) 0.945(4) -H26 H 0.7016(17) 0.6710(11) 0.435(4) -H27 H 0.8794(11) 0.316(2) 0.195(5) -H28 H 0.9563(16) 0.3911(15) 1.044(3) -H29 H 0.6549(14) 0.6439(18) 0.480(4) -H30 H 0.917(3) 0.322(3) 0.297(2) -K1A K 0.50285(2) 0.34998(2) 0.70169(5) -K1B K 0.65002(2) 0.15287(2) 0.70169(5) -O1A O 0.54269(8) 0.38833(9) 0.43407(18) -O1B O 0.61167(8) 0.15436(9) 0.43407(18) -O2A O 0.50549(7) 0.26420(7) 0.50598(16) -O2B O 0.73580(7) 0.24129(7) 0.50598(16) -O3A O 0.46471(8) 0.22517(8) 0.77498(19) -O3B O 0.77483(8) 0.23954(8) 0.77498(19) -O4A O 0.41205(9) 0.28761(9) 0.92401(17) -O4B O 0.71239(9) 0.12444(9) 0.92401(17) -O5A O 0.43939(8) 0.40549(10) 0.8361(2) -O5B O 0.59451(8) 0.0339(1) 0.8361(2) -O6A O 0.48475(8) 0.44956(9) 0.5698(2) -O6B O 0.55044(8) 0.03519(9) 0.5698(2) -O7A O 0.59352(8) 0.44236(8) 0.8643(2) -O7B O 0.55764(8) 0.15116(8) 0.8643(2) -O8A O 0.62156(7) 0.36893(7) 0.85468(16) -O8B O 0.63107(7) 0.25263(7) 0.85468(16) -O9A O 0.68569(8) 0.40804(8) 1.08222(16) -O9B O 0.59196(8) 0.27765(8) 1.08222(16) -O10B O 0.51576(9) 0.17764(10) 1.1071(2) -O10A O 0.66188(9) 0.48424(10) 1.1071(2) -C1A C 0.54191(15) 0.34430(15) 0.3380(3) -C1B C 0.65570(15) 0.19761(15) 0.3380(3) -H1A H 0.57380 0.36650 0.26810 -H1B H 0.63350 0.20730 0.26810 -H2A H 0.50080 0.32200 0.29350 -H2B H 0.67800 0.17880 0.29350 -C2A C 0.55488(13) 0.29847(14) 0.4096(3) -C2B C 0.70153(13) 0.25641(14) 0.4096(3) -H3B H 0.73050 0.28720 0.34390 -H3A H 0.55670 0.26950 0.34390 -H4B H 0.67930 0.27460 0.45660 -H4A H 0.59530 0.32070 0.45660 -C3A C 0.51197(12) 0.21596(14) 0.5726(3) -C3B C 0.78404(12) 0.29601(14) 0.5726(3) -H5A H 0.55220 0.23460 0.62070 -H5B H 0.76540 0.31760 0.62070 -H6A H 0.51120 0.18630 0.50520 -H6B H 0.81370 0.32490 0.50520 -C4A C 0.45920(13) 0.18232(14) 0.6713(3) -C4B C 0.81768(13) 0.27688(14) 0.6713(3) -H7A H 0.41890 0.16610 0.62450 -H7B H 0.83390 0.25280 0.62450 -H8A H 0.46100 0.14680 0.71140 -H8B H 0.85320 0.31420 0.71140 -C5A C 0.41879(14) 0.19605(13) 0.8796(3) -C5B C 0.80395(14) 0.22274(13) 0.8796(3) -H9A H 0.42280 0.16220 0.92210 -H9B H 0.83780 0.26060 0.92210 -H10A H 0.37650 0.17800 0.84120 -H10B H 0.82200 0.19850 0.84120 -C6A C 0.42917(14) 0.24478(14) 0.9825(3) -C6B C 0.75522(14) 0.18439(14) 0.9825(3) -H11B H 0.77510 0.17870 1.06320 -H11A H 0.40360 0.22490 1.06320 -H12B H 0.73260 0.20590 1.00990 -H12A H 0.47330 0.26740 1.00990 -C7A C 0.41936(15) 0.33505(17) 1.0182(3) -C7B C 0.66495(15) 0.08431(17) 1.0182(3) -H13A H 0.46320 0.35960 1.04710 -H13B H 0.64040 0.10360 1.04710 -H14A H 0.39330 0.31570 1.09870 -H14B H 0.68430 0.07760 1.09870 -C8A C 0.39957(15) 0.37677(16) 0.9488(3) -C8B C 0.62323(15) 0.02280(16) 0.9488(3) -H15A H 0.35590 0.35190 0.91840 -H15B H 0.64810 0.00400 0.91840 -H16A H 0.40260 0.40890 1.01210 -H16B H 0.59110 -0.00630 1.01210 -C9A C 0.43108(13) 0.45237(17) 0.7706(4) -C9B C 0.54763(13) -0.02129(17) 0.7706(4) -H17A H 0.42860 0.48010 0.83870 -H17B H 0.51990 -0.05150 0.83870 -H18A H 0.39190 0.43260 0.71870 -H18B H 0.56740 -0.04070 0.71870 -C10A C 0.48466(14) 0.48935(16) 0.6783(4) -C10B C 0.51065(14) -0.00469(16) 0.6783(4) -H19B H 0.47580 -0.04290 0.63980 -H19A H 0.48130 0.52420 0.63980 -H20B H 0.49320 0.01730 0.72920 -H20A H 0.52410 0.50680 0.72920 -C11B C 0.51905(14) 0.05724(14) 0.4835(4) -C11A C 0.53819(14) 0.48095(14) 0.4835(4) -H21B H 0.50480 0.08140 0.53680 -H21A H 0.57660 0.49520 0.53680 -H22B H 0.48210 0.02150 0.44280 -H22A H 0.53940 0.51790 0.44280 -C12B C 0.56277(15) 0.09771(16) 0.3738(3) -C12A C 0.53494(15) 0.43723(16) 0.3738(3) -H23B H 0.58100 0.07530 0.32740 -H23A H 0.49430 0.41900 0.32740 -H24B H 0.53980 0.10790 0.30670 -H24A H 0.56810 0.46020 0.30670 -C13A C 0.62143(10) 0.41652(10) 0.9100(2) -C13B C 0.58348(10) 0.20491(10) 0.9100(2) -C14A C 0.65969(11) 0.43988(10) 1.0458(2) -C14B C 0.56012(11) 0.21981(10) 1.0458(2) -#END diff --git a/cell2mol/test/error_2/BOFFOS/BOFFOS.info b/cell2mol/test/error_2/BOFFOS/BOFFOS.info deleted file mode 100644 index d7c1fc674..000000000 --- a/cell2mol/test/error_2/BOFFOS/BOFFOS.info +++ /dev/null @@ -1,371 +0,0 @@ -CIF2CELL 2.0.0 -2024-05-07 19:57 -Output for None (tris(\m~2~-oxalato)-tris(1,4,7,10,13,16-hexaoxacyclooctadecane)-iron(iii)-tri- -potassium(i) nonahydrate) -CIF file exported from Cambridge Structural Database. -Database reference code: BOFFOS. - BIBLIOGRAPHIC INFORMATION -Wei-Hua Yu et al., Inorg.Chem.Commun. 11, 799- (2008) - INPUT CELL INFORMATION -Symmetry information: -Trigonal crystal system. -Space group number : 146 -Hall symbol : R 3 -Hermann-Mauguin symbol : R3 - -Lattice parameters: - a b c - 24.3690000 24.3690000 9.7480000 - alpha beta gamma - 90.0000000 90.0000000 120.0000000 -Representative sites : -Atom x y z -K 0.8471300 0.4971500 0.7016900 -Fe 0.6667000 0.3333000 0.9638000 -O 0.8456400 0.4573100 0.4340700 -O 0.7587100 0.4945100 0.5059800 -O 0.7604600 0.5352900 0.7749800 -O 0.8755600 0.5879500 0.9240100 -O 0.9661000 0.5606100 0.8361000 -O 0.9648100 0.5152500 0.5698000 -O 0.8488400 0.4064800 0.8643000 -O 0.7473700 0.3784400 0.8546800 -O 0.7223500 0.3143100 1.0822200 -O 0.8223600 0.3381200 1.1071000 -O 0.9607300 0.4126200 0.9709000 -O 0.6830200 0.6317000 0.4667000 -O 0.9191700 0.3240700 0.2061000 -C 0.8023900 0.4580900 0.3380000 -H 0.7927000 0.4262000 0.2681000 -H 0.8212000 0.4992000 0.2935000 -C 0.7435900 0.4451200 0.4096000 -H 0.7128000 0.4433000 0.3439000 -H 0.7254000 0.4047000 0.4566000 -C 0.7039900 0.4880300 0.5726000 -H 0.6824000 0.4478000 0.6207000 -H 0.6751000 0.4888000 0.5052000 -C 0.7231200 0.5408000 0.6713000 -H 0.7472000 0.5811000 0.6245000 -H 0.6858000 0.5390000 0.7114000 -C 0.7772600 0.5812100 0.8796000 -H 0.7394000 0.5772000 0.9221000 -H 0.8015000 0.6235000 0.8412000 -C 0.8156100 0.5708300 0.9825000 -H 0.8213000 0.5964000 1.0632000 -H 0.7941000 0.5267000 1.0099000 -C 0.9156900 0.5806400 1.0182000 -H 0.8964000 0.5368000 1.0471000 -H 0.9224000 0.6067000 1.0987000 -C 0.9772000 0.6004300 0.9488000 -H 0.9960000 0.6441000 0.9184000 -H 1.0063000 0.5974000 1.0121000 -C 1.0212900 0.5689200 0.7706000 -H 1.0515000 0.5714000 0.8387000 -H 1.0407000 0.6081000 0.7187000 -C 1.0046900 0.5153400 0.6783000 -H 1.0429000 0.5187000 0.6398000 -H 0.9827000 0.4759000 0.7292000 -C 0.9427600 0.4618100 0.4835000 -H 0.9186000 0.4234000 0.5368000 -H 0.9785000 0.4606000 0.4428000 -C 0.9022900 0.4650600 0.3738000 -H 0.9247000 0.5057000 0.3274000 -H 0.8921000 0.4319000 0.3067000 -C 0.7950900 0.3785700 0.9100000 -C 0.7801900 0.3403100 1.0458000 -H 0.9259000 0.4110000 0.9450000 -H 0.7016000 0.6710000 0.4350000 -H 0.8794000 0.3160000 0.1950000 -H 0.9563000 0.3911000 1.0440000 -H 0.6549000 0.6439000 0.4800000 -H 0.9170000 0.3220000 0.2970000 -K 0.5028500 0.3499800 0.7016900 -K 0.6500200 0.1528700 0.7016900 -O 0.5426900 0.3883300 0.4340700 -O 0.6116700 0.1543600 0.4340700 -O 0.5054900 0.2642000 0.5059800 -O 0.7358000 0.2412900 0.5059800 -O 0.4647100 0.2251700 0.7749800 -O 0.7748300 0.2395400 0.7749800 -O 0.4120500 0.2876100 0.9240100 -O 0.7123900 0.1244400 0.9240100 -O 0.4393900 0.4054900 0.8361000 -O 0.5945100 0.0339000 0.8361000 -O 0.4847500 0.4495600 0.5698000 -O 0.5504400 0.0351900 0.5698000 -O 0.5935200 0.4423600 0.8643000 -O 0.5576400 0.1511600 0.8643000 -O 0.6215600 0.3689300 0.8546800 -O 0.6310700 0.2526300 0.8546800 -O 0.6856900 0.4080400 1.0822200 -O 0.5919600 0.2776500 1.0822200 -O 0.5157600 0.1776400 1.1071000 -O 0.6618800 0.4842400 1.1071000 -C 0.5419100 0.3443000 0.3380000 -C 0.6557000 0.1976100 0.3380000 -H 0.5738000 0.3665000 0.2681000 -H 0.6335000 0.2073000 0.2681000 -H 0.5008000 0.3220000 0.2935000 -H 0.6780000 0.1788000 0.2935000 -C 0.5548800 0.2984700 0.4096000 -C 0.7015300 0.2564100 0.4096000 -H 0.7305000 0.2872000 0.3439000 -H 0.5567000 0.2695000 0.3439000 -H 0.6793000 0.2746000 0.4566000 -H 0.5953000 0.3207000 0.4566000 -C 0.5119700 0.2159600 0.5726000 -C 0.7840400 0.2960100 0.5726000 -H 0.5522000 0.2346000 0.6207000 -H 0.7654000 0.3176000 0.6207000 -H 0.5112000 0.1863000 0.5052000 -H 0.8137000 0.3249000 0.5052000 -C 0.4592000 0.1823200 0.6713000 -C 0.8176800 0.2768800 0.6713000 -H 0.4189000 0.1661000 0.6245000 -H 0.8339000 0.2528000 0.6245000 -H 0.4610000 0.1468000 0.7114000 -H 0.8532000 0.3142000 0.7114000 -C 0.4187900 0.1960500 0.8796000 -C 0.8039500 0.2227400 0.8796000 -H 0.4228000 0.1622000 0.9221000 -H 0.8378000 0.2606000 0.9221000 -H 0.3765000 0.1780000 0.8412000 -H 0.8220000 0.1985000 0.8412000 -C 0.4291700 0.2447800 0.9825000 -C 0.7552200 0.1843900 0.9825000 -H 0.7751000 0.1787000 1.0632000 -H 0.4036000 0.2249000 1.0632000 -H 0.7326000 0.2059000 1.0099000 -H 0.4733000 0.2674000 1.0099000 -C 0.4193600 0.3350500 1.0182000 -C 0.6649500 0.0843100 1.0182000 -H 0.4632000 0.3596000 1.0471000 -H 0.6404000 0.1036000 1.0471000 -H 0.3933000 0.3157000 1.0987000 -H 0.6843000 0.0776000 1.0987000 -C 0.3995700 0.3767700 0.9488000 -C 0.6232300 0.0228000 0.9488000 -H 0.3559000 0.3519000 0.9184000 -H 0.6481000 0.0040000 0.9184000 -H 0.4026000 0.4089000 1.0121000 -H 0.5911000 -0.0063000 1.0121000 -C 0.4310800 0.4523700 0.7706000 -C 0.5476300 -0.0212900 0.7706000 -H 0.4286000 0.4801000 0.8387000 -H 0.5199000 -0.0515000 0.8387000 -H 0.3919000 0.4326000 0.7187000 -H 0.5674000 -0.0407000 0.7187000 -C 0.4846600 0.4893500 0.6783000 -C 0.5106500 -0.0046900 0.6783000 -H 0.4758000 -0.0429000 0.6398000 -H 0.4813000 0.5242000 0.6398000 -H 0.4932000 0.0173000 0.7292000 -H 0.5241000 0.5068000 0.7292000 -C 0.5190500 0.0572400 0.4835000 -C 0.5381900 0.4809500 0.4835000 -H 0.5048000 0.0814000 0.5368000 -H 0.5766000 0.4952000 0.5368000 -H 0.4821000 0.0215000 0.4428000 -H 0.5394000 0.5179000 0.4428000 -C 0.5627700 0.0977100 0.3738000 -C 0.5349400 0.4372300 0.3738000 -H 0.5810000 0.0753000 0.3274000 -H 0.4943000 0.4190000 0.3274000 -H 0.5398000 0.1079000 0.3067000 -H 0.5681000 0.4602000 0.3067000 -C 0.6214300 0.4165200 0.9100000 -C 0.5834800 0.2049100 0.9100000 -C 0.6596900 0.4398800 1.0458000 -C 0.5601200 0.2198100 1.0458000 - - OUTPUT CELL INFORMATION -Symmetry information: -Trigonal crystal system. -Space group number : 146 -Hall symbol : R 3 -Hermann-Mauguin symbol : R3 - -Bravais lattice vectors : - 14.0694487 0.0000000 3.2493333 - -7.0347244 12.1845000 3.2493333 - -7.0347244 -12.1845000 3.2493333 -All sites, (cartesian coordinates): -Atom x y z -K 3.8085294 1.7931929 3.5907408 -K -3.4572153 2.4016868 3.5907408 -K -0.3513141 -4.1948797 3.5907408 -Fe -0.0000000 0.0000000 6.1457891 -O -3.2576402 -11.3440132 4.2313144 -O 11.4530237 2.8508075 4.2313144 -O -8.1953835 8.4932057 4.2313144 -O 1.9424984 2.8062122 1.6829597 -O -3.4015003 0.2791469 1.6829597 -O 1.4590018 -3.0853591 1.6829597 -O 1.9794307 3.7786571 4.3051717 -O -4.2621284 -0.1750913 4.3051717 -O 2.2826977 -3.6035659 4.3051717 -O 4.4085211 3.6594927 5.7579161 -O -5.3734742 1.9881449 5.7579161 -O 0.9649531 -5.6476376 5.7579161 -O 6.3192929 1.8900596 4.9009695 -O -4.7964861 4.5276384 4.9009695 -O -1.5228068 -6.4176980 4.9009695 -O 6.2920685 0.8003998 2.3050771 -O -3.8392008 5.0488913 2.3050771 -O -2.4528677 -5.8492911 2.3050771 -O 3.8446176 -0.4371799 5.1758631 -O -1.5436999 3.5481264 5.1758631 -O -2.3009176 -3.1109465 5.1758631 -O 1.7031771 0.1158746 5.0820873 -O -0.9519389 1.4170573 5.0820873 -O -0.7512382 -1.5329319 5.0820873 -O 1.1751507 -1.1420532 7.3001472 -O 0.4014717 1.5887370 7.3001472 -O -1.5766224 -0.4466838 7.3001472 -O 3.2857791 -1.7803991 7.5426775 -O -0.1010186 3.7357677 7.5426775 -O -3.1847604 -1.9553686 7.5426775 -O 6.2059635 -1.6508779 6.2149999 -O -1.6732795 6.1999610 6.2149999 -O -4.5326839 -4.5490831 6.2149999 -O -6.6896008 -5.1128599 4.5493916 -O 7.7726669 -3.2369343 4.5493916 -O -1.0830662 8.3497942 4.5493916 -O -8.7405747 -3.3023650 5.2583961 -O 7.2302193 -5.9183772 5.2583961 -O 1.5103553 9.2207422 5.2583961 -C -11.2051200 1.3864743 6.5441573 -C 4.4018381 -10.3971557 6.5441573 -C 6.8032819 9.0106814 6.5441573 -H -11.4096194 0.7274146 5.8627721 -H 5.0748501 -10.2447276 5.8627721 -H 6.3347693 9.5173129 5.8627721 -H -10.8081505 2.1590934 6.1103713 -H 3.5342455 -10.4396796 6.1103713 -H 7.2739050 8.2805862 6.1103713 -C -5.4113210 -10.3976431 3.9927808 -C 11.7102836 0.5124801 3.9927808 -C -6.2989625 9.8851630 3.9927808 -H -6.0611185 -10.0668339 3.3523372 -H 11.7486931 -0.2156656 3.3523372 -H -5.6875746 10.2824995 3.3523372 -H 1.2395184 1.0234980 1.2016035 -H -1.5061345 0.5617055 1.2016035 -H 0.2666161 -1.5852035 1.2016035 -C 0.7876781 3.3150369 2.3323715 -C -3.2647452 -0.9753692 2.3323715 -C 2.4770671 -2.3396677 2.3323715 -H 0.3320390 2.5977354 2.8012503 -H -2.4157243 -1.0113135 2.8012503 -H 2.0836854 -1.5864219 2.8012503 -H 0.1779785 3.6858112 1.6753563 -H -3.2809954 -1.6887717 1.6753563 -H 3.1030169 -1.9970395 1.6753563 -C 1.1914009 4.3678996 3.2944991 -C -4.3784124 -1.1521663 3.2944991 -C 3.1870115 -3.2157332 3.2944991 -H 1.6995894 5.0565675 2.8382927 -H -5.2289106 -1.0563962 2.8382927 -H 3.5293212 -4.0001713 2.8382927 -H 0.4037932 4.7787609 3.6853939 -H -4.3404249 -2.0396853 3.6853939 -H 3.9366317 -2.7390756 3.6853939 -C 2.3339808 4.6929820 5.3250075 -C -5.2312321 -0.3252043 5.3250075 -C 2.8972512 -4.3677777 5.3250075 -H 1.5349769 5.0565675 5.7392975 -H -5.1466043 -1.1989548 5.7392975 -H 3.6116275 -3.8576127 5.7392975 -H 2.8455460 5.4281948 4.9506843 -H -6.1237276 -0.2497823 4.9506843 -H 3.2781815 -5.1784125 4.9506843 -C 3.1433259 3.9727562 6.3280767 -C -5.0121708 0.7358220 6.3280767 -C 1.8688449 -4.7085782 6.3280767 -H 3.2634086 4.5265417 7.1147403 -H -5.5518045 0.5629239 7.1147403 -H 2.2883958 -5.0894656 7.1147403 -H 2.6893751 3.1594408 6.5951719 -H -4.0808436 0.7493467 6.5951719 -H 1.3914685 -3.9087876 6.5951719 -C 5.2554315 2.9923914 6.6760803 -C -5.2192027 3.0551415 6.6760803 -C -0.0362288 -6.0475329 6.6760803 -H 4.8483320 2.1590934 6.9577975 -H -4.2939957 3.1192320 6.9577975 -H -0.5543363 -5.2783254 6.9577975 -H -8.6724082 3.5456895 4.2114609 -H 1.2655469 -9.2833705 4.2114609 -H 7.4068613 5.7376810 4.2114609 -C 6.5535492 2.7251853 5.9995691 -C -5.6368543 4.3129475 5.9995691 -C -0.9166949 -7.0381327 5.9995691 -H 6.9503077 3.5603109 5.7032299 -H -6.5584735 4.2389875 5.7032299 -H -0.3918341 -7.7992985 5.7032299 -H -6.9017681 2.2967782 3.3672841 -H 1.4618157 -7.1254956 3.3672841 -H 5.4399523 4.8287174 3.3672841 -C 7.4840322 1.4201035 4.2624755 -C -4.9718618 5.7713103 4.2624755 -C -2.5121704 -7.1914137 4.2624755 -H 8.1215893 1.1124449 4.9263143 -H -5.0242001 6.4772802 4.9263143 -H -3.0973891 -7.5897251 4.9263143 -H 7.8936642 2.1383798 3.7565543 -H -5.7987233 5.7669238 3.7565543 -H -2.0949409 -7.9053036 3.7565543 -C 7.1337029 0.3166752 3.3627351 -C -3.8411002 6.0196304 3.3627351 -C -3.2926027 -6.3363055 3.3627351 -H 7.9400934 -0.0670147 2.9874371 -H -3.9120102 6.9098299 2.9874371 -H -4.0280832 -6.8428152 2.9874371 -H 6.6696222 -0.3765010 3.8589083 -H -3.0087516 5.9643127 3.8589083 -H -3.6608706 -5.5878117 3.8589083 -C 5.8267215 -0.2332113 1.4638247 -C -2.7113938 5.1626945 1.4638247 -C -3.1153277 -4.9294832 1.4638247 -H 5.3168447 -0.8748471 1.9833931 -H -1.9007825 5.0419461 1.9833931 -H -3.4160621 -4.1670990 1.9833931 -H -7.4884641 -0.6981719 7.5657477 -H 4.3488666 -6.1361142 7.5657477 -H 3.1395975 6.8342860 7.5657477 -C -9.0968131 0.3390946 6.8931357 -C 4.2547420 -8.0476186 6.8931357 -C 4.8420711 7.7085239 6.8931357 -H -8.6238686 1.0563961 6.4408285 -H 3.3970684 -7.9966874 6.4408285 -H 5.2268002 6.9402912 6.4408285 -H -9.3118646 -0.3448214 6.2390449 -H 4.9545564 -7.8919007 6.2390449 -H 4.3573083 8.2367220 6.2390449 -C 2.7102683 -0.4624018 5.6213467 -C -0.9546824 2.5783620 5.6213467 -C -1.7555858 -2.1159603 5.6213467 -C 2.3958161 -1.2132107 6.9451251 -C -0.1472368 2.6814429 6.9451251 -C -2.2485793 -1.4682323 6.9451251 -H 5.4709051 -1.2659695 5.9625267 -H -1.6390908 5.3709276 5.9625267 -H -3.8318144 -4.1049581 5.9625267 -H -6.2974852 -4.3815462 4.2403800 -H 6.9432729 -3.2630091 4.2403800 -H -0.6457877 7.6445553 4.2403800 -H -9.5798876 -3.0144453 5.1501933 -H 7.4005300 -6.7892034 5.1501933 -H 2.1793576 9.8036487 5.1501933 -H -7.9569767 -2.1213215 3.6782453 -H 5.8156066 -5.8302832 3.6782453 -H 2.1413701 7.9516047 3.6782453 -H -7.2830501 -4.4729300 4.6790400 -H 7.5151960 -4.0708414 4.6790400 -H -0.2321459 8.5437714 4.6790400 -H -8.7863707 -3.3263685 6.1444893 -H 7.2739050 -5.9460360 6.1444893 -H 1.5124657 9.2724045 6.1444893 - -Unit cell volume : 1671.0918202 A^3 -Unit cell density : 0.8331206 u/A^3 = 9.3358425 g/cm^3 diff --git a/cell2mol/test/error_2/BOFFOS/Cell_BOFFOS.cell b/cell2mol/test/error_2/BOFFOS/Cell_BOFFOS.cell deleted file mode 100644 index 11c56f12f..000000000 Binary files a/cell2mol/test/error_2/BOFFOS/Cell_BOFFOS.cell and /dev/null differ diff --git a/cell2mol/test/error_2/BOFFOS/Cell_BOFFOS_ase.xyz b/cell2mol/test/error_2/BOFFOS/Cell_BOFFOS_ase.xyz deleted file mode 100644 index 44f7ef578..000000000 --- a/cell2mol/test/error_2/BOFFOS/Cell_BOFFOS_ase.xyz +++ /dev/null @@ -1,527 +0,0 @@ -525 -0 1 -K 14.586187 10.491940 6.840074 -K 7.989620 7.386038 6.840074 -K 13.977693 3.226195 6.840074 -K 2.401687 17.526664 0.341407 -K -4.194880 14.420763 0.341407 -K 1.793193 10.260919 0.341407 -K 2.401687 3.457215 3.590741 -K 20.174120 0.351314 3.590741 -K 13.977693 17.295644 3.590741 -Fe 12.185718 7.034021 9.395122 -Fe 0.001218 14.068745 2.896456 -Fe -12.183282 21.103470 6.145789 -O 15.035307 9.651149 4.231314 -O 8.493206 8.195384 4.231314 -O 13.024987 3.257640 4.231314 -O 2.850807 16.685874 7.480648 -O -3.691294 15.230108 7.480648 -O 0.840487 10.292365 7.480648 -O 2.850807 2.616425 0.981981 -O 20.677706 1.160659 0.981981 -O 13.024987 17.327089 0.981981 -O 12.463647 10.436225 4.932293 -O 9.099141 5.575723 4.932293 -O 14.990712 5.092226 4.932293 -O 0.279147 17.470949 8.181626 -O -3.085359 12.610447 8.181626 -O 2.806212 12.126950 8.181626 -O 0.279147 3.401500 1.682960 -O 9.099141 19.645171 1.682960 -O -9.378288 19.161675 1.682960 -O 12.009409 11.296853 7.554505 -O 8.580934 4.752027 7.554505 -O 15.963157 5.055294 7.554505 -O -0.175091 18.331577 1.055838 -O -3.603566 11.786751 1.055838 -O 3.778657 12.090018 1.055838 -O -0.175091 4.262128 4.305172 -O 8.580934 18.821475 4.305172 -O -8.405843 19.124742 4.305172 -O 14.172645 12.408199 9.007249 -O 6.536862 6.069771 9.007249 -O 15.843993 2.626203 9.007249 -O 1.988145 19.442923 2.508583 -O -5.647638 13.104496 2.508583 -O 3.659493 9.660928 2.508583 -O 1.988145 5.373474 5.757916 -O 6.536862 20.139220 5.757916 -O -8.525007 16.695652 5.757916 -O 16.712138 11.831210 8.150303 -O 5.766802 8.557531 8.150303 -O 14.074560 0.715431 8.150303 -O 4.527638 18.865935 1.651636 -O -6.417698 15.592255 1.651636 -O 1.890060 7.750156 1.651636 -O 4.527638 4.796486 4.900969 -O 17.951302 1.522807 4.900969 -O 14.074560 14.784880 4.900969 -O 17.233391 10.873925 5.554410 -O 6.335209 9.487592 5.554410 -O 12.984900 0.742656 5.554410 -O 5.048891 17.908650 8.803744 -O -5.849291 16.522316 8.803744 -O 0.800400 7.777380 8.803744 -O 5.048891 3.839201 2.305077 -O 18.519709 2.452868 2.305077 -O 12.984900 14.812105 2.305077 -O 15.732626 8.578424 8.425196 -O 9.073553 9.335642 8.425196 -O 11.747320 3.190107 8.425196 -O 3.548126 15.613149 1.926530 -O -3.110947 16.370366 1.926530 -O -0.437180 10.224831 1.926530 -O 3.548126 1.543700 5.175863 -O 21.258053 2.300918 5.175863 -O 11.747320 17.259556 5.175863 -O 13.601557 7.986663 8.331421 -O 10.651568 7.785963 8.331421 -O 12.300375 5.331547 8.331421 -O 1.417057 15.021388 1.832754 -O -1.532932 14.820687 1.832754 -O 0.115875 12.366272 1.832754 -O 1.417057 0.951939 5.082087 -O 22.836068 0.751238 5.082087 -O 12.300375 19.400996 5.082087 -O 13.773237 6.633253 0.801481 -O 11.737816 8.611347 0.801481 -O 11.042447 5.859574 0.801481 -O 1.588737 13.667977 4.050814 -O -0.446684 15.646071 4.050814 -O -1.142053 12.894298 4.050814 -O -10.595763 20.702701 7.300147 -O -0.446684 1.576622 7.300147 -O 11.042447 19.929022 7.300147 -O 15.920268 7.135743 1.044011 -O 10.229131 10.219485 1.044011 -O 10.404101 3.748945 1.044011 -O 3.735768 14.170467 4.293344 -O -1.955369 17.254209 4.293344 -O -1.780399 10.783670 4.293344 -O 3.735768 0.101019 7.542677 -O 22.413631 3.184760 7.542677 -O 10.404101 17.818394 7.542677 -O 18.384461 8.708004 9.464333 -O 7.635417 11.567408 9.464333 -O 10.533622 0.828761 9.464333 -O 6.199961 15.742728 2.965667 -O -4.549083 18.602133 2.965667 -O -1.650878 7.863485 2.965667 -O 6.199961 1.673280 6.215000 -O 19.819917 4.532684 6.215000 -O 10.533622 14.898210 6.215000 -O 8.947566 13.331506 4.549392 -O 8.349794 1.083066 4.549392 -O 19.256140 6.689601 4.549392 -O -3.236934 20.366230 7.798725 -O -3.834706 8.117791 7.798725 -O 7.071640 13.724325 7.798725 -O -3.236934 6.296782 1.300058 -O 8.349794 15.152515 1.300058 -O -5.112860 20.759049 1.300058 -O 18.450623 6.839229 2.009063 -O 9.220742 12.559093 2.009063 -O 8.882135 1.705850 2.009063 -O 6.266123 13.873954 5.258396 -O -2.963758 19.593818 5.258396 -O -3.302365 8.740575 5.258396 -O -5.918377 20.908678 8.507729 -O -2.963758 5.524369 8.507729 -O 8.882135 15.775299 8.507729 -C 13.971844 9.667611 3.294824 -C 9.010681 7.266167 3.294824 -C 13.570974 4.170396 3.294824 -C 1.787344 16.702335 6.544157 -C -3.173819 14.300891 6.544157 -C 1.386474 11.205120 6.544157 -C 1.787344 2.632886 0.045491 -C 21.195181 0.231442 0.045491 -C 13.570974 18.239844 0.045491 -H 14.124272 8.994599 2.613439 -H 9.517313 7.734679 2.613439 -H 12.911915 4.374895 2.613439 -H 1.939772 16.029323 5.862772 -H -2.667187 14.769404 5.862772 -H 0.727415 11.409619 5.862772 -H 1.939772 1.959874 9.112105 -H 21.701813 0.699955 9.112105 -H 12.911915 18.444344 9.112105 -H 13.929320 10.535203 2.861038 -H 8.280586 6.795544 2.861038 -H 14.343593 3.773426 2.861038 -H 1.744820 17.569928 6.110371 -H -3.903914 13.830268 6.110371 -H 2.159093 10.808150 6.110371 -H 1.744820 3.500479 9.359705 -H 8.280586 20.864992 9.359705 -H -10.025407 17.842875 9.359705 -C 12.696980 9.393890 3.992781 -C 9.885163 6.298963 3.992781 -C 13.971357 5.411321 3.992781 -C 0.512480 16.428614 7.242114 -C -2.299337 13.333687 7.242114 -C 1.786857 12.446045 7.242114 -C 0.512480 2.359165 0.743447 -C 9.885163 20.368411 0.743447 -C -10.397643 19.480770 0.743447 -H 11.968834 9.355480 3.352337 -H 10.282500 5.687575 3.352337 -H 14.302166 6.061119 3.352337 -H -0.215666 16.390204 6.601671 -H -1.902000 12.722299 6.601671 -H 2.117666 13.095843 6.601671 -H -0.215666 2.320756 0.103004 -H 10.282500 19.757023 0.103004 -H -10.066834 20.130567 0.103004 -H 12.746205 8.540859 4.450937 -H 10.599297 6.768108 4.450937 -H 13.207998 5.795206 4.450937 -H 0.561705 15.575583 7.700270 -H -1.585203 13.802833 7.700270 -H 1.023498 12.829930 7.700270 -H 0.561705 1.506134 1.201603 -H 10.599297 20.837557 1.201603 -H -11.161002 19.864655 1.201603 -C 11.209131 10.299470 5.581705 -C 9.844832 4.557657 5.581705 -C 15.499537 6.247046 5.581705 -C -0.975369 17.334194 8.831038 -C -2.339668 11.592382 8.831038 -C 3.315037 13.281771 8.831038 -C -0.975369 3.264745 2.332371 -C 9.844832 18.627106 2.332371 -C -8.869463 20.316495 2.332371 -H 11.173186 9.450449 6.050584 -H 10.598078 4.951039 6.050584 -H 14.782235 6.702685 6.050584 -H -1.011313 16.485173 9.299917 -H -1.586422 11.985763 9.299917 -H 2.597735 13.737410 9.299917 -H -1.011313 2.415724 2.801250 -H 10.598078 19.020488 2.801250 -H -9.586765 20.772134 2.801250 -H 10.495728 10.315720 4.924690 -H 10.187460 3.931707 4.924690 -H 15.870311 6.856746 4.924690 -H -1.688772 17.350444 8.174023 -H -1.997040 10.966432 8.174023 -H 3.685811 13.891470 8.174023 -H -1.688772 3.280995 1.675356 -H 10.187460 18.001156 1.675356 -H -8.498689 20.926195 1.675356 -C 11.032334 11.413137 6.543832 -C 8.968767 3.847713 6.543832 -C 16.552400 5.843323 6.543832 -C -1.152166 18.447861 0.045166 -C -3.215733 10.882437 0.045166 -C 4.367900 12.878048 0.045166 -C -1.152166 4.378412 3.294499 -C 8.968767 17.917162 3.294499 -C -7.816600 19.912772 3.294499 -H 11.128104 12.263635 6.087626 -H 8.184329 3.505403 6.087626 -H 17.241067 5.335135 6.087626 -H -1.056396 19.298359 9.336959 -H -4.000171 10.540128 9.336959 -H 5.056567 12.369859 9.336959 -H -1.056396 5.228911 2.838293 -H 8.184329 17.574852 2.838293 -H -7.127932 19.404584 2.838293 -H 10.144815 11.375149 6.934727 -H 9.445424 3.098093 6.934727 -H 16.963261 6.630931 6.934727 -H -2.039685 18.409874 0.436061 -H -2.739076 10.132817 0.436061 -H 4.778761 13.665656 0.436061 -H -2.039685 4.340425 3.685394 -H 9.445424 17.167541 3.685394 -H -7.405739 20.700380 3.685394 -C 11.859296 12.265956 8.574341 -C 7.816722 4.137473 8.574341 -C 16.877482 4.700744 8.574341 -C -0.325204 19.300681 2.075674 -C -4.367778 11.172197 2.075674 -C 4.692982 11.735468 2.075674 -C -0.325204 5.231232 5.325007 -C 7.816722 18.206922 5.325007 -C -7.491518 18.770192 5.325007 -H 10.985545 12.181329 8.988631 -H 8.326887 3.423097 8.988631 -H 17.241067 5.499748 8.988631 -H -1.198955 19.216053 2.489964 -H -3.857613 10.457821 2.489964 -H 5.056568 12.534472 2.489964 -H -1.198955 5.146604 5.739297 -H 8.326887 17.492546 5.739297 -H -7.127932 19.569196 5.739297 -H 11.934718 13.158452 8.200018 -H 7.006087 3.756543 8.200018 -H 17.612695 4.189178 8.200018 -H -0.249782 20.193176 1.701351 -H -5.178413 10.791267 1.701351 -H 5.428195 11.223903 1.701351 -H -0.249782 6.123728 4.950684 -H 7.006088 17.825992 4.950684 -H -6.756305 18.258627 4.950684 -C 12.920322 12.046895 9.577410 -C 7.475922 5.165879 9.577410 -C 16.157256 3.891398 9.577410 -C 0.735822 19.081619 3.078743 -C -4.708578 12.200604 3.078743 -C 3.972756 10.926123 3.078743 -C 0.735822 5.012171 6.328077 -C 7.475922 19.235328 6.328077 -C -8.211744 17.960847 6.328077 -H 12.747424 12.586529 0.616074 -H 7.095034 4.746329 0.616074 -H 16.711042 3.771316 0.616074 -H 0.562924 19.621253 3.865407 -H -5.089466 11.781053 3.865407 -H 4.526542 10.806040 3.865407 -H 0.562924 5.551804 7.114740 -H 7.095034 18.815777 7.114740 -H -7.657958 17.840764 7.114740 -H 12.933847 11.115568 0.096505 -H 8.275712 5.643256 0.096505 -H 15.343941 4.345349 0.096505 -H 0.749347 18.150292 3.345839 -H -3.908788 12.677980 3.345839 -H 3.159441 11.380074 3.345839 -H 0.749347 4.080844 6.595172 -H 8.275712 19.712705 6.595172 -H -9.025059 18.414798 6.595172 -C 15.239642 12.253927 0.177414 -C 6.136967 7.070953 0.177414 -C 15.176891 1.779293 0.177414 -C 3.055142 19.288651 3.426747 -C -6.047533 14.105678 3.426747 -C 2.992391 8.814017 3.426747 -C 3.055142 5.219203 6.676080 -C 18.321467 0.036229 6.676080 -C 15.176891 15.848742 6.676080 -H 15.303732 11.328720 0.459131 -H 6.906175 7.589061 0.459131 -H 14.343593 2.186392 0.459131 -H 3.119232 18.363444 3.708464 -H -5.278325 14.623785 3.708464 -H 2.159093 9.221117 3.708464 -H 3.119232 4.293996 6.957797 -H 19.090675 0.554336 6.957797 -H 14.343593 16.255841 6.957797 -H 15.085629 12.803902 0.962128 -H 5.737681 6.662587 0.962128 -H 15.730190 1.637684 0.962128 -H 2.901129 19.838626 4.211461 -H -6.446819 13.697312 4.211461 -H 3.545689 8.672408 4.211461 -H 2.901129 5.769177 7.460794 -H 5.737681 20.732036 7.460794 -H -8.638810 15.707133 7.460794 -C 16.497447 12.671579 9.248902 -C 5.146367 7.951419 9.248902 -C 14.909685 0.481175 9.248902 -C 4.312947 19.706303 2.750236 -C -7.038133 14.986144 2.750236 -C 2.725185 7.515900 2.750236 -C 4.312947 5.636854 5.999569 -C 17.330867 0.916695 5.999569 -C 14.909685 14.550624 5.999569 -H 16.423488 13.593198 8.952563 -H 4.385202 7.426559 8.952563 -H 15.744811 0.084417 8.952563 -H 4.238988 20.627922 2.453897 -H -7.799298 14.461283 2.453897 -H 3.560311 7.119141 2.453897 -H 4.238988 6.558474 5.703230 -H 16.569702 0.391834 5.703230 -H 15.744811 14.153865 5.703230 -H -7.125496 12.607633 0.117951 -H 4.828717 8.629496 0.117951 -H 2.296778 20.971217 0.117951 -H 5.059004 19.642357 3.367284 -H -7.355783 15.664221 3.367284 -H 2.296778 6.901768 3.367284 -H 5.059004 5.572909 6.616617 -H 17.013217 1.594772 6.616617 -H 14.481278 13.936492 6.616617 -C -6.413190 12.006586 7.511809 -C 4.993086 9.546895 7.511809 -C 1.420103 20.654865 7.511809 -C 5.771310 19.041310 1.013142 -C -7.191414 16.581619 1.013142 -C 1.420103 6.585417 1.013142 -C 5.771310 4.971862 4.262475 -C 17.177586 2.512170 4.262475 -C 13.604603 13.620141 4.262475 -H -5.707220 12.058924 8.175648 -H 4.594775 10.132113 8.175648 -H 1.112445 20.017308 8.175648 -H 6.477280 19.093649 1.676981 -H -7.589725 17.166838 1.676981 -H 1.112445 5.947859 1.676981 -H 6.477280 5.024200 4.926314 -H 16.779275 3.097389 4.926314 -H 13.296945 12.982584 4.926314 -H -6.417576 12.833448 7.005888 -H 4.279196 9.129665 7.005888 -H 2.138380 20.245233 7.005888 -H 5.766924 19.868172 0.507221 -H -7.905304 16.164390 0.507221 -H 2.138380 6.175785 0.507221 -H 5.766924 5.798723 3.756554 -H 16.463696 2.094941 3.756554 -H 14.322880 13.210509 3.756554 -C -6.164870 10.875825 6.612068 -C 5.848194 10.327327 6.612068 -C 0.316675 21.005194 6.612068 -C 6.019630 17.910549 0.113402 -C -6.336306 17.362051 0.113402 -C 0.316675 6.935746 0.113402 -C 6.019630 3.841100 3.362735 -C 18.032694 3.292603 3.362735 -C 12.501175 13.970470 3.362735 -H -5.274670 10.946735 6.236770 -H 5.341685 11.062808 6.236770 -H -0.067015 20.198804 6.236770 -H 6.909830 17.981459 9.486104 -H -6.842815 18.097532 9.486104 -H -0.067015 6.129355 9.486104 -H 6.909830 3.912010 2.987437 -H 17.526185 4.028083 2.987437 -H 12.117485 13.164080 2.987437 -H 18.148813 10.043476 7.108242 -H 6.596688 10.695595 7.108242 -H 11.807999 0.365102 7.108242 -H 5.964313 17.078200 0.609575 -H -5.587812 17.730319 0.609575 -H -0.376501 7.399827 0.609575 -H 5.964313 3.008752 3.858908 -H 18.781188 3.660871 3.858908 -H 11.807999 14.434551 3.858908 -C 17.347194 9.746118 4.713158 -C 7.255017 10.150052 4.713158 -C 11.951289 1.208003 4.713158 -C 5.162694 16.780843 7.962491 -C -4.929483 17.184776 7.962491 -C -0.233211 8.242727 7.962491 -C 5.162694 2.711394 1.463825 -C 19.439517 3.115328 1.463825 -C 11.951289 15.277452 1.463825 -H 17.226446 8.935507 5.232726 -H 8.017401 10.450787 5.232726 -H 11.309653 1.717880 5.232726 -H 5.041946 15.970231 8.482060 -H -4.167099 17.485511 8.482060 -H -0.874847 8.752604 8.482060 -H 5.041946 1.900783 1.983393 -H 20.201901 3.416062 1.983393 -H 11.309653 15.787328 1.983393 -H 18.232886 9.720582 4.316414 -H 6.834286 10.929851 4.316414 -H 11.486328 0.453740 4.316414 -H 6.048386 16.755306 7.565748 -H -5.350214 17.964576 7.565748 -H -0.698172 7.488464 7.565748 -H 6.048386 2.685858 1.067081 -H 19.018786 3.895127 1.067081 -H 11.486328 14.523188 1.067081 -C 16.321381 9.814707 3.643802 -C 7.708524 9.227378 3.643802 -C 12.523595 2.062089 3.643802 -C 4.136881 16.849431 6.893136 -C -4.475976 16.262102 6.893136 -C 0.339095 9.096813 6.893136 -C 4.136881 2.779982 0.394469 -C 19.893024 2.192653 0.394469 -C 12.523595 16.131537 0.394469 -H 16.372313 10.672380 3.191495 -H 6.940291 8.842649 3.191495 -H 13.240896 1.589144 3.191495 -H 4.187813 17.707105 6.440829 -H -5.244209 15.877373 6.440829 -H 1.056396 8.623869 6.440829 -H 4.187813 3.637656 9.690162 -H 19.124791 1.807924 9.690162 -H 13.240896 15.658593 9.690162 -H 16.477099 9.114892 2.989712 -H 8.236722 9.712140 2.989712 -H 11.839679 2.277140 2.989712 -H 4.292599 16.149617 6.239045 -H -3.947778 16.746865 6.239045 -H -0.344821 9.311865 6.239045 -H 4.292599 2.080168 9.488378 -H 20.421222 2.677416 9.488378 -H 11.839679 16.346589 9.488378 -C 14.762862 7.989407 8.870680 -C 10.068540 8.790310 8.870680 -C 11.722098 4.324456 8.870680 -C 2.578362 15.024131 2.372013 -C -2.115960 15.825035 2.372013 -C -0.462402 11.359180 2.372013 -C 2.578362 0.954682 5.621347 -C 22.253040 1.755586 5.621347 -C 11.722098 18.393905 5.621347 -C 14.865943 7.181961 0.446458 -C 10.716268 9.283304 0.446458 -C 10.971289 4.638908 0.446458 -C 2.681443 14.216685 3.695792 -C -1.468232 16.318028 3.695792 -C -1.213211 11.673633 3.695792 -C 2.681443 0.147237 6.945125 -C 22.900768 2.248579 6.945125 -C 10.971289 18.708357 6.945125 -H 17.555428 8.673815 9.211860 -H 8.079542 10.866539 9.211860 -H 10.918530 1.563819 9.211860 -H 5.370928 15.708539 2.713193 -H -4.104958 17.901263 2.713193 -H -1.265970 8.598544 2.713193 -H 5.370928 1.639091 5.962527 -H 20.264042 3.831814 5.962527 -H 10.918530 15.633268 5.962527 -H 8.921491 14.160900 4.240380 -H 7.644555 0.645788 4.240380 -H 19.987454 6.297485 4.240380 -H 8.921491 0.091451 7.489713 -H 19.829055 7.680512 7.489713 -H 7.802954 13.332210 7.489713 -H -3.263009 7.126176 0.991047 -H 7.644555 14.715236 0.991047 -H -4.381546 20.366934 0.991047 -H 17.579797 6.668919 1.900860 -H 9.803649 11.890091 1.900860 -H 9.170055 2.545163 1.900860 -H 5.395297 13.703643 5.150193 -H -2.380851 18.924815 5.150193 -H -3.014445 9.579888 5.150193 -H -6.789203 20.738367 8.399527 -H -2.380851 4.855367 8.399527 -H 9.170055 16.614612 8.399527 -H 18.538717 8.253842 0.428912 -H 7.951605 11.928079 0.428912 -H 10.063179 0.922252 0.428912 -H 6.354217 15.288566 3.678245 -H -4.232895 18.962803 3.678245 -H -2.121321 7.956977 3.678245 -H 6.354217 1.219118 6.927579 -H 20.136105 4.893354 6.927579 -H 10.063179 14.991701 6.927579 -H 8.113659 13.588977 4.679040 -H 8.543771 0.232146 4.679040 -H 19.896070 7.283050 4.679040 -H -4.070841 20.623701 7.928373 -H -3.640729 7.266870 7.928373 -H 7.711570 14.317774 7.928373 -H 20.298159 6.554253 1.429707 -H 8.543771 14.301595 1.429707 -H 7.711570 0.248326 1.429707 -H 18.422964 6.795544 2.895156 -H 9.272405 12.556983 2.895156 -H 8.858132 1.751646 2.895156 -H 6.238464 13.830268 6.144489 -H -2.912095 19.591707 6.144489 -H -3.326368 8.786371 6.144489 -H -5.946036 20.864992 9.393823 -H -2.912096 5.522259 9.393823 -H 8.858132 15.821095 9.393823 diff --git a/cell2mol/test/error_2/BOFFOS/Cell_BOFFOS_cif2cell.xyz b/cell2mol/test/error_2/BOFFOS/Cell_BOFFOS_cif2cell.xyz deleted file mode 100644 index 6ae1310ef..000000000 --- a/cell2mol/test/error_2/BOFFOS/Cell_BOFFOS_cif2cell.xyz +++ /dev/null @@ -1,177 +0,0 @@ -175 -0 1 -K 3.808529 1.793193 3.590741 -K -3.457215 2.401687 3.590741 -K -0.351314 -4.194880 3.590741 -Fe -0.000000 0.000000 6.145789 -O -3.257640 -11.344013 4.231314 -O 11.453024 2.850808 4.231314 -O -8.195384 8.493206 4.231314 -O 1.942498 2.806212 1.682960 -O -3.401500 0.279147 1.682960 -O 1.459002 -3.085359 1.682960 -O 1.979431 3.778657 4.305172 -O -4.262128 -0.175091 4.305172 -O 2.282698 -3.603566 4.305172 -O 4.408521 3.659493 5.757916 -O -5.373474 1.988145 5.757916 -O 0.964953 -5.647638 5.757916 -O 6.319293 1.890060 4.900970 -O -4.796486 4.527638 4.900970 -O -1.522807 -6.417698 4.900970 -O 6.292069 0.800400 2.305077 -O -3.839201 5.048891 2.305077 -O -2.452868 -5.849291 2.305077 -O 3.844618 -0.437180 5.175863 -O -1.543700 3.548126 5.175863 -O -2.300918 -3.110946 5.175863 -O 1.703177 0.115875 5.082087 -O -0.951939 1.417057 5.082087 -O -0.751238 -1.532932 5.082087 -O 1.175151 -1.142053 7.300147 -O 0.401472 1.588737 7.300147 -O -1.576622 -0.446684 7.300147 -O 3.285779 -1.780399 7.542677 -O -0.101019 3.735768 7.542677 -O -3.184760 -1.955369 7.542677 -O 6.205964 -1.650878 6.215000 -O -1.673280 6.199961 6.215000 -O -4.532684 -4.549083 6.215000 -O -6.689601 -5.112860 4.549392 -O 7.772667 -3.236934 4.549392 -O -1.083066 8.349794 4.549392 -O -8.740575 -3.302365 5.258396 -O 7.230219 -5.918377 5.258396 -O 1.510355 9.220742 5.258396 -C -11.205120 1.386474 6.544157 -C 4.401838 -10.397156 6.544157 -C 6.803282 9.010681 6.544157 -H -11.409619 0.727415 5.862772 -H 5.074850 -10.244728 5.862772 -H 6.334769 9.517313 5.862772 -H -10.808150 2.159093 6.110371 -H 3.534245 -10.439680 6.110371 -H 7.273905 8.280586 6.110371 -C -5.411321 -10.397643 3.992781 -C 11.710284 0.512480 3.992781 -C -6.298963 9.885163 3.992781 -H -6.061119 -10.066834 3.352337 -H 11.748693 -0.215666 3.352337 -H -5.687575 10.282500 3.352337 -H 1.239518 1.023498 1.201604 -H -1.506134 0.561705 1.201604 -H 0.266616 -1.585203 1.201604 -C 0.787678 3.315037 2.332371 -C -3.264745 -0.975369 2.332371 -C 2.477067 -2.339668 2.332371 -H 0.332039 2.597735 2.801250 -H -2.415724 -1.011313 2.801250 -H 2.083685 -1.586422 2.801250 -H 0.177979 3.685811 1.675356 -H -3.280995 -1.688772 1.675356 -H 3.103017 -1.997040 1.675356 -C 1.191401 4.367900 3.294499 -C -4.378412 -1.152166 3.294499 -C 3.187012 -3.215733 3.294499 -H 1.699589 5.056567 2.838293 -H -5.228911 -1.056396 2.838293 -H 3.529321 -4.000171 2.838293 -H 0.403793 4.778761 3.685394 -H -4.340425 -2.039685 3.685394 -H 3.936632 -2.739076 3.685394 -C 2.333981 4.692982 5.325007 -C -5.231232 -0.325204 5.325007 -C 2.897251 -4.367778 5.325007 -H 1.534977 5.056567 5.739298 -H -5.146604 -1.198955 5.739298 -H 3.611627 -3.857613 5.739298 -H 2.845546 5.428195 4.950684 -H -6.123728 -0.249782 4.950684 -H 3.278182 -5.178413 4.950684 -C 3.143326 3.972756 6.328077 -C -5.012171 0.735822 6.328077 -C 1.868845 -4.708578 6.328077 -H 3.263409 4.526542 7.114740 -H -5.551805 0.562924 7.114740 -H 2.288396 -5.089466 7.114740 -H 2.689375 3.159441 6.595172 -H -4.080844 0.749347 6.595172 -H 1.391468 -3.908788 6.595172 -C 5.255432 2.992391 6.676080 -C -5.219203 3.055141 6.676080 -C -0.036229 -6.047533 6.676080 -H 4.848332 2.159093 6.957797 -H -4.293996 3.119232 6.957797 -H -0.554336 -5.278325 6.957797 -H -8.672408 3.545689 4.211461 -H 1.265547 -9.283371 4.211461 -H 7.406861 5.737681 4.211461 -C 6.553549 2.725185 5.999569 -C -5.636854 4.312947 5.999569 -C -0.916695 -7.038133 5.999569 -H 6.950308 3.560311 5.703230 -H -6.558473 4.238988 5.703230 -H -0.391834 -7.799298 5.703230 -H -6.901768 2.296778 3.367284 -H 1.461816 -7.125496 3.367284 -H 5.439952 4.828717 3.367284 -C 7.484032 1.420103 4.262475 -C -4.971862 5.771310 4.262475 -C -2.512170 -7.191414 4.262475 -H 8.121589 1.112445 4.926314 -H -5.024200 6.477280 4.926314 -H -3.097389 -7.589725 4.926314 -H 7.893664 2.138380 3.756554 -H -5.798723 5.766924 3.756554 -H -2.094941 -7.905304 3.756554 -C 7.133703 0.316675 3.362735 -C -3.841100 6.019630 3.362735 -C -3.292603 -6.336305 3.362735 -H 7.940093 -0.067015 2.987437 -H -3.912010 6.909830 2.987437 -H -4.028083 -6.842815 2.987437 -H 6.669622 -0.376501 3.858908 -H -3.008752 5.964313 3.858908 -H -3.660871 -5.587812 3.858908 -C 5.826721 -0.233211 1.463825 -C -2.711394 5.162694 1.463825 -C -3.115328 -4.929483 1.463825 -H 5.316845 -0.874847 1.983393 -H -1.900783 5.041946 1.983393 -H -3.416062 -4.167099 1.983393 -H -7.488464 -0.698172 7.565748 -H 4.348867 -6.136114 7.565748 -H 3.139597 6.834286 7.565748 -C -9.096813 0.339095 6.893136 -C 4.254742 -8.047619 6.893136 -C 4.842071 7.708524 6.893136 -H -8.623869 1.056396 6.440829 -H 3.397068 -7.996687 6.440829 -H 5.226800 6.940291 6.440829 -H -9.311865 -0.344821 6.239045 -H 4.954556 -7.891901 6.239045 -H 4.357308 8.236722 6.239045 -C 2.710268 -0.462402 5.621347 -C -0.954682 2.578362 5.621347 -C -1.755586 -2.115960 5.621347 -C 2.395816 -1.213211 6.945125 -C -0.147237 2.681443 6.945125 -C -2.248579 -1.468232 6.945125 -H 5.470905 -1.265969 5.962527 -H -1.639091 5.370928 5.962527 -H -3.831814 -4.104958 5.962527 -H -6.297485 -4.381546 4.240380 -H 6.943273 -3.263009 4.240380 -H -0.645788 7.644555 4.240380 -H -9.579888 -3.014445 5.150193 -H 7.400530 -6.789203 5.150193 -H 2.179358 9.803649 5.150193 -H -7.956977 -2.121322 3.678245 -H 5.815607 -5.830283 3.678245 -H 2.141370 7.951605 3.678245 -H -7.283050 -4.472930 4.679040 -H 7.515196 -4.070841 4.679040 -H -0.232146 8.543771 4.679040 -H -8.786371 -3.326369 6.144489 -H 7.273905 -5.946036 6.144489 -H 1.512466 9.272405 6.144489 diff --git a/cell2mol/test/error_2/BOFFOS/Mol_BOFFOS_0.xyz b/cell2mol/test/error_2/BOFFOS/Mol_BOFFOS_0.xyz deleted file mode 100644 index d1a12794a..000000000 --- a/cell2mol/test/error_2/BOFFOS/Mol_BOFFOS_0.xyz +++ /dev/null @@ -1,21 +0,0 @@ -19 -0 1 -Fe 12.185718 7.034021 9.395122 -O 15.732626 8.578424 8.425196 -O 13.601557 7.986663 8.331421 -O 13.773237 6.633253 10.549481 -O 15.920268 7.135743 10.792011 -C 14.762862 7.989407 8.870680 -C 14.865943 7.181961 10.194458 -O 9.073553 9.335642 8.425196 -O 11.747320 3.190107 8.425196 -O 10.651568 7.785963 8.331421 -O 12.300375 5.331547 8.331421 -O 11.737816 8.611347 10.549481 -O 11.042447 5.859574 10.549481 -O 10.404101 3.748945 10.792011 -O 10.229131 10.219485 10.792011 -C 10.068540 8.790310 8.870680 -C 11.722098 4.324456 8.870680 -C 10.716268 9.283304 10.194458 -C 10.971289 4.638908 10.194458 diff --git a/cell2mol/test/error_2/BOFFOS/Mol_BOFFOS_1.xyz b/cell2mol/test/error_2/BOFFOS/Mol_BOFFOS_1.xyz deleted file mode 100644 index fa589ba68..000000000 --- a/cell2mol/test/error_2/BOFFOS/Mol_BOFFOS_1.xyz +++ /dev/null @@ -1,44 +0,0 @@ -42 -0 1 -O 15.035307 9.651149 4.231314 -O 12.463647 10.436225 4.932293 -O 12.009409 11.296853 7.554505 -O 14.172645 12.408199 9.007249 -O 16.712138 11.831210 8.150303 -O 17.233391 10.873925 5.554410 -C 13.971844 9.667611 3.294824 -H 14.124272 8.994599 2.613439 -H 13.929320 10.535203 2.861038 -C 12.696980 9.393890 3.992781 -H 11.968834 9.355480 3.352337 -H 12.746205 8.540859 4.450937 -C 11.209131 10.299470 5.581705 -H 11.173186 9.450449 6.050584 -H 10.495728 10.315720 4.924690 -C 11.032334 11.413137 6.543832 -H 11.128104 12.263635 6.087626 -H 10.144815 11.375149 6.934727 -C 11.859296 12.265956 8.574341 -H 10.985545 12.181329 8.988631 -H 11.934718 13.158452 8.200018 -C 12.920322 12.046895 9.577410 -H 12.747424 12.586529 10.364074 -H 12.933847 11.115568 9.844505 -C 15.239642 12.253927 9.925414 -H 15.303732 11.328720 10.207131 -H 15.085629 12.803902 10.710128 -C 16.497447 12.671579 9.248902 -H 16.423488 13.593198 8.952563 -H 17.243504 12.607633 9.865951 -C 17.955810 12.006586 7.511809 -H 18.661780 12.058924 8.175648 -H 17.951424 12.833448 7.005888 -C 18.204130 10.875825 6.612068 -H 19.094330 10.946735 6.236770 -H 18.148813 10.043476 7.108242 -C 17.347194 9.746118 4.713158 -H 17.226446 8.935507 5.232726 -H 18.232886 9.720582 4.316414 -C 16.321381 9.814707 3.643802 -H 16.372313 10.672380 3.191495 -H 16.477099 9.114892 2.989712 diff --git a/cell2mol/test/error_2/BOFFOS/Mol_BOFFOS_2.xyz b/cell2mol/test/error_2/BOFFOS/Mol_BOFFOS_2.xyz deleted file mode 100644 index 405380556..000000000 --- a/cell2mol/test/error_2/BOFFOS/Mol_BOFFOS_2.xyz +++ /dev/null @@ -1,5 +0,0 @@ -3 -0 1 -O 18.384461 8.708004 9.464333 -H 17.555428 8.673815 9.211860 -H 18.538717 8.253842 10.176912 diff --git a/cell2mol/test/error_2/BOFFOS/Mol_BOFFOS_3.xyz b/cell2mol/test/error_2/BOFFOS/Mol_BOFFOS_3.xyz deleted file mode 100644 index bd1627741..000000000 --- a/cell2mol/test/error_2/BOFFOS/Mol_BOFFOS_3.xyz +++ /dev/null @@ -1,5 +0,0 @@ -3 -0 1 -O 8.947566 13.331506 4.549392 -H 8.921491 14.160900 4.240380 -H 8.113659 13.588977 4.679040 diff --git a/cell2mol/test/error_2/BOFFOS/Mol_BOFFOS_4.xyz b/cell2mol/test/error_2/BOFFOS/Mol_BOFFOS_4.xyz deleted file mode 100644 index 713086ee3..000000000 --- a/cell2mol/test/error_2/BOFFOS/Mol_BOFFOS_4.xyz +++ /dev/null @@ -1,5 +0,0 @@ -3 -0 1 -O 18.450623 6.839229 2.009063 -H 17.579797 6.668919 1.900860 -H 18.422964 6.795544 2.895156 diff --git a/cell2mol/test/error_2/BOFFOS/Mol_BOFFOS_5.xyz b/cell2mol/test/error_2/BOFFOS/Mol_BOFFOS_5.xyz deleted file mode 100644 index a8c30ce26..000000000 --- a/cell2mol/test/error_2/BOFFOS/Mol_BOFFOS_5.xyz +++ /dev/null @@ -1,44 +0,0 @@ -42 -0 1 -O 8.493206 8.195384 4.231314 -O 9.099141 5.575723 4.932293 -O 8.580934 4.752027 7.554505 -O 6.536862 6.069771 9.007249 -O 5.766802 8.557531 8.150303 -O 6.335209 9.487592 5.554410 -C 9.010681 7.266167 3.294824 -H 9.517313 7.734679 2.613439 -H 8.280586 6.795544 2.861038 -C 9.885163 6.298963 3.992781 -H 10.282500 5.687575 3.352337 -H 10.599297 6.768108 4.450937 -C 9.844832 4.557657 5.581705 -H 10.598078 4.951039 6.050584 -H 10.187460 3.931707 4.924690 -C 8.968767 3.847713 6.543832 -H 8.184329 3.505403 6.087626 -H 9.445424 3.098093 6.934727 -C 7.816722 4.137473 8.574341 -H 8.326887 3.423097 8.988631 -H 7.006088 3.756543 8.200018 -C 7.475922 5.165879 9.577410 -H 7.095034 4.746329 10.364074 -H 8.275712 5.643256 9.844505 -C 6.136967 7.070953 9.925414 -H 6.906175 7.589061 10.207131 -H 5.737681 6.662587 10.710128 -C 5.146367 7.951419 9.248902 -H 4.385202 7.426559 8.952563 -H 4.828717 8.629496 9.865951 -C 4.993086 9.546895 7.511809 -H 4.594775 10.132113 8.175648 -H 4.279196 9.129665 7.005888 -C 5.848194 10.327327 6.612068 -H 5.341685 11.062808 6.236770 -H 6.596688 10.695595 7.108242 -C 7.255017 10.150052 4.713158 -H 8.017401 10.450787 5.232726 -H 6.834286 10.929851 4.316414 -C 7.708524 9.227378 3.643802 -H 6.940291 8.842649 3.191495 -H 8.236722 9.712140 2.989712 diff --git a/cell2mol/test/error_2/BOFFOS/Mol_BOFFOS_6.xyz b/cell2mol/test/error_2/BOFFOS/Mol_BOFFOS_6.xyz deleted file mode 100644 index 5d041036b..000000000 --- a/cell2mol/test/error_2/BOFFOS/Mol_BOFFOS_6.xyz +++ /dev/null @@ -1,44 +0,0 @@ -42 -0 1 -O 13.024987 3.257640 4.231314 -O 14.990712 5.092226 4.932293 -O 15.963157 5.055294 7.554505 -O 15.843993 2.626203 9.007249 -O 14.074560 0.715431 8.150303 -O 12.984900 0.742656 5.554410 -C 13.570974 4.170396 3.294824 -H 12.911915 4.374895 2.613439 -H 14.343593 3.773426 2.861038 -C 13.971357 5.411321 3.992781 -H 14.302166 6.061119 3.352337 -H 13.207998 5.795206 4.450937 -C 15.499537 6.247046 5.581705 -H 14.782235 6.702685 6.050584 -H 15.870311 6.856746 4.924690 -C 16.552400 5.843323 6.543832 -H 17.241067 5.335135 6.087626 -H 16.963261 6.630931 6.934727 -C 16.877482 4.700744 8.574341 -H 17.241067 5.499748 8.988631 -H 17.612695 4.189178 8.200018 -C 16.157256 3.891398 9.577410 -H 16.711042 3.771316 10.364074 -H 15.343941 4.345349 9.844505 -C 15.176891 1.779293 9.925414 -H 14.343593 2.186392 10.207131 -H 15.730189 1.637684 10.710128 -C 14.909685 0.481175 9.248902 -H 15.744811 0.084417 8.952563 -H 14.481278 -0.132956 9.865951 -C 13.604603 -0.449308 7.511809 -H 13.296945 -1.086865 8.175648 -H 14.322880 -0.858940 7.005888 -C 12.501175 -0.098979 6.612068 -H 12.117485 -0.905369 6.236770 -H 11.807999 0.365102 7.108242 -C 11.951289 1.208003 4.713158 -H 11.309653 1.717880 5.232726 -H 11.486328 0.453740 4.316414 -C 12.523595 2.062089 3.643802 -H 13.240896 1.589144 3.191495 -H 11.839679 2.277140 2.989712 diff --git a/cell2mol/test/error_2/BOFFOS/Mol_BOFFOS_7.xyz b/cell2mol/test/error_2/BOFFOS/Mol_BOFFOS_7.xyz deleted file mode 100644 index 259aa25c3..000000000 --- a/cell2mol/test/error_2/BOFFOS/Mol_BOFFOS_7.xyz +++ /dev/null @@ -1,3 +0,0 @@ -1 -0 1 -K 7.989620 7.386038 6.840074 diff --git a/cell2mol/test/error_2/BOFFOS/Mol_BOFFOS_8.xyz b/cell2mol/test/error_2/BOFFOS/Mol_BOFFOS_8.xyz deleted file mode 100644 index a445ef748..000000000 --- a/cell2mol/test/error_2/BOFFOS/Mol_BOFFOS_8.xyz +++ /dev/null @@ -1,3 +0,0 @@ -1 -0 1 -K 13.977693 3.226195 6.840074 diff --git a/cell2mol/test/error_2/BOFFOS/Mol_BOFFOS_9.xyz b/cell2mol/test/error_2/BOFFOS/Mol_BOFFOS_9.xyz deleted file mode 100644 index a9d1a436b..000000000 --- a/cell2mol/test/error_2/BOFFOS/Mol_BOFFOS_9.xyz +++ /dev/null @@ -1,3 +0,0 @@ -1 -0 1 -K 14.586187 10.491940 6.840074 diff --git a/cell2mol/test/error_2/BOFFOS/Normal_Transformed_BOFFOS_0.xyz b/cell2mol/test/error_2/BOFFOS/Normal_Transformed_BOFFOS_0.xyz deleted file mode 100644 index 2b39e42f8..000000000 --- a/cell2mol/test/error_2/BOFFOS/Normal_Transformed_BOFFOS_0.xyz +++ /dev/null @@ -1,159 +0,0 @@ -157 -0 1 -K 14.586187 10.491940 6.840074 -Fe 12.185718 7.034021 9.395122 -O 15.035307 9.651149 4.231314 -O 12.463647 10.436225 4.932293 -O 12.009409 11.296853 7.554505 -O 14.172645 12.408199 9.007249 -O 16.712138 11.831210 8.150303 -O 17.233391 10.873925 5.554410 -O 15.732626 8.578424 8.425196 -O 13.601557 7.986663 8.331421 -O 13.773237 6.633253 0.801481 -O 15.920268 7.135743 1.044011 -O 18.384461 8.708004 9.464333 -O 8.947566 13.331506 4.549392 -O 18.450623 6.839229 2.009063 -C 13.971844 9.667611 3.294824 -H 14.124272 8.994599 2.613439 -H 13.929320 10.535203 2.861038 -C 12.696980 9.393890 3.992781 -H 11.968834 9.355480 3.352337 -H 12.746205 8.540859 4.450937 -C 11.209131 10.299470 5.581705 -H 11.173186 9.450449 6.050584 -H 10.495728 10.315720 4.924690 -C 11.032334 11.413137 6.543832 -H 11.128104 12.263635 6.087626 -H 10.144815 11.375149 6.934727 -C 11.859296 12.265956 8.574341 -H 10.985545 12.181329 8.988631 -H 11.934718 13.158452 8.200018 -C 12.920322 12.046895 9.577410 -H 12.747424 12.586529 0.616074 -H 12.933847 11.115568 0.096505 -C 15.239642 12.253927 0.177414 -H 15.303732 11.328720 0.459131 -H 15.085629 12.803902 0.962128 -C 16.497447 12.671579 9.248902 -H 16.423488 13.593198 8.952563 -H -7.125496 12.607633 0.117951 -C -6.413190 12.006586 7.511809 -H -5.707220 12.058924 8.175648 -H -6.417576 12.833448 7.005888 -C -6.164870 10.875825 6.612068 -H -5.274670 10.946735 6.236770 -H 18.148813 10.043476 7.108242 -C 17.347194 9.746118 4.713158 -H 17.226446 8.935507 5.232726 -H 18.232886 9.720582 4.316414 -C 16.321381 9.814707 3.643802 -H 16.372313 10.672380 3.191495 -H 16.477099 9.114892 2.989712 -C 14.762862 7.989407 8.870680 -C 14.865943 7.181961 0.446458 -H 17.555428 8.673815 9.211860 -H 8.921491 14.160900 4.240380 -H 17.579797 6.668919 1.900860 -H 18.538717 8.253842 0.428912 -H 8.113659 13.588977 4.679040 -H 18.422964 6.795544 2.895156 -K 7.989620 7.386038 6.840074 -K 13.977693 3.226195 6.840074 -O 8.493206 8.195384 4.231314 -O 13.024987 3.257640 4.231314 -O 9.099141 5.575723 4.932293 -O 14.990712 5.092226 4.932293 -O 8.580934 4.752027 7.554505 -O 15.963157 5.055294 7.554505 -O 6.536862 6.069771 9.007249 -O 15.843993 2.626203 9.007249 -O 5.766802 8.557531 8.150303 -O 14.074560 0.715431 8.150303 -O 6.335209 9.487592 5.554410 -O 12.984900 0.742656 5.554410 -O 9.073553 9.335642 8.425196 -O 11.747320 3.190107 8.425196 -O 10.651568 7.785963 8.331421 -O 12.300375 5.331547 8.331421 -O 11.737816 8.611347 0.801481 -O 11.042447 5.859574 0.801481 -O 10.404101 3.748945 1.044011 -O 10.229131 10.219485 1.044011 -C 9.010681 7.266167 3.294824 -C 13.570974 4.170396 3.294824 -H 9.517313 7.734679 2.613439 -H 12.911915 4.374895 2.613439 -H 8.280586 6.795544 2.861038 -H 14.343593 3.773426 2.861038 -C 9.885163 6.298963 3.992781 -C 13.971357 5.411321 3.992781 -H 14.302166 6.061119 3.352337 -H 10.282500 5.687575 3.352337 -H 13.207998 5.795206 4.450937 -H 10.599297 6.768108 4.450937 -C 9.844832 4.557657 5.581705 -C 15.499537 6.247046 5.581705 -H 10.598078 4.951039 6.050584 -H 14.782235 6.702685 6.050584 -H 10.187460 3.931707 4.924690 -H 15.870311 6.856746 4.924690 -C 8.968767 3.847713 6.543832 -C 16.552400 5.843323 6.543832 -H 8.184329 3.505403 6.087626 -H 17.241067 5.335135 6.087626 -H 9.445424 3.098093 6.934727 -H 16.963261 6.630931 6.934727 -C 7.816722 4.137473 8.574341 -C 16.877482 4.700744 8.574341 -H 8.326887 3.423097 8.988631 -H 17.241067 5.499748 8.988631 -H 7.006088 3.756543 8.200018 -H 17.612695 4.189178 8.200018 -C 7.475922 5.165879 9.577410 -C 16.157256 3.891398 9.577410 -H 16.711042 3.771316 0.616074 -H 7.095034 4.746329 0.616074 -H 15.343941 4.345349 0.096505 -H 8.275712 5.643256 0.096505 -C 6.136967 7.070953 0.177414 -C 15.176891 1.779293 0.177414 -H 6.906175 7.589061 0.459131 -H 14.343593 2.186392 0.459131 -H 5.737681 6.662587 0.962128 -H 15.730189 1.637684 0.962128 -C 5.146367 7.951419 9.248902 -C 14.909685 0.481175 9.248902 -H 4.385202 7.426559 8.952563 -H 15.744811 0.084417 8.952563 -H 4.828717 8.629496 0.117951 -H 2.296778 20.971217 0.117951 -C 4.993086 9.546895 7.511809 -C 1.420103 20.654865 7.511809 -H 4.594775 10.132113 8.175648 -H 1.112445 20.017308 8.175648 -H 4.279196 9.129665 7.005888 -H 2.138380 20.245233 7.005888 -C 5.848194 10.327327 6.612068 -C 0.316675 21.005194 6.612068 -H -0.067015 20.198804 6.236770 -H 5.341685 11.062808 6.236770 -H 11.807999 0.365102 7.108242 -H 6.596688 10.695595 7.108242 -C 11.951289 1.208003 4.713158 -C 7.255017 10.150052 4.713158 -H 11.309653 1.717880 5.232726 -H 8.017401 10.450787 5.232726 -H 11.486328 0.453740 4.316414 -H 6.834286 10.929851 4.316414 -C 12.523595 2.062089 3.643802 -C 7.708524 9.227378 3.643802 -H 13.240896 1.589144 3.191495 -H 6.940291 8.842649 3.191495 -H 11.839679 2.277140 2.989712 -H 8.236722 9.712140 2.989712 -C 10.068540 8.790310 8.870680 -C 11.722098 4.324456 8.870680 -C 10.716268 9.283304 0.446458 -C 10.971289 4.638908 0.446458 diff --git a/cell2mol/test/error_2/BOFFOS/Normal_Transformed_BOFFOS_1.xyz b/cell2mol/test/error_2/BOFFOS/Normal_Transformed_BOFFOS_1.xyz deleted file mode 100644 index 3c62969ea..000000000 --- a/cell2mol/test/error_2/BOFFOS/Normal_Transformed_BOFFOS_1.xyz +++ /dev/null @@ -1,159 +0,0 @@ -157 -0 1 -K 7.989620 7.386038 6.840074 -Fe 12.184500 7.036131 9.395122 -O 8.493206 8.195384 4.231314 -O 9.099141 5.575723 4.932293 -O 8.580934 4.752027 7.554505 -O 6.536862 6.069771 9.007249 -O 5.766802 8.557531 8.150303 -O 6.335209 9.487592 5.554410 -O 9.073553 9.335642 8.425196 -O 10.651568 7.785963 8.331421 -O 11.737816 8.611347 0.801481 -O 10.229131 10.219485 1.044011 -O 7.635417 11.567408 9.464333 -O 8.349794 1.083066 4.549392 -O 9.220742 12.559093 2.009063 -C 9.010681 7.266167 3.294824 -H 9.517313 7.734679 2.613439 -H 8.280586 6.795544 2.861038 -C 9.885163 6.298963 3.992781 -H 10.282500 5.687575 3.352337 -H 10.599297 6.768108 4.450937 -C 9.844832 4.557657 5.581705 -H 10.598078 4.951039 6.050584 -H 10.187460 3.931707 4.924690 -C 8.968767 3.847713 6.543832 -H 8.184329 3.505403 6.087626 -H 9.445424 3.098093 6.934727 -C 7.816722 4.137473 8.574341 -H 8.326887 3.423097 8.988631 -H 7.006088 3.756543 8.200018 -C 7.475922 5.165879 9.577410 -H 7.095034 4.746329 0.616074 -H 8.275712 5.643256 0.096505 -C 6.136967 7.070953 0.177414 -H 6.906175 7.589061 0.459131 -H 5.737681 6.662587 0.962128 -C 5.146367 7.951419 9.248902 -H 4.385202 7.426559 8.952563 -H 4.828717 8.629496 0.117951 -C 4.993086 9.546895 7.511809 -H 4.594775 10.132113 8.175648 -H 4.279196 9.129665 7.005888 -C 5.848194 10.327327 6.612068 -H 5.341685 11.062808 6.236770 -H 6.596688 10.695595 7.108242 -C 7.255017 10.150052 4.713158 -H 8.017401 10.450787 5.232726 -H 6.834286 10.929851 4.316414 -C 7.708524 9.227378 3.643802 -H 6.940291 8.842649 3.191495 -H 8.236722 9.712140 2.989712 -C 10.068540 8.790310 8.870680 -C 10.716268 9.283304 0.446458 -H 8.079542 10.866539 9.211860 -H 7.644555 0.645788 4.240380 -H 9.803649 11.890091 1.900860 -H 7.951605 11.928079 0.428912 -H 8.543771 0.232146 4.679040 -H 9.272405 12.556983 2.895156 -K 13.977693 3.226195 6.840074 -K 14.586187 10.491940 6.840074 -O 13.024987 3.257640 4.231314 -O 15.035307 9.651149 4.231314 -O 14.990712 5.092226 4.932293 -O 12.463647 10.436225 4.932293 -O 15.963157 5.055294 7.554505 -O 12.009409 11.296853 7.554505 -O 15.843993 2.626203 9.007249 -O 14.172645 12.408199 9.007249 -O 14.074560 0.715431 8.150303 -O 16.712138 11.831210 8.150303 -O 12.984900 0.742656 5.554410 -O 17.233391 10.873925 5.554410 -O 11.747320 3.190107 8.425196 -O 15.732626 8.578424 8.425196 -O 12.300375 5.331547 8.331421 -O 13.601557 7.986663 8.331421 -O 11.042447 5.859574 0.801481 -O 13.773237 6.633253 0.801481 -O 15.920268 7.135743 1.044011 -O 10.404101 3.748945 1.044011 -C 13.570974 4.170396 3.294824 -C 13.971844 9.667611 3.294824 -H 12.911915 4.374895 2.613439 -H 14.124272 8.994599 2.613439 -H 14.343593 3.773426 2.861038 -H 13.929320 10.535203 2.861038 -C 13.971357 5.411321 3.992781 -C 12.696980 9.393890 3.992781 -H 11.968834 9.355480 3.352337 -H 14.302166 6.061119 3.352337 -H 12.746205 8.540859 4.450937 -H 13.207998 5.795206 4.450937 -C 15.499537 6.247046 5.581705 -C 11.209131 10.299470 5.581705 -H 14.782235 6.702685 6.050584 -H 11.173186 9.450449 6.050584 -H 15.870311 6.856746 4.924690 -H 10.495728 10.315720 4.924690 -C 16.552400 5.843323 6.543832 -C 11.032334 11.413137 6.543832 -H 17.241067 5.335135 6.087626 -H 11.128104 12.263635 6.087626 -H 16.963261 6.630931 6.934727 -H 10.144815 11.375149 6.934727 -C 16.877482 4.700744 8.574341 -C 11.859296 12.265956 8.574341 -H 17.241067 5.499748 8.988631 -H 10.985545 12.181329 8.988631 -H 17.612695 4.189178 8.200018 -H 11.934718 13.158452 8.200018 -C 16.157256 3.891398 9.577410 -C 12.920322 12.046895 9.577410 -H 12.747424 12.586529 0.616074 -H 16.711042 3.771316 0.616074 -H 12.933847 11.115568 0.096505 -H 15.343941 4.345349 0.096505 -C 15.176891 1.779293 0.177414 -C 15.239642 12.253927 0.177414 -H 14.343593 2.186392 0.459131 -H 15.303732 11.328720 0.459131 -H 15.730189 1.637684 0.962128 -H 15.085629 12.803902 0.962128 -C 14.909685 0.481175 9.248902 -C 16.497447 12.671579 9.248902 -H 15.744811 0.084417 8.952563 -H 16.423488 13.593198 8.952563 -H 2.296778 20.971217 0.117951 -H -7.125496 12.607633 0.117951 -C 1.420103 20.654865 7.511809 -C -6.413190 12.006586 7.511809 -H 1.112445 20.017308 8.175648 -H -5.707220 12.058924 8.175648 -H 2.138380 20.245233 7.005888 -H -6.417576 12.833448 7.005888 -C 0.316675 21.005194 6.612068 -C -6.164870 10.875825 6.612068 -H -5.274670 10.946735 6.236770 -H -0.067015 20.198804 6.236770 -H 18.148813 10.043476 7.108242 -H 11.807999 0.365102 7.108242 -C 17.347194 9.746118 4.713158 -C 11.951289 1.208003 4.713158 -H 17.226446 8.935507 5.232726 -H 11.309653 1.717880 5.232726 -H 18.232886 9.720582 4.316414 -H 11.486328 0.453740 4.316414 -C 16.321381 9.814707 3.643802 -C 12.523595 2.062089 3.643802 -H 16.372313 10.672380 3.191495 -H 13.240896 1.589144 3.191495 -H 16.477099 9.114892 2.989712 -H 11.839679 2.277140 2.989712 -C 11.722098 4.324456 8.870680 -C 14.762862 7.989407 8.870680 -C 10.971289 4.638908 0.446458 -C 14.865943 7.181961 0.446458 diff --git a/cell2mol/test/error_2/BOFFOS/Normal_Transformed_BOFFOS_2.xyz b/cell2mol/test/error_2/BOFFOS/Normal_Transformed_BOFFOS_2.xyz deleted file mode 100644 index eb90972f3..000000000 --- a/cell2mol/test/error_2/BOFFOS/Normal_Transformed_BOFFOS_2.xyz +++ /dev/null @@ -1,159 +0,0 @@ -157 -0 1 -K 13.977693 3.226195 6.840074 -Fe 12.183282 7.034021 9.395122 -O 13.024987 3.257640 4.231314 -O 14.990712 5.092226 4.932293 -O 15.963157 5.055294 7.554505 -O 15.843993 2.626203 9.007249 -O 14.074560 0.715431 8.150303 -O 12.984900 0.742656 5.554410 -O 11.747320 3.190107 8.425196 -O 12.300375 5.331547 8.331421 -O 11.042447 5.859574 0.801481 -O 10.404101 3.748945 1.044011 -O 10.533622 0.828761 9.464333 -O 19.256140 6.689601 4.549392 -O 8.882135 1.705850 2.009063 -C 13.570974 4.170396 3.294824 -H 12.911915 4.374895 2.613439 -H 14.343593 3.773426 2.861038 -C 13.971357 5.411321 3.992781 -H 14.302166 6.061119 3.352337 -H 13.207998 5.795206 4.450937 -C 15.499537 6.247046 5.581705 -H 14.782235 6.702685 6.050584 -H 15.870311 6.856746 4.924690 -C 16.552400 5.843323 6.543832 -H 17.241067 5.335135 6.087626 -H 16.963261 6.630931 6.934727 -C 16.877482 4.700744 8.574341 -H 17.241068 5.499748 8.988631 -H 17.612695 4.189178 8.200018 -C 16.157256 3.891398 9.577410 -H 16.711042 3.771316 0.616074 -H 15.343941 4.345349 0.096505 -C 15.176891 1.779293 0.177414 -H 14.343593 2.186392 0.459131 -H 15.730189 1.637684 0.962128 -C 14.909685 0.481175 9.248902 -H 15.744811 0.084417 8.952563 -H 2.296778 20.971217 0.117951 -C 1.420103 20.654865 7.511809 -H 1.112445 20.017308 8.175648 -H 2.138380 20.245233 7.005888 -C 0.316675 21.005194 6.612068 -H -0.067015 20.198804 6.236770 -H 11.807999 0.365102 7.108242 -C 11.951289 1.208003 4.713158 -H 11.309653 1.717880 5.232726 -H 11.486328 0.453740 4.316414 -C 12.523595 2.062089 3.643802 -H 13.240896 1.589144 3.191495 -H 11.839679 2.277140 2.989712 -C 11.722098 4.324456 8.870680 -C 10.971289 4.638908 0.446458 -H 10.918530 1.563819 9.211860 -H 19.987454 6.297485 4.240380 -H 9.170055 2.545163 1.900860 -H 10.063179 0.922252 0.428912 -H 19.896070 7.283050 4.679040 -H 8.858132 1.751646 2.895156 -K 14.586187 10.491940 6.840074 -K 7.989620 7.386038 6.840074 -O 15.035307 9.651149 4.231314 -O 8.493206 8.195384 4.231314 -O 12.463647 10.436225 4.932293 -O 9.099141 5.575723 4.932293 -O 12.009409 11.296853 7.554505 -O 8.580934 4.752027 7.554505 -O 14.172645 12.408199 9.007249 -O 6.536862 6.069771 9.007249 -O 16.712138 11.831210 8.150303 -O 5.766802 8.557531 8.150303 -O 17.233391 10.873925 5.554410 -O 6.335209 9.487592 5.554410 -O 15.732626 8.578424 8.425196 -O 9.073553 9.335642 8.425196 -O 13.601557 7.986663 8.331421 -O 10.651568 7.785963 8.331421 -O 13.773237 6.633253 0.801481 -O 11.737816 8.611347 0.801481 -O 10.229131 10.219485 1.044011 -O 15.920268 7.135743 1.044011 -C 13.971844 9.667611 3.294824 -C 9.010681 7.266167 3.294824 -H 14.124272 8.994599 2.613439 -H 9.517313 7.734679 2.613439 -H 13.929320 10.535203 2.861038 -H 8.280586 6.795544 2.861038 -C 12.696980 9.393890 3.992781 -C 9.885163 6.298963 3.992781 -H 10.282500 5.687575 3.352337 -H 11.968834 9.355480 3.352337 -H 10.599297 6.768108 4.450937 -H 12.746205 8.540859 4.450937 -C 11.209131 10.299470 5.581705 -C 9.844832 4.557657 5.581705 -H 11.173186 9.450449 6.050584 -H 10.598078 4.951039 6.050584 -H 10.495728 10.315720 4.924690 -H 10.187460 3.931707 4.924690 -C 11.032334 11.413137 6.543832 -C 8.968767 3.847713 6.543832 -H 11.128104 12.263635 6.087626 -H 8.184329 3.505403 6.087626 -H 10.144815 11.375149 6.934727 -H 9.445424 3.098093 6.934727 -C 11.859296 12.265956 8.574341 -C 7.816722 4.137473 8.574341 -H 10.985545 12.181329 8.988631 -H 8.326887 3.423097 8.988631 -H 11.934718 13.158452 8.200018 -H 7.006088 3.756543 8.200018 -C 12.920322 12.046895 9.577410 -C 7.475922 5.165879 9.577410 -H 7.095034 4.746329 0.616074 -H 12.747424 12.586529 0.616074 -H 8.275712 5.643256 0.096505 -H 12.933847 11.115568 0.096505 -C 15.239642 12.253927 0.177414 -C 6.136967 7.070953 0.177414 -H 15.303732 11.328720 0.459131 -H 6.906175 7.589061 0.459131 -H 15.085629 12.803902 0.962128 -H 5.737681 6.662587 0.962128 -C 16.497447 12.671579 9.248902 -C 5.146367 7.951419 9.248902 -H 16.423488 13.593198 8.952563 -H 4.385202 7.426559 8.952563 -H -7.125496 12.607633 0.117951 -H 4.828717 8.629496 0.117951 -C -6.413190 12.006586 7.511809 -C 4.993086 9.546895 7.511809 -H -5.707220 12.058924 8.175648 -H 4.594775 10.132113 8.175648 -H -6.417576 12.833448 7.005888 -H 4.279196 9.129665 7.005888 -C -6.164870 10.875825 6.612068 -C 5.848194 10.327327 6.612068 -H 5.341685 11.062808 6.236770 -H -5.274670 10.946735 6.236770 -H 6.596688 10.695595 7.108242 -H 18.148813 10.043476 7.108242 -C 7.255017 10.150052 4.713158 -C 17.347194 9.746118 4.713158 -H 8.017401 10.450787 5.232726 -H 17.226446 8.935507 5.232726 -H 6.834286 10.929851 4.316414 -H 18.232886 9.720582 4.316414 -C 7.708524 9.227378 3.643802 -C 16.321381 9.814707 3.643802 -H 6.940291 8.842649 3.191495 -H 16.372313 10.672380 3.191495 -H 8.236722 9.712140 2.989712 -H 16.477099 9.114892 2.989712 -C 14.762862 7.989407 8.870680 -C 10.068540 8.790310 8.870680 -C 14.865943 7.181961 0.446458 -C 10.716268 9.283304 0.446458 diff --git a/cell2mol/test/error_2/BOFFOS/Normal_Transformed_BOFFOS_3.xyz b/cell2mol/test/error_2/BOFFOS/Normal_Transformed_BOFFOS_3.xyz deleted file mode 100644 index 5bd647527..000000000 --- a/cell2mol/test/error_2/BOFFOS/Normal_Transformed_BOFFOS_3.xyz +++ /dev/null @@ -1,159 +0,0 @@ -157 -0 1 -K 2.401687 17.526664 0.341407 -Fe 0.001218 14.068745 2.896456 -O 2.850807 16.685874 7.480648 -O 0.279147 17.470949 8.181626 -O -0.175091 18.331577 1.055838 -O 1.988145 19.442923 2.508583 -O 4.527638 18.865935 1.651636 -O 5.048891 17.908650 8.803744 -O 3.548126 15.613149 1.926530 -O 1.417057 15.021388 1.832754 -O 1.588737 13.667977 4.050814 -O 3.735768 14.170467 4.293344 -O 6.199961 15.742728 2.965667 -O -3.236934 20.366230 7.798725 -O 6.266123 13.873954 5.258396 -C 1.787344 16.702335 6.544157 -H 1.939772 16.029323 5.862772 -H 1.744820 17.569928 6.110371 -C 0.512480 16.428614 7.242114 -H -0.215666 16.390204 6.601671 -H 0.561705 15.575583 7.700270 -C -0.975369 17.334194 8.831038 -H -1.011313 16.485173 9.299917 -H -1.688772 17.350444 8.174023 -C -1.152166 18.447861 0.045166 -H -1.056396 19.298359 9.336959 -H -2.039685 18.409874 0.436061 -C -0.325204 19.300681 2.075674 -H -1.198955 19.216053 2.489964 -H -0.249782 20.193176 1.701351 -C 0.735822 19.081619 3.078743 -H 0.562924 19.621253 3.865407 -H 0.749347 18.150292 3.345839 -C 3.055142 19.288651 3.426747 -H 3.119232 18.363444 3.708464 -H 2.901129 19.838626 4.211461 -C 4.312947 19.706303 2.750236 -H 4.238988 20.627922 2.453897 -H 5.059004 19.642357 3.367284 -C 5.771310 19.041310 1.013142 -H 6.477280 19.093649 1.676981 -H 5.766924 19.868172 0.507221 -C 6.019630 17.910549 0.113402 -H 6.909830 17.981459 9.486104 -H 5.964313 17.078200 0.609575 -C 5.162694 16.780843 7.962491 -H 5.041946 15.970231 8.482060 -H 6.048386 16.755306 7.565748 -C 4.136881 16.849431 6.893136 -H 4.187813 17.707105 6.440829 -H 4.292599 16.149617 6.239045 -C 2.578362 15.024131 2.372013 -C 2.681443 14.216685 3.695792 -H 5.370928 15.708539 2.713193 -H 8.921491 0.091451 7.489713 -H 5.395297 13.703643 5.150193 -H 6.354217 15.288566 3.678245 -H -4.070841 20.623701 7.928373 -H 6.238464 13.830268 6.144489 -K -4.194880 14.420763 0.341407 -K 1.793193 10.260919 0.341407 -O -3.691294 15.230108 7.480648 -O 0.840487 10.292365 7.480648 -O -3.085359 12.610447 8.181626 -O 2.806212 12.126950 8.181626 -O -3.603566 11.786751 1.055838 -O 3.778657 12.090018 1.055838 -O -5.647638 13.104496 2.508583 -O 3.659493 9.660928 2.508583 -O -6.417698 15.592255 1.651636 -O 1.890060 7.750156 1.651636 -O -5.849291 16.522316 8.803744 -O 0.800400 7.777380 8.803744 -O -3.110947 16.370366 1.926530 -O -0.437180 10.224831 1.926530 -O -1.532932 14.820687 1.832754 -O 0.115875 12.366272 1.832754 -O -0.446684 15.646071 4.050814 -O -1.142053 12.894298 4.050814 -O -1.780399 10.783670 4.293344 -O -1.955369 17.254209 4.293344 -C -3.173819 14.300891 6.544157 -C 1.386474 11.205120 6.544157 -H -2.667187 14.769404 5.862772 -H 0.727415 11.409619 5.862772 -H -3.903914 13.830268 6.110371 -H 2.159093 10.808150 6.110371 -C -2.299337 13.333687 7.242114 -C 1.786857 12.446045 7.242114 -H 2.117666 13.095843 6.601671 -H -1.902000 12.722299 6.601671 -H 1.023498 12.829930 7.700270 -H -1.585203 13.802833 7.700270 -C -2.339668 11.592382 8.831038 -C 3.315037 13.281771 8.831038 -H -1.586422 11.985763 9.299917 -H 2.597735 13.737410 9.299917 -H -1.997040 10.966432 8.174023 -H 3.685811 13.891470 8.174023 -C -3.215733 10.882437 0.045166 -C 4.367900 12.878048 0.045166 -H -4.000171 10.540128 9.336959 -H 5.056567 12.369859 9.336959 -H -2.739076 10.132817 0.436061 -H 4.778761 13.665656 0.436061 -C -4.367778 11.172197 2.075674 -C 4.692982 11.735468 2.075674 -H -3.857613 10.457821 2.489964 -H 5.056568 12.534472 2.489964 -H -5.178412 10.791267 1.701351 -H 5.428195 11.223903 1.701351 -C -4.708578 12.200604 3.078743 -C 3.972756 10.926123 3.078743 -H 4.526542 10.806040 3.865407 -H -5.089466 11.781053 3.865407 -H 3.159441 11.380074 3.345839 -H -3.908788 12.677980 3.345839 -C -6.047533 14.105678 3.426747 -C 2.992391 8.814017 3.426747 -H -5.278325 14.623785 3.708464 -H 2.159093 9.221117 3.708464 -H -6.446819 13.697312 4.211461 -H 3.545690 8.672408 4.211461 -C -7.038133 14.986144 2.750236 -C 2.725185 7.515900 2.750236 -H -7.799298 14.461283 2.453897 -H 3.560311 7.119141 2.453897 -H -7.355783 15.664221 3.367284 -H 2.296778 6.901768 3.367284 -C -7.191414 16.581619 1.013142 -C 1.420103 6.585417 1.013142 -H -7.589725 17.166838 1.676981 -H 1.112445 5.947859 1.676981 -H -7.905304 16.164390 0.507221 -H 2.138380 6.175785 0.507221 -C -6.336306 17.362051 0.113402 -C 0.316675 6.935746 0.113402 -H -0.067015 6.129355 9.486104 -H -6.842815 18.097532 9.486104 -H -0.376501 7.399827 0.609575 -H -5.587812 17.730319 0.609575 -C -0.233211 8.242727 7.962491 -C -4.929483 17.184776 7.962491 -H -0.874847 8.752604 8.482060 -H -4.167099 17.485511 8.482060 -H -0.698172 7.488464 7.565748 -H -5.350214 17.964576 7.565748 -C 0.339095 9.096813 6.893136 -C -4.475976 16.262102 6.893136 -H 1.056396 8.623869 6.440829 -H -5.244209 15.877373 6.440829 -H -0.344821 9.311865 6.239045 -H -3.947778 16.746865 6.239045 -C -2.115960 15.825035 2.372013 -C -0.462402 11.359180 2.372013 -C -1.468232 16.318028 3.695792 -C -1.213211 11.673633 3.695792 diff --git a/cell2mol/test/error_2/BOFFOS/Normal_Transformed_BOFFOS_4.xyz b/cell2mol/test/error_2/BOFFOS/Normal_Transformed_BOFFOS_4.xyz deleted file mode 100644 index 39de4877a..000000000 --- a/cell2mol/test/error_2/BOFFOS/Normal_Transformed_BOFFOS_4.xyz +++ /dev/null @@ -1,159 +0,0 @@ -157 -0 1 -K -4.194880 14.420763 0.341407 -Fe 0.000000 14.070856 2.896456 -O -3.691294 15.230108 7.480648 -O -3.085359 12.610447 8.181626 -O -3.603566 11.786751 1.055838 -O -5.647638 13.104496 2.508583 -O -6.417698 15.592255 1.651636 -O -5.849291 16.522316 8.803744 -O -3.110947 16.370366 1.926530 -O -1.532932 14.820687 1.832754 -O -0.446684 15.646071 4.050814 -O -1.955369 17.254209 4.293344 -O -4.549083 18.602133 2.965667 -O -3.834706 8.117791 7.798725 -O -2.963758 19.593818 5.258396 -C -3.173819 14.300891 6.544157 -H -2.667187 14.769404 5.862772 -H -3.903914 13.830268 6.110371 -C -2.299337 13.333687 7.242114 -H -1.902000 12.722299 6.601671 -H -1.585203 13.802833 7.700270 -C -2.339668 11.592382 8.831038 -H -1.586422 11.985763 9.299917 -H -1.997040 10.966432 8.174023 -C -3.215733 10.882437 0.045166 -H -4.000171 10.540128 9.336959 -H -2.739076 10.132817 0.436061 -C -4.367778 11.172197 2.075674 -H -3.857613 10.457821 2.489964 -H -5.178412 10.791267 1.701351 -C -4.708578 12.200604 3.078743 -H -5.089466 11.781053 3.865407 -H -3.908788 12.677980 3.345839 -C -6.047533 14.105678 3.426747 -H -5.278325 14.623785 3.708464 -H -6.446819 13.697312 4.211461 -C -7.038133 14.986144 2.750236 -H -7.799298 14.461283 2.453897 -H -7.355783 15.664221 3.367284 -C -7.191414 16.581619 1.013142 -H -7.589725 17.166838 1.676981 -H -7.905304 16.164390 0.507221 -C -6.336306 17.362051 0.113402 -H -6.842815 18.097532 9.486104 -H -5.587812 17.730319 0.609575 -C -4.929483 17.184776 7.962491 -H -4.167099 17.485511 8.482060 -H -5.350214 17.964576 7.565748 -C -4.475976 16.262102 6.893136 -H -5.244209 15.877373 6.440829 -H -3.947778 16.746865 6.239045 -C -2.115960 15.825035 2.372013 -C -1.468232 16.318028 3.695792 -H -4.104958 17.901263 2.713193 -H 19.829055 7.680512 7.489713 -H -2.380851 18.924815 5.150193 -H -4.232895 18.962803 3.678245 -H -3.640729 7.266870 7.928373 -H -2.912095 19.591707 6.144489 -K 1.793193 10.260919 0.341407 -K 2.401687 17.526664 0.341407 -O 0.840487 10.292365 7.480648 -O 2.850807 16.685874 7.480648 -O 2.806212 12.126950 8.181626 -O 0.279147 17.470949 8.181626 -O 3.778657 12.090018 1.055838 -O -0.175091 18.331577 1.055838 -O 3.659493 9.660928 2.508583 -O 1.988145 19.442923 2.508583 -O 1.890060 7.750156 1.651636 -O 4.527638 18.865935 1.651636 -O 0.800400 7.777380 8.803744 -O 5.048891 17.908650 8.803744 -O -0.437180 10.224831 1.926530 -O 3.548126 15.613149 1.926530 -O 0.115875 12.366272 1.832754 -O 1.417057 15.021388 1.832754 -O -1.142053 12.894298 4.050814 -O 1.588737 13.667977 4.050814 -O 3.735768 14.170467 4.293344 -O -1.780399 10.783670 4.293344 -C 1.386474 11.205120 6.544157 -C 1.787344 16.702335 6.544157 -H 0.727415 11.409619 5.862772 -H 1.939772 16.029323 5.862772 -H 2.159093 10.808150 6.110371 -H 1.744820 17.569928 6.110371 -C 1.786857 12.446045 7.242114 -C 0.512480 16.428614 7.242114 -H -0.215666 16.390204 6.601671 -H 2.117666 13.095843 6.601671 -H 0.561705 15.575583 7.700270 -H 1.023498 12.829930 7.700270 -C 3.315037 13.281771 8.831038 -C -0.975369 17.334194 8.831038 -H 2.597735 13.737410 9.299917 -H -1.011313 16.485173 9.299917 -H 3.685811 13.891470 8.174023 -H -1.688772 17.350444 8.174023 -C 4.367900 12.878048 0.045166 -C -1.152166 18.447861 0.045166 -H 5.056567 12.369859 9.336959 -H -1.056396 19.298359 9.336959 -H 4.778761 13.665656 0.436061 -H -2.039685 18.409874 0.436061 -C 4.692982 11.735468 2.075674 -C -0.325204 19.300681 2.075674 -H 5.056568 12.534472 2.489964 -H -1.198955 19.216053 2.489964 -H 5.428195 11.223903 1.701351 -H -0.249782 20.193176 1.701351 -C 3.972756 10.926123 3.078743 -C 0.735822 19.081619 3.078743 -H 0.562924 19.621253 3.865407 -H 4.526542 10.806040 3.865407 -H 0.749347 18.150292 3.345839 -H 3.159441 11.380074 3.345839 -C 2.992391 8.814017 3.426747 -C 3.055142 19.288651 3.426747 -H 2.159093 9.221117 3.708464 -H 3.119232 18.363444 3.708464 -H 3.545690 8.672408 4.211461 -H 2.901129 19.838626 4.211461 -C 2.725185 7.515900 2.750236 -C 4.312947 19.706303 2.750236 -H 3.560311 7.119141 2.453897 -H 4.238988 20.627922 2.453897 -H 2.296778 6.901768 3.367284 -H 5.059004 19.642357 3.367284 -C 1.420103 6.585417 1.013142 -C 5.771310 19.041310 1.013142 -H 1.112445 5.947859 1.676981 -H 6.477280 19.093649 1.676981 -H 2.138380 6.175785 0.507221 -H 5.766924 19.868172 0.507221 -C 0.316675 6.935746 0.113402 -C 6.019630 17.910549 0.113402 -H 6.909830 17.981459 9.486104 -H -0.067015 6.129355 9.486104 -H 5.964313 17.078200 0.609575 -H -0.376501 7.399827 0.609575 -C 5.162694 16.780843 7.962491 -C -0.233211 8.242727 7.962491 -H 5.041946 15.970231 8.482060 -H -0.874847 8.752604 8.482060 -H 6.048386 16.755306 7.565748 -H -0.698172 7.488464 7.565748 -C 4.136881 16.849431 6.893136 -C 0.339095 9.096813 6.893136 -H 4.187813 17.707105 6.440829 -H 1.056396 8.623869 6.440829 -H 4.292599 16.149617 6.239045 -H -0.344821 9.311865 6.239045 -C -0.462402 11.359180 2.372013 -C 2.578362 15.024131 2.372013 -C -1.213211 11.673633 3.695792 -C 2.681443 14.216685 3.695792 diff --git a/cell2mol/test/error_2/BOFFOS/Normal_Transformed_BOFFOS_5.xyz b/cell2mol/test/error_2/BOFFOS/Normal_Transformed_BOFFOS_5.xyz deleted file mode 100644 index 3ff0818b5..000000000 --- a/cell2mol/test/error_2/BOFFOS/Normal_Transformed_BOFFOS_5.xyz +++ /dev/null @@ -1,159 +0,0 @@ -157 -0 1 -K 1.793193 10.260919 0.341407 -Fe -0.001218 14.068745 2.896456 -O 0.840487 10.292365 7.480648 -O 2.806212 12.126950 8.181626 -O 3.778657 12.090018 1.055838 -O 3.659493 9.660928 2.508583 -O 1.890060 7.750156 1.651636 -O 0.800400 7.777380 8.803744 -O -0.437180 10.224831 1.926530 -O 0.115875 12.366272 1.832754 -O -1.142053 12.894298 4.050814 -O -1.780399 10.783670 4.293344 -O -1.650878 7.863485 2.965667 -O 7.071640 13.724325 7.798725 -O -3.302365 8.740575 5.258396 -C 1.386474 11.205120 6.544157 -H 0.727415 11.409619 5.862772 -H 2.159093 10.808150 6.110371 -C 1.786857 12.446045 7.242114 -H 2.117666 13.095843 6.601671 -H 1.023498 12.829930 7.700270 -C 3.315037 13.281771 8.831038 -H 2.597735 13.737410 9.299917 -H 3.685811 13.891470 8.174023 -C 4.367900 12.878048 0.045166 -H 5.056567 12.369859 9.336959 -H 4.778761 13.665656 0.436061 -C 4.692982 11.735468 2.075674 -H 5.056568 12.534472 2.489964 -H 5.428195 11.223903 1.701351 -C 3.972756 10.926123 3.078743 -H 4.526542 10.806040 3.865407 -H 3.159441 11.380074 3.345839 -C 2.992391 8.814017 3.426747 -H 2.159093 9.221117 3.708464 -H 3.545690 8.672408 4.211461 -C 2.725185 7.515900 2.750236 -H 3.560311 7.119141 2.453897 -H 2.296778 6.901768 3.367284 -C 1.420103 6.585417 1.013142 -H 1.112445 5.947859 1.676981 -H 2.138380 6.175785 0.507221 -C 0.316675 6.935746 0.113402 -H -0.067015 6.129355 9.486104 -H -0.376501 7.399827 0.609575 -C -0.233211 8.242727 7.962491 -H -0.874847 8.752604 8.482060 -H -0.698172 7.488464 7.565748 -C 0.339095 9.096813 6.893136 -H 1.056396 8.623869 6.440829 -H -0.344821 9.311865 6.239045 -C -0.462402 11.359180 2.372013 -C -1.213211 11.673633 3.695792 -H -1.265970 8.598544 2.713193 -H 7.802954 13.332210 7.489713 -H -3.014445 9.579888 5.150193 -H -2.121321 7.956977 3.678245 -H 7.711570 14.317774 7.928373 -H -3.326368 8.786371 6.144489 -K 2.401687 17.526664 0.341407 -K -4.194880 14.420763 0.341407 -O 2.850807 16.685874 7.480648 -O -3.691294 15.230108 7.480648 -O 0.279147 17.470949 8.181626 -O -3.085359 12.610447 8.181626 -O -0.175091 18.331577 1.055838 -O -3.603566 11.786751 1.055838 -O 1.988145 19.442923 2.508583 -O -5.647638 13.104496 2.508583 -O 4.527638 18.865935 1.651636 -O -6.417698 15.592255 1.651636 -O 5.048891 17.908650 8.803744 -O -5.849291 16.522316 8.803744 -O 3.548126 15.613149 1.926530 -O -3.110947 16.370366 1.926530 -O 1.417057 15.021388 1.832754 -O -1.532932 14.820687 1.832754 -O 1.588737 13.667977 4.050814 -O -0.446684 15.646071 4.050814 -O -1.955369 17.254209 4.293344 -O 3.735768 14.170467 4.293344 -C 1.787344 16.702335 6.544157 -C -3.173819 14.300891 6.544157 -H 1.939772 16.029323 5.862772 -H -2.667187 14.769404 5.862772 -H 1.744820 17.569928 6.110371 -H -3.903914 13.830268 6.110371 -C 0.512480 16.428614 7.242114 -C -2.299337 13.333687 7.242114 -H -1.902000 12.722299 6.601671 -H -0.215666 16.390204 6.601671 -H -1.585203 13.802833 7.700270 -H 0.561705 15.575583 7.700270 -C -0.975369 17.334194 8.831038 -C -2.339668 11.592382 8.831038 -H -1.011313 16.485173 9.299917 -H -1.586422 11.985763 9.299917 -H -1.688772 17.350444 8.174023 -H -1.997040 10.966432 8.174023 -C -1.152166 18.447861 0.045166 -C -3.215733 10.882437 0.045166 -H -1.056396 19.298359 9.336959 -H -4.000171 10.540128 9.336959 -H -2.039685 18.409874 0.436061 -H -2.739076 10.132817 0.436061 -C -0.325204 19.300681 2.075674 -C -4.367778 11.172197 2.075674 -H -1.198955 19.216053 2.489964 -H -3.857613 10.457821 2.489964 -H -0.249782 20.193176 1.701351 -H -5.178412 10.791267 1.701351 -C 0.735822 19.081619 3.078743 -C -4.708578 12.200604 3.078743 -H -5.089466 11.781053 3.865407 -H 0.562924 19.621253 3.865407 -H -3.908788 12.677980 3.345839 -H 0.749347 18.150292 3.345839 -C 3.055142 19.288651 3.426747 -C -6.047533 14.105678 3.426747 -H 3.119232 18.363444 3.708464 -H -5.278325 14.623785 3.708464 -H 2.901129 19.838626 4.211461 -H -6.446819 13.697312 4.211461 -C 4.312947 19.706303 2.750236 -C -7.038133 14.986144 2.750236 -H 4.238988 20.627922 2.453897 -H -7.799298 14.461283 2.453897 -H 5.059004 19.642357 3.367284 -H -7.355783 15.664221 3.367284 -C 5.771310 19.041310 1.013142 -C -7.191414 16.581619 1.013142 -H 6.477280 19.093649 1.676981 -H -7.589725 17.166838 1.676981 -H 5.766924 19.868172 0.507221 -H -7.905304 16.164390 0.507221 -C 6.019630 17.910549 0.113402 -C -6.336306 17.362051 0.113402 -H -6.842815 18.097532 9.486104 -H 6.909830 17.981459 9.486104 -H -5.587812 17.730319 0.609575 -H 5.964313 17.078200 0.609575 -C -4.929483 17.184776 7.962491 -C 5.162694 16.780843 7.962491 -H -4.167099 17.485511 8.482060 -H 5.041946 15.970231 8.482060 -H -5.350214 17.964576 7.565748 -H 6.048386 16.755306 7.565748 -C -4.475976 16.262102 6.893136 -C 4.136881 16.849431 6.893136 -H -5.244209 15.877373 6.440829 -H 4.187813 17.707105 6.440829 -H -3.947778 16.746865 6.239045 -H 4.292599 16.149617 6.239045 -C 2.578362 15.024131 2.372013 -C -2.115960 15.825035 2.372013 -C 2.681443 14.216685 3.695792 -C -1.468232 16.318028 3.695792 diff --git a/cell2mol/test/error_2/BOFFOS/Normal_Transformed_BOFFOS_6.xyz b/cell2mol/test/error_2/BOFFOS/Normal_Transformed_BOFFOS_6.xyz deleted file mode 100644 index 4ca6bd250..000000000 --- a/cell2mol/test/error_2/BOFFOS/Normal_Transformed_BOFFOS_6.xyz +++ /dev/null @@ -1,159 +0,0 @@ -157 -0 1 -K 2.401687 3.457215 3.590741 -Fe -12.183282 21.103470 6.145789 -O 2.850807 2.616425 0.981981 -O 0.279147 3.401500 1.682960 -O -0.175091 4.262128 4.305172 -O 1.988145 5.373474 5.757916 -O 4.527638 4.796486 4.900969 -O 5.048891 3.839201 2.305077 -O 3.548126 1.543700 5.175863 -O 1.417057 0.951939 5.082087 -O -10.595763 20.702701 7.300147 -O 3.735768 0.101019 7.542677 -O 6.199961 1.673280 6.215000 -O -3.236934 6.296782 1.300058 -O -5.918377 20.908678 8.507729 -C 1.787344 2.632886 0.045491 -H 1.939772 1.959874 9.112105 -H 1.744820 3.500479 9.359705 -C 0.512480 2.359165 0.743447 -H -0.215666 2.320756 0.103004 -H 0.561705 1.506134 1.201603 -C -0.975369 3.264745 2.332371 -H -1.011313 2.415724 2.801250 -H -1.688772 3.280995 1.675356 -C -1.152166 4.378412 3.294499 -H -1.056396 5.228911 2.838293 -H -2.039685 4.340425 3.685394 -C -0.325204 5.231232 5.325007 -H -1.198955 5.146604 5.739297 -H -0.249782 6.123728 4.950684 -C 0.735822 5.012171 6.328077 -H 0.562924 5.551804 7.114740 -H 0.749347 4.080844 6.595172 -C 3.055142 5.219203 6.676080 -H 3.119232 4.293996 6.957797 -H 2.901129 5.769177 7.460794 -C 4.312947 5.636854 5.999569 -H 4.238988 6.558474 5.703230 -H 5.059004 5.572909 6.616617 -C 5.771310 4.971862 4.262475 -H 6.477280 5.024200 4.926314 -H 5.766924 5.798723 3.756554 -C 6.019630 3.841100 3.362735 -H 6.909830 3.912010 2.987437 -H 5.964313 3.008752 3.858908 -C 5.162694 2.711394 1.463825 -H 5.041946 1.900783 1.983393 -H 6.048386 2.685858 1.067081 -C 4.136881 2.779982 0.394469 -H 4.187813 3.637656 9.690162 -H 4.292599 2.080168 9.488378 -C 2.578362 0.954682 5.621347 -C 2.681443 0.147237 6.945125 -H 5.370928 1.639091 5.962527 -H -3.263009 7.126176 0.991047 -H -6.789203 20.738367 8.399527 -H 6.354217 1.219118 6.927579 -H 20.298159 6.554253 1.429707 -H -5.946036 20.864992 9.393823 -K 20.174120 0.351314 3.590741 -K 13.977693 17.295644 3.590741 -O 20.677706 1.160659 0.981981 -O 13.024987 17.327089 0.981981 -O 9.099141 19.645171 1.682960 -O -9.378288 19.161675 1.682960 -O 8.580934 18.821475 4.305172 -O -8.405843 19.124742 4.305172 -O 6.536862 20.139220 5.757916 -O -8.525007 16.695652 5.757916 -O 17.951302 1.522807 4.900969 -O 14.074560 14.784880 4.900969 -O 18.519709 2.452868 2.305077 -O 12.984900 14.812105 2.305077 -O 21.258053 2.300918 5.175863 -O 11.747320 17.259556 5.175863 -O 22.836068 0.751238 5.082087 -O 12.300375 19.400996 5.082087 -O -0.446684 1.576622 7.300147 -O 11.042447 19.929022 7.300147 -O 10.404101 17.818394 7.542677 -O 22.413631 3.184760 7.542677 -C 21.195181 0.231442 0.045491 -C 13.570974 18.239844 0.045491 -H 21.701813 0.699955 9.112105 -H 12.911915 18.444344 9.112105 -H 8.280586 20.864992 9.359705 -H -10.025407 17.842875 9.359705 -C 9.885163 20.368411 0.743447 -C -10.397643 19.480770 0.743447 -H -10.066834 20.130567 0.103004 -H 10.282500 19.757023 0.103004 -H -11.161002 19.864655 1.201603 -H 10.599297 20.837557 1.201603 -C 9.844832 18.627106 2.332371 -C -8.869463 20.316495 2.332371 -H 10.598078 19.020488 2.801250 -H -9.586765 20.772134 2.801250 -H 10.187460 18.001156 1.675356 -H -8.498689 20.926195 1.675356 -C 8.968767 17.917162 3.294499 -C -7.816600 19.912772 3.294499 -H 8.184329 17.574852 2.838293 -H -7.127932 19.404584 2.838293 -H 9.445424 17.167541 3.685394 -H -7.405739 20.700380 3.685394 -C 7.816722 18.206922 5.325007 -C -7.491518 18.770192 5.325007 -H 8.326887 17.492546 5.739297 -H -7.127932 19.569196 5.739297 -H 7.006088 17.825992 4.950684 -H -6.756305 18.258627 4.950684 -C 7.475922 19.235328 6.328077 -C -8.211744 17.960847 6.328077 -H -7.657958 17.840764 7.114740 -H 7.095034 18.815777 7.114740 -H -9.025059 18.414798 6.595172 -H 8.275712 19.712705 6.595172 -C 18.321467 0.036229 6.676080 -C 15.176891 15.848742 6.676080 -H 19.090675 0.554336 6.957797 -H 14.343593 16.255841 6.957797 -H 5.737681 20.732036 7.460794 -H -8.638810 15.707133 7.460794 -C 17.330867 0.916695 5.999569 -C 14.909685 14.550624 5.999569 -H 16.569702 0.391834 5.703230 -H 15.744811 14.153865 5.703230 -H 17.013217 1.594772 6.616617 -H 14.481278 13.936492 6.616617 -C 17.177586 2.512170 4.262475 -C 13.604603 13.620141 4.262475 -H 16.779275 3.097389 4.926314 -H 13.296945 12.982584 4.926314 -H 16.463696 2.094941 3.756554 -H 14.322880 13.210509 3.756554 -C 18.032694 3.292603 3.362735 -C 12.501175 13.970470 3.362735 -H 12.117485 13.164080 2.987437 -H 17.526185 4.028083 2.987437 -H 11.807999 14.434551 3.858908 -H 18.781188 3.660871 3.858908 -C 11.951289 15.277452 1.463825 -C 19.439517 3.115328 1.463825 -H 11.309653 15.787328 1.983393 -H 20.201901 3.416062 1.983393 -H 11.486328 14.523188 1.067081 -H 19.018786 3.895127 1.067081 -C 12.523595 16.131537 0.394469 -C 19.893024 2.192653 0.394469 -H 13.240896 15.658593 9.690162 -H 19.124791 1.807924 9.690162 -H 11.839679 16.346589 9.488378 -H 20.421222 2.677416 9.488378 -C 22.253040 1.755586 5.621347 -C 11.722098 18.393905 5.621347 -C 22.900768 2.248579 6.945125 -C 10.971289 18.708357 6.945125 diff --git a/cell2mol/test/error_2/BOFFOS/Normal_Transformed_BOFFOS_7.xyz b/cell2mol/test/error_2/BOFFOS/Normal_Transformed_BOFFOS_7.xyz deleted file mode 100644 index d58d5b2a9..000000000 --- a/cell2mol/test/error_2/BOFFOS/Normal_Transformed_BOFFOS_7.xyz +++ /dev/null @@ -1,159 +0,0 @@ -157 -0 1 -K 20.174120 0.351314 3.590741 -Fe 0.000000 0.001407 6.145789 -O 20.677706 1.160659 0.981981 -O 9.099141 19.645171 1.682960 -O 8.580934 18.821475 4.305172 -O 6.536862 20.139220 5.757916 -O 17.951302 1.522807 4.900969 -O 18.519709 2.452868 2.305077 -O 21.258053 2.300918 5.175863 -O 22.836068 0.751238 5.082087 -O -0.446684 1.576622 7.300147 -O 22.413631 3.184760 7.542677 -O 19.819917 4.532684 6.215000 -O 8.349794 15.152515 1.300058 -O -2.963758 5.524369 8.507729 -C 21.195181 0.231442 0.045491 -H 21.701813 0.699955 9.112105 -H 8.280586 20.864992 9.359705 -C 9.885163 20.368411 0.743447 -H 10.282500 19.757023 0.103004 -H 10.599297 20.837557 1.201603 -C 9.844832 18.627106 2.332371 -H 10.598078 19.020488 2.801250 -H 10.187460 18.001156 1.675356 -C 8.968767 17.917162 3.294499 -H 8.184329 17.574852 2.838293 -H 9.445424 17.167541 3.685394 -C 7.816722 18.206922 5.325007 -H 8.326887 17.492546 5.739297 -H 7.006088 17.825992 4.950684 -C 7.475922 19.235328 6.328077 -H 7.095034 18.815777 7.114740 -H 8.275712 19.712705 6.595172 -C 18.321467 0.036229 6.676080 -H 19.090675 0.554336 6.957797 -H 5.737681 20.732036 7.460794 -C 17.330867 0.916695 5.999569 -H 16.569702 0.391834 5.703230 -H 17.013217 1.594772 6.616617 -C 17.177586 2.512170 4.262475 -H 16.779275 3.097389 4.926314 -H 16.463696 2.094941 3.756554 -C 18.032694 3.292603 3.362735 -H 17.526185 4.028083 2.987437 -H 18.781188 3.660871 3.858908 -C 19.439517 3.115328 1.463825 -H 20.201901 3.416062 1.983393 -H 19.018786 3.895127 1.067081 -C 19.893024 2.192653 0.394469 -H 19.124791 1.807924 9.690162 -H 20.421222 2.677416 9.488378 -C 22.253040 1.755586 5.621347 -C 22.900768 2.248579 6.945125 -H 20.264042 3.831814 5.962527 -H 7.644555 14.715236 0.991047 -H -2.380851 4.855367 8.399527 -H 20.136105 4.893354 6.927579 -H 8.543771 14.301595 1.429707 -H -2.912095 5.522259 9.393823 -K 13.977693 17.295644 3.590741 -K 2.401687 3.457215 3.590741 -O 13.024987 17.327089 0.981981 -O 2.850807 2.616425 0.981981 -O -9.378288 19.161675 1.682960 -O 0.279147 3.401500 1.682960 -O -8.405843 19.124742 4.305172 -O -0.175091 4.262128 4.305172 -O -8.525007 16.695652 5.757916 -O 1.988145 5.373474 5.757916 -O 14.074560 14.784880 4.900969 -O 4.527638 4.796486 4.900969 -O 12.984900 14.812105 2.305077 -O 5.048891 3.839201 2.305077 -O 11.747320 17.259556 5.175863 -O 3.548126 1.543700 5.175863 -O 12.300375 19.400996 5.082087 -O 1.417057 0.951939 5.082087 -O 11.042447 19.929022 7.300147 -O -10.595763 20.702701 7.300147 -O 3.735768 0.101019 7.542677 -O 10.404101 17.818394 7.542677 -C 13.570974 18.239844 0.045491 -C 1.787344 2.632886 0.045491 -H 12.911915 18.444344 9.112105 -H 1.939772 1.959874 9.112105 -H -10.025407 17.842875 9.359705 -H 1.744820 3.500479 9.359705 -C -10.397643 19.480770 0.743447 -C 0.512480 2.359165 0.743447 -H -0.215666 2.320756 0.103004 -H -10.066834 20.130567 0.103004 -H 0.561705 1.506134 1.201603 -H -11.161002 19.864655 1.201603 -C -8.869463 20.316495 2.332371 -C -0.975369 3.264745 2.332371 -H -9.586765 20.772134 2.801250 -H -1.011313 2.415724 2.801250 -H -8.498689 20.926195 1.675356 -H -1.688772 3.280995 1.675356 -C -7.816600 19.912772 3.294499 -C -1.152166 4.378412 3.294499 -H -7.127932 19.404584 2.838293 -H -1.056396 5.228911 2.838293 -H -7.405739 20.700380 3.685394 -H -2.039685 4.340425 3.685394 -C -7.491518 18.770192 5.325007 -C -0.325204 5.231232 5.325007 -H -7.127932 19.569196 5.739297 -H -1.198955 5.146604 5.739297 -H -6.756305 18.258627 4.950684 -H -0.249782 6.123728 4.950684 -C -8.211744 17.960847 6.328077 -C 0.735822 5.012171 6.328077 -H 0.562924 5.551804 7.114740 -H -7.657958 17.840764 7.114740 -H 0.749347 4.080844 6.595172 -H -9.025059 18.414798 6.595172 -C 15.176891 15.848742 6.676080 -C 3.055142 5.219203 6.676080 -H 14.343593 16.255841 6.957797 -H 3.119232 4.293996 6.957797 -H -8.638810 15.707133 7.460794 -H 2.901129 5.769177 7.460794 -C 14.909685 14.550624 5.999569 -C 4.312947 5.636854 5.999569 -H 15.744811 14.153865 5.703230 -H 4.238988 6.558474 5.703230 -H 14.481278 13.936492 6.616617 -H 5.059004 5.572909 6.616617 -C 13.604603 13.620141 4.262475 -C 5.771310 4.971862 4.262475 -H 13.296945 12.982584 4.926314 -H 6.477280 5.024200 4.926314 -H 14.322880 13.210509 3.756554 -H 5.766924 5.798723 3.756554 -C 12.501175 13.970470 3.362735 -C 6.019630 3.841100 3.362735 -H 6.909830 3.912010 2.987437 -H 12.117485 13.164080 2.987437 -H 5.964313 3.008752 3.858908 -H 11.807999 14.434551 3.858908 -C 5.162694 2.711394 1.463825 -C 11.951289 15.277452 1.463825 -H 5.041946 1.900783 1.983393 -H 11.309653 15.787328 1.983393 -H 6.048386 2.685858 1.067081 -H 11.486328 14.523188 1.067081 -C 4.136881 2.779982 0.394469 -C 12.523595 16.131537 0.394469 -H 4.187813 3.637656 9.690162 -H 13.240896 15.658593 9.690162 -H 4.292599 2.080168 9.488378 -H 11.839679 16.346589 9.488378 -C 11.722098 18.393905 5.621347 -C 2.578362 0.954682 5.621347 -C 10.971289 18.708357 6.945125 -C 2.681443 0.147237 6.945125 diff --git a/cell2mol/test/error_2/BOFFOS/Normal_Transformed_BOFFOS_8.xyz b/cell2mol/test/error_2/BOFFOS/Normal_Transformed_BOFFOS_8.xyz deleted file mode 100644 index 8da5d7f7e..000000000 --- a/cell2mol/test/error_2/BOFFOS/Normal_Transformed_BOFFOS_8.xyz +++ /dev/null @@ -1,159 +0,0 @@ -157 -0 1 -K 13.977693 17.295644 3.590741 -Fe 12.183282 21.103470 6.145789 -O 13.024987 17.327089 0.981981 -O -9.378288 19.161675 1.682960 -O -8.405843 19.124742 4.305172 -O -8.525007 16.695652 5.757916 -O 14.074560 14.784880 4.900969 -O 12.984900 14.812105 2.305077 -O 11.747320 17.259556 5.175863 -O 12.300375 19.400996 5.082087 -O 11.042447 19.929022 7.300147 -O 10.404101 17.818394 7.542677 -O 10.533622 14.898210 6.215000 -O -5.112860 20.759049 1.300058 -O 8.882135 15.775299 8.507729 -C 13.570974 18.239844 0.045491 -H 12.911915 18.444344 9.112105 -H -10.025407 17.842875 9.359705 -C -10.397643 19.480770 0.743447 -H -10.066834 20.130567 0.103004 -H -11.161002 19.864655 1.201603 -C -8.869463 20.316495 2.332371 -H -9.586765 20.772134 2.801250 -H -8.498689 20.926195 1.675356 -C -7.816600 19.912772 3.294499 -H -7.127932 19.404584 2.838293 -H -7.405739 20.700380 3.685394 -C -7.491518 18.770192 5.325007 -H -7.127932 19.569196 5.739297 -H -6.756305 18.258627 4.950684 -C -8.211744 17.960847 6.328077 -H -7.657958 17.840764 7.114740 -H -9.025059 18.414798 6.595172 -C 15.176891 15.848742 6.676080 -H 14.343593 16.255841 6.957797 -H -8.638810 15.707133 7.460794 -C 14.909685 14.550624 5.999569 -H 15.744811 14.153865 5.703230 -H 14.481278 13.936492 6.616617 -C 13.604603 13.620141 4.262475 -H 13.296945 12.982584 4.926314 -H 14.322880 13.210509 3.756554 -C 12.501175 13.970470 3.362735 -H 12.117485 13.164080 2.987437 -H 11.807999 14.434551 3.858908 -C 11.951289 15.277452 1.463825 -H 11.309653 15.787328 1.983393 -H 11.486328 14.523188 1.067081 -C 12.523595 16.131537 0.394469 -H 13.240896 15.658593 9.690162 -H 11.839679 16.346589 9.488378 -C 11.722098 18.393905 5.621347 -C 10.971289 18.708357 6.945125 -H 10.918530 15.633268 5.962527 -H -4.381546 20.366934 0.991047 -H 9.170055 16.614612 8.399527 -H 10.063179 14.991701 6.927579 -H 7.711570 0.248326 1.429707 -H 8.858132 15.821095 9.393823 -K 2.401687 3.457215 3.590741 -K 20.174120 0.351314 3.590741 -O 2.850807 2.616425 0.981981 -O 20.677706 1.160659 0.981981 -O 0.279147 3.401500 1.682960 -O 9.099141 19.645171 1.682960 -O -0.175091 4.262128 4.305172 -O 8.580934 18.821475 4.305172 -O 1.988145 5.373474 5.757916 -O 6.536862 20.139220 5.757916 -O 4.527638 4.796486 4.900969 -O 17.951302 1.522807 4.900969 -O 5.048891 3.839201 2.305077 -O 18.519709 2.452868 2.305077 -O 3.548126 1.543700 5.175863 -O 21.258053 2.300918 5.175863 -O 1.417057 0.951939 5.082087 -O 22.836068 0.751238 5.082087 -O -10.595763 20.702701 7.300147 -O -0.446684 1.576622 7.300147 -O 22.413631 3.184760 7.542677 -O 3.735768 0.101019 7.542677 -C 1.787344 2.632886 0.045491 -C 21.195181 0.231442 0.045491 -H 1.939772 1.959874 9.112105 -H 21.701813 0.699955 9.112105 -H 1.744820 3.500479 9.359705 -H 8.280586 20.864992 9.359705 -C 0.512480 2.359165 0.743447 -C 9.885163 20.368411 0.743447 -H 10.282500 19.757023 0.103004 -H -0.215666 2.320756 0.103004 -H 10.599297 20.837557 1.201603 -H 0.561705 1.506134 1.201603 -C -0.975369 3.264745 2.332371 -C 9.844832 18.627106 2.332371 -H -1.011313 2.415724 2.801250 -H 10.598078 19.020488 2.801250 -H -1.688772 3.280995 1.675356 -H 10.187460 18.001156 1.675356 -C -1.152166 4.378412 3.294499 -C 8.968767 17.917162 3.294499 -H -1.056396 5.228911 2.838293 -H 8.184329 17.574852 2.838293 -H -2.039685 4.340425 3.685394 -H 9.445424 17.167541 3.685394 -C -0.325204 5.231232 5.325007 -C 7.816722 18.206922 5.325007 -H -1.198955 5.146604 5.739297 -H 8.326887 17.492546 5.739297 -H -0.249782 6.123728 4.950684 -H 7.006088 17.825992 4.950684 -C 0.735822 5.012171 6.328077 -C 7.475922 19.235328 6.328077 -H 7.095034 18.815777 7.114740 -H 0.562924 5.551804 7.114740 -H 8.275712 19.712705 6.595172 -H 0.749347 4.080844 6.595172 -C 3.055142 5.219203 6.676080 -C 18.321467 0.036229 6.676080 -H 3.119232 4.293996 6.957797 -H 19.090675 0.554336 6.957797 -H 2.901129 5.769177 7.460794 -H 5.737681 20.732036 7.460794 -C 4.312947 5.636854 5.999569 -C 17.330867 0.916695 5.999569 -H 4.238988 6.558474 5.703230 -H 16.569702 0.391834 5.703230 -H 5.059004 5.572909 6.616617 -H 17.013217 1.594772 6.616617 -C 5.771310 4.971862 4.262475 -C 17.177586 2.512170 4.262475 -H 6.477280 5.024200 4.926314 -H 16.779275 3.097389 4.926314 -H 5.766924 5.798723 3.756554 -H 16.463696 2.094941 3.756554 -C 6.019630 3.841100 3.362735 -C 18.032694 3.292603 3.362735 -H 17.526185 4.028083 2.987437 -H 6.909830 3.912010 2.987437 -H 18.781188 3.660871 3.858908 -H 5.964313 3.008752 3.858908 -C 19.439517 3.115328 1.463825 -C 5.162694 2.711394 1.463825 -H 20.201901 3.416062 1.983393 -H 5.041946 1.900783 1.983393 -H 19.018786 3.895127 1.067081 -H 6.048386 2.685858 1.067081 -C 19.893024 2.192653 0.394469 -C 4.136881 2.779982 0.394469 -H 19.124791 1.807924 9.690162 -H 4.187813 3.637656 9.690162 -H 20.421222 2.677416 9.488378 -H 4.292599 2.080168 9.488378 -C 2.578362 0.954682 5.621347 -C 22.253040 1.755586 5.621347 -C 2.681443 0.147237 6.945125 -C 22.900768 2.248579 6.945125 diff --git a/cell2mol/test/error_2/BOFFOS/Ref_All_BOFFOS.xyz b/cell2mol/test/error_2/BOFFOS/Ref_All_BOFFOS.xyz deleted file mode 100644 index 89c590c95..000000000 --- a/cell2mol/test/error_2/BOFFOS/Ref_All_BOFFOS.xyz +++ /dev/null @@ -1,159 +0,0 @@ -157 -0 1 -K 14.586187 10.491940 6.840074 -Fe 12.185718 7.034021 9.395122 -O 15.035307 9.651149 4.231314 -O 12.463647 10.436225 4.932293 -O 12.009409 11.296853 7.554505 -O 14.172645 12.408199 9.007249 -O 16.712138 11.831210 8.150303 -O 17.233391 10.873925 5.554410 -O 15.732626 8.578424 8.425196 -O 13.601557 7.986663 8.331421 -O 13.773237 6.633253 10.549481 -O 15.920268 7.135743 10.792011 -O 18.384461 8.708004 9.464333 -O 8.947566 13.331506 4.549392 -O 18.450623 6.839229 2.009063 -C 13.971844 9.667611 3.294824 -H 14.124272 8.994599 2.613439 -H 13.929320 10.535203 2.861038 -C 12.696980 9.393890 3.992781 -H 11.968834 9.355480 3.352337 -H 12.746205 8.540859 4.450937 -C 11.209131 10.299470 5.581705 -H 11.173186 9.450449 6.050584 -H 10.495728 10.315720 4.924690 -C 11.032334 11.413137 6.543832 -H 11.128104 12.263635 6.087626 -H 10.144815 11.375149 6.934727 -C 11.859296 12.265956 8.574341 -H 10.985545 12.181329 8.988631 -H 11.934718 13.158452 8.200018 -C 12.920322 12.046895 9.577410 -H 12.747424 12.586529 10.364074 -H 12.933847 11.115568 9.844505 -C 15.239642 12.253927 9.925414 -H 15.303732 11.328720 10.207131 -H 15.085629 12.803902 10.710128 -C 16.497447 12.671579 9.248902 -H 16.423488 13.593198 8.952563 -H 17.243504 12.607633 9.865951 -C 17.955810 12.006586 7.511809 -H 18.661780 12.058924 8.175648 -H 17.951424 12.833448 7.005888 -C 18.204130 10.875825 6.612068 -H 19.094330 10.946735 6.236770 -H 18.148813 10.043476 7.108242 -C 17.347194 9.746118 4.713158 -H 17.226446 8.935507 5.232726 -H 18.232886 9.720582 4.316414 -C 16.321381 9.814707 3.643802 -H 16.372313 10.672380 3.191495 -H 16.477099 9.114892 2.989712 -C 14.762862 7.989407 8.870680 -C 14.865943 7.181961 10.194458 -H 17.555428 8.673815 9.211860 -H 8.921491 14.160900 4.240380 -H 17.579797 6.668919 1.900860 -H 18.538717 8.253842 10.176912 -H 8.113659 13.588977 4.679040 -H 18.422964 6.795544 2.895156 -K 7.989620 7.386038 6.840074 -K 13.977693 3.226195 6.840074 -O 8.493206 8.195384 4.231314 -O 13.024987 3.257640 4.231314 -O 9.099141 5.575723 4.932293 -O 14.990712 5.092226 4.932293 -O 8.580934 4.752027 7.554505 -O 15.963157 5.055294 7.554505 -O 6.536862 6.069771 9.007249 -O 15.843993 2.626203 9.007249 -O 5.766802 8.557531 8.150303 -O 14.074560 0.715431 8.150303 -O 6.335209 9.487592 5.554410 -O 12.984900 0.742656 5.554410 -O 9.073553 9.335642 8.425196 -O 11.747320 3.190107 8.425196 -O 10.651568 7.785963 8.331421 -O 12.300375 5.331547 8.331421 -O 11.737816 8.611347 10.549481 -O 11.042447 5.859574 10.549481 -O 10.404101 3.748945 10.792011 -O 10.229131 10.219485 10.792011 -C 9.010681 7.266167 3.294824 -C 13.570974 4.170396 3.294824 -H 9.517313 7.734679 2.613439 -H 12.911915 4.374895 2.613439 -H 8.280586 6.795544 2.861038 -H 14.343593 3.773426 2.861038 -C 9.885163 6.298963 3.992781 -C 13.971357 5.411321 3.992781 -H 14.302166 6.061119 3.352337 -H 10.282500 5.687575 3.352337 -H 13.207998 5.795206 4.450937 -H 10.599297 6.768108 4.450937 -C 9.844832 4.557657 5.581705 -C 15.499537 6.247046 5.581705 -H 10.598078 4.951039 6.050584 -H 14.782235 6.702685 6.050584 -H 10.187460 3.931707 4.924690 -H 15.870311 6.856746 4.924690 -C 8.968767 3.847713 6.543832 -C 16.552400 5.843323 6.543832 -H 8.184329 3.505403 6.087626 -H 17.241067 5.335135 6.087626 -H 9.445424 3.098093 6.934727 -H 16.963261 6.630931 6.934727 -C 7.816722 4.137473 8.574341 -C 16.877482 4.700744 8.574341 -H 8.326887 3.423097 8.988631 -H 17.241067 5.499748 8.988631 -H 7.006088 3.756543 8.200018 -H 17.612695 4.189178 8.200018 -C 7.475922 5.165879 9.577410 -C 16.157256 3.891398 9.577410 -H 16.711042 3.771316 10.364074 -H 7.095034 4.746329 10.364074 -H 15.343941 4.345349 9.844505 -H 8.275712 5.643256 9.844505 -C 6.136967 7.070953 9.925414 -C 15.176891 1.779293 9.925414 -H 6.906175 7.589061 10.207131 -H 14.343593 2.186392 10.207131 -H 5.737681 6.662587 10.710128 -H 15.730189 1.637684 10.710128 -C 5.146367 7.951419 9.248902 -C 14.909685 0.481175 9.248902 -H 4.385202 7.426559 8.952563 -H 15.744811 0.084417 8.952563 -H 4.828717 8.629496 9.865951 -H 14.481278 -0.132956 9.865951 -C 4.993086 9.546895 7.511809 -C 13.604603 -0.449308 7.511809 -H 4.594775 10.132113 8.175648 -H 13.296945 -1.086865 8.175648 -H 4.279196 9.129665 7.005888 -H 14.322880 -0.858940 7.005888 -C 5.848194 10.327327 6.612068 -C 12.501175 -0.098979 6.612068 -H 12.117485 -0.905369 6.236770 -H 5.341685 11.062808 6.236770 -H 11.807999 0.365102 7.108242 -H 6.596688 10.695595 7.108242 -C 11.951289 1.208003 4.713158 -C 7.255017 10.150052 4.713158 -H 11.309653 1.717880 5.232726 -H 8.017401 10.450787 5.232726 -H 11.486328 0.453740 4.316414 -H 6.834286 10.929851 4.316414 -C 12.523595 2.062089 3.643802 -C 7.708524 9.227378 3.643802 -H 13.240896 1.589144 3.191495 -H 6.940291 8.842649 3.191495 -H 11.839679 2.277140 2.989712 -H 8.236722 9.712140 2.989712 -C 10.068540 8.790310 8.870680 -C 11.722098 4.324456 8.870680 -C 10.716268 9.283304 10.194458 -C 10.971289 4.638908 10.194458 diff --git a/cell2mol/test/error_2/BOFFOS/Ref_All_frac_BOFFOS.xyz b/cell2mol/test/error_2/BOFFOS/Ref_All_frac_BOFFOS.xyz deleted file mode 100644 index 078db414c..000000000 --- a/cell2mol/test/error_2/BOFFOS/Ref_All_frac_BOFFOS.xyz +++ /dev/null @@ -1,159 +0,0 @@ -157 -0 1 -K 0.847130 0.497150 0.701690 -Fe 0.666700 0.333300 0.963800 -O 0.845640 0.457310 0.434070 -O 0.758710 0.494510 0.505980 -O 0.760460 0.535290 0.774980 -O 0.875560 0.587950 0.924010 -O 0.966100 0.560610 0.836100 -O 0.964810 0.515250 0.569800 -O 0.848840 0.406480 0.864300 -O 0.747370 0.378440 0.854680 -O 0.722350 0.314310 1.082220 -O 0.822360 0.338120 1.107100 -O 0.960730 0.412620 0.970900 -O 0.683020 0.631700 0.466700 -O 0.919170 0.324070 0.206100 -C 0.802390 0.458090 0.338000 -H 0.792700 0.426200 0.268100 -H 0.821200 0.499200 0.293500 -C 0.743590 0.445120 0.409600 -H 0.712800 0.443300 0.343900 -H 0.725400 0.404700 0.456600 -C 0.703990 0.488030 0.572600 -H 0.682400 0.447800 0.620700 -H 0.675100 0.488800 0.505200 -C 0.723120 0.540800 0.671300 -H 0.747200 0.581100 0.624500 -H 0.685800 0.539000 0.711400 -C 0.777260 0.581210 0.879600 -H 0.739400 0.577200 0.922100 -H 0.801500 0.623500 0.841200 -C 0.815610 0.570830 0.982500 -H 0.821300 0.596400 1.063200 -H 0.794100 0.526700 1.009900 -C 0.915690 0.580640 1.018200 -H 0.896400 0.536800 1.047100 -H 0.922400 0.606700 1.098700 -C 0.977200 0.600430 0.948800 -H 0.996000 0.644100 0.918400 -H 1.006300 0.597400 1.012100 -C 1.021290 0.568920 0.770600 -H 1.051500 0.571400 0.838700 -H 1.040700 0.608100 0.718700 -C 1.004690 0.515340 0.678300 -H 1.042900 0.518700 0.639800 -H 0.982700 0.475900 0.729200 -C 0.942760 0.461810 0.483500 -H 0.918600 0.423400 0.536800 -H 0.978500 0.460600 0.442800 -C 0.902290 0.465060 0.373800 -H 0.924700 0.505700 0.327400 -H 0.892100 0.431900 0.306700 -C 0.795090 0.378570 0.910000 -C 0.780190 0.340310 1.045800 -H 0.925900 0.411000 0.945000 -H 0.701600 0.671000 0.435000 -H 0.879400 0.316000 0.195000 -H 0.956300 0.391100 1.044000 -H 0.654900 0.643900 0.480000 -H 0.917000 0.322000 0.297000 -K 0.502850 0.349980 0.701690 -K 0.650020 0.152870 0.701690 -O 0.542690 0.388330 0.434070 -O 0.611670 0.154360 0.434070 -O 0.505490 0.264200 0.505980 -O 0.735800 0.241290 0.505980 -O 0.464710 0.225170 0.774980 -O 0.774830 0.239540 0.774980 -O 0.412050 0.287610 0.924010 -O 0.712390 0.124440 0.924010 -O 0.439390 0.405490 0.836100 -O 0.594510 0.033900 0.836100 -O 0.484750 0.449560 0.569800 -O 0.550440 0.035190 0.569800 -O 0.593520 0.442360 0.864300 -O 0.557640 0.151160 0.864300 -O 0.621560 0.368930 0.854680 -O 0.631070 0.252630 0.854680 -O 0.685690 0.408040 1.082220 -O 0.591960 0.277650 1.082220 -O 0.515760 0.177640 1.107100 -O 0.661880 0.484240 1.107100 -C 0.541910 0.344300 0.338000 -C 0.655700 0.197610 0.338000 -H 0.573800 0.366500 0.268100 -H 0.633500 0.207300 0.268100 -H 0.500800 0.322000 0.293500 -H 0.678000 0.178800 0.293500 -C 0.554880 0.298470 0.409600 -C 0.701530 0.256410 0.409600 -H 0.730500 0.287200 0.343900 -H 0.556700 0.269500 0.343900 -H 0.679300 0.274600 0.456600 -H 0.595300 0.320700 0.456600 -C 0.511970 0.215960 0.572600 -C 0.784040 0.296010 0.572600 -H 0.552200 0.234600 0.620700 -H 0.765400 0.317600 0.620700 -H 0.511200 0.186300 0.505200 -H 0.813700 0.324900 0.505200 -C 0.459200 0.182320 0.671300 -C 0.817680 0.276880 0.671300 -H 0.418900 0.166100 0.624500 -H 0.833900 0.252800 0.624500 -H 0.461000 0.146800 0.711400 -H 0.853200 0.314200 0.711400 -C 0.418790 0.196050 0.879600 -C 0.803950 0.222740 0.879600 -H 0.422800 0.162200 0.922100 -H 0.837800 0.260600 0.922100 -H 0.376500 0.178000 0.841200 -H 0.822000 0.198500 0.841200 -C 0.429170 0.244780 0.982500 -C 0.755220 0.184390 0.982500 -H 0.775100 0.178700 1.063200 -H 0.403600 0.224900 1.063200 -H 0.732600 0.205900 1.009900 -H 0.473300 0.267400 1.009900 -C 0.419360 0.335050 1.018200 -C 0.664950 0.084310 1.018200 -H 0.463200 0.359600 1.047100 -H 0.640400 0.103600 1.047100 -H 0.393300 0.315700 1.098700 -H 0.684300 0.077600 1.098700 -C 0.399570 0.376770 0.948800 -C 0.623230 0.022800 0.948800 -H 0.355900 0.351900 0.918400 -H 0.648100 0.004000 0.918400 -H 0.402600 0.408900 1.012100 -H 0.591100 -0.006300 1.012100 -C 0.431080 0.452370 0.770600 -C 0.547630 -0.021290 0.770600 -H 0.428600 0.480100 0.838700 -H 0.519900 -0.051500 0.838700 -H 0.391900 0.432600 0.718700 -H 0.567400 -0.040700 0.718700 -C 0.484660 0.489350 0.678300 -C 0.510650 -0.004690 0.678300 -H 0.475800 -0.042900 0.639800 -H 0.481300 0.524200 0.639800 -H 0.493200 0.017300 0.729200 -H 0.524100 0.506800 0.729200 -C 0.519050 0.057240 0.483500 -C 0.538190 0.480950 0.483500 -H 0.504800 0.081400 0.536800 -H 0.576600 0.495200 0.536800 -H 0.482100 0.021500 0.442800 -H 0.539400 0.517900 0.442800 -C 0.562770 0.097710 0.373800 -C 0.534940 0.437230 0.373800 -H 0.581000 0.075300 0.327400 -H 0.494300 0.419000 0.327400 -H 0.539800 0.107900 0.306700 -H 0.568100 0.460200 0.306700 -C 0.621430 0.416520 0.910000 -C 0.583480 0.204910 0.910000 -C 0.659690 0.439880 1.045800 -C 0.560120 0.219810 1.045800 diff --git a/cell2mol/test/error_2/BOFFOS/Ref_Cell_BOFFOS.cell b/cell2mol/test/error_2/BOFFOS/Ref_Cell_BOFFOS.cell deleted file mode 100644 index 8b24137e2..000000000 Binary files a/cell2mol/test/error_2/BOFFOS/Ref_Cell_BOFFOS.cell and /dev/null differ diff --git a/cell2mol/test/error_2/BOFFOS/Ref_Molecule_BOFFOS_0.xyz b/cell2mol/test/error_2/BOFFOS/Ref_Molecule_BOFFOS_0.xyz deleted file mode 100644 index d1a12794a..000000000 --- a/cell2mol/test/error_2/BOFFOS/Ref_Molecule_BOFFOS_0.xyz +++ /dev/null @@ -1,21 +0,0 @@ -19 -0 1 -Fe 12.185718 7.034021 9.395122 -O 15.732626 8.578424 8.425196 -O 13.601557 7.986663 8.331421 -O 13.773237 6.633253 10.549481 -O 15.920268 7.135743 10.792011 -C 14.762862 7.989407 8.870680 -C 14.865943 7.181961 10.194458 -O 9.073553 9.335642 8.425196 -O 11.747320 3.190107 8.425196 -O 10.651568 7.785963 8.331421 -O 12.300375 5.331547 8.331421 -O 11.737816 8.611347 10.549481 -O 11.042447 5.859574 10.549481 -O 10.404101 3.748945 10.792011 -O 10.229131 10.219485 10.792011 -C 10.068540 8.790310 8.870680 -C 11.722098 4.324456 8.870680 -C 10.716268 9.283304 10.194458 -C 10.971289 4.638908 10.194458 diff --git a/cell2mol/test/error_2/BOFFOS/Ref_Molecule_BOFFOS_1.xyz b/cell2mol/test/error_2/BOFFOS/Ref_Molecule_BOFFOS_1.xyz deleted file mode 100644 index fa589ba68..000000000 --- a/cell2mol/test/error_2/BOFFOS/Ref_Molecule_BOFFOS_1.xyz +++ /dev/null @@ -1,44 +0,0 @@ -42 -0 1 -O 15.035307 9.651149 4.231314 -O 12.463647 10.436225 4.932293 -O 12.009409 11.296853 7.554505 -O 14.172645 12.408199 9.007249 -O 16.712138 11.831210 8.150303 -O 17.233391 10.873925 5.554410 -C 13.971844 9.667611 3.294824 -H 14.124272 8.994599 2.613439 -H 13.929320 10.535203 2.861038 -C 12.696980 9.393890 3.992781 -H 11.968834 9.355480 3.352337 -H 12.746205 8.540859 4.450937 -C 11.209131 10.299470 5.581705 -H 11.173186 9.450449 6.050584 -H 10.495728 10.315720 4.924690 -C 11.032334 11.413137 6.543832 -H 11.128104 12.263635 6.087626 -H 10.144815 11.375149 6.934727 -C 11.859296 12.265956 8.574341 -H 10.985545 12.181329 8.988631 -H 11.934718 13.158452 8.200018 -C 12.920322 12.046895 9.577410 -H 12.747424 12.586529 10.364074 -H 12.933847 11.115568 9.844505 -C 15.239642 12.253927 9.925414 -H 15.303732 11.328720 10.207131 -H 15.085629 12.803902 10.710128 -C 16.497447 12.671579 9.248902 -H 16.423488 13.593198 8.952563 -H 17.243504 12.607633 9.865951 -C 17.955810 12.006586 7.511809 -H 18.661780 12.058924 8.175648 -H 17.951424 12.833448 7.005888 -C 18.204130 10.875825 6.612068 -H 19.094330 10.946735 6.236770 -H 18.148813 10.043476 7.108242 -C 17.347194 9.746118 4.713158 -H 17.226446 8.935507 5.232726 -H 18.232886 9.720582 4.316414 -C 16.321381 9.814707 3.643802 -H 16.372313 10.672380 3.191495 -H 16.477099 9.114892 2.989712 diff --git a/cell2mol/test/error_2/BOFFOS/Ref_Molecule_BOFFOS_2.xyz b/cell2mol/test/error_2/BOFFOS/Ref_Molecule_BOFFOS_2.xyz deleted file mode 100644 index 405380556..000000000 --- a/cell2mol/test/error_2/BOFFOS/Ref_Molecule_BOFFOS_2.xyz +++ /dev/null @@ -1,5 +0,0 @@ -3 -0 1 -O 18.384461 8.708004 9.464333 -H 17.555428 8.673815 9.211860 -H 18.538717 8.253842 10.176912 diff --git a/cell2mol/test/error_2/BOFFOS/Ref_Molecule_BOFFOS_3.xyz b/cell2mol/test/error_2/BOFFOS/Ref_Molecule_BOFFOS_3.xyz deleted file mode 100644 index bd1627741..000000000 --- a/cell2mol/test/error_2/BOFFOS/Ref_Molecule_BOFFOS_3.xyz +++ /dev/null @@ -1,5 +0,0 @@ -3 -0 1 -O 8.947566 13.331506 4.549392 -H 8.921491 14.160900 4.240380 -H 8.113659 13.588977 4.679040 diff --git a/cell2mol/test/error_2/BOFFOS/Ref_Molecule_BOFFOS_4.xyz b/cell2mol/test/error_2/BOFFOS/Ref_Molecule_BOFFOS_4.xyz deleted file mode 100644 index 713086ee3..000000000 --- a/cell2mol/test/error_2/BOFFOS/Ref_Molecule_BOFFOS_4.xyz +++ /dev/null @@ -1,5 +0,0 @@ -3 -0 1 -O 18.450623 6.839229 2.009063 -H 17.579797 6.668919 1.900860 -H 18.422964 6.795544 2.895156 diff --git a/cell2mol/test/error_2/BOFFOS/Ref_Molecule_BOFFOS_5.xyz b/cell2mol/test/error_2/BOFFOS/Ref_Molecule_BOFFOS_5.xyz deleted file mode 100644 index a8c30ce26..000000000 --- a/cell2mol/test/error_2/BOFFOS/Ref_Molecule_BOFFOS_5.xyz +++ /dev/null @@ -1,44 +0,0 @@ -42 -0 1 -O 8.493206 8.195384 4.231314 -O 9.099141 5.575723 4.932293 -O 8.580934 4.752027 7.554505 -O 6.536862 6.069771 9.007249 -O 5.766802 8.557531 8.150303 -O 6.335209 9.487592 5.554410 -C 9.010681 7.266167 3.294824 -H 9.517313 7.734679 2.613439 -H 8.280586 6.795544 2.861038 -C 9.885163 6.298963 3.992781 -H 10.282500 5.687575 3.352337 -H 10.599297 6.768108 4.450937 -C 9.844832 4.557657 5.581705 -H 10.598078 4.951039 6.050584 -H 10.187460 3.931707 4.924690 -C 8.968767 3.847713 6.543832 -H 8.184329 3.505403 6.087626 -H 9.445424 3.098093 6.934727 -C 7.816722 4.137473 8.574341 -H 8.326887 3.423097 8.988631 -H 7.006088 3.756543 8.200018 -C 7.475922 5.165879 9.577410 -H 7.095034 4.746329 10.364074 -H 8.275712 5.643256 9.844505 -C 6.136967 7.070953 9.925414 -H 6.906175 7.589061 10.207131 -H 5.737681 6.662587 10.710128 -C 5.146367 7.951419 9.248902 -H 4.385202 7.426559 8.952563 -H 4.828717 8.629496 9.865951 -C 4.993086 9.546895 7.511809 -H 4.594775 10.132113 8.175648 -H 4.279196 9.129665 7.005888 -C 5.848194 10.327327 6.612068 -H 5.341685 11.062808 6.236770 -H 6.596688 10.695595 7.108242 -C 7.255017 10.150052 4.713158 -H 8.017401 10.450787 5.232726 -H 6.834286 10.929851 4.316414 -C 7.708524 9.227378 3.643802 -H 6.940291 8.842649 3.191495 -H 8.236722 9.712140 2.989712 diff --git a/cell2mol/test/error_2/BOFFOS/Ref_Molecule_BOFFOS_6.xyz b/cell2mol/test/error_2/BOFFOS/Ref_Molecule_BOFFOS_6.xyz deleted file mode 100644 index 5d041036b..000000000 --- a/cell2mol/test/error_2/BOFFOS/Ref_Molecule_BOFFOS_6.xyz +++ /dev/null @@ -1,44 +0,0 @@ -42 -0 1 -O 13.024987 3.257640 4.231314 -O 14.990712 5.092226 4.932293 -O 15.963157 5.055294 7.554505 -O 15.843993 2.626203 9.007249 -O 14.074560 0.715431 8.150303 -O 12.984900 0.742656 5.554410 -C 13.570974 4.170396 3.294824 -H 12.911915 4.374895 2.613439 -H 14.343593 3.773426 2.861038 -C 13.971357 5.411321 3.992781 -H 14.302166 6.061119 3.352337 -H 13.207998 5.795206 4.450937 -C 15.499537 6.247046 5.581705 -H 14.782235 6.702685 6.050584 -H 15.870311 6.856746 4.924690 -C 16.552400 5.843323 6.543832 -H 17.241067 5.335135 6.087626 -H 16.963261 6.630931 6.934727 -C 16.877482 4.700744 8.574341 -H 17.241067 5.499748 8.988631 -H 17.612695 4.189178 8.200018 -C 16.157256 3.891398 9.577410 -H 16.711042 3.771316 10.364074 -H 15.343941 4.345349 9.844505 -C 15.176891 1.779293 9.925414 -H 14.343593 2.186392 10.207131 -H 15.730189 1.637684 10.710128 -C 14.909685 0.481175 9.248902 -H 15.744811 0.084417 8.952563 -H 14.481278 -0.132956 9.865951 -C 13.604603 -0.449308 7.511809 -H 13.296945 -1.086865 8.175648 -H 14.322880 -0.858940 7.005888 -C 12.501175 -0.098979 6.612068 -H 12.117485 -0.905369 6.236770 -H 11.807999 0.365102 7.108242 -C 11.951289 1.208003 4.713158 -H 11.309653 1.717880 5.232726 -H 11.486328 0.453740 4.316414 -C 12.523595 2.062089 3.643802 -H 13.240896 1.589144 3.191495 -H 11.839679 2.277140 2.989712 diff --git a/cell2mol/test/error_2/BOFFOS/Ref_Molecule_BOFFOS_7.xyz b/cell2mol/test/error_2/BOFFOS/Ref_Molecule_BOFFOS_7.xyz deleted file mode 100644 index 259aa25c3..000000000 --- a/cell2mol/test/error_2/BOFFOS/Ref_Molecule_BOFFOS_7.xyz +++ /dev/null @@ -1,3 +0,0 @@ -1 -0 1 -K 7.989620 7.386038 6.840074 diff --git a/cell2mol/test/error_2/BOFFOS/Ref_Molecule_BOFFOS_8.xyz b/cell2mol/test/error_2/BOFFOS/Ref_Molecule_BOFFOS_8.xyz deleted file mode 100644 index a445ef748..000000000 --- a/cell2mol/test/error_2/BOFFOS/Ref_Molecule_BOFFOS_8.xyz +++ /dev/null @@ -1,3 +0,0 @@ -1 -0 1 -K 13.977693 3.226195 6.840074 diff --git a/cell2mol/test/error_2/BOFFOS/Ref_Molecule_BOFFOS_9.xyz b/cell2mol/test/error_2/BOFFOS/Ref_Molecule_BOFFOS_9.xyz deleted file mode 100644 index a9d1a436b..000000000 --- a/cell2mol/test/error_2/BOFFOS/Ref_Molecule_BOFFOS_9.xyz +++ /dev/null @@ -1,3 +0,0 @@ -1 -0 1 -K 14.586187 10.491940 6.840074 diff --git a/cell2mol/test/error_2/BOFFOS/Ref_Molecule_BOFFOS_frac_0.xyz b/cell2mol/test/error_2/BOFFOS/Ref_Molecule_BOFFOS_frac_0.xyz deleted file mode 100644 index cbfea2ff5..000000000 --- a/cell2mol/test/error_2/BOFFOS/Ref_Molecule_BOFFOS_frac_0.xyz +++ /dev/null @@ -1,21 +0,0 @@ -19 -0 1 -Fe 1.541208 0.963742 0.386450 -O 1.609775 0.843585 0.139541 -O 1.499176 0.860171 0.204693 -O 1.734851 1.028105 0.483704 -O 1.861466 1.022738 0.437097 -C 1.609523 0.888090 0.232387 -C 1.750208 0.988313 0.398879 -O 1.294241 1.032424 0.266234 -O 1.420935 0.716891 0.455074 -O 1.359394 0.921826 0.282820 -O 1.437521 0.782044 0.344476 -O 1.638405 1.157501 0.450755 -O 1.605455 1.061054 0.580150 -O 1.600088 1.014447 0.706765 -O 1.591797 1.284116 0.445387 -C 1.387088 1.032173 0.310739 -C 1.465440 0.809737 0.454823 -C 1.553580 1.172857 0.410963 -C 1.565664 0.976229 0.595507 diff --git a/cell2mol/test/error_2/BOFFOS/Ref_Molecule_BOFFOS_frac_1.xyz b/cell2mol/test/error_2/BOFFOS/Ref_Molecule_BOFFOS_frac_1.xyz deleted file mode 100644 index ac3243d5d..000000000 --- a/cell2mol/test/error_2/BOFFOS/Ref_Molecule_BOFFOS_frac_1.xyz +++ /dev/null @@ -1,44 +0,0 @@ -42 -0 1 -O 1.146503 0.473896 -0.318189 -O 1.096557 0.638950 -0.217567 -O 1.344034 0.954028 0.026878 -O 1.595567 1.097411 0.079052 -O 1.627988 0.925659 -0.045346 -O 1.386387 0.607726 -0.284713 -C 1.000042 0.403697 -0.389738 -H 0.937364 0.302568 -0.435632 -H 0.953527 0.395806 -0.468833 -C 1.011234 0.494268 -0.276702 -H 0.911031 0.444243 -0.323575 -H 1.060566 0.505097 -0.195864 -C 1.103733 0.729680 -0.115613 -H 1.150130 0.743791 -0.031821 -H 1.002530 0.679848 -0.166778 -C 1.194056 0.878269 -0.058425 -H 1.151794 0.864100 -0.142394 -H 1.192102 0.937837 0.004261 -C 1.441541 1.101972 0.095287 -H 1.442639 1.161700 0.161961 -H 1.406715 1.098410 0.018476 -C 1.594716 1.170745 0.182039 -H 1.667224 1.277686 0.244691 -H 1.622757 1.159607 0.247336 -C 1.740315 1.159991 0.154293 -H 1.772252 1.149406 0.219642 -H 1.813517 1.266709 0.215874 -C 1.730515 1.077930 0.037955 -H 1.696610 1.087102 -0.028512 -H 1.829166 1.120931 0.086203 -C 1.621418 0.837890 -0.147508 -H 1.722970 0.891412 -0.098282 -H 1.569310 0.820025 -0.233235 -C 1.540884 0.693305 -0.199290 -H 1.544566 0.636625 -0.261790 -H 1.589163 0.711360 -0.112923 -C 1.305479 0.472450 -0.327429 -H 1.353058 0.495346 -0.238004 -H 1.306747 0.409718 -0.388065 -C 1.147172 0.389868 -0.415640 -H 1.103186 0.377456 -0.498442 -H 1.087451 0.290361 -0.457712 diff --git a/cell2mol/test/error_2/BOFFOS/Ref_Molecule_BOFFOS_frac_2.xyz b/cell2mol/test/error_2/BOFFOS/Ref_Molecule_BOFFOS_frac_2.xyz deleted file mode 100644 index 3fec01e78..000000000 --- a/cell2mol/test/error_2/BOFFOS/Ref_Molecule_BOFFOS_frac_2.xyz +++ /dev/null @@ -1,5 +0,0 @@ -3 -0 1 -O 1.842029 0.892675 0.177996 -H 1.776846 0.885013 0.173140 -H 1.922438 0.943483 0.266078 diff --git a/cell2mol/test/error_2/BOFFOS/Ref_Molecule_BOFFOS_frac_3.xyz b/cell2mol/test/error_2/BOFFOS/Ref_Molecule_BOFFOS_frac_3.xyz deleted file mode 100644 index eabf61f8b..000000000 --- a/cell2mol/test/error_2/BOFFOS/Ref_Molecule_BOFFOS_frac_3.xyz +++ /dev/null @@ -1,5 +0,0 @@ -3 -0 1 -O 0.890671 0.801783 -0.292354 -H 0.857736 0.804735 -0.357471 -H 0.864458 0.845405 -0.269863 diff --git a/cell2mol/test/error_2/BOFFOS/Ref_Molecule_BOFFOS_frac_4.xyz b/cell2mol/test/error_2/BOFFOS/Ref_Molecule_BOFFOS_frac_4.xyz deleted file mode 100644 index b554eef0a..000000000 --- a/cell2mol/test/error_2/BOFFOS/Ref_Molecule_BOFFOS_frac_4.xyz +++ /dev/null @@ -1,5 +0,0 @@ -3 -0 1 -O 1.080364 0.049621 -0.511685 -H 1.028001 0.052164 -0.495165 -H 1.169954 0.139383 -0.418337 diff --git a/cell2mol/test/error_2/BOFFOS/Ref_Molecule_BOFFOS_frac_5.xyz b/cell2mol/test/error_2/BOFFOS/Ref_Molecule_BOFFOS_frac_5.xyz deleted file mode 100644 index 4a69592ee..000000000 --- a/cell2mol/test/error_2/BOFFOS/Ref_Molecule_BOFFOS_frac_5.xyz +++ /dev/null @@ -1,44 +0,0 @@ -42 -0 1 -O 0.836512 0.569153 -0.103455 -O 0.937134 0.519207 0.061599 -O 1.181579 0.766683 0.376678 -O 1.233753 1.018216 0.520061 -O 1.109354 1.050638 0.348308 -O 0.869988 0.809037 0.030376 -C 0.764962 0.422692 -0.173654 -H 0.719068 0.360014 -0.274782 -H 0.685867 0.376177 -0.181544 -C 0.877999 0.433883 -0.083082 -H 0.831126 0.333681 -0.133107 -H 0.958837 0.483216 -0.072253 -C 1.039087 0.526383 0.152329 -H 1.122879 0.572780 0.166441 -H 0.987923 0.425179 0.102498 -C 1.096276 0.616706 0.300918 -H 1.012306 0.574444 0.286750 -H 1.158962 0.614752 0.360487 -C 1.249988 0.864191 0.524622 -H 1.316661 0.865289 0.584350 -H 1.173176 0.829364 0.521059 -C 1.336739 1.017366 0.593395 -H 1.399391 1.089874 0.700335 -H 1.402036 1.045407 0.582257 -C 1.308994 1.162965 0.582641 -H 1.374342 1.194902 0.572056 -H 1.370574 1.236167 0.689359 -C 1.192655 1.153165 0.500580 -H 1.126188 1.119260 0.509751 -H 1.240904 1.251816 0.543580 -C 1.007192 1.044068 0.260540 -H 1.056419 1.145619 0.314062 -H 0.921465 0.991960 0.242675 -C 0.955411 0.963534 0.115955 -H 0.892910 0.967215 0.059274 -H 1.041777 1.011813 0.134010 -C 0.827272 0.728129 -0.104901 -H 0.916696 0.775708 -0.082004 -H 0.766636 0.729397 -0.167632 -C 0.739061 0.569822 -0.187483 -H 0.656259 0.525835 -0.199894 -H 0.696989 0.510101 -0.286989 diff --git a/cell2mol/test/error_2/BOFFOS/Ref_Molecule_BOFFOS_frac_6.xyz b/cell2mol/test/error_2/BOFFOS/Ref_Molecule_BOFFOS_frac_6.xyz deleted file mode 100644 index 9b2ab1116..000000000 --- a/cell2mol/test/error_2/BOFFOS/Ref_Molecule_BOFFOS_frac_6.xyz +++ /dev/null @@ -1,44 +0,0 @@ -42 -0 1 -O 1.051246 0.259162 -0.008198 -O 1.216300 0.359783 -0.058143 -O 1.531378 0.604229 0.189333 -O 1.674762 0.656402 0.440866 -O 1.503009 0.532004 0.473287 -O 1.185076 0.292637 0.231686 -C 0.981047 0.187612 -0.154659 -H 0.879918 0.141718 -0.217336 -H 0.973157 0.108517 -0.201174 -C 1.071619 0.300648 -0.143467 -H 1.021594 0.253776 -0.243669 -H 1.082448 0.381487 -0.094134 -C 1.307030 0.461737 -0.050967 -H 1.321141 0.545529 -0.004570 -H 1.257199 0.410572 -0.152171 -C 1.455619 0.518926 0.039355 -H 1.441451 0.434956 -0.002907 -H 1.515187 0.581612 0.037401 -C 1.679323 0.672637 0.286840 -H 1.739051 0.739311 0.287938 -H 1.675760 0.595826 0.252014 -C 1.748095 0.759389 0.440016 -H 1.855036 0.822041 0.512523 -H 1.736957 0.824686 0.468057 -C 1.737342 0.731644 0.585615 -H 1.726757 0.796992 0.617551 -H 1.844059 0.793224 0.658817 -C 1.655280 0.615305 0.575814 -H 1.664452 0.548838 0.541910 -H 1.698281 0.663554 0.674466 -C 1.415240 0.429842 0.466717 -H 1.468762 0.479069 0.568269 -H 1.397375 0.344115 0.414610 -C 1.270656 0.378061 0.386184 -H 1.213975 0.315560 0.389865 -H 1.288710 0.464427 0.434463 -C 1.049800 0.249921 0.150779 -H 1.072697 0.339346 0.198357 -H 0.987068 0.189286 0.152046 -C 0.967218 0.161710 -0.007528 -H 0.954807 0.078908 -0.051515 -H 0.867711 0.119639 -0.067250 diff --git a/cell2mol/test/error_2/BOFFOS/Ref_Molecule_BOFFOS_frac_7.xyz b/cell2mol/test/error_2/BOFFOS/Ref_Molecule_BOFFOS_frac_7.xyz deleted file mode 100644 index 853dfbfda..000000000 --- a/cell2mol/test/error_2/BOFFOS/Ref_Molecule_BOFFOS_frac_7.xyz +++ /dev/null @@ -1,3 +0,0 @@ -1 -0 1 -K 1.080270 0.815492 0.209308 diff --git a/cell2mol/test/error_2/BOFFOS/Ref_Molecule_BOFFOS_frac_8.xyz b/cell2mol/test/error_2/BOFFOS/Ref_Molecule_BOFFOS_frac_8.xyz deleted file mode 100644 index 7d1e1bccc..000000000 --- a/cell2mol/test/error_2/BOFFOS/Ref_Molecule_BOFFOS_frac_8.xyz +++ /dev/null @@ -1,3 +0,0 @@ -1 -0 1 -K 1.364009 0.502920 0.238141 diff --git a/cell2mol/test/error_2/BOFFOS/Ref_Molecule_BOFFOS_frac_9.xyz b/cell2mol/test/error_2/BOFFOS/Ref_Molecule_BOFFOS_frac_9.xyz deleted file mode 100644 index d7c14086c..000000000 --- a/cell2mol/test/error_2/BOFFOS/Ref_Molecule_BOFFOS_frac_9.xyz +++ /dev/null @@ -1,3 +0,0 @@ -1 -0 1 -K 1.392842 0.786659 -0.074430 diff --git a/cell2mol/test/error_2/BOFFOS/Transformed_BOFFOS_0.xyz b/cell2mol/test/error_2/BOFFOS/Transformed_BOFFOS_0.xyz deleted file mode 100644 index 89c590c95..000000000 --- a/cell2mol/test/error_2/BOFFOS/Transformed_BOFFOS_0.xyz +++ /dev/null @@ -1,159 +0,0 @@ -157 -0 1 -K 14.586187 10.491940 6.840074 -Fe 12.185718 7.034021 9.395122 -O 15.035307 9.651149 4.231314 -O 12.463647 10.436225 4.932293 -O 12.009409 11.296853 7.554505 -O 14.172645 12.408199 9.007249 -O 16.712138 11.831210 8.150303 -O 17.233391 10.873925 5.554410 -O 15.732626 8.578424 8.425196 -O 13.601557 7.986663 8.331421 -O 13.773237 6.633253 10.549481 -O 15.920268 7.135743 10.792011 -O 18.384461 8.708004 9.464333 -O 8.947566 13.331506 4.549392 -O 18.450623 6.839229 2.009063 -C 13.971844 9.667611 3.294824 -H 14.124272 8.994599 2.613439 -H 13.929320 10.535203 2.861038 -C 12.696980 9.393890 3.992781 -H 11.968834 9.355480 3.352337 -H 12.746205 8.540859 4.450937 -C 11.209131 10.299470 5.581705 -H 11.173186 9.450449 6.050584 -H 10.495728 10.315720 4.924690 -C 11.032334 11.413137 6.543832 -H 11.128104 12.263635 6.087626 -H 10.144815 11.375149 6.934727 -C 11.859296 12.265956 8.574341 -H 10.985545 12.181329 8.988631 -H 11.934718 13.158452 8.200018 -C 12.920322 12.046895 9.577410 -H 12.747424 12.586529 10.364074 -H 12.933847 11.115568 9.844505 -C 15.239642 12.253927 9.925414 -H 15.303732 11.328720 10.207131 -H 15.085629 12.803902 10.710128 -C 16.497447 12.671579 9.248902 -H 16.423488 13.593198 8.952563 -H 17.243504 12.607633 9.865951 -C 17.955810 12.006586 7.511809 -H 18.661780 12.058924 8.175648 -H 17.951424 12.833448 7.005888 -C 18.204130 10.875825 6.612068 -H 19.094330 10.946735 6.236770 -H 18.148813 10.043476 7.108242 -C 17.347194 9.746118 4.713158 -H 17.226446 8.935507 5.232726 -H 18.232886 9.720582 4.316414 -C 16.321381 9.814707 3.643802 -H 16.372313 10.672380 3.191495 -H 16.477099 9.114892 2.989712 -C 14.762862 7.989407 8.870680 -C 14.865943 7.181961 10.194458 -H 17.555428 8.673815 9.211860 -H 8.921491 14.160900 4.240380 -H 17.579797 6.668919 1.900860 -H 18.538717 8.253842 10.176912 -H 8.113659 13.588977 4.679040 -H 18.422964 6.795544 2.895156 -K 7.989620 7.386038 6.840074 -K 13.977693 3.226195 6.840074 -O 8.493206 8.195384 4.231314 -O 13.024987 3.257640 4.231314 -O 9.099141 5.575723 4.932293 -O 14.990712 5.092226 4.932293 -O 8.580934 4.752027 7.554505 -O 15.963157 5.055294 7.554505 -O 6.536862 6.069771 9.007249 -O 15.843993 2.626203 9.007249 -O 5.766802 8.557531 8.150303 -O 14.074560 0.715431 8.150303 -O 6.335209 9.487592 5.554410 -O 12.984900 0.742656 5.554410 -O 9.073553 9.335642 8.425196 -O 11.747320 3.190107 8.425196 -O 10.651568 7.785963 8.331421 -O 12.300375 5.331547 8.331421 -O 11.737816 8.611347 10.549481 -O 11.042447 5.859574 10.549481 -O 10.404101 3.748945 10.792011 -O 10.229131 10.219485 10.792011 -C 9.010681 7.266167 3.294824 -C 13.570974 4.170396 3.294824 -H 9.517313 7.734679 2.613439 -H 12.911915 4.374895 2.613439 -H 8.280586 6.795544 2.861038 -H 14.343593 3.773426 2.861038 -C 9.885163 6.298963 3.992781 -C 13.971357 5.411321 3.992781 -H 14.302166 6.061119 3.352337 -H 10.282500 5.687575 3.352337 -H 13.207998 5.795206 4.450937 -H 10.599297 6.768108 4.450937 -C 9.844832 4.557657 5.581705 -C 15.499537 6.247046 5.581705 -H 10.598078 4.951039 6.050584 -H 14.782235 6.702685 6.050584 -H 10.187460 3.931707 4.924690 -H 15.870311 6.856746 4.924690 -C 8.968767 3.847713 6.543832 -C 16.552400 5.843323 6.543832 -H 8.184329 3.505403 6.087626 -H 17.241067 5.335135 6.087626 -H 9.445424 3.098093 6.934727 -H 16.963261 6.630931 6.934727 -C 7.816722 4.137473 8.574341 -C 16.877482 4.700744 8.574341 -H 8.326887 3.423097 8.988631 -H 17.241067 5.499748 8.988631 -H 7.006088 3.756543 8.200018 -H 17.612695 4.189178 8.200018 -C 7.475922 5.165879 9.577410 -C 16.157256 3.891398 9.577410 -H 16.711042 3.771316 10.364074 -H 7.095034 4.746329 10.364074 -H 15.343941 4.345349 9.844505 -H 8.275712 5.643256 9.844505 -C 6.136967 7.070953 9.925414 -C 15.176891 1.779293 9.925414 -H 6.906175 7.589061 10.207131 -H 14.343593 2.186392 10.207131 -H 5.737681 6.662587 10.710128 -H 15.730189 1.637684 10.710128 -C 5.146367 7.951419 9.248902 -C 14.909685 0.481175 9.248902 -H 4.385202 7.426559 8.952563 -H 15.744811 0.084417 8.952563 -H 4.828717 8.629496 9.865951 -H 14.481278 -0.132956 9.865951 -C 4.993086 9.546895 7.511809 -C 13.604603 -0.449308 7.511809 -H 4.594775 10.132113 8.175648 -H 13.296945 -1.086865 8.175648 -H 4.279196 9.129665 7.005888 -H 14.322880 -0.858940 7.005888 -C 5.848194 10.327327 6.612068 -C 12.501175 -0.098979 6.612068 -H 12.117485 -0.905369 6.236770 -H 5.341685 11.062808 6.236770 -H 11.807999 0.365102 7.108242 -H 6.596688 10.695595 7.108242 -C 11.951289 1.208003 4.713158 -C 7.255017 10.150052 4.713158 -H 11.309653 1.717880 5.232726 -H 8.017401 10.450787 5.232726 -H 11.486328 0.453740 4.316414 -H 6.834286 10.929851 4.316414 -C 12.523595 2.062089 3.643802 -C 7.708524 9.227378 3.643802 -H 13.240896 1.589144 3.191495 -H 6.940291 8.842649 3.191495 -H 11.839679 2.277140 2.989712 -H 8.236722 9.712140 2.989712 -C 10.068540 8.790310 8.870680 -C 11.722098 4.324456 8.870680 -C 10.716268 9.283304 10.194458 -C 10.971289 4.638908 10.194458 diff --git a/cell2mol/test/error_2/BOFFOS/Transformed_BOFFOS_1.xyz b/cell2mol/test/error_2/BOFFOS/Transformed_BOFFOS_1.xyz deleted file mode 100644 index 4ead71d63..000000000 --- a/cell2mol/test/error_2/BOFFOS/Transformed_BOFFOS_1.xyz +++ /dev/null @@ -1,159 +0,0 @@ -157 -0 1 -K -16.379380 7.386038 6.840074 -Fe -12.184500 7.036131 9.395122 -O -15.875794 8.195384 4.231314 -O -15.269859 5.575723 4.932293 -O -15.788066 4.752027 7.554505 -O -17.832138 6.069771 9.007249 -O -18.602198 8.557531 8.150303 -O -18.033791 9.487592 5.554410 -O -15.295447 9.335642 8.425196 -O -13.717432 7.785963 8.331421 -O -12.631184 8.611347 10.549481 -O -14.139869 10.219485 10.792011 -O -16.733583 11.567408 9.464333 -O -16.019206 1.083066 4.549392 -O -15.148258 12.559093 2.009063 -C -15.358319 7.266167 3.294824 -H -14.851687 7.734679 2.613439 -H -16.088414 6.795544 2.861038 -C -14.483837 6.298963 3.992781 -H -14.086500 5.687575 3.352337 -H -13.769703 6.768108 4.450937 -C -14.524168 4.557657 5.581705 -H -13.770922 4.951039 6.050584 -H -14.181540 3.931707 4.924690 -C -15.400233 3.847713 6.543832 -H -16.184671 3.505403 6.087626 -H -14.923576 3.098093 6.934727 -C -16.552278 4.137473 8.574341 -H -16.042113 3.423097 8.988631 -H -17.362913 3.756543 8.200018 -C -16.893078 5.165879 9.577410 -H -17.273966 4.746329 10.364074 -H -16.093288 5.643256 9.844505 -C -18.232033 7.070953 9.925414 -H -17.462825 7.589061 10.207131 -H -18.631319 6.662587 10.710128 -C -19.222633 7.951419 9.248902 -H -19.983798 7.426559 8.952563 -H -19.540283 8.629496 9.865951 -C -19.375914 9.546895 7.511809 -H -19.774225 10.132113 8.175648 -H -20.089804 9.129665 7.005888 -C -18.520806 10.327327 6.612068 -H -19.027315 11.062808 6.236770 -H -17.772312 10.695595 7.108242 -C -17.113983 10.150052 4.713158 -H -16.351599 10.450787 5.232726 -H -17.534714 10.929851 4.316414 -C -16.660476 9.227378 3.643802 -H -17.428709 8.842649 3.191495 -H -16.132278 9.712140 2.989712 -C -14.300460 8.790310 8.870680 -C -13.652732 9.283304 10.194458 -H -16.289458 10.866539 9.211860 -H -16.724445 0.645788 4.240380 -H -14.565351 11.890091 1.900860 -H -16.417395 11.928079 10.176912 -H -15.825229 0.232146 4.679040 -H -15.096595 12.556983 2.895156 -K -10.391307 3.226195 6.840074 -K -9.782813 10.491940 6.840074 -O -11.344013 3.257640 4.231314 -O -9.333693 9.651149 4.231314 -O -9.378288 5.092226 4.932293 -O -11.905353 10.436225 4.932293 -O -8.405843 5.055294 7.554505 -O -12.359591 11.296853 7.554505 -O -8.525007 2.626203 9.007249 -O -10.196355 12.408199 9.007249 -O -10.294440 0.715431 8.150303 -O -7.656862 11.831210 8.150303 -O -11.384100 0.742656 5.554410 -O -7.135609 10.873925 5.554410 -O -12.621680 3.190107 8.425196 -O -8.636374 8.578424 8.425196 -O -12.068625 5.331547 8.331421 -O -10.767443 7.986663 8.331421 -O -13.326553 5.859574 10.549481 -O -10.595763 6.633253 10.549481 -O -8.448732 7.135743 10.792011 -O -13.964899 3.748945 10.792011 -C -10.798026 4.170396 3.294824 -C -10.397156 9.667611 3.294824 -H -11.457085 4.374895 2.613439 -H -10.244728 8.994599 2.613439 -H -10.025407 3.773426 2.861038 -H -10.439680 10.535203 2.861038 -C -10.397643 5.411321 3.992781 -C -11.672020 9.393890 3.992781 -H -12.400166 9.355480 3.352337 -H -10.066834 6.061119 3.352337 -H -11.622795 8.540859 4.450937 -H -11.161002 5.795206 4.450937 -C -8.869463 6.247046 5.581705 -C -13.159869 10.299470 5.581705 -H -9.586765 6.702685 6.050584 -H -13.195813 9.450449 6.050584 -H -8.498689 6.856746 4.924690 -H -13.873272 10.315720 4.924690 -C -7.816600 5.843323 6.543832 -C -13.336666 11.413137 6.543832 -H -7.127933 5.335135 6.087626 -H -13.240896 12.263635 6.087626 -H -7.405739 6.630931 6.934727 -H -14.224185 11.375149 6.934727 -C -7.491518 4.700744 8.574341 -C -12.509704 12.265956 8.574341 -H -7.127932 5.499748 8.988631 -H -13.383455 12.181329 8.988631 -H -6.756305 4.189178 8.200018 -H -12.434282 13.158452 8.200018 -C -8.211744 3.891398 9.577410 -C -11.448678 12.046895 9.577410 -H -11.621576 12.586529 10.364074 -H -7.657958 3.771316 10.364074 -H -11.435153 11.115568 9.844505 -H -9.025059 4.345349 9.844505 -C -9.192109 1.779293 9.925414 -C -9.129358 12.253927 9.925414 -H -10.025407 2.186392 10.207131 -H -9.065268 11.328720 10.207131 -H -8.638810 1.637684 10.710128 -H -9.283371 12.803902 10.710128 -C -9.459315 0.481175 9.248902 -C -7.871553 12.671579 9.248902 -H -8.624189 0.084417 8.952563 -H -7.945512 13.593198 8.952563 -H -9.887722 -0.132956 9.865951 -H -7.125496 12.607633 9.865951 -C -10.764397 -0.449308 7.511809 -C -6.413190 12.006586 7.511809 -H -11.072055 -1.086865 8.175648 -H -5.707220 12.058924 8.175648 -H -10.046120 -0.858940 7.005888 -H -6.417576 12.833448 7.005888 -C -11.867825 -0.098979 6.612068 -C -6.164870 10.875825 6.612068 -H -5.274670 10.946735 6.236770 -H -12.251515 -0.905369 6.236770 -H -6.220187 10.043476 7.108242 -H -12.561001 0.365102 7.108242 -C -7.021806 9.746118 4.713158 -C -12.417711 1.208003 4.713158 -H -7.142554 8.935507 5.232726 -H -13.059347 1.717880 5.232726 -H -6.136114 9.720582 4.316414 -H -12.882672 0.453740 4.316414 -C -8.047619 9.814707 3.643802 -C -11.845405 2.062089 3.643802 -H -7.996687 10.672380 3.191495 -H -11.128104 1.589144 3.191495 -H -7.891901 9.114892 2.989712 -H -12.529321 2.277140 2.989712 -C -12.646902 4.324456 8.870680 -C -9.606138 7.989407 8.870680 -C -13.397711 4.638908 10.194458 -C -9.503057 7.181961 10.194458 diff --git a/cell2mol/test/error_2/BOFFOS/Transformed_BOFFOS_2.xyz b/cell2mol/test/error_2/BOFFOS/Transformed_BOFFOS_2.xyz deleted file mode 100644 index 7b46275fc..000000000 --- a/cell2mol/test/error_2/BOFFOS/Transformed_BOFFOS_2.xyz +++ /dev/null @@ -1,159 +0,0 @@ -157 -0 1 -K 1.793193 -17.877978 6.840074 -Fe -0.001218 -14.070152 9.395122 -O 0.840487 -17.846533 4.231314 -O 2.806212 -16.011947 4.932293 -O 3.778657 -16.048879 7.554505 -O 3.659493 -18.477970 9.007249 -O 1.890060 -20.388742 8.150303 -O 0.800400 -20.361517 5.554410 -O -0.437180 -17.914066 8.425196 -O 0.115875 -15.772626 8.331421 -O -1.142053 -15.244599 10.549481 -O -1.780399 -17.355228 10.792011 -O -1.650878 -20.275412 9.464333 -O 7.071640 -14.414572 4.549392 -O -3.302365 -19.398323 2.009063 -C 1.386474 -16.933777 3.294824 -H 0.727415 -16.729278 2.613439 -H 2.159093 -17.330747 2.861038 -C 1.786857 -15.692852 3.992781 -H 2.117666 -15.043055 3.352337 -H 1.023498 -15.308967 4.450937 -C 3.315037 -14.857127 5.581705 -H 2.597735 -14.401488 6.050584 -H 3.685811 -14.247427 4.924690 -C 4.367900 -15.260850 6.543832 -H 5.056567 -15.769038 6.087626 -H 4.778761 -14.473242 6.934727 -C 4.692982 -16.403430 8.574341 -H 5.056567 -15.604426 8.988631 -H 5.428195 -16.914995 8.200018 -C 3.972756 -17.212775 9.577410 -H 4.526542 -17.332857 10.364074 -H 3.159441 -16.758824 9.844505 -C 2.992391 -19.324880 9.925414 -H 2.159093 -18.917781 10.207131 -H 3.545689 -19.466489 10.710128 -C 2.725185 -20.622998 9.248902 -H 3.560311 -21.019756 8.952563 -H 2.296778 -21.237129 9.865951 -C 1.420103 -21.553481 7.511809 -H 1.112445 -22.191038 8.175648 -H 2.138380 -21.963113 7.005888 -C 0.316675 -21.203152 6.612068 -H -0.067015 -22.009542 6.236770 -H -0.376501 -20.739071 7.108242 -C -0.233211 -19.896170 4.713158 -H -0.874847 -19.386293 5.232726 -H -0.698172 -20.650433 4.316414 -C 0.339095 -19.042084 3.643802 -H 1.056396 -19.515029 3.191495 -H -0.344821 -18.827033 2.989712 -C -0.462402 -16.779717 8.870680 -C -1.213211 -16.465265 10.194458 -H -1.265970 -19.540354 9.211860 -H 7.802954 -14.806688 4.240380 -H -3.014445 -18.559010 1.900860 -H -2.121321 -20.181921 10.176912 -H 7.711570 -13.821123 4.679040 -H -3.326369 -19.352527 2.895156 -K 2.401687 -10.612233 6.840074 -K -4.194880 -13.718135 6.840074 -O 2.850807 -11.453024 4.231314 -O -3.691294 -12.908790 4.231314 -O 0.279147 -10.667948 4.932293 -O -3.085359 -15.528451 4.932293 -O -0.175091 -9.807320 7.554505 -O -3.603566 -16.352146 7.554505 -O 1.988145 -8.695975 9.007249 -O -5.647638 -15.034402 9.007249 -O 4.527638 -9.272963 8.150303 -O -6.417698 -12.546642 8.150303 -O 5.048891 -10.230248 5.554410 -O -5.849291 -11.616581 5.554410 -O 3.548126 -12.525749 8.425196 -O -3.110947 -11.768531 8.425196 -O 1.417057 -13.117510 8.331421 -O -1.532932 -13.318210 8.331421 -O 1.588737 -14.470920 10.549481 -O -0.446684 -12.492826 10.549481 -O -1.955369 -10.884688 10.792011 -O 3.735768 -13.968430 10.792011 -C 1.787344 -11.436562 3.294824 -C -3.173819 -13.838006 3.294824 -H 1.939772 -12.109575 2.613439 -H -2.667187 -13.369494 2.613439 -H 1.744820 -10.568970 2.861038 -H -3.903914 -14.308629 2.861038 -C 0.512480 -11.710284 3.992781 -C -2.299337 -14.805211 3.992781 -H -1.902000 -15.416598 3.352337 -H -0.215666 -11.748693 3.352337 -H -1.585203 -14.336065 4.450937 -H 0.561705 -12.563314 4.450937 -C -0.975369 -10.804703 5.581705 -C -2.339668 -16.546516 5.581705 -H -1.011314 -11.653724 6.050584 -H -1.586422 -16.153134 6.050584 -H -1.688772 -10.788453 4.924690 -H -1.997040 -17.172466 4.924690 -C -1.152166 -9.691036 6.543832 -C -3.215733 -17.256460 6.543832 -H -1.056396 -8.840538 6.087626 -H -4.000171 -17.598770 6.087626 -H -2.039685 -9.729024 6.934727 -H -2.739076 -18.006080 6.934727 -C -0.325204 -8.838217 8.574341 -C -4.367778 -16.966700 8.574341 -H -1.198955 -8.922844 8.988631 -H -3.857613 -17.681076 8.988631 -H -0.249782 -7.945721 8.200018 -H -5.178413 -17.347630 8.200018 -C 0.735822 -9.057278 9.577410 -C -4.708578 -15.938294 9.577410 -H -5.089466 -16.357845 10.364074 -H 0.562924 -8.517644 10.364074 -H -3.908788 -15.460917 9.844505 -H 0.749347 -9.988605 9.844505 -C 3.055142 -8.850246 9.925414 -C -6.047533 -14.033220 9.925414 -H 3.119232 -9.775453 10.207131 -H -5.278325 -13.515112 10.207131 -H 2.901129 -8.300271 10.710128 -H -6.446819 -14.441586 10.710128 -C 4.312947 -8.432594 9.248902 -C -7.038133 -13.152754 9.248902 -H 4.238988 -7.510975 8.952563 -H -7.799298 -13.677615 8.952563 -H 5.059004 -8.496540 9.865951 -H -7.355783 -12.474677 9.865951 -C 5.771310 -9.097587 7.511809 -C -7.191414 -11.557278 7.511809 -H 6.477280 -9.045249 8.175648 -H -7.589725 -10.972060 8.175648 -H 5.766924 -8.270725 7.005888 -H -7.905304 -11.974508 7.005888 -C 6.019630 -10.228349 6.612068 -C -6.336306 -10.776846 6.612068 -H -6.842815 -10.041366 6.236770 -H 6.909830 -10.157438 6.236770 -H -5.587812 -10.408578 7.108242 -H 5.964313 -11.060697 7.108242 -C -4.929483 -10.954121 4.713158 -C 5.162694 -11.358055 4.713158 -H -4.167099 -10.653387 5.232726 -H 5.041946 -12.168666 5.232726 -H -5.350214 -10.174322 4.316414 -H 6.048386 -11.383591 4.316414 -C -4.475976 -11.876795 3.643802 -C 4.136881 -11.289466 3.643802 -H -5.244209 -12.261525 3.191495 -H 4.187813 -10.431793 3.191495 -H -3.947778 -11.392033 2.989712 -H 4.292599 -11.989281 2.989712 -C 2.578362 -13.114766 8.870680 -C -2.115960 -12.313863 8.870680 -C 2.681443 -13.922212 10.194458 -C -1.468232 -11.820869 10.194458 diff --git a/cell2mol/test/error_2/BOFFOS/Transformed_BOFFOS_3.xyz b/cell2mol/test/error_2/BOFFOS/Transformed_BOFFOS_3.xyz deleted file mode 100644 index c0dd42dd7..000000000 --- a/cell2mol/test/error_2/BOFFOS/Transformed_BOFFOS_3.xyz +++ /dev/null @@ -1,159 +0,0 @@ -157 -0 1 -K 26.770687 17.526664 10.089407 -Fe 24.370218 14.068745 12.644456 -O 27.219807 16.685874 7.480648 -O 24.648147 17.470949 8.181626 -O 24.193909 18.331577 10.803838 -O 26.357145 19.442923 12.256583 -O 28.896638 18.865935 11.399636 -O 29.417891 17.908650 8.803744 -O 27.917126 15.613149 11.674530 -O 25.786057 15.021388 11.580754 -O 25.957737 13.667977 13.798814 -O 28.104768 14.170467 14.041344 -O 30.568961 15.742728 12.713667 -O 21.132066 20.366230 7.798725 -O 30.635123 13.873954 5.258396 -C 26.156344 16.702335 6.544157 -H 26.308772 16.029323 5.862772 -H 26.113820 17.569928 6.110371 -C 24.881480 16.428614 7.242114 -H 24.153334 16.390204 6.601671 -H 24.930705 15.575583 7.700270 -C 23.393631 17.334194 8.831038 -H 23.357687 16.485173 9.299917 -H 22.680228 17.350444 8.174023 -C 23.216834 18.447861 9.793166 -H 23.312604 19.298359 9.336959 -H 22.329315 18.409874 10.184061 -C 24.043796 19.300681 11.823674 -H 23.170045 19.216053 12.237964 -H 24.119218 20.193176 11.449351 -C 25.104822 19.081619 12.826743 -H 24.931924 19.621253 13.613407 -H 25.118347 18.150292 13.093839 -C 27.424142 19.288651 13.174747 -H 27.488232 18.363444 13.456464 -H 27.270129 19.838626 13.959461 -C 28.681947 19.706303 12.498236 -H 28.607988 20.627922 12.201897 -H 29.428004 19.642357 13.115284 -C 30.140310 19.041310 10.761142 -H 30.846280 19.093649 11.424981 -H 30.135924 19.868172 10.255221 -C 30.388630 17.910549 9.861402 -H 31.278830 17.981459 9.486104 -H 30.333313 17.078200 10.357575 -C 29.531694 16.780843 7.962491 -H 29.410946 15.970231 8.482060 -H 30.417386 16.755306 7.565748 -C 28.505881 16.849431 6.893136 -H 28.556813 17.707105 6.440829 -H 28.661599 16.149617 6.239045 -C 26.947362 15.024131 12.120013 -C 27.050443 14.216685 13.443792 -H 29.739928 15.708539 12.461193 -H 21.105991 21.195624 7.489713 -H 29.764297 13.703643 5.150193 -H 30.723217 15.288566 13.426245 -H 20.298159 20.623701 7.928373 -H 30.607464 13.830268 6.144489 -K 20.174120 14.420763 10.089407 -K 26.162193 10.260919 10.089407 -O 20.677706 15.230108 7.480648 -O 25.209487 10.292365 7.480648 -O 21.283641 12.610447 8.181626 -O 27.175212 12.126950 8.181626 -O 20.765434 11.786751 10.803838 -O 28.147657 12.090018 10.803838 -O 18.721362 13.104496 12.256583 -O 28.028493 9.660928 12.256583 -O 17.951302 15.592255 11.399636 -O 26.259060 7.750156 11.399636 -O 18.519709 16.522316 8.803744 -O 25.169400 7.777380 8.803744 -O 21.258053 16.370366 11.674530 -O 23.931820 10.224831 11.674530 -O 22.836068 14.820687 11.580754 -O 24.484875 12.366272 11.580754 -O 23.922316 15.646071 13.798814 -O 23.226947 12.894298 13.798814 -O 22.588601 10.783670 14.041344 -O 22.413631 17.254209 14.041344 -C 21.195181 14.300891 6.544157 -C 25.755474 11.205120 6.544157 -H 21.701813 14.769404 5.862772 -H 25.096415 11.409619 5.862772 -H 20.465086 13.830268 6.110371 -H 26.528093 10.808150 6.110371 -C 22.069663 13.333687 7.242114 -C 26.155857 12.446045 7.242114 -H 26.486666 13.095843 6.601671 -H 22.467000 12.722299 6.601671 -H 25.392498 12.829930 7.700270 -H 22.783797 13.802833 7.700270 -C 22.029332 11.592382 8.831038 -C 27.684037 13.281771 8.831038 -H 22.782578 11.985763 9.299917 -H 26.966735 13.737410 9.299917 -H 22.371960 10.966432 8.174023 -H 28.054811 13.891470 8.174023 -C 21.153267 10.882437 9.793166 -C 28.736900 12.878048 9.793166 -H 20.368829 10.540128 9.336959 -H 29.425567 12.369859 9.336959 -H 21.629924 10.132817 10.184061 -H 29.147761 13.665656 10.184061 -C 20.001222 11.172197 11.823674 -C 29.061982 11.735468 11.823674 -H 20.511387 10.457821 12.237964 -H 29.425567 12.534472 12.237964 -H 19.190587 10.791267 11.449351 -H 29.797195 11.223903 11.449351 -C 19.660422 12.200604 12.826743 -C 28.341756 10.926123 12.826743 -H 28.895542 10.806040 13.613407 -H 19.279534 11.781053 13.613407 -H 27.528441 11.380074 13.093839 -H 20.460212 12.677980 13.093839 -C 18.321467 14.105678 13.174747 -C 27.361391 8.814017 13.174747 -H 19.090675 14.623785 13.456464 -H 26.528093 9.221117 13.456464 -H 17.922181 13.697312 13.959461 -H 27.914690 8.672408 13.959461 -C 17.330867 14.986144 12.498236 -C 27.094185 7.515900 12.498236 -H 16.569702 14.461283 12.201897 -H 27.929311 7.119141 12.201897 -H 17.013217 15.664221 13.115284 -H 26.665778 6.901768 13.115284 -C 17.177586 16.581619 10.761142 -C 25.789103 6.585417 10.761142 -H 16.779275 17.166838 11.424981 -H 25.481445 5.947859 11.424981 -H 16.463696 16.164390 10.255221 -H 26.507380 6.175785 10.255221 -C 18.032694 17.362051 9.861402 -C 24.685675 6.935746 9.861402 -H 24.301985 6.129355 9.486104 -H 17.526185 18.097532 9.486104 -H 23.992499 7.399827 10.357575 -H 18.781188 17.730319 10.357575 -C 24.135789 8.242727 7.962491 -C 19.439517 17.184776 7.962491 -H 23.494153 8.752604 8.482060 -H 20.201901 17.485511 8.482060 -H 23.670828 7.488464 7.565748 -H 19.018786 17.964576 7.565748 -C 24.708095 9.096813 6.893136 -C 19.893024 16.262102 6.893136 -H 25.425396 8.623869 6.440829 -H 19.124791 15.877373 6.440829 -H 24.024179 9.311865 6.239045 -H 20.421222 16.746865 6.239045 -C 22.253040 15.825035 12.120013 -C 23.906598 11.359180 12.120013 -C 22.900768 16.318028 13.443792 -C 23.155789 11.673633 13.443792 diff --git a/cell2mol/test/error_2/BOFFOS/Transformed_BOFFOS_4.xyz b/cell2mol/test/error_2/BOFFOS/Transformed_BOFFOS_4.xyz deleted file mode 100644 index 3eb0a833f..000000000 --- a/cell2mol/test/error_2/BOFFOS/Transformed_BOFFOS_4.xyz +++ /dev/null @@ -1,159 +0,0 @@ -157 -0 1 -K -4.194880 14.420763 10.089407 -Fe 0.000000 14.070856 12.644456 -O -3.691294 15.230108 7.480648 -O -3.085359 12.610447 8.181626 -O -3.603566 11.786751 10.803838 -O -5.647638 13.104496 12.256583 -O -6.417698 15.592255 11.399636 -O -5.849291 16.522316 8.803744 -O -3.110947 16.370366 11.674530 -O -1.532932 14.820687 11.580754 -O -0.446684 15.646071 13.798814 -O -1.955369 17.254209 14.041344 -O -4.549083 18.602133 12.713667 -O -3.834706 8.117791 7.798725 -O -2.963758 19.593818 5.258396 -C -3.173819 14.300891 6.544157 -H -2.667187 14.769404 5.862772 -H -3.903914 13.830268 6.110371 -C -2.299337 13.333687 7.242114 -H -1.902000 12.722299 6.601671 -H -1.585203 13.802833 7.700270 -C -2.339668 11.592382 8.831038 -H -1.586422 11.985763 9.299917 -H -1.997040 10.966432 8.174023 -C -3.215733 10.882437 9.793166 -H -4.000171 10.540128 9.336959 -H -2.739076 10.132817 10.184061 -C -4.367778 11.172197 11.823674 -H -3.857613 10.457821 12.237964 -H -5.178412 10.791267 11.449351 -C -4.708578 12.200604 12.826743 -H -5.089466 11.781053 13.613407 -H -3.908788 12.677980 13.093839 -C -6.047533 14.105678 13.174747 -H -5.278325 14.623785 13.456464 -H -6.446819 13.697312 13.959461 -C -7.038133 14.986144 12.498236 -H -7.799298 14.461283 12.201897 -H -7.355783 15.664221 13.115284 -C -7.191414 16.581619 10.761142 -H -7.589725 17.166838 11.424981 -H -7.905304 16.164390 10.255221 -C -6.336306 17.362051 9.861402 -H -6.842815 18.097532 9.486104 -H -5.587812 17.730319 10.357575 -C -4.929483 17.184776 7.962491 -H -4.167099 17.485511 8.482060 -H -5.350214 17.964576 7.565748 -C -4.475976 16.262102 6.893136 -H -5.244209 15.877373 6.440829 -H -3.947778 16.746865 6.239045 -C -2.115960 15.825035 12.120013 -C -1.468232 16.318028 13.443792 -H -4.104958 17.901263 12.461193 -H -4.539945 7.680512 7.489713 -H -2.380851 18.924815 5.150193 -H -4.232895 18.962803 13.426245 -H -3.640729 7.266870 7.928373 -H -2.912095 19.591707 6.144489 -K 1.793193 10.260919 10.089407 -K 2.401687 17.526664 10.089407 -O 0.840487 10.292365 7.480648 -O 2.850807 16.685874 7.480648 -O 2.806212 12.126950 8.181626 -O 0.279147 17.470949 8.181626 -O 3.778657 12.090018 10.803838 -O -0.175091 18.331577 10.803838 -O 3.659493 9.660928 12.256583 -O 1.988145 19.442923 12.256583 -O 1.890060 7.750156 11.399636 -O 4.527638 18.865935 11.399636 -O 0.800400 7.777380 8.803744 -O 5.048891 17.908650 8.803744 -O -0.437180 10.224831 11.674530 -O 3.548126 15.613149 11.674530 -O 0.115875 12.366272 11.580754 -O 1.417057 15.021388 11.580754 -O -1.142053 12.894298 13.798814 -O 1.588737 13.667977 13.798814 -O 3.735768 14.170467 14.041344 -O -1.780399 10.783670 14.041344 -C 1.386474 11.205120 6.544157 -C 1.787344 16.702335 6.544157 -H 0.727415 11.409619 5.862772 -H 1.939772 16.029323 5.862772 -H 2.159093 10.808150 6.110371 -H 1.744820 17.569928 6.110371 -C 1.786857 12.446045 7.242114 -C 0.512480 16.428614 7.242114 -H -0.215666 16.390204 6.601671 -H 2.117666 13.095843 6.601671 -H 0.561705 15.575583 7.700270 -H 1.023498 12.829930 7.700270 -C 3.315037 13.281771 8.831038 -C -0.975369 17.334194 8.831038 -H 2.597735 13.737410 9.299917 -H -1.011313 16.485173 9.299917 -H 3.685811 13.891470 8.174023 -H -1.688772 17.350444 8.174023 -C 4.367900 12.878048 9.793166 -C -1.152166 18.447861 9.793166 -H 5.056567 12.369859 9.336959 -H -1.056396 19.298359 9.336959 -H 4.778761 13.665656 10.184061 -H -2.039685 18.409874 10.184061 -C 4.692982 11.735468 11.823674 -C -0.325204 19.300681 11.823674 -H 5.056568 12.534472 12.237964 -H -1.198955 19.216053 12.237964 -H 5.428195 11.223903 11.449351 -H -0.249782 20.193176 11.449351 -C 3.972756 10.926123 12.826743 -C 0.735822 19.081619 12.826743 -H 0.562924 19.621253 13.613407 -H 4.526542 10.806040 13.613407 -H 0.749347 18.150292 13.093839 -H 3.159441 11.380074 13.093839 -C 2.992391 8.814017 13.174747 -C 3.055142 19.288651 13.174747 -H 2.159093 9.221117 13.456464 -H 3.119232 18.363444 13.456464 -H 3.545690 8.672408 13.959461 -H 2.901129 19.838626 13.959461 -C 2.725185 7.515900 12.498236 -C 4.312947 19.706303 12.498236 -H 3.560311 7.119141 12.201897 -H 4.238988 20.627922 12.201897 -H 2.296778 6.901768 13.115284 -H 5.059004 19.642357 13.115284 -C 1.420103 6.585417 10.761142 -C 5.771310 19.041310 10.761142 -H 1.112445 5.947859 11.424981 -H 6.477280 19.093649 11.424981 -H 2.138380 6.175785 10.255221 -H 5.766924 19.868172 10.255221 -C 0.316675 6.935746 9.861402 -C 6.019630 17.910549 9.861402 -H 6.909830 17.981459 9.486104 -H -0.067015 6.129355 9.486104 -H 5.964313 17.078200 10.357575 -H -0.376501 7.399827 10.357575 -C 5.162694 16.780843 7.962491 -C -0.233211 8.242727 7.962491 -H 5.041946 15.970231 8.482060 -H -0.874847 8.752604 8.482060 -H 6.048386 16.755306 7.565748 -H -0.698172 7.488464 7.565748 -C 4.136881 16.849431 6.893136 -C 0.339095 9.096813 6.893136 -H 4.187813 17.707105 6.440829 -H 1.056396 8.623869 6.440829 -H 4.292599 16.149617 6.239045 -H -0.344821 9.311865 6.239045 -C -0.462402 11.359180 12.120013 -C 2.578362 15.024131 12.120013 -C -1.213211 11.673633 13.443792 -C 2.681443 14.216685 13.443792 diff --git a/cell2mol/test/error_2/BOFFOS/Transformed_BOFFOS_5.xyz b/cell2mol/test/error_2/BOFFOS/Transformed_BOFFOS_5.xyz deleted file mode 100644 index 8c6397745..000000000 --- a/cell2mol/test/error_2/BOFFOS/Transformed_BOFFOS_5.xyz +++ /dev/null @@ -1,159 +0,0 @@ -157 -0 1 -K 13.977693 -10.843254 10.089407 -Fe 12.183282 -7.035428 12.644456 -O 13.024987 -10.811809 7.480648 -O 14.990712 -8.977223 8.181626 -O 15.963157 -9.014155 10.803838 -O 15.843993 -11.443245 12.256583 -O 14.074560 -13.354017 11.399636 -O 12.984900 -13.326793 8.803744 -O 11.747320 -10.879342 11.674530 -O 12.300375 -8.737901 11.580754 -O 11.042447 -8.209875 13.798814 -O 10.404101 -10.320503 14.041344 -O 10.533622 -13.240688 12.713667 -O 19.256140 -7.379848 7.798725 -O 8.882135 -12.363598 5.258396 -C 13.570974 -9.899053 6.544157 -H 12.911915 -9.694554 5.862772 -H 14.343593 -10.296023 6.110371 -C 13.971357 -8.658128 7.242114 -H 14.302166 -8.008330 6.601671 -H 13.207998 -8.274243 7.700270 -C 15.499537 -7.822402 8.831038 -H 14.782235 -7.366763 9.299917 -H 15.870311 -7.212703 8.174023 -C 16.552400 -8.226125 9.793166 -H 17.241067 -8.734314 9.336959 -H 16.963261 -7.438518 10.184061 -C 16.877482 -9.368705 11.823674 -H 17.241067 -8.569701 12.237964 -H 17.612695 -9.880270 11.449351 -C 16.157256 -10.178050 12.826743 -H 16.711042 -10.298133 13.613407 -H 15.343941 -9.724099 13.093839 -C 15.176891 -12.290156 13.174747 -H 14.343593 -11.883056 13.456464 -H 15.730189 -12.431765 13.959461 -C 14.909685 -13.588274 12.498236 -H 15.744811 -13.985032 12.201897 -H 14.481278 -14.202405 13.115284 -C 13.604603 -14.518757 10.761142 -H 13.296945 -15.156314 11.424981 -H 14.322880 -14.928389 10.255221 -C 12.501175 -14.168427 9.861402 -H 12.117485 -14.974818 9.486104 -H 11.807999 -13.704347 10.357575 -C 11.951289 -12.861446 7.962491 -H 11.309653 -12.351569 8.482060 -H 11.486328 -13.615709 7.565748 -C 12.523595 -12.007360 6.893136 -H 13.240896 -12.480304 6.440829 -H 11.839679 -11.792308 6.239045 -C 11.722098 -9.744993 12.120013 -C 10.971289 -9.430540 13.443792 -H 10.918530 -12.505629 12.461193 -H 19.987454 -7.771963 7.489713 -H 9.170055 -11.524285 5.150193 -H 10.063179 -13.147196 13.426245 -H 19.896070 -6.786399 7.928373 -H 8.858131 -12.317802 6.144489 -K 14.586187 -3.577509 10.089407 -K 7.989620 -6.683410 10.089407 -O 15.035307 -4.418299 7.480648 -O 8.493206 -5.874065 7.480648 -O 12.463647 -3.633224 8.181626 -O 9.099141 -8.493726 8.181626 -O 12.009409 -2.772596 10.803838 -O 8.580934 -9.317422 10.803838 -O 14.172645 -1.661250 12.256583 -O 6.536862 -7.999677 12.256583 -O 16.712138 -2.238238 11.399636 -O 5.766802 -5.511918 11.399636 -O 17.233391 -3.195524 8.803744 -O 6.335209 -4.581857 8.803744 -O 15.732626 -5.491024 11.674530 -O 9.073553 -4.733807 11.674530 -O 13.601557 -6.082785 11.580754 -O 10.651568 -6.283486 11.580754 -O 13.773237 -7.436196 13.798814 -O 11.737816 -5.458102 13.798814 -O 10.229131 -3.849964 14.041344 -O 15.920268 -6.933706 14.041344 -C 13.971844 -4.401838 6.544157 -C 9.010681 -6.803282 6.544157 -H 14.124272 -5.074850 5.862772 -H 9.517313 -6.334769 5.862772 -H 13.929320 -3.534246 6.110371 -H 8.280586 -7.273905 6.110371 -C 12.696980 -4.675559 7.242114 -C 9.885163 -7.770486 7.242114 -H 10.282500 -8.381874 6.601671 -H 11.968834 -4.713969 6.601671 -H 10.599297 -7.301340 7.700270 -H 12.746205 -5.528590 7.700270 -C 11.209131 -3.769979 8.831038 -C 9.844832 -9.511791 8.831038 -H 11.173186 -4.619000 9.299917 -H 10.598078 -9.118410 9.299917 -H 10.495728 -3.753729 8.174023 -H 10.187460 -10.137741 8.174023 -C 11.032334 -2.656312 9.793166 -C 8.968767 -10.221736 9.793166 -H 11.128104 -1.805814 9.336959 -H 8.184329 -10.564046 9.336959 -H 10.144815 -2.694299 10.184061 -H 9.445424 -10.971356 10.184061 -C 11.859296 -1.803492 11.823674 -C 7.816722 -9.931976 11.823674 -H 10.985545 -1.888120 12.237964 -H 8.326887 -10.646352 12.237964 -H 11.934718 -0.910997 11.449351 -H 7.006087 -10.312906 11.449351 -C 12.920322 -2.022554 12.826743 -C 7.475922 -8.903569 12.826743 -H 7.095034 -9.323120 13.613407 -H 12.747424 -1.482920 13.613407 -H 8.275712 -8.426193 13.093839 -H 12.933847 -2.953881 13.093839 -C 15.239642 -1.815522 13.174747 -C 6.136967 -6.998496 13.174747 -H 15.303732 -2.740729 13.456464 -H 6.906175 -6.480388 13.456464 -H 15.085629 -1.265547 13.959461 -H 5.737681 -7.406861 13.959461 -C 16.497447 -1.397870 12.498236 -C 5.146367 -6.118029 12.498236 -H 16.423488 -0.476251 12.201897 -H 4.385202 -6.642890 12.201897 -H 17.243504 -1.461816 13.115284 -H 4.828717 -5.439952 13.115284 -C 17.955810 -2.062863 10.761142 -C 4.993086 -4.522554 10.761142 -H 18.661780 -2.010524 11.424981 -H 4.594775 -3.937335 11.424981 -H 17.951424 -1.236001 10.255221 -H 4.279196 -4.939783 10.255221 -C 18.204130 -3.193624 9.861402 -C 5.848194 -3.742122 9.861402 -H 5.341685 -3.006641 9.486104 -H 19.094330 -3.122714 9.486104 -H 6.596688 -3.373854 10.357575 -H 18.148813 -4.025973 10.357575 -C 7.255017 -3.919397 7.962491 -C 17.347194 -4.323331 7.962491 -H 8.017401 -3.618662 8.482060 -H 17.226446 -5.133942 8.482060 -H 6.834286 -3.139597 7.565748 -H 18.232886 -4.348867 7.565748 -C 7.708524 -4.842071 6.893136 -C 16.321381 -4.254742 6.893136 -H 6.940291 -5.226800 6.440829 -H 16.372313 -3.397068 6.440829 -H 8.236722 -4.357308 6.239045 -H 16.477099 -4.954556 6.239045 -C 14.762862 -6.080042 12.120013 -C 10.068540 -5.279139 12.120013 -C 14.865943 -6.887488 13.443792 -C 10.716268 -4.786145 13.443792 diff --git a/cell2mol/test/error_2/BOFFOS/Transformed_BOFFOS_6.xyz b/cell2mol/test/error_2/BOFFOS/Transformed_BOFFOS_6.xyz deleted file mode 100644 index d69e90d9e..000000000 --- a/cell2mol/test/error_2/BOFFOS/Transformed_BOFFOS_6.xyz +++ /dev/null @@ -1,159 +0,0 @@ -157 -0 1 -K 14.586187 24.561388 13.338741 -Fe 12.185718 21.103470 15.893789 -O 15.035307 23.720598 10.729981 -O 12.463647 24.505673 11.430960 -O 12.009409 25.366302 14.053172 -O 14.172645 26.477647 15.505916 -O 16.712138 25.900659 14.648969 -O 17.233391 24.943374 12.053077 -O 15.732626 22.647873 14.923863 -O 13.601557 22.056112 14.830087 -O 13.773237 20.702701 17.048147 -O 15.920268 21.205192 17.290677 -O 18.384461 22.777453 15.963000 -O 8.947566 27.400955 11.048058 -O 18.450623 20.908678 8.507729 -C 13.971844 23.737059 9.793491 -H 14.124272 23.064047 9.112105 -H 13.929320 24.604652 9.359705 -C 12.696980 23.463338 10.491447 -H 11.968834 23.424929 9.851004 -H 12.746205 22.610308 10.949603 -C 11.209131 24.368918 12.080371 -H 11.173187 23.519897 12.549250 -H 10.495728 24.385169 11.423356 -C 11.032334 25.482586 13.042499 -H 11.128104 26.333084 12.586293 -H 10.144815 25.444598 13.433394 -C 11.859296 26.335405 15.073007 -H 10.985545 26.250777 15.487297 -H 11.934718 27.227901 14.698684 -C 12.920322 26.116344 16.076077 -H 12.747424 26.655978 16.862740 -H 12.933847 25.185017 16.343172 -C 15.239642 26.323376 16.424080 -H 15.303732 25.398169 16.705797 -H 15.085629 26.873351 17.208794 -C 16.497447 26.741027 15.747569 -H 16.423488 27.662647 15.451230 -H 17.243504 26.677082 16.364617 -C 17.955810 26.076035 14.010475 -H 18.661780 26.128373 14.674314 -H 17.951424 26.902896 13.504554 -C 18.204130 24.945273 13.110735 -H 19.094330 25.016183 12.735437 -H 18.148813 24.112925 13.606908 -C 17.347194 23.815567 11.211825 -H 17.226446 23.004956 11.731393 -H 18.232886 23.790031 10.815081 -C 16.321381 23.884155 10.142469 -H 16.372313 24.741829 9.690162 -H 16.477099 23.184341 9.488378 -C 14.762862 22.058856 15.369347 -C 14.865943 21.251410 16.693125 -H 17.555428 22.743264 15.710527 -H 8.921491 28.230349 10.739047 -H 17.579797 20.738367 8.399527 -H 18.538717 22.323291 16.675579 -H 8.113659 27.658426 11.177707 -H 18.422964 20.864992 9.393823 -K 7.989620 21.455487 13.338741 -K 13.977693 17.295644 13.338741 -O 8.493206 22.264832 10.729981 -O 13.024987 17.327089 10.729981 -O 9.099141 19.645171 11.430960 -O 14.990712 19.161675 11.430960 -O 8.580934 18.821475 14.053172 -O 15.963157 19.124742 14.053172 -O 6.536862 20.139220 15.505916 -O 15.843993 16.695652 15.505916 -O 5.766802 22.626980 14.648969 -O 14.074560 14.784880 14.648969 -O 6.335209 23.557041 12.053077 -O 12.984900 14.812105 12.053077 -O 9.073553 23.405091 14.923863 -O 11.747320 17.259556 14.923863 -O 10.651568 21.855411 14.830087 -O 12.300375 19.400996 14.830087 -O 11.737816 22.680795 17.048147 -O 11.042447 19.929022 17.048147 -O 10.404101 17.818394 17.290677 -O 10.229131 24.288933 17.290677 -C 9.010681 21.335615 9.793491 -C 13.570974 18.239844 9.793491 -H 9.517313 21.804128 9.112105 -H 12.911915 18.444344 9.112105 -H 8.280586 20.864992 9.359705 -H 14.343593 17.842875 9.359705 -C 9.885163 20.368411 10.491447 -C 13.971357 19.480770 10.491447 -H 14.302166 20.130567 9.851004 -H 10.282500 19.757023 9.851004 -H 13.207998 19.864655 10.949603 -H 10.599297 20.837557 10.949603 -C 9.844832 18.627106 12.080371 -C 15.499537 20.316495 12.080371 -H 10.598078 19.020488 12.549250 -H 14.782235 20.772134 12.549250 -H 10.187460 18.001156 11.423356 -H 15.870311 20.926195 11.423356 -C 8.968767 17.917162 13.042499 -C 16.552400 19.912772 13.042499 -H 8.184329 17.574852 12.586293 -H 17.241068 19.404584 12.586293 -H 9.445424 17.167541 13.433394 -H 16.963261 20.700380 13.433394 -C 7.816722 18.206922 15.073007 -C 16.877482 18.770192 15.073007 -H 8.326887 17.492546 15.487297 -H 17.241067 19.569196 15.487297 -H 7.006088 17.825992 14.698684 -H 17.612695 18.258627 14.698684 -C 7.475922 19.235328 16.076077 -C 16.157256 17.960847 16.076077 -H 16.711042 17.840764 16.862740 -H 7.095034 18.815777 16.862740 -H 15.343941 18.414798 16.343172 -H 8.275712 19.712705 16.343172 -C 6.136967 21.140402 16.424080 -C 15.176891 15.848742 16.424080 -H 6.906175 21.658509 16.705797 -H 14.343593 16.255841 16.705797 -H 5.737681 20.732036 17.208794 -H 15.730190 15.707133 17.208794 -C 5.146367 22.020868 15.747569 -C 14.909685 14.550624 15.747569 -H 4.385202 21.496007 15.451230 -H 15.744811 14.153865 15.451230 -H 4.828717 22.698945 16.364617 -H 14.481278 13.936492 16.364617 -C 4.993086 23.616343 14.010475 -C 13.604603 13.620141 14.010475 -H 4.594775 24.201562 14.674314 -H 13.296945 12.982584 14.674314 -H 4.279196 23.199114 13.504554 -H 14.322880 13.210509 13.504554 -C 5.848194 24.396776 13.110735 -C 12.501175 13.970470 13.110735 -H 12.117485 13.164080 12.735437 -H 5.341685 25.132256 12.735437 -H 11.807999 14.434551 13.606908 -H 6.596688 24.765044 13.606908 -C 11.951289 15.277452 11.211825 -C 7.255017 24.219501 11.211825 -H 11.309653 15.787328 11.731393 -H 8.017401 24.520235 11.731393 -H 11.486328 14.523188 10.815081 -H 6.834286 24.999300 10.815081 -C 12.523595 16.131537 10.142469 -C 7.708524 23.296826 10.142469 -H 13.240896 15.658593 9.690162 -H 6.940291 22.912097 9.690162 -H 11.839679 16.346589 9.488378 -H 8.236722 23.781589 9.488378 -C 10.068540 22.859759 15.369347 -C 11.722098 18.393905 15.369347 -C 10.716268 23.352752 16.693125 -C 10.971289 18.708357 16.693125 diff --git a/cell2mol/test/error_2/BOFFOS/Transformed_BOFFOS_7.xyz b/cell2mol/test/error_2/BOFFOS/Transformed_BOFFOS_7.xyz deleted file mode 100644 index 8a5d84d6f..000000000 --- a/cell2mol/test/error_2/BOFFOS/Transformed_BOFFOS_7.xyz +++ /dev/null @@ -1,159 +0,0 @@ -157 -0 1 -K -16.379380 21.455487 13.338741 -Fe -12.184500 21.105580 15.893789 -O -15.875794 22.264832 10.729981 -O -15.269859 19.645171 11.430960 -O -15.788066 18.821475 14.053172 -O -17.832138 20.139220 15.505916 -O -18.602198 22.626980 14.648969 -O -18.033791 23.557041 12.053077 -O -15.295447 23.405091 14.923863 -O -13.717432 21.855411 14.830087 -O -12.631184 22.680795 17.048147 -O -14.139869 24.288933 17.290677 -O -16.733583 25.636857 15.963000 -O -16.019206 15.152515 11.048058 -O -15.148258 26.628542 8.507729 -C -15.358319 21.335615 9.793491 -H -14.851687 21.804128 9.112105 -H -16.088414 20.864992 9.359705 -C -14.483837 20.368411 10.491447 -H -14.086500 19.757023 9.851004 -H -13.769703 20.837557 10.949603 -C -14.524168 18.627106 12.080371 -H -13.770922 19.020488 12.549250 -H -14.181540 18.001156 11.423356 -C -15.400233 17.917162 13.042499 -H -16.184671 17.574852 12.586293 -H -14.923576 17.167541 13.433394 -C -16.552278 18.206922 15.073007 -H -16.042113 17.492546 15.487297 -H -17.362912 17.825992 14.698684 -C -16.893078 19.235328 16.076077 -H -17.273966 18.815777 16.862740 -H -16.093288 19.712705 16.343172 -C -18.232033 21.140402 16.424080 -H -17.462825 21.658509 16.705797 -H -18.631319 20.732036 17.208794 -C -19.222633 22.020868 15.747569 -H -19.983798 21.496007 15.451230 -H -19.540283 22.698945 16.364617 -C -19.375914 23.616343 14.010475 -H -19.774225 24.201562 14.674314 -H -20.089804 23.199114 13.504554 -C -18.520806 24.396776 13.110735 -H -19.027315 25.132256 12.735437 -H -17.772312 24.765044 13.606908 -C -17.113983 24.219501 11.211825 -H -16.351599 24.520235 11.731393 -H -17.534714 24.999300 10.815081 -C -16.660476 23.296826 10.142469 -H -17.428709 22.912097 9.690162 -H -16.132278 23.781589 9.488378 -C -14.300460 22.859759 15.369347 -C -13.652732 23.352752 16.693125 -H -16.289458 24.935987 15.710527 -H -16.724445 14.715236 10.739047 -H -14.565351 25.959540 8.399527 -H -16.417395 25.997527 16.675579 -H -15.825229 14.301595 11.177707 -H -15.096595 26.626432 9.393823 -K -10.391307 17.295644 13.338741 -K -9.782813 24.561388 13.338741 -O -11.344013 17.327089 10.729981 -O -9.333693 23.720598 10.729981 -O -9.378288 19.161675 11.430960 -O -11.905353 24.505673 11.430960 -O -8.405843 19.124742 14.053172 -O -12.359591 25.366302 14.053172 -O -8.525007 16.695652 15.505916 -O -10.196355 26.477647 15.505916 -O -10.294440 14.784880 14.648969 -O -7.656862 25.900659 14.648969 -O -11.384100 14.812105 12.053077 -O -7.135609 24.943374 12.053077 -O -12.621680 17.259556 14.923863 -O -8.636374 22.647873 14.923863 -O -12.068625 19.400996 14.830087 -O -10.767443 22.056112 14.830087 -O -13.326553 19.929022 17.048147 -O -10.595763 20.702701 17.048147 -O -8.448732 21.205192 17.290677 -O -13.964899 17.818394 17.290677 -C -10.798026 18.239844 9.793491 -C -10.397156 23.737059 9.793491 -H -11.457085 18.444344 9.112105 -H -10.244728 23.064047 9.112105 -H -10.025407 17.842875 9.359705 -H -10.439680 24.604652 9.359705 -C -10.397643 19.480770 10.491447 -C -11.672020 23.463338 10.491447 -H -12.400166 23.424929 9.851004 -H -10.066834 20.130567 9.851004 -H -11.622795 22.610308 10.949603 -H -11.161002 19.864655 10.949603 -C -8.869463 20.316495 12.080371 -C -13.159869 24.368918 12.080371 -H -9.586765 20.772134 12.549250 -H -13.195813 23.519897 12.549250 -H -8.498689 20.926195 11.423356 -H -13.873272 24.385169 11.423356 -C -7.816600 19.912772 13.042499 -C -13.336666 25.482586 13.042499 -H -7.127932 19.404584 12.586293 -H -13.240896 26.333084 12.586293 -H -7.405739 20.700380 13.433394 -H -14.224185 25.444598 13.433394 -C -7.491518 18.770192 15.073007 -C -12.509704 26.335405 15.073007 -H -7.127932 19.569196 15.487297 -H -13.383455 26.250777 15.487297 -H -6.756305 18.258627 14.698684 -H -12.434282 27.227901 14.698684 -C -8.211744 17.960847 16.076077 -C -11.448678 26.116344 16.076077 -H -11.621576 26.655978 16.862740 -H -7.657958 17.840764 16.862740 -H -11.435153 25.185017 16.343172 -H -9.025059 18.414798 16.343172 -C -9.192109 15.848742 16.424080 -C -9.129358 26.323376 16.424080 -H -10.025407 16.255841 16.705797 -H -9.065268 25.398169 16.705797 -H -8.638810 15.707133 17.208794 -H -9.283371 26.873351 17.208794 -C -9.459315 14.550624 15.747569 -C -7.871553 26.741027 15.747569 -H -8.624189 14.153865 15.451230 -H -7.945512 27.662647 15.451230 -H -9.887722 13.936492 16.364617 -H -7.125496 26.677082 16.364617 -C -10.764397 13.620141 14.010475 -C -6.413190 26.076035 14.010475 -H -11.072055 12.982584 14.674314 -H -5.707220 26.128373 14.674314 -H -10.046120 13.210509 13.504554 -H -6.417576 26.902896 13.504554 -C -11.867825 13.970470 13.110735 -C -6.164870 24.945273 13.110735 -H -5.274670 25.016183 12.735437 -H -12.251515 13.164080 12.735437 -H -6.220187 24.112925 13.606908 -H -12.561001 14.434551 13.606908 -C -7.021806 23.815567 11.211825 -C -12.417711 15.277452 11.211825 -H -7.142554 23.004956 11.731393 -H -13.059347 15.787328 11.731393 -H -6.136114 23.790031 10.815081 -H -12.882672 14.523188 10.815081 -C -8.047619 23.884155 10.142469 -C -11.845405 16.131537 10.142469 -H -7.996687 24.741829 9.690162 -H -11.128104 15.658593 9.690162 -H -7.891901 23.184341 9.488378 -H -12.529321 16.346589 9.488378 -C -12.646902 18.393905 15.369347 -C -9.606138 22.058856 15.369347 -C -13.397711 18.708357 16.693125 -C -9.503057 21.251410 16.693125 diff --git a/cell2mol/test/error_2/BOFFOS/Transformed_BOFFOS_8.xyz b/cell2mol/test/error_2/BOFFOS/Transformed_BOFFOS_8.xyz deleted file mode 100644 index a464f602d..000000000 --- a/cell2mol/test/error_2/BOFFOS/Transformed_BOFFOS_8.xyz +++ /dev/null @@ -1,159 +0,0 @@ -157 -0 1 -K 1.793193 -3.808529 13.338741 -Fe -0.001218 -0.000703 15.893789 -O 0.840487 -3.777084 10.729981 -O 2.806212 -1.942498 11.430960 -O 3.778657 -1.979431 14.053172 -O 3.659493 -4.408521 15.505916 -O 1.890060 -6.319293 14.648969 -O 0.800400 -6.292069 12.053077 -O -0.437180 -3.844618 14.923863 -O 0.115875 -1.703177 14.830087 -O -1.142053 -1.175151 17.048147 -O -1.780399 -3.285779 17.290677 -O -1.650878 -6.205963 15.963000 -O 7.071640 -0.345124 11.048058 -O -3.302365 -5.328874 8.507729 -C 1.386474 -2.864329 9.793491 -H 0.727415 -2.659829 9.112105 -H 2.159093 -3.261298 9.359705 -C 1.786857 -1.623403 10.491447 -H 2.117666 -0.973606 9.851004 -H 1.023498 -1.239518 10.949603 -C 3.315037 -0.787678 12.080371 -H 2.597735 -0.332039 12.549250 -H 3.685811 -0.177979 11.423356 -C 4.367900 -1.191401 13.042499 -H 5.056567 -1.699589 12.586293 -H 4.778761 -0.403793 13.433394 -C 4.692982 -2.333981 15.073007 -H 5.056568 -1.534977 15.487297 -H 5.428195 -2.845546 14.698684 -C 3.972756 -3.143326 16.076077 -H 4.526542 -3.263409 16.862740 -H 3.159441 -2.689375 16.343172 -C 2.992391 -5.255432 16.424080 -H 2.159093 -4.848332 16.705797 -H 3.545690 -5.397041 17.208794 -C 2.725185 -6.553549 15.747569 -H 3.560311 -6.950308 15.451230 -H 2.296778 -7.167681 16.364617 -C 1.420103 -7.484032 14.010475 -H 1.112445 -8.121589 14.674314 -H 2.138380 -7.893664 13.504554 -C 0.316675 -7.133703 13.110735 -H -0.067015 -7.940093 12.735437 -H -0.376501 -6.669622 13.606908 -C -0.233211 -5.826721 11.211825 -H -0.874847 -5.316845 11.731393 -H -0.698172 -6.580985 10.815081 -C 0.339095 -4.972636 10.142469 -H 1.056396 -5.445580 9.690162 -H -0.344821 -4.757584 9.488378 -C -0.462402 -2.710268 15.369347 -C -1.213211 -2.395816 16.693125 -H -1.265970 -5.470905 15.710527 -H 7.802954 -0.737239 10.739047 -H -3.014445 -4.489561 8.399527 -H -2.121321 -6.112472 16.675579 -H 7.711570 0.248326 11.177707 -H -3.326368 -5.283078 9.393823 -K 2.401687 3.457215 13.338741 -K -4.194880 0.351314 13.338741 -O 2.850807 2.616425 10.729981 -O -3.691294 1.160659 10.729981 -O 0.279147 3.401500 11.430960 -O -3.085359 -1.459002 11.430960 -O -0.175091 4.262128 14.053172 -O -3.603566 -2.282698 14.053172 -O 1.988145 5.373474 15.505916 -O -5.647638 -0.964953 15.505916 -O 4.527638 4.796486 14.648969 -O -6.417698 1.522807 14.648969 -O 5.048891 3.839201 12.053077 -O -5.849291 2.452868 12.053077 -O 3.548126 1.543700 14.923863 -O -3.110947 2.300918 14.923863 -O 1.417057 0.951939 14.830087 -O -1.532932 0.751238 14.830087 -O 1.588737 -0.401472 17.048147 -O -0.446684 1.576622 17.048147 -O -1.955369 3.184760 17.290677 -O 3.735768 0.101019 17.290677 -C 1.787344 2.632886 9.793491 -C -3.173819 0.231442 9.793491 -H 1.939772 1.959874 9.112105 -H -2.667187 0.699955 9.112105 -H 1.744820 3.500479 9.359705 -H -3.903914 -0.239181 9.359705 -C 0.512480 2.359165 10.491447 -C -2.299337 -0.735762 10.491447 -H -1.902000 -1.347150 9.851004 -H -0.215666 2.320756 9.851004 -H -1.585203 -0.266616 10.949603 -H 0.561705 1.506134 10.949603 -C -0.975369 3.264745 12.080371 -C -2.339668 -2.477067 12.080371 -H -1.011313 2.415724 12.549250 -H -1.586422 -2.083685 12.549250 -H -1.688772 3.280995 11.423356 -H -1.997040 -3.103017 11.423356 -C -1.152166 4.378412 13.042499 -C -3.215733 -3.187012 13.042499 -H -1.056396 5.228911 12.586293 -H -4.000171 -3.529321 12.586293 -H -2.039685 4.340425 13.433394 -H -2.739076 -3.936632 13.433394 -C -0.325204 5.231232 15.073007 -C -4.367778 -2.897251 15.073007 -H -1.198955 5.146604 15.487297 -H -3.857613 -3.611627 15.487297 -H -0.249782 6.123728 14.698684 -H -5.178412 -3.278182 14.698684 -C 0.735822 5.012171 16.076077 -C -4.708578 -1.868845 16.076077 -H -5.089466 -2.288396 16.862740 -H 0.562924 5.551804 16.862740 -H -3.908788 -1.391468 16.343172 -H 0.749347 4.080844 16.343172 -C 3.055142 5.219203 16.424080 -C -6.047533 0.036229 16.424080 -H 3.119232 4.293996 16.705797 -H -5.278325 0.554336 16.705797 -H 2.901129 5.769177 17.208794 -H -6.446819 -0.372137 17.208794 -C 4.312947 5.636854 15.747569 -C -7.038133 0.916695 15.747569 -H 4.238988 6.558474 15.451230 -H -7.799298 0.391834 15.451230 -H 5.059004 5.572909 16.364617 -H -7.355783 1.594772 16.364617 -C 5.771310 4.971862 14.010475 -C -7.191414 2.512170 14.010475 -H 6.477280 5.024200 14.674314 -H -7.589725 3.097389 14.674314 -H 5.766924 5.798723 13.504554 -H -7.905304 2.094941 13.504554 -C 6.019630 3.841100 13.110735 -C -6.336306 3.292603 13.110735 -H -6.842815 4.028083 12.735437 -H 6.909830 3.912010 12.735437 -H -5.587812 3.660871 13.606908 -H 5.964313 3.008752 13.606908 -C -4.929483 3.115328 11.211825 -C 5.162694 2.711394 11.211825 -H -4.167099 3.416062 11.731393 -H 5.041946 1.900783 11.731393 -H -5.350214 3.895127 10.815081 -H 6.048386 2.685858 10.815081 -C -4.475976 2.192653 10.142469 -C 4.136881 2.779982 10.142469 -H -5.244209 1.807924 9.690162 -H 4.187813 3.637656 9.690162 -H -3.947778 2.677416 9.488378 -H 4.292599 2.080168 9.488378 -C 2.578362 0.954682 15.369347 -C -2.115960 1.755586 15.369347 -C 2.681443 0.147237 16.693125 -C -1.468232 2.248579 16.693125 diff --git a/cell2mol/test/error_2/BOFFOS/Transformed_BOFFOS_All.xyz b/cell2mol/test/error_2/BOFFOS/Transformed_BOFFOS_All.xyz deleted file mode 100644 index 3f209e22f..000000000 --- a/cell2mol/test/error_2/BOFFOS/Transformed_BOFFOS_All.xyz +++ /dev/null @@ -1,159 +0,0 @@ -157 - -K 26.77069 17.52666 10.08941 -Fe 24.37022 14.06874 12.64446 -O 27.21981 16.68587 7.48065 -O 24.64815 17.47095 8.18163 -O 24.19391 18.33158 10.80384 -O 26.35714 19.44292 12.25658 -O 28.89664 18.86594 11.39964 -O 29.41789 17.90865 8.80374 -O 27.91713 15.61315 11.67453 -O 25.78606 15.02139 11.58075 -O 25.95774 13.66798 13.79881 -O 28.10477 14.17047 14.04134 -O 30.56896 15.74273 12.71367 -O 21.13207 20.36623 7.79873 -O 30.63512 13.87395 5.25840 -C 26.15634 16.70234 6.54416 -H 26.30877 16.02932 5.86277 -H 26.11382 17.56993 6.11037 -C 24.88148 16.42861 7.24211 -H 24.15333 16.39020 6.60167 -H 24.93070 15.57558 7.70027 -C 23.39363 17.33419 8.83104 -H 23.35769 16.48517 9.29992 -H 22.68023 17.35044 8.17402 -C 23.21683 18.44786 9.79317 -H 23.31260 19.29836 9.33696 -H 22.32932 18.40987 10.18406 -C 24.04380 19.30068 11.82367 -H 23.17004 19.21605 12.23796 -H 24.11922 20.19318 11.44935 -C 25.10482 19.08162 12.82674 -H 24.93192 19.62125 13.61341 -H 25.11835 18.15029 13.09384 -C 27.42414 19.28865 13.17475 -H 27.48823 18.36344 13.45646 -H 27.27013 19.83863 13.95946 -C 28.68195 19.70630 12.49824 -H 28.60799 20.62792 12.20190 -H 29.42800 19.64236 13.11528 -C 30.14031 19.04131 10.76114 -H 30.84628 19.09365 11.42498 -H 30.13592 19.86817 10.25522 -C 30.38863 17.91055 9.86140 -H 31.27883 17.98146 9.48610 -H 30.33331 17.07820 10.35758 -C 29.53169 16.78084 7.96249 -H 29.41095 15.97023 8.48206 -H 30.41739 16.75531 7.56575 -C 28.50588 16.84943 6.89314 -H 28.55681 17.70710 6.44083 -H 28.66160 16.14962 6.23904 -C 26.94736 15.02413 12.12001 -C 27.05044 14.21669 13.44379 -H 29.73993 15.70854 12.46119 -H 21.10599 21.19562 7.48971 -H 29.76430 13.70364 5.15019 -H 30.72322 15.28857 13.42624 -H 20.29816 20.62370 7.92837 -H 30.60746 13.83027 6.14449 -K 20.17412 14.42076 10.08941 -K 26.16219 10.26092 10.08941 -O 20.67771 15.23011 7.48065 -O 25.20949 10.29237 7.48065 -O 21.28364 12.61045 8.18163 -O 27.17521 12.12695 8.18163 -O 20.76543 11.78675 10.80384 -O 28.14766 12.09002 10.80384 -O 18.72136 13.10450 12.25658 -O 28.02849 9.66093 12.25658 -O 17.95130 15.59225 11.39964 -O 26.25906 7.75016 11.39964 -O 18.51971 16.52232 8.80374 -O 25.16940 7.77738 8.80374 -O 21.25805 16.37037 11.67453 -O 23.93182 10.22483 11.67453 -O 22.83607 14.82069 11.58075 -O 24.48487 12.36627 11.58075 -O 23.92232 15.64607 13.79881 -O 23.22695 12.89430 13.79881 -O 22.58860 10.78367 14.04134 -O 22.41363 17.25421 14.04134 -C 21.19518 14.30089 6.54416 -C 25.75547 11.20512 6.54416 -H 21.70181 14.76940 5.86277 -H 25.09642 11.40962 5.86277 -H 20.46509 13.83027 6.11037 -H 26.52809 10.80815 6.11037 -C 22.06966 13.33369 7.24211 -C 26.15586 12.44604 7.24211 -H 26.48667 13.09584 6.60167 -H 22.46700 12.72230 6.60167 -H 25.39250 12.82993 7.70027 -H 22.78380 13.80283 7.70027 -C 22.02933 11.59238 8.83104 -C 27.68404 13.28177 8.83104 -H 22.78258 11.98576 9.29992 -H 26.96673 13.73741 9.29992 -H 22.37196 10.96643 8.17402 -H 28.05481 13.89147 8.17402 -C 21.15327 10.88244 9.79317 -C 28.73690 12.87805 9.79317 -H 20.36883 10.54013 9.33696 -H 29.42557 12.36986 9.33696 -H 21.62992 10.13282 10.18406 -H 29.14776 13.66566 10.18406 -C 20.00122 11.17220 11.82367 -C 29.06198 11.73547 11.82367 -H 20.51139 10.45782 12.23796 -H 29.42557 12.53447 12.23796 -H 19.19059 10.79127 11.44935 -H 29.79719 11.22390 11.44935 -C 19.66042 12.20060 12.82674 -C 28.34176 10.92612 12.82674 -H 28.89554 10.80604 13.61341 -H 19.27953 11.78105 13.61341 -H 27.52844 11.38007 13.09384 -H 20.46021 12.67798 13.09384 -C 18.32147 14.10568 13.17475 -C 27.36139 8.81402 13.17475 -H 19.09068 14.62378 13.45646 -H 26.52809 9.22112 13.45646 -H 17.92218 13.69731 13.95946 -H 27.91469 8.67241 13.95946 -C 17.33087 14.98614 12.49824 -C 27.09418 7.51590 12.49824 -H 16.56970 14.46128 12.20190 -H 27.92931 7.11914 12.20190 -H 17.01322 15.66422 13.11528 -H 26.66578 6.90177 13.11528 -C 17.17759 16.58162 10.76114 -C 25.78910 6.58542 10.76114 -H 16.77927 17.16684 11.42498 -H 25.48145 5.94786 11.42498 -H 16.46370 16.16439 10.25522 -H 26.50738 6.17579 10.25522 -C 18.03269 17.36205 9.86140 -C 24.68567 6.93575 9.86140 -H 24.30198 6.12936 9.48610 -H 17.52619 18.09753 9.48610 -H 23.99250 7.39983 10.35758 -H 18.78119 17.73032 10.35758 -C 24.13579 8.24273 7.96249 -C 19.43952 17.18478 7.96249 -H 23.49415 8.75260 8.48206 -H 20.20190 17.48551 8.48206 -H 23.67083 7.48846 7.56575 -H 19.01879 17.96458 7.56575 -C 24.70810 9.09681 6.89314 -C 19.89302 16.26210 6.89314 -H 25.42540 8.62387 6.44083 -H 19.12479 15.87737 6.44083 -H 24.02418 9.31186 6.23904 -H 20.42122 16.74686 6.23904 -C 22.25304 15.82503 12.12001 -C 23.90660 11.35918 12.12001 -C 22.90077 16.31803 13.44379 -C 23.15579 11.67363 13.44379 diff --git a/cell2mol/test/error_2/BOFFOS/cell2mol.out b/cell2mol/test/error_2/BOFFOS/cell2mol.out deleted file mode 100644 index 725851d66..000000000 --- a/cell2mol/test/error_2/BOFFOS/cell2mol.out +++ /dev/null @@ -1,61607 +0,0 @@ -cell2mol version 2.0 -INITIATING cell object from info path: /Users/ycho/cell2mol/cell2mol/test/error_2/BOFFOS/BOFFOS.info -Debug level: 2 -Checking atomic labels and coordinates -Atomic labels: 525 from ase 175 from cif2cell -Cartesian coordinates: 525 from ase 175 from cif2cell -Atomic labels and coordinates are inconsistent -######################################### - GETREFS: Generate reference molecules -######################################### -GETREFS: found 10 reference molecules -GETREFS: ['C6-O12-Fe', 'H24-C12-O6', 'H2-O', 'H2-O', 'H2-O', 'H24-C12-O6', 'H24-C12-O6', 'K', 'K', 'K'] -GETREFS: [------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 19 - Formula = C6-O12-Fe - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Number of Ligands = 3 - Number of Metals = 1 ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 42 - Formula = H24-C12-O6 - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 3 - Formula = H2-O - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 3 - Formula = H2-O - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 3 - Formula = H2-O - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 42 - Formula = H24-C12-O6 - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 42 - Formula = H24-C12-O6 - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = K - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = K - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = K - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES ---------------------------------------------------- -] -GETREFS: working with C6-O12-Fe - -LIGAND.SPLIT_LIGAND: splitting C2-O4 into groups -LIGAND.SPLIT_LIGAND: self.indices=[0, 1, 2, 3, 4, 5] -LIGAND.SPLIT_LIGAND: connected_idx=[1, 2] -LIGAND.SPLIT_LIGAND: conn_labels=['O', 'O'] -SPILT_SPECIES: Laplacian lap=array([[0, 0], - [0, 0]]) -SPILT_SPECIES: graph=<2x2 sparse matrix of type '' - with 0 stored elements in Compressed Sparse Row format> -LIGAND.SPLIT_LIGAND: blocklist=[[1], [0]] -LIGAND.SPLIT_LIGAND: block=[1] -EXTRACT_FROM_LIST. received: entrylist=[1] old_array=[1, 2] -EXTRACT_FROM_LIST. received: idx=0 val=1 old_array[val]=2 -EXTRACT_FROM_LIST. new_array=array([2], dtype=object) -LIGAND.SPLIT_LIGAND: gr_indices=[2] -EXTRACT_FROM_LIST. received: entrylist=[1] old_array=['O', 'O'] -EXTRACT_FROM_LIST. received: idx=0 val=1 old_array[val]='O' -EXTRACT_FROM_LIST. new_array=array(['O'], dtype=object) -Entering COORD_CORR_NONHAPTIC: - Coordinating atom label=O with mconnec=1, group index 0 - evaluating coordination with metal Fe - -------------- Cell2mol METAL Object -------------- - Version = 0.1 - Type = atom - Sub-Type = metal - Label = Fe - Atomic Number = 26 - Index in Molecule = 0 - Metal Adjacency (mconnec) = 6 - Regular Adjacencies (connec) = 6 ----------------------------------------------------- - -ADD_ATOM: Metalist length 1 -ADD_ATOM: Ligand Atoms 6 -ADD_ATOM: site= 2 -ADD_ATOM: target ligand atom O -ADD_ATOM: evaluating apos=array([11.04244682, 5.85957365, 10.54948056]) and tgt.coord=[12.18571845, 7.034020882505502, 9.3951224] -ADD_ATOM: Chosen Metal index 0. H is added at site 2 - connectivity verified for atom O with ligand index 2 -LIGAND.SPLIT_LIGAND: new group is found -LIGAND.SPLIT_LIGAND: block=[0] -EXTRACT_FROM_LIST. received: entrylist=[0] old_array=[1, 2] -EXTRACT_FROM_LIST. received: idx=0 val=0 old_array[val]=1 -EXTRACT_FROM_LIST. new_array=array([1], dtype=object) -LIGAND.SPLIT_LIGAND: gr_indices=[1] -EXTRACT_FROM_LIST. received: entrylist=[0] old_array=['O', 'O'] -EXTRACT_FROM_LIST. received: idx=0 val=0 old_array[val]='O' -EXTRACT_FROM_LIST. new_array=array(['O'], dtype=object) -Entering COORD_CORR_NONHAPTIC: - Coordinating atom label=O with mconnec=1, group index 0 - evaluating coordination with metal Fe - -------------- Cell2mol METAL Object -------------- - Version = 0.1 - Type = atom - Sub-Type = metal - Label = Fe - Atomic Number = 26 - Index in Molecule = 0 - Metal Adjacency (mconnec) = 6 - Regular Adjacencies (connec) = 6 ----------------------------------------------------- - -ADD_ATOM: Metalist length 1 -ADD_ATOM: Ligand Atoms 6 -ADD_ATOM: site= 1 -ADD_ATOM: target ligand atom O -ADD_ATOM: evaluating apos=array([12.3003746 , 5.33154724, 8.33142064]) and tgt.coord=[12.18571845, 7.034020882505502, 9.3951224] -ADD_ATOM: Chosen Metal index 0. H is added at site 1 - connectivity verified for atom O with ligand index 1 -LIGAND.SPLIT_LIGAND: new group is found -LIGAND.SPLIT_LIGAND: found groups ['O', 'O'] -[------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 1 - Formula = O - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = split_ligand - Number of Metals = 1 ---------------------------------------------------- -, ------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 1 - Formula = O - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = split_ligand - Number of Metals = 1 ---------------------------------------------------- -] - -LIGAND.SPLIT_LIGAND: splitting C2-O4 into groups -LIGAND.SPLIT_LIGAND: self.indices=[0, 1, 2, 3, 4, 5] -LIGAND.SPLIT_LIGAND: connected_idx=[1, 2] -LIGAND.SPLIT_LIGAND: conn_labels=['O', 'O'] -SPILT_SPECIES: Laplacian lap=array([[0, 0], - [0, 0]]) -SPILT_SPECIES: graph=<2x2 sparse matrix of type '' - with 0 stored elements in Compressed Sparse Row format> -LIGAND.SPLIT_LIGAND: blocklist=[[1], [0]] -LIGAND.SPLIT_LIGAND: block=[1] -EXTRACT_FROM_LIST. received: entrylist=[1] old_array=[1, 2] -EXTRACT_FROM_LIST. received: idx=0 val=1 old_array[val]=2 -EXTRACT_FROM_LIST. new_array=array([2], dtype=object) -LIGAND.SPLIT_LIGAND: gr_indices=[2] -EXTRACT_FROM_LIST. received: entrylist=[1] old_array=['O', 'O'] -EXTRACT_FROM_LIST. received: idx=0 val=1 old_array[val]='O' -EXTRACT_FROM_LIST. new_array=array(['O'], dtype=object) -Entering COORD_CORR_NONHAPTIC: - Coordinating atom label=O with mconnec=1, group index 0 - evaluating coordination with metal Fe - -------------- Cell2mol METAL Object -------------- - Version = 0.1 - Type = atom - Sub-Type = metal - Label = Fe - Atomic Number = 26 - Index in Molecule = 0 - Metal Adjacency (mconnec) = 6 - Regular Adjacencies (connec) = 6 ----------------------------------------------------- - -ADD_ATOM: Metalist length 1 -ADD_ATOM: Ligand Atoms 6 -ADD_ATOM: site= 2 -ADD_ATOM: target ligand atom O -ADD_ATOM: evaluating apos=array([11.73781623, 8.61134678, 10.54948056]) and tgt.coord=[12.18571845, 7.034020882505502, 9.3951224] -ADD_ATOM: Chosen Metal index 0. H is added at site 2 - connectivity verified for atom O with ligand index 2 -LIGAND.SPLIT_LIGAND: new group is found -LIGAND.SPLIT_LIGAND: block=[0] -EXTRACT_FROM_LIST. received: entrylist=[0] old_array=[1, 2] -EXTRACT_FROM_LIST. received: idx=0 val=0 old_array[val]=1 -EXTRACT_FROM_LIST. new_array=array([1], dtype=object) -LIGAND.SPLIT_LIGAND: gr_indices=[1] -EXTRACT_FROM_LIST. received: entrylist=[0] old_array=['O', 'O'] -EXTRACT_FROM_LIST. received: idx=0 val=0 old_array[val]='O' -EXTRACT_FROM_LIST. new_array=array(['O'], dtype=object) -Entering COORD_CORR_NONHAPTIC: - Coordinating atom label=O with mconnec=1, group index 0 - evaluating coordination with metal Fe - -------------- Cell2mol METAL Object -------------- - Version = 0.1 - Type = atom - Sub-Type = metal - Label = Fe - Atomic Number = 26 - Index in Molecule = 0 - Metal Adjacency (mconnec) = 6 - Regular Adjacencies (connec) = 6 ----------------------------------------------------- - -ADD_ATOM: Metalist length 1 -ADD_ATOM: Ligand Atoms 6 -ADD_ATOM: site= 1 -ADD_ATOM: target ligand atom O -ADD_ATOM: evaluating apos=array([10.65156806, 7.78596257, 8.33142064]) and tgt.coord=[12.18571845, 7.034020882505502, 9.3951224] -ADD_ATOM: Chosen Metal index 0. H is added at site 1 - connectivity verified for atom O with ligand index 1 -LIGAND.SPLIT_LIGAND: new group is found -LIGAND.SPLIT_LIGAND: found groups ['O', 'O'] -[------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 1 - Formula = O - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = split_ligand - Number of Metals = 1 ---------------------------------------------------- -, ------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 1 - Formula = O - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = split_ligand - Number of Metals = 1 ---------------------------------------------------- -] - -LIGAND.SPLIT_LIGAND: splitting C2-O4 into groups -LIGAND.SPLIT_LIGAND: self.indices=[0, 1, 2, 3, 4, 5] -LIGAND.SPLIT_LIGAND: connected_idx=[1, 2] -LIGAND.SPLIT_LIGAND: conn_labels=['O', 'O'] -SPILT_SPECIES: Laplacian lap=array([[0, 0], - [0, 0]]) -SPILT_SPECIES: graph=<2x2 sparse matrix of type '' - with 0 stored elements in Compressed Sparse Row format> -LIGAND.SPLIT_LIGAND: blocklist=[[1], [0]] -LIGAND.SPLIT_LIGAND: block=[1] -EXTRACT_FROM_LIST. received: entrylist=[1] old_array=[1, 2] -EXTRACT_FROM_LIST. received: idx=0 val=1 old_array[val]=2 -EXTRACT_FROM_LIST. new_array=array([2], dtype=object) -LIGAND.SPLIT_LIGAND: gr_indices=[2] -EXTRACT_FROM_LIST. received: entrylist=[1] old_array=['O', 'O'] -EXTRACT_FROM_LIST. received: idx=0 val=1 old_array[val]='O' -EXTRACT_FROM_LIST. new_array=array(['O'], dtype=object) -Entering COORD_CORR_NONHAPTIC: - Coordinating atom label=O with mconnec=1, group index 0 - evaluating coordination with metal Fe - -------------- Cell2mol METAL Object -------------- - Version = 0.1 - Type = atom - Sub-Type = metal - Label = Fe - Atomic Number = 26 - Index in Molecule = 0 - Metal Adjacency (mconnec) = 6 - Regular Adjacencies (connec) = 6 ----------------------------------------------------- - -ADD_ATOM: Metalist length 1 -ADD_ATOM: Ligand Atoms 6 -ADD_ATOM: site= 2 -ADD_ATOM: target ligand atom O -ADD_ATOM: evaluating apos=array([13.77323696, 6.63325264, 10.54948056]) and tgt.coord=[12.18571845, 7.034020882505502, 9.3951224] -ADD_ATOM: Chosen Metal index 0. H is added at site 2 - connectivity verified for atom O with ligand index 2 -LIGAND.SPLIT_LIGAND: new group is found -LIGAND.SPLIT_LIGAND: block=[0] -EXTRACT_FROM_LIST. received: entrylist=[0] old_array=[1, 2] -EXTRACT_FROM_LIST. received: idx=0 val=0 old_array[val]=1 -EXTRACT_FROM_LIST. new_array=array([1], dtype=object) -LIGAND.SPLIT_LIGAND: gr_indices=[1] -EXTRACT_FROM_LIST. received: entrylist=[0] old_array=['O', 'O'] -EXTRACT_FROM_LIST. received: idx=0 val=0 old_array[val]='O' -EXTRACT_FROM_LIST. new_array=array(['O'], dtype=object) -Entering COORD_CORR_NONHAPTIC: - Coordinating atom label=O with mconnec=1, group index 0 - evaluating coordination with metal Fe - -------------- Cell2mol METAL Object -------------- - Version = 0.1 - Type = atom - Sub-Type = metal - Label = Fe - Atomic Number = 26 - Index in Molecule = 0 - Metal Adjacency (mconnec) = 6 - Regular Adjacencies (connec) = 6 ----------------------------------------------------- - -ADD_ATOM: Metalist length 1 -ADD_ATOM: Ligand Atoms 6 -ADD_ATOM: site= 1 -ADD_ATOM: target ligand atom O -ADD_ATOM: evaluating apos=array([13.60155735, 7.98666325, 8.33142064]) and tgt.coord=[12.18571845, 7.034020882505502, 9.3951224] -ADD_ATOM: Chosen Metal index 0. H is added at site 1 - connectivity verified for atom O with ligand index 1 -LIGAND.SPLIT_LIGAND: new group is found -LIGAND.SPLIT_LIGAND: found groups ['O', 'O'] -[------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 1 - Formula = O - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = split_ligand - Number of Metals = 1 ---------------------------------------------------- -, ------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 1 - Formula = O - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = split_ligand - Number of Metals = 1 ---------------------------------------------------- -] -LIGAND.Get_denticity: checking connectivity of ligand C2-O4 -LIGAND.Get_denticity: initial connectivity is 2 -LIGAND.Get_denticity: final connectivity of ligand C2-O4 is 2 -LIGAND.Get_denticity: checking connectivity of ligand C2-O4 -LIGAND.Get_denticity: initial connectivity is 2 -LIGAND.Get_denticity: final connectivity of ligand C2-O4 is 2 -LIGAND.Get_denticity: checking connectivity of ligand C2-O4 -LIGAND.Get_denticity: initial connectivity is 2 -LIGAND.Get_denticity: final connectivity of ligand C2-O4 is 2 - -METAL.Get_coord_geometry: Fe -METAL.Get_coord_geometry: -coord_group=[------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 1 - Formula = O - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = split_ligand - Number of Metals = 1 ---------------------------------------------------- -, ------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 1 - Formula = O - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = split_ligand - Number of Metals = 1 ---------------------------------------------------- -, ------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 1 - Formula = O - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = split_ligand - Number of Metals = 1 ---------------------------------------------------- -, ------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 1 - Formula = O - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = split_ligand - Number of Metals = 1 ---------------------------------------------------- -, ------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 1 - Formula = O - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = split_ligand - Number of Metals = 1 ---------------------------------------------------- -, ------------- Cell2mol GROUP Object -------------- - Version = 0.1 - Type = specie - Sub-Type = group - Number of Atoms = 1 - Formula = O - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = split_ligand - Number of Metals = 1 ---------------------------------------------------- -] -METAL.Get_coord_geometry: coord_nr=6 -SHAPE_MEASURE: symbols=['Fe', 'O', 'O', 'O', 'O', 'O', 'O'] -SHAPE_MEASURE: positions=[[12.18571845, 7.034020882505502, 9.3951224], [11.042446815000002, 5.859573651448104, 10.54948056], [12.300374595000001, 5.331547241366232, 8.33142064], [11.73781623, 8.611346777370374, 10.54948056], [10.651568055000002, 7.785962568805145, 8.33142064], [13.773236955000003, 6.633252636004514, 10.54948056], [13.60155735, 7.986663254651612, 8.33142064]] -SHAPE_MEASURE: coordination number of metal center 6 -SHAPE_MEASURE: connectivity of metal center(1) [[1, 2], [1, 3], [1, 4], [1, 5], [1, 6], [1, 7]] -DEFINE_coordination_geometry: The number of coordinating points: 6 -DEFINE_coordination_geometry: {'Hexagon': 31.305, 'Pentagonal pyramidal': 26.061, 'Octahedral': 0.861, 'Trigonal prismatic': 12.204} -DEFINE_coordination_geometry: The type of hapticity : [] -DEFINE_coordination_geometry: The most likely geometry is 'Octahedral' with deviation value 0.861 -METAL.Get_coord_geometry: self.coord_geometry='Octahedral' self.geom_deviation=0.861 -METAL.Get_relative_metal_radius: diff_list=[1.345, 1.351, 1.345, 1.353, 1.343, 1.351] -METAL.Get_relative_metal_radius: average=1.348 -METAL.Get_coord_geometry: self.rel_metal_radius=1.021 -GETREFS: working with H24-C12-O6 -GETREFS: working with H2-O -GETREFS: working with H2-O -GETREFS: working with H2-O -GETREFS: working with H24-C12-O6 -GETREFS: working with H24-C12-O6 -GETREFS: working with K -GETREFS: working with K -GETREFS: working with K - -################## -Checking Missing H -################## -Adjacency [8, 10, 18] ['O', 'O', 'C'] -Adjacency [12, 13, 16] ['O', 'O', 'C'] -Adjacency [7, 9, 17] ['O', 'O', 'C'] -Adjacency [11, 14, 15] ['O', 'O', 'C'] -Adjacency [1, 2, 6] ['O', 'O', 'C'] -Adjacency [3, 4, 5] ['O', 'O', 'C'] -Adjacency [0, 7, 8, 9] ['O', 'H', 'H', 'C'] -Adjacency [1, 6, 10, 11] ['O', 'C', 'H', 'H'] -Adjacency [1, 13, 14, 15] ['O', 'H', 'H', 'C'] -Adjacency [2, 12, 16, 17] ['O', 'C', 'H', 'H'] -Adjacency [2, 19, 20, 21] ['O', 'H', 'H', 'C'] -Adjacency [3, 18, 22, 23] ['O', 'C', 'H', 'H'] -Adjacency [3, 25, 26, 27] ['O', 'H', 'H', 'C'] -Adjacency [4, 24, 28, 29] ['O', 'C', 'H', 'H'] -Adjacency [4, 31, 32, 33] ['O', 'H', 'H', 'C'] -Adjacency [5, 30, 34, 35] ['O', 'C', 'H', 'H'] -Adjacency [5, 37, 38, 39] ['O', 'H', 'H', 'C'] -Adjacency [0, 36, 40, 41] ['O', 'C', 'H', 'H'] -Adjacency [0, 7, 8, 9] ['O', 'H', 'H', 'C'] -Adjacency [1, 6, 10, 11] ['O', 'C', 'H', 'H'] -Adjacency [1, 13, 14, 15] ['O', 'H', 'H', 'C'] -Adjacency [2, 12, 16, 17] ['O', 'C', 'H', 'H'] -Adjacency [2, 19, 20, 21] ['O', 'H', 'H', 'C'] -Adjacency [3, 18, 22, 23] ['O', 'C', 'H', 'H'] -Adjacency [3, 25, 26, 27] ['O', 'H', 'H', 'C'] -Adjacency [4, 24, 28, 29] ['O', 'C', 'H', 'H'] -Adjacency [4, 31, 32, 33] ['O', 'H', 'H', 'C'] -Adjacency [5, 30, 34, 35] ['O', 'C', 'H', 'H'] -Adjacency [5, 37, 38, 39] ['O', 'H', 'H', 'C'] -Adjacency [0, 36, 40, 41] ['O', 'C', 'H', 'H'] -Adjacency [0, 7, 8, 9] ['O', 'H', 'H', 'C'] -Adjacency [1, 6, 10, 11] ['O', 'C', 'H', 'H'] -Adjacency [1, 13, 14, 15] ['O', 'H', 'H', 'C'] -Adjacency [2, 12, 16, 17] ['O', 'C', 'H', 'H'] -Adjacency [2, 19, 20, 21] ['O', 'H', 'H', 'C'] -Adjacency [3, 18, 22, 23] ['O', 'C', 'H', 'H'] -Adjacency [3, 25, 26, 27] ['O', 'H', 'H', 'C'] -Adjacency [4, 24, 28, 29] ['O', 'C', 'H', 'H'] -Adjacency [4, 31, 32, 33] ['O', 'H', 'H', 'C'] -Adjacency [5, 30, 34, 35] ['O', 'C', 'H', 'H'] -Adjacency [5, 37, 38, 39] ['O', 'H', 'H', 'C'] -Adjacency [0, 36, 40, 41] ['O', 'C', 'H', 'H'] -Not a Single Molecule has Missing H atoms (apparently) -------------------------------- -Errors in Reference Molecules -------------------------------- -Cell2mol terminated with error number 0. Message: -No Errors Found - -SAVING cell2mol CELL object to /Users/ycho/cell2mol/cell2mol/test/error_2/BOFFOS/Ref_Cell_BOFFOS.cell -ENTERING cell2mol with debug=2 -Entered CELL.MOLECLIST with debug=2 -CELL.MOLECLIST passed initial checks -CELL.MOLECLIST: ions_idx=[0, 1, 2, 3, 4, 5, 6, 7, 8] with label='K' -CELL.MOLECLIST: ions_idx=[0, 1, 2, 3, 4, 5, 6, 7, 8, 0, 1, 2, 3, 4, 5, 6, 7, 8] with label='K' -CELL.MOLECLIST: ions_idx=[0, 1, 2, 3, 4, 5, 6, 7, 8, 0, 1, 2, 3, 4, 5, 6, 7, 8, 0, 1, 2, 3, 4, 5, 6, 7, 8] with label='K' -CELL.MOLECLIST: found 27 ions -CELL.MOLECLIST: rest_idx=[9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524] -CELL.MOLECLIST: rest_labels=['Fe', 'Fe', 'Fe', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -CELL.MOLECLIST: rest_coord=[array([12.18571845, 7.03402088, 9.3951224 ]), array([1.21845000e-03, 1.40687452e+01, 2.89645573e+00]), array([-12.18328155, 21.10346959, 6.14578907]), array([15.03530747, 9.65114938, 4.23131436]), array([8.49320573, 8.19538353, 4.23131436]), array([13.02498681, 3.25764015, 4.23131436]), array([ 2.85080746, 16.68587374, 7.48064769]), array([-3.69129427, 15.23010788, 7.48064769]), array([ 0.84048681, 10.29236451, 7.48064769]), array([2.85080746, 2.61642503, 0.98198103]), array([20.67770573, 1.16065917, 0.98198103]), array([13.02498681, 17.32708886, 0.98198103]), array([12.4636469 , 10.43622462, 4.93229304]), array([9.09914091, 5.57572252, 4.93229304]), array([14.9907122 , 5.09222592, 4.93229304]), array([ 0.2791469 , 17.47094898, 8.18162637]), array([-3.08535909, 12.61044688, 8.18162637]), array([ 2.8062122 , 12.12695027, 8.18162637]), array([0.2791469 , 3.40150027, 1.68295971]), array([ 9.09914091, 19.64517123, 1.68295971]), array([-9.3782878 , 19.16167463, 1.68295971]), array([12.00940874, 11.2968528 , 7.55450504]), array([8.58093412, 4.75202665, 7.55450504]), array([15.96315714, 5.05529362, 7.55450504]), array([-0.17509126, 18.33157715, 1.05583837]), array([-3.60356587, 11.786751 , 1.05583837]), array([ 3.77865714, 12.09001797, 1.05583837]), array([-0.17509126, 4.26212844, 4.30517171]), array([ 8.58093413, 18.82147536, 4.30517171]), array([-8.40584286, 19.12474233, 4.30517171]), array([14.17264487, 12.40819855, 9.00724948]), array([6.53686241, 6.06977122, 9.00724948]), array([15.84399273, 2.6262033 , 9.00724948]), array([ 1.98814487, 19.44292291, 2.50858281]), array([-5.64763759, 13.10449557, 2.50858281]), array([3.65949273, 9.66092765, 2.50858281]), array([1.98814487, 5.3734742 , 5.75791615]), array([ 6.53686241, 20.13921993, 5.75791615]), array([-8.52500727, 16.69565201, 5.75791615]), array([16.71213836, 11.83121046, 8.1503028 ]), array([5.76680201, 8.55753114, 8.1503028 ]), array([14.07455964, 0.71543147, 8.1503028 ]), array([ 4.52763836, 18.86593482, 1.65163613]), array([-6.417698 , 15.59225549, 1.65163613]), array([1.89005964, 7.75015582, 1.65163613]), array([4.52763836, 4.79648611, 4.90096947]), array([17.951302 , 1.52280678, 4.90096947]), array([14.07455964, 14.78488018, 4.90096947]), array([17.23339127, 10.87392517, 5.5544104 ]), array([6.33520893, 9.48759204, 5.5544104 ]), array([12.9848998 , 0.74265585, 5.5544104 ]), array([ 5.04889127, 17.90864953, 8.80374373]), array([-5.84929107, 16.5223164 , 8.80374373]), array([0.8003998 , 7.77738021, 8.80374373]), array([5.04889127, 3.83920082, 2.30507707]), array([18.51970893, 2.45286769, 2.30507707]), array([12.98489981, 14.81210456, 2.30507707]), array([15.7326264 , 8.57842427, 8.4251964 ]), array([9.07355346, 9.335642 , 8.4251964 ]), array([11.74732014, 3.1901068 , 8.4251964 ]), array([ 3.5481264 , 15.61314862, 1.92652973]), array([-3.11094654, 16.37036635, 1.92652973]), array([-0.43717986, 10.22483116, 1.92652973]), array([3.5481264 , 1.54369991, 5.17586307]), array([21.25805346, 2.30091764, 5.17586307]), array([11.74732014, 17.25955551, 5.17586307]), array([13.60155735, 7.98666325, 8.33142064]), array([10.65156806, 7.78596257, 8.33142064]), array([12.30037459, 5.33154724, 8.33142064]), array([ 1.41705735, 15.02138761, 1.83275397]), array([-1.53293194, 14.82068692, 1.83275397]), array([ 0.1158746 , 12.3662716 , 1.83275397]), array([1.41705735, 0.9519389 , 5.08208731]), array([22.83606806, 0.75123821, 5.08208731]), array([12.3003746 , 19.40099595, 5.08208731]), array([13.77323696, 6.63325264, 0.80148056]), array([11.73781623, 8.61134678, 0.80148056]), array([11.04244681, 5.85957365, 0.80148056]), array([ 1.58873696, 13.66797699, 4.05081389]), array([-0.44668377, 15.64607113, 4.05081389]), array([-1.14205319, 12.89429801, 4.05081389]), array([-10.59576304, 20.70270135, 7.30014723]), array([-0.44668377, 1.57662242, 7.30014723]), array([11.04244681, 19.92902236, 7.30014723]), array([15.9202677, 7.135743 , 1.0440108]), array([10.22913144, 10.21948476, 1.0440108 ]), array([10.40410086, 3.7489453 , 1.0440108 ]), array([ 3.7357677 , 14.17046735, 4.29334413]), array([-1.95536856, 17.25420912, 4.29334413]), array([-1.78039914, 10.78366966, 4.29334413]), array([3.7357677 , 0.10101864, 7.54267747]), array([22.41363144, 3.18476041, 7.54267747]), array([10.40410086, 17.81839401, 7.54267747]), array([18.38446098, 8.70800389, 9.4643332 ]), array([ 7.63541693, 11.5674083 , 9.4643332 ]), array([10.53362209, 0.82876088, 9.4643332 ]), array([ 6.19996098, 15.74272824, 2.96566653]), array([-4.54908307, 18.60213265, 2.96566653]), array([-1.6508779 , 7.86348523, 2.96566653]), array([6.19996098, 1.67327954, 6.21499987]), array([19.81991692, 4.53268394, 6.21499987]), array([10.5336221 , 14.89820959, 6.21499987]), array([ 8.94756573, 13.33150613, 4.5493916 ]), array([8.34979416, 1.08306616, 4.5493916 ]), array([19.25614011, 6.68960078, 4.5493916 ]), array([-3.23693427, 20.36623048, 7.79872493]), array([-3.83470584, 8.11779052, 7.79872493]), array([ 7.07164011, 13.72432513, 7.79872493]), array([-3.23693427, 6.29678177, 1.30005827]), array([ 8.34979416, 15.15251487, 1.30005827]), array([-5.11285989, 20.75904949, 1.30005827]), array([18.45062282, 6.83922937, 2.0090628 ]), array([ 9.22074222, 12.55909339, 2.0090628 ]), array([8.88213496, 1.70585031, 2.0090628 ]), array([ 6.26612282, 13.87395372, 5.25839613]), array([-2.96375778, 19.59381775, 5.25839613]), array([-3.30236504, 8.74057466, 5.25839613]), array([-5.91837718, 20.90867807, 8.50772947]), array([-2.96375778, 5.52436904, 8.50772947]), array([ 8.88213496, 15.77529902, 8.50772947]), array([13.97184431, 9.66761064, 3.294824 ]), array([9.01068144, 7.26616679, 3.294824 ]), array([13.57097426, 4.17039564, 3.294824 ]), array([ 1.78734431, 16.70233499, 6.54415733]), array([-3.17381856, 14.30089114, 6.54415733]), array([ 1.38647426, 11.20511999, 6.54415733]), array([1.78734431, 2.63288628, 0.04549067]), array([21.19518144, 0.23144243, 0.04549067]), array([13.57097425, 18.23984435, 0.04549067]), array([14.1242724 , 8.99459856, 2.6134388 ]), array([9.51731295, 7.73467943, 2.6134388 ]), array([12.91191465, 4.37489508, 2.6134388 ]), array([ 1.9397724 , 16.02932292, 5.86277213]), array([-2.66718705, 14.76940378, 5.86277213]), array([ 0.72741465, 11.40961943, 5.86277213]), array([1.9397724 , 1.95987421, 9.11210547]), array([21.70181295, 0.69995507, 9.11210547]), array([12.91191465, 18.44434379, 9.11210547]), array([13.9293204 , 10.53520319, 2.861038 ]), array([8.2805862 , 6.79554373, 2.861038 ]), array([14.3435934 , 3.77342614, 2.861038 ]), array([ 1.7448204 , 17.56992755, 6.11037133]), array([-3.9039138 , 13.83026808, 6.11037133]), array([ 2.1590934 , 10.8081505 , 6.11037133]), array([1.7448204 , 3.50047884, 9.35970467]), array([ 8.2805862 , 20.86499244, 9.35970467]), array([-10.0254066 , 17.84287485, 9.35970467]), array([12.69698007, 9.39388951, 3.9927808 ]), array([9.88516301, 6.29896253, 3.9927808 ]), array([13.97135693, 5.41132102, 3.9927808 ]), array([ 0.51248007, 16.42861387, 7.24211413]), array([-2.299337 , 13.33368689, 7.24211413]), array([ 1.78685692, 12.44604537, 7.24211413]), array([0.51248007, 2.35916516, 0.74344747]), array([ 9.88516301, 20.36841124, 0.74344747]), array([-10.39764307, 19.48076973, 0.74344747]), array([11.96883435, 9.35547992, 3.3523372 ]), array([10.28249955, 5.68757464, 3.3523372 ]), array([14.3021661, 6.0611185, 3.3523372]), array([-0.21566565, 16.39020427, 6.60167053]), array([-1.90200045, 12.722299 , 6.60167053]), array([ 2.1176661 , 13.09584286, 6.60167053]), array([-0.21566565, 2.32075556, 0.10300387]), array([10.28249955, 19.75702335, 0.10300387]), array([-10.0668339 , 20.13056721, 0.10300387]), array([12.74620545, 8.54085884, 4.4509368 ]), array([10.59929655, 6.7681083 , 4.4509368 ]), array([13.207998 , 5.79520592, 4.4509368 ]), array([ 0.56170545, 15.57558319, 7.70027013]), array([-1.58520345, 13.80283266, 7.70027013]), array([ 1.023498 , 12.82993028, 7.70027013]), array([0.56170545, 1.50613448, 1.20160347]), array([10.59929655, 20.83755701, 1.20160347]), array([-11.161002 , 19.86465463, 1.20160347]), array([11.20913078, 10.29946958, 5.5817048 ]), array([9.84483231, 4.55765722, 5.5817048 ]), array([15.49953692, 6.24704627, 5.5817048 ]), array([-0.97536922, 17.33419394, 8.83103813]), array([-2.33966769, 11.59238157, 8.83103813]), array([ 3.31503692, 13.28177062, 8.83103813]), array([-0.97536922, 3.26474523, 2.33237147]), array([ 9.84483231, 18.62710592, 2.33237147]), array([-8.86946308, 20.31649498, 2.33237147]), array([11.1731865, 9.4504487, 6.0505836]), array([10.5980781, 4.951039 , 6.0505836]), array([14.7822354 , 6.70268537, 6.0505836 ]), array([-1.0113135 , 16.48517305, 9.29991693]), array([-1.5864219 , 11.98576336, 9.29991693]), array([ 2.5977354 , 13.73740972, 9.29991693]), array([-1.0113135 , 2.41572434, 2.80125027]), array([10.5980781 , 19.02048771, 2.80125027]), array([-9.5867646 , 20.77213408, 2.80125027]), array([10.4957283 , 10.31571979, 4.9246896 ]), array([10.18746045, 3.93170744, 4.9246896 ]), array([15.87031125, 6.85674583, 4.9246896 ]), array([-1.6887717 , 17.35044415, 8.17402293]), array([-1.99703955, 10.9664318 , 8.17402293]), array([ 3.68581125, 13.89147018, 8.17402293]), array([-1.6887717 , 3.28099544, 1.67535627]), array([10.18746045, 18.00115615, 1.67535627]), array([-8.49868875, 20.92619454, 1.67535627]), array([11.03233368, 11.41313679, 6.5438324 ]), array([8.96876676, 3.84771283, 6.5438324 ]), array([16.55239956, 5.84332344, 6.5438324 ]), array([-1.15216632, 18.44786115, 0.04516573]), array([-3.21573324, 10.88243719, 0.04516573]), array([ 4.36789956, 12.87804779, 0.04516573]), array([-1.15216632, 4.37841244, 3.29449907]), array([ 8.96876676, 17.91716154, 3.29449907]), array([-7.81660044, 19.91277215, 3.29449907]), array([11.12810385, 12.26363497, 6.087626 ]), array([8.18432865, 3.50540315, 6.087626 ]), array([17.2410675 , 5.33513495, 6.087626 ]), array([-1.05639615, 19.29835932, 9.33695933]), array([-4.00017135, 10.5401275 , 9.33695933]), array([ 5.0565675 , 12.36985931, 9.33695933]), array([-1.05639615, 5.22891061, 2.83829267]), array([ 8.18432865, 17.57485186, 2.83829267]), array([-7.1279325 , 19.40458366, 2.83829267]), array([10.1448147 , 11.37514928, 6.9347272 ]), array([9.4454244 , 3.09809261, 6.9347272 ]), array([16.9632609 , 6.63093118, 6.9347272 ]), array([-2.0396853 , 18.40987364, 0.43606053]), array([-2.7390756 , 10.13281696, 0.43606053]), array([ 4.7787609 , 13.66565553, 0.43606053]), array([-2.0396853 , 4.34042493, 3.68539387]), array([ 9.4454244 , 17.16754132, 3.68539387]), array([-7.4057391 , 20.70037989, 3.68539387]), array([11.8592957 , 12.26595643, 8.5743408 ]), array([7.81672229, 4.13747313, 8.5743408 ]), array([16.87748202, 4.70074351, 8.5743408 ]), array([-0.3252043 , 19.30068078, 2.07567413]), array([-4.36777771, 11.17219748, 2.07567413]), array([ 4.69298202, 11.73546786, 2.07567413]), array([-0.3252043 , 5.23123207, 5.32500747]), array([ 7.81672229, 18.20692184, 5.32500747]), array([-7.49151798, 18.77019222, 5.32500747]), array([10.9855452 , 12.18132869, 8.9886308 ]), array([8.3268873 , 3.42309687, 8.9886308 ]), array([17.2410675, 5.4997475, 8.9886308]), array([-1.1989548 , 19.21605305, 2.48996413]), array([-3.8576127 , 10.45782123, 2.48996413]), array([ 5.0565675 , 12.53447186, 2.48996413]), array([-1.1989548 , 5.14660434, 5.73929747]), array([ 8.3268873 , 17.49254558, 5.73929747]), array([-7.1279325 , 19.56919621, 5.73929747]), array([11.93471775, 13.15845191, 8.2000176 ]), array([7.0060875 , 3.75654281, 8.2000176 ]), array([17.61269475, 4.18917835, 8.2000176 ]), array([-0.24978225, 20.19317626, 1.70135093]), array([-5.1784125 , 10.79126716, 1.70135093]), array([ 5.42819475, 11.22390271, 1.70135093]), array([-0.24978225, 6.12372755, 4.95068427]), array([ 7.0060875 , 17.82599152, 4.95068427]), array([-6.75630525, 18.25862706, 4.95068427]), array([12.92032196, 12.04689511, 9.57741 ]), array([7.47592182, 5.16587948, 9.57741 ]), array([16.15725623, 3.89139847, 9.57741 ]), array([ 0.73582196, 19.08161947, 3.07874333]), array([-4.70857818, 12.20060384, 3.07874333]), array([ 3.97275622, 10.92612283, 3.07874333]), array([0.73582196, 5.01217076, 6.32807667]), array([ 7.47592182, 19.23532819, 6.32807667]), array([-8.21174377, 17.96084718, 6.32807667]), array([12.7474239 , 12.58652882, 0.6160736 ]), array([7.09503435, 4.74632852, 0.6160736 ]), array([16.71104175, 3.77131573, 0.6160736 ]), array([ 0.5629239 , 19.62125317, 3.86540693]), array([-5.08946565, 11.78105288, 3.86540693]), array([ 4.52654175, 10.80604008, 3.86540693]), array([0.5629239 , 5.55180446, 7.11474027]), array([ 7.09503435, 18.81577723, 7.11474027]), array([-7.65795825, 17.84076444, 7.11474027]), array([12.93384675, 11.11556795, 0.0965052 ]), array([8.2757124 , 5.64325588, 0.0965052 ]), array([15.34394085, 4.34534923, 0.0965052 ]), array([ 0.74934675, 18.15029231, 3.34583853]), array([-3.9087876 , 12.67798023, 3.34583853]), array([ 3.15944085, 11.38007359, 3.34583853]), array([0.74934675, 4.0808436 , 6.59517187]), array([ 8.2757124 , 19.71270459, 6.59517187]), array([-9.02505915, 18.41479794, 6.59517187]), array([15.23964153, 12.25392705, 0.1774136 ]), array([6.13696712, 7.07095319, 0.1774136 ]), array([15.17689135, 1.77929283, 0.1774136 ]), array([ 3.05514153, 19.2886514 , 3.42674693]), array([-6.04753289, 14.10567754, 3.42674693]), array([2.99239136, 8.81401719, 3.42674693]), array([3.05514153, 5.21920269, 6.67608027]), array([18.32146711, 0.03622883, 6.67608027]), array([15.17689136, 15.84874154, 6.67608027]), array([15.303732 , 11.3287201, 0.4591308]), array([6.9061746 , 7.58906063, 0.4591308 ]), array([14.3435934 , 2.18639233, 0.4591308 ]), array([ 3.119232 , 18.36344446, 3.70846413]), array([-5.2783254 , 14.62378499, 3.70846413]), array([2.1590934 , 9.22111668, 3.70846413]), array([3.119232 , 4.29399575, 6.95779747]), array([19.0906746 , 0.55433628, 6.95779747]), array([14.3435934 , 16.25584104, 6.95779747]), array([15.08562945, 12.8039018 , 0.9621276 ]), array([5.73768105, 6.66258744, 0.9621276 ]), array([15.7301895 , 1.63768383, 0.9621276 ]), array([ 2.90112945, 19.83862615, 4.21146093]), array([-6.44681895, 13.69731179, 4.21146093]), array([3.5456895 , 8.67240818, 4.21146093]), array([2.90112945, 5.76917744, 7.46079427]), array([ 5.73768105, 20.73203615, 7.46079427]), array([-8.6388105 , 15.70713254, 7.46079427]), array([16.49744747, 12.67157863, 9.2489024 ]), array([5.14636727, 7.95141929, 9.2489024 ]), array([14.90968527, 0.48117515, 9.2489024 ]), array([ 4.31294747, 19.70630299, 2.75023573]), array([-7.03813273, 14.98614364, 2.75023573]), array([2.72518527, 7.5158995 , 2.75023573]), array([4.31294746, 5.63685428, 5.99956907]), array([17.33086727, 0.91669493, 5.99956907]), array([14.90968527, 14.55062386, 5.99956907]), array([16.42348755, 13.59319787, 8.9525632 ]), array([4.38520155, 7.4265585 , 8.9525632 ]), array([15.7448109 , 0.08441669, 8.9525632 ]), array([ 4.23898755, 20.62792223, 2.45389653]), array([-7.79929845, 14.46128286, 2.45389653]), array([3.5603109 , 7.11914105, 2.45389653]), array([4.23898755, 6.55847352, 5.70322987]), array([16.56970155, 0.39183415, 5.70322987]), array([15.7448109 , 14.1538654 , 5.70322987]), array([-7.1254956 , 12.60763299, 0.1179508 ]), array([4.82871735, 8.62949637, 0.1179508 ]), array([ 2.29677825, 20.97121677, 0.1179508 ]), array([ 5.0590044 , 19.64235734, 3.36728413]), array([-7.35578265, 15.66422072, 3.36728413]), array([2.29677825, 6.90176806, 3.36728413]), array([5.0590044 , 5.57290863, 6.61661747]), array([17.01321735, 1.59477201, 6.61661747]), array([14.48127825, 13.93649242, 6.61661747]), array([-6.41318973, 12.00658614, 7.5118088 ]), array([4.99308625, 9.54689477, 7.5118088 ]), array([ 1.42010347, 20.65486522, 7.5118088 ]), array([ 5.77131027, 19.04131049, 1.01314213]), array([-7.19141375, 16.58161912, 1.01314213]), array([1.42010347, 6.58541651, 1.01314213]), array([5.77131027, 4.97186179, 4.26247547]), array([17.17758626, 2.51217041, 4.26247547]), array([13.60460348, 13.62014087, 4.26247547]), array([-5.7072198 , 12.05892449, 8.1756476 ]), array([ 4.59477495, 10.13211349, 8.1756476 ]), array([ 1.11244485, 20.01730815, 8.1756476 ]), array([ 6.4772802 , 19.09364884, 1.67698093]), array([-7.58972505, 17.16683784, 1.67698093]), array([1.11244485, 5.94785944, 1.67698093]), array([6.4772802 , 5.02420013, 4.92631427]), array([16.77927495, 3.09738913, 4.92631427]), array([13.29694485, 12.9825838 , 4.92631427]), array([-6.41757615, 12.83344764, 7.0058876 ]), array([4.2791964 , 9.12966527, 7.0058876 ]), array([ 2.13837975, 20.24523322, 7.0058876 ]), array([ 5.76692385, 19.868172 , 0.50722093]), array([-7.9053036 , 16.16438962, 0.50722093]), array([2.13837975, 6.17578451, 0.50722093]), array([5.76692385, 5.79872329, 3.75655427]), array([16.4636964 , 2.09494091, 3.75655427]), array([14.32287975, 13.21050887, 3.75655427]), array([-6.16486962, 10.87582455, 6.6120684 ]), array([ 5.84819446, 10.32732709, 6.6120684 ]), array([ 0.31667516, 21.00519449, 6.6120684 ]), array([ 6.01963038, 17.9105489 , 0.11340173]), array([-6.33630553, 17.36205144, 0.11340173]), array([0.31667516, 6.93574578, 0.11340173]), array([6.01963038, 3.84110019, 3.36273507]), array([18.03269446, 3.29260273, 3.36273507]), array([12.50117516, 13.97047014, 3.36273507]), array([-5.27467005, 10.94673457, 6.2367704 ]), array([ 5.3416848 , 11.06280752, 6.2367704 ]), array([-0.06701475, 20.19880404, 6.2367704 ]), array([ 6.90982995, 17.98145892, 9.48610373]), array([-6.8428152 , 18.09753188, 9.48610373]), array([-0.06701475, 6.12935533, 9.48610373]), array([6.90982995, 3.91201021, 2.98743707]), array([17.5261848 , 4.02808317, 2.98743707]), array([12.11748525, 13.16407969, 2.98743707]), array([18.14881275, 10.04347596, 7.1082416 ]), array([ 6.5966883 , 10.69559491, 7.1082416 ]), array([11.80799895, 0.36510219, 7.1082416 ]), array([ 5.96431275, 17.07820032, 0.60957493]), array([-5.5878117 , 17.73031926, 0.60957493]), array([-0.37650105, 7.39982655, 0.60957493]), array([5.96431275, 3.00875161, 3.85890827]), array([18.7811883 , 3.66087055, 3.85890827]), array([11.80799895, 14.4345509 , 3.85890827]), array([17.3471945 , 9.74611816, 4.713158 ]), array([ 7.25501683, 10.15005204, 4.713158 ]), array([11.95128867, 1.20800287, 4.713158 ]), array([ 5.1626945 , 16.78084252, 7.96249133]), array([-4.92948317, 17.18477639, 7.96249133]), array([-0.23321133, 8.24272722, 7.96249133]), array([5.1626945 , 2.71139381, 1.46382467]), array([19.43951683, 3.11532768, 1.46382467]), array([11.95128867, 15.27745158, 1.46382467]), array([17.2264461 , 8.93550688, 5.2327264 ]), array([ 8.017401 , 10.4507865, 5.2327264]), array([11.3096529 , 1.71787969, 5.2327264 ]), array([ 5.0419461 , 15.97023123, 8.48205973]), array([-4.167099 , 17.48551086, 8.48205973]), array([-0.8748471 , 8.75260404, 8.48205973]), array([5.0419461 , 1.90078252, 1.98339307]), array([20.201901 , 3.41606215, 1.98339307]), array([11.3096529 , 15.7873284 , 1.98339307]), array([18.2328858 , 9.72058211, 4.3164144 ]), array([ 6.83428605, 10.92985123, 4.3164144 ]), array([11.48632815, 0.45373972, 4.3164144 ]), array([ 6.0483858 , 16.75530647, 7.56574773]), array([-5.35021395, 17.96457559, 7.56574773]), array([-0.69817185, 7.48846408, 7.56574773]), array([6.0483858 , 2.68585776, 1.06708107]), array([19.01878605, 3.89512688, 1.06708107]), array([11.48632815, 14.52318843, 1.06708107]), array([16.32138144, 9.81470673, 3.6438024 ]), array([7.70852392, 9.22737759, 3.6438024 ]), array([12.52359464, 2.06208875, 3.6438024 ]), array([ 4.13688144, 16.84943108, 6.89313573]), array([-4.47597608, 16.26210194, 6.89313573]), array([0.33909464, 9.09681311, 6.89313573]), array([4.13688144, 2.77998237, 0.39446907]), array([19.89302392, 2.19265323, 0.39446907]), array([12.52359464, 16.13153746, 0.39446907]), array([16.37231265, 10.67238032, 3.1914952 ]), array([6.9402912 , 8.84264851, 3.1914952 ]), array([13.24089615, 1.58914423, 3.1914952 ]), array([ 4.18781265, 17.70710467, 6.44082853]), array([-5.2442088 , 15.87737287, 6.44082853]), array([1.05639615, 8.62386859, 6.44082853]), array([4.18781265, 3.63765596, 9.69016187]), array([19.1247912 , 1.80792416, 9.69016187]), array([13.24089615, 15.65859294, 9.69016187]), array([16.47709935, 9.11489235, 2.9897116 ]), array([8.236722 , 9.71214044, 2.9897116 ]), array([11.83967865, 2.27714027, 2.9897116 ]), array([ 4.29259935, 16.1496167 , 6.23904493]), array([-3.947778 , 16.7468648 , 6.23904493]), array([-0.34482135, 9.31186463, 6.23904493]), array([4.29259935, 2.08016799, 9.48837827]), array([20.421222 , 2.67741609, 9.48837827]), array([11.83967865, 16.34658898, 9.48837827]), array([14.76286204, 7.9894068 , 8.87068 ]), array([10.06853973, 8.79031016, 8.87068 ]), array([11.72209823, 4.3244561 , 8.87068 ]), array([ 2.57836205, 15.02413115, 2.37201333]), array([-2.11596027, 15.82503452, 2.37201333]), array([-0.46240177, 11.35918046, 2.37201333]), array([2.57836204, 0.95468244, 5.62134667]), array([22.25303973, 1.75558581, 5.62134667]), array([11.72209823, 18.39390481, 5.62134667]), array([14.86594292, 7.18196114, 0.4464584 ]), array([10.71626775, 9.28330365, 0.4464584 ]), array([10.97128933, 4.63890828, 0.4464584 ]), array([ 2.68144292, 14.21668549, 3.69579173]), array([-1.46823225, 16.318028 , 3.69579173]), array([-1.21321066, 11.67363264, 3.69579173]), array([2.68144292, 0.14723678, 6.94512507]), array([22.90076775, 2.24857929, 6.94512507]), array([10.97128934, 18.70835699, 6.94512507]), array([17.5554276 , 8.67381513, 9.21186 ]), array([ 8.07954195, 10.86653871, 9.21186 ]), array([10.91853045, 1.56381922, 9.21186 ]), array([ 5.3709276 , 15.70853948, 2.71319333]), array([-4.10495805, 17.90126307, 2.71319333]), array([-1.26596955, 8.59854358, 2.71319333]), array([5.3709276 , 1.63909077, 5.96252667]), array([20.26404195, 3.83181436, 5.96252667]), array([10.91853045, 15.63326793, 5.96252667]), array([ 8.9214909 , 14.16090013, 4.24038 ]), array([7.6445553, 0.6457877, 4.24038 ]), array([19.9874538 , 6.29748524, 4.24038 ]), array([8.9214909 , 0.09145142, 7.48971333]), array([19.8290553 , 7.68051205, 7.48971333]), array([ 7.8029538 , 13.3322096 , 7.48971333]), array([-3.2630091 , 7.12617577, 0.99104667]), array([ 7.6445553 , 14.71523641, 0.99104667]), array([-4.3815462 , 20.36693395, 0.99104667]), array([17.5797966 , 6.66891869, 1.90086 ]), array([ 9.8036487, 11.8900911, 1.90086 ]), array([9.1700547 , 2.54516327, 1.90086 ]), array([ 5.3952966 , 13.70364304, 5.15019333]), array([-2.3808513 , 18.92481546, 5.15019333]), array([-3.0144453 , 9.57988763, 5.15019333]), array([-6.7892034 , 20.7383674 , 8.39952667]), array([-2.3808513 , 4.85536675, 8.39952667]), array([ 9.1700547 , 16.61461198, 8.39952667]), array([18.53871675, 8.25384209, 0.428912 ]), array([ 7.9516047 , 11.92807862, 0.428912 ]), array([10.06317855, 0.92225236, 0.428912 ]), array([ 6.35421675, 15.28856644, 3.67824533]), array([-4.2328953 , 18.96280297, 3.67824533]), array([-2.12132145, 7.95697672, 3.67824533]), array([6.35421675, 1.21911773, 6.92757867]), array([20.1361047 , 4.89335426, 6.92757867]), array([10.06317855, 14.99170107, 6.92757867]), array([ 8.11365855, 13.58897704, 4.67904 ]), array([8.5437714, 0.2321459, 4.67904 ]), array([19.89607005, 7.28305012, 4.67904 ]), array([-4.07084145, 20.62370139, 7.92837333]), array([-3.6407286 , 7.26687026, 7.92837333]), array([ 7.71157005, 14.31777448, 7.92837333]), array([20.29815855, 6.55425268, 1.42970667]), array([ 8.5437714 , 14.30159461, 1.42970667]), array([7.71157005, 0.24832577, 1.42970667]), array([18.422964 , 6.79554373, 2.895156 ]), array([ 9.2724045 , 12.55698297, 2.895156 ]), array([8.8581315 , 1.75164636, 2.895156 ]), array([ 6.238464 , 13.83026808, 6.14448933]), array([-2.9120955 , 19.59170733, 6.14448933]), array([-3.3263685 , 8.78637072, 6.14448933]), array([-5.946036 , 20.86499244, 9.39382267]), array([-2.9120955 , 5.52225862, 9.39382267]), array([ 8.8581315 , 15.82109507, 9.39382267])] -CELL.MOLECLIST: rest_indices=[9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524] -SPILT_SPECIES: Laplacian lap=array([[-3, 0, 0, ..., 0, 0, 0], - [ 0, -6, 0, ..., 0, 0, 0], - [ 0, 0, -1, ..., 0, 0, 0], - ..., - [ 0, 0, 0, ..., -1, 0, 0], - [ 0, 0, 0, ..., 0, -1, 0], - [ 0, 0, 0, ..., 0, 0, -1]]) -SPILT_SPECIES: graph=<516x516 sparse matrix of type '' - with 1325 stored elements in Compressed Sparse Row format> -CELL.MOLECLIST: found 123 blocks -CELL.MOLECLIST: blocklist=[[126, 495, 522], [11, 90], [125, 494, 521], [124, 493, 520], [123, 492, 519], [122, 491, 518], [121, 490, 517], [120, 489, 516], [115, 511], [114, 510], [119, 488], [110, 479, 506], [109, 478, 505], [108, 477, 504], [107, 476, 503], [106, 475, 502], [105, 474, 501], [118, 487, 514], [84, 93, 462], [85, 94, 463], [86, 95, 464], [104, 473], [103, 472], [102, 471], [74, 83, 92, 101, 461, 470], [73, 82, 100, 460, 469], [72, 81, 99, 459, 468], [117, 486], [116, 485, 512], [113, 482, 509], [112, 481, 508], [111, 480, 507], [9, 66, 67, 68, 75, 76, 77, 453, 454, 455], [10, 69, 70, 71, 78, 79, 80, 87, 88, 89, 96, 97, 98, 456, 457, 458, 465, 466, 467], [127, 496, 523], [345, 354, 363, 372, 381], [48, 318, 327], [50, 320, 329], [291, 300, 309], [292, 301, 310], [293, 302, 311], [15, 24, 60, 132, 141, 150, 159, 168, 177, 186, 195, 204, 402, 411, 420, 429, 438, 447], [16, 25, 61, 133, 142, 151, 160, 169, 178, 187, 196, 205, 403, 412, 421, 430, 439, 448], [17, 26, 62, 134, 143, 152, 161, 170, 179, 188, 197, 206, 404, 413, 422, 431, 440, 449], [128, 497, 524], [34, 43, 52, 214, 232, 241, 250, 259, 268, 277, 286, 295, 304, 313, 322, 331, 340, 349, 358, 367, 376, 394], [35, 44, 53, 215, 233, 242, 251, 260, 269, 278, 287, 296, 305, 314, 323, 332, 341, 350, 359, 368, 377, 395], [20, 56, 65, 137, 299, 308, 326, 335, 344, 353, 362, 371, 380, 389, 398, 407, 416, 425, 434], [33, 42, 51, 213, 231, 240, 249, 258, 267, 276, 285, 294, 303, 312, 321, 330, 339, 348, 357, 366, 375, 393], [14, 23, 32, 41, 59, 131, 140, 149, 158, 167, 176, 185, 194, 203, 212, 221, 230, 239, 248, 257, 266, 401, 410, 419, 428, 437, 446], [347, 356, 365, 374, 383], [12, 21, 30, 39, 57, 129, 138, 147, 156, 165, 174, 183, 192, 201, 210, 219, 228, 237, 246, 255, 264, 399, 408, 417, 426, 435, 444], [29, 38, 47, 164, 173, 182, 191, 200, 209, 218, 227, 236, 245, 254, 263, 272, 281, 290], [28, 37, 46, 163, 172, 181, 190, 199, 208, 217, 226, 235, 244, 253, 262, 271, 280, 289], [18, 27, 36, 45, 54, 63, 135, 162, 171, 180, 189, 198, 207, 216, 225, 234, 243, 252, 261, 270, 279, 288, 297, 306, 315, 324, 333, 342, 351, 360, 369, 378, 387, 396, 405, 414, 423, 432], [13, 22, 31, 40, 49, 58, 130, 139, 148, 157, 166, 175, 184, 193, 202, 211, 220, 229, 238, 247, 256, 265, 319, 328, 346, 355, 364, 373, 382, 391, 400, 409, 418, 427, 436, 445], [19, 55, 64, 136, 298, 307, 325, 334, 343, 352, 361, 370, 379, 388, 397, 406, 415, 424, 433], [451], [390], [450], [91], [224], [452], [513], [386], [273], [385], [384], [336], [337], [338], [515], [275], [500], [441], [222], [392], [483], [144], [145], [146], [284], [283], [282], [153], [499], [154], [155], [442], [443], [316], [317], [223], [274], [498], [484], [0], [1], [2], [3], [4], [5], [6], [7], [8], [0], [1], [2], [3], [4], [5], [6], [7], [8], [0], [1], [2], [3], [4], [5], [6], [7], [8]] -CELL.MOLECLIST: doing block=[126, 495, 522] -CELL.MOLECLIST: doing block=[11, 90] -CELL.MOLECLIST: doing block=[125, 494, 521] -CELL.MOLECLIST: doing block=[124, 493, 520] -CELL.MOLECLIST: doing block=[123, 492, 519] -CELL.MOLECLIST: doing block=[122, 491, 518] -CELL.MOLECLIST: doing block=[121, 490, 517] -CELL.MOLECLIST: doing block=[120, 489, 516] -CELL.MOLECLIST: doing block=[115, 511] -CELL.MOLECLIST: doing block=[114, 510] -CELL.MOLECLIST: doing block=[119, 488] -CELL.MOLECLIST: doing block=[110, 479, 506] -CELL.MOLECLIST: doing block=[109, 478, 505] -CELL.MOLECLIST: doing block=[108, 477, 504] -CELL.MOLECLIST: doing block=[107, 476, 503] -CELL.MOLECLIST: doing block=[106, 475, 502] -CELL.MOLECLIST: doing block=[105, 474, 501] -CELL.MOLECLIST: doing block=[118, 487, 514] -CELL.MOLECLIST: doing block=[84, 93, 462] -CELL.MOLECLIST: doing block=[85, 94, 463] -CELL.MOLECLIST: doing block=[86, 95, 464] -CELL.MOLECLIST: doing block=[104, 473] -CELL.MOLECLIST: doing block=[103, 472] -CELL.MOLECLIST: doing block=[102, 471] -CELL.MOLECLIST: doing block=[74, 83, 92, 101, 461, 470] -CELL.MOLECLIST: doing block=[73, 82, 100, 460, 469] -CELL.MOLECLIST: doing block=[72, 81, 99, 459, 468] -CELL.MOLECLIST: doing block=[117, 486] -CELL.MOLECLIST: doing block=[116, 485, 512] -CELL.MOLECLIST: doing block=[113, 482, 509] -CELL.MOLECLIST: doing block=[112, 481, 508] -CELL.MOLECLIST: doing block=[111, 480, 507] -CELL.MOLECLIST: doing block=[9, 66, 67, 68, 75, 76, 77, 453, 454, 455] -CELL.MOLECLIST: doing block=[10, 69, 70, 71, 78, 79, 80, 87, 88, 89, 96, 97, 98, 456, 457, 458, 465, 466, 467] -CELL.MOLECLIST: doing block=[127, 496, 523] -CELL.MOLECLIST: doing block=[345, 354, 363, 372, 381] -CELL.MOLECLIST: doing block=[48, 318, 327] -CELL.MOLECLIST: doing block=[50, 320, 329] -CELL.MOLECLIST: doing block=[291, 300, 309] -CELL.MOLECLIST: doing block=[292, 301, 310] -CELL.MOLECLIST: doing block=[293, 302, 311] -CELL.MOLECLIST: doing block=[15, 24, 60, 132, 141, 150, 159, 168, 177, 186, 195, 204, 402, 411, 420, 429, 438, 447] -CELL.MOLECLIST: doing block=[16, 25, 61, 133, 142, 151, 160, 169, 178, 187, 196, 205, 403, 412, 421, 430, 439, 448] -CELL.MOLECLIST: doing block=[17, 26, 62, 134, 143, 152, 161, 170, 179, 188, 197, 206, 404, 413, 422, 431, 440, 449] -CELL.MOLECLIST: doing block=[128, 497, 524] -CELL.MOLECLIST: doing block=[34, 43, 52, 214, 232, 241, 250, 259, 268, 277, 286, 295, 304, 313, 322, 331, 340, 349, 358, 367, 376, 394] -CELL.MOLECLIST: doing block=[35, 44, 53, 215, 233, 242, 251, 260, 269, 278, 287, 296, 305, 314, 323, 332, 341, 350, 359, 368, 377, 395] -CELL.MOLECLIST: doing block=[20, 56, 65, 137, 299, 308, 326, 335, 344, 353, 362, 371, 380, 389, 398, 407, 416, 425, 434] -CELL.MOLECLIST: doing block=[33, 42, 51, 213, 231, 240, 249, 258, 267, 276, 285, 294, 303, 312, 321, 330, 339, 348, 357, 366, 375, 393] -CELL.MOLECLIST: doing block=[14, 23, 32, 41, 59, 131, 140, 149, 158, 167, 176, 185, 194, 203, 212, 221, 230, 239, 248, 257, 266, 401, 410, 419, 428, 437, 446] -CELL.MOLECLIST: doing block=[347, 356, 365, 374, 383] -CELL.MOLECLIST: doing block=[12, 21, 30, 39, 57, 129, 138, 147, 156, 165, 174, 183, 192, 201, 210, 219, 228, 237, 246, 255, 264, 399, 408, 417, 426, 435, 444] -CELL.MOLECLIST: doing block=[29, 38, 47, 164, 173, 182, 191, 200, 209, 218, 227, 236, 245, 254, 263, 272, 281, 290] -CELL.MOLECLIST: doing block=[28, 37, 46, 163, 172, 181, 190, 199, 208, 217, 226, 235, 244, 253, 262, 271, 280, 289] -CELL.MOLECLIST: doing block=[18, 27, 36, 45, 54, 63, 135, 162, 171, 180, 189, 198, 207, 216, 225, 234, 243, 252, 261, 270, 279, 288, 297, 306, 315, 324, 333, 342, 351, 360, 369, 378, 387, 396, 405, 414, 423, 432] -CELL.MOLECLIST: doing block=[13, 22, 31, 40, 49, 58, 130, 139, 148, 157, 166, 175, 184, 193, 202, 211, 220, 229, 238, 247, 256, 265, 319, 328, 346, 355, 364, 373, 382, 391, 400, 409, 418, 427, 436, 445] -CELL.MOLECLIST: doing block=[19, 55, 64, 136, 298, 307, 325, 334, 343, 352, 361, 370, 379, 388, 397, 406, 415, 424, 433] -CELL.MOLECLIST: doing block=[451] -CELL.MOLECLIST: doing block=[390] -CELL.MOLECLIST: doing block=[450] -CELL.MOLECLIST: doing block=[91] -CELL.MOLECLIST: doing block=[224] -CELL.MOLECLIST: doing block=[452] -CELL.MOLECLIST: doing block=[513] -CELL.MOLECLIST: doing block=[386] -CELL.MOLECLIST: doing block=[273] -CELL.MOLECLIST: doing block=[385] -CELL.MOLECLIST: doing block=[384] -CELL.MOLECLIST: doing block=[336] -CELL.MOLECLIST: doing block=[337] -CELL.MOLECLIST: doing block=[338] -CELL.MOLECLIST: doing block=[515] -CELL.MOLECLIST: doing block=[275] -CELL.MOLECLIST: doing block=[500] -CELL.MOLECLIST: doing block=[441] -CELL.MOLECLIST: doing block=[222] -CELL.MOLECLIST: doing block=[392] -CELL.MOLECLIST: doing block=[483] -CELL.MOLECLIST: doing block=[144] -CELL.MOLECLIST: doing block=[145] -CELL.MOLECLIST: doing block=[146] -CELL.MOLECLIST: doing block=[284] -CELL.MOLECLIST: doing block=[283] -CELL.MOLECLIST: doing block=[282] -CELL.MOLECLIST: doing block=[153] -CELL.MOLECLIST: doing block=[499] -CELL.MOLECLIST: doing block=[154] -CELL.MOLECLIST: doing block=[155] -CELL.MOLECLIST: doing block=[442] -CELL.MOLECLIST: doing block=[443] -CELL.MOLECLIST: doing block=[316] -CELL.MOLECLIST: doing block=[317] -CELL.MOLECLIST: doing block=[223] -CELL.MOLECLIST: doing block=[274] -CELL.MOLECLIST: doing block=[498] -CELL.MOLECLIST: doing block=[484] -CELL.MOLECLIST: doing block=[0] -CELL.MOLECLIST: doing block=[1] -CELL.MOLECLIST: doing block=[2] -CELL.MOLECLIST: doing block=[3] -CELL.MOLECLIST: doing block=[4] -CELL.MOLECLIST: doing block=[5] -CELL.MOLECLIST: doing block=[6] -CELL.MOLECLIST: doing block=[7] -CELL.MOLECLIST: doing block=[8] -CELL.MOLECLIST: doing block=[0] -CELL.MOLECLIST: doing block=[1] -CELL.MOLECLIST: doing block=[2] -CELL.MOLECLIST: doing block=[3] -CELL.MOLECLIST: doing block=[4] -CELL.MOLECLIST: doing block=[5] -CELL.MOLECLIST: doing block=[6] -CELL.MOLECLIST: doing block=[7] -CELL.MOLECLIST: doing block=[8] -CELL.MOLECLIST: doing block=[0] -CELL.MOLECLIST: doing block=[1] -CELL.MOLECLIST: doing block=[2] -CELL.MOLECLIST: doing block=[3] -CELL.MOLECLIST: doing block=[4] -CELL.MOLECLIST: doing block=[5] -CELL.MOLECLIST: doing block=[6] -CELL.MOLECLIST: doing block=[7] -CELL.MOLECLIST: doing block=[8] -CLASSIFY_FRAGMENTS, preparing block -H2-O -CLASSIFY_FRAGMENTS, preparing block -O-Fe -CLASSIFY_FRAGMENTS, preparing block -H2-O -CLASSIFY_FRAGMENTS, preparing block -H2-O -CLASSIFY_FRAGMENTS, preparing block -H2-O -CLASSIFY_FRAGMENTS, preparing block -H2-O -CLASSIFY_FRAGMENTS, preparing block -H2-O -CLASSIFY_FRAGMENTS, preparing block -H2-O -CLASSIFY_FRAGMENTS, preparing block -H-O -CLASSIFY_FRAGMENTS, preparing block -H-O -CLASSIFY_FRAGMENTS, preparing block -H-O -CLASSIFY_FRAGMENTS, preparing block -H2-O -CLASSIFY_FRAGMENTS, preparing block -H2-O -CLASSIFY_FRAGMENTS, preparing block -H2-O -CLASSIFY_FRAGMENTS, preparing block -H2-O -CLASSIFY_FRAGMENTS, preparing block -H2-O -CLASSIFY_FRAGMENTS, preparing block -H2-O -CLASSIFY_FRAGMENTS, preparing block -H2-O -CLASSIFY_FRAGMENTS, preparing block -C-O2 -CLASSIFY_FRAGMENTS, preparing block -C-O2 -CLASSIFY_FRAGMENTS, preparing block -C-O2 -CLASSIFY_FRAGMENTS, preparing block -H-O -CLASSIFY_FRAGMENTS, preparing block -H-O -CLASSIFY_FRAGMENTS, preparing block -H-O -CLASSIFY_FRAGMENTS, preparing block -C2-O4 -CLASSIFY_FRAGMENTS, preparing block -C2-O3 -CLASSIFY_FRAGMENTS, preparing block -C2-O3 -CLASSIFY_FRAGMENTS, preparing block -H-O -CLASSIFY_FRAGMENTS, preparing block -H2-O -CLASSIFY_FRAGMENTS, preparing block -H2-O -CLASSIFY_FRAGMENTS, preparing block -H2-O -CLASSIFY_FRAGMENTS, preparing block -H2-O -CLASSIFY_FRAGMENTS, preparing block -C3-O6-Fe -CLASSIFY_FRAGMENTS, preparing block -C6-O12-Fe -CLASSIFY_FRAGMENTS, preparing block -H2-O -CLASSIFY_FRAGMENTS, preparing block -H3-C2 -CLASSIFY_FRAGMENTS, preparing block -H-C-O -CLASSIFY_FRAGMENTS, preparing block -H-C-O -CLASSIFY_FRAGMENTS, preparing block -H2-C -CLASSIFY_FRAGMENTS, preparing block -H2-C -CLASSIFY_FRAGMENTS, preparing block -H2-C -CLASSIFY_FRAGMENTS, preparing block -H10-C5-O3 -CLASSIFY_FRAGMENTS, preparing block -H10-C5-O3 -CLASSIFY_FRAGMENTS, preparing block -H10-C5-O3 -CLASSIFY_FRAGMENTS, preparing block -H2-O -CLASSIFY_FRAGMENTS, preparing block -H12-C7-O3 -CLASSIFY_FRAGMENTS, preparing block -H12-C7-O3 -CLASSIFY_FRAGMENTS, preparing block -H9-C7-O3 -CLASSIFY_FRAGMENTS, preparing block -H12-C7-O3 -CLASSIFY_FRAGMENTS, preparing block -H14-C8-O5 -CLASSIFY_FRAGMENTS, preparing block -H3-C2 -CLASSIFY_FRAGMENTS, preparing block -H14-C8-O5 -CLASSIFY_FRAGMENTS, preparing block -H10-C5-O3 -CLASSIFY_FRAGMENTS, preparing block -H10-C5-O3 -CLASSIFY_FRAGMENTS, preparing block -H20-C12-O6 -CLASSIFY_FRAGMENTS, preparing block -H19-C11-O6 -CLASSIFY_FRAGMENTS, preparing block -H9-C7-O3 -CLASSIFY_FRAGMENTS, preparing block -H -CLASSIFY_FRAGMENTS, preparing block -H -CLASSIFY_FRAGMENTS, preparing block -H -CLASSIFY_FRAGMENTS, preparing block -O -CLASSIFY_FRAGMENTS, preparing block -H -CLASSIFY_FRAGMENTS, preparing block -H -CLASSIFY_FRAGMENTS, preparing block -H -CLASSIFY_FRAGMENTS, preparing block -H -CLASSIFY_FRAGMENTS, preparing block -H -CLASSIFY_FRAGMENTS, preparing block -H -CLASSIFY_FRAGMENTS, preparing block -H -CLASSIFY_FRAGMENTS, preparing block -H -CLASSIFY_FRAGMENTS, preparing block -H -CLASSIFY_FRAGMENTS, preparing block -H -CLASSIFY_FRAGMENTS, preparing block -H -CLASSIFY_FRAGMENTS, preparing block -H -CLASSIFY_FRAGMENTS, preparing block -H -CLASSIFY_FRAGMENTS, preparing block -H -CLASSIFY_FRAGMENTS, preparing block -H -CLASSIFY_FRAGMENTS, preparing block -H -CLASSIFY_FRAGMENTS, preparing block -H -CLASSIFY_FRAGMENTS, preparing block -H -CLASSIFY_FRAGMENTS, preparing block -H -CLASSIFY_FRAGMENTS, preparing block -H -CLASSIFY_FRAGMENTS, preparing block -H -CLASSIFY_FRAGMENTS, preparing block -H -CLASSIFY_FRAGMENTS, preparing block -H -CLASSIFY_FRAGMENTS, preparing block -H -CLASSIFY_FRAGMENTS, preparing block -H -CLASSIFY_FRAGMENTS, preparing block -H -CLASSIFY_FRAGMENTS, preparing block -H -CLASSIFY_FRAGMENTS, preparing block -H -CLASSIFY_FRAGMENTS, preparing block -H -CLASSIFY_FRAGMENTS, preparing block -H -CLASSIFY_FRAGMENTS, preparing block -H -CLASSIFY_FRAGMENTS, preparing block -H -CLASSIFY_FRAGMENTS, preparing block -H -CLASSIFY_FRAGMENTS, preparing block -H -CLASSIFY_FRAGMENTS, preparing block -H -CLASSIFY_FRAGMENTS, preparing block -K -CLASSIFY_FRAGMENTS, preparing block -K -CLASSIFY_FRAGMENTS, preparing block -K -CLASSIFY_FRAGMENTS, preparing block -K -CLASSIFY_FRAGMENTS, preparing block -K -CLASSIFY_FRAGMENTS, preparing block -K -CLASSIFY_FRAGMENTS, preparing block -K -CLASSIFY_FRAGMENTS, preparing block -K -CLASSIFY_FRAGMENTS, preparing block -K -CLASSIFY_FRAGMENTS, preparing block -K -CLASSIFY_FRAGMENTS, preparing block -K -CLASSIFY_FRAGMENTS, preparing block -K -CLASSIFY_FRAGMENTS, preparing block -K -CLASSIFY_FRAGMENTS, preparing block -K -CLASSIFY_FRAGMENTS, preparing block -K -CLASSIFY_FRAGMENTS, preparing block -K -CLASSIFY_FRAGMENTS, preparing block -K -CLASSIFY_FRAGMENTS, preparing block -K -CLASSIFY_FRAGMENTS, preparing block -K -CLASSIFY_FRAGMENTS, preparing block -K -CLASSIFY_FRAGMENTS, preparing block -K -CLASSIFY_FRAGMENTS, preparing block -K -CLASSIFY_FRAGMENTS, preparing block -K -CLASSIFY_FRAGMENTS, preparing block -K -CLASSIFY_FRAGMENTS, preparing block -K -CLASSIFY_FRAGMENTS, preparing block -K -CLASSIFY_FRAGMENTS, preparing block -K -CLASSIFY_FRAGMENTS, preparing reference -C6-O12-Fe -CLASSIFY_FRAGMENTS, preparing reference -H24-C12-O6 -CLASSIFY_FRAGMENTS, preparing reference -H2-O -CLASSIFY_FRAGMENTS, preparing reference -H2-O -CLASSIFY_FRAGMENTS, preparing reference -H2-O -CLASSIFY_FRAGMENTS, preparing reference -H24-C12-O6 -CLASSIFY_FRAGMENTS, preparing reference -H24-C12-O6 -CLASSIFY_FRAGMENTS, preparing reference -K -CLASSIFY_FRAGMENTS, preparing reference -K -CLASSIFY_FRAGMENTS, preparing reference -K -CLASSIFY_FRAGMENTS. 123 Blocks sorted as (Molec, Frag, H): 142 37 38 -CELL.RECONSTRUCT: 142 molecules=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 3 - Formula = H2-O - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 3 - Formula = H2-O - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 3 - Formula = H2-O - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 3 - Formula = H2-O - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 3 - Formula = H2-O - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 3 - Formula = H2-O - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 3 - Formula = H2-O - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 3 - Formula = H2-O - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 3 - Formula = H2-O - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 3 - Formula = H2-O - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 3 - Formula = H2-O - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 3 - Formula = H2-O - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 3 - Formula = H2-O - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 3 - Formula = H2-O - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 3 - Formula = H2-O - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 3 - Formula = H2-O - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 3 - Formula = H2-O - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 3 - Formula = H2-O - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 3 - Formula = H2-O - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 3 - Formula = H2-O - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 3 - Formula = H2-O - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 3 - Formula = H2-O - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 3 - Formula = H2-O - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 3 - Formula = H2-O - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 3 - Formula = H2-O - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 3 - Formula = H2-O - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 3 - Formula = H2-O - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 3 - Formula = H2-O - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 3 - Formula = H2-O - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 3 - Formula = H2-O - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 3 - Formula = H2-O - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 3 - Formula = H2-O - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 3 - Formula = H2-O - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 3 - Formula = H2-O - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 3 - Formula = H2-O - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 3 - Formula = H2-O - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 3 - Formula = H2-O - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 3 - Formula = H2-O - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 3 - Formula = H2-O - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 3 - Formula = H2-O - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 3 - Formula = H2-O - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 3 - Formula = H2-O - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 3 - Formula = H2-O - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 3 - Formula = H2-O - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 3 - Formula = H2-O - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 3 - Formula = H2-O - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 3 - Formula = H2-O - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 3 - Formula = H2-O - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 3 - Formula = H2-O - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 3 - Formula = H2-O - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 3 - Formula = H2-O - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 3 - Formula = H2-O - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 3 - Formula = H2-O - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 3 - Formula = H2-O - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 19 - Formula = C6-O12-Fe - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 3 - Formula = H2-O - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 3 - Formula = H2-O - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 3 - Formula = H2-O - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 3 - Formula = H2-O - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 3 - Formula = H2-O - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 3 - Formula = H2-O - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = K - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = K - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = K - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = K - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = K - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = K - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = K - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = K - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = K - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = K - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = K - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = K - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = K - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = K - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = K - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = K - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = K - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = K - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = K - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = K - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = K - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = K - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = K - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = K - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = K - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = K - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = K - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = K - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = K - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = K - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = K - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = K - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = K - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = K - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = K - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = K - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = K - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = K - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = K - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = K - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = K - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = K - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = K - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = K - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = K - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = K - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = K - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = K - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = K - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = K - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = K - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = K - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = K - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = K - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = K - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = K - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = K - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = K - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = K - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = K - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = K - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = K - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = K - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = K - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = K - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = K - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = K - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = K - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = K - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = K - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = K - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = K - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = K - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = K - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = K - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = K - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = K - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = K - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = K - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = K - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = K - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -CELL.RECONSTRUCT: 37 fragments=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = fragment - Number of Atoms = 2 - Formula = O-Fe - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = fragment - Number of Atoms = 2 - Formula = H-O - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = fragment - Number of Atoms = 2 - Formula = H-O - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = fragment - Number of Atoms = 2 - Formula = H-O - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = fragment - Number of Atoms = 3 - Formula = C-O2 - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = fragment - Number of Atoms = 3 - Formula = C-O2 - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = fragment - Number of Atoms = 3 - Formula = C-O2 - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = fragment - Number of Atoms = 2 - Formula = H-O - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = fragment - Number of Atoms = 2 - Formula = H-O - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = fragment - Number of Atoms = 2 - Formula = H-O - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = fragment - Number of Atoms = 6 - Formula = C2-O4 - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = fragment - Number of Atoms = 5 - Formula = C2-O3 - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = fragment - Number of Atoms = 5 - Formula = C2-O3 - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = fragment - Number of Atoms = 2 - Formula = H-O - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = fragment - Number of Atoms = 10 - Formula = C3-O6-Fe - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = fragment - Number of Atoms = 5 - Formula = H3-C2 - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = fragment - Number of Atoms = 3 - Formula = H-C-O - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = fragment - Number of Atoms = 3 - Formula = H-C-O - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = fragment - Number of Atoms = 3 - Formula = H2-C - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = fragment - Number of Atoms = 3 - Formula = H2-C - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = fragment - Number of Atoms = 3 - Formula = H2-C - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = fragment - Number of Atoms = 18 - Formula = H10-C5-O3 - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = fragment - Number of Atoms = 18 - Formula = H10-C5-O3 - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = fragment - Number of Atoms = 18 - Formula = H10-C5-O3 - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = fragment - Number of Atoms = 22 - Formula = H12-C7-O3 - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = fragment - Number of Atoms = 22 - Formula = H12-C7-O3 - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = fragment - Number of Atoms = 19 - Formula = H9-C7-O3 - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = fragment - Number of Atoms = 22 - Formula = H12-C7-O3 - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = fragment - Number of Atoms = 27 - Formula = H14-C8-O5 - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = fragment - Number of Atoms = 5 - Formula = H3-C2 - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = fragment - Number of Atoms = 27 - Formula = H14-C8-O5 - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = fragment - Number of Atoms = 18 - Formula = H10-C5-O3 - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = fragment - Number of Atoms = 18 - Formula = H10-C5-O3 - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = fragment - Number of Atoms = 38 - Formula = H20-C12-O6 - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = fragment - Number of Atoms = 36 - Formula = H19-C11-O6 - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = fragment - Number of Atoms = 19 - Formula = H9-C7-O3 - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = fragment - Number of Atoms = 1 - Formula = O - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -CELL.RECONSTRUCT: 38 hydrogens=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] - -############################################## -FRAG_RECONSTRUCT. 37 molecules submitted to SEQUENTIAL with Heavy -############################################## -Adjacency Matrix: Distance 0.241 smaller than clash for atoms 8 32 H H [ 1.023498 12.82993028 7.70027013] [ 1.01618065 12.8039018 7.4607942 ] 1.3 -Adjacency Matrix: Distance 0.241 smaller than clash for atoms 8 35 H H [ 1.023498 12.82993028 7.70027013] [ 1.01618065 12.8039018 7.4607942 ] 1.3 -Adjacency Matrix: Distance 0.241 smaller than clash for atoms 8 37 H H [ 1.023498 12.82993028 7.70027013] [ 1.01618065 12.8039018 7.4607942 ] 1.3 -Adjacency Matrix: Distance 0.241 smaller than clash for atoms 8 40 H H [ 1.023498 12.82993028 7.70027013] [ 1.01618065 12.8039018 7.4607942 ] 1.3 -Adjacency Matrix: Distance 0.279 smaller than clash for atoms 0 36 O C [8.49320573 8.19538353 4.23131436] [8.45482787 8.47036522 4.2624755 ] 1.3 -Adjacency Matrix: Distance 0.241 smaller than clash for atoms 13 29 H H [3.5456895 8.67240818 4.21146093] [3.56457215 8.65305701 4.45093677] 1.3 -Adjacency Matrix: Distance 0.279 smaller than clash for atoms 0 36 O C [8.49320573 8.19538353 4.23131436] [8.45482787 8.47036522 4.2624755 ] 1.3 -FRAG_RECONSTRUCT. 0 molecules and 13 fragments out of SEQUENTIAL with Heavy -FRAG_RECONSTRUCT. remfrag=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 30 - Formula = H16-C9-O5 - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 5 - Formula = H3-C2 - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 40 - Formula = H21-C11-O8 - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 2 - Formula = H-O - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 27 - Formula = H14-C8-O5 - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 37 - Formula = H17-C11-O9 - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 19 - Formula = H9-C7-O3 - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 36 - Formula = H15-C11-O10 - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 38 - Formula = H20-C12-O6 - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 41 - Formula = H21-C14-O6 - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 42 - Formula = H23-C12-O7 - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 41 - Formula = H20-C12-O9 - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 41 - Formula = H12-C11-O16-Fe2 - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES ---------------------------------------------------- -] -FRAG_RECONSTRUCT. 51 fragments submitted to sequential with All -Entered sequential with 51 fragments to reconstruct -Found 13 and 38 Heavy and Hydrogen fragments, respectively - -Fragments to allocate: 0 0 out of 12 37 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 38 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 37 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 1 with 13 and 38 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, 1), (-1, 0, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 0 1 out of 12 37 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 38 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 37 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 2 with 13 and 38 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 0 2 out of 12 37 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 38 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 37 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 3 with 13 and 38 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 0 3 out of 12 37 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 38 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 37 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 4 with 13 and 38 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 0 4 out of 12 37 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 38 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 37 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 5 with 13 and 38 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 0 5 out of 12 37 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 38 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 37 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 6 with 13 and 38 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, 1), (-1, 1, 0), (0, 1, 1), (-1, 0, 1), (-1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 0 6 out of 12 37 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 38 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 37 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 7 with 13 and 38 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 0 7 out of 12 37 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 38 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 37 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 8 with 13 and 38 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, 1), (-1, 1, 0), (0, 1, 1), (-1, 0, 1), (-1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 0 8 out of 12 37 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 38 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 37 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 9 with 13 and 38 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 0 9 out of 12 37 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 38 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 37 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 10 with 13 and 38 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 0 10 out of 12 37 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 38 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 37 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 11 with 13 and 38 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, 1), (1, 0, 0), (0, -1, 1), (1, -1, 0), (1, 0, 1), (1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 0 11 out of 12 37 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 38 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 37 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 12 with 13 and 38 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (1, 0, 0), (0, 1, 0), (0, 0, 1), (1, 1, 0), (0, 1, 1), (1, 0, 1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 0 12 out of 12 37 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 38 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 37 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 13 with 13 and 38 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, 1), (1, 0, 0), (0, -1, 1), (1, -1, 0), (1, 0, 1), (1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 0 13 out of 12 37 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 38 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 37 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 14 with 13 and 38 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 1, 0), (0, 0, 1), (0, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 0 14 out of 12 37 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 38 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 37 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 15 with 13 and 38 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, 1), (-1, 1, 0), (0, 1, 1), (-1, 0, 1), (-1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 0 15 out of 12 37 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 38 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 37 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 16 with 13 and 38 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 1, 0), (0, 0, 1), (0, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 0 16 out of 12 37 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 38 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 37 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 17 with 13 and 38 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 0 17 out of 12 37 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 38 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 37 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 18 with 13 and 38 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 0 18 out of 12 37 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 38 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 37 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 19 with 13 and 38 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 0 19 out of 12 37 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 38 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 37 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 20 with 13 and 38 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 0 20 out of 12 37 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 38 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 37 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 21 with 13 and 38 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 0 21 out of 12 37 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 38 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 37 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 22 with 13 and 38 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, 1), (-1, 0, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 0 22 out of 12 37 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 38 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 37 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 23 with 13 and 38 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 0 23 out of 12 37 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 38 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 37 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 24 with 13 and 38 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, 1), (-1, 1, 0), (0, 1, 1), (-1, 0, 1), (-1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 0 24 out of 12 37 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 38 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 37 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 25 with 13 and 38 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 1, 0), (0, 0, 1), (0, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 0 25 out of 12 37 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 38 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 37 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 26 with 13 and 38 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, 1), (-1, 1, 0), (0, 1, 1), (-1, 0, 1), (-1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 0 26 out of 12 37 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 38 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 37 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 27 with 13 and 38 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 0 27 out of 12 37 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 38 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 37 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 28 with 13 and 38 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 1, 0), (0, 0, 1), (0, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 0 28 out of 12 37 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 38 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 37 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 29 with 13 and 38 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 0 29 out of 12 37 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 38 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 37 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 30 with 13 and 38 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 0 30 out of 12 37 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 38 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 37 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 31 with 13 and 38 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (-1, -1, 0)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 0 31 out of 12 37 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 38 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 37 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 32 with 13 and 38 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 0 32 out of 12 37 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 38 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 37 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 33 with 13 and 38 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -Adjacency Matrix: Distance 0.241 smaller than clash for atoms 10 30 H H [12.74620545 8.54085884 4.4509368 ] [12.77240545 8.54753615 4.21146097] 1.3 -MERGE_FRAGMENTS: count_species found 0 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 0 33 out of 12 37 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 38 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 37 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 34 with 13 and 38 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, 1), (1, 0, 0), (0, -1, 1), (1, -1, 0), (1, 0, 1), (1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 0 34 out of 12 37 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 38 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 37 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 35 with 13 and 38 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 0 35 out of 12 37 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 38 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 37 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 36 with 13 and 38 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (1, 0, 0), (0, 1, 0), (0, 0, 1), (1, 1, 0), (0, 1, 1), (1, 0, 1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 0 36 out of 12 37 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 38 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 37 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 37 with 13 and 38 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, 1), (-1, 1, 0), (0, 1, 1), (-1, 0, 1), (-1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 0 37 out of 12 37 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 38 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 37 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 38 with 13 and 38 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 1 0 out of 12 37 -sublist 2 ['H3-C2', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 38 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 37 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 39 with 13 and 38 Remaining in each list -SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H3-C2', 'H'] - -Fragments to allocate: 1 1 out of 12 37 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H3-C2', 'H16-C9-O5', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 38 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 37 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 40 with 13 and 38 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, 1), (-1, 1, 0), (0, 1, 1), (-1, 0, 1), (-1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 1 2 out of 12 37 -sublist 2 ['H3-C2', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 38 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 37 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 41 with 13 and 38 Remaining in each list -SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (1, 0, 0), (0, 1, 0), (0, 0, 1), (1, 1, 0), (0, 1, 1), (1, 0, 1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H3-C2', 'H'] - -Fragments to allocate: 1 3 out of 12 37 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H3-C2', 'H16-C9-O5', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 38 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 37 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 42 with 13 and 38 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 1 4 out of 12 37 -sublist 2 ['H3-C2', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 38 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 37 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 43 with 13 and 38 Remaining in each list -SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, 1), (1, 0, 0), (0, -1, 1), (1, -1, 0), (1, 0, 1), (1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H3-C2', 'H'] - -Fragments to allocate: 1 5 out of 12 37 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H3-C2', 'H16-C9-O5', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 38 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 37 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 44 with 13 and 38 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -Adjacency Matrix: Distance 0.241 smaller than clash for atoms 10 30 H H [12.74620545 8.54085884 4.4509368 ] [12.77240545 8.54753615 4.21146097] 1.3 -MERGE_FRAGMENTS: count_species found 0 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 1 6 out of 12 37 -sublist 2 ['H3-C2', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 38 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 37 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 45 with 13 and 38 Remaining in each list -SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H3-C2', 'H'] - -Fragments to allocate: 1 7 out of 12 37 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H3-C2', 'H16-C9-O5', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 38 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 37 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 46 with 13 and 38 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (-1, -1, 0)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 1 8 out of 12 37 -sublist 2 ['H3-C2', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 38 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 37 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 47 with 13 and 38 Remaining in each list -SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H3-C2', 'H'] - -Fragments to allocate: 1 9 out of 12 37 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H3-C2', 'H16-C9-O5', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 38 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 37 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 48 with 13 and 38 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 1 10 out of 12 37 -sublist 2 ['H3-C2', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 38 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 37 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 49 with 13 and 38 Remaining in each list -SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 1, 0), (0, 0, 1), (0, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H3-C2', 'H'] - -Fragments to allocate: 1 11 out of 12 37 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H3-C2', 'H16-C9-O5', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 38 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 37 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 50 with 13 and 38 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 1 12 out of 12 37 -sublist 2 ['H3-C2', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 38 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 37 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 51 with 13 and 38 Remaining in each list -SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, 1), (-1, 1, 0), (0, 1, 1), (-1, 0, 1), (-1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H3-C2', 'H'] - -Fragments to allocate: 1 13 out of 12 37 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H3-C2', 'H16-C9-O5', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 38 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 37 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 52 with 13 and 38 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 1, 0), (0, 0, 1), (0, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 1 14 out of 12 37 -sublist 2 ['H3-C2', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 38 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 37 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 53 with 13 and 38 Remaining in each list -SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, 1), (-1, 1, 0), (0, 1, 1), (-1, 0, 1), (-1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H3-C2', 'H'] - -Fragments to allocate: 1 15 out of 12 37 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H3-C2', 'H16-C9-O5', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 38 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 37 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 54 with 13 and 38 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 1 16 out of 12 37 -sublist 2 ['H3-C2', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 38 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 37 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 55 with 13 and 38 Remaining in each list -SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, 1), (-1, 0, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H3-C2', 'H'] - -Fragments to allocate: 1 17 out of 12 37 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H3-C2', 'H16-C9-O5', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 38 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 37 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 56 with 13 and 38 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 1 18 out of 12 37 -sublist 2 ['H3-C2', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 38 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 37 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 57 with 13 and 38 Remaining in each list -SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H3-C2', 'H'] - -Fragments to allocate: 1 19 out of 12 37 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H3-C2', 'H16-C9-O5', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 38 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 37 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 58 with 13 and 38 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 1 20 out of 12 37 -sublist 2 ['H3-C2', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 38 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 37 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 59 with 13 and 38 Remaining in each list -SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H3-C2', 'H'] - -Fragments to allocate: 1 21 out of 12 37 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H3-C2', 'H16-C9-O5', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 38 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 37 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 60 with 13 and 38 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 1 22 out of 12 37 -sublist 2 ['H3-C2', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 38 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 37 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 61 with 13 and 38 Remaining in each list -SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 1, 0), (0, 0, 1), (0, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H3-C2', 'H'] - -Fragments to allocate: 1 23 out of 12 37 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H3-C2', 'H16-C9-O5', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 38 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 37 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 62 with 13 and 38 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, 1), (-1, 1, 0), (0, 1, 1), (-1, 0, 1), (-1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 1 24 out of 12 37 -sublist 2 ['H3-C2', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 38 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 37 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 63 with 13 and 38 Remaining in each list -SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 1, 0), (0, 0, 1), (0, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H3-C2', 'H'] - -Fragments to allocate: 1 25 out of 12 37 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H3-C2', 'H16-C9-O5', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 38 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 37 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 64 with 13 and 38 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, 1), (1, 0, 0), (0, -1, 1), (1, -1, 0), (1, 0, 1), (1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 1 26 out of 12 37 -sublist 2 ['H3-C2', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 38 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 37 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 65 with 13 and 38 Remaining in each list -SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (1, 0, 0), (0, 1, 0), (0, 0, 1), (1, 1, 0), (0, 1, 1), (1, 0, 1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H3-C2', 'H'] - -Fragments to allocate: 1 27 out of 12 37 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H3-C2', 'H16-C9-O5', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 38 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 37 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 66 with 13 and 38 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, 1), (1, 0, 0), (0, -1, 1), (1, -1, 0), (1, 0, 1), (1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 1 28 out of 12 37 -sublist 2 ['H3-C2', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 38 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 37 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 67 with 13 and 38 Remaining in each list -SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H3-C2', 'H'] - -Fragments to allocate: 1 29 out of 12 37 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H3-C2', 'H16-C9-O5', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 38 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 37 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 68 with 13 and 38 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 1 30 out of 12 37 -sublist 2 ['H3-C2', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 38 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 37 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 69 with 13 and 38 Remaining in each list -SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, 1), (-1, 1, 0), (0, 1, 1), (-1, 0, 1), (-1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H3-C2', 'H'] - -Fragments to allocate: 1 31 out of 12 37 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H3-C2', 'H16-C9-O5', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 38 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 37 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 70 with 13 and 38 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 1 32 out of 12 37 -sublist 2 ['H3-C2', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 38 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 37 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 71 with 13 and 38 Remaining in each list -SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, 1), (-1, 1, 0), (0, 1, 1), (-1, 0, 1), (-1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H3-C2', 'H'] - -Fragments to allocate: 1 33 out of 12 37 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H3-C2', 'H16-C9-O5', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 38 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 37 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 72 with 13 and 38 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 1 34 out of 12 37 -sublist 2 ['H3-C2', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 38 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 37 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 73 with 13 and 38 Remaining in each list -SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H3-C2', 'H'] - -Fragments to allocate: 1 35 out of 12 37 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H3-C2', 'H16-C9-O5', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 38 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 37 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 74 with 13 and 38 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 1 36 out of 12 37 -sublist 2 ['H3-C2', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 38 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 37 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 75 with 13 and 38 Remaining in each list -SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H3-C2', 'H'] - -Fragments to allocate: 1 37 out of 12 37 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H3-C2', 'H16-C9-O5', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 38 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 37 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 76 with 13 and 38 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, 1), (-1, 0, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 2 0 out of 12 37 -sublist 2 ['H21-C11-O8', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 38 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 37 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 77 with 13 and 38 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'O', 'H', 'O', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, 1), (-1, 0, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H21-C11-O8', 'H'] - -Fragments to allocate: 2 1 out of 12 37 -sublist 2 ['H3-C2', 'H'] -list1 13 ['H21-C11-O8', 'H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 38 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C11-O8', 'H16-C9-O5', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 37 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 78 with 13 and 38 Remaining in each list -SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H3-C2', 'H'] - -Fragments to allocate: 2 2 out of 12 37 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H3-C2', 'H21-C11-O8', 'H16-C9-O5', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 38 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 37 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 79 with 13 and 38 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 2 3 out of 12 37 -sublist 2 ['H21-C11-O8', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 38 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 37 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 80 with 13 and 38 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'O', 'H', 'O', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H21-C11-O8', 'H'] - -Fragments to allocate: 2 4 out of 12 37 -sublist 2 ['H3-C2', 'H'] -list1 13 ['H21-C11-O8', 'H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 38 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C11-O8', 'H16-C9-O5', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 37 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 81 with 13 and 38 Remaining in each list -SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H3-C2', 'H'] - -Fragments to allocate: 2 5 out of 12 37 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H3-C2', 'H21-C11-O8', 'H16-C9-O5', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 38 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 37 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 82 with 13 and 38 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, 1), (-1, 1, 0), (0, 1, 1), (-1, 0, 1), (-1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 2 6 out of 12 37 -sublist 2 ['H21-C11-O8', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 38 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 37 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 83 with 13 and 38 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'O', 'H', 'O', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H21-C11-O8', 'H'] - -Fragments to allocate: 2 7 out of 12 37 -sublist 2 ['H3-C2', 'H'] -list1 13 ['H21-C11-O8', 'H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 38 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C11-O8', 'H16-C9-O5', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 37 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 84 with 13 and 38 Remaining in each list -SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, 1), (-1, 1, 0), (0, 1, 1), (-1, 0, 1), (-1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H3-C2', 'H'] - -Fragments to allocate: 2 8 out of 12 37 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H3-C2', 'H21-C11-O8', 'H16-C9-O5', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 38 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 37 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 85 with 13 and 38 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 2 9 out of 12 37 -sublist 2 ['H21-C11-O8', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 38 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 37 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 86 with 13 and 38 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'O', 'H', 'O', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H21-C11-O8', 'H'] - -Fragments to allocate: 2 10 out of 12 37 -sublist 2 ['H3-C2', 'H'] -list1 13 ['H21-C11-O8', 'H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 38 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C11-O8', 'H16-C9-O5', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 37 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 87 with 13 and 38 Remaining in each list -SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, 1), (1, 0, 0), (0, -1, 1), (1, -1, 0), (1, 0, 1), (1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H3-C2', 'H'] - -Fragments to allocate: 2 11 out of 12 37 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H3-C2', 'H21-C11-O8', 'H16-C9-O5', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 38 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 37 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 88 with 13 and 38 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (1, 0, 0), (0, 1, 0), (0, 0, 1), (1, 1, 0), (0, 1, 1), (1, 0, 1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 2 12 out of 12 37 -sublist 2 ['H21-C11-O8', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 38 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 37 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 89 with 13 and 38 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'O', 'H', 'O', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, 1), (1, 0, 0), (0, -1, 1), (1, -1, 0), (1, 0, 1), (1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H21-C11-O8', 'H'] - -Fragments to allocate: 2 13 out of 12 37 -sublist 2 ['H3-C2', 'H'] -list1 13 ['H21-C11-O8', 'H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 38 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C11-O8', 'H16-C9-O5', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 37 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 90 with 13 and 38 Remaining in each list -SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 1, 0), (0, 0, 1), (0, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H3-C2', 'H'] - -Fragments to allocate: 2 14 out of 12 37 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H3-C2', 'H21-C11-O8', 'H16-C9-O5', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 38 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 37 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 91 with 13 and 38 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, 1), (-1, 1, 0), (0, 1, 1), (-1, 0, 1), (-1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 2 15 out of 12 37 -sublist 2 ['H21-C11-O8', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 38 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 37 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 92 with 13 and 38 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'O', 'H', 'O', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 1, 0), (0, 0, 1), (0, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H21-C11-O8', 'H'] - -Fragments to allocate: 2 16 out of 12 37 -sublist 2 ['H3-C2', 'H'] -list1 13 ['H21-C11-O8', 'H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 38 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C11-O8', 'H16-C9-O5', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 37 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 93 with 13 and 38 Remaining in each list -SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H3-C2', 'H'] - -Fragments to allocate: 2 17 out of 12 37 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H3-C2', 'H21-C11-O8', 'H16-C9-O5', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 38 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 37 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 94 with 13 and 38 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 2 18 out of 12 37 -sublist 2 ['H21-C11-O8', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 38 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 37 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 95 with 13 and 38 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'O', 'H', 'O', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H21-C11-O8', 'H'] - -Fragments to allocate: 2 19 out of 12 37 -sublist 2 ['H3-C2', 'H'] -list1 13 ['H21-C11-O8', 'H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 38 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C11-O8', 'H16-C9-O5', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 37 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 96 with 13 and 38 Remaining in each list -SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H3-C2', 'H'] - -Fragments to allocate: 2 20 out of 12 37 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H3-C2', 'H21-C11-O8', 'H16-C9-O5', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 38 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 37 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 97 with 13 and 38 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 2 21 out of 12 37 -sublist 2 ['H21-C11-O8', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 38 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 37 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 98 with 13 and 38 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'O', 'H', 'O', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, 1), (-1, 0, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H21-C11-O8', 'H'] - -Fragments to allocate: 2 22 out of 12 37 -sublist 2 ['H3-C2', 'H'] -list1 13 ['H21-C11-O8', 'H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 38 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C11-O8', 'H16-C9-O5', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 37 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 99 with 13 and 38 Remaining in each list -SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H3-C2', 'H'] - -Fragments to allocate: 2 23 out of 12 37 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H3-C2', 'H21-C11-O8', 'H16-C9-O5', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 38 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 37 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 100 with 13 and 38 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, 1), (-1, 1, 0), (0, 1, 1), (-1, 0, 1), (-1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 2 24 out of 12 37 -sublist 2 ['H21-C11-O8', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 38 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 37 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 101 with 13 and 38 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'O', 'H', 'O', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 1, 0), (0, 0, 1), (0, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H21-C11-O8', 'H'] - -Fragments to allocate: 2 25 out of 12 37 -sublist 2 ['H3-C2', 'H'] -list1 13 ['H21-C11-O8', 'H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 38 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C11-O8', 'H16-C9-O5', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 37 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 102 with 13 and 38 Remaining in each list -SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, 1), (-1, 1, 0), (0, 1, 1), (-1, 0, 1), (-1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H3-C2', 'H'] - -Fragments to allocate: 2 26 out of 12 37 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H3-C2', 'H21-C11-O8', 'H16-C9-O5', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 38 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 37 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 103 with 13 and 38 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 2 27 out of 12 37 -sublist 2 ['H21-C11-O8', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 38 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 37 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 104 with 13 and 38 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'O', 'H', 'O', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 1, 0), (0, 0, 1), (0, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H21-C11-O8', 'H'] - -Fragments to allocate: 2 28 out of 12 37 -sublist 2 ['H3-C2', 'H'] -list1 13 ['H21-C11-O8', 'H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 38 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C11-O8', 'H16-C9-O5', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 37 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 105 with 13 and 38 Remaining in each list -SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H3-C2', 'H'] - -Fragments to allocate: 2 29 out of 12 37 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H3-C2', 'H21-C11-O8', 'H16-C9-O5', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 38 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 37 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 106 with 13 and 38 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 2 30 out of 12 37 -sublist 2 ['H21-C11-O8', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 38 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 37 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 107 with 13 and 38 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'O', 'H', 'O', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (-1, -1, 0)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H21-C11-O8', 'H'] - -Fragments to allocate: 2 31 out of 12 37 -sublist 2 ['H3-C2', 'H'] -list1 13 ['H21-C11-O8', 'H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 38 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C11-O8', 'H16-C9-O5', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 37 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 108 with 13 and 38 Remaining in each list -SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H3-C2', 'H'] - -Fragments to allocate: 2 32 out of 12 37 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H3-C2', 'H21-C11-O8', 'H16-C9-O5', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 38 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 37 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 109 with 13 and 38 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -Adjacency Matrix: Distance 0.241 smaller than clash for atoms 10 30 H H [12.74620545 8.54085884 4.4509368 ] [12.77240545 8.54753615 4.21146097] 1.3 -MERGE_FRAGMENTS: count_species found 0 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 2 33 out of 12 37 -sublist 2 ['H21-C11-O8', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 38 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 37 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 110 with 13 and 38 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'O', 'H', 'O', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, 1), (1, 0, 0), (0, -1, 1), (1, -1, 0), (1, 0, 1), (1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H21-C11-O8', 'H'] - -Fragments to allocate: 2 34 out of 12 37 -sublist 2 ['H3-C2', 'H'] -list1 13 ['H21-C11-O8', 'H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 38 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C11-O8', 'H16-C9-O5', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 37 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 111 with 13 and 38 Remaining in each list -SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H3-C2', 'H'] - -Fragments to allocate: 2 35 out of 12 37 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H3-C2', 'H21-C11-O8', 'H16-C9-O5', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 38 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 37 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 112 with 13 and 38 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (1, 0, 0), (0, 1, 0), (0, 0, 1), (1, 1, 0), (0, 1, 1), (1, 0, 1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 2 36 out of 12 37 -sublist 2 ['H21-C11-O8', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H21-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 38 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 37 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 113 with 13 and 38 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'O', 'H', 'O', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, 1), (-1, 1, 0), (0, 1, 1), (-1, 0, 1), (-1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 1 -SPILT_SPECIES: Laplacian lap=array([[-2, 0, 0, ..., 0, 0, 0], - [ 0, -2, 0, ..., 0, 0, 0], - [ 0, 0, -2, ..., 0, 0, 0], - ..., - [ 0, 0, 0, ..., -4, 1, 1], - [ 0, 0, 0, ..., 1, -1, 0], - [ 0, 0, 0, ..., 1, 0, -1]]) -SPILT_SPECIES: graph=<41x41 sparse matrix of type '' - with 129 stored elements in Compressed Sparse Row format> -COMBINE. received molecule: ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 41 - Formula = H22-C11-O8 - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES ---------------------------------------------------- - from merge fragments -COMBINE: Fragment H22-C11-O8 added to avglist -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 1 ['H22-C11-O8'] -SEQUENTIAL: badlist 0 [] - -Fragments to allocate: 0 1 out of 12 36 -sublist 2 ['H22-C11-O8', 'H'] -list1 13 ['H22-C11-O8', 'H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 37 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 114 with 13 and 37 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'O', 'H', 'O', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H22-C11-O8', 'H'] - -Fragments to allocate: 0 2 out of 12 36 -sublist 2 ['H22-C11-O8', 'H'] -list1 13 ['H22-C11-O8', 'H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 37 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 115 with 13 and 37 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'O', 'H', 'O', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, 1), (1, 0, 0), (0, -1, 1), (1, -1, 0), (1, 0, 1), (1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H22-C11-O8', 'H'] - -Fragments to allocate: 0 3 out of 12 36 -sublist 2 ['H22-C11-O8', 'H'] -list1 13 ['H22-C11-O8', 'H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 37 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 116 with 13 and 37 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'O', 'H', 'O', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H22-C11-O8', 'H'] - -Fragments to allocate: 0 4 out of 12 36 -sublist 2 ['H22-C11-O8', 'H'] -list1 13 ['H22-C11-O8', 'H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 37 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 117 with 13 and 37 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'O', 'H', 'O', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H22-C11-O8', 'H'] - -Fragments to allocate: 0 5 out of 12 36 -sublist 2 ['H22-C11-O8', 'H'] -list1 13 ['H22-C11-O8', 'H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 37 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 118 with 13 and 37 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'O', 'H', 'O', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (-1, -1, 0)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H22-C11-O8', 'H'] - -Fragments to allocate: 0 6 out of 12 36 -sublist 2 ['H22-C11-O8', 'H'] -list1 13 ['H22-C11-O8', 'H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 37 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 119 with 13 and 37 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'O', 'H', 'O', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H22-C11-O8', 'H'] - -Fragments to allocate: 0 7 out of 12 36 -sublist 2 ['H22-C11-O8', 'H'] -list1 13 ['H22-C11-O8', 'H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 37 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 120 with 13 and 37 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'O', 'H', 'O', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H22-C11-O8', 'H'] - -Fragments to allocate: 0 8 out of 12 36 -sublist 2 ['H22-C11-O8', 'H'] -list1 13 ['H22-C11-O8', 'H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 37 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 121 with 13 and 37 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'O', 'H', 'O', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 1, 0), (0, 0, 1), (0, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H22-C11-O8', 'H'] - -Fragments to allocate: 0 9 out of 12 36 -sublist 2 ['H22-C11-O8', 'H'] -list1 13 ['H22-C11-O8', 'H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 37 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 122 with 13 and 37 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'O', 'H', 'O', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H22-C11-O8', 'H'] - -Fragments to allocate: 0 10 out of 12 36 -sublist 2 ['H22-C11-O8', 'H'] -list1 13 ['H22-C11-O8', 'H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 37 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 123 with 13 and 37 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'O', 'H', 'O', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, 1), (-1, 1, 0), (0, 1, 1), (-1, 0, 1), (-1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H22-C11-O8', 'H'] - -Fragments to allocate: 0 11 out of 12 36 -sublist 2 ['H22-C11-O8', 'H'] -list1 13 ['H22-C11-O8', 'H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 37 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 124 with 13 and 37 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'O', 'H', 'O', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 1, 0), (0, 0, 1), (0, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H22-C11-O8', 'H'] - -Fragments to allocate: 0 12 out of 12 36 -sublist 2 ['H22-C11-O8', 'H'] -list1 13 ['H22-C11-O8', 'H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 37 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 125 with 13 and 37 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'O', 'H', 'O', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, 1), (-1, 1, 0), (0, 1, 1), (-1, 0, 1), (-1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H22-C11-O8', 'H'] - -Fragments to allocate: 0 13 out of 12 36 -sublist 2 ['H22-C11-O8', 'H'] -list1 13 ['H22-C11-O8', 'H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 37 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 126 with 13 and 37 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'O', 'H', 'O', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H22-C11-O8', 'H'] - -Fragments to allocate: 0 14 out of 12 36 -sublist 2 ['H22-C11-O8', 'H'] -list1 13 ['H22-C11-O8', 'H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 37 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 127 with 13 and 37 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'O', 'H', 'O', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, 1), (-1, 0, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H22-C11-O8', 'H'] - -Fragments to allocate: 0 15 out of 12 36 -sublist 2 ['H22-C11-O8', 'H'] -list1 13 ['H22-C11-O8', 'H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 37 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 128 with 13 and 37 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'O', 'H', 'O', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H22-C11-O8', 'H'] - -Fragments to allocate: 0 16 out of 12 36 -sublist 2 ['H22-C11-O8', 'H'] -list1 13 ['H22-C11-O8', 'H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 37 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 129 with 13 and 37 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'O', 'H', 'O', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H22-C11-O8', 'H'] - -Fragments to allocate: 0 17 out of 12 36 -sublist 2 ['H22-C11-O8', 'H'] -list1 13 ['H22-C11-O8', 'H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 37 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 130 with 13 and 37 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'O', 'H', 'O', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H22-C11-O8', 'H'] - -Fragments to allocate: 0 18 out of 12 36 -sublist 2 ['H22-C11-O8', 'H'] -list1 13 ['H22-C11-O8', 'H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 37 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 131 with 13 and 37 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'O', 'H', 'O', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H22-C11-O8', 'H'] - -Fragments to allocate: 0 19 out of 12 36 -sublist 2 ['H22-C11-O8', 'H'] -list1 13 ['H22-C11-O8', 'H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 37 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 132 with 13 and 37 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'O', 'H', 'O', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H22-C11-O8', 'H'] - -Fragments to allocate: 0 20 out of 12 36 -sublist 2 ['H22-C11-O8', 'H'] -list1 13 ['H22-C11-O8', 'H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 37 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 133 with 13 and 37 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'O', 'H', 'O', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 1, 0), (0, 0, 1), (0, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H22-C11-O8', 'H'] - -Fragments to allocate: 0 21 out of 12 36 -sublist 2 ['H22-C11-O8', 'H'] -list1 13 ['H22-C11-O8', 'H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 37 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 134 with 13 and 37 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'O', 'H', 'O', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, 1), (-1, 1, 0), (0, 1, 1), (-1, 0, 1), (-1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H22-C11-O8', 'H'] - -Fragments to allocate: 0 22 out of 12 36 -sublist 2 ['H22-C11-O8', 'H'] -list1 13 ['H22-C11-O8', 'H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 37 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 135 with 13 and 37 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'O', 'H', 'O', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 1, 0), (0, 0, 1), (0, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H22-C11-O8', 'H'] - -Fragments to allocate: 0 23 out of 12 36 -sublist 2 ['H22-C11-O8', 'H'] -list1 13 ['H22-C11-O8', 'H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 37 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 136 with 13 and 37 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'O', 'H', 'O', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, 1), (1, 0, 0), (0, -1, 1), (1, -1, 0), (1, 0, 1), (1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H22-C11-O8', 'H'] - -Fragments to allocate: 0 24 out of 12 36 -sublist 2 ['H22-C11-O8', 'H'] -list1 13 ['H22-C11-O8', 'H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 37 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 137 with 13 and 37 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'O', 'H', 'O', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (1, 0, 0), (0, 1, 0), (0, 0, 1), (1, 1, 0), (0, 1, 1), (1, 0, 1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 1 -SPILT_SPECIES: Laplacian lap=array([[-2, 0, 0, ..., 0, 0, 0], - [ 0, -2, 0, ..., 0, 0, 0], - [ 0, 0, -2, ..., 0, 0, 0], - ..., - [ 0, 0, 0, ..., -1, 0, 0], - [ 0, 0, 0, ..., 0, -1, 0], - [ 0, 0, 0, ..., 0, 0, -1]]) -SPILT_SPECIES: graph=<42x42 sparse matrix of type '' - with 132 stored elements in Compressed Sparse Row format> -COMBINE. received molecule: ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 42 - Formula = H23-C11-O8 - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES ---------------------------------------------------- - from merge fragments -COMBINE: Fragment H23-C11-O8 added to avglist -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 1 ['H23-C11-O8'] -SEQUENTIAL: badlist 0 [] - -Fragments to allocate: 0 1 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H23-C11-O8', 'H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 0 2 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H23-C11-O8', 'H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 0 3 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H23-C11-O8', 'H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 0 4 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H23-C11-O8', 'H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 0 5 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H23-C11-O8', 'H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 0 6 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H23-C11-O8', 'H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 0 7 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H23-C11-O8', 'H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 0 8 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H23-C11-O8', 'H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 0 9 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H23-C11-O8', 'H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 0 10 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H23-C11-O8', 'H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 0 11 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H23-C11-O8', 'H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 0 12 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H23-C11-O8', 'H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 0 13 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H23-C11-O8', 'H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 0 14 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H23-C11-O8', 'H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 0 15 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H23-C11-O8', 'H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 0 16 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H23-C11-O8', 'H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 0 17 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H23-C11-O8', 'H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 0 18 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H23-C11-O8', 'H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 0 19 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H23-C11-O8', 'H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 0 20 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H23-C11-O8', 'H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 0 21 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H23-C11-O8', 'H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 0 22 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H23-C11-O8', 'H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 0 23 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H23-C11-O8', 'H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 0 24 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H23-C11-O8', 'H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 0 25 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H23-C11-O8', 'H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 0 26 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H23-C11-O8', 'H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 0 27 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H23-C11-O8', 'H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 0 28 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H23-C11-O8', 'H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 0 29 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H23-C11-O8', 'H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 0 30 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H23-C11-O8', 'H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 0 31 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H23-C11-O8', 'H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 0 32 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H23-C11-O8', 'H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 0 33 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H23-C11-O8', 'H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 0 34 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H23-C11-O8', 'H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 0 35 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H23-C11-O8', 'H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 1 0 out of 12 35 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H23-C11-O8', 'H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H23-C11-O8', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 173 with 13 and 36 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, 1), (1, 0, 0), (0, -1, 1), (1, -1, 0), (1, 0, 1), (1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 1 1 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H16-C9-O5', 'H23-C11-O8', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 1 2 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H16-C9-O5', 'H23-C11-O8', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 1 3 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H16-C9-O5', 'H23-C11-O8', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 1 4 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H16-C9-O5', 'H23-C11-O8', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 1 5 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H16-C9-O5', 'H23-C11-O8', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 1 6 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H16-C9-O5', 'H23-C11-O8', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 1 7 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H16-C9-O5', 'H23-C11-O8', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 1 8 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H16-C9-O5', 'H23-C11-O8', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 1 9 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H16-C9-O5', 'H23-C11-O8', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 1 10 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H16-C9-O5', 'H23-C11-O8', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 1 11 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H16-C9-O5', 'H23-C11-O8', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 1 12 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H16-C9-O5', 'H23-C11-O8', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 1 13 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H16-C9-O5', 'H23-C11-O8', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 1 14 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H16-C9-O5', 'H23-C11-O8', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 1 15 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H16-C9-O5', 'H23-C11-O8', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 1 16 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H16-C9-O5', 'H23-C11-O8', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 1 17 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H16-C9-O5', 'H23-C11-O8', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 1 18 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H16-C9-O5', 'H23-C11-O8', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 1 19 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H16-C9-O5', 'H23-C11-O8', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 1 20 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H16-C9-O5', 'H23-C11-O8', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 1 21 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H16-C9-O5', 'H23-C11-O8', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 1 22 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H16-C9-O5', 'H23-C11-O8', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 1 23 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H16-C9-O5', 'H23-C11-O8', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 1 24 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H16-C9-O5', 'H23-C11-O8', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 1 25 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H16-C9-O5', 'H23-C11-O8', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 1 26 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H16-C9-O5', 'H23-C11-O8', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 1 27 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H16-C9-O5', 'H23-C11-O8', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 1 28 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H16-C9-O5', 'H23-C11-O8', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 1 29 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H16-C9-O5', 'H23-C11-O8', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 1 30 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H16-C9-O5', 'H23-C11-O8', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 1 31 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H16-C9-O5', 'H23-C11-O8', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 1 32 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H16-C9-O5', 'H23-C11-O8', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 1 33 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H16-C9-O5', 'H23-C11-O8', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 1 34 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H16-C9-O5', 'H23-C11-O8', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 1 35 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H16-C9-O5', 'H23-C11-O8', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 2 0 out of 12 35 -sublist 2 ['H3-C2', 'H'] -list1 13 ['H16-C9-O5', 'H23-C11-O8', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H23-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 209 with 13 and 36 Remaining in each list -SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, 1), (1, 0, 0), (0, -1, 1), (1, -1, 0), (1, 0, 1), (1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H3-C2', 'H'] - -Fragments to allocate: 2 1 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H16-C9-O5', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 2 2 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H16-C9-O5', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 2 3 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H16-C9-O5', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 2 4 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H16-C9-O5', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 2 5 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H16-C9-O5', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 2 6 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H16-C9-O5', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 2 7 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H16-C9-O5', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 2 8 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H16-C9-O5', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 2 9 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H16-C9-O5', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 2 10 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H16-C9-O5', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 2 11 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H16-C9-O5', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 2 12 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H16-C9-O5', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 2 13 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H16-C9-O5', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 2 14 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H16-C9-O5', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 2 15 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H16-C9-O5', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 2 16 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H16-C9-O5', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 2 17 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H16-C9-O5', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 2 18 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H16-C9-O5', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 2 19 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H16-C9-O5', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 2 20 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H16-C9-O5', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 2 21 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H16-C9-O5', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 2 22 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H16-C9-O5', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 2 23 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H16-C9-O5', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 2 24 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H16-C9-O5', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 2 25 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H16-C9-O5', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 2 26 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H16-C9-O5', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 2 27 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H16-C9-O5', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 2 28 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H16-C9-O5', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 2 29 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H16-C9-O5', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 2 30 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H16-C9-O5', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 2 31 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H16-C9-O5', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 2 32 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H16-C9-O5', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 2 33 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H16-C9-O5', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 2 34 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H16-C9-O5', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 2 35 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H16-C9-O5', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 3 0 out of 12 35 -sublist 2 ['H-O', 'H'] -list1 13 ['H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 245 with 13 and 36 Remaining in each list -SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, 1), (1, 0, 0), (0, -1, 1), (1, -1, 0), (1, 0, 1), (1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H-O', 'H'] - -Fragments to allocate: 3 1 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H3-C2', 'H16-C9-O5', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 3 2 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H3-C2', 'H16-C9-O5', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 3 3 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H3-C2', 'H16-C9-O5', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 3 4 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H3-C2', 'H16-C9-O5', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 3 5 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H3-C2', 'H16-C9-O5', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 3 6 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H3-C2', 'H16-C9-O5', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 3 7 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H3-C2', 'H16-C9-O5', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 3 8 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H3-C2', 'H16-C9-O5', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 3 9 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H3-C2', 'H16-C9-O5', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 3 10 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H3-C2', 'H16-C9-O5', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 3 11 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H3-C2', 'H16-C9-O5', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 3 12 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H3-C2', 'H16-C9-O5', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 3 13 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H3-C2', 'H16-C9-O5', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 3 14 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H3-C2', 'H16-C9-O5', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 3 15 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H3-C2', 'H16-C9-O5', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 3 16 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H3-C2', 'H16-C9-O5', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 3 17 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H3-C2', 'H16-C9-O5', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 3 18 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H3-C2', 'H16-C9-O5', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 3 19 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H3-C2', 'H16-C9-O5', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 3 20 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H3-C2', 'H16-C9-O5', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 3 21 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H3-C2', 'H16-C9-O5', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 3 22 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H3-C2', 'H16-C9-O5', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 3 23 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H3-C2', 'H16-C9-O5', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 3 24 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H3-C2', 'H16-C9-O5', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 3 25 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H3-C2', 'H16-C9-O5', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 3 26 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H3-C2', 'H16-C9-O5', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 3 27 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H3-C2', 'H16-C9-O5', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 3 28 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H3-C2', 'H16-C9-O5', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 3 29 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H3-C2', 'H16-C9-O5', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 3 30 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H3-C2', 'H16-C9-O5', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 3 31 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H3-C2', 'H16-C9-O5', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 3 32 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H3-C2', 'H16-C9-O5', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 3 33 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H3-C2', 'H16-C9-O5', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 3 34 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H3-C2', 'H16-C9-O5', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 3 35 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H3-C2', 'H16-C9-O5', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 4 0 out of 12 35 -sublist 2 ['H14-C8-O5', 'H'] -list1 13 ['H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 281 with 13 and 36 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, 1), (1, 0, 0), (0, -1, 1), (1, -1, 0), (1, 0, 1), (1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H14-C8-O5', 'H'] - -Fragments to allocate: 4 1 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 4 2 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 4 3 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 4 4 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 4 5 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 4 6 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 4 7 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 4 8 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 4 9 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 4 10 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 4 11 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 4 12 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 4 13 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 4 14 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 4 15 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 4 16 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 4 17 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 4 18 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 4 19 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 4 20 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 4 21 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 4 22 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 4 23 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 4 24 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 4 25 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 4 26 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 4 27 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 4 28 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 4 29 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 4 30 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 4 31 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 4 32 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 4 33 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 4 34 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 4 35 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 5 0 out of 12 35 -sublist 2 ['H17-C11-O9', 'H'] -list1 13 ['H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 317 with 13 and 36 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'O', 'C', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'H', 'C', 'H', 'O', 'H', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, 1), (1, 0, 0), (0, -1, 1), (1, -1, 0), (1, 0, 1), (1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H17-C11-O9', 'H'] - -Fragments to allocate: 5 1 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 5 2 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 5 3 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 5 4 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 5 5 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 5 6 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 5 7 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 5 8 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 5 9 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 5 10 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 5 11 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 5 12 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 5 13 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 5 14 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 5 15 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 5 16 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 5 17 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 5 18 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 5 19 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 5 20 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 5 21 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 5 22 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 5 23 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 5 24 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 5 25 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 5 26 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 5 27 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 5 28 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 5 29 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 5 30 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 5 31 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 5 32 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 5 33 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 5 34 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 5 35 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 6 0 out of 12 35 -sublist 2 ['H9-C7-O3', 'H'] -list1 13 ['H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H9-C7-O3', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 353 with 13 and 36 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, 1), (1, 0, 0), (0, -1, 1), (1, -1, 0), (1, 0, 1), (1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H9-C7-O3', 'H'] - -Fragments to allocate: 6 1 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 6 2 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 6 3 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 6 4 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 6 5 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 6 6 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 6 7 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 6 8 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 6 9 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 6 10 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 6 11 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 6 12 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 6 13 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 6 14 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 6 15 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 6 16 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 6 17 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 6 18 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 6 19 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 6 20 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 6 21 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 6 22 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 6 23 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 6 24 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 6 25 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 6 26 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 6 27 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 6 28 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 6 29 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 6 30 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 6 31 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 6 32 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 6 33 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 6 34 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 6 35 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 7 0 out of 12 35 -sublist 2 ['H15-C11-O10', 'H'] -list1 13 ['H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H15-C11-O10', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 389 with 13 and 36 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'O', 'O', 'O', 'O', 'C', 'C', 'O', 'O', 'C', 'O', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, 1), (1, 0, 0), (0, -1, 1), (1, -1, 0), (1, 0, 1), (1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H15-C11-O10', 'H'] - -Fragments to allocate: 7 1 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 7 2 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 7 3 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 7 4 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 7 5 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 7 6 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 7 7 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 7 8 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 7 9 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 7 10 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 7 11 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 7 12 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 7 13 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 7 14 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 7 15 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 7 16 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 7 17 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 7 18 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 7 19 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 7 20 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 7 21 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 7 22 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 7 23 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 7 24 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 7 25 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 7 26 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 7 27 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 7 28 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 7 29 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 7 30 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 7 31 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 7 32 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 7 33 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 7 34 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 7 35 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 8 0 out of 12 35 -sublist 2 ['H20-C12-O6', 'H'] -list1 13 ['H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H20-C12-O6', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 425 with 13 and 36 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'O', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, 1), (1, 0, 0), (0, -1, 1), (1, -1, 0), (1, 0, 1), (1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H20-C12-O6', 'H'] - -Fragments to allocate: 8 1 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 8 2 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 8 3 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 8 4 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 8 5 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 8 6 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 8 7 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 8 8 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 8 9 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 8 10 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 8 11 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 8 12 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 8 13 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 8 14 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 8 15 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 8 16 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 8 17 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 8 18 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 8 19 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 8 20 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 8 21 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 8 22 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 8 23 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 8 24 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 8 25 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 8 26 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 8 27 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 8 28 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 8 29 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 8 30 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 8 31 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 8 32 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 8 33 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 8 34 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 8 35 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 9 0 out of 12 35 -sublist 2 ['H21-C14-O6', 'H'] -list1 13 ['H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H21-C14-O6', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 461 with 13 and 36 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, 1), (1, 0, 0), (0, -1, 1), (1, -1, 0), (1, 0, 1), (1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H21-C14-O6', 'H'] - -Fragments to allocate: 9 1 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 9 2 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 9 3 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 9 4 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 9 5 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 9 6 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 9 7 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 9 8 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 9 9 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 9 10 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 9 11 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 9 12 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 9 13 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 9 14 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 9 15 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 9 16 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 9 17 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 9 18 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 9 19 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 9 20 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 9 21 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 9 22 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 9 23 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 9 24 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 9 25 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 9 26 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 9 27 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 9 28 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 9 29 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 9 30 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 9 31 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 9 32 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 9 33 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 9 34 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 9 35 out of 12 35 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 10 0 out of 12 35 -sublist 2 ['H23-C12-O7', 'H'] -list1 13 ['H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 10 1 out of 12 35 -sublist 2 ['H23-C12-O7', 'H'] -list1 13 ['H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 10 2 out of 12 35 -sublist 2 ['H23-C12-O7', 'H'] -list1 13 ['H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 10 3 out of 12 35 -sublist 2 ['H23-C12-O7', 'H'] -list1 13 ['H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 10 4 out of 12 35 -sublist 2 ['H23-C12-O7', 'H'] -list1 13 ['H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 10 5 out of 12 35 -sublist 2 ['H23-C12-O7', 'H'] -list1 13 ['H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 10 6 out of 12 35 -sublist 2 ['H23-C12-O7', 'H'] -list1 13 ['H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 10 7 out of 12 35 -sublist 2 ['H23-C12-O7', 'H'] -list1 13 ['H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 10 8 out of 12 35 -sublist 2 ['H23-C12-O7', 'H'] -list1 13 ['H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 10 9 out of 12 35 -sublist 2 ['H23-C12-O7', 'H'] -list1 13 ['H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 10 10 out of 12 35 -sublist 2 ['H23-C12-O7', 'H'] -list1 13 ['H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 10 11 out of 12 35 -sublist 2 ['H23-C12-O7', 'H'] -list1 13 ['H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 10 12 out of 12 35 -sublist 2 ['H23-C12-O7', 'H'] -list1 13 ['H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 10 13 out of 12 35 -sublist 2 ['H23-C12-O7', 'H'] -list1 13 ['H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 10 14 out of 12 35 -sublist 2 ['H23-C12-O7', 'H'] -list1 13 ['H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 10 15 out of 12 35 -sublist 2 ['H23-C12-O7', 'H'] -list1 13 ['H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 10 16 out of 12 35 -sublist 2 ['H23-C12-O7', 'H'] -list1 13 ['H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 10 17 out of 12 35 -sublist 2 ['H23-C12-O7', 'H'] -list1 13 ['H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 10 18 out of 12 35 -sublist 2 ['H23-C12-O7', 'H'] -list1 13 ['H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 10 19 out of 12 35 -sublist 2 ['H23-C12-O7', 'H'] -list1 13 ['H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 10 20 out of 12 35 -sublist 2 ['H23-C12-O7', 'H'] -list1 13 ['H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 10 21 out of 12 35 -sublist 2 ['H23-C12-O7', 'H'] -list1 13 ['H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 10 22 out of 12 35 -sublist 2 ['H23-C12-O7', 'H'] -list1 13 ['H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 10 23 out of 12 35 -sublist 2 ['H23-C12-O7', 'H'] -list1 13 ['H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 10 24 out of 12 35 -sublist 2 ['H23-C12-O7', 'H'] -list1 13 ['H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 10 25 out of 12 35 -sublist 2 ['H23-C12-O7', 'H'] -list1 13 ['H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 10 26 out of 12 35 -sublist 2 ['H23-C12-O7', 'H'] -list1 13 ['H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 10 27 out of 12 35 -sublist 2 ['H23-C12-O7', 'H'] -list1 13 ['H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 10 28 out of 12 35 -sublist 2 ['H23-C12-O7', 'H'] -list1 13 ['H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 10 29 out of 12 35 -sublist 2 ['H23-C12-O7', 'H'] -list1 13 ['H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 10 30 out of 12 35 -sublist 2 ['H23-C12-O7', 'H'] -list1 13 ['H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 10 31 out of 12 35 -sublist 2 ['H23-C12-O7', 'H'] -list1 13 ['H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 10 32 out of 12 35 -sublist 2 ['H23-C12-O7', 'H'] -list1 13 ['H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 10 33 out of 12 35 -sublist 2 ['H23-C12-O7', 'H'] -list1 13 ['H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 10 34 out of 12 35 -sublist 2 ['H23-C12-O7', 'H'] -list1 13 ['H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 10 35 out of 12 35 -sublist 2 ['H23-C12-O7', 'H'] -list1 13 ['H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 11 0 out of 12 35 -sublist 2 ['H20-C12-O9', 'H'] -list1 13 ['H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7', 'H20-C12-O9', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 533 with 13 and 36 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'O', 'O', 'O', 'C', 'C', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, 1), (1, 0, 0), (0, -1, 1), (1, -1, 0), (1, 0, 1), (1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H20-C12-O9', 'H'] - -Fragments to allocate: 11 1 out of 12 35 -sublist 2 ['H23-C12-O7', 'H'] -list1 13 ['H20-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H20-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 11 2 out of 12 35 -sublist 2 ['H23-C12-O7', 'H'] -list1 13 ['H20-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H20-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 11 3 out of 12 35 -sublist 2 ['H23-C12-O7', 'H'] -list1 13 ['H20-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H20-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 11 4 out of 12 35 -sublist 2 ['H23-C12-O7', 'H'] -list1 13 ['H20-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H20-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 11 5 out of 12 35 -sublist 2 ['H23-C12-O7', 'H'] -list1 13 ['H20-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H20-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 11 6 out of 12 35 -sublist 2 ['H23-C12-O7', 'H'] -list1 13 ['H20-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H20-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 11 7 out of 12 35 -sublist 2 ['H23-C12-O7', 'H'] -list1 13 ['H20-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H20-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 11 8 out of 12 35 -sublist 2 ['H23-C12-O7', 'H'] -list1 13 ['H20-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H20-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 11 9 out of 12 35 -sublist 2 ['H23-C12-O7', 'H'] -list1 13 ['H20-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H20-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 11 10 out of 12 35 -sublist 2 ['H23-C12-O7', 'H'] -list1 13 ['H20-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H20-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 11 11 out of 12 35 -sublist 2 ['H23-C12-O7', 'H'] -list1 13 ['H20-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H20-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 11 12 out of 12 35 -sublist 2 ['H23-C12-O7', 'H'] -list1 13 ['H20-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H20-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 11 13 out of 12 35 -sublist 2 ['H23-C12-O7', 'H'] -list1 13 ['H20-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H20-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 11 14 out of 12 35 -sublist 2 ['H23-C12-O7', 'H'] -list1 13 ['H20-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H20-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 11 15 out of 12 35 -sublist 2 ['H23-C12-O7', 'H'] -list1 13 ['H20-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H20-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 11 16 out of 12 35 -sublist 2 ['H23-C12-O7', 'H'] -list1 13 ['H20-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H20-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 11 17 out of 12 35 -sublist 2 ['H23-C12-O7', 'H'] -list1 13 ['H20-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H20-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 11 18 out of 12 35 -sublist 2 ['H23-C12-O7', 'H'] -list1 13 ['H20-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H20-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 11 19 out of 12 35 -sublist 2 ['H23-C12-O7', 'H'] -list1 13 ['H20-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H20-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 11 20 out of 12 35 -sublist 2 ['H23-C12-O7', 'H'] -list1 13 ['H20-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H20-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 11 21 out of 12 35 -sublist 2 ['H23-C12-O7', 'H'] -list1 13 ['H20-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H20-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 11 22 out of 12 35 -sublist 2 ['H23-C12-O7', 'H'] -list1 13 ['H20-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H20-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 11 23 out of 12 35 -sublist 2 ['H23-C12-O7', 'H'] -list1 13 ['H20-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H20-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 11 24 out of 12 35 -sublist 2 ['H23-C12-O7', 'H'] -list1 13 ['H20-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H20-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 11 25 out of 12 35 -sublist 2 ['H23-C12-O7', 'H'] -list1 13 ['H20-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H20-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 11 26 out of 12 35 -sublist 2 ['H23-C12-O7', 'H'] -list1 13 ['H20-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H20-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 11 27 out of 12 35 -sublist 2 ['H23-C12-O7', 'H'] -list1 13 ['H20-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H20-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 11 28 out of 12 35 -sublist 2 ['H23-C12-O7', 'H'] -list1 13 ['H20-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H20-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 11 29 out of 12 35 -sublist 2 ['H23-C12-O7', 'H'] -list1 13 ['H20-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H20-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 11 30 out of 12 35 -sublist 2 ['H23-C12-O7', 'H'] -list1 13 ['H20-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H20-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 11 31 out of 12 35 -sublist 2 ['H23-C12-O7', 'H'] -list1 13 ['H20-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H20-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 11 32 out of 12 35 -sublist 2 ['H23-C12-O7', 'H'] -list1 13 ['H20-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H20-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 11 33 out of 12 35 -sublist 2 ['H23-C12-O7', 'H'] -list1 13 ['H20-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H20-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 11 34 out of 12 35 -sublist 2 ['H23-C12-O7', 'H'] -list1 13 ['H20-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H20-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 11 35 out of 12 35 -sublist 2 ['H23-C12-O7', 'H'] -list1 13 ['H20-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H20-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H12-C11-O16-Fe2'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 12 0 out of 12 35 -sublist 2 ['H12-C11-O16-Fe2', 'H'] -list1 13 ['H20-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7', 'H12-C11-O16-Fe2'] -list2 36 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H20-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 569 with 13 and 36 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'Fe', 'O', 'O', 'O', 'O', 'O', 'O', 'C', 'C', 'C', 'Fe', 'O', 'O', 'C', 'H', 'O', 'H', 'O', 'O', 'C', 'O', 'O', 'C'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, 1), (1, 0, 0), (0, -1, 1), (1, -1, 0), (1, 0, 1), (1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 1 -SPILT_SPECIES: Laplacian lap=array([[-2, 0, 0, ..., 0, 0, 0], - [ 0, -2, 0, ..., 0, 0, 0], - [ 0, 0, -2, ..., 0, 0, 0], - ..., - [ 0, 0, 0, ..., -1, 1, 0], - [ 0, 0, 0, ..., 1, -3, 0], - [ 0, 0, 0, ..., 0, 0, -1]]) -SPILT_SPECIES: graph=<42x42 sparse matrix of type '' - with 148 stored elements in Compressed Sparse Row format> -COMBINE. received molecule: ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 42 - Formula = H13-C11-O16-Fe2 - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES ---------------------------------------------------- - from merge fragments -COMBINE: Fragment H13-C11-O16-Fe2 added to avglist -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 1 ['H13-C11-O16-Fe2'] -SEQUENTIAL: badlist 0 [] - -Fragments to allocate: 0 1 out of 12 34 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H13-C11-O16-Fe2', 'H20-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H20-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 34 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 0 2 out of 12 34 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H13-C11-O16-Fe2', 'H20-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H20-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 34 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 0 3 out of 12 34 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H13-C11-O16-Fe2', 'H20-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H20-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 34 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 0 4 out of 12 34 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H13-C11-O16-Fe2', 'H20-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H20-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 34 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 0 5 out of 12 34 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H13-C11-O16-Fe2', 'H20-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H20-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 34 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 0 6 out of 12 34 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H13-C11-O16-Fe2', 'H20-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H20-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 34 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 0 7 out of 12 34 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H13-C11-O16-Fe2', 'H20-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H20-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 34 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 0 8 out of 12 34 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H13-C11-O16-Fe2', 'H20-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H20-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 34 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 0 9 out of 12 34 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H13-C11-O16-Fe2', 'H20-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H20-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 34 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 0 10 out of 12 34 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H13-C11-O16-Fe2', 'H20-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H20-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 34 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 0 11 out of 12 34 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H13-C11-O16-Fe2', 'H20-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H20-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 34 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 0 12 out of 12 34 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H13-C11-O16-Fe2', 'H20-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H20-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 34 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 0 13 out of 12 34 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H13-C11-O16-Fe2', 'H20-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H20-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 34 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 0 14 out of 12 34 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H13-C11-O16-Fe2', 'H20-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H20-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 34 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 0 15 out of 12 34 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H13-C11-O16-Fe2', 'H20-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H20-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 34 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 0 16 out of 12 34 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H13-C11-O16-Fe2', 'H20-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H20-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 34 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 0 17 out of 12 34 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H13-C11-O16-Fe2', 'H20-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H20-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 34 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 0 18 out of 12 34 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H13-C11-O16-Fe2', 'H20-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H20-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 34 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 0 19 out of 12 34 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H13-C11-O16-Fe2', 'H20-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H20-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 34 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 0 20 out of 12 34 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H13-C11-O16-Fe2', 'H20-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H20-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 34 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 0 21 out of 12 34 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H13-C11-O16-Fe2', 'H20-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H20-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 34 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 0 22 out of 12 34 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H13-C11-O16-Fe2', 'H20-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H20-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 34 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 0 23 out of 12 34 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H13-C11-O16-Fe2', 'H20-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H20-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 34 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 0 24 out of 12 34 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H13-C11-O16-Fe2', 'H20-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H20-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 34 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 0 25 out of 12 34 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H13-C11-O16-Fe2', 'H20-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H20-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 34 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 0 26 out of 12 34 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H13-C11-O16-Fe2', 'H20-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H20-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 34 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 0 27 out of 12 34 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H13-C11-O16-Fe2', 'H20-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H20-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 34 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 0 28 out of 12 34 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H13-C11-O16-Fe2', 'H20-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H20-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 34 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 0 29 out of 12 34 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H13-C11-O16-Fe2', 'H20-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H20-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 34 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 0 30 out of 12 34 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H13-C11-O16-Fe2', 'H20-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H20-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 34 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 0 31 out of 12 34 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H13-C11-O16-Fe2', 'H20-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H20-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 34 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 0 32 out of 12 34 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H13-C11-O16-Fe2', 'H20-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H20-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 34 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 0 33 out of 12 34 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H13-C11-O16-Fe2', 'H20-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H20-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 34 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 0 34 out of 12 34 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H13-C11-O16-Fe2', 'H20-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H20-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 34 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 1 0 out of 12 34 -sublist 2 ['H20-C12-O9', 'H'] -list1 13 ['H13-C11-O16-Fe2', 'H20-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 35 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H13-C11-O16-Fe2', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 34 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 604 with 13 and 35 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'O', 'O', 'O', 'C', 'C', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 1, 0), (0, 0, 1), (0, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 1 -SPILT_SPECIES: Laplacian lap=array([[-2, 0, 0, ..., 0, 0, 0], - [ 0, -2, 0, ..., 0, 0, 0], - [ 0, 0, -5, ..., 0, 1, 0], - ..., - [ 0, 0, 0, ..., -1, 0, 0], - [ 0, 0, 1, ..., 0, -2, 0], - [ 0, 0, 0, ..., 0, 0, -1]]) -SPILT_SPECIES: graph=<42x42 sparse matrix of type '' - with 138 stored elements in Compressed Sparse Row format> -COMBINE. received molecule: ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 42 - Formula = H21-C12-O9 - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES ---------------------------------------------------- - from merge fragments -COMBINE: Fragment H21-C12-O9 added to avglist -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 1 ['H21-C12-O9'] -SEQUENTIAL: badlist 0 [] - -Fragments to allocate: 0 1 out of 12 33 -sublist 2 ['H21-C12-O9', 'H'] -list1 13 ['H21-C12-O9', 'H13-C11-O16-Fe2', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 34 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H13-C11-O16-Fe2', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 33 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 0 2 out of 12 33 -sublist 2 ['H21-C12-O9', 'H'] -list1 13 ['H21-C12-O9', 'H13-C11-O16-Fe2', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 34 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H13-C11-O16-Fe2', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 33 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 0 3 out of 12 33 -sublist 2 ['H21-C12-O9', 'H'] -list1 13 ['H21-C12-O9', 'H13-C11-O16-Fe2', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 34 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H13-C11-O16-Fe2', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 33 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 0 4 out of 12 33 -sublist 2 ['H21-C12-O9', 'H'] -list1 13 ['H21-C12-O9', 'H13-C11-O16-Fe2', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 34 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H13-C11-O16-Fe2', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 33 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 0 5 out of 12 33 -sublist 2 ['H21-C12-O9', 'H'] -list1 13 ['H21-C12-O9', 'H13-C11-O16-Fe2', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 34 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H13-C11-O16-Fe2', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 33 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 0 6 out of 12 33 -sublist 2 ['H21-C12-O9', 'H'] -list1 13 ['H21-C12-O9', 'H13-C11-O16-Fe2', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 34 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H13-C11-O16-Fe2', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 33 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 0 7 out of 12 33 -sublist 2 ['H21-C12-O9', 'H'] -list1 13 ['H21-C12-O9', 'H13-C11-O16-Fe2', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 34 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H13-C11-O16-Fe2', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 33 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 0 8 out of 12 33 -sublist 2 ['H21-C12-O9', 'H'] -list1 13 ['H21-C12-O9', 'H13-C11-O16-Fe2', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 34 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H13-C11-O16-Fe2', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 33 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 0 9 out of 12 33 -sublist 2 ['H21-C12-O9', 'H'] -list1 13 ['H21-C12-O9', 'H13-C11-O16-Fe2', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 34 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H13-C11-O16-Fe2', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 33 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 0 10 out of 12 33 -sublist 2 ['H21-C12-O9', 'H'] -list1 13 ['H21-C12-O9', 'H13-C11-O16-Fe2', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 34 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H13-C11-O16-Fe2', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 33 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 0 11 out of 12 33 -sublist 2 ['H21-C12-O9', 'H'] -list1 13 ['H21-C12-O9', 'H13-C11-O16-Fe2', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 34 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H13-C11-O16-Fe2', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 33 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 0 12 out of 12 33 -sublist 2 ['H21-C12-O9', 'H'] -list1 13 ['H21-C12-O9', 'H13-C11-O16-Fe2', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 34 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H13-C11-O16-Fe2', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 33 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 0 13 out of 12 33 -sublist 2 ['H21-C12-O9', 'H'] -list1 13 ['H21-C12-O9', 'H13-C11-O16-Fe2', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 34 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H13-C11-O16-Fe2', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 33 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 0 14 out of 12 33 -sublist 2 ['H21-C12-O9', 'H'] -list1 13 ['H21-C12-O9', 'H13-C11-O16-Fe2', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 34 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H13-C11-O16-Fe2', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 33 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 0 15 out of 12 33 -sublist 2 ['H21-C12-O9', 'H'] -list1 13 ['H21-C12-O9', 'H13-C11-O16-Fe2', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 34 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H13-C11-O16-Fe2', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 33 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 0 16 out of 12 33 -sublist 2 ['H21-C12-O9', 'H'] -list1 13 ['H21-C12-O9', 'H13-C11-O16-Fe2', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 34 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H13-C11-O16-Fe2', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 33 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 0 17 out of 12 33 -sublist 2 ['H21-C12-O9', 'H'] -list1 13 ['H21-C12-O9', 'H13-C11-O16-Fe2', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 34 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H13-C11-O16-Fe2', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 33 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 0 18 out of 12 33 -sublist 2 ['H21-C12-O9', 'H'] -list1 13 ['H21-C12-O9', 'H13-C11-O16-Fe2', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 34 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H13-C11-O16-Fe2', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 33 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 0 19 out of 12 33 -sublist 2 ['H21-C12-O9', 'H'] -list1 13 ['H21-C12-O9', 'H13-C11-O16-Fe2', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 34 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H13-C11-O16-Fe2', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 33 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 0 20 out of 12 33 -sublist 2 ['H21-C12-O9', 'H'] -list1 13 ['H21-C12-O9', 'H13-C11-O16-Fe2', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 34 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H13-C11-O16-Fe2', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 33 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 0 21 out of 12 33 -sublist 2 ['H21-C12-O9', 'H'] -list1 13 ['H21-C12-O9', 'H13-C11-O16-Fe2', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 34 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H13-C11-O16-Fe2', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 33 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 0 22 out of 12 33 -sublist 2 ['H21-C12-O9', 'H'] -list1 13 ['H21-C12-O9', 'H13-C11-O16-Fe2', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 34 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H13-C11-O16-Fe2', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 33 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 0 23 out of 12 33 -sublist 2 ['H21-C12-O9', 'H'] -list1 13 ['H21-C12-O9', 'H13-C11-O16-Fe2', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 34 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H13-C11-O16-Fe2', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 33 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 0 24 out of 12 33 -sublist 2 ['H21-C12-O9', 'H'] -list1 13 ['H21-C12-O9', 'H13-C11-O16-Fe2', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 34 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H13-C11-O16-Fe2', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 33 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 0 25 out of 12 33 -sublist 2 ['H21-C12-O9', 'H'] -list1 13 ['H21-C12-O9', 'H13-C11-O16-Fe2', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 34 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H13-C11-O16-Fe2', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 33 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 0 26 out of 12 33 -sublist 2 ['H21-C12-O9', 'H'] -list1 13 ['H21-C12-O9', 'H13-C11-O16-Fe2', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 34 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H13-C11-O16-Fe2', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 33 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 0 27 out of 12 33 -sublist 2 ['H21-C12-O9', 'H'] -list1 13 ['H21-C12-O9', 'H13-C11-O16-Fe2', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 34 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H13-C11-O16-Fe2', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 33 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 0 28 out of 12 33 -sublist 2 ['H21-C12-O9', 'H'] -list1 13 ['H21-C12-O9', 'H13-C11-O16-Fe2', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 34 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H13-C11-O16-Fe2', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 33 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 0 29 out of 12 33 -sublist 2 ['H21-C12-O9', 'H'] -list1 13 ['H21-C12-O9', 'H13-C11-O16-Fe2', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 34 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H13-C11-O16-Fe2', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 33 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 0 30 out of 12 33 -sublist 2 ['H21-C12-O9', 'H'] -list1 13 ['H21-C12-O9', 'H13-C11-O16-Fe2', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 34 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H13-C11-O16-Fe2', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 33 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 0 31 out of 12 33 -sublist 2 ['H21-C12-O9', 'H'] -list1 13 ['H21-C12-O9', 'H13-C11-O16-Fe2', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 34 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H13-C11-O16-Fe2', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 33 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 0 32 out of 12 33 -sublist 2 ['H21-C12-O9', 'H'] -list1 13 ['H21-C12-O9', 'H13-C11-O16-Fe2', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 34 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H13-C11-O16-Fe2', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 33 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 0 33 out of 12 33 -sublist 2 ['H21-C12-O9', 'H'] -list1 13 ['H21-C12-O9', 'H13-C11-O16-Fe2', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 34 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H13-C11-O16-Fe2', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 33 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 1 0 out of 12 33 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H21-C12-O9', 'H13-C11-O16-Fe2', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 34 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 33 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 1 1 out of 12 33 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H21-C12-O9', 'H13-C11-O16-Fe2', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 34 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 33 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 1 2 out of 12 33 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H21-C12-O9', 'H13-C11-O16-Fe2', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 34 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 33 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 1 3 out of 12 33 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H21-C12-O9', 'H13-C11-O16-Fe2', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 34 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 33 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 1 4 out of 12 33 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H21-C12-O9', 'H13-C11-O16-Fe2', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 34 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 33 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 1 5 out of 12 33 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H21-C12-O9', 'H13-C11-O16-Fe2', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 34 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 33 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 1 6 out of 12 33 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H21-C12-O9', 'H13-C11-O16-Fe2', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 34 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 33 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 1 7 out of 12 33 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H21-C12-O9', 'H13-C11-O16-Fe2', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 34 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 33 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 1 8 out of 12 33 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H21-C12-O9', 'H13-C11-O16-Fe2', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 34 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 33 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 1 9 out of 12 33 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H21-C12-O9', 'H13-C11-O16-Fe2', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 34 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 33 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 1 10 out of 12 33 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H21-C12-O9', 'H13-C11-O16-Fe2', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 34 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 33 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 1 11 out of 12 33 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H21-C12-O9', 'H13-C11-O16-Fe2', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 34 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 33 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 1 12 out of 12 33 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H21-C12-O9', 'H13-C11-O16-Fe2', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 34 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 33 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 1 13 out of 12 33 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H21-C12-O9', 'H13-C11-O16-Fe2', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 34 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 33 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 1 14 out of 12 33 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H21-C12-O9', 'H13-C11-O16-Fe2', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 34 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 33 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 1 15 out of 12 33 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H21-C12-O9', 'H13-C11-O16-Fe2', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 34 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 33 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 1 16 out of 12 33 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H21-C12-O9', 'H13-C11-O16-Fe2', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 34 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 33 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 1 17 out of 12 33 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H21-C12-O9', 'H13-C11-O16-Fe2', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 34 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 33 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 1 18 out of 12 33 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H21-C12-O9', 'H13-C11-O16-Fe2', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 34 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 33 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 1 19 out of 12 33 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H21-C12-O9', 'H13-C11-O16-Fe2', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 34 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 33 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 1 20 out of 12 33 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H21-C12-O9', 'H13-C11-O16-Fe2', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 34 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 33 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 1 21 out of 12 33 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H21-C12-O9', 'H13-C11-O16-Fe2', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 34 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 33 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 1 22 out of 12 33 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H21-C12-O9', 'H13-C11-O16-Fe2', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 34 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 33 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 1 23 out of 12 33 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H21-C12-O9', 'H13-C11-O16-Fe2', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 34 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 33 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 1 24 out of 12 33 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H21-C12-O9', 'H13-C11-O16-Fe2', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 34 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 33 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 1 25 out of 12 33 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H21-C12-O9', 'H13-C11-O16-Fe2', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 34 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 33 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 1 26 out of 12 33 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H21-C12-O9', 'H13-C11-O16-Fe2', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 34 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 33 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 1 27 out of 12 33 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H21-C12-O9', 'H13-C11-O16-Fe2', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 34 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 33 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 1 28 out of 12 33 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H21-C12-O9', 'H13-C11-O16-Fe2', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 34 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 33 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 1 29 out of 12 33 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H21-C12-O9', 'H13-C11-O16-Fe2', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 34 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 33 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 1 30 out of 12 33 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H21-C12-O9', 'H13-C11-O16-Fe2', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 34 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 33 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 1 31 out of 12 33 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H21-C12-O9', 'H13-C11-O16-Fe2', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 34 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 33 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 1 32 out of 12 33 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H21-C12-O9', 'H13-C11-O16-Fe2', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 34 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 33 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 1 33 out of 12 33 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H21-C12-O9', 'H13-C11-O16-Fe2', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 34 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C12-O9', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 33 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 2 0 out of 12 33 -sublist 2 ['H21-C14-O6', 'H'] -list1 13 ['H21-C12-O9', 'H13-C11-O16-Fe2', 'H21-C14-O6', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 34 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C12-O9', 'H13-C11-O16-Fe2', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 33 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 672 with 13 and 34 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, 1), (-1, 1, 0), (0, 1, 1), (-1, 0, 1), (-1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H21-C14-O6', 'H'] - -Fragments to allocate: 2 1 out of 12 33 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H21-C14-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 34 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H21-C12-O9', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 33 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 2 2 out of 12 33 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H21-C14-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 34 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H21-C12-O9', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 33 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 2 3 out of 12 33 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H21-C14-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 34 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H21-C12-O9', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 33 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 2 4 out of 12 33 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H21-C14-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 34 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H21-C12-O9', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 33 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 2 5 out of 12 33 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H21-C14-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 34 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H21-C12-O9', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 33 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 2 6 out of 12 33 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H21-C14-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 34 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H21-C12-O9', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 33 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 2 7 out of 12 33 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H21-C14-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 34 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H21-C12-O9', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 33 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 2 8 out of 12 33 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H21-C14-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 34 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H21-C12-O9', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 33 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 2 9 out of 12 33 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H21-C14-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 34 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H21-C12-O9', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 33 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 2 10 out of 12 33 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H21-C14-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 34 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H21-C12-O9', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 33 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 2 11 out of 12 33 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H21-C14-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 34 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H21-C12-O9', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 33 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 2 12 out of 12 33 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H21-C14-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 34 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H21-C12-O9', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 33 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 2 13 out of 12 33 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H21-C14-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 34 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H21-C12-O9', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 33 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 2 14 out of 12 33 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H21-C14-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 34 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H21-C12-O9', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 33 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 2 15 out of 12 33 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H21-C14-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 34 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H21-C12-O9', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 33 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 2 16 out of 12 33 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H21-C14-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 34 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H21-C12-O9', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 33 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 2 17 out of 12 33 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H21-C14-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 34 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H21-C12-O9', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 33 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 2 18 out of 12 33 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H21-C14-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 34 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H21-C12-O9', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 33 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 2 19 out of 12 33 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H21-C14-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 34 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H21-C12-O9', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 33 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 2 20 out of 12 33 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H21-C14-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 34 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H21-C12-O9', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 33 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 2 21 out of 12 33 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H21-C14-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 34 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H21-C12-O9', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 33 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 2 22 out of 12 33 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H21-C14-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 34 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H21-C12-O9', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 33 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 2 23 out of 12 33 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H21-C14-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 34 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H21-C12-O9', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 33 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 2 24 out of 12 33 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H21-C14-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 34 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H21-C12-O9', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 33 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 2 25 out of 12 33 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H21-C14-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 34 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H21-C12-O9', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 33 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 2 26 out of 12 33 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H21-C14-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 34 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H21-C12-O9', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 33 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 2 27 out of 12 33 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H21-C14-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 34 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H21-C12-O9', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 33 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 2 28 out of 12 33 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H21-C14-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 34 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H21-C12-O9', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 33 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 2 29 out of 12 33 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H21-C14-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 34 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H21-C12-O9', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 33 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 2 30 out of 12 33 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H21-C14-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 34 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H21-C12-O9', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 33 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 2 31 out of 12 33 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H21-C14-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 34 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H21-C12-O9', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 33 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 2 32 out of 12 33 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H21-C14-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 34 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H21-C12-O9', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 33 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 2 33 out of 12 33 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H21-C14-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 34 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H21-C12-O9', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 33 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 3 0 out of 12 33 -sublist 2 ['H20-C12-O6', 'H'] -list1 13 ['H21-C14-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H20-C12-O6', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 34 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 33 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 706 with 13 and 34 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'O', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, 1), (-1, 1, 0), (0, 1, 1), (-1, 0, 1), (-1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 1 -SPILT_SPECIES: Laplacian lap=array([[-2, 0, 0, ..., 0, 1, 0], - [ 0, -2, 0, ..., 0, 0, 0], - [ 0, 0, -2, ..., 0, 0, 0], - ..., - [ 0, 0, 0, ..., -1, 0, 0], - [ 1, 0, 0, ..., 0, -2, 0], - [ 0, 0, 0, ..., 0, 0, -1]]) -SPILT_SPECIES: graph=<39x39 sparse matrix of type '' - with 117 stored elements in Compressed Sparse Row format> -COMBINE. received molecule: ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 39 - Formula = H21-C12-O6 - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES ---------------------------------------------------- - from merge fragments -COMBINE: Fragment H21-C12-O6 added to avglist -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 1 ['H21-C12-O6'] -SEQUENTIAL: badlist 0 [] - -Fragments to allocate: 0 1 out of 12 32 -sublist 2 ['H21-C12-O6', 'H'] -list1 13 ['H21-C12-O6', 'H21-C14-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 33 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 32 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 707 with 13 and 33 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'O', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 1 -SPILT_SPECIES: Laplacian lap=array([[-2, 0, 0, ..., 1, 0, 0], - [ 0, -2, 0, ..., 0, 0, 0], - [ 0, 0, -2, ..., 0, 0, 0], - ..., - [ 1, 0, 0, ..., -3, 0, 1], - [ 0, 0, 0, ..., 0, -1, 0], - [ 0, 0, 0, ..., 1, 0, -1]]) -SPILT_SPECIES: graph=<40x40 sparse matrix of type '' - with 120 stored elements in Compressed Sparse Row format> -COMBINE. received molecule: ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 40 - Formula = H22-C12-O6 - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES ---------------------------------------------------- - from merge fragments -COMBINE: Fragment H22-C12-O6 added to avglist -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 1 ['H22-C12-O6'] -SEQUENTIAL: badlist 0 [] - -Fragments to allocate: 0 1 out of 12 31 -sublist 2 ['H22-C12-O6', 'H'] -list1 13 ['H22-C12-O6', 'H21-C14-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 32 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 31 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 708 with 13 and 32 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'O', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H22-C12-O6', 'H'] - -Fragments to allocate: 0 2 out of 12 31 -sublist 2 ['H22-C12-O6', 'H'] -list1 13 ['H22-C12-O6', 'H21-C14-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 32 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 31 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 709 with 13 and 32 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'O', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H22-C12-O6', 'H'] - -Fragments to allocate: 0 3 out of 12 31 -sublist 2 ['H22-C12-O6', 'H'] -list1 13 ['H22-C12-O6', 'H21-C14-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 32 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 31 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 710 with 13 and 32 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'O', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H22-C12-O6', 'H'] - -Fragments to allocate: 0 4 out of 12 31 -sublist 2 ['H22-C12-O6', 'H'] -list1 13 ['H22-C12-O6', 'H21-C14-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 32 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 31 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 711 with 13 and 32 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'O', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 1 -SPILT_SPECIES: Laplacian lap=array([[-2, 0, 0, ..., 0, 0, 0], - [ 0, -2, 0, ..., 0, 0, 0], - [ 0, 0, -2, ..., 0, 0, 0], - ..., - [ 0, 0, 0, ..., -1, 0, 0], - [ 0, 0, 0, ..., 0, -1, 0], - [ 0, 0, 0, ..., 0, 0, -1]]) -SPILT_SPECIES: graph=<41x41 sparse matrix of type '' - with 123 stored elements in Compressed Sparse Row format> -COMBINE. received molecule: ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 41 - Formula = H23-C12-O6 - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES ---------------------------------------------------- - from merge fragments -COMBINE: Fragment H23-C12-O6 added to avglist -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 1 ['H23-C12-O6'] -SEQUENTIAL: badlist 0 [] - -Fragments to allocate: 0 1 out of 12 30 -sublist 2 ['H23-C12-O6', 'H'] -list1 13 ['H23-C12-O6', 'H21-C14-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 31 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 712 with 13 and 31 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'O', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H23-C12-O6', 'H'] - -Fragments to allocate: 0 2 out of 12 30 -sublist 2 ['H23-C12-O6', 'H'] -list1 13 ['H23-C12-O6', 'H21-C14-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 31 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 713 with 13 and 31 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'O', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H23-C12-O6', 'H'] - -Fragments to allocate: 0 3 out of 12 30 -sublist 2 ['H23-C12-O6', 'H'] -list1 13 ['H23-C12-O6', 'H21-C14-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 31 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 714 with 13 and 31 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'O', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 1, 0), (0, 0, 1), (0, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H23-C12-O6', 'H'] - -Fragments to allocate: 0 4 out of 12 30 -sublist 2 ['H23-C12-O6', 'H'] -list1 13 ['H23-C12-O6', 'H21-C14-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 31 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 715 with 13 and 31 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'O', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, 1), (-1, 0, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H23-C12-O6', 'H'] - -Fragments to allocate: 0 5 out of 12 30 -sublist 2 ['H23-C12-O6', 'H'] -list1 13 ['H23-C12-O6', 'H21-C14-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 31 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 716 with 13 and 31 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'O', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H23-C12-O6', 'H'] - -Fragments to allocate: 0 6 out of 12 30 -sublist 2 ['H23-C12-O6', 'H'] -list1 13 ['H23-C12-O6', 'H21-C14-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 31 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 717 with 13 and 31 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'O', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, 1), (-1, 1, 0), (0, 1, 1), (-1, 0, 1), (-1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 1 -SPILT_SPECIES: Laplacian lap=array([[-2, 0, 0, ..., 0, 0, 0], - [ 0, -2, 0, ..., 0, 0, 0], - [ 0, 0, -2, ..., 0, 0, 0], - ..., - [ 0, 0, 0, ..., -1, 0, 0], - [ 0, 0, 0, ..., 0, -1, 0], - [ 0, 0, 0, ..., 0, 0, -2]]) -SPILT_SPECIES: graph=<42x42 sparse matrix of type '' - with 128 stored elements in Compressed Sparse Row format> -COMBINE. received molecule: ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 42 - Formula = H24-C12-O6 - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES ---------------------------------------------------- - from merge fragments -COMBINE: reordered_newmolec.formula='H24-C12-O6' -COMBINE: reordered_newmolec=------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 42 - Formula = H24-C12-O6 - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES ---------------------------------------------------- - -COMPARE_SPECIES. Comparing: -H24-C12-O6 -H24-C12-O6 -mol1.adj_types=array([[0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0], - ..., - [0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0]]) -mol2.adj_types=array([[0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0], - ..., - [0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0]]) -COMPARE_SPECIES. kdx ldx elem1 - elem2 : reordered - reference -COMPARE_SPECIES. FALSE, different adjacency count -COMPARE_SPECIES. 4 4 H - H : 2 - 0 -COMPARE_SPECIES. FALSE, different adjacency count -COMPARE_SPECIES. 4 9 H - C : 23 - 24 -COMPARE_SPECIES. FALSE, different adjacency count -COMPARE_SPECIES. 9 4 C - H : 23 - 24 -COMBINE: reordered_newmolec.formula='H24-C12-O6' -COMBINE: reordered_newmolec=------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 42 - Formula = H24-C12-O6 - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES ---------------------------------------------------- - -COMPARE_SPECIES. Comparing: -H24-C12-O6 -H24-C12-O6 -mol1.adj_types=array([[0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0], - ..., - [0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0]]) -mol2.adj_types=array([[0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0], - ..., - [0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0]]) -COMPARE_SPECIES. kdx ldx elem1 - elem2 : reordered - reference -COMPARE_SPECIES. FALSE, different adjacency count -COMPARE_SPECIES. 4 4 H - H : 2 - 0 -COMPARE_SPECIES. FALSE, different adjacency count -COMPARE_SPECIES. 4 9 H - C : 23 - 24 -COMPARE_SPECIES. FALSE, different adjacency count -COMPARE_SPECIES. 9 4 C - H : 23 - 24 -COMBINE: reordered_newmolec.formula='H24-C12-O6' -COMBINE: reordered_newmolec=------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 42 - Formula = H24-C12-O6 - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES ---------------------------------------------------- - -COMPARE_SPECIES. Comparing: -H24-C12-O6 -H24-C12-O6 -mol1.adj_types=array([[0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0], - ..., - [0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0]]) -mol2.adj_types=array([[0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0], - ..., - [0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0]]) -COMPARE_SPECIES. kdx ldx elem1 - elem2 : reordered - reference -COMPARE_SPECIES. FALSE, different adjacency count -COMPARE_SPECIES. 4 4 H - H : 2 - 0 -COMPARE_SPECIES. FALSE, different adjacency count -COMPARE_SPECIES. 4 9 H - C : 23 - 24 -COMPARE_SPECIES. FALSE, different adjacency count -COMPARE_SPECIES. 9 4 C - H : 23 - 24 -COMBINE: Fragment H24-C12-O6 added to avglist -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 1 ['H24-C12-O6'] -SEQUENTIAL: badlist 0 [] - -Fragments to allocate: 0 1 out of 12 29 -sublist 2 ['H24-C12-O6', 'H'] -list1 13 ['H24-C12-O6', 'H21-C14-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 0 2 out of 12 29 -sublist 2 ['H24-C12-O6', 'H'] -list1 13 ['H24-C12-O6', 'H21-C14-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 0 3 out of 12 29 -sublist 2 ['H24-C12-O6', 'H'] -list1 13 ['H24-C12-O6', 'H21-C14-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 0 4 out of 12 29 -sublist 2 ['H24-C12-O6', 'H'] -list1 13 ['H24-C12-O6', 'H21-C14-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 0 5 out of 12 29 -sublist 2 ['H24-C12-O6', 'H'] -list1 13 ['H24-C12-O6', 'H21-C14-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 0 6 out of 12 29 -sublist 2 ['H24-C12-O6', 'H'] -list1 13 ['H24-C12-O6', 'H21-C14-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 0 7 out of 12 29 -sublist 2 ['H24-C12-O6', 'H'] -list1 13 ['H24-C12-O6', 'H21-C14-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 0 8 out of 12 29 -sublist 2 ['H24-C12-O6', 'H'] -list1 13 ['H24-C12-O6', 'H21-C14-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 0 9 out of 12 29 -sublist 2 ['H24-C12-O6', 'H'] -list1 13 ['H24-C12-O6', 'H21-C14-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 0 10 out of 12 29 -sublist 2 ['H24-C12-O6', 'H'] -list1 13 ['H24-C12-O6', 'H21-C14-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 0 11 out of 12 29 -sublist 2 ['H24-C12-O6', 'H'] -list1 13 ['H24-C12-O6', 'H21-C14-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 0 12 out of 12 29 -sublist 2 ['H24-C12-O6', 'H'] -list1 13 ['H24-C12-O6', 'H21-C14-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 0 13 out of 12 29 -sublist 2 ['H24-C12-O6', 'H'] -list1 13 ['H24-C12-O6', 'H21-C14-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 0 14 out of 12 29 -sublist 2 ['H24-C12-O6', 'H'] -list1 13 ['H24-C12-O6', 'H21-C14-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 0 15 out of 12 29 -sublist 2 ['H24-C12-O6', 'H'] -list1 13 ['H24-C12-O6', 'H21-C14-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 0 16 out of 12 29 -sublist 2 ['H24-C12-O6', 'H'] -list1 13 ['H24-C12-O6', 'H21-C14-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 0 17 out of 12 29 -sublist 2 ['H24-C12-O6', 'H'] -list1 13 ['H24-C12-O6', 'H21-C14-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 0 18 out of 12 29 -sublist 2 ['H24-C12-O6', 'H'] -list1 13 ['H24-C12-O6', 'H21-C14-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 0 19 out of 12 29 -sublist 2 ['H24-C12-O6', 'H'] -list1 13 ['H24-C12-O6', 'H21-C14-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 0 20 out of 12 29 -sublist 2 ['H24-C12-O6', 'H'] -list1 13 ['H24-C12-O6', 'H21-C14-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 0 21 out of 12 29 -sublist 2 ['H24-C12-O6', 'H'] -list1 13 ['H24-C12-O6', 'H21-C14-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 0 22 out of 12 29 -sublist 2 ['H24-C12-O6', 'H'] -list1 13 ['H24-C12-O6', 'H21-C14-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 0 23 out of 12 29 -sublist 2 ['H24-C12-O6', 'H'] -list1 13 ['H24-C12-O6', 'H21-C14-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 0 24 out of 12 29 -sublist 2 ['H24-C12-O6', 'H'] -list1 13 ['H24-C12-O6', 'H21-C14-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 0 25 out of 12 29 -sublist 2 ['H24-C12-O6', 'H'] -list1 13 ['H24-C12-O6', 'H21-C14-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 0 26 out of 12 29 -sublist 2 ['H24-C12-O6', 'H'] -list1 13 ['H24-C12-O6', 'H21-C14-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 0 27 out of 12 29 -sublist 2 ['H24-C12-O6', 'H'] -list1 13 ['H24-C12-O6', 'H21-C14-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 0 28 out of 12 29 -sublist 2 ['H24-C12-O6', 'H'] -list1 13 ['H24-C12-O6', 'H21-C14-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 0 29 out of 12 29 -sublist 2 ['H24-C12-O6', 'H'] -list1 13 ['H24-C12-O6', 'H21-C14-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 1 0 out of 12 29 -sublist 2 ['H21-C14-O6', 'H'] -list1 13 ['H24-C12-O6', 'H21-C14-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 747 with 13 and 30 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H21-C14-O6', 'H'] - -Fragments to allocate: 1 1 out of 12 29 -sublist 2 ['H24-C12-O6', 'H'] -list1 13 ['H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 1 2 out of 12 29 -sublist 2 ['H24-C12-O6', 'H'] -list1 13 ['H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 1 3 out of 12 29 -sublist 2 ['H24-C12-O6', 'H'] -list1 13 ['H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 1 4 out of 12 29 -sublist 2 ['H24-C12-O6', 'H'] -list1 13 ['H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 1 5 out of 12 29 -sublist 2 ['H24-C12-O6', 'H'] -list1 13 ['H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 1 6 out of 12 29 -sublist 2 ['H24-C12-O6', 'H'] -list1 13 ['H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 1 7 out of 12 29 -sublist 2 ['H24-C12-O6', 'H'] -list1 13 ['H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 1 8 out of 12 29 -sublist 2 ['H24-C12-O6', 'H'] -list1 13 ['H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 1 9 out of 12 29 -sublist 2 ['H24-C12-O6', 'H'] -list1 13 ['H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 1 10 out of 12 29 -sublist 2 ['H24-C12-O6', 'H'] -list1 13 ['H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 1 11 out of 12 29 -sublist 2 ['H24-C12-O6', 'H'] -list1 13 ['H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 1 12 out of 12 29 -sublist 2 ['H24-C12-O6', 'H'] -list1 13 ['H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 1 13 out of 12 29 -sublist 2 ['H24-C12-O6', 'H'] -list1 13 ['H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 1 14 out of 12 29 -sublist 2 ['H24-C12-O6', 'H'] -list1 13 ['H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 1 15 out of 12 29 -sublist 2 ['H24-C12-O6', 'H'] -list1 13 ['H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 1 16 out of 12 29 -sublist 2 ['H24-C12-O6', 'H'] -list1 13 ['H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 1 17 out of 12 29 -sublist 2 ['H24-C12-O6', 'H'] -list1 13 ['H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 1 18 out of 12 29 -sublist 2 ['H24-C12-O6', 'H'] -list1 13 ['H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 1 19 out of 12 29 -sublist 2 ['H24-C12-O6', 'H'] -list1 13 ['H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 1 20 out of 12 29 -sublist 2 ['H24-C12-O6', 'H'] -list1 13 ['H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 1 21 out of 12 29 -sublist 2 ['H24-C12-O6', 'H'] -list1 13 ['H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 1 22 out of 12 29 -sublist 2 ['H24-C12-O6', 'H'] -list1 13 ['H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 1 23 out of 12 29 -sublist 2 ['H24-C12-O6', 'H'] -list1 13 ['H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 1 24 out of 12 29 -sublist 2 ['H24-C12-O6', 'H'] -list1 13 ['H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 1 25 out of 12 29 -sublist 2 ['H24-C12-O6', 'H'] -list1 13 ['H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 1 26 out of 12 29 -sublist 2 ['H24-C12-O6', 'H'] -list1 13 ['H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 1 27 out of 12 29 -sublist 2 ['H24-C12-O6', 'H'] -list1 13 ['H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 1 28 out of 12 29 -sublist 2 ['H24-C12-O6', 'H'] -list1 13 ['H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 1 29 out of 12 29 -sublist 2 ['H24-C12-O6', 'H'] -list1 13 ['H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 2 0 out of 12 29 -sublist 2 ['H21-C12-O9', 'H'] -list1 13 ['H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H24-C12-O6', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 2 1 out of 12 29 -sublist 2 ['H21-C12-O9', 'H'] -list1 13 ['H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H24-C12-O6', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 2 2 out of 12 29 -sublist 2 ['H21-C12-O9', 'H'] -list1 13 ['H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H24-C12-O6', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 2 3 out of 12 29 -sublist 2 ['H21-C12-O9', 'H'] -list1 13 ['H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H24-C12-O6', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 2 4 out of 12 29 -sublist 2 ['H21-C12-O9', 'H'] -list1 13 ['H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H24-C12-O6', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 2 5 out of 12 29 -sublist 2 ['H21-C12-O9', 'H'] -list1 13 ['H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H24-C12-O6', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 2 6 out of 12 29 -sublist 2 ['H21-C12-O9', 'H'] -list1 13 ['H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H24-C12-O6', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 2 7 out of 12 29 -sublist 2 ['H21-C12-O9', 'H'] -list1 13 ['H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H24-C12-O6', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 2 8 out of 12 29 -sublist 2 ['H21-C12-O9', 'H'] -list1 13 ['H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H24-C12-O6', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 2 9 out of 12 29 -sublist 2 ['H21-C12-O9', 'H'] -list1 13 ['H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H24-C12-O6', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 2 10 out of 12 29 -sublist 2 ['H21-C12-O9', 'H'] -list1 13 ['H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H24-C12-O6', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 2 11 out of 12 29 -sublist 2 ['H21-C12-O9', 'H'] -list1 13 ['H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H24-C12-O6', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 2 12 out of 12 29 -sublist 2 ['H21-C12-O9', 'H'] -list1 13 ['H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H24-C12-O6', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 2 13 out of 12 29 -sublist 2 ['H21-C12-O9', 'H'] -list1 13 ['H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H24-C12-O6', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 2 14 out of 12 29 -sublist 2 ['H21-C12-O9', 'H'] -list1 13 ['H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H24-C12-O6', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 2 15 out of 12 29 -sublist 2 ['H21-C12-O9', 'H'] -list1 13 ['H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H24-C12-O6', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 2 16 out of 12 29 -sublist 2 ['H21-C12-O9', 'H'] -list1 13 ['H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H24-C12-O6', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 2 17 out of 12 29 -sublist 2 ['H21-C12-O9', 'H'] -list1 13 ['H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H24-C12-O6', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 2 18 out of 12 29 -sublist 2 ['H21-C12-O9', 'H'] -list1 13 ['H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H24-C12-O6', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 2 19 out of 12 29 -sublist 2 ['H21-C12-O9', 'H'] -list1 13 ['H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H24-C12-O6', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 2 20 out of 12 29 -sublist 2 ['H21-C12-O9', 'H'] -list1 13 ['H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H24-C12-O6', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 2 21 out of 12 29 -sublist 2 ['H21-C12-O9', 'H'] -list1 13 ['H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H24-C12-O6', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 2 22 out of 12 29 -sublist 2 ['H21-C12-O9', 'H'] -list1 13 ['H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H24-C12-O6', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 2 23 out of 12 29 -sublist 2 ['H21-C12-O9', 'H'] -list1 13 ['H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H24-C12-O6', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 2 24 out of 12 29 -sublist 2 ['H21-C12-O9', 'H'] -list1 13 ['H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H24-C12-O6', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 2 25 out of 12 29 -sublist 2 ['H21-C12-O9', 'H'] -list1 13 ['H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H24-C12-O6', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 2 26 out of 12 29 -sublist 2 ['H21-C12-O9', 'H'] -list1 13 ['H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H24-C12-O6', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 2 27 out of 12 29 -sublist 2 ['H21-C12-O9', 'H'] -list1 13 ['H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H24-C12-O6', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 2 28 out of 12 29 -sublist 2 ['H21-C12-O9', 'H'] -list1 13 ['H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H24-C12-O6', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 2 29 out of 12 29 -sublist 2 ['H21-C12-O9', 'H'] -list1 13 ['H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H24-C12-O6', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 3 0 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 3 1 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 3 2 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 3 3 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 3 4 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 3 5 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 3 6 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 3 7 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 3 8 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 3 9 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 3 10 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 3 11 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 3 12 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 3 13 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 3 14 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 3 15 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 3 16 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 3 17 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 3 18 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 3 19 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 3 20 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 3 21 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 3 22 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 3 23 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 3 24 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 3 25 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 3 26 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 3 27 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 3 28 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 3 29 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 4 0 out of 12 29 -sublist 2 ['H15-C11-O10', 'H'] -list1 13 ['H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H15-C11-O10', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 837 with 13 and 30 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'O', 'O', 'O', 'O', 'C', 'C', 'O', 'O', 'C', 'O', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H15-C11-O10', 'H'] - -Fragments to allocate: 4 1 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 4 2 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 4 3 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 4 4 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 4 5 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 4 6 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 4 7 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 4 8 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 4 9 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 4 10 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 4 11 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 4 12 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 4 13 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 4 14 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 4 15 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 4 16 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 4 17 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 4 18 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 4 19 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 4 20 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 4 21 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 4 22 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 4 23 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 4 24 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 4 25 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 4 26 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 4 27 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 4 28 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 4 29 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 5 0 out of 12 29 -sublist 2 ['H9-C7-O3', 'H'] -list1 13 ['H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H9-C7-O3', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 867 with 13 and 30 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H9-C7-O3', 'H'] - -Fragments to allocate: 5 1 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 5 2 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 5 3 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 5 4 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 5 5 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 5 6 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 5 7 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 5 8 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 5 9 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 5 10 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 5 11 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 5 12 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 5 13 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 5 14 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 5 15 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 5 16 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 5 17 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 5 18 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 5 19 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 5 20 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 5 21 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 5 22 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 5 23 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 5 24 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 5 25 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 5 26 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 5 27 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 5 28 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 5 29 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 6 0 out of 12 29 -sublist 2 ['H17-C11-O9', 'H'] -list1 13 ['H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H17-C11-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 897 with 13 and 30 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'O', 'C', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'H', 'C', 'H', 'O', 'H', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H17-C11-O9', 'H'] - -Fragments to allocate: 6 1 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 6 2 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 6 3 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 6 4 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 6 5 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 6 6 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 6 7 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 6 8 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 6 9 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 6 10 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 6 11 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 6 12 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 6 13 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 6 14 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 6 15 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 6 16 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 6 17 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 6 18 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 6 19 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 6 20 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 6 21 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 6 22 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 6 23 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 6 24 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 6 25 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 6 26 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 6 27 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 6 28 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 6 29 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 7 0 out of 12 29 -sublist 2 ['H14-C8-O5', 'H'] -list1 13 ['H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H14-C8-O5', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 927 with 13 and 30 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H14-C8-O5', 'H'] - -Fragments to allocate: 7 1 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 7 2 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 7 3 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 7 4 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 7 5 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 7 6 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 7 7 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 7 8 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 7 9 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 7 10 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 7 11 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 7 12 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 7 13 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 7 14 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 7 15 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 7 16 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 7 17 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 7 18 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 7 19 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 7 20 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 7 21 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 7 22 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 7 23 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 7 24 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 7 25 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 7 26 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 7 27 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 7 28 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 7 29 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 8 0 out of 12 29 -sublist 2 ['H-O', 'H'] -list1 13 ['H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H-O', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 957 with 13 and 30 Remaining in each list -SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H-O', 'H'] - -Fragments to allocate: 8 1 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 8 2 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 8 3 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 8 4 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 8 5 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 8 6 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 8 7 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 8 8 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 8 9 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 8 10 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 8 11 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 8 12 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 8 13 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 8 14 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 8 15 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 8 16 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 8 17 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 8 18 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 8 19 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 8 20 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 8 21 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 8 22 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 8 23 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 8 24 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 8 25 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 8 26 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 8 27 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 8 28 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 8 29 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 9 0 out of 12 29 -sublist 2 ['H3-C2', 'H'] -list1 13 ['H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H3-C2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 987 with 13 and 30 Remaining in each list -SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H3-C2', 'H'] - -Fragments to allocate: 9 1 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 9 2 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 9 3 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 9 4 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 9 5 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 9 6 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 9 7 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 9 8 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 9 9 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 9 10 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 9 11 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 9 12 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 9 13 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 9 14 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 9 15 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 9 16 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 9 17 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 9 18 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 9 19 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 9 20 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 9 21 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 9 22 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 9 23 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 9 24 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 9 25 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 9 26 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 9 27 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 9 28 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 9 29 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 10 0 out of 12 29 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H16-C9-O5', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 1017 with 13 and 30 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 10 1 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 10 2 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 10 3 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 10 4 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 10 5 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 10 6 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 10 7 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 10 8 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 10 9 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 10 10 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 10 11 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 10 12 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 10 13 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 10 14 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 10 15 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 10 16 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 10 17 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 10 18 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 10 19 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 10 20 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 10 21 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 10 22 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 10 23 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 10 24 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 10 25 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 10 26 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 10 27 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 10 28 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 10 29 out of 12 29 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 11 0 out of 12 29 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 11 1 out of 12 29 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 11 2 out of 12 29 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 11 3 out of 12 29 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 11 4 out of 12 29 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 11 5 out of 12 29 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 11 6 out of 12 29 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 11 7 out of 12 29 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 11 8 out of 12 29 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 11 9 out of 12 29 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 11 10 out of 12 29 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 11 11 out of 12 29 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 11 12 out of 12 29 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 11 13 out of 12 29 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 11 14 out of 12 29 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 11 15 out of 12 29 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 11 16 out of 12 29 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 11 17 out of 12 29 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 11 18 out of 12 29 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 11 19 out of 12 29 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 11 20 out of 12 29 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 11 21 out of 12 29 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 11 22 out of 12 29 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 11 23 out of 12 29 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 11 24 out of 12 29 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 11 25 out of 12 29 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 11 26 out of 12 29 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 11 27 out of 12 29 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 11 28 out of 12 29 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 11 29 out of 12 29 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 12 0 out of 12 29 -sublist 2 ['H23-C12-O7', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 12 1 out of 12 29 -sublist 2 ['H23-C12-O7', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 12 2 out of 12 29 -sublist 2 ['H23-C12-O7', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 12 3 out of 12 29 -sublist 2 ['H23-C12-O7', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 12 4 out of 12 29 -sublist 2 ['H23-C12-O7', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 12 5 out of 12 29 -sublist 2 ['H23-C12-O7', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 12 6 out of 12 29 -sublist 2 ['H23-C12-O7', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 12 7 out of 12 29 -sublist 2 ['H23-C12-O7', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 12 8 out of 12 29 -sublist 2 ['H23-C12-O7', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 12 9 out of 12 29 -sublist 2 ['H23-C12-O7', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 12 10 out of 12 29 -sublist 2 ['H23-C12-O7', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 12 11 out of 12 29 -sublist 2 ['H23-C12-O7', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 12 12 out of 12 29 -sublist 2 ['H23-C12-O7', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 12 13 out of 12 29 -sublist 2 ['H23-C12-O7', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 12 14 out of 12 29 -sublist 2 ['H23-C12-O7', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 12 15 out of 12 29 -sublist 2 ['H23-C12-O7', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 12 16 out of 12 29 -sublist 2 ['H23-C12-O7', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 12 17 out of 12 29 -sublist 2 ['H23-C12-O7', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 12 18 out of 12 29 -sublist 2 ['H23-C12-O7', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 12 19 out of 12 29 -sublist 2 ['H23-C12-O7', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 12 20 out of 12 29 -sublist 2 ['H23-C12-O7', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 12 21 out of 12 29 -sublist 2 ['H23-C12-O7', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 12 22 out of 12 29 -sublist 2 ['H23-C12-O7', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 12 23 out of 12 29 -sublist 2 ['H23-C12-O7', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 12 24 out of 12 29 -sublist 2 ['H23-C12-O7', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 12 25 out of 12 29 -sublist 2 ['H23-C12-O7', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 12 26 out of 12 29 -sublist 2 ['H23-C12-O7', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 12 27 out of 12 29 -sublist 2 ['H23-C12-O7', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 12 28 out of 12 29 -sublist 2 ['H23-C12-O7', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 12 29 out of 12 29 -sublist 2 ['H23-C12-O7', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - Increased Threshold_tmat. Now: 0.6000000000000001 - Maxsize of the translation matrix is= 12 - -Fragments to allocate: 0 0 out of 12 29 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 1 with 13 and 30 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 0 1 out of 12 29 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 2 with 13 and 30 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 0 2 out of 12 29 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 3 with 13 and 30 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (-1, -1, 0), (0, -1, -1), (0, -1, 1), (-1, 0, -1), (-1, 0, 1), (-1, -1, -1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 0 3 out of 12 29 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 4 with 13 and 30 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, -1), (1, 0, 0), (0, -1, -1), (1, -1, 0), (1, 0, -1), (1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 0 4 out of 12 29 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 5 with 13 and 30 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 0 5 out of 12 29 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 6 with 13 and 30 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 0 6 out of 12 29 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 7 with 13 and 30 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 0 7 out of 12 29 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 8 with 13 and 30 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 0 8 out of 12 29 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 9 with 13 and 30 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 0 9 out of 12 29 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 10 with 13 and 30 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (-1, -1, 0), (0, -1, -1), (0, -1, 1), (-1, 0, -1), (-1, 0, 1), (-1, -1, -1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 0 10 out of 12 29 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 11 with 13 and 30 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 0 11 out of 12 29 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 12 with 13 and 30 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, -1), (1, 0, 0), (0, -1, -1), (1, -1, 0), (1, 0, -1), (1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 0 12 out of 12 29 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 13 with 13 and 30 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 0 13 out of 12 29 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 14 with 13 and 30 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 0 14 out of 12 29 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 15 with 13 and 30 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -Adjacency Matrix: Distance 0.241 smaller than clash for atoms 10 30 H H [12.74620545 8.54085884 4.4509368 ] [12.77240545 8.54753615 4.21146097] 1.3 -MERGE_FRAGMENTS: count_species found 0 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 0 15 out of 12 29 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 16 with 13 and 30 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, -1), (1, 0, 0), (0, -1, -1), (1, -1, 0), (1, 0, -1), (1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 0 16 out of 12 29 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 17 with 13 and 30 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, -1), (1, 0, 0), (0, -1, -1), (1, -1, 0), (1, 0, -1), (1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 0 17 out of 12 29 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 18 with 13 and 30 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 0 18 out of 12 29 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 19 with 13 and 30 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, 1), (1, 0, 0), (0, -1, 1), (1, -1, 0), (1, 0, 1), (1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 0 19 out of 12 29 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 20 with 13 and 30 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 0 20 out of 12 29 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 21 with 13 and 30 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, -1), (1, 0, 0), (0, -1, -1), (1, -1, 0), (1, 0, -1), (1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 0 21 out of 12 29 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 22 with 13 and 30 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 0 22 out of 12 29 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 23 with 13 and 30 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, -1), (1, 0, 0), (0, -1, -1), (1, -1, 0), (1, 0, -1), (1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 0 23 out of 12 29 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 24 with 13 and 30 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 0 24 out of 12 29 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 25 with 13 and 30 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 0 25 out of 12 29 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 26 with 13 and 30 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 0 26 out of 12 29 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 27 with 13 and 30 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 0 27 out of 12 29 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 28 with 13 and 30 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 0 28 out of 12 29 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 29 with 13 and 30 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 0 29 out of 12 29 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 30 with 13 and 30 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 1 0 out of 12 29 -sublist 2 ['H3-C2', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 31 with 13 and 30 Remaining in each list -SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H3-C2', 'H'] - -Fragments to allocate: 1 1 out of 12 29 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H3-C2', 'H16-C9-O5', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 32 with 13 and 30 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 1 2 out of 12 29 -sublist 2 ['H3-C2', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 33 with 13 and 30 Remaining in each list -SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H3-C2', 'H'] - -Fragments to allocate: 1 3 out of 12 29 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H3-C2', 'H16-C9-O5', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 34 with 13 and 30 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 1 4 out of 12 29 -sublist 2 ['H3-C2', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 35 with 13 and 30 Remaining in each list -SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H3-C2', 'H'] - -Fragments to allocate: 1 5 out of 12 29 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H3-C2', 'H16-C9-O5', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 36 with 13 and 30 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 1 6 out of 12 29 -sublist 2 ['H3-C2', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 37 with 13 and 30 Remaining in each list -SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H3-C2', 'H'] - -Fragments to allocate: 1 7 out of 12 29 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H3-C2', 'H16-C9-O5', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 38 with 13 and 30 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, -1), (1, 0, 0), (0, -1, -1), (1, -1, 0), (1, 0, -1), (1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 1 8 out of 12 29 -sublist 2 ['H3-C2', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 39 with 13 and 30 Remaining in each list -SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H3-C2', 'H'] - -Fragments to allocate: 1 9 out of 12 29 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H3-C2', 'H16-C9-O5', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 40 with 13 and 30 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, -1), (1, 0, 0), (0, -1, -1), (1, -1, 0), (1, 0, -1), (1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 1 10 out of 12 29 -sublist 2 ['H3-C2', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 41 with 13 and 30 Remaining in each list -SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H3-C2', 'H'] - -Fragments to allocate: 1 11 out of 12 29 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H3-C2', 'H16-C9-O5', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 42 with 13 and 30 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, 1), (1, 0, 0), (0, -1, 1), (1, -1, 0), (1, 0, 1), (1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 1 12 out of 12 29 -sublist 2 ['H3-C2', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 43 with 13 and 30 Remaining in each list -SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H3-C2', 'H'] - -Fragments to allocate: 1 13 out of 12 29 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H3-C2', 'H16-C9-O5', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 44 with 13 and 30 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, -1), (1, 0, 0), (0, -1, -1), (1, -1, 0), (1, 0, -1), (1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 1 14 out of 12 29 -sublist 2 ['H3-C2', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 45 with 13 and 30 Remaining in each list -SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, -1), (1, 0, 0), (0, -1, -1), (1, -1, 0), (1, 0, -1), (1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H3-C2', 'H'] - -Fragments to allocate: 1 15 out of 12 29 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H3-C2', 'H16-C9-O5', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 46 with 13 and 30 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -Adjacency Matrix: Distance 0.241 smaller than clash for atoms 10 30 H H [12.74620545 8.54085884 4.4509368 ] [12.77240545 8.54753615 4.21146097] 1.3 -MERGE_FRAGMENTS: count_species found 0 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 1 16 out of 12 29 -sublist 2 ['H3-C2', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 47 with 13 and 30 Remaining in each list -SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H3-C2', 'H'] - -Fragments to allocate: 1 17 out of 12 29 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H3-C2', 'H16-C9-O5', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 48 with 13 and 30 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 1 18 out of 12 29 -sublist 2 ['H3-C2', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 49 with 13 and 30 Remaining in each list -SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, -1), (1, 0, 0), (0, -1, -1), (1, -1, 0), (1, 0, -1), (1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H3-C2', 'H'] - -Fragments to allocate: 1 19 out of 12 29 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H3-C2', 'H16-C9-O5', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 50 with 13 and 30 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 1 20 out of 12 29 -sublist 2 ['H3-C2', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 51 with 13 and 30 Remaining in each list -SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (-1, -1, 0), (0, -1, -1), (0, -1, 1), (-1, 0, -1), (-1, 0, 1), (-1, -1, -1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H3-C2', 'H'] - -Fragments to allocate: 1 21 out of 12 29 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H3-C2', 'H16-C9-O5', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 52 with 13 and 30 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 1 22 out of 12 29 -sublist 2 ['H3-C2', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 53 with 13 and 30 Remaining in each list -SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H3-C2', 'H'] - -Fragments to allocate: 1 23 out of 12 29 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H3-C2', 'H16-C9-O5', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 54 with 13 and 30 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 1 24 out of 12 29 -sublist 2 ['H3-C2', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 55 with 13 and 30 Remaining in each list -SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H3-C2', 'H'] - -Fragments to allocate: 1 25 out of 12 29 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H3-C2', 'H16-C9-O5', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 56 with 13 and 30 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 1 26 out of 12 29 -sublist 2 ['H3-C2', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 57 with 13 and 30 Remaining in each list -SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, -1), (1, 0, 0), (0, -1, -1), (1, -1, 0), (1, 0, -1), (1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H3-C2', 'H'] - -Fragments to allocate: 1 27 out of 12 29 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H3-C2', 'H16-C9-O5', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 58 with 13 and 30 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (-1, -1, 0), (0, -1, -1), (0, -1, 1), (-1, 0, -1), (-1, 0, 1), (-1, -1, -1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 1 28 out of 12 29 -sublist 2 ['H3-C2', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 59 with 13 and 30 Remaining in each list -SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H3-C2', 'H'] - -Fragments to allocate: 1 29 out of 12 29 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H3-C2', 'H16-C9-O5', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 60 with 13 and 30 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 2 0 out of 12 29 -sublist 2 ['H-O', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 61 with 13 and 30 Remaining in each list -SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H-O', 'H'] - -Fragments to allocate: 2 1 out of 12 29 -sublist 2 ['H3-C2', 'H'] -list1 13 ['H-O', 'H16-C9-O5', 'H3-C2', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H16-C9-O5', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 62 with 13 and 30 Remaining in each list -SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H3-C2', 'H'] - -Fragments to allocate: 2 2 out of 12 29 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H3-C2', 'H-O', 'H16-C9-O5', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 63 with 13 and 30 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (-1, -1, 0), (0, -1, -1), (0, -1, 1), (-1, 0, -1), (-1, 0, 1), (-1, -1, -1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 2 3 out of 12 29 -sublist 2 ['H-O', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 64 with 13 and 30 Remaining in each list -SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, -1), (1, 0, 0), (0, -1, -1), (1, -1, 0), (1, 0, -1), (1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H-O', 'H'] - -Fragments to allocate: 2 4 out of 12 29 -sublist 2 ['H3-C2', 'H'] -list1 13 ['H-O', 'H16-C9-O5', 'H3-C2', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H16-C9-O5', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 65 with 13 and 30 Remaining in each list -SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H3-C2', 'H'] - -Fragments to allocate: 2 5 out of 12 29 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H3-C2', 'H-O', 'H16-C9-O5', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 66 with 13 and 30 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 2 6 out of 12 29 -sublist 2 ['H-O', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 67 with 13 and 30 Remaining in each list -SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H-O', 'H'] - -Fragments to allocate: 2 7 out of 12 29 -sublist 2 ['H3-C2', 'H'] -list1 13 ['H-O', 'H16-C9-O5', 'H3-C2', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H16-C9-O5', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 68 with 13 and 30 Remaining in each list -SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H3-C2', 'H'] - -Fragments to allocate: 2 8 out of 12 29 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H3-C2', 'H-O', 'H16-C9-O5', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 69 with 13 and 30 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 2 9 out of 12 29 -sublist 2 ['H-O', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 70 with 13 and 30 Remaining in each list -SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (-1, -1, 0), (0, -1, -1), (0, -1, 1), (-1, 0, -1), (-1, 0, 1), (-1, -1, -1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H-O', 'H'] - -Fragments to allocate: 2 10 out of 12 29 -sublist 2 ['H3-C2', 'H'] -list1 13 ['H-O', 'H16-C9-O5', 'H3-C2', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H16-C9-O5', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 71 with 13 and 30 Remaining in each list -SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H3-C2', 'H'] - -Fragments to allocate: 2 11 out of 12 29 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H3-C2', 'H-O', 'H16-C9-O5', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 72 with 13 and 30 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, -1), (1, 0, 0), (0, -1, -1), (1, -1, 0), (1, 0, -1), (1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 2 12 out of 12 29 -sublist 2 ['H-O', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 73 with 13 and 30 Remaining in each list -SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H-O', 'H'] - -Fragments to allocate: 2 13 out of 12 29 -sublist 2 ['H3-C2', 'H'] -list1 13 ['H-O', 'H16-C9-O5', 'H3-C2', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H16-C9-O5', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 74 with 13 and 30 Remaining in each list -SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H3-C2', 'H'] - -Fragments to allocate: 2 14 out of 12 29 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H3-C2', 'H-O', 'H16-C9-O5', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 75 with 13 and 30 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -Adjacency Matrix: Distance 0.241 smaller than clash for atoms 10 30 H H [12.74620545 8.54085884 4.4509368 ] [12.77240545 8.54753615 4.21146097] 1.3 -MERGE_FRAGMENTS: count_species found 0 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 2 15 out of 12 29 -sublist 2 ['H-O', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 76 with 13 and 30 Remaining in each list -SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, -1), (1, 0, 0), (0, -1, -1), (1, -1, 0), (1, 0, -1), (1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H-O', 'H'] - -Fragments to allocate: 2 16 out of 12 29 -sublist 2 ['H3-C2', 'H'] -list1 13 ['H-O', 'H16-C9-O5', 'H3-C2', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H16-C9-O5', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 77 with 13 and 30 Remaining in each list -SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, -1), (1, 0, 0), (0, -1, -1), (1, -1, 0), (1, 0, -1), (1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H3-C2', 'H'] - -Fragments to allocate: 2 17 out of 12 29 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H3-C2', 'H-O', 'H16-C9-O5', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 78 with 13 and 30 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 2 18 out of 12 29 -sublist 2 ['H-O', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 79 with 13 and 30 Remaining in each list -SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, 1), (1, 0, 0), (0, -1, 1), (1, -1, 0), (1, 0, 1), (1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H-O', 'H'] - -Fragments to allocate: 2 19 out of 12 29 -sublist 2 ['H3-C2', 'H'] -list1 13 ['H-O', 'H16-C9-O5', 'H3-C2', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H16-C9-O5', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 80 with 13 and 30 Remaining in each list -SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H3-C2', 'H'] - -Fragments to allocate: 2 20 out of 12 29 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H3-C2', 'H-O', 'H16-C9-O5', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 81 with 13 and 30 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, -1), (1, 0, 0), (0, -1, -1), (1, -1, 0), (1, 0, -1), (1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 2 21 out of 12 29 -sublist 2 ['H-O', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 82 with 13 and 30 Remaining in each list -SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H-O', 'H'] - -Fragments to allocate: 2 22 out of 12 29 -sublist 2 ['H3-C2', 'H'] -list1 13 ['H-O', 'H16-C9-O5', 'H3-C2', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H16-C9-O5', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 83 with 13 and 30 Remaining in each list -SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, -1), (1, 0, 0), (0, -1, -1), (1, -1, 0), (1, 0, -1), (1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H3-C2', 'H'] - -Fragments to allocate: 2 23 out of 12 29 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H3-C2', 'H-O', 'H16-C9-O5', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 84 with 13 and 30 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 2 24 out of 12 29 -sublist 2 ['H-O', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 85 with 13 and 30 Remaining in each list -SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H-O', 'H'] - -Fragments to allocate: 2 25 out of 12 29 -sublist 2 ['H3-C2', 'H'] -list1 13 ['H-O', 'H16-C9-O5', 'H3-C2', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H16-C9-O5', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 86 with 13 and 30 Remaining in each list -SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H3-C2', 'H'] - -Fragments to allocate: 2 26 out of 12 29 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H3-C2', 'H-O', 'H16-C9-O5', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 87 with 13 and 30 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 2 27 out of 12 29 -sublist 2 ['H-O', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 88 with 13 and 30 Remaining in each list -SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H-O', 'H'] - -Fragments to allocate: 2 28 out of 12 29 -sublist 2 ['H3-C2', 'H'] -list1 13 ['H-O', 'H16-C9-O5', 'H3-C2', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H16-C9-O5', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 89 with 13 and 30 Remaining in each list -SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H3-C2', 'H'] - -Fragments to allocate: 2 29 out of 12 29 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H3-C2', 'H-O', 'H16-C9-O5', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 90 with 13 and 30 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 3 0 out of 12 29 -sublist 2 ['H14-C8-O5', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 91 with 13 and 30 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H14-C8-O5', 'H'] - -Fragments to allocate: 3 1 out of 12 29 -sublist 2 ['H-O', 'H'] -list1 13 ['H14-C8-O5', 'H16-C9-O5', 'H3-C2', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C8-O5', 'H16-C9-O5', 'H3-C2', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 92 with 13 and 30 Remaining in each list -SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H-O', 'H'] - -Fragments to allocate: 3 2 out of 12 29 -sublist 2 ['H3-C2', 'H'] -list1 13 ['H-O', 'H14-C8-O5', 'H16-C9-O5', 'H3-C2', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H14-C8-O5', 'H16-C9-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 93 with 13 and 30 Remaining in each list -SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H3-C2', 'H'] - -Fragments to allocate: 3 3 out of 12 29 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H3-C2', 'H-O', 'H14-C8-O5', 'H16-C9-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 94 with 13 and 30 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 3 4 out of 12 29 -sublist 2 ['H14-C8-O5', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H-O', 'H14-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 30 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 95 with 13 and 30 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 1 -SPILT_SPECIES: Laplacian lap=array([[-2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0], - [ 0, -2, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1], - [ 1, 0, 0, 0, 0, -4, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 1, 0, 0, 0, 1, 0, 0, -4, 1, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -4, 1, 1, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, -4, 1, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, -4, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 0, 0, -2, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, -4, 1, 1, 1, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1, 0, -1, 0, 0, 0, 0], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1, 0, 0, -4, 1, 1, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, 0], - [ 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1]]) -SPILT_SPECIES: graph=<28x28 sparse matrix of type '' - with 82 stored elements in Compressed Sparse Row format> -COMBINE. received molecule: ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 28 - Formula = H15-C8-O5 - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES ---------------------------------------------------- - from merge fragments -COMBINE: Fragment H15-C8-O5 added to avglist -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 1 ['H15-C8-O5'] -SEQUENTIAL: badlist 0 [] - -Fragments to allocate: 0 1 out of 12 28 -sublist 2 ['H15-C8-O5', 'H'] -list1 13 ['H15-C8-O5', 'H16-C9-O5', 'H3-C2', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 28 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 96 with 13 and 29 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H15-C8-O5', 'H'] - -Fragments to allocate: 0 2 out of 12 28 -sublist 2 ['H15-C8-O5', 'H'] -list1 13 ['H15-C8-O5', 'H16-C9-O5', 'H3-C2', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 28 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 97 with 13 and 29 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H15-C8-O5', 'H'] - -Fragments to allocate: 0 3 out of 12 28 -sublist 2 ['H15-C8-O5', 'H'] -list1 13 ['H15-C8-O5', 'H16-C9-O5', 'H3-C2', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 28 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 98 with 13 and 29 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H15-C8-O5', 'H'] - -Fragments to allocate: 0 4 out of 12 28 -sublist 2 ['H15-C8-O5', 'H'] -list1 13 ['H15-C8-O5', 'H16-C9-O5', 'H3-C2', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 28 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 99 with 13 and 29 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H15-C8-O5', 'H'] - -Fragments to allocate: 0 5 out of 12 28 -sublist 2 ['H15-C8-O5', 'H'] -list1 13 ['H15-C8-O5', 'H16-C9-O5', 'H3-C2', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 28 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 100 with 13 and 29 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H15-C8-O5', 'H'] - -Fragments to allocate: 0 6 out of 12 28 -sublist 2 ['H15-C8-O5', 'H'] -list1 13 ['H15-C8-O5', 'H16-C9-O5', 'H3-C2', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 29 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 28 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 101 with 13 and 29 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, -1), (1, 0, 0), (0, -1, -1), (1, -1, 0), (1, 0, -1), (1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 1 -SPILT_SPECIES: Laplacian lap=array([[-2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0], - [ 0, -2, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0], - [ 1, 0, 0, 0, 0, -4, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 1, 0, 0, 0, 1, 0, 0, -5, 1, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1], - [ 0, 0, 0, 0, 0, 0, 0, 0, 1, -2, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1], - [ 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -4, 1, 1, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, -4, 1, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, -4, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 0, 0, -2, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, -4, 1, 1, 1, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1, 0, -1, 0, 0, 0, 0, 0], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1, 0, 0, -4, 1, 1, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, 0, 0], - [ 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2]]) -SPILT_SPECIES: graph=<29x29 sparse matrix of type '' - with 87 stored elements in Compressed Sparse Row format> -COMBINE. received molecule: ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 29 - Formula = H16-C8-O5 - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES ---------------------------------------------------- - from merge fragments -COMBINE: Fragment H16-C8-O5 added to avglist -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 1 ['H16-C8-O5'] -SEQUENTIAL: badlist 0 [] - -Fragments to allocate: 0 1 out of 12 27 -sublist 2 ['H16-C8-O5', 'H'] -list1 13 ['H16-C8-O5', 'H16-C9-O5', 'H3-C2', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 28 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 27 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 102 with 13 and 28 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C8-O5', 'H'] - -Fragments to allocate: 0 2 out of 12 27 -sublist 2 ['H16-C8-O5', 'H'] -list1 13 ['H16-C8-O5', 'H16-C9-O5', 'H3-C2', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 28 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 27 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 103 with 13 and 28 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C8-O5', 'H'] - -Fragments to allocate: 0 3 out of 12 27 -sublist 2 ['H16-C8-O5', 'H'] -list1 13 ['H16-C8-O5', 'H16-C9-O5', 'H3-C2', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 28 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 27 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 104 with 13 and 28 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C8-O5', 'H'] - -Fragments to allocate: 0 4 out of 12 27 -sublist 2 ['H16-C8-O5', 'H'] -list1 13 ['H16-C8-O5', 'H16-C9-O5', 'H3-C2', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 28 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 27 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 105 with 13 and 28 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C8-O5', 'H'] - -Fragments to allocate: 0 5 out of 12 27 -sublist 2 ['H16-C8-O5', 'H'] -list1 13 ['H16-C8-O5', 'H16-C9-O5', 'H3-C2', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 28 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 27 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 106 with 13 and 28 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C8-O5', 'H'] - -Fragments to allocate: 0 6 out of 12 27 -sublist 2 ['H16-C8-O5', 'H'] -list1 13 ['H16-C8-O5', 'H16-C9-O5', 'H3-C2', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 28 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 27 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 107 with 13 and 28 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C8-O5', 'H'] - -Fragments to allocate: 0 7 out of 12 27 -sublist 2 ['H16-C8-O5', 'H'] -list1 13 ['H16-C8-O5', 'H16-C9-O5', 'H3-C2', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 28 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 27 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 108 with 13 and 28 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, -1), (1, 0, 0), (0, -1, -1), (1, -1, 0), (1, 0, -1), (1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C8-O5', 'H'] - -Fragments to allocate: 0 8 out of 12 27 -sublist 2 ['H16-C8-O5', 'H'] -list1 13 ['H16-C8-O5', 'H16-C9-O5', 'H3-C2', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 28 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 27 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 109 with 13 and 28 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C8-O5', 'H'] - -Fragments to allocate: 0 9 out of 12 27 -sublist 2 ['H16-C8-O5', 'H'] -list1 13 ['H16-C8-O5', 'H16-C9-O5', 'H3-C2', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 28 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 27 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 110 with 13 and 28 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, 1), (1, 0, 0), (0, -1, 1), (1, -1, 0), (1, 0, 1), (1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C8-O5', 'H'] - -Fragments to allocate: 0 10 out of 12 27 -sublist 2 ['H16-C8-O5', 'H'] -list1 13 ['H16-C8-O5', 'H16-C9-O5', 'H3-C2', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 28 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 27 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 111 with 13 and 28 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C8-O5', 'H'] - -Fragments to allocate: 0 11 out of 12 27 -sublist 2 ['H16-C8-O5', 'H'] -list1 13 ['H16-C8-O5', 'H16-C9-O5', 'H3-C2', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 28 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 27 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 112 with 13 and 28 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, -1), (1, 0, 0), (0, -1, -1), (1, -1, 0), (1, 0, -1), (1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C8-O5', 'H'] - -Fragments to allocate: 0 12 out of 12 27 -sublist 2 ['H16-C8-O5', 'H'] -list1 13 ['H16-C8-O5', 'H16-C9-O5', 'H3-C2', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 28 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 27 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 113 with 13 and 28 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, -1), (1, 0, 0), (0, -1, -1), (1, -1, 0), (1, 0, -1), (1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C8-O5', 'H'] - -Fragments to allocate: 0 13 out of 12 27 -sublist 2 ['H16-C8-O5', 'H'] -list1 13 ['H16-C8-O5', 'H16-C9-O5', 'H3-C2', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 28 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 27 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 114 with 13 and 28 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C8-O5', 'H'] - -Fragments to allocate: 0 14 out of 12 27 -sublist 2 ['H16-C8-O5', 'H'] -list1 13 ['H16-C8-O5', 'H16-C9-O5', 'H3-C2', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 28 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 27 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 115 with 13 and 28 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C8-O5', 'H'] - -Fragments to allocate: 0 15 out of 12 27 -sublist 2 ['H16-C8-O5', 'H'] -list1 13 ['H16-C8-O5', 'H16-C9-O5', 'H3-C2', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 28 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 27 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 116 with 13 and 28 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C8-O5', 'H'] - -Fragments to allocate: 0 16 out of 12 27 -sublist 2 ['H16-C8-O5', 'H'] -list1 13 ['H16-C8-O5', 'H16-C9-O5', 'H3-C2', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 28 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 27 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 117 with 13 and 28 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, -1), (1, 0, 0), (0, -1, -1), (1, -1, 0), (1, 0, -1), (1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C8-O5', 'H'] - -Fragments to allocate: 0 17 out of 12 27 -sublist 2 ['H16-C8-O5', 'H'] -list1 13 ['H16-C8-O5', 'H16-C9-O5', 'H3-C2', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 28 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 27 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 118 with 13 and 28 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C8-O5', 'H'] - -Fragments to allocate: 0 18 out of 12 27 -sublist 2 ['H16-C8-O5', 'H'] -list1 13 ['H16-C8-O5', 'H16-C9-O5', 'H3-C2', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 28 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 27 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 119 with 13 and 28 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (-1, -1, 0), (0, -1, -1), (0, -1, 1), (-1, 0, -1), (-1, 0, 1), (-1, -1, -1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C8-O5', 'H'] - -Fragments to allocate: 0 19 out of 12 27 -sublist 2 ['H16-C8-O5', 'H'] -list1 13 ['H16-C8-O5', 'H16-C9-O5', 'H3-C2', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 28 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 27 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 120 with 13 and 28 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C8-O5', 'H'] - -Fragments to allocate: 0 20 out of 12 27 -sublist 2 ['H16-C8-O5', 'H'] -list1 13 ['H16-C8-O5', 'H16-C9-O5', 'H3-C2', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 28 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 27 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 121 with 13 and 28 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C8-O5', 'H'] - -Fragments to allocate: 0 21 out of 12 27 -sublist 2 ['H16-C8-O5', 'H'] -list1 13 ['H16-C8-O5', 'H16-C9-O5', 'H3-C2', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 28 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 27 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 122 with 13 and 28 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C8-O5', 'H'] - -Fragments to allocate: 0 22 out of 12 27 -sublist 2 ['H16-C8-O5', 'H'] -list1 13 ['H16-C8-O5', 'H16-C9-O5', 'H3-C2', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 28 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 27 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 123 with 13 and 28 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C8-O5', 'H'] - -Fragments to allocate: 0 23 out of 12 27 -sublist 2 ['H16-C8-O5', 'H'] -list1 13 ['H16-C8-O5', 'H16-C9-O5', 'H3-C2', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 28 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 27 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 124 with 13 and 28 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C8-O5', 'H'] - -Fragments to allocate: 0 24 out of 12 27 -sublist 2 ['H16-C8-O5', 'H'] -list1 13 ['H16-C8-O5', 'H16-C9-O5', 'H3-C2', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 28 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 27 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 125 with 13 and 28 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, -1), (1, 0, 0), (0, -1, -1), (1, -1, 0), (1, 0, -1), (1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C8-O5', 'H'] - -Fragments to allocate: 0 25 out of 12 27 -sublist 2 ['H16-C8-O5', 'H'] -list1 13 ['H16-C8-O5', 'H16-C9-O5', 'H3-C2', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 28 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 27 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 126 with 13 and 28 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (-1, -1, 0), (0, -1, -1), (0, -1, 1), (-1, 0, -1), (-1, 0, 1), (-1, -1, -1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C8-O5', 'H'] - -Fragments to allocate: 0 26 out of 12 27 -sublist 2 ['H16-C8-O5', 'H'] -list1 13 ['H16-C8-O5', 'H16-C9-O5', 'H3-C2', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 28 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 27 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 127 with 13 and 28 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C8-O5', 'H'] - -Fragments to allocate: 0 27 out of 12 27 -sublist 2 ['H16-C8-O5', 'H'] -list1 13 ['H16-C8-O5', 'H16-C9-O5', 'H3-C2', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 28 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 27 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 128 with 13 and 28 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C8-O5', 'H'] - -Fragments to allocate: 1 0 out of 12 27 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H16-C8-O5', 'H16-C9-O5', 'H3-C2', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 28 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C8-O5', 'H3-C2', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 27 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 129 with 13 and 28 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 1 1 out of 12 27 -sublist 2 ['H16-C8-O5', 'H'] -list1 13 ['H16-C9-O5', 'H16-C8-O5', 'H3-C2', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 28 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 27 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 130 with 13 and 28 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C8-O5', 'H'] - -Fragments to allocate: 1 2 out of 12 27 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H16-C8-O5', 'H16-C9-O5', 'H3-C2', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 28 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C8-O5', 'H3-C2', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 27 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 131 with 13 and 28 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (-1, -1, 0), (0, -1, -1), (0, -1, 1), (-1, 0, -1), (-1, 0, 1), (-1, -1, -1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 1 3 out of 12 27 -sublist 2 ['H16-C8-O5', 'H'] -list1 13 ['H16-C9-O5', 'H16-C8-O5', 'H3-C2', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 28 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 27 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 132 with 13 and 28 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, -1), (1, 0, 0), (0, -1, -1), (1, -1, 0), (1, 0, -1), (1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C8-O5', 'H'] - -Fragments to allocate: 1 4 out of 12 27 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H16-C8-O5', 'H16-C9-O5', 'H3-C2', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 28 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C8-O5', 'H3-C2', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 27 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 133 with 13 and 28 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 1 5 out of 12 27 -sublist 2 ['H16-C8-O5', 'H'] -list1 13 ['H16-C9-O5', 'H16-C8-O5', 'H3-C2', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 28 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 27 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 134 with 13 and 28 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C8-O5', 'H'] - -Fragments to allocate: 1 6 out of 12 27 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H16-C8-O5', 'H16-C9-O5', 'H3-C2', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 28 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C8-O5', 'H3-C2', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 27 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 135 with 13 and 28 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 1 7 out of 12 27 -sublist 2 ['H16-C8-O5', 'H'] -list1 13 ['H16-C9-O5', 'H16-C8-O5', 'H3-C2', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 28 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 27 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 136 with 13 and 28 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C8-O5', 'H'] - -Fragments to allocate: 1 8 out of 12 27 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H16-C8-O5', 'H16-C9-O5', 'H3-C2', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 28 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C8-O5', 'H3-C2', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 27 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 137 with 13 and 28 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 1 9 out of 12 27 -sublist 2 ['H16-C8-O5', 'H'] -list1 13 ['H16-C9-O5', 'H16-C8-O5', 'H3-C2', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 28 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 27 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 138 with 13 and 28 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (-1, -1, 0), (0, -1, -1), (0, -1, 1), (-1, 0, -1), (-1, 0, 1), (-1, -1, -1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C8-O5', 'H'] - -Fragments to allocate: 1 10 out of 12 27 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H16-C8-O5', 'H16-C9-O5', 'H3-C2', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 28 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C8-O5', 'H3-C2', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 27 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 139 with 13 and 28 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 1 11 out of 12 27 -sublist 2 ['H16-C8-O5', 'H'] -list1 13 ['H16-C9-O5', 'H16-C8-O5', 'H3-C2', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 28 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 27 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 140 with 13 and 28 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, -1), (1, 0, 0), (0, -1, -1), (1, -1, 0), (1, 0, -1), (1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C8-O5', 'H'] - -Fragments to allocate: 1 12 out of 12 27 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H16-C8-O5', 'H16-C9-O5', 'H3-C2', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 28 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C8-O5', 'H3-C2', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 27 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 141 with 13 and 28 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 1 13 out of 12 27 -sublist 2 ['H16-C8-O5', 'H'] -list1 13 ['H16-C9-O5', 'H16-C8-O5', 'H3-C2', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 28 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 27 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 142 with 13 and 28 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C8-O5', 'H'] - -Fragments to allocate: 1 14 out of 12 27 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H16-C8-O5', 'H16-C9-O5', 'H3-C2', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 28 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C8-O5', 'H3-C2', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 27 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 143 with 13 and 28 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -Adjacency Matrix: Distance 0.241 smaller than clash for atoms 10 30 H H [12.74620545 8.54085884 4.4509368 ] [12.77240545 8.54753615 4.21146097] 1.3 -MERGE_FRAGMENTS: count_species found 0 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 1 15 out of 12 27 -sublist 2 ['H16-C8-O5', 'H'] -list1 13 ['H16-C9-O5', 'H16-C8-O5', 'H3-C2', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 28 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 27 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 144 with 13 and 28 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, -1), (1, 0, 0), (0, -1, -1), (1, -1, 0), (1, 0, -1), (1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C8-O5', 'H'] - -Fragments to allocate: 1 16 out of 12 27 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H16-C8-O5', 'H16-C9-O5', 'H3-C2', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 28 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C8-O5', 'H3-C2', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 27 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 145 with 13 and 28 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, -1), (1, 0, 0), (0, -1, -1), (1, -1, 0), (1, 0, -1), (1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 1 17 out of 12 27 -sublist 2 ['H16-C8-O5', 'H'] -list1 13 ['H16-C9-O5', 'H16-C8-O5', 'H3-C2', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 28 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 27 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 146 with 13 and 28 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C8-O5', 'H'] - -Fragments to allocate: 1 18 out of 12 27 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H16-C8-O5', 'H16-C9-O5', 'H3-C2', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 28 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C8-O5', 'H3-C2', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 27 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 147 with 13 and 28 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, 1), (1, 0, 0), (0, -1, 1), (1, -1, 0), (1, 0, 1), (1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 1 19 out of 12 27 -sublist 2 ['H16-C8-O5', 'H'] -list1 13 ['H16-C9-O5', 'H16-C8-O5', 'H3-C2', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 28 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 27 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 148 with 13 and 28 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C8-O5', 'H'] - -Fragments to allocate: 1 20 out of 12 27 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H16-C8-O5', 'H16-C9-O5', 'H3-C2', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 28 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C8-O5', 'H3-C2', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 27 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 149 with 13 and 28 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, -1), (1, 0, 0), (0, -1, -1), (1, -1, 0), (1, 0, -1), (1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 1 21 out of 12 27 -sublist 2 ['H16-C8-O5', 'H'] -list1 13 ['H16-C9-O5', 'H16-C8-O5', 'H3-C2', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 28 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 27 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 150 with 13 and 28 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C8-O5', 'H'] - -Fragments to allocate: 1 22 out of 12 27 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H16-C8-O5', 'H16-C9-O5', 'H3-C2', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 28 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C8-O5', 'H3-C2', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 27 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 151 with 13 and 28 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 1 23 out of 12 27 -sublist 2 ['H16-C8-O5', 'H'] -list1 13 ['H16-C9-O5', 'H16-C8-O5', 'H3-C2', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 28 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 27 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 152 with 13 and 28 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C8-O5', 'H'] - -Fragments to allocate: 1 24 out of 12 27 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H16-C8-O5', 'H16-C9-O5', 'H3-C2', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 28 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C8-O5', 'H3-C2', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 27 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 153 with 13 and 28 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 1 25 out of 12 27 -sublist 2 ['H16-C8-O5', 'H'] -list1 13 ['H16-C9-O5', 'H16-C8-O5', 'H3-C2', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 28 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 27 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 154 with 13 and 28 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C8-O5', 'H'] - -Fragments to allocate: 1 26 out of 12 27 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H16-C8-O5', 'H16-C9-O5', 'H3-C2', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 28 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C8-O5', 'H3-C2', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 27 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 155 with 13 and 28 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 1 27 out of 12 27 -sublist 2 ['H16-C8-O5', 'H'] -list1 13 ['H16-C9-O5', 'H16-C8-O5', 'H3-C2', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 28 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 27 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 156 with 13 and 28 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C8-O5', 'H'] - -Fragments to allocate: 2 0 out of 12 27 -sublist 2 ['H3-C2', 'H'] -list1 13 ['H16-C8-O5', 'H16-C9-O5', 'H3-C2', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 28 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C8-O5', 'H16-C9-O5', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 27 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 157 with 13 and 28 Remaining in each list -SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H3-C2', 'H'] - -Fragments to allocate: 2 1 out of 12 27 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H3-C2', 'H16-C8-O5', 'H16-C9-O5', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 28 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H16-C8-O5', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 27 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 158 with 13 and 28 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 2 2 out of 12 27 -sublist 2 ['H16-C8-O5', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H16-C8-O5', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 28 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 27 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 159 with 13 and 28 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C8-O5', 'H'] - -Fragments to allocate: 2 3 out of 12 27 -sublist 2 ['H3-C2', 'H'] -list1 13 ['H16-C8-O5', 'H16-C9-O5', 'H3-C2', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 28 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C8-O5', 'H16-C9-O5', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 27 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 160 with 13 and 28 Remaining in each list -SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H3-C2', 'H'] - -Fragments to allocate: 2 4 out of 12 27 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H3-C2', 'H16-C8-O5', 'H16-C9-O5', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 28 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H16-C8-O5', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 27 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 161 with 13 and 28 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 2 5 out of 12 27 -sublist 2 ['H16-C8-O5', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H16-C8-O5', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 28 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 27 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 162 with 13 and 28 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C8-O5', 'H'] - -Fragments to allocate: 2 6 out of 12 27 -sublist 2 ['H3-C2', 'H'] -list1 13 ['H16-C8-O5', 'H16-C9-O5', 'H3-C2', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 28 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C8-O5', 'H16-C9-O5', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 27 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 163 with 13 and 28 Remaining in each list -SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H3-C2', 'H'] - -Fragments to allocate: 2 7 out of 12 27 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H3-C2', 'H16-C8-O5', 'H16-C9-O5', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 28 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H16-C8-O5', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 27 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 164 with 13 and 28 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, -1), (1, 0, 0), (0, -1, -1), (1, -1, 0), (1, 0, -1), (1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 2 8 out of 12 27 -sublist 2 ['H16-C8-O5', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H16-C8-O5', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 28 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 27 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 165 with 13 and 28 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C8-O5', 'H'] - -Fragments to allocate: 2 9 out of 12 27 -sublist 2 ['H3-C2', 'H'] -list1 13 ['H16-C8-O5', 'H16-C9-O5', 'H3-C2', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 28 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C8-O5', 'H16-C9-O5', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 27 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 166 with 13 and 28 Remaining in each list -SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, 1), (1, 0, 0), (0, -1, 1), (1, -1, 0), (1, 0, 1), (1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H3-C2', 'H'] - -Fragments to allocate: 2 10 out of 12 27 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H3-C2', 'H16-C8-O5', 'H16-C9-O5', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 28 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H16-C8-O5', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 27 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 167 with 13 and 28 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 2 11 out of 12 27 -sublist 2 ['H16-C8-O5', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H16-C8-O5', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 28 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 27 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 168 with 13 and 28 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, -1), (1, 0, 0), (0, -1, -1), (1, -1, 0), (1, 0, -1), (1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C8-O5', 'H'] - -Fragments to allocate: 2 12 out of 12 27 -sublist 2 ['H3-C2', 'H'] -list1 13 ['H16-C8-O5', 'H16-C9-O5', 'H3-C2', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 28 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C8-O5', 'H16-C9-O5', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 27 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 169 with 13 and 28 Remaining in each list -SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, -1), (1, 0, 0), (0, -1, -1), (1, -1, 0), (1, 0, -1), (1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H3-C2', 'H'] - -Fragments to allocate: 2 13 out of 12 27 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H3-C2', 'H16-C8-O5', 'H16-C9-O5', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 28 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H16-C8-O5', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 27 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 170 with 13 and 28 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -Adjacency Matrix: Distance 0.241 smaller than clash for atoms 10 30 H H [12.74620545 8.54085884 4.4509368 ] [12.77240545 8.54753615 4.21146097] 1.3 -MERGE_FRAGMENTS: count_species found 0 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 2 14 out of 12 27 -sublist 2 ['H16-C8-O5', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H16-C8-O5', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 28 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 27 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 171 with 13 and 28 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C8-O5', 'H'] - -Fragments to allocate: 2 15 out of 12 27 -sublist 2 ['H3-C2', 'H'] -list1 13 ['H16-C8-O5', 'H16-C9-O5', 'H3-C2', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 28 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C8-O5', 'H16-C9-O5', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 27 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 172 with 13 and 28 Remaining in each list -SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H3-C2', 'H'] - -Fragments to allocate: 2 16 out of 12 27 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H3-C2', 'H16-C8-O5', 'H16-C9-O5', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 28 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H16-C8-O5', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 27 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 173 with 13 and 28 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, -1), (1, 0, 0), (0, -1, -1), (1, -1, 0), (1, 0, -1), (1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 2 17 out of 12 27 -sublist 2 ['H16-C8-O5', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H16-C8-O5', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 28 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 27 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 174 with 13 and 28 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C8-O5', 'H'] - -Fragments to allocate: 2 18 out of 12 27 -sublist 2 ['H3-C2', 'H'] -list1 13 ['H16-C8-O5', 'H16-C9-O5', 'H3-C2', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 28 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C8-O5', 'H16-C9-O5', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 27 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 175 with 13 and 28 Remaining in each list -SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (-1, -1, 0), (0, -1, -1), (0, -1, 1), (-1, 0, -1), (-1, 0, 1), (-1, -1, -1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H3-C2', 'H'] - -Fragments to allocate: 2 19 out of 12 27 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H3-C2', 'H16-C8-O5', 'H16-C9-O5', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 28 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H16-C8-O5', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 27 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 176 with 13 and 28 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 2 20 out of 12 27 -sublist 2 ['H16-C8-O5', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H16-C8-O5', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 28 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 27 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 177 with 13 and 28 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C8-O5', 'H'] - -Fragments to allocate: 2 21 out of 12 27 -sublist 2 ['H3-C2', 'H'] -list1 13 ['H16-C8-O5', 'H16-C9-O5', 'H3-C2', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 28 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C8-O5', 'H16-C9-O5', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 27 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 178 with 13 and 28 Remaining in each list -SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H3-C2', 'H'] - -Fragments to allocate: 2 22 out of 12 27 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H3-C2', 'H16-C8-O5', 'H16-C9-O5', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 28 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H16-C8-O5', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 27 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 179 with 13 and 28 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 2 23 out of 12 27 -sublist 2 ['H16-C8-O5', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H16-C8-O5', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 28 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 27 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 180 with 13 and 28 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C8-O5', 'H'] - -Fragments to allocate: 2 24 out of 12 27 -sublist 2 ['H3-C2', 'H'] -list1 13 ['H16-C8-O5', 'H16-C9-O5', 'H3-C2', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 28 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C8-O5', 'H16-C9-O5', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 27 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 181 with 13 and 28 Remaining in each list -SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, -1), (1, 0, 0), (0, -1, -1), (1, -1, 0), (1, 0, -1), (1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H3-C2', 'H'] - -Fragments to allocate: 2 25 out of 12 27 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H3-C2', 'H16-C8-O5', 'H16-C9-O5', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 28 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H16-C8-O5', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 27 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 182 with 13 and 28 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (-1, -1, 0), (0, -1, -1), (0, -1, 1), (-1, 0, -1), (-1, 0, 1), (-1, -1, -1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 2 26 out of 12 27 -sublist 2 ['H16-C8-O5', 'H'] -list1 13 ['H16-C9-O5', 'H3-C2', 'H16-C8-O5', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 28 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H3-C2', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 27 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 183 with 13 and 28 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C8-O5', 'H'] - -Fragments to allocate: 2 27 out of 12 27 -sublist 2 ['H3-C2', 'H'] -list1 13 ['H16-C8-O5', 'H16-C9-O5', 'H3-C2', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 28 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C8-O5', 'H16-C9-O5', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 27 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 184 with 13 and 28 Remaining in each list -SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H3-C2', 'H'] - -Fragments to allocate: 3 0 out of 12 27 -sublist 2 ['H-O', 'H'] -list1 13 ['H3-C2', 'H16-C8-O5', 'H16-C9-O5', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 28 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H16-C8-O5', 'H16-C9-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 27 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 185 with 13 and 28 Remaining in each list -SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H-O', 'H'] - -Fragments to allocate: 3 1 out of 12 27 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H-O', 'H3-C2', 'H16-C8-O5', 'H16-C9-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 28 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H3-C2', 'H16-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 27 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 186 with 13 and 28 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 3 2 out of 12 27 -sublist 2 ['H16-C8-O5', 'H'] -list1 13 ['H16-C9-O5', 'H-O', 'H3-C2', 'H16-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 28 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H3-C2', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 27 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 187 with 13 and 28 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (-1, -1, 0), (0, -1, -1), (0, -1, 1), (-1, 0, -1), (-1, 0, 1), (-1, -1, -1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C8-O5', 'H'] - -Fragments to allocate: 3 3 out of 12 27 -sublist 2 ['H3-C2', 'H'] -list1 13 ['H16-C8-O5', 'H16-C9-O5', 'H-O', 'H3-C2', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 28 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C8-O5', 'H16-C9-O5', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 27 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 188 with 13 and 28 Remaining in each list -SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, -1), (1, 0, 0), (0, -1, -1), (1, -1, 0), (1, 0, -1), (1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H3-C2', 'H'] - -Fragments to allocate: 3 4 out of 12 27 -sublist 2 ['H-O', 'H'] -list1 13 ['H3-C2', 'H16-C8-O5', 'H16-C9-O5', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 28 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H16-C8-O5', 'H16-C9-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 27 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 189 with 13 and 28 Remaining in each list -SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H-O', 'H'] - -Fragments to allocate: 3 5 out of 12 27 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H-O', 'H3-C2', 'H16-C8-O5', 'H16-C9-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 28 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H3-C2', 'H16-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 27 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 190 with 13 and 28 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 3 6 out of 12 27 -sublist 2 ['H16-C8-O5', 'H'] -list1 13 ['H16-C9-O5', 'H-O', 'H3-C2', 'H16-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 28 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H3-C2', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 27 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 191 with 13 and 28 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C8-O5', 'H'] - -Fragments to allocate: 3 7 out of 12 27 -sublist 2 ['H3-C2', 'H'] -list1 13 ['H16-C8-O5', 'H16-C9-O5', 'H-O', 'H3-C2', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 28 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C8-O5', 'H16-C9-O5', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 27 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 192 with 13 and 28 Remaining in each list -SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H3-C2', 'H'] - -Fragments to allocate: 3 8 out of 12 27 -sublist 2 ['H-O', 'H'] -list1 13 ['H3-C2', 'H16-C8-O5', 'H16-C9-O5', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 28 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H16-C8-O5', 'H16-C9-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 27 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 193 with 13 and 28 Remaining in each list -SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H-O', 'H'] - -Fragments to allocate: 3 9 out of 12 27 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H-O', 'H3-C2', 'H16-C8-O5', 'H16-C9-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 28 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H3-C2', 'H16-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 27 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 194 with 13 and 28 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (-1, -1, 0), (0, -1, -1), (0, -1, 1), (-1, 0, -1), (-1, 0, 1), (-1, -1, -1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 3 10 out of 12 27 -sublist 2 ['H16-C8-O5', 'H'] -list1 13 ['H16-C9-O5', 'H-O', 'H3-C2', 'H16-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 28 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H3-C2', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 27 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 195 with 13 and 28 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C8-O5', 'H'] - -Fragments to allocate: 3 11 out of 12 27 -sublist 2 ['H3-C2', 'H'] -list1 13 ['H16-C8-O5', 'H16-C9-O5', 'H-O', 'H3-C2', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 28 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C8-O5', 'H16-C9-O5', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 27 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 196 with 13 and 28 Remaining in each list -SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, -1), (1, 0, 0), (0, -1, -1), (1, -1, 0), (1, 0, -1), (1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H3-C2', 'H'] - -Fragments to allocate: 3 12 out of 12 27 -sublist 2 ['H-O', 'H'] -list1 13 ['H3-C2', 'H16-C8-O5', 'H16-C9-O5', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 28 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H16-C8-O5', 'H16-C9-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 27 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 197 with 13 and 28 Remaining in each list -SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H-O', 'H'] - -Fragments to allocate: 3 13 out of 12 27 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H-O', 'H3-C2', 'H16-C8-O5', 'H16-C9-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 28 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H3-C2', 'H16-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 27 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 198 with 13 and 28 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 3 14 out of 12 27 -sublist 2 ['H16-C8-O5', 'H'] -list1 13 ['H16-C9-O5', 'H-O', 'H3-C2', 'H16-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 28 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H3-C2', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 27 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 199 with 13 and 28 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C8-O5', 'H'] - -Fragments to allocate: 3 15 out of 12 27 -sublist 2 ['H3-C2', 'H'] -list1 13 ['H16-C8-O5', 'H16-C9-O5', 'H-O', 'H3-C2', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 28 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C8-O5', 'H16-C9-O5', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 27 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 200 with 13 and 28 Remaining in each list -SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, -1), (1, 0, 0), (0, -1, -1), (1, -1, 0), (1, 0, -1), (1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H3-C2', 'H'] - -Fragments to allocate: 3 16 out of 12 27 -sublist 2 ['H-O', 'H'] -list1 13 ['H3-C2', 'H16-C8-O5', 'H16-C9-O5', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 28 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H16-C8-O5', 'H16-C9-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 27 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 201 with 13 and 28 Remaining in each list -SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, -1), (1, 0, 0), (0, -1, -1), (1, -1, 0), (1, 0, -1), (1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H-O', 'H'] - -Fragments to allocate: 3 17 out of 12 27 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H-O', 'H3-C2', 'H16-C8-O5', 'H16-C9-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 28 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H3-C2', 'H16-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 27 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 202 with 13 and 28 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 3 18 out of 12 27 -sublist 2 ['H16-C8-O5', 'H'] -list1 13 ['H16-C9-O5', 'H-O', 'H3-C2', 'H16-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 28 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H3-C2', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 27 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 203 with 13 and 28 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, 1), (1, 0, 0), (0, -1, 1), (1, -1, 0), (1, 0, 1), (1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C8-O5', 'H'] - -Fragments to allocate: 3 19 out of 12 27 -sublist 2 ['H3-C2', 'H'] -list1 13 ['H16-C8-O5', 'H16-C9-O5', 'H-O', 'H3-C2', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 28 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C8-O5', 'H16-C9-O5', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 27 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 204 with 13 and 28 Remaining in each list -SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H3-C2', 'H'] - -Fragments to allocate: 3 20 out of 12 27 -sublist 2 ['H-O', 'H'] -list1 13 ['H3-C2', 'H16-C8-O5', 'H16-C9-O5', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 28 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H16-C8-O5', 'H16-C9-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 27 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 205 with 13 and 28 Remaining in each list -SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, -1), (1, 0, 0), (0, -1, -1), (1, -1, 0), (1, 0, -1), (1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H-O', 'H'] - -Fragments to allocate: 3 21 out of 12 27 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H-O', 'H3-C2', 'H16-C8-O5', 'H16-C9-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 28 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H3-C2', 'H16-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 27 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 206 with 13 and 28 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 3 22 out of 12 27 -sublist 2 ['H16-C8-O5', 'H'] -list1 13 ['H16-C9-O5', 'H-O', 'H3-C2', 'H16-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 28 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H3-C2', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 27 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 207 with 13 and 28 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C8-O5', 'H'] - -Fragments to allocate: 3 23 out of 12 27 -sublist 2 ['H3-C2', 'H'] -list1 13 ['H16-C8-O5', 'H16-C9-O5', 'H-O', 'H3-C2', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 28 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C8-O5', 'H16-C9-O5', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 27 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 208 with 13 and 28 Remaining in each list -SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H3-C2', 'H'] - -Fragments to allocate: 3 24 out of 12 27 -sublist 2 ['H-O', 'H'] -list1 13 ['H3-C2', 'H16-C8-O5', 'H16-C9-O5', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 28 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H16-C8-O5', 'H16-C9-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 27 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 209 with 13 and 28 Remaining in each list -SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H-O', 'H'] - -Fragments to allocate: 3 25 out of 12 27 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H-O', 'H3-C2', 'H16-C8-O5', 'H16-C9-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 28 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H3-C2', 'H16-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 27 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 210 with 13 and 28 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 3 26 out of 12 27 -sublist 2 ['H16-C8-O5', 'H'] -list1 13 ['H16-C9-O5', 'H-O', 'H3-C2', 'H16-C8-O5', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 28 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H3-C2', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 27 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 211 with 13 and 28 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C8-O5', 'H'] - -Fragments to allocate: 3 27 out of 12 27 -sublist 2 ['H3-C2', 'H'] -list1 13 ['H16-C8-O5', 'H16-C9-O5', 'H-O', 'H3-C2', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 28 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C8-O5', 'H16-C9-O5', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 27 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 212 with 13 and 28 Remaining in each list -SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H3-C2', 'H'] - -Fragments to allocate: 4 0 out of 12 27 -sublist 2 ['H17-C11-O9', 'H'] -list1 13 ['H3-C2', 'H16-C8-O5', 'H16-C9-O5', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 28 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H16-C8-O5', 'H16-C9-O5', 'H-O', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 27 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 213 with 13 and 28 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'O', 'C', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'H', 'C', 'H', 'O', 'H', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H17-C11-O9', 'H'] - -Fragments to allocate: 4 1 out of 12 27 -sublist 2 ['H-O', 'H'] -list1 13 ['H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H16-C9-O5', 'H-O', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 28 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H16-C9-O5', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 27 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 214 with 13 and 28 Remaining in each list -SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H-O', 'H'] - -Fragments to allocate: 4 2 out of 12 27 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H16-C9-O5', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 28 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 27 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 215 with 13 and 28 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 4 3 out of 12 27 -sublist 2 ['H16-C8-O5', 'H'] -list1 13 ['H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 28 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 27 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 216 with 13 and 28 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C8-O5', 'H'] - -Fragments to allocate: 4 4 out of 12 27 -sublist 2 ['H3-C2', 'H'] -list1 13 ['H16-C8-O5', 'H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 28 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C8-O5', 'H16-C9-O5', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 27 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 217 with 13 and 28 Remaining in each list -SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H3-C2', 'H'] - -Fragments to allocate: 4 5 out of 12 27 -sublist 2 ['H17-C11-O9', 'H'] -list1 13 ['H3-C2', 'H16-C8-O5', 'H16-C9-O5', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 28 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H16-C8-O5', 'H16-C9-O5', 'H-O', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 27 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 218 with 13 and 28 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'O', 'C', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'H', 'C', 'H', 'O', 'H', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H17-C11-O9', 'H'] - -Fragments to allocate: 4 6 out of 12 27 -sublist 2 ['H-O', 'H'] -list1 13 ['H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H16-C9-O5', 'H-O', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 28 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H16-C9-O5', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 27 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 219 with 13 and 28 Remaining in each list -SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H-O', 'H'] - -Fragments to allocate: 4 7 out of 12 27 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H16-C9-O5', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 28 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 27 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 220 with 13 and 28 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, -1), (1, 0, 0), (0, -1, -1), (1, -1, 0), (1, 0, -1), (1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 4 8 out of 12 27 -sublist 2 ['H16-C8-O5', 'H'] -list1 13 ['H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 28 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 27 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 221 with 13 and 28 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C8-O5', 'H'] - -Fragments to allocate: 4 9 out of 12 27 -sublist 2 ['H3-C2', 'H'] -list1 13 ['H16-C8-O5', 'H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 28 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C8-O5', 'H16-C9-O5', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 27 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 222 with 13 and 28 Remaining in each list -SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, 1), (1, 0, 0), (0, -1, 1), (1, -1, 0), (1, 0, 1), (1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H3-C2', 'H'] - -Fragments to allocate: 4 10 out of 12 27 -sublist 2 ['H17-C11-O9', 'H'] -list1 13 ['H3-C2', 'H16-C8-O5', 'H16-C9-O5', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 28 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H16-C8-O5', 'H16-C9-O5', 'H-O', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 27 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 223 with 13 and 28 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'O', 'C', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'H', 'C', 'H', 'O', 'H', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H17-C11-O9', 'H'] - -Fragments to allocate: 4 11 out of 12 27 -sublist 2 ['H-O', 'H'] -list1 13 ['H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H16-C9-O5', 'H-O', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 28 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H16-C9-O5', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 27 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 224 with 13 and 28 Remaining in each list -SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, -1), (1, 0, 0), (0, -1, -1), (1, -1, 0), (1, 0, -1), (1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H-O', 'H'] - -Fragments to allocate: 4 12 out of 12 27 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H16-C9-O5', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 28 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 27 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 225 with 13 and 28 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, -1), (1, 0, 0), (0, -1, -1), (1, -1, 0), (1, 0, -1), (1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 4 13 out of 12 27 -sublist 2 ['H16-C8-O5', 'H'] -list1 13 ['H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 28 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 27 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 226 with 13 and 28 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C8-O5', 'H'] - -Fragments to allocate: 4 14 out of 12 27 -sublist 2 ['H3-C2', 'H'] -list1 13 ['H16-C8-O5', 'H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 28 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C8-O5', 'H16-C9-O5', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 27 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 227 with 13 and 28 Remaining in each list -SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H3-C2', 'H'] - -Fragments to allocate: 4 15 out of 12 27 -sublist 2 ['H17-C11-O9', 'H'] -list1 13 ['H3-C2', 'H16-C8-O5', 'H16-C9-O5', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 28 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H16-C8-O5', 'H16-C9-O5', 'H-O', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 27 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 228 with 13 and 28 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'O', 'C', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'H', 'C', 'H', 'O', 'H', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H17-C11-O9', 'H'] - -Fragments to allocate: 4 16 out of 12 27 -sublist 2 ['H-O', 'H'] -list1 13 ['H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H16-C9-O5', 'H-O', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 28 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H16-C9-O5', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 27 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 229 with 13 and 28 Remaining in each list -SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, -1), (1, 0, 0), (0, -1, -1), (1, -1, 0), (1, 0, -1), (1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H-O', 'H'] - -Fragments to allocate: 4 17 out of 12 27 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H16-C9-O5', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 28 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 27 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 230 with 13 and 28 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 4 18 out of 12 27 -sublist 2 ['H16-C8-O5', 'H'] -list1 13 ['H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 28 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 27 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 231 with 13 and 28 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (-1, -1, 0), (0, -1, -1), (0, -1, 1), (-1, 0, -1), (-1, 0, 1), (-1, -1, -1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C8-O5', 'H'] - -Fragments to allocate: 4 19 out of 12 27 -sublist 2 ['H3-C2', 'H'] -list1 13 ['H16-C8-O5', 'H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 28 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C8-O5', 'H16-C9-O5', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 27 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 232 with 13 and 28 Remaining in each list -SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H3-C2', 'H'] - -Fragments to allocate: 4 20 out of 12 27 -sublist 2 ['H17-C11-O9', 'H'] -list1 13 ['H3-C2', 'H16-C8-O5', 'H16-C9-O5', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 28 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H16-C8-O5', 'H16-C9-O5', 'H-O', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 27 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 233 with 13 and 28 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'O', 'C', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'H', 'C', 'H', 'O', 'H', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H17-C11-O9', 'H'] - -Fragments to allocate: 4 21 out of 12 27 -sublist 2 ['H-O', 'H'] -list1 13 ['H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H16-C9-O5', 'H-O', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 28 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H16-C9-O5', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 27 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 234 with 13 and 28 Remaining in each list -SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H-O', 'H'] - -Fragments to allocate: 4 22 out of 12 27 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H16-C9-O5', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 28 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 27 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 235 with 13 and 28 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 4 23 out of 12 27 -sublist 2 ['H16-C8-O5', 'H'] -list1 13 ['H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 28 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 27 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 236 with 13 and 28 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C8-O5', 'H'] - -Fragments to allocate: 4 24 out of 12 27 -sublist 2 ['H3-C2', 'H'] -list1 13 ['H16-C8-O5', 'H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 28 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C8-O5', 'H16-C9-O5', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 27 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 237 with 13 and 28 Remaining in each list -SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, -1), (1, 0, 0), (0, -1, -1), (1, -1, 0), (1, 0, -1), (1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H3-C2', 'H'] - -Fragments to allocate: 4 25 out of 12 27 -sublist 2 ['H17-C11-O9', 'H'] -list1 13 ['H3-C2', 'H16-C8-O5', 'H16-C9-O5', 'H-O', 'H17-C11-O9', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 28 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H16-C8-O5', 'H16-C9-O5', 'H-O', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 27 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 238 with 13 and 28 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'O', 'C', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'H', 'C', 'H', 'O', 'H', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (-1, -1, 0), (0, -1, -1), (0, -1, 1), (-1, 0, -1), (-1, 0, 1), (-1, -1, -1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H17-C11-O9', 'H'] - -Fragments to allocate: 4 26 out of 12 27 -sublist 2 ['H-O', 'H'] -list1 13 ['H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H16-C9-O5', 'H-O', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 28 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H16-C9-O5', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 27 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 239 with 13 and 28 Remaining in each list -SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H-O', 'H'] - -Fragments to allocate: 4 27 out of 12 27 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H16-C9-O5', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 28 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 27 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 240 with 13 and 28 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 5 0 out of 12 27 -sublist 2 ['H9-C7-O3', 'H'] -list1 13 ['H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H9-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 28 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 27 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 241 with 13 and 28 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 1 -SPILT_SPECIES: Laplacian lap=array([[-2, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1, 0], - [ 0, -2, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0], - [ 0, 0, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, - 0, 0, 0, 0], - [ 1, 0, 0, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1], - [ 0, 0, 0, 0, -2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0], - [ 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0], - [ 0, 1, 0, 0, 1, 0, -4, 1, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 1, 0, -1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0], - [ 0, 1, 0, 0, 0, 0, 0, 0, 0, -4, 1, 1, 1, 0, 0, 0, - 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, - 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, 0, 0, 0, 0, - 0, 0, 0, 0], - [ 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, -4, 1, 1, 0, - 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, - 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, 0, - 0, 0, 0, 0], - [ 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -4, - 1, 1, 1, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, - -1, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, - 0, -1, 0, 0], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, - 0, 0, -2, 0], - [ 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, -1]]) -SPILT_SPECIES: graph=<20x20 sparse matrix of type '' - with 58 stored elements in Compressed Sparse Row format> -COMBINE. received molecule: ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 20 - Formula = H10-C7-O3 - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES ---------------------------------------------------- - from merge fragments -COMBINE: Fragment H10-C7-O3 added to avglist -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 1 ['H10-C7-O3'] -SEQUENTIAL: badlist 0 [] - -Fragments to allocate: 0 1 out of 12 26 -sublist 2 ['H10-C7-O3', 'H'] -list1 13 ['H10-C7-O3', 'H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 27 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 26 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 242 with 13 and 27 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (-1, -1, 0), (0, -1, -1), (0, -1, 1), (-1, 0, -1), (-1, 0, 1), (-1, -1, -1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H10-C7-O3', 'H'] - -Fragments to allocate: 0 2 out of 12 26 -sublist 2 ['H10-C7-O3', 'H'] -list1 13 ['H10-C7-O3', 'H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 27 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 26 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 243 with 13 and 27 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, -1), (1, 0, 0), (0, -1, -1), (1, -1, 0), (1, 0, -1), (1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H10-C7-O3', 'H'] - -Fragments to allocate: 0 3 out of 12 26 -sublist 2 ['H10-C7-O3', 'H'] -list1 13 ['H10-C7-O3', 'H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 27 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 26 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 244 with 13 and 27 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H10-C7-O3', 'H'] - -Fragments to allocate: 0 4 out of 12 26 -sublist 2 ['H10-C7-O3', 'H'] -list1 13 ['H10-C7-O3', 'H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 27 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 26 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 245 with 13 and 27 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H10-C7-O3', 'H'] - -Fragments to allocate: 0 5 out of 12 26 -sublist 2 ['H10-C7-O3', 'H'] -list1 13 ['H10-C7-O3', 'H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 27 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 26 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 246 with 13 and 27 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H10-C7-O3', 'H'] - -Fragments to allocate: 0 6 out of 12 26 -sublist 2 ['H10-C7-O3', 'H'] -list1 13 ['H10-C7-O3', 'H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 27 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 26 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 247 with 13 and 27 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H10-C7-O3', 'H'] - -Fragments to allocate: 0 7 out of 12 26 -sublist 2 ['H10-C7-O3', 'H'] -list1 13 ['H10-C7-O3', 'H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 27 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 26 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 248 with 13 and 27 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H10-C7-O3', 'H'] - -Fragments to allocate: 0 8 out of 12 26 -sublist 2 ['H10-C7-O3', 'H'] -list1 13 ['H10-C7-O3', 'H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 27 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 26 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 249 with 13 and 27 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (-1, -1, 0), (0, -1, -1), (0, -1, 1), (-1, 0, -1), (-1, 0, 1), (-1, -1, -1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H10-C7-O3', 'H'] - -Fragments to allocate: 0 9 out of 12 26 -sublist 2 ['H10-C7-O3', 'H'] -list1 13 ['H10-C7-O3', 'H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 27 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 26 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 250 with 13 and 27 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H10-C7-O3', 'H'] - -Fragments to allocate: 0 10 out of 12 26 -sublist 2 ['H10-C7-O3', 'H'] -list1 13 ['H10-C7-O3', 'H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 27 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 26 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 251 with 13 and 27 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, -1), (1, 0, 0), (0, -1, -1), (1, -1, 0), (1, 0, -1), (1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H10-C7-O3', 'H'] - -Fragments to allocate: 0 11 out of 12 26 -sublist 2 ['H10-C7-O3', 'H'] -list1 13 ['H10-C7-O3', 'H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 27 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 26 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 252 with 13 and 27 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 1 -SPILT_SPECIES: Laplacian lap=array([[-2, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1, 0, 0], - [ 0, -2, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0], - [ 0, 0, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, - 0, 0, 0, 0, 0], - [ 1, 0, 0, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, 0], - [ 0, 0, 0, 0, -2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0], - [ 0, 1, 0, 0, 1, 0, -4, 1, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 1, 0, -1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0], - [ 0, 1, 0, 0, 0, 0, 0, 0, 0, -4, 1, 1, 1, 0, 0, 0, - 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, 0, 0, 0, 0, - 0, 0, 0, 0, 0], - [ 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, -5, 1, 1, 0, - 0, 0, 0, 0, 1], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, - 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, 0, - 0, 0, 0, 0, 0], - [ 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -4, - 1, 1, 1, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, - -1, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, - 0, -1, 0, 0, 0], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, - 0, 0, -2, 0, 0], - [ 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, -1, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, -1]]) -SPILT_SPECIES: graph=<21x21 sparse matrix of type '' - with 61 stored elements in Compressed Sparse Row format> -COMBINE. received molecule: ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 21 - Formula = H11-C7-O3 - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES ---------------------------------------------------- - from merge fragments -COMBINE: Fragment H11-C7-O3 added to avglist -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 1 ['H11-C7-O3'] -SEQUENTIAL: badlist 0 [] - -Fragments to allocate: 0 1 out of 12 25 -sublist 2 ['H11-C7-O3', 'H'] -list1 13 ['H11-C7-O3', 'H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 26 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 25 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 253 with 13 and 26 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H11-C7-O3', 'H'] - -Fragments to allocate: 0 2 out of 12 25 -sublist 2 ['H11-C7-O3', 'H'] -list1 13 ['H11-C7-O3', 'H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 26 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 25 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 254 with 13 and 26 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (-1, -1, 0), (0, -1, -1), (0, -1, 1), (-1, 0, -1), (-1, 0, 1), (-1, -1, -1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H11-C7-O3', 'H'] - -Fragments to allocate: 0 3 out of 12 25 -sublist 2 ['H11-C7-O3', 'H'] -list1 13 ['H11-C7-O3', 'H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 26 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 25 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 255 with 13 and 26 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H11-C7-O3', 'H'] - -Fragments to allocate: 0 4 out of 12 25 -sublist 2 ['H11-C7-O3', 'H'] -list1 13 ['H11-C7-O3', 'H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 26 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 25 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 256 with 13 and 26 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H11-C7-O3', 'H'] - -Fragments to allocate: 0 5 out of 12 25 -sublist 2 ['H11-C7-O3', 'H'] -list1 13 ['H11-C7-O3', 'H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 26 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 25 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 257 with 13 and 26 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H11-C7-O3', 'H'] - -Fragments to allocate: 0 6 out of 12 25 -sublist 2 ['H11-C7-O3', 'H'] -list1 13 ['H11-C7-O3', 'H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 26 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 25 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 258 with 13 and 26 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H11-C7-O3', 'H'] - -Fragments to allocate: 0 7 out of 12 25 -sublist 2 ['H11-C7-O3', 'H'] -list1 13 ['H11-C7-O3', 'H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 26 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 25 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 259 with 13 and 26 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H11-C7-O3', 'H'] - -Fragments to allocate: 0 8 out of 12 25 -sublist 2 ['H11-C7-O3', 'H'] -list1 13 ['H11-C7-O3', 'H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 26 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 25 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 260 with 13 and 26 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, -1), (1, 0, 0), (0, -1, -1), (1, -1, 0), (1, 0, -1), (1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H11-C7-O3', 'H'] - -Fragments to allocate: 0 9 out of 12 25 -sublist 2 ['H11-C7-O3', 'H'] -list1 13 ['H11-C7-O3', 'H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 26 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 25 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 261 with 13 and 26 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (-1, -1, 0), (0, -1, -1), (0, -1, 1), (-1, 0, -1), (-1, 0, 1), (-1, -1, -1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H11-C7-O3', 'H'] - -Fragments to allocate: 0 10 out of 12 25 -sublist 2 ['H11-C7-O3', 'H'] -list1 13 ['H11-C7-O3', 'H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 26 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 25 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 262 with 13 and 26 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H11-C7-O3', 'H'] - -Fragments to allocate: 0 11 out of 12 25 -sublist 2 ['H11-C7-O3', 'H'] -list1 13 ['H11-C7-O3', 'H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 26 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 25 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 263 with 13 and 26 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 1 -SPILT_SPECIES: Laplacian lap=array([[-2, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1, 0, 0, 0], - [ 0, -2, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0], - [ 0, 0, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, - 0, 0, 0, 0, 0, 0], - [ 1, 0, 0, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, 0, 0], - [ 0, 0, 0, 0, -2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0], - [ 0, 1, 0, 0, 1, 0, -4, 1, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 1, 0, -1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0], - [ 0, 1, 0, 0, 0, 0, 0, 0, 0, -4, 1, 1, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0], - [ 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, -5, 1, 1, 0, - 0, 0, 0, 0, 1, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, - 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, 0, - 0, 0, 0, 0, 0, 0], - [ 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -4, - 1, 1, 1, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, - -1, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, - 0, -1, 0, 0, 0, 0], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, - 0, 0, -3, 0, 0, 1], - [ 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, -1, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, -1, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1, 0, 0, -1]]) -SPILT_SPECIES: graph=<22x22 sparse matrix of type '' - with 64 stored elements in Compressed Sparse Row format> -COMBINE. received molecule: ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 22 - Formula = H12-C7-O3 - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES ---------------------------------------------------- - from merge fragments -COMBINE: Fragment H12-C7-O3 added to avglist -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 1 ['H12-C7-O3'] -SEQUENTIAL: badlist 0 [] - -Fragments to allocate: 0 1 out of 12 24 -sublist 2 ['H12-C7-O3', 'H'] -list1 13 ['H12-C7-O3', 'H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 25 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 24 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 264 with 13 and 25 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (-1, -1, 0), (0, -1, -1), (0, -1, 1), (-1, 0, -1), (-1, 0, 1), (-1, -1, -1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H12-C7-O3', 'H'] - -Fragments to allocate: 0 2 out of 12 24 -sublist 2 ['H12-C7-O3', 'H'] -list1 13 ['H12-C7-O3', 'H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 25 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 24 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 265 with 13 and 25 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, -1), (1, 0, 0), (0, -1, -1), (1, -1, 0), (1, 0, -1), (1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H12-C7-O3', 'H'] - -Fragments to allocate: 0 3 out of 12 24 -sublist 2 ['H12-C7-O3', 'H'] -list1 13 ['H12-C7-O3', 'H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 25 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 24 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 266 with 13 and 25 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H12-C7-O3', 'H'] - -Fragments to allocate: 0 4 out of 12 24 -sublist 2 ['H12-C7-O3', 'H'] -list1 13 ['H12-C7-O3', 'H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 25 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 24 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 267 with 13 and 25 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H12-C7-O3', 'H'] - -Fragments to allocate: 0 5 out of 12 24 -sublist 2 ['H12-C7-O3', 'H'] -list1 13 ['H12-C7-O3', 'H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 25 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 24 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 268 with 13 and 25 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H12-C7-O3', 'H'] - -Fragments to allocate: 0 6 out of 12 24 -sublist 2 ['H12-C7-O3', 'H'] -list1 13 ['H12-C7-O3', 'H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 25 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 24 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 269 with 13 and 25 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H12-C7-O3', 'H'] - -Fragments to allocate: 0 7 out of 12 24 -sublist 2 ['H12-C7-O3', 'H'] -list1 13 ['H12-C7-O3', 'H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 25 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 24 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 270 with 13 and 25 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H12-C7-O3', 'H'] - -Fragments to allocate: 0 8 out of 12 24 -sublist 2 ['H12-C7-O3', 'H'] -list1 13 ['H12-C7-O3', 'H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 25 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 24 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 271 with 13 and 25 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (-1, -1, 0), (0, -1, -1), (0, -1, 1), (-1, 0, -1), (-1, 0, 1), (-1, -1, -1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H12-C7-O3', 'H'] - -Fragments to allocate: 0 9 out of 12 24 -sublist 2 ['H12-C7-O3', 'H'] -list1 13 ['H12-C7-O3', 'H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 25 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 24 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 272 with 13 and 25 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H12-C7-O3', 'H'] - -Fragments to allocate: 0 10 out of 12 24 -sublist 2 ['H12-C7-O3', 'H'] -list1 13 ['H12-C7-O3', 'H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 25 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 24 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 273 with 13 and 25 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, -1), (1, 0, 0), (0, -1, -1), (1, -1, 0), (1, 0, -1), (1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H12-C7-O3', 'H'] - -Fragments to allocate: 0 11 out of 12 24 -sublist 2 ['H12-C7-O3', 'H'] -list1 13 ['H12-C7-O3', 'H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 25 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 24 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 274 with 13 and 25 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H12-C7-O3', 'H'] - -Fragments to allocate: 0 12 out of 12 24 -sublist 2 ['H12-C7-O3', 'H'] -list1 13 ['H12-C7-O3', 'H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 25 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 24 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 275 with 13 and 25 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, -1), (1, 0, 0), (0, -1, -1), (1, -1, 0), (1, 0, -1), (1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H12-C7-O3', 'H'] - -Fragments to allocate: 0 13 out of 12 24 -sublist 2 ['H12-C7-O3', 'H'] -list1 13 ['H12-C7-O3', 'H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 25 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 24 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 276 with 13 and 25 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, -1), (1, 0, 0), (0, -1, -1), (1, -1, 0), (1, 0, -1), (1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H12-C7-O3', 'H'] - -Fragments to allocate: 0 14 out of 12 24 -sublist 2 ['H12-C7-O3', 'H'] -list1 13 ['H12-C7-O3', 'H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 25 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 24 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 277 with 13 and 25 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H12-C7-O3', 'H'] - -Fragments to allocate: 0 15 out of 12 24 -sublist 2 ['H12-C7-O3', 'H'] -list1 13 ['H12-C7-O3', 'H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 25 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 24 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 278 with 13 and 25 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, 1), (1, 0, 0), (0, -1, 1), (1, -1, 0), (1, 0, 1), (1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H12-C7-O3', 'H'] - -Fragments to allocate: 0 16 out of 12 24 -sublist 2 ['H12-C7-O3', 'H'] -list1 13 ['H12-C7-O3', 'H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 25 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 24 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 279 with 13 and 25 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H12-C7-O3', 'H'] - -Fragments to allocate: 0 17 out of 12 24 -sublist 2 ['H12-C7-O3', 'H'] -list1 13 ['H12-C7-O3', 'H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 25 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 24 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 280 with 13 and 25 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, -1), (1, 0, 0), (0, -1, -1), (1, -1, 0), (1, 0, -1), (1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H12-C7-O3', 'H'] - -Fragments to allocate: 0 18 out of 12 24 -sublist 2 ['H12-C7-O3', 'H'] -list1 13 ['H12-C7-O3', 'H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 25 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 24 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 281 with 13 and 25 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H12-C7-O3', 'H'] - -Fragments to allocate: 0 19 out of 12 24 -sublist 2 ['H12-C7-O3', 'H'] -list1 13 ['H12-C7-O3', 'H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 25 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 24 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 282 with 13 and 25 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H12-C7-O3', 'H'] - -Fragments to allocate: 0 20 out of 12 24 -sublist 2 ['H12-C7-O3', 'H'] -list1 13 ['H12-C7-O3', 'H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 25 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 24 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 283 with 13 and 25 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H12-C7-O3', 'H'] - -Fragments to allocate: 0 21 out of 12 24 -sublist 2 ['H12-C7-O3', 'H'] -list1 13 ['H12-C7-O3', 'H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 25 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 24 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 284 with 13 and 25 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 1 -SPILT_SPECIES: Laplacian lap=array([[-2, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1, 0, 0, 0, 0], - [ 0, -2, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, -3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, - 0, 0, 0, 0, 0, 0, 1], - [ 1, 0, 0, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, 0, 0, 0], - [ 0, 0, 0, 0, -2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0], - [ 0, 1, 0, 0, 1, 0, -4, 1, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 1, 0, -1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0], - [ 0, 1, 0, 0, 0, 0, 0, 0, 0, -4, 1, 1, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, -6, 1, 1, 0, - 0, 0, 0, 0, 1, 0, 1], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, - 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, 0, - 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -4, - 1, 1, 1, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, - -1, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, - 0, -1, 0, 0, 0, 0, 0], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, - 0, 0, -3, 0, 0, 1, 0], - [ 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, -1, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, -1, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1, 0, 0, -1, 0], - [ 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, -2]]) -SPILT_SPECIES: graph=<23x23 sparse matrix of type '' - with 69 stored elements in Compressed Sparse Row format> -COMBINE. received molecule: ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 23 - Formula = H13-C7-O3 - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES ---------------------------------------------------- - from merge fragments -COMBINE: Fragment H13-C7-O3 added to avglist -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 1 ['H13-C7-O3'] -SEQUENTIAL: badlist 0 [] - -Fragments to allocate: 0 1 out of 12 23 -sublist 2 ['H13-C7-O3', 'H'] -list1 13 ['H13-C7-O3', 'H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 24 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 285 with 13 and 24 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H13-C7-O3', 'H'] - -Fragments to allocate: 0 2 out of 12 23 -sublist 2 ['H13-C7-O3', 'H'] -list1 13 ['H13-C7-O3', 'H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 24 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 286 with 13 and 24 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H13-C7-O3', 'H'] - -Fragments to allocate: 0 3 out of 12 23 -sublist 2 ['H13-C7-O3', 'H'] -list1 13 ['H13-C7-O3', 'H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 24 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 287 with 13 and 24 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, -1), (1, 0, 0), (0, -1, -1), (1, -1, 0), (1, 0, -1), (1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H13-C7-O3', 'H'] - -Fragments to allocate: 0 4 out of 12 23 -sublist 2 ['H13-C7-O3', 'H'] -list1 13 ['H13-C7-O3', 'H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 24 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 288 with 13 and 24 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H13-C7-O3', 'H'] - -Fragments to allocate: 0 5 out of 12 23 -sublist 2 ['H13-C7-O3', 'H'] -list1 13 ['H13-C7-O3', 'H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 24 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 289 with 13 and 24 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, 1), (1, 0, 0), (0, -1, 1), (1, -1, 0), (1, 0, 1), (1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H13-C7-O3', 'H'] - -Fragments to allocate: 0 6 out of 12 23 -sublist 2 ['H13-C7-O3', 'H'] -list1 13 ['H13-C7-O3', 'H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 24 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 290 with 13 and 24 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H13-C7-O3', 'H'] - -Fragments to allocate: 0 7 out of 12 23 -sublist 2 ['H13-C7-O3', 'H'] -list1 13 ['H13-C7-O3', 'H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 24 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 291 with 13 and 24 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, -1), (1, 0, 0), (0, -1, -1), (1, -1, 0), (1, 0, -1), (1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H13-C7-O3', 'H'] - -Fragments to allocate: 0 8 out of 12 23 -sublist 2 ['H13-C7-O3', 'H'] -list1 13 ['H13-C7-O3', 'H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 24 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 292 with 13 and 24 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, -1), (1, 0, 0), (0, -1, -1), (1, -1, 0), (1, 0, -1), (1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H13-C7-O3', 'H'] - -Fragments to allocate: 0 9 out of 12 23 -sublist 2 ['H13-C7-O3', 'H'] -list1 13 ['H13-C7-O3', 'H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 24 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 293 with 13 and 24 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H13-C7-O3', 'H'] - -Fragments to allocate: 0 10 out of 12 23 -sublist 2 ['H13-C7-O3', 'H'] -list1 13 ['H13-C7-O3', 'H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 24 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 294 with 13 and 24 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, -1), (1, 0, 0), (0, -1, -1), (1, -1, 0), (1, 0, -1), (1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H13-C7-O3', 'H'] - -Fragments to allocate: 0 11 out of 12 23 -sublist 2 ['H13-C7-O3', 'H'] -list1 13 ['H13-C7-O3', 'H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 24 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 295 with 13 and 24 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H13-C7-O3', 'H'] - -Fragments to allocate: 0 12 out of 12 23 -sublist 2 ['H13-C7-O3', 'H'] -list1 13 ['H13-C7-O3', 'H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 24 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 296 with 13 and 24 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (-1, -1, 0), (0, -1, -1), (0, -1, 1), (-1, 0, -1), (-1, 0, 1), (-1, -1, -1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H13-C7-O3', 'H'] - -Fragments to allocate: 0 13 out of 12 23 -sublist 2 ['H13-C7-O3', 'H'] -list1 13 ['H13-C7-O3', 'H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 24 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 297 with 13 and 24 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H13-C7-O3', 'H'] - -Fragments to allocate: 0 14 out of 12 23 -sublist 2 ['H13-C7-O3', 'H'] -list1 13 ['H13-C7-O3', 'H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 24 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 298 with 13 and 24 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H13-C7-O3', 'H'] - -Fragments to allocate: 0 15 out of 12 23 -sublist 2 ['H13-C7-O3', 'H'] -list1 13 ['H13-C7-O3', 'H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 24 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 299 with 13 and 24 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H13-C7-O3', 'H'] - -Fragments to allocate: 0 16 out of 12 23 -sublist 2 ['H13-C7-O3', 'H'] -list1 13 ['H13-C7-O3', 'H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 24 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 300 with 13 and 24 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H13-C7-O3', 'H'] - -Fragments to allocate: 0 17 out of 12 23 -sublist 2 ['H13-C7-O3', 'H'] -list1 13 ['H13-C7-O3', 'H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 24 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 301 with 13 and 24 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H13-C7-O3', 'H'] - -Fragments to allocate: 0 18 out of 12 23 -sublist 2 ['H13-C7-O3', 'H'] -list1 13 ['H13-C7-O3', 'H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 24 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 302 with 13 and 24 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, -1), (1, 0, 0), (0, -1, -1), (1, -1, 0), (1, 0, -1), (1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H13-C7-O3', 'H'] - -Fragments to allocate: 0 19 out of 12 23 -sublist 2 ['H13-C7-O3', 'H'] -list1 13 ['H13-C7-O3', 'H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 24 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 303 with 13 and 24 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (-1, -1, 0), (0, -1, -1), (0, -1, 1), (-1, 0, -1), (-1, 0, 1), (-1, -1, -1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H13-C7-O3', 'H'] - -Fragments to allocate: 0 20 out of 12 23 -sublist 2 ['H13-C7-O3', 'H'] -list1 13 ['H13-C7-O3', 'H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 24 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 304 with 13 and 24 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H13-C7-O3', 'H'] - -Fragments to allocate: 0 21 out of 12 23 -sublist 2 ['H13-C7-O3', 'H'] -list1 13 ['H13-C7-O3', 'H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 24 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 305 with 13 and 24 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H13-C7-O3', 'H'] - -Fragments to allocate: 0 22 out of 12 23 -sublist 2 ['H13-C7-O3', 'H'] -list1 13 ['H13-C7-O3', 'H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 24 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 306 with 13 and 24 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 1 -SPILT_SPECIES: Laplacian lap=array([[-2, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1, 0, 0, 0, 0, 0], - [ 0, -2, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, -3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, - 0, 0, 0, 0, 0, 0, 1, 0], - [ 1, 0, 0, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, 0, 0, 0, 0], - [ 0, 0, 0, 0, -2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 1, 0, 0, 1, 0, -4, 1, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 1, 0, -1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 1, 0, 0, 0, 0, 0, 0, 0, -4, 1, 1, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, -6, 1, 1, 0, - 0, 0, 0, 0, 1, 0, 1, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, 0, - 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -4, - 1, 1, 1, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, - -1, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, - 0, -1, 0, 0, 0, 0, 0, 0], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, - 0, 0, -4, 0, 0, 1, 0, 1], - [ 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, -1, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, -1, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1, 0, 0, -1, 0, 0], - [ 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, -2, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1, 0, 0, 0, 0, -1]]) -SPILT_SPECIES: graph=<24x24 sparse matrix of type '' - with 72 stored elements in Compressed Sparse Row format> -COMBINE. received molecule: ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 24 - Formula = H14-C7-O3 - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES ---------------------------------------------------- - from merge fragments -COMBINE: Fragment H14-C7-O3 added to avglist -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 1 ['H14-C7-O3'] -SEQUENTIAL: badlist 0 [] - -Fragments to allocate: 0 1 out of 12 22 -sublist 2 ['H14-C7-O3', 'H'] -list1 13 ['H14-C7-O3', 'H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 307 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H14-C7-O3', 'H'] - -Fragments to allocate: 0 2 out of 12 22 -sublist 2 ['H14-C7-O3', 'H'] -list1 13 ['H14-C7-O3', 'H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 308 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (-1, -1, 0), (0, -1, -1), (0, -1, 1), (-1, 0, -1), (-1, 0, 1), (-1, -1, -1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H14-C7-O3', 'H'] - -Fragments to allocate: 0 3 out of 12 22 -sublist 2 ['H14-C7-O3', 'H'] -list1 13 ['H14-C7-O3', 'H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 309 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, -1), (1, 0, 0), (0, -1, -1), (1, -1, 0), (1, 0, -1), (1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H14-C7-O3', 'H'] - -Fragments to allocate: 0 4 out of 12 22 -sublist 2 ['H14-C7-O3', 'H'] -list1 13 ['H14-C7-O3', 'H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 310 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H14-C7-O3', 'H'] - -Fragments to allocate: 0 5 out of 12 22 -sublist 2 ['H14-C7-O3', 'H'] -list1 13 ['H14-C7-O3', 'H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 311 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H14-C7-O3', 'H'] - -Fragments to allocate: 0 6 out of 12 22 -sublist 2 ['H14-C7-O3', 'H'] -list1 13 ['H14-C7-O3', 'H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 312 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H14-C7-O3', 'H'] - -Fragments to allocate: 0 7 out of 12 22 -sublist 2 ['H14-C7-O3', 'H'] -list1 13 ['H14-C7-O3', 'H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 313 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H14-C7-O3', 'H'] - -Fragments to allocate: 0 8 out of 12 22 -sublist 2 ['H14-C7-O3', 'H'] -list1 13 ['H14-C7-O3', 'H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 314 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H14-C7-O3', 'H'] - -Fragments to allocate: 0 9 out of 12 22 -sublist 2 ['H14-C7-O3', 'H'] -list1 13 ['H14-C7-O3', 'H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 315 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (-1, -1, 0), (0, -1, -1), (0, -1, 1), (-1, 0, -1), (-1, 0, 1), (-1, -1, -1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H14-C7-O3', 'H'] - -Fragments to allocate: 0 10 out of 12 22 -sublist 2 ['H14-C7-O3', 'H'] -list1 13 ['H14-C7-O3', 'H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 316 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H14-C7-O3', 'H'] - -Fragments to allocate: 0 11 out of 12 22 -sublist 2 ['H14-C7-O3', 'H'] -list1 13 ['H14-C7-O3', 'H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 317 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, -1), (1, 0, 0), (0, -1, -1), (1, -1, 0), (1, 0, -1), (1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H14-C7-O3', 'H'] - -Fragments to allocate: 0 12 out of 12 22 -sublist 2 ['H14-C7-O3', 'H'] -list1 13 ['H14-C7-O3', 'H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 318 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H14-C7-O3', 'H'] - -Fragments to allocate: 0 13 out of 12 22 -sublist 2 ['H14-C7-O3', 'H'] -list1 13 ['H14-C7-O3', 'H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 319 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, -1), (1, 0, 0), (0, -1, -1), (1, -1, 0), (1, 0, -1), (1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H14-C7-O3', 'H'] - -Fragments to allocate: 0 14 out of 12 22 -sublist 2 ['H14-C7-O3', 'H'] -list1 13 ['H14-C7-O3', 'H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 320 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, -1), (1, 0, 0), (0, -1, -1), (1, -1, 0), (1, 0, -1), (1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H14-C7-O3', 'H'] - -Fragments to allocate: 0 15 out of 12 22 -sublist 2 ['H14-C7-O3', 'H'] -list1 13 ['H14-C7-O3', 'H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 321 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H14-C7-O3', 'H'] - -Fragments to allocate: 0 16 out of 12 22 -sublist 2 ['H14-C7-O3', 'H'] -list1 13 ['H14-C7-O3', 'H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 322 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, 1), (1, 0, 0), (0, -1, 1), (1, -1, 0), (1, 0, 1), (1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H14-C7-O3', 'H'] - -Fragments to allocate: 0 17 out of 12 22 -sublist 2 ['H14-C7-O3', 'H'] -list1 13 ['H14-C7-O3', 'H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 323 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H14-C7-O3', 'H'] - -Fragments to allocate: 0 18 out of 12 22 -sublist 2 ['H14-C7-O3', 'H'] -list1 13 ['H14-C7-O3', 'H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 324 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, -1), (1, 0, 0), (0, -1, -1), (1, -1, 0), (1, 0, -1), (1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H14-C7-O3', 'H'] - -Fragments to allocate: 0 19 out of 12 22 -sublist 2 ['H14-C7-O3', 'H'] -list1 13 ['H14-C7-O3', 'H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 325 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H14-C7-O3', 'H'] - -Fragments to allocate: 0 20 out of 12 22 -sublist 2 ['H14-C7-O3', 'H'] -list1 13 ['H14-C7-O3', 'H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 326 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H14-C7-O3', 'H'] - -Fragments to allocate: 0 21 out of 12 22 -sublist 2 ['H14-C7-O3', 'H'] -list1 13 ['H14-C7-O3', 'H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 327 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H14-C7-O3', 'H'] - -Fragments to allocate: 0 22 out of 12 22 -sublist 2 ['H14-C7-O3', 'H'] -list1 13 ['H14-C7-O3', 'H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 328 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H14-C7-O3', 'H'] - -Fragments to allocate: 1 0 out of 12 22 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H14-C7-O3', 'H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C7-O3', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 329 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 1 1 out of 12 22 -sublist 2 ['H14-C7-O3', 'H'] -list1 13 ['H16-C9-O5', 'H14-C7-O3', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 330 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H14-C7-O3', 'H'] - -Fragments to allocate: 1 2 out of 12 22 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H14-C7-O3', 'H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C7-O3', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 331 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 1 3 out of 12 22 -sublist 2 ['H14-C7-O3', 'H'] -list1 13 ['H16-C9-O5', 'H14-C7-O3', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 332 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H14-C7-O3', 'H'] - -Fragments to allocate: 1 4 out of 12 22 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H14-C7-O3', 'H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C7-O3', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 333 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, -1), (1, 0, 0), (0, -1, -1), (1, -1, 0), (1, 0, -1), (1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 1 5 out of 12 22 -sublist 2 ['H14-C7-O3', 'H'] -list1 13 ['H16-C9-O5', 'H14-C7-O3', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 334 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H14-C7-O3', 'H'] - -Fragments to allocate: 1 6 out of 12 22 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H14-C7-O3', 'H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C7-O3', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 335 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, 1), (1, 0, 0), (0, -1, 1), (1, -1, 0), (1, 0, 1), (1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 1 7 out of 12 22 -sublist 2 ['H14-C7-O3', 'H'] -list1 13 ['H16-C9-O5', 'H14-C7-O3', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 336 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H14-C7-O3', 'H'] - -Fragments to allocate: 1 8 out of 12 22 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H14-C7-O3', 'H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C7-O3', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 337 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, -1), (1, 0, 0), (0, -1, -1), (1, -1, 0), (1, 0, -1), (1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 1 9 out of 12 22 -sublist 2 ['H14-C7-O3', 'H'] -list1 13 ['H16-C9-O5', 'H14-C7-O3', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 338 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, -1), (1, 0, 0), (0, -1, -1), (1, -1, 0), (1, 0, -1), (1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H14-C7-O3', 'H'] - -Fragments to allocate: 1 10 out of 12 22 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H14-C7-O3', 'H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C7-O3', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 339 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -Adjacency Matrix: Distance 0.241 smaller than clash for atoms 10 30 H H [12.74620545 8.54085884 4.4509368 ] [12.77240545 8.54753615 4.21146097] 1.3 -MERGE_FRAGMENTS: count_species found 0 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 1 11 out of 12 22 -sublist 2 ['H14-C7-O3', 'H'] -list1 13 ['H16-C9-O5', 'H14-C7-O3', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 340 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, -1), (1, 0, 0), (0, -1, -1), (1, -1, 0), (1, 0, -1), (1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H14-C7-O3', 'H'] - -Fragments to allocate: 1 12 out of 12 22 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H14-C7-O3', 'H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C7-O3', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 341 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 1 13 out of 12 22 -sublist 2 ['H14-C7-O3', 'H'] -list1 13 ['H16-C9-O5', 'H14-C7-O3', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 342 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (-1, -1, 0), (0, -1, -1), (0, -1, 1), (-1, 0, -1), (-1, 0, 1), (-1, -1, -1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H14-C7-O3', 'H'] - -Fragments to allocate: 1 14 out of 12 22 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H14-C7-O3', 'H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C7-O3', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 343 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 1 15 out of 12 22 -sublist 2 ['H14-C7-O3', 'H'] -list1 13 ['H16-C9-O5', 'H14-C7-O3', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 344 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H14-C7-O3', 'H'] - -Fragments to allocate: 1 16 out of 12 22 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H14-C7-O3', 'H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C7-O3', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 345 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 1 17 out of 12 22 -sublist 2 ['H14-C7-O3', 'H'] -list1 13 ['H16-C9-O5', 'H14-C7-O3', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 346 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H14-C7-O3', 'H'] - -Fragments to allocate: 1 18 out of 12 22 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H14-C7-O3', 'H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C7-O3', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 347 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 1 19 out of 12 22 -sublist 2 ['H14-C7-O3', 'H'] -list1 13 ['H16-C9-O5', 'H14-C7-O3', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 348 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, -1), (1, 0, 0), (0, -1, -1), (1, -1, 0), (1, 0, -1), (1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H14-C7-O3', 'H'] - -Fragments to allocate: 1 20 out of 12 22 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H14-C7-O3', 'H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C7-O3', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 349 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (-1, -1, 0), (0, -1, -1), (0, -1, 1), (-1, 0, -1), (-1, 0, 1), (-1, -1, -1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 1 21 out of 12 22 -sublist 2 ['H14-C7-O3', 'H'] -list1 13 ['H16-C9-O5', 'H14-C7-O3', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 350 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H14-C7-O3', 'H'] - -Fragments to allocate: 1 22 out of 12 22 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H14-C7-O3', 'H16-C9-O5', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C7-O3', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 351 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 2 0 out of 12 22 -sublist 2 ['H-O', 'H'] -list1 13 ['H16-C9-O5', 'H14-C7-O3', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H14-C7-O3', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 352 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H-O', 'H'] - -Fragments to allocate: 2 1 out of 12 22 -sublist 2 ['H14-C7-O3', 'H'] -list1 13 ['H-O', 'H16-C9-O5', 'H14-C7-O3', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H16-C9-O5', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 353 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H14-C7-O3', 'H'] - -Fragments to allocate: 2 2 out of 12 22 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H14-C7-O3', 'H-O', 'H16-C9-O5', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C7-O3', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 354 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (-1, -1, 0), (0, -1, -1), (0, -1, 1), (-1, 0, -1), (-1, 0, 1), (-1, -1, -1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 2 3 out of 12 22 -sublist 2 ['H-O', 'H'] -list1 13 ['H16-C9-O5', 'H14-C7-O3', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H14-C7-O3', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 355 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, -1), (1, 0, 0), (0, -1, -1), (1, -1, 0), (1, 0, -1), (1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H-O', 'H'] - -Fragments to allocate: 2 4 out of 12 22 -sublist 2 ['H14-C7-O3', 'H'] -list1 13 ['H-O', 'H16-C9-O5', 'H14-C7-O3', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H16-C9-O5', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 356 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H14-C7-O3', 'H'] - -Fragments to allocate: 2 5 out of 12 22 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H14-C7-O3', 'H-O', 'H16-C9-O5', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C7-O3', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 357 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 2 6 out of 12 22 -sublist 2 ['H-O', 'H'] -list1 13 ['H16-C9-O5', 'H14-C7-O3', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H14-C7-O3', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 358 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H-O', 'H'] - -Fragments to allocate: 2 7 out of 12 22 -sublist 2 ['H14-C7-O3', 'H'] -list1 13 ['H-O', 'H16-C9-O5', 'H14-C7-O3', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H16-C9-O5', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 359 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H14-C7-O3', 'H'] - -Fragments to allocate: 2 8 out of 12 22 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H14-C7-O3', 'H-O', 'H16-C9-O5', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C7-O3', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 360 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 2 9 out of 12 22 -sublist 2 ['H-O', 'H'] -list1 13 ['H16-C9-O5', 'H14-C7-O3', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H14-C7-O3', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 361 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (-1, -1, 0), (0, -1, -1), (0, -1, 1), (-1, 0, -1), (-1, 0, 1), (-1, -1, -1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H-O', 'H'] - -Fragments to allocate: 2 10 out of 12 22 -sublist 2 ['H14-C7-O3', 'H'] -list1 13 ['H-O', 'H16-C9-O5', 'H14-C7-O3', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H16-C9-O5', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 362 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H14-C7-O3', 'H'] - -Fragments to allocate: 2 11 out of 12 22 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H14-C7-O3', 'H-O', 'H16-C9-O5', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C7-O3', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 363 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, -1), (1, 0, 0), (0, -1, -1), (1, -1, 0), (1, 0, -1), (1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 2 12 out of 12 22 -sublist 2 ['H-O', 'H'] -list1 13 ['H16-C9-O5', 'H14-C7-O3', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H14-C7-O3', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 364 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H-O', 'H'] - -Fragments to allocate: 2 13 out of 12 22 -sublist 2 ['H14-C7-O3', 'H'] -list1 13 ['H-O', 'H16-C9-O5', 'H14-C7-O3', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H16-C9-O5', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 365 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, -1), (1, 0, 0), (0, -1, -1), (1, -1, 0), (1, 0, -1), (1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H14-C7-O3', 'H'] - -Fragments to allocate: 2 14 out of 12 22 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H14-C7-O3', 'H-O', 'H16-C9-O5', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C7-O3', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 366 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, -1), (1, 0, 0), (0, -1, -1), (1, -1, 0), (1, 0, -1), (1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 2 15 out of 12 22 -sublist 2 ['H-O', 'H'] -list1 13 ['H16-C9-O5', 'H14-C7-O3', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H14-C7-O3', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 367 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H-O', 'H'] - -Fragments to allocate: 2 16 out of 12 22 -sublist 2 ['H14-C7-O3', 'H'] -list1 13 ['H-O', 'H16-C9-O5', 'H14-C7-O3', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H16-C9-O5', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 368 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, 1), (1, 0, 0), (0, -1, 1), (1, -1, 0), (1, 0, 1), (1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H14-C7-O3', 'H'] - -Fragments to allocate: 2 17 out of 12 22 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H14-C7-O3', 'H-O', 'H16-C9-O5', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C7-O3', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 369 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 2 18 out of 12 22 -sublist 2 ['H-O', 'H'] -list1 13 ['H16-C9-O5', 'H14-C7-O3', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H14-C7-O3', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 370 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, -1), (1, 0, 0), (0, -1, -1), (1, -1, 0), (1, 0, -1), (1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H-O', 'H'] - -Fragments to allocate: 2 19 out of 12 22 -sublist 2 ['H14-C7-O3', 'H'] -list1 13 ['H-O', 'H16-C9-O5', 'H14-C7-O3', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H16-C9-O5', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 371 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H14-C7-O3', 'H'] - -Fragments to allocate: 2 20 out of 12 22 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H14-C7-O3', 'H-O', 'H16-C9-O5', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C7-O3', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 372 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 2 21 out of 12 22 -sublist 2 ['H-O', 'H'] -list1 13 ['H16-C9-O5', 'H14-C7-O3', 'H-O', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H14-C7-O3', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 373 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H-O', 'H'] - -Fragments to allocate: 2 22 out of 12 22 -sublist 2 ['H14-C7-O3', 'H'] -list1 13 ['H-O', 'H16-C9-O5', 'H14-C7-O3', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H16-C9-O5', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 374 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H14-C7-O3', 'H'] - -Fragments to allocate: 3 0 out of 12 22 -sublist 2 ['H17-C11-O9', 'H'] -list1 13 ['H14-C7-O3', 'H-O', 'H16-C9-O5', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C7-O3', 'H-O', 'H16-C9-O5', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 375 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'O', 'C', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'H', 'C', 'H', 'O', 'H', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H17-C11-O9', 'H'] - -Fragments to allocate: 3 1 out of 12 22 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H17-C11-O9', 'H14-C7-O3', 'H-O', 'H16-C9-O5', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H17-C11-O9', 'H14-C7-O3', 'H-O', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 376 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 3 2 out of 12 22 -sublist 2 ['H-O', 'H'] -list1 13 ['H16-C9-O5', 'H17-C11-O9', 'H14-C7-O3', 'H-O', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H17-C11-O9', 'H14-C7-O3', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 377 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H-O', 'H'] - -Fragments to allocate: 3 3 out of 12 22 -sublist 2 ['H14-C7-O3', 'H'] -list1 13 ['H-O', 'H16-C9-O5', 'H17-C11-O9', 'H14-C7-O3', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H16-C9-O5', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 378 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H14-C7-O3', 'H'] - -Fragments to allocate: 3 4 out of 12 22 -sublist 2 ['H17-C11-O9', 'H'] -list1 13 ['H14-C7-O3', 'H-O', 'H16-C9-O5', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C7-O3', 'H-O', 'H16-C9-O5', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 379 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'O', 'C', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'H', 'C', 'H', 'O', 'H', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, -1), (1, 0, 0), (0, -1, -1), (1, -1, 0), (1, 0, -1), (1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H17-C11-O9', 'H'] - -Fragments to allocate: 3 5 out of 12 22 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H17-C11-O9', 'H14-C7-O3', 'H-O', 'H16-C9-O5', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H17-C11-O9', 'H14-C7-O3', 'H-O', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 380 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 3 6 out of 12 22 -sublist 2 ['H-O', 'H'] -list1 13 ['H16-C9-O5', 'H17-C11-O9', 'H14-C7-O3', 'H-O', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H17-C11-O9', 'H14-C7-O3', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 381 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, 1), (1, 0, 0), (0, -1, 1), (1, -1, 0), (1, 0, 1), (1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H-O', 'H'] - -Fragments to allocate: 3 7 out of 12 22 -sublist 2 ['H14-C7-O3', 'H'] -list1 13 ['H-O', 'H16-C9-O5', 'H17-C11-O9', 'H14-C7-O3', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H16-C9-O5', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 382 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H14-C7-O3', 'H'] - -Fragments to allocate: 3 8 out of 12 22 -sublist 2 ['H17-C11-O9', 'H'] -list1 13 ['H14-C7-O3', 'H-O', 'H16-C9-O5', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C7-O3', 'H-O', 'H16-C9-O5', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 383 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'O', 'C', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'H', 'C', 'H', 'O', 'H', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, -1), (1, 0, 0), (0, -1, -1), (1, -1, 0), (1, 0, -1), (1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H17-C11-O9', 'H'] - -Fragments to allocate: 3 9 out of 12 22 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H17-C11-O9', 'H14-C7-O3', 'H-O', 'H16-C9-O5', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H17-C11-O9', 'H14-C7-O3', 'H-O', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 384 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, -1), (1, 0, 0), (0, -1, -1), (1, -1, 0), (1, 0, -1), (1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 3 10 out of 12 22 -sublist 2 ['H-O', 'H'] -list1 13 ['H16-C9-O5', 'H17-C11-O9', 'H14-C7-O3', 'H-O', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H17-C11-O9', 'H14-C7-O3', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 385 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H-O', 'H'] - -Fragments to allocate: 3 11 out of 12 22 -sublist 2 ['H14-C7-O3', 'H'] -list1 13 ['H-O', 'H16-C9-O5', 'H17-C11-O9', 'H14-C7-O3', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H16-C9-O5', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 386 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, -1), (1, 0, 0), (0, -1, -1), (1, -1, 0), (1, 0, -1), (1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H14-C7-O3', 'H'] - -Fragments to allocate: 3 12 out of 12 22 -sublist 2 ['H17-C11-O9', 'H'] -list1 13 ['H14-C7-O3', 'H-O', 'H16-C9-O5', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C7-O3', 'H-O', 'H16-C9-O5', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 387 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'O', 'C', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'H', 'C', 'H', 'O', 'H', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H17-C11-O9', 'H'] - -Fragments to allocate: 3 13 out of 12 22 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H17-C11-O9', 'H14-C7-O3', 'H-O', 'H16-C9-O5', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H17-C11-O9', 'H14-C7-O3', 'H-O', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 388 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (-1, -1, 0), (0, -1, -1), (0, -1, 1), (-1, 0, -1), (-1, 0, 1), (-1, -1, -1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 3 14 out of 12 22 -sublist 2 ['H-O', 'H'] -list1 13 ['H16-C9-O5', 'H17-C11-O9', 'H14-C7-O3', 'H-O', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H17-C11-O9', 'H14-C7-O3', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 389 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H-O', 'H'] - -Fragments to allocate: 3 15 out of 12 22 -sublist 2 ['H14-C7-O3', 'H'] -list1 13 ['H-O', 'H16-C9-O5', 'H17-C11-O9', 'H14-C7-O3', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H16-C9-O5', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 390 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H14-C7-O3', 'H'] - -Fragments to allocate: 3 16 out of 12 22 -sublist 2 ['H17-C11-O9', 'H'] -list1 13 ['H14-C7-O3', 'H-O', 'H16-C9-O5', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C7-O3', 'H-O', 'H16-C9-O5', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 391 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'O', 'C', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'H', 'C', 'H', 'O', 'H', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H17-C11-O9', 'H'] - -Fragments to allocate: 3 17 out of 12 22 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H17-C11-O9', 'H14-C7-O3', 'H-O', 'H16-C9-O5', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H17-C11-O9', 'H14-C7-O3', 'H-O', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 392 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 3 18 out of 12 22 -sublist 2 ['H-O', 'H'] -list1 13 ['H16-C9-O5', 'H17-C11-O9', 'H14-C7-O3', 'H-O', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H17-C11-O9', 'H14-C7-O3', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 393 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H-O', 'H'] - -Fragments to allocate: 3 19 out of 12 22 -sublist 2 ['H14-C7-O3', 'H'] -list1 13 ['H-O', 'H16-C9-O5', 'H17-C11-O9', 'H14-C7-O3', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H16-C9-O5', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 394 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, -1), (1, 0, 0), (0, -1, -1), (1, -1, 0), (1, 0, -1), (1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H14-C7-O3', 'H'] - -Fragments to allocate: 3 20 out of 12 22 -sublist 2 ['H17-C11-O9', 'H'] -list1 13 ['H14-C7-O3', 'H-O', 'H16-C9-O5', 'H17-C11-O9', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C7-O3', 'H-O', 'H16-C9-O5', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 395 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'O', 'C', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'H', 'C', 'H', 'O', 'H', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (-1, -1, 0), (0, -1, -1), (0, -1, 1), (-1, 0, -1), (-1, 0, 1), (-1, -1, -1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H17-C11-O9', 'H'] - -Fragments to allocate: 3 21 out of 12 22 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H17-C11-O9', 'H14-C7-O3', 'H-O', 'H16-C9-O5', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H17-C11-O9', 'H14-C7-O3', 'H-O', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 396 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 3 22 out of 12 22 -sublist 2 ['H-O', 'H'] -list1 13 ['H16-C9-O5', 'H17-C11-O9', 'H14-C7-O3', 'H-O', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H17-C11-O9', 'H14-C7-O3', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 397 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H-O', 'H'] - -Fragments to allocate: 4 0 out of 12 22 -sublist 2 ['H3-C2', 'H'] -list1 13 ['H-O', 'H16-C9-O5', 'H17-C11-O9', 'H14-C7-O3', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H16-C9-O5', 'H17-C11-O9', 'H14-C7-O3', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 398 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H3-C2', 'H'] - -Fragments to allocate: 4 1 out of 12 22 -sublist 2 ['H14-C7-O3', 'H'] -list1 13 ['H3-C2', 'H-O', 'H16-C9-O5', 'H17-C11-O9', 'H14-C7-O3', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H-O', 'H16-C9-O5', 'H17-C11-O9', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 399 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H14-C7-O3', 'H'] - -Fragments to allocate: 4 2 out of 12 22 -sublist 2 ['H17-C11-O9', 'H'] -list1 13 ['H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H17-C11-O9', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 400 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'O', 'C', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'H', 'C', 'H', 'O', 'H', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (-1, -1, 0), (0, -1, -1), (0, -1, 1), (-1, 0, -1), (-1, 0, 1), (-1, -1, -1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H17-C11-O9', 'H'] - -Fragments to allocate: 4 3 out of 12 22 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H17-C11-O9', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H17-C11-O9', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 401 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, -1), (1, 0, 0), (0, -1, -1), (1, -1, 0), (1, 0, -1), (1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 4 4 out of 12 22 -sublist 2 ['H-O', 'H'] -list1 13 ['H16-C9-O5', 'H17-C11-O9', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H17-C11-O9', 'H14-C7-O3', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 402 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H-O', 'H'] - -Fragments to allocate: 4 5 out of 12 22 -sublist 2 ['H3-C2', 'H'] -list1 13 ['H-O', 'H16-C9-O5', 'H17-C11-O9', 'H14-C7-O3', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H16-C9-O5', 'H17-C11-O9', 'H14-C7-O3', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 403 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H3-C2', 'H'] - -Fragments to allocate: 4 6 out of 12 22 -sublist 2 ['H14-C7-O3', 'H'] -list1 13 ['H3-C2', 'H-O', 'H16-C9-O5', 'H17-C11-O9', 'H14-C7-O3', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H-O', 'H16-C9-O5', 'H17-C11-O9', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 404 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H14-C7-O3', 'H'] - -Fragments to allocate: 4 7 out of 12 22 -sublist 2 ['H17-C11-O9', 'H'] -list1 13 ['H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H17-C11-O9', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 405 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'O', 'C', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'H', 'C', 'H', 'O', 'H', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H17-C11-O9', 'H'] - -Fragments to allocate: 4 8 out of 12 22 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H17-C11-O9', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H17-C11-O9', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 406 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 4 9 out of 12 22 -sublist 2 ['H-O', 'H'] -list1 13 ['H16-C9-O5', 'H17-C11-O9', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H17-C11-O9', 'H14-C7-O3', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 407 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (-1, -1, 0), (0, -1, -1), (0, -1, 1), (-1, 0, -1), (-1, 0, 1), (-1, -1, -1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H-O', 'H'] - -Fragments to allocate: 4 10 out of 12 22 -sublist 2 ['H3-C2', 'H'] -list1 13 ['H-O', 'H16-C9-O5', 'H17-C11-O9', 'H14-C7-O3', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H16-C9-O5', 'H17-C11-O9', 'H14-C7-O3', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 408 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H3-C2', 'H'] - -Fragments to allocate: 4 11 out of 12 22 -sublist 2 ['H14-C7-O3', 'H'] -list1 13 ['H3-C2', 'H-O', 'H16-C9-O5', 'H17-C11-O9', 'H14-C7-O3', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H-O', 'H16-C9-O5', 'H17-C11-O9', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 409 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, -1), (1, 0, 0), (0, -1, -1), (1, -1, 0), (1, 0, -1), (1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H14-C7-O3', 'H'] - -Fragments to allocate: 4 12 out of 12 22 -sublist 2 ['H17-C11-O9', 'H'] -list1 13 ['H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H17-C11-O9', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 410 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'O', 'C', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'H', 'C', 'H', 'O', 'H', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H17-C11-O9', 'H'] - -Fragments to allocate: 4 13 out of 12 22 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H17-C11-O9', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H17-C11-O9', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 411 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, -1), (1, 0, 0), (0, -1, -1), (1, -1, 0), (1, 0, -1), (1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 4 14 out of 12 22 -sublist 2 ['H-O', 'H'] -list1 13 ['H16-C9-O5', 'H17-C11-O9', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H17-C11-O9', 'H14-C7-O3', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 412 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, -1), (1, 0, 0), (0, -1, -1), (1, -1, 0), (1, 0, -1), (1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H-O', 'H'] - -Fragments to allocate: 4 15 out of 12 22 -sublist 2 ['H3-C2', 'H'] -list1 13 ['H-O', 'H16-C9-O5', 'H17-C11-O9', 'H14-C7-O3', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H16-C9-O5', 'H17-C11-O9', 'H14-C7-O3', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 413 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H3-C2', 'H'] - -Fragments to allocate: 4 16 out of 12 22 -sublist 2 ['H14-C7-O3', 'H'] -list1 13 ['H3-C2', 'H-O', 'H16-C9-O5', 'H17-C11-O9', 'H14-C7-O3', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H-O', 'H16-C9-O5', 'H17-C11-O9', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 414 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, 1), (1, 0, 0), (0, -1, 1), (1, -1, 0), (1, 0, 1), (1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H14-C7-O3', 'H'] - -Fragments to allocate: 4 17 out of 12 22 -sublist 2 ['H17-C11-O9', 'H'] -list1 13 ['H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H17-C11-O9', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 415 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'O', 'C', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'H', 'C', 'H', 'O', 'H', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H17-C11-O9', 'H'] - -Fragments to allocate: 4 18 out of 12 22 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H17-C11-O9', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H17-C11-O9', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 416 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, -1), (1, 0, 0), (0, -1, -1), (1, -1, 0), (1, 0, -1), (1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 4 19 out of 12 22 -sublist 2 ['H-O', 'H'] -list1 13 ['H16-C9-O5', 'H17-C11-O9', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H17-C11-O9', 'H14-C7-O3', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 417 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H-O', 'H'] - -Fragments to allocate: 4 20 out of 12 22 -sublist 2 ['H3-C2', 'H'] -list1 13 ['H-O', 'H16-C9-O5', 'H17-C11-O9', 'H14-C7-O3', 'H3-C2', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H16-C9-O5', 'H17-C11-O9', 'H14-C7-O3', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 418 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H3-C2', 'H'] - -Fragments to allocate: 4 21 out of 12 22 -sublist 2 ['H14-C7-O3', 'H'] -list1 13 ['H3-C2', 'H-O', 'H16-C9-O5', 'H17-C11-O9', 'H14-C7-O3', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H-O', 'H16-C9-O5', 'H17-C11-O9', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 419 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H14-C7-O3', 'H'] - -Fragments to allocate: 4 22 out of 12 22 -sublist 2 ['H17-C11-O9', 'H'] -list1 13 ['H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H17-C11-O9', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 420 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'O', 'C', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'H', 'C', 'H', 'O', 'H', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H17-C11-O9', 'H'] - -Fragments to allocate: 5 0 out of 12 22 -sublist 2 ['H16-C8-O5', 'H'] -list1 13 ['H17-C11-O9', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H17-C11-O9', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 421 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C8-O5', 'H'] - -Fragments to allocate: 5 1 out of 12 22 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H16-C8-O5', 'H17-C11-O9', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C8-O5', 'H17-C11-O9', 'H14-C7-O3', 'H3-C2', 'H-O', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 422 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 5 2 out of 12 22 -sublist 2 ['H-O', 'H'] -list1 13 ['H16-C9-O5', 'H16-C8-O5', 'H17-C11-O9', 'H14-C7-O3', 'H3-C2', 'H-O', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H16-C8-O5', 'H17-C11-O9', 'H14-C7-O3', 'H3-C2', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 423 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H-O', 'H'] - -Fragments to allocate: 5 3 out of 12 22 -sublist 2 ['H3-C2', 'H'] -list1 13 ['H-O', 'H16-C9-O5', 'H16-C8-O5', 'H17-C11-O9', 'H14-C7-O3', 'H3-C2', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H16-C9-O5', 'H16-C8-O5', 'H17-C11-O9', 'H14-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 424 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H3-C2', 'H'] - -Fragments to allocate: 5 4 out of 12 22 -sublist 2 ['H14-C7-O3', 'H'] -list1 13 ['H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H17-C11-O9', 'H14-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H17-C11-O9', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 425 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, -1), (1, 0, 0), (0, -1, -1), (1, -1, 0), (1, 0, -1), (1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H14-C7-O3', 'H'] - -Fragments to allocate: 5 5 out of 12 22 -sublist 2 ['H17-C11-O9', 'H'] -list1 13 ['H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H17-C11-O9', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 426 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'O', 'C', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'H', 'C', 'H', 'O', 'H', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H17-C11-O9', 'H'] - -Fragments to allocate: 5 6 out of 12 22 -sublist 2 ['H16-C8-O5', 'H'] -list1 13 ['H17-C11-O9', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H17-C11-O9', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 427 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, 1), (1, 0, 0), (0, -1, 1), (1, -1, 0), (1, 0, 1), (1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C8-O5', 'H'] - -Fragments to allocate: 5 7 out of 12 22 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H16-C8-O5', 'H17-C11-O9', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C8-O5', 'H17-C11-O9', 'H14-C7-O3', 'H3-C2', 'H-O', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 428 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 5 8 out of 12 22 -sublist 2 ['H-O', 'H'] -list1 13 ['H16-C9-O5', 'H16-C8-O5', 'H17-C11-O9', 'H14-C7-O3', 'H3-C2', 'H-O', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H16-C8-O5', 'H17-C11-O9', 'H14-C7-O3', 'H3-C2', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 429 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, -1), (1, 0, 0), (0, -1, -1), (1, -1, 0), (1, 0, -1), (1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H-O', 'H'] - -Fragments to allocate: 5 9 out of 12 22 -sublist 2 ['H3-C2', 'H'] -list1 13 ['H-O', 'H16-C9-O5', 'H16-C8-O5', 'H17-C11-O9', 'H14-C7-O3', 'H3-C2', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H16-C9-O5', 'H16-C8-O5', 'H17-C11-O9', 'H14-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 430 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, -1), (1, 0, 0), (0, -1, -1), (1, -1, 0), (1, 0, -1), (1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H3-C2', 'H'] - -Fragments to allocate: 5 10 out of 12 22 -sublist 2 ['H14-C7-O3', 'H'] -list1 13 ['H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H17-C11-O9', 'H14-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H17-C11-O9', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 431 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H14-C7-O3', 'H'] - -Fragments to allocate: 5 11 out of 12 22 -sublist 2 ['H17-C11-O9', 'H'] -list1 13 ['H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H17-C11-O9', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 432 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'O', 'C', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'H', 'C', 'H', 'O', 'H', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, -1), (1, 0, 0), (0, -1, -1), (1, -1, 0), (1, 0, -1), (1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H17-C11-O9', 'H'] - -Fragments to allocate: 5 12 out of 12 22 -sublist 2 ['H16-C8-O5', 'H'] -list1 13 ['H17-C11-O9', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H17-C11-O9', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 433 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C8-O5', 'H'] - -Fragments to allocate: 5 13 out of 12 22 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H16-C8-O5', 'H17-C11-O9', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C8-O5', 'H17-C11-O9', 'H14-C7-O3', 'H3-C2', 'H-O', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 434 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (-1, -1, 0), (0, -1, -1), (0, -1, 1), (-1, 0, -1), (-1, 0, 1), (-1, -1, -1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 5 14 out of 12 22 -sublist 2 ['H-O', 'H'] -list1 13 ['H16-C9-O5', 'H16-C8-O5', 'H17-C11-O9', 'H14-C7-O3', 'H3-C2', 'H-O', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H16-C8-O5', 'H17-C11-O9', 'H14-C7-O3', 'H3-C2', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 435 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H-O', 'H'] - -Fragments to allocate: 5 15 out of 12 22 -sublist 2 ['H3-C2', 'H'] -list1 13 ['H-O', 'H16-C9-O5', 'H16-C8-O5', 'H17-C11-O9', 'H14-C7-O3', 'H3-C2', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H16-C9-O5', 'H16-C8-O5', 'H17-C11-O9', 'H14-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 436 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H3-C2', 'H'] - -Fragments to allocate: 5 16 out of 12 22 -sublist 2 ['H14-C7-O3', 'H'] -list1 13 ['H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H17-C11-O9', 'H14-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H17-C11-O9', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 437 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H14-C7-O3', 'H'] - -Fragments to allocate: 5 17 out of 12 22 -sublist 2 ['H17-C11-O9', 'H'] -list1 13 ['H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H17-C11-O9', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 438 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'O', 'C', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'H', 'C', 'H', 'O', 'H', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H17-C11-O9', 'H'] - -Fragments to allocate: 5 18 out of 12 22 -sublist 2 ['H16-C8-O5', 'H'] -list1 13 ['H17-C11-O9', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H17-C11-O9', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 439 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C8-O5', 'H'] - -Fragments to allocate: 5 19 out of 12 22 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H16-C8-O5', 'H17-C11-O9', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C8-O5', 'H17-C11-O9', 'H14-C7-O3', 'H3-C2', 'H-O', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 440 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, -1), (1, 0, 0), (0, -1, -1), (1, -1, 0), (1, 0, -1), (1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 5 20 out of 12 22 -sublist 2 ['H-O', 'H'] -list1 13 ['H16-C9-O5', 'H16-C8-O5', 'H17-C11-O9', 'H14-C7-O3', 'H3-C2', 'H-O', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H16-C8-O5', 'H17-C11-O9', 'H14-C7-O3', 'H3-C2', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 441 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (-1, -1, 0), (0, -1, -1), (0, -1, 1), (-1, 0, -1), (-1, 0, 1), (-1, -1, -1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H-O', 'H'] - -Fragments to allocate: 5 21 out of 12 22 -sublist 2 ['H3-C2', 'H'] -list1 13 ['H-O', 'H16-C9-O5', 'H16-C8-O5', 'H17-C11-O9', 'H14-C7-O3', 'H3-C2', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H16-C9-O5', 'H16-C8-O5', 'H17-C11-O9', 'H14-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 442 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H3-C2', 'H'] - -Fragments to allocate: 5 22 out of 12 22 -sublist 2 ['H14-C7-O3', 'H'] -list1 13 ['H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H17-C11-O9', 'H14-C7-O3', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H17-C11-O9', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 443 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H14-C7-O3', 'H'] - -Fragments to allocate: 6 0 out of 12 22 -sublist 2 ['H15-C11-O10', 'H'] -list1 13 ['H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H17-C11-O9', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H17-C11-O9', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 444 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'O', 'O', 'O', 'O', 'C', 'C', 'O', 'O', 'C', 'O', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H15-C11-O10', 'H'] - -Fragments to allocate: 6 1 out of 12 22 -sublist 2 ['H17-C11-O9', 'H'] -list1 13 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H17-C11-O9', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 445 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'O', 'C', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'H', 'C', 'H', 'O', 'H', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H17-C11-O9', 'H'] - -Fragments to allocate: 6 2 out of 12 22 -sublist 2 ['H16-C8-O5', 'H'] -list1 13 ['H17-C11-O9', 'H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H17-C11-O9', 'H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 446 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (-1, -1, 0), (0, -1, -1), (0, -1, 1), (-1, 0, -1), (-1, 0, 1), (-1, -1, -1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C8-O5', 'H'] - -Fragments to allocate: 6 3 out of 12 22 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H16-C8-O5', 'H17-C11-O9', 'H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C8-O5', 'H17-C11-O9', 'H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 447 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, -1), (1, 0, 0), (0, -1, -1), (1, -1, 0), (1, 0, -1), (1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 6 4 out of 12 22 -sublist 2 ['H-O', 'H'] -list1 13 ['H16-C9-O5', 'H16-C8-O5', 'H17-C11-O9', 'H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H16-C8-O5', 'H17-C11-O9', 'H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 448 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H-O', 'H'] - -Fragments to allocate: 6 5 out of 12 22 -sublist 2 ['H3-C2', 'H'] -list1 13 ['H-O', 'H16-C9-O5', 'H16-C8-O5', 'H17-C11-O9', 'H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H16-C9-O5', 'H16-C8-O5', 'H17-C11-O9', 'H15-C11-O10', 'H14-C7-O3', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 449 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H3-C2', 'H'] - -Fragments to allocate: 6 6 out of 12 22 -sublist 2 ['H14-C7-O3', 'H'] -list1 13 ['H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H17-C11-O9', 'H15-C11-O10', 'H14-C7-O3', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H17-C11-O9', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 450 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H14-C7-O3', 'H'] - -Fragments to allocate: 6 7 out of 12 22 -sublist 2 ['H15-C11-O10', 'H'] -list1 13 ['H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H17-C11-O9', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H17-C11-O9', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 451 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'O', 'O', 'O', 'O', 'C', 'C', 'O', 'O', 'C', 'O', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H15-C11-O10', 'H'] - -Fragments to allocate: 6 8 out of 12 22 -sublist 2 ['H17-C11-O9', 'H'] -list1 13 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H17-C11-O9', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 452 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'O', 'C', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'H', 'C', 'H', 'O', 'H', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H17-C11-O9', 'H'] - -Fragments to allocate: 6 9 out of 12 22 -sublist 2 ['H16-C8-O5', 'H'] -list1 13 ['H17-C11-O9', 'H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H17-C11-O9', 'H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 453 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (-1, -1, 0), (0, -1, -1), (0, -1, 1), (-1, 0, -1), (-1, 0, 1), (-1, -1, -1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C8-O5', 'H'] - -Fragments to allocate: 6 10 out of 12 22 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H16-C8-O5', 'H17-C11-O9', 'H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C8-O5', 'H17-C11-O9', 'H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 454 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 6 11 out of 12 22 -sublist 2 ['H-O', 'H'] -list1 13 ['H16-C9-O5', 'H16-C8-O5', 'H17-C11-O9', 'H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H16-C8-O5', 'H17-C11-O9', 'H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 455 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, -1), (1, 0, 0), (0, -1, -1), (1, -1, 0), (1, 0, -1), (1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H-O', 'H'] - -Fragments to allocate: 6 12 out of 12 22 -sublist 2 ['H3-C2', 'H'] -list1 13 ['H-O', 'H16-C9-O5', 'H16-C8-O5', 'H17-C11-O9', 'H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H16-C9-O5', 'H16-C8-O5', 'H17-C11-O9', 'H15-C11-O10', 'H14-C7-O3', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 456 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H3-C2', 'H'] - -Fragments to allocate: 6 13 out of 12 22 -sublist 2 ['H14-C7-O3', 'H'] -list1 13 ['H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H17-C11-O9', 'H15-C11-O10', 'H14-C7-O3', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H17-C11-O9', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 457 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, -1), (1, 0, 0), (0, -1, -1), (1, -1, 0), (1, 0, -1), (1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H14-C7-O3', 'H'] - -Fragments to allocate: 6 14 out of 12 22 -sublist 2 ['H15-C11-O10', 'H'] -list1 13 ['H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H17-C11-O9', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H17-C11-O9', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 458 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'O', 'O', 'O', 'O', 'C', 'C', 'O', 'O', 'C', 'O', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, -1), (1, 0, 0), (0, -1, -1), (1, -1, 0), (1, 0, -1), (1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H15-C11-O10', 'H'] - -Fragments to allocate: 6 15 out of 12 22 -sublist 2 ['H17-C11-O9', 'H'] -list1 13 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H17-C11-O9', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 459 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'O', 'C', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'H', 'C', 'H', 'O', 'H', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H17-C11-O9', 'H'] - -Fragments to allocate: 6 16 out of 12 22 -sublist 2 ['H16-C8-O5', 'H'] -list1 13 ['H17-C11-O9', 'H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H17-C11-O9', 'H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 460 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, 1), (1, 0, 0), (0, -1, 1), (1, -1, 0), (1, 0, 1), (1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C8-O5', 'H'] - -Fragments to allocate: 6 17 out of 12 22 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H16-C8-O5', 'H17-C11-O9', 'H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C8-O5', 'H17-C11-O9', 'H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 461 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 6 18 out of 12 22 -sublist 2 ['H-O', 'H'] -list1 13 ['H16-C9-O5', 'H16-C8-O5', 'H17-C11-O9', 'H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H16-C8-O5', 'H17-C11-O9', 'H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 462 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, -1), (1, 0, 0), (0, -1, -1), (1, -1, 0), (1, 0, -1), (1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H-O', 'H'] - -Fragments to allocate: 6 19 out of 12 22 -sublist 2 ['H3-C2', 'H'] -list1 13 ['H-O', 'H16-C9-O5', 'H16-C8-O5', 'H17-C11-O9', 'H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H16-C9-O5', 'H16-C8-O5', 'H17-C11-O9', 'H15-C11-O10', 'H14-C7-O3', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 463 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H3-C2', 'H'] - -Fragments to allocate: 6 20 out of 12 22 -sublist 2 ['H14-C7-O3', 'H'] -list1 13 ['H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H17-C11-O9', 'H15-C11-O10', 'H14-C7-O3', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H17-C11-O9', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 464 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H14-C7-O3', 'H'] - -Fragments to allocate: 6 21 out of 12 22 -sublist 2 ['H15-C11-O10', 'H'] -list1 13 ['H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H17-C11-O9', 'H15-C11-O10', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H17-C11-O9', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 465 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'O', 'O', 'O', 'O', 'C', 'C', 'O', 'O', 'C', 'O', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H15-C11-O10', 'H'] - -Fragments to allocate: 6 22 out of 12 22 -sublist 2 ['H17-C11-O9', 'H'] -list1 13 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H17-C11-O9', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 466 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'O', 'C', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'H', 'C', 'H', 'O', 'H', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H17-C11-O9', 'H'] - -Fragments to allocate: 7 0 out of 12 22 -sublist 2 ['H21-C14-O6', 'H'] -list1 13 ['H17-C11-O9', 'H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H17-C11-O9', 'H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 467 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H21-C14-O6', 'H'] - -Fragments to allocate: 7 1 out of 12 22 -sublist 2 ['H16-C8-O5', 'H'] -list1 13 ['H21-C14-O6', 'H17-C11-O9', 'H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H17-C11-O9', 'H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 468 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C8-O5', 'H'] - -Fragments to allocate: 7 2 out of 12 22 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 469 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 7 3 out of 12 22 -sublist 2 ['H-O', 'H'] -list1 13 ['H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 470 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H-O', 'H'] - -Fragments to allocate: 7 4 out of 12 22 -sublist 2 ['H3-C2', 'H'] -list1 13 ['H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H15-C11-O10', 'H14-C7-O3', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 471 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, -1), (1, 0, 0), (0, -1, -1), (1, -1, 0), (1, 0, -1), (1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H3-C2', 'H'] - -Fragments to allocate: 7 5 out of 12 22 -sublist 2 ['H14-C7-O3', 'H'] -list1 13 ['H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H15-C11-O10', 'H14-C7-O3', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H15-C11-O10', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 472 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H14-C7-O3', 'H'] - -Fragments to allocate: 7 6 out of 12 22 -sublist 2 ['H15-C11-O10', 'H'] -list1 13 ['H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H15-C11-O10', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 473 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'O', 'O', 'O', 'O', 'C', 'C', 'O', 'O', 'C', 'O', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, 1), (1, 0, 0), (0, -1, 1), (1, -1, 0), (1, 0, 1), (1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H15-C11-O10', 'H'] - -Fragments to allocate: 7 7 out of 12 22 -sublist 2 ['H17-C11-O9', 'H'] -list1 13 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 474 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'O', 'C', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'H', 'C', 'H', 'O', 'H', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H17-C11-O9', 'H'] - -Fragments to allocate: 7 8 out of 12 22 -sublist 2 ['H21-C14-O6', 'H'] -list1 13 ['H17-C11-O9', 'H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H17-C11-O9', 'H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 475 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, -1), (1, 0, 0), (0, -1, -1), (1, -1, 0), (1, 0, -1), (1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H21-C14-O6', 'H'] - -Fragments to allocate: 7 9 out of 12 22 -sublist 2 ['H16-C8-O5', 'H'] -list1 13 ['H21-C14-O6', 'H17-C11-O9', 'H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H17-C11-O9', 'H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 476 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, -1), (1, 0, 0), (0, -1, -1), (1, -1, 0), (1, 0, -1), (1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C8-O5', 'H'] - -Fragments to allocate: 7 10 out of 12 22 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 477 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -Adjacency Matrix: Distance 0.241 smaller than clash for atoms 10 30 H H [12.74620545 8.54085884 4.4509368 ] [12.77240545 8.54753615 4.21146097] 1.3 -MERGE_FRAGMENTS: count_species found 0 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 7 11 out of 12 22 -sublist 2 ['H-O', 'H'] -list1 13 ['H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 478 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, -1), (1, 0, 0), (0, -1, -1), (1, -1, 0), (1, 0, -1), (1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H-O', 'H'] - -Fragments to allocate: 7 12 out of 12 22 -sublist 2 ['H3-C2', 'H'] -list1 13 ['H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H15-C11-O10', 'H14-C7-O3', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 479 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H3-C2', 'H'] - -Fragments to allocate: 7 13 out of 12 22 -sublist 2 ['H14-C7-O3', 'H'] -list1 13 ['H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H15-C11-O10', 'H14-C7-O3', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H15-C11-O10', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 480 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (-1, -1, 0), (0, -1, -1), (0, -1, 1), (-1, 0, -1), (-1, 0, 1), (-1, -1, -1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H14-C7-O3', 'H'] - -Fragments to allocate: 7 14 out of 12 22 -sublist 2 ['H15-C11-O10', 'H'] -list1 13 ['H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H15-C11-O10', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 481 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'O', 'O', 'O', 'O', 'C', 'C', 'O', 'O', 'C', 'O', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H15-C11-O10', 'H'] - -Fragments to allocate: 7 15 out of 12 22 -sublist 2 ['H17-C11-O9', 'H'] -list1 13 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 482 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'O', 'C', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'H', 'C', 'H', 'O', 'H', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H17-C11-O9', 'H'] - -Fragments to allocate: 7 16 out of 12 22 -sublist 2 ['H21-C14-O6', 'H'] -list1 13 ['H17-C11-O9', 'H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H17-C11-O9', 'H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 483 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H21-C14-O6', 'H'] - -Fragments to allocate: 7 17 out of 12 22 -sublist 2 ['H16-C8-O5', 'H'] -list1 13 ['H21-C14-O6', 'H17-C11-O9', 'H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H17-C11-O9', 'H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 484 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C8-O5', 'H'] - -Fragments to allocate: 7 18 out of 12 22 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 485 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 7 19 out of 12 22 -sublist 2 ['H-O', 'H'] -list1 13 ['H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 486 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, -1), (1, 0, 0), (0, -1, -1), (1, -1, 0), (1, 0, -1), (1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H-O', 'H'] - -Fragments to allocate: 7 20 out of 12 22 -sublist 2 ['H3-C2', 'H'] -list1 13 ['H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H15-C11-O10', 'H14-C7-O3', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 487 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (-1, -1, 0), (0, -1, -1), (0, -1, 1), (-1, 0, -1), (-1, 0, 1), (-1, -1, -1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H3-C2', 'H'] - -Fragments to allocate: 7 21 out of 12 22 -sublist 2 ['H14-C7-O3', 'H'] -list1 13 ['H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H15-C11-O10', 'H14-C7-O3', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H15-C11-O10', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 488 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H14-C7-O3', 'H'] - -Fragments to allocate: 7 22 out of 12 22 -sublist 2 ['H15-C11-O10', 'H'] -list1 13 ['H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H15-C11-O10', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 489 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'O', 'O', 'O', 'O', 'C', 'C', 'O', 'O', 'C', 'O', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H15-C11-O10', 'H'] - -Fragments to allocate: 8 0 out of 12 22 -sublist 2 ['H24-C12-O6', 'H'] -list1 13 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 8 1 out of 12 22 -sublist 2 ['H24-C12-O6', 'H'] -list1 13 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 8 2 out of 12 22 -sublist 2 ['H24-C12-O6', 'H'] -list1 13 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 8 3 out of 12 22 -sublist 2 ['H24-C12-O6', 'H'] -list1 13 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 8 4 out of 12 22 -sublist 2 ['H24-C12-O6', 'H'] -list1 13 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 8 5 out of 12 22 -sublist 2 ['H24-C12-O6', 'H'] -list1 13 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 8 6 out of 12 22 -sublist 2 ['H24-C12-O6', 'H'] -list1 13 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 8 7 out of 12 22 -sublist 2 ['H24-C12-O6', 'H'] -list1 13 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 8 8 out of 12 22 -sublist 2 ['H24-C12-O6', 'H'] -list1 13 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 8 9 out of 12 22 -sublist 2 ['H24-C12-O6', 'H'] -list1 13 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 8 10 out of 12 22 -sublist 2 ['H24-C12-O6', 'H'] -list1 13 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 8 11 out of 12 22 -sublist 2 ['H24-C12-O6', 'H'] -list1 13 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 8 12 out of 12 22 -sublist 2 ['H24-C12-O6', 'H'] -list1 13 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 8 13 out of 12 22 -sublist 2 ['H24-C12-O6', 'H'] -list1 13 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 8 14 out of 12 22 -sublist 2 ['H24-C12-O6', 'H'] -list1 13 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 8 15 out of 12 22 -sublist 2 ['H24-C12-O6', 'H'] -list1 13 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 8 16 out of 12 22 -sublist 2 ['H24-C12-O6', 'H'] -list1 13 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 8 17 out of 12 22 -sublist 2 ['H24-C12-O6', 'H'] -list1 13 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 8 18 out of 12 22 -sublist 2 ['H24-C12-O6', 'H'] -list1 13 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 8 19 out of 12 22 -sublist 2 ['H24-C12-O6', 'H'] -list1 13 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 8 20 out of 12 22 -sublist 2 ['H24-C12-O6', 'H'] -list1 13 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 8 21 out of 12 22 -sublist 2 ['H24-C12-O6', 'H'] -list1 13 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 8 22 out of 12 22 -sublist 2 ['H24-C12-O6', 'H'] -list1 13 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 9 0 out of 12 22 -sublist 2 ['H21-C12-O9', 'H'] -list1 13 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 9 1 out of 12 22 -sublist 2 ['H21-C12-O9', 'H'] -list1 13 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 9 2 out of 12 22 -sublist 2 ['H21-C12-O9', 'H'] -list1 13 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 9 3 out of 12 22 -sublist 2 ['H21-C12-O9', 'H'] -list1 13 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 9 4 out of 12 22 -sublist 2 ['H21-C12-O9', 'H'] -list1 13 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 9 5 out of 12 22 -sublist 2 ['H21-C12-O9', 'H'] -list1 13 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 9 6 out of 12 22 -sublist 2 ['H21-C12-O9', 'H'] -list1 13 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 9 7 out of 12 22 -sublist 2 ['H21-C12-O9', 'H'] -list1 13 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 9 8 out of 12 22 -sublist 2 ['H21-C12-O9', 'H'] -list1 13 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 9 9 out of 12 22 -sublist 2 ['H21-C12-O9', 'H'] -list1 13 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 9 10 out of 12 22 -sublist 2 ['H21-C12-O9', 'H'] -list1 13 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 9 11 out of 12 22 -sublist 2 ['H21-C12-O9', 'H'] -list1 13 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 9 12 out of 12 22 -sublist 2 ['H21-C12-O9', 'H'] -list1 13 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 9 13 out of 12 22 -sublist 2 ['H21-C12-O9', 'H'] -list1 13 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 9 14 out of 12 22 -sublist 2 ['H21-C12-O9', 'H'] -list1 13 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 9 15 out of 12 22 -sublist 2 ['H21-C12-O9', 'H'] -list1 13 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 9 16 out of 12 22 -sublist 2 ['H21-C12-O9', 'H'] -list1 13 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 9 17 out of 12 22 -sublist 2 ['H21-C12-O9', 'H'] -list1 13 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 9 18 out of 12 22 -sublist 2 ['H21-C12-O9', 'H'] -list1 13 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 9 19 out of 12 22 -sublist 2 ['H21-C12-O9', 'H'] -list1 13 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 9 20 out of 12 22 -sublist 2 ['H21-C12-O9', 'H'] -list1 13 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 9 21 out of 12 22 -sublist 2 ['H21-C12-O9', 'H'] -list1 13 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 9 22 out of 12 22 -sublist 2 ['H21-C12-O9', 'H'] -list1 13 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 10 0 out of 12 22 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 10 1 out of 12 22 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 10 2 out of 12 22 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 10 3 out of 12 22 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 10 4 out of 12 22 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 10 5 out of 12 22 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 10 6 out of 12 22 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 10 7 out of 12 22 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 10 8 out of 12 22 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 10 9 out of 12 22 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 10 10 out of 12 22 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 10 11 out of 12 22 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 10 12 out of 12 22 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 10 13 out of 12 22 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 10 14 out of 12 22 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 10 15 out of 12 22 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 10 16 out of 12 22 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 10 17 out of 12 22 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 10 18 out of 12 22 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 10 19 out of 12 22 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 10 20 out of 12 22 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 10 21 out of 12 22 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 10 22 out of 12 22 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 11 0 out of 12 22 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 11 1 out of 12 22 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 11 2 out of 12 22 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 11 3 out of 12 22 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 11 4 out of 12 22 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 11 5 out of 12 22 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 11 6 out of 12 22 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 11 7 out of 12 22 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 11 8 out of 12 22 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 11 9 out of 12 22 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 11 10 out of 12 22 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 11 11 out of 12 22 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 11 12 out of 12 22 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 11 13 out of 12 22 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 11 14 out of 12 22 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 11 15 out of 12 22 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 11 16 out of 12 22 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 11 17 out of 12 22 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 11 18 out of 12 22 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 11 19 out of 12 22 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 11 20 out of 12 22 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 11 21 out of 12 22 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 11 22 out of 12 22 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 12 0 out of 12 22 -sublist 2 ['H23-C12-O7', 'H'] -list1 13 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 12 1 out of 12 22 -sublist 2 ['H23-C12-O7', 'H'] -list1 13 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 12 2 out of 12 22 -sublist 2 ['H23-C12-O7', 'H'] -list1 13 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 12 3 out of 12 22 -sublist 2 ['H23-C12-O7', 'H'] -list1 13 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 12 4 out of 12 22 -sublist 2 ['H23-C12-O7', 'H'] -list1 13 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 12 5 out of 12 22 -sublist 2 ['H23-C12-O7', 'H'] -list1 13 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 12 6 out of 12 22 -sublist 2 ['H23-C12-O7', 'H'] -list1 13 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 12 7 out of 12 22 -sublist 2 ['H23-C12-O7', 'H'] -list1 13 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 12 8 out of 12 22 -sublist 2 ['H23-C12-O7', 'H'] -list1 13 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 12 9 out of 12 22 -sublist 2 ['H23-C12-O7', 'H'] -list1 13 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 12 10 out of 12 22 -sublist 2 ['H23-C12-O7', 'H'] -list1 13 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 12 11 out of 12 22 -sublist 2 ['H23-C12-O7', 'H'] -list1 13 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 12 12 out of 12 22 -sublist 2 ['H23-C12-O7', 'H'] -list1 13 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 12 13 out of 12 22 -sublist 2 ['H23-C12-O7', 'H'] -list1 13 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 12 14 out of 12 22 -sublist 2 ['H23-C12-O7', 'H'] -list1 13 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 12 15 out of 12 22 -sublist 2 ['H23-C12-O7', 'H'] -list1 13 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 12 16 out of 12 22 -sublist 2 ['H23-C12-O7', 'H'] -list1 13 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 12 17 out of 12 22 -sublist 2 ['H23-C12-O7', 'H'] -list1 13 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 12 18 out of 12 22 -sublist 2 ['H23-C12-O7', 'H'] -list1 13 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 12 19 out of 12 22 -sublist 2 ['H23-C12-O7', 'H'] -list1 13 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 12 20 out of 12 22 -sublist 2 ['H23-C12-O7', 'H'] -list1 13 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 12 21 out of 12 22 -sublist 2 ['H23-C12-O7', 'H'] -list1 13 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 12 22 out of 12 22 -sublist 2 ['H23-C12-O7', 'H'] -list1 13 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - Increased Threshold_tmat. Now: 0.8 - Maxsize of the translation matrix is= 12 - -Fragments to allocate: 0 0 out of 12 22 -sublist 2 ['H15-C11-O10', 'H'] -list1 13 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 1 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'O', 'O', 'O', 'O', 'C', 'C', 'O', 'O', 'C', 'O', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H15-C11-O10', 'H'] - -Fragments to allocate: 0 1 out of 12 22 -sublist 2 ['H15-C11-O10', 'H'] -list1 13 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 2 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'O', 'O', 'O', 'O', 'C', 'C', 'O', 'O', 'C', 'O', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 1, 0), (-1, -1, 0), (0, -1, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, -1, -1), (-1, 1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H15-C11-O10', 'H'] - -Fragments to allocate: 0 2 out of 12 22 -sublist 2 ['H15-C11-O10', 'H'] -list1 13 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 3 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'O', 'O', 'O', 'O', 'C', 'C', 'O', 'O', 'C', 'O', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (-1, -1, 0), (0, -1, -1), (0, -1, 1), (-1, 0, -1), (-1, 0, 1), (-1, -1, -1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H15-C11-O10', 'H'] - -Fragments to allocate: 0 3 out of 12 22 -sublist 2 ['H15-C11-O10', 'H'] -list1 13 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 4 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'O', 'O', 'O', 'O', 'C', 'C', 'O', 'O', 'C', 'O', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, -1), (1, 0, 0), (0, -1, -1), (1, -1, 0), (1, 0, -1), (1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H15-C11-O10', 'H'] - -Fragments to allocate: 0 4 out of 12 22 -sublist 2 ['H15-C11-O10', 'H'] -list1 13 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 5 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'O', 'O', 'O', 'O', 'C', 'C', 'O', 'O', 'C', 'O', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 1, 0), (-1, -1, 0), (0, -1, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, -1, -1), (-1, 1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H15-C11-O10', 'H'] - -Fragments to allocate: 0 5 out of 12 22 -sublist 2 ['H15-C11-O10', 'H'] -list1 13 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 6 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'O', 'O', 'O', 'O', 'C', 'C', 'O', 'O', 'C', 'O', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H15-C11-O10', 'H'] - -Fragments to allocate: 0 6 out of 12 22 -sublist 2 ['H15-C11-O10', 'H'] -list1 13 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 7 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'O', 'O', 'O', 'O', 'C', 'C', 'O', 'O', 'C', 'O', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H15-C11-O10', 'H'] - -Fragments to allocate: 0 7 out of 12 22 -sublist 2 ['H15-C11-O10', 'H'] -list1 13 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 8 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'O', 'O', 'O', 'O', 'C', 'C', 'O', 'O', 'C', 'O', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H15-C11-O10', 'H'] - -Fragments to allocate: 0 8 out of 12 22 -sublist 2 ['H15-C11-O10', 'H'] -list1 13 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 9 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'O', 'O', 'O', 'O', 'C', 'C', 'O', 'O', 'C', 'O', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H15-C11-O10', 'H'] - -Fragments to allocate: 0 9 out of 12 22 -sublist 2 ['H15-C11-O10', 'H'] -list1 13 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 10 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'O', 'O', 'O', 'O', 'C', 'C', 'O', 'O', 'C', 'O', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (-1, -1, 0), (0, -1, -1), (0, -1, 1), (-1, 0, -1), (-1, 0, 1), (-1, -1, -1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H15-C11-O10', 'H'] - -Fragments to allocate: 0 10 out of 12 22 -sublist 2 ['H15-C11-O10', 'H'] -list1 13 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 11 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'O', 'O', 'O', 'O', 'C', 'C', 'O', 'O', 'C', 'O', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H15-C11-O10', 'H'] - -Fragments to allocate: 0 11 out of 12 22 -sublist 2 ['H15-C11-O10', 'H'] -list1 13 ['H15-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 23 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 12 with 13 and 23 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'O', 'O', 'O', 'O', 'C', 'C', 'O', 'O', 'C', 'O', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, -1), (1, 0, 0), (0, -1, -1), (1, -1, 0), (1, 0, -1), (1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 1 -SPILT_SPECIES: Laplacian lap=array([[-2, 0, 0, ..., 0, 0, 0], - [ 0, -2, 0, ..., 0, 0, 0], - [ 0, 0, -2, ..., 0, 0, 0], - ..., - [ 0, 0, 0, ..., -3, 1, 0], - [ 0, 0, 0, ..., 1, -3, 0], - [ 0, 0, 0, ..., 0, 0, -2]]) -SPILT_SPECIES: graph=<37x37 sparse matrix of type '' - with 129 stored elements in Compressed Sparse Row format> -COMBINE. received molecule: ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 37 - Formula = H16-C11-O10 - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES ---------------------------------------------------- - from merge fragments -COMBINE: Fragment H16-C11-O10 added to avglist -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 1 ['H16-C11-O10'] -SEQUENTIAL: badlist 0 [] - -Fragments to allocate: 0 1 out of 12 21 -sublist 2 ['H16-C11-O10', 'H'] -list1 13 ['H16-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 13 with 13 and 22 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'O', 'O', 'O', 'O', 'C', 'C', 'O', 'O', 'C', 'O', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (-1, -1, 0), (0, -1, -1), (0, -1, 1), (-1, 0, -1), (-1, 0, 1), (-1, -1, -1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C11-O10', 'H'] - -Fragments to allocate: 0 2 out of 12 21 -sublist 2 ['H16-C11-O10', 'H'] -list1 13 ['H16-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 14 with 13 and 22 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'O', 'O', 'O', 'O', 'C', 'C', 'O', 'O', 'C', 'O', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C11-O10', 'H'] - -Fragments to allocate: 0 3 out of 12 21 -sublist 2 ['H16-C11-O10', 'H'] -list1 13 ['H16-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 15 with 13 and 22 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'O', 'O', 'O', 'O', 'C', 'C', 'O', 'O', 'C', 'O', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C11-O10', 'H'] - -Fragments to allocate: 0 4 out of 12 21 -sublist 2 ['H16-C11-O10', 'H'] -list1 13 ['H16-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 16 with 13 and 22 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'O', 'O', 'O', 'O', 'C', 'C', 'O', 'O', 'C', 'O', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C11-O10', 'H'] - -Fragments to allocate: 0 5 out of 12 21 -sublist 2 ['H16-C11-O10', 'H'] -list1 13 ['H16-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 17 with 13 and 22 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'O', 'O', 'O', 'O', 'C', 'C', 'O', 'O', 'C', 'O', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C11-O10', 'H'] - -Fragments to allocate: 0 6 out of 12 21 -sublist 2 ['H16-C11-O10', 'H'] -list1 13 ['H16-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 18 with 13 and 22 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'O', 'O', 'O', 'O', 'C', 'C', 'O', 'O', 'C', 'O', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 1, 0), (-1, -1, 0), (0, -1, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, -1, -1), (-1, 1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C11-O10', 'H'] - -Fragments to allocate: 0 7 out of 12 21 -sublist 2 ['H16-C11-O10', 'H'] -list1 13 ['H16-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 19 with 13 and 22 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'O', 'O', 'O', 'O', 'C', 'C', 'O', 'O', 'C', 'O', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, -1), (1, 0, 0), (0, -1, -1), (1, -1, 0), (1, 0, -1), (1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C11-O10', 'H'] - -Fragments to allocate: 0 8 out of 12 21 -sublist 2 ['H16-C11-O10', 'H'] -list1 13 ['H16-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 20 with 13 and 22 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'O', 'O', 'O', 'O', 'C', 'C', 'O', 'O', 'C', 'O', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (-1, -1, 0), (0, -1, -1), (0, -1, 1), (-1, 0, -1), (-1, 0, 1), (-1, -1, -1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C11-O10', 'H'] - -Fragments to allocate: 0 9 out of 12 21 -sublist 2 ['H16-C11-O10', 'H'] -list1 13 ['H16-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 21 with 13 and 22 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'O', 'O', 'O', 'O', 'C', 'C', 'O', 'O', 'C', 'O', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 1, 0), (-1, -1, 0), (0, -1, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, -1, -1), (-1, 1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C11-O10', 'H'] - -Fragments to allocate: 0 10 out of 12 21 -sublist 2 ['H16-C11-O10', 'H'] -list1 13 ['H16-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 22 with 13 and 22 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'O', 'O', 'O', 'O', 'C', 'C', 'O', 'O', 'C', 'O', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C11-O10', 'H'] - -Fragments to allocate: 0 11 out of 12 21 -sublist 2 ['H16-C11-O10', 'H'] -list1 13 ['H16-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 23 with 13 and 22 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'O', 'O', 'O', 'O', 'C', 'C', 'O', 'O', 'C', 'O', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C11-O10', 'H'] - -Fragments to allocate: 0 12 out of 12 21 -sublist 2 ['H16-C11-O10', 'H'] -list1 13 ['H16-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 24 with 13 and 22 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'O', 'O', 'O', 'O', 'C', 'C', 'O', 'O', 'C', 'O', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, -1), (1, 0, 0), (0, -1, -1), (1, -1, 0), (1, 0, -1), (1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C11-O10', 'H'] - -Fragments to allocate: 0 13 out of 12 21 -sublist 2 ['H16-C11-O10', 'H'] -list1 13 ['H16-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 25 with 13 and 22 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'O', 'O', 'O', 'O', 'C', 'C', 'O', 'O', 'C', 'O', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, -1), (1, 0, 0), (0, -1, -1), (1, -1, 0), (1, 0, -1), (1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C11-O10', 'H'] - -Fragments to allocate: 0 14 out of 12 21 -sublist 2 ['H16-C11-O10', 'H'] -list1 13 ['H16-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 26 with 13 and 22 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'O', 'O', 'O', 'O', 'C', 'C', 'O', 'O', 'C', 'O', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (-1, -1, 0), (0, -1, -1), (0, -1, 1), (-1, 0, -1), (-1, 0, 1), (-1, -1, -1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C11-O10', 'H'] - -Fragments to allocate: 0 15 out of 12 21 -sublist 2 ['H16-C11-O10', 'H'] -list1 13 ['H16-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 27 with 13 and 22 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'O', 'O', 'O', 'O', 'C', 'C', 'O', 'O', 'C', 'O', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, 1), (1, 0, 0), (0, -1, 1), (1, -1, 0), (1, 0, 1), (1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C11-O10', 'H'] - -Fragments to allocate: 0 16 out of 12 21 -sublist 2 ['H16-C11-O10', 'H'] -list1 13 ['H16-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 22 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 28 with 13 and 22 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'O', 'O', 'O', 'O', 'C', 'C', 'O', 'O', 'C', 'O', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 1 -SPILT_SPECIES: Laplacian lap=array([[-2, 0, 0, ..., 0, 0, 0], - [ 0, -2, 0, ..., 0, 0, 0], - [ 0, 0, -2, ..., 0, 0, 0], - ..., - [ 0, 0, 0, ..., -3, 0, 0], - [ 0, 0, 0, ..., 0, -2, 0], - [ 0, 0, 0, ..., 0, 0, -1]]) -SPILT_SPECIES: graph=<38x38 sparse matrix of type '' - with 132 stored elements in Compressed Sparse Row format> -COMBINE. received molecule: ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 38 - Formula = H17-C11-O10 - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES ---------------------------------------------------- - from merge fragments -COMBINE: Fragment H17-C11-O10 added to avglist -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 1 ['H17-C11-O10'] -SEQUENTIAL: badlist 0 [] - -Fragments to allocate: 0 1 out of 12 20 -sublist 2 ['H17-C11-O10', 'H'] -list1 13 ['H17-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 29 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'O', 'O', 'O', 'O', 'C', 'C', 'O', 'O', 'C', 'O', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (-1, -1, 0), (0, -1, -1), (0, -1, 1), (-1, 0, -1), (-1, 0, 1), (-1, -1, -1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H17-C11-O10', 'H'] - -Fragments to allocate: 0 2 out of 12 20 -sublist 2 ['H17-C11-O10', 'H'] -list1 13 ['H17-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 30 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'O', 'O', 'O', 'O', 'C', 'C', 'O', 'O', 'C', 'O', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, -1), (1, 0, 0), (0, -1, -1), (1, -1, 0), (1, 0, -1), (1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H17-C11-O10', 'H'] - -Fragments to allocate: 0 3 out of 12 20 -sublist 2 ['H17-C11-O10', 'H'] -list1 13 ['H17-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 31 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'O', 'O', 'O', 'O', 'C', 'C', 'O', 'O', 'C', 'O', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, -1), (1, 0, 0), (0, -1, -1), (1, -1, 0), (1, 0, -1), (1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H17-C11-O10', 'H'] - -Fragments to allocate: 0 4 out of 12 20 -sublist 2 ['H17-C11-O10', 'H'] -list1 13 ['H17-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 32 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'O', 'O', 'O', 'O', 'C', 'C', 'O', 'O', 'C', 'O', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H17-C11-O10', 'H'] - -Fragments to allocate: 0 5 out of 12 20 -sublist 2 ['H17-C11-O10', 'H'] -list1 13 ['H17-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 33 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'O', 'O', 'O', 'O', 'C', 'C', 'O', 'O', 'C', 'O', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H17-C11-O10', 'H'] - -Fragments to allocate: 0 6 out of 12 20 -sublist 2 ['H17-C11-O10', 'H'] -list1 13 ['H17-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 34 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'O', 'O', 'O', 'O', 'C', 'C', 'O', 'O', 'C', 'O', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 1, 0), (-1, -1, 0), (0, -1, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, -1, -1), (-1, 1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H17-C11-O10', 'H'] - -Fragments to allocate: 0 7 out of 12 20 -sublist 2 ['H17-C11-O10', 'H'] -list1 13 ['H17-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 35 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'O', 'O', 'O', 'O', 'C', 'C', 'O', 'O', 'C', 'O', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (-1, -1, 0), (0, -1, -1), (0, -1, 1), (-1, 0, -1), (-1, 0, 1), (-1, -1, -1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H17-C11-O10', 'H'] - -Fragments to allocate: 0 8 out of 12 20 -sublist 2 ['H17-C11-O10', 'H'] -list1 13 ['H17-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 36 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'O', 'O', 'O', 'O', 'C', 'C', 'O', 'O', 'C', 'O', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, -1), (1, 0, 0), (0, -1, -1), (1, -1, 0), (1, 0, -1), (1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H17-C11-O10', 'H'] - -Fragments to allocate: 0 9 out of 12 20 -sublist 2 ['H17-C11-O10', 'H'] -list1 13 ['H17-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 37 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'O', 'O', 'O', 'O', 'C', 'C', 'O', 'O', 'C', 'O', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 1, 0), (-1, -1, 0), (0, -1, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, -1, -1), (-1, 1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H17-C11-O10', 'H'] - -Fragments to allocate: 0 10 out of 12 20 -sublist 2 ['H17-C11-O10', 'H'] -list1 13 ['H17-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 38 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'O', 'O', 'O', 'O', 'C', 'C', 'O', 'O', 'C', 'O', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H17-C11-O10', 'H'] - -Fragments to allocate: 0 11 out of 12 20 -sublist 2 ['H17-C11-O10', 'H'] -list1 13 ['H17-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 39 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'O', 'O', 'O', 'O', 'C', 'C', 'O', 'O', 'C', 'O', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H17-C11-O10', 'H'] - -Fragments to allocate: 0 12 out of 12 20 -sublist 2 ['H17-C11-O10', 'H'] -list1 13 ['H17-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 40 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'O', 'O', 'O', 'O', 'C', 'C', 'O', 'O', 'C', 'O', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H17-C11-O10', 'H'] - -Fragments to allocate: 0 13 out of 12 20 -sublist 2 ['H17-C11-O10', 'H'] -list1 13 ['H17-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 41 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'O', 'O', 'O', 'O', 'C', 'C', 'O', 'O', 'C', 'O', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H17-C11-O10', 'H'] - -Fragments to allocate: 0 14 out of 12 20 -sublist 2 ['H17-C11-O10', 'H'] -list1 13 ['H17-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 42 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'O', 'O', 'O', 'O', 'C', 'C', 'O', 'O', 'C', 'O', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (-1, -1, 0), (0, -1, -1), (0, -1, 1), (-1, 0, -1), (-1, 0, 1), (-1, -1, -1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H17-C11-O10', 'H'] - -Fragments to allocate: 0 15 out of 12 20 -sublist 2 ['H17-C11-O10', 'H'] -list1 13 ['H17-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 43 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'O', 'O', 'O', 'O', 'C', 'C', 'O', 'O', 'C', 'O', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H17-C11-O10', 'H'] - -Fragments to allocate: 0 16 out of 12 20 -sublist 2 ['H17-C11-O10', 'H'] -list1 13 ['H17-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 44 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'O', 'O', 'O', 'O', 'C', 'C', 'O', 'O', 'C', 'O', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, -1), (1, 0, 0), (0, -1, -1), (1, -1, 0), (1, 0, -1), (1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H17-C11-O10', 'H'] - -Fragments to allocate: 0 17 out of 12 20 -sublist 2 ['H17-C11-O10', 'H'] -list1 13 ['H17-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 45 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'O', 'O', 'O', 'O', 'C', 'C', 'O', 'O', 'C', 'O', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (-1, -1, 0), (0, -1, -1), (0, -1, 1), (-1, 0, -1), (-1, 0, 1), (-1, -1, -1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H17-C11-O10', 'H'] - -Fragments to allocate: 0 18 out of 12 20 -sublist 2 ['H17-C11-O10', 'H'] -list1 13 ['H17-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 46 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'O', 'O', 'O', 'O', 'C', 'C', 'O', 'O', 'C', 'O', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H17-C11-O10', 'H'] - -Fragments to allocate: 0 19 out of 12 20 -sublist 2 ['H17-C11-O10', 'H'] -list1 13 ['H17-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 47 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'O', 'O', 'O', 'O', 'C', 'C', 'O', 'O', 'C', 'O', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H17-C11-O10', 'H'] - -Fragments to allocate: 0 20 out of 12 20 -sublist 2 ['H17-C11-O10', 'H'] -list1 13 ['H17-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 48 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'O', 'O', 'O', 'O', 'C', 'C', 'O', 'O', 'C', 'O', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H17-C11-O10', 'H'] - -Fragments to allocate: 1 0 out of 12 20 -sublist 2 ['H14-C7-O3', 'H'] -list1 13 ['H17-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H17-C11-O10', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 49 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H14-C7-O3', 'H'] - -Fragments to allocate: 1 1 out of 12 20 -sublist 2 ['H17-C11-O10', 'H'] -list1 13 ['H14-C7-O3', 'H17-C11-O10', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 50 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'O', 'O', 'O', 'O', 'C', 'C', 'O', 'O', 'C', 'O', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H17-C11-O10', 'H'] - -Fragments to allocate: 1 2 out of 12 20 -sublist 2 ['H14-C7-O3', 'H'] -list1 13 ['H17-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H17-C11-O10', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 51 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H14-C7-O3', 'H'] - -Fragments to allocate: 1 3 out of 12 20 -sublist 2 ['H17-C11-O10', 'H'] -list1 13 ['H14-C7-O3', 'H17-C11-O10', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 52 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'O', 'O', 'O', 'O', 'C', 'C', 'O', 'O', 'C', 'O', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (-1, -1, 0), (0, -1, -1), (0, -1, 1), (-1, 0, -1), (-1, 0, 1), (-1, -1, -1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H17-C11-O10', 'H'] - -Fragments to allocate: 1 4 out of 12 20 -sublist 2 ['H14-C7-O3', 'H'] -list1 13 ['H17-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H17-C11-O10', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 53 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, -1), (1, 0, 0), (0, -1, -1), (1, -1, 0), (1, 0, -1), (1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H14-C7-O3', 'H'] - -Fragments to allocate: 1 5 out of 12 20 -sublist 2 ['H17-C11-O10', 'H'] -list1 13 ['H14-C7-O3', 'H17-C11-O10', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 54 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'O', 'O', 'O', 'O', 'C', 'C', 'O', 'O', 'C', 'O', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H17-C11-O10', 'H'] - -Fragments to allocate: 1 6 out of 12 20 -sublist 2 ['H14-C7-O3', 'H'] -list1 13 ['H17-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H17-C11-O10', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 55 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (-1, -1, 0), (0, -1, -1), (0, -1, 1), (-1, 0, -1), (-1, 0, 1), (-1, -1, -1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H14-C7-O3', 'H'] - -Fragments to allocate: 1 7 out of 12 20 -sublist 2 ['H17-C11-O10', 'H'] -list1 13 ['H14-C7-O3', 'H17-C11-O10', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 56 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'O', 'O', 'O', 'O', 'C', 'C', 'O', 'O', 'C', 'O', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H17-C11-O10', 'H'] - -Fragments to allocate: 1 8 out of 12 20 -sublist 2 ['H14-C7-O3', 'H'] -list1 13 ['H17-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H17-C11-O10', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 57 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H14-C7-O3', 'H'] - -Fragments to allocate: 1 9 out of 12 20 -sublist 2 ['H17-C11-O10', 'H'] -list1 13 ['H14-C7-O3', 'H17-C11-O10', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 58 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'O', 'O', 'O', 'O', 'C', 'C', 'O', 'O', 'C', 'O', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H17-C11-O10', 'H'] - -Fragments to allocate: 1 10 out of 12 20 -sublist 2 ['H14-C7-O3', 'H'] -list1 13 ['H17-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H17-C11-O10', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 59 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H14-C7-O3', 'H'] - -Fragments to allocate: 1 11 out of 12 20 -sublist 2 ['H17-C11-O10', 'H'] -list1 13 ['H14-C7-O3', 'H17-C11-O10', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 60 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'O', 'O', 'O', 'O', 'C', 'C', 'O', 'O', 'C', 'O', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 1, 0), (-1, -1, 0), (0, -1, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, -1, -1), (-1, 1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H17-C11-O10', 'H'] - -Fragments to allocate: 1 12 out of 12 20 -sublist 2 ['H14-C7-O3', 'H'] -list1 13 ['H17-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H17-C11-O10', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 61 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, -1), (1, 0, 0), (0, -1, -1), (1, -1, 0), (1, 0, -1), (1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H14-C7-O3', 'H'] - -Fragments to allocate: 1 13 out of 12 20 -sublist 2 ['H17-C11-O10', 'H'] -list1 13 ['H14-C7-O3', 'H17-C11-O10', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 62 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'O', 'O', 'O', 'O', 'C', 'C', 'O', 'O', 'C', 'O', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (-1, -1, 0), (0, -1, -1), (0, -1, 1), (-1, 0, -1), (-1, 0, 1), (-1, -1, -1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H17-C11-O10', 'H'] - -Fragments to allocate: 1 14 out of 12 20 -sublist 2 ['H14-C7-O3', 'H'] -list1 13 ['H17-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H17-C11-O10', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 63 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 1, 0), (-1, -1, 0), (0, -1, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, -1, -1), (-1, 1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H14-C7-O3', 'H'] - -Fragments to allocate: 1 15 out of 12 20 -sublist 2 ['H17-C11-O10', 'H'] -list1 13 ['H14-C7-O3', 'H17-C11-O10', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 64 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'O', 'O', 'O', 'O', 'C', 'C', 'O', 'O', 'C', 'O', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H17-C11-O10', 'H'] - -Fragments to allocate: 1 16 out of 12 20 -sublist 2 ['H14-C7-O3', 'H'] -list1 13 ['H17-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H17-C11-O10', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 65 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H14-C7-O3', 'H'] - -Fragments to allocate: 1 17 out of 12 20 -sublist 2 ['H17-C11-O10', 'H'] -list1 13 ['H14-C7-O3', 'H17-C11-O10', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 66 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'O', 'O', 'O', 'O', 'C', 'C', 'O', 'O', 'C', 'O', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, -1), (1, 0, 0), (0, -1, -1), (1, -1, 0), (1, 0, -1), (1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H17-C11-O10', 'H'] - -Fragments to allocate: 1 18 out of 12 20 -sublist 2 ['H14-C7-O3', 'H'] -list1 13 ['H17-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H17-C11-O10', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 67 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, -1), (1, 0, 0), (0, -1, -1), (1, -1, 0), (1, 0, -1), (1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H14-C7-O3', 'H'] - -Fragments to allocate: 1 19 out of 12 20 -sublist 2 ['H17-C11-O10', 'H'] -list1 13 ['H14-C7-O3', 'H17-C11-O10', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 68 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'O', 'O', 'O', 'O', 'C', 'C', 'O', 'O', 'C', 'O', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (-1, -1, 0), (0, -1, -1), (0, -1, 1), (-1, 0, -1), (-1, 0, 1), (-1, -1, -1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H17-C11-O10', 'H'] - -Fragments to allocate: 1 20 out of 12 20 -sublist 2 ['H14-C7-O3', 'H'] -list1 13 ['H17-C11-O10', 'H14-C7-O3', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H17-C11-O10', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 69 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, 1), (1, 0, 0), (0, -1, 1), (1, -1, 0), (1, 0, 1), (1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H14-C7-O3', 'H'] - -Fragments to allocate: 2 0 out of 12 20 -sublist 2 ['H3-C2', 'H'] -list1 13 ['H14-C7-O3', 'H17-C11-O10', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C7-O3', 'H17-C11-O10', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 70 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, 1), (1, 0, 0), (0, -1, 1), (1, -1, 0), (1, 0, 1), (1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H3-C2', 'H'] - -Fragments to allocate: 2 1 out of 12 20 -sublist 2 ['H17-C11-O10', 'H'] -list1 13 ['H3-C2', 'H14-C7-O3', 'H17-C11-O10', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H14-C7-O3', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 71 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'O', 'O', 'O', 'O', 'C', 'C', 'O', 'O', 'C', 'O', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (-1, -1, 0), (0, -1, -1), (0, -1, 1), (-1, 0, -1), (-1, 0, 1), (-1, -1, -1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H17-C11-O10', 'H'] - -Fragments to allocate: 2 2 out of 12 20 -sublist 2 ['H14-C7-O3', 'H'] -list1 13 ['H17-C11-O10', 'H3-C2', 'H14-C7-O3', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H17-C11-O10', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 72 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, -1), (1, 0, 0), (0, -1, -1), (1, -1, 0), (1, 0, -1), (1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H14-C7-O3', 'H'] - -Fragments to allocate: 2 3 out of 12 20 -sublist 2 ['H3-C2', 'H'] -list1 13 ['H14-C7-O3', 'H17-C11-O10', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C7-O3', 'H17-C11-O10', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 73 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, -1), (1, 0, 0), (0, -1, -1), (1, -1, 0), (1, 0, -1), (1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H3-C2', 'H'] - -Fragments to allocate: 2 4 out of 12 20 -sublist 2 ['H17-C11-O10', 'H'] -list1 13 ['H3-C2', 'H14-C7-O3', 'H17-C11-O10', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H14-C7-O3', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 74 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'O', 'O', 'O', 'O', 'C', 'C', 'O', 'O', 'C', 'O', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H17-C11-O10', 'H'] - -Fragments to allocate: 2 5 out of 12 20 -sublist 2 ['H14-C7-O3', 'H'] -list1 13 ['H17-C11-O10', 'H3-C2', 'H14-C7-O3', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H17-C11-O10', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 75 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H14-C7-O3', 'H'] - -Fragments to allocate: 2 6 out of 12 20 -sublist 2 ['H3-C2', 'H'] -list1 13 ['H14-C7-O3', 'H17-C11-O10', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C7-O3', 'H17-C11-O10', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 76 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 1, 0), (-1, -1, 0), (0, -1, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, -1, -1), (-1, 1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H3-C2', 'H'] - -Fragments to allocate: 2 7 out of 12 20 -sublist 2 ['H17-C11-O10', 'H'] -list1 13 ['H3-C2', 'H14-C7-O3', 'H17-C11-O10', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H14-C7-O3', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 77 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'O', 'O', 'O', 'O', 'C', 'C', 'O', 'O', 'C', 'O', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (-1, -1, 0), (0, -1, -1), (0, -1, 1), (-1, 0, -1), (-1, 0, 1), (-1, -1, -1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H17-C11-O10', 'H'] - -Fragments to allocate: 2 8 out of 12 20 -sublist 2 ['H14-C7-O3', 'H'] -list1 13 ['H17-C11-O10', 'H3-C2', 'H14-C7-O3', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H17-C11-O10', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 78 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, -1), (1, 0, 0), (0, -1, -1), (1, -1, 0), (1, 0, -1), (1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H14-C7-O3', 'H'] - -Fragments to allocate: 2 9 out of 12 20 -sublist 2 ['H3-C2', 'H'] -list1 13 ['H14-C7-O3', 'H17-C11-O10', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C7-O3', 'H17-C11-O10', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 79 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 1, 0), (-1, -1, 0), (0, -1, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, -1, -1), (-1, 1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H3-C2', 'H'] - -Fragments to allocate: 2 10 out of 12 20 -sublist 2 ['H17-C11-O10', 'H'] -list1 13 ['H3-C2', 'H14-C7-O3', 'H17-C11-O10', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H14-C7-O3', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 80 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'O', 'O', 'O', 'O', 'C', 'C', 'O', 'O', 'C', 'O', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H17-C11-O10', 'H'] - -Fragments to allocate: 2 11 out of 12 20 -sublist 2 ['H14-C7-O3', 'H'] -list1 13 ['H17-C11-O10', 'H3-C2', 'H14-C7-O3', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H17-C11-O10', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 81 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H14-C7-O3', 'H'] - -Fragments to allocate: 2 12 out of 12 20 -sublist 2 ['H3-C2', 'H'] -list1 13 ['H14-C7-O3', 'H17-C11-O10', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C7-O3', 'H17-C11-O10', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 82 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H3-C2', 'H'] - -Fragments to allocate: 2 13 out of 12 20 -sublist 2 ['H17-C11-O10', 'H'] -list1 13 ['H3-C2', 'H14-C7-O3', 'H17-C11-O10', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H14-C7-O3', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 83 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'O', 'O', 'O', 'O', 'C', 'C', 'O', 'O', 'C', 'O', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H17-C11-O10', 'H'] - -Fragments to allocate: 2 14 out of 12 20 -sublist 2 ['H14-C7-O3', 'H'] -list1 13 ['H17-C11-O10', 'H3-C2', 'H14-C7-O3', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H17-C11-O10', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 84 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (-1, -1, 0), (0, -1, -1), (0, -1, 1), (-1, 0, -1), (-1, 0, 1), (-1, -1, -1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H14-C7-O3', 'H'] - -Fragments to allocate: 2 15 out of 12 20 -sublist 2 ['H3-C2', 'H'] -list1 13 ['H14-C7-O3', 'H17-C11-O10', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C7-O3', 'H17-C11-O10', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 85 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H3-C2', 'H'] - -Fragments to allocate: 2 16 out of 12 20 -sublist 2 ['H17-C11-O10', 'H'] -list1 13 ['H3-C2', 'H14-C7-O3', 'H17-C11-O10', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H14-C7-O3', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 86 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'O', 'O', 'O', 'O', 'C', 'C', 'O', 'O', 'C', 'O', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, -1), (1, 0, 0), (0, -1, -1), (1, -1, 0), (1, 0, -1), (1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H17-C11-O10', 'H'] - -Fragments to allocate: 2 17 out of 12 20 -sublist 2 ['H14-C7-O3', 'H'] -list1 13 ['H17-C11-O10', 'H3-C2', 'H14-C7-O3', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H17-C11-O10', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 87 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (-1, -1, 0), (0, -1, -1), (0, -1, 1), (-1, 0, -1), (-1, 0, 1), (-1, -1, -1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H14-C7-O3', 'H'] - -Fragments to allocate: 2 18 out of 12 20 -sublist 2 ['H3-C2', 'H'] -list1 13 ['H14-C7-O3', 'H17-C11-O10', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C7-O3', 'H17-C11-O10', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 88 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H3-C2', 'H'] - -Fragments to allocate: 2 19 out of 12 20 -sublist 2 ['H17-C11-O10', 'H'] -list1 13 ['H3-C2', 'H14-C7-O3', 'H17-C11-O10', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H14-C7-O3', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 89 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'O', 'O', 'O', 'O', 'C', 'C', 'O', 'O', 'C', 'O', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H17-C11-O10', 'H'] - -Fragments to allocate: 2 20 out of 12 20 -sublist 2 ['H14-C7-O3', 'H'] -list1 13 ['H17-C11-O10', 'H3-C2', 'H14-C7-O3', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H17-C11-O10', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 90 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H14-C7-O3', 'H'] - -Fragments to allocate: 3 0 out of 12 20 -sublist 2 ['H-O', 'H'] -list1 13 ['H14-C7-O3', 'H17-C11-O10', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C7-O3', 'H17-C11-O10', 'H3-C2', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 91 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H-O', 'H'] - -Fragments to allocate: 3 1 out of 12 20 -sublist 2 ['H3-C2', 'H'] -list1 13 ['H-O', 'H14-C7-O3', 'H17-C11-O10', 'H3-C2', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H14-C7-O3', 'H17-C11-O10', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 92 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H3-C2', 'H'] - -Fragments to allocate: 3 2 out of 12 20 -sublist 2 ['H17-C11-O10', 'H'] -list1 13 ['H3-C2', 'H-O', 'H14-C7-O3', 'H17-C11-O10', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H-O', 'H14-C7-O3', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 93 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'O', 'O', 'O', 'O', 'C', 'C', 'O', 'O', 'C', 'O', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H17-C11-O10', 'H'] - -Fragments to allocate: 3 3 out of 12 20 -sublist 2 ['H14-C7-O3', 'H'] -list1 13 ['H17-C11-O10', 'H3-C2', 'H-O', 'H14-C7-O3', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H17-C11-O10', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 94 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (-1, -1, 0), (0, -1, -1), (0, -1, 1), (-1, 0, -1), (-1, 0, 1), (-1, -1, -1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H14-C7-O3', 'H'] - -Fragments to allocate: 3 4 out of 12 20 -sublist 2 ['H-O', 'H'] -list1 13 ['H14-C7-O3', 'H17-C11-O10', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C7-O3', 'H17-C11-O10', 'H3-C2', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 95 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, -1), (1, 0, 0), (0, -1, -1), (1, -1, 0), (1, 0, -1), (1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H-O', 'H'] - -Fragments to allocate: 3 5 out of 12 20 -sublist 2 ['H3-C2', 'H'] -list1 13 ['H-O', 'H14-C7-O3', 'H17-C11-O10', 'H3-C2', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H14-C7-O3', 'H17-C11-O10', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 96 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H3-C2', 'H'] - -Fragments to allocate: 3 6 out of 12 20 -sublist 2 ['H17-C11-O10', 'H'] -list1 13 ['H3-C2', 'H-O', 'H14-C7-O3', 'H17-C11-O10', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H-O', 'H14-C7-O3', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 97 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'O', 'O', 'O', 'O', 'C', 'C', 'O', 'O', 'C', 'O', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (-1, -1, 0), (0, -1, -1), (0, -1, 1), (-1, 0, -1), (-1, 0, 1), (-1, -1, -1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H17-C11-O10', 'H'] - -Fragments to allocate: 3 7 out of 12 20 -sublist 2 ['H14-C7-O3', 'H'] -list1 13 ['H17-C11-O10', 'H3-C2', 'H-O', 'H14-C7-O3', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H17-C11-O10', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 98 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H14-C7-O3', 'H'] - -Fragments to allocate: 3 8 out of 12 20 -sublist 2 ['H-O', 'H'] -list1 13 ['H14-C7-O3', 'H17-C11-O10', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C7-O3', 'H17-C11-O10', 'H3-C2', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 99 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H-O', 'H'] - -Fragments to allocate: 3 9 out of 12 20 -sublist 2 ['H3-C2', 'H'] -list1 13 ['H-O', 'H14-C7-O3', 'H17-C11-O10', 'H3-C2', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H14-C7-O3', 'H17-C11-O10', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 100 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H3-C2', 'H'] - -Fragments to allocate: 3 10 out of 12 20 -sublist 2 ['H17-C11-O10', 'H'] -list1 13 ['H3-C2', 'H-O', 'H14-C7-O3', 'H17-C11-O10', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H-O', 'H14-C7-O3', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 101 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'O', 'O', 'O', 'O', 'C', 'C', 'O', 'O', 'C', 'O', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H17-C11-O10', 'H'] - -Fragments to allocate: 3 11 out of 12 20 -sublist 2 ['H14-C7-O3', 'H'] -list1 13 ['H17-C11-O10', 'H3-C2', 'H-O', 'H14-C7-O3', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H17-C11-O10', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 102 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 1, 0), (-1, -1, 0), (0, -1, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, -1, -1), (-1, 1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H14-C7-O3', 'H'] - -Fragments to allocate: 3 12 out of 12 20 -sublist 2 ['H-O', 'H'] -list1 13 ['H14-C7-O3', 'H17-C11-O10', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C7-O3', 'H17-C11-O10', 'H3-C2', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 103 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, -1), (1, 0, 0), (0, -1, -1), (1, -1, 0), (1, 0, -1), (1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H-O', 'H'] - -Fragments to allocate: 3 13 out of 12 20 -sublist 2 ['H3-C2', 'H'] -list1 13 ['H-O', 'H14-C7-O3', 'H17-C11-O10', 'H3-C2', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H14-C7-O3', 'H17-C11-O10', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 104 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (-1, -1, 0), (0, -1, -1), (0, -1, 1), (-1, 0, -1), (-1, 0, 1), (-1, -1, -1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H3-C2', 'H'] - -Fragments to allocate: 3 14 out of 12 20 -sublist 2 ['H17-C11-O10', 'H'] -list1 13 ['H3-C2', 'H-O', 'H14-C7-O3', 'H17-C11-O10', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H-O', 'H14-C7-O3', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 105 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'O', 'O', 'O', 'O', 'C', 'C', 'O', 'O', 'C', 'O', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 1, 0), (-1, -1, 0), (0, -1, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, -1, -1), (-1, 1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H17-C11-O10', 'H'] - -Fragments to allocate: 3 15 out of 12 20 -sublist 2 ['H14-C7-O3', 'H'] -list1 13 ['H17-C11-O10', 'H3-C2', 'H-O', 'H14-C7-O3', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H17-C11-O10', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 106 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H14-C7-O3', 'H'] - -Fragments to allocate: 3 16 out of 12 20 -sublist 2 ['H-O', 'H'] -list1 13 ['H14-C7-O3', 'H17-C11-O10', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C7-O3', 'H17-C11-O10', 'H3-C2', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 107 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H-O', 'H'] - -Fragments to allocate: 3 17 out of 12 20 -sublist 2 ['H3-C2', 'H'] -list1 13 ['H-O', 'H14-C7-O3', 'H17-C11-O10', 'H3-C2', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H14-C7-O3', 'H17-C11-O10', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 108 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, -1), (1, 0, 0), (0, -1, -1), (1, -1, 0), (1, 0, -1), (1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H3-C2', 'H'] - -Fragments to allocate: 3 18 out of 12 20 -sublist 2 ['H17-C11-O10', 'H'] -list1 13 ['H3-C2', 'H-O', 'H14-C7-O3', 'H17-C11-O10', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H-O', 'H14-C7-O3', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 109 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'O', 'O', 'O', 'O', 'C', 'C', 'O', 'O', 'C', 'O', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, -1), (1, 0, 0), (0, -1, -1), (1, -1, 0), (1, 0, -1), (1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H17-C11-O10', 'H'] - -Fragments to allocate: 3 19 out of 12 20 -sublist 2 ['H14-C7-O3', 'H'] -list1 13 ['H17-C11-O10', 'H3-C2', 'H-O', 'H14-C7-O3', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H17-C11-O10', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 110 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (-1, -1, 0), (0, -1, -1), (0, -1, 1), (-1, 0, -1), (-1, 0, 1), (-1, -1, -1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H14-C7-O3', 'H'] - -Fragments to allocate: 3 20 out of 12 20 -sublist 2 ['H-O', 'H'] -list1 13 ['H14-C7-O3', 'H17-C11-O10', 'H3-C2', 'H-O', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C7-O3', 'H17-C11-O10', 'H3-C2', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 111 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, 1), (1, 0, 0), (0, -1, 1), (1, -1, 0), (1, 0, 1), (1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H-O', 'H'] - -Fragments to allocate: 4 0 out of 12 20 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H-O', 'H14-C7-O3', 'H17-C11-O10', 'H3-C2', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H14-C7-O3', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 112 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, 1), (1, 0, 0), (0, -1, 1), (1, -1, 0), (1, 0, 1), (1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 4 1 out of 12 20 -sublist 2 ['H3-C2', 'H'] -list1 13 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H17-C11-O10', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 113 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (-1, -1, 0), (0, -1, -1), (0, -1, 1), (-1, 0, -1), (-1, 0, 1), (-1, -1, -1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H3-C2', 'H'] - -Fragments to allocate: 4 2 out of 12 20 -sublist 2 ['H17-C11-O10', 'H'] -list1 13 ['H3-C2', 'H16-C9-O5', 'H-O', 'H14-C7-O3', 'H17-C11-O10', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H16-C9-O5', 'H-O', 'H14-C7-O3', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 114 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'O', 'O', 'O', 'O', 'C', 'C', 'O', 'O', 'C', 'O', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, -1), (1, 0, 0), (0, -1, -1), (1, -1, 0), (1, 0, -1), (1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H17-C11-O10', 'H'] - -Fragments to allocate: 4 3 out of 12 20 -sublist 2 ['H14-C7-O3', 'H'] -list1 13 ['H17-C11-O10', 'H3-C2', 'H16-C9-O5', 'H-O', 'H14-C7-O3', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H17-C11-O10', 'H3-C2', 'H16-C9-O5', 'H-O', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 115 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, -1), (1, 0, 0), (0, -1, -1), (1, -1, 0), (1, 0, -1), (1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H14-C7-O3', 'H'] - -Fragments to allocate: 4 4 out of 12 20 -sublist 2 ['H-O', 'H'] -list1 13 ['H14-C7-O3', 'H17-C11-O10', 'H3-C2', 'H16-C9-O5', 'H-O', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C7-O3', 'H17-C11-O10', 'H3-C2', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 116 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H-O', 'H'] - -Fragments to allocate: 4 5 out of 12 20 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H-O', 'H14-C7-O3', 'H17-C11-O10', 'H3-C2', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H14-C7-O3', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 117 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 4 6 out of 12 20 -sublist 2 ['H3-C2', 'H'] -list1 13 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H17-C11-O10', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 118 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 1, 0), (-1, -1, 0), (0, -1, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, -1, -1), (-1, 1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H3-C2', 'H'] - -Fragments to allocate: 4 7 out of 12 20 -sublist 2 ['H17-C11-O10', 'H'] -list1 13 ['H3-C2', 'H16-C9-O5', 'H-O', 'H14-C7-O3', 'H17-C11-O10', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H16-C9-O5', 'H-O', 'H14-C7-O3', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 119 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'O', 'O', 'O', 'O', 'C', 'C', 'O', 'O', 'C', 'O', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (-1, -1, 0), (0, -1, -1), (0, -1, 1), (-1, 0, -1), (-1, 0, 1), (-1, -1, -1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H17-C11-O10', 'H'] - -Fragments to allocate: 4 8 out of 12 20 -sublist 2 ['H14-C7-O3', 'H'] -list1 13 ['H17-C11-O10', 'H3-C2', 'H16-C9-O5', 'H-O', 'H14-C7-O3', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H17-C11-O10', 'H3-C2', 'H16-C9-O5', 'H-O', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 120 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, -1), (1, 0, 0), (0, -1, -1), (1, -1, 0), (1, 0, -1), (1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H14-C7-O3', 'H'] - -Fragments to allocate: 4 9 out of 12 20 -sublist 2 ['H-O', 'H'] -list1 13 ['H14-C7-O3', 'H17-C11-O10', 'H3-C2', 'H16-C9-O5', 'H-O', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C7-O3', 'H17-C11-O10', 'H3-C2', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 121 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 1, 0), (-1, -1, 0), (0, -1, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, -1, -1), (-1, 1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H-O', 'H'] - -Fragments to allocate: 4 10 out of 12 20 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H-O', 'H14-C7-O3', 'H17-C11-O10', 'H3-C2', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H14-C7-O3', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 122 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 4 11 out of 12 20 -sublist 2 ['H3-C2', 'H'] -list1 13 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H17-C11-O10', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 123 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H3-C2', 'H'] - -Fragments to allocate: 4 12 out of 12 20 -sublist 2 ['H17-C11-O10', 'H'] -list1 13 ['H3-C2', 'H16-C9-O5', 'H-O', 'H14-C7-O3', 'H17-C11-O10', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H16-C9-O5', 'H-O', 'H14-C7-O3', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 124 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'O', 'O', 'O', 'O', 'C', 'C', 'O', 'O', 'C', 'O', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H17-C11-O10', 'H'] - -Fragments to allocate: 4 13 out of 12 20 -sublist 2 ['H14-C7-O3', 'H'] -list1 13 ['H17-C11-O10', 'H3-C2', 'H16-C9-O5', 'H-O', 'H14-C7-O3', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H17-C11-O10', 'H3-C2', 'H16-C9-O5', 'H-O', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 125 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H14-C7-O3', 'H'] - -Fragments to allocate: 4 14 out of 12 20 -sublist 2 ['H-O', 'H'] -list1 13 ['H14-C7-O3', 'H17-C11-O10', 'H3-C2', 'H16-C9-O5', 'H-O', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C7-O3', 'H17-C11-O10', 'H3-C2', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 126 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (-1, -1, 0), (0, -1, -1), (0, -1, 1), (-1, 0, -1), (-1, 0, 1), (-1, -1, -1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H-O', 'H'] - -Fragments to allocate: 4 15 out of 12 20 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H-O', 'H14-C7-O3', 'H17-C11-O10', 'H3-C2', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H14-C7-O3', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 127 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 4 16 out of 12 20 -sublist 2 ['H3-C2', 'H'] -list1 13 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H17-C11-O10', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 128 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, -1), (1, 0, 0), (0, -1, -1), (1, -1, 0), (1, 0, -1), (1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H3-C2', 'H'] - -Fragments to allocate: 4 17 out of 12 20 -sublist 2 ['H17-C11-O10', 'H'] -list1 13 ['H3-C2', 'H16-C9-O5', 'H-O', 'H14-C7-O3', 'H17-C11-O10', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H16-C9-O5', 'H-O', 'H14-C7-O3', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 129 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'O', 'O', 'O', 'O', 'C', 'C', 'O', 'O', 'C', 'O', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (-1, -1, 0), (0, -1, -1), (0, -1, 1), (-1, 0, -1), (-1, 0, 1), (-1, -1, -1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H17-C11-O10', 'H'] - -Fragments to allocate: 4 18 out of 12 20 -sublist 2 ['H14-C7-O3', 'H'] -list1 13 ['H17-C11-O10', 'H3-C2', 'H16-C9-O5', 'H-O', 'H14-C7-O3', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H17-C11-O10', 'H3-C2', 'H16-C9-O5', 'H-O', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 130 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H14-C7-O3', 'H'] - -Fragments to allocate: 4 19 out of 12 20 -sublist 2 ['H-O', 'H'] -list1 13 ['H14-C7-O3', 'H17-C11-O10', 'H3-C2', 'H16-C9-O5', 'H-O', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C7-O3', 'H17-C11-O10', 'H3-C2', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 131 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H-O', 'H'] - -Fragments to allocate: 4 20 out of 12 20 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H-O', 'H14-C7-O3', 'H17-C11-O10', 'H3-C2', 'H16-C9-O5', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H14-C7-O3', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 132 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 5 0 out of 12 20 -sublist 2 ['H16-C8-O5', 'H'] -list1 13 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H17-C11-O10', 'H3-C2', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 133 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C8-O5', 'H'] - -Fragments to allocate: 5 1 out of 12 20 -sublist 2 ['H3-C2', 'H'] -list1 13 ['H16-C8-O5', 'H16-C9-O5', 'H-O', 'H14-C7-O3', 'H17-C11-O10', 'H3-C2', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C8-O5', 'H16-C9-O5', 'H-O', 'H14-C7-O3', 'H17-C11-O10', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 134 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H3-C2', 'H'] - -Fragments to allocate: 5 2 out of 12 20 -sublist 2 ['H17-C11-O10', 'H'] -list1 13 ['H3-C2', 'H16-C8-O5', 'H16-C9-O5', 'H-O', 'H14-C7-O3', 'H17-C11-O10', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H16-C8-O5', 'H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 135 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'O', 'O', 'O', 'O', 'C', 'C', 'O', 'O', 'C', 'O', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H17-C11-O10', 'H'] - -Fragments to allocate: 5 3 out of 12 20 -sublist 2 ['H14-C7-O3', 'H'] -list1 13 ['H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H16-C9-O5', 'H-O', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 136 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (-1, -1, 0), (0, -1, -1), (0, -1, 1), (-1, 0, -1), (-1, 0, 1), (-1, -1, -1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H14-C7-O3', 'H'] - -Fragments to allocate: 5 4 out of 12 20 -sublist 2 ['H-O', 'H'] -list1 13 ['H14-C7-O3', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H16-C9-O5', 'H-O', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C7-O3', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H16-C9-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 137 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, -1), (1, 0, 0), (0, -1, -1), (1, -1, 0), (1, 0, -1), (1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H-O', 'H'] - -Fragments to allocate: 5 5 out of 12 20 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H-O', 'H14-C7-O3', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H16-C9-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H14-C7-O3', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 138 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 5 6 out of 12 20 -sublist 2 ['H16-C8-O5', 'H'] -list1 13 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H17-C11-O10', 'H3-C2', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 139 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (-1, -1, 0), (0, -1, -1), (0, -1, 1), (-1, 0, -1), (-1, 0, 1), (-1, -1, -1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C8-O5', 'H'] - -Fragments to allocate: 5 7 out of 12 20 -sublist 2 ['H3-C2', 'H'] -list1 13 ['H16-C8-O5', 'H16-C9-O5', 'H-O', 'H14-C7-O3', 'H17-C11-O10', 'H3-C2', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C8-O5', 'H16-C9-O5', 'H-O', 'H14-C7-O3', 'H17-C11-O10', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 140 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H3-C2', 'H'] - -Fragments to allocate: 5 8 out of 12 20 -sublist 2 ['H17-C11-O10', 'H'] -list1 13 ['H3-C2', 'H16-C8-O5', 'H16-C9-O5', 'H-O', 'H14-C7-O3', 'H17-C11-O10', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H16-C8-O5', 'H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 141 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'O', 'O', 'O', 'O', 'C', 'C', 'O', 'O', 'C', 'O', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H17-C11-O10', 'H'] - -Fragments to allocate: 5 9 out of 12 20 -sublist 2 ['H14-C7-O3', 'H'] -list1 13 ['H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H16-C9-O5', 'H-O', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 142 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H14-C7-O3', 'H'] - -Fragments to allocate: 5 10 out of 12 20 -sublist 2 ['H-O', 'H'] -list1 13 ['H14-C7-O3', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H16-C9-O5', 'H-O', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C7-O3', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H16-C9-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 143 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H-O', 'H'] - -Fragments to allocate: 5 11 out of 12 20 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H-O', 'H14-C7-O3', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H16-C9-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H14-C7-O3', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 144 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 1, 0), (-1, -1, 0), (0, -1, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, -1, -1), (-1, 1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 5 12 out of 12 20 -sublist 2 ['H16-C8-O5', 'H'] -list1 13 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H17-C11-O10', 'H3-C2', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 145 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, -1), (1, 0, 0), (0, -1, -1), (1, -1, 0), (1, 0, -1), (1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C8-O5', 'H'] - -Fragments to allocate: 5 13 out of 12 20 -sublist 2 ['H3-C2', 'H'] -list1 13 ['H16-C8-O5', 'H16-C9-O5', 'H-O', 'H14-C7-O3', 'H17-C11-O10', 'H3-C2', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C8-O5', 'H16-C9-O5', 'H-O', 'H14-C7-O3', 'H17-C11-O10', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 146 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (-1, -1, 0), (0, -1, -1), (0, -1, 1), (-1, 0, -1), (-1, 0, 1), (-1, -1, -1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H3-C2', 'H'] - -Fragments to allocate: 5 14 out of 12 20 -sublist 2 ['H17-C11-O10', 'H'] -list1 13 ['H3-C2', 'H16-C8-O5', 'H16-C9-O5', 'H-O', 'H14-C7-O3', 'H17-C11-O10', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H16-C8-O5', 'H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 147 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'O', 'O', 'O', 'O', 'C', 'C', 'O', 'O', 'C', 'O', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 1, 0), (-1, -1, 0), (0, -1, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, -1, -1), (-1, 1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H17-C11-O10', 'H'] - -Fragments to allocate: 5 15 out of 12 20 -sublist 2 ['H14-C7-O3', 'H'] -list1 13 ['H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H16-C9-O5', 'H-O', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 148 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H14-C7-O3', 'H'] - -Fragments to allocate: 5 16 out of 12 20 -sublist 2 ['H-O', 'H'] -list1 13 ['H14-C7-O3', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H16-C9-O5', 'H-O', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C7-O3', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H16-C9-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 149 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H-O', 'H'] - -Fragments to allocate: 5 17 out of 12 20 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H-O', 'H14-C7-O3', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H16-C9-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H14-C7-O3', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 150 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, -1), (1, 0, 0), (0, -1, -1), (1, -1, 0), (1, 0, -1), (1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 5 18 out of 12 20 -sublist 2 ['H16-C8-O5', 'H'] -list1 13 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H17-C11-O10', 'H3-C2', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 151 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, -1), (1, 0, 0), (0, -1, -1), (1, -1, 0), (1, 0, -1), (1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C8-O5', 'H'] - -Fragments to allocate: 5 19 out of 12 20 -sublist 2 ['H3-C2', 'H'] -list1 13 ['H16-C8-O5', 'H16-C9-O5', 'H-O', 'H14-C7-O3', 'H17-C11-O10', 'H3-C2', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C8-O5', 'H16-C9-O5', 'H-O', 'H14-C7-O3', 'H17-C11-O10', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 152 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (-1, -1, 0), (0, -1, -1), (0, -1, 1), (-1, 0, -1), (-1, 0, 1), (-1, -1, -1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H3-C2', 'H'] - -Fragments to allocate: 5 20 out of 12 20 -sublist 2 ['H17-C11-O10', 'H'] -list1 13 ['H3-C2', 'H16-C8-O5', 'H16-C9-O5', 'H-O', 'H14-C7-O3', 'H17-C11-O10', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H16-C8-O5', 'H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 153 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'O', 'O', 'O', 'O', 'C', 'C', 'O', 'O', 'C', 'O', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, 1), (1, 0, 0), (0, -1, 1), (1, -1, 0), (1, 0, 1), (1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H17-C11-O10', 'H'] - -Fragments to allocate: 6 0 out of 12 20 -sublist 2 ['H21-C14-O6', 'H'] -list1 13 ['H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H16-C9-O5', 'H-O', 'H14-C7-O3', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 154 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, 1), (1, 0, 0), (0, -1, 1), (1, -1, 0), (1, 0, 1), (1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H21-C14-O6', 'H'] - -Fragments to allocate: 6 1 out of 12 20 -sublist 2 ['H14-C7-O3', 'H'] -list1 13 ['H21-C14-O6', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H16-C9-O5', 'H-O', 'H14-C7-O3', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H16-C9-O5', 'H-O', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 155 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (-1, -1, 0), (0, -1, -1), (0, -1, 1), (-1, 0, -1), (-1, 0, 1), (-1, -1, -1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H14-C7-O3', 'H'] - -Fragments to allocate: 6 2 out of 12 20 -sublist 2 ['H-O', 'H'] -list1 13 ['H14-C7-O3', 'H21-C14-O6', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H16-C9-O5', 'H-O', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C7-O3', 'H21-C14-O6', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H16-C9-O5', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 156 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, -1), (1, 0, 0), (0, -1, -1), (1, -1, 0), (1, 0, -1), (1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H-O', 'H'] - -Fragments to allocate: 6 3 out of 12 20 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H16-C9-O5', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 157 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, -1), (1, 0, 0), (0, -1, -1), (1, -1, 0), (1, 0, -1), (1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 6 4 out of 12 20 -sublist 2 ['H16-C8-O5', 'H'] -list1 13 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O10', 'H3-C2', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 158 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C8-O5', 'H'] - -Fragments to allocate: 6 5 out of 12 20 -sublist 2 ['H3-C2', 'H'] -list1 13 ['H16-C8-O5', 'H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O10', 'H3-C2', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C8-O5', 'H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O10', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 159 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H3-C2', 'H'] - -Fragments to allocate: 6 6 out of 12 20 -sublist 2 ['H17-C11-O10', 'H'] -list1 13 ['H3-C2', 'H16-C8-O5', 'H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O10', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H16-C8-O5', 'H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 160 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'O', 'O', 'O', 'O', 'C', 'C', 'O', 'O', 'C', 'O', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 1, 0), (-1, -1, 0), (0, -1, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, -1, -1), (-1, 1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H17-C11-O10', 'H'] - -Fragments to allocate: 6 7 out of 12 20 -sublist 2 ['H21-C14-O6', 'H'] -list1 13 ['H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H16-C9-O5', 'H-O', 'H14-C7-O3', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 161 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (-1, -1, 0), (0, -1, -1), (0, -1, 1), (-1, 0, -1), (-1, 0, 1), (-1, -1, -1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H21-C14-O6', 'H'] - -Fragments to allocate: 6 8 out of 12 20 -sublist 2 ['H14-C7-O3', 'H'] -list1 13 ['H21-C14-O6', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H16-C9-O5', 'H-O', 'H14-C7-O3', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H16-C9-O5', 'H-O', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 162 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, -1), (1, 0, 0), (0, -1, -1), (1, -1, 0), (1, 0, -1), (1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H14-C7-O3', 'H'] - -Fragments to allocate: 6 9 out of 12 20 -sublist 2 ['H-O', 'H'] -list1 13 ['H14-C7-O3', 'H21-C14-O6', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H16-C9-O5', 'H-O', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C7-O3', 'H21-C14-O6', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H16-C9-O5', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 163 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 1, 0), (-1, -1, 0), (0, -1, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, -1, -1), (-1, 1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H-O', 'H'] - -Fragments to allocate: 6 10 out of 12 20 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H16-C9-O5', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 164 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 6 11 out of 12 20 -sublist 2 ['H16-C8-O5', 'H'] -list1 13 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O10', 'H3-C2', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 165 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C8-O5', 'H'] - -Fragments to allocate: 6 12 out of 12 20 -sublist 2 ['H3-C2', 'H'] -list1 13 ['H16-C8-O5', 'H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O10', 'H3-C2', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C8-O5', 'H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O10', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 166 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H3-C2', 'H'] - -Fragments to allocate: 6 13 out of 12 20 -sublist 2 ['H17-C11-O10', 'H'] -list1 13 ['H3-C2', 'H16-C8-O5', 'H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O10', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H16-C8-O5', 'H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 167 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'O', 'O', 'O', 'O', 'C', 'C', 'O', 'O', 'C', 'O', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H17-C11-O10', 'H'] - -Fragments to allocate: 6 14 out of 12 20 -sublist 2 ['H21-C14-O6', 'H'] -list1 13 ['H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H16-C9-O5', 'H-O', 'H14-C7-O3', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 168 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (-1, -1, 0), (0, -1, -1), (0, -1, 1), (-1, 0, -1), (-1, 0, 1), (-1, -1, -1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H21-C14-O6', 'H'] - -Fragments to allocate: 6 15 out of 12 20 -sublist 2 ['H14-C7-O3', 'H'] -list1 13 ['H21-C14-O6', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H16-C9-O5', 'H-O', 'H14-C7-O3', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H16-C9-O5', 'H-O', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 169 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H14-C7-O3', 'H'] - -Fragments to allocate: 6 16 out of 12 20 -sublist 2 ['H-O', 'H'] -list1 13 ['H14-C7-O3', 'H21-C14-O6', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H16-C9-O5', 'H-O', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C7-O3', 'H21-C14-O6', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H16-C9-O5', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 170 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, -1), (1, 0, 0), (0, -1, -1), (1, -1, 0), (1, 0, -1), (1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H-O', 'H'] - -Fragments to allocate: 6 17 out of 12 20 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H16-C9-O5', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 171 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (-1, -1, 0), (0, -1, -1), (0, -1, 1), (-1, 0, -1), (-1, 0, 1), (-1, -1, -1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 6 18 out of 12 20 -sublist 2 ['H16-C8-O5', 'H'] -list1 13 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O10', 'H3-C2', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 172 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C8-O5', 'H'] - -Fragments to allocate: 6 19 out of 12 20 -sublist 2 ['H3-C2', 'H'] -list1 13 ['H16-C8-O5', 'H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O10', 'H3-C2', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C8-O5', 'H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O10', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 173 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H3-C2', 'H'] - -Fragments to allocate: 6 20 out of 12 20 -sublist 2 ['H17-C11-O10', 'H'] -list1 13 ['H3-C2', 'H16-C8-O5', 'H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O10', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H16-C8-O5', 'H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 174 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'O', 'O', 'O', 'O', 'C', 'C', 'O', 'O', 'C', 'O', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H17-C11-O10', 'H'] - -Fragments to allocate: 7 0 out of 12 20 -sublist 2 ['H17-C11-O9', 'H'] -list1 13 ['H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 175 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'O', 'C', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'H', 'C', 'H', 'O', 'H', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H17-C11-O9', 'H'] - -Fragments to allocate: 7 1 out of 12 20 -sublist 2 ['H21-C14-O6', 'H'] -list1 13 ['H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H16-C9-O5', 'H-O', 'H14-C7-O3', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 176 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H21-C14-O6', 'H'] - -Fragments to allocate: 7 2 out of 12 20 -sublist 2 ['H14-C7-O3', 'H'] -list1 13 ['H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H16-C9-O5', 'H-O', 'H14-C7-O3', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H16-C9-O5', 'H-O', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 177 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H14-C7-O3', 'H'] - -Fragments to allocate: 7 3 out of 12 20 -sublist 2 ['H-O', 'H'] -list1 13 ['H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H16-C9-O5', 'H-O', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H16-C9-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 178 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (-1, -1, 0), (0, -1, -1), (0, -1, 1), (-1, 0, -1), (-1, 0, 1), (-1, -1, -1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H-O', 'H'] - -Fragments to allocate: 7 4 out of 12 20 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H16-C9-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 179 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, -1), (1, 0, 0), (0, -1, -1), (1, -1, 0), (1, 0, -1), (1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 7 5 out of 12 20 -sublist 2 ['H16-C8-O5', 'H'] -list1 13 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 180 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C8-O5', 'H'] - -Fragments to allocate: 7 6 out of 12 20 -sublist 2 ['H3-C2', 'H'] -list1 13 ['H16-C8-O5', 'H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C8-O5', 'H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 181 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (-1, -1, 0), (0, -1, -1), (0, -1, 1), (-1, 0, -1), (-1, 0, 1), (-1, -1, -1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H3-C2', 'H'] - -Fragments to allocate: 7 7 out of 12 20 -sublist 2 ['H17-C11-O10', 'H'] -list1 13 ['H3-C2', 'H16-C8-O5', 'H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H16-C8-O5', 'H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 182 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'O', 'O', 'O', 'O', 'C', 'C', 'O', 'O', 'C', 'O', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H17-C11-O10', 'H'] - -Fragments to allocate: 7 8 out of 12 20 -sublist 2 ['H17-C11-O9', 'H'] -list1 13 ['H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 183 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'O', 'C', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'H', 'C', 'H', 'O', 'H', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H17-C11-O9', 'H'] - -Fragments to allocate: 7 9 out of 12 20 -sublist 2 ['H21-C14-O6', 'H'] -list1 13 ['H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H16-C9-O5', 'H-O', 'H14-C7-O3', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 184 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H21-C14-O6', 'H'] - -Fragments to allocate: 7 10 out of 12 20 -sublist 2 ['H14-C7-O3', 'H'] -list1 13 ['H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H16-C9-O5', 'H-O', 'H14-C7-O3', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H16-C9-O5', 'H-O', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 185 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H14-C7-O3', 'H'] - -Fragments to allocate: 7 11 out of 12 20 -sublist 2 ['H-O', 'H'] -list1 13 ['H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H16-C9-O5', 'H-O', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H16-C9-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 186 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 1, 0), (-1, -1, 0), (0, -1, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, -1, -1), (-1, 1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H-O', 'H'] - -Fragments to allocate: 7 12 out of 12 20 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H16-C9-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 187 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, -1), (1, 0, 0), (0, -1, -1), (1, -1, 0), (1, 0, -1), (1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 7 13 out of 12 20 -sublist 2 ['H16-C8-O5', 'H'] -list1 13 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 188 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (-1, -1, 0), (0, -1, -1), (0, -1, 1), (-1, 0, -1), (-1, 0, 1), (-1, -1, -1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C8-O5', 'H'] - -Fragments to allocate: 7 14 out of 12 20 -sublist 2 ['H3-C2', 'H'] -list1 13 ['H16-C8-O5', 'H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C8-O5', 'H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 189 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 1, 0), (-1, -1, 0), (0, -1, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, -1, -1), (-1, 1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H3-C2', 'H'] - -Fragments to allocate: 7 15 out of 12 20 -sublist 2 ['H17-C11-O10', 'H'] -list1 13 ['H3-C2', 'H16-C8-O5', 'H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H3-C2', 'H16-C8-O5', 'H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 190 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'O', 'O', 'O', 'O', 'C', 'C', 'O', 'O', 'C', 'O', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H17-C11-O10', 'H'] - -Fragments to allocate: 7 16 out of 12 20 -sublist 2 ['H17-C11-O9', 'H'] -list1 13 ['H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 191 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'O', 'C', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'H', 'C', 'H', 'O', 'H', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H17-C11-O9', 'H'] - -Fragments to allocate: 7 17 out of 12 20 -sublist 2 ['H21-C14-O6', 'H'] -list1 13 ['H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H16-C9-O5', 'H-O', 'H14-C7-O3', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 192 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, -1), (1, 0, 0), (0, -1, -1), (1, -1, 0), (1, 0, -1), (1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H21-C14-O6', 'H'] - -Fragments to allocate: 7 18 out of 12 20 -sublist 2 ['H14-C7-O3', 'H'] -list1 13 ['H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H16-C9-O5', 'H-O', 'H14-C7-O3', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H16-C9-O5', 'H-O', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 193 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, -1), (1, 0, 0), (0, -1, -1), (1, -1, 0), (1, 0, -1), (1, -1, -1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H14-C7-O3', 'H'] - -Fragments to allocate: 7 19 out of 12 20 -sublist 2 ['H-O', 'H'] -list1 13 ['H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H16-C9-O5', 'H-O', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H16-C9-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 194 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (-1, -1, 0), (0, -1, -1), (0, -1, 1), (-1, 0, -1), (-1, 0, 1), (-1, -1, -1), (-1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H-O', 'H'] - -Fragments to allocate: 7 20 out of 12 20 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H16-C9-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 195 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, 1), (1, 0, 0), (0, -1, 1), (1, -1, 0), (1, 0, 1), (1, -1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 8 0 out of 12 20 -sublist 2 ['H24-C12-O6', 'H'] -list1 13 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 8 1 out of 12 20 -sublist 2 ['H24-C12-O6', 'H'] -list1 13 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 8 2 out of 12 20 -sublist 2 ['H24-C12-O6', 'H'] -list1 13 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 8 3 out of 12 20 -sublist 2 ['H24-C12-O6', 'H'] -list1 13 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 8 4 out of 12 20 -sublist 2 ['H24-C12-O6', 'H'] -list1 13 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 8 5 out of 12 20 -sublist 2 ['H24-C12-O6', 'H'] -list1 13 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 8 6 out of 12 20 -sublist 2 ['H24-C12-O6', 'H'] -list1 13 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 8 7 out of 12 20 -sublist 2 ['H24-C12-O6', 'H'] -list1 13 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 8 8 out of 12 20 -sublist 2 ['H24-C12-O6', 'H'] -list1 13 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 8 9 out of 12 20 -sublist 2 ['H24-C12-O6', 'H'] -list1 13 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 8 10 out of 12 20 -sublist 2 ['H24-C12-O6', 'H'] -list1 13 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 8 11 out of 12 20 -sublist 2 ['H24-C12-O6', 'H'] -list1 13 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 8 12 out of 12 20 -sublist 2 ['H24-C12-O6', 'H'] -list1 13 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 8 13 out of 12 20 -sublist 2 ['H24-C12-O6', 'H'] -list1 13 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 8 14 out of 12 20 -sublist 2 ['H24-C12-O6', 'H'] -list1 13 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 8 15 out of 12 20 -sublist 2 ['H24-C12-O6', 'H'] -list1 13 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 8 16 out of 12 20 -sublist 2 ['H24-C12-O6', 'H'] -list1 13 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 8 17 out of 12 20 -sublist 2 ['H24-C12-O6', 'H'] -list1 13 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 8 18 out of 12 20 -sublist 2 ['H24-C12-O6', 'H'] -list1 13 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 8 19 out of 12 20 -sublist 2 ['H24-C12-O6', 'H'] -list1 13 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 8 20 out of 12 20 -sublist 2 ['H24-C12-O6', 'H'] -list1 13 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 9 0 out of 12 20 -sublist 2 ['H21-C12-O9', 'H'] -list1 13 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 9 1 out of 12 20 -sublist 2 ['H21-C12-O9', 'H'] -list1 13 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 9 2 out of 12 20 -sublist 2 ['H21-C12-O9', 'H'] -list1 13 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 9 3 out of 12 20 -sublist 2 ['H21-C12-O9', 'H'] -list1 13 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 9 4 out of 12 20 -sublist 2 ['H21-C12-O9', 'H'] -list1 13 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 9 5 out of 12 20 -sublist 2 ['H21-C12-O9', 'H'] -list1 13 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 9 6 out of 12 20 -sublist 2 ['H21-C12-O9', 'H'] -list1 13 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 9 7 out of 12 20 -sublist 2 ['H21-C12-O9', 'H'] -list1 13 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 9 8 out of 12 20 -sublist 2 ['H21-C12-O9', 'H'] -list1 13 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 9 9 out of 12 20 -sublist 2 ['H21-C12-O9', 'H'] -list1 13 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 9 10 out of 12 20 -sublist 2 ['H21-C12-O9', 'H'] -list1 13 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 9 11 out of 12 20 -sublist 2 ['H21-C12-O9', 'H'] -list1 13 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 9 12 out of 12 20 -sublist 2 ['H21-C12-O9', 'H'] -list1 13 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 9 13 out of 12 20 -sublist 2 ['H21-C12-O9', 'H'] -list1 13 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 9 14 out of 12 20 -sublist 2 ['H21-C12-O9', 'H'] -list1 13 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 9 15 out of 12 20 -sublist 2 ['H21-C12-O9', 'H'] -list1 13 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 9 16 out of 12 20 -sublist 2 ['H21-C12-O9', 'H'] -list1 13 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 9 17 out of 12 20 -sublist 2 ['H21-C12-O9', 'H'] -list1 13 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 9 18 out of 12 20 -sublist 2 ['H21-C12-O9', 'H'] -list1 13 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 9 19 out of 12 20 -sublist 2 ['H21-C12-O9', 'H'] -list1 13 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 9 20 out of 12 20 -sublist 2 ['H21-C12-O9', 'H'] -list1 13 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 10 0 out of 12 20 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 10 1 out of 12 20 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 10 2 out of 12 20 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 10 3 out of 12 20 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 10 4 out of 12 20 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 10 5 out of 12 20 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 10 6 out of 12 20 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 10 7 out of 12 20 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 10 8 out of 12 20 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 10 9 out of 12 20 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 10 10 out of 12 20 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 10 11 out of 12 20 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 10 12 out of 12 20 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 10 13 out of 12 20 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 10 14 out of 12 20 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 10 15 out of 12 20 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 10 16 out of 12 20 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 10 17 out of 12 20 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 10 18 out of 12 20 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 10 19 out of 12 20 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 10 20 out of 12 20 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 13 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 11 0 out of 12 20 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 11 1 out of 12 20 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 11 2 out of 12 20 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 11 3 out of 12 20 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 11 4 out of 12 20 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 11 5 out of 12 20 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 11 6 out of 12 20 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 11 7 out of 12 20 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 11 8 out of 12 20 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 11 9 out of 12 20 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 11 10 out of 12 20 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 11 11 out of 12 20 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 11 12 out of 12 20 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 11 13 out of 12 20 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 11 14 out of 12 20 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 11 15 out of 12 20 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 11 16 out of 12 20 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 11 17 out of 12 20 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 11 18 out of 12 20 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 11 19 out of 12 20 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 11 20 out of 12 20 -sublist 2 ['H23-C11-O8', 'H'] -list1 13 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 12 0 out of 12 20 -sublist 2 ['H23-C12-O7', 'H'] -list1 13 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 12 1 out of 12 20 -sublist 2 ['H23-C12-O7', 'H'] -list1 13 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 12 2 out of 12 20 -sublist 2 ['H23-C12-O7', 'H'] -list1 13 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 12 3 out of 12 20 -sublist 2 ['H23-C12-O7', 'H'] -list1 13 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 12 4 out of 12 20 -sublist 2 ['H23-C12-O7', 'H'] -list1 13 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 12 5 out of 12 20 -sublist 2 ['H23-C12-O7', 'H'] -list1 13 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 12 6 out of 12 20 -sublist 2 ['H23-C12-O7', 'H'] -list1 13 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 12 7 out of 12 20 -sublist 2 ['H23-C12-O7', 'H'] -list1 13 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 12 8 out of 12 20 -sublist 2 ['H23-C12-O7', 'H'] -list1 13 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 12 9 out of 12 20 -sublist 2 ['H23-C12-O7', 'H'] -list1 13 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 12 10 out of 12 20 -sublist 2 ['H23-C12-O7', 'H'] -list1 13 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 12 11 out of 12 20 -sublist 2 ['H23-C12-O7', 'H'] -list1 13 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 12 12 out of 12 20 -sublist 2 ['H23-C12-O7', 'H'] -list1 13 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 12 13 out of 12 20 -sublist 2 ['H23-C12-O7', 'H'] -list1 13 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 12 14 out of 12 20 -sublist 2 ['H23-C12-O7', 'H'] -list1 13 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 12 15 out of 12 20 -sublist 2 ['H23-C12-O7', 'H'] -list1 13 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 12 16 out of 12 20 -sublist 2 ['H23-C12-O7', 'H'] -list1 13 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 12 17 out of 12 20 -sublist 2 ['H23-C12-O7', 'H'] -list1 13 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 12 18 out of 12 20 -sublist 2 ['H23-C12-O7', 'H'] -list1 13 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 12 19 out of 12 20 -sublist 2 ['H23-C12-O7', 'H'] -list1 13 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 12 20 out of 12 20 -sublist 2 ['H23-C12-O7', 'H'] -list1 13 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 -Trying Full Tmatrix for all Items in list - -Fragments to allocate: 0 0 out of 12 20 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 1 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 0 1 out of 12 20 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 2 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 0 2 out of 12 20 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 3 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 0 3 out of 12 20 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 4 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 0 4 out of 12 20 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 5 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -Adjacency Matrix: Distance 0.241 smaller than clash for atoms 10 30 H H [12.74620545 8.54085884 4.4509368 ] [12.77240545 8.54753615 4.21146097] 1.3 -MERGE_FRAGMENTS: count_species found 0 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 0 5 out of 12 20 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 6 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 0 6 out of 12 20 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 7 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 0 7 out of 12 20 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 8 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 0 8 out of 12 20 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 9 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 0 9 out of 12 20 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 10 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 0 10 out of 12 20 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 11 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 0 11 out of 12 20 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 12 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C9-O5', 'H'] - -Fragments to allocate: 0 12 out of 12 20 -sublist 2 ['H16-C9-O5', 'H'] -list1 13 ['H16-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 21 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 13 with 13 and 21 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 1 -SPILT_SPECIES: Laplacian lap=array([[-2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0], - [ 0, -2, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0], - [ 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 1, 0, 0, 0, 0, -4, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 1, 0, 0, 0, 1, 0, 0, -4, 1, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -4, 1, 1, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, -4, 1, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, -4, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 0, 0, -3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1], - [ 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, -4, 1, 1, 1, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1, 0, -1, 0, 0, 0, 0, 0, 0, 0], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1, 0, 0, -4, 1, 1, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, 0, 0, 0, 0], - [ 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3, 1, 1, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1]]) -SPILT_SPECIES: graph=<31x31 sparse matrix of type '' - with 91 stored elements in Compressed Sparse Row format> -COMBINE. received molecule: ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 31 - Formula = H17-C9-O5 - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES ---------------------------------------------------- - from merge fragments -COMBINE: Fragment H17-C9-O5 added to avglist -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 1 ['H17-C9-O5'] -SEQUENTIAL: badlist 0 [] - -Fragments to allocate: 0 1 out of 12 19 -sublist 2 ['H17-C9-O5', 'H'] -list1 13 ['H17-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 19 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 14 with 13 and 20 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H17-C9-O5', 'H'] - -Fragments to allocate: 0 2 out of 12 19 -sublist 2 ['H17-C9-O5', 'H'] -list1 13 ['H17-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 19 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 15 with 13 and 20 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H17-C9-O5', 'H'] - -Fragments to allocate: 0 3 out of 12 19 -sublist 2 ['H17-C9-O5', 'H'] -list1 13 ['H17-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 19 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 16 with 13 and 20 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H17-C9-O5', 'H'] - -Fragments to allocate: 0 4 out of 12 19 -sublist 2 ['H17-C9-O5', 'H'] -list1 13 ['H17-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 19 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 17 with 13 and 20 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H17-C9-O5', 'H'] - -Fragments to allocate: 0 5 out of 12 19 -sublist 2 ['H17-C9-O5', 'H'] -list1 13 ['H17-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 19 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 18 with 13 and 20 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H17-C9-O5', 'H'] - -Fragments to allocate: 0 6 out of 12 19 -sublist 2 ['H17-C9-O5', 'H'] -list1 13 ['H17-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 19 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 19 with 13 and 20 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H17-C9-O5', 'H'] - -Fragments to allocate: 0 7 out of 12 19 -sublist 2 ['H17-C9-O5', 'H'] -list1 13 ['H17-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 19 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 20 with 13 and 20 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -Adjacency Matrix: Distance 0.241 smaller than clash for atoms 10 31 H H [12.74620545 8.54085884 4.4509368 ] [12.77240545 8.54753615 4.21146097] 1.3 -MERGE_FRAGMENTS: count_species found 0 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H17-C9-O5', 'H'] - -Fragments to allocate: 0 8 out of 12 19 -sublist 2 ['H17-C9-O5', 'H'] -list1 13 ['H17-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 19 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 21 with 13 and 20 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H17-C9-O5', 'H'] - -Fragments to allocate: 0 9 out of 12 19 -sublist 2 ['H17-C9-O5', 'H'] -list1 13 ['H17-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 19 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 22 with 13 and 20 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H17-C9-O5', 'H'] - -Fragments to allocate: 0 10 out of 12 19 -sublist 2 ['H17-C9-O5', 'H'] -list1 13 ['H17-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 19 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 23 with 13 and 20 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H17-C9-O5', 'H'] - -Fragments to allocate: 0 11 out of 12 19 -sublist 2 ['H17-C9-O5', 'H'] -list1 13 ['H17-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 19 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 24 with 13 and 20 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H17-C9-O5', 'H'] - -Fragments to allocate: 0 12 out of 12 19 -sublist 2 ['H17-C9-O5', 'H'] -list1 13 ['H17-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 19 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 25 with 13 and 20 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H17-C9-O5', 'H'] - -Fragments to allocate: 0 13 out of 12 19 -sublist 2 ['H17-C9-O5', 'H'] -list1 13 ['H17-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 19 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 26 with 13 and 20 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H17-C9-O5', 'H'] - -Fragments to allocate: 0 14 out of 12 19 -sublist 2 ['H17-C9-O5', 'H'] -list1 13 ['H17-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 19 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 27 with 13 and 20 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H17-C9-O5', 'H'] - -Fragments to allocate: 0 15 out of 12 19 -sublist 2 ['H17-C9-O5', 'H'] -list1 13 ['H17-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 19 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 28 with 13 and 20 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H17-C9-O5', 'H'] - -Fragments to allocate: 0 16 out of 12 19 -sublist 2 ['H17-C9-O5', 'H'] -list1 13 ['H17-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 20 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 19 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 29 with 13 and 20 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 1 -SPILT_SPECIES: Laplacian lap=array([[-2, 0, 0, ..., 0, 0, 0], - [ 0, -2, 0, ..., 0, 0, 0], - [ 0, 0, -2, ..., 0, 0, 0], - ..., - [ 0, 0, 0, ..., -1, 0, 0], - [ 0, 0, 0, ..., 0, -1, 0], - [ 0, 0, 0, ..., 0, 0, -1]]) -SPILT_SPECIES: graph=<32x32 sparse matrix of type '' - with 94 stored elements in Compressed Sparse Row format> -COMBINE. received molecule: ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 32 - Formula = H18-C9-O5 - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES ---------------------------------------------------- - from merge fragments -COMBINE: Fragment H18-C9-O5 added to avglist -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 1 ['H18-C9-O5'] -SEQUENTIAL: badlist 0 [] - -Fragments to allocate: 0 1 out of 12 18 -sublist 2 ['H18-C9-O5', 'H'] -list1 13 ['H18-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 19 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 18 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 30 with 13 and 19 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H18-C9-O5', 'H'] - -Fragments to allocate: 0 2 out of 12 18 -sublist 2 ['H18-C9-O5', 'H'] -list1 13 ['H18-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 19 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 18 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 31 with 13 and 19 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H18-C9-O5', 'H'] - -Fragments to allocate: 0 3 out of 12 18 -sublist 2 ['H18-C9-O5', 'H'] -list1 13 ['H18-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 19 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 18 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 32 with 13 and 19 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H18-C9-O5', 'H'] - -Fragments to allocate: 0 4 out of 12 18 -sublist 2 ['H18-C9-O5', 'H'] -list1 13 ['H18-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 19 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 18 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 33 with 13 and 19 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H18-C9-O5', 'H'] - -Fragments to allocate: 0 5 out of 12 18 -sublist 2 ['H18-C9-O5', 'H'] -list1 13 ['H18-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 19 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 18 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 34 with 13 and 19 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H18-C9-O5', 'H'] - -Fragments to allocate: 0 6 out of 12 18 -sublist 2 ['H18-C9-O5', 'H'] -list1 13 ['H18-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 19 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 18 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 35 with 13 and 19 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H18-C9-O5', 'H'] - -Fragments to allocate: 0 7 out of 12 18 -sublist 2 ['H18-C9-O5', 'H'] -list1 13 ['H18-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 19 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 18 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 36 with 13 and 19 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H18-C9-O5', 'H'] - -Fragments to allocate: 0 8 out of 12 18 -sublist 2 ['H18-C9-O5', 'H'] -list1 13 ['H18-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 19 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 18 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 37 with 13 and 19 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -Adjacency Matrix: Distance 0.241 smaller than clash for atoms 10 32 H H [12.74620545 8.54085884 4.4509368 ] [12.77240545 8.54753615 4.21146097] 1.3 -MERGE_FRAGMENTS: count_species found 0 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H18-C9-O5', 'H'] - -Fragments to allocate: 0 9 out of 12 18 -sublist 2 ['H18-C9-O5', 'H'] -list1 13 ['H18-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 19 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 18 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 38 with 13 and 19 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H18-C9-O5', 'H'] - -Fragments to allocate: 0 10 out of 12 18 -sublist 2 ['H18-C9-O5', 'H'] -list1 13 ['H18-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 19 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 18 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 39 with 13 and 19 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H18-C9-O5', 'H'] - -Fragments to allocate: 0 11 out of 12 18 -sublist 2 ['H18-C9-O5', 'H'] -list1 13 ['H18-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 19 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 18 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 40 with 13 and 19 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H18-C9-O5', 'H'] - -Fragments to allocate: 0 12 out of 12 18 -sublist 2 ['H18-C9-O5', 'H'] -list1 13 ['H18-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 19 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 18 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 41 with 13 and 19 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H18-C9-O5', 'H'] - -Fragments to allocate: 0 13 out of 12 18 -sublist 2 ['H18-C9-O5', 'H'] -list1 13 ['H18-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 19 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 18 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 42 with 13 and 19 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H18-C9-O5', 'H'] - -Fragments to allocate: 0 14 out of 12 18 -sublist 2 ['H18-C9-O5', 'H'] -list1 13 ['H18-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 19 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 18 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 43 with 13 and 19 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H18-C9-O5', 'H'] - -Fragments to allocate: 0 15 out of 12 18 -sublist 2 ['H18-C9-O5', 'H'] -list1 13 ['H18-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 19 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 18 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 44 with 13 and 19 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H18-C9-O5', 'H'] - -Fragments to allocate: 0 16 out of 12 18 -sublist 2 ['H18-C9-O5', 'H'] -list1 13 ['H18-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 19 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 18 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 45 with 13 and 19 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H18-C9-O5', 'H'] - -Fragments to allocate: 0 17 out of 12 18 -sublist 2 ['H18-C9-O5', 'H'] -list1 13 ['H18-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 19 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 18 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 46 with 13 and 19 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H18-C9-O5', 'H'] - -Fragments to allocate: 0 18 out of 12 18 -sublist 2 ['H18-C9-O5', 'H'] -list1 13 ['H18-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 19 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 18 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 47 with 13 and 19 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H18-C9-O5', 'H'] - -Fragments to allocate: 1 0 out of 12 18 -sublist 2 ['H-O', 'H'] -list1 13 ['H18-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 19 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H18-C9-O5', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 18 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 48 with 13 and 19 Remaining in each list -SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H-O', 'H'] - -Fragments to allocate: 1 1 out of 12 18 -sublist 2 ['H18-C9-O5', 'H'] -list1 13 ['H-O', 'H18-C9-O5', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 19 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 18 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 49 with 13 and 19 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H18-C9-O5', 'H'] - -Fragments to allocate: 1 2 out of 12 18 -sublist 2 ['H-O', 'H'] -list1 13 ['H18-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 19 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H18-C9-O5', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 18 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 50 with 13 and 19 Remaining in each list -SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H-O', 'H'] - -Fragments to allocate: 1 3 out of 12 18 -sublist 2 ['H18-C9-O5', 'H'] -list1 13 ['H-O', 'H18-C9-O5', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 19 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 18 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 51 with 13 and 19 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H18-C9-O5', 'H'] - -Fragments to allocate: 1 4 out of 12 18 -sublist 2 ['H-O', 'H'] -list1 13 ['H18-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 19 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H18-C9-O5', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 18 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 52 with 13 and 19 Remaining in each list -SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H-O', 'H'] - -Fragments to allocate: 1 5 out of 12 18 -sublist 2 ['H18-C9-O5', 'H'] -list1 13 ['H-O', 'H18-C9-O5', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 19 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 18 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 53 with 13 and 19 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H18-C9-O5', 'H'] - -Fragments to allocate: 1 6 out of 12 18 -sublist 2 ['H-O', 'H'] -list1 13 ['H18-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 19 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H18-C9-O5', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 18 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 54 with 13 and 19 Remaining in each list -SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H-O', 'H'] - -Fragments to allocate: 1 7 out of 12 18 -sublist 2 ['H18-C9-O5', 'H'] -list1 13 ['H-O', 'H18-C9-O5', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 19 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 18 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 55 with 13 and 19 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H18-C9-O5', 'H'] - -Fragments to allocate: 1 8 out of 12 18 -sublist 2 ['H-O', 'H'] -list1 13 ['H18-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 19 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H18-C9-O5', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 18 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 56 with 13 and 19 Remaining in each list -SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H-O', 'H'] - -Fragments to allocate: 1 9 out of 12 18 -sublist 2 ['H18-C9-O5', 'H'] -list1 13 ['H-O', 'H18-C9-O5', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 19 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 18 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 57 with 13 and 19 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H18-C9-O5', 'H'] - -Fragments to allocate: 1 10 out of 12 18 -sublist 2 ['H-O', 'H'] -list1 13 ['H18-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 19 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H18-C9-O5', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 18 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 58 with 13 and 19 Remaining in each list -SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H-O', 'H'] - -Fragments to allocate: 1 11 out of 12 18 -sublist 2 ['H18-C9-O5', 'H'] -list1 13 ['H-O', 'H18-C9-O5', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 19 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 18 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 59 with 13 and 19 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H18-C9-O5', 'H'] - -Fragments to allocate: 1 12 out of 12 18 -sublist 2 ['H-O', 'H'] -list1 13 ['H18-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 19 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H18-C9-O5', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 18 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 60 with 13 and 19 Remaining in each list -SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H-O', 'H'] - -Fragments to allocate: 1 13 out of 12 18 -sublist 2 ['H18-C9-O5', 'H'] -list1 13 ['H-O', 'H18-C9-O5', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 19 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 18 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 61 with 13 and 19 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H18-C9-O5', 'H'] - -Fragments to allocate: 1 14 out of 12 18 -sublist 2 ['H-O', 'H'] -list1 13 ['H18-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 19 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H18-C9-O5', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 18 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 62 with 13 and 19 Remaining in each list -SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H-O', 'H'] - -Fragments to allocate: 1 15 out of 12 18 -sublist 2 ['H18-C9-O5', 'H'] -list1 13 ['H-O', 'H18-C9-O5', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 19 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 18 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 63 with 13 and 19 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H18-C9-O5', 'H'] - -Fragments to allocate: 1 16 out of 12 18 -sublist 2 ['H-O', 'H'] -list1 13 ['H18-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 19 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H18-C9-O5', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 18 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 64 with 13 and 19 Remaining in each list -SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H-O', 'H'] - -Fragments to allocate: 1 17 out of 12 18 -sublist 2 ['H18-C9-O5', 'H'] -list1 13 ['H-O', 'H18-C9-O5', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 19 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 18 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 65 with 13 and 19 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H18-C9-O5', 'H'] - -Fragments to allocate: 1 18 out of 12 18 -sublist 2 ['H-O', 'H'] -list1 13 ['H18-C9-O5', 'H-O', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 19 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H18-C9-O5', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 18 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 66 with 13 and 19 Remaining in each list -SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H-O', 'H'] - -Fragments to allocate: 2 0 out of 12 18 -sublist 2 ['H14-C7-O3', 'H'] -list1 13 ['H-O', 'H18-C9-O5', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 19 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H18-C9-O5', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 18 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 67 with 13 and 19 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H14-C7-O3', 'H'] - -Fragments to allocate: 2 1 out of 12 18 -sublist 2 ['H18-C9-O5', 'H'] -list1 13 ['H14-C7-O3', 'H-O', 'H18-C9-O5', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 19 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C7-O3', 'H-O', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 18 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 68 with 13 and 19 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H18-C9-O5', 'H'] - -Fragments to allocate: 2 2 out of 12 18 -sublist 2 ['H-O', 'H'] -list1 13 ['H18-C9-O5', 'H14-C7-O3', 'H-O', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 19 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H18-C9-O5', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 18 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 69 with 13 and 19 Remaining in each list -SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H-O', 'H'] - -Fragments to allocate: 2 3 out of 12 18 -sublist 2 ['H14-C7-O3', 'H'] -list1 13 ['H-O', 'H18-C9-O5', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 19 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H18-C9-O5', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 18 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 70 with 13 and 19 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H14-C7-O3', 'H'] - -Fragments to allocate: 2 4 out of 12 18 -sublist 2 ['H18-C9-O5', 'H'] -list1 13 ['H14-C7-O3', 'H-O', 'H18-C9-O5', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 19 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C7-O3', 'H-O', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 18 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 71 with 13 and 19 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H18-C9-O5', 'H'] - -Fragments to allocate: 2 5 out of 12 18 -sublist 2 ['H-O', 'H'] -list1 13 ['H18-C9-O5', 'H14-C7-O3', 'H-O', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 19 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H18-C9-O5', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 18 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 72 with 13 and 19 Remaining in each list -SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H-O', 'H'] - -Fragments to allocate: 2 6 out of 12 18 -sublist 2 ['H14-C7-O3', 'H'] -list1 13 ['H-O', 'H18-C9-O5', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 19 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H18-C9-O5', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 18 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 73 with 13 and 19 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H14-C7-O3', 'H'] - -Fragments to allocate: 2 7 out of 12 18 -sublist 2 ['H18-C9-O5', 'H'] -list1 13 ['H14-C7-O3', 'H-O', 'H18-C9-O5', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 19 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C7-O3', 'H-O', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 18 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 74 with 13 and 19 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H18-C9-O5', 'H'] - -Fragments to allocate: 2 8 out of 12 18 -sublist 2 ['H-O', 'H'] -list1 13 ['H18-C9-O5', 'H14-C7-O3', 'H-O', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 19 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H18-C9-O5', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 18 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 75 with 13 and 19 Remaining in each list -SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H-O', 'H'] - -Fragments to allocate: 2 9 out of 12 18 -sublist 2 ['H14-C7-O3', 'H'] -list1 13 ['H-O', 'H18-C9-O5', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 19 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H-O', 'H18-C9-O5', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 18 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 76 with 13 and 19 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H14-C7-O3', 'H'] - -Fragments to allocate: 2 10 out of 12 18 -sublist 2 ['H18-C9-O5', 'H'] -list1 13 ['H14-C7-O3', 'H-O', 'H18-C9-O5', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 19 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H14-C7-O3', 'H-O', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 18 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 77 with 13 and 19 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H18-C9-O5', 'H'] - -Fragments to allocate: 2 11 out of 12 18 -sublist 2 ['H-O', 'H'] -list1 13 ['H18-C9-O5', 'H14-C7-O3', 'H-O', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 19 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 12 ['H18-C9-O5', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 18 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 78 with 13 and 19 Remaining in each list -SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 1 -SPILT_SPECIES: Laplacian lap=array([[-2, 1, 1], - [ 1, -1, 0], - [ 1, 0, -1]]) -SPILT_SPECIES: graph=<3x3 sparse matrix of type '' - with 7 stored elements in Compressed Sparse Row format> -COMBINE. received molecule: ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 3 - Formula = H2-O - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES ---------------------------------------------------- - from merge fragments -COMBINE: reordered_newmolec.formula='H2-O' -COMBINE: reordered_newmolec=------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 3 - Formula = H2-O - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES ---------------------------------------------------- - -COMPARE_SPECIES. Comparing: -H2-O -H2-O -mol1.adj_types=array([[0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0], - ..., - [0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0]]) -mol2.adj_types=array([[0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0], - ..., - [0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0], - [0, 0, 0, ..., 0, 0, 0]]) -COMPARE_SPECIES. kdx ldx elem1 - elem2 : reordered - reference -COMBINE: Fragment H2-O added to goodlist with reordered_newmolec.cell_indices=[0, 1, 2] -SEQUENTIAL: goodlist 1 ['H2-O'] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 0 [] -SEQUENTIAL: Found molecule H2-O - -Fragments to allocate: 0 1 out of 11 17 -sublist 2 ['H18-C9-O5', 'H'] -list1 12 ['H18-C9-O5', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 18 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 17 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 79 with 12 and 18 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H18-C9-O5', 'H'] - -Fragments to allocate: 0 2 out of 11 17 -sublist 2 ['H18-C9-O5', 'H'] -list1 12 ['H18-C9-O5', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 18 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 17 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 80 with 12 and 18 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -Adjacency Matrix: Distance 0.241 smaller than clash for atoms 10 32 H H [12.74620545 8.54085884 4.4509368 ] [12.77240545 8.54753615 4.21146097] 1.3 -MERGE_FRAGMENTS: count_species found 0 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H18-C9-O5', 'H'] - -Fragments to allocate: 0 3 out of 11 17 -sublist 2 ['H18-C9-O5', 'H'] -list1 12 ['H18-C9-O5', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 18 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 17 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 81 with 12 and 18 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H18-C9-O5', 'H'] - -Fragments to allocate: 0 4 out of 11 17 -sublist 2 ['H18-C9-O5', 'H'] -list1 12 ['H18-C9-O5', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 18 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 17 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 82 with 12 and 18 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H18-C9-O5', 'H'] - -Fragments to allocate: 0 5 out of 11 17 -sublist 2 ['H18-C9-O5', 'H'] -list1 12 ['H18-C9-O5', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 18 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 17 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 83 with 12 and 18 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H18-C9-O5', 'H'] - -Fragments to allocate: 0 6 out of 11 17 -sublist 2 ['H18-C9-O5', 'H'] -list1 12 ['H18-C9-O5', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 18 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 17 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 84 with 12 and 18 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H18-C9-O5', 'H'] - -Fragments to allocate: 0 7 out of 11 17 -sublist 2 ['H18-C9-O5', 'H'] -list1 12 ['H18-C9-O5', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 18 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 17 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 85 with 12 and 18 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H18-C9-O5', 'H'] - -Fragments to allocate: 0 8 out of 11 17 -sublist 2 ['H18-C9-O5', 'H'] -list1 12 ['H18-C9-O5', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 18 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 17 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 86 with 12 and 18 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H18-C9-O5', 'H'] - -Fragments to allocate: 0 9 out of 11 17 -sublist 2 ['H18-C9-O5', 'H'] -list1 12 ['H18-C9-O5', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 18 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 17 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 87 with 12 and 18 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H18-C9-O5', 'H'] - -Fragments to allocate: 0 10 out of 11 17 -sublist 2 ['H18-C9-O5', 'H'] -list1 12 ['H18-C9-O5', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 18 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 17 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 88 with 12 and 18 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H18-C9-O5', 'H'] - -Fragments to allocate: 0 11 out of 11 17 -sublist 2 ['H18-C9-O5', 'H'] -list1 12 ['H18-C9-O5', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 18 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 17 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 89 with 12 and 18 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H18-C9-O5', 'H'] - -Fragments to allocate: 0 12 out of 11 17 -sublist 2 ['H18-C9-O5', 'H'] -list1 12 ['H18-C9-O5', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 18 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 17 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 90 with 12 and 18 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H18-C9-O5', 'H'] - -Fragments to allocate: 0 13 out of 11 17 -sublist 2 ['H18-C9-O5', 'H'] -list1 12 ['H18-C9-O5', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 18 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 17 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 91 with 12 and 18 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H18-C9-O5', 'H'] - -Fragments to allocate: 0 14 out of 11 17 -sublist 2 ['H18-C9-O5', 'H'] -list1 12 ['H18-C9-O5', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 18 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 17 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 92 with 12 and 18 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H18-C9-O5', 'H'] - -Fragments to allocate: 0 15 out of 11 17 -sublist 2 ['H18-C9-O5', 'H'] -list1 12 ['H18-C9-O5', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 18 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 17 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 93 with 12 and 18 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H18-C9-O5', 'H'] - -Fragments to allocate: 0 16 out of 11 17 -sublist 2 ['H18-C9-O5', 'H'] -list1 12 ['H18-C9-O5', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 18 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 17 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 94 with 12 and 18 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H18-C9-O5', 'H'] - -Fragments to allocate: 0 17 out of 11 17 -sublist 2 ['H18-C9-O5', 'H'] -list1 12 ['H18-C9-O5', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 18 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 17 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 95 with 12 and 18 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H18-C9-O5', 'H'] - -Fragments to allocate: 1 0 out of 11 17 -sublist 2 ['H14-C7-O3', 'H'] -list1 12 ['H18-C9-O5', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 18 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H18-C9-O5', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 17 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 96 with 12 and 18 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H14-C7-O3', 'H'] - -Fragments to allocate: 1 1 out of 11 17 -sublist 2 ['H18-C9-O5', 'H'] -list1 12 ['H14-C7-O3', 'H18-C9-O5', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 18 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 17 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 97 with 12 and 18 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H18-C9-O5', 'H'] - -Fragments to allocate: 1 2 out of 11 17 -sublist 2 ['H14-C7-O3', 'H'] -list1 12 ['H18-C9-O5', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 18 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H18-C9-O5', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 17 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 98 with 12 and 18 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H14-C7-O3', 'H'] - -Fragments to allocate: 1 3 out of 11 17 -sublist 2 ['H18-C9-O5', 'H'] -list1 12 ['H14-C7-O3', 'H18-C9-O5', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 18 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 17 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 99 with 12 and 18 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H18-C9-O5', 'H'] - -Fragments to allocate: 1 4 out of 11 17 -sublist 2 ['H14-C7-O3', 'H'] -list1 12 ['H18-C9-O5', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 18 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H18-C9-O5', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 17 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 100 with 12 and 18 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H14-C7-O3', 'H'] - -Fragments to allocate: 1 5 out of 11 17 -sublist 2 ['H18-C9-O5', 'H'] -list1 12 ['H14-C7-O3', 'H18-C9-O5', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 18 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 17 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 101 with 12 and 18 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H18-C9-O5', 'H'] - -Fragments to allocate: 1 6 out of 11 17 -sublist 2 ['H14-C7-O3', 'H'] -list1 12 ['H18-C9-O5', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 18 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H18-C9-O5', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 17 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 102 with 12 and 18 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H14-C7-O3', 'H'] - -Fragments to allocate: 1 7 out of 11 17 -sublist 2 ['H18-C9-O5', 'H'] -list1 12 ['H14-C7-O3', 'H18-C9-O5', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 18 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 17 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 103 with 12 and 18 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H18-C9-O5', 'H'] - -Fragments to allocate: 1 8 out of 11 17 -sublist 2 ['H14-C7-O3', 'H'] -list1 12 ['H18-C9-O5', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 18 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H18-C9-O5', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 17 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 104 with 12 and 18 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H14-C7-O3', 'H'] - -Fragments to allocate: 1 9 out of 11 17 -sublist 2 ['H18-C9-O5', 'H'] -list1 12 ['H14-C7-O3', 'H18-C9-O5', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 18 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 17 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 105 with 12 and 18 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H18-C9-O5', 'H'] - -Fragments to allocate: 1 10 out of 11 17 -sublist 2 ['H14-C7-O3', 'H'] -list1 12 ['H18-C9-O5', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 18 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H18-C9-O5', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 17 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 106 with 12 and 18 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H14-C7-O3', 'H'] - -Fragments to allocate: 1 11 out of 11 17 -sublist 2 ['H18-C9-O5', 'H'] -list1 12 ['H14-C7-O3', 'H18-C9-O5', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 18 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 17 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 107 with 12 and 18 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H18-C9-O5', 'H'] - -Fragments to allocate: 1 12 out of 11 17 -sublist 2 ['H14-C7-O3', 'H'] -list1 12 ['H18-C9-O5', 'H14-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 18 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H18-C9-O5', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 17 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 108 with 12 and 18 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 1 -SPILT_SPECIES: Laplacian lap=array([[-2, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1, 0, 0, 0, 0, 0, 0], - [ 0, -2, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, -3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, - 0, 0, 0, 0, 0, 0, 1, 0, 0], - [ 1, 0, 0, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, -2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 1, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1], - [ 0, 1, 0, 0, 1, 0, -4, 1, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 1, 0, -1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 1, 0, 0, 0, 0, 0, 0, 0, -4, 1, 1, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, -6, 1, 1, 0, - 0, 0, 0, 0, 1, 0, 1, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -4, - 1, 1, 1, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, - -1, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, - 0, -1, 0, 0, 0, 0, 0, 0, 0], - [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, - 0, 0, -4, 0, 0, 1, 0, 1, 0], - [ 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, -1, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, -1, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1, 0, 0, -1, 0, 0, 0], - [ 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, -2, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1, 0, 0, 0, 0, -1, 0], - [ 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, -1]]) -SPILT_SPECIES: graph=<25x25 sparse matrix of type '' - with 75 stored elements in Compressed Sparse Row format> -COMBINE. received molecule: ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 25 - Formula = H15-C7-O3 - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES ---------------------------------------------------- - from merge fragments -COMBINE: Fragment H15-C7-O3 added to avglist -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 1 ['H15-C7-O3'] -SEQUENTIAL: badlist 0 [] - -Fragments to allocate: 0 1 out of 11 16 -sublist 2 ['H15-C7-O3', 'H'] -list1 12 ['H15-C7-O3', 'H18-C9-O5', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 17 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H18-C9-O5', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 16 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 109 with 12 and 17 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H15-C7-O3', 'H'] - -Fragments to allocate: 0 2 out of 11 16 -sublist 2 ['H15-C7-O3', 'H'] -list1 12 ['H15-C7-O3', 'H18-C9-O5', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 17 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H18-C9-O5', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 16 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 110 with 12 and 17 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H15-C7-O3', 'H'] - -Fragments to allocate: 0 3 out of 11 16 -sublist 2 ['H15-C7-O3', 'H'] -list1 12 ['H15-C7-O3', 'H18-C9-O5', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 17 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H18-C9-O5', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 16 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 111 with 12 and 17 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H15-C7-O3', 'H'] - -Fragments to allocate: 0 4 out of 11 16 -sublist 2 ['H15-C7-O3', 'H'] -list1 12 ['H15-C7-O3', 'H18-C9-O5', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 17 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H18-C9-O5', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 16 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 112 with 12 and 17 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H15-C7-O3', 'H'] - -Fragments to allocate: 0 5 out of 11 16 -sublist 2 ['H15-C7-O3', 'H'] -list1 12 ['H15-C7-O3', 'H18-C9-O5', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 17 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H18-C9-O5', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 16 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 113 with 12 and 17 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H15-C7-O3', 'H'] - -Fragments to allocate: 0 6 out of 11 16 -sublist 2 ['H15-C7-O3', 'H'] -list1 12 ['H15-C7-O3', 'H18-C9-O5', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 17 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H18-C9-O5', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 16 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 114 with 12 and 17 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H15-C7-O3', 'H'] - -Fragments to allocate: 0 7 out of 11 16 -sublist 2 ['H15-C7-O3', 'H'] -list1 12 ['H15-C7-O3', 'H18-C9-O5', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 17 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H18-C9-O5', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 16 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 115 with 12 and 17 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H15-C7-O3', 'H'] - -Fragments to allocate: 0 8 out of 11 16 -sublist 2 ['H15-C7-O3', 'H'] -list1 12 ['H15-C7-O3', 'H18-C9-O5', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 17 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H18-C9-O5', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 16 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 116 with 12 and 17 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H15-C7-O3', 'H'] - -Fragments to allocate: 0 9 out of 11 16 -sublist 2 ['H15-C7-O3', 'H'] -list1 12 ['H15-C7-O3', 'H18-C9-O5', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 17 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H18-C9-O5', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 16 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 117 with 12 and 17 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H15-C7-O3', 'H'] - -Fragments to allocate: 0 10 out of 11 16 -sublist 2 ['H15-C7-O3', 'H'] -list1 12 ['H15-C7-O3', 'H18-C9-O5', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 17 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H18-C9-O5', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 16 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 118 with 12 and 17 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H15-C7-O3', 'H'] - -Fragments to allocate: 0 11 out of 11 16 -sublist 2 ['H15-C7-O3', 'H'] -list1 12 ['H15-C7-O3', 'H18-C9-O5', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 17 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H18-C9-O5', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 16 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 119 with 12 and 17 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H15-C7-O3', 'H'] - -Fragments to allocate: 0 12 out of 11 16 -sublist 2 ['H15-C7-O3', 'H'] -list1 12 ['H15-C7-O3', 'H18-C9-O5', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 17 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H18-C9-O5', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 16 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 120 with 12 and 17 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H15-C7-O3', 'H'] - -Fragments to allocate: 0 13 out of 11 16 -sublist 2 ['H15-C7-O3', 'H'] -list1 12 ['H15-C7-O3', 'H18-C9-O5', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 17 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H18-C9-O5', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 16 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 121 with 12 and 17 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H15-C7-O3', 'H'] - -Fragments to allocate: 0 14 out of 11 16 -sublist 2 ['H15-C7-O3', 'H'] -list1 12 ['H15-C7-O3', 'H18-C9-O5', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 17 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H18-C9-O5', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 16 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 122 with 12 and 17 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H15-C7-O3', 'H'] - -Fragments to allocate: 0 15 out of 11 16 -sublist 2 ['H15-C7-O3', 'H'] -list1 12 ['H15-C7-O3', 'H18-C9-O5', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 17 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H18-C9-O5', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 16 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 123 with 12 and 17 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H15-C7-O3', 'H'] - -Fragments to allocate: 0 16 out of 11 16 -sublist 2 ['H15-C7-O3', 'H'] -list1 12 ['H15-C7-O3', 'H18-C9-O5', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 17 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H18-C9-O5', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 16 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 124 with 12 and 17 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H15-C7-O3', 'H'] - -Fragments to allocate: 1 0 out of 11 16 -sublist 2 ['H18-C9-O5', 'H'] -list1 12 ['H15-C7-O3', 'H18-C9-O5', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 17 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H15-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 16 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 125 with 12 and 17 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H18-C9-O5', 'H'] - -Fragments to allocate: 1 1 out of 11 16 -sublist 2 ['H15-C7-O3', 'H'] -list1 12 ['H18-C9-O5', 'H15-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 17 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H18-C9-O5', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 16 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 126 with 12 and 17 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H15-C7-O3', 'H'] - -Fragments to allocate: 1 2 out of 11 16 -sublist 2 ['H18-C9-O5', 'H'] -list1 12 ['H15-C7-O3', 'H18-C9-O5', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 17 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H15-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 16 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 127 with 12 and 17 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -Adjacency Matrix: Distance 0.241 smaller than clash for atoms 10 32 H H [12.74620545 8.54085884 4.4509368 ] [12.77240545 8.54753615 4.21146097] 1.3 -MERGE_FRAGMENTS: count_species found 0 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H18-C9-O5', 'H'] - -Fragments to allocate: 1 3 out of 11 16 -sublist 2 ['H15-C7-O3', 'H'] -list1 12 ['H18-C9-O5', 'H15-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 17 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H18-C9-O5', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 16 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 128 with 12 and 17 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H15-C7-O3', 'H'] - -Fragments to allocate: 1 4 out of 11 16 -sublist 2 ['H18-C9-O5', 'H'] -list1 12 ['H15-C7-O3', 'H18-C9-O5', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 17 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H15-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 16 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 129 with 12 and 17 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H18-C9-O5', 'H'] - -Fragments to allocate: 1 5 out of 11 16 -sublist 2 ['H15-C7-O3', 'H'] -list1 12 ['H18-C9-O5', 'H15-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 17 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H18-C9-O5', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 16 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 130 with 12 and 17 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H15-C7-O3', 'H'] - -Fragments to allocate: 1 6 out of 11 16 -sublist 2 ['H18-C9-O5', 'H'] -list1 12 ['H15-C7-O3', 'H18-C9-O5', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 17 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H15-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 16 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 131 with 12 and 17 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H18-C9-O5', 'H'] - -Fragments to allocate: 1 7 out of 11 16 -sublist 2 ['H15-C7-O3', 'H'] -list1 12 ['H18-C9-O5', 'H15-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 17 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H18-C9-O5', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 16 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 132 with 12 and 17 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H15-C7-O3', 'H'] - -Fragments to allocate: 1 8 out of 11 16 -sublist 2 ['H18-C9-O5', 'H'] -list1 12 ['H15-C7-O3', 'H18-C9-O5', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 17 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H15-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 16 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 133 with 12 and 17 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H18-C9-O5', 'H'] - -Fragments to allocate: 1 9 out of 11 16 -sublist 2 ['H15-C7-O3', 'H'] -list1 12 ['H18-C9-O5', 'H15-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 17 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H18-C9-O5', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 16 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 134 with 12 and 17 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H15-C7-O3', 'H'] - -Fragments to allocate: 1 10 out of 11 16 -sublist 2 ['H18-C9-O5', 'H'] -list1 12 ['H15-C7-O3', 'H18-C9-O5', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 17 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H15-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 16 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 135 with 12 and 17 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H18-C9-O5', 'H'] - -Fragments to allocate: 1 11 out of 11 16 -sublist 2 ['H15-C7-O3', 'H'] -list1 12 ['H18-C9-O5', 'H15-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 17 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H18-C9-O5', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 16 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 136 with 12 and 17 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H15-C7-O3', 'H'] - -Fragments to allocate: 1 12 out of 11 16 -sublist 2 ['H18-C9-O5', 'H'] -list1 12 ['H15-C7-O3', 'H18-C9-O5', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 17 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H15-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 16 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 137 with 12 and 17 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H18-C9-O5', 'H'] - -Fragments to allocate: 1 13 out of 11 16 -sublist 2 ['H15-C7-O3', 'H'] -list1 12 ['H18-C9-O5', 'H15-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 17 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H18-C9-O5', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 16 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 138 with 12 and 17 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H15-C7-O3', 'H'] - -Fragments to allocate: 1 14 out of 11 16 -sublist 2 ['H18-C9-O5', 'H'] -list1 12 ['H15-C7-O3', 'H18-C9-O5', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 17 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H15-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 16 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 139 with 12 and 17 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H18-C9-O5', 'H'] - -Fragments to allocate: 1 15 out of 11 16 -sublist 2 ['H15-C7-O3', 'H'] -list1 12 ['H18-C9-O5', 'H15-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 17 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H18-C9-O5', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 16 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 140 with 12 and 17 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H15-C7-O3', 'H'] - -Fragments to allocate: 1 16 out of 11 16 -sublist 2 ['H18-C9-O5', 'H'] -list1 12 ['H15-C7-O3', 'H18-C9-O5', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 17 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H15-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 16 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 141 with 12 and 17 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H18-C9-O5', 'H'] - -Fragments to allocate: 2 0 out of 11 16 -sublist 2 ['H21-C14-O6', 'H'] -list1 12 ['H18-C9-O5', 'H15-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 17 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 16 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 142 with 12 and 17 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H21-C14-O6', 'H'] - -Fragments to allocate: 2 1 out of 11 16 -sublist 2 ['H15-C7-O3', 'H'] -list1 12 ['H21-C14-O6', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 17 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H21-C14-O6', 'H18-C9-O5', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 16 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 143 with 12 and 17 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H15-C7-O3', 'H'] - -Fragments to allocate: 2 2 out of 11 16 -sublist 2 ['H18-C9-O5', 'H'] -list1 12 ['H15-C7-O3', 'H21-C14-O6', 'H18-C9-O5', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 17 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H15-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 16 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 144 with 12 and 17 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H18-C9-O5', 'H'] - -Fragments to allocate: 2 3 out of 11 16 -sublist 2 ['H21-C14-O6', 'H'] -list1 12 ['H18-C9-O5', 'H15-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 17 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 16 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 145 with 12 and 17 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H21-C14-O6', 'H'] - -Fragments to allocate: 2 4 out of 11 16 -sublist 2 ['H15-C7-O3', 'H'] -list1 12 ['H21-C14-O6', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 17 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H21-C14-O6', 'H18-C9-O5', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 16 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 146 with 12 and 17 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H15-C7-O3', 'H'] - -Fragments to allocate: 2 5 out of 11 16 -sublist 2 ['H18-C9-O5', 'H'] -list1 12 ['H15-C7-O3', 'H21-C14-O6', 'H18-C9-O5', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 17 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H15-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 16 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 147 with 12 and 17 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H18-C9-O5', 'H'] - -Fragments to allocate: 2 6 out of 11 16 -sublist 2 ['H21-C14-O6', 'H'] -list1 12 ['H18-C9-O5', 'H15-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 17 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 16 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 148 with 12 and 17 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H21-C14-O6', 'H'] - -Fragments to allocate: 2 7 out of 11 16 -sublist 2 ['H15-C7-O3', 'H'] -list1 12 ['H21-C14-O6', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 17 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H21-C14-O6', 'H18-C9-O5', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 16 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 149 with 12 and 17 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H15-C7-O3', 'H'] - -Fragments to allocate: 2 8 out of 11 16 -sublist 2 ['H18-C9-O5', 'H'] -list1 12 ['H15-C7-O3', 'H21-C14-O6', 'H18-C9-O5', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 17 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H15-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 16 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 150 with 12 and 17 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H18-C9-O5', 'H'] - -Fragments to allocate: 2 9 out of 11 16 -sublist 2 ['H21-C14-O6', 'H'] -list1 12 ['H18-C9-O5', 'H15-C7-O3', 'H21-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 17 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 16 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 151 with 12 and 17 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 1 -SPILT_SPECIES: Laplacian lap=array([[-2, 0, 0, ..., 0, 0, 0], - [ 0, -2, 0, ..., 0, 0, 0], - [ 0, 0, -2, ..., 0, 0, 0], - ..., - [ 0, 0, 0, ..., -1, 0, 0], - [ 0, 0, 0, ..., 0, -2, 0], - [ 0, 0, 0, ..., 0, 0, -2]]) -SPILT_SPECIES: graph=<42x42 sparse matrix of type '' - with 126 stored elements in Compressed Sparse Row format> -COMBINE. received molecule: ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 42 - Formula = H22-C14-O6 - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES ---------------------------------------------------- - from merge fragments -COMBINE: Fragment H22-C14-O6 added to avglist -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 1 ['H22-C14-O6'] -SEQUENTIAL: badlist 0 [] - -Fragments to allocate: 0 1 out of 11 15 -sublist 2 ['H22-C14-O6', 'H'] -list1 12 ['H22-C14-O6', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 16 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 15 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 0 2 out of 11 15 -sublist 2 ['H22-C14-O6', 'H'] -list1 12 ['H22-C14-O6', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 16 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 15 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 0 3 out of 11 15 -sublist 2 ['H22-C14-O6', 'H'] -list1 12 ['H22-C14-O6', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 16 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 15 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 0 4 out of 11 15 -sublist 2 ['H22-C14-O6', 'H'] -list1 12 ['H22-C14-O6', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 16 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 15 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 0 5 out of 11 15 -sublist 2 ['H22-C14-O6', 'H'] -list1 12 ['H22-C14-O6', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 16 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 15 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 0 6 out of 11 15 -sublist 2 ['H22-C14-O6', 'H'] -list1 12 ['H22-C14-O6', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 16 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 15 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 0 7 out of 11 15 -sublist 2 ['H22-C14-O6', 'H'] -list1 12 ['H22-C14-O6', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 16 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 15 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 0 8 out of 11 15 -sublist 2 ['H22-C14-O6', 'H'] -list1 12 ['H22-C14-O6', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 16 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 15 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 0 9 out of 11 15 -sublist 2 ['H22-C14-O6', 'H'] -list1 12 ['H22-C14-O6', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 16 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 15 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 0 10 out of 11 15 -sublist 2 ['H22-C14-O6', 'H'] -list1 12 ['H22-C14-O6', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 16 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 15 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 0 11 out of 11 15 -sublist 2 ['H22-C14-O6', 'H'] -list1 12 ['H22-C14-O6', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 16 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 15 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 0 12 out of 11 15 -sublist 2 ['H22-C14-O6', 'H'] -list1 12 ['H22-C14-O6', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 16 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 15 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 0 13 out of 11 15 -sublist 2 ['H22-C14-O6', 'H'] -list1 12 ['H22-C14-O6', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 16 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 15 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 0 14 out of 11 15 -sublist 2 ['H22-C14-O6', 'H'] -list1 12 ['H22-C14-O6', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 16 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 15 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 0 15 out of 11 15 -sublist 2 ['H22-C14-O6', 'H'] -list1 12 ['H22-C14-O6', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 16 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 15 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 1 0 out of 11 15 -sublist 2 ['H18-C9-O5', 'H'] -list1 12 ['H22-C14-O6', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 16 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H22-C14-O6', 'H15-C7-O3', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 15 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 167 with 12 and 16 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H18-C9-O5', 'H'] - -Fragments to allocate: 1 1 out of 11 15 -sublist 2 ['H22-C14-O6', 'H'] -list1 12 ['H18-C9-O5', 'H22-C14-O6', 'H15-C7-O3', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 16 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 15 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 1 2 out of 11 15 -sublist 2 ['H22-C14-O6', 'H'] -list1 12 ['H18-C9-O5', 'H22-C14-O6', 'H15-C7-O3', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 16 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 15 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 1 3 out of 11 15 -sublist 2 ['H22-C14-O6', 'H'] -list1 12 ['H18-C9-O5', 'H22-C14-O6', 'H15-C7-O3', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 16 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 15 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 1 4 out of 11 15 -sublist 2 ['H22-C14-O6', 'H'] -list1 12 ['H18-C9-O5', 'H22-C14-O6', 'H15-C7-O3', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 16 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 15 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 1 5 out of 11 15 -sublist 2 ['H22-C14-O6', 'H'] -list1 12 ['H18-C9-O5', 'H22-C14-O6', 'H15-C7-O3', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 16 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 15 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 1 6 out of 11 15 -sublist 2 ['H22-C14-O6', 'H'] -list1 12 ['H18-C9-O5', 'H22-C14-O6', 'H15-C7-O3', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 16 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 15 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 1 7 out of 11 15 -sublist 2 ['H22-C14-O6', 'H'] -list1 12 ['H18-C9-O5', 'H22-C14-O6', 'H15-C7-O3', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 16 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 15 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 1 8 out of 11 15 -sublist 2 ['H22-C14-O6', 'H'] -list1 12 ['H18-C9-O5', 'H22-C14-O6', 'H15-C7-O3', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 16 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 15 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 1 9 out of 11 15 -sublist 2 ['H22-C14-O6', 'H'] -list1 12 ['H18-C9-O5', 'H22-C14-O6', 'H15-C7-O3', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 16 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 15 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 1 10 out of 11 15 -sublist 2 ['H22-C14-O6', 'H'] -list1 12 ['H18-C9-O5', 'H22-C14-O6', 'H15-C7-O3', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 16 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 15 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 1 11 out of 11 15 -sublist 2 ['H22-C14-O6', 'H'] -list1 12 ['H18-C9-O5', 'H22-C14-O6', 'H15-C7-O3', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 16 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 15 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 1 12 out of 11 15 -sublist 2 ['H22-C14-O6', 'H'] -list1 12 ['H18-C9-O5', 'H22-C14-O6', 'H15-C7-O3', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 16 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 15 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 1 13 out of 11 15 -sublist 2 ['H22-C14-O6', 'H'] -list1 12 ['H18-C9-O5', 'H22-C14-O6', 'H15-C7-O3', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 16 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 15 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 1 14 out of 11 15 -sublist 2 ['H22-C14-O6', 'H'] -list1 12 ['H18-C9-O5', 'H22-C14-O6', 'H15-C7-O3', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 16 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 15 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 1 15 out of 11 15 -sublist 2 ['H22-C14-O6', 'H'] -list1 12 ['H18-C9-O5', 'H22-C14-O6', 'H15-C7-O3', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 16 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 15 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 2 0 out of 11 15 -sublist 2 ['H15-C7-O3', 'H'] -list1 12 ['H18-C9-O5', 'H22-C14-O6', 'H15-C7-O3', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 16 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H18-C9-O5', 'H22-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 15 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 183 with 12 and 16 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H15-C7-O3', 'H'] - -Fragments to allocate: 2 1 out of 11 15 -sublist 2 ['H22-C14-O6', 'H'] -list1 12 ['H15-C7-O3', 'H18-C9-O5', 'H22-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 16 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H15-C7-O3', 'H18-C9-O5', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 15 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 2 2 out of 11 15 -sublist 2 ['H22-C14-O6', 'H'] -list1 12 ['H15-C7-O3', 'H18-C9-O5', 'H22-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 16 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H15-C7-O3', 'H18-C9-O5', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 15 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 2 3 out of 11 15 -sublist 2 ['H22-C14-O6', 'H'] -list1 12 ['H15-C7-O3', 'H18-C9-O5', 'H22-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 16 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H15-C7-O3', 'H18-C9-O5', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 15 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 2 4 out of 11 15 -sublist 2 ['H22-C14-O6', 'H'] -list1 12 ['H15-C7-O3', 'H18-C9-O5', 'H22-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 16 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H15-C7-O3', 'H18-C9-O5', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 15 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 2 5 out of 11 15 -sublist 2 ['H22-C14-O6', 'H'] -list1 12 ['H15-C7-O3', 'H18-C9-O5', 'H22-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 16 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H15-C7-O3', 'H18-C9-O5', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 15 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 2 6 out of 11 15 -sublist 2 ['H22-C14-O6', 'H'] -list1 12 ['H15-C7-O3', 'H18-C9-O5', 'H22-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 16 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H15-C7-O3', 'H18-C9-O5', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 15 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 2 7 out of 11 15 -sublist 2 ['H22-C14-O6', 'H'] -list1 12 ['H15-C7-O3', 'H18-C9-O5', 'H22-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 16 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H15-C7-O3', 'H18-C9-O5', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 15 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 2 8 out of 11 15 -sublist 2 ['H22-C14-O6', 'H'] -list1 12 ['H15-C7-O3', 'H18-C9-O5', 'H22-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 16 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H15-C7-O3', 'H18-C9-O5', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 15 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 2 9 out of 11 15 -sublist 2 ['H22-C14-O6', 'H'] -list1 12 ['H15-C7-O3', 'H18-C9-O5', 'H22-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 16 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H15-C7-O3', 'H18-C9-O5', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 15 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 2 10 out of 11 15 -sublist 2 ['H22-C14-O6', 'H'] -list1 12 ['H15-C7-O3', 'H18-C9-O5', 'H22-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 16 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H15-C7-O3', 'H18-C9-O5', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 15 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 2 11 out of 11 15 -sublist 2 ['H22-C14-O6', 'H'] -list1 12 ['H15-C7-O3', 'H18-C9-O5', 'H22-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 16 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H15-C7-O3', 'H18-C9-O5', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 15 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 2 12 out of 11 15 -sublist 2 ['H22-C14-O6', 'H'] -list1 12 ['H15-C7-O3', 'H18-C9-O5', 'H22-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 16 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H15-C7-O3', 'H18-C9-O5', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 15 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 2 13 out of 11 15 -sublist 2 ['H22-C14-O6', 'H'] -list1 12 ['H15-C7-O3', 'H18-C9-O5', 'H22-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 16 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H15-C7-O3', 'H18-C9-O5', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 15 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 2 14 out of 11 15 -sublist 2 ['H22-C14-O6', 'H'] -list1 12 ['H15-C7-O3', 'H18-C9-O5', 'H22-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 16 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H15-C7-O3', 'H18-C9-O5', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 15 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 2 15 out of 11 15 -sublist 2 ['H22-C14-O6', 'H'] -list1 12 ['H15-C7-O3', 'H18-C9-O5', 'H22-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 16 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H15-C7-O3', 'H18-C9-O5', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 15 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 3 0 out of 11 15 -sublist 2 ['H17-C11-O9', 'H'] -list1 12 ['H15-C7-O3', 'H18-C9-O5', 'H22-C14-O6', 'H17-C11-O9', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 16 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H15-C7-O3', 'H18-C9-O5', 'H22-C14-O6', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 15 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 199 with 12 and 16 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'O', 'C', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'H', 'C', 'H', 'O', 'H', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H17-C11-O9', 'H'] - -Fragments to allocate: 3 1 out of 11 15 -sublist 2 ['H22-C14-O6', 'H'] -list1 12 ['H17-C11-O9', 'H15-C7-O3', 'H18-C9-O5', 'H22-C14-O6', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 16 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H17-C11-O9', 'H15-C7-O3', 'H18-C9-O5', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 15 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 3 2 out of 11 15 -sublist 2 ['H22-C14-O6', 'H'] -list1 12 ['H17-C11-O9', 'H15-C7-O3', 'H18-C9-O5', 'H22-C14-O6', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 16 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H17-C11-O9', 'H15-C7-O3', 'H18-C9-O5', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 15 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 3 3 out of 11 15 -sublist 2 ['H22-C14-O6', 'H'] -list1 12 ['H17-C11-O9', 'H15-C7-O3', 'H18-C9-O5', 'H22-C14-O6', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 16 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H17-C11-O9', 'H15-C7-O3', 'H18-C9-O5', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 15 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 3 4 out of 11 15 -sublist 2 ['H22-C14-O6', 'H'] -list1 12 ['H17-C11-O9', 'H15-C7-O3', 'H18-C9-O5', 'H22-C14-O6', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 16 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H17-C11-O9', 'H15-C7-O3', 'H18-C9-O5', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 15 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 3 5 out of 11 15 -sublist 2 ['H22-C14-O6', 'H'] -list1 12 ['H17-C11-O9', 'H15-C7-O3', 'H18-C9-O5', 'H22-C14-O6', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 16 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H17-C11-O9', 'H15-C7-O3', 'H18-C9-O5', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 15 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 3 6 out of 11 15 -sublist 2 ['H22-C14-O6', 'H'] -list1 12 ['H17-C11-O9', 'H15-C7-O3', 'H18-C9-O5', 'H22-C14-O6', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 16 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H17-C11-O9', 'H15-C7-O3', 'H18-C9-O5', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 15 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 3 7 out of 11 15 -sublist 2 ['H22-C14-O6', 'H'] -list1 12 ['H17-C11-O9', 'H15-C7-O3', 'H18-C9-O5', 'H22-C14-O6', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 16 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H17-C11-O9', 'H15-C7-O3', 'H18-C9-O5', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 15 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 3 8 out of 11 15 -sublist 2 ['H22-C14-O6', 'H'] -list1 12 ['H17-C11-O9', 'H15-C7-O3', 'H18-C9-O5', 'H22-C14-O6', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 16 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H17-C11-O9', 'H15-C7-O3', 'H18-C9-O5', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 15 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 3 9 out of 11 15 -sublist 2 ['H22-C14-O6', 'H'] -list1 12 ['H17-C11-O9', 'H15-C7-O3', 'H18-C9-O5', 'H22-C14-O6', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 16 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H17-C11-O9', 'H15-C7-O3', 'H18-C9-O5', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 15 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 3 10 out of 11 15 -sublist 2 ['H22-C14-O6', 'H'] -list1 12 ['H17-C11-O9', 'H15-C7-O3', 'H18-C9-O5', 'H22-C14-O6', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 16 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H17-C11-O9', 'H15-C7-O3', 'H18-C9-O5', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 15 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 3 11 out of 11 15 -sublist 2 ['H22-C14-O6', 'H'] -list1 12 ['H17-C11-O9', 'H15-C7-O3', 'H18-C9-O5', 'H22-C14-O6', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 16 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H17-C11-O9', 'H15-C7-O3', 'H18-C9-O5', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 15 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 3 12 out of 11 15 -sublist 2 ['H22-C14-O6', 'H'] -list1 12 ['H17-C11-O9', 'H15-C7-O3', 'H18-C9-O5', 'H22-C14-O6', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 16 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H17-C11-O9', 'H15-C7-O3', 'H18-C9-O5', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 15 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 3 13 out of 11 15 -sublist 2 ['H22-C14-O6', 'H'] -list1 12 ['H17-C11-O9', 'H15-C7-O3', 'H18-C9-O5', 'H22-C14-O6', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 16 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H17-C11-O9', 'H15-C7-O3', 'H18-C9-O5', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 15 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 3 14 out of 11 15 -sublist 2 ['H22-C14-O6', 'H'] -list1 12 ['H17-C11-O9', 'H15-C7-O3', 'H18-C9-O5', 'H22-C14-O6', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 16 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H17-C11-O9', 'H15-C7-O3', 'H18-C9-O5', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 15 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 3 15 out of 11 15 -sublist 2 ['H22-C14-O6', 'H'] -list1 12 ['H17-C11-O9', 'H15-C7-O3', 'H18-C9-O5', 'H22-C14-O6', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 16 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H17-C11-O9', 'H15-C7-O3', 'H18-C9-O5', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 15 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 4 0 out of 11 15 -sublist 2 ['H17-C11-O10', 'H'] -list1 12 ['H17-C11-O9', 'H15-C7-O3', 'H18-C9-O5', 'H22-C14-O6', 'H17-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 16 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H17-C11-O9', 'H15-C7-O3', 'H18-C9-O5', 'H22-C14-O6', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 15 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 215 with 12 and 16 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'O', 'O', 'O', 'O', 'C', 'C', 'O', 'O', 'C', 'O', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 1 -SPILT_SPECIES: Laplacian lap=array([[-2, 0, 0, ..., 0, 0, 0], - [ 0, -2, 0, ..., 0, 0, 0], - [ 0, 0, -2, ..., 0, 0, 0], - ..., - [ 0, 0, 0, ..., -2, 0, 0], - [ 0, 0, 0, ..., 0, -1, 0], - [ 0, 0, 0, ..., 0, 0, -1]]) -SPILT_SPECIES: graph=<39x39 sparse matrix of type '' - with 135 stored elements in Compressed Sparse Row format> -COMBINE. received molecule: ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 39 - Formula = H18-C11-O10 - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES ---------------------------------------------------- - from merge fragments -COMBINE: Fragment H18-C11-O10 added to avglist -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 1 ['H18-C11-O10'] -SEQUENTIAL: badlist 0 [] - -Fragments to allocate: 0 1 out of 11 14 -sublist 2 ['H18-C11-O10', 'H'] -list1 12 ['H18-C11-O10', 'H17-C11-O9', 'H15-C7-O3', 'H18-C9-O5', 'H22-C14-O6', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 15 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H17-C11-O9', 'H15-C7-O3', 'H18-C9-O5', 'H22-C14-O6', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 14 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 216 with 12 and 15 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'O', 'O', 'O', 'O', 'C', 'C', 'O', 'O', 'C', 'O', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H18-C11-O10', 'H'] - -Fragments to allocate: 0 2 out of 11 14 -sublist 2 ['H18-C11-O10', 'H'] -list1 12 ['H18-C11-O10', 'H17-C11-O9', 'H15-C7-O3', 'H18-C9-O5', 'H22-C14-O6', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 15 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H17-C11-O9', 'H15-C7-O3', 'H18-C9-O5', 'H22-C14-O6', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 14 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 217 with 12 and 15 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'O', 'O', 'O', 'O', 'C', 'C', 'O', 'O', 'C', 'O', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 1 -SPILT_SPECIES: Laplacian lap=array([[-2, 0, 0, ..., 0, 0, 0], - [ 0, -2, 0, ..., 0, 0, 0], - [ 0, 0, -2, ..., 0, 0, 0], - ..., - [ 0, 0, 0, ..., -1, 0, 0], - [ 0, 0, 0, ..., 0, -1, 0], - [ 0, 0, 0, ..., 0, 0, -1]]) -SPILT_SPECIES: graph=<40x40 sparse matrix of type '' - with 138 stored elements in Compressed Sparse Row format> -COMBINE. received molecule: ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 40 - Formula = H19-C11-O10 - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES ---------------------------------------------------- - from merge fragments -COMBINE: Fragment H19-C11-O10 added to avglist -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 1 ['H19-C11-O10'] -SEQUENTIAL: badlist 0 [] - -Fragments to allocate: 0 1 out of 11 13 -sublist 2 ['H19-C11-O10', 'H'] -list1 12 ['H19-C11-O10', 'H17-C11-O9', 'H15-C7-O3', 'H18-C9-O5', 'H22-C14-O6', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 14 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H17-C11-O9', 'H15-C7-O3', 'H18-C9-O5', 'H22-C14-O6', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 218 with 12 and 14 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'O', 'O', 'O', 'O', 'C', 'C', 'O', 'O', 'C', 'O', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H19-C11-O10', 'H'] - -Fragments to allocate: 0 2 out of 11 13 -sublist 2 ['H19-C11-O10', 'H'] -list1 12 ['H19-C11-O10', 'H17-C11-O9', 'H15-C7-O3', 'H18-C9-O5', 'H22-C14-O6', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 14 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H17-C11-O9', 'H15-C7-O3', 'H18-C9-O5', 'H22-C14-O6', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 219 with 12 and 14 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'O', 'O', 'O', 'O', 'C', 'C', 'O', 'O', 'C', 'O', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H19-C11-O10', 'H'] - -Fragments to allocate: 0 3 out of 11 13 -sublist 2 ['H19-C11-O10', 'H'] -list1 12 ['H19-C11-O10', 'H17-C11-O9', 'H15-C7-O3', 'H18-C9-O5', 'H22-C14-O6', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 14 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H17-C11-O9', 'H15-C7-O3', 'H18-C9-O5', 'H22-C14-O6', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 220 with 12 and 14 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'O', 'O', 'O', 'O', 'C', 'C', 'O', 'O', 'C', 'O', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H19-C11-O10', 'H'] - -Fragments to allocate: 0 4 out of 11 13 -sublist 2 ['H19-C11-O10', 'H'] -list1 12 ['H19-C11-O10', 'H17-C11-O9', 'H15-C7-O3', 'H18-C9-O5', 'H22-C14-O6', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 14 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H17-C11-O9', 'H15-C7-O3', 'H18-C9-O5', 'H22-C14-O6', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 221 with 12 and 14 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'O', 'O', 'O', 'O', 'C', 'C', 'O', 'O', 'C', 'O', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H19-C11-O10', 'H'] - -Fragments to allocate: 0 5 out of 11 13 -sublist 2 ['H19-C11-O10', 'H'] -list1 12 ['H19-C11-O10', 'H17-C11-O9', 'H15-C7-O3', 'H18-C9-O5', 'H22-C14-O6', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 14 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H17-C11-O9', 'H15-C7-O3', 'H18-C9-O5', 'H22-C14-O6', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 222 with 12 and 14 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'O', 'O', 'O', 'O', 'C', 'C', 'O', 'O', 'C', 'O', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H19-C11-O10', 'H'] - -Fragments to allocate: 0 6 out of 11 13 -sublist 2 ['H19-C11-O10', 'H'] -list1 12 ['H19-C11-O10', 'H17-C11-O9', 'H15-C7-O3', 'H18-C9-O5', 'H22-C14-O6', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 14 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H17-C11-O9', 'H15-C7-O3', 'H18-C9-O5', 'H22-C14-O6', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 223 with 12 and 14 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'O', 'O', 'O', 'O', 'C', 'C', 'O', 'O', 'C', 'O', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H19-C11-O10', 'H'] - -Fragments to allocate: 0 7 out of 11 13 -sublist 2 ['H19-C11-O10', 'H'] -list1 12 ['H19-C11-O10', 'H17-C11-O9', 'H15-C7-O3', 'H18-C9-O5', 'H22-C14-O6', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 14 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H17-C11-O9', 'H15-C7-O3', 'H18-C9-O5', 'H22-C14-O6', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 224 with 12 and 14 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'O', 'O', 'O', 'O', 'C', 'C', 'O', 'O', 'C', 'O', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H19-C11-O10', 'H'] - -Fragments to allocate: 0 8 out of 11 13 -sublist 2 ['H19-C11-O10', 'H'] -list1 12 ['H19-C11-O10', 'H17-C11-O9', 'H15-C7-O3', 'H18-C9-O5', 'H22-C14-O6', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 14 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H17-C11-O9', 'H15-C7-O3', 'H18-C9-O5', 'H22-C14-O6', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 225 with 12 and 14 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'O', 'O', 'O', 'O', 'C', 'C', 'O', 'O', 'C', 'O', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 1 -SPILT_SPECIES: Laplacian lap=array([[-3, 0, 0, ..., 0, 0, 1], - [ 0, -2, 0, ..., 0, 0, 0], - [ 0, 0, -2, ..., 0, 0, 0], - ..., - [ 0, 0, 0, ..., -1, 0, 0], - [ 0, 0, 0, ..., 0, -1, 0], - [ 1, 0, 0, ..., 0, 0, -3]]) -SPILT_SPECIES: graph=<41x41 sparse matrix of type '' - with 145 stored elements in Compressed Sparse Row format> -COMBINE. received molecule: ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 41 - Formula = H20-C11-O10 - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES ---------------------------------------------------- - from merge fragments -COMBINE: Fragment H20-C11-O10 added to avglist -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 1 ['H20-C11-O10'] -SEQUENTIAL: badlist 0 [] - -Fragments to allocate: 0 1 out of 11 12 -sublist 2 ['H20-C11-O10', 'H'] -list1 12 ['H20-C11-O10', 'H17-C11-O9', 'H15-C7-O3', 'H18-C9-O5', 'H22-C14-O6', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H17-C11-O9', 'H15-C7-O3', 'H18-C9-O5', 'H22-C14-O6', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 226 with 12 and 13 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'O', 'O', 'O', 'O', 'C', 'C', 'O', 'O', 'C', 'O', 'H', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H20-C11-O10', 'H'] - -Fragments to allocate: 0 2 out of 11 12 -sublist 2 ['H20-C11-O10', 'H'] -list1 12 ['H20-C11-O10', 'H17-C11-O9', 'H15-C7-O3', 'H18-C9-O5', 'H22-C14-O6', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H17-C11-O9', 'H15-C7-O3', 'H18-C9-O5', 'H22-C14-O6', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 227 with 12 and 13 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'O', 'O', 'O', 'O', 'C', 'C', 'O', 'O', 'C', 'O', 'H', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H20-C11-O10', 'H'] - -Fragments to allocate: 0 3 out of 11 12 -sublist 2 ['H20-C11-O10', 'H'] -list1 12 ['H20-C11-O10', 'H17-C11-O9', 'H15-C7-O3', 'H18-C9-O5', 'H22-C14-O6', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H17-C11-O9', 'H15-C7-O3', 'H18-C9-O5', 'H22-C14-O6', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 228 with 12 and 13 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'O', 'O', 'O', 'O', 'C', 'C', 'O', 'O', 'C', 'O', 'H', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H20-C11-O10', 'H'] - -Fragments to allocate: 0 4 out of 11 12 -sublist 2 ['H20-C11-O10', 'H'] -list1 12 ['H20-C11-O10', 'H17-C11-O9', 'H15-C7-O3', 'H18-C9-O5', 'H22-C14-O6', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H17-C11-O9', 'H15-C7-O3', 'H18-C9-O5', 'H22-C14-O6', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 229 with 12 and 13 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'O', 'O', 'O', 'O', 'C', 'C', 'O', 'O', 'C', 'O', 'H', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H20-C11-O10', 'H'] - -Fragments to allocate: 0 5 out of 11 12 -sublist 2 ['H20-C11-O10', 'H'] -list1 12 ['H20-C11-O10', 'H17-C11-O9', 'H15-C7-O3', 'H18-C9-O5', 'H22-C14-O6', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H17-C11-O9', 'H15-C7-O3', 'H18-C9-O5', 'H22-C14-O6', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 230 with 12 and 13 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'O', 'O', 'O', 'O', 'C', 'C', 'O', 'O', 'C', 'O', 'H', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H20-C11-O10', 'H'] - -Fragments to allocate: 0 6 out of 11 12 -sublist 2 ['H20-C11-O10', 'H'] -list1 12 ['H20-C11-O10', 'H17-C11-O9', 'H15-C7-O3', 'H18-C9-O5', 'H22-C14-O6', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H17-C11-O9', 'H15-C7-O3', 'H18-C9-O5', 'H22-C14-O6', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 231 with 12 and 13 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'O', 'O', 'O', 'O', 'C', 'C', 'O', 'O', 'C', 'O', 'H', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H20-C11-O10', 'H'] - -Fragments to allocate: 0 7 out of 11 12 -sublist 2 ['H20-C11-O10', 'H'] -list1 12 ['H20-C11-O10', 'H17-C11-O9', 'H15-C7-O3', 'H18-C9-O5', 'H22-C14-O6', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H17-C11-O9', 'H15-C7-O3', 'H18-C9-O5', 'H22-C14-O6', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 232 with 12 and 13 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'O', 'O', 'O', 'O', 'C', 'C', 'O', 'O', 'C', 'O', 'H', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H20-C11-O10', 'H'] - -Fragments to allocate: 0 8 out of 11 12 -sublist 2 ['H20-C11-O10', 'H'] -list1 12 ['H20-C11-O10', 'H17-C11-O9', 'H15-C7-O3', 'H18-C9-O5', 'H22-C14-O6', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H17-C11-O9', 'H15-C7-O3', 'H18-C9-O5', 'H22-C14-O6', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 233 with 12 and 13 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'O', 'O', 'O', 'O', 'C', 'C', 'O', 'O', 'C', 'O', 'H', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H20-C11-O10', 'H'] - -Fragments to allocate: 0 9 out of 11 12 -sublist 2 ['H20-C11-O10', 'H'] -list1 12 ['H20-C11-O10', 'H17-C11-O9', 'H15-C7-O3', 'H18-C9-O5', 'H22-C14-O6', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H17-C11-O9', 'H15-C7-O3', 'H18-C9-O5', 'H22-C14-O6', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 234 with 12 and 13 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'O', 'O', 'O', 'O', 'C', 'C', 'O', 'O', 'C', 'O', 'H', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H20-C11-O10', 'H'] - -Fragments to allocate: 0 10 out of 11 12 -sublist 2 ['H20-C11-O10', 'H'] -list1 12 ['H20-C11-O10', 'H17-C11-O9', 'H15-C7-O3', 'H18-C9-O5', 'H22-C14-O6', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H17-C11-O9', 'H15-C7-O3', 'H18-C9-O5', 'H22-C14-O6', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 235 with 12 and 13 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'O', 'O', 'O', 'O', 'C', 'C', 'O', 'O', 'C', 'O', 'H', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H20-C11-O10', 'H'] - -Fragments to allocate: 0 11 out of 11 12 -sublist 2 ['H20-C11-O10', 'H'] -list1 12 ['H20-C11-O10', 'H17-C11-O9', 'H15-C7-O3', 'H18-C9-O5', 'H22-C14-O6', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H17-C11-O9', 'H15-C7-O3', 'H18-C9-O5', 'H22-C14-O6', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 236 with 12 and 13 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'O', 'O', 'O', 'O', 'C', 'C', 'O', 'O', 'C', 'O', 'H', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H20-C11-O10', 'H'] - -Fragments to allocate: 0 12 out of 11 12 -sublist 2 ['H20-C11-O10', 'H'] -list1 12 ['H20-C11-O10', 'H17-C11-O9', 'H15-C7-O3', 'H18-C9-O5', 'H22-C14-O6', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H17-C11-O9', 'H15-C7-O3', 'H18-C9-O5', 'H22-C14-O6', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 237 with 12 and 13 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'O', 'O', 'O', 'O', 'C', 'C', 'O', 'O', 'C', 'O', 'H', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H20-C11-O10', 'H'] - -Fragments to allocate: 1 0 out of 11 12 -sublist 2 ['H17-C11-O9', 'H'] -list1 12 ['H20-C11-O10', 'H17-C11-O9', 'H15-C7-O3', 'H18-C9-O5', 'H22-C14-O6', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H20-C11-O10', 'H15-C7-O3', 'H18-C9-O5', 'H22-C14-O6', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 238 with 12 and 13 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'O', 'C', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'H', 'C', 'H', 'O', 'H', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H17-C11-O9', 'H'] - -Fragments to allocate: 1 1 out of 11 12 -sublist 2 ['H20-C11-O10', 'H'] -list1 12 ['H17-C11-O9', 'H20-C11-O10', 'H15-C7-O3', 'H18-C9-O5', 'H22-C14-O6', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H17-C11-O9', 'H15-C7-O3', 'H18-C9-O5', 'H22-C14-O6', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 239 with 12 and 13 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'O', 'O', 'O', 'O', 'C', 'C', 'O', 'O', 'C', 'O', 'H', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H20-C11-O10', 'H'] - -Fragments to allocate: 1 2 out of 11 12 -sublist 2 ['H17-C11-O9', 'H'] -list1 12 ['H20-C11-O10', 'H17-C11-O9', 'H15-C7-O3', 'H18-C9-O5', 'H22-C14-O6', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H20-C11-O10', 'H15-C7-O3', 'H18-C9-O5', 'H22-C14-O6', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 240 with 12 and 13 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'O', 'C', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'H', 'C', 'H', 'O', 'H', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H17-C11-O9', 'H'] - -Fragments to allocate: 1 3 out of 11 12 -sublist 2 ['H20-C11-O10', 'H'] -list1 12 ['H17-C11-O9', 'H20-C11-O10', 'H15-C7-O3', 'H18-C9-O5', 'H22-C14-O6', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H17-C11-O9', 'H15-C7-O3', 'H18-C9-O5', 'H22-C14-O6', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 241 with 12 and 13 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'O', 'O', 'O', 'O', 'C', 'C', 'O', 'O', 'C', 'O', 'H', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H20-C11-O10', 'H'] - -Fragments to allocate: 1 4 out of 11 12 -sublist 2 ['H17-C11-O9', 'H'] -list1 12 ['H20-C11-O10', 'H17-C11-O9', 'H15-C7-O3', 'H18-C9-O5', 'H22-C14-O6', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H20-C11-O10', 'H15-C7-O3', 'H18-C9-O5', 'H22-C14-O6', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 242 with 12 and 13 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'O', 'C', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'H', 'C', 'H', 'O', 'H', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H17-C11-O9', 'H'] - -Fragments to allocate: 1 5 out of 11 12 -sublist 2 ['H20-C11-O10', 'H'] -list1 12 ['H17-C11-O9', 'H20-C11-O10', 'H15-C7-O3', 'H18-C9-O5', 'H22-C14-O6', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H17-C11-O9', 'H15-C7-O3', 'H18-C9-O5', 'H22-C14-O6', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 243 with 12 and 13 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'O', 'O', 'O', 'O', 'C', 'C', 'O', 'O', 'C', 'O', 'H', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H20-C11-O10', 'H'] - -Fragments to allocate: 1 6 out of 11 12 -sublist 2 ['H17-C11-O9', 'H'] -list1 12 ['H20-C11-O10', 'H17-C11-O9', 'H15-C7-O3', 'H18-C9-O5', 'H22-C14-O6', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H20-C11-O10', 'H15-C7-O3', 'H18-C9-O5', 'H22-C14-O6', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 244 with 12 and 13 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'O', 'C', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'H', 'C', 'H', 'O', 'H', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H17-C11-O9', 'H'] - -Fragments to allocate: 1 7 out of 11 12 -sublist 2 ['H20-C11-O10', 'H'] -list1 12 ['H17-C11-O9', 'H20-C11-O10', 'H15-C7-O3', 'H18-C9-O5', 'H22-C14-O6', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H17-C11-O9', 'H15-C7-O3', 'H18-C9-O5', 'H22-C14-O6', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 245 with 12 and 13 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'O', 'O', 'O', 'O', 'C', 'C', 'O', 'O', 'C', 'O', 'H', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H20-C11-O10', 'H'] - -Fragments to allocate: 1 8 out of 11 12 -sublist 2 ['H17-C11-O9', 'H'] -list1 12 ['H20-C11-O10', 'H17-C11-O9', 'H15-C7-O3', 'H18-C9-O5', 'H22-C14-O6', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H20-C11-O10', 'H15-C7-O3', 'H18-C9-O5', 'H22-C14-O6', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 246 with 12 and 13 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'O', 'C', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'H', 'C', 'H', 'O', 'H', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H17-C11-O9', 'H'] - -Fragments to allocate: 1 9 out of 11 12 -sublist 2 ['H20-C11-O10', 'H'] -list1 12 ['H17-C11-O9', 'H20-C11-O10', 'H15-C7-O3', 'H18-C9-O5', 'H22-C14-O6', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H17-C11-O9', 'H15-C7-O3', 'H18-C9-O5', 'H22-C14-O6', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 247 with 12 and 13 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'O', 'O', 'O', 'O', 'C', 'C', 'O', 'O', 'C', 'O', 'H', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H20-C11-O10', 'H'] - -Fragments to allocate: 1 10 out of 11 12 -sublist 2 ['H17-C11-O9', 'H'] -list1 12 ['H20-C11-O10', 'H17-C11-O9', 'H15-C7-O3', 'H18-C9-O5', 'H22-C14-O6', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H20-C11-O10', 'H15-C7-O3', 'H18-C9-O5', 'H22-C14-O6', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 248 with 12 and 13 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'O', 'C', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'H', 'C', 'H', 'O', 'H', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H17-C11-O9', 'H'] - -Fragments to allocate: 1 11 out of 11 12 -sublist 2 ['H20-C11-O10', 'H'] -list1 12 ['H17-C11-O9', 'H20-C11-O10', 'H15-C7-O3', 'H18-C9-O5', 'H22-C14-O6', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H17-C11-O9', 'H15-C7-O3', 'H18-C9-O5', 'H22-C14-O6', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 249 with 12 and 13 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'O', 'O', 'O', 'O', 'C', 'C', 'O', 'O', 'C', 'O', 'H', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H20-C11-O10', 'H'] - -Fragments to allocate: 1 12 out of 11 12 -sublist 2 ['H17-C11-O9', 'H'] -list1 12 ['H20-C11-O10', 'H17-C11-O9', 'H15-C7-O3', 'H18-C9-O5', 'H22-C14-O6', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H20-C11-O10', 'H15-C7-O3', 'H18-C9-O5', 'H22-C14-O6', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 250 with 12 and 13 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'O', 'C', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'H', 'C', 'H', 'O', 'H', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H17-C11-O9', 'H'] - -Fragments to allocate: 2 0 out of 11 12 -sublist 2 ['H15-C7-O3', 'H'] -list1 12 ['H17-C11-O9', 'H20-C11-O10', 'H15-C7-O3', 'H18-C9-O5', 'H22-C14-O6', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H17-C11-O9', 'H20-C11-O10', 'H18-C9-O5', 'H22-C14-O6', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 251 with 12 and 13 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H15-C7-O3', 'H'] - -Fragments to allocate: 2 1 out of 11 12 -sublist 2 ['H20-C11-O10', 'H'] -list1 12 ['H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H18-C9-O5', 'H22-C14-O6', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H15-C7-O3', 'H17-C11-O9', 'H18-C9-O5', 'H22-C14-O6', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 252 with 12 and 13 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'O', 'O', 'O', 'O', 'C', 'C', 'O', 'O', 'C', 'O', 'H', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H20-C11-O10', 'H'] - -Fragments to allocate: 2 2 out of 11 12 -sublist 2 ['H17-C11-O9', 'H'] -list1 12 ['H20-C11-O10', 'H15-C7-O3', 'H17-C11-O9', 'H18-C9-O5', 'H22-C14-O6', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H20-C11-O10', 'H15-C7-O3', 'H18-C9-O5', 'H22-C14-O6', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 253 with 12 and 13 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'O', 'C', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'H', 'C', 'H', 'O', 'H', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H17-C11-O9', 'H'] - -Fragments to allocate: 2 3 out of 11 12 -sublist 2 ['H15-C7-O3', 'H'] -list1 12 ['H17-C11-O9', 'H20-C11-O10', 'H15-C7-O3', 'H18-C9-O5', 'H22-C14-O6', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H17-C11-O9', 'H20-C11-O10', 'H18-C9-O5', 'H22-C14-O6', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 254 with 12 and 13 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H15-C7-O3', 'H'] - -Fragments to allocate: 2 4 out of 11 12 -sublist 2 ['H20-C11-O10', 'H'] -list1 12 ['H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H18-C9-O5', 'H22-C14-O6', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H15-C7-O3', 'H17-C11-O9', 'H18-C9-O5', 'H22-C14-O6', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 255 with 12 and 13 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'O', 'O', 'O', 'O', 'C', 'C', 'O', 'O', 'C', 'O', 'H', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H20-C11-O10', 'H'] - -Fragments to allocate: 2 5 out of 11 12 -sublist 2 ['H17-C11-O9', 'H'] -list1 12 ['H20-C11-O10', 'H15-C7-O3', 'H17-C11-O9', 'H18-C9-O5', 'H22-C14-O6', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H20-C11-O10', 'H15-C7-O3', 'H18-C9-O5', 'H22-C14-O6', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 256 with 12 and 13 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'O', 'C', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'H', 'C', 'H', 'O', 'H', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H17-C11-O9', 'H'] - -Fragments to allocate: 2 6 out of 11 12 -sublist 2 ['H15-C7-O3', 'H'] -list1 12 ['H17-C11-O9', 'H20-C11-O10', 'H15-C7-O3', 'H18-C9-O5', 'H22-C14-O6', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H17-C11-O9', 'H20-C11-O10', 'H18-C9-O5', 'H22-C14-O6', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 257 with 12 and 13 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H15-C7-O3', 'H'] - -Fragments to allocate: 2 7 out of 11 12 -sublist 2 ['H20-C11-O10', 'H'] -list1 12 ['H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H18-C9-O5', 'H22-C14-O6', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H15-C7-O3', 'H17-C11-O9', 'H18-C9-O5', 'H22-C14-O6', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 258 with 12 and 13 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'O', 'O', 'O', 'O', 'C', 'C', 'O', 'O', 'C', 'O', 'H', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H20-C11-O10', 'H'] - -Fragments to allocate: 2 8 out of 11 12 -sublist 2 ['H17-C11-O9', 'H'] -list1 12 ['H20-C11-O10', 'H15-C7-O3', 'H17-C11-O9', 'H18-C9-O5', 'H22-C14-O6', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H20-C11-O10', 'H15-C7-O3', 'H18-C9-O5', 'H22-C14-O6', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 259 with 12 and 13 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'O', 'C', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'H', 'C', 'H', 'O', 'H', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H17-C11-O9', 'H'] - -Fragments to allocate: 2 9 out of 11 12 -sublist 2 ['H15-C7-O3', 'H'] -list1 12 ['H17-C11-O9', 'H20-C11-O10', 'H15-C7-O3', 'H18-C9-O5', 'H22-C14-O6', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H17-C11-O9', 'H20-C11-O10', 'H18-C9-O5', 'H22-C14-O6', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 260 with 12 and 13 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H15-C7-O3', 'H'] - -Fragments to allocate: 2 10 out of 11 12 -sublist 2 ['H20-C11-O10', 'H'] -list1 12 ['H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H18-C9-O5', 'H22-C14-O6', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H15-C7-O3', 'H17-C11-O9', 'H18-C9-O5', 'H22-C14-O6', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 261 with 12 and 13 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'O', 'O', 'O', 'O', 'C', 'C', 'O', 'O', 'C', 'O', 'H', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H20-C11-O10', 'H'] - -Fragments to allocate: 2 11 out of 11 12 -sublist 2 ['H17-C11-O9', 'H'] -list1 12 ['H20-C11-O10', 'H15-C7-O3', 'H17-C11-O9', 'H18-C9-O5', 'H22-C14-O6', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H20-C11-O10', 'H15-C7-O3', 'H18-C9-O5', 'H22-C14-O6', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 262 with 12 and 13 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'O', 'C', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'H', 'C', 'H', 'O', 'H', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H17-C11-O9', 'H'] - -Fragments to allocate: 2 12 out of 11 12 -sublist 2 ['H15-C7-O3', 'H'] -list1 12 ['H17-C11-O9', 'H20-C11-O10', 'H15-C7-O3', 'H18-C9-O5', 'H22-C14-O6', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H17-C11-O9', 'H20-C11-O10', 'H18-C9-O5', 'H22-C14-O6', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 263 with 12 and 13 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H15-C7-O3', 'H'] - -Fragments to allocate: 3 0 out of 11 12 -sublist 2 ['H18-C9-O5', 'H'] -list1 12 ['H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H18-C9-O5', 'H22-C14-O6', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 264 with 12 and 13 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H18-C9-O5', 'H'] - -Fragments to allocate: 3 1 out of 11 12 -sublist 2 ['H20-C11-O10', 'H'] -list1 12 ['H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H22-C14-O6', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 265 with 12 and 13 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'O', 'O', 'O', 'O', 'C', 'C', 'O', 'O', 'C', 'O', 'H', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H20-C11-O10', 'H'] - -Fragments to allocate: 3 2 out of 11 12 -sublist 2 ['H17-C11-O9', 'H'] -list1 12 ['H20-C11-O10', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H22-C14-O6', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H20-C11-O10', 'H18-C9-O5', 'H15-C7-O3', 'H22-C14-O6', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 266 with 12 and 13 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'O', 'C', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'H', 'C', 'H', 'O', 'H', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H17-C11-O9', 'H'] - -Fragments to allocate: 3 3 out of 11 12 -sublist 2 ['H15-C7-O3', 'H'] -list1 12 ['H17-C11-O9', 'H20-C11-O10', 'H18-C9-O5', 'H15-C7-O3', 'H22-C14-O6', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H17-C11-O9', 'H20-C11-O10', 'H18-C9-O5', 'H22-C14-O6', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 267 with 12 and 13 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H15-C7-O3', 'H'] - -Fragments to allocate: 3 4 out of 11 12 -sublist 2 ['H18-C9-O5', 'H'] -list1 12 ['H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H18-C9-O5', 'H22-C14-O6', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 268 with 12 and 13 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H18-C9-O5', 'H'] - -Fragments to allocate: 3 5 out of 11 12 -sublist 2 ['H20-C11-O10', 'H'] -list1 12 ['H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H22-C14-O6', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 269 with 12 and 13 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'O', 'O', 'O', 'O', 'C', 'C', 'O', 'O', 'C', 'O', 'H', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H20-C11-O10', 'H'] - -Fragments to allocate: 3 6 out of 11 12 -sublist 2 ['H17-C11-O9', 'H'] -list1 12 ['H20-C11-O10', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H22-C14-O6', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H20-C11-O10', 'H18-C9-O5', 'H15-C7-O3', 'H22-C14-O6', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 270 with 12 and 13 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'O', 'C', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'H', 'C', 'H', 'O', 'H', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H17-C11-O9', 'H'] - -Fragments to allocate: 3 7 out of 11 12 -sublist 2 ['H15-C7-O3', 'H'] -list1 12 ['H17-C11-O9', 'H20-C11-O10', 'H18-C9-O5', 'H15-C7-O3', 'H22-C14-O6', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H17-C11-O9', 'H20-C11-O10', 'H18-C9-O5', 'H22-C14-O6', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 271 with 12 and 13 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H15-C7-O3', 'H'] - -Fragments to allocate: 3 8 out of 11 12 -sublist 2 ['H18-C9-O5', 'H'] -list1 12 ['H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H18-C9-O5', 'H22-C14-O6', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 272 with 12 and 13 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H18-C9-O5', 'H'] - -Fragments to allocate: 3 9 out of 11 12 -sublist 2 ['H20-C11-O10', 'H'] -list1 12 ['H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H22-C14-O6', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 273 with 12 and 13 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'O', 'O', 'O', 'O', 'C', 'C', 'O', 'O', 'C', 'O', 'H', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H20-C11-O10', 'H'] - -Fragments to allocate: 3 10 out of 11 12 -sublist 2 ['H17-C11-O9', 'H'] -list1 12 ['H20-C11-O10', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H22-C14-O6', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H20-C11-O10', 'H18-C9-O5', 'H15-C7-O3', 'H22-C14-O6', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 274 with 12 and 13 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'O', 'C', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'H', 'C', 'H', 'O', 'H', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H17-C11-O9', 'H'] - -Fragments to allocate: 3 11 out of 11 12 -sublist 2 ['H15-C7-O3', 'H'] -list1 12 ['H17-C11-O9', 'H20-C11-O10', 'H18-C9-O5', 'H15-C7-O3', 'H22-C14-O6', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H17-C11-O9', 'H20-C11-O10', 'H18-C9-O5', 'H22-C14-O6', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 275 with 12 and 13 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H15-C7-O3', 'H'] - -Fragments to allocate: 3 12 out of 11 12 -sublist 2 ['H18-C9-O5', 'H'] -list1 12 ['H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H18-C9-O5', 'H22-C14-O6', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 276 with 12 and 13 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H18-C9-O5', 'H'] - -Fragments to allocate: 4 0 out of 11 12 -sublist 2 ['H22-C14-O6', 'H'] -list1 12 ['H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 4 1 out of 11 12 -sublist 2 ['H22-C14-O6', 'H'] -list1 12 ['H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 4 2 out of 11 12 -sublist 2 ['H22-C14-O6', 'H'] -list1 12 ['H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 4 3 out of 11 12 -sublist 2 ['H22-C14-O6', 'H'] -list1 12 ['H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 4 4 out of 11 12 -sublist 2 ['H22-C14-O6', 'H'] -list1 12 ['H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 4 5 out of 11 12 -sublist 2 ['H22-C14-O6', 'H'] -list1 12 ['H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 4 6 out of 11 12 -sublist 2 ['H22-C14-O6', 'H'] -list1 12 ['H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 4 7 out of 11 12 -sublist 2 ['H22-C14-O6', 'H'] -list1 12 ['H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 4 8 out of 11 12 -sublist 2 ['H22-C14-O6', 'H'] -list1 12 ['H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 4 9 out of 11 12 -sublist 2 ['H22-C14-O6', 'H'] -list1 12 ['H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 4 10 out of 11 12 -sublist 2 ['H22-C14-O6', 'H'] -list1 12 ['H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 4 11 out of 11 12 -sublist 2 ['H22-C14-O6', 'H'] -list1 12 ['H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 4 12 out of 11 12 -sublist 2 ['H22-C14-O6', 'H'] -list1 12 ['H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 5 0 out of 11 12 -sublist 2 ['H3-C2', 'H'] -list1 12 ['H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H3-C2', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 290 with 12 and 13 Remaining in each list -SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H3-C2', 'H'] - -Fragments to allocate: 5 1 out of 11 12 -sublist 2 ['H22-C14-O6', 'H'] -list1 12 ['H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 5 2 out of 11 12 -sublist 2 ['H22-C14-O6', 'H'] -list1 12 ['H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 5 3 out of 11 12 -sublist 2 ['H22-C14-O6', 'H'] -list1 12 ['H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 5 4 out of 11 12 -sublist 2 ['H22-C14-O6', 'H'] -list1 12 ['H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 5 5 out of 11 12 -sublist 2 ['H22-C14-O6', 'H'] -list1 12 ['H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 5 6 out of 11 12 -sublist 2 ['H22-C14-O6', 'H'] -list1 12 ['H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 5 7 out of 11 12 -sublist 2 ['H22-C14-O6', 'H'] -list1 12 ['H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 5 8 out of 11 12 -sublist 2 ['H22-C14-O6', 'H'] -list1 12 ['H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 5 9 out of 11 12 -sublist 2 ['H22-C14-O6', 'H'] -list1 12 ['H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 5 10 out of 11 12 -sublist 2 ['H22-C14-O6', 'H'] -list1 12 ['H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 5 11 out of 11 12 -sublist 2 ['H22-C14-O6', 'H'] -list1 12 ['H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 5 12 out of 11 12 -sublist 2 ['H22-C14-O6', 'H'] -list1 12 ['H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 6 0 out of 11 12 -sublist 2 ['H16-C8-O5', 'H'] -list1 12 ['H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H16-C8-O5', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All iteration 303 with 12 and 13 Remaining in each list -SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine -MERGE_FRAGMENTS: keep_idx 0 -MERGE_FRAGMENTS: move_idx 1 -MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)] -MERGE_FRAGMENTS: translation (0, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (0, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 0, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 0) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (-1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, -1, 1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, -1) -MERGE_FRAGMENTS: count_species found 2 -MERGE_FRAGMENTS: translation (1, 1, 1) -MERGE_FRAGMENTS: count_species found 2 -SEQUENTIAL: goodlist 0 [] -SEQUENTIAL: avglist 0 [] -SEQUENTIAL: badlist 2 ['H16-C8-O5', 'H'] - -Fragments to allocate: 6 1 out of 11 12 -sublist 2 ['H22-C14-O6', 'H'] -list1 12 ['H16-C8-O5', 'H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H16-C8-O5', 'H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 6 2 out of 11 12 -sublist 2 ['H22-C14-O6', 'H'] -list1 12 ['H16-C8-O5', 'H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H16-C8-O5', 'H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 6 3 out of 11 12 -sublist 2 ['H22-C14-O6', 'H'] -list1 12 ['H16-C8-O5', 'H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H16-C8-O5', 'H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 6 4 out of 11 12 -sublist 2 ['H22-C14-O6', 'H'] -list1 12 ['H16-C8-O5', 'H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H16-C8-O5', 'H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 6 5 out of 11 12 -sublist 2 ['H22-C14-O6', 'H'] -list1 12 ['H16-C8-O5', 'H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H16-C8-O5', 'H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 6 6 out of 11 12 -sublist 2 ['H22-C14-O6', 'H'] -list1 12 ['H16-C8-O5', 'H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H16-C8-O5', 'H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 6 7 out of 11 12 -sublist 2 ['H22-C14-O6', 'H'] -list1 12 ['H16-C8-O5', 'H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H16-C8-O5', 'H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 6 8 out of 11 12 -sublist 2 ['H22-C14-O6', 'H'] -list1 12 ['H16-C8-O5', 'H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H16-C8-O5', 'H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 6 9 out of 11 12 -sublist 2 ['H22-C14-O6', 'H'] -list1 12 ['H16-C8-O5', 'H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H16-C8-O5', 'H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 6 10 out of 11 12 -sublist 2 ['H22-C14-O6', 'H'] -list1 12 ['H16-C8-O5', 'H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H16-C8-O5', 'H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 6 11 out of 11 12 -sublist 2 ['H22-C14-O6', 'H'] -list1 12 ['H16-C8-O5', 'H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H16-C8-O5', 'H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 6 12 out of 11 12 -sublist 2 ['H22-C14-O6', 'H'] -list1 12 ['H16-C8-O5', 'H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H16-C8-O5', 'H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 7 0 out of 11 12 -sublist 2 ['H24-C12-O6', 'H'] -list1 12 ['H16-C8-O5', 'H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H16-C8-O5', 'H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 7 1 out of 11 12 -sublist 2 ['H24-C12-O6', 'H'] -list1 12 ['H16-C8-O5', 'H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H16-C8-O5', 'H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 7 2 out of 11 12 -sublist 2 ['H24-C12-O6', 'H'] -list1 12 ['H16-C8-O5', 'H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H16-C8-O5', 'H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 7 3 out of 11 12 -sublist 2 ['H24-C12-O6', 'H'] -list1 12 ['H16-C8-O5', 'H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H16-C8-O5', 'H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 7 4 out of 11 12 -sublist 2 ['H24-C12-O6', 'H'] -list1 12 ['H16-C8-O5', 'H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H16-C8-O5', 'H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 7 5 out of 11 12 -sublist 2 ['H24-C12-O6', 'H'] -list1 12 ['H16-C8-O5', 'H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H16-C8-O5', 'H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 7 6 out of 11 12 -sublist 2 ['H24-C12-O6', 'H'] -list1 12 ['H16-C8-O5', 'H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H16-C8-O5', 'H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 7 7 out of 11 12 -sublist 2 ['H24-C12-O6', 'H'] -list1 12 ['H16-C8-O5', 'H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H16-C8-O5', 'H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 7 8 out of 11 12 -sublist 2 ['H24-C12-O6', 'H'] -list1 12 ['H16-C8-O5', 'H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H16-C8-O5', 'H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 7 9 out of 11 12 -sublist 2 ['H24-C12-O6', 'H'] -list1 12 ['H16-C8-O5', 'H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H16-C8-O5', 'H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 7 10 out of 11 12 -sublist 2 ['H24-C12-O6', 'H'] -list1 12 ['H16-C8-O5', 'H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H16-C8-O5', 'H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 7 11 out of 11 12 -sublist 2 ['H24-C12-O6', 'H'] -list1 12 ['H16-C8-O5', 'H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H16-C8-O5', 'H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 7 12 out of 11 12 -sublist 2 ['H24-C12-O6', 'H'] -list1 12 ['H16-C8-O5', 'H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H16-C8-O5', 'H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 8 0 out of 11 12 -sublist 2 ['H21-C12-O9', 'H'] -list1 12 ['H16-C8-O5', 'H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H16-C8-O5', 'H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H24-C12-O6', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 8 1 out of 11 12 -sublist 2 ['H21-C12-O9', 'H'] -list1 12 ['H16-C8-O5', 'H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H16-C8-O5', 'H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H24-C12-O6', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 8 2 out of 11 12 -sublist 2 ['H21-C12-O9', 'H'] -list1 12 ['H16-C8-O5', 'H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H16-C8-O5', 'H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H24-C12-O6', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 8 3 out of 11 12 -sublist 2 ['H21-C12-O9', 'H'] -list1 12 ['H16-C8-O5', 'H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H16-C8-O5', 'H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H24-C12-O6', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 8 4 out of 11 12 -sublist 2 ['H21-C12-O9', 'H'] -list1 12 ['H16-C8-O5', 'H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H16-C8-O5', 'H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H24-C12-O6', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 8 5 out of 11 12 -sublist 2 ['H21-C12-O9', 'H'] -list1 12 ['H16-C8-O5', 'H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H16-C8-O5', 'H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H24-C12-O6', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 8 6 out of 11 12 -sublist 2 ['H21-C12-O9', 'H'] -list1 12 ['H16-C8-O5', 'H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H16-C8-O5', 'H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H24-C12-O6', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 8 7 out of 11 12 -sublist 2 ['H21-C12-O9', 'H'] -list1 12 ['H16-C8-O5', 'H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H16-C8-O5', 'H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H24-C12-O6', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 8 8 out of 11 12 -sublist 2 ['H21-C12-O9', 'H'] -list1 12 ['H16-C8-O5', 'H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H16-C8-O5', 'H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H24-C12-O6', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 8 9 out of 11 12 -sublist 2 ['H21-C12-O9', 'H'] -list1 12 ['H16-C8-O5', 'H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H16-C8-O5', 'H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H24-C12-O6', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 8 10 out of 11 12 -sublist 2 ['H21-C12-O9', 'H'] -list1 12 ['H16-C8-O5', 'H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H16-C8-O5', 'H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H24-C12-O6', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 8 11 out of 11 12 -sublist 2 ['H21-C12-O9', 'H'] -list1 12 ['H16-C8-O5', 'H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H16-C8-O5', 'H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H24-C12-O6', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 8 12 out of 11 12 -sublist 2 ['H21-C12-O9', 'H'] -list1 12 ['H16-C8-O5', 'H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H16-C8-O5', 'H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H24-C12-O6', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 9 0 out of 11 12 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 12 ['H16-C8-O5', 'H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H16-C8-O5', 'H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 9 1 out of 11 12 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 12 ['H16-C8-O5', 'H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H16-C8-O5', 'H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 9 2 out of 11 12 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 12 ['H16-C8-O5', 'H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H16-C8-O5', 'H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 9 3 out of 11 12 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 12 ['H16-C8-O5', 'H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H16-C8-O5', 'H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 9 4 out of 11 12 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 12 ['H16-C8-O5', 'H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H16-C8-O5', 'H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 9 5 out of 11 12 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 12 ['H16-C8-O5', 'H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H16-C8-O5', 'H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 9 6 out of 11 12 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 12 ['H16-C8-O5', 'H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H16-C8-O5', 'H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 9 7 out of 11 12 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 12 ['H16-C8-O5', 'H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H16-C8-O5', 'H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 9 8 out of 11 12 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 12 ['H16-C8-O5', 'H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H16-C8-O5', 'H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 9 9 out of 11 12 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 12 ['H16-C8-O5', 'H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H16-C8-O5', 'H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 9 10 out of 11 12 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 12 ['H16-C8-O5', 'H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H16-C8-O5', 'H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 9 11 out of 11 12 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 12 ['H16-C8-O5', 'H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H16-C8-O5', 'H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 9 12 out of 11 12 -sublist 2 ['H13-C11-O16-Fe2', 'H'] -list1 12 ['H16-C8-O5', 'H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H16-C8-O5', 'H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H23-C11-O8', 'H23-C12-O7'] -keeplist2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 10 0 out of 11 12 -sublist 2 ['H23-C11-O8', 'H'] -list1 12 ['H16-C8-O5', 'H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H16-C8-O5', 'H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C12-O7'] -keeplist2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 10 1 out of 11 12 -sublist 2 ['H23-C11-O8', 'H'] -list1 12 ['H16-C8-O5', 'H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H16-C8-O5', 'H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C12-O7'] -keeplist2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 10 2 out of 11 12 -sublist 2 ['H23-C11-O8', 'H'] -list1 12 ['H16-C8-O5', 'H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H16-C8-O5', 'H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C12-O7'] -keeplist2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 10 3 out of 11 12 -sublist 2 ['H23-C11-O8', 'H'] -list1 12 ['H16-C8-O5', 'H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H16-C8-O5', 'H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C12-O7'] -keeplist2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 10 4 out of 11 12 -sublist 2 ['H23-C11-O8', 'H'] -list1 12 ['H16-C8-O5', 'H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H16-C8-O5', 'H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C12-O7'] -keeplist2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 10 5 out of 11 12 -sublist 2 ['H23-C11-O8', 'H'] -list1 12 ['H16-C8-O5', 'H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H16-C8-O5', 'H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C12-O7'] -keeplist2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 10 6 out of 11 12 -sublist 2 ['H23-C11-O8', 'H'] -list1 12 ['H16-C8-O5', 'H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H16-C8-O5', 'H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C12-O7'] -keeplist2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 10 7 out of 11 12 -sublist 2 ['H23-C11-O8', 'H'] -list1 12 ['H16-C8-O5', 'H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H16-C8-O5', 'H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C12-O7'] -keeplist2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 10 8 out of 11 12 -sublist 2 ['H23-C11-O8', 'H'] -list1 12 ['H16-C8-O5', 'H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H16-C8-O5', 'H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C12-O7'] -keeplist2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 10 9 out of 11 12 -sublist 2 ['H23-C11-O8', 'H'] -list1 12 ['H16-C8-O5', 'H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H16-C8-O5', 'H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C12-O7'] -keeplist2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 10 10 out of 11 12 -sublist 2 ['H23-C11-O8', 'H'] -list1 12 ['H16-C8-O5', 'H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H16-C8-O5', 'H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C12-O7'] -keeplist2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 10 11 out of 11 12 -sublist 2 ['H23-C11-O8', 'H'] -list1 12 ['H16-C8-O5', 'H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H16-C8-O5', 'H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C12-O7'] -keeplist2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 10 12 out of 11 12 -sublist 2 ['H23-C11-O8', 'H'] -list1 12 ['H16-C8-O5', 'H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H16-C8-O5', 'H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C12-O7'] -keeplist2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 11 0 out of 11 12 -sublist 2 ['H23-C12-O7', 'H'] -list1 12 ['H16-C8-O5', 'H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H16-C8-O5', 'H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8'] -keeplist2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 11 1 out of 11 12 -sublist 2 ['H23-C12-O7', 'H'] -list1 12 ['H16-C8-O5', 'H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H16-C8-O5', 'H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8'] -keeplist2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 11 2 out of 11 12 -sublist 2 ['H23-C12-O7', 'H'] -list1 12 ['H16-C8-O5', 'H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H16-C8-O5', 'H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8'] -keeplist2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 11 3 out of 11 12 -sublist 2 ['H23-C12-O7', 'H'] -list1 12 ['H16-C8-O5', 'H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H16-C8-O5', 'H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8'] -keeplist2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 11 4 out of 11 12 -sublist 2 ['H23-C12-O7', 'H'] -list1 12 ['H16-C8-O5', 'H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H16-C8-O5', 'H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8'] -keeplist2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 11 5 out of 11 12 -sublist 2 ['H23-C12-O7', 'H'] -list1 12 ['H16-C8-O5', 'H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H16-C8-O5', 'H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8'] -keeplist2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 11 6 out of 11 12 -sublist 2 ['H23-C12-O7', 'H'] -list1 12 ['H16-C8-O5', 'H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H16-C8-O5', 'H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8'] -keeplist2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 11 7 out of 11 12 -sublist 2 ['H23-C12-O7', 'H'] -list1 12 ['H16-C8-O5', 'H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H16-C8-O5', 'H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8'] -keeplist2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 11 8 out of 11 12 -sublist 2 ['H23-C12-O7', 'H'] -list1 12 ['H16-C8-O5', 'H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H16-C8-O5', 'H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8'] -keeplist2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 11 9 out of 11 12 -sublist 2 ['H23-C12-O7', 'H'] -list1 12 ['H16-C8-O5', 'H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H16-C8-O5', 'H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8'] -keeplist2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 11 10 out of 11 12 -sublist 2 ['H23-C12-O7', 'H'] -list1 12 ['H16-C8-O5', 'H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H16-C8-O5', 'H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8'] -keeplist2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 11 11 out of 11 12 -sublist 2 ['H23-C12-O7', 'H'] -list1 12 ['H16-C8-O5', 'H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H16-C8-O5', 'H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8'] -keeplist2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 - -Fragments to allocate: 11 12 out of 11 12 -sublist 2 ['H23-C12-O7', 'H'] -list1 12 ['H16-C8-O5', 'H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8', 'H23-C12-O7'] -list2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -keeplist1 11 ['H16-C8-O5', 'H3-C2', 'H18-C9-O5', 'H15-C7-O3', 'H17-C11-O9', 'H20-C11-O10', 'H22-C14-O6', 'H24-C12-O6', 'H21-C12-O9', 'H13-C11-O16-Fe2', 'H23-C11-O8'] -keeplist2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] - -SEQUENTIAL All SKIPPED 42 and 1 -Sequential: list1 end: ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] -Sequential: list1 end: ['C', 'H', 'H', 'C', 'H'] -Sequential: list1 end: ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] -Sequential: list1 end: ['O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H', 'H'] -Sequential: list1 end: ['O', 'O', 'O', 'C', 'C', 'O', 'C', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'H', 'C', 'H', 'O', 'H', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] -Sequential: list1 end: ['O', 'O', 'O', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'O', 'O', 'O', 'O', 'C', 'C', 'O', 'O', 'C', 'O', 'H', 'H', 'H', 'H', 'H', 'H'] -Sequential: list1 end: ['O', 'O', 'O', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'O', 'O', 'O', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H'] -Sequential: list1 end: ['O', 'O', 'O', 'O', 'O', 'O', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] -Sequential: list1 end: ['O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'O', 'O', 'O', 'C', 'C', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] -Sequential: list1 end: ['O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'Fe', 'O', 'O', 'O', 'O', 'O', 'O', 'C', 'C', 'C', 'Fe', 'O', 'O', 'C', 'H', 'O', 'H', 'O', 'O', 'C', 'O', 'O', 'C', 'H'] -Sequential: list1 end: ['O', 'O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'O', 'H', 'O', 'H', 'H', 'H'] -Sequential: list1 end: ['O', 'O', 'O', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'O', 'H', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] -Sequential: list2 end: ['H'] -Sequential: list2 end: ['H'] -Sequential: list2 end: ['H'] -Sequential: list2 end: ['H'] -Sequential: list2 end: ['H'] -Sequential: list2 end: ['H'] -Sequential: list2 end: ['H'] -Sequential: list2 end: ['H'] -Sequential: list2 end: ['H'] -Sequential: list2 end: ['H'] -Sequential: list2 end: ['H'] -Sequential: list2 end: ['H'] -Sequential: list2 end: ['H'] -FRAG_RECONSTRUCT. moleclist=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 3 - Formula = H2-O - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 3 - Formula = H2-O - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 3 - Formula = H2-O - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 3 - Formula = H2-O - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 3 - Formula = H2-O - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 3 - Formula = H2-O - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 3 - Formula = H2-O - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 3 - Formula = H2-O - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 3 - Formula = H2-O - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 3 - Formula = H2-O - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 3 - Formula = H2-O - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 3 - Formula = H2-O - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 3 - Formula = H2-O - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 3 - Formula = H2-O - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 3 - Formula = H2-O - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 3 - Formula = H2-O - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 3 - Formula = H2-O - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 3 - Formula = H2-O - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 3 - Formula = H2-O - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 3 - Formula = H2-O - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 3 - Formula = H2-O - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 3 - Formula = H2-O - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 3 - Formula = H2-O - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 3 - Formula = H2-O - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 3 - Formula = H2-O - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 3 - Formula = H2-O - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 3 - Formula = H2-O - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 3 - Formula = H2-O - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 3 - Formula = H2-O - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 3 - Formula = H2-O - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 3 - Formula = H2-O - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 3 - Formula = H2-O - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 3 - Formula = H2-O - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 3 - Formula = H2-O - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 3 - Formula = H2-O - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 3 - Formula = H2-O - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 3 - Formula = H2-O - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 3 - Formula = H2-O - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 3 - Formula = H2-O - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 3 - Formula = H2-O - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 3 - Formula = H2-O - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 3 - Formula = H2-O - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 3 - Formula = H2-O - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 3 - Formula = H2-O - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 3 - Formula = H2-O - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 3 - Formula = H2-O - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 3 - Formula = H2-O - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 3 - Formula = H2-O - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 3 - Formula = H2-O - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 3 - Formula = H2-O - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 3 - Formula = H2-O - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 3 - Formula = H2-O - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 3 - Formula = H2-O - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 3 - Formula = H2-O - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 19 - Formula = C6-O12-Fe - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 3 - Formula = H2-O - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 3 - Formula = H2-O - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 3 - Formula = H2-O - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 3 - Formula = H2-O - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 3 - Formula = H2-O - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 3 - Formula = H2-O - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = K - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = K - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = K - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = K - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = K - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = K - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = K - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = K - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = K - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = K - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = K - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = K - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = K - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = K - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = K - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = K - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = K - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = K - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = K - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = K - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = K - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = K - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = K - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = K - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = K - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = K - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = K - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = K - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = K - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = K - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = K - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = K - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = K - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = K - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = K - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = K - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = K - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = K - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = K - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = K - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = K - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = K - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = K - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = K - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = K - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = K - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = K - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = K - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = K - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = K - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = K - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = K - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = K - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = K - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = K - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = K - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = K - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = K - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = K - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = K - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = K - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = K - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = K - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = K - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = K - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = K - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = K - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = K - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = K - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = K - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = K - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = K - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = K - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = K - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = K - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = K - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = K - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = K - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = K - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = K - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = K - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 3 - Formula = H2-O - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES ---------------------------------------------------- -] -FRAG_RECONSTRUCT. remfrag=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 29 - Formula = H16-C8-O5 - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 5 - Formula = H3-C2 - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 32 - Formula = H18-C9-O5 - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 25 - Formula = H15-C7-O3 - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 37 - Formula = H17-C11-O9 - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 41 - Formula = H20-C11-O10 - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 42 - Formula = H22-C14-O6 - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 42 - Formula = H24-C12-O6 - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 42 - Formula = H21-C12-O9 - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 42 - Formula = H13-C11-O16-Fe2 - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 42 - Formula = H23-C11-O8 - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 42 - Formula = H23-C12-O7 - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -FRAG_RECONSTRUCT. Remaining after Hydrogen reconstruction [------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 29 - Formula = H16-C8-O5 - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 5 - Formula = H3-C2 - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 32 - Formula = H18-C9-O5 - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 25 - Formula = H15-C7-O3 - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 37 - Formula = H17-C11-O9 - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 41 - Formula = H20-C11-O10 - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 42 - Formula = H22-C14-O6 - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 42 - Formula = H24-C12-O6 - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 42 - Formula = H21-C12-O9 - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 42 - Formula = H13-C11-O16-Fe2 - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Rec. Fragment - Number of Atoms = 42 - Formula = H23-C11-O8 - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = Heavy - Number of Atoms = 42 - Formula = H23-C12-O7 - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = H - Number of Atoms = 1 - Formula = H - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -------------------------------- -Errors in Unit Cell -------------------------------- -Cell2mol terminated with error number 4. Message: -After reconstruction of the unit cell, we still detected some fragments. STOPPING pre-emptively. - -*** Cell *** -SAVING cell2mol CELL object to /Users/ycho/cell2mol/cell2mol/test/error_2/BOFFOS/Cell_BOFFOS.cell -------------- Cell2mol CELL Object ---------------- - Version = 0.1 - Type = cell - Name (Refcode) = BOFFOS - Num Atoms = 525 - Cell Parameters a:c = [24.369, 24.369, 9.748] - Cell Parameters al:ga = [90.0, 90.0, 120.0] - # Molecules: = 143 - With Formulae: - 0: H2-O - 1: H2-O - 2: H2-O - 3: H2-O - 4: H2-O - 5: H2-O - 6: H2-O - 7: H2-O - 8: H2-O - 9: H2-O - 10: H2-O - 11: H2-O - 12: H2-O - 13: H2-O - 14: H2-O - 15: H2-O - 16: H2-O - 17: H2-O - 18: H2-O - 19: H2-O - 20: H2-O - 21: H2-O - 22: H2-O - 23: H2-O - 24: H2-O - 25: H2-O - 26: H2-O - 27: H2-O - 28: H2-O - 29: H2-O - 30: H2-O - 31: H2-O - 32: H2-O - 33: H2-O - 34: H2-O - 35: H2-O - 36: H2-O - 37: H2-O - 38: H2-O - 39: H2-O - 40: H2-O - 41: H2-O - 42: H2-O - 43: H2-O - 44: H2-O - 45: H2-O - 46: H2-O - 47: H2-O - 48: H2-O - 49: H2-O - 50: H2-O - 51: H2-O - 52: H2-O - 53: H2-O - 54: C6-O12-Fe - 55: H2-O - 56: H2-O - 57: H2-O - 58: H2-O - 59: H2-O - 60: H2-O - 61: K - 62: K - 63: K - 64: K - 65: K - 66: K - 67: K - 68: K - 69: K - 70: K - 71: K - 72: K - 73: K - 74: K - 75: K - 76: K - 77: K - 78: K - 79: K - 80: K - 81: K - 82: K - 83: K - 84: K - 85: K - 86: K - 87: K - 88: K - 89: K - 90: K - 91: K - 92: K - 93: K - 94: K - 95: K - 96: K - 97: K - 98: K - 99: K - 100: K - 101: K - 102: K - 103: K - 104: K - 105: K - 106: K - 107: K - 108: K - 109: K - 110: K - 111: K - 112: K - 113: K - 114: K - 115: K - 116: K - 117: K - 118: K - 119: K - 120: K - 121: K - 122: K - 123: K - 124: K - 125: K - 126: K - 127: K - 128: K - 129: K - 130: K - 131: K - 132: K - 133: K - 134: K - 135: K - 136: K - 137: K - 138: K - 139: K - 140: K - 141: K - 142: H2-O ---------------------------------------------------- - # of Ref Molecules: = 10 - With Formulae: - 0: C6-O12-Fe - 1: H24-C12-O6 - 2: H2-O - 3: H2-O - 4: H2-O - 5: H24-C12-O6 - 6: H24-C12-O6 - 7: K - 8: K - 9: K - -*** Reference molecules *** -[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 19 - Formula = C6-O12-Fe - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Number of Ligands = 3 - Number of Metals = 1 ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 42 - Formula = H24-C12-O6 - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 3 - Formula = H2-O - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 3 - Formula = H2-O - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 3 - Formula = H2-O - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 42 - Formula = H24-C12-O6 - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 42 - Formula = H24-C12-O6 - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = K - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = K - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = K - Covalent Radii Factor = 1.3 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES ---------------------------------------------------- -] diff --git a/cell2mol/test/error_2/BOFFOS/cif2cell.err b/cell2mol/test/error_2/BOFFOS/cif2cell.err deleted file mode 100644 index e69de29bb..000000000 diff --git a/cell2mol/test/error_2/BOFFOS/error_4.out b/cell2mol/test/error_2/BOFFOS/error_4.out deleted file mode 100644 index 6fe903838..000000000 --- a/cell2mol/test/error_2/BOFFOS/error_4.out +++ /dev/null @@ -1,2 +0,0 @@ -Cell2mol terminated with error number 4. Message: -After reconstruction of the unit cell, we still detected some fragments. STOPPING pre-emptively. diff --git a/cell2mol/test/error_2/BOFFOS/positions.py b/cell2mol/test/error_2/BOFFOS/positions.py deleted file mode 100644 index 1c9a469a4..000000000 --- a/cell2mol/test/error_2/BOFFOS/positions.py +++ /dev/null @@ -1,183 +0,0 @@ -from ase import * - -atoms = Atoms(['Fe' for i in range(1)]+['K' for i in range(3)]+['O' for i in range(39)]+['H' for i in range(90)]+['C' for i in range(42)], - [( -0.000000, 0.000000, 6.145789), - ( 3.808529, 1.793193, 3.590741), - ( -3.457215, 2.401687, 3.590741), - ( -0.351314, -4.194880, 3.590741), - ( -3.257640, -11.344013, 4.231314), - ( 11.453024, 2.850807, 4.231314), - ( -8.195384, 8.493206, 4.231314), - ( 1.942498, 2.806212, 1.682960), - ( -3.401500, 0.279147, 1.682960), - ( 1.459002, -3.085359, 1.682960), - ( 1.979431, 3.778657, 4.305172), - ( -4.262128, -0.175091, 4.305172), - ( 2.282698, -3.603566, 4.305172), - ( 4.408521, 3.659493, 5.757916), - ( -5.373474, 1.988145, 5.757916), - ( 0.964953, -5.647638, 5.757916), - ( 6.319293, 1.890060, 4.900969), - ( -4.796486, 4.527638, 4.900969), - ( -1.522807, -6.417698, 4.900969), - ( 6.292069, 0.800400, 2.305077), - ( -3.839201, 5.048891, 2.305077), - ( -2.452868, -5.849291, 2.305077), - ( 3.844618, -0.437180, 5.175863), - ( -1.543700, 3.548126, 5.175863), - ( -2.300918, -3.110947, 5.175863), - ( 1.703177, 0.115875, 5.082087), - ( -0.951939, 1.417057, 5.082087), - ( -0.751238, -1.532932, 5.082087), - ( 1.175151, -1.142053, 7.300147), - ( 0.401472, 1.588737, 7.300147), - ( -1.576622, -0.446684, 7.300147), - ( 3.285779, -1.780399, 7.542677), - ( -0.101019, 3.735768, 7.542677), - ( -3.184760, -1.955369, 7.542677), - ( 6.205963, -1.650878, 6.215000), - ( -1.673280, 6.199961, 6.215000), - ( -4.532684, -4.549083, 6.215000), - ( -6.689601, -5.112860, 4.549392), - ( 7.772667, -3.236934, 4.549392), - ( -1.083066, 8.349794, 4.549392), - ( -8.740575, -3.302365, 5.258396), - ( 7.230219, -5.918377, 5.258396), - ( 1.510355, 9.220742, 5.258396), - ( -11.409619, 0.727415, 5.862772), - ( 5.074850, -10.244728, 5.862772), - ( 6.334769, 9.517313, 5.862772), - ( -10.808150, 2.159093, 6.110371), - ( 3.534246, -10.439680, 6.110371), - ( 7.273905, 8.280586, 6.110371), - ( -6.061119, -10.066834, 3.352337), - ( 11.748693, -0.215666, 3.352337), - ( -5.687575, 10.282500, 3.352337), - ( 1.239518, 1.023498, 1.201603), - ( -1.506134, 0.561705, 1.201603), - ( 0.266616, -1.585203, 1.201603), - ( 0.332039, 2.597735, 2.801250), - ( -2.415724, -1.011314, 2.801250), - ( 2.083685, -1.586422, 2.801250), - ( 0.177979, 3.685811, 1.675356), - ( -3.280995, -1.688772, 1.675356), - ( 3.103017, -1.997040, 1.675356), - ( 1.699589, 5.056567, 2.838293), - ( -5.228911, -1.056396, 2.838293), - ( 3.529321, -4.000171, 2.838293), - ( 0.403793, 4.778761, 3.685394), - ( -4.340425, -2.039685, 3.685394), - ( 3.936632, -2.739076, 3.685394), - ( 1.534977, 5.056568, 5.739297), - ( -5.146604, -1.198955, 5.739297), - ( 3.611627, -3.857613, 5.739297), - ( 2.845546, 5.428195, 4.950684), - ( -6.123728, -0.249782, 4.950684), - ( 3.278182, -5.178412, 4.950684), - ( 3.263409, 4.526542, 7.114740), - ( -5.551804, 0.562924, 7.114740), - ( 2.288396, -5.089466, 7.114740), - ( 2.689375, 3.159441, 6.595172), - ( -4.080844, 0.749347, 6.595172), - ( 1.391468, -3.908788, 6.595172), - ( 4.848332, 2.159093, 6.957797), - ( -4.293996, 3.119232, 6.957797), - ( -0.554336, -5.278325, 6.957797), - ( -8.672408, 3.545689, 4.211461), - ( 1.265547, -9.283371, 4.211461), - ( 7.406861, 5.737681, 4.211461), - ( 6.950308, 3.560311, 5.703230), - ( -6.558474, 4.238988, 5.703230), - ( -0.391834, -7.799298, 5.703230), - ( -6.901768, 2.296778, 3.367284), - ( 1.461816, -7.125496, 3.367284), - ( 5.439952, 4.828717, 3.367284), - ( 8.121589, 1.112445, 4.926314), - ( -5.024200, 6.477280, 4.926314), - ( -3.097389, -7.589725, 4.926314), - ( 7.893664, 2.138380, 3.756554), - ( -5.798723, 5.766924, 3.756554), - ( -2.094941, -7.905304, 3.756554), - ( 7.940093, -0.067015, 2.987437), - ( -3.912010, 6.909830, 2.987437), - ( -4.028083, -6.842815, 2.987437), - ( 6.669622, -0.376501, 3.858908), - ( -3.008752, 5.964313, 3.858908), - ( -3.660871, -5.587812, 3.858908), - ( 5.316845, -0.874847, 1.983393), - ( -1.900783, 5.041946, 1.983393), - ( -3.416062, -4.167099, 1.983393), - ( -7.488464, -0.698172, 7.565748), - ( 4.348867, -6.136114, 7.565748), - ( 3.139597, 6.834286, 7.565748), - ( -8.623869, 1.056396, 6.440829), - ( 3.397068, -7.996687, 6.440829), - ( 5.226800, 6.940291, 6.440829), - ( -9.311865, -0.344821, 6.239045), - ( 4.954556, -7.891901, 6.239045), - ( 4.357308, 8.236722, 6.239045), - ( 5.470905, -1.265970, 5.962527), - ( -1.639091, 5.370928, 5.962527), - ( -3.831814, -4.104958, 5.962527), - ( -6.297485, -4.381546, 4.240380), - ( 6.943273, -3.263009, 4.240380), - ( -0.645788, 7.644555, 4.240380), - ( -9.579888, -3.014445, 5.150193), - ( 7.400530, -6.789203, 5.150193), - ( 2.179358, 9.803649, 5.150193), - ( -7.956977, -2.121321, 3.678245), - ( 5.815607, -5.830283, 3.678245), - ( 2.141370, 7.951605, 3.678245), - ( -7.283050, -4.472930, 4.679040), - ( 7.515196, -4.070841, 4.679040), - ( -0.232146, 8.543771, 4.679040), - ( -8.786371, -3.326369, 6.144489), - ( 7.273905, -5.946036, 6.144489), - ( 1.512466, 9.272404, 6.144489), - ( -11.205120, 1.386474, 6.544157), - ( 4.401838, -10.397156, 6.544157), - ( 6.803282, 9.010681, 6.544157), - ( -5.411321, -10.397643, 3.992781), - ( 11.710284, 0.512480, 3.992781), - ( -6.298963, 9.885163, 3.992781), - ( 0.787678, 3.315037, 2.332371), - ( -3.264745, -0.975369, 2.332371), - ( 2.477067, -2.339668, 2.332371), - ( 1.191401, 4.367900, 3.294499), - ( -4.378412, -1.152166, 3.294499), - ( 3.187012, -3.215733, 3.294499), - ( 2.333981, 4.692982, 5.325007), - ( -5.231232, -0.325204, 5.325007), - ( 2.897251, -4.367778, 5.325007), - ( 3.143326, 3.972756, 6.328077), - ( -5.012171, 0.735822, 6.328077), - ( 1.868845, -4.708578, 6.328077), - ( 5.255432, 2.992391, 6.676080), - ( -5.219203, 3.055142, 6.676080), - ( -0.036229, -6.047533, 6.676080), - ( 6.553549, 2.725185, 5.999569), - ( -5.636854, 4.312947, 5.999569), - ( -0.916695, -7.038133, 5.999569), - ( 7.484032, 1.420103, 4.262475), - ( -4.971862, 5.771310, 4.262475), - ( -2.512170, -7.191414, 4.262475), - ( 7.133703, 0.316675, 3.362735), - ( -3.841100, 6.019630, 3.362735), - ( -3.292603, -6.336306, 3.362735), - ( 5.826721, -0.233211, 1.463825), - ( -2.711394, 5.162694, 1.463825), - ( -3.115328, -4.929483, 1.463825), - ( -9.096813, 0.339095, 6.893136), - ( 4.254742, -8.047619, 6.893136), - ( 4.842071, 7.708524, 6.893136), - ( 2.710268, -0.462402, 5.621347), - ( -0.954682, 2.578362, 5.621347), - ( -1.755586, -2.115960, 5.621347), - ( 2.395816, -1.213211, 6.945125), - ( -0.147237, 2.681443, 6.945125), - ( -2.248579, -1.468232, 6.945125)], - pbc = (True,True,True)) -atoms.set_cell([[ 14.069449, 0.000000, 3.249333], - [ -7.034724, 12.184500, 3.249333], - [ -7.034724, -12.184500, 3.249333]], - scale_atoms = False) diff --git a/cell2mol/test/error_2/BOXSAK.search5.cif b/cell2mol/test/error_2/BOXSAK.search5.cif deleted file mode 100755 index 9b8916d01..000000000 --- a/cell2mol/test/error_2/BOXSAK.search5.cif +++ /dev/null @@ -1,184 +0,0 @@ - -####################################################################### -# -# Cambridge Crystallographic Data Centre -# CCDC -# -####################################################################### -# -# If this CIF has been generated from an entry in the Cambridge -# Structural Database, then it will include bibliographic, chemical, -# crystal, experimental, refinement or atomic coordinate data resulting -# from the CCDC's data processing and validation procedures. -# -####################################################################### - -data_CSD_CIF_BOXSAK -_audit_creation_date 2015-03-06 -_audit_creation_method CSD-ConQuest-V1 -_database_code_CSD BOXSAK -_database_code_depnum_ccdc_archive 'CCDC 1021433' -_chemical_formula_sum 'C24 H60 Fe1 I2 K1 N2 O6 Si4' -_chemical_formula_moiety -; -C24 H60 Fe1 I2 K1 N2 O6 Si4 -; -_journal_coden_Cambridge 179 -_journal_volume 54 -_journal_year 2015 -_journal_page_first 245 -_journal_name_full 'Angew.Chem.,Int.Ed. ' -loop_ -_publ_author_name -"C.Gunnar Werncke" -"P.C.Bunting" -"C.Duhayon" -"J.R.Long" -"S.Bontemps" -"S.Sabo-Etienne" -_chemical_name_systematic -; -(18-crown-9)-bis(\m-iodo)-bis(1,1,1-trimethyl-N-(trimethylsilyl)silanaminato)- -potassium(i)-iron(iii) -; -_cell_volume 2047.418 -_exptl_crystal_colour 'black' -_exptl_crystal_density_diffrn 1.515 -_exptl_crystal_description 'block' -_diffrn_ambient_temperature 100 -#These two values have been output from a single CSD field. -_refine_ls_R_factor_gt 0.0289 -_refine_ls_wR_factor_gt 0.0289 -_symmetry_cell_setting triclinic -_symmetry_space_group_name_H-M 'P -1' -_symmetry_Int_Tables_number 2 -loop_ -_symmetry_equiv_pos_site_id -_symmetry_equiv_pos_as_xyz -1 x,y,z -2 -x,-y,-z -_cell_length_a 9.8268(8) -_cell_length_b 12.5116(10) -_cell_length_c 17.0871(14) -_cell_angle_alpha 93.498(2) -_cell_angle_beta 97.872(3) -_cell_angle_gamma 99.113(2) -_cell_formula_units_Z 2 -loop_ -_atom_type_symbol -_atom_type_radius_bond -C 0.68 -H 0.23 -Fe 1.52 -I 1.40 -K 2.03 -N 0.68 -O 0.68 -Si 1.20 -loop_ -_atom_site_label -_atom_site_type_symbol -_atom_site_fract_x -_atom_site_fract_y -_atom_site_fract_z -O1 O 0.88876(10) 0.66945(9) 0.41206(6) -O2 O 0.98636(10) 0.67529(8) 0.26538(6) -O3 O 0.77823(11) 0.69146(9) 0.13831(6) -O4 O 0.49648(11) 0.61248(9) 0.14116(6) -O5 O 0.41127(10) 0.60859(8) 0.29170(6) -O6 O 0.60965(10) 0.59861(8) 0.42677(6) -C1 C 0.32992(15) 0.02478(16) 0.2172(1) -C2 C 0.41861(16) 0.16282(13) 0.37407(10) -C3 C 0.40706(17) -0.07937(13) 0.36208(11) -C4 C 0.7558(2) 0.01607(15) 0.45578(8) -C5 C 0.71118(15) -0.14919(10) 0.30980(9) -C6 C 0.93388(14) 0.04674(12) 0.33090(9) -C7 C 0.60339(16) 0.00277(12) 0.10027(8) -C8 C 0.8946(2) -0.02078(13) 0.08851(10) -C9 C 0.75799(16) 0.15145(13) -0.00001(8) -C10 C 1.10775(15) 0.29406(14) 0.27254(9) -C11 C 1.10068(16) 0.23262(19) 0.10403(10) -C12 C 0.93971(19) 0.40646(13) 0.14925(14) -C13 C 1.02656(14) 0.65382(12) 0.40378(9) -C14 C 1.07119(14) 0.71861(11) 0.33788(9) -C15 C 1.01093(15) 0.74368(12) 0.20379(10) -C16 C 0.92011(16) 0.69549(13) 0.12822(9) -C17 C 0.68481(19) 0.65000(16) 0.06799(9) -C18 C 0.54171(18) 0.67086(14) 0.07813(9) -C19 C 0.36225(15) 0.62983(13) 0.15452(9) -C20 C 0.32130(14) 0.56440(12) 0.22113(9) -C21 C 0.37981(14) 0.55170(11) 0.35851(9) -C22 C 0.46973(14) 0.61141(11) 0.43130(8) -C23 C 0.70508(15) 0.66211(11) 0.48884(8) -C24 C 0.84806(15) 0.63632(12) 0.48479(8) -Si1 Si 0.45700(4) 0.04744(3) 0.31113(2) -Si2 Si 0.74946(4) -0.00116(3) 0.34513(2) -Si3 Si 0.77841(4) 0.08362(3) 0.094922(19) -Si4 Si 0.98662(4) 0.27342(3) 0.17655(2) -I1 I 0.526219(9) 0.302610(7) 0.165420(5) -I2 I 0.789425(9) 0.346386(6) 0.366494(5) -Fe1 Fe 0.704399(16) 0.195976(12) 0.246199(9) -K1 K 0.69526(3) 0.58896(2) 0.273236(15) -N1 N 0.63081(10) 0.07053(8) 0.29605(6) -N2 N 0.83679(10) 0.17833(7) 0.17613(5) -H1 H 0.34070 -0.03840 0.18640 -H2 H 0.34300 0.08490 0.18530 -H3 H 0.23740 0.01540 0.22920 -H4 H 0.47550 0.17010 0.42490 -H5 H 0.43390 0.22760 0.34890 -H6 H 0.32210 0.14930 0.38260 -H7 H 0.46400 -0.08090 0.41140 -H8 H 0.40890 -0.14230 0.32780 -H9 H 0.31420 -0.07810 0.37090 -H10 H 0.77760 0.09080 0.47260 -H11 H 0.82750 -0.02050 0.48300 -H12 H 0.67030 -0.01380 0.47220 -H13 H 0.71530 -0.15600 0.25470 -H14 H 0.78180 -0.18230 0.33740 -H15 H 0.62190 -0.18220 0.32010 -H16 H 0.94680 0.03970 0.27700 -H17 H 0.99320 0.00330 0.35980 -H18 H 0.96200 0.12130 0.35230 -H19 H 0.53380 0.04750 0.09880 -H20 H 0.60770 -0.03610 0.14720 -H21 H 0.58000 -0.04950 0.05450 -H22 H 0.98950 0.01170 0.08660 -H23 H 0.89200 -0.06220 0.13270 -H24 H 0.86140 -0.06940 0.04130 -H25 H 0.84250 0.19130 -0.00890 -H26 H 0.72590 0.09800 -0.04400 -H27 H 0.69130 0.19860 0.00190 -H28 H 1.06520 0.32420 0.31270 -H29 H 1.19100 0.34190 0.26570 -H30 H 1.13340 0.22550 0.28730 -H31 H 1.05210 0.21520 0.05150 -H32 H 1.17200 0.29250 0.10310 -H33 H 1.14360 0.17060 0.12040 -H34 H 0.88030 0.39870 0.09930 -H35 H 1.02310 0.45670 0.14450 -H36 H 0.89340 0.43680 0.18940 -H37 H 1.08960 0.67980 0.45310 -H38 H 1.02980 0.57570 0.39080 -H39 H 1.16860 0.71650 0.33480 -H40 H 1.06090 0.79470 0.34920 -H41 H 1.10940 0.75220 0.19710 -H42 H 0.98970 0.81430 0.21780 -H43 H 0.94150 0.74120 0.08550 -H44 H 0.93660 0.62290 0.11340 -H45 H 0.71290 0.68190 0.02160 -H46 H 0.68300 0.57270 0.05750 -H47 H 0.54370 0.74810 0.08970 -H48 H 0.48040 0.64700 0.02990 -H49 H 0.36520 0.70730 0.16940 -H50 H 0.29660 0.60670 0.10690 -H51 H 0.22480 0.56810 0.22760 -H52 H 0.33020 0.49010 0.20920 -H53 H 0.28290 0.54840 0.36380 -H54 H 0.39830 0.47910 0.35170 -H55 H 0.46450 0.68850 0.43330 -H56 H 0.44090 0.58230 0.47890 -H57 H 0.70500 0.73910 0.48190 -H58 H 0.67830 0.64570 0.54050 -H59 H 0.91210 0.67340 0.52870 -H60 H 0.84690 0.56080 0.48760 -#END diff --git a/cell2mol/test/error_2/BOXSEO.search5.cif b/cell2mol/test/error_2/BOXSEO.search5.cif deleted file mode 100755 index 5cdb2729a..000000000 --- a/cell2mol/test/error_2/BOXSEO.search5.cif +++ /dev/null @@ -1,184 +0,0 @@ - -####################################################################### -# -# Cambridge Crystallographic Data Centre -# CCDC -# -####################################################################### -# -# If this CIF has been generated from an entry in the Cambridge -# Structural Database, then it will include bibliographic, chemical, -# crystal, experimental, refinement or atomic coordinate data resulting -# from the CCDC's data processing and validation procedures. -# -####################################################################### - -data_CSD_CIF_BOXSEO -_audit_creation_date 2015-03-06 -_audit_creation_method CSD-ConQuest-V1 -_database_code_CSD BOXSEO -_database_code_depnum_ccdc_archive 'CCDC 1021434' -_chemical_formula_sum 'C24 H60 Fe1 I1 K1 N2 O6 Si4' -_chemical_formula_moiety -; -C24 H60 Fe1 I1 K1 N2 O6 Si4 -; -_journal_coden_Cambridge 179 -_journal_volume 54 -_journal_year 2015 -_journal_page_first 245 -_journal_name_full 'Angew.Chem.,Int.Ed. ' -loop_ -_publ_author_name -"C.Gunnar Werncke" -"P.C.Bunting" -"C.Duhayon" -"J.R.Long" -"S.Bontemps" -"S.Sabo-Etienne" -_chemical_name_systematic -; -(18-crown-ether)-bis(bis(trimethylsilyl)amido)-(\m-iodo)-iron(ii)-potassium(i) -; -_cell_volume 3973.100 -_exptl_crystal_colour 'pale purple' -_exptl_crystal_density_diffrn 1.349 -_exptl_crystal_description 'block' -_diffrn_ambient_temperature 100 -#These two values have been output from a single CSD field. -_refine_ls_R_factor_gt 0.0169 -_refine_ls_wR_factor_gt 0.0169 -_symmetry_cell_setting monoclinic -_symmetry_space_group_name_H-M 'P 21/c' -_symmetry_Int_Tables_number 14 -loop_ -_symmetry_equiv_pos_site_id -_symmetry_equiv_pos_as_xyz -1 x,y,z -2 -x,1/2+y,1/2-z -3 -x,-y,-z -4 x,-1/2-y,-1/2+z -_cell_length_a 9.6803(2) -_cell_length_b 18.2801(5) -_cell_length_c 22.4873(6) -_cell_angle_alpha 90 -_cell_angle_beta 93.194(1) -_cell_angle_gamma 90 -_cell_formula_units_Z 4 -loop_ -_atom_type_symbol -_atom_type_radius_bond -C 0.68 -H 0.23 -Fe 1.52 -I 1.40 -K 2.03 -N 0.68 -O 0.68 -Si 1.20 -loop_ -_atom_site_label -_atom_site_type_symbol -_atom_site_fract_x -_atom_site_fract_y -_atom_site_fract_z -Fe1 Fe 0.651378(14) 0.745329(7) 0.415895(6) -I1 I 0.744437(7) 0.610422(4) 0.399766(3) -C1 C 0.71248(11) 0.70544(6) 0.56538(5) -C2 C 0.43687(12) 0.76211(6) 0.59789(5) -C3 C 0.45586(12) 0.61351(6) 0.53964(5) -C4 C 0.19541(12) 0.73610(7) 0.45473(6) -C5 C 0.32875(14) 0.88364(7) 0.48249(6) -C6 C 0.35864(12) 0.81477(7) 0.36351(5) -C7 C 0.75994(16) 0.89182(7) 0.49212(5) -C8 C 0.67721(12) 0.98316(6) 0.38495(5) -C9 C 0.97080(13) 0.92331(7) 0.40388(8) -C10 C 0.7891(2) 0.89376(8) 0.25454(6) -C11 C 0.64705(13) 0.74951(7) 0.25903(5) -C12 C 0.95073(15) 0.75998(10) 0.29929(8) -C13 C 1.19883(12) 0.51164(7) 0.42560(5) -C14 C 1.31017(12) 0.53594(7) 0.38610(5) -C15 C 1.34713(11) 0.59670(7) 0.29620(5) -C16 C 1.28201(11) 0.64762(6) 0.25026(5) -C17 C 1.11108(11) 0.65659(6) 0.17273(5) -C18 C 0.98912(12) 0.61851(6) 0.14242(4) -C19 C 0.76714(11) 0.57148(7) 0.15717(5) -C20 C 0.67953(11) 0.54087(7) 0.20433(5) -C21 C 0.66710(11) 0.44072(6) 0.27033(5) -C22 C 0.75559(12) 0.38566(6) 0.30390(5) -C23 C 0.92099(12) 0.38121(6) 0.38658(5) -C24 C 1.00586(12) 0.43172(6) 0.42663(5) -N1 N 0.50227(8) 0.74965(4) 0.47018(3) -N2 N 0.73484(9) 0.82388(4) 0.37196(4) -O1 O 1.10839(8) 0.46397(4) 0.39186(3) -O2 O 1.24881(7) 0.57924(4) 0.33872(3) -O3 O 1.16859(8) 0.61170(4) 0.21955(3) -O4 O 0.88995(8) 0.60219(4) 0.18500(3) -O5 O 0.75255(7) 0.48174(4) 0.23286(3) -O6 O 0.85092(8) 0.42487(4) 0.34215(3) -K1 K 0.98576(2) 0.543413(12) 0.295073(9) -Si1 Si 0.52527(3) 0.709508(15) 0.538792(11) -Si2 Si 0.35351(3) 0.793416(14) 0.444804(12) -Si3 Si 0.78228(3) 0.901615(15) 0.410426(12) -Si4 Si 0.77908(3) 0.807781(17) 0.300533(13) -H1 H 0.76890 0.68770 0.53470 -H2 H 0.74580 0.75300 0.57740 -H3 H 0.72570 0.67410 0.59890 -H4 H 0.34030 0.76430 0.59040 -H5 H 0.46960 0.81040 0.60000 -H6 H 0.45420 0.74050 0.63560 -H7 H 0.35960 0.61290 0.52740 -H8 H 0.46860 0.59250 0.57800 -H9 H 0.50450 0.58450 0.51290 -H10 H 0.19890 0.69110 0.43120 -H11 H 0.19010 0.72280 0.49560 -H12 H 0.11310 0.76130 0.44180 -H13 H 0.41240 0.91230 0.48290 -H14 H 0.30420 0.87630 0.52260 -H15 H 0.25950 0.91160 0.46250 -H16 H 0.43770 0.84350 0.35530 -H17 H 0.27730 0.84090 0.35060 -H18 H 0.36070 0.77200 0.34110 -H19 H 0.82590 0.85770 0.50850 -H20 H 0.77640 0.93780 0.51100 -H21 H 0.66980 0.87550 0.50010 -H22 H 0.69030 0.99470 0.34470 -H23 H 0.69890 1.02420 0.40780 -H24 H 0.58130 0.97310 0.38800 -H25 H 0.99020 0.94060 0.36480 -H26 H 0.99880 0.96010 0.43190 -H27 H 1.02270 0.88030 0.41220 -H28 H 0.86140 0.92290 0.27100 -H29 H 0.70370 0.92180 0.25400 -H30 H 0.80740 0.88170 0.21470 -H31 H 0.63230 0.70560 0.27960 -H32 H 0.56240 0.77510 0.25300 -H33 H 0.67870 0.73680 0.22150 -H34 H 0.95580 0.71870 0.32660 -H35 H 1.01920 0.79390 0.31110 -H36 H 0.96720 0.74440 0.26090 -H37 H 1.23910 0.48660 0.46030 -H38 H 1.14790 0.55300 0.43980 -H39 H 1.37810 0.56500 0.40890 -H40 H 1.35610 0.49340 0.36950 -H41 H 1.42700 0.62010 0.31590 -H42 H 1.37670 0.55220 0.27770 -H43 H 1.34920 0.66160 0.22220 -H44 H 1.24970 0.69130 0.26940 -H45 H 1.08340 0.70300 0.18920 -H46 H 1.18010 0.66590 0.14330 -H47 H 0.94790 0.65100 0.11210 -H48 H 1.01790 0.57380 0.12410 -H49 H 0.71700 0.61010 0.13530 -H50 H 0.79050 0.53260 0.13000 -H51 H 0.66050 0.57770 0.23380 -H52 H 0.59160 0.52380 0.18540 -H53 H 0.62460 0.47320 0.29850 -H54 H 0.59480 0.41630 0.24650 -H55 H 0.80320 0.35580 0.27670 -H56 H 0.69760 0.35400 0.32740 -H57 H 0.98020 0.34570 0.36790 -H58 H 0.85480 0.35490 0.40960 -H59 H 1.04940 0.40480 0.46030 -H60 H 0.94700 0.46870 0.44150 -#END diff --git a/cell2mol/test/error_2/CIVREF.search2.cif b/cell2mol/test/error_2/CIVREF.search2.cif deleted file mode 100755 index a871ba86b..000000000 --- a/cell2mol/test/error_2/CIVREF.search2.cif +++ /dev/null @@ -1,152 +0,0 @@ - -####################################################################### -# -# Cambridge Crystallographic Data Centre -# CCDC -# -####################################################################### -# -# If this CIF has been generated from an entry in the Cambridge -# Structural Database, then it will include bibliographic, chemical, -# crystal, experimental, refinement or atomic coordinate data resulting -# from the CCDC's data processing and validation procedures. -# -####################################################################### - -data_CSD_CIF_CIVREF -_audit_creation_date 2008-04-21 -_audit_creation_method CSD-ConQuest-V1 -_database_code_CSD CIVREF -_database_code_depnum_ccdc_archive 'CCDC 662469' -_chemical_formula_sum 'C16 H47 Mn1 N2 Na1 Si5' -_chemical_formula_moiety -; -C16 H47 Mn1 N2 Na1 Si5 -; -_journal_coden_Cambridge 182 -_journal_year 2008 -_journal_page_first 308 -_journal_name_full 'Chem.Commun. ' -loop_ -_publ_author_name -"A.R.Kennedy" -"J.Klett" -"R.E.Mulvey" -"S.Newton" -"D.S.Wright" -_chemical_name_systematic -; -bis(\m~2~-bis(trimethylsilyl)amido)-(trimethylsilylmethyl)-manganese(ii)-sodiu -m(i) -; -_cell_volume 1431.781 -_exptl_crystal_colour 'colorless' -_exptl_crystal_density_diffrn 1.127 -_exptl_crystal_description 'large needle' -_diffrn_ambient_temperature 150 -#These two values have been output from a single CSD field. -_refine_ls_R_factor_gt 0.0329 -_refine_ls_wR_factor_gt 0.0329 -_symmetry_cell_setting triclinic -_symmetry_space_group_name_H-M 'P -1' -_symmetry_Int_Tables_number 2 -loop_ -_symmetry_equiv_pos_site_id -_symmetry_equiv_pos_as_xyz -1 x,y,z -2 -x,-y,-z -_cell_length_a 10.2226(3) -_cell_length_b 11.9296(3) -_cell_length_c 12.0857(3) -_cell_angle_alpha 97.180(1) -_cell_angle_beta 100.700(1) -_cell_angle_gamma 93.377(1) -_cell_formula_units_Z 2 -loop_ -_atom_type_symbol -_atom_type_radius_bond -C 0.68 -H 0.23 -Mn 1.22 -N 0.68 -Na 1.45 -Si 1.20 -loop_ -_atom_site_label -_atom_site_type_symbol -_atom_site_fract_x -_atom_site_fract_y -_atom_site_fract_z -Mn1 Mn 0.78870(3) 0.26076(2) 0.74278(2) -Na1 Na 0.94982(7) 0.04764(6) 0.74658(6) -Si1 Si 0.64175(5) 0.52425(5) 0.75877(5) -Si2 Si 0.83253(5) 0.20390(4) 0.98910(4) -Si3 Si 0.66694(5) 0.02479(4) 0.81375(4) -Si4 Si 0.85872(5) 0.20777(4) 0.50248(4) -Si5 Si 1.09539(5) 0.26915(4) 0.69366(4) -N1 N 0.79057(14) 0.13387(12) 0.85278(12) -N2 N 0.93279(14) 0.21323(12) 0.64298(12) -C1 C 0.6341(2) 0.3710(2) 0.7183(3) -C2 C 0.7848(3) 0.5984(2) 0.7132(3) -H1 H 0.86830 0.56810 0.74570 -H2 H 0.78930 0.67980 0.73990 -H3 H 0.77190 0.58610 0.63000 -C3 C 0.4871(2) 0.5870(2) 0.6923(2) -H4 H 0.47540 0.57190 0.60930 -H5 H 0.49590 0.66900 0.71660 -H6 H 0.40940 0.55270 0.71640 -C4 C 0.6604(3) 0.5633(2) 0.9158(2) -H7 H 0.58760 0.52380 0.94210 -H8 H 0.65710 0.64540 0.93380 -H9 H 0.74630 0.54130 0.95410 -C5 C 0.9334(2) 0.34066(16) 0.99061(17) -H10 H 1.01830 0.32460 0.96790 -H11 H 0.95100 0.38310 1.06740 -H12 H 0.88360 0.38570 0.93730 -C6 C 0.6874(2) 0.2421(2) 1.0558(2) -H13 H 0.63180 0.28930 1.00870 -H14 H 0.72010 0.28430 1.13180 -H15 H 0.63420 0.17290 1.06170 -C7 C 0.9388(2) 0.1217(2) 1.08939(19) -C8 C 0.49735(19) 0.07488(18) 0.77125(19) -H16 H 0.47990 0.13070 0.83230 -H17 H 0.42980 0.01030 0.75750 -H18 H 0.49340 0.10990 0.70170 -C9 C 0.6576(2) -0.06951(19) 0.92555(19) -H19 H 0.74380 -0.10110 0.94610 -H20 H 0.58770 -0.13140 0.89600 -H21 H 0.63640 -0.02540 0.99300 -C10 C 0.7006(2) -0.07157(18) 0.68816(19) -C11 C 0.6764(2) 0.1581(2) 0.47638(18) -H22 H 0.66660 0.07820 0.48710 -H23 H 0.63450 0.16660 0.39840 -H24 H 0.63290 0.20360 0.53010 -C12 C 0.8726(2) 0.34674(18) 0.44780(18) -H25 H 0.83220 0.40360 0.49360 -H26 H 0.82590 0.33860 0.36840 -H27 H 0.96700 0.37110 0.45280 -C13 C 0.9283(2) 0.1026(2) 0.40313(18) -C14 C 1.1075(2) 0.42362(16) 0.74907(18) -H28 H 1.07470 0.46610 0.68660 -H29 H 1.20080 0.44990 0.78200 -H30 H 1.05310 0.43580 0.80760 -C15 C 1.20965(19) 0.2510(2) 0.58936(17) -H31 H 1.21320 0.17000 0.56450 -H32 H 1.29950 0.28470 0.62560 -H33 H 1.17610 0.28860 0.52340 -C16 C 1.1736(2) 0.19521(18) 0.81543(17) -H34 H 0.603(3) 0.359(2) 0.640(3) -H35 H 0.565(3) 0.338(3) 0.747(3) -H36 H 0.887(2) 0.056(2) 1.100(2) -H37 H 0.964(2) 0.171(2) 1.164(2) -H38 H 1.013(3) 0.101(2) 1.061(2) -H39 H 0.719(2) -0.032(2) 0.625(2) -H40 H 0.776(2) -0.1151(17) 0.7104(16) -H41 H 0.631(3) -0.123(2) 0.656(2) -H42 H 0.921(2) 0.029(2) 0.425(2) -H43 H 1.014(3) 0.123(2) 0.402(2) -H44 H 0.879(2) 0.1022(19) 0.324(2) -H45 H 1.124(2) 0.1931(17) 0.8716(18) -H46 H 1.255(2) 0.2357(19) 0.8501(19) -H47 H 1.193(2) 0.1198(19) 0.7901(18) -#END diff --git a/cell2mol/test/error_2/CORLIE.search2.cif b/cell2mol/test/error_2/CORLIE.search2.cif deleted file mode 100755 index dfaf913c7..000000000 --- a/cell2mol/test/error_2/CORLIE.search2.cif +++ /dev/null @@ -1,195 +0,0 @@ - -####################################################################### -# -# Cambridge Crystallographic Data Centre -# CCDC -# -####################################################################### -# -# If this CIF has been generated from an entry in the Cambridge -# Structural Database, then it will include bibliographic, chemical, -# crystal, experimental, refinement or atomic coordinate data resulting -# from the CCDC's data processing and validation procedures. -# -####################################################################### - -data_CSD_CIF_CORLIE -_audit_creation_date 1985-08-16 -_audit_creation_method CSD-ConQuest-V1 -_database_code_CSD CORLIE -_chemical_formula_sum 'C32 H72 Li1 Mn1 N1 O2 Si2' -_chemical_formula_moiety -; -C32 H72 Li1 Mn1 N1 O2 Si2 -; -_journal_coden_Cambridge 4 -_journal_volume 106 -_journal_year 1984 -_journal_page_first 7011 -_journal_name_full 'J.Am.Chem.Soc. ' -loop_ -_publ_author_name -"B.D.Murray" -"P.P.Power" -_chemical_name_systematic -; -bis(\m~2~-Tri-t-butylmethoxy)-bis(trimethylsilyl)amino-manganese(ii)-lithium -; -_chemical_melting_point 431.15 -_cell_volume 3695.535 -_exptl_crystal_colour 'pale pink' -_exptl_crystal_density_diffrn 1.12 -_exptl_special_details -; -Melting point range 431.15-433.15K - -; -_diffrn_ambient_temperature 140 -#These two values have been output from a single CSD field. -_refine_ls_R_factor_gt 0.033 -_refine_ls_wR_factor_gt 0.033 -_symmetry_cell_setting monoclinic -_symmetry_space_group_name_H-M 'C c' -_symmetry_Int_Tables_number 9 -loop_ -_symmetry_equiv_pos_site_id -_symmetry_equiv_pos_as_xyz -1 x,y,z -2 1/2+x,1/2+y,z -3 x,-y,1/2+z -4 1/2+x,1/2-y,1/2+z -_cell_length_a 21.243(4) -_cell_length_b 11.814(1) -_cell_length_c 20.334(3) -_cell_angle_alpha 90 -_cell_angle_beta 133.60(1) -_cell_angle_gamma 90 -_cell_formula_units_Z 4 -loop_ -_atom_type_symbol -_atom_type_radius_bond -C 0.68 -H 0.23 -Li 0.74 -Mn 1.35 -N 0.68 -O 0.68 -Si 1.20 -loop_ -_atom_site_label -_atom_site_type_symbol -_atom_site_fract_x -_atom_site_fract_y -_atom_site_fract_z -Mn1 Mn 0.9472(1) 0.4099(1) 0.2485(1) -Si1 Si 0.8503(1) 0.6412(1) 0.1437(1) -Si2 Si 1.0252(1) 0.6495(1) 0.3392(1) -O1 O 1.0071(2) 0.2941(2) 0.2344(2) -O2 O 0.9199(2) 0.2826(2) 0.2887(2) -N1 N 0.9392(3) 0.5790(2) 0.2427(3) -C1 C 1.0594(2) 0.2661(3) 0.2171(3) -C2 C 1.1591(3) 0.2819(4) 0.3121(3) -C3 C 1.0318(3) 0.3491(4) 0.1373(3) -C4 C 1.0357(3) 0.1322(4) 0.1830(3) -C5 C 1.1738(3) 0.2438(4) 0.3943(3) -C6 C 1.1865(3) 0.4068(4) 0.3349(3) -C7 C 1.2288(3) 0.2240(5) 0.3193(3) -C8 C 1.0940(3) 0.3504(4) 0.1218(3) -C9 C 1.0210(3) 0.4742(4) 0.1501(3) -C10 C 0.9418(3) 0.3197(4) 0.0444(3) -C11 C 1.0743(4) 0.0474(4) 0.2601(4) -C12 C 1.0642(3) 0.0895(4) 0.1350(3) -C13 C 0.9362(4) 0.1102(4) 0.1162(4) -C14 C 0.8661(3) 0.2421(3) 0.3020(3) -C15 C 0.8276(3) 0.3499(4) 0.3127(3) -C16 C 0.9291(3) 0.1644(4) 0.3931(3) -C17 C 0.7900(3) 0.1672(4) 0.2109(3) -C18 C 0.7577(3) 0.4130(4) 0.2231(4) -C19 C 0.8970(4) 0.4435(4) 0.3735(4) -C20 C 0.7869(4) 0.3253(5) 0.3518(4) -C21 C 0.9900(3) 0.2339(5) 0.4813(3) -C22 C 0.8824(3) 0.0799(4) 0.4046(3) -C23 C 0.9952(3) 0.0963(4) 0.3997(4) -C24 C 0.8205(4) 0.0518(4) 0.2066(4) -C25 C 0.7563(3) 0.2246(4) 0.1227(3) -C26 C 0.7089(3) 0.1416(5) 0.1949(3) -C27 C 0.7865(3) 0.5319(4) 0.0506(3) -C28 C 0.7729(3) 0.7055(4) 0.1483(4) -C29 C 0.8798(3) 0.7573(4) 0.1056(3) -C30 C 0.9914(4) 0.7598(4) 0.3750(4) -C31 C 1.0980(3) 0.5469(4) 0.4366(3) -C32 C 1.0975(4) 0.7197(4) 0.3287(4) -Li1 Li 0.9822(6) 0.1914(6) 0.2796(7) -H1 H 1.16150 0.16440 0.38930 -H2 H 1.13570 0.28550 0.39540 -H3 H 1.23310 0.25780 0.44940 -H4 H 1.19520 0.44370 0.29960 -H5 H 1.24110 0.40030 0.39670 -H6 H 1.14690 0.45050 0.33260 -H7 H 1.23100 0.14370 0.32810 -H8 H 1.28420 0.25680 0.36960 -H9 H 1.21480 0.23880 0.26410 -H10 H 1.14890 0.38140 0.17480 -H11 H 1.06620 0.40140 0.07160 -H12 H 1.10330 0.27880 0.10730 -H13 H 1.07660 0.50920 0.19680 -H14 H 0.98410 0.49010 0.16060 -H15 H 0.99480 0.50360 0.09200 -H16 H 0.93710 0.24960 0.01750 -H17 H 0.92870 0.38140 0.00590 -H18 H 0.90150 0.31980 0.05140 -H19 H 1.03350 0.12100 0.07610 -H20 H 1.05240 0.00980 0.12920 -H21 H 1.12550 0.10110 0.17350 -H22 H 0.91240 0.11820 0.05560 -H23 H 0.91160 0.16650 0.12690 -H24 H 0.92290 0.03620 0.12330 -H25 H 0.70460 0.37140 0.17900 -H26 H 0.77990 0.43530 0.19690 -H27 H 0.74660 0.47910 0.24120 -H28 H 0.93580 0.42270 0.43640 -H29 H 0.86380 0.50860 0.36250 -H30 H 0.93000 0.46110 0.35860 -H31 H 0.83220 0.30180 0.41390 -H32 H 0.74130 0.26990 0.31890 -H33 H 0.76410 0.39690 0.34950 -H34 H 0.96250 0.27490 0.49650 -H35 H 1.02340 0.28510 0.47890 -H36 H 1.02760 0.17710 0.52660 -H37 H 0.84650 0.02860 0.35430 -H38 H 0.84630 0.12760 0.40540 -H39 H 0.92130 0.03770 0.46020 -H40 H 0.84090 0.00510 0.25670 -H41 H 0.86560 0.05980 0.20680 -H42 H 0.77040 0.01740 0.15070 -H43 H 0.72010 0.28870 0.10600 -H44 H 0.72320 0.16870 0.07540 -H45 H 0.80470 0.24810 0.13100 -H46 H 0.67790 0.20690 0.18800 -H47 H 0.72640 0.09620 0.24440 -H48 H 0.67200 0.09790 0.14000 -H49 H 0.73270 0.56720 -0.00040 -H50 H 0.77470 0.46320 0.06560 -H51 H 0.81940 0.51480 0.03540 -H52 H 0.75690 0.66260 0.17510 -H53 H 0.72200 0.72040 0.08570 -H54 H 0.79870 0.77580 0.18030 -H55 H 0.82670 0.78610 0.04900 -H56 H 0.91870 0.73660 0.09860 -H57 H 0.90640 0.81450 0.15150 -H58 H 1.03770 0.79620 0.43180 -H59 H 0.95290 0.72380 0.37790 -H60 H 0.95990 0.81520 0.32720 -H61 H 1.14180 0.59470 0.48720 -H62 H 1.12470 0.49550 0.42530 -H63 H 1.06950 0.50470 0.45020 -H64 H 1.14500 0.75770 0.38410 -H65 H 1.06390 0.77360 0.27990 -H66 H 1.11970 0.66290 0.31540 -H67 H 1.0599(28) -0.0308(38) 0.2354(29) -H68 H 1.0373(27) 0.1377(37) 0.4102(28) -H69 H 0.9725(27) 0.0512(38) 0.3461(29) -H70 H 1.0623(31) 0.0507(40) 0.2963(33) -H71 H 1.1429(37) 0.0420(46) 0.3113(37) -H72 H 1.0245(33) 0.0435(45) 0.4459(35) -#END diff --git a/cell2mol/test/error_2/CSCNCC01.search6.cif b/cell2mol/test/error_2/CSCNCC01.search6.cif deleted file mode 100755 index 2089f2e25..000000000 --- a/cell2mol/test/error_2/CSCNCC01.search6.cif +++ /dev/null @@ -1,302 +0,0 @@ - -####################################################################### -# -# Cambridge Crystallographic Data Centre -# CCDC -# -####################################################################### -# -# If this CIF has been generated from an entry in the Cambridge -# Structural Database, then it will include bibliographic, chemical, -# crystal, experimental, refinement or atomic coordinate data resulting -# from the CCDC's data processing and validation procedures. -# -####################################################################### - -data_CSD_CIF_CSCNCC01 -_audit_creation_date 1991-01-07 -_audit_creation_method CSD-ConQuest-V1 -_database_code_CSD CSCNCC01 -_chemical_formula_sum 'C14 H24 Co1 Cs1 N8' -_chemical_formula_moiety -; -2(C4 H12 N1 1+),C6 Co1 N6 3-,Cs1 1+ -; -_journal_coden_Cambridge 369 -_journal_volume 15 -_journal_year 1990 -_journal_page_first 106 -_journal_name_full 'Transition Met.Chem. ' -loop_ -_publ_author_name -"A.D.Morales" -"R.G.Romero" -"J.D.Rodriguez" -"R.P.Hernandez" -"J.F.Bertran" -_chemical_name_systematic -; -Cesium tetramethylammonium hexacyano-cobalt(iii) -; -_cell_volume 1996.568 -_exptl_crystal_density_diffrn 1.66 -_diffrn_ambient_temperature ? -_diffrn_special_details -; -The study was carried out at room temperature,in the range 283-303K - -; -#These two values have been output from a single CSD field. -_refine_ls_R_factor_gt 0.053 -_refine_ls_wR_factor_gt 0.053 -_symmetry_cell_setting cubic -_symmetry_space_group_name_H-M 'F m 3 m' -_symmetry_Int_Tables_number 225 -loop_ -_symmetry_equiv_pos_site_id -_symmetry_equiv_pos_as_xyz -1 x,y,z -2 x,1/2+y,1/2+z -3 1/2+x,y,1/2+z -4 1/2+x,1/2+y,z -5 z,x,y -6 y,z,x -7 1/2+z,x,1/2+y -8 1/2+y,1/2+z,x -9 1/2+z,1/2+x,y -10 y,1/2+z,1/2+x -11 z,1/2+x,1/2+y -12 1/2+y,z,1/2+x -13 x,y,-z -14 x,1/2+y,1/2-z -15 1/2+x,y,1/2-z -16 1/2+x,1/2+y,-z -17 z,x,-y -18 y,z,-x -19 1/2+z,x,1/2-y -20 1/2+y,1/2+z,-x -21 1/2+z,1/2+x,-y -22 y,1/2+z,1/2-x -23 z,1/2+x,1/2-y -24 1/2+y,z,1/2-x -25 -x,y,z -26 -x,1/2+y,1/2+z -27 1/2-x,y,1/2+z -28 1/2-x,1/2+y,z -29 -z,x,y -30 -y,z,x -31 1/2-z,x,1/2+y -32 1/2-y,1/2+z,x -33 1/2-z,1/2+x,y -34 -y,1/2+z,1/2+x -35 -z,1/2+x,1/2+y -36 1/2-y,z,1/2+x -37 -x,y,-z -38 -x,1/2+y,1/2-z -39 1/2-x,y,1/2-z -40 1/2-x,1/2+y,-z -41 -z,x,-y -42 -y,z,-x -43 1/2-z,x,1/2-y -44 1/2-y,1/2+z,-x -45 1/2-z,1/2+x,-y -46 -y,1/2+z,1/2-x -47 -z,1/2+x,1/2-y -48 1/2-y,z,1/2-x -49 y,x,z -50 1/2+y,x,1/2+z -51 y,1/2+x,1/2+z -52 1/2+y,1/2+x,z -53 x,z,y -54 z,y,x -55 x,1/2+z,1/2+y -56 1/2+z,1/2+y,x -57 1/2+x,1/2+z,y -58 1/2+z,y,1/2+x -59 1/2+x,z,1/2+y -60 z,1/2+y,1/2+x -61 y,x,-z -62 1/2+y,x,1/2-z -63 y,1/2+x,1/2-z -64 1/2+y,1/2+x,-z -65 x,z,-y -66 z,y,-x -67 x,1/2+z,1/2-y -68 1/2+z,1/2+y,-x -69 1/2+x,1/2+z,-y -70 1/2+z,y,1/2-x -71 1/2+x,z,1/2-y -72 z,1/2+y,1/2-x -73 y,-x,z -74 1/2+y,-x,1/2+z -75 y,1/2-x,1/2+z -76 1/2+y,1/2-x,z -77 x,-z,y -78 z,-y,x -79 x,1/2-z,1/2+y -80 1/2+z,1/2-y,x -81 1/2+x,1/2-z,y -82 1/2+z,-y,1/2+x -83 1/2+x,-z,1/2+y -84 z,1/2-y,1/2+x -85 y,-x,-z -86 1/2+y,-x,1/2-z -87 y,1/2-x,1/2-z -88 1/2+y,1/2-x,-z -89 x,-z,-y -90 z,-y,-x -91 x,1/2-z,1/2-y -92 1/2+z,1/2-y,-x -93 1/2+x,1/2-z,-y -94 1/2+z,-y,1/2-x -95 1/2+x,-z,1/2-y -96 z,1/2-y,1/2-x -97 -x,-y,-z -98 -x,-1/2-y,-1/2-z -99 -1/2-x,-y,-1/2-z -100 -1/2-x,-1/2-y,-z -101 -z,-x,-y -102 -y,-z,-x -103 -1/2-z,-x,-1/2-y -104 -1/2-y,-1/2-z,-x -105 -1/2-z,-1/2-x,-y -106 -y,-1/2-z,-1/2-x -107 -z,-1/2-x,-1/2-y -108 -1/2-y,-z,-1/2-x -109 -x,-y,z -110 -x,-1/2-y,-1/2+z -111 -1/2-x,-y,-1/2+z -112 -1/2-x,-1/2-y,z -113 -z,-x,y -114 -y,-z,x -115 -1/2-z,-x,-1/2+y -116 -1/2-y,-1/2-z,x -117 -1/2-z,-1/2-x,y -118 -y,-1/2-z,-1/2+x -119 -z,-1/2-x,-1/2+y -120 -1/2-y,-z,-1/2+x -121 x,-y,-z -122 x,-1/2-y,-1/2-z -123 -1/2+x,-y,-1/2-z -124 -1/2+x,-1/2-y,-z -125 z,-x,-y -126 y,-z,-x -127 -1/2+z,-x,-1/2-y -128 -1/2+y,-1/2-z,-x -129 -1/2+z,-1/2-x,-y -130 y,-1/2-z,-1/2-x -131 z,-1/2-x,-1/2-y -132 -1/2+y,-z,-1/2-x -133 x,-y,z -134 x,-1/2-y,-1/2+z -135 -1/2+x,-y,-1/2+z -136 -1/2+x,-1/2-y,z -137 z,-x,y -138 y,-z,x -139 -1/2+z,-x,-1/2+y -140 -1/2+y,-1/2-z,x -141 -1/2+z,-1/2-x,y -142 y,-1/2-z,-1/2+x -143 z,-1/2-x,-1/2+y -144 -1/2+y,-z,-1/2+x -145 -y,-x,-z -146 -1/2-y,-x,-1/2-z -147 -y,-1/2-x,-1/2-z -148 -1/2-y,-1/2-x,-z -149 -x,-z,-y -150 -z,-y,-x -151 -x,-1/2-z,-1/2-y -152 -1/2-z,-1/2-y,-x -153 -1/2-x,-1/2-z,-y -154 -1/2-z,-y,-1/2-x -155 -1/2-x,-z,-1/2-y -156 -z,-1/2-y,-1/2-x -157 -y,-x,z -158 -1/2-y,-x,-1/2+z -159 -y,-1/2-x,-1/2+z -160 -1/2-y,-1/2-x,z -161 -x,-z,y -162 -z,-y,x -163 -x,-1/2-z,-1/2+y -164 -1/2-z,-1/2-y,x -165 -1/2-x,-1/2-z,y -166 -1/2-z,-y,-1/2+x -167 -1/2-x,-z,-1/2+y -168 -z,-1/2-y,-1/2+x -169 -y,x,-z -170 -1/2-y,x,-1/2-z -171 -y,-1/2+x,-1/2-z -172 -1/2-y,-1/2+x,-z -173 -x,z,-y -174 -z,y,-x -175 -x,-1/2+z,-1/2-y -176 -1/2-z,-1/2+y,-x -177 -1/2-x,-1/2+z,-y -178 -1/2-z,y,-1/2-x -179 -1/2-x,z,-1/2-y -180 -z,-1/2+y,-1/2-x -181 -y,x,z -182 -1/2-y,x,-1/2+z -183 -y,-1/2+x,-1/2+z -184 -1/2-y,-1/2+x,z -185 -x,z,y -186 -z,y,x -187 -x,-1/2+z,-1/2+y -188 -1/2-z,-1/2+y,x -189 -1/2-x,-1/2+z,y -190 -1/2-z,y,-1/2+x -191 -1/2-x,z,-1/2+y -192 -z,-1/2+y,-1/2+x -_cell_length_a 12.592(2) -_cell_length_b 12.592(2) -_cell_length_c 12.592(2) -_cell_angle_alpha 90 -_cell_angle_beta 90 -_cell_angle_gamma 90 -_cell_formula_units_Z 4 -loop_ -_atom_type_symbol -_atom_type_radius_bond -C 0.68 -H 0.23 -Co 1.33 -Cs 1.67 -N 0.68 -loop_ -_atom_site_label -_atom_site_type_symbol -_atom_site_fract_x -_atom_site_fract_y -_atom_site_fract_z -Co1 Co 0.00000 0.00000 0.00000 -Cs1 Cs 0.50000 0.50000 0.50000 -N1 N 0.25000 0.25000 0.25000 -C1 C 0.149(1) 0.00000 0.00000 -N2 N 0.242(1) 0.00000 0.00000 -C2 C 0.314(2) 0.314(2) 0.314(2) -H1 H 0.31000 0.31000 0.38000 -C1D C 0.000(1) 0.14900 0.00000 -N2D N 0.000(1) 0.24200 0.00000 -C1E C 0.000(1) 0.00000 0.14900 -N2E N 0.000(1) 0.00000 0.24200 -C1Q C 0.000(1) 0.00000 -0.14900 -N2Q N 0.000(1) 0.00000 -0.24200 -C1X C -0.149(1) 0.00000 0.00000 -N2X N -0.242(1) 0.00000 0.00000 -C1TB C 0.000(1) -0.14900 0.00000 -N2TB N 0.000(1) -0.24200 0.00000 -H1D H 0.38000 0.31000 0.31000 -H1E H 0.31000 0.38000 0.31000 -C2LA C 0.186(2) 0.314(2) 0.186(2) -H1LA H 0.19000 0.31000 0.12000 -H1PA H 0.12000 0.31000 0.19000 -H1UA H 0.19000 0.38000 0.19000 -C2HC C 0.314(2) 0.186(2) 0.186(2) -H1HC H 0.31000 0.19000 0.12000 -H1LC H 0.31000 0.12000 0.19000 -H1QC H 0.38000 0.19000 0.19000 -C2GD C 0.186(2) 0.186(2) 0.314(2) -H1GD H 0.19000 0.19000 0.38000 -H1LD H 0.12000 0.19000 0.31000 -H1KD H 0.19000 0.12000 0.31000 -#END diff --git a/cell2mol/test/error_2/CSCNCC01/CSCNCC01.cif b/cell2mol/test/error_2/CSCNCC01/CSCNCC01.cif deleted file mode 100644 index 95a950aaf..000000000 --- a/cell2mol/test/error_2/CSCNCC01/CSCNCC01.cif +++ /dev/null @@ -1,336 +0,0 @@ - -####################################################################### -# -# Cambridge Crystallographic Data Centre -# CCDC -# -####################################################################### -# -# If this CIF has been generated from an entry in the Cambridge -# Structural Database, then it will include bibliographic, chemical, -# crystal, experimental, refinement or atomic coordinate data resulting -# from the CCDC's data processing and validation procedures. -# -####################################################################### - -data_CSD_CIF_CSCNCC01 -_audit_creation_date 1991-01-07 -_audit_creation_method CSD-ConQuest-V1 -_database_code_CSD CSCNCC01 -_chemical_formula_sum 'C14 H24 Co1 Cs1 N8' -_chemical_formula_moiety -; -2(C4 H12 N1 1+),C6 Co1 N6 3-,Cs1 1+ -; -_journal_coden_Cambridge 369 -_journal_volume 15 -_journal_year 1990 -_journal_page_first 106 -_journal_name_full 'Transition Met.Chem. ' -loop_ -_publ_author_name -"A.D.Morales" -"R.G.Romero" -"J.D.Rodriguez" -"R.P.Hernandez" -"J.F.Bertran" -_chemical_name_systematic -; -Cesium tetramethylammonium hexacyano-cobalt(iii) -; -_cell_volume 1996.568 -_exptl_crystal_density_diffrn 1.66 -_diffrn_ambient_temperature ? -_diffrn_special_details -; -The study was carried out at room temperature,in the range 283-303K - -; -#These two values have been output from a single CSD field. -_refine_ls_R_factor_gt 0.053 -_refine_ls_wR_factor_gt 0.053 -_symmetry_cell_setting cubic -_symmetry_space_group_name_H-M 'F m 3 m' -_symmetry_Int_Tables_number 225 -loop_ -_symmetry_equiv_pos_site_id -_symmetry_equiv_pos_as_xyz -1 x,y,z -2 x,1/2+y,1/2+z -3 1/2+x,y,1/2+z -4 1/2+x,1/2+y,z -5 z,x,y -6 y,z,x -7 1/2+z,x,1/2+y -8 1/2+y,1/2+z,x -9 1/2+z,1/2+x,y -10 y,1/2+z,1/2+x -11 z,1/2+x,1/2+y -12 1/2+y,z,1/2+x -13 x,y,-z -14 x,1/2+y,1/2-z -15 1/2+x,y,1/2-z -16 1/2+x,1/2+y,-z -17 z,x,-y -18 y,z,-x -19 1/2+z,x,1/2-y -20 1/2+y,1/2+z,-x -21 1/2+z,1/2+x,-y -22 y,1/2+z,1/2-x -23 z,1/2+x,1/2-y -24 1/2+y,z,1/2-x -25 -x,y,z -26 -x,1/2+y,1/2+z -27 1/2-x,y,1/2+z -28 1/2-x,1/2+y,z -29 -z,x,y -30 -y,z,x -31 1/2-z,x,1/2+y -32 1/2-y,1/2+z,x -33 1/2-z,1/2+x,y -34 -y,1/2+z,1/2+x -35 -z,1/2+x,1/2+y -36 1/2-y,z,1/2+x -37 -x,y,-z -38 -x,1/2+y,1/2-z -39 1/2-x,y,1/2-z -40 1/2-x,1/2+y,-z -41 -z,x,-y -42 -y,z,-x -43 1/2-z,x,1/2-y -44 1/2-y,1/2+z,-x -45 1/2-z,1/2+x,-y -46 -y,1/2+z,1/2-x -47 -z,1/2+x,1/2-y -48 1/2-y,z,1/2-x -49 y,x,z -50 1/2+y,x,1/2+z -51 y,1/2+x,1/2+z -52 1/2+y,1/2+x,z -53 x,z,y -54 z,y,x -55 x,1/2+z,1/2+y -56 1/2+z,1/2+y,x -57 1/2+x,1/2+z,y -58 1/2+z,y,1/2+x -59 1/2+x,z,1/2+y -60 z,1/2+y,1/2+x -61 y,x,-z -62 1/2+y,x,1/2-z -63 y,1/2+x,1/2-z -64 1/2+y,1/2+x,-z -65 x,z,-y -66 z,y,-x -67 x,1/2+z,1/2-y -68 1/2+z,1/2+y,-x -69 1/2+x,1/2+z,-y -70 1/2+z,y,1/2-x -71 1/2+x,z,1/2-y -72 z,1/2+y,1/2-x -73 y,-x,z -74 1/2+y,-x,1/2+z -75 y,1/2-x,1/2+z -76 1/2+y,1/2-x,z -77 x,-z,y -78 z,-y,x -79 x,1/2-z,1/2+y -80 1/2+z,1/2-y,x -81 1/2+x,1/2-z,y -82 1/2+z,-y,1/2+x -83 1/2+x,-z,1/2+y -84 z,1/2-y,1/2+x -85 y,-x,-z -86 1/2+y,-x,1/2-z -87 y,1/2-x,1/2-z -88 1/2+y,1/2-x,-z -89 x,-z,-y -90 z,-y,-x -91 x,1/2-z,1/2-y -92 1/2+z,1/2-y,-x -93 1/2+x,1/2-z,-y -94 1/2+z,-y,1/2-x -95 1/2+x,-z,1/2-y -96 z,1/2-y,1/2-x -97 -x,-y,-z -98 -x,-1/2-y,-1/2-z -99 -1/2-x,-y,-1/2-z -100 -1/2-x,-1/2-y,-z -101 -z,-x,-y -102 -y,-z,-x -103 -1/2-z,-x,-1/2-y -104 -1/2-y,-1/2-z,-x -105 -1/2-z,-1/2-x,-y -106 -y,-1/2-z,-1/2-x -107 -z,-1/2-x,-1/2-y -108 -1/2-y,-z,-1/2-x -109 -x,-y,z -110 -x,-1/2-y,-1/2+z -111 -1/2-x,-y,-1/2+z -112 -1/2-x,-1/2-y,z -113 -z,-x,y -114 -y,-z,x -115 -1/2-z,-x,-1/2+y -116 -1/2-y,-1/2-z,x -117 -1/2-z,-1/2-x,y -118 -y,-1/2-z,-1/2+x -119 -z,-1/2-x,-1/2+y -120 -1/2-y,-z,-1/2+x -121 x,-y,-z -122 x,-1/2-y,-1/2-z -123 -1/2+x,-y,-1/2-z -124 -1/2+x,-1/2-y,-z -125 z,-x,-y -126 y,-z,-x -127 -1/2+z,-x,-1/2-y -128 -1/2+y,-1/2-z,-x -129 -1/2+z,-1/2-x,-y -130 y,-1/2-z,-1/2-x -131 z,-1/2-x,-1/2-y -132 -1/2+y,-z,-1/2-x -133 x,-y,z -134 x,-1/2-y,-1/2+z -135 -1/2+x,-y,-1/2+z -136 -1/2+x,-1/2-y,z -137 z,-x,y -138 y,-z,x -139 -1/2+z,-x,-1/2+y -140 -1/2+y,-1/2-z,x -141 -1/2+z,-1/2-x,y -142 y,-1/2-z,-1/2+x -143 z,-1/2-x,-1/2+y -144 -1/2+y,-z,-1/2+x -145 -y,-x,-z -146 -1/2-y,-x,-1/2-z -147 -y,-1/2-x,-1/2-z -148 -1/2-y,-1/2-x,-z -149 -x,-z,-y -150 -z,-y,-x -151 -x,-1/2-z,-1/2-y -152 -1/2-z,-1/2-y,-x -153 -1/2-x,-1/2-z,-y -154 -1/2-z,-y,-1/2-x -155 -1/2-x,-z,-1/2-y -156 -z,-1/2-y,-1/2-x -157 -y,-x,z -158 -1/2-y,-x,-1/2+z -159 -y,-1/2-x,-1/2+z -160 -1/2-y,-1/2-x,z -161 -x,-z,y -162 -z,-y,x -163 -x,-1/2-z,-1/2+y -164 -1/2-z,-1/2-y,x -165 -1/2-x,-1/2-z,y -166 -1/2-z,-y,-1/2+x -167 -1/2-x,-z,-1/2+y -168 -z,-1/2-y,-1/2+x -169 -y,x,-z -170 -1/2-y,x,-1/2-z -171 -y,-1/2+x,-1/2-z -172 -1/2-y,-1/2+x,-z -173 -x,z,-y -174 -z,y,-x -175 -x,-1/2+z,-1/2-y -176 -1/2-z,-1/2+y,-x -177 -1/2-x,-1/2+z,-y -178 -1/2-z,y,-1/2-x -179 -1/2-x,z,-1/2-y -180 -z,-1/2+y,-1/2-x -181 -y,x,z -182 -1/2-y,x,-1/2+z -183 -y,-1/2+x,-1/2+z -184 -1/2-y,-1/2+x,z -185 -x,z,y -186 -z,y,x -187 -x,-1/2+z,-1/2+y -188 -1/2-z,-1/2+y,x -189 -1/2-x,-1/2+z,y -190 -1/2-z,y,-1/2+x -191 -1/2-x,z,-1/2+y -192 -z,-1/2+y,-1/2+x -_cell_length_a 12.592(2) -_cell_length_b 12.592(2) -_cell_length_c 12.592(2) -_cell_angle_alpha 90 -_cell_angle_beta 90 -_cell_angle_gamma 90 -_cell_formula_units_Z 4 -loop_ -_atom_type_symbol -_atom_type_radius_bond -C 0.68 -H 0.23 -Co 1.33 -Cs 1.67 -N 0.68 -loop_ -_atom_site_label -_atom_site_type_symbol -_atom_site_fract_x -_atom_site_fract_y -_atom_site_fract_z -Co1 Co 0.00000 0.00000 0.00000 -Cs1 Cs 0.50000 0.50000 0.50000 -N1 N 0.25000 0.25000 0.25000 -C1 C 0.149(1) 0.00000 0.00000 -N2 N 0.242(1) 0.00000 0.00000 -C2 C 0.314(2) 0.314(2) 0.314(2) -H1 H 0.31000 0.31000 0.38000 -C1D C 0.000(1) 0.14900 0.00000 -N2D N 0.000(1) 0.24200 0.00000 -C1E C 0.000(1) 0.00000 0.14900 -N2E N 0.000(1) 0.00000 0.24200 -C1Q C 0.000(1) 0.00000 -0.14900 -N2Q N 0.000(1) 0.00000 -0.24200 -C1X C -0.149(1) 0.00000 0.00000 -N2X N -0.242(1) 0.00000 0.00000 -C1TB C 0.000(1) -0.14900 0.00000 -N2TB N 0.000(1) -0.24200 0.00000 -H1D H 0.38000 0.31000 0.31000 -H1E H 0.31000 0.38000 0.31000 -C2LA C 0.186(2) 0.314(2) 0.186(2) -H1LA H 0.19000 0.31000 0.12000 -H1PA H 0.12000 0.31000 0.19000 -H1UA H 0.19000 0.38000 0.19000 -C2HC C 0.314(2) 0.186(2) 0.186(2) -H1HC H 0.31000 0.19000 0.12000 -H1LC H 0.31000 0.12000 0.19000 -H1QC H 0.38000 0.19000 0.19000 -C2GD C 0.186(2) 0.186(2) 0.314(2) -H1GD H 0.19000 0.19000 0.38000 -H1LD H 0.12000 0.19000 0.31000 -H1KD H 0.19000 0.12000 0.31000 -loop_ -_geom_bond_atom_site_label_1 -_geom_bond_atom_site_label_2 -_geom_bond_distance -_geom_bond_site_symmetry_1 -_geom_bond_site_symmetry_2 -Co1 C1 1.876 1_555 1_555 -N1 C2 1.396 1_555 1_555 -C1 N2 1.171 1_555 1_555 -C2 H1 0.834 1_555 1_555 -C1D Co1 1.876 1_555 1_555 -N2D C1D 1.171 1_555 1_555 -C1E Co1 1.876 1_555 1_555 -N2E C1E 1.171 1_555 1_555 -C1Q Co1 1.876 1_555 1_555 -N2Q C1Q 1.171 1_555 1_555 -C1X Co1 1.876 1_555 1_555 -N2X C1X 1.171 1_555 1_555 -C1TB Co1 1.876 1_555 1_555 -N2TB C1TB 1.171 1_555 1_555 -H1D C2 0.834 1_555 1_555 -H1E C2 0.834 1_555 1_555 -C2LA N1 1.396 1_555 1_555 -H1LA C2LA 0.834 1_555 1_555 -H1PA C2LA 0.834 1_555 1_555 -H1UA C2LA 0.834 1_555 1_555 -C2HC N1 1.396 1_555 1_555 -H1HC C2HC 0.834 1_555 1_555 -H1LC C2HC 0.834 1_555 1_555 -H1QC C2HC 0.834 1_555 1_555 -C2GD N1 1.396 1_555 1_555 -H1GD C2GD 0.834 1_555 1_555 -H1LD C2GD 0.834 1_555 1_555 -H1KD C2GD 0.834 1_555 1_555 -#END diff --git a/cell2mol/test/error_2/CSCNCC01/CSCNCC01.info b/cell2mol/test/error_2/CSCNCC01/CSCNCC01.info deleted file mode 100644 index 6c3e19c12..000000000 --- a/cell2mol/test/error_2/CSCNCC01/CSCNCC01.info +++ /dev/null @@ -1,117 +0,0 @@ -CIF2CELL 2.0.0 -2024-05-05 8:29 -Output for None (Cesium tetramethylammonium hexacyano-cobalt(iii)) -CIF file exported from Cambridge Structural Database. -Database reference code: CSCNCC01. - BIBLIOGRAPHIC INFORMATION -A.D.Morales et al., Transition Met.Chem. 15, 106- (1990) - INPUT CELL INFORMATION -Symmetry information: -Cubic crystal system. -Space group number : 225 -Hall symbol : -F 4 2 3 -Hermann-Mauguin symbol : Fm3m - -Lattice parameters: - a b c - 12.5920000 12.5920000 12.5920000 - alpha beta gamma - 90.0000000 90.0000000 90.0000000 -Representative sites : -Atom x y z -Co 0.0000000 0.0000000 0.0000000 -Cs 0.5000000 0.5000000 0.5000000 -N 0.2500000 0.2500000 0.2500000 -C 0.1490000 0.0000000 0.0000000 -N 0.2420000 0.0000000 0.0000000 -C 0.3140000 0.3140000 0.3140000 -H 0.3100000 0.3100000 0.3800000 -C 0.0000000 0.1490000 0.0000000 -N 0.0000000 0.2420000 0.0000000 -C 0.0000000 0.0000000 0.1490000 -N 0.0000000 0.0000000 0.2420000 -C 0.0000000 0.0000000 -0.1490000 -N 0.0000000 0.0000000 -0.2420000 -C -0.1490000 0.0000000 0.0000000 -N -0.2420000 0.0000000 0.0000000 -C 0.0000000 -0.1490000 0.0000000 -N 0.0000000 -0.2420000 0.0000000 -H 0.3800000 0.3100000 0.3100000 -H 0.3100000 0.3800000 0.3100000 -C 0.1860000 0.3140000 0.1860000 -H 0.1900000 0.3100000 0.1200000 -H 0.1200000 0.3100000 0.1900000 -H 0.1900000 0.3800000 0.1900000 -C 0.3140000 0.1860000 0.1860000 -H 0.3100000 0.1900000 0.1200000 -H 0.3100000 0.1200000 0.1900000 -H 0.3800000 0.1900000 0.1900000 -C 0.1860000 0.1860000 0.3140000 -H 0.1900000 0.1900000 0.3800000 -H 0.1200000 0.1900000 0.3100000 -H 0.1900000 0.1200000 0.3100000 - - OUTPUT CELL INFORMATION -Symmetry information: -Cubic crystal system. -Space group number : 225 -Hall symbol : -F 4 2 3 -Hermann-Mauguin symbol : Fm3m - -Bravais lattice vectors : - 6.2960000 6.2960000 0.0000000 - 6.2960000 0.0000000 6.2960000 - 0.0000000 6.2960000 6.2960000 -All sites, (cartesian coordinates): -Atom x y z -Co 0.0000000 0.0000000 0.0000000 -Cs 6.2960000 6.2960000 6.2960000 -N 3.1480000 3.1480000 3.1480000 -N 9.4440000 9.4440000 9.4440000 -C 1.8762080 6.2960000 6.2960000 -C 6.2960000 1.8762080 6.2960000 -C 6.2960000 6.2960000 1.8762080 -C 10.7157920 6.2960000 6.2960000 -C 6.2960000 6.2960000 10.7157920 -C 6.2960000 10.7157920 6.2960000 -N 3.0472640 6.2960000 6.2960000 -N 6.2960000 3.0472640 6.2960000 -N 6.2960000 6.2960000 3.0472640 -N 9.5447360 6.2960000 6.2960000 -N 6.2960000 6.2960000 9.5447360 -N 6.2960000 9.5447360 6.2960000 -C 3.9538880 3.9538880 3.9538880 -C 10.2498880 10.2498880 8.6381120 -C 2.3421120 3.9538880 2.3421120 -C 2.3421120 2.3421120 3.9538880 -C 10.2498880 8.6381120 10.2498880 -C 8.6381120 8.6381120 8.6381120 -C 3.9538880 2.3421120 2.3421120 -C 8.6381120 10.2498880 10.2498880 -H 3.9035200 3.9035200 4.7849600 -H 3.9035200 3.9035200 7.8070400 -H 2.3924800 3.9035200 1.5110400 -H 1.5110400 2.3924800 3.9035200 -H 3.9035200 8.6884800 4.7849600 -H 8.6884800 7.8070400 8.6884800 -H 7.8070400 8.6884800 8.6884800 -H 8.6884800 8.6884800 7.8070400 -H 3.9035200 2.3924800 1.5110400 -H 2.3924800 4.7849600 2.3924800 -H 8.6884800 3.9035200 4.7849600 -H 2.3924800 1.5110400 3.9035200 -H 4.7849600 2.3924800 2.3924800 -H 2.3924800 2.3924800 4.7849600 -H 4.7849600 3.9035200 8.6884800 -H 3.9035200 1.5110400 2.3924800 -H 8.6884800 4.7849600 3.9035200 -H 7.8070400 3.9035200 3.9035200 -H 3.9035200 7.8070400 3.9035200 -H 3.9035200 4.7849600 3.9035200 -H 4.7849600 3.9035200 3.9035200 -H 3.9035200 4.7849600 8.6884800 -H 1.5110400 3.9035200 2.3924800 -H 4.7849600 8.6884800 3.9035200 - -Unit cell volume : 499.1420447 A^3 -Unit cell density : 0.9941427 u/A^3 = 11.1402344 g/cm^3 diff --git a/cell2mol/test/error_2/CSCNCC01/Cell_CSCNCC01.cell b/cell2mol/test/error_2/CSCNCC01/Cell_CSCNCC01.cell deleted file mode 100644 index 42a48855e..000000000 Binary files a/cell2mol/test/error_2/CSCNCC01/Cell_CSCNCC01.cell and /dev/null differ diff --git a/cell2mol/test/error_2/CSCNCC01/Ref_All_CSCNCC01.xyz b/cell2mol/test/error_2/CSCNCC01/Ref_All_CSCNCC01.xyz deleted file mode 100644 index 161da9dbb..000000000 --- a/cell2mol/test/error_2/CSCNCC01/Ref_All_CSCNCC01.xyz +++ /dev/null @@ -1,33 +0,0 @@ -31 -0 1 -Co 0.000000 0.000000 0.000000 -Cs 6.296000 6.296000 6.296000 -N 3.148000 3.148000 3.148000 -C 1.876208 0.000000 0.000000 -N 3.047264 0.000000 0.000000 -C 3.953888 3.953888 3.953888 -H 3.903520 3.903520 4.784960 -C 0.000000 1.876208 0.000000 -N 0.000000 3.047264 0.000000 -C 0.000000 0.000000 1.876208 -N 0.000000 0.000000 3.047264 -C -0.000000 -0.000000 -1.876208 -N -0.000000 -0.000000 -3.047264 -C -1.876208 0.000000 0.000000 -N -3.047264 0.000000 0.000000 -C -0.000000 -1.876208 0.000000 -N -0.000000 -3.047264 0.000000 -H 4.784960 3.903520 3.903520 -H 3.903520 4.784960 3.903520 -C 2.342112 3.953888 2.342112 -H 2.392480 3.903520 1.511040 -H 1.511040 3.903520 2.392480 -H 2.392480 4.784960 2.392480 -C 3.953888 2.342112 2.342112 -H 3.903520 2.392480 1.511040 -H 3.903520 1.511040 2.392480 -H 4.784960 2.392480 2.392480 -C 2.342112 2.342112 3.953888 -H 2.392480 2.392480 4.784960 -H 1.511040 2.392480 3.903520 -H 2.392480 1.511040 3.903520 diff --git a/cell2mol/test/error_2/CSCNCC01/Ref_Cell_CSCNCC01.cell b/cell2mol/test/error_2/CSCNCC01/Ref_Cell_CSCNCC01.cell deleted file mode 100644 index 0ec78bf01..000000000 Binary files a/cell2mol/test/error_2/CSCNCC01/Ref_Cell_CSCNCC01.cell and /dev/null differ diff --git a/cell2mol/test/error_2/CSCNCC01/Ref_Molecule_CSCNCC01_0.xyz b/cell2mol/test/error_2/CSCNCC01/Ref_Molecule_CSCNCC01_0.xyz deleted file mode 100644 index 54c496005..000000000 --- a/cell2mol/test/error_2/CSCNCC01/Ref_Molecule_CSCNCC01_0.xyz +++ /dev/null @@ -1,15 +0,0 @@ -13 -0 1 -Co 0.000000 0.000000 0.000000 -C 1.876208 0.000000 0.000000 -N 3.047264 0.000000 0.000000 -C 0.000000 1.876208 0.000000 -N 0.000000 3.047264 0.000000 -C 0.000000 0.000000 1.876208 -N 0.000000 0.000000 3.047264 -C -0.000000 -0.000000 -1.876208 -N -0.000000 -0.000000 -3.047264 -C -1.876208 0.000000 0.000000 -N -3.047264 0.000000 0.000000 -C -0.000000 -1.876208 0.000000 -N -0.000000 -3.047264 0.000000 diff --git a/cell2mol/test/error_2/CSCNCC01/Ref_Molecule_CSCNCC01_1.xyz b/cell2mol/test/error_2/CSCNCC01/Ref_Molecule_CSCNCC01_1.xyz deleted file mode 100644 index 141052e8d..000000000 --- a/cell2mol/test/error_2/CSCNCC01/Ref_Molecule_CSCNCC01_1.xyz +++ /dev/null @@ -1,19 +0,0 @@ -17 -0 1 -N 3.148000 3.148000 3.148000 -C 3.953888 3.953888 3.953888 -H 3.903520 3.903520 4.784960 -H 4.784960 3.903520 3.903520 -H 3.903520 4.784960 3.903520 -C 2.342112 3.953888 2.342112 -H 2.392480 3.903520 1.511040 -H 1.511040 3.903520 2.392480 -H 2.392480 4.784960 2.392480 -C 3.953888 2.342112 2.342112 -H 3.903520 2.392480 1.511040 -H 3.903520 1.511040 2.392480 -H 4.784960 2.392480 2.392480 -C 2.342112 2.342112 3.953888 -H 2.392480 2.392480 4.784960 -H 1.511040 2.392480 3.903520 -H 2.392480 1.511040 3.903520 diff --git a/cell2mol/test/error_2/CSCNCC01/Ref_Molecule_CSCNCC01_2.xyz b/cell2mol/test/error_2/CSCNCC01/Ref_Molecule_CSCNCC01_2.xyz deleted file mode 100644 index 9ea579e17..000000000 --- a/cell2mol/test/error_2/CSCNCC01/Ref_Molecule_CSCNCC01_2.xyz +++ /dev/null @@ -1,3 +0,0 @@ -1 -0 1 -Cs 6.296000 6.296000 6.296000 diff --git a/cell2mol/test/error_2/CSCNCC01/cell2mol.out b/cell2mol/test/error_2/CSCNCC01/cell2mol.out deleted file mode 100644 index 1dc6f4e54..000000000 --- a/cell2mol/test/error_2/CSCNCC01/cell2mol.out +++ /dev/null @@ -1,572 +0,0 @@ -cell2mol version 2.0 -INITIATING cell object from info path: /Users/ycho/cell2mol/cell2mol/test/error_2/CSCNCC01/CSCNCC01.info -Debug level: 1 -Checking atomic labels and coordinates -Atomic labels: 192 from ase 48 from cif2cell -Cartesian coordinates: 192 from ase 48 from cif2cell - -Atomic labels and coordinates are inconsistent -######################################### - GETREFS: Generate reference molecules -######################################### -GETREFS: found 3 reference molecules -GETREFS: ['C6-N6-Co', 'H12-C4-N', 'Cs'] -GETREFS: [------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 13 - Formula = C6-N6-Co - Covalent Radii Factor = 1.2 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Number of Ligands = 6 - Number of Metals = 1 ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 17 - Formula = H12-C4-N - Covalent Radii Factor = 1.2 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = Cs - Covalent Radii Factor = 1.2 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES ---------------------------------------------------- -] -GETREFS: working with C6-N6-Co - -LIGAND.SPLIT_LIGAND: splitting C-N into groups -Entering COORD_CORR_NONHAPTIC: - Coordinating atom label=C with mconnec=1, group index 0 - evaluating coordination with metal Co - connectivity verified for atom C with ligand index 0 -LIGAND.SPLIT_LIGAND: found groups ['C'] - -LIGAND.SPLIT_LIGAND: splitting C-N into groups -Entering COORD_CORR_NONHAPTIC: - Coordinating atom label=C with mconnec=1, group index 0 - evaluating coordination with metal Co - connectivity verified for atom C with ligand index 0 -LIGAND.SPLIT_LIGAND: found groups ['C'] - -LIGAND.SPLIT_LIGAND: splitting C-N into groups -Entering COORD_CORR_NONHAPTIC: - Coordinating atom label=C with mconnec=1, group index 0 - evaluating coordination with metal Co - connectivity verified for atom C with ligand index 0 -LIGAND.SPLIT_LIGAND: found groups ['C'] - -LIGAND.SPLIT_LIGAND: splitting C-N into groups -Entering COORD_CORR_NONHAPTIC: - Coordinating atom label=C with mconnec=1, group index 0 - evaluating coordination with metal Co - connectivity verified for atom C with ligand index 0 -LIGAND.SPLIT_LIGAND: found groups ['C'] - -LIGAND.SPLIT_LIGAND: splitting C-N into groups -Entering COORD_CORR_NONHAPTIC: - Coordinating atom label=C with mconnec=1, group index 0 - evaluating coordination with metal Co - connectivity verified for atom C with ligand index 0 -LIGAND.SPLIT_LIGAND: found groups ['C'] - -LIGAND.SPLIT_LIGAND: splitting C-N into groups -Entering COORD_CORR_NONHAPTIC: - Coordinating atom label=C with mconnec=1, group index 0 - evaluating coordination with metal Co - connectivity verified for atom C with ligand index 0 -LIGAND.SPLIT_LIGAND: found groups ['C'] -LIGAND.Get_denticity: final connectivity of ligand C-N is 1 -LIGAND.Get_denticity: final connectivity of ligand C-N is 1 -LIGAND.Get_denticity: final connectivity of ligand C-N is 1 -LIGAND.Get_denticity: final connectivity of ligand C-N is 1 -LIGAND.Get_denticity: final connectivity of ligand C-N is 1 -LIGAND.Get_denticity: final connectivity of ligand C-N is 1 - -METAL.Get_coord_geometry: Co -METAL.Get_coord_geometry: coord_nr=6 -DEFINE_coordination_geometry: The most likely geometry is 'Octahedral' with deviation value 0.0 -GETREFS: working with H12-C4-N -GETREFS: working with Cs -Adjacency [0, 2, 3, 4] ['N', 'H', 'H', 'H'] -Adjacency [0, 6, 7, 8] ['N', 'H', 'H', 'H'] -Adjacency [0, 10, 11, 12] ['N', 'H', 'H', 'H'] -Adjacency [0, 14, 15, 16] ['N', 'H', 'H', 'H'] -------------------------------- -Errors in Reference Molecules -------------------------------- -Cell2mol terminated with error number 0. Message: -No Errors Found - -SAVING cell2mol CELL object to /Users/ycho/cell2mol/cell2mol/test/error_2/CSCNCC01/Ref_Cell_CSCNCC01.cell -ENTERING cell2mol with debug=1 -Entered CELL.MOLECLIST with debug=1 -CELL.MOLECLIST passed initial checks -CELL.MOLECLIST: ions_idx=[4, 5, 6, 7] with label='Cs' -CELL.MOLECLIST: found 4 ions -CELL.MOLECLIST: rest_idx=[0, 1, 2, 3, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191] -CELL.MOLECLIST: rest_labels=['Co', 'Co', 'Co', 'Co', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -CELL.MOLECLIST: rest_coord=[array([0., 0., 0.]), array([0. , 6.296, 6.296]), array([6.296, 0. , 6.296]), array([6.296, 6.296, 0. ]), array([3.148, 3.148, 3.148]), array([3.148, 9.444, 9.444]), array([9.444, 3.148, 9.444]), array([9.444, 9.444, 3.148]), array([3.148, 3.148, 9.444]), array([3.148, 9.444, 3.148]), array([9.444, 3.148, 3.148]), array([9.444, 9.444, 9.444]), array([1.876208, 0. , 0. ]), array([1.876208, 6.296 , 6.296 ]), array([8.172208, 0. , 6.296 ]), array([8.172208, 6.296 , 0. ]), array([0. , 1.876208, 0. ]), array([0. , 0. , 1.876208]), array([6.296 , 1.876208, 6.296 ]), array([6.296 , 6.296 , 1.876208]), array([6.296 , 8.172208, 0. ]), array([0. , 6.296 , 8.172208]), array([0. , 8.172208, 6.296 ]), array([6.296 , 0. , 8.172208]), array([ 0. , 0. , 10.715792]), array([ 6.296 , 6.296 , 10.715792]), array([0. , 6.296 , 4.419792]), array([6.296 , 0. , 4.419792]), array([10.715792, 0. , 0. ]), array([10.715792, 6.296 , 6.296 ]), array([4.419792, 0. , 6.296 ]), array([4.419792, 6.296 , 0. ]), array([ 0. , 10.715792, 0. ]), array([ 6.296 , 10.715792, 6.296 ]), array([0. , 4.419792, 6.296 ]), array([6.296 , 4.419792, 0. ]), array([3.047264, 0. , 0. ]), array([3.047264, 6.296 , 6.296 ]), array([9.343264, 0. , 6.296 ]), array([9.343264, 6.296 , 0. ]), array([0. , 3.047264, 0. ]), array([0. , 0. , 3.047264]), array([6.296 , 3.047264, 6.296 ]), array([6.296 , 6.296 , 3.047264]), array([6.296 , 9.343264, 0. ]), array([0. , 6.296 , 9.343264]), array([0. , 9.343264, 6.296 ]), array([6.296 , 0. , 9.343264]), array([0. , 0. , 9.544736]), array([6.296 , 6.296 , 9.544736]), array([0. , 6.296 , 3.248736]), array([6.296 , 0. , 3.248736]), array([9.544736, 0. , 0. ]), array([9.544736, 6.296 , 6.296 ]), array([3.248736, 0. , 6.296 ]), array([3.248736, 6.296 , 0. ]), array([0. , 9.544736, 0. ]), array([6.296 , 9.544736, 6.296 ]), array([0. , 3.248736, 6.296 ]), array([6.296 , 3.248736, 0. ]), array([3.953888, 3.953888, 3.953888]), array([ 3.953888, 10.249888, 10.249888]), array([10.249888, 3.953888, 10.249888]), array([10.249888, 10.249888, 3.953888]), array([3.953888, 3.953888, 8.638112]), array([ 3.953888, 10.249888, 2.342112]), array([10.249888, 3.953888, 2.342112]), array([10.249888, 10.249888, 8.638112]), array([8.638112, 3.953888, 3.953888]), array([ 8.638112, 10.249888, 10.249888]), array([ 2.342112, 3.953888, 10.249888]), array([ 2.342112, 10.249888, 3.953888]), array([8.638112, 3.953888, 8.638112]), array([ 8.638112, 10.249888, 2.342112]), array([2.342112, 3.953888, 2.342112]), array([ 2.342112, 10.249888, 8.638112]), array([3.953888, 8.638112, 3.953888]), array([10.249888, 8.638112, 10.249888]), array([ 3.953888, 2.342112, 10.249888]), array([10.249888, 2.342112, 3.953888]), array([3.953888, 8.638112, 8.638112]), array([10.249888, 8.638112, 2.342112]), array([3.953888, 2.342112, 2.342112]), array([10.249888, 2.342112, 8.638112]), array([8.638112, 8.638112, 8.638112]), array([8.638112, 2.342112, 2.342112]), array([2.342112, 8.638112, 2.342112]), array([2.342112, 2.342112, 8.638112]), array([8.638112, 8.638112, 3.953888]), array([ 8.638112, 2.342112, 10.249888]), array([ 2.342112, 8.638112, 10.249888]), array([2.342112, 2.342112, 3.953888]), array([3.90352, 3.90352, 4.78496]), array([ 3.90352, 10.19952, 11.08096]), array([10.19952, 3.90352, 11.08096]), array([10.19952, 10.19952, 4.78496]), array([4.78496, 3.90352, 3.90352]), array([3.90352, 4.78496, 3.90352]), array([11.08096, 3.90352, 10.19952]), array([10.19952, 11.08096, 3.90352]), array([11.08096, 10.19952, 3.90352]), array([ 3.90352, 11.08096, 10.19952]), array([ 4.78496, 10.19952, 10.19952]), array([10.19952, 4.78496, 10.19952]), array([3.90352, 3.90352, 7.80704]), array([ 3.90352, 10.19952, 1.51104]), array([10.19952, 3.90352, 1.51104]), array([10.19952, 10.19952, 7.80704]), array([4.78496, 3.90352, 8.68848]), array([3.90352, 4.78496, 8.68848]), array([11.08096, 3.90352, 2.39248]), array([10.19952, 11.08096, 8.68848]), array([11.08096, 10.19952, 8.68848]), array([ 3.90352, 11.08096, 2.39248]), array([ 4.78496, 10.19952, 2.39248]), array([10.19952, 4.78496, 2.39248]), array([8.68848, 3.90352, 4.78496]), array([ 8.68848, 10.19952, 11.08096]), array([ 2.39248, 3.90352, 11.08096]), array([ 2.39248, 10.19952, 4.78496]), array([7.80704, 3.90352, 3.90352]), array([8.68848, 4.78496, 3.90352]), array([ 1.51104, 3.90352, 10.19952]), array([ 2.39248, 11.08096, 3.90352]), array([ 1.51104, 10.19952, 3.90352]), array([ 8.68848, 11.08096, 10.19952]), array([ 7.80704, 10.19952, 10.19952]), array([ 2.39248, 4.78496, 10.19952]), array([8.68848, 3.90352, 7.80704]), array([ 8.68848, 10.19952, 1.51104]), array([2.39248, 3.90352, 1.51104]), array([ 2.39248, 10.19952, 7.80704]), array([7.80704, 3.90352, 8.68848]), array([8.68848, 4.78496, 8.68848]), array([1.51104, 3.90352, 2.39248]), array([ 2.39248, 11.08096, 8.68848]), array([ 1.51104, 10.19952, 8.68848]), array([ 8.68848, 11.08096, 2.39248]), array([ 7.80704, 10.19952, 2.39248]), array([2.39248, 4.78496, 2.39248]), array([3.90352, 8.68848, 4.78496]), array([10.19952, 8.68848, 11.08096]), array([ 3.90352, 2.39248, 11.08096]), array([10.19952, 2.39248, 4.78496]), array([3.90352, 7.80704, 3.90352]), array([4.78496, 8.68848, 3.90352]), array([ 3.90352, 1.51104, 10.19952]), array([11.08096, 2.39248, 3.90352]), array([10.19952, 1.51104, 3.90352]), array([11.08096, 8.68848, 10.19952]), array([10.19952, 7.80704, 10.19952]), array([ 4.78496, 2.39248, 10.19952]), array([3.90352, 8.68848, 7.80704]), array([10.19952, 8.68848, 1.51104]), array([3.90352, 2.39248, 1.51104]), array([10.19952, 2.39248, 7.80704]), array([3.90352, 7.80704, 8.68848]), array([4.78496, 8.68848, 8.68848]), array([3.90352, 1.51104, 2.39248]), array([11.08096, 2.39248, 8.68848]), array([10.19952, 1.51104, 8.68848]), array([11.08096, 8.68848, 2.39248]), array([10.19952, 7.80704, 2.39248]), array([4.78496, 2.39248, 2.39248]), array([8.68848, 8.68848, 7.80704]), array([8.68848, 2.39248, 1.51104]), array([2.39248, 8.68848, 1.51104]), array([2.39248, 2.39248, 7.80704]), array([7.80704, 8.68848, 8.68848]), array([8.68848, 7.80704, 8.68848]), array([1.51104, 8.68848, 2.39248]), array([2.39248, 1.51104, 8.68848]), array([1.51104, 2.39248, 8.68848]), array([8.68848, 1.51104, 2.39248]), array([7.80704, 2.39248, 2.39248]), array([2.39248, 7.80704, 2.39248]), array([8.68848, 8.68848, 4.78496]), array([ 8.68848, 2.39248, 11.08096]), array([ 2.39248, 8.68848, 11.08096]), array([2.39248, 2.39248, 4.78496]), array([7.80704, 8.68848, 3.90352]), array([8.68848, 7.80704, 3.90352]), array([ 1.51104, 8.68848, 10.19952]), array([2.39248, 1.51104, 3.90352]), array([1.51104, 2.39248, 3.90352]), array([ 8.68848, 1.51104, 10.19952]), array([ 7.80704, 2.39248, 10.19952]), array([ 2.39248, 7.80704, 10.19952])] -CELL.MOLECLIST: rest_indices=[0, 1, 2, 3, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191] -CELL.MOLECLIST: found 22 blocks -CELL.MOLECLIST: blocklist=[[0, 16, 20, 21, 40, 44, 45], [28, 52], [29, 53], [1, 17, 25, 26, 30, 38, 41, 49, 50, 54, 62], [32, 56], [33, 57], [2, 18, 22, 27, 31, 34, 42, 46, 51, 55, 58], [3, 19, 23, 24, 35, 39, 43, 47, 48, 59, 63], [36, 60], [37, 61], [8, 64, 78, 86, 95, 96, 100, 101, 134, 138, 143, 158, 162, 167, 183, 187, 188], [11, 67, 77, 85, 92, 99, 103, 104, 133, 141, 142, 157, 165, 166, 180, 184, 185], [10, 66, 76, 87, 93, 98, 102, 107, 132, 136, 137, 159, 163, 164, 181, 189, 190], [15, 71, 73, 81, 88, 111, 115, 116, 121, 129, 130, 145, 153, 154, 168, 172, 173], [13, 69, 75, 80, 90, 109, 117, 118, 123, 127, 128, 144, 148, 149, 170, 174, 179], [12, 68, 74, 82, 91, 108, 112, 113, 122, 126, 131, 146, 150, 155, 171, 175, 176], [14, 70, 72, 83, 89, 110, 114, 119, 120, 124, 125, 147, 151, 152, 169, 177, 178], [9, 65, 79, 84, 94, 97, 105, 106, 135, 139, 140, 156, 160, 161, 182, 186, 191], [4], [5], [6], [7]] -CELL.MOLECLIST: doing block=[0, 16, 20, 21, 40, 44, 45] -CELL.MOLECLIST: doing block=[28, 52] -CELL.MOLECLIST: doing block=[29, 53] -CELL.MOLECLIST: doing block=[1, 17, 25, 26, 30, 38, 41, 49, 50, 54, 62] -CELL.MOLECLIST: doing block=[32, 56] -CELL.MOLECLIST: doing block=[33, 57] -CELL.MOLECLIST: doing block=[2, 18, 22, 27, 31, 34, 42, 46, 51, 55, 58] -CELL.MOLECLIST: doing block=[3, 19, 23, 24, 35, 39, 43, 47, 48, 59, 63] -CELL.MOLECLIST: doing block=[36, 60] -CELL.MOLECLIST: doing block=[37, 61] -CELL.MOLECLIST: doing block=[8, 64, 78, 86, 95, 96, 100, 101, 134, 138, 143, 158, 162, 167, 183, 187, 188] -CELL.MOLECLIST: doing block=[11, 67, 77, 85, 92, 99, 103, 104, 133, 141, 142, 157, 165, 166, 180, 184, 185] -CELL.MOLECLIST: doing block=[10, 66, 76, 87, 93, 98, 102, 107, 132, 136, 137, 159, 163, 164, 181, 189, 190] -CELL.MOLECLIST: doing block=[15, 71, 73, 81, 88, 111, 115, 116, 121, 129, 130, 145, 153, 154, 168, 172, 173] -CELL.MOLECLIST: doing block=[13, 69, 75, 80, 90, 109, 117, 118, 123, 127, 128, 144, 148, 149, 170, 174, 179] -CELL.MOLECLIST: doing block=[12, 68, 74, 82, 91, 108, 112, 113, 122, 126, 131, 146, 150, 155, 171, 175, 176] -CELL.MOLECLIST: doing block=[14, 70, 72, 83, 89, 110, 114, 119, 120, 124, 125, 147, 151, 152, 169, 177, 178] -CELL.MOLECLIST: doing block=[9, 65, 79, 84, 94, 97, 105, 106, 135, 139, 140, 156, 160, 161, 182, 186, 191] -CELL.MOLECLIST: doing block=[4] -CELL.MOLECLIST: doing block=[5] -CELL.MOLECLIST: doing block=[6] -CELL.MOLECLIST: doing block=[7] -CLASSIFY_FRAGMENTS. 22 Blocks sorted as (Molec, Frag, H): 12 10 0 -CELL.RECONSTRUCT: molecules=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 17 - Formula = H12-C4-N - Covalent Radii Factor = 1.2 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 17 - Formula = H12-C4-N - Covalent Radii Factor = 1.2 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 17 - Formula = H12-C4-N - Covalent Radii Factor = 1.2 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 17 - Formula = H12-C4-N - Covalent Radii Factor = 1.2 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 17 - Formula = H12-C4-N - Covalent Radii Factor = 1.2 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 17 - Formula = H12-C4-N - Covalent Radii Factor = 1.2 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 17 - Formula = H12-C4-N - Covalent Radii Factor = 1.2 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 17 - Formula = H12-C4-N - Covalent Radii Factor = 1.2 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = Cs - Covalent Radii Factor = 1.2 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = Cs - Covalent Radii Factor = 1.2 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = Cs - Covalent Radii Factor = 1.2 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = molecule - Number of Atoms = 1 - Formula = Cs - Covalent Radii Factor = 1.2 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -CELL.RECONSTRUCT: fragments=[------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = fragment - Number of Atoms = 7 - Formula = C3-N3-Co - Covalent Radii Factor = 1.2 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = fragment - Number of Atoms = 2 - Formula = C-N - Covalent Radii Factor = 1.2 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = fragment - Number of Atoms = 2 - Formula = C-N - Covalent Radii Factor = 1.2 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = fragment - Number of Atoms = 11 - Formula = C5-N5-Co - Covalent Radii Factor = 1.2 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = fragment - Number of Atoms = 2 - Formula = C-N - Covalent Radii Factor = 1.2 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = fragment - Number of Atoms = 2 - Formula = C-N - Covalent Radii Factor = 1.2 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = fragment - Number of Atoms = 11 - Formula = C5-N5-Co - Covalent Radii Factor = 1.2 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = fragment - Number of Atoms = 11 - Formula = C5-N5-Co - Covalent Radii Factor = 1.2 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = fragment - Number of Atoms = 2 - Formula = C-N - Covalent Radii Factor = 1.2 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -, ------------- Cell2mol MOLECULE Object -------------- - Version = 0.1 - Type = specie - Sub-Type = fragment - Number of Atoms = 2 - Formula = C-N - Covalent Radii Factor = 1.2 - Metal Radii Factor = 1.0 - Has Adjacency Matrix = YES - Origin = cell.get_moleclist ---------------------------------------------------- -] -CELL.RECONSTRUCT: hydrogens=[] - -############################################## -FRAG_RECONSTRUCT. 10 molecules submitted to SEQUENTIAL with Heavy -############################################## -Adjacency Matrix: Distance 0.0 smaller than clash for atoms 7 9 C C -Adjacency Matrix: Distance 0.0 smaller than clash for atoms 8 10 N N -Adjacency Matrix: Distance 0.0 smaller than clash for atoms 7 11 C C -Adjacency Matrix: Distance 0.0 smaller than clash for atoms 8 12 N N -Adjacency Matrix: Distance 0.0 smaller than clash for atoms 9 11 C C -Adjacency Matrix: Distance 0.0 smaller than clash for atoms 10 12 N N -Adjacency Matrix: Distance 0.0 smaller than clash for atoms 4 11 C C -Adjacency Matrix: Distance 0.0 smaller than clash for atoms 9 12 N N -FINISHED succesfully -FRAG_RECONSTRUCT. 4 molecules and 0 fragments out of SEQUENTIAL with Heavy - -Cell Reconstruction Finished Normally. Total execution time: 0.13 seconds -Getting unique species in cell -4 Species (Metal or Ligand or Molecules) to Characterize - -FINAL Charge Distribution: [[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, -1, -1, -1, -1, -1, -1, 3, -1, -1, -1, -1, -1, -1, 3, -1, -1, -1, -1, -1, -1, 3, -1, -1, -1, -1, -1, -1, 3]] - -######################################### -Assigning Charges and Preparing Molecules -######################################### -CELL.CREATE_BONDS: Creating Bonds for molecule H12-C4-N -CREATE_bonds_specie: specie.formula='H12-C4-N', specie.subtype='molecule' -CELL.CREATE_BONDS: Creating Bonds for molecule H12-C4-N -CREATE_bonds_specie: specie.formula='H12-C4-N', specie.subtype='molecule' -CELL.CREATE_BONDS: Creating Bonds for molecule H12-C4-N -CREATE_bonds_specie: specie.formula='H12-C4-N', specie.subtype='molecule' -CELL.CREATE_BONDS: Creating Bonds for molecule H12-C4-N -CREATE_bonds_specie: specie.formula='H12-C4-N', specie.subtype='molecule' -CELL.CREATE_BONDS: Creating Bonds for molecule H12-C4-N -CREATE_bonds_specie: specie.formula='H12-C4-N', specie.subtype='molecule' -CELL.CREATE_BONDS: Creating Bonds for molecule H12-C4-N -CREATE_bonds_specie: specie.formula='H12-C4-N', specie.subtype='molecule' -CELL.CREATE_BONDS: Creating Bonds for molecule H12-C4-N -CREATE_bonds_specie: specie.formula='H12-C4-N', specie.subtype='molecule' -CELL.CREATE_BONDS: Creating Bonds for molecule H12-C4-N -CREATE_bonds_specie: specie.formula='H12-C4-N', specie.subtype='molecule' -CELL.CREATE_BONDS: Creating Bonds for molecule Cs -CREATE_bonds_specie: specie.formula='Cs', specie.subtype='molecule' - NO BONDS CREATED for Cs due to no bonds in molecule RDKit object -CELL.CREATE_BONDS: Creating Bonds for molecule Cs -CREATE_bonds_specie: specie.formula='Cs', specie.subtype='molecule' - NO BONDS CREATED for Cs due to no bonds in molecule RDKit object -CELL.CREATE_BONDS: Creating Bonds for molecule Cs -CREATE_bonds_specie: specie.formula='Cs', specie.subtype='molecule' - NO BONDS CREATED for Cs due to no bonds in molecule RDKit object -CELL.CREATE_BONDS: Creating Bonds for molecule Cs -CREATE_bonds_specie: specie.formula='Cs', specie.subtype='molecule' - NO BONDS CREATED for Cs due to no bonds in molecule RDKit object -CELL.CREATE_BONDS: Creating Bonds for molecule C6-N6-Co -CREATE_bonds_specie: specie.formula='C-N', specie.subtype='ligand' - Number of atoms in ligand object and RDKit object are different: 2 3 - NO BONDS for H with ligand RDKit object index 2 because it is an added atom -CREATE_bonds_specie: specie.formula='C-N', specie.subtype='ligand' - Number of atoms in ligand object and RDKit object are different: 2 3 - NO BONDS for H with ligand RDKit object index 2 because it is an added atom -CREATE_bonds_specie: specie.formula='C-N', specie.subtype='ligand' - Number of atoms in ligand object and RDKit object are different: 2 3 - NO BONDS for H with ligand RDKit object index 2 because it is an added atom -CREATE_bonds_specie: specie.formula='C-N', specie.subtype='ligand' - Number of atoms in ligand object and RDKit object are different: 2 3 - NO BONDS for H with ligand RDKit object index 2 because it is an added atom -CREATE_bonds_specie: specie.formula='C-N', specie.subtype='ligand' - Number of atoms in ligand object and RDKit object are different: 2 3 - NO BONDS for H with ligand RDKit object index 2 because it is an added atom -CREATE_bonds_specie: specie.formula='C-N', specie.subtype='ligand' - Number of atoms in ligand object and RDKit object are different: 2 3 - NO BONDS for H with ligand RDKit object index 2 because it is an added atom -CELL.CREATE_BONDS: Creating Bonds for molecule C6-N6-Co -CREATE_bonds_specie: specie.formula='C-N', specie.subtype='ligand' - Number of atoms in ligand object and RDKit object are different: 2 3 - NO BONDS for H with ligand RDKit object index 2 because it is an added atom -CREATE_bonds_specie: specie.formula='C-N', specie.subtype='ligand' - Number of atoms in ligand object and RDKit object are different: 2 3 - NO BONDS for H with ligand RDKit object index 2 because it is an added atom -CREATE_bonds_specie: specie.formula='C-N', specie.subtype='ligand' - Number of atoms in ligand object and RDKit object are different: 2 3 - NO BONDS for H with ligand RDKit object index 2 because it is an added atom -CREATE_bonds_specie: specie.formula='C-N', specie.subtype='ligand' - Number of atoms in ligand object and RDKit object are different: 2 3 - NO BONDS for H with ligand RDKit object index 2 because it is an added atom -CREATE_bonds_specie: specie.formula='C-N', specie.subtype='ligand' - Number of atoms in ligand object and RDKit object are different: 2 3 - NO BONDS for H with ligand RDKit object index 2 because it is an added atom -CREATE_bonds_specie: specie.formula='C-N', specie.subtype='ligand' - Number of atoms in ligand object and RDKit object are different: 2 3 - NO BONDS for H with ligand RDKit object index 2 because it is an added atom -CELL.CREATE_BONDS: Creating Bonds for molecule C6-N6-Co -CREATE_bonds_specie: specie.formula='C-N', specie.subtype='ligand' - Number of atoms in ligand object and RDKit object are different: 2 3 - NO BONDS for H with ligand RDKit object index 2 because it is an added atom -CREATE_bonds_specie: specie.formula='C-N', specie.subtype='ligand' - Number of atoms in ligand object and RDKit object are different: 2 3 - NO BONDS for H with ligand RDKit object index 2 because it is an added atom -CREATE_bonds_specie: specie.formula='C-N', specie.subtype='ligand' - Number of atoms in ligand object and RDKit object are different: 2 3 - NO BONDS for H with ligand RDKit object index 2 because it is an added atom -CREATE_bonds_specie: specie.formula='C-N', specie.subtype='ligand' - Number of atoms in ligand object and RDKit object are different: 2 3 - NO BONDS for H with ligand RDKit object index 2 because it is an added atom -CREATE_bonds_specie: specie.formula='C-N', specie.subtype='ligand' - Number of atoms in ligand object and RDKit object are different: 2 3 - NO BONDS for H with ligand RDKit object index 2 because it is an added atom -CREATE_bonds_specie: specie.formula='C-N', specie.subtype='ligand' - Number of atoms in ligand object and RDKit object are different: 2 3 - NO BONDS for H with ligand RDKit object index 2 because it is an added atom -CELL.CREATE_BONDS: Creating Bonds for molecule C6-N6-Co -CREATE_bonds_specie: specie.formula='C-N', specie.subtype='ligand' - Number of atoms in ligand object and RDKit object are different: 2 3 - NO BONDS for H with ligand RDKit object index 2 because it is an added atom -CREATE_bonds_specie: specie.formula='C-N', specie.subtype='ligand' - Number of atoms in ligand object and RDKit object are different: 2 3 - NO BONDS for H with ligand RDKit object index 2 because it is an added atom -CREATE_bonds_specie: specie.formula='C-N', specie.subtype='ligand' - Number of atoms in ligand object and RDKit object are different: 2 3 - NO BONDS for H with ligand RDKit object index 2 because it is an added atom -CREATE_bonds_specie: specie.formula='C-N', specie.subtype='ligand' - Number of atoms in ligand object and RDKit object are different: 2 3 - NO BONDS for H with ligand RDKit object index 2 because it is an added atom -CREATE_bonds_specie: specie.formula='C-N', specie.subtype='ligand' - Number of atoms in ligand object and RDKit object are different: 2 3 - NO BONDS for H with ligand RDKit object index 2 because it is an added atom -CREATE_bonds_specie: specie.formula='C-N', specie.subtype='ligand' - Number of atoms in ligand object and RDKit object are different: 2 3 - NO BONDS for H with ligand RDKit object index 2 because it is an added atom -Charge Assignment Finished Normally. Total execution time: 0.13 seconds -######################################### - Assigning Spin multiplicity -######################################### -GET_SPIN: Spin multiplicity of the complex H12-C4-N is assigned as 1 - -GET_SPIN: Spin multiplicity of the complex H12-C4-N is assigned as 1 - -GET_SPIN: Spin multiplicity of the complex H12-C4-N is assigned as 1 - -GET_SPIN: Spin multiplicity of the complex H12-C4-N is assigned as 1 - -GET_SPIN: Spin multiplicity of the complex H12-C4-N is assigned as 1 - -GET_SPIN: Spin multiplicity of the complex H12-C4-N is assigned as 1 - -GET_SPIN: Spin multiplicity of the complex H12-C4-N is assigned as 1 - -GET_SPIN: Spin multiplicity of the complex H12-C4-N is assigned as 1 - -GET_SPIN: Spin multiplicity of the complex Cs is assigned as 1 - -GET_SPIN: Spin multiplicity of the complex Cs is assigned as 1 - -GET_SPIN: Spin multiplicity of the complex Cs is assigned as 1 - -GET_SPIN: Spin multiplicity of the complex Cs is assigned as 1 - -ASSIGN_SPIN_METAL: Spin multiplicity of the metal Co is predicted as 1 using Random Forest model -GET_SPIN: Spin multiplicity of the metal Co is assigned as 1 -GET_SPIN: Spin multiplicity of the complex C6-N6-Co is assigned as 1 - -ASSIGN_SPIN_METAL: Spin multiplicity of the metal Co is predicted as 1 using Random Forest model -GET_SPIN: Spin multiplicity of the metal Co is assigned as 1 -GET_SPIN: Spin multiplicity of the complex C6-N6-Co is assigned as 1 - -ASSIGN_SPIN_METAL: Spin multiplicity of the metal Co is predicted as 1 using Random Forest model -GET_SPIN: Spin multiplicity of the metal Co is assigned as 1 -GET_SPIN: Spin multiplicity of the complex C6-N6-Co is assigned as 1 - -ASSIGN_SPIN_METAL: Spin multiplicity of the metal Co is predicted as 1 using Random Forest model -GET_SPIN: Spin multiplicity of the metal Co is assigned as 1 -GET_SPIN: Spin multiplicity of the complex C6-N6-Co is assigned as 1 - - -Total execution time for Spin Assignment: 1.50 seconds -------------------------------- -Errors in Unit Cell -------------------------------- -Cell2mol terminated with error number 0. Message: -No Errors Found - -SAVING cell2mol CELL object to /Users/ycho/cell2mol/cell2mol/test/error_2/CSCNCC01/Cell_CSCNCC01.cell diff --git a/cell2mol/test/error_2/CSCNCC01/cif2cell.err b/cell2mol/test/error_2/CSCNCC01/cif2cell.err deleted file mode 100644 index e69de29bb..000000000 diff --git a/cell2mol/test/error_2/CSCNCC01/error_0.out b/cell2mol/test/error_2/CSCNCC01/error_0.out deleted file mode 100644 index 1ed2c65bd..000000000 --- a/cell2mol/test/error_2/CSCNCC01/error_0.out +++ /dev/null @@ -1,2 +0,0 @@ -Cell2mol terminated with error number 0. Message: -No Errors Found diff --git a/cell2mol/test/error_2/CSCNCC01/error_2.out b/cell2mol/test/error_2/CSCNCC01/error_2.out deleted file mode 100644 index 5efa9bb3b..000000000 --- a/cell2mol/test/error_2/CSCNCC01/error_2.out +++ /dev/null @@ -1,2 +0,0 @@ -Cell2mol terminated with error number 2. Message: -We detected that H atoms are likely missing. This will cause errors in the charge prediction, so STOPPING pre-emptively. diff --git a/cell2mol/test/error_2/DUGPIF.search5.cif b/cell2mol/test/error_2/DUGPIF.search5.cif deleted file mode 100755 index 21b9f6ae4..000000000 --- a/cell2mol/test/error_2/DUGPIF.search5.cif +++ /dev/null @@ -1,194 +0,0 @@ - -####################################################################### -# -# Cambridge Crystallographic Data Centre -# CCDC -# -####################################################################### -# -# If this CIF has been generated from an entry in the Cambridge -# Structural Database, then it will include bibliographic, chemical, -# crystal, experimental, refinement or atomic coordinate data resulting -# from the CCDC's data processing and validation procedures. -# -####################################################################### - -data_CSD_CIF_DUGPIF -_audit_creation_date 2010-02-16 -_audit_creation_method CSD-ConQuest-V1 -_database_code_CSD DUGPIF -_database_code_depnum_ccdc_archive 'CCDC 736383' -_chemical_formula_sum 'C31 H52 Fe1 K2 N4 O14' -_chemical_formula_moiety -; -C31 H52 Fe1 K2 N4 O14 -; -_journal_coden_Cambridge 9 -_journal_volume 48 -_journal_year 2009 -_journal_page_first 4462 -_journal_name_full 'Inorg.Chem. ' -loop_ -_publ_author_name -"C.M.Whaley" -"T.B.Rauchfuss" -"S.R.Wilson" -_chemical_name_systematic -; -bis(\m~2~-Cyano)-acetonitrile-cyano-bis(18-crown-6)-dicarbonyl-hydrido-iron(ii -)-di-potassium -; -_cell_volume 2031.491 -_exptl_crystal_colour 'colorless' -_exptl_crystal_density_diffrn 1.371 -_exptl_special_details -; -Absolute configuration - -; -_exptl_crystal_description 'tabular' -_exptl_crystal_preparation 'acetonitrile/ether' -_diffrn_ambient_temperature 193 -_diffrn_special_details -; -racemic twin - -; -#These two values have been output from a single CSD field. -_refine_ls_R_factor_gt 0.1002 -_refine_ls_wR_factor_gt 0.1002 -_symmetry_cell_setting monoclinic -_symmetry_space_group_name_H-M 'P 21' -_symmetry_Int_Tables_number 4 -loop_ -_symmetry_equiv_pos_site_id -_symmetry_equiv_pos_as_xyz -1 x,y,z -2 -x,1/2+y,-z -_cell_length_a 8.7717(10) -_cell_length_b 14.1549(16) -_cell_length_c 16.3775(19) -_cell_angle_alpha 90 -_cell_angle_beta 92.529(7) -_cell_angle_gamma 90 -_cell_formula_units_Z 2 -loop_ -_atom_type_symbol -_atom_type_radius_bond -C 0.68 -H 0.23 -Fe 1.52 -K 2.03 -N 0.68 -O 0.68 -loop_ -_atom_site_label -_atom_site_type_symbol -_atom_site_fract_x -_atom_site_fract_y -_atom_site_fract_z -C1 C 0.6916(11) 0.3727(9) 0.8739(6) -C2 C 0.9196(14) 0.2717(9) 0.8086(8) -C3 C 0.8631(10) 0.3597(8) 0.6634(5) -C4 C 0.6357(16) 0.4492(8) 0.7250(8) -C5 C 0.9215(15) 0.4645(8) 0.8002(7) -Fe1 Fe 0.78395(17) 0.37480(11) 0.77047(8) -H1 H 0.6788(17) 0.2899(9) 0.7471(10) -N1 N 0.6345(13) 0.3719(10) 0.9375(6) -N2 N 0.9983(13) 0.2120(7) 0.8283(7) -N3 N 0.9116(11) 0.3559(8) 0.5982(5) -O1 O 0.5389(10) 0.4923(7) 0.6964(6) -O2 O 1.0143(11) 0.5188(7) 0.8189(6) -C6 C 0.2858(14) 0.1405(8) 1.1080(7) -H2 H 0.22770 0.08980 1.07900 -H3 H 0.24550 0.14820 1.16310 -C7 C 0.4483(16) 0.1179(8) 1.1138(7) -H4 H 0.46220 0.05380 1.13730 -H5 H 0.48860 0.11740 1.05830 -C8 C 0.6912(13) 0.1626(8) 1.1758(7) -H6 H 0.73740 0.15390 1.12220 -H7 H 0.70280 0.10280 1.20670 -C9 C 0.7704(14) 0.2376(8) 1.2204(7) -H8 H 0.72120 0.24890 1.27280 -H9 H 0.87770 0.21900 1.23280 -C10 C 0.8539(13) 0.3956(7) 1.2111(7) -H10 H 0.96350 0.37870 1.21420 -H11 H 0.82060 0.40700 1.26720 -C11 C 0.8285(12) 0.4829(8) 1.1593(7) -H12 H 0.89740 0.53400 1.17940 -H13 H 0.85180 0.46890 1.10190 -C12 C 0.6490(14) 0.6009(8) 1.1225(8) -H14 H 0.67990 0.59630 1.06520 -H15 H 0.71100 0.65080 1.15030 -C13 C 0.4869(14) 0.6251(8) 1.1241(8) -H16 H 0.45420 0.62590 1.18120 -H17 H 0.46910 0.68860 1.10020 -C14 C 0.2431(12) 0.5767(8) 1.0679(7) -H18 H 0.22870 0.64130 1.04570 -H19 H 0.19510 0.57360 1.12140 -C15 C 0.1723(13) 0.5077(9) 1.0116(7) -H20 H 0.06660 0.52700 0.99590 -H21 H 0.23080 0.50310 0.96140 -C16 C 0.1118(13) 0.3460(9) 1.0032(7) -H22 H 0.17130 0.34150 0.95340 -H23 H 0.00500 0.36160 0.98630 -C17 C 0.1164(12) 0.2509(9) 1.0481(9) -H24 H 0.06460 0.25570 1.10040 -H25 H 0.06510 0.20140 1.01410 -K1 K 0.4957(2) 0.36793(18) 1.08265(12) -O3 O 0.2739(9) 0.2289(5) 1.0623(5) -O4 O 0.5327(9) 0.1839(5) 1.1631(5) -O5 O 0.7658(9) 0.3207(5) 1.1732(4) -O6 O 0.6744(8) 0.5124(5) 1.1631(4) -O7 O 0.4013(8) 0.5559(5) 1.0777(5) -O8 O 0.1719(9) 0.4168(6) 1.0534(5) -C18 C 1.3252(14) 0.3128(8) 0.2869(7) -H26 H 1.43450 0.32510 0.27840 -H27 H 1.27300 0.30300 0.23270 -C19 C 1.3093(12) 0.2257(8) 0.3383(8) -H28 H 1.36440 0.17230 0.31400 -H29 H 1.35350 0.23700 0.39410 -C20 C 1.1350(14) 0.1190(8) 0.3889(7) -H30 H 1.17810 0.12850 0.44520 -H31 H 1.18950 0.06600 0.36370 -C21 C 0.9690(14) 0.0984(7) 0.3902(7) -H32 H 0.92740 0.09130 0.33330 -H33 H 0.95390 0.03780 0.41890 -C22 C 0.7343(12) 0.1488(8) 0.4371(7) -H34 H 0.72370 0.08950 0.46830 -H35 H 0.68350 0.13980 0.38240 -C23 C 0.6580(15) 0.2279(9) 0.4805(7) -H36 H 0.54960 0.21190 0.48800 -H37 H 0.70850 0.23750 0.53510 -C24 C 0.6012(12) 0.3893(8) 0.4711(7) -H38 H 0.65240 0.39930 0.52550 -H39 H 0.49230 0.37550 0.47920 -C25 C 0.6141(14) 0.4782(10) 0.4204(8) -H40 H 0.57290 0.46720 0.36400 -H41 H 0.55620 0.53040 0.44470 -C26 C 0.7922(13) 0.5870(8) 0.3718(7) -H42 H 0.75280 0.57710 0.31480 -H43 H 0.73600 0.64030 0.39540 -C27 C 0.9559(15) 0.6075(7) 0.3734(7) -H44 H 0.97260 0.66670 0.34290 -H45 H 0.99280 0.61760 0.43070 -C28 C 1.2025(13) 0.5537(8) 0.3261(7) -H46 H 1.26000 0.55880 0.37930 -H47 H 1.21230 0.61400 0.29620 -C29 C 1.2616(14) 0.4754(9) 0.2782(7) -H48 H 1.19750 0.46650 0.22750 -H49 H 1.36720 0.48920 0.26290 -K2 K 0.9991(3) 0.35629(17) 0.43320(14) -O9 O 1.2593(10) 0.3925(5) 0.3267(4) -O10 O 1.1505(9) 0.2039(5) 0.3415(5) -O11 O 0.8901(9) 0.1683(5) 0.4283(4) -O12 O 0.6681(9) 0.3127(6) 0.4327(4) -O13 O 0.7720(8) 0.5011(5) 0.4202(5) -O14 O 1.0436(9) 0.5332(5) 0.3385(5) -C30 C 1.2756(16) 0.3445(12) 0.7162(8) -H50 H 1.18410 0.37400 0.73710 -H51 H 1.36600 0.38060 0.73460 -H52 H 1.28440 0.27960 0.73680 -C31 C 1.2637(16) 0.3431(11) 0.6228(9) -N4 N 1.2601(15) 0.3377(12) 0.5534(8) -#END diff --git a/cell2mol/test/error_2/EQOQIK.search2.cif b/cell2mol/test/error_2/EQOQIK.search2.cif deleted file mode 100755 index 787f86d2b..000000000 --- a/cell2mol/test/error_2/EQOQIK.search2.cif +++ /dev/null @@ -1,114 +0,0 @@ - -####################################################################### -# -# Cambridge Crystallographic Data Centre -# CCDC -# -####################################################################### -# -# If this CIF has been generated from an entry in the Cambridge -# Structural Database, then it will include bibliographic, chemical, -# crystal, experimental, refinement or atomic coordinate data resulting -# from the CCDC's data processing and validation procedures. -# -####################################################################### - -data_CSD_CIF_EQOQIK -_audit_creation_date 2004-05-06 -_audit_creation_method CSD-ConQuest-V1 -_database_code_CSD EQOQIK -_database_code_depnum_ccdc_archive 'CCDC 216140' -_chemical_formula_sum 'C11 H12 Mn1 N1 O3' -_chemical_formula_moiety -; -C11 H12 Mn1 N1 O3 -; -_journal_coden_Cambridge 29 -_journal_volume 629 -_journal_year 2003 -_journal_page_first 2408 -_journal_name_full 'Z.Anorg.Allg.Chem. ' -loop_ -_publ_author_name -"M.Tamm" -"A.Kunst" -"F.E.Hahn" -"T.Pape" -"R.Frohlich" -_chemical_name_systematic -; -(\h^3^-Tropidinyl)-tricarbonyl-manganese(i) -; -_cell_volume 2199.990 -_exptl_crystal_colour 'yellow' -_exptl_crystal_density_diffrn 1.577 -_exptl_crystal_description 'plates' -_exptl_crystal_preparation 'hexanes' -_diffrn_ambient_temperature 123 -#These two values have been output from a single CSD field. -_refine_ls_R_factor_gt 0.0281 -_refine_ls_wR_factor_gt 0.0281 -_symmetry_cell_setting orthorhombic -_symmetry_space_group_name_H-M 'P b c a' -_symmetry_Int_Tables_number 61 -loop_ -_symmetry_equiv_pos_site_id -_symmetry_equiv_pos_as_xyz -1 x,y,z -2 1/2+x,y,1/2-z -3 x,1/2-y,1/2+z -4 1/2-x,1/2+y,z -5 -x,-y,-z -6 -1/2-x,-y,-1/2+z -7 -x,-1/2+y,-1/2-z -8 -1/2+x,-1/2-y,-z -_cell_length_a 10.8971(5) -_cell_length_b 12.7655(6) -_cell_length_c 15.8151(8) -_cell_angle_alpha 90 -_cell_angle_beta 90 -_cell_angle_gamma 90 -_cell_formula_units_Z 8 -loop_ -_atom_type_symbol -_atom_type_radius_bond -C 0.68 -H 0.23 -Mn 1.35 -N 0.68 -O 0.68 -loop_ -_atom_site_label -_atom_site_type_symbol -_atom_site_fract_x -_atom_site_fract_y -_atom_site_fract_z -Mn1 Mn 0.538373(18) 0.232247(16) 0.586929(13) -C1 C 0.50205(13) 0.33619(11) 0.73125(8) -C2 C 0.58490(14) 0.24249(11) 0.72025(9) -C3 C 0.68925(13) 0.25544(12) 0.66931(9) -C4 C 0.69242(13) 0.33675(11) 0.61016(9) -C5 C 0.60753(12) 0.42759(11) 0.62764(9) -C6 C 0.63262(15) 0.48800(12) 0.70980(9) -C7 C 0.55772(14) 0.42929(12) 0.77829(9) -C8 C 0.37965(15) 0.43406(14) 0.62407(11) -N1 N 0.48904(10) 0.37136(9) 0.64184(7) -C9 C 0.39151(14) 0.17087(11) 0.60560(8) -C10 C 0.50880(13) 0.27360(11) 0.48011(9) -C11 C 0.60512(13) 0.11219(12) 0.54997(9) -O1 O 0.29804(10) 0.13313(8) 0.61871(7) -O2 O 0.48724(11) 0.30018(9) 0.41213(7) -O3 O 0.64741(11) 0.03523(8) 0.52586(7) -H1 H 0.4225(12) 0.3172(10) 0.7534(8) -H2 H 0.5808(13) 0.1877(12) 0.7587(9) -H3 H 0.7486(14) 0.2071(12) 0.6678(9) -H4 H 0.7635(13) 0.3455(11) 0.5754(9) -H5 H 0.6005(13) 0.4687(11) 0.5802(9) -H6 H 0.7185(15) 0.4879(12) 0.7238(9) -H7 H 0.6081(14) 0.5626(13) 0.7061(10) -H8 H 0.6059(14) 0.4091(11) 0.8256(10) -H9 H 0.4935(16) 0.4727(13) 0.8022(10) -H10 H 0.3110(15) 0.3964(13) 0.6367(10) -H11 H 0.3766(14) 0.4524(11) 0.5657(11) -H12 H 0.3808(16) 0.4991(14) 0.6548(11) -#END diff --git a/cell2mol/test/error_2/FIYFEB.search5.cif b/cell2mol/test/error_2/FIYFEB.search5.cif deleted file mode 100755 index 270d12bf8..000000000 --- a/cell2mol/test/error_2/FIYFEB.search5.cif +++ /dev/null @@ -1,153 +0,0 @@ - -####################################################################### -# -# Cambridge Crystallographic Data Centre -# CCDC -# -####################################################################### -# -# If this CIF has been generated from an entry in the Cambridge -# Structural Database, then it will include bibliographic, chemical, -# crystal, experimental, refinement or atomic coordinate data resulting -# from the CCDC's data processing and validation procedures. -# -####################################################################### - -data_CSD_CIF_FIYFEB -_audit_creation_date 2019-01-14 -_audit_creation_method CSD-ConQuest-V1 -_database_code_CSD FIYFEB -_database_code_depnum_ccdc_archive 'CCDC 1858801' -_chemical_formula_sum 'C19 H43 Fe1 K1 N2 Si4' -_chemical_formula_moiety -; -C19 H43 Fe1 K1 N2 Si4 -; -_journal_coden_Cambridge 222 -_journal_volume 48 -_journal_year 2019 -_journal_page_first 1757 -_journal_name_full 'Dalton Trans. ' -loop_ -_publ_author_name -"C.G.Werncke" -"J.Pfeiffer" -"I.Muller" -"L.Vendier" -"S.Sabo-Etienne" -"S.Bontemps" -_chemical_name_systematic -; -bis(bis(trimethylsilyl)amido)-benzyl-iron(ii)-potassium -; -_cell_volume 2872.899 -_exptl_crystal_colour 'light yellow' -_exptl_crystal_density_diffrn 1.172 -_exptl_crystal_description 'block' -_diffrn_ambient_temperature 100 -#These two values have been output from a single CSD field. -_refine_ls_R_factor_gt 0.0273 -_refine_ls_wR_factor_gt 0.0273 -_symmetry_cell_setting monoclinic -_symmetry_space_group_name_H-M 'P 21/n' -_symmetry_Int_Tables_number 14 -loop_ -_symmetry_equiv_pos_site_id -_symmetry_equiv_pos_as_xyz -1 x,y,z -2 1/2-x,1/2+y,1/2-z -3 -x,-y,-z -4 -1/2+x,-1/2-y,-1/2+z -_cell_length_a 9.1546(5) -_cell_length_b 20.9176(17) -_cell_length_c 15.0072(9) -_cell_angle_alpha 90 -_cell_angle_beta 91.405(5) -_cell_angle_gamma 90 -_cell_formula_units_Z 4 -loop_ -_atom_type_symbol -_atom_type_radius_bond -C 0.68 -H 0.23 -Fe 1.52 -K 2.03 -N 0.68 -Si 1.20 -loop_ -_atom_site_label -_atom_site_type_symbol -_atom_site_fract_x -_atom_site_fract_y -_atom_site_fract_z -Fe1 Fe 0.56380(2) 0.73652(2) 0.33020(2) -K1 K 0.38252(5) 0.68564(2) 0.14658(2) -Si1 Si 0.56065(5) 0.83660(2) 0.16971(3) -Si2 Si 0.31913(5) 0.83855(2) 0.29891(3) -Si3 Si 0.74087(5) 0.61969(2) 0.25985(3) -Si4 Si 0.44799(5) 0.59547(2) 0.34045(3) -N1 N 0.46158(14) 0.79892(6) 0.25076(8) -N2 N 0.57066(14) 0.64564(6) 0.29030(8) -C1 C 0.6656(2) 0.75157(8) 0.45450(11) -H1 H 0.59743 0.73815 0.50116 -H2 H 0.75233 0.72338 0.45922 -C2 C 0.71285(19) 0.81773(8) 0.47381(10) -C3 C 0.62803(19) 0.86007(8) 0.52306(10) -H3 H 0.53623 0.84621 0.54406 -C4 C 0.6750(2) 0.92180(9) 0.54190(11) -H4 H 0.61483 0.94950 0.57523 -C5 C 0.8082(2) 0.94346(9) 0.51276(11) -H5 H 0.84079 0.98551 0.52656 -C6 C 0.8935(2) 0.90265(9) 0.46298(11) -H6 H 0.98465 0.91712 0.44182 -C7 C 0.84713(19) 0.84118(8) 0.44385(10) -H7 H 0.90738 0.81410 0.40965 -C8 C 0.6217(2) 0.77791(11) 0.08339(12) -H8 H 0.66034 0.73950 0.11298 -H9 H 0.69811 0.79738 0.04772 -H10 H 0.53838 0.76626 0.04445 -C9 C 0.7268(2) 0.87688(9) 0.21657(11) -H11 H 0.69786 0.91009 0.25869 -H12 H 0.78114 0.89639 0.16813 -H13 H 0.78881 0.84536 0.24756 -C10 C 0.4548(2) 0.89682(10) 0.10108(12) -H14 H 0.36983 0.87598 0.07264 -H15 H 0.51754 0.91441 0.05515 -H16 H 0.42172 0.93144 0.13971 -C11 C 0.3642(2) 0.92332(8) 0.33086(12) -H17 H 0.44799 0.92364 0.37274 -H18 H 0.27972 0.94286 0.35911 -H19 H 0.38825 0.94766 0.27739 -C12 C 0.2673(2) 0.79953(9) 0.40589(11) -H20 H 0.22661 0.75705 0.39332 -H21 H 0.19409 0.82576 0.43535 -H22 H 0.35411 0.79535 0.44498 -C13 C 0.15085(19) 0.83718(9) 0.22571(12) -H23 H 0.17214 0.85664 0.16807 -H24 H 0.07301 0.86133 0.25419 -H25 H 0.11922 0.79286 0.21653 -C14 C 0.7325(2) 0.57956(10) 0.14823(13) -H26 H 0.66423 0.54353 0.14994 -H27 H 0.82992 0.56390 0.13356 -H28 H 0.69907 0.61026 0.10282 -C15 C 0.8294(2) 0.56309(10) 0.34151(14) -H29 H 0.84339 0.58452 0.39916 -H30 H 0.92437 0.54959 0.31936 -H31 H 0.76671 0.52556 0.34871 -C16 C 0.8742(2) 0.68743(9) 0.25050(15) -H32 H 0.83158 0.72093 0.21232 -H33 H 0.96448 0.67174 0.22441 -H34 H 0.89604 0.70498 0.30989 -C17 C 0.4683(3) 0.59388(11) 0.46488(12) -H35 H 0.45018 0.63671 0.48866 -H36 H 0.56762 0.58036 0.48187 -H37 H 0.39771 0.56374 0.48925 -C18 C 0.4535(2) 0.51138(9) 0.29821(14) -H38 H 0.37551 0.48648 0.32526 -H39 H 0.54839 0.49224 0.31399 -H40 H 0.43957 0.51137 0.23326 -C19 C 0.2550(2) 0.62122(10) 0.31416(14) -H41 H 0.24830 0.66790 0.31784 -H42 H 0.18921 0.60191 0.35711 -H43 H 0.22683 0.60728 0.25381 -#END diff --git a/cell2mol/test/error_2/FURPEO.search5.cif b/cell2mol/test/error_2/FURPEO.search5.cif deleted file mode 100755 index a0aeeb9b0..000000000 --- a/cell2mol/test/error_2/FURPEO.search5.cif +++ /dev/null @@ -1,344 +0,0 @@ - -####################################################################### -# -# Cambridge Crystallographic Data Centre -# CCDC -# -####################################################################### -# -# If this CIF has been generated from an entry in the Cambridge -# Structural Database, then it will include bibliographic, chemical, -# crystal, experimental, refinement or atomic coordinate data resulting -# from the CCDC's data processing and validation procedures. -# -####################################################################### - -data_CSD_CIF_FURPEO -_audit_creation_date 2010-04-07 -_audit_creation_method CSD-ConQuest-V1 -_database_code_CSD FURPEO -_database_code_depnum_ccdc_archive 'CCDC 723545' -_chemical_formula_sum 'C106 H120 Cl4 Fe1 K2 N10 O12' -_chemical_formula_moiety -; -2(C18 H36 K1 N2 O6 1+),C46 H28 Fe1 N6 2-,4(C6 H5 Cl1) -; -_journal_coden_Cambridge 179 -_journal_volume 48 -_journal_year 2009 -_journal_page_first 5010 -_journal_name_full 'Angew.Chem.,Int.Ed. ' -loop_ -_publ_author_name -"Jianfeng Li" -"B.C.Noll" -"C.E.Schulz" -"W.R.Scheidt" -_chemical_name_systematic -; -bis((4,7,13,16,21,24-Hexaoxa-1,10-diazabicyclo[8.8.8]hexacosane-N^1^,N^10^,O^4 -^,O^7^,O^13^,O^16^,O^21^,O^24^)-potassium) -bis(cyano)-(5,10,15,20-tetraphenylporphyrinato-N^21^,N^22^,N^23^,N^24^)-iron(i -i) chlorobenzene solvate -; -_chemical_name_common -; -bis((2,2,2-Cryptand)-potassium) -bis(cyano)-(5,10,15,20-tetraphenylporphyrinato-N$21!,N$22!,N$23!,N$24!)-iron(i -i) chlorobenzene solvate -; -_cell_volume 4946.998 -_exptl_crystal_colour 'black' -_exptl_crystal_density_diffrn 1.344 -_exptl_crystal_description 'block' -_diffrn_ambient_temperature 100 -#These two values have been output from a single CSD field. -_refine_ls_R_factor_gt 0.0496 -_refine_ls_wR_factor_gt 0.0496 -_symmetry_cell_setting triclinic -_symmetry_space_group_name_H-M 'P -1' -_symmetry_Int_Tables_number 2 -loop_ -_symmetry_equiv_pos_site_id -_symmetry_equiv_pos_as_xyz -1 x,y,z -2 -x,-y,-z -_cell_length_a 15.5352(11) -_cell_length_b 15.8391(13) -_cell_length_c 22.0815(16) -_cell_angle_alpha 83.820(4) -_cell_angle_beta 77.934(4) -_cell_angle_gamma 68.686(4) -_cell_formula_units_Z 2 -loop_ -_atom_type_symbol -_atom_type_radius_bond -C 0.68 -H 0.23 -Cl 0.99 -Fe 1.52 -K 2.03 -N 0.68 -O 0.68 -loop_ -_atom_site_label -_atom_site_type_symbol -_atom_site_fract_x -_atom_site_fract_y -_atom_site_fract_z -Fe1 Fe 0.26210(3) 0.74701(3) 0.25255(2) -N1 N 0.3586(2) 0.6538(2) 0.19618(13) -N2 N 0.3350(2) 0.6976(2) 0.32049(13) -N3 N 0.1656(2) 0.8412(2) 0.30747(13) -N4 N 0.1886(2) 0.7951(2) 0.18479(13) -N5 N 0.3769(2) 0.8770(2) 0.21859(15) -N6 N 0.1534(2) 0.6141(2) 0.30021(16) -C1 C 0.3554(2) 0.6360(2) 0.13744(16) -C2 C 0.4415(2) 0.5916(2) 0.20877(16) -C3 C 0.4185(2) 0.6267(2) 0.31763(16) -C4 C 0.3099(2) 0.7264(2) 0.38012(15) -C5 C 0.1642(3) 0.8527(3) 0.36862(16) -C6 C 0.0896(2) 0.9122(2) 0.29206(16) -C7 C 0.1095(2) 0.8702(2) 0.18529(16) -C8 C 0.2057(2) 0.7572(2) 0.12806(16) -C9 C 0.4379(3) 0.5625(3) 0.11282(17) -H1 H 0.45170 0.53740 0.07320 -C10 C 0.4921(3) 0.5358(3) 0.15649(16) -H2 H 0.55210 0.48920 0.15340 -C11 C 0.4464(3) 0.6102(3) 0.37752(16) -H3 H 0.50170 0.56490 0.38790 -C12 C 0.3796(2) 0.6712(2) 0.41571(16) -H4 H 0.37840 0.67680 0.45830 -C13 C 0.0865(3) 0.9323(3) 0.39147(17) -H5 H 0.07030 0.95460 0.43210 -C14 C 0.0413(3) 0.9688(3) 0.34390(17) -H6 H -0.01280 1.02230 0.34460 -C15 C 0.0756(3) 0.8793(3) 0.12808(16) -H7 H 0.02150 0.92590 0.11720 -C16 C 0.1343(2) 0.8102(3) 0.09325(17) -H8 H 0.12980 0.79830 0.05300 -C17 C 0.4704(2) 0.5778(3) 0.26587(16) -C18 C 0.2307(2) 0.7984(3) 0.40349(16) -C19 C 0.0631(2) 0.9276(3) 0.23418(16) -C20 C 0.2817(3) 0.6830(3) 0.10575(16) -C21 C 0.5595(3) 0.5026(3) 0.27298(16) -C22 C 0.5568(3) 0.4234(3) 0.30604(18) -H9 H 0.49770 0.41770 0.32340 -C23 C 0.6391(3) 0.3526(3) 0.3141(2) -H10 H 0.63610 0.29930 0.33730 -C24 C 0.7249(3) 0.3597(3) 0.28823(19) -H11 H 0.78120 0.31140 0.29360 -C25 C 0.7288(3) 0.4370(3) 0.25465(19) -H12 H 0.78810 0.44180 0.23660 -C26 C 0.6467(3) 0.5079(3) 0.24701(18) -H13 H 0.65040 0.56090 0.22360 -C27 C 0.2158(3) 0.8187(3) 0.47016(17) -C28 C 0.2775(3) 0.8475(3) 0.49175(18) -H14 H 0.32850 0.85770 0.46370 -C29 C 0.2650(3) 0.8617(3) 0.5545(2) -H15 H 0.30790 0.88130 0.56900 -C30 C 0.1919(3) 0.8478(3) 0.59584(19) -H16 H 0.18430 0.85730 0.63870 -C31 C 0.1293(3) 0.8199(3) 0.5745(2) -H17 H 0.07800 0.81060 0.60260 -C32 C 0.1417(3) 0.8056(3) 0.51174(18) -H18 H 0.09850 0.78640 0.49730 -C33 C -0.0184(3) 1.0094(3) 0.22263(16) -C34 C -0.0039(3) 1.0764(3) 0.17935(18) -H19 H 0.05800 1.06980 0.15840 -C35 C -0.0782(3) 1.1521(3) 0.16668(19) -H20 H -0.06690 1.19690 0.13710 -C36 C -0.1684(3) 1.1633(3) 0.19636(18) -H21 H -0.21940 1.21550 0.18750 -C37 C -0.1843(3) 1.0975(3) 0.23932(18) -H22 H -0.24640 1.10460 0.26010 -C38 C -0.1099(3) 1.0218(3) 0.25192(17) -H23 H -0.12170 0.97710 0.28140 -C39 C 0.2830(3) 0.6539(3) 0.04307(16) -C40 C 0.3398(3) 0.6722(3) -0.00959(18) -H24 H 0.38450 0.69830 -0.00570 -C41 C 0.3336(3) 0.6536(3) -0.06802(19) -H25 H 0.37300 0.66780 -0.10360 -C42 C 0.2700(3) 0.6146(3) -0.07444(19) -H26 H 0.26510 0.60190 -0.11440 -C43 C 0.2138(3) 0.5940(3) -0.02239(18) -H27 H 0.17040 0.56630 -0.02640 -C44 C 0.2202(3) 0.6137(3) 0.03613(18) -H28 H 0.18100 0.59930 0.07170 -C45 C 0.3336(3) 0.8295(3) 0.22862(16) -C46 C 0.1932(3) 0.6635(3) 0.28171(16) -K1 K 0.78502(6) 0.67131(6) 0.48799(4) -N7 N 0.7550(2) 0.5025(2) 0.46732(14) -N8 N 0.8097(2) 0.8438(2) 0.51080(15) -C47 C 0.8338(3) 0.8889(3) 0.45127(19) -H29 H 0.86270 0.93260 0.45820 -H30 H 0.77550 0.92350 0.43520 -C48 C 0.9005(3) 0.8234(3) 0.40341(19) -H31 H 0.91960 0.85720 0.36580 -H32 H 0.95770 0.78570 0.41990 -C49 C 0.9096(3) 0.7156(3) 0.33527(19) -H33 H 0.97290 0.67800 0.34350 -H34 H 0.91710 0.75700 0.29920 -C50 C 0.8615(3) 0.6566(3) 0.32122(18) -H35 H 0.79780 0.69410 0.31380 -H36 H 0.89730 0.62290 0.28330 -C51 C 0.8223(3) 0.5276(3) 0.35705(18) -H37 H 0.86480 0.49510 0.32030 -H38 H 0.75870 0.55740 0.34690 -C52 C 0.8191(3) 0.4614(3) 0.41086(19) -H39 H 0.79960 0.41370 0.39870 -H40 H 0.88320 0.43180 0.42020 -C53 C 0.6577(3) 0.5223(3) 0.4601(2) -H41 H 0.64520 0.46480 0.46390 -H42 H 0.65030 0.54880 0.41800 -C54 C 0.5861(3) 0.5868(3) 0.5070(2) -H43 H 0.52190 0.59380 0.50220 -H44 H 0.59430 0.56230 0.54940 -C55 C 0.5242(3) 0.7385(3) 0.5344(2) -H45 H 0.52410 0.72170 0.57890 -H46 H 0.46310 0.74250 0.52520 -C56 C 0.5364(3) 0.8278(3) 0.5207(2) -H47 H 0.53670 0.84460 0.47620 -H48 H 0.48320 0.87490 0.54510 -C57 C 0.6354(3) 0.9082(3) 0.52507(19) -H49 H 0.57980 0.95600 0.54690 -H50 H 0.64190 0.92410 0.48020 -C58 C 0.7213(3) 0.9037(3) 0.5473(2) -H51 H 0.72340 0.96570 0.54570 -H52 H 0.71680 0.88170 0.59120 -C59 C 0.7747(3) 0.4406(3) 0.52116(19) -H53 H 0.77850 0.37990 0.51080 -H54 H 0.72130 0.46230 0.55590 -C60 C 0.9333(3) 0.5105(3) 0.58878(19) -H55 H 0.99240 0.49560 0.55790 -H56 H 0.94070 0.46150 0.62120 -C61 C 0.9132(3) 0.5982(3) 0.61686(18) -H57 H 0.85370 0.61310 0.64740 -H58 H 0.96430 0.59310 0.63900 -C62 C 0.8640(3) 0.4311(3) 0.54264(19) -H59 H 0.87270 0.38790 0.57870 -H60 H 0.91870 0.40770 0.50900 -C63 C 0.8867(3) 0.8231(3) 0.5452(2) -H61 H 0.88200 0.87960 0.56320 -H62 H 0.94720 0.80220 0.51580 -C64 C 0.8876(3) 0.7526(3) 0.59620(19) -H63 H 0.93680 0.74700 0.62020 -H64 H 0.82610 0.77060 0.62470 -O1 O 0.62263(19) 0.82330(19) 0.53623(13) -O2 O 0.59801(18) 0.67152(19) 0.49800(12) -O3 O 0.85574(18) 0.76720(19) 0.38812(12) -O4 O 0.85502(19) 0.59406(19) 0.37229(12) -O5 O 0.90592(19) 0.66846(19) 0.57040(12) -O6 O 0.85717(18) 0.51798(19) 0.55957(12) -K2 K 0.71400(6) 0.84931(6) 0.01736(4) -N9 N 0.6263(2) 0.7248(2) -0.01246(15) -N10 N 0.8019(2) 0.9753(2) 0.04816(14) -C65 C 0.7443(3) 1.0682(3) 0.0340(2) -H65 H 0.77950 1.10860 0.03570 -H66 H 0.68670 1.08690 0.06610 -C66 C 0.7166(3) 1.0804(3) -0.0288(2) -H67 H 0.68220 1.14530 -0.03740 -H68 H 0.77360 1.05970 -0.06130 -C67 C 0.6397(3) 1.0343(3) -0.09073(18) -H69 H 0.69820 1.00210 -0.11950 -H70 H 0.61610 1.09850 -0.10540 -C68 C 0.5690(3) 0.9926(3) -0.09008(19) -H71 H 0.51220 1.02190 -0.05910 -H72 H 0.55070 1.00150 -0.13130 -C69 C 0.5432(3) 0.8541(3) -0.0780(2) -H73 H 0.52160 0.86900 -0.11820 -H74 H 0.48760 0.87470 -0.04450 -C70 C 0.5923(3) 0.7540(3) -0.0710(2) -H75 H 0.54860 0.72300 -0.07440 -H76 H 0.64640 0.73450 -0.10570 -C71 C 0.5470(3) 0.7273(3) 0.03760(19) -H77 H 0.52470 0.67800 0.03190 -H78 H 0.49500 0.78550 0.03380 -C72 C 0.5678(3) 0.7176(3) 0.10222(19) -H79 H 0.51050 0.72090 0.13300 -H80 H 0.61700 0.65810 0.10790 -C73 C 0.6279(3) 0.8672(3) 0.18562(17) -H81 H 0.57060 0.91990 0.18100 -H82 H 0.63790 0.86450 0.22870 -C74 C 0.6148(3) 0.7828(3) 0.17331(17) -H83 H 0.67150 0.72970 0.17870 -H84 H 0.56050 0.77540 0.20290 -C75 C 0.7210(3) 0.9576(3) 0.15605(19) -H85 H 0.72800 0.95550 0.19980 -H86 H 0.66600 1.01170 0.14930 -C76 C 0.8080(3) 0.9641(3) 0.11396(18) -H87 H 0.82080 1.01620 0.12600 -H88 H 0.86190 0.90860 0.12010 -C77 C 0.9529(3) 0.8551(3) 0.00721(19) -H89 H 1.01750 0.84600 -0.01560 -H90 H 0.95710 0.82840 0.04960 -C78 C 0.8967(3) 0.9539(3) 0.01031(19) -H91 H 0.93130 0.98440 0.02750 -H92 H 0.89100 0.97890 -0.03230 -C79 C 0.9632(3) 0.7172(3) -0.0275(2) -H93 H 0.96550 0.68880 0.01460 -H94 H 1.02830 0.70850 -0.04890 -C80 C 0.9192(3) 0.6730(3) -0.0627(2) -H95 H 0.91290 0.70390 -0.10380 -H96 H 0.95930 0.60860 -0.06900 -C81 C 0.7892(3) 0.6285(3) -0.0561(2) -H97 H 0.83190 0.56450 -0.05940 -H98 H 0.78080 0.65370 -0.09830 -C82 C 0.6954(3) 0.6336(3) -0.0170(2) -H99 H 0.67030 0.59470 -0.03490 -H100 H 0.70490 0.60910 0.02520 -O7 O 0.70665(19) 0.87856(19) 0.14367(12) -O8 O 0.59896(19) 0.7882(2) 0.11132(12) -O9 O 0.65894(19) 1.02944(19) -0.02957(12) -O10 O 0.6068(2) 0.8982(2) -0.07499(13) -O11 O 0.90979(19) 0.8110(2) -0.02326(13) -O12 O 0.8291(2) 0.6788(2) -0.02826(13) -C83 C 0.4296(3) 0.3561(3) 0.21117(19) -H101 H 0.45530 0.36400 0.16890 -C84 C 0.3144(3) 0.4115(3) 0.3021(2) -H102 H 0.26110 0.45800 0.32250 -C85 C 0.3521(3) 0.4247(3) 0.24174(19) -H103 H 0.32550 0.48070 0.22050 -C86 C 0.3538(3) 0.3303(3) 0.3338(2) -H104 H 0.32760 0.32150 0.37580 -C87 C 0.4310(3) 0.2622(3) 0.3043(2) -H105 H 0.45790 0.20630 0.32550 -C88 C 0.4678(3) 0.2767(3) 0.24408(19) -Cl1 Cl 0.56682(8) 0.19235(8) 0.20674(6) -C89 C 0.1025(3) 0.2354(3) 0.24958(18) -C90 C 0.1707(4) 0.2731(4) 0.23540(19) -H106 H 0.15510 0.33680 0.22910 -C91 C 0.2844(4) 0.1238(5) 0.2406(2) -H107 H 0.34820 0.08500 0.23750 -C92 C 0.2629(4) 0.2162(5) 0.2305(2) -H108 H 0.31190 0.24050 0.22010 -C93 C 0.2147(4) 0.0878(4) 0.2551(2) -H109 H 0.23000 0.02410 0.26150 -C94 C 0.1218(3) 0.1444(3) 0.2605(2) -H110 H 0.07250 0.12050 0.27150 -Cl2 Cl -0.01462(9) 0.30614(9) 0.25673(6) -C95 C 0.3700(3) 0.1461(3) 0.64308(18) -H111 H 0.30880 0.16780 0.63330 -C96 C 0.4161(3) 0.2052(3) 0.64598(19) -H112 H 0.38650 0.26830 0.63790 -C97 C 0.5050(3) 0.1731(4) 0.6606(2) -H113 H 0.53570 0.21420 0.66350 -C98 C 0.5043(3) 0.0224(3) 0.66807(19) -H114 H 0.53460 -0.04080 0.67520 -C99 C 0.5485(3) 0.0824(4) 0.6709(2) -H115 H 0.61010 0.06060 0.68010 -C100 C 0.4147(3) 0.0558(3) 0.65460(17) -Cl3 Cl 0.35694(8) -0.01969(8) 0.65316(5) -C101 C 0.9221(3) 0.5850(3) 0.14771(18) -C102 C 1.0006(3) 0.5269(3) 0.16944(19) -H116 H 1.01500 0.46320 0.17060 -C103 C 1.0577(3) 0.5628(4) 0.1893(2) -H117 H 1.11180 0.52340 0.20470 -C104 C 1.0376(3) 0.6554(3) 0.18730(19) -H118 H 1.07790 0.68000 0.20020 -C105 C 0.8989(3) 0.6768(3) 0.14625(18) -H119 H 0.84380 0.71600 0.13190 -C106 C 0.9579(3) 0.7111(3) 0.16623(19) -H120 H 0.94290 0.77490 0.16540 -Cl4 Cl 0.84959(9) 0.53978(10) 0.12211(6) -#END diff --git a/cell2mol/test/error_2/FUYTOK.niquel_all.cif b/cell2mol/test/error_2/FUYTOK.niquel_all.cif deleted file mode 100755 index 601364c90..000000000 --- a/cell2mol/test/error_2/FUYTOK.niquel_all.cif +++ /dev/null @@ -1,234 +0,0 @@ - -####################################################################### -# -# Cambridge Crystallographic Data Centre -# CCDC -# -####################################################################### -# -# If this CIF has been generated from an entry in the Cambridge -# Structural Database, then it will include bibliographic, chemical, -# crystal, experimental, refinement or atomic coordinate data resulting -# from the CCDC's data processing and validation procedures. -# -####################################################################### - -data_CSD_CIF_FUYTOK -_audit_creation_date 2016-01-07 -_audit_creation_method CSD-ConQuest-V1 -_database_code_CSD FUYTOK -_database_code_depnum_ccdc_archive 'CCDC 1421830' -_chemical_formula_sum 'C56 H80 K1 N2 Ni1 O6 S1' -_chemical_formula_moiety -; -C41 H65 K1 N2 Ni1 O6 S1,2.5(C6 H6) -; -_journal_coden_Cambridge 179 -_journal_volume 54 -_journal_year 2015 -_journal_page_first 14956 -_journal_name_full 'Angew.Chem.,Int.Ed. ' -loop_ -_publ_author_name -"N.J.Hartmann" -"Guang Wu" -"T.W.Hayton" -_chemical_name_systematic -; -(\m-Sulfido)-(N,N'-bis(2,6-di-isopropylphenyl)-pentane2,4-di-iminato)-(1,4,7,1 -0,13,16-hexaoxacyclooctadecane)-nickel(ii)-potassium benzene solvate -; -_cell_volume 2821.101 -_exptl_crystal_colour 'green' -_exptl_crystal_density_diffrn 1.186 -_exptl_crystal_description 'Block' -_exptl_crystal_preparation 'Re-crystallisation from solvent' -_diffrn_ambient_temperature 108 -#These two values have been output from a single CSD field. -_refine_ls_R_factor_gt 0.0397 -_refine_ls_wR_factor_gt 0.0397 -_symmetry_cell_setting triclinic -_symmetry_space_group_name_H-M 'P -1' -_symmetry_Int_Tables_number 2 -loop_ -_symmetry_equiv_pos_site_id -_symmetry_equiv_pos_as_xyz -1 x,y,z -2 -x,-y,-z -_cell_length_a 13.1937(13) -_cell_length_b 13.2978(13) -_cell_length_c 16.6951(16) -_cell_angle_alpha 88.621(2) -_cell_angle_beta 74.520(2) -_cell_angle_gamma 88.213(2) -_cell_formula_units_Z 2 -loop_ -_atom_type_symbol -_atom_type_radius_bond -C 0.68 -H 0.23 -K 2.03 -N 0.68 -Ni 1.24 -O 0.68 -S 1.02 -loop_ -_atom_site_label -_atom_site_type_symbol -_atom_site_fract_x -_atom_site_fract_y -_atom_site_fract_z -C1 C 0.83121(14) 0.18249(15) 0.57477(12) -C2 C 0.86760(16) 0.26359(17) 0.52083(12) -C3 C 0.79611(18) 0.32564(18) 0.48063(14) -H1 H 0.72480 0.29590 0.49850 -C4 C 0.7851(3) 0.4337(2) 0.50980(17) -H2 H 0.75610 0.43480 0.57030 -H3 H 0.73790 0.47170 0.48310 -H4 H 0.85440 0.46440 0.49480 -C5 C 0.8323(2) 0.3224(2) 0.38569(16) -H5 H 0.89750 0.35950 0.36570 -H6 H 0.77770 0.35320 0.36250 -H7 H 0.84480 0.25230 0.36810 -C6 C 0.97466(17) 0.28520(18) 0.50371(13) -H8 H 1.00120 0.33940 0.46670 -C7 C 1.04245(16) 0.23051(18) 0.53879(13) -H9 H 1.11460 0.24700 0.52620 -C8 C 1.00461(15) 0.15109(17) 0.59279(13) -H10 H 1.05140 0.11360 0.61730 -C9 C 0.89921(15) 0.12528(15) 0.61170(12) -C10 C 0.85935(16) 0.03921(16) 0.67210(13) -H11 H 0.79020 0.01890 0.66450 -C11 C 0.8406(2) 0.07526(19) 0.76138(14) -H12 H 0.90810 0.09120 0.77160 -H13 H 0.80720 0.02210 0.80030 -H14 H 0.79470 0.13560 0.76950 -C12 C 0.9333(2) -0.05359(19) 0.65847(17) -H15 H 0.94850 -0.07390 0.60030 -H16 H 0.89960 -0.10880 0.69490 -H17 H 0.99900 -0.03740 0.67150 -C13 C 0.69419(15) 0.08417(15) 0.55391(12) -C14 C 0.77595(16) 0.03280(18) 0.48437(14) -H18 H 0.80860 0.08300 0.44220 -H19 H 0.74210 -0.01760 0.45900 -H20 H 0.83000 -0.00020 0.50700 -C15 C 0.59173(15) 0.04784(15) 0.57267(12) -H21 H 0.57940 -0.00280 0.53750 -C16 C 0.50564(15) 0.07800(15) 0.63747(12) -C17 C 0.40753(15) 0.01626(17) 0.65255(13) -H22 H 0.40080 -0.02580 0.70260 -H23 H 0.41270 -0.02670 0.60470 -H24 H 0.34570 0.06140 0.66010 -C18 C 0.41933(14) 0.17057(14) 0.75666(11) -C19 C 0.34065(14) 0.24192(15) 0.75143(12) -C20 C 0.34735(16) 0.30450(17) 0.67270(13) -H25 H 0.42170 0.30010 0.63760 -C21 C 0.3194(3) 0.4148(2) 0.6910(2) -H26 H 0.24500 0.42180 0.72150 -H27 H 0.33190 0.45330 0.63860 -H28 H 0.36310 0.44060 0.72460 -C22 C 0.2775(3) 0.2669(3) 0.6222(2) -H29 H 0.29890 0.19770 0.60500 -H30 H 0.28390 0.31010 0.57290 -H31 H 0.20420 0.26820 0.65600 -C23 C 0.25459(15) 0.25401(16) 0.82100(13) -H32 H 0.19980 0.30100 0.81830 -C24 C 0.24749(16) 0.19924(17) 0.89340(13) -H33 H 0.18820 0.20830 0.93980 -C25 C 0.32728(16) 0.13085(16) 0.89820(12) -H34 H 0.32250 0.09370 0.94830 -C26 C 0.50272(17) 0.04365(16) 0.83881(12) -H35 H 0.55460 0.03930 0.78300 -C27 C 0.41460(15) 0.11589(14) 0.83036(12) -C28 C 0.4637(2) -0.06278(17) 0.86438(16) -H36 H 0.41140 -0.06080 0.91850 -H37 H 0.52320 -0.10690 0.86820 -H38 H 0.43160 -0.08870 0.82270 -C29 C 0.56017(18) 0.08490(18) 0.89916(14) -H39 H 0.58720 0.15140 0.87960 -H40 H 0.61890 0.03910 0.90190 -H41 H 0.51120 0.09050 0.95460 -C30 C 0.8409(2) 0.6506(2) 0.73157(17) -H42 H 0.90410 0.67710 0.74430 -H43 H 0.81880 0.69800 0.69240 -C31 C 0.8650(2) 0.5485(2) 0.69382(15) -H44 H 0.79960 0.51830 0.68840 -H45 H 0.91440 0.55420 0.63780 -C32 C 0.94299(19) 0.3903(2) 0.71027(16) -H46 H 0.99900 0.39780 0.65770 -H47 H 0.88270 0.35730 0.69810 -C33 C 0.98288(18) 0.3287(2) 0.77122(17) -H48 H 1.01480 0.26480 0.74570 -H49 H 1.03750 0.36560 0.78840 -C34 C 0.9267(2) 0.2466(2) 0.90207(18) -H50 H 0.97080 0.28420 0.92990 -H51 H 0.96740 0.18670 0.87580 -C35 C 0.8277(2) 0.21524(18) 0.96397(18) -H52 H 0.78070 0.18290 0.93540 -H53 H 0.84430 0.16630 1.00460 -C36 C 0.6827(2) 0.28167(19) 1.06635(18) -H54 H 0.69470 0.22590 1.10340 -H55 H 0.62840 0.26130 1.03930 -C37 C 0.64678(19) 0.3746(2) 1.11545(15) -H56 H 0.58380 0.36050 1.16160 -H57 H 0.70300 0.39730 1.13950 -C38 C 0.60028(17) 0.54550(18) 1.10348(14) -H58 H 0.66310 0.56700 1.11970 -H59 H 0.54180 0.53850 1.15450 -C39 C 0.57111(17) 0.62226(18) 1.04671(15) -H60 H 0.51010 0.59950 1.02860 -H61 H 0.55100 0.68660 1.07610 -C40 C 0.63704(19) 0.71318(17) 0.92185(15) -H62 H 0.61560 0.77630 0.95290 -H63 H 0.57840 0.69290 0.89970 -C41 C 0.7331(2) 0.73005(17) 0.85173(16) -H64 H 0.71980 0.78580 0.81520 -H65 H 0.79270 0.74820 0.87380 -K1 K 0.73968(3) 0.45098(3) 0.89021(3) -N1 N 0.72156(12) 0.15858(13) 0.59471(10) -N2 N 0.50844(12) 0.15461(12) 0.68670(9) -Ni1 Ni 0.62935(2) 0.23577(2) 0.68414(2) -O1 O 0.75783(13) 0.63988(12) 0.80619(10) -O2 O 0.91069(12) 0.48724(13) 0.74599(10) -O3 O 0.89773(12) 0.30852(13) 0.84123(11) -O4 O 0.77738(12) 0.30281(11) 1.00542(11) -O5 O 0.62225(12) 0.45092(12) 1.06225(9) -O6 O 0.65930(11) 0.63673(11) 0.97567(9) -S1 S 0.64594(4) 0.35185(4) 0.75913(3) -C42 C 0.5286(3) 0.5760(3) 0.5962(3) -H66 H 0.52240 0.50780 0.58290 -C43 C 0.5746(3) 0.5992(3) 0.6586(2) -H67 H 0.59960 0.54690 0.68880 -C44 C 0.5839(3) 0.6965(3) 0.6767(2) -H68 H 0.61540 0.71230 0.71960 -C45 C 0.5484(3) 0.7721(2) 0.6338(2) -H69 H 0.55650 0.84040 0.64590 -C46 C 0.5009(3) 0.7490(3) 0.5729(2) -H70 H 0.47430 0.80180 0.54430 -C47 C 0.4914(3) 0.6534(3) 0.5530(2) -H71 H 0.45970 0.63850 0.51000 -C48 C 0.8950(2) 0.2159(2) 0.17650(17) -H72 H 0.88200 0.28340 0.19460 -C49 C 0.8229(2) 0.1428(2) 0.21079(17) -H73 H 0.76140 0.15970 0.25330 -C50 C 0.8409(2) 0.0457(2) 0.18291(18) -H74 H 0.79100 -0.00450 0.20530 -C51 C 0.9312(2) 0.0214(2) 0.1226(2) -H75 H 0.94350 -0.04570 0.10340 -C52 C 1.0038(2) 0.0932(3) 0.0899(2) -H76 H 1.06670 0.07550 0.04900 -C53 C 0.9853(2) 0.1909(2) 0.11636(17) -H77 H 1.03480 0.24110 0.09310 -C54 C -0.0224(2) 0.53592(19) 0.92792(18) -H78 H -0.03730 0.56040 0.87830 -C55 C 0.07451(19) 0.4906(2) 0.92551(17) -H79 H 0.12600 0.48410 0.87380 -C56 C 0.09688(18) 0.45497(19) 0.99665(18) -H80 H 0.16350 0.42410 0.99410 -C54A C 0.0224(2) 0.46408(19) 1.07208(18) -H78A H 0.03730 0.43960 1.12170 -C55A C -0.07451(19) 0.5094(2) 1.07449(17) -H79A H -0.12600 0.51590 1.12620 -C56A C -0.09688(18) 0.54503(19) 1.00335(18) -H80A H -0.16350 0.57590 1.00590 -#END diff --git a/cell2mol/test/error_2/GAPZEC.search6.cif b/cell2mol/test/error_2/GAPZEC.search6.cif deleted file mode 100755 index cb806b695..000000000 --- a/cell2mol/test/error_2/GAPZEC.search6.cif +++ /dev/null @@ -1,121 +0,0 @@ - -####################################################################### -# -# Cambridge Crystallographic Data Centre -# CCDC -# -####################################################################### -# -# If this CIF has been generated from an entry in the Cambridge -# Structural Database, then it will include bibliographic, chemical, -# crystal, experimental, refinement or atomic coordinate data resulting -# from the CCDC's data processing and validation procedures. -# -####################################################################### - -data_CSD_CIF_GAPZEC -_audit_creation_date 1988-10-10 -_audit_creation_method CSD-ConQuest-V1 -_database_code_CSD GAPZEC -_chemical_formula_sum 'C6 H22 Cl1 Co1 N4 O4' -_chemical_formula_moiety -; -C6 H18 Co1 N4 O2 1+,Cl1 1-,2(H2 O1) -; -_journal_coden_Cambridge 274 -_journal_volume 14 -_journal_year 1987 -_journal_page_first 55 -_journal_name_full 'Finn.Chem.Lett. ' -loop_ -_publ_author_name -"R.Kivekas" -"A.Pajunen" -_chemical_name_systematic -; -trans-bis(1,3-Diamino-2-propanolato-O,N,N')-cobalt(iii) chloride dihydrate -; -_cell_volume 1263.150 -_exptl_crystal_colour 'purple' -_exptl_crystal_density_diffrn 1.62 -_diffrn_ambient_temperature ? -_diffrn_special_details -; -The study was carried out at room temperature,in the range 283-303K - -; -#These two values have been output from a single CSD field. -_refine_ls_R_factor_gt 0.035 -_refine_ls_wR_factor_gt 0.035 -_symmetry_cell_setting monoclinic -_symmetry_space_group_name_H-M 'C 2/c' -_symmetry_Int_Tables_number 15 -loop_ -_symmetry_equiv_pos_site_id -_symmetry_equiv_pos_as_xyz -1 x,y,z -2 1/2+x,1/2+y,z -3 -x,y,1/2-z -4 1/2-x,1/2+y,1/2-z -5 -x,-y,-z -6 -1/2-x,-1/2-y,-z -7 x,-y,-1/2+z -8 -1/2+x,-1/2-y,-1/2+z -_cell_length_a 12.669(2) -_cell_length_b 11.155(2) -_cell_length_c 9.538(2) -_cell_angle_alpha 90 -_cell_angle_beta 110.43(1) -_cell_angle_gamma 90 -_cell_formula_units_Z 4 -loop_ -_atom_type_symbol -_atom_type_radius_bond -C 0.68 -H 0.23 -Cl 0.99 -Co 1.33 -N 0.68 -O 0.68 -loop_ -_atom_site_label -_atom_site_type_symbol -_atom_site_fract_x -_atom_site_fract_y -_atom_site_fract_z -Co1 Co 0.50000 0.5001(1) 0.25000 -Cl1 Cl 0.50000 0.8936(1) 0.25000 -O1 O 0.6120(2) 0.5007(3) 0.4446(2) -O2 O 0.5182(4) 0.1505(3) 0.4198(5) -N1 N 0.5953(3) 0.3810(3) 0.1999(4) -N2 N 0.5961(3) 0.6196(3) 0.2015(4) -C1 C 0.7079(3) 0.3840(4) 0.3203(4) -C2 C 0.7121(2) 0.4982(4) 0.4097(3) -C3 C 0.7109(3) 0.6102(4) 0.3182(4) -H1 H 0.602(3) 0.408(4) 0.111(5) -H2 H 0.567(4) 0.312(4) 0.190(5) -H3 H 0.767(4) 0.378(4) 0.277(5) -H4 H 0.717(4) 0.305(4) 0.388(5) -H5 H 0.776(3) 0.498(4) 0.492(5) -H6 H 0.777(3) 0.610(4) 0.276(4) -H7 H 0.727(3) 0.685(4) 0.385(5) -H8 H 0.602(4) 0.603(4) 0.115(5) -H9 H 0.572(3) 0.696(4) 0.194(5) -H10 H 0.50500 0.06800 0.36200 -H11 H 0.53800 0.12500 0.52400 -O1B O 0.3880(2) 0.5007(3) 0.0554(2) -N1B N 0.4047(3) 0.3810(3) 0.3001(4) -N2B N 0.4039(3) 0.6196(3) 0.2985(4) -C2B C 0.2879(2) 0.4982(4) 0.0903(3) -C1B C 0.2921(3) 0.3840(4) 0.1797(4) -H1B H 0.398(3) 0.408(4) 0.389(5) -H2B H 0.433(4) 0.312(4) 0.310(5) -C3B C 0.2891(3) 0.6102(4) 0.1818(4) -H8B H 0.398(4) 0.603(4) 0.385(5) -H9B H 0.428(3) 0.696(4) 0.306(5) -H5B H 0.224(3) 0.498(4) 0.008(5) -H3B H 0.233(4) 0.378(4) 0.223(5) -H4B H 0.283(4) 0.305(4) 0.112(5) -H6B H 0.223(3) 0.610(4) 0.224(4) -H7B H 0.273(3) 0.685(4) 0.115(5) -#END diff --git a/cell2mol/test/error_2/HAFRAI.search5.cif b/cell2mol/test/error_2/HAFRAI.search5.cif deleted file mode 100755 index 3eaf3a7fc..000000000 --- a/cell2mol/test/error_2/HAFRAI.search5.cif +++ /dev/null @@ -1,163 +0,0 @@ - -####################################################################### -# -# Cambridge Crystallographic Data Centre -# CCDC -# -####################################################################### -# -# If this CIF has been generated from an entry in the Cambridge -# Structural Database, then it will include bibliographic, chemical, -# crystal, experimental, refinement or atomic coordinate data resulting -# from the CCDC's data processing and validation procedures. -# -####################################################################### - -data_CSD_CIF_HAFRAI -_audit_creation_date 2003-08-21 -_audit_creation_method CSD-ConQuest-V1 -_database_code_CSD HAFRAI -_database_code_depnum_ccdc_archive 'CCDC 210769' -_chemical_formula_sum 'C40 H42 B1 Fe1' -_chemical_formula_moiety -; -C16 H22 Fe1 1+,C24 H20 B1 1- -; -_journal_coden_Cambridge 579 -_journal_volume 22 -_journal_year 2003 -_journal_page_first 1487 -_journal_name_full 'Organometallics ' -loop_ -_publ_author_name -"R.LeSuer" -"R.Basta" -"A.M.Arif" -"W.E.Geiger" -"R.D.Ernst" -_chemical_name_systematic -; -bis(\h^5^-6,6-Dimethylcyclohexa-2,4-dienyl)-iron(iii) tetraphenylborate -; -_cell_volume 1579.359 -_exptl_crystal_colour 'dark green' -_exptl_crystal_density_diffrn 1.239 -_exptl_crystal_description 'plate' -_exptl_crystal_preparation 'acetonitrile' -_diffrn_ambient_temperature 200 -#These two values have been output from a single CSD field. -_refine_ls_R_factor_gt 0.0409 -_refine_ls_wR_factor_gt 0.0409 -_symmetry_cell_setting monoclinic -_symmetry_space_group_name_H-M 'P 21' -_symmetry_Int_Tables_number 4 -loop_ -_symmetry_equiv_pos_site_id -_symmetry_equiv_pos_as_xyz -1 x,y,z -2 -x,1/2+y,-z -_cell_length_a 9.9006(2) -_cell_length_b 10.4128(2) -_cell_length_c 15.3443(3) -_cell_angle_alpha 90 -_cell_angle_beta 93.2415(15) -_cell_angle_gamma 90 -_cell_formula_units_Z 2 -loop_ -_atom_type_symbol -_atom_type_radius_bond -C 0.68 -H 0.23 -B 0.83 -Fe 1.34 -loop_ -_atom_site_label -_atom_site_type_symbol -_atom_site_fract_x -_atom_site_fract_y -_atom_site_fract_z -Fe1 Fe 0.74406(3) 1.27160(4) 0.21769(2) -C1 C 0.6317(3) 1.4420(3) 0.1941(2) -H1 H 0.566(4) 1.465(4) 0.220(2) -C2 C 0.7615(4) 1.4707(3) 0.2285(2) -H2 H 0.782(3) 1.512(4) 0.288(2) -C3 C 0.8759(3) 1.4218(3) 0.1886(2) -H3 H 0.961(3) 1.446(3) 0.212(2) -C4 C 0.8572(3) 1.3447(3) 0.1143(2) -H4 H 0.925(3) 1.305(3) 0.0896(17) -C5 C 0.7268(3) 1.3177(3) 0.08162(19) -H5 H 0.717(3) 1.256(4) 0.041(2) -C6 C 0.6106(3) 1.4069(3) 0.09765(17) -C7 C 0.6148(4) 1.5281(3) 0.04015(19) -H6 H 0.60750 1.50330 -0.02150 -H7 H 0.70040 1.57350 0.05270 -H8 H 0.53920 1.58470 0.05270 -C8 C 0.4743(3) 1.3398(3) 0.0793(2) -H9 H 0.47160 1.26090 0.11400 -H10 H 0.46300 1.31860 0.01710 -H11 H 0.40110 1.39720 0.09510 -C9 C 0.5887(3) 1.1716(3) 0.27790(19) -H12 H 0.497(4) 1.183(4) 0.269(2) -C10 C 0.6455(4) 1.0946(3) 0.2161(2) -H13 H 0.602(4) 1.064(5) 0.167(3) -C11 C 0.7886(4) 1.0765(4) 0.2200(3) -H14 H 0.830(3) 1.030(4) 0.173(2) -C12 C 0.8691(3) 1.1339(3) 0.2862(2) -H15 H 0.973(4) 1.139(4) 0.278(3) -C13 C 0.8098(3) 1.2088(3) 0.3472(2) -H16 H 0.860(3) 1.266(4) 0.3846(19) -C14 C 0.6615(3) 1.1911(3) 0.36652(19) -C15 C 0.6442(4) 1.0695(4) 0.4233(2) -H17 H 0.67710 0.99410 0.39260 -H18 H 0.54830 1.05790 0.43400 -H19 H 0.69630 1.07960 0.47910 -C16 C 0.6059(4) 1.3074(4) 0.4135(2) -H20 H 0.50970 1.29420 0.42240 -H21 H 0.61710 1.38460 0.37810 -H22 H 0.65540 1.31800 0.47020 -C17 C 0.2143(2) 0.9485(3) 0.26058(16) -C18 C 0.2356(3) 1.0164(3) 0.33970(18) -H23 H 0.24890 0.96950 0.39260 -C19 C 0.2378(3) 1.1497(3) 0.3428(2) -H24 H 0.25090 1.19190 0.39750 -C20 C 0.2212(3) 1.2216(3) 0.2675(2) -H25 H 0.22180 1.31280 0.27000 -C21 C 0.2038(3) 1.1587(3) 0.1886(2) -H26 H 0.19420 1.20670 0.13590 -C22 C 0.2004(3) 1.0251(3) 0.18578(17) -H27 H 0.18790 0.98420 0.13060 -C23 C 0.3884(2) 0.7658(3) 0.26535(14) -C24 C 0.4599(3) 0.7287(3) 0.34305(18) -H28 H 0.41060 0.70570 0.39210 -C25 C 0.6012(3) 0.7245(3) 0.3504(2) -H29 H 0.64600 0.69970 0.40410 -C26 C 0.6760(3) 0.7558(3) 0.2806(2) -H30 H 0.77210 0.75540 0.28610 -C27 C 0.6088(3) 0.7880(3) 0.20246(19) -H31 H 0.65880 0.80680 0.15300 -C28 C 0.4692(3) 0.7929(3) 0.19572(17) -H32 H 0.42590 0.81580 0.14110 -C29 C 0.1431(3) 0.7195(3) 0.33384(16) -C30 C 0.0421(2) 0.7768(4) 0.38048(15) -H33 H 0.02550 0.86610 0.37310 -C31 C -0.0357(3) 0.7075(4) 0.43785(19) -H34 H -0.10290 0.75020 0.46890 -C32 C -0.0149(3) 0.5771(4) 0.4493(2) -H35 H -0.06750 0.52970 0.48800 -C33 C 0.0828(4) 0.5168(3) 0.4039(2) -H36 H 0.09770 0.42720 0.41100 -C34 C 0.1596(3) 0.5870(3) 0.34756(18) -H37 H 0.22650 0.54320 0.31690 -C35 C 0.1553(3) 0.7295(2) 0.16740(16) -C36 C 0.2096(3) 0.6230(3) 0.12560(17) -H38 H 0.29640 0.59240 0.14540 -C37 C 0.1408(3) 0.5604(3) 0.05600(18) -H39 H 0.18060 0.48800 0.03000 -C38 C 0.0154(3) 0.6031(3) 0.02473(19) -H40 H -0.03120 0.56110 -0.02300 -C39 C -0.0412(3) 0.7079(3) 0.0640(2) -H41 H -0.12760 0.73820 0.04310 -C40 C 0.0269(2) 0.7697(4) 0.13391(15) -H42 H -0.01470 0.84130 0.15990 -B1 B 0.2249(3) 0.7908(3) 0.25735(16) -#END diff --git a/cell2mol/test/error_2/HESMIB.search3.cif b/cell2mol/test/error_2/HESMIB.search3.cif deleted file mode 100755 index 244425c9a..000000000 --- a/cell2mol/test/error_2/HESMIB.search3.cif +++ /dev/null @@ -1,113 +0,0 @@ - -####################################################################### -# -# Cambridge Crystallographic Data Centre -# CCDC -# -####################################################################### -# -# If this CIF has been generated from an entry in the Cambridge -# Structural Database, then it will include bibliographic, chemical, -# crystal, experimental, refinement or atomic coordinate data resulting -# from the CCDC's data processing and validation procedures. -# -####################################################################### - -data_CSD_CIF_HESMIB -_audit_creation_date 1995-04-30 -_audit_creation_method CSD-ConQuest-V1 -_database_code_CSD HESMIB -_chemical_formula_sum 'C5 H16 Cr1 I1 N4 O3' -_chemical_formula_moiety -; -C5 H16 Cr1 N4 O3 1+,I1 1- -; -_journal_coden_Cambridge 1094 -_journal_volume 5 -_journal_year 1994 -_journal_page_first 265 -_journal_name_full 'Struct.Chem. ' -loop_ -_publ_author_name -"I.Bernal" -"J.Cai" -"J.Certrullo" -"S.S.Massoud" -_chemical_name_systematic -; -Carbonato-bis(ethylenediamine)-chromium(iii) iodide -; -_cell_volume 1105.753 -_exptl_crystal_density_diffrn 2.157 -_diffrn_ambient_temperature ? -_diffrn_special_details -; -The study was carried out at room temperature,in the range 283-303K - -; -#These two values have been output from a single CSD field. -_refine_ls_R_factor_gt 0.1129 -_refine_ls_wR_factor_gt 0.1129 -_symmetry_cell_setting monoclinic -_symmetry_space_group_name_H-M 'P 21/c' -_symmetry_Int_Tables_number 14 -loop_ -_symmetry_equiv_pos_site_id -_symmetry_equiv_pos_as_xyz -1 x,y,z -2 -x,1/2+y,1/2-z -3 -x,-y,-z -4 x,-1/2-y,-1/2+z -_cell_length_a 7.298(4) -_cell_length_b 8.622(8) -_cell_length_c 17.577(6) -_cell_angle_alpha 90 -_cell_angle_beta 91.22(4) -_cell_angle_gamma 90 -_cell_formula_units_Z 4 -loop_ -_atom_type_symbol -_atom_type_radius_bond -C 0.68 -H 0.23 -Cr 1.30 -I 1.40 -N 0.68 -O 0.68 -loop_ -_atom_site_label -_atom_site_type_symbol -_atom_site_fract_x -_atom_site_fract_y -_atom_site_fract_z -I1 I 0.2039(3) 0.4674(2) 0.38621(9) -Cr1 Cr 0.1256(5) 0.4629(4) 0.1300(2) -O1 O -0.090(2) 0.527(2) 0.0803(7) -O2 O -0.087(2) 0.397(2) 0.1803(8) -O3 O -0.360(2) 0.470(2) 0.1305(8) -N1 N 0.137(3) 0.647(2) 0.189(1) -N2 N 0.299(3) 0.564(2) 0.066(1) -N3 N 0.308(3) 0.364(2) 0.192(1) -N4 N 0.134(3) 0.269(2) 0.068(1) -C1 C 0.296(4) 0.748(3) 0.167(2) -C2 C 0.298(4) 0.730(3) 0.071(1) -C3 C 0.304(4) 0.199(3) 0.178(1) -C4 C 0.287(3) 0.175(3) 0.087(1) -C5 C -0.204(5) 0.465(3) 0.130(1) -H1 H 0.15120 0.61940 0.24110 -H2 H 0.02630 0.70390 0.18140 -H3 H 0.40720 0.71190 0.19020 -H4 H 0.27460 0.85300 0.18190 -H5 H 0.40510 0.77340 0.04990 -H6 H 0.19250 0.77490 0.04690 -H7 H 0.41780 0.52720 0.08020 -H8 H 0.27150 0.53570 0.01480 -H9 H 0.28370 0.38330 0.24440 -H10 H 0.42510 0.40280 0.18060 -H11 H 0.20120 0.15460 0.20210 -H12 H 0.41330 0.15150 0.19730 -H13 H 0.26440 0.06910 0.07460 -H14 H 0.39380 0.20820 0.06250 -H15 H 0.02580 0.21240 0.07580 -H16 H 0.14080 0.29700 0.01570 -#END diff --git a/cell2mol/test/error_2/IFUFIY.search2.cif b/cell2mol/test/error_2/IFUFIY.search2.cif deleted file mode 100755 index f673d406b..000000000 --- a/cell2mol/test/error_2/IFUFIY.search2.cif +++ /dev/null @@ -1,198 +0,0 @@ - -####################################################################### -# -# Cambridge Crystallographic Data Centre -# CCDC -# -####################################################################### -# -# If this CIF has been generated from an entry in the Cambridge -# Structural Database, then it will include bibliographic, chemical, -# crystal, experimental, refinement or atomic coordinate data resulting -# from the CCDC's data processing and validation procedures. -# -####################################################################### - -data_CSD_CIF_IFUFIY -_audit_creation_date 2002-09-05 -_audit_creation_method CSD-ConQuest-V1 -_database_code_CSD IFUFIY -_database_code_depnum_ccdc_archive 'CCDC 167740' -_chemical_formula_sum 'C39 H63 Cs1 Mn1 O12' -_chemical_formula_moiety -; -C24 H48 Cs1 O12 1+,C15 H15 Mn1 1- -; -_journal_coden_Cambridge 1220 -_journal_volume 8 -_journal_year 2002 -_journal_page_first 2526 -_journal_name_full 'Chem.-Eur.J. ' -loop_ -_publ_author_name -"S.Kheradmandan" -"H.W.Schmalle" -"H.Jacobsen" -"O.Blacque" -"T.Fox" -"H.Berke" -"M.Gross" -"S.Decurtins" -_chemical_name_systematic -; -bis(18-Crown-6)-cesium tris(\h^2^-cyclopentadienyl)-manganese(ii) -; -_cell_volume 2166.343 -_exptl_crystal_colour 'pink' -_exptl_crystal_density_diffrn 1.398 -_exptl_crystal_description 'plate' -_diffrn_ambient_temperature 183 -#These two values have been output from a single CSD field. -_refine_ls_R_factor_gt 0.0318 -_refine_ls_wR_factor_gt 0.0318 -_symmetry_cell_setting triclinic -_symmetry_space_group_name_H-M 'P -1' -_symmetry_Int_Tables_number 2 -loop_ -_symmetry_equiv_pos_site_id -_symmetry_equiv_pos_as_xyz -1 x,y,z -2 -x,-y,-z -_cell_length_a 11.8868(9) -_cell_length_b 13.6526(10) -_cell_length_c 15.6473(12) -_cell_angle_alpha 104.484(8) -_cell_angle_beta 107.242(9) -_cell_angle_gamma 106.417(9) -_cell_formula_units_Z 2 -loop_ -_atom_type_symbol -_atom_type_radius_bond -C 0.68 -H 0.23 -Cs 2.52 -Mn 1.35 -O 0.68 -loop_ -_atom_site_label -_atom_site_type_symbol -_atom_site_fract_x -_atom_site_fract_y -_atom_site_fract_z -Cs1 Cs 0.683727(18) 0.897593(18) 0.732917(15) -Mn1 Mn 0.81866(4) 0.54921(4) 1.18630(3) -O1 O 0.62532(17) 1.12637(16) 0.73100(14) -O2 O 0.82555(16) 1.09423(16) 0.67503(13) -O3 O 0.69804(17) 0.88739(16) 0.51794(13) -O4 O 0.54252(17) 0.69360(16) 0.52434(13) -O5 O 0.39377(17) 0.71720(17) 0.63607(13) -O6 O 0.39907(17) 0.93539(17) 0.65902(15) -C1 C 0.7060(3) 1.2083(3) 0.7106(2) -H1 H 0.71770 1.28200 0.75070 -H2 H 0.66690 1.19870 0.64220 -C2 C 0.8326(3) 1.1973(3) 0.7320(2) -H3 H 0.89070 1.25670 0.72140 -H4 H 0.87030 1.20750 0.80070 -C3 C 0.7982(3) 1.0806(3) 0.5767(2) -H5 H 0.86110 1.14240 0.57220 -H6 H 0.71200 1.08000 0.54600 -C4 C 0.8042(3) 0.9752(3) 0.5264(2) -H7 H 0.80200 0.97120 0.46190 -H8 H 0.88470 0.97050 0.56340 -C5 C 0.7009(3) 0.7840(3) 0.4745(2) -H9 H 0.76640 0.77070 0.52100 -H10 H 0.72350 0.78340 0.41840 -C6 C 0.5733(3) 0.6962(3) 0.44307(19) -H11 H 0.50770 0.71010 0.39710 -H12 H 0.57370 0.62430 0.41010 -C7 C 0.4201(3) 0.6138(3) 0.4958(2) -H13 H 0.41660 0.54050 0.46240 -H14 H 0.35560 0.62970 0.45090 -C8 C 0.3915(3) 0.6152(3) 0.5839(2) -H15 H 0.30610 0.55780 0.56390 -H16 H 0.45490 0.59640 0.62690 -C9 C 0.2897(3) 0.7432(3) 0.5892(2) -H17 H 0.20780 0.68320 0.57270 -H18 H 0.29360 0.75170 0.52900 -C10 C 0.2981(3) 0.8472(3) 0.6550(2) -H19 H 0.21670 0.85720 0.63120 -H20 H 0.31400 0.84460 0.72000 -C11 C 0.4183(3) 1.0376(3) 0.7246(2) -H21 H 0.45930 1.04240 0.79140 -H22 H 0.33510 1.04410 0.71590 -C12 C 0.5016(3) 1.1285(3) 0.7068(2) -H23 H 0.46490 1.11930 0.63820 -H24 H 0.50660 1.19990 0.74620 -O7 O 0.89398(16) 1.10468(16) 0.92657(12) -O8 O 1.02191(17) 0.97850(16) 0.84500(13) -O9 O 0.86477(17) 0.77705(17) 0.69300(14) -O10 O 0.68385(17) 0.66266(17) 0.76136(14) -O11 O 0.63279(17) 0.79090(17) 0.90740(14) -O12 O 0.64015(18) 1.00809(17) 0.92241(13) -C13 C 1.0285(2) 1.1328(2) 0.9624(2) -H25 H 1.05300 1.09730 1.00890 -H26 H 1.07380 1.21320 0.99590 -C14 C 1.0652(3) 1.0953(2) 0.8804(2) -H27 H 1.02650 1.11950 0.82850 -H28 H 1.15910 1.12820 0.90200 -C15 C 1.0490(3) 0.9392(3) 0.7637(2) -H29 H 1.14240 0.96930 0.78130 -H30 H 1.00820 0.96320 0.71230 -C16 C 0.9989(2) 0.8168(3) 0.7287(2) -H31 H 1.02660 0.78820 0.67730 -H32 H 1.03220 0.79250 0.78210 -C17 C 0.8057(3) 0.6611(3) 0.6647(2) -H33 H 0.86200 0.62700 0.64550 -H34 H 0.72440 0.63310 0.60810 -C18 C 0.7793(3) 0.6278(3) 0.7443(2) -H35 H 0.75000 0.54710 0.72540 -H36 H 0.85830 0.66190 0.80360 -C19 C 0.6474(3) 0.6248(3) 0.8304(2) -H37 H 0.72460 0.64390 0.88810 -H38 H 0.60250 0.54410 0.80270 -C20 C 0.5623(3) 0.6761(3) 0.8582(2) -H39 H 0.48840 0.66220 0.80010 -H40 H 0.52970 0.64380 0.90040 -C21 C 0.5634(3) 0.8425(3) 0.9486(2) -H41 H 0.54540 0.81270 0.99670 -H42 H 0.48110 0.82870 0.89810 -C22 C 0.6418(3) 0.9628(3) 0.9954(2) -H43 H 0.60630 0.99840 1.03810 -H44 H 0.73070 0.97580 1.03480 -C23 C 0.7156(3) 1.1231(3) 0.9595(2) -H45 H 0.69240 1.16040 1.01050 -H46 H 0.69450 1.15200 0.90730 -C24 C 0.8573(3) 1.1513(3) 1.0000(2) -H47 H 0.90350 1.23190 1.02730 -H48 H 0.88000 1.12270 1.05220 -C25 C 0.8681(3) 0.3974(3) 1.1882(2) -H49 H 0.81480 0.34910 1.12380 -C26 C 0.9873(3) 0.4819(3) 1.2186(3) -H50 H 1.02840 0.50190 1.17830 -C27 C 1.0349(3) 0.5316(3) 1.3184(3) -H51 H 1.11390 0.59150 1.35830 -C28 C 0.9453(3) 0.4772(3) 1.3485(2) -H52 H 0.95450 0.49310 1.41350 -C29 C 0.8416(3) 0.3968(3) 1.2703(3) -H53 H 0.76630 0.34980 1.27130 -C30 C 0.7180(3) 0.6055(3) 1.2872(2) -H54 H 0.68980 0.54010 1.29940 -C31 C 0.8459(3) 0.6840(3) 1.3273(2) -H55 H 0.91820 0.68080 1.37140 -C32 C 0.8453(3) 0.7673(3) 1.2892(2) -H56 H 0.91740 0.83020 1.30280 -C33 C 0.7193(3) 0.7407(3) 1.2278(2) -H57 H 0.69160 0.78310 1.19280 -C34 C 0.6411(3) 0.6420(3) 1.2265(2) -H58 H 0.55150 0.60590 1.19070 -C35 C 0.6745(3) 0.5084(3) 1.0249(2) -H59 H 0.60480 0.51520 1.04020 -C36 C 0.7931(3) 0.5949(3) 1.0520(2) -H60 H 0.81810 0.66990 1.08890 -C37 C 0.8661(3) 0.5478(3) 1.0136(2) -H61 H 0.95010 0.58610 1.01970 -C38 C 0.7961(4) 0.4369(4) 0.9654(2) -H62 H 0.82380 0.38590 0.93290 -C39 C 0.6786(3) 0.4121(3) 0.9722(2) -H63 H 0.61210 0.34140 0.94540 -#END diff --git a/cell2mol/test/error_2/ITEREF.search2.cif b/cell2mol/test/error_2/ITEREF.search2.cif deleted file mode 100755 index 65f60f08c..000000000 --- a/cell2mol/test/error_2/ITEREF.search2.cif +++ /dev/null @@ -1,122 +0,0 @@ - -####################################################################### -# -# Cambridge Crystallographic Data Centre -# CCDC -# -####################################################################### -# -# If this CIF has been generated from an entry in the Cambridge -# Structural Database, then it will include bibliographic, chemical, -# crystal, experimental, refinement or atomic coordinate data resulting -# from the CCDC's data processing and validation procedures. -# -####################################################################### - -data_CSD_CIF_ITEREF -_audit_creation_date 2011-08-04 -_audit_creation_method CSD-ConQuest-V1 -_database_code_CSD ITEREF -_database_code_depnum_ccdc_archive 'CCDC 806667' -_chemical_formula_sum 'C14 H16 Mn1 N9 O1' -_chemical_formula_moiety -; -C14 H16 Mn1 N9 O1 -; -_journal_coden_Cambridge 222 -_journal_volume 40 -_journal_year 2011 -_journal_page_first 5762 -_journal_name_full 'Dalton Trans. ' -loop_ -_publ_author_name -"Jong Won Shin" -"S.R.Rowthu" -"Min Young Hyun" -"Young Joo Song" -"Cheal Kim" -"Bong Gon Kim" -"Kil Sik Min" -_chemical_name_systematic -; -Diazido-(2-(bis((pyridin-2-yl)methyl)amino)ethanolato)-manganese(iii) -; -_cell_volume 1569.342 -_exptl_crystal_density_diffrn 1.614 -_diffrn_ambient_temperature 293 -#These two values have been output from a single CSD field. -_refine_ls_R_factor_gt 0.0436 -_refine_ls_wR_factor_gt 0.0436 -_symmetry_cell_setting monoclinic -_symmetry_space_group_name_H-M 'P 21/c' -_symmetry_Int_Tables_number 14 -loop_ -_symmetry_equiv_pos_site_id -_symmetry_equiv_pos_as_xyz -1 x,y,z -2 -x,1/2+y,1/2-z -3 -x,-y,-z -4 x,-1/2-y,-1/2+z -_cell_length_a 8.6742(8) -_cell_length_b 13.3698(13) -_cell_length_c 13.6701(12) -_cell_angle_alpha 90 -_cell_angle_beta 98.150(2) -_cell_angle_gamma 90 -_cell_formula_units_Z 4 -loop_ -_atom_type_symbol -_atom_type_radius_bond -C 0.68 -H 0.23 -Mn 1.52 -N 0.68 -O 0.68 -loop_ -_atom_site_label -_atom_site_type_symbol -_atom_site_fract_x -_atom_site_fract_y -_atom_site_fract_z -Mn1 Mn 0.35081(6) 0.61305(4) 0.21034(4) -C1 C 0.0202(5) 0.5535(3) 0.2749(3) -H1 H 0.00630 0.51680 0.21650 -C2 C -0.0970(4) 0.5530(3) 0.3337(3) -H2 H -0.18730 0.51600 0.31570 -C3 C -0.0768(4) 0.6091(3) 0.4203(3) -H3 H -0.15280 0.60930 0.46200 -C4 C 0.0578(4) 0.6644(3) 0.4435(3) -H4 H 0.07150 0.70510 0.49920 -C5 C 0.1726(4) 0.6586(3) 0.3825(3) -C6 C 0.3286(4) 0.7081(3) 0.4094(3) -H5 H 0.31680 0.76830 0.44720 -H6 H 0.39850 0.66320 0.45010 -C7 C 0.5665(4) 0.7514(3) 0.3426(2) -H7 H 0.60860 0.70620 0.39520 -H8 H 0.58440 0.81920 0.36660 -C8 C 0.6516(4) 0.7355(3) 0.2545(3) -C9 C 0.7864(4) 0.7855(3) 0.2440(3) -H9 H 0.82520 0.83450 0.28910 -C10 C 0.8641(5) 0.7614(3) 0.1648(3) -H10 H 0.95670 0.79340 0.15700 -C11 C 0.8022(4) 0.6896(3) 0.0977(3) -H11 H 0.85280 0.67190 0.04470 -C12 C 0.6633(5) 0.6448(3) 0.1114(3) -H12 H 0.62000 0.59760 0.06560 -C13 C 0.3157(4) 0.8224(3) 0.2692(3) -H13 H 0.36950 0.88330 0.29270 -H14 H 0.20980 0.82590 0.28410 -C14 C 0.3150(5) 0.8118(3) 0.1591(3) -H15 H 0.24740 0.86190 0.12440 -H16 H 0.41940 0.82180 0.14320 -O1 O 0.2615(3) 0.71489(18) 0.12901(17) -N1 N 0.1538(3) 0.6048(2) 0.2988(2) -N2 N 0.3964(3) 0.7341(2) 0.3182(2) -N3 N 0.5882(3) 0.6663(2) 0.1881(2) -N4 N 0.4588(4) 0.5118(2) 0.3030(2) -N5 N 0.4080(4) 0.4756(2) 0.3727(2) -N6 N 0.3660(4) 0.4390(3) 0.4402(3) -N7 N 0.2859(4) 0.5128(2) 0.1028(2) -N8 N 0.2063(4) 0.5418(2) 0.0275(3) -N9 N 0.1313(5) 0.5660(3) -0.0450(3) -#END diff --git a/cell2mol/test/error_2/JEDJAE.search2.cif b/cell2mol/test/error_2/JEDJAE.search2.cif deleted file mode 100755 index e9f2f6878..000000000 --- a/cell2mol/test/error_2/JEDJAE.search2.cif +++ /dev/null @@ -1,126 +0,0 @@ - -####################################################################### -# -# Cambridge Crystallographic Data Centre -# CCDC -# -####################################################################### -# -# If this CIF has been generated from an entry in the Cambridge -# Structural Database, then it will include bibliographic, chemical, -# crystal, experimental, refinement or atomic coordinate data resulting -# from the CCDC's data processing and validation procedures. -# -####################################################################### - -data_CSD_CIF_JEDJAE -_audit_creation_date 2006-04-10 -_audit_creation_method CSD-ConQuest-V1 -_database_code_CSD JEDJAE -_database_code_depnum_ccdc_archive 'CCDC 295910' -_chemical_formula_sum 'C8 H28 Mn1 Na5 O24' -_chemical_formula_moiety -; -5(Na1 1+),C8 H4 Mn1 O12 5-,12(H2 O1) -; -_journal_coden_Cambridge 155 -_journal_volume 359 -_journal_year 2006 -_journal_page_first 374 -_journal_name_full 'Inorg.Chim.Acta ' -loop_ -_publ_author_name -"S.Kaizaki" -"M.Urade" -"A.Fuyuhiro" -"Y.Abe" -_chemical_name_systematic -; -Penta-sodium bis(L-tartrato)-manganese(iii) dodecahydrate -; -_cell_volume 1233.526 -_exptl_crystal_colour 'brown' -_exptl_crystal_density_diffrn 1.826 -_exptl_crystal_description 'column' -_diffrn_ambient_temperature 296.2 -#These two values have been output from a single CSD field. -_refine_ls_R_factor_gt 0.0313 -_refine_ls_wR_factor_gt 0.0313 -_symmetry_cell_setting monoclinic -_symmetry_space_group_name_H-M 'C 2' -_symmetry_Int_Tables_number 5 -loop_ -_symmetry_equiv_pos_site_id -_symmetry_equiv_pos_as_xyz -1 x,y,z -2 -x,y,-z -3 1/2+x,1/2+y,z -4 1/2-x,1/2+y,-z -_cell_length_a 20.279(2) -_cell_length_b 6.860(2) -_cell_length_c 9.620(2) -_cell_angle_alpha 90 -_cell_angle_beta 112.82(1) -_cell_angle_gamma 90 -_cell_formula_units_Z 2 -loop_ -_atom_type_symbol -_atom_type_radius_bond -C 0.68 -H 0.23 -Mn 1.35 -Na 0.97 -O 0.68 -loop_ -_atom_site_label -_atom_site_type_symbol -_atom_site_fract_x -_atom_site_fract_y -_atom_site_fract_z -Mn1 Mn 0.00000 0.00000 0.00000 -O1 O -0.09106(10) 0.0036(5) -0.2383(2) -O2 O -0.2093(1) -0.0003(5) -0.2989(2) -O3 O -0.0630(1) -0.1085(4) 0.3209(2) -O4 O -0.1703(1) 0.0266(5) 0.2153(3) -O5 O -0.0654(1) 0.1848(3) 0.0202(2) -O6 O -0.0565(1) -0.1906(3) 0.0494(2) -C1 C -0.1460(1) 0.0258(4) -0.2075(3) -C2 C -0.1316(1) 0.0833(4) -0.0433(3) -C3 C -0.1208(1) -0.1062(5) 0.0485(3) -C4 C -0.1170(2) -0.0599(5) 0.2090(3) -H1 H -0.16980 0.15850 -0.03760 -H2 H -0.15960 -0.19200 -0.00050 -Na1 Na -0.26202(7) 0.2468(3) -0.5077(2) -Na2 Na 0.02387(7) -0.3146(2) 0.2808(1) -Na3 Na 0.00000 0.1704(3) 0.50000 -O7 O -0.2224(1) 0.4884(5) -0.3233(2) -H3 H -0.17480 0.47020 -0.23350 -H4 H -0.25080 0.52770 -0.26640 -O8 O 0.0825(1) -0.4839(4) 0.1440(2) -H5 H 0.07370 -0.38580 0.08240 -H6 H 0.07510 -0.60800 0.09340 -O9 O 0.1265(1) 0.2193(5) 0.5065(3) -H7 H 0.12190 0.13210 0.43100 -H8 H 0.13900 0.15950 0.59820 -O10 O -0.0405(1) 0.3897(4) 0.2858(3) -H9 H -0.03630 0.29840 0.21420 -H10 H -0.08550 0.42870 0.26130 -O11 O -0.3755(1) 0.1501(5) -0.4940(3) -H11 H -0.37750 0.02750 -0.47050 -H12 H -0.39550 0.25110 -0.43150 -O12 O -0.3118(2) -0.0392(8) -0.1663(4) -H13 H -0.27860 0.01460 -0.20420 -H14 H -0.31340 0.01200 -0.08870 -O1A O 0.09106(10) 0.0036(5) 0.2383(2) -O2A O 0.2093(1) -0.0003(5) 0.2989(2) -O3A O 0.0630(1) -0.1085(4) -0.3209(2) -O4A O 0.1703(1) 0.0266(5) -0.2153(3) -O5A O 0.0654(1) 0.1848(3) -0.0202(2) -O6A O 0.0565(1) -0.1906(3) -0.0494(2) -C1A C 0.1460(1) 0.0258(4) 0.2075(3) -C2A C 0.1316(1) 0.0833(4) 0.0433(3) -C3A C 0.1208(1) -0.1062(5) -0.0485(3) -C4A C 0.1170(2) -0.0599(5) -0.2090(3) -H1A H 0.16980 0.15850 0.03760 -H2A H 0.15960 -0.19200 0.00050 -#END diff --git a/cell2mol/test/error_2/KAGHOS.search6.cif b/cell2mol/test/error_2/KAGHOS.search6.cif deleted file mode 100755 index 407876722..000000000 --- a/cell2mol/test/error_2/KAGHOS.search6.cif +++ /dev/null @@ -1,183 +0,0 @@ - -####################################################################### -# -# Cambridge Crystallographic Data Centre -# CCDC -# -####################################################################### -# -# If this CIF has been generated from an entry in the Cambridge -# Structural Database, then it will include bibliographic, chemical, -# crystal, experimental, refinement or atomic coordinate data resulting -# from the CCDC's data processing and validation procedures. -# -####################################################################### - -data_CSD_CIF_KAGHOS -_audit_creation_date 2016-01-20 -_audit_creation_method CSD-ConQuest-V1 -_database_code_CSD KAGHOS -_database_code_depnum_ccdc_archive 'CCDC 1414086' -_chemical_formula_sum 'C24 H60 Co1 K1 N2 O6 Si4' -_chemical_formula_moiety -; -C12 H36 Co1 N2 Si4 1-,C12 H24 K1 O6 1+ -; -_journal_coden_Cambridge 1220 -_journal_volume 22 -_journal_year 2016 -_journal_page_first 1668 -_journal_name_full 'Chem.-Eur.J. ' -loop_ -_publ_author_name -"C.Gunnar Werncke" -"E.Suturina" -"P.C.Bunting" -"L.Vendier" -"J.R.Long" -"M.Atanasov" -"F.Neese" -"S.Sabo-Etienne" -"S.Bontemps" -_chemical_name_systematic -; -(18-Crown-6)-potassium bis(bis(trimethylsilyl)amide)-cobalt(i) -; -_cell_volume 934.894 -_exptl_crystal_colour 'colorless' -_exptl_crystal_density_diffrn 1.213 -_exptl_crystal_description 'plate' -_diffrn_ambient_temperature 180 -#These two values have been output from a single CSD field. -_refine_ls_R_factor_gt 0.022 -_refine_ls_wR_factor_gt 0.022 -_symmetry_cell_setting triclinic -_symmetry_space_group_name_H-M 'P -1' -_symmetry_Int_Tables_number 2 -loop_ -_symmetry_equiv_pos_site_id -_symmetry_equiv_pos_as_xyz -1 x,y,z -2 -x,-y,-z -_cell_length_a 9.6542(4) -_cell_length_b 10.0649(3) -_cell_length_c 10.9839(3) -_cell_angle_alpha 116.594(3) -_cell_angle_beta 94.675(3) -_cell_angle_gamma 97.343(3) -_cell_formula_units_Z 1 -loop_ -_atom_type_symbol -_atom_type_radius_bond -C 0.68 -H 0.23 -Co 1.26 -K 2.03 -N 0.68 -O 0.68 -Si 1.20 -loop_ -_atom_site_label -_atom_site_type_symbol -_atom_site_fract_x -_atom_site_fract_y -_atom_site_fract_z -C1 C 0.20199(15) 0.64148(17) 0.90343(16) -H1 H 0.14630 0.72280 0.92270 -H2 H 0.13540 0.54410 0.86690 -C2 C 0.29482(16) 0.63676(16) 0.79995(16) -H3 H 0.23680 0.62190 0.71470 -H4 H 0.36260 0.73340 0.83710 -C3 C 0.45456(16) 0.49658(18) 0.66648(14) -H5 H 0.52690 0.58890 0.69720 -H6 H 0.39540 0.47930 0.58090 -C4 C 0.52451(17) 0.36476(18) 0.63962(14) -H7 H 0.45230 0.27330 0.61270 -H8 H 0.57970 0.34580 0.56320 -C5 C 0.69803(16) 0.28218(17) 0.73956(15) -H9 H 0.75430 0.27100 0.66520 -H10 H 0.63520 0.18410 0.71120 -C6 C 0.79399(15) 0.32572(18) 0.86998(16) -H11 H 0.85670 0.25100 0.85450 -H12 H 0.85380 0.42600 0.90060 -O1 O 0.28871(10) 0.66910(11) 1.02738(10) -O2 O 0.36918(10) 0.51536(10) 0.77011(9) -O3 O 0.61565(10) 0.3964(1) 0.76140(9) -K1 K 0.50000 0.50000 1.00000 -C7 C -0.12621(15) -0.36189(15) 0.70332(17) -H13 H -0.04710 -0.41620 0.69240 -H14 H -0.20570 -0.42540 0.62990 -H15 H -0.15550 -0.33780 0.79310 -C8 C -0.0170(2) -0.2465(2) 0.51733(16) -H16 H 0.01300 -0.15800 0.50370 -H17 H -0.09770 -0.31310 0.44680 -H18 H 0.06140 -0.30130 0.50990 -C9 C -0.23238(19) -0.10145(19) 0.68503(18) -H19 H -0.25650 -0.04920 0.77790 -H20 H -0.31110 -0.18290 0.62490 -H21 H -0.21440 -0.02950 0.64820 -C10 C 0.34312(16) 0.1108(2) 0.98209(16) -H22 H 0.31000 0.18470 1.06300 -H23 H 0.43280 0.15740 0.96970 -H24 H 0.35710 0.02320 0.99550 -C11 C 0.3054(2) -0.0472(2) 0.67662(18) -H25 H 0.30790 -0.15070 0.66060 -H26 H 0.40230 0.00920 0.69810 -H27 H 0.25660 -0.04960 0.59370 -C12 C 0.17117(19) 0.22518(19) 0.8230(2) -H28 H 0.09210 0.19950 0.74970 -H29 H 0.25530 0.27580 0.80570 -H30 H 0.14660 0.29280 0.91210 -N1 N 0.05969(11) -0.06166(11) 0.82538(10) -Co1 Co 0.00000 0.00000 1.00000 -Si1 Si -0.06975(4) -0.18321(4) 0.69296(3) -Si2 Si 0.20855(4) 0.04818(4) 0.82559(4) -C1A C 0.79801(15) 0.35852(17) 1.09657(16) -H1A H 0.85370 0.27720 1.07730 -H2A H 0.86460 0.45590 1.13310 -C2A C 0.70518(16) 0.36324(16) 1.20005(16) -H3A H 0.76320 0.37810 1.28530 -H4A H 0.63740 0.26660 1.16290 -C3A C 0.54544(16) 0.50342(18) 1.33352(14) -H5A H 0.47310 0.41110 1.30280 -H6A H 0.60460 0.52070 1.41910 -C4A C 0.47549(17) 0.63524(18) 1.36038(14) -H7A H 0.54770 0.72670 1.38730 -H8A H 0.42030 0.65420 1.43680 -C5A C 0.30197(16) 0.71782(17) 1.26044(15) -H9A H 0.24570 0.72900 1.33480 -H10A H 0.36480 0.81590 1.28880 -C6A C 0.20601(15) 0.67428(18) 1.13002(16) -H11A H 0.14330 0.74900 1.14550 -H12A H 0.14620 0.57400 1.09940 -O1A O 0.71129(10) 0.33090(11) 0.97262(10) -O2A O 0.63082(10) 0.48464(10) 1.22989(9) -O3A O 0.38435(10) 0.6036(1) 1.23860(9) -C7A C 0.12621(15) 0.36189(15) 1.29668(17) -H13A H 0.04710 0.41620 1.30760 -H14A H 0.20570 0.42540 1.37010 -H15A H 0.15550 0.33780 1.20690 -C8A C 0.0170(2) 0.2465(2) 1.48267(16) -H16A H -0.01300 0.15800 1.49630 -H17A H 0.09770 0.31310 1.55320 -H18A H -0.06140 0.30130 1.49010 -C9A C 0.23238(19) 0.10145(19) 1.31497(18) -H19A H 0.25650 0.04920 1.22210 -H20A H 0.31110 0.18290 1.37510 -H21A H 0.21440 0.02950 1.35180 -C10A C -0.34312(16) -0.1108(2) 1.01791(16) -H22A H -0.31000 -0.18470 0.93700 -H23A H -0.43280 -0.15740 1.03030 -H24A H -0.35710 -0.02320 1.00450 -C11A C -0.3054(2) 0.0472(2) 1.32338(18) -H25A H -0.30790 0.15070 1.33940 -H26A H -0.40230 -0.00920 1.30190 -H27A H -0.25660 0.04960 1.40630 -C12A C -0.17117(19) -0.22518(19) 1.1770(2) -H28A H -0.09210 -0.19950 1.25030 -H29A H -0.25530 -0.27580 1.19430 -H30A H -0.14660 -0.29280 1.08790 -N1A N -0.05969(11) 0.06166(11) 1.17462(10) -Si1A Si 0.06975(4) 0.18321(4) 1.30704(3) -Si2A Si -0.20855(4) -0.04818(4) 1.17441(4) -#END diff --git a/cell2mol/test/error_2/KIPLIH.search3.cif b/cell2mol/test/error_2/KIPLIH.search3.cif deleted file mode 100755 index 2321e63eb..000000000 --- a/cell2mol/test/error_2/KIPLIH.search3.cif +++ /dev/null @@ -1,150 +0,0 @@ - -####################################################################### -# -# Cambridge Crystallographic Data Centre -# CCDC -# -####################################################################### -# -# If this CIF has been generated from an entry in the Cambridge -# Structural Database, then it will include bibliographic, chemical, -# crystal, experimental, refinement or atomic coordinate data resulting -# from the CCDC's data processing and validation procedures. -# -####################################################################### - -data_CSD_CIF_KIPLIH -_audit_creation_date 2018-09-15 -_audit_creation_method CSD-ConQuest-V1 -_database_code_CSD KIPLIH -_database_code_depnum_ccdc_archive 'CCDC 1834043' -_chemical_formula_sum 'C24 H25 Cr1 N1 O8' -_chemical_formula_moiety -; -C24 H25 Cr1 N1 O8 -; -_journal_coden_Cambridge 36 -_journal_volume 875 -_journal_year 2018 -_journal_page_first 59 -_journal_name_full 'J.Organomet.Chem. ' -loop_ -_publ_author_name -"A.Feliciano" -"M.Ines Flores-Conde" -"R.Padilla" -"C.Espinoza-Hicks" -"A.Camacho-Davila" -"M.Renteria" -"Miguel Angel Vazquez" -"J.Tamariz" -"F.Delgado" -_chemical_name_systematic -; -((6S*,7S*)-(6-ethoxy-7-methyl-2-oxo-3-(4-methyl)phenyl-2,3,4,5,6,7-hexahydrobe -nzo[d]oxazole-6-ethoxymethylene))-tetracarbonyl-chromium(0) -; -_chemical_melting_point 427.15 -_cell_volume 1253.181 -_exptl_crystal_colour 'light pink' -_exptl_crystal_density_diffrn 1.345 -_exptl_special_details -; -Air-sensitive,Heat-sensitive,Oxygen-sensitive,Light-sensitive - -; -_exptl_crystal_description 'block' -_exptl_crystal_preparation 'Vapour deposition' -_diffrn_ambient_temperature 292.1 -#These two values have been output from a single CSD field. -_refine_ls_R_factor_gt 0.0503 -_refine_ls_wR_factor_gt 0.0503 -_symmetry_cell_setting triclinic -_symmetry_space_group_name_H-M 'P -1' -_symmetry_Int_Tables_number 2 -loop_ -_symmetry_equiv_pos_site_id -_symmetry_equiv_pos_as_xyz -1 x,y,z -2 -x,-y,-z -_cell_length_a 8.0844(2) -_cell_length_b 13.4505(4) -_cell_length_c 13.6459(4) -_cell_angle_alpha 119.409(3) -_cell_angle_beta 100.685(2) -_cell_angle_gamma 92.791(2) -_cell_formula_units_Z 2 -loop_ -_atom_type_symbol -_atom_type_radius_bond -C 0.68 -H 0.23 -Cr 1.39 -N 0.68 -O 0.68 -loop_ -_atom_site_label -_atom_site_type_symbol -_atom_site_fract_x -_atom_site_fract_y -_atom_site_fract_z -Cr1 Cr 0.02421(4) 0.29864(2) 0.74764(2) -O1 O 0.57681(14) 0.4020(1) 0.52972(10) -O2 O 0.10876(15) 0.44404(9) 0.72765(9) -O3 O 0.25946(16) 0.19114(10) 0.57811(10) -N1 N 0.41910(18) 0.27788(12) 0.35455(12) -O4 O 0.70562(16) 0.33852(13) 0.37922(12) -C1 C -0.0177(3) 0.1630(2) 0.7436(2) -C2 C 0.1832(2) 0.37340(13) 0.62994(13) -C3 C 0.4115(2) 0.37834(14) 0.53797(14) -O5 O -0.2952(2) 0.19369(13) 0.55170(14) -C4 C 0.1293(2) 0.26503(16) 0.40825(14) -H1 H 0.10800 0.18690 0.39400 -H2 H 0.06980 0.26600 0.34020 -C5 C 0.1714(2) 0.26605(13) 0.64073(13) -C6 C 0.0675(2) 0.34936(15) 0.51486(14) -H3 H -0.04710 0.31760 0.50810 -H4 H 0.06250 0.42190 0.51610 -C7 C 0.3706(2) 0.19335(15) 0.23322(14) -C8 C 0.3145(2) 0.30383(14) 0.43364(13) -C9 C 0.3634(2) 0.43474(14) 0.65085(13) -H5 H 0.35440 0.51490 0.67210 -C10 C 0.5795(2) 0.33730(15) 0.41419(15) -O6 O -0.1984(2) 0.40304(19) 0.91830(15) -O7 O 0.3243(3) 0.35283(17) 0.94702(14) -O8 O -0.0466(3) 0.07561(16) 0.73916(19) -C11 C 0.4952(2) 0.43850(17) 0.74927(15) -H6 H 0.51360 0.36130 0.72850 -H7 H 0.45410 0.47230 0.81860 -H8 H 0.60070 0.48430 0.76250 -C12 C -0.1744(3) 0.23835(15) 0.62493(17) -C13 C 0.2495(3) 0.00186(19) 0.0805(2) -H9 H 0.19890 -0.07240 0.05680 -C14 C 0.2991(3) 0.08286(17) 0.19719(18) -H10 H 0.28410 0.06250 0.25140 -C15 C 0.3947(3) 0.22239(17) 0.15286(17) -H11 H 0.44320 0.29720 0.17670 -C16 C 0.2733(3) 0.02869(19) -0.00209(17) -C17 C 0.0283(3) 0.53854(16) 0.72931(18) -H12 H -0.08560 0.50890 0.67880 -H13 H 0.09390 0.57720 0.70130 -C18 C -0.1134(3) 0.3682(2) 0.85445(17) -C19 C 0.2600(3) 0.08237(16) 0.5777(2) -H14 H 0.27180 0.02170 0.50300 -H15 H 0.15250 0.06080 0.58960 -C20 C 0.3464(3) 0.1398(2) 0.03647(18) -H16 H 0.36390 0.15990 -0.01740 -C21 C 0.2142(3) 0.33873(18) 0.87393(18) -C22 C 0.4024(4) 0.0937(2) 0.6704(2) -H17 H 0.50800 0.12090 0.66210 -H18 H 0.40710 0.01980 0.66430 -H19 H 0.38420 0.14790 0.74470 -C23 C 0.0189(4) 0.6212(2) 0.8488(2) -H20 H -0.04360 0.58200 0.87670 -H21 H -0.03790 0.68250 0.84970 -H22 H 0.13220 0.65280 0.89770 -C24 C 0.2193(4) -0.0592(2) -0.1301(2) -H23 H 0.30210 -0.04920 -0.16800 -H24 H 0.11020 -0.04860 -0.16240 -H25 H 0.21120 -0.13570 -0.14140 -#END diff --git a/cell2mol/test/error_2/LAPNIZ.search6.cif b/cell2mol/test/error_2/LAPNIZ.search6.cif deleted file mode 100755 index 55664418c..000000000 --- a/cell2mol/test/error_2/LAPNIZ.search6.cif +++ /dev/null @@ -1,144 +0,0 @@ - -####################################################################### -# -# Cambridge Crystallographic Data Centre -# CCDC -# -####################################################################### -# -# If this CIF has been generated from an entry in the Cambridge -# Structural Database, then it will include bibliographic, chemical, -# crystal, experimental, refinement or atomic coordinate data resulting -# from the CCDC's data processing and validation procedures. -# -####################################################################### - -data_CSD_CIF_LAPNIZ -_audit_creation_date 1994-02-10 -_audit_creation_method CSD-ConQuest-V1 -_database_code_CSD LAPNIZ -_chemical_formula_sum 'C25 H28 Co1 N3 O2' -_chemical_formula_moiety -; -C25 H28 Co1 N3 O2 -; -_journal_coden_Cambridge 580 -_journal_volume 12 -_journal_year 1993 -_journal_page_first 1097 -_journal_name_full 'Polyhedron ' -loop_ -_publ_author_name -"Huilan Chen" -"Deyan Han" -"Hong Yan" -"Wenxia Tang" -"Yao Yang" -"Huaqin Wang" -_chemical_name_systematic -; -(N,N-Ethylene-bis(salicylideneiminato))-(iso-butyl)-pyridine-cobalt(iii) -; -_cell_volume 2288.478 -_exptl_crystal_colour 'purple' -_exptl_crystal_density_diffrn 1.339 -_diffrn_ambient_temperature ? -_diffrn_special_details -; -The study was carried out at room temperature,in the range 283-303K - -; -#These two values have been output from a single CSD field. -_refine_ls_R_factor_gt 0.038 -_refine_ls_wR_factor_gt 0.038 -_symmetry_cell_setting monoclinic -_symmetry_space_group_name_H-M 'P 21/c' -_symmetry_Int_Tables_number 14 -loop_ -_symmetry_equiv_pos_site_id -_symmetry_equiv_pos_as_xyz -1 x,y,z -2 -x,1/2+y,1/2-z -3 -x,-y,-z -4 x,-1/2-y,-1/2+z -_cell_length_a 9.476(9) -_cell_length_b 19.621(9) -_cell_length_c 12.837(3) -_cell_angle_alpha 90 -_cell_angle_beta 106.5(4) -_cell_angle_gamma 90 -_cell_formula_units_Z 4 -loop_ -_atom_type_symbol -_atom_type_radius_bond -C 0.68 -H 0.23 -Co 1.33 -N 0.68 -O 0.68 -loop_ -_atom_site_label -_atom_site_type_symbol -_atom_site_fract_x -_atom_site_fract_y -_atom_site_fract_z -Co1 Co 0.58302(5) 0.18808(2) 0.90596(3) -O1 O 0.5417(3) 0.1493(1) 0.7642(2) -O2 O 0.7120(2) 0.2496(1) 0.8641(2) -N1 N 0.4579(3) 0.1273(2) 0.9505(2) -N2 N 0.6101(3) 0.2295(2) 1.0422(2) -N3 N 0.4049(3) 0.2601(2) 0.8380(2) -C1 C 0.3893(4) 0.0756(2) 0.8970(3) -C2 C 0.4612(6) 0.1368(3) 1.0645(3) -C3 C 0.7043(4) 0.2748(2) 1.0865(3) -C4 C 0.5026(5) 0.2072(3) 1.0964(3) -C5 C 0.7574(5) 0.1273(2) 0.9648(3) -C6 C 0.4629(4) 0.0956(2) 0.7289(3) -C7 C 0.3868(4) 0.0571(2) 0.7902(3) -C8 C 0.3050(4) -0.0005(2) 0.7426(3) -C9 C 0.2960(5) -0.0212(2) 0.6393(4) -C10 C 0.3680(5) 0.0168(2) 0.5787(3) -C11 C 0.4483(4) 0.0731(2) 0.6219(3) -C12 C 0.8091(4) 0.2882(2) 0.9301(3) -C13 C 0.8086(4) 0.3040(2) 1.0378(3) -C14 C 0.9136(5) 0.3498(2) 1.0997(3) -C15 C 1.0201(5) 0.3771(2) 1.0610(4) -C16 C 1.0234(5) 0.3606(2) 0.9569(4) -C17 C 0.9208(4) 0.3176(2) 0.8932(3) -C18 C 0.4283(4) 0.3270(2) 0.8534(3) -C19 C 0.3266(5) 0.3754(2) 0.8046(3) -C20 C 0.1946(5) 0.3552(2) 0.7354(3) -C21 C 0.1683(4) 0.2865(2) 0.7183(4) -C22 C 0.2754(4) 0.2411(2) 0.7714(3) -C23 C 0.8445(4) 0.1103(2) 0.8858(3) -C24 C 1.0043(5) 0.1267(3) 0.9301(4) -C25 C 0.8233(7) 0.0362(3) 0.8478(5) -H1 H 0.337(4) 0.049(2) 0.934(3) -H2 H 0.259(4) -0.028(2) 0.786(3) -H3 H 0.359(5) 0.002(2) 0.506(3) -H4 H 0.493(4) 0.096(2) 0.587(3) -H5 H 0.914(4) 0.358(2) 1.178(3) -H6 H 1.084(4) 0.405(2) 1.098(3) -H7 H 1.090(5) 0.378(2) 0.929(3) -H8 H 0.921(4) 0.309(2) 0.817(3) -H9 H 0.517(4) 0.340(2) 0.906(3) -H10 H 0.352(4) 0.419(2) 0.822(3) -H11 H 0.123(5) 0.386(2) 0.701(3) -H12 H 0.081(4) 0.271(2) 0.680(3) -H13 H 0.264(3) 0.195(2) 0.757(3) -H14 H 0.381(5) 0.113(2) 1.083(4) -H15 H 0.534(5) 0.220(2) 1.173(3) -H16 H 1.043(4) 0.098(2) 0.987(3) -H17 H 1.058(5) 0.111(3) 0.883(4) -H18 H 1.033(5) 0.171(2) 0.973(4) -H19 H 0.242(4) -0.063(2) 0.613(3) -H20 H 0.895(6) 0.027(3) 0.798(4) -H21 H 0.861(7) 0.008(4) 0.920(5) -H22 H 0.725(9) 0.019(4) 0.812(6) -H23 H 0.816(3) 0.139(2) 0.833(3) -H24 H 0.704(3) 0.289(2) 1.154(2) -H25 H 0.816(4) 0.146(2) 1.032(3) -H26 H 0.416(8) 0.240(4) 1.074(5) -H27 H 0.717(5) 0.091(2) 0.984(3) -H28 H 0.395(5) 0.166(2) 1.039(4) -#END diff --git a/cell2mol/test/error_2/LOJLEE.search2.cif b/cell2mol/test/error_2/LOJLEE.search2.cif deleted file mode 100755 index e0253ef7a..000000000 --- a/cell2mol/test/error_2/LOJLEE.search2.cif +++ /dev/null @@ -1,152 +0,0 @@ - -####################################################################### -# -# Cambridge Crystallographic Data Centre -# CCDC -# -####################################################################### -# -# If this CIF has been generated from an entry in the Cambridge -# Structural Database, then it will include bibliographic, chemical, -# crystal, experimental, refinement or atomic coordinate data resulting -# from the CCDC's data processing and validation procedures. -# -####################################################################### - -data_CSD_CIF_LOJLEE -_audit_creation_date 2019-07-03 -_audit_creation_method CSD-ConQuest-V1 -_database_code_CSD LOJLEE -_database_code_depnum_ccdc_archive 'CCDC 1856615' -_chemical_formula_sum 'C23 H29 K1 Mn1 N1 O12' -_chemical_formula_moiety -; -C23 H29 K1 Mn1 N1 O12 -; -_journal_coden_Cambridge 1441 -_journal_volume 11 -_journal_year 2019 -_journal_page_first 669 -_journal_name_full 'Nature Chemistry ' -loop_ -_publ_author_name -"Hui-Jie Pan" -"Gangfeng Huang" -"M.D.Wodrich" -"F.F.Tirani" -"K.Ataka" -"S.Shima" -"Xile Hu" -_chemical_name_systematic -; -(\m-2-[6-(oxido)pyridin-2-yl]ethyl)-tetrakis(carbonyl)-(18-crown-6)-potassium- -manganese(i) -; -_cell_volume 2752.209 -_exptl_crystal_colour 'intense orange' -_exptl_crystal_density_diffrn 1.461 -_exptl_crystal_description 'prism' -_diffrn_ambient_temperature 140.0 -#These two values have been output from a single CSD field. -_refine_ls_R_factor_gt 0.0341 -_refine_ls_wR_factor_gt 0.0341 -_symmetry_cell_setting monoclinic -_symmetry_space_group_name_H-M 'P 21/n' -_symmetry_Int_Tables_number 14 -loop_ -_symmetry_equiv_pos_site_id -_symmetry_equiv_pos_as_xyz -1 x,y,z -2 1/2-x,1/2+y,1/2-z -3 -x,-y,-z -4 -1/2+x,-1/2-y,-1/2+z -_cell_length_a 8.01318(10) -_cell_length_b 16.45977(19) -_cell_length_c 21.0415(2) -_cell_angle_alpha 90 -_cell_angle_beta 97.3915(11) -_cell_angle_gamma 90 -_cell_formula_units_Z 4 -loop_ -_atom_type_symbol -_atom_type_radius_bond -C 0.68 -H 0.23 -K 2.03 -Mn 1.61 -N 0.68 -O 0.68 -loop_ -_atom_site_label -_atom_site_type_symbol -_atom_site_fract_x -_atom_site_fract_y -_atom_site_fract_z -Mn1 Mn 0.83122(3) 0.23348(2) 0.53977(2) -K1 K 0.72015(5) 0.44549(2) 0.71106(2) -O1 O 0.8709(2) 0.31297(9) 0.68112(7) -O2 O 0.7792(2) 0.07631(10) 0.47234(8) -O3 O 0.6999(2) 0.26263(10) 0.40452(7) -O4 O 0.8611(3) 0.41193(10) 0.56500(11) -O5 O 1.1785(2) 0.23727(16) 0.50642(9) -O6 O 0.4892(2) 0.20953(17) 0.57827(11) -O7 O 0.99648(17) 0.51501(8) 0.79069(7) -O8 O 0.86642(17) 0.59454(8) 0.67584(6) -O9 O 0.58750(18) 0.53342(8) 0.59704(6) -O10 O 0.35972(18) 0.44101(9) 0.65874(7) -O11 O 0.48208(18) 0.35522(9) 0.77030(7) -O12 O 0.77220(18) 0.41279(8) 0.84379(7) -N1 N 0.91067(17) 0.19164(9) 0.63133(6) -C1 C 0.9155(2) 0.23985(11) 0.68575(9) -C2 C 0.9742(2) 0.20228(13) 0.74611(8) -H1 H 0.98650 0.23447 0.78390 -C3 C 1.0122(2) 0.12252(13) 0.75052(9) -H2 H 1.04870 0.09892 0.79114 -C4 C 0.9977(2) 0.07462(12) 0.69525(9) -H3 H 1.02141 0.01807 0.69770 -C5 C 0.9484(2) 0.1114(1) 0.63734(8) -C6 C 0.9311(3) 0.06463(11) 0.57565(9) -H4 H 0.87148 0.01296 0.58133 -H5 H 1.04444 0.05120 0.56476 -C7 C 0.8346(2) 0.11235(11) 0.52049(9) -C8 C 0.7509(3) 0.25230(12) 0.45764(9) -C9 C 0.8466(3) 0.34288(14) 0.56029(12) -C10 C 1.0457(3) 0.23429(15) 0.52025(9) -C11 C 0.6175(3) 0.21971(15) 0.56204(11) -C12 C 1.0385(3) 0.59593(13) 0.77571(11) -H6 H 1.15158 0.60988 0.79769 -H7 H 0.95598 0.63427 0.79021 -C13 C 1.0364(3) 0.60205(14) 0.70465(11) -H8 H 1.08308 0.65502 0.69330 -H9 H 1.10580 0.55827 0.68922 -C14 C 0.8450(3) 0.60763(12) 0.60888(9) -H10 H 0.89822 0.56305 0.58711 -H11 H 0.89850 0.65948 0.59883 -C15 C 0.6594(3) 0.61042(12) 0.58631(9) -H12 H 0.60565 0.65301 0.60997 -H13 H 0.64020 0.62383 0.54008 -C16 C 0.4126(3) 0.53068(14) 0.57520(9) -H14 H 0.39303 0.53968 0.52831 -H15 H 0.35356 0.57393 0.59623 -C17 C 0.3461(3) 0.44914(15) 0.59106(10) -H16 H 0.22697 0.44392 0.57214 -H17 H 0.41156 0.40575 0.57302 -C18 C 0.2843(3) 0.36726(15) 0.67687(12) -H18 H 0.33788 0.32013 0.65838 -H19 H 0.16290 0.36694 0.66041 -C19 C 0.3077(3) 0.36146(14) 0.74859(12) -H20 H 0.26060 0.41031 0.76719 -H21 H 0.24796 0.31313 0.76227 -C20 C 0.5149(3) 0.34146(13) 0.83708(11) -H22 H 0.46065 0.29036 0.84839 -H23 H 0.46926 0.38667 0.86063 -C21 C 0.7021(3) 0.33583(14) 0.85488(13) -H24 H 0.72907 0.32065 0.90057 -H25 H 0.74921 0.29386 0.82855 -C22 C 0.9454(3) 0.41842(16) 0.86926(12) -H26 H 1.01252 0.37892 0.84773 -H27 H 0.96016 0.40632 0.91574 -C23 C 1.0021(3) 0.50304(15) 0.85793(10) -H28 H 0.92746 0.54261 0.87575 -H29 H 1.11821 0.51128 0.87940 -#END diff --git a/cell2mol/test/error_2/MAKBUW.search5.cif b/cell2mol/test/error_2/MAKBUW.search5.cif deleted file mode 100755 index 5e71d6f03..000000000 --- a/cell2mol/test/error_2/MAKBUW.search5.cif +++ /dev/null @@ -1,195 +0,0 @@ - -####################################################################### -# -# Cambridge Crystallographic Data Centre -# CCDC -# -####################################################################### -# -# If this CIF has been generated from an entry in the Cambridge -# Structural Database, then it will include bibliographic, chemical, -# crystal, experimental, refinement or atomic coordinate data resulting -# from the CCDC's data processing and validation procedures. -# -####################################################################### - -data_CSD_CIF_MAKBUW -_audit_creation_date 2005-08-04 -_audit_creation_method CSD-ConQuest-V1 -_database_code_CSD MAKBUW -_database_code_depnum_ccdc_archive 'CCDC 268752' -_chemical_formula_sum 'C40 H60 Fe1 N4 Na1 O6' -_chemical_formula_moiety -; -C28 H32 Fe1 N4 1-,C12 H28 Na1 O6 1+ -; -_journal_coden_Cambridge 4 -_journal_volume 127 -_journal_year 2005 -_journal_page_first 4730 -_journal_name_full 'J.Am.Chem.Soc. ' -loop_ -_publ_author_name -"J.Bachmann" -"D.G.Nocera" -_chemical_name_systematic -; -bis(diglyme)-sodium -(5,5,10,10,15,15,20,20-octaethylporphyrinogenato)-iron(iii) -; -_cell_volume 8277.151 -_exptl_crystal_colour 'red-black' -_exptl_crystal_density_diffrn 1.239 -_diffrn_ambient_temperature 183 -#These two values have been output from a single CSD field. -_refine_ls_R_factor_gt 0.0962 -_refine_ls_wR_factor_gt 0.0962 -_symmetry_cell_setting orthorhombic -_symmetry_space_group_name_H-M 'P b c a' -_symmetry_Int_Tables_number 61 -loop_ -_symmetry_equiv_pos_site_id -_symmetry_equiv_pos_as_xyz -1 x,y,z -2 1/2-x,-y,1/2+z -3 -x,1/2+y,1/2-z -4 1/2+x,1/2-y,-z -5 -x,-y,-z -6 -1/2+x,y,-1/2-z -7 x,-1/2-y,-1/2+z -8 -1/2-x,-1/2+y,z -_cell_length_a 15.5367(12) -_cell_length_b 21.1012(16) -_cell_length_c 25.2473(19) -_cell_angle_alpha 90 -_cell_angle_beta 90 -_cell_angle_gamma 90 -_cell_formula_units_Z 8 -loop_ -_atom_type_symbol -_atom_type_radius_bond -C 0.68 -H 0.23 -Fe 1.34 -N 0.68 -Na 1.37 -O 0.68 -loop_ -_atom_site_label -_atom_site_type_symbol -_atom_site_fract_x -_atom_site_fract_y -_atom_site_fract_z -Fe1 Fe 0.84576(5) 0.09334(4) 0.61673(3) -Na1 Na 0.96543(16) 0.23499(12) 0.3408(1) -O1 O 0.9724(4) 0.2179(2) 0.2486(2) -O2 O 1.0702(3) 0.3041(2) 0.2985(2) -O3 O 0.9584(3) 0.3366(2) 0.3778(2) -O4 O 0.8181(3) 0.1974(3) 0.3278(2) -O5 O 0.9043(3) 0.1913(3) 0.4197(2) -O6 O 1.0652(3) 0.1651(2) 0.37867(19) -N1 N 0.9237(3) 0.1575(2) 0.59480(19) -N2 N 0.9308(3) 0.0613(2) 0.66396(19) -N3 N 0.7675(3) 0.0303(2) 0.64002(19) -N4 N 0.7614(3) 0.1255(2) 0.56951(18) -C1 C 0.9022(4) 0.2183(3) 0.5802(2) -C2 C 0.9762(4) 0.2516(3) 0.5707(3) -H1 H 0.98000 0.29460 0.55980 -C3 C 1.0464(4) 0.2097(3) 0.5802(3) -H2 H 1.10570 0.21990 0.57730 -C4 C 1.0131(4) 0.1523(3) 0.5941(2) -C5 C 1.0549(4) 0.0892(3) 0.6047(2) -C6 C 1.0406(4) 0.0445(3) 0.5573(2) -H3 H 0.97870 0.03720 0.55260 -H4 H 1.06950 0.00400 0.56400 -H5 H 1.06430 0.06380 0.52520 -C7 C 1.1530(4) 0.0986(3) 0.6113(3) -H6 H 1.17690 0.11650 0.57860 -H7 H 1.18030 0.05770 0.61860 -H8 H 1.16390 0.12770 0.64080 -C8 C 1.0182(3) 0.0602(3) 0.6543(2) -C9 C 1.0572(4) 0.0271(3) 0.6948(2) -H9 H 1.11680 0.01780 0.69790 -C10 C 0.9917(4) 0.0096(3) 0.7310(2) -H10 H 0.99980 -0.01260 0.76340 -C11 C 0.9153(4) 0.0301(3) 0.7114(2) -C12 C 0.8245(4) 0.0267(3) 0.7329(2) -C13 C 0.8224(4) -0.0194(3) 0.7804(3) -H11 H 0.76430 -0.02040 0.79550 -H12 H 0.86330 -0.00510 0.80750 -H13 H 0.83840 -0.06200 0.76850 -C14 C 0.7969(4) 0.0934(3) 0.7531(3) -H14 H 0.79990 0.12390 0.72390 -H15 H 0.83560 0.10690 0.78160 -H16 H 0.73780 0.09140 0.76660 -C15 C 0.7633(4) 0.0045(3) 0.6903(2) -C16 C 0.6959(4) -0.0367(3) 0.6926(3) -H17 H 0.67810 -0.06040 0.72260 -C17 C 0.6571(4) -0.0376(3) 0.6415(3) -H18 H 0.60880 -0.06230 0.63110 -C18 C 0.7019(3) 0.0036(3) 0.6101(2) -C19 C 0.6929(4) 0.0197(3) 0.5519(2) -C20 C 0.7669(4) -0.0110(3) 0.5204(3) -H19 H 0.76210 0.00080 0.48300 -H20 H 0.76350 -0.05720 0.52380 -H21 H 0.82220 0.00380 0.53430 -C21 C 0.6079(4) -0.0060(3) 0.5302(3) -H22 H 0.55980 0.01230 0.55020 -H23 H 0.60690 -0.05220 0.53380 -H24 H 0.60240 0.00550 0.49280 -C22 C 0.6968(4) 0.0902(3) 0.5448(2) -C23 C 0.6481(4) 0.1314(3) 0.5154(3) -H25 H 0.59920 0.12070 0.49470 -C24 C 0.6838(5) 0.1930(3) 0.5214(3) -H26 H 0.66320 0.23070 0.50520 -C25 C 0.7532(4) 0.1884(3) 0.5547(2) -C26 C 0.8089(4) 0.2389(3) 0.5794(3) -C27 C 0.7991(5) 0.3011(3) 0.5483(3) -H27 H 0.81400 0.29400 0.51110 -H28 H 0.83750 0.33330 0.56330 -H29 H 0.73940 0.31590 0.55080 -C28 C 0.7782(4) 0.2510(3) 0.6368(3) -H30 H 0.71670 0.26160 0.63660 -H31 H 0.81080 0.28640 0.65210 -H32 H 0.78750 0.21280 0.65810 -C29 C 0.9648(6) 0.1577(4) 0.2244(4) -H33 H 0.94120 0.16270 0.18870 -H34 H 0.92640 0.13090 0.24550 -H35 H 1.02170 0.13790 0.22220 -C30 C 1.0186(5) 0.2616(3) 0.2188(3) -H36 H 0.98590 0.27250 0.18640 -H37 H 1.07430 0.24290 0.20790 -C31 C 1.0341(6) 0.3193(4) 0.2503(3) -H38 H 1.07320 0.34790 0.23070 -H39 H 0.97900 0.34180 0.25600 -C32 C 1.0875(5) 0.3565(4) 0.3323(3) -H40 H 1.11830 0.38930 0.31160 -H41 H 1.12640 0.34240 0.36100 -C33 C 1.0100(5) 0.3859(3) 0.3566(3) -H42 H 1.02730 0.41560 0.38500 -H43 H 0.97730 0.40990 0.32960 -C34 C 0.8928(7) 0.3602(5) 0.4104(4) -H44 H 0.91830 0.38100 0.44130 -H45 H 0.85600 0.32520 0.42210 -H46 H 0.85820 0.39090 0.39050 -C35 C 0.7634(6) 0.2256(6) 0.2890(5) -H47 H 0.71780 0.19570 0.27930 -H48 H 0.79730 0.23620 0.25740 -H49 H 0.73760 0.26430 0.30350 -C36 C 0.7731(5) 0.1813(5) 0.3747(4) -H50 H 0.72450 0.15270 0.36630 -H51 H 0.74970 0.22000 0.39160 -C37 C 0.8345(6) 0.1494(4) 0.4108(4) -H52 H 0.80590 0.13910 0.44480 -H53 H 0.85540 0.10950 0.39470 -C38 C 0.9713(7) 0.1667(6) 0.4509(4) -H54 H 0.99440 0.20160 0.47300 -H55 H 0.94630 0.13490 0.47540 -C39 C 1.0369(7) 0.1397(9) 0.4259(5) -H56 H 1.02120 0.09500 0.41910 -H57 H 1.08650 0.13930 0.45050 -C40 C 1.1145(6) 0.1205(4) 0.3494(5) -H58 H 1.16790 0.11110 0.36860 -H59 H 1.12850 0.13830 0.31460 -H60 H 1.08130 0.08140 0.34490 -#END diff --git a/cell2mol/test/error_2/QEHBEM.search5.cif b/cell2mol/test/error_2/QEHBEM.search5.cif deleted file mode 100755 index fc7d03298..000000000 --- a/cell2mol/test/error_2/QEHBEM.search5.cif +++ /dev/null @@ -1,197 +0,0 @@ - -####################################################################### -# -# Cambridge Crystallographic Data Centre -# CCDC -# -####################################################################### -# -# If this CIF has been generated from an entry in the Cambridge -# Structural Database, then it will include bibliographic, chemical, -# crystal, experimental, refinement or atomic coordinate data resulting -# from the CCDC's data processing and validation procedures. -# -####################################################################### - -data_CSD_CIF_QEHBEM -_audit_creation_date 2012-12-31 -_audit_creation_method CSD-ConQuest-V1 -_database_code_CSD QEHBEM -_database_code_depnum_ccdc_archive 'CCDC 864465' -_chemical_formula_sum 'C28 H68 Fe1 N3 Na1 O1 Si6' -_chemical_formula_moiety -; -C22 H62 Fe1 N3 Na1 O1 Si6,C6 H6 -; -_journal_coden_Cambridge 644 -_journal_volume 67 -_journal_year 2012 -_journal_page_first 549 -_journal_name_full 'Z.Naturforsch.,B:Chem.Sci. ' -loop_ -_publ_author_name -"G.Margraf" -"M.Bolte" -"F.Schodel" -"I.Sanger" -"M.Wagner" -"H.-W.Lerner" -_chemical_name_systematic -; -bis(\m~2~-1,1,1-trimethyl-N-(trimethylsilyl)silanamido)-(1,1,1-trimethyl-N-(tr -imethylsilyl)silanamido)-tetrahydrofuran-sodium(i)-iron(ii) benzene solvate -; -_cell_volume 4232.137 -_exptl_crystal_colour 'colorless' -_exptl_crystal_density_diffrn 1.115 -_exptl_crystal_description 'block' -_diffrn_ambient_temperature 173 -#These two values have been output from a single CSD field. -_refine_ls_R_factor_gt 0.0267 -_refine_ls_wR_factor_gt 0.0267 -_symmetry_cell_setting orthorhombic -_symmetry_space_group_name_H-M 'C 2 2 21' -_symmetry_Int_Tables_number 20 -loop_ -_symmetry_equiv_pos_site_id -_symmetry_equiv_pos_as_xyz -1 x,y,z -2 -x,-y,1/2+z -3 -x,y,1/2-z -4 x,-y,-z -5 1/2+x,1/2+y,z -6 1/2-x,1/2-y,1/2+z -7 1/2-x,1/2+y,1/2-z -8 1/2+x,1/2-y,-z -_cell_length_a 11.8572(4) -_cell_length_b 21.2443(9) -_cell_length_c 16.8010(8) -_cell_angle_alpha 90 -_cell_angle_beta 90 -_cell_angle_gamma 90 -_cell_formula_units_Z 4 -loop_ -_atom_type_symbol -_atom_type_radius_bond -C 0.68 -H 0.23 -Fe 1.52 -N 0.68 -Na 1.66 -O 0.68 -Si 1.20 -loop_ -_atom_site_label -_atom_site_type_symbol -_atom_site_fract_x -_atom_site_fract_y -_atom_site_fract_z -Fe1 Fe 0.50000 0.652672(10) 0.25000 -N1 N 0.50000 0.56042(6) 0.25000 -N2 N 0.61957(9) 0.70806(5) 0.30250(6) -Si1 Si 0.50101(4) 0.520025(15) 0.338753(19) -Si2 Si 0.60996(3) 0.73408(2) 0.40011(2) -Si3 Si 0.75515(3) 0.704125(18) 0.26317(2) -C1 C 0.44660(17) 0.56810(8) 0.42359(9) -H1 H 0.37020 0.58280 0.41140 -H2 H 0.49610 0.60450 0.43200 -H3 H 0.44500 0.54230 0.47190 -C2 C 0.64644(17) 0.49451(12) 0.36676(11) -H4 H 0.67850 0.46890 0.32380 -H5 H 0.64330 0.46960 0.41580 -H6 H 0.69390 0.53170 0.37540 -C3 C 0.4089(2) 0.44798(10) 0.33829(12) -H7 H 0.33170 0.45990 0.32390 -H8 H 0.40900 0.42880 0.39140 -H9 H 0.43790 0.41770 0.29940 -C4 C 0.69197(16) 0.80863(9) 0.41817(11) -H10 H 0.77200 0.80120 0.40710 -H11 H 0.68290 0.82160 0.47380 -H12 H 0.66370 0.84190 0.38300 -C5 C 0.45995(14) 0.75626(9) 0.42402(11) -H13 H 0.43220 0.78620 0.38420 -H14 H 0.45690 0.77570 0.47690 -H15 H 0.41260 0.71840 0.42340 -C6 C 0.65909(17) 0.6768(1) 0.47821(10) -H16 H 0.73710 0.66430 0.46700 -H17 H 0.61050 0.63950 0.47760 -H18 H 0.65530 0.69680 0.53070 -C7 C 0.80283(16) 0.78127(9) 0.22028(12) -H19 H 0.79710 0.81410 0.26100 -H20 H 0.75490 0.79230 0.17480 -H21 H 0.88130 0.77760 0.20260 -C8 C 0.76802(13) 0.64448(9) 0.18191(10) -H22 H 0.74370 0.60330 0.20170 -H23 H 0.84680 0.64200 0.16450 -H24 H 0.72040 0.65690 0.13690 -C9 C 0.86526(13) 0.68020(9) 0.33786(11) -H25 H 0.86380 0.70940 0.38300 -H26 H 0.93990 0.68130 0.31280 -H27 H 0.84950 0.63740 0.35670 -Na1 Na 0.50000 0.79215(4) 0.25000 -O1 O 0.50000 0.89417(9) 0.25000 -C10 C 0.4078(2) 0.93139(14) 0.2765(2) -H28 H 0.39580 0.92590 0.33440 -H29 H 0.33770 0.91960 0.24820 -C11 C 0.4401(3) 0.99794(15) 0.2578(4) -H30 H 0.39820 1.01320 0.21060 -H31 H 0.42260 1.02580 0.30340 -C12 C 0.91053(16) 0.53204(10) 0.49367(15) -H32 H 0.84120 0.55430 0.48990 -C13 C 1.01134(19) 0.56374(9) 0.48654(15) -H33 H 1.01140 0.60770 0.47640 -C14 C 1.11186(17) 0.53203(11) 0.49406(17) -H34 H 1.18120 0.55430 0.49110 -N2B N 0.38043(9) 0.70806(5) 0.19750(6) -Si1B Si 0.49899(4) 0.520025(15) 0.161247(19) -Si2B Si 0.39004(3) 0.73408(2) 0.09989(2) -Si3B Si 0.24485(3) 0.704125(18) 0.23683(2) -C1B C 0.55340(17) 0.56810(8) 0.07641(9) -H1B H 0.62980 0.58280 0.08860 -H2B H 0.50390 0.60450 0.06800 -H3B H 0.55500 0.54230 0.02810 -C2B C 0.35356(17) 0.49451(12) 0.13324(11) -H4B H 0.32150 0.46890 0.17620 -H5B H 0.35670 0.46960 0.08420 -H6B H 0.30610 0.53170 0.12460 -C3B C 0.5911(2) 0.44798(10) 0.16171(12) -H7B H 0.66830 0.45990 0.17610 -H8B H 0.59100 0.42880 0.10860 -H9B H 0.56210 0.41770 0.20060 -C4B C 0.30803(16) 0.80863(9) 0.08183(11) -H10B H 0.22800 0.80120 0.09290 -H11B H 0.31710 0.82160 0.02620 -H12B H 0.33630 0.84190 0.11700 -C5B C 0.54005(14) 0.75626(9) 0.07598(11) -H13B H 0.56780 0.78620 0.11580 -H14B H 0.54310 0.77570 0.02310 -H15B H 0.58740 0.71840 0.07660 -C6B C 0.34091(17) 0.6768(1) 0.02179(10) -H16B H 0.26290 0.66430 0.03300 -H17B H 0.38950 0.63950 0.02240 -H18B H 0.34470 0.69680 -0.03070 -C7B C 0.19717(16) 0.78127(9) 0.27972(12) -H19B H 0.20290 0.81410 0.23900 -H20B H 0.24510 0.79230 0.32520 -H21B H 0.11870 0.77760 0.29740 -C8B C 0.23198(13) 0.64448(9) 0.31809(10) -H22B H 0.25630 0.60330 0.29830 -H23B H 0.15320 0.64200 0.33550 -H24B H 0.27960 0.65690 0.36310 -C9B C 0.13474(13) 0.68020(9) 0.16214(11) -H25B H 0.13620 0.70940 0.11700 -H26B H 0.06010 0.68130 0.18720 -H27B H 0.15050 0.63740 0.14330 -C10B C 0.5922(2) 0.93139(14) 0.2235(2) -H28B H 0.60420 0.92590 0.16560 -H29B H 0.66230 0.91960 0.25180 -C11B C 0.5599(3) 0.99794(15) 0.2422(4) -H30B H 0.60180 1.01320 0.28940 -H31B H 0.57740 1.02580 0.19660 -C12C C 0.91053(16) 0.46796(10) 0.50633(15) -H32C H 0.84120 0.44570 0.51010 -C13C C 1.01134(19) 0.43626(9) 0.51346(15) -H33C H 1.01140 0.39230 0.52360 -C14C C 1.11186(17) 0.46797(11) 0.50594(17) -H34C H 1.18120 0.44570 0.50890 -#END diff --git a/cell2mol/test/error_2/QUSHET.search5.cif b/cell2mol/test/error_2/QUSHET.search5.cif deleted file mode 100755 index 5b5aac728..000000000 --- a/cell2mol/test/error_2/QUSHET.search5.cif +++ /dev/null @@ -1,177 +0,0 @@ - -####################################################################### -# -# Cambridge Crystallographic Data Centre -# CCDC -# -####################################################################### -# -# If this CIF has been generated from an entry in the Cambridge -# Structural Database, then it will include bibliographic, chemical, -# crystal, experimental, refinement or atomic coordinate data resulting -# from the CCDC's data processing and validation procedures. -# -####################################################################### - -data_CSD_CIF_QUSHET -_audit_creation_date 2015-11-02 -_audit_creation_method CSD-ConQuest-V1 -_database_code_CSD QUSHET -_database_code_depnum_ccdc_archive 'CCDC 1412551' -_chemical_formula_sum 'C18 H54 Fe1 N3 Na1 Si6' -_chemical_formula_moiety -; -C18 H54 Fe1 N3 Na1 Si6 -; -_journal_coden_Cambridge 9 -_journal_volume 54 -_journal_year 2015 -_journal_page_first 9201 -_journal_name_full 'Inorg.Chem. ' -loop_ -_publ_author_name -"L.C.H.Maddock" -"T.Cadenbach" -"A.R.Kennedy" -"I.Borilovic" -"G.Aromi" -"Eva Hevia" -_chemical_name_systematic -; -bis(\m~2~-bis(Trimethylsilyl)amide)-(bis(trimethylsilyl)amide)-iron(ii)-sodium -(i) -; -_cell_volume 3304.885 -_exptl_crystal_colour 'green' -_exptl_crystal_density_diffrn 1.126 -_exptl_special_details -; -Air-sensitive, Moisture-sensitive, Oxygen-sensitive - -; -_exptl_crystal_description 'plate' -_diffrn_ambient_temperature 123 -_diffrn_special_details -; -twin - -; -#These two values have been output from a single CSD field. -_refine_ls_R_factor_gt 0.0456 -_refine_ls_wR_factor_gt 0.0456 -_symmetry_cell_setting monoclinic -_symmetry_space_group_name_H-M 'P 21/c' -_symmetry_Int_Tables_number 14 -loop_ -_symmetry_equiv_pos_site_id -_symmetry_equiv_pos_as_xyz -1 x,y,z -2 -x,1/2+y,1/2-z -3 -x,-y,-z -4 x,-1/2-y,-1/2+z -_cell_length_a 8.7352(4) -_cell_length_b 19.0049(7) -_cell_length_c 20.6750(9) -_cell_angle_alpha 90 -_cell_angle_beta 105.660(4) -_cell_angle_gamma 90 -_cell_formula_units_Z 4 -loop_ -_atom_type_symbol -_atom_type_radius_bond -C 0.68 -H 0.23 -Fe 1.52 -N 0.68 -Na 1.66 -Si 1.20 -loop_ -_atom_site_label -_atom_site_type_symbol -_atom_site_fract_x -_atom_site_fract_y -_atom_site_fract_z -Fe1 Fe 0.74519(5) 0.25546(2) 0.43002(2) -C1 C 1.0091(4) 0.18922(17) 0.33583(17) -H1 H 1.10860 0.16760 0.33270 -H2 H 1.03270 0.22690 0.36940 -H3 H 0.95250 0.20890 0.29210 -Si1 Si 0.88121(11) 0.12077(4) 0.36137(4) -N1 N 0.7240(3) 0.16054(12) 0.38273(12) -Si2 Si 0.57280(11) 0.10645(4) 0.39407(5) -C2 C 0.8122(5) 0.06232(18) 0.28516(18) -H4 H 0.90480 0.04450 0.27200 -H5 H 0.74440 0.08940 0.24800 -H6 H 0.75180 0.02260 0.29590 -N2 N 0.6947(3) 0.33487(12) 0.36173(12) -Si3 Si 0.84795(11) 0.39356(5) 0.36364(5) -C3 C 1.0162(4) 0.06395(18) 0.42695(19) -H7 H 1.11860 0.05870 0.41660 -H8 H 0.96750 0.01760 0.42730 -H9 H 1.03290 0.08600 0.47120 -N3 N 0.8116(3) 0.26887(12) 0.52783(11) -Si4 Si 0.50299(11) 0.36173(4) 0.32239(4) -C4 C 0.6395(5) 0.01639(15) 0.4277(2) -H10 H 0.72050 0.02080 0.47070 -H11 H 0.68430 -0.00870 0.39560 -H12 H 0.54830 -0.00990 0.43420 -Na1 Na 0.66727(18) 0.23625(7) 0.27998(6) -C5 C 1.1383(4) 0.2168(2) 0.53083(18) -H13 H 1.09110 0.20150 0.48450 -H14 H 1.21580 0.18170 0.55430 -H15 H 1.19170 0.26210 0.53070 -C6 C 0.9269(5) 0.1372(2) 0.5997(2) -H16 H 0.88900 0.10800 0.55950 -H17 H 0.84320 0.14120 0.62290 -H18 H 1.02140 0.11550 0.62980 -C7 C 1.0868(5) 0.2747(2) 0.65333(19) -H19 H 1.12500 0.32000 0.64120 -H20 H 1.17750 0.24640 0.67820 -H21 H 1.01440 0.28270 0.68150 -C8 C 0.6692(5) 0.2841(2) 0.64422(17) -H22 H 0.77220 0.27700 0.67710 -H23 H 0.61380 0.23890 0.63420 -H24 H 0.60480 0.31670 0.66260 -C9 C 0.7943(6) 0.41065(19) 0.5861(3) -H25 H 0.81280 0.43240 0.54590 -H26 H 0.89580 0.40540 0.62040 -H27 H 0.72300 0.44050 0.60350 -Si5 Si 0.97856(11) 0.22648(5) 0.57483(5) -C10 C 0.4174(4) 0.08983(18) 0.31228(19) -H28 H 0.36770 0.13450 0.29420 -H29 H 0.33610 0.05790 0.32010 -H30 H 0.46760 0.06850 0.28000 -C11 C 0.4949(4) 0.3366(2) 0.51071(19) -H31 H 0.49790 0.35110 0.46560 -H32 H 0.44350 0.37340 0.53070 -H33 H 0.43440 0.29270 0.50780 -Si6 Si 0.70179(11) 0.32243(4) 0.56418(4) -C12 C 0.4735(4) 0.14472(18) 0.45577(19) -H34 H 0.55400 0.15650 0.49750 -H35 H 0.39890 0.11030 0.46530 -H36 H 0.41550 0.18740 0.43680 -C13 C 1.0303(4) 0.37525(19) 0.43327(19) -H37 H 1.00270 0.37440 0.47620 -H38 H 1.10930 0.41220 0.43440 -H39 H 1.07450 0.32950 0.42570 -C14 C 0.9106(5) 0.3889(3) 0.2830(2) -H40 H 0.94020 0.34040 0.27560 -H41 H 1.00200 0.41990 0.28630 -H42 H 0.82220 0.40390 0.24530 -C15 C 0.7952(5) 0.48767(19) 0.3722(3) -H43 H 0.76430 0.49390 0.41410 -H44 H 0.70630 0.50100 0.33400 -H45 H 0.88720 0.51750 0.37310 -C16 C 0.3570(4) 0.29062(19) 0.32500(19) -H46 H 0.25100 0.30470 0.29810 -H47 H 0.35490 0.28270 0.37160 -H48 H 0.38860 0.24710 0.30660 -C17 C 0.4758(5) 0.3797(2) 0.23055(17) -H49 H 0.36430 0.39130 0.20930 -H50 H 0.50570 0.33780 0.20910 -H51 H 0.54340 0.41930 0.22540 -C18 C 0.4275(5) 0.44251(19) 0.3554(2) -H52 H 0.31210 0.43890 0.34790 -H53 H 0.45210 0.48400 0.33190 -H54 H 0.47860 0.44700 0.40360 -#END diff --git a/cell2mol/test/error_2/RUKLAK.search3.cif b/cell2mol/test/error_2/RUKLAK.search3.cif deleted file mode 100755 index 7972363ba..000000000 --- a/cell2mol/test/error_2/RUKLAK.search3.cif +++ /dev/null @@ -1,134 +0,0 @@ - -####################################################################### -# -# Cambridge Crystallographic Data Centre -# CCDC -# -####################################################################### -# -# If this CIF has been generated from an entry in the Cambridge -# Structural Database, then it will include bibliographic, chemical, -# crystal, experimental, refinement or atomic coordinate data resulting -# from the CCDC's data processing and validation procedures. -# -####################################################################### - -data_CSD_CIF_RUKLAK -_audit_creation_date 1998-03-04 -_audit_creation_method CSD-ConQuest-V1 -_database_code_CSD RUKLAK -_database_code_depnum_ccdc_journal 186/371 -_chemical_formula_sum 'C9 H15 Cr1 N3 O3' -_chemical_formula_moiety -; -C9 H15 Cr1 N3 O3 -; -_journal_coden_Cambridge 186 -_journal_year 1997 -_journal_page_first 1363 -_journal_name_full 'J.Chem.Soc.,Dalton Trans. ' -loop_ -_publ_author_name -"M.L.Armanasco" -"M.V.Baker" -"M.R.North" -"B.W.Skelton" -"A.H.White" -_chemical_name_systematic -; -Tricarbonyl-1,3,5-trimethyl-1,3,5-triaza-cyclohexane-chromium(0) -; -_chemical_melting_point 513.15 -_cell_volume 2587.563 -_exptl_crystal_colour 'orange' -_exptl_crystal_density_diffrn 1.362 -_exptl_special_details -; -Melts above 513.15K -Air-sensitive - -; -_diffrn_ambient_temperature ? -_diffrn_special_details -; -The study was carried out at room temperature,in the range 283-303K - -; -#These two values have been output from a single CSD field. -_refine_ls_R_factor_gt 0.042 -_refine_ls_wR_factor_gt 0.042 -_symmetry_cell_setting orthorhombic -_symmetry_space_group_name_H-M 'I b a m' -_symmetry_Int_Tables_number 72 -loop_ -_symmetry_equiv_pos_site_id -_symmetry_equiv_pos_as_xyz -1 x,y,z -2 -x,-y,z -3 x,-y,1/2-z -4 -x,y,1/2-z -5 1/2+x,1/2+y,1/2+z -6 1/2-x,1/2-y,1/2+z -7 1/2+x,1/2-y,-z -8 1/2-x,1/2+y,-z -9 -x,-y,-z -10 x,y,-z -11 -x,y,-1/2+z -12 x,-y,-1/2+z -13 -1/2-x,-1/2-y,-1/2-z -14 -1/2+x,-1/2+y,-1/2-z -15 -1/2-x,-1/2+y,z -16 -1/2+x,-1/2-y,z -_cell_length_a 14.537(5) -_cell_length_b 13.953(3) -_cell_length_c 12.757(3) -_cell_angle_alpha 90 -_cell_angle_beta 90 -_cell_angle_gamma 90 -_cell_formula_units_Z 8 -loop_ -_atom_type_symbol -_atom_type_radius_bond -C 0.68 -H 0.23 -Cr 1.35 -N 0.68 -O 0.68 -loop_ -_atom_site_label -_atom_site_type_symbol -_atom_site_fract_x -_atom_site_fract_y -_atom_site_fract_z -Cr1 Cr 0.49191(3) 0.24897(4) 0.50000 -N1 N 0.3695(2) 0.1622(2) 0.50000 -C1 C 0.3600(4) 0.0568(3) 0.50000 -C2 C 0.3330(2) 0.2085(2) 0.5936(2) -N2 N 0.3752(1) 0.3035(1) 0.5893(2) -C3 C 0.3670(3) 0.3572(3) 0.6878(3) -C4 C 0.3388(3) 0.3563(3) 0.50000 -C5 C 0.5710(3) 0.3474(3) 0.50000 -O1 O 0.6256(2) 0.4097(2) 0.50000 -C6 C 0.5634(2) 0.1892(2) 0.5953(2) -O2 O 0.6147(2) 0.1501(2) 0.6513(2) -H1 H 0.300(3) 0.043(3) 0.50000 -H2 H 0.392(2) 0.028(2) 0.558(2) -H3 H 0.356(1) 0.174(1) 0.652(2) -H4 H 0.264(2) 0.208(2) 0.594(2) -H5 H 0.395(2) 0.323(2) 0.744(2) -H6 H 0.291(3) 0.374(2) 0.705(3) -H7 H 0.398(2) 0.419(2) 0.682(3) -H8 H 0.363(2) 0.417(2) 0.50000 -H9 H 0.269(2) 0.355(3) 0.50000 -H2I H 0.392(2) 0.028(2) 0.442(2) -N2I N 0.3752(1) 0.3035(1) 0.4107(2) -C2I C 0.3330(2) 0.2085(2) 0.4064(2) -H3I H 0.356(1) 0.174(1) 0.348(2) -H4I H 0.264(2) 0.208(2) 0.406(2) -C3I C 0.3670(3) 0.3572(3) 0.3122(3) -H5I H 0.395(2) 0.323(2) 0.256(2) -H6I H 0.291(3) 0.374(2) 0.295(3) -H7I H 0.398(2) 0.419(2) 0.318(3) -C6I C 0.5634(2) 0.1892(2) 0.4047(2) -O2I O 0.6147(2) 0.1501(2) 0.3487(2) -#END diff --git a/cell2mol/test/error_2/SEZVEY.search3.cif b/cell2mol/test/error_2/SEZVEY.search3.cif deleted file mode 100755 index 1d88da313..000000000 --- a/cell2mol/test/error_2/SEZVEY.search3.cif +++ /dev/null @@ -1,184 +0,0 @@ - -####################################################################### -# -# Cambridge Crystallographic Data Centre -# CCDC -# -####################################################################### -# -# If this CIF has been generated from an entry in the Cambridge -# Structural Database, then it will include bibliographic, chemical, -# crystal, experimental, refinement or atomic coordinate data resulting -# from the CCDC's data processing and validation procedures. -# -####################################################################### - -data_CSD_CIF_SEZVEY -_audit_creation_date 1991-02-22 -_audit_creation_method CSD-ConQuest-V1 -_database_code_CSD SEZVEY -_chemical_formula_sum 'C36 H58 Cr1 N4 Na2 O3' -_chemical_formula_moiety -; -C24 H32 Cr1 N4 2-,C4 H8 Na1 O1 1+,C8 H18 Na1 O2 1+ -; -_journal_coden_Cambridge 9 -_journal_volume 29 -_journal_year 1990 -_journal_page_first 2147 -_journal_name_full 'Inorg.Chem. ' -loop_ -_publ_author_name -"J.J.H.Edema" -"S.Gambarotta" -"A.Meetsma" -"F.van Bolhuis" -"A.L.Spek" -"W.J.J.Smeets" -_chemical_name_systematic -; -Tetrahydrofuran-sodium tetrahydrofuran-diethyl ether-sodium -tetrakis(2,5-dimethylpyrrolyl)-chromium(ii) -; -_cell_volume 1867.373 -_exptl_crystal_colour 'orange-red' -_exptl_crystal_density_diffrn 1.232 -_diffrn_ambient_temperature 130 -#These two values have been output from a single CSD field. -_refine_ls_R_factor_gt 0.042 -_refine_ls_wR_factor_gt 0.042 -_symmetry_cell_setting monoclinic -_symmetry_space_group_name_H-M 'P 21' -_symmetry_Int_Tables_number 4 -loop_ -_symmetry_equiv_pos_site_id -_symmetry_equiv_pos_as_xyz -1 x,y,z -2 -x,1/2+y,-z -_cell_length_a 9.045(1) -_cell_length_b 15.285(1) -_cell_length_c 13.621(1) -_cell_angle_alpha 90 -_cell_angle_beta 97.42(1) -_cell_angle_gamma 90 -_cell_formula_units_Z 2 -loop_ -_atom_type_symbol -_atom_type_radius_bond -C 0.68 -H 0.23 -Cr 1.35 -N 0.68 -Na 1.31 -O 0.68 -loop_ -_atom_site_label -_atom_site_type_symbol -_atom_site_fract_x -_atom_site_fract_y -_atom_site_fract_z -Cr1 Cr 0.10015(9) 0.52680 0.19312(6) -N1 N 0.1382(5) 0.4003(3) 0.1474(3) -N2 N 0.1152(5) 0.6608(3) 0.2203(3) -N3 N 0.2007(5) 0.4980(3) 0.3360(3) -N4 N -0.0576(4) 0.5444(3) 0.0689(3) -C1 C 0.2772(6) 0.3671(4) 0.1329(4) -C2 C 0.2617(7) 0.2823(4) 0.1023(4) -C3 C 0.1092(6) 0.2610(4) 0.0968(4) -C4 C 0.0367(6) 0.3344(4) 0.1221(3) -C5 C -0.1263(6) 0.3479(4) 0.1203(4) -C6 C 0.4147(6) 0.4214(4) 0.1486(5) -C7 C 0.1727(7) 0.7167(4) 0.1553(4) -C8 C 0.1519(7) 0.8030(4) 0.1840(5) -C9 C 0.0842(7) 0.7995(4) 0.2702(5) -C10 C 0.0647(7) 0.7122(4) 0.2918(4) -C11 C 0.0104(8) 0.6731(5) 0.3817(5) -C12 C 0.2507(7) 0.6846(4) 0.0734(5) -C13 C 0.3346(5) 0.5264(5) 0.3843(3) -C14 C 0.3582(7) 0.4927(4) 0.4778(4) -C15 C 0.2349(7) 0.4386(4) 0.4885(4) -C16 C 0.1406(6) 0.4454(3) 0.4027(4) -C17 C -0.0113(7) 0.4046(4) 0.3787(5) -C18 C 0.4290(6) 0.5921(4) 0.3395(4) -C19 C -0.0543(5) 0.5249(4) -0.0291(3) -C20 C -0.1939(5) 0.5340(4) -0.0813(4) -C21 C -0.2905(6) 0.5585(3) -0.0133(4) -C22 C -0.2048(6) 0.5653(3) 0.0774(4) -C23 C -0.2580(6) 0.5780(4) 0.1754(4) -C24 C 0.0841(6) 0.4959(4) -0.0693(4) -Na1 Na 0.1179(3) 0.2397(2) -0.0981(2) -O1 O 0.3206(5) 0.2982(3) -0.1626(3) -C25 C 0.4185(7) 0.3639(6) -0.1165(5) -C26 C 0.4491(9) 0.4203(6) -0.2033(7) -C27 C 0.4626(9) 0.3546(6) -0.2839(6) -C28 C 0.3425(9) 0.2935(5) -0.2676(5) -Na2 Na 0.2850(3) 0.3181(2) 0.3187(2) -O2 O 0.1840(4) 0.1897(3) 0.3694(3) -O3 O 0.5152(5) 0.2413(4) 0.3336(3) -C29 C 0.0482(7) 0.1481(5) 0.3267(6) -C30 C 0.0455(8) 0.0578(4) 0.3653(5) -C31 C 0.2040(8) 0.0414(5) 0.4071(6) -C32 C 0.2603(8) 0.1310(5) 0.4400(5) -C33 C 0.6484(9) 0.2437(6) 0.4014(6) -C34 C 0.623(1) 0.3076(6) 0.4757(7) -C35 C 0.5208(9) 0.1606(6) 0.2707(5) -C36 C 0.6237(8) 0.1650(6) 0.1979(6) -H1 H 0.3417(7) 0.2433(4) 0.0870(4) -H2 H 0.0638(6) 0.2041(4) 0.0786(4) -H3 H -0.1689(6) 0.2890(4) 0.1217(4) -H4 H -0.1684(6) 0.3777(4) 0.0593(4) -H5 H -0.1502(6) 0.3812(4) 0.1777(4) -H6 H 0.4946(6) 0.3884(4) 0.1232(5) -H7 H 0.4427(6) 0.4333(4) 0.2192(5) -H8 H 0.3992(6) 0.4769(4) 0.1126(5) -H9 H 0.1796(7) 0.8558(4) 0.1500(5) -H10 H 0.0558(7) 0.8497(4) 0.3085(5) -H11 H -0.0293(8) 0.7187(5) 0.4217(5) -H12 H 0.0989(8) 0.6468(5) 0.4194(5) -H13 H -0.0656(8) 0.6280(5) 0.3649(5) -H14 H 0.2926(7) 0.7370(4) 0.0462(5) -H15 H 0.1830(7) 0.6556(4) 0.0214(5) -H16 H 0.3315(7) 0.6444(4) 0.0980(5) -H17 H 0.4441(7) 0.5040(4) 0.5278(4) -H18 H 0.2204(7) 0.4031(4) 0.5464(4) -H19 H -0.0226(7) 0.3735(4) 0.4402(5) -H20 H -0.0125(7) 0.3624(4) 0.3245(5) -H21 H -0.0936(7) 0.4461(4) 0.3636(5) -H22 H 0.5291(6) 0.5891(4) 0.3767(4) -H23 H 0.3864(6) 0.6501(4) 0.3480(4) -H24 H 0.4349(6) 0.5817(4) 0.2691(4) -H25 H -0.2210(5) 0.5251(4) -0.1526(4) -H26 H -0.3981(6) 0.5687(3) -0.0277(4) -H27 H -0.3614(6) 0.5986(4) 0.1654(4) -H28 H -0.1981(6) 0.6167(4) 0.2222(4) -H29 H -0.2547(6) 0.5184(4) 0.2021(4) -H30 H 0.0565(6) 0.4762(4) -0.1376(4) -H31 H 0.1344(6) 0.4482(4) -0.0300(4) -H32 H 0.1515(6) 0.5462(4) -0.0684(4) -H33 H 0.3704(7) 0.3978(6) -0.0685(5) -H34 H 0.5108(7) 0.3379(6) -0.0834(5) -H35 H 0.5416(9) 0.4536(6) -0.1874(7) -H36 H 0.3662(9) 0.4607(6) -0.2225(7) -H37 H 0.5604(9) 0.3260(6) -0.2754(6) -H38 H 0.4451(9) 0.3816(6) -0.3497(6) -H39 H 0.3707(9) 0.2339(5) -0.2840(5) -H40 H 0.2502(9) 0.3099(5) -0.3094(5) -H41 H -0.0377(7) 0.1809(5) 0.3443(6) -H42 H 0.0445(7) 0.1465(5) 0.2545(6) -H43 H -0.0206(8) 0.0537(4) 0.4167(5) -H44 H 0.0128(8) 0.0162(4) 0.3121(5) -H45 H 0.2097(8) 0.0011(5) 0.4634(6) -H46 H 0.2608(8) 0.0174(5) 0.3567(6) -H47 H 0.3683(8) 0.1348(5) 0.4393(5) -H48 H 0.2368(8) 0.1441(5) 0.5067(5) -H49 H 0.6675(9) 0.1859(6) 0.4315(6) -H50 H 0.7334(9) 0.2610(6) 0.3678(6) -H51 H 0.711(1) 0.3114(6) 0.5250(7) -H52 H 0.537(1) 0.2898(6) 0.5082(7) -H53 H 0.603(1) 0.3649(6) 0.4445(7) -H54 H 0.4205(9) 0.1502(6) 0.2360(5) -H55 H 0.5505(9) 0.1111(6) 0.3146(5) -H56 H 0.6201(8) 0.1101(6) 0.1605(6) -H57 H 0.7252(8) 0.1745(6) 0.2311(6) -H58 H 0.5952(8) 0.2137(6) 0.1525(6) -#END diff --git a/cell2mol/test/error_2/TAVHOO.search5.cif b/cell2mol/test/error_2/TAVHOO.search5.cif deleted file mode 100755 index 371675759..000000000 --- a/cell2mol/test/error_2/TAVHOO.search5.cif +++ /dev/null @@ -1,163 +0,0 @@ - -####################################################################### -# -# Cambridge Crystallographic Data Centre -# CCDC -# -####################################################################### -# -# If this CIF has been generated from an entry in the Cambridge -# Structural Database, then it will include bibliographic, chemical, -# crystal, experimental, refinement or atomic coordinate data resulting -# from the CCDC's data processing and validation procedures. -# -####################################################################### - -data_CSD_CIF_TAVHOO -_audit_creation_date 2005-12-15 -_audit_creation_method CSD-ConQuest-V1 -_database_code_CSD TAVHOO -_database_code_depnum_ccdc_archive 'CCDC 284638' -_chemical_formula_sum 'C26 H45 Fe1 K1 N7 O3' -_chemical_formula_moiety -; -K1 1+,C26 H45 Fe1 N7 O3 1- -; -_journal_coden_Cambridge 4 -_journal_volume 127 -_journal_year 2005 -_journal_page_first 11596 -_journal_name_full 'J.Am.Chem.Soc. ' -loop_ -_publ_author_name -"R.L.Lucas" -"D.R.Powell" -"A.S.Borovik" -_chemical_name_systematic -; -Potassium -(bis((N'-t-butylureayl)-N-ethyl)-(N''-isopropylcarbamoylmethyl)aminato)-(p-tol -ylamido)-iron(iii) -; -_cell_volume 1554.979 -_exptl_crystal_colour 'green' -_exptl_crystal_density_diffrn 1.279 -_exptl_crystal_description 'plate' -_diffrn_ambient_temperature 100 -#These two values have been output from a single CSD field. -_refine_ls_R_factor_gt 0.0642 -_refine_ls_wR_factor_gt 0.0642 -_symmetry_cell_setting triclinic -_symmetry_space_group_name_H-M 'P -1' -_symmetry_Int_Tables_number 2 -loop_ -_symmetry_equiv_pos_site_id -_symmetry_equiv_pos_as_xyz -1 x,y,z -2 -x,-y,-z -_cell_length_a 10.256(3) -_cell_length_b 11.650(4) -_cell_length_c 14.419(5) -_cell_angle_alpha 108.008(5) -_cell_angle_beta 100.887(6) -_cell_angle_gamma 100.453(6) -_cell_formula_units_Z 2 -loop_ -_atom_type_symbol -_atom_type_radius_bond -C 0.68 -H 0.23 -Fe 1.34 -K 1.33 -N 0.68 -O 0.68 -loop_ -_atom_site_label -_atom_site_type_symbol -_atom_site_fract_x -_atom_site_fract_y -_atom_site_fract_z -Fe1 Fe 0.34373(6) 0.22013(6) 0.64141(5) -O1 O 0.6988(4) 0.4625(4) 0.6271(3) -O2 O 0.1915(3) -0.1654(3) 0.5842(2) -O3 O 0.1111(3) 0.4426(3) 0.5662(3) -N1 N 0.2670(3) 0.1904(3) 0.4811(3) -N2 N 0.5091(4) 0.3080(4) 0.6053(3) -N3 N 0.2494(4) 0.0358(3) 0.5862(3) -N4 N 0.2023(3) 0.3216(3) 0.6459(3) -N5 N 0.6070(4) 0.4728(4) 0.7585(3) -H1 H 0.547(7) 0.428(6) 0.778(5) -N6 N 0.2683(5) -0.0062(4) 0.7344(3) -H2 H 0.309(5) 0.066(5) 0.756(4) -N7 N 0.4348(4) 0.2539(4) 0.7835(3) -H3 H 0.356(4) 0.242(3) 0.798(2) -C1 C 0.3825(4) 0.1691(4) 0.4364(3) -H4 H 0.36090 0.16990 0.36670 -H5 H 0.39710 0.08640 0.43310 -C2 C 0.5103(5) 0.2697(5) 0.4997(4) -H6 H 0.59230 0.23820 0.49110 -H7 H 0.51520 0.34240 0.47750 -C3 C 0.6101(5) 0.4147(5) 0.6619(4) -C4 C 0.7171(5) 0.5759(4) 0.8354(4) -C5 C 0.6691(6) 0.6067(5) 0.9322(4) -H8 H 0.58730 0.63830 0.92220 -H9 H 0.74240 0.67040 0.98770 -H10 H 0.64680 0.53110 0.94860 -C6 C 0.7360(7) 0.6903(5) 0.8079(4) -H11 H 0.76340 0.67260 0.74440 -H12 H 0.80750 0.75830 0.86160 -H13 H 0.64940 0.71510 0.79950 -C7 C 0.8506(6) 0.5357(6) 0.8520(5) -H14 H 0.83810 0.46700 0.87780 -H15 H 0.92410 0.60640 0.90110 -H16 H 0.87540 0.50780 0.78780 -C8 C 0.1496(4) 0.0801(4) 0.4390(3) -H17 H 0.12730 0.04940 0.36420 -H18 H 0.06820 0.10240 0.45980 -C9 C 0.1842(5) -0.0208(4) 0.4764(3) -H19 H 0.09970 -0.08660 0.46280 -H20 H 0.24790 -0.05940 0.44090 -C10 C 0.2365(4) -0.0514(4) 0.6321(3) -C11 C 0.2758(5) -0.0799(4) 0.8007(4) -C12 C 0.3141(6) 0.0133(5) 0.9081(4) -H21 H 0.40450 0.07000 0.92230 -H22 H 0.31710 -0.03150 0.95550 -H23 H 0.24540 0.06160 0.91580 -C13 C 0.3852(5) -0.1528(5) 0.7862(4) -H24 H 0.36120 -0.21060 0.71610 -H25 H 0.38970 -0.20010 0.83180 -H26 H 0.47480 -0.09430 0.80140 -C14 C 0.1354(5) -0.1696(5) 0.7784(4) -H27 H 0.06670 -0.12180 0.78920 -H28 H 0.14030 -0.21730 0.82380 -H29 H 0.10920 -0.22710 0.70820 -C15 C 0.2263(5) 0.3043(4) 0.4792(3) -H30 H 0.15300 0.28390 0.41670 -H31 H 0.30610 0.36560 0.47800 -C16 C 0.1749(4) 0.3619(4) 0.5702(3) -C17 C 0.1408(5) 0.3714(4) 0.7303(3) -H32 H 0.05660 0.39420 0.70200 -C18 C 0.0957(5) 0.2707(5) 0.7728(4) -H33 H 0.03870 0.19480 0.71750 -H34 H 0.04240 0.30020 0.82080 -H35 H 0.17690 0.25250 0.80740 -C19 C 0.2368(6) 0.4883(4) 0.8109(4) -H36 H 0.32000 0.46860 0.84080 -H37 H 0.19110 0.52100 0.86350 -H38 H 0.26150 0.55110 0.78070 -C20 C 0.5566(5) 0.2240(4) 0.8212(4) -C21 C 0.6183(5) 0.1495(5) 0.7554(4) -H39 H 0.57980 0.12130 0.68450 -C22 C 0.7355(5) 0.1167(5) 0.7933(4) -H40 H 0.77400 0.06500 0.74690 -C23 C 0.7966(5) 0.1548(5) 0.8925(4) -C24 C 0.7379(5) 0.2321(4) 0.9585(4) -H41 H 0.78070 0.26310 1.02900 -C25 C 0.6219(5) 0.2642(4) 0.9251(4) -H42 H 0.58400 0.31470 0.97270 -C26 C 0.9230(6) 0.1146(5) 0.9322(4) -H43 H 0.91650 0.02900 0.88920 -H44 H 0.92780 0.11810 1.00160 -H45 H 1.00600 0.17090 0.93130 -K1 K 0.84749(11) 0.39119(9) 0.51490(9) -#END diff --git a/cell2mol/test/error_2/URUKIC.search6.cif b/cell2mol/test/error_2/URUKIC.search6.cif deleted file mode 100755 index 03550daa6..000000000 --- a/cell2mol/test/error_2/URUKIC.search6.cif +++ /dev/null @@ -1,123 +0,0 @@ - -####################################################################### -# -# Cambridge Crystallographic Data Centre -# CCDC -# -####################################################################### -# -# If this CIF has been generated from an entry in the Cambridge -# Structural Database, then it will include bibliographic, chemical, -# crystal, experimental, refinement or atomic coordinate data resulting -# from the CCDC's data processing and validation procedures. -# -####################################################################### - -data_CSD_CIF_URUKIC -_audit_creation_date 2011-08-02 -_audit_creation_method CSD-ConQuest-V1 -_database_code_CSD URUKIC -_database_code_depnum_ccdc_archive 'CCDC 789466' -_chemical_formula_sum 'C15 H19 Co1 N2 O2' -_chemical_formula_moiety -; -C15 H19 Co1 N2 O2 -; -_journal_coden_Cambridge 36 -_journal_volume 696 -_journal_year 2011 -_journal_page_first 1975 -_journal_name_full 'J.Organomet.Chem. ' -loop_ -_publ_author_name -"O.M.El-Kadri" -"M.J.Heeg" -"C.H.Winter" -_chemical_name_systematic -; -(\h^3^-3,5-dimethyl-1-(1,2,3,4-tetramethylcyclobut-2-en-1-yl)-1H-pyrazole)-dic -arbonyl-cobalt(i) -; -_cell_volume 3015.350 -_exptl_crystal_colour 'yellow' -_exptl_crystal_density_diffrn 1.402 -_exptl_crystal_description 'rod' -_diffrn_ambient_temperature 100 -#These two values have been output from a single CSD field. -_refine_ls_R_factor_gt 0.0265 -_refine_ls_wR_factor_gt 0.0265 -_symmetry_cell_setting monoclinic -_symmetry_space_group_name_H-M 'C 2/c' -_symmetry_Int_Tables_number 15 -loop_ -_symmetry_equiv_pos_site_id -_symmetry_equiv_pos_as_xyz -1 x,y,z -2 -x,y,1/2-z -3 1/2+x,1/2+y,z -4 1/2-x,1/2+y,1/2-z -5 -x,-y,-z -6 x,-y,-1/2+z -7 -1/2-x,-1/2-y,-z -8 -1/2+x,-1/2-y,-1/2+z -_cell_length_a 25.1187(7) -_cell_length_b 9.5441(3) -_cell_length_c 15.5266(4) -_cell_angle_alpha 90 -_cell_angle_beta 125.896(1) -_cell_angle_gamma 90 -_cell_formula_units_Z 8 -loop_ -_atom_type_symbol -_atom_type_radius_bond -C 0.68 -H 0.23 -Co 1.19 -N 0.68 -O 0.68 -loop_ -_atom_site_label -_atom_site_type_symbol -_atom_site_fract_x -_atom_site_fract_y -_atom_site_fract_z -Co1 Co 0.152055(7) 0.518345(15) 0.178865(11) -C1 C 0.21965(6) 0.53714(12) 0.31408(9) -O1 O 0.26290(4) 0.55821(10) 0.40115(7) -C2 C 0.09890(6) 0.63974(12) 0.17873(8) -O2 O 0.06556(5) 0.72757(10) 0.17298(7) -N1 N 0.11927(4) 0.31786(10) 0.14919(7) -N2 N 0.11194(5) 0.27777(10) 0.05831(7) -C3 C 0.10314(7) 0.21712(14) 0.27792(10) -C4 C 0.10061(5) 0.20954(12) 0.17965(9) -C5 C 0.08062(6) 0.09864(12) 0.10693(9) -C6 C 0.08827(5) 0.14487(12) 0.03025(9) -C7 C 0.07307(6) 0.06658(13) -0.06524(10) -C8 C 0.13440(5) 0.39017(11) 0.02122(8) -C9 C 0.10641(5) 0.53554(12) 0.01896(9) -C10 C 0.17162(5) 0.59472(12) 0.08008(8) -C11 C 0.19994(5) 0.45796(12) 0.11335(8) -C12 C 0.12969(6) 0.35059(14) -0.07744(10) -C13 C 0.04093(6) 0.59656(13) -0.06519(9) -C14 C 0.19888(6) 0.73613(13) 0.08697(10) -C15 C 0.26893(6) 0.40847(13) 0.16617(10) -H1 H 0.0631(11) 0.190(2) 0.2668(16) -H2 H 0.1359(10) 0.157(2) 0.3310(16) -H3 H 0.113(1) 0.312(2) 0.3069(17) -H4 H 0.0668(9) 0.0133(17) 0.1125(14) -H5 H 0.1122(8) 0.0533(18) -0.0656(13) -H6 H 0.0560(9) -0.0211(17) -0.0630(14) -H7 H 0.0395(8) 0.1147(19) -0.1331(13) -H8 H 0.1448(7) 0.4275(18) -0.0975(12) -H9 H 0.1556(8) 0.2731(18) -0.0676(12) -H10 H 0.0839(8) 0.3294(17) -0.1383(12) -H11 H 0.0065(8) 0.5470(18) -0.0699(13) -H12 H 0.0383(9) 0.694(2) -0.0502(14) -H13 H 0.0336(8) 0.5926(17) -0.1346(13) -H14 H 0.2413(8) 0.7481(17) 0.1542(13) -H15 H 0.2048(8) 0.7507(18) 0.0318(14) -H16 H 0.1696(8) 0.8115(18) 0.0800(13) -H17 H 0.2994(9) 0.4749(18) 0.2181(15) -H18 H 0.2778(8) 0.3209(18) 0.2053(13) -H19 H 0.2787(8) 0.3966(18) 0.1148(13) -#END diff --git a/cell2mol/test/error_2/VEYTAW.search5.cif b/cell2mol/test/error_2/VEYTAW.search5.cif deleted file mode 100755 index 01b61137d..000000000 --- a/cell2mol/test/error_2/VEYTAW.search5.cif +++ /dev/null @@ -1,249 +0,0 @@ - -####################################################################### -# -# Cambridge Crystallographic Data Centre -# CCDC -# -####################################################################### -# -# If this CIF has been generated from an entry in the Cambridge -# Structural Database, then it will include bibliographic, chemical, -# crystal, experimental, refinement or atomic coordinate data resulting -# from the CCDC's data processing and validation procedures. -# -####################################################################### - -data_CSD_CIF_VEYTAW -_audit_creation_date 2013-05-24 -_audit_creation_method CSD-ConQuest-V1 -_database_code_CSD VEYTAW -_database_code_depnum_ccdc_archive 'CCDC 941684' -_chemical_formula_sum 'C50 H103 Fe1 K1 O13' -_chemical_formula_moiety -; -C30 H63 Fe1 O3 1-,C20 H40 K1 O10 1+ -; -_journal_coden_Cambridge 9 -_journal_volume 52 -_journal_year 2013 -_journal_page_first 3159 -_journal_name_full 'Inorg.Chem. ' -loop_ -_publ_author_name -"M.B.Chambers" -"S.Groysman" -"D.Villagran" -"D.G.Nocera" -_chemical_name_systematic -; -bis(1,4,7,10,13-pentaoxacyclopentadecane)-potassium -tris(2,2,3,4,4-pentamethylpentan-3-olato)-iron(ii) -; -_cell_volume 5718.555 -_exptl_crystal_colour 'yellow' -_exptl_crystal_density_diffrn 1.17 -_exptl_crystal_description 'Block' -_diffrn_ambient_temperature 100 -#These two values have been output from a single CSD field. -_refine_ls_R_factor_gt 0.0422 -_refine_ls_wR_factor_gt 0.0422 -_symmetry_cell_setting monoclinic -_symmetry_space_group_name_H-M 'P 21/n' -_symmetry_Int_Tables_number 14 -loop_ -_symmetry_equiv_pos_site_id -_symmetry_equiv_pos_as_xyz -1 x,y,z -2 1/2-x,1/2+y,1/2-z -3 -x,-y,-z -4 -1/2+x,-1/2-y,-1/2+z -_cell_length_a 11.381(3) -_cell_length_b 17.218(5) -_cell_length_c 29.190(9) -_cell_angle_alpha 90 -_cell_angle_beta 91.295(5) -_cell_angle_gamma 90 -_cell_formula_units_Z 4 -loop_ -_atom_type_symbol -_atom_type_radius_bond -C 0.68 -H 0.23 -Fe 1.52 -K 2.03 -O 0.68 -loop_ -_atom_site_label -_atom_site_type_symbol -_atom_site_fract_x -_atom_site_fract_y -_atom_site_fract_z -Fe1 Fe 0.85163(3) 0.754865(17) 0.091862(10) -O1 O 0.99747(13) 0.78182(9) 0.06883(6) -C1 C 1.09286(18) 0.74739(13) 0.04721(8) -C2 C 1.0454(2) 0.69305(15) 0.00874(9) -H1 H 0.98310 0.66010 0.02080 -H2 H 1.10940 0.66030 -0.00220 -H3 H 1.01370 0.72440 -0.01670 -C3 C 1.1631(2) 0.69550(14) 0.08386(9) -C4 C 1.2852(2) 0.66953(17) 0.06920(11) -H4 H 1.33830 0.71440 0.06920 -H5 H 1.27990 0.64720 0.03830 -H6 H 1.31580 0.63040 0.09070 -C5 C 1.0932(2) 0.62039(16) 0.09283(11) -H7 H 1.09770 0.58610 0.06610 -H8 H 1.01080 0.63350 0.09820 -H9 H 1.12660 0.59390 0.11980 -C6 C 1.1726(3) 0.73606(19) 0.13051(10) -H10 H 1.21110 0.70130 0.15280 -H11 H 1.09380 0.74920 0.14090 -H12 H 1.21910 0.78370 0.12770 -C7 C 1.1628(2) 0.81742(14) 0.02404(8) -C8 C 1.2508(3) 0.79020(18) -0.01245(10) -H13 H 1.28910 0.83550 -0.02580 -H14 H 1.20850 0.76130 -0.03660 -H15 H 1.31030 0.75650 0.00200 -C9 C 1.0743(2) 0.87096(16) -0.00061(9) -H16 H 1.02100 0.89330 0.02180 -H17 H 1.02880 0.84100 -0.02340 -H18 H 1.11650 0.91280 -0.01600 -C10 C 1.2281(2) 0.86783(16) 0.05906(11) -H19 H 1.25620 0.91500 0.04410 -H20 H 1.29520 0.83890 0.07200 -H21 H 1.17500 0.88200 0.08370 -O2 O 0.80525(13) 0.65074(9) 0.09362(6) -C11 C 0.70351(19) 0.60813(13) 0.10332(8) -C12 C 0.5983(2) 0.66415(16) 0.10711(14) -H22 H 0.60930 0.69690 0.13430 -H23 H 0.52560 0.63410 0.10970 -H24 H 0.59330 0.69700 0.07970 -C13 C 0.7232(2) 0.56818(16) 0.15196(8) -C14 C 0.6113(3) 0.53279(19) 0.17253(10) -H25 H 0.58240 0.49050 0.15280 -H26 H 0.55070 0.57300 0.17460 -H27 H 0.62990 0.51240 0.20320 -C15 C 0.8142(3) 0.5035(2) 0.15154(12) -H28 H 0.88710 0.52320 0.13860 -H29 H 0.78440 0.46020 0.13280 -H30 H 0.82980 0.48550 0.18290 -C16 C 0.7686(3) 0.6301(2) 0.18601(11) -H31 H 0.77510 0.60740 0.21680 -H32 H 0.71370 0.67390 0.18630 -H33 H 0.84600 0.64830 0.17660 -C17 C 0.6817(2) 0.55197(16) 0.06096(9) -C18 C 0.5849(3) 0.4913(2) 0.06621(10) -H34 H 0.56820 0.46660 0.03650 -H35 H 0.51350 0.51650 0.07710 -H36 H 0.61080 0.45180 0.08840 -C19 C 0.6433(4) 0.6010(3) 0.01905(13) -H37 H 0.64220 0.56830 -0.00840 -H38 H 0.69890 0.64390 0.01510 -H39 H 0.56450 0.62210 0.02380 -C20 C 0.7951(3) 0.5132(2) 0.04499(12) -H40 H 0.81800 0.47200 0.06650 -H41 H 0.85790 0.55210 0.04380 -H42 H 0.78180 0.49090 0.01440 -O3 O 0.75530(13) 0.83096(9) 0.11668(6) -C21 C 0.7535(2) 0.91164(13) 0.12152(8) -C22 C 0.8445(2) 0.94873(14) 0.08935(9) -H43 H 0.91960 0.92120 0.09270 -H44 H 0.85570 1.00350 0.09750 -H45 H 0.81580 0.94500 0.05750 -C23 C 0.6251(2) 0.93918(13) 0.10468(8) -C24 C 0.6110(2) 1.02700(15) 0.09772(10) -H46 H 0.53220 1.03810 0.08520 -H47 H 0.66990 1.04550 0.07630 -H48 H 0.62200 1.05360 0.12720 -C25 C 0.5291(2) 0.91014(15) 0.13655(9) -H49 H 0.53140 0.94040 0.16500 -H50 H 0.54250 0.85520 0.14370 -H51 H 0.45200 0.91630 0.12130 -C26 C 0.5957(2) 0.90028(18) 0.05797(9) -H52 H 0.51560 0.91430 0.04810 -H53 H 0.60160 0.84370 0.06110 -H54 H 0.65130 0.91820 0.03510 -C27 C 0.7926(2) 0.93013(14) 0.17326(8) -C28 C 0.7738(3) 1.01508(17) 0.18782(10) -H55 H 0.68950 1.02520 0.19050 -H56 H 0.80640 1.04980 0.16470 -H57 H 0.81360 1.02430 0.21740 -C29 C 0.9244(2) 0.91218(19) 0.17941(11) -H58 H 0.94720 0.91670 0.21190 -H59 H 0.96990 0.94910 0.16150 -H60 H 0.94000 0.85920 0.16880 -C30 C 0.7304(3) 0.87766(17) 0.20811(9) -H61 H 0.73220 0.82370 0.19750 -H62 H 0.64860 0.89440 0.21090 -H63 H 0.77090 0.88150 0.23800 -K1 K 0.24644(4) 1.24847(3) 0.162422(16) -O4 O 0.17213(14) 1.13824(9) 0.09652(5) -O5 O 0.27286(14) 1.08944(9) 0.18450(5) -O6 O 0.42372(14) 1.20754(10) 0.22841(6) -O7 O 0.50868(16) 1.23485(10) 0.14144(6) -O8 O 0.33715(15) 1.25168(10) 0.07047(6) -C31 C 0.1518(2) 1.06573(14) 0.11832(9) -H64 H 0.13240 1.02620 0.09470 -H65 H 0.08330 1.07070 0.13840 -C32 C 0.2557(2) 1.03877(14) 0.14625(9) -H66 H 0.24230 0.98510 0.15710 -H67 H 0.32660 1.03880 0.12720 -C33 C 0.3771(2) 1.07251(15) 0.21055(9) -H68 H 0.44570 1.07230 0.19030 -H69 H 0.37060 1.02060 0.22480 -C34 C 0.3933(2) 1.13345(15) 0.24712(9) -H70 H 0.31960 1.13850 0.26430 -H71 H 0.45610 1.11670 0.26900 -C35 C 0.5465(2) 1.21579(16) 0.22004(9) -H72 H 0.58080 1.16460 0.21260 -H73 H 0.58750 1.23620 0.24780 -C36 C 0.5620(2) 1.27041(16) 0.18098(10) -H74 H 0.52370 1.32080 0.18740 -H75 H 0.64650 1.27980 0.17600 -C37 C 0.5280(2) 1.27739(16) 0.10088(10) -H76 H 0.61270 1.27690 0.09370 -H77 H 0.50320 1.33200 0.10490 -C38 C 0.4584(2) 1.24075(17) 0.06274(9) -H78 H 0.47940 1.26460 0.03320 -H79 H 0.47630 1.18460 0.06120 -C39 C 0.2615(2) 1.21254(15) 0.03922(8) -H80 H 0.29890 1.21030 0.00900 -H81 H 0.18750 1.24240 0.03550 -C40 C 0.2331(2) 1.13163(15) 0.05438(8) -H82 H 0.18300 1.10520 0.03100 -H83 H 0.30610 1.10110 0.05900 -O9 O 0.07887(15) 1.33249(10) 0.11169(6) -O10 O 0.29555(15) 1.40475(10) 0.14265(6) -O11 O 0.21629(16) 1.3802(1) 0.23170(6) -O12 O 0.13191(16) 1.22641(10) 0.24945(6) -O13 O 0.00129(15) 1.20388(10) 0.16654(6) -C41 C 0.1057(2) 1.41243(14) 0.10238(9) -H84 H 0.07430 1.44600 0.12680 -H85 H 0.06910 1.42830 0.07270 -C42 C 0.2362(2) 1.42099(16) 0.10064(9) -H86 H 0.26620 1.38560 0.07680 -H87 H 0.25490 1.47480 0.09130 -C43 C 0.2892(2) 1.46510(15) 0.17645(10) -H88 H 0.21050 1.48960 0.17520 -H89 H 0.34870 1.50560 0.17050 -C44 C 0.3114(2) 1.42977(17) 0.22226(11) -H90 H 0.38570 1.39990 0.22240 -H91 H 0.31820 1.47080 0.24590 -C45 C 0.2258(3) 1.34145(16) 0.27470(9) -H92 H 0.22900 1.37990 0.29990 -H93 H 0.29870 1.31000 0.27620 -C46 C 0.1206(3) 1.29004(16) 0.27935(9) -H94 H 0.11540 1.27150 0.31130 -H95 H 0.04810 1.31940 0.27150 -C47 C 0.0262(2) 1.18165(16) 0.24494(9) -H96 H -0.01410 1.18110 0.27460 -H97 H 0.04650 1.12740 0.23710 -C48 C -0.0556(2) 1.21385(17) 0.20857(9) -H98 H -0.13130 1.18550 0.20830 -H99 H -0.07110 1.26960 0.21420 -C49 C -0.0624(2) 1.23549(15) 0.12789(9) -H100 H -0.14750 1.22700 0.13200 -H101 H -0.03940 1.20740 0.09990 -C50 C -0.0405(2) 1.32043(15) 0.12151(9) -H102 H -0.09070 1.34040 0.09600 -H103 H -0.06060 1.34890 0.14970 -#END diff --git a/cell2mol/test/error_2/WOVMAY.search2.cif b/cell2mol/test/error_2/WOVMAY.search2.cif deleted file mode 100755 index c6d13b008..000000000 --- a/cell2mol/test/error_2/WOVMAY.search2.cif +++ /dev/null @@ -1,210 +0,0 @@ - -####################################################################### -# -# Cambridge Crystallographic Data Centre -# CCDC -# -####################################################################### -# -# If this CIF has been generated from an entry in the Cambridge -# Structural Database, then it will include bibliographic, chemical, -# crystal, experimental, refinement or atomic coordinate data resulting -# from the CCDC's data processing and validation procedures. -# -####################################################################### - -data_CSD_CIF_WOVMAY -_audit_creation_date 2019-11-08 -_audit_creation_method CSD-ConQuest-V1 -_database_code_CSD WOVMAY -_database_code_depnum_ccdc_archive 'CCDC 1874629' -_chemical_formula_sum 'C40 H70 K1 Mn1 O8' -_chemical_formula_moiety -; -C20 H40 K1 O8 1+,C20 H30 Mn1 1- -; -_journal_coden_Cambridge 222 -_journal_volume 48 -_journal_year 2019 -_journal_page_first 17078 -_journal_name_full 'Dalton Trans. ' -loop_ -_publ_author_name -"M.Malischewski" -"K.Seppelt" -_chemical_name_systematic -; -(18-crown-6)-bis(tetrahydrofuran)-potassium -bis(pentamethylcyclopentadienyl)-manganese(i) -; -_cell_volume 4315.366 -_exptl_crystal_colour 'brown' -_exptl_crystal_density_diffrn 1.19 -_exptl_special_details -; -Air-sensitive,Moisture-sensitive,Oxygen-sensitive - -; -_exptl_crystal_description 'cube' -_exptl_crystal_preparation 'Re-crystallisation from solvent' -_diffrn_ambient_temperature 100 -_diffrn_special_details -; -twin - -; -#These two values have been output from a single CSD field. -_refine_ls_R_factor_gt 0.0288 -_refine_ls_wR_factor_gt 0.0288 -_symmetry_cell_setting monoclinic -_symmetry_space_group_name_H-M 'C c' -_symmetry_Int_Tables_number 9 -loop_ -_symmetry_equiv_pos_site_id -_symmetry_equiv_pos_as_xyz -1 x,y,z -2 x,-y,1/2+z -3 1/2+x,1/2+y,z -4 1/2+x,1/2-y,1/2+z -_cell_length_a 22.671(2) -_cell_length_b 11.9085(10) -_cell_length_c 17.1759(17) -_cell_angle_alpha 90 -_cell_angle_beta 111.469(3) -_cell_angle_gamma 90 -_cell_formula_units_Z 4 -loop_ -_atom_type_symbol -_atom_type_radius_bond -C 0.68 -H 0.23 -K 2.03 -Mn 1.61 -O 0.68 -loop_ -_atom_site_label -_atom_site_type_symbol -_atom_site_fract_x -_atom_site_fract_y -_atom_site_fract_z -K1 K 0.21716(14) 0.7500(2) 0.08521(19) -O1 O 0.1153(3) 0.7711(5) 0.1358(4) -O2 O 0.3172(3) 0.7288(5) 0.0335(4) -O3 O 0.2777(3) 0.5372(5) 0.0959(4) -C1 C 0.0807(4) 0.8713(7) 0.1169(5) -H1 H 0.05550 0.87830 0.15170 -H2 H 0.05210 0.87050 0.05880 -O4 O 0.2771(3) 0.9461(5) 0.0598(4) -C2 C 0.3548(4) 0.6271(8) 0.0538(6) -H3 H 0.38310 0.62790 0.11200 -H4 H 0.38000 0.62050 0.01900 -C3 C 0.0780(4) 0.6755(8) 0.1239(5) -H5 H 0.05430 0.66490 0.06460 -H6 H 0.04790 0.68490 0.15160 -C4 C 0.3584(4) 0.8273(7) 0.0460(6) -H7 H 0.38810 0.81730 0.01780 -H8 H 0.38210 0.83940 0.10510 -C5 C 0.3094(5) 0.5315(8) 0.0379(6) -H9 H 0.27870 0.53550 -0.01890 -H10 H 0.33210 0.46090 0.04450 -O5 O 0.1530(4) 0.7401(7) -0.0831(4) -O6 O 0.2823(4) 0.7691(6) 0.2531(4) -C6 C 0.3459(5) 0.7201(8) 0.2904(6) -H11 H 0.37750 0.77130 0.28490 -H12 H 0.34830 0.65000 0.26290 -C7 C 0.0910(5) 0.7775(8) -0.1207(7) -H13 H 0.08510 0.84700 -0.09500 -H14 H 0.06170 0.72190 -0.11460 -C8 C 0.2002(4) 0.4616(7) 0.1423(5) -H15 H 0.17700 0.39380 0.14400 -H16 H 0.22930 0.47770 0.19870 -C9 C 0.1972(4) 1.0551(7) 0.0809(6) -H17 H 0.22570 1.06440 0.13860 -H18 H 0.17240 1.12320 0.06340 -C10 C 0.1178(5) 0.5754(8) 0.1582(6) -H19 H 0.14420 0.58800 0.21640 -H20 H 0.09110 0.51070 0.15530 -C11 C 0.2581(5) 0.7906(7) 0.3142(6) -H21 H 0.21230 0.78300 0.29170 -H22 H 0.26880 0.86630 0.33550 -O7 O 0.1563(3) 0.5548(5) 0.1114(4) -C12 C 0.1777(5) 0.7103(8) -0.1473(5) -H23 H 0.17090 0.63140 -0.16180 -H24 H 0.22260 0.72710 -0.12950 -C13 C 0.2355(4) 0.4450(7) 0.0871(6) -H25 H 0.25940 0.37550 0.10130 -H26 H 0.20630 0.43980 0.02950 -C14 C 0.3149(5) 0.9247(8) 0.0092(6) -H27 H 0.33960 0.99080 0.00810 -H28 H 0.28750 0.90750 -0.04780 -C15 C 0.2353(4) 1.0338(7) 0.0254(5) -H29 H 0.20700 1.01430 -0.03070 -H30 H 0.25850 1.10090 0.02220 -C16 C 0.0792(5) 0.7967(9) -0.2146(6) -H31 H 0.04950 0.74230 -0.24970 -H32 H 0.06340 0.87180 -0.23220 -C17 C 0.3569(5) 0.7003(9) 0.3806(7) -H33 H 0.38370 0.75830 0.41560 -H34 H 0.37650 0.62770 0.39880 -C18 C 0.2877(4) 0.7046(5) 0.3839(5) -H35 H 0.26650 0.63240 0.37100 -H36 H 0.28820 0.73100 0.43760 -C19 C 0.1406(4) 0.7814(8) -0.2169(5) -H37 H 0.16130 0.85360 -0.21300 -H38 H 0.13740 0.74650 -0.26940 -O8 O 0.1565(3) 0.9623(5) 0.0744(4) -C20 C 0.1248(4) 0.9685(7) 0.1318(6) -H39 H 0.10130 1.03830 0.12400 -H40 H 0.15540 0.96650 0.18870 -Mn1 Mn 0.46703(10) 0.21887(3) 0.33501(13) -C21 C 0.3958(4) 0.2935(6) 0.3671(5) -C22 C 0.5392(4) 0.2868(7) 0.3042(5) -C23 C 0.5478(3) 0.1740(7) 0.3145(4) -C24 C 0.4777(4) 0.3121(7) 0.2383(5) -C25 C 0.3864(4) 0.1689(6) 0.3569(5) -C26 C 0.4919(4) 0.1178(7) 0.2547(5) -C27 C 0.5865(4) 0.3774(8) 0.3490(6) -H41 H 0.61690 0.38600 0.32270 -H42 H 0.60780 0.35640 0.40650 -H43 H 0.56460 0.44720 0.34630 -C28 C 0.4402(4) 0.1168(7) 0.4142(6) -C29 C 0.4555(4) 0.3078(7) 0.4310(5) -C30 C 0.3897(4) 0.1857(9) 0.1357(5) -H44 H 0.39840 0.18980 0.08520 -H45 H 0.35910 0.24200 0.13460 -H46 H 0.37320 0.11270 0.14020 -C31 C 0.4833(4) 0.2002(7) 0.4620(5) -C32 C 0.4499(4) 0.2053(6) 0.2097(5) -C33 C 0.4834(4) 0.4223(8) 0.4650(6) -H47 H 0.47600 0.43780 0.51560 -H48 H 0.46360 0.47920 0.42430 -H49 H 0.52820 0.42190 0.47670 -C34 C 0.4825(5) -0.0075(8) 0.2409(6) -H50 H 0.43820 -0.02480 0.22330 -H51 H 0.50520 -0.04630 0.29210 -H52 H 0.49810 -0.03070 0.19840 -C35 C 0.4492(4) 0.4226(7) 0.2070(6) -H53 H 0.46360 0.47680 0.25130 -H54 H 0.40380 0.41690 0.18760 -H55 H 0.46160 0.44580 0.16170 -C36 C 0.3285(4) 0.1149(7) 0.2976(5) -H56 H 0.33990 0.04770 0.27560 -H57 H 0.30750 0.16570 0.25250 -H58 H 0.30050 0.09640 0.32630 -C37 C 0.6061(4) 0.1151(7) 0.3759(6) -H59 H 0.63950 0.11600 0.35410 -H60 H 0.59560 0.03880 0.38340 -H61 H 0.61980 0.15350 0.42870 -C38 C 0.5462(4) 0.1820(8) 0.5325(5) -H62 H 0.57320 0.24550 0.53630 -H63 H 0.56580 0.11540 0.52190 -H64 H 0.53940 0.17380 0.58420 -C39 C 0.4499(5) -0.0060(8) 0.4290(6) -H65 H 0.43900 -0.02710 0.47600 -H66 H 0.49350 -0.02420 0.44040 -H67 H 0.42350 -0.04610 0.38020 -C40 C 0.3481(4) 0.3788(7) 0.3219(5) -H68 H 0.31980 0.34780 0.27010 -H69 H 0.36910 0.44330 0.31070 -H70 H 0.32430 0.40070 0.35560 -#END diff --git a/cell2mol/test/infodata/AFUGIS.info b/cell2mol/test/infodata/AFUGIS.info deleted file mode 100644 index 3ed14fb66..000000000 --- a/cell2mol/test/infodata/AFUGIS.info +++ /dev/null @@ -1,388 +0,0 @@ -['Fe', 'N', 'N', 'C', 'H', 'C', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'N', 'N', 'C', 'C', 'C', 'H', 'C', 'C', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H'] -CIF2CELL 1.2.10 -2022-01-19 19:06 -Output for ( -bis(N,N'-bis(2,6-Di-isopropylphenyl)-2,2,6,6-tetramethylheptane-3,5-di-iminato --N,N')-(N,N'-di-isopropylformamidinato-N,N')-iron(ii)) -CIF file exported from Chemical Abstracts. -Database reference code: None. - - BIBLIOGRAPHIC INFORMATION -Ying Yu et al., J.Am.Chem.Soc. 130, 6624- (2008) - - INPUT CELL INFORMATION -Symmetry information: -Triclinic crystal system. -Space group number : 2 -Hall symbol : -P 1 -Hermann-Mauguin symbol : P-1 - -Lattice parameters: - a b c - 10.8780000 12.7810000 15.3680000 - alpha beta gamma - 98.7050000 99.6050000 107.2160000 -Representative sites : -Atom x y z -Fe 0.2798950 0.7213940 0.7353280 -N 0.4817800 0.7673400 0.8042500 -N 0.4085400 0.6987600 0.6549900 -C 0.5096900 0.7390600 0.7256400 -H 0.5975000 0.7472000 0.7200000 -C 0.5888900 0.8187100 0.8847500 -H 0.6697000 0.8618000 0.8663000 -C 0.5490500 0.8992700 0.9484300 -H 0.5335000 0.9580000 0.9183000 -H 0.6199000 0.9335000 1.0029000 -H 0.4680000 0.8583000 0.9652000 -C 0.6203700 0.7297400 0.9325300 -H 0.6432000 0.6768000 0.8903000 -H 0.5430000 0.6893000 0.9534000 -H 0.6950000 0.7662000 0.9844000 -C 0.4224600 0.6596500 0.5637600 -H 0.3528000 0.5848000 0.5385000 -C 0.3967500 0.7384600 0.5033000 -H 0.3085000 0.7437000 0.5027000 -H 0.4021000 0.7094000 0.4418000 -H 0.4631000 0.8130000 0.5266000 -C 0.5556000 0.6446700 0.5596800 -H 0.5730000 0.5957000 0.6000000 -H 0.6254000 0.7179000 0.5788000 -H 0.5539000 0.6108000 0.4977000 -N 0.1977700 0.8442700 0.7133100 -N 0.1497100 0.6403400 0.7996200 -C 0.0591000 0.9593600 0.7732500 -C 0.1351700 0.8733800 0.7740300 -C 0.1319800 0.8225300 0.8516300 -H 0.1265000 0.8698000 0.9038000 -C 0.1353700 0.7184300 0.8654200 -C 0.1279100 0.6976700 0.9623900 -C 0.1105900 1.0490200 0.8623600 -H 0.2063000 1.0847000 0.8718000 -H 0.0910000 1.0134000 0.9129000 -H 0.0671000 1.1058000 0.8588000 -C 0.0643800 1.0235500 0.6964800 -H 0.1564000 1.0660000 0.6986000 -H 0.0141000 1.0753000 0.7035000 -H 0.0259000 0.9703000 0.6383000 -C -0.0870500 0.8928700 0.7655300 -H -0.0950000 0.8554000 0.8165000 -H -0.1207000 0.8366000 0.7088000 -H -0.1384000 0.9443000 0.7665000 -C 0.2199000 0.6317800 0.9908300 -H 0.2239000 0.6277000 1.0544000 -H 0.3086000 0.6698000 0.9831000 -H 0.1857000 0.5558000 0.9532000 -C -0.0133000 0.6350700 0.9692300 -H -0.0142000 0.6302000 1.0322000 -H -0.0435000 0.5594000 0.9314000 -H -0.0722000 0.6757000 0.9485000 -C 0.1762200 0.8085600 1.0338000 -H 0.1857000 0.7923000 1.0944000 -H 0.1119000 0.8481000 1.0254000 -H 0.2618000 0.8557000 1.0269000 -C 0.2241600 0.8963900 0.6383500 -C 0.1374700 0.8548000 0.5525800 -C 0.1720200 0.9039500 0.4810000 -H 0.1144000 0.8766000 0.4228000 -C 0.2886100 0.9917700 0.4932300 -H 0.3098000 1.0253000 0.4442000 -C 0.3742400 1.0304900 0.5775400 -H 0.4543000 1.0905000 0.5855000 -C 0.3452800 0.9831700 0.6510100 -C 0.0088900 0.7585100 0.5355600 -H -0.0106000 0.7474000 0.5955000 -C 0.0225100 0.6497200 0.4870800 -H -0.0613000 0.5885000 0.4765000 -H 0.0922000 0.6316000 0.5247000 -H 0.0454000 0.6596000 0.4291000 -C -0.1082700 0.7813800 0.4810400 -H -0.1903000 0.7221000 0.4796000 -H -0.0970000 0.7828000 0.4192000 -H -0.1123000 0.8539000 0.5094000 -C 0.4450200 1.0284000 0.7412900 -H 0.4147000 0.9792000 0.7836000 -C 0.4549600 1.1482900 0.7832800 -H 0.3685000 1.1492000 0.7930000 -H 0.4833000 1.1979000 0.7424000 -H 0.5195000 1.1743000 0.8412000 -C 0.5820800 1.0258600 0.7316000 -H 0.5747000 0.9510000 0.6999000 -H 0.6403000 1.0437000 0.7916000 -H 0.6189000 1.0812000 0.6971000 -C 0.0862000 0.5223600 0.7896900 -C 0.1593100 0.4474800 0.7921400 -C 0.0920300 0.3323400 0.7789900 -H 0.1412000 0.2821000 0.7806000 -C -0.0440000 0.2899600 0.7637900 -H -0.0876000 0.2119000 0.7572000 -C -0.1160700 0.3628700 0.7583600 -H -0.2097000 0.3338000 0.7470000 -C -0.0539100 0.4781300 0.7692300 -C 0.3086800 0.4854100 0.8059800 -H 0.3429000 0.5692000 0.8228000 -C 0.3463200 0.4484400 0.7172200 -H 0.3016000 0.4751000 0.6688000 -H 0.3193000 0.3664000 0.7017000 -H 0.4421000 0.4802000 0.7244000 -C 0.3746700 0.4406100 0.8816100 -H 0.4708000 0.4703000 0.8898000 -H 0.3451000 0.3585000 0.8653000 -H 0.3502000 0.4644000 0.9380000 -C -0.1372900 0.5516000 0.7479400 -H -0.0897000 0.6289000 0.7853000 -C -0.2754600 0.5118900 0.7666300 -H -0.2686000 0.5025000 0.8292000 -H -0.3274000 0.4401000 0.7254000 -H -0.3190000 0.5676000 0.7573000 -C -0.1466400 0.5570500 0.6481700 -H -0.0577000 0.5800000 0.6365000 -H -0.1899000 0.6116000 0.6340000 -H -0.1983000 0.4830000 0.6102000 - - OUTPUT CELL INFORMATION -Symmetry information: -Triclinic crystal system. -Space group number : 2 -Hall symbol : -P 1 -Hermann-Mauguin symbol : P-1 - -Bravais lattice vectors : - 10.8780000 0.0000000 0.0000000 - -3.7828540 12.2083569 0.0000000 - -2.5642244 -3.2295451 14.8043985 -All sites, (cartesian coordinates): -Atom x y z -Fe -1.5697763 6.4322604 10.8860888 -Fe 6.1006980 2.5465513 3.9183098 -N 0.2757902 6.7705989 11.9064375 -N 4.2551314 2.2082128 2.8979610 -N 0.1212497 6.4153917 9.6967330 -N 4.4096719 2.5634201 5.1076655 -C 0.8879480 6.6792211 10.7426637 -C 3.6429737 2.2995906 4.0617348 -H 1.8268149 6.7968117 10.6591669 -H 2.7041067 2.1820000 4.1452316 -C 1.0401875 7.1377638 13.0981916 -C 3.4907341 1.8410479 1.7062069 -H 1.8035454 7.7234070 12.8250504 -H 2.7273762 1.2554047 1.9793481 -C 0.1387715 7.9156116 14.0409357 -C 4.3921502 1.0632001 0.7634628 -H -0.1752884 8.7299146 13.5948792 -H 4.7062100 0.2488972 1.2095194 -H 3.2045418 11.3871354 0.0429328 -H 1.3263798 -2.4083237 14.7614658 -H -0.6309090 7.3612757 14.2892054 -H 5.1618306 1.6175360 0.5151931 -C 1.5966688 5.8972786 13.8055457 -C 2.9342528 3.0815331 0.9988528 -H 2.1535650 5.3873519 13.1803560 -H 2.3773566 3.5914598 1.6240425 -H 0.8545012 5.3361721 14.1145135 -H 3.6764204 3.6426397 0.6898850 -H 2.1375648 6.1748788 14.5734499 -H 2.3933568 2.8039329 0.2309486 -C 0.6545531 6.2325542 8.3461277 -C 3.8763685 2.7462575 6.4582708 -H 0.2447106 5.4003370 7.9721686 -H 4.2862111 3.5784747 6.8322299 -C 0.2317860 7.3899531 7.4510538 -C 4.2991356 1.5888586 7.3533447 -H -0.7464811 7.4558627 7.4421711 -H 5.2774027 1.5229491 7.3622274 -H 0.5576129 7.2337953 6.5405833 -H 3.9733088 1.7450164 8.2638153 -H 0.6118210 8.2247157 7.7959963 -H 3.9191007 0.7540961 7.0084023 -C 2.1699792 6.0628496 8.2857258 -C 2.3609424 2.9159621 6.5186728 -H 2.4411132 5.3347911 8.8826391 -H 2.0898084 3.6440206 5.9217594 -H 2.6032173 6.8951187 8.5687859 -H 1.9277044 2.0836931 6.2356127 -H 2.4385425 5.8495198 7.3681491 -H 2.0923791 3.1292920 7.4362494 -N -2.8714950 8.0034826 10.5601255 -N 7.4024166 0.9753291 4.2442730 -N -2.8441724 5.2350904 11.8378931 -N 7.3750941 3.7437214 2.9665054 -C -4.9690155 9.2149635 11.4475012 -C 9.4999371 -0.2361517 3.3568974 -C -3.8182764 8.1627699 11.4590486 -C 8.3491980 0.8160418 3.3453499 -C -3.8596029 7.2913622 12.6078699 -C 8.3905245 1.6874495 2.1965286 -H -4.2318054 7.6999659 13.3802154 -H 8.7627270 1.2788458 1.4241831 -C -3.4642920 5.9759369 12.8120226 -C 7.9952136 3.0028749 1.9923760 -C -3.7155627 5.4093224 14.2476051 -C 8.2464843 3.5694893 0.5567934 -C -1.1937221 -2.1865769 12.7667211 -C 5.7246437 11.1653886 2.0376774 -H -0.3117672 -1.7814696 12.9064746 -H 4.8426888 10.7602813 1.8979239 -H -1.4016727 -2.7846598 13.5149354 -H 5.9325943 11.7634715 1.2894631 -H -1.8724681 -1.4818892 12.7140174 -H 6.4033897 10.4607009 2.0903811 -C -1.1746916 -1.9618068 10.3109675 -C 5.7056132 10.9406185 4.4934310 -H -0.3397163 -1.4504087 10.3423528 -H 4.8706380 10.4292204 4.4620457 -H -1.9354010 -1.3526957 10.4148944 -H 6.4663226 10.3315074 4.3895042 -H -5.0255074 9.7843500 9.4496476 -H 9.5564291 -0.8055383 5.3547509 -C 4.5904826 8.4281619 11.3332112 -C -0.0595609 0.5506498 3.4711873 -H 4.5150475 7.8061049 12.0877914 -H 0.0158741 1.1727069 2.7166071 -H 4.5827675 7.9244098 10.4933577 -H -0.0518459 1.0544020 4.3110408 -H 3.8348578 9.0529050 11.3475715 -H 0.6960638 -0.0740933 3.4568271 -C -2.5385698 4.5130655 14.6686422 -C 7.0694914 4.4657462 0.1357563 -H -0.0784070 7.4874983 0.8053593 -H 4.6093287 1.4913134 13.9990392 -H -1.6976938 5.0021916 14.5542042 -H 6.2286154 3.9766201 0.2501943 -H -2.5266843 3.7070023 14.1115527 -H 7.0576060 5.2718094 0.6928459 -C 5.8456223 4.6229892 14.3488672 -C -1.3147007 4.3558226 0.4555313 -H 8.2570098 7.5897151 0.4767016 -H -3.7260882 1.3890966 14.3276969 -H 5.9003599 3.8213565 13.7888168 -H -1.3694382 5.1574552 1.0155817 -H 5.1043671 5.1859632 14.0419720 -H -0.5734455 3.7928486 0.7624265 -C -1.2284140 9.7620304 0.5003887 -C 5.7593356 -0.7832187 14.3040098 -H -1.2191734 9.3678121 1.3975352 -H 5.7500950 -0.3890004 13.4068633 -H -2.0561215 10.2718770 0.3760317 -H 6.5870432 -1.2930653 14.4283668 -H -0.4581054 10.3598162 0.3982383 -H 4.9890270 -1.3810045 14.4061602 -C -2.5893726 8.8818689 9.4503878 -C 7.1202943 0.0969429 5.3540107 -C -3.1551240 8.6511214 8.1806145 -C 7.6860457 0.3276903 6.6237840 -C -2.7816692 9.4823330 7.1209157 -C 7.3125908 -0.5035212 7.6834828 -H -3.1557607 9.3363939 6.2592997 -H 7.6866823 -0.3575822 8.5450988 -C -1.8769739 10.5149735 7.3019735 -C 6.4078955 -1.5361618 7.5024250 -H 2.1352697 -1.1256925 6.5761138 -H 2.3956519 10.1045042 8.2282847 -C 2.4747013 -1.4929587 8.5501323 -C 2.0562203 10.4717704 6.2542662 -H 3.0981737 -0.7860424 8.6679753 -H 1.4327479 9.7648541 6.1364232 -C -1.6325684 9.9004240 9.6378115 -C 6.1634900 -0.9216123 5.1665870 -C -4.1459232 7.5305456 7.9286437 -C 8.6768448 1.4482662 6.8757548 -H 6.4083925 7.2013318 8.8160193 -H -1.8774709 1.7774799 5.9883792 -C -3.4619145 6.3589668 7.2109264 -C 7.9928361 2.6198450 7.5934721 -H 6.7631161 5.6457398 7.0542959 -H -2.2321945 3.3330720 7.7501026 -H -2.7317475 6.0162559 7.7678679 -H 7.2626691 2.9625559 7.0365306 -H -3.1016180 6.6668344 6.3525674 -H 7.6325396 2.3119774 8.4518311 -C 5.5108980 7.9858255 7.1215079 -C -0.9799764 0.9929862 7.6828907 -H 4.8465157 7.2667646 7.1001895 -H -0.3155941 1.7120471 7.7042090 -H 5.7866930 8.2028764 6.2060039 -H -1.2557714 0.7759353 8.5983947 -H 5.1200057 8.7795856 7.5413606 -H -0.5890841 0.1992261 7.2630379 -C 2.8326606 -2.0473122 10.9743526 -C 1.6982610 11.0261239 3.8300459 -H -1.2023902 9.4237515 11.6007267 -H 5.7333119 -0.4449397 3.2036718 -C 2.3795898 -0.7192609 11.5959893 -C 2.1513319 9.6980726 3.2084092 -H 1.4107112 -0.7395424 11.7398880 -H 3.1202104 9.7183542 3.0645105 -H 2.6050304 0.0184195 10.9907855 -H 1.9258912 8.9603922 3.8136131 -H 2.8347440 -0.5887768 12.4534600 -H 1.6961777 9.5675885 2.3509385 -C 4.3580551 -2.0470271 10.8308980 -C 0.1728666 11.0258388 3.9735006 -H 0.8593918 9.3497887 10.3615985 -H 3.6715298 -0.3709770 4.4428000 -H 4.7700326 -2.0230027 11.7191619 -H -0.2391110 11.0018145 3.0852367 -H 4.6377056 -1.2599973 10.3201462 -H -0.1067840 10.2388091 4.4842523 -C -3.0632704 3.8268178 11.6908855 -C 7.5941920 5.1519939 3.1135131 -C -1.9910020 2.9047436 11.7271562 -C 6.5219237 6.0740681 3.0772423 -C -2.2535965 1.5415420 11.5324784 -C 6.7845182 7.4372698 3.2719201 -H -1.5328031 0.9229945 11.5563135 -H 6.0637247 8.0558172 3.2480850 -C 7.3439627 1.0732409 11.3074515 -C -2.8130411 7.9055708 3.4969470 -H 7.1818697 0.1415392 11.2098906 -H -2.6509481 8.8372725 3.5945080 -C 6.2981011 1.9808886 11.2270637 -C -1.7671795 6.9979231 3.5773349 -H 5.4186911 1.6626793 11.0588857 -H -0.8877695 7.3161324 3.7455128 -C 6.5103927 3.3529187 11.3879875 -C -1.9794711 5.6258931 3.4164110 -C -0.5451277 3.3231097 11.9320491 -C 5.0760493 5.6557020 2.8723494 -H -0.5329781 4.2917270 12.1810591 -H 5.0638998 4.6870847 2.6233394 -C 0.2317729 3.1584212 10.6180107 -C 4.2991487 5.8203905 4.1863878 -H -0.2313824 3.6402706 9.9011817 -H 4.7623040 5.3385412 4.9032168 -H 0.2879914 2.2069701 10.3882464 -H 4.2429302 6.7718416 4.4161521 -H 1.1351132 3.5229705 10.7243063 -H 3.3958085 5.4558413 4.0800922 -C 0.1482511 2.5319248 13.0517058 -C 4.3826705 6.4468869 1.7526927 -H 1.0606393 2.8679410 13.1729538 -H 3.4702823 6.1108708 1.6314447 -H 0.1790213 1.5821705 12.8102460 -H 4.3519004 7.3966412 1.9941525 -H -0.3525243 2.6402476 13.8865258 -H 4.8834459 6.3385641 0.9178727 -C 5.3800511 4.3186237 11.0728018 -C -0.8491295 4.6601881 3.7315967 -H 5.5095211 5.1416738 11.6258942 -H -0.9785995 3.8371379 3.1785044 -C 3.9793296 3.7734696 11.3494960 -C 0.5515920 5.2053421 3.4549025 -H 3.9290302 3.4567605 12.2758072 -H 0.6018914 5.5220512 2.5285913 -H 3.7916204 3.0301858 10.7391107 -H 0.7393012 5.9486259 4.0652878 -H 3.3188829 4.4837288 11.2113710 -H 1.2120387 4.4950829 3.5930275 -C 5.5135579 4.7073709 9.5957670 -C -0.9826363 4.2714408 5.2086315 -H 6.4241553 5.0252415 9.4229997 -H -1.8932336 3.9535702 5.3813989 -H 4.8729560 5.4190994 9.3859887 -H -0.3420344 3.5597123 5.4184099 -H 5.3290844 3.9259679 9.0336440 -H -0.7981628 5.0528438 5.7707545 - -Unit cell volume : 1966.0612199 A^3 -Unit cell density : 0.6966479 u/A^3 = 7.8065464 g/cm^3 diff --git a/cell2mol/test/infodata/Cell_AFUGIS.gmol b/cell2mol/test/infodata/Cell_AFUGIS.gmol deleted file mode 100644 index 8178b435c..000000000 Binary files a/cell2mol/test/infodata/Cell_AFUGIS.gmol and /dev/null differ diff --git a/cell2mol/test/infodata/Cell_DAPGAF.gmol b/cell2mol/test/infodata/Cell_DAPGAF.gmol deleted file mode 100644 index 4a60b173e..000000000 Binary files a/cell2mol/test/infodata/Cell_DAPGAF.gmol and /dev/null differ diff --git a/cell2mol/test/infodata/Cell_EGITOF.gmol b/cell2mol/test/infodata/Cell_EGITOF.gmol deleted file mode 100644 index fd7705456..000000000 Binary files a/cell2mol/test/infodata/Cell_EGITOF.gmol and /dev/null differ diff --git a/cell2mol/test/infodata/Cell_ISIPIJ.gmol b/cell2mol/test/infodata/Cell_ISIPIJ.gmol deleted file mode 100644 index aa07abe68..000000000 Binary files a/cell2mol/test/infodata/Cell_ISIPIJ.gmol and /dev/null differ diff --git a/cell2mol/test/infodata/Cell_KANYUT.gmol b/cell2mol/test/infodata/Cell_KANYUT.gmol deleted file mode 100644 index 8132ded26..000000000 Binary files a/cell2mol/test/infodata/Cell_KANYUT.gmol and /dev/null differ diff --git a/cell2mol/test/infodata/Cell_LOKXUG.gmol b/cell2mol/test/infodata/Cell_LOKXUG.gmol deleted file mode 100644 index 2726f6a8a..000000000 Binary files a/cell2mol/test/infodata/Cell_LOKXUG.gmol and /dev/null differ diff --git a/cell2mol/test/infodata/Cell_ROKQAM.gmol b/cell2mol/test/infodata/Cell_ROKQAM.gmol deleted file mode 100644 index 674bdcfdd..000000000 Binary files a/cell2mol/test/infodata/Cell_ROKQAM.gmol and /dev/null differ diff --git a/cell2mol/test/infodata/Cell_YOXKUS.gmol b/cell2mol/test/infodata/Cell_YOXKUS.gmol deleted file mode 100644 index f1cde52a3..000000000 Binary files a/cell2mol/test/infodata/Cell_YOXKUS.gmol and /dev/null differ diff --git a/cell2mol/test/infodata/DAPGAF.info b/cell2mol/test/infodata/DAPGAF.info deleted file mode 100644 index c40f03292..000000000 --- a/cell2mol/test/infodata/DAPGAF.info +++ /dev/null @@ -1,473 +0,0 @@ -['Re', 'Cu', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'O', 'O', 'O', 'O', 'Cl', 'Cl', 'Cl', 'Cl', 'C', 'C', 'C', 'H', 'H', 'H', 'C', 'C', 'H', 'C', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'C', 'H', 'C', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'C', 'H', 'C', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'C', 'H', 'C', 'C', 'H', 'H', 'H', 'C', 'C', 'H', 'H', 'H', 'N', 'C', 'C', 'H', 'H', 'H', 'N'] -CIF2CELL 1.2.10 -2021-12-17 20:13 -Output for ( -(\m-oxalato)-bis(1-((3,5-dimethyl-1H-pyrazol-1-yl)methyl)-3,5-dimethyl-1H-pyra -zole)-tetrachloro-rhenium(iv)-copper(ii) acetonitrile solvate) -CIF file exported from Chemical Abstracts. -Database reference code: None. - - BIBLIOGRAPHIC INFORMATION -I.Gryca et al., Eur.J.Inorg.Chem. , 5418- (2016) - - INPUT CELL INFORMATION -Symmetry information: -Monoclinic crystal system. -Space group number : 14 -Hall symbol : -P 2yn -Hermann-Mauguin symbol : P21/n - -Lattice parameters: - a b c - 20.0003000 8.5773000 23.2862000 - alpha beta gamma - 90.0000000 107.2460000 90.0000000 -Representative sites : -Atom x y z -Re 0.5238300 0.5657100 0.2101700 -Cu 0.7037100 0.5665300 0.4431300 -N 0.6468000 0.4770000 0.4932300 -N 0.6152200 0.5705000 0.5255500 -N 0.6875800 0.7985000 0.5395100 -N 0.7296700 0.7746000 0.5035900 -N 0.7506800 0.6491000 0.3845500 -N 0.8021400 0.5642000 0.3714500 -N 0.8357700 0.3942000 0.4557600 -N 0.7916400 0.4432000 0.4869000 -O 0.5387800 0.6654000 0.2941000 -O 0.5827300 0.3971000 0.2648200 -O 0.6511800 0.3616000 0.3580700 -O 0.6102700 0.6526000 0.3867900 -Cl 0.4255100 0.4370800 0.2206700 -Cl 0.4618200 0.7810700 0.1633600 -Cl 0.6320400 0.6755000 0.2123500 -Cl 0.5164900 0.4386900 0.1215000 -C 0.5863000 0.5995000 0.3357900 -C 0.6107000 0.4392000 0.3196100 -C 0.6615000 0.1943000 0.4816000 -H 0.7090000 0.1749000 0.5052000 -H 0.6601000 0.2151000 0.4407000 -H 0.6333000 0.1045000 0.4829000 -C 0.6340000 0.3308000 0.5064000 -C 0.5939000 0.3321000 0.5460000 -H 0.5777000 0.2450000 0.5617000 -C 0.5827000 0.4825000 0.5577000 -C 0.5446000 0.5519000 0.5974000 -H 0.5219000 0.4708000 0.6131000 -H 0.5101000 0.6241000 0.5748000 -H 0.5771000 0.6057000 0.6301000 -C 0.6170000 0.7385000 0.5191000 -H 0.5963000 0.7659000 0.4771000 -H 0.5893000 0.7867000 0.5420000 -C 0.6875000 0.9170000 0.6375000 -H 0.6759000 0.8226000 0.6545000 -H 0.6457000 0.9760000 0.6199000 -H 0.7192000 0.9777000 0.6685000 -C 0.7215000 0.8779000 0.5903000 -C 0.7861000 0.9059000 0.5863000 -H 0.8217000 0.9591000 0.6143000 -C 0.7905000 0.8417000 0.5331000 -C 0.8520000 0.8372000 0.5087000 -H 0.8438000 0.9069000 0.4751000 -H 0.8580000 0.7331000 0.4959000 -H 0.8934000 0.8687000 0.5395000 -C 0.7051000 0.9194000 0.3641000 -H 0.7223000 1.0150000 0.3523000 -H 0.7040000 0.9279000 0.4049000 -H 0.6587000 0.8997000 0.3382000 -C 0.7520000 0.7887000 0.3591000 -C 0.8033000 0.7907000 0.3304000 -H 0.8146000 0.8742000 0.3096000 -C 0.8344000 0.6475000 0.3383000 -C 0.8928000 0.5843000 0.3175000 -H 0.8760000 0.4983000 0.2907000 -H 0.9299000 0.5493000 0.3516000 -H 0.9100000 0.6645000 0.2969000 -C 0.8126000 0.4038000 0.3909100 -H 0.8472000 0.3562000 0.3749000 -H 0.7690000 0.3468000 0.3755000 -C 0.9545000 0.2797000 0.4707000 -H 0.9955000 0.2641000 0.5043000 -H 0.9646000 0.3536000 0.4435000 -H 0.9407000 0.1823000 0.4503000 -C 0.8966000 0.3401000 0.4925000 -C 0.8914000 0.3555000 0.5493000 -H 0.9253000 0.3282000 0.5848000 -C 0.8265000 0.4188000 0.5447000 -C 0.7982000 0.4568000 0.5955000 -H 0.7623000 0.3831000 0.5963000 -H 0.7787000 0.5600000 0.5902000 -H 0.8352000 0.4516000 0.6327000 -C 0.6878000 0.3625000 0.7154000 -C 0.6538000 0.2368000 0.7359000 -H 0.6254000 0.1798000 0.7019000 -H 0.6248000 0.2776000 0.7586000 -H 0.6884000 0.1685000 0.7609000 -N 0.7159000 0.4646000 0.7006000 -C 0.5010000 1.0215000 0.3583000 -C 0.5088000 1.0572000 0.3004000 -H 0.4698000 1.1188000 0.2779000 -H 0.5106000 0.9621000 0.2792000 -H 0.5514000 1.1147000 0.3055000 -N 0.4943000 0.9935000 0.4026000 - - OUTPUT CELL INFORMATION -Symmetry information: -Monoclinic crystal system. -Space group number : 14 -Hall symbol : -P 2yn -Hermann-Mauguin symbol : P21/n - -Bravais lattice vectors : - 20.0003000 0.0000000 0.0000000 - 0.0000000 8.5773000 0.0000000 - -6.9037738 0.0000000 22.2392675 -All sites, (cartesian coordinates): -Atom x y z -Re 9.0257910 4.8522644 4.6740268 -Re -4.4262459 8.0136856 15.7936606 -Re 17.5227721 0.5636144 6.4456069 -Re 4.0707352 3.7250356 17.5652406 -Cu 11.0151418 4.8592978 9.8548866 -Cu -2.4368951 8.0066522 20.9745203 -Cu 15.5334213 0.5706478 1.2647471 -Cu 2.0813843 3.7180022 12.3843809 -N 9.5310457 4.0913721 10.9690739 -N -3.9209913 0.1972779 22.0887076 -N 17.0175174 8.3800221 0.1505598 -N 3.5654805 4.4859279 11.2701936 -N 8.6763062 4.8933496 11.6878470 -N 2.1280431 7.9726003 0.5682133 -N 10.9684830 0.6046997 21.6710542 -N 4.4202199 3.6839503 10.5514204 -N 10.0271512 6.8489740 11.9983072 -N 3.4788882 6.0169759 0.8786735 -N 9.6176380 2.5603240 21.3605940 -N 3.0693749 1.7283259 10.2409603 -N 11.1169474 6.6439766 11.1994727 -N 4.5686844 6.2219734 0.0798390 -N 8.5278418 2.3553266 22.1594285 -N 1.9795787 1.9333234 11.0397948 -N 12.3589790 5.5675254 8.5521103 -N -1.0930580 7.2984246 19.6717440 -N 14.1895841 1.2788754 2.5675234 -N 0.7375472 3.0097746 13.6871572 -N 13.4786338 4.8393127 8.2607759 -N 0.0265969 8.0266373 19.3804096 -N 13.0699292 0.5506627 2.8588578 -N -0.3821077 3.7379873 13.9784916 -N 13.5691868 3.3811717 10.1357685 -N 0.1171498 0.9074783 21.2554023 -N 12.9793763 7.6698217 0.9838652 -N -0.4726606 5.1961283 12.1034989 -N 12.4715900 3.8014594 10.8282993 -N -0.9804469 0.4871906 21.9479331 -N 14.0769731 8.0901094 0.2913344 -N 0.6249361 4.7758406 11.4109681 -O 8.7453617 5.7073354 6.5405686 -O -4.7066752 7.1586146 17.6602023 -O 17.8032013 1.4186854 4.5790652 -O 4.3511644 2.8699646 15.6986989 -O 9.8265174 3.4060458 5.8894028 -O -3.6255195 0.8826042 17.0090365 -O 16.7220456 7.6946958 5.2302309 -O 3.2700087 5.1712542 16.3498647 -O 10.5517611 3.1015517 7.9632145 -O -2.9002759 1.1870983 19.0828482 -O 15.9968020 7.3902017 3.1564192 -O 2.5447651 5.4757483 14.2760530 -O 9.5352724 5.5975460 8.6019263 -O -3.9167645 7.2684040 19.7215600 -O 17.0132907 1.3088960 2.5177075 -O 3.5612538 2.9797540 13.6373412 -Cl 6.9868719 3.7489663 4.9075392 -Cl 13.5351350 0.5396837 16.0271729 -Cl -0.4386088 8.0376163 6.2120946 -Cl 6.1096543 4.8283337 17.3317283 -Cl 8.1087381 6.6994717 3.6330067 -Cl 14.6570011 6.1664783 14.7526405 -Cl -1.5604750 2.4108217 7.4866270 -Cl 4.9877881 1.8778283 18.6062607 -Cl 11.1749732 5.7939661 4.7225084 -Cl -2.2770637 7.0719838 15.8421422 -Cl 15.3735898 1.5053161 6.3971253 -Cl 1.9215529 2.7833338 17.5167590 -Cl 9.4911464 3.7627757 2.7020710 -Cl -3.9608905 0.5258743 13.8217047 -Cl 17.0574167 8.0514257 8.4175627 -Cl 3.6053797 4.8145243 19.5371965 -C 9.4079577 5.1420913 7.4677236 -C -4.0440793 7.7238587 18.5873573 -C 17.1406054 0.8534413 3.6519101 -C 3.6885685 3.4352086 14.7715438 -C 10.0076681 3.7671502 7.1078923 -C -3.4443689 0.5214998 18.2275260 -C 16.5408950 8.0558002 4.0117415 -C 3.0888581 4.8101498 15.1313752 -C 9.9053410 1.6665694 10.7104312 -C -3.5466960 2.6220806 21.8300649 -C 16.6432221 5.9552194 0.4092025 -C 3.1911852 6.9107306 11.5288363 -H 10.6924262 1.5001698 11.2352779 -H 4.1441631 2.7884802 0.1156442 -H 8.9523631 5.7888198 22.1236233 -H 2.4041000 7.0771302 11.0039895 -H 10.1597049 1.8449772 9.8008452 -H -3.2923320 2.4436728 20.9204789 -H 16.3888582 6.1336272 1.3187886 -H 2.9368213 6.7323228 12.4384223 -H 9.3323576 0.8963278 10.7393423 -H -4.1196793 3.3923221 21.8589760 -H 17.2162055 5.1849779 0.3802915 -H 3.7641686 7.6809721 11.4999252 -C 9.1841191 2.8373708 11.2619650 -C 2.6358560 1.4512792 0.1423313 -C 10.4611782 7.1260208 22.0969361 -C 3.9124070 5.7399292 10.9773024 -C 8.1087176 2.8485213 12.1426400 -C 1.5604546 1.4401287 1.0230063 -C 11.5360716 7.1371713 21.2162612 -C 4.9878085 5.7287787 10.0966274 -H 7.6763235 2.1014385 12.4917965 -H 1.1280605 2.1872115 1.3721628 -H 11.9684657 6.3900885 20.8671047 -H 5.4202026 6.4758615 9.7474709 -C 7.8039401 4.1385472 12.4028395 -C 1.2556771 0.1501028 1.2832057 -C 11.8408491 8.4271972 20.9560617 -C 5.2925860 4.4387527 9.8364280 -C 6.7678489 4.7338119 13.2857384 -C 0.2195858 8.1321381 2.1661047 -C 12.8769403 0.4451619 20.0731628 -C 6.3286773 3.8434881 8.9535291 -H 6.2054528 4.0381928 13.6348949 -H -0.3428103 0.2504572 2.5152611 -H 13.4393364 8.3268428 19.7240063 -H 6.8910733 4.5391072 8.6043726 -H 6.2338638 5.3530929 12.7831309 -H -0.3143993 7.5128571 1.6634972 -H 13.4109254 1.0644429 20.5757703 -H 6.8626623 3.2242071 9.4561365 -H 7.1921052 5.1952706 14.0129624 -H 0.6438422 7.6706794 2.8933287 -H 12.4526840 0.9066206 19.3459388 -H 5.9044209 3.3820294 8.2263050 -C 8.7564361 6.3343361 11.5444037 -C 2.2081730 6.5316139 0.4247700 -C 10.8883531 2.0456861 21.8144975 -C 4.3400901 2.2429639 10.6948637 -H 8.6323884 6.5693541 10.6103545 -H -4.8196485 6.2965959 21.7299882 -H 17.9161747 2.2807041 0.5092792 -H 4.4641378 2.0079459 11.6289130 -H 8.0443314 6.7477619 12.0536830 -H 1.4960683 6.1181881 0.9340492 -H 11.6004579 2.4591119 21.3052182 -H 5.0521948 1.8295381 10.1855845 -C 9.3490504 7.8653841 14.1775330 -C 2.8007873 5.0005659 3.0578993 -C 10.2957388 3.5767341 19.1813682 -C 3.7474757 0.7119159 8.0617345 -H 8.9996828 7.0556870 14.5556006 -H 2.4514197 5.8102630 3.4359668 -H 10.6451064 2.7670370 18.8033006 -H 4.0968434 1.5216130 7.6836669 -H 8.6345443 8.3714448 13.7861219 -H 2.0862812 4.4945052 2.6664882 -H 11.0102449 4.0827948 19.5727793 -H 4.4619819 0.2058552 8.4531456 -H 9.7690429 8.3860262 14.8669503 -H 3.2207799 4.4799238 3.7473166 -H 9.8757463 4.0973762 18.4919509 -H 3.3274832 0.1912738 7.3723172 -C 10.3549187 7.5300117 13.1278396 -C 3.8066557 5.3359383 2.0082059 -C 9.2898705 3.2413617 20.2310616 -C 2.7416074 1.0472883 9.1114279 -C 11.6745532 7.7701761 13.0388825 -C 5.1262901 5.0957739 1.9192488 -C 7.9702360 3.4815261 20.3200187 -C 1.4219729 0.8071239 9.2003849 -H 12.1932582 8.2264884 13.6615820 -H 5.6449952 4.6394616 2.5419483 -H 7.4515310 3.9378384 19.6973192 -H 0.9032679 0.3508116 8.5776855 -C 12.1298353 7.2195134 11.8557535 -C 5.5815722 5.6464366 0.7361198 -C 7.5149539 2.9308634 21.5031477 -C 0.9666908 1.3577866 10.3835140 -C 13.5283058 7.1809156 11.3131154 -C 6.9800428 5.6850344 0.1934816 -C 6.1164834 2.8922656 22.0457858 -C -0.4317797 1.3963844 10.9261521 -H 13.5962702 7.7787534 10.5658760 -H 0.1442333 5.0871966 21.6855097 -H 12.9522929 3.4901034 0.5537578 -H -0.4997440 0.7985466 11.6733915 -H 13.7366759 6.2880186 11.0284527 -H 0.2846390 6.5779314 22.1480865 -H 12.8118871 1.9993686 0.0911810 -H -0.6401498 2.2892814 11.2108147 -H 14.1436820 7.4511005 11.9980848 -H 7.5954190 5.4148495 0.8784511 -H 5.5011072 3.1624505 21.3608164 -H -1.0471559 1.1261995 10.2411827 -C 11.5885475 7.8859696 8.0973173 -C -1.8634895 4.9799804 19.2169510 -C 14.9600156 3.5973196 3.0223164 -C 1.5079787 0.6913304 14.1419502 -H 12.0140172 0.1286595 7.8348939 -H -1.4380198 4.1599905 18.9545277 -H 14.5345459 4.4173095 3.2847398 -H 1.0825090 8.4486405 14.4043735 -H 11.2848732 7.9588767 9.0046794 -H -2.1671638 4.9070733 20.1243131 -H 15.2636899 3.6702267 2.1149543 -H 1.8116530 0.6184233 13.2345881 -H 10.8393413 7.7169968 7.5213203 -H -2.6126956 5.1489532 18.6409540 -H 15.7092218 3.4283468 3.5983135 -H 2.2571849 0.8603032 14.7179472 -C 12.5610804 6.7649165 7.9861209 -C -0.8909565 6.1010335 19.1057547 -C 13.9874827 2.4762665 3.1335128 -C 0.5354457 1.8123835 14.2531465 -C 13.7852341 6.7820711 7.3478540 -C 0.3331972 6.0838789 18.4674877 -C 12.7633290 2.4934211 3.7717798 -C -0.6887080 1.7952289 14.8914135 -H 14.1548360 7.4982757 6.8852772 -H 0.7027991 5.3676743 18.0049109 -H 12.3937271 3.2096257 4.2343565 -H -1.0583098 1.0790243 15.3539903 -C 14.3527036 5.5538017 7.5235442 -C 0.9006667 7.3121482 18.6431779 -C 12.1958594 1.2651517 3.5960895 -C -1.2561775 3.0234982 14.7157233 -C 15.6643196 5.0117164 7.0609674 -C 2.2122827 7.8542336 18.1806011 -C 10.8842434 0.7230664 4.0586663 -C -2.5677935 3.5655836 15.1783000 -H 15.5133357 4.2740686 6.4649551 -H 2.0612988 0.0145814 17.5845888 -H 11.0352273 8.5627186 4.6546787 -H -2.4168096 4.3032314 15.7743124 -H 16.1709121 4.7115109 7.8193264 -H 2.7188752 8.1544391 18.9389602 -H 10.3776510 0.4228609 3.3003073 -H -3.0743859 3.8657891 14.4199410 -H 16.1505425 5.6996158 6.6028385 -H 2.6985056 7.1663342 17.7224722 -H 10.3980205 1.4109658 4.5167952 -H -3.0540164 2.8776841 15.6364290 -C 13.5534895 3.4635137 8.6935520 -C 0.1014526 0.8251363 19.8131858 -C 12.9950735 7.7521637 2.4260817 -C -0.4569634 5.1137863 13.5457154 -H 14.3560293 3.0552343 8.3375014 -H 0.9039924 1.2334157 19.4571351 -H 12.1925337 7.3438843 2.7821324 -H -1.2595032 5.5220657 13.9017661 -H 12.7878636 2.9746076 8.3508449 -H -0.6641733 1.3140424 19.4704787 -H 13.7606995 7.2632576 2.7687888 -H 0.3086625 5.6026924 13.8884225 -C 15.8406800 2.3990708 10.4680232 -C 2.3886431 1.8895792 21.5876569 -C 10.7078831 6.6877208 0.6516105 -C -2.7441538 6.1782292 11.7712443 -H 16.4287255 2.2652649 11.2152626 -H 9.8804624 2.0233851 0.0956289 -H 3.2160637 6.5539149 22.1436386 -H -3.3321993 6.3120351 11.0240049 -H 16.2304657 3.0329333 9.8631151 -H 2.7784288 1.2557167 20.9827488 -H 10.3180974 7.3215833 1.2565186 -H -3.1339395 5.5443667 12.3761523 -H 15.7055128 1.5636418 10.0143421 -H 2.2534759 2.7250082 21.1339759 -H 10.8430502 5.8522918 1.1052916 -H -2.6089867 7.0136582 12.2249253 -C 14.5321604 2.9171397 10.9528392 -C 1.0801234 1.3715103 22.0724730 -C 12.0164027 7.2057897 0.1667945 -C -1.4356342 5.6601603 11.2864282 -C 14.0360244 3.0492301 12.2160296 -C 7.4877614 1.2394199 1.0963959 -C 5.6087648 7.3378801 21.1428716 -C -0.9394983 5.5280699 10.0232378 -H 14.4689506 2.8150699 13.0055236 -H 7.9206876 1.4735801 1.8858899 -H 5.1758386 7.1037199 20.3533776 -H -1.3724245 5.7622301 9.2337438 -C 12.7697623 3.5921732 12.1137290 -C 6.2214993 0.6964768 0.9940953 -C 6.8750269 7.8808232 21.2451722 -C 0.3267638 4.9851268 10.1255385 -C 11.8530421 3.9181106 13.2434838 -C 5.3047791 0.3705394 2.1238500 -C 7.7917471 8.2067606 20.1154174 -C 1.2434840 4.6591894 8.9957837 -H 11.1295083 3.2859636 13.2612752 -H 4.5812453 1.0026864 2.1416415 -H 8.5152809 7.5746136 20.0976260 -H 1.9670178 5.2913364 8.9779923 -H 11.4996263 4.8032880 13.1256157 -H 4.9513632 8.0626620 2.0059819 -H 8.1451629 0.5146380 20.2332855 -H 1.5968999 3.7740120 9.1136518 -H 12.3362328 3.8735087 14.0707845 -H 5.7879698 0.4151413 2.9511508 -H 7.3085564 8.1621587 19.2881167 -H 0.7602933 4.7037913 8.1684829 -C 8.8172465 3.1092712 15.9099719 -C 2.2689835 1.1793787 4.7903382 -C 10.8275427 7.3979212 17.4489292 -C 4.2792796 5.4680287 6.3292955 -C 7.9957090 2.0311046 16.3658769 -C 1.4474459 2.2575454 5.2462432 -C 11.6490803 6.3197546 16.9930243 -C 5.1008172 6.5461954 5.8733905 -H 7.6624288 1.5421985 15.6097418 -H 1.1141657 2.7464515 4.4901081 -H 11.9823605 5.8308485 17.7491594 -H 5.4340974 7.0351015 6.6295256 -H 7.2589846 2.3810585 16.8707083 -H 0.7107215 1.9075915 5.7510746 -H 12.3858046 6.6697085 16.4881929 -H 5.8375416 6.1962415 5.3685592 -H 8.5151250 1.4452751 16.9218586 -H 1.9668619 2.8433749 5.8022249 -H 11.1296642 5.7339250 16.4370426 -H 4.5814012 7.1320249 5.3174088 -N 9.4814308 3.9850136 15.5808308 -N 2.9331677 0.3036364 4.4611971 -N 10.1633584 8.2736636 17.7780704 -N 3.6150953 4.5922864 6.6584367 -C 7.5465281 0.1844120 7.9683295 -C -5.9055088 4.1042380 19.0879633 -C 19.0020349 4.4730619 3.1513042 -C 5.5499980 8.3928880 14.2709379 -C 8.1022590 0.4906216 6.6806759 -C -5.3497779 3.7980284 17.8003097 -C 18.4463041 4.7792716 4.4389578 -C 4.9942672 8.0866784 15.5585915 -H 7.4775822 1.0189832 6.1802924 -H 14.0258453 3.2696668 17.2999262 -H -0.9293191 5.3076332 4.9393413 -H 5.6189440 7.5583168 16.0589750 -H 8.2846195 8.2522203 6.2092035 -H -5.1674174 4.6137297 17.3288372 -H 18.2639436 3.9635703 4.9104303 -H 4.8119066 0.3250797 16.0300640 -H 8.9190625 0.9838163 6.7940962 -H -4.5329744 3.3048337 17.9137299 -H 17.6295006 5.2724663 4.3255375 -H 4.1774636 7.5934837 15.4451713 -N 7.1066889 8.5215475 8.9535291 -N 13.6549520 4.3444024 20.0731628 -N -0.5584259 4.2328975 2.1661047 -N 5.9898372 0.0557524 13.2857384 - -Unit cell volume : 3815.1146014 A^3 -Unit cell density : 1.0172190 u/A^3 = 11.3988253 g/cm^3 diff --git a/cell2mol/test/infodata/EGITOF.info b/cell2mol/test/infodata/EGITOF.info deleted file mode 100644 index a437390e9..000000000 --- a/cell2mol/test/infodata/EGITOF.info +++ /dev/null @@ -1,173 +0,0 @@ -['C', 'H', 'C', 'C', 'C', 'C', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'Fe', 'C', 'C', 'C', 'H', 'C', 'C', 'C', 'N', 'N', 'F', 'C', 'H', 'C', 'C', 'C', 'C', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'C', 'C', 'H', 'C', 'C', 'C', 'N', 'N', 'F'] -CIF2CELL 1.2.10 -2021-11-19 22:50 -Output for ( -bis(\h^5^-tetramethylcyclopentadienyl)-iron -2,2'-(2,5-difluorocyclohexa-2,5-diene-1,4-diylidene)dimalononitrile) -CIF file exported from Chemical Abstracts. -Database reference code: None. - - BIBLIOGRAPHIC INFORMATION -Y.Funasako et al., Inorg.Chim.Acta 419, 105- (2014) - - INPUT CELL INFORMATION -Symmetry information: -Triclinic crystal system. -Space group number : 2 -Hall symbol : -P 1 -Hermann-Mauguin symbol : P-1 - -Lattice parameters: - a b c - 8.6593000 9.3659000 9.8807000 - alpha beta gamma - 99.2620000 107.0940000 117.2990000 -Representative sites : -Atom x y z -C 0.2620300 0.8802200 0.2970600 -H 0.1950000 0.9316000 0.2579000 -C 0.4172200 0.8875200 0.2688300 -C 0.4768500 0.7956300 0.3493700 -C 0.3578600 0.7315200 0.4264400 -C 0.2237500 0.7833100 0.3936400 -C 0.5004000 0.9733600 0.1707100 -H 0.6404000 1.0350000 0.2206000 -H 0.4617000 1.0545000 0.1535000 -H 0.4537000 0.8868000 0.0737000 -C 0.6352000 0.7691300 0.3504700 -H 0.5811000 0.6564000 0.2771000 -H 0.7045000 0.7751000 0.4516000 -H 0.7234000 0.8586000 0.3235000 -C 0.3700000 0.6252900 0.5227400 -H 0.3327000 0.6506000 0.6036000 -H 0.5016000 0.6524000 0.5670000 -H 0.2836000 0.5035000 0.4605000 -C 0.0668000 0.7392000 0.4455000 -H 0.0366000 0.8283000 0.4493000 -H 0.1084000 0.7320000 0.5463000 -H -0.0474000 0.6287000 0.3747000 -Fe 0.5000000 1.0000000 0.5000000 -C 0.9242900 0.5978700 0.9434800 -C 1.0694300 0.5864200 0.9134600 -C 0.8557300 0.5029100 1.0337300 -H 0.7566000 0.5021000 1.0571000 -C 0.8519600 0.6963000 0.8912200 -C 0.6989000 0.6923400 0.9199800 -C 0.9219000 0.8056600 0.8111800 -N 0.5727000 0.6864000 0.9401500 -N 0.9704000 0.8959000 0.7455000 -F 1.1354300 0.6698000 0.8236700 -C 0.7379700 1.1197800 0.7029400 -H 0.8050000 1.0684000 0.7421000 -C 0.5827800 1.1124800 0.7311700 -C 0.5231500 1.2043700 0.6506300 -C 0.6421400 1.2684800 0.5735600 -C 0.7762500 1.2166900 0.6063600 -C 0.4996000 1.0266400 0.8292900 -H 0.3596000 0.9650000 0.7794000 -H 0.5383000 0.9455000 0.8465000 -H 0.5463000 1.1132000 0.9263000 -C 0.3648000 1.2308700 0.6495300 -H 0.4189000 1.3436000 0.7229000 -H 0.2955000 1.2249000 0.5484000 -H 0.2766000 1.1414000 0.6765000 -C 0.6300000 1.3747100 0.4772600 -H 0.6673000 1.3494000 0.3964000 -H 0.4984000 1.3476000 0.4330000 -H 0.7164000 1.4965000 0.5395000 -C 0.9332000 1.2608000 0.5545000 -H 0.9634000 1.1717000 0.5507000 -H 0.8916000 1.2680000 0.4537000 -H 1.0474000 1.3713000 0.6253000 -C 1.0757100 0.4021300 1.0565200 -C 0.9305700 0.4135800 1.0865400 -C 1.1442700 0.4970900 0.9662700 -H 1.2434000 0.4979000 0.9429000 -C 1.1480400 0.3037000 1.1087800 -C 1.3011000 0.3076600 1.0800200 -C 1.0781000 0.1943400 1.1888200 -N 1.4273000 0.3136000 1.0598500 -N 1.0296000 0.1041000 1.2545000 -F 0.8645700 0.3302000 1.1763300 - - OUTPUT CELL INFORMATION -Symmetry information: -Triclinic crystal system. -Space group number : 2 -Hall symbol : -P 1 -Hermann-Mauguin symbol : P-1 - -Bravais lattice vectors : - 8.6593000 0.0000000 0.0000000 - -4.2955206 8.3227751 0.0000000 - -2.9043353 -3.2885838 8.8531512 -All sites, (cartesian coordinates): -Atom x y z -C -2.3747686 6.3489664 2.6299171 -C 3.8342127 -1.3147751 6.2232341 -H -3.0621716 6.9053715 2.2832277 -H 4.5216157 -1.8711802 6.5699235 -C -0.9802997 6.5025594 2.3799926 -C 2.4397439 -1.4683681 6.4731585 -C -0.3031455 5.4729170 3.0930254 -C 1.7625896 -0.4387257 5.7601257 -C -1.2819669 4.6858928 3.7753378 -C 2.7414110 0.3482985 5.0778134 -C -2.5704684 5.2247948 3.4849544 -C 4.0299125 -0.1906035 5.3681967 -C -0.3437733 7.5396622 1.5113214 -C 1.8032174 -2.5054709 7.3418297 -H 4.7543761 -0.4341645 1.9530051 -H -3.2949320 5.4683558 6.9001460 -H 3.3180775 -0.0512064 1.3589587 -H -1.8586333 5.0853977 7.4941925 -H -0.0945928 7.1382683 0.6524772 -H 1.5540369 -2.1040770 8.2006739 -C 1.1786912 5.2487461 3.1027639 -C 0.2807529 -0.2145547 5.7503873 -H 1.4075482 4.5518030 2.4532082 -H 0.0518959 0.4823883 6.3999430 -H 1.4594210 4.9658585 3.9980831 -H 0.0000231 0.0683328 4.8550681 -H 1.6364512 6.0820779 2.8639944 -H -0.1770070 -1.0478865 5.9891568 -C -1.0002173 3.4850738 4.6278962 -C 2.4596614 1.5491176 4.2252549 -H -1.6667734 3.4298083 5.3437621 -H 3.1262175 1.6043830 3.5093891 -H -0.1056509 3.5651515 5.0197367 -H 1.5650950 1.4690398 3.8334145 -H -1.0444635 2.6761244 4.0768761 -H 2.5039077 2.3580669 4.7762751 -C -3.8906889 4.6871313 3.9440788 -C 5.3501331 0.3470600 4.9090723 -H -4.5459672 5.4161939 3.9777208 -H 6.0054113 -0.3820026 4.8754304 -H -3.7922913 4.2957181 4.8364765 -H 5.2517354 0.7384733 4.0166747 -H 4.4600010 4.0002964 3.3172757 -H -3.0005568 1.0338949 5.5358754 -Fe 2.8774824 -1.6442919 4.4265756 -C 2.6953593 1.8732245 8.3527711 -C -1.2359151 3.1609668 0.5003801 -C -4.5707581 1.8766520 8.0869995 -C 6.0302022 3.1575393 0.7661517 -C 5.1517993 4.0746829 0.2986168 -C -3.6923552 0.9595084 8.5545344 -H 4.2290079 3.9910872 0.5055149 -H -2.7695638 1.0431041 8.3476362 -C 1.7980046 2.8642967 7.8901054 -C -0.3385604 2.1698947 0.9630458 -C 0.4060937 2.7367588 8.1447220 -C 1.0533505 2.2974325 0.7084292 -C 2.1663409 4.0376936 7.1814992 -C -0.7068967 0.9964977 1.6716520 -N -0.7197750 2.6209908 8.3232901 -N 2.1792192 2.4132005 0.5298611 -N 2.3894459 5.0047350 6.6000242 -N -0.9300017 0.0294563 2.2531270 -F -4.0966245 2.8658869 7.2920750 -F 5.5560687 2.1683044 1.5610761 - -Unit cell volume : 638.0413511 A^3 -Unit cell density : 0.8438246 u/A^3 = 9.4557898 g/cm^3 diff --git a/cell2mol/test/infodata/ISIPIJ.info b/cell2mol/test/infodata/ISIPIJ.info deleted file mode 100644 index 1331f8e8a..000000000 --- a/cell2mol/test/infodata/ISIPIJ.info +++ /dev/null @@ -1,343 +0,0 @@ -['Cu', 'N', 'N', 'N', 'N', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'Cu', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'O', 'O', 'O', 'O', 'O', 'O', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -CIF2CELL 1.2.10 -2021-12-18 3:21 -Output for ( -bis(2,9-Dimethyl-1,10-phenanthroline)-copper(i) -tris(hexafluoroacetylacetonato)-copper(ii)) -CIF file exported from Chemical Abstracts. -Database reference code: None. - - BIBLIOGRAPHIC INFORMATION -V.Pawlowski et al., Inorg.Chim.Acta 357, 824- (2004) - - INPUT CELL INFORMATION -Symmetry information: -Triclinic crystal system. -Space group number : 2 -Hall symbol : -P 1 -Hermann-Mauguin symbol : P-1 - -Lattice parameters: - a b c - 11.1653000 12.6766000 17.1646000 - alpha beta gamma - 82.1020000 72.4920000 87.5850000 -Representative sites : -Atom x y z -Cu 0.2224000 0.5194300 0.2270500 -N 0.2499000 0.5131000 0.3389700 -N 0.0660000 0.4301000 0.2944600 -N 0.2209000 0.6513000 0.1446500 -N 0.3112000 0.4536000 0.1216900 -C 0.1618000 0.4508000 0.3988000 -C 0.0655000 0.4045000 0.3742000 -C 0.4330000 0.6265000 0.2941000 -C 0.3368000 0.5604000 0.3609000 -C 0.3406000 0.5465000 0.4429000 -C 0.2571000 0.4825000 0.5016000 -C 0.1636000 0.4316000 0.4812000 -C 0.0698000 0.3617000 0.5391000 -C -0.0185000 0.3162000 0.5153000 -C -0.0242000 0.3364000 0.4325000 -C -0.1155000 0.2945000 0.4044000 -C -0.1141000 0.3191000 0.3249000 -C -0.0222000 0.3886000 0.2696000 -C -0.0176000 0.4171000 0.1817000 -C 0.2633000 0.6282000 0.0654000 -C 0.3107000 0.5225000 0.0531000 -C 0.1351000 0.7738000 0.2443000 -C 0.1794000 0.7490000 0.1574000 -C 0.1759000 0.8272000 0.0917000 -C 0.2158000 0.8046000 0.0124000 -C 0.2617000 0.7028000 -0.0033000 -C 0.3048000 0.6705000 -0.0841000 -C 0.3488000 0.5720000 -0.0951000 -C 0.3545000 0.4947000 -0.0270000 -C 0.4019000 0.3911000 -0.0342000 -C 0.4020000 0.3221000 0.0339000 -C 0.3547000 0.3550000 0.1123000 -C 0.3500000 0.2798000 0.1885000 -Cu 0.2432900 -0.0346600 -0.2499900 -F 0.4307000 -0.3278700 -0.4093500 -F 0.4697000 -0.3604000 -0.2952300 -F 0.6117000 -0.2943000 -0.3997000 -F 0.5266000 0.1874000 -0.4456800 -F 0.6366000 0.1274000 -0.3675500 -F 0.6675000 0.0733000 -0.4842200 -F 0.1987000 0.3381000 -0.2739000 -F 0.2581000 0.3642000 -0.1763000 -F 0.0772000 0.3111000 -0.1566000 -F 0.4910000 -0.0424000 -0.0730200 -F 0.5344000 0.1238000 -0.1025100 -F 0.6043000 0.0178000 -0.1930200 -F -0.0747000 -0.2415000 -0.0389000 -F -0.2127000 -0.1292000 -0.0588100 -F -0.0725000 -0.0847000 -0.0107400 -F -0.0645000 0.0673000 -0.3846000 -F 0.0151000 -0.0702000 -0.4300400 -F -0.1562000 -0.0796000 -0.3429000 -O 0.3366000 -0.1791000 -0.2933300 -O 0.3788000 0.0466000 -0.3387600 -O 0.1661000 0.1234000 -0.2150000 -O 0.3505000 -0.0291800 -0.1764800 -O 0.1097000 -0.1073000 -0.1545800 -O 0.1329000 -0.0356600 -0.3216200 -C 0.4439000 -0.1792000 -0.3434000 -C 0.5217000 -0.0926000 -0.3831000 -C 0.4833000 0.0119000 -0.3772000 -C 0.4909000 -0.2900000 -0.3627000 -C 0.5802000 0.0990000 -0.4197000 -C 0.2330000 0.1834000 -0.1950000 -C 0.3389000 0.1574000 -0.1676000 -C 0.3874000 0.0557000 -0.1607000 -C 0.1924000 0.2999000 -0.2002000 -C 0.5046000 0.0389000 -0.1316000 -C -0.0038000 -0.1074000 -0.1515000 -C -0.0567000 -0.0816000 -0.2152000 -C 0.0170000 -0.0511000 -0.2960000 -C -0.0920000 -0.1418000 -0.0640000 -C -0.0493000 -0.0317000 -0.3633000 -H 0.5150000 0.5969000 0.2899000 -H 0.4303000 0.6981000 0.3069000 -H 0.4155000 0.6267000 0.2426000 -H 0.4012000 0.5818000 0.4567000 -H 0.2614000 0.4721000 0.5554000 -H 0.0701000 0.3477000 0.5937000 -H -0.0770000 0.2706000 0.5538000 -H -0.1773000 0.2495000 0.4406000 -H -0.1742000 0.2900000 0.3066000 -H -0.0949000 0.4508000 0.1786000 -H -0.0058000 0.3538000 0.1553000 -H 0.0510000 0.4651000 0.1543000 -H 0.0486000 0.7952000 0.2575000 -H 0.1848000 0.8306000 0.2501000 -H 0.1436000 0.7117000 0.2811000 -H 0.1463000 0.8950000 0.1023000 -H 0.2124000 0.8565000 -0.0308000 -H 0.3022000 0.7188000 -0.1295000 -H 0.3763000 0.5533000 -0.1482000 -H 0.4337000 0.3693000 -0.0861000 -H 0.4334000 0.2535000 0.0285000 -H 0.4334000 0.2560000 0.1868000 -H 0.2987000 0.2196000 0.1915000 -H 0.3148000 0.3155000 0.2361000 -H 0.6031000 -0.1058000 -0.4150000 -H 0.3783000 0.2118000 -0.1534000 -H -0.1435000 -0.0848000 -0.2037000 - - OUTPUT CELL INFORMATION -Symmetry information: -Triclinic crystal system. -Space group number : 2 -Hall symbol : -P 1 -Hermann-Mauguin symbol : P-1 - -Bravais lattice vectors : - 11.1653000 0.0000000 0.0000000 - 0.5341567 12.6653411 0.0000000 - 5.1637804 2.1429031 16.2285807 -All sites, (cartesian coordinates): -Atom x y z -Cu 3.9330561 7.0653043 3.6846992 -Cu 12.9301810 7.7429399 12.5438814 -N 4.8157675 7.2249664 5.5010020 -N 12.0474697 7.5832778 10.7275787 -N 2.4871774 6.0783624 4.7786679 -N 14.3760597 8.7298817 11.4499128 -N 3.5612519 8.5589076 2.3474642 -N 13.3019853 6.2493366 13.8811165 -N 4.3453153 6.0057686 1.9748560 -N 12.5179218 8.8024756 14.2537247 -C 4.1066590 6.5641255 6.4719580 -C 12.7565781 8.2441186 9.7566227 -C 2.8796802 5.9250048 6.0727349 -C 13.9835570 8.8832393 10.1558458 -C 6.6878919 8.5650640 4.7728256 -C 10.1753452 6.2431802 11.4557551 -C 5.9234228 7.8710309 5.8568948 -C 10.9398143 6.9372133 10.3716859 -C 6.3818562 7.8707007 7.1876384 -C 10.4813810 6.9375435 9.0409423 -C 5.7184815 7.1859072 8.1402561 -C 11.1447556 7.6223369 8.0883246 -C 4.5419963 6.4975262 7.8091930 -C 12.3212409 8.3107180 8.4193877 -C 3.7563364 5.7362929 8.7488279 -C 13.1069007 9.0719512 7.4797528 -C 13.7885384 5.1090188 8.3625876 -C 3.0746988 9.6992253 7.8659931 -C 13.3081251 5.1874263 7.0188611 -C 3.5551120 9.6208178 9.2097195 -C 12.1212498 4.5965329 6.5628380 -C 4.7419873 10.2117112 9.6657427 -C 11.7395009 4.7377395 5.2726659 -C 5.1237362 10.0705046 10.9559148 -C 12.5171588 5.4994782 4.3752254 -C 4.3460783 9.3087659 11.8533553 -C 12.1298464 5.6720792 2.9487331 -C 4.7333907 9.1361649 13.2798476 -C 3.6130920 8.0965131 1.0613492 -C 13.2501452 6.7117310 15.1672315 -C 4.0223523 6.7314289 0.8617376 -C 12.8408848 8.0768153 15.3668431 -C 3.1832740 10.3239521 3.9646423 -C 13.6799631 4.4842920 12.2639384 -C 3.2159172 9.8236334 2.5543786 -C 13.6473199 4.9846107 13.6742021 -C 2.8793494 10.6732743 1.4881608 -C 13.9838878 4.1349698 14.7404198 -C 2.9032851 10.2171054 0.2012344 -C 13.9599520 4.5911387 16.0273463 -C 8.4441043 11.0370332 16.1750264 -C 8.4191328 3.7712109 0.0535543 -C 8.4908420 10.4547961 14.8637571 -C 8.3723951 4.3534480 1.3648236 -C 8.8726992 9.1836881 14.6852427 -C 7.9905379 5.6245561 1.5433380 -C 9.2467045 8.3505889 15.7904090 -C 7.6165326 6.4576552 0.4381717 -C 9.6834219 7.0230307 15.6735632 -C 7.1798152 7.7852135 0.5550175 -C 4.8355546 4.1521508 0.5501489 -C 12.0276825 10.6560934 15.6784318 -C 4.7298501 4.7368441 1.8224696 -C 12.1333870 10.0714000 14.4061111 -C 5.0306847 3.9476997 3.0590875 -C 11.8325525 10.8605445 13.1694932 -Cu 7.1048840 13.8335376 12.1714355 -Cu 9.7583531 0.9747065 4.0571452 -F 8.2179044 9.7784614 9.5854112 -F 8.6453328 5.0297827 6.6431695 -F 9.2252656 9.6110059 11.4374168 -F 7.6379716 5.1972382 4.7911639 -F 10.3065858 10.2243159 9.7420170 -F 6.5566513 4.5839282 6.4865637 -F 8.8421347 3.5613389 8.9958268 -F 8.0211024 11.2469052 7.2327538 -F 10.4417145 2.9688435 10.2637659 -F 6.4215227 11.8394006 5.9648148 -F 10.1553661 2.0336360 8.3703773 -F 6.7078710 12.7746081 7.8582033 -F 6.1485645 5.8381137 11.7835724 -F 10.7146727 8.9701304 4.4450083 -F 7.3297097 6.3778265 13.3674819 -F 9.5335274 8.4304177 2.8610988 -F 5.3832697 5.7475121 13.6871850 -F 11.4799674 9.0607321 2.5413957 -F 10.7803919 14.1147589 15.0435697 -F 6.0828452 0.6934852 1.1850110 -F 10.6673062 3.4912033 14.5649889 -F 6.1959309 11.3170408 1.6635918 -F 10.9237663 1.9547230 13.0961400 -F 5.9394708 12.8535211 3.1324406 -F 15.6993193 11.6662053 15.5972889 -F 1.1639178 3.1420388 0.6312918 -F 14.1156828 13.0458579 15.2741779 -F 2.7475543 1.7623862 0.9544028 -F 15.9530508 13.7124750 16.0542857 -F 0.9101863 1.0957692 0.1742950 -F 13.6588774 2.1711200 9.9870686 -F 3.2043598 12.6371241 6.2415121 -F 3.6084032 12.9976032 9.2496419 -F 13.2548339 1.8106410 6.9789388 -F 13.3060381 13.0652815 10.6638004 -F 3.5571990 1.7429626 5.5647803 -O 7.8458179 11.9113038 11.4682511 -O 9.0174192 2.8969403 4.7603296 -O 7.6688055 2.0071781 10.7309867 -O 9.1944316 12.8010660 5.4975940 -O 5.9740389 3.2450820 12.7394358 -O 10.8891982 11.5631621 3.4891448 -O 8.6844841 14.0604899 13.3645608 -O 8.1787530 0.7477542 2.8640199 -O 6.0672383 13.1180031 13.7199667 -O 10.7959988 1.6902411 2.5086140 -O 5.5019824 13.6673976 11.0091446 -O 11.3612547 1.1408465 5.2194361 -C 8.7852507 11.8027421 10.6556861 -C 8.0779864 3.0055020 5.5728946 -C 9.4951670 12.8144874 10.0114114 -C 7.3680702 1.9937568 6.2171693 -C 8.6185484 1.4853176 10.1071601 -C 8.2446887 13.3229265 6.1214206 -C 9.1511743 10.3580643 10.3424745 -C 7.7120628 4.4501799 5.8861062 -C 9.5275304 2.4973954 9.4174454 -C 7.3357068 12.3108487 6.8111353 -C 6.8563225 4.0478605 13.0640075 -C 10.0069147 10.7603836 3.1645732 -C 8.1663273 3.7772772 13.5086706 -C 8.6969099 11.0309669 2.7199101 -C 8.6891507 2.5039980 13.6206478 -C 8.1740865 12.3042461 2.6079329 -C 6.4383889 5.5122297 12.9796188 -C 10.4248482 9.2960145 3.2489619 -C 10.1390160 2.3535788 14.0928995 -C 6.7242211 12.4546653 2.1356812 -C 15.9811278 13.1233367 13.7699507 -C 0.8821093 1.6849074 2.4586300 -C 15.0753319 13.3135996 12.7361901 -C 1.7879052 1.4946446 3.4923906 -C 4.3319728 13.5267459 11.4249208 -C 12.5312643 1.2814982 4.8036599 -C 15.4298042 12.8751530 15.1899515 -C 1.4334330 1.9330912 1.0386292 -C 14.4198536 13.6282361 10.3327373 -C 2.4433835 1.1800080 5.8958434 -H 7.5659476 8.1811697 4.7046655 -H 9.2972895 6.6270745 11.5239152 -H 6.7620876 9.4993315 4.9805514 -H 10.1011495 5.3089126 11.2480293 -H 6.2266713 8.4572375 3.9370537 -H 10.6365658 6.3510066 12.2915270 -H 7.1485893 8.3473593 7.4115928 -H 9.7146479 6.4608849 8.8169879 -H 6.0387484 7.1694759 9.0133537 -H 10.8244887 7.6387683 7.2152270 -H 4.0341503 5.6759806 9.6349084 -H 12.8290869 9.1322635 6.5936723 -H 13.3098163 4.6139810 8.9873880 -H 3.5534208 10.1942631 7.2411927 -H 11.5941261 4.1041657 7.1503127 -H 5.2691111 10.7040784 9.0782680 -H 10.9584253 4.3299630 4.9756828 -H 5.9048119 10.4782811 11.2528979 -H 11.2687621 6.0922582 2.8984245 -H 5.5944751 8.7159859 13.3301562 -H 12.0914610 4.8137905 2.5202986 -H 4.7717761 9.9944536 13.7082821 -H 1.6146379 6.2213001 2.5040700 -H 15.2485992 8.5869441 13.7245107 -H 2.2970685 10.6232768 4.1788595 -H 14.5661687 4.1849674 12.0497212 -H 3.7979631 11.0555581 4.0571452 -H 13.0652740 3.7526861 12.1714355 -H 3.4350351 9.6162933 4.5618540 -H 13.4282020 5.1919508 11.6667267 -H 2.6398084 11.5546992 1.6601838 -H 14.2234287 3.2535449 14.5683969 -H 7.8337509 12.9247663 15.7287404 -H 9.0294862 1.8834779 0.4998403 -H 8.2531764 10.9692443 14.1269795 -H 8.6100608 3.8389999 2.1016012 -H 8.8955595 8.8330580 13.8235050 -H 7.9676777 5.9751861 2.4050757 -H 9.7588336 6.6357096 14.8312999 -H 7.1044035 8.1725346 1.3972808 -H 5.1216175 3.2717367 0.4625145 -H 11.7416196 11.5365074 15.7660661 -H 5.9403793 3.6426216 3.0314989 -H 10.9228578 11.1656225 13.1970818 -H 4.4412399 3.1916748 3.1077732 -H 12.4219973 11.6165693 13.1208075 -H 4.9025314 4.5018545 3.8315679 -H 11.9607057 10.3063896 12.3970128 -H 10.2322469 12.5789463 9.4937197 -H 6.6309902 2.2292979 6.7348610 -H 8.7086239 4.4967010 13.7391164 -H 8.1546132 10.3115432 2.4894643 -H 14.1638580 13.2977139 12.9228188 -H 2.6993791 1.5105303 3.3057619 - -Unit cell volume : 2294.9214496 A^3 -Unit cell density : 1.0150537 u/A^3 = 11.3745613 g/cm^3 diff --git a/cell2mol/test/infodata/KANYUT.info b/cell2mol/test/infodata/KANYUT.info deleted file mode 100644 index f1b56202b..000000000 --- a/cell2mol/test/infodata/KANYUT.info +++ /dev/null @@ -1,433 +0,0 @@ -['Fe', 'Cl', 'N', 'N', 'N', 'N', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H'] -CIF2CELL 1.2.10 -2022-01-24 14:50 -Output for ( -Chloro-(meso-tetraphenylporphyrinato-N,N',N'',N''')-iron(iii)) -CIF file exported from Chemical Abstracts. -Database reference code: None. - - BIBLIOGRAPHIC INFORMATION -W.R.Scheidt and M.G.Finnegan, Acta -Crystallogr.,Sect.C:Cryst.Struct.Commun. 45, 1214- (1989) - - INPUT CELL INFORMATION -Symmetry information: -Monoclinic crystal system. -Space group number : 14 -Hall symbol : -P 2yn -Hermann-Mauguin symbol : P21/n - -Lattice parameters: - a b c - 10.2540000 15.9690000 20.8100000 - alpha beta gamma - 90.0000000 90.4800000 90.0000000 -Representative sites : -Atom x y z -Fe 0.3671600 0.3253900 -0.3514360 -Cl 0.1763900 0.2643800 -0.3359600 -N 0.3616000 0.3642000 -0.4458100 -N 0.4852000 0.2279900 -0.3827100 -N 0.4598000 0.3140200 -0.2633100 -N 0.3314000 0.4493200 -0.3269400 -C 0.3027000 0.4360700 -0.4689500 -C 0.3857000 0.3151600 -0.4987700 -C 0.4962000 0.1980100 -0.4446300 -C 0.5492000 0.1702600 -0.3440100 -C 0.5235000 0.2427100 -0.2406000 -C 0.4427000 0.3650700 -0.2106100 -C 0.3356000 0.4836900 -0.2658900 -C 0.2815000 0.5113800 -0.3661700 -C 0.2903000 0.4304200 -0.5374100 -C 0.3418000 0.3574400 -0.5560200 -C 0.5668000 0.1205900 -0.4445000 -C 0.5976000 0.1034100 -0.3830600 -C 0.5426000 0.2503600 -0.1728800 -C 0.4925000 0.3237000 -0.1540600 -C 0.2874000 0.5676200 -0.2675700 -C 0.2555000 0.5848100 -0.3292800 -C 0.4487000 0.2376100 -0.4996400 -C 0.5654000 0.1762200 -0.2776800 -C 0.3862000 0.4445000 -0.2108700 -C 0.2649000 0.5051300 -0.4328800 -C 0.4725000 0.2002100 -0.5644300 -C 0.5886000 0.2129000 -0.5944800 -C 0.6057000 0.1882000 -0.6576900 -C 0.5064000 0.1494000 -0.6900900 -C 0.3910000 0.1345000 -0.6604900 -C 0.3734000 0.1601000 -0.5978800 -C 0.6425000 0.1087000 -0.2447100 -C 0.5828000 0.0387000 -0.2199200 -C 0.6561000 -0.0248000 -0.1908000 -C 0.7863000 -0.0172000 -0.1875000 -C 0.8471000 0.0520000 -0.2107000 -C 0.7754000 0.1151000 -0.2396400 -C 0.3884000 0.4935900 -0.1495600 -C 0.2775000 0.5116000 -0.1166300 -C 0.2810000 0.5578000 -0.0601300 -C 0.3990000 0.5880000 -0.0380700 -C 0.5101000 0.5710000 -0.0707100 -C 0.5060000 0.5238000 -0.1261200 -C 0.2044000 0.5770500 -0.4689300 -C 0.2761000 0.6211000 -0.5134600 -C 0.2187000 0.6837000 -0.5504200 -C 0.0895000 0.7023000 -0.5430100 -C 0.0187000 0.6608000 -0.4984400 -C 0.0747000 0.5974100 -0.4612700 -H 0.2523000 0.4712000 -0.5646000 -H 0.3484000 0.3372000 -0.5987000 -H 0.5878000 0.0875000 -0.4809000 -H 0.6433000 0.0555000 -0.3684000 -H 0.5838000 0.2104000 -0.1461000 -H 0.4899000 0.3445000 -0.1115000 -H 0.2794000 0.6045000 -0.2321000 -H 0.2219000 0.6361000 -0.3449000 -H 0.6581000 0.2388000 -0.5722000 -H 0.6866000 0.1981000 -0.6787000 -H 0.5190000 0.1329000 -0.7335000 -H 0.3228000 0.1069000 -0.6826000 -H 0.2924000 0.1499000 -0.5771000 -H 0.4908000 0.0333000 -0.2224000 -H 0.6135000 -0.0728000 -0.1737000 -H 0.8359000 -0.0606000 -0.1687000 -H 0.9391000 0.0577000 -0.2073000 -H 0.8188000 0.1630000 -0.2563000 -H 0.1962000 0.4926000 -0.1324000 -H 0.2031000 0.5684000 -0.0368000 -H 0.4019000 0.6205000 -0.0001000 -H 0.5908000 0.5916000 -0.0555000 -H 0.5845000 0.5118000 -0.1485000 -H 0.3659000 0.6088000 -0.5191000 -H 0.2698000 0.7136000 -0.5808000 -H 0.0500000 0.7438000 -0.5690000 -H -0.0703000 0.6746000 -0.4922000 -H 0.0232000 0.5685000 -0.4305000 - - OUTPUT CELL INFORMATION -Symmetry information: -Monoclinic crystal system. -Space group number : 14 -Hall symbol : -P 2yn -Hermann-Mauguin symbol : P21/n - -Bravais lattice vectors : - 10.2540000 0.0000000 0.0000000 - 0.0000000 15.9690000 0.0000000 - -0.1743354 0.0000000 20.8092697 -All sites, (cartesian coordinates): -Atom x y z -Fe 3.6517910 5.1961529 13.4961432 -Fe 8.8659587 2.7883471 3.0915083 -Fe 1.2137059 13.1806529 17.7177614 -Fe 6.4278736 10.7728471 7.3131265 -Cl 1.6929374 4.2218842 13.8181875 -Cl 6.9071051 3.7626158 3.4135526 -Cl 3.1725595 12.2063842 17.3957171 -Cl 8.3867272 11.7471158 6.9910823 -N 3.6112315 5.8159098 11.5322892 -N 8.8253992 2.1685902 1.1276543 -N 1.2542654 13.8004098 19.6816154 -N 6.4684331 10.1530902 9.2769805 -N 4.8676253 3.6407723 12.8453541 -N 10.0817930 4.3437277 2.4407192 -N -0.0021284 11.6252723 18.3685505 -N 5.2120393 12.3282277 7.9639156 -N 4.5863580 5.0145854 15.3299809 -N 9.8005258 2.9699146 4.9253461 -N 0.2791388 12.9990854 15.8839237 -N 5.4933065 10.9544146 5.4792888 -N 3.2808374 7.1751911 14.0058871 -N 8.4950051 0.8093089 3.6012522 -N 1.5846595 15.1596911 17.2080175 -N 6.7988272 8.7938089 6.8033826 -C 3.0113050 6.9636018 11.0507627 -C 8.2254727 1.0208982 0.6461278 -C 1.8541919 14.9481018 20.1631419 -C 7.0683596 9.0053982 9.7585070 -C 3.8675857 5.0327900 10.4302303 -C 9.0817534 2.9517100 0.0255954 -C 0.9979112 13.0172900 20.7836743 -C 6.2120789 10.9362100 10.3790395 -C 4.9912141 3.1620217 11.5568441 -C 10.2053818 4.8224783 1.1522093 -C -0.1257173 11.1465217 19.6570605 -C 5.0884504 12.8069783 9.2524256 -C 5.5171345 2.7188819 13.6506729 -C 0.4773022 5.2656181 3.2460380 -C 9.6023624 10.7033819 17.5632318 -C 4.5625301 13.2501181 7.1585969 -C 5.2355787 3.8758360 15.8025594 -C 0.1957464 4.1086640 5.3979246 -C 9.8839182 11.8603360 15.4113452 -C 4.8440859 12.0931640 5.0067103 -C 4.4018272 5.8298028 16.4266294 -C 9.6159949 2.1546972 6.0219946 -C 0.4636697 13.8143028 14.7872752 -C 5.6778374 10.1391972 4.3826403 -C 3.3132610 7.7240456 15.2762930 -C 8.5274287 0.2604544 4.8716581 -C 1.5522359 15.7085456 15.9376116 -C 6.7664036 8.2449544 5.5329767 -C 2.7760020 8.1662272 13.1895394 -C 7.9901697 15.7872728 2.7849046 -C 2.0895201 0.1817272 18.0213562 -C 7.3036626 7.8027728 7.6197303 -C 2.8960904 6.8733770 9.6261601 -C 7.9359227 1.1111230 20.0307950 -C 2.1437419 14.8578770 0.7784748 -C 7.1835742 9.0956230 11.1831097 -C 3.4274158 5.7079594 9.2388996 -C 8.4672481 2.2765406 19.6435345 -C 1.6124165 13.6924594 1.1657353 -C 6.6522488 10.2610406 11.5703702 -C 5.7151239 1.9257017 11.5595493 -C 0.6752916 6.0587983 1.1549145 -C 9.4043730 9.9102017 19.6543553 -C 4.3645407 14.0432983 9.2497204 -C 6.0202359 1.6513543 12.8380709 -C 0.9804036 6.3331457 2.4334360 -C 9.0992610 9.6358543 18.3758337 -C 4.0594287 14.3176457 7.9711989 -C 5.4196241 3.9979988 17.2117632 -C 0.3797918 3.9865012 6.8071283 -C 9.6998728 11.9824988 14.0021414 -C 4.6600405 11.9710012 3.5975066 -C 4.9026177 5.1691653 17.6033936 -C 10.1167854 2.8153347 7.1987588 -C -0.0371208 13.1536653 13.6105110 -C 5.1770469 10.7998347 3.2058761 -C 2.8193111 9.0643238 15.2413334 -C 8.0334788 14.8891762 4.8366986 -C 2.0461858 1.0798238 15.9725712 -C 7.2603535 6.9046762 5.5679363 -C 2.5029668 9.3388309 13.9571934 -C 7.7171345 14.6146691 3.5525585 -C 2.3625301 1.3543309 17.2567112 -C 7.5766978 6.6301691 6.8520763 -C 4.5137393 3.7943941 10.4121262 -C 9.7279070 4.1901059 0.0074913 -C 0.3517576 11.7788941 20.8017784 -C 5.5659253 12.1746059 10.3971435 -C 5.6716856 2.8140572 15.0309517 -C 0.6318534 5.1704428 4.6263168 -C 9.4478112 10.7985572 16.1829529 -C 4.4079789 13.1549428 5.7783180 -C 3.8225215 7.0982205 16.4212190 -C 9.0366892 0.8862795 6.0165842 -C 1.0429754 15.0827205 14.7926856 -C 6.2571431 8.8707795 4.3880507 -C 2.6174155 8.0664210 11.8013531 -C 7.8315832 15.8870790 1.3967182 -C 2.2480814 0.0819210 19.4125516 -C 7.4622491 7.9025790 9.0079167 -C 4.7690797 3.1971535 9.0638936 -C 9.8089120 4.7873465 19.4685285 -C 0.2707526 11.1816535 1.3407412 -C 5.3105849 12.7718465 11.7453761 -C 5.9648079 3.3998001 8.4385751 -C 0.7506402 4.5846999 18.8432099 -C 9.3290244 11.3843001 1.9660598 -C 4.1148567 12.5691999 12.3706947 -C 6.1511710 3.0053658 7.1232211 -C 0.9370033 4.9791342 17.5278560 -C 9.1426612 10.9898658 3.2814137 -C 3.9284935 12.9636342 13.6860486 -C 5.1385973 2.3857686 6.4490008 -C -0.0755704 5.5987314 16.8536357 -C 10.1552350 10.3702686 3.9556341 -C 4.9410673 13.5832314 14.3602690 -C 3.9501254 2.1478305 7.0649552 -C 8.9899577 5.8366695 17.4695900 -C 1.0897069 10.1323305 3.3396797 -C 6.1295392 13.8211695 13.7443146 -C 3.7587398 2.5566369 8.3678235 -C 8.7985721 5.4278631 18.7724584 -C 1.2810925 10.5411369 2.0368113 -C 6.3209247 13.4123631 12.4414462 -C 6.4565212 1.7358303 15.7170333 -C 1.4166889 6.2486697 5.3123985 -C 8.6629757 9.7203303 15.4968713 -C 3.6231434 14.2331697 5.0922364 -C 5.8400356 0.6180003 16.2328951 -C 0.8002033 7.3664997 5.8282603 -C 9.2794613 8.6025003 14.9810095 -C 4.2396290 15.3509997 4.5763746 -C 6.5865772 15.5729688 16.8388611 -C 1.5467449 8.3805312 6.4342262 -C 8.5329197 7.5884688 14.3750435 -C 3.4930874 0.3960312 3.9704087 -C 7.9210727 15.6943332 16.9075317 -C 2.8812404 8.2591668 6.5028968 -C 7.1984242 7.7098332 14.3063729 -C 2.1585919 0.2746668 3.9017381 -C 8.5485605 0.8303880 16.4247566 -C 3.5087282 7.1541120 6.0201217 -C 6.5709364 8.8148880 14.7891480 -C 1.5311041 15.1386120 4.3845131 -C 7.8183939 1.8380319 15.8225363 -C 2.7785616 6.1464681 5.4179015 -C 7.3011030 9.8225319 15.3913683 -C 2.2612707 14.1309681 4.9867334 -C 3.8343918 7.8821387 17.6970354 -C 9.0485595 0.1023613 7.2924005 -C 1.0311051 15.8666387 13.5168693 -C 6.2452728 8.0868613 3.1122344 -C 2.6914823 8.1697404 18.3822846 -C 7.9056500 15.7837596 7.9776497 -C 2.1740146 0.1852404 12.8316200 -C 7.3881823 7.7992596 2.4269851 -C 2.7175214 8.9075082 19.5580084 -C 7.9316891 15.0459918 9.1533735 -C 2.1479755 0.9230082 11.6558963 -C 7.3621432 7.0614918 1.2512614 -C 3.9236475 9.3897720 20.0170608 -C 9.1378152 14.5637280 9.6124260 -C 0.9418493 1.4052720 11.1968438 -C 6.1560171 6.5792280 0.7922089 -C 5.0685572 9.1182990 19.3378463 -C 0.0287250 14.8352010 8.9332114 -C 10.0509396 1.1337990 11.8760583 -C 5.0111073 6.8507010 1.4714235 -C 5.0361758 8.3645622 18.1848046 -C -0.0036565 15.5889378 7.7801698 -C 10.0833211 0.3800622 13.0291000 -C 5.0434888 7.6044378 2.6244651 -C 2.0033333 9.2149114 11.0511789 -C 7.2175010 14.7385886 0.6465440 -C 2.8621636 1.2304114 20.1627257 -C 8.0763313 6.7540886 9.7580909 -C 2.7463083 9.9183459 10.1245421 -C 7.7861405 14.0351541 20.5291770 -C 2.2935240 1.9338459 0.2800928 -C 7.3333563 6.0506541 10.6847276 -C 2.1641721 10.9180053 9.3554315 -C 7.2040044 13.0354947 19.7600664 -C 2.8756602 2.9335053 1.0492034 -C 7.9154925 5.0509947 11.4538383 -C 0.8380635 11.2150287 9.5096282 -C 5.8778958 12.7384713 19.9142630 -C 4.2017688 3.2305287 0.8950067 -C 9.2416011 4.7539713 11.2996416 -C 0.1043101 10.5523152 10.4370973 -C 5.3184778 13.4011848 0.0324625 -C 4.7611868 2.5678152 20.7768073 -C 9.9753545 5.4166848 10.3721724 -C 0.6720541 9.5400403 11.2105779 -C 5.8862218 14.4134597 0.8059430 -C 4.1934428 1.5555403 20.0033267 -C 9.4076105 6.4289597 9.5986919 -H 2.5111786 7.5245928 9.0603560 -H 7.5510109 0.4599072 19.4649909 -H 2.5286537 15.5090928 1.3442788 -H 7.5684860 8.4444072 11.7489137 -H 3.5025328 5.3847468 8.3507599 -H 8.5423651 2.5997532 18.7553948 -H 1.5372995 13.3692468 2.0538749 -H 6.5771318 10.5842532 12.4585098 -H 5.9368037 1.3972875 10.8020919 -H 0.8969714 6.5872125 0.3974571 -H 9.1826932 9.3817875 20.4118127 -H 4.1428609 14.5717125 10.0071778 -H 6.4862880 0.8862795 13.1431348 -H 1.4464557 7.0982205 2.7384999 -H 8.6332089 8.8707795 18.0707698 -H 3.5933766 15.0827205 7.6661350 -H 5.8374202 3.3598776 17.7690354 -H 0.7975879 4.6246224 7.3644006 -H 9.2820767 11.3443776 13.4448692 -H 4.2422444 12.6091224 3.0402343 -H 4.8685376 5.5013205 18.4890362 -H 10.0827053 2.4831795 8.0844013 -H -0.0030407 13.4858205 12.7248684 -H 5.2111270 10.4676795 2.3202336 -H 2.7310954 9.6532605 15.9794382 -H 7.9452631 14.3002395 5.5748034 -H 2.1344014 1.6687605 15.2344664 -H 7.3485692 6.3157395 4.8298315 -H 2.1611555 10.1578809 13.6321526 -H 7.3753232 13.7956191 3.2275177 -H 2.7043414 2.1733809 17.5817520 -H 7.9185091 5.8111191 7.1771171 -H 6.6735767 3.8133972 8.9022056 -H 1.4594090 4.1711028 19.3068405 -H 8.6202556 11.7978972 1.5024293 -H 3.4060879 12.1556028 11.9070641 -H 6.9843824 3.1634589 6.6860184 -H 1.7702147 4.8210411 17.0906532 -H 8.3094499 11.1479589 3.7186165 -H 3.0952822 12.8055411 14.1232514 -H 5.2753656 2.1222801 5.5456704 -H 0.0611979 5.8622199 15.9503053 -H 10.0184667 10.1067801 4.8589645 -H 4.8042990 13.8467199 15.2635994 -H 3.2546571 1.7070861 6.6048622 -H 8.2944894 6.2774139 17.0094971 -H 1.7851752 9.6915861 3.7997727 -H 6.8250074 14.2619139 14.2044075 -H 2.9245432 2.3937531 8.8002402 -H 7.9643755 5.5907469 19.2048750 -H 2.1152891 10.3782531 1.6043947 -H 7.1551214 13.5752469 12.0090296 -H 4.8971000 0.5317677 16.1812882 -H 10.1112677 7.4527323 5.7766533 -H -0.0316031 8.5162677 15.0326165 -H 5.1825646 15.4372323 4.6279816 -H 6.1467757 14.8064568 17.1946996 -H 1.1069434 9.1470432 6.7900647 -H 8.9727212 6.8219568 14.0192050 -H 3.9328889 1.1625432 3.6145702 -H 8.4263936 15.0012786 17.2987459 -H 3.3865613 8.9522214 6.8941111 -H 6.6931033 7.0167786 13.9151587 -H 1.6532710 0.9677214 3.5105238 -H 9.4913357 0.9214113 16.4955081 -H 4.4515034 7.0630887 6.0908733 -H 5.6281612 8.9059113 14.7183965 -H 0.5883289 15.0475887 4.3137616 -H 8.2663220 2.6029470 15.4758539 -H 3.2264897 5.3815530 5.0712190 -H 6.8531749 10.5874470 15.7380507 -H 1.8133426 13.3660530 5.3334158 -H 1.8605814 7.8663294 18.0541224 -H 7.0747491 0.1181706 7.6494876 -H 3.0049155 15.8508294 13.1597822 -H 8.2190832 8.1026706 2.7551473 -H 1.9146675 9.0767796 20.0434886 -H 7.1288352 14.8767204 9.6388537 -H 2.9508294 1.0922796 11.1704160 -H 8.1649971 6.8922204 0.7657811 -H 4.1210826 9.9087645 0.0000000 -H 9.1609149 14.0447355 10.4046349 -H 0.9187497 1.9242645 10.4046349 -H 6.1329174 6.0602355 0.0000000 -H 5.8934034 9.4472604 19.6543553 -H 0.8535711 14.5062396 9.2497204 -H 9.2260935 1.4627604 11.5595493 -H 4.1862612 6.5217396 1.1549145 -H 5.8450164 8.1729342 17.7190932 -H 0.8051841 15.7805658 7.3144583 -H 9.2744805 0.1884342 13.4948114 -H 4.2346482 7.7960658 3.0901766 -H 3.6681007 9.7219272 10.0071778 -H 8.7092189 14.2315728 20.4118127 -H 1.3717316 1.7374272 0.3974571 -H 6.4115639 6.2470728 10.8020919 -H 2.6934478 11.3954784 8.7232459 -H 7.7332801 12.5580216 19.1278807 -H 2.3463845 3.4109784 1.6813890 -H 7.3862168 4.5735216 12.0860239 -H 0.4375614 11.8777422 8.9687953 -H 5.4773937 12.0757578 19.3734301 -H 4.6022709 3.8932422 1.4358396 -H 9.6421032 4.0912578 11.8404745 -H 9.4446163 10.7726874 10.5669472 -H 4.4047840 13.1808126 0.1623123 -H 5.6748806 2.7881874 20.6469574 -H 0.6350483 5.1963126 10.2423226 -H 0.1386088 9.0783765 11.8508791 -H 5.3527765 14.8751235 1.4462442 -H 4.7268881 1.0938765 19.3630255 -H 9.9410558 6.8906235 8.9583906 - -Unit cell volume : 3407.4373050 A^3 -Unit cell density : 0.8264262 u/A^3 = 9.2608258 g/cm^3 diff --git a/cell2mol/test/infodata/LOKXUG.info b/cell2mol/test/infodata/LOKXUG.info deleted file mode 100644 index abc1890c9..000000000 --- a/cell2mol/test/infodata/LOKXUG.info +++ /dev/null @@ -1,306 +0,0 @@ -LOKXUG.search5.cif -CIF2CELL 2.0.0 -2022-02-02 18:48 -Output for None (1,1'-bis(1,3-Di-t-butyl-1,3,2-diazaborolidinyl)ferrocene) -CIF file exported from Cambridge Structural Database. -Database reference code: LOKXUG. - BIBLIOGRAPHIC INFORMATION -A.Appel and H.Noth, Z.Anorg.Allg.Chem. 636, 2329- (2010) - INPUT CELL INFORMATION -Symmetry information: -Triclinic crystal system. -Space group number : 2 -Hall symbol : -P 1 -Hermann-Mauguin symbol : P-1 - -Lattice parameters: - a b c - 10.7610000 12.0900000 13.4540000 - alpha beta gamma -109.4400000 91.2200000 112.4600000 -Representative sites : -Atom x y z -Fe 0.0284600 0.3082900 0.1009500 -B 0.3282000 0.5482000 0.2732000 -B -0.1374000 0.0918000 0.2341000 -N 0.4618000 0.5547000 0.3014000 -N 0.3056000 0.6403000 0.3619000 -N -0.2726000 0.0013000 0.2310000 -N -0.0428000 0.0741000 0.2972000 -C 0.2341000 0.4481000 0.1607000 -C 0.2223000 0.3193000 0.1172000 -H 0.2536000 0.2764000 0.1466000 -C 0.1616000 0.2606000 0.0082000 -H 0.1471000 0.1758000 -0.0394000 -C 0.1288000 0.3515000 -0.0174000 -H 0.0852000 0.3379000 -0.0860000 -C 0.1710000 0.4652000 0.0754000 -H 0.1596000 0.5416000 0.0801000 -C -0.1140000 0.1856000 0.1698000 -C -0.1435000 0.1386000 0.0549000 -H -0.1502000 0.0561000 0.0082000 -C -0.1658000 0.2308000 0.0225000 -H -0.1920000 0.2212000 -0.0496000 -C -0.1446000 0.3386000 0.1157000 -H -0.1535000 0.4157000 0.1189000 -C -0.1112000 0.3114000 0.2047000 -H -0.0981000 0.3608000 0.2721000 -C 0.5037000 0.6233000 0.4168000 -H 0.5990000 0.6800000 0.4337000 -H 0.4880000 0.5633000 0.4523000 -C 0.4199000 0.6958000 0.4500000 -H 0.3869000 0.6890000 0.5143000 -H 0.4724000 0.7851000 0.4624000 -C 0.1948000 0.6826000 0.3866000 -C 0.1067000 0.6095000 0.4515000 -H 0.0725000 0.5185000 0.4118000 -H 0.0316000 0.6335000 0.4652000 -H 0.1609000 0.6307000 0.5182000 -C 0.2531000 0.8267000 0.4526000 -H 0.3141000 0.8729000 0.4150000 -H 0.3018000 0.8437000 0.5204000 -H 0.1800000 0.8540000 0.4639000 -C 0.1080000 0.6593000 0.2845000 -H 0.1629000 0.7108000 0.2475000 -H 0.0332000 0.6827000 0.3024000 -H 0.0733000 0.5699000 0.2394000 -C 0.5577000 0.5054000 0.2430000 -C 0.7070000 0.6004000 0.2936000 -H 0.7257000 0.6027000 0.3646000 -H 0.7205000 0.6848000 0.2969000 -H 0.7674000 0.5725000 0.2509000 -C 0.5395000 0.4963000 0.1270000 -H 0.4478000 0.4376000 0.0921000 -H 0.6024000 0.4657000 0.0903000 -H 0.5570000 0.5799000 0.1259000 -C 0.5394000 0.3770000 0.2496000 -H 0.4512000 0.3125000 0.2114000 -H 0.5468000 0.3851000 0.3232000 -H 0.6088000 0.3524000 0.2184000 -C -0.2628000 -0.0834000 0.2854000 -H -0.3084000 -0.1720000 0.2384000 -H -0.3042000 -0.0709000 0.3484000 -C -0.1136000 -0.0454000 0.3147000 -H -0.0912000 -0.0334000 0.3880000 -H -0.0882000 -0.1111000 0.2700000 -C 0.1075000 0.1291000 0.3143000 -C 0.1632000 0.0979000 0.4031000 -H 0.1270000 0.1264000 0.4667000 -H 0.2609000 0.1413000 0.4181000 -H 0.1363000 0.0067000 0.3800000 -C 0.1531000 0.0696000 0.2107000 -H 0.1164000 0.0857000 0.1540000 -H 0.1208000 -0.0216000 0.1930000 -H 0.2510000 0.1074000 0.2201000 -C 0.1623000 0.2750000 0.3518000 -H 0.1243000 0.3119000 0.3078000 -H 0.1237000 0.3114000 0.4244000 -H 0.2452000 0.3113000 0.3581000 -C -0.4115000 -0.0328000 0.1788000 -C -0.5172000 -0.0852000 0.2447000 -H -0.4931000 -0.0244000 0.3170000 -H -0.5191000 -0.1654000 0.2443000 -H -0.6057000 -0.0988000 0.2142000 -C -0.4426000 -0.1352000 0.0675000 -H -0.3817000 -0.1003000 0.0239000 -H -0.5351000 -0.1619000 0.0358000 -H -0.4306000 -0.2079000 0.0726000 -C -0.4257000 0.0845000 0.1738000 -H -0.3979000 0.1505000 0.2440000 -H -0.5191000 0.0624000 0.1479000 -H -0.3690000 0.1155000 0.1263000 - - OUTPUT CELL INFORMATION -Symmetry information: -Triclinic crystal system. -Space group number : 2 -Hall symbol : -P 1 -Hermann-Mauguin symbol : P-1 - -Bravais lattice vectors : - 10.7610000 0.0000000 0.0000000 - -4.6188436 11.1729308 0.0000000 - -0.2864546 -4.9637054 12.5015875 -All sites, (cartesian coordinates): -Atom x y z -Fe -1.1466028 2.9434168 1.2620353 -Fe 7.0023046 3.2658087 11.2395522 -B 0.9214507 4.7689164 3.4154337 -B 4.9342510 1.4403091 9.0861538 -B 8.7913697 -0.1363284 2.9266216 -B -2.9356680 6.3455538 9.5749658 -N 2.3210198 4.7015639 3.7679785 -N 3.5346819 1.5076615 8.7336090 -N 0.2274481 5.3576626 4.5243245 -N 5.6282537 0.8515628 7.9772630 -N 7.7553759 -1.1320911 2.8878667 -N -1.8996741 7.3413166 9.6137208 -N 9.8730386 -0.6472991 3.7154718 -N -4.0173368 6.8565245 8.7861157 -C 0.4034130 4.2089229 2.0090051 -C 5.4522887 2.0003026 10.4925823 -C 0.8838010 2.9857705 1.4651860 -C 4.9719007 3.2234549 11.0364014 -H 1.4103470 2.3605189 1.8327327 -H 4.4453548 3.8487066 10.6688547 -C 0.5329580 2.8709634 0.1025130 -C 5.3227437 3.3382621 12.3990744 -H 0.4957821 -2.8039341 12.0090249 -H 5.3599197 9.0131596 0.4925625 -C -0.5189770 -0.9500517 12.2840598 -C 6.3746788 7.1592772 0.2175276 -H -0.9056896 -0.7614934 11.4264509 -H 6.7613913 6.9707188 1.0751365 -C -0.3301537 4.8233840 0.9426197 -C 6.1858555 1.3858414 11.5589678 -H -0.8070551 5.6536665 1.0013772 -H 6.6627569 0.5555589 11.5002103 -C 8.6283486 1.2308588 2.1227695 -C -2.7726469 4.9783667 10.3788179 -C 8.5608984 1.2760608 0.6863372 -C -2.7051967 4.9331647 11.8152503 -H 8.8832317 0.5860990 0.1025130 -H -3.0275300 5.6231264 12.3990744 -C 7.9043519 2.4670291 0.2812857 -C -2.0486501 3.7421964 12.2203017 -H 7.4009533 -2.2460533 11.8815087 -H -1.5452516 8.4552787 0.6200787 -C 7.6078761 3.2088537 1.4464337 -C -1.7521744 3.0003718 11.0551538 -H 7.1550737 4.0544028 1.4864387 -H -1.2993720 2.1548227 11.0151487 -C 8.0674316 2.4631802 2.5590750 -C -2.2117299 3.7460453 9.9425125 -H 7.9609228 2.6805692 3.4016819 -H -2.1052211 3.5286563 9.0999055 -C 2.4219962 4.8952154 5.2106616 -C 3.4337056 1.3140101 7.2909258 -H 3.1807900 5.4448339 5.4219385 -H 2.6749118 0.7643915 7.0796490 -H 2.5200100 4.0486280 5.6544680 -H 3.3356918 2.1605975 6.8471194 -C 1.1758479 5.5404579 5.6257144 -C 4.6798538 0.6687676 6.8758731 -H 0.8337240 5.1453157 6.4295664 -H 5.0219777 1.0639098 6.0720210 -H 1.3247856 6.4766506 5.7807340 -H 4.5309161 -0.2674252 6.7208534 -C -1.1673232 5.7076741 4.8331137 -C 7.0230250 0.5015514 7.6684737 -C -1.7963208 4.5687884 5.6444667 -C 7.6520225 1.6404371 6.8571207 -H -1.7326599 3.7491108 5.1481537 -H 7.5883617 2.4601147 7.3534337 -H -2.7192485 4.7689359 5.8157385 -H 8.5749503 1.4402895 6.6858490 -H -1.3301006 4.4745754 6.4783226 -H 7.1858023 1.7346501 6.0232648 -C -1.2244383 6.9900889 5.6582185 -C 7.0801400 -0.7808634 6.8433690 -H -0.7706372 7.6929136 5.1881588 -H 6.6263389 -1.4836881 7.3134287 -H -0.7983196 6.8434895 6.5058261 -H 6.6540213 -0.6342640 5.9957613 -H -2.1403988 7.2390200 5.7994864 -H 7.9961005 -1.0297945 6.7021010 -C -1.9645120 5.9541391 3.5567016 -C 7.8202137 0.2550863 8.9448858 -H -1.6010047 6.7132022 3.0941429 -H 7.4567064 -0.5039767 9.4074446 -H -2.8826432 6.1267354 3.7804800 -H 8.7383450 0.0824901 8.7211074 -H -1.9120749 5.1791422 2.9928800 -H 7.7677767 1.0300832 9.5087074 -C 3.5974377 4.4406188 3.0378858 -C 2.2582641 1.7686066 9.4637017 -C 4.7507702 5.2508838 3.6704661 -C 1.1049315 0.9583417 8.8311214 -H 4.9210393 4.9241584 4.5580788 -H 0.9346625 1.2850670 7.9435087 -H 4.5052680 6.1774989 3.7117213 -H 1.3504338 0.0317266 8.7898661 -H 5.5418320 5.1511092 3.1366483 -H 0.3138698 1.0581162 9.3649392 -C 3.4768477 4.9147350 1.5877016 -C 2.3788541 1.2944905 10.9138858 -H 2.7711874 4.4321173 1.1513962 -H 3.0845144 1.7771082 11.3501912 -H 4.3055641 4.7550113 1.1288933 -H 1.5501377 1.4542142 11.3726941 -H 3.2793449 5.8542521 1.5739499 -H 2.5763568 0.3549734 10.9276376 -C 3.9916803 2.9732541 3.1203962 -C 1.8640215 3.2359714 9.3811912 -H 3.3514181 2.4422136 2.6428356 -H 2.5042837 3.7670119 9.8587519 -H 4.0128160 2.6984261 4.0405131 -H 1.8428858 3.5107994 8.4610744 -H 4.8610546 2.8532676 2.7303467 -H 0.9946471 3.3559579 9.7712408 -C 3.6176230 8.8244669 3.5679531 -C 2.2380788 -2.6152414 8.9336344 -H 3.5496143 8.0678394 2.9803784 -H 2.3060875 -1.8586139 9.5212090 -H 3.0963354 8.6514151 4.3555531 -H 2.7593664 -2.4421896 8.1460344 -C 5.0392550 9.1036017 3.9342496 -C 0.8164468 -2.8943762 8.5673379 -H 5.2038781 8.8738373 4.8506159 -H 0.6518236 -2.6646118 7.6509715 -H 5.6288469 8.5914178 3.3754286 -H 0.2268548 -2.3821923 9.1261588 -C 0.4704821 -0.1176672 3.9292489 -C 5.3852196 6.3268927 8.5723385 -C 1.1885406 -0.9070397 5.0393899 -C 4.6671612 7.1162652 7.4621975 -H 0.6491368 -0.9043028 5.8344909 -H 5.2065650 7.1135283 6.6670966 -H 2.0351356 -0.4965901 5.2269137 -H 3.8205661 6.7058156 7.2746737 -H 1.3269253 -1.8113494 4.7506032 -H 4.5287765 8.0205749 7.7509842 -C 1.2656816 -0.2682167 2.6340845 -C 4.5900202 6.4774422 9.8675030 -H 0.8126315 0.1931095 1.9252445 -H 5.0430703 6.0161159 10.5763430 -H -3.2744336 9.9736004 2.4128064 -H 9.1301353 -3.7643749 10.0887811 -H 2.1418985 0.1074612 2.7515994 -H 3.7138032 6.1017642 9.7499881 -C 0.3755536 1.3263244 4.3980585 -C 5.4801482 4.8829010 8.1035290 -H -0.1911958 1.9570086 3.8479886 -H 6.0468975 4.2522169 8.6535988 -H -0.2287435 1.3726541 5.3056737 -H 6.0844453 4.8365714 7.1959137 -H 1.0981718 1.7006305 4.4768185 -H 4.7575300 4.5085950 8.0247690 -C 1.8142848 9.9189482 2.2352838 -C 4.0414169 -3.7097227 10.2663036 -C 0.8999972 9.0063784 3.0591384 -C 4.9557046 -2.7971530 9.4424490 -H 0.8578009 9.3268167 3.9630032 -H 4.9979008 -3.1175913 8.5385842 -H 1.2500971 8.1122949 3.0541378 -H 4.6056046 -1.9030694 9.4474496 -H 0.0192018 9.0058196 2.6778400 -H 5.8364999 -2.7965941 9.8237474 -C 1.9844697 9.3273005 0.8438572 -C 3.8712320 -3.1180750 11.6577303 -H 2.4911064 9.9336533 0.2987879 -H 3.3645953 -3.7244278 12.2027995 -H 1.1214810 9.1863327 0.4475568 -H 4.7342208 -2.9771072 12.0540306 -H 2.4479307 8.4897135 0.9076152 -H 3.4077710 -2.2804880 11.5939722 -C 5.7399642 0.0814207 2.1727759 -C 0.1157375 6.1278048 10.3288116 -H 5.7141672 0.4703820 3.0503873 -H 0.1415345 5.7388435 9.4512001 -H 4.8443824 -0.0369411 1.8489848 -H 1.0113193 6.2461666 10.6526027 -H 6.2205353 0.6635575 1.5789505 -H -0.3648336 5.5456679 10.9226370 - -Unit cell volume : 1503.0897208 A^3 -Unit cell density : 0.7267776 u/A^3 = 8.1441765 g/cm^3 diff --git a/cell2mol/test/infodata/ROKQAM.info b/cell2mol/test/infodata/ROKQAM.info deleted file mode 100644 index faa74c0e4..000000000 --- a/cell2mol/test/infodata/ROKQAM.info +++ /dev/null @@ -1,319 +0,0 @@ -ROKQAM.Copper.cif -CIF2CELL 2.0.0 -2022-02-02 18:45 -Output for None (bis{N-[N'-(2,6-dimethylphenyl)-N-phenylcarbamimidoyl]benzenecarboximidato}-cop -per(ii)) -CIF file exported from Cambridge Structural Database. -Database reference code: ROKQAM. - BIBLIOGRAPHIC INFORMATION -Qi Zhou et al., Jiegou Huaxue(Chin.)(Chin.J.Struct.Chem.) 38, 1283- (2019) - INPUT CELL INFORMATION -Symmetry information: -Monoclinic crystal system. -Space group number : 14 -Hall symbol : -P 2ybc -Hermann-Mauguin symbol : P21/c - -Lattice parameters: - a b c - 10.2957000 13.3866000 13.9411000 - alpha beta gamma - 90.0000000 91.0610000 90.0000000 -Representative sites : -Atom x y z -Cu 0.5000000 0.0000000 0.0000000 -N 0.6445500 0.0653000 0.0695700 -N 0.7817000 0.0881500 -0.0658100 -N 0.8468300 0.1403800 0.0826800 -H 0.8309000 0.1461000 0.1428000 -O 0.5883200 0.0152900 -0.1174100 -C 0.7519400 0.0963900 0.0281600 -C 0.7021000 0.0492600 -0.1289100 -C 0.7512600 0.0443500 -0.2292300 -C 0.6758300 0.0001100 -0.3006600 -H 0.5956000 -0.0273000 -0.2860000 -C 0.7197000 -0.0033600 -0.3940800 -H 0.6686000 -0.0328000 -0.4420000 -C 0.8385000 0.0365300 -0.4161200 -H 0.8675000 0.0341000 -0.4789000 -C 0.9144000 0.0799200 -0.3456900 -H 0.9950000 0.1064000 -0.3607000 -C 0.8711100 0.0843800 -0.2520900 -H 0.9225000 0.1142000 -0.2046000 -C 0.6383100 0.0830900 0.1716200 -C 0.6813700 0.0081700 0.2344400 -C 0.6791000 0.0282000 0.3326400 -H 0.7075000 -0.0203000 0.3760000 -C 0.6357000 0.1182000 0.3661200 -H 0.6352000 0.1303000 0.4318000 -C 0.5927000 0.1906400 0.3033200 -H 0.5631000 0.2513000 0.3271000 -C 0.5928900 0.1745600 0.2041500 -C 0.5510000 0.2539000 0.1356000 -H 0.6261000 0.2844000 0.1082000 -H 0.5019000 0.3036000 0.1689000 -H 0.4980000 0.2250000 0.0855000 -C 0.7300000 -0.0897700 0.1982900 -H 0.6611000 -0.1237000 0.1643000 -H 0.7591000 -0.1300000 0.2515000 -H 0.8009000 -0.0785000 0.1559000 -C 0.9683800 0.1779300 0.0533400 -C 0.9819400 0.2357100 -0.0279500 -H 0.9106000 0.2492000 -0.0678000 -C 1.1031000 0.2732700 -0.0492800 -H 1.1135000 0.3110000 -0.1046000 -C 1.2080000 0.2555200 0.0100000 -H 1.2890000 0.2814000 -0.0050000 -C 1.1939000 0.1996800 0.0914000 -H 1.2650000 0.1880000 0.1320000 -C 1.0734300 0.1606000 0.1130800 -H 1.0637000 0.1225000 0.1683000 -N 0.3554500 -0.0653000 -0.0695700 -N 0.2183000 -0.0881500 0.0658100 -N 0.1531700 -0.1403800 -0.0826800 -H 0.1691000 -0.1461000 -0.1428000 -O 0.4116800 -0.0152900 0.1174100 -C 0.2480600 -0.0963900 -0.0281600 -C 0.2979000 -0.0492600 0.1289100 -C 0.2487400 -0.0443500 0.2292300 -C 0.3241700 -0.0001100 0.3006600 -H 0.4044000 0.0273000 0.2860000 -C 0.2803000 0.0033600 0.3940800 -H 0.3314000 0.0328000 0.4420000 -C 0.1615000 -0.0365300 0.4161200 -H 0.1325000 -0.0341000 0.4789000 -C 0.0856000 -0.0799200 0.3456900 -H 0.0050000 -0.1064000 0.3607000 -C 0.1288900 -0.0843800 0.2520900 -H 0.0775000 -0.1142000 0.2046000 -C 0.3616900 -0.0830900 -0.1716200 -C 0.3186300 -0.0081700 -0.2344400 -C 0.3209000 -0.0282000 -0.3326400 -H 0.2925000 0.0203000 -0.3760000 -C 0.3643000 -0.1182000 -0.3661200 -H 0.3648000 -0.1303000 -0.4318000 -C 0.4073000 -0.1906400 -0.3033200 -H 0.4369000 -0.2513000 -0.3271000 -C 0.4071100 -0.1745600 -0.2041500 -C 0.4490000 -0.2539000 -0.1356000 -H 0.3739000 -0.2844000 -0.1082000 -H 0.4981000 -0.3036000 -0.1689000 -H 0.5020000 -0.2250000 -0.0855000 -C 0.2700000 0.0897700 -0.1982900 -H 0.3389000 0.1237000 -0.1643000 -H 0.2409000 0.1300000 -0.2515000 -H 0.1991000 0.0785000 -0.1559000 -C 0.0316200 -0.1779300 -0.0533400 -C 0.0180600 -0.2357100 0.0279500 -H 0.0894000 -0.2492000 0.0678000 -C -0.1031000 -0.2732700 0.0492800 -H -0.1135000 -0.3110000 0.1046000 -C -0.2080000 -0.2555200 -0.0100000 -H -0.2890000 -0.2814000 0.0050000 -C -0.1939000 -0.1996800 -0.0914000 -H -0.2650000 -0.1880000 -0.1320000 -C -0.0734300 -0.1606000 -0.1130800 -H -0.0637000 -0.1225000 -0.1683000 - - OUTPUT CELL INFORMATION -Symmetry information: -Monoclinic crystal system. -Space group number : 14 -Hall symbol : -P 2ybc -Hermann-Mauguin symbol : P21/c - -Bravais lattice vectors : - 10.2957000 0.0000000 0.0000000 - 0.0000000 13.3866000 0.0000000 - -0.2581457 0.0000000 13.9387098 -All sites, (cartesian coordinates): -Atom x y z -Cu 5.1478500 0.0000000 0.0000000 -Cu 5.0187771 6.6933000 6.9693549 -N 6.6181342 0.8741450 0.9697160 -N 3.4194200 12.5124550 12.9689937 -N 3.5484929 7.5674450 5.9996388 -N 6.4890614 5.8191550 7.9390709 -N 7.8069915 1.1800288 13.0214033 -N 2.2305627 12.2065712 0.9173065 -N 2.1014899 7.8733288 7.8866614 -N 7.9360644 5.5132712 6.0520484 -N 8.6973641 1.8792109 1.1524525 -N 1.3401901 11.5073891 12.7862572 -N 1.4692630 8.5725109 5.8169024 -N 8.5682913 4.8140891 8.1218074 -H 8.5178339 1.9557823 1.9904478 -H 1.5197203 11.4308177 11.9482620 -H 1.6487932 8.6490823 4.9789071 -H 8.3887610 4.7375177 8.9598026 -O 5.8293294 0.2046811 12.3021659 -O 4.2082249 13.1819189 1.6365439 -O 4.0791520 6.8979811 8.6058988 -O 5.9584022 6.4886189 5.3328110 -C 7.7344793 1.2903344 0.3925141 -C 2.3030750 12.0962656 13.5461957 -C 2.4321479 7.9836344 6.5768408 -C 7.6054064 5.4029656 7.3618690 -C 7.0037428 0.6594239 12.1418707 -C 3.0338115 12.7271761 1.7968391 -C 2.9047386 7.3527239 8.7661940 -C 7.1328157 6.0338761 5.1725158 -C 7.5357766 0.5936957 10.7435393 -C 2.5017777 12.7929043 3.1951704 -C 2.3727048 7.2869957 10.1645253 -C 7.6648495 6.0996043 3.7741844 -C 6.7776113 0.0014725 9.7478973 -C 3.2599430 -0.0014725 4.1908125 -C 3.1308701 6.6947725 11.1601674 -C 6.9066842 6.6918275 2.7785424 -H 5.9478029 13.0211458 9.9522388 -H 4.0897514 0.3654542 3.9864710 -H 3.9606785 6.3278458 10.9558259 -H 6.0768757 7.0587542 2.9828839 -C 7.2533996 13.3416210 8.4457430 -C 2.7841546 0.0449790 5.4929667 -C 2.6550818 6.6483210 12.4623216 -C 7.3824725 6.7382790 1.4763881 -H 6.7396597 12.9475195 7.7778001 -H 3.2978946 0.4390805 6.1609097 -H 3.1688217 6.2542195 13.1302646 -H 6.8687326 7.1323805 0.8084452 -C 8.4822183 0.4890125 8.1385339 -C 1.5553359 12.8975875 5.8001759 -C 1.4262631 7.1823125 12.7695308 -C 8.6112912 6.2042875 1.1691790 -H 8.7970000 0.4564831 7.2634617 -H 1.2405543 12.9301169 6.6752481 -H 1.1114814 7.1497831 13.6446030 -H 8.9260729 6.2368169 0.2941068 -C 9.2454807 1.0698571 9.1202372 -C 0.7920735 12.3167429 4.8184726 -C 0.6630006 7.7631571 11.7878275 -C 9.3745536 5.6234429 2.1508823 -H 10.0791889 1.4243342 8.9110172 -H -0.0416347 11.9622658 5.0276926 -H -0.1707075 8.1176342 11.9970475 -H 10.2082618 5.2689658 1.9416623 -C 8.7756174 1.1295613 10.4249004 -C 1.2619368 12.2570387 3.5138093 -C 1.1328639 7.8228613 10.4831642 -C 8.9046903 5.5637387 3.4555455 -H 9.2924541 1.5287497 11.0868497 -H 0.7451001 11.8578503 2.8518600 -H 0.6160273 8.2220497 9.8212149 -H 9.4215270 5.1645503 4.1174949 -C 6.5275453 1.1122926 2.3921614 -C 3.5100090 12.2743074 11.5465484 -C 3.6390818 7.8055926 4.5771935 -C 6.3984724 5.5810074 9.3615163 -C 6.9546614 0.1093685 3.2677911 -C 3.0828928 13.2772315 10.6709186 -C 3.2119657 6.8026685 3.7015638 -C 6.8255885 6.5839315 10.2371460 -C 6.9059403 0.3775021 4.6365724 -C 3.1316140 13.0090979 9.3021374 -C 3.2606869 7.0708021 2.3327825 -C 6.7768674 6.3157979 11.6059273 -H 7.1871449 13.1148520 5.2409549 -H 2.8504093 0.2717480 8.6977549 -H 2.9794822 6.4215520 1.7284000 -H 7.0580721 6.9650480 12.2103098 -C 6.4504642 1.5822961 5.1032404 -C 3.5870901 11.8043039 8.8354693 -C 3.7161630 8.2755961 1.8661145 -C 6.3213913 5.1110039 12.0725953 -H 6.4283613 1.7442740 6.0187349 -H 3.6091929 11.6423260 7.9199749 -H 3.7382658 8.4375740 0.9506200 -H 6.2992884 4.9490260 12.9880898 -C 6.0239606 2.5520214 4.2278894 -C 4.0135936 10.8345786 9.7108203 -C 4.1426665 9.2453214 2.7414654 -C 5.8948877 4.1412786 11.1972443 -H 5.7130692 3.3640526 4.5593520 -H 4.3244851 10.0225474 9.3793578 -H 4.4535579 10.0573526 2.4100029 -H 5.5839963 3.3292474 11.5287068 -C 6.0515171 2.3367649 2.8455876 -C 3.9860371 11.0498351 11.0931222 -C 4.1151100 9.0300649 4.1237673 -C 5.9224442 4.3565351 9.8149425 -C 5.6379261 3.3988577 1.8900890 -C 4.3996281 9.9877423 12.0486207 -C 4.5287010 10.0921577 5.0792658 -C 5.5088533 3.2944423 8.8594439 -H 6.4182064 3.8071490 1.5081684 -H 3.6193479 9.5794510 12.4305414 -H 3.7484207 10.5004490 5.4611865 -H 6.2891335 2.8861510 8.4775233 -H 5.1238110 4.0641718 2.3542481 -H 4.9137432 9.3224282 11.5844617 -H 5.0428161 10.7574718 4.6151068 -H 4.9947381 2.6291282 9.3236030 -H 5.1051871 3.0119850 1.1917597 -H 4.9323671 10.3746150 12.7469501 -H 5.0614400 9.7052850 5.7775952 -H 4.9761143 3.6813150 8.1611146 -C 7.4646733 12.1848849 2.7639068 -C 2.5728810 1.2017151 11.1748030 -C 2.7019538 5.4915849 4.2054481 -C 7.3356004 7.8950151 9.7332616 -H 6.7640739 11.7306776 2.2901300 -H 3.2734803 1.6559224 11.6485798 -H 3.4025532 5.0373776 4.6792249 -H 6.6350011 8.3492224 9.2594849 -H 7.7505422 11.6463420 3.5055855 -H 2.2870120 1.7402580 10.4331243 -H 2.4160849 4.9530420 3.4637694 -H 7.6214693 8.4335580 10.4749404 -H 8.2055812 12.3357519 2.1730449 -H 1.8319730 1.0508481 11.7656649 -H 1.9610459 5.6424519 4.7963100 -H 8.0765083 7.7441481 9.1423997 -C 9.9563805 2.3818777 0.7434908 -C 0.0811738 11.0047223 13.1952190 -C 0.2102467 9.0751777 6.2258641 -C 9.8273076 4.3114223 7.7128457 -C 9.8588291 3.1553555 13.5491228 -C 0.1787252 10.2312445 0.3895869 -C 0.0496523 9.8486555 7.3589418 -C 9.9879020 3.5379445 6.5797679 -H 9.1346210 3.3359407 12.9936652 -H 0.9029333 10.0506593 0.9450445 -H 0.7738604 10.0292407 7.9143994 -H 9.2636938 3.3573593 6.0243104 -C 0.8160623 3.6581562 13.2518102 -C 9.2214919 9.7284438 0.6868996 -C 9.0924190 10.3514562 7.6562545 -C 0.9451352 3.0351438 6.2824553 -H 0.9374182 4.1632326 12.4807207 -H 9.1001360 9.2233674 1.4579890 -H 8.9710631 10.8565326 8.4273439 -H 1.0664911 2.5300674 5.5113658 -C 2.1389241 3.4205440 0.1393871 -C 7.8986301 9.9660560 13.7993227 -C 8.0277030 10.1138440 6.8299678 -C 2.0098513 3.2727560 7.1087420 -H 2.7186023 3.7669892 13.8690162 -H 7.3189520 9.6196108 0.0696935 -H 7.1898791 10.4602892 7.0390484 -H 2.8476752 2.9263108 6.8996613 -C 1.9727417 2.6730363 1.2739981 -C 8.0648125 10.7135637 12.6647117 -C 8.1938854 9.3663363 5.6953568 -C 1.8436688 4.0202637 8.2433530 -H 2.6942853 2.5166808 1.8399097 -H 7.3432690 10.8699192 12.0988001 -H 7.4723419 9.2099808 5.1294452 -H 2.5652124 4.1766192 8.8092646 -C 0.7268221 2.1498880 1.5761893 -C 9.3107321 11.2367120 12.3625205 -C 9.4398050 8.8431880 5.3931656 -C 0.5977493 4.5434120 8.5455442 -H 0.6123902 1.6398585 2.3458849 -H 9.4251641 11.7467415 11.5928249 -H 9.5542370 8.3331585 4.6234700 -H 0.4833173 5.0534415 9.3152397 - -Unit cell volume : 1921.0945561 A^3 -Unit cell density : 0.7790865 u/A^3 = 8.7303426 g/cm^3 diff --git a/cell2mol/test/infodata/YOXKUS.info b/cell2mol/test/infodata/YOXKUS.info deleted file mode 100644 index 8177e3833..000000000 --- a/cell2mol/test/infodata/YOXKUS.info +++ /dev/null @@ -1,303 +0,0 @@ -['Re', 'I', 'I', 'P', 'C', 'C', 'C', 'C', 'C', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'O'] -CIF2CELL 1.2.10 -2021-11-25 13:13 -Output for ( -cis-(\h^5^-Tetramethylcyclopentadienylmethylene(diphenyl)phosphine)-carbonyl-d -iiodo-rhenium(iii)) -CIF file exported from Chemical Abstracts. -Database reference code: None. - - BIBLIOGRAPHIC INFORMATION -F.Godoy et al., Dalton Trans. , 3044- (2009) - - INPUT CELL INFORMATION -Symmetry information: -Monoclinic crystal system. -Space group number : 14 -Hall symbol : -P 2yn -Hermann-Mauguin symbol : P21/n - -Lattice parameters: - a b c - 15.1360000 8.7980000 17.9659000 - alpha beta gamma - 90.0000000 103.4640000 90.0000000 -Representative sites : -Atom x y z -Re -0.0065300 0.9459600 0.7656100 -I 0.0963800 1.2108200 0.7971200 -I -0.1481600 1.1556500 0.7326400 -P 0.1223600 0.8253000 0.8520900 -C 0.0612000 0.7562000 0.7151000 -C -0.0302000 0.7141000 0.7097000 -C -0.0826000 0.8228000 0.6602000 -C -0.0248000 0.9287000 0.6341000 -C 0.0654000 0.8889000 0.6675000 -C -0.0634000 0.5731000 0.7409000 -H -0.0787000 0.4983000 0.7010000 -H -0.1161000 0.5965000 0.7597000 -H -0.0165000 0.5339000 0.7819000 -C -0.1840000 0.8070000 0.6288000 -H -0.1953000 0.7374000 0.5865000 -H -0.2094000 0.9044000 0.6119000 -H -0.2114000 0.7691000 0.6682000 -C -0.0558000 1.0502000 0.5764000 -H -0.0743000 1.0056000 0.5264000 -H -0.0070000 1.1203000 0.5773000 -H -0.1062000 1.1033000 0.5883000 -C 0.1522000 0.9567000 0.6525000 -H 0.1690000 0.9024000 0.6116000 -H 0.2001000 0.9488000 0.6980000 -H 0.1422000 1.0618000 0.6386000 -C 0.1421000 0.6999000 0.7762000 -H 0.1997000 0.7195000 0.7631000 -H 0.1372000 0.5932000 0.7882000 -C 0.2294000 0.9229000 0.8941000 -C 0.3037000 0.9124000 0.8673000 -H 0.3022000 0.8534000 0.8241000 -C 0.3835000 0.9865000 0.9017000 -H 0.4352000 0.9764000 0.8825000 -C 0.3846000 1.0753000 0.9648000 -H 0.4369000 1.1293000 0.9873000 -C 0.3107000 1.0851000 0.9945000 -H 0.3131000 1.1410000 1.0389000 -C 0.2309000 1.0115000 0.9586000 -H 0.1789000 1.0214000 0.9775000 -C 0.1077000 0.7064000 0.9306000 -C 0.1416000 0.5620000 0.9405000 -H 0.1672000 0.5197000 0.9030000 -C 0.1390000 0.4779000 1.0037000 -H 0.1616000 0.3791000 1.0089000 -C 0.1024000 0.5419000 1.0597000 -H 0.0993000 0.4850000 1.1026000 -C 0.0704000 0.6880000 1.0530000 -H 0.0478000 0.7308000 1.0921000 -C 0.0718000 0.7721000 0.9881000 -H 0.0491000 0.8708000 0.9828000 -C -0.0730000 0.8988000 0.8379000 -O -0.1186000 0.8657000 0.8731000 - - OUTPUT CELL INFORMATION -Symmetry information: -Monoclinic crystal system. -Space group number : 14 -Hall symbol : -P 2yn -Hermann-Mauguin symbol : P21/n - -Bravais lattice vectors : - 15.1360000 0.0000000 0.0000000 - 0.0000000 8.7980000 0.0000000 - -4.1830788 0.0000000 17.4721325 -All sites, (cartesian coordinates): -Atom x y z -Re 11.8345549 8.3225561 13.3768394 -Re 6.3580944 4.8744439 4.6407731 -Re 4.5948268 3.9235561 12.8313594 -Re -0.8816338 0.4754439 4.0952931 -I -1.8756081 1.8547944 13.9273863 -I 7.7839313 2.5442056 5.1913200 -I 3.1689899 6.2537944 12.2808125 -I 12.8285293 6.9432056 3.5447462 -I 9.8287594 1.3694087 12.8007832 -I 4.3522988 3.0295913 4.0647169 -I 6.6006224 5.7684087 13.4074156 -I 1.1241618 7.4285913 4.6713493 -P -1.7123187 7.2609894 14.8878294 -P 7.9472207 5.9360106 6.1517631 -P 3.0057004 2.8619894 11.3203694 -P 12.6652399 1.5370106 2.5843031 -C -2.0649965 6.6530476 12.4943220 -C 7.5945429 6.5439524 3.7582557 -C 3.3583782 2.2540476 13.7138768 -C 13.0179176 2.1449524 4.9778106 -C 11.7101618 6.2826518 12.3999724 -C 6.2337012 6.9143482 3.6639062 -C 4.7192200 1.8836518 13.8082263 -C -0.7572406 2.5153482 5.0721601 -C 11.1240978 7.2389944 11.5351019 -C 5.6476372 5.9580056 2.7990356 -C 5.3052840 2.8399944 14.6730969 -C -0.1711766 1.5590056 5.9370306 -C 12.1081369 8.1707026 11.0790792 -C 6.6316763 5.0262974 2.3430130 -C 4.3207203 3.7717026 15.1313106 -C -1.1552157 0.6272974 6.3930533 -C -1.8023107 7.8205422 11.6626484 -C 7.8572287 5.3764578 2.9265822 -C 3.0956925 3.4215422 14.5455503 -C 12.7552319 0.9774578 5.8094841 -C 11.0771345 5.0421338 12.9451030 -C 5.6006739 8.1548662 4.2090367 -C 5.3522473 0.6431338 13.2630958 -C -0.1242133 3.7558662 4.5270295 -H 11.0124585 4.3840434 12.2479649 -H 5.5359980 0.0149566 3.5118986 -H 5.4169232 8.7830434 13.9602339 -H -0.0595374 4.4139566 5.2241676 -H 10.2008254 5.2480070 13.2735791 -H 4.7243648 7.9489930 4.5375128 -H 6.2285563 0.8490070 12.9346197 -H 0.7520958 3.5499930 4.1985534 -H 11.6155067 4.6972522 13.6614604 -H 6.1390461 8.4997478 4.9253942 -H 4.8138751 0.2982522 12.5467384 -H -0.6625855 4.1007478 3.8106721 -C 9.7206560 7.0999860 10.9864769 -C 4.2441954 6.0970140 2.2504107 -C 6.7087257 2.7009860 15.2217218 -C 1.2322651 1.6980140 6.4856556 -H 9.7265635 6.4876452 10.2474057 -H 4.2501029 6.7093548 1.5113395 -H 6.7028183 2.0886452 15.9607930 -H 1.2263577 2.3103548 7.2247268 -H 9.4068957 7.9569112 10.6911979 -H 3.9304351 5.2400888 1.9551316 -H 7.0224861 3.5579112 15.5170009 -H 1.5460255 0.8410888 6.7809346 -H 9.1411163 6.7665418 11.6748789 -H 3.6646557 6.4304582 2.9388127 -H 7.2882654 2.3675418 14.5333198 -H 1.8118048 2.0314582 5.7972536 -C 11.8802846 0.4416596 10.0709372 -C 6.4038240 3.9573404 1.3348709 -C 4.5490972 4.8406596 16.1372616 -C -0.9273634 8.3563404 7.4011953 -H 11.8094225 0.0492688 9.1973306 -H 6.3329619 4.3497312 0.4612643 -H 4.6199593 4.4482688 17.0108682 -H -0.8565013 8.7487312 8.2748020 -H 12.6151566 1.0583994 10.0866621 -H 7.1386960 3.3406006 1.3505958 -H 3.8142252 5.4573994 16.1215367 -H -1.6622354 7.7396006 7.3854704 -H 11.0676515 0.9088334 10.2788556 -H 5.5911909 3.4901666 1.5427893 -H 5.3617302 5.3078334 15.9293432 -H -0.1147304 7.8891666 7.1932770 -C -0.4257597 8.4170466 11.4005665 -C 9.2337797 4.7799534 2.6645002 -C 1.7191415 4.0180466 14.8076323 -C 11.3786809 0.3809534 6.0715660 -H -0.0003870 7.9393152 10.6859562 -H 9.6591524 5.2576848 1.9498900 -H 1.2937688 3.5403152 15.5222425 -H 10.9533082 0.8586848 6.7861763 -H 0.1089246 8.3475424 12.1955485 -H 9.7684640 4.8494576 3.4594822 -H 1.1844572 3.9485424 14.0126503 -H 10.8439966 0.4504576 5.2765840 -H -0.5189749 0.5437164 11.1577038 -H 9.1405645 3.8552836 2.4216376 -H 1.8123567 4.9427164 15.0504949 -H 11.4718961 8.2542836 6.3144287 -C -1.0960802 6.1577202 13.5618693 -C 8.5634592 7.0392798 4.8258030 -C 2.3894619 1.7587202 12.6463295 -C 12.0490014 2.6402798 3.9102633 -H -0.1694483 6.3301610 13.3329843 -H 9.4900912 6.8668390 4.5969181 -H 1.4628300 1.9311610 12.8752144 -H 11.1223694 2.4678390 4.1391482 -H -1.2204435 5.2189736 13.7715348 -H 8.4390959 7.9780264 5.0354686 -H 2.5138253 0.8199736 12.4366639 -H 12.1733647 3.5790264 3.7005977 -C -0.2678924 8.1196742 15.6218337 -C 9.3916470 5.0773258 6.8857674 -C 1.5612741 3.7206742 10.5863651 -C 11.2208136 0.6783258 1.8502988 -C 0.9688189 8.0272952 15.1535805 -C 10.6283583 5.1697048 6.4175143 -C 0.3245628 3.6282952 11.0546182 -C 9.9841022 0.7707048 2.3185520 -H 1.1268239 7.5082132 14.3987844 -H 10.7863634 5.6887868 5.6627181 -H 0.1665578 3.1092132 11.8094144 -H 9.8260972 1.2897868 3.0733481 -C 2.0327738 8.6792270 15.7546219 -C 11.6923132 4.5177730 7.0185556 -C -0.7393921 4.2802270 10.4535769 -C 8.9201474 0.1187730 1.7175106 -H 2.8956201 8.5903672 15.4191569 -H 12.5551595 4.6066328 6.6830907 -H -1.6022384 4.1913672 10.7890418 -H 8.0573010 0.2076328 2.0529756 -C 1.7854712 0.6624894 16.8571134 -C 11.4450106 3.7365106 8.1210472 -C -0.4920894 5.0614894 9.3510853 -C 9.1674500 8.1355106 0.6150191 -H 2.4829647 1.1375814 17.2502364 -H 12.1425041 3.2614186 8.5141702 -H -1.1895829 5.5365814 8.9579623 -H 8.4699565 7.6604186 0.2218961 -C 0.5426833 0.7487098 17.3760358 -C 10.2022227 3.6502902 8.6399695 -C 0.7506985 5.1477098 8.8321630 -C 10.4102379 8.0492902 0.0960967 -H 4.5763598 1.2405180 0.6796660 -H 10.0528204 3.1584820 9.4157322 -H 0.9001008 5.6395180 8.0564003 -H 6.3765613 7.5574820 16.7924666 -C -0.5149970 0.1011770 16.7487862 -C 9.1445425 4.2978230 8.0127200 -C 1.8083787 4.5001770 9.4594125 -C 11.4679181 8.6968230 0.7233463 -H -1.3811292 0.1882772 17.0790095 -H 8.2784103 4.2107228 8.3429433 -H 2.6745109 4.5872772 9.1291892 -H 12.3340503 8.6097228 0.3931230 -C -2.2626260 6.2149072 16.2595665 -C 7.3969135 6.9820928 7.5235003 -C 3.5560077 1.8159072 9.9486322 -C 13.2155471 2.5830928 1.2125660 -C -1.7909280 4.9444760 16.4325406 -C 7.8686114 8.2525240 7.6964744 -C 3.0843098 0.5454760 9.7756581 -C 12.7438492 3.8535240 1.0395919 -H -1.2465810 4.5723206 15.7773357 -H 8.4129584 8.6246794 7.0412694 -H 2.5399627 0.1733206 10.4308631 -H 12.1995022 4.2256794 1.6947969 -C 2.0884266 4.2045642 0.0646469 -C 7.5648872 0.1944358 8.8007131 -C 3.3880340 8.6035642 8.6714194 -C 8.8644946 4.5934358 17.4074856 -H 2.4087482 3.3353218 0.1555020 -H 7.8852088 1.0636782 8.8915682 -H 3.0677124 7.7343218 8.5805643 -H 8.5441730 5.4626782 17.3166305 -C 1.3001966 4.7676362 1.0430863 -C 6.7766572 8.4293638 9.7791526 -C 4.1762640 0.3686362 7.6929799 -C 9.6527246 4.0303638 16.4290462 -H 1.0738209 4.2670300 1.7926408 -H 6.5502815 0.1319700 10.5287070 -H 4.4026397 8.6660300 6.9434255 -H 9.8791003 4.5309700 15.6794917 -C 0.8438712 6.0530240 0.9260230 -C 6.3203318 7.1439760 9.6620893 -C 4.6325894 1.6540240 7.8100432 -C 10.1090500 2.7449760 16.5461095 -H 0.3382392 6.4295784 1.6091834 -H 5.8146998 6.7674216 10.3452497 -H 5.1382213 2.0305784 7.1268828 -H 10.6146819 2.3684216 15.8629491 -C -3.0465354 6.7929358 17.2642141 -C 6.6130040 6.4040642 8.5281479 -C 4.3399171 2.3939358 8.9439846 -C 13.9994566 2.0050642 0.2079184 -H -3.3679523 7.6612984 17.1716118 -H 6.2915871 5.5357016 8.4355456 -H 4.6613340 3.2622984 9.0365869 -H 14.3208734 1.1367016 0.3005207 -C 10.5260703 7.9076424 14.6398998 -C 5.0496097 5.2893576 5.9038336 -C 5.9033115 3.5086424 11.5682989 -C 0.4268509 0.8903576 2.8322327 -O 9.6886243 7.6164286 15.2549189 -O 4.2121637 5.5805714 6.5188526 -O 6.7407575 3.2174286 10.9532799 -O 1.2642969 1.1815714 2.2172136 - -Unit cell volume : 2326.7032228 A^3 -Unit cell density : 1.3536936 u/A^3 = 15.1693156 g/cm^3 diff --git a/cell2mol/test/new_cell_reconstruction.py b/cell2mol/test/new_cell_reconstruction.py deleted file mode 100644 index 8cb4748b7..000000000 --- a/cell2mol/test/new_cell_reconstruction.py +++ /dev/null @@ -1,382 +0,0 @@ -import ase -import numpy as np -import itertools -import ase -from ase import Atoms -from cell2mol.classes import molecule -from cell2mol.cell_reconstruction import tmatgenerator -from cell2mol.other import additem, absolute_value, get_dist, extract_from_list -from cell2mol.connectivity import split_species, count_species -from cell2mol.cell_operations import translate - -###################################################### -def apply_symmetry_operations_reference (reference, cell_vector, sym_ops, normalize=True): - - # reference : ase atoms object - - new_structures = [] - ref_labels = reference.get_chemical_symbols() - fractional_coords = reference.get_scaled_positions() - - for rot, trans in zip(sym_ops[0], sym_ops[1]): - transformed_positions = np.dot(fractional_coords, rot.T) - transformed_positions += np.array(trans) - if normalize: - transformed_positions = np.remainder(transformed_positions, 1) - new = Atoms(symbols=ref_labels, scaled_positions=transformed_positions, cell=cell_vector) - new_structures.append(new) - - return new_structures - -###################################################### -def find_row_indices(source, target): - - # List to store the indices of found rows - found_indices = [] - found_rows = [] - remaining_indices = [] - remaining_rows = [] - - # Iterate over each row in the source array with enumeration to track the index - for index, row in enumerate(source): - # Check if any row in the target array matches the current row - if any(np.allclose(row, target_row) for target_row in target): - found_indices.append(index) - found_rows.append(row) - else : - remaining_indices.append(index) - remaining_rows.append(row) - return found_indices, found_rows - -###################################################### -def find_row_index_from_matrix (matrix, query_row): - - # Convert the inputs to NumPy arrays if they aren't already - matrix = np.array(matrix) - query_row = np.array(query_row) - - # Check each row for equality with the query_row - for index, row in enumerate(matrix): - if np.allclose(row, query_row): - return index - return -1 - -###################################################### -def get_fragments (newcell, updated, indices_in_ref, cov_factor: float=1.3, metal_factor: float=1.0, debug: int=0): - - updated_labels = extract_from_list(updated, newcell.labels, dimension=1) - updated_coord = extract_from_list(updated, newcell.coord, dimension=1) - updated_fracs = extract_from_list(updated, newcell.frac_coord, dimension=1) - - blocklist = split_species(updated_labels, updated_coord, debug=debug) - - fragments = [] - list_ref_indices = [] - - for b in blocklist: - if debug > 0: print(f"CELL.MOLECLIST: doing block={b}") - mol_labels = extract_from_list(b, updated_labels, dimension=1) - mol_coord = extract_from_list(b, updated_coord, dimension=1) - mol_frac_coord = extract_from_list(b, updated_fracs, dimension=1) - - cell_indices = extract_from_list(b, updated, dimension=1) - ref_indices = extract_from_list(b, indices_in_ref, dimension=1) - - # Creates Molecule Object - newmolec = molecule(mol_labels, mol_coord, mol_frac_coord) - - # For debugging - newmolec.origin = "cell.get_fragments" - - # Adds cell as parent of the molecule, with indices - newmolec.add_parent(newcell, indices=cell_indices) - newmolec.set_fractional_coord(mol_frac_coord) - newmolec.set_adjacency_parameters(cov_factor=cov_factor, metal_factor=metal_factor) - newmolec.set_atoms(create_adjacencies=True, debug=debug) - newmolec.ref_indices = ref_indices - fragments.append(newmolec) - - return fragments - -###################################################### -def classify_fragments (fragments, newcell, debug: int=0): - - molecules = [] - remaining_fragments = [] - - for frag in fragments: - found = False - for idx, ref in enumerate(newcell.refmoleclist): - if (ref.natoms == frag.natoms) & (ref.formula == frag.formula): - if (sorted(ref.get_parent_indices("reference")) == sorted(frag.ref_indices)): - if debug >=1 : - print(frag.formula, frag.ref_indices, frag.frac_coord, \ - f"equivalent to Ref {idx} {ref.formula}") - frag.subtype = "molecule" - frag.origin = "cell.classify_fragments" - molecules.append(frag) - found = True - - if found == False: - frag.subtype = "fragment" - frag.origin = "cell.classify_fragments" - remaining_fragments.append(frag) - - rem_size = np.array([rem.natoms for rem in remaining_fragments]) - order = np.argsort(rem_size) - descending_order = order[::-1] - remaining_fragments = [remaining_fragments[i] for i in descending_order] - for rem in remaining_fragments: - rem.get_centroid() - - if debug >=1 : - print("Remaining_fragments:", [rem.formula for rem in remaining_fragments]) - print("Remaining_fragments:", [rem.natoms for rem in remaining_fragments]) - print("Remaining_fragments:", [get_dist(rem.frac_centroid, [0.5, 0.5, 0.5]) for rem in remaining_fragments]) - - return molecules, remaining_fragments - -###################################################### -def grouping_smaller_lists_for_target_sets(target_sets, smaller_lists, debug: int=0): - - # target_sets : Define the larger target lists as sets for fast lookup - # List of smaller lists to be grouped - - # Group smaller lists into their respective larger list - grouped_lists = [[] for _ in range(len(target_sets))] - grouped_lists_idx = [[] for _ in range(len(target_sets))] - target_idx_lists = [[] for _ in range(len(target_sets))] - for j, small_list in enumerate(smaller_lists): - small_set = set(small_list) - for i, target_set in enumerate(target_sets): - if small_set.issubset(target_set): - if debug >=1 : print(f"grouped_lists {i} add {small_set}") - grouped_lists[i].extend(small_list) - grouped_lists_idx[i].append(j) - target_idx_lists[i].append(i) - - if set(grouped_lists[i]) == target_set: - if debug >=1 :print(f"grouped_lists {i} is same with {target_set} {grouped_lists_idx[i]}") - else : - if debug >=1 :print(f"continue for {i} {grouped_lists_idx[i]}") - break - - if debug >=1 : - # Print the grouped lists - for i, group in enumerate(grouped_lists): - print(f"Group {i}: {group}") - - return grouped_lists, grouped_lists_idx, target_idx_lists - -###################################################### -def grouping_remaining_fragments(remaining_fragments, not_found_list, newcell, debug: int=0): - - smaller_lists = [rem_frag.ref_indices for rem_frag in remaining_fragments] - smaller_lists.sort(key=len, reverse=True) - - target_sets = [] - for j in not_found_list: - try: - ref_indices = newcell.refmoleclist[j].get_parent_indices("reference") - target_sets.append(set(ref_indices)) - except AttributeError as e: - print(f"Error accessing or calling get_parent_indices on refmoleclist {j}: {e}") - except Exception as e: - print(f"An unexpected error occurred with element {j}: {e}") - - if debug >= 1: - print(f"{target_sets=}") - print(f"{smaller_lists=}") - - grouped_rem_frags, indices_of_rem_frags, target_idx_lists = grouping_smaller_lists_for_target_sets(target_sets, smaller_lists, debug=debug) - - not_found_refmoleclist_indices = [ list(set(sublist))[0] if sublist else None for sublist in target_idx_lists ] - - indices_of_target_ref = [] - for t in not_found_refmoleclist_indices: - indices_of_target_ref.append( newcell.refmoleclist[t].get_parent_indices("reference") ) - - return grouped_rem_frags, indices_of_rem_frags, indices_of_target_ref - -###################################################### -def merge_fragments (frags: list, cell_vector: list, cov_factor: float=1.3, metal_factor: float=1.0, debug: int=0): - - #finds biggest fragment and keeps it in the original cell - sizes = [] - for f in frags: - size = f.natoms - sizes.append(size) - keep_idx = np.argmax(sizes) - if keep_idx == 0: move_idx = 1 - elif keep_idx == 1: move_idx = 0 - keep_frag = frags[keep_idx] - move_frag = frags[move_idx] - if debug > 0: print("MERGE_FRAGMENTS: keep_idx", keep_idx) - if debug > 0: print("MERGE_FRAGMENTS: move_idx", move_idx) - - move_frag.get_centroid() - move_frag.tmatrix = tmatgenerator(move_frag.frac_centroid) - - if len(move_frag.tmatrix) == 0: return None - - for t in move_frag.tmatrix: - if debug > 0: print("MERGE_FRAGMENTS: translation", t) - ## Applies Translations and each time, it checks if a bigger molecule is formed - ## meaning that the translation was successful - reclabels = [] - reclabels.extend(keep_frag.labels) - reclabels.extend(move_frag.labels) - reccoord = [] - reccoord.extend(keep_frag.coord) - if t == (0, 0, 0): reccoord.extend(move_frag.coord) - else: reccoord.extend(translate(t, move_frag.coord, cell_vector)) - rec_ref_indices = [] - rec_ref_indices.extend(keep_frag.ref_indices) - rec_ref_indices.extend(move_frag.ref_indices) - - recfracs = [] - recfracs.extend(keep_frag.frac_coord) - recfracs.extend(move_frag.frac_coord) - - numspecs = count_species(reclabels, reccoord, cov_factor=cov_factor, debug=debug) - - if debug > 0: print("MERGE_FRAGMENTS: count_species found", numspecs) - if numspecs != 1: continue - blocklist = split_species(reclabels, reccoord, cov_factor=cov_factor, debug=debug) - if blocklist is None: continue - else: - if len(blocklist) != 1: continue - if len(blocklist) == 1: - newmolec = molecule(reclabels, reccoord, recfracs) - newmolec.origin = "cell.reconstruct" - newmolec.ref_indices = rec_ref_indices - newmolec.set_adjacency_parameters(cov_factor, metal_factor) - newmolec.set_adj_types() - newmolec.set_element_count() - newmolec.get_adjmatrix() - newmolec.get_centroid() - newmolec.get_metal_adjmatrix() - return newmolec - return None - -###################################################### -def fragments_reconstruct (subset_remaining_fragments, target_ref, cell_vector, debug: int=0): - - list_of_found_molecules = [] - final_remaining = subset_remaining_fragments.copy() - - count = 0 - while (len(final_remaining) > 0): - print("final_remaining", [k.formula for k in final_remaining], [k.subtype for k in final_remaining]) - - tobemerged = final_remaining[:2] - rest = final_remaining[2:] - - print("Fragments TO BE MERGED", [k.formula for k in tobemerged], [k.subtype for k in tobemerged]) - print("Rest fragments",[k.formula for k in rest],[k.subtype for k in rest]) - - found_molecule =[] - bigger_fragment = [] - not_merged = [] - newmolec = merge_fragments(tobemerged, cell_vector, debug=debug) - - if newmolec is None: - print("NOT MERGED", tobemerged[0].formula, tobemerged[1].formula) - not_merged.append(tobemerged[0]) - not_merged.append(tobemerged[1]) - - else : - print("MERGED", newmolec.formula) - small_set = set(newmolec.ref_indices) - print(f"{small_set=}") - if small_set.issubset(target_ref): - if sorted(small_set) == target_ref: - newmolec.subtype = "molecule" - found_molecule.append(newmolec) - else : - newmolec.subtype = "Rec. Fragment" - bigger_fragment.append(newmolec) - - print(f"{len(found_molecule)=}") - print(f"{len(bigger_fragment)=}") - print(f"{len(not_merged)=}") - - if len(not_merged) == 2: - final_remaining = [] - final_remaining.append(tobemerged[0]) - final_remaining.extend(rest) - final_remaining.append(tobemerged[1]) - - elif len(found_molecule) == 1 : - list_of_found_molecules.append(newmolec) - final_remaining = [] - final_remaining.extend(rest) - elif len(bigger_fragment) == 1 : - final_remaining = [] - final_remaining.append(newmolec) - final_remaining.extend(rest) - - count +=1 - - if len(final_remaining) == 0: - print(f"{count=}") - break - - return list_of_found_molecules, final_remaining - -###################################################### -def reconstuct (reference, newcell, cell_pos, cell_fracs, cell_vector, sym_ops, debug: int=0): - - new_structures = apply_symmetry_operations_reference(reference, cell_vector, sym_ops) - - all_found = [] - all_molecules = [] - reconstructed_molecules = [] - - for idx, new in enumerate(new_structures): - print(f"Applying symmetry operations to reference {idx}") - found_indices, found_rows = find_row_indices(cell_pos, new.positions) - print(len(found_indices), len(found_rows)) - - updated = [i for i in found_indices if i not in all_found] - - new_fracs = new.get_scaled_positions() - new_labels = new.get_chemical_symbols() - indices_in_ref = [ find_row_index_from_matrix(new_fracs, cell_fracs[u]) for u in updated ] - all_found.extend(updated) - - print(len(all_found)) - print(len(all_found) == len(cell_pos)) - - # #### make blocks and get fragments #### - fragments = get_fragments (newcell, updated, indices_in_ref, debug=0) - molecules, remaining_fragments = classify_fragments(fragments, newcell, debug=0) - all_molecules.extend(molecules) - - # Grouping remaining fragments for reconstruction - grouped_lists = [[] for _ in range(len(newcell.refmoleclist))] - - for i, ref in enumerate(newcell.refmoleclist): - target_set = set(ref.get_parent_indices("reference")) - for j, rem_frag in enumerate(remaining_fragments): - small_set = set(rem_frag.ref_indices) - if small_set.issubset(target_set): - if debug >=1 : print(f"{j} {rem_frag.formula} is a subset of target_set {i} {ref.formula}") - grouped_lists[i].append(rem_frag) - - for i, group in enumerate(grouped_lists): - if len(group) > 0: - print(f"target_ref: {newcell.refmoleclist[i].formula}") - print(f"Group {i}: {[rem.formula for rem in group]}") - - target_ref = newcell.refmoleclist[i].get_parent_indices("reference") - list_of_found_molecules, final_remaining = fragments_reconstruct(group, target_ref, cell_vector, debug=0) - print(f"{list_of_found_molecules=}") - reconstructed_molecules.extend(list_of_found_molecules) - - if len(all_found) == len(cell_pos): - print("Reconstructed successfully") - else: - print("Error in reconstruction!!") - - return all_molecules, reconstructed_molecules \ No newline at end of file diff --git a/cell2mol/test/new_charge_assignment.py b/cell2mol/test/new_charge_assignment.py deleted file mode 100644 index e80a2d806..000000000 --- a/cell2mol/test/new_charge_assignment.py +++ /dev/null @@ -1,87 +0,0 @@ -import numpy as np -from cell2mol.hungarian import reorder -import copy -from cell2mol.xyz2mol import xyz2mol -from cell2mol.connectivity import compare_species, compare_metals -from cell2mol.charge_assignment import check_rdkit_obj_connectivity, arrange_data_for_reorder -from cell2mol.hungarian import reorder -from rdkit import Chem - -###################################################### -def set_charge_state(unique_specie, target, debug: int=0): - - prot = unique_specie.charge_state.protonation - final_charge = unique_specie.totcharge - - # For "reference" cell - ref_data, target_data = arrange_data_for_reorder(unique_specie, target) - if debug >=2 : print(ref_data, target_data) - dummy1, dummy2, map12 = reorder(ref_data, target_data, unique_specie.coord, target.coord) - - if np.array_equal(map12, np.arange(len(target_data))): - if debug >=1 : print(f"({target.subtype}) {target.formula} {final_charge=} No need to reorder") - cs = get_charge(final_charge, prot) - target.set_charges(cs.corr_total_charge, cs.corr_atom_charges, cs.smiles, cs.rdkit_obj) - - else: - temp_prot = copy.deepcopy(prot) - reordered_prot = temp_prot.reorder(map12) - # print(f"{reordered_prot=}") - # print(f"{temp_prot=}") - # print(f"{prot=}") - # print(map12) - if debug >=1 : print(f"({target.subtype}) {target.formula} {final_charge=} Reordered {map12=}") - cs = get_charge(final_charge, reordered_prot) - target.set_charges(cs.corr_total_charge, cs.corr_atom_charges, cs.smiles, cs.rdkit_obj) - -###################################################### -def get_charge(charge: int, prot: object, allow: bool=True, debug: int=0): - ## Generates the connectivity of a molecule given a desired charge (charge). - # The molecule is described by a protonation states that has labels, and the atomic cartesian coordinates "coords" - # The adjacency matrix is also provided in the protonation state(adjmat) - #:return charge_state which is an object with the necessary information for other functions to handle the result - - natoms = prot.natoms - atnums = prot.atnums - - # prot.coords and prot.cov_factor will not be used - mols = xyz2mol(atnums, prot.coords, prot.adjmat, prot.cov_factor, charge=charge, allow_charged_fragments=allow) - print(f"GET_CHARGE.{len(mols)=} received from xyz2mol with charge {charge}") - - if len(mols) > 1: print("WARNING: More than 1 mol received from xyz2mol for initcharge:", charge) - - # Smiles are generated with rdkit - smiles = Chem.MolToSmiles(mols[0]) - if debug >= 2: print(f"GET_CHARGE. {smiles=}") - # Gets the resulting charges - atom_charge = [] - total_charge = 0 - for i in range(natoms): - a = mols[0].GetAtomWithIdx(i) # Returns a particular Atom - atom_charge.append(a.GetFormalCharge()) - total_charge += a.GetFormalCharge() - - # Connectivity is checked - iscorrect = check_rdkit_obj_connectivity(mols[0], prot.natoms, charge, debug=debug) - - # Charge_state is initiated - ch_state = charge_state(iscorrect, total_charge, atom_charge, mols[0], smiles, charge, allow, prot) - - return ch_state - -###################################################### -def prepare_mol (mol): - tmp_atcharge = np.zeros((mol.natoms)) - tmp_smiles = [] - - for lig in mol.ligands: - tmp_smiles.append(lig.smiles) - parent_indices = lig.get_parent_indices("molecule") - for kdx, a in enumerate(parent_indices): - tmp_atcharge[a] = lig.atomic_charges[kdx] - - for met in mol.metals: - parent_index = met.get_parent_index("molecule") - tmp_atcharge[parent_index] = met.charge - - mol.set_charges(int(sum(tmp_atcharge)), atomic_charges=tmp_atcharge, smiles=tmp_smiles) \ No newline at end of file diff --git a/cell2mol/test/new_reconstruction.py b/cell2mol/test/new_reconstruction.py deleted file mode 100644 index 9f77b15d2..000000000 --- a/cell2mol/test/new_reconstruction.py +++ /dev/null @@ -1,317 +0,0 @@ -import numpy as np -from cell2mol.connectivity import split_species -from cell2mol.other import extract_from_list -from cell2mol.classes import molecule -from cell2mol.cell_reconstruction import tmatgenerator -from cell2mol.other import additem, absolute_value, get_dist -from cell2mol.connectivity import count_species -from cell2mol.cell_operations import translate -import itertools -import matplotlib.pyplot as plt -from ase.visualize.plot import plot_atoms -from ase import Atoms - -###################################################### -def find_row_indices(source, target): - - # List to store the indices of found rows - found_indices = [] - found_rows = [] - remaining_indices = [] - remaining_rows = [] - - # Iterate over each row in the source array with enumeration to track the index - for index, row in enumerate(source): - # Check if any row in the target array matches the current row - if any(np.allclose(row, target_row) for target_row in target): - found_indices.append(index) - found_rows.append(row) - else : - remaining_indices.append(index) - remaining_rows.append(row) - return found_indices, found_rows - -###################################################### -def find_row_index_from_matrix (matrix, query_row): - - # Convert the inputs to NumPy arrays if they aren't already - matrix = np.array(matrix) - query_row = np.array(query_row) - - # Check each row for equality with the query_row - for index, row in enumerate(matrix): - if np.allclose(row, query_row): - return index - return -1 - -###################################################### -def get_fragments (newcell, updated, indices_in_ref, cov_factor: float=1.3, metal_factor: float=1.0, debug: int=0): - - updated_labels = extract_from_list(updated, newcell.labels, dimension=1) - updated_coord = extract_from_list(updated, newcell.coord, dimension=1) - updated_fracs = extract_from_list(updated, newcell.frac_coord, dimension=1) - - blocklist = split_species(updated_labels, updated_coord, debug=debug) - - fragments = [] - list_ref_indices = [] - - for b in blocklist: - if debug > 0: print(f"CELL.MOLECLIST: doing block={b}") - mol_labels = extract_from_list(b, updated_labels, dimension=1) - mol_coord = extract_from_list(b, updated_coord, dimension=1) - mol_frac_coord = extract_from_list(b, updated_fracs, dimension=1) - - cell_indices = extract_from_list(b, updated, dimension=1) - ref_indices = extract_from_list(b, indices_in_ref, dimension=1) - - # Creates Molecule Object - newmolec = molecule(mol_labels, mol_coord) - - # For debugging - newmolec.origin = "cell.get_fragments" - - # Adds cell as parent of the molecule, with indices - newmolec.add_parent(newcell, indices=cell_indices) - newmolec.set_fractional_coord(mol_frac_coord) - newmolec.set_adjacency_parameters(cov_factor=cov_factor, metal_factor=metal_factor) - newmolec.set_atoms(create_adjacencies=True, debug=debug) - newmolec.ref_indices = ref_indices - fragments.append(newmolec) - - return fragments - -###################################################### -def classify_fragments (fragments, newcell, debug: int=0): - - molecules = [] - remaining_fragments = [] - - for frag in fragments: - found = False - for idx, ref in enumerate(newcell.refmoleclist): - if (ref.natoms == frag.natoms) & (ref.formula == frag.formula): - if (sorted(ref.get_parent_indices("cell")) == sorted(frag.ref_indices)): - if debug >=1 : - print(frag.formula, frag.ref_indices, frag.frac_coord, \ - f"equivalent to Ref {idx} {ref.formula}") - frag.subtype = "molecule" - frag.origin = "cell.classify_fragments" - molecules.append(frag) - found = True - - if found == False: - frag.subtype = "fragment" - frag.origin = "cell.classify_fragments" - remaining_fragments.append(frag) - - rem_size = np.array([rem.natoms for rem in remaining_fragments]) - order = np.argsort(rem_size) - descending_order = order[::-1] - remaining_fragments = [remaining_fragments[i] for i in descending_order] - for rem in remaining_fragments: - rem.get_centroid() - - if debug >=1 : - print("Remaining_fragments:", [rem.formula for rem in remaining_fragments]) - print("Remaining_fragments:", [rem.natoms for rem in remaining_fragments]) - print("Remaining_fragments:", [get_dist(rem.frac_centroid, [0.5, 0.5, 0.5]) for rem in remaining_fragments]) - - return molecules, remaining_fragments - -###################################################### -def grouping_smaller_lists_for_target_sets(target_sets, smaller_lists, debug: int=0): - - # target_sets : Define the larger target lists as sets for fast lookup - # List of smaller lists to be grouped - - # Group smaller lists into their respective larger list - grouped_lists = [[] for _ in range(len(target_sets))] - grouped_lists_idx = [[] for _ in range(len(target_sets))] - target_idx_lists = [[] for _ in range(len(target_sets))] - for j, small_list in enumerate(smaller_lists): - small_set = set(small_list) - for i, target_set in enumerate(target_sets): - if small_set.issubset(target_set): - if debug >=1 : print(f"grouped_lists {i} add {small_set}") - grouped_lists[i].extend(small_list) - grouped_lists_idx[i].append(j) - target_idx_lists[i].append(i) - - if set(grouped_lists[i]) == target_set: - if debug >=1 :print(f"grouped_lists {i} is same with {target_set} {grouped_lists_idx[i]}") - else : - if debug >=1 :print(f"continue for {i} {grouped_lists_idx[i]}") - break - - if debug >=1 : - # Print the grouped lists - for i, group in enumerate(grouped_lists): - print(f"Group {i}: {group}") - - return grouped_lists, grouped_lists_idx, target_idx_lists - -###################################################### -def grouping_remaining_fragments(remaining_fragments, not_found_list, newcell, debug: int=0): - - smaller_lists = [rem_frag.ref_indices for rem_frag in remaining_fragments] - smaller_lists.sort(key=len, reverse=True) - - target_sets = [] - for j in not_found_list: - try: - ref_indices = newcell.refmoleclist[j].get_parent_indices("cell") - target_sets.append(set(ref_indices)) - except AttributeError as e: - print(f"Error accessing or calling get_parent_indices on refmoleclist {j}: {e}") - except Exception as e: - print(f"An unexpected error occurred with element {j}: {e}") - - if debug >= 1: - print(f"{target_sets=}") - print(f"{smaller_lists=}") - - grouped_rem_frags, indices_of_rem_frags, target_idx_lists = grouping_smaller_lists_for_target_sets(target_sets, smaller_lists, debug=debug) - - not_found_refmoleclist_indices = [ list(set(sublist))[0] if sublist else None for sublist in target_idx_lists ] - - indices_of_target_ref = [] - for t in not_found_refmoleclist_indices: - indices_of_target_ref.append( newcell.refmoleclist[t].get_parent_indices("cell") ) - - return grouped_rem_frags, indices_of_rem_frags, indices_of_target_ref -###################################################### -def merge_fragments(frags: list, cell_vector: list, cov_factor: float=1.3, metal_factor: float=1.0, debug: int=0): - - #finds biggest fragment and keeps it in the original cell - sizes = [] - for f in frags: - size = f.natoms - sizes.append(size) - keep_idx = np.argmax(sizes) - if keep_idx == 0: move_idx = 1 - elif keep_idx == 1: move_idx = 0 - keep_frag = frags[keep_idx] - move_frag = frags[move_idx] - if debug > 0: print("MERGE_FRAGMENTS: keep_idx", keep_idx) - if debug > 0: print("MERGE_FRAGMENTS: move_idx", move_idx) - - move_frag.get_centroid() - move_frag.tmatrix = tmatgenerator(move_frag.frac_centroid) - - if len(move_frag.tmatrix) == 0: return None - - for t in move_frag.tmatrix: - if debug > 0: print("MERGE_FRAGMENTS: translation", t) - ## Applies Translations and each time, it checks if a bigger molecule is formed - ## meaning that the translation was successful - reclabels = [] - reclabels.extend(keep_frag.labels) - reclabels.extend(move_frag.labels) - reccoord = [] - reccoord.extend(keep_frag.coord) - if t == (0, 0, 0): reccoord.extend(move_frag.coord) - else: reccoord.extend(translate(t, move_frag.coord, cell_vector)) - rec_ref_indices = [] - rec_ref_indices.extend(keep_frag.ref_indices) - rec_ref_indices.extend(move_frag.ref_indices) - - recfracs = [] - recfracs.extend(keep_frag.frac_coord) - recfracs.extend(move_frag.frac_coord) - - numspecs = count_species(reclabels, reccoord, cov_factor=cov_factor, debug=debug) - - if debug > 0: print("MERGE_FRAGMENTS: count_species found", numspecs) - if numspecs != 1: continue - blocklist = split_species(reclabels, reccoord, cov_factor=cov_factor, debug=debug) - if blocklist is None: continue - else: - if len(blocklist) != 1: continue - if len(blocklist) == 1: - newmolec = molecule(reclabels, reccoord) - newmolec.origin = "cell.reconstruct" - newmolec.ref_indices = rec_ref_indices - newmolec.set_fractional_coord(recfracs) - newmolec.set_adjacency_parameters(cov_factor, metal_factor) - newmolec.set_adj_types() - newmolec.set_element_count() - newmolec.get_adjmatrix() - newmolec.get_centroid() - newmolec.get_metal_adjmatrix() - return newmolec - return None - -###################################################### -# Function to generate combinations and the rest of the elements -def combinations_and_rest(data, n): - for combination in itertools.combinations(data, n): - # Create a set from the combination for fast removal - remaining = [x for x in data if x not in combination] - yield combination, remaining - -###################################################### -# def find_molecules_from_remaining_fragments(remaining_fragments, indices_from_rem_frags, indices_of_target_ref): -def fragments_reconstruct(subset_remaining_fragments, target_ref, cell_vector, debug: int=0): - - list_of_found_molecules = [] - final_remaining = subset_remaining_fragments.copy() - - count = 0 - while (len(final_remaining) > 0): - print("final_remaining", [k.formula for k in final_remaining], [k.subtype for k in final_remaining]) - - tobemerged = final_remaining[:2] - rest = final_remaining[2:] - - print("Fragments TO BE MERGED", [k.formula for k in tobemerged], [k.subtype for k in tobemerged]) - print("Rest fragments",[k.formula for k in rest],[k.subtype for k in rest]) - - found_molecule =[] - bigger_fragment = [] - not_merged = [] - newmolec = merge_fragments_test(tobemerged, cell_vector, debug=debug) - - if newmolec is None: - print("NOT MERGED", tobemerged[0].formula, tobemerged[1].formula) - not_merged.append(tobemerged[0]) - not_merged.append(tobemerged[1]) - - else : - print("MERGED", newmolec.formula) - small_set = set(newmolec.ref_indices) - print(f"{small_set=}") - if small_set.issubset(target_ref): - if sorted(small_set) == target_ref: - newmolec.subtype = "molecule" - found_molecule.append(newmolec) - else : - newmolec.subtype = "Rec. Fragment" - bigger_fragment.append(newmolec) - - print(f"{len(found_molecule)=}") - print(f"{len(bigger_fragment)=}") - print(f"{len(not_merged)=}") - - if len(not_merged) == 2: - final_remaining = [] - final_remaining.append(tobemerged[0]) - final_remaining.extend(rest) - final_remaining.append(tobemerged[1]) - - elif len(found_molecule) == 1 : - list_of_found_molecules.append(newmolec) - final_remaining = [] - final_remaining.extend(rest) - elif len(bigger_fragment) == 1 : - final_remaining = [] - final_remaining.append(newmolec) - final_remaining.extend(rest) - - count +=1 - - if len(final_remaining) == 0: - print(f"{count=}") - break - - return list_of_found_molecules, final_remaining \ No newline at end of file diff --git a/cell2mol/test/reconstruct_new.ipynb b/cell2mol/test/reconstruct_new.ipynb deleted file mode 100644 index 24c030290..000000000 --- a/cell2mol/test/reconstruct_new.ipynb +++ /dev/null @@ -1,55828 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [ - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "8c99c3a3c4a74cbcb1ba19e42fff3b85", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "import numpy as np\n", - "from ase.io import read\n", - "from ase import Atoms\n", - "from ase.visualize.plot import plot_atoms\n", - "from cell2mol.read_write import readinfo\n", - "from cell2mol.cell_operations import frac2cart_fromparam, cart2frac\n", - "import nglview" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [], - "source": [ - "infopath = \"error_2/BOFFOS/BOFFOS.info\"\n", - "labels, pos, ref_labels, ref_fracs, cellvec, cellparam = readinfo(infopath)\n", - "ref_pos = frac2cart_fromparam(ref_fracs, cellparam)" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 0 and 59 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 0 and 60 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 2 and 61 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 2 and 62 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 3 and 63 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 3 and 64 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 4 and 65 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 4 and 66 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 5 and 67 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 5 and 68 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 6 and 69 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 6 and 70 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 7 and 71 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 7 and 72 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 8 and 73 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 8 and 74 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 9 and 75 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 9 and 76 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 10 and 77 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 10 and 78 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 11 and 79 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 11 and 80 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 15 and 81 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 15 and 82 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 16 and 83 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 16 and 84 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 17 and 85 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 17 and 86 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 18 and 87 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 18 and 88 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 19 and 89 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 19 and 90 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 20 and 91 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 20 and 92 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 21 and 93 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 21 and 94 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 22 and 95 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 22 and 96 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 23 and 97 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 23 and 98 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 24 and 99 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 24 and 100 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 25 and 101 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 25 and 102 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 26 and 103 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 26 and 104 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 27 and 105 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 27 and 106 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 28 and 107 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 28 and 108 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 29 and 109 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 29 and 110 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 30 and 111 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 30 and 112 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 31 and 113 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 31 and 114 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 32 and 115 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 32 and 116 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 33 and 117 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 33 and 118 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 34 and 119 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 34 and 120 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 35 and 121 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 35 and 122 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 36 and 123 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 36 and 124 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 37 and 125 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 37 and 126 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 38 and 127 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 38 and 128 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 39 and 129 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 39 and 130 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 40 and 131 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 40 and 132 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 41 and 133 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 41 and 134 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 42 and 135 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 42 and 136 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 43 and 137 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 43 and 138 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 44 and 139 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 44 and 140 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 45 and 141 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 45 and 142 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 46 and 143 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 46 and 144 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 47 and 145 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 47 and 146 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 48 and 147 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 48 and 148 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 49 and 149 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 49 and 150 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 50 and 151 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 50 and 152 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 51 and 153 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 51 and 154 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 52 and 155 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n", - "/Users/ycho/miniconda3/envs/cell2mol/lib/python3.10/site-packages/ase/spacegroup/spacegroup.py:433: UserWarning: scaled_positions 52 and 156 are equivalent\n", - " warnings.warn('scaled_positions %d and %d '\n" - ] - } - ], - "source": [ - "input_path = \"error_2/BOFFOS/BOFFOS.cif\"\n", - "atoms = read(input_path)\n", - "cell_positions = atoms.get_positions(\"center\")\n", - "cell_labels = atoms.get_chemical_symbols()" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [], - "source": [ - "cell_parameters = atoms.cell.cellpar()\n", - "space_group = atoms.info['spacegroup']\n", - "sym_ops = space_group.get_op()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "name = \"BOFFOS\"\n", - "refcell = cell(name, ref_labels, ref_pos, cellvec, cellparam)" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0 K [14.586186795000003, 10.491939639176747, 6.84007412] [0.84713, 0.49715, 0.70169]\n", - "59 K [7.989620340000002, 7.38603848922675, 6.84007412] [0.50285, 0.34998, 0.70169]\n", - "60 K [13.977692865000002, 3.2261949364194913, 6.84007412] [0.65002, 0.15287, 0.70169]\n" - ] - } - ], - "source": [ - "for i, (l, c, f ) in enumerate(zip(ref_labels, ref_pos, ref_fracs)):\n", - " if l ==\"K\":\n", - " print(i, l, c, f)" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [], - "source": [ - "newcell = np.load(\"error_2/BOFFOS/Ref_Cell_BOFFOS.cell\", allow_pickle=True)" - ] - }, - { - "cell_type": "code", - "execution_count": 24, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "C6-O12-Fe True True False\n", - "H24-C12-O6 True True False\n", - "H2-O True True False\n", - "H2-O True True False\n", - "H2-O True True False\n", - "H24-C12-O6 True True False\n", - "H24-C12-O6 True True False\n", - "K True True False\n", - "K True True False\n", - "K True True False\n" - ] - } - ], - "source": [ - "for ref in newcell.refmoleclist:\n", - " ref_labels_idx = [ref_labels[i] for i in ref.get_parent_indices(\"cell\")]\n", - " ref_pos_idx = [ref_pos[i] for i in ref.get_parent_indices(\"cell\")]\n", - " ref_frac_idx = [ref_fracs[i] for i in ref.get_parent_indices(\"cell\")]\n", - " # print(ref.formula, ref.labels, ref.coord, ref_pos_idx)\n", - " # print(ref_labels_idx, ref_pos_idx)\n", - " print(ref.formula, ref_labels_idx==ref.labels, \n", - " np.allclose(np.array(ref_pos_idx), np.array(ref.coord)), \n", - " np.allclose(np.array(ref_frac_idx), np.array(ref.frac_coord)),\n", - " )\n", - " # for l, m, n, k in zip(ref.labels, ref_frac_idx, ref.frac_coord, np.array(cart2frac(ref.coord, cellvec))):\n", - " # print(l, m, n, k)" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [], - "source": [ - "def check_centroid_inside_unit_cell(positions):\n", - " \"\"\"\n", - " Check if the centroid of a set of fractional positions is inside the unit cell.\n", - "\n", - " Parameters:\n", - " - positions (np.array): 2D array of fractional coordinates.\n", - "\n", - " Returns:\n", - " - bool: True if centroid is inside the unit cell, False otherwise.\n", - " \"\"\"\n", - " # Calculate the centroid of the positions\n", - " centroid_fractional = np.mean(positions, axis=0)\n", - "\n", - " # Check if the centroid is inside the unit cell\n", - " is_inside = np.all((centroid_fractional >= 0) & (centroid_fractional < 1))\n", - " \n", - " return is_inside, centroid_fractional" - ] - }, - { - "cell_type": "code", - "execution_count": 43, - "metadata": {}, - "outputs": [], - "source": [ - "def apply_symmetry_operations_to_frac (molecule, cell_parameters, fractional_coords, sym_ops, normalize = False):\n", - " new_structures = []\n", - " for rot, trans in zip(sym_ops[0], sym_ops[1]):\n", - " transformed_positions = np.dot(fractional_coords, rot.T)\n", - " transformed_positions += np.array(trans) \n", - " if normalize:\n", - " transformed_positions = np.remainder(transformed_positions, 1)\n", - " new_positions = frac2cart_fromparam(transformed_positions, cell_parameters)\n", - " new_molecule = molecule.copy()\n", - " new_molecule.set_positions(new_positions)\n", - " new_structures.append(new_molecule)\n", - " return new_structures" - ] - }, - { - "cell_type": "code", - "execution_count": 49, - "metadata": {}, - "outputs": [], - "source": [ - "# ref_molecuele = Atoms(symbols=ref_labels, positions=ref_pos, pbc=True, cell=cell_parameters)\n", - "ref_molecuele = Atoms(symbols=ref_labels, positions=ref_pos)" - ] - }, - { - "cell_type": "code", - "execution_count": 50, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "Atoms(symbols='C42H78FeK3O33', pbc=False)" - ] - }, - "execution_count": 50, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "ref_molecuele" - ] - }, - { - "cell_type": "code", - "execution_count": 51, - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "data": { - "text/plain": [ - "[Atoms(symbols='C42H78FeK3O33', pbc=False),\n", - " Atoms(symbols='C42H78FeK3O33', pbc=False),\n", - " Atoms(symbols='C42H78FeK3O33', pbc=False),\n", - " Atoms(symbols='C42H78FeK3O33', pbc=False),\n", - " Atoms(symbols='C42H78FeK3O33', pbc=False),\n", - " Atoms(symbols='C42H78FeK3O33', pbc=False),\n", - " Atoms(symbols='C42H78FeK3O33', pbc=False),\n", - " Atoms(symbols='C42H78FeK3O33', pbc=False),\n", - " Atoms(symbols='C42H78FeK3O33', pbc=False)]" - ] - }, - "execution_count": 51, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "new_structures = apply_symmetry_operations_to_frac(ref_molecuele, cell_parameters, ref_fracs, sym_ops, normalize=True)\n", - "new_structures" - ] - }, - { - "cell_type": "code", - "execution_count": 52, - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 52, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "plot_atoms(atoms)" - ] - }, - { - "cell_type": "code", - "execution_count": 587, - "metadata": {}, - "outputs": [], - "source": [ - "def find_row_indices(source, target):\n", - " # List to store the indices of found rows\n", - " found_indices = []\n", - " found_rows = []\n", - " remaining_indices = []\n", - " remaining_rows = []\n", - " # Iterate over each row in the source array with enumeration to track the index\n", - " for index, row in enumerate(source):\n", - " # Check if any row in the target array matches the current row\n", - " if any(np.allclose(row, target_row) for target_row in target):\n", - " found_indices.append(index)\n", - " found_rows.append(row)\n", - " else :\n", - " remaining_indices.append(index)\n", - " remaining_rows.append(row)\n", - " # return remaining_indices, remaining_rows\n", - " return found_indices, found_rows" - ] - }, - { - "cell_type": "code", - "execution_count": 147, - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "data": { - "text/plain": [ - "148" - ] - }, - "execution_count": 147, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "157-3*3" - ] - }, - { - "cell_type": "code", - "execution_count": 150, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "525" - ] - }, - "execution_count": 150, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "(148 + 9*3)*3" - ] - }, - { - "cell_type": "code", - "execution_count": 152, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "array([[14.5861868 , 10.49193964, 6.84007412],\n", - " [ 7.98962034, 7.38603849, 6.84007412],\n", - " [13.97769286, 3.22619494, 6.84007412],\n", - " ...,\n", - " [-5.946036 , 20.86499244, 9.39382267],\n", - " [-2.9120955 , 5.52225862, 9.39382267],\n", - " [ 8.8581315 , 15.82109507, 9.39382267]])" - ] - }, - "execution_count": 152, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "cell_positions" - ] - }, - { - "cell_type": "code", - "execution_count": 177, - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "data": { - "text/plain": [ - "array([[14.5861868 , 10.49193964, 6.84007412],\n", - " [ 7.98962034, 7.38603849, 6.84007412],\n", - " [13.97769286, 3.22619494, 6.84007412],\n", - " ...,\n", - " [-5.946036 , 20.86499244, 9.39382267],\n", - " [-2.9120955 , 5.52225862, 9.39382267],\n", - " [ 8.8581315 , 15.82109507, 9.39382267]])" - ] - }, - "execution_count": 177, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "cell_positions" - ] - }, - { - "cell_type": "code", - "execution_count": 489, - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Molecule 0 formula=C6-O12-Fe\n", - "New molecule found with: formula=C6-O12-Fe and added in position 0\n", - "Molecule 1 formula=H24-C12-O6\n", - "New molecule found with: formula=H24-C12-O6 and added in position 1\n", - "Molecule 2 formula=H2-O\n", - "New molecule found with: formula=H2-O and added in position 2\n", - "Molecule 3 formula=H2-O\n", - "Molecule 3 is the same with 2 in typelist\n", - "Molecule 4 formula=H2-O\n", - "Molecule 4 is the same with 2 in typelist\n", - "Molecule 5 formula=H24-C12-O6\n", - "Molecule 5 is the same with 1 in typelist\n", - "Molecule 6 formula=H24-C12-O6\n", - "Molecule 6 is the same with 1 in typelist\n", - "Molecule 7 formula=K\n", - "New molecule found with: formula=K and added in position 3\n", - "Molecule 8 formula=K\n", - "Molecule 8 is the same with 3 in typelist\n", - "Molecule 9 formula=K\n", - "Molecule 9 is the same with 3 in typelist\n" - ] - } - ], - "source": [ - "from cell2mol.connectivity import compare_atoms, compare_species, compare_metals\n", - "debug = 2\n", - "unique_species = []\n", - "unique_indices = []\n", - "\n", - "typelist_mols = [] # temporary variable \n", - "typelist_ligs = [] # temporary variable\n", - "typelist_mets = [] # temporary variable\n", - "\n", - "specs_found = -1\n", - "for idx, mol in enumerate(newcell.refmoleclist):\n", - " if debug >= 2: print(f\"Molecule {idx} formula={mol.formula}\")\n", - " found = False\n", - " for ldx, typ in enumerate(typelist_mols): # Molecules\n", - " issame = compare_species(mol, typ[0], debug=0)\n", - " if issame :\n", - " found = True ; kdx = typ[1]\n", - " if debug >= 2: print(f\"Molecule {idx} is the same with {ldx} in typelist\")\n", - " if not found:\n", - " specs_found += 1 ; kdx = specs_found\n", - " typelist_mols.append(list([mol, kdx]))\n", - " unique_species.append(mol)\n", - " if debug >= 2: print(f\"New molecule found with: formula={mol.formula} and added in position {kdx}\")\n", - " unique_indices.append(kdx)\n", - " # mol.unique_index = kdx\n", - "\n", - " # else:\n", - " # if not hasattr(mol,\"ligands\"): mol.split_complex(debug=debug)\n", - " # for jdx, lig in enumerate(mol.ligands): # ligands\n", - " # found = False\n", - " # for ldx, typ in enumerate(typelist_ligs):\n", - " # issame = compare_species(lig, typ[0], debug=0)\n", - " # if issame :\n", - " # found = True ; kdx = typ[1]\n", - " # if debug >= 2: print(f\"ligand {jdx} is the same with {ldx} in typelist\")\n", - " # if not found:\n", - " # specs_found += 1 ; kdx = specs_found\n", - " # typelist_ligs.append(list([lig, kdx]))\n", - " # unique_species.append(lig)\n", - " # if debug >= 2: print(f\"New ligand found with: formula {lig.formula} added in position {kdx}\")\n", - " # unique_indices.append(kdx)\n", - " # lig.unique_index = kdx\n", - "\n", - " # for jdx, met in enumerate(mol.metals): # metals\n", - " # found = False\n", - " # for ldx, typ in enumerate(typelist_mets):\n", - " # issame = compare_metals(met, typ[0], debug=0)\n", - " # if issame :\n", - " # found = True ; kdx = typ[1]\n", - " # if debug >= 2: print(f\"Metal {jdx} is the same with {ldx} in typelist\")\n", - " # if not found:\n", - " # specs_found += 1 ; kdx = specs_found\n", - " # typelist_mets.append(list([met, kdx]))\n", - " # unique_species.append(met)\n", - " # if debug >= 2: print(f\"New Metal Center found with: labels {met.label} and added in position {kdx}\")\n", - " # unique_indices.append(kdx)\n", - " # met.unique_index = kdx" - ] - }, - { - "cell_type": "code", - "execution_count": 493, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "C6-O12-Fe\n", - "H24-C12-O6\n", - "H2-O\n", - "K\n" - ] - } - ], - "source": [ - "for specie in unique_species:\n", - " print(specie.formula)" - ] - }, - { - "cell_type": "code", - "execution_count": 495, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "C6-O12-Fe 0\n", - "H24-C12-O6 1\n", - "H2-O 2\n", - "H2-O 2\n", - "H2-O 2\n", - "H24-C12-O6 1\n", - "H24-C12-O6 1\n", - "K 3\n", - "K 3\n", - "K 3\n" - ] - } - ], - "source": [ - "for ref, index in zip(newcell.refmoleclist, unique_indices):\n", - " print(ref.formula, index)" - ] - }, - { - "cell_type": "code", - "execution_count": 492, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[0, 1, 2, 2, 2, 1, 1, 3, 3, 3]" - ] - }, - "execution_count": 492, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "unique_indices" - ] - }, - { - "cell_type": "code", - "execution_count": 491, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "10" - ] - }, - "execution_count": 491, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "len(unique_indices)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "cell_positions" - ] - }, - { - "cell_type": "code", - "execution_count": 588, - "metadata": {}, - "outputs": [], - "source": [ - "all_found = []" - ] - }, - { - "cell_type": "code", - "execution_count": 589, - "metadata": {}, - "outputs": [], - "source": [ - "found_indices, found_rows = find_row_indices(cell_positions, new_structures[0].positions)" - ] - }, - { - "cell_type": "code", - "execution_count": 590, - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "data": { - "text/plain": [ - "(157, 157)" - ] - }, - "execution_count": 590, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "len(found_indices), len(found_rows)" - ] - }, - { - "cell_type": "code", - "execution_count": 591, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0 K [14.5861868 10.49193964 6.84007412]\n", - "1 K [7.98962034 7.38603849 6.84007412]\n", - "2 K [13.97769286 3.22619494 6.84007412]\n", - "9 Fe [12.18571845 7.03402088 9.3951224 ]\n", - "12 O [15.03530747 9.65114938 4.23131436]\n", - "13 O [8.49320573 8.19538353 4.23131436]\n", - "14 O [13.02498681 3.25764015 4.23131436]\n", - "21 O [12.4636469 10.43622462 4.93229304]\n", - "22 O [9.09914091 5.57572252 4.93229304]\n", - "23 O [14.9907122 5.09222592 4.93229304]\n", - "30 O [12.00940874 11.2968528 7.55450504]\n", - "31 O [8.58093412 4.75202665 7.55450504]\n", - "32 O [15.96315714 5.05529362 7.55450504]\n", - "39 O [14.17264487 12.40819855 9.00724948]\n", - "40 O [6.53686241 6.06977122 9.00724948]\n", - "41 O [15.84399273 2.6262033 9.00724948]\n", - "48 O [16.71213836 11.83121046 8.1503028 ]\n", - "49 O [5.76680201 8.55753114 8.1503028 ]\n", - "50 O [14.07455964 0.71543147 8.1503028 ]\n", - "57 O [17.23339127 10.87392517 5.5544104 ]\n", - "58 O [6.33520893 9.48759204 5.5544104 ]\n", - "59 O [12.9848998 0.74265585 5.5544104 ]\n", - "66 O [15.7326264 8.57842427 8.4251964 ]\n", - "67 O [9.07355346 9.335642 8.4251964 ]\n", - "68 O [11.74732014 3.1901068 8.4251964 ]\n", - "75 O [13.60155735 7.98666325 8.33142064]\n", - "76 O [10.65156806 7.78596257 8.33142064]\n", - "77 O [12.30037459 5.33154724 8.33142064]\n", - "84 O [13.77323696 6.63325264 0.80148056]\n", - "85 O [11.73781623 8.61134678 0.80148056]\n", - "86 O [11.04244681 5.85957365 0.80148056]\n", - "93 O [15.9202677 7.135743 1.0440108]\n", - "94 O [10.22913144 10.21948476 1.0440108 ]\n", - "95 O [10.40410086 3.7489453 1.0440108 ]\n", - "102 O [18.38446098 8.70800389 9.4643332 ]\n", - "111 O [ 8.94756573 13.33150613 4.5493916 ]\n", - "120 O [18.45062282 6.83922937 2.0090628 ]\n", - "129 C [13.97184431 9.66761064 3.294824 ]\n", - "130 C [9.01068144 7.26616679 3.294824 ]\n", - "131 C [13.57097426 4.17039564 3.294824 ]\n", - "138 H [14.1242724 8.99459856 2.6134388 ]\n", - "139 H [9.51731295 7.73467943 2.6134388 ]\n", - "140 H [12.91191465 4.37489508 2.6134388 ]\n", - "147 H [13.9293204 10.53520319 2.861038 ]\n", - "148 H [8.2805862 6.79554373 2.861038 ]\n", - "149 H [14.3435934 3.77342614 2.861038 ]\n", - "156 C [12.69698007 9.39388951 3.9927808 ]\n", - "157 C [9.88516301 6.29896253 3.9927808 ]\n", - "158 C [13.97135693 5.41132102 3.9927808 ]\n", - "165 H [11.96883435 9.35547992 3.3523372 ]\n", - "166 H [10.28249955 5.68757464 3.3523372 ]\n", - "167 H [14.3021661 6.0611185 3.3523372]\n", - "174 H [12.74620545 8.54085884 4.4509368 ]\n", - "175 H [10.59929655 6.7681083 4.4509368 ]\n", - "176 H [13.207998 5.79520592 4.4509368 ]\n", - "183 C [11.20913078 10.29946958 5.5817048 ]\n", - "184 C [9.84483231 4.55765722 5.5817048 ]\n", - "185 C [15.49953692 6.24704627 5.5817048 ]\n", - "192 H [11.1731865 9.4504487 6.0505836]\n", - "193 H [10.5980781 4.951039 6.0505836]\n", - "194 H [14.7822354 6.70268537 6.0505836 ]\n", - "201 H [10.4957283 10.31571979 4.9246896 ]\n", - "202 H [10.18746045 3.93170744 4.9246896 ]\n", - "203 H [15.87031125 6.85674583 4.9246896 ]\n", - "210 C [11.03233368 11.41313679 6.5438324 ]\n", - "211 C [8.96876676 3.84771283 6.5438324 ]\n", - "212 C [16.55239956 5.84332344 6.5438324 ]\n", - "219 H [11.12810385 12.26363497 6.087626 ]\n", - "220 H [8.18432865 3.50540315 6.087626 ]\n", - "221 H [17.2410675 5.33513495 6.087626 ]\n", - "228 H [10.1448147 11.37514928 6.9347272 ]\n", - "229 H [9.4454244 3.09809261 6.9347272 ]\n", - "230 H [16.9632609 6.63093118 6.9347272 ]\n", - "237 C [11.8592957 12.26595643 8.5743408 ]\n", - "238 C [7.81672229 4.13747313 8.5743408 ]\n", - "239 C [16.87748202 4.70074351 8.5743408 ]\n", - "246 H [10.9855452 12.18132869 8.9886308 ]\n", - "247 H [8.3268873 3.42309687 8.9886308 ]\n", - "248 H [17.2410675 5.4997475 8.9886308]\n", - "255 H [11.93471775 13.15845191 8.2000176 ]\n", - "256 H [7.0060875 3.75654281 8.2000176 ]\n", - "257 H [17.61269475 4.18917835 8.2000176 ]\n", - "264 C [12.92032196 12.04689511 9.57741 ]\n", - "265 C [7.47592182 5.16587948 9.57741 ]\n", - "266 C [16.15725623 3.89139847 9.57741 ]\n", - "273 H [12.7474239 12.58652882 0.6160736 ]\n", - "274 H [7.09503435 4.74632852 0.6160736 ]\n", - "275 H [16.71104175 3.77131573 0.6160736 ]\n", - "282 H [12.93384675 11.11556795 0.0965052 ]\n", - "283 H [8.2757124 5.64325588 0.0965052 ]\n", - "284 H [15.34394085 4.34534923 0.0965052 ]\n", - "291 C [15.23964153 12.25392705 0.1774136 ]\n", - "292 C [6.13696712 7.07095319 0.1774136 ]\n", - "293 C [15.17689135 1.77929283 0.1774136 ]\n", - "300 H [15.303732 11.3287201 0.4591308]\n", - "301 H [6.9061746 7.58906063 0.4591308 ]\n", - "302 H [14.3435934 2.18639233 0.4591308 ]\n", - "309 H [15.08562945 12.8039018 0.9621276 ]\n", - "310 H [5.73768105 6.66258744 0.9621276 ]\n", - "311 H [15.7301895 1.63768383 0.9621276 ]\n", - "318 C [16.49744747 12.67157863 9.2489024 ]\n", - "319 C [5.14636727 7.95141929 9.2489024 ]\n", - "320 C [14.90968527 0.48117515 9.2489024 ]\n", - "327 H [16.42348755 13.59319787 8.9525632 ]\n", - "328 H [4.38520155 7.4265585 8.9525632 ]\n", - "329 H [15.7448109 0.08441669 8.9525632 ]\n", - "336 H [-7.1254956 12.60763299 0.1179508 ]\n", - "337 H [4.82871735 8.62949637 0.1179508 ]\n", - "338 H [ 2.29677825 20.97121677 0.1179508 ]\n", - "345 C [-6.41318973 12.00658614 7.5118088 ]\n", - "346 C [4.99308625 9.54689477 7.5118088 ]\n", - "347 C [ 1.42010347 20.65486522 7.5118088 ]\n", - "354 H [-5.7072198 12.05892449 8.1756476 ]\n", - "355 H [ 4.59477495 10.13211349 8.1756476 ]\n", - "356 H [ 1.11244485 20.01730815 8.1756476 ]\n", - "363 H [-6.41757615 12.83344764 7.0058876 ]\n", - "364 H [4.2791964 9.12966527 7.0058876 ]\n", - "365 H [ 2.13837975 20.24523322 7.0058876 ]\n", - "372 C [-6.16486962 10.87582455 6.6120684 ]\n", - "373 C [ 5.84819446 10.32732709 6.6120684 ]\n", - "374 C [ 0.31667516 21.00519449 6.6120684 ]\n", - "381 H [-5.27467005 10.94673457 6.2367704 ]\n", - "382 H [ 5.3416848 11.06280752 6.2367704 ]\n", - "383 H [-0.06701475 20.19880404 6.2367704 ]\n", - "390 H [18.14881275 10.04347596 7.1082416 ]\n", - "391 H [ 6.5966883 10.69559491 7.1082416 ]\n", - "392 H [11.80799895 0.36510219 7.1082416 ]\n", - "399 C [17.3471945 9.74611816 4.713158 ]\n", - "400 C [ 7.25501683 10.15005204 4.713158 ]\n", - "401 C [11.95128867 1.20800287 4.713158 ]\n", - "408 H [17.2264461 8.93550688 5.2327264 ]\n", - "409 H [ 8.017401 10.4507865 5.2327264]\n", - "410 H [11.3096529 1.71787969 5.2327264 ]\n", - "417 H [18.2328858 9.72058211 4.3164144 ]\n", - "418 H [ 6.83428605 10.92985123 4.3164144 ]\n", - "419 H [11.48632815 0.45373972 4.3164144 ]\n", - "426 C [16.32138144 9.81470673 3.6438024 ]\n", - "427 C [7.70852392 9.22737759 3.6438024 ]\n", - "428 C [12.52359464 2.06208875 3.6438024 ]\n", - "435 H [16.37231265 10.67238032 3.1914952 ]\n", - "436 H [6.9402912 8.84264851 3.1914952 ]\n", - "437 H [13.24089615 1.58914423 3.1914952 ]\n", - "444 H [16.47709935 9.11489235 2.9897116 ]\n", - "445 H [8.236722 9.71214044 2.9897116 ]\n", - "446 H [11.83967865 2.27714027 2.9897116 ]\n", - "453 C [14.76286204 7.9894068 8.87068 ]\n", - "454 C [10.06853973 8.79031016 8.87068 ]\n", - "455 C [11.72209823 4.3244561 8.87068 ]\n", - "462 C [14.86594292 7.18196114 0.4464584 ]\n", - "463 C [10.71626775 9.28330365 0.4464584 ]\n", - "464 C [10.97128933 4.63890828 0.4464584 ]\n", - "471 H [17.5554276 8.67381513 9.21186 ]\n", - "480 H [ 8.9214909 14.16090013 4.24038 ]\n", - "489 H [17.5797966 6.66891869 1.90086 ]\n", - "498 H [18.53871675 8.25384209 0.428912 ]\n", - "507 H [ 8.11365855 13.58897704 4.67904 ]\n", - "516 H [18.422964 6.79554373 2.895156 ]\n" - ] - } - ], - "source": [ - "updated = [i for i in found_indices if i not in all_found]\n", - "for u in updated:\n", - " print(u, cell_labels[u], cell_positions[u])" - ] - }, - { - "cell_type": "code", - "execution_count": 566, - "metadata": {}, - "outputs": [], - "source": [ - "updated_labels = extract_from_list(updated, cell_labels, dimension=1)\n", - "updated_coord = extract_from_list(updated, cell_positions, dimension=1)\n", - "updated_fracs = extract_from_list(updated, cell_fracs, dimension=1)" - ] - }, - { - "cell_type": "code", - "execution_count": 567, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "SPILT_SPECIES: Laplacian lap=array([[ 0, 0, 0, ..., 0, 0, 0],\n", - " [ 0, 0, 0, ..., 0, 0, 0],\n", - " [ 0, 0, 0, ..., 0, 0, 0],\n", - " ...,\n", - " [ 0, 0, 0, ..., 0, 0, 0],\n", - " [ 0, 0, 0, ..., 0, -1, 0],\n", - " [ 0, 0, 0, ..., 0, 0, -1]])\n", - "SPILT_SPECIES: graph=<157x157 sparse matrix of type ''\n", - "\twith 392 stored elements in Compressed Sparse Row format>\n", - "[[3, 22, 23, 24, 25, 26, 27, 145, 146, 147], [28, 31, 148], [29, 32, 149], [30, 33, 150], [111, 114, 117, 120, 123], [18, 102, 105], [34, 151], [36, 153, 156], [109, 112, 115, 118, 121], [35, 152, 155], [6, 9, 12, 15, 21, 39, 42, 45, 48, 51, 54, 57, 60, 63, 66, 69, 72, 75, 78, 81, 84, 129, 132, 135, 138, 141, 144], [91, 94, 97], [92, 95, 98], [93, 96, 99], [16, 100, 103], [5, 8, 11, 14, 17, 20, 38, 41, 44, 47, 50, 53, 56, 59, 62, 65, 68, 71, 74, 77, 80, 83, 101, 104, 110, 113, 116, 119, 122, 125, 128, 131, 134, 137, 140, 143], [4, 7, 10, 13, 19, 37, 40, 43, 46, 49, 52, 55, 58, 61, 64, 67, 70, 73, 76, 79, 82, 127, 130, 133, 136, 139, 142], [106], [154], [1], [2], [86], [85], [107], [87], [88], [126], [89], [124], [90], [108], [0]]\n" - ] - } - ], - "source": [ - "blocklist = split_species(updated_labels, updated_coord, debug=2)\n", - "print(blocklist)" - ] - }, - { - "cell_type": "code", - "execution_count": 535, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[0, 1, 2, 9, 12, 13, 14, 21, 22, 23, 30, 31, 32, 39, 40, 41, 48, 49, 50, 57, 58, 59, 66, 67, 68, 75, 76, 77, 84, 85, 86, 93, 94, 95, 102, 111, 120, 129, 130, 131, 138, 139, 140, 147, 148, 149, 156, 157, 158, 165, 166, 167, 174, 175, 176, 183, 184, 185, 192, 193, 194, 201, 202, 203, 210, 211, 212, 219, 220, 221, 228, 229, 230, 237, 238, 239, 246, 247, 248, 255, 256, 257, 264, 265, 266, 273, 274, 275, 282, 283, 284, 291, 292, 293, 300, 301, 302, 309, 310, 311, 318, 319, 320, 327, 328, 329, 336, 337, 338, 345, 346, 347, 354, 355, 356, 363, 364, 365, 372, 373, 374, 381, 382, 383, 390, 391, 392, 399, 400, 401, 408, 409, 410, 417, 418, 419, 426, 427, 428, 435, 436, 437, 444, 445, 446, 453, 454, 455, 462, 463, 464, 471, 480, 489, 498, 507, 516]\n", - "[3, 22, 23, 24, 25, 26, 27, 145, 146, 147]\n", - "CELL.MOLECLIST: doing block=[3, 22, 23, 24, 25, 26, 27, 145, 146, 147]\n", - "[0, 1, 2, 9, 12, 13, 14, 21, 22, 23, 30, 31, 32, 39, 40, 41, 48, 49, 50, 57, 58, 59, 66, 67, 68, 75, 76, 77, 84, 85, 86, 93, 94, 95, 102, 111, 120, 129, 130, 131, 138, 139, 140, 147, 148, 149, 156, 157, 158, 165, 166, 167, 174, 175, 176, 183, 184, 185, 192, 193, 194, 201, 202, 203, 210, 211, 212, 219, 220, 221, 228, 229, 230, 237, 238, 239, 246, 247, 248, 255, 256, 257, 264, 265, 266, 273, 274, 275, 282, 283, 284, 291, 292, 293, 300, 301, 302, 309, 310, 311, 318, 319, 320, 327, 328, 329, 336, 337, 338, 345, 346, 347, 354, 355, 356, 363, 364, 365, 372, 373, 374, 381, 382, 383, 390, 391, 392, 399, 400, 401, 408, 409, 410, 417, 418, 419, 426, 427, 428, 435, 436, 437, 444, 445, 446, 453, 454, 455, 462, 463, 464, 471, 480, 489, 498, 507, 516]\n", - "[28, 31, 148]\n", - "CELL.MOLECLIST: doing block=[28, 31, 148]\n", - "[0, 1, 2, 9, 12, 13, 14, 21, 22, 23, 30, 31, 32, 39, 40, 41, 48, 49, 50, 57, 58, 59, 66, 67, 68, 75, 76, 77, 84, 85, 86, 93, 94, 95, 102, 111, 120, 129, 130, 131, 138, 139, 140, 147, 148, 149, 156, 157, 158, 165, 166, 167, 174, 175, 176, 183, 184, 185, 192, 193, 194, 201, 202, 203, 210, 211, 212, 219, 220, 221, 228, 229, 230, 237, 238, 239, 246, 247, 248, 255, 256, 257, 264, 265, 266, 273, 274, 275, 282, 283, 284, 291, 292, 293, 300, 301, 302, 309, 310, 311, 318, 319, 320, 327, 328, 329, 336, 337, 338, 345, 346, 347, 354, 355, 356, 363, 364, 365, 372, 373, 374, 381, 382, 383, 390, 391, 392, 399, 400, 401, 408, 409, 410, 417, 418, 419, 426, 427, 428, 435, 436, 437, 444, 445, 446, 453, 454, 455, 462, 463, 464, 471, 480, 489, 498, 507, 516]\n", - "[29, 32, 149]\n", - "CELL.MOLECLIST: doing block=[29, 32, 149]\n", - "[0, 1, 2, 9, 12, 13, 14, 21, 22, 23, 30, 31, 32, 39, 40, 41, 48, 49, 50, 57, 58, 59, 66, 67, 68, 75, 76, 77, 84, 85, 86, 93, 94, 95, 102, 111, 120, 129, 130, 131, 138, 139, 140, 147, 148, 149, 156, 157, 158, 165, 166, 167, 174, 175, 176, 183, 184, 185, 192, 193, 194, 201, 202, 203, 210, 211, 212, 219, 220, 221, 228, 229, 230, 237, 238, 239, 246, 247, 248, 255, 256, 257, 264, 265, 266, 273, 274, 275, 282, 283, 284, 291, 292, 293, 300, 301, 302, 309, 310, 311, 318, 319, 320, 327, 328, 329, 336, 337, 338, 345, 346, 347, 354, 355, 356, 363, 364, 365, 372, 373, 374, 381, 382, 383, 390, 391, 392, 399, 400, 401, 408, 409, 410, 417, 418, 419, 426, 427, 428, 435, 436, 437, 444, 445, 446, 453, 454, 455, 462, 463, 464, 471, 480, 489, 498, 507, 516]\n", - "[30, 33, 150]\n", - "CELL.MOLECLIST: doing block=[30, 33, 150]\n", - "[0, 1, 2, 9, 12, 13, 14, 21, 22, 23, 30, 31, 32, 39, 40, 41, 48, 49, 50, 57, 58, 59, 66, 67, 68, 75, 76, 77, 84, 85, 86, 93, 94, 95, 102, 111, 120, 129, 130, 131, 138, 139, 140, 147, 148, 149, 156, 157, 158, 165, 166, 167, 174, 175, 176, 183, 184, 185, 192, 193, 194, 201, 202, 203, 210, 211, 212, 219, 220, 221, 228, 229, 230, 237, 238, 239, 246, 247, 248, 255, 256, 257, 264, 265, 266, 273, 274, 275, 282, 283, 284, 291, 292, 293, 300, 301, 302, 309, 310, 311, 318, 319, 320, 327, 328, 329, 336, 337, 338, 345, 346, 347, 354, 355, 356, 363, 364, 365, 372, 373, 374, 381, 382, 383, 390, 391, 392, 399, 400, 401, 408, 409, 410, 417, 418, 419, 426, 427, 428, 435, 436, 437, 444, 445, 446, 453, 454, 455, 462, 463, 464, 471, 480, 489, 498, 507, 516]\n", - "[111, 114, 117, 120, 123]\n", - "CELL.MOLECLIST: doing block=[111, 114, 117, 120, 123]\n", - "[0, 1, 2, 9, 12, 13, 14, 21, 22, 23, 30, 31, 32, 39, 40, 41, 48, 49, 50, 57, 58, 59, 66, 67, 68, 75, 76, 77, 84, 85, 86, 93, 94, 95, 102, 111, 120, 129, 130, 131, 138, 139, 140, 147, 148, 149, 156, 157, 158, 165, 166, 167, 174, 175, 176, 183, 184, 185, 192, 193, 194, 201, 202, 203, 210, 211, 212, 219, 220, 221, 228, 229, 230, 237, 238, 239, 246, 247, 248, 255, 256, 257, 264, 265, 266, 273, 274, 275, 282, 283, 284, 291, 292, 293, 300, 301, 302, 309, 310, 311, 318, 319, 320, 327, 328, 329, 336, 337, 338, 345, 346, 347, 354, 355, 356, 363, 364, 365, 372, 373, 374, 381, 382, 383, 390, 391, 392, 399, 400, 401, 408, 409, 410, 417, 418, 419, 426, 427, 428, 435, 436, 437, 444, 445, 446, 453, 454, 455, 462, 463, 464, 471, 480, 489, 498, 507, 516]\n", - "[18, 102, 105]\n", - "CELL.MOLECLIST: doing block=[18, 102, 105]\n", - "[0, 1, 2, 9, 12, 13, 14, 21, 22, 23, 30, 31, 32, 39, 40, 41, 48, 49, 50, 57, 58, 59, 66, 67, 68, 75, 76, 77, 84, 85, 86, 93, 94, 95, 102, 111, 120, 129, 130, 131, 138, 139, 140, 147, 148, 149, 156, 157, 158, 165, 166, 167, 174, 175, 176, 183, 184, 185, 192, 193, 194, 201, 202, 203, 210, 211, 212, 219, 220, 221, 228, 229, 230, 237, 238, 239, 246, 247, 248, 255, 256, 257, 264, 265, 266, 273, 274, 275, 282, 283, 284, 291, 292, 293, 300, 301, 302, 309, 310, 311, 318, 319, 320, 327, 328, 329, 336, 337, 338, 345, 346, 347, 354, 355, 356, 363, 364, 365, 372, 373, 374, 381, 382, 383, 390, 391, 392, 399, 400, 401, 408, 409, 410, 417, 418, 419, 426, 427, 428, 435, 436, 437, 444, 445, 446, 453, 454, 455, 462, 463, 464, 471, 480, 489, 498, 507, 516]\n", - "[34, 151]\n", - "CELL.MOLECLIST: doing block=[34, 151]\n", - "[0, 1, 2, 9, 12, 13, 14, 21, 22, 23, 30, 31, 32, 39, 40, 41, 48, 49, 50, 57, 58, 59, 66, 67, 68, 75, 76, 77, 84, 85, 86, 93, 94, 95, 102, 111, 120, 129, 130, 131, 138, 139, 140, 147, 148, 149, 156, 157, 158, 165, 166, 167, 174, 175, 176, 183, 184, 185, 192, 193, 194, 201, 202, 203, 210, 211, 212, 219, 220, 221, 228, 229, 230, 237, 238, 239, 246, 247, 248, 255, 256, 257, 264, 265, 266, 273, 274, 275, 282, 283, 284, 291, 292, 293, 300, 301, 302, 309, 310, 311, 318, 319, 320, 327, 328, 329, 336, 337, 338, 345, 346, 347, 354, 355, 356, 363, 364, 365, 372, 373, 374, 381, 382, 383, 390, 391, 392, 399, 400, 401, 408, 409, 410, 417, 418, 419, 426, 427, 428, 435, 436, 437, 444, 445, 446, 453, 454, 455, 462, 463, 464, 471, 480, 489, 498, 507, 516]\n", - "[36, 153, 156]\n", - "CELL.MOLECLIST: doing block=[36, 153, 156]\n", - "[0, 1, 2, 9, 12, 13, 14, 21, 22, 23, 30, 31, 32, 39, 40, 41, 48, 49, 50, 57, 58, 59, 66, 67, 68, 75, 76, 77, 84, 85, 86, 93, 94, 95, 102, 111, 120, 129, 130, 131, 138, 139, 140, 147, 148, 149, 156, 157, 158, 165, 166, 167, 174, 175, 176, 183, 184, 185, 192, 193, 194, 201, 202, 203, 210, 211, 212, 219, 220, 221, 228, 229, 230, 237, 238, 239, 246, 247, 248, 255, 256, 257, 264, 265, 266, 273, 274, 275, 282, 283, 284, 291, 292, 293, 300, 301, 302, 309, 310, 311, 318, 319, 320, 327, 328, 329, 336, 337, 338, 345, 346, 347, 354, 355, 356, 363, 364, 365, 372, 373, 374, 381, 382, 383, 390, 391, 392, 399, 400, 401, 408, 409, 410, 417, 418, 419, 426, 427, 428, 435, 436, 437, 444, 445, 446, 453, 454, 455, 462, 463, 464, 471, 480, 489, 498, 507, 516]\n", - "[109, 112, 115, 118, 121]\n", - "CELL.MOLECLIST: doing block=[109, 112, 115, 118, 121]\n", - "[0, 1, 2, 9, 12, 13, 14, 21, 22, 23, 30, 31, 32, 39, 40, 41, 48, 49, 50, 57, 58, 59, 66, 67, 68, 75, 76, 77, 84, 85, 86, 93, 94, 95, 102, 111, 120, 129, 130, 131, 138, 139, 140, 147, 148, 149, 156, 157, 158, 165, 166, 167, 174, 175, 176, 183, 184, 185, 192, 193, 194, 201, 202, 203, 210, 211, 212, 219, 220, 221, 228, 229, 230, 237, 238, 239, 246, 247, 248, 255, 256, 257, 264, 265, 266, 273, 274, 275, 282, 283, 284, 291, 292, 293, 300, 301, 302, 309, 310, 311, 318, 319, 320, 327, 328, 329, 336, 337, 338, 345, 346, 347, 354, 355, 356, 363, 364, 365, 372, 373, 374, 381, 382, 383, 390, 391, 392, 399, 400, 401, 408, 409, 410, 417, 418, 419, 426, 427, 428, 435, 436, 437, 444, 445, 446, 453, 454, 455, 462, 463, 464, 471, 480, 489, 498, 507, 516]\n", - "[35, 152, 155]\n", - "CELL.MOLECLIST: doing block=[35, 152, 155]\n", - "[0, 1, 2, 9, 12, 13, 14, 21, 22, 23, 30, 31, 32, 39, 40, 41, 48, 49, 50, 57, 58, 59, 66, 67, 68, 75, 76, 77, 84, 85, 86, 93, 94, 95, 102, 111, 120, 129, 130, 131, 138, 139, 140, 147, 148, 149, 156, 157, 158, 165, 166, 167, 174, 175, 176, 183, 184, 185, 192, 193, 194, 201, 202, 203, 210, 211, 212, 219, 220, 221, 228, 229, 230, 237, 238, 239, 246, 247, 248, 255, 256, 257, 264, 265, 266, 273, 274, 275, 282, 283, 284, 291, 292, 293, 300, 301, 302, 309, 310, 311, 318, 319, 320, 327, 328, 329, 336, 337, 338, 345, 346, 347, 354, 355, 356, 363, 364, 365, 372, 373, 374, 381, 382, 383, 390, 391, 392, 399, 400, 401, 408, 409, 410, 417, 418, 419, 426, 427, 428, 435, 436, 437, 444, 445, 446, 453, 454, 455, 462, 463, 464, 471, 480, 489, 498, 507, 516]\n", - "[6, 9, 12, 15, 21, 39, 42, 45, 48, 51, 54, 57, 60, 63, 66, 69, 72, 75, 78, 81, 84, 129, 132, 135, 138, 141, 144]\n", - "CELL.MOLECLIST: doing block=[6, 9, 12, 15, 21, 39, 42, 45, 48, 51, 54, 57, 60, 63, 66, 69, 72, 75, 78, 81, 84, 129, 132, 135, 138, 141, 144]\n", - "[0, 1, 2, 9, 12, 13, 14, 21, 22, 23, 30, 31, 32, 39, 40, 41, 48, 49, 50, 57, 58, 59, 66, 67, 68, 75, 76, 77, 84, 85, 86, 93, 94, 95, 102, 111, 120, 129, 130, 131, 138, 139, 140, 147, 148, 149, 156, 157, 158, 165, 166, 167, 174, 175, 176, 183, 184, 185, 192, 193, 194, 201, 202, 203, 210, 211, 212, 219, 220, 221, 228, 229, 230, 237, 238, 239, 246, 247, 248, 255, 256, 257, 264, 265, 266, 273, 274, 275, 282, 283, 284, 291, 292, 293, 300, 301, 302, 309, 310, 311, 318, 319, 320, 327, 328, 329, 336, 337, 338, 345, 346, 347, 354, 355, 356, 363, 364, 365, 372, 373, 374, 381, 382, 383, 390, 391, 392, 399, 400, 401, 408, 409, 410, 417, 418, 419, 426, 427, 428, 435, 436, 437, 444, 445, 446, 453, 454, 455, 462, 463, 464, 471, 480, 489, 498, 507, 516]\n", - "[91, 94, 97]\n", - "CELL.MOLECLIST: doing block=[91, 94, 97]\n", - "[0, 1, 2, 9, 12, 13, 14, 21, 22, 23, 30, 31, 32, 39, 40, 41, 48, 49, 50, 57, 58, 59, 66, 67, 68, 75, 76, 77, 84, 85, 86, 93, 94, 95, 102, 111, 120, 129, 130, 131, 138, 139, 140, 147, 148, 149, 156, 157, 158, 165, 166, 167, 174, 175, 176, 183, 184, 185, 192, 193, 194, 201, 202, 203, 210, 211, 212, 219, 220, 221, 228, 229, 230, 237, 238, 239, 246, 247, 248, 255, 256, 257, 264, 265, 266, 273, 274, 275, 282, 283, 284, 291, 292, 293, 300, 301, 302, 309, 310, 311, 318, 319, 320, 327, 328, 329, 336, 337, 338, 345, 346, 347, 354, 355, 356, 363, 364, 365, 372, 373, 374, 381, 382, 383, 390, 391, 392, 399, 400, 401, 408, 409, 410, 417, 418, 419, 426, 427, 428, 435, 436, 437, 444, 445, 446, 453, 454, 455, 462, 463, 464, 471, 480, 489, 498, 507, 516]\n", - "[92, 95, 98]\n", - "CELL.MOLECLIST: doing block=[92, 95, 98]\n", - "[0, 1, 2, 9, 12, 13, 14, 21, 22, 23, 30, 31, 32, 39, 40, 41, 48, 49, 50, 57, 58, 59, 66, 67, 68, 75, 76, 77, 84, 85, 86, 93, 94, 95, 102, 111, 120, 129, 130, 131, 138, 139, 140, 147, 148, 149, 156, 157, 158, 165, 166, 167, 174, 175, 176, 183, 184, 185, 192, 193, 194, 201, 202, 203, 210, 211, 212, 219, 220, 221, 228, 229, 230, 237, 238, 239, 246, 247, 248, 255, 256, 257, 264, 265, 266, 273, 274, 275, 282, 283, 284, 291, 292, 293, 300, 301, 302, 309, 310, 311, 318, 319, 320, 327, 328, 329, 336, 337, 338, 345, 346, 347, 354, 355, 356, 363, 364, 365, 372, 373, 374, 381, 382, 383, 390, 391, 392, 399, 400, 401, 408, 409, 410, 417, 418, 419, 426, 427, 428, 435, 436, 437, 444, 445, 446, 453, 454, 455, 462, 463, 464, 471, 480, 489, 498, 507, 516]\n", - "[93, 96, 99]\n", - "CELL.MOLECLIST: doing block=[93, 96, 99]\n", - "[0, 1, 2, 9, 12, 13, 14, 21, 22, 23, 30, 31, 32, 39, 40, 41, 48, 49, 50, 57, 58, 59, 66, 67, 68, 75, 76, 77, 84, 85, 86, 93, 94, 95, 102, 111, 120, 129, 130, 131, 138, 139, 140, 147, 148, 149, 156, 157, 158, 165, 166, 167, 174, 175, 176, 183, 184, 185, 192, 193, 194, 201, 202, 203, 210, 211, 212, 219, 220, 221, 228, 229, 230, 237, 238, 239, 246, 247, 248, 255, 256, 257, 264, 265, 266, 273, 274, 275, 282, 283, 284, 291, 292, 293, 300, 301, 302, 309, 310, 311, 318, 319, 320, 327, 328, 329, 336, 337, 338, 345, 346, 347, 354, 355, 356, 363, 364, 365, 372, 373, 374, 381, 382, 383, 390, 391, 392, 399, 400, 401, 408, 409, 410, 417, 418, 419, 426, 427, 428, 435, 436, 437, 444, 445, 446, 453, 454, 455, 462, 463, 464, 471, 480, 489, 498, 507, 516]\n", - "[16, 100, 103]\n", - "CELL.MOLECLIST: doing block=[16, 100, 103]\n", - "[0, 1, 2, 9, 12, 13, 14, 21, 22, 23, 30, 31, 32, 39, 40, 41, 48, 49, 50, 57, 58, 59, 66, 67, 68, 75, 76, 77, 84, 85, 86, 93, 94, 95, 102, 111, 120, 129, 130, 131, 138, 139, 140, 147, 148, 149, 156, 157, 158, 165, 166, 167, 174, 175, 176, 183, 184, 185, 192, 193, 194, 201, 202, 203, 210, 211, 212, 219, 220, 221, 228, 229, 230, 237, 238, 239, 246, 247, 248, 255, 256, 257, 264, 265, 266, 273, 274, 275, 282, 283, 284, 291, 292, 293, 300, 301, 302, 309, 310, 311, 318, 319, 320, 327, 328, 329, 336, 337, 338, 345, 346, 347, 354, 355, 356, 363, 364, 365, 372, 373, 374, 381, 382, 383, 390, 391, 392, 399, 400, 401, 408, 409, 410, 417, 418, 419, 426, 427, 428, 435, 436, 437, 444, 445, 446, 453, 454, 455, 462, 463, 464, 471, 480, 489, 498, 507, 516]\n", - "[5, 8, 11, 14, 17, 20, 38, 41, 44, 47, 50, 53, 56, 59, 62, 65, 68, 71, 74, 77, 80, 83, 101, 104, 110, 113, 116, 119, 122, 125, 128, 131, 134, 137, 140, 143]\n", - "CELL.MOLECLIST: doing block=[5, 8, 11, 14, 17, 20, 38, 41, 44, 47, 50, 53, 56, 59, 62, 65, 68, 71, 74, 77, 80, 83, 101, 104, 110, 113, 116, 119, 122, 125, 128, 131, 134, 137, 140, 143]\n", - "[0, 1, 2, 9, 12, 13, 14, 21, 22, 23, 30, 31, 32, 39, 40, 41, 48, 49, 50, 57, 58, 59, 66, 67, 68, 75, 76, 77, 84, 85, 86, 93, 94, 95, 102, 111, 120, 129, 130, 131, 138, 139, 140, 147, 148, 149, 156, 157, 158, 165, 166, 167, 174, 175, 176, 183, 184, 185, 192, 193, 194, 201, 202, 203, 210, 211, 212, 219, 220, 221, 228, 229, 230, 237, 238, 239, 246, 247, 248, 255, 256, 257, 264, 265, 266, 273, 274, 275, 282, 283, 284, 291, 292, 293, 300, 301, 302, 309, 310, 311, 318, 319, 320, 327, 328, 329, 336, 337, 338, 345, 346, 347, 354, 355, 356, 363, 364, 365, 372, 373, 374, 381, 382, 383, 390, 391, 392, 399, 400, 401, 408, 409, 410, 417, 418, 419, 426, 427, 428, 435, 436, 437, 444, 445, 446, 453, 454, 455, 462, 463, 464, 471, 480, 489, 498, 507, 516]\n", - "[4, 7, 10, 13, 19, 37, 40, 43, 46, 49, 52, 55, 58, 61, 64, 67, 70, 73, 76, 79, 82, 127, 130, 133, 136, 139, 142]\n", - "CELL.MOLECLIST: doing block=[4, 7, 10, 13, 19, 37, 40, 43, 46, 49, 52, 55, 58, 61, 64, 67, 70, 73, 76, 79, 82, 127, 130, 133, 136, 139, 142]\n", - "[0, 1, 2, 9, 12, 13, 14, 21, 22, 23, 30, 31, 32, 39, 40, 41, 48, 49, 50, 57, 58, 59, 66, 67, 68, 75, 76, 77, 84, 85, 86, 93, 94, 95, 102, 111, 120, 129, 130, 131, 138, 139, 140, 147, 148, 149, 156, 157, 158, 165, 166, 167, 174, 175, 176, 183, 184, 185, 192, 193, 194, 201, 202, 203, 210, 211, 212, 219, 220, 221, 228, 229, 230, 237, 238, 239, 246, 247, 248, 255, 256, 257, 264, 265, 266, 273, 274, 275, 282, 283, 284, 291, 292, 293, 300, 301, 302, 309, 310, 311, 318, 319, 320, 327, 328, 329, 336, 337, 338, 345, 346, 347, 354, 355, 356, 363, 364, 365, 372, 373, 374, 381, 382, 383, 390, 391, 392, 399, 400, 401, 408, 409, 410, 417, 418, 419, 426, 427, 428, 435, 436, 437, 444, 445, 446, 453, 454, 455, 462, 463, 464, 471, 480, 489, 498, 507, 516]\n", - "[106]\n", - "CELL.MOLECLIST: doing block=[106]\n", - "[0, 1, 2, 9, 12, 13, 14, 21, 22, 23, 30, 31, 32, 39, 40, 41, 48, 49, 50, 57, 58, 59, 66, 67, 68, 75, 76, 77, 84, 85, 86, 93, 94, 95, 102, 111, 120, 129, 130, 131, 138, 139, 140, 147, 148, 149, 156, 157, 158, 165, 166, 167, 174, 175, 176, 183, 184, 185, 192, 193, 194, 201, 202, 203, 210, 211, 212, 219, 220, 221, 228, 229, 230, 237, 238, 239, 246, 247, 248, 255, 256, 257, 264, 265, 266, 273, 274, 275, 282, 283, 284, 291, 292, 293, 300, 301, 302, 309, 310, 311, 318, 319, 320, 327, 328, 329, 336, 337, 338, 345, 346, 347, 354, 355, 356, 363, 364, 365, 372, 373, 374, 381, 382, 383, 390, 391, 392, 399, 400, 401, 408, 409, 410, 417, 418, 419, 426, 427, 428, 435, 436, 437, 444, 445, 446, 453, 454, 455, 462, 463, 464, 471, 480, 489, 498, 507, 516]\n", - "[154]\n", - "CELL.MOLECLIST: doing block=[154]\n", - "[0, 1, 2, 9, 12, 13, 14, 21, 22, 23, 30, 31, 32, 39, 40, 41, 48, 49, 50, 57, 58, 59, 66, 67, 68, 75, 76, 77, 84, 85, 86, 93, 94, 95, 102, 111, 120, 129, 130, 131, 138, 139, 140, 147, 148, 149, 156, 157, 158, 165, 166, 167, 174, 175, 176, 183, 184, 185, 192, 193, 194, 201, 202, 203, 210, 211, 212, 219, 220, 221, 228, 229, 230, 237, 238, 239, 246, 247, 248, 255, 256, 257, 264, 265, 266, 273, 274, 275, 282, 283, 284, 291, 292, 293, 300, 301, 302, 309, 310, 311, 318, 319, 320, 327, 328, 329, 336, 337, 338, 345, 346, 347, 354, 355, 356, 363, 364, 365, 372, 373, 374, 381, 382, 383, 390, 391, 392, 399, 400, 401, 408, 409, 410, 417, 418, 419, 426, 427, 428, 435, 436, 437, 444, 445, 446, 453, 454, 455, 462, 463, 464, 471, 480, 489, 498, 507, 516]\n", - "[1]\n", - "CELL.MOLECLIST: doing block=[1]\n", - "[0, 1, 2, 9, 12, 13, 14, 21, 22, 23, 30, 31, 32, 39, 40, 41, 48, 49, 50, 57, 58, 59, 66, 67, 68, 75, 76, 77, 84, 85, 86, 93, 94, 95, 102, 111, 120, 129, 130, 131, 138, 139, 140, 147, 148, 149, 156, 157, 158, 165, 166, 167, 174, 175, 176, 183, 184, 185, 192, 193, 194, 201, 202, 203, 210, 211, 212, 219, 220, 221, 228, 229, 230, 237, 238, 239, 246, 247, 248, 255, 256, 257, 264, 265, 266, 273, 274, 275, 282, 283, 284, 291, 292, 293, 300, 301, 302, 309, 310, 311, 318, 319, 320, 327, 328, 329, 336, 337, 338, 345, 346, 347, 354, 355, 356, 363, 364, 365, 372, 373, 374, 381, 382, 383, 390, 391, 392, 399, 400, 401, 408, 409, 410, 417, 418, 419, 426, 427, 428, 435, 436, 437, 444, 445, 446, 453, 454, 455, 462, 463, 464, 471, 480, 489, 498, 507, 516]\n", - "[2]\n", - "CELL.MOLECLIST: doing block=[2]\n", - "[0, 1, 2, 9, 12, 13, 14, 21, 22, 23, 30, 31, 32, 39, 40, 41, 48, 49, 50, 57, 58, 59, 66, 67, 68, 75, 76, 77, 84, 85, 86, 93, 94, 95, 102, 111, 120, 129, 130, 131, 138, 139, 140, 147, 148, 149, 156, 157, 158, 165, 166, 167, 174, 175, 176, 183, 184, 185, 192, 193, 194, 201, 202, 203, 210, 211, 212, 219, 220, 221, 228, 229, 230, 237, 238, 239, 246, 247, 248, 255, 256, 257, 264, 265, 266, 273, 274, 275, 282, 283, 284, 291, 292, 293, 300, 301, 302, 309, 310, 311, 318, 319, 320, 327, 328, 329, 336, 337, 338, 345, 346, 347, 354, 355, 356, 363, 364, 365, 372, 373, 374, 381, 382, 383, 390, 391, 392, 399, 400, 401, 408, 409, 410, 417, 418, 419, 426, 427, 428, 435, 436, 437, 444, 445, 446, 453, 454, 455, 462, 463, 464, 471, 480, 489, 498, 507, 516]\n", - "[86]\n", - "CELL.MOLECLIST: doing block=[86]\n", - "[0, 1, 2, 9, 12, 13, 14, 21, 22, 23, 30, 31, 32, 39, 40, 41, 48, 49, 50, 57, 58, 59, 66, 67, 68, 75, 76, 77, 84, 85, 86, 93, 94, 95, 102, 111, 120, 129, 130, 131, 138, 139, 140, 147, 148, 149, 156, 157, 158, 165, 166, 167, 174, 175, 176, 183, 184, 185, 192, 193, 194, 201, 202, 203, 210, 211, 212, 219, 220, 221, 228, 229, 230, 237, 238, 239, 246, 247, 248, 255, 256, 257, 264, 265, 266, 273, 274, 275, 282, 283, 284, 291, 292, 293, 300, 301, 302, 309, 310, 311, 318, 319, 320, 327, 328, 329, 336, 337, 338, 345, 346, 347, 354, 355, 356, 363, 364, 365, 372, 373, 374, 381, 382, 383, 390, 391, 392, 399, 400, 401, 408, 409, 410, 417, 418, 419, 426, 427, 428, 435, 436, 437, 444, 445, 446, 453, 454, 455, 462, 463, 464, 471, 480, 489, 498, 507, 516]\n", - "[85]\n", - "CELL.MOLECLIST: doing block=[85]\n", - "[0, 1, 2, 9, 12, 13, 14, 21, 22, 23, 30, 31, 32, 39, 40, 41, 48, 49, 50, 57, 58, 59, 66, 67, 68, 75, 76, 77, 84, 85, 86, 93, 94, 95, 102, 111, 120, 129, 130, 131, 138, 139, 140, 147, 148, 149, 156, 157, 158, 165, 166, 167, 174, 175, 176, 183, 184, 185, 192, 193, 194, 201, 202, 203, 210, 211, 212, 219, 220, 221, 228, 229, 230, 237, 238, 239, 246, 247, 248, 255, 256, 257, 264, 265, 266, 273, 274, 275, 282, 283, 284, 291, 292, 293, 300, 301, 302, 309, 310, 311, 318, 319, 320, 327, 328, 329, 336, 337, 338, 345, 346, 347, 354, 355, 356, 363, 364, 365, 372, 373, 374, 381, 382, 383, 390, 391, 392, 399, 400, 401, 408, 409, 410, 417, 418, 419, 426, 427, 428, 435, 436, 437, 444, 445, 446, 453, 454, 455, 462, 463, 464, 471, 480, 489, 498, 507, 516]\n", - "[107]\n", - "CELL.MOLECLIST: doing block=[107]\n", - "[0, 1, 2, 9, 12, 13, 14, 21, 22, 23, 30, 31, 32, 39, 40, 41, 48, 49, 50, 57, 58, 59, 66, 67, 68, 75, 76, 77, 84, 85, 86, 93, 94, 95, 102, 111, 120, 129, 130, 131, 138, 139, 140, 147, 148, 149, 156, 157, 158, 165, 166, 167, 174, 175, 176, 183, 184, 185, 192, 193, 194, 201, 202, 203, 210, 211, 212, 219, 220, 221, 228, 229, 230, 237, 238, 239, 246, 247, 248, 255, 256, 257, 264, 265, 266, 273, 274, 275, 282, 283, 284, 291, 292, 293, 300, 301, 302, 309, 310, 311, 318, 319, 320, 327, 328, 329, 336, 337, 338, 345, 346, 347, 354, 355, 356, 363, 364, 365, 372, 373, 374, 381, 382, 383, 390, 391, 392, 399, 400, 401, 408, 409, 410, 417, 418, 419, 426, 427, 428, 435, 436, 437, 444, 445, 446, 453, 454, 455, 462, 463, 464, 471, 480, 489, 498, 507, 516]\n", - "[87]\n", - "CELL.MOLECLIST: doing block=[87]\n", - "[0, 1, 2, 9, 12, 13, 14, 21, 22, 23, 30, 31, 32, 39, 40, 41, 48, 49, 50, 57, 58, 59, 66, 67, 68, 75, 76, 77, 84, 85, 86, 93, 94, 95, 102, 111, 120, 129, 130, 131, 138, 139, 140, 147, 148, 149, 156, 157, 158, 165, 166, 167, 174, 175, 176, 183, 184, 185, 192, 193, 194, 201, 202, 203, 210, 211, 212, 219, 220, 221, 228, 229, 230, 237, 238, 239, 246, 247, 248, 255, 256, 257, 264, 265, 266, 273, 274, 275, 282, 283, 284, 291, 292, 293, 300, 301, 302, 309, 310, 311, 318, 319, 320, 327, 328, 329, 336, 337, 338, 345, 346, 347, 354, 355, 356, 363, 364, 365, 372, 373, 374, 381, 382, 383, 390, 391, 392, 399, 400, 401, 408, 409, 410, 417, 418, 419, 426, 427, 428, 435, 436, 437, 444, 445, 446, 453, 454, 455, 462, 463, 464, 471, 480, 489, 498, 507, 516]\n", - "[88]\n", - "CELL.MOLECLIST: doing block=[88]\n", - "[0, 1, 2, 9, 12, 13, 14, 21, 22, 23, 30, 31, 32, 39, 40, 41, 48, 49, 50, 57, 58, 59, 66, 67, 68, 75, 76, 77, 84, 85, 86, 93, 94, 95, 102, 111, 120, 129, 130, 131, 138, 139, 140, 147, 148, 149, 156, 157, 158, 165, 166, 167, 174, 175, 176, 183, 184, 185, 192, 193, 194, 201, 202, 203, 210, 211, 212, 219, 220, 221, 228, 229, 230, 237, 238, 239, 246, 247, 248, 255, 256, 257, 264, 265, 266, 273, 274, 275, 282, 283, 284, 291, 292, 293, 300, 301, 302, 309, 310, 311, 318, 319, 320, 327, 328, 329, 336, 337, 338, 345, 346, 347, 354, 355, 356, 363, 364, 365, 372, 373, 374, 381, 382, 383, 390, 391, 392, 399, 400, 401, 408, 409, 410, 417, 418, 419, 426, 427, 428, 435, 436, 437, 444, 445, 446, 453, 454, 455, 462, 463, 464, 471, 480, 489, 498, 507, 516]\n", - "[126]\n", - "CELL.MOLECLIST: doing block=[126]\n", - "[0, 1, 2, 9, 12, 13, 14, 21, 22, 23, 30, 31, 32, 39, 40, 41, 48, 49, 50, 57, 58, 59, 66, 67, 68, 75, 76, 77, 84, 85, 86, 93, 94, 95, 102, 111, 120, 129, 130, 131, 138, 139, 140, 147, 148, 149, 156, 157, 158, 165, 166, 167, 174, 175, 176, 183, 184, 185, 192, 193, 194, 201, 202, 203, 210, 211, 212, 219, 220, 221, 228, 229, 230, 237, 238, 239, 246, 247, 248, 255, 256, 257, 264, 265, 266, 273, 274, 275, 282, 283, 284, 291, 292, 293, 300, 301, 302, 309, 310, 311, 318, 319, 320, 327, 328, 329, 336, 337, 338, 345, 346, 347, 354, 355, 356, 363, 364, 365, 372, 373, 374, 381, 382, 383, 390, 391, 392, 399, 400, 401, 408, 409, 410, 417, 418, 419, 426, 427, 428, 435, 436, 437, 444, 445, 446, 453, 454, 455, 462, 463, 464, 471, 480, 489, 498, 507, 516]\n", - "[89]\n", - "CELL.MOLECLIST: doing block=[89]\n", - "[0, 1, 2, 9, 12, 13, 14, 21, 22, 23, 30, 31, 32, 39, 40, 41, 48, 49, 50, 57, 58, 59, 66, 67, 68, 75, 76, 77, 84, 85, 86, 93, 94, 95, 102, 111, 120, 129, 130, 131, 138, 139, 140, 147, 148, 149, 156, 157, 158, 165, 166, 167, 174, 175, 176, 183, 184, 185, 192, 193, 194, 201, 202, 203, 210, 211, 212, 219, 220, 221, 228, 229, 230, 237, 238, 239, 246, 247, 248, 255, 256, 257, 264, 265, 266, 273, 274, 275, 282, 283, 284, 291, 292, 293, 300, 301, 302, 309, 310, 311, 318, 319, 320, 327, 328, 329, 336, 337, 338, 345, 346, 347, 354, 355, 356, 363, 364, 365, 372, 373, 374, 381, 382, 383, 390, 391, 392, 399, 400, 401, 408, 409, 410, 417, 418, 419, 426, 427, 428, 435, 436, 437, 444, 445, 446, 453, 454, 455, 462, 463, 464, 471, 480, 489, 498, 507, 516]\n", - "[124]\n", - "CELL.MOLECLIST: doing block=[124]\n", - "[0, 1, 2, 9, 12, 13, 14, 21, 22, 23, 30, 31, 32, 39, 40, 41, 48, 49, 50, 57, 58, 59, 66, 67, 68, 75, 76, 77, 84, 85, 86, 93, 94, 95, 102, 111, 120, 129, 130, 131, 138, 139, 140, 147, 148, 149, 156, 157, 158, 165, 166, 167, 174, 175, 176, 183, 184, 185, 192, 193, 194, 201, 202, 203, 210, 211, 212, 219, 220, 221, 228, 229, 230, 237, 238, 239, 246, 247, 248, 255, 256, 257, 264, 265, 266, 273, 274, 275, 282, 283, 284, 291, 292, 293, 300, 301, 302, 309, 310, 311, 318, 319, 320, 327, 328, 329, 336, 337, 338, 345, 346, 347, 354, 355, 356, 363, 364, 365, 372, 373, 374, 381, 382, 383, 390, 391, 392, 399, 400, 401, 408, 409, 410, 417, 418, 419, 426, 427, 428, 435, 436, 437, 444, 445, 446, 453, 454, 455, 462, 463, 464, 471, 480, 489, 498, 507, 516]\n", - "[90]\n", - "CELL.MOLECLIST: doing block=[90]\n", - "[0, 1, 2, 9, 12, 13, 14, 21, 22, 23, 30, 31, 32, 39, 40, 41, 48, 49, 50, 57, 58, 59, 66, 67, 68, 75, 76, 77, 84, 85, 86, 93, 94, 95, 102, 111, 120, 129, 130, 131, 138, 139, 140, 147, 148, 149, 156, 157, 158, 165, 166, 167, 174, 175, 176, 183, 184, 185, 192, 193, 194, 201, 202, 203, 210, 211, 212, 219, 220, 221, 228, 229, 230, 237, 238, 239, 246, 247, 248, 255, 256, 257, 264, 265, 266, 273, 274, 275, 282, 283, 284, 291, 292, 293, 300, 301, 302, 309, 310, 311, 318, 319, 320, 327, 328, 329, 336, 337, 338, 345, 346, 347, 354, 355, 356, 363, 364, 365, 372, 373, 374, 381, 382, 383, 390, 391, 392, 399, 400, 401, 408, 409, 410, 417, 418, 419, 426, 427, 428, 435, 436, 437, 444, 445, 446, 453, 454, 455, 462, 463, 464, 471, 480, 489, 498, 507, 516]\n", - "[108]\n", - "CELL.MOLECLIST: doing block=[108]\n", - "[0, 1, 2, 9, 12, 13, 14, 21, 22, 23, 30, 31, 32, 39, 40, 41, 48, 49, 50, 57, 58, 59, 66, 67, 68, 75, 76, 77, 84, 85, 86, 93, 94, 95, 102, 111, 120, 129, 130, 131, 138, 139, 140, 147, 148, 149, 156, 157, 158, 165, 166, 167, 174, 175, 176, 183, 184, 185, 192, 193, 194, 201, 202, 203, 210, 211, 212, 219, 220, 221, 228, 229, 230, 237, 238, 239, 246, 247, 248, 255, 256, 257, 264, 265, 266, 273, 274, 275, 282, 283, 284, 291, 292, 293, 300, 301, 302, 309, 310, 311, 318, 319, 320, 327, 328, 329, 336, 337, 338, 345, 346, 347, 354, 355, 356, 363, 364, 365, 372, 373, 374, 381, 382, 383, 390, 391, 392, 399, 400, 401, 408, 409, 410, 417, 418, 419, 426, 427, 428, 435, 436, 437, 444, 445, 446, 453, 454, 455, 462, 463, 464, 471, 480, 489, 498, 507, 516]\n", - "[0]\n", - "CELL.MOLECLIST: doing block=[0]\n" - ] - } - ], - "source": [ - "debug =2\n", - "fragments = []\n", - "for b in blocklist:\n", - " print(updated)\n", - " print(b)\n", - " if debug > 0: print(f\"CELL.MOLECLIST: doing block={b}\")\n", - " mol_labels = extract_from_list(b, updated_labels, dimension=1)\n", - " mol_coord = extract_from_list(b, updated_coord, dimension=1)\n", - " mol_indices = extract_from_list(b, updated, dimension=1)\n", - " mol_frac_coord = extract_from_list(b, updated_fracs, dimension=1)\n", - " # Creates Molecule Object\n", - " newmolec = molecule(mol_labels, mol_coord)\n", - " # For debugging\n", - " newmolec.origin = \"cell.get_moleclist\"\n", - " # Adds cell as parent of the molecule, with indices b\n", - " newmolec.add_parent(newcell, indices=mol_indices) \n", - " newmolec.set_adjacency_parameters(cov_factor=1.3, metal_factor=1.0)\n", - " # Creates The atom objects with adjacencies\n", - " newmolec.set_atoms(create_adjacencies=True, debug=debug)\n", - " newmolec.set_fractional_coord(mol_frac_coord, debug=debug)\n", - " fragments.append(newmolec)" - ] - }, - { - "cell_type": "code", - "execution_count": 536, - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "data": { - "text/plain": [ - "[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 10\n", - " Formula = C3-O6-Fe\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = C-O2\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = C-O2\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = C-O2\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 5\n", - " Formula = H3-C2\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H-C-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 2\n", - " Formula = H-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 5\n", - " Formula = H3-C2\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 27\n", - " Formula = H14-C8-O5\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-C\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-C\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-C\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H-C-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 36\n", - " Formula = H19-C11-O6\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 27\n", - " Formula = H14-C8-O5\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = H\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = H\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = K\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = K\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = H\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = H\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = H\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = H\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = H\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = H\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = H\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = H\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = H\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = H\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = K\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " ---------------------------------------------------]" - ] - }, - "execution_count": 536, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "fragments" - ] - }, - { - "cell_type": "code", - "execution_count": 538, - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "C3-O6-Fe [9, 66, 67, 68, 75, 76, 77, 453, 454, 455] [array([0.6667, 0.3333, 0.9638]), array([0.84884, 0.40648, 0.8643 ]), array([0.59352, 0.44236, 0.8643 ]), array([0.55764, 0.15116, 0.8643 ]), array([0.74737, 0.37844, 0.85468]), array([0.62156, 0.36893, 0.85468]), array([0.63107, 0.25263, 0.85468]), array([0.79509, 0.37857, 0.91 ]), array([0.62143, 0.41652, 0.91 ]), array([0.58348, 0.20491, 0.91 ])]\n", - "C6-O12-Fe False\n", - "H24-C12-O6 False\n", - "H2-O False\n", - "H2-O False\n", - "H2-O False\n", - "H24-C12-O6 False\n", - "H24-C12-O6 False\n", - "K False\n", - "K False\n", - "K False\n", - "C-O2 [84, 93, 462] [array([0.72235, 0.31431, 0.08222]), array([0.82236, 0.33812, 0.1071 ]), array([0.78019, 0.34031, 0.0458 ])]\n", - "C6-O12-Fe False\n", - "H24-C12-O6 False\n", - "H2-O False\n", - "H2-O False\n", - "H2-O False\n", - "H24-C12-O6 False\n", - "H24-C12-O6 False\n", - "K False\n", - "K False\n", - "K False\n", - "C-O2 [85, 94, 463] [array([0.68569, 0.40804, 0.08222]), array([0.66188, 0.48424, 0.1071 ]), array([0.65969, 0.43988, 0.0458 ])]\n", - "C6-O12-Fe False\n", - "H24-C12-O6 False\n", - "H2-O False\n", - "H2-O False\n", - "H2-O False\n", - "H24-C12-O6 False\n", - "H24-C12-O6 False\n", - "K False\n", - "K False\n", - "K False\n", - "C-O2 [86, 95, 464] [array([0.59196, 0.27765, 0.08222]), array([0.51576, 0.17764, 0.1071 ]), array([0.56012, 0.21981, 0.0458 ])]\n", - "C6-O12-Fe False\n", - "H24-C12-O6 False\n", - "H2-O False\n", - "H2-O False\n", - "H2-O False\n", - "H24-C12-O6 False\n", - "H24-C12-O6 False\n", - "K False\n", - "K False\n", - "K False\n", - "H3-C2 [347, 356, 365, 374, 383] [array([0.54763, 0.97871, 0.7706 ]), array([0.5199, 0.9485, 0.8387]), array([0.5674, 0.9593, 0.7187]), array([0.51065, 0.99531, 0.6783 ]), array([0.4758, 0.9571, 0.6398])]\n", - "C6-O12-Fe False\n", - "H24-C12-O6 False\n", - "H2-O False\n", - "H2-O False\n", - "H2-O False\n", - "H24-C12-O6 False\n", - "H24-C12-O6 False\n", - "K False\n", - "K False\n", - "K False\n", - "H-C-O [50, 320, 329] [array([0.59451, 0.0339 , 0.8361 ]), array([0.62323, 0.0228 , 0.9488 ]), array([0.6481, 0.004 , 0.9184])]\n", - "C6-O12-Fe False\n", - "H24-C12-O6 False\n", - "H2-O False\n", - "H2-O False\n", - "H2-O False\n", - "H24-C12-O6 False\n", - "H24-C12-O6 False\n", - "K False\n", - "K False\n", - "K False\n", - "H-O [102, 471] [array([0.96073, 0.41262, 0.9709 ]), array([0.9259, 0.411 , 0.945 ])]\n", - "C6-O12-Fe False\n", - "H24-C12-O6 False\n", - "H2-O False\n", - "H2-O False\n", - "H2-O False\n", - "H24-C12-O6 False\n", - "H24-C12-O6 False\n", - "K False\n", - "K False\n", - "K False\n", - "H2-O [120, 489, 516] [array([0.91917, 0.32407, 0.2061 ]), array([0.8794, 0.316 , 0.195 ]), array([0.917, 0.322, 0.297])]\n", - "C6-O12-Fe False\n", - "H24-C12-O6 False\n", - "H2-O True\n", - "H2-O True\n", - "H2-O True\n", - "H24-C12-O6 False\n", - "H24-C12-O6 False\n", - "K False\n", - "K False\n", - "K False\n", - "H3-C2 [345, 354, 363, 372, 381] [array([0.02129, 0.56892, 0.7706 ]), array([0.0515, 0.5714, 0.8387]), array([0.0407, 0.6081, 0.7187]), array([0.00469, 0.51534, 0.6783 ]), array([0.0429, 0.5187, 0.6398])]\n", - "C6-O12-Fe False\n", - "H24-C12-O6 False\n", - "H2-O False\n", - "H2-O False\n", - "H2-O False\n", - "H24-C12-O6 False\n", - "H24-C12-O6 False\n", - "K False\n", - "K False\n", - "K False\n", - "H2-O [111, 480, 507] [array([0.68302, 0.6317 , 0.4667 ]), array([0.7016, 0.671 , 0.435 ]), array([0.6549, 0.6439, 0.48 ])]\n", - "C6-O12-Fe False\n", - "H24-C12-O6 False\n", - "H2-O True\n", - "H2-O True\n", - "H2-O True\n", - "H24-C12-O6 False\n", - "H24-C12-O6 False\n", - "K False\n", - "K False\n", - "K False\n", - "H14-C8-O5 [14, 23, 32, 41, 59, 131, 140, 149, 158, 167, 176, 185, 194, 203, 212, 221, 230, 239, 248, 257, 266, 401, 410, 419, 428, 437, 446] [array([0.61167, 0.15436, 0.43407]), array([0.7358 , 0.24129, 0.50598]), array([0.77483, 0.23954, 0.77498]), array([0.71239, 0.12444, 0.92401]), array([0.55044, 0.03519, 0.5698 ]), array([0.6557 , 0.19761, 0.338 ]), array([0.6335, 0.2073, 0.2681]), array([0.678 , 0.1788, 0.2935]), array([0.70153, 0.25641, 0.4096 ]), array([0.7305, 0.2872, 0.3439]), array([0.6793, 0.2746, 0.4566]), array([0.78404, 0.29601, 0.5726 ]), array([0.7654, 0.3176, 0.6207]), array([0.8137, 0.3249, 0.5052]), array([0.81768, 0.27688, 0.6713 ]), array([0.8339, 0.2528, 0.6245]), array([0.8532, 0.3142, 0.7114]), array([0.80395, 0.22274, 0.8796 ]), array([0.8378, 0.2606, 0.9221]), array([0.822 , 0.1985, 0.8412]), array([0.75522, 0.18439, 0.9825 ]), array([0.51905, 0.05724, 0.4835 ]), array([0.5048, 0.0814, 0.5368]), array([0.4821, 0.0215, 0.4428]), array([0.56277, 0.09771, 0.3738 ]), array([0.581 , 0.0753, 0.3274]), array([0.5398, 0.1079, 0.3067])]\n", - "C6-O12-Fe False\n", - "H24-C12-O6 False\n", - "H2-O False\n", - "H2-O False\n", - "H2-O False\n", - "H24-C12-O6 False\n", - "H24-C12-O6 False\n", - "K False\n", - "K False\n", - "K False\n", - "H2-C [291, 300, 309] [array([0.91569, 0.58064, 0.0182 ]), array([0.8964, 0.5368, 0.0471]), array([0.9224, 0.6067, 0.0987])]\n", - "C6-O12-Fe False\n", - "H24-C12-O6 False\n", - "H2-O False\n", - "H2-O False\n", - "H2-O False\n", - "H24-C12-O6 False\n", - "H24-C12-O6 False\n", - "K False\n", - "K False\n", - "K False\n", - "H2-C [292, 301, 310] [array([0.41936, 0.33505, 0.0182 ]), array([0.4632, 0.3596, 0.0471]), array([0.3933, 0.3157, 0.0987])]\n", - "C6-O12-Fe False\n", - "H24-C12-O6 False\n", - "H2-O False\n", - "H2-O False\n", - "H2-O False\n", - "H24-C12-O6 False\n", - "H24-C12-O6 False\n", - "K False\n", - "K False\n", - "K False\n", - "H2-C [293, 302, 311] [array([0.66495, 0.08431, 0.0182 ]), array([0.6404, 0.1036, 0.0471]), array([0.6843, 0.0776, 0.0987])]\n", - "C6-O12-Fe False\n", - "H24-C12-O6 False\n", - "H2-O False\n", - "H2-O False\n", - "H2-O False\n", - "H24-C12-O6 False\n", - "H24-C12-O6 False\n", - "K False\n", - "K False\n", - "K False\n", - "H-C-O [48, 318, 327] [array([0.9661 , 0.56061, 0.8361 ]), array([0.9772 , 0.60043, 0.9488 ]), array([0.996 , 0.6441, 0.9184])]\n", - "C6-O12-Fe False\n", - "H24-C12-O6 False\n", - "H2-O False\n", - "H2-O False\n", - "H2-O False\n", - "H24-C12-O6 False\n", - "H24-C12-O6 False\n", - "K False\n", - "K False\n", - "K False\n", - "H19-C11-O6 [13, 22, 31, 40, 49, 58, 130, 139, 148, 157, 166, 175, 184, 193, 202, 211, 220, 229, 238, 247, 256, 265, 319, 328, 346, 355, 364, 373, 382, 391, 400, 409, 418, 427, 436, 445] [array([0.54269, 0.38833, 0.43407]), array([0.50549, 0.2642 , 0.50598]), array([0.46471, 0.22517, 0.77498]), array([0.41205, 0.28761, 0.92401]), array([0.43939, 0.40549, 0.8361 ]), array([0.48475, 0.44956, 0.5698 ]), array([0.54191, 0.3443 , 0.338 ]), array([0.5738, 0.3665, 0.2681]), array([0.5008, 0.322 , 0.2935]), array([0.55488, 0.29847, 0.4096 ]), array([0.5567, 0.2695, 0.3439]), array([0.5953, 0.3207, 0.4566]), array([0.51197, 0.21596, 0.5726 ]), array([0.5522, 0.2346, 0.6207]), array([0.5112, 0.1863, 0.5052]), array([0.4592 , 0.18232, 0.6713 ]), array([0.4189, 0.1661, 0.6245]), array([0.461 , 0.1468, 0.7114]), array([0.41879, 0.19605, 0.8796 ]), array([0.4228, 0.1622, 0.9221]), array([0.3765, 0.178 , 0.8412]), array([0.42917, 0.24478, 0.9825 ]), array([0.39957, 0.37677, 0.9488 ]), array([0.3559, 0.3519, 0.9184]), array([0.43108, 0.45237, 0.7706 ]), array([0.4286, 0.4801, 0.8387]), array([0.3919, 0.4326, 0.7187]), array([0.48466, 0.48935, 0.6783 ]), array([0.4813, 0.5242, 0.6398]), array([0.5241, 0.5068, 0.7292]), array([0.53819, 0.48095, 0.4835 ]), array([0.5766, 0.4952, 0.5368]), array([0.5394, 0.5179, 0.4428]), array([0.53494, 0.43723, 0.3738 ]), array([0.4943, 0.419 , 0.3274]), array([0.5681, 0.4602, 0.3067])]\n", - "C6-O12-Fe False\n", - "H24-C12-O6 False\n", - "H2-O False\n", - "H2-O False\n", - "H2-O False\n", - "H24-C12-O6 False\n", - "H24-C12-O6 False\n", - "K False\n", - "K False\n", - "K False\n", - "H14-C8-O5 [12, 21, 30, 39, 57, 129, 138, 147, 156, 165, 174, 183, 192, 201, 210, 219, 228, 237, 246, 255, 264, 399, 408, 417, 426, 435, 444] [array([0.84564, 0.45731, 0.43407]), array([0.75871, 0.49451, 0.50598]), array([0.76046, 0.53529, 0.77498]), array([0.87556, 0.58795, 0.92401]), array([0.96481, 0.51525, 0.5698 ]), array([0.80239, 0.45809, 0.338 ]), array([0.7927, 0.4262, 0.2681]), array([0.8212, 0.4992, 0.2935]), array([0.74359, 0.44512, 0.4096 ]), array([0.7128, 0.4433, 0.3439]), array([0.7254, 0.4047, 0.4566]), array([0.70399, 0.48803, 0.5726 ]), array([0.6824, 0.4478, 0.6207]), array([0.6751, 0.4888, 0.5052]), array([0.72312, 0.5408 , 0.6713 ]), array([0.7472, 0.5811, 0.6245]), array([0.6858, 0.539 , 0.7114]), array([0.77726, 0.58121, 0.8796 ]), array([0.7394, 0.5772, 0.9221]), array([0.8015, 0.6235, 0.8412]), array([0.81561, 0.57083, 0.9825 ]), array([0.94276, 0.46181, 0.4835 ]), array([0.9186, 0.4234, 0.5368]), array([0.9785, 0.4606, 0.4428]), array([0.90229, 0.46506, 0.3738 ]), array([0.9247, 0.5057, 0.3274]), array([0.8921, 0.4319, 0.3067])]\n", - "C6-O12-Fe False\n", - "H24-C12-O6 False\n", - "H2-O False\n", - "H2-O False\n", - "H2-O False\n", - "H24-C12-O6 False\n", - "H24-C12-O6 False\n", - "K False\n", - "K False\n", - "K False\n", - "H [336] [array([0.0063, 0.5974, 0.0121])]\n", - "C6-O12-Fe False\n", - "H24-C12-O6 False\n", - "H2-O False\n", - "H2-O False\n", - "H2-O False\n", - "H24-C12-O6 False\n", - "H24-C12-O6 False\n", - "K False\n", - "K False\n", - "K False\n", - "H [498] [array([0.9563, 0.3911, 0.044 ])]\n", - "C6-O12-Fe False\n", - "H24-C12-O6 False\n", - "H2-O False\n", - "H2-O False\n", - "H2-O False\n", - "H24-C12-O6 False\n", - "H24-C12-O6 False\n", - "K False\n", - "K False\n", - "K False\n", - "K [1] [array([0.50285, 0.34998, 0.70169])]\n", - "C6-O12-Fe False\n", - "H24-C12-O6 False\n", - "H2-O False\n", - "H2-O False\n", - "H2-O False\n", - "H24-C12-O6 False\n", - "H24-C12-O6 False\n", - "K True\n", - "K True\n", - "K True\n", - "K [2] [array([0.65002, 0.15287, 0.70169])]\n", - "C6-O12-Fe False\n", - "H24-C12-O6 False\n", - "H2-O False\n", - "H2-O False\n", - "H2-O False\n", - "H24-C12-O6 False\n", - "H24-C12-O6 False\n", - "K True\n", - "K True\n", - "K True\n", - "H [274] [array([0.4036, 0.2249, 0.0632])]\n", - "C6-O12-Fe False\n", - "H24-C12-O6 False\n", - "H2-O False\n", - "H2-O False\n", - "H2-O False\n", - "H24-C12-O6 False\n", - "H24-C12-O6 False\n", - "K False\n", - "K False\n", - "K False\n", - "H [273] [array([0.8213, 0.5964, 0.0632])]\n", - "C6-O12-Fe False\n", - "H24-C12-O6 False\n", - "H2-O False\n", - "H2-O False\n", - "H2-O False\n", - "H24-C12-O6 False\n", - "H24-C12-O6 False\n", - "K False\n", - "K False\n", - "K False\n", - "H [337] [array([0.4026, 0.4089, 0.0121])]\n", - "C6-O12-Fe False\n", - "H24-C12-O6 False\n", - "H2-O False\n", - "H2-O False\n", - "H2-O False\n", - "H24-C12-O6 False\n", - "H24-C12-O6 False\n", - "K False\n", - "K False\n", - "K False\n", - "H [275] [array([0.7751, 0.1787, 0.0632])]\n", - "C6-O12-Fe False\n", - "H24-C12-O6 False\n", - "H2-O False\n", - "H2-O False\n", - "H2-O False\n", - "H24-C12-O6 False\n", - "H24-C12-O6 False\n", - "K False\n", - "K False\n", - "K False\n", - "H [282] [array([0.7941, 0.5267, 0.0099])]\n", - "C6-O12-Fe False\n", - "H24-C12-O6 False\n", - "H2-O False\n", - "H2-O False\n", - "H2-O False\n", - "H24-C12-O6 False\n", - "H24-C12-O6 False\n", - "K False\n", - "K False\n", - "K False\n", - "H [392] [array([0.4932, 0.0173, 0.7292])]\n", - "C6-O12-Fe False\n", - "H24-C12-O6 False\n", - "H2-O False\n", - "H2-O False\n", - "H2-O False\n", - "H24-C12-O6 False\n", - "H24-C12-O6 False\n", - "K False\n", - "K False\n", - "K False\n", - "H [283] [array([0.4733, 0.2674, 0.0099])]\n", - "C6-O12-Fe False\n", - "H24-C12-O6 False\n", - "H2-O False\n", - "H2-O False\n", - "H2-O False\n", - "H24-C12-O6 False\n", - "H24-C12-O6 False\n", - "K False\n", - "K False\n", - "K False\n", - "H [390] [array([0.9827, 0.4759, 0.7292])]\n", - "C6-O12-Fe False\n", - "H24-C12-O6 False\n", - "H2-O False\n", - "H2-O False\n", - "H2-O False\n", - "H24-C12-O6 False\n", - "H24-C12-O6 False\n", - "K False\n", - "K False\n", - "K False\n", - "H [284] [array([0.7326, 0.2059, 0.0099])]\n", - "C6-O12-Fe False\n", - "H24-C12-O6 False\n", - "H2-O False\n", - "H2-O False\n", - "H2-O False\n", - "H24-C12-O6 False\n", - "H24-C12-O6 False\n", - "K False\n", - "K False\n", - "K False\n", - "H [338] [array([0.5911, 0.9937, 0.0121])]\n", - "C6-O12-Fe False\n", - "H24-C12-O6 False\n", - "H2-O False\n", - "H2-O False\n", - "H2-O False\n", - "H24-C12-O6 False\n", - "H24-C12-O6 False\n", - "K False\n", - "K False\n", - "K False\n", - "K [0] [array([0.84713, 0.49715, 0.70169])]\n", - "C6-O12-Fe False\n", - "H24-C12-O6 False\n", - "H2-O False\n", - "H2-O False\n", - "H2-O False\n", - "H24-C12-O6 False\n", - "H24-C12-O6 False\n", - "K True\n", - "K True\n", - "K True\n" - ] - } - ], - "source": [ - "from cell2mol.connectivity import compare_species\n", - "for frag in fragments:\n", - " print(frag.formula, frag.get_parent_indices(\"cell\"), frag.frac_coord)\n", - " found = False\n", - " for idx, ref in enumerate(newcell.refmoleclist):\n", - " print(ref.formula, compare_species(frag, ref))" - ] - }, - { - "cell_type": "code", - "execution_count": 539, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 10\n", - " Formula = C3-O6-Fe\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = C-O2\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = C-O2\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = C-O2\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 5\n", - " Formula = H3-C2\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H-C-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 2\n", - " Formula = H-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 5\n", - " Formula = H3-C2\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 27\n", - " Formula = H14-C8-O5\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-C\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-C\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-C\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H-C-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 36\n", - " Formula = H19-C11-O6\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 27\n", - " Formula = H14-C8-O5\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = H\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = H\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = K\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = K\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = H\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = H\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = H\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = H\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = H\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = H\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = H\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = H\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = H\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = H\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = K\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " ---------------------------------------------------]" - ] - }, - "execution_count": 539, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "fragments" - ] - }, - { - "cell_type": "code", - "execution_count": 540, - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "C3-O6-Fe [9, 66, 67, 68, 75, 76, 77, 453, 454, 455]\n", - "C-O2 [84, 93, 462]\n", - "C-O2 [85, 94, 463]\n", - "C-O2 [86, 95, 464]\n", - "H3-C2 [347, 356, 365, 374, 383]\n", - "H-C-O [50, 320, 329]\n", - "H-O [102, 471]\n", - "H2-O [120, 489, 516]\n", - "H2-O matches with H2-O\n", - "H3-C2 [345, 354, 363, 372, 381]\n", - "H2-O [111, 480, 507]\n", - "H2-O matches with H2-O\n", - "H14-C8-O5 [14, 23, 32, 41, 59, 131, 140, 149, 158, 167, 176, 185, 194, 203, 212, 221, 230, 239, 248, 257, 266, 401, 410, 419, 428, 437, 446]\n", - "H2-C [291, 300, 309]\n", - "H2-C [292, 301, 310]\n", - "H2-C [293, 302, 311]\n", - "H-C-O [48, 318, 327]\n", - "H19-C11-O6 [13, 22, 31, 40, 49, 58, 130, 139, 148, 157, 166, 175, 184, 193, 202, 211, 220, 229, 238, 247, 256, 265, 319, 328, 346, 355, 364, 373, 382, 391, 400, 409, 418, 427, 436, 445]\n", - "H14-C8-O5 [12, 21, 30, 39, 57, 129, 138, 147, 156, 165, 174, 183, 192, 201, 210, 219, 228, 237, 246, 255, 264, 399, 408, 417, 426, 435, 444]\n", - "H [336]\n", - "H [498]\n", - "K [1]\n", - "K matches with K\n", - "K [2]\n", - "K matches with K\n", - "H [274]\n", - "H [273]\n", - "H [337]\n", - "H [275]\n", - "H [282]\n", - "H [392]\n", - "H [283]\n", - "H [390]\n", - "H [284]\n", - "H [338]\n", - "K [0]\n", - "K matches with K\n" - ] - } - ], - "source": [ - "molecules = []\n", - "filtered_fragments = []\n", - "hydrogens = []\n", - "# found_list = []\n", - "for frag in fragments:\n", - " print(frag.formula, frag.get_parent_indices(\"cell\"))\n", - " # print(frag.formula, frag.get_parent_indices(\"cell\"), frag.frac_coord)\n", - " found = False\n", - " for idx, specie in enumerate(unique_species):\n", - " issame = compare_species(frag, specie, debug=0)\n", - " if issame :\n", - " print(frag.formula, \"matches with\", specie.formula)\n", - " found = True\n", - " molecules.append(frag)\n", - " if found == False:\n", - " if frag.natoms == 1 and frag.labels == [\"H\"] :\n", - " hydrogens.append(frag)\n", - " else :\n", - " filtered_fragments.append(frag)" - ] - }, - { - "cell_type": "code", - "execution_count": 541, - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[6, 1, 2, 3, 5, 9, 10, 11, 12, 4, 7, 0, 8, 14, 13]\n", - "[(2, 'H-O'), (3, 'C-O2'), (3, 'C-O2'), (3, 'C-O2'), (3, 'H-C-O'), (3, 'H2-C'), (3, 'H2-C'), (3, 'H2-C'), (3, 'H-C-O'), (5, 'H3-C2'), (5, 'H3-C2'), (10, 'C3-O6-Fe'), (27, 'H14-C8-O5'), (27, 'H14-C8-O5'), (36, 'H19-C11-O6')]\n" - ] - } - ], - "source": [ - "def custom_sort_key(item):\n", - " index, (x, chemical) = item\n", - " return (x, -1 if \"H-O\" in chemical else 1, index) # Adjusted for \"H-O\" as requested\n", - "\n", - "data = [(frag.natoms, frag.formula) for frag in filtered_fragments]\n", - "# Enumerate the list and sort\n", - "sorted_data = sorted(enumerate(data), key=custom_sort_key)\n", - "original_indices = [original_index for original_index, (x, chemical) in sorted_data]\n", - "sorted_filtered_fragments = [(x, chemical) for original_index, (x, chemical) in sorted_data]\n", - "print(original_indices)\n", - "print(sorted_filtered_fragments)\n", - "sorted_fragments = [filtered_fragments[i] for i in original_indices]" - ] - }, - { - "cell_type": "code", - "execution_count": 542, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = K\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = K\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = K\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " ---------------------------------------------------]" - ] - }, - "execution_count": 542, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "molecules" - ] - }, - { - "cell_type": "code", - "execution_count": 543, - "metadata": {}, - "outputs": [], - "source": [ - "all_fragments = sorted_fragments+hydrogens" - ] - }, - { - "cell_type": "code", - "execution_count": 544, - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "CLASSIFY_FRAGMENTS, preparing block\n", - "H-O\n", - "CLASSIFY_FRAGMENTS, preparing block\n", - "C-O2\n", - "CLASSIFY_FRAGMENTS, preparing block\n", - "C-O2\n", - "CLASSIFY_FRAGMENTS, preparing block\n", - "C-O2\n", - "CLASSIFY_FRAGMENTS, preparing block\n", - "H-C-O\n", - "CLASSIFY_FRAGMENTS, preparing block\n", - "H2-C\n", - "CLASSIFY_FRAGMENTS, preparing block\n", - "H2-C\n", - "CLASSIFY_FRAGMENTS, preparing block\n", - "H2-C\n", - "CLASSIFY_FRAGMENTS, preparing block\n", - "H-C-O\n", - "CLASSIFY_FRAGMENTS, preparing block\n", - "H3-C2\n", - "CLASSIFY_FRAGMENTS, preparing block\n", - "H3-C2\n", - "CLASSIFY_FRAGMENTS, preparing block\n", - "C3-O6-Fe\n", - "CLASSIFY_FRAGMENTS, preparing block\n", - "H14-C8-O5\n", - "CLASSIFY_FRAGMENTS, preparing block\n", - "H14-C8-O5\n", - "CLASSIFY_FRAGMENTS, preparing block\n", - "H19-C11-O6\n", - "CLASSIFY_FRAGMENTS, preparing block\n", - "H\n", - "CLASSIFY_FRAGMENTS, preparing block\n", - "H\n", - "CLASSIFY_FRAGMENTS, preparing block\n", - "H\n", - "CLASSIFY_FRAGMENTS, preparing block\n", - "H\n", - "CLASSIFY_FRAGMENTS, preparing block\n", - "H\n", - "CLASSIFY_FRAGMENTS, preparing block\n", - "H\n", - "CLASSIFY_FRAGMENTS, preparing block\n", - "H\n", - "CLASSIFY_FRAGMENTS, preparing block\n", - "H\n", - "CLASSIFY_FRAGMENTS, preparing block\n", - "H\n", - "CLASSIFY_FRAGMENTS, preparing block\n", - "H\n", - "CLASSIFY_FRAGMENTS, preparing block\n", - "H\n", - "CLASSIFY_FRAGMENTS, preparing block\n", - "H\n", - "CLASSIFY_FRAGMENTS, preparing reference\n", - "C6-O12-Fe\n", - "CLASSIFY_FRAGMENTS, preparing reference\n", - "H24-C12-O6\n", - "CLASSIFY_FRAGMENTS, preparing reference\n", - "H2-O\n", - "CLASSIFY_FRAGMENTS, preparing reference\n", - "K\n" - ] - } - ], - "source": [ - "## Prepares Blocks\n", - "for b in all_fragments:\n", - " if debug >= 2: print(f\"CLASSIFY_FRAGMENTS, preparing block\\n{b.formula}\")\n", - " if not hasattr(b,\"centroid\"): b.get_centroid()\n", - " if not hasattr(b,\"element_count\"): b.set_element_count()\n", - " if not hasattr(b,\"numH\"): b.numH = b.set_element_count()[4] + b.set_element_count()[3] #\"Hidrogen + Deuterium atoms\"\n", - "## Prepares Reference Molecules\n", - "for ref in unique_species:\n", - " if debug >= 2: print(f\"CLASSIFY_FRAGMENTS, preparing reference\\n{ref.formula}\")\n", - " if not hasattr(ref,\"element_count\"): ref.set_element_count()\n", - " if not hasattr(ref,\"numH\"): ref.numH = ref.set_element_count()[4] + ref.set_element_count()[3] #\"Hidrogen + Deuterium atoms\"\n" - ] - }, - { - "cell_type": "code", - "execution_count": 524, - "metadata": {}, - "outputs": [], - "source": [ - "from cell2mol.hungarian import reorder" - ] - }, - { - "cell_type": "code", - "execution_count": 547, - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "data": { - "text/plain": [ - "[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " ---------------------------------------------------]" - ] - }, - "execution_count": 547, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "finalmols" - ] - }, - { - "cell_type": "code", - "execution_count": 556, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 2\n", - " Formula = H-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 3\n", - " Formula = C-O2\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 3\n", - " Formula = C-O2\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 3\n", - " Formula = C-O2\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 3\n", - " Formula = H-C-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 3\n", - " Formula = H2-C\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 3\n", - " Formula = H2-C\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 3\n", - " Formula = H2-C\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 3\n", - " Formula = H-C-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 5\n", - " Formula = H3-C2\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 5\n", - " Formula = H3-C2\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 10\n", - " Formula = C3-O6-Fe\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 27\n", - " Formula = H14-C8-O5\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 27\n", - " Formula = H14-C8-O5\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 36\n", - " Formula = H19-C11-O6\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = H\n", - " Number of Atoms = 1\n", - " Formula = H\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = H\n", - " Number of Atoms = 1\n", - " Formula = H\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = H\n", - " Number of Atoms = 1\n", - " Formula = H\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = H\n", - " Number of Atoms = 1\n", - " Formula = H\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = H\n", - " Number of Atoms = 1\n", - " Formula = H\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = H\n", - " Number of Atoms = 1\n", - " Formula = H\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = H\n", - " Number of Atoms = 1\n", - " Formula = H\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = H\n", - " Number of Atoms = 1\n", - " Formula = H\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = H\n", - " Number of Atoms = 1\n", - " Formula = H\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = H\n", - " Number of Atoms = 1\n", - " Formula = H\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = H\n", - " Number of Atoms = 1\n", - " Formula = H\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = H\n", - " Number of Atoms = 1\n", - " Formula = H\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " ---------------------------------------------------]" - ] - }, - "execution_count": 556, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "all_fragments" - ] - }, - { - "cell_type": "code", - "execution_count": 561, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Entered sequential with 27 fragments to reconstruct\n", - "Found 15 and 12 Heavy and Hydrogen fragments, respectively\n", - " \n", - "Fragments to allocate: 0 0 out of 14 11\n", - "sublist 2 ['H-O', 'H']\n", - "list1 15 ['H-O', 'C-O2', 'C-O2', 'C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'C-O2', 'C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 1 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (1, 0, 0), (0, 0, 1), (1, 0, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-O', 'H']\n", - " \n", - "Fragments to allocate: 0 1 out of 14 11\n", - "sublist 2 ['H-O', 'H']\n", - "list1 15 ['H-O', 'C-O2', 'C-O2', 'C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'C-O2', 'C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 2 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, 1), (-1, 1, 0), (0, 1, 1), (-1, 0, 1), (-1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-O', 'H']\n", - " \n", - "Fragments to allocate: 0 2 out of 14 11\n", - "sublist 2 ['H-O', 'H']\n", - "list1 15 ['H-O', 'C-O2', 'C-O2', 'C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'C-O2', 'C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 3 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 1, 0), (0, 0, 1), (0, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-O', 'H']\n", - " \n", - "Fragments to allocate: 0 3 out of 14 11\n", - "sublist 2 ['H-O', 'H']\n", - "list1 15 ['H-O', 'C-O2', 'C-O2', 'C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'C-O2', 'C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 4 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, 1), (-1, 0, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-O', 'H']\n", - " \n", - "Fragments to allocate: 0 4 out of 14 11\n", - "sublist 2 ['H-O', 'H']\n", - "list1 15 ['H-O', 'C-O2', 'C-O2', 'C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'C-O2', 'C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 5 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-O', 'H']\n", - " \n", - "Fragments to allocate: 0 5 out of 14 11\n", - "sublist 2 ['H-O', 'H']\n", - "list1 15 ['H-O', 'C-O2', 'C-O2', 'C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'C-O2', 'C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 6 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, 1), (-1, 1, 0), (0, 1, 1), (-1, 0, 1), (-1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-O', 'H']\n", - " \n", - "Fragments to allocate: 0 6 out of 14 11\n", - "sublist 2 ['H-O', 'H']\n", - "list1 15 ['H-O', 'C-O2', 'C-O2', 'C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'C-O2', 'C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 7 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, 1), (-1, 0, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-O', 'H']\n", - " \n", - "Fragments to allocate: 0 7 out of 14 11\n", - "sublist 2 ['H-O', 'H']\n", - "list1 15 ['H-O', 'C-O2', 'C-O2', 'C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'C-O2', 'C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 8 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-O', 'H']\n", - " \n", - "Fragments to allocate: 0 8 out of 14 11\n", - "sublist 2 ['H-O', 'H']\n", - "list1 15 ['H-O', 'C-O2', 'C-O2', 'C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'C-O2', 'C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 9 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 1, 0), (0, 0, 1), (0, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-O', 'H']\n", - " \n", - "Fragments to allocate: 0 9 out of 14 11\n", - "sublist 2 ['H-O', 'H']\n", - "list1 15 ['H-O', 'C-O2', 'C-O2', 'C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'C-O2', 'C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 10 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-O', 'H']\n", - " \n", - "Fragments to allocate: 0 10 out of 14 11\n", - "sublist 2 ['H-O', 'H']\n", - "list1 15 ['H-O', 'C-O2', 'C-O2', 'C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'C-O2', 'C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 11 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, 1), (-1, 1, 0), (0, 1, 1), (-1, 0, 1), (-1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-O', 'H']\n", - " \n", - "Fragments to allocate: 0 11 out of 14 11\n", - "sublist 2 ['H-O', 'H']\n", - "list1 15 ['H-O', 'C-O2', 'C-O2', 'C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'C-O2', 'C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 12 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, 1), (0, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-O', 'H']\n", - " \n", - "Fragments to allocate: 1 0 out of 14 11\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H-O', 'C-O2', 'C-O2', 'C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-O', 'C-O2', 'C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 13 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, 1), (0, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 1 1 out of 14 11\n", - "sublist 2 ['H-O', 'H']\n", - "list1 15 ['C-O2', 'H-O', 'C-O2', 'C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'C-O2', 'C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 14 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, 1), (-1, 1, 0), (0, 1, 1), (-1, 0, 1), (-1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-O', 'H']\n", - " \n", - "Fragments to allocate: 1 2 out of 14 11\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H-O', 'C-O2', 'C-O2', 'C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-O', 'C-O2', 'C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 15 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 1 3 out of 14 11\n", - "sublist 2 ['H-O', 'H']\n", - "list1 15 ['C-O2', 'H-O', 'C-O2', 'C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'C-O2', 'C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 16 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 1, 0), (0, 0, 1), (0, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-O', 'H']\n", - " \n", - "Fragments to allocate: 1 4 out of 14 11\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H-O', 'C-O2', 'C-O2', 'C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-O', 'C-O2', 'C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 17 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 1 5 out of 14 11\n", - "sublist 2 ['H-O', 'H']\n", - "list1 15 ['C-O2', 'H-O', 'C-O2', 'C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'C-O2', 'C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 18 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, 1), (-1, 0, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-O', 'H']\n", - " \n", - "Fragments to allocate: 1 6 out of 14 11\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H-O', 'C-O2', 'C-O2', 'C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-O', 'C-O2', 'C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 19 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, 1), (-1, 1, 0), (0, 1, 1), (-1, 0, 1), (-1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 1 7 out of 14 11\n", - "sublist 2 ['H-O', 'H']\n", - "list1 15 ['C-O2', 'H-O', 'C-O2', 'C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'C-O2', 'C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 20 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-O', 'H']\n", - " \n", - "Fragments to allocate: 1 8 out of 14 11\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H-O', 'C-O2', 'C-O2', 'C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-O', 'C-O2', 'C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 21 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, 1), (-1, 0, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 1 9 out of 14 11\n", - "sublist 2 ['H-O', 'H']\n", - "list1 15 ['C-O2', 'H-O', 'C-O2', 'C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'C-O2', 'C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 22 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 1, 0), (0, 0, 1), (0, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-O', 'H']\n", - " \n", - "Fragments to allocate: 1 10 out of 14 11\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H-O', 'C-O2', 'C-O2', 'C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-O', 'C-O2', 'C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 23 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, 1), (-1, 1, 0), (0, 1, 1), (-1, 0, 1), (-1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 1 11 out of 14 11\n", - "sublist 2 ['H-O', 'H']\n", - "list1 15 ['C-O2', 'H-O', 'C-O2', 'C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'C-O2', 'C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 24 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (1, 0, 0), (0, 0, 1), (1, 0, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-O', 'H']\n", - " \n", - "Fragments to allocate: 2 0 out of 14 11\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H-O', 'C-O2', 'C-O2', 'C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-O', 'C-O2', 'C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 25 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (1, 0, 0), (0, 0, 1), (1, 0, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 2 1 out of 14 11\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['C-O2', 'H-O', 'C-O2', 'C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H-O', 'C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 26 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, 1), (-1, 1, 0), (0, 1, 1), (-1, 0, 1), (-1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 2 2 out of 14 11\n", - "sublist 2 ['H-O', 'H']\n", - "list1 15 ['C-O2', 'C-O2', 'H-O', 'C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'C-O2', 'C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 27 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 1, 0), (0, 0, 1), (0, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-O', 'H']\n", - " \n", - "Fragments to allocate: 2 3 out of 14 11\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H-O', 'C-O2', 'C-O2', 'C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-O', 'C-O2', 'C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 28 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, 1), (-1, 0, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 2 4 out of 14 11\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['C-O2', 'H-O', 'C-O2', 'C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H-O', 'C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 29 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 2 5 out of 14 11\n", - "sublist 2 ['H-O', 'H']\n", - "list1 15 ['C-O2', 'C-O2', 'H-O', 'C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'C-O2', 'C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 30 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, 1), (-1, 1, 0), (0, 1, 1), (-1, 0, 1), (-1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-O', 'H']\n", - " \n", - "Fragments to allocate: 2 6 out of 14 11\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H-O', 'C-O2', 'C-O2', 'C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-O', 'C-O2', 'C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 31 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, 1), (-1, 0, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 2 7 out of 14 11\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['C-O2', 'H-O', 'C-O2', 'C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H-O', 'C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 32 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 2 8 out of 14 11\n", - "sublist 2 ['H-O', 'H']\n", - "list1 15 ['C-O2', 'C-O2', 'H-O', 'C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'C-O2', 'C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 33 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 1, 0), (0, 0, 1), (0, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-O', 'H']\n", - " \n", - "Fragments to allocate: 2 9 out of 14 11\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H-O', 'C-O2', 'C-O2', 'C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-O', 'C-O2', 'C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 34 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 2 10 out of 14 11\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['C-O2', 'H-O', 'C-O2', 'C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H-O', 'C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 35 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, 1), (-1, 1, 0), (0, 1, 1), (-1, 0, 1), (-1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 2 11 out of 14 11\n", - "sublist 2 ['H-O', 'H']\n", - "list1 15 ['C-O2', 'C-O2', 'H-O', 'C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'C-O2', 'C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 36 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, 1), (0, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-O', 'H']\n", - " \n", - "Fragments to allocate: 3 0 out of 14 11\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H-O', 'C-O2', 'C-O2', 'C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-O', 'C-O2', 'C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 37 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, 1), (0, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 3 1 out of 14 11\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['C-O2', 'H-O', 'C-O2', 'C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H-O', 'C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 38 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, 1), (-1, 1, 0), (0, 1, 1), (-1, 0, 1), (-1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 3 2 out of 14 11\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['C-O2', 'C-O2', 'H-O', 'C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'C-O2', 'H-O', 'H-C-O', 'H2-C', 'H2-C', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 39 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 3 3 out of 14 11\n", - "sublist 2 ['H-O', 'H']\n", - "list1 15 ['C-O2', 'C-O2', 'C-O2', 'H-O', 'H-C-O', 'H2-C', 'H2-C', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'C-O2', 'C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 40 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 1, 0), (0, 0, 1), (0, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-O', 'H']\n", - " \n", - "Fragments to allocate: 3 4 out of 14 11\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H-O', 'C-O2', 'C-O2', 'C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-O', 'C-O2', 'C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 41 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 3 5 out of 14 11\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['C-O2', 'H-O', 'C-O2', 'C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H-O', 'C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 42 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, 1), (-1, 0, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 3 6 out of 14 11\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['C-O2', 'C-O2', 'H-O', 'C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'C-O2', 'H-O', 'H-C-O', 'H2-C', 'H2-C', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 43 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, 1), (-1, 1, 0), (0, 1, 1), (-1, 0, 1), (-1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 3 7 out of 14 11\n", - "sublist 2 ['H-O', 'H']\n", - "list1 15 ['C-O2', 'C-O2', 'C-O2', 'H-O', 'H-C-O', 'H2-C', 'H2-C', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'C-O2', 'C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 44 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-O', 'H']\n", - " \n", - "Fragments to allocate: 3 8 out of 14 11\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H-O', 'C-O2', 'C-O2', 'C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-O', 'C-O2', 'C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 45 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, 1), (-1, 0, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 3 9 out of 14 11\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['C-O2', 'H-O', 'C-O2', 'C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H-O', 'C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 46 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 1, 0), (0, 0, 1), (0, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 3 10 out of 14 11\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['C-O2', 'C-O2', 'H-O', 'C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'C-O2', 'H-O', 'H-C-O', 'H2-C', 'H2-C', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 47 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, 1), (-1, 1, 0), (0, 1, 1), (-1, 0, 1), (-1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 3 11 out of 14 11\n", - "sublist 2 ['H-O', 'H']\n", - "list1 15 ['C-O2', 'C-O2', 'C-O2', 'H-O', 'H-C-O', 'H2-C', 'H2-C', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'C-O2', 'C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 48 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (1, 0, 0), (0, 0, 1), (1, 0, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-O', 'H']\n", - " \n", - "Fragments to allocate: 4 0 out of 14 11\n", - "sublist 2 ['H-C-O', 'H']\n", - "list1 15 ['H-O', 'C-O2', 'C-O2', 'C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-O', 'C-O2', 'C-O2', 'C-O2', 'H2-C', 'H2-C', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 49 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (1, 0, 0), (0, 0, 1), (1, 0, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-C-O', 'H']\n", - " \n", - "Fragments to allocate: 4 1 out of 14 11\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H-C-O', 'H-O', 'C-O2', 'C-O2', 'C-O2', 'H2-C', 'H2-C', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-C-O', 'H-O', 'C-O2', 'C-O2', 'H2-C', 'H2-C', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 50 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, 1), (-1, 1, 0), (0, 1, 1), (-1, 0, 1), (-1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 4 2 out of 14 11\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['C-O2', 'H-C-O', 'H-O', 'C-O2', 'C-O2', 'H2-C', 'H2-C', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H-C-O', 'H-O', 'C-O2', 'H2-C', 'H2-C', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 51 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 1, 0), (0, 0, 1), (0, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 4 3 out of 14 11\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['C-O2', 'C-O2', 'H-C-O', 'H-O', 'C-O2', 'H2-C', 'H2-C', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'C-O2', 'H-C-O', 'H-O', 'H2-C', 'H2-C', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 52 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, 1), (-1, 0, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 4 4 out of 14 11\n", - "sublist 2 ['H-O', 'H']\n", - "list1 15 ['C-O2', 'C-O2', 'C-O2', 'H-C-O', 'H-O', 'H2-C', 'H2-C', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'C-O2', 'C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 53 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-O', 'H']\n", - " \n", - "Fragments to allocate: 4 5 out of 14 11\n", - "sublist 2 ['H-C-O', 'H']\n", - "list1 15 ['H-O', 'C-O2', 'C-O2', 'C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-O', 'C-O2', 'C-O2', 'C-O2', 'H2-C', 'H2-C', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 54 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, 1), (-1, 1, 0), (0, 1, 1), (-1, 0, 1), (-1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-C-O', 'H']\n", - " \n", - "Fragments to allocate: 4 6 out of 14 11\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H-C-O', 'H-O', 'C-O2', 'C-O2', 'C-O2', 'H2-C', 'H2-C', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-C-O', 'H-O', 'C-O2', 'C-O2', 'H2-C', 'H2-C', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 55 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, 1), (-1, 0, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 4 7 out of 14 11\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['C-O2', 'H-C-O', 'H-O', 'C-O2', 'C-O2', 'H2-C', 'H2-C', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H-C-O', 'H-O', 'C-O2', 'H2-C', 'H2-C', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 56 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 4 8 out of 14 11\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['C-O2', 'C-O2', 'H-C-O', 'H-O', 'C-O2', 'H2-C', 'H2-C', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'C-O2', 'H-C-O', 'H-O', 'H2-C', 'H2-C', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 57 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 1, 0), (0, 0, 1), (0, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 4 9 out of 14 11\n", - "sublist 2 ['H-O', 'H']\n", - "list1 15 ['C-O2', 'C-O2', 'C-O2', 'H-C-O', 'H-O', 'H2-C', 'H2-C', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'C-O2', 'C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 58 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-O', 'H']\n", - " \n", - "Fragments to allocate: 4 10 out of 14 11\n", - "sublist 2 ['H-C-O', 'H']\n", - "list1 15 ['H-O', 'C-O2', 'C-O2', 'C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-O', 'C-O2', 'C-O2', 'C-O2', 'H2-C', 'H2-C', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 59 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, 1), (-1, 1, 0), (0, 1, 1), (-1, 0, 1), (-1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-C-O', 'H']\n", - " \n", - "Fragments to allocate: 4 11 out of 14 11\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H-C-O', 'H-O', 'C-O2', 'C-O2', 'C-O2', 'H2-C', 'H2-C', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-C-O', 'H-O', 'C-O2', 'C-O2', 'H2-C', 'H2-C', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 60 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, 1), (0, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 5 0 out of 14 11\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['C-O2', 'H-C-O', 'H-O', 'C-O2', 'C-O2', 'H2-C', 'H2-C', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H-C-O', 'H-O', 'C-O2', 'C-O2', 'H2-C', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 61 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, 1), (0, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 5 1 out of 14 11\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H2-C', 'C-O2', 'H-C-O', 'H-O', 'C-O2', 'C-O2', 'H2-C', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'C-O2', 'H-C-O', 'H-O', 'C-O2', 'H2-C', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 62 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, 1), (-1, 1, 0), (0, 1, 1), (-1, 0, 1), (-1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 5 2 out of 14 11\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['C-O2', 'H2-C', 'C-O2', 'H-C-O', 'H-O', 'C-O2', 'H2-C', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H2-C', 'C-O2', 'H-C-O', 'H-O', 'H2-C', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 63 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 5 3 out of 14 11\n", - "sublist 2 ['H-O', 'H']\n", - "list1 15 ['C-O2', 'C-O2', 'H2-C', 'C-O2', 'H-C-O', 'H-O', 'H2-C', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'C-O2', 'H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 64 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 1, 0), (0, 0, 1), (0, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-O', 'H']\n", - " \n", - "Fragments to allocate: 5 4 out of 14 11\n", - "sublist 2 ['H-C-O', 'H']\n", - "list1 15 ['H-O', 'C-O2', 'C-O2', 'H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-O', 'C-O2', 'C-O2', 'H2-C', 'C-O2', 'H2-C', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 65 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-C-O', 'H']\n", - " \n", - "Fragments to allocate: 5 5 out of 14 11\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H-C-O', 'H-O', 'C-O2', 'C-O2', 'H2-C', 'C-O2', 'H2-C', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-C-O', 'H-O', 'C-O2', 'C-O2', 'H2-C', 'H2-C', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 66 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, 1), (-1, 0, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 5 6 out of 14 11\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['C-O2', 'H-C-O', 'H-O', 'C-O2', 'C-O2', 'H2-C', 'H2-C', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H-C-O', 'H-O', 'C-O2', 'C-O2', 'H2-C', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 67 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, 1), (-1, 1, 0), (0, 1, 1), (-1, 0, 1), (-1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 5 7 out of 14 11\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H2-C', 'C-O2', 'H-C-O', 'H-O', 'C-O2', 'C-O2', 'H2-C', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'C-O2', 'H-C-O', 'H-O', 'C-O2', 'H2-C', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 68 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 5 8 out of 14 11\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['C-O2', 'H2-C', 'C-O2', 'H-C-O', 'H-O', 'C-O2', 'H2-C', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H2-C', 'C-O2', 'H-C-O', 'H-O', 'H2-C', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 69 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, 1), (-1, 0, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 5 9 out of 14 11\n", - "sublist 2 ['H-O', 'H']\n", - "list1 15 ['C-O2', 'C-O2', 'H2-C', 'C-O2', 'H-C-O', 'H-O', 'H2-C', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'C-O2', 'H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 70 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 1, 0), (0, 0, 1), (0, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-O', 'H']\n", - " \n", - "Fragments to allocate: 5 10 out of 14 11\n", - "sublist 2 ['H-C-O', 'H']\n", - "list1 15 ['H-O', 'C-O2', 'C-O2', 'H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-O', 'C-O2', 'C-O2', 'H2-C', 'C-O2', 'H2-C', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 71 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, 1), (-1, 1, 0), (0, 1, 1), (-1, 0, 1), (-1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-C-O', 'H']\n", - " \n", - "Fragments to allocate: 5 11 out of 14 11\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H-C-O', 'H-O', 'C-O2', 'C-O2', 'H2-C', 'C-O2', 'H2-C', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-C-O', 'H-O', 'C-O2', 'C-O2', 'H2-C', 'H2-C', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 72 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (1, 0, 0), (0, 0, 1), (1, 0, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 6 0 out of 14 11\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['C-O2', 'H-C-O', 'H-O', 'C-O2', 'C-O2', 'H2-C', 'H2-C', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H-C-O', 'H-O', 'C-O2', 'C-O2', 'H2-C', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 73 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (1, 0, 0), (0, 0, 1), (1, 0, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 6 1 out of 14 11\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H2-C', 'C-O2', 'H-C-O', 'H-O', 'C-O2', 'C-O2', 'H2-C', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'C-O2', 'H-C-O', 'H-O', 'C-O2', 'C-O2', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 74 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, 1), (-1, 1, 0), (0, 1, 1), (-1, 0, 1), (-1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 6 2 out of 14 11\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H2-C', 'H2-C', 'C-O2', 'H-C-O', 'H-O', 'C-O2', 'C-O2', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H2-C', 'C-O2', 'H-C-O', 'H-O', 'C-O2', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 75 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 1, 0), (0, 0, 1), (0, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 6 3 out of 14 11\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['C-O2', 'H2-C', 'H2-C', 'C-O2', 'H-C-O', 'H-O', 'C-O2', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H2-C', 'H2-C', 'C-O2', 'H-C-O', 'H-O', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 76 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, 1), (-1, 0, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 6 4 out of 14 11\n", - "sublist 2 ['H-O', 'H']\n", - "list1 15 ['C-O2', 'C-O2', 'H2-C', 'H2-C', 'C-O2', 'H-C-O', 'H-O', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'C-O2', 'H2-C', 'H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 77 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-O', 'H']\n", - " \n", - "Fragments to allocate: 6 5 out of 14 11\n", - "sublist 2 ['H-C-O', 'H']\n", - "list1 15 ['H-O', 'C-O2', 'C-O2', 'H2-C', 'H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-O', 'C-O2', 'C-O2', 'H2-C', 'H2-C', 'C-O2', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 78 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, 1), (-1, 1, 0), (0, 1, 1), (-1, 0, 1), (-1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-C-O', 'H']\n", - " \n", - "Fragments to allocate: 6 6 out of 14 11\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H-C-O', 'H-O', 'C-O2', 'C-O2', 'H2-C', 'H2-C', 'C-O2', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-C-O', 'H-O', 'C-O2', 'C-O2', 'H2-C', 'H2-C', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 79 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, 1), (-1, 0, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 6 7 out of 14 11\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['C-O2', 'H-C-O', 'H-O', 'C-O2', 'C-O2', 'H2-C', 'H2-C', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H-C-O', 'H-O', 'C-O2', 'C-O2', 'H2-C', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 80 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 6 8 out of 14 11\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H2-C', 'C-O2', 'H-C-O', 'H-O', 'C-O2', 'C-O2', 'H2-C', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'C-O2', 'H-C-O', 'H-O', 'C-O2', 'C-O2', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 81 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 1, 0), (0, 0, 1), (0, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 6 9 out of 14 11\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H2-C', 'H2-C', 'C-O2', 'H-C-O', 'H-O', 'C-O2', 'C-O2', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H2-C', 'C-O2', 'H-C-O', 'H-O', 'C-O2', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 82 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 6 10 out of 14 11\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['C-O2', 'H2-C', 'H2-C', 'C-O2', 'H-C-O', 'H-O', 'C-O2', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H2-C', 'H2-C', 'C-O2', 'H-C-O', 'H-O', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 83 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, 1), (-1, 1, 0), (0, 1, 1), (-1, 0, 1), (-1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 6 11 out of 14 11\n", - "sublist 2 ['H-O', 'H']\n", - "list1 15 ['C-O2', 'C-O2', 'H2-C', 'H2-C', 'C-O2', 'H-C-O', 'H-O', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'C-O2', 'H2-C', 'H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 84 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, 1), (0, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-O', 'H']\n", - " \n", - "Fragments to allocate: 7 0 out of 14 11\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H-O', 'C-O2', 'C-O2', 'H2-C', 'H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-O', 'C-O2', 'C-O2', 'H2-C', 'H2-C', 'C-O2', 'H-C-O', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 85 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, 1), (0, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 7 1 out of 14 11\n", - "sublist 2 ['H-C-O', 'H']\n", - "list1 15 ['H2-C', 'H-O', 'C-O2', 'C-O2', 'H2-C', 'H2-C', 'C-O2', 'H-C-O', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H-O', 'C-O2', 'C-O2', 'H2-C', 'H2-C', 'C-O2', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 86 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, 1), (-1, 1, 0), (0, 1, 1), (-1, 0, 1), (-1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-C-O', 'H']\n", - " \n", - "Fragments to allocate: 7 2 out of 14 11\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H-C-O', 'H2-C', 'H-O', 'C-O2', 'C-O2', 'H2-C', 'H2-C', 'C-O2', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-C-O', 'H2-C', 'H-O', 'C-O2', 'C-O2', 'H2-C', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 87 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 7 3 out of 14 11\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['C-O2', 'H-C-O', 'H2-C', 'H-O', 'C-O2', 'C-O2', 'H2-C', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H-C-O', 'H2-C', 'H-O', 'C-O2', 'C-O2', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 88 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 1, 0), (0, 0, 1), (0, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 7 4 out of 14 11\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H-O', 'C-O2', 'C-O2', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H-O', 'C-O2', 'C-O2', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 89 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 7 5 out of 14 11\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H2-C', 'H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H-O', 'C-O2', 'C-O2', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H-O', 'C-O2', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 90 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, 1), (-1, 0, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 7 6 out of 14 11\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['C-O2', 'H2-C', 'H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H-O', 'C-O2', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H2-C', 'H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H-O', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 91 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, 1), (-1, 1, 0), (0, 1, 1), (-1, 0, 1), (-1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 7 7 out of 14 11\n", - "sublist 2 ['H-O', 'H']\n", - "list1 15 ['C-O2', 'C-O2', 'H2-C', 'H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H-O', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'C-O2', 'H2-C', 'H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 92 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-O', 'H']\n", - " \n", - "Fragments to allocate: 7 8 out of 14 11\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H-O', 'C-O2', 'C-O2', 'H2-C', 'H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-O', 'C-O2', 'C-O2', 'H2-C', 'H2-C', 'C-O2', 'H-C-O', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 93 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, 1), (-1, 0, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 7 9 out of 14 11\n", - "sublist 2 ['H-C-O', 'H']\n", - "list1 15 ['H2-C', 'H-O', 'C-O2', 'C-O2', 'H2-C', 'H2-C', 'C-O2', 'H-C-O', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H-O', 'C-O2', 'C-O2', 'H2-C', 'H2-C', 'C-O2', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 94 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 1, 0), (0, 0, 1), (0, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-C-O', 'H']\n", - " \n", - "Fragments to allocate: 7 10 out of 14 11\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H-C-O', 'H2-C', 'H-O', 'C-O2', 'C-O2', 'H2-C', 'H2-C', 'C-O2', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-C-O', 'H2-C', 'H-O', 'C-O2', 'C-O2', 'H2-C', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 95 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, 1), (-1, 1, 0), (0, 1, 1), (-1, 0, 1), (-1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 7 11 out of 14 11\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['C-O2', 'H-C-O', 'H2-C', 'H-O', 'C-O2', 'C-O2', 'H2-C', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H-C-O', 'H2-C', 'H-O', 'C-O2', 'C-O2', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 96 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (1, 0, 0), (0, 0, 1), (1, 0, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 8 0 out of 14 11\n", - "sublist 2 ['H-C-O', 'H']\n", - "list1 15 ['H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H-O', 'C-O2', 'C-O2', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H-O', 'C-O2', 'C-O2', 'H2-C', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 97 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (1, 0, 0), (0, 0, 1), (1, 0, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-C-O', 'H']\n", - " \n", - "Fragments to allocate: 8 1 out of 14 11\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H-C-O', 'H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H-O', 'C-O2', 'C-O2', 'H2-C', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-C-O', 'H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 98 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, 1), (-1, 1, 0), (0, 1, 1), (-1, 0, 1), (-1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 8 2 out of 14 11\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H2-C', 'H-C-O', 'H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H-C-O', 'H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H-O', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 99 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 1, 0), (0, 0, 1), (0, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 8 3 out of 14 11\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['C-O2', 'H2-C', 'H-C-O', 'H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H-O', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H2-C', 'H-C-O', 'H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 100 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, 1), (-1, 0, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 8 4 out of 14 11\n", - "sublist 2 ['H-O', 'H']\n", - "list1 15 ['C-O2', 'C-O2', 'H2-C', 'H-C-O', 'H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'C-O2', 'H2-C', 'H-C-O', 'H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 101 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-O', 'H']\n", - " \n", - "Fragments to allocate: 8 5 out of 14 11\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H-O', 'C-O2', 'C-O2', 'H2-C', 'H-C-O', 'H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-O', 'C-O2', 'C-O2', 'H2-C', 'H-C-O', 'H2-C', 'C-O2', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 102 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, 1), (-1, 1, 0), (0, 1, 1), (-1, 0, 1), (-1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 8 6 out of 14 11\n", - "sublist 2 ['H-C-O', 'H']\n", - "list1 15 ['H2-C', 'H-O', 'C-O2', 'C-O2', 'H2-C', 'H-C-O', 'H2-C', 'C-O2', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H-O', 'C-O2', 'C-O2', 'H2-C', 'H-C-O', 'H2-C', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 103 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, 1), (-1, 0, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-C-O', 'H']\n", - " \n", - "Fragments to allocate: 8 7 out of 14 11\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H-C-O', 'H2-C', 'H-O', 'C-O2', 'C-O2', 'H2-C', 'H-C-O', 'H2-C', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-C-O', 'H2-C', 'H-O', 'C-O2', 'C-O2', 'H2-C', 'H-C-O', 'H2-C', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 104 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 8 8 out of 14 11\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['C-O2', 'H-C-O', 'H2-C', 'H-O', 'C-O2', 'C-O2', 'H2-C', 'H-C-O', 'H2-C', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H-C-O', 'H2-C', 'H-O', 'C-O2', 'C-O2', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 105 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 1, 0), (0, 0, 1), (0, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 8 9 out of 14 11\n", - "sublist 2 ['H-C-O', 'H']\n", - "list1 15 ['H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H-O', 'C-O2', 'C-O2', 'H2-C', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H-O', 'C-O2', 'C-O2', 'H2-C', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 106 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-C-O', 'H']\n", - " \n", - "Fragments to allocate: 8 10 out of 14 11\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H-C-O', 'H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H-O', 'C-O2', 'C-O2', 'H2-C', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-C-O', 'H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 107 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, 1), (-1, 1, 0), (0, 1, 1), (-1, 0, 1), (-1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 8 11 out of 14 11\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H2-C', 'H-C-O', 'H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H-C-O', 'H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H-O', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 108 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, 1), (0, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 9 0 out of 14 11\n", - "sublist 2 ['H3-C2', 'H']\n", - "list1 15 ['C-O2', 'H2-C', 'H-C-O', 'H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H-O', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H2-C', 'H-C-O', 'H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H-O', 'C-O2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 109 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, 1), (0, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H3-C2', 'H']\n", - " \n", - "Fragments to allocate: 9 1 out of 14 11\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H3-C2', 'C-O2', 'H2-C', 'H-C-O', 'H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H-O', 'C-O2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H3-C2', 'C-O2', 'H2-C', 'H-C-O', 'H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H-O', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 110 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, 1), (-1, 1, 0), (0, 1, 1), (-1, 0, 1), (-1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 9 2 out of 14 11\n", - "sublist 2 ['H-O', 'H']\n", - "list1 15 ['C-O2', 'H3-C2', 'C-O2', 'H2-C', 'H-C-O', 'H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H-O', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H3-C2', 'C-O2', 'H2-C', 'H-C-O', 'H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 111 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-O', 'H']\n", - " \n", - "Fragments to allocate: 9 3 out of 14 11\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H-O', 'C-O2', 'H3-C2', 'C-O2', 'H2-C', 'H-C-O', 'H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-O', 'C-O2', 'H3-C2', 'C-O2', 'H2-C', 'H-C-O', 'H2-C', 'C-O2', 'H-C-O', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 112 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 1, 0), (0, 0, 1), (0, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 9 4 out of 14 11\n", - "sublist 2 ['H-C-O', 'H']\n", - "list1 15 ['H2-C', 'H-O', 'C-O2', 'H3-C2', 'C-O2', 'H2-C', 'H-C-O', 'H2-C', 'C-O2', 'H-C-O', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H-O', 'C-O2', 'H3-C2', 'C-O2', 'H2-C', 'H-C-O', 'H2-C', 'C-O2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 113 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-C-O', 'H']\n", - " \n", - "Fragments to allocate: 9 5 out of 14 11\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H-C-O', 'H2-C', 'H-O', 'C-O2', 'H3-C2', 'C-O2', 'H2-C', 'H-C-O', 'H2-C', 'C-O2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-C-O', 'H2-C', 'H-O', 'C-O2', 'H3-C2', 'C-O2', 'H2-C', 'H-C-O', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 114 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, 1), (-1, 0, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 9 6 out of 14 11\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['C-O2', 'H-C-O', 'H2-C', 'H-O', 'C-O2', 'H3-C2', 'C-O2', 'H2-C', 'H-C-O', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H-C-O', 'H2-C', 'H-O', 'C-O2', 'H3-C2', 'C-O2', 'H2-C', 'H-C-O', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 115 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, 1), (-1, 1, 0), (0, 1, 1), (-1, 0, 1), (-1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 9 7 out of 14 11\n", - "sublist 2 ['H-C-O', 'H']\n", - "list1 15 ['H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H-O', 'C-O2', 'H3-C2', 'C-O2', 'H2-C', 'H-C-O', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H-O', 'C-O2', 'H3-C2', 'C-O2', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 116 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-C-O', 'H']\n", - " \n", - "Fragments to allocate: 9 8 out of 14 11\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H-C-O', 'H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H-O', 'C-O2', 'H3-C2', 'C-O2', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-C-O', 'H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H-O', 'C-O2', 'H3-C2', 'C-O2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 117 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, 1), (-1, 0, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 9 9 out of 14 11\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H2-C', 'H-C-O', 'H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H-O', 'C-O2', 'H3-C2', 'C-O2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H-C-O', 'H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H-O', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 118 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 1, 0), (0, 0, 1), (0, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 9 10 out of 14 11\n", - "sublist 2 ['H3-C2', 'H']\n", - "list1 15 ['C-O2', 'H2-C', 'H-C-O', 'H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H-O', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H2-C', 'H-C-O', 'H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H-O', 'C-O2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 119 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, 1), (-1, 1, 0), (0, 1, 1), (-1, 0, 1), (-1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H3-C2', 'H']\n", - " \n", - "Fragments to allocate: 9 11 out of 14 11\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H3-C2', 'C-O2', 'H2-C', 'H-C-O', 'H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H-O', 'C-O2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H3-C2', 'C-O2', 'H2-C', 'H-C-O', 'H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H-O', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 120 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (1, 0, 0), (0, 0, 1), (1, 0, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 10 0 out of 14 11\n", - "sublist 2 ['H3-C2', 'H']\n", - "list1 15 ['C-O2', 'H3-C2', 'C-O2', 'H2-C', 'H-C-O', 'H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H-O', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H3-C2', 'C-O2', 'H2-C', 'H-C-O', 'H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 121 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (1, 0, 0), (0, 0, 1), (1, 0, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H3-C2', 'H']\n", - " \n", - "Fragments to allocate: 10 1 out of 14 11\n", - "sublist 2 ['H-O', 'H']\n", - "list1 15 ['H3-C2', 'C-O2', 'H3-C2', 'C-O2', 'H2-C', 'H-C-O', 'H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H3-C2', 'C-O2', 'H3-C2', 'C-O2', 'H2-C', 'H-C-O', 'H2-C', 'C-O2', 'H-C-O', 'H2-C', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 122 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, 1), (-1, 1, 0), (0, 1, 1), (-1, 0, 1), (-1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-O', 'H']\n", - " \n", - "Fragments to allocate: 10 2 out of 14 11\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H-O', 'H3-C2', 'C-O2', 'H3-C2', 'C-O2', 'H2-C', 'H-C-O', 'H2-C', 'C-O2', 'H-C-O', 'H2-C', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-O', 'H3-C2', 'C-O2', 'H3-C2', 'C-O2', 'H2-C', 'H-C-O', 'H2-C', 'C-O2', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 123 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 1, 0), (0, 0, 1), (0, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 10 3 out of 14 11\n", - "sublist 2 ['H-C-O', 'H']\n", - "list1 15 ['H2-C', 'H-O', 'H3-C2', 'C-O2', 'H3-C2', 'C-O2', 'H2-C', 'H-C-O', 'H2-C', 'C-O2', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H-O', 'H3-C2', 'C-O2', 'H3-C2', 'C-O2', 'H2-C', 'H-C-O', 'H2-C', 'C-O2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 124 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, 1), (-1, 0, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-C-O', 'H']\n", - " \n", - "Fragments to allocate: 10 4 out of 14 11\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H-C-O', 'H2-C', 'H-O', 'H3-C2', 'C-O2', 'H3-C2', 'C-O2', 'H2-C', 'H-C-O', 'H2-C', 'C-O2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-C-O', 'H2-C', 'H-O', 'H3-C2', 'C-O2', 'H3-C2', 'C-O2', 'H2-C', 'H-C-O', 'H2-C', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 125 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 10 5 out of 14 11\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['C-O2', 'H-C-O', 'H2-C', 'H-O', 'H3-C2', 'C-O2', 'H3-C2', 'C-O2', 'H2-C', 'H-C-O', 'H2-C', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H-C-O', 'H2-C', 'H-O', 'H3-C2', 'C-O2', 'H3-C2', 'C-O2', 'H2-C', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 126 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, 1), (-1, 1, 0), (0, 1, 1), (-1, 0, 1), (-1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 10 6 out of 14 11\n", - "sublist 2 ['H-C-O', 'H']\n", - "list1 15 ['H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H-O', 'H3-C2', 'C-O2', 'H3-C2', 'C-O2', 'H2-C', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H-O', 'H3-C2', 'C-O2', 'H3-C2', 'C-O2', 'H2-C', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 127 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, 1), (-1, 0, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-C-O', 'H']\n", - " \n", - "Fragments to allocate: 10 7 out of 14 11\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H-C-O', 'H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H-O', 'H3-C2', 'C-O2', 'H3-C2', 'C-O2', 'H2-C', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-C-O', 'H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H-O', 'H3-C2', 'C-O2', 'H3-C2', 'C-O2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 128 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 10 8 out of 14 11\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H2-C', 'H-C-O', 'H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H-O', 'H3-C2', 'C-O2', 'H3-C2', 'C-O2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H-C-O', 'H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H-O', 'H3-C2', 'C-O2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 129 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 1, 0), (0, 0, 1), (0, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 10 9 out of 14 11\n", - "sublist 2 ['H3-C2', 'H']\n", - "list1 15 ['C-O2', 'H2-C', 'H-C-O', 'H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H-O', 'H3-C2', 'C-O2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H2-C', 'H-C-O', 'H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H-O', 'H3-C2', 'C-O2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 130 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H3-C2', 'H']\n", - " \n", - "Fragments to allocate: 10 10 out of 14 11\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H3-C2', 'C-O2', 'H2-C', 'H-C-O', 'H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H-O', 'H3-C2', 'C-O2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H3-C2', 'C-O2', 'H2-C', 'H-C-O', 'H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H-O', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 131 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, 1), (-1, 1, 0), (0, 1, 1), (-1, 0, 1), (-1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 10 11 out of 14 11\n", - "sublist 2 ['H3-C2', 'H']\n", - "list1 15 ['C-O2', 'H3-C2', 'C-O2', 'H2-C', 'H-C-O', 'H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H-O', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H3-C2', 'C-O2', 'H2-C', 'H-C-O', 'H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 132 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, 1), (0, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H3-C2', 'H']\n", - " \n", - "Fragments to allocate: 11 0 out of 14 11\n", - "sublist 2 ['C3-O6-Fe', 'H']\n", - "list1 15 ['H3-C2', 'C-O2', 'H3-C2', 'C-O2', 'H2-C', 'H-C-O', 'H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H3-C2', 'C-O2', 'H3-C2', 'C-O2', 'H2-C', 'H-C-O', 'H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H-O', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 133 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['Fe', 'O', 'O', 'O', 'O', 'O', 'O', 'C', 'C', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, 1), (0, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C3-O6-Fe', 'H']\n", - " \n", - "Fragments to allocate: 11 1 out of 14 11\n", - "sublist 2 ['H-O', 'H']\n", - "list1 15 ['C3-O6-Fe', 'H3-C2', 'C-O2', 'H3-C2', 'C-O2', 'H2-C', 'H-C-O', 'H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H-O', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C3-O6-Fe', 'H3-C2', 'C-O2', 'H3-C2', 'C-O2', 'H2-C', 'H-C-O', 'H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 134 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, 1), (-1, 1, 0), (0, 1, 1), (-1, 0, 1), (-1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-O', 'H']\n", - " \n", - "Fragments to allocate: 11 2 out of 14 11\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H-O', 'C3-O6-Fe', 'H3-C2', 'C-O2', 'H3-C2', 'C-O2', 'H2-C', 'H-C-O', 'H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-O', 'C3-O6-Fe', 'H3-C2', 'C-O2', 'H3-C2', 'C-O2', 'H2-C', 'H-C-O', 'H2-C', 'C-O2', 'H-C-O', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 135 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 11 3 out of 14 11\n", - "sublist 2 ['H-C-O', 'H']\n", - "list1 15 ['H2-C', 'H-O', 'C3-O6-Fe', 'H3-C2', 'C-O2', 'H3-C2', 'C-O2', 'H2-C', 'H-C-O', 'H2-C', 'C-O2', 'H-C-O', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H-O', 'C3-O6-Fe', 'H3-C2', 'C-O2', 'H3-C2', 'C-O2', 'H2-C', 'H-C-O', 'H2-C', 'C-O2', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 136 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 1, 0), (0, 0, 1), (0, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-C-O', 'H']\n", - " \n", - "Fragments to allocate: 11 4 out of 14 11\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H-C-O', 'H2-C', 'H-O', 'C3-O6-Fe', 'H3-C2', 'C-O2', 'H3-C2', 'C-O2', 'H2-C', 'H-C-O', 'H2-C', 'C-O2', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-C-O', 'H2-C', 'H-O', 'C3-O6-Fe', 'H3-C2', 'C-O2', 'H3-C2', 'C-O2', 'H2-C', 'H-C-O', 'H2-C', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 137 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 11 5 out of 14 11\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['C-O2', 'H-C-O', 'H2-C', 'H-O', 'C3-O6-Fe', 'H3-C2', 'C-O2', 'H3-C2', 'C-O2', 'H2-C', 'H-C-O', 'H2-C', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H-C-O', 'H2-C', 'H-O', 'C3-O6-Fe', 'H3-C2', 'C-O2', 'H3-C2', 'C-O2', 'H2-C', 'H-C-O', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 138 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, 1), (-1, 0, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 11 6 out of 14 11\n", - "sublist 2 ['H-C-O', 'H']\n", - "list1 15 ['H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H-O', 'C3-O6-Fe', 'H3-C2', 'C-O2', 'H3-C2', 'C-O2', 'H2-C', 'H-C-O', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H-O', 'C3-O6-Fe', 'H3-C2', 'C-O2', 'H3-C2', 'C-O2', 'H2-C', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 139 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, 1), (-1, 1, 0), (0, 1, 1), (-1, 0, 1), (-1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-C-O', 'H']\n", - " \n", - "Fragments to allocate: 11 7 out of 14 11\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H-C-O', 'H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H-O', 'C3-O6-Fe', 'H3-C2', 'C-O2', 'H3-C2', 'C-O2', 'H2-C', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-C-O', 'H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H-O', 'C3-O6-Fe', 'H3-C2', 'C-O2', 'H3-C2', 'C-O2', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 140 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 11 8 out of 14 11\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H2-C', 'H-C-O', 'H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H-O', 'C3-O6-Fe', 'H3-C2', 'C-O2', 'H3-C2', 'C-O2', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H-C-O', 'H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H-O', 'C3-O6-Fe', 'H3-C2', 'C-O2', 'H3-C2', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 141 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, 1), (-1, 0, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 11 9 out of 14 11\n", - "sublist 2 ['H3-C2', 'H']\n", - "list1 15 ['C-O2', 'H2-C', 'H-C-O', 'H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H-O', 'C3-O6-Fe', 'H3-C2', 'C-O2', 'H3-C2', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H2-C', 'H-C-O', 'H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H-O', 'C3-O6-Fe', 'H3-C2', 'C-O2', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 142 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 1, 0), (0, 0, 1), (0, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H3-C2', 'H']\n", - " \n", - "Fragments to allocate: 11 10 out of 14 11\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H3-C2', 'C-O2', 'H2-C', 'H-C-O', 'H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H-O', 'C3-O6-Fe', 'H3-C2', 'C-O2', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H3-C2', 'C-O2', 'H2-C', 'H-C-O', 'H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H-O', 'C3-O6-Fe', 'H3-C2', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 143 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, 1), (-1, 1, 0), (0, 1, 1), (-1, 0, 1), (-1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 11 11 out of 14 11\n", - "sublist 2 ['H3-C2', 'H']\n", - "list1 15 ['C-O2', 'H3-C2', 'C-O2', 'H2-C', 'H-C-O', 'H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H-O', 'C3-O6-Fe', 'H3-C2', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H3-C2', 'C-O2', 'H2-C', 'H-C-O', 'H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 144 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (1, 0, 0), (0, 0, 1), (1, 0, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H3-C2', 'H']\n", - " \n", - "Fragments to allocate: 12 0 out of 14 11\n", - "sublist 2 ['H14-C8-O5', 'H']\n", - "list1 15 ['H3-C2', 'C-O2', 'H3-C2', 'C-O2', 'H2-C', 'H-C-O', 'H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H3-C2', 'C-O2', 'H3-C2', 'C-O2', 'H2-C', 'H-C-O', 'H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H-O', 'C3-O6-Fe', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 145 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (1, 0, 0), (0, 0, 1), (1, 0, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H14-C8-O5', 'H']\n", - " \n", - "Fragments to allocate: 12 1 out of 14 11\n", - "sublist 2 ['C3-O6-Fe', 'H']\n", - "list1 15 ['H14-C8-O5', 'H3-C2', 'C-O2', 'H3-C2', 'C-O2', 'H2-C', 'H-C-O', 'H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H-O', 'C3-O6-Fe', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H14-C8-O5', 'H3-C2', 'C-O2', 'H3-C2', 'C-O2', 'H2-C', 'H-C-O', 'H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H-O', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 146 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['Fe', 'O', 'O', 'O', 'O', 'O', 'O', 'C', 'C', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, 1), (-1, 1, 0), (0, 1, 1), (-1, 0, 1), (-1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C3-O6-Fe', 'H']\n", - " \n", - "Fragments to allocate: 12 2 out of 14 11\n", - "sublist 2 ['H-O', 'H']\n", - "list1 15 ['C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'C-O2', 'H3-C2', 'C-O2', 'H2-C', 'H-C-O', 'H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H-O', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'C-O2', 'H3-C2', 'C-O2', 'H2-C', 'H-C-O', 'H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 147 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 1, 0), (0, 0, 1), (0, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-O', 'H']\n", - " \n", - "Fragments to allocate: 12 3 out of 14 11\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H-O', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'C-O2', 'H3-C2', 'C-O2', 'H2-C', 'H-C-O', 'H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-O', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'C-O2', 'H3-C2', 'C-O2', 'H2-C', 'H-C-O', 'H2-C', 'C-O2', 'H-C-O', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 148 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, 1), (-1, 0, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 12 4 out of 14 11\n", - "sublist 2 ['H-C-O', 'H']\n", - "list1 15 ['H2-C', 'H-O', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'C-O2', 'H3-C2', 'C-O2', 'H2-C', 'H-C-O', 'H2-C', 'C-O2', 'H-C-O', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H-O', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'C-O2', 'H3-C2', 'C-O2', 'H2-C', 'H-C-O', 'H2-C', 'C-O2', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 149 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-C-O', 'H']\n", - " \n", - "Fragments to allocate: 12 5 out of 14 11\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H-C-O', 'H2-C', 'H-O', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'C-O2', 'H3-C2', 'C-O2', 'H2-C', 'H-C-O', 'H2-C', 'C-O2', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-C-O', 'H2-C', 'H-O', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'C-O2', 'H3-C2', 'C-O2', 'H2-C', 'H-C-O', 'H2-C', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 150 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, 1), (-1, 1, 0), (0, 1, 1), (-1, 0, 1), (-1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 12 6 out of 14 11\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['C-O2', 'H-C-O', 'H2-C', 'H-O', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'C-O2', 'H3-C2', 'C-O2', 'H2-C', 'H-C-O', 'H2-C', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H-C-O', 'H2-C', 'H-O', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'C-O2', 'H3-C2', 'C-O2', 'H2-C', 'H-C-O', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 151 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, 1), (-1, 0, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 12 7 out of 14 11\n", - "sublist 2 ['H-C-O', 'H']\n", - "list1 15 ['H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H-O', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'C-O2', 'H3-C2', 'C-O2', 'H2-C', 'H-C-O', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H-O', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'C-O2', 'H3-C2', 'C-O2', 'H2-C', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 152 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-C-O', 'H']\n", - " \n", - "Fragments to allocate: 12 8 out of 14 11\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H-C-O', 'H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H-O', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'C-O2', 'H3-C2', 'C-O2', 'H2-C', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-C-O', 'H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H-O', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'C-O2', 'H3-C2', 'C-O2', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 153 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 1, 0), (0, 0, 1), (0, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 12 9 out of 14 11\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H2-C', 'H-C-O', 'H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H-O', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'C-O2', 'H3-C2', 'C-O2', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H-C-O', 'H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H-O', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'C-O2', 'H3-C2', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 154 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 12 10 out of 14 11\n", - "sublist 2 ['H3-C2', 'H']\n", - "list1 15 ['C-O2', 'H2-C', 'H-C-O', 'H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H-O', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'C-O2', 'H3-C2', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H2-C', 'H-C-O', 'H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H-O', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'C-O2', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 155 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, 1), (-1, 1, 0), (0, 1, 1), (-1, 0, 1), (-1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H3-C2', 'H']\n", - " \n", - "Fragments to allocate: 12 11 out of 14 11\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H3-C2', 'C-O2', 'H2-C', 'H-C-O', 'H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H-O', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'C-O2', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H3-C2', 'C-O2', 'H2-C', 'H-C-O', 'H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H-O', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 156 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, 1), (0, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 13 0 out of 14 11\n", - "sublist 2 ['H14-C8-O5', 'H']\n", - "list1 15 ['C-O2', 'H3-C2', 'C-O2', 'H2-C', 'H-C-O', 'H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H-O', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H3-C2', 'C-O2', 'H2-C', 'H-C-O', 'H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H-O', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 157 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, 1), (0, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H14-C8-O5', 'H']\n", - " \n", - "Fragments to allocate: 13 1 out of 14 11\n", - "sublist 2 ['H3-C2', 'H']\n", - "list1 15 ['H14-C8-O5', 'C-O2', 'H3-C2', 'C-O2', 'H2-C', 'H-C-O', 'H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H-O', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H14-C8-O5', 'C-O2', 'H3-C2', 'C-O2', 'H2-C', 'H-C-O', 'H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H-O', 'C3-O6-Fe', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 158 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, 1), (-1, 1, 0), (0, 1, 1), (-1, 0, 1), (-1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H3-C2', 'H']\n", - " \n", - "Fragments to allocate: 13 2 out of 14 11\n", - "sublist 2 ['H14-C8-O5', 'H']\n", - "list1 15 ['H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'C-O2', 'H2-C', 'H-C-O', 'H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H-O', 'C3-O6-Fe', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'C-O2', 'H2-C', 'H-C-O', 'H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H-O', 'C3-O6-Fe', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 159 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H14-C8-O5', 'H']\n", - " \n", - "Fragments to allocate: 13 3 out of 14 11\n", - "sublist 2 ['C3-O6-Fe', 'H']\n", - "list1 15 ['H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'C-O2', 'H2-C', 'H-C-O', 'H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H-O', 'C3-O6-Fe', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'C-O2', 'H2-C', 'H-C-O', 'H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H-O', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 160 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['Fe', 'O', 'O', 'O', 'O', 'O', 'O', 'C', 'C', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 1, 0), (0, 0, 1), (0, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C3-O6-Fe', 'H']\n", - " \n", - "Fragments to allocate: 13 4 out of 14 11\n", - "sublist 2 ['H-O', 'H']\n", - "list1 15 ['C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'C-O2', 'H2-C', 'H-C-O', 'H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H-O', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'C-O2', 'H2-C', 'H-C-O', 'H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 161 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-O', 'H']\n", - " \n", - "Fragments to allocate: 13 5 out of 14 11\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H-O', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'C-O2', 'H2-C', 'H-C-O', 'H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-O', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'C-O2', 'H2-C', 'H-C-O', 'H2-C', 'C-O2', 'H-C-O', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 162 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, 1), (-1, 0, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 13 6 out of 14 11\n", - "sublist 2 ['H-C-O', 'H']\n", - "list1 15 ['H2-C', 'H-O', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'C-O2', 'H2-C', 'H-C-O', 'H2-C', 'C-O2', 'H-C-O', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H-O', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'C-O2', 'H2-C', 'H-C-O', 'H2-C', 'C-O2', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 163 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, 1), (-1, 1, 0), (0, 1, 1), (-1, 0, 1), (-1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-C-O', 'H']\n", - " \n", - "Fragments to allocate: 13 7 out of 14 11\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H-C-O', 'H2-C', 'H-O', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'C-O2', 'H2-C', 'H-C-O', 'H2-C', 'C-O2', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-C-O', 'H2-C', 'H-O', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'C-O2', 'H2-C', 'H-C-O', 'H2-C', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 164 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 13 8 out of 14 11\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['C-O2', 'H-C-O', 'H2-C', 'H-O', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'C-O2', 'H2-C', 'H-C-O', 'H2-C', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H-C-O', 'H2-C', 'H-O', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'C-O2', 'H2-C', 'H-C-O', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 165 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, 1), (-1, 0, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 13 9 out of 14 11\n", - "sublist 2 ['H-C-O', 'H']\n", - "list1 15 ['H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H-O', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'C-O2', 'H2-C', 'H-C-O', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H-O', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'C-O2', 'H2-C', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 166 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 1, 0), (0, 0, 1), (0, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-C-O', 'H']\n", - " \n", - "Fragments to allocate: 13 10 out of 14 11\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H-C-O', 'H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H-O', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'C-O2', 'H2-C', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-C-O', 'H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H-O', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'C-O2', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 167 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, 1), (-1, 1, 0), (0, 1, 1), (-1, 0, 1), (-1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 13 11 out of 14 11\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H2-C', 'H-C-O', 'H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H-O', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'C-O2', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H-C-O', 'H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H-O', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 168 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (1, 0, 0), (0, 0, 1), (1, 0, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 14 0 out of 14 11\n", - "sublist 2 ['H19-C11-O6', 'H']\n", - "list1 15 ['C-O2', 'H2-C', 'H-C-O', 'H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H-O', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H2-C', 'H-C-O', 'H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H-O', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 169 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (1, 0, 0), (0, 0, 1), (1, 0, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H19-C11-O6', 'H']\n", - " \n", - "Fragments to allocate: 14 1 out of 14 11\n", - "sublist 2 ['H3-C2', 'H']\n", - "list1 15 ['H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O', 'H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H-O', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O', 'H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H-O', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 170 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, 1), (-1, 1, 0), (0, 1, 1), (-1, 0, 1), (-1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H3-C2', 'H']\n", - " \n", - "Fragments to allocate: 14 2 out of 14 11\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O', 'H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H-O', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O', 'H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H-O', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 171 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 1, 0), (0, 0, 1), (0, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 14 3 out of 14 11\n", - "sublist 2 ['H14-C8-O5', 'H']\n", - "list1 15 ['C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O', 'H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H-O', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O', 'H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H-O', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 172 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, 1), (-1, 0, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H14-C8-O5', 'H']\n", - " \n", - "Fragments to allocate: 14 4 out of 14 11\n", - "sublist 2 ['H3-C2', 'H']\n", - "list1 15 ['H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O', 'H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H-O', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O', 'H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 173 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H3-C2', 'H']\n", - " \n", - "Fragments to allocate: 14 5 out of 14 11\n", - "sublist 2 ['H14-C8-O5', 'H']\n", - "list1 15 ['H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O', 'H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O', 'H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H-O', 'C3-O6-Fe']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 174 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, 1), (-1, 1, 0), (0, 1, 1), (-1, 0, 1), (-1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H14-C8-O5', 'H']\n", - " \n", - "Fragments to allocate: 14 6 out of 14 11\n", - "sublist 2 ['C3-O6-Fe', 'H']\n", - "list1 15 ['H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O', 'H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H-O', 'C3-O6-Fe']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O', 'H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 175 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['Fe', 'O', 'O', 'O', 'O', 'O', 'O', 'C', 'C', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, 1), (-1, 0, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C3-O6-Fe', 'H']\n", - " \n", - "Fragments to allocate: 14 7 out of 14 11\n", - "sublist 2 ['H-O', 'H']\n", - "list1 15 ['C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O', 'H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O', 'H2-C', 'C-O2', 'H-C-O', 'H2-C']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 176 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-O', 'H']\n", - " \n", - "Fragments to allocate: 14 8 out of 14 11\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H-O', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O', 'H2-C', 'C-O2', 'H-C-O', 'H2-C']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-O', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O', 'H2-C', 'C-O2', 'H-C-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 177 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 1, 0), (0, 0, 1), (0, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 14 9 out of 14 11\n", - "sublist 2 ['H-C-O', 'H']\n", - "list1 15 ['H2-C', 'H-O', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O', 'H2-C', 'C-O2', 'H-C-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H-O', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O', 'H2-C', 'C-O2']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 178 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-C-O', 'H']\n", - " \n", - "Fragments to allocate: 14 10 out of 14 11\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H-C-O', 'H2-C', 'H-O', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O', 'H2-C', 'C-O2']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-C-O', 'H2-C', 'H-O', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O', 'H2-C']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 179 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, 1), (-1, 1, 0), (0, 1, 1), (-1, 0, 1), (-1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 14 11 out of 14 11\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['C-O2', 'H-C-O', 'H2-C', 'H-O', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O', 'H2-C']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H-C-O', 'H2-C', 'H-O', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 180 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, 1), (0, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " Increased Threshold_tmat. Now: 0.6000000000000001\n", - " Maxsize of the translation matrix is= 12\n", - " \n", - "Fragments to allocate: 0 0 out of 14 11\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H-O', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H-C-O', 'H2-C', 'H-O', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 1 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 0 1 out of 14 11\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H-O', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H-C-O', 'H2-C', 'H-O', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 2 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 0 2 out of 14 11\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H-O', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H-C-O', 'H2-C', 'H-O', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 3 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 0 3 out of 14 11\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H-O', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H-C-O', 'H2-C', 'H-O', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 4 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 0 4 out of 14 11\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H-O', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H-C-O', 'H2-C', 'H-O', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 5 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 0 5 out of 14 11\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H-O', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H-C-O', 'H2-C', 'H-O', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 6 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 0 6 out of 14 11\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H-O', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H-C-O', 'H2-C', 'H-O', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 7 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 0 7 out of 14 11\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H-O', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H-C-O', 'H2-C', 'H-O', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 8 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 0 8 out of 14 11\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H-O', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H-C-O', 'H2-C', 'H-O', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 9 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 0 9 out of 14 11\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H-O', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H-C-O', 'H2-C', 'H-O', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 10 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 0 10 out of 14 11\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H-O', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H-C-O', 'H2-C', 'H-O', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 11 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (-1, -1, 0), (0, -1, -1), (0, -1, 1), (-1, 0, -1), (-1, 0, 1), (-1, -1, -1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 0 11 out of 14 11\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H-O', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H-C-O', 'H2-C', 'H-O', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 12 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, 1), (1, 0, 0), (0, -1, 1), (1, -1, 0), (1, 0, 1), (1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 1 0 out of 14 11\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H-O', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H-C-O', 'H2-C', 'H-O', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 13 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, 1), (1, 0, 0), (0, -1, 1), (1, -1, 0), (1, 0, 1), (1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 1 1 out of 14 11\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['C-O2', 'H2-C', 'H-C-O', 'H2-C', 'H-O', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H-C-O', 'H2-C', 'H-O', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 14 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (-1, -1, 0), (0, -1, -1), (0, -1, 1), (-1, 0, -1), (-1, 0, 1), (-1, -1, -1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 1 2 out of 14 11\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H-O', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H-C-O', 'H2-C', 'H-O', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 15 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 1 3 out of 14 11\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['C-O2', 'H2-C', 'H-C-O', 'H2-C', 'H-O', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H-C-O', 'H2-C', 'H-O', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 16 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 1 4 out of 14 11\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H-O', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H-C-O', 'H2-C', 'H-O', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 17 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 1 5 out of 14 11\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['C-O2', 'H2-C', 'H-C-O', 'H2-C', 'H-O', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H-C-O', 'H2-C', 'H-O', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 18 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 1 6 out of 14 11\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H-O', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H-C-O', 'H2-C', 'H-O', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 19 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 1 7 out of 14 11\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['C-O2', 'H2-C', 'H-C-O', 'H2-C', 'H-O', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H-C-O', 'H2-C', 'H-O', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 20 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 1 8 out of 14 11\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H-O', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H-C-O', 'H2-C', 'H-O', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 21 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 1 9 out of 14 11\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['C-O2', 'H2-C', 'H-C-O', 'H2-C', 'H-O', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H-C-O', 'H2-C', 'H-O', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 22 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 1 10 out of 14 11\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H-O', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H-C-O', 'H2-C', 'H-O', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 23 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 1 11 out of 14 11\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['C-O2', 'H2-C', 'H-C-O', 'H2-C', 'H-O', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H-C-O', 'H2-C', 'H-O', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 24 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 2 0 out of 14 11\n", - "sublist 2 ['H-C-O', 'H']\n", - "list1 15 ['H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H-O', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'C-O2', 'H2-C', 'H-O', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 25 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-C-O', 'H']\n", - " \n", - "Fragments to allocate: 2 1 out of 14 11\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H-C-O', 'H2-C', 'C-O2', 'H2-C', 'H-O', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-C-O', 'H2-C', 'H2-C', 'H-O', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 26 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 2 2 out of 14 11\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H-O', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H-C-O', 'H2-C', 'H-O', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 27 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 2 3 out of 14 11\n", - "sublist 2 ['H-C-O', 'H']\n", - "list1 15 ['H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H-O', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'C-O2', 'H2-C', 'H-O', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 28 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-C-O', 'H']\n", - " \n", - "Fragments to allocate: 2 4 out of 14 11\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H-C-O', 'H2-C', 'C-O2', 'H2-C', 'H-O', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-C-O', 'H2-C', 'H2-C', 'H-O', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 29 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 2 5 out of 14 11\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H-O', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H-C-O', 'H2-C', 'H-O', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 30 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 2 6 out of 14 11\n", - "sublist 2 ['H-C-O', 'H']\n", - "list1 15 ['H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H-O', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'C-O2', 'H2-C', 'H-O', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 31 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-C-O', 'H']\n", - " \n", - "Fragments to allocate: 2 7 out of 14 11\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H-C-O', 'H2-C', 'C-O2', 'H2-C', 'H-O', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-C-O', 'H2-C', 'H2-C', 'H-O', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 32 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 2 8 out of 14 11\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H-O', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H-C-O', 'H2-C', 'H-O', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 33 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 2 9 out of 14 11\n", - "sublist 2 ['H-C-O', 'H']\n", - "list1 15 ['H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H-O', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'C-O2', 'H2-C', 'H-O', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 34 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-C-O', 'H']\n", - " \n", - "Fragments to allocate: 2 10 out of 14 11\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H-C-O', 'H2-C', 'C-O2', 'H2-C', 'H-O', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-C-O', 'H2-C', 'H2-C', 'H-O', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 35 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (-1, -1, 0), (0, -1, -1), (0, -1, 1), (-1, 0, -1), (-1, 0, 1), (-1, -1, -1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 2 11 out of 14 11\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H-O', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H-C-O', 'H2-C', 'H-O', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 36 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, 1), (1, 0, 0), (0, -1, 1), (1, -1, 0), (1, 0, 1), (1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 3 0 out of 14 11\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H-O', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'C-O2', 'H-C-O', 'H-O', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 37 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, 1), (1, 0, 0), (0, -1, 1), (1, -1, 0), (1, 0, 1), (1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 3 1 out of 14 11\n", - "sublist 2 ['H-C-O', 'H']\n", - "list1 15 ['H2-C', 'H2-C', 'C-O2', 'H-C-O', 'H-O', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H2-C', 'C-O2', 'H-O', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 38 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (-1, -1, 0), (0, -1, -1), (0, -1, 1), (-1, 0, -1), (-1, 0, 1), (-1, -1, -1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-C-O', 'H']\n", - " \n", - "Fragments to allocate: 3 2 out of 14 11\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H-C-O', 'H2-C', 'H2-C', 'C-O2', 'H-O', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-C-O', 'H2-C', 'H2-C', 'H-O', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 39 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 3 3 out of 14 11\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H-O', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H-C-O', 'H2-C', 'H-O', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 40 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 3 4 out of 14 11\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H-O', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'C-O2', 'H-C-O', 'H-O', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 41 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 3 5 out of 14 11\n", - "sublist 2 ['H-C-O', 'H']\n", - "list1 15 ['H2-C', 'H2-C', 'C-O2', 'H-C-O', 'H-O', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H2-C', 'C-O2', 'H-O', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 42 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-C-O', 'H']\n", - " \n", - "Fragments to allocate: 3 6 out of 14 11\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H-C-O', 'H2-C', 'H2-C', 'C-O2', 'H-O', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-C-O', 'H2-C', 'H2-C', 'H-O', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 43 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 3 7 out of 14 11\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H-O', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H-C-O', 'H2-C', 'H-O', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 44 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 3 8 out of 14 11\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H-O', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'C-O2', 'H-C-O', 'H-O', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 45 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 3 9 out of 14 11\n", - "sublist 2 ['H-C-O', 'H']\n", - "list1 15 ['H2-C', 'H2-C', 'C-O2', 'H-C-O', 'H-O', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H2-C', 'C-O2', 'H-O', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 46 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-C-O', 'H']\n", - " \n", - "Fragments to allocate: 3 10 out of 14 11\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H-C-O', 'H2-C', 'H2-C', 'C-O2', 'H-O', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-C-O', 'H2-C', 'H2-C', 'H-O', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 47 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 3 11 out of 14 11\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H-O', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H-C-O', 'H2-C', 'H-O', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 48 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 4 0 out of 14 11\n", - "sublist 2 ['H-O', 'H']\n", - "list1 15 ['H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H-O', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'C-O2', 'H-C-O', 'H2-C', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 49 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-O', 'H']\n", - " \n", - "Fragments to allocate: 4 1 out of 14 11\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H-O', 'H2-C', 'C-O2', 'H-C-O', 'H2-C', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-O', 'H2-C', 'C-O2', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 50 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 4 2 out of 14 11\n", - "sublist 2 ['H-C-O', 'H']\n", - "list1 15 ['H2-C', 'H-O', 'H2-C', 'C-O2', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H-O', 'H2-C', 'C-O2', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 51 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-C-O', 'H']\n", - " \n", - "Fragments to allocate: 4 3 out of 14 11\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H-C-O', 'H2-C', 'H-O', 'H2-C', 'C-O2', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-C-O', 'H2-C', 'H-O', 'H2-C', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 52 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 4 4 out of 14 11\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['C-O2', 'H-C-O', 'H2-C', 'H-O', 'H2-C', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H-C-O', 'H2-C', 'H-O', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 53 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 4 5 out of 14 11\n", - "sublist 2 ['H-O', 'H']\n", - "list1 15 ['H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H-O', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'C-O2', 'H-C-O', 'H2-C', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 54 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-O', 'H']\n", - " \n", - "Fragments to allocate: 4 6 out of 14 11\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H-O', 'H2-C', 'C-O2', 'H-C-O', 'H2-C', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-O', 'H2-C', 'C-O2', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 55 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 4 7 out of 14 11\n", - "sublist 2 ['H-C-O', 'H']\n", - "list1 15 ['H2-C', 'H-O', 'H2-C', 'C-O2', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H-O', 'H2-C', 'C-O2', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 56 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-C-O', 'H']\n", - " \n", - "Fragments to allocate: 4 8 out of 14 11\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H-C-O', 'H2-C', 'H-O', 'H2-C', 'C-O2', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-C-O', 'H2-C', 'H-O', 'H2-C', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 57 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 4 9 out of 14 11\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['C-O2', 'H-C-O', 'H2-C', 'H-O', 'H2-C', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H-C-O', 'H2-C', 'H-O', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 58 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 4 10 out of 14 11\n", - "sublist 2 ['H-O', 'H']\n", - "list1 15 ['H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H-O', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'C-O2', 'H-C-O', 'H2-C', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 59 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (-1, -1, 0), (0, -1, -1), (0, -1, 1), (-1, 0, -1), (-1, 0, 1), (-1, -1, -1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-O', 'H']\n", - " \n", - "Fragments to allocate: 4 11 out of 14 11\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H-O', 'H2-C', 'C-O2', 'H-C-O', 'H2-C', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-O', 'H2-C', 'C-O2', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 60 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, 1), (1, 0, 0), (0, -1, 1), (1, -1, 0), (1, 0, 1), (1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 5 0 out of 14 11\n", - "sublist 2 ['C3-O6-Fe', 'H']\n", - "list1 15 ['H2-C', 'H-O', 'H2-C', 'C-O2', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H-O', 'H2-C', 'C-O2', 'H-C-O', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 61 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['Fe', 'O', 'O', 'O', 'O', 'O', 'O', 'C', 'C', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, 1), (1, 0, 0), (0, -1, 1), (1, -1, 0), (1, 0, 1), (1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C3-O6-Fe', 'H']\n", - " \n", - "Fragments to allocate: 5 1 out of 14 11\n", - "sublist 2 ['H-C-O', 'H']\n", - "list1 15 ['C3-O6-Fe', 'H2-C', 'H-O', 'H2-C', 'C-O2', 'H-C-O', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C3-O6-Fe', 'H2-C', 'H-O', 'H2-C', 'C-O2', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 62 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (-1, -1, 0), (0, -1, -1), (0, -1, 1), (-1, 0, -1), (-1, 0, 1), (-1, -1, -1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-C-O', 'H']\n", - " \n", - "Fragments to allocate: 5 2 out of 14 11\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H-C-O', 'C3-O6-Fe', 'H2-C', 'H-O', 'H2-C', 'C-O2', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-C-O', 'C3-O6-Fe', 'H2-C', 'H-O', 'H2-C', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 63 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 5 3 out of 14 11\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['C-O2', 'H-C-O', 'C3-O6-Fe', 'H2-C', 'H-O', 'H2-C', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H-C-O', 'C3-O6-Fe', 'H2-C', 'H-O', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 64 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 5 4 out of 14 11\n", - "sublist 2 ['H-O', 'H']\n", - "list1 15 ['H2-C', 'C-O2', 'H-C-O', 'C3-O6-Fe', 'H2-C', 'H-O', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'C-O2', 'H-C-O', 'C3-O6-Fe', 'H2-C', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 65 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-O', 'H']\n", - " \n", - "Fragments to allocate: 5 5 out of 14 11\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H-O', 'H2-C', 'C-O2', 'H-C-O', 'C3-O6-Fe', 'H2-C', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-O', 'H2-C', 'C-O2', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 66 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 5 6 out of 14 11\n", - "sublist 2 ['C3-O6-Fe', 'H']\n", - "list1 15 ['H2-C', 'H-O', 'H2-C', 'C-O2', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H-O', 'H2-C', 'C-O2', 'H-C-O', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 67 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['Fe', 'O', 'O', 'O', 'O', 'O', 'O', 'C', 'C', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C3-O6-Fe', 'H']\n", - " \n", - "Fragments to allocate: 5 7 out of 14 11\n", - "sublist 2 ['H-C-O', 'H']\n", - "list1 15 ['C3-O6-Fe', 'H2-C', 'H-O', 'H2-C', 'C-O2', 'H-C-O', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C3-O6-Fe', 'H2-C', 'H-O', 'H2-C', 'C-O2', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 68 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-C-O', 'H']\n", - " \n", - "Fragments to allocate: 5 8 out of 14 11\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H-C-O', 'C3-O6-Fe', 'H2-C', 'H-O', 'H2-C', 'C-O2', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-C-O', 'C3-O6-Fe', 'H2-C', 'H-O', 'H2-C', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 69 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 5 9 out of 14 11\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['C-O2', 'H-C-O', 'C3-O6-Fe', 'H2-C', 'H-O', 'H2-C', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H-C-O', 'C3-O6-Fe', 'H2-C', 'H-O', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 70 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 5 10 out of 14 11\n", - "sublist 2 ['H-O', 'H']\n", - "list1 15 ['H2-C', 'C-O2', 'H-C-O', 'C3-O6-Fe', 'H2-C', 'H-O', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'C-O2', 'H-C-O', 'C3-O6-Fe', 'H2-C', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 71 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-O', 'H']\n", - " \n", - "Fragments to allocate: 5 11 out of 14 11\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H-O', 'H2-C', 'C-O2', 'H-C-O', 'C3-O6-Fe', 'H2-C', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-O', 'H2-C', 'C-O2', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 72 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 6 0 out of 14 11\n", - "sublist 2 ['H14-C8-O5', 'H']\n", - "list1 15 ['H2-C', 'H-O', 'H2-C', 'C-O2', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H-O', 'H2-C', 'C-O2', 'H-C-O', 'C3-O6-Fe', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 73 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H14-C8-O5', 'H']\n", - " \n", - "Fragments to allocate: 6 1 out of 14 11\n", - "sublist 2 ['C3-O6-Fe', 'H']\n", - "list1 15 ['H14-C8-O5', 'H2-C', 'H-O', 'H2-C', 'C-O2', 'H-C-O', 'C3-O6-Fe', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H14-C8-O5', 'H2-C', 'H-O', 'H2-C', 'C-O2', 'H-C-O', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 74 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['Fe', 'O', 'O', 'O', 'O', 'O', 'O', 'C', 'C', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C3-O6-Fe', 'H']\n", - " \n", - "Fragments to allocate: 6 2 out of 14 11\n", - "sublist 2 ['H-C-O', 'H']\n", - "list1 15 ['C3-O6-Fe', 'H14-C8-O5', 'H2-C', 'H-O', 'H2-C', 'C-O2', 'H-C-O', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C3-O6-Fe', 'H14-C8-O5', 'H2-C', 'H-O', 'H2-C', 'C-O2', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 75 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-C-O', 'H']\n", - " \n", - "Fragments to allocate: 6 3 out of 14 11\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H2-C', 'H-O', 'H2-C', 'C-O2', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H2-C', 'H-O', 'H2-C', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 76 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 6 4 out of 14 11\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['C-O2', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H2-C', 'H-O', 'H2-C', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H2-C', 'H-O', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 77 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 6 5 out of 14 11\n", - "sublist 2 ['H-O', 'H']\n", - "list1 15 ['H2-C', 'C-O2', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H2-C', 'H-O', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'C-O2', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H2-C', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 78 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-O', 'H']\n", - " \n", - "Fragments to allocate: 6 6 out of 14 11\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H-O', 'H2-C', 'C-O2', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H2-C', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-O', 'H2-C', 'C-O2', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 79 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 6 7 out of 14 11\n", - "sublist 2 ['H14-C8-O5', 'H']\n", - "list1 15 ['H2-C', 'H-O', 'H2-C', 'C-O2', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H-O', 'H2-C', 'C-O2', 'H-C-O', 'C3-O6-Fe', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 80 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H14-C8-O5', 'H']\n", - " \n", - "Fragments to allocate: 6 8 out of 14 11\n", - "sublist 2 ['C3-O6-Fe', 'H']\n", - "list1 15 ['H14-C8-O5', 'H2-C', 'H-O', 'H2-C', 'C-O2', 'H-C-O', 'C3-O6-Fe', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H14-C8-O5', 'H2-C', 'H-O', 'H2-C', 'C-O2', 'H-C-O', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 81 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['Fe', 'O', 'O', 'O', 'O', 'O', 'O', 'C', 'C', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C3-O6-Fe', 'H']\n", - " \n", - "Fragments to allocate: 6 9 out of 14 11\n", - "sublist 2 ['H-C-O', 'H']\n", - "list1 15 ['C3-O6-Fe', 'H14-C8-O5', 'H2-C', 'H-O', 'H2-C', 'C-O2', 'H-C-O', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C3-O6-Fe', 'H14-C8-O5', 'H2-C', 'H-O', 'H2-C', 'C-O2', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 82 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-C-O', 'H']\n", - " \n", - "Fragments to allocate: 6 10 out of 14 11\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H2-C', 'H-O', 'H2-C', 'C-O2', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H2-C', 'H-O', 'H2-C', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 83 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (-1, -1, 0), (0, -1, -1), (0, -1, 1), (-1, 0, -1), (-1, 0, 1), (-1, -1, -1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 6 11 out of 14 11\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['C-O2', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H2-C', 'H-O', 'H2-C', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H2-C', 'H-O', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 84 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, 1), (1, 0, 0), (0, -1, 1), (1, -1, 0), (1, 0, 1), (1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 7 0 out of 14 11\n", - "sublist 2 ['H3-C2', 'H']\n", - "list1 15 ['H2-C', 'C-O2', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H2-C', 'H-O', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'C-O2', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H2-C', 'H-O', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 85 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, 1), (1, 0, 0), (0, -1, 1), (1, -1, 0), (1, 0, 1), (1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H3-C2', 'H']\n", - " \n", - "Fragments to allocate: 7 1 out of 14 11\n", - "sublist 2 ['H-O', 'H']\n", - "list1 15 ['H3-C2', 'H2-C', 'C-O2', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H2-C', 'H-O', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H3-C2', 'H2-C', 'C-O2', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H2-C', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 86 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (-1, -1, 0), (0, -1, -1), (0, -1, 1), (-1, 0, -1), (-1, 0, 1), (-1, -1, -1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-O', 'H']\n", - " \n", - "Fragments to allocate: 7 2 out of 14 11\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H-O', 'H3-C2', 'H2-C', 'C-O2', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H2-C', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-O', 'H3-C2', 'H2-C', 'C-O2', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 87 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 7 3 out of 14 11\n", - "sublist 2 ['H14-C8-O5', 'H']\n", - "list1 15 ['H2-C', 'H-O', 'H3-C2', 'H2-C', 'C-O2', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H-O', 'H3-C2', 'H2-C', 'C-O2', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 88 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H14-C8-O5', 'H']\n", - " \n", - "Fragments to allocate: 7 4 out of 14 11\n", - "sublist 2 ['C3-O6-Fe', 'H']\n", - "list1 15 ['H14-C8-O5', 'H2-C', 'H-O', 'H3-C2', 'H2-C', 'C-O2', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H14-C8-O5', 'H2-C', 'H-O', 'H3-C2', 'H2-C', 'C-O2', 'H-C-O', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 89 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['Fe', 'O', 'O', 'O', 'O', 'O', 'O', 'C', 'C', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C3-O6-Fe', 'H']\n", - " \n", - "Fragments to allocate: 7 5 out of 14 11\n", - "sublist 2 ['H-C-O', 'H']\n", - "list1 15 ['C3-O6-Fe', 'H14-C8-O5', 'H2-C', 'H-O', 'H3-C2', 'H2-C', 'C-O2', 'H-C-O', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C3-O6-Fe', 'H14-C8-O5', 'H2-C', 'H-O', 'H3-C2', 'H2-C', 'C-O2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 90 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-C-O', 'H']\n", - " \n", - "Fragments to allocate: 7 6 out of 14 11\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H2-C', 'H-O', 'H3-C2', 'H2-C', 'C-O2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H2-C', 'H-O', 'H3-C2', 'H2-C', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 91 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 7 7 out of 14 11\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['C-O2', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H2-C', 'H-O', 'H3-C2', 'H2-C', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H2-C', 'H-O', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 92 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 7 8 out of 14 11\n", - "sublist 2 ['H3-C2', 'H']\n", - "list1 15 ['H2-C', 'C-O2', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H2-C', 'H-O', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'C-O2', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H2-C', 'H-O', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 93 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H3-C2', 'H']\n", - " \n", - "Fragments to allocate: 7 9 out of 14 11\n", - "sublist 2 ['H-O', 'H']\n", - "list1 15 ['H3-C2', 'H2-C', 'C-O2', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H2-C', 'H-O', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H3-C2', 'H2-C', 'C-O2', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H2-C', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 94 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-O', 'H']\n", - " \n", - "Fragments to allocate: 7 10 out of 14 11\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H-O', 'H3-C2', 'H2-C', 'C-O2', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H2-C', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-O', 'H3-C2', 'H2-C', 'C-O2', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 95 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 7 11 out of 14 11\n", - "sublist 2 ['H14-C8-O5', 'H']\n", - "list1 15 ['H2-C', 'H-O', 'H3-C2', 'H2-C', 'C-O2', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H-O', 'H3-C2', 'H2-C', 'C-O2', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 96 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H14-C8-O5', 'H']\n", - " \n", - "Fragments to allocate: 8 0 out of 14 11\n", - "sublist 2 ['H14-C8-O5', 'H']\n", - "list1 15 ['H14-C8-O5', 'H2-C', 'H-O', 'H3-C2', 'H2-C', 'C-O2', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H14-C8-O5', 'H2-C', 'H-O', 'H3-C2', 'H2-C', 'C-O2', 'H-C-O', 'C3-O6-Fe', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 97 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H14-C8-O5', 'H']\n", - " \n", - "Fragments to allocate: 8 1 out of 14 11\n", - "sublist 2 ['C3-O6-Fe', 'H']\n", - "list1 15 ['H14-C8-O5', 'H14-C8-O5', 'H2-C', 'H-O', 'H3-C2', 'H2-C', 'C-O2', 'H-C-O', 'C3-O6-Fe', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H14-C8-O5', 'H14-C8-O5', 'H2-C', 'H-O', 'H3-C2', 'H2-C', 'C-O2', 'H-C-O', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 98 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['Fe', 'O', 'O', 'O', 'O', 'O', 'O', 'C', 'C', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C3-O6-Fe', 'H']\n", - " \n", - "Fragments to allocate: 8 2 out of 14 11\n", - "sublist 2 ['H-C-O', 'H']\n", - "list1 15 ['C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H2-C', 'H-O', 'H3-C2', 'H2-C', 'C-O2', 'H-C-O', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H2-C', 'H-O', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 99 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-C-O', 'H']\n", - " \n", - "Fragments to allocate: 8 3 out of 14 11\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H2-C', 'H-O', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H2-C', 'H-O', 'H3-C2', 'H2-C', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 100 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 8 4 out of 14 11\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['C-O2', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H2-C', 'H-O', 'H3-C2', 'H2-C', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H2-C', 'H-O', 'H3-C2', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 101 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 8 5 out of 14 11\n", - "sublist 2 ['H3-C2', 'H']\n", - "list1 15 ['H2-C', 'C-O2', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H2-C', 'H-O', 'H3-C2', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'C-O2', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H2-C', 'H-O', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 102 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H3-C2', 'H']\n", - " \n", - "Fragments to allocate: 8 6 out of 14 11\n", - "sublist 2 ['H-O', 'H']\n", - "list1 15 ['H3-C2', 'H2-C', 'C-O2', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H2-C', 'H-O', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H3-C2', 'H2-C', 'C-O2', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H2-C', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 103 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-O', 'H']\n", - " \n", - "Fragments to allocate: 8 7 out of 14 11\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H-O', 'H3-C2', 'H2-C', 'C-O2', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H2-C', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-O', 'H3-C2', 'H2-C', 'C-O2', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 104 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 8 8 out of 14 11\n", - "sublist 2 ['H14-C8-O5', 'H']\n", - "list1 15 ['H2-C', 'H-O', 'H3-C2', 'H2-C', 'C-O2', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H-O', 'H3-C2', 'H2-C', 'C-O2', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 105 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H14-C8-O5', 'H']\n", - " \n", - "Fragments to allocate: 8 9 out of 14 11\n", - "sublist 2 ['H14-C8-O5', 'H']\n", - "list1 15 ['H14-C8-O5', 'H2-C', 'H-O', 'H3-C2', 'H2-C', 'C-O2', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H14-C8-O5', 'H2-C', 'H-O', 'H3-C2', 'H2-C', 'C-O2', 'H-C-O', 'C3-O6-Fe', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 106 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H14-C8-O5', 'H']\n", - " \n", - "Fragments to allocate: 8 10 out of 14 11\n", - "sublist 2 ['C3-O6-Fe', 'H']\n", - "list1 15 ['H14-C8-O5', 'H14-C8-O5', 'H2-C', 'H-O', 'H3-C2', 'H2-C', 'C-O2', 'H-C-O', 'C3-O6-Fe', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H14-C8-O5', 'H14-C8-O5', 'H2-C', 'H-O', 'H3-C2', 'H2-C', 'C-O2', 'H-C-O', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 107 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['Fe', 'O', 'O', 'O', 'O', 'O', 'O', 'C', 'C', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (-1, -1, 0), (0, -1, -1), (0, -1, 1), (-1, 0, -1), (-1, 0, 1), (-1, -1, -1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C3-O6-Fe', 'H']\n", - " \n", - "Fragments to allocate: 8 11 out of 14 11\n", - "sublist 2 ['H-C-O', 'H']\n", - "list1 15 ['C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H2-C', 'H-O', 'H3-C2', 'H2-C', 'C-O2', 'H-C-O', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H2-C', 'H-O', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 108 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, 1), (1, 0, 0), (0, -1, 1), (1, -1, 0), (1, 0, 1), (1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-C-O', 'H']\n", - " \n", - "Fragments to allocate: 9 0 out of 14 11\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H2-C', 'H-O', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H2-C', 'H-O', 'H3-C2', 'H2-C', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 109 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, 1), (1, 0, 0), (0, -1, 1), (1, -1, 0), (1, 0, 1), (1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 9 1 out of 14 11\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['C-O2', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H2-C', 'H-O', 'H3-C2', 'H2-C', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H2-C', 'H-O', 'H3-C2', 'H2-C', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 110 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (-1, -1, 0), (0, -1, -1), (0, -1, 1), (-1, 0, -1), (-1, 0, 1), (-1, -1, -1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 9 2 out of 14 11\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['C-O2', 'C-O2', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H2-C', 'H-O', 'H3-C2', 'H2-C', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'C-O2', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H2-C', 'H-O', 'H3-C2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 111 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 9 3 out of 14 11\n", - "sublist 2 ['H3-C2', 'H']\n", - "list1 15 ['H2-C', 'C-O2', 'C-O2', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H2-C', 'H-O', 'H3-C2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'C-O2', 'C-O2', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H2-C', 'H-O', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 112 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H3-C2', 'H']\n", - " \n", - "Fragments to allocate: 9 4 out of 14 11\n", - "sublist 2 ['H-O', 'H']\n", - "list1 15 ['H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H2-C', 'H-O', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H2-C', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 113 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-O', 'H']\n", - " \n", - "Fragments to allocate: 9 5 out of 14 11\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H-O', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H2-C', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-O', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 114 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 9 6 out of 14 11\n", - "sublist 2 ['H14-C8-O5', 'H']\n", - "list1 15 ['H2-C', 'H-O', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H-O', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 115 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H14-C8-O5', 'H']\n", - " \n", - "Fragments to allocate: 9 7 out of 14 11\n", - "sublist 2 ['H14-C8-O5', 'H']\n", - "list1 15 ['H14-C8-O5', 'H2-C', 'H-O', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H14-C8-O5', 'H2-C', 'H-O', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'C3-O6-Fe', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 116 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H14-C8-O5', 'H']\n", - " \n", - "Fragments to allocate: 9 8 out of 14 11\n", - "sublist 2 ['C3-O6-Fe', 'H']\n", - "list1 15 ['H14-C8-O5', 'H14-C8-O5', 'H2-C', 'H-O', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'C3-O6-Fe', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H14-C8-O5', 'H14-C8-O5', 'H2-C', 'H-O', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 117 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['Fe', 'O', 'O', 'O', 'O', 'O', 'O', 'C', 'C', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C3-O6-Fe', 'H']\n", - " \n", - "Fragments to allocate: 9 9 out of 14 11\n", - "sublist 2 ['H-C-O', 'H']\n", - "list1 15 ['C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H2-C', 'H-O', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H2-C', 'H-O', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 118 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-C-O', 'H']\n", - " \n", - "Fragments to allocate: 9 10 out of 14 11\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H2-C', 'H-O', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H2-C', 'H-O', 'H3-C2', 'H2-C', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 119 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 9 11 out of 14 11\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['C-O2', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H2-C', 'H-O', 'H3-C2', 'H2-C', 'C-O2', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H2-C', 'H-O', 'H3-C2', 'H2-C', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 120 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 10 0 out of 14 11\n", - "sublist 2 ['H3-C2', 'H']\n", - "list1 15 ['C-O2', 'C-O2', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H2-C', 'H-O', 'H3-C2', 'H2-C', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'C-O2', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H2-C', 'H-O', 'H3-C2', 'H2-C', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 121 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H3-C2', 'H']\n", - " \n", - "Fragments to allocate: 10 1 out of 14 11\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H3-C2', 'C-O2', 'C-O2', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H2-C', 'H-O', 'H3-C2', 'H2-C', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H3-C2', 'C-O2', 'C-O2', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H2-C', 'H-O', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 122 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 10 2 out of 14 11\n", - "sublist 2 ['H3-C2', 'H']\n", - "list1 15 ['H2-C', 'H3-C2', 'C-O2', 'C-O2', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H2-C', 'H-O', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H3-C2', 'C-O2', 'C-O2', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H2-C', 'H-O', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 123 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H3-C2', 'H']\n", - " \n", - "Fragments to allocate: 10 3 out of 14 11\n", - "sublist 2 ['H-O', 'H']\n", - "list1 15 ['H3-C2', 'H2-C', 'H3-C2', 'C-O2', 'C-O2', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H2-C', 'H-O', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H3-C2', 'H2-C', 'H3-C2', 'C-O2', 'C-O2', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H2-C', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 124 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-O', 'H']\n", - " \n", - "Fragments to allocate: 10 4 out of 14 11\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H-O', 'H3-C2', 'H2-C', 'H3-C2', 'C-O2', 'C-O2', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H2-C', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-O', 'H3-C2', 'H2-C', 'H3-C2', 'C-O2', 'C-O2', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 125 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 10 5 out of 14 11\n", - "sublist 2 ['H14-C8-O5', 'H']\n", - "list1 15 ['H2-C', 'H-O', 'H3-C2', 'H2-C', 'H3-C2', 'C-O2', 'C-O2', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H-O', 'H3-C2', 'H2-C', 'H3-C2', 'C-O2', 'C-O2', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 126 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H14-C8-O5', 'H']\n", - " \n", - "Fragments to allocate: 10 6 out of 14 11\n", - "sublist 2 ['H14-C8-O5', 'H']\n", - "list1 15 ['H14-C8-O5', 'H2-C', 'H-O', 'H3-C2', 'H2-C', 'H3-C2', 'C-O2', 'C-O2', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H14-C8-O5', 'H2-C', 'H-O', 'H3-C2', 'H2-C', 'H3-C2', 'C-O2', 'C-O2', 'H-C-O', 'C3-O6-Fe', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 127 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H14-C8-O5', 'H']\n", - " \n", - "Fragments to allocate: 10 7 out of 14 11\n", - "sublist 2 ['C3-O6-Fe', 'H']\n", - "list1 15 ['H14-C8-O5', 'H14-C8-O5', 'H2-C', 'H-O', 'H3-C2', 'H2-C', 'H3-C2', 'C-O2', 'C-O2', 'H-C-O', 'C3-O6-Fe', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H14-C8-O5', 'H14-C8-O5', 'H2-C', 'H-O', 'H3-C2', 'H2-C', 'H3-C2', 'C-O2', 'C-O2', 'H-C-O', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 128 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['Fe', 'O', 'O', 'O', 'O', 'O', 'O', 'C', 'C', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C3-O6-Fe', 'H']\n", - " \n", - "Fragments to allocate: 10 8 out of 14 11\n", - "sublist 2 ['H-C-O', 'H']\n", - "list1 15 ['C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H2-C', 'H-O', 'H3-C2', 'H2-C', 'H3-C2', 'C-O2', 'C-O2', 'H-C-O', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H2-C', 'H-O', 'H3-C2', 'H2-C', 'H3-C2', 'C-O2', 'C-O2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 129 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-C-O', 'H']\n", - " \n", - "Fragments to allocate: 10 9 out of 14 11\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H2-C', 'H-O', 'H3-C2', 'H2-C', 'H3-C2', 'C-O2', 'C-O2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H2-C', 'H-O', 'H3-C2', 'H2-C', 'H3-C2', 'C-O2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 130 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 10 10 out of 14 11\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['C-O2', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H2-C', 'H-O', 'H3-C2', 'H2-C', 'H3-C2', 'C-O2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H2-C', 'H-O', 'H3-C2', 'H2-C', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 131 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (-1, -1, 0), (0, -1, -1), (0, -1, 1), (-1, 0, -1), (-1, 0, 1), (-1, -1, -1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 10 11 out of 14 11\n", - "sublist 2 ['H3-C2', 'H']\n", - "list1 15 ['C-O2', 'C-O2', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H2-C', 'H-O', 'H3-C2', 'H2-C', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'C-O2', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H2-C', 'H-O', 'H3-C2', 'H2-C', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 132 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, 1), (1, 0, 0), (0, -1, 1), (1, -1, 0), (1, 0, 1), (1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H3-C2', 'H']\n", - " \n", - "Fragments to allocate: 11 0 out of 14 11\n", - "sublist 2 ['H19-C11-O6', 'H']\n", - "list1 15 ['H3-C2', 'C-O2', 'C-O2', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H2-C', 'H-O', 'H3-C2', 'H2-C', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H3-C2', 'C-O2', 'C-O2', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H2-C', 'H-O', 'H3-C2', 'H2-C', 'C-O2', 'H2-C', 'H-C-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 133 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, 1), (1, 0, 0), (0, -1, 1), (1, -1, 0), (1, 0, 1), (1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H19-C11-O6', 'H']\n", - " \n", - "Fragments to allocate: 11 1 out of 14 11\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H19-C11-O6', 'H3-C2', 'C-O2', 'C-O2', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H2-C', 'H-O', 'H3-C2', 'H2-C', 'C-O2', 'H2-C', 'H-C-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H19-C11-O6', 'H3-C2', 'C-O2', 'C-O2', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H2-C', 'H-O', 'H3-C2', 'C-O2', 'H2-C', 'H-C-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 134 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (-1, -1, 0), (0, -1, -1), (0, -1, 1), (-1, 0, -1), (-1, 0, 1), (-1, -1, -1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 11 2 out of 14 11\n", - "sublist 2 ['H3-C2', 'H']\n", - "list1 15 ['H2-C', 'H19-C11-O6', 'H3-C2', 'C-O2', 'C-O2', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H2-C', 'H-O', 'H3-C2', 'C-O2', 'H2-C', 'H-C-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H19-C11-O6', 'H3-C2', 'C-O2', 'C-O2', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H2-C', 'H-O', 'C-O2', 'H2-C', 'H-C-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 135 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H3-C2', 'H']\n", - " \n", - "Fragments to allocate: 11 3 out of 14 11\n", - "sublist 2 ['H-O', 'H']\n", - "list1 15 ['H3-C2', 'H2-C', 'H19-C11-O6', 'H3-C2', 'C-O2', 'C-O2', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H2-C', 'H-O', 'C-O2', 'H2-C', 'H-C-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H3-C2', 'H2-C', 'H19-C11-O6', 'H3-C2', 'C-O2', 'C-O2', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H2-C', 'C-O2', 'H2-C', 'H-C-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 136 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-O', 'H']\n", - " \n", - "Fragments to allocate: 11 4 out of 14 11\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H-O', 'H3-C2', 'H2-C', 'H19-C11-O6', 'H3-C2', 'C-O2', 'C-O2', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H2-C', 'C-O2', 'H2-C', 'H-C-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-O', 'H3-C2', 'H2-C', 'H19-C11-O6', 'H3-C2', 'C-O2', 'C-O2', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'C-O2', 'H2-C', 'H-C-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 137 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 11 5 out of 14 11\n", - "sublist 2 ['H14-C8-O5', 'H']\n", - "list1 15 ['H2-C', 'H-O', 'H3-C2', 'H2-C', 'H19-C11-O6', 'H3-C2', 'C-O2', 'C-O2', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'C-O2', 'H2-C', 'H-C-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H-O', 'H3-C2', 'H2-C', 'H19-C11-O6', 'H3-C2', 'C-O2', 'C-O2', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'C-O2', 'H2-C', 'H-C-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 138 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H14-C8-O5', 'H']\n", - " \n", - "Fragments to allocate: 11 6 out of 14 11\n", - "sublist 2 ['H14-C8-O5', 'H']\n", - "list1 15 ['H14-C8-O5', 'H2-C', 'H-O', 'H3-C2', 'H2-C', 'H19-C11-O6', 'H3-C2', 'C-O2', 'C-O2', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'C-O2', 'H2-C', 'H-C-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H14-C8-O5', 'H2-C', 'H-O', 'H3-C2', 'H2-C', 'H19-C11-O6', 'H3-C2', 'C-O2', 'C-O2', 'H-C-O', 'C3-O6-Fe', 'C-O2', 'H2-C', 'H-C-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 139 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H14-C8-O5', 'H']\n", - " \n", - "Fragments to allocate: 11 7 out of 14 11\n", - "sublist 2 ['C3-O6-Fe', 'H']\n", - "list1 15 ['H14-C8-O5', 'H14-C8-O5', 'H2-C', 'H-O', 'H3-C2', 'H2-C', 'H19-C11-O6', 'H3-C2', 'C-O2', 'C-O2', 'H-C-O', 'C3-O6-Fe', 'C-O2', 'H2-C', 'H-C-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H14-C8-O5', 'H14-C8-O5', 'H2-C', 'H-O', 'H3-C2', 'H2-C', 'H19-C11-O6', 'H3-C2', 'C-O2', 'C-O2', 'H-C-O', 'C-O2', 'H2-C', 'H-C-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 140 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['Fe', 'O', 'O', 'O', 'O', 'O', 'O', 'C', 'C', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C3-O6-Fe', 'H']\n", - " \n", - "Fragments to allocate: 11 8 out of 14 11\n", - "sublist 2 ['H-C-O', 'H']\n", - "list1 15 ['C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H2-C', 'H-O', 'H3-C2', 'H2-C', 'H19-C11-O6', 'H3-C2', 'C-O2', 'C-O2', 'H-C-O', 'C-O2', 'H2-C', 'H-C-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H2-C', 'H-O', 'H3-C2', 'H2-C', 'H19-C11-O6', 'H3-C2', 'C-O2', 'C-O2', 'C-O2', 'H2-C', 'H-C-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 141 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-C-O', 'H']\n", - " \n", - "Fragments to allocate: 11 9 out of 14 11\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H2-C', 'H-O', 'H3-C2', 'H2-C', 'H19-C11-O6', 'H3-C2', 'C-O2', 'C-O2', 'C-O2', 'H2-C', 'H-C-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H2-C', 'H-O', 'H3-C2', 'H2-C', 'H19-C11-O6', 'H3-C2', 'C-O2', 'C-O2', 'H2-C', 'H-C-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 142 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 11 10 out of 14 11\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['C-O2', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H2-C', 'H-O', 'H3-C2', 'H2-C', 'H19-C11-O6', 'H3-C2', 'C-O2', 'C-O2', 'H2-C', 'H-C-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H2-C', 'H-O', 'H3-C2', 'H2-C', 'H19-C11-O6', 'H3-C2', 'C-O2', 'H2-C', 'H-C-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 143 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 11 11 out of 14 11\n", - "sublist 2 ['H3-C2', 'H']\n", - "list1 15 ['C-O2', 'C-O2', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H2-C', 'H-O', 'H3-C2', 'H2-C', 'H19-C11-O6', 'H3-C2', 'C-O2', 'H2-C', 'H-C-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'C-O2', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H2-C', 'H-O', 'H3-C2', 'H2-C', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 144 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H3-C2', 'H']\n", - " \n", - "Fragments to allocate: 12 0 out of 14 11\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H3-C2', 'C-O2', 'C-O2', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H2-C', 'H-O', 'H3-C2', 'H2-C', 'H19-C11-O6', 'C-O2', 'H2-C', 'H-C-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H3-C2', 'C-O2', 'C-O2', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H2-C', 'H-O', 'H3-C2', 'H2-C', 'H19-C11-O6', 'H2-C', 'H-C-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 145 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 12 1 out of 14 11\n", - "sublist 2 ['H19-C11-O6', 'H']\n", - "list1 15 ['C-O2', 'H3-C2', 'C-O2', 'C-O2', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H2-C', 'H-O', 'H3-C2', 'H2-C', 'H19-C11-O6', 'H2-C', 'H-C-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H3-C2', 'C-O2', 'C-O2', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H2-C', 'H-O', 'H3-C2', 'H2-C', 'H2-C', 'H-C-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 146 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H19-C11-O6', 'H']\n", - " \n", - "Fragments to allocate: 12 2 out of 14 11\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H19-C11-O6', 'C-O2', 'H3-C2', 'C-O2', 'C-O2', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H2-C', 'H-O', 'H3-C2', 'H2-C', 'H2-C', 'H-C-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H19-C11-O6', 'C-O2', 'H3-C2', 'C-O2', 'C-O2', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H2-C', 'H-O', 'H3-C2', 'H2-C', 'H-C-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 147 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 12 3 out of 14 11\n", - "sublist 2 ['H3-C2', 'H']\n", - "list1 15 ['H2-C', 'H19-C11-O6', 'C-O2', 'H3-C2', 'C-O2', 'C-O2', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H2-C', 'H-O', 'H3-C2', 'H2-C', 'H-C-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H19-C11-O6', 'C-O2', 'H3-C2', 'C-O2', 'C-O2', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H2-C', 'H-O', 'H2-C', 'H-C-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 148 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H3-C2', 'H']\n", - " \n", - "Fragments to allocate: 12 4 out of 14 11\n", - "sublist 2 ['H-O', 'H']\n", - "list1 15 ['H3-C2', 'H2-C', 'H19-C11-O6', 'C-O2', 'H3-C2', 'C-O2', 'C-O2', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H2-C', 'H-O', 'H2-C', 'H-C-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H3-C2', 'H2-C', 'H19-C11-O6', 'C-O2', 'H3-C2', 'C-O2', 'C-O2', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H2-C', 'H2-C', 'H-C-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 149 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-O', 'H']\n", - " \n", - "Fragments to allocate: 12 5 out of 14 11\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H-O', 'H3-C2', 'H2-C', 'H19-C11-O6', 'C-O2', 'H3-C2', 'C-O2', 'C-O2', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H2-C', 'H2-C', 'H-C-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-O', 'H3-C2', 'H2-C', 'H19-C11-O6', 'C-O2', 'H3-C2', 'C-O2', 'C-O2', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H2-C', 'H-C-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 150 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 12 6 out of 14 11\n", - "sublist 2 ['H14-C8-O5', 'H']\n", - "list1 15 ['H2-C', 'H-O', 'H3-C2', 'H2-C', 'H19-C11-O6', 'C-O2', 'H3-C2', 'C-O2', 'C-O2', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H2-C', 'H-C-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H-O', 'H3-C2', 'H2-C', 'H19-C11-O6', 'C-O2', 'H3-C2', 'C-O2', 'C-O2', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H2-C', 'H-C-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 151 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H14-C8-O5', 'H']\n", - " \n", - "Fragments to allocate: 12 7 out of 14 11\n", - "sublist 2 ['H14-C8-O5', 'H']\n", - "list1 15 ['H14-C8-O5', 'H2-C', 'H-O', 'H3-C2', 'H2-C', 'H19-C11-O6', 'C-O2', 'H3-C2', 'C-O2', 'C-O2', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H2-C', 'H-C-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H14-C8-O5', 'H2-C', 'H-O', 'H3-C2', 'H2-C', 'H19-C11-O6', 'C-O2', 'H3-C2', 'C-O2', 'C-O2', 'H-C-O', 'C3-O6-Fe', 'H2-C', 'H-C-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 152 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H14-C8-O5', 'H']\n", - " \n", - "Fragments to allocate: 12 8 out of 14 11\n", - "sublist 2 ['C3-O6-Fe', 'H']\n", - "list1 15 ['H14-C8-O5', 'H14-C8-O5', 'H2-C', 'H-O', 'H3-C2', 'H2-C', 'H19-C11-O6', 'C-O2', 'H3-C2', 'C-O2', 'C-O2', 'H-C-O', 'C3-O6-Fe', 'H2-C', 'H-C-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H14-C8-O5', 'H14-C8-O5', 'H2-C', 'H-O', 'H3-C2', 'H2-C', 'H19-C11-O6', 'C-O2', 'H3-C2', 'C-O2', 'C-O2', 'H-C-O', 'H2-C', 'H-C-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 153 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['Fe', 'O', 'O', 'O', 'O', 'O', 'O', 'C', 'C', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C3-O6-Fe', 'H']\n", - " \n", - "Fragments to allocate: 12 9 out of 14 11\n", - "sublist 2 ['H-C-O', 'H']\n", - "list1 15 ['C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H2-C', 'H-O', 'H3-C2', 'H2-C', 'H19-C11-O6', 'C-O2', 'H3-C2', 'C-O2', 'C-O2', 'H-C-O', 'H2-C', 'H-C-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H2-C', 'H-O', 'H3-C2', 'H2-C', 'H19-C11-O6', 'C-O2', 'H3-C2', 'C-O2', 'C-O2', 'H2-C', 'H-C-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 154 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-C-O', 'H']\n", - " \n", - "Fragments to allocate: 12 10 out of 14 11\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H2-C', 'H-O', 'H3-C2', 'H2-C', 'H19-C11-O6', 'C-O2', 'H3-C2', 'C-O2', 'C-O2', 'H2-C', 'H-C-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H2-C', 'H-O', 'H3-C2', 'H2-C', 'H19-C11-O6', 'C-O2', 'H3-C2', 'C-O2', 'H2-C', 'H-C-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 155 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (-1, -1, 0), (0, -1, -1), (0, -1, 1), (-1, 0, -1), (-1, 0, 1), (-1, -1, -1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 12 11 out of 14 11\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['C-O2', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H2-C', 'H-O', 'H3-C2', 'H2-C', 'H19-C11-O6', 'C-O2', 'H3-C2', 'C-O2', 'H2-C', 'H-C-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H2-C', 'H-O', 'H3-C2', 'H2-C', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'H-C-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 156 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, 1), (1, 0, 0), (0, -1, 1), (1, -1, 0), (1, 0, 1), (1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 13 0 out of 14 11\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['C-O2', 'C-O2', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H2-C', 'H-O', 'H3-C2', 'H2-C', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'H-C-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'C-O2', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H2-C', 'H-O', 'H3-C2', 'H2-C', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H-C-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 157 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, 1), (1, 0, 0), (0, -1, 1), (1, -1, 0), (1, 0, 1), (1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 13 1 out of 14 11\n", - "sublist 2 ['H3-C2', 'H']\n", - "list1 15 ['H2-C', 'C-O2', 'C-O2', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H2-C', 'H-O', 'H3-C2', 'H2-C', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H-C-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'C-O2', 'C-O2', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H2-C', 'H-O', 'H3-C2', 'H2-C', 'H19-C11-O6', 'C-O2', 'H-C-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 158 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (-1, -1, 0), (0, -1, -1), (0, -1, 1), (-1, 0, -1), (-1, 0, 1), (-1, -1, -1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H3-C2', 'H']\n", - " \n", - "Fragments to allocate: 13 2 out of 14 11\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H2-C', 'H-O', 'H3-C2', 'H2-C', 'H19-C11-O6', 'C-O2', 'H-C-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H2-C', 'H-O', 'H3-C2', 'H2-C', 'H19-C11-O6', 'H-C-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 159 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 13 3 out of 14 11\n", - "sublist 2 ['H19-C11-O6', 'H']\n", - "list1 15 ['C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H2-C', 'H-O', 'H3-C2', 'H2-C', 'H19-C11-O6', 'H-C-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H2-C', 'H-O', 'H3-C2', 'H2-C', 'H-C-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 160 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H19-C11-O6', 'H']\n", - " \n", - "Fragments to allocate: 13 4 out of 14 11\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H2-C', 'H-O', 'H3-C2', 'H2-C', 'H-C-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H2-C', 'H-O', 'H3-C2', 'H-C-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 161 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 13 5 out of 14 11\n", - "sublist 2 ['H3-C2', 'H']\n", - "list1 15 ['H2-C', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H2-C', 'H-O', 'H3-C2', 'H-C-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H2-C', 'H-O', 'H-C-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 162 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H3-C2', 'H']\n", - " \n", - "Fragments to allocate: 13 6 out of 14 11\n", - "sublist 2 ['H-O', 'H']\n", - "list1 15 ['H3-C2', 'H2-C', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H2-C', 'H-O', 'H-C-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H3-C2', 'H2-C', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H2-C', 'H-C-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 163 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-O', 'H']\n", - " \n", - "Fragments to allocate: 13 7 out of 14 11\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H-O', 'H3-C2', 'H2-C', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H2-C', 'H-C-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-O', 'H3-C2', 'H2-C', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H-C-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 164 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 13 8 out of 14 11\n", - "sublist 2 ['H14-C8-O5', 'H']\n", - "list1 15 ['H2-C', 'H-O', 'H3-C2', 'H2-C', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H-C-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H-O', 'H3-C2', 'H2-C', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H-C-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 165 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H14-C8-O5', 'H']\n", - " \n", - "Fragments to allocate: 13 9 out of 14 11\n", - "sublist 2 ['H14-C8-O5', 'H']\n", - "list1 15 ['H14-C8-O5', 'H2-C', 'H-O', 'H3-C2', 'H2-C', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H-C-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H14-C8-O5', 'H2-C', 'H-O', 'H3-C2', 'H2-C', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'C3-O6-Fe', 'H-C-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 166 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H14-C8-O5', 'H']\n", - " \n", - "Fragments to allocate: 13 10 out of 14 11\n", - "sublist 2 ['C3-O6-Fe', 'H']\n", - "list1 15 ['H14-C8-O5', 'H14-C8-O5', 'H2-C', 'H-O', 'H3-C2', 'H2-C', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'C3-O6-Fe', 'H-C-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H14-C8-O5', 'H14-C8-O5', 'H2-C', 'H-O', 'H3-C2', 'H2-C', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 167 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['Fe', 'O', 'O', 'O', 'O', 'O', 'O', 'C', 'C', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C3-O6-Fe', 'H']\n", - " \n", - "Fragments to allocate: 13 11 out of 14 11\n", - "sublist 2 ['H-C-O', 'H']\n", - "list1 15 ['C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H2-C', 'H-O', 'H3-C2', 'H2-C', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H2-C', 'H-O', 'H3-C2', 'H2-C', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 168 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-C-O', 'H']\n", - " \n", - "Fragments to allocate: 14 0 out of 14 11\n", - "sublist 2 ['H-C-O', 'H']\n", - "list1 15 ['H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H2-C', 'H-O', 'H3-C2', 'H2-C', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H2-C', 'H-O', 'H3-C2', 'H2-C', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 169 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-C-O', 'H']\n", - " \n", - "Fragments to allocate: 14 1 out of 14 11\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H2-C', 'H-O', 'H3-C2', 'H2-C', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H2-C', 'H-O', 'H3-C2', 'H2-C', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'C-O2']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 170 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 14 2 out of 14 11\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H2-C', 'H-O', 'H3-C2', 'H2-C', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'C-O2']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H2-C', 'H-O', 'H3-C2', 'H2-C', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 171 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 14 3 out of 14 11\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H2-C', 'H-O', 'H3-C2', 'H2-C', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H2-C', 'H-O', 'H3-C2', 'H2-C', 'H19-C11-O6', 'C-O2', 'H3-C2']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 172 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 14 4 out of 14 11\n", - "sublist 2 ['H3-C2', 'H']\n", - "list1 15 ['H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H2-C', 'H-O', 'H3-C2', 'H2-C', 'H19-C11-O6', 'C-O2', 'H3-C2']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H2-C', 'H-O', 'H3-C2', 'H2-C', 'H19-C11-O6', 'C-O2']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 173 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H3-C2', 'H']\n", - " \n", - "Fragments to allocate: 14 5 out of 14 11\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H2-C', 'H-O', 'H3-C2', 'H2-C', 'H19-C11-O6', 'C-O2']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H2-C', 'H-O', 'H3-C2', 'H2-C', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 174 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 14 6 out of 14 11\n", - "sublist 2 ['H19-C11-O6', 'H']\n", - "list1 15 ['C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H2-C', 'H-O', 'H3-C2', 'H2-C', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H2-C', 'H-O', 'H3-C2', 'H2-C']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 175 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H19-C11-O6', 'H']\n", - " \n", - "Fragments to allocate: 14 7 out of 14 11\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H2-C', 'H-O', 'H3-C2', 'H2-C']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H2-C', 'H-O', 'H3-C2']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 176 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 14 8 out of 14 11\n", - "sublist 2 ['H3-C2', 'H']\n", - "list1 15 ['H2-C', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H2-C', 'H-O', 'H3-C2']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H2-C', 'H-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 177 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H3-C2', 'H']\n", - " \n", - "Fragments to allocate: 14 9 out of 14 11\n", - "sublist 2 ['H-O', 'H']\n", - "list1 15 ['H3-C2', 'H2-C', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H2-C', 'H-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H3-C2', 'H2-C', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H2-C']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 178 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-O', 'H']\n", - " \n", - "Fragments to allocate: 14 10 out of 14 11\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H-O', 'H3-C2', 'H2-C', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H2-C']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-O', 'H3-C2', 'H2-C', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 179 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (-1, -1, 0), (0, -1, -1), (0, -1, 1), (-1, 0, -1), (-1, 0, 1), (-1, -1, -1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 14 11 out of 14 11\n", - "sublist 2 ['H14-C8-O5', 'H']\n", - "list1 15 ['H2-C', 'H-O', 'H3-C2', 'H2-C', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H-O', 'H3-C2', 'H2-C', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 180 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, 1), (1, 0, 0), (0, -1, 1), (1, -1, 0), (1, 0, 1), (1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H14-C8-O5', 'H']\n", - " Increased Threshold_tmat. Now: 0.8\n", - " Maxsize of the translation matrix is= 12\n", - " \n", - "Fragments to allocate: 0 0 out of 14 11\n", - "sublist 2 ['H14-C8-O5', 'H']\n", - "list1 15 ['H14-C8-O5', 'H2-C', 'H-O', 'H3-C2', 'H2-C', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H-O', 'H3-C2', 'H2-C', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 1 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, 1), (1, 0, 0), (0, -1, 1), (1, -1, 0), (1, 0, 1), (1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H14-C8-O5', 'H']\n", - " \n", - "Fragments to allocate: 0 1 out of 14 11\n", - "sublist 2 ['H14-C8-O5', 'H']\n", - "list1 15 ['H14-C8-O5', 'H2-C', 'H-O', 'H3-C2', 'H2-C', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H-O', 'H3-C2', 'H2-C', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 2 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (-1, -1, 0), (0, -1, -1), (0, -1, 1), (-1, 0, -1), (-1, 0, 1), (-1, -1, -1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H14-C8-O5', 'H']\n", - " \n", - "Fragments to allocate: 0 2 out of 14 11\n", - "sublist 2 ['H14-C8-O5', 'H']\n", - "list1 15 ['H14-C8-O5', 'H2-C', 'H-O', 'H3-C2', 'H2-C', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H-O', 'H3-C2', 'H2-C', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 3 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (-1, -1, 0), (0, -1, -1), (0, -1, 1), (-1, 0, -1), (-1, 0, 1), (-1, -1, -1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H14-C8-O5', 'H']\n", - " \n", - "Fragments to allocate: 0 3 out of 14 11\n", - "sublist 2 ['H14-C8-O5', 'H']\n", - "list1 15 ['H14-C8-O5', 'H2-C', 'H-O', 'H3-C2', 'H2-C', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H-O', 'H3-C2', 'H2-C', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 4 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (-1, -1, 0), (0, -1, -1), (0, -1, 1), (-1, 0, -1), (-1, 0, 1), (-1, -1, -1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H14-C8-O5', 'H']\n", - " \n", - "Fragments to allocate: 0 4 out of 14 11\n", - "sublist 2 ['H14-C8-O5', 'H']\n", - "list1 15 ['H14-C8-O5', 'H2-C', 'H-O', 'H3-C2', 'H2-C', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H-O', 'H3-C2', 'H2-C', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 5 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H14-C8-O5', 'H']\n", - " \n", - "Fragments to allocate: 0 5 out of 14 11\n", - "sublist 2 ['H14-C8-O5', 'H']\n", - "list1 15 ['H14-C8-O5', 'H2-C', 'H-O', 'H3-C2', 'H2-C', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H-O', 'H3-C2', 'H2-C', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 6 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (-1, -1, 0), (0, -1, -1), (0, -1, 1), (-1, 0, -1), (-1, 0, 1), (-1, -1, -1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H14-C8-O5', 'H']\n", - " \n", - "Fragments to allocate: 0 6 out of 14 11\n", - "sublist 2 ['H14-C8-O5', 'H']\n", - "list1 15 ['H14-C8-O5', 'H2-C', 'H-O', 'H3-C2', 'H2-C', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H-O', 'H3-C2', 'H2-C', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 7 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H14-C8-O5', 'H']\n", - " \n", - "Fragments to allocate: 0 7 out of 14 11\n", - "sublist 2 ['H14-C8-O5', 'H']\n", - "list1 15 ['H14-C8-O5', 'H2-C', 'H-O', 'H3-C2', 'H2-C', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H-O', 'H3-C2', 'H2-C', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 8 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 1, 0), (-1, -1, 0), (0, -1, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, -1, -1), (-1, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H14-C8-O5', 'H']\n", - " \n", - "Fragments to allocate: 0 8 out of 14 11\n", - "sublist 2 ['H14-C8-O5', 'H']\n", - "list1 15 ['H14-C8-O5', 'H2-C', 'H-O', 'H3-C2', 'H2-C', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H-O', 'H3-C2', 'H2-C', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 9 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H14-C8-O5', 'H']\n", - " \n", - "Fragments to allocate: 0 9 out of 14 11\n", - "sublist 2 ['H14-C8-O5', 'H']\n", - "list1 15 ['H14-C8-O5', 'H2-C', 'H-O', 'H3-C2', 'H2-C', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H-O', 'H3-C2', 'H2-C', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 10 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H14-C8-O5', 'H']\n", - " \n", - "Fragments to allocate: 0 10 out of 14 11\n", - "sublist 2 ['H14-C8-O5', 'H']\n", - "list1 15 ['H14-C8-O5', 'H2-C', 'H-O', 'H3-C2', 'H2-C', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H-O', 'H3-C2', 'H2-C', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 11 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H14-C8-O5', 'H']\n", - " \n", - "Fragments to allocate: 0 11 out of 14 11\n", - "sublist 2 ['H14-C8-O5', 'H']\n", - "list1 15 ['H14-C8-O5', 'H2-C', 'H-O', 'H3-C2', 'H2-C', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H-O', 'H3-C2', 'H2-C', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 12 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H14-C8-O5', 'H']\n", - " \n", - "Fragments to allocate: 1 0 out of 14 11\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H14-C8-O5', 'H2-C', 'H-O', 'H3-C2', 'H2-C', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H14-C8-O5', 'H-O', 'H3-C2', 'H2-C', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 13 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 1 1 out of 14 11\n", - "sublist 2 ['H14-C8-O5', 'H']\n", - "list1 15 ['H2-C', 'H14-C8-O5', 'H-O', 'H3-C2', 'H2-C', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H-O', 'H3-C2', 'H2-C', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 14 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H14-C8-O5', 'H']\n", - " \n", - "Fragments to allocate: 1 2 out of 14 11\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H14-C8-O5', 'H2-C', 'H-O', 'H3-C2', 'H2-C', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H14-C8-O5', 'H-O', 'H3-C2', 'H2-C', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 15 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 1 3 out of 14 11\n", - "sublist 2 ['H14-C8-O5', 'H']\n", - "list1 15 ['H2-C', 'H14-C8-O5', 'H-O', 'H3-C2', 'H2-C', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H-O', 'H3-C2', 'H2-C', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 16 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H14-C8-O5', 'H']\n", - " \n", - "Fragments to allocate: 1 4 out of 14 11\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H14-C8-O5', 'H2-C', 'H-O', 'H3-C2', 'H2-C', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H14-C8-O5', 'H-O', 'H3-C2', 'H2-C', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 17 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 1, 0), (-1, -1, 0), (0, -1, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, -1, -1), (-1, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 1 5 out of 14 11\n", - "sublist 2 ['H14-C8-O5', 'H']\n", - "list1 15 ['H2-C', 'H14-C8-O5', 'H-O', 'H3-C2', 'H2-C', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H-O', 'H3-C2', 'H2-C', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 18 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H14-C8-O5', 'H']\n", - " \n", - "Fragments to allocate: 1 6 out of 14 11\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H14-C8-O5', 'H2-C', 'H-O', 'H3-C2', 'H2-C', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H14-C8-O5', 'H-O', 'H3-C2', 'H2-C', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 19 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (-1, -1, 0), (0, -1, -1), (0, -1, 1), (-1, 0, -1), (-1, 0, 1), (-1, -1, -1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 1 7 out of 14 11\n", - "sublist 2 ['H14-C8-O5', 'H']\n", - "list1 15 ['H2-C', 'H14-C8-O5', 'H-O', 'H3-C2', 'H2-C', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H-O', 'H3-C2', 'H2-C', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 20 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H14-C8-O5', 'H']\n", - " \n", - "Fragments to allocate: 1 8 out of 14 11\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H14-C8-O5', 'H2-C', 'H-O', 'H3-C2', 'H2-C', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H14-C8-O5', 'H-O', 'H3-C2', 'H2-C', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 21 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (-1, -1, 0), (0, -1, -1), (0, -1, 1), (-1, 0, -1), (-1, 0, 1), (-1, -1, -1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 1 9 out of 14 11\n", - "sublist 2 ['H14-C8-O5', 'H']\n", - "list1 15 ['H2-C', 'H14-C8-O5', 'H-O', 'H3-C2', 'H2-C', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H-O', 'H3-C2', 'H2-C', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 22 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (-1, -1, 0), (0, -1, -1), (0, -1, 1), (-1, 0, -1), (-1, 0, 1), (-1, -1, -1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H14-C8-O5', 'H']\n", - " \n", - "Fragments to allocate: 1 10 out of 14 11\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H14-C8-O5', 'H2-C', 'H-O', 'H3-C2', 'H2-C', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H14-C8-O5', 'H-O', 'H3-C2', 'H2-C', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 23 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (-1, -1, 0), (0, -1, -1), (0, -1, 1), (-1, 0, -1), (-1, 0, 1), (-1, -1, -1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 1 11 out of 14 11\n", - "sublist 2 ['H14-C8-O5', 'H']\n", - "list1 15 ['H2-C', 'H14-C8-O5', 'H-O', 'H3-C2', 'H2-C', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H-O', 'H3-C2', 'H2-C', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 24 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, 1), (1, 0, 0), (0, -1, 1), (1, -1, 0), (1, 0, 1), (1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H14-C8-O5', 'H']\n", - " \n", - "Fragments to allocate: 2 0 out of 14 11\n", - "sublist 2 ['H-O', 'H']\n", - "list1 15 ['H14-C8-O5', 'H2-C', 'H-O', 'H3-C2', 'H2-C', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H14-C8-O5', 'H2-C', 'H3-C2', 'H2-C', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 25 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, 1), (1, 0, 0), (0, -1, 1), (1, -1, 0), (1, 0, 1), (1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-O', 'H']\n", - " \n", - "Fragments to allocate: 2 1 out of 14 11\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H-O', 'H14-C8-O5', 'H2-C', 'H3-C2', 'H2-C', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-O', 'H14-C8-O5', 'H3-C2', 'H2-C', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 26 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (-1, -1, 0), (0, -1, -1), (0, -1, 1), (-1, 0, -1), (-1, 0, 1), (-1, -1, -1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 2 2 out of 14 11\n", - "sublist 2 ['H14-C8-O5', 'H']\n", - "list1 15 ['H2-C', 'H-O', 'H14-C8-O5', 'H3-C2', 'H2-C', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H-O', 'H3-C2', 'H2-C', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 27 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (-1, -1, 0), (0, -1, -1), (0, -1, 1), (-1, 0, -1), (-1, 0, 1), (-1, -1, -1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H14-C8-O5', 'H']\n", - " \n", - "Fragments to allocate: 2 3 out of 14 11\n", - "sublist 2 ['H-O', 'H']\n", - "list1 15 ['H14-C8-O5', 'H2-C', 'H-O', 'H3-C2', 'H2-C', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H14-C8-O5', 'H2-C', 'H3-C2', 'H2-C', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 28 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (-1, -1, 0), (0, -1, -1), (0, -1, 1), (-1, 0, -1), (-1, 0, 1), (-1, -1, -1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-O', 'H']\n", - " \n", - "Fragments to allocate: 2 4 out of 14 11\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H-O', 'H14-C8-O5', 'H2-C', 'H3-C2', 'H2-C', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-O', 'H14-C8-O5', 'H3-C2', 'H2-C', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 29 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 2 5 out of 14 11\n", - "sublist 2 ['H14-C8-O5', 'H']\n", - "list1 15 ['H2-C', 'H-O', 'H14-C8-O5', 'H3-C2', 'H2-C', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H-O', 'H3-C2', 'H2-C', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 30 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (-1, -1, 0), (0, -1, -1), (0, -1, 1), (-1, 0, -1), (-1, 0, 1), (-1, -1, -1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H14-C8-O5', 'H']\n", - " \n", - "Fragments to allocate: 2 6 out of 14 11\n", - "sublist 2 ['H-O', 'H']\n", - "list1 15 ['H14-C8-O5', 'H2-C', 'H-O', 'H3-C2', 'H2-C', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H14-C8-O5', 'H2-C', 'H3-C2', 'H2-C', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 31 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-O', 'H']\n", - " \n", - "Fragments to allocate: 2 7 out of 14 11\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H-O', 'H14-C8-O5', 'H2-C', 'H3-C2', 'H2-C', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-O', 'H14-C8-O5', 'H3-C2', 'H2-C', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 32 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 1, 0), (-1, -1, 0), (0, -1, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, -1, -1), (-1, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 2 8 out of 14 11\n", - "sublist 2 ['H14-C8-O5', 'H']\n", - "list1 15 ['H2-C', 'H-O', 'H14-C8-O5', 'H3-C2', 'H2-C', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H-O', 'H3-C2', 'H2-C', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 33 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H14-C8-O5', 'H']\n", - " \n", - "Fragments to allocate: 2 9 out of 14 11\n", - "sublist 2 ['H-O', 'H']\n", - "list1 15 ['H14-C8-O5', 'H2-C', 'H-O', 'H3-C2', 'H2-C', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H14-C8-O5', 'H2-C', 'H3-C2', 'H2-C', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 34 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-O', 'H']\n", - " \n", - "Fragments to allocate: 2 10 out of 14 11\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H-O', 'H14-C8-O5', 'H2-C', 'H3-C2', 'H2-C', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-O', 'H14-C8-O5', 'H3-C2', 'H2-C', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 35 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 2 11 out of 14 11\n", - "sublist 2 ['H14-C8-O5', 'H']\n", - "list1 15 ['H2-C', 'H-O', 'H14-C8-O5', 'H3-C2', 'H2-C', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H-O', 'H3-C2', 'H2-C', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 36 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H14-C8-O5', 'H']\n", - " \n", - "Fragments to allocate: 3 0 out of 14 11\n", - "sublist 2 ['H3-C2', 'H']\n", - "list1 15 ['H14-C8-O5', 'H2-C', 'H-O', 'H3-C2', 'H2-C', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H14-C8-O5', 'H2-C', 'H-O', 'H2-C', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 37 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H3-C2', 'H']\n", - " \n", - "Fragments to allocate: 3 1 out of 14 11\n", - "sublist 2 ['H-O', 'H']\n", - "list1 15 ['H3-C2', 'H14-C8-O5', 'H2-C', 'H-O', 'H2-C', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H3-C2', 'H14-C8-O5', 'H2-C', 'H2-C', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 38 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-O', 'H']\n", - " \n", - "Fragments to allocate: 3 2 out of 14 11\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H-O', 'H3-C2', 'H14-C8-O5', 'H2-C', 'H2-C', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-O', 'H3-C2', 'H14-C8-O5', 'H2-C', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 39 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 3 3 out of 14 11\n", - "sublist 2 ['H14-C8-O5', 'H']\n", - "list1 15 ['H2-C', 'H-O', 'H3-C2', 'H14-C8-O5', 'H2-C', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H-O', 'H3-C2', 'H2-C', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 40 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H14-C8-O5', 'H']\n", - " \n", - "Fragments to allocate: 3 4 out of 14 11\n", - "sublist 2 ['H3-C2', 'H']\n", - "list1 15 ['H14-C8-O5', 'H2-C', 'H-O', 'H3-C2', 'H2-C', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H14-C8-O5', 'H2-C', 'H-O', 'H2-C', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 41 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 1, 0), (-1, -1, 0), (0, -1, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, -1, -1), (-1, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H3-C2', 'H']\n", - " \n", - "Fragments to allocate: 3 5 out of 14 11\n", - "sublist 2 ['H-O', 'H']\n", - "list1 15 ['H3-C2', 'H14-C8-O5', 'H2-C', 'H-O', 'H2-C', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H3-C2', 'H14-C8-O5', 'H2-C', 'H2-C', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 42 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-O', 'H']\n", - " \n", - "Fragments to allocate: 3 6 out of 14 11\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H-O', 'H3-C2', 'H14-C8-O5', 'H2-C', 'H2-C', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-O', 'H3-C2', 'H14-C8-O5', 'H2-C', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 43 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (-1, -1, 0), (0, -1, -1), (0, -1, 1), (-1, 0, -1), (-1, 0, 1), (-1, -1, -1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 3 7 out of 14 11\n", - "sublist 2 ['H14-C8-O5', 'H']\n", - "list1 15 ['H2-C', 'H-O', 'H3-C2', 'H14-C8-O5', 'H2-C', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H-O', 'H3-C2', 'H2-C', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 44 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H14-C8-O5', 'H']\n", - " \n", - "Fragments to allocate: 3 8 out of 14 11\n", - "sublist 2 ['H3-C2', 'H']\n", - "list1 15 ['H14-C8-O5', 'H2-C', 'H-O', 'H3-C2', 'H2-C', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H14-C8-O5', 'H2-C', 'H-O', 'H2-C', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 45 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (-1, -1, 0), (0, -1, -1), (0, -1, 1), (-1, 0, -1), (-1, 0, 1), (-1, -1, -1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H3-C2', 'H']\n", - " \n", - "Fragments to allocate: 3 9 out of 14 11\n", - "sublist 2 ['H-O', 'H']\n", - "list1 15 ['H3-C2', 'H14-C8-O5', 'H2-C', 'H-O', 'H2-C', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H3-C2', 'H14-C8-O5', 'H2-C', 'H2-C', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 46 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (-1, -1, 0), (0, -1, -1), (0, -1, 1), (-1, 0, -1), (-1, 0, 1), (-1, -1, -1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-O', 'H']\n", - " \n", - "Fragments to allocate: 3 10 out of 14 11\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H-O', 'H3-C2', 'H14-C8-O5', 'H2-C', 'H2-C', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-O', 'H3-C2', 'H14-C8-O5', 'H2-C', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 47 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (-1, -1, 0), (0, -1, -1), (0, -1, 1), (-1, 0, -1), (-1, 0, 1), (-1, -1, -1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 3 11 out of 14 11\n", - "sublist 2 ['H14-C8-O5', 'H']\n", - "list1 15 ['H2-C', 'H-O', 'H3-C2', 'H14-C8-O5', 'H2-C', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H-O', 'H3-C2', 'H2-C', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 48 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, 1), (1, 0, 0), (0, -1, 1), (1, -1, 0), (1, 0, 1), (1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H14-C8-O5', 'H']\n", - " \n", - "Fragments to allocate: 4 0 out of 14 11\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H14-C8-O5', 'H2-C', 'H-O', 'H3-C2', 'H2-C', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H14-C8-O5', 'H2-C', 'H-O', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 49 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, 1), (1, 0, 0), (0, -1, 1), (1, -1, 0), (1, 0, 1), (1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 4 1 out of 14 11\n", - "sublist 2 ['H3-C2', 'H']\n", - "list1 15 ['H2-C', 'H14-C8-O5', 'H2-C', 'H-O', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H14-C8-O5', 'H2-C', 'H-O', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 50 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (-1, -1, 0), (0, -1, -1), (0, -1, 1), (-1, 0, -1), (-1, 0, 1), (-1, -1, -1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H3-C2', 'H']\n", - " \n", - "Fragments to allocate: 4 2 out of 14 11\n", - "sublist 2 ['H-O', 'H']\n", - "list1 15 ['H3-C2', 'H2-C', 'H14-C8-O5', 'H2-C', 'H-O', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H3-C2', 'H2-C', 'H14-C8-O5', 'H2-C', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 51 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (-1, -1, 0), (0, -1, -1), (0, -1, 1), (-1, 0, -1), (-1, 0, 1), (-1, -1, -1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-O', 'H']\n", - " \n", - "Fragments to allocate: 4 3 out of 14 11\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H-O', 'H3-C2', 'H2-C', 'H14-C8-O5', 'H2-C', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-O', 'H3-C2', 'H2-C', 'H14-C8-O5', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 52 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (-1, -1, 0), (0, -1, -1), (0, -1, 1), (-1, 0, -1), (-1, 0, 1), (-1, -1, -1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 4 4 out of 14 11\n", - "sublist 2 ['H14-C8-O5', 'H']\n", - "list1 15 ['H2-C', 'H-O', 'H3-C2', 'H2-C', 'H14-C8-O5', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H-O', 'H3-C2', 'H2-C', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 53 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H14-C8-O5', 'H']\n", - " \n", - "Fragments to allocate: 4 5 out of 14 11\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H14-C8-O5', 'H2-C', 'H-O', 'H3-C2', 'H2-C', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H14-C8-O5', 'H2-C', 'H-O', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 54 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (-1, -1, 0), (0, -1, -1), (0, -1, 1), (-1, 0, -1), (-1, 0, 1), (-1, -1, -1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 4 6 out of 14 11\n", - "sublist 2 ['H3-C2', 'H']\n", - "list1 15 ['H2-C', 'H14-C8-O5', 'H2-C', 'H-O', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H14-C8-O5', 'H2-C', 'H-O', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 55 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H3-C2', 'H']\n", - " \n", - "Fragments to allocate: 4 7 out of 14 11\n", - "sublist 2 ['H-O', 'H']\n", - "list1 15 ['H3-C2', 'H2-C', 'H14-C8-O5', 'H2-C', 'H-O', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H3-C2', 'H2-C', 'H14-C8-O5', 'H2-C', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 56 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 1, 0), (-1, -1, 0), (0, -1, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, -1, -1), (-1, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-O', 'H']\n", - " \n", - "Fragments to allocate: 4 8 out of 14 11\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H-O', 'H3-C2', 'H2-C', 'H14-C8-O5', 'H2-C', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-O', 'H3-C2', 'H2-C', 'H14-C8-O5', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 57 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 4 9 out of 14 11\n", - "sublist 2 ['H14-C8-O5', 'H']\n", - "list1 15 ['H2-C', 'H-O', 'H3-C2', 'H2-C', 'H14-C8-O5', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H-O', 'H3-C2', 'H2-C', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 58 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H14-C8-O5', 'H']\n", - " \n", - "Fragments to allocate: 4 10 out of 14 11\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H14-C8-O5', 'H2-C', 'H-O', 'H3-C2', 'H2-C', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H14-C8-O5', 'H2-C', 'H-O', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 59 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 4 11 out of 14 11\n", - "sublist 2 ['H3-C2', 'H']\n", - "list1 15 ['H2-C', 'H14-C8-O5', 'H2-C', 'H-O', 'H3-C2', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H14-C8-O5', 'H2-C', 'H-O', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 60 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H3-C2', 'H']\n", - " \n", - "Fragments to allocate: 5 0 out of 14 11\n", - "sublist 2 ['H19-C11-O6', 'H']\n", - "list1 15 ['H3-C2', 'H2-C', 'H14-C8-O5', 'H2-C', 'H-O', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H3-C2', 'H2-C', 'H14-C8-O5', 'H2-C', 'H-O', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 61 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H19-C11-O6', 'H']\n", - " \n", - "Fragments to allocate: 5 1 out of 14 11\n", - "sublist 2 ['H-O', 'H']\n", - "list1 15 ['H19-C11-O6', 'H3-C2', 'H2-C', 'H14-C8-O5', 'H2-C', 'H-O', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H19-C11-O6', 'H3-C2', 'H2-C', 'H14-C8-O5', 'H2-C', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 62 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-O', 'H']\n", - " \n", - "Fragments to allocate: 5 2 out of 14 11\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H-O', 'H19-C11-O6', 'H3-C2', 'H2-C', 'H14-C8-O5', 'H2-C', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-O', 'H19-C11-O6', 'H3-C2', 'H2-C', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 63 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 5 3 out of 14 11\n", - "sublist 2 ['H14-C8-O5', 'H']\n", - "list1 15 ['H2-C', 'H-O', 'H19-C11-O6', 'H3-C2', 'H2-C', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H-O', 'H19-C11-O6', 'H3-C2', 'H2-C', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 64 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H14-C8-O5', 'H']\n", - " \n", - "Fragments to allocate: 5 4 out of 14 11\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H14-C8-O5', 'H2-C', 'H-O', 'H19-C11-O6', 'H3-C2', 'H2-C', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H14-C8-O5', 'H2-C', 'H-O', 'H19-C11-O6', 'H3-C2', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 65 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 1, 0), (-1, -1, 0), (0, -1, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, -1, -1), (-1, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 5 5 out of 14 11\n", - "sublist 2 ['H3-C2', 'H']\n", - "list1 15 ['H2-C', 'H14-C8-O5', 'H2-C', 'H-O', 'H19-C11-O6', 'H3-C2', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H14-C8-O5', 'H2-C', 'H-O', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 66 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H3-C2', 'H']\n", - " \n", - "Fragments to allocate: 5 6 out of 14 11\n", - "sublist 2 ['H19-C11-O6', 'H']\n", - "list1 15 ['H3-C2', 'H2-C', 'H14-C8-O5', 'H2-C', 'H-O', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H3-C2', 'H2-C', 'H14-C8-O5', 'H2-C', 'H-O', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 67 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (-1, -1, 0), (0, -1, -1), (0, -1, 1), (-1, 0, -1), (-1, 0, 1), (-1, -1, -1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H19-C11-O6', 'H']\n", - " \n", - "Fragments to allocate: 5 7 out of 14 11\n", - "sublist 2 ['H-O', 'H']\n", - "list1 15 ['H19-C11-O6', 'H3-C2', 'H2-C', 'H14-C8-O5', 'H2-C', 'H-O', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H19-C11-O6', 'H3-C2', 'H2-C', 'H14-C8-O5', 'H2-C', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 68 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-O', 'H']\n", - " \n", - "Fragments to allocate: 5 8 out of 14 11\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H-O', 'H19-C11-O6', 'H3-C2', 'H2-C', 'H14-C8-O5', 'H2-C', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-O', 'H19-C11-O6', 'H3-C2', 'H2-C', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 69 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (-1, -1, 0), (0, -1, -1), (0, -1, 1), (-1, 0, -1), (-1, 0, 1), (-1, -1, -1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 5 9 out of 14 11\n", - "sublist 2 ['H14-C8-O5', 'H']\n", - "list1 15 ['H2-C', 'H-O', 'H19-C11-O6', 'H3-C2', 'H2-C', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H-O', 'H19-C11-O6', 'H3-C2', 'H2-C', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 70 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (-1, -1, 0), (0, -1, -1), (0, -1, 1), (-1, 0, -1), (-1, 0, 1), (-1, -1, -1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H14-C8-O5', 'H']\n", - " \n", - "Fragments to allocate: 5 10 out of 14 11\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H14-C8-O5', 'H2-C', 'H-O', 'H19-C11-O6', 'H3-C2', 'H2-C', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H14-C8-O5', 'H2-C', 'H-O', 'H19-C11-O6', 'H3-C2', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 71 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (-1, -1, 0), (0, -1, -1), (0, -1, 1), (-1, 0, -1), (-1, 0, 1), (-1, -1, -1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 5 11 out of 14 11\n", - "sublist 2 ['H3-C2', 'H']\n", - "list1 15 ['H2-C', 'H14-C8-O5', 'H2-C', 'H-O', 'H19-C11-O6', 'H3-C2', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H14-C8-O5', 'H2-C', 'H-O', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 72 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, 1), (1, 0, 0), (0, -1, 1), (1, -1, 0), (1, 0, 1), (1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H3-C2', 'H']\n", - " \n", - "Fragments to allocate: 6 0 out of 14 11\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H3-C2', 'H2-C', 'H14-C8-O5', 'H2-C', 'H-O', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H3-C2', 'H2-C', 'H14-C8-O5', 'H2-C', 'H-O', 'H19-C11-O6', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 73 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, 1), (1, 0, 0), (0, -1, 1), (1, -1, 0), (1, 0, 1), (1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 6 1 out of 14 11\n", - "sublist 2 ['H19-C11-O6', 'H']\n", - "list1 15 ['C-O2', 'H3-C2', 'H2-C', 'H14-C8-O5', 'H2-C', 'H-O', 'H19-C11-O6', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H3-C2', 'H2-C', 'H14-C8-O5', 'H2-C', 'H-O', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 74 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (-1, -1, 0), (0, -1, -1), (0, -1, 1), (-1, 0, -1), (-1, 0, 1), (-1, -1, -1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H19-C11-O6', 'H']\n", - " \n", - "Fragments to allocate: 6 2 out of 14 11\n", - "sublist 2 ['H-O', 'H']\n", - "list1 15 ['H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'H14-C8-O5', 'H2-C', 'H-O', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'H14-C8-O5', 'H2-C', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 75 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (-1, -1, 0), (0, -1, -1), (0, -1, 1), (-1, 0, -1), (-1, 0, 1), (-1, -1, -1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-O', 'H']\n", - " \n", - "Fragments to allocate: 6 3 out of 14 11\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H-O', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'H14-C8-O5', 'H2-C', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-O', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'H14-C8-O5', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 76 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (-1, -1, 0), (0, -1, -1), (0, -1, 1), (-1, 0, -1), (-1, 0, 1), (-1, -1, -1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 6 4 out of 14 11\n", - "sublist 2 ['H14-C8-O5', 'H']\n", - "list1 15 ['H2-C', 'H-O', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'H14-C8-O5', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H-O', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 77 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H14-C8-O5', 'H']\n", - " \n", - "Fragments to allocate: 6 5 out of 14 11\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H14-C8-O5', 'H2-C', 'H-O', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H14-C8-O5', 'H2-C', 'H-O', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 78 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (-1, -1, 0), (0, -1, -1), (0, -1, 1), (-1, 0, -1), (-1, 0, 1), (-1, -1, -1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 6 6 out of 14 11\n", - "sublist 2 ['H3-C2', 'H']\n", - "list1 15 ['H2-C', 'H14-C8-O5', 'H2-C', 'H-O', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H14-C8-O5', 'H2-C', 'H-O', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 79 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H3-C2', 'H']\n", - " \n", - "Fragments to allocate: 6 7 out of 14 11\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H3-C2', 'H2-C', 'H14-C8-O5', 'H2-C', 'H-O', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H3-C2', 'H2-C', 'H14-C8-O5', 'H2-C', 'H-O', 'H19-C11-O6', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 80 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 1, 0), (-1, -1, 0), (0, -1, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, -1, -1), (-1, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 6 8 out of 14 11\n", - "sublist 2 ['H19-C11-O6', 'H']\n", - "list1 15 ['C-O2', 'H3-C2', 'H2-C', 'H14-C8-O5', 'H2-C', 'H-O', 'H19-C11-O6', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H3-C2', 'H2-C', 'H14-C8-O5', 'H2-C', 'H-O', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 81 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H19-C11-O6', 'H']\n", - " \n", - "Fragments to allocate: 6 9 out of 14 11\n", - "sublist 2 ['H-O', 'H']\n", - "list1 15 ['H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'H14-C8-O5', 'H2-C', 'H-O', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'H14-C8-O5', 'H2-C', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 82 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-O', 'H']\n", - " \n", - "Fragments to allocate: 6 10 out of 14 11\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H-O', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'H14-C8-O5', 'H2-C', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-O', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'H14-C8-O5', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 83 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 6 11 out of 14 11\n", - "sublist 2 ['H14-C8-O5', 'H']\n", - "list1 15 ['H2-C', 'H-O', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'H14-C8-O5', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H-O', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 84 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H14-C8-O5', 'H']\n", - " \n", - "Fragments to allocate: 7 0 out of 14 11\n", - "sublist 2 ['H3-C2', 'H']\n", - "list1 15 ['H14-C8-O5', 'H2-C', 'H-O', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H14-C8-O5', 'H2-C', 'H-O', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 85 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H3-C2', 'H']\n", - " \n", - "Fragments to allocate: 7 1 out of 14 11\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H3-C2', 'H14-C8-O5', 'H2-C', 'H-O', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H3-C2', 'H14-C8-O5', 'H2-C', 'H-O', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 86 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 7 2 out of 14 11\n", - "sublist 2 ['H3-C2', 'H']\n", - "list1 15 ['H2-C', 'H3-C2', 'H14-C8-O5', 'H2-C', 'H-O', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H3-C2', 'H14-C8-O5', 'H2-C', 'H-O', 'H19-C11-O6', 'C-O2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 87 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H3-C2', 'H']\n", - " \n", - "Fragments to allocate: 7 3 out of 14 11\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H2-C', 'H-O', 'H19-C11-O6', 'C-O2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H2-C', 'H-O', 'H19-C11-O6', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 88 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 7 4 out of 14 11\n", - "sublist 2 ['H19-C11-O6', 'H']\n", - "list1 15 ['C-O2', 'H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H2-C', 'H-O', 'H19-C11-O6', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H2-C', 'H-O', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 89 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 1, 0), (-1, -1, 0), (0, -1, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, -1, -1), (-1, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H19-C11-O6', 'H']\n", - " \n", - "Fragments to allocate: 7 5 out of 14 11\n", - "sublist 2 ['H-O', 'H']\n", - "list1 15 ['H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H2-C', 'H-O', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H2-C', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 90 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-O', 'H']\n", - " \n", - "Fragments to allocate: 7 6 out of 14 11\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H-O', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H2-C', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-O', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 91 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (-1, -1, 0), (0, -1, -1), (0, -1, 1), (-1, 0, -1), (-1, 0, 1), (-1, -1, -1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 7 7 out of 14 11\n", - "sublist 2 ['H14-C8-O5', 'H']\n", - "list1 15 ['H2-C', 'H-O', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H-O', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 92 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H14-C8-O5', 'H']\n", - " \n", - "Fragments to allocate: 7 8 out of 14 11\n", - "sublist 2 ['H3-C2', 'H']\n", - "list1 15 ['H14-C8-O5', 'H2-C', 'H-O', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H14-C8-O5', 'H2-C', 'H-O', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 93 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (-1, -1, 0), (0, -1, -1), (0, -1, 1), (-1, 0, -1), (-1, 0, 1), (-1, -1, -1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H3-C2', 'H']\n", - " \n", - "Fragments to allocate: 7 9 out of 14 11\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H3-C2', 'H14-C8-O5', 'H2-C', 'H-O', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H3-C2', 'H14-C8-O5', 'H2-C', 'H-O', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 94 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (-1, -1, 0), (0, -1, -1), (0, -1, 1), (-1, 0, -1), (-1, 0, 1), (-1, -1, -1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 7 10 out of 14 11\n", - "sublist 2 ['H3-C2', 'H']\n", - "list1 15 ['H2-C', 'H3-C2', 'H14-C8-O5', 'H2-C', 'H-O', 'H19-C11-O6', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H3-C2', 'H14-C8-O5', 'H2-C', 'H-O', 'H19-C11-O6', 'C-O2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 95 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (-1, -1, 0), (0, -1, -1), (0, -1, 1), (-1, 0, -1), (-1, 0, 1), (-1, -1, -1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H3-C2', 'H']\n", - " \n", - "Fragments to allocate: 7 11 out of 14 11\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H2-C', 'H-O', 'H19-C11-O6', 'C-O2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H2-C', 'H-O', 'H19-C11-O6', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 96 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, 1), (1, 0, 0), (0, -1, 1), (1, -1, 0), (1, 0, 1), (1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 8 0 out of 14 11\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['C-O2', 'H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H2-C', 'H-O', 'H19-C11-O6', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H2-C', 'H-O', 'H19-C11-O6', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 97 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, 1), (1, 0, 0), (0, -1, 1), (1, -1, 0), (1, 0, 1), (1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 8 1 out of 14 11\n", - "sublist 2 ['H19-C11-O6', 'H']\n", - "list1 15 ['H2-C', 'C-O2', 'H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H2-C', 'H-O', 'H19-C11-O6', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'C-O2', 'H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H2-C', 'H-O', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 98 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (-1, -1, 0), (0, -1, -1), (0, -1, 1), (-1, 0, -1), (-1, 0, 1), (-1, -1, -1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H19-C11-O6', 'H']\n", - " \n", - "Fragments to allocate: 8 2 out of 14 11\n", - "sublist 2 ['H-O', 'H']\n", - "list1 15 ['H19-C11-O6', 'H2-C', 'C-O2', 'H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H2-C', 'H-O', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H19-C11-O6', 'H2-C', 'C-O2', 'H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 99 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (-1, -1, 0), (0, -1, -1), (0, -1, 1), (-1, 0, -1), (-1, 0, 1), (-1, -1, -1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-O', 'H']\n", - " \n", - "Fragments to allocate: 8 3 out of 14 11\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H-O', 'H19-C11-O6', 'H2-C', 'C-O2', 'H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-O', 'H19-C11-O6', 'H2-C', 'C-O2', 'H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 100 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (-1, -1, 0), (0, -1, -1), (0, -1, 1), (-1, 0, -1), (-1, 0, 1), (-1, -1, -1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 8 4 out of 14 11\n", - "sublist 2 ['H14-C8-O5', 'H']\n", - "list1 15 ['H2-C', 'H-O', 'H19-C11-O6', 'H2-C', 'C-O2', 'H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H-O', 'H19-C11-O6', 'H2-C', 'C-O2', 'H3-C2', 'H2-C', 'H3-C2', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 101 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H14-C8-O5', 'H']\n", - " \n", - "Fragments to allocate: 8 5 out of 14 11\n", - "sublist 2 ['H3-C2', 'H']\n", - "list1 15 ['H14-C8-O5', 'H2-C', 'H-O', 'H19-C11-O6', 'H2-C', 'C-O2', 'H3-C2', 'H2-C', 'H3-C2', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H14-C8-O5', 'H2-C', 'H-O', 'H19-C11-O6', 'H2-C', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 102 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (-1, -1, 0), (0, -1, -1), (0, -1, 1), (-1, 0, -1), (-1, 0, 1), (-1, -1, -1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H3-C2', 'H']\n", - " \n", - "Fragments to allocate: 8 6 out of 14 11\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H3-C2', 'H14-C8-O5', 'H2-C', 'H-O', 'H19-C11-O6', 'H2-C', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H3-C2', 'H14-C8-O5', 'H2-C', 'H-O', 'H19-C11-O6', 'H2-C', 'C-O2', 'H3-C2', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 103 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 8 7 out of 14 11\n", - "sublist 2 ['H3-C2', 'H']\n", - "list1 15 ['H2-C', 'H3-C2', 'H14-C8-O5', 'H2-C', 'H-O', 'H19-C11-O6', 'H2-C', 'C-O2', 'H3-C2', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H3-C2', 'H14-C8-O5', 'H2-C', 'H-O', 'H19-C11-O6', 'H2-C', 'C-O2', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 104 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 1, 0), (-1, -1, 0), (0, -1, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, -1, -1), (-1, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H3-C2', 'H']\n", - " \n", - "Fragments to allocate: 8 8 out of 14 11\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H2-C', 'H-O', 'H19-C11-O6', 'H2-C', 'C-O2', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H2-C', 'H-O', 'H19-C11-O6', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 105 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 8 9 out of 14 11\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['C-O2', 'H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H2-C', 'H-O', 'H19-C11-O6', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H2-C', 'H-O', 'H19-C11-O6', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 106 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 8 10 out of 14 11\n", - "sublist 2 ['H19-C11-O6', 'H']\n", - "list1 15 ['H2-C', 'C-O2', 'H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H2-C', 'H-O', 'H19-C11-O6', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'C-O2', 'H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H2-C', 'H-O', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 107 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H19-C11-O6', 'H']\n", - " \n", - "Fragments to allocate: 8 11 out of 14 11\n", - "sublist 2 ['H-O', 'H']\n", - "list1 15 ['H19-C11-O6', 'H2-C', 'C-O2', 'H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H2-C', 'H-O', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H19-C11-O6', 'H2-C', 'C-O2', 'H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 108 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-O', 'H']\n", - " \n", - "Fragments to allocate: 9 0 out of 14 11\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H-O', 'H19-C11-O6', 'H2-C', 'C-O2', 'H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-O', 'H19-C11-O6', 'H2-C', 'C-O2', 'H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H2-C', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 109 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 9 1 out of 14 11\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['C-O2', 'H-O', 'H19-C11-O6', 'H2-C', 'C-O2', 'H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H2-C', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H-O', 'H19-C11-O6', 'H2-C', 'C-O2', 'H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 110 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 9 2 out of 14 11\n", - "sublist 2 ['H14-C8-O5', 'H']\n", - "list1 15 ['H2-C', 'C-O2', 'H-O', 'H19-C11-O6', 'H2-C', 'C-O2', 'H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'C-O2', 'H-O', 'H19-C11-O6', 'H2-C', 'C-O2', 'H3-C2', 'H2-C', 'H3-C2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 111 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H14-C8-O5', 'H']\n", - " \n", - "Fragments to allocate: 9 3 out of 14 11\n", - "sublist 2 ['H3-C2', 'H']\n", - "list1 15 ['H14-C8-O5', 'H2-C', 'C-O2', 'H-O', 'H19-C11-O6', 'H2-C', 'C-O2', 'H3-C2', 'H2-C', 'H3-C2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H14-C8-O5', 'H2-C', 'C-O2', 'H-O', 'H19-C11-O6', 'H2-C', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 112 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H3-C2', 'H']\n", - " \n", - "Fragments to allocate: 9 4 out of 14 11\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H3-C2', 'H14-C8-O5', 'H2-C', 'C-O2', 'H-O', 'H19-C11-O6', 'H2-C', 'C-O2', 'H3-C2', 'H2-C', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H3-C2', 'H14-C8-O5', 'H2-C', 'C-O2', 'H-O', 'H19-C11-O6', 'H2-C', 'C-O2', 'H3-C2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 113 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 1, 0), (-1, -1, 0), (0, -1, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, -1, -1), (-1, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 9 5 out of 14 11\n", - "sublist 2 ['H3-C2', 'H']\n", - "list1 15 ['H2-C', 'H3-C2', 'H14-C8-O5', 'H2-C', 'C-O2', 'H-O', 'H19-C11-O6', 'H2-C', 'C-O2', 'H3-C2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H3-C2', 'H14-C8-O5', 'H2-C', 'C-O2', 'H-O', 'H19-C11-O6', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 114 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H3-C2', 'H']\n", - " \n", - "Fragments to allocate: 9 6 out of 14 11\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H2-C', 'C-O2', 'H-O', 'H19-C11-O6', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H2-C', 'C-O2', 'H-O', 'H19-C11-O6', 'H2-C', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 115 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (-1, -1, 0), (0, -1, -1), (0, -1, 1), (-1, 0, -1), (-1, 0, 1), (-1, -1, -1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 9 7 out of 14 11\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['C-O2', 'H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H2-C', 'C-O2', 'H-O', 'H19-C11-O6', 'H2-C', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H2-C', 'C-O2', 'H-O', 'H19-C11-O6', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 116 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 9 8 out of 14 11\n", - "sublist 2 ['H19-C11-O6', 'H']\n", - "list1 15 ['H2-C', 'C-O2', 'H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H2-C', 'C-O2', 'H-O', 'H19-C11-O6', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'C-O2', 'H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H2-C', 'C-O2', 'H-O', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 117 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (-1, -1, 0), (0, -1, -1), (0, -1, 1), (-1, 0, -1), (-1, 0, 1), (-1, -1, -1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H19-C11-O6', 'H']\n", - " \n", - "Fragments to allocate: 9 9 out of 14 11\n", - "sublist 2 ['H-O', 'H']\n", - "list1 15 ['H19-C11-O6', 'H2-C', 'C-O2', 'H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H2-C', 'C-O2', 'H-O', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H19-C11-O6', 'H2-C', 'C-O2', 'H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 118 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (-1, -1, 0), (0, -1, -1), (0, -1, 1), (-1, 0, -1), (-1, 0, 1), (-1, -1, -1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-O', 'H']\n", - " \n", - "Fragments to allocate: 9 10 out of 14 11\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H-O', 'H19-C11-O6', 'H2-C', 'C-O2', 'H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H2-C', 'C-O2', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-O', 'H19-C11-O6', 'H2-C', 'C-O2', 'H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H2-C', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 119 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (-1, -1, 0), (0, -1, -1), (0, -1, 1), (-1, 0, -1), (-1, 0, 1), (-1, -1, -1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 9 11 out of 14 11\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['C-O2', 'H-O', 'H19-C11-O6', 'H2-C', 'C-O2', 'H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H2-C', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H-O', 'H19-C11-O6', 'H2-C', 'C-O2', 'H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 120 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, 1), (1, 0, 0), (0, -1, 1), (1, -1, 0), (1, 0, 1), (1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 10 0 out of 14 11\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H2-C', 'C-O2', 'H-O', 'H19-C11-O6', 'H2-C', 'C-O2', 'H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'C-O2', 'H-O', 'H19-C11-O6', 'H2-C', 'C-O2', 'H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 121 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, 1), (1, 0, 0), (0, -1, 1), (1, -1, 0), (1, 0, 1), (1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 10 1 out of 14 11\n", - "sublist 2 ['H14-C8-O5', 'H']\n", - "list1 15 ['C-O2', 'H2-C', 'C-O2', 'H-O', 'H19-C11-O6', 'H2-C', 'C-O2', 'H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H2-C', 'C-O2', 'H-O', 'H19-C11-O6', 'H2-C', 'C-O2', 'H3-C2', 'H2-C', 'H3-C2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 122 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (-1, -1, 0), (0, -1, -1), (0, -1, 1), (-1, 0, -1), (-1, 0, 1), (-1, -1, -1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H14-C8-O5', 'H']\n", - " \n", - "Fragments to allocate: 10 2 out of 14 11\n", - "sublist 2 ['H3-C2', 'H']\n", - "list1 15 ['H14-C8-O5', 'C-O2', 'H2-C', 'C-O2', 'H-O', 'H19-C11-O6', 'H2-C', 'C-O2', 'H3-C2', 'H2-C', 'H3-C2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H14-C8-O5', 'C-O2', 'H2-C', 'C-O2', 'H-O', 'H19-C11-O6', 'H2-C', 'C-O2', 'H3-C2', 'H2-C', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 123 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (-1, -1, 0), (0, -1, -1), (0, -1, 1), (-1, 0, -1), (-1, 0, 1), (-1, -1, -1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H3-C2', 'H']\n", - " \n", - "Fragments to allocate: 10 3 out of 14 11\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H3-C2', 'H14-C8-O5', 'C-O2', 'H2-C', 'C-O2', 'H-O', 'H19-C11-O6', 'H2-C', 'C-O2', 'H3-C2', 'H2-C', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H3-C2', 'H14-C8-O5', 'C-O2', 'H2-C', 'C-O2', 'H-O', 'H19-C11-O6', 'H2-C', 'C-O2', 'H3-C2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 124 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (-1, -1, 0), (0, -1, -1), (0, -1, 1), (-1, 0, -1), (-1, 0, 1), (-1, -1, -1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 10 4 out of 14 11\n", - "sublist 2 ['H3-C2', 'H']\n", - "list1 15 ['H2-C', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H2-C', 'C-O2', 'H-O', 'H19-C11-O6', 'H2-C', 'C-O2', 'H3-C2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H2-C', 'C-O2', 'H-O', 'H19-C11-O6', 'H2-C', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 125 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H3-C2', 'H']\n", - " \n", - "Fragments to allocate: 10 5 out of 14 11\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H2-C', 'C-O2', 'H-O', 'H19-C11-O6', 'H2-C', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H2-C', 'C-O2', 'H-O', 'H19-C11-O6', 'H2-C', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 126 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (-1, -1, 0), (0, -1, -1), (0, -1, 1), (-1, 0, -1), (-1, 0, 1), (-1, -1, -1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 10 6 out of 14 11\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['C-O2', 'H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H2-C', 'C-O2', 'H-O', 'H19-C11-O6', 'H2-C', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H2-C', 'C-O2', 'H-O', 'H19-C11-O6', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 127 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 10 7 out of 14 11\n", - "sublist 2 ['H19-C11-O6', 'H']\n", - "list1 15 ['H2-C', 'C-O2', 'H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H2-C', 'C-O2', 'H-O', 'H19-C11-O6', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'C-O2', 'H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H2-C', 'C-O2', 'H-O', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 128 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 1, 0), (-1, -1, 0), (0, -1, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, -1, -1), (-1, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H19-C11-O6', 'H']\n", - " \n", - "Fragments to allocate: 10 8 out of 14 11\n", - "sublist 2 ['H-O', 'H']\n", - "list1 15 ['H19-C11-O6', 'H2-C', 'C-O2', 'H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H2-C', 'C-O2', 'H-O', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H19-C11-O6', 'H2-C', 'C-O2', 'H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H2-C', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 129 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-O', 'H']\n", - " \n", - "Fragments to allocate: 10 9 out of 14 11\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H-O', 'H19-C11-O6', 'H2-C', 'C-O2', 'H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H2-C', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-O', 'H19-C11-O6', 'H2-C', 'C-O2', 'H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H2-C', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 130 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 10 10 out of 14 11\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['C-O2', 'H-O', 'H19-C11-O6', 'H2-C', 'C-O2', 'H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H2-C', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H-O', 'H19-C11-O6', 'H2-C', 'C-O2', 'H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 131 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 10 11 out of 14 11\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H2-C', 'C-O2', 'H-O', 'H19-C11-O6', 'H2-C', 'C-O2', 'H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'C-O2', 'H-O', 'H19-C11-O6', 'H2-C', 'C-O2', 'H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 132 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 11 0 out of 14 11\n", - "sublist 2 ['H-C-O', 'H']\n", - "list1 15 ['C-O2', 'H2-C', 'C-O2', 'H-O', 'H19-C11-O6', 'H2-C', 'C-O2', 'H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H2-C', 'C-O2', 'H-O', 'H19-C11-O6', 'H2-C', 'C-O2', 'H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 133 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-C-O', 'H']\n", - " \n", - "Fragments to allocate: 11 1 out of 14 11\n", - "sublist 2 ['H14-C8-O5', 'H']\n", - "list1 15 ['H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H-O', 'H19-C11-O6', 'H2-C', 'C-O2', 'H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H-O', 'H19-C11-O6', 'H2-C', 'C-O2', 'H3-C2', 'H2-C', 'H3-C2', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 134 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H14-C8-O5', 'H']\n", - " \n", - "Fragments to allocate: 11 2 out of 14 11\n", - "sublist 2 ['H3-C2', 'H']\n", - "list1 15 ['H14-C8-O5', 'H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H-O', 'H19-C11-O6', 'H2-C', 'C-O2', 'H3-C2', 'H2-C', 'H3-C2', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H14-C8-O5', 'H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H-O', 'H19-C11-O6', 'H2-C', 'C-O2', 'H3-C2', 'H2-C', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 135 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H3-C2', 'H']\n", - " \n", - "Fragments to allocate: 11 3 out of 14 11\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H3-C2', 'H14-C8-O5', 'H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H-O', 'H19-C11-O6', 'H2-C', 'C-O2', 'H3-C2', 'H2-C', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H3-C2', 'H14-C8-O5', 'H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H-O', 'H19-C11-O6', 'H2-C', 'C-O2', 'H3-C2', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 136 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 11 4 out of 14 11\n", - "sublist 2 ['H3-C2', 'H']\n", - "list1 15 ['H2-C', 'H3-C2', 'H14-C8-O5', 'H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H-O', 'H19-C11-O6', 'H2-C', 'C-O2', 'H3-C2', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H3-C2', 'H14-C8-O5', 'H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H-O', 'H19-C11-O6', 'H2-C', 'C-O2', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 137 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 1, 0), (-1, -1, 0), (0, -1, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, -1, -1), (-1, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H3-C2', 'H']\n", - " \n", - "Fragments to allocate: 11 5 out of 14 11\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H-O', 'H19-C11-O6', 'H2-C', 'C-O2', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H-O', 'H19-C11-O6', 'H2-C', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 138 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 11 6 out of 14 11\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['C-O2', 'H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H-O', 'H19-C11-O6', 'H2-C', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H-O', 'H19-C11-O6', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 139 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (-1, -1, 0), (0, -1, -1), (0, -1, 1), (-1, 0, -1), (-1, 0, 1), (-1, -1, -1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 11 7 out of 14 11\n", - "sublist 2 ['H19-C11-O6', 'H']\n", - "list1 15 ['H2-C', 'C-O2', 'H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H-O', 'H19-C11-O6', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'C-O2', 'H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 140 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H19-C11-O6', 'H']\n", - " \n", - "Fragments to allocate: 11 8 out of 14 11\n", - "sublist 2 ['H-O', 'H']\n", - "list1 15 ['H19-C11-O6', 'H2-C', 'C-O2', 'H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H19-C11-O6', 'H2-C', 'C-O2', 'H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 141 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (-1, -1, 0), (0, -1, -1), (0, -1, 1), (-1, 0, -1), (-1, 0, 1), (-1, -1, -1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-O', 'H']\n", - " \n", - "Fragments to allocate: 11 9 out of 14 11\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H-O', 'H19-C11-O6', 'H2-C', 'C-O2', 'H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-O', 'H19-C11-O6', 'H2-C', 'C-O2', 'H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H-C-O', 'C-O2', 'H2-C', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 142 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (-1, -1, 0), (0, -1, -1), (0, -1, 1), (-1, 0, -1), (-1, 0, 1), (-1, -1, -1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 11 10 out of 14 11\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['C-O2', 'H-O', 'H19-C11-O6', 'H2-C', 'C-O2', 'H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H-C-O', 'C-O2', 'H2-C', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H-O', 'H19-C11-O6', 'H2-C', 'C-O2', 'H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H-C-O', 'C-O2', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 143 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (-1, -1, 0), (0, -1, -1), (0, -1, 1), (-1, 0, -1), (-1, 0, 1), (-1, -1, -1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 11 11 out of 14 11\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H2-C', 'C-O2', 'H-O', 'H19-C11-O6', 'H2-C', 'C-O2', 'H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H-C-O', 'C-O2', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'C-O2', 'H-O', 'H19-C11-O6', 'H2-C', 'C-O2', 'H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 144 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, 1), (1, 0, 0), (0, -1, 1), (1, -1, 0), (1, 0, 1), (1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 12 0 out of 14 11\n", - "sublist 2 ['H-C-O', 'H']\n", - "list1 15 ['C-O2', 'H2-C', 'C-O2', 'H-O', 'H19-C11-O6', 'H2-C', 'C-O2', 'H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H-C-O', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H2-C', 'C-O2', 'H-O', 'H19-C11-O6', 'H2-C', 'C-O2', 'H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 145 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, 1), (1, 0, 0), (0, -1, 1), (1, -1, 0), (1, 0, 1), (1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-C-O', 'H']\n", - " \n", - "Fragments to allocate: 12 1 out of 14 11\n", - "sublist 2 ['H-C-O', 'H']\n", - "list1 15 ['H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H-O', 'H19-C11-O6', 'H2-C', 'C-O2', 'H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H-C-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H-O', 'H19-C11-O6', 'H2-C', 'C-O2', 'H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'C3-O6-Fe', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 146 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (-1, -1, 0), (0, -1, -1), (0, -1, 1), (-1, 0, -1), (-1, 0, 1), (-1, -1, -1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-C-O', 'H']\n", - " \n", - "Fragments to allocate: 12 2 out of 14 11\n", - "sublist 2 ['H14-C8-O5', 'H']\n", - "list1 15 ['H-C-O', 'H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H-O', 'H19-C11-O6', 'H2-C', 'C-O2', 'H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'C3-O6-Fe', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-C-O', 'H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H-O', 'H19-C11-O6', 'H2-C', 'C-O2', 'H3-C2', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 147 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (-1, -1, 0), (0, -1, -1), (0, -1, 1), (-1, 0, -1), (-1, 0, 1), (-1, -1, -1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H14-C8-O5', 'H']\n", - " \n", - "Fragments to allocate: 12 3 out of 14 11\n", - "sublist 2 ['H3-C2', 'H']\n", - "list1 15 ['H14-C8-O5', 'H-C-O', 'H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H-O', 'H19-C11-O6', 'H2-C', 'C-O2', 'H3-C2', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H14-C8-O5', 'H-C-O', 'H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H-O', 'H19-C11-O6', 'H2-C', 'C-O2', 'H3-C2', 'H2-C', 'C3-O6-Fe', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 148 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (-1, -1, 0), (0, -1, -1), (0, -1, 1), (-1, 0, -1), (-1, 0, 1), (-1, -1, -1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H3-C2', 'H']\n", - " \n", - "Fragments to allocate: 12 4 out of 14 11\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H3-C2', 'H14-C8-O5', 'H-C-O', 'H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H-O', 'H19-C11-O6', 'H2-C', 'C-O2', 'H3-C2', 'H2-C', 'C3-O6-Fe', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H3-C2', 'H14-C8-O5', 'H-C-O', 'H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H-O', 'H19-C11-O6', 'H2-C', 'C-O2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 149 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 12 5 out of 14 11\n", - "sublist 2 ['H3-C2', 'H']\n", - "list1 15 ['H2-C', 'H3-C2', 'H14-C8-O5', 'H-C-O', 'H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H-O', 'H19-C11-O6', 'H2-C', 'C-O2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H3-C2', 'H14-C8-O5', 'H-C-O', 'H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H-O', 'H19-C11-O6', 'H2-C', 'C-O2', 'C3-O6-Fe', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 150 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (-1, -1, 0), (0, -1, -1), (0, -1, 1), (-1, 0, -1), (-1, 0, 1), (-1, -1, -1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H3-C2', 'H']\n", - " \n", - "Fragments to allocate: 12 6 out of 14 11\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H-C-O', 'H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H-O', 'H19-C11-O6', 'H2-C', 'C-O2', 'C3-O6-Fe', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H-C-O', 'H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H-O', 'H19-C11-O6', 'H2-C', 'C3-O6-Fe', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 151 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 12 7 out of 14 11\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['C-O2', 'H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H-C-O', 'H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H-O', 'H19-C11-O6', 'H2-C', 'C3-O6-Fe', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H-C-O', 'H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H-O', 'H19-C11-O6', 'C3-O6-Fe', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 152 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 1, 0), (-1, -1, 0), (0, -1, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, -1, -1), (-1, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 12 8 out of 14 11\n", - "sublist 2 ['H19-C11-O6', 'H']\n", - "list1 15 ['H2-C', 'C-O2', 'H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H-C-O', 'H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H-O', 'H19-C11-O6', 'C3-O6-Fe', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'C-O2', 'H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H-C-O', 'H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 153 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H19-C11-O6', 'H']\n", - " \n", - "Fragments to allocate: 12 9 out of 14 11\n", - "sublist 2 ['H-O', 'H']\n", - "list1 15 ['H19-C11-O6', 'H2-C', 'C-O2', 'H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H-C-O', 'H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H-O', 'C3-O6-Fe', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H19-C11-O6', 'H2-C', 'C-O2', 'H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H-C-O', 'H-C-O', 'C-O2', 'H2-C', 'C-O2', 'C3-O6-Fe', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 154 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-O', 'H']\n", - " \n", - "Fragments to allocate: 12 10 out of 14 11\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H-O', 'H19-C11-O6', 'H2-C', 'C-O2', 'H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H-C-O', 'H-C-O', 'C-O2', 'H2-C', 'C-O2', 'C3-O6-Fe', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-O', 'H19-C11-O6', 'H2-C', 'C-O2', 'H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H-C-O', 'H-C-O', 'C-O2', 'H2-C', 'C3-O6-Fe', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 155 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 12 11 out of 14 11\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['C-O2', 'H-O', 'H19-C11-O6', 'H2-C', 'C-O2', 'H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H-C-O', 'H-C-O', 'C-O2', 'H2-C', 'C3-O6-Fe', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H-O', 'H19-C11-O6', 'H2-C', 'C-O2', 'H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H-C-O', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 156 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 13 0 out of 14 11\n", - "sublist 2 ['C3-O6-Fe', 'H']\n", - "list1 15 ['H2-C', 'C-O2', 'H-O', 'H19-C11-O6', 'H2-C', 'C-O2', 'H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H-C-O', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'C-O2', 'H-O', 'H19-C11-O6', 'H2-C', 'C-O2', 'H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H-C-O', 'H-C-O', 'C-O2', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 157 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['Fe', 'O', 'O', 'O', 'O', 'O', 'O', 'C', 'C', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C3-O6-Fe', 'H']\n", - " \n", - "Fragments to allocate: 13 1 out of 14 11\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['C3-O6-Fe', 'H2-C', 'C-O2', 'H-O', 'H19-C11-O6', 'H2-C', 'C-O2', 'H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H-C-O', 'H-C-O', 'C-O2', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C3-O6-Fe', 'H2-C', 'C-O2', 'H-O', 'H19-C11-O6', 'H2-C', 'C-O2', 'H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H-C-O', 'H-C-O', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 158 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 13 2 out of 14 11\n", - "sublist 2 ['H-C-O', 'H']\n", - "list1 15 ['C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H-O', 'H19-C11-O6', 'H2-C', 'C-O2', 'H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H-C-O', 'H-C-O', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H-O', 'H19-C11-O6', 'H2-C', 'C-O2', 'H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H-C-O', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 159 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-C-O', 'H']\n", - " \n", - "Fragments to allocate: 13 3 out of 14 11\n", - "sublist 2 ['H-C-O', 'H']\n", - "list1 15 ['H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H-O', 'H19-C11-O6', 'H2-C', 'C-O2', 'H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H-C-O', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H-O', 'H19-C11-O6', 'H2-C', 'C-O2', 'H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 160 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-C-O', 'H']\n", - " \n", - "Fragments to allocate: 13 4 out of 14 11\n", - "sublist 2 ['H14-C8-O5', 'H']\n", - "list1 15 ['H-C-O', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H-O', 'H19-C11-O6', 'H2-C', 'C-O2', 'H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-C-O', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H-O', 'H19-C11-O6', 'H2-C', 'C-O2', 'H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 161 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 1, 0), (-1, -1, 0), (0, -1, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, -1, -1), (-1, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H14-C8-O5', 'H']\n", - " \n", - "Fragments to allocate: 13 5 out of 14 11\n", - "sublist 2 ['H3-C2', 'H']\n", - "list1 15 ['H14-C8-O5', 'H-C-O', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H-O', 'H19-C11-O6', 'H2-C', 'C-O2', 'H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H14-C8-O5', 'H-C-O', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H-O', 'H19-C11-O6', 'H2-C', 'C-O2', 'H3-C2', 'H2-C', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 162 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H3-C2', 'H']\n", - " \n", - "Fragments to allocate: 13 6 out of 14 11\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H3-C2', 'H14-C8-O5', 'H-C-O', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H-O', 'H19-C11-O6', 'H2-C', 'C-O2', 'H3-C2', 'H2-C', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H3-C2', 'H14-C8-O5', 'H-C-O', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H-O', 'H19-C11-O6', 'H2-C', 'C-O2', 'H3-C2', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 163 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (-1, -1, 0), (0, -1, -1), (0, -1, 1), (-1, 0, -1), (-1, 0, 1), (-1, -1, -1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 13 7 out of 14 11\n", - "sublist 2 ['H3-C2', 'H']\n", - "list1 15 ['H2-C', 'H3-C2', 'H14-C8-O5', 'H-C-O', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H-O', 'H19-C11-O6', 'H2-C', 'C-O2', 'H3-C2', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H3-C2', 'H14-C8-O5', 'H-C-O', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H-O', 'H19-C11-O6', 'H2-C', 'C-O2', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 164 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H3-C2', 'H']\n", - " \n", - "Fragments to allocate: 13 8 out of 14 11\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H-C-O', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H-O', 'H19-C11-O6', 'H2-C', 'C-O2', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H-C-O', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H-O', 'H19-C11-O6', 'H2-C', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 165 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (-1, -1, 0), (0, -1, -1), (0, -1, 1), (-1, 0, -1), (-1, 0, 1), (-1, -1, -1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 13 9 out of 14 11\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['C-O2', 'H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H-C-O', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H-O', 'H19-C11-O6', 'H2-C', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H-C-O', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H-O', 'H19-C11-O6', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 166 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (-1, -1, 0), (0, -1, -1), (0, -1, 1), (-1, 0, -1), (-1, 0, 1), (-1, -1, -1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 13 10 out of 14 11\n", - "sublist 2 ['H19-C11-O6', 'H']\n", - "list1 15 ['H2-C', 'C-O2', 'H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H-C-O', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H-O', 'H19-C11-O6', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'C-O2', 'H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H-C-O', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H-O', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 167 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (-1, -1, 0), (0, -1, -1), (0, -1, 1), (-1, 0, -1), (-1, 0, 1), (-1, -1, -1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H19-C11-O6', 'H']\n", - " \n", - "Fragments to allocate: 13 11 out of 14 11\n", - "sublist 2 ['H-O', 'H']\n", - "list1 15 ['H19-C11-O6', 'H2-C', 'C-O2', 'H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H-C-O', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H-O', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H19-C11-O6', 'H2-C', 'C-O2', 'H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H-C-O', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 168 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, 1), (1, 0, 0), (0, -1, 1), (1, -1, 0), (1, 0, 1), (1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-O', 'H']\n", - " \n", - "Fragments to allocate: 14 0 out of 14 11\n", - "sublist 2 ['H14-C8-O5', 'H']\n", - "list1 15 ['H-O', 'H19-C11-O6', 'H2-C', 'C-O2', 'H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H-C-O', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-O', 'H19-C11-O6', 'H2-C', 'C-O2', 'H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H-C-O', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 169 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, -1, 0), (0, 0, 1), (1, 0, 0), (0, -1, 1), (1, -1, 0), (1, 0, 1), (1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H14-C8-O5', 'H']\n", - " \n", - "Fragments to allocate: 14 1 out of 14 11\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C', 'C-O2', 'H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H-C-O', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C', 'C-O2', 'H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H-C-O', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 170 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (-1, -1, 0), (0, -1, -1), (0, -1, 1), (-1, 0, -1), (-1, 0, 1), (-1, -1, -1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 14 2 out of 14 11\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C', 'C-O2', 'H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H-C-O', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C', 'C-O2', 'H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H-C-O', 'H-C-O', 'C-O2', 'C3-O6-Fe']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 171 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (-1, -1, 0), (0, -1, -1), (0, -1, 1), (-1, 0, -1), (-1, 0, 1), (-1, -1, -1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 14 3 out of 14 11\n", - "sublist 2 ['C3-O6-Fe', 'H']\n", - "list1 15 ['H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C', 'C-O2', 'H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H-C-O', 'H-C-O', 'C-O2', 'C3-O6-Fe']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C', 'C-O2', 'H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H-C-O', 'H-C-O', 'C-O2']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 172 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['Fe', 'O', 'O', 'O', 'O', 'O', 'O', 'C', 'C', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (-1, -1, 0), (0, -1, -1), (0, -1, 1), (-1, 0, -1), (-1, 0, 1), (-1, -1, -1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C3-O6-Fe', 'H']\n", - " \n", - "Fragments to allocate: 14 4 out of 14 11\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C', 'C-O2', 'H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H-C-O', 'H-C-O', 'C-O2']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C', 'C-O2', 'H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H-C-O', 'H-C-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 173 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 14 5 out of 14 11\n", - "sublist 2 ['H-C-O', 'H']\n", - "list1 15 ['C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C', 'C-O2', 'H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H-C-O', 'H-C-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C', 'C-O2', 'H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H-C-O']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 174 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (-1, -1, 0), (0, -1, -1), (0, -1, 1), (-1, 0, -1), (-1, 0, 1), (-1, -1, -1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-C-O', 'H']\n", - " \n", - "Fragments to allocate: 14 6 out of 14 11\n", - "sublist 2 ['H-C-O', 'H']\n", - "list1 15 ['H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C', 'C-O2', 'H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H-C-O']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C', 'C-O2', 'H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 175 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-C-O', 'H']\n", - " \n", - "Fragments to allocate: 14 7 out of 14 11\n", - "sublist 2 ['H14-C8-O5', 'H']\n", - "list1 15 ['H-C-O', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C', 'C-O2', 'H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-C-O', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C', 'C-O2', 'H3-C2', 'H2-C', 'H3-C2']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 176 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 1, 0), (-1, -1, 0), (0, -1, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, -1, -1), (-1, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H14-C8-O5', 'H']\n", - " \n", - "Fragments to allocate: 14 8 out of 14 11\n", - "sublist 2 ['H3-C2', 'H']\n", - "list1 15 ['H14-C8-O5', 'H-C-O', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C', 'C-O2', 'H3-C2', 'H2-C', 'H3-C2']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H14-C8-O5', 'H-C-O', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C', 'C-O2', 'H3-C2', 'H2-C']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 177 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H3-C2', 'H']\n", - " \n", - "Fragments to allocate: 14 9 out of 14 11\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H3-C2', 'H14-C8-O5', 'H-C-O', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C', 'C-O2', 'H3-C2', 'H2-C']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H3-C2', 'H14-C8-O5', 'H-C-O', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C', 'C-O2', 'H3-C2']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 178 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 14 10 out of 14 11\n", - "sublist 2 ['H3-C2', 'H']\n", - "list1 15 ['H2-C', 'H3-C2', 'H14-C8-O5', 'H-C-O', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C', 'C-O2', 'H3-C2']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H3-C2', 'H14-C8-O5', 'H-C-O', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C', 'C-O2']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 179 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H3-C2', 'H']\n", - " \n", - "Fragments to allocate: 14 11 out of 14 11\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H-C-O', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C', 'C-O2']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H-C-O', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 180 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, 1), (-1, -1, 0), (0, -1, 1), (-1, 0, 1), (-1, -1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - "Trying Full Tmatrix for all Items in list\n", - " \n", - "Fragments to allocate: 0 0 out of 14 11\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['C-O2', 'H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H-C-O', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H-C-O', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 1 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 0 1 out of 14 11\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['C-O2', 'H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H-C-O', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H-C-O', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 2 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 0 2 out of 14 11\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['C-O2', 'H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H-C-O', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H-C-O', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 3 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 0 3 out of 14 11\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['C-O2', 'H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H-C-O', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H-C-O', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 4 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 0 4 out of 14 11\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['C-O2', 'H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H-C-O', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H-C-O', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 5 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 0 5 out of 14 11\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['C-O2', 'H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H-C-O', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H-C-O', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 6 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 0 6 out of 14 11\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['C-O2', 'H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H-C-O', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H-C-O', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 7 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 0 7 out of 14 11\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['C-O2', 'H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H-C-O', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H-C-O', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 8 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 0 8 out of 14 11\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['C-O2', 'H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H-C-O', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H-C-O', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 9 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 0 9 out of 14 11\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['C-O2', 'H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H-C-O', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H-C-O', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 10 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 0 10 out of 14 11\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['C-O2', 'H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H-C-O', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H-C-O', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 11 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 0 11 out of 14 11\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['C-O2', 'H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H-C-O', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H-C-O', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 12 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 1 0 out of 14 11\n", - "sublist 2 ['H3-C2', 'H']\n", - "list1 15 ['C-O2', 'H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H-C-O', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H-C-O', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 13 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H3-C2', 'H']\n", - " \n", - "Fragments to allocate: 1 1 out of 14 11\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H3-C2', 'C-O2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H-C-O', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H-C-O', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 14 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 1 2 out of 14 11\n", - "sublist 2 ['H3-C2', 'H']\n", - "list1 15 ['C-O2', 'H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H-C-O', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H-C-O', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 15 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H3-C2', 'H']\n", - " \n", - "Fragments to allocate: 1 3 out of 14 11\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H3-C2', 'C-O2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H-C-O', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H-C-O', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 16 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 1 4 out of 14 11\n", - "sublist 2 ['H3-C2', 'H']\n", - "list1 15 ['C-O2', 'H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H-C-O', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H-C-O', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 17 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H3-C2', 'H']\n", - " \n", - "Fragments to allocate: 1 5 out of 14 11\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H3-C2', 'C-O2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H-C-O', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H-C-O', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 18 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 1 6 out of 14 11\n", - "sublist 2 ['H3-C2', 'H']\n", - "list1 15 ['C-O2', 'H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H-C-O', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H-C-O', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 19 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H3-C2', 'H']\n", - " \n", - "Fragments to allocate: 1 7 out of 14 11\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H3-C2', 'C-O2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H-C-O', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H-C-O', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 20 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 1 8 out of 14 11\n", - "sublist 2 ['H3-C2', 'H']\n", - "list1 15 ['C-O2', 'H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H-C-O', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H-C-O', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 21 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H3-C2', 'H']\n", - " \n", - "Fragments to allocate: 1 9 out of 14 11\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H3-C2', 'C-O2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H-C-O', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H-C-O', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 22 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 1 10 out of 14 11\n", - "sublist 2 ['H3-C2', 'H']\n", - "list1 15 ['C-O2', 'H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H-C-O', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H-C-O', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 23 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H3-C2', 'H']\n", - " \n", - "Fragments to allocate: 1 11 out of 14 11\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H3-C2', 'C-O2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H-C-O', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H-C-O', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 24 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 2 0 out of 14 11\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['C-O2', 'H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H-C-O', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H3-C2', 'H3-C2', 'H14-C8-O5', 'H-C-O', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 25 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 2 1 out of 14 11\n", - "sublist 2 ['H3-C2', 'H']\n", - "list1 15 ['H2-C', 'C-O2', 'H3-C2', 'H3-C2', 'H14-C8-O5', 'H-C-O', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'C-O2', 'H3-C2', 'H14-C8-O5', 'H-C-O', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 26 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H3-C2', 'H']\n", - " \n", - "Fragments to allocate: 2 2 out of 14 11\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H3-C2', 'H2-C', 'C-O2', 'H3-C2', 'H14-C8-O5', 'H-C-O', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H-C-O', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 27 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 2 3 out of 14 11\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['C-O2', 'H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H-C-O', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H3-C2', 'H3-C2', 'H14-C8-O5', 'H-C-O', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 28 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 2 4 out of 14 11\n", - "sublist 2 ['H3-C2', 'H']\n", - "list1 15 ['H2-C', 'C-O2', 'H3-C2', 'H3-C2', 'H14-C8-O5', 'H-C-O', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'C-O2', 'H3-C2', 'H14-C8-O5', 'H-C-O', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 29 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H3-C2', 'H']\n", - " \n", - "Fragments to allocate: 2 5 out of 14 11\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H3-C2', 'H2-C', 'C-O2', 'H3-C2', 'H14-C8-O5', 'H-C-O', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H-C-O', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 30 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 2 6 out of 14 11\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['C-O2', 'H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H-C-O', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H3-C2', 'H3-C2', 'H14-C8-O5', 'H-C-O', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 31 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 2 7 out of 14 11\n", - "sublist 2 ['H3-C2', 'H']\n", - "list1 15 ['H2-C', 'C-O2', 'H3-C2', 'H3-C2', 'H14-C8-O5', 'H-C-O', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'C-O2', 'H3-C2', 'H14-C8-O5', 'H-C-O', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 32 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H3-C2', 'H']\n", - " \n", - "Fragments to allocate: 2 8 out of 14 11\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H3-C2', 'H2-C', 'C-O2', 'H3-C2', 'H14-C8-O5', 'H-C-O', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H-C-O', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 33 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 2 9 out of 14 11\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['C-O2', 'H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H-C-O', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H3-C2', 'H3-C2', 'H14-C8-O5', 'H-C-O', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 34 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 2 10 out of 14 11\n", - "sublist 2 ['H3-C2', 'H']\n", - "list1 15 ['H2-C', 'C-O2', 'H3-C2', 'H3-C2', 'H14-C8-O5', 'H-C-O', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'C-O2', 'H3-C2', 'H14-C8-O5', 'H-C-O', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 35 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H3-C2', 'H']\n", - " \n", - "Fragments to allocate: 2 11 out of 14 11\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H3-C2', 'H2-C', 'C-O2', 'H3-C2', 'H14-C8-O5', 'H-C-O', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H-C-O', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 36 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 3 0 out of 14 11\n", - "sublist 2 ['H3-C2', 'H']\n", - "list1 15 ['C-O2', 'H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H-C-O', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H3-C2', 'H2-C', 'H14-C8-O5', 'H-C-O', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 37 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H3-C2', 'H']\n", - " \n", - "Fragments to allocate: 3 1 out of 14 11\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H3-C2', 'C-O2', 'H3-C2', 'H2-C', 'H14-C8-O5', 'H-C-O', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H3-C2', 'C-O2', 'H3-C2', 'H14-C8-O5', 'H-C-O', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 38 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 3 2 out of 14 11\n", - "sublist 2 ['H3-C2', 'H']\n", - "list1 15 ['H2-C', 'H3-C2', 'C-O2', 'H3-C2', 'H14-C8-O5', 'H-C-O', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H3-C2', 'C-O2', 'H14-C8-O5', 'H-C-O', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 39 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H3-C2', 'H']\n", - " \n", - "Fragments to allocate: 3 3 out of 14 11\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H3-C2', 'H2-C', 'H3-C2', 'C-O2', 'H14-C8-O5', 'H-C-O', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H-C-O', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 40 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 3 4 out of 14 11\n", - "sublist 2 ['H3-C2', 'H']\n", - "list1 15 ['C-O2', 'H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H-C-O', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H3-C2', 'H2-C', 'H14-C8-O5', 'H-C-O', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 41 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H3-C2', 'H']\n", - " \n", - "Fragments to allocate: 3 5 out of 14 11\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H3-C2', 'C-O2', 'H3-C2', 'H2-C', 'H14-C8-O5', 'H-C-O', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H3-C2', 'C-O2', 'H3-C2', 'H14-C8-O5', 'H-C-O', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 42 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 3 6 out of 14 11\n", - "sublist 2 ['H3-C2', 'H']\n", - "list1 15 ['H2-C', 'H3-C2', 'C-O2', 'H3-C2', 'H14-C8-O5', 'H-C-O', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H3-C2', 'C-O2', 'H14-C8-O5', 'H-C-O', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 43 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H3-C2', 'H']\n", - " \n", - "Fragments to allocate: 3 7 out of 14 11\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H3-C2', 'H2-C', 'H3-C2', 'C-O2', 'H14-C8-O5', 'H-C-O', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H-C-O', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 44 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 3 8 out of 14 11\n", - "sublist 2 ['H3-C2', 'H']\n", - "list1 15 ['C-O2', 'H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H-C-O', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H3-C2', 'H2-C', 'H14-C8-O5', 'H-C-O', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 45 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H3-C2', 'H']\n", - " \n", - "Fragments to allocate: 3 9 out of 14 11\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H3-C2', 'C-O2', 'H3-C2', 'H2-C', 'H14-C8-O5', 'H-C-O', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H3-C2', 'C-O2', 'H3-C2', 'H14-C8-O5', 'H-C-O', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 46 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 3 10 out of 14 11\n", - "sublist 2 ['H3-C2', 'H']\n", - "list1 15 ['H2-C', 'H3-C2', 'C-O2', 'H3-C2', 'H14-C8-O5', 'H-C-O', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H3-C2', 'C-O2', 'H14-C8-O5', 'H-C-O', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 47 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H3-C2', 'H']\n", - " \n", - "Fragments to allocate: 3 11 out of 14 11\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H3-C2', 'H2-C', 'H3-C2', 'C-O2', 'H14-C8-O5', 'H-C-O', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H-C-O', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 48 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 4 0 out of 14 11\n", - "sublist 2 ['H14-C8-O5', 'H']\n", - "list1 15 ['C-O2', 'H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H-C-O', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H3-C2', 'H2-C', 'H3-C2', 'H-C-O', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 49 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H14-C8-O5', 'H']\n", - " \n", - "Fragments to allocate: 4 1 out of 14 11\n", - "sublist 2 ['H3-C2', 'H']\n", - "list1 15 ['H14-C8-O5', 'C-O2', 'H3-C2', 'H2-C', 'H3-C2', 'H-C-O', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H14-C8-O5', 'C-O2', 'H3-C2', 'H2-C', 'H-C-O', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 50 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H3-C2', 'H']\n", - " \n", - "Fragments to allocate: 4 2 out of 14 11\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H2-C', 'H-C-O', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H-C-O', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 51 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 4 3 out of 14 11\n", - "sublist 2 ['H3-C2', 'H']\n", - "list1 15 ['H2-C', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H-C-O', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H-C-O', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 52 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H3-C2', 'H']\n", - " \n", - "Fragments to allocate: 4 4 out of 14 11\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H-C-O', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H-C-O', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 53 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 4 5 out of 14 11\n", - "sublist 2 ['H14-C8-O5', 'H']\n", - "list1 15 ['C-O2', 'H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H-C-O', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H3-C2', 'H2-C', 'H3-C2', 'H-C-O', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 54 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H14-C8-O5', 'H']\n", - " \n", - "Fragments to allocate: 4 6 out of 14 11\n", - "sublist 2 ['H3-C2', 'H']\n", - "list1 15 ['H14-C8-O5', 'C-O2', 'H3-C2', 'H2-C', 'H3-C2', 'H-C-O', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H14-C8-O5', 'C-O2', 'H3-C2', 'H2-C', 'H-C-O', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 55 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H3-C2', 'H']\n", - " \n", - "Fragments to allocate: 4 7 out of 14 11\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H2-C', 'H-C-O', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H-C-O', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 56 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 4 8 out of 14 11\n", - "sublist 2 ['H3-C2', 'H']\n", - "list1 15 ['H2-C', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H-C-O', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H-C-O', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 57 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H3-C2', 'H']\n", - " \n", - "Fragments to allocate: 4 9 out of 14 11\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H-C-O', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H-C-O', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 58 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 4 10 out of 14 11\n", - "sublist 2 ['H14-C8-O5', 'H']\n", - "list1 15 ['C-O2', 'H3-C2', 'H2-C', 'H3-C2', 'H14-C8-O5', 'H-C-O', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H3-C2', 'H2-C', 'H3-C2', 'H-C-O', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 59 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H14-C8-O5', 'H']\n", - " \n", - "Fragments to allocate: 4 11 out of 14 11\n", - "sublist 2 ['H3-C2', 'H']\n", - "list1 15 ['H14-C8-O5', 'C-O2', 'H3-C2', 'H2-C', 'H3-C2', 'H-C-O', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H14-C8-O5', 'C-O2', 'H3-C2', 'H2-C', 'H-C-O', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 60 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H3-C2', 'H']\n", - " \n", - "Fragments to allocate: 5 0 out of 14 11\n", - "sublist 2 ['H-C-O', 'H']\n", - "list1 15 ['H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H2-C', 'H-C-O', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H2-C', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 61 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-C-O', 'H']\n", - " \n", - "Fragments to allocate: 5 1 out of 14 11\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H-C-O', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H2-C', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-C-O', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 62 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 5 2 out of 14 11\n", - "sublist 2 ['H3-C2', 'H']\n", - "list1 15 ['H2-C', 'H-C-O', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H-C-O', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 63 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H3-C2', 'H']\n", - " \n", - "Fragments to allocate: 5 3 out of 14 11\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H3-C2', 'H2-C', 'H-C-O', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H3-C2', 'H2-C', 'H-C-O', 'H3-C2', 'H14-C8-O5', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 64 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 5 4 out of 14 11\n", - "sublist 2 ['H14-C8-O5', 'H']\n", - "list1 15 ['C-O2', 'H3-C2', 'H2-C', 'H-C-O', 'H3-C2', 'H14-C8-O5', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H3-C2', 'H2-C', 'H-C-O', 'H3-C2', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 65 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H14-C8-O5', 'H']\n", - " \n", - "Fragments to allocate: 5 5 out of 14 11\n", - "sublist 2 ['H3-C2', 'H']\n", - "list1 15 ['H14-C8-O5', 'C-O2', 'H3-C2', 'H2-C', 'H-C-O', 'H3-C2', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H14-C8-O5', 'C-O2', 'H3-C2', 'H2-C', 'H-C-O', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 66 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H3-C2', 'H']\n", - " \n", - "Fragments to allocate: 5 6 out of 14 11\n", - "sublist 2 ['H-C-O', 'H']\n", - "list1 15 ['H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H2-C', 'H-C-O', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H2-C', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 67 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-C-O', 'H']\n", - " \n", - "Fragments to allocate: 5 7 out of 14 11\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H-C-O', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H2-C', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-C-O', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 68 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 5 8 out of 14 11\n", - "sublist 2 ['H3-C2', 'H']\n", - "list1 15 ['H2-C', 'H-C-O', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H3-C2', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H-C-O', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 69 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H3-C2', 'H']\n", - " \n", - "Fragments to allocate: 5 9 out of 14 11\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H3-C2', 'H2-C', 'H-C-O', 'H3-C2', 'H14-C8-O5', 'C-O2', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H3-C2', 'H2-C', 'H-C-O', 'H3-C2', 'H14-C8-O5', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 70 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 5 10 out of 14 11\n", - "sublist 2 ['H14-C8-O5', 'H']\n", - "list1 15 ['C-O2', 'H3-C2', 'H2-C', 'H-C-O', 'H3-C2', 'H14-C8-O5', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H3-C2', 'H2-C', 'H-C-O', 'H3-C2', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 71 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 1\n", - "SPILT_SPECIES: Laplacian lap=array([[-2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0],\n", - " [ 0, -2, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [ 0, 0, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,\n", - " 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [ 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0],\n", - " [ 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0],\n", - " [ 1, 0, 0, 0, 0, -4, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [ 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [ 0, 0, 0, 0, 0, 1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [ 0, 1, 0, 0, 0, 1, 0, 0, -4, 1, 1, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [ 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [ 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [ 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -4, 1, 1, 1, 0,\n", - " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, 0, 0,\n", - " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [ 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, -4, 1,\n", - " 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1,\n", - " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,\n", - " -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [ 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, -4, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0],\n", - " [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [ 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 1, 0, 0, -3, 0, 0, 0, 0, 0, 0, 1],\n", - " [ 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, -4, 1, 1, 1, 0, 0, 0],\n", - " [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0],\n", - " [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 1, 0, -1, 0, 0, 0, 0],\n", - " [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 1, 0, 0, -4, 1, 1, 0],\n", - " [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0],\n", - " [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, 0],\n", - " [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, -1]])\n", - "SPILT_SPECIES: graph=<28x28 sparse matrix of type ''\n", - "\twith 82 stored elements in Compressed Sparse Row format>\n", - "COMBINE. received molecule: ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 28\n", - " Formula = H15-C8-O5\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - " from merge fragments\n", - "COMBINE: Fragment H15-C8-O5 added to avglist\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 1 ['H15-C8-O5']\n", - "SEQUENTIAL: badlist 0 []\n", - " \n", - "Fragments to allocate: 0 1 out of 14 10\n", - "sublist 2 ['H15-C8-O5', 'H']\n", - "list1 15 ['H15-C8-O5', 'C-O2', 'H3-C2', 'H2-C', 'H-C-O', 'H3-C2', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H3-C2', 'H2-C', 'H-C-O', 'H3-C2', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 72 with 15 and 11 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H15-C8-O5', 'H']\n", - " \n", - "Fragments to allocate: 0 2 out of 14 10\n", - "sublist 2 ['H15-C8-O5', 'H']\n", - "list1 15 ['H15-C8-O5', 'C-O2', 'H3-C2', 'H2-C', 'H-C-O', 'H3-C2', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H3-C2', 'H2-C', 'H-C-O', 'H3-C2', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 73 with 15 and 11 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H15-C8-O5', 'H']\n", - " \n", - "Fragments to allocate: 0 3 out of 14 10\n", - "sublist 2 ['H15-C8-O5', 'H']\n", - "list1 15 ['H15-C8-O5', 'C-O2', 'H3-C2', 'H2-C', 'H-C-O', 'H3-C2', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H3-C2', 'H2-C', 'H-C-O', 'H3-C2', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 74 with 15 and 11 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H15-C8-O5', 'H']\n", - " \n", - "Fragments to allocate: 0 4 out of 14 10\n", - "sublist 2 ['H15-C8-O5', 'H']\n", - "list1 15 ['H15-C8-O5', 'C-O2', 'H3-C2', 'H2-C', 'H-C-O', 'H3-C2', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H3-C2', 'H2-C', 'H-C-O', 'H3-C2', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 75 with 15 and 11 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 1\n", - "SPILT_SPECIES: Laplacian lap=array([[-2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0],\n", - " [ 0, -2, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [ 0, 0, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,\n", - " 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [ 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [ 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0],\n", - " [ 1, 0, 0, 0, 0, -4, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [ 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [ 0, 0, 0, 0, 0, 1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [ 0, 1, 0, 0, 0, 1, 0, 0, -4, 1, 1, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [ 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [ 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [ 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -4, 1, 1, 1, 0,\n", - " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, 0, 0,\n", - " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [ 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, -4, 1,\n", - " 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1,\n", - " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,\n", - " -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [ 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, -4, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [ 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 1, 0, 0, -4, 0, 0, 0, 0, 0, 0, 1, 1],\n", - " [ 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, -4, 1, 1, 1, 0, 0, 0, 0],\n", - " [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0],\n", - " [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 1, 0, -1, 0, 0, 0, 0, 0],\n", - " [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 1, 0, 0, -4, 1, 1, 0, 0],\n", - " [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0],\n", - " [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, 0, 0],\n", - " [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, -1, 0],\n", - " [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, -1]])\n", - "SPILT_SPECIES: graph=<29x29 sparse matrix of type ''\n", - "\twith 85 stored elements in Compressed Sparse Row format>\n", - "COMBINE. received molecule: ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 29\n", - " Formula = H16-C8-O5\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - " from merge fragments\n", - "COMBINE: Fragment H16-C8-O5 added to avglist\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 1 ['H16-C8-O5']\n", - "SEQUENTIAL: badlist 0 []\n", - " \n", - "Fragments to allocate: 0 1 out of 14 9\n", - "sublist 2 ['H16-C8-O5', 'H']\n", - "list1 15 ['H16-C8-O5', 'C-O2', 'H3-C2', 'H2-C', 'H-C-O', 'H3-C2', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H3-C2', 'H2-C', 'H-C-O', 'H3-C2', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 76 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H16-C8-O5', 'H']\n", - " \n", - "Fragments to allocate: 0 2 out of 14 9\n", - "sublist 2 ['H16-C8-O5', 'H']\n", - "list1 15 ['H16-C8-O5', 'C-O2', 'H3-C2', 'H2-C', 'H-C-O', 'H3-C2', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H3-C2', 'H2-C', 'H-C-O', 'H3-C2', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 77 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H16-C8-O5', 'H']\n", - " \n", - "Fragments to allocate: 0 3 out of 14 9\n", - "sublist 2 ['H16-C8-O5', 'H']\n", - "list1 15 ['H16-C8-O5', 'C-O2', 'H3-C2', 'H2-C', 'H-C-O', 'H3-C2', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H3-C2', 'H2-C', 'H-C-O', 'H3-C2', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 78 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H16-C8-O5', 'H']\n", - " \n", - "Fragments to allocate: 0 4 out of 14 9\n", - "sublist 2 ['H16-C8-O5', 'H']\n", - "list1 15 ['H16-C8-O5', 'C-O2', 'H3-C2', 'H2-C', 'H-C-O', 'H3-C2', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H3-C2', 'H2-C', 'H-C-O', 'H3-C2', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 79 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H16-C8-O5', 'H']\n", - " \n", - "Fragments to allocate: 0 5 out of 14 9\n", - "sublist 2 ['H16-C8-O5', 'H']\n", - "list1 15 ['H16-C8-O5', 'C-O2', 'H3-C2', 'H2-C', 'H-C-O', 'H3-C2', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H3-C2', 'H2-C', 'H-C-O', 'H3-C2', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 80 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H16-C8-O5', 'H']\n", - " \n", - "Fragments to allocate: 0 6 out of 14 9\n", - "sublist 2 ['H16-C8-O5', 'H']\n", - "list1 15 ['H16-C8-O5', 'C-O2', 'H3-C2', 'H2-C', 'H-C-O', 'H3-C2', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H3-C2', 'H2-C', 'H-C-O', 'H3-C2', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 81 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H16-C8-O5', 'H']\n", - " \n", - "Fragments to allocate: 0 7 out of 14 9\n", - "sublist 2 ['H16-C8-O5', 'H']\n", - "list1 15 ['H16-C8-O5', 'C-O2', 'H3-C2', 'H2-C', 'H-C-O', 'H3-C2', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H3-C2', 'H2-C', 'H-C-O', 'H3-C2', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 82 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H16-C8-O5', 'H']\n", - " \n", - "Fragments to allocate: 0 8 out of 14 9\n", - "sublist 2 ['H16-C8-O5', 'H']\n", - "list1 15 ['H16-C8-O5', 'C-O2', 'H3-C2', 'H2-C', 'H-C-O', 'H3-C2', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H3-C2', 'H2-C', 'H-C-O', 'H3-C2', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 83 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H16-C8-O5', 'H']\n", - " \n", - "Fragments to allocate: 0 9 out of 14 9\n", - "sublist 2 ['H16-C8-O5', 'H']\n", - "list1 15 ['H16-C8-O5', 'C-O2', 'H3-C2', 'H2-C', 'H-C-O', 'H3-C2', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H3-C2', 'H2-C', 'H-C-O', 'H3-C2', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 84 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H16-C8-O5', 'H']\n", - " \n", - "Fragments to allocate: 1 0 out of 14 9\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H16-C8-O5', 'C-O2', 'H3-C2', 'H2-C', 'H-C-O', 'H3-C2', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H16-C8-O5', 'H3-C2', 'H2-C', 'H-C-O', 'H3-C2', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 85 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 1 1 out of 14 9\n", - "sublist 2 ['H16-C8-O5', 'H']\n", - "list1 15 ['C-O2', 'H16-C8-O5', 'H3-C2', 'H2-C', 'H-C-O', 'H3-C2', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H3-C2', 'H2-C', 'H-C-O', 'H3-C2', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 86 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H16-C8-O5', 'H']\n", - " \n", - "Fragments to allocate: 1 2 out of 14 9\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H16-C8-O5', 'C-O2', 'H3-C2', 'H2-C', 'H-C-O', 'H3-C2', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H16-C8-O5', 'H3-C2', 'H2-C', 'H-C-O', 'H3-C2', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 87 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 1 3 out of 14 9\n", - "sublist 2 ['H16-C8-O5', 'H']\n", - "list1 15 ['C-O2', 'H16-C8-O5', 'H3-C2', 'H2-C', 'H-C-O', 'H3-C2', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H3-C2', 'H2-C', 'H-C-O', 'H3-C2', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 88 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H16-C8-O5', 'H']\n", - " \n", - "Fragments to allocate: 1 4 out of 14 9\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H16-C8-O5', 'C-O2', 'H3-C2', 'H2-C', 'H-C-O', 'H3-C2', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H16-C8-O5', 'H3-C2', 'H2-C', 'H-C-O', 'H3-C2', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 89 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 1 5 out of 14 9\n", - "sublist 2 ['H16-C8-O5', 'H']\n", - "list1 15 ['C-O2', 'H16-C8-O5', 'H3-C2', 'H2-C', 'H-C-O', 'H3-C2', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H3-C2', 'H2-C', 'H-C-O', 'H3-C2', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 90 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H16-C8-O5', 'H']\n", - " \n", - "Fragments to allocate: 1 6 out of 14 9\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H16-C8-O5', 'C-O2', 'H3-C2', 'H2-C', 'H-C-O', 'H3-C2', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H16-C8-O5', 'H3-C2', 'H2-C', 'H-C-O', 'H3-C2', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 91 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 1 7 out of 14 9\n", - "sublist 2 ['H16-C8-O5', 'H']\n", - "list1 15 ['C-O2', 'H16-C8-O5', 'H3-C2', 'H2-C', 'H-C-O', 'H3-C2', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H3-C2', 'H2-C', 'H-C-O', 'H3-C2', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 92 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H16-C8-O5', 'H']\n", - " \n", - "Fragments to allocate: 1 8 out of 14 9\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H16-C8-O5', 'C-O2', 'H3-C2', 'H2-C', 'H-C-O', 'H3-C2', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H16-C8-O5', 'H3-C2', 'H2-C', 'H-C-O', 'H3-C2', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 93 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 1 9 out of 14 9\n", - "sublist 2 ['H16-C8-O5', 'H']\n", - "list1 15 ['C-O2', 'H16-C8-O5', 'H3-C2', 'H2-C', 'H-C-O', 'H3-C2', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H3-C2', 'H2-C', 'H-C-O', 'H3-C2', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 94 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H16-C8-O5', 'H']\n", - " \n", - "Fragments to allocate: 2 0 out of 14 9\n", - "sublist 2 ['H3-C2', 'H']\n", - "list1 15 ['H16-C8-O5', 'C-O2', 'H3-C2', 'H2-C', 'H-C-O', 'H3-C2', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H16-C8-O5', 'C-O2', 'H2-C', 'H-C-O', 'H3-C2', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 95 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H3-C2', 'H']\n", - " \n", - "Fragments to allocate: 2 1 out of 14 9\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H3-C2', 'H16-C8-O5', 'C-O2', 'H2-C', 'H-C-O', 'H3-C2', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H3-C2', 'H16-C8-O5', 'H2-C', 'H-C-O', 'H3-C2', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 96 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 2 2 out of 14 9\n", - "sublist 2 ['H16-C8-O5', 'H']\n", - "list1 15 ['C-O2', 'H3-C2', 'H16-C8-O5', 'H2-C', 'H-C-O', 'H3-C2', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H3-C2', 'H2-C', 'H-C-O', 'H3-C2', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 97 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H16-C8-O5', 'H']\n", - " \n", - "Fragments to allocate: 2 3 out of 14 9\n", - "sublist 2 ['H3-C2', 'H']\n", - "list1 15 ['H16-C8-O5', 'C-O2', 'H3-C2', 'H2-C', 'H-C-O', 'H3-C2', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H16-C8-O5', 'C-O2', 'H2-C', 'H-C-O', 'H3-C2', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 98 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H3-C2', 'H']\n", - " \n", - "Fragments to allocate: 2 4 out of 14 9\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H3-C2', 'H16-C8-O5', 'C-O2', 'H2-C', 'H-C-O', 'H3-C2', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H3-C2', 'H16-C8-O5', 'H2-C', 'H-C-O', 'H3-C2', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 99 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 2 5 out of 14 9\n", - "sublist 2 ['H16-C8-O5', 'H']\n", - "list1 15 ['C-O2', 'H3-C2', 'H16-C8-O5', 'H2-C', 'H-C-O', 'H3-C2', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H3-C2', 'H2-C', 'H-C-O', 'H3-C2', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 100 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H16-C8-O5', 'H']\n", - " \n", - "Fragments to allocate: 2 6 out of 14 9\n", - "sublist 2 ['H3-C2', 'H']\n", - "list1 15 ['H16-C8-O5', 'C-O2', 'H3-C2', 'H2-C', 'H-C-O', 'H3-C2', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H16-C8-O5', 'C-O2', 'H2-C', 'H-C-O', 'H3-C2', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 101 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H3-C2', 'H']\n", - " \n", - "Fragments to allocate: 2 7 out of 14 9\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H3-C2', 'H16-C8-O5', 'C-O2', 'H2-C', 'H-C-O', 'H3-C2', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H3-C2', 'H16-C8-O5', 'H2-C', 'H-C-O', 'H3-C2', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 102 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 2 8 out of 14 9\n", - "sublist 2 ['H16-C8-O5', 'H']\n", - "list1 15 ['C-O2', 'H3-C2', 'H16-C8-O5', 'H2-C', 'H-C-O', 'H3-C2', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H3-C2', 'H2-C', 'H-C-O', 'H3-C2', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 103 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H16-C8-O5', 'H']\n", - " \n", - "Fragments to allocate: 2 9 out of 14 9\n", - "sublist 2 ['H3-C2', 'H']\n", - "list1 15 ['H16-C8-O5', 'C-O2', 'H3-C2', 'H2-C', 'H-C-O', 'H3-C2', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H16-C8-O5', 'C-O2', 'H2-C', 'H-C-O', 'H3-C2', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 104 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H3-C2', 'H']\n", - " \n", - "Fragments to allocate: 3 0 out of 14 9\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H3-C2', 'H16-C8-O5', 'C-O2', 'H2-C', 'H-C-O', 'H3-C2', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H3-C2', 'H16-C8-O5', 'C-O2', 'H-C-O', 'H3-C2', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 105 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 3 1 out of 14 9\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H2-C', 'H3-C2', 'H16-C8-O5', 'C-O2', 'H-C-O', 'H3-C2', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H3-C2', 'H16-C8-O5', 'H-C-O', 'H3-C2', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 106 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 3 2 out of 14 9\n", - "sublist 2 ['H16-C8-O5', 'H']\n", - "list1 15 ['C-O2', 'H2-C', 'H3-C2', 'H16-C8-O5', 'H-C-O', 'H3-C2', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H2-C', 'H3-C2', 'H-C-O', 'H3-C2', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 107 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H16-C8-O5', 'H']\n", - " \n", - "Fragments to allocate: 3 3 out of 14 9\n", - "sublist 2 ['H3-C2', 'H']\n", - "list1 15 ['H16-C8-O5', 'C-O2', 'H2-C', 'H3-C2', 'H-C-O', 'H3-C2', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H16-C8-O5', 'C-O2', 'H2-C', 'H-C-O', 'H3-C2', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 108 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H3-C2', 'H']\n", - " \n", - "Fragments to allocate: 3 4 out of 14 9\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H3-C2', 'H16-C8-O5', 'C-O2', 'H2-C', 'H-C-O', 'H3-C2', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H3-C2', 'H16-C8-O5', 'C-O2', 'H-C-O', 'H3-C2', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 109 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 3 5 out of 14 9\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H2-C', 'H3-C2', 'H16-C8-O5', 'C-O2', 'H-C-O', 'H3-C2', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H3-C2', 'H16-C8-O5', 'H-C-O', 'H3-C2', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 110 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 3 6 out of 14 9\n", - "sublist 2 ['H16-C8-O5', 'H']\n", - "list1 15 ['C-O2', 'H2-C', 'H3-C2', 'H16-C8-O5', 'H-C-O', 'H3-C2', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H2-C', 'H3-C2', 'H-C-O', 'H3-C2', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 111 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H16-C8-O5', 'H']\n", - " \n", - "Fragments to allocate: 3 7 out of 14 9\n", - "sublist 2 ['H3-C2', 'H']\n", - "list1 15 ['H16-C8-O5', 'C-O2', 'H2-C', 'H3-C2', 'H-C-O', 'H3-C2', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H16-C8-O5', 'C-O2', 'H2-C', 'H-C-O', 'H3-C2', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 112 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H3-C2', 'H']\n", - " \n", - "Fragments to allocate: 3 8 out of 14 9\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H3-C2', 'H16-C8-O5', 'C-O2', 'H2-C', 'H-C-O', 'H3-C2', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H3-C2', 'H16-C8-O5', 'C-O2', 'H-C-O', 'H3-C2', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 113 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 3 9 out of 14 9\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H2-C', 'H3-C2', 'H16-C8-O5', 'C-O2', 'H-C-O', 'H3-C2', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H3-C2', 'H16-C8-O5', 'H-C-O', 'H3-C2', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 114 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 4 0 out of 14 9\n", - "sublist 2 ['H-C-O', 'H']\n", - "list1 15 ['C-O2', 'H2-C', 'H3-C2', 'H16-C8-O5', 'H-C-O', 'H3-C2', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H2-C', 'H3-C2', 'H16-C8-O5', 'H3-C2', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 115 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-C-O', 'H']\n", - " \n", - "Fragments to allocate: 4 1 out of 14 9\n", - "sublist 2 ['H16-C8-O5', 'H']\n", - "list1 15 ['H-C-O', 'C-O2', 'H2-C', 'H3-C2', 'H16-C8-O5', 'H3-C2', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-C-O', 'C-O2', 'H2-C', 'H3-C2', 'H3-C2', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 116 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H16-C8-O5', 'H']\n", - " \n", - "Fragments to allocate: 4 2 out of 14 9\n", - "sublist 2 ['H3-C2', 'H']\n", - "list1 15 ['H16-C8-O5', 'H-C-O', 'C-O2', 'H2-C', 'H3-C2', 'H3-C2', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H16-C8-O5', 'H-C-O', 'C-O2', 'H2-C', 'H3-C2', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 117 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H3-C2', 'H']\n", - " \n", - "Fragments to allocate: 4 3 out of 14 9\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H3-C2', 'H16-C8-O5', 'H-C-O', 'C-O2', 'H2-C', 'H3-C2', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H3-C2', 'H16-C8-O5', 'H-C-O', 'C-O2', 'H3-C2', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 118 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 4 4 out of 14 9\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H2-C', 'H3-C2', 'H16-C8-O5', 'H-C-O', 'C-O2', 'H3-C2', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H3-C2', 'H16-C8-O5', 'H-C-O', 'H3-C2', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 119 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 4 5 out of 14 9\n", - "sublist 2 ['H-C-O', 'H']\n", - "list1 15 ['C-O2', 'H2-C', 'H3-C2', 'H16-C8-O5', 'H-C-O', 'H3-C2', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H2-C', 'H3-C2', 'H16-C8-O5', 'H3-C2', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 120 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-C-O', 'H']\n", - " \n", - "Fragments to allocate: 4 6 out of 14 9\n", - "sublist 2 ['H16-C8-O5', 'H']\n", - "list1 15 ['H-C-O', 'C-O2', 'H2-C', 'H3-C2', 'H16-C8-O5', 'H3-C2', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-C-O', 'C-O2', 'H2-C', 'H3-C2', 'H3-C2', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 121 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H16-C8-O5', 'H']\n", - " \n", - "Fragments to allocate: 4 7 out of 14 9\n", - "sublist 2 ['H3-C2', 'H']\n", - "list1 15 ['H16-C8-O5', 'H-C-O', 'C-O2', 'H2-C', 'H3-C2', 'H3-C2', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H16-C8-O5', 'H-C-O', 'C-O2', 'H2-C', 'H3-C2', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 122 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H3-C2', 'H']\n", - " \n", - "Fragments to allocate: 4 8 out of 14 9\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H3-C2', 'H16-C8-O5', 'H-C-O', 'C-O2', 'H2-C', 'H3-C2', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H3-C2', 'H16-C8-O5', 'H-C-O', 'C-O2', 'H3-C2', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 123 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 4 9 out of 14 9\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H2-C', 'H3-C2', 'H16-C8-O5', 'H-C-O', 'C-O2', 'H3-C2', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H3-C2', 'H16-C8-O5', 'H-C-O', 'H3-C2', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 124 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 5 0 out of 14 9\n", - "sublist 2 ['H3-C2', 'H']\n", - "list1 15 ['C-O2', 'H2-C', 'H3-C2', 'H16-C8-O5', 'H-C-O', 'H3-C2', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H2-C', 'H3-C2', 'H16-C8-O5', 'H-C-O', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 125 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H3-C2', 'H']\n", - " \n", - "Fragments to allocate: 5 1 out of 14 9\n", - "sublist 2 ['H-C-O', 'H']\n", - "list1 15 ['H3-C2', 'C-O2', 'H2-C', 'H3-C2', 'H16-C8-O5', 'H-C-O', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H3-C2', 'C-O2', 'H2-C', 'H3-C2', 'H16-C8-O5', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 126 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-C-O', 'H']\n", - " \n", - "Fragments to allocate: 5 2 out of 14 9\n", - "sublist 2 ['H16-C8-O5', 'H']\n", - "list1 15 ['H-C-O', 'H3-C2', 'C-O2', 'H2-C', 'H3-C2', 'H16-C8-O5', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-C-O', 'H3-C2', 'C-O2', 'H2-C', 'H3-C2', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 127 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H16-C8-O5', 'H']\n", - " \n", - "Fragments to allocate: 5 3 out of 14 9\n", - "sublist 2 ['H3-C2', 'H']\n", - "list1 15 ['H16-C8-O5', 'H-C-O', 'H3-C2', 'C-O2', 'H2-C', 'H3-C2', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H16-C8-O5', 'H-C-O', 'H3-C2', 'C-O2', 'H2-C', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 128 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H3-C2', 'H']\n", - " \n", - "Fragments to allocate: 5 4 out of 14 9\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H3-C2', 'H16-C8-O5', 'H-C-O', 'H3-C2', 'C-O2', 'H2-C', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H3-C2', 'H16-C8-O5', 'H-C-O', 'H3-C2', 'C-O2', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 129 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 5 5 out of 14 9\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H2-C', 'H3-C2', 'H16-C8-O5', 'H-C-O', 'H3-C2', 'C-O2', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H3-C2', 'H16-C8-O5', 'H-C-O', 'H3-C2', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 130 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 5 6 out of 14 9\n", - "sublist 2 ['H3-C2', 'H']\n", - "list1 15 ['C-O2', 'H2-C', 'H3-C2', 'H16-C8-O5', 'H-C-O', 'H3-C2', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H2-C', 'H3-C2', 'H16-C8-O5', 'H-C-O', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 131 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H3-C2', 'H']\n", - " \n", - "Fragments to allocate: 5 7 out of 14 9\n", - "sublist 2 ['H-C-O', 'H']\n", - "list1 15 ['H3-C2', 'C-O2', 'H2-C', 'H3-C2', 'H16-C8-O5', 'H-C-O', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H3-C2', 'C-O2', 'H2-C', 'H3-C2', 'H16-C8-O5', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 132 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-C-O', 'H']\n", - " \n", - "Fragments to allocate: 5 8 out of 14 9\n", - "sublist 2 ['H16-C8-O5', 'H']\n", - "list1 15 ['H-C-O', 'H3-C2', 'C-O2', 'H2-C', 'H3-C2', 'H16-C8-O5', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-C-O', 'H3-C2', 'C-O2', 'H2-C', 'H3-C2', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 133 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H16-C8-O5', 'H']\n", - " \n", - "Fragments to allocate: 5 9 out of 14 9\n", - "sublist 2 ['H3-C2', 'H']\n", - "list1 15 ['H16-C8-O5', 'H-C-O', 'H3-C2', 'C-O2', 'H2-C', 'H3-C2', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H16-C8-O5', 'H-C-O', 'H3-C2', 'C-O2', 'H2-C', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 134 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H3-C2', 'H']\n", - " \n", - "Fragments to allocate: 6 0 out of 14 9\n", - "sublist 2 ['H-C-O', 'H']\n", - "list1 15 ['H3-C2', 'H16-C8-O5', 'H-C-O', 'H3-C2', 'C-O2', 'H2-C', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H3-C2', 'H16-C8-O5', 'H-C-O', 'H3-C2', 'C-O2', 'H2-C', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 135 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-C-O', 'H']\n", - " \n", - "Fragments to allocate: 6 1 out of 14 9\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H-C-O', 'H3-C2', 'H16-C8-O5', 'H-C-O', 'H3-C2', 'C-O2', 'H2-C', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-C-O', 'H3-C2', 'H16-C8-O5', 'H-C-O', 'H3-C2', 'C-O2', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 136 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 6 2 out of 14 9\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H2-C', 'H-C-O', 'H3-C2', 'H16-C8-O5', 'H-C-O', 'H3-C2', 'C-O2', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H-C-O', 'H3-C2', 'H16-C8-O5', 'H-C-O', 'H3-C2', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 137 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 6 3 out of 14 9\n", - "sublist 2 ['H3-C2', 'H']\n", - "list1 15 ['C-O2', 'H2-C', 'H-C-O', 'H3-C2', 'H16-C8-O5', 'H-C-O', 'H3-C2', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H2-C', 'H-C-O', 'H3-C2', 'H16-C8-O5', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 138 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H3-C2', 'H']\n", - " \n", - "Fragments to allocate: 6 4 out of 14 9\n", - "sublist 2 ['H-C-O', 'H']\n", - "list1 15 ['H3-C2', 'C-O2', 'H2-C', 'H-C-O', 'H3-C2', 'H16-C8-O5', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H3-C2', 'C-O2', 'H2-C', 'H-C-O', 'H3-C2', 'H16-C8-O5', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 139 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-C-O', 'H']\n", - " \n", - "Fragments to allocate: 6 5 out of 14 9\n", - "sublist 2 ['H16-C8-O5', 'H']\n", - "list1 15 ['H-C-O', 'H3-C2', 'C-O2', 'H2-C', 'H-C-O', 'H3-C2', 'H16-C8-O5', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-C-O', 'H3-C2', 'C-O2', 'H2-C', 'H-C-O', 'H3-C2', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 140 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H16-C8-O5', 'H']\n", - " \n", - "Fragments to allocate: 6 6 out of 14 9\n", - "sublist 2 ['H3-C2', 'H']\n", - "list1 15 ['H16-C8-O5', 'H-C-O', 'H3-C2', 'C-O2', 'H2-C', 'H-C-O', 'H3-C2', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H16-C8-O5', 'H-C-O', 'H3-C2', 'C-O2', 'H2-C', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 141 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H3-C2', 'H']\n", - " \n", - "Fragments to allocate: 6 7 out of 14 9\n", - "sublist 2 ['H-C-O', 'H']\n", - "list1 15 ['H3-C2', 'H16-C8-O5', 'H-C-O', 'H3-C2', 'C-O2', 'H2-C', 'H-C-O', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H3-C2', 'H16-C8-O5', 'H-C-O', 'H3-C2', 'C-O2', 'H2-C', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 142 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-C-O', 'H']\n", - " \n", - "Fragments to allocate: 6 8 out of 14 9\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H-C-O', 'H3-C2', 'H16-C8-O5', 'H-C-O', 'H3-C2', 'C-O2', 'H2-C', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-C-O', 'H3-C2', 'H16-C8-O5', 'H-C-O', 'H3-C2', 'C-O2', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 143 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 6 9 out of 14 9\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H2-C', 'H-C-O', 'H3-C2', 'H16-C8-O5', 'H-C-O', 'H3-C2', 'C-O2', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H-C-O', 'H3-C2', 'H16-C8-O5', 'H-C-O', 'H3-C2', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 144 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 7 0 out of 14 9\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['C-O2', 'H2-C', 'H-C-O', 'H3-C2', 'H16-C8-O5', 'H-C-O', 'H3-C2', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H2-C', 'H-C-O', 'H3-C2', 'H16-C8-O5', 'H-C-O', 'H3-C2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 145 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 7 1 out of 14 9\n", - "sublist 2 ['H3-C2', 'H']\n", - "list1 15 ['C-O2', 'C-O2', 'H2-C', 'H-C-O', 'H3-C2', 'H16-C8-O5', 'H-C-O', 'H3-C2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'C-O2', 'H2-C', 'H-C-O', 'H3-C2', 'H16-C8-O5', 'H-C-O', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 146 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H3-C2', 'H']\n", - " \n", - "Fragments to allocate: 7 2 out of 14 9\n", - "sublist 2 ['H-C-O', 'H']\n", - "list1 15 ['H3-C2', 'C-O2', 'C-O2', 'H2-C', 'H-C-O', 'H3-C2', 'H16-C8-O5', 'H-C-O', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H3-C2', 'C-O2', 'C-O2', 'H2-C', 'H-C-O', 'H3-C2', 'H16-C8-O5', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 147 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-C-O', 'H']\n", - " \n", - "Fragments to allocate: 7 3 out of 14 9\n", - "sublist 2 ['H16-C8-O5', 'H']\n", - "list1 15 ['H-C-O', 'H3-C2', 'C-O2', 'C-O2', 'H2-C', 'H-C-O', 'H3-C2', 'H16-C8-O5', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-C-O', 'H3-C2', 'C-O2', 'C-O2', 'H2-C', 'H-C-O', 'H3-C2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 148 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H16-C8-O5', 'H']\n", - " \n", - "Fragments to allocate: 7 4 out of 14 9\n", - "sublist 2 ['H3-C2', 'H']\n", - "list1 15 ['H16-C8-O5', 'H-C-O', 'H3-C2', 'C-O2', 'C-O2', 'H2-C', 'H-C-O', 'H3-C2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H16-C8-O5', 'H-C-O', 'H3-C2', 'C-O2', 'C-O2', 'H2-C', 'H-C-O', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 149 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H3-C2', 'H']\n", - " \n", - "Fragments to allocate: 7 5 out of 14 9\n", - "sublist 2 ['H-C-O', 'H']\n", - "list1 15 ['H3-C2', 'H16-C8-O5', 'H-C-O', 'H3-C2', 'C-O2', 'C-O2', 'H2-C', 'H-C-O', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H3-C2', 'H16-C8-O5', 'H-C-O', 'H3-C2', 'C-O2', 'C-O2', 'H2-C', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 150 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-C-O', 'H']\n", - " \n", - "Fragments to allocate: 7 6 out of 14 9\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H-C-O', 'H3-C2', 'H16-C8-O5', 'H-C-O', 'H3-C2', 'C-O2', 'C-O2', 'H2-C', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-C-O', 'H3-C2', 'H16-C8-O5', 'H-C-O', 'H3-C2', 'C-O2', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 151 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 7 7 out of 14 9\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H2-C', 'H-C-O', 'H3-C2', 'H16-C8-O5', 'H-C-O', 'H3-C2', 'C-O2', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H-C-O', 'H3-C2', 'H16-C8-O5', 'H-C-O', 'H3-C2', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 152 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 7 8 out of 14 9\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['C-O2', 'H2-C', 'H-C-O', 'H3-C2', 'H16-C8-O5', 'H-C-O', 'H3-C2', 'C-O2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H2-C', 'H-C-O', 'H3-C2', 'H16-C8-O5', 'H-C-O', 'H3-C2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 153 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 7 9 out of 14 9\n", - "sublist 2 ['H3-C2', 'H']\n", - "list1 15 ['C-O2', 'C-O2', 'H2-C', 'H-C-O', 'H3-C2', 'H16-C8-O5', 'H-C-O', 'H3-C2', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'C-O2', 'H2-C', 'H-C-O', 'H3-C2', 'H16-C8-O5', 'H-C-O', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 154 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H3-C2', 'H']\n", - " \n", - "Fragments to allocate: 8 0 out of 14 9\n", - "sublist 2 ['C3-O6-Fe', 'H']\n", - "list1 15 ['H3-C2', 'C-O2', 'C-O2', 'H2-C', 'H-C-O', 'H3-C2', 'H16-C8-O5', 'H-C-O', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H3-C2', 'C-O2', 'C-O2', 'H2-C', 'H-C-O', 'H3-C2', 'H16-C8-O5', 'H-C-O', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 155 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['Fe', 'O', 'O', 'O', 'O', 'O', 'O', 'C', 'C', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C3-O6-Fe', 'H']\n", - " \n", - "Fragments to allocate: 8 1 out of 14 9\n", - "sublist 2 ['H-C-O', 'H']\n", - "list1 15 ['C3-O6-Fe', 'H3-C2', 'C-O2', 'C-O2', 'H2-C', 'H-C-O', 'H3-C2', 'H16-C8-O5', 'H-C-O', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C3-O6-Fe', 'H3-C2', 'C-O2', 'C-O2', 'H2-C', 'H-C-O', 'H3-C2', 'H16-C8-O5', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 156 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-C-O', 'H']\n", - " \n", - "Fragments to allocate: 8 2 out of 14 9\n", - "sublist 2 ['H16-C8-O5', 'H']\n", - "list1 15 ['H-C-O', 'C3-O6-Fe', 'H3-C2', 'C-O2', 'C-O2', 'H2-C', 'H-C-O', 'H3-C2', 'H16-C8-O5', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-C-O', 'C3-O6-Fe', 'H3-C2', 'C-O2', 'C-O2', 'H2-C', 'H-C-O', 'H3-C2', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 157 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H16-C8-O5', 'H']\n", - " \n", - "Fragments to allocate: 8 3 out of 14 9\n", - "sublist 2 ['H3-C2', 'H']\n", - "list1 15 ['H16-C8-O5', 'H-C-O', 'C3-O6-Fe', 'H3-C2', 'C-O2', 'C-O2', 'H2-C', 'H-C-O', 'H3-C2', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H16-C8-O5', 'H-C-O', 'C3-O6-Fe', 'H3-C2', 'C-O2', 'C-O2', 'H2-C', 'H-C-O', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 158 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H3-C2', 'H']\n", - " \n", - "Fragments to allocate: 8 4 out of 14 9\n", - "sublist 2 ['H-C-O', 'H']\n", - "list1 15 ['H3-C2', 'H16-C8-O5', 'H-C-O', 'C3-O6-Fe', 'H3-C2', 'C-O2', 'C-O2', 'H2-C', 'H-C-O', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H3-C2', 'H16-C8-O5', 'H-C-O', 'C3-O6-Fe', 'H3-C2', 'C-O2', 'C-O2', 'H2-C', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 159 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-C-O', 'H']\n", - " \n", - "Fragments to allocate: 8 5 out of 14 9\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H-C-O', 'H3-C2', 'H16-C8-O5', 'H-C-O', 'C3-O6-Fe', 'H3-C2', 'C-O2', 'C-O2', 'H2-C', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-C-O', 'H3-C2', 'H16-C8-O5', 'H-C-O', 'C3-O6-Fe', 'H3-C2', 'C-O2', 'C-O2', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 160 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 8 6 out of 14 9\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H2-C', 'H-C-O', 'H3-C2', 'H16-C8-O5', 'H-C-O', 'C3-O6-Fe', 'H3-C2', 'C-O2', 'C-O2', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H-C-O', 'H3-C2', 'H16-C8-O5', 'H-C-O', 'C3-O6-Fe', 'H3-C2', 'C-O2', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 161 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 8 7 out of 14 9\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['C-O2', 'H2-C', 'H-C-O', 'H3-C2', 'H16-C8-O5', 'H-C-O', 'C3-O6-Fe', 'H3-C2', 'C-O2', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H2-C', 'H-C-O', 'H3-C2', 'H16-C8-O5', 'H-C-O', 'C3-O6-Fe', 'H3-C2', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 162 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 8 8 out of 14 9\n", - "sublist 2 ['H3-C2', 'H']\n", - "list1 15 ['C-O2', 'C-O2', 'H2-C', 'H-C-O', 'H3-C2', 'H16-C8-O5', 'H-C-O', 'C3-O6-Fe', 'H3-C2', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'C-O2', 'H2-C', 'H-C-O', 'H3-C2', 'H16-C8-O5', 'H-C-O', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 163 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H3-C2', 'H']\n", - " \n", - "Fragments to allocate: 8 9 out of 14 9\n", - "sublist 2 ['C3-O6-Fe', 'H']\n", - "list1 15 ['H3-C2', 'C-O2', 'C-O2', 'H2-C', 'H-C-O', 'H3-C2', 'H16-C8-O5', 'H-C-O', 'C3-O6-Fe', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H3-C2', 'C-O2', 'C-O2', 'H2-C', 'H-C-O', 'H3-C2', 'H16-C8-O5', 'H-C-O', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 164 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['Fe', 'O', 'O', 'O', 'O', 'O', 'O', 'C', 'C', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C3-O6-Fe', 'H']\n", - " \n", - "Fragments to allocate: 9 0 out of 14 9\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['C3-O6-Fe', 'H3-C2', 'C-O2', 'C-O2', 'H2-C', 'H-C-O', 'H3-C2', 'H16-C8-O5', 'H-C-O', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C3-O6-Fe', 'H3-C2', 'C-O2', 'C-O2', 'H2-C', 'H-C-O', 'H3-C2', 'H16-C8-O5', 'H-C-O', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 165 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 9 1 out of 14 9\n", - "sublist 2 ['H-C-O', 'H']\n", - "list1 15 ['H2-C', 'C3-O6-Fe', 'H3-C2', 'C-O2', 'C-O2', 'H2-C', 'H-C-O', 'H3-C2', 'H16-C8-O5', 'H-C-O', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'C3-O6-Fe', 'H3-C2', 'C-O2', 'C-O2', 'H2-C', 'H-C-O', 'H3-C2', 'H16-C8-O5', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 166 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-C-O', 'H']\n", - " \n", - "Fragments to allocate: 9 2 out of 14 9\n", - "sublist 2 ['H16-C8-O5', 'H']\n", - "list1 15 ['H-C-O', 'H2-C', 'C3-O6-Fe', 'H3-C2', 'C-O2', 'C-O2', 'H2-C', 'H-C-O', 'H3-C2', 'H16-C8-O5', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-C-O', 'H2-C', 'C3-O6-Fe', 'H3-C2', 'C-O2', 'C-O2', 'H2-C', 'H-C-O', 'H3-C2', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 167 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H16-C8-O5', 'H']\n", - " \n", - "Fragments to allocate: 9 3 out of 14 9\n", - "sublist 2 ['H3-C2', 'H']\n", - "list1 15 ['H16-C8-O5', 'H-C-O', 'H2-C', 'C3-O6-Fe', 'H3-C2', 'C-O2', 'C-O2', 'H2-C', 'H-C-O', 'H3-C2', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H16-C8-O5', 'H-C-O', 'H2-C', 'C3-O6-Fe', 'H3-C2', 'C-O2', 'C-O2', 'H2-C', 'H-C-O', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 168 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H3-C2', 'H']\n", - " \n", - "Fragments to allocate: 9 4 out of 14 9\n", - "sublist 2 ['H-C-O', 'H']\n", - "list1 15 ['H3-C2', 'H16-C8-O5', 'H-C-O', 'H2-C', 'C3-O6-Fe', 'H3-C2', 'C-O2', 'C-O2', 'H2-C', 'H-C-O', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H3-C2', 'H16-C8-O5', 'H-C-O', 'H2-C', 'C3-O6-Fe', 'H3-C2', 'C-O2', 'C-O2', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 169 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-C-O', 'H']\n", - " \n", - "Fragments to allocate: 9 5 out of 14 9\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H-C-O', 'H3-C2', 'H16-C8-O5', 'H-C-O', 'H2-C', 'C3-O6-Fe', 'H3-C2', 'C-O2', 'C-O2', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-C-O', 'H3-C2', 'H16-C8-O5', 'H-C-O', 'H2-C', 'C3-O6-Fe', 'H3-C2', 'C-O2', 'C-O2', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 170 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 9 6 out of 14 9\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H2-C', 'H-C-O', 'H3-C2', 'H16-C8-O5', 'H-C-O', 'H2-C', 'C3-O6-Fe', 'H3-C2', 'C-O2', 'C-O2', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H-C-O', 'H3-C2', 'H16-C8-O5', 'H-C-O', 'H2-C', 'C3-O6-Fe', 'H3-C2', 'C-O2', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 171 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 9 7 out of 14 9\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['C-O2', 'H2-C', 'H-C-O', 'H3-C2', 'H16-C8-O5', 'H-C-O', 'H2-C', 'C3-O6-Fe', 'H3-C2', 'C-O2', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H2-C', 'H-C-O', 'H3-C2', 'H16-C8-O5', 'H-C-O', 'H2-C', 'C3-O6-Fe', 'H3-C2', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 172 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 9 8 out of 14 9\n", - "sublist 2 ['H3-C2', 'H']\n", - "list1 15 ['C-O2', 'C-O2', 'H2-C', 'H-C-O', 'H3-C2', 'H16-C8-O5', 'H-C-O', 'H2-C', 'C3-O6-Fe', 'H3-C2', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'C-O2', 'H2-C', 'H-C-O', 'H3-C2', 'H16-C8-O5', 'H-C-O', 'H2-C', 'C3-O6-Fe', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 173 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H3-C2', 'H']\n", - " \n", - "Fragments to allocate: 9 9 out of 14 9\n", - "sublist 2 ['C3-O6-Fe', 'H']\n", - "list1 15 ['H3-C2', 'C-O2', 'C-O2', 'H2-C', 'H-C-O', 'H3-C2', 'H16-C8-O5', 'H-C-O', 'H2-C', 'C3-O6-Fe', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H3-C2', 'C-O2', 'C-O2', 'H2-C', 'H-C-O', 'H3-C2', 'H16-C8-O5', 'H-C-O', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 174 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['Fe', 'O', 'O', 'O', 'O', 'O', 'O', 'C', 'C', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C3-O6-Fe', 'H']\n", - " \n", - "Fragments to allocate: 10 0 out of 14 9\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['C3-O6-Fe', 'H3-C2', 'C-O2', 'C-O2', 'H2-C', 'H-C-O', 'H3-C2', 'H16-C8-O5', 'H-C-O', 'H2-C', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C3-O6-Fe', 'H3-C2', 'C-O2', 'C-O2', 'H2-C', 'H-C-O', 'H3-C2', 'H16-C8-O5', 'H-C-O', 'H2-C', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 175 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 10 1 out of 14 9\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['C-O2', 'C3-O6-Fe', 'H3-C2', 'C-O2', 'C-O2', 'H2-C', 'H-C-O', 'H3-C2', 'H16-C8-O5', 'H-C-O', 'H2-C', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'C3-O6-Fe', 'H3-C2', 'C-O2', 'C-O2', 'H2-C', 'H-C-O', 'H3-C2', 'H16-C8-O5', 'H-C-O', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 176 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 10 2 out of 14 9\n", - "sublist 2 ['H-C-O', 'H']\n", - "list1 15 ['H2-C', 'C-O2', 'C3-O6-Fe', 'H3-C2', 'C-O2', 'C-O2', 'H2-C', 'H-C-O', 'H3-C2', 'H16-C8-O5', 'H-C-O', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'C-O2', 'C3-O6-Fe', 'H3-C2', 'C-O2', 'C-O2', 'H2-C', 'H-C-O', 'H3-C2', 'H16-C8-O5', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 177 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-C-O', 'H']\n", - " \n", - "Fragments to allocate: 10 3 out of 14 9\n", - "sublist 2 ['H16-C8-O5', 'H']\n", - "list1 15 ['H-C-O', 'H2-C', 'C-O2', 'C3-O6-Fe', 'H3-C2', 'C-O2', 'C-O2', 'H2-C', 'H-C-O', 'H3-C2', 'H16-C8-O5', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-C-O', 'H2-C', 'C-O2', 'C3-O6-Fe', 'H3-C2', 'C-O2', 'C-O2', 'H2-C', 'H-C-O', 'H3-C2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 178 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H16-C8-O5', 'H']\n", - " \n", - "Fragments to allocate: 10 4 out of 14 9\n", - "sublist 2 ['H3-C2', 'H']\n", - "list1 15 ['H16-C8-O5', 'H-C-O', 'H2-C', 'C-O2', 'C3-O6-Fe', 'H3-C2', 'C-O2', 'C-O2', 'H2-C', 'H-C-O', 'H3-C2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H16-C8-O5', 'H-C-O', 'H2-C', 'C-O2', 'C3-O6-Fe', 'H3-C2', 'C-O2', 'C-O2', 'H2-C', 'H-C-O', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 179 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H3-C2', 'H']\n", - " \n", - "Fragments to allocate: 10 5 out of 14 9\n", - "sublist 2 ['H-C-O', 'H']\n", - "list1 15 ['H3-C2', 'H16-C8-O5', 'H-C-O', 'H2-C', 'C-O2', 'C3-O6-Fe', 'H3-C2', 'C-O2', 'C-O2', 'H2-C', 'H-C-O', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H3-C2', 'H16-C8-O5', 'H-C-O', 'H2-C', 'C-O2', 'C3-O6-Fe', 'H3-C2', 'C-O2', 'C-O2', 'H2-C', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 180 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-C-O', 'H']\n", - " \n", - "Fragments to allocate: 10 6 out of 14 9\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H-C-O', 'H3-C2', 'H16-C8-O5', 'H-C-O', 'H2-C', 'C-O2', 'C3-O6-Fe', 'H3-C2', 'C-O2', 'C-O2', 'H2-C', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-C-O', 'H3-C2', 'H16-C8-O5', 'H-C-O', 'H2-C', 'C-O2', 'C3-O6-Fe', 'H3-C2', 'C-O2', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 181 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 10 7 out of 14 9\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H2-C', 'H-C-O', 'H3-C2', 'H16-C8-O5', 'H-C-O', 'H2-C', 'C-O2', 'C3-O6-Fe', 'H3-C2', 'C-O2', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H-C-O', 'H3-C2', 'H16-C8-O5', 'H-C-O', 'H2-C', 'C-O2', 'C3-O6-Fe', 'H3-C2', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 182 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 10 8 out of 14 9\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['C-O2', 'H2-C', 'H-C-O', 'H3-C2', 'H16-C8-O5', 'H-C-O', 'H2-C', 'C-O2', 'C3-O6-Fe', 'H3-C2', 'C-O2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H2-C', 'H-C-O', 'H3-C2', 'H16-C8-O5', 'H-C-O', 'H2-C', 'C-O2', 'C3-O6-Fe', 'H3-C2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 183 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 10 9 out of 14 9\n", - "sublist 2 ['H3-C2', 'H']\n", - "list1 15 ['C-O2', 'C-O2', 'H2-C', 'H-C-O', 'H3-C2', 'H16-C8-O5', 'H-C-O', 'H2-C', 'C-O2', 'C3-O6-Fe', 'H3-C2', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'C-O2', 'H2-C', 'H-C-O', 'H3-C2', 'H16-C8-O5', 'H-C-O', 'H2-C', 'C-O2', 'C3-O6-Fe', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 184 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H3-C2', 'H']\n", - " \n", - "Fragments to allocate: 11 0 out of 14 9\n", - "sublist 2 ['H14-C8-O5', 'H']\n", - "list1 15 ['H3-C2', 'C-O2', 'C-O2', 'H2-C', 'H-C-O', 'H3-C2', 'H16-C8-O5', 'H-C-O', 'H2-C', 'C-O2', 'C3-O6-Fe', 'H14-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H3-C2', 'C-O2', 'C-O2', 'H2-C', 'H-C-O', 'H3-C2', 'H16-C8-O5', 'H-C-O', 'H2-C', 'C-O2', 'C3-O6-Fe', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 185 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H14-C8-O5', 'H']\n", - " \n", - "Fragments to allocate: 11 1 out of 14 9\n", - "sublist 2 ['C3-O6-Fe', 'H']\n", - "list1 15 ['H14-C8-O5', 'H3-C2', 'C-O2', 'C-O2', 'H2-C', 'H-C-O', 'H3-C2', 'H16-C8-O5', 'H-C-O', 'H2-C', 'C-O2', 'C3-O6-Fe', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H14-C8-O5', 'H3-C2', 'C-O2', 'C-O2', 'H2-C', 'H-C-O', 'H3-C2', 'H16-C8-O5', 'H-C-O', 'H2-C', 'C-O2', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 186 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['Fe', 'O', 'O', 'O', 'O', 'O', 'O', 'C', 'C', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C3-O6-Fe', 'H']\n", - " \n", - "Fragments to allocate: 11 2 out of 14 9\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'C-O2', 'C-O2', 'H2-C', 'H-C-O', 'H3-C2', 'H16-C8-O5', 'H-C-O', 'H2-C', 'C-O2', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'C-O2', 'C-O2', 'H2-C', 'H-C-O', 'H3-C2', 'H16-C8-O5', 'H-C-O', 'H2-C', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 187 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 11 3 out of 14 9\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['C-O2', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'C-O2', 'C-O2', 'H2-C', 'H-C-O', 'H3-C2', 'H16-C8-O5', 'H-C-O', 'H2-C', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'C-O2', 'C-O2', 'H2-C', 'H-C-O', 'H3-C2', 'H16-C8-O5', 'H-C-O', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 188 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 11 4 out of 14 9\n", - "sublist 2 ['H-C-O', 'H']\n", - "list1 15 ['H2-C', 'C-O2', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'C-O2', 'C-O2', 'H2-C', 'H-C-O', 'H3-C2', 'H16-C8-O5', 'H-C-O', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'C-O2', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'C-O2', 'C-O2', 'H2-C', 'H-C-O', 'H3-C2', 'H16-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 189 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-C-O', 'H']\n", - " \n", - "Fragments to allocate: 11 5 out of 14 9\n", - "sublist 2 ['H16-C8-O5', 'H']\n", - "list1 15 ['H-C-O', 'H2-C', 'C-O2', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'C-O2', 'C-O2', 'H2-C', 'H-C-O', 'H3-C2', 'H16-C8-O5', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-C-O', 'H2-C', 'C-O2', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'C-O2', 'C-O2', 'H2-C', 'H-C-O', 'H3-C2', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 190 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H16-C8-O5', 'H']\n", - " \n", - "Fragments to allocate: 11 6 out of 14 9\n", - "sublist 2 ['H3-C2', 'H']\n", - "list1 15 ['H16-C8-O5', 'H-C-O', 'H2-C', 'C-O2', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'C-O2', 'C-O2', 'H2-C', 'H-C-O', 'H3-C2', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H16-C8-O5', 'H-C-O', 'H2-C', 'C-O2', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'C-O2', 'C-O2', 'H2-C', 'H-C-O', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 191 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H3-C2', 'H']\n", - " \n", - "Fragments to allocate: 11 7 out of 14 9\n", - "sublist 2 ['H-C-O', 'H']\n", - "list1 15 ['H3-C2', 'H16-C8-O5', 'H-C-O', 'H2-C', 'C-O2', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'C-O2', 'C-O2', 'H2-C', 'H-C-O', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H3-C2', 'H16-C8-O5', 'H-C-O', 'H2-C', 'C-O2', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'C-O2', 'C-O2', 'H2-C', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 192 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-C-O', 'H']\n", - " \n", - "Fragments to allocate: 11 8 out of 14 9\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H-C-O', 'H3-C2', 'H16-C8-O5', 'H-C-O', 'H2-C', 'C-O2', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'C-O2', 'C-O2', 'H2-C', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-C-O', 'H3-C2', 'H16-C8-O5', 'H-C-O', 'H2-C', 'C-O2', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'C-O2', 'C-O2', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 193 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 11 9 out of 14 9\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H2-C', 'H-C-O', 'H3-C2', 'H16-C8-O5', 'H-C-O', 'H2-C', 'C-O2', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'C-O2', 'C-O2', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H-C-O', 'H3-C2', 'H16-C8-O5', 'H-C-O', 'H2-C', 'C-O2', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'C-O2', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 194 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 12 0 out of 14 9\n", - "sublist 2 ['H-O', 'H']\n", - "list1 15 ['C-O2', 'H2-C', 'H-C-O', 'H3-C2', 'H16-C8-O5', 'H-C-O', 'H2-C', 'C-O2', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'C-O2', 'H-O', 'H19-C11-O6', 'H2-C']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H2-C', 'H-C-O', 'H3-C2', 'H16-C8-O5', 'H-C-O', 'H2-C', 'C-O2', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'C-O2', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 195 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-O', 'H']\n", - " \n", - "Fragments to allocate: 12 1 out of 14 9\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H-O', 'C-O2', 'H2-C', 'H-C-O', 'H3-C2', 'H16-C8-O5', 'H-C-O', 'H2-C', 'C-O2', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'C-O2', 'H19-C11-O6', 'H2-C']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-O', 'C-O2', 'H2-C', 'H-C-O', 'H3-C2', 'H16-C8-O5', 'H-C-O', 'H2-C', 'C-O2', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 196 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 12 2 out of 14 9\n", - "sublist 2 ['H3-C2', 'H']\n", - "list1 15 ['C-O2', 'H-O', 'C-O2', 'H2-C', 'H-C-O', 'H3-C2', 'H16-C8-O5', 'H-C-O', 'H2-C', 'C-O2', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'H19-C11-O6', 'H2-C']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H-O', 'C-O2', 'H2-C', 'H-C-O', 'H3-C2', 'H16-C8-O5', 'H-C-O', 'H2-C', 'C-O2', 'C3-O6-Fe', 'H14-C8-O5', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 197 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H3-C2', 'H']\n", - " \n", - "Fragments to allocate: 12 3 out of 14 9\n", - "sublist 2 ['H14-C8-O5', 'H']\n", - "list1 15 ['H3-C2', 'C-O2', 'H-O', 'C-O2', 'H2-C', 'H-C-O', 'H3-C2', 'H16-C8-O5', 'H-C-O', 'H2-C', 'C-O2', 'C3-O6-Fe', 'H14-C8-O5', 'H19-C11-O6', 'H2-C']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H3-C2', 'C-O2', 'H-O', 'C-O2', 'H2-C', 'H-C-O', 'H3-C2', 'H16-C8-O5', 'H-C-O', 'H2-C', 'C-O2', 'C3-O6-Fe', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 198 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H14-C8-O5', 'H']\n", - " \n", - "Fragments to allocate: 12 4 out of 14 9\n", - "sublist 2 ['C3-O6-Fe', 'H']\n", - "list1 15 ['H14-C8-O5', 'H3-C2', 'C-O2', 'H-O', 'C-O2', 'H2-C', 'H-C-O', 'H3-C2', 'H16-C8-O5', 'H-C-O', 'H2-C', 'C-O2', 'C3-O6-Fe', 'H19-C11-O6', 'H2-C']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H14-C8-O5', 'H3-C2', 'C-O2', 'H-O', 'C-O2', 'H2-C', 'H-C-O', 'H3-C2', 'H16-C8-O5', 'H-C-O', 'H2-C', 'C-O2', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 199 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['Fe', 'O', 'O', 'O', 'O', 'O', 'O', 'C', 'C', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C3-O6-Fe', 'H']\n", - " \n", - "Fragments to allocate: 12 5 out of 14 9\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'C-O2', 'H-O', 'C-O2', 'H2-C', 'H-C-O', 'H3-C2', 'H16-C8-O5', 'H-C-O', 'H2-C', 'C-O2', 'H19-C11-O6', 'H2-C']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'C-O2', 'H-O', 'C-O2', 'H2-C', 'H-C-O', 'H3-C2', 'H16-C8-O5', 'H-C-O', 'H2-C', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 200 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 12 6 out of 14 9\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['C-O2', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'C-O2', 'H-O', 'C-O2', 'H2-C', 'H-C-O', 'H3-C2', 'H16-C8-O5', 'H-C-O', 'H2-C', 'H19-C11-O6', 'H2-C']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'C-O2', 'H-O', 'C-O2', 'H2-C', 'H-C-O', 'H3-C2', 'H16-C8-O5', 'H-C-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 201 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 12 7 out of 14 9\n", - "sublist 2 ['H-C-O', 'H']\n", - "list1 15 ['H2-C', 'C-O2', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'C-O2', 'H-O', 'C-O2', 'H2-C', 'H-C-O', 'H3-C2', 'H16-C8-O5', 'H-C-O', 'H19-C11-O6', 'H2-C']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'C-O2', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'C-O2', 'H-O', 'C-O2', 'H2-C', 'H-C-O', 'H3-C2', 'H16-C8-O5', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 202 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-C-O', 'H']\n", - " \n", - "Fragments to allocate: 12 8 out of 14 9\n", - "sublist 2 ['H16-C8-O5', 'H']\n", - "list1 15 ['H-C-O', 'H2-C', 'C-O2', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'C-O2', 'H-O', 'C-O2', 'H2-C', 'H-C-O', 'H3-C2', 'H16-C8-O5', 'H19-C11-O6', 'H2-C']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-C-O', 'H2-C', 'C-O2', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'C-O2', 'H-O', 'C-O2', 'H2-C', 'H-C-O', 'H3-C2', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 203 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H16-C8-O5', 'H']\n", - " \n", - "Fragments to allocate: 12 9 out of 14 9\n", - "sublist 2 ['H3-C2', 'H']\n", - "list1 15 ['H16-C8-O5', 'H-C-O', 'H2-C', 'C-O2', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'C-O2', 'H-O', 'C-O2', 'H2-C', 'H-C-O', 'H3-C2', 'H19-C11-O6', 'H2-C']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H16-C8-O5', 'H-C-O', 'H2-C', 'C-O2', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'C-O2', 'H-O', 'C-O2', 'H2-C', 'H-C-O', 'H19-C11-O6', 'H2-C']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 204 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H3-C2', 'H']\n", - " \n", - "Fragments to allocate: 13 0 out of 14 9\n", - "sublist 2 ['H19-C11-O6', 'H']\n", - "list1 15 ['H3-C2', 'H16-C8-O5', 'H-C-O', 'H2-C', 'C-O2', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'C-O2', 'H-O', 'C-O2', 'H2-C', 'H-C-O', 'H19-C11-O6', 'H2-C']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H3-C2', 'H16-C8-O5', 'H-C-O', 'H2-C', 'C-O2', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'C-O2', 'H-O', 'C-O2', 'H2-C', 'H-C-O', 'H2-C']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 205 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H19-C11-O6', 'H']\n", - " \n", - "Fragments to allocate: 13 1 out of 14 9\n", - "sublist 2 ['H-C-O', 'H']\n", - "list1 15 ['H19-C11-O6', 'H3-C2', 'H16-C8-O5', 'H-C-O', 'H2-C', 'C-O2', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'C-O2', 'H-O', 'C-O2', 'H2-C', 'H-C-O', 'H2-C']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H19-C11-O6', 'H3-C2', 'H16-C8-O5', 'H-C-O', 'H2-C', 'C-O2', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'C-O2', 'H-O', 'C-O2', 'H2-C', 'H2-C']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 206 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-C-O', 'H']\n", - " \n", - "Fragments to allocate: 13 2 out of 14 9\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H-C-O', 'H19-C11-O6', 'H3-C2', 'H16-C8-O5', 'H-C-O', 'H2-C', 'C-O2', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'C-O2', 'H-O', 'C-O2', 'H2-C', 'H2-C']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-C-O', 'H19-C11-O6', 'H3-C2', 'H16-C8-O5', 'H-C-O', 'H2-C', 'C-O2', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'C-O2', 'H-O', 'C-O2', 'H2-C']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 207 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 13 3 out of 14 9\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H2-C', 'H-C-O', 'H19-C11-O6', 'H3-C2', 'H16-C8-O5', 'H-C-O', 'H2-C', 'C-O2', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'C-O2', 'H-O', 'C-O2', 'H2-C']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H-C-O', 'H19-C11-O6', 'H3-C2', 'H16-C8-O5', 'H-C-O', 'H2-C', 'C-O2', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'C-O2', 'H-O', 'H2-C']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 208 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 13 4 out of 14 9\n", - "sublist 2 ['H-O', 'H']\n", - "list1 15 ['C-O2', 'H2-C', 'H-C-O', 'H19-C11-O6', 'H3-C2', 'H16-C8-O5', 'H-C-O', 'H2-C', 'C-O2', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'C-O2', 'H-O', 'H2-C']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H2-C', 'H-C-O', 'H19-C11-O6', 'H3-C2', 'H16-C8-O5', 'H-C-O', 'H2-C', 'C-O2', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'C-O2', 'H2-C']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 209 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-O', 'H']\n", - " \n", - "Fragments to allocate: 13 5 out of 14 9\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H-O', 'C-O2', 'H2-C', 'H-C-O', 'H19-C11-O6', 'H3-C2', 'H16-C8-O5', 'H-C-O', 'H2-C', 'C-O2', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'C-O2', 'H2-C']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-O', 'C-O2', 'H2-C', 'H-C-O', 'H19-C11-O6', 'H3-C2', 'H16-C8-O5', 'H-C-O', 'H2-C', 'C-O2', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'H2-C']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 210 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 13 6 out of 14 9\n", - "sublist 2 ['H3-C2', 'H']\n", - "list1 15 ['C-O2', 'H-O', 'C-O2', 'H2-C', 'H-C-O', 'H19-C11-O6', 'H3-C2', 'H16-C8-O5', 'H-C-O', 'H2-C', 'C-O2', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'H2-C']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H-O', 'C-O2', 'H2-C', 'H-C-O', 'H19-C11-O6', 'H3-C2', 'H16-C8-O5', 'H-C-O', 'H2-C', 'C-O2', 'C3-O6-Fe', 'H14-C8-O5', 'H2-C']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 211 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H3-C2', 'H']\n", - " \n", - "Fragments to allocate: 13 7 out of 14 9\n", - "sublist 2 ['H14-C8-O5', 'H']\n", - "list1 15 ['H3-C2', 'C-O2', 'H-O', 'C-O2', 'H2-C', 'H-C-O', 'H19-C11-O6', 'H3-C2', 'H16-C8-O5', 'H-C-O', 'H2-C', 'C-O2', 'C3-O6-Fe', 'H14-C8-O5', 'H2-C']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H3-C2', 'C-O2', 'H-O', 'C-O2', 'H2-C', 'H-C-O', 'H19-C11-O6', 'H3-C2', 'H16-C8-O5', 'H-C-O', 'H2-C', 'C-O2', 'C3-O6-Fe', 'H2-C']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 212 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H14-C8-O5', 'H']\n", - " \n", - "Fragments to allocate: 13 8 out of 14 9\n", - "sublist 2 ['C3-O6-Fe', 'H']\n", - "list1 15 ['H14-C8-O5', 'H3-C2', 'C-O2', 'H-O', 'C-O2', 'H2-C', 'H-C-O', 'H19-C11-O6', 'H3-C2', 'H16-C8-O5', 'H-C-O', 'H2-C', 'C-O2', 'C3-O6-Fe', 'H2-C']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H14-C8-O5', 'H3-C2', 'C-O2', 'H-O', 'C-O2', 'H2-C', 'H-C-O', 'H19-C11-O6', 'H3-C2', 'H16-C8-O5', 'H-C-O', 'H2-C', 'C-O2', 'H2-C']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 213 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['Fe', 'O', 'O', 'O', 'O', 'O', 'O', 'C', 'C', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C3-O6-Fe', 'H']\n", - " \n", - "Fragments to allocate: 13 9 out of 14 9\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'C-O2', 'H-O', 'C-O2', 'H2-C', 'H-C-O', 'H19-C11-O6', 'H3-C2', 'H16-C8-O5', 'H-C-O', 'H2-C', 'C-O2', 'H2-C']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'C-O2', 'H-O', 'C-O2', 'H2-C', 'H-C-O', 'H19-C11-O6', 'H3-C2', 'H16-C8-O5', 'H-C-O', 'H2-C', 'H2-C']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 214 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 14 0 out of 14 9\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['C-O2', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'C-O2', 'H-O', 'C-O2', 'H2-C', 'H-C-O', 'H19-C11-O6', 'H3-C2', 'H16-C8-O5', 'H-C-O', 'H2-C', 'H2-C']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'C-O2', 'H-O', 'C-O2', 'H2-C', 'H-C-O', 'H19-C11-O6', 'H3-C2', 'H16-C8-O5', 'H-C-O', 'H2-C']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 215 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 14 1 out of 14 9\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H2-C', 'C-O2', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'C-O2', 'H-O', 'C-O2', 'H2-C', 'H-C-O', 'H19-C11-O6', 'H3-C2', 'H16-C8-O5', 'H-C-O', 'H2-C']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'C-O2', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'C-O2', 'H-O', 'C-O2', 'H2-C', 'H-C-O', 'H19-C11-O6', 'H3-C2', 'H16-C8-O5', 'H-C-O']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 216 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 14 2 out of 14 9\n", - "sublist 2 ['H-C-O', 'H']\n", - "list1 15 ['H2-C', 'H2-C', 'C-O2', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'C-O2', 'H-O', 'C-O2', 'H2-C', 'H-C-O', 'H19-C11-O6', 'H3-C2', 'H16-C8-O5', 'H-C-O']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H2-C', 'C-O2', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'C-O2', 'H-O', 'C-O2', 'H2-C', 'H-C-O', 'H19-C11-O6', 'H3-C2', 'H16-C8-O5']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 217 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-C-O', 'H']\n", - " \n", - "Fragments to allocate: 14 3 out of 14 9\n", - "sublist 2 ['H16-C8-O5', 'H']\n", - "list1 15 ['H-C-O', 'H2-C', 'H2-C', 'C-O2', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'C-O2', 'H-O', 'C-O2', 'H2-C', 'H-C-O', 'H19-C11-O6', 'H3-C2', 'H16-C8-O5']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-C-O', 'H2-C', 'H2-C', 'C-O2', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'C-O2', 'H-O', 'C-O2', 'H2-C', 'H-C-O', 'H19-C11-O6', 'H3-C2']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 218 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H16-C8-O5', 'H']\n", - " \n", - "Fragments to allocate: 14 4 out of 14 9\n", - "sublist 2 ['H3-C2', 'H']\n", - "list1 15 ['H16-C8-O5', 'H-C-O', 'H2-C', 'H2-C', 'C-O2', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'C-O2', 'H-O', 'C-O2', 'H2-C', 'H-C-O', 'H19-C11-O6', 'H3-C2']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H16-C8-O5', 'H-C-O', 'H2-C', 'H2-C', 'C-O2', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'C-O2', 'H-O', 'C-O2', 'H2-C', 'H-C-O', 'H19-C11-O6']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 219 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H3-C2', 'H']\n", - " \n", - "Fragments to allocate: 14 5 out of 14 9\n", - "sublist 2 ['H19-C11-O6', 'H']\n", - "list1 15 ['H3-C2', 'H16-C8-O5', 'H-C-O', 'H2-C', 'H2-C', 'C-O2', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'C-O2', 'H-O', 'C-O2', 'H2-C', 'H-C-O', 'H19-C11-O6']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H3-C2', 'H16-C8-O5', 'H-C-O', 'H2-C', 'H2-C', 'C-O2', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'C-O2', 'H-O', 'C-O2', 'H2-C', 'H-C-O']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 220 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H19-C11-O6', 'H']\n", - " \n", - "Fragments to allocate: 14 6 out of 14 9\n", - "sublist 2 ['H-C-O', 'H']\n", - "list1 15 ['H19-C11-O6', 'H3-C2', 'H16-C8-O5', 'H-C-O', 'H2-C', 'H2-C', 'C-O2', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'C-O2', 'H-O', 'C-O2', 'H2-C', 'H-C-O']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H19-C11-O6', 'H3-C2', 'H16-C8-O5', 'H-C-O', 'H2-C', 'H2-C', 'C-O2', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'C-O2', 'H-O', 'C-O2', 'H2-C']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 221 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-C-O', 'H']\n", - " \n", - "Fragments to allocate: 14 7 out of 14 9\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H-C-O', 'H19-C11-O6', 'H3-C2', 'H16-C8-O5', 'H-C-O', 'H2-C', 'H2-C', 'C-O2', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'C-O2', 'H-O', 'C-O2', 'H2-C']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-C-O', 'H19-C11-O6', 'H3-C2', 'H16-C8-O5', 'H-C-O', 'H2-C', 'H2-C', 'C-O2', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'C-O2', 'H-O', 'C-O2']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 222 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 14 8 out of 14 9\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H2-C', 'H-C-O', 'H19-C11-O6', 'H3-C2', 'H16-C8-O5', 'H-C-O', 'H2-C', 'H2-C', 'C-O2', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'C-O2', 'H-O', 'C-O2']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H-C-O', 'H19-C11-O6', 'H3-C2', 'H16-C8-O5', 'H-C-O', 'H2-C', 'H2-C', 'C-O2', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'C-O2', 'H-O']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 223 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 14 9 out of 14 9\n", - "sublist 2 ['H-O', 'H']\n", - "list1 15 ['C-O2', 'H2-C', 'H-C-O', 'H19-C11-O6', 'H3-C2', 'H16-C8-O5', 'H-C-O', 'H2-C', 'H2-C', 'C-O2', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'C-O2', 'H-O']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H2-C', 'H-C-O', 'H19-C11-O6', 'H3-C2', 'H16-C8-O5', 'H-C-O', 'H2-C', 'H2-C', 'C-O2', 'C3-O6-Fe', 'H14-C8-O5', 'H3-C2', 'C-O2']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 224 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-O', 'H']\n", - "Sequential: list1 end: ['O', 'H']\n", - "Sequential: list1 end: ['O', 'O', 'C']\n", - "Sequential: list1 end: ['C', 'H', 'H']\n", - "Sequential: list1 end: ['O', 'C', 'H']\n", - "Sequential: list1 end: ['O', 'O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H']\n", - "Sequential: list1 end: ['C', 'H', 'H', 'C', 'H']\n", - "Sequential: list1 end: ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H']\n", - "Sequential: list1 end: ['O', 'C', 'H']\n", - "Sequential: list1 end: ['C', 'H', 'H']\n", - "Sequential: list1 end: ['C', 'H', 'H']\n", - "Sequential: list1 end: ['O', 'O', 'C']\n", - "Sequential: list1 end: ['Fe', 'O', 'O', 'O', 'O', 'O', 'O', 'C', 'C', 'C']\n", - "Sequential: list1 end: ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H']\n", - "Sequential: list1 end: ['C', 'H', 'H', 'C', 'H']\n", - "Sequential: list1 end: ['O', 'O', 'C']\n", - "Sequential: list2 end: ['H']\n", - "Sequential: list2 end: ['H']\n", - "Sequential: list2 end: ['H']\n", - "Sequential: list2 end: ['H']\n", - "Sequential: list2 end: ['H']\n", - "Sequential: list2 end: ['H']\n", - "Sequential: list2 end: ['H']\n", - "Sequential: list2 end: ['H']\n", - "Sequential: list2 end: ['H']\n", - "Sequential: list2 end: ['H']\n" - ] - } - ], - "source": [ - "finalmols, final_remfrag = sequential(all_fragments, unique_species, cellvec=newcell.cellvec, typ=\"All\", debug=2)" - ] - }, - { - "cell_type": "code", - "execution_count": 528, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " ---------------------------------------------------]" - ] - }, - "execution_count": 528, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "finalmols" - ] - }, - { - "cell_type": "code", - "execution_count": 502, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " ---------------------------------------------------]" - ] - }, - "execution_count": 502, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "molecules" - ] - }, - { - "cell_type": "code", - "execution_count": 471, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = K\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = K\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = K\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " ---------------------------------------------------]" - ] - }, - "execution_count": 471, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "molecules" - ] - }, - { - "cell_type": "code", - "execution_count": 458, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = H\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = H\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = H\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = H\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = H\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = H\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = H\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = H\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = H\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = H\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = H\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = H\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " ---------------------------------------------------]" - ] - }, - "execution_count": 458, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "hydrogens" - ] - }, - { - "cell_type": "code", - "execution_count": 459, - "metadata": {}, - "outputs": [], - "source": [ - "all_found.extend(found_indices)" - ] - }, - { - "cell_type": "code", - "execution_count": 460, - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "data": { - "text/plain": [ - "157" - ] - }, - "execution_count": 460, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "len(set(all_found))" - ] - }, - { - "cell_type": "code", - "execution_count": 461, - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "data": { - "text/plain": [ - "False" - ] - }, - "execution_count": 461, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "len(set(all_found)) == len(cell_positions) # then stop" - ] - }, - { - "cell_type": "code", - "execution_count": 184, - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "data": { - "text/plain": [ - "(157, 157)" - ] - }, - "execution_count": 184, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "len(found_indices), len(found_rows)" - ] - }, - { - "cell_type": "code", - "execution_count": 185, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[0,\n", - " 1,\n", - " 2,\n", - " 3,\n", - " 4,\n", - " 5,\n", - " 6,\n", - " 7,\n", - " 8,\n", - " 9,\n", - " 10,\n", - " 11,\n", - " 12,\n", - " 13,\n", - " 14,\n", - " 15,\n", - " 16,\n", - " 17,\n", - " 18,\n", - " 19,\n", - " 20,\n", - " 21,\n", - " 22,\n", - " 23,\n", - " 24,\n", - " 25,\n", - " 26,\n", - " 27,\n", - " 28,\n", - " 29,\n", - " 30,\n", - " 31,\n", - " 32,\n", - " 33,\n", - " 34,\n", - " 35,\n", - " 36,\n", - " 37,\n", - " 38,\n", - " 39,\n", - " 40,\n", - " 41,\n", - " 42,\n", - " 43,\n", - " 44,\n", - " 45,\n", - " 46,\n", - " 47,\n", - " 48,\n", - " 49,\n", - " 50,\n", - " 51,\n", - " 52,\n", - " 53,\n", - " 54,\n", - " 55,\n", - " 56,\n", - " 57,\n", - " 58,\n", - " 59,\n", - " 60,\n", - " 61,\n", - " 62,\n", - " 63,\n", - " 64,\n", - " 65,\n", - " 66,\n", - " 67,\n", - " 68,\n", - " 69,\n", - " 70,\n", - " 71,\n", - " 72,\n", - " 73,\n", - " 74,\n", - " 75,\n", - " 76,\n", - " 77,\n", - " 78,\n", - " 79,\n", - " 80,\n", - " 81,\n", - " 82,\n", - " 83,\n", - " 84,\n", - " 85,\n", - " 86,\n", - " 87,\n", - " 88,\n", - " 89,\n", - " 90,\n", - " 91,\n", - " 92,\n", - " 93,\n", - " 94,\n", - " 95,\n", - " 96,\n", - " 97,\n", - " 98,\n", - " 99,\n", - " 100,\n", - " 101,\n", - " 102,\n", - " 103,\n", - " 104,\n", - " 105,\n", - " 106,\n", - " 107,\n", - " 108,\n", - " 109,\n", - " 110,\n", - " 111,\n", - " 112,\n", - " 113,\n", - " 114,\n", - " 115,\n", - " 116,\n", - " 117,\n", - " 118,\n", - " 119,\n", - " 120,\n", - " 121,\n", - " 122,\n", - " 123,\n", - " 124,\n", - " 125,\n", - " 126,\n", - " 127,\n", - " 128,\n", - " 129,\n", - " 130,\n", - " 131,\n", - " 132,\n", - " 133,\n", - " 134,\n", - " 135,\n", - " 136,\n", - " 137,\n", - " 138,\n", - " 139,\n", - " 140,\n", - " 141,\n", - " 142,\n", - " 143,\n", - " 144,\n", - " 145,\n", - " 146,\n", - " 147,\n", - " 148,\n", - " 149,\n", - " 150,\n", - " 151,\n", - " 152,\n", - " 153,\n", - " 154,\n", - " 155,\n", - " 156]" - ] - }, - "execution_count": 185, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "found_indices" - ] - }, - { - "cell_type": "code", - "execution_count": 156, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "([], [])" - ] - }, - "execution_count": 156, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "remaining_indices, remaining_rows" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Convert each row into a tuple and check for uniqueness\n", - "unique_rows = np.unique([tuple(row) for row in array_2d])\n", - "\n", - "# Check if the number of unique rows is equal to the number of rows in the original array\n", - "if len(unique_rows) == len(array_2d):\n", - " print(\"All rows in the 2D array are unique.\")\n", - "else:\n", - " print(\"There are duplicate rows in the 2D array.\")" - ] - }, - { - "cell_type": "code", - "execution_count": 139, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Fe [-12.18328155 21.10346959 6.14578907] [3.76537886e-16 1.40694487e-03 6.14578907e+00]\n", - "O [6.19996098 1.67327954 6.21499987] [19.81991693 4.53268394 6.21499987]\n", - "O [-3.23693427 6.29678177 1.30005827] [ 8.34979416 15.15251487 1.30005827]\n", - "O [-5.91837718 20.90867807 8.50772947] [-2.96375778 5.52436904 8.50772947]\n", - "H [5.3709276 1.63909077 5.96252667] [20.26404195 3.83181436 5.96252667]\n", - "H [-3.2630091 7.12617577 0.99104667] [ 7.6445553 14.71523641 0.99104667]\n", - "H [-6.7892034 20.7383674 8.39952667] [-2.3808513 4.85536675 8.39952667]\n", - "H [6.35421675 1.21911773 6.92757867] [20.1361047 4.89335426 6.92757867]\n", - "H [20.29815855 6.55425268 1.42970667] [ 8.5437714 14.30159461 1.42970667]\n", - "H [-5.946036 20.86499244 9.39382267] [-2.9120955 5.52225862 9.39382267]\n" - ] - } - ], - "source": [ - "for i in remaining_indices:\n", - " print(ref_labels[i], new_structures[6].positions[i], new_structures[7].positions[i])" - ] - }, - { - "cell_type": "code", - "execution_count": 71, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "K [14.5861868 10.49193964 6.84007412] [7.98962034 7.38603849 6.84007412] False\n", - "Fe [12.18571845 7.03402088 9.3951224 ] [12.1845 7.0361313 9.3951224] True\n", - "O [15.03530746 9.65114938 4.23131436] [8.49320573 8.19538353 4.23131436] False\n", - "O [12.4636469 10.43622462 4.93229304] [9.09914091 5.57572252 4.93229304] False\n", - "O [12.00940874 11.2968528 7.55450504] [8.58093412 4.75202665 7.55450504] False\n", - "O [14.17264487 12.40819855 9.00724948] [6.53686241 6.06977122 9.00724948] False\n", - "O [16.71213836 11.83121046 8.1503028 ] [5.76680201 8.55753114 8.1503028 ] False\n", - "O [17.23339127 10.87392517 5.5544104 ] [6.33520893 9.48759204 5.5544104 ] False\n", - "O [15.7326264 8.57842427 8.4251964 ] [9.07355346 9.335642 8.4251964 ] False\n", - "O [13.60155735 7.98666325 8.33142064] [10.65156806 7.78596257 8.33142064] False\n", - "O [13.77323696 6.63325264 0.80148056] [11.73781623 8.61134678 0.80148056] False\n", - "O [15.9202677 7.135743 1.0440108] [10.22913144 10.21948476 1.0440108 ] False\n", - "O [18.38446098 8.70800389 9.4643332 ] [ 7.63541693 11.5674083 9.4643332 ] False\n", - "O [ 8.94756573 13.33150613 4.5493916 ] [8.34979416 1.08306616 4.5493916 ] False\n", - "O [18.45062282 6.83922937 2.0090628 ] [ 9.22074222 12.55909339 2.0090628 ] False\n", - "C [13.97184431 9.66761064 3.294824 ] [9.01068144 7.26616679 3.294824 ] False\n", - "H [14.1242724 8.99459856 2.6134388 ] [9.51731295 7.73467943 2.6134388 ] False\n", - "H [13.9293204 10.53520319 2.861038 ] [8.2805862 6.79554373 2.861038 ] False\n", - "C [12.69698007 9.39388951 3.9927808 ] [9.88516301 6.29896253 3.9927808 ] False\n", - "H [11.96883435 9.35547992 3.3523372 ] [10.28249955 5.68757464 3.3523372 ] False\n", - "H [12.74620545 8.54085884 4.4509368 ] [10.59929655 6.7681083 4.4509368 ] False\n", - "C [11.20913078 10.29946958 5.5817048 ] [9.84483231 4.55765722 5.5817048 ] False\n", - "H [11.1731865 9.4504487 6.0505836] [10.5980781 4.951039 6.0505836] False\n", - "H [10.4957283 10.31571979 4.9246896 ] [10.18746045 3.93170744 4.9246896 ] False\n", - "C [11.03233368 11.41313679 6.5438324 ] [8.96876676 3.84771283 6.5438324 ] False\n", - "H [11.12810385 12.26363497 6.087626 ] [8.18432865 3.50540315 6.087626 ] False\n", - "H [10.1448147 11.37514928 6.9347272 ] [9.4454244 3.09809261 6.9347272 ] False\n", - "C [11.8592957 12.26595643 8.5743408 ] [7.81672229 4.13747313 8.5743408 ] False\n", - "H [10.9855452 12.18132869 8.9886308 ] [8.3268873 3.42309687 8.9886308 ] False\n", - "H [11.93471775 13.15845191 8.2000176 ] [7.0060875 3.75654281 8.2000176 ] False\n", - "C [12.92032196 12.04689511 9.57741 ] [7.47592182 5.16587948 9.57741 ] False\n", - "H [12.7474239 12.58652882 0.6160736 ] [7.09503435 4.74632852 0.6160736 ] False\n", - "H [12.93384675 11.11556795 0.0965052 ] [8.2757124 5.64325588 0.0965052 ] False\n", - "C [15.23964153 12.25392705 0.1774136 ] [6.13696712 7.07095319 0.1774136 ] False\n", - "H [15.303732 11.3287201 0.4591308] [6.9061746 7.58906063 0.4591308 ] False\n", - "H [15.08562945 12.8039018 0.9621276 ] [5.73768105 6.66258744 0.9621276 ] False\n", - "C [16.49744747 12.67157863 9.2489024 ] [5.14636727 7.95141929 9.2489024 ] False\n", - "H [16.42348755 13.59319787 8.9525632 ] [4.38520155 7.4265585 8.9525632 ] False\n", - "H [-7.1254956 12.60763299 0.1179508 ] [4.82871735 8.62949637 0.1179508 ] False\n", - "C [-6.41318973 12.00658614 7.5118088 ] [4.99308626 9.54689477 7.5118088 ] False\n", - "H [-5.7072198 12.05892449 8.1756476 ] [ 4.59477495 10.13211349 8.1756476 ] False\n", - "H [-6.41757615 12.83344764 7.0058876 ] [4.2791964 9.12966527 7.0058876 ] False\n", - "C [-6.16486962 10.87582455 6.6120684 ] [ 5.84819446 10.32732709 6.6120684 ] False\n", - "H [-5.27467005 10.94673457 6.2367704 ] [ 5.3416848 11.06280752 6.2367704 ] False\n", - "H [18.14881275 10.04347596 7.1082416 ] [ 6.5966883 10.69559491 7.1082416 ] False\n", - "C [17.3471945 9.74611816 4.713158 ] [ 7.25501684 10.15005204 4.713158 ] False\n", - "H [17.2264461 8.93550688 5.2327264 ] [ 8.017401 10.4507865 5.2327264] False\n", - "H [18.2328858 9.72058211 4.3164144 ] [ 6.83428605 10.92985123 4.3164144 ] False\n", - "C [16.32138144 9.81470673 3.6438024 ] [7.70852392 9.22737759 3.6438024 ] False\n", - "H [16.37231265 10.67238032 3.1914952 ] [6.9402912 8.84264851 3.1914952 ] False\n", - "H [16.47709935 9.11489235 2.9897116 ] [8.236722 9.71214044 2.9897116 ] False\n", - "C [14.76286204 7.9894068 8.87068 ] [10.06853973 8.79031016 8.87068 ] False\n", - "C [14.86594292 7.18196114 0.4464584 ] [10.71626775 9.28330365 0.4464584 ] False\n", - "H [17.5554276 8.67381513 9.21186 ] [ 8.07954195 10.86653871 9.21186 ] False\n", - "H [ 8.9214909 14.16090013 4.24038 ] [7.6445553 0.6457877 4.24038 ] False\n", - "H [17.5797966 6.66891869 1.90086 ] [ 9.8036487 11.8900911 1.90086 ] False\n", - "H [18.53871675 8.25384209 0.428912 ] [ 7.9516047 11.92807862 0.428912 ] False\n", - "H [ 8.11365855 13.58897704 4.67904 ] [8.5437714 0.2321459 4.67904 ] False\n", - "H [18.422964 6.79554373 2.895156 ] [ 9.2724045 12.55698297 2.895156 ] False\n", - "K [7.98962034 7.38603849 6.84007412] [13.97769287 3.22619494 6.84007412] False\n", - "K [13.97769287 3.22619494 6.84007412] [14.58618679 10.49193964 6.84007412] False\n", - "O [8.49320573 8.19538353 4.23131436] [13.02498681 3.25764015 4.23131436] False\n", - "O [13.02498681 3.25764015 4.23131436] [15.03530746 9.65114938 4.23131436] False\n", - "O [9.09914091 5.57572252 4.93229304] [14.9907122 5.09222592 4.93229304] False\n", - "O [14.9907122 5.09222592 4.93229304] [12.4636469 10.43622462 4.93229304] False\n", - "O [8.58093413 4.75202665 7.55450504] [15.96315714 5.05529362 7.55450504] False\n", - "O [15.96315714 5.05529362 7.55450504] [12.00940874 11.2968528 7.55450504] False\n", - "O [6.53686241 6.06977122 9.00724948] [15.84399273 2.6262033 9.00724948] False\n", - "O [15.84399273 2.6262033 9.00724948] [14.17264487 12.40819855 9.00724948] False\n", - "O [5.76680201 8.55753114 8.1503028 ] [14.07455964 0.71543147 8.1503028 ] False\n", - "O [14.07455964 0.71543147 8.1503028 ] [16.71213836 11.83121046 8.1503028 ] False\n", - "O [6.33520893 9.48759204 5.5544104 ] [12.98489981 0.74265585 5.5544104 ] False\n", - "O [12.98489981 0.74265585 5.5544104 ] [17.23339127 10.87392517 5.5544104 ] False\n", - "O [9.07355346 9.335642 8.4251964 ] [11.74732014 3.1901068 8.4251964 ] False\n", - "O [11.74732014 3.1901068 8.4251964 ] [15.7326264 8.57842427 8.4251964 ] False\n", - "O [10.65156806 7.78596257 8.33142064] [12.3003746 5.33154724 8.33142064] False\n", - "O [12.3003746 5.33154724 8.33142064] [13.60155735 7.98666325 8.33142064] False\n", - "O [11.73781623 8.61134678 0.80148056] [11.04244682 5.85957365 0.80148056] False\n", - "O [11.04244682 5.85957365 0.80148056] [13.77323696 6.63325264 0.80148056] False\n", - "O [10.40410086 3.7489453 1.0440108 ] [15.9202677 7.135743 1.0440108] False\n", - "O [10.22913144 10.21948476 1.0440108 ] [10.40410086 3.7489453 1.0440108 ] False\n", - "C [9.01068144 7.26616679 3.294824 ] [13.57097425 4.17039564 3.294824 ] False\n", - "C [13.57097425 4.17039564 3.294824 ] [13.9718443 9.66761064 3.294824 ] False\n", - "H [9.51731295 7.73467943 2.6134388 ] [12.91191465 4.37489508 2.6134388 ] False\n", - "H [12.91191465 4.37489508 2.6134388 ] [14.1242724 8.99459856 2.6134388 ] False\n", - "H [8.2805862 6.79554373 2.861038 ] [14.3435934 3.77342614 2.861038 ] False\n", - "H [14.3435934 3.77342614 2.861038 ] [13.9293204 10.53520319 2.861038 ] False\n", - "C [9.88516301 6.29896253 3.9927808 ] [13.97135693 5.41132102 3.9927808 ] False\n", - "C [13.97135693 5.41132102 3.9927808 ] [12.69698007 9.39388951 3.9927808 ] False\n", - "H [14.3021661 6.0611185 3.3523372] [11.96883435 9.35547992 3.3523372 ] False\n", - "H [10.28249955 5.68757464 3.3523372 ] [14.3021661 6.0611185 3.3523372] False\n", - "H [13.207998 5.79520592 4.4509368 ] [12.74620545 8.54085884 4.4509368 ] False\n", - "H [10.59929655 6.7681083 4.4509368 ] [13.207998 5.79520592 4.4509368 ] False\n", - "C [9.84483231 4.55765722 5.5817048 ] [15.49953691 6.24704627 5.5817048 ] False\n", - "C [15.49953691 6.24704627 5.5817048 ] [11.20913078 10.29946958 5.5817048 ] False\n", - "H [10.5980781 4.951039 6.0505836] [14.7822354 6.70268537 6.0505836 ] False\n", - "H [14.7822354 6.70268537 6.0505836 ] [11.1731865 9.4504487 6.0505836] False\n", - "H [10.18746045 3.93170744 4.9246896 ] [15.87031125 6.85674583 4.9246896 ] False\n", - "H [15.87031125 6.85674583 4.9246896 ] [10.4957283 10.31571979 4.9246896 ] False\n", - "C [8.96876676 3.84771283 6.5438324 ] [16.55239956 5.84332344 6.5438324 ] False\n", - "C [16.55239956 5.84332344 6.5438324 ] [11.03233368 11.41313679 6.5438324 ] False\n", - "H [8.18432865 3.50540315 6.087626 ] [17.2410675 5.33513495 6.087626 ] False\n", - "H [17.2410675 5.33513495 6.087626 ] [11.12810385 12.26363497 6.087626 ] False\n", - "H [9.4454244 3.09809261 6.9347272 ] [16.9632609 6.63093118 6.9347272 ] False\n", - "H [16.9632609 6.63093118 6.9347272 ] [10.1448147 11.37514928 6.9347272 ] False\n", - "C [7.81672229 4.13747313 8.5743408 ] [16.87748202 4.70074351 8.5743408 ] False\n", - "C [16.87748202 4.70074351 8.5743408 ] [11.8592957 12.26595643 8.5743408 ] False\n", - "H [8.3268873 3.42309687 8.9886308 ] [17.2410675 5.4997475 8.9886308] False\n", - "H [17.2410675 5.4997475 8.9886308] [10.9855452 12.18132869 8.9886308 ] False\n", - "H [7.0060875 3.75654281 8.2000176 ] [17.61269475 4.18917835 8.2000176 ] False\n", - "H [17.61269475 4.18917835 8.2000176 ] [11.93471775 13.15845191 8.2000176 ] False\n", - "C [7.47592182 5.16587948 9.57741 ] [16.15725623 3.89139847 9.57741 ] False\n", - "C [16.15725623 3.89139847 9.57741 ] [12.92032196 12.04689511 9.57741 ] False\n", - "H [16.71104175 3.77131573 0.6160736 ] [12.7474239 12.58652882 0.6160736 ] False\n", - "H [7.09503435 4.74632852 0.6160736 ] [16.71104175 3.77131573 0.6160736 ] False\n", - "H [15.34394085 4.34534923 0.0965052 ] [12.93384675 11.11556795 0.0965052 ] False\n", - "H [8.2757124 5.64325588 0.0965052 ] [15.34394085 4.34534923 0.0965052 ] False\n", - "C [6.13696712 7.07095319 0.1774136 ] [15.17689135 1.77929283 0.1774136 ] False\n", - "C [15.17689136 1.77929283 0.1774136 ] [15.23964153 12.25392705 0.1774136 ] False\n", - "H [6.9061746 7.58906063 0.4591308 ] [14.3435934 2.18639233 0.4591308 ] False\n", - "H [14.3435934 2.18639233 0.4591308 ] [15.303732 11.3287201 0.4591308] False\n", - "H [5.73768105 6.66258744 0.9621276 ] [15.7301895 1.63768383 0.9621276 ] False\n", - "H [15.7301895 1.63768383 0.9621276 ] [15.08562945 12.8039018 0.9621276 ] False\n", - "C [5.14636727 7.95141929 9.2489024 ] [14.90968527 0.48117515 9.2489024 ] False\n", - "C [14.90968527 0.48117515 9.2489024 ] [16.49744747 12.67157863 9.2489024 ] False\n", - "H [4.38520155 7.4265585 8.9525632 ] [15.7448109 0.08441669 8.9525632 ] False\n", - "H [15.7448109 0.08441669 8.9525632 ] [16.42348755 13.59319787 8.9525632 ] False\n", - "H [4.82871735 8.62949637 0.1179508 ] [ 2.29677825 20.97121677 0.1179508 ] False\n", - "H [ 2.29677825 20.97121677 0.1179508 ] [-7.1254956 12.60763299 0.1179508 ] False\n", - "C [4.99308626 9.54689477 7.5118088 ] [ 1.42010348 20.65486522 7.5118088 ] False\n", - "C [ 1.42010348 20.65486522 7.5118088 ] [-6.41318973 12.00658614 7.5118088 ] False\n", - "H [ 4.59477495 10.13211349 8.1756476 ] [ 1.11244485 20.01730815 8.1756476 ] False\n", - "H [ 1.11244485 20.01730815 8.1756476 ] [-5.7072198 12.05892449 8.1756476 ] False\n", - "H [4.2791964 9.12966527 7.0058876 ] [ 2.13837975 20.24523322 7.0058876 ] False\n", - "H [ 2.13837975 20.24523322 7.0058876 ] [-6.41757615 12.83344764 7.0058876 ] False\n", - "C [ 5.84819447 10.32732709 6.6120684 ] [ 0.31667516 21.00519449 6.6120684 ] False\n", - "C [ 0.31667516 21.00519449 6.6120684 ] [-6.16486962 10.87582455 6.6120684 ] False\n", - "H [-0.06701475 20.19880404 6.2367704 ] [-5.27467005 10.94673457 6.2367704 ] False\n", - "H [ 5.3416848 11.06280752 6.2367704 ] [-0.06701475 20.19880404 6.2367704 ] False\n", - "H [11.80799895 0.36510219 7.1082416 ] [18.14881275 10.04347596 7.1082416 ] False\n", - "H [ 6.5966883 10.69559491 7.1082416 ] [11.80799895 0.36510219 7.1082416 ] False\n", - "C [11.95128867 1.20800287 4.713158 ] [17.3471945 9.74611816 4.713158 ] False\n", - "C [ 7.25501684 10.15005204 4.713158 ] [11.95128867 1.20800287 4.713158 ] False\n", - "H [11.3096529 1.71787969 5.2327264 ] [17.2264461 8.93550688 5.2327264 ] False\n", - "H [ 8.017401 10.4507865 5.2327264] [11.3096529 1.71787969 5.2327264 ] False\n", - "H [11.48632815 0.45373972 4.3164144 ] [18.2328858 9.72058211 4.3164144 ] False\n", - "H [ 6.83428605 10.92985123 4.3164144 ] [11.48632815 0.45373972 4.3164144 ] False\n", - "C [12.52359463 2.06208875 3.6438024 ] [16.32138144 9.81470673 3.6438024 ] False\n", - "C [7.70852392 9.22737759 3.6438024 ] [12.52359464 2.06208875 3.6438024 ] False\n", - "H [13.24089615 1.58914423 3.1914952 ] [16.37231265 10.67238032 3.1914952 ] False\n", - "H [6.9402912 8.84264851 3.1914952 ] [13.24089615 1.58914423 3.1914952 ] False\n", - "H [11.83967865 2.27714027 2.9897116 ] [16.47709935 9.11489235 2.9897116 ] False\n", - "H [8.236722 9.71214044 2.9897116 ] [11.83967865 2.27714027 2.9897116 ] False\n", - "C [10.06853973 8.79031016 8.87068 ] [11.72209822 4.3244561 8.87068 ] False\n", - "C [11.72209822 4.3244561 8.87068 ] [14.76286205 7.9894068 8.87068 ] False\n", - "C [10.71626775 9.28330365 0.4464584 ] [10.97128933 4.63890828 0.4464584 ] False\n", - "C [10.97128933 4.63890828 0.4464584 ] [14.86594292 7.18196114 0.4464584 ] False\n" - ] - } - ], - "source": [ - "for l, i, j in zip(ref_labels, new_structures[0].positions, new_structures[1].positions):\n", - " print(l, i, j, np.allclose(i, j, rtol=1e-03, atol=1e-05))" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "combined_mol = new_structures_2[0]\n", - "combined_mol.set_cell(atoms.get_cell())\n", - "combined_mol.set_pbc(True)\n", - "plot_atoms(combined_mol)\n", - "view = nglview.show_ase(combined_mol)\n", - "view.add_unitcell()\n", - "view" - ] - }, - { - "cell_type": "code", - "execution_count": 55, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 55, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "combined_mol = new_structures[0] + new_structures[1] + new_structures[2] + new_structures[3] + new_structures[4] + new_structures[5] + new_structures[6] + new_structures[7] + new_structures[8]\n", - "combined_mol.set_cell(atoms.get_cell())\n", - "combined_mol.set_pbc(True)\n", - "plot_atoms(combined_mol)" - ] - }, - { - "cell_type": "code", - "execution_count": 253, - "metadata": {}, - "outputs": [ - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "0c9ee36bd30844bbb43ba6564e385ff6", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "NGLWidget()" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "combined_mol = new_structures_2[0]\n", - "combined_mol.set_cell(atoms.get_cell())\n", - "combined_mol.set_pbc(True)\n", - "plot_atoms(combined_mol)\n", - "view = nglview.show_ase(combined_mol)\n", - "view.add_unitcell()\n", - "view" - ] - }, - { - "cell_type": "code", - "execution_count": 249, - "metadata": {}, - "outputs": [], - "source": [ - "new_structures_2 = apply_symmetry_operations_to_frac(ref_molecuele, cell_parameters, ref_fracs, sym_ops, normalize=False)\n" - ] - }, - { - "cell_type": "code", - "execution_count": 251, - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 251, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "combined_mol = new_structures_2[0] \n", - "combined_mol.set_cell(atoms.get_cell())\n", - "combined_mol.set_pbc(True)\n", - "plot_atoms(combined_mol)" - ] - }, - { - "cell_type": "code", - "execution_count": 266, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[[14.0694487, 0.0, 3.2493333],\n", - " [-7.0347244, 12.1845, 3.2493333],\n", - " [-7.0347244, -12.1845, 3.2493333]]" - ] - }, - "execution_count": 266, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "cellvec" - ] - }, - { - "cell_type": "code", - "execution_count": 270, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "O [0.72235, 0.31431, 1.08222]\n", - "[0.7348509709344841, 0.028104960461427367, -0.5162959288655464] [1.7348509859313979, 1.0281049683507424, 0.48370407902376855]\n", - "[13.77323696 6.63325264 0.80148056] [13.77323696 6.63325264 10.54948056]\n", - "===\n", - "O [0.82236, 0.33812, 1.1071]\n", - "[0.8614658620719366, 0.02273758013965642, -0.5629034389155325] [1.861465877068851, 1.0227375880289715, 0.43709656897378246]\n", - "[15.9202677 7.135743 1.0440108] [15.9202677 7.135743 10.7920108]\n", - "===\n", - "H [0.8213, 0.5964, 1.0632]\n", - "[0.6672238515671878, 0.2776856260059526, -0.7553094756281261] [1.667223866564102, 1.2776856338952676, 0.2446905322611889]\n", - "[12.7474239 12.58652882 0.6160736 ] [12.7474239 12.58652882 10.3640736 ]\n", - "===\n", - "H [0.7941, 0.5267, 1.0099]\n", - "[0.6227573098717297, 0.15960692538973786, -0.7526642349567898] [1.6227573248686438, 1.159606933279053, 0.2473357729325252]\n", - "[12.93384675 11.11556795 0.0965052 ] [12.93384675 11.11556795 9.8445052 ]\n", - "===\n", - "C [0.91569, 0.58064, 1.0182]\n", - "[0.740315074755535, 0.15999145335568643, -0.8457065275511065] [1.740315089752449, 1.1599914612450015, 0.15429348033820822]\n", - "[15.23964153 12.25392705 0.1774136 ] [15.23964153 12.25392705 9.9254136 ]\n", - "===\n", - "H [0.8964, 0.5368, 1.0471]\n", - "[0.7722519375998212, 0.14940646867634008, -0.7803584048266334] [1.7722519525967353, 1.1494064765656549, 0.21964160306268138]\n", - "[15.303732 11.3287201 0.4591308] [15.303732 11.3287201 10.2071308]\n", - "===\n", - "H [0.9224, 0.6067, 1.0987]\n", - "[0.813517368572394, 0.2667089297085952, -0.7841262952434429] [1.8135173835693077, 1.2667089375979104, 0.21587371264587213]\n", - "[15.08562945 12.8039018 0.9621276 ] [15.08562945 12.8039018 10.7101276 ]\n", - "===\n", - "H [1.0063, 0.5974, 1.0121]\n", - "[-0.32553443667785203, 0.6982807947459418, -0.3364463576957057] [1.8291661147736267, 1.1209305344079743, 0.0862033819663266]\n", - "[-7.1254956 12.60763299 0.1179508 ] [17.2435044 12.60763299 9.8659508 ]\n", - "===\n", - "C [1.02129, 0.56892, 0.7706]\n", - "[0.4667174713778743, 1.4152404488899226, 0.429842103447837] [1.6214180078324392, 0.8378901806626403, -0.14750816477944537]\n", - "[-6.41318973 12.00658614 7.5118088 ] [17.95581027 12.00658614 7.5118088 ]\n", - "===\n", - "H [1.0515, 0.5714, 0.8387]\n", - "[0.5682691469402529, 1.4687623551580262, 0.47906852371316966] [1.7229696833948176, 0.8914120869307439, -0.0982817445141127]\n", - "[-5.7072198 12.05892449 8.1756476 ] [18.6617802 12.05892449 8.1756476 ]\n", - "===\n", - "H [1.0407, 0.6081, 0.7187]\n", - "[0.4146096245029726, 1.3973752468490228, 0.34411515076638827] [1.5693101609575375, 0.8200249786217402, -0.23323511746089412]\n", - "[-6.41757615 12.83344764 7.0058876 ] [17.95142385 12.83344764 7.0058876 ]\n", - "===\n", - "C [1.00469, 0.51534, 0.6783]\n", - "[0.3861838684601311, 1.2706556077937325, 0.37806054462118743] [1.5408844049146957, 0.6933053395664504, -0.19928972360609487]\n", - "[-6.16486962 10.87582455 6.6120684 ] [18.20413038 10.87582455 6.6120684 ]\n", - "===\n", - "H [1.0429, 0.5187, 0.6398]\n", - "[0.38986507847943497, 1.2139748475483674, 0.3155600936623905] [1.544565614934, 0.636624579321085, -0.26179017456489184]\n", - "[-5.27467005 10.94673457 6.2367704 ] [19.09432995 10.94673457 6.2367704 ]\n", - "===\n", - "C [0.78019, 0.34031, 1.0458]\n", - "[0.7502077424429193, -0.011686765354817191, -0.6011209756785819] [1.7502077574398334, 0.9883132425344978, 0.39887903221073306]\n", - "[14.86594292 7.18196114 0.4464584 ] [14.86594292 7.18196114 10.1944584 ]\n", - "===\n", - "H [0.9563, 0.3911, 1.044]\n", - "[0.9224384337676744, -0.056516680786681275, -0.7339217516268692] [1.9224384487645882, 0.9434833271026336, 0.2660782562624456]\n", - "[18.53871675 8.25384209 0.428912 ] [18.53871675 8.25384209 10.176912 ]\n", - "===\n", - "O [0.68569, 0.40804, 1.08222]\n", - "[0.6384046086271163, 0.1575007027118267, -0.5492453088085781] [1.6384046236240304, 1.157500710601142, 0.45075469908073684]\n", - "[11.73781623 8.61134678 0.80148056] [11.73781623 8.61134678 10.54948056]\n", - "===\n", - "O [0.59196, 0.27765, 1.08222]\n", - "[0.6054552288193855, 0.06105434021623917, -0.4198495665052597] [1.6054552438162997, 1.061054348105554, 0.5801504413840552]\n", - "[11.04244682 5.85957365 0.80148056] [11.04244682 5.85957365 10.54948056]\n", - "===\n", - "O [0.51576, 0.17764, 1.1071]\n", - "[0.6000878486400812, 0.014446830056257378, -0.29323467540027803] [1.6000878636369955, 1.0144468379455724, 0.7067653324890368]\n", - "[10.40410086 3.7489453 1.0440108 ] [10.40410086 3.7489453 10.7920108 ]\n", - "===\n", - "O [0.66188, 0.48424, 1.1071]\n", - "[0.5917970987883377, 0.28411559378243806, -0.5546126892747152] [1.5917971137852518, 1.2841156016717532, 0.44538731861459985]\n", - "[10.22913144 10.21948476 1.0440108 ] [10.22913144 10.21948476 10.7920108 ]\n", - "===\n", - "H [0.7751, 0.1787, 1.0632]\n", - "[0.8550358938215229, -0.17795920628197517, -0.48747668559453355] [1.8550359088184372, 0.8220408016073398, 0.5125233222947814]\n", - "[16.71104175 3.77131573 0.6160736 ] [16.71104175 3.77131573 10.3640736 ]\n", - "===\n", - "H [0.4036, 0.2249, 1.0632]\n", - "[0.3993910621365514, 0.08987358321535163, -0.2996646434068889] [1.3993910771334654, 1.0898735911046666, 0.700335364482426]\n", - "[7.09503435 4.74632852 0.6160736 ] [ 7.09503435 4.74632852 10.3640736 ]\n", - "===\n", - "H [0.7326, 0.2059, 1.0099]\n", - "[0.7369571929270862, -0.17531396567198826, -0.5319432269504202] [1.7369572079240005, 0.8246860422173269, 0.46805678093889497]\n", - "[15.34394085 4.34534923 0.0965052 ] [15.34394085 4.34534923 9.8445052 ]\n", - "===\n", - "H [0.4733, 0.2674, 1.0099]\n", - "[0.4020363023284397, 0.04540704196007808, -0.4177433439838398] [1.4020363173253538, 1.045407049849393, 0.5822566639054753]\n", - "[8.2757124 5.64325588 0.0965052 ] [8.2757124 5.64325588 9.8445052 ]\n", - "===\n", - "C [0.41936, 0.33505, 1.0182]\n", - "[0.3089940098709792, 0.16296480688254406, -0.41735881619340837] [1.308994024867893, 1.162964814771859, 0.5826411916959064]\n", - "[6.13696712 7.07095319 0.1774136 ] [6.13696712 7.07095319 9.9254136 ]\n", - "===\n", - "C [0.66495, 0.08431, 1.0182]\n", - "[0.7373417208741645, -0.2683562583639588, -0.41438546195009085] [1.737341735871078, 0.7316437495253562, 0.585614545939224]\n", - "[15.17689136 1.77929283 0.1774136 ] [15.17689136 1.77929283 9.9254136 ]\n", - "===\n", - "H [0.4632, 0.3596, 1.0471]\n", - "[0.3743421327375784, 0.19490166955685895, -0.4279438008449094] [1.3743421477344924, 1.1949016774461738, 0.5720562070444054]\n", - "[6.9061746 7.58906063 0.4591308 ] [ 6.9061746 7.58906063 10.2071308 ]\n", - "===\n", - "H [0.6404, 0.1036, 1.0471]\n", - "[0.7267567364635115, -0.20300813567492393, -0.3824485993390596] [1.7267567514604252, 0.796991872214391, 0.6175514085502553]\n", - "[14.3435934 2.18639233 0.4591308 ] [14.3435934 2.18639233 10.2071308 ]\n", - "===\n", - "H [0.3933, 0.3157, 1.0987]\n", - "[0.3705742427884227, 0.23616710009930902, -0.3106413398501856] [1.3705742577853368, 1.236167107988624, 0.6893586680391294]\n", - "[5.73768105 6.66258744 0.9621276 ] [ 5.73768105 6.66258744 10.7101276 ]\n", - "===\n", - "H [0.6843, 0.0776, 1.0987]\n", - "[0.844059197761617, -0.2067760260283629, -0.34118316869570786] [1.8440592127585307, 0.793223981860952, 0.6588168391936071]\n", - "[15.7301895 1.63768383 0.9621276 ] [15.7301895 1.63768383 10.7101276 ]\n", - "===\n", - "H [0.4026, 0.4089, 1.0121]\n", - "[0.24090391147993476, 0.25181583205368163, -0.45641974316123235] [1.2409039264768487, 1.2518158399429964, 0.5435802647280823]\n", - "[4.82871735 8.62949637 0.1179508 ] [4.82871735 8.62949637 9.8659508 ]\n", - "===\n", - "H [0.5911, -0.0063, 1.0121]\n", - "[0.12093052574230545, 0.8182541810556361, -0.9028847064255574] [1.6982808089665014, 0.663553651046871, 0.6744655711345549]\n", - "[ 2.29677825 20.97121677 0.1179508 ] [14.48127825 -0.13295629 9.8659508 ]\n", - "===\n", - "C [0.54763, -0.02129, 0.7706]\n", - "[0.8378901853185118, 1.5845426421364293, -0.11063280373930696] [1.4152404535457939, 0.42984210423834934, 0.46671746593149066]\n", - "[ 1.42010348 20.65486522 7.5118088 ] [13.60460347 -0.44930784 7.5118088 ]\n", - "===\n", - "H [0.5199, -0.0515, 0.8387]\n", - "[0.8914120920670628, 1.6337690623617331, -0.009081128617347252] [1.468762360294345, 0.4790685244636533, 0.5682691410534503]\n", - "[ 1.11244485 20.01730815 8.1756476 ] [13.29694485 -1.08686491 8.1756476 ]\n", - "===\n", - "H [0.5674, -0.0407, 0.7187]\n", - "[0.8200249828521704, 1.4988156894835187, -0.1627406502173055] [1.3973752510794528, 0.34411515158543887, 0.41460961945349206]\n", - "[ 2.13837975 20.24523322 7.0058876 ] [14.32287975 -0.85893984 7.0058876 ]\n", - "===\n", - "C [0.51065, -0.00469, 0.6783]\n", - "[0.693305343643634, 1.5327610832563983, -0.19116640602498106] [1.2706556118709162, 0.37806054535831846, 0.3861838636458164]\n", - "[ 0.31667516 21.00519449 6.6120684 ] [12.50117516 -0.09897857 6.6120684 ]\n", - "===\n", - "H [0.4758, -0.0429, 0.6398]\n", - "[0.6366245831197758, 1.4702606322472946, -0.18748519567687766] [1.2139748513470578, 0.3155600943492151, 0.38986507399391995]\n", - "[-0.06701475 20.19880404 6.2367704 ] [12.11748525 -0.90536902 6.2367704 ]\n", - "===\n", - "C [0.65969, 0.43988, 1.0458]\n", - "[0.5535795615927537, 0.17285747452508216, -0.5890370347083157] [1.5535795765896678, 1.1728574824143971, 0.41096297318099917]\n", - "[10.71626775 9.28330365 0.4464584 ] [10.71626775 9.28330365 10.1944584 ]\n", - "===\n", - "C [0.56012, 0.21981, 1.0458]\n", - "[0.5656635027067505, -0.023770706642757745, -0.4044927946544727] [1.5656635177036642, 0.9762293012465574, 0.5955072132348422]\n", - "[10.97128933 4.63890828 0.4464584 ] [10.97128933 4.63890828 10.1944584 ]\n", - "===\n" - ] - } - ], - "source": [ - "i =0 \n", - "frac_1 = cart2frac(new_structures[i].positions, cellvec)\n", - "frac_2 = cart2frac(new_structures_2[i].positions, cellvec)\n", - "\n", - "for l, f, nm, un, f1, f2 in zip(ref_labels, ref_fracs, new_structures[i].positions, new_structures_2[i].positions, frac_1, frac_2):\n", - " if not np.allclose(np.array(nm), np.array(un)):\n", - " print(l, f)\n", - " print(f1, f2)\n", - " print(nm, un)\n", - " print(\"===\")" - ] - }, - { - "cell_type": "code", - "execution_count": 306, - "metadata": {}, - "outputs": [], - "source": [ - "from cell2mol.connectivity import split_species\n", - "from cell2mol.other import extract_from_list\n", - "from cell2mol.classes import molecule, cell" - ] - }, - { - "cell_type": "code", - "execution_count": 33, - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "SPILT_SPECIES: Laplacian lap=array([[ 0, 0, 0, ..., 0, 0, 0],\n", - " [ 0, -6, 0, ..., 0, 0, 0],\n", - " [ 0, 0, -2, ..., 0, 0, 0],\n", - " ...,\n", - " [ 0, 0, 0, ..., -3, 0, 1],\n", - " [ 0, 0, 0, ..., 0, -3, 0],\n", - " [ 0, 0, 0, ..., 1, 0, -3]])\n", - "SPILT_SPECIES: graph=<157x157 sparse matrix of type ''\n", - "\twith 460 stored elements in Compressed Sparse Row format>\n", - "10\n" - ] - } - ], - "source": [ - "blocklist = split_species(ref_labels, ref_pos, debug=debug)\n", - "print(len(blocklist))" - ] - }, - { - "cell_type": "code", - "execution_count": 35, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "157\n", - "SPILT_SPECIES: Laplacian lap=array([[ 0, 0, 0, ..., 0, 0, 0],\n", - " [ 0, -3, 0, ..., 0, 0, 0],\n", - " [ 0, 0, -2, ..., 0, 0, 0],\n", - " ...,\n", - " [ 0, 0, 0, ..., -2, 0, 0],\n", - " [ 0, 0, 0, ..., 0, -2, 0],\n", - " [ 0, 0, 0, ..., 0, 0, -2]])\n", - "SPILT_SPECIES: graph=<157x157 sparse matrix of type ''\n", - "\twith 392 stored elements in Compressed Sparse Row format>\n", - "32\n" - ] - } - ], - "source": [ - "mol = new_structures[0]\n", - "debug = 2\n", - "print(len(mol.get_chemical_symbols()))\n", - "blocklist = split_species(mol.get_chemical_symbols(), mol.positions, debug=debug)\n", - "print(len(blocklist))" - ] - }, - { - "cell_type": "code", - "execution_count": 25, - "metadata": {}, - "outputs": [], - "source": [ - "name = \"BOFFOS\"\n", - "refcell = cell(name, ref_labels, ref_pos, cellvec, cellparam)" - ] - }, - { - "cell_type": "code", - "execution_count": 26, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "------------- Cell2mol CELL Object ----------------\n", - " Version = 0.1\n", - " Type = cell\n", - " Name (Refcode) = BOFFOS\n", - " Num Atoms = 157\n", - " Cell Parameters a:c = [24.369, 24.369, 9.748]\n", - " Cell Parameters al:ga = [90.0, 90.0, 120.0]\n", - "---------------------------------------------------" - ] - }, - "execution_count": 26, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "refcell" - ] - }, - { - "cell_type": "code", - "execution_count": 93, - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "CELL.MOLECLIST: doing block=[14, 55, 58]\n", - "CELL.MOLECLIST: doing block=[13, 54, 57]\n", - "CELL.MOLECLIST: doing block=[33, 34, 35]\n", - "CELL.MOLECLIST: doing block=[10, 11, 52]\n", - "CELL.MOLECLIST: doing block=[12, 53]\n", - "CELL.MOLECLIST: doing block=[6, 36, 37]\n", - "CELL.MOLECLIST: doing block=[39, 40, 41, 42, 43]\n", - "CELL.MOLECLIST: doing block=[2, 3, 4, 5, 7, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 45, 46, 47, 48, 49, 50]\n", - "CELL.MOLECLIST: doing block=[117, 119, 121]\n", - "CELL.MOLECLIST: doing block=[118, 120, 122]\n", - "CELL.MOLECLIST: doing block=[130, 132, 134, 136, 137]\n", - "CELL.MOLECLIST: doing block=[70, 124, 126]\n", - "CELL.MOLECLIST: doing block=[1, 8, 9, 51, 73, 74, 75, 76, 153, 154]\n", - "CELL.MOLECLIST: doing block=[78, 79, 156]\n", - "CELL.MOLECLIST: doing block=[77, 80, 155]\n", - "CELL.MOLECLIST: doing block=[62, 64, 66, 68, 72, 82, 84, 86, 88, 89, 91, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 141, 143, 145, 147, 149, 151]\n", - "CELL.MOLECLIST: doing block=[61, 63, 65, 67, 69, 71, 81, 83, 85, 87, 90, 92, 93, 95, 97, 99, 101, 103, 105, 107, 109, 111, 123, 125, 129, 131, 133, 135, 138, 140, 142, 144, 146, 148, 150, 152]\n", - "CELL.MOLECLIST: doing block=[139]\n", - "CELL.MOLECLIST: doing block=[32]\n", - "CELL.MOLECLIST: doing block=[128]\n", - "CELL.MOLECLIST: doing block=[127]\n", - "CELL.MOLECLIST: doing block=[116]\n", - "CELL.MOLECLIST: doing block=[115]\n", - "CELL.MOLECLIST: doing block=[114]\n", - "CELL.MOLECLIST: doing block=[113]\n", - "CELL.MOLECLIST: doing block=[31]\n", - "CELL.MOLECLIST: doing block=[38]\n", - "CELL.MOLECLIST: doing block=[44]\n", - "CELL.MOLECLIST: doing block=[56]\n", - "CELL.MOLECLIST: doing block=[59]\n", - "CELL.MOLECLIST: doing block=[60]\n", - "CELL.MOLECLIST: doing block=[0]\n" - ] - } - ], - "source": [ - "fragments = []\n", - "for b in blocklist:\n", - " if debug > 0: print(f\"CELL.MOLECLIST: doing block={b}\")\n", - " mol_labels = extract_from_list(b, ref_labels, dimension=1)\n", - " mol_coord = extract_from_list(b, ref_pos, dimension=1)\n", - " # Creates Molecule Object\n", - " newmolec = molecule(mol_labels, mol_coord)\n", - " # For debugging\n", - " newmolec.origin = \"cell.get_moleclist\"\n", - " # Adds cell as parent of the molecule, with indices b\n", - " newmolec.add_parent(refcell, indices=b) \n", - " newmolec.set_adjacency_parameters(cov_factor=1.3, metal_factor=1.0)\n", - " # Creates The atom objects with adjacencies\n", - " newmolec.set_atoms(create_adjacencies=True, debug=debug)\n", - " mol_frac_coord = extract_from_list(b, ref_fracs, dimension=1)\n", - " newmolec.set_fractional_coord(mol_frac_coord, debug=debug)\n", - " fragments.append(newmolec)" - ] - }, - { - "cell_type": "code", - "execution_count": 95, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156]\n" - ] - } - ], - "source": [ - "temp = []\n", - "for b in blocklist:\n", - " temp.extend(b)\n", - "print(sorted(set(temp)))" - ] - }, - { - "cell_type": "code", - "execution_count": 91, - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "H ['H'] [[18.148812750000005, 10.04347596154926, 7.108241599999998]]\n" - ] - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "dfd9176bb4b04a4b8afec6930f55ae66", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "NGLWidget()" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "frag = fragments[27]\n", - "print(frag.formula, frag.labels, frag.coord)\n", - "frag_mol = Atoms(symbols=frag.labels, positions=frag.coord, cell=cell_parameters, pbc=True)\n", - "plot_atoms(frag_mol)\n", - "view = nglview.show_ase(frag_mol)\n", - "view.add_unitcell()\n", - "view" - ] - }, - { - "cell_type": "code", - "execution_count": 71, - "metadata": {}, - "outputs": [], - "source": [ - "from cell2mol.cell_reconstruction import classify_fragments, fragments_reconstruct" - ] - }, - { - "cell_type": "code", - "execution_count": 411, - "metadata": {}, - "outputs": [], - "source": [ - "def classify_fragments_v2 (blocklist: list, refmoleclist: list, debug: int=0):\n", - " init_natoms = 0\n", - " moleclist = []\n", - " fraglist = []\n", - " Hlist = []\n", - "\n", - " ## Prepares Blocks\n", - " for b in blocklist:\n", - " if debug >= 2: print(f\"CLASSIFY_FRAGMENTS, preparing block\\n{b.formula}\")\n", - " if not hasattr(b,\"centroid\"): b.get_centroid()\n", - " if not hasattr(b,\"element_count\"): b.set_element_count()\n", - " if not hasattr(b,\"numH\"): b.numH = b.set_element_count()[4] + b.set_element_count()[3] #\"Hidrogen + Deuterium atoms\"\n", - " ## Prepares Reference Molecules\n", - " for ref in refmoleclist:\n", - " if debug >= 2: print(f\"CLASSIFY_FRAGMENTS, preparing reference\\n{ref.formula}\")\n", - " if not hasattr(ref,\"element_count\"): ref.set_element_count()\n", - " if not hasattr(ref,\"numH\"): ref.numH = ref.set_element_count()[4] + ref.set_element_count()[3] #\"Hidrogen + Deuterium atoms\"\n", - "\n", - " # Classifies blocks and puts them in 3 bags. (1) Full molecules, (2) partial molecules=fragments, (3) Hydrogens\n", - " for idx, block in enumerate(blocklist):\n", - " if (block.natoms == 1) and (block.numH == 1):\n", - " block.subtype = \"H\"\n", - " Hlist.append(block)\n", - " else:\n", - " found = False \n", - " for ref in refmoleclist:\n", - " issame = compare_species(ref, block, debug=2)\n", - " if issame: \n", - " block.subtype = \"molecule\"\n", - " moleclist.append(block)\n", - " found = True\n", - " if not found:\n", - " block.subtype = \"fragment\"\n", - " fraglist.append(block)\n", - "\n", - " if debug > 0: print(f\"CLASSIFY_FRAGMENTS. {len(blocklist)} Blocks sorted as (Molec, Frag, H): {len(moleclist)} {len(fraglist)} {len(Hlist)}\")\n", - " return moleclist, fraglist, Hlist" - ] - }, - { - "cell_type": "code", - "execution_count": 88, - "metadata": {}, - "outputs": [], - "source": [ - "def compare_species(mol1, mol2, check_coordinates: bool=False, debug: int=0):\n", - " from cell2mol.elementdata import ElementData\n", - " elemdatabase = ElementData()\n", - " elems = elemdatabase.elementnr.keys()\n", - "\n", - " if debug > 0: \n", - " print(\"COMPARE_SPECIES. Comparing:\")\n", - " print(mol1.formula)\n", - " print(mol2.formula)\n", - "\n", - " \n", - " # a pair of species is compared on the basis of:\n", - " # 1) the total number of atoms\n", - " if (mol1.natoms != mol2.natoms): \n", - " if debug > 0: print(\"COMPARE_SPECIES. FALSE, different natoms:\")\n", - " return False\n", - "\n", - " # 2) the total number of electrons (as sum of atomic number)\n", - " if (mol1.eleccount != mol2.eleccount): \n", - " if debug > 0: print(\"COMPARE_SPECIES. FALSE, different eleccount:\")\n", - " return False\n", - "\n", - " # 3) the number of atoms of each type\n", - " if not hasattr(mol1,\"element_count\"): mol1.set_element_count()\n", - " if not hasattr(mol2,\"element_count\"): mol2.set_element_count()\n", - " for kdx, elem in enumerate(mol1.element_count):\n", - " if elem != mol2.element_count[kdx]: \n", - " if debug > 0: print(f\"COMPARE_SPECIES. FALSE, different {elem} count:\")\n", - " return False \n", - " # writexyz(os.getcwd(), f\"reordered.xyz\", mol1.labels, mol1.coord)\n", - " # 4) the number of adjacencies between each pair of element types\n", - " if not hasattr(mol1,\"adj_types\"): mol1.set_adj_types()\n", - " if not hasattr(mol2,\"adj_types\"): mol2.set_adj_types()\n", - " if debug == 2: print(f\"{mol1.adj_types=}\")\n", - " if debug == 2: print(f\"{mol2.adj_types=}\")\n", - "\n", - " count = 0\n", - " if debug > 0: print(\"COMPARE_SPECIES. kdx ldx elem1 - elem2 : reordered - reference\")\n", - " for kdx, (elem, row1) in enumerate(zip(elems, mol1.adj_types)):\n", - " for ldx, (elem2, val1) in enumerate(zip(elems, row1)):\n", - " val2 = mol2.adj_types[kdx, ldx]\n", - " if val1 != val2: \n", - " count += 1\n", - " if debug > 0: print(f\"COMPARE_SPECIES. FALSE, different adjacency count\")\n", - " if debug > 0: print(f\"COMPARE_SPECIES. {kdx} {ldx} {elem} - {elem2} : {val1} - {val2}\")\n", - " \n", - " if count > 0 : return False\n", - " else: return True" - ] - }, - { - "cell_type": "code", - "execution_count": 97, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "CLASSIFY_FRAGMENTS, preparing block\n", - "H2-O\n", - "CLASSIFY_FRAGMENTS, preparing block\n", - "H2-O\n", - "CLASSIFY_FRAGMENTS, preparing block\n", - "H2-C\n", - "CLASSIFY_FRAGMENTS, preparing block\n", - "C-O2\n", - "CLASSIFY_FRAGMENTS, preparing block\n", - "H-O\n", - "CLASSIFY_FRAGMENTS, preparing block\n", - "H-C-O\n", - "CLASSIFY_FRAGMENTS, preparing block\n", - "H3-C2\n", - "CLASSIFY_FRAGMENTS, preparing block\n", - "H14-C8-O5\n", - "CLASSIFY_FRAGMENTS, preparing block\n", - "H2-C\n", - "CLASSIFY_FRAGMENTS, preparing block\n", - "H2-C\n", - "CLASSIFY_FRAGMENTS, preparing block\n", - "H3-C2\n", - "CLASSIFY_FRAGMENTS, preparing block\n", - "H-C-O\n", - "CLASSIFY_FRAGMENTS, preparing block\n", - "C3-O6-Fe\n", - "CLASSIFY_FRAGMENTS, preparing block\n", - "C-O2\n", - "CLASSIFY_FRAGMENTS, preparing block\n", - "C-O2\n", - "CLASSIFY_FRAGMENTS, preparing block\n", - "H14-C8-O5\n", - "CLASSIFY_FRAGMENTS, preparing block\n", - "H19-C11-O6\n", - "CLASSIFY_FRAGMENTS, preparing block\n", - "H\n", - "CLASSIFY_FRAGMENTS, preparing block\n", - "H\n", - "CLASSIFY_FRAGMENTS, preparing block\n", - "H\n", - "CLASSIFY_FRAGMENTS, preparing block\n", - "H\n", - "CLASSIFY_FRAGMENTS, preparing block\n", - "H\n", - "CLASSIFY_FRAGMENTS, preparing block\n", - "H\n", - "CLASSIFY_FRAGMENTS, preparing block\n", - "H\n", - "CLASSIFY_FRAGMENTS, preparing block\n", - "H\n", - "CLASSIFY_FRAGMENTS, preparing block\n", - "H\n", - "CLASSIFY_FRAGMENTS, preparing block\n", - "H\n", - "CLASSIFY_FRAGMENTS, preparing block\n", - "H\n", - "CLASSIFY_FRAGMENTS, preparing block\n", - "H\n", - "CLASSIFY_FRAGMENTS, preparing block\n", - "K\n", - "CLASSIFY_FRAGMENTS, preparing block\n", - "K\n", - "CLASSIFY_FRAGMENTS, preparing block\n", - "K\n", - "CLASSIFY_FRAGMENTS, preparing reference\n", - "C6-O12-Fe\n", - "CLASSIFY_FRAGMENTS, preparing reference\n", - "H24-C12-O6\n", - "CLASSIFY_FRAGMENTS, preparing reference\n", - "H2-O\n", - "CLASSIFY_FRAGMENTS, preparing reference\n", - "H2-O\n", - "CLASSIFY_FRAGMENTS, preparing reference\n", - "H2-O\n", - "CLASSIFY_FRAGMENTS, preparing reference\n", - "H24-C12-O6\n", - "CLASSIFY_FRAGMENTS, preparing reference\n", - "H24-C12-O6\n", - "CLASSIFY_FRAGMENTS, preparing reference\n", - "K\n", - "CLASSIFY_FRAGMENTS, preparing reference\n", - "K\n", - "CLASSIFY_FRAGMENTS, preparing reference\n", - "K\n", - "COMPARE_SPECIES. Comparing:\n", - "C6-O12-Fe\n", - "H2-O\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "H24-C12-O6\n", - "H2-O\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "H2-O\n", - "H2-O\n", - "mol1.adj_types=array([[0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " ...,\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0]])\n", - "mol2.adj_types=array([[0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " ...,\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0]])\n", - "COMPARE_SPECIES. kdx ldx elem1 - elem2 : reordered - reference\n", - "COMPARE_SPECIES. Comparing:\n", - "H2-O\n", - "H2-O\n", - "mol1.adj_types=array([[0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " ...,\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0]])\n", - "mol2.adj_types=array([[0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " ...,\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0]])\n", - "COMPARE_SPECIES. kdx ldx elem1 - elem2 : reordered - reference\n", - "COMPARE_SPECIES. Comparing:\n", - "H2-O\n", - "H2-O\n", - "mol1.adj_types=array([[0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " ...,\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0]])\n", - "mol2.adj_types=array([[0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " ...,\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0]])\n", - "COMPARE_SPECIES. kdx ldx elem1 - elem2 : reordered - reference\n", - "COMPARE_SPECIES. Comparing:\n", - "H24-C12-O6\n", - "H2-O\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "H24-C12-O6\n", - "H2-O\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "K\n", - "H2-O\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "K\n", - "H2-O\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "K\n", - "H2-O\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "C6-O12-Fe\n", - "H2-O\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "H24-C12-O6\n", - "H2-O\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "H2-O\n", - "H2-O\n", - "mol1.adj_types=array([[0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " ...,\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0]])\n", - "mol2.adj_types=array([[0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " ...,\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0]])\n", - "COMPARE_SPECIES. kdx ldx elem1 - elem2 : reordered - reference\n", - "COMPARE_SPECIES. Comparing:\n", - "H2-O\n", - "H2-O\n", - "mol1.adj_types=array([[0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " ...,\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0]])\n", - "mol2.adj_types=array([[0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " ...,\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0]])\n", - "COMPARE_SPECIES. kdx ldx elem1 - elem2 : reordered - reference\n", - "COMPARE_SPECIES. Comparing:\n", - "H2-O\n", - "H2-O\n", - "mol1.adj_types=array([[0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " ...,\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0]])\n", - "mol2.adj_types=array([[0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " ...,\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0]])\n", - "COMPARE_SPECIES. kdx ldx elem1 - elem2 : reordered - reference\n", - "COMPARE_SPECIES. Comparing:\n", - "H24-C12-O6\n", - "H2-O\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "H24-C12-O6\n", - "H2-O\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "K\n", - "H2-O\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "K\n", - "H2-O\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "K\n", - "H2-O\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "C6-O12-Fe\n", - "H2-C\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "H24-C12-O6\n", - "H2-C\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "H2-O\n", - "H2-C\n", - "COMPARE_SPECIES. FALSE, different eleccount:\n", - "COMPARE_SPECIES. Comparing:\n", - "H2-O\n", - "H2-C\n", - "COMPARE_SPECIES. FALSE, different eleccount:\n", - "COMPARE_SPECIES. Comparing:\n", - "H2-O\n", - "H2-C\n", - "COMPARE_SPECIES. FALSE, different eleccount:\n", - "COMPARE_SPECIES. Comparing:\n", - "H24-C12-O6\n", - "H2-C\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "H24-C12-O6\n", - "H2-C\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "K\n", - "H2-C\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "K\n", - "H2-C\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "K\n", - "H2-C\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "C6-O12-Fe\n", - "C-O2\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "H24-C12-O6\n", - "C-O2\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "H2-O\n", - "C-O2\n", - "COMPARE_SPECIES. FALSE, different eleccount:\n", - "COMPARE_SPECIES. Comparing:\n", - "H2-O\n", - "C-O2\n", - "COMPARE_SPECIES. FALSE, different eleccount:\n", - "COMPARE_SPECIES. Comparing:\n", - "H2-O\n", - "C-O2\n", - "COMPARE_SPECIES. FALSE, different eleccount:\n", - "COMPARE_SPECIES. Comparing:\n", - "H24-C12-O6\n", - "C-O2\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "H24-C12-O6\n", - "C-O2\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "K\n", - "C-O2\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "K\n", - "C-O2\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "K\n", - "C-O2\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "C6-O12-Fe\n", - "H-O\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "H24-C12-O6\n", - "H-O\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "H2-O\n", - "H-O\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "H2-O\n", - "H-O\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "H2-O\n", - "H-O\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "H24-C12-O6\n", - "H-O\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "H24-C12-O6\n", - "H-O\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "K\n", - "H-O\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "K\n", - "H-O\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "K\n", - "H-O\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "C6-O12-Fe\n", - "H-C-O\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "H24-C12-O6\n", - "H-C-O\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "H2-O\n", - "H-C-O\n", - "COMPARE_SPECIES. FALSE, different eleccount:\n", - "COMPARE_SPECIES. Comparing:\n", - "H2-O\n", - "H-C-O\n", - "COMPARE_SPECIES. FALSE, different eleccount:\n", - "COMPARE_SPECIES. Comparing:\n", - "H2-O\n", - "H-C-O\n", - "COMPARE_SPECIES. FALSE, different eleccount:\n", - "COMPARE_SPECIES. Comparing:\n", - "H24-C12-O6\n", - "H-C-O\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "H24-C12-O6\n", - "H-C-O\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "K\n", - "H-C-O\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "K\n", - "H-C-O\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "K\n", - "H-C-O\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "C6-O12-Fe\n", - "H3-C2\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "H24-C12-O6\n", - "H3-C2\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "H2-O\n", - "H3-C2\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "H2-O\n", - "H3-C2\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "H2-O\n", - "H3-C2\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "H24-C12-O6\n", - "H3-C2\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "H24-C12-O6\n", - "H3-C2\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "K\n", - "H3-C2\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "K\n", - "H3-C2\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "K\n", - "H3-C2\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "C6-O12-Fe\n", - "H14-C8-O5\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "H24-C12-O6\n", - "H14-C8-O5\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "H2-O\n", - "H14-C8-O5\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "H2-O\n", - "H14-C8-O5\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "H2-O\n", - "H14-C8-O5\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "H24-C12-O6\n", - "H14-C8-O5\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "H24-C12-O6\n", - "H14-C8-O5\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "K\n", - "H14-C8-O5\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "K\n", - "H14-C8-O5\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "K\n", - "H14-C8-O5\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "C6-O12-Fe\n", - "H2-C\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "H24-C12-O6\n", - "H2-C\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "H2-O\n", - "H2-C\n", - "COMPARE_SPECIES. FALSE, different eleccount:\n", - "COMPARE_SPECIES. Comparing:\n", - "H2-O\n", - "H2-C\n", - "COMPARE_SPECIES. FALSE, different eleccount:\n", - "COMPARE_SPECIES. Comparing:\n", - "H2-O\n", - "H2-C\n", - "COMPARE_SPECIES. FALSE, different eleccount:\n", - "COMPARE_SPECIES. Comparing:\n", - "H24-C12-O6\n", - "H2-C\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "H24-C12-O6\n", - "H2-C\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "K\n", - "H2-C\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "K\n", - "H2-C\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "K\n", - "H2-C\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "C6-O12-Fe\n", - "H2-C\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "H24-C12-O6\n", - "H2-C\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "H2-O\n", - "H2-C\n", - "COMPARE_SPECIES. FALSE, different eleccount:\n", - "COMPARE_SPECIES. Comparing:\n", - "H2-O\n", - "H2-C\n", - "COMPARE_SPECIES. FALSE, different eleccount:\n", - "COMPARE_SPECIES. Comparing:\n", - "H2-O\n", - "H2-C\n", - "COMPARE_SPECIES. FALSE, different eleccount:\n", - "COMPARE_SPECIES. Comparing:\n", - "H24-C12-O6\n", - "H2-C\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "H24-C12-O6\n", - "H2-C\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "K\n", - "H2-C\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "K\n", - "H2-C\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "K\n", - "H2-C\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "C6-O12-Fe\n", - "H3-C2\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "H24-C12-O6\n", - "H3-C2\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "H2-O\n", - "H3-C2\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "H2-O\n", - "H3-C2\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "H2-O\n", - "H3-C2\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "H24-C12-O6\n", - "H3-C2\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "H24-C12-O6\n", - "H3-C2\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "K\n", - "H3-C2\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "K\n", - "H3-C2\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "K\n", - "H3-C2\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "C6-O12-Fe\n", - "H-C-O\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "H24-C12-O6\n", - "H-C-O\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "H2-O\n", - "H-C-O\n", - "COMPARE_SPECIES. FALSE, different eleccount:\n", - "COMPARE_SPECIES. Comparing:\n", - "H2-O\n", - "H-C-O\n", - "COMPARE_SPECIES. FALSE, different eleccount:\n", - "COMPARE_SPECIES. Comparing:\n", - "H2-O\n", - "H-C-O\n", - "COMPARE_SPECIES. FALSE, different eleccount:\n", - "COMPARE_SPECIES. Comparing:\n", - "H24-C12-O6\n", - "H-C-O\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "H24-C12-O6\n", - "H-C-O\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "K\n", - "H-C-O\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "K\n", - "H-C-O\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "K\n", - "H-C-O\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "C6-O12-Fe\n", - "C3-O6-Fe\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "H24-C12-O6\n", - "C3-O6-Fe\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "H2-O\n", - "C3-O6-Fe\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "H2-O\n", - "C3-O6-Fe\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "H2-O\n", - "C3-O6-Fe\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "H24-C12-O6\n", - "C3-O6-Fe\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "H24-C12-O6\n", - "C3-O6-Fe\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "K\n", - "C3-O6-Fe\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "K\n", - "C3-O6-Fe\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "K\n", - "C3-O6-Fe\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "C6-O12-Fe\n", - "C-O2\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "H24-C12-O6\n", - "C-O2\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "H2-O\n", - "C-O2\n", - "COMPARE_SPECIES. FALSE, different eleccount:\n", - "COMPARE_SPECIES. Comparing:\n", - "H2-O\n", - "C-O2\n", - "COMPARE_SPECIES. FALSE, different eleccount:\n", - "COMPARE_SPECIES. Comparing:\n", - "H2-O\n", - "C-O2\n", - "COMPARE_SPECIES. FALSE, different eleccount:\n", - "COMPARE_SPECIES. Comparing:\n", - "H24-C12-O6\n", - "C-O2\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "H24-C12-O6\n", - "C-O2\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "K\n", - "C-O2\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "K\n", - "C-O2\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "K\n", - "C-O2\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "C6-O12-Fe\n", - "C-O2\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "H24-C12-O6\n", - "C-O2\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "H2-O\n", - "C-O2\n", - "COMPARE_SPECIES. FALSE, different eleccount:\n", - "COMPARE_SPECIES. Comparing:\n", - "H2-O\n", - "C-O2\n", - "COMPARE_SPECIES. FALSE, different eleccount:\n", - "COMPARE_SPECIES. Comparing:\n", - "H2-O\n", - "C-O2\n", - "COMPARE_SPECIES. FALSE, different eleccount:\n", - "COMPARE_SPECIES. Comparing:\n", - "H24-C12-O6\n", - "C-O2\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "H24-C12-O6\n", - "C-O2\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "K\n", - "C-O2\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "K\n", - "C-O2\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "K\n", - "C-O2\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "C6-O12-Fe\n", - "H14-C8-O5\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "H24-C12-O6\n", - "H14-C8-O5\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "H2-O\n", - "H14-C8-O5\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "H2-O\n", - "H14-C8-O5\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "H2-O\n", - "H14-C8-O5\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "H24-C12-O6\n", - "H14-C8-O5\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "H24-C12-O6\n", - "H14-C8-O5\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "K\n", - "H14-C8-O5\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "K\n", - "H14-C8-O5\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "K\n", - "H14-C8-O5\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "C6-O12-Fe\n", - "H19-C11-O6\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "H24-C12-O6\n", - "H19-C11-O6\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "H2-O\n", - "H19-C11-O6\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "H2-O\n", - "H19-C11-O6\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "H2-O\n", - "H19-C11-O6\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "H24-C12-O6\n", - "H19-C11-O6\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "H24-C12-O6\n", - "H19-C11-O6\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "K\n", - "H19-C11-O6\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "K\n", - "H19-C11-O6\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "K\n", - "H19-C11-O6\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "C6-O12-Fe\n", - "K\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "H24-C12-O6\n", - "K\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "H2-O\n", - "K\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "H2-O\n", - "K\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "H2-O\n", - "K\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "H24-C12-O6\n", - "K\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "H24-C12-O6\n", - "K\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "K\n", - "K\n", - "mol1.adj_types=array([[0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " ...,\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0]])\n", - "mol2.adj_types=array([[0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " ...,\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0]])\n", - "COMPARE_SPECIES. kdx ldx elem1 - elem2 : reordered - reference\n", - "COMPARE_SPECIES. Comparing:\n", - "K\n", - "K\n", - "mol1.adj_types=array([[0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " ...,\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0]])\n", - "mol2.adj_types=array([[0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " ...,\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0]])\n", - "COMPARE_SPECIES. kdx ldx elem1 - elem2 : reordered - reference\n", - "COMPARE_SPECIES. Comparing:\n", - "K\n", - "K\n", - "mol1.adj_types=array([[0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " ...,\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0]])\n", - "mol2.adj_types=array([[0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " ...,\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0]])\n", - "COMPARE_SPECIES. kdx ldx elem1 - elem2 : reordered - reference\n", - "COMPARE_SPECIES. Comparing:\n", - "C6-O12-Fe\n", - "K\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "H24-C12-O6\n", - "K\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "H2-O\n", - "K\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "H2-O\n", - "K\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "H2-O\n", - "K\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "H24-C12-O6\n", - "K\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "H24-C12-O6\n", - "K\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "K\n", - "K\n", - "mol1.adj_types=array([[0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " ...,\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0]])\n", - "mol2.adj_types=array([[0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " ...,\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0]])\n", - "COMPARE_SPECIES. kdx ldx elem1 - elem2 : reordered - reference\n", - "COMPARE_SPECIES. Comparing:\n", - "K\n", - "K\n", - "mol1.adj_types=array([[0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " ...,\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0]])\n", - "mol2.adj_types=array([[0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " ...,\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0]])\n", - "COMPARE_SPECIES. kdx ldx elem1 - elem2 : reordered - reference\n", - "COMPARE_SPECIES. Comparing:\n", - "K\n", - "K\n", - "mol1.adj_types=array([[0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " ...,\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0]])\n", - "mol2.adj_types=array([[0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " ...,\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0]])\n", - "COMPARE_SPECIES. kdx ldx elem1 - elem2 : reordered - reference\n", - "COMPARE_SPECIES. Comparing:\n", - "C6-O12-Fe\n", - "K\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "H24-C12-O6\n", - "K\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "H2-O\n", - "K\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "H2-O\n", - "K\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "H2-O\n", - "K\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "H24-C12-O6\n", - "K\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "H24-C12-O6\n", - "K\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "K\n", - "K\n", - "mol1.adj_types=array([[0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " ...,\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0]])\n", - "mol2.adj_types=array([[0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " ...,\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0]])\n", - "COMPARE_SPECIES. kdx ldx elem1 - elem2 : reordered - reference\n", - "COMPARE_SPECIES. Comparing:\n", - "K\n", - "K\n", - "mol1.adj_types=array([[0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " ...,\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0]])\n", - "mol2.adj_types=array([[0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " ...,\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0]])\n", - "COMPARE_SPECIES. kdx ldx elem1 - elem2 : reordered - reference\n", - "COMPARE_SPECIES. Comparing:\n", - "K\n", - "K\n", - "mol1.adj_types=array([[0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " ...,\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0]])\n", - "mol2.adj_types=array([[0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " ...,\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0]])\n", - "COMPARE_SPECIES. kdx ldx elem1 - elem2 : reordered - reference\n", - "CLASSIFY_FRAGMENTS. 32 Blocks sorted as (Molec, Frag, H): 15 15 12\n" - ] - } - ], - "source": [ - "molecules, fragments_new, hydrogens = classify_fragments_v2(fragments, newcell.refmoleclist, debug=debug)" - ] - }, - { - "cell_type": "code", - "execution_count": 100, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "(32, 32)" - ] - }, - "execution_count": 100, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "len(blocklist), len(fragments)" - ] - }, - { - "cell_type": "code", - "execution_count": 116, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "C6-O12-Fe [1, 8, 9, 10, 11, 51, 52, 73, 74, 75, 76, 77, 78, 79, 80, 153, 154, 155, 156] [[0.6667, 0.3333, 0.9638], [0.84884, 0.40648, 0.8643], [0.74737, 0.37844, 0.85468], [0.72235, 0.31431, 1.08222], [0.82236, 0.33812, 1.1071], [0.79509, 0.37857, 0.91], [0.78019, 0.34031, 1.0458], [0.59352, 0.44236, 0.8643], [0.55764, 0.15116, 0.8643], [0.62156, 0.36893, 0.85468], [0.63107, 0.25263, 0.85468], [0.68569, 0.40804, 1.08222], [0.59196, 0.27765, 1.08222], [0.51576, 0.17764, 1.1071], [0.66188, 0.48424, 1.1071], [0.62143, 0.41652, 0.91], [0.58348, 0.20491, 0.91], [0.65969, 0.43988, 1.0458], [0.56012, 0.21981, 1.0458]]\n", - "H24-C12-O6 [2, 3, 4, 5, 6, 7, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50] [[0.84564, 0.45731, 0.43407], [0.75871, 0.49451, 0.50598], [0.76046, 0.53529, 0.77498], [0.87556, 0.58795, 0.92401], [0.9661, 0.56061, 0.8361], [0.96481, 0.51525, 0.5698], [0.80239, 0.45809, 0.338], [0.7927, 0.4262, 0.2681], [0.8212, 0.4992, 0.2935], [0.74359, 0.44512, 0.4096], [0.7128, 0.4433, 0.3439], [0.7254, 0.4047, 0.4566], [0.70399, 0.48803, 0.5726], [0.6824, 0.4478, 0.6207], [0.6751, 0.4888, 0.5052], [0.72312, 0.5408, 0.6713], [0.7472, 0.5811, 0.6245], [0.6858, 0.539, 0.7114], [0.77726, 0.58121, 0.8796], [0.7394, 0.5772, 0.9221], [0.8015, 0.6235, 0.8412], [0.81561, 0.57083, 0.9825], [0.8213, 0.5964, 1.0632], [0.7941, 0.5267, 1.0099], [0.91569, 0.58064, 1.0182], [0.8964, 0.5368, 1.0471], [0.9224, 0.6067, 1.0987], [0.9772, 0.60043, 0.9488], [0.996, 0.6441, 0.9184], [1.0063, 0.5974, 1.0121], [1.02129, 0.56892, 0.7706], [1.0515, 0.5714, 0.8387], [1.0407, 0.6081, 0.7187], [1.00469, 0.51534, 0.6783], [1.0429, 0.5187, 0.6398], [0.9827, 0.4759, 0.7292], [0.94276, 0.46181, 0.4835], [0.9186, 0.4234, 0.5368], [0.9785, 0.4606, 0.4428], [0.90229, 0.46506, 0.3738], [0.9247, 0.5057, 0.3274], [0.8921, 0.4319, 0.3067]]\n", - "H2-O [12, 53, 56] [[0.96073, 0.41262, 0.9709], [0.9259, 0.411, 0.945], [0.9563, 0.3911, 1.044]]\n", - "H2-O [13, 54, 57] [[0.68302, 0.6317, 0.4667], [0.7016, 0.671, 0.435], [0.6549, 0.6439, 0.48]]\n", - "H2-O [14, 55, 58] [[0.91917, 0.32407, 0.2061], [0.8794, 0.316, 0.195], [0.917, 0.322, 0.297]]\n", - "H24-C12-O6 [61, 63, 65, 67, 69, 71, 81, 83, 85, 87, 90, 92, 93, 95, 97, 99, 101, 103, 105, 107, 109, 111, 114, 116, 117, 119, 121, 123, 125, 127, 129, 131, 133, 135, 138, 140, 142, 144, 146, 148, 150, 152] [[0.54269, 0.38833, 0.43407], [0.50549, 0.2642, 0.50598], [0.46471, 0.22517, 0.77498], [0.41205, 0.28761, 0.92401], [0.43939, 0.40549, 0.8361], [0.48475, 0.44956, 0.5698], [0.54191, 0.3443, 0.338], [0.5738, 0.3665, 0.2681], [0.5008, 0.322, 0.2935], [0.55488, 0.29847, 0.4096], [0.5567, 0.2695, 0.3439], [0.5953, 0.3207, 0.4566], [0.51197, 0.21596, 0.5726], [0.5522, 0.2346, 0.6207], [0.5112, 0.1863, 0.5052], [0.4592, 0.18232, 0.6713], [0.4189, 0.1661, 0.6245], [0.461, 0.1468, 0.7114], [0.41879, 0.19605, 0.8796], [0.4228, 0.1622, 0.9221], [0.3765, 0.178, 0.8412], [0.42917, 0.24478, 0.9825], [0.4036, 0.2249, 1.0632], [0.4733, 0.2674, 1.0099], [0.41936, 0.33505, 1.0182], [0.4632, 0.3596, 1.0471], [0.3933, 0.3157, 1.0987], [0.39957, 0.37677, 0.9488], [0.3559, 0.3519, 0.9184], [0.4026, 0.4089, 1.0121], [0.43108, 0.45237, 0.7706], [0.4286, 0.4801, 0.8387], [0.3919, 0.4326, 0.7187], [0.48466, 0.48935, 0.6783], [0.4813, 0.5242, 0.6398], [0.5241, 0.5068, 0.7292], [0.53819, 0.48095, 0.4835], [0.5766, 0.4952, 0.5368], [0.5394, 0.5179, 0.4428], [0.53494, 0.43723, 0.3738], [0.4943, 0.419, 0.3274], [0.5681, 0.4602, 0.3067]]\n", - "H24-C12-O6 [62, 64, 66, 68, 70, 72, 82, 84, 86, 88, 89, 91, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 113, 115, 118, 120, 122, 124, 126, 128, 130, 132, 134, 136, 137, 139, 141, 143, 145, 147, 149, 151] [[0.61167, 0.15436, 0.43407], [0.7358, 0.24129, 0.50598], [0.77483, 0.23954, 0.77498], [0.71239, 0.12444, 0.92401], [0.59451, 0.0339, 0.8361], [0.55044, 0.03519, 0.5698], [0.6557, 0.19761, 0.338], [0.6335, 0.2073, 0.2681], [0.678, 0.1788, 0.2935], [0.70153, 0.25641, 0.4096], [0.7305, 0.2872, 0.3439], [0.6793, 0.2746, 0.4566], [0.78404, 0.29601, 0.5726], [0.7654, 0.3176, 0.6207], [0.8137, 0.3249, 0.5052], [0.81768, 0.27688, 0.6713], [0.8339, 0.2528, 0.6245], [0.8532, 0.3142, 0.7114], [0.80395, 0.22274, 0.8796], [0.8378, 0.2606, 0.9221], [0.822, 0.1985, 0.8412], [0.75522, 0.18439, 0.9825], [0.7751, 0.1787, 1.0632], [0.7326, 0.2059, 1.0099], [0.66495, 0.08431, 1.0182], [0.6404, 0.1036, 1.0471], [0.6843, 0.0776, 1.0987], [0.62323, 0.0228, 0.9488], [0.6481, 0.004, 0.9184], [0.5911, -0.0063, 1.0121], [0.54763, -0.02129, 0.7706], [0.5199, -0.0515, 0.8387], [0.5674, -0.0407, 0.7187], [0.51065, -0.00469, 0.6783], [0.4758, -0.0429, 0.6398], [0.4932, 0.0173, 0.7292], [0.51905, 0.05724, 0.4835], [0.5048, 0.0814, 0.5368], [0.4821, 0.0215, 0.4428], [0.56277, 0.09771, 0.3738], [0.581, 0.0753, 0.3274], [0.5398, 0.1079, 0.3067]]\n", - "K [59] [[0.50285, 0.34998, 0.70169]]\n", - "K [60] [[0.65002, 0.15287, 0.70169]]\n", - "K [0] [[0.84713, 0.49715, 0.70169]]\n" - ] - } - ], - "source": [ - "for ref in newcell.refmoleclist:\n", - " ref_labels_idx = [ref_labels[i] for i in ref.get_parent_indices(\"cell\")]\n", - " ref_frac_idx = [ref_fracs[i] for i in ref.get_parent_indices(\"cell\")]\n", - " print(ref.formula, ref.get_parent_indices(\"cell\"), ref_frac_idx)" - ] - }, - { - "cell_type": "code", - "execution_count": 304, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "H2-O [14, 55, 58] [[0.91917, 0.32407, 0.2061], [0.8794, 0.316, 0.195], [0.917, 0.322, 0.297]] equivalent to Ref 4 H2-O\n", - "H2-O [13, 54, 57] [[0.68302, 0.6317, 0.4667], [0.7016, 0.671, 0.435], [0.6549, 0.6439, 0.48]] equivalent to Ref 3 H2-O\n", - "K [59] [[0.50285, 0.34998, 0.70169]] equivalent to Ref 7 K\n", - "K [60] [[0.65002, 0.15287, 0.70169]] equivalent to Ref 8 K\n", - "K [0] [[0.84713, 0.49715, 0.70169]] equivalent to Ref 9 K\n" - ] - } - ], - "source": [ - "molecules = []\n", - "filtered_fragments = []\n", - "hydrogens = []\n", - "found_list = []\n", - "for frag in fragments:\n", - " # print(frag.formula, frag.get_parent_indices(\"cell\"), frag.frac_coord)\n", - " found = False\n", - " for idx, ref in enumerate(newcell.refmoleclist):\n", - " if (ref.natoms == frag.natoms) & (ref.formula == frag.formula) & (sorted(ref.get_parent_indices(\"cell\")) == sorted(frag.get_parent_indices(\"cell\"))):\n", - " print(frag.formula, frag.get_parent_indices(\"cell\"), frag.frac_coord, f\"equivalent to Ref {idx} {ref.formula}\")\n", - " molecules.append(frag)\n", - " found = True\n", - " found_list.append(idx)\n", - " if found == False:\n", - " if frag.natoms == 1 and frag.labels == [\"H\"] :\n", - " hydrogens.append(frag)\n", - " else :\n", - " filtered_fragments.append(frag)" - ] - }, - { - "cell_type": "code", - "execution_count": 305, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[4, 3, 7, 8, 9]" - ] - }, - "execution_count": 305, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "found_list" - ] - }, - { - "cell_type": "code", - "execution_count": 313, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])" - ] - }, - "execution_count": 313, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "np.arange(len(newcell.refmoleclist))" - ] - }, - { - "cell_type": "code", - "execution_count": 317, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[0, 1, 2, 5, 6]" - ] - }, - "execution_count": 317, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "filtered_list = [item for item in list(np.arange(len(newcell.refmoleclist))) if item not in found_list]\n", - "for i in filtered_list:\n", - " print" - ] - }, - { - "cell_type": "code", - "execution_count": 137, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "5" - ] - }, - "execution_count": 137, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "len(molecules)" - ] - }, - { - "cell_type": "code", - "execution_count": 136, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "12" - ] - }, - "execution_count": 136, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "len(hydrogens)" - ] - }, - { - "cell_type": "code", - "execution_count": 135, - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "data": { - "text/plain": [ - "15" - ] - }, - "execution_count": 135, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "len(filtered_fragments)" - ] - }, - { - "cell_type": "code", - "execution_count": 207, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[(2, 'H-O'), (3, 'H2-C'), (3, 'C-O2'), (3, 'H-C-O'), (3, 'H2-C'), (3, 'H2-C'), (3, 'H-C-O'), (3, 'C-O2'), (3, 'C-O2'), (5, 'H3-C2'), (5, 'H3-C2'), (10, 'C3-O6-Fe'), (27, 'H14-C8-O5'), (27, 'H14-C8-O5'), (36, 'H19-C11-O6')]\n" - ] - } - ], - "source": [ - "# Custom sorting key\n", - "def custom_sort_key(item):\n", - " x, chemical = item\n", - " return (x, -1 if \"O-H\" in chemical else 1)\n", - "data = [(frag.natoms, frag.formula) for frag in filtered_fragments]\n", - "# Sorting the list\n", - "sorted_data = sorted(data, key=custom_sort_key)\n", - "\n", - "print(sorted_data)" - ] - }, - { - "cell_type": "code", - "execution_count": 306, - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[(3, 'H2-C'), (3, 'C-O2'), (2, 'H-O'), (3, 'H-C-O'), (5, 'H3-C2'), (27, 'H14-C8-O5'), (3, 'H2-C'), (3, 'H2-C'), (5, 'H3-C2'), (3, 'H-C-O'), (10, 'C3-O6-Fe'), (3, 'C-O2'), (3, 'C-O2'), (27, 'H14-C8-O5'), (36, 'H19-C11-O6')]\n", - "[2, 0, 1, 3, 6, 7, 9, 11, 12, 4, 8, 10, 5, 13, 14]\n", - "[(2, 'H-O'), (3, 'H2-C'), (3, 'C-O2'), (3, 'H-C-O'), (3, 'H2-C'), (3, 'H2-C'), (3, 'H-C-O'), (3, 'C-O2'), (3, 'C-O2'), (5, 'H3-C2'), (5, 'H3-C2'), (10, 'C3-O6-Fe'), (27, 'H14-C8-O5'), (27, 'H14-C8-O5'), (36, 'H19-C11-O6')]\n" - ] - } - ], - "source": [ - "def custom_sort_key(item):\n", - " index, (x, chemical) = item\n", - " return (x, -1 if \"H-O\" in chemical else 1, index) # Adjusted for \"H-O\" as requested\n", - "\n", - "print(data)\n", - "data = [(frag.natoms, frag.formula) for frag in filtered_fragments]\n", - "# Enumerate the list and sort\n", - "sorted_data = sorted(enumerate(data), key=custom_sort_key)\n", - "original_indices = [original_index for original_index, (x, chemical) in sorted_data]\n", - "sorted_filtered_fragments = [(x, chemical) for original_index, (x, chemical) in sorted_data]\n", - "print(original_indices)\n", - "print(sorted_filtered_fragments)\n", - "sorted_fragments = [filtered_fragments[i] for i in original_indices]\n" - ] - }, - { - "cell_type": "code", - "execution_count": 307, - "metadata": {}, - "outputs": [], - "source": [ - "sorted_fragments = [filtered_fragments[i] for i in original_indices]\n" - ] - }, - { - "cell_type": "code", - "execution_count": 308, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 2\n", - " Formula = H-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 3\n", - " Formula = H2-C\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 3\n", - " Formula = C-O2\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 3\n", - " Formula = H-C-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 3\n", - " Formula = H2-C\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 3\n", - " Formula = H2-C\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 3\n", - " Formula = H-C-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 3\n", - " Formula = C-O2\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 3\n", - " Formula = C-O2\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 5\n", - " Formula = H3-C2\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 5\n", - " Formula = H3-C2\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 10\n", - " Formula = C3-O6-Fe\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 27\n", - " Formula = H14-C8-O5\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 27\n", - " Formula = H14-C8-O5\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 36\n", - " Formula = H19-C11-O6\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " ---------------------------------------------------]" - ] - }, - "execution_count": 308, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "sorted_fragments" - ] - }, - { - "cell_type": "code", - "execution_count": 309, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[(3, 'H2-C'),\n", - " (3, 'C-O2'),\n", - " (2, 'H-O'),\n", - " (3, 'H-C-O'),\n", - " (5, 'H3-C2'),\n", - " (27, 'H14-C8-O5'),\n", - " (3, 'H2-C'),\n", - " (3, 'H2-C'),\n", - " (5, 'H3-C2'),\n", - " (3, 'H-C-O'),\n", - " (10, 'C3-O6-Fe'),\n", - " (3, 'C-O2'),\n", - " (3, 'C-O2'),\n", - " (27, 'H14-C8-O5'),\n", - " (36, 'H19-C11-O6')]" - ] - }, - "execution_count": 309, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "[(frag.natoms, frag.formula) for frag in filtered_fragments]" - ] - }, - { - "cell_type": "code", - "execution_count": 140, - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0 H2-C\n", - "1 C-O2\n", - "2 H-O\n", - "3 H-C-O\n", - "4 H3-C2\n", - "5 H14-C8-O5\n", - "6 H2-C\n", - "7 H2-C\n", - "8 H3-C2\n", - "9 H-C-O\n", - "10 C3-O6-Fe\n", - "11 C-O2\n", - "12 C-O2\n", - "13 H14-C8-O5\n", - "14 H19-C11-O6\n" - ] - } - ], - "source": [ - "for i, remo in enumerate(filtered_fragments):\n", - " print(i, remo.formula)" - ] - }, - { - "cell_type": "code", - "execution_count": 512, - "metadata": {}, - "outputs": [], - "source": [ - "def tmatgenerator(centroid, thres=0.40, full=False, debug: int=0):\n", - " # This function generates a list of the translations that a fragment should undergo depending on the centroid of its fractional coordinates\n", - " # For instance, if the centroid of a fragment is at 0.9 in any given axis, it is unlikely that a one-cell-length translation along such axis (resulting in 1.9) would help.\n", - " # Also, a fragment right at the center of the unit cell (centroid=(0.5, 0.5, 0.5) is unlikely to require reconstruction\n", - " # The threshold defines the window. If thres=0.4, the function will suggest positive translation for any fragment between 0 and 0.4, and negative translation between 0.6 and 1.0.\n", - " # If full is asked, then all translations are applied\n", - "\n", - " tmax = 1 - thres\n", - " tmin = thres\n", - "\n", - " if not full:\n", - " tmatrix = []\n", - " tmatrix = additem((0, 0, 0), tmatrix)\n", - "\n", - " # X positive\n", - " if centroid[0] >= tmax:\n", - " tmatrix = additem((-1, 0, 0), tmatrix)\n", - " if centroid[1] >= tmax:\n", - " tmatrix = additem((-1, -1, 0), tmatrix)\n", - " tmatrix = additem((0, -1, 0), tmatrix)\n", - " if centroid[2] >= tmax:\n", - " tmatrix = additem((-1, -1, -1), tmatrix)\n", - " tmatrix = additem((0, -1, -1), tmatrix)\n", - " tmatrix = additem((0, 0, -1), tmatrix)\n", - " if centroid[2] <= tmin:\n", - " tmatrix = additem((-1, -1, 1), tmatrix)\n", - " tmatrix = additem((0, -1, 1), tmatrix)\n", - " tmatrix = additem((0, 0, 1), tmatrix)\n", - " if centroid[1] <= tmin:\n", - " tmatrix = additem((-1, 1, 0), tmatrix)\n", - " tmatrix = additem((0, 1, 0), tmatrix)\n", - " if centroid[2] >= tmax:\n", - " tmatrix = additem((-1, 1, -1), tmatrix)\n", - " tmatrix = additem((0, 1, -1), tmatrix)\n", - " tmatrix = additem((0, 0, -1), tmatrix)\n", - " if centroid[2] <= tmin:\n", - " tmatrix = additem((-1, 1, 1), tmatrix)\n", - " tmatrix = additem((0, 1, 1), tmatrix)\n", - " tmatrix = additem((0, 0, 1), tmatrix)\n", - " if centroid[2] >= tmax:\n", - " tmatrix = additem((-1, 0, -1), tmatrix)\n", - " tmatrix = additem((0, 0, -1), tmatrix)\n", - " if centroid[2] <= tmin:\n", - " tmatrix = additem((-1, 0, 1), tmatrix)\n", - " tmatrix = additem((0, 0, 1), tmatrix)\n", - "\n", - " if centroid[1] >= tmax:\n", - " tmatrix = additem((0, -1, 0), tmatrix)\n", - " if centroid[2] >= tmax:\n", - " tmatrix = additem((0, -1, -1), tmatrix)\n", - " tmatrix = additem((0, 0, -1), tmatrix)\n", - " if centroid[2] <= tmin:\n", - " tmatrix = additem((0, -1, 1), tmatrix)\n", - " tmatrix = additem((0, 0, 1), tmatrix)\n", - "\n", - " if centroid[2] >= tmax:\n", - " tmatrix = additem((0, 0, -1), tmatrix)\n", - "\n", - " if centroid[0] <= tmin:\n", - " tmatrix = additem((1, 0, 0), tmatrix)\n", - " if centroid[1] <= tmin:\n", - " tmatrix = additem((1, 1, 0), tmatrix)\n", - " tmatrix = additem((0, 1, 0), tmatrix)\n", - " if centroid[2] <= tmin:\n", - " tmatrix = additem((1, 1, 1), tmatrix)\n", - " tmatrix = additem((0, 1, 1), tmatrix)\n", - " tmatrix = additem((0, 0, 1), tmatrix)\n", - " if centroid[2] >= tmax:\n", - " tmatrix = additem((1, 1, -1), tmatrix)\n", - " tmatrix = additem((0, 1, -1), tmatrix)\n", - " tmatrix = additem((0, 0, -1), tmatrix)\n", - " if centroid[1] >= tmax:\n", - " tmatrix = additem((1, -1, 0), tmatrix)\n", - " tmatrix = additem((0, -1, 0), tmatrix)\n", - " if centroid[2] >= tmax:\n", - " tmatrix = additem((1, -1, -1), tmatrix)\n", - " if centroid[2] <= tmin:\n", - " tmatrix = additem((1, -1, 1), tmatrix)\n", - " if centroid[2] <= tmin:\n", - " tmatrix = additem((1, 0, 1), tmatrix)\n", - " tmatrix = additem((0, 0, 1), tmatrix)\n", - " if centroid[2] >= tmax:\n", - " tmatrix = additem((1, 0, -1), tmatrix)\n", - " tmatrix = additem((0, 0, -1), tmatrix)\n", - "\n", - " if centroid[1] <= tmin:\n", - " tmatrix = additem((0, 1, 0), tmatrix)\n", - " if centroid[2] <= tmin:\n", - " tmatrix = additem((0, 1, 1), tmatrix)\n", - " tmatrix = additem((0, 0, 1), tmatrix)\n", - " if centroid[2] >= tmax:\n", - " tmatrix = additem((0, 1, -1), tmatrix)\n", - " tmatrix = additem((0, 0, -1), tmatrix)\n", - " if centroid[2] <= tmin:\n", - " tmatrix = additem((0, 0, 1), tmatrix)\n", - "\n", - " if (centroid[0] > tmin) and (centroid[0] < tmax):\n", - " if centroid[1] <= tmin:\n", - " tmatrix = additem((0, 1, 0), tmatrix)\n", - " if centroid[2] >= tmax:\n", - " tmatrix = additem((0, 1, -1), tmatrix)\n", - " if centroid[2] <= tmin:\n", - " tmatrix = additem((0, 1, 1), tmatrix)\n", - " if centroid[1] >= tmax:\n", - " tmatrix = additem((0, -1, 0), tmatrix)\n", - " if centroid[2] >= tmax:\n", - " tmatrix = additem((0, -1, -1), tmatrix)\n", - " if centroid[2] <= tmin:\n", - " tmatrix = additem((0, -1, 1), tmatrix)\n", - " if centroid[2] <= tmin:\n", - " tmatrix = additem((0, 0, 1), tmatrix)\n", - " if centroid[1] >= tmax:\n", - " tmatrix = additem((0, -1, 1), tmatrix)\n", - " if centroid[1] <= tmin:\n", - " tmatrix = additem((0, 1, 1), tmatrix)\n", - " if centroid[2] >= tmax:\n", - " tmatrix = additem((0, 0, -1), tmatrix)\n", - " if centroid[1] >= tmax:\n", - " tmatrix = additem((0, -1, -1), tmatrix)\n", - " if centroid[1] <= tmin:\n", - " tmatrix = additem((0, 1, -1), tmatrix)\n", - " elif full:\n", - " x = [-1, 0, 1]\n", - " tmatrix = [p for p in itertools.product(x, repeat=3)]\n", - "\n", - " tmatrix.sort(key=absolute_value)\n", - "\n", - " return tmatrix" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "def sequential_v2(fragmentlist: list, refmoleclist: list, cellvec: list, factor: float=1.3, metal_factor: float=1.0, typ: str=\"All\", debug: int=2):\n", - " # Crappy function that controls the reconstruction process. It is called sequential because pairs of fragments are sent one by one. Ideally, a parallel version would be desirable.\n", - " # Given a list of fragments(fragmentlist), a list of reference molecules(refmoleclist), and some other minor parameters, the function sends pairs of fragments and evaluates if they...\n", - " # ...form a bigger fragment. If so, the bigger fragment is evaluated. If it coincides with one of the molecules in refmoleclist, than it means that it is a full molecule that requires no further work.\n", - " # ...if it does not, then it means that requires further reconstruction, and is again introduced in the loop.\n", - " # typ is a variable that defines how to combine the fragments. To speed up the process, this function is called twice in main.\n", - " # -First, to combine heavy fragments among themselves (typ=\"Heavy\")\n", - " # -Second, to combie heavy fragments with H atoms (typ=\"All\")\n", - " #:return molecsfoundlist, remainingfragments: lists of molecules and fragments, respectively, saved as objects\n", - "\n", - " if debug >= 1: print(\"Entered sequential with\", len(fragmentlist), \"fragments to reconstruct\")\n", - "\n", - " # Finds How many atoms, at max, can a molecule have. It is used to skip meaningless combinations\n", - " maxatoms = 0\n", - " for ref in refmoleclist:\n", - " if ref.natoms > maxatoms:\n", - " maxatoms = ref.natoms\n", - "\n", - " molecsfoundlist = []\n", - " remainingfragments = []\n", - " ###################################################\n", - " #### INPUT THAT CONTROLS THE ITERATIVE PROCESS ####\n", - " ###################################################\n", - " threshold_tmat = 0.40\n", - " increase_tmat = 0.20\n", - " niter = 1\n", - " maxiter = 3000\n", - " lastiter = 0\n", - " lastitermargin = maxiter\n", - " ###################################################\n", - "\n", - " ###################################################\n", - " # Lists (list1 and list2) are created here depending on variable \"typ\"\n", - " ###################################################\n", - " for frag in fragmentlist:\n", - " if not hasattr(frag,\"frac_centroid\"): frag.get_centroid()\n", - " frag.tmatrix = tmatgenerator(frag.frac_centroid, threshold_tmat)\n", - "\n", - " remlist = []\n", - " Hlist = []\n", - " for frag.natoms in fragmentlist:\n", - " \n", - " for frag in fragmentlist:\n", - " if (frag.natoms == 1) and (frag.numH == 1):\n", - " frag.subtype = \"H\"\n", - " Hlist.append(frag)\n", - " else:\n", - " frag.subtype = \"Heavy\"\n", - " remlist.append(frag)\n", - " if debug >= 1: print(\"Found\",len(remlist),\"and\",len(Hlist),\"Heavy and Hydrogen fragments, respectively\")\n", - " if typ == \"Heavy\":\n", - " list1 = remlist.copy()\n", - " list2 = remlist.copy()\n", - " elif typ == \"All\":\n", - " list1 = remlist.copy()\n", - " list2 = Hlist.copy()\n", - "\n", - " ## Initial Fragment indices for each list\n", - " Frag1_toallocate = 0\n", - " Frag2_toallocate = 0\n", - "\n", - " #################\n", - " ### MAIN LOOP ###\n", - " #################\n", - " while (len(list1) > 0) and (len(list2) > 0):\n", - "\n", - " #################\n", - " # This part decides which molecules in the two lists are sent to combine\n", - " #################\n", - " STOP = False\n", - " Last_Attempt = False\n", - "\n", - " if niter > 1: Frag2_toallocate += 1\n", - " if (Frag2_toallocate > len(list2) - 1): # Reaches the end of the second list. Restarts 2nd and advances 1st\n", - " Frag1_toallocate += 1\n", - " Frag2_toallocate = 0\n", - " if (Frag1_toallocate > len(list1) - 1): # Reaches the end of the first list. Restarts both\n", - " Frag1_toallocate = 0\n", - " Frag2_toallocate = 0\n", - " if typ == \"Heavy\":\n", - " if Frag1_toallocate == Frag2_toallocate: Frag2_toallocate += 1\n", - " if typ == \"Heavy\":\n", - " if (Frag1_toallocate >= len(list1) - 1) and (Frag2_toallocate >= len(list2) - 2): STOP = True\n", - " elif typ == \"All\":\n", - " if (Frag1_toallocate >= len(list1) - 1) and (Frag2_toallocate >= len(list2) - 1): STOP = True\n", - " #################\n", - "\n", - " #################\n", - " # This part handles sublist, keeplist1 and keeplist2. They are necessary to handle the results of the function \"Combine\", which is called later.\n", - " #################\n", - " if debug >= 1: print(\" \")\n", - " if debug >= 1: print(\"Fragments to allocate:\",Frag1_toallocate,Frag2_toallocate,\"out of\",len(list1)-1,len(list2)-1)\n", - " sublist = []\n", - " keeplist1 = []\n", - " keeplist2 = []\n", - " if typ == \"Heavy\":\n", - " for i in range(0, len(list1)):\n", - " if i == Frag1_toallocate: sublist.append(list1[i])\n", - " elif i != Frag2_toallocate: keeplist1.append(list1[i])\n", - " for i in range(0, len(list2)):\n", - " if i == Frag2_toallocate: sublist.append(list2[i])\n", - " elif i != Frag1_toallocate: keeplist2.append(list2[i])\n", - " elif typ == \"All\":\n", - " for i in range(0, len(list1)):\n", - " if i == Frag1_toallocate: sublist.append(list1[i])\n", - " elif i != Frag1_toallocate: keeplist1.append(list1[i])\n", - " for i in range(0, len(list2)):\n", - " if i == Frag2_toallocate: sublist.append(list2[i])\n", - " elif i != Frag2_toallocate: keeplist2.append(list2[i])\n", - " if debug >= 2: \n", - " print(f\"sublist\", len(sublist), [s.formula for s in sublist] )\n", - " print(\"list1\", len(list1), [s.formula for s in list1])\n", - " print(\"list2\", len(list2),[s.formula for s in list2])\n", - " print(f\"keeplist1\", len(keeplist1), [s.formula for s in keeplist1])\n", - " print(f\"keeplist2\", len(keeplist2), [s.formula for s in keeplist2])\n", - " print(\"\")\n", - " #################\n", - " # This part evaluates that the fragments that are going to be combined, can form one of the reference molecules. The resulting number of atoms is used.\n", - " #################\n", - " if list1[Frag1_toallocate].natoms + list2[Frag2_toallocate].natoms > maxatoms:\n", - " if debug >= 1: print(\"SEQUENTIAL\",typ,\"SKIPPED\",list1[Frag1_toallocate].natoms,\"and\",list2[Frag2_toallocate].natoms)\n", - " else:\n", - " if debug >= 1: print(\"SEQUENTIAL\",typ,\"iteration\",niter,\"with\",len(list1),\"and\",len(list2),\"Remaining in each list\")\n", - " if debug >= 1: print(\"SEQUENTIAL\",typ,\"sending\",list1[Frag1_toallocate].labels,\"and\",list2[Frag2_toallocate].labels,\"to combine\")\n", - "\n", - " #################\n", - " # Here, the function \"combine\" is called. It will try cell translations of one fragment, and check whether it eventually combines with the second fragment into either a bigger fragment or a molecule\n", - " #################\n", - " goodlist, avglist, badlist = combine(sublist, refmoleclist, cellvec, threshold_tmat, factor, metal_factor, debug=debug)\n", - " if debug >=2 :\n", - " print(\"SEQUENTIAL: goodlist\", len(goodlist), [g.formula for g in goodlist])\n", - " print(\"SEQUENTIAL: avglist\", len(avglist), [a.formula for a in avglist])\n", - " print(\"SEQUENTIAL: badlist\", len(badlist), [b.formula for b in badlist])\n", - " #################\n", - " # This part handles the results of combine\n", - " #################\n", - " if (len(goodlist) > 0) or (len(avglist) > 0):\n", - " # it means that the function combine worked. Thus, it restarts the fragments to allocate\n", - " lastiter = niter\n", - " Frag1_toallocate = 0\n", - " Frag2_toallocate = 0\n", - "\n", - " # Adds the found molecule to the appropriate list\n", - " for g in goodlist:\n", - " molecsfoundlist.append(g)\n", - " if debug >= 1: print(f\"SEQUENTIAL: Found molecule {g.formula}\")\n", - "\n", - " # Reconstructs list1 and list2\n", - " list1 = []\n", - " list2 = []\n", - " for a in avglist:\n", - " list1.append(a)\n", - " if typ == \"Heavy\": list2.append(a)\n", - "\n", - " if len(badlist) > 1:\n", - " if typ == \"Heavy\":\n", - " list1.append(badlist[0])\n", - " list1.append(badlist[1])\n", - " list2.append(badlist[0])\n", - " list2.append(badlist[1])\n", - " elif typ != \"Heavy\":\n", - " list1.append(badlist[0])\n", - " list2.append(badlist[1])\n", - " for k1 in keeplist1:\n", - " list1.append(k1)\n", - " for k2 in keeplist2:\n", - " list2.append(k2)\n", - "\n", - " if len(list1) + len(list2) == 0:\n", - " print(\"FINISHED succesfully\")\n", - " break\n", - "\n", - " if typ == \"Heavy\":\n", - " if len(list1) == 1:\n", - " for l in list1:\n", - " remainingfragments.append(l)\n", - " print(\"FINISHED with Remaining Fragment\")\n", - " break\n", - "\n", - " if (len(list1) == 0) and (len(list2) == 0):\n", - " print(\"FINISHED succesfully\")\n", - " break\n", - "\n", - " #################\n", - " # This part decides whether the WHILE loop must finish.\n", - " #################\n", - " niter += 1\n", - " if niter > maxiter: STOP = True\n", - " if niter > (lastiter + lastitermargin): STOP = True\n", - " if not STOP: continue\n", - " else:\n", - " if (threshold_tmat <= (1.0 - increase_tmat)) or Last_Attempt:\n", - " STOP = False\n", - " threshold_tmat += increase_tmat\n", - " if threshold_tmat >= 1: Last_Attempt = True\n", - " if not Last_Attempt: \n", - " maxsize = 0\n", - " for l in list1:\n", - " l.tmatrix = tmatgenerator(l.centroid, threshold_tmat)\n", - " if len(l.tmatrix) > maxsize: maxsize = len(l.tmatrix)\n", - " for l in list2:\n", - " l.tmatrix = tmatgenerator(l.centroid, threshold_tmat)\n", - " if len(l.tmatrix) > maxsize: maxsize = len(l.tmatrix)\n", - " if debug >= 1: print(\" Increased Threshold_tmat. Now:\", threshold_tmat)\n", - " if debug >= 1: print(\" Maxsize of the translation matrix is=\", maxsize)\n", - " elif Last_Attempt:\n", - " for l in list1:\n", - " l.tmatrix = tmatgenerator(l.centroid, threshold_tmat, full=True)\n", - " for l in list2:\n", - " l.tmatrix = tmatgenerator(l.centroid, threshold_tmat, full=True)\n", - " if debug >= 1: print(\"Trying Full Tmatrix for all Items in list\")\n", - "\n", - " niter = 1\n", - " Frag1_toallocate = 0\n", - " Frag2_toallocate = 0\n", - " else:\n", - " for l in list1:\n", - " if debug >= 1: print(\"Sequential: list1 end:\", l.labels)\n", - " remainingfragments.append(l)\n", - " for l in list2:\n", - " if typ == \"All\" and debug >= 1: print(\"Sequential: list2 end:\", l.labels)\n", - " if typ == \"All\": remainingfragments.append(l)\n", - " break\n", - "\n", - " return molecsfoundlist, remainingfragments" - ] - }, - { - "cell_type": "code", - "execution_count": 507, - "metadata": {}, - "outputs": [], - "source": [ - "def sequential(fragmentlist: list, refmoleclist: list, cellvec: list, factor: float=1.3, metal_factor: float=1.0, typ: str=\"All\", debug: int=2):\n", - " # Crappy function that controls the reconstruction process. It is called sequential because pairs of fragments are sent one by one. Ideally, a parallel version would be desirable.\n", - " # Given a list of fragments(fragmentlist), a list of reference molecules(refmoleclist), and some other minor parameters, the function sends pairs of fragments and evaluates if they...\n", - " # ...form a bigger fragment. If so, the bigger fragment is evaluated. If it coincides with one of the molecules in refmoleclist, than it means that it is a full molecule that requires no further work.\n", - " # ...if it does not, then it means that requires further reconstruction, and is again introduced in the loop.\n", - " # typ is a variable that defines how to combine the fragments. To speed up the process, this function is called twice in main.\n", - " # -First, to combine heavy fragments among themselves (typ=\"Heavy\")\n", - " # -Second, to combie heavy fragments with H atoms (typ=\"All\")\n", - " #:return molecsfoundlist, remainingfragments: lists of molecules and fragments, respectively, saved as objects\n", - "\n", - " if debug >= 1: print(\"Entered sequential with\", len(fragmentlist), \"fragments to reconstruct\")\n", - "\n", - " # Finds How many atoms, at max, can a molecule have. It is used to skip meaningless combinations\n", - " maxatoms = 0\n", - " for ref in refmoleclist:\n", - " if ref.natoms > maxatoms:\n", - " maxatoms = ref.natoms\n", - "\n", - " molecsfoundlist = []\n", - " remainingfragments = []\n", - " ###################################################\n", - " #### INPUT THAT CONTROLS THE ITERATIVE PROCESS ####\n", - " ###################################################\n", - " threshold_tmat = 0.40\n", - " increase_tmat = 0.20\n", - " niter = 1\n", - " maxiter = 3000\n", - " lastiter = 0\n", - " lastitermargin = maxiter\n", - " ###################################################\n", - "\n", - " ###################################################\n", - " # Lists (list1 and list2) are created here depending on variable \"typ\"\n", - " ###################################################\n", - " for frag in fragmentlist:\n", - " if not hasattr(frag,\"frac_centroid\"): frag.get_centroid()\n", - " frag.tmatrix = tmatgenerator(frag.frac_centroid, threshold_tmat)\n", - "\n", - " remlist = []\n", - " Hlist = []\n", - " for frag in fragmentlist:\n", - " if (frag.natoms == 1) and (frag.numH == 1):\n", - " frag.subtype = \"H\"\n", - " Hlist.append(frag)\n", - " else:\n", - " frag.subtype = \"Heavy\"\n", - " remlist.append(frag)\n", - " if debug >= 1: print(\"Found\",len(remlist),\"and\",len(Hlist),\"Heavy and Hydrogen fragments, respectively\")\n", - " if typ == \"Heavy\":\n", - " list1 = remlist.copy()\n", - " list2 = remlist.copy()\n", - " elif typ == \"All\":\n", - " list1 = remlist.copy()\n", - " list2 = Hlist.copy()\n", - "\n", - " ## Initial Fragment indices for each list\n", - " Frag1_toallocate = 0\n", - " Frag2_toallocate = 0\n", - "\n", - " #################\n", - " ### MAIN LOOP ###\n", - " #################\n", - " while (len(list1) > 0) and (len(list2) > 0):\n", - "\n", - " #################\n", - " # This part decides which molecules in the two lists are sent to combine\n", - " #################\n", - " STOP = False\n", - " Last_Attempt = False\n", - "\n", - " if niter > 1: Frag2_toallocate += 1\n", - " if (Frag2_toallocate > len(list2) - 1): # Reaches the end of the second list. Restarts 2nd and advances 1st\n", - " Frag1_toallocate += 1\n", - " Frag2_toallocate = 0\n", - " if (Frag1_toallocate > len(list1) - 1): # Reaches the end of the first list. Restarts both\n", - " Frag1_toallocate = 0\n", - " Frag2_toallocate = 0\n", - " if typ == \"Heavy\":\n", - " if Frag1_toallocate == Frag2_toallocate: Frag2_toallocate += 1\n", - " if typ == \"Heavy\":\n", - " if (Frag1_toallocate >= len(list1) - 1) and (Frag2_toallocate >= len(list2) - 2): STOP = True\n", - " elif typ == \"All\":\n", - " if (Frag1_toallocate >= len(list1) - 1) and (Frag2_toallocate >= len(list2) - 1): STOP = True\n", - " #################\n", - "\n", - " #################\n", - " # This part handles sublist, keeplist1 and keeplist2. They are necessary to handle the results of the function \"Combine\", which is called later.\n", - " #################\n", - " if debug >= 1: print(\" \")\n", - " if debug >= 1: print(\"Fragments to allocate:\",Frag1_toallocate,Frag2_toallocate,\"out of\",len(list1)-1,len(list2)-1)\n", - " sublist = []\n", - " keeplist1 = []\n", - " keeplist2 = []\n", - " if typ == \"Heavy\":\n", - " for i in range(0, len(list1)):\n", - " if i == Frag1_toallocate: sublist.append(list1[i])\n", - " elif i != Frag2_toallocate: keeplist1.append(list1[i])\n", - " for i in range(0, len(list2)):\n", - " if i == Frag2_toallocate: sublist.append(list2[i])\n", - " elif i != Frag1_toallocate: keeplist2.append(list2[i])\n", - " elif typ == \"All\":\n", - " for i in range(0, len(list1)):\n", - " if i == Frag1_toallocate: sublist.append(list1[i])\n", - " elif i != Frag1_toallocate: keeplist1.append(list1[i])\n", - " for i in range(0, len(list2)):\n", - " if i == Frag2_toallocate: sublist.append(list2[i])\n", - " elif i != Frag2_toallocate: keeplist2.append(list2[i])\n", - " if debug >= 2: \n", - " print(f\"sublist\", len(sublist), [s.formula for s in sublist] )\n", - " print(\"list1\", len(list1), [s.formula for s in list1])\n", - " print(\"list2\", len(list2),[s.formula for s in list2])\n", - " print(f\"keeplist1\", len(keeplist1), [s.formula for s in keeplist1])\n", - " print(f\"keeplist2\", len(keeplist2), [s.formula for s in keeplist2])\n", - " print(\"\")\n", - " #################\n", - " # This part evaluates that the fragments that are going to be combined, can form one of the reference molecules. The resulting number of atoms is used.\n", - " #################\n", - " if list1[Frag1_toallocate].natoms + list2[Frag2_toallocate].natoms > maxatoms:\n", - " if debug >= 1: print(\"SEQUENTIAL\",typ,\"SKIPPED\",list1[Frag1_toallocate].natoms,\"and\",list2[Frag2_toallocate].natoms)\n", - " else:\n", - " if debug >= 1: print(\"SEQUENTIAL\",typ,\"iteration\",niter,\"with\",len(list1),\"and\",len(list2),\"Remaining in each list\")\n", - " if debug >= 1: print(\"SEQUENTIAL\",typ,\"sending\",list1[Frag1_toallocate].labels,\"and\",list2[Frag2_toallocate].labels,\"to combine\")\n", - "\n", - " #################\n", - " # Here, the function \"combine\" is called. It will try cell translations of one fragment, and check whether it eventually combines with the second fragment into either a bigger fragment or a molecule\n", - " #################\n", - " goodlist, avglist, badlist = combine(sublist, refmoleclist, cellvec, threshold_tmat, factor, metal_factor, debug=debug)\n", - " if debug >=2 :\n", - " print(\"SEQUENTIAL: goodlist\", len(goodlist), [g.formula for g in goodlist])\n", - " print(\"SEQUENTIAL: avglist\", len(avglist), [a.formula for a in avglist])\n", - " print(\"SEQUENTIAL: badlist\", len(badlist), [b.formula for b in badlist])\n", - " #################\n", - " # This part handles the results of combine\n", - " #################\n", - " if (len(goodlist) > 0) or (len(avglist) > 0):\n", - " # it means that the function combine worked. Thus, it restarts the fragments to allocate\n", - " lastiter = niter\n", - " Frag1_toallocate = 0\n", - " Frag2_toallocate = 0\n", - "\n", - " # Adds the found molecule to the appropriate list\n", - " for g in goodlist:\n", - " molecsfoundlist.append(g)\n", - " if debug >= 1: print(f\"SEQUENTIAL: Found molecule {g.formula}\")\n", - "\n", - " # Reconstructs list1 and list2\n", - " list1 = []\n", - " list2 = []\n", - " for a in avglist:\n", - " list1.append(a)\n", - " if typ == \"Heavy\": list2.append(a)\n", - "\n", - " if len(badlist) > 1:\n", - " if typ == \"Heavy\":\n", - " list1.append(badlist[0])\n", - " list1.append(badlist[1])\n", - " list2.append(badlist[0])\n", - " list2.append(badlist[1])\n", - " elif typ != \"Heavy\":\n", - " list1.append(badlist[0])\n", - " list2.append(badlist[1])\n", - " for k1 in keeplist1:\n", - " list1.append(k1)\n", - " for k2 in keeplist2:\n", - " list2.append(k2)\n", - "\n", - " if len(list1) + len(list2) == 0:\n", - " print(\"FINISHED succesfully\")\n", - " break\n", - "\n", - " if typ == \"Heavy\":\n", - " if len(list1) == 1:\n", - " for l in list1:\n", - " remainingfragments.append(l)\n", - " print(\"FINISHED with Remaining Fragment\")\n", - " break\n", - "\n", - " if (len(list1) == 0) and (len(list2) == 0):\n", - " print(\"FINISHED succesfully\")\n", - " break\n", - "\n", - " #################\n", - " # This part decides whether the WHILE loop must finish.\n", - " #################\n", - " niter += 1\n", - " if niter > maxiter: STOP = True\n", - " if niter > (lastiter + lastitermargin): STOP = True\n", - " if not STOP: continue\n", - " else:\n", - " if (threshold_tmat <= (1.0 - increase_tmat)) or Last_Attempt:\n", - " STOP = False\n", - " threshold_tmat += increase_tmat\n", - " if threshold_tmat >= 1: Last_Attempt = True\n", - " if not Last_Attempt: \n", - " maxsize = 0\n", - " for l in list1:\n", - " l.tmatrix = tmatgenerator(l.centroid, threshold_tmat)\n", - " if len(l.tmatrix) > maxsize: maxsize = len(l.tmatrix)\n", - " for l in list2:\n", - " l.tmatrix = tmatgenerator(l.centroid, threshold_tmat)\n", - " if len(l.tmatrix) > maxsize: maxsize = len(l.tmatrix)\n", - " if debug >= 1: print(\" Increased Threshold_tmat. Now:\", threshold_tmat)\n", - " if debug >= 1: print(\" Maxsize of the translation matrix is=\", maxsize)\n", - " elif Last_Attempt:\n", - " for l in list1:\n", - " l.tmatrix = tmatgenerator(l.centroid, threshold_tmat, full=True)\n", - " for l in list2:\n", - " l.tmatrix = tmatgenerator(l.centroid, threshold_tmat, full=True)\n", - " if debug >= 1: print(\"Trying Full Tmatrix for all Items in list\")\n", - "\n", - " niter = 1\n", - " Frag1_toallocate = 0\n", - " Frag2_toallocate = 0\n", - " else:\n", - " for l in list1:\n", - " if debug >= 1: print(\"Sequential: list1 end:\", l.labels)\n", - " remainingfragments.append(l)\n", - " for l in list2:\n", - " if typ == \"All\" and debug >= 1: print(\"Sequential: list2 end:\", l.labels)\n", - " if typ == \"All\": remainingfragments.append(l)\n", - " break\n", - "\n", - " return molecsfoundlist, remainingfragments" - ] - }, - { - "cell_type": "code", - "execution_count": 552, - "metadata": {}, - "outputs": [], - "source": [ - "def merge_fragments(frags: list, refs: list, cellvec: list, cov_factor: float=1.3, metal_factor: float=1.0, debug: int=0):\n", - " from cell2mol.classes import molecule\n", - " # finds biggest fragment and keeps it in the original cell\n", - " sizes = []\n", - " for f in frags:\n", - " size = f.natoms\n", - " sizes.append(size)\n", - " keep_idx = np.argmax(sizes)\n", - " if keep_idx == 0: move_idx = 1\n", - " elif keep_idx == 1: move_idx = 0\n", - " keep_frag = frags[keep_idx]\n", - " move_frag = frags[move_idx]\n", - " if debug > 0: print(\"MERGE_FRAGMENTS: keep_idx\", keep_idx)\n", - " if debug > 0: print(\"MERGE_FRAGMENTS: move_idx\", move_idx)\n", - " if debug > 0: print(\"MERGE_FRAGMENTS: move_frag.tmatrix\", move_frag.tmatrix)\n", - "\n", - " #applytranspose = list(itertools.product(*move_frag.tmatrix))\n", - " #print(\"applytranspose\", applytranspose)\n", - " if len(move_frag.tmatrix) == 0: return None\n", - " for t in move_frag.tmatrix:\n", - " if debug > 0: print(\"MERGE_FRAGMENTS: translation\", t)\n", - " ## Applies Translations and each time, it checks if a bigger molecule is formed\n", - " ## meaning that the translation was successful\n", - " reclabels = []\n", - " reclabels.extend(keep_frag.labels)\n", - " reclabels.extend(move_frag.labels)\n", - " reccoord = []\n", - " reccoord.extend(keep_frag.coord)\n", - " if t == (0, 0, 0): reccoord.extend(move_frag.coord)\n", - " else: reccoord.extend(translate(t, move_frag.coord, cellvec))\n", - " # recindices = []\n", - " # recindices.extend(keep_frag.get_parent_indices(\"cell\"))\n", - " # recindices.extend(move_frag.get_parent_indices(\"cell\"))\n", - " # print(f\"{recindices=}\")\n", - " ## Evaluate if we get only one fragment. If so, we're ok:\n", - " numspecs = count_species(reclabels, reccoord, cov_factor=cov_factor, debug=debug)\n", - " if debug > 0: print(\"MERGE_FRAGMENTS: count_species found\", numspecs)\n", - " if numspecs != 1: continue\n", - " blocklist = split_species(reclabels, reccoord, cov_factor=cov_factor, debug=debug)\n", - " if blocklist is None: continue\n", - " else:\n", - " if len(blocklist) != 1: continue\n", - " if len(blocklist) == 1: \n", - " newmolec = molecule(reclabels, reccoord)\n", - " newmolec.set_adjacency_parameters(cov_factor, metal_factor)\n", - " newmolec.set_adj_types()\n", - " newmolec.set_element_count()\n", - " newmolec.get_adjmatrix()\n", - " newmolec.get_centroid()\n", - " newmolec.get_metal_adjmatrix()\n", - " return newmolec\n", - " return None\n" - ] - }, - { - "cell_type": "code", - "execution_count": 526, - "metadata": {}, - "outputs": [], - "source": [ - "def combine(tobemerged: list, references: list, cellvec: list, threshold_tmat: float, cov_factor: float, metal_factor: float, debug: int=0):\n", - " from cell2mol.classes import molecule\n", - "\n", - " goodlist = [] ## List of molecules coming from the two fragments received\n", - " avglist = [] ## List of bigger fragments coming from the two fragments received\n", - " badlist = [] ## List of fragments as they entered the function\n", - "\n", - " ## Merges the coordinates of both fragments, and finds species\n", - " newmolec = merge_fragments(tobemerged, references, cellvec, cov_factor, metal_factor, debug=debug)\n", - " if newmolec is not None and debug >= 1: print(\"COMBINE. received molecule:\", newmolec, \"from merge fragments\")\n", - "\n", - " ## Steric Clashes, or more than one fragment retrieved\n", - " if newmolec is None: \n", - " badlist.append(tobemerged[0])\n", - " badlist.append(tobemerged[1])\n", - "\n", - " ## Single specie retrieved\n", - " if newmolec is not None:\n", - " newmolec.get_fractional_coord(cellvec)\n", - " newmolec.get_centroid()\n", - " newmolec.tmatrix = tmatgenerator(newmolec.frac_centroid, threshold_tmat)\n", - "\n", - " found = False \n", - " for ref in references:\n", - " if not found: \n", - " if (newmolec.natoms == ref.natoms) and (newmolec.eleccount == ref.eleccount) and (newmolec.formula == ref.formula):\n", - " dummy1, dummy2, map12 = reorder(ref.labels, newmolec.labels, ref.coord, newmolec.coord)\n", - " \n", - " reordered_labels = [newmolec.labels[i] for i in map12]\n", - " reordered_coord = [newmolec.coord[i] for i in map12]\n", - " reordered_radii = [newmolec.radii[i] for i in map12]\n", - " reordered_frac_cood = [newmolec.frac_coord[i] for i in map12]\n", - " #reordered_cell_indices = [newmolec.cell_indices[i] for i in map12]\n", - "\n", - " reordered_newmolec = molecule(reordered_labels, reordered_coord, reordered_radii)\n", - " #reordered_newmolec.cell_indices = reordered_cell_indices\n", - " reordered_newmolec.set_fractional_coord(reordered_frac_cood)\n", - " reordered_newmolec.set_adjacency_parameters(cov_factor, metal_factor)\n", - " reordered_newmolec.set_atoms(create_adjacencies=True, debug=2)\n", - " \n", - " if reordered_newmolec.iscomplex: \n", - " reordered_newmolec.split_complex()\n", - " reordered_newmolec.get_hapticity(debug=debug)\n", - " for lig in reordered_newmolec.ligands:\n", - " lig.get_denticity(debug=debug)\n", - " for met in reordered_newmolec.metals: \n", - " met.get_coordination_geometry(debug=debug) \n", - " if debug >= 1: print(f\"COMBINE: {reordered_newmolec.formula=}\")\n", - " if debug >= 1: print(f\"COMBINE: {reordered_newmolec=}\")\n", - " issame = True\n", - " # issame = compare_species(reordered_newmolec, ref, debug=debug)\n", - " if issame: ## Then is a molecule that appears in the reference list \n", - " found = True \n", - " reordered_newmolec.subtype = ref.subtype\n", - " goodlist.append(reordered_newmolec)\n", - " #if debug >= 1: print(f\"COMBINE: Fragment {reordered_newmolec.formula} added to goodlist with {reordered_newmolec.cell_indices=}\")\n", - " if not found: ## Then it is a fragment. A bigger one, but still a fragment\n", - " newmolec.subtype = \"Rec. Fragment\"\n", - " avglist.append(newmolec)\n", - " if debug >= 1: print(\"COMBINE: Fragment\", newmolec.formula, \"added to avglist\")\n", - "\n", - " return goodlist, avglist, badlist" - ] - }, - { - "cell_type": "code", - "execution_count": 75, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "True" - ] - }, - "execution_count": 75, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "Warning" - ] - }, - { - "cell_type": "code", - "execution_count": 147, - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Help on function sequential in module __main__:\n", - "\n", - "sequential(fragmentlist: list, refmoleclist: list, cellvec: list, factor: float = 1.3, metal_factor: float = 1.0, typ: str = 'All', debug: int = 2)\n", - "\n" - ] - } - ], - "source": [ - "help(sequential)" - ] - }, - { - "cell_type": "code", - "execution_count": 156, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 19\n", - " Formula = C6-O12-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 MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 42\n", - " Formula = H24-C12-O6\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 42\n", - " Formula = H24-C12-O6\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 42\n", - " Formula = H24-C12-O6\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = K\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = K\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = K\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " ---------------------------------------------------]" - ] - }, - "execution_count": 156, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "newcell.refmoleclist" - ] - }, - { - "cell_type": "code", - "execution_count": 514, - "metadata": {}, - "outputs": [], - "source": [ - "from cell2mol.other import additem, absolute_value\n", - "from cell2mol.connectivity import count_species\n", - "from cell2mol.cell_operations import translate\n", - "import itertools\n", - "\n", - "# newmols, remfrag = sequential(filtered_fragments, newcell.refmoleclist, cellvec=newcell.cellvec, typ=\"Heavy\", debug=2)" - ] - }, - { - "cell_type": "code", - "execution_count": 226, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Entered sequential with 27 fragments to reconstruct\n", - "Found 15 and 12 Heavy and Hydrogen fragments, respectively\n", - " \n", - "Fragments to allocate: 0 0 out of 14 11\n", - "sublist 2 ['H-O', 'H']\n", - "list1 15 ['H-O', 'H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 1 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-O', 'H']\n", - " \n", - "Fragments to allocate: 0 1 out of 14 11\n", - "sublist 2 ['H-O', 'H']\n", - "list1 15 ['H-O', 'H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 2 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-O', 'H']\n", - " \n", - "Fragments to allocate: 0 2 out of 14 11\n", - "sublist 2 ['H-O', 'H']\n", - "list1 15 ['H-O', 'H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 3 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-O', 'H']\n", - " \n", - "Fragments to allocate: 0 3 out of 14 11\n", - "sublist 2 ['H-O', 'H']\n", - "list1 15 ['H-O', 'H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 4 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-O', 'H']\n", - " \n", - "Fragments to allocate: 0 4 out of 14 11\n", - "sublist 2 ['H-O', 'H']\n", - "list1 15 ['H-O', 'H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 5 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-O', 'H']\n", - " \n", - "Fragments to allocate: 0 5 out of 14 11\n", - "sublist 2 ['H-O', 'H']\n", - "list1 15 ['H-O', 'H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 6 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-O', 'H']\n", - " \n", - "Fragments to allocate: 0 6 out of 14 11\n", - "sublist 2 ['H-O', 'H']\n", - "list1 15 ['H-O', 'H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 7 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-O', 'H']\n", - " \n", - "Fragments to allocate: 0 7 out of 14 11\n", - "sublist 2 ['H-O', 'H']\n", - "list1 15 ['H-O', 'H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 8 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-O', 'H']\n", - " \n", - "Fragments to allocate: 0 8 out of 14 11\n", - "sublist 2 ['H-O', 'H']\n", - "list1 15 ['H-O', 'H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 9 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-O', 'H']\n", - " \n", - "Fragments to allocate: 0 9 out of 14 11\n", - "sublist 2 ['H-O', 'H']\n", - "list1 15 ['H-O', 'H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 10 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-O', 'H']\n", - " \n", - "Fragments to allocate: 0 10 out of 14 11\n", - "sublist 2 ['H-O', 'H']\n", - "list1 15 ['H-O', 'H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 11 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-O', 'H']\n", - " \n", - "Fragments to allocate: 0 11 out of 14 11\n", - "sublist 2 ['H-O', 'H']\n", - "list1 15 ['H-O', 'H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 12 with 15 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 1\n", - "SPILT_SPECIES: Laplacian lap=array([[-2, 1, 1],\n", - " [ 1, -1, 0],\n", - " [ 1, 0, -1]])\n", - "SPILT_SPECIES: graph=<3x3 sparse matrix of type ''\n", - "\twith 7 stored elements in Compressed Sparse Row format>\n", - "COMBINE. received molecule: ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - " from merge fragments\n", - "COMBINE: Fragment H2-O added to avglist\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 1 ['H2-O']\n", - "SEQUENTIAL: badlist 0 []\n", - " \n", - "Fragments to allocate: 0 1 out of 14 10\n", - "sublist 2 ['H2-O', 'H']\n", - "list1 15 ['H2-O', 'H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 13 with 15 and 11 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-O', 'H']\n", - " \n", - "Fragments to allocate: 0 2 out of 14 10\n", - "sublist 2 ['H2-O', 'H']\n", - "list1 15 ['H2-O', 'H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 14 with 15 and 11 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-O', 'H']\n", - " \n", - "Fragments to allocate: 0 3 out of 14 10\n", - "sublist 2 ['H2-O', 'H']\n", - "list1 15 ['H2-O', 'H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 15 with 15 and 11 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-O', 'H']\n", - " \n", - "Fragments to allocate: 0 4 out of 14 10\n", - "sublist 2 ['H2-O', 'H']\n", - "list1 15 ['H2-O', 'H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 16 with 15 and 11 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-O', 'H']\n", - " \n", - "Fragments to allocate: 0 5 out of 14 10\n", - "sublist 2 ['H2-O', 'H']\n", - "list1 15 ['H2-O', 'H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 17 with 15 and 11 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-O', 'H']\n", - " \n", - "Fragments to allocate: 0 6 out of 14 10\n", - "sublist 2 ['H2-O', 'H']\n", - "list1 15 ['H2-O', 'H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 18 with 15 and 11 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-O', 'H']\n", - " \n", - "Fragments to allocate: 0 7 out of 14 10\n", - "sublist 2 ['H2-O', 'H']\n", - "list1 15 ['H2-O', 'H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 19 with 15 and 11 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-O', 'H']\n", - " \n", - "Fragments to allocate: 0 8 out of 14 10\n", - "sublist 2 ['H2-O', 'H']\n", - "list1 15 ['H2-O', 'H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 20 with 15 and 11 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-O', 'H']\n", - " \n", - "Fragments to allocate: 0 9 out of 14 10\n", - "sublist 2 ['H2-O', 'H']\n", - "list1 15 ['H2-O', 'H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 21 with 15 and 11 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-O', 'H']\n", - " \n", - "Fragments to allocate: 0 10 out of 14 10\n", - "sublist 2 ['H2-O', 'H']\n", - "list1 15 ['H2-O', 'H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 22 with 15 and 11 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-O', 'H']\n", - " \n", - "Fragments to allocate: 1 0 out of 14 10\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H2-O', 'H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-O', 'C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 23 with 15 and 11 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 1 1 out of 14 10\n", - "sublist 2 ['H2-O', 'H']\n", - "list1 15 ['H2-C', 'H2-O', 'C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 24 with 15 and 11 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-O', 'H']\n", - " \n", - "Fragments to allocate: 1 2 out of 14 10\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H2-O', 'H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-O', 'C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 25 with 15 and 11 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 1 3 out of 14 10\n", - "sublist 2 ['H2-O', 'H']\n", - "list1 15 ['H2-C', 'H2-O', 'C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 26 with 15 and 11 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-O', 'H']\n", - " \n", - "Fragments to allocate: 1 4 out of 14 10\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H2-O', 'H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-O', 'C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 27 with 15 and 11 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 1 5 out of 14 10\n", - "sublist 2 ['H2-O', 'H']\n", - "list1 15 ['H2-C', 'H2-O', 'C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 28 with 15 and 11 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-O', 'H']\n", - " \n", - "Fragments to allocate: 1 6 out of 14 10\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H2-O', 'H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-O', 'C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 29 with 15 and 11 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 1 7 out of 14 10\n", - "sublist 2 ['H2-O', 'H']\n", - "list1 15 ['H2-C', 'H2-O', 'C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 30 with 15 and 11 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-O', 'H']\n", - " \n", - "Fragments to allocate: 1 8 out of 14 10\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H2-O', 'H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-O', 'C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 31 with 15 and 11 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 1 9 out of 14 10\n", - "sublist 2 ['H2-O', 'H']\n", - "list1 15 ['H2-C', 'H2-O', 'C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 32 with 15 and 11 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-O', 'H']\n", - " \n", - "Fragments to allocate: 1 10 out of 14 10\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H2-O', 'H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-O', 'C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 33 with 15 and 11 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 2 0 out of 14 10\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H2-C', 'H2-O', 'C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H2-O', 'H-C-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 34 with 15 and 11 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 2 1 out of 14 10\n", - "sublist 2 ['H2-O', 'H']\n", - "list1 15 ['C-O2', 'H2-C', 'H2-O', 'H-C-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H2-C', 'H-C-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 35 with 15 and 11 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-O', 'H']\n", - " \n", - "Fragments to allocate: 2 2 out of 14 10\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H2-O', 'C-O2', 'H2-C', 'H-C-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-O', 'C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 36 with 15 and 11 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 2 3 out of 14 10\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H2-C', 'H2-O', 'C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H2-O', 'H-C-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 37 with 15 and 11 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 2 4 out of 14 10\n", - "sublist 2 ['H2-O', 'H']\n", - "list1 15 ['C-O2', 'H2-C', 'H2-O', 'H-C-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H2-C', 'H-C-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 38 with 15 and 11 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-O', 'H']\n", - " \n", - "Fragments to allocate: 2 5 out of 14 10\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H2-O', 'C-O2', 'H2-C', 'H-C-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-O', 'C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 39 with 15 and 11 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 2 6 out of 14 10\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H2-C', 'H2-O', 'C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H2-O', 'H-C-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 40 with 15 and 11 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 2 7 out of 14 10\n", - "sublist 2 ['H2-O', 'H']\n", - "list1 15 ['C-O2', 'H2-C', 'H2-O', 'H-C-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H2-C', 'H-C-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 41 with 15 and 11 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-O', 'H']\n", - " \n", - "Fragments to allocate: 2 8 out of 14 10\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H2-O', 'C-O2', 'H2-C', 'H-C-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-O', 'C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 42 with 15 and 11 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 2 9 out of 14 10\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H2-C', 'H2-O', 'C-O2', 'H-C-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H2-O', 'H-C-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 43 with 15 and 11 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 2 10 out of 14 10\n", - "sublist 2 ['H2-O', 'H']\n", - "list1 15 ['C-O2', 'H2-C', 'H2-O', 'H-C-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H2-C', 'H-C-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 44 with 15 and 11 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-O', 'H']\n", - " \n", - "Fragments to allocate: 3 0 out of 14 10\n", - "sublist 2 ['H-C-O', 'H']\n", - "list1 15 ['H2-O', 'C-O2', 'H2-C', 'H-C-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-O', 'C-O2', 'H2-C', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 45 with 15 and 11 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-C-O', 'H']\n", - " \n", - "Fragments to allocate: 3 1 out of 14 10\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H-C-O', 'H2-O', 'C-O2', 'H2-C', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-C-O', 'H2-O', 'C-O2', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 46 with 15 and 11 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 3 2 out of 14 10\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H2-C', 'H-C-O', 'H2-O', 'C-O2', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H-C-O', 'H2-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 47 with 15 and 11 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 3 3 out of 14 10\n", - "sublist 2 ['H2-O', 'H']\n", - "list1 15 ['C-O2', 'H2-C', 'H-C-O', 'H2-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H2-C', 'H-C-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 48 with 15 and 11 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-O', 'H']\n", - " \n", - "Fragments to allocate: 3 4 out of 14 10\n", - "sublist 2 ['H-C-O', 'H']\n", - "list1 15 ['H2-O', 'C-O2', 'H2-C', 'H-C-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-O', 'C-O2', 'H2-C', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 49 with 15 and 11 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-C-O', 'H']\n", - " \n", - "Fragments to allocate: 3 5 out of 14 10\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H-C-O', 'H2-O', 'C-O2', 'H2-C', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-C-O', 'H2-O', 'C-O2', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 50 with 15 and 11 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 3 6 out of 14 10\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H2-C', 'H-C-O', 'H2-O', 'C-O2', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H-C-O', 'H2-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 51 with 15 and 11 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 3 7 out of 14 10\n", - "sublist 2 ['H2-O', 'H']\n", - "list1 15 ['C-O2', 'H2-C', 'H-C-O', 'H2-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H2-C', 'H-C-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 52 with 15 and 11 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-O', 'H']\n", - " \n", - "Fragments to allocate: 3 8 out of 14 10\n", - "sublist 2 ['H-C-O', 'H']\n", - "list1 15 ['H2-O', 'C-O2', 'H2-C', 'H-C-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-O', 'C-O2', 'H2-C', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 53 with 15 and 11 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-C-O', 'H']\n", - " \n", - "Fragments to allocate: 3 9 out of 14 10\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H-C-O', 'H2-O', 'C-O2', 'H2-C', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-C-O', 'H2-O', 'C-O2', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 54 with 15 and 11 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 3 10 out of 14 10\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H2-C', 'H-C-O', 'H2-O', 'C-O2', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H-C-O', 'H2-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 55 with 15 and 11 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 4 0 out of 14 10\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['C-O2', 'H2-C', 'H-C-O', 'H2-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H2-C', 'H-C-O', 'H2-O', 'H2-C', 'H-C-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 56 with 15 and 11 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 4 1 out of 14 10\n", - "sublist 2 ['H2-O', 'H']\n", - "list1 15 ['H2-C', 'C-O2', 'H2-C', 'H-C-O', 'H2-O', 'H2-C', 'H-C-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'C-O2', 'H2-C', 'H-C-O', 'H2-C', 'H-C-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 57 with 15 and 11 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-O', 'H']\n", - " \n", - "Fragments to allocate: 4 2 out of 14 10\n", - "sublist 2 ['H-C-O', 'H']\n", - "list1 15 ['H2-O', 'H2-C', 'C-O2', 'H2-C', 'H-C-O', 'H2-C', 'H-C-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-O', 'H2-C', 'C-O2', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 58 with 15 and 11 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-C-O', 'H']\n", - " \n", - "Fragments to allocate: 4 3 out of 14 10\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H-C-O', 'H2-O', 'H2-C', 'C-O2', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-C-O', 'H2-O', 'H2-C', 'C-O2', 'H2-C', 'H-C-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 59 with 15 and 11 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 4 4 out of 14 10\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H2-C', 'H-C-O', 'H2-O', 'H2-C', 'C-O2', 'H2-C', 'H-C-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H-C-O', 'H2-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 60 with 15 and 11 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 4 5 out of 14 10\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['C-O2', 'H2-C', 'H-C-O', 'H2-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H2-C', 'H-C-O', 'H2-O', 'H2-C', 'H-C-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 61 with 15 and 11 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 4 6 out of 14 10\n", - "sublist 2 ['H2-O', 'H']\n", - "list1 15 ['H2-C', 'C-O2', 'H2-C', 'H-C-O', 'H2-O', 'H2-C', 'H-C-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'C-O2', 'H2-C', 'H-C-O', 'H2-C', 'H-C-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 62 with 15 and 11 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-O', 'H']\n", - " \n", - "Fragments to allocate: 4 7 out of 14 10\n", - "sublist 2 ['H-C-O', 'H']\n", - "list1 15 ['H2-O', 'H2-C', 'C-O2', 'H2-C', 'H-C-O', 'H2-C', 'H-C-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-O', 'H2-C', 'C-O2', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 63 with 15 and 11 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-C-O', 'H']\n", - " \n", - "Fragments to allocate: 4 8 out of 14 10\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H-C-O', 'H2-O', 'H2-C', 'C-O2', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-C-O', 'H2-O', 'H2-C', 'C-O2', 'H2-C', 'H-C-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 64 with 15 and 11 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 4 9 out of 14 10\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H2-C', 'H-C-O', 'H2-O', 'H2-C', 'C-O2', 'H2-C', 'H-C-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H-C-O', 'H2-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 65 with 15 and 11 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 4 10 out of 14 10\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['C-O2', 'H2-C', 'H-C-O', 'H2-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H2-C', 'H-C-O', 'H2-O', 'H2-C', 'H-C-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 66 with 15 and 11 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 5 0 out of 14 10\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H2-C', 'C-O2', 'H2-C', 'H-C-O', 'H2-O', 'H2-C', 'H-C-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'C-O2', 'H2-C', 'H-C-O', 'H2-O', 'H-C-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 67 with 15 and 11 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 5 1 out of 14 10\n", - "sublist 2 ['H2-O', 'H']\n", - "list1 15 ['H2-C', 'H2-C', 'C-O2', 'H2-C', 'H-C-O', 'H2-O', 'H-C-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H2-C', 'C-O2', 'H2-C', 'H-C-O', 'H-C-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 68 with 15 and 11 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-O', 'H']\n", - " \n", - "Fragments to allocate: 5 2 out of 14 10\n", - "sublist 2 ['H-C-O', 'H']\n", - "list1 15 ['H2-O', 'H2-C', 'H2-C', 'C-O2', 'H2-C', 'H-C-O', 'H-C-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-O', 'H2-C', 'H2-C', 'C-O2', 'H2-C', 'H-C-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 69 with 15 and 11 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-C-O', 'H']\n", - " \n", - "Fragments to allocate: 5 3 out of 14 10\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H-C-O', 'H2-O', 'H2-C', 'H2-C', 'C-O2', 'H2-C', 'H-C-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-C-O', 'H2-O', 'H2-C', 'H2-C', 'C-O2', 'H-C-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 70 with 15 and 11 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 5 4 out of 14 10\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H2-C', 'H-C-O', 'H2-O', 'H2-C', 'H2-C', 'C-O2', 'H-C-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H-C-O', 'H2-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 71 with 15 and 11 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 5 5 out of 14 10\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['C-O2', 'H2-C', 'H-C-O', 'H2-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H2-C', 'H-C-O', 'H2-O', 'H2-C', 'H-C-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 72 with 15 and 11 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 5 6 out of 14 10\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H2-C', 'C-O2', 'H2-C', 'H-C-O', 'H2-O', 'H2-C', 'H-C-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'C-O2', 'H2-C', 'H-C-O', 'H2-O', 'H-C-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 73 with 15 and 11 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 5 7 out of 14 10\n", - "sublist 2 ['H2-O', 'H']\n", - "list1 15 ['H2-C', 'H2-C', 'C-O2', 'H2-C', 'H-C-O', 'H2-O', 'H-C-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H2-C', 'C-O2', 'H2-C', 'H-C-O', 'H-C-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 74 with 15 and 11 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-O', 'H']\n", - " \n", - "Fragments to allocate: 5 8 out of 14 10\n", - "sublist 2 ['H-C-O', 'H']\n", - "list1 15 ['H2-O', 'H2-C', 'H2-C', 'C-O2', 'H2-C', 'H-C-O', 'H-C-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-O', 'H2-C', 'H2-C', 'C-O2', 'H2-C', 'H-C-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 75 with 15 and 11 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-C-O', 'H']\n", - " \n", - "Fragments to allocate: 5 9 out of 14 10\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H-C-O', 'H2-O', 'H2-C', 'H2-C', 'C-O2', 'H2-C', 'H-C-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-C-O', 'H2-O', 'H2-C', 'H2-C', 'C-O2', 'H-C-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 76 with 15 and 11 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 5 10 out of 14 10\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H2-C', 'H-C-O', 'H2-O', 'H2-C', 'H2-C', 'C-O2', 'H-C-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H-C-O', 'H2-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 77 with 15 and 11 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 6 0 out of 14 10\n", - "sublist 2 ['H-C-O', 'H']\n", - "list1 15 ['C-O2', 'H2-C', 'H-C-O', 'H2-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H2-C', 'H-C-O', 'H2-O', 'H2-C', 'H2-C', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 78 with 15 and 11 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-C-O', 'H']\n", - " \n", - "Fragments to allocate: 6 1 out of 14 10\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H-C-O', 'C-O2', 'H2-C', 'H-C-O', 'H2-O', 'H2-C', 'H2-C', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-C-O', 'C-O2', 'H2-C', 'H-C-O', 'H2-O', 'H2-C', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 79 with 15 and 11 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 6 2 out of 14 10\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H2-C', 'H-C-O', 'C-O2', 'H2-C', 'H-C-O', 'H2-O', 'H2-C', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H-C-O', 'C-O2', 'H2-C', 'H-C-O', 'H2-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 80 with 15 and 11 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 6 3 out of 14 10\n", - "sublist 2 ['H2-O', 'H']\n", - "list1 15 ['H2-C', 'H2-C', 'H-C-O', 'C-O2', 'H2-C', 'H-C-O', 'H2-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H2-C', 'H-C-O', 'C-O2', 'H2-C', 'H-C-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 81 with 15 and 11 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-O', 'H']\n", - " \n", - "Fragments to allocate: 6 4 out of 14 10\n", - "sublist 2 ['H-C-O', 'H']\n", - "list1 15 ['H2-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'H2-C', 'H-C-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'H2-C', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 82 with 15 and 11 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-C-O', 'H']\n", - " \n", - "Fragments to allocate: 6 5 out of 14 10\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H-C-O', 'H2-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'H2-C', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-C-O', 'H2-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 83 with 15 and 11 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 6 6 out of 14 10\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H2-C', 'H-C-O', 'H2-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H-C-O', 'H2-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 84 with 15 and 11 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 6 7 out of 14 10\n", - "sublist 2 ['H-C-O', 'H']\n", - "list1 15 ['C-O2', 'H2-C', 'H-C-O', 'H2-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H2-C', 'H-C-O', 'H2-O', 'H2-C', 'H2-C', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 85 with 15 and 11 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-C-O', 'H']\n", - " \n", - "Fragments to allocate: 6 8 out of 14 10\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H-C-O', 'C-O2', 'H2-C', 'H-C-O', 'H2-O', 'H2-C', 'H2-C', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-C-O', 'C-O2', 'H2-C', 'H-C-O', 'H2-O', 'H2-C', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 86 with 15 and 11 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 6 9 out of 14 10\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H2-C', 'H-C-O', 'C-O2', 'H2-C', 'H-C-O', 'H2-O', 'H2-C', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H-C-O', 'C-O2', 'H2-C', 'H-C-O', 'H2-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 87 with 15 and 11 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 6 10 out of 14 10\n", - "sublist 2 ['H2-O', 'H']\n", - "list1 15 ['H2-C', 'H2-C', 'H-C-O', 'C-O2', 'H2-C', 'H-C-O', 'H2-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H2-C', 'H-C-O', 'C-O2', 'H2-C', 'H-C-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 88 with 15 and 11 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-O', 'H']\n", - " \n", - "Fragments to allocate: 7 0 out of 14 10\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H2-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'H2-C', 'H-C-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'H2-C', 'H-C-O', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 89 with 15 and 11 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 7 1 out of 14 10\n", - "sublist 2 ['H-C-O', 'H']\n", - "list1 15 ['C-O2', 'H2-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'H2-C', 'H-C-O', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H2-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 90 with 15 and 11 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-C-O', 'H']\n", - " \n", - "Fragments to allocate: 7 2 out of 14 10\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H-C-O', 'C-O2', 'H2-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-C-O', 'C-O2', 'H2-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 91 with 15 and 11 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 7 3 out of 14 10\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H2-C', 'H-C-O', 'C-O2', 'H2-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H-C-O', 'C-O2', 'H2-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 92 with 15 and 11 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 7 4 out of 14 10\n", - "sublist 2 ['H-C-O', 'H']\n", - "list1 15 ['C-O2', 'H2-C', 'H-C-O', 'C-O2', 'H2-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H2-C', 'H-C-O', 'C-O2', 'H2-O', 'H2-C', 'H2-C', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 93 with 15 and 11 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-C-O', 'H']\n", - " \n", - "Fragments to allocate: 7 5 out of 14 10\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H-C-O', 'C-O2', 'H2-C', 'H-C-O', 'C-O2', 'H2-O', 'H2-C', 'H2-C', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-C-O', 'C-O2', 'H2-C', 'H-C-O', 'C-O2', 'H2-O', 'H2-C', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 94 with 15 and 11 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 7 6 out of 14 10\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H2-C', 'H-C-O', 'C-O2', 'H2-C', 'H-C-O', 'C-O2', 'H2-O', 'H2-C', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H-C-O', 'C-O2', 'H2-C', 'H-C-O', 'C-O2', 'H2-O', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 95 with 15 and 11 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 7 7 out of 14 10\n", - "sublist 2 ['H2-O', 'H']\n", - "list1 15 ['H2-C', 'H2-C', 'H-C-O', 'C-O2', 'H2-C', 'H-C-O', 'C-O2', 'H2-O', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H2-C', 'H-C-O', 'C-O2', 'H2-C', 'H-C-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 96 with 15 and 11 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-O', 'H']\n", - " \n", - "Fragments to allocate: 7 8 out of 14 10\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H2-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'H2-C', 'H-C-O', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'H2-C', 'H-C-O', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 97 with 15 and 11 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 7 9 out of 14 10\n", - "sublist 2 ['H-C-O', 'H']\n", - "list1 15 ['C-O2', 'H2-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'H2-C', 'H-C-O', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H2-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 98 with 15 and 11 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 1\n", - "SPILT_SPECIES: Laplacian lap=array([[-1, 1, 0, 0],\n", - " [ 1, -3, 1, 1],\n", - " [ 0, 1, -1, 0],\n", - " [ 0, 1, 0, -1]])\n", - "SPILT_SPECIES: graph=<4x4 sparse matrix of type ''\n", - "\twith 10 stored elements in Compressed Sparse Row format>\n", - "COMBINE. received molecule: ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 4\n", - " Formula = H2-C-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - " from merge fragments\n", - "COMBINE: Fragment H2-C-O added to avglist\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 1 ['H2-C-O']\n", - "SEQUENTIAL: badlist 0 []\n", - " \n", - "Fragments to allocate: 0 1 out of 14 9\n", - "sublist 2 ['H2-C-O', 'H']\n", - "list1 15 ['H2-C-O', 'C-O2', 'H2-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H2-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 99 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C-O', 'H']\n", - " \n", - "Fragments to allocate: 0 2 out of 14 9\n", - "sublist 2 ['H2-C-O', 'H']\n", - "list1 15 ['H2-C-O', 'C-O2', 'H2-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H2-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 100 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C-O', 'H']\n", - " \n", - "Fragments to allocate: 0 3 out of 14 9\n", - "sublist 2 ['H2-C-O', 'H']\n", - "list1 15 ['H2-C-O', 'C-O2', 'H2-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H2-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 101 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C-O', 'H']\n", - " \n", - "Fragments to allocate: 0 4 out of 14 9\n", - "sublist 2 ['H2-C-O', 'H']\n", - "list1 15 ['H2-C-O', 'C-O2', 'H2-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H2-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 102 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C-O', 'H']\n", - " \n", - "Fragments to allocate: 0 5 out of 14 9\n", - "sublist 2 ['H2-C-O', 'H']\n", - "list1 15 ['H2-C-O', 'C-O2', 'H2-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H2-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 103 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C-O', 'H']\n", - " \n", - "Fragments to allocate: 0 6 out of 14 9\n", - "sublist 2 ['H2-C-O', 'H']\n", - "list1 15 ['H2-C-O', 'C-O2', 'H2-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H2-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 104 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C-O', 'H']\n", - " \n", - "Fragments to allocate: 0 7 out of 14 9\n", - "sublist 2 ['H2-C-O', 'H']\n", - "list1 15 ['H2-C-O', 'C-O2', 'H2-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H2-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 105 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C-O', 'H']\n", - " \n", - "Fragments to allocate: 0 8 out of 14 9\n", - "sublist 2 ['H2-C-O', 'H']\n", - "list1 15 ['H2-C-O', 'C-O2', 'H2-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H2-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 106 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C-O', 'H']\n", - " \n", - "Fragments to allocate: 0 9 out of 14 9\n", - "sublist 2 ['H2-C-O', 'H']\n", - "list1 15 ['H2-C-O', 'C-O2', 'H2-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H2-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 107 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C-O', 'H']\n", - " \n", - "Fragments to allocate: 1 0 out of 14 9\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H2-C-O', 'C-O2', 'H2-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C-O', 'H2-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 108 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 1 1 out of 14 9\n", - "sublist 2 ['H2-C-O', 'H']\n", - "list1 15 ['C-O2', 'H2-C-O', 'H2-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H2-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 109 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C-O', 'H']\n", - " \n", - "Fragments to allocate: 1 2 out of 14 9\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H2-C-O', 'C-O2', 'H2-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C-O', 'H2-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 110 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 1 3 out of 14 9\n", - "sublist 2 ['H2-C-O', 'H']\n", - "list1 15 ['C-O2', 'H2-C-O', 'H2-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H2-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 111 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C-O', 'H']\n", - " \n", - "Fragments to allocate: 1 4 out of 14 9\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H2-C-O', 'C-O2', 'H2-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C-O', 'H2-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 112 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 1 5 out of 14 9\n", - "sublist 2 ['H2-C-O', 'H']\n", - "list1 15 ['C-O2', 'H2-C-O', 'H2-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H2-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 113 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C-O', 'H']\n", - " \n", - "Fragments to allocate: 1 6 out of 14 9\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H2-C-O', 'C-O2', 'H2-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C-O', 'H2-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 114 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 1 7 out of 14 9\n", - "sublist 2 ['H2-C-O', 'H']\n", - "list1 15 ['C-O2', 'H2-C-O', 'H2-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H2-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 115 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C-O', 'H']\n", - " \n", - "Fragments to allocate: 1 8 out of 14 9\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H2-C-O', 'C-O2', 'H2-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C-O', 'H2-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 116 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 1 9 out of 14 9\n", - "sublist 2 ['H2-C-O', 'H']\n", - "list1 15 ['C-O2', 'H2-C-O', 'H2-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H2-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 117 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C-O', 'H']\n", - " \n", - "Fragments to allocate: 2 0 out of 14 9\n", - "sublist 2 ['H2-O', 'H']\n", - "list1 15 ['H2-C-O', 'C-O2', 'H2-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C-O', 'C-O2', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 118 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-O', 'H']\n", - " \n", - "Fragments to allocate: 2 1 out of 14 9\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H2-O', 'H2-C-O', 'C-O2', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-O', 'H2-C-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 119 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 2 2 out of 14 9\n", - "sublist 2 ['H2-C-O', 'H']\n", - "list1 15 ['C-O2', 'H2-O', 'H2-C-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H2-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 120 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C-O', 'H']\n", - " \n", - "Fragments to allocate: 2 3 out of 14 9\n", - "sublist 2 ['H2-O', 'H']\n", - "list1 15 ['H2-C-O', 'C-O2', 'H2-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C-O', 'C-O2', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 121 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-O', 'H']\n", - " \n", - "Fragments to allocate: 2 4 out of 14 9\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H2-O', 'H2-C-O', 'C-O2', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-O', 'H2-C-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 122 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 2 5 out of 14 9\n", - "sublist 2 ['H2-C-O', 'H']\n", - "list1 15 ['C-O2', 'H2-O', 'H2-C-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H2-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 123 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C-O', 'H']\n", - " \n", - "Fragments to allocate: 2 6 out of 14 9\n", - "sublist 2 ['H2-O', 'H']\n", - "list1 15 ['H2-C-O', 'C-O2', 'H2-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C-O', 'C-O2', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 124 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-O', 'H']\n", - " \n", - "Fragments to allocate: 2 7 out of 14 9\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H2-O', 'H2-C-O', 'C-O2', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-O', 'H2-C-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 125 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 2 8 out of 14 9\n", - "sublist 2 ['H2-C-O', 'H']\n", - "list1 15 ['C-O2', 'H2-O', 'H2-C-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H2-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 126 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C-O', 'H']\n", - " \n", - "Fragments to allocate: 2 9 out of 14 9\n", - "sublist 2 ['H2-O', 'H']\n", - "list1 15 ['H2-C-O', 'C-O2', 'H2-O', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C-O', 'C-O2', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 127 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-O', 'H']\n", - " \n", - "Fragments to allocate: 3 0 out of 14 9\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H2-O', 'H2-C-O', 'C-O2', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-O', 'H2-C-O', 'C-O2', 'H2-C', 'H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 128 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 3 1 out of 14 9\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H2-C', 'H2-O', 'H2-C-O', 'C-O2', 'H2-C', 'H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H2-O', 'H2-C-O', 'H2-C', 'H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 129 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 3 2 out of 14 9\n", - "sublist 2 ['H2-C-O', 'H']\n", - "list1 15 ['C-O2', 'H2-C', 'H2-O', 'H2-C-O', 'H2-C', 'H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H2-C', 'H2-O', 'H2-C', 'H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 130 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C-O', 'H']\n", - " \n", - "Fragments to allocate: 3 3 out of 14 9\n", - "sublist 2 ['H2-O', 'H']\n", - "list1 15 ['H2-C-O', 'C-O2', 'H2-C', 'H2-O', 'H2-C', 'H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C-O', 'C-O2', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 131 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-O', 'H']\n", - " \n", - "Fragments to allocate: 3 4 out of 14 9\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H2-O', 'H2-C-O', 'C-O2', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-O', 'H2-C-O', 'C-O2', 'H2-C', 'H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 132 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 3 5 out of 14 9\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H2-C', 'H2-O', 'H2-C-O', 'C-O2', 'H2-C', 'H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H2-O', 'H2-C-O', 'H2-C', 'H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 133 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 3 6 out of 14 9\n", - "sublist 2 ['H2-C-O', 'H']\n", - "list1 15 ['C-O2', 'H2-C', 'H2-O', 'H2-C-O', 'H2-C', 'H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H2-C', 'H2-O', 'H2-C', 'H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 134 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C-O', 'H']\n", - " \n", - "Fragments to allocate: 3 7 out of 14 9\n", - "sublist 2 ['H2-O', 'H']\n", - "list1 15 ['H2-C-O', 'C-O2', 'H2-C', 'H2-O', 'H2-C', 'H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C-O', 'C-O2', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 135 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-O', 'H']\n", - " \n", - "Fragments to allocate: 3 8 out of 14 9\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H2-O', 'H2-C-O', 'C-O2', 'H2-C', 'H2-C', 'H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-O', 'H2-C-O', 'C-O2', 'H2-C', 'H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 136 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 3 9 out of 14 9\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H2-C', 'H2-O', 'H2-C-O', 'C-O2', 'H2-C', 'H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H2-O', 'H2-C-O', 'H2-C', 'H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 137 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 4 0 out of 14 9\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['C-O2', 'H2-C', 'H2-O', 'H2-C-O', 'H2-C', 'H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H2-C', 'H2-O', 'H2-C-O', 'H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 138 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 4 1 out of 14 9\n", - "sublist 2 ['H2-C-O', 'H']\n", - "list1 15 ['H2-C', 'C-O2', 'H2-C', 'H2-O', 'H2-C-O', 'H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'C-O2', 'H2-C', 'H2-O', 'H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 139 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C-O', 'H']\n", - " \n", - "Fragments to allocate: 4 2 out of 14 9\n", - "sublist 2 ['H2-O', 'H']\n", - "list1 15 ['H2-C-O', 'H2-C', 'C-O2', 'H2-C', 'H2-O', 'H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C-O', 'H2-C', 'C-O2', 'H2-C', 'H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 140 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-O', 'H']\n", - " \n", - "Fragments to allocate: 4 3 out of 14 9\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H2-O', 'H2-C-O', 'H2-C', 'C-O2', 'H2-C', 'H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-O', 'H2-C-O', 'H2-C', 'C-O2', 'H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 141 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 4 4 out of 14 9\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H2-C', 'H2-O', 'H2-C-O', 'H2-C', 'C-O2', 'H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H2-O', 'H2-C-O', 'H2-C', 'H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 142 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 4 5 out of 14 9\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['C-O2', 'H2-C', 'H2-O', 'H2-C-O', 'H2-C', 'H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H2-C', 'H2-O', 'H2-C-O', 'H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 143 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 4 6 out of 14 9\n", - "sublist 2 ['H2-C-O', 'H']\n", - "list1 15 ['H2-C', 'C-O2', 'H2-C', 'H2-O', 'H2-C-O', 'H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'C-O2', 'H2-C', 'H2-O', 'H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 144 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C-O', 'H']\n", - " \n", - "Fragments to allocate: 4 7 out of 14 9\n", - "sublist 2 ['H2-O', 'H']\n", - "list1 15 ['H2-C-O', 'H2-C', 'C-O2', 'H2-C', 'H2-O', 'H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C-O', 'H2-C', 'C-O2', 'H2-C', 'H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 145 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-O', 'H']\n", - " \n", - "Fragments to allocate: 4 8 out of 14 9\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H2-O', 'H2-C-O', 'H2-C', 'C-O2', 'H2-C', 'H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-O', 'H2-C-O', 'H2-C', 'C-O2', 'H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 146 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 4 9 out of 14 9\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H2-C', 'H2-O', 'H2-C-O', 'H2-C', 'C-O2', 'H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H2-O', 'H2-C-O', 'H2-C', 'H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 147 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 5 0 out of 14 9\n", - "sublist 2 ['H-C-O', 'H']\n", - "list1 15 ['C-O2', 'H2-C', 'H2-O', 'H2-C-O', 'H2-C', 'H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H2-C', 'H2-O', 'H2-C-O', 'H2-C', 'C-O2', 'H2-C', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 148 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-C-O', 'H']\n", - " \n", - "Fragments to allocate: 5 1 out of 14 9\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H-C-O', 'C-O2', 'H2-C', 'H2-O', 'H2-C-O', 'H2-C', 'C-O2', 'H2-C', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-C-O', 'C-O2', 'H2-C', 'H2-O', 'H2-C-O', 'C-O2', 'H2-C', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 149 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 5 2 out of 14 9\n", - "sublist 2 ['H2-C-O', 'H']\n", - "list1 15 ['H2-C', 'H-C-O', 'C-O2', 'H2-C', 'H2-O', 'H2-C-O', 'C-O2', 'H2-C', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H-C-O', 'C-O2', 'H2-C', 'H2-O', 'C-O2', 'H2-C', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 150 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C-O', 'H']\n", - " \n", - "Fragments to allocate: 5 3 out of 14 9\n", - "sublist 2 ['H2-O', 'H']\n", - "list1 15 ['H2-C-O', 'H2-C', 'H-C-O', 'C-O2', 'H2-C', 'H2-O', 'C-O2', 'H2-C', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C-O', 'H2-C', 'H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H2-C', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 151 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-O', 'H']\n", - " \n", - "Fragments to allocate: 5 4 out of 14 9\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H2-O', 'H2-C-O', 'H2-C', 'H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H2-C', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-O', 'H2-C-O', 'H2-C', 'H-C-O', 'C-O2', 'C-O2', 'H2-C', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 152 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 5 5 out of 14 9\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H2-C', 'H2-O', 'H2-C-O', 'H2-C', 'H-C-O', 'C-O2', 'C-O2', 'H2-C', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H2-O', 'H2-C-O', 'H2-C', 'H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 153 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 5 6 out of 14 9\n", - "sublist 2 ['H-C-O', 'H']\n", - "list1 15 ['C-O2', 'H2-C', 'H2-O', 'H2-C-O', 'H2-C', 'H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H2-C', 'H2-O', 'H2-C-O', 'H2-C', 'C-O2', 'H2-C', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 154 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-C-O', 'H']\n", - " \n", - "Fragments to allocate: 5 7 out of 14 9\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H-C-O', 'C-O2', 'H2-C', 'H2-O', 'H2-C-O', 'H2-C', 'C-O2', 'H2-C', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-C-O', 'C-O2', 'H2-C', 'H2-O', 'H2-C-O', 'C-O2', 'H2-C', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 155 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 5 8 out of 14 9\n", - "sublist 2 ['H2-C-O', 'H']\n", - "list1 15 ['H2-C', 'H-C-O', 'C-O2', 'H2-C', 'H2-O', 'H2-C-O', 'C-O2', 'H2-C', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H-C-O', 'C-O2', 'H2-C', 'H2-O', 'C-O2', 'H2-C', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 156 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C-O', 'H']\n", - " \n", - "Fragments to allocate: 5 9 out of 14 9\n", - "sublist 2 ['H2-O', 'H']\n", - "list1 15 ['H2-C-O', 'H2-C', 'H-C-O', 'C-O2', 'H2-C', 'H2-O', 'C-O2', 'H2-C', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C-O', 'H2-C', 'H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H2-C', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 157 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-O', 'H']\n", - " \n", - "Fragments to allocate: 6 0 out of 14 9\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H2-O', 'H2-C-O', 'H2-C', 'H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H2-C', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-O', 'H2-C-O', 'H2-C', 'H-C-O', 'C-O2', 'H2-C', 'H2-C', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 158 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 6 1 out of 14 9\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['C-O2', 'H2-O', 'H2-C-O', 'H2-C', 'H-C-O', 'C-O2', 'H2-C', 'H2-C', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H2-O', 'H2-C-O', 'H2-C', 'H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 159 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 6 2 out of 14 9\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H2-C', 'C-O2', 'H2-O', 'H2-C-O', 'H2-C', 'H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'C-O2', 'H2-O', 'H2-C-O', 'H2-C', 'H-C-O', 'H2-C', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 160 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 6 3 out of 14 9\n", - "sublist 2 ['H-C-O', 'H']\n", - "list1 15 ['C-O2', 'H2-C', 'C-O2', 'H2-O', 'H2-C-O', 'H2-C', 'H-C-O', 'H2-C', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H2-C', 'C-O2', 'H2-O', 'H2-C-O', 'H2-C', 'H2-C', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 161 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-C-O', 'H']\n", - " \n", - "Fragments to allocate: 6 4 out of 14 9\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H2-O', 'H2-C-O', 'H2-C', 'H2-C', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H2-O', 'H2-C-O', 'H2-C', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 162 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 6 5 out of 14 9\n", - "sublist 2 ['H2-C-O', 'H']\n", - "list1 15 ['H2-C', 'H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H2-O', 'H2-C-O', 'H2-C', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H2-O', 'H2-C', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 163 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C-O', 'H']\n", - " \n", - "Fragments to allocate: 6 6 out of 14 9\n", - "sublist 2 ['H2-O', 'H']\n", - "list1 15 ['H2-C-O', 'H2-C', 'H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H2-O', 'H2-C', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C-O', 'H2-C', 'H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H2-C', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 164 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-O', 'H']\n", - " \n", - "Fragments to allocate: 6 7 out of 14 9\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H2-O', 'H2-C-O', 'H2-C', 'H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H2-C', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-O', 'H2-C-O', 'H2-C', 'H-C-O', 'C-O2', 'H2-C', 'H2-C', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 165 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 6 8 out of 14 9\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['C-O2', 'H2-O', 'H2-C-O', 'H2-C', 'H-C-O', 'C-O2', 'H2-C', 'H2-C', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H2-O', 'H2-C-O', 'H2-C', 'H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 166 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 6 9 out of 14 9\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H2-C', 'C-O2', 'H2-O', 'H2-C-O', 'H2-C', 'H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'C-O2', 'H2-O', 'H2-C-O', 'H2-C', 'H-C-O', 'H2-C', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 167 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 7 0 out of 14 9\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['C-O2', 'H2-C', 'C-O2', 'H2-O', 'H2-C-O', 'H2-C', 'H-C-O', 'H2-C', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H2-C', 'C-O2', 'H2-O', 'H2-C-O', 'H2-C', 'H-C-O', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 168 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 7 1 out of 14 9\n", - "sublist 2 ['H-C-O', 'H']\n", - "list1 15 ['H2-C', 'C-O2', 'H2-C', 'C-O2', 'H2-O', 'H2-C-O', 'H2-C', 'H-C-O', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'C-O2', 'H2-C', 'C-O2', 'H2-O', 'H2-C-O', 'H2-C', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 169 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-C-O', 'H']\n", - " \n", - "Fragments to allocate: 7 2 out of 14 9\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H-C-O', 'H2-C', 'C-O2', 'H2-C', 'C-O2', 'H2-O', 'H2-C-O', 'H2-C', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-C-O', 'H2-C', 'C-O2', 'H2-C', 'C-O2', 'H2-O', 'H2-C-O', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 170 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 7 3 out of 14 9\n", - "sublist 2 ['H2-C-O', 'H']\n", - "list1 15 ['H2-C', 'H-C-O', 'H2-C', 'C-O2', 'H2-C', 'C-O2', 'H2-O', 'H2-C-O', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H-C-O', 'H2-C', 'C-O2', 'H2-C', 'C-O2', 'H2-O', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 171 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C-O', 'H']\n", - " \n", - "Fragments to allocate: 7 4 out of 14 9\n", - "sublist 2 ['H2-O', 'H']\n", - "list1 15 ['H2-C-O', 'H2-C', 'H-C-O', 'H2-C', 'C-O2', 'H2-C', 'C-O2', 'H2-O', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C-O', 'H2-C', 'H-C-O', 'H2-C', 'C-O2', 'H2-C', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 172 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-O', 'H']\n", - " \n", - "Fragments to allocate: 7 5 out of 14 9\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H2-O', 'H2-C-O', 'H2-C', 'H-C-O', 'H2-C', 'C-O2', 'H2-C', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-O', 'H2-C-O', 'H2-C', 'H-C-O', 'H2-C', 'C-O2', 'H2-C', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 173 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 7 6 out of 14 9\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['C-O2', 'H2-O', 'H2-C-O', 'H2-C', 'H-C-O', 'H2-C', 'C-O2', 'H2-C', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H2-O', 'H2-C-O', 'H2-C', 'H-C-O', 'H2-C', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 174 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 7 7 out of 14 9\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H2-C', 'C-O2', 'H2-O', 'H2-C-O', 'H2-C', 'H-C-O', 'H2-C', 'C-O2', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'C-O2', 'H2-O', 'H2-C-O', 'H2-C', 'H-C-O', 'H2-C', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 175 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 7 8 out of 14 9\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['C-O2', 'H2-C', 'C-O2', 'H2-O', 'H2-C-O', 'H2-C', 'H-C-O', 'H2-C', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H2-C', 'C-O2', 'H2-O', 'H2-C-O', 'H2-C', 'H-C-O', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 176 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 7 9 out of 14 9\n", - "sublist 2 ['H-C-O', 'H']\n", - "list1 15 ['H2-C', 'C-O2', 'H2-C', 'C-O2', 'H2-O', 'H2-C-O', 'H2-C', 'H-C-O', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'C-O2', 'H2-C', 'C-O2', 'H2-O', 'H2-C-O', 'H2-C', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 177 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-C-O', 'H']\n", - " \n", - "Fragments to allocate: 8 0 out of 14 9\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H-C-O', 'H2-C', 'C-O2', 'H2-C', 'C-O2', 'H2-O', 'H2-C-O', 'H2-C', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-C-O', 'H2-C', 'C-O2', 'H2-C', 'C-O2', 'H2-O', 'H2-C-O', 'H2-C', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 178 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 8 1 out of 14 9\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['C-O2', 'H-C-O', 'H2-C', 'C-O2', 'H2-C', 'C-O2', 'H2-O', 'H2-C-O', 'H2-C', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H-C-O', 'H2-C', 'C-O2', 'H2-C', 'C-O2', 'H2-O', 'H2-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 179 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 8 2 out of 14 9\n", - "sublist 2 ['H2-C-O', 'H']\n", - "list1 15 ['H2-C', 'C-O2', 'H-C-O', 'H2-C', 'C-O2', 'H2-C', 'C-O2', 'H2-O', 'H2-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'C-O2', 'H-C-O', 'H2-C', 'C-O2', 'H2-C', 'C-O2', 'H2-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 180 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C-O', 'H']\n", - " \n", - "Fragments to allocate: 8 3 out of 14 9\n", - "sublist 2 ['H2-O', 'H']\n", - "list1 15 ['H2-C-O', 'H2-C', 'C-O2', 'H-C-O', 'H2-C', 'C-O2', 'H2-C', 'C-O2', 'H2-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C-O', 'H2-C', 'C-O2', 'H-C-O', 'H2-C', 'C-O2', 'H2-C', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 181 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-O', 'H']\n", - " \n", - "Fragments to allocate: 8 4 out of 14 9\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H2-O', 'H2-C-O', 'H2-C', 'C-O2', 'H-C-O', 'H2-C', 'C-O2', 'H2-C', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-O', 'H2-C-O', 'H2-C', 'C-O2', 'H-C-O', 'H2-C', 'C-O2', 'H2-C', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 182 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 8 5 out of 14 9\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['C-O2', 'H2-O', 'H2-C-O', 'H2-C', 'C-O2', 'H-C-O', 'H2-C', 'C-O2', 'H2-C', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H2-O', 'H2-C-O', 'H2-C', 'C-O2', 'H-C-O', 'H2-C', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 183 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 8 6 out of 14 9\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H2-C', 'C-O2', 'H2-O', 'H2-C-O', 'H2-C', 'C-O2', 'H-C-O', 'H2-C', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'C-O2', 'H2-O', 'H2-C-O', 'H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 184 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 8 7 out of 14 9\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['C-O2', 'H2-C', 'C-O2', 'H2-O', 'H2-C-O', 'H2-C', 'C-O2', 'H-C-O', 'H2-C', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H2-C', 'C-O2', 'H2-O', 'H2-C-O', 'H2-C', 'C-O2', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 185 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 8 8 out of 14 9\n", - "sublist 2 ['H-C-O', 'H']\n", - "list1 15 ['H2-C', 'C-O2', 'H2-C', 'C-O2', 'H2-O', 'H2-C-O', 'H2-C', 'C-O2', 'H-C-O', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'C-O2', 'H2-C', 'C-O2', 'H2-O', 'H2-C-O', 'H2-C', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 186 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-C-O', 'H']\n", - " \n", - "Fragments to allocate: 8 9 out of 14 9\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H-C-O', 'H2-C', 'C-O2', 'H2-C', 'C-O2', 'H2-O', 'H2-C-O', 'H2-C', 'C-O2', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-C-O', 'H2-C', 'C-O2', 'H2-C', 'C-O2', 'H2-O', 'H2-C-O', 'H2-C', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 187 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 9 0 out of 14 9\n", - "sublist 2 ['H3-C2', 'H']\n", - "list1 15 ['C-O2', 'H-C-O', 'H2-C', 'C-O2', 'H2-C', 'C-O2', 'H2-O', 'H2-C-O', 'H2-C', 'H3-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H-C-O', 'H2-C', 'C-O2', 'H2-C', 'C-O2', 'H2-O', 'H2-C-O', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 188 with 15 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 1\n", - "SPILT_SPECIES: Laplacian lap=array([[-3, 1, 1, 1, 0, 0],\n", - " [ 1, -1, 0, 0, 0, 0],\n", - " [ 1, 0, -1, 0, 0, 0],\n", - " [ 1, 0, 0, -3, 1, 1],\n", - " [ 0, 0, 0, 1, -1, 0],\n", - " [ 0, 0, 0, 1, 0, -1]])\n", - "SPILT_SPECIES: graph=<6x6 sparse matrix of type ''\n", - "\twith 16 stored elements in Compressed Sparse Row format>\n", - "COMBINE. received molecule: ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 6\n", - " Formula = H4-C2\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - " from merge fragments\n", - "COMBINE: Fragment H4-C2 added to avglist\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 1 ['H4-C2']\n", - "SEQUENTIAL: badlist 0 []\n", - " \n", - "Fragments to allocate: 0 1 out of 14 8\n", - "sublist 2 ['H4-C2', 'H']\n", - "list1 15 ['H4-C2', 'C-O2', 'H-C-O', 'H2-C', 'C-O2', 'H2-C', 'C-O2', 'H2-O', 'H2-C-O', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H-C-O', 'H2-C', 'C-O2', 'H2-C', 'C-O2', 'H2-O', 'H2-C-O', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 8 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 189 with 15 and 9 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H4-C2', 'H']\n", - " \n", - "Fragments to allocate: 0 2 out of 14 8\n", - "sublist 2 ['H4-C2', 'H']\n", - "list1 15 ['H4-C2', 'C-O2', 'H-C-O', 'H2-C', 'C-O2', 'H2-C', 'C-O2', 'H2-O', 'H2-C-O', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H-C-O', 'H2-C', 'C-O2', 'H2-C', 'C-O2', 'H2-O', 'H2-C-O', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 8 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 190 with 15 and 9 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H4-C2', 'H']\n", - " \n", - "Fragments to allocate: 0 3 out of 14 8\n", - "sublist 2 ['H4-C2', 'H']\n", - "list1 15 ['H4-C2', 'C-O2', 'H-C-O', 'H2-C', 'C-O2', 'H2-C', 'C-O2', 'H2-O', 'H2-C-O', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H-C-O', 'H2-C', 'C-O2', 'H2-C', 'C-O2', 'H2-O', 'H2-C-O', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 8 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 191 with 15 and 9 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H4-C2', 'H']\n", - " \n", - "Fragments to allocate: 0 4 out of 14 8\n", - "sublist 2 ['H4-C2', 'H']\n", - "list1 15 ['H4-C2', 'C-O2', 'H-C-O', 'H2-C', 'C-O2', 'H2-C', 'C-O2', 'H2-O', 'H2-C-O', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H-C-O', 'H2-C', 'C-O2', 'H2-C', 'C-O2', 'H2-O', 'H2-C-O', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 8 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 192 with 15 and 9 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H4-C2', 'H']\n", - " \n", - "Fragments to allocate: 0 5 out of 14 8\n", - "sublist 2 ['H4-C2', 'H']\n", - "list1 15 ['H4-C2', 'C-O2', 'H-C-O', 'H2-C', 'C-O2', 'H2-C', 'C-O2', 'H2-O', 'H2-C-O', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H-C-O', 'H2-C', 'C-O2', 'H2-C', 'C-O2', 'H2-O', 'H2-C-O', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 8 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 193 with 15 and 9 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H4-C2', 'H']\n", - " \n", - "Fragments to allocate: 0 6 out of 14 8\n", - "sublist 2 ['H4-C2', 'H']\n", - "list1 15 ['H4-C2', 'C-O2', 'H-C-O', 'H2-C', 'C-O2', 'H2-C', 'C-O2', 'H2-O', 'H2-C-O', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H-C-O', 'H2-C', 'C-O2', 'H2-C', 'C-O2', 'H2-O', 'H2-C-O', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 8 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 194 with 15 and 9 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H4-C2', 'H']\n", - " \n", - "Fragments to allocate: 0 7 out of 14 8\n", - "sublist 2 ['H4-C2', 'H']\n", - "list1 15 ['H4-C2', 'C-O2', 'H-C-O', 'H2-C', 'C-O2', 'H2-C', 'C-O2', 'H2-O', 'H2-C-O', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H-C-O', 'H2-C', 'C-O2', 'H2-C', 'C-O2', 'H2-O', 'H2-C-O', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 8 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 195 with 15 and 9 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H4-C2', 'H']\n", - " \n", - "Fragments to allocate: 0 8 out of 14 8\n", - "sublist 2 ['H4-C2', 'H']\n", - "list1 15 ['H4-C2', 'C-O2', 'H-C-O', 'H2-C', 'C-O2', 'H2-C', 'C-O2', 'H2-O', 'H2-C-O', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H-C-O', 'H2-C', 'C-O2', 'H2-C', 'C-O2', 'H2-O', 'H2-C-O', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 8 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 196 with 15 and 9 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H4-C2', 'H']\n", - " \n", - "Fragments to allocate: 1 0 out of 14 8\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H4-C2', 'C-O2', 'H-C-O', 'H2-C', 'C-O2', 'H2-C', 'C-O2', 'H2-O', 'H2-C-O', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H4-C2', 'H-C-O', 'H2-C', 'C-O2', 'H2-C', 'C-O2', 'H2-O', 'H2-C-O', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 8 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 197 with 15 and 9 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 1 1 out of 14 8\n", - "sublist 2 ['H4-C2', 'H']\n", - "list1 15 ['C-O2', 'H4-C2', 'H-C-O', 'H2-C', 'C-O2', 'H2-C', 'C-O2', 'H2-O', 'H2-C-O', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H-C-O', 'H2-C', 'C-O2', 'H2-C', 'C-O2', 'H2-O', 'H2-C-O', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 8 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 198 with 15 and 9 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H4-C2', 'H']\n", - " \n", - "Fragments to allocate: 1 2 out of 14 8\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H4-C2', 'C-O2', 'H-C-O', 'H2-C', 'C-O2', 'H2-C', 'C-O2', 'H2-O', 'H2-C-O', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H4-C2', 'H-C-O', 'H2-C', 'C-O2', 'H2-C', 'C-O2', 'H2-O', 'H2-C-O', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 8 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 199 with 15 and 9 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 1 3 out of 14 8\n", - "sublist 2 ['H4-C2', 'H']\n", - "list1 15 ['C-O2', 'H4-C2', 'H-C-O', 'H2-C', 'C-O2', 'H2-C', 'C-O2', 'H2-O', 'H2-C-O', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H-C-O', 'H2-C', 'C-O2', 'H2-C', 'C-O2', 'H2-O', 'H2-C-O', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 8 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 200 with 15 and 9 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H4-C2', 'H']\n", - " \n", - "Fragments to allocate: 1 4 out of 14 8\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H4-C2', 'C-O2', 'H-C-O', 'H2-C', 'C-O2', 'H2-C', 'C-O2', 'H2-O', 'H2-C-O', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H4-C2', 'H-C-O', 'H2-C', 'C-O2', 'H2-C', 'C-O2', 'H2-O', 'H2-C-O', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 8 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 201 with 15 and 9 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 1 5 out of 14 8\n", - "sublist 2 ['H4-C2', 'H']\n", - "list1 15 ['C-O2', 'H4-C2', 'H-C-O', 'H2-C', 'C-O2', 'H2-C', 'C-O2', 'H2-O', 'H2-C-O', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H-C-O', 'H2-C', 'C-O2', 'H2-C', 'C-O2', 'H2-O', 'H2-C-O', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 8 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 202 with 15 and 9 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H4-C2', 'H']\n", - " \n", - "Fragments to allocate: 1 6 out of 14 8\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H4-C2', 'C-O2', 'H-C-O', 'H2-C', 'C-O2', 'H2-C', 'C-O2', 'H2-O', 'H2-C-O', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H4-C2', 'H-C-O', 'H2-C', 'C-O2', 'H2-C', 'C-O2', 'H2-O', 'H2-C-O', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 8 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 203 with 15 and 9 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 1 7 out of 14 8\n", - "sublist 2 ['H4-C2', 'H']\n", - "list1 15 ['C-O2', 'H4-C2', 'H-C-O', 'H2-C', 'C-O2', 'H2-C', 'C-O2', 'H2-O', 'H2-C-O', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H-C-O', 'H2-C', 'C-O2', 'H2-C', 'C-O2', 'H2-O', 'H2-C-O', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 8 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 204 with 15 and 9 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H4-C2', 'H']\n", - " \n", - "Fragments to allocate: 1 8 out of 14 8\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H4-C2', 'C-O2', 'H-C-O', 'H2-C', 'C-O2', 'H2-C', 'C-O2', 'H2-O', 'H2-C-O', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H4-C2', 'H-C-O', 'H2-C', 'C-O2', 'H2-C', 'C-O2', 'H2-O', 'H2-C-O', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 8 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 205 with 15 and 9 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 2 0 out of 14 8\n", - "sublist 2 ['H-C-O', 'H']\n", - "list1 15 ['C-O2', 'H4-C2', 'H-C-O', 'H2-C', 'C-O2', 'H2-C', 'C-O2', 'H2-O', 'H2-C-O', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H4-C2', 'H2-C', 'C-O2', 'H2-C', 'C-O2', 'H2-O', 'H2-C-O', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 8 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 206 with 15 and 9 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-C-O', 'H']\n", - " \n", - "Fragments to allocate: 2 1 out of 14 8\n", - "sublist 2 ['H4-C2', 'H']\n", - "list1 15 ['H-C-O', 'C-O2', 'H4-C2', 'H2-C', 'C-O2', 'H2-C', 'C-O2', 'H2-O', 'H2-C-O', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H2-C', 'C-O2', 'H2-O', 'H2-C-O', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 8 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 207 with 15 and 9 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H4-C2', 'H']\n", - " \n", - "Fragments to allocate: 2 2 out of 14 8\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H4-C2', 'H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H2-C', 'C-O2', 'H2-O', 'H2-C-O', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H4-C2', 'H-C-O', 'H2-C', 'C-O2', 'H2-C', 'C-O2', 'H2-O', 'H2-C-O', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 8 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 208 with 15 and 9 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 2 3 out of 14 8\n", - "sublist 2 ['H-C-O', 'H']\n", - "list1 15 ['C-O2', 'H4-C2', 'H-C-O', 'H2-C', 'C-O2', 'H2-C', 'C-O2', 'H2-O', 'H2-C-O', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H4-C2', 'H2-C', 'C-O2', 'H2-C', 'C-O2', 'H2-O', 'H2-C-O', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 8 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 209 with 15 and 9 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-C-O', 'H']\n", - " \n", - "Fragments to allocate: 2 4 out of 14 8\n", - "sublist 2 ['H4-C2', 'H']\n", - "list1 15 ['H-C-O', 'C-O2', 'H4-C2', 'H2-C', 'C-O2', 'H2-C', 'C-O2', 'H2-O', 'H2-C-O', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H2-C', 'C-O2', 'H2-O', 'H2-C-O', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 8 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 210 with 15 and 9 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H4-C2', 'H']\n", - " \n", - "Fragments to allocate: 2 5 out of 14 8\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H4-C2', 'H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H2-C', 'C-O2', 'H2-O', 'H2-C-O', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H4-C2', 'H-C-O', 'H2-C', 'C-O2', 'H2-C', 'C-O2', 'H2-O', 'H2-C-O', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 8 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 211 with 15 and 9 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 2 6 out of 14 8\n", - "sublist 2 ['H-C-O', 'H']\n", - "list1 15 ['C-O2', 'H4-C2', 'H-C-O', 'H2-C', 'C-O2', 'H2-C', 'C-O2', 'H2-O', 'H2-C-O', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H4-C2', 'H2-C', 'C-O2', 'H2-C', 'C-O2', 'H2-O', 'H2-C-O', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 8 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 212 with 15 and 9 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-C-O', 'H']\n", - " \n", - "Fragments to allocate: 2 7 out of 14 8\n", - "sublist 2 ['H4-C2', 'H']\n", - "list1 15 ['H-C-O', 'C-O2', 'H4-C2', 'H2-C', 'C-O2', 'H2-C', 'C-O2', 'H2-O', 'H2-C-O', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H2-C', 'C-O2', 'H2-O', 'H2-C-O', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 8 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 213 with 15 and 9 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H4-C2', 'H']\n", - " \n", - "Fragments to allocate: 2 8 out of 14 8\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H4-C2', 'H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H2-C', 'C-O2', 'H2-O', 'H2-C-O', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H4-C2', 'H-C-O', 'H2-C', 'C-O2', 'H2-C', 'C-O2', 'H2-O', 'H2-C-O', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 8 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 214 with 15 and 9 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 3 0 out of 14 8\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['C-O2', 'H4-C2', 'H-C-O', 'H2-C', 'C-O2', 'H2-C', 'C-O2', 'H2-O', 'H2-C-O', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H4-C2', 'H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H2-O', 'H2-C-O', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 8 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 215 with 15 and 9 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 3 1 out of 14 8\n", - "sublist 2 ['H-C-O', 'H']\n", - "list1 15 ['H2-C', 'C-O2', 'H4-C2', 'H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H2-O', 'H2-C-O', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'C-O2', 'H4-C2', 'C-O2', 'H2-C', 'C-O2', 'H2-O', 'H2-C-O', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 8 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 216 with 15 and 9 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-C-O', 'H']\n", - " \n", - "Fragments to allocate: 3 2 out of 14 8\n", - "sublist 2 ['H4-C2', 'H']\n", - "list1 15 ['H-C-O', 'H2-C', 'C-O2', 'H4-C2', 'C-O2', 'H2-C', 'C-O2', 'H2-O', 'H2-C-O', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-C-O', 'H2-C', 'C-O2', 'C-O2', 'H2-C', 'C-O2', 'H2-O', 'H2-C-O', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 8 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 217 with 15 and 9 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H4-C2', 'H']\n", - " \n", - "Fragments to allocate: 3 3 out of 14 8\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H4-C2', 'H-C-O', 'H2-C', 'C-O2', 'C-O2', 'H2-C', 'C-O2', 'H2-O', 'H2-C-O', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H4-C2', 'H-C-O', 'H2-C', 'C-O2', 'H2-C', 'C-O2', 'H2-O', 'H2-C-O', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 8 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 218 with 15 and 9 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 3 4 out of 14 8\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['C-O2', 'H4-C2', 'H-C-O', 'H2-C', 'C-O2', 'H2-C', 'C-O2', 'H2-O', 'H2-C-O', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H4-C2', 'H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H2-O', 'H2-C-O', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 8 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 219 with 15 and 9 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 3 5 out of 14 8\n", - "sublist 2 ['H-C-O', 'H']\n", - "list1 15 ['H2-C', 'C-O2', 'H4-C2', 'H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H2-O', 'H2-C-O', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'C-O2', 'H4-C2', 'C-O2', 'H2-C', 'C-O2', 'H2-O', 'H2-C-O', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 8 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 220 with 15 and 9 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-C-O', 'H']\n", - " \n", - "Fragments to allocate: 3 6 out of 14 8\n", - "sublist 2 ['H4-C2', 'H']\n", - "list1 15 ['H-C-O', 'H2-C', 'C-O2', 'H4-C2', 'C-O2', 'H2-C', 'C-O2', 'H2-O', 'H2-C-O', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-C-O', 'H2-C', 'C-O2', 'C-O2', 'H2-C', 'C-O2', 'H2-O', 'H2-C-O', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 8 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 221 with 15 and 9 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H4-C2', 'H']\n", - " \n", - "Fragments to allocate: 3 7 out of 14 8\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H4-C2', 'H-C-O', 'H2-C', 'C-O2', 'C-O2', 'H2-C', 'C-O2', 'H2-O', 'H2-C-O', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H4-C2', 'H-C-O', 'H2-C', 'C-O2', 'H2-C', 'C-O2', 'H2-O', 'H2-C-O', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 8 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 222 with 15 and 9 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 3 8 out of 14 8\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['C-O2', 'H4-C2', 'H-C-O', 'H2-C', 'C-O2', 'H2-C', 'C-O2', 'H2-O', 'H2-C-O', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H4-C2', 'H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H2-O', 'H2-C-O', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 8 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 223 with 15 and 9 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 4 0 out of 14 8\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H2-C', 'C-O2', 'H4-C2', 'H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H2-O', 'H2-C-O', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'C-O2', 'H4-C2', 'H-C-O', 'H2-C', 'C-O2', 'H2-O', 'H2-C-O', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 8 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 224 with 15 and 9 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 4 1 out of 14 8\n", - "sublist 2 ['H-C-O', 'H']\n", - "list1 15 ['C-O2', 'H2-C', 'C-O2', 'H4-C2', 'H-C-O', 'H2-C', 'C-O2', 'H2-O', 'H2-C-O', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H2-C', 'C-O2', 'H4-C2', 'H2-C', 'C-O2', 'H2-O', 'H2-C-O', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 8 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 225 with 15 and 9 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-C-O', 'H']\n", - " \n", - "Fragments to allocate: 4 2 out of 14 8\n", - "sublist 2 ['H4-C2', 'H']\n", - "list1 15 ['H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H4-C2', 'H2-C', 'C-O2', 'H2-O', 'H2-C-O', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H2-C', 'C-O2', 'H2-O', 'H2-C-O', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 8 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 226 with 15 and 9 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H4-C2', 'H']\n", - " \n", - "Fragments to allocate: 4 3 out of 14 8\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H4-C2', 'H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H2-C', 'C-O2', 'H2-O', 'H2-C-O', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H4-C2', 'H-C-O', 'C-O2', 'H2-C', 'H2-C', 'C-O2', 'H2-O', 'H2-C-O', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 8 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 227 with 15 and 9 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 4 4 out of 14 8\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['C-O2', 'H4-C2', 'H-C-O', 'C-O2', 'H2-C', 'H2-C', 'C-O2', 'H2-O', 'H2-C-O', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H4-C2', 'H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H2-O', 'H2-C-O', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 8 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 228 with 15 and 9 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 4 5 out of 14 8\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H2-C', 'C-O2', 'H4-C2', 'H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H2-O', 'H2-C-O', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'C-O2', 'H4-C2', 'H-C-O', 'H2-C', 'C-O2', 'H2-O', 'H2-C-O', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 8 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 229 with 15 and 9 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 4 6 out of 14 8\n", - "sublist 2 ['H-C-O', 'H']\n", - "list1 15 ['C-O2', 'H2-C', 'C-O2', 'H4-C2', 'H-C-O', 'H2-C', 'C-O2', 'H2-O', 'H2-C-O', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H2-C', 'C-O2', 'H4-C2', 'H2-C', 'C-O2', 'H2-O', 'H2-C-O', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 8 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 230 with 15 and 9 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-C-O', 'H']\n", - " \n", - "Fragments to allocate: 4 7 out of 14 8\n", - "sublist 2 ['H4-C2', 'H']\n", - "list1 15 ['H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H4-C2', 'H2-C', 'C-O2', 'H2-O', 'H2-C-O', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H2-C', 'C-O2', 'H2-O', 'H2-C-O', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 8 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 231 with 15 and 9 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H4-C2', 'H']\n", - " \n", - "Fragments to allocate: 4 8 out of 14 8\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H4-C2', 'H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H2-C', 'C-O2', 'H2-O', 'H2-C-O', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H4-C2', 'H-C-O', 'C-O2', 'H2-C', 'H2-C', 'C-O2', 'H2-O', 'H2-C-O', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 8 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 232 with 15 and 9 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 5 0 out of 14 8\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['C-O2', 'H4-C2', 'H-C-O', 'C-O2', 'H2-C', 'H2-C', 'C-O2', 'H2-O', 'H2-C-O', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H4-C2', 'H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H2-O', 'H2-C-O', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 8 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 233 with 15 and 9 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 5 1 out of 14 8\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H2-C', 'C-O2', 'H4-C2', 'H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H2-O', 'H2-C-O', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'C-O2', 'H4-C2', 'H-C-O', 'C-O2', 'C-O2', 'H2-O', 'H2-C-O', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 8 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 234 with 15 and 9 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 5 2 out of 14 8\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H2-C', 'H2-C', 'C-O2', 'H4-C2', 'H-C-O', 'C-O2', 'C-O2', 'H2-O', 'H2-C-O', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H2-C', 'C-O2', 'H4-C2', 'H-C-O', 'C-O2', 'H2-O', 'H2-C-O', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 8 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 235 with 15 and 9 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 5 3 out of 14 8\n", - "sublist 2 ['H-C-O', 'H']\n", - "list1 15 ['C-O2', 'H2-C', 'H2-C', 'C-O2', 'H4-C2', 'H-C-O', 'C-O2', 'H2-O', 'H2-C-O', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H2-C', 'H2-C', 'C-O2', 'H4-C2', 'C-O2', 'H2-O', 'H2-C-O', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 8 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 236 with 15 and 9 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-C-O', 'H']\n", - " \n", - "Fragments to allocate: 5 4 out of 14 8\n", - "sublist 2 ['H4-C2', 'H']\n", - "list1 15 ['H-C-O', 'C-O2', 'H2-C', 'H2-C', 'C-O2', 'H4-C2', 'C-O2', 'H2-O', 'H2-C-O', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-C-O', 'C-O2', 'H2-C', 'H2-C', 'C-O2', 'C-O2', 'H2-O', 'H2-C-O', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 8 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 237 with 15 and 9 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H4-C2', 'H']\n", - " \n", - "Fragments to allocate: 5 5 out of 14 8\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H4-C2', 'H-C-O', 'C-O2', 'H2-C', 'H2-C', 'C-O2', 'C-O2', 'H2-O', 'H2-C-O', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H4-C2', 'H-C-O', 'C-O2', 'H2-C', 'H2-C', 'C-O2', 'H2-O', 'H2-C-O', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 8 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 238 with 15 and 9 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 5 6 out of 14 8\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['C-O2', 'H4-C2', 'H-C-O', 'C-O2', 'H2-C', 'H2-C', 'C-O2', 'H2-O', 'H2-C-O', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H4-C2', 'H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H2-O', 'H2-C-O', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 8 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 239 with 15 and 9 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 5 7 out of 14 8\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H2-C', 'C-O2', 'H4-C2', 'H-C-O', 'C-O2', 'H2-C', 'C-O2', 'H2-O', 'H2-C-O', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'C-O2', 'H4-C2', 'H-C-O', 'C-O2', 'C-O2', 'H2-O', 'H2-C-O', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 8 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 240 with 15 and 9 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 5 8 out of 14 8\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H2-C', 'H2-C', 'C-O2', 'H4-C2', 'H-C-O', 'C-O2', 'C-O2', 'H2-O', 'H2-C-O', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H2-C', 'C-O2', 'H4-C2', 'H-C-O', 'C-O2', 'H2-O', 'H2-C-O', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 8 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 241 with 15 and 9 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 6 0 out of 14 8\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['C-O2', 'H2-C', 'H2-C', 'C-O2', 'H4-C2', 'H-C-O', 'C-O2', 'H2-O', 'H2-C-O', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H2-C', 'H2-C', 'C-O2', 'H4-C2', 'H-C-O', 'H2-O', 'H2-C-O', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 8 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 242 with 15 and 9 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 6 1 out of 14 8\n", - "sublist 2 ['H-C-O', 'H']\n", - "list1 15 ['C-O2', 'C-O2', 'H2-C', 'H2-C', 'C-O2', 'H4-C2', 'H-C-O', 'H2-O', 'H2-C-O', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'C-O2', 'H2-C', 'H2-C', 'C-O2', 'H4-C2', 'H2-O', 'H2-C-O', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 8 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 243 with 15 and 9 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-C-O', 'H']\n", - " \n", - "Fragments to allocate: 6 2 out of 14 8\n", - "sublist 2 ['H4-C2', 'H']\n", - "list1 15 ['H-C-O', 'C-O2', 'C-O2', 'H2-C', 'H2-C', 'C-O2', 'H4-C2', 'H2-O', 'H2-C-O', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-C-O', 'C-O2', 'C-O2', 'H2-C', 'H2-C', 'C-O2', 'H2-O', 'H2-C-O', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 8 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 244 with 15 and 9 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H4-C2', 'H']\n", - " \n", - "Fragments to allocate: 6 3 out of 14 8\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H4-C2', 'H-C-O', 'C-O2', 'C-O2', 'H2-C', 'H2-C', 'C-O2', 'H2-O', 'H2-C-O', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H4-C2', 'H-C-O', 'C-O2', 'C-O2', 'H2-C', 'H2-C', 'H2-O', 'H2-C-O', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 8 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 245 with 15 and 9 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 6 4 out of 14 8\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['C-O2', 'H4-C2', 'H-C-O', 'C-O2', 'C-O2', 'H2-C', 'H2-C', 'H2-O', 'H2-C-O', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H4-C2', 'H-C-O', 'C-O2', 'C-O2', 'H2-C', 'H2-O', 'H2-C-O', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 8 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 246 with 15 and 9 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 6 5 out of 14 8\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H2-C', 'C-O2', 'H4-C2', 'H-C-O', 'C-O2', 'C-O2', 'H2-C', 'H2-O', 'H2-C-O', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'C-O2', 'H4-C2', 'H-C-O', 'C-O2', 'C-O2', 'H2-O', 'H2-C-O', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 8 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 247 with 15 and 9 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 6 6 out of 14 8\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H2-C', 'H2-C', 'C-O2', 'H4-C2', 'H-C-O', 'C-O2', 'C-O2', 'H2-O', 'H2-C-O', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H2-C', 'C-O2', 'H4-C2', 'H-C-O', 'C-O2', 'H2-O', 'H2-C-O', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 8 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 248 with 15 and 9 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 6 7 out of 14 8\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['C-O2', 'H2-C', 'H2-C', 'C-O2', 'H4-C2', 'H-C-O', 'C-O2', 'H2-O', 'H2-C-O', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H2-C', 'H2-C', 'C-O2', 'H4-C2', 'H-C-O', 'H2-O', 'H2-C-O', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 8 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 249 with 15 and 9 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 6 8 out of 14 8\n", - "sublist 2 ['H-C-O', 'H']\n", - "list1 15 ['C-O2', 'C-O2', 'H2-C', 'H2-C', 'C-O2', 'H4-C2', 'H-C-O', 'H2-O', 'H2-C-O', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'C-O2', 'H2-C', 'H2-C', 'C-O2', 'H4-C2', 'H2-O', 'H2-C-O', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 8 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 250 with 15 and 9 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-C-O', 'H']\n", - " \n", - "Fragments to allocate: 7 0 out of 14 8\n", - "sublist 2 ['H2-O', 'H']\n", - "list1 15 ['H-C-O', 'C-O2', 'C-O2', 'H2-C', 'H2-C', 'C-O2', 'H4-C2', 'H2-O', 'H2-C-O', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-C-O', 'C-O2', 'C-O2', 'H2-C', 'H2-C', 'C-O2', 'H4-C2', 'H2-C-O', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 8 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 251 with 15 and 9 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-O', 'H']\n", - " \n", - "Fragments to allocate: 7 1 out of 14 8\n", - "sublist 2 ['H4-C2', 'H']\n", - "list1 15 ['H2-O', 'H-C-O', 'C-O2', 'C-O2', 'H2-C', 'H2-C', 'C-O2', 'H4-C2', 'H2-C-O', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-O', 'H-C-O', 'C-O2', 'C-O2', 'H2-C', 'H2-C', 'C-O2', 'H2-C-O', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 8 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 252 with 15 and 9 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H4-C2', 'H']\n", - " \n", - "Fragments to allocate: 7 2 out of 14 8\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H4-C2', 'H2-O', 'H-C-O', 'C-O2', 'C-O2', 'H2-C', 'H2-C', 'C-O2', 'H2-C-O', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H4-C2', 'H2-O', 'H-C-O', 'C-O2', 'C-O2', 'H2-C', 'H2-C', 'H2-C-O', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 8 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 253 with 15 and 9 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 7 3 out of 14 8\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['C-O2', 'H4-C2', 'H2-O', 'H-C-O', 'C-O2', 'C-O2', 'H2-C', 'H2-C', 'H2-C-O', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H4-C2', 'H2-O', 'H-C-O', 'C-O2', 'C-O2', 'H2-C', 'H2-C-O', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 8 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 254 with 15 and 9 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 7 4 out of 14 8\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H2-C', 'C-O2', 'H4-C2', 'H2-O', 'H-C-O', 'C-O2', 'C-O2', 'H2-C', 'H2-C-O', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'C-O2', 'H4-C2', 'H2-O', 'H-C-O', 'C-O2', 'C-O2', 'H2-C-O', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 8 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 255 with 15 and 9 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 7 5 out of 14 8\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H2-C', 'H2-C', 'C-O2', 'H4-C2', 'H2-O', 'H-C-O', 'C-O2', 'C-O2', 'H2-C-O', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H2-C', 'C-O2', 'H4-C2', 'H2-O', 'H-C-O', 'C-O2', 'H2-C-O', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 8 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 256 with 15 and 9 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 7 6 out of 14 8\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['C-O2', 'H2-C', 'H2-C', 'C-O2', 'H4-C2', 'H2-O', 'H-C-O', 'C-O2', 'H2-C-O', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H2-C', 'H2-C', 'C-O2', 'H4-C2', 'H2-O', 'H-C-O', 'H2-C-O', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 8 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 257 with 15 and 9 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 7 7 out of 14 8\n", - "sublist 2 ['H-C-O', 'H']\n", - "list1 15 ['C-O2', 'C-O2', 'H2-C', 'H2-C', 'C-O2', 'H4-C2', 'H2-O', 'H-C-O', 'H2-C-O', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'C-O2', 'H2-C', 'H2-C', 'C-O2', 'H4-C2', 'H2-O', 'H2-C-O', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 8 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 258 with 15 and 9 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-C-O', 'H']\n", - " \n", - "Fragments to allocate: 7 8 out of 14 8\n", - "sublist 2 ['H2-O', 'H']\n", - "list1 15 ['H-C-O', 'C-O2', 'C-O2', 'H2-C', 'H2-C', 'C-O2', 'H4-C2', 'H2-O', 'H2-C-O', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-C-O', 'C-O2', 'C-O2', 'H2-C', 'H2-C', 'C-O2', 'H4-C2', 'H2-C-O', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 8 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 259 with 15 and 9 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-O', 'H']\n", - " \n", - "Fragments to allocate: 8 0 out of 14 8\n", - "sublist 2 ['H2-C-O', 'H']\n", - "list1 15 ['H2-O', 'H-C-O', 'C-O2', 'C-O2', 'H2-C', 'H2-C', 'C-O2', 'H4-C2', 'H2-C-O', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-O', 'H-C-O', 'C-O2', 'C-O2', 'H2-C', 'H2-C', 'C-O2', 'H4-C2', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 8 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 260 with 15 and 9 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C-O', 'H']\n", - " \n", - "Fragments to allocate: 8 1 out of 14 8\n", - "sublist 2 ['H4-C2', 'H']\n", - "list1 15 ['H2-C-O', 'H2-O', 'H-C-O', 'C-O2', 'C-O2', 'H2-C', 'H2-C', 'C-O2', 'H4-C2', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C-O', 'H2-O', 'H-C-O', 'C-O2', 'C-O2', 'H2-C', 'H2-C', 'C-O2', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 8 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 261 with 15 and 9 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H4-C2', 'H']\n", - " \n", - "Fragments to allocate: 8 2 out of 14 8\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H4-C2', 'H2-C-O', 'H2-O', 'H-C-O', 'C-O2', 'C-O2', 'H2-C', 'H2-C', 'C-O2', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H4-C2', 'H2-C-O', 'H2-O', 'H-C-O', 'C-O2', 'C-O2', 'H2-C', 'H2-C', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 8 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 262 with 15 and 9 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 8 3 out of 14 8\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['C-O2', 'H4-C2', 'H2-C-O', 'H2-O', 'H-C-O', 'C-O2', 'C-O2', 'H2-C', 'H2-C', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H4-C2', 'H2-C-O', 'H2-O', 'H-C-O', 'C-O2', 'C-O2', 'H2-C', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 8 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 263 with 15 and 9 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 8 4 out of 14 8\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H2-C', 'C-O2', 'H4-C2', 'H2-C-O', 'H2-O', 'H-C-O', 'C-O2', 'C-O2', 'H2-C', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'C-O2', 'H4-C2', 'H2-C-O', 'H2-O', 'H-C-O', 'C-O2', 'C-O2', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 8 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 264 with 15 and 9 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 8 5 out of 14 8\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H2-C', 'H2-C', 'C-O2', 'H4-C2', 'H2-C-O', 'H2-O', 'H-C-O', 'C-O2', 'C-O2', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H2-C', 'C-O2', 'H4-C2', 'H2-C-O', 'H2-O', 'H-C-O', 'C-O2', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 8 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 265 with 15 and 9 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 8 6 out of 14 8\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['C-O2', 'H2-C', 'H2-C', 'C-O2', 'H4-C2', 'H2-C-O', 'H2-O', 'H-C-O', 'C-O2', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H2-C', 'H2-C', 'C-O2', 'H4-C2', 'H2-C-O', 'H2-O', 'H-C-O', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 8 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 266 with 15 and 9 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 8 7 out of 14 8\n", - "sublist 2 ['H-C-O', 'H']\n", - "list1 15 ['C-O2', 'C-O2', 'H2-C', 'H2-C', 'C-O2', 'H4-C2', 'H2-C-O', 'H2-O', 'H-C-O', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'C-O2', 'H2-C', 'H2-C', 'C-O2', 'H4-C2', 'H2-C-O', 'H2-O', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 8 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 267 with 15 and 9 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-C-O', 'H']\n", - " \n", - "Fragments to allocate: 8 8 out of 14 8\n", - "sublist 2 ['H2-O', 'H']\n", - "list1 15 ['H-C-O', 'C-O2', 'C-O2', 'H2-C', 'H2-C', 'C-O2', 'H4-C2', 'H2-C-O', 'H2-O', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-C-O', 'C-O2', 'C-O2', 'H2-C', 'H2-C', 'C-O2', 'H4-C2', 'H2-C-O', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 8 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 268 with 15 and 9 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-O', 'H']\n", - " \n", - "Fragments to allocate: 9 0 out of 14 8\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H2-O', 'H-C-O', 'C-O2', 'C-O2', 'H2-C', 'H2-C', 'C-O2', 'H4-C2', 'H2-C-O', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-O', 'H-C-O', 'C-O2', 'C-O2', 'H2-C', 'H2-C', 'C-O2', 'H4-C2', 'H2-C-O', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 8 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 269 with 15 and 9 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 9 1 out of 14 8\n", - "sublist 2 ['H2-C-O', 'H']\n", - "list1 15 ['H2-C', 'H2-O', 'H-C-O', 'C-O2', 'C-O2', 'H2-C', 'H2-C', 'C-O2', 'H4-C2', 'H2-C-O', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H2-O', 'H-C-O', 'C-O2', 'C-O2', 'H2-C', 'H2-C', 'C-O2', 'H4-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 8 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 270 with 15 and 9 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C-O', 'H']\n", - " \n", - "Fragments to allocate: 9 2 out of 14 8\n", - "sublist 2 ['H4-C2', 'H']\n", - "list1 15 ['H2-C-O', 'H2-C', 'H2-O', 'H-C-O', 'C-O2', 'C-O2', 'H2-C', 'H2-C', 'C-O2', 'H4-C2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C-O', 'H2-C', 'H2-O', 'H-C-O', 'C-O2', 'C-O2', 'H2-C', 'H2-C', 'C-O2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 8 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 271 with 15 and 9 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H4-C2', 'H']\n", - " \n", - "Fragments to allocate: 9 3 out of 14 8\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H4-C2', 'H2-C-O', 'H2-C', 'H2-O', 'H-C-O', 'C-O2', 'C-O2', 'H2-C', 'H2-C', 'C-O2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H4-C2', 'H2-C-O', 'H2-C', 'H2-O', 'H-C-O', 'C-O2', 'C-O2', 'H2-C', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 8 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 272 with 15 and 9 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 9 4 out of 14 8\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['C-O2', 'H4-C2', 'H2-C-O', 'H2-C', 'H2-O', 'H-C-O', 'C-O2', 'C-O2', 'H2-C', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H4-C2', 'H2-C-O', 'H2-C', 'H2-O', 'H-C-O', 'C-O2', 'C-O2', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 8 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 273 with 15 and 9 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 9 5 out of 14 8\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H2-C', 'C-O2', 'H4-C2', 'H2-C-O', 'H2-C', 'H2-O', 'H-C-O', 'C-O2', 'C-O2', 'H2-C', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'C-O2', 'H4-C2', 'H2-C-O', 'H2-C', 'H2-O', 'H-C-O', 'C-O2', 'C-O2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 8 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 274 with 15 and 9 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 9 6 out of 14 8\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H2-C', 'H2-C', 'C-O2', 'H4-C2', 'H2-C-O', 'H2-C', 'H2-O', 'H-C-O', 'C-O2', 'C-O2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H2-C', 'C-O2', 'H4-C2', 'H2-C-O', 'H2-C', 'H2-O', 'H-C-O', 'C-O2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 8 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 275 with 15 and 9 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 9 7 out of 14 8\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['C-O2', 'H2-C', 'H2-C', 'C-O2', 'H4-C2', 'H2-C-O', 'H2-C', 'H2-O', 'H-C-O', 'C-O2', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H2-C', 'H2-C', 'C-O2', 'H4-C2', 'H2-C-O', 'H2-C', 'H2-O', 'H-C-O', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 8 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 276 with 15 and 9 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 9 8 out of 14 8\n", - "sublist 2 ['H-C-O', 'H']\n", - "list1 15 ['C-O2', 'C-O2', 'H2-C', 'H2-C', 'C-O2', 'H4-C2', 'H2-C-O', 'H2-C', 'H2-O', 'H-C-O', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'C-O2', 'H2-C', 'H2-C', 'C-O2', 'H4-C2', 'H2-C-O', 'H2-C', 'H2-O', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 8 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 277 with 15 and 9 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-C-O', 'H']\n", - " \n", - "Fragments to allocate: 10 0 out of 14 8\n", - "sublist 2 ['H3-C2', 'H']\n", - "list1 15 ['H-C-O', 'C-O2', 'C-O2', 'H2-C', 'H2-C', 'C-O2', 'H4-C2', 'H2-C-O', 'H2-C', 'H2-O', 'H3-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-C-O', 'C-O2', 'C-O2', 'H2-C', 'H2-C', 'C-O2', 'H4-C2', 'H2-C-O', 'H2-C', 'H2-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 8 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 278 with 15 and 9 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 1\n", - "SPILT_SPECIES: Laplacian lap=array([[-3, 1, 1, 1, 0, 0],\n", - " [ 1, -1, 0, 0, 0, 0],\n", - " [ 1, 0, -1, 0, 0, 0],\n", - " [ 1, 0, 0, -3, 1, 1],\n", - " [ 0, 0, 0, 1, -1, 0],\n", - " [ 0, 0, 0, 1, 0, -1]])\n", - "SPILT_SPECIES: graph=<6x6 sparse matrix of type ''\n", - "\twith 16 stored elements in Compressed Sparse Row format>\n", - "COMBINE. received molecule: ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 6\n", - " Formula = H4-C2\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - " from merge fragments\n", - "COMBINE: Fragment H4-C2 added to avglist\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 1 ['H4-C2']\n", - "SEQUENTIAL: badlist 0 []\n", - " \n", - "Fragments to allocate: 0 1 out of 14 7\n", - "sublist 2 ['H4-C2', 'H']\n", - "list1 15 ['H4-C2', 'H-C-O', 'C-O2', 'C-O2', 'H2-C', 'H2-C', 'C-O2', 'H4-C2', 'H2-C-O', 'H2-C', 'H2-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 8 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-C-O', 'C-O2', 'C-O2', 'H2-C', 'H2-C', 'C-O2', 'H4-C2', 'H2-C-O', 'H2-C', 'H2-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 279 with 15 and 8 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H4-C2', 'H']\n", - " \n", - "Fragments to allocate: 0 2 out of 14 7\n", - "sublist 2 ['H4-C2', 'H']\n", - "list1 15 ['H4-C2', 'H-C-O', 'C-O2', 'C-O2', 'H2-C', 'H2-C', 'C-O2', 'H4-C2', 'H2-C-O', 'H2-C', 'H2-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 8 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-C-O', 'C-O2', 'C-O2', 'H2-C', 'H2-C', 'C-O2', 'H4-C2', 'H2-C-O', 'H2-C', 'H2-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 280 with 15 and 8 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H4-C2', 'H']\n", - " \n", - "Fragments to allocate: 0 3 out of 14 7\n", - "sublist 2 ['H4-C2', 'H']\n", - "list1 15 ['H4-C2', 'H-C-O', 'C-O2', 'C-O2', 'H2-C', 'H2-C', 'C-O2', 'H4-C2', 'H2-C-O', 'H2-C', 'H2-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 8 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-C-O', 'C-O2', 'C-O2', 'H2-C', 'H2-C', 'C-O2', 'H4-C2', 'H2-C-O', 'H2-C', 'H2-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 281 with 15 and 8 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H4-C2', 'H']\n", - " \n", - "Fragments to allocate: 0 4 out of 14 7\n", - "sublist 2 ['H4-C2', 'H']\n", - "list1 15 ['H4-C2', 'H-C-O', 'C-O2', 'C-O2', 'H2-C', 'H2-C', 'C-O2', 'H4-C2', 'H2-C-O', 'H2-C', 'H2-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 8 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-C-O', 'C-O2', 'C-O2', 'H2-C', 'H2-C', 'C-O2', 'H4-C2', 'H2-C-O', 'H2-C', 'H2-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 282 with 15 and 8 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H4-C2', 'H']\n", - " \n", - "Fragments to allocate: 0 5 out of 14 7\n", - "sublist 2 ['H4-C2', 'H']\n", - "list1 15 ['H4-C2', 'H-C-O', 'C-O2', 'C-O2', 'H2-C', 'H2-C', 'C-O2', 'H4-C2', 'H2-C-O', 'H2-C', 'H2-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 8 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-C-O', 'C-O2', 'C-O2', 'H2-C', 'H2-C', 'C-O2', 'H4-C2', 'H2-C-O', 'H2-C', 'H2-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 283 with 15 and 8 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H4-C2', 'H']\n", - " \n", - "Fragments to allocate: 0 6 out of 14 7\n", - "sublist 2 ['H4-C2', 'H']\n", - "list1 15 ['H4-C2', 'H-C-O', 'C-O2', 'C-O2', 'H2-C', 'H2-C', 'C-O2', 'H4-C2', 'H2-C-O', 'H2-C', 'H2-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 8 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-C-O', 'C-O2', 'C-O2', 'H2-C', 'H2-C', 'C-O2', 'H4-C2', 'H2-C-O', 'H2-C', 'H2-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 284 with 15 and 8 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H4-C2', 'H']\n", - " \n", - "Fragments to allocate: 0 7 out of 14 7\n", - "sublist 2 ['H4-C2', 'H']\n", - "list1 15 ['H4-C2', 'H-C-O', 'C-O2', 'C-O2', 'H2-C', 'H2-C', 'C-O2', 'H4-C2', 'H2-C-O', 'H2-C', 'H2-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 8 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-C-O', 'C-O2', 'C-O2', 'H2-C', 'H2-C', 'C-O2', 'H4-C2', 'H2-C-O', 'H2-C', 'H2-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 285 with 15 and 8 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H4-C2', 'H']\n", - " \n", - "Fragments to allocate: 1 0 out of 14 7\n", - "sublist 2 ['H-C-O', 'H']\n", - "list1 15 ['H4-C2', 'H-C-O', 'C-O2', 'C-O2', 'H2-C', 'H2-C', 'C-O2', 'H4-C2', 'H2-C-O', 'H2-C', 'H2-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 8 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H4-C2', 'C-O2', 'C-O2', 'H2-C', 'H2-C', 'C-O2', 'H4-C2', 'H2-C-O', 'H2-C', 'H2-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 286 with 15 and 8 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-C-O', 'H']\n", - " \n", - "Fragments to allocate: 1 1 out of 14 7\n", - "sublist 2 ['H4-C2', 'H']\n", - "list1 15 ['H-C-O', 'H4-C2', 'C-O2', 'C-O2', 'H2-C', 'H2-C', 'C-O2', 'H4-C2', 'H2-C-O', 'H2-C', 'H2-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 8 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-C-O', 'C-O2', 'C-O2', 'H2-C', 'H2-C', 'C-O2', 'H4-C2', 'H2-C-O', 'H2-C', 'H2-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 287 with 15 and 8 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H4-C2', 'H']\n", - " \n", - "Fragments to allocate: 1 2 out of 14 7\n", - "sublist 2 ['H-C-O', 'H']\n", - "list1 15 ['H4-C2', 'H-C-O', 'C-O2', 'C-O2', 'H2-C', 'H2-C', 'C-O2', 'H4-C2', 'H2-C-O', 'H2-C', 'H2-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 8 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H4-C2', 'C-O2', 'C-O2', 'H2-C', 'H2-C', 'C-O2', 'H4-C2', 'H2-C-O', 'H2-C', 'H2-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 288 with 15 and 8 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-C-O', 'H']\n", - " \n", - "Fragments to allocate: 1 3 out of 14 7\n", - "sublist 2 ['H4-C2', 'H']\n", - "list1 15 ['H-C-O', 'H4-C2', 'C-O2', 'C-O2', 'H2-C', 'H2-C', 'C-O2', 'H4-C2', 'H2-C-O', 'H2-C', 'H2-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 8 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-C-O', 'C-O2', 'C-O2', 'H2-C', 'H2-C', 'C-O2', 'H4-C2', 'H2-C-O', 'H2-C', 'H2-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 289 with 15 and 8 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H4-C2', 'H']\n", - " \n", - "Fragments to allocate: 1 4 out of 14 7\n", - "sublist 2 ['H-C-O', 'H']\n", - "list1 15 ['H4-C2', 'H-C-O', 'C-O2', 'C-O2', 'H2-C', 'H2-C', 'C-O2', 'H4-C2', 'H2-C-O', 'H2-C', 'H2-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 8 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H4-C2', 'C-O2', 'C-O2', 'H2-C', 'H2-C', 'C-O2', 'H4-C2', 'H2-C-O', 'H2-C', 'H2-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 290 with 15 and 8 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H-C-O', 'H']\n", - " \n", - "Fragments to allocate: 1 5 out of 14 7\n", - "sublist 2 ['H4-C2', 'H']\n", - "list1 15 ['H-C-O', 'H4-C2', 'C-O2', 'C-O2', 'H2-C', 'H2-C', 'C-O2', 'H4-C2', 'H2-C-O', 'H2-C', 'H2-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 8 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H-C-O', 'C-O2', 'C-O2', 'H2-C', 'H2-C', 'C-O2', 'H4-C2', 'H2-C-O', 'H2-C', 'H2-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 291 with 15 and 8 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H4-C2', 'H']\n", - " \n", - "Fragments to allocate: 1 6 out of 14 7\n", - "sublist 2 ['H-C-O', 'H']\n", - "list1 15 ['H4-C2', 'H-C-O', 'C-O2', 'C-O2', 'H2-C', 'H2-C', 'C-O2', 'H4-C2', 'H2-C-O', 'H2-C', 'H2-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 8 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H4-C2', 'C-O2', 'C-O2', 'H2-C', 'H2-C', 'C-O2', 'H4-C2', 'H2-C-O', 'H2-C', 'H2-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 292 with 15 and 8 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 1\n", - "SPILT_SPECIES: Laplacian lap=array([[-1, 1, 0, 0],\n", - " [ 1, -3, 1, 1],\n", - " [ 0, 1, -1, 0],\n", - " [ 0, 1, 0, -1]])\n", - "SPILT_SPECIES: graph=<4x4 sparse matrix of type ''\n", - "\twith 10 stored elements in Compressed Sparse Row format>\n", - "COMBINE. received molecule: ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 4\n", - " Formula = H2-C-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - " from merge fragments\n", - "COMBINE: Fragment H2-C-O added to avglist\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 1 ['H2-C-O']\n", - "SEQUENTIAL: badlist 0 []\n", - " \n", - "Fragments to allocate: 0 1 out of 14 6\n", - "sublist 2 ['H2-C-O', 'H']\n", - "list1 15 ['H2-C-O', 'H4-C2', 'C-O2', 'C-O2', 'H2-C', 'H2-C', 'C-O2', 'H4-C2', 'H2-C-O', 'H2-C', 'H2-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H4-C2', 'C-O2', 'C-O2', 'H2-C', 'H2-C', 'C-O2', 'H4-C2', 'H2-C-O', 'H2-C', 'H2-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 6 ['H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 293 with 15 and 7 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C-O', 'H']\n", - " \n", - "Fragments to allocate: 0 2 out of 14 6\n", - "sublist 2 ['H2-C-O', 'H']\n", - "list1 15 ['H2-C-O', 'H4-C2', 'C-O2', 'C-O2', 'H2-C', 'H2-C', 'C-O2', 'H4-C2', 'H2-C-O', 'H2-C', 'H2-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H4-C2', 'C-O2', 'C-O2', 'H2-C', 'H2-C', 'C-O2', 'H4-C2', 'H2-C-O', 'H2-C', 'H2-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 6 ['H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 294 with 15 and 7 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C-O', 'H']\n", - " \n", - "Fragments to allocate: 0 3 out of 14 6\n", - "sublist 2 ['H2-C-O', 'H']\n", - "list1 15 ['H2-C-O', 'H4-C2', 'C-O2', 'C-O2', 'H2-C', 'H2-C', 'C-O2', 'H4-C2', 'H2-C-O', 'H2-C', 'H2-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H4-C2', 'C-O2', 'C-O2', 'H2-C', 'H2-C', 'C-O2', 'H4-C2', 'H2-C-O', 'H2-C', 'H2-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 6 ['H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 295 with 15 and 7 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C-O', 'H']\n", - " \n", - "Fragments to allocate: 0 4 out of 14 6\n", - "sublist 2 ['H2-C-O', 'H']\n", - "list1 15 ['H2-C-O', 'H4-C2', 'C-O2', 'C-O2', 'H2-C', 'H2-C', 'C-O2', 'H4-C2', 'H2-C-O', 'H2-C', 'H2-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H4-C2', 'C-O2', 'C-O2', 'H2-C', 'H2-C', 'C-O2', 'H4-C2', 'H2-C-O', 'H2-C', 'H2-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 6 ['H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 296 with 15 and 7 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C-O', 'H']\n", - " \n", - "Fragments to allocate: 0 5 out of 14 6\n", - "sublist 2 ['H2-C-O', 'H']\n", - "list1 15 ['H2-C-O', 'H4-C2', 'C-O2', 'C-O2', 'H2-C', 'H2-C', 'C-O2', 'H4-C2', 'H2-C-O', 'H2-C', 'H2-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H4-C2', 'C-O2', 'C-O2', 'H2-C', 'H2-C', 'C-O2', 'H4-C2', 'H2-C-O', 'H2-C', 'H2-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 6 ['H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 297 with 15 and 7 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C-O', 'H']\n", - " \n", - "Fragments to allocate: 0 6 out of 14 6\n", - "sublist 2 ['H2-C-O', 'H']\n", - "list1 15 ['H2-C-O', 'H4-C2', 'C-O2', 'C-O2', 'H2-C', 'H2-C', 'C-O2', 'H4-C2', 'H2-C-O', 'H2-C', 'H2-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H4-C2', 'C-O2', 'C-O2', 'H2-C', 'H2-C', 'C-O2', 'H4-C2', 'H2-C-O', 'H2-C', 'H2-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 6 ['H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 298 with 15 and 7 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C-O', 'H']\n", - " \n", - "Fragments to allocate: 1 0 out of 14 6\n", - "sublist 2 ['H4-C2', 'H']\n", - "list1 15 ['H2-C-O', 'H4-C2', 'C-O2', 'C-O2', 'H2-C', 'H2-C', 'C-O2', 'H4-C2', 'H2-C-O', 'H2-C', 'H2-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C-O', 'C-O2', 'C-O2', 'H2-C', 'H2-C', 'C-O2', 'H4-C2', 'H2-C-O', 'H2-C', 'H2-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 6 ['H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 299 with 15 and 7 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H4-C2', 'H']\n", - " \n", - "Fragments to allocate: 1 1 out of 14 6\n", - "sublist 2 ['H2-C-O', 'H']\n", - "list1 15 ['H4-C2', 'H2-C-O', 'C-O2', 'C-O2', 'H2-C', 'H2-C', 'C-O2', 'H4-C2', 'H2-C-O', 'H2-C', 'H2-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H4-C2', 'C-O2', 'C-O2', 'H2-C', 'H2-C', 'C-O2', 'H4-C2', 'H2-C-O', 'H2-C', 'H2-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 6 ['H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 300 with 15 and 7 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C-O', 'H']\n", - " \n", - "Fragments to allocate: 1 2 out of 14 6\n", - "sublist 2 ['H4-C2', 'H']\n", - "list1 15 ['H2-C-O', 'H4-C2', 'C-O2', 'C-O2', 'H2-C', 'H2-C', 'C-O2', 'H4-C2', 'H2-C-O', 'H2-C', 'H2-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C-O', 'C-O2', 'C-O2', 'H2-C', 'H2-C', 'C-O2', 'H4-C2', 'H2-C-O', 'H2-C', 'H2-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 6 ['H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 301 with 15 and 7 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H4-C2', 'H']\n", - " \n", - "Fragments to allocate: 1 3 out of 14 6\n", - "sublist 2 ['H2-C-O', 'H']\n", - "list1 15 ['H4-C2', 'H2-C-O', 'C-O2', 'C-O2', 'H2-C', 'H2-C', 'C-O2', 'H4-C2', 'H2-C-O', 'H2-C', 'H2-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H4-C2', 'C-O2', 'C-O2', 'H2-C', 'H2-C', 'C-O2', 'H4-C2', 'H2-C-O', 'H2-C', 'H2-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 6 ['H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 302 with 15 and 7 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C-O', 'H']\n", - " \n", - "Fragments to allocate: 1 4 out of 14 6\n", - "sublist 2 ['H4-C2', 'H']\n", - "list1 15 ['H2-C-O', 'H4-C2', 'C-O2', 'C-O2', 'H2-C', 'H2-C', 'C-O2', 'H4-C2', 'H2-C-O', 'H2-C', 'H2-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C-O', 'C-O2', 'C-O2', 'H2-C', 'H2-C', 'C-O2', 'H4-C2', 'H2-C-O', 'H2-C', 'H2-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 6 ['H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 303 with 15 and 7 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H4-C2', 'H']\n", - " \n", - "Fragments to allocate: 1 5 out of 14 6\n", - "sublist 2 ['H2-C-O', 'H']\n", - "list1 15 ['H4-C2', 'H2-C-O', 'C-O2', 'C-O2', 'H2-C', 'H2-C', 'C-O2', 'H4-C2', 'H2-C-O', 'H2-C', 'H2-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H4-C2', 'C-O2', 'C-O2', 'H2-C', 'H2-C', 'C-O2', 'H4-C2', 'H2-C-O', 'H2-C', 'H2-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 6 ['H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 304 with 15 and 7 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C-O', 'H']\n", - " \n", - "Fragments to allocate: 1 6 out of 14 6\n", - "sublist 2 ['H4-C2', 'H']\n", - "list1 15 ['H2-C-O', 'H4-C2', 'C-O2', 'C-O2', 'H2-C', 'H2-C', 'C-O2', 'H4-C2', 'H2-C-O', 'H2-C', 'H2-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C-O', 'C-O2', 'C-O2', 'H2-C', 'H2-C', 'C-O2', 'H4-C2', 'H2-C-O', 'H2-C', 'H2-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 6 ['H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 305 with 15 and 7 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H4-C2', 'H']\n", - " \n", - "Fragments to allocate: 2 0 out of 14 6\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H4-C2', 'H2-C-O', 'C-O2', 'C-O2', 'H2-C', 'H2-C', 'C-O2', 'H4-C2', 'H2-C-O', 'H2-C', 'H2-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H4-C2', 'H2-C-O', 'C-O2', 'H2-C', 'H2-C', 'C-O2', 'H4-C2', 'H2-C-O', 'H2-C', 'H2-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 6 ['H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 306 with 15 and 7 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 2 1 out of 14 6\n", - "sublist 2 ['H2-C-O', 'H']\n", - "list1 15 ['C-O2', 'H4-C2', 'H2-C-O', 'C-O2', 'H2-C', 'H2-C', 'C-O2', 'H4-C2', 'H2-C-O', 'H2-C', 'H2-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H4-C2', 'C-O2', 'H2-C', 'H2-C', 'C-O2', 'H4-C2', 'H2-C-O', 'H2-C', 'H2-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 6 ['H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 307 with 15 and 7 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C-O', 'H']\n", - " \n", - "Fragments to allocate: 2 2 out of 14 6\n", - "sublist 2 ['H4-C2', 'H']\n", - "list1 15 ['H2-C-O', 'C-O2', 'H4-C2', 'C-O2', 'H2-C', 'H2-C', 'C-O2', 'H4-C2', 'H2-C-O', 'H2-C', 'H2-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C-O', 'C-O2', 'C-O2', 'H2-C', 'H2-C', 'C-O2', 'H4-C2', 'H2-C-O', 'H2-C', 'H2-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 6 ['H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 308 with 15 and 7 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H4-C2', 'H']\n", - " \n", - "Fragments to allocate: 2 3 out of 14 6\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H4-C2', 'H2-C-O', 'C-O2', 'C-O2', 'H2-C', 'H2-C', 'C-O2', 'H4-C2', 'H2-C-O', 'H2-C', 'H2-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H4-C2', 'H2-C-O', 'C-O2', 'H2-C', 'H2-C', 'C-O2', 'H4-C2', 'H2-C-O', 'H2-C', 'H2-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 6 ['H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 309 with 15 and 7 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 2 4 out of 14 6\n", - "sublist 2 ['H2-C-O', 'H']\n", - "list1 15 ['C-O2', 'H4-C2', 'H2-C-O', 'C-O2', 'H2-C', 'H2-C', 'C-O2', 'H4-C2', 'H2-C-O', 'H2-C', 'H2-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H4-C2', 'C-O2', 'H2-C', 'H2-C', 'C-O2', 'H4-C2', 'H2-C-O', 'H2-C', 'H2-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 6 ['H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 310 with 15 and 7 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C-O', 'H']\n", - " \n", - "Fragments to allocate: 2 5 out of 14 6\n", - "sublist 2 ['H4-C2', 'H']\n", - "list1 15 ['H2-C-O', 'C-O2', 'H4-C2', 'C-O2', 'H2-C', 'H2-C', 'C-O2', 'H4-C2', 'H2-C-O', 'H2-C', 'H2-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C-O', 'C-O2', 'C-O2', 'H2-C', 'H2-C', 'C-O2', 'H4-C2', 'H2-C-O', 'H2-C', 'H2-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 6 ['H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 311 with 15 and 7 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H4-C2', 'H']\n", - " \n", - "Fragments to allocate: 2 6 out of 14 6\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H4-C2', 'H2-C-O', 'C-O2', 'C-O2', 'H2-C', 'H2-C', 'C-O2', 'H4-C2', 'H2-C-O', 'H2-C', 'H2-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H4-C2', 'H2-C-O', 'C-O2', 'H2-C', 'H2-C', 'C-O2', 'H4-C2', 'H2-C-O', 'H2-C', 'H2-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 6 ['H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 312 with 15 and 7 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 3 0 out of 14 6\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['C-O2', 'H4-C2', 'H2-C-O', 'C-O2', 'H2-C', 'H2-C', 'C-O2', 'H4-C2', 'H2-C-O', 'H2-C', 'H2-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H4-C2', 'H2-C-O', 'H2-C', 'H2-C', 'C-O2', 'H4-C2', 'H2-C-O', 'H2-C', 'H2-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 6 ['H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 313 with 15 and 7 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 3 1 out of 14 6\n", - "sublist 2 ['H2-C-O', 'H']\n", - "list1 15 ['C-O2', 'C-O2', 'H4-C2', 'H2-C-O', 'H2-C', 'H2-C', 'C-O2', 'H4-C2', 'H2-C-O', 'H2-C', 'H2-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'C-O2', 'H4-C2', 'H2-C', 'H2-C', 'C-O2', 'H4-C2', 'H2-C-O', 'H2-C', 'H2-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 6 ['H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 314 with 15 and 7 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C-O', 'H']\n", - " \n", - "Fragments to allocate: 3 2 out of 14 6\n", - "sublist 2 ['H4-C2', 'H']\n", - "list1 15 ['H2-C-O', 'C-O2', 'C-O2', 'H4-C2', 'H2-C', 'H2-C', 'C-O2', 'H4-C2', 'H2-C-O', 'H2-C', 'H2-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C-O', 'C-O2', 'C-O2', 'H2-C', 'H2-C', 'C-O2', 'H4-C2', 'H2-C-O', 'H2-C', 'H2-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 6 ['H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 315 with 15 and 7 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H4-C2', 'H']\n", - " \n", - "Fragments to allocate: 3 3 out of 14 6\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H4-C2', 'H2-C-O', 'C-O2', 'C-O2', 'H2-C', 'H2-C', 'C-O2', 'H4-C2', 'H2-C-O', 'H2-C', 'H2-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H4-C2', 'H2-C-O', 'C-O2', 'H2-C', 'H2-C', 'C-O2', 'H4-C2', 'H2-C-O', 'H2-C', 'H2-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 6 ['H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 316 with 15 and 7 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 3 4 out of 14 6\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['C-O2', 'H4-C2', 'H2-C-O', 'C-O2', 'H2-C', 'H2-C', 'C-O2', 'H4-C2', 'H2-C-O', 'H2-C', 'H2-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H4-C2', 'H2-C-O', 'H2-C', 'H2-C', 'C-O2', 'H4-C2', 'H2-C-O', 'H2-C', 'H2-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 6 ['H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 317 with 15 and 7 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 3 5 out of 14 6\n", - "sublist 2 ['H2-C-O', 'H']\n", - "list1 15 ['C-O2', 'C-O2', 'H4-C2', 'H2-C-O', 'H2-C', 'H2-C', 'C-O2', 'H4-C2', 'H2-C-O', 'H2-C', 'H2-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'C-O2', 'H4-C2', 'H2-C', 'H2-C', 'C-O2', 'H4-C2', 'H2-C-O', 'H2-C', 'H2-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 6 ['H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 318 with 15 and 7 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C-O', 'H']\n", - " \n", - "Fragments to allocate: 3 6 out of 14 6\n", - "sublist 2 ['H4-C2', 'H']\n", - "list1 15 ['H2-C-O', 'C-O2', 'C-O2', 'H4-C2', 'H2-C', 'H2-C', 'C-O2', 'H4-C2', 'H2-C-O', 'H2-C', 'H2-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C-O', 'C-O2', 'C-O2', 'H2-C', 'H2-C', 'C-O2', 'H4-C2', 'H2-C-O', 'H2-C', 'H2-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 6 ['H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 319 with 15 and 7 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H4-C2', 'H']\n", - " \n", - "Fragments to allocate: 4 0 out of 14 6\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H4-C2', 'H2-C-O', 'C-O2', 'C-O2', 'H2-C', 'H2-C', 'C-O2', 'H4-C2', 'H2-C-O', 'H2-C', 'H2-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H4-C2', 'H2-C-O', 'C-O2', 'C-O2', 'H2-C', 'C-O2', 'H4-C2', 'H2-C-O', 'H2-C', 'H2-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 6 ['H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 320 with 15 and 7 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 4 1 out of 14 6\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H2-C', 'H4-C2', 'H2-C-O', 'C-O2', 'C-O2', 'H2-C', 'C-O2', 'H4-C2', 'H2-C-O', 'H2-C', 'H2-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H4-C2', 'H2-C-O', 'C-O2', 'H2-C', 'C-O2', 'H4-C2', 'H2-C-O', 'H2-C', 'H2-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 6 ['H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 321 with 15 and 7 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 4 2 out of 14 6\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['C-O2', 'H2-C', 'H4-C2', 'H2-C-O', 'C-O2', 'H2-C', 'C-O2', 'H4-C2', 'H2-C-O', 'H2-C', 'H2-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H2-C', 'H4-C2', 'H2-C-O', 'H2-C', 'C-O2', 'H4-C2', 'H2-C-O', 'H2-C', 'H2-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 6 ['H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 322 with 15 and 7 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 4 3 out of 14 6\n", - "sublist 2 ['H2-C-O', 'H']\n", - "list1 15 ['C-O2', 'C-O2', 'H2-C', 'H4-C2', 'H2-C-O', 'H2-C', 'C-O2', 'H4-C2', 'H2-C-O', 'H2-C', 'H2-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'C-O2', 'H2-C', 'H4-C2', 'H2-C', 'C-O2', 'H4-C2', 'H2-C-O', 'H2-C', 'H2-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 6 ['H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 323 with 15 and 7 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C-O', 'H']\n", - " \n", - "Fragments to allocate: 4 4 out of 14 6\n", - "sublist 2 ['H4-C2', 'H']\n", - "list1 15 ['H2-C-O', 'C-O2', 'C-O2', 'H2-C', 'H4-C2', 'H2-C', 'C-O2', 'H4-C2', 'H2-C-O', 'H2-C', 'H2-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C-O', 'C-O2', 'C-O2', 'H2-C', 'H2-C', 'C-O2', 'H4-C2', 'H2-C-O', 'H2-C', 'H2-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 6 ['H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 324 with 15 and 7 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H4-C2', 'H']\n", - " \n", - "Fragments to allocate: 4 5 out of 14 6\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H4-C2', 'H2-C-O', 'C-O2', 'C-O2', 'H2-C', 'H2-C', 'C-O2', 'H4-C2', 'H2-C-O', 'H2-C', 'H2-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H4-C2', 'H2-C-O', 'C-O2', 'C-O2', 'H2-C', 'C-O2', 'H4-C2', 'H2-C-O', 'H2-C', 'H2-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 6 ['H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 325 with 15 and 7 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 4 6 out of 14 6\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H2-C', 'H4-C2', 'H2-C-O', 'C-O2', 'C-O2', 'H2-C', 'C-O2', 'H4-C2', 'H2-C-O', 'H2-C', 'H2-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H4-C2', 'H2-C-O', 'C-O2', 'H2-C', 'C-O2', 'H4-C2', 'H2-C-O', 'H2-C', 'H2-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 6 ['H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 326 with 15 and 7 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 5 0 out of 14 6\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['C-O2', 'H2-C', 'H4-C2', 'H2-C-O', 'C-O2', 'H2-C', 'C-O2', 'H4-C2', 'H2-C-O', 'H2-C', 'H2-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H2-C', 'H4-C2', 'H2-C-O', 'C-O2', 'C-O2', 'H4-C2', 'H2-C-O', 'H2-C', 'H2-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 6 ['H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 327 with 15 and 7 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 5 1 out of 14 6\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H2-C', 'C-O2', 'H2-C', 'H4-C2', 'H2-C-O', 'C-O2', 'C-O2', 'H4-C2', 'H2-C-O', 'H2-C', 'H2-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'C-O2', 'H2-C', 'H4-C2', 'H2-C-O', 'C-O2', 'H4-C2', 'H2-C-O', 'H2-C', 'H2-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 6 ['H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 328 with 15 and 7 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 5 2 out of 14 6\n", - "sublist 2 ['H2-C-O', 'H']\n", - "list1 15 ['C-O2', 'H2-C', 'C-O2', 'H2-C', 'H4-C2', 'H2-C-O', 'C-O2', 'H4-C2', 'H2-C-O', 'H2-C', 'H2-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H2-C', 'C-O2', 'H2-C', 'H4-C2', 'C-O2', 'H4-C2', 'H2-C-O', 'H2-C', 'H2-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 6 ['H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 329 with 15 and 7 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C-O', 'H']\n", - " \n", - "Fragments to allocate: 5 3 out of 14 6\n", - "sublist 2 ['H4-C2', 'H']\n", - "list1 15 ['H2-C-O', 'C-O2', 'H2-C', 'C-O2', 'H2-C', 'H4-C2', 'C-O2', 'H4-C2', 'H2-C-O', 'H2-C', 'H2-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C-O', 'C-O2', 'H2-C', 'C-O2', 'H2-C', 'C-O2', 'H4-C2', 'H2-C-O', 'H2-C', 'H2-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 6 ['H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 330 with 15 and 7 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H4-C2', 'H']\n", - " \n", - "Fragments to allocate: 5 4 out of 14 6\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H4-C2', 'H2-C-O', 'C-O2', 'H2-C', 'C-O2', 'H2-C', 'C-O2', 'H4-C2', 'H2-C-O', 'H2-C', 'H2-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H4-C2', 'H2-C-O', 'C-O2', 'H2-C', 'C-O2', 'C-O2', 'H4-C2', 'H2-C-O', 'H2-C', 'H2-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 6 ['H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 331 with 15 and 7 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 5 5 out of 14 6\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H2-C', 'H4-C2', 'H2-C-O', 'C-O2', 'H2-C', 'C-O2', 'C-O2', 'H4-C2', 'H2-C-O', 'H2-C', 'H2-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H4-C2', 'H2-C-O', 'C-O2', 'H2-C', 'C-O2', 'H4-C2', 'H2-C-O', 'H2-C', 'H2-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 6 ['H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 332 with 15 and 7 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 5 6 out of 14 6\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['C-O2', 'H2-C', 'H4-C2', 'H2-C-O', 'C-O2', 'H2-C', 'C-O2', 'H4-C2', 'H2-C-O', 'H2-C', 'H2-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H2-C', 'H4-C2', 'H2-C-O', 'C-O2', 'C-O2', 'H4-C2', 'H2-C-O', 'H2-C', 'H2-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 6 ['H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 333 with 15 and 7 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 6 0 out of 14 6\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H2-C', 'C-O2', 'H2-C', 'H4-C2', 'H2-C-O', 'C-O2', 'C-O2', 'H4-C2', 'H2-C-O', 'H2-C', 'H2-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'C-O2', 'H2-C', 'H4-C2', 'H2-C-O', 'C-O2', 'H4-C2', 'H2-C-O', 'H2-C', 'H2-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 6 ['H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 334 with 15 and 7 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 6 1 out of 14 6\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['C-O2', 'H2-C', 'C-O2', 'H2-C', 'H4-C2', 'H2-C-O', 'C-O2', 'H4-C2', 'H2-C-O', 'H2-C', 'H2-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H2-C', 'C-O2', 'H2-C', 'H4-C2', 'H2-C-O', 'H4-C2', 'H2-C-O', 'H2-C', 'H2-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 6 ['H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 335 with 15 and 7 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 6 2 out of 14 6\n", - "sublist 2 ['H2-C-O', 'H']\n", - "list1 15 ['C-O2', 'C-O2', 'H2-C', 'C-O2', 'H2-C', 'H4-C2', 'H2-C-O', 'H4-C2', 'H2-C-O', 'H2-C', 'H2-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'C-O2', 'H2-C', 'C-O2', 'H2-C', 'H4-C2', 'H4-C2', 'H2-C-O', 'H2-C', 'H2-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 6 ['H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 336 with 15 and 7 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C-O', 'H']\n", - " \n", - "Fragments to allocate: 6 3 out of 14 6\n", - "sublist 2 ['H4-C2', 'H']\n", - "list1 15 ['H2-C-O', 'C-O2', 'C-O2', 'H2-C', 'C-O2', 'H2-C', 'H4-C2', 'H4-C2', 'H2-C-O', 'H2-C', 'H2-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C-O', 'C-O2', 'C-O2', 'H2-C', 'C-O2', 'H2-C', 'H4-C2', 'H2-C-O', 'H2-C', 'H2-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 6 ['H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 337 with 15 and 7 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H4-C2', 'H']\n", - " \n", - "Fragments to allocate: 6 4 out of 14 6\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H4-C2', 'H2-C-O', 'C-O2', 'C-O2', 'H2-C', 'C-O2', 'H2-C', 'H4-C2', 'H2-C-O', 'H2-C', 'H2-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H4-C2', 'H2-C-O', 'C-O2', 'C-O2', 'H2-C', 'C-O2', 'H4-C2', 'H2-C-O', 'H2-C', 'H2-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 6 ['H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 338 with 15 and 7 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 6 5 out of 14 6\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H2-C', 'H4-C2', 'H2-C-O', 'C-O2', 'C-O2', 'H2-C', 'C-O2', 'H4-C2', 'H2-C-O', 'H2-C', 'H2-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H4-C2', 'H2-C-O', 'C-O2', 'C-O2', 'H2-C', 'H4-C2', 'H2-C-O', 'H2-C', 'H2-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 6 ['H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 339 with 15 and 7 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 6 6 out of 14 6\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['C-O2', 'H2-C', 'H4-C2', 'H2-C-O', 'C-O2', 'C-O2', 'H2-C', 'H4-C2', 'H2-C-O', 'H2-C', 'H2-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H2-C', 'H4-C2', 'H2-C-O', 'C-O2', 'C-O2', 'H4-C2', 'H2-C-O', 'H2-C', 'H2-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 6 ['H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 340 with 15 and 7 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 7 0 out of 14 6\n", - "sublist 2 ['H4-C2', 'H']\n", - "list1 15 ['H2-C', 'C-O2', 'H2-C', 'H4-C2', 'H2-C-O', 'C-O2', 'C-O2', 'H4-C2', 'H2-C-O', 'H2-C', 'H2-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'C-O2', 'H2-C', 'H4-C2', 'H2-C-O', 'C-O2', 'C-O2', 'H2-C-O', 'H2-C', 'H2-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 6 ['H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 341 with 15 and 7 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H4-C2', 'H']\n", - " \n", - "Fragments to allocate: 7 1 out of 14 6\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H4-C2', 'H2-C', 'C-O2', 'H2-C', 'H4-C2', 'H2-C-O', 'C-O2', 'C-O2', 'H2-C-O', 'H2-C', 'H2-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H4-C2', 'H2-C', 'C-O2', 'H2-C', 'H4-C2', 'H2-C-O', 'C-O2', 'H2-C-O', 'H2-C', 'H2-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 6 ['H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 342 with 15 and 7 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 7 2 out of 14 6\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['C-O2', 'H4-C2', 'H2-C', 'C-O2', 'H2-C', 'H4-C2', 'H2-C-O', 'C-O2', 'H2-C-O', 'H2-C', 'H2-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H4-C2', 'H2-C', 'C-O2', 'H2-C', 'H4-C2', 'H2-C-O', 'H2-C-O', 'H2-C', 'H2-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 6 ['H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 343 with 15 and 7 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 7 3 out of 14 6\n", - "sublist 2 ['H2-C-O', 'H']\n", - "list1 15 ['C-O2', 'C-O2', 'H4-C2', 'H2-C', 'C-O2', 'H2-C', 'H4-C2', 'H2-C-O', 'H2-C-O', 'H2-C', 'H2-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'C-O2', 'H4-C2', 'H2-C', 'C-O2', 'H2-C', 'H4-C2', 'H2-C-O', 'H2-C', 'H2-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 6 ['H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 344 with 15 and 7 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C-O', 'H']\n", - " \n", - "Fragments to allocate: 7 4 out of 14 6\n", - "sublist 2 ['H4-C2', 'H']\n", - "list1 15 ['H2-C-O', 'C-O2', 'C-O2', 'H4-C2', 'H2-C', 'C-O2', 'H2-C', 'H4-C2', 'H2-C-O', 'H2-C', 'H2-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C-O', 'C-O2', 'C-O2', 'H4-C2', 'H2-C', 'C-O2', 'H2-C', 'H2-C-O', 'H2-C', 'H2-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 6 ['H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 345 with 15 and 7 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H4-C2', 'H']\n", - " \n", - "Fragments to allocate: 7 5 out of 14 6\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H4-C2', 'H2-C-O', 'C-O2', 'C-O2', 'H4-C2', 'H2-C', 'C-O2', 'H2-C', 'H2-C-O', 'H2-C', 'H2-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H4-C2', 'H2-C-O', 'C-O2', 'C-O2', 'H4-C2', 'H2-C', 'C-O2', 'H2-C-O', 'H2-C', 'H2-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 6 ['H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 346 with 15 and 7 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 7 6 out of 14 6\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H2-C', 'H4-C2', 'H2-C-O', 'C-O2', 'C-O2', 'H4-C2', 'H2-C', 'C-O2', 'H2-C-O', 'H2-C', 'H2-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H4-C2', 'H2-C-O', 'C-O2', 'C-O2', 'H4-C2', 'H2-C', 'H2-C-O', 'H2-C', 'H2-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 6 ['H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 347 with 15 and 7 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 8 0 out of 14 6\n", - "sublist 2 ['H2-C-O', 'H']\n", - "list1 15 ['C-O2', 'H2-C', 'H4-C2', 'H2-C-O', 'C-O2', 'C-O2', 'H4-C2', 'H2-C', 'H2-C-O', 'H2-C', 'H2-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H2-C', 'H4-C2', 'H2-C-O', 'C-O2', 'C-O2', 'H4-C2', 'H2-C', 'H2-C', 'H2-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 6 ['H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 348 with 15 and 7 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C-O', 'H']\n", - " \n", - "Fragments to allocate: 8 1 out of 14 6\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H2-C-O', 'C-O2', 'H2-C', 'H4-C2', 'H2-C-O', 'C-O2', 'C-O2', 'H4-C2', 'H2-C', 'H2-C', 'H2-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C-O', 'C-O2', 'H2-C', 'H4-C2', 'H2-C-O', 'C-O2', 'C-O2', 'H4-C2', 'H2-C', 'H2-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 6 ['H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 349 with 15 and 7 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 8 2 out of 14 6\n", - "sublist 2 ['H4-C2', 'H']\n", - "list1 15 ['H2-C', 'H2-C-O', 'C-O2', 'H2-C', 'H4-C2', 'H2-C-O', 'C-O2', 'C-O2', 'H4-C2', 'H2-C', 'H2-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H2-C-O', 'C-O2', 'H2-C', 'H4-C2', 'H2-C-O', 'C-O2', 'C-O2', 'H2-C', 'H2-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 6 ['H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 350 with 15 and 7 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H4-C2', 'H']\n", - " \n", - "Fragments to allocate: 8 3 out of 14 6\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H4-C2', 'H2-C', 'H2-C-O', 'C-O2', 'H2-C', 'H4-C2', 'H2-C-O', 'C-O2', 'C-O2', 'H2-C', 'H2-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H4-C2', 'H2-C', 'H2-C-O', 'C-O2', 'H2-C', 'H4-C2', 'H2-C-O', 'C-O2', 'H2-C', 'H2-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 6 ['H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 351 with 15 and 7 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 8 4 out of 14 6\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['C-O2', 'H4-C2', 'H2-C', 'H2-C-O', 'C-O2', 'H2-C', 'H4-C2', 'H2-C-O', 'C-O2', 'H2-C', 'H2-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H4-C2', 'H2-C', 'H2-C-O', 'C-O2', 'H2-C', 'H4-C2', 'H2-C-O', 'H2-C', 'H2-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 6 ['H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 352 with 15 and 7 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 8 5 out of 14 6\n", - "sublist 2 ['H2-C-O', 'H']\n", - "list1 15 ['C-O2', 'C-O2', 'H4-C2', 'H2-C', 'H2-C-O', 'C-O2', 'H2-C', 'H4-C2', 'H2-C-O', 'H2-C', 'H2-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'C-O2', 'H4-C2', 'H2-C', 'H2-C-O', 'C-O2', 'H2-C', 'H4-C2', 'H2-C', 'H2-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 6 ['H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 353 with 15 and 7 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C-O', 'H']\n", - " \n", - "Fragments to allocate: 8 6 out of 14 6\n", - "sublist 2 ['H4-C2', 'H']\n", - "list1 15 ['H2-C-O', 'C-O2', 'C-O2', 'H4-C2', 'H2-C', 'H2-C-O', 'C-O2', 'H2-C', 'H4-C2', 'H2-C', 'H2-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C-O', 'C-O2', 'C-O2', 'H4-C2', 'H2-C', 'H2-C-O', 'C-O2', 'H2-C', 'H2-C', 'H2-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 6 ['H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 354 with 15 and 7 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H4-C2', 'H']\n", - " \n", - "Fragments to allocate: 9 0 out of 14 6\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H4-C2', 'H2-C-O', 'C-O2', 'C-O2', 'H4-C2', 'H2-C', 'H2-C-O', 'C-O2', 'H2-C', 'H2-C', 'H2-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H4-C2', 'H2-C-O', 'C-O2', 'C-O2', 'H4-C2', 'H2-C', 'H2-C-O', 'C-O2', 'H2-C', 'H2-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 6 ['H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 355 with 15 and 7 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 9 1 out of 14 6\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H2-C', 'H4-C2', 'H2-C-O', 'C-O2', 'C-O2', 'H4-C2', 'H2-C', 'H2-C-O', 'C-O2', 'H2-C', 'H2-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H4-C2', 'H2-C-O', 'C-O2', 'C-O2', 'H4-C2', 'H2-C', 'H2-C-O', 'C-O2', 'H2-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 6 ['H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 356 with 15 and 7 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 9 2 out of 14 6\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'C-O2', 'C-O2', 'H4-C2', 'H2-C', 'H2-C-O', 'C-O2', 'H2-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'C-O2', 'C-O2', 'H4-C2', 'H2-C', 'H2-C-O', 'H2-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 6 ['H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 357 with 15 and 7 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 9 3 out of 14 6\n", - "sublist 2 ['H2-C-O', 'H']\n", - "list1 15 ['C-O2', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'C-O2', 'C-O2', 'H4-C2', 'H2-C', 'H2-C-O', 'H2-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'C-O2', 'C-O2', 'H4-C2', 'H2-C', 'H2-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 6 ['H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 358 with 15 and 7 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C-O', 'H']\n", - " \n", - "Fragments to allocate: 9 4 out of 14 6\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H2-C-O', 'C-O2', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'C-O2', 'C-O2', 'H4-C2', 'H2-C', 'H2-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C-O', 'C-O2', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'C-O2', 'C-O2', 'H4-C2', 'H2-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 6 ['H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 359 with 15 and 7 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 9 5 out of 14 6\n", - "sublist 2 ['H4-C2', 'H']\n", - "list1 15 ['H2-C', 'H2-C-O', 'C-O2', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'C-O2', 'C-O2', 'H4-C2', 'H2-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H2-C-O', 'C-O2', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'C-O2', 'C-O2', 'H2-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 6 ['H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 360 with 15 and 7 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H4-C2', 'H']\n", - " \n", - "Fragments to allocate: 9 6 out of 14 6\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H4-C2', 'H2-C', 'H2-C-O', 'C-O2', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'C-O2', 'C-O2', 'H2-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H4-C2', 'H2-C', 'H2-C-O', 'C-O2', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'C-O2', 'H2-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 6 ['H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 361 with 15 and 7 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 10 0 out of 14 6\n", - "sublist 2 ['H2-O', 'H']\n", - "list1 15 ['C-O2', 'H4-C2', 'H2-C', 'H2-C-O', 'C-O2', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'C-O2', 'H2-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H4-C2', 'H2-C', 'H2-C-O', 'C-O2', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'C-O2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 6 ['H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 362 with 15 and 7 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-O', 'H']\n", - " \n", - "Fragments to allocate: 10 1 out of 14 6\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H2-O', 'C-O2', 'H4-C2', 'H2-C', 'H2-C-O', 'C-O2', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'C-O2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-O', 'C-O2', 'H4-C2', 'H2-C', 'H2-C-O', 'C-O2', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 6 ['H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 363 with 15 and 7 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 10 2 out of 14 6\n", - "sublist 2 ['H2-C-O', 'H']\n", - "list1 15 ['C-O2', 'H2-O', 'C-O2', 'H4-C2', 'H2-C', 'H2-C-O', 'C-O2', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H2-O', 'C-O2', 'H4-C2', 'H2-C', 'H2-C-O', 'C-O2', 'H2-C', 'H2-C', 'H4-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 6 ['H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 364 with 15 and 7 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C-O', 'H']\n", - " \n", - "Fragments to allocate: 10 3 out of 14 6\n", - "sublist 2 ['H4-C2', 'H']\n", - "list1 15 ['H2-C-O', 'C-O2', 'H2-O', 'C-O2', 'H4-C2', 'H2-C', 'H2-C-O', 'C-O2', 'H2-C', 'H2-C', 'H4-C2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C-O', 'C-O2', 'H2-O', 'C-O2', 'H4-C2', 'H2-C', 'H2-C-O', 'C-O2', 'H2-C', 'H2-C', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 6 ['H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 365 with 15 and 7 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H4-C2', 'H']\n", - " \n", - "Fragments to allocate: 10 4 out of 14 6\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H4-C2', 'H2-C-O', 'C-O2', 'H2-O', 'C-O2', 'H4-C2', 'H2-C', 'H2-C-O', 'C-O2', 'H2-C', 'H2-C', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H4-C2', 'H2-C-O', 'C-O2', 'H2-O', 'C-O2', 'H4-C2', 'H2-C', 'H2-C-O', 'C-O2', 'H2-C', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 6 ['H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 366 with 15 and 7 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 10 5 out of 14 6\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H2-C', 'H4-C2', 'H2-C-O', 'C-O2', 'H2-O', 'C-O2', 'H4-C2', 'H2-C', 'H2-C-O', 'C-O2', 'H2-C', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H4-C2', 'H2-C-O', 'C-O2', 'H2-O', 'C-O2', 'H4-C2', 'H2-C', 'H2-C-O', 'C-O2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 6 ['H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 367 with 15 and 7 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 10 6 out of 14 6\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'C-O2', 'H2-O', 'C-O2', 'H4-C2', 'H2-C', 'H2-C-O', 'C-O2', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'C-O2', 'H2-O', 'C-O2', 'H4-C2', 'H2-C', 'H2-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 6 ['H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 368 with 15 and 7 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 11 0 out of 14 6\n", - "sublist 2 ['C3-O6-Fe', 'H']\n", - "list1 15 ['C-O2', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'C-O2', 'H2-O', 'C-O2', 'H4-C2', 'H2-C', 'H2-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'C-O2', 'H2-O', 'C-O2', 'H4-C2', 'H2-C', 'H2-C-O', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 6 ['H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 369 with 15 and 7 Remaining in each list\n", - "SEQUENTIAL All sending ['Fe', 'O', 'O', 'C', 'O', 'O', 'O', 'O', 'C', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C3-O6-Fe', 'H']\n", - " \n", - "Fragments to allocate: 11 1 out of 14 6\n", - "sublist 2 ['H2-C-O', 'H']\n", - "list1 15 ['C3-O6-Fe', 'C-O2', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'C-O2', 'H2-O', 'C-O2', 'H4-C2', 'H2-C', 'H2-C-O', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C3-O6-Fe', 'C-O2', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'C-O2', 'H2-O', 'C-O2', 'H4-C2', 'H2-C', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 6 ['H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 370 with 15 and 7 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C-O', 'H']\n", - " \n", - "Fragments to allocate: 11 2 out of 14 6\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H2-C-O', 'C3-O6-Fe', 'C-O2', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'C-O2', 'H2-O', 'C-O2', 'H4-C2', 'H2-C', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C-O', 'C3-O6-Fe', 'C-O2', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'C-O2', 'H2-O', 'C-O2', 'H4-C2', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 6 ['H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 371 with 15 and 7 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 11 3 out of 14 6\n", - "sublist 2 ['H4-C2', 'H']\n", - "list1 15 ['H2-C', 'H2-C-O', 'C3-O6-Fe', 'C-O2', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'C-O2', 'H2-O', 'C-O2', 'H4-C2', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H2-C-O', 'C3-O6-Fe', 'C-O2', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'C-O2', 'H2-O', 'C-O2', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 6 ['H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 372 with 15 and 7 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H4-C2', 'H']\n", - " \n", - "Fragments to allocate: 11 4 out of 14 6\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H4-C2', 'H2-C', 'H2-C-O', 'C3-O6-Fe', 'C-O2', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'C-O2', 'H2-O', 'C-O2', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H4-C2', 'H2-C', 'H2-C-O', 'C3-O6-Fe', 'C-O2', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'C-O2', 'H2-O', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 6 ['H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 373 with 15 and 7 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 11 5 out of 14 6\n", - "sublist 2 ['H2-O', 'H']\n", - "list1 15 ['C-O2', 'H4-C2', 'H2-C', 'H2-C-O', 'C3-O6-Fe', 'C-O2', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'C-O2', 'H2-O', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H4-C2', 'H2-C', 'H2-C-O', 'C3-O6-Fe', 'C-O2', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'C-O2', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 6 ['H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 374 with 15 and 7 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-O', 'H']\n", - " \n", - "Fragments to allocate: 11 6 out of 14 6\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H2-O', 'C-O2', 'H4-C2', 'H2-C', 'H2-C-O', 'C3-O6-Fe', 'C-O2', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'C-O2', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-O', 'C-O2', 'H4-C2', 'H2-C', 'H2-C-O', 'C3-O6-Fe', 'C-O2', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 6 ['H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 375 with 15 and 7 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 12 0 out of 14 6\n", - "sublist 2 ['H14-C8-O5', 'H']\n", - "list1 15 ['C-O2', 'H2-O', 'C-O2', 'H4-C2', 'H2-C', 'H2-C-O', 'C3-O6-Fe', 'C-O2', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'H14-C8-O5', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H2-O', 'C-O2', 'H4-C2', 'H2-C', 'H2-C-O', 'C3-O6-Fe', 'C-O2', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 6 ['H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 376 with 15 and 7 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H14-C8-O5', 'H']\n", - " \n", - "Fragments to allocate: 12 1 out of 14 6\n", - "sublist 2 ['H2-C-O', 'H']\n", - "list1 15 ['H14-C8-O5', 'C-O2', 'H2-O', 'C-O2', 'H4-C2', 'H2-C', 'H2-C-O', 'C3-O6-Fe', 'C-O2', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H14-C8-O5', 'C-O2', 'H2-O', 'C-O2', 'H4-C2', 'H2-C', 'H2-C-O', 'C3-O6-Fe', 'C-O2', 'H2-C', 'H2-C', 'H4-C2', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 6 ['H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 377 with 15 and 7 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C-O', 'H']\n", - " \n", - "Fragments to allocate: 12 2 out of 14 6\n", - "sublist 2 ['H4-C2', 'H']\n", - "list1 15 ['H2-C-O', 'H14-C8-O5', 'C-O2', 'H2-O', 'C-O2', 'H4-C2', 'H2-C', 'H2-C-O', 'C3-O6-Fe', 'C-O2', 'H2-C', 'H2-C', 'H4-C2', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C-O', 'H14-C8-O5', 'C-O2', 'H2-O', 'C-O2', 'H4-C2', 'H2-C', 'H2-C-O', 'C3-O6-Fe', 'C-O2', 'H2-C', 'H2-C', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 6 ['H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 378 with 15 and 7 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H4-C2', 'H']\n", - " \n", - "Fragments to allocate: 12 3 out of 14 6\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H4-C2', 'H2-C-O', 'H14-C8-O5', 'C-O2', 'H2-O', 'C-O2', 'H4-C2', 'H2-C', 'H2-C-O', 'C3-O6-Fe', 'C-O2', 'H2-C', 'H2-C', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H4-C2', 'H2-C-O', 'H14-C8-O5', 'C-O2', 'H2-O', 'C-O2', 'H4-C2', 'H2-C', 'H2-C-O', 'C3-O6-Fe', 'C-O2', 'H2-C', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 6 ['H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 379 with 15 and 7 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 12 4 out of 14 6\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H2-C', 'H4-C2', 'H2-C-O', 'H14-C8-O5', 'C-O2', 'H2-O', 'C-O2', 'H4-C2', 'H2-C', 'H2-C-O', 'C3-O6-Fe', 'C-O2', 'H2-C', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H4-C2', 'H2-C-O', 'H14-C8-O5', 'C-O2', 'H2-O', 'C-O2', 'H4-C2', 'H2-C', 'H2-C-O', 'C3-O6-Fe', 'C-O2', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 6 ['H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 380 with 15 and 7 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 12 5 out of 14 6\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'H14-C8-O5', 'C-O2', 'H2-O', 'C-O2', 'H4-C2', 'H2-C', 'H2-C-O', 'C3-O6-Fe', 'C-O2', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'H14-C8-O5', 'C-O2', 'H2-O', 'C-O2', 'H4-C2', 'H2-C', 'H2-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 6 ['H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 381 with 15 and 7 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 12 6 out of 14 6\n", - "sublist 2 ['C3-O6-Fe', 'H']\n", - "list1 15 ['C-O2', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'H14-C8-O5', 'C-O2', 'H2-O', 'C-O2', 'H4-C2', 'H2-C', 'H2-C-O', 'C3-O6-Fe', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'H14-C8-O5', 'C-O2', 'H2-O', 'C-O2', 'H4-C2', 'H2-C', 'H2-C-O', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 6 ['H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 382 with 15 and 7 Remaining in each list\n", - "SEQUENTIAL All sending ['Fe', 'O', 'O', 'C', 'O', 'O', 'O', 'O', 'C', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C3-O6-Fe', 'H']\n", - " \n", - "Fragments to allocate: 13 0 out of 14 6\n", - "sublist 2 ['H14-C8-O5', 'H']\n", - "list1 15 ['C3-O6-Fe', 'C-O2', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'H14-C8-O5', 'C-O2', 'H2-O', 'C-O2', 'H4-C2', 'H2-C', 'H2-C-O', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C3-O6-Fe', 'C-O2', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'H14-C8-O5', 'C-O2', 'H2-O', 'C-O2', 'H4-C2', 'H2-C', 'H2-C-O', 'H19-C11-O6']\n", - "keeplist2 6 ['H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 383 with 15 and 7 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H14-C8-O5', 'H']\n", - " \n", - "Fragments to allocate: 13 1 out of 14 6\n", - "sublist 2 ['H2-C-O', 'H']\n", - "list1 15 ['H14-C8-O5', 'C3-O6-Fe', 'C-O2', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'H14-C8-O5', 'C-O2', 'H2-O', 'C-O2', 'H4-C2', 'H2-C', 'H2-C-O', 'H19-C11-O6']\n", - "list2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H14-C8-O5', 'C3-O6-Fe', 'C-O2', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'H14-C8-O5', 'C-O2', 'H2-O', 'C-O2', 'H4-C2', 'H2-C', 'H19-C11-O6']\n", - "keeplist2 6 ['H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 384 with 15 and 7 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C-O', 'H']\n", - " \n", - "Fragments to allocate: 13 2 out of 14 6\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H2-C-O', 'H14-C8-O5', 'C3-O6-Fe', 'C-O2', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'H14-C8-O5', 'C-O2', 'H2-O', 'C-O2', 'H4-C2', 'H2-C', 'H19-C11-O6']\n", - "list2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C-O', 'H14-C8-O5', 'C3-O6-Fe', 'C-O2', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'H14-C8-O5', 'C-O2', 'H2-O', 'C-O2', 'H4-C2', 'H19-C11-O6']\n", - "keeplist2 6 ['H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 385 with 15 and 7 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 13 3 out of 14 6\n", - "sublist 2 ['H4-C2', 'H']\n", - "list1 15 ['H2-C', 'H2-C-O', 'H14-C8-O5', 'C3-O6-Fe', 'C-O2', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'H14-C8-O5', 'C-O2', 'H2-O', 'C-O2', 'H4-C2', 'H19-C11-O6']\n", - "list2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H2-C-O', 'H14-C8-O5', 'C3-O6-Fe', 'C-O2', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'H14-C8-O5', 'C-O2', 'H2-O', 'C-O2', 'H19-C11-O6']\n", - "keeplist2 6 ['H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 386 with 15 and 7 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H4-C2', 'H']\n", - " \n", - "Fragments to allocate: 13 4 out of 14 6\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H4-C2', 'H2-C', 'H2-C-O', 'H14-C8-O5', 'C3-O6-Fe', 'C-O2', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'H14-C8-O5', 'C-O2', 'H2-O', 'C-O2', 'H19-C11-O6']\n", - "list2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H4-C2', 'H2-C', 'H2-C-O', 'H14-C8-O5', 'C3-O6-Fe', 'C-O2', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'H14-C8-O5', 'C-O2', 'H2-O', 'H19-C11-O6']\n", - "keeplist2 6 ['H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 387 with 15 and 7 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 13 5 out of 14 6\n", - "sublist 2 ['H2-O', 'H']\n", - "list1 15 ['C-O2', 'H4-C2', 'H2-C', 'H2-C-O', 'H14-C8-O5', 'C3-O6-Fe', 'C-O2', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'H14-C8-O5', 'C-O2', 'H2-O', 'H19-C11-O6']\n", - "list2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H4-C2', 'H2-C', 'H2-C-O', 'H14-C8-O5', 'C3-O6-Fe', 'C-O2', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'H14-C8-O5', 'C-O2', 'H19-C11-O6']\n", - "keeplist2 6 ['H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 388 with 15 and 7 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-O', 'H']\n", - " \n", - "Fragments to allocate: 13 6 out of 14 6\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H2-O', 'C-O2', 'H4-C2', 'H2-C', 'H2-C-O', 'H14-C8-O5', 'C3-O6-Fe', 'C-O2', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'H14-C8-O5', 'C-O2', 'H19-C11-O6']\n", - "list2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-O', 'C-O2', 'H4-C2', 'H2-C', 'H2-C-O', 'H14-C8-O5', 'C3-O6-Fe', 'C-O2', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'H14-C8-O5', 'H19-C11-O6']\n", - "keeplist2 6 ['H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 389 with 15 and 7 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 14 0 out of 14 6\n", - "sublist 2 ['H19-C11-O6', 'H']\n", - "list1 15 ['C-O2', 'H2-O', 'C-O2', 'H4-C2', 'H2-C', 'H2-C-O', 'H14-C8-O5', 'C3-O6-Fe', 'C-O2', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'H14-C8-O5', 'H19-C11-O6']\n", - "list2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H2-O', 'C-O2', 'H4-C2', 'H2-C', 'H2-C-O', 'H14-C8-O5', 'C3-O6-Fe', 'C-O2', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'H14-C8-O5']\n", - "keeplist2 6 ['H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 390 with 15 and 7 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 1\n", - "SPILT_SPECIES: Laplacian lap=array([[-2, 0, 0, ..., 0, 0, 0],\n", - " [ 0, -2, 0, ..., 0, 0, 0],\n", - " [ 0, 0, -2, ..., 0, 0, 0],\n", - " ...,\n", - " [ 0, 0, 0, ..., -1, 0, 0],\n", - " [ 0, 0, 0, ..., 0, -1, 0],\n", - " [ 0, 0, 0, ..., 0, 0, -1]])\n", - "SPILT_SPECIES: graph=<37x37 sparse matrix of type ''\n", - "\twith 109 stored elements in Compressed Sparse Row format>\n", - "COMBINE. received molecule: ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 37\n", - " Formula = H20-C11-O6\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - " from merge fragments\n", - "COMBINE: Fragment H20-C11-O6 added to avglist\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 1 ['H20-C11-O6']\n", - "SEQUENTIAL: badlist 0 []\n", - " \n", - "Fragments to allocate: 0 1 out of 14 5\n", - "sublist 2 ['H20-C11-O6', 'H']\n", - "list1 15 ['H20-C11-O6', 'C-O2', 'H2-O', 'C-O2', 'H4-C2', 'H2-C', 'H2-C-O', 'H14-C8-O5', 'C3-O6-Fe', 'C-O2', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'H14-C8-O5']\n", - "list2 6 ['H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H2-O', 'C-O2', 'H4-C2', 'H2-C', 'H2-C-O', 'H14-C8-O5', 'C3-O6-Fe', 'C-O2', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'H14-C8-O5']\n", - "keeplist2 5 ['H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 391 with 15 and 6 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H20-C11-O6', 'H']\n", - " \n", - "Fragments to allocate: 0 2 out of 14 5\n", - "sublist 2 ['H20-C11-O6', 'H']\n", - "list1 15 ['H20-C11-O6', 'C-O2', 'H2-O', 'C-O2', 'H4-C2', 'H2-C', 'H2-C-O', 'H14-C8-O5', 'C3-O6-Fe', 'C-O2', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'H14-C8-O5']\n", - "list2 6 ['H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H2-O', 'C-O2', 'H4-C2', 'H2-C', 'H2-C-O', 'H14-C8-O5', 'C3-O6-Fe', 'C-O2', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'H14-C8-O5']\n", - "keeplist2 5 ['H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 392 with 15 and 6 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 1\n", - "SPILT_SPECIES: Laplacian lap=array([[-2, 0, 0, ..., 0, 0, 0],\n", - " [ 0, -2, 0, ..., 0, 0, 0],\n", - " [ 0, 0, -2, ..., 0, 0, 0],\n", - " ...,\n", - " [ 0, 0, 0, ..., -1, 0, 0],\n", - " [ 0, 0, 0, ..., 0, -1, 0],\n", - " [ 0, 0, 0, ..., 0, 0, -1]])\n", - "SPILT_SPECIES: graph=<38x38 sparse matrix of type ''\n", - "\twith 112 stored elements in Compressed Sparse Row format>\n", - "COMBINE. received molecule: ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 38\n", - " Formula = H21-C11-O6\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - " from merge fragments\n", - "COMBINE: Fragment H21-C11-O6 added to avglist\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 1 ['H21-C11-O6']\n", - "SEQUENTIAL: badlist 0 []\n", - " \n", - "Fragments to allocate: 0 1 out of 14 4\n", - "sublist 2 ['H21-C11-O6', 'H']\n", - "list1 15 ['H21-C11-O6', 'C-O2', 'H2-O', 'C-O2', 'H4-C2', 'H2-C', 'H2-C-O', 'H14-C8-O5', 'C3-O6-Fe', 'C-O2', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'H14-C8-O5']\n", - "list2 5 ['H', 'H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H2-O', 'C-O2', 'H4-C2', 'H2-C', 'H2-C-O', 'H14-C8-O5', 'C3-O6-Fe', 'C-O2', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'H14-C8-O5']\n", - "keeplist2 4 ['H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 393 with 15 and 5 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 1\n", - "SPILT_SPECIES: Laplacian lap=array([[-2, 0, 0, ..., 0, 0, 0],\n", - " [ 0, -2, 0, ..., 0, 0, 0],\n", - " [ 0, 0, -2, ..., 0, 0, 0],\n", - " ...,\n", - " [ 0, 0, 0, ..., -1, 0, 0],\n", - " [ 0, 0, 0, ..., 0, -1, 0],\n", - " [ 0, 0, 0, ..., 0, 0, -1]])\n", - "SPILT_SPECIES: graph=<39x39 sparse matrix of type ''\n", - "\twith 115 stored elements in Compressed Sparse Row format>\n", - "COMBINE. received molecule: ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 39\n", - " Formula = H22-C11-O6\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - " from merge fragments\n", - "COMBINE: Fragment H22-C11-O6 added to avglist\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 1 ['H22-C11-O6']\n", - "SEQUENTIAL: badlist 0 []\n", - " \n", - "Fragments to allocate: 0 1 out of 14 3\n", - "sublist 2 ['H22-C11-O6', 'H']\n", - "list1 15 ['H22-C11-O6', 'C-O2', 'H2-O', 'C-O2', 'H4-C2', 'H2-C', 'H2-C-O', 'H14-C8-O5', 'C3-O6-Fe', 'C-O2', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'H14-C8-O5']\n", - "list2 4 ['H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H2-O', 'C-O2', 'H4-C2', 'H2-C', 'H2-C-O', 'H14-C8-O5', 'C3-O6-Fe', 'C-O2', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'H14-C8-O5']\n", - "keeplist2 3 ['H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 394 with 15 and 4 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H22-C11-O6', 'H']\n", - " \n", - "Fragments to allocate: 0 2 out of 14 3\n", - "sublist 2 ['H22-C11-O6', 'H']\n", - "list1 15 ['H22-C11-O6', 'C-O2', 'H2-O', 'C-O2', 'H4-C2', 'H2-C', 'H2-C-O', 'H14-C8-O5', 'C3-O6-Fe', 'C-O2', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'H14-C8-O5']\n", - "list2 4 ['H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H2-O', 'C-O2', 'H4-C2', 'H2-C', 'H2-C-O', 'H14-C8-O5', 'C3-O6-Fe', 'C-O2', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'H14-C8-O5']\n", - "keeplist2 3 ['H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 395 with 15 and 4 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H22-C11-O6', 'H']\n", - " \n", - "Fragments to allocate: 0 3 out of 14 3\n", - "sublist 2 ['H22-C11-O6', 'H']\n", - "list1 15 ['H22-C11-O6', 'C-O2', 'H2-O', 'C-O2', 'H4-C2', 'H2-C', 'H2-C-O', 'H14-C8-O5', 'C3-O6-Fe', 'C-O2', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'H14-C8-O5']\n", - "list2 4 ['H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H2-O', 'C-O2', 'H4-C2', 'H2-C', 'H2-C-O', 'H14-C8-O5', 'C3-O6-Fe', 'C-O2', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'H14-C8-O5']\n", - "keeplist2 3 ['H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 396 with 15 and 4 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H22-C11-O6', 'H']\n", - " \n", - "Fragments to allocate: 1 0 out of 14 3\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H22-C11-O6', 'C-O2', 'H2-O', 'C-O2', 'H4-C2', 'H2-C', 'H2-C-O', 'H14-C8-O5', 'C3-O6-Fe', 'C-O2', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'H14-C8-O5']\n", - "list2 4 ['H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H22-C11-O6', 'H2-O', 'C-O2', 'H4-C2', 'H2-C', 'H2-C-O', 'H14-C8-O5', 'C3-O6-Fe', 'C-O2', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'H14-C8-O5']\n", - "keeplist2 3 ['H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 397 with 15 and 4 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 1 1 out of 14 3\n", - "sublist 2 ['H22-C11-O6', 'H']\n", - "list1 15 ['C-O2', 'H22-C11-O6', 'H2-O', 'C-O2', 'H4-C2', 'H2-C', 'H2-C-O', 'H14-C8-O5', 'C3-O6-Fe', 'C-O2', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'H14-C8-O5']\n", - "list2 4 ['H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H2-O', 'C-O2', 'H4-C2', 'H2-C', 'H2-C-O', 'H14-C8-O5', 'C3-O6-Fe', 'C-O2', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'H14-C8-O5']\n", - "keeplist2 3 ['H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 398 with 15 and 4 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H22-C11-O6', 'H']\n", - " \n", - "Fragments to allocate: 1 2 out of 14 3\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H22-C11-O6', 'C-O2', 'H2-O', 'C-O2', 'H4-C2', 'H2-C', 'H2-C-O', 'H14-C8-O5', 'C3-O6-Fe', 'C-O2', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'H14-C8-O5']\n", - "list2 4 ['H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H22-C11-O6', 'H2-O', 'C-O2', 'H4-C2', 'H2-C', 'H2-C-O', 'H14-C8-O5', 'C3-O6-Fe', 'C-O2', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'H14-C8-O5']\n", - "keeplist2 3 ['H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 399 with 15 and 4 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 1 3 out of 14 3\n", - "sublist 2 ['H22-C11-O6', 'H']\n", - "list1 15 ['C-O2', 'H22-C11-O6', 'H2-O', 'C-O2', 'H4-C2', 'H2-C', 'H2-C-O', 'H14-C8-O5', 'C3-O6-Fe', 'C-O2', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'H14-C8-O5']\n", - "list2 4 ['H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H2-O', 'C-O2', 'H4-C2', 'H2-C', 'H2-C-O', 'H14-C8-O5', 'C3-O6-Fe', 'C-O2', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'H14-C8-O5']\n", - "keeplist2 3 ['H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 400 with 15 and 4 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H22-C11-O6', 'H']\n", - " \n", - "Fragments to allocate: 2 0 out of 14 3\n", - "sublist 2 ['H2-O', 'H']\n", - "list1 15 ['H22-C11-O6', 'C-O2', 'H2-O', 'C-O2', 'H4-C2', 'H2-C', 'H2-C-O', 'H14-C8-O5', 'C3-O6-Fe', 'C-O2', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'H14-C8-O5']\n", - "list2 4 ['H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H22-C11-O6', 'C-O2', 'C-O2', 'H4-C2', 'H2-C', 'H2-C-O', 'H14-C8-O5', 'C3-O6-Fe', 'C-O2', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'H14-C8-O5']\n", - "keeplist2 3 ['H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 401 with 15 and 4 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-O', 'H']\n", - " \n", - "Fragments to allocate: 2 1 out of 14 3\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H2-O', 'H22-C11-O6', 'C-O2', 'C-O2', 'H4-C2', 'H2-C', 'H2-C-O', 'H14-C8-O5', 'C3-O6-Fe', 'C-O2', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'H14-C8-O5']\n", - "list2 4 ['H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-O', 'H22-C11-O6', 'C-O2', 'H4-C2', 'H2-C', 'H2-C-O', 'H14-C8-O5', 'C3-O6-Fe', 'C-O2', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'H14-C8-O5']\n", - "keeplist2 3 ['H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 402 with 15 and 4 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 2 2 out of 14 3\n", - "sublist 2 ['H22-C11-O6', 'H']\n", - "list1 15 ['C-O2', 'H2-O', 'H22-C11-O6', 'C-O2', 'H4-C2', 'H2-C', 'H2-C-O', 'H14-C8-O5', 'C3-O6-Fe', 'C-O2', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'H14-C8-O5']\n", - "list2 4 ['H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H2-O', 'C-O2', 'H4-C2', 'H2-C', 'H2-C-O', 'H14-C8-O5', 'C3-O6-Fe', 'C-O2', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'H14-C8-O5']\n", - "keeplist2 3 ['H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 403 with 15 and 4 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H22-C11-O6', 'H']\n", - " \n", - "Fragments to allocate: 2 3 out of 14 3\n", - "sublist 2 ['H2-O', 'H']\n", - "list1 15 ['H22-C11-O6', 'C-O2', 'H2-O', 'C-O2', 'H4-C2', 'H2-C', 'H2-C-O', 'H14-C8-O5', 'C3-O6-Fe', 'C-O2', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'H14-C8-O5']\n", - "list2 4 ['H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H22-C11-O6', 'C-O2', 'C-O2', 'H4-C2', 'H2-C', 'H2-C-O', 'H14-C8-O5', 'C3-O6-Fe', 'C-O2', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'H14-C8-O5']\n", - "keeplist2 3 ['H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 404 with 15 and 4 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-O', 'H']\n", - " \n", - "Fragments to allocate: 3 0 out of 14 3\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H2-O', 'H22-C11-O6', 'C-O2', 'C-O2', 'H4-C2', 'H2-C', 'H2-C-O', 'H14-C8-O5', 'C3-O6-Fe', 'C-O2', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'H14-C8-O5']\n", - "list2 4 ['H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-O', 'H22-C11-O6', 'C-O2', 'H4-C2', 'H2-C', 'H2-C-O', 'H14-C8-O5', 'C3-O6-Fe', 'C-O2', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'H14-C8-O5']\n", - "keeplist2 3 ['H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 405 with 15 and 4 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 3 1 out of 14 3\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['C-O2', 'H2-O', 'H22-C11-O6', 'C-O2', 'H4-C2', 'H2-C', 'H2-C-O', 'H14-C8-O5', 'C3-O6-Fe', 'C-O2', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'H14-C8-O5']\n", - "list2 4 ['H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H2-O', 'H22-C11-O6', 'H4-C2', 'H2-C', 'H2-C-O', 'H14-C8-O5', 'C3-O6-Fe', 'C-O2', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'H14-C8-O5']\n", - "keeplist2 3 ['H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 406 with 15 and 4 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 3 2 out of 14 3\n", - "sublist 2 ['H22-C11-O6', 'H']\n", - "list1 15 ['C-O2', 'C-O2', 'H2-O', 'H22-C11-O6', 'H4-C2', 'H2-C', 'H2-C-O', 'H14-C8-O5', 'C3-O6-Fe', 'C-O2', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'H14-C8-O5']\n", - "list2 4 ['H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'C-O2', 'H2-O', 'H4-C2', 'H2-C', 'H2-C-O', 'H14-C8-O5', 'C3-O6-Fe', 'C-O2', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'H14-C8-O5']\n", - "keeplist2 3 ['H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 407 with 15 and 4 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H22-C11-O6', 'H']\n", - " \n", - "Fragments to allocate: 3 3 out of 14 3\n", - "sublist 2 ['H2-O', 'H']\n", - "list1 15 ['H22-C11-O6', 'C-O2', 'C-O2', 'H2-O', 'H4-C2', 'H2-C', 'H2-C-O', 'H14-C8-O5', 'C3-O6-Fe', 'C-O2', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'H14-C8-O5']\n", - "list2 4 ['H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H22-C11-O6', 'C-O2', 'C-O2', 'H4-C2', 'H2-C', 'H2-C-O', 'H14-C8-O5', 'C3-O6-Fe', 'C-O2', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'H14-C8-O5']\n", - "keeplist2 3 ['H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 408 with 15 and 4 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-O', 'H']\n", - " \n", - "Fragments to allocate: 4 0 out of 14 3\n", - "sublist 2 ['H4-C2', 'H']\n", - "list1 15 ['H2-O', 'H22-C11-O6', 'C-O2', 'C-O2', 'H4-C2', 'H2-C', 'H2-C-O', 'H14-C8-O5', 'C3-O6-Fe', 'C-O2', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'H14-C8-O5']\n", - "list2 4 ['H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-O', 'H22-C11-O6', 'C-O2', 'C-O2', 'H2-C', 'H2-C-O', 'H14-C8-O5', 'C3-O6-Fe', 'C-O2', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'H14-C8-O5']\n", - "keeplist2 3 ['H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 409 with 15 and 4 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H4-C2', 'H']\n", - " \n", - "Fragments to allocate: 4 1 out of 14 3\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H4-C2', 'H2-O', 'H22-C11-O6', 'C-O2', 'C-O2', 'H2-C', 'H2-C-O', 'H14-C8-O5', 'C3-O6-Fe', 'C-O2', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'H14-C8-O5']\n", - "list2 4 ['H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H4-C2', 'H2-O', 'H22-C11-O6', 'C-O2', 'H2-C', 'H2-C-O', 'H14-C8-O5', 'C3-O6-Fe', 'C-O2', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'H14-C8-O5']\n", - "keeplist2 3 ['H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 410 with 15 and 4 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 4 2 out of 14 3\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['C-O2', 'H4-C2', 'H2-O', 'H22-C11-O6', 'C-O2', 'H2-C', 'H2-C-O', 'H14-C8-O5', 'C3-O6-Fe', 'C-O2', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'H14-C8-O5']\n", - "list2 4 ['H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H4-C2', 'H2-O', 'H22-C11-O6', 'H2-C', 'H2-C-O', 'H14-C8-O5', 'C3-O6-Fe', 'C-O2', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'H14-C8-O5']\n", - "keeplist2 3 ['H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 411 with 15 and 4 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 4 3 out of 14 3\n", - "sublist 2 ['H22-C11-O6', 'H']\n", - "list1 15 ['C-O2', 'C-O2', 'H4-C2', 'H2-O', 'H22-C11-O6', 'H2-C', 'H2-C-O', 'H14-C8-O5', 'C3-O6-Fe', 'C-O2', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'H14-C8-O5']\n", - "list2 4 ['H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'C-O2', 'H4-C2', 'H2-O', 'H2-C', 'H2-C-O', 'H14-C8-O5', 'C3-O6-Fe', 'C-O2', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'H14-C8-O5']\n", - "keeplist2 3 ['H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 412 with 15 and 4 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H22-C11-O6', 'H']\n", - " \n", - "Fragments to allocate: 5 0 out of 14 3\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H22-C11-O6', 'C-O2', 'C-O2', 'H4-C2', 'H2-O', 'H2-C', 'H2-C-O', 'H14-C8-O5', 'C3-O6-Fe', 'C-O2', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'H14-C8-O5']\n", - "list2 4 ['H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H22-C11-O6', 'C-O2', 'C-O2', 'H4-C2', 'H2-O', 'H2-C-O', 'H14-C8-O5', 'C3-O6-Fe', 'C-O2', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'H14-C8-O5']\n", - "keeplist2 3 ['H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 413 with 15 and 4 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 5 1 out of 14 3\n", - "sublist 2 ['H2-O', 'H']\n", - "list1 15 ['H2-C', 'H22-C11-O6', 'C-O2', 'C-O2', 'H4-C2', 'H2-O', 'H2-C-O', 'H14-C8-O5', 'C3-O6-Fe', 'C-O2', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'H14-C8-O5']\n", - "list2 4 ['H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H22-C11-O6', 'C-O2', 'C-O2', 'H4-C2', 'H2-C-O', 'H14-C8-O5', 'C3-O6-Fe', 'C-O2', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'H14-C8-O5']\n", - "keeplist2 3 ['H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 414 with 15 and 4 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-O', 'H']\n", - " \n", - "Fragments to allocate: 5 2 out of 14 3\n", - "sublist 2 ['H4-C2', 'H']\n", - "list1 15 ['H2-O', 'H2-C', 'H22-C11-O6', 'C-O2', 'C-O2', 'H4-C2', 'H2-C-O', 'H14-C8-O5', 'C3-O6-Fe', 'C-O2', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'H14-C8-O5']\n", - "list2 4 ['H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-O', 'H2-C', 'H22-C11-O6', 'C-O2', 'C-O2', 'H2-C-O', 'H14-C8-O5', 'C3-O6-Fe', 'C-O2', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'H14-C8-O5']\n", - "keeplist2 3 ['H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 415 with 15 and 4 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H4-C2', 'H']\n", - " \n", - "Fragments to allocate: 5 3 out of 14 3\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H4-C2', 'H2-O', 'H2-C', 'H22-C11-O6', 'C-O2', 'C-O2', 'H2-C-O', 'H14-C8-O5', 'C3-O6-Fe', 'C-O2', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'H14-C8-O5']\n", - "list2 4 ['H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H4-C2', 'H2-O', 'H2-C', 'H22-C11-O6', 'C-O2', 'H2-C-O', 'H14-C8-O5', 'C3-O6-Fe', 'C-O2', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'H14-C8-O5']\n", - "keeplist2 3 ['H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 416 with 15 and 4 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 6 0 out of 14 3\n", - "sublist 2 ['H2-C-O', 'H']\n", - "list1 15 ['C-O2', 'H4-C2', 'H2-O', 'H2-C', 'H22-C11-O6', 'C-O2', 'H2-C-O', 'H14-C8-O5', 'C3-O6-Fe', 'C-O2', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'H14-C8-O5']\n", - "list2 4 ['H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H4-C2', 'H2-O', 'H2-C', 'H22-C11-O6', 'C-O2', 'H14-C8-O5', 'C3-O6-Fe', 'C-O2', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'H14-C8-O5']\n", - "keeplist2 3 ['H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 417 with 15 and 4 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C-O', 'H']\n", - " \n", - "Fragments to allocate: 6 1 out of 14 3\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H2-C-O', 'C-O2', 'H4-C2', 'H2-O', 'H2-C', 'H22-C11-O6', 'C-O2', 'H14-C8-O5', 'C3-O6-Fe', 'C-O2', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'H14-C8-O5']\n", - "list2 4 ['H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C-O', 'C-O2', 'H4-C2', 'H2-O', 'H2-C', 'H22-C11-O6', 'H14-C8-O5', 'C3-O6-Fe', 'C-O2', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'H14-C8-O5']\n", - "keeplist2 3 ['H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 418 with 15 and 4 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 6 2 out of 14 3\n", - "sublist 2 ['H22-C11-O6', 'H']\n", - "list1 15 ['C-O2', 'H2-C-O', 'C-O2', 'H4-C2', 'H2-O', 'H2-C', 'H22-C11-O6', 'H14-C8-O5', 'C3-O6-Fe', 'C-O2', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'H14-C8-O5']\n", - "list2 4 ['H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H2-C-O', 'C-O2', 'H4-C2', 'H2-O', 'H2-C', 'H14-C8-O5', 'C3-O6-Fe', 'C-O2', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'H14-C8-O5']\n", - "keeplist2 3 ['H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 419 with 15 and 4 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H22-C11-O6', 'H']\n", - " \n", - "Fragments to allocate: 6 3 out of 14 3\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H22-C11-O6', 'C-O2', 'H2-C-O', 'C-O2', 'H4-C2', 'H2-O', 'H2-C', 'H14-C8-O5', 'C3-O6-Fe', 'C-O2', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'H14-C8-O5']\n", - "list2 4 ['H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H22-C11-O6', 'C-O2', 'H2-C-O', 'C-O2', 'H4-C2', 'H2-O', 'H14-C8-O5', 'C3-O6-Fe', 'C-O2', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'H14-C8-O5']\n", - "keeplist2 3 ['H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 420 with 15 and 4 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 7 0 out of 14 3\n", - "sublist 2 ['H14-C8-O5', 'H']\n", - "list1 15 ['H2-C', 'H22-C11-O6', 'C-O2', 'H2-C-O', 'C-O2', 'H4-C2', 'H2-O', 'H14-C8-O5', 'C3-O6-Fe', 'C-O2', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'H14-C8-O5']\n", - "list2 4 ['H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'H22-C11-O6', 'C-O2', 'H2-C-O', 'C-O2', 'H4-C2', 'H2-O', 'C3-O6-Fe', 'C-O2', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'H14-C8-O5']\n", - "keeplist2 3 ['H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 421 with 15 and 4 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H14-C8-O5', 'H']\n", - " \n", - "Fragments to allocate: 7 1 out of 14 3\n", - "sublist 2 ['H2-O', 'H']\n", - "list1 15 ['H14-C8-O5', 'H2-C', 'H22-C11-O6', 'C-O2', 'H2-C-O', 'C-O2', 'H4-C2', 'H2-O', 'C3-O6-Fe', 'C-O2', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'H14-C8-O5']\n", - "list2 4 ['H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H14-C8-O5', 'H2-C', 'H22-C11-O6', 'C-O2', 'H2-C-O', 'C-O2', 'H4-C2', 'C3-O6-Fe', 'C-O2', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'H14-C8-O5']\n", - "keeplist2 3 ['H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 422 with 15 and 4 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-O', 'H']\n", - " \n", - "Fragments to allocate: 7 2 out of 14 3\n", - "sublist 2 ['H4-C2', 'H']\n", - "list1 15 ['H2-O', 'H14-C8-O5', 'H2-C', 'H22-C11-O6', 'C-O2', 'H2-C-O', 'C-O2', 'H4-C2', 'C3-O6-Fe', 'C-O2', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'H14-C8-O5']\n", - "list2 4 ['H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-O', 'H14-C8-O5', 'H2-C', 'H22-C11-O6', 'C-O2', 'H2-C-O', 'C-O2', 'C3-O6-Fe', 'C-O2', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'H14-C8-O5']\n", - "keeplist2 3 ['H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 423 with 15 and 4 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H4-C2', 'H']\n", - " \n", - "Fragments to allocate: 7 3 out of 14 3\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H4-C2', 'H2-O', 'H14-C8-O5', 'H2-C', 'H22-C11-O6', 'C-O2', 'H2-C-O', 'C-O2', 'C3-O6-Fe', 'C-O2', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'H14-C8-O5']\n", - "list2 4 ['H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H4-C2', 'H2-O', 'H14-C8-O5', 'H2-C', 'H22-C11-O6', 'C-O2', 'H2-C-O', 'C3-O6-Fe', 'C-O2', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'H14-C8-O5']\n", - "keeplist2 3 ['H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 424 with 15 and 4 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 8 0 out of 14 3\n", - "sublist 2 ['C3-O6-Fe', 'H']\n", - "list1 15 ['C-O2', 'H4-C2', 'H2-O', 'H14-C8-O5', 'H2-C', 'H22-C11-O6', 'C-O2', 'H2-C-O', 'C3-O6-Fe', 'C-O2', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'H14-C8-O5']\n", - "list2 4 ['H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H4-C2', 'H2-O', 'H14-C8-O5', 'H2-C', 'H22-C11-O6', 'C-O2', 'H2-C-O', 'C-O2', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'H14-C8-O5']\n", - "keeplist2 3 ['H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 425 with 15 and 4 Remaining in each list\n", - "SEQUENTIAL All sending ['Fe', 'O', 'O', 'C', 'O', 'O', 'O', 'O', 'C', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C3-O6-Fe', 'H']\n", - " \n", - "Fragments to allocate: 8 1 out of 14 3\n", - "sublist 2 ['H2-C-O', 'H']\n", - "list1 15 ['C3-O6-Fe', 'C-O2', 'H4-C2', 'H2-O', 'H14-C8-O5', 'H2-C', 'H22-C11-O6', 'C-O2', 'H2-C-O', 'C-O2', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'H14-C8-O5']\n", - "list2 4 ['H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C3-O6-Fe', 'C-O2', 'H4-C2', 'H2-O', 'H14-C8-O5', 'H2-C', 'H22-C11-O6', 'C-O2', 'C-O2', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'H14-C8-O5']\n", - "keeplist2 3 ['H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 426 with 15 and 4 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C-O', 'H']\n", - " \n", - "Fragments to allocate: 8 2 out of 14 3\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H2-C-O', 'C3-O6-Fe', 'C-O2', 'H4-C2', 'H2-O', 'H14-C8-O5', 'H2-C', 'H22-C11-O6', 'C-O2', 'C-O2', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'H14-C8-O5']\n", - "list2 4 ['H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C-O', 'C3-O6-Fe', 'C-O2', 'H4-C2', 'H2-O', 'H14-C8-O5', 'H2-C', 'H22-C11-O6', 'C-O2', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'H14-C8-O5']\n", - "keeplist2 3 ['H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 427 with 15 and 4 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 8 3 out of 14 3\n", - "sublist 2 ['H22-C11-O6', 'H']\n", - "list1 15 ['C-O2', 'H2-C-O', 'C3-O6-Fe', 'C-O2', 'H4-C2', 'H2-O', 'H14-C8-O5', 'H2-C', 'H22-C11-O6', 'C-O2', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'H14-C8-O5']\n", - "list2 4 ['H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H2-C-O', 'C3-O6-Fe', 'C-O2', 'H4-C2', 'H2-O', 'H14-C8-O5', 'H2-C', 'C-O2', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'H14-C8-O5']\n", - "keeplist2 3 ['H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 428 with 15 and 4 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H22-C11-O6', 'H']\n", - " \n", - "Fragments to allocate: 9 0 out of 14 3\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H22-C11-O6', 'C-O2', 'H2-C-O', 'C3-O6-Fe', 'C-O2', 'H4-C2', 'H2-O', 'H14-C8-O5', 'H2-C', 'C-O2', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'H14-C8-O5']\n", - "list2 4 ['H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H22-C11-O6', 'C-O2', 'H2-C-O', 'C3-O6-Fe', 'C-O2', 'H4-C2', 'H2-O', 'H14-C8-O5', 'H2-C', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'H14-C8-O5']\n", - "keeplist2 3 ['H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 429 with 15 and 4 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 9 1 out of 14 3\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['C-O2', 'H22-C11-O6', 'C-O2', 'H2-C-O', 'C3-O6-Fe', 'C-O2', 'H4-C2', 'H2-O', 'H14-C8-O5', 'H2-C', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'H14-C8-O5']\n", - "list2 4 ['H', 'H', 'H', 'H']\n", - "keeplist1 14 ['C-O2', 'H22-C11-O6', 'C-O2', 'H2-C-O', 'C3-O6-Fe', 'C-O2', 'H4-C2', 'H2-O', 'H14-C8-O5', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'H14-C8-O5']\n", - "keeplist2 3 ['H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 430 with 15 and 4 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 9 2 out of 14 3\n", - "sublist 2 ['H14-C8-O5', 'H']\n", - "list1 15 ['H2-C', 'C-O2', 'H22-C11-O6', 'C-O2', 'H2-C-O', 'C3-O6-Fe', 'C-O2', 'H4-C2', 'H2-O', 'H14-C8-O5', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'H14-C8-O5']\n", - "list2 4 ['H', 'H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'C-O2', 'H22-C11-O6', 'C-O2', 'H2-C-O', 'C3-O6-Fe', 'C-O2', 'H4-C2', 'H2-O', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'H14-C8-O5']\n", - "keeplist2 3 ['H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 431 with 15 and 4 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 1\n", - "SPILT_SPECIES: Laplacian lap=array([[-2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0],\n", - " [ 0, -2, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [ 0, 0, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,\n", - " 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [ 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0],\n", - " [ 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0],\n", - " [ 1, 0, 0, 0, 0, -4, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [ 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [ 0, 0, 0, 0, 0, 1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [ 0, 1, 0, 0, 0, 1, 0, 0, -4, 1, 1, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [ 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [ 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [ 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -4, 1, 1, 1, 0,\n", - " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, 0, 0,\n", - " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [ 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, -4, 1,\n", - " 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1,\n", - " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,\n", - " -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [ 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, -4, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0],\n", - " [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [ 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 1, 0, 0, -3, 0, 0, 0, 0, 0, 0, 1],\n", - " [ 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, -4, 1, 1, 1, 0, 0, 0],\n", - " [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0],\n", - " [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 1, 0, -1, 0, 0, 0, 0],\n", - " [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 1, 0, 0, -4, 1, 1, 0],\n", - " [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0],\n", - " [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, 0],\n", - " [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, -1]])\n", - "SPILT_SPECIES: graph=<28x28 sparse matrix of type ''\n", - "\twith 82 stored elements in Compressed Sparse Row format>\n", - "COMBINE. received molecule: ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 28\n", - " Formula = H15-C8-O5\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - " from merge fragments\n", - "COMBINE: Fragment H15-C8-O5 added to avglist\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 1 ['H15-C8-O5']\n", - "SEQUENTIAL: badlist 0 []\n", - " \n", - "Fragments to allocate: 0 1 out of 14 2\n", - "sublist 2 ['H15-C8-O5', 'H']\n", - "list1 15 ['H15-C8-O5', 'H2-C', 'C-O2', 'H22-C11-O6', 'C-O2', 'H2-C-O', 'C3-O6-Fe', 'C-O2', 'H4-C2', 'H2-O', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'H14-C8-O5']\n", - "list2 3 ['H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'C-O2', 'H22-C11-O6', 'C-O2', 'H2-C-O', 'C3-O6-Fe', 'C-O2', 'H4-C2', 'H2-O', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'H14-C8-O5']\n", - "keeplist2 2 ['H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 432 with 15 and 3 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H15-C8-O5', 'H']\n", - " \n", - "Fragments to allocate: 0 2 out of 14 2\n", - "sublist 2 ['H15-C8-O5', 'H']\n", - "list1 15 ['H15-C8-O5', 'H2-C', 'C-O2', 'H22-C11-O6', 'C-O2', 'H2-C-O', 'C3-O6-Fe', 'C-O2', 'H4-C2', 'H2-O', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'H14-C8-O5']\n", - "list2 3 ['H', 'H', 'H']\n", - "keeplist1 14 ['H2-C', 'C-O2', 'H22-C11-O6', 'C-O2', 'H2-C-O', 'C3-O6-Fe', 'C-O2', 'H4-C2', 'H2-O', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'H14-C8-O5']\n", - "keeplist2 2 ['H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 433 with 15 and 3 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 1\n", - "SPILT_SPECIES: Laplacian lap=array([[-2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0],\n", - " [ 0, -2, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [ 0, 0, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,\n", - " 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [ 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [ 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0],\n", - " [ 1, 0, 0, 0, 0, -4, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [ 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [ 0, 0, 0, 0, 0, 1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [ 0, 1, 0, 0, 0, 1, 0, 0, -4, 1, 1, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [ 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [ 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [ 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -4, 1, 1, 1, 0,\n", - " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, 0, 0,\n", - " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [ 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, -4, 1,\n", - " 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1,\n", - " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,\n", - " -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [ 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, -4, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [ 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 1, 0, 0, -4, 0, 0, 0, 0, 0, 0, 1, 1],\n", - " [ 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, -4, 1, 1, 1, 0, 0, 0, 0],\n", - " [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0],\n", - " [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 1, 0, -1, 0, 0, 0, 0, 0],\n", - " [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 1, 0, 0, -4, 1, 1, 0, 0],\n", - " [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0],\n", - " [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, 0, 0],\n", - " [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, -1, 0],\n", - " [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, -1]])\n", - "SPILT_SPECIES: graph=<29x29 sparse matrix of type ''\n", - "\twith 85 stored elements in Compressed Sparse Row format>\n", - "COMBINE. received molecule: ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 29\n", - " Formula = H16-C8-O5\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - " from merge fragments\n", - "COMBINE: Fragment H16-C8-O5 added to avglist\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 1 ['H16-C8-O5']\n", - "SEQUENTIAL: badlist 0 []\n", - " \n", - "Fragments to allocate: 0 1 out of 14 1\n", - "sublist 2 ['H16-C8-O5', 'H']\n", - "list1 15 ['H16-C8-O5', 'H2-C', 'C-O2', 'H22-C11-O6', 'C-O2', 'H2-C-O', 'C3-O6-Fe', 'C-O2', 'H4-C2', 'H2-O', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'H14-C8-O5']\n", - "list2 2 ['H', 'H']\n", - "keeplist1 14 ['H2-C', 'C-O2', 'H22-C11-O6', 'C-O2', 'H2-C-O', 'C3-O6-Fe', 'C-O2', 'H4-C2', 'H2-O', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'H14-C8-O5']\n", - "keeplist2 1 ['H']\n", - "\n", - "SEQUENTIAL All iteration 434 with 15 and 2 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H16-C8-O5', 'H']\n", - " \n", - "Fragments to allocate: 1 0 out of 14 1\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H16-C8-O5', 'H2-C', 'C-O2', 'H22-C11-O6', 'C-O2', 'H2-C-O', 'C3-O6-Fe', 'C-O2', 'H4-C2', 'H2-O', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'H14-C8-O5']\n", - "list2 2 ['H', 'H']\n", - "keeplist1 14 ['H16-C8-O5', 'C-O2', 'H22-C11-O6', 'C-O2', 'H2-C-O', 'C3-O6-Fe', 'C-O2', 'H4-C2', 'H2-O', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'H14-C8-O5']\n", - "keeplist2 1 ['H']\n", - "\n", - "SEQUENTIAL All iteration 435 with 15 and 2 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 1 1 out of 14 1\n", - "sublist 2 ['H16-C8-O5', 'H']\n", - "list1 15 ['H2-C', 'H16-C8-O5', 'C-O2', 'H22-C11-O6', 'C-O2', 'H2-C-O', 'C3-O6-Fe', 'C-O2', 'H4-C2', 'H2-O', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'H14-C8-O5']\n", - "list2 2 ['H', 'H']\n", - "keeplist1 14 ['H2-C', 'C-O2', 'H22-C11-O6', 'C-O2', 'H2-C-O', 'C3-O6-Fe', 'C-O2', 'H4-C2', 'H2-O', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'H14-C8-O5']\n", - "keeplist2 1 ['H']\n", - "\n", - "SEQUENTIAL All iteration 436 with 15 and 2 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H16-C8-O5', 'H']\n", - " \n", - "Fragments to allocate: 2 0 out of 14 1\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H16-C8-O5', 'H2-C', 'C-O2', 'H22-C11-O6', 'C-O2', 'H2-C-O', 'C3-O6-Fe', 'C-O2', 'H4-C2', 'H2-O', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'H14-C8-O5']\n", - "list2 2 ['H', 'H']\n", - "keeplist1 14 ['H16-C8-O5', 'H2-C', 'H22-C11-O6', 'C-O2', 'H2-C-O', 'C3-O6-Fe', 'C-O2', 'H4-C2', 'H2-O', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'H14-C8-O5']\n", - "keeplist2 1 ['H']\n", - "\n", - "SEQUENTIAL All iteration 437 with 15 and 2 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 2 1 out of 14 1\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['C-O2', 'H16-C8-O5', 'H2-C', 'H22-C11-O6', 'C-O2', 'H2-C-O', 'C3-O6-Fe', 'C-O2', 'H4-C2', 'H2-O', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'H14-C8-O5']\n", - "list2 2 ['H', 'H']\n", - "keeplist1 14 ['C-O2', 'H16-C8-O5', 'H22-C11-O6', 'C-O2', 'H2-C-O', 'C3-O6-Fe', 'C-O2', 'H4-C2', 'H2-O', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'H14-C8-O5']\n", - "keeplist2 1 ['H']\n", - "\n", - "SEQUENTIAL All iteration 438 with 15 and 2 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 3 0 out of 14 1\n", - "sublist 2 ['H22-C11-O6', 'H']\n", - "list1 15 ['H2-C', 'C-O2', 'H16-C8-O5', 'H22-C11-O6', 'C-O2', 'H2-C-O', 'C3-O6-Fe', 'C-O2', 'H4-C2', 'H2-O', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'H14-C8-O5']\n", - "list2 2 ['H', 'H']\n", - "keeplist1 14 ['H2-C', 'C-O2', 'H16-C8-O5', 'C-O2', 'H2-C-O', 'C3-O6-Fe', 'C-O2', 'H4-C2', 'H2-O', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'H14-C8-O5']\n", - "keeplist2 1 ['H']\n", - "\n", - "SEQUENTIAL All iteration 439 with 15 and 2 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H22-C11-O6', 'H']\n", - " \n", - "Fragments to allocate: 3 1 out of 14 1\n", - "sublist 2 ['H16-C8-O5', 'H']\n", - "list1 15 ['H22-C11-O6', 'H2-C', 'C-O2', 'H16-C8-O5', 'C-O2', 'H2-C-O', 'C3-O6-Fe', 'C-O2', 'H4-C2', 'H2-O', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'H14-C8-O5']\n", - "list2 2 ['H', 'H']\n", - "keeplist1 14 ['H22-C11-O6', 'H2-C', 'C-O2', 'C-O2', 'H2-C-O', 'C3-O6-Fe', 'C-O2', 'H4-C2', 'H2-O', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'H14-C8-O5']\n", - "keeplist2 1 ['H']\n", - "\n", - "SEQUENTIAL All iteration 440 with 15 and 2 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H16-C8-O5', 'H']\n", - " \n", - "Fragments to allocate: 4 0 out of 14 1\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H16-C8-O5', 'H22-C11-O6', 'H2-C', 'C-O2', 'C-O2', 'H2-C-O', 'C3-O6-Fe', 'C-O2', 'H4-C2', 'H2-O', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'H14-C8-O5']\n", - "list2 2 ['H', 'H']\n", - "keeplist1 14 ['H16-C8-O5', 'H22-C11-O6', 'H2-C', 'C-O2', 'H2-C-O', 'C3-O6-Fe', 'C-O2', 'H4-C2', 'H2-O', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'H14-C8-O5']\n", - "keeplist2 1 ['H']\n", - "\n", - "SEQUENTIAL All iteration 441 with 15 and 2 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 4 1 out of 14 1\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['C-O2', 'H16-C8-O5', 'H22-C11-O6', 'H2-C', 'C-O2', 'H2-C-O', 'C3-O6-Fe', 'C-O2', 'H4-C2', 'H2-O', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'H14-C8-O5']\n", - "list2 2 ['H', 'H']\n", - "keeplist1 14 ['C-O2', 'H16-C8-O5', 'H22-C11-O6', 'H2-C', 'H2-C-O', 'C3-O6-Fe', 'C-O2', 'H4-C2', 'H2-O', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'H14-C8-O5']\n", - "keeplist2 1 ['H']\n", - "\n", - "SEQUENTIAL All iteration 442 with 15 and 2 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 5 0 out of 14 1\n", - "sublist 2 ['H2-C-O', 'H']\n", - "list1 15 ['C-O2', 'C-O2', 'H16-C8-O5', 'H22-C11-O6', 'H2-C', 'H2-C-O', 'C3-O6-Fe', 'C-O2', 'H4-C2', 'H2-O', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'H14-C8-O5']\n", - "list2 2 ['H', 'H']\n", - "keeplist1 14 ['C-O2', 'C-O2', 'H16-C8-O5', 'H22-C11-O6', 'H2-C', 'C3-O6-Fe', 'C-O2', 'H4-C2', 'H2-O', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'H14-C8-O5']\n", - "keeplist2 1 ['H']\n", - "\n", - "SEQUENTIAL All iteration 443 with 15 and 2 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C-O', 'H']\n", - " \n", - "Fragments to allocate: 5 1 out of 14 1\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H2-C-O', 'C-O2', 'C-O2', 'H16-C8-O5', 'H22-C11-O6', 'H2-C', 'C3-O6-Fe', 'C-O2', 'H4-C2', 'H2-O', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'H14-C8-O5']\n", - "list2 2 ['H', 'H']\n", - "keeplist1 14 ['H2-C-O', 'C-O2', 'C-O2', 'H16-C8-O5', 'H22-C11-O6', 'C3-O6-Fe', 'C-O2', 'H4-C2', 'H2-O', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'H14-C8-O5']\n", - "keeplist2 1 ['H']\n", - "\n", - "SEQUENTIAL All iteration 444 with 15 and 2 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 6 0 out of 14 1\n", - "sublist 2 ['C3-O6-Fe', 'H']\n", - "list1 15 ['H2-C', 'H2-C-O', 'C-O2', 'C-O2', 'H16-C8-O5', 'H22-C11-O6', 'C3-O6-Fe', 'C-O2', 'H4-C2', 'H2-O', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'H14-C8-O5']\n", - "list2 2 ['H', 'H']\n", - "keeplist1 14 ['H2-C', 'H2-C-O', 'C-O2', 'C-O2', 'H16-C8-O5', 'H22-C11-O6', 'C-O2', 'H4-C2', 'H2-O', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'H14-C8-O5']\n", - "keeplist2 1 ['H']\n", - "\n", - "SEQUENTIAL All iteration 445 with 15 and 2 Remaining in each list\n", - "SEQUENTIAL All sending ['Fe', 'O', 'O', 'C', 'O', 'O', 'O', 'O', 'C', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C3-O6-Fe', 'H']\n", - " \n", - "Fragments to allocate: 6 1 out of 14 1\n", - "sublist 2 ['H22-C11-O6', 'H']\n", - "list1 15 ['C3-O6-Fe', 'H2-C', 'H2-C-O', 'C-O2', 'C-O2', 'H16-C8-O5', 'H22-C11-O6', 'C-O2', 'H4-C2', 'H2-O', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'H14-C8-O5']\n", - "list2 2 ['H', 'H']\n", - "keeplist1 14 ['C3-O6-Fe', 'H2-C', 'H2-C-O', 'C-O2', 'C-O2', 'H16-C8-O5', 'C-O2', 'H4-C2', 'H2-O', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'H14-C8-O5']\n", - "keeplist2 1 ['H']\n", - "\n", - "SEQUENTIAL All iteration 446 with 15 and 2 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H22-C11-O6', 'H']\n", - " \n", - "Fragments to allocate: 7 0 out of 14 1\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H22-C11-O6', 'C3-O6-Fe', 'H2-C', 'H2-C-O', 'C-O2', 'C-O2', 'H16-C8-O5', 'C-O2', 'H4-C2', 'H2-O', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'H14-C8-O5']\n", - "list2 2 ['H', 'H']\n", - "keeplist1 14 ['H22-C11-O6', 'C3-O6-Fe', 'H2-C', 'H2-C-O', 'C-O2', 'C-O2', 'H16-C8-O5', 'H4-C2', 'H2-O', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'H14-C8-O5']\n", - "keeplist2 1 ['H']\n", - "\n", - "SEQUENTIAL All iteration 447 with 15 and 2 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 7 1 out of 14 1\n", - "sublist 2 ['H16-C8-O5', 'H']\n", - "list1 15 ['C-O2', 'H22-C11-O6', 'C3-O6-Fe', 'H2-C', 'H2-C-O', 'C-O2', 'C-O2', 'H16-C8-O5', 'H4-C2', 'H2-O', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'H14-C8-O5']\n", - "list2 2 ['H', 'H']\n", - "keeplist1 14 ['C-O2', 'H22-C11-O6', 'C3-O6-Fe', 'H2-C', 'H2-C-O', 'C-O2', 'C-O2', 'H4-C2', 'H2-O', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'H14-C8-O5']\n", - "keeplist2 1 ['H']\n", - "\n", - "SEQUENTIAL All iteration 448 with 15 and 2 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H16-C8-O5', 'H']\n", - " \n", - "Fragments to allocate: 8 0 out of 14 1\n", - "sublist 2 ['H4-C2', 'H']\n", - "list1 15 ['H16-C8-O5', 'C-O2', 'H22-C11-O6', 'C3-O6-Fe', 'H2-C', 'H2-C-O', 'C-O2', 'C-O2', 'H4-C2', 'H2-O', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'H14-C8-O5']\n", - "list2 2 ['H', 'H']\n", - "keeplist1 14 ['H16-C8-O5', 'C-O2', 'H22-C11-O6', 'C3-O6-Fe', 'H2-C', 'H2-C-O', 'C-O2', 'C-O2', 'H2-O', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'H14-C8-O5']\n", - "keeplist2 1 ['H']\n", - "\n", - "SEQUENTIAL All iteration 449 with 15 and 2 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H4-C2', 'H']\n", - " \n", - "Fragments to allocate: 8 1 out of 14 1\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H4-C2', 'H16-C8-O5', 'C-O2', 'H22-C11-O6', 'C3-O6-Fe', 'H2-C', 'H2-C-O', 'C-O2', 'C-O2', 'H2-O', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'H14-C8-O5']\n", - "list2 2 ['H', 'H']\n", - "keeplist1 14 ['H4-C2', 'H16-C8-O5', 'C-O2', 'H22-C11-O6', 'C3-O6-Fe', 'H2-C', 'H2-C-O', 'C-O2', 'H2-O', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'H14-C8-O5']\n", - "keeplist2 1 ['H']\n", - "\n", - "SEQUENTIAL All iteration 450 with 15 and 2 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 9 0 out of 14 1\n", - "sublist 2 ['H2-O', 'H']\n", - "list1 15 ['C-O2', 'H4-C2', 'H16-C8-O5', 'C-O2', 'H22-C11-O6', 'C3-O6-Fe', 'H2-C', 'H2-C-O', 'C-O2', 'H2-O', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'H14-C8-O5']\n", - "list2 2 ['H', 'H']\n", - "keeplist1 14 ['C-O2', 'H4-C2', 'H16-C8-O5', 'C-O2', 'H22-C11-O6', 'C3-O6-Fe', 'H2-C', 'H2-C-O', 'C-O2', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'H14-C8-O5']\n", - "keeplist2 1 ['H']\n", - "\n", - "SEQUENTIAL All iteration 451 with 15 and 2 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-O', 'H']\n", - " \n", - "Fragments to allocate: 9 1 out of 14 1\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H2-O', 'C-O2', 'H4-C2', 'H16-C8-O5', 'C-O2', 'H22-C11-O6', 'C3-O6-Fe', 'H2-C', 'H2-C-O', 'C-O2', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'H14-C8-O5']\n", - "list2 2 ['H', 'H']\n", - "keeplist1 14 ['H2-O', 'C-O2', 'H4-C2', 'H16-C8-O5', 'C-O2', 'H22-C11-O6', 'C3-O6-Fe', 'H2-C', 'H2-C-O', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'H14-C8-O5']\n", - "keeplist2 1 ['H']\n", - "\n", - "SEQUENTIAL All iteration 452 with 15 and 2 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 10 0 out of 14 1\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['C-O2', 'H2-O', 'C-O2', 'H4-C2', 'H16-C8-O5', 'C-O2', 'H22-C11-O6', 'C3-O6-Fe', 'H2-C', 'H2-C-O', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'H14-C8-O5']\n", - "list2 2 ['H', 'H']\n", - "keeplist1 14 ['C-O2', 'H2-O', 'C-O2', 'H4-C2', 'H16-C8-O5', 'C-O2', 'H22-C11-O6', 'C3-O6-Fe', 'H2-C', 'H2-C-O', 'H2-C', 'H4-C2', 'H2-C-O', 'H14-C8-O5']\n", - "keeplist2 1 ['H']\n", - "\n", - "SEQUENTIAL All iteration 453 with 15 and 2 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 10 1 out of 14 1\n", - "sublist 2 ['H2-C-O', 'H']\n", - "list1 15 ['H2-C', 'C-O2', 'H2-O', 'C-O2', 'H4-C2', 'H16-C8-O5', 'C-O2', 'H22-C11-O6', 'C3-O6-Fe', 'H2-C', 'H2-C-O', 'H2-C', 'H4-C2', 'H2-C-O', 'H14-C8-O5']\n", - "list2 2 ['H', 'H']\n", - "keeplist1 14 ['H2-C', 'C-O2', 'H2-O', 'C-O2', 'H4-C2', 'H16-C8-O5', 'C-O2', 'H22-C11-O6', 'C3-O6-Fe', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'H14-C8-O5']\n", - "keeplist2 1 ['H']\n", - "\n", - "SEQUENTIAL All iteration 454 with 15 and 2 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C-O', 'H']\n", - " \n", - "Fragments to allocate: 11 0 out of 14 1\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H2-C-O', 'H2-C', 'C-O2', 'H2-O', 'C-O2', 'H4-C2', 'H16-C8-O5', 'C-O2', 'H22-C11-O6', 'C3-O6-Fe', 'H2-C', 'H2-C', 'H4-C2', 'H2-C-O', 'H14-C8-O5']\n", - "list2 2 ['H', 'H']\n", - "keeplist1 14 ['H2-C-O', 'H2-C', 'C-O2', 'H2-O', 'C-O2', 'H4-C2', 'H16-C8-O5', 'C-O2', 'H22-C11-O6', 'C3-O6-Fe', 'H2-C', 'H4-C2', 'H2-C-O', 'H14-C8-O5']\n", - "keeplist2 1 ['H']\n", - "\n", - "SEQUENTIAL All iteration 455 with 15 and 2 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 11 1 out of 14 1\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H2-C', 'H2-C-O', 'H2-C', 'C-O2', 'H2-O', 'C-O2', 'H4-C2', 'H16-C8-O5', 'C-O2', 'H22-C11-O6', 'C3-O6-Fe', 'H2-C', 'H4-C2', 'H2-C-O', 'H14-C8-O5']\n", - "list2 2 ['H', 'H']\n", - "keeplist1 14 ['H2-C', 'H2-C-O', 'H2-C', 'C-O2', 'H2-O', 'C-O2', 'H4-C2', 'H16-C8-O5', 'C-O2', 'H22-C11-O6', 'C3-O6-Fe', 'H4-C2', 'H2-C-O', 'H14-C8-O5']\n", - "keeplist2 1 ['H']\n", - "\n", - "SEQUENTIAL All iteration 456 with 15 and 2 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 12 0 out of 14 1\n", - "sublist 2 ['H4-C2', 'H']\n", - "list1 15 ['H2-C', 'H2-C', 'H2-C-O', 'H2-C', 'C-O2', 'H2-O', 'C-O2', 'H4-C2', 'H16-C8-O5', 'C-O2', 'H22-C11-O6', 'C3-O6-Fe', 'H4-C2', 'H2-C-O', 'H14-C8-O5']\n", - "list2 2 ['H', 'H']\n", - "keeplist1 14 ['H2-C', 'H2-C', 'H2-C-O', 'H2-C', 'C-O2', 'H2-O', 'C-O2', 'H4-C2', 'H16-C8-O5', 'C-O2', 'H22-C11-O6', 'C3-O6-Fe', 'H2-C-O', 'H14-C8-O5']\n", - "keeplist2 1 ['H']\n", - "\n", - "SEQUENTIAL All iteration 457 with 15 and 2 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H4-C2', 'H']\n", - " \n", - "Fragments to allocate: 12 1 out of 14 1\n", - "sublist 2 ['C3-O6-Fe', 'H']\n", - "list1 15 ['H4-C2', 'H2-C', 'H2-C', 'H2-C-O', 'H2-C', 'C-O2', 'H2-O', 'C-O2', 'H4-C2', 'H16-C8-O5', 'C-O2', 'H22-C11-O6', 'C3-O6-Fe', 'H2-C-O', 'H14-C8-O5']\n", - "list2 2 ['H', 'H']\n", - "keeplist1 14 ['H4-C2', 'H2-C', 'H2-C', 'H2-C-O', 'H2-C', 'C-O2', 'H2-O', 'C-O2', 'H4-C2', 'H16-C8-O5', 'C-O2', 'H22-C11-O6', 'H2-C-O', 'H14-C8-O5']\n", - "keeplist2 1 ['H']\n", - "\n", - "SEQUENTIAL All iteration 458 with 15 and 2 Remaining in each list\n", - "SEQUENTIAL All sending ['Fe', 'O', 'O', 'C', 'O', 'O', 'O', 'O', 'C', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C3-O6-Fe', 'H']\n", - " \n", - "Fragments to allocate: 13 0 out of 14 1\n", - "sublist 2 ['H2-C-O', 'H']\n", - "list1 15 ['C3-O6-Fe', 'H4-C2', 'H2-C', 'H2-C', 'H2-C-O', 'H2-C', 'C-O2', 'H2-O', 'C-O2', 'H4-C2', 'H16-C8-O5', 'C-O2', 'H22-C11-O6', 'H2-C-O', 'H14-C8-O5']\n", - "list2 2 ['H', 'H']\n", - "keeplist1 14 ['C3-O6-Fe', 'H4-C2', 'H2-C', 'H2-C', 'H2-C-O', 'H2-C', 'C-O2', 'H2-O', 'C-O2', 'H4-C2', 'H16-C8-O5', 'C-O2', 'H22-C11-O6', 'H14-C8-O5']\n", - "keeplist2 1 ['H']\n", - "\n", - "SEQUENTIAL All iteration 459 with 15 and 2 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C-O', 'H']\n", - " \n", - "Fragments to allocate: 13 1 out of 14 1\n", - "sublist 2 ['H22-C11-O6', 'H']\n", - "list1 15 ['H2-C-O', 'C3-O6-Fe', 'H4-C2', 'H2-C', 'H2-C', 'H2-C-O', 'H2-C', 'C-O2', 'H2-O', 'C-O2', 'H4-C2', 'H16-C8-O5', 'C-O2', 'H22-C11-O6', 'H14-C8-O5']\n", - "list2 2 ['H', 'H']\n", - "keeplist1 14 ['H2-C-O', 'C3-O6-Fe', 'H4-C2', 'H2-C', 'H2-C', 'H2-C-O', 'H2-C', 'C-O2', 'H2-O', 'C-O2', 'H4-C2', 'H16-C8-O5', 'C-O2', 'H14-C8-O5']\n", - "keeplist2 1 ['H']\n", - "\n", - "SEQUENTIAL All iteration 460 with 15 and 2 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H22-C11-O6', 'H']\n", - " \n", - "Fragments to allocate: 14 0 out of 14 1\n", - "sublist 2 ['H14-C8-O5', 'H']\n", - "list1 15 ['H22-C11-O6', 'H2-C-O', 'C3-O6-Fe', 'H4-C2', 'H2-C', 'H2-C', 'H2-C-O', 'H2-C', 'C-O2', 'H2-O', 'C-O2', 'H4-C2', 'H16-C8-O5', 'C-O2', 'H14-C8-O5']\n", - "list2 2 ['H', 'H']\n", - "keeplist1 14 ['H22-C11-O6', 'H2-C-O', 'C3-O6-Fe', 'H4-C2', 'H2-C', 'H2-C', 'H2-C-O', 'H2-C', 'C-O2', 'H2-O', 'C-O2', 'H4-C2', 'H16-C8-O5', 'C-O2']\n", - "keeplist2 1 ['H']\n", - "\n", - "SEQUENTIAL All iteration 461 with 15 and 2 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 1\n", - "SPILT_SPECIES: Laplacian lap=array([[-2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0],\n", - " [ 0, -2, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [ 0, 0, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,\n", - " 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [ 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0],\n", - " [ 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0],\n", - " [ 1, 0, 0, 0, 0, -4, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [ 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [ 0, 0, 0, 0, 0, 1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [ 0, 1, 0, 0, 0, 1, 0, 0, -4, 1, 1, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [ 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [ 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [ 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -4, 1, 1, 1, 0,\n", - " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, 0, 0,\n", - " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [ 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, -4, 1,\n", - " 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1,\n", - " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,\n", - " -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [ 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, -4, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0],\n", - " [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [ 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 1, 0, 0, -3, 0, 0, 0, 0, 0, 0, 1],\n", - " [ 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, -4, 1, 1, 1, 0, 0, 0],\n", - " [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0],\n", - " [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 1, 0, -1, 0, 0, 0, 0],\n", - " [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 1, 0, 0, -4, 1, 1, 0],\n", - " [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0],\n", - " [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, 0],\n", - " [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, -1]])\n", - "SPILT_SPECIES: graph=<28x28 sparse matrix of type ''\n", - "\twith 82 stored elements in Compressed Sparse Row format>\n", - "COMBINE. received molecule: ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 28\n", - " Formula = H15-C8-O5\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - " from merge fragments\n", - "COMBINE: Fragment H15-C8-O5 added to avglist\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 1 ['H15-C8-O5']\n", - "SEQUENTIAL: badlist 0 []\n", - " \n", - "Fragments to allocate: 1 0 out of 14 0\n", - "sublist 2 ['H22-C11-O6', 'H']\n", - "list1 15 ['H15-C8-O5', 'H22-C11-O6', 'H2-C-O', 'C3-O6-Fe', 'H4-C2', 'H2-C', 'H2-C', 'H2-C-O', 'H2-C', 'C-O2', 'H2-O', 'C-O2', 'H4-C2', 'H16-C8-O5', 'C-O2']\n", - "list2 1 ['H']\n", - "keeplist1 14 ['H15-C8-O5', 'H2-C-O', 'C3-O6-Fe', 'H4-C2', 'H2-C', 'H2-C', 'H2-C-O', 'H2-C', 'C-O2', 'H2-O', 'C-O2', 'H4-C2', 'H16-C8-O5', 'C-O2']\n", - "keeplist2 0 []\n", - "\n", - "SEQUENTIAL All iteration 462 with 15 and 1 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H22-C11-O6', 'H']\n", - " \n", - "Fragments to allocate: 2 0 out of 14 0\n", - "sublist 2 ['H2-C-O', 'H']\n", - "list1 15 ['H22-C11-O6', 'H15-C8-O5', 'H2-C-O', 'C3-O6-Fe', 'H4-C2', 'H2-C', 'H2-C', 'H2-C-O', 'H2-C', 'C-O2', 'H2-O', 'C-O2', 'H4-C2', 'H16-C8-O5', 'C-O2']\n", - "list2 1 ['H']\n", - "keeplist1 14 ['H22-C11-O6', 'H15-C8-O5', 'C3-O6-Fe', 'H4-C2', 'H2-C', 'H2-C', 'H2-C-O', 'H2-C', 'C-O2', 'H2-O', 'C-O2', 'H4-C2', 'H16-C8-O5', 'C-O2']\n", - "keeplist2 0 []\n", - "\n", - "SEQUENTIAL All iteration 463 with 15 and 1 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C-O', 'H']\n", - " \n", - "Fragments to allocate: 3 0 out of 14 0\n", - "sublist 2 ['C3-O6-Fe', 'H']\n", - "list1 15 ['H2-C-O', 'H22-C11-O6', 'H15-C8-O5', 'C3-O6-Fe', 'H4-C2', 'H2-C', 'H2-C', 'H2-C-O', 'H2-C', 'C-O2', 'H2-O', 'C-O2', 'H4-C2', 'H16-C8-O5', 'C-O2']\n", - "list2 1 ['H']\n", - "keeplist1 14 ['H2-C-O', 'H22-C11-O6', 'H15-C8-O5', 'H4-C2', 'H2-C', 'H2-C', 'H2-C-O', 'H2-C', 'C-O2', 'H2-O', 'C-O2', 'H4-C2', 'H16-C8-O5', 'C-O2']\n", - "keeplist2 0 []\n", - "\n", - "SEQUENTIAL All iteration 464 with 15 and 1 Remaining in each list\n", - "SEQUENTIAL All sending ['Fe', 'O', 'O', 'C', 'O', 'O', 'O', 'O', 'C', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C3-O6-Fe', 'H']\n", - " \n", - "Fragments to allocate: 4 0 out of 14 0\n", - "sublist 2 ['H4-C2', 'H']\n", - "list1 15 ['C3-O6-Fe', 'H2-C-O', 'H22-C11-O6', 'H15-C8-O5', 'H4-C2', 'H2-C', 'H2-C', 'H2-C-O', 'H2-C', 'C-O2', 'H2-O', 'C-O2', 'H4-C2', 'H16-C8-O5', 'C-O2']\n", - "list2 1 ['H']\n", - "keeplist1 14 ['C3-O6-Fe', 'H2-C-O', 'H22-C11-O6', 'H15-C8-O5', 'H2-C', 'H2-C', 'H2-C-O', 'H2-C', 'C-O2', 'H2-O', 'C-O2', 'H4-C2', 'H16-C8-O5', 'C-O2']\n", - "keeplist2 0 []\n", - "\n", - "SEQUENTIAL All iteration 465 with 15 and 1 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H4-C2', 'H']\n", - " \n", - "Fragments to allocate: 5 0 out of 14 0\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H4-C2', 'C3-O6-Fe', 'H2-C-O', 'H22-C11-O6', 'H15-C8-O5', 'H2-C', 'H2-C', 'H2-C-O', 'H2-C', 'C-O2', 'H2-O', 'C-O2', 'H4-C2', 'H16-C8-O5', 'C-O2']\n", - "list2 1 ['H']\n", - "keeplist1 14 ['H4-C2', 'C3-O6-Fe', 'H2-C-O', 'H22-C11-O6', 'H15-C8-O5', 'H2-C', 'H2-C-O', 'H2-C', 'C-O2', 'H2-O', 'C-O2', 'H4-C2', 'H16-C8-O5', 'C-O2']\n", - "keeplist2 0 []\n", - "\n", - "SEQUENTIAL All iteration 466 with 15 and 1 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 6 0 out of 14 0\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H2-C', 'H4-C2', 'C3-O6-Fe', 'H2-C-O', 'H22-C11-O6', 'H15-C8-O5', 'H2-C', 'H2-C-O', 'H2-C', 'C-O2', 'H2-O', 'C-O2', 'H4-C2', 'H16-C8-O5', 'C-O2']\n", - "list2 1 ['H']\n", - "keeplist1 14 ['H2-C', 'H4-C2', 'C3-O6-Fe', 'H2-C-O', 'H22-C11-O6', 'H15-C8-O5', 'H2-C-O', 'H2-C', 'C-O2', 'H2-O', 'C-O2', 'H4-C2', 'H16-C8-O5', 'C-O2']\n", - "keeplist2 0 []\n", - "\n", - "SEQUENTIAL All iteration 467 with 15 and 1 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 7 0 out of 14 0\n", - "sublist 2 ['H2-C-O', 'H']\n", - "list1 15 ['H2-C', 'H2-C', 'H4-C2', 'C3-O6-Fe', 'H2-C-O', 'H22-C11-O6', 'H15-C8-O5', 'H2-C-O', 'H2-C', 'C-O2', 'H2-O', 'C-O2', 'H4-C2', 'H16-C8-O5', 'C-O2']\n", - "list2 1 ['H']\n", - "keeplist1 14 ['H2-C', 'H2-C', 'H4-C2', 'C3-O6-Fe', 'H2-C-O', 'H22-C11-O6', 'H15-C8-O5', 'H2-C', 'C-O2', 'H2-O', 'C-O2', 'H4-C2', 'H16-C8-O5', 'C-O2']\n", - "keeplist2 0 []\n", - "\n", - "SEQUENTIAL All iteration 468 with 15 and 1 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C-O', 'H']\n", - " \n", - "Fragments to allocate: 8 0 out of 14 0\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H2-C-O', 'H2-C', 'H2-C', 'H4-C2', 'C3-O6-Fe', 'H2-C-O', 'H22-C11-O6', 'H15-C8-O5', 'H2-C', 'C-O2', 'H2-O', 'C-O2', 'H4-C2', 'H16-C8-O5', 'C-O2']\n", - "list2 1 ['H']\n", - "keeplist1 14 ['H2-C-O', 'H2-C', 'H2-C', 'H4-C2', 'C3-O6-Fe', 'H2-C-O', 'H22-C11-O6', 'H15-C8-O5', 'C-O2', 'H2-O', 'C-O2', 'H4-C2', 'H16-C8-O5', 'C-O2']\n", - "keeplist2 0 []\n", - "\n", - "SEQUENTIAL All iteration 469 with 15 and 1 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 9 0 out of 14 0\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H2-C', 'H2-C-O', 'H2-C', 'H2-C', 'H4-C2', 'C3-O6-Fe', 'H2-C-O', 'H22-C11-O6', 'H15-C8-O5', 'C-O2', 'H2-O', 'C-O2', 'H4-C2', 'H16-C8-O5', 'C-O2']\n", - "list2 1 ['H']\n", - "keeplist1 14 ['H2-C', 'H2-C-O', 'H2-C', 'H2-C', 'H4-C2', 'C3-O6-Fe', 'H2-C-O', 'H22-C11-O6', 'H15-C8-O5', 'H2-O', 'C-O2', 'H4-C2', 'H16-C8-O5', 'C-O2']\n", - "keeplist2 0 []\n", - "\n", - "SEQUENTIAL All iteration 470 with 15 and 1 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 10 0 out of 14 0\n", - "sublist 2 ['H2-O', 'H']\n", - "list1 15 ['C-O2', 'H2-C', 'H2-C-O', 'H2-C', 'H2-C', 'H4-C2', 'C3-O6-Fe', 'H2-C-O', 'H22-C11-O6', 'H15-C8-O5', 'H2-O', 'C-O2', 'H4-C2', 'H16-C8-O5', 'C-O2']\n", - "list2 1 ['H']\n", - "keeplist1 14 ['C-O2', 'H2-C', 'H2-C-O', 'H2-C', 'H2-C', 'H4-C2', 'C3-O6-Fe', 'H2-C-O', 'H22-C11-O6', 'H15-C8-O5', 'C-O2', 'H4-C2', 'H16-C8-O5', 'C-O2']\n", - "keeplist2 0 []\n", - "\n", - "SEQUENTIAL All iteration 471 with 15 and 1 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-O', 'H']\n", - " \n", - "Fragments to allocate: 11 0 out of 14 0\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H2-O', 'C-O2', 'H2-C', 'H2-C-O', 'H2-C', 'H2-C', 'H4-C2', 'C3-O6-Fe', 'H2-C-O', 'H22-C11-O6', 'H15-C8-O5', 'C-O2', 'H4-C2', 'H16-C8-O5', 'C-O2']\n", - "list2 1 ['H']\n", - "keeplist1 14 ['H2-O', 'C-O2', 'H2-C', 'H2-C-O', 'H2-C', 'H2-C', 'H4-C2', 'C3-O6-Fe', 'H2-C-O', 'H22-C11-O6', 'H15-C8-O5', 'H4-C2', 'H16-C8-O5', 'C-O2']\n", - "keeplist2 0 []\n", - "\n", - "SEQUENTIAL All iteration 472 with 15 and 1 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 12 0 out of 14 0\n", - "sublist 2 ['H4-C2', 'H']\n", - "list1 15 ['C-O2', 'H2-O', 'C-O2', 'H2-C', 'H2-C-O', 'H2-C', 'H2-C', 'H4-C2', 'C3-O6-Fe', 'H2-C-O', 'H22-C11-O6', 'H15-C8-O5', 'H4-C2', 'H16-C8-O5', 'C-O2']\n", - "list2 1 ['H']\n", - "keeplist1 14 ['C-O2', 'H2-O', 'C-O2', 'H2-C', 'H2-C-O', 'H2-C', 'H2-C', 'H4-C2', 'C3-O6-Fe', 'H2-C-O', 'H22-C11-O6', 'H15-C8-O5', 'H16-C8-O5', 'C-O2']\n", - "keeplist2 0 []\n", - "\n", - "SEQUENTIAL All iteration 473 with 15 and 1 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H4-C2', 'H']\n", - " \n", - "Fragments to allocate: 13 0 out of 14 0\n", - "sublist 2 ['H16-C8-O5', 'H']\n", - "list1 15 ['H4-C2', 'C-O2', 'H2-O', 'C-O2', 'H2-C', 'H2-C-O', 'H2-C', 'H2-C', 'H4-C2', 'C3-O6-Fe', 'H2-C-O', 'H22-C11-O6', 'H15-C8-O5', 'H16-C8-O5', 'C-O2']\n", - "list2 1 ['H']\n", - "keeplist1 14 ['H4-C2', 'C-O2', 'H2-O', 'C-O2', 'H2-C', 'H2-C-O', 'H2-C', 'H2-C', 'H4-C2', 'C3-O6-Fe', 'H2-C-O', 'H22-C11-O6', 'H15-C8-O5', 'C-O2']\n", - "keeplist2 0 []\n", - "\n", - "SEQUENTIAL All iteration 474 with 15 and 1 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H16-C8-O5', 'H']\n", - " \n", - "Fragments to allocate: 14 0 out of 14 0\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H16-C8-O5', 'H4-C2', 'C-O2', 'H2-O', 'C-O2', 'H2-C', 'H2-C-O', 'H2-C', 'H2-C', 'H4-C2', 'C3-O6-Fe', 'H2-C-O', 'H22-C11-O6', 'H15-C8-O5', 'C-O2']\n", - "list2 1 ['H']\n", - "keeplist1 14 ['H16-C8-O5', 'H4-C2', 'C-O2', 'H2-O', 'C-O2', 'H2-C', 'H2-C-O', 'H2-C', 'H2-C', 'H4-C2', 'C3-O6-Fe', 'H2-C-O', 'H22-C11-O6', 'H15-C8-O5']\n", - "keeplist2 0 []\n", - "\n", - "SEQUENTIAL All iteration 475 with 15 and 1 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " Increased Threshold_tmat. Now: 0.6000000000000001\n", - " Maxsize of the translation matrix is= 8\n", - " \n", - "Fragments to allocate: 0 0 out of 14 0\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['C-O2', 'H16-C8-O5', 'H4-C2', 'C-O2', 'H2-O', 'C-O2', 'H2-C', 'H2-C-O', 'H2-C', 'H2-C', 'H4-C2', 'C3-O6-Fe', 'H2-C-O', 'H22-C11-O6', 'H15-C8-O5']\n", - "list2 1 ['H']\n", - "keeplist1 14 ['H16-C8-O5', 'H4-C2', 'C-O2', 'H2-O', 'C-O2', 'H2-C', 'H2-C-O', 'H2-C', 'H2-C', 'H4-C2', 'C3-O6-Fe', 'H2-C-O', 'H22-C11-O6', 'H15-C8-O5']\n", - "keeplist2 0 []\n", - "\n", - "SEQUENTIAL All iteration 1 with 15 and 1 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 1 0 out of 14 0\n", - "sublist 2 ['H16-C8-O5', 'H']\n", - "list1 15 ['C-O2', 'H16-C8-O5', 'H4-C2', 'C-O2', 'H2-O', 'C-O2', 'H2-C', 'H2-C-O', 'H2-C', 'H2-C', 'H4-C2', 'C3-O6-Fe', 'H2-C-O', 'H22-C11-O6', 'H15-C8-O5']\n", - "list2 1 ['H']\n", - "keeplist1 14 ['C-O2', 'H4-C2', 'C-O2', 'H2-O', 'C-O2', 'H2-C', 'H2-C-O', 'H2-C', 'H2-C', 'H4-C2', 'C3-O6-Fe', 'H2-C-O', 'H22-C11-O6', 'H15-C8-O5']\n", - "keeplist2 0 []\n", - "\n", - "SEQUENTIAL All iteration 2 with 15 and 1 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H16-C8-O5', 'H']\n", - " \n", - "Fragments to allocate: 2 0 out of 14 0\n", - "sublist 2 ['H4-C2', 'H']\n", - "list1 15 ['H16-C8-O5', 'C-O2', 'H4-C2', 'C-O2', 'H2-O', 'C-O2', 'H2-C', 'H2-C-O', 'H2-C', 'H2-C', 'H4-C2', 'C3-O6-Fe', 'H2-C-O', 'H22-C11-O6', 'H15-C8-O5']\n", - "list2 1 ['H']\n", - "keeplist1 14 ['H16-C8-O5', 'C-O2', 'C-O2', 'H2-O', 'C-O2', 'H2-C', 'H2-C-O', 'H2-C', 'H2-C', 'H4-C2', 'C3-O6-Fe', 'H2-C-O', 'H22-C11-O6', 'H15-C8-O5']\n", - "keeplist2 0 []\n", - "\n", - "SEQUENTIAL All iteration 3 with 15 and 1 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H4-C2', 'H']\n", - " \n", - "Fragments to allocate: 3 0 out of 14 0\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H4-C2', 'H16-C8-O5', 'C-O2', 'C-O2', 'H2-O', 'C-O2', 'H2-C', 'H2-C-O', 'H2-C', 'H2-C', 'H4-C2', 'C3-O6-Fe', 'H2-C-O', 'H22-C11-O6', 'H15-C8-O5']\n", - "list2 1 ['H']\n", - "keeplist1 14 ['H4-C2', 'H16-C8-O5', 'C-O2', 'H2-O', 'C-O2', 'H2-C', 'H2-C-O', 'H2-C', 'H2-C', 'H4-C2', 'C3-O6-Fe', 'H2-C-O', 'H22-C11-O6', 'H15-C8-O5']\n", - "keeplist2 0 []\n", - "\n", - "SEQUENTIAL All iteration 4 with 15 and 1 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 4 0 out of 14 0\n", - "sublist 2 ['H2-O', 'H']\n", - "list1 15 ['C-O2', 'H4-C2', 'H16-C8-O5', 'C-O2', 'H2-O', 'C-O2', 'H2-C', 'H2-C-O', 'H2-C', 'H2-C', 'H4-C2', 'C3-O6-Fe', 'H2-C-O', 'H22-C11-O6', 'H15-C8-O5']\n", - "list2 1 ['H']\n", - "keeplist1 14 ['C-O2', 'H4-C2', 'H16-C8-O5', 'C-O2', 'C-O2', 'H2-C', 'H2-C-O', 'H2-C', 'H2-C', 'H4-C2', 'C3-O6-Fe', 'H2-C-O', 'H22-C11-O6', 'H15-C8-O5']\n", - "keeplist2 0 []\n", - "\n", - "SEQUENTIAL All iteration 5 with 15 and 1 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-O', 'H']\n", - " \n", - "Fragments to allocate: 5 0 out of 14 0\n", - "sublist 2 ['C-O2', 'H']\n", - "list1 15 ['H2-O', 'C-O2', 'H4-C2', 'H16-C8-O5', 'C-O2', 'C-O2', 'H2-C', 'H2-C-O', 'H2-C', 'H2-C', 'H4-C2', 'C3-O6-Fe', 'H2-C-O', 'H22-C11-O6', 'H15-C8-O5']\n", - "list2 1 ['H']\n", - "keeplist1 14 ['H2-O', 'C-O2', 'H4-C2', 'H16-C8-O5', 'C-O2', 'H2-C', 'H2-C-O', 'H2-C', 'H2-C', 'H4-C2', 'C3-O6-Fe', 'H2-C-O', 'H22-C11-O6', 'H15-C8-O5']\n", - "keeplist2 0 []\n", - "\n", - "SEQUENTIAL All iteration 6 with 15 and 1 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C-O2', 'H']\n", - " \n", - "Fragments to allocate: 6 0 out of 14 0\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['C-O2', 'H2-O', 'C-O2', 'H4-C2', 'H16-C8-O5', 'C-O2', 'H2-C', 'H2-C-O', 'H2-C', 'H2-C', 'H4-C2', 'C3-O6-Fe', 'H2-C-O', 'H22-C11-O6', 'H15-C8-O5']\n", - "list2 1 ['H']\n", - "keeplist1 14 ['C-O2', 'H2-O', 'C-O2', 'H4-C2', 'H16-C8-O5', 'C-O2', 'H2-C-O', 'H2-C', 'H2-C', 'H4-C2', 'C3-O6-Fe', 'H2-C-O', 'H22-C11-O6', 'H15-C8-O5']\n", - "keeplist2 0 []\n", - "\n", - "SEQUENTIAL All iteration 7 with 15 and 1 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 7 0 out of 14 0\n", - "sublist 2 ['H2-C-O', 'H']\n", - "list1 15 ['H2-C', 'C-O2', 'H2-O', 'C-O2', 'H4-C2', 'H16-C8-O5', 'C-O2', 'H2-C-O', 'H2-C', 'H2-C', 'H4-C2', 'C3-O6-Fe', 'H2-C-O', 'H22-C11-O6', 'H15-C8-O5']\n", - "list2 1 ['H']\n", - "keeplist1 14 ['H2-C', 'C-O2', 'H2-O', 'C-O2', 'H4-C2', 'H16-C8-O5', 'C-O2', 'H2-C', 'H2-C', 'H4-C2', 'C3-O6-Fe', 'H2-C-O', 'H22-C11-O6', 'H15-C8-O5']\n", - "keeplist2 0 []\n", - "\n", - "SEQUENTIAL All iteration 8 with 15 and 1 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C-O', 'H']\n", - " \n", - "Fragments to allocate: 8 0 out of 14 0\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H2-C-O', 'H2-C', 'C-O2', 'H2-O', 'C-O2', 'H4-C2', 'H16-C8-O5', 'C-O2', 'H2-C', 'H2-C', 'H4-C2', 'C3-O6-Fe', 'H2-C-O', 'H22-C11-O6', 'H15-C8-O5']\n", - "list2 1 ['H']\n", - "keeplist1 14 ['H2-C-O', 'H2-C', 'C-O2', 'H2-O', 'C-O2', 'H4-C2', 'H16-C8-O5', 'C-O2', 'H2-C', 'H4-C2', 'C3-O6-Fe', 'H2-C-O', 'H22-C11-O6', 'H15-C8-O5']\n", - "keeplist2 0 []\n", - "\n", - "SEQUENTIAL All iteration 9 with 15 and 1 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 9 0 out of 14 0\n", - "sublist 2 ['H2-C', 'H']\n", - "list1 15 ['H2-C', 'H2-C-O', 'H2-C', 'C-O2', 'H2-O', 'C-O2', 'H4-C2', 'H16-C8-O5', 'C-O2', 'H2-C', 'H4-C2', 'C3-O6-Fe', 'H2-C-O', 'H22-C11-O6', 'H15-C8-O5']\n", - "list2 1 ['H']\n", - "keeplist1 14 ['H2-C', 'H2-C-O', 'H2-C', 'C-O2', 'H2-O', 'C-O2', 'H4-C2', 'H16-C8-O5', 'C-O2', 'H4-C2', 'C3-O6-Fe', 'H2-C-O', 'H22-C11-O6', 'H15-C8-O5']\n", - "keeplist2 0 []\n", - "\n", - "SEQUENTIAL All iteration 10 with 15 and 1 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C', 'H']\n", - " \n", - "Fragments to allocate: 10 0 out of 14 0\n", - "sublist 2 ['H4-C2', 'H']\n", - "list1 15 ['H2-C', 'H2-C', 'H2-C-O', 'H2-C', 'C-O2', 'H2-O', 'C-O2', 'H4-C2', 'H16-C8-O5', 'C-O2', 'H4-C2', 'C3-O6-Fe', 'H2-C-O', 'H22-C11-O6', 'H15-C8-O5']\n", - "list2 1 ['H']\n", - "keeplist1 14 ['H2-C', 'H2-C', 'H2-C-O', 'H2-C', 'C-O2', 'H2-O', 'C-O2', 'H4-C2', 'H16-C8-O5', 'C-O2', 'C3-O6-Fe', 'H2-C-O', 'H22-C11-O6', 'H15-C8-O5']\n", - "keeplist2 0 []\n", - "\n", - "SEQUENTIAL All iteration 11 with 15 and 1 Remaining in each list\n", - "SEQUENTIAL All sending ['C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H4-C2', 'H']\n", - " \n", - "Fragments to allocate: 11 0 out of 14 0\n", - "sublist 2 ['C3-O6-Fe', 'H']\n", - "list1 15 ['H4-C2', 'H2-C', 'H2-C', 'H2-C-O', 'H2-C', 'C-O2', 'H2-O', 'C-O2', 'H4-C2', 'H16-C8-O5', 'C-O2', 'C3-O6-Fe', 'H2-C-O', 'H22-C11-O6', 'H15-C8-O5']\n", - "list2 1 ['H']\n", - "keeplist1 14 ['H4-C2', 'H2-C', 'H2-C', 'H2-C-O', 'H2-C', 'C-O2', 'H2-O', 'C-O2', 'H4-C2', 'H16-C8-O5', 'C-O2', 'H2-C-O', 'H22-C11-O6', 'H15-C8-O5']\n", - "keeplist2 0 []\n", - "\n", - "SEQUENTIAL All iteration 12 with 15 and 1 Remaining in each list\n", - "SEQUENTIAL All sending ['Fe', 'O', 'O', 'C', 'O', 'O', 'O', 'O', 'C', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C3-O6-Fe', 'H']\n", - " \n", - "Fragments to allocate: 12 0 out of 14 0\n", - "sublist 2 ['H2-C-O', 'H']\n", - "list1 15 ['C3-O6-Fe', 'H4-C2', 'H2-C', 'H2-C', 'H2-C-O', 'H2-C', 'C-O2', 'H2-O', 'C-O2', 'H4-C2', 'H16-C8-O5', 'C-O2', 'H2-C-O', 'H22-C11-O6', 'H15-C8-O5']\n", - "list2 1 ['H']\n", - "keeplist1 14 ['C3-O6-Fe', 'H4-C2', 'H2-C', 'H2-C', 'H2-C-O', 'H2-C', 'C-O2', 'H2-O', 'C-O2', 'H4-C2', 'H16-C8-O5', 'C-O2', 'H22-C11-O6', 'H15-C8-O5']\n", - "keeplist2 0 []\n", - "\n", - "SEQUENTIAL All iteration 13 with 15 and 1 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H2-C-O', 'H']\n", - " \n", - "Fragments to allocate: 13 0 out of 14 0\n", - "sublist 2 ['H22-C11-O6', 'H']\n", - "list1 15 ['H2-C-O', 'C3-O6-Fe', 'H4-C2', 'H2-C', 'H2-C', 'H2-C-O', 'H2-C', 'C-O2', 'H2-O', 'C-O2', 'H4-C2', 'H16-C8-O5', 'C-O2', 'H22-C11-O6', 'H15-C8-O5']\n", - "list2 1 ['H']\n", - "keeplist1 14 ['H2-C-O', 'C3-O6-Fe', 'H4-C2', 'H2-C', 'H2-C', 'H2-C-O', 'H2-C', 'C-O2', 'H2-O', 'C-O2', 'H4-C2', 'H16-C8-O5', 'C-O2', 'H15-C8-O5']\n", - "keeplist2 0 []\n", - "\n", - "SEQUENTIAL All iteration 14 with 15 and 1 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H22-C11-O6', 'H']\n", - " \n", - "Fragments to allocate: 14 0 out of 14 0\n", - "sublist 2 ['H15-C8-O5', 'H']\n", - "list1 15 ['H22-C11-O6', 'H2-C-O', 'C3-O6-Fe', 'H4-C2', 'H2-C', 'H2-C', 'H2-C-O', 'H2-C', 'C-O2', 'H2-O', 'C-O2', 'H4-C2', 'H16-C8-O5', 'C-O2', 'H15-C8-O5']\n", - "list2 1 ['H']\n", - "keeplist1 14 ['H22-C11-O6', 'H2-C-O', 'C3-O6-Fe', 'H4-C2', 'H2-C', 'H2-C', 'H2-C-O', 'H2-C', 'C-O2', 'H2-O', 'C-O2', 'H4-C2', 'H16-C8-O5', 'C-O2']\n", - "keeplist2 0 []\n", - "\n", - "SEQUENTIAL All iteration 15 with 15 and 1 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 1\n", - "SPILT_SPECIES: Laplacian lap=array([[-2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0],\n", - " [ 0, -2, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [ 0, 0, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,\n", - " 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [ 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [ 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0],\n", - " [ 1, 0, 0, 0, 0, -4, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [ 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [ 0, 0, 0, 0, 0, 1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [ 0, 1, 0, 0, 0, 1, 0, 0, -4, 1, 1, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [ 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [ 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [ 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -4, 1, 1, 1, 0,\n", - " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, 0, 0,\n", - " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [ 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, -4, 1,\n", - " 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1,\n", - " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,\n", - " -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [ 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, -4, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [ 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 1, 0, 0, -4, 0, 0, 0, 0, 0, 0, 1, 1],\n", - " [ 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, -4, 1, 1, 1, 0, 0, 0, 0],\n", - " [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0],\n", - " [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 1, 0, -1, 0, 0, 0, 0, 0],\n", - " [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 1, 0, 0, -4, 1, 1, 0, 0],\n", - " [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0],\n", - " [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, 0, 0],\n", - " [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, -1, 0],\n", - " [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, -1]])\n", - "SPILT_SPECIES: graph=<29x29 sparse matrix of type ''\n", - "\twith 85 stored elements in Compressed Sparse Row format>\n", - "COMBINE. received molecule: ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 29\n", - " Formula = H16-C8-O5\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - " from merge fragments\n", - "COMBINE: Fragment H16-C8-O5 added to avglist\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 1 ['H16-C8-O5']\n", - "SEQUENTIAL: badlist 0 []\n", - " Increased Threshold_tmat. Now: 0.8\n", - " Maxsize of the translation matrix is= 12\n" - ] - } - ], - "source": [ - "finalnewmols, finalremfrag = sequential(sorted_fragments+hydrogens, newcell.refmoleclist, cellvec=newcell.cellvec, typ=\"All\", debug=2)" - ] - }, - { - "cell_type": "code", - "execution_count": 302, - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "H2-O [14, 55, 58] [[0.91917, 0.32407, 0.2061], [0.8794, 0.316, 0.195], [0.917, 0.322, 0.297]]\n", - "H2-O [13, 54, 57] [[0.68302, 0.6317, 0.4667], [0.7016, 0.671, 0.435], [0.6549, 0.6439, 0.48]]\n", - "K [59] [[0.50285, 0.34998, 0.70169]]\n", - "K [60] [[0.65002, 0.15287, 0.70169]]\n", - "K [0] [[0.84713, 0.49715, 0.70169]]\n" - ] - } - ], - "source": [ - "for mol in molecules:\n", - " print(mol.formula, mol.get_parent_indices(\"cell\"), mol.frac_coord) # temp.coord)" - ] - }, - { - "cell_type": "code", - "execution_count": 322, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0 C6-O12-Fe [1, 8, 9, 10, 11, 51, 52, 73, 74, 75, 76, 77, 78, 79, 80, 153, 154, 155, 156]\n", - "1 H24-C12-O6 [2, 3, 4, 5, 6, 7, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50]\n", - "2 H2-O [12, 53, 56]\n", - "5 H24-C12-O6 [61, 63, 65, 67, 69, 71, 81, 83, 85, 87, 90, 92, 93, 95, 97, 99, 101, 103, 105, 107, 109, 111, 114, 116, 117, 119, 121, 123, 125, 127, 129, 131, 133, 135, 138, 140, 142, 144, 146, 148, 150, 152]\n", - "6 H24-C12-O6 [62, 64, 66, 68, 70, 72, 82, 84, 86, 88, 89, 91, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 113, 115, 118, 120, 122, 124, 126, 128, 130, 132, 134, 136, 137, 139, 141, 143, 145, 147, 149, 151]\n" - ] - } - ], - "source": [ - "for j in filtered_list:\n", - " ref = newcell.refmoleclist[j]\n", - " ref_frac_idx = [ref_fracs[i] for i in ref.get_parent_indices(\"cell\")]\n", - " print(j, ref.formula, ref.get_parent_indices(\"cell\"),)# ref.frac_coord, ref_frac_idx) # temp.coord)" - ] - }, - { - "cell_type": "code", - "execution_count": 321, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0 C6-O12-Fe [1, 8, 9, 10, 11, 51, 52, 73, 74, 75, 76, 77, 78, 79, 80, 153, 154, 155, 156]\n", - "1 H24-C12-O6 [2, 3, 4, 5, 6, 7, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50]\n", - "2 H2-O [12, 53, 56]\n", - "3 H2-O [13, 54, 57]\n", - "4 H2-O [14, 55, 58]\n", - "5 H24-C12-O6 [61, 63, 65, 67, 69, 71, 81, 83, 85, 87, 90, 92, 93, 95, 97, 99, 101, 103, 105, 107, 109, 111, 114, 116, 117, 119, 121, 123, 125, 127, 129, 131, 133, 135, 138, 140, 142, 144, 146, 148, 150, 152]\n", - "6 H24-C12-O6 [62, 64, 66, 68, 70, 72, 82, 84, 86, 88, 89, 91, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 113, 115, 118, 120, 122, 124, 126, 128, 130, 132, 134, 136, 137, 139, 141, 143, 145, 147, 149, 151]\n", - "7 K [59]\n", - "8 K [60]\n", - "9 K [0]\n" - ] - } - ], - "source": [ - "found = []\n", - "for idx, ref in enumerate(newcell.refmoleclist):\n", - " ref_frac_idx = [ref_fracs[i] for i in ref.get_parent_indices(\"cell\")]\n", - " print(idx, ref.formula, ref.get_parent_indices(\"cell\"),) #ref.frac_coord, ref_frac_idx) # temp.coord)\n" - ] - }, - { - "cell_type": "code", - "execution_count": 323, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "H-O [12, 53]\n", - "H2-C [33, 34, 35]\n", - "C-O2 [10, 11, 52]\n", - "H-C-O [6, 36, 37]\n", - "H2-C [117, 119, 121]\n", - "H2-C [118, 120, 122]\n", - "H-C-O [70, 124, 126]\n", - "C-O2 [78, 79, 156]\n", - "C-O2 [77, 80, 155]\n", - "H3-C2 [39, 40, 41, 42, 43]\n", - "H3-C2 [130, 132, 134, 136, 137]\n", - "C3-O6-Fe [1, 8, 9, 51, 73, 74, 75, 76, 153, 154]\n", - "H14-C8-O5 [2, 3, 4, 5, 7, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 45, 46, 47, 48, 49, 50]\n", - "H14-C8-O5 [62, 64, 66, 68, 72, 82, 84, 86, 88, 89, 91, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 141, 143, 145, 147, 149, 151]\n", - "H19-C11-O6 [61, 63, 65, 67, 69, 71, 81, 83, 85, 87, 90, 92, 93, 95, 97, 99, 101, 103, 105, 107, 109, 111, 123, 125, 129, 131, 133, 135, 138, 140, 142, 144, 146, 148, 150, 152]\n" - ] - } - ], - "source": [ - "for temp in sorted_fragments:\n", - " print(temp.formula, temp.get_parent_indices(\"cell\") )#, temp.frac_coord) # temp.coord)" - ] - }, - { - "cell_type": "code", - "execution_count": 300, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0 [139] [[0.4932, 0.0173, 0.7292]]\n", - "1 [32] [[0.7941, 0.5267, 1.0099]]\n", - "2 [128] [[0.5911, -0.0063, 1.0121]]\n", - "3 [127] [[0.4026, 0.4089, 1.0121]]\n", - "4 [116] [[0.4733, 0.2674, 1.0099]]\n", - "5 [115] [[0.7326, 0.2059, 1.0099]]\n", - "6 [114] [[0.4036, 0.2249, 1.0632]]\n", - "7 [113] [[0.7751, 0.1787, 1.0632]]\n", - "8 [31] [[0.8213, 0.5964, 1.0632]]\n", - "9 [38] [[1.0063, 0.5974, 1.0121]]\n", - "10 [44] [[0.9827, 0.4759, 0.7292]]\n", - "11 [56] [[0.9563, 0.3911, 1.044]]\n" - ] - } - ], - "source": [ - "for i, H in enumerate(hydrogens):\n", - " print(i, H.get_parent_indices(\"cell\"), H.frac_coord)" - ] - }, - { - "cell_type": "code", - "execution_count": 238, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "([12, 53],\n", - " [[0.96073, 0.41262, 0.9709], [0.9259, 0.411, 0.945]],\n", - " [[18.38446098, 8.708003890007264, 9.464333199999997],\n", - " [17.5554276, 8.67381512964225, 9.211859999999998]])" - ] - }, - "execution_count": 238, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - " sorted_fragments[0].get_parent_indices(\"cell\"), sorted_fragments[0].frac_coord, sorted_fragments[0].coord" - ] - }, - { - "cell_type": "code", - "execution_count": 242, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0 [139] [[0.4932, 0.0173, 0.7292]] [[11.807998950000002, 0.3651021940214385, 7.108241599999998]]\n", - "1 [32] [[0.7941, 0.5267, 1.0099]] [[12.933846750000003, 11.11556795324227, 9.844505199999997]]\n", - "2 [128] [[0.5911, -0.0063, 1.0121]] [[14.481278249999997, -0.1329562903083838, 9.865950799999997]]\n", - "3 [127] [[0.4026, 0.4089, 1.0121]] [[4.828717350000003, 8.629496366206123, 9.865950799999997]]\n", - "4 [116] [[0.4733, 0.2674, 1.0099]] [[8.2757124, 5.643255877533669, 9.844505199999997]]\n", - "5 [115] [[0.7326, 0.2059, 1.0099]] [[15.343940850000003, 4.345349234047054, 9.844505199999997]]\n", - "6 [114] [[0.4036, 0.2249, 1.0632]] [[7.0950343500000015, 4.7463285222786915, 10.364073599999996]]\n", - "7 [113] [[0.7751, 0.1787, 1.0632]] [[16.711041750000003, 3.7713157266838695, 10.364073599999996]]\n", - "8 [31] [[0.8213, 0.5964, 1.0632]] [[12.747423900000003, 12.586528815860435, 10.364073599999996]]\n", - "9 [38] [[1.0063, 0.5974, 1.0121]] [[17.2435044, 12.607632988925257, 9.865950799999997]]\n", - "10 [44] [[0.9827, 0.4759, 0.7292]] [[18.148812750000005, 10.04347596154926, 7.108241599999998]]\n", - "11 [56] [[0.9563, 0.3911, 1.044]] [[18.538716750000003, 8.253842085652273, 10.176911999999998]]\n" - ] - } - ], - "source": [ - "for i, H in enumerate(hydrogens):\n", - " print(i, H.get_parent_indices(\"cell\"), H.frac_coord, H.coord)" - ] - }, - { - "cell_type": "code", - "execution_count": 239, - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "data": { - "text/plain": [ - "------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 2\n", - " Formula = H-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------" - ] - }, - "execution_count": 239, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "sorted_fragments[0]" - ] - }, - { - "cell_type": "code", - "execution_count": 243, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = H\n", - " Number of Atoms = 1\n", - " Formula = H\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------" - ] - }, - "execution_count": 243, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "hydrogens[11]" - ] - }, - { - "cell_type": "code", - "execution_count": 282, - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "recindices=[12, 53, 56]\n", - "MERGE_FRAGMENTS: count_species found 1\n", - "SPILT_SPECIES: Laplacian lap=array([[-2, 1, 1],\n", - " [ 1, -1, 0],\n", - " [ 1, 0, -1]])\n", - "SPILT_SPECIES: graph=<3x3 sparse matrix of type ''\n", - "\twith 7 stored elements in Compressed Sparse Row format>\n" - ] - } - ], - "source": [ - "tobemerged = []\n", - "tobemerged.append(sorted_fragments[0])\n", - "tobemerged.append(hydrogens[11])\n", - "newmolec = merge_fragments(tobemerged, newcell.refmoleclist, cellvec=newcell.cellvec, debug=debug)" - ] - }, - { - "cell_type": "code", - "execution_count": 283, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------" - ] - }, - "execution_count": 283, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "newmolec" - ] - }, - { - "cell_type": "code", - "execution_count": 284, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[12, 53, 56]" - ] - }, - "execution_count": 284, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "newmolec.get_parent_indices(\"cell\")" - ] - }, - { - "cell_type": "code", - "execution_count": 290, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "H2-O [12, 53, 56] equivalent to Ref 2 H2-O\n", - "[[18.38446098, 8.708003890007264, 9.464333199999997], [17.5554276, 8.67381512964225, 9.211859999999998], [18.538716750000003, 8.253842085652273, 10.176911999999998]]\n" - ] - } - ], - "source": [ - "found = False\n", - "for idx, ref in enumerate(newcell.refmoleclist):\n", - " if (ref.natoms == newmolec.natoms) & (ref.formula == newmolec.formula) & (sorted(ref.get_parent_indices(\"cell\")) == sorted(newmolec.get_parent_indices(\"cell\"))):\n", - " print(newmolec.formula, newmolec.get_parent_indices(\"cell\"), f\"equivalent to Ref {idx} {ref.formula}\")\n", - " print(newmolec.coord)\n", - "# molecules.append(frag)\n", - "# found = True\n", - "# if found == False:\n", - "# if frag.natoms == 1 and frag.labels == [\"H\"] :\n", - "# hydrogens.append(frag)\n", - "# else :\n", - "# filtered_fragments.append(frag)" - ] - }, - { - "cell_type": "code", - "execution_count": 296, - "metadata": {}, - "outputs": [ - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "c7a376c08db948cd8f7148085e49604c", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "NGLWidget()" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "reconstructed_mol = Atoms(symbols=newmolec.labels, positions=newmolec.coord, cell=cell_parameters, pbc=True)\n", - "plot_atoms(reconstructed_mol)\n", - "view = nglview.show_ase(reconstructed_mol)\n", - "view.add_unitcell()\n", - "view" - ] - }, - { - "cell_type": "code", - "execution_count": 236, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "H2-O [12, 53, 56] [[0.96073, 0.41262, 0.9709], [0.9259, 0.411, 0.945], [0.9563, 0.3911, 1.044]]\n", - "H2-O [13, 54, 57] [[0.68302, 0.6317, 0.4667], [0.7016, 0.671, 0.435], [0.6549, 0.6439, 0.48]]\n", - "H2-O [14, 55, 58] [[0.91917, 0.32407, 0.2061], [0.8794, 0.316, 0.195], [0.917, 0.322, 0.297]]\n" - ] - } - ], - "source": [ - "for ref in newcell.refmoleclist:\n", - " if ref.formula == \"H2-O\":\n", - " ref_labels_idx = [ref_labels[i] for i in ref.get_parent_indices(\"cell\")]\n", - " ref_frac_idx = [ref_fracs[i] for i in ref.get_parent_indices(\"cell\")]\n", - " print(ref.formula, ref.get_parent_indices(\"cell\"), ref_frac_idx)" - ] - }, - { - "cell_type": "code", - "execution_count": 227, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[]" - ] - }, - "execution_count": 227, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "finalnewmols" - ] - }, - { - "cell_type": "code", - "execution_count": 228, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[]" - ] - }, - "execution_count": 228, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "finalremfrag" - ] - }, - { - "cell_type": "code", - "execution_count": 196, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 41\n", - " Formula = H22-C12-O7\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 19\n", - " Formula = C6-O12-Fe\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 38\n", - " Formula = H20-C12-O6\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 38\n", - " Formula = H20-C12-O6\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " ---------------------------------------------------]" - ] - }, - "execution_count": 196, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "remfrag" - ] - }, - { - "cell_type": "code", - "execution_count": 191, - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Entered sequential with 15 fragments to reconstruct\n", - "Found 15 and 0 Heavy and Hydrogen fragments, respectively\n" - ] - } - ], - "source": [ - "newmols, remfrag = sequential(filtered_fragments, newcell.refmoleclist, cellvec=newcell.cellvec, typ=\"All\", debug=2)" - ] - }, - { - "cell_type": "code", - "execution_count": 201, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "H22-C12-O7 ['O', 'O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'O', 'H'] [[8.493205725000003, 8.195383526262713, 4.231314359999999], [9.099140910000001, 5.575722523726235, 4.9322930399999985], [8.580934125000002, 4.7520266490061935, 7.554505039999998], [6.5368624050000035, 6.06977121517374, 9.007249479999997], [5.766802005000002, 8.557531136055076, 8.150302799999997], [6.335208930000003, 9.487592043021824, 5.554410399999998], [9.010681440000003, 7.266166786218555, 3.2948239999999993], [9.51731295, 7.734679428257626, 2.6134387999999995], [8.280586200000002, 6.795543726873003, 2.8610379999999993], [9.885163005000003, 6.2989625346577185, 3.9927807999999994], [10.28249955, 5.687574640969796, 3.352337199999999], [10.599296550000002, 6.768108301888733, 4.450936799999999], [9.844832310000001, 4.557657215079174, 5.581704799999999], [10.598078100000002, 4.951039001007475, 6.050583599999999], [10.18746045, 3.9317074419765237, 4.924689599999999], [8.968766760000001, 3.847712833178529, 6.5438323999999986], [8.18432865, 3.505403146067099, 6.087625999999999], [9.4454244, 3.0980926059160163, 6.934727199999998], [7.816722285000002, 4.137473129358549, 8.574340799999998], [8.326887300000001, 3.42309687111429, 8.988630799999997], [7.006087500000002, 3.7565428055384933, 8.200017599999997], [7.475921820000001, 5.165879482807372, 9.577409999999999], [5.146367265000002, 7.951419285633359, 9.248902399999997], [4.385201550000002, 7.426558501511211, 8.952563199999998], [4.993086255000003, 9.546894769333976, 7.511808799999998], [4.594774950000003, 10.132113488421519, 8.175647599999998], [4.279196400000003, 9.129665267842425, 7.0058875999999985], [5.8481944650000015, 10.327327089271131, 6.612068399999998], [5.341684800000003, 11.062807520580211, 6.236770399999998], [6.596688300000002, 10.695594909252293, 7.108241599999998], [7.255016835000001, 10.150052035526617, 4.713157999999999], [8.017401000000003, 10.450786501700344, 5.232726399999999], [6.834286050000003, 10.929851230271828, 4.316414399999999], [7.708523925000001, 9.227377589132557, 3.6438023999999993], [6.940291200000003, 8.842648514160834, 3.1914951999999994], [8.236722000000004, 9.71214044443154, 2.989711599999999], [6.136967115000004, 7.0709531853689445, 9.925413599999997], [6.9061746000000035, 7.589060634110348, 10.207130799999996], [5.737681050000002, 6.6625874365646185, 10.710127599999998], [4.3150122799999995, 8.708003890007264, 6.214999899999997], [3.485978900000001, 8.67381512964225, 5.962526699999998]]\n" - ] - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "e3f53b8cbb1b46dd87f7d2dec08a7562", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "NGLWidget()" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "frag = remfrag[0]\n", - "print(frag.formula, frag.labels, frag.coord)\n", - "frag_mol = Atoms(symbols=frag.labels, positions=frag.coord, cell=cell_parameters, pbc=True)\n", - "plot_atoms(frag_mol)\n", - "view = nglview.show_ase(frag_mol)\n", - "view.add_unitcell()\n", - "view" - ] - }, - { - "cell_type": "code", - "execution_count": 176, - "metadata": {}, - "outputs": [], - "source": [ - "updated_fraglist = []\n", - "updated_fraglist.extend(remfrag)\n", - "updated_fraglist.extend(hydrogens)" - ] - }, - { - "cell_type": "code", - "execution_count": 187, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "H2-O\n", - "H2-O\n", - "K\n", - "K\n", - "K\n" - ] - } - ], - "source": [ - "for mol in molecules:\n", - " print(mol.formula)" - ] - }, - { - "cell_type": "code", - "execution_count": 188, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "10" - ] - }, - "execution_count": 188, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "2+4+4" - ] - }, - { - "cell_type": "code", - "execution_count": 189, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = H\n", - " Number of Atoms = 1\n", - " Formula = H\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = H\n", - " Number of Atoms = 1\n", - " Formula = H\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = H\n", - " Number of Atoms = 1\n", - " Formula = H\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = H\n", - " Number of Atoms = 1\n", - " Formula = H\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = H\n", - " Number of Atoms = 1\n", - " Formula = H\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = H\n", - " Number of Atoms = 1\n", - " Formula = H\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = H\n", - " Number of Atoms = 1\n", - " Formula = H\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = H\n", - " Number of Atoms = 1\n", - " Formula = H\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = H\n", - " Number of Atoms = 1\n", - " Formula = H\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = H\n", - " Number of Atoms = 1\n", - " Formula = H\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = H\n", - " Number of Atoms = 1\n", - " Formula = H\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = H\n", - " Number of Atoms = 1\n", - " Formula = H\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " ---------------------------------------------------]" - ] - }, - "execution_count": 189, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "hydrogens" - ] - }, - { - "cell_type": "code", - "execution_count": 185, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "H22-C12-O7\n", - "C6-O12-Fe\n", - "H20-C12-O6\n", - "H20-C12-O6\n" - ] - } - ], - "source": [ - "for ref in remfrag:\n", - " print(ref.formula)" - ] - }, - { - "cell_type": "code", - "execution_count": 184, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "C6-O12-Fe\n", - "H24-C12-O6\n", - "H2-O\n", - "H2-O\n", - "H2-O\n", - "H24-C12-O6\n", - "H24-C12-O6\n", - "K\n", - "K\n", - "K\n" - ] - } - ], - "source": [ - "for ref in newcell.refmoleclist:\n", - " print(ref.formula)" - ] - }, - { - "cell_type": "code", - "execution_count": 177, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 41\n", - " Formula = H22-C12-O7\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 19\n", - " Formula = C6-O12-Fe\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 38\n", - " Formula = H20-C12-O6\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 38\n", - " Formula = H20-C12-O6\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = H\n", - " Number of Atoms = 1\n", - " Formula = H\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = H\n", - " Number of Atoms = 1\n", - " Formula = H\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = H\n", - " Number of Atoms = 1\n", - " Formula = H\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = H\n", - " Number of Atoms = 1\n", - " Formula = H\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = H\n", - " Number of Atoms = 1\n", - " Formula = H\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = H\n", - " Number of Atoms = 1\n", - " Formula = H\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = H\n", - " Number of Atoms = 1\n", - " Formula = H\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = H\n", - " Number of Atoms = 1\n", - " Formula = H\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = H\n", - " Number of Atoms = 1\n", - " Formula = H\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = H\n", - " Number of Atoms = 1\n", - " Formula = H\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = H\n", - " Number of Atoms = 1\n", - " Formula = H\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = H\n", - " Number of Atoms = 1\n", - " Formula = H\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " ---------------------------------------------------]" - ] - }, - "execution_count": 177, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "updated_fraglist" - ] - }, - { - "cell_type": "code", - "execution_count": 179, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Entered sequential with 16 fragments to reconstruct\n", - "Found 4 and 12 Heavy and Hydrogen fragments, respectively\n", - " \n", - "Fragments to allocate: 0 0 out of 3 11\n", - "sublist 2 ['H22-C12-O7', 'H']\n", - "list1 4 ['H22-C12-O7', 'C6-O12-Fe', 'H20-C12-O6', 'H20-C12-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 3 ['C6-O12-Fe', 'H20-C12-O6', 'H20-C12-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 1 with 4 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'O', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H22-C12-O7', 'H']\n", - " \n", - "Fragments to allocate: 0 1 out of 3 11\n", - "sublist 2 ['H22-C12-O7', 'H']\n", - "list1 4 ['H22-C12-O7', 'C6-O12-Fe', 'H20-C12-O6', 'H20-C12-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 3 ['C6-O12-Fe', 'H20-C12-O6', 'H20-C12-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 2 with 4 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'O', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H22-C12-O7', 'H']\n", - " \n", - "Fragments to allocate: 0 2 out of 3 11\n", - "sublist 2 ['H22-C12-O7', 'H']\n", - "list1 4 ['H22-C12-O7', 'C6-O12-Fe', 'H20-C12-O6', 'H20-C12-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 3 ['C6-O12-Fe', 'H20-C12-O6', 'H20-C12-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 3 with 4 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'O', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H22-C12-O7', 'H']\n", - " \n", - "Fragments to allocate: 0 3 out of 3 11\n", - "sublist 2 ['H22-C12-O7', 'H']\n", - "list1 4 ['H22-C12-O7', 'C6-O12-Fe', 'H20-C12-O6', 'H20-C12-O6']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 3 ['C6-O12-Fe', 'H20-C12-O6', 'H20-C12-O6']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 4 with 4 and 12 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'O', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 1\n", - "SPILT_SPECIES: Laplacian lap=array([[-2, 0, 0, ..., 0, 0, 0],\n", - " [ 0, -2, 0, ..., 0, 0, 0],\n", - " [ 0, 0, -2, ..., 0, 0, 0],\n", - " ...,\n", - " [ 0, 0, 0, ..., -3, 1, 0],\n", - " [ 0, 0, 0, ..., 1, -1, 0],\n", - " [ 0, 0, 0, ..., 0, 0, -1]])\n", - "SPILT_SPECIES: graph=<42x42 sparse matrix of type ''\n", - "\twith 128 stored elements in Compressed Sparse Row format>\n", - "COMBINE. received molecule: ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 42\n", - " Formula = H23-C12-O7\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - " from merge fragments\n", - "COMBINE: Fragment H23-C12-O7 added to avglist\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 1 ['H23-C12-O7']\n", - "SEQUENTIAL: badlist 0 []\n", - " \n", - "Fragments to allocate: 0 1 out of 3 10\n", - "sublist 2 ['H23-C12-O7', 'H']\n", - "list1 4 ['H23-C12-O7', 'C6-O12-Fe', 'H20-C12-O6', 'H20-C12-O6']\n", - "list2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 3 ['C6-O12-Fe', 'H20-C12-O6', 'H20-C12-O6']\n", - "keeplist2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All SKIPPED 42 and 1\n", - " \n", - "Fragments to allocate: 0 2 out of 3 10\n", - "sublist 2 ['H23-C12-O7', 'H']\n", - "list1 4 ['H23-C12-O7', 'C6-O12-Fe', 'H20-C12-O6', 'H20-C12-O6']\n", - "list2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 3 ['C6-O12-Fe', 'H20-C12-O6', 'H20-C12-O6']\n", - "keeplist2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All SKIPPED 42 and 1\n", - " \n", - "Fragments to allocate: 0 3 out of 3 10\n", - "sublist 2 ['H23-C12-O7', 'H']\n", - "list1 4 ['H23-C12-O7', 'C6-O12-Fe', 'H20-C12-O6', 'H20-C12-O6']\n", - "list2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 3 ['C6-O12-Fe', 'H20-C12-O6', 'H20-C12-O6']\n", - "keeplist2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All SKIPPED 42 and 1\n", - " \n", - "Fragments to allocate: 0 4 out of 3 10\n", - "sublist 2 ['H23-C12-O7', 'H']\n", - "list1 4 ['H23-C12-O7', 'C6-O12-Fe', 'H20-C12-O6', 'H20-C12-O6']\n", - "list2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 3 ['C6-O12-Fe', 'H20-C12-O6', 'H20-C12-O6']\n", - "keeplist2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All SKIPPED 42 and 1\n", - " \n", - "Fragments to allocate: 0 5 out of 3 10\n", - "sublist 2 ['H23-C12-O7', 'H']\n", - "list1 4 ['H23-C12-O7', 'C6-O12-Fe', 'H20-C12-O6', 'H20-C12-O6']\n", - "list2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 3 ['C6-O12-Fe', 'H20-C12-O6', 'H20-C12-O6']\n", - "keeplist2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All SKIPPED 42 and 1\n", - " \n", - "Fragments to allocate: 0 6 out of 3 10\n", - "sublist 2 ['H23-C12-O7', 'H']\n", - "list1 4 ['H23-C12-O7', 'C6-O12-Fe', 'H20-C12-O6', 'H20-C12-O6']\n", - "list2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 3 ['C6-O12-Fe', 'H20-C12-O6', 'H20-C12-O6']\n", - "keeplist2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All SKIPPED 42 and 1\n", - " \n", - "Fragments to allocate: 0 7 out of 3 10\n", - "sublist 2 ['H23-C12-O7', 'H']\n", - "list1 4 ['H23-C12-O7', 'C6-O12-Fe', 'H20-C12-O6', 'H20-C12-O6']\n", - "list2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 3 ['C6-O12-Fe', 'H20-C12-O6', 'H20-C12-O6']\n", - "keeplist2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All SKIPPED 42 and 1\n", - " \n", - "Fragments to allocate: 0 8 out of 3 10\n", - "sublist 2 ['H23-C12-O7', 'H']\n", - "list1 4 ['H23-C12-O7', 'C6-O12-Fe', 'H20-C12-O6', 'H20-C12-O6']\n", - "list2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 3 ['C6-O12-Fe', 'H20-C12-O6', 'H20-C12-O6']\n", - "keeplist2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All SKIPPED 42 and 1\n", - " \n", - "Fragments to allocate: 0 9 out of 3 10\n", - "sublist 2 ['H23-C12-O7', 'H']\n", - "list1 4 ['H23-C12-O7', 'C6-O12-Fe', 'H20-C12-O6', 'H20-C12-O6']\n", - "list2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 3 ['C6-O12-Fe', 'H20-C12-O6', 'H20-C12-O6']\n", - "keeplist2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All SKIPPED 42 and 1\n", - " \n", - "Fragments to allocate: 0 10 out of 3 10\n", - "sublist 2 ['H23-C12-O7', 'H']\n", - "list1 4 ['H23-C12-O7', 'C6-O12-Fe', 'H20-C12-O6', 'H20-C12-O6']\n", - "list2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 3 ['C6-O12-Fe', 'H20-C12-O6', 'H20-C12-O6']\n", - "keeplist2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All SKIPPED 42 and 1\n", - " \n", - "Fragments to allocate: 1 0 out of 3 10\n", - "sublist 2 ['C6-O12-Fe', 'H']\n", - "list1 4 ['H23-C12-O7', 'C6-O12-Fe', 'H20-C12-O6', 'H20-C12-O6']\n", - "list2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 3 ['H23-C12-O7', 'H20-C12-O6', 'H20-C12-O6']\n", - "keeplist2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 15 with 4 and 11 Remaining in each list\n", - "SEQUENTIAL All sending ['Fe', 'O', 'O', 'C', 'O', 'O', 'O', 'O', 'C', 'C', 'O', 'O', 'C', 'O', 'O', 'C', 'O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C6-O12-Fe', 'H']\n", - " \n", - "Fragments to allocate: 1 1 out of 3 10\n", - "sublist 2 ['H23-C12-O7', 'H']\n", - "list1 4 ['C6-O12-Fe', 'H23-C12-O7', 'H20-C12-O6', 'H20-C12-O6']\n", - "list2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 3 ['C6-O12-Fe', 'H20-C12-O6', 'H20-C12-O6']\n", - "keeplist2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All SKIPPED 42 and 1\n", - " \n", - "Fragments to allocate: 1 2 out of 3 10\n", - "sublist 2 ['H23-C12-O7', 'H']\n", - "list1 4 ['C6-O12-Fe', 'H23-C12-O7', 'H20-C12-O6', 'H20-C12-O6']\n", - "list2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 3 ['C6-O12-Fe', 'H20-C12-O6', 'H20-C12-O6']\n", - "keeplist2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All SKIPPED 42 and 1\n", - " \n", - "Fragments to allocate: 1 3 out of 3 10\n", - "sublist 2 ['H23-C12-O7', 'H']\n", - "list1 4 ['C6-O12-Fe', 'H23-C12-O7', 'H20-C12-O6', 'H20-C12-O6']\n", - "list2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 3 ['C6-O12-Fe', 'H20-C12-O6', 'H20-C12-O6']\n", - "keeplist2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All SKIPPED 42 and 1\n", - " \n", - "Fragments to allocate: 1 4 out of 3 10\n", - "sublist 2 ['H23-C12-O7', 'H']\n", - "list1 4 ['C6-O12-Fe', 'H23-C12-O7', 'H20-C12-O6', 'H20-C12-O6']\n", - "list2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 3 ['C6-O12-Fe', 'H20-C12-O6', 'H20-C12-O6']\n", - "keeplist2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All SKIPPED 42 and 1\n", - " \n", - "Fragments to allocate: 1 5 out of 3 10\n", - "sublist 2 ['H23-C12-O7', 'H']\n", - "list1 4 ['C6-O12-Fe', 'H23-C12-O7', 'H20-C12-O6', 'H20-C12-O6']\n", - "list2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 3 ['C6-O12-Fe', 'H20-C12-O6', 'H20-C12-O6']\n", - "keeplist2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All SKIPPED 42 and 1\n", - " \n", - "Fragments to allocate: 1 6 out of 3 10\n", - "sublist 2 ['H23-C12-O7', 'H']\n", - "list1 4 ['C6-O12-Fe', 'H23-C12-O7', 'H20-C12-O6', 'H20-C12-O6']\n", - "list2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 3 ['C6-O12-Fe', 'H20-C12-O6', 'H20-C12-O6']\n", - "keeplist2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All SKIPPED 42 and 1\n", - " \n", - "Fragments to allocate: 1 7 out of 3 10\n", - "sublist 2 ['H23-C12-O7', 'H']\n", - "list1 4 ['C6-O12-Fe', 'H23-C12-O7', 'H20-C12-O6', 'H20-C12-O6']\n", - "list2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 3 ['C6-O12-Fe', 'H20-C12-O6', 'H20-C12-O6']\n", - "keeplist2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All SKIPPED 42 and 1\n", - " \n", - "Fragments to allocate: 1 8 out of 3 10\n", - "sublist 2 ['H23-C12-O7', 'H']\n", - "list1 4 ['C6-O12-Fe', 'H23-C12-O7', 'H20-C12-O6', 'H20-C12-O6']\n", - "list2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 3 ['C6-O12-Fe', 'H20-C12-O6', 'H20-C12-O6']\n", - "keeplist2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All SKIPPED 42 and 1\n", - " \n", - "Fragments to allocate: 1 9 out of 3 10\n", - "sublist 2 ['H23-C12-O7', 'H']\n", - "list1 4 ['C6-O12-Fe', 'H23-C12-O7', 'H20-C12-O6', 'H20-C12-O6']\n", - "list2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 3 ['C6-O12-Fe', 'H20-C12-O6', 'H20-C12-O6']\n", - "keeplist2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All SKIPPED 42 and 1\n", - " \n", - "Fragments to allocate: 1 10 out of 3 10\n", - "sublist 2 ['H23-C12-O7', 'H']\n", - "list1 4 ['C6-O12-Fe', 'H23-C12-O7', 'H20-C12-O6', 'H20-C12-O6']\n", - "list2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 3 ['C6-O12-Fe', 'H20-C12-O6', 'H20-C12-O6']\n", - "keeplist2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All SKIPPED 42 and 1\n", - " \n", - "Fragments to allocate: 2 0 out of 3 10\n", - "sublist 2 ['H20-C12-O6', 'H']\n", - "list1 4 ['C6-O12-Fe', 'H23-C12-O7', 'H20-C12-O6', 'H20-C12-O6']\n", - "list2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 3 ['C6-O12-Fe', 'H23-C12-O7', 'H20-C12-O6']\n", - "keeplist2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 26 with 4 and 11 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'C', 'H', 'H', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H20-C12-O6', 'H']\n", - " \n", - "Fragments to allocate: 2 1 out of 3 10\n", - "sublist 2 ['H23-C12-O7', 'H']\n", - "list1 4 ['H20-C12-O6', 'C6-O12-Fe', 'H23-C12-O7', 'H20-C12-O6']\n", - "list2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 3 ['H20-C12-O6', 'C6-O12-Fe', 'H20-C12-O6']\n", - "keeplist2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All SKIPPED 42 and 1\n", - " \n", - "Fragments to allocate: 2 2 out of 3 10\n", - "sublist 2 ['H23-C12-O7', 'H']\n", - "list1 4 ['H20-C12-O6', 'C6-O12-Fe', 'H23-C12-O7', 'H20-C12-O6']\n", - "list2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 3 ['H20-C12-O6', 'C6-O12-Fe', 'H20-C12-O6']\n", - "keeplist2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All SKIPPED 42 and 1\n", - " \n", - "Fragments to allocate: 2 3 out of 3 10\n", - "sublist 2 ['H23-C12-O7', 'H']\n", - "list1 4 ['H20-C12-O6', 'C6-O12-Fe', 'H23-C12-O7', 'H20-C12-O6']\n", - "list2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 3 ['H20-C12-O6', 'C6-O12-Fe', 'H20-C12-O6']\n", - "keeplist2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All SKIPPED 42 and 1\n", - " \n", - "Fragments to allocate: 2 4 out of 3 10\n", - "sublist 2 ['H23-C12-O7', 'H']\n", - "list1 4 ['H20-C12-O6', 'C6-O12-Fe', 'H23-C12-O7', 'H20-C12-O6']\n", - "list2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 3 ['H20-C12-O6', 'C6-O12-Fe', 'H20-C12-O6']\n", - "keeplist2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All SKIPPED 42 and 1\n", - " \n", - "Fragments to allocate: 2 5 out of 3 10\n", - "sublist 2 ['H23-C12-O7', 'H']\n", - "list1 4 ['H20-C12-O6', 'C6-O12-Fe', 'H23-C12-O7', 'H20-C12-O6']\n", - "list2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 3 ['H20-C12-O6', 'C6-O12-Fe', 'H20-C12-O6']\n", - "keeplist2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All SKIPPED 42 and 1\n", - " \n", - "Fragments to allocate: 2 6 out of 3 10\n", - "sublist 2 ['H23-C12-O7', 'H']\n", - "list1 4 ['H20-C12-O6', 'C6-O12-Fe', 'H23-C12-O7', 'H20-C12-O6']\n", - "list2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 3 ['H20-C12-O6', 'C6-O12-Fe', 'H20-C12-O6']\n", - "keeplist2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All SKIPPED 42 and 1\n", - " \n", - "Fragments to allocate: 2 7 out of 3 10\n", - "sublist 2 ['H23-C12-O7', 'H']\n", - "list1 4 ['H20-C12-O6', 'C6-O12-Fe', 'H23-C12-O7', 'H20-C12-O6']\n", - "list2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 3 ['H20-C12-O6', 'C6-O12-Fe', 'H20-C12-O6']\n", - "keeplist2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All SKIPPED 42 and 1\n", - " \n", - "Fragments to allocate: 2 8 out of 3 10\n", - "sublist 2 ['H23-C12-O7', 'H']\n", - "list1 4 ['H20-C12-O6', 'C6-O12-Fe', 'H23-C12-O7', 'H20-C12-O6']\n", - "list2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 3 ['H20-C12-O6', 'C6-O12-Fe', 'H20-C12-O6']\n", - "keeplist2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All SKIPPED 42 and 1\n", - " \n", - "Fragments to allocate: 2 9 out of 3 10\n", - "sublist 2 ['H23-C12-O7', 'H']\n", - "list1 4 ['H20-C12-O6', 'C6-O12-Fe', 'H23-C12-O7', 'H20-C12-O6']\n", - "list2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 3 ['H20-C12-O6', 'C6-O12-Fe', 'H20-C12-O6']\n", - "keeplist2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All SKIPPED 42 and 1\n", - " \n", - "Fragments to allocate: 2 10 out of 3 10\n", - "sublist 2 ['H23-C12-O7', 'H']\n", - "list1 4 ['H20-C12-O6', 'C6-O12-Fe', 'H23-C12-O7', 'H20-C12-O6']\n", - "list2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 3 ['H20-C12-O6', 'C6-O12-Fe', 'H20-C12-O6']\n", - "keeplist2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All SKIPPED 42 and 1\n", - " \n", - "Fragments to allocate: 3 0 out of 3 10\n", - "sublist 2 ['H20-C12-O6', 'H']\n", - "list1 4 ['H20-C12-O6', 'C6-O12-Fe', 'H23-C12-O7', 'H20-C12-O6']\n", - "list2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 3 ['H20-C12-O6', 'C6-O12-Fe', 'H23-C12-O7']\n", - "keeplist2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 37 with 4 and 11 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 1\n", - "SPILT_SPECIES: Laplacian lap=array([[-2, 0, 0, ..., 0, 0, 0],\n", - " [ 0, -2, 0, ..., 0, 0, 0],\n", - " [ 0, 0, -2, ..., 0, 0, 0],\n", - " ...,\n", - " [ 0, 0, 0, ..., -3, 1, 0],\n", - " [ 0, 0, 0, ..., 1, -1, 0],\n", - " [ 0, 0, 0, ..., 0, 0, -1]])\n", - "SPILT_SPECIES: graph=<39x39 sparse matrix of type ''\n", - "\twith 117 stored elements in Compressed Sparse Row format>\n", - "COMBINE. received molecule: ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 39\n", - " Formula = H21-C12-O6\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - " from merge fragments\n", - "COMBINE: Fragment H21-C12-O6 added to avglist\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 1 ['H21-C12-O6']\n", - "SEQUENTIAL: badlist 0 []\n", - " \n", - "Fragments to allocate: 0 1 out of 3 9\n", - "sublist 2 ['H21-C12-O6', 'H']\n", - "list1 4 ['H21-C12-O6', 'H20-C12-O6', 'C6-O12-Fe', 'H23-C12-O7']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 3 ['H20-C12-O6', 'C6-O12-Fe', 'H23-C12-O7']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 38 with 4 and 10 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 1\n", - "SPILT_SPECIES: Laplacian lap=array([[-2, 0, 0, ..., 0, 0, 0],\n", - " [ 0, -2, 0, ..., 0, 0, 0],\n", - " [ 0, 0, -2, ..., 0, 0, 0],\n", - " ...,\n", - " [ 0, 0, 0, ..., -1, 0, 0],\n", - " [ 0, 0, 0, ..., 0, -1, 0],\n", - " [ 0, 0, 0, ..., 0, 0, -1]])\n", - "SPILT_SPECIES: graph=<40x40 sparse matrix of type ''\n", - "\twith 120 stored elements in Compressed Sparse Row format>\n", - "COMBINE. received molecule: ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 40\n", - " Formula = H22-C12-O6\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - " from merge fragments\n", - "COMBINE: Fragment H22-C12-O6 added to avglist\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 1 ['H22-C12-O6']\n", - "SEQUENTIAL: badlist 0 []\n", - " \n", - "Fragments to allocate: 0 1 out of 3 8\n", - "sublist 2 ['H22-C12-O6', 'H']\n", - "list1 4 ['H22-C12-O6', 'H20-C12-O6', 'C6-O12-Fe', 'H23-C12-O7']\n", - "list2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 3 ['H20-C12-O6', 'C6-O12-Fe', 'H23-C12-O7']\n", - "keeplist2 8 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 39 with 4 and 9 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H22-C12-O6', 'H']\n", - " \n", - "Fragments to allocate: 0 2 out of 3 8\n", - "sublist 2 ['H22-C12-O6', 'H']\n", - "list1 4 ['H22-C12-O6', 'H20-C12-O6', 'C6-O12-Fe', 'H23-C12-O7']\n", - "list2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 3 ['H20-C12-O6', 'C6-O12-Fe', 'H23-C12-O7']\n", - "keeplist2 8 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 40 with 4 and 9 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 1\n", - "SPILT_SPECIES: Laplacian lap=array([[-2, 0, 0, ..., 0, 0, 0],\n", - " [ 0, -2, 0, ..., 0, 0, 0],\n", - " [ 0, 0, -2, ..., 0, 0, 0],\n", - " ...,\n", - " [ 0, 0, 0, ..., -1, 0, 0],\n", - " [ 0, 0, 0, ..., 0, -1, 0],\n", - " [ 0, 0, 0, ..., 0, 0, -1]])\n", - "SPILT_SPECIES: graph=<41x41 sparse matrix of type ''\n", - "\twith 123 stored elements in Compressed Sparse Row format>\n", - "COMBINE. received molecule: ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 41\n", - " Formula = H23-C12-O6\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - " from merge fragments\n", - "COMBINE: Fragment H23-C12-O6 added to avglist\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 1 ['H23-C12-O6']\n", - "SEQUENTIAL: badlist 0 []\n", - " \n", - "Fragments to allocate: 0 1 out of 3 7\n", - "sublist 2 ['H23-C12-O6', 'H']\n", - "list1 4 ['H23-C12-O6', 'H20-C12-O6', 'C6-O12-Fe', 'H23-C12-O7']\n", - "list2 8 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 3 ['H20-C12-O6', 'C6-O12-Fe', 'H23-C12-O7']\n", - "keeplist2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 41 with 4 and 8 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 0, -1), (-1, 0, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H23-C12-O6', 'H']\n", - " \n", - "Fragments to allocate: 0 2 out of 3 7\n", - "sublist 2 ['H23-C12-O6', 'H']\n", - "list1 4 ['H23-C12-O6', 'H20-C12-O6', 'C6-O12-Fe', 'H23-C12-O7']\n", - "list2 8 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 3 ['H20-C12-O6', 'C6-O12-Fe', 'H23-C12-O7']\n", - "keeplist2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 42 with 4 and 8 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H23-C12-O6', 'H']\n", - " \n", - "Fragments to allocate: 0 3 out of 3 7\n", - "sublist 2 ['H23-C12-O6', 'H']\n", - "list1 4 ['H23-C12-O6', 'H20-C12-O6', 'C6-O12-Fe', 'H23-C12-O7']\n", - "list2 8 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 3 ['H20-C12-O6', 'C6-O12-Fe', 'H23-C12-O7']\n", - "keeplist2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 43 with 4 and 8 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, 1, 0), (0, 0, -1), (-1, 1, 0), (0, 1, -1), (-1, 0, -1), (-1, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 1\n", - "SPILT_SPECIES: Laplacian lap=array([[-2, 0, 0, ..., 0, 0, 0],\n", - " [ 0, -2, 0, ..., 0, 0, 0],\n", - " [ 0, 0, -2, ..., 0, 0, 0],\n", - " ...,\n", - " [ 0, 0, 0, ..., -1, 0, 0],\n", - " [ 0, 0, 0, ..., 0, -1, 0],\n", - " [ 0, 0, 0, ..., 0, 0, -1]])\n", - "SPILT_SPECIES: graph=<42x42 sparse matrix of type ''\n", - "\twith 126 stored elements in Compressed Sparse Row format>\n", - "COMBINE. received molecule: ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 42\n", - " Formula = H24-C12-O6\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - " from merge fragments\n", - "COMBINE: Fragment H24-C12-O6 added to avglist\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 1 ['H24-C12-O6']\n", - "SEQUENTIAL: badlist 0 []\n", - " \n", - "Fragments to allocate: 0 1 out of 3 6\n", - "sublist 2 ['H24-C12-O6', 'H']\n", - "list1 4 ['H24-C12-O6', 'H20-C12-O6', 'C6-O12-Fe', 'H23-C12-O7']\n", - "list2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 3 ['H20-C12-O6', 'C6-O12-Fe', 'H23-C12-O7']\n", - "keeplist2 6 ['H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All SKIPPED 42 and 1\n", - " \n", - "Fragments to allocate: 0 2 out of 3 6\n", - "sublist 2 ['H24-C12-O6', 'H']\n", - "list1 4 ['H24-C12-O6', 'H20-C12-O6', 'C6-O12-Fe', 'H23-C12-O7']\n", - "list2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 3 ['H20-C12-O6', 'C6-O12-Fe', 'H23-C12-O7']\n", - "keeplist2 6 ['H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All SKIPPED 42 and 1\n", - " \n", - "Fragments to allocate: 0 3 out of 3 6\n", - "sublist 2 ['H24-C12-O6', 'H']\n", - "list1 4 ['H24-C12-O6', 'H20-C12-O6', 'C6-O12-Fe', 'H23-C12-O7']\n", - "list2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 3 ['H20-C12-O6', 'C6-O12-Fe', 'H23-C12-O7']\n", - "keeplist2 6 ['H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All SKIPPED 42 and 1\n", - " \n", - "Fragments to allocate: 0 4 out of 3 6\n", - "sublist 2 ['H24-C12-O6', 'H']\n", - "list1 4 ['H24-C12-O6', 'H20-C12-O6', 'C6-O12-Fe', 'H23-C12-O7']\n", - "list2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 3 ['H20-C12-O6', 'C6-O12-Fe', 'H23-C12-O7']\n", - "keeplist2 6 ['H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All SKIPPED 42 and 1\n", - " \n", - "Fragments to allocate: 0 5 out of 3 6\n", - "sublist 2 ['H24-C12-O6', 'H']\n", - "list1 4 ['H24-C12-O6', 'H20-C12-O6', 'C6-O12-Fe', 'H23-C12-O7']\n", - "list2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 3 ['H20-C12-O6', 'C6-O12-Fe', 'H23-C12-O7']\n", - "keeplist2 6 ['H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All SKIPPED 42 and 1\n", - " \n", - "Fragments to allocate: 0 6 out of 3 6\n", - "sublist 2 ['H24-C12-O6', 'H']\n", - "list1 4 ['H24-C12-O6', 'H20-C12-O6', 'C6-O12-Fe', 'H23-C12-O7']\n", - "list2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 3 ['H20-C12-O6', 'C6-O12-Fe', 'H23-C12-O7']\n", - "keeplist2 6 ['H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All SKIPPED 42 and 1\n", - " \n", - "Fragments to allocate: 1 0 out of 3 6\n", - "sublist 2 ['H20-C12-O6', 'H']\n", - "list1 4 ['H24-C12-O6', 'H20-C12-O6', 'C6-O12-Fe', 'H23-C12-O7']\n", - "list2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 3 ['H24-C12-O6', 'C6-O12-Fe', 'H23-C12-O7']\n", - "keeplist2 6 ['H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 50 with 4 and 7 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'C', 'H', 'H', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H20-C12-O6', 'H']\n", - " \n", - "Fragments to allocate: 1 1 out of 3 6\n", - "sublist 2 ['H24-C12-O6', 'H']\n", - "list1 4 ['H20-C12-O6', 'H24-C12-O6', 'C6-O12-Fe', 'H23-C12-O7']\n", - "list2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 3 ['H20-C12-O6', 'C6-O12-Fe', 'H23-C12-O7']\n", - "keeplist2 6 ['H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All SKIPPED 42 and 1\n", - " \n", - "Fragments to allocate: 1 2 out of 3 6\n", - "sublist 2 ['H24-C12-O6', 'H']\n", - "list1 4 ['H20-C12-O6', 'H24-C12-O6', 'C6-O12-Fe', 'H23-C12-O7']\n", - "list2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 3 ['H20-C12-O6', 'C6-O12-Fe', 'H23-C12-O7']\n", - "keeplist2 6 ['H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All SKIPPED 42 and 1\n", - " \n", - "Fragments to allocate: 1 3 out of 3 6\n", - "sublist 2 ['H24-C12-O6', 'H']\n", - "list1 4 ['H20-C12-O6', 'H24-C12-O6', 'C6-O12-Fe', 'H23-C12-O7']\n", - "list2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 3 ['H20-C12-O6', 'C6-O12-Fe', 'H23-C12-O7']\n", - "keeplist2 6 ['H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All SKIPPED 42 and 1\n", - " \n", - "Fragments to allocate: 1 4 out of 3 6\n", - "sublist 2 ['H24-C12-O6', 'H']\n", - "list1 4 ['H20-C12-O6', 'H24-C12-O6', 'C6-O12-Fe', 'H23-C12-O7']\n", - "list2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 3 ['H20-C12-O6', 'C6-O12-Fe', 'H23-C12-O7']\n", - "keeplist2 6 ['H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All SKIPPED 42 and 1\n", - " \n", - "Fragments to allocate: 1 5 out of 3 6\n", - "sublist 2 ['H24-C12-O6', 'H']\n", - "list1 4 ['H20-C12-O6', 'H24-C12-O6', 'C6-O12-Fe', 'H23-C12-O7']\n", - "list2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 3 ['H20-C12-O6', 'C6-O12-Fe', 'H23-C12-O7']\n", - "keeplist2 6 ['H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All SKIPPED 42 and 1\n", - " \n", - "Fragments to allocate: 1 6 out of 3 6\n", - "sublist 2 ['H24-C12-O6', 'H']\n", - "list1 4 ['H20-C12-O6', 'H24-C12-O6', 'C6-O12-Fe', 'H23-C12-O7']\n", - "list2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 3 ['H20-C12-O6', 'C6-O12-Fe', 'H23-C12-O7']\n", - "keeplist2 6 ['H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All SKIPPED 42 and 1\n", - " \n", - "Fragments to allocate: 2 0 out of 3 6\n", - "sublist 2 ['C6-O12-Fe', 'H']\n", - "list1 4 ['H20-C12-O6', 'H24-C12-O6', 'C6-O12-Fe', 'H23-C12-O7']\n", - "list2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 3 ['H20-C12-O6', 'H24-C12-O6', 'H23-C12-O7']\n", - "keeplist2 6 ['H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 57 with 4 and 7 Remaining in each list\n", - "SEQUENTIAL All sending ['Fe', 'O', 'O', 'C', 'O', 'O', 'O', 'O', 'C', 'C', 'O', 'O', 'C', 'O', 'O', 'C', 'O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (0, 0, -1), (0, 1, 0), (0, 1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C6-O12-Fe', 'H']\n", - " \n", - "Fragments to allocate: 2 1 out of 3 6\n", - "sublist 2 ['H24-C12-O6', 'H']\n", - "list1 4 ['C6-O12-Fe', 'H20-C12-O6', 'H24-C12-O6', 'H23-C12-O7']\n", - "list2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 3 ['C6-O12-Fe', 'H20-C12-O6', 'H23-C12-O7']\n", - "keeplist2 6 ['H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All SKIPPED 42 and 1\n", - " \n", - "Fragments to allocate: 2 2 out of 3 6\n", - "sublist 2 ['H24-C12-O6', 'H']\n", - "list1 4 ['C6-O12-Fe', 'H20-C12-O6', 'H24-C12-O6', 'H23-C12-O7']\n", - "list2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 3 ['C6-O12-Fe', 'H20-C12-O6', 'H23-C12-O7']\n", - "keeplist2 6 ['H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All SKIPPED 42 and 1\n", - " \n", - "Fragments to allocate: 2 3 out of 3 6\n", - "sublist 2 ['H24-C12-O6', 'H']\n", - "list1 4 ['C6-O12-Fe', 'H20-C12-O6', 'H24-C12-O6', 'H23-C12-O7']\n", - "list2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 3 ['C6-O12-Fe', 'H20-C12-O6', 'H23-C12-O7']\n", - "keeplist2 6 ['H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All SKIPPED 42 and 1\n", - " \n", - "Fragments to allocate: 2 4 out of 3 6\n", - "sublist 2 ['H24-C12-O6', 'H']\n", - "list1 4 ['C6-O12-Fe', 'H20-C12-O6', 'H24-C12-O6', 'H23-C12-O7']\n", - "list2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 3 ['C6-O12-Fe', 'H20-C12-O6', 'H23-C12-O7']\n", - "keeplist2 6 ['H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All SKIPPED 42 and 1\n", - " \n", - "Fragments to allocate: 2 5 out of 3 6\n", - "sublist 2 ['H24-C12-O6', 'H']\n", - "list1 4 ['C6-O12-Fe', 'H20-C12-O6', 'H24-C12-O6', 'H23-C12-O7']\n", - "list2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 3 ['C6-O12-Fe', 'H20-C12-O6', 'H23-C12-O7']\n", - "keeplist2 6 ['H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All SKIPPED 42 and 1\n", - " \n", - "Fragments to allocate: 2 6 out of 3 6\n", - "sublist 2 ['H24-C12-O6', 'H']\n", - "list1 4 ['C6-O12-Fe', 'H20-C12-O6', 'H24-C12-O6', 'H23-C12-O7']\n", - "list2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 3 ['C6-O12-Fe', 'H20-C12-O6', 'H23-C12-O7']\n", - "keeplist2 6 ['H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All SKIPPED 42 and 1\n", - " \n", - "Fragments to allocate: 3 0 out of 3 6\n", - "sublist 2 ['H23-C12-O7', 'H']\n", - "list1 4 ['C6-O12-Fe', 'H20-C12-O6', 'H24-C12-O6', 'H23-C12-O7']\n", - "list2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 3 ['C6-O12-Fe', 'H20-C12-O6', 'H24-C12-O6']\n", - "keeplist2 6 ['H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All SKIPPED 42 and 1\n", - " \n", - "Fragments to allocate: 3 1 out of 3 6\n", - "sublist 2 ['H23-C12-O7', 'H']\n", - "list1 4 ['C6-O12-Fe', 'H20-C12-O6', 'H24-C12-O6', 'H23-C12-O7']\n", - "list2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 3 ['C6-O12-Fe', 'H20-C12-O6', 'H24-C12-O6']\n", - "keeplist2 6 ['H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All SKIPPED 42 and 1\n", - " \n", - "Fragments to allocate: 3 2 out of 3 6\n", - "sublist 2 ['H23-C12-O7', 'H']\n", - "list1 4 ['C6-O12-Fe', 'H20-C12-O6', 'H24-C12-O6', 'H23-C12-O7']\n", - "list2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 3 ['C6-O12-Fe', 'H20-C12-O6', 'H24-C12-O6']\n", - "keeplist2 6 ['H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All SKIPPED 42 and 1\n", - " \n", - "Fragments to allocate: 3 3 out of 3 6\n", - "sublist 2 ['H23-C12-O7', 'H']\n", - "list1 4 ['C6-O12-Fe', 'H20-C12-O6', 'H24-C12-O6', 'H23-C12-O7']\n", - "list2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 3 ['C6-O12-Fe', 'H20-C12-O6', 'H24-C12-O6']\n", - "keeplist2 6 ['H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All SKIPPED 42 and 1\n", - " \n", - "Fragments to allocate: 3 4 out of 3 6\n", - "sublist 2 ['H23-C12-O7', 'H']\n", - "list1 4 ['C6-O12-Fe', 'H20-C12-O6', 'H24-C12-O6', 'H23-C12-O7']\n", - "list2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 3 ['C6-O12-Fe', 'H20-C12-O6', 'H24-C12-O6']\n", - "keeplist2 6 ['H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All SKIPPED 42 and 1\n", - " \n", - "Fragments to allocate: 3 5 out of 3 6\n", - "sublist 2 ['H23-C12-O7', 'H']\n", - "list1 4 ['C6-O12-Fe', 'H20-C12-O6', 'H24-C12-O6', 'H23-C12-O7']\n", - "list2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 3 ['C6-O12-Fe', 'H20-C12-O6', 'H24-C12-O6']\n", - "keeplist2 6 ['H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All SKIPPED 42 and 1\n", - " \n", - "Fragments to allocate: 3 6 out of 3 6\n", - "sublist 2 ['H23-C12-O7', 'H']\n", - "list1 4 ['C6-O12-Fe', 'H20-C12-O6', 'H24-C12-O6', 'H23-C12-O7']\n", - "list2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 3 ['C6-O12-Fe', 'H20-C12-O6', 'H24-C12-O6']\n", - "keeplist2 6 ['H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All SKIPPED 42 and 1\n", - " Increased Threshold_tmat. Now: 0.6000000000000001\n", - " Maxsize of the translation matrix is= 8\n", - " \n", - "Fragments to allocate: 0 0 out of 3 6\n", - "sublist 2 ['C6-O12-Fe', 'H']\n", - "list1 4 ['C6-O12-Fe', 'H20-C12-O6', 'H24-C12-O6', 'H23-C12-O7']\n", - "list2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 3 ['H20-C12-O6', 'H24-C12-O6', 'H23-C12-O7']\n", - "keeplist2 6 ['H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 1 with 4 and 7 Remaining in each list\n", - "SEQUENTIAL All sending ['Fe', 'O', 'O', 'C', 'O', 'O', 'O', 'O', 'C', 'C', 'O', 'O', 'C', 'O', 'O', 'C', 'O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C6-O12-Fe', 'H']\n", - " \n", - "Fragments to allocate: 0 1 out of 3 6\n", - "sublist 2 ['C6-O12-Fe', 'H']\n", - "list1 4 ['C6-O12-Fe', 'H20-C12-O6', 'H24-C12-O6', 'H23-C12-O7']\n", - "list2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 3 ['H20-C12-O6', 'H24-C12-O6', 'H23-C12-O7']\n", - "keeplist2 6 ['H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 2 with 4 and 7 Remaining in each list\n", - "SEQUENTIAL All sending ['Fe', 'O', 'O', 'C', 'O', 'O', 'O', 'O', 'C', 'C', 'O', 'O', 'C', 'O', 'O', 'C', 'O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C6-O12-Fe', 'H']\n", - " \n", - "Fragments to allocate: 0 2 out of 3 6\n", - "sublist 2 ['C6-O12-Fe', 'H']\n", - "list1 4 ['C6-O12-Fe', 'H20-C12-O6', 'H24-C12-O6', 'H23-C12-O7']\n", - "list2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 3 ['H20-C12-O6', 'H24-C12-O6', 'H23-C12-O7']\n", - "keeplist2 6 ['H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 3 with 4 and 7 Remaining in each list\n", - "SEQUENTIAL All sending ['Fe', 'O', 'O', 'C', 'O', 'O', 'O', 'O', 'C', 'C', 'O', 'O', 'C', 'O', 'O', 'C', 'O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C6-O12-Fe', 'H']\n", - " \n", - "Fragments to allocate: 0 3 out of 3 6\n", - "sublist 2 ['C6-O12-Fe', 'H']\n", - "list1 4 ['C6-O12-Fe', 'H20-C12-O6', 'H24-C12-O6', 'H23-C12-O7']\n", - "list2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 3 ['H20-C12-O6', 'H24-C12-O6', 'H23-C12-O7']\n", - "keeplist2 6 ['H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 4 with 4 and 7 Remaining in each list\n", - "SEQUENTIAL All sending ['Fe', 'O', 'O', 'C', 'O', 'O', 'O', 'O', 'C', 'C', 'O', 'O', 'C', 'O', 'O', 'C', 'O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C6-O12-Fe', 'H']\n", - " \n", - "Fragments to allocate: 0 4 out of 3 6\n", - "sublist 2 ['C6-O12-Fe', 'H']\n", - "list1 4 ['C6-O12-Fe', 'H20-C12-O6', 'H24-C12-O6', 'H23-C12-O7']\n", - "list2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 3 ['H20-C12-O6', 'H24-C12-O6', 'H23-C12-O7']\n", - "keeplist2 6 ['H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 5 with 4 and 7 Remaining in each list\n", - "SEQUENTIAL All sending ['Fe', 'O', 'O', 'C', 'O', 'O', 'O', 'O', 'C', 'C', 'O', 'O', 'C', 'O', 'O', 'C', 'O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C6-O12-Fe', 'H']\n", - " \n", - "Fragments to allocate: 0 5 out of 3 6\n", - "sublist 2 ['C6-O12-Fe', 'H']\n", - "list1 4 ['C6-O12-Fe', 'H20-C12-O6', 'H24-C12-O6', 'H23-C12-O7']\n", - "list2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 3 ['H20-C12-O6', 'H24-C12-O6', 'H23-C12-O7']\n", - "keeplist2 6 ['H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 6 with 4 and 7 Remaining in each list\n", - "SEQUENTIAL All sending ['Fe', 'O', 'O', 'C', 'O', 'O', 'O', 'O', 'C', 'C', 'O', 'O', 'C', 'O', 'O', 'C', 'O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C6-O12-Fe', 'H']\n", - " \n", - "Fragments to allocate: 0 6 out of 3 6\n", - "sublist 2 ['C6-O12-Fe', 'H']\n", - "list1 4 ['C6-O12-Fe', 'H20-C12-O6', 'H24-C12-O6', 'H23-C12-O7']\n", - "list2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 3 ['H20-C12-O6', 'H24-C12-O6', 'H23-C12-O7']\n", - "keeplist2 6 ['H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 7 with 4 and 7 Remaining in each list\n", - "SEQUENTIAL All sending ['Fe', 'O', 'O', 'C', 'O', 'O', 'O', 'O', 'C', 'C', 'O', 'O', 'C', 'O', 'O', 'C', 'O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C6-O12-Fe', 'H']\n", - " \n", - "Fragments to allocate: 1 0 out of 3 6\n", - "sublist 2 ['H20-C12-O6', 'H']\n", - "list1 4 ['C6-O12-Fe', 'H20-C12-O6', 'H24-C12-O6', 'H23-C12-O7']\n", - "list2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 3 ['C6-O12-Fe', 'H24-C12-O6', 'H23-C12-O7']\n", - "keeplist2 6 ['H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 8 with 4 and 7 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'C', 'H', 'H', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H20-C12-O6', 'H']\n", - " \n", - "Fragments to allocate: 1 1 out of 3 6\n", - "sublist 2 ['C6-O12-Fe', 'H']\n", - "list1 4 ['H20-C12-O6', 'C6-O12-Fe', 'H24-C12-O6', 'H23-C12-O7']\n", - "list2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 3 ['H20-C12-O6', 'H24-C12-O6', 'H23-C12-O7']\n", - "keeplist2 6 ['H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 9 with 4 and 7 Remaining in each list\n", - "SEQUENTIAL All sending ['Fe', 'O', 'O', 'C', 'O', 'O', 'O', 'O', 'C', 'C', 'O', 'O', 'C', 'O', 'O', 'C', 'O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C6-O12-Fe', 'H']\n", - " \n", - "Fragments to allocate: 1 2 out of 3 6\n", - "sublist 2 ['H20-C12-O6', 'H']\n", - "list1 4 ['C6-O12-Fe', 'H20-C12-O6', 'H24-C12-O6', 'H23-C12-O7']\n", - "list2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 3 ['C6-O12-Fe', 'H24-C12-O6', 'H23-C12-O7']\n", - "keeplist2 6 ['H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 10 with 4 and 7 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'C', 'H', 'H', 'C', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 1\n", - "SPILT_SPECIES: Laplacian lap=array([[-2, 0, 0, ..., 0, 0, 0],\n", - " [ 0, -2, 0, ..., 0, 0, 0],\n", - " [ 0, 0, -2, ..., 0, 0, 0],\n", - " ...,\n", - " [ 0, 0, 0, ..., -3, 1, 0],\n", - " [ 0, 0, 0, ..., 1, -1, 0],\n", - " [ 0, 0, 0, ..., 0, 0, -1]])\n", - "SPILT_SPECIES: graph=<39x39 sparse matrix of type ''\n", - "\twith 117 stored elements in Compressed Sparse Row format>\n", - "COMBINE. received molecule: ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 39\n", - " Formula = H21-C12-O6\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - " from merge fragments\n", - "COMBINE: Fragment H21-C12-O6 added to avglist\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 1 ['H21-C12-O6']\n", - "SEQUENTIAL: badlist 0 []\n", - " \n", - "Fragments to allocate: 0 1 out of 3 5\n", - "sublist 2 ['H21-C12-O6', 'H']\n", - "list1 4 ['H21-C12-O6', 'C6-O12-Fe', 'H24-C12-O6', 'H23-C12-O7']\n", - "list2 6 ['H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 3 ['C6-O12-Fe', 'H24-C12-O6', 'H23-C12-O7']\n", - "keeplist2 5 ['H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 11 with 4 and 6 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H21-C12-O6', 'H']\n", - " \n", - "Fragments to allocate: 0 2 out of 3 5\n", - "sublist 2 ['H21-C12-O6', 'H']\n", - "list1 4 ['H21-C12-O6', 'C6-O12-Fe', 'H24-C12-O6', 'H23-C12-O7']\n", - "list2 6 ['H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 3 ['C6-O12-Fe', 'H24-C12-O6', 'H23-C12-O7']\n", - "keeplist2 5 ['H', 'H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 12 with 4 and 6 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 1\n", - "SPILT_SPECIES: Laplacian lap=array([[-2, 0, 0, ..., 0, 0, 0],\n", - " [ 0, -2, 0, ..., 0, 0, 0],\n", - " [ 0, 0, -2, ..., 0, 0, 0],\n", - " ...,\n", - " [ 0, 0, 0, ..., -1, 0, 0],\n", - " [ 0, 0, 0, ..., 0, -1, 0],\n", - " [ 0, 0, 0, ..., 0, 0, -1]])\n", - "SPILT_SPECIES: graph=<40x40 sparse matrix of type ''\n", - "\twith 120 stored elements in Compressed Sparse Row format>\n", - "COMBINE. received molecule: ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 40\n", - " Formula = H22-C12-O6\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - " from merge fragments\n", - "COMBINE: Fragment H22-C12-O6 added to avglist\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 1 ['H22-C12-O6']\n", - "SEQUENTIAL: badlist 0 []\n", - " \n", - "Fragments to allocate: 0 1 out of 3 4\n", - "sublist 2 ['H22-C12-O6', 'H']\n", - "list1 4 ['H22-C12-O6', 'C6-O12-Fe', 'H24-C12-O6', 'H23-C12-O7']\n", - "list2 5 ['H', 'H', 'H', 'H', 'H']\n", - "keeplist1 3 ['C6-O12-Fe', 'H24-C12-O6', 'H23-C12-O7']\n", - "keeplist2 4 ['H', 'H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 13 with 4 and 5 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 1\n", - "SPILT_SPECIES: Laplacian lap=array([[-2, 0, 0, ..., 0, 0, 0],\n", - " [ 0, -2, 0, ..., 0, 0, 0],\n", - " [ 0, 0, -2, ..., 0, 0, 0],\n", - " ...,\n", - " [ 0, 0, 0, ..., -1, 0, 0],\n", - " [ 0, 0, 0, ..., 0, -1, 0],\n", - " [ 0, 0, 0, ..., 0, 0, -1]])\n", - "SPILT_SPECIES: graph=<41x41 sparse matrix of type ''\n", - "\twith 123 stored elements in Compressed Sparse Row format>\n", - "COMBINE. received molecule: ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 41\n", - " Formula = H23-C12-O6\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - " from merge fragments\n", - "COMBINE: Fragment H23-C12-O6 added to avglist\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 1 ['H23-C12-O6']\n", - "SEQUENTIAL: badlist 0 []\n", - " \n", - "Fragments to allocate: 0 1 out of 3 3\n", - "sublist 2 ['H23-C12-O6', 'H']\n", - "list1 4 ['H23-C12-O6', 'C6-O12-Fe', 'H24-C12-O6', 'H23-C12-O7']\n", - "list2 4 ['H', 'H', 'H', 'H']\n", - "keeplist1 3 ['C6-O12-Fe', 'H24-C12-O6', 'H23-C12-O7']\n", - "keeplist2 3 ['H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 14 with 4 and 4 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['H23-C12-O6', 'H']\n", - " \n", - "Fragments to allocate: 0 2 out of 3 3\n", - "sublist 2 ['H23-C12-O6', 'H']\n", - "list1 4 ['H23-C12-O6', 'C6-O12-Fe', 'H24-C12-O6', 'H23-C12-O7']\n", - "list2 4 ['H', 'H', 'H', 'H']\n", - "keeplist1 3 ['C6-O12-Fe', 'H24-C12-O6', 'H23-C12-O7']\n", - "keeplist2 3 ['H', 'H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 15 with 4 and 4 Remaining in each list\n", - "SEQUENTIAL All sending ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 1\n", - "SPILT_SPECIES: Laplacian lap=array([[-2, 0, 0, ..., 0, 0, 0],\n", - " [ 0, -2, 0, ..., 0, 0, 0],\n", - " [ 0, 0, -2, ..., 0, 0, 0],\n", - " ...,\n", - " [ 0, 0, 0, ..., -1, 0, 0],\n", - " [ 0, 0, 0, ..., 0, -1, 0],\n", - " [ 0, 0, 0, ..., 0, 0, -1]])\n", - "SPILT_SPECIES: graph=<42x42 sparse matrix of type ''\n", - "\twith 126 stored elements in Compressed Sparse Row format>\n", - "COMBINE. received molecule: ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 42\n", - " Formula = H24-C12-O6\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - " from merge fragments\n", - "COMBINE: Fragment H24-C12-O6 added to avglist\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 1 ['H24-C12-O6']\n", - "SEQUENTIAL: badlist 0 []\n", - " \n", - "Fragments to allocate: 0 1 out of 3 2\n", - "sublist 2 ['H24-C12-O6', 'H']\n", - "list1 4 ['H24-C12-O6', 'C6-O12-Fe', 'H24-C12-O6', 'H23-C12-O7']\n", - "list2 3 ['H', 'H', 'H']\n", - "keeplist1 3 ['C6-O12-Fe', 'H24-C12-O6', 'H23-C12-O7']\n", - "keeplist2 2 ['H', 'H']\n", - "\n", - "SEQUENTIAL All SKIPPED 42 and 1\n", - " \n", - "Fragments to allocate: 0 2 out of 3 2\n", - "sublist 2 ['H24-C12-O6', 'H']\n", - "list1 4 ['H24-C12-O6', 'C6-O12-Fe', 'H24-C12-O6', 'H23-C12-O7']\n", - "list2 3 ['H', 'H', 'H']\n", - "keeplist1 3 ['C6-O12-Fe', 'H24-C12-O6', 'H23-C12-O7']\n", - "keeplist2 2 ['H', 'H']\n", - "\n", - "SEQUENTIAL All SKIPPED 42 and 1\n", - " \n", - "Fragments to allocate: 1 0 out of 3 2\n", - "sublist 2 ['C6-O12-Fe', 'H']\n", - "list1 4 ['H24-C12-O6', 'C6-O12-Fe', 'H24-C12-O6', 'H23-C12-O7']\n", - "list2 3 ['H', 'H', 'H']\n", - "keeplist1 3 ['H24-C12-O6', 'H24-C12-O6', 'H23-C12-O7']\n", - "keeplist2 2 ['H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 18 with 4 and 3 Remaining in each list\n", - "SEQUENTIAL All sending ['Fe', 'O', 'O', 'C', 'O', 'O', 'O', 'O', 'C', 'C', 'O', 'O', 'C', 'O', 'O', 'C', 'O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C6-O12-Fe', 'H']\n", - " \n", - "Fragments to allocate: 1 1 out of 3 2\n", - "sublist 2 ['H24-C12-O6', 'H']\n", - "list1 4 ['C6-O12-Fe', 'H24-C12-O6', 'H24-C12-O6', 'H23-C12-O7']\n", - "list2 3 ['H', 'H', 'H']\n", - "keeplist1 3 ['C6-O12-Fe', 'H24-C12-O6', 'H23-C12-O7']\n", - "keeplist2 2 ['H', 'H']\n", - "\n", - "SEQUENTIAL All SKIPPED 42 and 1\n", - " \n", - "Fragments to allocate: 1 2 out of 3 2\n", - "sublist 2 ['H24-C12-O6', 'H']\n", - "list1 4 ['C6-O12-Fe', 'H24-C12-O6', 'H24-C12-O6', 'H23-C12-O7']\n", - "list2 3 ['H', 'H', 'H']\n", - "keeplist1 3 ['C6-O12-Fe', 'H24-C12-O6', 'H23-C12-O7']\n", - "keeplist2 2 ['H', 'H']\n", - "\n", - "SEQUENTIAL All SKIPPED 42 and 1\n", - " \n", - "Fragments to allocate: 2 0 out of 3 2\n", - "sublist 2 ['H24-C12-O6', 'H']\n", - "list1 4 ['C6-O12-Fe', 'H24-C12-O6', 'H24-C12-O6', 'H23-C12-O7']\n", - "list2 3 ['H', 'H', 'H']\n", - "keeplist1 3 ['C6-O12-Fe', 'H24-C12-O6', 'H23-C12-O7']\n", - "keeplist2 2 ['H', 'H']\n", - "\n", - "SEQUENTIAL All SKIPPED 42 and 1\n", - " \n", - "Fragments to allocate: 2 1 out of 3 2\n", - "sublist 2 ['H24-C12-O6', 'H']\n", - "list1 4 ['C6-O12-Fe', 'H24-C12-O6', 'H24-C12-O6', 'H23-C12-O7']\n", - "list2 3 ['H', 'H', 'H']\n", - "keeplist1 3 ['C6-O12-Fe', 'H24-C12-O6', 'H23-C12-O7']\n", - "keeplist2 2 ['H', 'H']\n", - "\n", - "SEQUENTIAL All SKIPPED 42 and 1\n", - " \n", - "Fragments to allocate: 2 2 out of 3 2\n", - "sublist 2 ['H24-C12-O6', 'H']\n", - "list1 4 ['C6-O12-Fe', 'H24-C12-O6', 'H24-C12-O6', 'H23-C12-O7']\n", - "list2 3 ['H', 'H', 'H']\n", - "keeplist1 3 ['C6-O12-Fe', 'H24-C12-O6', 'H23-C12-O7']\n", - "keeplist2 2 ['H', 'H']\n", - "\n", - "SEQUENTIAL All SKIPPED 42 and 1\n", - " \n", - "Fragments to allocate: 3 0 out of 3 2\n", - "sublist 2 ['H23-C12-O7', 'H']\n", - "list1 4 ['C6-O12-Fe', 'H24-C12-O6', 'H24-C12-O6', 'H23-C12-O7']\n", - "list2 3 ['H', 'H', 'H']\n", - "keeplist1 3 ['C6-O12-Fe', 'H24-C12-O6', 'H24-C12-O6']\n", - "keeplist2 2 ['H', 'H']\n", - "\n", - "SEQUENTIAL All SKIPPED 42 and 1\n", - " \n", - "Fragments to allocate: 3 1 out of 3 2\n", - "sublist 2 ['H23-C12-O7', 'H']\n", - "list1 4 ['C6-O12-Fe', 'H24-C12-O6', 'H24-C12-O6', 'H23-C12-O7']\n", - "list2 3 ['H', 'H', 'H']\n", - "keeplist1 3 ['C6-O12-Fe', 'H24-C12-O6', 'H24-C12-O6']\n", - "keeplist2 2 ['H', 'H']\n", - "\n", - "SEQUENTIAL All SKIPPED 42 and 1\n", - " \n", - "Fragments to allocate: 3 2 out of 3 2\n", - "sublist 2 ['H23-C12-O7', 'H']\n", - "list1 4 ['C6-O12-Fe', 'H24-C12-O6', 'H24-C12-O6', 'H23-C12-O7']\n", - "list2 3 ['H', 'H', 'H']\n", - "keeplist1 3 ['C6-O12-Fe', 'H24-C12-O6', 'H24-C12-O6']\n", - "keeplist2 2 ['H', 'H']\n", - "\n", - "SEQUENTIAL All SKIPPED 42 and 1\n", - " Increased Threshold_tmat. Now: 0.8\n", - " Maxsize of the translation matrix is= 8\n", - " \n", - "Fragments to allocate: 0 0 out of 3 2\n", - "sublist 2 ['C6-O12-Fe', 'H']\n", - "list1 4 ['C6-O12-Fe', 'H24-C12-O6', 'H24-C12-O6', 'H23-C12-O7']\n", - "list2 3 ['H', 'H', 'H']\n", - "keeplist1 3 ['H24-C12-O6', 'H24-C12-O6', 'H23-C12-O7']\n", - "keeplist2 2 ['H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 1 with 4 and 3 Remaining in each list\n", - "SEQUENTIAL All sending ['Fe', 'O', 'O', 'C', 'O', 'O', 'O', 'O', 'C', 'C', 'O', 'O', 'C', 'O', 'O', 'C', 'O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C6-O12-Fe', 'H']\n", - " \n", - "Fragments to allocate: 0 1 out of 3 2\n", - "sublist 2 ['C6-O12-Fe', 'H']\n", - "list1 4 ['C6-O12-Fe', 'H24-C12-O6', 'H24-C12-O6', 'H23-C12-O7']\n", - "list2 3 ['H', 'H', 'H']\n", - "keeplist1 3 ['H24-C12-O6', 'H24-C12-O6', 'H23-C12-O7']\n", - "keeplist2 2 ['H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 2 with 4 and 3 Remaining in each list\n", - "SEQUENTIAL All sending ['Fe', 'O', 'O', 'C', 'O', 'O', 'O', 'O', 'C', 'C', 'O', 'O', 'C', 'O', 'O', 'C', 'O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C6-O12-Fe', 'H']\n", - " \n", - "Fragments to allocate: 0 2 out of 3 2\n", - "sublist 2 ['C6-O12-Fe', 'H']\n", - "list1 4 ['C6-O12-Fe', 'H24-C12-O6', 'H24-C12-O6', 'H23-C12-O7']\n", - "list2 3 ['H', 'H', 'H']\n", - "keeplist1 3 ['H24-C12-O6', 'H24-C12-O6', 'H23-C12-O7']\n", - "keeplist2 2 ['H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 3 with 4 and 3 Remaining in each list\n", - "SEQUENTIAL All sending ['Fe', 'O', 'O', 'C', 'O', 'O', 'O', 'O', 'C', 'C', 'O', 'O', 'C', 'O', 'O', 'C', 'O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (-1, -1, 0), (0, -1, -1), (-1, 0, -1), (-1, -1, -1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C6-O12-Fe', 'H']\n", - " \n", - "Fragments to allocate: 1 0 out of 3 2\n", - "sublist 2 ['H24-C12-O6', 'H']\n", - "list1 4 ['C6-O12-Fe', 'H24-C12-O6', 'H24-C12-O6', 'H23-C12-O7']\n", - "list2 3 ['H', 'H', 'H']\n", - "keeplist1 3 ['C6-O12-Fe', 'H24-C12-O6', 'H23-C12-O7']\n", - "keeplist2 2 ['H', 'H']\n", - "\n", - "SEQUENTIAL All SKIPPED 42 and 1\n", - " \n", - "Fragments to allocate: 1 1 out of 3 2\n", - "sublist 2 ['H24-C12-O6', 'H']\n", - "list1 4 ['C6-O12-Fe', 'H24-C12-O6', 'H24-C12-O6', 'H23-C12-O7']\n", - "list2 3 ['H', 'H', 'H']\n", - "keeplist1 3 ['C6-O12-Fe', 'H24-C12-O6', 'H23-C12-O7']\n", - "keeplist2 2 ['H', 'H']\n", - "\n", - "SEQUENTIAL All SKIPPED 42 and 1\n", - " \n", - "Fragments to allocate: 1 2 out of 3 2\n", - "sublist 2 ['H24-C12-O6', 'H']\n", - "list1 4 ['C6-O12-Fe', 'H24-C12-O6', 'H24-C12-O6', 'H23-C12-O7']\n", - "list2 3 ['H', 'H', 'H']\n", - "keeplist1 3 ['C6-O12-Fe', 'H24-C12-O6', 'H23-C12-O7']\n", - "keeplist2 2 ['H', 'H']\n", - "\n", - "SEQUENTIAL All SKIPPED 42 and 1\n", - " \n", - "Fragments to allocate: 2 0 out of 3 2\n", - "sublist 2 ['H24-C12-O6', 'H']\n", - "list1 4 ['C6-O12-Fe', 'H24-C12-O6', 'H24-C12-O6', 'H23-C12-O7']\n", - "list2 3 ['H', 'H', 'H']\n", - "keeplist1 3 ['C6-O12-Fe', 'H24-C12-O6', 'H23-C12-O7']\n", - "keeplist2 2 ['H', 'H']\n", - "\n", - "SEQUENTIAL All SKIPPED 42 and 1\n", - " \n", - "Fragments to allocate: 2 1 out of 3 2\n", - "sublist 2 ['H24-C12-O6', 'H']\n", - "list1 4 ['C6-O12-Fe', 'H24-C12-O6', 'H24-C12-O6', 'H23-C12-O7']\n", - "list2 3 ['H', 'H', 'H']\n", - "keeplist1 3 ['C6-O12-Fe', 'H24-C12-O6', 'H23-C12-O7']\n", - "keeplist2 2 ['H', 'H']\n", - "\n", - "SEQUENTIAL All SKIPPED 42 and 1\n", - " \n", - "Fragments to allocate: 2 2 out of 3 2\n", - "sublist 2 ['H24-C12-O6', 'H']\n", - "list1 4 ['C6-O12-Fe', 'H24-C12-O6', 'H24-C12-O6', 'H23-C12-O7']\n", - "list2 3 ['H', 'H', 'H']\n", - "keeplist1 3 ['C6-O12-Fe', 'H24-C12-O6', 'H23-C12-O7']\n", - "keeplist2 2 ['H', 'H']\n", - "\n", - "SEQUENTIAL All SKIPPED 42 and 1\n", - " \n", - "Fragments to allocate: 3 0 out of 3 2\n", - "sublist 2 ['H23-C12-O7', 'H']\n", - "list1 4 ['C6-O12-Fe', 'H24-C12-O6', 'H24-C12-O6', 'H23-C12-O7']\n", - "list2 3 ['H', 'H', 'H']\n", - "keeplist1 3 ['C6-O12-Fe', 'H24-C12-O6', 'H24-C12-O6']\n", - "keeplist2 2 ['H', 'H']\n", - "\n", - "SEQUENTIAL All SKIPPED 42 and 1\n", - " \n", - "Fragments to allocate: 3 1 out of 3 2\n", - "sublist 2 ['H23-C12-O7', 'H']\n", - "list1 4 ['C6-O12-Fe', 'H24-C12-O6', 'H24-C12-O6', 'H23-C12-O7']\n", - "list2 3 ['H', 'H', 'H']\n", - "keeplist1 3 ['C6-O12-Fe', 'H24-C12-O6', 'H24-C12-O6']\n", - "keeplist2 2 ['H', 'H']\n", - "\n", - "SEQUENTIAL All SKIPPED 42 and 1\n", - " \n", - "Fragments to allocate: 3 2 out of 3 2\n", - "sublist 2 ['H23-C12-O7', 'H']\n", - "list1 4 ['C6-O12-Fe', 'H24-C12-O6', 'H24-C12-O6', 'H23-C12-O7']\n", - "list2 3 ['H', 'H', 'H']\n", - "keeplist1 3 ['C6-O12-Fe', 'H24-C12-O6', 'H24-C12-O6']\n", - "keeplist2 2 ['H', 'H']\n", - "\n", - "SEQUENTIAL All SKIPPED 42 and 1\n", - "Trying Full Tmatrix for all Items in list\n", - " \n", - "Fragments to allocate: 0 0 out of 3 2\n", - "sublist 2 ['C6-O12-Fe', 'H']\n", - "list1 4 ['C6-O12-Fe', 'H24-C12-O6', 'H24-C12-O6', 'H23-C12-O7']\n", - "list2 3 ['H', 'H', 'H']\n", - "keeplist1 3 ['H24-C12-O6', 'H24-C12-O6', 'H23-C12-O7']\n", - "keeplist2 2 ['H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 1 with 4 and 3 Remaining in each list\n", - "SEQUENTIAL All sending ['Fe', 'O', 'O', 'C', 'O', 'O', 'O', 'O', 'C', 'C', 'O', 'O', 'C', 'O', 'O', 'C', 'O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C6-O12-Fe', 'H']\n", - " \n", - "Fragments to allocate: 0 1 out of 3 2\n", - "sublist 2 ['C6-O12-Fe', 'H']\n", - "list1 4 ['C6-O12-Fe', 'H24-C12-O6', 'H24-C12-O6', 'H23-C12-O7']\n", - "list2 3 ['H', 'H', 'H']\n", - "keeplist1 3 ['H24-C12-O6', 'H24-C12-O6', 'H23-C12-O7']\n", - "keeplist2 2 ['H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 2 with 4 and 3 Remaining in each list\n", - "SEQUENTIAL All sending ['Fe', 'O', 'O', 'C', 'O', 'O', 'O', 'O', 'C', 'C', 'O', 'O', 'C', 'O', 'O', 'C', 'O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C6-O12-Fe', 'H']\n", - " \n", - "Fragments to allocate: 0 2 out of 3 2\n", - "sublist 2 ['C6-O12-Fe', 'H']\n", - "list1 4 ['C6-O12-Fe', 'H24-C12-O6', 'H24-C12-O6', 'H23-C12-O7']\n", - "list2 3 ['H', 'H', 'H']\n", - "keeplist1 3 ['H24-C12-O6', 'H24-C12-O6', 'H23-C12-O7']\n", - "keeplist2 2 ['H', 'H']\n", - "\n", - "SEQUENTIAL All iteration 3 with 4 and 3 Remaining in each list\n", - "SEQUENTIAL All sending ['Fe', 'O', 'O', 'C', 'O', 'O', 'O', 'O', 'C', 'C', 'O', 'O', 'C', 'O', 'O', 'C', 'O', 'O', 'C'] and ['H'] to combine\n", - "MERGE_FRAGMENTS: keep_idx 0\n", - "MERGE_FRAGMENTS: move_idx 1\n", - "MERGE_FRAGMENTS: move_frag.tmatrix [(0, 0, 0), (-1, 0, 0), (0, -1, 0), (0, 0, -1), (0, 0, 1), (0, 1, 0), (1, 0, 0), (-1, -1, 0), (-1, 0, -1), (-1, 0, 1), (-1, 1, 0), (0, -1, -1), (0, -1, 1), (0, 1, -1), (0, 1, 1), (1, -1, 0), (1, 0, -1), (1, 0, 1), (1, 1, 0), (-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]\n", - "MERGE_FRAGMENTS: translation (0, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (0, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 0, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 0)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (-1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, -1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, -1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "MERGE_FRAGMENTS: translation (1, 1, 1)\n", - "MERGE_FRAGMENTS: count_species found 2\n", - "SEQUENTIAL: goodlist 0 []\n", - "SEQUENTIAL: avglist 0 []\n", - "SEQUENTIAL: badlist 2 ['C6-O12-Fe', 'H']\n", - " \n", - "Fragments to allocate: 1 0 out of 3 2\n", - "sublist 2 ['H24-C12-O6', 'H']\n", - "list1 4 ['C6-O12-Fe', 'H24-C12-O6', 'H24-C12-O6', 'H23-C12-O7']\n", - "list2 3 ['H', 'H', 'H']\n", - "keeplist1 3 ['C6-O12-Fe', 'H24-C12-O6', 'H23-C12-O7']\n", - "keeplist2 2 ['H', 'H']\n", - "\n", - "SEQUENTIAL All SKIPPED 42 and 1\n", - " \n", - "Fragments to allocate: 1 1 out of 3 2\n", - "sublist 2 ['H24-C12-O6', 'H']\n", - "list1 4 ['C6-O12-Fe', 'H24-C12-O6', 'H24-C12-O6', 'H23-C12-O7']\n", - "list2 3 ['H', 'H', 'H']\n", - "keeplist1 3 ['C6-O12-Fe', 'H24-C12-O6', 'H23-C12-O7']\n", - "keeplist2 2 ['H', 'H']\n", - "\n", - "SEQUENTIAL All SKIPPED 42 and 1\n", - " \n", - "Fragments to allocate: 1 2 out of 3 2\n", - "sublist 2 ['H24-C12-O6', 'H']\n", - "list1 4 ['C6-O12-Fe', 'H24-C12-O6', 'H24-C12-O6', 'H23-C12-O7']\n", - "list2 3 ['H', 'H', 'H']\n", - "keeplist1 3 ['C6-O12-Fe', 'H24-C12-O6', 'H23-C12-O7']\n", - "keeplist2 2 ['H', 'H']\n", - "\n", - "SEQUENTIAL All SKIPPED 42 and 1\n", - " \n", - "Fragments to allocate: 2 0 out of 3 2\n", - "sublist 2 ['H24-C12-O6', 'H']\n", - "list1 4 ['C6-O12-Fe', 'H24-C12-O6', 'H24-C12-O6', 'H23-C12-O7']\n", - "list2 3 ['H', 'H', 'H']\n", - "keeplist1 3 ['C6-O12-Fe', 'H24-C12-O6', 'H23-C12-O7']\n", - "keeplist2 2 ['H', 'H']\n", - "\n", - "SEQUENTIAL All SKIPPED 42 and 1\n", - " \n", - "Fragments to allocate: 2 1 out of 3 2\n", - "sublist 2 ['H24-C12-O6', 'H']\n", - "list1 4 ['C6-O12-Fe', 'H24-C12-O6', 'H24-C12-O6', 'H23-C12-O7']\n", - "list2 3 ['H', 'H', 'H']\n", - "keeplist1 3 ['C6-O12-Fe', 'H24-C12-O6', 'H23-C12-O7']\n", - "keeplist2 2 ['H', 'H']\n", - "\n", - "SEQUENTIAL All SKIPPED 42 and 1\n", - " \n", - "Fragments to allocate: 2 2 out of 3 2\n", - "sublist 2 ['H24-C12-O6', 'H']\n", - "list1 4 ['C6-O12-Fe', 'H24-C12-O6', 'H24-C12-O6', 'H23-C12-O7']\n", - "list2 3 ['H', 'H', 'H']\n", - "keeplist1 3 ['C6-O12-Fe', 'H24-C12-O6', 'H23-C12-O7']\n", - "keeplist2 2 ['H', 'H']\n", - "\n", - "SEQUENTIAL All SKIPPED 42 and 1\n", - " \n", - "Fragments to allocate: 3 0 out of 3 2\n", - "sublist 2 ['H23-C12-O7', 'H']\n", - "list1 4 ['C6-O12-Fe', 'H24-C12-O6', 'H24-C12-O6', 'H23-C12-O7']\n", - "list2 3 ['H', 'H', 'H']\n", - "keeplist1 3 ['C6-O12-Fe', 'H24-C12-O6', 'H24-C12-O6']\n", - "keeplist2 2 ['H', 'H']\n", - "\n", - "SEQUENTIAL All SKIPPED 42 and 1\n", - " \n", - "Fragments to allocate: 3 1 out of 3 2\n", - "sublist 2 ['H23-C12-O7', 'H']\n", - "list1 4 ['C6-O12-Fe', 'H24-C12-O6', 'H24-C12-O6', 'H23-C12-O7']\n", - "list2 3 ['H', 'H', 'H']\n", - "keeplist1 3 ['C6-O12-Fe', 'H24-C12-O6', 'H24-C12-O6']\n", - "keeplist2 2 ['H', 'H']\n", - "\n", - "SEQUENTIAL All SKIPPED 42 and 1\n", - " \n", - "Fragments to allocate: 3 2 out of 3 2\n", - "sublist 2 ['H23-C12-O7', 'H']\n", - "list1 4 ['C6-O12-Fe', 'H24-C12-O6', 'H24-C12-O6', 'H23-C12-O7']\n", - "list2 3 ['H', 'H', 'H']\n", - "keeplist1 3 ['C6-O12-Fe', 'H24-C12-O6', 'H24-C12-O6']\n", - "keeplist2 2 ['H', 'H']\n", - "\n", - "SEQUENTIAL All SKIPPED 42 and 1\n", - "Sequential: list1 end: ['Fe', 'O', 'O', 'C', 'O', 'O', 'O', 'O', 'C', 'C', 'O', 'O', 'C', 'O', 'O', 'C', 'O', 'O', 'C']\n", - "Sequential: list1 end: ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H']\n", - "Sequential: list1 end: ['O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H']\n", - "Sequential: list1 end: ['O', 'O', 'O', 'O', 'O', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'O', 'H', 'H']\n", - "Sequential: list2 end: ['H']\n", - "Sequential: list2 end: ['H']\n", - "Sequential: list2 end: ['H']\n" - ] - } - ], - "source": [ - "finalmols, final_remfrag = sequential(updated_fraglist, newcell.refmoleclist, cellvec=newcell.cellvec, typ=\"All\", debug=2)" - ] - }, - { - "cell_type": "code", - "execution_count": 181, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 19\n", - " Formula = C6-O12-Fe\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 42\n", - " Formula = H24-C12-O6\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 42\n", - " Formula = H24-C12-O6\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 42\n", - " Formula = H23-C12-O7\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = H\n", - " Number of Atoms = 1\n", - " Formula = H\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = H\n", - " Number of Atoms = 1\n", - " Formula = H\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = H\n", - " Number of Atoms = 1\n", - " Formula = H\n", - " Covalent Radii Factor = 1.3\n", - " Metal Radii Factor = 1.0\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " ---------------------------------------------------]" - ] - }, - "execution_count": 181, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "final_remfrag" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "cell2mol", - "language": "python", - "name": "cell2mol" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.10.6" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} diff --git a/cell2mol/test/test_False_CN.ipynb b/cell2mol/test/test_False_CN.ipynb deleted file mode 100644 index 1db086135..000000000 --- a/cell2mol/test/test_False_CN.ipynb +++ /dev/null @@ -1,152 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "import os\n", - "import numpy as np" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": {}, - "outputs": [], - "source": [ - "current_dir = \"/Users/ycho/Projects/csds_data/False_CN/test_dev_update\"" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": {}, - "outputs": [], - "source": [ - "cell = np.load(f\"{current_dir}/AFIBAU/Cell_AFIBAU.cell\", allow_pickle=True)" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 97\n", - " Formula = H60-C26-N6-Si4-Fe\n", - " Has Adjacency Matrix = YES\n", - " Number of Ligands = 4\n", - " Number of Metals = 1\n", - " ---------------------------------------------------]" - ] - }, - "execution_count": 15, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "cell.refmoleclist" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "metadata": {}, - "outputs": [], - "source": [ - "for mol in cell.moleclist:\n", - " print(mol.formula)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "111\n" - ] - } - ], - "source": [ - "# Specify the directory path\n", - "directory_path = '/Users/ycho/Projects/csds_data/False_CN/1-Iron'\n", - "filenames = os.listdir(directory_path)\n", - "print(len(filenames))\n", - "# for filename in filenames:\n", - "# print(filename)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# for filename in filenames:\n", - "# name = filename.split(\".\")[0]\n", - "# ! mkdir $current_dir/$name\n", - "# ! cp $directory_path/$filename $current_dir/$name/" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# # Filenames for output and cell object\n", - "# cell_fname = os.path.join(current_dir, \"Cell_{}.cell\".format(name))\n", - "# ref_cell_fname = os.path.join(current_dir, \"Ref_Cell_{}.cell\".format(name))\n", - "# output_fname = os.path.join(current_dir, \"cell2mol.out\")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "cell2mol", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.10.6" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/cell2mol/test/test_data.py b/cell2mol/test/test_data.py deleted file mode 100644 index 7642f0562..000000000 --- a/cell2mol/test/test_data.py +++ /dev/null @@ -1,20422 +0,0 @@ -#!/usr/bin/env python - -import os -import numpy as np - -from cell2mol.c2m_module import cell2mol - - -def test_cell2mol(): - dir_path = os.path.dirname(os.path.realpath(__file__)) - infofile = "YOXKUS.info" - outfile = "YOXKUS.out" - - root = infofile.split(".") - refcode = root[0] - - infopath = os.path.join(dir_path, "infodata", infofile) - outpath = os.path.join(dir_path, "infodata", outfile) - - cell = cell2mol(infopath, refcode, outpath) - return cell - - -def test_check_cell_vs_data(): - - cell = test_cell2mol() - - assert cell.version == "V1.0" - assert cell.refcode == "YOXKUS" - assert np.allclose( - cell.cellvec, - np.array([[15.136, 0.0, 0.0], [0.0, 8.798, 0.0], [-4.1830788, 0.0, 17.4721325]])) - assert np.allclose(cell.cellparam, np.array([15.136, 8.798, 17.9659, 90.0, 103.464, 90.0])) - assert cell.labels == [ - "Re", - "Re", - "Re", - "Re", - "I", - "I", - "I", - "I", - "I", - "I", - "I", - "I", - "P", - "P", - "P", - "P", - "C", - "C", - "C", - "C", - "C", - "C", - "C", - "C", - "C", - "C", - "C", - "C", - "C", - "C", - "C", - "C", - "C", - "C", - "C", - "C", - "C", - "C", - "C", - "C", - "H", - "H", - "H", - "H", - "H", - "H", - "H", - "H", - "H", - "H", - "H", - "H", - "C", - "C", - "C", - "C", - "H", - "H", - "H", - "H", - "H", - "H", - "H", - "H", - "H", - "H", - "H", - "H", - "C", - "C", - "C", - "C", - "H", - "H", - "H", - "H", - "H", - "H", - "H", - "H", - "H", - "H", - "H", - "H", - "C", - "C", - "C", - "C", - "H", - "H", - "H", - "H", - "H", - "H", - "H", - "H", - "H", - "H", - "H", - "H", - "C", - "C", - "C", - "C", - "H", - "H", - "H", - "H", - "H", - "H", - "H", - "H", - "C", - "C", - "C", - "C", - "C", - "C", - "C", - "C", - "H", - "H", - "H", - "H", - "C", - "C", - "C", - "C", - "H", - "H", - "H", - "H", - "C", - "C", - "C", - "C", - "H", - "H", - "H", - "H", - "C", - "C", - "C", - "C", - "H", - "H", - "H", - "H", - "C", - "C", - "C", - "C", - "H", - "H", - "H", - "H", - "C", - "C", - "C", - "C", - "C", - "C", - "C", - "C", - "H", - "H", - "H", - "H", - "C", - "C", - "C", - "C", - "H", - "H", - "H", - "H", - "C", - "C", - "C", - "C", - "H", - "H", - "H", - "H", - "C", - "C", - "C", - "C", - "H", - "H", - "H", - "H", - "C", - "C", - "C", - "C", - "H", - "H", - "H", - "H", - "C", - "C", - "C", - "C", - "O", - "O", - "O", - "O", - ] - assert np.allclose( - cell.atom_coord, - np.array( - [ - [11.8345549, 8.3225561, 13.3768394], - [6.3580944, 4.8744439, 4.6407731], - [4.5948268, 3.9235561, 12.8313594], - [-0.8816338, 0.4754439, 4.0952931], - [-1.8756081, 1.8547944, 13.9273863], - [7.7839313, 2.5442056, 5.19132], - [3.1689899, 6.2537944, 12.2808125], - [12.8285293, 6.9432056, 3.5447462], - [9.8287594, 1.3694087, 12.8007832], - [4.3522988, 3.0295913, 4.0647169], - [6.6006224, 5.7684087, 13.4074156], - [1.1241618, 7.4285913, 4.6713493], - [-1.7123187, 7.2609894, 14.8878294], - [7.9472207, 5.9360106, 6.1517631], - [3.0057004, 2.8619894, 11.3203694], - [12.6652399, 1.5370106, 2.5843031], - [-2.0649965, 6.6530476, 12.494322], - [7.5945429, 6.5439524, 3.7582557], - [3.3583782, 2.2540476, 13.7138768], - [13.0179176, 2.1449524, 4.9778106], - [11.7101618, 6.2826518, 12.3999724], - [6.2337012, 6.9143482, 3.6639062], - [4.71922, 1.8836518, 13.8082263], - [-0.7572406, 2.5153482, 5.0721601], - [11.1240978, 7.2389944, 11.5351019], - [5.6476372, 5.9580056, 2.7990356], - [5.305284, 2.8399944, 14.6730969], - [-0.1711766, 1.5590056, 5.9370306], - [12.1081369, 8.1707026, 11.0790792], - [6.6316763, 5.0262974, 2.343013], - [4.3207203, 3.7717026, 15.1313106], - [-1.1552157, 0.6272974, 6.3930533], - [-1.8023107, 7.8205422, 11.6626484], - [7.8572287, 5.3764578, 2.9265822], - [3.0956925, 3.4215422, 14.5455503], - [12.7552319, 0.9774578, 5.8094841], - [11.0771345, 5.0421338, 12.945103], - [5.6006739, 8.1548662, 4.2090367], - [5.3522473, 0.6431338, 13.2630958], - [-0.1242133, 3.7558662, 4.5270295], - [11.0124585, 4.3840434, 12.2479649], - [5.535998, 0.0149566, 3.5118986], - [5.4169232, 8.7830434, 13.9602339], - [-0.0595374, 4.4139566, 5.2241676], - [10.2008254, 5.248007, 13.2735791], - [4.7243648, 7.948993, 4.5375128], - [6.2285563, 0.849007, 12.9346197], - [0.7520958, 3.549993, 4.1985534], - [11.6155067, 4.6972522, 13.6614604], - [6.1390461, 8.4997478, 4.9253942], - [4.8138751, 0.2982522, 12.5467384], - [-0.6625855, 4.1007478, 3.8106721], - [9.720656, 7.099986, 10.9864769], - [4.2441954, 6.097014, 2.2504107], - [6.7087257, 2.700986, 15.2217218], - [1.2322651, 1.698014, 6.4856556], - [9.7265635, 6.4876452, 10.2474057], - [4.2501029, 6.7093548, 1.5113395], - [6.7028183, 2.0886452, 15.960793], - [1.2263577, 2.3103548, 7.2247268], - [9.4068957, 7.9569112, 10.6911979], - [3.9304351, 5.2400888, 1.9551316], - [7.0224861, 3.5579112, 15.5170009], - [1.5460255, 0.8410888, 6.7809346], - [9.1411163, 6.7665418, 11.6748789], - [3.6646557, 6.4304582, 2.9388127], - [7.2882654, 2.3675418, 14.5333198], - [1.8118048, 2.0314582, 5.7972536], - [11.8802846, 0.4416596, 10.0709372], - [6.403824, 3.9573404, 1.3348709], - [4.5490972, 4.8406596, 16.1372616], - [-0.9273634, 8.3563404, 7.4011953], - [11.8094225, 0.0492688, 9.1973306], - [6.3329619, 4.3497312, 0.4612643], - [4.6199593, 4.4482688, 17.0108682], - [-0.8565013, 8.7487312, 8.274802], - [12.6151566, 1.0583994, 10.0866621], - [7.138696, 3.3406006, 1.3505958], - [3.8142252, 5.4573994, 16.1215367], - [-1.6622354, 7.7396006, 7.3854704], - [11.0676515, 0.9088334, 10.2788556], - [5.5911909, 3.4901666, 1.5427893], - [5.3617302, 5.3078334, 15.9293432], - [-0.1147304, 7.8891666, 7.193277], - [-0.4257597, 8.4170466, 11.4005665], - [9.2337797, 4.7799534, 2.6645002], - [1.7191415, 4.0180466, 14.8076323], - [11.3786809, 0.3809534, 6.071566], - [-0.000387, 7.9393152, 10.6859562], - [9.6591524, 5.2576848, 1.94989], - [1.2937688, 3.5403152, 15.5222425], - [10.9533082, 0.8586848, 6.7861763], - [0.1089246, 8.3475424, 12.1955485], - [9.768464, 4.8494576, 3.4594822], - [1.1844572, 3.9485424, 14.0126503], - [10.8439966, 0.4504576, 5.276584], - [-0.5189749, 0.5437164, 11.1577038], - [9.1405645, 3.8552836, 2.4216376], - [1.8123567, 4.9427164, 15.0504949], - [11.4718961, 8.2542836, 6.3144287], - [-1.0960802, 6.1577202, 13.5618693], - [8.5634592, 7.0392798, 4.825803], - [2.3894619, 1.7587202, 12.6463295], - [12.0490014, 2.6402798, 3.9102633], - [-0.1694483, 6.330161, 13.3329843], - [9.4900912, 6.866839, 4.5969181], - [1.46283, 1.931161, 12.8752144], - [11.1223694, 2.467839, 4.1391482], - [-1.2204435, 5.2189736, 13.7715348], - [8.4390959, 7.9780264, 5.0354686], - [2.5138253, 0.8199736, 12.4366639], - [12.1733647, 3.5790264, 3.7005977], - [-0.2678924, 8.1196742, 15.6218337], - [9.391647, 5.0773258, 6.8857674], - [1.5612741, 3.7206742, 10.5863651], - [11.2208136, 0.6783258, 1.8502988], - [0.9688189, 8.0272952, 15.1535805], - [10.6283583, 5.1697048, 6.4175143], - [0.3245628, 3.6282952, 11.0546182], - [9.9841022, 0.7707048, 2.318552], - [1.1268239, 7.5082132, 14.3987844], - [10.7863634, 5.6887868, 5.6627181], - [0.1665578, 3.1092132, 11.8094144], - [9.8260972, 1.2897868, 3.0733481], - [2.0327738, 8.679227, 15.7546219], - [11.6923132, 4.517773, 7.0185556], - [-0.7393921, 4.280227, 10.4535769], - [8.9201474, 0.118773, 1.7175106], - [2.8956201, 8.5903672, 15.4191569], - [12.5551595, 4.6066328, 6.6830907], - [-1.6022384, 4.1913672, 10.7890418], - [8.057301, 0.2076328, 2.0529756], - [1.7854712, 0.6624894, 16.8571134], - [11.4450106, 3.7365106, 8.1210472], - [-0.4920894, 5.0614894, 9.3510853], - [9.16745, 8.1355106, 0.6150191], - [2.4829647, 1.1375814, 17.2502364], - [12.1425041, 3.2614186, 8.5141702], - [-1.1895829, 5.5365814, 8.9579623], - [8.4699565, 7.6604186, 0.2218961], - [0.5426833, 0.7487098, 17.3760358], - [10.2022227, 3.6502902, 8.6399695], - [0.7506985, 5.1477098, 8.832163], - [10.4102379, 8.0492902, 0.0960967], - [4.5763598, 1.240518, 0.679666], - [10.0528204, 3.158482, 9.4157322], - [0.9001008, 5.639518, 8.0564003], - [6.3765613, 7.557482, 16.7924666], - [-0.514997, 0.101177, 16.7487862], - [9.1445425, 4.297823, 8.01272], - [1.8083787, 4.500177, 9.4594125], - [11.4679181, 8.696823, 0.7233463], - [-1.3811292, 0.1882772, 17.0790095], - [8.2784103, 4.2107228, 8.3429433], - [2.6745109, 4.5872772, 9.1291892], - [12.3340503, 8.6097228, 0.393123], - [-2.262626, 6.2149072, 16.2595665], - [7.3969135, 6.9820928, 7.5235003], - [3.5560077, 1.8159072, 9.9486322], - [13.2155471, 2.5830928, 1.212566], - [-1.790928, 4.944476, 16.4325406], - [7.8686114, 8.252524, 7.6964744], - [3.0843098, 0.545476, 9.7756581], - [12.7438492, 3.853524, 1.0395919], - [-1.246581, 4.5723206, 15.7773357], - [8.4129584, 8.6246794, 7.0412694], - [2.5399627, 0.1733206, 10.4308631], - [12.1995022, 4.2256794, 1.6947969], - [2.0884266, 4.2045642, 0.0646469], - [7.5648872, 0.1944358, 8.8007131], - [3.388034, 8.6035642, 8.6714194], - [8.8644946, 4.5934358, 17.4074856], - [2.4087482, 3.3353218, 0.155502], - [7.8852088, 1.0636782, 8.8915682], - [3.0677124, 7.7343218, 8.5805643], - [8.544173, 5.4626782, 17.3166305], - [1.3001966, 4.7676362, 1.0430863], - [6.7766572, 8.4293638, 9.7791526], - [4.176264, 0.3686362, 7.6929799], - [9.6527246, 4.0303638, 16.4290462], - [1.0738209, 4.26703, 1.7926408], - [6.5502815, 0.13197, 10.528707], - [4.4026397, 8.66603, 6.9434255], - [9.8791003, 4.53097, 15.6794917], - [0.8438712, 6.053024, 0.926023], - [6.3203318, 7.143976, 9.6620893], - [4.6325894, 1.654024, 7.8100432], - [10.10905, 2.744976, 16.5461095], - [0.3382392, 6.4295784, 1.6091834], - [5.8146998, 6.7674216, 10.3452497], - [5.1382213, 2.0305784, 7.1268828], - [10.6146819, 2.3684216, 15.8629491], - [-3.0465354, 6.7929358, 17.2642141], - [6.613004, 6.4040642, 8.5281479], - [4.3399171, 2.3939358, 8.9439846], - [13.9994566, 2.0050642, 0.2079184], - [-3.3679523, 7.6612984, 17.1716118], - [6.2915871, 5.5357016, 8.4355456], - [4.661334, 3.2622984, 9.0365869], - [14.3208734, 1.1367016, 0.3005207], - [10.5260703, 7.9076424, 14.6398998], - [5.0496097, 5.2893576, 5.9038336], - [5.9033115, 3.5086424, 11.5682989], - [0.4268509, 0.8903576, 2.8322327], - [9.6886243, 7.6164286, 15.2549189], - [4.2121637, 5.5805714, 6.5188526], - [6.7407575, 3.2174286, 10.9532799], - [1.2642969, 1.1815714, 2.2172136], - ] - ), - ) - assert cell.warning_list == [ - False, - False, - False, - False, - False, - False, - False, - False, - False, - ] - - -def test_check_cellrefmoleclist(): - - cell = test_cell2mol() - for mol in cell.refmoleclist: - assert mol.refcode == "YOXKUS" - assert mol.name == "YOXKUS_Reference_0" - assert mol.atlist == [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - ] - assert mol.labels == [ - "Re", - "I", - "I", - "P", - "C", - "C", - "C", - "C", - "C", - "C", - "H", - "H", - "H", - "C", - "H", - "H", - "H", - "C", - "H", - "H", - "H", - "C", - "H", - "H", - "H", - "C", - "H", - "H", - "C", - "C", - "H", - "C", - "H", - "C", - "H", - "C", - "H", - "C", - "H", - "C", - "C", - "H", - "C", - "H", - "C", - "H", - "C", - "H", - "C", - "H", - "C", - "O", - ] - assert np.allclose( - mol.coord, - np.array( - [ - [-3.3014450586739708, 8.322556080000002, 13.376839369067877], - [-1.8756081124277317, 10.652794360000001, 13.927386264379235], - [-5.307240629836729, 10.167408700000003, 12.800783160295566], - [-1.7123186753996211, 7.2609894000000015, 14.887829388316568], - [-2.064996467258469, 6.653047600000001, 12.494321956113998], - [-3.425838241607237, 6.282651800000001, 12.399972440573494], - [-4.0119022398042805, 7.238994400000001, 11.535101881452192], - [-3.027863082489995, 8.1707026, 11.079079223006413], - [-1.8023107152216866, 7.820542200000001, 11.662648448756949], - [-4.058865500925465, 5.042133800000001, 12.945102974807526], - [-4.123541455835809, 4.384043400000001, 12.247964887758233], - [-4.935174582822345, 5.248007000000001, 13.273579065948546], - [-3.5204933327218533, 4.697252200000001, 13.66146040761507], - [-5.415343964721194, 7.099986000000001, 10.98647692071666], - [-5.409436530453212, 6.487645200000001, 10.247405715649364], - [-5.729104332590486, 7.9569112, 10.69119788133989], - [-5.994883670398698, 6.766541800000001, 11.674878941512201], - [-3.2557154343277603, 9.2396596, 10.070937177323604], - [-3.3265774931126524, 8.8472688, 9.197330551948552], - [-2.5208434052696322, 9.8563994, 10.086662096580355], - [-4.068348472336956, 9.706833399999999, 10.278855554162867], - [-0.4257597328571543, 8.4170466, 11.400566461144432], - [-0.00038700894319632084, 7.939315200000001, 10.685956241587641], - [0.10892458063709753, 8.347542400000002, 12.19554849023573], - [-0.5189749371993546, 9.341716400000001, 11.157703819290168], - [-1.0960801834233305, 6.157720200000001, 13.561869252322314], - [-0.16944825082497283, 6.330161000000001, 13.33298431647405], - [-1.2204435293149567, 5.218973600000001, 13.771534842412326], - [-0.2678923768085544, 8.119674200000002, 15.621833674956687], - [0.9688189356827439, 8.027295200000001, 15.153580523755657], - [1.1268239408925966, 7.508213200000001, 14.398784399431614], - [2.0327738241267497, 8.679227000000003, 15.754621882013694], - [2.89562013755335, 8.590367200000003, 15.419156937869674], - [1.7854711503132839, 9.460489400000002, 16.85711344323701], - [2.4829646767664855, 9.935581400000002, 17.25023642465578], - [0.5426833092315091, 9.546709800000002, 17.37603577870979], - [0.3932810094324939, 10.038518000000002, 18.151798462042837], - [-0.5149969609760436, 8.899177000000002, 16.748786221690505], - [-1.381129150755354, 8.986277200000002, 17.079009526082274], - [-2.262625953895583, 6.214907200000001, 16.259566511480475], - [-1.7909280342561744, 4.944476000000002, 16.432540623304735], - [-1.246580978344844, 4.572320600000001, 15.777335654273447], - [-2.094652215952071, 4.204564200000002, 17.5367793977788], - [-1.7743306258384415, 3.3353218000000013, 17.627634486817804], - [-2.8828822301129913, 4.767636200000002, 18.51521881819886], - [-3.109257911675553, 4.267030000000002, 19.264773302770656], - [-3.3392076019901658, 6.0530240000000015, 18.3981555303986], - [-3.8448395840203813, 6.429578400000002, 19.081315911441894], - [-3.0465353862929567, 6.792935800000002, 17.264214130661784], - [-3.3679522685241556, 7.661298400000002, 17.17161182837203], - [-4.609929746882774, 7.907642400000001, 14.639899828035128], - [-5.447375721498209, 7.616428600000001, 15.254918892299164], - ] - ), - ) - - assert mol.natoms == 52 - assert np.allclose( - mol.elemcountvec, - np.array( - [ - 0.0, - 0.0, - 0.0, - 0.0, - 24.0, - 0.0, - 0.0, - 0.0, - 0.0, - 23.0, - 0.0, - 1.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 1.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 2.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 1.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - ] - ), - ) - assert np.allclose( - mol.Hvcountvec, - np.array( - [ - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 23.0, - 0.0, - 1.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 1.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 2.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 1.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - ] - ), - ) - assert mol.centroid == [] - assert mol.tmatrix == [] - assert mol.atnums == [ - 75, - 53, - 53, - 15, - 6, - 6, - 6, - 6, - 6, - 6, - 1, - 1, - 1, - 6, - 1, - 1, - 1, - 6, - 1, - 1, - 1, - 6, - 1, - 1, - 1, - 6, - 1, - 1, - 6, - 6, - 1, - 6, - 1, - 6, - 1, - 6, - 1, - 6, - 1, - 6, - 6, - 1, - 6, - 1, - 6, - 1, - 6, - 1, - 6, - 1, - 6, - 8, - ] - assert mol.type == "Complex" - assert mol.eleccount == 366 - assert mol.numH == 24 - - assert mol.hapticity is True - assert mol.hapttype == ["h5-Cp"] - - # Lists of potentially good variables for this molecule - assert mol.posatcharge == [] - assert mol.poscharge == [] - assert mol.posobjlist == [] - assert mol.posspin == [] - assert mol.possmiles == [] - - assert np.isclose(mol.factor, 1.3) - assert np.isclose(mol.metal_factor, 1.0) - - # missing instance variables - # mol.atcharge - # mol.totcharge - # mol.smiles - # mol.object - # mol.charge - # mol.spin - - assert np.allclose( - mol.conmat, - np.array( - [ - [ - 0.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 1.0, - 0.0, - ], - [ - 1.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - ], - [ - 1.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - ], - [ - 1.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 1.0, - 0.0, - 0.0, - 1.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 1.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - ], - [ - 1.0, - 0.0, - 0.0, - 0.0, - 0.0, - 1.0, - 0.0, - 0.0, - 1.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 1.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - ], - [ - 1.0, - 0.0, - 0.0, - 0.0, - 1.0, - 0.0, - 1.0, - 0.0, - 0.0, - 1.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - ], - [ - 1.0, - 0.0, - 0.0, - 0.0, - 0.0, - 1.0, - 0.0, - 1.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 1.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - ], - [ - 1.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 1.0, - 0.0, - 1.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 1.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - ], - [ - 1.0, - 0.0, - 0.0, - 0.0, - 1.0, - 0.0, - 0.0, - 1.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 1.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - ], - [ - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 1.0, - 0.0, - 0.0, - 0.0, - 0.0, - 1.0, - 1.0, - 1.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - ], - [ - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 1.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - ], - [ - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 1.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - ], - [ - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 1.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - ], - [ - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 1.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 1.0, - 1.0, - 1.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - ], - [ - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 1.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - ], - [ - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 1.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - ], - [ - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 1.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - ], - [ - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 1.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 1.0, - 1.0, - 1.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - ], - [ - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 1.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - ], - [ - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 1.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - ], - [ - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 1.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - ], - [ - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 1.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 1.0, - 1.0, - 1.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - ], - [ - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 1.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - ], - [ - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 1.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - ], - [ - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 1.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - ], - [ - 0.0, - 0.0, - 0.0, - 1.0, - 1.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 1.0, - 1.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - ], - [ - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 1.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - ], - [ - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 1.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - ], - [ - 0.0, - 0.0, - 0.0, - 1.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 1.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 1.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - ], - [ - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 1.0, - 0.0, - 1.0, - 1.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - ], - [ - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 1.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - ], - [ - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 1.0, - 0.0, - 0.0, - 1.0, - 1.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - ], - [ - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 1.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - ], - [ - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 1.0, - 0.0, - 0.0, - 1.0, - 1.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - ], - [ - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 1.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - ], - [ - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 1.0, - 0.0, - 0.0, - 1.0, - 1.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - ], - [ - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 1.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - ], - [ - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 1.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 1.0, - 0.0, - 0.0, - 1.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - ], - [ - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 1.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - ], - [ - 0.0, - 0.0, - 0.0, - 1.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 1.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 1.0, - 0.0, - 0.0, - 0.0, - ], - [ - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 1.0, - 0.0, - 1.0, - 1.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - ], - [ - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 1.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - ], - [ - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 1.0, - 0.0, - 0.0, - 1.0, - 1.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - ], - [ - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 1.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - ], - [ - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 1.0, - 0.0, - 0.0, - 1.0, - 1.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - ], - [ - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 1.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - ], - [ - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 1.0, - 0.0, - 0.0, - 1.0, - 1.0, - 0.0, - 0.0, - 0.0, - ], - [ - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 1.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - ], - [ - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 1.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 1.0, - 0.0, - 0.0, - 1.0, - 0.0, - 0.0, - ], - [ - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 1.0, - 0.0, - 0.0, - 0.0, - ], - [ - 1.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 1.0, - ], - [ - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 1.0, - 0.0, - ], - ] - ), - ) - assert np.allclose( - mol.mconmat, - np.array( - [ - [ - 0.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 1.0, - 0.0, - ], - [ - 1.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - ], - [ - 1.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - ], - [ - 1.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - ], - [ - 1.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - ], - [ - 1.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - ], - [ - 1.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - ], - [ - 1.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - ], - [ - 1.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - ], - [ - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - ], - [ - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - ], - [ - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - ], - [ - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - ], - [ - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - ], - [ - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - ], - [ - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - ], - [ - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - ], - [ - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - ], - [ - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - ], - [ - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - ], - [ - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - ], - [ - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - ], - [ - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - ], - [ - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - ], - [ - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - ], - [ - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - ], - [ - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - ], - [ - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - ], - [ - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - ], - [ - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - ], - [ - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - ], - [ - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - ], - [ - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - ], - [ - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - ], - [ - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - ], - [ - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - ], - [ - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - ], - [ - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - ], - [ - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - ], - [ - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - ], - [ - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - ], - [ - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - ], - [ - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - ], - [ - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - ], - [ - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - ], - [ - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - ], - [ - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - ], - [ - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - ], - [ - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - ], - [ - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - ], - [ - 1.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - ], - [ - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - ], - ] - ), - ) - assert np.allclose( - mol.connec, - np.array( - [ - 9.0, - 1.0, - 1.0, - 4.0, - 4.0, - 4.0, - 4.0, - 4.0, - 4.0, - 4.0, - 1.0, - 1.0, - 1.0, - 4.0, - 1.0, - 1.0, - 1.0, - 4.0, - 1.0, - 1.0, - 1.0, - 4.0, - 1.0, - 1.0, - 1.0, - 4.0, - 1.0, - 1.0, - 3.0, - 3.0, - 1.0, - 3.0, - 1.0, - 3.0, - 1.0, - 3.0, - 1.0, - 3.0, - 1.0, - 3.0, - 3.0, - 1.0, - 3.0, - 1.0, - 3.0, - 1.0, - 3.0, - 1.0, - 3.0, - 1.0, - 2.0, - 1.0, - ] - ), - ) - assert np.allclose( - mol.mconnec, - np.array( - [ - 9.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 1.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 1.0, - 0.0, - ] - ), - ) - assert np.isclose(mol.totconnec, 59) - assert np.isclose(mol.totmconnec, 9) - assert np.allclose( - mol.adjtypes, - np.array( - [ - [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 24, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - [ - 0, - 0, - 0, - 0, - 24, - 0, - 0, - 0, - 0, - 22, - 0, - 1, - 0, - 0, - 0, - 0, - 0, - 0, - 3, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 6, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 1, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 3, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 1, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 2, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 6, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 1, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 2, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - [ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - ], - ] - ), - ) - - -if __name__ == "__main__": - test_check_cell_vs_data() diff --git a/cell2mol/test/test_one_by_one.ipynb b/cell2mol/test/test_one_by_one.ipynb deleted file mode 100644 index 5295cffe3..000000000 --- a/cell2mol/test/test_one_by_one.ipynb +++ /dev/null @@ -1,2564 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 1, - "id": "4b985e29", - "metadata": {}, - "outputs": [], - "source": [ - "import cell2mol\n", - "import numpy as np\n", - "import os" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "b06260dd", - "metadata": {}, - "outputs": [], - "source": [ - "infopath = \"BACZUB/BACZUB.info\"\n", - "# infopath = \"INOVAL/INOVAL.info\"" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "bc3b2bd0", - "metadata": {}, - "outputs": [], - "source": [ - "from cell2mol.read_write import readinfo\n", - "from cell2mol.classes import cell\n", - "from cell2mol.cell_reconstruction import classify_fragments, fragments_reconstruct\n", - "from cell2mol.charge_assignment import *" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "23e75d0d", - "metadata": {}, - "outputs": [], - "source": [ - "# name = \"INOVAL\"\n", - "name = \"BACZUB\"" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "id": "db12f7ef", - "metadata": {}, - "outputs": [], - "source": [ - "debug=2" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "id": "09c5cef3", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "INITIATING cell object from input\n", - "MOLECULE.SPLIT COMPLEX: labels=['Hg', 'Fe', 'Cl', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H']\n", - "MOLECULE.SPLIT COMPLEX: metal_idx=[0, 1]\n", - "MOLECULE.SPLIT COMPLEX: rest_idx=[2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21]\n", - "SPLIT COMPLEX: rest labels: ['Cl', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H']\n", - "SPLIT COMPLEX: rest coord: [[-0.3928769966037601, 2.3016163714687834, 7.603055514033566], [1.088207063968434, 4.309352587547709, 1.5686258268701916], [0.7532516276954522, 5.168808941441503, 1.697896237810325], [1.0397715909633676, 3.638400052685908, 0.36499880736037693], [0.6781788850937274, 3.946031481417394, -0.4334360837404476], [1.6288999872619745, 2.4157695326489255, 0.5757421663720231], [1.7526494162892954, 1.7496592112398208, -0.06517835845721018], [2.047083955789577, 2.334447308344994, 1.9879399329449103], [2.465130185355504, 1.621375121287581, 2.4050814270710554], [1.6834475642260016, 3.552077268693482, 2.559336875419786], [1.818300816768502, 3.8056430302579254, 3.443589938489271], [-1.2757991550702044, 2.060766775585443, 3.361030684443471], [-1.867597191548076, 3.011023862021328, 2.5441285917797702], [-2.135807437165562, 3.856135539104166, 2.825481839120061], [-2.009598694552083, 2.51376054758525, 1.2025407135355277], [-2.376811986310577, 2.9553237023948453, 0.4714567928404869], [-1.478218441311459, 1.2250348551990857, 1.2351298927641328], [-1.4336568707303048, 0.6468013106959317, 0.5073048899919524], [-1.012973100540437, 0.9240043790765426, 2.5495601216512047], [-0.611698646741747, 0.1315988886657848, 2.824395533145774]]\n", - "SPLIT COMPLEX: rest indices: [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21]\n", - "SPLIT COMPLEX: rest radii: [1.02, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31]\n", - "SPLIT COMPLEX: splitting species with 20 atoms in block\n", - "labels=['Cl', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H'] 20\n", - "indices=None\n", - "SPLIT COMPLEX: received 3 blocks\n", - "PREPARING BLOCK: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]\n", - "CREATING LIGAND: H5-C5\n", - "PREPARING BLOCK: [11, 12, 13, 14, 15, 16, 17, 18, 19]\n", - "CREATING LIGAND: H4-C5\n", - "PREPARING BLOCK: [0]\n", - "CREATING LIGAND: Cl\n", - "MOLECULE.SPLIT COMPLEX: labels=['Hg', 'Fe', 'Cl', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H']\n", - "MOLECULE.SPLIT COMPLEX: metal_idx=[0, 1]\n", - "MOLECULE.SPLIT COMPLEX: rest_idx=[2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21]\n", - "SPLIT COMPLEX: rest labels: ['Cl', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H']\n", - "SPLIT COMPLEX: rest coord: [[3.729896936201694, 6.38432607195136, 3.2600042288347955], [2.2488128756294996, 4.376589855872433, 9.294433915998171], [2.5837683119024804, 3.5171335019786403, 9.165163505058038], [2.2972483486345654, 5.047542390734234, 10.498060935507986], [2.6588410545042063, 4.739910962002749, 11.29649582660881], [1.7081199523359591, 6.270172910771218, 10.287317576496338], [1.5843705233086376, 6.9362832321803225, 10.928238101325572], [1.2899359838083557, 6.351495135075149, 8.87511980992345], [0.8718897542424289, 7.064567322132563, 8.457978315797307], [1.6535723753719318, 5.133865174726661, 8.303722867448576], [1.518719122829431, 4.880299413162218, 7.419469804379092], [4.612819094668138, 6.625175667834701, 7.502029058424891], [5.20461713114601, 5.674918581398816, 8.318931151088591], [5.4728273767634965, 4.829806904315977, 8.037577903748302], [5.346618634150017, 6.172181895834893, 9.660519029332834], [5.713831925908509, 5.730618741025298, 10.391602950027876], [4.815238380909393, 7.460907588221057, 9.627929850104229], [4.770676810328238, 8.039141132724211, 10.35575485287641], [4.34999304013837, 7.7619380643436005, 8.313499621217158], [3.9487185863396794, 8.55434355475436, 8.038664209722588]]\n", - "SPLIT COMPLEX: rest indices: [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21]\n", - "SPLIT COMPLEX: rest radii: [1.02, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31]\n", - "SPLIT COMPLEX: splitting species with 20 atoms in block\n", - "labels=['Cl', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H'] 20\n", - "indices=None\n", - "SPLIT COMPLEX: received 3 blocks\n", - "PREPARING BLOCK: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]\n", - "CREATING LIGAND: H5-C5\n", - "PREPARING BLOCK: [11, 12, 13, 14, 15, 16, 17, 18, 19]\n", - "CREATING LIGAND: H4-C5\n", - "PREPARING BLOCK: [0]\n", - "CREATING LIGAND: Cl\n", - "MOLECULE.SPLIT COMPLEX: labels=['Hg', 'Cl', 'Cl', 'Cl', 'Hg', 'Cl', 'Cl', 'Cl']\n", - "MOLECULE.SPLIT COMPLEX: metal_idx=[0, 4]\n", - "MOLECULE.SPLIT COMPLEX: rest_idx=[1, 2, 3, 5, 6, 7]\n", - "SPLIT COMPLEX: rest labels: ['Cl', 'Cl', 'Cl', 'Cl', 'Cl', 'Cl']\n", - "SPLIT COMPLEX: rest coord: [[4.868492825344344, -0.5616563814600966, 5.7432996860545025], [3.2896383298805927, -1.1564793894742424, 1.8108720591361558], [2.7576337144776764, -3.8316994367601804, 5.1099833030452775], [1.3562607787141432, -0.06389919010860623, 5.119760056813859], [2.9351152741778943, 0.5309238179055397, 9.052187683732207], [3.467119889580811, 3.2061438651914775, 5.753076439823084]]\n", - "SPLIT COMPLEX: rest indices: [1, 2, 3, 5, 6, 7]\n", - "SPLIT COMPLEX: rest radii: [1.02, 1.02, 1.02, 1.02, 1.02, 1.02]\n", - "SPLIT COMPLEX: splitting species with 6 atoms in block\n", - "labels=['Cl', 'Cl', 'Cl', 'Cl', 'Cl', 'Cl'] 6\n", - "indices=None\n", - "SPLIT COMPLEX: received 6 blocks\n", - "PREPARING BLOCK: [5]\n", - "CREATING LIGAND: Cl\n", - "PREPARING BLOCK: [4]\n", - "CREATING LIGAND: Cl\n", - "PREPARING BLOCK: [3]\n", - "CREATING LIGAND: Cl\n", - "PREPARING BLOCK: [2]\n", - "CREATING LIGAND: Cl\n", - "PREPARING BLOCK: [1]\n", - "CREATING LIGAND: Cl\n", - "PREPARING BLOCK: [0]\n", - "CREATING LIGAND: Cl\n", - "LIGAND.SPLIT_LIGAND: self.indices=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]\n", - "LIGAND.SPLIT_LIGAND: conn_idx=[0, 2, 4, 6, 8]\n", - "LIGAND.SPLIT_LIGAND: conn_labels=['C', 'C', 'C', 'C', 'C']\n", - "LIGAND.SPLIT_LIGAND: conn_coord=[[1.088207063968434, 4.309352587547709, 1.5686258268701916], [1.0397715909633676, 3.638400052685908, 0.36499880736037693], [1.6288999872619745, 2.4157695326489255, 0.5757421663720231], [2.047083955789577, 2.334447308344994, 1.9879399329449103], [1.6834475642260016, 3.552077268693482, 2.559336875419786]]\n", - "LIGAND.SPLIT_LIGAND: conn_radii=[0.73, 0.73, 0.73, 0.73, 0.73]\n", - "labels=['C', 'C', 'C', 'C', 'C'] 5\n", - "indices=None\n", - "blocklist=[[0, 1, 2, 3, 4]]\n", - "LIGAND.SPLIT_LIGAND: block=[0, 1, 2, 3, 4]\n", - "LIGAND.SPLIT_LIGAND: self.indices=[0, 1, 2, 3, 4, 5, 6, 7, 8]\n", - "LIGAND.SPLIT_LIGAND: conn_idx=[0, 1, 3, 5, 7]\n", - "LIGAND.SPLIT_LIGAND: conn_labels=['C', 'C', 'C', 'C', 'C']\n", - "LIGAND.SPLIT_LIGAND: conn_coord=[[-1.2757991550702044, 2.060766775585443, 3.361030684443471], [-1.867597191548076, 3.011023862021328, 2.5441285917797702], [-2.009598694552083, 2.51376054758525, 1.2025407135355277], [-1.478218441311459, 1.2250348551990857, 1.2351298927641328], [-1.012973100540437, 0.9240043790765426, 2.5495601216512047]]\n", - "LIGAND.SPLIT_LIGAND: conn_radii=[0.73, 0.73, 0.73, 0.73, 0.73]\n", - "labels=['C', 'C', 'C', 'C', 'C'] 5\n", - "indices=None\n", - "blocklist=[[0, 1, 2, 3, 4]]\n", - "LIGAND.SPLIT_LIGAND: block=[0, 1, 2, 3, 4]\n", - "LIGAND.SPLIT_LIGAND: self.indices=[0]\n", - "LIGAND.SPLIT_LIGAND: conn_idx=[0]\n", - "LIGAND.SPLIT_LIGAND: conn_labels=['Cl']\n", - "LIGAND.SPLIT_LIGAND: conn_coord=[[-0.3928769966037601, 2.3016163714687834, 7.603055514033566]]\n", - "LIGAND.SPLIT_LIGAND: conn_radii=[1.02]\n", - "labels=['Cl'] 1\n", - "indices=None\n", - "blocklist=[[0]]\n", - "LIGAND.SPLIT_LIGAND: block=[0]\n", - "LIGAND.Get_denticity: checking connectivity of ligand H5-C5\n", - "LIGAND.Get_denticity: initial connectivity is 5\n", - "Fe : 1.32 (1.3), C : 0.73 (1.22), new_factor=1.22, thres=2.501\n", - "\tAtom 0 : C \tMetal : Fe \tdistance : 2.065 \tthres : 2.501\n", - "Fe : 1.32 (1.3), C : 0.73 (1.22), new_factor=1.22, thres=2.501\n", - "\tAtom 1 : C \tMetal : Fe \tdistance : 2.062 \tthres : 2.501\n", - "Fe : 1.32 (1.3), C : 0.73 (1.22), new_factor=1.22, thres=2.501\n", - "\tAtom 2 : C \tMetal : Fe \tdistance : 2.045 \tthres : 2.501\n", - "Fe : 1.32 (1.3), C : 0.73 (1.22), new_factor=1.22, thres=2.501\n", - "\tAtom 3 : C \tMetal : Fe \tdistance : 2.084 \tthres : 2.501\n", - "Fe : 1.32 (1.3), C : 0.73 (1.22), new_factor=1.22, thres=2.501\n", - "\tAtom 4 : C \tMetal : Fe \tdistance : 2.104 \tthres : 2.501\n", - "ratio_list=[0.826, 0.824, 0.818, 0.833, 0.841] std_dev=0.008\n", - "LIGAND.Get_denticity: final connectivity is 5\n", - "LIGAND.Get_denticity: checking connectivity of ligand H4-C5\n", - "LIGAND.Get_denticity: initial connectivity is 5\n", - "Hg : 1.32 (1.3), C : 0.73 (1.22), new_factor=1.22, thres=2.501\n", - "\tAtom 0 : C \tMetal : Hg \tdistance : 2.042 \tthres : 2.501\n", - "Fe : 1.32 (1.3), C : 0.73 (1.22), new_factor=1.22, thres=2.501\n", - "\tAtom 1 : C \tMetal : Fe \tdistance : 2.051 \tthres : 2.501\n", - "Fe : 1.32 (1.3), C : 0.73 (1.22), new_factor=1.22, thres=2.501\n", - "\tAtom 2 : C \tMetal : Fe \tdistance : 2.081 \tthres : 2.501\n", - "Fe : 1.32 (1.3), C : 0.73 (1.22), new_factor=1.22, thres=2.501\n", - "\tAtom 3 : C \tMetal : Fe \tdistance : 2.068 \tthres : 2.501\n", - "Fe : 1.32 (1.3), C : 0.73 (1.22), new_factor=1.22, thres=2.501\n", - "\tAtom 4 : C \tMetal : Fe \tdistance : 2.077 \tthres : 2.501\n", - "ratio_list=[0.816, 0.82, 0.832, 0.827, 0.83] std_dev=0.006\n", - "LIGAND.Get_denticity: final connectivity is 6\n", - "LIGAND.Get_denticity: checking connectivity of ligand Cl\n", - "LIGAND.Get_denticity: initial connectivity is 1\n", - "Entering COORD_CORR_NONHAPTIC:\n", - "\tmconnec=1 in atom idx=0, label=Cl\n", - "\tevaluating coordination with metal \n", - "------------- Cell2mol METAL Object --------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Sub-Type = metal\n", - " Label = Hg\n", - " Atomic Number = 80\n", - " Index in Molecule = 0\n", - " Metal Adjacency (mconnec) = 2\n", - " Regular Adjacencies (connec) = 2\n", - "----------------------------------------------------\n", - "\n", - "ADD_ATOM: Metalist length 1\n", - "ADD_ATOM: Ligand Atoms 1\n", - "ADD_ATOM: site= 0\n", - "ADD_ATOM: evaluating apos=array([-0.392877 , 2.30161637, 7.60305551]) and tgt.coord=[-0.8781947965901001, 2.1910412897789047, 5.359507785338963]\n", - "ADD_ATOM: received tmpconnec[posadded]=1\n", - "ADD_ATOM: Chosen Metal index None. H is added at site 0\n", - "\tconnectivity verified for atom 0 with label Cl\n", - "LIGAND.Get_denticity: final connectivity is 1\n", - "LIGAND.SPLIT_LIGAND: self.indices=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]\n", - "LIGAND.SPLIT_LIGAND: conn_idx=[0, 2, 4, 6, 8]\n", - "LIGAND.SPLIT_LIGAND: conn_labels=['C', 'C', 'C', 'C', 'C']\n", - "LIGAND.SPLIT_LIGAND: conn_coord=[[2.2488128756294996, 4.376589855872433, 9.294433915998171], [2.2972483486345654, 5.047542390734234, 10.498060935507986], [1.7081199523359591, 6.270172910771218, 10.287317576496338], [1.2899359838083557, 6.351495135075149, 8.87511980992345], [1.6535723753719318, 5.133865174726661, 8.303722867448576]]\n", - "LIGAND.SPLIT_LIGAND: conn_radii=[0.73, 0.73, 0.73, 0.73, 0.73]\n", - "labels=['C', 'C', 'C', 'C', 'C'] 5\n", - "indices=None\n", - "blocklist=[[0, 1, 2, 3, 4]]\n", - "LIGAND.SPLIT_LIGAND: block=[0, 1, 2, 3, 4]\n", - "LIGAND.SPLIT_LIGAND: self.indices=[0, 1, 2, 3, 4, 5, 6, 7, 8]\n", - "LIGAND.SPLIT_LIGAND: conn_idx=[0, 1, 3, 5, 7]\n", - "LIGAND.SPLIT_LIGAND: conn_labels=['C', 'C', 'C', 'C', 'C']\n", - "LIGAND.SPLIT_LIGAND: conn_coord=[[4.612819094668138, 6.625175667834701, 7.502029058424891], [5.20461713114601, 5.674918581398816, 8.318931151088591], [5.346618634150017, 6.172181895834893, 9.660519029332834], [4.815238380909393, 7.460907588221057, 9.627929850104229], [4.34999304013837, 7.7619380643436005, 8.313499621217158]]\n", - "LIGAND.SPLIT_LIGAND: conn_radii=[0.73, 0.73, 0.73, 0.73, 0.73]\n", - "labels=['C', 'C', 'C', 'C', 'C'] 5\n", - "indices=None\n", - "blocklist=[[0, 1, 2, 3, 4]]\n", - "LIGAND.SPLIT_LIGAND: block=[0, 1, 2, 3, 4]\n", - "LIGAND.SPLIT_LIGAND: self.indices=[0]\n", - "LIGAND.SPLIT_LIGAND: conn_idx=[0]\n", - "LIGAND.SPLIT_LIGAND: conn_labels=['Cl']\n", - "LIGAND.SPLIT_LIGAND: conn_coord=[[3.729896936201694, 6.38432607195136, 3.2600042288347955]]\n", - "LIGAND.SPLIT_LIGAND: conn_radii=[1.02]\n", - "labels=['Cl'] 1\n", - "indices=None\n", - "blocklist=[[0]]\n", - "LIGAND.SPLIT_LIGAND: block=[0]\n", - "LIGAND.Get_denticity: checking connectivity of ligand H5-C5\n", - "LIGAND.Get_denticity: initial connectivity is 5\n", - "Fe : 1.32 (1.3), C : 0.73 (1.22), new_factor=1.22, thres=2.501\n", - "\tAtom 0 : C \tMetal : Fe \tdistance : 2.065 \tthres : 2.501\n", - "Fe : 1.32 (1.3), C : 0.73 (1.22), new_factor=1.22, thres=2.501\n", - "\tAtom 1 : C \tMetal : Fe \tdistance : 2.062 \tthres : 2.501\n", - "Fe : 1.32 (1.3), C : 0.73 (1.22), new_factor=1.22, thres=2.501\n", - "\tAtom 2 : C \tMetal : Fe \tdistance : 2.045 \tthres : 2.501\n", - "Fe : 1.32 (1.3), C : 0.73 (1.22), new_factor=1.22, thres=2.501\n", - "\tAtom 3 : C \tMetal : Fe \tdistance : 2.084 \tthres : 2.501\n", - "Fe : 1.32 (1.3), C : 0.73 (1.22), new_factor=1.22, thres=2.501\n", - "\tAtom 4 : C \tMetal : Fe \tdistance : 2.104 \tthres : 2.501\n", - "ratio_list=[0.826, 0.824, 0.818, 0.833, 0.841] std_dev=0.008\n", - "LIGAND.Get_denticity: final connectivity is 5\n", - "LIGAND.Get_denticity: checking connectivity of ligand H4-C5\n", - "LIGAND.Get_denticity: initial connectivity is 5\n", - "Hg : 1.32 (1.3), C : 0.73 (1.22), new_factor=1.22, thres=2.501\n", - "\tAtom 0 : C \tMetal : Hg \tdistance : 2.042 \tthres : 2.501\n", - "Fe : 1.32 (1.3), C : 0.73 (1.22), new_factor=1.22, thres=2.501\n", - "\tAtom 1 : C \tMetal : Fe \tdistance : 2.051 \tthres : 2.501\n", - "Fe : 1.32 (1.3), C : 0.73 (1.22), new_factor=1.22, thres=2.501\n", - "\tAtom 2 : C \tMetal : Fe \tdistance : 2.081 \tthres : 2.501\n", - "Fe : 1.32 (1.3), C : 0.73 (1.22), new_factor=1.22, thres=2.501\n", - "\tAtom 3 : C \tMetal : Fe \tdistance : 2.068 \tthres : 2.501\n", - "Fe : 1.32 (1.3), C : 0.73 (1.22), new_factor=1.22, thres=2.501\n", - "\tAtom 4 : C \tMetal : Fe \tdistance : 2.077 \tthres : 2.501\n", - "ratio_list=[0.816, 0.82, 0.832, 0.827, 0.83] std_dev=0.006\n", - "LIGAND.Get_denticity: final connectivity is 6\n", - "LIGAND.Get_denticity: checking connectivity of ligand Cl\n", - "LIGAND.Get_denticity: initial connectivity is 1\n", - "Entering COORD_CORR_NONHAPTIC:\n", - "\tmconnec=1 in atom idx=0, label=Cl\n", - "\tevaluating coordination with metal \n", - "------------- Cell2mol METAL Object --------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Sub-Type = metal\n", - " Label = Hg\n", - " Atomic Number = 80\n", - " Index in Molecule = 0\n", - " Metal Adjacency (mconnec) = 2\n", - " Regular Adjacencies (connec) = 2\n", - "----------------------------------------------------\n", - "\n", - "ADD_ATOM: Metalist length 1\n", - "ADD_ATOM: Ligand Atoms 1\n", - "ADD_ATOM: site= 0\n", - "ADD_ATOM: evaluating apos=array([3.72989694, 6.38432607, 3.26000423]) and tgt.coord=[4.215214736188033, 6.494901153641239, 5.503551957529399]\n", - "ADD_ATOM: received tmpconnec[posadded]=1\n", - "ADD_ATOM: Chosen Metal index None. H is added at site 0\n", - "\tconnectivity verified for atom 0 with label Cl\n", - "LIGAND.Get_denticity: final connectivity is 1\n", - "LIGAND.SPLIT_LIGAND: self.indices=[0]\n", - "LIGAND.SPLIT_LIGAND: conn_idx=[0]\n", - "LIGAND.SPLIT_LIGAND: conn_labels=['Cl']\n", - "LIGAND.SPLIT_LIGAND: conn_coord=[[3.467119889580811, 3.2061438651914775, 5.753076439823084]]\n", - "LIGAND.SPLIT_LIGAND: conn_radii=[1.02]\n", - "labels=['Cl'] 1\n", - "indices=None\n", - "blocklist=[[0]]\n", - "LIGAND.SPLIT_LIGAND: block=[0]\n", - "LIGAND.SPLIT_LIGAND: self.indices=[0]\n", - "LIGAND.SPLIT_LIGAND: conn_idx=[0]\n", - "LIGAND.SPLIT_LIGAND: conn_labels=['Cl']\n", - "LIGAND.SPLIT_LIGAND: conn_coord=[[2.9351152741778943, 0.5309238179055397, 9.052187683732207]]\n", - "LIGAND.SPLIT_LIGAND: conn_radii=[1.02]\n", - "labels=['Cl'] 1\n", - "indices=None\n", - "blocklist=[[0]]\n", - "LIGAND.SPLIT_LIGAND: block=[0]\n", - "LIGAND.SPLIT_LIGAND: self.indices=[0]\n", - "LIGAND.SPLIT_LIGAND: conn_idx=[0]\n", - "LIGAND.SPLIT_LIGAND: conn_labels=['Cl']\n", - "LIGAND.SPLIT_LIGAND: conn_coord=[[1.3562607787141432, -0.06389919010860623, 5.119760056813859]]\n", - "LIGAND.SPLIT_LIGAND: conn_radii=[1.02]\n", - "labels=['Cl'] 1\n", - "indices=None\n", - "blocklist=[[0]]\n", - "LIGAND.SPLIT_LIGAND: block=[0]\n", - "LIGAND.SPLIT_LIGAND: self.indices=[0]\n", - "LIGAND.SPLIT_LIGAND: conn_idx=[0]\n", - "LIGAND.SPLIT_LIGAND: conn_labels=['Cl']\n", - "LIGAND.SPLIT_LIGAND: conn_coord=[[2.7576337144776764, -3.8316994367601804, 5.1099833030452775]]\n", - "LIGAND.SPLIT_LIGAND: conn_radii=[1.02]\n", - "labels=['Cl'] 1\n", - "indices=None\n", - "blocklist=[[0]]\n", - "LIGAND.SPLIT_LIGAND: block=[0]\n", - "LIGAND.SPLIT_LIGAND: self.indices=[0]\n", - "LIGAND.SPLIT_LIGAND: conn_idx=[0]\n", - "LIGAND.SPLIT_LIGAND: conn_labels=['Cl']\n", - "LIGAND.SPLIT_LIGAND: conn_coord=[[3.2896383298805927, -1.1564793894742424, 1.8108720591361558]]\n", - "LIGAND.SPLIT_LIGAND: conn_radii=[1.02]\n", - "labels=['Cl'] 1\n", - "indices=None\n", - "blocklist=[[0]]\n", - "LIGAND.SPLIT_LIGAND: block=[0]\n", - "LIGAND.SPLIT_LIGAND: self.indices=[0]\n", - "LIGAND.SPLIT_LIGAND: conn_idx=[0]\n", - "LIGAND.SPLIT_LIGAND: conn_labels=['Cl']\n", - "LIGAND.SPLIT_LIGAND: conn_coord=[[4.868492825344344, -0.5616563814600966, 5.7432996860545025]]\n", - "LIGAND.SPLIT_LIGAND: conn_radii=[1.02]\n", - "labels=['Cl'] 1\n", - "indices=None\n", - "blocklist=[[0]]\n", - "LIGAND.SPLIT_LIGAND: block=[0]\n", - "LIGAND.Get_denticity: checking connectivity of ligand Cl\n", - "LIGAND.Get_denticity: initial connectivity is 1\n", - "Entering COORD_CORR_NONHAPTIC:\n", - "\tmconnec=1 in atom idx=0, label=Cl\n", - "\tevaluating coordination with metal \n", - "------------- Cell2mol METAL Object --------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Sub-Type = metal\n", - " Label = Hg\n", - " Atomic Number = 80\n", - " Index in Molecule = 4\n", - " Metal Adjacency (mconnec) = 4\n", - " Regular Adjacencies (connec) = 4\n", - "----------------------------------------------------\n", - "\n", - "ADD_ATOM: Metalist length 1\n", - "ADD_ATOM: Ligand Atoms 1\n", - "ADD_ATOM: site= 0\n", - "ADD_ATOM: evaluating apos=array([3.46711989, 3.20614387, 5.75307644]) and tgt.coord=[2.8686394779212936, 1.1205049951190558, 6.780721891498431]\n", - "ADD_ATOM: received tmpconnec[posadded]=1\n", - "ADD_ATOM: Chosen Metal index None. H is added at site 0\n", - "\tconnectivity verified for atom 0 with label Cl\n", - "LIGAND.Get_denticity: final connectivity is 1\n", - "LIGAND.Get_denticity: checking connectivity of ligand Cl\n", - "LIGAND.Get_denticity: initial connectivity is 1\n", - "Entering COORD_CORR_NONHAPTIC:\n", - "\tmconnec=1 in atom idx=0, label=Cl\n", - "\tevaluating coordination with metal \n", - "------------- Cell2mol METAL Object --------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Sub-Type = metal\n", - " Label = Hg\n", - " Atomic Number = 80\n", - " Index in Molecule = 4\n", - " Metal Adjacency (mconnec) = 4\n", - " Regular Adjacencies (connec) = 4\n", - "----------------------------------------------------\n", - "\n", - "ADD_ATOM: Metalist length 1\n", - "ADD_ATOM: Ligand Atoms 1\n", - "ADD_ATOM: site= 0\n", - "ADD_ATOM: evaluating apos=array([2.93511527, 0.53092382, 9.05218768]) and tgt.coord=[2.8686394779212936, 1.1205049951190558, 6.780721891498431]\n", - "ADD_ATOM: received tmpconnec[posadded]=1\n", - "ADD_ATOM: Chosen Metal index None. H is added at site 0\n", - "\tconnectivity verified for atom 0 with label Cl\n", - "LIGAND.Get_denticity: final connectivity is 1\n", - "LIGAND.Get_denticity: checking connectivity of ligand Cl\n", - "LIGAND.Get_denticity: initial connectivity is 1\n", - "Entering COORD_CORR_NONHAPTIC:\n", - "\tmconnec=2 in atom idx=0, label=Cl\n", - "\tevaluating coordination with metal \n", - "------------- Cell2mol METAL Object --------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Sub-Type = metal\n", - " Label = Hg\n", - " Atomic Number = 80\n", - " Index in Molecule = 0\n", - " Metal Adjacency (mconnec) = 4\n", - " Regular Adjacencies (connec) = 4\n", - "----------------------------------------------------\n", - "\n", - "ADD_ATOM: Metalist length 1\n", - "ADD_ATOM: Ligand Atoms 1\n", - "ADD_ATOM: site= 0\n", - "ADD_ATOM: evaluating apos=array([ 1.35626078, -0.06389919, 5.11976006]) and tgt.coord=[2.8686394779212936, 1.1205049951190558, 6.780721891498431]\n", - "ADD_ATOM: received tmpconnec[posadded]=1\n", - "ADD_ATOM: Chosen Metal index None. H is added at site 0\n", - "\tconnectivity verified for atom 0 with label Cl\n", - "\tevaluating coordination with metal \n", - "------------- Cell2mol METAL Object --------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Sub-Type = metal\n", - " Label = Hg\n", - " Atomic Number = 80\n", - " Index in Molecule = 4\n", - " Metal Adjacency (mconnec) = 4\n", - " Regular Adjacencies (connec) = 4\n", - "----------------------------------------------------\n", - "\n", - "ADD_ATOM: Metalist length 1\n", - "ADD_ATOM: Ligand Atoms 1\n", - "ADD_ATOM: site= 0\n", - "ADD_ATOM: evaluating apos=array([ 1.35626078, -0.06389919, 5.11976006]) and tgt.coord=[2.8686394779212936, 1.1205049951190558, 6.780721891498431]\n", - "ADD_ATOM: received tmpconnec[posadded]=1\n", - "ADD_ATOM: Chosen Metal index None. H is added at site 0\n", - "\tconnectivity verified for atom 0 with label Cl\n", - "LIGAND.Get_denticity: final connectivity is 2\n", - "LIGAND.Get_denticity: checking connectivity of ligand Cl\n", - "LIGAND.Get_denticity: initial connectivity is 1\n", - "Entering COORD_CORR_NONHAPTIC:\n", - "\tmconnec=1 in atom idx=0, label=Cl\n", - "\tevaluating coordination with metal \n", - "------------- Cell2mol METAL Object --------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Sub-Type = metal\n", - " Label = Hg\n", - " Atomic Number = 80\n", - " Index in Molecule = 0\n", - " Metal Adjacency (mconnec) = 4\n", - " Regular Adjacencies (connec) = 4\n", - "----------------------------------------------------\n", - "\n", - "ADD_ATOM: Metalist length 1\n", - "ADD_ATOM: Ligand Atoms 1\n", - "ADD_ATOM: site= 0\n", - "ADD_ATOM: evaluating apos=array([ 2.75763371, -3.83169944, 5.1099833 ]) and tgt.coord=[3.3561141261371934, -1.7460605666877584, 4.082337851369931]\n", - "ADD_ATOM: received tmpconnec[posadded]=1\n", - "ADD_ATOM: Chosen Metal index None. H is added at site 0\n", - "\tconnectivity verified for atom 0 with label Cl\n", - "LIGAND.Get_denticity: final connectivity is 1\n", - "LIGAND.Get_denticity: checking connectivity of ligand Cl\n", - "LIGAND.Get_denticity: initial connectivity is 1\n", - "Entering COORD_CORR_NONHAPTIC:\n", - "\tmconnec=1 in atom idx=0, label=Cl\n", - "\tevaluating coordination with metal \n", - "------------- Cell2mol METAL Object --------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Sub-Type = metal\n", - " Label = Hg\n", - " Atomic Number = 80\n", - " Index in Molecule = 0\n", - " Metal Adjacency (mconnec) = 4\n", - " Regular Adjacencies (connec) = 4\n", - "----------------------------------------------------\n", - "\n", - "ADD_ATOM: Metalist length 1\n", - "ADD_ATOM: Ligand Atoms 1\n", - "ADD_ATOM: site= 0\n", - "ADD_ATOM: evaluating apos=array([ 3.28963833, -1.15647939, 1.81087206]) and tgt.coord=[3.3561141261371934, -1.7460605666877584, 4.082337851369931]\n", - "ADD_ATOM: received tmpconnec[posadded]=1\n", - "ADD_ATOM: Chosen Metal index None. H is added at site 0\n", - "\tconnectivity verified for atom 0 with label Cl\n", - "LIGAND.Get_denticity: final connectivity is 1\n", - "LIGAND.Get_denticity: checking connectivity of ligand Cl\n", - "LIGAND.Get_denticity: initial connectivity is 1\n", - "Entering COORD_CORR_NONHAPTIC:\n", - "\tmconnec=2 in atom idx=0, label=Cl\n", - "\tevaluating coordination with metal \n", - "------------- Cell2mol METAL Object --------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Sub-Type = metal\n", - " Label = Hg\n", - " Atomic Number = 80\n", - " Index in Molecule = 0\n", - " Metal Adjacency (mconnec) = 4\n", - " Regular Adjacencies (connec) = 4\n", - "----------------------------------------------------\n", - "\n", - "ADD_ATOM: Metalist length 1\n", - "ADD_ATOM: Ligand Atoms 1\n", - "ADD_ATOM: site= 0\n", - "ADD_ATOM: evaluating apos=array([ 4.86849283, -0.56165638, 5.74329969]) and tgt.coord=[3.3561141261371934, -1.7460605666877584, 4.082337851369931]\n", - "ADD_ATOM: received tmpconnec[posadded]=1\n", - "ADD_ATOM: Chosen Metal index None. H is added at site 0\n", - "\tconnectivity verified for atom 0 with label Cl\n", - "\tevaluating coordination with metal \n", - "------------- Cell2mol METAL Object --------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Sub-Type = metal\n", - " Label = Hg\n", - " Atomic Number = 80\n", - " Index in Molecule = 4\n", - " Metal Adjacency (mconnec) = 4\n", - " Regular Adjacencies (connec) = 4\n", - "----------------------------------------------------\n", - "\n", - "ADD_ATOM: Metalist length 1\n", - "ADD_ATOM: Ligand Atoms 1\n", - "ADD_ATOM: site= 0\n", - "ADD_ATOM: evaluating apos=array([ 4.86849283, -0.56165638, 5.74329969]) and tgt.coord=[3.3561141261371934, -1.7460605666877584, 4.082337851369931]\n", - "ADD_ATOM: received tmpconnec[posadded]=1\n", - "ADD_ATOM: Chosen Metal index None. H is added at site 0\n", - "\tconnectivity verified for atom 0 with label Cl\n", - "LIGAND.Get_denticity: final connectivity is 2\n" - ] - } - ], - "source": [ - "print(f\"INITIATING cell object from input\") \n", - "\n", - "# Reads reference molecules from info file, as well as labels and coordinates\n", - "labels, pos, ref_labels, ref_fracs, cellvec, cellparam = readinfo(infopath)\n", - "# Initiates cell\n", - "newcell = cell(name, labels, pos, cellvec, cellparam)\n", - "# # Loads the reference molecules and checks_missing_H\n", - "# # TODO : reconstruct the unit cell without using reference molecules\n", - "# # TODO : reconstruct the unit cell using (only reconstruction of) reference molecules and Space group\n", - "newcell.get_reference_molecules(ref_labels, ref_fracs, debug=debug) \n", - "newcell.assess_errors()\n", - "# newcell.save(ref_cell_fname)\n", - "# ######################\n", - "# ### CALLS CELL2MOL ###\n", - "# ######################\n", - "# print(f\"ENTERING cell2mol with debug={debug}\")\n", - "# cell = cell2mol(newcell, reconstruction=True, charge_assignment=True, spin_assignment=True, debug=debug)\n", - "# cell.assess_errors()\n", - "# cell.save(cell_fname)" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "id": "8e7b1211", - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "##################\n", - "Checking Missing H\n", - "##################\n", - "Not a Single Molecule has Missing H atoms (apparently)\n" - ] - }, - { - "data": { - "text/plain": [ - "False" - ] - }, - "execution_count": 7, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "newcell.check_missing_H(debug=debug) " - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "id": "93fd5a67", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "CLASSIFY_FRAGMENTS. 12 Blocks sorted as (Molec, Frag, H): 0 8 4\n", - "\n", - "##############################################\n", - "FRAG_RECONSTRUCT. 8 molecules submitted to SEQUENTIAL with Heavy\n", - "##############################################\n", - "FRAG_RECONSTRUCT. 1 molecules and 2 fragments out of SEQUENTIAL with Heavy\n", - "FRAG_RECONSTRUCT. 6 molecules submitted to sequential with All\n", - "FINISHED succesfully\n", - "FRAG_RECONSTRUCT. No remaining Molecules after Hydrogen reconstruction\n", - "MOLECULE.SPLIT COMPLEX: labels=['Hg', 'Cl', 'Cl', 'Cl', 'Hg', 'Cl', 'Cl', 'Cl']\n", - "MOLECULE.SPLIT COMPLEX: metal_idx=[0, 4]\n", - "MOLECULE.SPLIT COMPLEX: rest_idx=[1, 2, 3, 5, 6, 7]\n", - "SPLIT COMPLEX: rest labels: ['Cl', 'Cl', 'Cl', 'Cl', 'Cl', 'Cl']\n", - "SPLIT COMPLEX: rest coord: [[1.3562608, -0.0638992, 5.1197601], [2.9351153, 0.5309238, 9.0521877], [3.4671199, 3.2061439, 5.7530764], [4.8684929, -0.5616564000000004, 5.7432997], [3.2896384000000003, -1.1564794000000003, 1.8108721], [2.7576338000000002, -3.8316994000000006, 5.1099833]]\n", - "SPLIT COMPLEX: rest indices: [1, 2, 3, 5, 6, 7]\n", - "SPLIT COMPLEX: rest radii: [1.02, 1.02, 1.02, 1.02, 1.02, 1.02]\n", - "SPLIT COMPLEX: splitting species with 6 atoms in block\n", - "labels=['Cl', 'Cl', 'Cl', 'Cl', 'Cl', 'Cl'] 6\n", - "indices=None\n", - "SPLIT COMPLEX: received 6 blocks\n", - "PREPARING BLOCK: [5]\n", - "CREATING LIGAND: Cl\n", - "PREPARING BLOCK: [4]\n", - "CREATING LIGAND: Cl\n", - "PREPARING BLOCK: [3]\n", - "CREATING LIGAND: Cl\n", - "PREPARING BLOCK: [2]\n", - "CREATING LIGAND: Cl\n", - "PREPARING BLOCK: [1]\n", - "CREATING LIGAND: Cl\n", - "PREPARING BLOCK: [0]\n", - "CREATING LIGAND: Cl\n", - "MOLECULE.SPLIT COMPLEX: labels=['C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'Hg', 'Cl', 'Fe', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'H', 'H', 'H']\n", - "MOLECULE.SPLIT COMPLEX: metal_idx=[9, 11]\n", - "MOLECULE.SPLIT COMPLEX: rest_idx=[0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21]\n", - "SPLIT COMPLEX: rest labels: ['C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'Cl', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'H', 'H', 'H']\n", - "SPLIT COMPLEX: rest coord: [[6.1022008, 2.0607668, 3.3610307], [5.5104028, 3.0110239, 2.5441286], [5.2421926, 3.8561355, 2.8254818], [5.3684013, 2.5137605, 1.2025407], [5.001188, 2.9553237, 0.4714568], [5.8997816, 1.2250349, 1.2351299], [5.9443431, 0.6468013, 0.5073049], [6.3650269, 0.9240044, 2.5495601], [6.7663014, 0.1315989, 2.8243955], [6.985123, 2.3016164, 7.6030555], [8.4662071, 4.3093526, 1.5686258], [8.1312516, 5.1688089, 1.6978962], [8.4177716, 3.6384001, 0.3649988], [9.0069, 2.4157695, 0.5757422], [9.425084, 2.3344473, 1.9879399], [9.843130200000001, 1.6213751, 2.4050814], [9.061447600000001, 3.5520773, 2.5593369], [9.1963008, 3.805643, 3.4435899], [8.0561789, 3.9460315, -0.4334360000000004], [9.1306494, 1.7496592, -0.06517830000000124]]\n", - "SPLIT COMPLEX: rest indices: [0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21]\n", - "SPLIT COMPLEX: rest radii: [0.73, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 1.02, 0.73, 0.31, 0.73, 0.73, 0.73, 0.31, 0.73, 0.31, 0.31, 0.31]\n", - "SPLIT COMPLEX: splitting species with 20 atoms in block\n", - "labels=['C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'Cl', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'H', 'H', 'H'] 20\n", - "indices=None\n", - "SPLIT COMPLEX: received 3 blocks\n", - "PREPARING BLOCK: [0, 1, 2, 3, 4, 5, 6, 7, 8]\n", - "CREATING LIGAND: H4-C5\n", - "PREPARING BLOCK: [10, 11, 12, 13, 14, 15, 16, 17, 18, 19]\n", - "CREATING LIGAND: H5-C5\n", - "PREPARING BLOCK: [9]\n", - "CREATING LIGAND: Cl\n", - "MOLECULE.SPLIT COMPLEX: labels=['C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'Hg', 'Cl', 'Fe', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'H', 'H', 'H']\n", - "MOLECULE.SPLIT COMPLEX: metal_idx=[9, 11]\n", - "MOLECULE.SPLIT COMPLEX: rest_idx=[0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21]\n", - "SPLIT COMPLEX: rest labels: ['C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'Cl', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'H', 'H', 'H']\n", - "SPLIT COMPLEX: rest coord: [[-2.7651809, 6.6251757, 7.5020291], [-2.1733829, 5.6749186, 8.3189312], [-1.9051726, 4.8298069, 8.0375779], [-2.0313814, 6.1721819, 9.660519], [-1.6641681, 5.7306187, 10.391603], [-2.5627616, 7.4609076, 9.6279299], [-2.6073232, 8.0391411, 10.3557549], [-3.028007, 7.7619381, 8.3134996], [-3.4292814, 8.5543436, 8.0386642], [-3.6481031, 6.3843261, 3.2600042], [-5.1291871, 4.3765899, 9.2944339], [-4.7942317, 3.5171335, 9.1651635], [-5.0807517, 5.0475424, 10.4980609], [-5.66988, 6.2701729, 10.2873176], [-6.088064, 6.3514951, 8.8751198], [-6.5061102, 7.0645673, 8.4579783], [-5.7244276, 5.1338652, 8.3037229], [-5.8592809, 4.8802994, 7.4194698], [-5.7936295, 6.9362832, 10.928238100000002], [-4.7191589, 4.7399109, 11.2964958]]\n", - "SPLIT COMPLEX: rest indices: [0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21]\n", - "SPLIT COMPLEX: rest radii: [0.73, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 1.02, 0.73, 0.31, 0.73, 0.73, 0.73, 0.31, 0.73, 0.31, 0.31, 0.31]\n", - "SPLIT COMPLEX: splitting species with 20 atoms in block\n", - "labels=['C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'Cl', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'H', 'H', 'H'] 20\n", - "indices=None\n", - "SPLIT COMPLEX: received 3 blocks\n", - "PREPARING BLOCK: [0, 1, 2, 3, 4, 5, 6, 7, 8]\n", - "CREATING LIGAND: H4-C5\n", - "PREPARING BLOCK: [10, 11, 12, 13, 14, 15, 16, 17, 18, 19]\n", - "CREATING LIGAND: H5-C5\n", - "PREPARING BLOCK: [9]\n", - "CREATING LIGAND: Cl\n" - ] - }, - { - "data": { - "text/plain": [ - "[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 8\n", - " Formula = Cl6-Hg2\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.reconstruct\n", - " Number of Ligands = 6\n", - " Number of Metals = 2\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 22\n", - " Formula = H9-C10-Cl-Fe-Hg\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.reconstruct\n", - " Number of Ligands = 3\n", - " Number of Metals = 2\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 22\n", - " Formula = H9-C10-Cl-Fe-Hg\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.reconstruct\n", - " Number of Ligands = 3\n", - " Number of Metals = 2\n", - " ---------------------------------------------------]" - ] - }, - "execution_count": 8, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "newcell.reconstruct(debug=debug) " - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "id": "1a4d5062", - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "data": { - "text/plain": [ - "False" - ] - }, - "execution_count": 9, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "newcell.error_reconstruction" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "id": "5eb92088", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "False" - ] - }, - "execution_count": 10, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "newcell.is_fragmented" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "id": "f10195bc", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Molecule 0 formula=Cl6-Hg2\n", - "New ligand found with: formula Cl added in position 0\n", - "COMPARE_SPECIES. Comparing:\n", - "------------- Cell2mol LIGAND Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = ligand\n", - " Number of Atoms = 1\n", - " Formula = Cl\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_complex\n", - "---------------------------------------------------\n", - "\n", - "------------- Cell2mol LIGAND Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = ligand\n", - " Number of Atoms = 1\n", - " Formula = Cl\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_complex\n", - "---------------------------------------------------\n", - "\n", - "ligand 1 is the same with 0 in typelist\n", - "COMPARE_SPECIES. Comparing:\n", - "------------- Cell2mol LIGAND Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = ligand\n", - " Number of Atoms = 1\n", - " Formula = Cl\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_complex\n", - "---------------------------------------------------\n", - "\n", - "------------- Cell2mol LIGAND Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = ligand\n", - " Number of Atoms = 1\n", - " Formula = Cl\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_complex\n", - "---------------------------------------------------\n", - "\n", - "ligand 2 is the same with 0 in typelist\n", - "COMPARE_SPECIES. Comparing:\n", - "------------- Cell2mol LIGAND Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = ligand\n", - " Number of Atoms = 1\n", - " Formula = Cl\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_complex\n", - "---------------------------------------------------\n", - "\n", - "------------- Cell2mol LIGAND Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = ligand\n", - " Number of Atoms = 1\n", - " Formula = Cl\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_complex\n", - "---------------------------------------------------\n", - "\n", - "ligand 3 is the same with 0 in typelist\n", - "COMPARE_SPECIES. Comparing:\n", - "------------- Cell2mol LIGAND Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = ligand\n", - " Number of Atoms = 1\n", - " Formula = Cl\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_complex\n", - "---------------------------------------------------\n", - "\n", - "------------- Cell2mol LIGAND Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = ligand\n", - " Number of Atoms = 1\n", - " Formula = Cl\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_complex\n", - "---------------------------------------------------\n", - "\n", - "ligand 4 is the same with 0 in typelist\n", - "COMPARE_SPECIES. Comparing:\n", - "------------- Cell2mol LIGAND Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = ligand\n", - " Number of Atoms = 1\n", - " Formula = Cl\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_complex\n", - "---------------------------------------------------\n", - "\n", - "------------- Cell2mol LIGAND Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = ligand\n", - " Number of Atoms = 1\n", - " Formula = Cl\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_complex\n", - "---------------------------------------------------\n", - "\n", - "ligand 5 is the same with 0 in typelist\n", - "New Metal Center found with: labels Hg and added in position 1\n", - "COMPARE_METALS. Comparing:\n", - "Hg\n", - "Hg\n", - "Metal 1 is the same with 0 in typelist\n", - "Molecule 1 formula=H9-C10-Cl-Fe-Hg\n", - "COMPARE_SPECIES. Comparing:\n", - "------------- Cell2mol LIGAND Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = ligand\n", - " Number of Atoms = 9\n", - " Formula = H4-C5\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_complex\n", - "---------------------------------------------------\n", - "\n", - "------------- Cell2mol LIGAND Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = ligand\n", - " Number of Atoms = 1\n", - " Formula = Cl\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_complex\n", - "---------------------------------------------------\n", - "\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "New ligand found with: formula H4-C5 added in position 2\n", - "COMPARE_SPECIES. Comparing:\n", - "------------- Cell2mol LIGAND Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = ligand\n", - " Number of Atoms = 10\n", - " Formula = H5-C5\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_complex\n", - "---------------------------------------------------\n", - "\n", - "------------- Cell2mol LIGAND Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = ligand\n", - " Number of Atoms = 1\n", - " Formula = Cl\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_complex\n", - "---------------------------------------------------\n", - "\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "------------- Cell2mol LIGAND Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = ligand\n", - " Number of Atoms = 10\n", - " Formula = H5-C5\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_complex\n", - "---------------------------------------------------\n", - "\n", - "------------- Cell2mol LIGAND Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = ligand\n", - " Number of Atoms = 9\n", - " Formula = H4-C5\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_complex\n", - "---------------------------------------------------\n", - "\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "New ligand found with: formula H5-C5 added in position 3\n", - "COMPARE_SPECIES. Comparing:\n", - "------------- Cell2mol LIGAND Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = ligand\n", - " Number of Atoms = 1\n", - " Formula = Cl\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_complex\n", - "---------------------------------------------------\n", - "\n", - "------------- Cell2mol LIGAND Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = ligand\n", - " Number of Atoms = 1\n", - " Formula = Cl\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_complex\n", - "---------------------------------------------------\n", - "\n", - "ligand 2 is the same with 0 in typelist\n", - "COMPARE_SPECIES. Comparing:\n", - "------------- Cell2mol LIGAND Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = ligand\n", - " Number of Atoms = 1\n", - " Formula = Cl\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_complex\n", - "---------------------------------------------------\n", - "\n", - "------------- Cell2mol LIGAND Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = ligand\n", - " Number of Atoms = 9\n", - " Formula = H4-C5\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_complex\n", - "---------------------------------------------------\n", - "\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "------------- Cell2mol LIGAND Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = ligand\n", - " Number of Atoms = 1\n", - " Formula = Cl\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_complex\n", - "---------------------------------------------------\n", - "\n", - "------------- Cell2mol LIGAND Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = ligand\n", - " Number of Atoms = 10\n", - " Formula = H5-C5\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_complex\n", - "---------------------------------------------------\n", - "\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_METALS. Comparing:\n", - "Hg\n", - "Hg\n", - "COMPARE_METALS. Different coordination sphere\n", - "C-Cl\n", - "Cl4\n", - "New Metal Center found with: labels Hg and added in position 4\n", - "COMPARE_METALS. Comparing:\n", - "Fe\n", - "Hg\n", - "COMPARE_METALS. Different label\n", - "COMPARE_METALS. Comparing:\n", - "Fe\n", - "Hg\n", - "COMPARE_METALS. Different label\n", - "New Metal Center found with: labels Fe and added in position 5\n", - "Molecule 2 formula=H9-C10-Cl-Fe-Hg\n", - "COMPARE_SPECIES. Comparing:\n", - "------------- Cell2mol LIGAND Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = ligand\n", - " Number of Atoms = 9\n", - " Formula = H4-C5\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_complex\n", - "---------------------------------------------------\n", - "\n", - "------------- Cell2mol LIGAND Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = ligand\n", - " Number of Atoms = 1\n", - " Formula = Cl\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_complex\n", - "---------------------------------------------------\n", - "\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "------------- Cell2mol LIGAND Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = ligand\n", - " Number of Atoms = 9\n", - " Formula = H4-C5\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_complex\n", - "---------------------------------------------------\n", - "\n", - "------------- Cell2mol LIGAND Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = ligand\n", - " Number of Atoms = 9\n", - " Formula = H4-C5\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_complex\n", - "---------------------------------------------------\n", - "\n", - "ligand 0 is the same with 1 in typelist\n", - "COMPARE_SPECIES. Comparing:\n", - "------------- Cell2mol LIGAND Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = ligand\n", - " Number of Atoms = 9\n", - " Formula = H4-C5\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_complex\n", - "---------------------------------------------------\n", - "\n", - "------------- Cell2mol LIGAND Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = ligand\n", - " Number of Atoms = 10\n", - " Formula = H5-C5\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_complex\n", - "---------------------------------------------------\n", - "\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "------------- Cell2mol LIGAND Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = ligand\n", - " Number of Atoms = 10\n", - " Formula = H5-C5\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_complex\n", - "---------------------------------------------------\n", - "\n", - "------------- Cell2mol LIGAND Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = ligand\n", - " Number of Atoms = 1\n", - " Formula = Cl\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_complex\n", - "---------------------------------------------------\n", - "\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "------------- Cell2mol LIGAND Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = ligand\n", - " Number of Atoms = 10\n", - " Formula = H5-C5\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_complex\n", - "---------------------------------------------------\n", - "\n", - "------------- Cell2mol LIGAND Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = ligand\n", - " Number of Atoms = 9\n", - " Formula = H4-C5\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_complex\n", - "---------------------------------------------------\n", - "\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "------------- Cell2mol LIGAND Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = ligand\n", - " Number of Atoms = 10\n", - " Formula = H5-C5\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_complex\n", - "---------------------------------------------------\n", - "\n", - "------------- Cell2mol LIGAND Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = ligand\n", - " Number of Atoms = 10\n", - " Formula = H5-C5\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_complex\n", - "---------------------------------------------------\n", - "\n", - "ligand 1 is the same with 2 in typelist\n", - "COMPARE_SPECIES. Comparing:\n", - "------------- Cell2mol LIGAND Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = ligand\n", - " Number of Atoms = 1\n", - " Formula = Cl\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_complex\n", - "---------------------------------------------------\n", - "\n", - "------------- Cell2mol LIGAND Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = ligand\n", - " Number of Atoms = 1\n", - " Formula = Cl\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_complex\n", - "---------------------------------------------------\n", - "\n", - "ligand 2 is the same with 0 in typelist\n", - "COMPARE_SPECIES. Comparing:\n", - "------------- Cell2mol LIGAND Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = ligand\n", - " Number of Atoms = 1\n", - " Formula = Cl\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_complex\n", - "---------------------------------------------------\n", - "\n", - "------------- Cell2mol LIGAND Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = ligand\n", - " Number of Atoms = 9\n", - " Formula = H4-C5\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_complex\n", - "---------------------------------------------------\n", - "\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "------------- Cell2mol LIGAND Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = ligand\n", - " Number of Atoms = 1\n", - " Formula = Cl\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_complex\n", - "---------------------------------------------------\n", - "\n", - "------------- Cell2mol LIGAND Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = ligand\n", - " Number of Atoms = 10\n", - " Formula = H5-C5\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_complex\n", - "---------------------------------------------------\n", - "\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_METALS. Comparing:\n", - "Hg\n", - "Hg\n", - "COMPARE_METALS. Different coordination sphere\n", - "C-Cl\n", - "Cl4\n", - "COMPARE_METALS. Comparing:\n", - "Hg\n", - "Hg\n", - "Metal 0 is the same with 1 in typelist\n", - "COMPARE_METALS. Comparing:\n", - "Hg\n", - "Fe\n", - "COMPARE_METALS. Different label\n", - "COMPARE_METALS. Comparing:\n", - "Fe\n", - "Hg\n", - "COMPARE_METALS. Different label\n", - "COMPARE_METALS. Comparing:\n", - "Fe\n", - "Hg\n", - "COMPARE_METALS. Different label\n", - "COMPARE_METALS. Comparing:\n", - "Fe\n", - "Fe\n", - "Metal 1 is the same with 2 in typelist\n" - ] - }, - { - "data": { - "text/plain": [ - "[------------- Cell2mol LIGAND Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = ligand\n", - " Number of Atoms = 1\n", - " Formula = Cl\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_complex\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol METAL Object --------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Sub-Type = metal\n", - " Label = Hg\n", - " Atomic Number = 80\n", - " Index in Molecule = 0\n", - " Metal Adjacency (mconnec) = 4\n", - " Regular Adjacencies (connec) = 4\n", - " Coordination Sphere Formula = Cl4\n", - " ----------------------------------------------------,\n", - " ------------- Cell2mol LIGAND Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = ligand\n", - " Number of Atoms = 9\n", - " Formula = H4-C5\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_complex\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol LIGAND Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = ligand\n", - " Number of Atoms = 10\n", - " Formula = H5-C5\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_complex\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol METAL Object --------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Sub-Type = metal\n", - " Label = Hg\n", - " Atomic Number = 80\n", - " Index in Molecule = 9\n", - " Metal Adjacency (mconnec) = 2\n", - " Regular Adjacencies (connec) = 2\n", - " Coordination Sphere Formula = C-Cl\n", - " ----------------------------------------------------,\n", - " ------------- Cell2mol METAL Object --------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Sub-Type = metal\n", - " Label = Fe\n", - " Atomic Number = 26\n", - " Index in Molecule = 11\n", - " Metal Adjacency (mconnec) = 10\n", - " Regular Adjacencies (connec) = 10\n", - " Coordination Sphere Formula = C10\n", - " ----------------------------------------------------]" - ] - }, - "execution_count": 11, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "newcell.get_unique_species(debug=debug)" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "id": "25e6cdaa", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "LIGAND.SPLIT_LIGAND: self.indices=[0]\n", - "LIGAND.SPLIT_LIGAND: conn_idx=[0]\n", - "LIGAND.SPLIT_LIGAND: conn_labels=['Cl']\n", - "LIGAND.SPLIT_LIGAND: conn_coord=[[2.7576338000000002, -3.8316994000000006, 5.1099833]]\n", - "LIGAND.SPLIT_LIGAND: conn_radii=[1.02]\n", - "blocklist=[[0]]\n", - "LIGAND.SPLIT_LIGAND: block=[0]\n", - "ADD_ATOM: Metalist length 1\n", - "ADD_ATOM: Ligand Atoms 1\n", - "ADD_ATOM: site= 0\n", - "ADD_ATOM: evaluating apos=array([ 2.7576338, -3.8316994, 5.1099833]) and tgt.coord=[3.3561142, -1.7460605999999999, 4.0823379]\n", - "ADD_ATOM: received tmpconnec[posadded]=1\n", - "ADD_ATOM: Chosen Metal index None. H is added at site 0\n", - "protonation_states=[------------- Cell2mol Protonation ----------------\n", - " Status = True\n", - " Labels = ['Cl']\n", - " Type = Local\n", - " Atoms added in positions = [0]\n", - " Atoms blocked (no atoms added) = [1]\n", - "---------------------------------------------------\n", - "]\n", - "smiles='[Cl-]'\n", - "smiles='[Cl-]'\n", - "smiles='[Cl-]'\n", - "smiles='[Cl-]'\n", - "smiles='[Cl-]'\n", - "Cl\n", - "spec.protonation_states=[------------- Cell2mol Protonation ----------------\n", - " Status = True\n", - " Labels = ['Cl']\n", - " Type = Local\n", - " Atoms added in positions = [0]\n", - " Atoms blocked (no atoms added) = [1]\n", - "---------------------------------------------------\n", - "]\n", - "\n", - "LIGAND.SPLIT_LIGAND: self.indices=[0]\n", - "LIGAND.SPLIT_LIGAND: conn_idx=[0]\n", - "LIGAND.SPLIT_LIGAND: conn_labels=['Cl']\n", - "LIGAND.SPLIT_LIGAND: conn_coord=[[3.2896384000000003, -1.1564794000000003, 1.8108721]]\n", - "LIGAND.SPLIT_LIGAND: conn_radii=[1.02]\n", - "blocklist=[[0]]\n", - "LIGAND.SPLIT_LIGAND: block=[0]\n", - "LIGAND.SPLIT_LIGAND: self.indices=[0]\n", - "LIGAND.SPLIT_LIGAND: conn_idx=[0]\n", - "LIGAND.SPLIT_LIGAND: conn_labels=['Cl']\n", - "LIGAND.SPLIT_LIGAND: conn_coord=[[4.8684929, -0.5616564000000004, 5.7432997]]\n", - "LIGAND.SPLIT_LIGAND: conn_radii=[1.02]\n", - "blocklist=[[0]]\n", - "LIGAND.SPLIT_LIGAND: block=[0]\n", - "LIGAND.SPLIT_LIGAND: self.indices=[0]\n", - "LIGAND.SPLIT_LIGAND: conn_idx=[0]\n", - "LIGAND.SPLIT_LIGAND: conn_labels=['Cl']\n", - "LIGAND.SPLIT_LIGAND: conn_coord=[[3.4671199, 3.2061439, 5.7530764]]\n", - "LIGAND.SPLIT_LIGAND: conn_radii=[1.02]\n", - "blocklist=[[0]]\n", - "LIGAND.SPLIT_LIGAND: block=[0]\n", - "LIGAND.SPLIT_LIGAND: self.indices=[0]\n", - "LIGAND.SPLIT_LIGAND: conn_idx=[0]\n", - "LIGAND.SPLIT_LIGAND: conn_labels=['Cl']\n", - "LIGAND.SPLIT_LIGAND: conn_coord=[[2.9351153, 0.5309238, 9.0521877]]\n", - "LIGAND.SPLIT_LIGAND: conn_radii=[1.02]\n", - "blocklist=[[0]]\n", - "LIGAND.SPLIT_LIGAND: block=[0]\n", - "LIGAND.SPLIT_LIGAND: self.indices=[0]\n", - "LIGAND.SPLIT_LIGAND: conn_idx=[0]\n", - "LIGAND.SPLIT_LIGAND: conn_labels=['Cl']\n", - "LIGAND.SPLIT_LIGAND: conn_coord=[[1.3562608, -0.0638992, 5.1197601]]\n", - "LIGAND.SPLIT_LIGAND: conn_radii=[1.02]\n", - "blocklist=[[0]]\n", - "LIGAND.SPLIT_LIGAND: block=[0]\n", - "\n", - "LIGAND.SPLIT_LIGAND: self.indices=[0, 1, 2, 3, 4, 5, 6, 7, 8]\n", - "LIGAND.SPLIT_LIGAND: conn_idx=[0, 1, 3, 5, 7]\n", - "LIGAND.SPLIT_LIGAND: conn_labels=['C', 'C', 'C', 'C', 'C']\n", - "LIGAND.SPLIT_LIGAND: conn_coord=[[6.1022008, 2.0607668, 3.3610307], [5.5104028, 3.0110239, 2.5441286], [5.3684013, 2.5137605, 1.2025407], [5.8997816, 1.2250349, 1.2351299], [6.3650269, 0.9240044, 2.5495601]]\n", - "LIGAND.SPLIT_LIGAND: conn_radii=[0.73, 0.73, 0.73, 0.73, 0.73]\n", - "blocklist=[[0, 1, 2, 3, 4]]\n", - "LIGAND.SPLIT_LIGAND: block=[0, 1, 2, 3, 4]\n", - "\tAtom 0 : C \tMetal : Hg \tdistance : 2.042 \tthres : 2.501\n", - "\tAtom 1 : C \tMetal : Fe \tdistance : 2.051 \tthres : 2.501\n", - "\tAtom 2 : C \tMetal : Fe \tdistance : 2.081 \tthres : 2.501\n", - "\tAtom 3 : C \tMetal : Fe \tdistance : 2.068 \tthres : 2.501\n", - "\tAtom 4 : C \tMetal : Fe \tdistance : 2.077 \tthres : 2.501\n", - "ratio_list=[0.816, 0.82, 0.832, 0.827, 0.83] std_dev=0.006\n", - "protonation_states=[------------- Cell2mol Protonation ----------------\n", - " Status = True\n", - " Labels = ['C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'H']\n", - " Type = Local\n", - " Atoms added in positions = [0 1 0 0 0 0 0 0 0]\n", - " Atoms blocked (no atoms added) = [0 1 0 1 0 1 0 1 0]\n", - "---------------------------------------------------\n", - "]\n", - "smiles='[H][C+]1CC([H])([H])[C+]([H])[C-]1[H]'\n", - "smiles='[H]C1=[C-]C([H])([H])C([H])=C1[H]'\n", - "smiles='[H][C+]1[C+]([H])C([H])([H])C[C-]1[H]'\n", - "smiles='[H][C+]1CC([H])([H])[C-]([H])[C-]1[H]'\n", - "smiles='[H][C+]1CC([H])([H])[C+]([H])[C+]1[H]'\n", - "H4-C5\n", - "spec.protonation_states=[------------- Cell2mol Protonation ----------------\n", - " Status = True\n", - " Labels = ['C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'H']\n", - " Type = Local\n", - " Atoms added in positions = [0 1 0 0 0 0 0 0 0]\n", - " Atoms blocked (no atoms added) = [0 1 0 1 0 1 0 1 0]\n", - "---------------------------------------------------\n", - "]\n", - "\n", - "LIGAND.SPLIT_LIGAND: self.indices=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]\n", - "LIGAND.SPLIT_LIGAND: conn_idx=[0, 2, 3, 4, 6]\n", - "LIGAND.SPLIT_LIGAND: conn_labels=['C', 'C', 'C', 'C', 'C']\n", - "LIGAND.SPLIT_LIGAND: conn_coord=[[8.4662071, 4.3093526, 1.5686258], [8.4177716, 3.6384001, 0.3649988], [9.0069, 2.4157695, 0.5757422], [9.425084, 2.3344473, 1.9879399], [9.061447600000001, 3.5520773, 2.5593369]]\n", - "LIGAND.SPLIT_LIGAND: conn_radii=[0.73, 0.73, 0.73, 0.73, 0.73]\n", - "blocklist=[[0, 1, 2, 3, 4]]\n", - "LIGAND.SPLIT_LIGAND: block=[0, 1, 2, 3, 4]\n", - "\tAtom 0 : C \tMetal : Fe \tdistance : 2.065 \tthres : 2.501\n", - "\tAtom 1 : C \tMetal : Fe \tdistance : 2.062 \tthres : 2.501\n", - "\tAtom 2 : C \tMetal : Fe \tdistance : 2.045 \tthres : 2.501\n", - "\tAtom 3 : C \tMetal : Fe \tdistance : 2.084 \tthres : 2.501\n", - "\tAtom 4 : C \tMetal : Fe \tdistance : 2.104 \tthres : 2.501\n", - "ratio_list=[0.826, 0.824, 0.818, 0.833, 0.841] std_dev=0.008\n", - "protonation_states=[------------- Cell2mol Protonation ----------------\n", - " Status = True\n", - " Labels = ['C', 'H', 'C', 'C', 'C', 'H', 'C', 'H', 'H', 'H', 'H']\n", - " Type = Local\n", - " Atoms added in positions = [1 0 0 0 0 0 0 0 0 0]\n", - " Atoms blocked (no atoms added) = [1 0 1 1 1 0 1 0 0 0]\n", - "---------------------------------------------------\n", - "]\n", - "smiles='[H]C1=C([H])C([H])([H])C([H])=C1[H]'\n", - "smiles='[H][C+]1[C-]([H])[C-]([H])C([H])([H])[C-]1[H]'\n", - "smiles='[H][C+]1[C-]([H])[C+]([H])C([H])([H])[C-]1[H]'\n", - "smiles='[H][C+]1[C-]([H])[C-]([H])[C-]([H])C1([H])[H]'\n", - "smiles='[H][C+]1[C+]([H])C([H])([H])[C+]([H])[C-]1[H]'\n", - "H5-C5\n", - "spec.protonation_states=[------------- Cell2mol Protonation ----------------\n", - " Status = True\n", - " Labels = ['C', 'H', 'C', 'C', 'C', 'H', 'C', 'H', 'H', 'H', 'H']\n", - " Type = Local\n", - " Atoms added in positions = [1 0 0 0 0 0 0 0 0 0]\n", - " Atoms blocked (no atoms added) = [1 0 1 1 1 0 1 0 0 0]\n", - "---------------------------------------------------\n", - "]\n", - "\n", - "LIGAND.SPLIT_LIGAND: self.indices=[0]\n", - "LIGAND.SPLIT_LIGAND: conn_idx=[0]\n", - "LIGAND.SPLIT_LIGAND: conn_labels=['Cl']\n", - "LIGAND.SPLIT_LIGAND: conn_coord=[[6.985123, 2.3016164, 7.6030555]]\n", - "LIGAND.SPLIT_LIGAND: conn_radii=[1.02]\n", - "blocklist=[[0]]\n", - "LIGAND.SPLIT_LIGAND: block=[0]\n", - "\n", - "\n", - "[[-1], [2], [-2], [-1], [2], [2, 3, 0]]\n" - ] - } - ], - "source": [ - "selected_cs = []\n", - "for idx, spec in enumerate(newcell.unique_species):\n", - "# print(\"doing\", spec)\n", - " if spec.subtype != \"metal\":\n", - " spec.get_protonation_states()\n", - " spec.get_possible_cs()\n", - " print(spec.formula)\n", - " selected_cs.append(list([cs.corr_total_charge for cs in spec.possible_cs]))\n", - " print(f\"{spec.protonation_states=}\")\n", - "# for prot in spec.protonation_states :\n", - "# for sub_spec, sub_prot in zip(spec.coord, prot.coords):\n", - "# print(sub_spec, sub_prot, (sub_spec == sub_prot)) \n", - "# print(\"==========\") \n", - "# for cs in spec.possible_cs :\n", - "# for sub_spec, sub_cs_prot in zip(spec.coord, cs.protonation.coords):\n", - "# print(sub_spec, sub_cs_prot, (sub_spec == sub_cs_prot)) \n", - " \n", - "# print(\"==========\") \n", - "# for prot, cs in zip(spec.protonation_states, spec.possible_cs) :\n", - "# for sub_prot, sub_cs_prot in zip(prot.coords, cs.protonation.coords):\n", - "# print(sub_prot, sub_cs_prot, (sub_prot == sub_cs_prot)) \n", - " else :\n", - " spec.get_possible_cs()\n", - " selected_cs.append(spec.possible_cs) \n", - " print(\"\")\n", - "print(selected_cs)" - ] - }, - { - "cell_type": "code", - "execution_count": 24, - "id": "2972ca26", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[[-1], [2], [-2], [-1], [2], [2, 3, 0]]" - ] - }, - "execution_count": 24, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "selected_cs" - ] - }, - { - "cell_type": "code", - "execution_count": 25, - "id": "2de46e92", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "BALANCE: iterlist [[-1], [2], [-2], [-1], [2], [2, 3, 0]]\n", - "BALANCE: unique_indices [0, 0, 0, 0, 0, 0, 1, 1, 2, 3, 0, 4, 5, 2, 3, 0, 4, 5]\n", - "BALANCE: tmpdistr [(-1, 2, -2, -1, 2, 2), (-1, 2, -2, -1, 2, 3), (-1, 2, -2, -1, 2, 0)]\n", - "BALANCE: alldistr added: [-1, -1, -1, -1, -1, -1, 2, 2, -2, -1, -1, 2, 2, -2, -1, -1, 2, 2]\n", - "d=[-1, -1, -1, -1, -1, -1, 2, 2, -2, -1, -1, 2, 2, -2, -1, -1, 2, 2]\n", - "BALANCE: alldistr added: [-1, -1, -1, -1, -1, -1, 2, 2, -2, -1, -1, 2, 3, -2, -1, -1, 2, 3]\n", - "d=[-1, -1, -1, -1, -1, -1, 2, 2, -2, -1, -1, 2, 2, -2, -1, -1, 2, 2]\n", - "d=[-1, -1, -1, -1, -1, -1, 2, 2, -2, -1, -1, 2, 3, -2, -1, -1, 2, 3]\n", - "BALANCE: alldistr added: [-1, -1, -1, -1, -1, -1, 2, 2, -2, -1, -1, 2, 0, -2, -1, -1, 2, 0]\n", - "d=[-1, -1, -1, -1, -1, -1, 2, 2, -2, -1, -1, 2, 2, -2, -1, -1, 2, 2]\n", - "d=[-1, -1, -1, -1, -1, -1, 2, 2, -2, -1, -1, 2, 3, -2, -1, -1, 2, 3]\n", - "d=[-1, -1, -1, -1, -1, -1, 2, 2, -2, -1, -1, 2, 0, -2, -1, -1, 2, 0]\n" - ] - } - ], - "source": [ - "final_charge_distribution = balance_charge(newcell.unique_indices, newcell.unique_species, debug=2)" - ] - }, - { - "cell_type": "code", - "execution_count": 26, - "id": "6e2772ef", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[[-1, -1, -1, -1, -1, -1, 2, 2, -2, -1, -1, 2, 3, -2, -1, -1, 2, 3]]" - ] - }, - "execution_count": 26, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "final_charge_distribution" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "id": "16272ddf", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Cl6-Hg2\n", - "0 0 Cl 0\n", - "0 1 Cl 0\n", - "0 2 Cl 0\n", - "0 3 Cl 0\n", - "0 4 Cl 0\n", - "0 5 Cl 0\n", - "0 0 Hg 1\n", - "0 1 Hg 1\n", - "\n", - "H9-C10-Cl-Fe-Hg\n", - "1 0 H4-C5 2\n", - "1 1 H5-C5 3\n", - "1 2 Cl 0\n", - "1 0 Hg 4\n", - "1 1 Fe 5\n", - "\n", - "H9-C10-Cl-Fe-Hg\n", - "2 0 H4-C5 2\n", - "2 1 H5-C5 3\n", - "2 2 Cl 0\n", - "2 0 Hg 4\n", - "2 1 Fe 5\n", - "\n", - "18\n" - ] - } - ], - "source": [ - "count = 0\n", - "for idx, mol in enumerate(newcell.moleclist):\n", - " print(mol.formula)\n", - " if mol.subtype == \"molecule\" and mol.iscomplex == False:\n", - " print(idx, mol.formula, mol.unique_index)\n", - " count += 1\n", - " elif mol.iscomplex :\n", - " for jdx, lig in enumerate(mol.ligands):\n", - " print(idx, jdx, lig.formula, lig.unique_index)\n", - " count += 1\n", - " for jdx, met in enumerate(mol.metals):\n", - " print(idx, jdx, met.label, met.unique_index)\n", - " count += 1\n", - " print(\"\")\n", - "print(count)" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "id": "2b6cb8e1", - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "data": { - "text/plain": [ - "[0, 0, 0, 0, 0, 0, 1, 1, 2, 3, 0, 4, 5, 2, 3, 0, 4, 5]" - ] - }, - "execution_count": 17, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "newcell.unique_indices" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "de57d56b", - "metadata": {}, - "outputs": [], - "source": [ - "help(reorder_protonation)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "c585c347", - "metadata": {}, - "outputs": [], - "source": [ - "def reorder_protonation (prot, mapping, debug: int=0):\n", - "# if debug > 0: print(\"PROTONATION.REORDER. labels:\", prot.labels)\n", - " if debug > 0: print(\"PROTONATION.REORDER. received map:\", mapping)\n", - "\n", - " ## for protonation states with added atoms, the reorder map will have fewer items. Correct it here \n", - " mapext = np.copy(mapping)\n", - " if prot.added_atoms > 0 and len(mapping) < len(prot.labels):\n", - " for ldx in range(0, prot.added_atoms):\n", - " mapext = np.append(mapext, len(mapping)+ldx)\n", - " if debug > 0: print(\"PROTONATION.REORDER. extended map:\", mapext)\n", - "\n", - " assert len(mapext) == len(prot.labels)\n", - " assert len(mapping) == len(prot.addedlist)\n", - " if len(mapping) > 0:\n", - " reordered_labels = [prot.labels[i] for i in mapext]\n", - " reordered_coords = [prot.coords[i] for i in mapext]\n", - " reordered_addedlist = [prot.addedlist[i] for i in mapping]\n", - " reordered_block = [prot.block[i] for i in mapping]\n", - " reordered_metal_electrons = [prot.metal_electrons[i] for i in mapping]\n", - " reordered_elemlist = [prot.elemlist[i] for i in mapping]\n", - "\n", - "\n", - " reordered_protonation = protonation(reordered_labels, reordered_coords, prot.cov_factor, prot.added_atoms,\n", - " reordered_addedlist, reordered_block, reordered_metal_electrons, reordered_elemlist, \n", - " tmpsmiles=prot.tmpsmiles, os=prot.os, typ=\"Reordered\", parent=prot.parent)\n", - " print(\"CREATED REORDERED PROTONATION\", reordered_protonation)\n", - "\n", - " return reordered_protonation" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "83c8124f", - "metadata": {}, - "outputs": [], - "source": [ - "for spec in newcell.unique_species:\n", - " if spec.subtype != \"metal\": \n", - " print(spec.formula)\n", - " for cs in spec.possible_cs:\n", - " print(cs.corr_atom_charges)\n", - " print(cs.corr_total_charge)\n", - " print(\"\")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "eb52309e", - "metadata": {}, - "outputs": [], - "source": [ - "for mol in newcell.moleclist:\n", - " if mol.subtype == \"molecule\" and mol.iscomplex == False: \n", - " print(mol.formula)\n", - "# mol.get_protonation_states(debug=0)\n", - "# mol.get_possible_cs(debug=0) \n", - "# for cs in mol.possible_cs:\n", - "# print(f\"{cs.corr_atom_charges=}\")\n", - "# print(f\"{cs.corr_total_charge=}\")\n", - " elif mol.iscomplex:\n", - "# for lig in mol.ligands:\n", - "# print(lig.formula)\n", - "# lig.get_protonation_states(debug=0)\n", - "# lig.get_possible_cs(debug=0) \n", - "# for cs_lig in lig.possible_cs:\n", - "# print(f\"{cs_lig.corr_atom_charges=}\")\n", - "# print(f\"{cs_lig.corr_total_charge=}\") \n", - " for met in mol.metals:\n", - " print(met.label)\n", - " met.get_possible_cs(debug=0) \n", - " print(met.possible_cs) \n", - " print(\"\")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "7df6e87f", - "metadata": {}, - "outputs": [], - "source": [ - "# for i, (u_idx, charge) in enumerate(zip(unique_indices, final_charge_distribution)):\n", - "# if unique_species[u_idx].subtype == \"molecule\" and unique_species[u_idx].iscomplex == False:\n", - "# print(i, unique_species[u_idx].formula, u_idx, charge)\n", - "# elif unique_species[u_idx].subtype == \"ligand\":\n", - "# print(i, unique_species[u_idx].formula, u_idx, charge)\n", - "# elif unique_species[u_idx].subtype == \"metal\":\n", - "# print(i, unique_species[u_idx].label, u_idx, charge)" - ] - }, - { - "cell_type": "code", - "execution_count": 28, - "id": "86a83037", - "metadata": {}, - "outputs": [], - "source": [ - "def set_charges_create_bonds (specie, unique_indices, final_charge_distribution):\n", - " \n", - " indices = [index for index, value in enumerate(unique_indices) if value == specie.unique_index]\n", - " target_charge = [final_charge_distribution[i] for i in indices][0] \n", - " \n", - " if (specie.subtype == \"molecule\" and specie.iscomplex == False) or (specie.subtype == \"ligand\"):\n", - " print(specie.formula)\n", - " specie.get_protonation_states(debug=0)\n", - " specie.get_possible_cs(debug=0)\n", - " \n", - "# if target_charge in [cs.corr_total_charge for cs in specie.possible_cs]:\n", - " \n", - "# else:\n", - "# Warning = True\n", - " \n", - " for cs in specie.possible_cs:\n", - " if target_charge == cs.corr_total_charge:\n", - " print(\"*******done*****\")\n", - " specie.set_charges(cs.corr_total_charge, cs.corr_atom_charges, cs.smiles, cs.rdkit_obj)\n", - " specie.create_bonds(debug=debug)\n", - " if debug >= 2: \n", - " print(f\"PREPARE: Success doing molecule {idx}. Charge State with total_charge={cs.corr_total_charge}\") \n", - " \n", - " elif specie.subtype == \"metal\":\n", - " print(specie.label)\n", - " specie.get_possible_cs(debug=0) \n", - " for cs in specie.possible_cs:\n", - " if target_charge == cs:\n", - " print(\"*******done*****\")\n", - " specie.set_charge(cs) \n", - " " - ] - }, - { - "cell_type": "code", - "execution_count": 22, - "id": "db7a7029", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[0, 0, 0, 0, 0, 0, 1, 1, 2, 3, 0, 4, 5, 2, 3, 0, 4, 5]" - ] - }, - "execution_count": 22, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "newcell.unique_indices" - ] - }, - { - "cell_type": "code", - "execution_count": 23, - "id": "c723ad32", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[[-1, -1, -1, -1, -1, -1, 2, 2, -2, -1, -1, 2, 3, -2, -1, -1, 2, 3]]" - ] - }, - "execution_count": 23, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "final_charge_distribution" - ] - }, - { - "cell_type": "code", - "execution_count": 31, - "id": "b8f13537", - "metadata": {}, - "outputs": [], - "source": [ - "def prepare_mols_v4 (moleclist: list, unique_indices: list, unique_species: list, \n", - " selected_cs: list, final_charge_distribution: list, debug: int=0):\n", - " count = 0 \n", - " for idx, mol in enumerate(moleclist):\n", - " if mol.iscomplex == False:\n", - "\n", - " set_charges_create_bonds(mol, unique_indices, final_charge_distribution)\n", - " count += 1\n", - " elif mol.iscomplex:\n", - " for lig in mol.ligands:\n", - " if lig.formula == \"H4-C5\":\n", - " pass\n", - " else :\n", - " set_charges_create_bonds(lig, unique_indices, final_charge_distribution)\n", - " count += 1\n", - " for met in mol.metals:\n", - " set_charges_create_bonds(met, unique_indices, final_charge_distribution)\n", - " count += 1\n", - "# if len(final_charge_distribution) == count:\n", - "# print(\"Okay\")\n", - "# for mol in moleclist:\n", - "# if mol.iscomplex:\n", - "# tmp_atcharge = np.zeros((mol.natoms))\n", - "# tmp_smiles = []\n", - "# for lig in mol.ligands:\n", - "# if debug >= 2: print(f\"{lig.formula=}\")\n", - "# if debug >= 2: print(f\"{tmp_smiles=}\")\n", - "# if debug >= 2: print(f\"{lig.smiles=}\")\n", - "\n", - "# tmp_smiles.append(lig.smiles)\n", - "# parent_indices = lig.get_parent_indices(\"molecule\")\n", - "# for kdx, a in enumerate(parent_indices):\n", - "# tmp_atcharge[a] = lig.atomic_charges[kdx]\n", - "# for met in mol.metals:\n", - "# parent_index = met.get_parent_index(\"molecule\")\n", - "# tmp_atcharge[parent_index] = met.charge\n", - "# mol.set_charges(int(sum(tmp_atcharge)), atomic_charges=tmp_atcharge, smiles=tmp_smiles)\n", - "# print(mol.totcharge)\n", - "# print(mol.smiles)\n", - "# else :\n", - "# print(\"Error\")\n", - " \n", - " \n", - " \n", - "# ref_data, target_data = arrange_data_for_reorder(spec, mol)\n", - "# print(f\"{spec.labels=}\")\n", - "# print(f\"{mol.labels=}\")\n", - "# print(ref_data, target_data)\n", - "# dummy1, dummy2, map12 = reorder(ref_data, target_data, spec.coord, mol.coord)\n", - " \n", - "# print(\"*****Before function reorder within class****\")\n", - "# print(cs.protonation)\n", - "# prot = cs.protonation.reorder(map12, debug=debug)\n", - "# print(\"*****After function reorder within class****\")\n", - "# print(cs.protonation)\n", - "# print(prot)\n", - "# ref_data, target_data = arrange_data_for_reorder(mol, spec)\n", - "# print(f\"{spec.labels=}\")\n", - "# print(f\"{mol.labels=}\")\n", - "# print(ref_data, target_data)\n", - "# dummy1, dummy2, map12 = reorder(ref_data, target_data, mol.coord, spec.coord)\n", - "# reordered_prot_spec = reorder_protonation(spec.possible_cs[0].protonation, map12, debug=debug) \n", - "# print(\"**************** After reorder **************** mol vs reordered_protonation\") \n", - "# for l_mol, c_mol, l_prot, c_prot in zip(mol.labels, mol.coord, prot.labels, prot.coords):\n", - "# print(l_mol, l_prot, (l_mol == l_prot), c_mol, c_prot, (c_mol==c_prot) ) \n", - "# print(\"**************** After reorder **************** mol vs reordered_protonation_spec\") \n", - "# for l_mol, c_mol, l_prot, c_prot in zip(mol.labels, mol.coord, reordered_prot_spec.labels, reordered_prot_spec.coords):\n", - "# print(l_mol, l_prot, (l_mol == l_prot), c_mol, c_prot, (c_mol==c_prot) ) " - ] - }, - { - "cell_type": "code", - "execution_count": 32, - "id": "dcd86634", - "metadata": { - "scrolled": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Cl\n", - "protonation_states=[------------- Cell2mol Protonation ----------------\n", - " Status = True\n", - " Labels = ['Cl']\n", - " Type = Local\n", - " Atoms added in positions = [0]\n", - " Atoms blocked (no atoms added) = [1]\n", - "---------------------------------------------------\n", - "]\n", - "smiles='[Cl-]'\n", - "smiles='[Cl-]'\n", - "smiles='[Cl-]'\n", - "smiles='[Cl-]'\n", - "smiles='[Cl-]'\n", - "*******done*****\n", - "BUILD BONDS: atom 0 Cl\n", - "PREPARE: Success doing molecule 2. Charge State with total_charge=-1\n", - "Cl\n", - "protonation_states=[------------- Cell2mol Protonation ----------------\n", - " Status = True\n", - " Labels = ['Cl']\n", - " Type = Local\n", - " Atoms added in positions = [0]\n", - " Atoms blocked (no atoms added) = [1]\n", - "---------------------------------------------------\n", - "]\n", - "smiles='[Cl-]'\n", - "smiles='[Cl-]'\n", - "smiles='[Cl-]'\n", - "smiles='[Cl-]'\n", - "smiles='[Cl-]'\n", - "*******done*****\n", - "BUILD BONDS: atom 0 Cl\n", - "PREPARE: Success doing molecule 2. Charge State with total_charge=-1\n", - "Cl\n", - "protonation_states=[------------- Cell2mol Protonation ----------------\n", - " Status = True\n", - " Labels = ['Cl']\n", - " Type = Local\n", - " Atoms added in positions = [0]\n", - " Atoms blocked (no atoms added) = [1]\n", - "---------------------------------------------------\n", - "]\n", - "smiles='[Cl-]'\n", - "smiles='[Cl-]'\n", - "smiles='[Cl-]'\n", - "smiles='[Cl-]'\n", - "smiles='[Cl-]'\n", - "*******done*****\n", - "BUILD BONDS: atom 0 Cl\n", - "PREPARE: Success doing molecule 2. Charge State with total_charge=-1\n", - "Cl\n", - "protonation_states=[------------- Cell2mol Protonation ----------------\n", - " Status = True\n", - " Labels = ['Cl']\n", - " Type = Local\n", - " Atoms added in positions = [0]\n", - " Atoms blocked (no atoms added) = [1]\n", - "---------------------------------------------------\n", - "]\n", - "smiles='[Cl-]'\n", - "smiles='[Cl-]'\n", - "smiles='[Cl-]'\n", - "smiles='[Cl-]'\n", - "smiles='[Cl-]'\n", - "*******done*****\n", - "BUILD BONDS: atom 0 Cl\n", - "PREPARE: Success doing molecule 2. Charge State with total_charge=-1\n", - "Cl\n", - "protonation_states=[------------- Cell2mol Protonation ----------------\n", - " Status = True\n", - " Labels = ['Cl']\n", - " Type = Local\n", - " Atoms added in positions = [0]\n", - " Atoms blocked (no atoms added) = [1]\n", - "---------------------------------------------------\n", - "]\n", - "smiles='[Cl-]'\n", - "smiles='[Cl-]'\n", - "smiles='[Cl-]'\n", - "smiles='[Cl-]'\n", - "smiles='[Cl-]'\n", - "*******done*****\n", - "BUILD BONDS: atom 0 Cl\n", - "PREPARE: Success doing molecule 2. Charge State with total_charge=-1\n", - "Cl\n", - "protonation_states=[------------- Cell2mol Protonation ----------------\n", - " Status = True\n", - " Labels = ['Cl']\n", - " Type = Local\n", - " Atoms added in positions = [0]\n", - " Atoms blocked (no atoms added) = [1]\n", - "---------------------------------------------------\n", - "]\n", - "smiles='[Cl-]'\n", - "smiles='[Cl-]'\n", - "smiles='[Cl-]'\n", - "smiles='[Cl-]'\n", - "smiles='[Cl-]'\n", - "*******done*****\n", - "BUILD BONDS: atom 0 Cl\n", - "PREPARE: Success doing molecule 2. Charge State with total_charge=-1\n", - "Hg\n", - "*******done*****\n", - "Hg\n", - "*******done*****\n", - "H5-C5\n", - "protonation_states=[------------- Cell2mol Protonation ----------------\n", - " Status = True\n", - " Labels = ['C', 'H', 'C', 'C', 'C', 'H', 'C', 'H', 'H', 'H', 'H']\n", - " Type = Local\n", - " Atoms added in positions = [1 0 0 0 0 0 0 0 0 0]\n", - " Atoms blocked (no atoms added) = [1 0 1 1 1 0 1 0 0 0]\n", - "---------------------------------------------------\n", - "]\n", - "smiles='[H]C1=C([H])C([H])([H])C([H])=C1[H]'\n", - "smiles='[H][C+]1[C-]([H])[C-]([H])C([H])([H])[C-]1[H]'\n", - "smiles='[H][C+]1[C-]([H])[C+]([H])C([H])([H])[C-]1[H]'\n", - "smiles='[H][C+]1[C-]([H])[C-]([H])[C-]([H])C1([H])[H]'\n", - "smiles='[H][C+]1[C+]([H])C([H])([H])[C+]([H])[C-]1[H]'\n", - "*******done*****\n", - "BUILD BONDS: atom 0 C\n", - "BUILD BONDS: bond 0 1 1.0 C H H\n", - "BUILD BONDS: bond 0 2 1.0 C C C\n", - "BUILD BONDS: bond 0 6 1.0 C C C\n" - ] - }, - { - "ename": "IndexError", - "evalue": "list index out of range", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mIndexError\u001b[0m Traceback (most recent call last)", - "Input \u001b[0;32mIn [32]\u001b[0m, in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0m \u001b[43mprepare_mols_v4\u001b[49m\u001b[43m(\u001b[49m\u001b[43mnewcell\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mmoleclist\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mnewcell\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43munique_indices\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mnewcell\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43munique_species\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\n\u001b[1;32m 2\u001b[0m \u001b[43m \u001b[49m\u001b[43mselected_cs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mfinal_charge_distribution\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;241;43m0\u001b[39;49m\u001b[43m]\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mdebug\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mdebug\u001b[49m\u001b[43m)\u001b[49m\n", - "Input \u001b[0;32mIn [31]\u001b[0m, in \u001b[0;36mprepare_mols_v4\u001b[0;34m(moleclist, unique_indices, unique_species, selected_cs, final_charge_distribution, debug)\u001b[0m\n\u001b[1;32m 12\u001b[0m \u001b[38;5;28;01mpass\u001b[39;00m\n\u001b[1;32m 13\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m :\n\u001b[0;32m---> 14\u001b[0m \u001b[43mset_charges_create_bonds\u001b[49m\u001b[43m(\u001b[49m\u001b[43mlig\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43munique_indices\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mfinal_charge_distribution\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 15\u001b[0m count \u001b[38;5;241m+\u001b[39m\u001b[38;5;241m=\u001b[39m \u001b[38;5;241m1\u001b[39m\n\u001b[1;32m 16\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m met \u001b[38;5;129;01min\u001b[39;00m mol\u001b[38;5;241m.\u001b[39mmetals:\n", - "Input \u001b[0;32mIn [28]\u001b[0m, in \u001b[0;36mset_charges_create_bonds\u001b[0;34m(specie, unique_indices, final_charge_distribution)\u001b[0m\n\u001b[1;32m 18\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m*******done*****\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[1;32m 19\u001b[0m specie\u001b[38;5;241m.\u001b[39mset_charges(cs\u001b[38;5;241m.\u001b[39mcorr_total_charge, cs\u001b[38;5;241m.\u001b[39mcorr_atom_charges, cs\u001b[38;5;241m.\u001b[39msmiles, cs\u001b[38;5;241m.\u001b[39mrdkit_obj)\n\u001b[0;32m---> 20\u001b[0m \u001b[43mspecie\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mcreate_bonds\u001b[49m\u001b[43m(\u001b[49m\u001b[43mdebug\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mdebug\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 21\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m debug \u001b[38;5;241m>\u001b[39m\u001b[38;5;241m=\u001b[39m \u001b[38;5;241m2\u001b[39m: \n\u001b[1;32m 22\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mPREPARE: Success doing molecule \u001b[39m\u001b[38;5;132;01m{\u001b[39;00midx\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m. Charge State with total_charge=\u001b[39m\u001b[38;5;132;01m{\u001b[39;00mcs\u001b[38;5;241m.\u001b[39mcorr_total_charge\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m\"\u001b[39m) \n", - "File \u001b[0;32m~/miniconda3/envs/cell2mol/lib/python3.10/site-packages/cell2mol/classes.py:314\u001b[0m, in \u001b[0;36mspecie.create_bonds\u001b[0;34m(self, debug)\u001b[0m\n\u001b[1;32m 311\u001b[0m bond_endatom \u001b[38;5;241m=\u001b[39m b\u001b[38;5;241m.\u001b[39mGetEndAtomIdx()\n\u001b[1;32m 312\u001b[0m bond_order \u001b[38;5;241m=\u001b[39m b\u001b[38;5;241m.\u001b[39mGetBondTypeAsDouble()\n\u001b[1;32m 313\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m debug \u001b[38;5;241m>\u001b[39m\u001b[38;5;241m=\u001b[39m \u001b[38;5;241m2\u001b[39m: \u001b[38;5;28mprint\u001b[39m(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mBUILD BONDS: bond\u001b[39m\u001b[38;5;124m\"\u001b[39m, bond_startatom, bond_endatom, bond_order, \n\u001b[0;32m--> 314\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39matoms[bond_startatom]\u001b[38;5;241m.\u001b[39mlabel, \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43matoms\u001b[49m\u001b[43m[\u001b[49m\u001b[43mbond_endatom\u001b[49m\u001b[43m]\u001b[49m\u001b[38;5;241m.\u001b[39mlabel, \n\u001b[1;32m 315\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mrdkit_obj\u001b[38;5;241m.\u001b[39mGetAtomWithIdx(bond_endatom)\u001b[38;5;241m.\u001b[39mGetSymbol())\n\u001b[1;32m 316\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m (\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39msubtype \u001b[38;5;241m==\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mligand\u001b[39m\u001b[38;5;124m\"\u001b[39m) \u001b[38;5;129;01mand\u001b[39;00m (bond_startatom \u001b[38;5;241m>\u001b[39m\u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mnatoms \u001b[38;5;129;01mor\u001b[39;00m bond_endatom \u001b[38;5;241m>\u001b[39m\u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mnatoms):\n\u001b[1;32m 317\u001b[0m \u001b[38;5;28;01mcontinue\u001b[39;00m\n", - "\u001b[0;31mIndexError\u001b[0m: list index out of range" - ] - } - ], - "source": [ - "prepare_mols_v4(newcell.moleclist, newcell.unique_indices, newcell.unique_species, \n", - " selected_cs, final_charge_distribution[0], debug=debug)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "2ccdb49b", - "metadata": {}, - "outputs": [], - "source": [ - "def prepare_mols_v3 (moleclist: list, unique_indices: list, unique_species: list, \n", - " selected_cs: list, final_charge_distribution: list, debug: int=0):\n", - " for idx, mol in enumerate(moleclist):\n", - " if debug >= 2: print(f\"******************{idx=} {mol.formula=}******************\")\n", - " if mol.formula==\"H10-C4-O\":\n", - " spec = unique_species[mol.unique_index] # This is the reference specie\n", - " mol.get_protonation_states()\n", - " mol.get_possible_cs() \n", - " print(mol.labels)\n", - " print(mol.protonation_states)\n", - " print(mol.possible_cs)\n", - " print(mol.possible_cs[0].protonation)\n", - " \n", - " indices = [index for index, value in enumerate(unique_indices) if value == mol.unique_index]\n", - " target_charge = [final_charge_distribution[i] for i in indices][0]\n", - " \n", - " print(indices, target_charge, target_charge_1)\n", - " \n", - " \n", - " \n", - " for cs in spec.possible_cs:\n", - " if target_charge == cs.corr_total_charge :\n", - " print(\"**************** Before reorder **************** spec.coord vs cs.protonation\")\n", - " print([(sub_spec == sub_cs_prot) for sub_spec, sub_cs_prot in zip(spec.coord, cs.protonation.coords)])\n", - " for l, sub_spec, l_cs, sub_cs_prot in zip(spec.labels, spec.coord, cs.protonation.labels, cs.protonation.coords):\n", - " print(l, sub_spec, l_cs, sub_cs_prot, (sub_spec == sub_cs_prot))\n", - " \n", - " \n", - "# print(f\"{spec.coord == mol.coord = }\")\n", - "# ref_data, target_data = arrange_data_for_reorder(spec, mol)\n", - "# dummy1, dummy2, map12 = reorder(ref_data, target_data, spec.coord, mol.coord)\n", - "# prot = reorder_protonation(cs.protonation, map12, debug=debug)\n", - " \n", - "# print(\"**************** After reorder **************** spec.coord vs cs.protonation\")\n", - "# print([(sub_spec == sub_cs_prot) for sub_spec, sub_cs_prot in zip(spec.coord, cs.protonation.coords)])\n", - "# for l, sub_spec, l_cs, sub_cs_prot in zip(spec.labels, spec.coord, cs.protonation.labels, cs.protonation.coords):\n", - "# print(l, sub_spec, l_cs, sub_cs_prot, (sub_spec == sub_cs_prot))\n", - "# print(\"**************** After reorder **************** mol vs reordered_protonation\") \n", - "# for l_mol, l_prot in zip(mol.labels, prot.labels):\n", - "# print(l_mol, l_prot, (l_mol == l_prot))\n", - " \n", - "# new_cs = get_charge(target_charge, prot, allow=cs.allow, debug=debug)\n", - "# if target_charge == new_cs.corr_total_charge :\n", - "# new_cs.rdkit_obj\n", - "# for l, sub_mol, l_cs, sub_prot in zip(mol.labels, mol.coord, prot.labels, prot.coords):\n", - " \n", - "# mol.set_charges(new_cs.corr_total_charge, new_cs.corr_atom_charges, new_cs.smiles, new_cs.rdkit_obj) \n", - "# Warning = False\n", - "# return moleclist, Warning" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "0e9683a8", - "metadata": { - "scrolled": false - }, - "outputs": [], - "source": [ - "prepare_mols_v3(newcell.moleclist, newcell.unique_indices, newcell.unique_species, \n", - " selected_cs, final_charge_distribution[0], debug=debug)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "98072d06", - "metadata": {}, - "outputs": [], - "source": [ - "help(map)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "79f1cd51", - "metadata": {}, - "outputs": [], - "source": [ - "\n", - "def prepare_mols_v2 (moleclist: list, unique_indices: list, unique_species: list, \n", - " selected_cs: list, final_charge_distribution: list, debug: int=0):\n", - " count = 0\n", - " for idx, mol in enumerate(moleclist):\n", - " if debug >= 2: print(f\"******************{idx=} {mol.formula=}******************\")\n", - " if mol.formula==\"H10-C4-O\":\n", - " if mol.subtype == \"molecule\" and mol.iscomplex == False:\n", - " spec = unique_species[mol.unique_index] # This is the reference specie\n", - " # if debug >= 2: print(f\"PREPARE: Doing molecule {idx} with unique_index: {mol.unique_index}\")\n", - " # if debug >= 2: print(f\"PREPARE: Specie with poscharges: {spec.possible_cs}\")\n", - " count += 1\n", - "# indices = [index for index, value in enumerate(unique_indices) if value == mol.unique_index]\n", - "# target_charge = [final_charge_distribution[i] for i in indices][0]\n", - " # print(indices, target_charge)\n", - "\n", - " for cs in spec.possible_cs:\n", - " print([(sub_spec == sub_cs_prot) for sub_spec, sub_cs_prot in zip(spec.coord, cs.protonation.coords)])\n", - " for l, sub_spec, l_cs, sub_cs_prot in zip(spec.labels, spec.coord, cs.protonation.labels, cs.protonation.coords):\n", - " print(l, sub_spec, l_cs, sub_cs_prot, (sub_spec == sub_cs_prot))\n", - " print(f\"{cs.protonation.added_atoms=}\")\n", - " print(f\"{cs.corr_total_charge=}\")\n", - " if target_charge == cs.corr_total_charge :\n", - " print(f\"{spec.coord == mol.coord = }\")\n", - " # for print(cs.protonation.coords)\n", - " ref_data, target_data = arrange_data_for_reorder(spec, mol)\n", - " print(f\"{ref_data==target_data=}\")\n", - " # if debug >= 2: print(f\"PREPARE: reordering with data: \\n{ref_data=}\\n{target_data=}\")\n", - " dummy1, dummy2, map12 = reorder(ref_data, target_data, spec.coord, mol.coord)\n", - " # if debug >= 2: print(f\"PREPARE: reordering with {dummy1}\")\n", - " # if debug >= 2: print(f\"PREPARE: reordering with {dummy2}\")\n", - " if debug >= 2: print(f\"PREPARE: reordering protonation with {map12}\")\n", - " prot = cs.protonation.reorder(map12, debug=debug)\n", - " # if debug >= 2: print(f\"PREPARE: reordered protonation: \\n{prot}\") \n", - " new_cs = get_charge(target_charge, prot, allow=cs.allow, debug=debug)\n", - "\n", - " if new_cs.corr_total_charge == target_charge:\n", - " print(mol.labels)\n", - " mol.rdkit_obj = None\n", - " mol.set_charges(new_cs.corr_total_charge, new_cs.corr_atom_charges, new_cs.smiles, new_cs.rdkit_obj)\n", - " for r, (atom, atom_rd) in enumerate(zip(mol.atoms, new_cs.rdkit_obj.GetAtoms())):\n", - " print(r, atom.label, atom_rd.GetSymbol(), atom.label==atom_rd.GetSymbol())\n", - " print(atom_rd.GetSymbol() == mol.rdkit_obj.GetAtomWithIdx(r).GetSymbol())\n", - " print(\"*\",mol.rdkit_obj.GetAtomWithIdx(r).GetSymbol(), new_cs.rdkit_obj.GetAtomWithIdx(r).GetSymbol(),\n", - " mol.rdkit_obj.GetAtomWithIdx(r).GetSymbol()== new_cs.rdkit_obj.GetAtomWithIdx(r).GetSymbol() )\n", - " print()\n", - " display(mol.rdkit_obj)\n", - " display(new_cs.rdkit_obj)\n", - " \n", - " \n", - " \n", - "# elif mol.iscomplex :\n", - "# for jdx, lig in enumerate(mol.ligands):\n", - "# spec = unique_species[lig.unique_index]\n", - "# # print(idx, jdx, lig.formula, lig.unique_index)\n", - "# count += 1\n", - "\n", - "# indices = [index for index, value in enumerate(unique_indices) if value == lig.unique_index]\n", - "# target_charge = [final_charge_distribution[i] for i in indices][0]\n", - "# # print(indices, target_charge)\n", - "\n", - "# for cs in spec.possible_cs:\n", - "# print(f\"{cs.smiles=} {cs.corr_total_charge=}\")\n", - "# if target_charge == cs.corr_total_charge :\n", - "# print(f\"{spec.coord == lig.coord = }\")\n", - "# print(\"\")\n", - "# for jdx, met in enumerate(mol.metals):\n", - "# spec = unique_species[met.unique_index]\n", - "# # print(idx, jdx, met.label, met.unique_index)\n", - "# count += 1\n", - " \n", - "# indices = [index for index, value in enumerate(unique_indices) if value == met.unique_index]\n", - "# target_charge = [final_charge_distribution[i] for i in indices][0]\n", - "# # print(indices, target_charge)\n", - "\n", - "# for jdx, cs in enumerate(spec.possible_cs):\n", - "# if target_charge == cs :\n", - "# print(f\"{met.label=} {cs=}\")\n", - "# print(f\"{spec.coord == met.coord = }\")\n", - "# met.set_charge(cs)\n", - "\n", - "# print(\"\")\n", - " print(\"\")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "1bf6df20", - "metadata": { - "scrolled": false - }, - "outputs": [], - "source": [ - "prepare_mols_v2(newcell.moleclist, newcell.unique_indices, newcell.unique_species, \n", - " selected_cs, final_charge_distribution[0], debug=debug)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "71433244", - "metadata": {}, - "outputs": [], - "source": [ - "newcell.moleclist[1]" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "e4ec229f", - "metadata": {}, - "outputs": [], - "source": [ - "newcell.moleclist[3].create_bonds(debug=debug)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "0e070e5f", - "metadata": {}, - "outputs": [], - "source": [ - "def prepare_mols_test(moleclist: list, unique_indices: list, unique_species: list, \n", - " selected_cs: list, final_charge_distribution: list, debug: int=0):\n", - " # The charge and connectivity of a given specie in the unit cell is only determined for one representative case. i\n", - " # For instance, if four molecules \"A\" are in the unit cell, only one is evaluated in the rest of the code. \n", - " # This function ensures that all other \"A\" molecules in the unit cell end up having the same interpretation (charge and connectivity).\n", - " # In some cases, this might be a difficult job, since the connectivity (i.e. Lewis Structure) often depends on the atom ordering, which might change\n", - " # Thus, an Hungarian ordering is implemented.\n", - " \n", - " Warning = False\n", - " idxtoallocate = 0\n", - " \n", - " for idx, mol in enumerate(moleclist):\n", - " #if hasattr(mol,\"totcharge\") and hasattr(mol,\"rdkit_obj\"): continue \n", - " if debug >= 2: print(f\"******************{idx=} {mol.formula=}******************\")\n", - " ###################################\n", - " ### FOR SOLVENT AND COUNTERIONS ###\n", - " ###################################\n", - " if mol.subtype == \"molecule\" and mol.iscomplex == False:\n", - " spec = unique_species[mol.unique_index] # This is the reference specie\n", - " if debug >= 2: print(f\"PREPARE: Doing molecule {idx} with unique_index: {mol.unique_index}\")\n", - " if debug >= 2: print(f\"PREPARE: Specie with poscharges: {spec.possible_cs}\")\n", - " \n", - " allocated = False\n", - " for jdx, cs in enumerate(spec.possible_cs):\n", - " # If the charge in poscharges coincides with the one for this entry in final_distribution\n", - " if final_charge_distribution[idxtoallocate] == cs.corr_total_charge and not allocated: \n", - "\n", - " print(\"***1\")\n", - " ## Reorders the atoms to increase chance of perfectly reproducing the desired charge\n", - " ref_data, target_data = arrange_data_for_reorder(spec, mol)\n", - " print(ref_data==target_data)\n", - " if debug >= 2: print(f\"PREPARE: reordering with data: \\n{ref_data=}\\n{target_data=}\")\n", - " dummy1, dummy2, map12 = reorder(ref_data, target_data, spec.coord, mol.coord)\n", - " if debug >= 2: print(f\"PREPARE: reordering with {dummy1}\")\n", - " if debug >= 2: print(f\"PREPARE: reordering with {dummy2}\")\n", - " if debug >= 2: print(f\"PREPARE: reordering protonation with {map12}\")\n", - " prot = cs.protonation.reorder(map12, debug=debug)\n", - " if debug >= 2: print(f\"PREPARE: reordered protonation: \\n{prot}\")\n", - " ############### \n", - "\n", - " allocated = True \n", - " idxtoallocate += 1\n", - " new_cs = get_charge(cs.corr_total_charge, prot, allow=cs.allow, debug=debug)\n", - " \n", - " if new_cs.corr_total_charge == cs.corr_total_charge:\n", - " for atom, atom_rd in zip(mol.atoms, new_cs.rdkit_obj.GetAtoms()):\n", - " print(atom.label, atom_rd.GetSymbol())\n", - " \n", - " mol.set_charges(new_cs.corr_total_charge, new_cs.corr_atom_charges, new_cs.smiles, new_cs.rdkit_obj)\n", - " \n", - " if debug >= 2: print(f\"PREPARE: Success doing molecule {idx}. Created Charge State with total_charge={new_cs.corr_total_charge}\") \n", - " else:\n", - " if debug >= 2: print(f\"PREPARE: Error doing molecule {idx}. Created Charge State is different than Target {new_cs.corr_total_charge} vs {cs.corr_total_charge}\")\n", - " \n", - " else :\n", - " print(\"0003\")\n", - " \n", - " if not allocated: Warning = False" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "61198b1c", - "metadata": { - "scrolled": false - }, - "outputs": [], - "source": [ - "prepare_mols_test(newcell.moleclist, newcell.unique_indices, newcell.unique_species, \n", - " selected_cs, final_charge_distribution[0], debug=debug)\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "9a0ebd75", - "metadata": { - "scrolled": false - }, - "outputs": [], - "source": [ - "for mol in newcell.moleclist: \n", - " if not mol.iscomplex: \n", - " try :\n", - " print(mol.protonation_states)\n", - " except:\n", - " pass\n", - " for idx, (atom, atom_rd) in enumerate(zip(mol.atoms, mol.rdkit_obj.GetAtoms())):\n", - " rdkitatom = mol.rdkit_obj.GetAtomWithIdx(idx) \n", - " tmp = rdkitatom.GetSymbol()\n", - " print(atom.label, atom_rd.GetSymbol(), tmp, idx, atom_rd.GetIdx())\n", - " for b in rdkitatom.GetBonds():\n", - " bond_startatom = b.GetBeginAtomIdx()\n", - " bond_endatom = b.GetEndAtomIdx()\n", - " bond_order = b.GetBondTypeAsDouble() \n", - " print(\"BUILD BONDS: bond\", bond_startatom, bond_endatom, bond_order)\n", - " # For each atom, set the property \"molAtomMapNumber\" to a custom number, let's say, the index of the atom in the molecule\n", - " atom_rd.SetProp(\"molAtomMapNumber\", str(atom_rd.GetIdx()))\n", - " display(mol.rdkit_obj, )\n", - "# mol.create_bonds(debug=debug) " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "77b28b23", - "metadata": {}, - "outputs": [], - "source": [ - "newcell" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "6c43e8ca", - "metadata": {}, - "outputs": [], - "source": [ - "newcell.error_prepare_mols" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "ff13834d", - "metadata": { - "scrolled": false - }, - "outputs": [], - "source": [ - "newcell.create_bonds(debug=debug)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "a3f78dcd", - "metadata": {}, - "outputs": [], - "source": [ - "from cell2mol.classes import *" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "222df538", - "metadata": { - "scrolled": false - }, - "outputs": [], - "source": [ - "for mol in newcell.moleclist:\n", - " if mol.iscomplex:\n", - " print(mol.formula)\n", - " for lig in mol.ligands:\n", - " for idx, atom in enumerate(lig.atoms):\n", - " # Security Check. Confirms that the labels are the same\n", - " if debug >= 2: print(\"BUILD BONDS: atom\", idx, atom.label)\n", - " rdkitatom = lig.rdkit_obj.GetAtomWithIdx(idx) \n", - " tmp = rdkitatom.GetSymbol()\n", - "\n", - " if atom.label != tmp: \n", - " print(\"Error in Create Bonds. Atom labels do not coincide. GMOL vs. MOL:\", atom.label, tmp)\n", - " else:\n", - " print(rdkitatom.GetBonds())\n", - " # First part. Creates bond information\n", - " for b in rdkitatom.GetBonds():\n", - " print(b)\n", - " bond_startatom = b.GetBeginAtomIdx()\n", - " bond_endatom = b.GetEndAtomIdx()\n", - " bond_order = b.GetBondTypeAsDouble()\n", - " \n", - " if debug >= 2: print(\"BUILD BONDS: bond\", bond_startatom, bond_endatom, bond_order, \n", - " lig.atoms[bond_startatom].label, lig.atoms[bond_endatom].label, \n", - " lig.rdkit_obj.GetAtomWithIdx(bond_endatom).GetSymbol())\n", - "# if (lig.subtype == \"ligand\") and (bond_startatom >= lig.natoms or bond_endatom >= lig.natoms):\n", - "# continue\n", - "# else:\n", - "# if lig.atoms[bond_endatom].label != lig.rdkit_obj.GetAtomWithIdx(bond_endatom).GetSymbol():\n", - "# if debug >= 1: \n", - "# print(\"Error with Bond EndAtom\", \n", - "# lig.atoms[bond_endatom].label, lig.rdkit_obj.GetAtomWithIdx(bond_endatom).GetSymbol())\n", - "# else:\n", - "# if bond_endatom == idx:\n", - "# start = bond_endatom\n", - "# end = bond_startatom\n", - "# elif bond_startatom == idx:\n", - "# start = bond_startatom\n", - "# end = bond_endatom\n", - "\n", - "# ## This has changed. Now there is a bond object, and we send the atom objects, not only the index\n", - "# new_bond = bond(lig.atoms[start], lig.atoms[end], bond_order) \n", - "# atom.add_bond(new_bond)\n", - "# print(new_bond)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "4167f2dd", - "metadata": {}, - "outputs": [], - "source": [ - "met1.check_connectivity(met2, debug=debug)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "858555da", - "metadata": {}, - "outputs": [], - "source": [ - "met1.radii" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "83d65b32", - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "cell2mol", - "language": "python", - "name": "cell2mol" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.10.6" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/cell2mol/test/test_one_by_one_AFIBAU.ipynb b/cell2mol/test/test_one_by_one_AFIBAU.ipynb deleted file mode 100644 index ce84e862b..000000000 --- a/cell2mol/test/test_one_by_one_AFIBAU.ipynb +++ /dev/null @@ -1,8773 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "name = \"AFIBAU\"\n", - "infopath = f\"{name}/{name}.info\"\n", - "debug=2" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Coordinates of the new point: [3. 4. 0.]\n" - ] - } - ], - "source": [ - "from cell2mol.read_write import readinfo\n", - "from cell2mol.classes import cell\n", - "from cell2mol.charge_assignment import *" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "INITIATING cell object from input\n", - "MOLECULE.SPLIT COMPLEX: labels=['Fe', 'Si', 'Si', 'N', 'N', 'N', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'Si', 'Si', 'N', 'N', 'N', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H']\n", - "MOLECULE.SPLIT COMPLEX: metal_idx=[0]\n", - "MOLECULE.SPLIT COMPLEX: rest_idx=[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96]\n", - "SPLIT COMPLEX: rest labels: ['Si', 'Si', 'N', 'N', 'N', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'Si', 'Si', 'N', 'N', 'N', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H']\n", - "SPLIT COMPLEX: rest coord: [[-4.902625978647305, 10.461327745, 2.9756691119668472], [-4.0737589173477895, 8.58144452, 0.7620136456272598], [-4.035798079650563, 6.800541946000001, 4.3831805552661285], [-6.004487665299856, 5.904659365000001, 4.864391007321264], [-3.95129868860261, 9.186752872, 2.3526006150262098], [-5.35392306622132, 6.92302699, 4.284433374124064], [-5.778783435854342, 7.633777360000002, 3.8610439116167163], [-3.8471659210129583, 5.619516430000001, 5.062031014415337], [-3.0179116141699094, 5.255245160000001, 5.275255016173424], [-5.039254466145307, 5.065149870000002, 5.375458645414929], [-5.181305647169982, 4.27386652, 5.843269774955211], [-7.477629987098331, 5.70566799, 4.974789773258852], [-8.180523779446688, 6.771325330000001, 4.147964187206491], [-7.971932396162115, 7.639395940000001, 4.501881075370528], [-9.128740993100537, 6.6308608300000005, 4.184375389692503], [-7.884696438100416, 6.71794882, 3.23768412505619], [-7.879770344926213, 5.823658170000001, 6.4335681896584385], [-7.436671788062431, 5.142873560000001, 6.944344538132215], [-8.830028878400837, 5.7140958600000005, 6.513235900697833], [-7.62855608543164, 6.688919490000002, 6.7666578700004765], [-7.817792877223647, 4.322560880000001, 4.440710255194028], [-7.521431435877377, 4.24951934, 3.530430193043727], [-8.767627567969805, 4.189587820000001, 4.480034353878921], [-7.378877173662177, 3.6567591500000005, 4.975226707688685], [-4.742929627416006, 10.560121109999999, 4.84123348254016], [-5.025899957785287, 9.730444129999999, 5.231561573190209], [-5.294241127392972, 11.27368077, 5.17184720111315], [-3.826567583346806, 10.72867851, 5.075721626550077], [-6.757617215454186, 10.25109921, 2.6492790928822356], [-6.999449684892546, 10.738042810000001, 1.8584277748860543], [-7.255293178177359, 10.589150440000001, 3.3978934159946435], [-6.958060839031093, 9.32028779, 2.525481004429795], [-4.445388170764142, 12.1548614, 2.3103636201424353], [-3.5106227773618537, 12.3140545, 2.457027943756092], [-4.960703160600354, 12.82628171, 2.764338492738034], [-4.63243923338479, 12.190445740000001, 1.3690612134740525], [-5.111639650247641, 9.645229, -0.3929496972290419], [-6.030976627761522, 9.61432681, -0.11797229605467899], [-5.034112348107525, 9.312796350000001, -1.2904130161042664], [-4.797548229099952, 10.55262967, -0.3597426805617989], [-2.4105746442799867, 8.43255215, -0.09845589152217656], [-2.0068243942845934, 9.30062276, -0.16457863523677438], [-2.537750596984489, 8.07015374, -0.9787331228240035], [-1.8394287929231288, 7.851029120000001, 0.4078054678433348], [-4.866081201931632, 6.869650480000001, 0.7283696945301847], [-4.387563422815553, 6.284381730000001, 1.3195419780930762], [-4.832213394284594, 6.5194256600000005, -0.16457863523677438], [-5.778895039577053, 6.934264150000001, 1.0122314291111347], [-0.4763167521228615, 10.461327745, 4.30657138523556], [-1.3051838134223765, 8.58144452, 6.520226851575147], [-1.3431446511196032, 6.800541946, 2.899059941936278], [0.6255449345296897, 5.9046593650000005, 2.417849489881143], [-1.427644042167557, 9.186752872, 4.929639882176198], [-0.025019664548846965, 6.923026989999999, 2.997807123078343], [0.3998407050841757, 7.633777360000001, 3.4211965855856907], [-1.5317768097572082, 5.61951643, 2.2202094827870695], [-2.361031116600258, 5.25524516, 2.0069854810289836], [-0.3396882646248607, 5.065149870000001, 1.9067818517874784], [-0.19763708360018506, 4.2738665199999994, 1.4389707222471957], [2.0986872563281653, 5.705667989999999, 2.3074507239435547], [2.8015810486765194, 6.77132533, 3.134276309995916], [2.5929896653919506, 7.63939594, 2.780359421831879], [3.7497982623303705, 6.63086083, 3.097865107509904], [2.5057537073302485, 6.717948820000001, 4.044556372146217], [2.5008276141560453, 5.82365817, 0.8486723075439686], [2.057729057292265, 5.14287356, 0.33789595907019165], [3.45108614763067, 5.71409586, 0.7690045965045742], [2.2496133546614727, 6.688919490000001, 0.5155826272019305], [2.43885014645348, 4.32256088, 2.8415302420083792], [2.1424887051072092, 4.249519340000001, 3.75181030415868], [3.388684837199639, 4.18958782, 2.802206143323486], [1.999934442892011, 3.6567591500000005, 2.307013789513723], [-0.6360131033541596, 10.560121109999999, 2.441007014662247], [-0.35304277298487863, 9.730444129999999, 2.050678924012198], [-0.0847016033771939, 11.27368077, 2.1103932960892577], [-1.55237514742336, 10.72867851, 2.2065188706523293], [1.3786744846840207, 10.25109921, 4.632961404320171], [1.62050695412238, 10.738042810000001, 5.423812722316353], [1.8763504474071935, 10.589150440000001, 3.8843470812077636], [1.579118108260928, 9.32028779, 4.756759492772613], [-0.9335545600060233, 12.1548614, 4.971876877059971], [-1.8683199534083124, 12.3140545, 4.825212553446315], [-0.41823957016981117, 12.82628171, 4.517902004464373], [-0.7465034973853752, 12.190445740000001, 5.913179283728355], [-0.2673030805225247, 9.645229000000002, 7.675190194431449], [0.6520338969913562, 9.614326810000001, 7.400212793257086], [-0.3448303826626402, 9.312796350000003, 8.572653513306674], [-0.5813945016702142, 10.552629670000002, 7.641983177764207], [-2.96836808649018, 8.432552150000001, 7.380696388724584], [-3.3721183364855727, 9.300622760000001, 7.446819132439181], [-2.841192133785678, 8.070153740000002, 8.26097362002641], [-3.5395139378470377, 7.8510291200000015, 6.874435029359072], [-0.5128615288385356, 6.869650480000002, 6.553870802672223], [-0.9913793079546123, 6.2843817300000016, 5.962698519109331], [-0.5467293364855736, 6.519425660000001, 7.446819132439181], [0.3999523088068857, 6.9342641500000015, 6.270009068091272]]\n", - "SPLIT COMPLEX: rest indices: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96]\n", - "SPLIT COMPLEX: rest radii: [1.11, 1.11, 0.71, 0.71, 0.71, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.73, 0.31, 0.31, 0.31, 0.73, 0.31, 0.31, 0.31, 0.73, 0.31, 0.31, 0.31, 0.73, 0.31, 0.31, 0.31, 0.73, 0.31, 0.31, 0.31, 0.73, 0.31, 0.31, 0.31, 0.73, 0.31, 0.31, 0.31, 0.73, 0.31, 0.31, 0.31, 0.73, 0.31, 0.31, 0.31, 1.11, 1.11, 0.71, 0.71, 0.71, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.73, 0.31, 0.31, 0.31, 0.73, 0.31, 0.31, 0.31, 0.73, 0.31, 0.31, 0.31, 0.73, 0.31, 0.31, 0.31, 0.73, 0.31, 0.31, 0.31, 0.73, 0.31, 0.31, 0.31, 0.73, 0.31, 0.31, 0.31, 0.73, 0.31, 0.31, 0.31, 0.73, 0.31, 0.31, 0.31]\n", - "SPLIT COMPLEX: splitting species with 96 atoms in block\n", - "labels=['Si', 'Si', 'N', 'N', 'N', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'Si', 'Si', 'N', 'N', 'N', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H'] 96\n", - "indices=None\n", - "SPLIT COMPLEX: received 4 blocks\n", - "PREPARING BLOCK: [2, 3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23]\n", - "CREATING LIGAND: H12-C7-N2\n", - "PREPARING BLOCK: [48, 49, 52, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95]\n", - "CREATING LIGAND: H18-C6-N-Si2\n", - "PREPARING BLOCK: [50, 51, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71]\n", - "CREATING LIGAND: H12-C7-N2\n", - "PREPARING BLOCK: [0, 1, 4, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47]\n", - "CREATING LIGAND: H18-C6-N-Si2\n", - "GETREFS: found 1 reference molecules\n", - "GETREFS: ['H60-C26-N6-Si4-Fe']\n", - "GETREFS: [------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 97\n", - " Formula = H60-C26-N6-Si4-Fe\n", - " Has Adjacency Matrix = YES\n", - " Number of Ligands = 4\n", - " Number of Metals = 1\n", - "---------------------------------------------------\n", - "]\n", - "LIGAND.SPLIT_LIGAND: self.indices=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]\n", - "LIGAND.SPLIT_LIGAND: conn_idx=[0]\n", - "LIGAND.SPLIT_LIGAND: conn_labels=['N']\n", - "LIGAND.SPLIT_LIGAND: conn_coord=[[-4.035798079650563, 6.800541946000001, 4.3831805552661285]]\n", - "LIGAND.SPLIT_LIGAND: conn_radii=[0.71]\n", - "labels=['N'] 1\n", - "indices=None\n", - "blocklist=[[0]]\n", - "LIGAND.SPLIT_LIGAND: block=[0]\n", - "LIGAND.SPLIT_LIGAND: self.indices=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26]\n", - "LIGAND.SPLIT_LIGAND: conn_idx=[2]\n", - "LIGAND.SPLIT_LIGAND: conn_labels=['N']\n", - "LIGAND.SPLIT_LIGAND: conn_coord=[[-1.427644042167557, 9.186752872, 4.929639882176198]]\n", - "LIGAND.SPLIT_LIGAND: conn_radii=[0.71]\n", - "labels=['N'] 1\n", - "indices=None\n", - "blocklist=[[0]]\n", - "LIGAND.SPLIT_LIGAND: block=[0]\n", - "LIGAND.SPLIT_LIGAND: self.indices=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]\n", - "LIGAND.SPLIT_LIGAND: conn_idx=[0]\n", - "LIGAND.SPLIT_LIGAND: conn_labels=['N']\n", - "LIGAND.SPLIT_LIGAND: conn_coord=[[-1.3431446511196032, 6.800541946, 2.899059941936278]]\n", - "LIGAND.SPLIT_LIGAND: conn_radii=[0.71]\n", - "labels=['N'] 1\n", - "indices=None\n", - "blocklist=[[0]]\n", - "LIGAND.SPLIT_LIGAND: block=[0]\n", - "LIGAND.SPLIT_LIGAND: self.indices=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26]\n", - "LIGAND.SPLIT_LIGAND: conn_idx=[2]\n", - "LIGAND.SPLIT_LIGAND: conn_labels=['N']\n", - "LIGAND.SPLIT_LIGAND: conn_coord=[[-3.95129868860261, 9.186752872, 2.3526006150262098]]\n", - "LIGAND.SPLIT_LIGAND: conn_radii=[0.71]\n", - "labels=['N'] 1\n", - "indices=None\n", - "blocklist=[[0]]\n", - "LIGAND.SPLIT_LIGAND: block=[0]\n", - "LIGAND.Get_denticity: checking connectivity of ligand H12-C7-N2\n", - "LIGAND.Get_denticity: initial connectivity is 1\n", - "Entering COORD_CORR_NONHAPTIC:\n", - "\tmconnec=1 in atom idx=0, label=N\n", - "\tevaluating coordination with metal \n", - "------------- Cell2mol METAL Object --------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Sub-Type = metal\n", - " Label = Fe\n", - " Atomic Number = 26\n", - " Index in Molecule = 0\n", - " Metal Adjacency (mconnec) = 4\n", - " Regular Adjacencies (connec) = 4\n", - "----------------------------------------------------\n", - "\n", - "ADD_ATOM: Metalist length 1\n", - "ADD_ATOM: Ligand Atoms 21\n", - "ADD_ATOM: site= 0\n", - "ADD_ATOM: target ligand atom N\n", - "ADD_ATOM: evaluating apos=array([-4.03579808, 6.80054195, 4.38318056]) and tgt.coord=[-2.6894713653850832, 8.302482023, 3.6411202486012035]\n", - "ADD_ATOM: received newlab=['N', 'N', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'H']\n", - "ADD_ATOM: received tmpconmat=array([[0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],\n", - " [0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0],\n", - " [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]])\n", - "ADD_ATOM: received tmpconnec=array([3, 3, 3, 1, 3, 1, 3, 1, 4, 4, 1, 1, 1, 4, 1, 1, 1, 4, 1, 1, 1, 1])\n", - "ADD_ATOM: received tmpconnec[posadded]=1\n", - "ADD_ATOM: Chosen Metal index None. H is added at site 0\n", - "\tconnectivity verified for atom with label N and ligand index 0\n", - "LIGAND.Get_denticity: final connectivity is 1\n", - "LIGAND.Get_denticity: checking connectivity of ligand H18-C6-N-Si2\n", - "LIGAND.Get_denticity: initial connectivity is 1\n", - "Entering COORD_CORR_NONHAPTIC:\n", - "\tmconnec=1 in atom idx=0, label=N\n", - "\tevaluating coordination with metal \n", - "------------- Cell2mol METAL Object --------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Sub-Type = metal\n", - " Label = Fe\n", - " Atomic Number = 26\n", - " Index in Molecule = 0\n", - " Metal Adjacency (mconnec) = 4\n", - " Regular Adjacencies (connec) = 4\n", - "----------------------------------------------------\n", - "\n", - "ADD_ATOM: Metalist length 1\n", - "ADD_ATOM: Ligand Atoms 27\n", - "ADD_ATOM: site= 2\n", - "ADD_ATOM: target ligand atom N\n", - "ADD_ATOM: evaluating apos=array([-1.42764404, 9.18675287, 4.92963988]) and tgt.coord=[-2.6894713653850832, 8.302482023, 3.6411202486012035]\n", - "ADD_ATOM: received newlab=['Si', 'Si', 'N', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'H']\n", - "ADD_ATOM: received tmpconmat=array([[0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0,\n", - " 0, 1, 0, 0, 0, 0],\n", - " [1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 1],\n", - " [1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1,\n", - " 1, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 1, 1, 1, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 1, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 1, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 1, 0, 0, 0, 0],\n", - " [0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0]])\n", - "ADD_ATOM: received tmpconnec=array([4, 4, 3, 4, 1, 1, 1, 4, 1, 1, 1, 4, 1, 1, 1, 4, 1, 1, 1, 4, 1, 1,\n", - " 1, 4, 1, 1, 1, 1])\n", - "ADD_ATOM: received tmpconnec[posadded]=1\n", - "ADD_ATOM: Chosen Metal index None. H is added at site 2\n", - "\tconnectivity verified for atom with label N and ligand index 2\n", - "LIGAND.Get_denticity: final connectivity is 1\n", - "LIGAND.Get_denticity: checking connectivity of ligand H12-C7-N2\n", - "LIGAND.Get_denticity: initial connectivity is 1\n", - "Entering COORD_CORR_NONHAPTIC:\n", - "\tmconnec=1 in atom idx=0, label=N\n", - "\tevaluating coordination with metal \n", - "------------- Cell2mol METAL Object --------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Sub-Type = metal\n", - " Label = Fe\n", - " Atomic Number = 26\n", - " Index in Molecule = 0\n", - " Metal Adjacency (mconnec) = 4\n", - " Regular Adjacencies (connec) = 4\n", - "----------------------------------------------------\n", - "\n", - "ADD_ATOM: Metalist length 1\n", - "ADD_ATOM: Ligand Atoms 21\n", - "ADD_ATOM: site= 0\n", - "ADD_ATOM: target ligand atom N\n", - "ADD_ATOM: evaluating apos=array([-1.34314465, 6.80054195, 2.89905994]) and tgt.coord=[-2.6894713653850832, 8.302482023, 3.6411202486012035]\n", - "ADD_ATOM: received newlab=['N', 'N', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'H']\n", - "ADD_ATOM: received tmpconmat=array([[0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],\n", - " [0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0],\n", - " [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]])\n", - "ADD_ATOM: received tmpconnec=array([3, 3, 3, 1, 3, 1, 3, 1, 4, 4, 1, 1, 1, 4, 1, 1, 1, 4, 1, 1, 1, 1])\n", - "ADD_ATOM: received tmpconnec[posadded]=1\n", - "ADD_ATOM: Chosen Metal index None. H is added at site 0\n", - "\tconnectivity verified for atom with label N and ligand index 0\n", - "LIGAND.Get_denticity: final connectivity is 1\n", - "LIGAND.Get_denticity: checking connectivity of ligand H18-C6-N-Si2\n", - "LIGAND.Get_denticity: initial connectivity is 1\n", - "Entering COORD_CORR_NONHAPTIC:\n", - "\tmconnec=1 in atom idx=0, label=N\n", - "\tevaluating coordination with metal \n", - "------------- Cell2mol METAL Object --------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Sub-Type = metal\n", - " Label = Fe\n", - " Atomic Number = 26\n", - " Index in Molecule = 0\n", - " Metal Adjacency (mconnec) = 4\n", - " Regular Adjacencies (connec) = 4\n", - "----------------------------------------------------\n", - "\n", - "ADD_ATOM: Metalist length 1\n", - "ADD_ATOM: Ligand Atoms 27\n", - "ADD_ATOM: site= 2\n", - "ADD_ATOM: target ligand atom N\n", - "ADD_ATOM: evaluating apos=array([-3.95129869, 9.18675287, 2.35260062]) and tgt.coord=[-2.6894713653850832, 8.302482023, 3.6411202486012035]\n", - "ADD_ATOM: received newlab=['Si', 'Si', 'N', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'H']\n", - "ADD_ATOM: received tmpconmat=array([[0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0,\n", - " 0, 1, 0, 0, 0, 0],\n", - " [1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 1],\n", - " [1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1,\n", - " 1, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 1, 1, 1, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 1, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 1, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 1, 0, 0, 0, 0],\n", - " [0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0]])\n", - "ADD_ATOM: received tmpconnec=array([4, 4, 3, 4, 1, 1, 1, 4, 1, 1, 1, 4, 1, 1, 1, 4, 1, 1, 1, 4, 1, 1,\n", - " 1, 4, 1, 1, 1, 1])\n", - "ADD_ATOM: received tmpconnec[posadded]=1\n", - "ADD_ATOM: Chosen Metal index None. H is added at site 2\n", - "\tconnectivity verified for atom with label N and ligand index 2\n", - "LIGAND.Get_denticity: final connectivity is 1\n", - "coord_group=[------------- Cell2mol GROUP Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = group\n", - " Number of Atoms = 1\n", - " Formula = N\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_ligand\n", - " Number of Metals = 1\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol GROUP Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = group\n", - " Number of Atoms = 1\n", - " Formula = N\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_ligand\n", - " Number of Metals = 1\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol GROUP Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = group\n", - " Number of Atoms = 1\n", - " Formula = N\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_ligand\n", - " Number of Metals = 1\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol GROUP Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = group\n", - " Number of Atoms = 1\n", - " Formula = N\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_ligand\n", - " Number of Metals = 1\n", - "---------------------------------------------------\n", - "]\n", - "self.coord_nr=4\n", - "N [-4.035798079650563, 6.800541946000001, 4.3831805552661285]\n", - "N [-1.427644042167557, 9.186752872, 4.929639882176198]\n", - "N [-1.3431446511196032, 6.800541946, 2.899059941936278]\n", - "N [-3.95129868860261, 9.186752872, 2.3526006150262098]\n", - "symbols=['Fe', 'N', 'N', 'N', 'N']\n", - "positions=[[-2.6894713653850832, 8.302482023, 3.6411202486012035], [-4.035798079650563, 6.800541946000001, 4.3831805552661285], [-1.427644042167557, 9.186752872, 4.929639882176198], [-1.3431446511196032, 6.800541946, 2.899059941936278], [-3.95129868860261, 9.186752872, 2.3526006150262098]]\n", - "4\n", - "[[1, 2], [1, 3], [1, 4], [1, 5]]\n", - "Fe [-2.6894713653850832, 8.302482023, 3.6411202486012035]\n", - "N [-4.035798079650563, 6.800541946000001, 4.3831805552661285]\n", - "N [-1.427644042167557, 9.186752872, 4.929639882176198]\n", - "N [-1.3431446511196032, 6.800541946, 2.899059941936278]\n", - "N [-3.95129868860261, 9.186752872, 2.3526006150262098]\n", - "\n", - "The number of coordinating points (including the mid point of haptic ligands) : 4\n", - "{'Tetrahedral': 2.066, 'Square planar': 24.971, 'Seesaw': 7.573}\n", - "The most likely geometry : 'Tetrahedral' with deviation value 2.066\n", - "The type of hapticity : []\n", - "\n", - "self.coord_geometry='Tetrahedral' self.geom_deviation=2.066\n", - "[1.439, 1.299, 1.439, 1.299]\n", - "1.369\n", - "self.rel_metal_radius=1.037\n" - ] - } - ], - "source": [ - "print(f\"INITIATING cell object from input\") \n", - "\n", - "# Reads reference molecules from info file, as well as labels and coordinates\n", - "labels, pos, ref_labels, ref_fracs, cellvec, cellparam = readinfo(infopath)\n", - "# Initiates cell\n", - "newcell = cell(name, labels, pos, cellvec, cellparam)\n", - "\n", - "# Loads the reference molecules and checks_missing_H\n", - "newcell.get_reference_molecules(ref_labels, ref_fracs, debug=debug) \n", - "newcell.assess_errors()" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "H60-C26-N6-Si4-Fe False []\n", - "H12-C7-N2 False []\n", - "------------- Cell2mol LIGAND Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = ligand\n", - " Number of Atoms = 21\n", - " Formula = H12-C7-N2\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_complex\n", - " Number of Groups = 1\n", - "---------------------------------------------------\n", - "\n", - "H18-C6-N-Si2 False []\n", - "------------- Cell2mol LIGAND Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = ligand\n", - " Number of Atoms = 27\n", - " Formula = H18-C6-N-Si2\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_complex\n", - " Number of Groups = 1\n", - "---------------------------------------------------\n", - "\n", - "H12-C7-N2 False []\n", - "------------- Cell2mol LIGAND Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = ligand\n", - " Number of Atoms = 21\n", - " Formula = H12-C7-N2\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_complex\n", - " Number of Groups = 1\n", - "---------------------------------------------------\n", - "\n", - "H18-C6-N-Si2 False []\n", - "------------- Cell2mol LIGAND Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = ligand\n", - " Number of Atoms = 27\n", - " Formula = H18-C6-N-Si2\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_complex\n", - " Number of Groups = 1\n", - "---------------------------------------------------\n", - "\n" - ] - } - ], - "source": [ - "for mol in newcell.refmoleclist:\n", - " if mol.iscomplex:\n", - " print(mol.formula, mol.is_haptic, mol.haptic_type)\n", - " for lig in mol.ligands:\n", - " print(lig.formula, lig.is_haptic, lig.haptic_type)\n", - " print(lig)\n", - " else:\n", - " print(mol.formula)" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "##################\n", - "Checking Missing H\n", - "##################\n", - "Not a Single Molecule has Missing H atoms (apparently)\n" - ] - }, - { - "data": { - "text/plain": [ - "False" - ] - }, - "execution_count": 5, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "newcell.check_missing_H(debug=debug) " - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "CLASSIFY_FRAGMENTS. 36 Blocks sorted as (Molec, Frag, H): 0 24 12\n", - "\n", - "##############################################\n", - "FRAG_RECONSTRUCT. 24 molecules submitted to SEQUENTIAL with Heavy\n", - "##############################################\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 2\n", - " Formula = N-Si\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 2\n", - " Formula = N-Si\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 2\n", - " Formula = N-Si\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 4\n", - " Formula = H3-C\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 2\n", - " Formula = N-Si\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 6\n", - " Formula = H3-C-N-Si\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "goodlist=[]\n", - "avglist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 6\n", - " Formula = H3-C-N-Si\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - "]\n", - "badlist=[]\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 6\n", - " Formula = H3-C-N-Si\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 6\n", - " Formula = H3-C-N-Si\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 6\n", - " Formula = H3-C-N-Si\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 4\n", - " Formula = H3-C\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 6\n", - " Formula = H3-C-N-Si\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 2\n", - " Formula = N-Si\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 6\n", - " Formula = H3-C-N-Si\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 6\n", - " Formula = H3-C-N-Si\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 6\n", - " Formula = H3-C-N-Si\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 4\n", - " Formula = H3-C\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 6\n", - " Formula = H3-C-N-Si\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 4\n", - " Formula = H3-C\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 6\n", - " Formula = H3-C-N-Si\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 3\n", - " Formula = H2-C\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 6\n", - " Formula = H3-C-N-Si\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 3\n", - " Formula = H2-C\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 6\n", - " Formula = H3-C-N-Si\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 3\n", - " Formula = H2-C\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 6\n", - " Formula = H3-C-N-Si\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 2\n", - " Formula = H-C\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "goodlist=[]\n", - "avglist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 8\n", - " Formula = H4-C2-N-Si\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - "]\n", - "badlist=[]\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 8\n", - " Formula = H4-C2-N-Si\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 2\n", - " Formula = H-C\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 8\n", - " Formula = H4-C2-N-Si\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 3\n", - " Formula = H2-C\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 8\n", - " Formula = H4-C2-N-Si\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 3\n", - " Formula = H2-C\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 8\n", - " Formula = H4-C2-N-Si\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 3\n", - " Formula = H2-C\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 8\n", - " Formula = H4-C2-N-Si\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 4\n", - " Formula = H3-C\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 8\n", - " Formula = H4-C2-N-Si\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 4\n", - " Formula = H3-C\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 8\n", - " Formula = H4-C2-N-Si\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 6\n", - " Formula = H3-C-N-Si\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 8\n", - " Formula = H4-C2-N-Si\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 2\n", - " Formula = N-Si\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 8\n", - " Formula = H4-C2-N-Si\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 4\n", - " Formula = H3-C\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 8\n", - " Formula = H4-C2-N-Si\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 6\n", - " Formula = H3-C-N-Si\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "goodlist=[]\n", - "avglist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 11\n", - " Formula = H6-C3-N-Si\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - "]\n", - "badlist=[]\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 11\n", - " Formula = H6-C3-N-Si\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 6\n", - " Formula = H3-C-N-Si\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 11\n", - " Formula = H6-C3-N-Si\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 4\n", - " Formula = H3-C\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 11\n", - " Formula = H6-C3-N-Si\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 2\n", - " Formula = N-Si\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 11\n", - " Formula = H6-C3-N-Si\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 6\n", - " Formula = H3-C-N-Si\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 11\n", - " Formula = H6-C3-N-Si\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 4\n", - " Formula = H3-C\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 11\n", - " Formula = H6-C3-N-Si\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 4\n", - " Formula = H3-C\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 11\n", - " Formula = H6-C3-N-Si\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 3\n", - " Formula = H2-C\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 11\n", - " Formula = H6-C3-N-Si\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 3\n", - " Formula = H2-C\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 11\n", - " Formula = H6-C3-N-Si\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 3\n", - " Formula = H2-C\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 11\n", - " Formula = H6-C3-N-Si\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 2\n", - " Formula = H-C\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 11\n", - " Formula = H6-C3-N-Si\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 43\n", - " Formula = H24-C14-N4-Fe\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " Number of Ligands = 2\n", - " Number of Metals = 1\n", - "---------------------------------------------------\n", - "]\n", - "goodlist=[]\n", - "avglist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 54\n", - " Formula = H30-C17-N5-Si-Fe\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - "]\n", - "badlist=[]\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 54\n", - " Formula = H30-C17-N5-Si-Fe\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 43\n", - " Formula = H24-C14-N4-Fe\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " Number of Ligands = 2\n", - " Number of Metals = 1\n", - "---------------------------------------------------\n", - "]\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 54\n", - " Formula = H30-C17-N5-Si-Fe\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 2\n", - " Formula = H-C\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 54\n", - " Formula = H30-C17-N5-Si-Fe\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 3\n", - " Formula = H2-C\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 54\n", - " Formula = H30-C17-N5-Si-Fe\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 3\n", - " Formula = H2-C\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 54\n", - " Formula = H30-C17-N5-Si-Fe\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 3\n", - " Formula = H2-C\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 54\n", - " Formula = H30-C17-N5-Si-Fe\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 4\n", - " Formula = H3-C\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 54\n", - " Formula = H30-C17-N5-Si-Fe\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 4\n", - " Formula = H3-C\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "goodlist=[]\n", - "avglist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 60\n", - " Formula = H33-C18-N6-Si2-Fe\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - "]\n", - "badlist=[]\n", - "goodlist=[]\n", - "avglist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 64\n", - " Formula = H36-C19-N6-Si2-Fe\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - "]\n", - "badlist=[]\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 64\n", - " Formula = H36-C19-N6-Si2-Fe\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 4\n", - " Formula = H3-C\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 64\n", - " Formula = H36-C19-N6-Si2-Fe\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 3\n", - " Formula = H2-C\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "goodlist=[]\n", - "avglist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 67\n", - " Formula = H38-C20-N6-Si2-Fe\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - "]\n", - "badlist=[]\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 67\n", - " Formula = H38-C20-N6-Si2-Fe\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 3\n", - " Formula = H2-C\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 67\n", - " Formula = H38-C20-N6-Si2-Fe\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 4\n", - " Formula = H3-C\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 67\n", - " Formula = H38-C20-N6-Si2-Fe\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 3\n", - " Formula = H2-C\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 67\n", - " Formula = H38-C20-N6-Si2-Fe\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 2\n", - " Formula = H-C\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 67\n", - " Formula = H38-C20-N6-Si2-Fe\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 2\n", - " Formula = N-Si\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 67\n", - " Formula = H38-C20-N6-Si2-Fe\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 4\n", - " Formula = H3-C\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 67\n", - " Formula = H38-C20-N6-Si2-Fe\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 6\n", - " Formula = H3-C-N-Si\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 67\n", - " Formula = H38-C20-N6-Si2-Fe\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 8\n", - " Formula = H5-C2-Si\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "goodlist=[]\n", - "avglist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 75\n", - " Formula = H43-C22-N6-Si3-Fe\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - "]\n", - "badlist=[]\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 75\n", - " Formula = H43-C22-N6-Si3-Fe\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 8\n", - " Formula = H5-C2-Si\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 75\n", - " Formula = H43-C22-N6-Si3-Fe\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 6\n", - " Formula = H3-C-N-Si\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 75\n", - " Formula = H43-C22-N6-Si3-Fe\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 4\n", - " Formula = H3-C\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 75\n", - " Formula = H43-C22-N6-Si3-Fe\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 2\n", - " Formula = N-Si\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 75\n", - " Formula = H43-C22-N6-Si3-Fe\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 2\n", - " Formula = H-C\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 75\n", - " Formula = H43-C22-N6-Si3-Fe\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 3\n", - " Formula = H2-C\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 75\n", - " Formula = H43-C22-N6-Si3-Fe\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 4\n", - " Formula = H3-C\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 75\n", - " Formula = H43-C22-N6-Si3-Fe\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 3\n", - " Formula = H2-C\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 75\n", - " Formula = H43-C22-N6-Si3-Fe\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 8\n", - " Formula = H5-C2-Si\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 75\n", - " Formula = H43-C22-N6-Si3-Fe\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 4\n", - " Formula = H3-C\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "goodlist=[]\n", - "avglist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 79\n", - " Formula = H46-C23-N6-Si3-Fe\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - "]\n", - "badlist=[]\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 79\n", - " Formula = H46-C23-N6-Si3-Fe\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 4\n", - " Formula = H3-C\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 79\n", - " Formula = H46-C23-N6-Si3-Fe\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 8\n", - " Formula = H5-C2-Si\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 79\n", - " Formula = H46-C23-N6-Si3-Fe\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 3\n", - " Formula = H2-C\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 79\n", - " Formula = H46-C23-N6-Si3-Fe\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 4\n", - " Formula = H3-C\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 79\n", - " Formula = H46-C23-N6-Si3-Fe\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 3\n", - " Formula = H2-C\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 79\n", - " Formula = H46-C23-N6-Si3-Fe\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 2\n", - " Formula = H-C\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 79\n", - " Formula = H46-C23-N6-Si3-Fe\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 2\n", - " Formula = N-Si\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 79\n", - " Formula = H46-C23-N6-Si3-Fe\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 4\n", - " Formula = H3-C\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 79\n", - " Formula = H46-C23-N6-Si3-Fe\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 6\n", - " Formula = H3-C-N-Si\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 79\n", - " Formula = H46-C23-N6-Si3-Fe\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 8\n", - " Formula = H5-C2-Si\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 79\n", - " Formula = H46-C23-N6-Si3-Fe\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 4\n", - " Formula = H3-C\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 79\n", - " Formula = H46-C23-N6-Si3-Fe\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 4\n", - " Formula = H3-C\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "goodlist=[]\n", - "avglist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 87\n", - " Formula = H51-C25-N6-Si4-Fe\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - "]\n", - "badlist=[]\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 87\n", - " Formula = H51-C25-N6-Si4-Fe\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 4\n", - " Formula = H3-C\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 87\n", - " Formula = H51-C25-N6-Si4-Fe\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 4\n", - " Formula = H3-C\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 87\n", - " Formula = H51-C25-N6-Si4-Fe\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 8\n", - " Formula = H5-C2-Si\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 87\n", - " Formula = H51-C25-N6-Si4-Fe\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 6\n", - " Formula = H3-C-N-Si\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 87\n", - " Formula = H51-C25-N6-Si4-Fe\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 4\n", - " Formula = H3-C\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 87\n", - " Formula = H51-C25-N6-Si4-Fe\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 2\n", - " Formula = N-Si\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 87\n", - " Formula = H51-C25-N6-Si4-Fe\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 2\n", - " Formula = H-C\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 87\n", - " Formula = H51-C25-N6-Si4-Fe\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 3\n", - " Formula = H2-C\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 87\n", - " Formula = H51-C25-N6-Si4-Fe\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 4\n", - " Formula = H3-C\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 87\n", - " Formula = H51-C25-N6-Si4-Fe\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 3\n", - " Formula = H2-C\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 87\n", - " Formula = H51-C25-N6-Si4-Fe\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 8\n", - " Formula = H5-C2-Si\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "goodlist=[]\n", - "avglist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 91\n", - " Formula = H54-C26-N6-Si4-Fe\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - "]\n", - "badlist=[]\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 91\n", - " Formula = H54-C26-N6-Si4-Fe\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 3\n", - " Formula = H2-C\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 91\n", - " Formula = H54-C26-N6-Si4-Fe\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 4\n", - " Formula = H3-C\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 91\n", - " Formula = H54-C26-N6-Si4-Fe\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 3\n", - " Formula = H2-C\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 91\n", - " Formula = H54-C26-N6-Si4-Fe\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 2\n", - " Formula = H-C\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 91\n", - " Formula = H54-C26-N6-Si4-Fe\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 2\n", - " Formula = N-Si\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 91\n", - " Formula = H54-C26-N6-Si4-Fe\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 4\n", - " Formula = H3-C\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 91\n", - " Formula = H54-C26-N6-Si4-Fe\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 6\n", - " Formula = H3-C-N-Si\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 91\n", - " Formula = H54-C26-N6-Si4-Fe\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 4\n", - " Formula = H3-C\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 91\n", - " Formula = H54-C26-N6-Si4-Fe\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 4\n", - " Formula = H3-C\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 4\n", - " Formula = H3-C\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 91\n", - " Formula = H54-C26-N6-Si4-Fe\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - "]\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 91\n", - " Formula = H54-C26-N6-Si4-Fe\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 4\n", - " Formula = H3-C\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 4\n", - " Formula = H3-C\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 6\n", - " Formula = H3-C-N-Si\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 6\n", - " Formula = H3-C-N-Si\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 4\n", - " Formula = H3-C\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "goodlist=[]\n", - "avglist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 6\n", - " Formula = H3-C-N-Si\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - "]\n", - "badlist=[]\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 6\n", - " Formula = H3-C-N-Si\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 6\n", - " Formula = H3-C-N-Si\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 6\n", - " Formula = H3-C-N-Si\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 4\n", - " Formula = H3-C\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 6\n", - " Formula = H3-C-N-Si\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 91\n", - " Formula = H54-C26-N6-Si4-Fe\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - "]\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 6\n", - " Formula = H3-C-N-Si\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 4\n", - " Formula = H3-C\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "goodlist=[]\n", - "avglist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 8\n", - " Formula = H4-C2-N-Si\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - "]\n", - "badlist=[]\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 8\n", - " Formula = H4-C2-N-Si\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 4\n", - " Formula = H3-C\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 8\n", - " Formula = H4-C2-N-Si\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 4\n", - " Formula = H3-C\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 8\n", - " Formula = H4-C2-N-Si\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 6\n", - " Formula = H3-C-N-Si\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 8\n", - " Formula = H4-C2-N-Si\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 3\n", - " Formula = H2-C\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 8\n", - " Formula = H4-C2-N-Si\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 4\n", - " Formula = H3-C\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "goodlist=[]\n", - "avglist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 11\n", - " Formula = H6-C3-N-Si\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - "]\n", - "badlist=[]\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 11\n", - " Formula = H6-C3-N-Si\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 4\n", - " Formula = H3-C\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 11\n", - " Formula = H6-C3-N-Si\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 3\n", - " Formula = H2-C\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 11\n", - " Formula = H6-C3-N-Si\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 6\n", - " Formula = H3-C-N-Si\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 11\n", - " Formula = H6-C3-N-Si\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 4\n", - " Formula = H3-C\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 11\n", - " Formula = H6-C3-N-Si\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 4\n", - " Formula = H3-C\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "goodlist=[]\n", - "avglist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 19\n", - " Formula = H11-C5-N-Si2\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - "]\n", - "badlist=[]\n", - "goodlist=[]\n", - "avglist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 23\n", - " Formula = H14-C6-N-Si2\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - "]\n", - "badlist=[]\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 23\n", - " Formula = H14-C6-N-Si2\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 4\n", - " Formula = H3-C\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 23\n", - " Formula = H14-C6-N-Si2\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 6\n", - " Formula = H3-C-N-Si\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 23\n", - " Formula = H14-C6-N-Si2\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 3\n", - " Formula = H2-C\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 23\n", - " Formula = H14-C6-N-Si2\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 4\n", - " Formula = H3-C\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 23\n", - " Formula = H14-C6-N-Si2\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 8\n", - " Formula = H5-C2-Si\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "goodlist=[]\n", - "avglist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 66\n", - " Formula = H38-C20-N5-Si2-Fe\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - "]\n", - "badlist=[]\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 66\n", - " Formula = H38-C20-N5-Si2-Fe\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 8\n", - " Formula = H5-C2-Si\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 66\n", - " Formula = H38-C20-N5-Si2-Fe\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 4\n", - " Formula = H3-C\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 66\n", - " Formula = H38-C20-N5-Si2-Fe\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 3\n", - " Formula = H2-C\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "goodlist=[]\n", - "avglist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 72\n", - " Formula = H41-C21-N6-Si3-Fe\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - "]\n", - "badlist=[]\n", - "goodlist=[]\n", - "avglist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 75\n", - " Formula = H43-C22-N6-Si3-Fe\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - "]\n", - "badlist=[]\n", - "goodlist=[]\n", - "avglist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 79\n", - " Formula = H46-C23-N6-Si3-Fe\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - "]\n", - "badlist=[]\n", - "goodlist=[]\n", - "avglist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 87\n", - " Formula = H51-C25-N6-Si4-Fe\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - "]\n", - "badlist=[]\n", - "goodlist=[]\n", - "avglist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 91\n", - " Formula = H54-C26-N6-Si4-Fe\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - "]\n", - "badlist=[]\n", - "FRAG_RECONSTRUCT. 0 molecules and 2 fragments out of SEQUENTIAL with Heavy\n", - "FRAG_RECONSTRUCT. 14 molecules submitted to sequential with All\n", - "H54-C26-N6-Si4-Fe Rec. Fragment ['Fe', 'N', 'N', 'N', 'N', 'C', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'C', 'C', 'C', 'H', 'H', 'H', 'H', 'H', 'H', 'C', 'C', 'H', 'H', 'H', 'H', 'H', 'H', 'C', 'C', 'H', 'H', 'H', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'Si', 'N', 'C', 'H', 'C', 'H', 'H', 'Si', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'Si', 'N', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'Si', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H']\n", - "H54-C26-N6-Si4-Fe Rec. Fragment ['Fe', 'N', 'N', 'N', 'N', 'C', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'C', 'C', 'C', 'H', 'H', 'H', 'H', 'H', 'H', 'C', 'C', 'H', 'H', 'H', 'H', 'H', 'H', 'C', 'C', 'H', 'H', 'H', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'Si', 'N', 'C', 'H', 'C', 'H', 'H', 'Si', 'N', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'Si', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'Si', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H']\n", - "H H ['H']\n", - "H H ['H']\n", - "H H ['H']\n", - "H H ['H']\n", - "H H ['H']\n", - "H H ['H']\n", - "H H ['H']\n", - "H H ['H']\n", - "H H ['H']\n", - "H H ['H']\n", - "H H ['H']\n", - "H H ['H']\n", - "sublist 2 ['H54-C26-N6-Si4-Fe', 'H']\n", - "list1 2 ['H54-C26-N6-Si4-Fe', 'H54-C26-N6-Si4-Fe']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 1 ['H54-C26-N6-Si4-Fe']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "goodlist=[]\n", - "avglist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 92\n", - " Formula = H55-C26-N6-Si4-Fe\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - "]\n", - "badlist=[]\n", - "sublist 2 ['H55-C26-N6-Si4-Fe', 'H']\n", - "list1 2 ['H55-C26-N6-Si4-Fe', 'H54-C26-N6-Si4-Fe']\n", - "list2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 1 ['H54-C26-N6-Si4-Fe']\n", - "keeplist2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "goodlist=[]\n", - "avglist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 93\n", - " Formula = H56-C26-N6-Si4-Fe\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - "]\n", - "badlist=[]\n", - "sublist 2 ['H56-C26-N6-Si4-Fe', 'H']\n", - "list1 2 ['H56-C26-N6-Si4-Fe', 'H54-C26-N6-Si4-Fe']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 1 ['H54-C26-N6-Si4-Fe']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 93\n", - " Formula = H56-C26-N6-Si4-Fe\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = H\n", - " Number of Atoms = 1\n", - " Formula = H\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "sublist 2 ['H56-C26-N6-Si4-Fe', 'H']\n", - "list1 2 ['H56-C26-N6-Si4-Fe', 'H54-C26-N6-Si4-Fe']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 1 ['H54-C26-N6-Si4-Fe']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 93\n", - " Formula = H56-C26-N6-Si4-Fe\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = H\n", - " Number of Atoms = 1\n", - " Formula = H\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "sublist 2 ['H56-C26-N6-Si4-Fe', 'H']\n", - "list1 2 ['H56-C26-N6-Si4-Fe', 'H54-C26-N6-Si4-Fe']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 1 ['H54-C26-N6-Si4-Fe']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 93\n", - " Formula = H56-C26-N6-Si4-Fe\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = H\n", - " Number of Atoms = 1\n", - " Formula = H\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "sublist 2 ['H56-C26-N6-Si4-Fe', 'H']\n", - "list1 2 ['H56-C26-N6-Si4-Fe', 'H54-C26-N6-Si4-Fe']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 1 ['H54-C26-N6-Si4-Fe']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 93\n", - " Formula = H56-C26-N6-Si4-Fe\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = H\n", - " Number of Atoms = 1\n", - " Formula = H\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "sublist 2 ['H56-C26-N6-Si4-Fe', 'H']\n", - "list1 2 ['H56-C26-N6-Si4-Fe', 'H54-C26-N6-Si4-Fe']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 1 ['H54-C26-N6-Si4-Fe']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 93\n", - " Formula = H56-C26-N6-Si4-Fe\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = H\n", - " Number of Atoms = 1\n", - " Formula = H\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "sublist 2 ['H56-C26-N6-Si4-Fe', 'H']\n", - "list1 2 ['H56-C26-N6-Si4-Fe', 'H54-C26-N6-Si4-Fe']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 1 ['H54-C26-N6-Si4-Fe']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "goodlist=[]\n", - "avglist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 94\n", - " Formula = H57-C26-N6-Si4-Fe\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - "]\n", - "badlist=[]\n", - "sublist 2 ['H57-C26-N6-Si4-Fe', 'H']\n", - "list1 2 ['H57-C26-N6-Si4-Fe', 'H54-C26-N6-Si4-Fe']\n", - "list2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 1 ['H54-C26-N6-Si4-Fe']\n", - "keeplist2 8 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 94\n", - " Formula = H57-C26-N6-Si4-Fe\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = H\n", - " Number of Atoms = 1\n", - " Formula = H\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "sublist 2 ['H57-C26-N6-Si4-Fe', 'H']\n", - "list1 2 ['H57-C26-N6-Si4-Fe', 'H54-C26-N6-Si4-Fe']\n", - "list2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 1 ['H54-C26-N6-Si4-Fe']\n", - "keeplist2 8 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 94\n", - " Formula = H57-C26-N6-Si4-Fe\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = H\n", - " Number of Atoms = 1\n", - " Formula = H\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "sublist 2 ['H57-C26-N6-Si4-Fe', 'H']\n", - "list1 2 ['H57-C26-N6-Si4-Fe', 'H54-C26-N6-Si4-Fe']\n", - "list2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 1 ['H54-C26-N6-Si4-Fe']\n", - "keeplist2 8 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 94\n", - " Formula = H57-C26-N6-Si4-Fe\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = H\n", - " Number of Atoms = 1\n", - " Formula = H\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "sublist 2 ['H57-C26-N6-Si4-Fe', 'H']\n", - "list1 2 ['H57-C26-N6-Si4-Fe', 'H54-C26-N6-Si4-Fe']\n", - "list2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 1 ['H54-C26-N6-Si4-Fe']\n", - "keeplist2 8 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 94\n", - " Formula = H57-C26-N6-Si4-Fe\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = H\n", - " Number of Atoms = 1\n", - " Formula = H\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "sublist 2 ['H57-C26-N6-Si4-Fe', 'H']\n", - "list1 2 ['H57-C26-N6-Si4-Fe', 'H54-C26-N6-Si4-Fe']\n", - "list2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 1 ['H54-C26-N6-Si4-Fe']\n", - "keeplist2 8 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "goodlist=[]\n", - "avglist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 95\n", - " Formula = H58-C26-N6-Si4-Fe\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - "]\n", - "badlist=[]\n", - "sublist 2 ['H58-C26-N6-Si4-Fe', 'H']\n", - "list1 2 ['H58-C26-N6-Si4-Fe', 'H54-C26-N6-Si4-Fe']\n", - "list2 8 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 1 ['H54-C26-N6-Si4-Fe']\n", - "keeplist2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 95\n", - " Formula = H58-C26-N6-Si4-Fe\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = H\n", - " Number of Atoms = 1\n", - " Formula = H\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "sublist 2 ['H58-C26-N6-Si4-Fe', 'H']\n", - "list1 2 ['H58-C26-N6-Si4-Fe', 'H54-C26-N6-Si4-Fe']\n", - "list2 8 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 1 ['H54-C26-N6-Si4-Fe']\n", - "keeplist2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 95\n", - " Formula = H58-C26-N6-Si4-Fe\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = H\n", - " Number of Atoms = 1\n", - " Formula = H\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "sublist 2 ['H58-C26-N6-Si4-Fe', 'H']\n", - "list1 2 ['H58-C26-N6-Si4-Fe', 'H54-C26-N6-Si4-Fe']\n", - "list2 8 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 1 ['H54-C26-N6-Si4-Fe']\n", - "keeplist2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 95\n", - " Formula = H58-C26-N6-Si4-Fe\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = H\n", - " Number of Atoms = 1\n", - " Formula = H\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "sublist 2 ['H58-C26-N6-Si4-Fe', 'H']\n", - "list1 2 ['H58-C26-N6-Si4-Fe', 'H54-C26-N6-Si4-Fe']\n", - "list2 8 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 1 ['H54-C26-N6-Si4-Fe']\n", - "keeplist2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 95\n", - " Formula = H58-C26-N6-Si4-Fe\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = H\n", - " Number of Atoms = 1\n", - " Formula = H\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "sublist 2 ['H58-C26-N6-Si4-Fe', 'H']\n", - "list1 2 ['H58-C26-N6-Si4-Fe', 'H54-C26-N6-Si4-Fe']\n", - "list2 8 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 1 ['H54-C26-N6-Si4-Fe']\n", - "keeplist2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "goodlist=[]\n", - "avglist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 96\n", - " Formula = H59-C26-N6-Si4-Fe\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - "]\n", - "badlist=[]\n", - "sublist 2 ['H59-C26-N6-Si4-Fe', 'H']\n", - "list1 2 ['H59-C26-N6-Si4-Fe', 'H54-C26-N6-Si4-Fe']\n", - "list2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 1 ['H54-C26-N6-Si4-Fe']\n", - "keeplist2 6 ['H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 96\n", - " Formula = H59-C26-N6-Si4-Fe\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = H\n", - " Number of Atoms = 1\n", - " Formula = H\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "sublist 2 ['H59-C26-N6-Si4-Fe', 'H']\n", - "list1 2 ['H59-C26-N6-Si4-Fe', 'H54-C26-N6-Si4-Fe']\n", - "list2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 1 ['H54-C26-N6-Si4-Fe']\n", - "keeplist2 6 ['H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 96\n", - " Formula = H59-C26-N6-Si4-Fe\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = H\n", - " Number of Atoms = 1\n", - " Formula = H\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "sublist 2 ['H59-C26-N6-Si4-Fe', 'H']\n", - "list1 2 ['H59-C26-N6-Si4-Fe', 'H54-C26-N6-Si4-Fe']\n", - "list2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 1 ['H54-C26-N6-Si4-Fe']\n", - "keeplist2 6 ['H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 96\n", - " Formula = H59-C26-N6-Si4-Fe\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = H\n", - " Number of Atoms = 1\n", - " Formula = H\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "sublist 2 ['H59-C26-N6-Si4-Fe', 'H']\n", - "list1 2 ['H59-C26-N6-Si4-Fe', 'H54-C26-N6-Si4-Fe']\n", - "list2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 1 ['H54-C26-N6-Si4-Fe']\n", - "keeplist2 6 ['H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 96\n", - " Formula = H59-C26-N6-Si4-Fe\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = H\n", - " Number of Atoms = 1\n", - " Formula = H\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "sublist 2 ['H59-C26-N6-Si4-Fe', 'H']\n", - "list1 2 ['H59-C26-N6-Si4-Fe', 'H54-C26-N6-Si4-Fe']\n", - "list2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 1 ['H54-C26-N6-Si4-Fe']\n", - "keeplist2 6 ['H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 96\n", - " Formula = H59-C26-N6-Si4-Fe\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = H\n", - " Number of Atoms = 1\n", - " Formula = H\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "sublist 2 ['H59-C26-N6-Si4-Fe', 'H']\n", - "list1 2 ['H59-C26-N6-Si4-Fe', 'H54-C26-N6-Si4-Fe']\n", - "list2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 1 ['H54-C26-N6-Si4-Fe']\n", - "keeplist2 6 ['H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "MOLECULE.SPLIT COMPLEX: labels=['Fe', 'Si', 'Si', 'N', 'N', 'N', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'Si', 'Si', 'N', 'N', 'N', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H']\n", - "MOLECULE.SPLIT COMPLEX: metal_idx=[0]\n", - "MOLECULE.SPLIT COMPLEX: rest_idx=[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96]\n", - "SPLIT COMPLEX: rest labels: ['Si', 'Si', 'N', 'N', 'N', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'Si', 'Si', 'N', 'N', 'N', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H']\n", - "SPLIT COMPLEX: rest coord: [[8.449874000000001, 5.7791777, 2.975669100000001], [9.278741100000001, 3.8992945, 0.7620135999999995], [9.3167019, 2.1183919, 4.3831806], [7.3480123, 1.2225094, 4.864391], [9.4012013, 4.5046029, 2.352600599999999], [7.9985769, 2.240877, 4.2844334], [7.5737166, 2.9516274, 3.8610439], [9.5053341, 0.9373664, 5.062031], [10.3345884, 0.5730952, 5.275255], [8.3132455, 0.3829999, 5.3754586], [8.1711944, -0.4082835, 5.8432698], [5.87487, 1.023518, 4.9747898], [5.1719762, 2.0891753, 4.1479642], [5.3805676, 2.9572459, 4.5018811], [4.223759, 1.9487108, 4.1843754], [5.4678036, 2.0357988, 3.2376841], [5.4727297, 1.1415082, 6.4335682], [5.9158282, 0.4607236, 6.9443445], [4.5224711, 1.0319459, 6.5132359], [5.7239439, 2.0067695, 6.7666579], [5.5347071, -0.3595891, 4.4407103], [5.8310686, -0.4326307, 3.5304302], [4.5848724, -0.4925622, 4.4800344], [5.9736228, -1.0253908, 4.9752267], [8.609570400000003, 5.8779711, 4.841233500000001], [8.3266, 5.0482941, 5.2315616], [8.058258899999998, 6.5915308, 5.171847200000002], [9.525932400000002, 6.0465285, 5.075721600000001], [6.594882800000001, 5.5689492000000005, 2.649279100000001], [6.3530503, 6.0558928000000005, 1.8584278000000012], [6.097206800000002, 5.9070004, 3.397893400000001], [6.394439200000001, 4.6381378, 2.525480999999999], [8.9071118, 7.4727114, 2.3103635999999987], [9.841877199999999, 7.6319045, 2.4570279], [8.391796800000002, 8.144131699999999, 2.764338500000001], [8.720060799999999, 7.5082957, 1.3690612000000009], [8.2408604, 4.9630790000000005, -0.39294970000000085], [7.321523400000002, 4.9321768, -0.11797229999999992], [8.3183877, 4.6306464, -1.290413000000001], [8.554951800000001, 5.8704797, -0.35974269999999997], [10.9419254, 3.7504022, -0.09845590000000115], [11.345675600000002, 4.6184728, -0.16457860000000046], [10.8147494, 3.3880037, -0.9787331000000012], [11.5130712, 3.1688791, 0.4078055], [8.4864188, 2.1875005, 0.7283697], [8.964936600000001, 1.6022317, 1.3195420000000002], [8.5202866, 1.8372757, -0.16457860000000046], [7.573605000000001, 2.2521142, 1.0122313999999992], [12.8761832, 5.7791777, 4.3065714], [12.0473162, 3.8992945, 6.5202269], [12.0093553, 2.1183919, 2.8990599], [13.9780449, 1.2225094, 2.4178495], [11.924855999999998, 4.5046029, 4.9296399], [13.3274803, 2.240877, 2.9978071], [13.7523407, 2.9516274, 3.4211966], [11.8207232, 0.9373664, 2.2202095], [10.9914689, 0.5730952, 2.0069855], [13.0128117, 0.3829999, 1.9067819], [13.1548629, -0.4082835, 1.4389707], [15.4511873, 1.023518, 2.3074507], [16.154081, 2.0891753, 3.1342763], [15.9454897, 2.9572459, 2.7803594], [17.1022983, 1.9487108, 3.0978651], [15.8582537, 2.0357988, 4.0445564], [15.8533276, 1.1415082, 0.8486723], [15.4102291, 0.4607236, 0.337896], [16.8035861, 1.0319459, 0.7690046], [15.6021134, 2.0067695, 0.5155826], [15.7913501, -0.3595891, 2.8415302], [15.4949887, -0.4326307, 3.7518103], [16.7411848, -0.4925622, 2.8022061], [15.3524344, -1.0253908, 2.3070138], [12.7164869, 5.8779711, 2.441007], [12.999457199999998, 5.0482941, 2.0506789], [13.2677984, 6.5915308, 2.1103933], [11.8001249, 6.0465285, 2.2065189], [14.7311745, 5.5689492000000005, 4.6329614], [14.973006999999999, 6.0558928000000005, 5.4238127], [15.228850399999999, 5.9070004, 3.8843471], [14.9316181, 4.6381378, 4.7567595], [12.4189454, 7.4727114, 4.9718769], [11.48418, 7.6319045, 4.8252126], [12.9342604, 8.144131699999999, 4.517902], [12.6059965, 7.5082957, 5.9131793], [13.0851969, 4.9630790000000005, 7.6751902], [14.004533899999998, 4.9321768, 7.4002128], [13.0076696, 4.6306464, 8.5726535], [12.771105499999999, 5.8704797, 7.6419832], [10.3841319, 3.7504022, 7.3806964], [9.980381699999999, 4.6184728, 7.4468191], [10.5113079, 3.3880037, 8.2609736], [9.8129861, 3.1688791, 6.874435], [12.8396385, 2.1875005, 6.5538708], [12.3611207, 1.6022317, 5.9626985], [12.8057707, 1.8372757, 7.4468191], [13.7524523, 2.2521142, 6.2700091]]\n", - "SPLIT COMPLEX: rest indices: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96]\n", - "SPLIT COMPLEX: rest radii: [1.11, 1.11, 0.71, 0.71, 0.71, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.73, 0.31, 0.31, 0.31, 0.73, 0.31, 0.31, 0.31, 0.73, 0.31, 0.31, 0.31, 0.73, 0.31, 0.31, 0.31, 0.73, 0.31, 0.31, 0.31, 0.73, 0.31, 0.31, 0.31, 0.73, 0.31, 0.31, 0.31, 0.73, 0.31, 0.31, 0.31, 0.73, 0.31, 0.31, 0.31, 1.11, 1.11, 0.71, 0.71, 0.71, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.73, 0.31, 0.31, 0.31, 0.73, 0.31, 0.31, 0.31, 0.73, 0.31, 0.31, 0.31, 0.73, 0.31, 0.31, 0.31, 0.73, 0.31, 0.31, 0.31, 0.73, 0.31, 0.31, 0.31, 0.73, 0.31, 0.31, 0.31, 0.73, 0.31, 0.31, 0.31, 0.73, 0.31, 0.31, 0.31]\n", - "SPLIT COMPLEX: splitting species with 96 atoms in block\n", - "labels=['Si', 'Si', 'N', 'N', 'N', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'Si', 'Si', 'N', 'N', 'N', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H'] 96\n", - "indices=None\n", - "SPLIT COMPLEX: received 4 blocks\n", - "PREPARING BLOCK: [2, 3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23]\n", - "CREATING LIGAND: H12-C7-N2\n", - "PREPARING BLOCK: [48, 49, 52, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95]\n", - "CREATING LIGAND: H18-C6-N-Si2\n", - "PREPARING BLOCK: [50, 51, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71]\n", - "CREATING LIGAND: H12-C7-N2\n", - "PREPARING BLOCK: [0, 1, 4, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47]\n", - "CREATING LIGAND: H18-C6-N-Si2\n", - "LIGAND.SPLIT_LIGAND: self.indices=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]\n", - "LIGAND.SPLIT_LIGAND: conn_idx=[0]\n", - "LIGAND.SPLIT_LIGAND: conn_labels=['N']\n", - "LIGAND.SPLIT_LIGAND: conn_coord=[[9.3167019, 2.1183919, 4.3831806]]\n", - "LIGAND.SPLIT_LIGAND: conn_radii=[0.71]\n", - "blocklist=[[0]]\n", - "LIGAND.SPLIT_LIGAND: block=[0]\n", - "LIGAND.SPLIT_LIGAND: self.indices=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26]\n", - "LIGAND.SPLIT_LIGAND: conn_idx=[2]\n", - "LIGAND.SPLIT_LIGAND: conn_labels=['N']\n", - "LIGAND.SPLIT_LIGAND: conn_coord=[[11.924855999999998, 4.5046029, 4.9296399]]\n", - "LIGAND.SPLIT_LIGAND: conn_radii=[0.71]\n", - "blocklist=[[0]]\n", - "LIGAND.SPLIT_LIGAND: block=[0]\n", - "LIGAND.SPLIT_LIGAND: self.indices=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]\n", - "LIGAND.SPLIT_LIGAND: conn_idx=[0]\n", - "LIGAND.SPLIT_LIGAND: conn_labels=['N']\n", - "LIGAND.SPLIT_LIGAND: conn_coord=[[12.0093553, 2.1183919, 2.8990599]]\n", - "LIGAND.SPLIT_LIGAND: conn_radii=[0.71]\n", - "blocklist=[[0]]\n", - "LIGAND.SPLIT_LIGAND: block=[0]\n", - "LIGAND.SPLIT_LIGAND: self.indices=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26]\n", - "LIGAND.SPLIT_LIGAND: conn_idx=[2]\n", - "LIGAND.SPLIT_LIGAND: conn_labels=['N']\n", - "LIGAND.SPLIT_LIGAND: conn_coord=[[9.4012013, 4.5046029, 2.352600599999999]]\n", - "LIGAND.SPLIT_LIGAND: conn_radii=[0.71]\n", - "blocklist=[[0]]\n", - "LIGAND.SPLIT_LIGAND: block=[0]\n", - "ADD_ATOM: Metalist length 1\n", - "ADD_ATOM: Ligand Atoms 21\n", - "ADD_ATOM: site= 0\n", - "ADD_ATOM: target ligand atom N\n", - "ADD_ATOM: evaluating apos=array([9.3167019, 2.1183919, 4.3831806]) and tgt.coord=[10.6630286, 3.620332, 3.6411202]\n", - "ADD_ATOM: received newlab=['N', 'N', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'H']\n", - "ADD_ATOM: received tmpconmat=array([[0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],\n", - " [0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0],\n", - " [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]])\n", - "ADD_ATOM: received tmpconnec=array([3, 3, 3, 1, 3, 1, 3, 1, 4, 4, 1, 1, 1, 4, 1, 1, 1, 4, 1, 1, 1, 1])\n", - "ADD_ATOM: received tmpconnec[posadded]=1\n", - "ADD_ATOM: Chosen Metal index None. H is added at site 0\n", - "ADD_ATOM: Metalist length 1\n", - "ADD_ATOM: Ligand Atoms 27\n", - "ADD_ATOM: site= 2\n", - "ADD_ATOM: target ligand atom N\n", - "ADD_ATOM: evaluating apos=array([11.924856 , 4.5046029, 4.9296399]) and tgt.coord=[10.6630286, 3.620332, 3.6411202]\n", - "ADD_ATOM: received newlab=['Si', 'Si', 'N', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'H']\n", - "ADD_ATOM: received tmpconmat=array([[0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0,\n", - " 0, 1, 0, 0, 0, 0],\n", - " [1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 1],\n", - " [1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1,\n", - " 1, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 1, 1, 1, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 1, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 1, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 1, 0, 0, 0, 0],\n", - " [0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0]])\n", - "ADD_ATOM: received tmpconnec=array([4, 4, 3, 4, 1, 1, 1, 4, 1, 1, 1, 4, 1, 1, 1, 4, 1, 1, 1, 4, 1, 1,\n", - " 1, 4, 1, 1, 1, 1])\n", - "ADD_ATOM: received tmpconnec[posadded]=1\n", - "ADD_ATOM: Chosen Metal index None. H is added at site 2\n", - "ADD_ATOM: Metalist length 1\n", - "ADD_ATOM: Ligand Atoms 21\n", - "ADD_ATOM: site= 0\n", - "ADD_ATOM: target ligand atom N\n", - "ADD_ATOM: evaluating apos=array([12.0093553, 2.1183919, 2.8990599]) and tgt.coord=[10.6630286, 3.620332, 3.6411202]\n", - "ADD_ATOM: received newlab=['N', 'N', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'H']\n", - "ADD_ATOM: received tmpconmat=array([[0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],\n", - " [0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0],\n", - " [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]])\n", - "ADD_ATOM: received tmpconnec=array([3, 3, 3, 1, 3, 1, 3, 1, 4, 4, 1, 1, 1, 4, 1, 1, 1, 4, 1, 1, 1, 1])\n", - "ADD_ATOM: received tmpconnec[posadded]=1\n", - "ADD_ATOM: Chosen Metal index None. H is added at site 0\n", - "ADD_ATOM: Metalist length 1\n", - "ADD_ATOM: Ligand Atoms 27\n", - "ADD_ATOM: site= 2\n", - "ADD_ATOM: target ligand atom N\n", - "ADD_ATOM: evaluating apos=array([9.4012013, 4.5046029, 2.3526006]) and tgt.coord=[10.6630286, 3.620332, 3.6411202]\n", - "ADD_ATOM: received newlab=['Si', 'Si', 'N', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'H']\n", - "ADD_ATOM: received tmpconmat=array([[0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0,\n", - " 0, 1, 0, 0, 0, 0],\n", - " [1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 1],\n", - " [1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1,\n", - " 1, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 1, 1, 1, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 1, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 1, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 1, 0, 0, 0, 0],\n", - " [0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0]])\n", - "ADD_ATOM: received tmpconnec=array([4, 4, 3, 4, 1, 1, 1, 4, 1, 1, 1, 4, 1, 1, 1, 4, 1, 1, 1, 4, 1, 1,\n", - " 1, 4, 1, 1, 1, 1])\n", - "ADD_ATOM: received tmpconnec[posadded]=1\n", - "ADD_ATOM: Chosen Metal index None. H is added at site 2\n", - "symbols=['Fe', 'N', 'N', 'N', 'N']\n", - "positions=[[10.6630286, 3.620332, 3.6411202], [9.3167019, 2.1183919, 4.3831806], [11.924855999999998, 4.5046029, 4.9296399], [12.0093553, 2.1183919, 2.8990599], [9.4012013, 4.5046029, 2.352600599999999]]\n", - "4\n", - "[[1, 2], [1, 3], [1, 4], [1, 5]]\n", - "[1.439, 1.299, 1.439, 1.299]\n", - "1.369\n", - "reordered_newmolec=------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 97\n", - " Formula = H60-C26-N6-Si4-Fe\n", - " Has Adjacency Matrix = YES\n", - " Number of Ligands = 4\n", - " Number of Metals = 1\n", - "---------------------------------------------------\n", - "\n", - "COMPARE_SPECIES. Comparing:\n", - "------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 97\n", - " Formula = H60-C26-N6-Si4-Fe\n", - " Has Adjacency Matrix = YES\n", - " Number of Ligands = 4\n", - " Number of Metals = 1\n", - "---------------------------------------------------\n", - "\n", - "------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 97\n", - " Formula = H60-C26-N6-Si4-Fe\n", - " Has Adjacency Matrix = YES\n", - " Number of Ligands = 4\n", - " Number of Metals = 1\n", - "---------------------------------------------------\n", - "\n", - "['Fe', 'Si', 'Si', 'N', 'N', 'N', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'Si', 'Si', 'N', 'N', 'N', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H']\n", - "['Fe', 'Si', 'Si', 'N', 'N', 'N', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'Si', 'Si', 'N', 'N', 'N', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H']\n", - "mol1.adj_types=array([[0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " ...,\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0]])\n", - "mol2.adj_types=array([[0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " ...,\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0]])\n", - "kdx ldx elem1 - elem2 : reordered - reference\n", - "goodlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 97\n", - " Formula = H60-C26-N6-Si4-Fe\n", - " Has Adjacency Matrix = YES\n", - " Number of Ligands = 4\n", - " Number of Metals = 1\n", - "---------------------------------------------------\n", - "]\n", - "avglist=[]\n", - "badlist=[]\n", - "sublist 2 ['H54-C26-N6-Si4-Fe', 'H']\n", - "list1 1 ['H54-C26-N6-Si4-Fe']\n", - "list2 6 ['H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 0 []\n", - "keeplist2 5 ['H', 'H', 'H', 'H', 'H']\n", - "\n", - "goodlist=[]\n", - "avglist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 92\n", - " Formula = H55-C26-N6-Si4-Fe\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - "]\n", - "badlist=[]\n", - "sublist 2 ['H55-C26-N6-Si4-Fe', 'H']\n", - "list1 1 ['H55-C26-N6-Si4-Fe']\n", - "list2 5 ['H', 'H', 'H', 'H', 'H']\n", - "keeplist1 0 []\n", - "keeplist2 4 ['H', 'H', 'H', 'H']\n", - "\n", - "goodlist=[]\n", - "avglist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 93\n", - " Formula = H56-C26-N6-Si4-Fe\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - "]\n", - "badlist=[]\n", - "sublist 2 ['H56-C26-N6-Si4-Fe', 'H']\n", - "list1 1 ['H56-C26-N6-Si4-Fe']\n", - "list2 4 ['H', 'H', 'H', 'H']\n", - "keeplist1 0 []\n", - "keeplist2 3 ['H', 'H', 'H']\n", - "\n", - "goodlist=[]\n", - "avglist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 94\n", - " Formula = H57-C26-N6-Si4-Fe\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - "]\n", - "badlist=[]\n", - "sublist 2 ['H57-C26-N6-Si4-Fe', 'H']\n", - "list1 1 ['H57-C26-N6-Si4-Fe']\n", - "list2 3 ['H', 'H', 'H']\n", - "keeplist1 0 []\n", - "keeplist2 2 ['H', 'H']\n", - "\n", - "goodlist=[]\n", - "avglist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 95\n", - " Formula = H58-C26-N6-Si4-Fe\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - "]\n", - "badlist=[]\n", - "sublist 2 ['H58-C26-N6-Si4-Fe', 'H']\n", - "list1 1 ['H58-C26-N6-Si4-Fe']\n", - "list2 2 ['H', 'H']\n", - "keeplist1 0 []\n", - "keeplist2 1 ['H']\n", - "\n", - "goodlist=[]\n", - "avglist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 96\n", - " Formula = H59-C26-N6-Si4-Fe\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - "]\n", - "badlist=[]\n", - "sublist 2 ['H59-C26-N6-Si4-Fe', 'H']\n", - "list1 1 ['H59-C26-N6-Si4-Fe']\n", - "list2 1 ['H']\n", - "keeplist1 0 []\n", - "keeplist2 0 []\n", - "\n", - "MOLECULE.SPLIT COMPLEX: labels=['Fe', 'Si', 'Si', 'N', 'N', 'N', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'Si', 'Si', 'N', 'N', 'N', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H']\n", - "MOLECULE.SPLIT COMPLEX: metal_idx=[0]\n", - "MOLECULE.SPLIT COMPLEX: rest_idx=[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96]\n", - "SPLIT COMPLEX: rest labels: ['Si', 'Si', 'N', 'N', 'N', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'Si', 'Si', 'N', 'N', 'N', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H']\n", - "SPLIT COMPLEX: rest coord: [[3.070931299999998, -5.7791777, 10.2579096], [3.8997984000000017, -3.8992945, 8.0442541], [4.022258600000001, -4.5046029, 9.6348411], [1.9690696, -1.2225094, 12.1466315], [3.9377592, -2.1183919, 11.6654211], [2.6196342, -2.240877, 11.5666739], [2.1947738, -2.9516274, 11.1432844], [3.5281690999999995, -7.4727114, 9.5926041], [6.105237299999999, -7.6319045, 12.1074531], [3.2306275999999983, -5.8779711, 12.123474], [4.146989699999999, -6.0465285, 12.3579621], [0.4959273, -1.023518, 12.2570303], [-0.2069665, -2.0891753, 11.4302047], [0.0016249, -2.9572459, 11.7841216], [-1.1551837, -1.9487108, 11.4666159], [1.0154964, -4.6381378, 9.8077215], [0.0937869, -1.1415082, 13.7158087], [2.679316100000001, -6.5915308, 12.4540877], [-0.8564716, -1.0319459, 13.7954764], [0.3450012, -2.0067695, 14.0488984], [1.215940100000001, -5.5689492000000005, 9.9315196], [0.9741076000000017, -6.0558928000000005, 9.1406683], [0.7182641000000007, -5.9070004, 10.6801339], [3.0128540999999984, -8.144131699999999, 10.046579], [2.9343028, -0.3829999, 12.6576991], [2.9476572999999995, -5.0482941, 12.5138021], [0.5368855, -0.4607236, 14.226585], [2.7922516, 0.4082835, 13.1255103], [0.1557644, 0.3595891, 11.7229508], [0.4521258, 0.4326307, 10.8126707], [-0.7940703, 0.4925622, 11.7622749], [0.0888608, -2.0357988, 10.5199246], [4.1263913, -0.9373664, 12.3442715], [5.6125262, -0.5730952, 9.289226], [0.5946801, 1.0253909, 12.2574672], [3.5859938, -1.6022317, 8.6017825], [3.1074761, -2.1875005, 8.0106102], [2.1946622, -2.2521141, 8.2944719], [2.9394449000000016, -4.6306463, 5.9918275], [3.1413439, -1.8372757, 7.1176619], [5.5629826, -3.7504021, 7.1837846], [6.1341285, -3.1688791, 7.690046], [5.4358067, -3.3880037, 6.3035074], [5.9667329, -4.6184728, 7.1176619], [2.8619176000000017, -4.9630790000000005, 6.8892908], [3.3411180000000016, -7.5082957, 8.6513017], [3.1760090000000005, -5.8704797, 6.9224978], [1.9425806000000012, -4.9321768, 7.1642682], [7.4972405, -5.7791777, 11.5888119], [6.668373500000001, -3.8992945, 13.8024673], [6.545913200000001, -4.5046029, 12.2118804], [8.5991022, -1.2225094, 9.70009], [6.6304126, -2.1183919, 10.1813004], [7.9485376, -2.240877, 10.2800476], [8.373398, -2.9516274, 10.7034371], [7.040002699999999, -7.4727114, 12.2541174], [4.462934499999999, -7.6319045, 9.7392684], [7.3375442, -5.8779711, 9.7232475], [6.421182099999999, -6.0465285, 9.4887594], [10.0722445, -1.023518, 9.5896912], [10.7751383, -2.0891753, 10.4165168], [10.5665469, -2.9572459, 10.0625999], [11.7233555, -1.9487108, 10.3801056], [9.552675399999998, -4.6381378, 12.039], [10.4743849, -1.1415082, 8.1309128], [7.888855700000001, -6.5915308, 9.3926338], [11.4246434, -1.0319459, 8.0512451], [10.2231706, -2.0067695, 7.7978231], [9.352231799999998, -5.5689492000000005, 11.9152019], [9.594064199999998, -6.0558928000000005, 12.7060532], [9.8499077, -5.9070004, 11.1665876], [7.5553177, -8.144131699999999, 11.8001425], [7.633869, -0.3829999, 9.1890223], [7.620514499999999, -5.0482941, 9.3329194], [10.0312863, -0.4607236, 7.6201365], [7.7759202, 0.4082835, 8.7212112], [10.4124074, 0.3595891, 10.1237707], [10.116046, 0.4326307, 11.0340508], [11.3622421, 0.4925622, 10.0844466], [10.479311, -2.0357988, 11.3267969], [6.4417805, -0.9373664, 9.50245], [4.9556457, -0.5730952, 12.5574955], [9.9734917, 1.0253909, 9.5892543], [6.982178000000001, -1.6022317, 13.244939], [7.460695699999999, -2.1875005, 13.8361113], [8.373509599999998, -2.2521141, 13.5522496], [7.628726799999999, -4.6306464, 15.854894000000002], [7.426827899999999, -1.8372757, 14.729059600000001], [5.005189099999999, -3.7504021, 14.6629369], [4.4340433, -3.1688791, 14.1566755], [5.1323650999999995, -3.3880037, 15.5432141], [4.601438899999998, -4.6184728, 14.729059600000001], [7.7062541999999965, -4.9630790000000005, 14.957430700000002], [7.2270538, -7.5082957, 13.1954198], [7.3921627, -5.8704797, 14.9242237], [8.625591099999998, -4.9321768, 14.6824533]]\n", - "SPLIT COMPLEX: rest indices: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96]\n", - "SPLIT COMPLEX: rest radii: [1.11, 1.11, 0.71, 0.71, 0.71, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.73, 0.31, 0.31, 0.31, 0.73, 0.31, 0.31, 0.31, 0.73, 0.31, 0.31, 0.31, 0.73, 0.31, 0.31, 0.31, 0.73, 0.31, 0.31, 0.31, 0.73, 0.31, 0.31, 0.31, 0.73, 0.31, 0.31, 0.31, 0.73, 0.31, 0.31, 0.31, 0.73, 0.31, 0.31, 0.31, 1.11, 1.11, 0.71, 0.71, 0.71, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.73, 0.31, 0.31, 0.31, 0.73, 0.31, 0.31, 0.31, 0.73, 0.31, 0.31, 0.31, 0.73, 0.31, 0.31, 0.31, 0.73, 0.31, 0.31, 0.31, 0.73, 0.31, 0.31, 0.31, 0.73, 0.31, 0.31, 0.31, 0.73, 0.31, 0.31, 0.31, 0.73, 0.31, 0.31, 0.31]\n", - "SPLIT COMPLEX: splitting species with 96 atoms in block\n", - "labels=['Si', 'Si', 'N', 'N', 'N', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'Si', 'Si', 'N', 'N', 'N', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H'] 96\n", - "indices=None\n", - "SPLIT COMPLEX: received 4 blocks\n", - "PREPARING BLOCK: [3, 4, 5, 6, 11, 12, 13, 14, 16, 18, 19, 24, 26, 27, 28, 29, 30, 31, 32, 34, 81]\n", - "CREATING LIGAND: H12-C7-N2\n", - "PREPARING BLOCK: [8, 48, 49, 50, 55, 57, 58, 63, 65, 68, 69, 70, 71, 73, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95]\n", - "CREATING LIGAND: H18-C6-N-Si2\n", - "PREPARING BLOCK: [33, 51, 52, 53, 54, 59, 60, 61, 62, 64, 66, 67, 72, 74, 75, 76, 77, 78, 79, 80, 82]\n", - "CREATING LIGAND: H12-C7-N2\n", - "PREPARING BLOCK: [0, 1, 2, 7, 9, 10, 15, 17, 20, 21, 22, 23, 25, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 56]\n", - "CREATING LIGAND: H18-C6-N-Si2\n", - "LIGAND.SPLIT_LIGAND: self.indices=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]\n", - "LIGAND.SPLIT_LIGAND: conn_idx=[1]\n", - "LIGAND.SPLIT_LIGAND: conn_labels=['N']\n", - "LIGAND.SPLIT_LIGAND: conn_coord=[[3.9377592, -2.1183919, 11.6654211]]\n", - "LIGAND.SPLIT_LIGAND: conn_radii=[0.71]\n", - "blocklist=[[0]]\n", - "LIGAND.SPLIT_LIGAND: block=[0]\n", - "LIGAND.SPLIT_LIGAND: self.indices=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26]\n", - "LIGAND.SPLIT_LIGAND: conn_idx=[3]\n", - "LIGAND.SPLIT_LIGAND: conn_labels=['N']\n", - "LIGAND.SPLIT_LIGAND: conn_coord=[[6.545913200000001, -4.5046029, 12.2118804]]\n", - "LIGAND.SPLIT_LIGAND: conn_radii=[0.71]\n", - "blocklist=[[0]]\n", - "LIGAND.SPLIT_LIGAND: block=[0]\n", - "LIGAND.SPLIT_LIGAND: self.indices=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]\n", - "LIGAND.SPLIT_LIGAND: conn_idx=[2]\n", - "LIGAND.SPLIT_LIGAND: conn_labels=['N']\n", - "LIGAND.SPLIT_LIGAND: conn_coord=[[6.6304126, -2.1183919, 10.1813004]]\n", - "LIGAND.SPLIT_LIGAND: conn_radii=[0.71]\n", - "blocklist=[[0]]\n", - "LIGAND.SPLIT_LIGAND: block=[0]\n", - "LIGAND.SPLIT_LIGAND: self.indices=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26]\n", - "LIGAND.SPLIT_LIGAND: conn_idx=[2]\n", - "LIGAND.SPLIT_LIGAND: conn_labels=['N']\n", - "LIGAND.SPLIT_LIGAND: conn_coord=[[4.022258600000001, -4.5046029, 9.6348411]]\n", - "LIGAND.SPLIT_LIGAND: conn_radii=[0.71]\n", - "blocklist=[[0]]\n", - "LIGAND.SPLIT_LIGAND: block=[0]\n", - "ADD_ATOM: Metalist length 1\n", - "ADD_ATOM: Ligand Atoms 21\n", - "ADD_ATOM: site= 1\n", - "ADD_ATOM: target ligand atom N\n", - "ADD_ATOM: evaluating apos=array([ 3.9377592, -2.1183919, 11.6654211]) and tgt.coord=[5.2840859, -3.620332, 10.9233607]\n", - "ADD_ATOM: received newlab=['N', 'N', 'C', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H']\n", - "ADD_ATOM: received tmpconmat=array([[0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1],\n", - " [1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0],\n", - " [0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]])\n", - "ADD_ATOM: received tmpconnec=array([3, 3, 3, 1, 4, 4, 1, 1, 4, 1, 1, 3, 1, 1, 4, 1, 1, 1, 3, 1, 1, 1])\n", - "ADD_ATOM: received tmpconnec[posadded]=1\n", - "ADD_ATOM: Chosen Metal index None. H is added at site 1\n", - "ADD_ATOM: Metalist length 1\n", - "ADD_ATOM: Ligand Atoms 27\n", - "ADD_ATOM: site= 3\n", - "ADD_ATOM: target ligand atom N\n", - "ADD_ATOM: evaluating apos=array([ 6.5459132, -4.5046029, 12.2118804]) and tgt.coord=[5.2840859, -3.620332, 10.9233607]\n", - "ADD_ATOM: received newlab=['H', 'Si', 'Si', 'N', 'C', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'H']\n", - "ADD_ATOM: received tmpconmat=array([[0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0,\n", - " 0, 1, 0, 0, 0, 0],\n", - " [0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 1],\n", - " [1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 1, 0, 0, 0],\n", - " [0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 1, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1,\n", - " 1, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0,\n", - " 0, 0, 0, 1, 1, 0],\n", - " [0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 1, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 1, 0, 0, 0, 0],\n", - " [0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0]])\n", - "ADD_ATOM: received tmpconnec=array([1, 4, 4, 3, 4, 4, 1, 1, 1, 4, 1, 1, 1, 1, 1, 4, 1, 1, 1, 4, 1, 1,\n", - " 1, 4, 1, 1, 1, 1])\n", - "ADD_ATOM: received tmpconnec[posadded]=1\n", - "ADD_ATOM: Chosen Metal index None. H is added at site 3\n", - "ADD_ATOM: Metalist length 1\n", - "ADD_ATOM: Ligand Atoms 21\n", - "ADD_ATOM: site= 2\n", - "ADD_ATOM: target ligand atom N\n", - "ADD_ATOM: evaluating apos=array([ 6.6304126, -2.1183919, 10.1813004]) and tgt.coord=[5.2840859, -3.620332, 10.9233607]\n", - "ADD_ATOM: received newlab=['H', 'N', 'N', 'C', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H']\n", - "ADD_ATOM: received tmpconmat=array([[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0],\n", - " [0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1],\n", - " [0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]])\n", - "ADD_ATOM: received tmpconnec=array([1, 3, 3, 3, 1, 4, 4, 1, 1, 4, 1, 1, 3, 1, 1, 4, 1, 1, 1, 3, 1, 1])\n", - "ADD_ATOM: received tmpconnec[posadded]=1\n", - "ADD_ATOM: Chosen Metal index None. H is added at site 2\n", - "ADD_ATOM: Metalist length 1\n", - "ADD_ATOM: Ligand Atoms 27\n", - "ADD_ATOM: site= 2\n", - "ADD_ATOM: target ligand atom N\n", - "ADD_ATOM: evaluating apos=array([ 4.0222586, -4.5046029, 9.6348411]) and tgt.coord=[5.2840859, -3.620332, 10.9233607]\n", - "ADD_ATOM: received newlab=['Si', 'Si', 'N', 'C', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H']\n", - "ADD_ATOM: received tmpconmat=array([[0, 0, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0,\n", - " 1, 0, 0, 0, 0, 0],\n", - " [1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 1],\n", - " [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 1, 0, 0, 1, 0],\n", - " [1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 1, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,\n", - " 0, 0, 1, 1, 0, 0],\n", - " [0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 1, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 1, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0]])\n", - "ADD_ATOM: received tmpconnec=array([4, 4, 3, 4, 4, 1, 1, 1, 4, 1, 1, 1, 1, 1, 4, 1, 1, 1, 4, 1, 1, 1,\n", - " 4, 1, 1, 1, 1, 1])\n", - "ADD_ATOM: received tmpconnec[posadded]=1\n", - "ADD_ATOM: Chosen Metal index None. H is added at site 2\n", - "symbols=['Fe', 'N', 'N', 'N', 'N']\n", - "positions=[[5.2840859, -3.620332, 10.9233607], [3.9377592, -2.1183919, 11.6654211], [6.545913200000001, -4.5046029, 12.2118804], [6.6304126, -2.1183919, 10.1813004], [4.022258600000001, -4.5046029, 9.6348411]]\n", - "4\n", - "[[1, 2], [1, 3], [1, 4], [1, 5]]\n", - "[1.439, 1.299, 1.439, 1.299]\n", - "1.369\n", - "reordered_newmolec=------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 97\n", - " Formula = H60-C26-N6-Si4-Fe\n", - " Has Adjacency Matrix = YES\n", - " Number of Ligands = 4\n", - " Number of Metals = 1\n", - "---------------------------------------------------\n", - "\n", - "COMPARE_SPECIES. Comparing:\n", - "------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 97\n", - " Formula = H60-C26-N6-Si4-Fe\n", - " Has Adjacency Matrix = YES\n", - " Number of Ligands = 4\n", - " Number of Metals = 1\n", - "---------------------------------------------------\n", - "\n", - "------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 97\n", - " Formula = H60-C26-N6-Si4-Fe\n", - " Has Adjacency Matrix = YES\n", - " Number of Ligands = 4\n", - " Number of Metals = 1\n", - "---------------------------------------------------\n", - "\n", - "['Fe', 'Si', 'Si', 'N', 'N', 'N', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'Si', 'Si', 'N', 'N', 'N', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H']\n", - "['Fe', 'Si', 'Si', 'N', 'N', 'N', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'Si', 'Si', 'N', 'N', 'N', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H']\n", - "mol1.adj_types=array([[0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " ...,\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0]])\n", - "mol2.adj_types=array([[0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " ...,\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0]])\n", - "kdx ldx elem1 - elem2 : reordered - reference\n", - "goodlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 97\n", - " Formula = H60-C26-N6-Si4-Fe\n", - " Has Adjacency Matrix = YES\n", - " Number of Ligands = 4\n", - " Number of Metals = 1\n", - "---------------------------------------------------\n", - "]\n", - "avglist=[]\n", - "badlist=[]\n", - "FINISHED succesfully\n", - "finalmols=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 97\n", - " Formula = H60-C26-N6-Si4-Fe\n", - " Has Adjacency Matrix = YES\n", - " Number of Ligands = 4\n", - " Number of Metals = 1\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 97\n", - " Formula = H60-C26-N6-Si4-Fe\n", - " Has Adjacency Matrix = YES\n", - " Number of Ligands = 4\n", - " Number of Metals = 1\n", - "---------------------------------------------------\n", - "]\n", - "remfrag=[]\n", - "FRAG_RECONSTRUCT. No remaining Molecules after Hydrogen reconstruction\n", - "MOLECULE.SPLIT COMPLEX: labels=['Fe', 'Si', 'Si', 'N', 'N', 'N', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'Si', 'Si', 'N', 'N', 'N', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H']\n", - "MOLECULE.SPLIT COMPLEX: metal_idx=[0]\n", - "MOLECULE.SPLIT COMPLEX: rest_idx=[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96]\n", - "SPLIT COMPLEX: rest labels: ['Si', 'Si', 'N', 'N', 'N', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'Si', 'Si', 'N', 'N', 'N', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H']\n", - "SPLIT COMPLEX: rest coord: [[8.449874000000001, 5.7791777, 2.975669100000001], [9.278741100000001, 3.8992945, 0.7620135999999995], [9.3167019, 2.1183919, 4.3831806], [7.3480123, 1.2225094, 4.864391], [9.4012013, 4.5046029, 2.352600599999999], [7.9985769, 2.240877, 4.2844334], [7.5737166, 2.9516274, 3.8610439], [9.5053341, 0.9373664, 5.062031], [10.3345884, 0.5730952, 5.275255], [8.3132455, 0.3829999, 5.3754586], [8.1711944, -0.4082835, 5.8432698], [5.87487, 1.023518, 4.9747898], [5.1719762, 2.0891753, 4.1479642], [5.3805676, 2.9572459, 4.5018811], [4.223759, 1.9487108, 4.1843754], [5.4678036, 2.0357988, 3.2376841], [5.4727297, 1.1415082, 6.4335682], [5.9158282, 0.4607236, 6.9443445], [4.5224711, 1.0319459, 6.5132359], [5.7239439, 2.0067695, 6.7666579], [5.5347071, -0.3595891, 4.4407103], [5.8310686, -0.4326307, 3.5304302], [4.5848724, -0.4925622, 4.4800344], [5.9736228, -1.0253908, 4.9752267], [8.609570400000003, 5.8779711, 4.841233500000001], [8.3266, 5.0482941, 5.2315616], [8.058258899999998, 6.5915308, 5.171847200000002], [9.525932400000002, 6.0465285, 5.075721600000001], [6.594882800000001, 5.5689492000000005, 2.649279100000001], [6.3530503, 6.0558928000000005, 1.8584278000000012], [6.097206800000002, 5.9070004, 3.397893400000001], [6.394439200000001, 4.6381378, 2.525480999999999], [8.9071118, 7.4727114, 2.3103635999999987], [9.841877199999999, 7.6319045, 2.4570279], [8.391796800000002, 8.144131699999999, 2.764338500000001], [8.720060799999999, 7.5082957, 1.3690612000000009], [8.2408604, 4.9630790000000005, -0.39294970000000085], [7.321523400000002, 4.9321768, -0.11797229999999992], [8.3183877, 4.6306464, -1.290413000000001], [8.554951800000001, 5.8704797, -0.35974269999999997], [10.9419254, 3.7504022, -0.09845590000000115], [11.345675600000002, 4.6184728, -0.16457860000000046], [10.8147494, 3.3880037, -0.9787331000000012], [11.5130712, 3.1688791, 0.4078055], [8.4864188, 2.1875005, 0.7283697], [8.964936600000001, 1.6022317, 1.3195420000000002], [8.5202866, 1.8372757, -0.16457860000000046], [7.573605000000001, 2.2521142, 1.0122313999999992], [12.8761832, 5.7791777, 4.3065714], [12.0473162, 3.8992945, 6.5202269], [12.0093553, 2.1183919, 2.8990599], [13.9780449, 1.2225094, 2.4178495], [11.924855999999998, 4.5046029, 4.9296399], [13.3274803, 2.240877, 2.9978071], [13.7523407, 2.9516274, 3.4211966], [11.8207232, 0.9373664, 2.2202095], [10.9914689, 0.5730952, 2.0069855], [13.0128117, 0.3829999, 1.9067819], [13.1548629, -0.4082835, 1.4389707], [15.4511873, 1.023518, 2.3074507], [16.154081, 2.0891753, 3.1342763], [15.9454897, 2.9572459, 2.7803594], [17.1022983, 1.9487108, 3.0978651], [15.8582537, 2.0357988, 4.0445564], [15.8533276, 1.1415082, 0.8486723], [15.4102291, 0.4607236, 0.337896], [16.8035861, 1.0319459, 0.7690046], [15.6021134, 2.0067695, 0.5155826], [15.7913501, -0.3595891, 2.8415302], [15.4949887, -0.4326307, 3.7518103], [16.7411848, -0.4925622, 2.8022061], [15.3524344, -1.0253908, 2.3070138], [12.7164869, 5.8779711, 2.441007], [12.999457199999998, 5.0482941, 2.0506789], [13.2677984, 6.5915308, 2.1103933], [11.8001249, 6.0465285, 2.2065189], [14.7311745, 5.5689492000000005, 4.6329614], [14.973006999999999, 6.0558928000000005, 5.4238127], [15.228850399999999, 5.9070004, 3.8843471], [14.9316181, 4.6381378, 4.7567595], [12.4189454, 7.4727114, 4.9718769], [11.48418, 7.6319045, 4.8252126], [12.9342604, 8.144131699999999, 4.517902], [12.6059965, 7.5082957, 5.9131793], [13.0851969, 4.9630790000000005, 7.6751902], [14.004533899999998, 4.9321768, 7.4002128], [13.0076696, 4.6306464, 8.5726535], [12.771105499999999, 5.8704797, 7.6419832], [10.3841319, 3.7504022, 7.3806964], [9.980381699999999, 4.6184728, 7.4468191], [10.5113079, 3.3880037, 8.2609736], [9.8129861, 3.1688791, 6.874435], [12.8396385, 2.1875005, 6.5538708], [12.3611207, 1.6022317, 5.9626985], [12.8057707, 1.8372757, 7.4468191], [13.7524523, 2.2521142, 6.2700091]]\n", - "SPLIT COMPLEX: rest indices: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96]\n", - "SPLIT COMPLEX: rest radii: [1.11, 1.11, 0.71, 0.71, 0.71, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.73, 0.31, 0.31, 0.31, 0.73, 0.31, 0.31, 0.31, 0.73, 0.31, 0.31, 0.31, 0.73, 0.31, 0.31, 0.31, 0.73, 0.31, 0.31, 0.31, 0.73, 0.31, 0.31, 0.31, 0.73, 0.31, 0.31, 0.31, 0.73, 0.31, 0.31, 0.31, 0.73, 0.31, 0.31, 0.31, 1.11, 1.11, 0.71, 0.71, 0.71, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.73, 0.31, 0.31, 0.31, 0.73, 0.31, 0.31, 0.31, 0.73, 0.31, 0.31, 0.31, 0.73, 0.31, 0.31, 0.31, 0.73, 0.31, 0.31, 0.31, 0.73, 0.31, 0.31, 0.31, 0.73, 0.31, 0.31, 0.31, 0.73, 0.31, 0.31, 0.31, 0.73, 0.31, 0.31, 0.31]\n", - "SPLIT COMPLEX: splitting species with 96 atoms in block\n", - "labels=['Si', 'Si', 'N', 'N', 'N', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'Si', 'Si', 'N', 'N', 'N', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H'] 96\n", - "indices=None\n", - "SPLIT COMPLEX: received 4 blocks\n", - "PREPARING BLOCK: [2, 3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23]\n", - "CREATING LIGAND: H12-C7-N2\n", - "PREPARING BLOCK: [48, 49, 52, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95]\n", - "CREATING LIGAND: H18-C6-N-Si2\n", - "PREPARING BLOCK: [50, 51, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71]\n", - "CREATING LIGAND: H12-C7-N2\n", - "PREPARING BLOCK: [0, 1, 4, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47]\n", - "CREATING LIGAND: H18-C6-N-Si2\n", - "MOLECULE.SPLIT COMPLEX: labels=['Fe', 'Si', 'Si', 'N', 'N', 'N', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'Si', 'Si', 'N', 'N', 'N', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H']\n", - "MOLECULE.SPLIT COMPLEX: metal_idx=[0]\n", - "MOLECULE.SPLIT COMPLEX: rest_idx=[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96]\n", - "SPLIT COMPLEX: rest labels: ['Si', 'Si', 'N', 'N', 'N', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'Si', 'Si', 'N', 'N', 'N', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H']\n", - "SPLIT COMPLEX: rest coord: [[3.070931299999998, -5.7791777, 10.2579096], [3.8997984000000017, -3.8992945, 8.0442541], [4.022258600000001, -4.5046029, 9.6348411], [1.9690696, -1.2225094, 12.1466315], [3.9377592, -2.1183919, 11.6654211], [2.6196342, -2.240877, 11.5666739], [2.1947738, -2.9516274, 11.1432844], [3.5281690999999995, -7.4727114, 9.5926041], [6.105237299999999, -7.6319045, 12.1074531], [3.2306275999999983, -5.8779711, 12.123474], [4.146989699999999, -6.0465285, 12.3579621], [0.4959273, -1.023518, 12.2570303], [-0.2069665, -2.0891753, 11.4302047], [0.0016249, -2.9572459, 11.7841216], [-1.1551837, -1.9487108, 11.4666159], [1.0154964, -4.6381378, 9.8077215], [0.0937869, -1.1415082, 13.7158087], [2.679316100000001, -6.5915308, 12.4540877], [-0.8564716, -1.0319459, 13.7954764], [0.3450012, -2.0067695, 14.0488984], [1.215940100000001, -5.5689492000000005, 9.9315196], [0.9741076000000017, -6.0558928000000005, 9.1406683], [0.7182641000000007, -5.9070004, 10.6801339], [3.0128540999999984, -8.144131699999999, 10.046579], [2.9343028, -0.3829999, 12.6576991], [2.9476572999999995, -5.0482941, 12.5138021], [0.5368855, -0.4607236, 14.226585], [2.7922516, 0.4082835, 13.1255103], [0.1557644, 0.3595891, 11.7229508], [0.4521258, 0.4326307, 10.8126707], [-0.7940703, 0.4925622, 11.7622749], [0.0888608, -2.0357988, 10.5199246], [4.1263913, -0.9373664, 12.3442715], [5.6125262, -0.5730952, 9.289226], [0.5946801, 1.0253909, 12.2574672], [3.5859938, -1.6022317, 8.6017825], [3.1074761, -2.1875005, 8.0106102], [2.1946622, -2.2521141, 8.2944719], [2.9394449000000016, -4.6306463, 5.9918275], [3.1413439, -1.8372757, 7.1176619], [5.5629826, -3.7504021, 7.1837846], [6.1341285, -3.1688791, 7.690046], [5.4358067, -3.3880037, 6.3035074], [5.9667329, -4.6184728, 7.1176619], [2.8619176000000017, -4.9630790000000005, 6.8892908], [3.3411180000000016, -7.5082957, 8.6513017], [3.1760090000000005, -5.8704797, 6.9224978], [1.9425806000000012, -4.9321768, 7.1642682], [7.4972405, -5.7791777, 11.5888119], [6.668373500000001, -3.8992945, 13.8024673], [6.545913200000001, -4.5046029, 12.2118804], [8.5991022, -1.2225094, 9.70009], [6.6304126, -2.1183919, 10.1813004], [7.9485376, -2.240877, 10.2800476], [8.373398, -2.9516274, 10.7034371], [7.040002699999999, -7.4727114, 12.2541174], [4.462934499999999, -7.6319045, 9.7392684], [7.3375442, -5.8779711, 9.7232475], [6.421182099999999, -6.0465285, 9.4887594], [10.0722445, -1.023518, 9.5896912], [10.7751383, -2.0891753, 10.4165168], [10.5665469, -2.9572459, 10.0625999], [11.7233555, -1.9487108, 10.3801056], [9.552675399999998, -4.6381378, 12.039], [10.4743849, -1.1415082, 8.1309128], [7.888855700000001, -6.5915308, 9.3926338], [11.4246434, -1.0319459, 8.0512451], [10.2231706, -2.0067695, 7.7978231], [9.352231799999998, -5.5689492000000005, 11.9152019], [9.594064199999998, -6.0558928000000005, 12.7060532], [9.8499077, -5.9070004, 11.1665876], [7.5553177, -8.144131699999999, 11.8001425], [7.633869, -0.3829999, 9.1890223], [7.620514499999999, -5.0482941, 9.3329194], [10.0312863, -0.4607236, 7.6201365], [7.7759202, 0.4082835, 8.7212112], [10.4124074, 0.3595891, 10.1237707], [10.116046, 0.4326307, 11.0340508], [11.3622421, 0.4925622, 10.0844466], [10.479311, -2.0357988, 11.3267969], [6.4417805, -0.9373664, 9.50245], [4.9556457, -0.5730952, 12.5574955], [9.9734917, 1.0253909, 9.5892543], [6.982178000000001, -1.6022317, 13.244939], [7.460695699999999, -2.1875005, 13.8361113], [8.373509599999998, -2.2521141, 13.5522496], [7.628726799999999, -4.6306464, 15.854894000000002], [7.426827899999999, -1.8372757, 14.729059600000001], [5.005189099999999, -3.7504021, 14.6629369], [4.4340433, -3.1688791, 14.1566755], [5.1323650999999995, -3.3880037, 15.5432141], [4.601438899999998, -4.6184728, 14.729059600000001], [7.7062541999999965, -4.9630790000000005, 14.957430700000002], [7.2270538, -7.5082957, 13.1954198], [7.3921627, -5.8704797, 14.9242237], [8.625591099999998, -4.9321768, 14.6824533]]\n", - "SPLIT COMPLEX: rest indices: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96]\n", - "SPLIT COMPLEX: rest radii: [1.11, 1.11, 0.71, 0.71, 0.71, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.73, 0.31, 0.31, 0.31, 0.73, 0.31, 0.31, 0.31, 0.73, 0.31, 0.31, 0.31, 0.73, 0.31, 0.31, 0.31, 0.73, 0.31, 0.31, 0.31, 0.73, 0.31, 0.31, 0.31, 0.73, 0.31, 0.31, 0.31, 0.73, 0.31, 0.31, 0.31, 0.73, 0.31, 0.31, 0.31, 1.11, 1.11, 0.71, 0.71, 0.71, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.73, 0.31, 0.31, 0.31, 0.73, 0.31, 0.31, 0.31, 0.73, 0.31, 0.31, 0.31, 0.73, 0.31, 0.31, 0.31, 0.73, 0.31, 0.31, 0.31, 0.73, 0.31, 0.31, 0.31, 0.73, 0.31, 0.31, 0.31, 0.73, 0.31, 0.31, 0.31, 0.73, 0.31, 0.31, 0.31]\n", - "SPLIT COMPLEX: splitting species with 96 atoms in block\n", - "labels=['Si', 'Si', 'N', 'N', 'N', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'Si', 'Si', 'N', 'N', 'N', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H'] 96\n", - "indices=None\n", - "SPLIT COMPLEX: received 4 blocks\n", - "PREPARING BLOCK: [3, 4, 5, 6, 11, 12, 13, 14, 16, 18, 19, 24, 26, 27, 28, 29, 30, 31, 32, 34, 81]\n", - "CREATING LIGAND: H12-C7-N2\n", - "PREPARING BLOCK: [8, 48, 49, 50, 55, 57, 58, 63, 65, 68, 69, 70, 71, 73, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95]\n", - "CREATING LIGAND: H18-C6-N-Si2\n", - "PREPARING BLOCK: [33, 51, 52, 53, 54, 59, 60, 61, 62, 64, 66, 67, 72, 74, 75, 76, 77, 78, 79, 80, 82]\n", - "CREATING LIGAND: H12-C7-N2\n", - "PREPARING BLOCK: [0, 1, 2, 7, 9, 10, 15, 17, 20, 21, 22, 23, 25, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 56]\n", - "CREATING LIGAND: H18-C6-N-Si2\n" - ] - }, - { - "data": { - "text/plain": [ - "[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 97\n", - " Formula = H60-C26-N6-Si4-Fe\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.reconstruct\n", - " Number of Ligands = 4\n", - " Number of Metals = 1\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 97\n", - " Formula = H60-C26-N6-Si4-Fe\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.reconstruct\n", - " Number of Ligands = 4\n", - " Number of Metals = 1\n", - " ---------------------------------------------------]" - ] - }, - "execution_count": 6, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "newcell.reconstruct(debug=debug) " - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "False" - ] - }, - "execution_count": 7, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "newcell.error_reconstruction" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "False" - ] - }, - "execution_count": 8, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "newcell.is_fragmented" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Molecule 0 formula=H60-C26-N6-Si4-Fe\n", - "New ligand found with: formula H12-C7-N2 added in position 0\n", - "COMPARE_SPECIES. Comparing:\n", - "------------- Cell2mol LIGAND Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = ligand\n", - " Number of Atoms = 27\n", - " Formula = H18-C6-N-Si2\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_complex\n", - "---------------------------------------------------\n", - "\n", - "------------- Cell2mol LIGAND Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = ligand\n", - " Number of Atoms = 21\n", - " Formula = H12-C7-N2\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_complex\n", - "---------------------------------------------------\n", - "\n", - "['Si', 'Si', 'N', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H']\n", - "['N', 'N', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H']\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "New ligand found with: formula H18-C6-N-Si2 added in position 1\n", - "COMPARE_SPECIES. Comparing:\n", - "------------- Cell2mol LIGAND Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = ligand\n", - " Number of Atoms = 21\n", - " Formula = H12-C7-N2\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_complex\n", - "---------------------------------------------------\n", - "\n", - "------------- Cell2mol LIGAND Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = ligand\n", - " Number of Atoms = 21\n", - " Formula = H12-C7-N2\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_complex\n", - "---------------------------------------------------\n", - "\n", - "['N', 'N', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H']\n", - "['N', 'N', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H']\n", - "mol1.adj_types=array([[0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " ...,\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0]])\n", - "mol2.adj_types=array([[0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " ...,\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0]])\n", - "kdx ldx elem1 - elem2 : reordered - reference\n", - "ligand 2 is the same with 0 in typelist\n", - "COMPARE_SPECIES. Comparing:\n", - "------------- Cell2mol LIGAND Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = ligand\n", - " Number of Atoms = 21\n", - " Formula = H12-C7-N2\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_complex\n", - "---------------------------------------------------\n", - "\n", - "------------- Cell2mol LIGAND Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = ligand\n", - " Number of Atoms = 27\n", - " Formula = H18-C6-N-Si2\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_complex\n", - "---------------------------------------------------\n", - "\n", - "['N', 'N', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H']\n", - "['Si', 'Si', 'N', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H']\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "------------- Cell2mol LIGAND Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = ligand\n", - " Number of Atoms = 27\n", - " Formula = H18-C6-N-Si2\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_complex\n", - "---------------------------------------------------\n", - "\n", - "------------- Cell2mol LIGAND Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = ligand\n", - " Number of Atoms = 21\n", - " Formula = H12-C7-N2\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_complex\n", - "---------------------------------------------------\n", - "\n", - "['Si', 'Si', 'N', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H']\n", - "['N', 'N', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H']\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "------------- Cell2mol LIGAND Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = ligand\n", - " Number of Atoms = 27\n", - " Formula = H18-C6-N-Si2\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_complex\n", - "---------------------------------------------------\n", - "\n", - "------------- Cell2mol LIGAND Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = ligand\n", - " Number of Atoms = 27\n", - " Formula = H18-C6-N-Si2\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_complex\n", - "---------------------------------------------------\n", - "\n", - "['Si', 'Si', 'N', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H']\n", - "['Si', 'Si', 'N', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H']\n", - "mol1.adj_types=array([[0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " ...,\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0]])\n", - "mol2.adj_types=array([[0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " ...,\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0]])\n", - "kdx ldx elem1 - elem2 : reordered - reference\n", - "ligand 3 is the same with 1 in typelist\n", - "New Metal Center found with: labels Fe and added in position 2\n", - "Molecule 1 formula=H60-C26-N6-Si4-Fe\n", - "COMPARE_SPECIES. Comparing:\n", - "------------- Cell2mol LIGAND Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = ligand\n", - " Number of Atoms = 21\n", - " Formula = H12-C7-N2\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_complex\n", - "---------------------------------------------------\n", - "\n", - "------------- Cell2mol LIGAND Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = ligand\n", - " Number of Atoms = 21\n", - " Formula = H12-C7-N2\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_complex\n", - "---------------------------------------------------\n", - "\n", - "['N', 'N', 'C', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H']\n", - "['N', 'N', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H']\n", - "mol1.adj_types=array([[0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " ...,\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0]])\n", - "mol2.adj_types=array([[0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " ...,\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0]])\n", - "kdx ldx elem1 - elem2 : reordered - reference\n", - "ligand 0 is the same with 0 in typelist\n", - "COMPARE_SPECIES. Comparing:\n", - "------------- Cell2mol LIGAND Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = ligand\n", - " Number of Atoms = 21\n", - " Formula = H12-C7-N2\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_complex\n", - "---------------------------------------------------\n", - "\n", - "------------- Cell2mol LIGAND Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = ligand\n", - " Number of Atoms = 27\n", - " Formula = H18-C6-N-Si2\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_complex\n", - "---------------------------------------------------\n", - "\n", - "['N', 'N', 'C', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H']\n", - "['Si', 'Si', 'N', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H']\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "------------- Cell2mol LIGAND Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = ligand\n", - " Number of Atoms = 27\n", - " Formula = H18-C6-N-Si2\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_complex\n", - "---------------------------------------------------\n", - "\n", - "------------- Cell2mol LIGAND Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = ligand\n", - " Number of Atoms = 21\n", - " Formula = H12-C7-N2\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_complex\n", - "---------------------------------------------------\n", - "\n", - "['H', 'Si', 'Si', 'N', 'C', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H']\n", - "['N', 'N', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H']\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "------------- Cell2mol LIGAND Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = ligand\n", - " Number of Atoms = 27\n", - " Formula = H18-C6-N-Si2\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_complex\n", - "---------------------------------------------------\n", - "\n", - "------------- Cell2mol LIGAND Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = ligand\n", - " Number of Atoms = 27\n", - " Formula = H18-C6-N-Si2\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_complex\n", - "---------------------------------------------------\n", - "\n", - "['H', 'Si', 'Si', 'N', 'C', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H']\n", - "['Si', 'Si', 'N', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H']\n", - "mol1.adj_types=array([[0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " ...,\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0]])\n", - "mol2.adj_types=array([[0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " ...,\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0]])\n", - "kdx ldx elem1 - elem2 : reordered - reference\n", - "ligand 1 is the same with 1 in typelist\n", - "COMPARE_SPECIES. Comparing:\n", - "------------- Cell2mol LIGAND Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = ligand\n", - " Number of Atoms = 21\n", - " Formula = H12-C7-N2\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_complex\n", - "---------------------------------------------------\n", - "\n", - "------------- Cell2mol LIGAND Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = ligand\n", - " Number of Atoms = 21\n", - " Formula = H12-C7-N2\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_complex\n", - "---------------------------------------------------\n", - "\n", - "['H', 'N', 'N', 'C', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H']\n", - "['N', 'N', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H']\n", - "mol1.adj_types=array([[0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " ...,\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0]])\n", - "mol2.adj_types=array([[0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " ...,\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0]])\n", - "kdx ldx elem1 - elem2 : reordered - reference\n", - "ligand 2 is the same with 0 in typelist\n", - "COMPARE_SPECIES. Comparing:\n", - "------------- Cell2mol LIGAND Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = ligand\n", - " Number of Atoms = 21\n", - " Formula = H12-C7-N2\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_complex\n", - "---------------------------------------------------\n", - "\n", - "------------- Cell2mol LIGAND Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = ligand\n", - " Number of Atoms = 27\n", - " Formula = H18-C6-N-Si2\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_complex\n", - "---------------------------------------------------\n", - "\n", - "['H', 'N', 'N', 'C', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H']\n", - "['Si', 'Si', 'N', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H']\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "------------- Cell2mol LIGAND Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = ligand\n", - " Number of Atoms = 27\n", - " Formula = H18-C6-N-Si2\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_complex\n", - "---------------------------------------------------\n", - "\n", - "------------- Cell2mol LIGAND Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = ligand\n", - " Number of Atoms = 21\n", - " Formula = H12-C7-N2\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_complex\n", - "---------------------------------------------------\n", - "\n", - "['Si', 'Si', 'N', 'C', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'H']\n", - "['N', 'N', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H']\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "------------- Cell2mol LIGAND Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = ligand\n", - " Number of Atoms = 27\n", - " Formula = H18-C6-N-Si2\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_complex\n", - "---------------------------------------------------\n", - "\n", - "------------- Cell2mol LIGAND Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = ligand\n", - " Number of Atoms = 27\n", - " Formula = H18-C6-N-Si2\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_complex\n", - "---------------------------------------------------\n", - "\n", - "['Si', 'Si', 'N', 'C', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'H']\n", - "['Si', 'Si', 'N', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H']\n", - "mol1.adj_types=array([[0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " ...,\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0]])\n", - "mol2.adj_types=array([[0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " ...,\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0]])\n", - "kdx ldx elem1 - elem2 : reordered - reference\n", - "ligand 3 is the same with 1 in typelist\n", - "COMPARE_METALS. Comparing:\n", - "Fe\n", - "Fe\n", - "Metal 0 is the same with 0 in typelist\n", - "3 Species (Metal or Ligand or Molecules) to Characterize\n", - "LIGAND.SPLIT_LIGAND: self.indices=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]\n", - "LIGAND.SPLIT_LIGAND: conn_idx=[0]\n", - "LIGAND.SPLIT_LIGAND: conn_labels=['N']\n", - "LIGAND.SPLIT_LIGAND: conn_coord=[[9.3167019, 2.1183919, 4.3831806]]\n", - "LIGAND.SPLIT_LIGAND: conn_radii=[0.71]\n", - "blocklist=[[0]]\n", - "LIGAND.SPLIT_LIGAND: block=[0]\n", - "ADD_ATOM: Metalist length 1\n", - "ADD_ATOM: Ligand Atoms 21\n", - "ADD_ATOM: site= 0\n", - "ADD_ATOM: target ligand atom N\n", - "ADD_ATOM: evaluating apos=array([9.3167019, 2.1183919, 4.3831806]) and tgt.coord=[10.6630286, 3.620332, 3.6411202]\n", - "ADD_ATOM: received newlab=['N', 'N', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'H']\n", - "ADD_ATOM: received tmpconmat=array([[0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],\n", - " [0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0],\n", - " [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]])\n", - "ADD_ATOM: received tmpconnec=array([3, 3, 3, 1, 3, 1, 3, 1, 4, 4, 1, 1, 1, 4, 1, 1, 1, 4, 1, 1, 1, 1])\n", - "ADD_ATOM: received tmpconnec[posadded]=1\n", - "ADD_ATOM: Chosen Metal index None. H is added at site 0\n", - " GET_PROTONATION_STATES: evaluating non-haptic group with index 0 and label N\n", - "protonation_states=[------------- Cell2mol Protonation ----------------\n", - " Status = True\n", - " Labels = ['N', 'N', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H']\n", - " Type = Local\n", - " Atoms added in positions = [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]\n", - " Atoms blocked (no atoms added) = [1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]\n", - "---------------------------------------------------\n", - "]\n", - " POSCHARGE will try charges [0, -1, 1, -2, 2]\n", - "smiles='[H]c1nc([H])n(C(C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H])c1[H]'\n", - " POSCHARGE: charge 0 with smiles [H]c1nc([H])n(C(C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H])c1[H]\n", - "smiles='[H][C+]1[N-][C-]([H])N(C(C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H])[C-]1[H]'\n", - " POSCHARGE: charge 0 with smiles [H][C+]1[N-][C-]([H])N(C(C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H])[C-]1[H]\n", - "smiles='[H][c+]1[n-][c+]([H])n(C(C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H])[c-]1[H]'\n", - " POSCHARGE: charge 0 with smiles [H][c+]1[n-][c+]([H])n(C(C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H])[c-]1[H]\n", - "smiles='[H]C1=C([H])N(C(C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H])[C-]([H])[N-]1'\n", - " POSCHARGE: charge 0 with smiles [H]C1=C([H])N(C(C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H])[C-]([H])[N-]1\n", - "smiles='[H]C1=[N+]=C([H])[N+](C(C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H])=C1[H]'\n", - " POSCHARGE: charge 0 with smiles [H]C1=[N+]=C([H])[N+](C(C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H])=C1[H]\n", - " NEW SELECT FUNCTION: uncorr_total: [0, -2, 0, -2, 2]\n", - " NEW SELECT FUNCTION: uncorr_abs_total: [0, 2, 0, 2, 2]\n", - " NEW SELECT FUNCTION: uncorr_abs_atcharge: [0, 4, 4, 2, 2]\n", - " NEW SELECT FUNCTION: uncorr_zwitt: [False, True, True, False, False]\n", - " NEW SELECT FUNCTION: coincide: [True, False, False, True, True]\n", - " NEW SELECT FUNCTION: listofmintot: [0, 2]\n", - " NEW SELECT FUNCTION: listofminabs: [0]\n", - " NEW SELECT FUNCTION: tmplist: [0], including:\n", - " NEW SELECT FUNCTION: Corr_charge=0\n", - " NEW SELECT FUNCTION: Smiles=[H]c1nc([H])n(C(C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H])c1[H]\n", - " NEW SELECT FUNCTION: found corr_charges=[0]\n", - " NEW SELECT FUNCTION: doing tgt_charge=0\n", - " NEW SELECT FUNCTION: charge_state added\n", - " NEW SELECT FUNCTION: Case 1, only one entry for 0 in tmplist\n", - "LIGAND.SPLIT_LIGAND: self.indices=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26]\n", - "LIGAND.SPLIT_LIGAND: conn_idx=[2]\n", - "LIGAND.SPLIT_LIGAND: conn_labels=['N']\n", - "LIGAND.SPLIT_LIGAND: conn_coord=[[11.924855999999998, 4.5046029, 4.9296399]]\n", - "LIGAND.SPLIT_LIGAND: conn_radii=[0.71]\n", - "blocklist=[[0]]\n", - "LIGAND.SPLIT_LIGAND: block=[0]\n", - "ADD_ATOM: Metalist length 1\n", - "ADD_ATOM: Ligand Atoms 27\n", - "ADD_ATOM: site= 2\n", - "ADD_ATOM: target ligand atom N\n", - "ADD_ATOM: evaluating apos=array([11.924856 , 4.5046029, 4.9296399]) and tgt.coord=[10.6630286, 3.620332, 3.6411202]\n", - "ADD_ATOM: received newlab=['Si', 'Si', 'N', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'H']\n", - "ADD_ATOM: received tmpconmat=array([[0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0,\n", - " 0, 1, 0, 0, 0, 0],\n", - " [1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 1],\n", - " [1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1,\n", - " 1, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 1, 1, 1, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 1, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 1, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 1, 0, 0, 0, 0],\n", - " [0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0]])\n", - "ADD_ATOM: received tmpconnec=array([4, 4, 3, 4, 1, 1, 1, 4, 1, 1, 1, 4, 1, 1, 1, 4, 1, 1, 1, 4, 1, 1,\n", - " 1, 4, 1, 1, 1, 1])\n", - "ADD_ATOM: received tmpconnec[posadded]=1\n", - "ADD_ATOM: Chosen Metal index None. H is added at site 2\n", - " GET_PROTONATION_STATES: evaluating non-haptic group with index 2 and label N\n", - "protonation_states=[------------- Cell2mol Protonation ----------------\n", - " Status = True\n", - " Labels = ['Si', 'Si', 'N', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H']\n", - " Type = Local\n", - " Atoms added in positions = [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]\n", - " Atoms blocked (no atoms added) = [0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]\n", - "---------------------------------------------------\n", - "]\n", - " POSCHARGE will try charges [0, -1, 1, -2, 2]\n", - "smiles='[H]C([H])([H])[Si]([N-][Si](C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H]'\n", - " POSCHARGE: charge 0 with smiles [H]C([H])([H])[Si]([N-][Si](C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H]\n", - "smiles='[H]C([H])([H])[Si]([N-][Si](C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H]'\n", - " POSCHARGE: charge 0 with smiles [H]C([H])([H])[Si]([N-][Si](C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H]\n", - "smiles='[H]C([H])([H])[Si]([N-][Si](C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H]'\n", - " POSCHARGE: charge 0 with smiles [H]C([H])([H])[Si]([N-][Si](C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H]\n", - "smiles='[H]C([H])([H])[Si]([N-][Si](C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H]'\n", - " POSCHARGE: charge 0 with smiles [H]C([H])([H])[Si]([N-][Si](C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H]\n", - "smiles='[H]C([H])([H])[Si]([N-][Si](C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H]'\n", - " POSCHARGE: charge 0 with smiles [H]C([H])([H])[Si]([N-][Si](C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H]\n", - " NEW SELECT FUNCTION: uncorr_total: [-1, -1, -1, -1, -1]\n", - " NEW SELECT FUNCTION: uncorr_abs_total: [1, 1, 1, 1, 1]\n", - " NEW SELECT FUNCTION: uncorr_abs_atcharge: [1, 1, 1, 1, 1]\n", - " NEW SELECT FUNCTION: uncorr_zwitt: [False, False, False, False, False]\n", - " NEW SELECT FUNCTION: coincide: [False, True, False, False, False]\n", - " NEW SELECT FUNCTION: listofmintot: [0, 1, 2, 3, 4]\n", - " NEW SELECT FUNCTION: listofminabs: [0, 1, 2, 3, 4]\n", - " NEW SELECT FUNCTION: tmplist: [1], including:\n", - " NEW SELECT FUNCTION: Corr_charge=-1\n", - " NEW SELECT FUNCTION: Smiles=[H]C([H])([H])[Si]([N-][Si](C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H]\n", - " NEW SELECT FUNCTION: found corr_charges=[-1]\n", - " NEW SELECT FUNCTION: doing tgt_charge=-1\n", - " NEW SELECT FUNCTION: charge_state added\n", - " NEW SELECT FUNCTION: Case 1, only one entry for -1 in tmplist\n", - "LIGAND.SPLIT_LIGAND: self.indices=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]\n", - "LIGAND.SPLIT_LIGAND: conn_idx=[0]\n", - "LIGAND.SPLIT_LIGAND: conn_labels=['N']\n", - "LIGAND.SPLIT_LIGAND: conn_coord=[[12.0093553, 2.1183919, 2.8990599]]\n", - "LIGAND.SPLIT_LIGAND: conn_radii=[0.71]\n", - "blocklist=[[0]]\n", - "LIGAND.SPLIT_LIGAND: block=[0]\n", - "LIGAND.SPLIT_LIGAND: self.indices=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26]\n", - "LIGAND.SPLIT_LIGAND: conn_idx=[2]\n", - "LIGAND.SPLIT_LIGAND: conn_labels=['N']\n", - "LIGAND.SPLIT_LIGAND: conn_coord=[[9.4012013, 4.5046029, 2.352600599999999]]\n", - "LIGAND.SPLIT_LIGAND: conn_radii=[0.71]\n", - "blocklist=[[0]]\n", - "LIGAND.SPLIT_LIGAND: block=[0]\n", - "BALANCE: iterlist [[0], [-1], [2, 3]]\n", - "BALANCE: unique_indices [0, 1, 0, 1, 2, 0, 1, 0, 1, 2]\n", - "BALANCE: tmpdistr [(0, -1, 2), (0, -1, 3)]\n", - "BALANCE: alldistr added: [0, -1, 0, -1, 2, 0, -1, 0, -1, 2]\n", - "d=[0, -1, 0, -1, 2, 0, -1, 0, -1, 2]\n", - "BALANCE: alldistr added: [0, -1, 0, -1, 3, 0, -1, 0, -1, 3]\n", - "d=[0, -1, 0, -1, 2, 0, -1, 0, -1, 2]\n", - "d=[0, -1, 0, -1, 3, 0, -1, 0, -1, 3]\n", - "\n", - "FINAL Charge Distribution: [[0, -1, 0, -1, 2, 0, -1, 0, -1, 2]]\n", - "\n", - "#########################################\n", - "Assigning Charges and Preparing Molecules\n", - "#########################################\n", - "------------- Cell2mol LIGAND Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = ligand\n", - " Number of Atoms = 21\n", - " Formula = H12-C7-N2\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_complex\n", - " Number of Groups = 1\n", - "---------------------------------------------------\n", - " [0, 2, 5, 7] 0\n", - "Target charge 0 of H12-C7-N2 exists in [0].\n", - "H12-C7-N2\n", - " GET_PROTONATION_STATES: evaluating non-haptic group with index 0 and label N\n", - "protonation_states=[------------- Cell2mol Protonation ----------------\n", - " Status = True\n", - " Labels = ['N', 'N', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H']\n", - " Type = Local\n", - " Atoms added in positions = [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]\n", - " Atoms blocked (no atoms added) = [1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]\n", - "---------------------------------------------------\n", - "]\n", - " POSCHARGE will try charges [0, -1, 1, -2, 2]\n", - "smiles='[H]c1nc([H])n(C(C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H])c1[H]'\n", - " POSCHARGE: charge 0 with smiles [H]c1nc([H])n(C(C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H])c1[H]\n", - "smiles='[H][C+]1[N-][C-]([H])N(C(C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H])[C-]1[H]'\n", - " POSCHARGE: charge 0 with smiles [H][C+]1[N-][C-]([H])N(C(C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H])[C-]1[H]\n", - "smiles='[H][c+]1[n-][c+]([H])n(C(C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H])[c-]1[H]'\n", - " POSCHARGE: charge 0 with smiles [H][c+]1[n-][c+]([H])n(C(C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H])[c-]1[H]\n", - "smiles='[H]C1=C([H])N(C(C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H])[C-]([H])[N-]1'\n", - " POSCHARGE: charge 0 with smiles [H]C1=C([H])N(C(C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H])[C-]([H])[N-]1\n", - "smiles='[H]C1=[N+]=C([H])[N+](C(C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H])=C1[H]'\n", - " POSCHARGE: charge 0 with smiles [H]C1=[N+]=C([H])[N+](C(C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H])=C1[H]\n", - " NEW SELECT FUNCTION: uncorr_total: [0, -2, 0, -2, 2]\n", - " NEW SELECT FUNCTION: uncorr_abs_total: [0, 2, 0, 2, 2]\n", - " NEW SELECT FUNCTION: uncorr_abs_atcharge: [0, 4, 4, 2, 2]\n", - " NEW SELECT FUNCTION: uncorr_zwitt: [False, True, True, False, False]\n", - " NEW SELECT FUNCTION: coincide: [True, False, False, True, True]\n", - " NEW SELECT FUNCTION: listofmintot: [0, 2]\n", - " NEW SELECT FUNCTION: listofminabs: [0]\n", - " NEW SELECT FUNCTION: tmplist: [0], including:\n", - " NEW SELECT FUNCTION: Corr_charge=0\n", - " NEW SELECT FUNCTION: Smiles=[H]c1nc([H])n(C(C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H])c1[H]\n", - " NEW SELECT FUNCTION: found corr_charges=[0]\n", - " NEW SELECT FUNCTION: doing tgt_charge=0\n", - " NEW SELECT FUNCTION: charge_state added\n", - " NEW SELECT FUNCTION: Case 1, only one entry for 0 in tmplist\n", - "Target charge 0 of H12-C7-N2 exists in [0].\n", - "------------- Cell2mol LIGAND Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = ligand\n", - " Number of Atoms = 27\n", - " Formula = H18-C6-N-Si2\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_complex\n", - " Number of Groups = 1\n", - "---------------------------------------------------\n", - " [1, 3, 6, 8] -1\n", - "Target charge -1 of H18-C6-N-Si2 exists in [-1].\n", - "H18-C6-N-Si2\n", - " GET_PROTONATION_STATES: evaluating non-haptic group with index 2 and label N\n", - "protonation_states=[------------- Cell2mol Protonation ----------------\n", - " Status = True\n", - " Labels = ['Si', 'Si', 'N', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H']\n", - " Type = Local\n", - " Atoms added in positions = [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]\n", - " Atoms blocked (no atoms added) = [0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]\n", - "---------------------------------------------------\n", - "]\n", - " POSCHARGE will try charges [0, -1, 1, -2, 2]\n", - "smiles='[H]C([H])([H])[Si]([N-][Si](C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H]'\n", - " POSCHARGE: charge 0 with smiles [H]C([H])([H])[Si]([N-][Si](C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H]\n", - "smiles='[H]C([H])([H])[Si]([N-][Si](C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H]'\n", - " POSCHARGE: charge 0 with smiles [H]C([H])([H])[Si]([N-][Si](C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H]\n", - "smiles='[H]C([H])([H])[Si]([N-][Si](C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H]'\n", - " POSCHARGE: charge 0 with smiles [H]C([H])([H])[Si]([N-][Si](C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H]\n", - "smiles='[H]C([H])([H])[Si]([N-][Si](C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H]'\n", - " POSCHARGE: charge 0 with smiles [H]C([H])([H])[Si]([N-][Si](C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H]\n", - "smiles='[H]C([H])([H])[Si]([N-][Si](C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H]'\n", - " POSCHARGE: charge 0 with smiles [H]C([H])([H])[Si]([N-][Si](C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H]\n", - " NEW SELECT FUNCTION: uncorr_total: [-1, -1, -1, -1, -1]\n", - " NEW SELECT FUNCTION: uncorr_abs_total: [1, 1, 1, 1, 1]\n", - " NEW SELECT FUNCTION: uncorr_abs_atcharge: [1, 1, 1, 1, 1]\n", - " NEW SELECT FUNCTION: uncorr_zwitt: [False, False, False, False, False]\n", - " NEW SELECT FUNCTION: coincide: [False, True, False, False, False]\n", - " NEW SELECT FUNCTION: listofmintot: [0, 1, 2, 3, 4]\n", - " NEW SELECT FUNCTION: listofminabs: [0, 1, 2, 3, 4]\n", - " NEW SELECT FUNCTION: tmplist: [1], including:\n", - " NEW SELECT FUNCTION: Corr_charge=-1\n", - " NEW SELECT FUNCTION: Smiles=[H]C([H])([H])[Si]([N-][Si](C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H]\n", - " NEW SELECT FUNCTION: found corr_charges=[-1]\n", - " NEW SELECT FUNCTION: doing tgt_charge=-1\n", - " NEW SELECT FUNCTION: charge_state added\n", - " NEW SELECT FUNCTION: Case 1, only one entry for -1 in tmplist\n", - "Target charge -1 of H18-C6-N-Si2 exists in [-1].\n", - "------------- Cell2mol LIGAND Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = ligand\n", - " Number of Atoms = 21\n", - " Formula = H12-C7-N2\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = 0\n", - " Smiles = [H]c1nc([H])n(C(C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H])c1[H]\n", - " Origin = split_complex\n", - " Number of Groups = 1\n", - "---------------------------------------------------\n", - " [0, 2, 5, 7] 0\n", - "Target charge 0 of H12-C7-N2 exists in [0].\n", - "H12-C7-N2\n", - "ADD_ATOM: Metalist length 1\n", - "ADD_ATOM: Ligand Atoms 21\n", - "ADD_ATOM: site= 0\n", - "ADD_ATOM: target ligand atom N\n", - "ADD_ATOM: evaluating apos=array([12.0093553, 2.1183919, 2.8990599]) and tgt.coord=[10.6630286, 3.620332, 3.6411202]\n", - "ADD_ATOM: received newlab=['N', 'N', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'H']\n", - "ADD_ATOM: received tmpconmat=array([[0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],\n", - " [0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0],\n", - " [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]])\n", - "ADD_ATOM: received tmpconnec=array([3, 3, 3, 1, 3, 1, 3, 1, 4, 4, 1, 1, 1, 4, 1, 1, 1, 4, 1, 1, 1, 1])\n", - "ADD_ATOM: received tmpconnec[posadded]=1\n", - "ADD_ATOM: Chosen Metal index None. H is added at site 0\n", - " GET_PROTONATION_STATES: evaluating non-haptic group with index 0 and label N\n", - "protonation_states=[------------- Cell2mol Protonation ----------------\n", - " Status = True\n", - " Labels = ['N', 'N', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H']\n", - " Type = Local\n", - " Atoms added in positions = [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]\n", - " Atoms blocked (no atoms added) = [1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]\n", - "---------------------------------------------------\n", - "]\n", - " POSCHARGE will try charges [0, -1, 1, -2, 2]\n", - "smiles='[H]c1nc([H])n(C(C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H])c1[H]'\n", - " POSCHARGE: charge 0 with smiles [H]c1nc([H])n(C(C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H])c1[H]\n", - "smiles='[H][C+]1[N-][C-]([H])N(C(C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H])[C-]1[H]'\n", - " POSCHARGE: charge 0 with smiles [H][C+]1[N-][C-]([H])N(C(C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H])[C-]1[H]\n", - "smiles='[H][c+]1[n-][c+]([H])n(C(C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H])[c-]1[H]'\n", - " POSCHARGE: charge 0 with smiles [H][c+]1[n-][c+]([H])n(C(C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H])[c-]1[H]\n", - "smiles='[H]C1=C([H])N(C(C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H])[C-]([H])[N-]1'\n", - " POSCHARGE: charge 0 with smiles [H]C1=C([H])N(C(C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H])[C-]([H])[N-]1\n", - "smiles='[H]C1=[N+]=C([H])[N+](C(C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H])=C1[H]'\n", - " POSCHARGE: charge 0 with smiles [H]C1=[N+]=C([H])[N+](C(C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H])=C1[H]\n", - " NEW SELECT FUNCTION: uncorr_total: [0, -2, 0, -2, 2]\n", - " NEW SELECT FUNCTION: uncorr_abs_total: [0, 2, 0, 2, 2]\n", - " NEW SELECT FUNCTION: uncorr_abs_atcharge: [0, 4, 4, 2, 2]\n", - " NEW SELECT FUNCTION: uncorr_zwitt: [False, True, True, False, False]\n", - " NEW SELECT FUNCTION: coincide: [True, False, False, True, True]\n", - " NEW SELECT FUNCTION: listofmintot: [0, 2]\n", - " NEW SELECT FUNCTION: listofminabs: [0]\n", - " NEW SELECT FUNCTION: tmplist: [0], including:\n", - " NEW SELECT FUNCTION: Corr_charge=0\n", - " NEW SELECT FUNCTION: Smiles=[H]c1nc([H])n(C(C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H])c1[H]\n", - " NEW SELECT FUNCTION: found corr_charges=[0]\n", - " NEW SELECT FUNCTION: doing tgt_charge=0\n", - " NEW SELECT FUNCTION: charge_state added\n", - " NEW SELECT FUNCTION: Case 1, only one entry for 0 in tmplist\n", - "Target charge 0 of H12-C7-N2 exists in [0].\n", - "------------- Cell2mol LIGAND Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = ligand\n", - " Number of Atoms = 27\n", - " Formula = H18-C6-N-Si2\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = -1\n", - " Smiles = [H]C([H])([H])[Si]([N-][Si](C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H]\n", - " Origin = split_complex\n", - " Number of Groups = 1\n", - "---------------------------------------------------\n", - " [1, 3, 6, 8] -1\n", - "Target charge -1 of H18-C6-N-Si2 exists in [-1].\n", - "H18-C6-N-Si2\n", - "ADD_ATOM: Metalist length 1\n", - "ADD_ATOM: Ligand Atoms 27\n", - "ADD_ATOM: site= 2\n", - "ADD_ATOM: target ligand atom N\n", - "ADD_ATOM: evaluating apos=array([9.4012013, 4.5046029, 2.3526006]) and tgt.coord=[10.6630286, 3.620332, 3.6411202]\n", - "ADD_ATOM: received newlab=['Si', 'Si', 'N', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'H']\n", - "ADD_ATOM: received tmpconmat=array([[0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0,\n", - " 0, 1, 0, 0, 0, 0],\n", - " [1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 1],\n", - " [1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1,\n", - " 1, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 1, 1, 1, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 1, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 1, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 1, 0, 0, 0, 0],\n", - " [0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0]])\n", - "ADD_ATOM: received tmpconnec=array([4, 4, 3, 4, 1, 1, 1, 4, 1, 1, 1, 4, 1, 1, 1, 4, 1, 1, 1, 4, 1, 1,\n", - " 1, 4, 1, 1, 1, 1])\n", - "ADD_ATOM: received tmpconnec[posadded]=1\n", - "ADD_ATOM: Chosen Metal index None. H is added at site 2\n", - " GET_PROTONATION_STATES: evaluating non-haptic group with index 2 and label N\n", - "protonation_states=[------------- Cell2mol Protonation ----------------\n", - " Status = True\n", - " Labels = ['Si', 'Si', 'N', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H']\n", - " Type = Local\n", - " Atoms added in positions = [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]\n", - " Atoms blocked (no atoms added) = [0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]\n", - "---------------------------------------------------\n", - "]\n", - " POSCHARGE will try charges [0, -1, 1, -2, 2]\n", - "smiles='[H]C([H])([H])[Si]([N-][Si](C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H]'\n", - " POSCHARGE: charge 0 with smiles [H]C([H])([H])[Si]([N-][Si](C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H]\n", - "smiles='[H]C([H])([H])[Si]([N-][Si](C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H]'\n", - " POSCHARGE: charge 0 with smiles [H]C([H])([H])[Si]([N-][Si](C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H]\n", - "smiles='[H]C([H])([H])[Si]([N-][Si](C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H]'\n", - " POSCHARGE: charge 0 with smiles [H]C([H])([H])[Si]([N-][Si](C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H]\n", - "smiles='[H]C([H])([H])[Si]([N-][Si](C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H]'\n", - " POSCHARGE: charge 0 with smiles [H]C([H])([H])[Si]([N-][Si](C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H]\n", - "smiles='[H]C([H])([H])[Si]([N-][Si](C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H]'\n", - " POSCHARGE: charge 0 with smiles [H]C([H])([H])[Si]([N-][Si](C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H]\n", - " NEW SELECT FUNCTION: uncorr_total: [-1, -1, -1, -1, -1]\n", - " NEW SELECT FUNCTION: uncorr_abs_total: [1, 1, 1, 1, 1]\n", - " NEW SELECT FUNCTION: uncorr_abs_atcharge: [1, 1, 1, 1, 1]\n", - " NEW SELECT FUNCTION: uncorr_zwitt: [False, False, False, False, False]\n", - " NEW SELECT FUNCTION: coincide: [False, True, False, False, False]\n", - " NEW SELECT FUNCTION: listofmintot: [0, 1, 2, 3, 4]\n", - " NEW SELECT FUNCTION: listofminabs: [0, 1, 2, 3, 4]\n", - " NEW SELECT FUNCTION: tmplist: [1], including:\n", - " NEW SELECT FUNCTION: Corr_charge=-1\n", - " NEW SELECT FUNCTION: Smiles=[H]C([H])([H])[Si]([N-][Si](C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H]\n", - " NEW SELECT FUNCTION: found corr_charges=[-1]\n", - " NEW SELECT FUNCTION: doing tgt_charge=-1\n", - " NEW SELECT FUNCTION: charge_state added\n", - " NEW SELECT FUNCTION: Case 1, only one entry for -1 in tmplist\n", - "Target charge -1 of H18-C6-N-Si2 exists in [-1].\n", - "------------- Cell2mol METAL Object --------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Sub-Type = metal\n", - " Label = Fe\n", - " Atomic Number = 26\n", - " Index in Molecule = 0\n", - " Metal Adjacency (mconnec) = 4\n", - " Regular Adjacencies (connec) = 4\n", - " Coordination Sphere Formula = N4\n", - " Possible Charges = [2, 3]\n", - "----------------------------------------------------\n", - " [4, 9] 2\n", - "Target charge 2 of Fe exists in [2, 3].\n", - "Fe\n", - "Target charge 2 of Fe exists in [2, 3].\n", - "------------- Cell2mol LIGAND Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = ligand\n", - " Number of Atoms = 21\n", - " Formula = H12-C7-N2\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = 0\n", - " Smiles = [H]c1nc([H])n(C(C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H])c1[H]\n", - " Origin = split_complex\n", - " Number of Groups = 1\n", - "---------------------------------------------------\n", - " [0, 2, 5, 7] 0\n", - "Target charge 0 of H12-C7-N2 exists in [0].\n", - "H12-C7-N2\n", - "LIGAND.SPLIT_LIGAND: self.indices=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]\n", - "LIGAND.SPLIT_LIGAND: conn_idx=[1]\n", - "LIGAND.SPLIT_LIGAND: conn_labels=['N']\n", - "LIGAND.SPLIT_LIGAND: conn_coord=[[3.9377592, -2.1183919, 11.6654211]]\n", - "LIGAND.SPLIT_LIGAND: conn_radii=[0.71]\n", - "blocklist=[[0]]\n", - "LIGAND.SPLIT_LIGAND: block=[0]\n", - "ADD_ATOM: Metalist length 1\n", - "ADD_ATOM: Ligand Atoms 21\n", - "ADD_ATOM: site= 1\n", - "ADD_ATOM: target ligand atom N\n", - "ADD_ATOM: evaluating apos=array([ 3.9377592, -2.1183919, 11.6654211]) and tgt.coord=[5.2840859, -3.620332, 10.9233607]\n", - "ADD_ATOM: received newlab=['N', 'N', 'C', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H']\n", - "ADD_ATOM: received tmpconmat=array([[0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1],\n", - " [1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0],\n", - " [0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]])\n", - "ADD_ATOM: received tmpconnec=array([3, 3, 3, 1, 4, 4, 1, 1, 4, 1, 1, 3, 1, 1, 4, 1, 1, 1, 3, 1, 1, 1])\n", - "ADD_ATOM: received tmpconnec[posadded]=1\n", - "ADD_ATOM: Chosen Metal index None. H is added at site 1\n", - " GET_PROTONATION_STATES: evaluating non-haptic group with index 1 and label N\n", - "protonation_states=[------------- Cell2mol Protonation ----------------\n", - " Status = True\n", - " Labels = ['N', 'N', 'C', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H']\n", - " Type = Local\n", - " Atoms added in positions = [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]\n", - " Atoms blocked (no atoms added) = [0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]\n", - "---------------------------------------------------\n", - "]\n", - " POSCHARGE will try charges [0, -1, 1, -2, 2]\n", - "smiles='[H]c1nc([H])n(C(C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H])c1[H]'\n", - " POSCHARGE: charge 0 with smiles [H]c1nc([H])n(C(C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H])c1[H]\n", - "smiles='[H][C+]1[C-]([H])[N-][C-]([H])N1C(C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H]'\n", - " POSCHARGE: charge 0 with smiles [H][C+]1[C-]([H])[N-][C-]([H])N1C(C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H]\n", - "smiles='[H][c+]1[n-][c-]([H])[c+]([H])n1C(C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H]'\n", - " POSCHARGE: charge 0 with smiles [H][c+]1[n-][c-]([H])[c+]([H])n1C(C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H]\n", - "smiles='[H]C1=C([H])N(C(C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H])[C-]([H])[N-]1'\n", - " POSCHARGE: charge 0 with smiles [H]C1=C([H])N(C(C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H])[C-]([H])[N-]1\n", - "smiles='[H]C1=[N+]=C([H])[N+](C(C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H])=C1[H]'\n", - " POSCHARGE: charge 0 with smiles [H]C1=[N+]=C([H])[N+](C(C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H])=C1[H]\n", - " NEW SELECT FUNCTION: uncorr_total: [0, -2, 0, -2, 2]\n", - " NEW SELECT FUNCTION: uncorr_abs_total: [0, 2, 0, 2, 2]\n", - " NEW SELECT FUNCTION: uncorr_abs_atcharge: [0, 4, 4, 2, 2]\n", - " NEW SELECT FUNCTION: uncorr_zwitt: [False, True, True, False, False]\n", - " NEW SELECT FUNCTION: coincide: [True, False, False, True, True]\n", - " NEW SELECT FUNCTION: listofmintot: [0, 2]\n", - " NEW SELECT FUNCTION: listofminabs: [0]\n", - " NEW SELECT FUNCTION: tmplist: [0], including:\n", - " NEW SELECT FUNCTION: Corr_charge=0\n", - " NEW SELECT FUNCTION: Smiles=[H]c1nc([H])n(C(C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H])c1[H]\n", - " NEW SELECT FUNCTION: found corr_charges=[0]\n", - " NEW SELECT FUNCTION: doing tgt_charge=0\n", - " NEW SELECT FUNCTION: charge_state added\n", - " NEW SELECT FUNCTION: Case 1, only one entry for 0 in tmplist\n", - "Target charge 0 of H12-C7-N2 exists in [0].\n", - "------------- Cell2mol LIGAND Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = ligand\n", - " Number of Atoms = 27\n", - " Formula = H18-C6-N-Si2\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = -1\n", - " Smiles = [H]C([H])([H])[Si]([N-][Si](C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H]\n", - " Origin = split_complex\n", - " Number of Groups = 1\n", - "---------------------------------------------------\n", - " [1, 3, 6, 8] -1\n", - "Target charge -1 of H18-C6-N-Si2 exists in [-1].\n", - "H18-C6-N-Si2\n", - "LIGAND.SPLIT_LIGAND: self.indices=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26]\n", - "LIGAND.SPLIT_LIGAND: conn_idx=[3]\n", - "LIGAND.SPLIT_LIGAND: conn_labels=['N']\n", - "LIGAND.SPLIT_LIGAND: conn_coord=[[6.545913200000001, -4.5046029, 12.2118804]]\n", - "LIGAND.SPLIT_LIGAND: conn_radii=[0.71]\n", - "blocklist=[[0]]\n", - "LIGAND.SPLIT_LIGAND: block=[0]\n", - "ADD_ATOM: Metalist length 1\n", - "ADD_ATOM: Ligand Atoms 27\n", - "ADD_ATOM: site= 3\n", - "ADD_ATOM: target ligand atom N\n", - "ADD_ATOM: evaluating apos=array([ 6.5459132, -4.5046029, 12.2118804]) and tgt.coord=[5.2840859, -3.620332, 10.9233607]\n", - "ADD_ATOM: received newlab=['H', 'Si', 'Si', 'N', 'C', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'H']\n", - "ADD_ATOM: received tmpconmat=array([[0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0,\n", - " 0, 1, 0, 0, 0, 0],\n", - " [0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 1],\n", - " [1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 1, 0, 0, 0],\n", - " [0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 1, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1,\n", - " 1, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0,\n", - " 0, 0, 0, 1, 1, 0],\n", - " [0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 1, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 1, 0, 0, 0, 0],\n", - " [0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0]])\n", - "ADD_ATOM: received tmpconnec=array([1, 4, 4, 3, 4, 4, 1, 1, 1, 4, 1, 1, 1, 1, 1, 4, 1, 1, 1, 4, 1, 1,\n", - " 1, 4, 1, 1, 1, 1])\n", - "ADD_ATOM: received tmpconnec[posadded]=1\n", - "ADD_ATOM: Chosen Metal index None. H is added at site 3\n", - " GET_PROTONATION_STATES: evaluating non-haptic group with index 3 and label N\n", - "protonation_states=[------------- Cell2mol Protonation ----------------\n", - " Status = True\n", - " Labels = ['H', 'Si', 'Si', 'N', 'C', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H']\n", - " Type = Local\n", - " Atoms added in positions = [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]\n", - " Atoms blocked (no atoms added) = [0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]\n", - "---------------------------------------------------\n", - "]\n", - " POSCHARGE will try charges [0, -1, 1, -2, 2]\n", - "smiles='[H]C([H])([H])[Si]([N-][Si](C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H]'\n", - " POSCHARGE: charge 0 with smiles [H]C([H])([H])[Si]([N-][Si](C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H]\n", - "smiles='[H]C([H])([H])[Si]([N-][Si](C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H]'\n", - " POSCHARGE: charge 0 with smiles [H]C([H])([H])[Si]([N-][Si](C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H]\n", - "smiles='[H]C([H])([H])[Si]([N-][Si](C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H]'\n", - " POSCHARGE: charge 0 with smiles [H]C([H])([H])[Si]([N-][Si](C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H]\n", - "smiles='[H]C([H])([H])[Si]([N-][Si](C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H]'\n", - " POSCHARGE: charge 0 with smiles [H]C([H])([H])[Si]([N-][Si](C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H]\n", - "smiles='[H]C([H])([H])[Si]([N-][Si](C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H]'\n", - " POSCHARGE: charge 0 with smiles [H]C([H])([H])[Si]([N-][Si](C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H]\n", - " NEW SELECT FUNCTION: uncorr_total: [-1, -1, -1, -1, -1]\n", - " NEW SELECT FUNCTION: uncorr_abs_total: [1, 1, 1, 1, 1]\n", - " NEW SELECT FUNCTION: uncorr_abs_atcharge: [1, 1, 1, 1, 1]\n", - " NEW SELECT FUNCTION: uncorr_zwitt: [False, False, False, False, False]\n", - " NEW SELECT FUNCTION: coincide: [False, True, False, False, False]\n", - " NEW SELECT FUNCTION: listofmintot: [0, 1, 2, 3, 4]\n", - " NEW SELECT FUNCTION: listofminabs: [0, 1, 2, 3, 4]\n", - " NEW SELECT FUNCTION: tmplist: [1], including:\n", - " NEW SELECT FUNCTION: Corr_charge=-1\n", - " NEW SELECT FUNCTION: Smiles=[H]C([H])([H])[Si]([N-][Si](C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H]\n", - " NEW SELECT FUNCTION: found corr_charges=[-1]\n", - " NEW SELECT FUNCTION: doing tgt_charge=-1\n", - " NEW SELECT FUNCTION: charge_state added\n", - " NEW SELECT FUNCTION: Case 1, only one entry for -1 in tmplist\n", - "Target charge -1 of H18-C6-N-Si2 exists in [-1].\n", - "------------- Cell2mol LIGAND Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = ligand\n", - " Number of Atoms = 21\n", - " Formula = H12-C7-N2\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = 0\n", - " Smiles = [H]c1nc([H])n(C(C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H])c1[H]\n", - " Origin = split_complex\n", - " Number of Groups = 1\n", - "---------------------------------------------------\n", - " [0, 2, 5, 7] 0\n", - "Target charge 0 of H12-C7-N2 exists in [0].\n", - "H12-C7-N2\n", - "LIGAND.SPLIT_LIGAND: self.indices=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]\n", - "LIGAND.SPLIT_LIGAND: conn_idx=[2]\n", - "LIGAND.SPLIT_LIGAND: conn_labels=['N']\n", - "LIGAND.SPLIT_LIGAND: conn_coord=[[6.6304126, -2.1183919, 10.1813004]]\n", - "LIGAND.SPLIT_LIGAND: conn_radii=[0.71]\n", - "blocklist=[[0]]\n", - "LIGAND.SPLIT_LIGAND: block=[0]\n", - "ADD_ATOM: Metalist length 1\n", - "ADD_ATOM: Ligand Atoms 21\n", - "ADD_ATOM: site= 2\n", - "ADD_ATOM: target ligand atom N\n", - "ADD_ATOM: evaluating apos=array([ 6.6304126, -2.1183919, 10.1813004]) and tgt.coord=[5.2840859, -3.620332, 10.9233607]\n", - "ADD_ATOM: received newlab=['H', 'N', 'N', 'C', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H']\n", - "ADD_ATOM: received tmpconmat=array([[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0],\n", - " [0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1],\n", - " [0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]])\n", - "ADD_ATOM: received tmpconnec=array([1, 3, 3, 3, 1, 4, 4, 1, 1, 4, 1, 1, 3, 1, 1, 4, 1, 1, 1, 3, 1, 1])\n", - "ADD_ATOM: received tmpconnec[posadded]=1\n", - "ADD_ATOM: Chosen Metal index None. H is added at site 2\n", - " GET_PROTONATION_STATES: evaluating non-haptic group with index 2 and label N\n", - "protonation_states=[------------- Cell2mol Protonation ----------------\n", - " Status = True\n", - " Labels = ['H', 'N', 'N', 'C', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H']\n", - " Type = Local\n", - " Atoms added in positions = [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]\n", - " Atoms blocked (no atoms added) = [0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]\n", - "---------------------------------------------------\n", - "]\n", - " POSCHARGE will try charges [0, -1, 1, -2, 2]\n", - "smiles='[H]c1nc([H])n(C(C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H])c1[H]'\n", - " POSCHARGE: charge 0 with smiles [H]c1nc([H])n(C(C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H])c1[H]\n", - "smiles='[H][C+]1[C-]([H])[N-][C-]([H])N1C(C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H]'\n", - " POSCHARGE: charge 0 with smiles [H][C+]1[C-]([H])[N-][C-]([H])N1C(C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H]\n", - "smiles='[H][c+]1[n-][c-]([H])[c+]([H])n1C(C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H]'\n", - " POSCHARGE: charge 0 with smiles [H][c+]1[n-][c-]([H])[c+]([H])n1C(C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H]\n", - "smiles='[H]C1=C([H])N(C(C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H])[C-]([H])[N-]1'\n", - " POSCHARGE: charge 0 with smiles [H]C1=C([H])N(C(C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H])[C-]([H])[N-]1\n", - "smiles='[H]C1=[N+]=C([H])[N+](C(C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H])=C1[H]'\n", - " POSCHARGE: charge 0 with smiles [H]C1=[N+]=C([H])[N+](C(C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H])=C1[H]\n", - " NEW SELECT FUNCTION: uncorr_total: [0, -2, 0, -2, 2]\n", - " NEW SELECT FUNCTION: uncorr_abs_total: [0, 2, 0, 2, 2]\n", - " NEW SELECT FUNCTION: uncorr_abs_atcharge: [0, 4, 4, 2, 2]\n", - " NEW SELECT FUNCTION: uncorr_zwitt: [False, True, True, False, False]\n", - " NEW SELECT FUNCTION: coincide: [True, False, False, True, True]\n", - " NEW SELECT FUNCTION: listofmintot: [0, 2]\n", - " NEW SELECT FUNCTION: listofminabs: [0]\n", - " NEW SELECT FUNCTION: tmplist: [0], including:\n", - " NEW SELECT FUNCTION: Corr_charge=0\n", - " NEW SELECT FUNCTION: Smiles=[H]c1nc([H])n(C(C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H])c1[H]\n", - " NEW SELECT FUNCTION: found corr_charges=[0]\n", - " NEW SELECT FUNCTION: doing tgt_charge=0\n", - " NEW SELECT FUNCTION: charge_state added\n", - " NEW SELECT FUNCTION: Case 1, only one entry for 0 in tmplist\n", - "Target charge 0 of H12-C7-N2 exists in [0].\n", - "------------- Cell2mol LIGAND Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = ligand\n", - " Number of Atoms = 27\n", - " Formula = H18-C6-N-Si2\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = -1\n", - " Smiles = [H]C([H])([H])[Si]([N-][Si](C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H]\n", - " Origin = split_complex\n", - " Number of Groups = 1\n", - "---------------------------------------------------\n", - " [1, 3, 6, 8] -1\n", - "Target charge -1 of H18-C6-N-Si2 exists in [-1].\n", - "H18-C6-N-Si2\n", - "LIGAND.SPLIT_LIGAND: self.indices=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26]\n", - "LIGAND.SPLIT_LIGAND: conn_idx=[2]\n", - "LIGAND.SPLIT_LIGAND: conn_labels=['N']\n", - "LIGAND.SPLIT_LIGAND: conn_coord=[[4.022258600000001, -4.5046029, 9.6348411]]\n", - "LIGAND.SPLIT_LIGAND: conn_radii=[0.71]\n", - "blocklist=[[0]]\n", - "LIGAND.SPLIT_LIGAND: block=[0]\n", - "ADD_ATOM: Metalist length 1\n", - "ADD_ATOM: Ligand Atoms 27\n", - "ADD_ATOM: site= 2\n", - "ADD_ATOM: target ligand atom N\n", - "ADD_ATOM: evaluating apos=array([ 4.0222586, -4.5046029, 9.6348411]) and tgt.coord=[5.2840859, -3.620332, 10.9233607]\n", - "ADD_ATOM: received newlab=['Si', 'Si', 'N', 'C', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H']\n", - "ADD_ATOM: received tmpconmat=array([[0, 0, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0,\n", - " 1, 0, 0, 0, 0, 0],\n", - " [1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 1],\n", - " [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 1, 0, 0, 1, 0],\n", - " [1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 1, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,\n", - " 0, 0, 1, 1, 0, 0],\n", - " [0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 1, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 1, 0, 0, 0, 0, 0],\n", - " [0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0],\n", - " [0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0]])\n", - "ADD_ATOM: received tmpconnec=array([4, 4, 3, 4, 4, 1, 1, 1, 4, 1, 1, 1, 1, 1, 4, 1, 1, 1, 4, 1, 1, 1,\n", - " 4, 1, 1, 1, 1, 1])\n", - "ADD_ATOM: received tmpconnec[posadded]=1\n", - "ADD_ATOM: Chosen Metal index None. H is added at site 2\n", - " GET_PROTONATION_STATES: evaluating non-haptic group with index 2 and label N\n", - "protonation_states=[------------- Cell2mol Protonation ----------------\n", - " Status = True\n", - " Labels = ['Si', 'Si', 'N', 'C', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'H']\n", - " Type = Local\n", - " Atoms added in positions = [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]\n", - " Atoms blocked (no atoms added) = [0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]\n", - "---------------------------------------------------\n", - "]" - ] - }, - { - "data": { - "text/plain": [ - "[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 97\n", - " Formula = H60-C26-N6-Si4-Fe\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = 0\n", - " Smiles = ['[H]c1nc([H])n(C(C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H])c1[H]', '[H]C([H])([H])[Si]([N-][Si](C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H]', '[H]c1nc([H])n(C(C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H])c1[H]', '[H]C([H])([H])[Si]([N-][Si](C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H]']\n", - " Origin = cell.reconstruct\n", - " Number of Ligands = 4\n", - " Number of Metals = 1\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 97\n", - " Formula = H60-C26-N6-Si4-Fe\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = 0\n", - " Smiles = ['[H]c1nc([H])n(C(C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H])c1[H]', '[H]C([H])([H])[Si]([N-][Si](C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H]', '[H]c1nc([H])n(C(C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H])c1[H]', '[H]C([H])([H])[Si]([N-][Si](C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H]']\n", - " Origin = cell.reconstruct\n", - " Number of Ligands = 4\n", - " Number of Metals = 1\n", - " ---------------------------------------------------]" - ] - }, - "execution_count": 9, - "metadata": {}, - "output_type": "execute_result" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - " POSCHARGE will try charges [0, -1, 1, -2, 2]\n", - "smiles='[H]C([H])([H])[Si]([N-][Si](C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H]'\n", - " POSCHARGE: charge 0 with smiles [H]C([H])([H])[Si]([N-][Si](C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H]\n", - "smiles='[H]C([H])([H])[Si]([N-][Si](C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H]'\n", - " POSCHARGE: charge 0 with smiles [H]C([H])([H])[Si]([N-][Si](C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H]\n", - "smiles='[H]C([H])([H])[Si]([N-][Si](C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H]'\n", - " POSCHARGE: charge 0 with smiles [H]C([H])([H])[Si]([N-][Si](C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H]\n", - "smiles='[H]C([H])([H])[Si]([N-][Si](C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H]'\n", - " POSCHARGE: charge 0 with smiles [H]C([H])([H])[Si]([N-][Si](C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H]\n", - "smiles='[H]C([H])([H])[Si]([N-][Si](C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H]'\n", - " POSCHARGE: charge 0 with smiles [H]C([H])([H])[Si]([N-][Si](C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H]\n", - " NEW SELECT FUNCTION: uncorr_total: [-1, -1, -1, -1, -1]\n", - " NEW SELECT FUNCTION: uncorr_abs_total: [1, 1, 1, 1, 1]\n", - " NEW SELECT FUNCTION: uncorr_abs_atcharge: [1, 1, 1, 1, 1]\n", - " NEW SELECT FUNCTION: uncorr_zwitt: [False, False, False, False, False]\n", - " NEW SELECT FUNCTION: coincide: [False, True, False, False, False]\n", - " NEW SELECT FUNCTION: listofmintot: [0, 1, 2, 3, 4]\n", - " NEW SELECT FUNCTION: listofminabs: [0, 1, 2, 3, 4]\n", - " NEW SELECT FUNCTION: tmplist: [1], including:\n", - " NEW SELECT FUNCTION: Corr_charge=-1\n", - " NEW SELECT FUNCTION: Smiles=[H]C([H])([H])[Si]([N-][Si](C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H]\n", - " NEW SELECT FUNCTION: found corr_charges=[-1]\n", - " NEW SELECT FUNCTION: doing tgt_charge=-1\n", - " NEW SELECT FUNCTION: charge_state added\n", - " NEW SELECT FUNCTION: Case 1, only one entry for -1 in tmplist\n", - "Target charge -1 of H18-C6-N-Si2 exists in [-1].\n", - "------------- Cell2mol METAL Object --------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Sub-Type = metal\n", - " Label = Fe\n", - " Atomic Number = 26\n", - " Index in Molecule = 0\n", - " Metal Adjacency (mconnec) = 4\n", - " Regular Adjacencies (connec) = 4\n", - " Atom Charge = 2.0\n", - " Coordination Sphere Formula = N4\n", - " Possible Charges = [2, 3]\n", - "----------------------------------------------------\n", - " [4, 9] 2\n", - "Target charge 2 of Fe exists in [2, 3].\n", - "Fe\n", - "Target charge 2 of Fe exists in [2, 3].\n" - ] - } - ], - "source": [ - "newcell.assign_charges(debug=debug)" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "False" - ] - }, - "execution_count": 10, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "newcell.error_prepare_mols" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 97\n", - " Formula = H60-C26-N6-Si4-Fe\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = 0\n", - " Smiles = ['[H]c1nc([H])n(C(C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H])c1[H]', '[H]C([H])([H])[Si]([N-][Si](C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H]', '[H]c1nc([H])n(C(C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H])c1[H]', '[H]C([H])([H])[Si]([N-][Si](C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H]']\n", - " Origin = cell.reconstruct\n", - " Number of Ligands = 4\n", - " Number of Metals = 1\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 97\n", - " Formula = H60-C26-N6-Si4-Fe\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = 0\n", - " Smiles = ['[H]c1nc([H])n(C(C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H])c1[H]', '[H]C([H])([H])[Si]([N-][Si](C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H]', '[H]c1nc([H])n(C(C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H])c1[H]', '[H]C([H])([H])[Si]([N-][Si](C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H]']\n", - " Origin = cell.reconstruct\n", - " Number of Ligands = 4\n", - " Number of Metals = 1\n", - " ---------------------------------------------------]" - ] - }, - "execution_count": 11, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "newcell.moleclist" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "CELL.CREATE_BONDS: Creating Bonds for molecule H60-C26-N6-Si4-Fe\n" - ] - }, - { - "data": { - "image/png": "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", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "CREATE BONDS: Number of atoms in ligand object and RDKit MOL are equal: 21 21\n", - "idx=0 N Number of bonds : 2\n", - "N N : 0 , C C : 2 , 1.5\n", - "BOND CREATED 0 0 2 1.5 N C\n", - "N N : 0 , C C : 4 , 1.5\n", - "BOND CREATED 0 0 4 1.5 N C\n", - "BONDS [('N', 'C', 1.5, 1.327), ('N', 'C', 1.5, 1.375)]\n", - "idx=1 N Number of bonds : 3\n", - "N N : 1 , C C : 2 , 1.5\n", - "BOND CREATED 1 1 2 1.5 N C\n", - "N N : 1 , C C : 6 , 1.5\n", - "BOND CREATED 1 1 6 1.5 N C\n", - "N N : 1 , C C : 8 , 1.0\n", - "BOND CREATED 1 1 8 1.0 N C\n", - "BONDS [('N', 'C', 1.5, 1.34), ('N', 'C', 1.5, 1.378), ('N', 'C', 1.0, 1.491)]\n", - "idx=2 C Number of bonds : 3\n", - "N N : 0 , C C : 2 , 1.5\n", - "BOND CREATED 2 2 0 1.5 C N\n", - "N N : 1 , C C : 2 , 1.5\n", - "BOND CREATED 2 2 1 1.5 C N\n", - "C C : 2 , H H : 3 , 1.0\n", - "BOND CREATED 2 2 3 1.0 C H\n", - "BONDS [('C', 'N', 1.5, 1.327), ('C', 'N', 1.5, 1.34), ('C', 'H', 1.0, 0.93)]\n", - "idx=3 H Number of bonds : 1\n", - "C C : 2 , H H : 3 , 1.0\n", - "BOND CREATED 3 3 2 1.0 H C\n", - "BONDS [('H', 'C', 1.0, 0.93)]\n", - "idx=4 C Number of bonds : 3\n", - "N N : 0 , C C : 4 , 1.5\n", - "BOND CREATED 4 4 0 1.5 C N\n", - "C C : 4 , H H : 5 , 1.0\n", - "BOND CREATED 4 4 5 1.0 C H\n", - "C C : 4 , C C : 6 , 1.5\n", - "BOND CREATED 4 4 6 1.5 C C\n", - "BONDS [('C', 'N', 1.5, 1.375), ('C', 'H', 1.0, 0.93), ('C', 'C', 1.5, 1.352)]\n", - "idx=5 H Number of bonds : 1\n", - "C C : 4 , H H : 5 , 1.0\n", - "BOND CREATED 5 5 4 1.0 H C\n", - "BONDS [('H', 'C', 1.0, 0.93)]\n", - "idx=6 C Number of bonds : 3\n", - "N N : 1 , C C : 6 , 1.5\n", - "BOND CREATED 6 6 1 1.5 C N\n", - "C C : 4 , C C : 6 , 1.5\n", - "BOND CREATED 6 6 4 1.5 C C\n", - "C C : 6 , H H : 7 , 1.0\n", - "BOND CREATED 6 6 7 1.0 C H\n", - "BONDS [('C', 'N', 1.5, 1.378), ('C', 'C', 1.5, 1.352), ('C', 'H', 1.0, 0.93)]\n", - "idx=7 H Number of bonds : 1\n", - "C C : 6 , H H : 7 , 1.0\n", - "BOND CREATED 7 7 6 1.0 H C\n", - "BONDS [('H', 'C', 1.0, 0.93)]\n", - "idx=8 C Number of bonds : 4\n", - "N N : 1 , C C : 8 , 1.0\n", - "BOND CREATED 8 8 1 1.0 C N\n", - "C C : 8 , C C : 9 , 1.0\n", - "BOND CREATED 8 8 9 1.0 C C\n", - "C C : 8 , C C : 13 , 1.0\n", - "BOND CREATED 8 8 13 1.0 C C\n", - "C C : 8 , C C : 17 , 1.0\n", - "BOND CREATED 8 8 17 1.0 C C\n", - "BONDS [('C', 'N', 1.0, 1.491), ('C', 'C', 1.0, 1.521), ('C', 'C', 1.0, 1.518), ('C', 'C', 1.0, 1.521)]\n", - "idx=9 C Number of bonds : 4\n", - "C C : 8 , C C : 9 , 1.0\n", - "BOND CREATED 9 9 8 1.0 C C\n", - "C C : 9 , H H : 10 , 1.0\n", - "BOND CREATED 9 9 10 1.0 C H\n", - "C C : 9 , H H : 11 , 1.0\n", - "BOND CREATED 9 9 11 1.0 C H\n", - "C C : 9 , H H : 12 , 1.0\n", - "BOND CREATED 9 9 12 1.0 C H\n", - "BONDS [('C', 'C', 1.0, 1.521), ('C', 'H', 1.0, 0.96), ('C', 'H', 1.0, 0.959), ('C', 'H', 1.0, 0.959)]\n", - "idx=10 H Number of bonds : 1\n", - "C C : 9 , H H : 10 , 1.0\n", - "BOND CREATED 10 10 9 1.0 H C\n", - "BONDS [('H', 'C', 1.0, 0.96)]\n", - "idx=11 H Number of bonds : 1\n", - "C C : 9 , H H : 11 , 1.0\n", - "BOND CREATED 11 11 9 1.0 H C\n", - "BONDS [('H', 'C', 1.0, 0.959)]\n", - "idx=12 H Number of bonds : 1\n", - "C C : 9 , H H : 12 , 1.0\n", - "BOND CREATED 12 12 9 1.0 H C\n", - "BONDS [('H', 'C', 1.0, 0.959)]\n", - "idx=13 C Number of bonds : 4\n", - "C C : 8 , C C : 13 , 1.0\n", - "BOND CREATED 13 13 8 1.0 C C\n", - "C C : 13 , H H : 14 , 1.0\n", - "BOND CREATED 13 13 14 1.0 C H\n", - "C C : 13 , H H : 15 , 1.0\n", - "BOND CREATED 13 13 15 1.0 C H\n", - "C C : 13 , H H : 16 , 1.0\n", - "BOND CREATED 13 13 16 1.0 C H\n", - "BONDS [('C', 'C', 1.0, 1.518), ('C', 'H', 1.0, 0.96), ('C', 'H', 1.0, 0.96), ('C', 'H', 1.0, 0.961)]\n", - "idx=14 H Number of bonds : 1\n", - "C C : 13 , H H : 14 , 1.0\n", - "BOND CREATED 14 14 13 1.0 H C\n", - "BONDS [('H', 'C', 1.0, 0.96)]\n", - "idx=15 H Number of bonds : 1\n", - "C C : 13 , H H : 15 , 1.0\n", - "BOND CREATED 15 15 13 1.0 H C\n", - "BONDS [('H', 'C', 1.0, 0.96)]\n", - "idx=16 H Number of bonds : 1\n", - "C C : 13 , H H : 16 , 1.0\n", - "BOND CREATED 16 16 13 1.0 H C\n", - "BONDS [('H', 'C', 1.0, 0.961)]\n", - "idx=17 C Number of bonds : 4\n", - "C C : 8 , C C : 17 , 1.0\n", - "BOND CREATED 17 17 8 1.0 C C\n", - "C C : 17 , H H : 18 , 1.0\n", - "BOND CREATED 17 17 18 1.0 C H\n", - "C C : 17 , H H : 19 , 1.0\n", - "BOND CREATED 17 17 19 1.0 C H\n", - "C C : 17 , H H : 20 , 1.0\n", - "BOND CREATED 17 17 20 1.0 C H\n", - "BONDS [('C', 'C', 1.0, 1.521), ('C', 'H', 1.0, 0.96), ('C', 'H', 1.0, 0.96), ('C', 'H', 1.0, 0.96)]\n", - "idx=18 H Number of bonds : 1\n", - "C C : 17 , H H : 18 , 1.0\n", - "BOND CREATED 18 18 17 1.0 H C\n", - "BONDS [('H', 'C', 1.0, 0.96)]\n", - "idx=19 H Number of bonds : 1\n", - "C C : 17 , H H : 19 , 1.0\n", - "BOND CREATED 19 19 17 1.0 H C\n", - "BONDS [('H', 'C', 1.0, 0.96)]\n", - "idx=20 H Number of bonds : 1\n", - "C C : 17 , H H : 20 , 1.0\n", - "BOND CREATED 20 20 17 1.0 H C\n", - "BONDS [('H', 'C', 1.0, 0.96)]\n" - ] - }, - { - "data": { - "image/png": "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", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "CREATE BONDS: Number of atoms in ligand object and RDKit MOL are equal: 27 27\n", - "idx=0 Si Number of bonds : 4\n", - "Si Si : 0 , N N : 2 , 1.0\n", - "BOND CREATED 0 0 2 1.0 Si N\n", - "Si Si : 0 , C C : 3 , 1.0\n", - "BOND CREATED 0 0 3 1.0 Si C\n", - "Si Si : 0 , C C : 7 , 1.0\n", - "BOND CREATED 0 0 7 1.0 Si C\n", - "Si Si : 0 , C C : 11 , 1.0\n", - "BOND CREATED 0 0 11 1.0 Si C\n", - "BONDS [('Si', 'N', 1.0, 1.708), ('Si', 'C', 1.0, 1.875), ('Si', 'C', 1.0, 1.895), ('Si', 'C', 1.0, 1.876)]\n", - "idx=1 Si Number of bonds : 4\n", - "Si Si : 1 , N N : 2 , 1.0\n", - "BOND CREATED 1 1 2 1.0 Si N\n", - "Si Si : 1 , C C : 15 , 1.0\n", - "BOND CREATED 1 1 15 1.0 Si C\n", - "Si Si : 1 , C C : 19 , 1.0\n", - "BOND CREATED 1 1 19 1.0 Si C\n", - "Si Si : 1 , C C : 23 , 1.0\n", - "BOND CREATED 1 1 23 1.0 Si C\n", - "BONDS [('Si', 'N', 1.0, 1.706), ('Si', 'C', 1.0, 1.882), ('Si', 'C', 1.0, 1.878), ('Si', 'C', 1.0, 1.887)]\n", - "idx=2 N Number of bonds : 2\n", - "Si Si : 0 , N N : 2 , 1.0\n", - "BOND CREATED 2 2 0 1.0 N Si\n", - "Si Si : 1 , N N : 2 , 1.0\n", - "BOND CREATED 2 2 1 1.0 N Si\n", - "BONDS [('N', 'Si', 1.0, 1.708), ('N', 'Si', 1.0, 1.706)]\n", - "idx=3 C Number of bonds : 4\n", - "Si Si : 0 , C C : 3 , 1.0\n", - "BOND CREATED 3 3 0 1.0 C Si\n", - "C C : 3 , H H : 4 , 1.0\n", - "BOND CREATED 3 3 4 1.0 C H\n", - "C C : 3 , H H : 5 , 1.0\n", - "BOND CREATED 3 3 5 1.0 C H\n", - "C C : 3 , H H : 6 , 1.0\n", - "BOND CREATED 3 3 6 1.0 C H\n", - "BONDS [('C', 'Si', 1.0, 1.875), ('C', 'H', 1.0, 0.96), ('C', 'H', 1.0, 0.96), ('C', 'H', 1.0, 0.961)]\n", - "idx=4 H Number of bonds : 1\n", - "C C : 3 , H H : 4 , 1.0\n", - "BOND CREATED 4 4 3 1.0 H C\n", - "BONDS [('H', 'C', 1.0, 0.96)]\n", - "idx=5 H Number of bonds : 1\n", - "C C : 3 , H H : 5 , 1.0\n", - "BOND CREATED 5 5 3 1.0 H C\n", - "BONDS [('H', 'C', 1.0, 0.96)]\n", - "idx=6 H Number of bonds : 1\n", - "C C : 3 , H H : 6 , 1.0\n", - "BOND CREATED 6 6 3 1.0 H C\n", - "BONDS [('H', 'C', 1.0, 0.961)]\n", - "idx=7 C Number of bonds : 4\n", - "Si Si : 0 , C C : 7 , 1.0\n", - "BOND CREATED 7 7 0 1.0 C Si\n", - "C C : 7 , H H : 8 , 1.0\n", - "BOND CREATED 7 7 8 1.0 C H\n", - "C C : 7 , H H : 9 , 1.0\n", - "BOND CREATED 7 7 9 1.0 C H\n", - "C C : 7 , H H : 10 , 1.0\n", - "BOND CREATED 7 7 10 1.0 C H\n", - "BONDS [('C', 'Si', 1.0, 1.895), ('C', 'H', 1.0, 0.96), ('C', 'H', 1.0, 0.96), ('C', 'H', 1.0, 0.96)]\n", - "idx=8 H Number of bonds : 1\n", - "C C : 7 , H H : 8 , 1.0\n", - "BOND CREATED 8 8 7 1.0 H C\n", - "BONDS [('H', 'C', 1.0, 0.96)]\n", - "idx=9 H Number of bonds : 1\n", - "C C : 7 , H H : 9 , 1.0\n", - "BOND CREATED 9 9 7 1.0 H C\n", - "BONDS [('H', 'C', 1.0, 0.96)]\n", - "idx=10 H Number of bonds : 1\n", - "C C : 7 , H H : 10 , 1.0\n", - "BOND CREATED 10 10 7 1.0 H C\n", - "BONDS [('H', 'C', 1.0, 0.96)]\n", - "idx=11 C Number of bonds : 4\n", - "Si Si : 0 , C C : 11 , 1.0\n", - "BOND CREATED 11 11 0 1.0 C Si\n", - "C C : 11 , H H : 12 , 1.0\n", - "BOND CREATED 11 11 12 1.0 C H\n", - "C C : 11 , H H : 13 , 1.0\n", - "BOND CREATED 11 11 13 1.0 C H\n", - "C C : 11 , H H : 14 , 1.0\n", - "BOND CREATED 11 11 14 1.0 C H\n", - "BONDS [('C', 'Si', 1.0, 1.876), ('C', 'H', 1.0, 0.959), ('C', 'H', 1.0, 0.96), ('C', 'H', 1.0, 0.96)]\n", - "idx=12 H Number of bonds : 1\n", - "C C : 11 , H H : 12 , 1.0\n", - "BOND CREATED 12 12 11 1.0 H C\n", - "BONDS [('H', 'C', 1.0, 0.959)]\n", - "idx=13 H Number of bonds : 1\n", - "C C : 11 , H H : 13 , 1.0\n", - "BOND CREATED 13 13 11 1.0 H C\n", - "BONDS [('H', 'C', 1.0, 0.96)]\n", - "idx=14 H Number of bonds : 1\n", - "C C : 11 , H H : 14 , 1.0\n", - "BOND CREATED 14 14 11 1.0 H C\n", - "BONDS [('H', 'C', 1.0, 0.96)]\n", - "idx=15 C Number of bonds : 4\n", - "Si Si : 1 , C C : 15 , 1.0\n", - "BOND CREATED 15 15 1 1.0 C Si\n", - "C C : 15 , H H : 16 , 1.0\n", - "BOND CREATED 15 15 16 1.0 C H\n", - "C C : 15 , H H : 17 , 1.0\n", - "BOND CREATED 15 15 17 1.0 C H\n", - "C C : 15 , H H : 18 , 1.0\n", - "BOND CREATED 15 15 18 1.0 C H\n", - "BONDS [('C', 'Si', 1.0, 1.882), ('C', 'H', 1.0, 0.96), ('C', 'H', 1.0, 0.96), ('C', 'H', 1.0, 0.961)]\n", - "idx=16 H Number of bonds : 1\n", - "C C : 15 , H H : 16 , 1.0\n", - "BOND CREATED 16 16 15 1.0 H C\n", - "BONDS [('H', 'C', 1.0, 0.96)]\n", - "idx=17 H Number of bonds : 1\n", - "C C : 15 , H H : 17 , 1.0\n", - "BOND CREATED 17 17 15 1.0 H C\n", - "BONDS [('H', 'C', 1.0, 0.96)]\n", - "idx=18 H Number of bonds : 1\n", - "C C : 15 , H H : 18 , 1.0\n", - "BOND CREATED 18 18 15 1.0 H C\n", - "BONDS [('H', 'C', 1.0, 0.961)]\n", - "idx=19 C Number of bonds : 4\n", - "Si Si : 1 , C C : 19 , 1.0\n", - "BOND CREATED 19 19 1 1.0 C Si\n", - "C C : 19 , H H : 20 , 1.0\n", - "BOND CREATED 19 19 20 1.0 C H\n", - "C C : 19 , H H : 21 , 1.0\n", - "BOND CREATED 19 19 21 1.0 C H\n", - "C C : 19 , H H : 22 , 1.0\n", - "BOND CREATED 19 19 22 1.0 C H\n", - "BONDS [('C', 'Si', 1.0, 1.878), ('C', 'H', 1.0, 0.96), ('C', 'H', 1.0, 0.96), ('C', 'H', 1.0, 0.96)]\n", - "idx=20 H Number of bonds : 1\n", - "C C : 19 , H H : 20 , 1.0\n", - "BOND CREATED 20 20 19 1.0 H C\n", - "BONDS [('H', 'C', 1.0, 0.96)]\n", - "idx=21 H Number of bonds : 1\n", - "C C : 19 , H H : 21 , 1.0\n", - "BOND CREATED 21 21 19 1.0 H C\n", - "BONDS [('H', 'C', 1.0, 0.96)]\n", - "idx=22 H Number of bonds : 1\n", - "C C : 19 , H H : 22 , 1.0\n", - "BOND CREATED 22 22 19 1.0 H C\n", - "BONDS [('H', 'C', 1.0, 0.96)]\n", - "idx=23 C Number of bonds : 4\n", - "Si Si : 1 , C C : 23 , 1.0\n", - "BOND CREATED 23 23 1 1.0 C Si\n", - "C C : 23 , H H : 24 , 1.0\n", - "BOND CREATED 23 23 24 1.0 C H\n", - "C C : 23 , H H : 25 , 1.0\n", - "BOND CREATED 23 23 25 1.0 C H\n", - "C C : 23 , H H : 26 , 1.0\n", - "BOND CREATED 23 23 26 1.0 C H\n", - "BONDS [('C', 'Si', 1.0, 1.887), ('C', 'H', 1.0, 0.96), ('C', 'H', 1.0, 0.96), ('C', 'H', 1.0, 0.958)]\n", - "idx=24 H Number of bonds : 1\n", - "C C : 23 , H H : 24 , 1.0\n", - "BOND CREATED 24 24 23 1.0 H C\n", - "BONDS [('H', 'C', 1.0, 0.96)]\n", - "idx=25 H Number of bonds : 1\n", - "C C : 23 , H H : 25 , 1.0\n", - "BOND CREATED 25 25 23 1.0 H C\n", - "BONDS [('H', 'C', 1.0, 0.96)]\n", - "idx=26 H Number of bonds : 1\n", - "C C : 23 , H H : 26 , 1.0\n", - "BOND CREATED 26 26 23 1.0 H C\n", - "BONDS [('H', 'C', 1.0, 0.958)]\n" - ] - }, - { - "data": { - "image/png": "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", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "CREATE BONDS: Number of atoms in ligand object and RDKit MOL are equal: 21 21\n", - "idx=0 N Number of bonds : 2\n", - "N N : 0 , C C : 2 , 1.5\n", - "BOND CREATED 0 0 2 1.5 N C\n", - "N N : 0 , C C : 4 , 1.5\n", - "BOND CREATED 0 0 4 1.5 N C\n", - "BONDS [('N', 'C', 1.5, 1.327), ('N', 'C', 1.5, 1.375)]\n", - "idx=1 N Number of bonds : 3\n", - "N N : 1 , C C : 2 , 1.5\n", - "BOND CREATED 1 1 2 1.5 N C\n", - "N N : 1 , C C : 6 , 1.5\n", - "BOND CREATED 1 1 6 1.5 N C\n", - "N N : 1 , C C : 8 , 1.0\n", - "BOND CREATED 1 1 8 1.0 N C\n", - "BONDS [('N', 'C', 1.5, 1.34), ('N', 'C', 1.5, 1.378), ('N', 'C', 1.0, 1.491)]\n", - "idx=2 C Number of bonds : 3\n", - "N N : 0 , C C : 2 , 1.5\n", - "BOND CREATED 2 2 0 1.5 C N\n", - "N N : 1 , C C : 2 , 1.5\n", - "BOND CREATED 2 2 1 1.5 C N\n", - "C C : 2 , H H : 3 , 1.0\n", - "BOND CREATED 2 2 3 1.0 C H\n", - "BONDS [('C', 'N', 1.5, 1.327), ('C', 'N', 1.5, 1.34), ('C', 'H', 1.0, 0.93)]\n", - "idx=3 H Number of bonds : 1\n", - "C C : 2 , H H : 3 , 1.0\n", - "BOND CREATED 3 3 2 1.0 H C\n", - "BONDS [('H', 'C', 1.0, 0.93)]\n", - "idx=4 C Number of bonds : 3\n", - "N N : 0 , C C : 4 , 1.5\n", - "BOND CREATED 4 4 0 1.5 C N\n", - "C C : 4 , H H : 5 , 1.0\n", - "BOND CREATED 4 4 5 1.0 C H\n", - "C C : 4 , C C : 6 , 1.5\n", - "BOND CREATED 4 4 6 1.5 C C\n", - "BONDS [('C', 'N', 1.5, 1.375), ('C', 'H', 1.0, 0.93), ('C', 'C', 1.5, 1.352)]\n", - "idx=5 H Number of bonds : 1\n", - "C C : 4 , H H : 5 , 1.0\n", - "BOND CREATED 5 5 4 1.0 H C\n", - "BONDS [('H', 'C', 1.0, 0.93)]\n", - "idx=6 C Number of bonds : 3\n", - "N N : 1 , C C : 6 , 1.5\n", - "BOND CREATED 6 6 1 1.5 C N\n", - "C C : 4 , C C : 6 , 1.5\n", - "BOND CREATED 6 6 4 1.5 C C\n", - "C C : 6 , H H : 7 , 1.0\n", - "BOND CREATED 6 6 7 1.0 C H\n", - "BONDS [('C', 'N', 1.5, 1.378), ('C', 'C', 1.5, 1.352), ('C', 'H', 1.0, 0.93)]\n", - "idx=7 H Number of bonds : 1\n", - "C C : 6 , H H : 7 , 1.0\n", - "BOND CREATED 7 7 6 1.0 H C\n", - "BONDS [('H', 'C', 1.0, 0.93)]\n", - "idx=8 C Number of bonds : 4\n", - "N N : 1 , C C : 8 , 1.0\n", - "BOND CREATED 8 8 1 1.0 C N\n", - "C C : 8 , C C : 9 , 1.0\n", - "BOND CREATED 8 8 9 1.0 C C\n", - "C C : 8 , C C : 13 , 1.0\n", - "BOND CREATED 8 8 13 1.0 C C\n", - "C C : 8 , C C : 17 , 1.0\n", - "BOND CREATED 8 8 17 1.0 C C\n", - "BONDS [('C', 'N', 1.0, 1.491), ('C', 'C', 1.0, 1.521), ('C', 'C', 1.0, 1.518), ('C', 'C', 1.0, 1.521)]\n", - "idx=9 C Number of bonds : 4\n", - "C C : 8 , C C : 9 , 1.0\n", - "BOND CREATED 9 9 8 1.0 C C\n", - "C C : 9 , H H : 10 , 1.0\n", - "BOND CREATED 9 9 10 1.0 C H\n", - "C C : 9 , H H : 11 , 1.0\n", - "BOND CREATED 9 9 11 1.0 C H\n", - "C C : 9 , H H : 12 , 1.0\n", - "BOND CREATED 9 9 12 1.0 C H\n", - "BONDS [('C', 'C', 1.0, 1.521), ('C', 'H', 1.0, 0.96), ('C', 'H', 1.0, 0.959), ('C', 'H', 1.0, 0.959)]\n", - "idx=10 H Number of bonds : 1\n", - "C C : 9 , H H : 10 , 1.0\n", - "BOND CREATED 10 10 9 1.0 H C\n", - "BONDS [('H', 'C', 1.0, 0.96)]\n", - "idx=11 H Number of bonds : 1\n", - "C C : 9 , H H : 11 , 1.0\n", - "BOND CREATED 11 11 9 1.0 H C\n", - "BONDS [('H', 'C', 1.0, 0.959)]\n", - "idx=12 H Number of bonds : 1\n", - "C C : 9 , H H : 12 , 1.0\n", - "BOND CREATED 12 12 9 1.0 H C\n", - "BONDS [('H', 'C', 1.0, 0.959)]\n", - "idx=13 C Number of bonds : 4\n", - "C C : 8 , C C : 13 , 1.0\n", - "BOND CREATED 13 13 8 1.0 C C\n", - "C C : 13 , H H : 14 , 1.0\n", - "BOND CREATED 13 13 14 1.0 C H\n", - "C C : 13 , H H : 15 , 1.0\n", - "BOND CREATED 13 13 15 1.0 C H\n", - "C C : 13 , H H : 16 , 1.0\n", - "BOND CREATED 13 13 16 1.0 C H\n", - "BONDS [('C', 'C', 1.0, 1.518), ('C', 'H', 1.0, 0.96), ('C', 'H', 1.0, 0.96), ('C', 'H', 1.0, 0.961)]\n", - "idx=14 H Number of bonds : 1\n", - "C C : 13 , H H : 14 , 1.0\n", - "BOND CREATED 14 14 13 1.0 H C\n", - "BONDS [('H', 'C', 1.0, 0.96)]\n", - "idx=15 H Number of bonds : 1\n", - "C C : 13 , H H : 15 , 1.0\n", - "BOND CREATED 15 15 13 1.0 H C\n", - "BONDS [('H', 'C', 1.0, 0.96)]\n", - "idx=16 H Number of bonds : 1\n", - "C C : 13 , H H : 16 , 1.0\n", - "BOND CREATED 16 16 13 1.0 H C\n", - "BONDS [('H', 'C', 1.0, 0.961)]\n", - "idx=17 C Number of bonds : 4\n", - "C C : 8 , C C : 17 , 1.0\n", - "BOND CREATED 17 17 8 1.0 C C\n", - "C C : 17 , H H : 18 , 1.0\n", - "BOND CREATED 17 17 18 1.0 C H\n", - "C C : 17 , H H : 19 , 1.0\n", - "BOND CREATED 17 17 19 1.0 C H\n", - "C C : 17 , H H : 20 , 1.0\n", - "BOND CREATED 17 17 20 1.0 C H\n", - "BONDS [('C', 'C', 1.0, 1.521), ('C', 'H', 1.0, 0.96), ('C', 'H', 1.0, 0.96), ('C', 'H', 1.0, 0.96)]\n", - "idx=18 H Number of bonds : 1\n", - "C C : 17 , H H : 18 , 1.0\n", - "BOND CREATED 18 18 17 1.0 H C\n", - "BONDS [('H', 'C', 1.0, 0.96)]\n", - "idx=19 H Number of bonds : 1\n", - "C C : 17 , H H : 19 , 1.0\n", - "BOND CREATED 19 19 17 1.0 H C\n", - "BONDS [('H', 'C', 1.0, 0.96)]\n", - "idx=20 H Number of bonds : 1\n", - "C C : 17 , H H : 20 , 1.0\n", - "BOND CREATED 20 20 17 1.0 H C\n", - "BONDS [('H', 'C', 1.0, 0.96)]\n" - ] - }, - { - "data": { - "image/png": "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", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "CREATE BONDS: Number of atoms in ligand object and RDKit MOL are equal: 27 27\n", - "idx=0 Si Number of bonds : 4\n", - "Si Si : 0 , N N : 2 , 1.0\n", - "BOND CREATED 0 0 2 1.0 Si N\n", - "Si Si : 0 , C C : 3 , 1.0\n", - "BOND CREATED 0 0 3 1.0 Si C\n", - "Si Si : 0 , C C : 7 , 1.0\n", - "BOND CREATED 0 0 7 1.0 Si C\n", - "Si Si : 0 , C C : 11 , 1.0\n", - "BOND CREATED 0 0 11 1.0 Si C\n", - "BONDS [('Si', 'N', 1.0, 1.708), ('Si', 'C', 1.0, 1.875), ('Si', 'C', 1.0, 1.895), ('Si', 'C', 1.0, 1.876)]\n", - "idx=1 Si Number of bonds : 4\n", - "Si Si : 1 , N N : 2 , 1.0\n", - "BOND CREATED 1 1 2 1.0 Si N\n", - "Si Si : 1 , C C : 15 , 1.0\n", - "BOND CREATED 1 1 15 1.0 Si C\n", - "Si Si : 1 , C C : 19 , 1.0\n", - "BOND CREATED 1 1 19 1.0 Si C\n", - "Si Si : 1 , C C : 23 , 1.0\n", - "BOND CREATED 1 1 23 1.0 Si C\n", - "BONDS [('Si', 'N', 1.0, 1.706), ('Si', 'C', 1.0, 1.882), ('Si', 'C', 1.0, 1.878), ('Si', 'C', 1.0, 1.887)]\n", - "idx=2 N Number of bonds : 2\n", - "Si Si : 0 , N N : 2 , 1.0\n", - "BOND CREATED 2 2 0 1.0 N Si\n", - "Si Si : 1 , N N : 2 , 1.0\n", - "BOND CREATED 2 2 1 1.0 N Si\n", - "BONDS [('N', 'Si', 1.0, 1.708), ('N', 'Si', 1.0, 1.706)]\n", - "idx=3 C Number of bonds : 4\n", - "Si Si : 0 , C C : 3 , 1.0\n", - "BOND CREATED 3 3 0 1.0 C Si\n", - "C C : 3 , H H : 4 , 1.0\n", - "BOND CREATED 3 3 4 1.0 C H\n", - "C C : 3 , H H : 5 , 1.0\n", - "BOND CREATED 3 3 5 1.0 C H\n", - "C C : 3 , H H : 6 , 1.0\n", - "BOND CREATED 3 3 6 1.0 C H\n", - "BONDS [('C', 'Si', 1.0, 1.875), ('C', 'H', 1.0, 0.96), ('C', 'H', 1.0, 0.96), ('C', 'H', 1.0, 0.961)]\n", - "idx=4 H Number of bonds : 1\n", - "C C : 3 , H H : 4 , 1.0\n", - "BOND CREATED 4 4 3 1.0 H C\n", - "BONDS [('H', 'C', 1.0, 0.96)]\n", - "idx=5 H Number of bonds : 1\n", - "C C : 3 , H H : 5 , 1.0\n", - "BOND CREATED 5 5 3 1.0 H C\n", - "BONDS [('H', 'C', 1.0, 0.96)]\n", - "idx=6 H Number of bonds : 1\n", - "C C : 3 , H H : 6 , 1.0\n", - "BOND CREATED 6 6 3 1.0 H C\n", - "BONDS [('H', 'C', 1.0, 0.961)]\n", - "idx=7 C Number of bonds : 4\n", - "Si Si : 0 , C C : 7 , 1.0\n", - "BOND CREATED 7 7 0 1.0 C Si\n", - "C C : 7 , H H : 8 , 1.0\n", - "BOND CREATED 7 7 8 1.0 C H\n", - "C C : 7 , H H : 9 , 1.0\n", - "BOND CREATED 7 7 9 1.0 C H\n", - "C C : 7 , H H : 10 , 1.0\n", - "BOND CREATED 7 7 10 1.0 C H\n", - "BONDS [('C', 'Si', 1.0, 1.895), ('C', 'H', 1.0, 0.96), ('C', 'H', 1.0, 0.96), ('C', 'H', 1.0, 0.96)]\n", - "idx=8 H Number of bonds : 1\n", - "C C : 7 , H H : 8 , 1.0\n", - "BOND CREATED 8 8 7 1.0 H C\n", - "BONDS [('H', 'C', 1.0, 0.96)]\n", - "idx=9 H Number of bonds : 1\n", - "C C : 7 , H H : 9 , 1.0\n", - "BOND CREATED 9 9 7 1.0 H C\n", - "BONDS [('H', 'C', 1.0, 0.96)]\n", - "idx=10 H Number of bonds : 1\n", - "C C : 7 , H H : 10 , 1.0\n", - "BOND CREATED 10 10 7 1.0 H C\n", - "BONDS [('H', 'C', 1.0, 0.96)]\n", - "idx=11 C Number of bonds : 4\n", - "Si Si : 0 , C C : 11 , 1.0\n", - "BOND CREATED 11 11 0 1.0 C Si\n", - "C C : 11 , H H : 12 , 1.0\n", - "BOND CREATED 11 11 12 1.0 C H\n", - "C C : 11 , H H : 13 , 1.0\n", - "BOND CREATED 11 11 13 1.0 C H\n", - "C C : 11 , H H : 14 , 1.0\n", - "BOND CREATED 11 11 14 1.0 C H\n", - "BONDS [('C', 'Si', 1.0, 1.876), ('C', 'H', 1.0, 0.959), ('C', 'H', 1.0, 0.96), ('C', 'H', 1.0, 0.96)]\n", - "idx=12 H Number of bonds : 1\n", - "C C : 11 , H H : 12 , 1.0\n", - "BOND CREATED 12 12 11 1.0 H C\n", - "BONDS [('H', 'C', 1.0, 0.959)]\n", - "idx=13 H Number of bonds : 1\n", - "C C : 11 , H H : 13 , 1.0\n", - "BOND CREATED 13 13 11 1.0 H C\n", - "BONDS [('H', 'C', 1.0, 0.96)]\n", - "idx=14 H Number of bonds : 1\n", - "C C : 11 , H H : 14 , 1.0\n", - "BOND CREATED 14 14 11 1.0 H C\n", - "BONDS [('H', 'C', 1.0, 0.96)]\n", - "idx=15 C Number of bonds : 4\n", - "Si Si : 1 , C C : 15 , 1.0\n", - "BOND CREATED 15 15 1 1.0 C Si\n", - "C C : 15 , H H : 16 , 1.0\n", - "BOND CREATED 15 15 16 1.0 C H\n", - "C C : 15 , H H : 17 , 1.0\n", - "BOND CREATED 15 15 17 1.0 C H\n", - "C C : 15 , H H : 18 , 1.0\n", - "BOND CREATED 15 15 18 1.0 C H\n", - "BONDS [('C', 'Si', 1.0, 1.882), ('C', 'H', 1.0, 0.96), ('C', 'H', 1.0, 0.96), ('C', 'H', 1.0, 0.961)]\n", - "idx=16 H Number of bonds : 1\n", - "C C : 15 , H H : 16 , 1.0\n", - "BOND CREATED 16 16 15 1.0 H C\n", - "BONDS [('H', 'C', 1.0, 0.96)]\n", - "idx=17 H Number of bonds : 1\n", - "C C : 15 , H H : 17 , 1.0\n", - "BOND CREATED 17 17 15 1.0 H C\n", - "BONDS [('H', 'C', 1.0, 0.96)]\n", - "idx=18 H Number of bonds : 1\n", - "C C : 15 , H H : 18 , 1.0\n", - "BOND CREATED 18 18 15 1.0 H C\n", - "BONDS [('H', 'C', 1.0, 0.961)]\n", - "idx=19 C Number of bonds : 4\n", - "Si Si : 1 , C C : 19 , 1.0\n", - "BOND CREATED 19 19 1 1.0 C Si\n", - "C C : 19 , H H : 20 , 1.0\n", - "BOND CREATED 19 19 20 1.0 C H\n", - "C C : 19 , H H : 21 , 1.0\n", - "BOND CREATED 19 19 21 1.0 C H\n", - "C C : 19 , H H : 22 , 1.0\n", - "BOND CREATED 19 19 22 1.0 C H\n", - "BONDS [('C', 'Si', 1.0, 1.878), ('C', 'H', 1.0, 0.96), ('C', 'H', 1.0, 0.96), ('C', 'H', 1.0, 0.96)]\n", - "idx=20 H Number of bonds : 1\n", - "C C : 19 , H H : 20 , 1.0\n", - "BOND CREATED 20 20 19 1.0 H C\n", - "BONDS [('H', 'C', 1.0, 0.96)]\n", - "idx=21 H Number of bonds : 1\n", - "C C : 19 , H H : 21 , 1.0\n", - "BOND CREATED 21 21 19 1.0 H C\n", - "BONDS [('H', 'C', 1.0, 0.96)]\n", - "idx=22 H Number of bonds : 1\n", - "C C : 19 , H H : 22 , 1.0\n", - "BOND CREATED 22 22 19 1.0 H C\n", - "BONDS [('H', 'C', 1.0, 0.96)]\n", - "idx=23 C Number of bonds : 4\n", - "Si Si : 1 , C C : 23 , 1.0\n", - "BOND CREATED 23 23 1 1.0 C Si\n", - "C C : 23 , H H : 24 , 1.0\n", - "BOND CREATED 23 23 24 1.0 C H\n", - "C C : 23 , H H : 25 , 1.0\n", - "BOND CREATED 23 23 25 1.0 C H\n", - "C C : 23 , H H : 26 , 1.0\n", - "BOND CREATED 23 23 26 1.0 C H\n", - "BONDS [('C', 'Si', 1.0, 1.887), ('C', 'H', 1.0, 0.96), ('C', 'H', 1.0, 0.96), ('C', 'H', 1.0, 0.958)]\n", - "idx=24 H Number of bonds : 1\n", - "C C : 23 , H H : 24 , 1.0\n", - "BOND CREATED 24 24 23 1.0 H C\n", - "BONDS [('H', 'C', 1.0, 0.96)]\n", - "idx=25 H Number of bonds : 1\n", - "C C : 23 , H H : 25 , 1.0\n", - "BOND CREATED 25 25 23 1.0 H C\n", - "BONDS [('H', 'C', 1.0, 0.96)]\n", - "idx=26 H Number of bonds : 1\n", - "C C : 23 , H H : 26 , 1.0\n", - "BOND CREATED 26 26 23 1.0 H C\n", - "BONDS [('H', 'C', 1.0, 0.958)]\n", - "0 N\n", - "N C 1.5\n", - "0 2\n", - "N C 1.5\n", - "0 4\n", - "N Fe 0.5\n", - "1 N\n", - "N C 1.5\n", - "1 2\n", - "N C 1.5\n", - "1 6\n", - "N C 1.0\n", - "1 8\n", - "2 C\n", - "C N 1.5\n", - "2 0\n", - "C N 1.5\n", - "2 1\n", - "C H 1.0\n", - "2 3\n", - "3 H\n", - "H C 1.0\n", - "3 2\n", - "4 C\n", - "C N 1.5\n", - "4 0\n", - "C H 1.0\n", - "4 5\n", - "C C 1.5\n", - "4 6\n", - "5 H\n", - "H C 1.0\n", - "5 4\n", - "6 C\n", - "C N 1.5\n", - "6 1\n", - "C C 1.5\n", - "6 4\n", - "C H 1.0\n", - "6 7\n", - "7 H\n", - "H C 1.0\n", - "7 6\n", - "8 C\n", - "C N 1.0\n", - "8 1\n", - "C C 1.0\n", - "8 9\n", - "C C 1.0\n", - "8 13\n", - "C C 1.0\n", - "8 17\n", - "9 C\n", - "C C 1.0\n", - "9 8\n", - "C H 1.0\n", - "9 10\n", - "C H 1.0\n", - "9 11\n", - "C H 1.0\n", - "9 12\n", - "10 H\n", - "H C 1.0\n", - "10 9\n", - "11 H\n", - "H C 1.0\n", - "11 9\n", - "12 H\n", - "H C 1.0\n", - "12 9\n", - "13 C\n", - "C C 1.0\n", - "13 8\n", - "C H 1.0\n", - "13 14\n", - "C H 1.0\n", - "13 15\n", - "C H 1.0\n", - "13 16\n", - "14 H\n", - "H C 1.0\n", - "14 13\n", - "15 H\n", - "H C 1.0\n", - "15 13\n", - "16 H\n", - "H C 1.0\n", - "16 13\n", - "17 C\n", - "C C 1.0\n", - "17 8\n", - "C H 1.0\n", - "17 18\n", - "C H 1.0\n", - "17 19\n", - "C H 1.0\n", - "17 20\n", - "18 H\n", - "H C 1.0\n", - "18 17\n", - "19 H\n", - "H C 1.0\n", - "19 17\n", - "20 H\n", - "H C 1.0\n", - "20 17\n" - ] - }, - { - "data": { - "image/png": "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", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0 Si\n", - "Si N 1.0\n", - "0 2\n", - "Si C 1.0\n", - "0 3\n", - "Si C 1.0\n", - "0 7\n", - "Si C 1.0\n", - "0 11\n", - "1 Si\n", - "Si N 1.0\n", - "1 2\n", - "Si C 1.0\n", - "1 15\n", - "Si C 1.0\n", - "1 19\n", - "Si C 1.0\n", - "1 23\n", - "2 N\n", - "N Si 1.0\n", - "2 0\n", - "N Si 1.0\n", - "2 1\n", - "N Fe 0.5\n", - "3 C\n", - "C Si 1.0\n", - "3 0\n", - "C H 1.0\n", - "3 4\n", - "C H 1.0\n", - "3 5\n", - "C H 1.0\n", - "3 6\n", - "4 H\n", - "H C 1.0\n", - "4 3\n", - "5 H\n", - "H C 1.0\n", - "5 3\n", - "6 H\n", - "H C 1.0\n", - "6 3\n", - "7 C\n", - "C Si 1.0\n", - "7 0\n", - "C H 1.0\n", - "7 8\n", - "C H 1.0\n", - "7 9\n", - "C H 1.0\n", - "7 10\n", - "8 H\n", - "H C 1.0\n", - "8 7\n", - "9 H\n", - "H C 1.0\n", - "9 7\n", - "10 H\n", - "H C 1.0\n", - "10 7\n", - "11 C\n", - "C Si 1.0\n", - "11 0\n", - "C H 1.0\n", - "11 12\n", - "C H 1.0\n", - "11 13\n", - "C H 1.0\n", - "11 14\n", - "12 H\n", - "H C 1.0\n", - "12 11\n", - "13 H\n", - "H C 1.0\n", - "13 11\n", - "14 H\n", - "H C 1.0\n", - "14 11\n", - "15 C\n", - "C Si 1.0\n", - "15 1\n", - "C H 1.0\n", - "15 16\n", - "C H 1.0\n", - "15 17\n", - "C H 1.0\n", - "15 18\n", - "16 H\n", - "H C 1.0\n", - "16 15\n", - "17 H\n", - "H C 1.0\n", - "17 15\n", - "18 H\n", - "H C 1.0\n", - "18 15\n", - "19 C\n", - "C Si 1.0\n", - "19 1\n", - "C H 1.0\n", - "19 20\n", - "C H 1.0\n", - "19 21\n", - "C H 1.0\n", - "19 22\n", - "20 H\n", - "H C 1.0\n", - "20 19\n", - "21 H\n", - "H C 1.0\n", - "21 19\n", - "22 H\n", - "H C 1.0\n", - "22 19\n", - "23 C\n", - "C Si 1.0\n", - "23 1\n", - "C H 1.0\n", - "23 24\n", - "C H 1.0\n", - "23 25\n", - "C H 1.0\n", - "23 26\n", - "24 H\n", - "H C 1.0\n", - "24 23\n", - "25 H\n", - "H C 1.0\n", - "25 23\n", - "26 H\n", - "H C 1.0\n", - "26 23\n" - ] - }, - { - "data": { - "image/png": "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", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0 N\n", - "N C 1.5\n", - "0 2\n", - "N C 1.5\n", - "0 4\n", - "N Fe 0.5\n", - "1 N\n", - "N C 1.5\n", - "1 2\n", - "N C 1.5\n", - "1 6\n", - "N C 1.0\n", - "1 8\n", - "2 C\n", - "C N 1.5\n", - "2 0\n", - "C N 1.5\n", - "2 1\n", - "C H 1.0\n", - "2 3\n", - "3 H\n", - "H C 1.0\n", - "3 2\n", - "4 C\n", - "C N 1.5\n", - "4 0\n", - "C H 1.0\n", - "4 5\n", - "C C 1.5\n", - "4 6\n", - "5 H\n", - "H C 1.0\n", - "5 4\n", - "6 C\n", - "C N 1.5\n", - "6 1\n", - "C C 1.5\n", - "6 4\n", - "C H 1.0\n", - "6 7\n", - "7 H\n", - "H C 1.0\n", - "7 6\n", - "8 C\n", - "C N 1.0\n", - "8 1\n", - "C C 1.0\n", - "8 9\n", - "C C 1.0\n", - "8 13\n", - "C C 1.0\n", - "8 17\n", - "9 C\n", - "C C 1.0\n", - "9 8\n", - "C H 1.0\n", - "9 10\n", - "C H 1.0\n", - "9 11\n", - "C H 1.0\n", - "9 12\n", - "10 H\n", - "H C 1.0\n", - "10 9\n", - "11 H\n", - "H C 1.0\n", - "11 9\n", - "12 H\n", - "H C 1.0\n", - "12 9\n", - "13 C\n", - "C C 1.0\n", - "13 8\n", - "C H 1.0\n", - "13 14\n", - "C H 1.0\n", - "13 15\n", - "C H 1.0\n", - "13 16\n", - "14 H\n", - "H C 1.0\n", - "14 13\n", - "15 H\n", - "H C 1.0\n", - "15 13\n", - "16 H\n", - "H C 1.0\n", - "16 13\n", - "17 C\n", - "C C 1.0\n", - "17 8\n", - "C H 1.0\n", - "17 18\n", - "C H 1.0\n", - "17 19\n", - "C H 1.0\n", - "17 20\n", - "18 H\n", - "H C 1.0\n", - "18 17\n", - "19 H\n", - "H C 1.0\n", - "19 17\n", - "20 H\n", - "H C 1.0\n", - "20 17\n" - ] - }, - { - "data": { - "image/png": "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", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0 Si\n", - "Si N 1.0\n", - "0 2\n", - "Si C 1.0\n", - "0 3\n", - "Si C 1.0\n", - "0 7\n", - "Si C 1.0\n", - "0 11\n", - "1 Si\n", - "Si N 1.0\n", - "1 2\n", - "Si C 1.0\n", - "1 15\n", - "Si C 1.0\n", - "1 19\n", - "Si C 1.0\n", - "1 23\n", - "2 N\n", - "N Si 1.0\n", - "2 0\n", - "N Si 1.0\n", - "2 1\n", - "N Fe 0.5\n", - "3 C\n", - "C Si 1.0\n", - "3 0\n", - "C H 1.0\n", - "3 4\n", - "C H 1.0\n", - "3 5\n", - "C H 1.0\n", - "3 6\n", - "4 H\n", - "H C 1.0\n", - "4 3\n", - "5 H\n", - "H C 1.0\n", - "5 3\n", - "6 H\n", - "H C 1.0\n", - "6 3\n", - "7 C\n", - "C Si 1.0\n", - "7 0\n", - "C H 1.0\n", - "7 8\n", - "C H 1.0\n", - "7 9\n", - "C H 1.0\n", - "7 10\n", - "8 H\n", - "H C 1.0\n", - "8 7\n", - "9 H\n", - "H C 1.0\n", - "9 7\n", - "10 H\n", - "H C 1.0\n", - "10 7\n", - "11 C\n", - "C Si 1.0\n", - "11 0\n", - "C H 1.0\n", - "11 12\n", - "C H 1.0\n", - "11 13\n", - "C H 1.0\n", - "11 14\n", - "12 H\n", - "H C 1.0\n", - "12 11\n", - "13 H\n", - "H C 1.0\n", - "13 11\n", - "14 H\n", - "H C 1.0\n", - "14 11\n", - "15 C\n", - "C Si 1.0\n", - "15 1\n", - "C H 1.0\n", - "15 16\n", - "C H 1.0\n", - "15 17\n", - "C H 1.0\n", - "15 18\n", - "16 H\n", - "H C 1.0\n", - "16 15\n", - "17 H\n", - "H C 1.0\n", - "17 15\n", - "18 H\n", - "H C 1.0\n", - "18 15\n", - "19 C\n", - "C Si 1.0\n", - "19 1\n", - "C H 1.0\n", - "19 20\n", - "C H 1.0\n", - "19 21\n", - "C H 1.0\n", - "19 22\n", - "20 H\n", - "H C 1.0\n", - "20 19\n", - "21 H\n", - "H C 1.0\n", - "21 19\n", - "22 H\n", - "H C 1.0\n", - "22 19\n", - "23 C\n", - "C Si 1.0\n", - "23 1\n", - "C H 1.0\n", - "23 24\n", - "C H 1.0\n", - "23 25\n", - "C H 1.0\n", - "23 26\n", - "24 H\n", - "H C 1.0\n", - "24 23\n", - "25 H\n", - "H C 1.0\n", - "25 23\n", - "26 H\n", - "H C 1.0\n", - "26 23\n" - ] - }, - { - "data": { - "image/png": "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", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "CELL.CREATE_BONDS: Creating Bonds for molecule H60-C26-N6-Si4-Fe\n" - ] - }, - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAcIAAACWCAIAAADCEh9HAAAABmJLR0QA/wD/AP+gvaeTAAAgAElEQVR4nO3dZ1wU19oA8GeBZenConREUKnSmwqBgIIV7GLEnmAvMaiYXBX7CxENulbsV2MBC6KIBREEpIlYkKqolF1YelnKtnk/TLJ3s6hB2UI5/18+MGfOzDwj+mRmTiNgGAYIgiDIt5KSdAAIgiC9G0qjCIIg3YLSKIIgSLegNIogCNItKI0iCIJ0C0qjSA/CZrNra2v5S9rb2xsaGgSq0Wi0d+/esVgsMYaGIJ+F0ijSg6SmpmppafGXnD9/3s3NjbdJo9E8PDysra2/++47AwODhw8fij1G4HK5AiX19fWdC5H+A6VRpDc5cuSIi4tLZWUllUpdsmRJQECAEE/u4uISFhbGX0Imk+/cucPbzMrKmjNnjry8fHx8PF4SERGhqak5ePBgZWXlnTt3CjEYpBeRkXQACPIVdu/ejWEYgUAAAEtLy7q6Ot6mqGVkZGzatGnKlCn379/HvycUFBRs3bo1JibG2dk5PT3dzc3NxcVlzJgxYggG6VFQGkV6FgzDnjx5wtssLi4GADqdbmpqmpKSYm5uTiAQXr9+nZeXt3Xr1uDgYPHkUABwdnZOSkoCgNDQULzE1NT0w4cP8vLyADBy5Ehra+uMjAyURvshlEaRnoXL5W7atIm3SafTlZSUVFRUjhw5oqurixeGhYXl5uay2WwHBwfhXp1Op+fn5/MHAwC//fZbe3v7gQMHOtfHcygAYBhWVVXFixDpV1AaRXoWaWnp9PR03uaJEyeOHDkiJyf3ww8/8ArPnz8PAP/97399fX3Ly8uVlZWFdfUzZ87cuHGDt9nc3AwAY8aMYbPZXz4wMjKyra3N19dXWJEgvQhKo0hv5eHh0dTU9OHDB0tLS2Gdc/PmzRs2bOBtkslkAPjX9/SsrKyVK1eeOnVKTU1NWJEgvQhqqUd6gebm5o0bN1ZWVq5bt2779u0NDQ1MJvPw4cNkMnno0KGSjS06OnrixImHDh2aNm2aZCNBJAWlUaQHkZGREXhDl5WVVVRUZLPZOTk5bW1tq1atSk5OVldXV1JSiouLi4mJUVBQEHVUcXFxt2/f7lzO4XC2b9++bNmyqKgof39/UYeB9FjopR7pKTgczvv376urq/kLFy9evHjxYgDgddV89OgRk8lks9liSKC49PT09vZ2Hx8ffX398vJyAJg4cSIAUCiUHTt2AICHhwdec/r06devXxdPVEjPQUDTNiM9xLFjx1auXDllypTo6GiJBMBkMhsbG5WVleXk5PCSjo4OIpEoJYVe2pAvQX8/kB6hvr5+27ZtALBo0SJJxSArKxsSEqKionLy5Em8hEQioRyK/Cv0VwTpEYKDg2tqajw9PadOnSrBMNLT01ks1pAhQyQYA9LroJd6RPLy8vJsbGy4XG5OTo4Qey99LRaLNWDAgPb29traWtR1Cek69DSKSN4vv/zCYrFWrlwpwRwKAK9evWprazMxMUE5FPkqKI0iEnbz5s379++TyeTg4GDJRpKRkQEAzs7Okg0D6XVQGkUkiclkBgUFAcDu3bvV1dUlGwxKo8i3QWkUkaSwsLDi4mILCwvhzhz6bVAaRb4NamJCJKaystLExKSpqenBgwdeXl6SDaahoUFdXV1WVrapqYlIJEo2GKR3QU+jiMRs2rSpqalp5syZEs+hAJCZmcnlcu3t7VEORb4WSqOIZKSnp1+8eFFOTm7fvn2SjgUAvdEj3YDSKCIBGIatW7cOw7CNGzf2kL7uKI0i3wx9G0Uk4Ny5c4sXL9bV1S0sLFRUVJR0OAAAmpqadDr9w4cPBgYGko4F6WVQGkXErbm52cTEhEajXbp0iX9OewkqKSkZOnSohoZGVVWVpGNBeh/0Uo+I2+7du2k02qhRo+bMmSPpWP6Cv9GPHDlS0oEgvRJKo4iYREREPH36tKSk5ODBg1JSUhQKZe/evUVFRfx1Xr16tWPHjo8fP/JKoqOj16xZs2HDhqysLNHFhj6MIt2B0igiJmfPnk1PTx88ePDvv/++fv16e3v7ffv2vX37Ft9bXFzs7e3t5eW1Z8+egoICvHDv3r0LFy5UV1dva2tzcXF5+PChiGJDaRTpDjT7PSJyzc3Nly9f/vDhw507d2xtbdeuXcu/6+DBg+/fvx84cGBgYODYsWO1tLTwXQwGY9++fcePH8e/nxKJxF27domihymLxXr58iWBQLC3txf6yZH+AD2NIqJVUlIyYsQICoUiLS3NZrNnz54dGhqK78IwbM2aNbdu3WKxWPHx8atXr25vb+cdmJGRwWAwpk+fjm/OmjUrOTm5tbVV6BG+ePGira3NzMxMVVVV6CdH+gP0NIqI1urVq/X09B49euTh4dHY2Ojg4JCSkpKZmQkAra2tc+fOJRKJLBYrNjZWW1v73r17vAPLy8sHDhxIIpHwTT09PQCgUqn6+vq8QqFAb/RIN6E02vfV1MCLF+DkBCoqf5Xk5gKJBMOH/6NaZibo6YGOjjAvzWazHz58GBkZia9uZG1tjS8Gl5eXp6CgcO/ePR8fH7wEAMhkcnNzM+9YKSkp/t54XC4XAAgEgpeX19u3b+3t7V1dXV1cXOzt7eXl5bsT5MuXLwHA0dGxOydB+jOURvu+9HTw8YFly+D48b9KQkJASwvCwgAA2Gy4fBkOHIAXL2DLFti169sv1N7eTqVSqVRqRUUFjUaTk5MbN24cm802NTXFK9jY2OCdnGbNmmViYsI/er2wsLCiomL06NG8El1d3Zqamvb2djwFl5eXEwgEbW3toqKiqqqqO3fu3LlzBwCIRKKNjY2Tk5Ozs7OTk5OxsTGBQPiqsCMiIgIDAwcOHPjtd470byiN9gtkMly9CgsXwqhRgrswDF69grAwCA//9/NwOFBVBRUVUFnJKSs7UVlZWVZWVllZWV5eTqPRamtr+Submpp6e3t/8jxRUVEAcPjwYXyTyWQGBAQsXrzY2NiYV8fZ2VlZWfnmzZt4E9O1a9c8PDwUFBQqKioKCgqy/5b1tyNHjgCAioqKpaUl/qDq7OysoaHxuXvBMOzUqVNnzpz5+PGjurr63LlzN27cKCPz17+I6Ojo0NDQ8vJyAwODLVu2jB8//t//dJD+CqXRfkFFBZYvh+XLITsb/k4U0NoKzc2gqQn43CBHjvyvflERlJRAZSWUlUFlJZSXA40GFRVQVQUcDl5FWl5+Q1tbG/9VZGVltbS09PT0tLW1dXV1jYyMBg8eLCMjU1RUZGZm9rnYFi5cmJCQYGpqqqent3nzZgaDcebMmcePH+/YsSMoKGj58uUFBQXV1dWnT5/Gv5xKS0tbWFhYWFgsWLAAABgMRk5ODp5SU1NTS0pKUlNTU1NT8ZNra2t/7vV/y5Ythw4dCg0N/e6770pLS4OCghwdHceOHQsA+fn5s2fP/vPPP728vKKjo6dOnVpQUICP/afRaCQSiUwm886DZ2ElJSVeCYPBePPmDZlMHjZs2Ff/qpBeCA0G7fvu3IE1a6CgAEaMgGXLYMMGmDcPtLTA1BR27ICysr+qTZ8OFhZ/vdS7uMDTp584FYEAmpqgrQ26ujBs2H9UVWV1dXW1tbX19PS0tLQ0NTU7HzJhwoTW1tb4+PizZ8+OGDGC/7V9z549jo6Oq1atGj58+PXr1//444+mpibe3h07dpBIpNjY2Pv378vLy8+ZM8fW1vZfb7aioiLjb9nZ2S0tLbxdsrKyNjY2zs7OY8eOHTVqlK6ubkREBG89Zy6Xy1tL+erVq0uXLm1oaCAQCCwWS1FR8ebNm5MmTQKAiRMn2tnZ7d69m3daIyOjXbt2+fv7844NCAggk8m1tbXu7u7Xrl3jrXqP9FXoabS/IJGAQoFZs8DP76+SGTPgu+8+XdnZGRQUQEcHdHVBWxv09EBLC/T1QVMT+L5n7unKdQ8dOuTu7j5q1KiZM2dmZmb+/vvv06dPv379upmZ2YQJE3x9fTU1Nd3d3Q8dOiQtLe3h4TFu3Dj+wydNmoTnry7S1dWdPn063k2Kw+Hwv/5n/q26ulpJSYnNZvOPRsVz6MKFC5cvX+7k5MTlcpcuXRocHBwXF6etre3q6tqVq9Pp9EWLFoWGhq5du7ampsbJyYlCoWzcuLHr8SO9EUqj/cj48TBuHAQFAf7UpaYGn1sB88ABoV10+PDhubm5586dy83NVVZWnjRp0tSpU4cNG6aiokKn01esWAEA9fX1eGXhdgsVeP1vbm5+9uxZRkaGhYVFaWnpwIEDOz8nqqqqEolEQ0PDTZs2hYaGnj9/HsOwy5cvDxgwQOALxic9e/aMzWYvXboUAAYOHOjv7x8bG4vSaJ+H0mj/Eh4O5uagqwtf84TXXWQy+ZdffuEv4b3ae3p6ii0MZWVlDw8PDw8PALh161ZjYyP/izzu4MGDABAdHX348OE3b97IyMgcO3Zs3rx5ioqKLS0tLBYLAIqLi2NiYniH4Kk/MDCwoKBg27ZtbDabRqMZGhoCgIKCQhnvownSd6E02r/o6cHWrbBpE0yaBPfvw8WLcOECvH4NVVVAp4OCAsTHg40NdKXzD4fDqaqqKi8vF2ivZ7PZ8fHxXziwvr6+rq5u6NChQrurr2dsbMxkMp8/f+7g4NB57+XLl318fPCJR3fv3l1YWHj16lVvb28dHR0AePbsWWNjI68y/j03ICCgpaXF3t5+/Pjxnp6evr6+RUVFr169kpaWFtc9IRKD0mjfN2AAjBjxv82ff4bERNDTA1XVv3rgX7oE+KQfBQWweTMcPPiPNPr+PRQU/K/VvqICqFSgUsHI6GpKin/ny8nIyHA4nM+ljwcPHsyYMcPV1TUuLk6I9/i1zMzMXFxc1q9ff/PmTbzHaFlZmY6OzuPHj0eMGDF48OCEhAQWi4WPsMrPz586dercuXMB4Pfff//hhx8EmpgAgNc39vbt2zdv3iwtLfX19U1LS7t//74k7g8RK5RG+77vvvtHUxKRCLGxf/2MD4AcOxZ8fMDODj7ZpBwWBkePfqJcQ0NPS0sL79uko6Ojo6ODt9rr6+t/oQO8o6MjhmH379/Py8szNzfvxm1115UrV2bMmGFkZGRtbd3e3l5cXJySkjJr1qyIiIigoKCEhARzc3MHB4fs7OzOHyW+QEZGZtasWfjPwcHBn3zaRfoYlEYR2LgRcnLgyZNPN9zb2ICXl2B7vb4+aGq6EYm0r72WmprawoULjx49evDgwRMnTggh+m+lp6eXnp7++vXr0tJSMplsZWWlpKTEa+x69uxZTk5OWVlZYGCgnZ2dwCfUziIjIysrK9euXfvy5UsNDY2Ojo6jR4++fv364sWLor8VRMJQv9H+rq0NBgwALhcaG0E8qyIVFxebmpoSicSPHz9+squpeGRnZ69evXratGmbNm3q+lELFy4cMWIEf+O7q6vrhg0bGhoaqFTqb7/9tmLFisjISBaLNWrUqNDQUBsbGxHEjvQwGNK/paRgAJiNjVgvOnnyZADYtWuXWK/6T4cOHQKAJUuWSDAGpG9A8432dxkZAH9/JBWb9evXAwCFQuGfYFTM0Px4iLCgNNrfSSSNenp62tjY0On0q1evivXCfFAaRYQFpdH+TiJpFAB+/vln+Lu7u/jV1dW9e/dOQUHBwsJCIgEgfQlKo/0anQ4fP4KyMvzd61F85syZM3HiLw0NlxMSxH1pAMjIyMAwzMHBgTczHoJ8M5RG+7X0dAAAJyf4t/48wkcikUaN2v/+vckff4j70oDe6BGhQmm0X5PUGz1u5UpQUIDYWPh7QWXxQWkUESKURvs1Ov2Rvv57JyfJXJ1MBn9/wDCgUMR6XQzDsrKyAKVRREhQ9/v+C8MwMpmM9xvX1taWSAyFhWBuDnJyUFoK6upiumhxcbGxsbG2tjaVShXTJZE+DT2N9l/5+fkNDQ0GBgaSyqEAYGIC3t7Q2gonT4rvovgb/ciRI0V0/kWLFkVHR/OXeHp65uTk8Dabmpr++OMPd3f3vLw8vIRCoXjx6crcpkjPgZop+68e8n1w/Xq4dw8oFPjlF5CVFccVRX3jOTk5AidPTU3lza339OlTPz+/0aNHp6Wl1dTU4IVPnjwxNDScPXs2ABAIhG4uGY2IGUqj/VcPSaPe3mBlBa9ewbVrMHeuOK4o2Ru3t7d/+/YtiUTiXwWPSqVOnjwZX1AP6XXQS33/1UPSKACsWQNubqCjI45rdXR0vHr1SkpKys7OThzX43P8+PFz586RSCQSiSSwq7KyksFgXLx4MS4urqOjQ8yBId2Enkb7qdbW1tzcXCKR2JXlNkVt0iTgcmHIkP+VpKYCmw3u7sK/Vk5OTkdHh6WlpYqKivDP/reNGzdu2bKFt8lkMgGgvb39cxPuDR48+N69e5qamikpKVJSUk+ePFEXW4sb0m0ojfZT2dnZbDbbzs5OQUFB0rFASQksWwZubpCYCPiMz1euAIMhkjQqnmfwrVu3Lly4kLeJr0eCj3/9pMePH+M/dHR0WFlZUSiU7du3izRCRIhQGu2n8GziJKkuo50oKgKVChcuwIIFor2QeNKoioqKlpbWNxxIIpFsbGw+fPgg7IgQEULfRvupnvNhFCctDSEhsGED1NWJ9kISvPGioqJ37951LmcwGCdOnOBwOABQW1ubkpKClh7pXVAa7aeIRKKiomLPeRoFgBkzwNoagoJEeInq6uqSkhJFRUUzMzMRXuYztmzZ8n//938AMG3aNC8vr/b29sDAQC8vr48fP4aFhRkaGk6aNMnMzMzJyQlf6R7pLdAopr4Aw7CKigoMw3R1dTs3YjAYDEW+5UEwDKPRaCQSSVVVVUpK6gvLz4lNaipMnAiNjVBQALa2kJAAly4BgwH+/rBzJzg5wciR4OQE+vrdvVBsbOzkyZO///573rdIUUhLS9PX19fT0+OVJCQk2Nra4p+hSSRSUlISvuQ9bsyYMRwO5+nTp1VVVcbGxtbW1qKLDREJyU28jwjHn3/+qaenRyQSFRQU9PT0YmJieLuePn06c+ZMaWnp8+fP4yVPnjwxMDAYPny4pqamq6trVVWVhKL+h5QUTEXlr59//RVzdMRWrsQWL8a2bcMA/veftjY2eTIWHIzFxGC1td9yIRqNdvbs2Rs3bggx+M6uXLliaGgYEREh0qsgPQdKo71bXFyctLT0wYMHOzo6WCzWxYsXt23bhu969+6dl5fX4cOHjYyMzp49ixeamppu3boVwzAmk+nm5rZq1arO56ysrGxubhbXHWDYP9Mog4EZGGC6utjixVhtLXb3LhYcjE2YgJHJ/0ipbm6rjYyM5s+fHx4enpyc3NHRIXDOhoaGkJAQX1/fiRMnbtu2ra6urvN1IyMjZ82adfToUeHejq+vLwBQKBThnhbpsVAa7d3Gjx8/Y8aML9extLTkpdEBAwacOnUK/9nf33/27Nmd60+bNk1bWxtv9BBqsJ/w+jUWG/uPNIph2M2bGAC2eLFg5aIi7MIFbM0azMkJs7Iazf9SpaSk5O7uvmnTpuvXrzc1NdXV1ZmYmFhYWFAolDNnzowbN87T01PgbFQqlUwmOzo6CndVu/r6ehKJJC0tXVlZKcTTIj0Z6vDUu+Xl5f32228ChXv37n3+/Pm1a9c611+9evW6detoNJq5uXlaWlrnOq2trVVVVTQabdmyZWfOnDl06JDomqGSkmDqVOjogD//hKlT/1c+dSps2gQGBoL1hw+H4cNh3jwAADY7qbCwMDU1NSUlJTs7Oz8/PykpKSkpCQCKi4tPnjzZ0tJSUFCAD7hcuHBhQ0ODwNlWr17t5+cnJSUl3HlArl+/3tHR4eXlJcG1oxFxk3QeR7qFRCJdu3ZNoDA7O/v+/fu8Tf6n0YSEBC0tLQ8PD2lp6e+//768vLzzOblcbmRkJN5jnEAgzJo16+PHj0KP/OZNTF4eA8CmTsVaW7t7turq6jt37mzbtm369OlcLnfUqFH/+c9/BOokJyfznsRv376tpaVVV1e3atUq4T6NjhkzBgBOnz4txHMiPRxKo72boaHh4cOHv1yHl0ZpNJqCgkJ8fDyGYeXl5ePGjbO1tf3cUQwGIzg4WE5ODgAUFRWDg4Pb2tqEFTaFgklJYQDY6tWYKL4caGlp8TImz9mzZxcvXoxhWENDg66u7pUrVzAME24araqqkpGRkZWVrf22JjCkd0L9Rns3S0vL2NjYLlZ+9epVR0fH999/DwC6urqbNm3Kyclpb28fN27c9u3bBZaMV1BQ2L59e1FR0fz58xkMxo4dO0aMGBEVFdXNgDEMtm+HNWsAwyA4GCgUkSwDJScn13mCj0WLFp05cwYANmzYMGLECD8/P/69LBaLwWB087pJSUlcLnf8+PFkMrmbp0J6E0nncaRbkpOTpaWlg4OD6+vruVzuy5cvU1JS7t+/j79UNjY21tXVmZubHzlypK6urrS0VE5O7sSJExiGMZnMxYsXW1lZJSYm4n8TjIyMPtcT6NGjR5aWlni16Ojob46WxcICAjAATEYGE2l3oDFjxixfvvyTu16/fk0gEKysrMaOHTt27Fg9PT0dHZ0tW7Y8evRIRkYmJCSEv3J7e/vXXrqsrCw/P/8b40Z6J5RGe73Y2Fg8x8nJyenq6h47duz48eNr167FMMze3p7/f5mFhYW3bt0aNmyYhoaGqqrq6NGjCwoKMAxLTEzkdfn28PB4+fJl56uwWKzDhw97enqy2exvi7O5ufmnn7YTiUxFRezu3e7c8b87duyYgoLC69eveSVMJrO5uZlOp9Pp9Eg+48aN8/DwwD+bEonES5cuYRhWXV29YMECZWVlABg0aNCuXbu4XC5+nra2tpMnT5qbm/v4+AhcND4+nkwmGxgYiPbekJ4HpdE+orGx8dKlS/7+/l3ppdTc3CzQM5TD4Zw/f15DQwMApKSk5s+fT6fThRgenU53dHQEgHHj1mRmCvHEn8bhcObOnaugoDB79uyff/7Zzc1t/vz5u3fvdnBwEKjJ/220tbW1ra2NxWLZ2dnZ2tpmZmYyGIykpCRPT8+ysjK8zuzZs/39/f38/FxdXfnPw2Awhg4dGhAQMGDAAJHfHtLDoDTa6zU3N584ccLExAR/nOQfxfS16uvrg4KCZGVlAUBNTS08PJzFYnU/wpKSEmNjYwAwNDQsLCzs/gm7KCMjY//+/fv3779x40ZbW1t1dfW7d+8E6qSkpCQmJvKX3L59W0ZGpnNNfuHh4QJpNDAw0Nvb+9GjRyiN9kMojfZiVCo1ODiY15phZGQUEhJSX1/fzdMWFBRMnDgRP6epqWlcXFx3zvbq1SsdHR0AsLS0/GT/qp5mz549dnZ2AoVlZWV2dna8Z1KBNJqTk6OsrPz27VuURvsn1FIvcqWlpU1NTfwlb9++FejyXV1dnZmZWVFRwV/Y2NiYnp5eXFzc+ZzZ2dkLFiwYPHjwjh076urqXFxcIiMji4qKgoKCVFVVuxmwiYlJbGzsw4cPzczMCgoKJkyY4OPjU1JS8g2nevTokaurK5VKHTNmTEpKiq6ubjdj+zaNjY2PHz9ubm7uSmUqlYp/3OCnqKg4Y8YM/tWTeNhs9pIlSzZv3jx06FD+8osXL6ampqI1PvsFSefxvs/S0vL48eP8JTIyMrwXSQ6Hs2bNGhUVFVtbW0VFxR9//BFvzfjzzz8VFBSMjY0VFRUnTZqE99nkcDgxMTG8hc+IROKsWbPS0tJEFDmTyQwPD8cX25CVlV27dm1TU1PXD79w4QKRSASAefPmMZlMEQXZFXfu3AEADw+PrlTesWNH50+oAvifRvfs2WNhYYEP6uc9jba1teHfRmRkZMzNzefPn3/ixInc3FwxjK9FxA+lUZH7chp9+fKlo6MjPv66qKiIRCLdvXu3qalJWVn52LFjGIbRaDR9fX0KhZKTk2Pw9wBJMpn866+/4pPjiRqVSl26dKmUlJSsrCzest8VHA7HxcUFADZu3Mhr5pYUfFmkzZs3d6VyVFSUvLz8l0fE86fRzo+uAFBRUbF06VJra2sZmX+Mt1ZVVfX29t66devt27e70oiXlZUl8CUkKSlJYJqVjo6OJ0+etLS08EoKCwuvXbuWkpIi8T/5fgKlUZH7chrtXHn//v14ozmva1FwcLCTkxODwVBXVx86dGh4eDj/vxnxSE9Px2dC4nA4paWln8vgDAaD93NNTc2ZM2f4SyTFy8sLAG7evNmVym1tbUOHDp0wYQI+EonFYiUlJTU2Nh49erSxsRGv07mJCdf522hLS0tycnJ4ePj8+fPNzc0Fsq22tvbkyZNDQkKSk5NbPzUk1tbWVmCUmpycHD4ODcOwurq63bt3a2trA8Djx4/xwk2bNsnLy7u7u2toaHh7e0v2PaCfQGlU5CwtLVeuXHmLj7S0dGJi4qxZs5YuXcpfs62tTVVVNSYmJjg42M3NjVceGRmprq6OYVhBQYFk3woPHjw4aNAgOTk5EolkYmKSnJyMl3O53AcPHowfP55AIDx69AgvuXfvnre3N4FASEpKkmDMXC5XTU0Nf0Ls4iHFxcUuLi7S0tJDhgxRVlZ2dHQsLCw0MjL6+PHj6dOn1dTUFBQUZGRk1NTUgoOD+Q/81yYmKpWK/34nT56MR8Xzydf/L6fRV69e7dy58+XLl8rKyngaxZdIwX8vNTU1mpqaaNpTMUAzPIlDUlISfxMNl8sFgN9++w3/dMgTHh6upaU1fvz4hIQE/tYMZWVl/DmI16tJIk6fPh0UFHTq1Ck/Pz8Mw44ePfry5UtXV1cASEtLo1AoM2fOfPr0KX53ycnJx44dmzNnDv5qKcGwCwsL6+vr9fX18Q4DXTFs2LCUlBS8r76Ojg7eFwJfRsnf33/atGm8mvicAwCAYRiBQHBzc/vyanTa2to+Pj4+Pj4AwOFw8vLyMjMz09PTMzMz37x5k5eXl5eXd+HCBQBQU1O7fPny585TX19PIBAsLS15o8tw2dnZurq6+C9FXV19ypQpCQkJAQEBXYTqbP8AABCBSURBVLxx5NugNCoOa9asWbZsGW8Tz542Njb8dSIjI/ft2/fgwQMikaipqZmens7bVVtbq6mpKfHVPsLDw5cuXerv749vrlu3jrdr9OjRMTExALBx40a8xM3Nzc3NTaCaRHzzGnYaGhqdv3uSSCQSiSRQyOVyFRQUyGRyaWlp13tKSEtL43nwxx9/BAAGg5GTk5OdnZ2dnZ2amlpSUjJ48GAASE5O5v/V4yvfrVixQl5e/uzZswLn1NfXr62tpdFo2traHA6ntbW1rKzsa24a+RYojUoehmF79+6lUCi3b9/Gh29aWVnt3LmzubkZH4+Ympoq8fV5OBxOUVFRSEiIQPmaNWsAgEKhSCKoLhHDUqC1tbUdHR1MJlOgQemrKCoqurq64g+SAFBeXo4/PpeVleXk5PCq4Y/2YWFhn/zf6vjx493d3e3t7Z2dnfH2wE+2gCHChdKoxBw/flxRUdHHx2fBggU5OTmXL1/W0tIqKSlRUlIaN26cjo7O6tWr9+zZ8+zZs/Pnz39yDmZxqq+vZzKZAwcOFCifPXu2ROLpOjGk0aqqKgAQ7jzNvBXx5s6du2rVKl75xYsX+fcKkJGRuXv37pMnT6qrqx0cHPbs2dN5pitE6FAaFTktLS2Bbtv6+vpycnL4tGw3b9588+aNrKzsTz/9hO+dMmXKgQMHYmJiVq5caWJioqGhERISMmHCBAmEzkddXV1OTq6yslKg/LvvvpNIPF3U1tb2+vVraWlpOzs70V1FFGn0m0lJSeFzIba3t9+9exfv7IWIFEqjIvfgwQOBEry5ifd8tHjx4s5HmZub86aw6wkIBIKFhUVsbOyUKVMkHctXeP78OYvFsrGx4V9iWujEn0ZDQkJIJNL69evxtZrZbHZ2djabzfb09Lx7966enl5tbe2+ffvU1NQ++bcLES6URpGu2rx589y5c62srBYtWqSgoJCVlUUikfD26xkzZjQ2NuKdvVtaWurr61VVVXm9LJubm+vr6wX694iHGN7oQZRp1MrKSktLi7/E2dl5wIABurq6eEPlzp07Gxsbzc3NL1++fPny5dTU1Li4uKSkJGlpaQ8Pj4sXL8rLyws9KkQASqNIV82cObO9vT04OHjdunVEIlFXVzc0NLSgoADfa2JigmcTvD8Qg8EYNmxYbW0tAOALDnd0dODjI8Wpt6fRc+fOCZTg7ygODg745qNHjwQqHDlyROhhIF+G0ijyFebNmzdv3rzm5mYikcjrMomrqKig0+laWloEAuHFixft7e01NTX4Li6Xm5WVxWaz8TRKo9GoVCr/sdra2l3v1PlVxJNGVVVVTU1N9fX1RXoVpMciYBgm6RiQvkBTU5NOp1dVVWloaBgYGISGhs6ZMwff1draqqiomJOTg3eVPXny5IkTJ3gH5ufn/+c//+m8THT30el0TU1NZWXlhoYGKREs+fT+/XsikcjfaJ6fnz9o0CCB/gy5ubkGBgZ43zVcUVFRaWmppqamQOd5pJdCE+UhwoG/0go8Zn5SQEDAs7/FxMRwudzp06eLIiR8CIOTk5MocigABAUFhYWF8Zf4+fldv34d/5nFYkVFRY0aNcrS0vLKlSt4YUNDg7e3t5OT086dO6dMmXL+/HlRBIaIGXqpR4RDR0fn9evXFRUVAqOz+DEYDGlpaf6vARQKZfz48aampqIISTxv9J9TU1OTkJCwfft23sguAFi7dm1DQ0NJSQk+wFSyw2QRYUFpFBEOfEpm3tNoUlISb8VmJpOJ/zBt2jQrKyveExyDwTh58mR0dLSIQpJUGmWxWBwOR1tb+9ixYwDA+17R0tJy5cqVmJgY3oIFInpMRsQMpVFEOPA2Il4aff36dWNjI/4zPgwcACgUioKCAu+QU6dOGRoa4sMfr1+/fuPGDScnJ2dnZ1tb287j1r8Wl8t99uwZAOBL6YlIYWHhn3/+ydtsaGgAgJ07dyYmJiYnJwtU/vDhA4vFYjAYfn5+VCrVy8srKCio+3eKSBxKo4hwCKTR1atX8zcxRUZGAgD/DFUcDodCoezduxffjIuLu3Tp0qVLlwBARkbG2NjY3t7e1dXVxcXF3Nz8G6ZlYbPZf/zxR35+Pj4dp4i8e/fu1q1bvE18tZiAgAA/P7/OlfExYKdPn/7xxx+lpKQCAwNra2sPHjwouvAQ8UBpFBEOPI0KLCf1BTdu3GCz2bzGpY0bNzo7O2dkZGRkZOTn5/NPGUcmk52dnfEHVScnJ3V19X89eWpq6sOHD1tbW83MzNra2nhd0KlUKn5OnJeXVzcHiU6cODE8PJy3aWVlBQD4zEyd4QMQIiMj8cHBtbW1W7ZsQWm0D0BpFBEOgW+jn7Rr1y4DA4MFCxYAwIEDB37++WfelEgmJiYmJib4zJgtLS0vXrzAp4xLSUl5//59XFxcXFwcXlNbW5v3oOrg4CDQfRUAVqxYce7cOT8/Py0trSNHjoSHh2dlZeFdVl+8eBEWFoZPTAcAYp57cMiQIVJSUi9fvsSXV2lpaRH/eAREFFAaRYSD/6Xe3Nycf+inlJSUlZWVvLy8iooK/m20qKiIQCDw0pkAJSUl/injqFRq9t9SUlJoNNqdO3fwVerw1388pdrb25ubm8fExERERCQnJ48ePRoA2Gz28+fPedmKSqWam5t3nu5PuKKiovLy8oKDgwsKChgMRmtra2lpaXZ2trm5+ZQpUwIDAykUSm1tbUhIyOf+BJDeBXW/R4SDw+GQSCSMb1FMUWCz2W/evElPT8/IyMjMzMzPz+fvMxQZGfnw4cOysjLeoyuOSqU+f/588uTJu3fvzs3NPX/+PJvN7v5kJb/88ouGhsbmzZt5JdOmTfvhhx/wtf82b948Y8aMFy9e8Pbeu3dv0KBBgYGB9+/fl5OTmzt37tatWwVWQEB6I5RGEaHR1dWlUqkfP3783MdBoWtqanr27Bm+CEdGRkZaWtpPP/1kbW29f/9+/mrR0dErVqyg0Whr1669dOmSoqIinU53cHC4cOHCkCFDxBMq0oehNIoIjZOTU1ZWVlpa2siRIyUVg6enp52dncDgIp729vbGxkZNTc2WlhY/P7+2traEhAQxR4j0Paj3LyI0An2eJMLQ0LC4uPhze+Xk5PBBq0pKSgEBAampqQDAZrNv377d0tLCq1ZfX3/79m2BY2tqaq5du/bf//73zZs3ookd6a1QGkWE5mv7PImCt7f33bt38/LyPrm3tLSU9/r19u1bPOCWlhZfX1/+pd8KCgp8fX35X9SuXLliaGh46NChe/fu4XNcifImkF4GtdQjQoNnJRqNJsEYZs+effXqVRcXl5UrVw4bNqywsPDDhw9z585du3ZtSUnJ5MmT1dXVfXx8ampqDh06hA/W5E2Z+jnl5eVLliyhUCioYR35JPQ0ighNT3gaJRAI165di4iIqK6ufvToEYFA2LBhg62tbVhYmJSU1JMnT3x9fV+8eMFgMOLj4+fPn9/e3j5u3DgA2Lx5c3x8vEBTQUlJSXNz840bN3R1dZcsWSKhe0J6OtTEhAjN/fv3x48fP3bs2IcPH0owjLt37zY1NY0dO7bzOqad4e/vvM+pDg4Os2bNKi0tPXLkCJfL1dTU3L9/f3Z2dm5urqWl5YMHD2RlZdevX4+PIEAQHHoaRYSmJzyNAkBYWNgPP/yATzb6r0xNTTMzMwHA2tp6wIABgwYNotFovHn7s7Ozp0+fTqfTX7x4YWxsHBUVtW7duh9//DEpKUmEN4D0NuhpFBGauro6dXX1AQMG4BMdSQSXy1VTU2tqaqqsrOzi4kgNDQ1qamp5eXmmpqZcLldaWjotLW306NFcLhcfLbp27VoajRYVFYXXd3d3HzlyZGhoqAhvA+lV0NMoIjRkMlleXr6xsZG/85CY5eXlNTU1GRoafsMCcwQCQVpaunO5hYVFdnY2PlwKw7DKykoVFRUhxIr0FSiNIsI0efLk2bNnd3R0SCoA4U7V7Ovr++DBg7lz5zY3Ny9fvvzhw4cBAQE0Gs3f318o50f6BpRGEeF4+PDhu3fvIiMjr169is9ld+PGjerqav46jY2NN27c4L3yYxiWmJgYERFx584dFosllDC+IY0SicSxY8fik9fhVFVVx44dSyAQRo8ejS+Kl5iY2NDQ8OuvvzY1NT158gQNIUX4oW+jiHDY2NgsXbp05cqVvBI5Obm4uDgPDw8AoNFov//++9mzZ5uamh4/fuzu7s5kMqdMmVJVVWVvb5+WliYlJZWSktL9l2Vra+tXr149ffp01KhR3TwVgnQRehpFxKGpqcnExCQvL483rxKVSrWwsMjKyjp58mRWVlZFRQU+9113MBiMvLw8IpH4hWX1EETo0CgmRLRKS0ulpKTwWZn5y4cMGcKbQITFYjGZTP6V3L/Ns2fP2Gy2g4MDb7p7BBEDlEYRoYmLi+P1uIS/V7LbuHGjkpLS6dOnP3lIVlZWbGzszZs3Fy1aNGnSpG4GgH8YdXJy6uZ5EOSroDSKCA2TyWxra+Nt4p/dIyIivrxWB4FAGDhw4IsXL+rr67uyztIXSHZheqTfQmkUEZopU6bwNzH98ccfADBgwIAvHOLo6Ojo6IhhmK2t7ZEjR7Zt29adAFAaRSQCNTEhEsPrDkUgELS0tOh0enfORqVSKyoqVFVVhw8fLozoEKSr0NMoIlq//fabgoLCli1bbt26xWQy2Wx2YmIinU43NDT09vbetWuXtbV1enp6QkIC/6JG3wAfRO/k5CQlhR4OELFCaRQRDnd3d4FO6ZMmTRo4cKCjoyO+wt2tW7daWlp8fHzevHnz5s2by5cvX7ly5dixY2fPntXR0bl9+/b333/fnQDwGUbQGz0ifqj7PdJHeHh4JCYm3rlzp/st/gjyVVAaRfoC3sROVVVVGhoakg4H6V/QVySkL3jz5k1TU5ORkRHKoYj4oTSK9AWoqxMiQSiNIn0BSqOIBKE0ivQFxsbGTk5OI0eOlHQgSH+EmpiQ3io3N7e1tZV/BH1aWpqqqqqZmRmvhMvlxsfHDx8+3NDQsKGhQWCtPVVVVS8vL/FFjPRRKI0ivVVgYOCHDx+uX7/OK5k0aZKtre3u3bsBgMlknjhx4uDBgyUlJVu3bt2xY0dJScmyZct4ld++faujo5OamiqB0JG+BXW/R/omAoHQ2NgYGRm5Y8cOvMTIyIj/adTOzm7RokWSCQ7pW1AaRfqahoaGmpqaYcOGbdmyBQA+Ob9UfHx8eXn5vHnzxB4d0gehNIr0YoWFhXv37uVtvnv3ztbWNjIycu/evR8+fPjCgfv371+1ahWa3RkRCpRGkV6MyWTW19fzNvF18fz9/X19fb9wVG5ubmJi4rlz50QdHtJPoDSK9GKWlpb79u3jbebl5QGAoqIib8WnTzpw4MD8+fO/YSF7BPkklEaR/oVOp1+5cuXZs2eSDgTpO1D3e6SvuXXr1vTp0wEgLS0tKiqqoqIiLy8vKiqqsrISAA4dOuTp6Wlubi7pMJG+Az2NIr2VmZkZmUzmL3FwcBg6dKienp6bmxsAxMfHP3nyRFVVtaGhISIiYsiQIZqamm/fvu3m/NAIIgB1v0cQBOkW9FKPIAjSLSiNIgiCdAtKowiCIN2C0iiCIEi3oDSKIAjSLSiNIgiCdAtKowiCIN3y/3SFkDhaKi+SAAABtHpUWHRyZGtpdFBLTCByZGtpdCAyMDIyLjAzLjUAAHice79v7T0GIOBlgABGIBaF4gZG9gANIM3MLAmSdizJzwXhzGS/0lxFKXaoDhkGbXYPiDIJRjYIi0WCiZEDxGJklGBm41AAslgkWGAMVrgcG5zFDpPkgAtxwllccGO54WI8cBYvTCsfXIgfzhKAswThhgjBxYThLBFuBqYEBhYGBu4ERqYMJkahBCZmBhZWBhYOBhY+BlY2BlZ2BlZBBg5OBg4uBg4eBm5eBm6hDCY+fgY+AQY+YQYhEQYRRlYGoEZucTZGSDiCgei5bMP9iUcz7UCcM9uMDlyV2WkPYjsXLNt/5sQZMDtYn2e/SZ6lA4htx+pmn5S9cS+I/fnMKzub88f2g9gHLi61D/r0Gsz2ZG3cf6t+HpjNGNRtf2HhBrA5AnZ/7E+3LAOzhWcd3Gf08QaYnbDy+f6pL1zB6lMWbrbX1jUD25X59/L+Cz8EDoDYk2P5HRJnnN0HYsu+V3RY8/Ae2M0C/lwO6kFLwHqvygnbPXR2BKuvved2wOTNsj1gcctch69Z5mA17sH9ByTXKIDZYgCmi2sG11BEKgAAAih6VFh0TU9MIHJka2l0IDIwMjIuMDMuNQAAeJx9lE1uGzEMhfc+hS4QgX8ixWUSB21RxAHatHfIvvdHSbmjYTaVZzHUfKKo9yhfWo4f1+8ff9oedL1cWoP/PO7efjMAXF5bvrSnly/fbu35/fHpmHl++3V7/9kI84H8fWYf399ejxlst/YAXZ1hBNyJJjnFC6xxLqUEqZuTgDXsIooVxAPk9twesEeJDBjgcJ82T5AOUNrX3HqIDbdGfbrxquEfyAc4IiN0y6+WK2CqcgHlAHWBMubwkTWMwRhybXAcoMXW2MmHqCQ4hWOcoB7gzBoxps1tkcSTzE7SDtJj7wDnFAkxOps7l1PPLTisvd1ARdrSyakk9A3iXR+2ieRBqsvUcmzc3iDdNZ/gc2guCrFgQmG3PchrfwFm5VRddEDZH7c/KPfD61A0TPNJB04t7LYI06MABMKcLEAAQ/2CbpNQIy31wUCY3giHS6OQ2yW0RaIimC7xJ9uotW6fMI2CjsJq1B64A7pp0R+3UZhOBRFJOcLsJwK2eqxtFqVZ3MMrHWPpiiqf0G0XLbuki03HJYGSKRWWtl8vt+unS3i/lk9vt+t5LaM3zhtAEeDZvry+YrlJEki5LxmepWmmOm+JZara4hn62ccZFhOyGD37HHHFs/Rexqdm0WCYWaD00ZrA0ixrgktL4EokxXpZM14cxrVSi5H3GSt2rZlTacpqAySs2lelMz7+POP98hccggnbRcLTiQAAAbF6VFh0U01JTEVTIHJka2l0IDIwMjIuMDMuNQAAeJxtk7uO3DAMRX8l5Q5gC3yJFDVVME2aBOkXLjZBuszOYpF0+/G5stNZjWydS/EF8pWfnm/dtnFWnF+6b5fxie2Ck2Pcbr3tUh4S06EJPrfOtmtc/4t+iLB9/tll1xT/r503AD48Ce0y88bDWLdPH08rFU+lygsVkSYpy5VKhFaOBSI1dyUf0GqrWZeVS60KMy6S1XyAZqq6XPFHFBkDiTZp4xmbesiyaiHOiPGOWjNbuGhk2gAZ5DsgyuGHIDWWBPK05sPGSNUXQSxHtlcpYrAeORoxMhqoKomgEtOqXAdhZ2p7Pk0DfrQglNfxLNhtoHWPq4hVM1vbw1eLijoQLdEKICmRYgwjM+cE0cIUqHo0SQjOR+JWLBp6ONoq4XK4b5SoYd37Sm1HXn00GFWgmlwuy8ufx/37++Otc7k/fn/G7evL27e/9x+/3ot1OcPa9Qy92xlGr2fI0f1MW48zzN4m76nnhAoGdYINUzfBFfM8wY7hnODE2J8xIk7KU+zExAV2a0IbNmTimLBQE2vGIk2wfvwDxCkNHhSLSSYAAAAASUVORK5CYII=", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "CREATE BONDS: Number of atoms in ligand object and RDKit MOL are equal: 21 21\n", - "idx=0 N Number of bonds : 3\n", - "N N : 0 , C C : 2 , 1.5\n", - "BOND CREATED 0 0 2 1.5 N C\n", - "N N : 0 , C C : 4 , 1.0\n", - "BOND CREATED 0 0 4 1.0 N C\n", - "N N : 0 , C C : 11 , 1.5\n", - "BOND CREATED 0 0 11 1.5 N C\n", - "BONDS [('N', 'C', 1.5, 1.34), ('N', 'C', 1.0, 1.491), ('N', 'C', 1.5, 1.378)]\n", - "idx=1 N Number of bonds : 2\n", - "N N : 1 , C C : 2 , 1.5\n", - "BOND CREATED 1 1 2 1.5 N C\n", - "N N : 1 , C C : 18 , 1.5\n", - "BOND CREATED 1 1 18 1.5 N C\n", - "BONDS [('N', 'C', 1.5, 1.327), ('N', 'C', 1.5, 1.375)]\n", - "idx=2 C Number of bonds : 3\n", - "N N : 0 , C C : 2 , 1.5\n", - "BOND CREATED 2 2 0 1.5 C N\n", - "N N : 1 , C C : 2 , 1.5\n", - "BOND CREATED 2 2 1 1.5 C N\n", - "C C : 2 , H H : 3 , 1.0\n", - "BOND CREATED 2 2 3 1.0 C H\n", - "BONDS [('C', 'N', 1.5, 1.34), ('C', 'N', 1.5, 1.327), ('C', 'H', 1.0, 0.93)]\n", - "idx=3 H Number of bonds : 1\n", - "C C : 2 , H H : 3 , 1.0\n", - "BOND CREATED 3 3 2 1.0 H C\n", - "BONDS [('H', 'C', 1.0, 0.93)]\n", - "idx=4 C Number of bonds : 4\n", - "N N : 0 , C C : 4 , 1.0\n", - "BOND CREATED 4 4 0 1.0 C N\n", - "C C : 4 , C C : 5 , 1.0\n", - "BOND CREATED 4 4 5 1.0 C C\n", - "C C : 4 , C C : 8 , 1.0\n", - "BOND CREATED 4 4 8 1.0 C C\n", - "C C : 4 , C C : 14 , 1.0\n", - "BOND CREATED 4 4 14 1.0 C C\n", - "BONDS [('C', 'N', 1.0, 1.491), ('C', 'C', 1.0, 1.521), ('C', 'C', 1.0, 1.518), ('C', 'C', 1.0, 1.521)]\n", - "idx=5 C Number of bonds : 4\n", - "C C : 4 , C C : 5 , 1.0\n", - "BOND CREATED 5 5 4 1.0 C C\n", - "C C : 5 , H H : 6 , 1.0\n", - "BOND CREATED 5 5 6 1.0 C H\n", - "C C : 5 , H H : 7 , 1.0\n", - "BOND CREATED 5 5 7 1.0 C H\n", - "C C : 5 , H H : 17 , 1.0\n", - "BOND CREATED 5 5 17 1.0 C H\n", - "BONDS [('C', 'C', 1.0, 1.521), ('C', 'H', 1.0, 0.96), ('C', 'H', 1.0, 0.959), ('C', 'H', 1.0, 0.959)]\n", - "idx=6 H Number of bonds : 1\n", - "C C : 5 , H H : 6 , 1.0\n", - "BOND CREATED 6 6 5 1.0 H C\n", - "BONDS [('H', 'C', 1.0, 0.96)]\n", - "idx=7 H Number of bonds : 1\n", - "C C : 5 , H H : 7 , 1.0\n", - "BOND CREATED 7 7 5 1.0 H C\n", - "BONDS [('H', 'C', 1.0, 0.959)]\n", - "idx=8 C Number of bonds : 4\n", - "C C : 4 , C C : 8 , 1.0\n", - "BOND CREATED 8 8 4 1.0 C C\n", - "C C : 8 , H H : 9 , 1.0\n", - "BOND CREATED 8 8 9 1.0 C H\n", - "C C : 8 , H H : 10 , 1.0\n", - "BOND CREATED 8 8 10 1.0 C H\n", - "C C : 8 , H H : 12 , 1.0\n", - "BOND CREATED 8 8 12 1.0 C H\n", - "BONDS [('C', 'C', 1.0, 1.518), ('C', 'H', 1.0, 0.96), ('C', 'H', 1.0, 0.961), ('C', 'H', 1.0, 0.96)]\n", - "idx=9 H Number of bonds : 1\n", - "C C : 8 , H H : 9 , 1.0\n", - "BOND CREATED 9 9 8 1.0 H C\n", - "BONDS [('H', 'C', 1.0, 0.96)]\n", - "idx=10 H Number of bonds : 1\n", - "C C : 8 , H H : 10 , 1.0\n", - "BOND CREATED 10 10 8 1.0 H C\n", - "BONDS [('H', 'C', 1.0, 0.961)]\n", - "idx=11 C Number of bonds : 3\n", - "N N : 0 , C C : 11 , 1.5\n", - "BOND CREATED 11 11 0 1.5 C N\n", - "C C : 11 , H H : 13 , 1.0\n", - "BOND CREATED 11 11 13 1.0 C H\n", - "C C : 11 , C C : 18 , 1.5\n", - "BOND CREATED 11 11 18 1.5 C C\n", - "BONDS [('C', 'N', 1.5, 1.378), ('C', 'H', 1.0, 0.93), ('C', 'C', 1.5, 1.352)]\n", - "idx=12 H Number of bonds : 1\n", - "C C : 8 , H H : 12 , 1.0\n", - "BOND CREATED 12 12 8 1.0 H C\n", - "BONDS [('H', 'C', 1.0, 0.96)]\n", - "idx=13 H Number of bonds : 1\n", - "C C : 11 , H H : 13 , 1.0\n", - "BOND CREATED 13 13 11 1.0 H C\n", - "BONDS [('H', 'C', 1.0, 0.93)]\n", - "idx=14 C Number of bonds : 4\n", - "C C : 4 , C C : 14 , 1.0\n", - "BOND CREATED 14 14 4 1.0 C C\n", - "C C : 14 , H H : 15 , 1.0\n", - "BOND CREATED 14 14 15 1.0 C H\n", - "C C : 14 , H H : 16 , 1.0\n", - "BOND CREATED 14 14 16 1.0 C H\n", - "C C : 14 , H H : 19 , 1.0\n", - "BOND CREATED 14 14 19 1.0 C H\n", - "BONDS [('C', 'C', 1.0, 1.521), ('C', 'H', 1.0, 0.96), ('C', 'H', 1.0, 0.96), ('C', 'H', 1.0, 0.96)]\n", - "idx=15 H Number of bonds : 1\n", - "C C : 14 , H H : 15 , 1.0\n", - "BOND CREATED 15 15 14 1.0 H C\n", - "BONDS [('H', 'C', 1.0, 0.96)]\n", - "idx=16 H Number of bonds : 1\n", - "C C : 14 , H H : 16 , 1.0\n", - "BOND CREATED 16 16 14 1.0 H C\n", - "BONDS [('H', 'C', 1.0, 0.96)]\n", - "idx=17 H Number of bonds : 1\n", - "C C : 5 , H H : 17 , 1.0\n", - "BOND CREATED 17 17 5 1.0 H C\n", - "BONDS [('H', 'C', 1.0, 0.959)]\n", - "idx=18 C Number of bonds : 3\n", - "N N : 1 , C C : 18 , 1.5\n", - "BOND CREATED 18 18 1 1.5 C N\n", - "C C : 11 , C C : 18 , 1.5\n", - "BOND CREATED 18 18 11 1.5 C C\n", - "C C : 18 , H H : 20 , 1.0\n", - "BOND CREATED 18 18 20 1.0 C H\n", - "BONDS [('C', 'N', 1.5, 1.375), ('C', 'C', 1.5, 1.352), ('C', 'H', 1.0, 0.93)]\n", - "idx=19 H Number of bonds : 1\n", - "C C : 14 , H H : 19 , 1.0\n", - "BOND CREATED 19 19 14 1.0 H C\n", - "BONDS [('H', 'C', 1.0, 0.96)]\n", - "idx=20 H Number of bonds : 1\n", - "C C : 18 , H H : 20 , 1.0\n", - "BOND CREATED 20 20 18 1.0 H C\n", - "BONDS [('H', 'C', 1.0, 0.93)]\n" - ] - }, - { - "data": { - "image/png": "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", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "CREATE BONDS: Number of atoms in ligand object and RDKit MOL are equal: 27 27\n", - "idx=0 H Number of bonds : 1\n", - "H H : 0 , C C : 4 , 1.0\n", - "BOND CREATED 0 0 4 1.0 H C\n", - "BONDS [('H', 'C', 1.0, 0.959)]\n", - "idx=1 Si Number of bonds : 4\n", - "Si Si : 1 , N N : 3 , 1.0\n", - "BOND CREATED 1 1 3 1.0 Si N\n", - "Si Si : 1 , C C : 4 , 1.0\n", - "BOND CREATED 1 1 4 1.0 Si C\n", - "Si Si : 1 , C C : 5 , 1.0\n", - "BOND CREATED 1 1 5 1.0 Si C\n", - "Si Si : 1 , C C : 9 , 1.0\n", - "BOND CREATED 1 1 9 1.0 Si C\n", - "BONDS [('Si', 'N', 1.0, 1.708), ('Si', 'C', 1.0, 1.876), ('Si', 'C', 1.0, 1.875), ('Si', 'C', 1.0, 1.895)]\n", - "idx=2 Si Number of bonds : 4\n", - "Si Si : 2 , N N : 3 , 1.0\n", - "BOND CREATED 2 2 3 1.0 Si N\n", - "Si Si : 2 , C C : 15 , 1.0\n", - "BOND CREATED 2 2 15 1.0 Si C\n", - "Si Si : 2 , C C : 19 , 1.0\n", - "BOND CREATED 2 2 19 1.0 Si C\n", - "Si Si : 2 , C C : 23 , 1.0\n", - "BOND CREATED 2 2 23 1.0 Si C\n", - "BONDS [('Si', 'N', 1.0, 1.706), ('Si', 'C', 1.0, 1.887), ('Si', 'C', 1.0, 1.878), ('Si', 'C', 1.0, 1.882)]\n", - "idx=3 N Number of bonds : 2\n", - "Si Si : 1 , N N : 3 , 1.0\n", - "BOND CREATED 3 3 1 1.0 N Si\n", - "Si Si : 2 , N N : 3 , 1.0\n", - "BOND CREATED 3 3 2 1.0 N Si\n", - "BONDS [('N', 'Si', 1.0, 1.708), ('N', 'Si', 1.0, 1.706)]\n", - "idx=4 C Number of bonds : 4\n", - "H H : 0 , C C : 4 , 1.0\n", - "BOND CREATED 4 4 0 1.0 C H\n", - "Si Si : 1 , C C : 4 , 1.0\n", - "BOND CREATED 4 4 1 1.0 C Si\n", - "C C : 4 , H H : 12 , 1.0\n", - "BOND CREATED 4 4 12 1.0 C H\n", - "C C : 4 , H H : 24 , 1.0\n", - "BOND CREATED 4 4 24 1.0 C H\n", - "BONDS [('C', 'H', 1.0, 0.959), ('C', 'Si', 1.0, 1.876), ('C', 'H', 1.0, 0.96), ('C', 'H', 1.0, 0.96)]\n", - "idx=5 C Number of bonds : 4\n", - "Si Si : 1 , C C : 5 , 1.0\n", - "BOND CREATED 5 5 1 1.0 C Si\n", - "C C : 5 , H H : 6 , 1.0\n", - "BOND CREATED 5 5 6 1.0 C H\n", - "C C : 5 , H H : 8 , 1.0\n", - "BOND CREATED 5 5 8 1.0 C H\n", - "C C : 5 , H H : 13 , 1.0\n", - "BOND CREATED 5 5 13 1.0 C H\n", - "BONDS [('C', 'Si', 1.0, 1.875), ('C', 'H', 1.0, 0.961), ('C', 'H', 1.0, 0.96), ('C', 'H', 1.0, 0.96)]\n", - "idx=6 H Number of bonds : 1\n", - "C C : 5 , H H : 6 , 1.0\n", - "BOND CREATED 6 6 5 1.0 H C\n", - "BONDS [('H', 'C', 1.0, 0.961)]\n", - "idx=7 H Number of bonds : 1\n", - "H H : 7 , C C : 9 , 1.0\n", - "BOND CREATED 7 7 9 1.0 H C\n", - "BONDS [('H', 'C', 1.0, 0.96)]\n", - "idx=8 H Number of bonds : 1\n", - "C C : 5 , H H : 8 , 1.0\n", - "BOND CREATED 8 8 5 1.0 H C\n", - "BONDS [('H', 'C', 1.0, 0.96)]\n", - "idx=9 C Number of bonds : 4\n", - "Si Si : 1 , C C : 9 , 1.0\n", - "BOND CREATED 9 9 1 1.0 C Si\n", - "H H : 7 , C C : 9 , 1.0\n", - "BOND CREATED 9 9 7 1.0 C H\n", - "C C : 9 , H H : 10 , 1.0\n", - "BOND CREATED 9 9 10 1.0 C H\n", - "C C : 9 , H H : 11 , 1.0\n", - "BOND CREATED 9 9 11 1.0 C H\n", - "BONDS [('C', 'Si', 1.0, 1.895), ('C', 'H', 1.0, 0.96), ('C', 'H', 1.0, 0.96), ('C', 'H', 1.0, 0.96)]\n", - "idx=10 H Number of bonds : 1\n", - "C C : 9 , H H : 10 , 1.0\n", - "BOND CREATED 10 10 9 1.0 H C\n", - "BONDS [('H', 'C', 1.0, 0.96)]\n", - "idx=11 H Number of bonds : 1\n", - "C C : 9 , H H : 11 , 1.0\n", - "BOND CREATED 11 11 9 1.0 H C\n", - "BONDS [('H', 'C', 1.0, 0.96)]\n", - "idx=12 H Number of bonds : 1\n", - "C C : 4 , H H : 12 , 1.0\n", - "BOND CREATED 12 12 4 1.0 H C\n", - "BONDS [('H', 'C', 1.0, 0.96)]\n", - "idx=13 H Number of bonds : 1\n", - "C C : 5 , H H : 13 , 1.0\n", - "BOND CREATED 13 13 5 1.0 H C\n", - "BONDS [('H', 'C', 1.0, 0.96)]\n", - "idx=14 H Number of bonds : 1\n", - "H H : 14 , C C : 15 , 1.0\n", - "BOND CREATED 14 14 15 1.0 H C\n", - "BONDS [('H', 'C', 1.0, 0.96)]\n", - "idx=15 C Number of bonds : 4\n", - "Si Si : 2 , C C : 15 , 1.0\n", - "BOND CREATED 15 15 2 1.0 C Si\n", - "H H : 14 , C C : 15 , 1.0\n", - "BOND CREATED 15 15 14 1.0 C H\n", - "C C : 15 , H H : 16 , 1.0\n", - "BOND CREATED 15 15 16 1.0 C H\n", - "C C : 15 , H H : 18 , 1.0\n", - "BOND CREATED 15 15 18 1.0 C H\n", - "BONDS [('C', 'Si', 1.0, 1.887), ('C', 'H', 1.0, 0.96), ('C', 'H', 1.0, 0.958), ('C', 'H', 1.0, 0.96)]\n", - "idx=16 H Number of bonds : 1\n", - "C C : 15 , H H : 16 , 1.0\n", - "BOND CREATED 16 16 15 1.0 H C\n", - "BONDS [('H', 'C', 1.0, 0.958)]\n", - "idx=17 H Number of bonds : 1\n", - "H H : 17 , C C : 23 , 1.0\n", - "BOND CREATED 17 17 23 1.0 H C\n", - "BONDS [('H', 'C', 1.0, 0.96)]\n", - "idx=18 H Number of bonds : 1\n", - "C C : 15 , H H : 18 , 1.0\n", - "BOND CREATED 18 18 15 1.0 H C\n", - "BONDS [('H', 'C', 1.0, 0.96)]\n", - "idx=19 C Number of bonds : 4\n", - "Si Si : 2 , C C : 19 , 1.0\n", - "BOND CREATED 19 19 2 1.0 C Si\n", - "C C : 19 , H H : 20 , 1.0\n", - "BOND CREATED 19 19 20 1.0 C H\n", - "C C : 19 , H H : 21 , 1.0\n", - "BOND CREATED 19 19 21 1.0 C H\n", - "C C : 19 , H H : 22 , 1.0\n", - "BOND CREATED 19 19 22 1.0 C H\n", - "BONDS [('C', 'Si', 1.0, 1.878), ('C', 'H', 1.0, 0.96), ('C', 'H', 1.0, 0.96), ('C', 'H', 1.0, 0.96)]\n", - "idx=20 H Number of bonds : 1\n", - "C C : 19 , H H : 20 , 1.0\n", - "BOND CREATED 20 20 19 1.0 H C\n", - "BONDS [('H', 'C', 1.0, 0.96)]\n", - "idx=21 H Number of bonds : 1\n", - "C C : 19 , H H : 21 , 1.0\n", - "BOND CREATED 21 21 19 1.0 H C\n", - "BONDS [('H', 'C', 1.0, 0.96)]\n", - "idx=22 H Number of bonds : 1\n", - "C C : 19 , H H : 22 , 1.0\n", - "BOND CREATED 22 22 19 1.0 H C\n", - "BONDS [('H', 'C', 1.0, 0.96)]\n", - "idx=23 C Number of bonds : 4\n", - "Si Si : 2 , C C : 23 , 1.0\n", - "BOND CREATED 23 23 2 1.0 C Si\n", - "H H : 17 , C C : 23 , 1.0\n", - "BOND CREATED 23 23 17 1.0 C H\n", - "C C : 23 , H H : 25 , 1.0\n", - "BOND CREATED 23 23 25 1.0 C H\n", - "C C : 23 , H H : 26 , 1.0\n", - "BOND CREATED 23 23 26 1.0 C H\n", - "BONDS [('C', 'Si', 1.0, 1.882), ('C', 'H', 1.0, 0.96), ('C', 'H', 1.0, 0.961), ('C', 'H', 1.0, 0.96)]\n", - "idx=24 H Number of bonds : 1\n", - "C C : 4 , H H : 24 , 1.0\n", - "BOND CREATED 24 24 4 1.0 H C\n", - "BONDS [('H', 'C', 1.0, 0.96)]\n", - "idx=25 H Number of bonds : 1\n", - "C C : 23 , H H : 25 , 1.0\n", - "BOND CREATED 25 25 23 1.0 H C\n", - "BONDS [('H', 'C', 1.0, 0.961)]\n", - "idx=26 H Number of bonds : 1\n", - "C C : 23 , H H : 26 , 1.0\n", - "BOND CREATED 26 26 23 1.0 H C\n", - "BONDS [('H', 'C', 1.0, 0.96)]\n" - ] - }, - { - "data": { - "image/png": "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", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "CREATE BONDS: Number of atoms in ligand object and RDKit MOL are equal: 21 21\n", - "idx=0 H Number of bonds : 1\n", - "H H : 0 , C C : 19 , 1.0\n", - "BOND CREATED 0 0 19 1.0 H C\n", - "BONDS [('H', 'C', 1.0, 0.93)]\n", - "idx=1 N Number of bonds : 3\n", - "N N : 1 , C C : 3 , 1.5\n", - "BOND CREATED 1 1 3 1.5 N C\n", - "N N : 1 , C C : 5 , 1.0\n", - "BOND CREATED 1 1 5 1.0 N C\n", - "N N : 1 , C C : 12 , 1.5\n", - "BOND CREATED 1 1 12 1.5 N C\n", - "BONDS [('N', 'C', 1.5, 1.34), ('N', 'C', 1.0, 1.491), ('N', 'C', 1.5, 1.378)]\n", - "idx=2 N Number of bonds : 2\n", - "N N : 2 , C C : 3 , 1.5\n", - "BOND CREATED 2 2 3 1.5 N C\n", - "N N : 2 , C C : 19 , 1.5\n", - "BOND CREATED 2 2 19 1.5 N C\n", - "BONDS [('N', 'C', 1.5, 1.327), ('N', 'C', 1.5, 1.375)]\n", - "idx=3 C Number of bonds : 3\n", - "N N : 1 , C C : 3 , 1.5\n", - "BOND CREATED 3 3 1 1.5 C N\n", - "N N : 2 , C C : 3 , 1.5\n", - "BOND CREATED 3 3 2 1.5 C N\n", - "C C : 3 , H H : 4 , 1.0\n", - "BOND CREATED 3 3 4 1.0 C H\n", - "BONDS [('C', 'N', 1.5, 1.34), ('C', 'N', 1.5, 1.327), ('C', 'H', 1.0, 0.93)]\n", - "idx=4 H Number of bonds : 1\n", - "C C : 3 , H H : 4 , 1.0\n", - "BOND CREATED 4 4 3 1.0 H C\n", - "BONDS [('H', 'C', 1.0, 0.93)]\n", - "idx=5 C Number of bonds : 4\n", - "N N : 1 , C C : 5 , 1.0\n", - "BOND CREATED 5 5 1 1.0 C N\n", - "C C : 5 , C C : 6 , 1.0\n", - "BOND CREATED 5 5 6 1.0 C C\n", - "C C : 5 , C C : 9 , 1.0\n", - "BOND CREATED 5 5 9 1.0 C C\n", - "C C : 5 , C C : 15 , 1.0\n", - "BOND CREATED 5 5 15 1.0 C C\n", - "BONDS [('C', 'N', 1.0, 1.491), ('C', 'C', 1.0, 1.521), ('C', 'C', 1.0, 1.518), ('C', 'C', 1.0, 1.521)]\n", - "idx=6 C Number of bonds : 4\n", - "C C : 5 , C C : 6 , 1.0\n", - "BOND CREATED 6 6 5 1.0 C C\n", - "C C : 6 , H H : 7 , 1.0\n", - "BOND CREATED 6 6 7 1.0 C H\n", - "C C : 6 , H H : 8 , 1.0\n", - "BOND CREATED 6 6 8 1.0 C H\n", - "C C : 6 , H H : 18 , 1.0\n", - "BOND CREATED 6 6 18 1.0 C H\n", - "BONDS [('C', 'C', 1.0, 1.521), ('C', 'H', 1.0, 0.96), ('C', 'H', 1.0, 0.959), ('C', 'H', 1.0, 0.959)]\n", - "idx=7 H Number of bonds : 1\n", - "C C : 6 , H H : 7 , 1.0\n", - "BOND CREATED 7 7 6 1.0 H C\n", - "BONDS [('H', 'C', 1.0, 0.96)]\n", - "idx=8 H Number of bonds : 1\n", - "C C : 6 , H H : 8 , 1.0\n", - "BOND CREATED 8 8 6 1.0 H C\n", - "BONDS [('H', 'C', 1.0, 0.959)]\n", - "idx=9 C Number of bonds : 4\n", - "C C : 5 , C C : 9 , 1.0\n", - "BOND CREATED 9 9 5 1.0 C C\n", - "C C : 9 , H H : 10 , 1.0\n", - "BOND CREATED 9 9 10 1.0 C H\n", - "C C : 9 , H H : 11 , 1.0\n", - "BOND CREATED 9 9 11 1.0 C H\n", - "C C : 9 , H H : 13 , 1.0\n", - "BOND CREATED 9 9 13 1.0 C H\n", - "BONDS [('C', 'C', 1.0, 1.518), ('C', 'H', 1.0, 0.96), ('C', 'H', 1.0, 0.961), ('C', 'H', 1.0, 0.96)]\n", - "idx=10 H Number of bonds : 1\n", - "C C : 9 , H H : 10 , 1.0\n", - "BOND CREATED 10 10 9 1.0 H C\n", - "BONDS [('H', 'C', 1.0, 0.96)]\n", - "idx=11 H Number of bonds : 1\n", - "C C : 9 , H H : 11 , 1.0\n", - "BOND CREATED 11 11 9 1.0 H C\n", - "BONDS [('H', 'C', 1.0, 0.961)]\n", - "idx=12 C Number of bonds : 3\n", - "N N : 1 , C C : 12 , 1.5\n", - "BOND CREATED 12 12 1 1.5 C N\n", - "C C : 12 , H H : 14 , 1.0\n", - "BOND CREATED 12 12 14 1.0 C H\n", - "C C : 12 , C C : 19 , 1.5\n", - "BOND CREATED 12 12 19 1.5 C C\n", - "BONDS [('C', 'N', 1.5, 1.378), ('C', 'H', 1.0, 0.93), ('C', 'C', 1.5, 1.352)]\n", - "idx=13 H Number of bonds : 1\n", - "C C : 9 , H H : 13 , 1.0\n", - "BOND CREATED 13 13 9 1.0 H C\n", - "BONDS [('H', 'C', 1.0, 0.96)]\n", - "idx=14 H Number of bonds : 1\n", - "C C : 12 , H H : 14 , 1.0\n", - "BOND CREATED 14 14 12 1.0 H C\n", - "BONDS [('H', 'C', 1.0, 0.93)]\n", - "idx=15 C Number of bonds : 4\n", - "C C : 5 , C C : 15 , 1.0\n", - "BOND CREATED 15 15 5 1.0 C C\n", - "C C : 15 , H H : 16 , 1.0\n", - "BOND CREATED 15 15 16 1.0 C H\n", - "C C : 15 , H H : 17 , 1.0\n", - "BOND CREATED 15 15 17 1.0 C H\n", - "C C : 15 , H H : 20 , 1.0\n", - "BOND CREATED 15 15 20 1.0 C H\n", - "BONDS [('C', 'C', 1.0, 1.521), ('C', 'H', 1.0, 0.96), ('C', 'H', 1.0, 0.96), ('C', 'H', 1.0, 0.96)]\n", - "idx=16 H Number of bonds : 1\n", - "C C : 15 , H H : 16 , 1.0\n", - "BOND CREATED 16 16 15 1.0 H C\n", - "BONDS [('H', 'C', 1.0, 0.96)]\n", - "idx=17 H Number of bonds : 1\n", - "C C : 15 , H H : 17 , 1.0\n", - "BOND CREATED 17 17 15 1.0 H C\n", - "BONDS [('H', 'C', 1.0, 0.96)]\n", - "idx=18 H Number of bonds : 1\n", - "C C : 6 , H H : 18 , 1.0\n", - "BOND CREATED 18 18 6 1.0 H C\n", - "BONDS [('H', 'C', 1.0, 0.959)]\n", - "idx=19 C Number of bonds : 3\n", - "H H : 0 , C C : 19 , 1.0\n", - "BOND CREATED 19 19 0 1.0 C H\n", - "N N : 2 , C C : 19 , 1.5\n", - "BOND CREATED 19 19 2 1.5 C N\n", - "C C : 12 , C C : 19 , 1.5\n", - "BOND CREATED 19 19 12 1.5 C C\n", - "BONDS [('C', 'H', 1.0, 0.93), ('C', 'N', 1.5, 1.375), ('C', 'C', 1.5, 1.352)]\n", - "idx=20 H Number of bonds : 1\n", - "C C : 15 , H H : 20 , 1.0\n", - "BOND CREATED 20 20 15 1.0 H C\n", - "BONDS [('H', 'C', 1.0, 0.96)]\n" - ] - }, - { - "data": { - "image/png": "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", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "CREATE BONDS: Number of atoms in ligand object and RDKit MOL are equal: 27 27\n", - "idx=0 Si Number of bonds : 4\n", - "Si Si : 0 , N N : 2 , 1.0\n", - "BOND CREATED 0 0 2 1.0 Si N\n", - "Si Si : 0 , C C : 3 , 1.0\n", - "BOND CREATED 0 0 3 1.0 Si C\n", - "Si Si : 0 , C C : 4 , 1.0\n", - "BOND CREATED 0 0 4 1.0 Si C\n", - "Si Si : 0 , C C : 8 , 1.0\n", - "BOND CREATED 0 0 8 1.0 Si C\n", - "BONDS [('Si', 'N', 1.0, 1.708), ('Si', 'C', 1.0, 1.876), ('Si', 'C', 1.0, 1.875), ('Si', 'C', 1.0, 1.895)]\n", - "idx=1 Si Number of bonds : 4\n", - "Si Si : 1 , N N : 2 , 1.0\n", - "BOND CREATED 1 1 2 1.0 Si N\n", - "Si Si : 1 , C C : 14 , 1.0\n", - "BOND CREATED 1 1 14 1.0 Si C\n", - "Si Si : 1 , C C : 18 , 1.0\n", - "BOND CREATED 1 1 18 1.0 Si C\n", - "Si Si : 1 , C C : 22 , 1.0\n", - "BOND CREATED 1 1 22 1.0 Si C\n", - "BONDS [('Si', 'N', 1.0, 1.706), ('Si', 'C', 1.0, 1.887), ('Si', 'C', 1.0, 1.878), ('Si', 'C', 1.0, 1.882)]\n", - "idx=2 N Number of bonds : 2\n", - "Si Si : 0 , N N : 2 , 1.0\n", - "BOND CREATED 2 2 0 1.0 N Si\n", - "Si Si : 1 , N N : 2 , 1.0\n", - "BOND CREATED 2 2 1 1.0 N Si\n", - "BONDS [('N', 'Si', 1.0, 1.708), ('N', 'Si', 1.0, 1.706)]\n", - "idx=3 C Number of bonds : 4\n", - "Si Si : 0 , C C : 3 , 1.0\n", - "BOND CREATED 3 3 0 1.0 C Si\n", - "C C : 3 , H H : 11 , 1.0\n", - "BOND CREATED 3 3 11 1.0 C H\n", - "C C : 3 , H H : 23 , 1.0\n", - "BOND CREATED 3 3 23 1.0 C H\n", - "C C : 3 , H H : 26 , 1.0\n", - "BOND CREATED 3 3 26 1.0 C H\n", - "BONDS [('C', 'Si', 1.0, 1.876), ('C', 'H', 1.0, 0.96), ('C', 'H', 1.0, 0.96), ('C', 'H', 1.0, 0.959)]\n", - "idx=4 C Number of bonds : 4\n", - "Si Si : 0 , C C : 4 , 1.0\n", - "BOND CREATED 4 4 0 1.0 C Si\n", - "C C : 4 , H H : 5 , 1.0\n", - "BOND CREATED 4 4 5 1.0 C H\n", - "C C : 4 , H H : 7 , 1.0\n", - "BOND CREATED 4 4 7 1.0 C H\n", - "C C : 4 , H H : 12 , 1.0\n", - "BOND CREATED 4 4 12 1.0 C H\n", - "BONDS [('C', 'Si', 1.0, 1.875), ('C', 'H', 1.0, 0.961), ('C', 'H', 1.0, 0.96), ('C', 'H', 1.0, 0.96)]\n", - "idx=5 H Number of bonds : 1\n", - "C C : 4 , H H : 5 , 1.0\n", - "BOND CREATED 5 5 4 1.0 H C\n", - "BONDS [('H', 'C', 1.0, 0.961)]\n", - "idx=6 H Number of bonds : 1\n", - "H H : 6 , C C : 8 , 1.0\n", - "BOND CREATED 6 6 8 1.0 H C\n", - "BONDS [('H', 'C', 1.0, 0.96)]\n", - "idx=7 H Number of bonds : 1\n", - "C C : 4 , H H : 7 , 1.0\n", - "BOND CREATED 7 7 4 1.0 H C\n", - "BONDS [('H', 'C', 1.0, 0.96)]\n", - "idx=8 C Number of bonds : 4\n", - "Si Si : 0 , C C : 8 , 1.0\n", - "BOND CREATED 8 8 0 1.0 C Si\n", - "H H : 6 , C C : 8 , 1.0\n", - "BOND CREATED 8 8 6 1.0 C H\n", - "C C : 8 , H H : 9 , 1.0\n", - "BOND CREATED 8 8 9 1.0 C H\n", - "C C : 8 , H H : 10 , 1.0\n", - "BOND CREATED 8 8 10 1.0 C H\n", - "BONDS [('C', 'Si', 1.0, 1.895), ('C', 'H', 1.0, 0.96), ('C', 'H', 1.0, 0.96), ('C', 'H', 1.0, 0.96)]\n", - "idx=9 H Number of bonds : 1\n", - "C C : 8 , H H : 9 , 1.0\n", - "BOND CREATED 9 9 8 1.0 H C\n", - "BONDS [('H', 'C', 1.0, 0.96)]\n", - "idx=10 H Number of bonds : 1\n", - "C C : 8 , H H : 10 , 1.0\n", - "BOND CREATED 10 10 8 1.0 H C\n", - "BONDS [('H', 'C', 1.0, 0.96)]\n", - "idx=11 H Number of bonds : 1\n", - "C C : 3 , H H : 11 , 1.0\n", - "BOND CREATED 11 11 3 1.0 H C\n", - "BONDS [('H', 'C', 1.0, 0.96)]\n", - "idx=12 H Number of bonds : 1\n", - "C C : 4 , H H : 12 , 1.0\n", - "BOND CREATED 12 12 4 1.0 H C\n", - "BONDS [('H', 'C', 1.0, 0.96)]\n", - "idx=13 H Number of bonds : 1\n", - "H H : 13 , C C : 14 , 1.0\n", - "BOND CREATED 13 13 14 1.0 H C\n", - "BONDS [('H', 'C', 1.0, 0.96)]\n", - "idx=14 C Number of bonds : 4\n", - "Si Si : 1 , C C : 14 , 1.0\n", - "BOND CREATED 14 14 1 1.0 C Si\n", - "H H : 13 , C C : 14 , 1.0\n", - "BOND CREATED 14 14 13 1.0 C H\n", - "C C : 14 , H H : 15 , 1.0\n", - "BOND CREATED 14 14 15 1.0 C H\n", - "C C : 14 , H H : 17 , 1.0\n", - "BOND CREATED 14 14 17 1.0 C H\n", - "BONDS [('C', 'Si', 1.0, 1.887), ('C', 'H', 1.0, 0.96), ('C', 'H', 1.0, 0.958), ('C', 'H', 1.0, 0.96)]\n", - "idx=15 H Number of bonds : 1\n", - "C C : 14 , H H : 15 , 1.0\n", - "BOND CREATED 15 15 14 1.0 H C\n", - "BONDS [('H', 'C', 1.0, 0.958)]\n", - "idx=16 H Number of bonds : 1\n", - "H H : 16 , C C : 22 , 1.0\n", - "BOND CREATED 16 16 22 1.0 H C\n", - "BONDS [('H', 'C', 1.0, 0.96)]\n", - "idx=17 H Number of bonds : 1\n", - "C C : 14 , H H : 17 , 1.0\n", - "BOND CREATED 17 17 14 1.0 H C\n", - "BONDS [('H', 'C', 1.0, 0.96)]\n", - "idx=18 C Number of bonds : 4\n", - "Si Si : 1 , C C : 18 , 1.0\n", - "BOND CREATED 18 18 1 1.0 C Si\n", - "C C : 18 , H H : 19 , 1.0\n", - "BOND CREATED 18 18 19 1.0 C H\n", - "C C : 18 , H H : 20 , 1.0\n", - "BOND CREATED 18 18 20 1.0 C H\n", - "C C : 18 , H H : 21 , 1.0\n", - "BOND CREATED 18 18 21 1.0 C H\n", - "BONDS [('C', 'Si', 1.0, 1.878), ('C', 'H', 1.0, 0.96), ('C', 'H', 1.0, 0.96), ('C', 'H', 1.0, 0.96)]\n", - "idx=19 H Number of bonds : 1\n", - "C C : 18 , H H : 19 , 1.0\n", - "BOND CREATED 19 19 18 1.0 H C\n", - "BONDS [('H', 'C', 1.0, 0.96)]\n", - "idx=20 H Number of bonds : 1\n", - "C C : 18 , H H : 20 , 1.0\n", - "BOND CREATED 20 20 18 1.0 H C\n", - "BONDS [('H', 'C', 1.0, 0.96)]\n", - "idx=21 H Number of bonds : 1\n", - "C C : 18 , H H : 21 , 1.0\n", - "BOND CREATED 21 21 18 1.0 H C\n", - "BONDS [('H', 'C', 1.0, 0.96)]\n", - "idx=22 C Number of bonds : 4\n", - "Si Si : 1 , C C : 22 , 1.0\n", - "BOND CREATED 22 22 1 1.0 C Si\n", - "H H : 16 , C C : 22 , 1.0\n", - "BOND CREATED 22 22 16 1.0 C H\n", - "C C : 22 , H H : 24 , 1.0\n", - "BOND CREATED 22 22 24 1.0 C H\n", - "C C : 22 , H H : 25 , 1.0\n", - "BOND CREATED 22 22 25 1.0 C H\n", - "BONDS [('C', 'Si', 1.0, 1.882), ('C', 'H', 1.0, 0.96), ('C', 'H', 1.0, 0.961), ('C', 'H', 1.0, 0.96)]\n", - "idx=23 H Number of bonds : 1\n", - "C C : 3 , H H : 23 , 1.0\n", - "BOND CREATED 23 23 3 1.0 H C\n", - "BONDS [('H', 'C', 1.0, 0.96)]\n", - "idx=24 H Number of bonds : 1\n", - "C C : 22 , H H : 24 , 1.0\n", - "BOND CREATED 24 24 22 1.0 H C\n", - "BONDS [('H', 'C', 1.0, 0.961)]\n", - "idx=25 H Number of bonds : 1\n", - "C C : 22 , H H : 25 , 1.0\n", - "BOND CREATED 25 25 22 1.0 H C\n", - "BONDS [('H', 'C', 1.0, 0.96)]\n", - "idx=26 H Number of bonds : 1\n", - "C C : 3 , H H : 26 , 1.0\n", - "BOND CREATED 26 26 3 1.0 H C\n", - "BONDS [('H', 'C', 1.0, 0.959)]\n", - "0 N\n", - "N C 1.5\n", - "0 2\n", - "N C 1.0\n", - "0 4\n", - "N C 1.5\n", - "0 11\n", - "1 N\n", - "N C 1.5\n", - "1 2\n", - "N C 1.5\n", - "1 18\n", - "N Fe 0.5\n", - "2 C\n", - "C N 1.5\n", - "2 0\n", - "C N 1.5\n", - "2 1\n", - "C H 1.0\n", - "2 3\n", - "3 H\n", - "H C 1.0\n", - "3 2\n", - "4 C\n", - "C N 1.0\n", - "4 0\n", - "C C 1.0\n", - "4 5\n", - "C C 1.0\n", - "4 8\n", - "C C 1.0\n", - "4 14\n", - "5 C\n", - "C C 1.0\n", - "5 4\n", - "C H 1.0\n", - "5 6\n", - "C H 1.0\n", - "5 7\n", - "C H 1.0\n", - "5 17\n", - "6 H\n", - "H C 1.0\n", - "6 5\n", - "7 H\n", - "H C 1.0\n", - "7 5\n", - "8 C\n", - "C C 1.0\n", - "8 4\n", - "C H 1.0\n", - "8 9\n", - "C H 1.0\n", - "8 10\n", - "C H 1.0\n", - "8 12\n", - "9 H\n", - "H C 1.0\n", - "9 8\n", - "10 H\n", - "H C 1.0\n", - "10 8\n", - "11 C\n", - "C N 1.5\n", - "11 0\n", - "C H 1.0\n", - "11 13\n", - "C C 1.5\n", - "11 18\n", - "12 H\n", - "H C 1.0\n", - "12 8\n", - "13 H\n", - "H C 1.0\n", - "13 11\n", - "14 C\n", - "C C 1.0\n", - "14 4\n", - "C H 1.0\n", - "14 15\n", - "C H 1.0\n", - "14 16\n", - "C H 1.0\n", - "14 19\n", - "15 H\n", - "H C 1.0\n", - "15 14\n", - "16 H\n", - "H C 1.0\n", - "16 14\n", - "17 H\n", - "H C 1.0\n", - "17 5\n", - "18 C\n", - "C N 1.5\n", - "18 1\n", - "C C 1.5\n", - "18 11\n", - "C H 1.0\n", - "18 20\n", - "19 H\n", - "H C 1.0\n", - "19 14\n", - "20 H\n", - "H C 1.0\n", - "20 18\n" - ] - }, - { - "data": { - "image/png": "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", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0 H\n", - "H C 1.0\n", - "0 4\n", - "1 Si\n", - "Si N 1.0\n", - "1 3\n", - "Si C 1.0\n", - "1 4\n", - "Si C 1.0\n", - "1 5\n", - "Si C 1.0\n", - "1 9\n", - "2 Si\n", - "Si N 1.0\n", - "2 3\n", - "Si C 1.0\n", - "2 15\n", - "Si C 1.0\n", - "2 19\n", - "Si C 1.0\n", - "2 23\n", - "3 N\n", - "N Si 1.0\n", - "3 1\n", - "N Si 1.0\n", - "3 2\n", - "N Fe 0.5\n", - "4 C\n", - "C H 1.0\n", - "4 0\n", - "C Si 1.0\n", - "4 1\n", - "C H 1.0\n", - "4 12\n", - "C H 1.0\n", - "4 24\n", - "5 C\n", - "C Si 1.0\n", - "5 1\n", - "C H 1.0\n", - "5 6\n", - "C H 1.0\n", - "5 8\n", - "C H 1.0\n", - "5 13\n", - "6 H\n", - "H C 1.0\n", - "6 5\n", - "7 H\n", - "H C 1.0\n", - "7 9\n", - "8 H\n", - "H C 1.0\n", - "8 5\n", - "9 C\n", - "C Si 1.0\n", - "9 1\n", - "C H 1.0\n", - "9 7\n", - "C H 1.0\n", - "9 10\n", - "C H 1.0\n", - "9 11\n", - "10 H\n", - "H C 1.0\n", - "10 9\n", - "11 H\n", - "H C 1.0\n", - "11 9\n", - "12 H\n", - "H C 1.0\n", - "12 4\n", - "13 H\n", - "H C 1.0\n", - "13 5\n", - "14 H\n", - "H C 1.0\n", - "14 15\n", - "15 C\n", - "C Si 1.0\n", - "15 2\n", - "C H 1.0\n", - "15 14\n", - "C H 1.0\n", - "15 16\n", - "C H 1.0\n", - "15 18\n", - "16 H\n", - "H C 1.0\n", - "16 15\n", - "17 H\n", - "H C 1.0\n", - "17 23\n", - "18 H\n", - "H C 1.0\n", - "18 15\n", - "19 C\n", - "C Si 1.0\n", - "19 2\n", - "C H 1.0\n", - "19 20\n", - "C H 1.0\n", - "19 21\n", - "C H 1.0\n", - "19 22\n", - "20 H\n", - "H C 1.0\n", - "20 19\n", - "21 H\n", - "H C 1.0\n", - "21 19\n", - "22 H\n", - "H C 1.0\n", - "22 19\n", - "23 C\n", - "C Si 1.0\n", - "23 2\n", - "C H 1.0\n", - "23 17\n", - "C H 1.0\n", - "23 25\n", - "C H 1.0\n", - "23 26\n", - "24 H\n", - "H C 1.0\n", - "24 4\n", - "25 H\n", - "H C 1.0\n", - "25 23\n", - "26 H\n", - "H C 1.0\n", - "26 23\n" - ] - }, - { - "data": { - "image/png": "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", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0 H\n", - "H C 1.0\n", - "0 19\n", - "1 N\n", - "N C 1.5\n", - "1 3\n", - "N C 1.0\n", - "1 5\n", - "N C 1.5\n", - "1 12\n", - "2 N\n", - "N C 1.5\n", - "2 3\n", - "N C 1.5\n", - "2 19\n", - "N Fe 0.5\n", - "3 C\n", - "C N 1.5\n", - "3 1\n", - "C N 1.5\n", - "3 2\n", - "C H 1.0\n", - "3 4\n", - "4 H\n", - "H C 1.0\n", - "4 3\n", - "5 C\n", - "C N 1.0\n", - "5 1\n", - "C C 1.0\n", - "5 6\n", - "C C 1.0\n", - "5 9\n", - "C C 1.0\n", - "5 15\n", - "6 C\n", - "C C 1.0\n", - "6 5\n", - "C H 1.0\n", - "6 7\n", - "C H 1.0\n", - "6 8\n", - "C H 1.0\n", - "6 18\n", - "7 H\n", - "H C 1.0\n", - "7 6\n", - "8 H\n", - "H C 1.0\n", - "8 6\n", - "9 C\n", - "C C 1.0\n", - "9 5\n", - "C H 1.0\n", - "9 10\n", - "C H 1.0\n", - "9 11\n", - "C H 1.0\n", - "9 13\n", - "10 H\n", - "H C 1.0\n", - "10 9\n", - "11 H\n", - "H C 1.0\n", - "11 9\n", - "12 C\n", - "C N 1.5\n", - "12 1\n", - "C H 1.0\n", - "12 14\n", - "C C 1.5\n", - "12 19\n", - "13 H\n", - "H C 1.0\n", - "13 9\n", - "14 H\n", - "H C 1.0\n", - "14 12\n", - "15 C\n", - "C C 1.0\n", - "15 5\n", - "C H 1.0\n", - "15 16\n", - "C H 1.0\n", - "15 17\n", - "C H 1.0\n", - "15 20\n", - "16 H\n", - "H C 1.0\n", - "16 15\n", - "17 H\n", - "H C 1.0\n", - "17 15\n", - "18 H\n", - "H C 1.0\n", - "18 6\n", - "19 C\n", - "C H 1.0\n", - "19 0\n", - "C N 1.5\n", - "19 2\n", - "C C 1.5\n", - "19 12\n", - "20 H\n", - "H C 1.0\n", - "20 15\n" - ] - }, - { - "data": { - "image/png": "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", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0 Si\n", - "Si N 1.0\n", - "0 2\n", - "Si C 1.0\n", - "0 3\n", - "Si C 1.0\n", - "0 4\n", - "Si C 1.0\n", - "0 8\n", - "1 Si\n", - "Si N 1.0\n", - "1 2\n", - "Si C 1.0\n", - "1 14\n", - "Si C 1.0\n", - "1 18\n", - "Si C 1.0\n", - "1 22\n", - "2 N\n", - "N Si 1.0\n", - "2 0\n", - "N Si 1.0\n", - "2 1\n", - "N Fe 0.5\n", - "3 C\n", - "C Si 1.0\n", - "3 0\n", - "C H 1.0\n", - "3 11\n", - "C H 1.0\n", - "3 23\n", - "C H 1.0\n", - "3 26\n", - "4 C\n", - "C Si 1.0\n", - "4 0\n", - "C H 1.0\n", - "4 5\n", - "C H 1.0\n", - "4 7\n", - "C H 1.0\n", - "4 12\n", - "5 H\n", - "H C 1.0\n", - "5 4\n", - "6 H\n", - "H C 1.0\n", - "6 8\n", - "7 H\n", - "H C 1.0\n", - "7 4\n", - "8 C\n", - "C Si 1.0\n", - "8 0\n", - "C H 1.0\n", - "8 6\n", - "C H 1.0\n", - "8 9\n", - "C H 1.0\n", - "8 10\n", - "9 H\n", - "H C 1.0\n", - "9 8\n", - "10 H\n", - "H C 1.0\n", - "10 8\n", - "11 H\n", - "H C 1.0\n", - "11 3\n", - "12 H\n", - "H C 1.0\n", - "12 4\n", - "13 H\n", - "H C 1.0\n", - "13 14\n", - "14 C\n", - "C Si 1.0\n", - "14 1\n", - "C H 1.0\n", - "14 13\n", - "C H 1.0\n", - "14 15\n", - "C H 1.0\n", - "14 17\n", - "15 H\n", - "H C 1.0\n", - "15 14\n", - "16 H\n", - "H C 1.0\n", - "16 22\n", - "17 H\n", - "H C 1.0\n", - "17 14\n", - "18 C\n", - "C Si 1.0\n", - "18 1\n", - "C H 1.0\n", - "18 19\n", - "C H 1.0\n", - "18 20\n", - "C H 1.0\n", - "18 21\n", - "19 H\n", - "H C 1.0\n", - "19 18\n", - "20 H\n", - "H C 1.0\n", - "20 18\n", - "21 H\n", - "H C 1.0\n", - "21 18\n", - "22 C\n", - "C Si 1.0\n", - "22 1\n", - "C H 1.0\n", - "22 16\n", - "C H 1.0\n", - "22 24\n", - "C H 1.0\n", - "22 25\n", - "23 H\n", - "H C 1.0\n", - "23 3\n", - "24 H\n", - "H C 1.0\n", - "24 22\n", - "25 H\n", - "H C 1.0\n", - "25 22\n", - "26 H\n", - "H C 1.0\n", - "26 3\n" - ] - }, - { - "data": { - "image/png": "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", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "newcell.create_bonds(debug=debug)" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "coord_group=[------------- Cell2mol GROUP Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = group\n", - " Number of Atoms = 1\n", - " Formula = N\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_ligand\n", - " Number of Metals = 1\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol GROUP Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = group\n", - " Number of Atoms = 1\n", - " Formula = N\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_ligand\n", - " Number of Metals = 1\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol GROUP Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = group\n", - " Number of Atoms = 1\n", - " Formula = N\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_ligand\n", - " Number of Metals = 1\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol GROUP Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = group\n", - " Number of Atoms = 1\n", - " Formula = N\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_ligand\n", - " Number of Metals = 1\n", - "---------------------------------------------------\n", - "]\n", - "self.coord_nr=4\n", - "N [9.3167019, 2.1183919, 4.3831806]\n", - "N [11.924855999999998, 4.5046029, 4.9296399]\n", - "N [12.0093553, 2.1183919, 2.8990599]\n", - "N [9.4012013, 4.5046029, 2.352600599999999]\n", - "symbols=['Fe', 'N', 'N', 'N', 'N']\n", - "positions=[[10.6630286, 3.620332, 3.6411202], [9.3167019, 2.1183919, 4.3831806], [11.924855999999998, 4.5046029, 4.9296399], [12.0093553, 2.1183919, 2.8990599], [9.4012013, 4.5046029, 2.352600599999999]]\n", - "4\n", - "[[1, 2], [1, 3], [1, 4], [1, 5]]\n", - "Fe [10.6630286, 3.620332, 3.6411202]\n", - "N [9.3167019, 2.1183919, 4.3831806]\n", - "N [11.924855999999998, 4.5046029, 4.9296399]\n", - "N [12.0093553, 2.1183919, 2.8990599]\n", - "N [9.4012013, 4.5046029, 2.352600599999999]\n", - "\n", - "The number of coordinating points (including the mid point of haptic ligands) : 4\n", - "{'Tetrahedral': 2.066, 'Square planar': 24.971, 'Seesaw': 7.573}\n", - "The most likely geometry : 'Tetrahedral' with deviation value 2.066\n", - "The type of hapticity : []\n", - "\n", - "self.coord_geometry='Tetrahedral' self.geom_deviation=2.066\n", - "[1.439, 1.299, 1.439, 1.299]\n", - "1.369\n", - "self.rel_metal_radius=1.037\n", - "coord_group=[------------- Cell2mol GROUP Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = group\n", - " Number of Atoms = 1\n", - " Formula = N\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_ligand\n", - " Number of Metals = 1\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol GROUP Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = group\n", - " Number of Atoms = 1\n", - " Formula = N\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_ligand\n", - " Number of Metals = 1\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol GROUP Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = group\n", - " Number of Atoms = 1\n", - " Formula = N\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_ligand\n", - " Number of Metals = 1\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol GROUP Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = group\n", - " Number of Atoms = 1\n", - " Formula = N\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_ligand\n", - " Number of Metals = 1\n", - "---------------------------------------------------\n", - "]\n", - "self.coord_nr=4\n", - "N [3.9377592, -2.1183919, 11.6654211]\n", - "N [6.545913200000001, -4.5046029, 12.2118804]\n", - "N [6.6304126, -2.1183919, 10.1813004]\n", - "N [4.022258600000001, -4.5046029, 9.6348411]\n", - "symbols=['Fe', 'N', 'N', 'N', 'N']\n", - "positions=[[5.2840859, -3.620332, 10.9233607], [3.9377592, -2.1183919, 11.6654211], [6.545913200000001, -4.5046029, 12.2118804], [6.6304126, -2.1183919, 10.1813004], [4.022258600000001, -4.5046029, 9.6348411]]\n", - "4\n", - "[[1, 2], [1, 3], [1, 4], [1, 5]]\n", - "Fe [5.2840859, -3.620332, 10.9233607]\n", - "N [3.9377592, -2.1183919, 11.6654211]\n", - "N [6.545913200000001, -4.5046029, 12.2118804]\n", - "N [6.6304126, -2.1183919, 10.1813004]\n", - "N [4.022258600000001, -4.5046029, 9.6348411]\n", - "\n", - "The number of coordinating points (including the mid point of haptic ligands) : 4\n", - "{'Tetrahedral': 2.066, 'Square planar': 24.971, 'Seesaw': 7.573}\n", - "The most likely geometry : 'Tetrahedral' with deviation value 2.066\n", - "The type of hapticity : []\n", - "\n", - "self.coord_geometry='Tetrahedral' self.geom_deviation=2.066\n", - "[1.439, 1.299, 1.439, 1.299]\n", - "1.369\n", - "self.rel_metal_radius=1.037\n" - ] - }, - { - "data": { - "text/plain": [ - "[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 97\n", - " Formula = H60-C26-N6-Si4-Fe\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = 0\n", - " Spin = 5\n", - " Smiles = ['[H]c1nc([H])n(C(C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H])c1[H]', '[H]C([H])([H])[Si]([N-][Si](C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H]', '[H]c1nc([H])n(C(C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H])c1[H]', '[H]C([H])([H])[Si]([N-][Si](C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H]']\n", - " Origin = cell.reconstruct\n", - " Number of Ligands = 4\n", - " Number of Metals = 1\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 97\n", - " Formula = H60-C26-N6-Si4-Fe\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = 0\n", - " Spin = 5\n", - " Smiles = ['[H]c1nc([H])n(C(C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H])c1[H]', '[H]C([H])([H])[Si]([N-][Si](C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H]', '[H]c1nc([H])n(C(C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H])c1[H]', '[H]C([H])([H])[Si]([N-][Si](C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H])(C([H])([H])[H])C([H])([H])[H]']\n", - " Origin = cell.reconstruct\n", - " Number of Ligands = 4\n", - " Number of Metals = 1\n", - " ---------------------------------------------------]" - ] - }, - "execution_count": 13, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "newcell.assign_spin(debug=debug)" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "H60-C26-N6-Si4-Fe 0 5\n", - "Fe 2.0 5\n", - "4 Tetrahedral 2.066 1.037\n", - "H60-C26-N6-Si4-Fe 0 5\n", - "Fe 2.0 5\n", - "4 Tetrahedral 2.066 1.037\n" - ] - } - ], - "source": [ - "for mol in newcell.moleclist:\n", - " if mol.iscomplex:\n", - " print(mol.formula, mol.totcharge, mol.spin)\n", - " for met in mol.metals:\n", - " print(met.label, met.charge, met.spin)\n", - " print(met.coord_nr, met.coord_geometry, met.geom_deviation, met.rel_metal_radius)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "newcell.get_unique_species(debug=debug)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "selected_cs = []\n", - "for idx, spec in enumerate(newcell.unique_species):\n", - "# print(\"doing\", spec)\n", - " if spec.subtype != \"metal\":\n", - " spec.get_protonation_states()\n", - " spec.get_possible_cs()\n", - " print(spec.formula)\n", - " selected_cs.append(list([cs.corr_total_charge for cs in spec.possible_cs]))\n", - " print(f\"{spec.protonation_states=}\")\n", - " else :\n", - " spec.get_possible_cs()\n", - " selected_cs.append(spec.possible_cs) \n", - " print(\"\")\n", - "print(selected_cs)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "final_charge_distribution = balance_charge(newcell.unique_indices, newcell.unique_species, debug=debug)" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "cell2mol", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.10.6" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/cell2mol/test/test_one_by_one_BACZUB.ipynb b/cell2mol/test/test_one_by_one_BACZUB.ipynb deleted file mode 100644 index a3f55b940..000000000 --- a/cell2mol/test/test_one_by_one_BACZUB.ipynb +++ /dev/null @@ -1,6633 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 1, - "id": "b06260dd", - "metadata": {}, - "outputs": [], - "source": [ - "infopath = \"BACZUB/BACZUB.info\"" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "bc3b2bd0", - "metadata": {}, - "outputs": [], - "source": [ - "from cell2mol.read_write import readinfo\n", - "from cell2mol.classes import cell\n", - "from cell2mol.cell_reconstruction import classify_fragments, fragments_reconstruct\n", - "from cell2mol.charge_assignment import *" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "23e75d0d", - "metadata": {}, - "outputs": [], - "source": [ - "name = \"BACZUB\"" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "6268eaa8", - "metadata": {}, - "outputs": [], - "source": [ - "debug=2" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "id": "09c5cef3", - "metadata": { - "scrolled": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "INITIATING cell object from input\n", - "MOLECULE.SPLIT COMPLEX: labels=['Hg', 'Fe', 'Cl', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H']\n", - "MOLECULE.SPLIT COMPLEX: metal_idx=[0, 1]\n", - "MOLECULE.SPLIT COMPLEX: rest_idx=[2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21]\n", - "SPLIT COMPLEX: rest labels: ['Cl', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H']\n", - "SPLIT COMPLEX: rest coord: [[-0.3928769966037601, 2.3016163714687834, 7.603055514033566], [1.088207063968434, 4.309352587547709, 1.5686258268701916], [0.7532516276954522, 5.168808941441503, 1.697896237810325], [1.0397715909633676, 3.638400052685908, 0.36499880736037693], [0.6781788850937274, 3.946031481417394, -0.4334360837404476], [1.6288999872619745, 2.4157695326489255, 0.5757421663720231], [1.7526494162892954, 1.7496592112398208, -0.06517835845721018], [2.047083955789577, 2.334447308344994, 1.9879399329449103], [2.465130185355504, 1.621375121287581, 2.4050814270710554], [1.6834475642260016, 3.552077268693482, 2.559336875419786], [1.818300816768502, 3.8056430302579254, 3.443589938489271], [-1.2757991550702044, 2.060766775585443, 3.361030684443471], [-1.867597191548076, 3.011023862021328, 2.5441285917797702], [-2.135807437165562, 3.856135539104166, 2.825481839120061], [-2.009598694552083, 2.51376054758525, 1.2025407135355277], [-2.376811986310577, 2.9553237023948453, 0.4714567928404869], [-1.478218441311459, 1.2250348551990857, 1.2351298927641328], [-1.4336568707303048, 0.6468013106959317, 0.5073048899919524], [-1.012973100540437, 0.9240043790765426, 2.5495601216512047], [-0.611698646741747, 0.1315988886657848, 2.824395533145774]]\n", - "SPLIT COMPLEX: rest indices: [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21]\n", - "SPLIT COMPLEX: rest radii: [1.02, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31]\n", - "SPLIT COMPLEX: splitting species with 20 atoms in block\n", - "labels=['Cl', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H'] 20\n", - "indices=None\n", - "SPLIT COMPLEX: received 3 blocks\n", - "PREPARING BLOCK: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]\n", - "CREATING LIGAND: H5-C5\n", - "PREPARING BLOCK: [11, 12, 13, 14, 15, 16, 17, 18, 19]\n", - "CREATING LIGAND: H4-C5\n", - "PREPARING BLOCK: [0]\n", - "CREATING LIGAND: Cl\n", - "MOLECULE.SPLIT COMPLEX: labels=['Hg', 'Fe', 'Cl', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H']\n", - "MOLECULE.SPLIT COMPLEX: metal_idx=[0, 1]\n", - "MOLECULE.SPLIT COMPLEX: rest_idx=[2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21]\n", - "SPLIT COMPLEX: rest labels: ['Cl', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H']\n", - "SPLIT COMPLEX: rest coord: [[3.729896936201694, 6.38432607195136, 3.2600042288347955], [2.2488128756294996, 4.376589855872433, 9.294433915998171], [2.5837683119024804, 3.5171335019786403, 9.165163505058038], [2.2972483486345654, 5.047542390734234, 10.498060935507986], [2.6588410545042063, 4.739910962002749, 11.29649582660881], [1.7081199523359591, 6.270172910771218, 10.287317576496338], [1.5843705233086376, 6.9362832321803225, 10.928238101325572], [1.2899359838083557, 6.351495135075149, 8.87511980992345], [0.8718897542424289, 7.064567322132563, 8.457978315797307], [1.6535723753719318, 5.133865174726661, 8.303722867448576], [1.518719122829431, 4.880299413162218, 7.419469804379092], [4.612819094668138, 6.625175667834701, 7.502029058424891], [5.20461713114601, 5.674918581398816, 8.318931151088591], [5.4728273767634965, 4.829806904315977, 8.037577903748302], [5.346618634150017, 6.172181895834893, 9.660519029332834], [5.713831925908509, 5.730618741025298, 10.391602950027876], [4.815238380909393, 7.460907588221057, 9.627929850104229], [4.770676810328238, 8.039141132724211, 10.35575485287641], [4.34999304013837, 7.7619380643436005, 8.313499621217158], [3.9487185863396794, 8.55434355475436, 8.038664209722588]]\n", - "SPLIT COMPLEX: rest indices: [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21]\n", - "SPLIT COMPLEX: rest radii: [1.02, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31]\n", - "SPLIT COMPLEX: splitting species with 20 atoms in block\n", - "labels=['Cl', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H'] 20\n", - "indices=None\n", - "SPLIT COMPLEX: received 3 blocks\n", - "PREPARING BLOCK: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]\n", - "CREATING LIGAND: H5-C5\n", - "PREPARING BLOCK: [11, 12, 13, 14, 15, 16, 17, 18, 19]\n", - "CREATING LIGAND: H4-C5\n", - "PREPARING BLOCK: [0]\n", - "CREATING LIGAND: Cl\n", - "MOLECULE.SPLIT COMPLEX: labels=['Hg', 'Cl', 'Cl', 'Cl', 'Hg', 'Cl', 'Cl', 'Cl']\n", - "MOLECULE.SPLIT COMPLEX: metal_idx=[0, 4]\n", - "MOLECULE.SPLIT COMPLEX: rest_idx=[1, 2, 3, 5, 6, 7]\n", - "SPLIT COMPLEX: rest labels: ['Cl', 'Cl', 'Cl', 'Cl', 'Cl', 'Cl']\n", - "SPLIT COMPLEX: rest coord: [[4.868492825344344, -0.5616563814600966, 5.7432996860545025], [3.2896383298805927, -1.1564793894742424, 1.8108720591361558], [2.7576337144776764, -3.8316994367601804, 5.1099833030452775], [1.3562607787141432, -0.06389919010860623, 5.119760056813859], [2.9351152741778943, 0.5309238179055397, 9.052187683732207], [3.467119889580811, 3.2061438651914775, 5.753076439823084]]\n", - "SPLIT COMPLEX: rest indices: [1, 2, 3, 5, 6, 7]\n", - "SPLIT COMPLEX: rest radii: [1.02, 1.02, 1.02, 1.02, 1.02, 1.02]\n", - "SPLIT COMPLEX: splitting species with 6 atoms in block\n", - "labels=['Cl', 'Cl', 'Cl', 'Cl', 'Cl', 'Cl'] 6\n", - "indices=None\n", - "SPLIT COMPLEX: received 6 blocks\n", - "PREPARING BLOCK: [5]\n", - "CREATING LIGAND: Cl\n", - "PREPARING BLOCK: [4]\n", - "CREATING LIGAND: Cl\n", - "PREPARING BLOCK: [3]\n", - "CREATING LIGAND: Cl\n", - "PREPARING BLOCK: [2]\n", - "CREATING LIGAND: Cl\n", - "PREPARING BLOCK: [1]\n", - "CREATING LIGAND: Cl\n", - "PREPARING BLOCK: [0]\n", - "CREATING LIGAND: Cl\n", - "LIGAND.SPLIT_LIGAND: self.indices=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]\n", - "LIGAND.SPLIT_LIGAND: conn_idx=[0, 2, 4, 6, 8]\n", - "LIGAND.SPLIT_LIGAND: conn_labels=['C', 'C', 'C', 'C', 'C']\n", - "LIGAND.SPLIT_LIGAND: conn_coord=[[1.088207063968434, 4.309352587547709, 1.5686258268701916], [1.0397715909633676, 3.638400052685908, 0.36499880736037693], [1.6288999872619745, 2.4157695326489255, 0.5757421663720231], [2.047083955789577, 2.334447308344994, 1.9879399329449103], [1.6834475642260016, 3.552077268693482, 2.559336875419786]]\n", - "LIGAND.SPLIT_LIGAND: conn_radii=[0.73, 0.73, 0.73, 0.73, 0.73]\n", - "labels=['C', 'C', 'C', 'C', 'C'] 5\n", - "indices=None\n", - "blocklist=[[0, 1, 2, 3, 4]]\n", - "LIGAND.SPLIT_LIGAND: block=[0, 1, 2, 3, 4]\n", - "LIGAND.SPLIT_LIGAND: self.indices=[0, 1, 2, 3, 4, 5, 6, 7, 8]\n", - "LIGAND.SPLIT_LIGAND: conn_idx=[0, 1, 3, 5, 7]\n", - "LIGAND.SPLIT_LIGAND: conn_labels=['C', 'C', 'C', 'C', 'C']\n", - "LIGAND.SPLIT_LIGAND: conn_coord=[[-1.2757991550702044, 2.060766775585443, 3.361030684443471], [-1.867597191548076, 3.011023862021328, 2.5441285917797702], [-2.009598694552083, 2.51376054758525, 1.2025407135355277], [-1.478218441311459, 1.2250348551990857, 1.2351298927641328], [-1.012973100540437, 0.9240043790765426, 2.5495601216512047]]\n", - "LIGAND.SPLIT_LIGAND: conn_radii=[0.73, 0.73, 0.73, 0.73, 0.73]\n", - "labels=['C', 'C', 'C', 'C', 'C'] 5\n", - "indices=None\n", - "blocklist=[[0, 1, 2, 3, 4]]\n", - "LIGAND.SPLIT_LIGAND: block=[0, 1, 2, 3, 4]\n", - "LIGAND.SPLIT_LIGAND: self.indices=[0]\n", - "LIGAND.SPLIT_LIGAND: conn_idx=[0]\n", - "LIGAND.SPLIT_LIGAND: conn_labels=['Cl']\n", - "LIGAND.SPLIT_LIGAND: conn_coord=[[-0.3928769966037601, 2.3016163714687834, 7.603055514033566]]\n", - "LIGAND.SPLIT_LIGAND: conn_radii=[1.02]\n", - "labels=['Cl'] 1\n", - "indices=None\n", - "blocklist=[[0]]\n", - "LIGAND.SPLIT_LIGAND: block=[0]\n", - "LIGAND.Get_denticity: checking connectivity of ligand H5-C5\n", - "LIGAND.Get_denticity: initial connectivity is 5\n", - "Fe : 1.32 (1.3), C : 0.73 (1.22), new_factor=1.22, thres=2.501\n", - "\tAtom 0 : C \tMetal : Fe \tdistance : 2.065 \tthres : 2.501\n", - "Fe : 1.32 (1.3), C : 0.73 (1.22), new_factor=1.22, thres=2.501\n", - "\tAtom 1 : C \tMetal : Fe \tdistance : 2.062 \tthres : 2.501\n", - "Fe : 1.32 (1.3), C : 0.73 (1.22), new_factor=1.22, thres=2.501\n", - "\tAtom 2 : C \tMetal : Fe \tdistance : 2.045 \tthres : 2.501\n", - "Fe : 1.32 (1.3), C : 0.73 (1.22), new_factor=1.22, thres=2.501\n", - "\tAtom 3 : C \tMetal : Fe \tdistance : 2.084 \tthres : 2.501\n", - "Fe : 1.32 (1.3), C : 0.73 (1.22), new_factor=1.22, thres=2.501\n", - "\tAtom 4 : C \tMetal : Fe \tdistance : 2.104 \tthres : 2.501\n", - "ratio_list=[0.826, 0.824, 0.818, 0.833, 0.841] std_dev=0.008\n", - "LIGAND.Get_denticity: final connectivity is 5\n", - "LIGAND.Get_denticity: checking connectivity of ligand H4-C5\n", - "LIGAND.Get_denticity: initial connectivity is 5\n", - "Hg : 1.32 (1.3), C : 0.73 (1.22), new_factor=1.22, thres=2.501\n", - "\tAtom 0 : C \tMetal : Hg \tdistance : 2.042 \tthres : 2.501\n", - "Fe : 1.32 (1.3), C : 0.73 (1.22), new_factor=1.22, thres=2.501\n", - "\tAtom 1 : C \tMetal : Fe \tdistance : 2.051 \tthres : 2.501\n", - "Fe : 1.32 (1.3), C : 0.73 (1.22), new_factor=1.22, thres=2.501\n", - "\tAtom 2 : C \tMetal : Fe \tdistance : 2.081 \tthres : 2.501\n", - "Fe : 1.32 (1.3), C : 0.73 (1.22), new_factor=1.22, thres=2.501\n", - "\tAtom 3 : C \tMetal : Fe \tdistance : 2.068 \tthres : 2.501\n", - "Fe : 1.32 (1.3), C : 0.73 (1.22), new_factor=1.22, thres=2.501\n", - "\tAtom 4 : C \tMetal : Fe \tdistance : 2.077 \tthres : 2.501\n", - "ratio_list=[0.816, 0.82, 0.832, 0.827, 0.83] std_dev=0.006\n", - "LIGAND.Get_denticity: final connectivity is 6\n", - "LIGAND.Get_denticity: checking connectivity of ligand Cl\n", - "LIGAND.Get_denticity: initial connectivity is 1\n", - "Entering COORD_CORR_NONHAPTIC:\n", - "\tmconnec=1 in atom idx=0, label=Cl\n", - "\tevaluating coordination with metal \n", - "------------- Cell2mol METAL Object --------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Sub-Type = metal\n", - " Label = Hg\n", - " Atomic Number = 80\n", - " Index in Molecule = 0\n", - " Metal Adjacency (mconnec) = 2\n", - " Regular Adjacencies (connec) = 2\n", - "----------------------------------------------------\n", - "\n", - "ADD_ATOM: Metalist length 1\n", - "ADD_ATOM: Ligand Atoms 1\n", - "ADD_ATOM: site= 0\n", - "ADD_ATOM: evaluating apos=array([-0.392877 , 2.30161637, 7.60305551]) and tgt.coord=[-0.8781947965901001, 2.1910412897789047, 5.359507785338963]\n", - "ADD_ATOM: received tmpconnec[posadded]=1\n", - "ADD_ATOM: Chosen Metal index None. H is added at site 0\n", - "\tconnectivity verified for atom 0 with label Cl\n", - "LIGAND.Get_denticity: final connectivity is 1\n", - "GROUP.SPLIT_GROUP: conn_idx=[0]\n", - "GROUP.SPLIT_GROUP: conn_labels=['C']\n", - "GROUP.SPLIT_GROUP: conn_coord=[[-1.2757991550702044, 2.060766775585443, 3.361030684443471]]\n", - "GROUP.SPLIT_GROUP: conn_radii=[0.73]\n", - "blocklist=[[0]]\n", - "GROUP.SPLIT_GROUP: block=[0]\n", - "ADD_ATOM: Metalist length 1\n", - "ADD_ATOM: Ligand Atoms 9\n", - "ADD_ATOM: site= 0\n", - "ADD_ATOM: evaluating apos=array([-1.27579916, 2.06076678, 3.36103068]) and tgt.coord=[-0.8781947965901001, 2.1910412897789047, 5.359507785338963]\n", - "ADD_ATOM: received tmpconnec[posadded]=1\n", - "ADD_ATOM: Chosen Metal index None. H is added at site 0\n", - "ADD_ATOM: Metalist length 1\n", - "ADD_ATOM: Ligand Atoms 9\n", - "ADD_ATOM: site= 0\n", - "ADD_ATOM: evaluating apos=array([-1.27579916, 2.06076678, 3.36103068]) and tgt.coord=[-0.8781947965901001, 2.1910412897789047, 5.359507785338963]\n", - "ADD_ATOM: received tmpconnec[posadded]=1\n", - "ADD_ATOM: Chosen Metal index None. H is added at site 0\n", - "coord_group=[------------- Cell2mol GROUP Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = group\n", - " Number of Atoms = 1\n", - " Formula = C\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_group\n", - " Number of Metals = 2\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol GROUP Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = group\n", - " Number of Atoms = 1\n", - " Formula = Cl\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_ligand\n", - " Number of Metals = 1\n", - "---------------------------------------------------\n", - "]\n", - "self.coord_nr=2\n", - "C [-1.2757991550702044, 2.060766775585443, 3.361030684443471]\n", - "Cl [-0.3928769966037601, 2.3016163714687834, 7.603055514033566]\n", - "symbols=['Hg', 'C', 'Cl']\n", - "positions=[[-0.8781947965901001, 2.1910412897789047, 5.359507785338963], [-1.2757991550702044, 2.060766775585443, 3.361030684443471], [-0.3928769966037601, 2.3016163714687834, 7.603055514033566]]\n", - "2\n", - "[[1, 2], [1, 3]]\n", - "Hg [-0.8781947965901001, 2.1910412897789047, 5.359507785338963]\n", - "C [-1.2757991550702044, 2.060766775585443, 3.361030684443471]\n", - "Cl [-0.3928769966037601, 2.3016163714687834, 7.603055514033566]\n", - "\n", - "The number of coordinating points (including the mid point of haptic ligands) : 2\n", - "{'Linear': 0.12, 'Bent (V-shape, 109.47°)': 13.912, 'Bent (L-shape, 90°)': 24.491}\n", - "The most likely geometry : 'Linear' with deviation value 0.12\n", - "The type of hapticity : []\n", - "\n", - "self.coord_geometry='Linear' self.geom_deviation=0.12\n", - "[1.312, 1.278]\n", - "1.295\n", - "self.rel_metal_radius=0.981\n", - "coord_group=[------------- Cell2mol GROUP Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = group\n", - " Number of Atoms = 5\n", - " Formula = C5\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_ligand\n", - " Number of Metals = 1\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol GROUP Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = group\n", - " Number of Atoms = 5\n", - " Formula = C5\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_ligand\n", - " Number of Metals = 2\n", - "---------------------------------------------------\n", - "]\n", - "self.coord_nr=2\n", - "group.haptic_type=['h5-Cp']\n", - "[[1.088207063968434, 4.309352587547709, 1.5686258268701916], [1.0397715909633676, 3.638400052685908, 0.36499880736037693], [1.6288999872619745, 2.4157695326489255, 0.5757421663720231], [2.047083955789577, 2.334447308344994, 1.9879399329449103], [1.6834475642260016, 3.552077268693482, 2.559336875419786]]\n", - "[1.497482 3.2500093 1.4113287]\n", - "mid point of group.haptic_type=['h5-Cp'] [1.497482 3.2500093 1.4113287]\n", - "group.haptic_type=['h5-Cp']\n", - "[[-1.2757991550702044, 2.060766775585443, 3.361030684443471], [-1.867597191548076, 3.011023862021328, 2.5441285917797702], [-2.009598694552083, 2.51376054758525, 1.2025407135355277], [-1.478218441311459, 1.2250348551990857, 1.2351298927641328], [-1.012973100540437, 0.9240043790765426, 2.5495601216512047]]\n", - "[-1.5288373 1.9469181 2.178478 ]\n", - "mid point of group.haptic_type=['h5-Cp'] [-1.5288373 1.9469181 2.178478 ]\n", - "symbols=['Fe', \"['h5-Cp']\", \"['h5-Cp']\"]\n", - "positions=[[-0.012571507575537655, 2.5762878951295587, 1.785452499337844], [1.497482, 3.2500093, 1.4113287], [-1.5288373, 1.9469181, 2.178478]]\n", - "2\n", - "[[1, 2], [1, 3]]\n", - "Fe [-0.012571507575537655, 2.5762878951295587, 1.785452499337844]\n", - "['h5-Cp'] [1.497482, 3.2500093, 1.4113287]\n", - "['h5-Cp'] [-1.5288373, 1.9469181, 2.178478]\n", - "\n", - "The number of coordinating points (including the mid point of haptic ligands) : 2\n", - "{'Linear': 0.007, 'Bent (V-shape, 109.47°)': 13.717, 'Bent (L-shape, 90°)': 24.293}\n", - "The most likely geometry : 'Linear' with deviation value 0.007\n", - "The type of hapticity : [['h5-Cp'], ['h5-Cp']]\n", - "\n", - "self.coord_geometry='Linear' self.geom_deviation=0.007\n", - "[0.965, 0.958]\n", - "0.962\n", - "self.rel_metal_radius=0.729\n", - "LIGAND.SPLIT_LIGAND: self.indices=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]\n", - "LIGAND.SPLIT_LIGAND: conn_idx=[0, 2, 4, 6, 8]\n", - "LIGAND.SPLIT_LIGAND: conn_labels=['C', 'C', 'C', 'C', 'C']\n", - "LIGAND.SPLIT_LIGAND: conn_coord=[[2.2488128756294996, 4.376589855872433, 9.294433915998171], [2.2972483486345654, 5.047542390734234, 10.498060935507986], [1.7081199523359591, 6.270172910771218, 10.287317576496338], [1.2899359838083557, 6.351495135075149, 8.87511980992345], [1.6535723753719318, 5.133865174726661, 8.303722867448576]]\n", - "LIGAND.SPLIT_LIGAND: conn_radii=[0.73, 0.73, 0.73, 0.73, 0.73]\n", - "labels=['C', 'C', 'C', 'C', 'C'] 5\n", - "indices=None\n", - "blocklist=[[0, 1, 2, 3, 4]]\n", - "LIGAND.SPLIT_LIGAND: block=[0, 1, 2, 3, 4]\n", - "LIGAND.SPLIT_LIGAND: self.indices=[0, 1, 2, 3, 4, 5, 6, 7, 8]\n", - "LIGAND.SPLIT_LIGAND: conn_idx=[0, 1, 3, 5, 7]\n", - "LIGAND.SPLIT_LIGAND: conn_labels=['C', 'C', 'C', 'C', 'C']\n", - "LIGAND.SPLIT_LIGAND: conn_coord=[[4.612819094668138, 6.625175667834701, 7.502029058424891], [5.20461713114601, 5.674918581398816, 8.318931151088591], [5.346618634150017, 6.172181895834893, 9.660519029332834], [4.815238380909393, 7.460907588221057, 9.627929850104229], [4.34999304013837, 7.7619380643436005, 8.313499621217158]]\n", - "LIGAND.SPLIT_LIGAND: conn_radii=[0.73, 0.73, 0.73, 0.73, 0.73]\n", - "labels=['C', 'C', 'C', 'C', 'C'] 5\n", - "indices=None\n", - "blocklist=[[0, 1, 2, 3, 4]]\n", - "LIGAND.SPLIT_LIGAND: block=[0, 1, 2, 3, 4]\n", - "LIGAND.SPLIT_LIGAND: self.indices=[0]\n", - "LIGAND.SPLIT_LIGAND: conn_idx=[0]\n", - "LIGAND.SPLIT_LIGAND: conn_labels=['Cl']\n", - "LIGAND.SPLIT_LIGAND: conn_coord=[[3.729896936201694, 6.38432607195136, 3.2600042288347955]]\n", - "LIGAND.SPLIT_LIGAND: conn_radii=[1.02]\n", - "labels=['Cl'] 1\n", - "indices=None\n", - "blocklist=[[0]]\n", - "LIGAND.SPLIT_LIGAND: block=[0]\n", - "LIGAND.Get_denticity: checking connectivity of ligand H5-C5\n", - "LIGAND.Get_denticity: initial connectivity is 5\n", - "Fe : 1.32 (1.3), C : 0.73 (1.22), new_factor=1.22, thres=2.501\n", - "\tAtom 0 : C \tMetal : Fe \tdistance : 2.065 \tthres : 2.501\n", - "Fe : 1.32 (1.3), C : 0.73 (1.22), new_factor=1.22, thres=2.501\n", - "\tAtom 1 : C \tMetal : Fe \tdistance : 2.062 \tthres : 2.501\n", - "Fe : 1.32 (1.3), C : 0.73 (1.22), new_factor=1.22, thres=2.501\n", - "\tAtom 2 : C \tMetal : Fe \tdistance : 2.045 \tthres : 2.501\n", - "Fe : 1.32 (1.3), C : 0.73 (1.22), new_factor=1.22, thres=2.501\n", - "\tAtom 3 : C \tMetal : Fe \tdistance : 2.084 \tthres : 2.501\n", - "Fe : 1.32 (1.3), C : 0.73 (1.22), new_factor=1.22, thres=2.501\n", - "\tAtom 4 : C \tMetal : Fe \tdistance : 2.104 \tthres : 2.501\n", - "ratio_list=[0.826, 0.824, 0.818, 0.833, 0.841] std_dev=0.008\n", - "LIGAND.Get_denticity: final connectivity is 5\n", - "LIGAND.Get_denticity: checking connectivity of ligand H4-C5\n", - "LIGAND.Get_denticity: initial connectivity is 5\n", - "Hg : 1.32 (1.3), C : 0.73 (1.22), new_factor=1.22, thres=2.501\n", - "\tAtom 0 : C \tMetal : Hg \tdistance : 2.042 \tthres : 2.501\n", - "Fe : 1.32 (1.3), C : 0.73 (1.22), new_factor=1.22, thres=2.501\n", - "\tAtom 1 : C \tMetal : Fe \tdistance : 2.051 \tthres : 2.501\n", - "Fe : 1.32 (1.3), C : 0.73 (1.22), new_factor=1.22, thres=2.501\n", - "\tAtom 2 : C \tMetal : Fe \tdistance : 2.081 \tthres : 2.501\n", - "Fe : 1.32 (1.3), C : 0.73 (1.22), new_factor=1.22, thres=2.501\n", - "\tAtom 3 : C \tMetal : Fe \tdistance : 2.068 \tthres : 2.501\n", - "Fe : 1.32 (1.3), C : 0.73 (1.22), new_factor=1.22, thres=2.501\n", - "\tAtom 4 : C \tMetal : Fe \tdistance : 2.077 \tthres : 2.501\n", - "ratio_list=[0.816, 0.82, 0.832, 0.827, 0.83] std_dev=0.006\n", - "LIGAND.Get_denticity: final connectivity is 6\n", - "LIGAND.Get_denticity: checking connectivity of ligand Cl\n", - "LIGAND.Get_denticity: initial connectivity is 1\n", - "Entering COORD_CORR_NONHAPTIC:\n", - "\tmconnec=1 in atom idx=0, label=Cl\n", - "\tevaluating coordination with metal \n", - "------------- Cell2mol METAL Object --------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Sub-Type = metal\n", - " Label = Hg\n", - " Atomic Number = 80\n", - " Index in Molecule = 0\n", - " Metal Adjacency (mconnec) = 2\n", - " Regular Adjacencies (connec) = 2\n", - "----------------------------------------------------\n", - "\n", - "ADD_ATOM: Metalist length 1\n", - "ADD_ATOM: Ligand Atoms 1\n", - "ADD_ATOM: site= 0\n", - "ADD_ATOM: evaluating apos=array([3.72989694, 6.38432607, 3.26000423]) and tgt.coord=[4.215214736188033, 6.494901153641239, 5.503551957529399]\n", - "ADD_ATOM: received tmpconnec[posadded]=1\n", - "ADD_ATOM: Chosen Metal index None. H is added at site 0\n", - "\tconnectivity verified for atom 0 with label Cl\n", - "LIGAND.Get_denticity: final connectivity is 1\n", - "GROUP.SPLIT_GROUP: conn_idx=[0]\n", - "GROUP.SPLIT_GROUP: conn_labels=['C']\n", - "GROUP.SPLIT_GROUP: conn_coord=[[4.612819094668138, 6.625175667834701, 7.502029058424891]]\n", - "GROUP.SPLIT_GROUP: conn_radii=[0.73]\n", - "blocklist=[[0]]\n", - "GROUP.SPLIT_GROUP: block=[0]\n", - "ADD_ATOM: Metalist length 1\n", - "ADD_ATOM: Ligand Atoms 9\n", - "ADD_ATOM: site= 0\n", - "ADD_ATOM: evaluating apos=array([4.61281909, 6.62517567, 7.50202906]) and tgt.coord=[4.215214736188033, 6.494901153641239, 5.503551957529399]\n", - "ADD_ATOM: received tmpconnec[posadded]=1\n", - "ADD_ATOM: Chosen Metal index None. H is added at site 0\n", - "ADD_ATOM: Metalist length 1\n", - "ADD_ATOM: Ligand Atoms 9\n", - "ADD_ATOM: site= 0\n", - "ADD_ATOM: evaluating apos=array([4.61281909, 6.62517567, 7.50202906]) and tgt.coord=[4.215214736188033, 6.494901153641239, 5.503551957529399]\n", - "ADD_ATOM: received tmpconnec[posadded]=1\n", - "ADD_ATOM: Chosen Metal index None. H is added at site 0\n", - "coord_group=[------------- Cell2mol GROUP Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = group\n", - " Number of Atoms = 1\n", - " Formula = C\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_group\n", - " Number of Metals = 2\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol GROUP Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = group\n", - " Number of Atoms = 1\n", - " Formula = Cl\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_ligand\n", - " Number of Metals = 1\n", - "---------------------------------------------------\n", - "]\n", - "self.coord_nr=2\n", - "C [4.612819094668138, 6.625175667834701, 7.502029058424891]\n", - "Cl [3.729896936201694, 6.38432607195136, 3.2600042288347955]\n", - "symbols=['Hg', 'C', 'Cl']\n", - "positions=[[4.215214736188033, 6.494901153641239, 5.503551957529399], [4.612819094668138, 6.625175667834701, 7.502029058424891], [3.729896936201694, 6.38432607195136, 3.2600042288347955]]\n", - "2\n", - "[[1, 2], [1, 3]]\n", - "Hg [4.215214736188033, 6.494901153641239, 5.503551957529399]\n", - "C [4.612819094668138, 6.625175667834701, 7.502029058424891]\n", - "Cl [3.729896936201694, 6.38432607195136, 3.2600042288347955]\n", - "\n", - "The number of coordinating points (including the mid point of haptic ligands) : 2\n", - "{'Linear': 0.12, 'Bent (V-shape, 109.47°)': 13.912, 'Bent (L-shape, 90°)': 24.491}\n", - "The most likely geometry : 'Linear' with deviation value 0.12\n", - "The type of hapticity : []\n", - "\n", - "self.coord_geometry='Linear' self.geom_deviation=0.12\n", - "[1.312, 1.278]\n", - "1.295\n", - "self.rel_metal_radius=0.981\n", - "coord_group=[------------- Cell2mol GROUP Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = group\n", - " Number of Atoms = 5\n", - " Formula = C5\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_ligand\n", - " Number of Metals = 1\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol GROUP Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = group\n", - " Number of Atoms = 5\n", - " Formula = C5\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_ligand\n", - " Number of Metals = 2\n", - "---------------------------------------------------\n", - "]\n", - "self.coord_nr=2\n", - "group.haptic_type=['h5-Cp']\n", - "[[2.2488128756294996, 4.376589855872433, 9.294433915998171], [2.2972483486345654, 5.047542390734234, 10.498060935507986], [1.7081199523359591, 6.270172910771218, 10.287317576496338], [1.2899359838083557, 6.351495135075149, 8.87511980992345], [1.6535723753719318, 5.133865174726661, 8.303722867448576]]\n", - "[1.8395379 5.4359331 9.451731 ]\n", - "mid point of group.haptic_type=['h5-Cp'] [1.8395379 5.4359331 9.451731 ]\n", - "group.haptic_type=['h5-Cp']\n", - "[[4.612819094668138, 6.625175667834701, 7.502029058424891], [5.20461713114601, 5.674918581398816, 8.318931151088591], [5.346618634150017, 6.172181895834893, 9.660519029332834], [4.815238380909393, 7.460907588221057, 9.627929850104229], [4.34999304013837, 7.7619380643436005, 8.313499621217158]]\n", - "[4.8658573 6.7390244 8.6845817]\n", - "mid point of group.haptic_type=['h5-Cp'] [4.8658573 6.7390244 8.6845817]\n", - "symbols=['Fe', \"['h5-Cp']\", \"['h5-Cp']\"]\n", - "positions=[[3.34959144717347, 6.109654548290584, 9.077607243530519], [1.8395379, 5.4359331, 9.451731], [4.8658573, 6.7390244, 8.6845817]]\n", - "2\n", - "[[1, 2], [1, 3]]\n", - "Fe [3.34959144717347, 6.109654548290584, 9.077607243530519]\n", - "['h5-Cp'] [1.8395379, 5.4359331, 9.451731]\n", - "['h5-Cp'] [4.8658573, 6.7390244, 8.6845817]\n", - "\n", - "The number of coordinating points (including the mid point of haptic ligands) : 2\n", - "{'Linear': 0.007, 'Bent (V-shape, 109.47°)': 13.717, 'Bent (L-shape, 90°)': 24.293}\n", - "The most likely geometry : 'Linear' with deviation value 0.007\n", - "The type of hapticity : [['h5-Cp'], ['h5-Cp']]\n", - "\n", - "self.coord_geometry='Linear' self.geom_deviation=0.007\n", - "[0.965, 0.958]\n", - "0.962\n", - "self.rel_metal_radius=0.729\n", - "LIGAND.SPLIT_LIGAND: self.indices=[0]\n", - "LIGAND.SPLIT_LIGAND: conn_idx=[0]\n", - "LIGAND.SPLIT_LIGAND: conn_labels=['Cl']\n", - "LIGAND.SPLIT_LIGAND: conn_coord=[[3.467119889580811, 3.2061438651914775, 5.753076439823084]]\n", - "LIGAND.SPLIT_LIGAND: conn_radii=[1.02]\n", - "labels=['Cl'] 1\n", - "indices=None\n", - "blocklist=[[0]]\n", - "LIGAND.SPLIT_LIGAND: block=[0]\n", - "LIGAND.SPLIT_LIGAND: self.indices=[0]\n", - "LIGAND.SPLIT_LIGAND: conn_idx=[0]\n", - "LIGAND.SPLIT_LIGAND: conn_labels=['Cl']\n", - "LIGAND.SPLIT_LIGAND: conn_coord=[[2.9351152741778943, 0.5309238179055397, 9.052187683732207]]\n", - "LIGAND.SPLIT_LIGAND: conn_radii=[1.02]\n", - "labels=['Cl'] 1\n", - "indices=None\n", - "blocklist=[[0]]\n", - "LIGAND.SPLIT_LIGAND: block=[0]\n", - "LIGAND.SPLIT_LIGAND: self.indices=[0]\n", - "LIGAND.SPLIT_LIGAND: conn_idx=[0]\n", - "LIGAND.SPLIT_LIGAND: conn_labels=['Cl']\n", - "LIGAND.SPLIT_LIGAND: conn_coord=[[1.3562607787141432, -0.06389919010860623, 5.119760056813859]]\n", - "LIGAND.SPLIT_LIGAND: conn_radii=[1.02]\n", - "labels=['Cl'] 1\n", - "indices=None\n", - "blocklist=[[0]]\n", - "LIGAND.SPLIT_LIGAND: block=[0]\n", - "LIGAND.SPLIT_LIGAND: self.indices=[0]\n", - "LIGAND.SPLIT_LIGAND: conn_idx=[0]\n", - "LIGAND.SPLIT_LIGAND: conn_labels=['Cl']\n", - "LIGAND.SPLIT_LIGAND: conn_coord=[[2.7576337144776764, -3.8316994367601804, 5.1099833030452775]]\n", - "LIGAND.SPLIT_LIGAND: conn_radii=[1.02]\n", - "labels=['Cl'] 1\n", - "indices=None\n", - "blocklist=[[0]]\n", - "LIGAND.SPLIT_LIGAND: block=[0]\n", - "LIGAND.SPLIT_LIGAND: self.indices=[0]\n", - "LIGAND.SPLIT_LIGAND: conn_idx=[0]\n", - "LIGAND.SPLIT_LIGAND: conn_labels=['Cl']\n", - "LIGAND.SPLIT_LIGAND: conn_coord=[[3.2896383298805927, -1.1564793894742424, 1.8108720591361558]]\n", - "LIGAND.SPLIT_LIGAND: conn_radii=[1.02]\n", - "labels=['Cl'] 1\n", - "indices=None\n", - "blocklist=[[0]]\n", - "LIGAND.SPLIT_LIGAND: block=[0]\n", - "LIGAND.SPLIT_LIGAND: self.indices=[0]\n", - "LIGAND.SPLIT_LIGAND: conn_idx=[0]\n", - "LIGAND.SPLIT_LIGAND: conn_labels=['Cl']\n", - "LIGAND.SPLIT_LIGAND: conn_coord=[[4.868492825344344, -0.5616563814600966, 5.7432996860545025]]\n", - "LIGAND.SPLIT_LIGAND: conn_radii=[1.02]\n", - "labels=['Cl'] 1\n", - "indices=None\n", - "blocklist=[[0]]\n", - "LIGAND.SPLIT_LIGAND: block=[0]\n", - "LIGAND.Get_denticity: checking connectivity of ligand Cl\n", - "LIGAND.Get_denticity: initial connectivity is 1\n", - "Entering COORD_CORR_NONHAPTIC:\n", - "\tmconnec=1 in atom idx=0, label=Cl\n", - "\tevaluating coordination with metal \n", - "------------- Cell2mol METAL Object --------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Sub-Type = metal\n", - " Label = Hg\n", - " Atomic Number = 80\n", - " Index in Molecule = 4\n", - " Metal Adjacency (mconnec) = 4\n", - " Regular Adjacencies (connec) = 4\n", - "----------------------------------------------------\n", - "\n", - "ADD_ATOM: Metalist length 1\n", - "ADD_ATOM: Ligand Atoms 1\n", - "ADD_ATOM: site= 0\n", - "ADD_ATOM: evaluating apos=array([3.46711989, 3.20614387, 5.75307644]) and tgt.coord=[2.8686394779212936, 1.1205049951190558, 6.780721891498431]\n", - "ADD_ATOM: received tmpconnec[posadded]=1\n", - "ADD_ATOM: Chosen Metal index None. H is added at site 0\n", - "\tconnectivity verified for atom 0 with label Cl\n", - "LIGAND.Get_denticity: final connectivity is 1\n", - "LIGAND.Get_denticity: checking connectivity of ligand Cl\n", - "LIGAND.Get_denticity: initial connectivity is 1\n", - "Entering COORD_CORR_NONHAPTIC:\n", - "\tmconnec=1 in atom idx=0, label=Cl\n", - "\tevaluating coordination with metal \n", - "------------- Cell2mol METAL Object --------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Sub-Type = metal\n", - " Label = Hg\n", - " Atomic Number = 80\n", - " Index in Molecule = 4\n", - " Metal Adjacency (mconnec) = 4\n", - " Regular Adjacencies (connec) = 4\n", - "----------------------------------------------------\n", - "\n", - "ADD_ATOM: Metalist length 1\n", - "ADD_ATOM: Ligand Atoms 1\n", - "ADD_ATOM: site= 0\n", - "ADD_ATOM: evaluating apos=array([2.93511527, 0.53092382, 9.05218768]) and tgt.coord=[2.8686394779212936, 1.1205049951190558, 6.780721891498431]\n", - "ADD_ATOM: received tmpconnec[posadded]=1\n", - "ADD_ATOM: Chosen Metal index None. H is added at site 0\n", - "\tconnectivity verified for atom 0 with label Cl\n", - "LIGAND.Get_denticity: final connectivity is 1\n", - "LIGAND.Get_denticity: checking connectivity of ligand Cl\n", - "LIGAND.Get_denticity: initial connectivity is 1\n", - "Entering COORD_CORR_NONHAPTIC:\n", - "\tmconnec=2 in atom idx=0, label=Cl\n", - "\tevaluating coordination with metal \n", - "------------- Cell2mol METAL Object --------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Sub-Type = metal\n", - " Label = Hg\n", - " Atomic Number = 80\n", - " Index in Molecule = 0\n", - " Metal Adjacency (mconnec) = 4\n", - " Regular Adjacencies (connec) = 4\n", - "----------------------------------------------------\n", - "\n", - "ADD_ATOM: Metalist length 1\n", - "ADD_ATOM: Ligand Atoms 1\n", - "ADD_ATOM: site= 0\n", - "ADD_ATOM: evaluating apos=array([ 1.35626078, -0.06389919, 5.11976006]) and tgt.coord=[2.8686394779212936, 1.1205049951190558, 6.780721891498431]\n", - "ADD_ATOM: received tmpconnec[posadded]=1\n", - "ADD_ATOM: Chosen Metal index None. H is added at site 0\n", - "\tconnectivity verified for atom 0 with label Cl\n", - "\tevaluating coordination with metal \n", - "------------- Cell2mol METAL Object --------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Sub-Type = metal\n", - " Label = Hg\n", - " Atomic Number = 80\n", - " Index in Molecule = 4\n", - " Metal Adjacency (mconnec) = 4\n", - " Regular Adjacencies (connec) = 4\n", - "----------------------------------------------------\n", - "\n", - "ADD_ATOM: Metalist length 1\n", - "ADD_ATOM: Ligand Atoms 1\n", - "ADD_ATOM: site= 0\n", - "ADD_ATOM: evaluating apos=array([ 1.35626078, -0.06389919, 5.11976006]) and tgt.coord=[2.8686394779212936, 1.1205049951190558, 6.780721891498431]\n", - "ADD_ATOM: received tmpconnec[posadded]=1\n", - "ADD_ATOM: Chosen Metal index None. H is added at site 0\n", - "\tconnectivity verified for atom 0 with label Cl\n", - "LIGAND.Get_denticity: final connectivity is 2\n", - "LIGAND.Get_denticity: checking connectivity of ligand Cl\n", - "LIGAND.Get_denticity: initial connectivity is 1\n", - "Entering COORD_CORR_NONHAPTIC:\n", - "\tmconnec=1 in atom idx=0, label=Cl\n", - "\tevaluating coordination with metal \n", - "------------- Cell2mol METAL Object --------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Sub-Type = metal\n", - " Label = Hg\n", - " Atomic Number = 80\n", - " Index in Molecule = 0\n", - " Metal Adjacency (mconnec) = 4\n", - " Regular Adjacencies (connec) = 4\n", - "----------------------------------------------------\n", - "\n", - "ADD_ATOM: Metalist length 1\n", - "ADD_ATOM: Ligand Atoms 1\n", - "ADD_ATOM: site= 0\n", - "ADD_ATOM: evaluating apos=array([ 2.75763371, -3.83169944, 5.1099833 ]) and tgt.coord=[3.3561141261371934, -1.7460605666877584, 4.082337851369931]\n", - "ADD_ATOM: received tmpconnec[posadded]=1\n", - "ADD_ATOM: Chosen Metal index None. H is added at site 0\n", - "\tconnectivity verified for atom 0 with label Cl\n", - "LIGAND.Get_denticity: final connectivity is 1\n", - "LIGAND.Get_denticity: checking connectivity of ligand Cl\n", - "LIGAND.Get_denticity: initial connectivity is 1\n", - "Entering COORD_CORR_NONHAPTIC:\n", - "\tmconnec=1 in atom idx=0, label=Cl\n", - "\tevaluating coordination with metal \n", - "------------- Cell2mol METAL Object --------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Sub-Type = metal\n", - " Label = Hg\n", - " Atomic Number = 80\n", - " Index in Molecule = 0\n", - " Metal Adjacency (mconnec) = 4\n", - " Regular Adjacencies (connec) = 4\n", - "----------------------------------------------------\n", - "\n", - "ADD_ATOM: Metalist length 1\n", - "ADD_ATOM: Ligand Atoms 1\n", - "ADD_ATOM: site= 0\n", - "ADD_ATOM: evaluating apos=array([ 3.28963833, -1.15647939, 1.81087206]) and tgt.coord=[3.3561141261371934, -1.7460605666877584, 4.082337851369931]\n", - "ADD_ATOM: received tmpconnec[posadded]=1\n", - "ADD_ATOM: Chosen Metal index None. H is added at site 0\n", - "\tconnectivity verified for atom 0 with label Cl\n", - "LIGAND.Get_denticity: final connectivity is 1\n", - "LIGAND.Get_denticity: checking connectivity of ligand Cl\n", - "LIGAND.Get_denticity: initial connectivity is 1\n", - "Entering COORD_CORR_NONHAPTIC:\n", - "\tmconnec=2 in atom idx=0, label=Cl\n", - "\tevaluating coordination with metal \n", - "------------- Cell2mol METAL Object --------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Sub-Type = metal\n", - " Label = Hg\n", - " Atomic Number = 80\n", - " Index in Molecule = 0\n", - " Metal Adjacency (mconnec) = 4\n", - " Regular Adjacencies (connec) = 4\n", - "----------------------------------------------------\n", - "\n", - "ADD_ATOM: Metalist length 1\n", - "ADD_ATOM: Ligand Atoms 1\n", - "ADD_ATOM: site= 0\n", - "ADD_ATOM: evaluating apos=array([ 4.86849283, -0.56165638, 5.74329969]) and tgt.coord=[3.3561141261371934, -1.7460605666877584, 4.082337851369931]\n", - "ADD_ATOM: received tmpconnec[posadded]=1\n", - "ADD_ATOM: Chosen Metal index None. H is added at site 0\n", - "\tconnectivity verified for atom 0 with label Cl\n", - "\tevaluating coordination with metal \n", - "------------- Cell2mol METAL Object --------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Sub-Type = metal\n", - " Label = Hg\n", - " Atomic Number = 80\n", - " Index in Molecule = 4\n", - " Metal Adjacency (mconnec) = 4\n", - " Regular Adjacencies (connec) = 4\n", - "----------------------------------------------------\n", - "\n", - "ADD_ATOM: Metalist length 1\n", - "ADD_ATOM: Ligand Atoms 1\n", - "ADD_ATOM: site= 0\n", - "ADD_ATOM: evaluating apos=array([ 4.86849283, -0.56165638, 5.74329969]) and tgt.coord=[3.3561141261371934, -1.7460605666877584, 4.082337851369931]\n", - "ADD_ATOM: received tmpconnec[posadded]=1\n", - "ADD_ATOM: Chosen Metal index None. H is added at site 0\n", - "\tconnectivity verified for atom 0 with label Cl\n", - "LIGAND.Get_denticity: final connectivity is 2\n", - "coord_group=[------------- Cell2mol GROUP Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = group\n", - " Number of Atoms = 1\n", - " Formula = Cl\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_ligand\n", - " Number of Metals = 2\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol GROUP Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = group\n", - " Number of Atoms = 1\n", - " Formula = Cl\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_ligand\n", - " Number of Metals = 1\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol GROUP Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = group\n", - " Number of Atoms = 1\n", - " Formula = Cl\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_ligand\n", - " Number of Metals = 1\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol GROUP Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = group\n", - " Number of Atoms = 1\n", - " Formula = Cl\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_ligand\n", - " Number of Metals = 2\n", - "---------------------------------------------------\n", - "]\n", - "self.coord_nr=4\n", - "Cl [1.3562607787141432, -0.06389919010860623, 5.119760056813859]\n", - "Cl [2.7576337144776764, -3.8316994367601804, 5.1099833030452775]\n", - "Cl [3.2896383298805927, -1.1564793894742424, 1.8108720591361558]\n", - "Cl [4.868492825344344, -0.5616563814600966, 5.7432996860545025]\n", - "symbols=['Hg', 'Cl', 'Cl', 'Cl', 'Cl']\n", - "positions=[[3.3561141261371934, -1.7460605666877584, 4.082337851369931], [1.3562607787141432, -0.06389919010860623, 5.119760056813859], [2.7576337144776764, -3.8316994367601804, 5.1099833030452775], [3.2896383298805927, -1.1564793894742424, 1.8108720591361558], [4.868492825344344, -0.5616563814600966, 5.7432996860545025]]\n", - "4\n", - "[[1, 2], [1, 3], [1, 4], [1, 5]]\n", - "Hg [3.3561141261371934, -1.7460605666877584, 4.082337851369931]\n", - "Cl [1.3562607787141432, -0.06389919010860623, 5.119760056813859]\n", - "Cl [2.7576337144776764, -3.8316994367601804, 5.1099833030452775]\n", - "Cl [3.2896383298805927, -1.1564793894742424, 1.8108720591361558]\n", - "Cl [4.868492825344344, -0.5616563814600966, 5.7432996860545025]\n", - "\n", - "The number of coordinating points (including the mid point of haptic ligands) : 4\n", - "{'Tetrahedral': 1.839, 'Square planar': 29.907, 'Seesaw': 7.15}\n", - "The most likely geometry : 'Tetrahedral' with deviation value 1.839\n", - "The type of hapticity : []\n", - "\n", - "self.coord_geometry='Tetrahedral' self.geom_deviation=1.839\n", - "[1.792, 1.381, 1.328, 1.519]\n", - "1.505\n", - "self.rel_metal_radius=1.14\n", - "coord_group=[------------- Cell2mol GROUP Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = group\n", - " Number of Atoms = 1\n", - " Formula = Cl\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_ligand\n", - " Number of Metals = 1\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol GROUP Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = group\n", - " Number of Atoms = 1\n", - " Formula = Cl\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_ligand\n", - " Number of Metals = 1\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol GROUP Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = group\n", - " Number of Atoms = 1\n", - " Formula = Cl\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_ligand\n", - " Number of Metals = 2\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol GROUP Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = group\n", - " Number of Atoms = 1\n", - " Formula = Cl\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_ligand\n", - " Number of Metals = 2\n", - "---------------------------------------------------\n", - "]\n", - "self.coord_nr=4\n", - "Cl [3.467119889580811, 3.2061438651914775, 5.753076439823084]\n", - "Cl [2.9351152741778943, 0.5309238179055397, 9.052187683732207]\n", - "Cl [1.3562607787141432, -0.06389919010860623, 5.119760056813859]\n", - "Cl [4.868492825344344, -0.5616563814600966, 5.7432996860545025]\n", - "symbols=['Hg', 'Cl', 'Cl', 'Cl', 'Cl']\n", - "positions=[[2.8686394779212936, 1.1205049951190558, 6.780721891498431], [3.467119889580811, 3.2061438651914775, 5.753076439823084], [2.9351152741778943, 0.5309238179055397, 9.052187683732207], [1.3562607787141432, -0.06389919010860623, 5.119760056813859], [4.868492825344344, -0.5616563814600966, 5.7432996860545025]]\n", - "4\n", - "[[1, 2], [1, 3], [1, 4], [1, 5]]\n", - "Hg [2.8686394779212936, 1.1205049951190558, 6.780721891498431]\n", - "Cl [3.467119889580811, 3.2061438651914775, 5.753076439823084]\n", - "Cl [2.9351152741778943, 0.5309238179055397, 9.052187683732207]\n", - "Cl [1.3562607787141432, -0.06389919010860623, 5.119760056813859]\n", - "Cl [4.868492825344344, -0.5616563814600966, 5.7432996860545025]\n", - "\n", - "The number of coordinating points (including the mid point of haptic ligands) : 4\n", - "{'Tetrahedral': 1.839, 'Square planar': 29.907, 'Seesaw': 7.15}\n", - "The most likely geometry : 'Tetrahedral' with deviation value 1.839\n", - "The type of hapticity : []\n", - "\n", - "self.coord_geometry='Tetrahedral' self.geom_deviation=1.839\n", - "[1.381, 1.328, 1.519, 1.792]\n", - "1.505\n", - "self.rel_metal_radius=1.14\n" - ] - } - ], - "source": [ - "print(f\"INITIATING cell object from input\") \n", - "\n", - "# Reads reference molecules from info file, as well as labels and coordinates\n", - "labels, pos, ref_labels, ref_fracs, cellvec, cellparam = readinfo(infopath)\n", - "# Initiates cell\n", - "newcell = cell(name, labels, pos, cellvec, cellparam)\n", - "\n", - "# Loads the reference molecules and checks_missing_H\n", - "newcell.get_reference_molecules(ref_labels, ref_fracs, debug=debug) \n", - "newcell.assess_errors()" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "id": "833a86c2", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "H9-C10-Cl-Fe-Hg True ['h5-Cp']\n", - "H9-C10-Cl-Fe-Hg True ['h5-Cp']\n", - "Cl6-Hg2 False []\n" - ] - } - ], - "source": [ - "for mol in newcell.refmoleclist:\n", - " if mol.iscomplex:\n", - " print(mol.formula, mol.is_haptic, mol.haptic_type)" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "id": "eb828ca6", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "H9-C10-Cl-Fe-Hg True ['h5-Cp']\n", - "|- H5-C5\n", - "|-- C5 True ['h5-Cp']\n", - "|- H4-C5\n", - "|-- C5 True ['h5-Cp']\n", - "|- Cl\n", - "|-- Cl False []\n", - "***\n", - "Hg 2 Linear 0.12\n", - "|- C False []\n", - "|- [------------- Cell2mol METAL Object --------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Sub-Type = metal\n", - " Label = Hg\n", - " Atomic Number = 80\n", - " Index in Molecule = 0\n", - " Metal Adjacency (mconnec) = 2\n", - " Regular Adjacencies (connec) = 2\n", - "----------------------------------------------------\n", - ", ------------- Cell2mol METAL Object --------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Sub-Type = metal\n", - " Label = Fe\n", - " Atomic Number = 26\n", - " Index in Molecule = 1\n", - " Metal Adjacency (mconnec) = 10\n", - " Regular Adjacencies (connec) = 10\n", - "----------------------------------------------------\n", - "]\n", - "|- Cl False []\n", - "|- [------------- Cell2mol METAL Object --------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Sub-Type = metal\n", - " Label = Hg\n", - " Atomic Number = 80\n", - " Index in Molecule = 0\n", - " Metal Adjacency (mconnec) = 2\n", - " Regular Adjacencies (connec) = 2\n", - "----------------------------------------------------\n", - "]\n", - "***\n", - "Fe 2 Linear 0.007\n", - "|- C5 True ['h5-Cp']\n", - "|- [------------- Cell2mol METAL Object --------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Sub-Type = metal\n", - " Label = Fe\n", - " Atomic Number = 26\n", - " Index in Molecule = 1\n", - " Metal Adjacency (mconnec) = 10\n", - " Regular Adjacencies (connec) = 10\n", - "----------------------------------------------------\n", - "]\n", - "|- C5 True ['h5-Cp']\n", - "|- [------------- Cell2mol METAL Object --------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Sub-Type = metal\n", - " Label = Hg\n", - " Atomic Number = 80\n", - " Index in Molecule = 0\n", - " Metal Adjacency (mconnec) = 2\n", - " Regular Adjacencies (connec) = 2\n", - "----------------------------------------------------\n", - ", ------------- Cell2mol METAL Object --------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Sub-Type = metal\n", - " Label = Fe\n", - " Atomic Number = 26\n", - " Index in Molecule = 1\n", - " Metal Adjacency (mconnec) = 10\n", - " Regular Adjacencies (connec) = 10\n", - "----------------------------------------------------\n", - "]\n", - "H9-C10-Cl-Fe-Hg True ['h5-Cp']\n", - "|- H5-C5\n", - "|-- C5 True ['h5-Cp']\n", - "|- H4-C5\n", - "|-- C5 True ['h5-Cp']\n", - "|- Cl\n", - "|-- Cl False []\n", - "***\n", - "Hg 2 Linear 0.12\n", - "|- C False []\n", - "|- [------------- Cell2mol METAL Object --------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Sub-Type = metal\n", - " Label = Hg\n", - " Atomic Number = 80\n", - " Index in Molecule = 0\n", - " Metal Adjacency (mconnec) = 2\n", - " Regular Adjacencies (connec) = 2\n", - "----------------------------------------------------\n", - ", ------------- Cell2mol METAL Object --------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Sub-Type = metal\n", - " Label = Fe\n", - " Atomic Number = 26\n", - " Index in Molecule = 1\n", - " Metal Adjacency (mconnec) = 10\n", - " Regular Adjacencies (connec) = 10\n", - "----------------------------------------------------\n", - "]\n", - "|- Cl False []\n", - "|- [------------- Cell2mol METAL Object --------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Sub-Type = metal\n", - " Label = Hg\n", - " Atomic Number = 80\n", - " Index in Molecule = 0\n", - " Metal Adjacency (mconnec) = 2\n", - " Regular Adjacencies (connec) = 2\n", - "----------------------------------------------------\n", - "]\n", - "***\n", - "Fe 2 Linear 0.007\n", - "|- C5 True ['h5-Cp']\n", - "|- [------------- Cell2mol METAL Object --------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Sub-Type = metal\n", - " Label = Fe\n", - " Atomic Number = 26\n", - " Index in Molecule = 1\n", - " Metal Adjacency (mconnec) = 10\n", - " Regular Adjacencies (connec) = 10\n", - "----------------------------------------------------\n", - "]\n", - "|- C5 True ['h5-Cp']\n", - "|- [------------- Cell2mol METAL Object --------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Sub-Type = metal\n", - " Label = Hg\n", - " Atomic Number = 80\n", - " Index in Molecule = 0\n", - " Metal Adjacency (mconnec) = 2\n", - " Regular Adjacencies (connec) = 2\n", - "----------------------------------------------------\n", - ", ------------- Cell2mol METAL Object --------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Sub-Type = metal\n", - " Label = Fe\n", - " Atomic Number = 26\n", - " Index in Molecule = 1\n", - " Metal Adjacency (mconnec) = 10\n", - " Regular Adjacencies (connec) = 10\n", - "----------------------------------------------------\n", - "]\n", - "Cl6-Hg2 False []\n", - "|- Cl\n", - "|-- Cl False []\n", - "|- Cl\n", - "|-- Cl False []\n", - "|- Cl\n", - "|-- Cl False []\n", - "|- Cl\n", - "|-- Cl False []\n", - "|- Cl\n", - "|-- Cl False []\n", - "|- Cl\n", - "|-- Cl False []\n", - "***\n", - "Hg 4 Tetrahedral 1.839\n", - "|- Cl False []\n", - "|- [------------- Cell2mol METAL Object --------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Sub-Type = metal\n", - " Label = Hg\n", - " Atomic Number = 80\n", - " Index in Molecule = 0\n", - " Metal Adjacency (mconnec) = 4\n", - " Regular Adjacencies (connec) = 4\n", - "----------------------------------------------------\n", - ", ------------- Cell2mol METAL Object --------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Sub-Type = metal\n", - " Label = Hg\n", - " Atomic Number = 80\n", - " Index in Molecule = 4\n", - " Metal Adjacency (mconnec) = 4\n", - " Regular Adjacencies (connec) = 4\n", - "----------------------------------------------------\n", - "]\n", - "|- Cl False []\n", - "|- [------------- Cell2mol METAL Object --------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Sub-Type = metal\n", - " Label = Hg\n", - " Atomic Number = 80\n", - " Index in Molecule = 0\n", - " Metal Adjacency (mconnec) = 4\n", - " Regular Adjacencies (connec) = 4\n", - "----------------------------------------------------\n", - "]\n", - "|- Cl False []\n", - "|- [------------- Cell2mol METAL Object --------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Sub-Type = metal\n", - " Label = Hg\n", - " Atomic Number = 80\n", - " Index in Molecule = 0\n", - " Metal Adjacency (mconnec) = 4\n", - " Regular Adjacencies (connec) = 4\n", - "----------------------------------------------------\n", - "]\n", - "|- Cl False []\n", - "|- [------------- Cell2mol METAL Object --------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Sub-Type = metal\n", - " Label = Hg\n", - " Atomic Number = 80\n", - " Index in Molecule = 0\n", - " Metal Adjacency (mconnec) = 4\n", - " Regular Adjacencies (connec) = 4\n", - "----------------------------------------------------\n", - ", ------------- Cell2mol METAL Object --------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Sub-Type = metal\n", - " Label = Hg\n", - " Atomic Number = 80\n", - " Index in Molecule = 4\n", - " Metal Adjacency (mconnec) = 4\n", - " Regular Adjacencies (connec) = 4\n", - "----------------------------------------------------\n", - "]\n", - "***\n", - "Hg 4 Tetrahedral 1.839\n", - "|- Cl False []\n", - "|- [------------- Cell2mol METAL Object --------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Sub-Type = metal\n", - " Label = Hg\n", - " Atomic Number = 80\n", - " Index in Molecule = 4\n", - " Metal Adjacency (mconnec) = 4\n", - " Regular Adjacencies (connec) = 4\n", - "----------------------------------------------------\n", - "]\n", - "|- Cl False []\n", - "|- [------------- Cell2mol METAL Object --------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Sub-Type = metal\n", - " Label = Hg\n", - " Atomic Number = 80\n", - " Index in Molecule = 4\n", - " Metal Adjacency (mconnec) = 4\n", - " Regular Adjacencies (connec) = 4\n", - "----------------------------------------------------\n", - "]\n", - "|- Cl False []\n", - "|- [------------- Cell2mol METAL Object --------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Sub-Type = metal\n", - " Label = Hg\n", - " Atomic Number = 80\n", - " Index in Molecule = 0\n", - " Metal Adjacency (mconnec) = 4\n", - " Regular Adjacencies (connec) = 4\n", - "----------------------------------------------------\n", - ", ------------- Cell2mol METAL Object --------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Sub-Type = metal\n", - " Label = Hg\n", - " Atomic Number = 80\n", - " Index in Molecule = 4\n", - " Metal Adjacency (mconnec) = 4\n", - " Regular Adjacencies (connec) = 4\n", - "----------------------------------------------------\n", - "]\n", - "|- Cl False []\n", - "|- [------------- Cell2mol METAL Object --------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Sub-Type = metal\n", - " Label = Hg\n", - " Atomic Number = 80\n", - " Index in Molecule = 0\n", - " Metal Adjacency (mconnec) = 4\n", - " Regular Adjacencies (connec) = 4\n", - "----------------------------------------------------\n", - ", ------------- Cell2mol METAL Object --------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Sub-Type = metal\n", - " Label = Hg\n", - " Atomic Number = 80\n", - " Index in Molecule = 4\n", - " Metal Adjacency (mconnec) = 4\n", - " Regular Adjacencies (connec) = 4\n", - "----------------------------------------------------\n", - "]\n" - ] - } - ], - "source": [ - "for mol in newcell.refmoleclist:\n", - " if mol.iscomplex:\n", - " print(mol.formula, mol.is_haptic, mol.haptic_type)\n", - " for lig in mol.ligands:\n", - " print(\"|-\", lig.formula)\n", - " for group in lig.groups:\n", - " print(\"|--\", group.formula, group.is_haptic, group.haptic_type)\n", - " for met in mol.metals:\n", - " print(\"***\")\n", - " print(met.label, met.coord_nr, met.coord_geometry, met.geom_deviation)\n", - " for group in met.groups:\n", - " print(\"|-\", group.formula, group.is_haptic, group.haptic_type)\n", - " # print(\"|-\", group.checked_coordination, group.denticity)\n", - " print(\"|-\", group.metals)\n", - " # group.check_coordination(debug=debug)\n", - " " - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "id": "8f6d1648", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "------------- Cell2mol GROUP Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = group\n", - " Number of Atoms = 1\n", - " Formula = Cl\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_ligand\n", - " Number of Metals = 2\n", - "---------------------------------------------------" - ] - }, - "execution_count": 8, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "group" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "id": "08189053", - "metadata": {}, - "outputs": [], - "source": [ - "from cell2mol.other import *\n", - "from cell2mol.coordination_sphere import get_thres_from_two_atoms\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "c2e57e10", - "metadata": {}, - "outputs": [], - "source": [ - "def check_neighboring_atoms_mconnec (idx, group, metal, debug):\n", - " \n", - " atom = group.atoms[idx]\n", - " neighbors = [ group.atoms[j] for j in atom.adjacency ]\n", - " nb_dist_from_metal = [ get_dist(nb.coord, met.coord) for nb in neighbors]\n", - "\n", - " neighbors_mconnec =[]\n", - " for nb, dist in zip(neighbors, nb_dist_from_metal) :\n", - " thres = get_thres_from_two_atoms(metal.label, nb.label, debug=debug)\n", - " if dist > thres : pass\n", - " else : neighbors_mconnec.append(nb) \n", - "\n", - " if debug >= 2 : \n", - " print(f\"CHECK NEIGHBORS: {atom.label} connected to {[nb.label for nb in neighbors]}\")\n", - " print(f\"CHECK NEIGHBORS: Among these neighbors, {[nb_m.label for nb_m in neighbors_mconnec]}\") \n", - "\n", - " if len(neighbors_mconnec) >= 2 :\n", - " if debug >=1 : \n", - " print(f\"CHECK NEIGHBORS:[Check] This coordinating atom {atom.label} connected to more than one coordinating atoms to the metal {metal.label}\")\n", - " if set([nb_m.label for nb_m in neighbors_mconnec]) == set([\"H\"]) : \n", - " isremoved = False\n", - " else : \n", - " isremoved = True \n", - " if debug >=1 : print(\"CHECK NEIGHBORS: !!! Wrong metal-coordination assignment for Atom\", idx, atom.label, get_dist(atom.coord, metal.coord), \"due to neighboring atoms\")\n", - " \n", - " elif len(neighbors_mconnec) == 1 :\n", - " nb_m = neighbors_mconnec[0]\n", - " if debug >=1 : print(f\"CHECK NEIGHBORS: [Check] This coordinating atom {atom.label} connected to another coordinating atom {nb_m.label} to the metal {metal.label}\")\n", - "\n", - " if (atom.label == \"H\" and nb_m.label in [\"B\", \"O\", \"N\", \"C\"]) :\n", - " isremoved = True\n", - " if debug >=1 : print(\"CHECK NEIGHBORS: !!! Wrong metal-coordination assignment for Atom\", idx, atom.label, get_dist(atom.coord, metal.coord), \"due to H\")\n", - "\n", - " elif (atom.label in [\"B\", \"O\", \"N\", \"C\"] and nb_m.label == \"H\") :\n", - " isremoved = False # H will be removed later\n", - " if debug >=1 : print(\"CHECK NEIGHBORS: metal-coordination assignment for Atom\", idx, atom.label, get_dist(atom.coord, metal.coord), \"connected to H which will be removed later\")\n", - "\n", - " else : # Check angle between metal-coordinating atoms \n", - " vector1 = np.subtract(np.array(atom.coord), np.array(nb_m.coord))\n", - " vector2 = np.subtract(np.array(atom.coord), np.array(metal.coord)) \n", - " angle = np.degrees(get_angle(vector1, vector2))\n", - " if angle < 55 :\n", - " if debug >= 1 : print(\"CHECK NEIGHBORS: !!! Wrong metal-coordination assignment for Atom\", idx, atom.label, get_dist(atom.coord, metal.coord), \"due to the angle\", round(angle,2))\n", - " isremoved = True\n", - " else :\n", - " isremoved = False\n", - " else :\n", - " isremoved = False\n", - " if debug >=1 : print(f\"CHECK NEIGHBORS: There is no neighbor atom connected to the metal {metal.label}\")\n", - " \n", - " return isremoved\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "3d84f643", - "metadata": {}, - "outputs": [], - "source": [ - "for idx, atom in enumerate(group.atoms):\n", - " for met in group.metals:\n", - " neighbors = [ group.atoms[j] for j in atom.adjacency ]\n", - " nb_dist_from_metal = [ get_dist(nb.coord, met.coord) for nb in neighbors]\n", - " \n", - " neighbors_mconnec =[]\n", - " for nb, dist in zip(neighbors, nb_dist_from_metal) :\n", - " thres = get_thres_from_two_atoms(met.label, nb.label, debug=debug)\n", - " if dist > thres : pass\n", - " else : neighbors_mconnec.append(nb) \n", - " \n", - " if debug >= 2 : \n", - " print(f\"\\t\\t{atom.label} connected to {[nb.label for nb in neighbors]}\")\n", - " print(f\"\\t\\tAmong these neighbors, {[nb_m.label for nb_m in neighbors_mconnec]}\")\n", - "\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "eb7db8bd", - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "a6654c62", - "metadata": {}, - "outputs": [], - "source": [ - "## Second Correction\n", - "for idx, atom in enumerate(group.atoms):\n", - " if debug >= 1 : print(f\"\\tSecond Correction with atom {idx}\")\n", - " metal = atom.get_closest_metal()\n", - " dist = get_dist(atom.coord, metal.coord)\n", - " thres = get_thres_from_two_atoms(metal.label, atom.label, debug=debug)\n", - " if debug >= 1 : print(f\"\\tAtom {atom.label} connected to {metal.label} distance {get_dist(atom.coord, metal.coord)} with threshold {thres}\")\n", - " \n", - " neighbors = [ group.atoms[j] for j in atom.adjacency ]\n", - " nb_dist_from_metal = [ get_dist(nb.coord, metal.coord) for nb in neighbors]\n", - " neighbors_mconnec =[]\n", - "\n", - " for nb, dist in zip(neighbors, nb_dist_from_metal) :\n", - " thres = get_thres_from_two_atoms(metal.label, nb.label, debug=debug)\n", - " if dist > thres : pass\n", - " else : neighbors_mconnec.append(nb) \n", - " \n", - " if debug >= 2 : \n", - " print(f\"\\t\\t{atom.label} connected to {[nb.label for nb in neighbors]}\")\n", - " print(f\"\\t\\tAmong these neighbors, {[nb_m.label for nb_m in neighbors_mconnec]}\") \n", - "\n", - " if len(neighbors_mconnec) >= 2 :\n", - " if debug >=1 : print(f\"\\t[Check] This coordinating atom {atom.label} connected to more than one coordinating atoms to the metal {metal.label}\")\n", - " if set([nb_m.label for nb_m in neighbors_mconnec]) == set([\"H\"]) : pass # TODO : Figure out why I put this condition\n", - " else : \n", - " atom.reset_mconnec(metal, debug=debug)\n", - " group.remove_atom(idx, debug=debug)\n", - " isremoved = True \n", - " if debug >=1 : print(\"\\t!!! Wrong metal-coordination assignment for Atom\", idx, atom.label, get_dist(atom.coord, metal.coord), \"due to neighboring atoms\")\n", - "\n", - " elif len(neighbors_mconnec) == 1 :\n", - " nb_m = neighbors_mconnec[0]\n", - " if debug >=1 : print(f\"\\t[Check] This coordinating atom {atom.label} connected to another coordinating atom {nb_m.label} to the metal {metal.label}\")\n", - "\n", - " if (atom.label == \"H\" and nb_m.label in [\"B\", \"O\", \"N\", \"C\"]) :\n", - " atom.reset_mconnec(metal, debug=debug)\n", - " group.remove_atom(idx, debug=debug)\n", - "\n", - " if debug >=1 : print(\"\\t!!! Wrong metal-coordination assignment for Atom\", idx, atom.label, get_dist(atom.coord, metal.coord), \"due to H\")\n", - " elif (atom.label in [\"B\", \"O\", \"N\", \"C\"] and nb_m.label == \"H\") :\n", - " if debug >=1 : print(\"\\t!!! Wrong metal-coordination assignment for Atom\", nb_m.label, get_dist(nb_m.coord, metal.coord), \"due to H\")\n", - " nb_m.reset_mconnec() # put an index of nb_m in group\n", - " else : # Check angle between metal-coordinating atoms \n", - " vector1 = np.subtract(np.array(atom.coord), np.array(nb_m.coord))\n", - " vector2 = np.subtract(np.array(atom.coord), np.array(metal.coord)) \n", - " angle = np.degrees(get_angle(vector1, vector2))\n", - " if angle < 55 :\n", - " if debug >= 1 : print(\"\\t!!! Wrong metal-coordination assignment for Atom\", idx, atom.label, get_dist(atom.coord, metal.coord), \"due to the angle\", round(angle,2))\n", - " atom.reset_mconnec(metal, debug=debug)\n", - " group.remove_atom(idx, debug=debug)\n", - "\n", - " elif round(dist/thres, 3) > 0.95 :\n", - " if debug >=1 : print(\"\\t!!! Wrong metal-coordination assignment for Atom\", idx, atom.label , get_dist(atom.coord, metal.coord), \"due to the long distance\")\n", - " atom.reset_mconnec(metal, debug=debug)\n", - " group.remove_atom(idx, debug=debug)\n", - " else :\n", - " if debug >=1 :print(f\"\\tThere is no neighbor atom connected to the metal {metal.label}\")\n", - " pass\n" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "id": "8e7b1211", - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "##################\n", - "Checking Missing H\n", - "##################\n", - "Not a Single Molecule has Missing H atoms (apparently)\n" - ] - }, - { - "data": { - "text/plain": [ - "False" - ] - }, - "execution_count": 9, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "newcell.check_missing_H(debug=debug) " - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "id": "7e9f387f", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Hg 2 Linear 0.12 0.981\n", - "Fe 2 Linear 0.007 0.729\n", - "Hg 2 Linear 0.12 0.981\n", - "Fe 2 Linear 0.007 0.729\n", - "Hg 4 Tetrahedral 1.839 1.14\n", - "Hg 4 Tetrahedral 1.839 1.14\n" - ] - } - ], - "source": [ - "for mol in newcell.refmoleclist:\n", - " for met in mol.metals:\n", - " print(met.label, met.coord_nr, met.coord_geometry, met.geom_deviation, met.rel_metal_radius)" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "id": "93fd5a67", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "CLASSIFY_FRAGMENTS. 12 Blocks sorted as (Molec, Frag, H): 0 8 4\n", - "\n", - "##############################################\n", - "FRAG_RECONSTRUCT. 8 molecules submitted to SEQUENTIAL with Heavy\n", - "##############################################\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 2\n", - " Formula = Cl-Hg\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " Number of Ligands = 1\n", - " Number of Metals = 1\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 9\n", - " Formula = H3-C5-Fe\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " Number of Ligands = 1\n", - " Number of Metals = 1\n", - "---------------------------------------------------\n", - "]\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 2\n", - " Formula = Cl-Hg\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " Number of Ligands = 1\n", - " Number of Metals = 1\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 9\n", - " Formula = H3-C5-Fe\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " Number of Ligands = 1\n", - " Number of Metals = 1\n", - "---------------------------------------------------\n", - "]\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 2\n", - " Formula = Cl-Hg\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " Number of Ligands = 1\n", - " Number of Metals = 1\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 4\n", - " Formula = Cl3-Hg\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " Number of Ligands = 3\n", - " Number of Metals = 1\n", - "---------------------------------------------------\n", - "]\n", - "goodlist=[]\n", - "avglist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 11\n", - " Formula = H4-C5-Cl-Hg\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - "]\n", - "badlist=[]\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 11\n", - " Formula = H4-C5-Cl-Hg\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 4\n", - " Formula = Cl3-Hg\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " Number of Ligands = 3\n", - " Number of Metals = 1\n", - "---------------------------------------------------\n", - "]\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 11\n", - " Formula = H4-C5-Cl-Hg\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 9\n", - " Formula = H3-C5-Fe\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " Number of Ligands = 1\n", - " Number of Metals = 1\n", - "---------------------------------------------------\n", - "]\n", - "goodlist=[]\n", - "avglist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 20\n", - " Formula = H7-C10-Cl-Fe-Hg\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - "]\n", - "badlist=[]\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 20\n", - " Formula = H7-C10-Cl-Fe-Hg\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 2\n", - " Formula = Cl-Hg\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " Number of Ligands = 1\n", - " Number of Metals = 1\n", - "---------------------------------------------------\n", - "]\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 2\n", - " Formula = Cl-Hg\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " Number of Ligands = 1\n", - " Number of Metals = 1\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 20\n", - " Formula = H7-C10-Cl-Fe-Hg\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - "]\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 9\n", - " Formula = H3-C5-Fe\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " Number of Ligands = 1\n", - " Number of Metals = 1\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 2\n", - " Formula = Cl-Hg\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " Number of Ligands = 1\n", - " Number of Metals = 1\n", - "---------------------------------------------------\n", - "]\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 20\n", - " Formula = H7-C10-Cl-Fe-Hg\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 2\n", - " Formula = Cl-Hg\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " Number of Ligands = 1\n", - " Number of Metals = 1\n", - "---------------------------------------------------\n", - "]\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 9\n", - " Formula = H3-C5-Fe\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " Number of Ligands = 1\n", - " Number of Metals = 1\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 4\n", - " Formula = Cl3-Hg\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " Number of Ligands = 3\n", - " Number of Metals = 1\n", - "---------------------------------------------------\n", - "]\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 2\n", - " Formula = Cl-Hg\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " Number of Ligands = 1\n", - " Number of Metals = 1\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 9\n", - " Formula = H3-C5-Fe\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " Number of Ligands = 1\n", - " Number of Metals = 1\n", - "---------------------------------------------------\n", - "]\n", - "goodlist=[]\n", - "avglist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 11\n", - " Formula = H4-C5-Cl-Hg\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - "]\n", - "badlist=[]\n", - "goodlist=[]\n", - "avglist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 20\n", - " Formula = H7-C10-Cl-Fe-Hg\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - "]\n", - "badlist=[]\n", - "MOLECULE.SPLIT COMPLEX: labels=['Hg', 'Cl', 'Cl', 'Cl', 'Hg', 'Cl', 'Cl', 'Cl']\n", - "MOLECULE.SPLIT COMPLEX: metal_idx=[0, 4]\n", - "MOLECULE.SPLIT COMPLEX: rest_idx=[1, 2, 3, 5, 6, 7]\n", - "SPLIT COMPLEX: rest labels: ['Cl', 'Cl', 'Cl', 'Cl', 'Cl', 'Cl']\n", - "SPLIT COMPLEX: rest coord: [[4.8684929, -0.5616564000000004, 5.7432997], [3.2896384000000003, -1.1564794000000003, 1.8108721], [2.7576338000000002, -3.8316994000000006, 5.1099833], [1.3562608, -0.0638992, 5.1197601], [2.9351153, 0.5309238, 9.0521877], [3.4671199, 3.2061439, 5.7530764]]\n", - "SPLIT COMPLEX: rest indices: [1, 2, 3, 5, 6, 7]\n", - "SPLIT COMPLEX: rest radii: [1.02, 1.02, 1.02, 1.02, 1.02, 1.02]\n", - "SPLIT COMPLEX: splitting species with 6 atoms in block\n", - "labels=['Cl', 'Cl', 'Cl', 'Cl', 'Cl', 'Cl'] 6\n", - "indices=None\n", - "SPLIT COMPLEX: received 6 blocks\n", - "PREPARING BLOCK: [5]\n", - "CREATING LIGAND: Cl\n", - "PREPARING BLOCK: [4]\n", - "CREATING LIGAND: Cl\n", - "PREPARING BLOCK: [3]\n", - "CREATING LIGAND: Cl\n", - "PREPARING BLOCK: [2]\n", - "CREATING LIGAND: Cl\n", - "PREPARING BLOCK: [1]\n", - "CREATING LIGAND: Cl\n", - "PREPARING BLOCK: [0]\n", - "CREATING LIGAND: Cl\n", - "LIGAND.SPLIT_LIGAND: self.indices=[0]\n", - "LIGAND.SPLIT_LIGAND: conn_idx=[0]\n", - "LIGAND.SPLIT_LIGAND: conn_labels=['Cl']\n", - "LIGAND.SPLIT_LIGAND: conn_coord=[[3.4671199, 3.2061439, 5.7530764]]\n", - "LIGAND.SPLIT_LIGAND: conn_radii=[1.02]\n", - "blocklist=[[0]]\n", - "LIGAND.SPLIT_LIGAND: block=[0]\n", - "LIGAND.SPLIT_LIGAND: self.indices=[0]\n", - "LIGAND.SPLIT_LIGAND: conn_idx=[0]\n", - "LIGAND.SPLIT_LIGAND: conn_labels=['Cl']\n", - "LIGAND.SPLIT_LIGAND: conn_coord=[[2.9351153, 0.5309238, 9.0521877]]\n", - "LIGAND.SPLIT_LIGAND: conn_radii=[1.02]\n", - "blocklist=[[0]]\n", - "LIGAND.SPLIT_LIGAND: block=[0]\n", - "LIGAND.SPLIT_LIGAND: self.indices=[0]\n", - "LIGAND.SPLIT_LIGAND: conn_idx=[0]\n", - "LIGAND.SPLIT_LIGAND: conn_labels=['Cl']\n", - "LIGAND.SPLIT_LIGAND: conn_coord=[[1.3562608, -0.0638992, 5.1197601]]\n", - "LIGAND.SPLIT_LIGAND: conn_radii=[1.02]\n", - "blocklist=[[0]]\n", - "LIGAND.SPLIT_LIGAND: block=[0]\n", - "LIGAND.SPLIT_LIGAND: self.indices=[0]\n", - "LIGAND.SPLIT_LIGAND: conn_idx=[0]\n", - "LIGAND.SPLIT_LIGAND: conn_labels=['Cl']\n", - "LIGAND.SPLIT_LIGAND: conn_coord=[[2.7576338000000002, -3.8316994000000006, 5.1099833]]\n", - "LIGAND.SPLIT_LIGAND: conn_radii=[1.02]\n", - "blocklist=[[0]]\n", - "LIGAND.SPLIT_LIGAND: block=[0]\n", - "LIGAND.SPLIT_LIGAND: self.indices=[0]\n", - "LIGAND.SPLIT_LIGAND: conn_idx=[0]\n", - "LIGAND.SPLIT_LIGAND: conn_labels=['Cl']\n", - "LIGAND.SPLIT_LIGAND: conn_coord=[[3.2896384000000003, -1.1564794000000003, 1.8108721]]\n", - "LIGAND.SPLIT_LIGAND: conn_radii=[1.02]\n", - "blocklist=[[0]]\n", - "LIGAND.SPLIT_LIGAND: block=[0]\n", - "LIGAND.SPLIT_LIGAND: self.indices=[0]\n", - "LIGAND.SPLIT_LIGAND: conn_idx=[0]\n", - "LIGAND.SPLIT_LIGAND: conn_labels=['Cl']\n", - "LIGAND.SPLIT_LIGAND: conn_coord=[[4.8684929, -0.5616564000000004, 5.7432997]]\n", - "LIGAND.SPLIT_LIGAND: conn_radii=[1.02]\n", - "blocklist=[[0]]\n", - "LIGAND.SPLIT_LIGAND: block=[0]\n", - "ADD_ATOM: Metalist length 1\n", - "ADD_ATOM: Ligand Atoms 1\n", - "ADD_ATOM: site= 0\n", - "ADD_ATOM: evaluating apos=array([3.4671199, 3.2061439, 5.7530764]) and tgt.coord=[2.8686395, 1.120505, 6.7807219]\n", - "ADD_ATOM: received tmpconnec[posadded]=1\n", - "ADD_ATOM: Chosen Metal index None. H is added at site 0\n", - "ADD_ATOM: Metalist length 1\n", - "ADD_ATOM: Ligand Atoms 1\n", - "ADD_ATOM: site= 0\n", - "ADD_ATOM: evaluating apos=array([2.9351153, 0.5309238, 9.0521877]) and tgt.coord=[2.8686395, 1.120505, 6.7807219]\n", - "ADD_ATOM: received tmpconnec[posadded]=1\n", - "ADD_ATOM: Chosen Metal index None. H is added at site 0\n", - "ADD_ATOM: Metalist length 1\n", - "ADD_ATOM: Ligand Atoms 1\n", - "ADD_ATOM: site= 0\n", - "ADD_ATOM: evaluating apos=array([ 1.3562608, -0.0638992, 5.1197601]) and tgt.coord=[2.8686395, 1.120505, 6.7807219]\n", - "ADD_ATOM: received tmpconnec[posadded]=1\n", - "ADD_ATOM: Chosen Metal index None. H is added at site 0\n", - "ADD_ATOM: Metalist length 1\n", - "ADD_ATOM: Ligand Atoms 1\n", - "ADD_ATOM: site= 0\n", - "ADD_ATOM: evaluating apos=array([ 1.3562608, -0.0638992, 5.1197601]) and tgt.coord=[2.8686395, 1.120505, 6.7807219]\n", - "ADD_ATOM: received tmpconnec[posadded]=1\n", - "ADD_ATOM: Chosen Metal index None. H is added at site 0\n", - "ADD_ATOM: Metalist length 1\n", - "ADD_ATOM: Ligand Atoms 1\n", - "ADD_ATOM: site= 0\n", - "ADD_ATOM: evaluating apos=array([ 2.7576338, -3.8316994, 5.1099833]) and tgt.coord=[3.3561142, -1.7460605999999999, 4.0823379]\n", - "ADD_ATOM: received tmpconnec[posadded]=1\n", - "ADD_ATOM: Chosen Metal index None. H is added at site 0\n", - "ADD_ATOM: Metalist length 1\n", - "ADD_ATOM: Ligand Atoms 1\n", - "ADD_ATOM: site= 0\n", - "ADD_ATOM: evaluating apos=array([ 3.2896384, -1.1564794, 1.8108721]) and tgt.coord=[3.3561142, -1.7460605999999999, 4.0823379]\n", - "ADD_ATOM: received tmpconnec[posadded]=1\n", - "ADD_ATOM: Chosen Metal index None. H is added at site 0\n", - "ADD_ATOM: Metalist length 1\n", - "ADD_ATOM: Ligand Atoms 1\n", - "ADD_ATOM: site= 0\n", - "ADD_ATOM: evaluating apos=array([ 4.8684929, -0.5616564, 5.7432997]) and tgt.coord=[3.3561142, -1.7460605999999999, 4.0823379]\n", - "ADD_ATOM: received tmpconnec[posadded]=1\n", - "ADD_ATOM: Chosen Metal index None. H is added at site 0\n", - "ADD_ATOM: Metalist length 1\n", - "ADD_ATOM: Ligand Atoms 1\n", - "ADD_ATOM: site= 0\n", - "ADD_ATOM: evaluating apos=array([ 4.8684929, -0.5616564, 5.7432997]) and tgt.coord=[3.3561142, -1.7460605999999999, 4.0823379]\n", - "ADD_ATOM: received tmpconnec[posadded]=1\n", - "ADD_ATOM: Chosen Metal index None. H is added at site 0\n", - "reordered_newmolec=------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 8\n", - " Formula = Cl6-Hg2\n", - " Has Adjacency Matrix = YES\n", - " Number of Ligands = 6\n", - " Number of Metals = 2\n", - "---------------------------------------------------\n", - "\n", - "COMPARE_SPECIES. Comparing:\n", - "------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 8\n", - " Formula = Cl6-Hg2\n", - " Has Adjacency Matrix = YES\n", - " Number of Ligands = 6\n", - " Number of Metals = 2\n", - "---------------------------------------------------\n", - "\n", - "------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 8\n", - " Formula = Cl6-Hg2\n", - " Has Adjacency Matrix = YES\n", - " Number of Ligands = 6\n", - " Number of Metals = 2\n", - "---------------------------------------------------\n", - "\n", - "['Hg', 'Cl', 'Cl', 'Cl', 'Hg', 'Cl', 'Cl', 'Cl']\n", - "['Hg', 'Cl', 'Cl', 'Cl', 'Hg', 'Cl', 'Cl', 'Cl']\n", - "mol1.adj_types=array([[0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " ...,\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0]])\n", - "mol2.adj_types=array([[0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " ...,\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0]])\n", - "goodlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 8\n", - " Formula = Cl6-Hg2\n", - " Has Adjacency Matrix = YES\n", - " Number of Ligands = 6\n", - " Number of Metals = 2\n", - "---------------------------------------------------\n", - "]\n", - "avglist=[]\n", - "badlist=[]\n", - "FRAG_RECONSTRUCT. 1 molecules and 2 fragments out of SEQUENTIAL with Heavy\n", - "FRAG_RECONSTRUCT. 6 molecules submitted to sequential with All\n", - "H7-C10-Cl-Fe-Hg Rec. Fragment ['C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'Hg', 'Cl', 'Fe', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'H']\n", - "H7-C10-Cl-Fe-Hg Rec. Fragment ['C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'Hg', 'Cl', 'Fe', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'H']\n", - "H H ['H']\n", - "H H ['H']\n", - "H H ['H']\n", - "H H ['H']\n", - "sublist 2 ['H7-C10-Cl-Fe-Hg', 'H']\n", - "list1 2 ['H7-C10-Cl-Fe-Hg', 'H7-C10-Cl-Fe-Hg']\n", - "list2 4 ['H', 'H', 'H', 'H']\n", - "keeplist1 1 ['H7-C10-Cl-Fe-Hg']\n", - "keeplist2 3 ['H', 'H', 'H']\n", - "\n", - "goodlist=[]\n", - "avglist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 21\n", - " Formula = H8-C10-Cl-Fe-Hg\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - "]\n", - "badlist=[]\n", - "sublist 2 ['H8-C10-Cl-Fe-Hg', 'H']\n", - "list1 2 ['H8-C10-Cl-Fe-Hg', 'H7-C10-Cl-Fe-Hg']\n", - "list2 3 ['H', 'H', 'H']\n", - "keeplist1 1 ['H7-C10-Cl-Fe-Hg']\n", - "keeplist2 2 ['H', 'H']\n", - "\n", - "MOLECULE.SPLIT COMPLEX: labels=['Hg', 'Fe', 'Cl', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H']\n", - "MOLECULE.SPLIT COMPLEX: metal_idx=[0, 1]\n", - "MOLECULE.SPLIT COMPLEX: rest_idx=[2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21]\n", - "SPLIT COMPLEX: rest labels: ['Cl', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H']\n", - "SPLIT COMPLEX: rest coord: [[6.985123, 2.3016164, 7.6030555], [8.4662071, 4.3093526, 1.5686258], [8.1312516, 5.1688089, 1.6978962], [8.4177716, 3.6384001, 0.3649988], [8.0561789, 3.9460315, -0.4334360000000004], [9.0069, 2.4157695, 0.5757422], [9.1306494, 1.7496592, -0.06517830000000124], [9.425084, 2.3344473, 1.9879399], [9.843130200000001, 1.6213751, 2.4050814], [9.061447600000001, 3.5520773, 2.5593369], [9.1963008, 3.805643, 3.4435899], [6.1022008, 2.0607668, 3.3610307], [5.5104028, 3.0110239, 2.5441286], [5.2421926, 3.8561355, 2.8254818], [5.3684013, 2.5137605, 1.2025407], [5.001188, 2.9553237, 0.4714568], [5.8997816, 1.2250349, 1.2351299], [5.9443431, 0.6468013, 0.5073049], [6.3650269, 0.9240044, 2.5495601], [6.7663014, 0.1315989, 2.8243955]]\n", - "SPLIT COMPLEX: rest indices: [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21]\n", - "SPLIT COMPLEX: rest radii: [1.02, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31]\n", - "SPLIT COMPLEX: splitting species with 20 atoms in block\n", - "labels=['Cl', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H'] 20\n", - "indices=None\n", - "SPLIT COMPLEX: received 3 blocks\n", - "PREPARING BLOCK: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]\n", - "CREATING LIGAND: H5-C5\n", - "PREPARING BLOCK: [11, 12, 13, 14, 15, 16, 17, 18, 19]\n", - "CREATING LIGAND: H4-C5\n", - "PREPARING BLOCK: [0]\n", - "CREATING LIGAND: Cl\n", - "LIGAND.SPLIT_LIGAND: self.indices=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]\n", - "LIGAND.SPLIT_LIGAND: conn_idx=[0, 2, 4, 6, 8]\n", - "LIGAND.SPLIT_LIGAND: conn_labels=['C', 'C', 'C', 'C', 'C']\n", - "LIGAND.SPLIT_LIGAND: conn_coord=[[8.4662071, 4.3093526, 1.5686258], [8.4177716, 3.6384001, 0.3649988], [9.0069, 2.4157695, 0.5757422], [9.425084, 2.3344473, 1.9879399], [9.061447600000001, 3.5520773, 2.5593369]]\n", - "LIGAND.SPLIT_LIGAND: conn_radii=[0.73, 0.73, 0.73, 0.73, 0.73]\n", - "blocklist=[[0, 1, 2, 3, 4]]\n", - "LIGAND.SPLIT_LIGAND: block=[0, 1, 2, 3, 4]\n", - "LIGAND.SPLIT_LIGAND: self.indices=[0, 1, 2, 3, 4, 5, 6, 7, 8]\n", - "LIGAND.SPLIT_LIGAND: conn_idx=[0, 1, 3, 5, 7]\n", - "LIGAND.SPLIT_LIGAND: conn_labels=['C', 'C', 'C', 'C', 'C']\n", - "LIGAND.SPLIT_LIGAND: conn_coord=[[6.1022008, 2.0607668, 3.3610307], [5.5104028, 3.0110239, 2.5441286], [5.3684013, 2.5137605, 1.2025407], [5.8997816, 1.2250349, 1.2351299], [6.3650269, 0.9240044, 2.5495601]]\n", - "LIGAND.SPLIT_LIGAND: conn_radii=[0.73, 0.73, 0.73, 0.73, 0.73]\n", - "blocklist=[[0, 1, 2, 3, 4]]\n", - "LIGAND.SPLIT_LIGAND: block=[0, 1, 2, 3, 4]\n", - "LIGAND.SPLIT_LIGAND: self.indices=[0]\n", - "LIGAND.SPLIT_LIGAND: conn_idx=[0]\n", - "LIGAND.SPLIT_LIGAND: conn_labels=['Cl']\n", - "LIGAND.SPLIT_LIGAND: conn_coord=[[6.985123, 2.3016164, 7.6030555]]\n", - "LIGAND.SPLIT_LIGAND: conn_radii=[1.02]\n", - "blocklist=[[0]]\n", - "LIGAND.SPLIT_LIGAND: block=[0]\n", - "ADD_ATOM: Metalist length 1\n", - "ADD_ATOM: Ligand Atoms 1\n", - "ADD_ATOM: site= 0\n", - "ADD_ATOM: evaluating apos=array([6.985123 , 2.3016164, 7.6030555]) and tgt.coord=[6.4998052, 2.1910413, 5.3595078]\n", - "ADD_ATOM: received tmpconnec[posadded]=1\n", - "ADD_ATOM: Chosen Metal index None. H is added at site 0\n", - "reordered_newmolec=------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 22\n", - " Formula = H9-C10-Cl-Fe-Hg\n", - " Has Adjacency Matrix = YES\n", - " Number of Ligands = 3\n", - " Number of Metals = 2\n", - "---------------------------------------------------\n", - "\n", - "COMPARE_SPECIES. Comparing:\n", - "------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 22\n", - " Formula = H9-C10-Cl-Fe-Hg\n", - " Has Adjacency Matrix = YES\n", - " Number of Ligands = 3\n", - " Number of Metals = 2\n", - "---------------------------------------------------\n", - "\n", - "------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 22\n", - " Formula = H9-C10-Cl-Fe-Hg\n", - " Has Adjacency Matrix = YES\n", - " Number of Ligands = 3\n", - " Number of Metals = 2\n", - "---------------------------------------------------\n", - "\n", - "['Hg', 'Fe', 'Cl', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H']\n", - "['Hg', 'Fe', 'Cl', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H']\n", - "mol1.adj_types=array([[0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " ...,\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0]])\n", - "mol2.adj_types=array([[0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " ...,\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0]])\n", - "goodlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 22\n", - " Formula = H9-C10-Cl-Fe-Hg\n", - " Has Adjacency Matrix = YES\n", - " Number of Ligands = 3\n", - " Number of Metals = 2\n", - "---------------------------------------------------\n", - "]\n", - "avglist=[]\n", - "badlist=[]\n", - "sublist 2 ['H7-C10-Cl-Fe-Hg', 'H']\n", - "list1 1 ['H7-C10-Cl-Fe-Hg']\n", - "list2 2 ['H', 'H']\n", - "keeplist1 0 []\n", - "keeplist2 1 ['H']\n", - "\n", - "goodlist=[]\n", - "avglist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 21\n", - " Formula = H8-C10-Cl-Fe-Hg\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - "]\n", - "badlist=[]\n", - "sublist 2 ['H8-C10-Cl-Fe-Hg', 'H']\n", - "list1 1 ['H8-C10-Cl-Fe-Hg']\n", - "list2 1 ['H']\n", - "keeplist1 0 []\n", - "keeplist2 0 []\n", - "\n", - "MOLECULE.SPLIT COMPLEX: labels=['Hg', 'Fe', 'Cl', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H']\n", - "MOLECULE.SPLIT COMPLEX: metal_idx=[0, 1]\n", - "MOLECULE.SPLIT COMPLEX: rest_idx=[2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21]\n", - "SPLIT COMPLEX: rest labels: ['Cl', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H']\n", - "SPLIT COMPLEX: rest coord: [[-3.6481031, 6.3843261, 3.2600042], [-3.028007, 7.7619381, 8.3134996], [-3.4292814, 8.5543436, 8.0386642], [-2.7651809, 6.6251757, 7.5020291], [-4.7191589, 4.7399109, 11.2964958], [-2.1733829, 5.6749186, 8.3189312], [-1.9051726, 4.8298069, 8.0375779], [-2.0313814, 6.1721819, 9.660519], [-1.6641681, 5.7306187, 10.391603], [-2.5627616, 7.4609076, 9.6279299], [-2.6073232, 8.0391411, 10.3557549], [-5.0807517, 5.0475424, 10.4980609], [-5.66988, 6.2701729, 10.2873176], [-5.7936295, 6.9362832, 10.928238100000002], [-6.088064, 6.3514951, 8.8751198], [-6.5061102, 7.0645673, 8.4579783], [-5.7244276, 5.1338652, 8.3037229], [-5.8592809, 4.8802994, 7.4194698], [-5.1291871, 4.3765899, 9.2944339], [-4.7942317, 3.5171335, 9.1651635]]\n", - "SPLIT COMPLEX: rest indices: [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21]\n", - "SPLIT COMPLEX: rest radii: [1.02, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31]\n", - "SPLIT COMPLEX: splitting species with 20 atoms in block\n", - "labels=['Cl', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H'] 20\n", - "indices=None\n", - "SPLIT COMPLEX: received 3 blocks\n", - "PREPARING BLOCK: [1, 2, 3, 5, 6, 7, 8, 9, 10]\n", - "CREATING LIGAND: H4-C5\n", - "PREPARING BLOCK: [4, 11, 12, 13, 14, 15, 16, 17, 18, 19]\n", - "CREATING LIGAND: H5-C5\n", - "PREPARING BLOCK: [0]\n", - "CREATING LIGAND: Cl\n", - "LIGAND.SPLIT_LIGAND: self.indices=[0, 1, 2, 3, 4, 5, 6, 7, 8]\n", - "LIGAND.SPLIT_LIGAND: conn_idx=[0, 2, 3, 5, 7]\n", - "LIGAND.SPLIT_LIGAND: conn_labels=['C', 'C', 'C', 'C', 'C']\n", - "LIGAND.SPLIT_LIGAND: conn_coord=[[-3.028007, 7.7619381, 8.3134996], [-2.7651809, 6.6251757, 7.5020291], [-2.1733829, 5.6749186, 8.3189312], [-2.0313814, 6.1721819, 9.660519], [-2.5627616, 7.4609076, 9.6279299]]\n", - "LIGAND.SPLIT_LIGAND: conn_radii=[0.73, 0.73, 0.73, 0.73, 0.73]\n", - "blocklist=[[0, 1, 2, 3, 4]]\n", - "LIGAND.SPLIT_LIGAND: block=[0, 1, 2, 3, 4]\n", - "LIGAND.SPLIT_LIGAND: self.indices=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]\n", - "LIGAND.SPLIT_LIGAND: conn_idx=[1, 2, 4, 6, 8]\n", - "LIGAND.SPLIT_LIGAND: conn_labels=['C', 'C', 'C', 'C', 'C']\n", - "LIGAND.SPLIT_LIGAND: conn_coord=[[-5.0807517, 5.0475424, 10.4980609], [-5.66988, 6.2701729, 10.2873176], [-6.088064, 6.3514951, 8.8751198], [-5.7244276, 5.1338652, 8.3037229], [-5.1291871, 4.3765899, 9.2944339]]\n", - "LIGAND.SPLIT_LIGAND: conn_radii=[0.73, 0.73, 0.73, 0.73, 0.73]\n", - "blocklist=[[0, 1, 2, 3, 4]]\n", - "LIGAND.SPLIT_LIGAND: block=[0, 1, 2, 3, 4]\n", - "LIGAND.SPLIT_LIGAND: self.indices=[0]\n", - "LIGAND.SPLIT_LIGAND: conn_idx=[0]\n", - "LIGAND.SPLIT_LIGAND: conn_labels=['Cl']\n", - "LIGAND.SPLIT_LIGAND: conn_coord=[[-3.6481031, 6.3843261, 3.2600042]]\n", - "LIGAND.SPLIT_LIGAND: conn_radii=[1.02]\n", - "blocklist=[[0]]\n", - "LIGAND.SPLIT_LIGAND: block=[0]\n", - "ADD_ATOM: Metalist length 1\n", - "ADD_ATOM: Ligand Atoms 1\n", - "ADD_ATOM: site= 0\n", - "ADD_ATOM: evaluating apos=array([-3.6481031, 6.3843261, 3.2600042]) and tgt.coord=[-3.1627853000000004, 6.4949012, 5.503552]\n", - "ADD_ATOM: received tmpconnec[posadded]=1\n", - "ADD_ATOM: Chosen Metal index None. H is added at site 0\n", - "reordered_newmolec=------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 22\n", - " Formula = H9-C10-Cl-Fe-Hg\n", - " Has Adjacency Matrix = YES\n", - " Number of Ligands = 3\n", - " Number of Metals = 2\n", - "---------------------------------------------------\n", - "\n", - "COMPARE_SPECIES. Comparing:\n", - "------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 22\n", - " Formula = H9-C10-Cl-Fe-Hg\n", - " Has Adjacency Matrix = YES\n", - " Number of Ligands = 3\n", - " Number of Metals = 2\n", - "---------------------------------------------------\n", - "\n", - "------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 22\n", - " Formula = H9-C10-Cl-Fe-Hg\n", - " Has Adjacency Matrix = YES\n", - " Number of Ligands = 3\n", - " Number of Metals = 2\n", - "---------------------------------------------------\n", - "\n", - "['Hg', 'Fe', 'Cl', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H']\n", - "['Hg', 'Fe', 'Cl', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H']\n", - "mol1.adj_types=array([[0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " ...,\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0]])\n", - "mol2.adj_types=array([[0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " ...,\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0]])\n", - "goodlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 22\n", - " Formula = H9-C10-Cl-Fe-Hg\n", - " Has Adjacency Matrix = YES\n", - " Number of Ligands = 3\n", - " Number of Metals = 2\n", - "---------------------------------------------------\n", - "]\n", - "avglist=[]\n", - "badlist=[]\n", - "FINISHED succesfully\n", - "finalmols=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 22\n", - " Formula = H9-C10-Cl-Fe-Hg\n", - " Has Adjacency Matrix = YES\n", - " Number of Ligands = 3\n", - " Number of Metals = 2\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 22\n", - " Formula = H9-C10-Cl-Fe-Hg\n", - " Has Adjacency Matrix = YES\n", - " Number of Ligands = 3\n", - " Number of Metals = 2\n", - "---------------------------------------------------\n", - "]\n", - "remfrag=[]\n", - "FRAG_RECONSTRUCT. No remaining Molecules after Hydrogen reconstruction\n", - "MOLECULE.SPLIT COMPLEX: labels=['Hg', 'Cl', 'Cl', 'Cl', 'Hg', 'Cl', 'Cl', 'Cl']\n", - "MOLECULE.SPLIT COMPLEX: metal_idx=[0, 4]\n", - "MOLECULE.SPLIT COMPLEX: rest_idx=[1, 2, 3, 5, 6, 7]\n", - "SPLIT COMPLEX: rest labels: ['Cl', 'Cl', 'Cl', 'Cl', 'Cl', 'Cl']\n", - "SPLIT COMPLEX: rest coord: [[4.8684929, -0.5616564000000004, 5.7432997], [3.2896384000000003, -1.1564794000000003, 1.8108721], [2.7576338000000002, -3.8316994000000006, 5.1099833], [1.3562608, -0.0638992, 5.1197601], [2.9351153, 0.5309238, 9.0521877], [3.4671199, 3.2061439, 5.7530764]]\n", - "SPLIT COMPLEX: rest indices: [1, 2, 3, 5, 6, 7]\n", - "SPLIT COMPLEX: rest radii: [1.02, 1.02, 1.02, 1.02, 1.02, 1.02]\n", - "SPLIT COMPLEX: splitting species with 6 atoms in block\n", - "labels=['Cl', 'Cl', 'Cl', 'Cl', 'Cl', 'Cl'] 6\n", - "indices=None\n", - "SPLIT COMPLEX: received 6 blocks\n", - "PREPARING BLOCK: [5]\n", - "CREATING LIGAND: Cl\n", - "PREPARING BLOCK: [4]\n", - "CREATING LIGAND: Cl\n", - "PREPARING BLOCK: [3]\n", - "CREATING LIGAND: Cl\n", - "PREPARING BLOCK: [2]\n", - "CREATING LIGAND: Cl\n", - "PREPARING BLOCK: [1]\n", - "CREATING LIGAND: Cl\n", - "PREPARING BLOCK: [0]\n", - "CREATING LIGAND: Cl\n", - "MOLECULE.SPLIT COMPLEX: labels=['Hg', 'Fe', 'Cl', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H']\n", - "MOLECULE.SPLIT COMPLEX: metal_idx=[0, 1]\n", - "MOLECULE.SPLIT COMPLEX: rest_idx=[2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21]\n", - "SPLIT COMPLEX: rest labels: ['Cl', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H']\n", - "SPLIT COMPLEX: rest coord: [[6.985123, 2.3016164, 7.6030555], [8.4662071, 4.3093526, 1.5686258], [8.1312516, 5.1688089, 1.6978962], [8.4177716, 3.6384001, 0.3649988], [8.0561789, 3.9460315, -0.4334360000000004], [9.0069, 2.4157695, 0.5757422], [9.1306494, 1.7496592, -0.06517830000000124], [9.425084, 2.3344473, 1.9879399], [9.843130200000001, 1.6213751, 2.4050814], [9.061447600000001, 3.5520773, 2.5593369], [9.1963008, 3.805643, 3.4435899], [6.1022008, 2.0607668, 3.3610307], [5.5104028, 3.0110239, 2.5441286], [5.2421926, 3.8561355, 2.8254818], [5.3684013, 2.5137605, 1.2025407], [5.001188, 2.9553237, 0.4714568], [5.8997816, 1.2250349, 1.2351299], [5.9443431, 0.6468013, 0.5073049], [6.3650269, 0.9240044, 2.5495601], [6.7663014, 0.1315989, 2.8243955]]\n", - "SPLIT COMPLEX: rest indices: [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21]\n", - "SPLIT COMPLEX: rest radii: [1.02, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31]\n", - "SPLIT COMPLEX: splitting species with 20 atoms in block\n", - "labels=['Cl', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H'] 20\n", - "indices=None\n", - "SPLIT COMPLEX: received 3 blocks\n", - "PREPARING BLOCK: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]\n", - "CREATING LIGAND: H5-C5\n", - "PREPARING BLOCK: [11, 12, 13, 14, 15, 16, 17, 18, 19]\n", - "CREATING LIGAND: H4-C5\n", - "PREPARING BLOCK: [0]\n", - "CREATING LIGAND: Cl\n", - "MOLECULE.SPLIT COMPLEX: labels=['Hg', 'Fe', 'Cl', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H']\n", - "MOLECULE.SPLIT COMPLEX: metal_idx=[0, 1]\n", - "MOLECULE.SPLIT COMPLEX: rest_idx=[2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21]\n", - "SPLIT COMPLEX: rest labels: ['Cl', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H']\n", - "SPLIT COMPLEX: rest coord: [[-3.6481031, 6.3843261, 3.2600042], [-3.028007, 7.7619381, 8.3134996], [-3.4292814, 8.5543436, 8.0386642], [-2.7651809, 6.6251757, 7.5020291], [-4.7191589, 4.7399109, 11.2964958], [-2.1733829, 5.6749186, 8.3189312], [-1.9051726, 4.8298069, 8.0375779], [-2.0313814, 6.1721819, 9.660519], [-1.6641681, 5.7306187, 10.391603], [-2.5627616, 7.4609076, 9.6279299], [-2.6073232, 8.0391411, 10.3557549], [-5.0807517, 5.0475424, 10.4980609], [-5.66988, 6.2701729, 10.2873176], [-5.7936295, 6.9362832, 10.928238100000002], [-6.088064, 6.3514951, 8.8751198], [-6.5061102, 7.0645673, 8.4579783], [-5.7244276, 5.1338652, 8.3037229], [-5.8592809, 4.8802994, 7.4194698], [-5.1291871, 4.3765899, 9.2944339], [-4.7942317, 3.5171335, 9.1651635]]\n", - "SPLIT COMPLEX: rest indices: [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21]\n", - "SPLIT COMPLEX: rest radii: [1.02, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31]\n", - "SPLIT COMPLEX: splitting species with 20 atoms in block\n", - "labels=['Cl', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H'] 20\n", - "indices=None\n", - "SPLIT COMPLEX: received 3 blocks\n", - "PREPARING BLOCK: [1, 2, 3, 5, 6, 7, 8, 9, 10]\n", - "CREATING LIGAND: H4-C5\n", - "PREPARING BLOCK: [4, 11, 12, 13, 14, 15, 16, 17, 18, 19]\n", - "CREATING LIGAND: H5-C5\n", - "PREPARING BLOCK: [0]\n", - "CREATING LIGAND: Cl\n" - ] - }, - { - "data": { - "text/plain": [ - "[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 8\n", - " Formula = Cl6-Hg2\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.reconstruct\n", - " Number of Ligands = 6\n", - " Number of Metals = 2\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 22\n", - " Formula = H9-C10-Cl-Fe-Hg\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.reconstruct\n", - " Number of Ligands = 3\n", - " Number of Metals = 2\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 22\n", - " Formula = H9-C10-Cl-Fe-Hg\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.reconstruct\n", - " Number of Ligands = 3\n", - " Number of Metals = 2\n", - " ---------------------------------------------------]" - ] - }, - "execution_count": 11, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "newcell.reconstruct(debug=debug) " - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "id": "1a4d5062", - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "data": { - "text/plain": [ - "False" - ] - }, - "execution_count": 12, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "newcell.error_reconstruction" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "id": "5eb92088", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "False" - ] - }, - "execution_count": 13, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "newcell.is_fragmented" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "id": "3e82eb55", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 22\n", - " Formula = H9-C10-Cl-Fe-Hg\n", - " Has Adjacency Matrix = YES\n", - " Number of Ligands = 3\n", - " Number of Metals = 2\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 22\n", - " Formula = H9-C10-Cl-Fe-Hg\n", - " Has Adjacency Matrix = YES\n", - " Number of Ligands = 3\n", - " Number of Metals = 2\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 8\n", - " Formula = Cl6-Hg2\n", - " Has Adjacency Matrix = YES\n", - " Number of Ligands = 6\n", - " Number of Metals = 2\n", - " ---------------------------------------------------]" - ] - }, - "execution_count": 14, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "newcell.refmoleclist" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "faf1d1d9", - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": 15, - "id": "d3a63460", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 8\n", - " Formula = Cl6-Hg2\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.reconstruct\n", - " Number of Ligands = 6\n", - " Number of Metals = 2\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 22\n", - " Formula = H9-C10-Cl-Fe-Hg\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.reconstruct\n", - " Number of Ligands = 3\n", - " Number of Metals = 2\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 22\n", - " Formula = H9-C10-Cl-Fe-Hg\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.reconstruct\n", - " Number of Ligands = 3\n", - " Number of Metals = 2\n", - " ---------------------------------------------------]" - ] - }, - "execution_count": 15, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "newcell.moleclist" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "id": "f10195bc", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Molecule 0 formula=Cl6-Hg2\n", - "New ligand found with: formula Cl added in position 0\n", - "COMPARE_SPECIES. Comparing:\n", - "------------- Cell2mol LIGAND Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = ligand\n", - " Number of Atoms = 1\n", - " Formula = Cl\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_complex\n", - "---------------------------------------------------\n", - "\n", - "------------- Cell2mol LIGAND Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = ligand\n", - " Number of Atoms = 1\n", - " Formula = Cl\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_complex\n", - "---------------------------------------------------\n", - "\n", - "['Cl']\n", - "['Cl']\n", - "mol1.adj_types=array([[0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " ...,\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0]])\n", - "mol2.adj_types=array([[0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " ...,\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0]])\n", - "ligand 1 is the same with 0 in typelist\n", - "COMPARE_SPECIES. Comparing:\n", - "------------- Cell2mol LIGAND Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = ligand\n", - " Number of Atoms = 1\n", - " Formula = Cl\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_complex\n", - "---------------------------------------------------\n", - "\n", - "------------- Cell2mol LIGAND Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = ligand\n", - " Number of Atoms = 1\n", - " Formula = Cl\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_complex\n", - "---------------------------------------------------\n", - "\n", - "['Cl']\n", - "['Cl']\n", - "mol1.adj_types=array([[0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " ...,\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0]])\n", - "mol2.adj_types=array([[0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " ...,\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0]])\n", - "ligand 2 is the same with 0 in typelist\n", - "COMPARE_SPECIES. Comparing:\n", - "------------- Cell2mol LIGAND Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = ligand\n", - " Number of Atoms = 1\n", - " Formula = Cl\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_complex\n", - "---------------------------------------------------\n", - "\n", - "------------- Cell2mol LIGAND Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = ligand\n", - " Number of Atoms = 1\n", - " Formula = Cl\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_complex\n", - "---------------------------------------------------\n", - "\n", - "['Cl']\n", - "['Cl']\n", - "mol1.adj_types=array([[0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " ...,\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0]])\n", - "mol2.adj_types=array([[0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " ...,\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0]])\n", - "ligand 3 is the same with 0 in typelist\n", - "COMPARE_SPECIES. Comparing:\n", - "------------- Cell2mol LIGAND Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = ligand\n", - " Number of Atoms = 1\n", - " Formula = Cl\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_complex\n", - "---------------------------------------------------\n", - "\n", - "------------- Cell2mol LIGAND Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = ligand\n", - " Number of Atoms = 1\n", - " Formula = Cl\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_complex\n", - "---------------------------------------------------\n", - "\n", - "['Cl']\n", - "['Cl']\n", - "mol1.adj_types=array([[0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " ...,\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0]])\n", - "mol2.adj_types=array([[0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " ...,\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0]])\n", - "ligand 4 is the same with 0 in typelist\n", - "COMPARE_SPECIES. Comparing:\n", - "------------- Cell2mol LIGAND Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = ligand\n", - " Number of Atoms = 1\n", - " Formula = Cl\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_complex\n", - "---------------------------------------------------\n", - "\n", - "------------- Cell2mol LIGAND Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = ligand\n", - " Number of Atoms = 1\n", - " Formula = Cl\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_complex\n", - "---------------------------------------------------\n", - "\n", - "['Cl']\n", - "['Cl']\n", - "mol1.adj_types=array([[0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " ...,\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0]])\n", - "mol2.adj_types=array([[0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " ...,\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0]])\n", - "ligand 5 is the same with 0 in typelist\n", - "New Metal Center found with: labels Hg and added in position 1\n", - "COMPARE_METALS. Comparing:\n", - "Hg\n", - "Hg\n", - "Metal 1 is the same with 0 in typelist\n", - "Molecule 1 formula=H9-C10-Cl-Fe-Hg\n", - "COMPARE_SPECIES. Comparing:\n", - "------------- Cell2mol LIGAND Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = ligand\n", - " Number of Atoms = 10\n", - " Formula = H5-C5\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_complex\n", - "---------------------------------------------------\n", - "\n", - "------------- Cell2mol LIGAND Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = ligand\n", - " Number of Atoms = 1\n", - " Formula = Cl\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_complex\n", - "---------------------------------------------------\n", - "\n", - "['C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H']\n", - "['Cl']\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "New ligand found with: formula H5-C5 added in position 2\n", - "COMPARE_SPECIES. Comparing:\n", - "------------- Cell2mol LIGAND Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = ligand\n", - " Number of Atoms = 9\n", - " Formula = H4-C5\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_complex\n", - "---------------------------------------------------\n", - "\n", - "------------- Cell2mol LIGAND Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = ligand\n", - " Number of Atoms = 1\n", - " Formula = Cl\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_complex\n", - "---------------------------------------------------\n", - "\n", - "['C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H']\n", - "['Cl']\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "------------- Cell2mol LIGAND Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = ligand\n", - " Number of Atoms = 9\n", - " Formula = H4-C5\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_complex\n", - "---------------------------------------------------\n", - "\n", - "------------- Cell2mol LIGAND Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = ligand\n", - " Number of Atoms = 10\n", - " Formula = H5-C5\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_complex\n", - "---------------------------------------------------\n", - "\n", - "['C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H']\n", - "['C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H']\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "New ligand found with: formula H4-C5 added in position 3\n", - "COMPARE_SPECIES. Comparing:\n", - "------------- Cell2mol LIGAND Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = ligand\n", - " Number of Atoms = 1\n", - " Formula = Cl\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_complex\n", - "---------------------------------------------------\n", - "\n", - "------------- Cell2mol LIGAND Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = ligand\n", - " Number of Atoms = 1\n", - " Formula = Cl\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_complex\n", - "---------------------------------------------------\n", - "\n", - "['Cl']\n", - "['Cl']\n", - "mol1.adj_types=array([[0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " ...,\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0]])\n", - "mol2.adj_types=array([[0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " ...,\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0]])\n", - "ligand 2 is the same with 0 in typelist\n", - "COMPARE_SPECIES. Comparing:\n", - "------------- Cell2mol LIGAND Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = ligand\n", - " Number of Atoms = 1\n", - " Formula = Cl\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_complex\n", - "---------------------------------------------------\n", - "\n", - "------------- Cell2mol LIGAND Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = ligand\n", - " Number of Atoms = 10\n", - " Formula = H5-C5\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_complex\n", - "---------------------------------------------------\n", - "\n", - "['Cl']\n", - "['C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H']\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "------------- Cell2mol LIGAND Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = ligand\n", - " Number of Atoms = 1\n", - " Formula = Cl\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_complex\n", - "---------------------------------------------------\n", - "\n", - "------------- Cell2mol LIGAND Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = ligand\n", - " Number of Atoms = 9\n", - " Formula = H4-C5\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_complex\n", - "---------------------------------------------------\n", - "\n", - "['Cl']\n", - "['C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H']\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_METALS. Comparing:\n", - "Hg\n", - "Hg\n", - "COMPARE_METALS. Different coordination sphere\n", - "C-Cl\n", - "Cl4\n", - "New Metal Center found with: labels Hg and added in position 4\n", - "COMPARE_METALS. Comparing:\n", - "Fe\n", - "Hg\n", - "COMPARE_METALS. Different label\n", - "COMPARE_METALS. Comparing:\n", - "Fe\n", - "Hg\n", - "COMPARE_METALS. Different label\n", - "New Metal Center found with: labels Fe and added in position 5\n", - "Molecule 2 formula=H9-C10-Cl-Fe-Hg\n", - "COMPARE_SPECIES. Comparing:\n", - "------------- Cell2mol LIGAND Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = ligand\n", - " Number of Atoms = 9\n", - " Formula = H4-C5\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_complex\n", - "---------------------------------------------------\n", - "\n", - "------------- Cell2mol LIGAND Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = ligand\n", - " Number of Atoms = 1\n", - " Formula = Cl\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_complex\n", - "---------------------------------------------------\n", - "\n", - "['C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H']\n", - "['Cl']\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "------------- Cell2mol LIGAND Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = ligand\n", - " Number of Atoms = 9\n", - " Formula = H4-C5\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_complex\n", - "---------------------------------------------------\n", - "\n", - "------------- Cell2mol LIGAND Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = ligand\n", - " Number of Atoms = 10\n", - " Formula = H5-C5\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_complex\n", - "---------------------------------------------------\n", - "\n", - "['C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H']\n", - "['C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H']\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "------------- Cell2mol LIGAND Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = ligand\n", - " Number of Atoms = 9\n", - " Formula = H4-C5\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_complex\n", - "---------------------------------------------------\n", - "\n", - "------------- Cell2mol LIGAND Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = ligand\n", - " Number of Atoms = 9\n", - " Formula = H4-C5\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_complex\n", - "---------------------------------------------------\n", - "\n", - "['C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H']\n", - "['C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H']\n", - "mol1.adj_types=array([[0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " ...,\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0]])\n", - "mol2.adj_types=array([[0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " ...,\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0]])\n", - "ligand 0 is the same with 2 in typelist\n", - "COMPARE_SPECIES. Comparing:\n", - "------------- Cell2mol LIGAND Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = ligand\n", - " Number of Atoms = 10\n", - " Formula = H5-C5\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_complex\n", - "---------------------------------------------------\n", - "\n", - "------------- Cell2mol LIGAND Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = ligand\n", - " Number of Atoms = 1\n", - " Formula = Cl\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_complex\n", - "---------------------------------------------------\n", - "\n", - "['H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H']\n", - "['Cl']\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "------------- Cell2mol LIGAND Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = ligand\n", - " Number of Atoms = 10\n", - " Formula = H5-C5\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_complex\n", - "---------------------------------------------------\n", - "\n", - "------------- Cell2mol LIGAND Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = ligand\n", - " Number of Atoms = 10\n", - " Formula = H5-C5\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_complex\n", - "---------------------------------------------------\n", - "\n", - "['H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H']\n", - "['C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H']\n", - "mol1.adj_types=array([[0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " ...,\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0]])\n", - "mol2.adj_types=array([[0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " ...,\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0]])\n", - "ligand 1 is the same with 1 in typelist\n", - "COMPARE_SPECIES. Comparing:\n", - "------------- Cell2mol LIGAND Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = ligand\n", - " Number of Atoms = 10\n", - " Formula = H5-C5\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_complex\n", - "---------------------------------------------------\n", - "\n", - "------------- Cell2mol LIGAND Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = ligand\n", - " Number of Atoms = 9\n", - " Formula = H4-C5\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_complex\n", - "---------------------------------------------------\n", - "\n", - "['H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H']\n", - "['C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H']\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "------------- Cell2mol LIGAND Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = ligand\n", - " Number of Atoms = 1\n", - " Formula = Cl\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_complex\n", - "---------------------------------------------------\n", - "\n", - "------------- Cell2mol LIGAND Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = ligand\n", - " Number of Atoms = 1\n", - " Formula = Cl\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_complex\n", - "---------------------------------------------------\n", - "\n", - "['Cl']\n", - "['Cl']\n", - "mol1.adj_types=array([[0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " ...,\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0]])\n", - "mol2.adj_types=array([[0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " ...,\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0]])\n", - "ligand 2 is the same with 0 in typelist\n", - "COMPARE_SPECIES. Comparing:\n", - "------------- Cell2mol LIGAND Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = ligand\n", - " Number of Atoms = 1\n", - " Formula = Cl\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_complex\n", - "---------------------------------------------------\n", - "\n", - "------------- Cell2mol LIGAND Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = ligand\n", - " Number of Atoms = 10\n", - " Formula = H5-C5\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_complex\n", - "---------------------------------------------------\n", - "\n", - "['Cl']\n", - "['C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H']\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_SPECIES. Comparing:\n", - "------------- Cell2mol LIGAND Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = ligand\n", - " Number of Atoms = 1\n", - " Formula = Cl\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_complex\n", - "---------------------------------------------------\n", - "\n", - "------------- Cell2mol LIGAND Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = ligand\n", - " Number of Atoms = 9\n", - " Formula = H4-C5\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_complex\n", - "---------------------------------------------------\n", - "\n", - "['Cl']\n", - "['C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H']\n", - "COMPARE_SPECIES. FALSE, different natoms:\n", - "COMPARE_METALS. Comparing:\n", - "Hg\n", - "Hg\n", - "COMPARE_METALS. Different coordination sphere\n", - "C-Cl\n", - "Cl4\n", - "COMPARE_METALS. Comparing:\n", - "Hg\n", - "Hg\n", - "Metal 0 is the same with 1 in typelist\n", - "COMPARE_METALS. Comparing:\n", - "Hg\n", - "Fe\n", - "COMPARE_METALS. Different label\n", - "COMPARE_METALS. Comparing:\n", - "Fe\n", - "Hg\n", - "COMPARE_METALS. Different label\n", - "COMPARE_METALS. Comparing:\n", - "Fe\n", - "Hg\n", - "COMPARE_METALS. Different label\n", - "COMPARE_METALS. Comparing:\n", - "Fe\n", - "Fe\n", - "Metal 1 is the same with 2 in typelist\n" - ] - }, - { - "data": { - "text/plain": [ - "[------------- Cell2mol LIGAND Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = ligand\n", - " Number of Atoms = 1\n", - " Formula = Cl\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_complex\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol METAL Object --------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Sub-Type = metal\n", - " Label = Hg\n", - " Atomic Number = 80\n", - " Index in Molecule = 0\n", - " Metal Adjacency (mconnec) = 4\n", - " Regular Adjacencies (connec) = 4\n", - " Coordination Sphere Formula = Cl4\n", - " ----------------------------------------------------,\n", - " ------------- Cell2mol LIGAND Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = ligand\n", - " Number of Atoms = 10\n", - " Formula = H5-C5\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_complex\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol LIGAND Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = ligand\n", - " Number of Atoms = 9\n", - " Formula = H4-C5\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_complex\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol METAL Object --------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Sub-Type = metal\n", - " Label = Hg\n", - " Atomic Number = 80\n", - " Index in Molecule = 0\n", - " Metal Adjacency (mconnec) = 2\n", - " Regular Adjacencies (connec) = 2\n", - " Coordination Sphere Formula = C-Cl\n", - " ----------------------------------------------------,\n", - " ------------- Cell2mol METAL Object --------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Sub-Type = metal\n", - " Label = Fe\n", - " Atomic Number = 26\n", - " Index in Molecule = 1\n", - " Metal Adjacency (mconnec) = 10\n", - " Regular Adjacencies (connec) = 10\n", - " Coordination Sphere Formula = C10\n", - " ----------------------------------------------------]" - ] - }, - "execution_count": 16, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "newcell.get_unique_species(debug=debug)" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "id": "25e6cdaa", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "LIGAND.SPLIT_LIGAND: self.indices=[0]\n", - "LIGAND.SPLIT_LIGAND: conn_idx=[0]\n", - "LIGAND.SPLIT_LIGAND: conn_labels=['Cl']\n", - "LIGAND.SPLIT_LIGAND: conn_coord=[[3.4671199, 3.2061439, 5.7530764]]\n", - "LIGAND.SPLIT_LIGAND: conn_radii=[1.02]\n", - "blocklist=[[0]]\n", - "LIGAND.SPLIT_LIGAND: block=[0]\n", - "ADD_ATOM: Metalist length 1\n", - "ADD_ATOM: Ligand Atoms 1\n", - "ADD_ATOM: site= 0\n", - "ADD_ATOM: evaluating apos=array([3.4671199, 3.2061439, 5.7530764]) and tgt.coord=[2.8686395, 1.120505, 6.7807219]\n", - "ADD_ATOM: received tmpconnec[posadded]=1\n", - "ADD_ATOM: Chosen Metal index None. H is added at site 0\n", - "protonation_states=[------------- Cell2mol Protonation ----------------\n", - " Status = True\n", - " Labels = ['Cl']\n", - " Type = Local\n", - " Atoms added in positions = [0]\n", - " Atoms blocked (no atoms added) = [1]\n", - "---------------------------------------------------\n", - "]\n", - "smiles='[Cl-]'\n", - "smiles='[Cl-]'\n", - "smiles='[Cl-]'\n", - "smiles='[Cl-]'\n", - "smiles='[Cl-]'\n", - "Cl\n", - "spec.protonation_states=[------------- Cell2mol Protonation ----------------\n", - " Status = True\n", - " Labels = ['Cl']\n", - " Type = Local\n", - " Atoms added in positions = [0]\n", - " Atoms blocked (no atoms added) = [1]\n", - "---------------------------------------------------\n", - "]\n", - "\n", - "LIGAND.SPLIT_LIGAND: self.indices=[0]\n", - "LIGAND.SPLIT_LIGAND: conn_idx=[0]\n", - "LIGAND.SPLIT_LIGAND: conn_labels=['Cl']\n", - "LIGAND.SPLIT_LIGAND: conn_coord=[[2.9351153, 0.5309238, 9.0521877]]\n", - "LIGAND.SPLIT_LIGAND: conn_radii=[1.02]\n", - "blocklist=[[0]]\n", - "LIGAND.SPLIT_LIGAND: block=[0]\n", - "LIGAND.SPLIT_LIGAND: self.indices=[0]\n", - "LIGAND.SPLIT_LIGAND: conn_idx=[0]\n", - "LIGAND.SPLIT_LIGAND: conn_labels=['Cl']\n", - "LIGAND.SPLIT_LIGAND: conn_coord=[[1.3562608, -0.0638992, 5.1197601]]\n", - "LIGAND.SPLIT_LIGAND: conn_radii=[1.02]\n", - "blocklist=[[0]]\n", - "LIGAND.SPLIT_LIGAND: block=[0]\n", - "LIGAND.SPLIT_LIGAND: self.indices=[0]\n", - "LIGAND.SPLIT_LIGAND: conn_idx=[0]\n", - "LIGAND.SPLIT_LIGAND: conn_labels=['Cl']\n", - "LIGAND.SPLIT_LIGAND: conn_coord=[[2.7576338000000002, -3.8316994000000006, 5.1099833]]\n", - "LIGAND.SPLIT_LIGAND: conn_radii=[1.02]\n", - "blocklist=[[0]]\n", - "LIGAND.SPLIT_LIGAND: block=[0]\n", - "LIGAND.SPLIT_LIGAND: self.indices=[0]\n", - "LIGAND.SPLIT_LIGAND: conn_idx=[0]\n", - "LIGAND.SPLIT_LIGAND: conn_labels=['Cl']\n", - "LIGAND.SPLIT_LIGAND: conn_coord=[[3.2896384000000003, -1.1564794000000003, 1.8108721]]\n", - "LIGAND.SPLIT_LIGAND: conn_radii=[1.02]\n", - "blocklist=[[0]]\n", - "LIGAND.SPLIT_LIGAND: block=[0]\n", - "LIGAND.SPLIT_LIGAND: self.indices=[0]\n", - "LIGAND.SPLIT_LIGAND: conn_idx=[0]\n", - "LIGAND.SPLIT_LIGAND: conn_labels=['Cl']\n", - "LIGAND.SPLIT_LIGAND: conn_coord=[[4.8684929, -0.5616564000000004, 5.7432997]]\n", - "LIGAND.SPLIT_LIGAND: conn_radii=[1.02]\n", - "blocklist=[[0]]\n", - "LIGAND.SPLIT_LIGAND: block=[0]\n", - "\n", - "LIGAND.SPLIT_LIGAND: self.indices=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]\n", - "LIGAND.SPLIT_LIGAND: conn_idx=[0, 2, 4, 6, 8]\n", - "LIGAND.SPLIT_LIGAND: conn_labels=['C', 'C', 'C', 'C', 'C']\n", - "LIGAND.SPLIT_LIGAND: conn_coord=[[8.4662071, 4.3093526, 1.5686258], [8.4177716, 3.6384001, 0.3649988], [9.0069, 2.4157695, 0.5757422], [9.425084, 2.3344473, 1.9879399], [9.061447600000001, 3.5520773, 2.5593369]]\n", - "LIGAND.SPLIT_LIGAND: conn_radii=[0.73, 0.73, 0.73, 0.73, 0.73]\n", - "blocklist=[[0, 1, 2, 3, 4]]\n", - "LIGAND.SPLIT_LIGAND: block=[0, 1, 2, 3, 4]\n", - "protonation_states=[------------- Cell2mol Protonation ----------------\n", - " Status = True\n", - " Labels = ['C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'H']\n", - " Type = Local\n", - " Atoms added in positions = [1 0 0 0 0 0 0 0 0 0]\n", - " Atoms blocked (no atoms added) = [1 0 1 0 1 0 1 0 1 0]\n", - "---------------------------------------------------\n", - "]\n", - "smiles='[H]C1=C([H])C([H])([H])C([H])=C1[H]'\n", - "smiles='[H][C+]1[C-]([H])[C-]([H])C([H])([H])[C-]1[H]'\n", - "smiles='[H][C+]1[C-]([H])[C+]([H])C([H])([H])[C-]1[H]'\n", - "smiles='[H][C+]1[C-]([H])[C-]([H])[C-]([H])C1([H])[H]'\n", - "smiles='[H][C+]1[C+]([H])C([H])([H])[C+]([H])[C-]1[H]'\n", - "H5-C5\n", - "spec.protonation_states=[------------- Cell2mol Protonation ----------------\n", - " Status = True\n", - " Labels = ['C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'H']\n", - " Type = Local\n", - " Atoms added in positions = [1 0 0 0 0 0 0 0 0 0]\n", - " Atoms blocked (no atoms added) = [1 0 1 0 1 0 1 0 1 0]\n", - "---------------------------------------------------\n", - "]\n", - "\n", - "LIGAND.SPLIT_LIGAND: self.indices=[0, 1, 2, 3, 4, 5, 6, 7, 8]\n", - "LIGAND.SPLIT_LIGAND: conn_idx=[0, 1, 3, 5, 7]\n", - "LIGAND.SPLIT_LIGAND: conn_labels=['C', 'C', 'C', 'C', 'C']\n", - "LIGAND.SPLIT_LIGAND: conn_coord=[[6.1022008, 2.0607668, 3.3610307], [5.5104028, 3.0110239, 2.5441286], [5.3684013, 2.5137605, 1.2025407], [5.8997816, 1.2250349, 1.2351299], [6.3650269, 0.9240044, 2.5495601]]\n", - "LIGAND.SPLIT_LIGAND: conn_radii=[0.73, 0.73, 0.73, 0.73, 0.73]\n", - "blocklist=[[0, 1, 2, 3, 4]]\n", - "LIGAND.SPLIT_LIGAND: block=[0, 1, 2, 3, 4]\n", - "protonation_states=[------------- Cell2mol Protonation ----------------\n", - " Status = True\n", - " Labels = ['C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'H']\n", - " Type = Local\n", - " Atoms added in positions = [0 1 0 0 0 0 0 0 0]\n", - " Atoms blocked (no atoms added) = [0 1 0 1 0 1 0 1 0]\n", - "---------------------------------------------------\n", - "]\n", - "smiles='[H][C+]1CC([H])([H])[C+]([H])[C-]1[H]'\n", - "smiles='[H]C1=[C-]C([H])([H])C([H])=C1[H]'\n", - "smiles='[H][C+]1[C+]([H])C([H])([H])C[C-]1[H]'\n", - "smiles='[H][C+]1CC([H])([H])[C-]([H])[C-]1[H]'\n", - "smiles='[H][C+]1CC([H])([H])[C+]([H])[C+]1[H]'\n", - "H4-C5\n", - "spec.protonation_states=[------------- Cell2mol Protonation ----------------\n", - " Status = True\n", - " Labels = ['C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'H']\n", - " Type = Local\n", - " Atoms added in positions = [0 1 0 0 0 0 0 0 0]\n", - " Atoms blocked (no atoms added) = [0 1 0 1 0 1 0 1 0]\n", - "---------------------------------------------------\n", - "]\n", - "\n", - "LIGAND.SPLIT_LIGAND: self.indices=[0]\n", - "LIGAND.SPLIT_LIGAND: conn_idx=[0]\n", - "LIGAND.SPLIT_LIGAND: conn_labels=['Cl']\n", - "LIGAND.SPLIT_LIGAND: conn_coord=[[6.985123, 2.3016164, 7.6030555]]\n", - "LIGAND.SPLIT_LIGAND: conn_radii=[1.02]\n", - "blocklist=[[0]]\n", - "LIGAND.SPLIT_LIGAND: block=[0]\n", - "\n", - "\n", - "[[-1], [2], [-1], [-2], [2], [2, 3, 0]]\n" - ] - } - ], - "source": [ - "selected_cs = []\n", - "for idx, spec in enumerate(newcell.unique_species):\n", - "# print(\"doing\", spec)\n", - " if spec.subtype != \"metal\":\n", - " spec.get_protonation_states()\n", - " spec.get_possible_cs()\n", - " print(spec.formula)\n", - " selected_cs.append(list([cs.corr_total_charge for cs in spec.possible_cs]))\n", - " print(f\"{spec.protonation_states=}\")\n", - "# for prot in spec.protonation_states :\n", - "# for sub_spec, sub_prot in zip(spec.coord, prot.coords):\n", - "# print(sub_spec, sub_prot, (sub_spec == sub_prot)) \n", - "# print(\"==========\") \n", - "# for cs in spec.possible_cs :\n", - "# for sub_spec, sub_cs_prot in zip(spec.coord, cs.protonation.coords):\n", - "# print(sub_spec, sub_cs_prot, (sub_spec == sub_cs_prot)) \n", - " \n", - "# print(\"==========\") \n", - "# for prot, cs in zip(spec.protonation_states, spec.possible_cs) :\n", - "# for sub_prot, sub_cs_prot in zip(prot.coords, cs.protonation.coords):\n", - "# print(sub_prot, sub_cs_prot, (sub_prot == sub_cs_prot)) \n", - " else :\n", - " spec.get_possible_cs()\n", - " selected_cs.append(spec.possible_cs) \n", - " print(\"\")\n", - "print(selected_cs)" - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "id": "2972ca26", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[[-1], [2], [-1], [-2], [2], [2, 3, 0]]" - ] - }, - "execution_count": 18, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "selected_cs" - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "id": "2de46e92", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "BALANCE: iterlist [[-1], [2], [-1], [-2], [2], [2, 3, 0]]\n", - "BALANCE: unique_indices [0, 0, 0, 0, 0, 0, 1, 1, 2, 3, 0, 4, 5, 3, 2, 0, 4, 5]\n", - "BALANCE: tmpdistr [(-1, 2, -1, -2, 2, 2), (-1, 2, -1, -2, 2, 3), (-1, 2, -1, -2, 2, 0)]\n", - "BALANCE: alldistr added: [-1, -1, -1, -1, -1, -1, 2, 2, -1, -2, -1, 2, 2, -2, -1, -1, 2, 2]\n", - "d=[-1, -1, -1, -1, -1, -1, 2, 2, -1, -2, -1, 2, 2, -2, -1, -1, 2, 2]\n", - "BALANCE: alldistr added: [-1, -1, -1, -1, -1, -1, 2, 2, -1, -2, -1, 2, 3, -2, -1, -1, 2, 3]\n", - "d=[-1, -1, -1, -1, -1, -1, 2, 2, -1, -2, -1, 2, 2, -2, -1, -1, 2, 2]\n", - "d=[-1, -1, -1, -1, -1, -1, 2, 2, -1, -2, -1, 2, 3, -2, -1, -1, 2, 3]\n", - "BALANCE: alldistr added: [-1, -1, -1, -1, -1, -1, 2, 2, -1, -2, -1, 2, 0, -2, -1, -1, 2, 0]\n", - "d=[-1, -1, -1, -1, -1, -1, 2, 2, -1, -2, -1, 2, 2, -2, -1, -1, 2, 2]\n", - "d=[-1, -1, -1, -1, -1, -1, 2, 2, -1, -2, -1, 2, 3, -2, -1, -1, 2, 3]\n", - "d=[-1, -1, -1, -1, -1, -1, 2, 2, -1, -2, -1, 2, 0, -2, -1, -1, 2, 0]\n" - ] - } - ], - "source": [ - "final_charge_distribution = balance_charge(newcell.unique_indices, newcell.unique_species, debug=debug)" - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "id": "6e2772ef", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[[-1, -1, -1, -1, -1, -1, 2, 2, -1, -2, -1, 2, 3, -2, -1, -1, 2, 3]]" - ] - }, - "execution_count": 20, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "final_charge_distribution" - ] - }, - { - "cell_type": "code", - "execution_count": 23, - "id": "a4947716", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "H9-C10-Cl-Fe-Hg\n", - "|- H5-C5\n", - "|-- C5\n", - "|--- Fe\n", - "C5\n", - "['Fe', 'C', 'C', 'C', 'C', 'C'] [[7.3654285, 2.5762879, 1.7854525], [8.4662071, 4.3093526, 1.5686258], [8.4177716, 3.6384001, 0.3649988], [9.0069, 2.4157695, 0.5757422], [9.425084, 2.3344473, 1.9879399], [9.061447600000001, 3.5520773, 2.5593369]]\n", - "C5 [[0 1 1 1 1 1]\n", - " [1 0 0 0 0 0]\n", - " [1 0 0 0 0 0]\n", - " [1 0 0 0 0 0]\n", - " [1 0 0 0 0 0]\n", - " [1 0 0 0 0 0]] [5 1 1 1 1 1]\n", - "C5\n", - "['Fe', 'C', 'C', 'C', 'C', 'C'] [[7.3654285, 2.5762879, 1.7854525], [6.1022008, 2.0607668, 3.3610307], [5.5104028, 3.0110239, 2.5441286], [5.3684013, 2.5137605, 1.2025407], [5.8997816, 1.2250349, 1.2351299], [6.3650269, 0.9240044, 2.5495601]]\n", - "C5 [[0 1 1 1 1 1]\n", - " [1 0 0 0 0 0]\n", - " [1 0 0 0 0 0]\n", - " [1 0 0 0 0 0]\n", - " [1 0 0 0 0 0]\n", - " [1 0 0 0 0 0]] [5 1 1 1 1 1]\n", - "Cl\n", - "['Fe', 'Cl'] [[7.3654285, 2.5762879, 1.7854525], [6.985123, 2.3016164, 7.6030555]]\n", - "Cl [[0 0]\n", - " [0 0]] [0 0]\n", - "Metal Fe is not connected to Cl\n", - "|--- Fe [------------- Cell2mol GROUP Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = group\n", - " Number of Atoms = 5\n", - " Formula = C5\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_ligand\n", - " Number of Metals = 1\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol GROUP Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = group\n", - " Number of Atoms = 5\n", - " Formula = C5\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_ligand\n", - " Number of Metals = 2\n", - "---------------------------------------------------\n", - "]\n", - "|- H4-C5\n", - "|-- C5\n", - "|--- Hg\n", - "C5\n", - "['Hg', 'C', 'C', 'C', 'C', 'C'] [[6.4998052, 2.1910413, 5.3595078], [8.4662071, 4.3093526, 1.5686258], [8.4177716, 3.6384001, 0.3649988], [9.0069, 2.4157695, 0.5757422], [9.425084, 2.3344473, 1.9879399], [9.061447600000001, 3.5520773, 2.5593369]]\n", - "C5 [[0 0 0 0 0 0]\n", - " [0 0 0 0 0 0]\n", - " [0 0 0 0 0 0]\n", - " [0 0 0 0 0 0]\n", - " [0 0 0 0 0 0]\n", - " [0 0 0 0 0 0]] [0 0 0 0 0 0]\n", - "Metal Hg is not connected to C5\n", - "C5\n", - "['Hg', 'C', 'C', 'C', 'C', 'C'] [[6.4998052, 2.1910413, 5.3595078], [6.1022008, 2.0607668, 3.3610307], [5.5104028, 3.0110239, 2.5441286], [5.3684013, 2.5137605, 1.2025407], [5.8997816, 1.2250349, 1.2351299], [6.3650269, 0.9240044, 2.5495601]]\n", - "C5 [[0 1 0 0 0 0]\n", - " [1 0 0 0 0 0]\n", - " [0 0 0 0 0 0]\n", - " [0 0 0 0 0 0]\n", - " [0 0 0 0 0 0]\n", - " [0 0 0 0 0 0]] [1 1 0 0 0 0]\n", - "Metal Hg is connected to C5 but not all atoms are connected\n", - "GROUP.SPLIT_GROUP: conn_idx=[0]\n", - "GROUP.SPLIT_GROUP: conn_labels=['C']\n", - "GROUP.SPLIT_GROUP: conn_coord=[[6.1022008, 2.0607668, 3.3610307]]\n", - "GROUP.SPLIT_GROUP: conn_radii=[0.73]\n", - "labels=['C'] 1\n", - "indices=None\n", - "blocklist=[[0]]\n", - "GROUP.SPLIT_GROUP: block=[0]\n", - "ADD_ATOM: Metalist length 1\n", - "ADD_ATOM: Ligand Atoms 9\n", - "ADD_ATOM: site= 0\n", - "ADD_ATOM: evaluating apos=array([6.1022008, 2.0607668, 3.3610307]) and tgt.coord=[6.4998052, 2.1910413, 5.3595078]\n", - "ADD_ATOM: received tmpconnec[posadded]=1\n", - "ADD_ATOM: Chosen Metal index None. H is added at site 0\n", - "ADD_ATOM: Metalist length 1\n", - "ADD_ATOM: Ligand Atoms 9\n", - "ADD_ATOM: site= 0\n", - "ADD_ATOM: evaluating apos=array([6.1022008, 2.0607668, 3.3610307]) and tgt.coord=[6.4998052, 2.1910413, 5.3595078]\n", - "ADD_ATOM: received tmpconnec[posadded]=1\n", - "ADD_ATOM: Chosen Metal index None. H is added at site 0\n", - "Metal Hg is connected to C\n", - "Cl\n", - "['Hg', 'Cl'] [[6.4998052, 2.1910413, 5.3595078], [6.985123, 2.3016164, 7.6030555]]\n", - "Cl [[0 1]\n", - " [1 0]] [1 1]\n", - "|--- Hg [------------- Cell2mol GROUP Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = group\n", - " Number of Atoms = 1\n", - " Formula = C\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_group\n", - " Number of Metals = 2\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol GROUP Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = group\n", - " Number of Atoms = 1\n", - " Formula = Cl\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_ligand\n", - " Number of Metals = 1\n", - "---------------------------------------------------\n", - "]\n", - "|--- Fe\n", - "C5\n", - "['Fe', 'C', 'C', 'C', 'C', 'C'] [[7.3654285, 2.5762879, 1.7854525], [8.4662071, 4.3093526, 1.5686258], [8.4177716, 3.6384001, 0.3649988], [9.0069, 2.4157695, 0.5757422], [9.425084, 2.3344473, 1.9879399], [9.061447600000001, 3.5520773, 2.5593369]]\n", - "C5 [[0 1 1 1 1 1]\n", - " [1 0 0 0 0 0]\n", - " [1 0 0 0 0 0]\n", - " [1 0 0 0 0 0]\n", - " [1 0 0 0 0 0]\n", - " [1 0 0 0 0 0]] [5 1 1 1 1 1]\n", - "C5\n", - "['Fe', 'C', 'C', 'C', 'C', 'C'] [[7.3654285, 2.5762879, 1.7854525], [6.1022008, 2.0607668, 3.3610307], [5.5104028, 3.0110239, 2.5441286], [5.3684013, 2.5137605, 1.2025407], [5.8997816, 1.2250349, 1.2351299], [6.3650269, 0.9240044, 2.5495601]]\n", - "C5 [[0 1 1 1 1 1]\n", - " [1 0 0 0 0 0]\n", - " [1 0 0 0 0 0]\n", - " [1 0 0 0 0 0]\n", - " [1 0 0 0 0 0]\n", - " [1 0 0 0 0 0]] [5 1 1 1 1 1]\n", - "Cl\n", - "['Fe', 'Cl'] [[7.3654285, 2.5762879, 1.7854525], [6.985123, 2.3016164, 7.6030555]]\n", - "Cl [[0 0]\n", - " [0 0]] [0 0]\n", - "Metal Fe is not connected to Cl\n", - "|--- Fe [------------- Cell2mol GROUP Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = group\n", - " Number of Atoms = 5\n", - " Formula = C5\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_ligand\n", - " Number of Metals = 1\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol GROUP Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = group\n", - " Number of Atoms = 5\n", - " Formula = C5\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_ligand\n", - " Number of Metals = 2\n", - "---------------------------------------------------\n", - "]\n", - "|- Cl\n", - "|-- Cl\n", - "|--- Hg\n", - "C5\n", - "['Hg', 'C', 'C', 'C', 'C', 'C'] [[6.4998052, 2.1910413, 5.3595078], [8.4662071, 4.3093526, 1.5686258], [8.4177716, 3.6384001, 0.3649988], [9.0069, 2.4157695, 0.5757422], [9.425084, 2.3344473, 1.9879399], [9.061447600000001, 3.5520773, 2.5593369]]\n", - "C5 [[0 0 0 0 0 0]\n", - " [0 0 0 0 0 0]\n", - " [0 0 0 0 0 0]\n", - " [0 0 0 0 0 0]\n", - " [0 0 0 0 0 0]\n", - " [0 0 0 0 0 0]] [0 0 0 0 0 0]\n", - "Metal Hg is not connected to C5\n", - "C5\n", - "['Hg', 'C', 'C', 'C', 'C', 'C'] [[6.4998052, 2.1910413, 5.3595078], [6.1022008, 2.0607668, 3.3610307], [5.5104028, 3.0110239, 2.5441286], [5.3684013, 2.5137605, 1.2025407], [5.8997816, 1.2250349, 1.2351299], [6.3650269, 0.9240044, 2.5495601]]\n", - "C5 [[0 1 0 0 0 0]\n", - " [1 0 0 0 0 0]\n", - " [0 0 0 0 0 0]\n", - " [0 0 0 0 0 0]\n", - " [0 0 0 0 0 0]\n", - " [0 0 0 0 0 0]] [1 1 0 0 0 0]\n", - "Metal Hg is connected to C5 but not all atoms are connected\n", - "GROUP.SPLIT_GROUP: conn_idx=[0]\n", - "GROUP.SPLIT_GROUP: conn_labels=['C']\n", - "GROUP.SPLIT_GROUP: conn_coord=[[6.1022008, 2.0607668, 3.3610307]]\n", - "GROUP.SPLIT_GROUP: conn_radii=[0.73]\n", - "labels=['C'] 1\n", - "indices=None\n", - "blocklist=[[0]]\n", - "GROUP.SPLIT_GROUP: block=[0]\n", - "ADD_ATOM: Metalist length 1\n", - "ADD_ATOM: Ligand Atoms 9\n", - "ADD_ATOM: site= 0\n", - "ADD_ATOM: evaluating apos=array([6.1022008, 2.0607668, 3.3610307]) and tgt.coord=[6.4998052, 2.1910413, 5.3595078]\n", - "ADD_ATOM: received tmpconnec[posadded]=1\n", - "ADD_ATOM: Chosen Metal index None. H is added at site 0\n", - "ADD_ATOM: Metalist length 1\n", - "ADD_ATOM: Ligand Atoms 9\n", - "ADD_ATOM: site= 0\n", - "ADD_ATOM: evaluating apos=array([6.1022008, 2.0607668, 3.3610307]) and tgt.coord=[6.4998052, 2.1910413, 5.3595078]\n", - "ADD_ATOM: received tmpconnec[posadded]=1\n", - "ADD_ATOM: Chosen Metal index None. H is added at site 0\n", - "Metal Hg is connected to C\n", - "Cl\n", - "['Hg', 'Cl'] [[6.4998052, 2.1910413, 5.3595078], [6.985123, 2.3016164, 7.6030555]]\n", - "Cl [[0 1]\n", - " [1 0]] [1 1]\n", - "|--- Hg [------------- Cell2mol GROUP Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = group\n", - " Number of Atoms = 1\n", - " Formula = C\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_group\n", - " Number of Metals = 2\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol GROUP Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = group\n", - " Number of Atoms = 1\n", - " Formula = Cl\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_ligand\n", - " Number of Metals = 1\n", - "---------------------------------------------------\n", - "]\n", - "\n", - "H9-C10-Cl-Fe-Hg\n", - "|- H4-C5\n", - "|-- C5\n", - "|--- Hg\n", - "C5\n", - "['Hg', 'C', 'C', 'C', 'C', 'C'] [[-3.1627853000000004, 6.4949012, 5.503552], [-3.028007, 7.7619381, 8.3134996], [-2.7651809, 6.6251757, 7.5020291], [-2.1733829, 5.6749186, 8.3189312], [-2.0313814, 6.1721819, 9.660519], [-2.5627616, 7.4609076, 9.6279299]]\n", - "C5 [[0 0 1 0 0 0]\n", - " [0 0 0 0 0 0]\n", - " [1 0 0 0 0 0]\n", - " [0 0 0 0 0 0]\n", - " [0 0 0 0 0 0]\n", - " [0 0 0 0 0 0]] [1 0 1 0 0 0]\n", - "Metal Hg is connected to C5 but not all atoms are connected\n", - "GROUP.SPLIT_GROUP: conn_idx=[1]\n", - "GROUP.SPLIT_GROUP: conn_labels=['C']\n", - "GROUP.SPLIT_GROUP: conn_coord=[[-2.7651809, 6.6251757, 7.5020291]]\n", - "GROUP.SPLIT_GROUP: conn_radii=[0.73]\n", - "labels=['C'] 1\n", - "indices=None\n", - "blocklist=[[0]]\n", - "GROUP.SPLIT_GROUP: block=[0]\n", - "ADD_ATOM: Metalist length 1\n", - "ADD_ATOM: Ligand Atoms 9\n", - "ADD_ATOM: site= 0\n", - "ADD_ATOM: evaluating apos=array([-3.028007 , 7.7619381, 8.3134996]) and tgt.coord=[-4.028408600000001, 6.1096545, 9.0776072]\n", - "ADD_ATOM: received tmpconnec[posadded]=1\n", - "ADD_ATOM: Chosen Metal index None. H is added at site 0\n", - "ADD_ATOM: Metalist length 1\n", - "ADD_ATOM: Ligand Atoms 9\n", - "ADD_ATOM: site= 0\n", - "ADD_ATOM: evaluating apos=array([-3.028007 , 7.7619381, 8.3134996]) and tgt.coord=[-4.028408600000001, 6.1096545, 9.0776072]\n", - "ADD_ATOM: received tmpconnec[posadded]=1\n", - "ADD_ATOM: Chosen Metal index None. H is added at site 0\n", - "Metal Hg is connected to C\n", - "C5\n", - "['Hg', 'C', 'C', 'C', 'C', 'C'] [[-3.1627853000000004, 6.4949012, 5.503552], [-5.0807517, 5.0475424, 10.4980609], [-5.66988, 6.2701729, 10.2873176], [-6.088064, 6.3514951, 8.8751198], [-5.7244276, 5.1338652, 8.3037229], [-5.1291871, 4.3765899, 9.2944339]]\n", - "C5 [[0 0 0 0 0 0]\n", - " [0 0 0 0 0 0]\n", - " [0 0 0 0 0 0]\n", - " [0 0 0 0 0 0]\n", - " [0 0 0 0 0 0]\n", - " [0 0 0 0 0 0]] [0 0 0 0 0 0]\n", - "Metal Hg is not connected to C5\n", - "Cl\n", - "['Hg', 'Cl'] [[-3.1627853000000004, 6.4949012, 5.503552], [-3.6481031, 6.3843261, 3.2600042]]\n", - "Cl [[0 1]\n", - " [1 0]] [1 1]\n", - "|--- Hg [------------- Cell2mol GROUP Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = group\n", - " Number of Atoms = 1\n", - " Formula = C\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_group\n", - " Number of Metals = 2\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol GROUP Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = group\n", - " Number of Atoms = 1\n", - " Formula = Cl\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_ligand\n", - " Number of Metals = 1\n", - "---------------------------------------------------\n", - "]\n", - "|--- Fe\n", - "C5\n", - "['Fe', 'C', 'C', 'C', 'C', 'C'] [[-4.028408600000001, 6.1096545, 9.0776072], [-3.028007, 7.7619381, 8.3134996], [-2.7651809, 6.6251757, 7.5020291], [-2.1733829, 5.6749186, 8.3189312], [-2.0313814, 6.1721819, 9.660519], [-2.5627616, 7.4609076, 9.6279299]]\n", - "C5 [[0 1 1 1 1 1]\n", - " [1 0 0 0 0 0]\n", - " [1 0 0 0 0 0]\n", - " [1 0 0 0 0 0]\n", - " [1 0 0 0 0 0]\n", - " [1 0 0 0 0 0]] [5 1 1 1 1 1]\n", - "C5\n", - "['Fe', 'C', 'C', 'C', 'C', 'C'] [[-4.028408600000001, 6.1096545, 9.0776072], [-5.0807517, 5.0475424, 10.4980609], [-5.66988, 6.2701729, 10.2873176], [-6.088064, 6.3514951, 8.8751198], [-5.7244276, 5.1338652, 8.3037229], [-5.1291871, 4.3765899, 9.2944339]]\n", - "C5 [[0 1 1 1 1 1]\n", - " [1 0 0 0 0 0]\n", - " [1 0 0 0 0 0]\n", - " [1 0 0 0 0 0]\n", - " [1 0 0 0 0 0]\n", - " [1 0 0 0 0 0]] [5 1 1 1 1 1]\n", - "Cl\n", - "['Fe', 'Cl'] [[-4.028408600000001, 6.1096545, 9.0776072], [-3.6481031, 6.3843261, 3.2600042]]\n", - "Cl [[0 0]\n", - " [0 0]] [0 0]\n", - "Metal Fe is not connected to Cl\n", - "|--- Fe [------------- Cell2mol GROUP Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = group\n", - " Number of Atoms = 5\n", - " Formula = C5\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_ligand\n", - " Number of Metals = 2\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol GROUP Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = group\n", - " Number of Atoms = 5\n", - " Formula = C5\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_ligand\n", - " Number of Metals = 1\n", - "---------------------------------------------------\n", - "]\n", - "|- H5-C5\n", - "|-- C5\n", - "|--- Fe\n", - "C5\n", - "['Fe', 'C', 'C', 'C', 'C', 'C'] [[-4.028408600000001, 6.1096545, 9.0776072], [-3.028007, 7.7619381, 8.3134996], [-2.7651809, 6.6251757, 7.5020291], [-2.1733829, 5.6749186, 8.3189312], [-2.0313814, 6.1721819, 9.660519], [-2.5627616, 7.4609076, 9.6279299]]\n", - "C5 [[0 1 1 1 1 1]\n", - " [1 0 0 0 0 0]\n", - " [1 0 0 0 0 0]\n", - " [1 0 0 0 0 0]\n", - " [1 0 0 0 0 0]\n", - " [1 0 0 0 0 0]] [5 1 1 1 1 1]\n", - "C5\n", - "['Fe', 'C', 'C', 'C', 'C', 'C'] [[-4.028408600000001, 6.1096545, 9.0776072], [-5.0807517, 5.0475424, 10.4980609], [-5.66988, 6.2701729, 10.2873176], [-6.088064, 6.3514951, 8.8751198], [-5.7244276, 5.1338652, 8.3037229], [-5.1291871, 4.3765899, 9.2944339]]\n", - "C5 [[0 1 1 1 1 1]\n", - " [1 0 0 0 0 0]\n", - " [1 0 0 0 0 0]\n", - " [1 0 0 0 0 0]\n", - " [1 0 0 0 0 0]\n", - " [1 0 0 0 0 0]] [5 1 1 1 1 1]\n", - "Cl\n", - "['Fe', 'Cl'] [[-4.028408600000001, 6.1096545, 9.0776072], [-3.6481031, 6.3843261, 3.2600042]]\n", - "Cl [[0 0]\n", - " [0 0]] [0 0]\n", - "Metal Fe is not connected to Cl\n", - "|--- Fe [------------- Cell2mol GROUP Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = group\n", - " Number of Atoms = 5\n", - " Formula = C5\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_ligand\n", - " Number of Metals = 2\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol GROUP Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = group\n", - " Number of Atoms = 5\n", - " Formula = C5\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_ligand\n", - " Number of Metals = 1\n", - "---------------------------------------------------\n", - "]\n", - "|- Cl\n", - "|-- Cl\n", - "|--- Hg\n", - "C5\n", - "['Hg', 'C', 'C', 'C', 'C', 'C'] [[-3.1627853000000004, 6.4949012, 5.503552], [-3.028007, 7.7619381, 8.3134996], [-2.7651809, 6.6251757, 7.5020291], [-2.1733829, 5.6749186, 8.3189312], [-2.0313814, 6.1721819, 9.660519], [-2.5627616, 7.4609076, 9.6279299]]\n", - "C5 [[0 0 1 0 0 0]\n", - " [0 0 0 0 0 0]\n", - " [1 0 0 0 0 0]\n", - " [0 0 0 0 0 0]\n", - " [0 0 0 0 0 0]\n", - " [0 0 0 0 0 0]] [1 0 1 0 0 0]\n", - "Metal Hg is connected to C5 but not all atoms are connected\n", - "GROUP.SPLIT_GROUP: conn_idx=[1]\n", - "GROUP.SPLIT_GROUP: conn_labels=['C']\n", - "GROUP.SPLIT_GROUP: conn_coord=[[-2.7651809, 6.6251757, 7.5020291]]\n", - "GROUP.SPLIT_GROUP: conn_radii=[0.73]\n", - "labels=['C'] 1\n", - "indices=None\n", - "blocklist=[[0]]\n", - "GROUP.SPLIT_GROUP: block=[0]\n", - "ADD_ATOM: Metalist length 1\n", - "ADD_ATOM: Ligand Atoms 9\n", - "ADD_ATOM: site= 0\n", - "ADD_ATOM: evaluating apos=array([-3.028007 , 7.7619381, 8.3134996]) and tgt.coord=[-4.028408600000001, 6.1096545, 9.0776072]\n", - "ADD_ATOM: received tmpconnec[posadded]=1\n", - "ADD_ATOM: Chosen Metal index None. H is added at site 0\n", - "ADD_ATOM: Metalist length 1\n", - "ADD_ATOM: Ligand Atoms 9\n", - "ADD_ATOM: site= 0\n", - "ADD_ATOM: evaluating apos=array([-3.028007 , 7.7619381, 8.3134996]) and tgt.coord=[-4.028408600000001, 6.1096545, 9.0776072]\n", - "ADD_ATOM: received tmpconnec[posadded]=1\n", - "ADD_ATOM: Chosen Metal index None. H is added at site 0\n", - "Metal Hg is connected to C\n", - "C5\n", - "['Hg', 'C', 'C', 'C', 'C', 'C'] [[-3.1627853000000004, 6.4949012, 5.503552], [-5.0807517, 5.0475424, 10.4980609], [-5.66988, 6.2701729, 10.2873176], [-6.088064, 6.3514951, 8.8751198], [-5.7244276, 5.1338652, 8.3037229], [-5.1291871, 4.3765899, 9.2944339]]\n", - "C5 [[0 0 0 0 0 0]\n", - " [0 0 0 0 0 0]\n", - " [0 0 0 0 0 0]\n", - " [0 0 0 0 0 0]\n", - " [0 0 0 0 0 0]\n", - " [0 0 0 0 0 0]] [0 0 0 0 0 0]\n", - "Metal Hg is not connected to C5\n", - "Cl\n", - "['Hg', 'Cl'] [[-3.1627853000000004, 6.4949012, 5.503552], [-3.6481031, 6.3843261, 3.2600042]]\n", - "Cl [[0 1]\n", - " [1 0]] [1 1]\n", - "|--- Hg [------------- Cell2mol GROUP Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = group\n", - " Number of Atoms = 1\n", - " Formula = C\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_group\n", - " Number of Metals = 2\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol GROUP Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = group\n", - " Number of Atoms = 1\n", - " Formula = Cl\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_ligand\n", - " Number of Metals = 1\n", - "---------------------------------------------------\n", - "]\n", - "\n" - ] - } - ], - "source": [ - "for mol in newcell.moleclist:\n", - " if mol.iscomplex:\n", - " if mol.formula == \"Cl6-Hg2\":\n", - " pass\n", - " else:\n", - " print(mol.formula)\n", - " for lig in mol.ligands:\n", - " print(\"|-\", lig.formula)\n", - " for group in lig.groups:\n", - " print(\"|--\", group.formula)\n", - " # print(\"|--\", group.metals)\n", - " for met in group.metals:\n", - " print(\"|---\", met.label)\n", - " met.groups = met.get_connected_groups(debug=debug)\n", - " print(\"|---\", met.label, met.groups)\n", - " print(\"\")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "8778094a", - "metadata": {}, - "outputs": [], - "source": [ - "for g in met.groups:\n", - " print(g.madjnum)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "25cbee0a", - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "79e64274", - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "29d29f5e", - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": 22, - "id": "bbe21465", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "6 Species (Metal or Ligand or Molecules) to Characterize\n", - " POSCHARGE will try charges [0, -1, 1, -2, 2]\n", - "smiles='[Cl-]'\n", - " POSCHARGE: charge 0 with smiles [Cl-]\n", - "smiles='[Cl-]'\n", - " POSCHARGE: charge 0 with smiles [Cl-]\n", - "smiles='[Cl-]'\n", - " POSCHARGE: charge 0 with smiles [Cl-]\n", - "smiles='[Cl-]'\n", - " POSCHARGE: charge 0 with smiles [Cl-]\n", - "smiles='[Cl-]'\n", - " POSCHARGE: charge 0 with smiles [Cl-]\n", - " NEW SELECT FUNCTION: uncorr_total: [-1, -1, -1, -1, -1]\n", - " NEW SELECT FUNCTION: uncorr_abs_total: [1, 1, 1, 1, 1]\n", - " NEW SELECT FUNCTION: uncorr_abs_atcharge: [1, 1, 1, 1, 1]\n", - " NEW SELECT FUNCTION: uncorr_zwitt: [False, False, False, False, False]\n", - " NEW SELECT FUNCTION: coincide: [False, True, False, False, False]\n", - " NEW SELECT FUNCTION: listofmintot: [0, 1, 2, 3, 4]\n", - " NEW SELECT FUNCTION: listofminabs: [0, 1, 2, 3, 4]\n", - " NEW SELECT FUNCTION: tmplist: [1], including:\n", - " NEW SELECT FUNCTION: Corr_charge=-1\n", - " NEW SELECT FUNCTION: Smiles=[Cl-]\n", - " NEW SELECT FUNCTION: found corr_charges=[-1]\n", - " NEW SELECT FUNCTION: doing tgt_charge=-1\n", - " NEW SELECT FUNCTION: charge_state added\n", - " NEW SELECT FUNCTION: Case 1, only one entry for -1 in tmplist\n", - " POSCHARGE will try charges [0, -1, 1, -2, 2]\n", - "smiles='[H]C1=C([H])C([H])([H])C([H])=C1[H]'\n", - " POSCHARGE: charge 0 with smiles [H]C1=C([H])C([H])([H])C([H])=C1[H]\n", - "smiles='[H][C+]1[C-]([H])[C-]([H])C([H])([H])[C-]1[H]'\n", - " POSCHARGE: charge 0 with smiles [H][C+]1[C-]([H])[C-]([H])C([H])([H])[C-]1[H]\n", - "smiles='[H][C+]1[C-]([H])[C+]([H])C([H])([H])[C-]1[H]'\n", - " POSCHARGE: charge 0 with smiles [H][C+]1[C-]([H])[C+]([H])C([H])([H])[C-]1[H]\n", - "smiles='[H][C+]1[C-]([H])[C-]([H])[C-]([H])C1([H])[H]'\n", - " POSCHARGE: charge 0 with smiles [H][C+]1[C-]([H])[C-]([H])[C-]([H])C1([H])[H]\n", - "smiles='[H][C+]1[C+]([H])C([H])([H])[C+]([H])[C-]1[H]'\n", - " POSCHARGE: charge 0 with smiles [H][C+]1[C+]([H])C([H])([H])[C+]([H])[C-]1[H]\n", - " NEW SELECT FUNCTION: uncorr_total: [0, -2, 0, -2, 2]\n", - " NEW SELECT FUNCTION: uncorr_abs_total: [0, 2, 0, 2, 2]\n", - " NEW SELECT FUNCTION: uncorr_abs_atcharge: [0, 4, 4, 4, 4]\n", - " NEW SELECT FUNCTION: uncorr_zwitt: [False, True, True, True, True]\n", - " NEW SELECT FUNCTION: coincide: [True, False, False, True, True]\n", - " NEW SELECT FUNCTION: listofmintot: [0, 2]\n", - " NEW SELECT FUNCTION: listofminabs: [0]\n", - " NEW SELECT FUNCTION: tmplist: [0], including:\n", - " NEW SELECT FUNCTION: Corr_charge=-1\n", - " NEW SELECT FUNCTION: Smiles=[H]C1=C([H])C([H])([H])C([H])=C1[H]\n", - " NEW SELECT FUNCTION: found corr_charges=[-1]\n", - " NEW SELECT FUNCTION: doing tgt_charge=-1\n", - " NEW SELECT FUNCTION: charge_state added\n", - " NEW SELECT FUNCTION: Case 1, only one entry for -1 in tmplist\n", - " POSCHARGE will try charges [0, -1, 1, -2, 2]\n", - "smiles='[H][C+]1CC([H])([H])[C+]([H])[C-]1[H]'\n", - " POSCHARGE: charge 0 with smiles [H][C+]1CC([H])([H])[C+]([H])[C-]1[H]\n", - "smiles='[H]C1=[C-]C([H])([H])C([H])=C1[H]'\n", - " POSCHARGE: charge 0 with smiles [H]C1=[C-]C([H])([H])C([H])=C1[H]\n", - "smiles='[H][C+]1[C+]([H])C([H])([H])C[C-]1[H]'\n", - " POSCHARGE: charge 0 with smiles [H][C+]1[C+]([H])C([H])([H])C[C-]1[H]\n", - "smiles='[H][C+]1CC([H])([H])[C-]([H])[C-]1[H]'\n", - " POSCHARGE: charge 0 with smiles [H][C+]1CC([H])([H])[C-]([H])[C-]1[H]\n", - "smiles='[H][C+]1CC([H])([H])[C+]([H])[C+]1[H]'\n", - " POSCHARGE: charge 0 with smiles [H][C+]1CC([H])([H])[C+]([H])[C+]1[H]\n", - " NEW SELECT FUNCTION: uncorr_total: [1, -1, 1, -1, 3]\n", - " NEW SELECT FUNCTION: uncorr_abs_total: [1, 1, 1, 1, 3]\n", - " NEW SELECT FUNCTION: uncorr_abs_atcharge: [3, 1, 3, 3, 3]\n", - " NEW SELECT FUNCTION: uncorr_zwitt: [True, False, True, True, False]\n", - " NEW SELECT FUNCTION: coincide: [False, True, True, False, False]\n", - " NEW SELECT FUNCTION: listofmintot: [0, 1, 2, 3]\n", - " NEW SELECT FUNCTION: listofminabs: [1]\n", - " NEW SELECT FUNCTION: tmplist: [1], including:\n", - " NEW SELECT FUNCTION: Corr_charge=-2\n", - " NEW SELECT FUNCTION: Smiles=[H]C1=[C-]C([H])([H])C([H])=C1[H]\n", - " NEW SELECT FUNCTION: found corr_charges=[-2]\n", - " NEW SELECT FUNCTION: doing tgt_charge=-2\n", - " NEW SELECT FUNCTION: charge_state added\n", - " NEW SELECT FUNCTION: Case 1, only one entry for -2 in tmplist\n", - "BALANCE: iterlist [[-1], [2], [-1], [-2], [2], [2, 3, 0]]\n", - "BALANCE: unique_indices [0, 0, 0, 0, 0, 0, 1, 1, 2, 3, 0, 4, 5, 3, 2, 0, 4, 5]\n", - "BALANCE: tmpdistr [(-1, 2, -1, -2, 2, 2), (-1, 2, -1, -2, 2, 3), (-1, 2, -1, -2, 2, 0)]\n", - "BALANCE: alldistr added: [-1, -1, -1, -1, -1, -1, 2, 2, -1, -2, -1, 2, 2, -2, -1, -1, 2, 2]\n", - "d=[-1, -1, -1, -1, -1, -1, 2, 2, -1, -2, -1, 2, 2, -2, -1, -1, 2, 2]\n", - "BALANCE: alldistr added: [-1, -1, -1, -1, -1, -1, 2, 2, -1, -2, -1, 2, 3, -2, -1, -1, 2, 3]\n", - "d=[-1, -1, -1, -1, -1, -1, 2, 2, -1, -2, -1, 2, 2, -2, -1, -1, 2, 2]\n", - "d=[-1, -1, -1, -1, -1, -1, 2, 2, -1, -2, -1, 2, 3, -2, -1, -1, 2, 3]\n", - "BALANCE: alldistr added: [-1, -1, -1, -1, -1, -1, 2, 2, -1, -2, -1, 2, 0, -2, -1, -1, 2, 0]\n", - "d=[-1, -1, -1, -1, -1, -1, 2, 2, -1, -2, -1, 2, 2, -2, -1, -1, 2, 2]\n", - "d=[-1, -1, -1, -1, -1, -1, 2, 2, -1, -2, -1, 2, 3, -2, -1, -1, 2, 3]\n", - "d=[-1, -1, -1, -1, -1, -1, 2, 2, -1, -2, -1, 2, 0, -2, -1, -1, 2, 0]\n", - "\n", - "FINAL Charge Distribution: [[-1, -1, -1, -1, -1, -1, 2, 2, -1, -2, -1, 2, 3, -2, -1, -1, 2, 3]]\n", - "\n", - "#########################################\n", - "Assigning Charges and Preparing Molecules\n", - "#########################################\n", - "------------- Cell2mol LIGAND Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = ligand\n", - " Number of Atoms = 1\n", - " Formula = Cl\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_complex\n", - " Number of Groups = 1\n", - "---------------------------------------------------\n", - " [0, 1, 2, 3, 4, 5, 10, 15] -1\n", - "Target charge -1 of Cl exists in [-1].\n", - "Cl\n", - " GET_PROTONATION_STATES: evaluating non-haptic group with index 0 and label Cl\n", - "protonation_states=[------------- Cell2mol Protonation ----------------\n", - " Status = True\n", - " Labels = ['Cl']\n", - " Type = Local\n", - " Atoms added in positions = [0]\n", - " Atoms blocked (no atoms added) = [1]\n", - "---------------------------------------------------\n", - "]\n", - " POSCHARGE will try charges [0, -1, 1, -2, 2]\n", - "smiles='[Cl-]'\n", - " POSCHARGE: charge 0 with smiles [Cl-]\n", - "smiles='[Cl-]'\n", - " POSCHARGE: charge 0 with smiles [Cl-]\n", - "smiles='[Cl-]'\n", - " POSCHARGE: charge 0 with smiles [Cl-]\n", - "smiles='[Cl-]'\n", - " POSCHARGE: charge 0 with smiles [Cl-]\n", - "smiles='[Cl-]'\n", - " POSCHARGE: charge 0 with smiles [Cl-]\n", - " NEW SELECT FUNCTION: uncorr_total: [-1, -1, -1, -1, -1]\n", - " NEW SELECT FUNCTION: uncorr_abs_total: [1, 1, 1, 1, 1]\n", - " NEW SELECT FUNCTION: uncorr_abs_atcharge: [1, 1, 1, 1, 1]\n", - " NEW SELECT FUNCTION: uncorr_zwitt: [False, False, False, False, False]\n", - " NEW SELECT FUNCTION: coincide: [False, True, False, False, False]\n", - " NEW SELECT FUNCTION: listofmintot: [0, 1, 2, 3, 4]\n", - " NEW SELECT FUNCTION: listofminabs: [0, 1, 2, 3, 4]\n", - " NEW SELECT FUNCTION: tmplist: [1], including:\n", - " NEW SELECT FUNCTION: Corr_charge=-1\n", - " NEW SELECT FUNCTION: Smiles=[Cl-]\n", - " NEW SELECT FUNCTION: found corr_charges=[-1]\n", - " NEW SELECT FUNCTION: doing tgt_charge=-1\n", - " NEW SELECT FUNCTION: charge_state added\n", - " NEW SELECT FUNCTION: Case 1, only one entry for -1 in tmplist\n", - "Target charge -1 of Cl exists in [-1].\n", - "------------- Cell2mol LIGAND Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = ligand\n", - " Number of Atoms = 1\n", - " Formula = Cl\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = -1\n", - " Smiles = [Cl-]\n", - " Origin = split_complex\n", - " Number of Groups = 1\n", - "---------------------------------------------------\n", - " [0, 1, 2, 3, 4, 5, 10, 15] -1\n", - "Target charge -1 of Cl exists in [-1].\n", - "Cl\n", - "ADD_ATOM: Metalist length 1\n", - "ADD_ATOM: Ligand Atoms 1\n", - "ADD_ATOM: site= 0\n", - "ADD_ATOM: evaluating apos=array([2.9351153, 0.5309238, 9.0521877]) and tgt.coord=[2.8686395, 1.120505, 6.7807219]\n", - "ADD_ATOM: received tmpconnec[posadded]=1\n", - "ADD_ATOM: Chosen Metal index None. H is added at site 0\n", - " GET_PROTONATION_STATES: evaluating non-haptic group with index 0 and label Cl\n", - "protonation_states=[------------- Cell2mol Protonation ----------------\n", - " Status = True\n", - " Labels = ['Cl']\n", - " Type = Local\n", - " Atoms added in positions = [0]\n", - " Atoms blocked (no atoms added) = [1]\n", - "---------------------------------------------------\n", - "]\n", - " POSCHARGE will try charges [0, -1, 1, -2, 2]\n", - "smiles='[Cl-]'\n", - " POSCHARGE: charge 0 with smiles [Cl-]\n", - "smiles='[Cl-]'\n", - " POSCHARGE: charge 0 with smiles [Cl-]\n", - "smiles='[Cl-]'\n", - " POSCHARGE: charge 0 with smiles [Cl-]\n", - "smiles='[Cl-]'\n", - " POSCHARGE: charge 0 with smiles [Cl-]\n", - "smiles='[Cl-]'\n", - " POSCHARGE: charge 0 with smiles [Cl-]\n", - " NEW SELECT FUNCTION: uncorr_total: [-1, -1, -1, -1, -1]\n", - " NEW SELECT FUNCTION: uncorr_abs_total: [1, 1, 1, 1, 1]\n", - " NEW SELECT FUNCTION: uncorr_abs_atcharge: [1, 1, 1, 1, 1]\n", - " NEW SELECT FUNCTION: uncorr_zwitt: [False, False, False, False, False]\n", - " NEW SELECT FUNCTION: coincide: [False, True, False, False, False]\n", - " NEW SELECT FUNCTION: listofmintot: [0, 1, 2, 3, 4]\n", - " NEW SELECT FUNCTION: listofminabs: [0, 1, 2, 3, 4]\n", - " NEW SELECT FUNCTION: tmplist: [1], including:\n", - " NEW SELECT FUNCTION: Corr_charge=-1\n", - " NEW SELECT FUNCTION: Smiles=[Cl-]\n", - " NEW SELECT FUNCTION: found corr_charges=[-1]\n", - " NEW SELECT FUNCTION: doing tgt_charge=-1\n", - " NEW SELECT FUNCTION: charge_state added\n", - " NEW SELECT FUNCTION: Case 1, only one entry for -1 in tmplist\n", - "Target charge -1 of Cl exists in [-1].\n", - "------------- Cell2mol LIGAND Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = ligand\n", - " Number of Atoms = 1\n", - " Formula = Cl\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = -1\n", - " Smiles = [Cl-]\n", - " Origin = split_complex\n", - " Number of Groups = 1\n", - "---------------------------------------------------\n", - " [0, 1, 2, 3, 4, 5, 10, 15] -1\n", - "Target charge -1 of Cl exists in [-1].\n", - "Cl\n", - "ADD_ATOM: Metalist length 1\n", - "ADD_ATOM: Ligand Atoms 1\n", - "ADD_ATOM: site= 0\n", - "ADD_ATOM: evaluating apos=array([ 1.3562608, -0.0638992, 5.1197601]) and tgt.coord=[2.8686395, 1.120505, 6.7807219]\n", - "ADD_ATOM: received tmpconnec[posadded]=1\n", - "ADD_ATOM: Chosen Metal index None. H is added at site 0\n", - "ADD_ATOM: Metalist length 1\n", - "ADD_ATOM: Ligand Atoms 1\n", - "ADD_ATOM: site= 0\n", - "ADD_ATOM: evaluating apos=array([ 1.3562608, -0.0638992, 5.1197601]) and tgt.coord=[2.8686395, 1.120505, 6.7807219]\n", - "ADD_ATOM: received tmpconnec[posadded]=1\n", - "ADD_ATOM: Chosen Metal index None. H is added at site 0\n", - " GET_PROTONATION_STATES: evaluating non-haptic group with index 0 and label Cl\n", - "protonation_states=[------------- Cell2mol Protonation ----------------\n", - " Status = True\n", - " Labels = ['Cl']\n", - " Type = Local\n", - " Atoms added in positions = [0]\n", - " Atoms blocked (no atoms added) = [1]\n", - "---------------------------------------------------\n", - "]\n", - " POSCHARGE will try charges [0, -1, 1, -2, 2]\n", - "smiles='[Cl-]'\n", - " POSCHARGE: charge 0 with smiles [Cl-]\n", - "smiles='[Cl-]'\n", - " POSCHARGE: charge 0 with smiles [Cl-]\n", - "smiles='[Cl-]'\n", - " POSCHARGE: charge 0 with smiles [Cl-]\n", - "smiles='[Cl-]'\n", - " POSCHARGE: charge 0 with smiles [Cl-]\n", - "smiles='[Cl-]'\n", - " POSCHARGE: charge 0 with smiles [Cl-]\n", - " NEW SELECT FUNCTION: uncorr_total: [-1, -1, -1, -1, -1]\n", - " NEW SELECT FUNCTION: uncorr_abs_total: [1, 1, 1, 1, 1]\n", - " NEW SELECT FUNCTION: uncorr_abs_atcharge: [1, 1, 1, 1, 1]\n", - " NEW SELECT FUNCTION: uncorr_zwitt: [False, False, False, False, False]\n", - " NEW SELECT FUNCTION: coincide: [False, True, False, False, False]\n", - " NEW SELECT FUNCTION: listofmintot: [0, 1, 2, 3, 4]\n", - " NEW SELECT FUNCTION: listofminabs: [0, 1, 2, 3, 4]\n", - " NEW SELECT FUNCTION: tmplist: [1], including:\n", - " NEW SELECT FUNCTION: Corr_charge=-1\n", - " NEW SELECT FUNCTION: Smiles=[Cl-]\n", - " NEW SELECT FUNCTION: found corr_charges=[-1]\n", - " NEW SELECT FUNCTION: doing tgt_charge=-1\n", - " NEW SELECT FUNCTION: charge_state added\n", - " NEW SELECT FUNCTION: Case 1, only one entry for -1 in tmplist\n", - "Target charge -1 of Cl exists in [-1].\n", - "------------- Cell2mol LIGAND Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = ligand\n", - " Number of Atoms = 1\n", - " Formula = Cl\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = -1\n", - " Smiles = [Cl-]\n", - " Origin = split_complex\n", - " Number of Groups = 1\n", - "---------------------------------------------------\n", - " [0, 1, 2, 3, 4, 5, 10, 15] -1\n", - "Target charge -1 of Cl exists in [-1].\n", - "Cl\n", - "ADD_ATOM: Metalist length 1\n", - "ADD_ATOM: Ligand Atoms 1\n", - "ADD_ATOM: site= 0\n", - "ADD_ATOM: evaluating apos=array([ 2.7576338, -3.8316994, 5.1099833]) and tgt.coord=[3.3561142, -1.7460605999999999, 4.0823379]\n", - "ADD_ATOM: received tmpconnec[posadded]=1\n", - "ADD_ATOM: Chosen Metal index None. H is added at site 0\n", - " GET_PROTONATION_STATES: evaluating non-haptic group with index 0 and label Cl\n", - "protonation_states=[------------- Cell2mol Protonation ----------------\n", - " Status = True\n", - " Labels = ['Cl']\n", - " Type = Local\n", - " Atoms added in positions = [0]\n", - " Atoms blocked (no atoms added) = [1]\n", - "---------------------------------------------------\n", - "]\n", - " POSCHARGE will try charges [0, -1, 1, -2, 2]\n", - "smiles='[Cl-]'\n", - " POSCHARGE: charge 0 with smiles [Cl-]\n", - "smiles='[Cl-]'\n", - " POSCHARGE: charge 0 with smiles [Cl-]\n", - "smiles='[Cl-]'\n", - " POSCHARGE: charge 0 with smiles [Cl-]\n", - "smiles='[Cl-]'\n", - " POSCHARGE: charge 0 with smiles [Cl-]\n", - "smiles='[Cl-]'\n", - " POSCHARGE: charge 0 with smiles [Cl-]\n", - " NEW SELECT FUNCTION: uncorr_total: [-1, -1, -1, -1, -1]\n", - " NEW SELECT FUNCTION: uncorr_abs_total: [1, 1, 1, 1, 1]\n", - " NEW SELECT FUNCTION: uncorr_abs_atcharge: [1, 1, 1, 1, 1]\n", - " NEW SELECT FUNCTION: uncorr_zwitt: [False, False, False, False, False]\n", - " NEW SELECT FUNCTION: coincide: [False, True, False, False, False]\n", - " NEW SELECT FUNCTION: listofmintot: [0, 1, 2, 3, 4]\n", - " NEW SELECT FUNCTION: listofminabs: [0, 1, 2, 3, 4]\n", - " NEW SELECT FUNCTION: tmplist: [1], including:\n", - " NEW SELECT FUNCTION: Corr_charge=-1\n", - " NEW SELECT FUNCTION: Smiles=[Cl-]\n", - " NEW SELECT FUNCTION: found corr_charges=[-1]\n", - " NEW SELECT FUNCTION: doing tgt_charge=-1\n", - " NEW SELECT FUNCTION: charge_state added\n", - " NEW SELECT FUNCTION: Case 1, only one entry for -1 in tmplist\n", - "Target charge -1 of Cl exists in [-1].\n", - "------------- Cell2mol LIGAND Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = ligand\n", - " Number of Atoms = 1\n", - " Formula = Cl\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = -1\n", - " Smiles = [Cl-]\n", - " Origin = split_complex\n", - " Number of Groups = 1\n", - "---------------------------------------------------\n", - " [0, 1, 2, 3, 4, 5, 10, 15] -1\n", - "Target charge -1 of Cl exists in [-1].\n", - "Cl\n", - "ADD_ATOM: Metalist length 1\n", - "ADD_ATOM: Ligand Atoms 1\n", - "ADD_ATOM: site= 0\n", - "ADD_ATOM: evaluating apos=array([ 3.2896384, -1.1564794, 1.8108721]) and tgt.coord=[3.3561142, -1.7460605999999999, 4.0823379]\n", - "ADD_ATOM: received tmpconnec[posadded]=1\n", - "ADD_ATOM: Chosen Metal index None. H is added at site 0\n", - " GET_PROTONATION_STATES: evaluating non-haptic group with index 0 and label Cl\n", - "protonation_states=[------------- Cell2mol Protonation ----------------\n", - " Status = True\n", - " Labels = ['Cl']\n", - " Type = Local\n", - " Atoms added in positions = [0]\n", - " Atoms blocked (no atoms added) = [1]\n", - "---------------------------------------------------\n", - "]\n", - " POSCHARGE will try charges [0, -1, 1, -2, 2]\n", - "smiles='[Cl-]'\n", - " POSCHARGE: charge 0 with smiles [Cl-]\n", - "smiles='[Cl-]'\n", - " POSCHARGE: charge 0 with smiles [Cl-]\n", - "smiles='[Cl-]'\n", - " POSCHARGE: charge 0 with smiles [Cl-]\n", - "smiles='[Cl-]'\n", - " POSCHARGE: charge 0 with smiles [Cl-]\n", - "smiles='[Cl-]'\n", - " POSCHARGE: charge 0 with smiles [Cl-]\n", - " NEW SELECT FUNCTION: uncorr_total: [-1, -1, -1, -1, -1]\n", - " NEW SELECT FUNCTION: uncorr_abs_total: [1, 1, 1, 1, 1]\n", - " NEW SELECT FUNCTION: uncorr_abs_atcharge: [1, 1, 1, 1, 1]\n", - " NEW SELECT FUNCTION: uncorr_zwitt: [False, False, False, False, False]\n", - " NEW SELECT FUNCTION: coincide: [False, True, False, False, False]\n", - " NEW SELECT FUNCTION: listofmintot: [0, 1, 2, 3, 4]\n", - " NEW SELECT FUNCTION: listofminabs: [0, 1, 2, 3, 4]\n", - " NEW SELECT FUNCTION: tmplist: [1], including:\n", - " NEW SELECT FUNCTION: Corr_charge=-1\n", - " NEW SELECT FUNCTION: Smiles=[Cl-]\n", - " NEW SELECT FUNCTION: found corr_charges=[-1]\n", - " NEW SELECT FUNCTION: doing tgt_charge=-1\n", - " NEW SELECT FUNCTION: charge_state added\n", - " NEW SELECT FUNCTION: Case 1, only one entry for -1 in tmplist\n", - "Target charge -1 of Cl exists in [-1].\n", - "------------- Cell2mol LIGAND Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = ligand\n", - " Number of Atoms = 1\n", - " Formula = Cl\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = -1\n", - " Smiles = [Cl-]\n", - " Origin = split_complex\n", - " Number of Groups = 1\n", - "---------------------------------------------------\n", - " [0, 1, 2, 3, 4, 5, 10, 15] -1\n", - "Target charge -1 of Cl exists in [-1].\n", - "Cl\n", - "ADD_ATOM: Metalist length 1\n", - "ADD_ATOM: Ligand Atoms 1\n", - "ADD_ATOM: site= 0\n", - "ADD_ATOM: evaluating apos=array([ 4.8684929, -0.5616564, 5.7432997]) and tgt.coord=[3.3561142, -1.7460605999999999, 4.0823379]\n", - "ADD_ATOM: received tmpconnec[posadded]=1\n", - "ADD_ATOM: Chosen Metal index None. H is added at site 0\n", - "ADD_ATOM: Metalist length 1\n", - "ADD_ATOM: Ligand Atoms 1\n", - "ADD_ATOM: site= 0\n", - "ADD_ATOM: evaluating apos=array([ 4.8684929, -0.5616564, 5.7432997]) and tgt.coord=[3.3561142, -1.7460605999999999, 4.0823379]\n", - "ADD_ATOM: received tmpconnec[posadded]=1\n", - "ADD_ATOM: Chosen Metal index None. H is added at site 0\n", - " GET_PROTONATION_STATES: evaluating non-haptic group with index 0 and label Cl\n", - "protonation_states=[------------- Cell2mol Protonation ----------------\n", - " Status = True\n", - " Labels = ['Cl']\n", - " Type = Local\n", - " Atoms added in positions = [0]\n", - " Atoms blocked (no atoms added) = [1]\n", - "---------------------------------------------------\n", - "]\n", - " POSCHARGE will try charges [0, -1, 1, -2, 2]\n", - "smiles='[Cl-]'\n", - " POSCHARGE: charge 0 with smiles [Cl-]\n", - "smiles='[Cl-]'\n", - " POSCHARGE: charge 0 with smiles [Cl-]\n", - "smiles='[Cl-]'\n", - " POSCHARGE: charge 0 with smiles [Cl-]\n", - "smiles='[Cl-]'\n", - " POSCHARGE: charge 0 with smiles [Cl-]\n", - "smiles='[Cl-]'\n", - " POSCHARGE: charge 0 with smiles [Cl-]\n", - " NEW SELECT FUNCTION: uncorr_total: [-1, -1, -1, -1, -1]\n", - " NEW SELECT FUNCTION: uncorr_abs_total: [1, 1, 1, 1, 1]\n", - " NEW SELECT FUNCTION: uncorr_abs_atcharge: [1, 1, 1, 1, 1]\n", - " NEW SELECT FUNCTION: uncorr_zwitt: [False, False, False, False, False]\n", - " NEW SELECT FUNCTION: coincide: [False, True, False, False, False]\n", - " NEW SELECT FUNCTION: listofmintot: [0, 1, 2, 3, 4]\n", - " NEW SELECT FUNCTION: listofminabs: [0, 1, 2, 3, 4]\n", - " NEW SELECT FUNCTION: tmplist: [1], including:\n", - " NEW SELECT FUNCTION: Corr_charge=-1\n", - " NEW SELECT FUNCTION: Smiles=[Cl-]\n", - " NEW SELECT FUNCTION: found corr_charges=[-1]\n", - " NEW SELECT FUNCTION: doing tgt_charge=-1\n", - " NEW SELECT FUNCTION: charge_state added\n", - " NEW SELECT FUNCTION: Case 1, only one entry for -1 in tmplist\n", - "Target charge -1 of Cl exists in [-1].\n", - "------------- Cell2mol METAL Object --------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Sub-Type = metal\n", - " Label = Hg\n", - " Atomic Number = 80\n", - " Index in Molecule = 0\n", - " Metal Adjacency (mconnec) = 4\n", - " Regular Adjacencies (connec) = 4\n", - " Coordination Sphere Formula = Cl4\n", - " Possible Charges = [2]\n", - "----------------------------------------------------\n", - " [6, 7] 2\n", - "Target charge 2 of Hg exists in [2].\n", - "Hg\n", - "Target charge 2 of Hg exists in [2].\n", - "------------- Cell2mol METAL Object --------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Sub-Type = metal\n", - " Label = Hg\n", - " Atomic Number = 80\n", - " Index in Molecule = 0\n", - " Metal Adjacency (mconnec) = 4\n", - " Regular Adjacencies (connec) = 4\n", - " Atom Charge = 2\n", - " Coordination Sphere Formula = Cl4\n", - " Possible Charges = [2]\n", - "----------------------------------------------------\n", - " [6, 7] 2\n", - "Target charge 2 of Hg exists in [2].\n", - "Hg\n", - "Target charge 2 of Hg exists in [2].\n", - "------------- Cell2mol LIGAND Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = ligand\n", - " Number of Atoms = 10\n", - " Formula = H5-C5\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_complex\n", - " Number of Groups = 1\n", - "---------------------------------------------------\n", - " [8, 14] -1\n", - "Target charge -1 of H5-C5 exists in [-1].\n", - "H5-C5\n", - " GET_PROTONATION_STATES: addressing group with hapticity: ['h5-Cp']\n", - " GET_PROTONATION_STATES: and parent indices: [0, 2, 4, 6, 8]\n", - " GET_PROTONATION_STATES: Added H to atom 0 with: a.mconnec=1 and label=C\n", - "protonation_states=[------------- Cell2mol Protonation ----------------\n", - " Status = True\n", - " Labels = ['C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'H']\n", - " Type = Local\n", - " Atoms added in positions = [1 0 0 0 0 0 0 0 0 0]\n", - " Atoms blocked (no atoms added) = [1 0 1 0 1 0 1 0 1 0]\n", - "---------------------------------------------------\n", - "]\n", - " POSCHARGE will try charges [0, -1, 1, -2, 2]\n", - "smiles='[H]C1=C([H])C([H])([H])C([H])=C1[H]'\n", - " POSCHARGE: charge 0 with smiles [H]C1=C([H])C([H])([H])C([H])=C1[H]\n", - "smiles='[H][C+]1[C-]([H])[C-]([H])C([H])([H])[C-]1[H]'\n", - " POSCHARGE: charge 0 with smiles [H][C+]1[C-]([H])[C-]([H])C([H])([H])[C-]1[H]\n", - "smiles='[H][C+]1[C-]([H])[C+]([H])C([H])([H])[C-]1[H]'\n", - " POSCHARGE: charge 0 with smiles [H][C+]1[C-]([H])[C+]([H])C([H])([H])[C-]1[H]\n", - "smiles='[H][C+]1[C-]([H])[C-]([H])[C-]([H])C1([H])[H]'\n", - " POSCHARGE: charge 0 with smiles [H][C+]1[C-]([H])[C-]([H])[C-]([H])C1([H])[H]\n", - "smiles='[H][C+]1[C+]([H])C([H])([H])[C+]([H])[C-]1[H]'\n", - " POSCHARGE: charge 0 with smiles [H][C+]1[C+]([H])C([H])([H])[C+]([H])[C-]1[H]\n", - " NEW SELECT FUNCTION: uncorr_total: [0, -2, 0, -2, 2]\n", - " NEW SELECT FUNCTION: uncorr_abs_total: [0, 2, 0, 2, 2]\n", - " NEW SELECT FUNCTION: uncorr_abs_atcharge: [0, 4, 4, 4, 4]\n", - " NEW SELECT FUNCTION: uncorr_zwitt: [False, True, True, True, True]\n", - " NEW SELECT FUNCTION: coincide: [True, False, False, True, True]\n", - " NEW SELECT FUNCTION: listofmintot: [0, 2]\n", - " NEW SELECT FUNCTION: listofminabs: [0]\n", - " NEW SELECT FUNCTION: tmplist: [0], including:\n", - " NEW SELECT FUNCTION: Corr_charge=-1\n", - " NEW SELECT FUNCTION: Smiles=[H]C1=C([H])C([H])([H])C([H])=C1[H]\n", - " NEW SELECT FUNCTION: found corr_charges=[-1]\n", - " NEW SELECT FUNCTION: doing tgt_charge=-1\n", - " NEW SELECT FUNCTION: charge_state added\n", - " NEW SELECT FUNCTION: Case 1, only one entry for -1 in tmplist\n", - "Target charge -1 of H5-C5 exists in [-1].\n", - "------------- Cell2mol LIGAND Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = ligand\n", - " Number of Atoms = 9\n", - " Formula = H4-C5\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_complex\n", - " Number of Groups = 1\n", - "---------------------------------------------------\n", - " [9, 13] -2\n", - "Target charge -2 of H4-C5 exists in [-2].\n", - "H4-C5\n", - " GET_PROTONATION_STATES: addressing group with hapticity: ['h5-Cp']\n", - " GET_PROTONATION_STATES: and parent indices: [0, 1, 3, 5, 7]\n", - " GET_PROTONATION_STATES: Added H to atom 1 with: a.mconnec=1 and label=C\n", - "protonation_states=[------------- Cell2mol Protonation ----------------\n", - " Status = True\n", - " Labels = ['C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'H']\n", - " Type = Local\n", - " Atoms added in positions = [0 1 0 0 0 0 0 0 0]\n", - " Atoms blocked (no atoms added) = [0 1 0 1 0 1 0 1 0]\n", - "---------------------------------------------------\n", - "]\n", - " POSCHARGE will try charges [0, -1, 1, -2, 2]\n", - "smiles='[H][C+]1CC([H])([H])[C+]([H])[C-]1[H]'\n", - " POSCHARGE: charge 0 with smiles [H][C+]1CC([H])([H])[C+]([H])[C-]1[H]\n", - "smiles='[H]C1=[C-]C([H])([H])C([H])=C1[H]'\n", - " POSCHARGE: charge 0 with smiles [H]C1=[C-]C([H])([H])C([H])=C1[H]\n", - "smiles='[H][C+]1[C+]([H])C([H])([H])C[C-]1[H]'\n", - " POSCHARGE: charge 0 with smiles [H][C+]1[C+]([H])C([H])([H])C[C-]1[H]\n", - "smiles='[H][C+]1CC([H])([H])[C-]([H])[C-]1[H]'\n", - " POSCHARGE: charge 0 with smiles [H][C+]1CC([H])([H])[C-]([H])[C-]1[H]\n", - "smiles='[H][C+]1CC([H])([H])[C+]([H])[C+]1[H]'\n", - " POSCHARGE: charge 0 with smiles [H][C+]1CC([H])([H])[C+]([H])[C+]1[H]\n", - " NEW SELECT FUNCTION: uncorr_total: [1, -1, 1, -1, 3]\n", - " NEW SELECT FUNCTION: uncorr_abs_total: [1, 1, 1, 1, 3]\n", - " NEW SELECT FUNCTION: uncorr_abs_atcharge: [3, 1, 3, 3, 3]\n", - " NEW SELECT FUNCTION: uncorr_zwitt: [True, False, True, True, False]\n", - " NEW SELECT FUNCTION: coincide: [False, True, True, False, False]\n", - " NEW SELECT FUNCTION: listofmintot: [0, 1, 2, 3]\n", - " NEW SELECT FUNCTION: listofminabs: [1]\n", - " NEW SELECT FUNCTION: tmplist: [1], including:\n", - " NEW SELECT FUNCTION: Corr_charge=-2\n", - " NEW SELECT FUNCTION: Smiles=[H]C1=[C-]C([H])([H])C([H])=C1[H]\n", - " NEW SELECT FUNCTION: found corr_charges=[-2]\n", - " NEW SELECT FUNCTION: doing tgt_charge=-2\n", - " NEW SELECT FUNCTION: charge_state added\n", - " NEW SELECT FUNCTION: Case 1, only one entry for -2 in tmplist\n", - "Target charge -2 of H4-C5 exists in [-2].\n", - "------------- Cell2mol LIGAND Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = ligand\n", - " Number of Atoms = 1\n", - " Formula = Cl\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = -1\n", - " Smiles = [Cl-]\n", - " Origin = split_complex\n", - " Number of Groups = 1\n", - "---------------------------------------------------\n", - " [0, 1, 2, 3, 4, 5, 10, 15] -1\n", - "Target charge -1 of Cl exists in [-1].\n", - "Cl\n", - "ADD_ATOM: Metalist length 1\n", - "ADD_ATOM: Ligand Atoms 1\n", - "ADD_ATOM: site= 0\n", - "ADD_ATOM: evaluating apos=array([6.985123 , 2.3016164, 7.6030555]) and tgt.coord=[6.4998052, 2.1910413, 5.3595078]\n", - "ADD_ATOM: received tmpconnec[posadded]=1\n", - "ADD_ATOM: Chosen Metal index None. H is added at site 0\n", - " GET_PROTONATION_STATES: evaluating non-haptic group with index 0 and label Cl\n", - "protonation_states=[------------- Cell2mol Protonation ----------------\n", - " Status = True\n", - " Labels = ['Cl']\n", - " Type = Local\n", - " Atoms added in positions = [0]\n", - " Atoms blocked (no atoms added) = [1]\n", - "---------------------------------------------------\n", - "]\n", - " POSCHARGE will try charges [0, -1, 1, -2, 2]\n", - "smiles='[Cl-]'\n", - " POSCHARGE: charge 0 with smiles [Cl-]\n", - "smiles='[Cl-]'\n", - " POSCHARGE: charge 0 with smiles [Cl-]\n", - "smiles='[Cl-]'\n", - " POSCHARGE: charge 0 with smiles [Cl-]\n", - "smiles='[Cl-]'\n", - " POSCHARGE: charge 0 with smiles [Cl-]\n", - "smiles='[Cl-]'\n", - " POSCHARGE: charge 0 with smiles [Cl-]\n", - " NEW SELECT FUNCTION: uncorr_total: [-1, -1, -1, -1, -1]\n", - " NEW SELECT FUNCTION: uncorr_abs_total: [1, 1, 1, 1, 1]\n", - " NEW SELECT FUNCTION: uncorr_abs_atcharge: [1, 1, 1, 1, 1]\n", - " NEW SELECT FUNCTION: uncorr_zwitt: [False, False, False, False, False]\n", - " NEW SELECT FUNCTION: coincide: [False, True, False, False, False]\n", - " NEW SELECT FUNCTION: listofmintot: [0, 1, 2, 3, 4]\n", - " NEW SELECT FUNCTION: listofminabs: [0, 1, 2, 3, 4]\n", - " NEW SELECT FUNCTION: tmplist: [1], including:\n", - " NEW SELECT FUNCTION: Corr_charge=-1\n", - " NEW SELECT FUNCTION: Smiles=[Cl-]\n", - " NEW SELECT FUNCTION: found corr_charges=[-1]\n", - " NEW SELECT FUNCTION: doing tgt_charge=-1\n", - " NEW SELECT FUNCTION: charge_state added\n", - " NEW SELECT FUNCTION: Case 1, only one entry for -1 in tmplist\n", - "Target charge -1 of Cl exists in [-1].\n", - "------------- Cell2mol METAL Object --------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Sub-Type = metal\n", - " Label = Hg\n", - " Atomic Number = 80\n", - " Index in Molecule = 0\n", - " Metal Adjacency (mconnec) = 2\n", - " Regular Adjacencies (connec) = 2\n", - " Coordination Sphere Formula = C-Cl\n", - " Possible Charges = [2]\n", - "----------------------------------------------------\n", - " [11, 16] 2\n", - "Target charge 2 of Hg exists in [2].\n", - "Hg\n", - "Target charge 2 of Hg exists in [2].\n", - "------------- Cell2mol METAL Object --------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Sub-Type = metal\n", - " Label = Fe\n", - " Atomic Number = 26\n", - " Index in Molecule = 1\n", - " Metal Adjacency (mconnec) = 10\n", - " Regular Adjacencies (connec) = 10\n", - " Coordination Sphere Formula = C10\n", - " Possible Charges = [2, 3, 0]\n", - "----------------------------------------------------\n", - " [12, 17] 3\n", - "Target charge 3 of Fe exists in [2, 3, 0].\n", - "Fe\n", - "Target charge 3 of Fe exists in [2, 3, 0].\n", - "------------- Cell2mol LIGAND Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = ligand\n", - " Number of Atoms = 9\n", - " Formula = H4-C5\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = -2\n", - " Smiles = [H]C1=[C-]C([H])([H])C([H])=C1[H]\n", - " Origin = split_complex\n", - " Number of Groups = 1\n", - "---------------------------------------------------\n", - " [9, 13] -2\n", - "Target charge -2 of H4-C5 exists in [-2].\n", - "H4-C5\n", - "LIGAND.SPLIT_LIGAND: self.indices=[0, 1, 2, 3, 4, 5, 6, 7, 8]\n", - "LIGAND.SPLIT_LIGAND: conn_idx=[0, 2, 3, 5, 7]\n", - "LIGAND.SPLIT_LIGAND: conn_labels=['C', 'C', 'C', 'C', 'C']\n", - "LIGAND.SPLIT_LIGAND: conn_coord=[[-3.028007, 7.7619381, 8.3134996], [-2.7651809, 6.6251757, 7.5020291], [-2.1733829, 5.6749186, 8.3189312], [-2.0313814, 6.1721819, 9.660519], [-2.5627616, 7.4609076, 9.6279299]]\n", - "LIGAND.SPLIT_LIGAND: conn_radii=[0.73, 0.73, 0.73, 0.73, 0.73]\n", - "blocklist=[[0, 1, 2, 3, 4]]\n", - "LIGAND.SPLIT_LIGAND: block=[0, 1, 2, 3, 4]\n", - " GET_PROTONATION_STATES: addressing group with hapticity: ['h5-Cp']\n", - " GET_PROTONATION_STATES: and parent indices: [0, 2, 3, 5, 7]\n", - " GET_PROTONATION_STATES: Added H to atom 0 with: a.mconnec=1 and label=C\n", - "protonation_states=[------------- Cell2mol Protonation ----------------\n", - " Status = True\n", - " Labels = ['C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'H']\n", - " Type = Local\n", - " Atoms added in positions = [1 0 0 0 0 0 0 0 0]\n", - " Atoms blocked (no atoms added) = [1 0 0 1 0 1 0 1 0]\n", - "---------------------------------------------------\n", - "]\n", - " POSCHARGE will try charges [0, -1, 1, -2, 2]\n", - "smiles='[H][C+]1CC([H])([H])[C+]([H])[C-]1[H]'\n", - " POSCHARGE: charge 0 with smiles [H][C+]1CC([H])([H])[C+]([H])[C-]1[H]\n", - "smiles='[H]C1=[C-]C([H])([H])C([H])=C1[H]'\n", - " POSCHARGE: charge 0 with smiles [H]C1=[C-]C([H])([H])C([H])=C1[H]\n", - "smiles='[H][C+]1CC([H])([H])[C-]([H])[C+]1[H]'\n", - " POSCHARGE: charge 0 with smiles [H][C+]1CC([H])([H])[C-]([H])[C+]1[H]\n", - "smiles='[H][C+]1[C-]([H])[C-]([H])CC1([H])[H]'\n", - " POSCHARGE: charge 0 with smiles [H][C+]1[C-]([H])[C-]([H])CC1([H])[H]\n", - "smiles='[H][C+]1CC([H])([H])[C+]([H])[C+]1[H]'\n", - " POSCHARGE: charge 0 with smiles [H][C+]1CC([H])([H])[C+]([H])[C+]1[H]\n", - " NEW SELECT FUNCTION: uncorr_total: [1, -1, 1, -1, 3]\n", - " NEW SELECT FUNCTION: uncorr_abs_total: [1, 1, 1, 1, 3]\n", - " NEW SELECT FUNCTION: uncorr_abs_atcharge: [3, 1, 3, 3, 3]\n", - " NEW SELECT FUNCTION: uncorr_zwitt: [True, False, True, True, False]\n", - " NEW SELECT FUNCTION: coincide: [False, True, True, False, False]\n", - " NEW SELECT FUNCTION: listofmintot: [0, 1, 2, 3]\n", - " NEW SELECT FUNCTION: listofminabs: [1]\n", - " NEW SELECT FUNCTION: tmplist: [1], including:\n", - " NEW SELECT FUNCTION: Corr_charge=-2\n", - " NEW SELECT FUNCTION: Smiles=[H]C1=[C-]C([H])([H])C([H])=C1[H]\n", - " NEW SELECT FUNCTION: found corr_charges=[-2]\n", - " NEW SELECT FUNCTION: doing tgt_charge=-2\n", - " NEW SELECT FUNCTION: charge_state added\n", - " NEW SELECT FUNCTION: Case 1, only one entry for -2 in tmplist\n", - "Target charge -2 of H4-C5 exists in [-2].\n", - "------------- Cell2mol LIGAND Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = ligand\n", - " Number of Atoms = 10\n", - " Formula = H5-C5\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = -1\n", - " Smiles = [H]C1=C([H])C([H])([H])C([H])=C1[H]\n", - " Origin = split_complex\n", - " Number of Groups = 1\n", - "---------------------------------------------------\n", - " [8, 14] -1\n", - "Target charge -1 of H5-C5 exists in [-1].\n", - "H5-C5\n", - "LIGAND.SPLIT_LIGAND: self.indices=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]\n", - "LIGAND.SPLIT_LIGAND: conn_idx=[1, 2, 4, 6, 8]\n", - "LIGAND.SPLIT_LIGAND: conn_labels=['C', 'C', 'C', 'C', 'C']\n", - "LIGAND.SPLIT_LIGAND: conn_coord=[[-5.0807517, 5.0475424, 10.4980609], [-5.66988, 6.2701729, 10.2873176], [-6.088064, 6.3514951, 8.8751198], [-5.7244276, 5.1338652, 8.3037229], [-5.1291871, 4.3765899, 9.2944339]]\n", - "LIGAND.SPLIT_LIGAND: conn_radii=[0.73, 0.73, 0.73, 0.73, 0.73]\n", - "blocklist=[[0, 1, 2, 3, 4]]\n", - "LIGAND.SPLIT_LIGAND: block=[0, 1, 2, 3, 4]\n", - " GET_PROTONATION_STATES: addressing group with hapticity: ['h5-Cp']\n", - " GET_PROTONATION_STATES: and parent indices: [1, 2, 4, 6, 8]\n", - " GET_PROTONATION_STATES: Added H to atom 1 with: a.mconnec=1 and label=C\n", - "protonation_states=[------------- Cell2mol Protonation ----------------\n", - " Status = True\n", - " Labels = ['H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'H']\n", - " Type = Local\n", - " Atoms added in positions = [0 1 0 0 0 0 0 0 0 0]\n", - " Atoms blocked (no atoms added) = [0 1 1 0 1 0 1 0 1 0]\n", - "---------------------------------------------------\n", - "]\n", - " POSCHARGE will try charges [0, -1, 1, -2, 2]\n", - "smiles='[H]C1=C([H])C([H])([H])C([H])=C1[H]'\n", - " POSCHARGE: charge 0 with smiles [H]C1=C([H])C([H])([H])C([H])=C1[H]\n", - "smiles='[H][C+]1[C-]([H])[C-]([H])C([H])([H])[C-]1[H]'\n", - " POSCHARGE: charge 0 with smiles [H][C+]1[C-]([H])[C-]([H])C([H])([H])[C-]1[H]\n", - "smiles='[H][C+]1[C-]([H])[C+]([H])C([H])([H])[C-]1[H]'\n", - " POSCHARGE: charge 0 with smiles [H][C+]1[C-]([H])[C+]([H])C([H])([H])[C-]1[H]\n", - "smiles='[H][C+]1[C-]([H])[C-]([H])[C-]([H])C1([H])[H]'\n", - " POSCHARGE: charge 0 with smiles [H][C+]1[C-]([H])[C-]([H])[C-]([H])C1([H])[H]\n", - "smiles='[H][C+]1[C+]([H])C([H])([H])[C+]([H])[C-]1[H]'\n", - " POSCHARGE: charge 0 with smiles [H][C+]1[C+]([H])C([H])([H])[C+]([H])[C-]1[H]\n", - " NEW SELECT FUNCTION: uncorr_total: [0, -2, 0, -2, 2]\n", - " NEW SELECT FUNCTION: uncorr_abs_total: [0, 2, 0, 2, 2]\n", - " NEW SELECT FUNCTION: uncorr_abs_atcharge: [0, 4, 4, 4, 4]\n", - " NEW SELECT FUNCTION: uncorr_zwitt: [False, True, True, True, True]\n", - " NEW SELECT FUNCTION: coincide: [True, False, False, True, True]\n", - " NEW SELECT FUNCTION: listofmintot: [0, 2]\n", - " NEW SELECT FUNCTION: listofminabs: [0]\n", - " NEW SELECT FUNCTION: tmplist: [0], including:\n", - " NEW SELECT FUNCTION: Corr_charge=-1\n", - " NEW SELECT FUNCTION: Smiles=[H]C1=C([H])C([H])([H])C([H])=C1[H]\n", - " NEW SELECT FUNCTION: found corr_charges=[-1]\n", - " NEW SELECT FUNCTION: doing tgt_charge=-1\n", - " NEW SELECT FUNCTION: charge_state added\n", - " NEW SELECT FUNCTION: Case 1, only one entry for -1 in tmplist\n", - "Target charge -1 of H5-C5 exists in [-1].\n", - "------------- Cell2mol LIGAND Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = ligand\n", - " Number of Atoms = 1\n", - " Formula = Cl\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = -1\n", - " Smiles = [Cl-]\n", - " Origin = split_complex\n", - " Number of Groups = 1\n", - "---------------------------------------------------\n", - " [0, 1, 2, 3, 4, 5, 10, 15] -1\n", - "Target charge -1 of Cl exists in [-1].\n", - "Cl\n", - "LIGAND.SPLIT_LIGAND: self.indices=[0]\n", - "LIGAND.SPLIT_LIGAND: conn_idx=[0]\n", - "LIGAND.SPLIT_LIGAND: conn_labels=['Cl']\n", - "LIGAND.SPLIT_LIGAND: conn_coord=[[-3.6481031, 6.3843261, 3.2600042]]\n", - "LIGAND.SPLIT_LIGAND: conn_radii=[1.02]\n", - "blocklist=[[0]]\n", - "LIGAND.SPLIT_LIGAND: block=[0]\n", - "ADD_ATOM: Metalist length 1\n", - "ADD_ATOM: Ligand Atoms 1\n", - "ADD_ATOM: site= 0\n", - "ADD_ATOM: evaluating apos=array([-3.6481031, 6.3843261, 3.2600042]) and tgt.coord=[-3.1627853000000004, 6.4949012, 5.503552]\n", - "ADD_ATOM: received tmpconnec[posadded]=1\n", - "ADD_ATOM: Chosen Metal index None. H is added at site 0\n", - " GET_PROTONATION_STATES: evaluating non-haptic group with index 0 and label Cl\n", - "protonation_states=[------------- Cell2mol Protonation ----------------\n", - " Status = True\n", - " Labels = ['Cl']\n", - " Type = Local\n", - " Atoms added in positions = [0]\n", - " Atoms blocked (no atoms added) = [1]\n", - "---------------------------------------------------\n", - "]\n", - " POSCHARGE will try charges [0, -1, 1, -2, 2]\n", - "smiles='[Cl-]'\n", - " POSCHARGE: charge 0 with smiles [Cl-]\n", - "smiles='[Cl-]'\n", - " POSCHARGE: charge 0 with smiles [Cl-]\n", - "smiles='[Cl-]'\n", - " POSCHARGE: charge 0 with smiles [Cl-]\n", - "smiles='[Cl-]'\n", - " POSCHARGE: charge 0 with smiles [Cl-]\n", - "smiles='[Cl-]'\n", - " POSCHARGE: charge 0 with smiles [Cl-]\n", - " NEW SELECT FUNCTION: uncorr_total: [-1, -1, -1, -1, -1]\n", - " NEW SELECT FUNCTION: uncorr_abs_total: [1, 1, 1, 1, 1]\n", - " NEW SELECT FUNCTION: uncorr_abs_atcharge: [1, 1, 1, 1, 1]\n", - " NEW SELECT FUNCTION: uncorr_zwitt: [False, False, False, False, False]\n", - " NEW SELECT FUNCTION: coincide: [False, True, False, False, False]\n", - " NEW SELECT FUNCTION: listofmintot: [0, 1, 2, 3, 4]\n", - " NEW SELECT FUNCTION: listofminabs: [0, 1, 2, 3, 4]\n", - " NEW SELECT FUNCTION: tmplist: [1], including:\n", - " NEW SELECT FUNCTION: Corr_charge=-1\n", - " NEW SELECT FUNCTION: Smiles=[Cl-]\n", - " NEW SELECT FUNCTION: found corr_charges=[-1]\n", - " NEW SELECT FUNCTION: doing tgt_charge=-1\n", - " NEW SELECT FUNCTION: charge_state added\n", - " NEW SELECT FUNCTION: Case 1, only one entry for -1 in tmplist\n", - "Target charge -1 of Cl exists in [-1].\n", - "------------- Cell2mol METAL Object --------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Sub-Type = metal\n", - " Label = Hg\n", - " Atomic Number = 80\n", - " Index in Molecule = 0\n", - " Metal Adjacency (mconnec) = 2\n", - " Regular Adjacencies (connec) = 2\n", - " Atom Charge = 2.0\n", - " Coordination Sphere Formula = C-Cl\n", - " Possible Charges = [2]\n", - "----------------------------------------------------\n", - " [11, 16] 2\n", - "Target charge 2 of Hg exists in [2].\n", - "Hg\n", - "Target charge 2 of Hg exists in [2].\n", - "------------- Cell2mol METAL Object --------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Sub-Type = metal\n", - " Label = Fe\n", - " Atomic Number = 26\n", - " Index in Molecule = 1\n", - " Metal Adjacency (mconnec) = 10\n", - " Regular Adjacencies (connec) = 10\n", - " Atom Charge = 3.0\n", - " Coordination Sphere Formula = C10\n", - " Possible Charges = [2, 3, 0]\n", - "----------------------------------------------------\n", - " [12, 17] 3\n", - "Target charge 3 of Fe exists in [2, 3, 0].\n", - "Fe\n", - "Target charge 3 of Fe exists in [2, 3, 0].\n" - ] - }, - { - "data": { - "text/plain": [ - "[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 8\n", - " Formula = Cl6-Hg2\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = -2\n", - " Smiles = ['[Cl-]', '[Cl-]', '[Cl-]', '[Cl-]', '[Cl-]', '[Cl-]']\n", - " Origin = cell.reconstruct\n", - " Number of Ligands = 6\n", - " Number of Metals = 2\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 22\n", - " Formula = H9-C10-Cl-Fe-Hg\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = 1\n", - " Smiles = ['[H]C1=C([H])C([H])([H])C([H])=C1[H]', '[H]C1=[C-]C([H])([H])C([H])=C1[H]', '[Cl-]']\n", - " Origin = cell.reconstruct\n", - " Number of Ligands = 3\n", - " Number of Metals = 2\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 22\n", - " Formula = H9-C10-Cl-Fe-Hg\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = 1\n", - " Smiles = ['[H]C1=[C-]C([H])([H])C([H])=C1[H]', '[H]C1=C([H])C([H])([H])C([H])=C1[H]', '[Cl-]']\n", - " Origin = cell.reconstruct\n", - " Number of Ligands = 3\n", - " Number of Metals = 2\n", - " ---------------------------------------------------]" - ] - }, - "execution_count": 22, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "newcell.assign_charges(debug=2)" - ] - }, - { - "cell_type": "code", - "execution_count": 24, - "id": "678fa41f", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "False" - ] - }, - "execution_count": 24, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "newcell.error_prepare_mols" - ] - }, - { - "cell_type": "code", - "execution_count": 25, - "id": "43c42769", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "CELL.CREATE_BONDS: Creating Bonds for molecule Cl6-Hg2\n" - ] - }, - { - "data": { - "image/png": "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", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "CREATE BONDS: Number of atoms in ligand object and RDKit MOL are equal: 1 1\n", - "idx=0 Cl Number of bonds : 0\n", - "NO BONDS CREATED\n" - ] - }, - { - "data": { - "image/png": "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", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "CREATE BONDS: Number of atoms in ligand object and RDKit MOL are equal: 1 1\n", - "idx=0 Cl Number of bonds : 0\n", - "NO BONDS CREATED\n" - ] - }, - { - "data": { - "image/png": "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", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "CREATE BONDS: Number of atoms in ligand object and RDKit MOL are equal: 1 1\n", - "idx=0 Cl Number of bonds : 0\n", - "NO BONDS CREATED\n" - ] - }, - { - "data": { - "image/png": "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", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "CREATE BONDS: Number of atoms in ligand object and RDKit MOL are equal: 1 1\n", - "idx=0 Cl Number of bonds : 0\n", - "NO BONDS CREATED\n" - ] - }, - { - "data": { - "image/png": "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", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "CREATE BONDS: Number of atoms in ligand object and RDKit MOL are equal: 1 1\n", - "idx=0 Cl Number of bonds : 0\n", - "NO BONDS CREATED\n" - ] - }, - { - "data": { - "image/png": "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", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "CREATE BONDS: Number of atoms in ligand object and RDKit MOL are equal: 1 1\n", - "idx=0 Cl Number of bonds : 0\n", - "NO BONDS CREATED\n", - "CELL.CREATE_BONDS: Creating Metal-Metal Bonds for molecule Cl6-Hg2\n", - "CELL.CREATE_BONDS: Metals: [------------- Cell2mol METAL Object --------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Sub-Type = metal\n", - " Label = Hg\n", - " Atomic Number = 80\n", - " Index in Molecule = 0\n", - " Metal Adjacency (mconnec) = 4\n", - " Regular Adjacencies (connec) = 4\n", - " Atom Charge = 2.0\n", - " Coordination Sphere Formula = Cl4\n", - " Possible Charges = [2]\n", - "----------------------------------------------------\n", - ", ------------- Cell2mol METAL Object --------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Sub-Type = metal\n", - " Label = Hg\n", - " Atomic Number = 80\n", - " Index in Molecule = 4\n", - " Metal Adjacency (mconnec) = 4\n", - " Regular Adjacencies (connec) = 4\n", - " Atom Charge = 2.0\n", - " Coordination Sphere Formula = Cl4\n", - " Possible Charges = [2]\n", - "----------------------------------------------------\n", - "]\n", - "0 Cl\n", - "Cl Hg 0.5\n" - ] - }, - { - "data": { - "image/png": "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", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0 Cl\n", - "Cl Hg 0.5\n" - ] - }, - { - "data": { - "image/png": "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", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0 Cl\n", - "Cl Hg 0.5\n", - "Cl Hg 0.5\n" - ] - }, - { - "data": { - "image/png": "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", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0 Cl\n", - "Cl Hg 0.5\n" - ] - }, - { - "data": { - "image/png": "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", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0 Cl\n", - "Cl Hg 0.5\n" - ] - }, - { - "data": { - "image/png": "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", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0 Cl\n", - "Cl Hg 0.5\n", - "Cl Hg 0.5\n" - ] - }, - { - "data": { - "image/png": "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", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "CELL.CREATE_BONDS: Creating Bonds for molecule H9-C10-Cl-Fe-Hg\n" - ] - }, - { - "data": { - "image/png": "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", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "CREATE BONDS: Number of atoms in ligand object and RDKit MOL are different: 10 11\n", - "[(0, 'C'), (1, 'H'), (2, 'C'), (3, 'H'), (4, 'C'), (5, 'H'), (6, 'C'), (7, 'H'), (8, 'C'), (9, 'H')]\n", - "[(0, 'C'), (1, 'H'), (2, 'C'), (3, 'H'), (4, 'C'), (5, 'H'), (6, 'C'), (7, 'H'), (8, 'C'), (9, 'H'), (10, 'H')]\n", - "NON_BONDED_ATOMS [10]\n", - "idx=0 C Number of bonds : 4\n", - "C : 0 , H : 1 , 1.0\n", - "BOND CREATED 0 0 1 1.0 C H\n", - "C : 0 , C : 2 , 1.0\n", - "BOND CREATED 0 0 2 1.0 C C\n", - "C : 0 , C : 8 , 1.0\n", - "BOND CREATED 0 0 8 1.0 C C\n", - "C : 0 , H : 10 , 1.0\n", - "NO BOND CREATED bond_startatom=0 or bond_endatom=10 is not in the specie.atoms. It belongs to non_bonded_atoms=[10].\n", - "BONDS [('C', 'H', 1.0, 0.931), ('C', 'C', 1.0, 1.379), ('C', 'C', 1.0, 1.382)]\n", - "idx=1 H Number of bonds : 1\n", - "C : 0 , H : 1 , 1.0\n", - "BOND CREATED 1 1 0 1.0 H C\n", - "BONDS [('H', 'C', 1.0, 0.931)]\n", - "idx=2 C Number of bonds : 3\n", - "C : 0 , C : 2 , 1.0\n", - "BOND CREATED 2 2 0 1.0 C C\n", - "C : 2 , H : 3 , 1.0\n", - "BOND CREATED 2 2 3 1.0 C H\n", - "C : 2 , C : 4 , 2.0\n", - "BOND CREATED 2 2 4 2.0 C C\n", - "BONDS [('C', 'C', 1.0, 1.379), ('C', 'H', 1.0, 0.929), ('C', 'C', 2.0, 1.373)]\n", - "idx=3 H Number of bonds : 1\n", - "C : 2 , H : 3 , 1.0\n", - "BOND CREATED 3 3 2 1.0 H C\n", - "BONDS [('H', 'C', 1.0, 0.929)]\n", - "idx=4 C Number of bonds : 3\n", - "C : 2 , C : 4 , 2.0\n", - "BOND CREATED 4 4 2 2.0 C C\n", - "C : 4 , H : 5 , 1.0\n", - "BOND CREATED 4 4 5 1.0 C H\n", - "C : 4 , C : 6 , 1.0\n", - "BOND CREATED 4 4 6 1.0 C C\n", - "BONDS [('C', 'C', 2.0, 1.373), ('C', 'H', 1.0, 0.933), ('C', 'C', 1.0, 1.475)]\n", - "idx=5 H Number of bonds : 1\n", - "C : 4 , H : 5 , 1.0\n", - "BOND CREATED 5 5 4 1.0 H C\n", - "BONDS [('H', 'C', 1.0, 0.933)]\n", - "idx=6 C Number of bonds : 3\n", - "C : 4 , C : 6 , 1.0\n", - "BOND CREATED 6 6 4 1.0 C C\n", - "C : 6 , H : 7 , 1.0\n", - "BOND CREATED 6 6 7 1.0 C H\n", - "C : 6 , C : 8 , 2.0\n", - "BOND CREATED 6 6 8 2.0 C C\n", - "BONDS [('C', 'C', 1.0, 1.475), ('C', 'H', 1.0, 0.926), ('C', 'C', 2.0, 1.393)]\n", - "idx=7 H Number of bonds : 1\n", - "C : 6 , H : 7 , 1.0\n", - "BOND CREATED 7 7 6 1.0 H C\n", - "BONDS [('H', 'C', 1.0, 0.926)]\n", - "idx=8 C Number of bonds : 3\n", - "C : 0 , C : 8 , 1.0\n", - "BOND CREATED 8 8 0 1.0 C C\n", - "C : 6 , C : 8 , 2.0\n", - "BOND CREATED 8 8 6 2.0 C C\n", - "C : 8 , H : 9 , 1.0\n", - "BOND CREATED 8 8 9 1.0 C H\n", - "BONDS [('C', 'C', 1.0, 1.382), ('C', 'C', 2.0, 1.393), ('C', 'H', 1.0, 0.93)]\n", - "idx=9 H Number of bonds : 1\n", - "C : 8 , H : 9 , 1.0\n", - "BOND CREATED 9 9 8 1.0 H C\n", - "BONDS [('H', 'C', 1.0, 0.93)]\n", - "idx=10 H Number of bonds : 1\n", - "C : 0 , H : 10 , 1.0\n", - "NO BOND CREATED bond_startatom=0 or bond_endatom=10 is not in the specie.atoms. It belongs to non_bonded_atoms=[10].\n", - "NO BONDS\n" - ] - }, - { - "data": { - "image/png": "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", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "CREATE BONDS: Number of atoms in ligand object and RDKit MOL are different: 9 10\n", - "[(0, 'C'), (1, 'C'), (2, 'H'), (3, 'C'), (4, 'H'), (5, 'C'), (6, 'H'), (7, 'C'), (8, 'H')]\n", - "[(0, 'C'), (1, 'C'), (2, 'H'), (3, 'C'), (4, 'H'), (5, 'C'), (6, 'H'), (7, 'C'), (8, 'H'), (9, 'H')]\n", - "NON_BONDED_ATOMS [9]\n", - "idx=0 C Number of bonds : 2\n", - "C : 0 , C : 1 , 1.0\n", - "BOND CREATED 0 0 1 1.0 C C\n", - "C : 0 , C : 7 , 2.0\n", - "BOND CREATED 0 0 7 2.0 C C\n", - "BONDS [('C', 'C', 1.0, 1.386), ('C', 'C', 2.0, 1.421)]\n", - "idx=1 C Number of bonds : 4\n", - "C : 0 , C : 1 , 1.0\n", - "BOND CREATED 1 1 0 1.0 C C\n", - "C : 1 , H : 2 , 1.0\n", - "BOND CREATED 1 1 2 1.0 C H\n", - "C : 1 , C : 3 , 1.0\n", - "BOND CREATED 1 1 3 1.0 C C\n", - "C : 1 , H : 9 , 1.0\n", - "NO BOND CREATED bond_startatom=1 or bond_endatom=9 is not in the specie.atoms. It belongs to non_bonded_atoms=[9].\n", - "BONDS [('C', 'C', 1.0, 1.386), ('C', 'H', 1.0, 0.93), ('C', 'C', 1.0, 1.438)]\n", - "idx=2 H Number of bonds : 1\n", - "C : 1 , H : 2 , 1.0\n", - "BOND CREATED 2 2 1 1.0 H C\n", - "BONDS [('H', 'C', 1.0, 0.93)]\n", - "idx=3 C Number of bonds : 3\n", - "C : 1 , C : 3 , 1.0\n", - "BOND CREATED 3 3 1 1.0 C C\n", - "C : 3 , H : 4 , 1.0\n", - "BOND CREATED 3 3 4 1.0 C H\n", - "C : 3 , C : 5 , 2.0\n", - "BOND CREATED 3 3 5 2.0 C C\n", - "BONDS [('C', 'C', 1.0, 1.438), ('C', 'H', 1.0, 0.93), ('C', 'C', 2.0, 1.394)]\n", - "idx=4 H Number of bonds : 1\n", - "C : 3 , H : 4 , 1.0\n", - "BOND CREATED 4 4 3 1.0 H C\n", - "BONDS [('H', 'C', 1.0, 0.93)]\n", - "idx=5 C Number of bonds : 3\n", - "C : 3 , C : 5 , 2.0\n", - "BOND CREATED 5 5 3 2.0 C C\n", - "C : 5 , H : 6 , 1.0\n", - "BOND CREATED 5 5 6 1.0 C H\n", - "C : 5 , C : 7 , 1.0\n", - "BOND CREATED 5 5 7 1.0 C C\n", - "BONDS [('C', 'C', 2.0, 1.394), ('C', 'H', 1.0, 0.931), ('C', 'C', 1.0, 1.426)]\n", - "idx=6 H Number of bonds : 1\n", - "C : 5 , H : 6 , 1.0\n", - "BOND CREATED 6 6 5 1.0 H C\n", - "BONDS [('H', 'C', 1.0, 0.931)]\n", - "idx=7 C Number of bonds : 3\n", - "C : 0 , C : 7 , 2.0\n", - "BOND CREATED 7 7 0 2.0 C C\n", - "C : 5 , C : 7 , 1.0\n", - "BOND CREATED 7 7 5 1.0 C C\n", - "C : 7 , H : 8 , 1.0\n", - "BOND CREATED 7 7 8 1.0 C H\n", - "BONDS [('C', 'C', 2.0, 1.421), ('C', 'C', 1.0, 1.426), ('C', 'H', 1.0, 0.93)]\n", - "idx=8 H Number of bonds : 1\n", - "C : 7 , H : 8 , 1.0\n", - "BOND CREATED 8 8 7 1.0 H C\n", - "BONDS [('H', 'C', 1.0, 0.93)]\n", - "idx=9 H Number of bonds : 1\n", - "C : 1 , H : 9 , 1.0\n", - "NO BOND CREATED bond_startatom=1 or bond_endatom=9 is not in the specie.atoms. It belongs to non_bonded_atoms=[9].\n", - "NO BONDS\n" - ] - }, - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAcIAAACWCAIAAADCEh9HAAAABmJLR0QA/wD/AP+gvaeTAAAGD0lEQVR4nO3dS2hc9R7A8TNJJgnJTaqlE29vX9BbW8SNL+pOCEjEWtSKSkG3LkQQarc+UERF0I3gA125qlSwbgRRiRQEDVWRtlykmkpyqb01TdI278zk3MXIsVQT2/4m56Tl81n9/2dOJr/A8OWQw2FKaZomAFyupqIHALiyyShAiIwChMgoQIiMAoTIKECIjAKEyChAiIwChMgoQIiMAoTIKECIjAKEyChAiIwChMgoQIiMAoTIKECIjAKEyChAiIwChMgoQIiMAoTIKECIjAKEyChAiIwChMgoQIiMAoTIKECIjAKEyChAiIwChMgoQIiMAoTIKECIjAKEyChAiIwChMgoQIiMAoTIKECIjAKEyChAiIwChMgoQIiMAoTIKECIjAKEyChAiIwChMgoQIiMAoTIKECIjAKEyChAiIwChMgoQEhL0QPAxTo4cXBobihJklJSemT1I0WPA78rpWla9AxwUXYN7jowfqC+Tm/xuWWlcDVKkU5XT3858eWxmWMjtZHx6nhnc2elpbK5dXNfd9+aljVFTwcXRUYpwEKysH9s/+unXj80eWghWfjzCc2l5jv+ccfenr33rLon//HgkrjFRN4OTx++9T+37j6+e2By4C8bmiRJLa31n+vf+fPOh48/fK52LucJ4ZK4GiVX/ef6Hxh8YLw2fv7BdeV1W9q2VFoqU+nU0NzQ0emjafL7vz73j+0/Pnv8i+u/6G7uLmJe+HsySn6OTB/Z8fOOmYWZ+rZ+w31Pz56bO24uJaXstOG54fdOv/fq/16tn3lo6tC7I+/uvW7vX77n+6Pvf3Lmk8V+4xsb3qi0VBr6R8CFZJSczKazj/7yaNbQjqaOjzZ/1Nfd9+czN7RueH7t87uv3d13rO/E/IkX//XiU9c9tdjbfjf13QdjHyz26ivrXqkkMsryklFy8vZvb/8w/UN93ZQ0ffzvj+/sunOJ829ov+Hz6z//afanpe8y3bfqvvXl9Yu9urp59eVNCxdPRslDmqRvjbyVbR+vPL50Q+u2tW/b1r5t6XN6u3p7u3qj80GAO/Xk4eDEwR9nfqyvy6Xys2ufLXYeaCAZJQ/95/qz9d3dd/e09BQ4DDSWjJKHgcmBbH1X910FTgINJ6Pk4fvp77P1TR03FTgJNJyMkoeR6ki23tq2tcBJoOFklGU3sTBRTavZ1vNIXGVklGV3tnY2W7eV2lpLrQUOAw0noyy7cqmcratJNXteHq4OMsqyu6b5mmxdS2uTC5MFDgMNJ6Msu3Kp3NHUkW3Pv90EVwEZJQ+bWjdl68PThwucBBpORsnD9s7t2frbqW8LnAQaTkbJw/aOPzL64diHBU4CDSej5GHnqp3Npeb6+ujM0fOfDYUrnYySh42tG3d078i2T/73ycW+hQmuODJKTvb07Mm+KeSbyW+eOfFMsfNAo8goOent6n1szWPZ9qWTLz0x/MTEwsQSP3Kqeuq5X58bq40t/3Rw+WSU/Ly2/rUb22/Mtm/+9ubWo1tfPvly9uUidcNzw/vG9j04+OCmI5te+PWFfaP7cp8ULkEpTT2ZR35Gq6P3Dt771cRXFxwvl8qVlkp7U/tIdeT8Z/CTJLm98/avt32dJMmuwV0Hxg/UD6a3+NyyUrgaJVerW1Z/tuWzp//5dGdT5/nH59P5E/MnBmcHL2hoW6lte8d296NYyVyNUoyT8yffGXnn07OfDkwN1NLaBa92NXfd1nHb/avuf+jah9aW19YPuhplZZJRCnamdmZobuhU9dRodbS1qbW7qXtj68bNbZuz2/qwwskoQIj/jQKEyChAiIwChMgoQIiMAoTIKECIjAKEyChAiIwChMgoQIiMAoTIKECIjAKEyChAiIwChMgoQIiMAoTIKECIjAKEyChAiIwChMgoQIiMAoTIKECIjAKEyChAiIwChMgoQIiMAoTIKECIjAKEyChAiIwChMgoQIiMAoTIKECIjAKEyChAiIwChMgoQIiMAoTIKECIjAKEyChAiIwChMgoQIiMAoTIKECIjAKEyChAiIwChMgoQIiMAoTIKECIjAKEyChAiIwChMgoQMj/Ae92YRAnZ8RAAAAAWXpUWHRyZGtpdFBLTCByZGtpdCAyMDIyLjAzLjUAAHice79v7T0GIOBlgABGKAaBBkZBASYg/V8SJOtYkp8LwpnJfqW5ilKCUEUyDNrcIgziYkj6EAwQEAMA17ELJtWbMNYAAAB/elRYdE1PTCByZGtpdCAyMDIyLjAzLjUAAHic41IAgSAX78wSBTgwcuHiUlAwwIMsLS0VwowNDAy4fBVADAUnV3dPPwXnEEcnmIizf6hfSLCCIVA9GKKqdAzx94WJGCo45ygY6BmAATaGgrOHu62uIUy9q58Lin4QH2YzkM0FAF7ZKUEwZPaNAAAALnpUWHRTTUlMRVMgcmRraXQgMjAyMi4wMy41AAB4nIt2ztGNVajRMNAx0NGsAQAdNgO2stIWkgAAAABJRU5ErkJggg==", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "CREATE BONDS: Number of atoms in ligand object and RDKit MOL are equal: 1 1\n", - "idx=0 Cl Number of bonds : 0\n", - "NO BONDS CREATED\n", - "CELL.CREATE_BONDS: Creating Metal-Metal Bonds for molecule H9-C10-Cl-Fe-Hg\n", - "CELL.CREATE_BONDS: Metals: [------------- Cell2mol METAL Object --------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Sub-Type = metal\n", - " Label = Hg\n", - " Atomic Number = 80\n", - " Index in Molecule = 0\n", - " Metal Adjacency (mconnec) = 2\n", - " Regular Adjacencies (connec) = 2\n", - " Atom Charge = 2.0\n", - " Coordination Sphere Formula = C-Cl\n", - " Possible Charges = [2]\n", - "----------------------------------------------------\n", - ", ------------- Cell2mol METAL Object --------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Sub-Type = metal\n", - " Label = Fe\n", - " Atomic Number = 26\n", - " Index in Molecule = 1\n", - " Metal Adjacency (mconnec) = 10\n", - " Regular Adjacencies (connec) = 10\n", - " Atom Charge = 3.0\n", - " Coordination Sphere Formula = C10\n", - " Possible Charges = [2, 3, 0]\n", - "----------------------------------------------------\n", - "]\n", - "0 C\n", - "C H 1.0\n", - "0 1\n", - "C C 1.0\n", - "0 2\n", - "C C 1.0\n", - "0 8\n", - "C Fe 0.5\n", - "1 H\n", - "H C 1.0\n", - "1 0\n", - "2 C\n", - "C C 1.0\n", - "2 0\n", - "C H 1.0\n", - "2 3\n", - "C C 2.0\n", - "2 4\n", - "C Fe 0.5\n", - "3 H\n", - "H C 1.0\n", - "3 2\n", - "4 C\n", - "C C 2.0\n", - "4 2\n", - "C H 1.0\n", - "4 5\n", - "C C 1.0\n", - "4 6\n", - "C Fe 0.5\n", - "5 H\n", - "H C 1.0\n", - "5 4\n", - "6 C\n", - "C C 1.0\n", - "6 4\n", - "C H 1.0\n", - "6 7\n", - "C C 2.0\n", - "6 8\n", - "C Fe 0.5\n", - "7 H\n", - "H C 1.0\n", - "7 6\n", - "8 C\n", - "C C 1.0\n", - "8 0\n", - "C C 2.0\n", - "8 6\n", - "C H 1.0\n", - "8 9\n", - "C Fe 0.5\n", - "9 H\n", - "H C 1.0\n", - "9 8\n" - ] - }, - { - "data": { - "image/png": "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", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0 C\n", - "C C 1.0\n", - "0 1\n", - "C C 2.0\n", - "0 7\n", - "C Hg 0.5\n", - "C Fe 0.5\n", - "1 C\n", - "C C 1.0\n", - "1 0\n", - "C H 1.0\n", - "1 2\n", - "C C 1.0\n", - "1 3\n", - "C Fe 0.5\n", - "2 H\n", - "H C 1.0\n", - "2 1\n", - "3 C\n", - "C C 1.0\n", - "3 1\n", - "C H 1.0\n", - "3 4\n", - "C C 2.0\n", - "3 5\n", - "C Fe 0.5\n", - "4 H\n", - "H C 1.0\n", - "4 3\n", - "5 C\n", - "C C 2.0\n", - "5 3\n", - "C H 1.0\n", - "5 6\n", - "C C 1.0\n", - "5 7\n", - "C Fe 0.5\n", - "6 H\n", - "H C 1.0\n", - "6 5\n", - "7 C\n", - "C C 2.0\n", - "7 0\n", - "C C 1.0\n", - "7 5\n", - "C H 1.0\n", - "7 8\n", - "C Fe 0.5\n", - "8 H\n", - "H C 1.0\n", - "8 7\n" - ] - }, - { - "data": { - "image/png": "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", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0 Cl\n", - "Cl Hg 0.5\n" - ] - }, - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAcIAAACWCAIAAADCEh9HAAAABmJLR0QA/wD/AP+gvaeTAAAGD0lEQVR4nO3dS2hc9R7A8TNJJgnJTaqlE29vX9BbW8SNL+pOCEjEWtSKSkG3LkQQarc+UERF0I3gA125qlSwbgRRiRQEDVWRtlykmkpyqb01TdI278zk3MXIsVQT2/4m56Tl81n9/2dOJr/A8OWQw2FKaZomAFyupqIHALiyyShAiIwChMgoQIiMAoTIKECIjAKEyChAiIwChMgoQIiMAoTIKECIjAKEyChAiIwChMgoQIiMAoTIKECIjAKEyChAiIwChMgoQIiMAoTIKECIjAKEyChAiIwChMgoQIiMAoTIKECIjAKEyChAiIwChMgoQIiMAoTIKECIjAKEyChAiIwChMgoQIiMAoTIKECIjAKEyChAiIwChMgoQIiMAoTIKECIjAKEyChAiIwChMgoQIiMAoTIKECIjAKEyChAiIwChMgoQEhL0QPAxTo4cXBobihJklJSemT1I0WPA78rpWla9AxwUXYN7jowfqC+Tm/xuWWlcDVKkU5XT3858eWxmWMjtZHx6nhnc2elpbK5dXNfd9+aljVFTwcXRUYpwEKysH9s/+unXj80eWghWfjzCc2l5jv+ccfenr33rLon//HgkrjFRN4OTx++9T+37j6+e2By4C8bmiRJLa31n+vf+fPOh48/fK52LucJ4ZK4GiVX/ef6Hxh8YLw2fv7BdeV1W9q2VFoqU+nU0NzQ0emjafL7vz73j+0/Pnv8i+u/6G7uLmJe+HsySn6OTB/Z8fOOmYWZ+rZ+w31Pz56bO24uJaXstOG54fdOv/fq/16tn3lo6tC7I+/uvW7vX77n+6Pvf3Lmk8V+4xsb3qi0VBr6R8CFZJSczKazj/7yaNbQjqaOjzZ/1Nfd9+czN7RueH7t87uv3d13rO/E/IkX//XiU9c9tdjbfjf13QdjHyz26ivrXqkkMsryklFy8vZvb/8w/UN93ZQ0ffzvj+/sunOJ829ov+Hz6z//afanpe8y3bfqvvXl9Yu9urp59eVNCxdPRslDmqRvjbyVbR+vPL50Q+u2tW/b1r5t6XN6u3p7u3qj80GAO/Xk4eDEwR9nfqyvy6Xys2ufLXYeaCAZJQ/95/qz9d3dd/e09BQ4DDSWjJKHgcmBbH1X910FTgINJ6Pk4fvp77P1TR03FTgJNJyMkoeR6ki23tq2tcBJoOFklGU3sTBRTavZ1vNIXGVklGV3tnY2W7eV2lpLrQUOAw0noyy7cqmcratJNXteHq4OMsqyu6b5mmxdS2uTC5MFDgMNJ6Msu3Kp3NHUkW3Pv90EVwEZJQ+bWjdl68PThwucBBpORsnD9s7t2frbqW8LnAQaTkbJw/aOPzL64diHBU4CDSej5GHnqp3Npeb6+ujM0fOfDYUrnYySh42tG3d078i2T/73ycW+hQmuODJKTvb07Mm+KeSbyW+eOfFMsfNAo8goOent6n1szWPZ9qWTLz0x/MTEwsQSP3Kqeuq5X58bq40t/3Rw+WSU/Ly2/rUb22/Mtm/+9ubWo1tfPvly9uUidcNzw/vG9j04+OCmI5te+PWFfaP7cp8ULkEpTT2ZR35Gq6P3Dt771cRXFxwvl8qVlkp7U/tIdeT8Z/CTJLm98/avt32dJMmuwV0Hxg/UD6a3+NyyUrgaJVerW1Z/tuWzp//5dGdT5/nH59P5E/MnBmcHL2hoW6lte8d296NYyVyNUoyT8yffGXnn07OfDkwN1NLaBa92NXfd1nHb/avuf+jah9aW19YPuhplZZJRCnamdmZobuhU9dRodbS1qbW7qXtj68bNbZuz2/qwwskoQIj/jQKEyChAiIwChMgoQIiMAoTIKECIjAKEyChAiIwChMgoQIiMAoTIKECIjAKEyChAiIwChMgoQIiMAoTIKECIjAKEyChAiIwChMgoQIiMAoTIKECIjAKEyChAiIwChMgoQIiMAoTIKECIjAKEyChAiIwChMgoQIiMAoTIKECIjAKEyChAiIwChMgoQIiMAoTIKECIjAKEyChAiIwChMgoQIiMAoTIKECIjAKEyChAiIwChMgoQIiMAoTIKECIjAKEyChAiIwChMgoQMj/Ae92YRAnZ8RAAAAAQ3pUWHRyZGtpdFBLTCByZGtpdCAyMDIyLjAzLjUAAHice79v7T0GIOBlgABGKAaBBkZBBSYg/Z9bhEFcDEkCwQABMQAeJAVf7p5QigAAAIV6VFh0TU9MIHJka2l0IDIwMjIuMDMuNQAAeJzjUgCBIBfvzBIFODBy4eJSUDDAgywtLRXCjA0MDLh8FUAMBSdXd08/BecQRyeYiLN/qF9IsIIhUD0Yoqp0DPH3hYkYKjjnKBjoGYABNoaCs4e7ra6hQpijD5CCaXP1c0ExBsSHOQDI5gIAiwMq33CRhHAAAAAuelRYdFNNSUxFUyByZGtpdCAyMDIyLjAzLjUAAHici3bO0Y1VqNEw0DHQ0awBAB02A7ay0haSAAAAAElFTkSuQmCC", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "CELL.CREATE_BONDS: Creating Bonds for molecule H9-C10-Cl-Fe-Hg\n" - ] - }, - { - "data": { - "image/png": "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", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "CREATE BONDS: Number of atoms in ligand object and RDKit MOL are different: 9 10\n", - "[(0, 'C'), (1, 'H'), (2, 'C'), (3, 'C'), (4, 'H'), (5, 'C'), (6, 'H'), (7, 'C'), (8, 'H')]\n", - "[(0, 'C'), (1, 'H'), (2, 'C'), (3, 'C'), (4, 'H'), (5, 'C'), (6, 'H'), (7, 'C'), (8, 'H'), (9, 'H')]\n", - "NON_BONDED_ATOMS [9]\n", - "idx=0 C Number of bonds : 4\n", - "C : 0 , H : 1 , 1.0\n", - "BOND CREATED 0 0 1 1.0 C H\n", - "C : 0 , C : 2 , 1.0\n", - "BOND CREATED 0 0 2 1.0 C C\n", - "C : 0 , C : 7 , 1.0\n", - "BOND CREATED 0 0 7 1.0 C C\n", - "C : 0 , H : 9 , 1.0\n", - "NO BOND CREATED bond_startatom=0 or bond_endatom=9 is not in the specie.atoms. It belongs to non_bonded_atoms=[9].\n", - "BONDS [('C', 'H', 1.0, 0.93), ('C', 'C', 1.0, 1.421), ('C', 'C', 1.0, 1.426)]\n", - "idx=1 H Number of bonds : 1\n", - "C : 0 , H : 1 , 1.0\n", - "BOND CREATED 1 1 0 1.0 H C\n", - "BONDS [('H', 'C', 1.0, 0.93)]\n", - "idx=2 C Number of bonds : 2\n", - "C : 0 , C : 2 , 1.0\n", - "BOND CREATED 2 2 0 1.0 C C\n", - "C : 2 , C : 3 , 2.0\n", - "BOND CREATED 2 2 3 2.0 C C\n", - "BONDS [('C', 'C', 1.0, 1.421), ('C', 'C', 2.0, 1.386)]\n", - "idx=3 C Number of bonds : 3\n", - "C : 2 , C : 3 , 2.0\n", - "BOND CREATED 3 3 2 2.0 C C\n", - "C : 3 , H : 4 , 1.0\n", - "BOND CREATED 3 3 4 1.0 C H\n", - "C : 3 , C : 5 , 1.0\n", - "BOND CREATED 3 3 5 1.0 C C\n", - "BONDS [('C', 'C', 2.0, 1.386), ('C', 'H', 1.0, 0.93), ('C', 'C', 1.0, 1.438)]\n", - "idx=4 H Number of bonds : 1\n", - "C : 3 , H : 4 , 1.0\n", - "BOND CREATED 4 4 3 1.0 H C\n", - "BONDS [('H', 'C', 1.0, 0.93)]\n", - "idx=5 C Number of bonds : 3\n", - "C : 3 , C : 5 , 1.0\n", - "BOND CREATED 5 5 3 1.0 C C\n", - "C : 5 , H : 6 , 1.0\n", - "BOND CREATED 5 5 6 1.0 C H\n", - "C : 5 , C : 7 , 2.0\n", - "BOND CREATED 5 5 7 2.0 C C\n", - "BONDS [('C', 'C', 1.0, 1.438), ('C', 'H', 1.0, 0.93), ('C', 'C', 2.0, 1.394)]\n", - "idx=6 H Number of bonds : 1\n", - "C : 5 , H : 6 , 1.0\n", - "BOND CREATED 6 6 5 1.0 H C\n", - "BONDS [('H', 'C', 1.0, 0.93)]\n", - "idx=7 C Number of bonds : 3\n", - "C : 0 , C : 7 , 1.0\n", - "BOND CREATED 7 7 0 1.0 C C\n", - "C : 5 , C : 7 , 2.0\n", - "BOND CREATED 7 7 5 2.0 C C\n", - "C : 7 , H : 8 , 1.0\n", - "BOND CREATED 7 7 8 1.0 C H\n", - "BONDS [('C', 'C', 1.0, 1.426), ('C', 'C', 2.0, 1.394), ('C', 'H', 1.0, 0.931)]\n", - "idx=8 H Number of bonds : 1\n", - "C : 7 , H : 8 , 1.0\n", - "BOND CREATED 8 8 7 1.0 H C\n", - "BONDS [('H', 'C', 1.0, 0.931)]\n", - "idx=9 H Number of bonds : 1\n", - "C : 0 , H : 9 , 1.0\n", - "NO BOND CREATED bond_startatom=0 or bond_endatom=9 is not in the specie.atoms. It belongs to non_bonded_atoms=[9].\n", - "NO BONDS\n" - ] - }, - { - "data": { - "image/png": "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", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "CREATE BONDS: Number of atoms in ligand object and RDKit MOL are different: 10 11\n", - "[(0, 'H'), (1, 'C'), (2, 'C'), (3, 'H'), (4, 'C'), (5, 'H'), (6, 'C'), (7, 'H'), (8, 'C'), (9, 'H')]\n", - "[(0, 'H'), (1, 'C'), (2, 'C'), (3, 'H'), (4, 'C'), (5, 'H'), (6, 'C'), (7, 'H'), (8, 'C'), (9, 'H'), (10, 'H')]\n", - "NON_BONDED_ATOMS [10]\n", - "idx=0 H Number of bonds : 1\n", - "H : 0 , C : 1 , 1.0\n", - "BOND CREATED 0 0 1 1.0 H C\n", - "BONDS [('H', 'C', 1.0, 0.929)]\n", - "idx=1 C Number of bonds : 4\n", - "H : 0 , C : 1 , 1.0\n", - "BOND CREATED 1 1 0 1.0 C H\n", - "C : 1 , C : 2 , 1.0\n", - "BOND CREATED 1 1 2 1.0 C C\n", - "C : 1 , C : 8 , 1.0\n", - "BOND CREATED 1 1 8 1.0 C C\n", - "C : 1 , H : 10 , 1.0\n", - "NO BOND CREATED bond_startatom=1 or bond_endatom=10 is not in the specie.atoms. It belongs to non_bonded_atoms=[10].\n", - "BONDS [('C', 'H', 1.0, 0.929), ('C', 'C', 1.0, 1.373), ('C', 'C', 1.0, 1.379)]\n", - "idx=2 C Number of bonds : 3\n", - "C : 1 , C : 2 , 1.0\n", - "BOND CREATED 2 2 1 1.0 C C\n", - "C : 2 , H : 3 , 1.0\n", - "BOND CREATED 2 2 3 1.0 C H\n", - "C : 2 , C : 4 , 2.0\n", - "BOND CREATED 2 2 4 2.0 C C\n", - "BONDS [('C', 'C', 1.0, 1.373), ('C', 'H', 1.0, 0.933), ('C', 'C', 2.0, 1.475)]\n", - "idx=3 H Number of bonds : 1\n", - "C : 2 , H : 3 , 1.0\n", - "BOND CREATED 3 3 2 1.0 H C\n", - "BONDS [('H', 'C', 1.0, 0.933)]\n", - "idx=4 C Number of bonds : 3\n", - "C : 2 , C : 4 , 2.0\n", - "BOND CREATED 4 4 2 2.0 C C\n", - "C : 4 , H : 5 , 1.0\n", - "BOND CREATED 4 4 5 1.0 C H\n", - "C : 4 , C : 6 , 1.0\n", - "BOND CREATED 4 4 6 1.0 C C\n", - "BONDS [('C', 'C', 2.0, 1.475), ('C', 'H', 1.0, 0.926), ('C', 'C', 1.0, 1.393)]\n", - "idx=5 H Number of bonds : 1\n", - "C : 4 , H : 5 , 1.0\n", - "BOND CREATED 5 5 4 1.0 H C\n", - "BONDS [('H', 'C', 1.0, 0.926)]\n", - "idx=6 C Number of bonds : 3\n", - "C : 4 , C : 6 , 1.0\n", - "BOND CREATED 6 6 4 1.0 C C\n", - "C : 6 , H : 7 , 1.0\n", - "BOND CREATED 6 6 7 1.0 C H\n", - "C : 6 , C : 8 , 2.0\n", - "BOND CREATED 6 6 8 2.0 C C\n", - "BONDS [('C', 'C', 1.0, 1.393), ('C', 'H', 1.0, 0.93), ('C', 'C', 2.0, 1.382)]\n", - "idx=7 H Number of bonds : 1\n", - "C : 6 , H : 7 , 1.0\n", - "BOND CREATED 7 7 6 1.0 H C\n", - "BONDS [('H', 'C', 1.0, 0.93)]\n", - "idx=8 C Number of bonds : 3\n", - "C : 1 , C : 8 , 1.0\n", - "BOND CREATED 8 8 1 1.0 C C\n", - "C : 6 , C : 8 , 2.0\n", - "BOND CREATED 8 8 6 2.0 C C\n", - "C : 8 , H : 9 , 1.0\n", - "BOND CREATED 8 8 9 1.0 C H\n", - "BONDS [('C', 'C', 1.0, 1.379), ('C', 'C', 2.0, 1.382), ('C', 'H', 1.0, 0.931)]\n", - "idx=9 H Number of bonds : 1\n", - "C : 8 , H : 9 , 1.0\n", - "BOND CREATED 9 9 8 1.0 H C\n", - "BONDS [('H', 'C', 1.0, 0.931)]\n", - "idx=10 H Number of bonds : 1\n", - "C : 1 , H : 10 , 1.0\n", - "NO BOND CREATED bond_startatom=1 or bond_endatom=10 is not in the specie.atoms. It belongs to non_bonded_atoms=[10].\n", - "NO BONDS\n" - ] - }, - { - "data": { - "image/png": "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", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "CREATE BONDS: Number of atoms in ligand object and RDKit MOL are equal: 1 1\n", - "idx=0 Cl Number of bonds : 0\n", - "NO BONDS CREATED\n", - "CELL.CREATE_BONDS: Creating Metal-Metal Bonds for molecule H9-C10-Cl-Fe-Hg\n", - "CELL.CREATE_BONDS: Metals: [------------- Cell2mol METAL Object --------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Sub-Type = metal\n", - " Label = Hg\n", - " Atomic Number = 80\n", - " Index in Molecule = 0\n", - " Metal Adjacency (mconnec) = 2\n", - " Regular Adjacencies (connec) = 2\n", - " Atom Charge = 2.0\n", - " Coordination Sphere Formula = C-Cl\n", - " Possible Charges = [2]\n", - "----------------------------------------------------\n", - ", ------------- Cell2mol METAL Object --------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Sub-Type = metal\n", - " Label = Fe\n", - " Atomic Number = 26\n", - " Index in Molecule = 1\n", - " Metal Adjacency (mconnec) = 10\n", - " Regular Adjacencies (connec) = 10\n", - " Atom Charge = 3.0\n", - " Coordination Sphere Formula = C10\n", - " Possible Charges = [2, 3, 0]\n", - "----------------------------------------------------\n", - "]\n", - "0 C\n", - "C H 1.0\n", - "0 1\n", - "C C 1.0\n", - "0 2\n", - "C C 1.0\n", - "0 7\n", - "C Fe 0.5\n", - "1 H\n", - "H C 1.0\n", - "1 0\n", - "2 C\n", - "C C 1.0\n", - "2 0\n", - "C C 2.0\n", - "2 3\n", - "C Hg 0.5\n", - "C Fe 0.5\n", - "3 C\n", - "C C 2.0\n", - "3 2\n", - "C H 1.0\n", - "3 4\n", - "C C 1.0\n", - "3 5\n", - "C Fe 0.5\n", - "4 H\n", - "H C 1.0\n", - "4 3\n", - "5 C\n", - "C C 1.0\n", - "5 3\n", - "C H 1.0\n", - "5 6\n", - "C C 2.0\n", - "5 7\n", - "C Fe 0.5\n", - "6 H\n", - "H C 1.0\n", - "6 5\n", - "7 C\n", - "C C 1.0\n", - "7 0\n", - "C C 2.0\n", - "7 5\n", - "C H 1.0\n", - "7 8\n", - "C Fe 0.5\n", - "8 H\n", - "H C 1.0\n", - "8 7\n" - ] - }, - { - "data": { - "image/png": "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", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0 H\n", - "H C 1.0\n", - "0 1\n", - "1 C\n", - "C H 1.0\n", - "1 0\n", - "C C 1.0\n", - "1 2\n", - "C C 1.0\n", - "1 8\n", - "C Fe 0.5\n", - "2 C\n", - "C C 1.0\n", - "2 1\n", - "C H 1.0\n", - "2 3\n", - "C C 2.0\n", - "2 4\n", - "C Fe 0.5\n", - "3 H\n", - "H C 1.0\n", - "3 2\n", - "4 C\n", - "C C 2.0\n", - "4 2\n", - "C H 1.0\n", - "4 5\n", - "C C 1.0\n", - "4 6\n", - "C Fe 0.5\n", - "5 H\n", - "H C 1.0\n", - "5 4\n", - "6 C\n", - "C C 1.0\n", - "6 4\n", - "C H 1.0\n", - "6 7\n", - "C C 2.0\n", - "6 8\n", - "C Fe 0.5\n", - "7 H\n", - "H C 1.0\n", - "7 6\n", - "8 C\n", - "C C 1.0\n", - "8 1\n", - "C C 2.0\n", - "8 6\n", - "C H 1.0\n", - "8 9\n", - "C Fe 0.5\n", - "9 H\n", - "H C 1.0\n", - "9 8\n" - ] - }, - { - "data": { - "image/png": "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", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0 Cl\n", - "Cl Hg 0.5\n" - ] - }, - { - "data": { - "image/png": "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", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "newcell.create_bonds(debug=debug)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "887ac5a7", - "metadata": {}, - "outputs": [], - "source": [ - "for mol in newcell.moleclist:\n", - " if mol.iscomplex:\n", - " print(mol.formula)\n", - " print(f\"{mol.smiles=}\")\n", - " print(f\"{mol.smiles_with_H=}\")\n", - " for lig in mol.ligands:\n", - " print(lig.smiles)\n", - " display(mol_with_atom_index(lig.rdkit_obj))" - ] - }, - { - "cell_type": "code", - "execution_count": 26, - "id": "8745e88c", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 8\n", - " Formula = Cl6-Hg2\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = -2\n", - " Smiles = ['[Cl-]', '[Cl-]', '[Cl-]', '[Cl-]', '[Cl-]', '[Cl-]']\n", - " Origin = cell.reconstruct\n", - " Number of Ligands = 6\n", - " Number of Metals = 2\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 22\n", - " Formula = H9-C10-Cl-Fe-Hg\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = 1\n", - " Smiles = ['[H]C1=C([H])[C-]([H])C([H])=C1[H]', '[H]C1=[C-][C-]([H])C([H])=C1[H]', '[Cl-]']\n", - " Origin = cell.reconstruct\n", - " Number of Ligands = 3\n", - " Number of Metals = 2\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 22\n", - " Formula = H9-C10-Cl-Fe-Hg\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = 1\n", - " Smiles = ['[H]C1=[C-][C-]([H])C([H])=C1[H]', '[H]C1=C([H])[C-]([H])C([H])=C1[H]', '[Cl-]']\n", - " Origin = cell.reconstruct\n", - " Number of Ligands = 3\n", - " Number of Metals = 2\n", - " ---------------------------------------------------]" - ] - }, - "execution_count": 26, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "newcell.moleclist" - ] - }, - { - "cell_type": "code", - "execution_count": 27, - "id": "8a0c7280", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "coord_group=[------------- Cell2mol GROUP Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = group\n", - " Number of Atoms = 1\n", - " Formula = Cl\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_ligand\n", - " Number of Metals = 2\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol GROUP Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = group\n", - " Number of Atoms = 1\n", - " Formula = Cl\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_ligand\n", - " Number of Metals = 1\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol GROUP Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = group\n", - " Number of Atoms = 1\n", - " Formula = Cl\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_ligand\n", - " Number of Metals = 1\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol GROUP Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = group\n", - " Number of Atoms = 1\n", - " Formula = Cl\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_ligand\n", - " Number of Metals = 2\n", - "---------------------------------------------------\n", - "]\n", - "self.coord_nr=4\n", - "Cl [1.3562608, -0.0638992, 5.1197601]\n", - "Cl [2.7576338000000002, -3.8316994000000006, 5.1099833]\n", - "Cl [3.2896384000000003, -1.1564794000000003, 1.8108721]\n", - "Cl [4.8684929, -0.5616564000000004, 5.7432997]\n", - "symbols=['Hg', 'Cl', 'Cl', 'Cl', 'Cl']\n", - "positions=[[3.3561142, -1.7460605999999999, 4.0823379], [1.3562608, -0.0638992, 5.1197601], [2.7576338000000002, -3.8316994000000006, 5.1099833], [3.2896384000000003, -1.1564794000000003, 1.8108721], [4.8684929, -0.5616564000000004, 5.7432997]]\n", - "4\n", - "[[1, 2], [1, 3], [1, 4], [1, 5]]\n", - "Hg [3.3561142, -1.7460605999999999, 4.0823379]\n", - "Cl [1.3562608, -0.0638992, 5.1197601]\n", - "Cl [2.7576338000000002, -3.8316994000000006, 5.1099833]\n", - "Cl [3.2896384000000003, -1.1564794000000003, 1.8108721]\n", - "Cl [4.8684929, -0.5616564000000004, 5.7432997]\n", - "\n", - "The number of coordinating points (including the mid point of haptic ligands) : 4\n", - "{'Tetrahedral': 1.839, 'Square planar': 29.907, 'Seesaw': 7.15}\n", - "The most likely geometry : 'Tetrahedral' with deviation value 1.839\n", - "The type of hapticity : []\n", - "\n", - "self.coord_geometry='Tetrahedral' self.geom_deviation=1.839\n", - "[1.792, 1.381, 1.328, 1.519]\n", - "1.505\n", - "self.rel_metal_radius=1.14\n", - "coord_group=[------------- Cell2mol GROUP Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = group\n", - " Number of Atoms = 1\n", - " Formula = Cl\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_ligand\n", - " Number of Metals = 1\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol GROUP Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = group\n", - " Number of Atoms = 1\n", - " Formula = Cl\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_ligand\n", - " Number of Metals = 1\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol GROUP Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = group\n", - " Number of Atoms = 1\n", - " Formula = Cl\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_ligand\n", - " Number of Metals = 2\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol GROUP Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = group\n", - " Number of Atoms = 1\n", - " Formula = Cl\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_ligand\n", - " Number of Metals = 2\n", - "---------------------------------------------------\n", - "]\n", - "self.coord_nr=4\n", - "Cl [3.4671199, 3.2061439, 5.7530764]\n", - "Cl [2.9351153, 0.5309238, 9.0521877]\n", - "Cl [1.3562608, -0.0638992, 5.1197601]\n", - "Cl [4.8684929, -0.5616564000000004, 5.7432997]\n", - "symbols=['Hg', 'Cl', 'Cl', 'Cl', 'Cl']\n", - "positions=[[2.8686395, 1.120505, 6.7807219], [3.4671199, 3.2061439, 5.7530764], [2.9351153, 0.5309238, 9.0521877], [1.3562608, -0.0638992, 5.1197601], [4.8684929, -0.5616564000000004, 5.7432997]]\n", - "4\n", - "[[1, 2], [1, 3], [1, 4], [1, 5]]\n", - "Hg [2.8686395, 1.120505, 6.7807219]\n", - "Cl [3.4671199, 3.2061439, 5.7530764]\n", - "Cl [2.9351153, 0.5309238, 9.0521877]\n", - "Cl [1.3562608, -0.0638992, 5.1197601]\n", - "Cl [4.8684929, -0.5616564000000004, 5.7432997]\n", - "\n", - "The number of coordinating points (including the mid point of haptic ligands) : 4\n", - "{'Tetrahedral': 1.839, 'Square planar': 29.907, 'Seesaw': 7.15}\n", - "The most likely geometry : 'Tetrahedral' with deviation value 1.839\n", - "The type of hapticity : []\n", - "\n", - "self.coord_geometry='Tetrahedral' self.geom_deviation=1.839\n", - "[1.381, 1.328, 1.519, 1.792]\n", - "1.505\n", - "self.rel_metal_radius=1.14\n", - "GROUP.SPLIT_GROUP: conn_idx=[0]\n", - "GROUP.SPLIT_GROUP: conn_labels=['C']\n", - "GROUP.SPLIT_GROUP: conn_coord=[[6.1022008, 2.0607668, 3.3610307]]\n", - "GROUP.SPLIT_GROUP: conn_radii=[0.73]\n", - "blocklist=[[0]]\n", - "GROUP.SPLIT_GROUP: block=[0]\n", - "ADD_ATOM: Metalist length 1\n", - "ADD_ATOM: Ligand Atoms 9\n", - "ADD_ATOM: site= 0\n", - "ADD_ATOM: evaluating apos=array([6.1022008, 2.0607668, 3.3610307]) and tgt.coord=[6.4998052, 2.1910413, 5.3595078]\n", - "ADD_ATOM: received tmpconnec[posadded]=1\n", - "ADD_ATOM: Chosen Metal index None. H is added at site 0\n", - "ADD_ATOM: Metalist length 1\n", - "ADD_ATOM: Ligand Atoms 9\n", - "ADD_ATOM: site= 0\n", - "ADD_ATOM: evaluating apos=array([6.1022008, 2.0607668, 3.3610307]) and tgt.coord=[6.4998052, 2.1910413, 5.3595078]\n", - "ADD_ATOM: received tmpconnec[posadded]=1\n", - "ADD_ATOM: Chosen Metal index None. H is added at site 0\n", - "coord_group=[------------- Cell2mol GROUP Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = group\n", - " Number of Atoms = 1\n", - " Formula = C\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_group\n", - " Number of Metals = 2\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol GROUP Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = group\n", - " Number of Atoms = 1\n", - " Formula = Cl\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_ligand\n", - " Number of Metals = 1\n", - "---------------------------------------------------\n", - "]\n", - "self.coord_nr=2\n", - "C [6.1022008, 2.0607668, 3.3610307]\n", - "Cl [6.985123, 2.3016164, 7.6030555]\n", - "symbols=['Hg', 'C', 'Cl']\n", - "positions=[[6.4998052, 2.1910413, 5.3595078], [6.1022008, 2.0607668, 3.3610307], [6.985123, 2.3016164, 7.6030555]]\n", - "2\n", - "[[1, 2], [1, 3]]\n", - "Hg [6.4998052, 2.1910413, 5.3595078]\n", - "C [6.1022008, 2.0607668, 3.3610307]\n", - "Cl [6.985123, 2.3016164, 7.6030555]\n", - "\n", - "The number of coordinating points (including the mid point of haptic ligands) : 2\n", - "{'Linear': 0.12, 'Bent (V-shape, 109.47°)': 13.912, 'Bent (L-shape, 90°)': 24.491}\n", - "The most likely geometry : 'Linear' with deviation value 0.12\n", - "The type of hapticity : []\n", - "\n", - "self.coord_geometry='Linear' self.geom_deviation=0.12\n", - "[1.312, 1.278]\n", - "1.295\n", - "self.rel_metal_radius=0.981\n", - "coord_group=[------------- Cell2mol GROUP Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = group\n", - " Number of Atoms = 5\n", - " Formula = C5\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_ligand\n", - " Number of Metals = 1\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol GROUP Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = group\n", - " Number of Atoms = 5\n", - " Formula = C5\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_ligand\n", - " Number of Metals = 2\n", - "---------------------------------------------------\n", - "]\n", - "self.coord_nr=2\n", - "group.haptic_type=['h5-Cp']\n", - "[[8.4662071, 4.3093526, 1.5686258], [8.4177716, 3.6384001, 0.3649988], [9.0069, 2.4157695, 0.5757422], [9.425084, 2.3344473, 1.9879399], [9.061447600000001, 3.5520773, 2.5593369]]\n", - "[8.8754821 3.2500094 1.4113287]\n", - "mid point of group.haptic_type=['h5-Cp'] [8.8754821 3.2500094 1.4113287]\n", - "group.haptic_type=['h5-Cp']\n", - "[[6.1022008, 2.0607668, 3.3610307], [5.5104028, 3.0110239, 2.5441286], [5.3684013, 2.5137605, 1.2025407], [5.8997816, 1.2250349, 1.2351299], [6.3650269, 0.9240044, 2.5495601]]\n", - "[5.8491627 1.9469181 2.178478 ]\n", - "mid point of group.haptic_type=['h5-Cp'] [5.8491627 1.9469181 2.178478 ]\n", - "symbols=['Fe', \"['h5-Cp']\", \"['h5-Cp']\"]\n", - "positions=[[7.3654285, 2.5762879, 1.7854525], [8.8754821, 3.2500094, 1.4113287], [5.8491627, 1.9469181, 2.178478]]\n", - "2\n", - "[[1, 2], [1, 3]]\n", - "Fe [7.3654285, 2.5762879, 1.7854525]\n", - "['h5-Cp'] [8.8754821, 3.2500094, 1.4113287]\n", - "['h5-Cp'] [5.8491627, 1.9469181, 2.178478]\n", - "\n", - "The number of coordinating points (including the mid point of haptic ligands) : 2\n", - "{'Linear': 0.007, 'Bent (V-shape, 109.47°)': 13.717, 'Bent (L-shape, 90°)': 24.293}\n", - "The most likely geometry : 'Linear' with deviation value 0.007\n", - "The type of hapticity : [['h5-Cp'], ['h5-Cp']]\n", - "\n", - "self.coord_geometry='Linear' self.geom_deviation=0.007\n", - "[0.965, 0.958]\n", - "0.962\n", - "self.rel_metal_radius=0.729\n", - "GROUP.SPLIT_GROUP: conn_idx=[1]\n", - "GROUP.SPLIT_GROUP: conn_labels=['C']\n", - "GROUP.SPLIT_GROUP: conn_coord=[[-2.7651809, 6.6251757, 7.5020291]]\n", - "GROUP.SPLIT_GROUP: conn_radii=[0.73]\n", - "blocklist=[[0]]\n", - "GROUP.SPLIT_GROUP: block=[0]\n", - "ADD_ATOM: Metalist length 1\n", - "ADD_ATOM: Ligand Atoms 9\n", - "ADD_ATOM: site= 0\n", - "ADD_ATOM: evaluating apos=array([-3.028007 , 7.7619381, 8.3134996]) and tgt.coord=[-4.028408600000001, 6.1096545, 9.0776072]\n", - "ADD_ATOM: received tmpconnec[posadded]=1\n", - "ADD_ATOM: Chosen Metal index None. H is added at site 0\n", - "ADD_ATOM: Metalist length 1\n", - "ADD_ATOM: Ligand Atoms 9\n", - "ADD_ATOM: site= 0\n", - "ADD_ATOM: evaluating apos=array([-3.028007 , 7.7619381, 8.3134996]) and tgt.coord=[-4.028408600000001, 6.1096545, 9.0776072]\n", - "ADD_ATOM: received tmpconnec[posadded]=1\n", - "ADD_ATOM: Chosen Metal index None. H is added at site 0\n", - "coord_group=[------------- Cell2mol GROUP Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = group\n", - " Number of Atoms = 1\n", - " Formula = C\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_group\n", - " Number of Metals = 2\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol GROUP Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = group\n", - " Number of Atoms = 1\n", - " Formula = Cl\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_ligand\n", - " Number of Metals = 1\n", - "---------------------------------------------------\n", - "]\n", - "self.coord_nr=2\n", - "C [-2.7651809, 6.6251757, 7.5020291]\n", - "Cl [-3.6481031, 6.3843261, 3.2600042]\n", - "symbols=['Hg', 'C', 'Cl']\n", - "positions=[[-3.1627853000000004, 6.4949012, 5.503552], [-2.7651809, 6.6251757, 7.5020291], [-3.6481031, 6.3843261, 3.2600042]]\n", - "2\n", - "[[1, 2], [1, 3]]\n", - "Hg [-3.1627853000000004, 6.4949012, 5.503552]\n", - "C [-2.7651809, 6.6251757, 7.5020291]\n", - "Cl [-3.6481031, 6.3843261, 3.2600042]\n", - "\n", - "The number of coordinating points (including the mid point of haptic ligands) : 2\n", - "{'Linear': 0.12, 'Bent (V-shape, 109.47°)': 13.912, 'Bent (L-shape, 90°)': 24.491}\n", - "The most likely geometry : 'Linear' with deviation value 0.12\n", - "The type of hapticity : []\n", - "\n", - "self.coord_geometry='Linear' self.geom_deviation=0.12\n", - "[1.312, 1.278]\n", - "1.295\n", - "self.rel_metal_radius=0.981\n", - "coord_group=[------------- Cell2mol GROUP Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = group\n", - " Number of Atoms = 5\n", - " Formula = C5\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_ligand\n", - " Number of Metals = 2\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol GROUP Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = group\n", - " Number of Atoms = 5\n", - " Formula = C5\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_ligand\n", - " Number of Metals = 1\n", - "---------------------------------------------------\n", - "]\n", - "self.coord_nr=2\n", - "group.haptic_type=['h5-Cp']\n", - "[[-3.028007, 7.7619381, 8.3134996], [-2.7651809, 6.6251757, 7.5020291], [-2.1733829, 5.6749186, 8.3189312], [-2.0313814, 6.1721819, 9.660519], [-2.5627616, 7.4609076, 9.6279299]]\n", - "[-2.5121428 6.7390244 8.6845818]\n", - "mid point of group.haptic_type=['h5-Cp'] [-2.5121428 6.7390244 8.6845818]\n", - "group.haptic_type=['h5-Cp']\n", - "[[-5.0807517, 5.0475424, 10.4980609], [-5.66988, 6.2701729, 10.2873176], [-6.088064, 6.3514951, 8.8751198], [-5.7244276, 5.1338652, 8.3037229], [-5.1291871, 4.3765899, 9.2944339]]\n", - "[-5.5384621 5.4359331 9.451731 ]\n", - "mid point of group.haptic_type=['h5-Cp'] [-5.5384621 5.4359331 9.451731 ]\n", - "symbols=['Fe', \"['h5-Cp']\", \"['h5-Cp']\"]\n", - "positions=[[-4.028408600000001, 6.1096545, 9.0776072], [-2.5121428, 6.7390244, 8.6845818], [-5.5384621, 5.4359331, 9.451731]]\n", - "2\n", - "[[1, 2], [1, 3]]\n", - "Fe [-4.028408600000001, 6.1096545, 9.0776072]\n", - "['h5-Cp'] [-2.5121428, 6.7390244, 8.6845818]\n", - "['h5-Cp'] [-5.5384621, 5.4359331, 9.451731]\n", - "\n", - "The number of coordinating points (including the mid point of haptic ligands) : 2\n", - "{'Linear': 0.007, 'Bent (V-shape, 109.47°)': 13.717, 'Bent (L-shape, 90°)': 24.293}\n", - "The most likely geometry : 'Linear' with deviation value 0.007\n", - "The type of hapticity : [['h5-Cp'], ['h5-Cp']]\n", - "\n", - "self.coord_geometry='Linear' self.geom_deviation=0.007\n", - "[0.958, 0.965]\n", - "0.962\n", - "self.rel_metal_radius=0.729\n" - ] - }, - { - "data": { - "text/plain": [ - "[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 8\n", - " Formula = Cl6-Hg2\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = -2\n", - " Spin = 1\n", - " Smiles = ['[Cl-]', '[Cl-]', '[Cl-]', '[Cl-]', '[Cl-]', '[Cl-]']\n", - " Origin = cell.reconstruct\n", - " Number of Ligands = 6\n", - " Number of Metals = 2\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 22\n", - " Formula = H9-C10-Cl-Fe-Hg\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = 1\n", - " Spin = 2\n", - " Smiles = ['[H]C1=C([H])[C-]([H])C([H])=C1[H]', '[H]C1=[C-][C-]([H])C([H])=C1[H]', '[Cl-]']\n", - " Origin = cell.reconstruct\n", - " Number of Ligands = 3\n", - " Number of Metals = 2\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 22\n", - " Formula = H9-C10-Cl-Fe-Hg\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = 1\n", - " Spin = 2\n", - " Smiles = ['[H]C1=[C-][C-]([H])C([H])=C1[H]', '[H]C1=C([H])[C-]([H])C([H])=C1[H]', '[Cl-]']\n", - " Origin = cell.reconstruct\n", - " Number of Ligands = 3\n", - " Number of Metals = 2\n", - " ---------------------------------------------------]" - ] - }, - "execution_count": 27, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "newcell.assign_spin(debug=2)" - ] - }, - { - "cell_type": "code", - "execution_count": 28, - "id": "5a3cb6dc", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Cl6-Hg2 -2 1\n", - "Hg 2.0 1\n", - "4 Tetrahedral 1.839 1.14\n", - "Hg 2.0 1\n", - "4 Tetrahedral 1.839 1.14\n", - "H9-C10-Cl-Fe-Hg 1 2\n", - "Hg 2.0 1\n", - "2 Linear 0.12 0.981\n", - "Fe 3.0 2\n", - "2 Linear 0.007 0.729\n", - "H9-C10-Cl-Fe-Hg 1 2\n", - "Hg 2.0 1\n", - "2 Linear 0.12 0.981\n", - "Fe 3.0 2\n", - "2 Linear 0.007 0.729\n" - ] - } - ], - "source": [ - "for mol in newcell.moleclist:\n", - " if mol.iscomplex:\n", - " print(mol.formula, mol.totcharge, mol.spin)\n", - " for met in mol.metals:\n", - " print(met.label, met.charge, met.spin)\n", - " print(met.coord_nr, met.coord_geometry, met.geom_deviation, met.rel_metal_radius)" - ] - }, - { - "cell_type": "code", - "execution_count": 29, - "id": "1c46ec64", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 8\n", - " Formula = Cl6-Hg2\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = -2\n", - " Spin = 1\n", - " Smiles = ['[Cl-]', '[Cl-]', '[Cl-]', '[Cl-]', '[Cl-]', '[Cl-]']\n", - " Origin = cell.reconstruct\n", - " Number of Ligands = 6\n", - " Number of Metals = 2\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 22\n", - " Formula = H9-C10-Cl-Fe-Hg\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = 1\n", - " Spin = 2\n", - " Smiles = ['[H]C1=C([H])[C-]([H])C([H])=C1[H]', '[H]C1=[C-][C-]([H])C([H])=C1[H]', '[Cl-]']\n", - " Origin = cell.reconstruct\n", - " Number of Ligands = 3\n", - " Number of Metals = 2\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 22\n", - " Formula = H9-C10-Cl-Fe-Hg\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = 1\n", - " Spin = 2\n", - " Smiles = ['[H]C1=[C-][C-]([H])C([H])=C1[H]', '[H]C1=C([H])[C-]([H])C([H])=C1[H]', '[Cl-]']\n", - " Origin = cell.reconstruct\n", - " Number of Ligands = 3\n", - " Number of Metals = 2\n", - " ---------------------------------------------------]" - ] - }, - "execution_count": 29, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "newcell.moleclist" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "d5ab74f4", - "metadata": {}, - "outputs": [], - "source": [ - "newcell.save(f\"{name}/{name}.cell\")" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "cell2mol", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.10.6" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/cell2mol/test/test_one_by_one_INOVAL.ipynb b/cell2mol/test/test_one_by_one_INOVAL.ipynb deleted file mode 100644 index 57d91b87f..000000000 --- a/cell2mol/test/test_one_by_one_INOVAL.ipynb +++ /dev/null @@ -1,2675 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 1, - "id": "4b985e29", - "metadata": {}, - "outputs": [], - "source": [ - "import cell2mol\n", - "import os" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "b06260dd", - "metadata": {}, - "outputs": [], - "source": [ - "infopath = \"INOVAL/INOVAL.info\"" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "bc3b2bd0", - "metadata": {}, - "outputs": [], - "source": [ - "from cell2mol.read_write import readinfo\n", - "from cell2mol.classes import cell\n", - "from cell2mol.cell_reconstruction import classify_fragments, fragments_reconstruct\n", - "from cell2mol.charge_assignment import *" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "23e75d0d", - "metadata": {}, - "outputs": [], - "source": [ - "name = \"INOVAL\"" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "id": "48e219ea", - "metadata": {}, - "outputs": [], - "source": [ - "debug=0" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "id": "09c5cef3", - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "INITIATING cell object from input\n", - "MOLECULE.SPLIT COMPLEX: labels=['Fe', 'Cl', 'Cl', 'Cl', 'O', 'H', 'H']\n", - "MOLECULE.SPLIT COMPLEX: metal_idx=[0]\n", - "MOLECULE.SPLIT COMPLEX: rest_idx=[1, 2, 3, 4, 5, 6]\n", - "SPLIT COMPLEX: rest labels: ['Cl', 'Cl', 'Cl', 'O', 'H', 'H']\n", - "SPLIT COMPLEX: rest coord: [[4.8139984268383635, 1.1805652875553925, 3.333073124178108], [7.250636970581888, 1.62258466795451, 0.45999712960445105], [4.856882530390316, 4.427793920077216, 1.030069539186763], [3.7025349960199416, 1.3810959182656035, 0.13850742300244523], [3.879901531654197, 0.5498751049594834, -0.0380260058105337], [2.9430798919008274, 1.49644435785722, 0.4002737453740389]]\n", - "SPLIT COMPLEX: rest indices: [1, 2, 3, 4, 5, 6]\n", - "SPLIT COMPLEX: rest radii: [1.02, 1.02, 1.02, 0.66, 0.31, 0.31]\n", - "SPLIT COMPLEX: splitting species with 6 atoms in block\n", - "labels=['Cl', 'Cl', 'Cl', 'O', 'H', 'H'] 6\n", - "indices=None\n", - "SPLIT COMPLEX: received 4 blocks\n", - "PREPARING BLOCK: [3, 4, 5]\n", - "CREATING LIGAND: H2-O\n", - "PREPARING BLOCK: [2]\n", - "CREATING LIGAND: Cl\n", - "PREPARING BLOCK: [1]\n", - "CREATING LIGAND: Cl\n", - "PREPARING BLOCK: [0]\n", - "CREATING LIGAND: Cl\n", - "MOLECULE.SPLIT COMPLEX: labels=['Fe', 'Cl', 'Cl', 'Cl', 'Fe', 'Cl', 'Cl', 'Cl']\n", - "MOLECULE.SPLIT COMPLEX: metal_idx=[0, 4]\n", - "MOLECULE.SPLIT COMPLEX: rest_idx=[1, 2, 3, 5, 6, 7]\n", - "SPLIT COMPLEX: rest labels: ['Cl', 'Cl', 'Cl', 'Cl', 'Cl', 'Cl']\n", - "SPLIT COMPLEX: rest coord: [[8.504324990048296, 4.944140596019123, 8.606997397056764], [10.081480136587599, 8.26170617879963, 9.518573200509785], [7.4116689220057035, 8.488626087721022, 6.989700859200231], [12.353490866017927, 10.238961567754465, 7.276881387627319], [10.776335719478624, 6.921395984973959, 6.365305584174299], [13.446146934060517, 6.694476076052566, 8.894177925483852]]\n", - "SPLIT COMPLEX: rest indices: [1, 2, 3, 5, 6, 7]\n", - "SPLIT COMPLEX: rest radii: [1.02, 1.02, 1.02, 1.02, 1.02, 1.02]\n", - "SPLIT COMPLEX: splitting species with 6 atoms in block\n", - "labels=['Cl', 'Cl', 'Cl', 'Cl', 'Cl', 'Cl'] 6\n", - "indices=None\n", - "SPLIT COMPLEX: received 6 blocks\n", - "PREPARING BLOCK: [5]\n", - "CREATING LIGAND: Cl\n", - "PREPARING BLOCK: [4]\n", - "CREATING LIGAND: Cl\n", - "PREPARING BLOCK: [3]\n", - "CREATING LIGAND: Cl\n", - "PREPARING BLOCK: [2]\n", - "CREATING LIGAND: Cl\n", - "PREPARING BLOCK: [1]\n", - "CREATING LIGAND: Cl\n", - "PREPARING BLOCK: [0]\n", - "CREATING LIGAND: Cl\n", - "MOLECULE.SPLIT COMPLEX: labels=['Fe', 'Cl', 'Cl', 'Cl', 'O', 'H', 'H']\n", - "MOLECULE.SPLIT COMPLEX: metal_idx=[0]\n", - "MOLECULE.SPLIT COMPLEX: rest_idx=[1, 2, 3, 4, 5, 6]\n", - "SPLIT COMPLEX: rest labels: ['Cl', 'Cl', 'Cl', 'O', 'H', 'H']\n", - "SPLIT COMPLEX: rest coord: [[16.043817429227857, 14.002536876218196, 12.550805660505976], [13.607178885484336, 13.560517495819077, 15.423881655079633], [16.00093332567591, 10.755308243696375, 14.853809245497322], [17.155280860046282, 13.802006245507986, 15.74537136168164], [16.977914324412026, 14.633227058814105, 15.921904790494619], [17.914735964165395, 13.686657805916369, 15.483605039310046]]\n", - "SPLIT COMPLEX: rest indices: [1, 2, 3, 4, 5, 6]\n", - "SPLIT COMPLEX: rest radii: [1.02, 1.02, 1.02, 0.66, 0.31, 0.31]\n", - "SPLIT COMPLEX: splitting species with 6 atoms in block\n", - "labels=['Cl', 'Cl', 'Cl', 'O', 'H', 'H'] 6\n", - "indices=None\n", - "SPLIT COMPLEX: received 4 blocks\n", - "PREPARING BLOCK: [3, 4, 5]\n", - "CREATING LIGAND: H2-O\n", - "PREPARING BLOCK: [2]\n", - "CREATING LIGAND: Cl\n", - "PREPARING BLOCK: [1]\n", - "CREATING LIGAND: Cl\n", - "PREPARING BLOCK: [0]\n", - "CREATING LIGAND: Cl\n", - "LIGAND.SPLIT_LIGAND: self.indices=[0, 1, 2]\n", - "LIGAND.SPLIT_LIGAND: conn_idx=[0]\n", - "LIGAND.SPLIT_LIGAND: conn_labels=['O']\n", - "LIGAND.SPLIT_LIGAND: conn_coord=[[3.7025349960199416, 1.3810959182656035, 0.13850742300244523]]\n", - "LIGAND.SPLIT_LIGAND: conn_radii=[0.66]\n", - "blocklist=[[0]]\n", - "LIGAND.SPLIT_LIGAND: block=[0]\n", - "LIGAND.SPLIT_LIGAND: self.indices=[0]\n", - "LIGAND.SPLIT_LIGAND: conn_idx=[0]\n", - "LIGAND.SPLIT_LIGAND: conn_labels=['Cl']\n", - "LIGAND.SPLIT_LIGAND: conn_coord=[[4.856882530390316, 4.427793920077216, 1.030069539186763]]\n", - "LIGAND.SPLIT_LIGAND: conn_radii=[1.02]\n", - "blocklist=[[0]]\n", - "LIGAND.SPLIT_LIGAND: block=[0]\n", - "LIGAND.SPLIT_LIGAND: self.indices=[0]\n", - "LIGAND.SPLIT_LIGAND: conn_idx=[0]\n", - "LIGAND.SPLIT_LIGAND: conn_labels=['Cl']\n", - "LIGAND.SPLIT_LIGAND: conn_coord=[[7.250636970581888, 1.62258466795451, 0.45999712960445105]]\n", - "LIGAND.SPLIT_LIGAND: conn_radii=[1.02]\n", - "blocklist=[[0]]\n", - "LIGAND.SPLIT_LIGAND: block=[0]\n", - "LIGAND.SPLIT_LIGAND: self.indices=[0]\n", - "LIGAND.SPLIT_LIGAND: conn_idx=[0]\n", - "LIGAND.SPLIT_LIGAND: conn_labels=['Cl']\n", - "LIGAND.SPLIT_LIGAND: conn_coord=[[4.8139984268383635, 1.1805652875553925, 3.333073124178108]]\n", - "LIGAND.SPLIT_LIGAND: conn_radii=[1.02]\n", - "blocklist=[[0]]\n", - "LIGAND.SPLIT_LIGAND: block=[0]\n", - "LIGAND.Get_denticity: checking connectivity of ligand H2-O\n", - "LIGAND.Get_denticity: initial connectivity is 1\n", - "Entering COORD_CORR_NONHAPTIC:\n", - "\tmconnec=1 in atom idx=0, label=O\n", - "\tevaluating coordination with metal \n", - "------------- Cell2mol METAL Object --------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Sub-Type = metal\n", - " Label = Fe\n", - " Atomic Number = 26\n", - " Index in Molecule = 0\n", - " Metal Adjacency (mconnec) = 4\n", - " Regular Adjacencies (connec) = 4\n", - "----------------------------------------------------\n", - "\n", - "ADD_ATOM: Metalist length 1\n", - "ADD_ATOM: Ligand Atoms 3\n", - "ADD_ATOM: site= 0\n", - "ADD_ATOM: evaluating apos=array([3.702535 , 1.38109592, 0.13850742]) and tgt.coord=[5.179548367891298, 2.1869193111402834, 1.323444780339878]\n", - "ADD_ATOM: received tmpconnec[posadded]=1\n", - "ADD_ATOM: Chosen Metal index None. H is added at site 0\n", - "\tconnectivity verified for atom 0 with label O\n", - "LIGAND.Get_denticity: final connectivity is 1\n", - "LIGAND.Get_denticity: checking connectivity of ligand Cl\n", - "LIGAND.Get_denticity: initial connectivity is 1\n", - "Entering COORD_CORR_NONHAPTIC:\n", - "\tmconnec=1 in atom idx=0, label=Cl\n", - "\tevaluating coordination with metal \n", - "------------- Cell2mol METAL Object --------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Sub-Type = metal\n", - " Label = Fe\n", - " Atomic Number = 26\n", - " Index in Molecule = 0\n", - " Metal Adjacency (mconnec) = 4\n", - " Regular Adjacencies (connec) = 4\n", - "----------------------------------------------------\n", - "\n", - "ADD_ATOM: Metalist length 1\n", - "ADD_ATOM: Ligand Atoms 1\n", - "ADD_ATOM: site= 0\n", - "ADD_ATOM: evaluating apos=array([4.85688253, 4.42779392, 1.03006954]) and tgt.coord=[5.179548367891298, 2.1869193111402834, 1.323444780339878]\n", - "ADD_ATOM: received tmpconnec[posadded]=1\n", - "ADD_ATOM: Chosen Metal index None. H is added at site 0\n", - "\tconnectivity verified for atom 0 with label Cl\n", - "LIGAND.Get_denticity: final connectivity is 1\n", - "LIGAND.Get_denticity: checking connectivity of ligand Cl\n", - "LIGAND.Get_denticity: initial connectivity is 1\n", - "Entering COORD_CORR_NONHAPTIC:\n", - "\tmconnec=1 in atom idx=0, label=Cl\n", - "\tevaluating coordination with metal \n", - "------------- Cell2mol METAL Object --------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Sub-Type = metal\n", - " Label = Fe\n", - " Atomic Number = 26\n", - " Index in Molecule = 0\n", - " Metal Adjacency (mconnec) = 4\n", - " Regular Adjacencies (connec) = 4\n", - "----------------------------------------------------\n", - "\n", - "ADD_ATOM: Metalist length 1\n", - "ADD_ATOM: Ligand Atoms 1\n", - "ADD_ATOM: site= 0\n", - "ADD_ATOM: evaluating apos=array([7.25063697, 1.62258467, 0.45999713]) and tgt.coord=[5.179548367891298, 2.1869193111402834, 1.323444780339878]\n", - "ADD_ATOM: received tmpconnec[posadded]=1\n", - "ADD_ATOM: Chosen Metal index None. H is added at site 0\n", - "\tconnectivity verified for atom 0 with label Cl\n", - "LIGAND.Get_denticity: final connectivity is 1\n", - "LIGAND.Get_denticity: checking connectivity of ligand Cl\n", - "LIGAND.Get_denticity: initial connectivity is 1\n", - "Entering COORD_CORR_NONHAPTIC:\n", - "\tmconnec=1 in atom idx=0, label=Cl\n", - "\tevaluating coordination with metal \n", - "------------- Cell2mol METAL Object --------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Sub-Type = metal\n", - " Label = Fe\n", - " Atomic Number = 26\n", - " Index in Molecule = 0\n", - " Metal Adjacency (mconnec) = 4\n", - " Regular Adjacencies (connec) = 4\n", - "----------------------------------------------------\n", - "\n", - "ADD_ATOM: Metalist length 1\n", - "ADD_ATOM: Ligand Atoms 1\n", - "ADD_ATOM: site= 0\n", - "ADD_ATOM: evaluating apos=array([4.81399843, 1.18056529, 3.33307312]) and tgt.coord=[5.179548367891298, 2.1869193111402834, 1.323444780339878]\n", - "ADD_ATOM: received tmpconnec[posadded]=1\n", - "ADD_ATOM: Chosen Metal index None. H is added at site 0\n", - "\tconnectivity verified for atom 0 with label Cl\n", - "LIGAND.Get_denticity: final connectivity is 1\n", - "LIGAND.SPLIT_LIGAND: self.indices=[0]\n", - "LIGAND.SPLIT_LIGAND: conn_idx=[0]\n", - "LIGAND.SPLIT_LIGAND: conn_labels=['Cl']\n", - "LIGAND.SPLIT_LIGAND: conn_coord=[[13.446146934060517, 6.694476076052566, 8.894177925483852]]\n", - "LIGAND.SPLIT_LIGAND: conn_radii=[1.02]\n", - "blocklist=[[0]]\n", - "LIGAND.SPLIT_LIGAND: block=[0]\n", - "LIGAND.SPLIT_LIGAND: self.indices=[0]\n", - "LIGAND.SPLIT_LIGAND: conn_idx=[0]\n", - "LIGAND.SPLIT_LIGAND: conn_labels=['Cl']\n", - "LIGAND.SPLIT_LIGAND: conn_coord=[[10.776335719478624, 6.921395984973959, 6.365305584174299]]\n", - "LIGAND.SPLIT_LIGAND: conn_radii=[1.02]\n", - "blocklist=[[0]]\n", - "LIGAND.SPLIT_LIGAND: block=[0]\n", - "LIGAND.SPLIT_LIGAND: self.indices=[0]\n", - "LIGAND.SPLIT_LIGAND: conn_idx=[0]\n", - "LIGAND.SPLIT_LIGAND: conn_labels=['Cl']\n", - "LIGAND.SPLIT_LIGAND: conn_coord=[[12.353490866017927, 10.238961567754465, 7.276881387627319]]\n", - "LIGAND.SPLIT_LIGAND: conn_radii=[1.02]\n", - "blocklist=[[0]]\n", - "LIGAND.SPLIT_LIGAND: block=[0]\n", - "LIGAND.SPLIT_LIGAND: self.indices=[0]\n", - "LIGAND.SPLIT_LIGAND: conn_idx=[0]\n", - "LIGAND.SPLIT_LIGAND: conn_labels=['Cl']\n", - "LIGAND.SPLIT_LIGAND: conn_coord=[[7.4116689220057035, 8.488626087721022, 6.989700859200231]]\n", - "LIGAND.SPLIT_LIGAND: conn_radii=[1.02]\n", - "blocklist=[[0]]\n", - "LIGAND.SPLIT_LIGAND: block=[0]\n", - "LIGAND.SPLIT_LIGAND: self.indices=[0]\n", - "LIGAND.SPLIT_LIGAND: conn_idx=[0]\n", - "LIGAND.SPLIT_LIGAND: conn_labels=['Cl']\n", - "LIGAND.SPLIT_LIGAND: conn_coord=[[10.081480136587599, 8.26170617879963, 9.518573200509785]]\n", - "LIGAND.SPLIT_LIGAND: conn_radii=[1.02]\n", - "blocklist=[[0]]\n", - "LIGAND.SPLIT_LIGAND: block=[0]\n", - "LIGAND.SPLIT_LIGAND: self.indices=[0]\n", - "LIGAND.SPLIT_LIGAND: conn_idx=[0]\n", - "LIGAND.SPLIT_LIGAND: conn_labels=['Cl']\n", - "LIGAND.SPLIT_LIGAND: conn_coord=[[8.504324990048296, 4.944140596019123, 8.606997397056764]]\n", - "LIGAND.SPLIT_LIGAND: conn_radii=[1.02]\n", - "blocklist=[[0]]\n", - "LIGAND.SPLIT_LIGAND: block=[0]\n", - "LIGAND.Get_denticity: checking connectivity of ligand Cl\n", - "LIGAND.Get_denticity: initial connectivity is 1\n", - "Entering COORD_CORR_NONHAPTIC:\n", - "\tmconnec=1 in atom idx=0, label=Cl\n", - "\tevaluating coordination with metal \n", - "------------- Cell2mol METAL Object --------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Sub-Type = metal\n", - " Label = Fe\n", - " Atomic Number = 26\n", - " Index in Molecule = 4\n", - " Metal Adjacency (mconnec) = 5\n", - " Regular Adjacencies (connec) = 5\n", - "----------------------------------------------------\n", - "\n", - "ADD_ATOM: Metalist length 1\n", - "ADD_ATOM: Ligand Atoms 1\n", - "ADD_ATOM: site= 0\n", - "ADD_ATOM: evaluating apos=array([13.44614693, 6.69447608, 8.89417793]) and tgt.coord=[11.94629110107465, 8.15853793603594, 8.032954017778282]\n", - "ADD_ATOM: received tmpconnec[posadded]=1\n", - "ADD_ATOM: Chosen Metal index None. H is added at site 0\n", - "\tconnectivity verified for atom 0 with label Cl\n", - "LIGAND.Get_denticity: final connectivity is 1\n", - "LIGAND.Get_denticity: checking connectivity of ligand Cl\n", - "LIGAND.Get_denticity: initial connectivity is 1\n", - "Entering COORD_CORR_NONHAPTIC:\n", - "\tmconnec=2 in atom idx=0, label=Cl\n", - "\tevaluating coordination with metal \n", - "------------- Cell2mol METAL Object --------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Sub-Type = metal\n", - " Label = Fe\n", - " Atomic Number = 26\n", - " Index in Molecule = 0\n", - " Metal Adjacency (mconnec) = 5\n", - " Regular Adjacencies (connec) = 5\n", - "----------------------------------------------------\n", - "\n", - "ADD_ATOM: Metalist length 1\n", - "ADD_ATOM: Ligand Atoms 1\n", - "ADD_ATOM: site= 0\n", - "ADD_ATOM: evaluating apos=array([10.77633572, 6.92139598, 6.36530558]) and tgt.coord=[11.94629110107465, 8.15853793603594, 8.032954017778282]\n", - "ADD_ATOM: received tmpconnec[posadded]=1\n", - "ADD_ATOM: Chosen Metal index None. H is added at site 0\n", - "\tconnectivity verified for atom 0 with label Cl\n", - "\tevaluating coordination with metal \n", - "------------- Cell2mol METAL Object --------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Sub-Type = metal\n", - " Label = Fe\n", - " Atomic Number = 26\n", - " Index in Molecule = 4\n", - " Metal Adjacency (mconnec) = 5\n", - " Regular Adjacencies (connec) = 5\n", - "----------------------------------------------------\n", - "\n", - "ADD_ATOM: Metalist length 1\n", - "ADD_ATOM: Ligand Atoms 1\n", - "ADD_ATOM: site= 0\n", - "ADD_ATOM: evaluating apos=array([10.77633572, 6.92139598, 6.36530558]) and tgt.coord=[11.94629110107465, 8.15853793603594, 8.032954017778282]\n", - "ADD_ATOM: received tmpconnec[posadded]=1\n", - "ADD_ATOM: Chosen Metal index None. H is added at site 0\n", - "\tconnectivity verified for atom 0 with label Cl\n", - "LIGAND.Get_denticity: final connectivity is 2\n", - "LIGAND.Get_denticity: checking connectivity of ligand Cl\n", - "LIGAND.Get_denticity: initial connectivity is 1\n", - "Entering COORD_CORR_NONHAPTIC:\n", - "\tmconnec=1 in atom idx=0, label=Cl\n", - "\tevaluating coordination with metal \n", - "------------- Cell2mol METAL Object --------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Sub-Type = metal\n", - " Label = Fe\n", - " Atomic Number = 26\n", - " Index in Molecule = 4\n", - " Metal Adjacency (mconnec) = 5\n", - " Regular Adjacencies (connec) = 5\n", - "----------------------------------------------------\n", - "\n", - "ADD_ATOM: Metalist length 1\n", - "ADD_ATOM: Ligand Atoms 1\n", - "ADD_ATOM: site= 0\n", - "ADD_ATOM: evaluating apos=array([12.35349087, 10.23896157, 7.27688139]) and tgt.coord=[11.94629110107465, 8.15853793603594, 8.032954017778282]\n", - "ADD_ATOM: received tmpconnec[posadded]=1\n", - "ADD_ATOM: Chosen Metal index None. H is added at site 0\n", - "\tconnectivity verified for atom 0 with label Cl\n", - "LIGAND.Get_denticity: final connectivity is 1\n", - "LIGAND.Get_denticity: checking connectivity of ligand Cl\n", - "LIGAND.Get_denticity: initial connectivity is 1\n", - "Entering COORD_CORR_NONHAPTIC:\n", - "\tmconnec=1 in atom idx=0, label=Cl\n", - "\tevaluating coordination with metal \n", - "------------- Cell2mol METAL Object --------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Sub-Type = metal\n", - " Label = Fe\n", - " Atomic Number = 26\n", - " Index in Molecule = 0\n", - " Metal Adjacency (mconnec) = 5\n", - " Regular Adjacencies (connec) = 5\n", - "----------------------------------------------------\n", - "\n", - "ADD_ATOM: Metalist length 1\n", - "ADD_ATOM: Ligand Atoms 1\n", - "ADD_ATOM: site= 0\n", - "ADD_ATOM: evaluating apos=array([7.41166892, 8.48862609, 6.98970086]) and tgt.coord=[8.911524754991575, 7.024564227737649, 7.850924766905802]\n", - "ADD_ATOM: received tmpconnec[posadded]=1\n", - "ADD_ATOM: Chosen Metal index None. H is added at site 0\n", - "\tconnectivity verified for atom 0 with label Cl\n", - "LIGAND.Get_denticity: final connectivity is 1\n", - "LIGAND.Get_denticity: checking connectivity of ligand Cl\n", - "LIGAND.Get_denticity: initial connectivity is 1\n", - "Entering COORD_CORR_NONHAPTIC:\n", - "\tmconnec=2 in atom idx=0, label=Cl\n", - "\tevaluating coordination with metal \n", - "------------- Cell2mol METAL Object --------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Sub-Type = metal\n", - " Label = Fe\n", - " Atomic Number = 26\n", - " Index in Molecule = 0\n", - " Metal Adjacency (mconnec) = 5\n", - " Regular Adjacencies (connec) = 5\n", - "----------------------------------------------------\n", - "\n", - "ADD_ATOM: Metalist length 1\n", - "ADD_ATOM: Ligand Atoms 1\n", - "ADD_ATOM: site= 0\n", - "ADD_ATOM: evaluating apos=array([10.08148014, 8.26170618, 9.5185732 ]) and tgt.coord=[8.911524754991575, 7.024564227737649, 7.850924766905802]\n", - "ADD_ATOM: received tmpconnec[posadded]=1\n", - "ADD_ATOM: Chosen Metal index None. H is added at site 0\n", - "\tconnectivity verified for atom 0 with label Cl\n", - "\tevaluating coordination with metal \n", - "------------- Cell2mol METAL Object --------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Sub-Type = metal\n", - " Label = Fe\n", - " Atomic Number = 26\n", - " Index in Molecule = 4\n", - " Metal Adjacency (mconnec) = 5\n", - " Regular Adjacencies (connec) = 5\n", - "----------------------------------------------------\n", - "\n", - "ADD_ATOM: Metalist length 1\n", - "ADD_ATOM: Ligand Atoms 1\n", - "ADD_ATOM: site= 0\n", - "ADD_ATOM: evaluating apos=array([10.08148014, 8.26170618, 9.5185732 ]) and tgt.coord=[8.911524754991575, 7.024564227737649, 7.850924766905802]\n", - "ADD_ATOM: received tmpconnec[posadded]=1\n", - "ADD_ATOM: Chosen Metal index None. H is added at site 0\n", - "\tconnectivity verified for atom 0 with label Cl\n", - "LIGAND.Get_denticity: final connectivity is 2\n", - "LIGAND.Get_denticity: checking connectivity of ligand Cl\n", - "LIGAND.Get_denticity: initial connectivity is 1\n", - "Entering COORD_CORR_NONHAPTIC:\n", - "\tmconnec=1 in atom idx=0, label=Cl\n", - "\tevaluating coordination with metal \n", - "------------- Cell2mol METAL Object --------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Sub-Type = metal\n", - " Label = Fe\n", - " Atomic Number = 26\n", - " Index in Molecule = 0\n", - " Metal Adjacency (mconnec) = 5\n", - " Regular Adjacencies (connec) = 5\n", - "----------------------------------------------------\n", - "\n", - "ADD_ATOM: Metalist length 1\n", - "ADD_ATOM: Ligand Atoms 1\n", - "ADD_ATOM: site= 0\n", - "ADD_ATOM: evaluating apos=array([8.50432499, 4.9441406 , 8.6069974 ]) and tgt.coord=[8.911524754991575, 7.024564227737649, 7.850924766905802]\n", - "ADD_ATOM: received tmpconnec[posadded]=1\n", - "ADD_ATOM: Chosen Metal index None. H is added at site 0\n", - "\tconnectivity verified for atom 0 with label Cl\n", - "LIGAND.Get_denticity: final connectivity is 1\n", - "LIGAND.SPLIT_LIGAND: self.indices=[0, 1, 2]\n", - "LIGAND.SPLIT_LIGAND: conn_idx=[0]\n", - "LIGAND.SPLIT_LIGAND: conn_labels=['O']\n", - "LIGAND.SPLIT_LIGAND: conn_coord=[[17.155280860046282, 13.802006245507986, 15.74537136168164]]\n", - "LIGAND.SPLIT_LIGAND: conn_radii=[0.66]\n", - "blocklist=[[0]]\n", - "LIGAND.SPLIT_LIGAND: block=[0]\n", - "LIGAND.SPLIT_LIGAND: self.indices=[0]\n", - "LIGAND.SPLIT_LIGAND: conn_idx=[0]\n", - "LIGAND.SPLIT_LIGAND: conn_labels=['Cl']\n", - "LIGAND.SPLIT_LIGAND: conn_coord=[[16.00093332567591, 10.755308243696375, 14.853809245497322]]\n", - "LIGAND.SPLIT_LIGAND: conn_radii=[1.02]\n", - "blocklist=[[0]]\n", - "LIGAND.SPLIT_LIGAND: block=[0]\n", - "LIGAND.SPLIT_LIGAND: self.indices=[0]\n", - "LIGAND.SPLIT_LIGAND: conn_idx=[0]\n", - "LIGAND.SPLIT_LIGAND: conn_labels=['Cl']\n", - "LIGAND.SPLIT_LIGAND: conn_coord=[[13.607178885484336, 13.560517495819077, 15.423881655079633]]\n", - "LIGAND.SPLIT_LIGAND: conn_radii=[1.02]\n", - "blocklist=[[0]]\n", - "LIGAND.SPLIT_LIGAND: block=[0]\n", - "LIGAND.SPLIT_LIGAND: self.indices=[0]\n", - "LIGAND.SPLIT_LIGAND: conn_idx=[0]\n", - "LIGAND.SPLIT_LIGAND: conn_labels=['Cl']\n", - "LIGAND.SPLIT_LIGAND: conn_coord=[[16.043817429227857, 14.002536876218196, 12.550805660505976]]\n", - "LIGAND.SPLIT_LIGAND: conn_radii=[1.02]\n", - "blocklist=[[0]]\n", - "LIGAND.SPLIT_LIGAND: block=[0]\n", - "LIGAND.Get_denticity: checking connectivity of ligand H2-O\n", - "LIGAND.Get_denticity: initial connectivity is 1\n", - "Entering COORD_CORR_NONHAPTIC:\n", - "\tmconnec=1 in atom idx=0, label=O\n", - "\tevaluating coordination with metal \n", - "------------- Cell2mol METAL Object --------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Sub-Type = metal\n", - " Label = Fe\n", - " Atomic Number = 26\n", - " Index in Molecule = 0\n", - " Metal Adjacency (mconnec) = 4\n", - " Regular Adjacencies (connec) = 4\n", - "----------------------------------------------------\n", - "\n", - "ADD_ATOM: Metalist length 1\n", - "ADD_ATOM: Ligand Atoms 3\n", - "ADD_ATOM: site= 0\n", - "ADD_ATOM: evaluating apos=array([17.15528086, 13.80200625, 15.74537136]) and tgt.coord=[15.678267488174928, 12.996182852633305, 14.560434004344208]\n", - "ADD_ATOM: received tmpconnec[posadded]=1\n", - "ADD_ATOM: Chosen Metal index None. H is added at site 0\n", - "\tconnectivity verified for atom 0 with label O\n", - "LIGAND.Get_denticity: final connectivity is 1\n", - "LIGAND.Get_denticity: checking connectivity of ligand Cl\n", - "LIGAND.Get_denticity: initial connectivity is 1\n", - "Entering COORD_CORR_NONHAPTIC:\n", - "\tmconnec=1 in atom idx=0, label=Cl\n", - "\tevaluating coordination with metal \n", - "------------- Cell2mol METAL Object --------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Sub-Type = metal\n", - " Label = Fe\n", - " Atomic Number = 26\n", - " Index in Molecule = 0\n", - " Metal Adjacency (mconnec) = 4\n", - " Regular Adjacencies (connec) = 4\n", - "----------------------------------------------------\n", - "\n", - "ADD_ATOM: Metalist length 1\n", - "ADD_ATOM: Ligand Atoms 1\n", - "ADD_ATOM: site= 0\n", - "ADD_ATOM: evaluating apos=array([16.00093333, 10.75530824, 14.85380925]) and tgt.coord=[15.678267488174928, 12.996182852633305, 14.560434004344208]\n", - "ADD_ATOM: received tmpconnec[posadded]=1\n", - "ADD_ATOM: Chosen Metal index None. H is added at site 0\n", - "\tconnectivity verified for atom 0 with label Cl\n", - "LIGAND.Get_denticity: final connectivity is 1\n", - "LIGAND.Get_denticity: checking connectivity of ligand Cl\n", - "LIGAND.Get_denticity: initial connectivity is 1\n", - "Entering COORD_CORR_NONHAPTIC:\n", - "\tmconnec=1 in atom idx=0, label=Cl\n", - "\tevaluating coordination with metal \n", - "------------- Cell2mol METAL Object --------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Sub-Type = metal\n", - " Label = Fe\n", - " Atomic Number = 26\n", - " Index in Molecule = 0\n", - " Metal Adjacency (mconnec) = 4\n", - " Regular Adjacencies (connec) = 4\n", - "----------------------------------------------------\n", - "\n", - "ADD_ATOM: Metalist length 1\n", - "ADD_ATOM: Ligand Atoms 1\n", - "ADD_ATOM: site= 0\n", - "ADD_ATOM: evaluating apos=array([13.60717889, 13.5605175 , 15.42388166]) and tgt.coord=[15.678267488174928, 12.996182852633305, 14.560434004344208]\n", - "ADD_ATOM: received tmpconnec[posadded]=1\n", - "ADD_ATOM: Chosen Metal index None. H is added at site 0\n", - "\tconnectivity verified for atom 0 with label Cl\n", - "LIGAND.Get_denticity: final connectivity is 1\n", - "LIGAND.Get_denticity: checking connectivity of ligand Cl\n", - "LIGAND.Get_denticity: initial connectivity is 1\n", - "Entering COORD_CORR_NONHAPTIC:\n", - "\tmconnec=1 in atom idx=0, label=Cl\n", - "\tevaluating coordination with metal \n", - "------------- Cell2mol METAL Object --------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Sub-Type = metal\n", - " Label = Fe\n", - " Atomic Number = 26\n", - " Index in Molecule = 0\n", - " Metal Adjacency (mconnec) = 4\n", - " Regular Adjacencies (connec) = 4\n", - "----------------------------------------------------\n", - "\n", - "ADD_ATOM: Metalist length 1\n", - "ADD_ATOM: Ligand Atoms 1\n", - "ADD_ATOM: site= 0\n", - "ADD_ATOM: evaluating apos=array([16.04381743, 14.00253688, 12.55080566]) and tgt.coord=[15.678267488174928, 12.996182852633305, 14.560434004344208]\n", - "ADD_ATOM: received tmpconnec[posadded]=1\n", - "ADD_ATOM: Chosen Metal index None. H is added at site 0\n", - "\tconnectivity verified for atom 0 with label Cl\n", - "LIGAND.Get_denticity: final connectivity is 1\n" - ] - } - ], - "source": [ - "print(f\"INITIATING cell object from input\") \n", - "\n", - "# Reads reference molecules from info file, as well as labels and coordinates\n", - "labels, pos, ref_labels, ref_fracs, cellvec, cellparam = readinfo(infopath)\n", - "\n", - "# Initiates cell\n", - "newcell = cell(name, labels, pos, cellvec, cellparam)\n", - "# # Loads the reference molecules and checks_missing_H\n", - "newcell.get_reference_molecules(ref_labels, ref_fracs, debug=debug) \n", - "newcell.assess_errors()" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "id": "694fbb29", - "metadata": {}, - "outputs": [], - "source": [ - "from cell2mol.missingH import get_missingH_from_adjacency\n", - "Missing_H_in_C = False\n", - "Missing_H_in_CoordWater = False\n", - "ismissingH = False\n", - "Warning = False\n", - "\n", - "# List of Metal Atoms for which O atoms might appear connected directly.\n", - "Exceptions_for_CoordWater = [\"Re\", \"V\", \"Mo\", \"W\"]\n", - "\n", - "if debug >= 2: print(\"\")\n", - "if debug >= 2: print(\"##################\")\n", - "if debug >= 2: print(\"Checking Missing H\")\n", - "if debug >= 2: print(\"##################\")\n", - "for idx, ref in enumerate(newcell.refmoleclist):\n", - " if not ref.iscomplex:\n", - " if ref.natoms == 1 and \"O\" in ref.labels: \n", - " Missing_H_in_CoordWater = True\n", - " if debug >= 2: print(f\"WARNING found isolated O atom in the cell. This tends to be a water with missing H, so stopping\")\n", - " else:\n", - " for kdx, a in enumerate(ref.atoms):\n", - " if not hasattr(a,\"adjacency\"): continue \n", - " if a.label == \"C\":\n", - " bonded_atom_coord = []\n", - " for adj in a.adjacency:\n", - " bonded_atom_coord.append(ref.coord[adj])\n", - " ismissingH, report = get_missingH_from_adjacency(a.atnum, a.coord, bonded_atom_coord)\n", - " if ismissingH:\n", - " if debug >= 2: print(\"\")\n", - " if debug >= 2: print(f\"WARNING in Missing H function for: {ref.type}, {idx}, {ref.labels}\")\n", - " if debug >= 2: print(f\"C Atom {kdx} has missing H atoms\")\n", - " if debug >= 2: print(report)\n", - " Missing_H_in_C = True\n", - " else:\n", - " for jdx, lig in enumerate(ref.ligands):\n", - " if lig.natoms == 1 and \"O\" in lig.labels and lig.denticity <= 1:\n", - " if any(m.label in Exceptions_for_CoordWater for m in lig.metalatoms): pass\n", - " else:\n", - " Missing_H_in_CoordWater = True\n", - " if debug >= 2: print(\"\")\n", - " if debug >= 2: print(\"WARNING in Missing H function for ligand\",lig.natoms,lig.labels)\n", - " else:\n", - " for kdx, a in enumerate(lig.atoms):\n", - " if a.label == \"C\" and a.mconnec == 0:\n", - " bonded_atom_coord = []\n", - " print(a.label, a.adjacency, len(lig.coord))\n", - " for adj in a.adjacency:\n", - " bonded_atom_coord.append(lig.coord[adj])\n", - " ismissingH, report = get_missingH_from_adjacency(a.atnum, a.coord, bonded_atom_coord)\n", - " if ismissingH:\n", - " if debug >= 2: print(\"\")\n", - " if debug >= 2: print(f\"WARNING in Missing H function for: {ref.type}, {idx}, {jdx}, {lig.labels}\")\n", - " if debug >= 2: print(f\"Atom {kdx} has missing H atoms\")\n", - " if debug >= 2: print(report)\n", - " Missing_H_in_C = True" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "id": "8e7b1211", - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "data": { - "text/plain": [ - "False" - ] - }, - "execution_count": 7, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "newcell.check_missing_H(debug=debug) " - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "id": "93fd5a67", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "##############################################\n", - "FRAG_RECONSTRUCT. 22 molecules submitted to SEQUENTIAL with Heavy\n", - "##############################################\n", - "FRAG_RECONSTRUCT. 0 molecules and 8 fragments out of SEQUENTIAL with Heavy\n", - "FRAG_RECONSTRUCT. 24 molecules submitted to sequential with All\n", - "FINISHED succesfully\n", - "FRAG_RECONSTRUCT. No remaining Molecules after Hydrogen reconstruction\n", - "MOLECULE.SPLIT COMPLEX: labels=['Fe', 'Fe', 'Cl', 'Cl', 'Cl', 'Cl', 'Cl', 'Cl']\n", - "MOLECULE.SPLIT COMPLEX: metal_idx=[0, 1]\n", - "MOLECULE.SPLIT COMPLEX: rest_idx=[2, 3, 4, 5, 6, 7]\n", - "SPLIT COMPLEX: rest labels: ['Cl', 'Cl', 'Cl', 'Cl', 'Cl', 'Cl']\n", - "SPLIT COMPLEX: rest coord: [[8.504325, 4.9441406, 8.6069974], [12.3534909, 10.2389616, 7.2768814], [10.0814801, 8.2617062, 9.5185732], [10.7763357, 6.921396, 6.3653056], [7.4116689, 8.4886261, 6.9897009], [13.4461469, 6.6944761, 8.8941779]]\n", - "SPLIT COMPLEX: rest indices: [2, 3, 4, 5, 6, 7]\n", - "SPLIT COMPLEX: rest radii: [1.02, 1.02, 1.02, 1.02, 1.02, 1.02]\n", - "SPLIT COMPLEX: splitting species with 6 atoms in block\n", - "labels=['Cl', 'Cl', 'Cl', 'Cl', 'Cl', 'Cl'] 6\n", - "indices=None\n", - "SPLIT COMPLEX: received 6 blocks\n", - "PREPARING BLOCK: [5]\n", - "CREATING LIGAND: Cl\n", - "PREPARING BLOCK: [4]\n", - "CREATING LIGAND: Cl\n", - "PREPARING BLOCK: [3]\n", - "CREATING LIGAND: Cl\n", - "PREPARING BLOCK: [2]\n", - "CREATING LIGAND: Cl\n", - "PREPARING BLOCK: [1]\n", - "CREATING LIGAND: Cl\n", - "PREPARING BLOCK: [0]\n", - "CREATING LIGAND: Cl\n", - "MOLECULE.SPLIT COMPLEX: labels=['Fe', 'Cl', 'Cl', 'Cl', 'O', 'H', 'H']\n", - "MOLECULE.SPLIT COMPLEX: metal_idx=[0]\n", - "MOLECULE.SPLIT COMPLEX: rest_idx=[1, 2, 3, 4, 5, 6]\n", - "SPLIT COMPLEX: rest labels: ['Cl', 'Cl', 'Cl', 'O', 'H', 'H']\n", - "SPLIT COMPLEX: rest coord: [[4.8139984, 1.1805653, 3.3330731], [7.250637, 1.6225847, 0.4599971], [4.8568825, 4.4277939, 1.0300695], [3.702535, 1.3810959, 0.1385074], [2.9430799, 1.4964444, 0.4002737], [3.8799016, 0.5498752, -0.03802600000000034]]\n", - "SPLIT COMPLEX: rest indices: [1, 2, 3, 4, 5, 6]\n", - "SPLIT COMPLEX: rest radii: [1.02, 1.02, 1.02, 0.66, 0.31, 0.31]\n", - "SPLIT COMPLEX: splitting species with 6 atoms in block\n", - "labels=['Cl', 'Cl', 'Cl', 'O', 'H', 'H'] 6\n", - "indices=None\n", - "SPLIT COMPLEX: received 4 blocks\n", - "PREPARING BLOCK: [3, 4, 5]\n", - "CREATING LIGAND: H2-O\n", - "PREPARING BLOCK: [2]\n", - "CREATING LIGAND: Cl\n", - "PREPARING BLOCK: [1]\n", - "CREATING LIGAND: Cl\n", - "PREPARING BLOCK: [0]\n", - "CREATING LIGAND: Cl\n", - "MOLECULE.SPLIT COMPLEX: labels=['Fe', 'Cl', 'Cl', 'Cl', 'O', 'H', 'H']\n", - "MOLECULE.SPLIT COMPLEX: metal_idx=[0]\n", - "MOLECULE.SPLIT COMPLEX: rest_idx=[1, 2, 3, 4, 5, 6]\n", - "SPLIT COMPLEX: rest labels: ['Cl', 'Cl', 'Cl', 'O', 'H', 'H']\n", - "SPLIT COMPLEX: rest coord: [[16.0438174, 14.0025369, 12.5508057], [13.6071789, 13.5605175, 15.4238817], [16.0009333, 10.7553082, 14.8538092], [17.1552809, 13.8020062, 15.7453714], [17.914736, 13.6866578, 15.483605], [16.977914300000002, 14.633227, 15.9219048]]\n", - "SPLIT COMPLEX: rest indices: [1, 2, 3, 4, 5, 6]\n", - "SPLIT COMPLEX: rest radii: [1.02, 1.02, 1.02, 0.66, 0.31, 0.31]\n", - "SPLIT COMPLEX: splitting species with 6 atoms in block\n", - "labels=['Cl', 'Cl', 'Cl', 'O', 'H', 'H'] 6\n", - "indices=None\n", - "SPLIT COMPLEX: received 4 blocks\n", - "PREPARING BLOCK: [3, 4, 5]\n", - "CREATING LIGAND: H2-O\n", - "PREPARING BLOCK: [2]\n", - "CREATING LIGAND: Cl\n", - "PREPARING BLOCK: [1]\n", - "CREATING LIGAND: Cl\n", - "PREPARING BLOCK: [0]\n", - "CREATING LIGAND: Cl\n" - ] - }, - { - "data": { - "text/plain": [ - "[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 8\n", - " Formula = Cl6-Fe2\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.reconstruct\n", - " Number of Ligands = 6\n", - " Number of Metals = 2\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 15\n", - " Formula = H10-C4-O\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.reconstruct\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 7\n", - " Formula = H2-O-Cl3-Fe\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.reconstruct\n", - " Number of Ligands = 4\n", - " Number of Metals = 1\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 15\n", - " Formula = H10-C4-O\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.reconstruct\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 7\n", - " Formula = H2-O-Cl3-Fe\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.reconstruct\n", - " Number of Ligands = 4\n", - " Number of Metals = 1\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 53\n", - " Formula = H36-C16-N\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.reconstruct\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 53\n", - " Formula = H36-C16-N\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.reconstruct\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 53\n", - " Formula = H36-C16-N\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.reconstruct\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 53\n", - " Formula = H36-C16-N\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.reconstruct\n", - " ---------------------------------------------------]" - ] - }, - "execution_count": 8, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "newcell.reconstruct(debug=debug) " - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "id": "1a4d5062", - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "data": { - "text/plain": [ - "False" - ] - }, - "execution_count": 9, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "newcell.error_reconstruction" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "id": "5eb92088", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "False" - ] - }, - "execution_count": 10, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "newcell.is_fragmented" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "id": "f10195bc", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[------------- Cell2mol LIGAND Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = ligand\n", - " Number of Atoms = 1\n", - " Formula = Cl\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_complex\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol METAL Object --------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Sub-Type = metal\n", - " Label = Fe\n", - " Atomic Number = 26\n", - " Index in Molecule = 0\n", - " Metal Adjacency (mconnec) = 5\n", - " Regular Adjacencies (connec) = 5\n", - " Coordination Sphere Formula = Cl4-Fe\n", - " ----------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 15\n", - " Formula = H10-C4-O\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.reconstruct\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol LIGAND Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = ligand\n", - " Number of Atoms = 3\n", - " Formula = H2-O\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_complex\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol METAL Object --------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Sub-Type = metal\n", - " Label = Fe\n", - " Atomic Number = 26\n", - " Index in Molecule = 0\n", - " Metal Adjacency (mconnec) = 4\n", - " Regular Adjacencies (connec) = 4\n", - " Coordination Sphere Formula = O-Cl3\n", - " ----------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 53\n", - " Formula = H36-C16-N\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.reconstruct\n", - " ---------------------------------------------------]" - ] - }, - "execution_count": 11, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "newcell.get_unique_species(debug=debug)" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "id": "25e6cdaa", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "LIGAND.SPLIT_LIGAND: self.indices=[0]\n", - "LIGAND.SPLIT_LIGAND: conn_idx=[0]\n", - "LIGAND.SPLIT_LIGAND: conn_labels=['Cl']\n", - "LIGAND.SPLIT_LIGAND: conn_coord=[[13.4461469, 6.6944761, 8.8941779]]\n", - "LIGAND.SPLIT_LIGAND: conn_radii=[1.02]\n", - "blocklist=[[0]]\n", - "LIGAND.SPLIT_LIGAND: block=[0]\n", - "ADD_ATOM: Metalist length 1\n", - "ADD_ATOM: Ligand Atoms 1\n", - "ADD_ATOM: site= 0\n", - "ADD_ATOM: evaluating apos=array([13.4461469, 6.6944761, 8.8941779]) and tgt.coord=[11.9462911, 8.1585379, 8.032954]\n", - "ADD_ATOM: received tmpconnec[posadded]=1\n", - "ADD_ATOM: Chosen Metal index None. H is added at site 0\n", - "protonation_states=[------------- Cell2mol Protonation ----------------\n", - " Status = True\n", - " Labels = ['Cl']\n", - " Type = Local\n", - " Atoms added in positions = [0]\n", - " Atoms blocked (no atoms added) = [1]\n", - "---------------------------------------------------\n", - "]\n", - "smiles='[Cl-]'\n", - "smiles='[Cl-]'\n", - "smiles='[Cl-]'\n", - "smiles='[Cl-]'\n", - "smiles='[Cl-]'\n", - "Cl\n", - "spec.protonation_states=[------------- Cell2mol Protonation ----------------\n", - " Status = True\n", - " Labels = ['Cl']\n", - " Type = Local\n", - " Atoms added in positions = [0]\n", - " Atoms blocked (no atoms added) = [1]\n", - "---------------------------------------------------\n", - "]\n", - "\n", - "LIGAND.SPLIT_LIGAND: self.indices=[0]\n", - "LIGAND.SPLIT_LIGAND: conn_idx=[0]\n", - "LIGAND.SPLIT_LIGAND: conn_labels=['Cl']\n", - "LIGAND.SPLIT_LIGAND: conn_coord=[[7.4116689, 8.4886261, 6.9897009]]\n", - "LIGAND.SPLIT_LIGAND: conn_radii=[1.02]\n", - "blocklist=[[0]]\n", - "LIGAND.SPLIT_LIGAND: block=[0]\n", - "LIGAND.SPLIT_LIGAND: self.indices=[0]\n", - "LIGAND.SPLIT_LIGAND: conn_idx=[0]\n", - "LIGAND.SPLIT_LIGAND: conn_labels=['Cl']\n", - "LIGAND.SPLIT_LIGAND: conn_coord=[[10.7763357, 6.921396, 6.3653056]]\n", - "LIGAND.SPLIT_LIGAND: conn_radii=[1.02]\n", - "blocklist=[[0]]\n", - "LIGAND.SPLIT_LIGAND: block=[0]\n", - "LIGAND.SPLIT_LIGAND: self.indices=[0]\n", - "LIGAND.SPLIT_LIGAND: conn_idx=[0]\n", - "LIGAND.SPLIT_LIGAND: conn_labels=['Cl']\n", - "LIGAND.SPLIT_LIGAND: conn_coord=[[10.0814801, 8.2617062, 9.5185732]]\n", - "LIGAND.SPLIT_LIGAND: conn_radii=[1.02]\n", - "blocklist=[[0]]\n", - "LIGAND.SPLIT_LIGAND: block=[0]\n", - "LIGAND.SPLIT_LIGAND: self.indices=[0]\n", - "LIGAND.SPLIT_LIGAND: conn_idx=[0]\n", - "LIGAND.SPLIT_LIGAND: conn_labels=['Cl']\n", - "LIGAND.SPLIT_LIGAND: conn_coord=[[12.3534909, 10.2389616, 7.2768814]]\n", - "LIGAND.SPLIT_LIGAND: conn_radii=[1.02]\n", - "blocklist=[[0]]\n", - "LIGAND.SPLIT_LIGAND: block=[0]\n", - "LIGAND.SPLIT_LIGAND: self.indices=[0]\n", - "LIGAND.SPLIT_LIGAND: conn_idx=[0]\n", - "LIGAND.SPLIT_LIGAND: conn_labels=['Cl']\n", - "LIGAND.SPLIT_LIGAND: conn_coord=[[8.504325, 4.9441406, 8.6069974]]\n", - "LIGAND.SPLIT_LIGAND: conn_radii=[1.02]\n", - "blocklist=[[0]]\n", - "LIGAND.SPLIT_LIGAND: block=[0]\n", - "\n", - "CREATED EMPTY PROTONATION ------------- Cell2mol Protonation ----------------\n", - " Status = True\n", - " Labels = ['C', 'H', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H']\n", - " Type = Empty\n", - " Atoms added in positions = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", - " Atoms blocked (no atoms added) = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "---------------------------------------------------\n", - "\n", - "smiles='[H]C([H])([H])C([H])([H])OC([H])([H])C([H])([H])[H]'\n", - "smiles='[H]C([H])([H])C([H])([H])OC([H])([H])C([H])([H])[H]'\n", - "smiles='[H]C([H])([H])C([H])([H])OC([H])([H])C([H])([H])[H]'\n", - "smiles='[H]C([H])([H])C([H])([H])OC([H])([H])C([H])([H])[H]'\n", - "smiles='[H]C([H])([H])C([H])([H])OC([H])([H])C([H])([H])[H]'\n", - "smiles='[H]C([H])([H])C([H])([H])OC([H])([H])C([H])([H])[H]'\n", - "smiles='[H]C([H])([H])C([H])([H])OC([H])([H])C([H])([H])[H]'\n", - "H10-C4-O\n", - "spec.protonation_states=[------------- Cell2mol Protonation ----------------\n", - " Status = True\n", - " Labels = ['C', 'H', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H']\n", - " Type = Empty\n", - " Atoms added in positions = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", - " Atoms blocked (no atoms added) = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "---------------------------------------------------\n", - "]\n", - "\n", - "LIGAND.SPLIT_LIGAND: self.indices=[0, 1, 2]\n", - "LIGAND.SPLIT_LIGAND: conn_idx=[0]\n", - "LIGAND.SPLIT_LIGAND: conn_labels=['O']\n", - "LIGAND.SPLIT_LIGAND: conn_coord=[[3.702535, 1.3810959, 0.1385074]]\n", - "LIGAND.SPLIT_LIGAND: conn_radii=[0.66]\n", - "blocklist=[[0]]\n", - "LIGAND.SPLIT_LIGAND: block=[0]\n", - "ADD_ATOM: Metalist length 1\n", - "ADD_ATOM: Ligand Atoms 3\n", - "ADD_ATOM: site= 0\n", - "ADD_ATOM: evaluating apos=array([3.702535 , 1.3810959, 0.1385074]) and tgt.coord=[5.1795484, 2.1869193, 1.3234448]\n", - "ADD_ATOM: received tmpconnec[posadded]=1\n", - "ADD_ATOM: Chosen Metal index None. H is added at site 0\n", - "protonation_states=[------------- Cell2mol Protonation ----------------\n", - " Status = True\n", - " Labels = ['O', 'H', 'H']\n", - " Type = Local\n", - " Atoms added in positions = [0 0 0]\n", - " Atoms blocked (no atoms added) = [1 0 0]\n", - "---------------------------------------------------\n", - "]\n", - "smiles='[H]O[H]'\n", - "smiles='[H]O[H]'\n", - "smiles='[H]O[H]'\n", - "smiles='[H]O[H]'\n", - "smiles='[H]O[H]'\n", - "H2-O\n", - "spec.protonation_states=[------------- Cell2mol Protonation ----------------\n", - " Status = True\n", - " Labels = ['O', 'H', 'H']\n", - " Type = Local\n", - " Atoms added in positions = [0 0 0]\n", - " Atoms blocked (no atoms added) = [1 0 0]\n", - "---------------------------------------------------\n", - "]\n", - "\n", - "LIGAND.SPLIT_LIGAND: self.indices=[0]\n", - "LIGAND.SPLIT_LIGAND: conn_idx=[0]\n", - "LIGAND.SPLIT_LIGAND: conn_labels=['Cl']\n", - "LIGAND.SPLIT_LIGAND: conn_coord=[[4.8568825, 4.4277939, 1.0300695]]\n", - "LIGAND.SPLIT_LIGAND: conn_radii=[1.02]\n", - "blocklist=[[0]]\n", - "LIGAND.SPLIT_LIGAND: block=[0]\n", - "LIGAND.SPLIT_LIGAND: self.indices=[0]\n", - "LIGAND.SPLIT_LIGAND: conn_idx=[0]\n", - "LIGAND.SPLIT_LIGAND: conn_labels=['Cl']\n", - "LIGAND.SPLIT_LIGAND: conn_coord=[[7.250637, 1.6225847, 0.4599971]]\n", - "LIGAND.SPLIT_LIGAND: conn_radii=[1.02]\n", - "blocklist=[[0]]\n", - "LIGAND.SPLIT_LIGAND: block=[0]\n", - "LIGAND.SPLIT_LIGAND: self.indices=[0]\n", - "LIGAND.SPLIT_LIGAND: conn_idx=[0]\n", - "LIGAND.SPLIT_LIGAND: conn_labels=['Cl']\n", - "LIGAND.SPLIT_LIGAND: conn_coord=[[4.8139984, 1.1805653, 3.3330731]]\n", - "LIGAND.SPLIT_LIGAND: conn_radii=[1.02]\n", - "blocklist=[[0]]\n", - "LIGAND.SPLIT_LIGAND: block=[0]\n", - "\n", - "CREATED EMPTY PROTONATION ------------- Cell2mol Protonation ----------------\n", - " Status = True\n", - " Labels = ['N', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H']\n", - " Type = Empty\n", - " Atoms added in positions = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", - " Atoms blocked (no atoms added) = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "---------------------------------------------------\n", - "\n", - "smiles='[H]C([H])([H])C([H])([H])C([H])([H])C([H])([H])[N+](C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])(C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H]'\n", - "smiles='[H]C([H])([H])C([H])([H])C([H])([H])C([H])([H])[N+](C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])(C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H]'\n", - "smiles='[H]C([H])([H])C([H])([H])C([H])([H])C([H])([H])[N+](C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])(C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H]'\n", - "smiles='[H]C([H])([H])C([H])([H])C([H])([H])C([H])([H])[N+](C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])(C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H]'\n", - "smiles='[H]C([H])([H])C([H])([H])C([H])([H])C([H])([H])[N+](C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])(C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H]'\n", - "smiles='[H]C([H])([H])C([H])([H])C([H])([H])C([H])([H])[N+](C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])(C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H]'\n", - "smiles='[H]C([H])([H])C([H])([H])C([H])([H])C([H])([H])[N+](C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])(C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H]'\n", - "H36-C16-N\n", - "spec.protonation_states=[------------- Cell2mol Protonation ----------------\n", - " Status = True\n", - " Labels = ['N', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H']\n", - " Type = Empty\n", - " Atoms added in positions = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", - " Atoms blocked (no atoms added) = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "---------------------------------------------------\n", - "]\n", - "\n", - "[[-1], [2, 3], [0], [0], [2, 3], [1]]\n" - ] - } - ], - "source": [ - "selected_cs = []\n", - "for idx, spec in enumerate(newcell.unique_species):\n", - "# print(\"doing\", spec)\n", - " if spec.subtype != \"metal\":\n", - " spec.get_protonation_states()\n", - " spec.get_possible_cs()\n", - " print(spec.formula)\n", - " selected_cs.append(list([cs.corr_total_charge for cs in spec.possible_cs]))\n", - " print(f\"{spec.protonation_states=}\")\n", - "# for prot in spec.protonation_states :\n", - "# for sub_spec, sub_prot in zip(spec.coord, prot.coords):\n", - "# print(sub_spec, sub_prot, (sub_spec == sub_prot)) \n", - "# print(\"==========\") \n", - "# for cs in spec.possible_cs :\n", - "# for sub_spec, sub_cs_prot in zip(spec.coord, cs.protonation.coords):\n", - "# print(sub_spec, sub_cs_prot, (sub_spec == sub_cs_prot)) \n", - " \n", - "# print(\"==========\") \n", - "# for prot, cs in zip(spec.protonation_states, spec.possible_cs) :\n", - "# for sub_prot, sub_cs_prot in zip(prot.coords, cs.protonation.coords):\n", - "# print(sub_prot, sub_cs_prot, (sub_prot == sub_cs_prot)) \n", - " else :\n", - " spec.get_possible_cs()\n", - " selected_cs.append(spec.possible_cs) \n", - " print(\"\")\n", - "print(selected_cs)" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "id": "2972ca26", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[[-1], [2, 3], [0], [0], [2, 3], [1]]" - ] - }, - "execution_count": 13, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "selected_cs" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "id": "2de46e92", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "BALANCE: iterlist [[-1], [2, 3], [0], [0], [2, 3], [1]]\n", - "BALANCE: unique_indices [0, 0, 0, 0, 0, 0, 1, 1, 2, 3, 0, 0, 0, 4, 2, 3, 0, 0, 0, 4, 5, 5, 5, 5]\n", - "BALANCE: tmpdistr [(-1, 2, 0, 0, 2, 1), (-1, 2, 0, 0, 3, 1), (-1, 3, 0, 0, 2, 1), (-1, 3, 0, 0, 3, 1)]\n", - "BALANCE: alldistr added: [-1, -1, -1, -1, -1, -1, 2, 2, 0, 0, -1, -1, -1, 2, 0, 0, -1, -1, -1, 2, 1, 1, 1, 1]\n", - "d=[-1, -1, -1, -1, -1, -1, 2, 2, 0, 0, -1, -1, -1, 2, 0, 0, -1, -1, -1, 2, 1, 1, 1, 1]\n", - "BALANCE: alldistr added: [-1, -1, -1, -1, -1, -1, 2, 2, 0, 0, -1, -1, -1, 3, 0, 0, -1, -1, -1, 3, 1, 1, 1, 1]\n", - "d=[-1, -1, -1, -1, -1, -1, 2, 2, 0, 0, -1, -1, -1, 2, 0, 0, -1, -1, -1, 2, 1, 1, 1, 1]\n", - "d=[-1, -1, -1, -1, -1, -1, 2, 2, 0, 0, -1, -1, -1, 3, 0, 0, -1, -1, -1, 3, 1, 1, 1, 1]\n", - "BALANCE: alldistr added: [-1, -1, -1, -1, -1, -1, 3, 3, 0, 0, -1, -1, -1, 2, 0, 0, -1, -1, -1, 2, 1, 1, 1, 1]\n", - "d=[-1, -1, -1, -1, -1, -1, 2, 2, 0, 0, -1, -1, -1, 2, 0, 0, -1, -1, -1, 2, 1, 1, 1, 1]\n", - "d=[-1, -1, -1, -1, -1, -1, 2, 2, 0, 0, -1, -1, -1, 3, 0, 0, -1, -1, -1, 3, 1, 1, 1, 1]\n", - "d=[-1, -1, -1, -1, -1, -1, 3, 3, 0, 0, -1, -1, -1, 2, 0, 0, -1, -1, -1, 2, 1, 1, 1, 1]\n", - "BALANCE: alldistr added: [-1, -1, -1, -1, -1, -1, 3, 3, 0, 0, -1, -1, -1, 3, 0, 0, -1, -1, -1, 3, 1, 1, 1, 1]\n", - "d=[-1, -1, -1, -1, -1, -1, 2, 2, 0, 0, -1, -1, -1, 2, 0, 0, -1, -1, -1, 2, 1, 1, 1, 1]\n", - "d=[-1, -1, -1, -1, -1, -1, 2, 2, 0, 0, -1, -1, -1, 3, 0, 0, -1, -1, -1, 3, 1, 1, 1, 1]\n", - "d=[-1, -1, -1, -1, -1, -1, 3, 3, 0, 0, -1, -1, -1, 2, 0, 0, -1, -1, -1, 2, 1, 1, 1, 1]\n", - "d=[-1, -1, -1, -1, -1, -1, 3, 3, 0, 0, -1, -1, -1, 3, 0, 0, -1, -1, -1, 3, 1, 1, 1, 1]\n" - ] - } - ], - "source": [ - "final_charge_distribution = balance_charge(newcell.unique_indices, newcell.unique_species, debug=2)" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "id": "6e2772ef", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[[-1,\n", - " -1,\n", - " -1,\n", - " -1,\n", - " -1,\n", - " -1,\n", - " 2,\n", - " 2,\n", - " 0,\n", - " 0,\n", - " -1,\n", - " -1,\n", - " -1,\n", - " 2,\n", - " 0,\n", - " 0,\n", - " -1,\n", - " -1,\n", - " -1,\n", - " 2,\n", - " 1,\n", - " 1,\n", - " 1,\n", - " 1]]" - ] - }, - "execution_count": 15, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "final_charge_distribution" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "id": "86a83037", - "metadata": {}, - "outputs": [], - "source": [ - "def set_charges_create_bonds (specie, unique_indices, unique_species, final_charge_distribution):\n", - " \n", - " spec = unique_species[specie.unique_index]\n", - " indices = [index for index, value in enumerate(unique_indices) if value == specie.unique_index]\n", - " target_charge = [final_charge_distribution[i] for i in indices][0] \n", - " if debug > 1: print(spec, indices, target_charge)\n", - " \n", - " if (specie.subtype == \"molecule\" and specie.iscomplex == False) or (specie.subtype == \"ligand\"):\n", - " formula = specie.formula\n", - " charge_list = [cs.corr_total_charge for cs in spec.possible_cs]\n", - " \n", - " elif specie.subtype == \"metal\":\n", - " formula = specie.label\n", - " charge_list = spec.possible_cs\n", - " \n", - " if target_charge in charge_list: \n", - " if debug > 1: print(f\"Target charge {target_charge} of {formula} exists in {charge_list}.\" )\n", - " else:\n", - " if debug > 1: print(f\"ERROR: Target charge {target_charge} of {formula} does not exist in {charge_list}.\" )\n", - " return None\n", - " \n", - " if (specie.subtype == \"molecule\" and specie.iscomplex == False) or (specie.subtype == \"ligand\"):\n", - " print(specie.formula)\n", - " specie.get_protonation_states(debug=0)\n", - " specie.get_possible_cs(debug=0)\n", - " formula = specie.formula\n", - " charge_list = [cs.corr_total_charge for cs in specie.possible_cs] \n", - " \n", - " if target_charge in charge_list:\n", - " if debug > 1: print(f\"Target charge {target_charge} of {formula} exists in {charge_list}.\")\n", - " idx = charge_list.index(target_charge)\n", - " cs = specie.possible_cs[idx]\n", - " prot = cs.protonation\n", - " specie.set_charges(cs.corr_total_charge, cs.corr_atom_charges, cs.smiles, cs.rdkit_obj)\n", - " specie.create_bonds(debug=0)\n", - " else:\n", - " if debug > 1: print(f\"ERROR: Target charge {target_charge} of {formula} does not exist in {charge_list}.\" )\n", - " return None\n", - " \n", - " elif specie.subtype == \"metal\":\n", - " print(specie.label)\n", - " specie.get_possible_cs(debug=0)\n", - " formula = specie.label\n", - " charge_list = spec.possible_cs \n", - "\n", - " if target_charge in charge_list:\n", - " if debug > 1: print(f\"Target charge {target_charge} of {formula} exists in {charge_list}.\" )\n", - " idx = charge_list.index(target_charge)\n", - " cs = specie.possible_cs[idx]\n", - " specie.set_charge(cs) \n", - " else:\n", - " if debug > 1: print(f\"ERROR: Target charge {target_charge} of {formula} does not exist in {charge_list}.\" )\n", - " return None " - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "id": "b8f13537", - "metadata": {}, - "outputs": [], - "source": [ - "def prepare_mols_v4 (moleclist: list, unique_indices: list, unique_species: list, \n", - " selected_cs: list, final_charge_distribution: list, debug: int=0):\n", - " count = 0 \n", - " for mol in moleclist:\n", - " if mol.iscomplex == False:\n", - " set_charges_create_bonds(mol, unique_indices, unique_species, final_charge_distribution)\n", - " count += 1\n", - " \n", - " elif mol.iscomplex:\n", - " tmp_atcharge = np.zeros((mol.natoms))\n", - " tmp_smiles = []\n", - " \n", - " for lig in mol.ligands: \n", - " set_charges_create_bonds(lig, unique_indices, unique_species, final_charge_distribution)\n", - " count += 1\n", - " \n", - " tmp_smiles.append(lig.smiles)\n", - " parent_indices = lig.get_parent_indices(\"molecule\")\n", - " for kdx, a in enumerate(parent_indices):\n", - " tmp_atcharge[a] = lig.atomic_charges[kdx]\n", - " \n", - " for met in mol.metals: \n", - " set_charges_create_bonds(met, unique_indices, unique_species, final_charge_distribution)\n", - " count += 1\n", - " parent_index = met.get_parent_index(\"molecule\")\n", - " tmp_atcharge[parent_index] = met.charge \n", - " \n", - " mol.set_charges(int(sum(tmp_atcharge)), atomic_charges=tmp_atcharge, smiles=tmp_smiles)\n", - "\n", - " if count != len(final_charge_distribution):\n", - " Warning = True\n", - " else:\n", - " Warning = False\n", - " \n", - " return moleclist, Warning\n", - " \n", - " \n", - "# ref_data, target_data = arrange_data_for_reorder(spec, mol)\n", - "# print(f\"{spec.labels=}\")\n", - "# print(f\"{mol.labels=}\")\n", - "# print(ref_data, target_data)\n", - "# dummy1, dummy2, map12 = reorder(ref_data, target_data, spec.coord, mol.coord)\n", - " \n", - "# print(\"*****Before function reorder within class****\")\n", - "# print(cs.protonation)\n", - "# prot = cs.protonation.reorder(map12, debug=debug)\n", - "# print(\"*****After function reorder within class****\")\n", - "# print(cs.protonation)\n", - "# print(prot)\n", - "# ref_data, target_data = arrange_data_for_reorder(mol, spec)\n", - "# print(f\"{spec.labels=}\")\n", - "# print(f\"{mol.labels=}\")\n", - "# print(ref_data, target_data)\n", - "# dummy1, dummy2, map12 = reorder(ref_data, target_data, mol.coord, spec.coord)\n", - "# reordered_prot_spec = reorder_protonation(spec.possible_cs[0].protonation, map12, debug=debug) \n", - "# print(\"**************** After reorder **************** mol vs reordered_protonation\") \n", - "# for l_mol, c_mol, l_prot, c_prot in zip(mol.labels, mol.coord, prot.labels, prot.coords):\n", - "# print(l_mol, l_prot, (l_mol == l_prot), c_mol, c_prot, (c_mol==c_prot) ) \n", - "# print(\"**************** After reorder **************** mol vs reordered_protonation_spec\") \n", - "# for l_mol, c_mol, l_prot, c_prot in zip(mol.labels, mol.coord, reordered_prot_spec.labels, reordered_prot_spec.coords):\n", - "# print(l_mol, l_prot, (l_mol == l_prot), c_mol, c_prot, (c_mol==c_prot) ) " - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "id": "dcd86634", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Cl\n", - "protonation_states=[------------- Cell2mol Protonation ----------------\n", - " Status = True\n", - " Labels = ['Cl']\n", - " Type = Local\n", - " Atoms added in positions = [0]\n", - " Atoms blocked (no atoms added) = [1]\n", - "---------------------------------------------------\n", - "]\n", - "smiles='[Cl-]'\n", - "smiles='[Cl-]'\n", - "smiles='[Cl-]'\n", - "smiles='[Cl-]'\n", - "smiles='[Cl-]'\n", - "Cl\n", - "ADD_ATOM: Metalist length 1\n", - "ADD_ATOM: Ligand Atoms 1\n", - "ADD_ATOM: site= 0\n", - "ADD_ATOM: evaluating apos=array([7.4116689, 8.4886261, 6.9897009]) and tgt.coord=[8.9115248, 7.0245642, 7.8509248]\n", - "ADD_ATOM: received tmpconnec[posadded]=1\n", - "ADD_ATOM: Chosen Metal index None. H is added at site 0\n", - "protonation_states=[------------- Cell2mol Protonation ----------------\n", - " Status = True\n", - " Labels = ['Cl']\n", - " Type = Local\n", - " Atoms added in positions = [0]\n", - " Atoms blocked (no atoms added) = [1]\n", - "---------------------------------------------------\n", - "]\n", - "smiles='[Cl-]'\n", - "smiles='[Cl-]'\n", - "smiles='[Cl-]'\n", - "smiles='[Cl-]'\n", - "smiles='[Cl-]'\n", - "Cl\n", - "ADD_ATOM: Metalist length 1\n", - "ADD_ATOM: Ligand Atoms 1\n", - "ADD_ATOM: site= 0\n", - "ADD_ATOM: evaluating apos=array([10.7763357, 6.921396 , 6.3653056]) and tgt.coord=[11.9462911, 8.1585379, 8.032954]\n", - "ADD_ATOM: received tmpconnec[posadded]=1\n", - "ADD_ATOM: Chosen Metal index None. H is added at site 0\n", - "ADD_ATOM: Metalist length 1\n", - "ADD_ATOM: Ligand Atoms 1\n", - "ADD_ATOM: site= 0\n", - "ADD_ATOM: evaluating apos=array([10.7763357, 6.921396 , 6.3653056]) and tgt.coord=[11.9462911, 8.1585379, 8.032954]\n", - "ADD_ATOM: received tmpconnec[posadded]=1\n", - "ADD_ATOM: Chosen Metal index None. H is added at site 0\n", - "protonation_states=[------------- Cell2mol Protonation ----------------\n", - " Status = True\n", - " Labels = ['Cl']\n", - " Type = Local\n", - " Atoms added in positions = [0]\n", - " Atoms blocked (no atoms added) = [1]\n", - "---------------------------------------------------\n", - "]\n", - "smiles='[Cl-]'\n", - "smiles='[Cl-]'\n", - "smiles='[Cl-]'\n", - "smiles='[Cl-]'\n", - "smiles='[Cl-]'\n", - "Cl\n", - "ADD_ATOM: Metalist length 1\n", - "ADD_ATOM: Ligand Atoms 1\n", - "ADD_ATOM: site= 0\n", - "ADD_ATOM: evaluating apos=array([10.0814801, 8.2617062, 9.5185732]) and tgt.coord=[8.9115248, 7.0245642, 7.8509248]\n", - "ADD_ATOM: received tmpconnec[posadded]=1\n", - "ADD_ATOM: Chosen Metal index None. H is added at site 0\n", - "ADD_ATOM: Metalist length 1\n", - "ADD_ATOM: Ligand Atoms 1\n", - "ADD_ATOM: site= 0\n", - "ADD_ATOM: evaluating apos=array([10.0814801, 8.2617062, 9.5185732]) and tgt.coord=[8.9115248, 7.0245642, 7.8509248]\n", - "ADD_ATOM: received tmpconnec[posadded]=1\n", - "ADD_ATOM: Chosen Metal index None. H is added at site 0\n", - "protonation_states=[------------- Cell2mol Protonation ----------------\n", - " Status = True\n", - " Labels = ['Cl']\n", - " Type = Local\n", - " Atoms added in positions = [0]\n", - " Atoms blocked (no atoms added) = [1]\n", - "---------------------------------------------------\n", - "]\n", - "smiles='[Cl-]'\n", - "smiles='[Cl-]'\n", - "smiles='[Cl-]'\n", - "smiles='[Cl-]'\n", - "smiles='[Cl-]'\n", - "Cl\n", - "ADD_ATOM: Metalist length 1\n", - "ADD_ATOM: Ligand Atoms 1\n", - "ADD_ATOM: site= 0\n", - "ADD_ATOM: evaluating apos=array([12.3534909, 10.2389616, 7.2768814]) and tgt.coord=[11.9462911, 8.1585379, 8.032954]\n", - "ADD_ATOM: received tmpconnec[posadded]=1\n", - "ADD_ATOM: Chosen Metal index None. H is added at site 0\n", - "protonation_states=[------------- Cell2mol Protonation ----------------\n", - " Status = True\n", - " Labels = ['Cl']\n", - " Type = Local\n", - " Atoms added in positions = [0]\n", - " Atoms blocked (no atoms added) = [1]\n", - "---------------------------------------------------\n", - "]\n", - "smiles='[Cl-]'\n", - "smiles='[Cl-]'\n", - "smiles='[Cl-]'\n", - "smiles='[Cl-]'\n", - "smiles='[Cl-]'\n", - "Cl\n", - "ADD_ATOM: Metalist length 1\n", - "ADD_ATOM: Ligand Atoms 1\n", - "ADD_ATOM: site= 0\n", - "ADD_ATOM: evaluating apos=array([8.504325 , 4.9441406, 8.6069974]) and tgt.coord=[8.9115248, 7.0245642, 7.8509248]\n", - "ADD_ATOM: received tmpconnec[posadded]=1\n", - "ADD_ATOM: Chosen Metal index None. H is added at site 0\n", - "protonation_states=[------------- Cell2mol Protonation ----------------\n", - " Status = True\n", - " Labels = ['Cl']\n", - " Type = Local\n", - " Atoms added in positions = [0]\n", - " Atoms blocked (no atoms added) = [1]\n", - "---------------------------------------------------\n", - "]\n", - "smiles='[Cl-]'\n", - "smiles='[Cl-]'\n", - "smiles='[Cl-]'\n", - "smiles='[Cl-]'\n", - "smiles='[Cl-]'\n", - "Fe\n", - "Fe\n", - "H10-C4-O\n", - "CREATED EMPTY PROTONATION ------------- Cell2mol Protonation ----------------\n", - " Status = True\n", - " Labels = ['C', 'H', 'H', 'C', 'H', 'H', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H']\n", - " Type = Empty\n", - " Atoms added in positions = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", - " Atoms blocked (no atoms added) = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "---------------------------------------------------\n", - "\n", - "smiles='[H]C([H])([H])C([H])([H])OC([H])([H])C([H])([H])[H]'\n", - "smiles='[H]C([H])([H])C([H])([H])OC([H])([H])C([H])([H])[H]'\n", - "smiles='[H]C([H])([H])C([H])([H])OC([H])([H])C([H])([H])[H]'\n", - "smiles='[H]C([H])([H])C([H])([H])OC([H])([H])C([H])([H])[H]'\n", - "smiles='[H]C([H])([H])C([H])([H])OC([H])([H])C([H])([H])[H]'\n", - "smiles='[H]C([H])([H])C([H])([H])OC([H])([H])C([H])([H])[H]'\n", - "smiles='[H]C([H])([H])C([H])([H])OC([H])([H])C([H])([H])[H]'\n", - "H2-O\n", - "protonation_states=[------------- Cell2mol Protonation ----------------\n", - " Status = True\n", - " Labels = ['O', 'H', 'H']\n", - " Type = Local\n", - " Atoms added in positions = [0 0 0]\n", - " Atoms blocked (no atoms added) = [1 0 0]\n", - "---------------------------------------------------\n", - "]\n", - "smiles='[H]O[H]'\n", - "smiles='[H]O[H]'\n", - "smiles='[H]O[H]'\n", - "smiles='[H]O[H]'\n", - "smiles='[H]O[H]'\n", - "Cl\n", - "ADD_ATOM: Metalist length 1\n", - "ADD_ATOM: Ligand Atoms 1\n", - "ADD_ATOM: site= 0\n", - "ADD_ATOM: evaluating apos=array([4.8568825, 4.4277939, 1.0300695]) and tgt.coord=[5.1795484, 2.1869193, 1.3234448]\n", - "ADD_ATOM: received tmpconnec[posadded]=1\n", - "ADD_ATOM: Chosen Metal index None. H is added at site 0\n", - "protonation_states=[------------- Cell2mol Protonation ----------------\n", - " Status = True\n", - " Labels = ['Cl']\n", - " Type = Local\n", - " Atoms added in positions = [0]\n", - " Atoms blocked (no atoms added) = [1]\n", - "---------------------------------------------------\n", - "]\n", - "smiles='[Cl-]'\n", - "smiles='[Cl-]'\n", - "smiles='[Cl-]'\n", - "smiles='[Cl-]'\n", - "smiles='[Cl-]'\n", - "Cl\n", - "ADD_ATOM: Metalist length 1\n", - "ADD_ATOM: Ligand Atoms 1\n", - "ADD_ATOM: site= 0\n", - "ADD_ATOM: evaluating apos=array([7.250637 , 1.6225847, 0.4599971]) and tgt.coord=[5.1795484, 2.1869193, 1.3234448]\n", - "ADD_ATOM: received tmpconnec[posadded]=1\n", - "ADD_ATOM: Chosen Metal index None. H is added at site 0\n", - "protonation_states=[------------- Cell2mol Protonation ----------------\n", - " Status = True\n", - " Labels = ['Cl']\n", - " Type = Local\n", - " Atoms added in positions = [0]\n", - " Atoms blocked (no atoms added) = [1]\n", - "---------------------------------------------------\n", - "]\n", - "smiles='[Cl-]'\n", - "smiles='[Cl-]'\n", - "smiles='[Cl-]'\n", - "smiles='[Cl-]'\n", - "smiles='[Cl-]'\n", - "Cl\n", - "ADD_ATOM: Metalist length 1\n", - "ADD_ATOM: Ligand Atoms 1\n", - "ADD_ATOM: site= 0\n", - "ADD_ATOM: evaluating apos=array([4.8139984, 1.1805653, 3.3330731]) and tgt.coord=[5.1795484, 2.1869193, 1.3234448]\n", - "ADD_ATOM: received tmpconnec[posadded]=1\n", - "ADD_ATOM: Chosen Metal index None. H is added at site 0\n", - "protonation_states=[------------- Cell2mol Protonation ----------------\n", - " Status = True\n", - " Labels = ['Cl']\n", - " Type = Local\n", - " Atoms added in positions = [0]\n", - " Atoms blocked (no atoms added) = [1]\n", - "---------------------------------------------------\n", - "]\n", - "smiles='[Cl-]'\n", - "smiles='[Cl-]'\n", - "smiles='[Cl-]'\n", - "smiles='[Cl-]'\n", - "smiles='[Cl-]'\n", - "Fe\n", - "H10-C4-O\n", - "CREATED EMPTY PROTONATION ------------- Cell2mol Protonation ----------------\n", - " Status = True\n", - " Labels = ['C', 'H', 'H', 'O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H']\n", - " Type = Empty\n", - " Atoms added in positions = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", - " Atoms blocked (no atoms added) = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "---------------------------------------------------\n", - "\n", - "smiles='[H]C([H])([H])C([H])([H])OC([H])([H])C([H])([H])[H]'\n", - "smiles='[H]C([H])([H])C([H])([H])OC([H])([H])C([H])([H])[H]'\n", - "smiles='[H]C([H])([H])C([H])([H])OC([H])([H])C([H])([H])[H]'\n", - "smiles='[H]C([H])([H])C([H])([H])OC([H])([H])C([H])([H])[H]'\n", - "smiles='[H]C([H])([H])C([H])([H])OC([H])([H])C([H])([H])[H]'\n", - "smiles='[H]C([H])([H])C([H])([H])OC([H])([H])C([H])([H])[H]'\n", - "smiles='[H]C([H])([H])C([H])([H])OC([H])([H])C([H])([H])[H]'\n", - "H2-O\n", - "LIGAND.SPLIT_LIGAND: self.indices=[0, 1, 2]\n", - "LIGAND.SPLIT_LIGAND: conn_idx=[0]\n", - "LIGAND.SPLIT_LIGAND: conn_labels=['O']\n", - "LIGAND.SPLIT_LIGAND: conn_coord=[[17.1552809, 13.8020062, 15.7453714]]\n", - "LIGAND.SPLIT_LIGAND: conn_radii=[0.66]\n", - "blocklist=[[0]]\n", - "LIGAND.SPLIT_LIGAND: block=[0]\n", - "ADD_ATOM: Metalist length 1\n", - "ADD_ATOM: Ligand Atoms 3\n", - "ADD_ATOM: site= 0\n", - "ADD_ATOM: evaluating apos=array([17.1552809, 13.8020062, 15.7453714]) and tgt.coord=[15.6782675, 12.9961829, 14.560434]\n", - "ADD_ATOM: received tmpconnec[posadded]=1\n", - "ADD_ATOM: Chosen Metal index None. H is added at site 0\n", - "protonation_states=[------------- Cell2mol Protonation ----------------\n", - " Status = True\n", - " Labels = ['O', 'H', 'H']\n", - " Type = Local\n", - " Atoms added in positions = [0 0 0]\n", - " Atoms blocked (no atoms added) = [1 0 0]\n", - "---------------------------------------------------\n", - "]\n", - "smiles='[H]O[H]'\n", - "smiles='[H]O[H]'\n", - "smiles='[H]O[H]'\n", - "smiles='[H]O[H]'\n", - "smiles='[H]O[H]'\n", - "Cl\n", - "LIGAND.SPLIT_LIGAND: self.indices=[0]\n", - "LIGAND.SPLIT_LIGAND: conn_idx=[0]\n", - "LIGAND.SPLIT_LIGAND: conn_labels=['Cl']\n", - "LIGAND.SPLIT_LIGAND: conn_coord=[[16.0009333, 10.7553082, 14.8538092]]\n", - "LIGAND.SPLIT_LIGAND: conn_radii=[1.02]\n", - "blocklist=[[0]]\n", - "LIGAND.SPLIT_LIGAND: block=[0]\n", - "ADD_ATOM: Metalist length 1\n", - "ADD_ATOM: Ligand Atoms 1\n", - "ADD_ATOM: site= 0\n", - "ADD_ATOM: evaluating apos=array([16.0009333, 10.7553082, 14.8538092]) and tgt.coord=[15.6782675, 12.9961829, 14.560434]\n", - "ADD_ATOM: received tmpconnec[posadded]=1\n", - "ADD_ATOM: Chosen Metal index None. H is added at site 0\n", - "protonation_states=[------------- Cell2mol Protonation ----------------\n", - " Status = True\n", - " Labels = ['Cl']\n", - " Type = Local\n", - " Atoms added in positions = [0]\n", - " Atoms blocked (no atoms added) = [1]\n", - "---------------------------------------------------\n", - "]\n", - "smiles='[Cl-]'\n", - "smiles='[Cl-]'\n", - "smiles='[Cl-]'\n", - "smiles='[Cl-]'\n", - "smiles='[Cl-]'\n", - "Cl\n", - "LIGAND.SPLIT_LIGAND: self.indices=[0]\n", - "LIGAND.SPLIT_LIGAND: conn_idx=[0]\n", - "LIGAND.SPLIT_LIGAND: conn_labels=['Cl']\n", - "LIGAND.SPLIT_LIGAND: conn_coord=[[13.6071789, 13.5605175, 15.4238817]]\n", - "LIGAND.SPLIT_LIGAND: conn_radii=[1.02]\n", - "blocklist=[[0]]\n", - "LIGAND.SPLIT_LIGAND: block=[0]\n", - "ADD_ATOM: Metalist length 1\n", - "ADD_ATOM: Ligand Atoms 1\n", - "ADD_ATOM: site= 0\n", - "ADD_ATOM: evaluating apos=array([13.6071789, 13.5605175, 15.4238817]) and tgt.coord=[15.6782675, 12.9961829, 14.560434]\n", - "ADD_ATOM: received tmpconnec[posadded]=1\n", - "ADD_ATOM: Chosen Metal index None. H is added at site 0\n", - "protonation_states=[------------- Cell2mol Protonation ----------------\n", - " Status = True\n", - " Labels = ['Cl']\n", - " Type = Local\n", - " Atoms added in positions = [0]\n", - " Atoms blocked (no atoms added) = [1]\n", - "---------------------------------------------------\n", - "]\n", - "smiles='[Cl-]'\n", - "smiles='[Cl-]'\n", - "smiles='[Cl-]'\n", - "smiles='[Cl-]'\n", - "smiles='[Cl-]'\n", - "Cl\n", - "LIGAND.SPLIT_LIGAND: self.indices=[0]\n", - "LIGAND.SPLIT_LIGAND: conn_idx=[0]\n", - "LIGAND.SPLIT_LIGAND: conn_labels=['Cl']\n", - "LIGAND.SPLIT_LIGAND: conn_coord=[[16.0438174, 14.0025369, 12.5508057]]\n", - "LIGAND.SPLIT_LIGAND: conn_radii=[1.02]\n", - "blocklist=[[0]]\n", - "LIGAND.SPLIT_LIGAND: block=[0]\n", - "ADD_ATOM: Metalist length 1\n", - "ADD_ATOM: Ligand Atoms 1\n", - "ADD_ATOM: site= 0\n", - "ADD_ATOM: evaluating apos=array([16.0438174, 14.0025369, 12.5508057]) and tgt.coord=[15.6782675, 12.9961829, 14.560434]\n", - "ADD_ATOM: received tmpconnec[posadded]=1\n", - "ADD_ATOM: Chosen Metal index None. H is added at site 0\n", - "protonation_states=[------------- Cell2mol Protonation ----------------\n", - " Status = True\n", - " Labels = ['Cl']\n", - " Type = Local\n", - " Atoms added in positions = [0]\n", - " Atoms blocked (no atoms added) = [1]\n", - "---------------------------------------------------\n", - "]\n", - "smiles='[Cl-]'\n", - "smiles='[Cl-]'\n", - "smiles='[Cl-]'\n", - "smiles='[Cl-]'\n", - "smiles='[Cl-]'\n", - "Fe\n", - "H36-C16-N\n", - "CREATED EMPTY PROTONATION ------------- Cell2mol Protonation ----------------\n", - " Status = True\n", - " Labels = ['N', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H']\n", - " Type = Empty\n", - " Atoms added in positions = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", - " Atoms blocked (no atoms added) = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "---------------------------------------------------\n", - "\n", - "smiles='[H]C([H])([H])C([H])([H])C([H])([H])C([H])([H])[N+](C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])(C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H]'\n", - "smiles='[H]C([H])([H])C([H])([H])C([H])([H])C([H])([H])[N+](C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])(C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H]'\n", - "smiles='[H]C([H])([H])C([H])([H])C([H])([H])C([H])([H])[N+](C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])(C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H]'\n", - "smiles='[H]C([H])([H])C([H])([H])C([H])([H])C([H])([H])[N+](C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])(C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H]'\n", - "smiles='[H]C([H])([H])C([H])([H])C([H])([H])C([H])([H])[N+](C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])(C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H]'\n", - "smiles='[H]C([H])([H])C([H])([H])C([H])([H])C([H])([H])[N+](C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])(C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H]'\n", - "smiles='[H]C([H])([H])C([H])([H])C([H])([H])C([H])([H])[N+](C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])(C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H]'\n", - "H36-C16-N\n", - "CREATED EMPTY PROTONATION ------------- Cell2mol Protonation ----------------\n", - " Status = True\n", - " Labels = ['N', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H']\n", - " Type = Empty\n", - " Atoms added in positions = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", - " Atoms blocked (no atoms added) = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "---------------------------------------------------\n", - "\n", - "smiles='[H]C([H])([H])C([H])([H])C([H])([H])C([H])([H])[N+](C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])(C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H]'\n", - "smiles='[H]C([H])([H])C([H])([H])C([H])([H])C([H])([H])[N+](C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])(C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H]'\n", - "smiles='[H]C([H])([H])C([H])([H])C([H])([H])C([H])([H])[N+](C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])(C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H]'\n", - "smiles='[H]C([H])([H])C([H])([H])C([H])([H])C([H])([H])[N+](C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])(C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H]'\n", - "smiles='[H]C([H])([H])C([H])([H])C([H])([H])C([H])([H])[N+](C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])(C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H]'\n", - "smiles='[H]C([H])([H])C([H])([H])C([H])([H])C([H])([H])[N+](C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])(C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H]'\n", - "smiles='[H]C([H])([H])C([H])([H])C([H])([H])C([H])([H])[N+](C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])(C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H]'\n", - "H36-C16-N\n", - "CREATED EMPTY PROTONATION ------------- Cell2mol Protonation ----------------\n", - " Status = True\n", - " Labels = ['N', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H']\n", - " Type = Empty\n", - " Atoms added in positions = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", - " Atoms blocked (no atoms added) = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "---------------------------------------------------\n", - "\n", - "smiles='[H]C([H])([H])C([H])([H])C([H])([H])C([H])([H])[N+](C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])(C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H]'\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "smiles='[H]C([H])([H])C([H])([H])C([H])([H])C([H])([H])[N+](C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])(C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H]'\n", - "smiles='[H]C([H])([H])C([H])([H])C([H])([H])C([H])([H])[N+](C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])(C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H]'\n", - "smiles='[H]C([H])([H])C([H])([H])C([H])([H])C([H])([H])[N+](C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])(C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H]'\n", - "smiles='[H]C([H])([H])C([H])([H])C([H])([H])C([H])([H])[N+](C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])(C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H]'\n", - "smiles='[H]C([H])([H])C([H])([H])C([H])([H])C([H])([H])[N+](C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])(C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H]'\n", - "smiles='[H]C([H])([H])C([H])([H])C([H])([H])C([H])([H])[N+](C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])(C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H]'\n", - "H36-C16-N\n", - "CREATED EMPTY PROTONATION ------------- Cell2mol Protonation ----------------\n", - " Status = True\n", - " Labels = ['N', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H']\n", - " Type = Empty\n", - " Atoms added in positions = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", - " Atoms blocked (no atoms added) = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "---------------------------------------------------\n", - "\n", - "smiles='[H]C([H])([H])C([H])([H])C([H])([H])C([H])([H])[N+](C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])(C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H]'\n", - "smiles='[H]C([H])([H])C([H])([H])C([H])([H])C([H])([H])[N+](C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])(C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H]'\n", - "smiles='[H]C([H])([H])C([H])([H])C([H])([H])C([H])([H])[N+](C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])(C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H]'\n", - "smiles='[H]C([H])([H])C([H])([H])C([H])([H])C([H])([H])[N+](C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])(C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H]'\n", - "smiles='[H]C([H])([H])C([H])([H])C([H])([H])C([H])([H])[N+](C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])(C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H]'\n", - "smiles='[H]C([H])([H])C([H])([H])C([H])([H])C([H])([H])[N+](C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])(C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H]'\n", - "smiles='[H]C([H])([H])C([H])([H])C([H])([H])C([H])([H])[N+](C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])(C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H]'\n" - ] - } - ], - "source": [ - "newcell.moleclist, newcell.error_prepare_mols = prepare_mols_v4(newcell.moleclist, \n", - " newcell.unique_indices, \n", - " newcell.unique_species, \n", - " selected_cs, \n", - " final_charge_distribution[0], \n", - " debug=debug)" - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "id": "d6340c3e", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "False" - ] - }, - "execution_count": 19, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "newcell.error_prepare_mols" - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "id": "63c1a8cf", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 8\n", - " Formula = Cl6-Fe2\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = -2\n", - " Smiles = ['[Cl-]', '[Cl-]', '[Cl-]', '[Cl-]', '[Cl-]', '[Cl-]']\n", - " Origin = cell.reconstruct\n", - " Number of Ligands = 6\n", - " Number of Metals = 2\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 15\n", - " Formula = H10-C4-O\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = 0\n", - " Smiles = [H]C([H])([H])C([H])([H])OC([H])([H])C([H])([H])[H]\n", - " Origin = cell.reconstruct\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 7\n", - " Formula = H2-O-Cl3-Fe\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = -1\n", - " Smiles = ['[H]O[H]', '[Cl-]', '[Cl-]', '[Cl-]']\n", - " Origin = cell.reconstruct\n", - " Number of Ligands = 4\n", - " Number of Metals = 1\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 15\n", - " Formula = H10-C4-O\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = 0\n", - " Smiles = [H]C([H])([H])C([H])([H])OC([H])([H])C([H])([H])[H]\n", - " Origin = cell.reconstruct\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 7\n", - " Formula = H2-O-Cl3-Fe\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = -1\n", - " Smiles = ['[H]O[H]', '[Cl-]', '[Cl-]', '[Cl-]']\n", - " Origin = cell.reconstruct\n", - " Number of Ligands = 4\n", - " Number of Metals = 1\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 53\n", - " Formula = H36-C16-N\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = 1\n", - " Smiles = [H]C([H])([H])C([H])([H])C([H])([H])C([H])([H])[N+](C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])(C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H]\n", - " Origin = cell.reconstruct\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 53\n", - " Formula = H36-C16-N\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = 1\n", - " Smiles = [H]C([H])([H])C([H])([H])C([H])([H])C([H])([H])[N+](C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])(C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H]\n", - " Origin = cell.reconstruct\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 53\n", - " Formula = H36-C16-N\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = 1\n", - " Smiles = [H]C([H])([H])C([H])([H])C([H])([H])C([H])([H])[N+](C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])(C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H]\n", - " Origin = cell.reconstruct\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 53\n", - " Formula = H36-C16-N\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = 1\n", - " Smiles = [H]C([H])([H])C([H])([H])C([H])([H])C([H])([H])[N+](C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])(C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H]\n", - " Origin = cell.reconstruct\n", - " ---------------------------------------------------]" - ] - }, - "execution_count": 20, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "newcell.moleclist" - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "id": "7f30d977", - "metadata": { - "scrolled": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "------------- Cell2mol GROUP Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = group\n", - " Number of Atoms = 1\n", - " Formula = Cl\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_ligand\n", - " Number of Metals = 1\n", - "---------------------------------------------------\n", - "\n", - "['Fe', 'Cl'] [[8.9115248, 7.0245642, 7.8509248], [13.4461469, 6.6944761, 8.8941779]]\n", - "------------- Cell2mol GROUP Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = group\n", - " Number of Atoms = 1\n", - " Formula = Cl\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_ligand\n", - " Number of Metals = 1\n", - "---------------------------------------------------\n", - "\n", - "['Fe', 'Cl'] [[8.9115248, 7.0245642, 7.8509248], [7.4116689, 8.4886261, 6.9897009]]\n", - "------------- Cell2mol GROUP Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = group\n", - " Number of Atoms = 1\n", - " Formula = Cl\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_ligand\n", - " Number of Metals = 2\n", - "---------------------------------------------------\n", - "\n", - "['Fe', 'Cl'] [[8.9115248, 7.0245642, 7.8509248], [10.7763357, 6.921396, 6.3653056]]\n", - "------------- Cell2mol GROUP Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = group\n", - " Number of Atoms = 1\n", - " Formula = Cl\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_ligand\n", - " Number of Metals = 2\n", - "---------------------------------------------------\n", - "\n", - "['Fe', 'Cl'] [[8.9115248, 7.0245642, 7.8509248], [10.0814801, 8.2617062, 9.5185732]]\n", - "------------- Cell2mol GROUP Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = group\n", - " Number of Atoms = 1\n", - " Formula = Cl\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_ligand\n", - " Number of Metals = 1\n", - "---------------------------------------------------\n", - "\n", - "['Fe', 'Cl'] [[8.9115248, 7.0245642, 7.8509248], [12.3534909, 10.2389616, 7.2768814]]\n", - "------------- Cell2mol GROUP Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = group\n", - " Number of Atoms = 1\n", - " Formula = Cl\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_ligand\n", - " Number of Metals = 1\n", - "---------------------------------------------------\n", - "\n", - "['Fe', 'Cl'] [[8.9115248, 7.0245642, 7.8509248], [8.504325, 4.9441406, 8.6069974]]\n", - "coord_group=[------------- Cell2mol GROUP Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = group\n", - " Number of Atoms = 1\n", - " Formula = Cl\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_ligand\n", - " Number of Metals = 1\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol GROUP Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = group\n", - " Number of Atoms = 1\n", - " Formula = Cl\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_ligand\n", - " Number of Metals = 2\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol GROUP Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = group\n", - " Number of Atoms = 1\n", - " Formula = Cl\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_ligand\n", - " Number of Metals = 2\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol GROUP Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = group\n", - " Number of Atoms = 1\n", - " Formula = Cl\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_ligand\n", - " Number of Metals = 1\n", - "---------------------------------------------------\n", - "]\n", - "coord_nr=4\n", - "symbols=['Fe', 'Cl', 'Cl', 'Cl', 'Cl']\n", - "positions=[[8.9115248, 7.0245642, 7.8509248], [7.4116689, 8.4886261, 6.9897009], [10.7763357, 6.921396, 6.3653056], [10.0814801, 8.2617062, 9.5185732], [8.504325, 4.9441406, 8.6069974]]\n", - "4\n", - "[[1, 2], [1, 3], [1, 4], [1, 5]]\n", - "------------- Cell2mol GROUP Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = group\n", - " Number of Atoms = 1\n", - " Formula = Cl\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_ligand\n", - " Number of Metals = 1\n", - "---------------------------------------------------\n", - "\n", - "['Fe', 'Cl'] [[11.9462911, 8.1585379, 8.032954], [13.4461469, 6.6944761, 8.8941779]]\n", - "------------- Cell2mol GROUP Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = group\n", - " Number of Atoms = 1\n", - " Formula = Cl\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_ligand\n", - " Number of Metals = 1\n", - "---------------------------------------------------\n", - "\n", - "['Fe', 'Cl'] [[11.9462911, 8.1585379, 8.032954], [7.4116689, 8.4886261, 6.9897009]]\n", - "------------- Cell2mol GROUP Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = group\n", - " Number of Atoms = 1\n", - " Formula = Cl\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_ligand\n", - " Number of Metals = 2\n", - "---------------------------------------------------\n", - "\n", - "['Fe', 'Cl'] [[11.9462911, 8.1585379, 8.032954], [10.7763357, 6.921396, 6.3653056]]\n", - "------------- Cell2mol GROUP Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = group\n", - " Number of Atoms = 1\n", - " Formula = Cl\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_ligand\n", - " Number of Metals = 2\n", - "---------------------------------------------------\n", - "\n", - "['Fe', 'Cl'] [[11.9462911, 8.1585379, 8.032954], [10.0814801, 8.2617062, 9.5185732]]\n", - "------------- Cell2mol GROUP Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = group\n", - " Number of Atoms = 1\n", - " Formula = Cl\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_ligand\n", - " Number of Metals = 1\n", - "---------------------------------------------------\n", - "\n", - "['Fe', 'Cl'] [[11.9462911, 8.1585379, 8.032954], [12.3534909, 10.2389616, 7.2768814]]\n", - "------------- Cell2mol GROUP Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = group\n", - " Number of Atoms = 1\n", - " Formula = Cl\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_ligand\n", - " Number of Metals = 1\n", - "---------------------------------------------------\n", - "\n", - "['Fe', 'Cl'] [[11.9462911, 8.1585379, 8.032954], [8.504325, 4.9441406, 8.6069974]]\n", - "coord_group=[------------- Cell2mol GROUP Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = group\n", - " Number of Atoms = 1\n", - " Formula = Cl\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_ligand\n", - " Number of Metals = 1\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol GROUP Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = group\n", - " Number of Atoms = 1\n", - " Formula = Cl\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_ligand\n", - " Number of Metals = 2\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol GROUP Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = group\n", - " Number of Atoms = 1\n", - " Formula = Cl\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_ligand\n", - " Number of Metals = 2\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol GROUP Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = group\n", - " Number of Atoms = 1\n", - " Formula = Cl\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_ligand\n", - " Number of Metals = 1\n", - "---------------------------------------------------\n", - "]\n", - "coord_nr=4\n", - "symbols=['Fe', 'Cl', 'Cl', 'Cl', 'Cl']\n", - "positions=[[11.9462911, 8.1585379, 8.032954], [13.4461469, 6.6944761, 8.8941779], [10.7763357, 6.921396, 6.3653056], [10.0814801, 8.2617062, 9.5185732], [12.3534909, 10.2389616, 7.2768814]]\n", - "4\n", - "[[1, 2], [1, 3], [1, 4], [1, 5]]\n", - "------------- Cell2mol GROUP Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = group\n", - " Number of Atoms = 1\n", - " Formula = O\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_ligand\n", - " Number of Metals = 1\n", - "---------------------------------------------------\n", - "\n", - "['Fe', 'O'] [[5.1795484, 2.1869193, 1.3234448], [3.702535, 1.3810959, 0.1385074]]\n", - "------------- Cell2mol GROUP Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = group\n", - " Number of Atoms = 1\n", - " Formula = Cl\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_ligand\n", - " Number of Metals = 1\n", - "---------------------------------------------------\n", - "\n", - "['Fe', 'Cl'] [[5.1795484, 2.1869193, 1.3234448], [4.8568825, 4.4277939, 1.0300695]]\n", - "------------- Cell2mol GROUP Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = group\n", - " Number of Atoms = 1\n", - " Formula = Cl\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_ligand\n", - " Number of Metals = 1\n", - "---------------------------------------------------\n", - "\n", - "['Fe', 'Cl'] [[5.1795484, 2.1869193, 1.3234448], [7.250637, 1.6225847, 0.4599971]]\n", - "------------- Cell2mol GROUP Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = group\n", - " Number of Atoms = 1\n", - " Formula = Cl\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_ligand\n", - " Number of Metals = 1\n", - "---------------------------------------------------\n", - "\n", - "['Fe', 'Cl'] [[5.1795484, 2.1869193, 1.3234448], [4.8139984, 1.1805653, 3.3330731]]\n", - "coord_group=[------------- Cell2mol GROUP Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = group\n", - " Number of Atoms = 1\n", - " Formula = O\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_ligand\n", - " Number of Metals = 1\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol GROUP Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = group\n", - " Number of Atoms = 1\n", - " Formula = Cl\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_ligand\n", - " Number of Metals = 1\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol GROUP Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = group\n", - " Number of Atoms = 1\n", - " Formula = Cl\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_ligand\n", - " Number of Metals = 1\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol GROUP Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = group\n", - " Number of Atoms = 1\n", - " Formula = Cl\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_ligand\n", - " Number of Metals = 1\n", - "---------------------------------------------------\n", - "]\n", - "coord_nr=4\n", - "symbols=['Fe', 'O', 'Cl', 'Cl', 'Cl']\n", - "positions=[[5.1795484, 2.1869193, 1.3234448], [3.702535, 1.3810959, 0.1385074], [4.8568825, 4.4277939, 1.0300695], [7.250637, 1.6225847, 0.4599971], [4.8139984, 1.1805653, 3.3330731]]\n", - "4\n", - "[[1, 2], [1, 3], [1, 4], [1, 5]]\n", - "------------- Cell2mol GROUP Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = group\n", - " Number of Atoms = 1\n", - " Formula = O\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_ligand\n", - " Number of Metals = 1\n", - "---------------------------------------------------\n", - "\n", - "['Fe', 'O'] [[15.6782675, 12.9961829, 14.560434], [17.1552809, 13.8020062, 15.7453714]]\n", - "------------- Cell2mol GROUP Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = group\n", - " Number of Atoms = 1\n", - " Formula = Cl\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_ligand\n", - " Number of Metals = 1\n", - "---------------------------------------------------\n", - "\n", - "['Fe', 'Cl'] [[15.6782675, 12.9961829, 14.560434], [16.0009333, 10.7553082, 14.8538092]]\n", - "------------- Cell2mol GROUP Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = group\n", - " Number of Atoms = 1\n", - " Formula = Cl\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_ligand\n", - " Number of Metals = 1\n", - "---------------------------------------------------\n", - "\n", - "['Fe', 'Cl'] [[15.6782675, 12.9961829, 14.560434], [13.6071789, 13.5605175, 15.4238817]]\n", - "------------- Cell2mol GROUP Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = group\n", - " Number of Atoms = 1\n", - " Formula = Cl\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_ligand\n", - " Number of Metals = 1\n", - "---------------------------------------------------\n", - "\n", - "['Fe', 'Cl'] [[15.6782675, 12.9961829, 14.560434], [16.0438174, 14.0025369, 12.5508057]]\n", - "coord_group=[------------- Cell2mol GROUP Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = group\n", - " Number of Atoms = 1\n", - " Formula = O\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_ligand\n", - " Number of Metals = 1\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol GROUP Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = group\n", - " Number of Atoms = 1\n", - " Formula = Cl\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_ligand\n", - " Number of Metals = 1\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol GROUP Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = group\n", - " Number of Atoms = 1\n", - " Formula = Cl\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_ligand\n", - " Number of Metals = 1\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol GROUP Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = group\n", - " Number of Atoms = 1\n", - " Formula = Cl\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_ligand\n", - " Number of Metals = 1\n", - "---------------------------------------------------\n", - "]\n", - "coord_nr=4\n", - "symbols=['Fe', 'O', 'Cl', 'Cl', 'Cl']\n", - "positions=[[15.6782675, 12.9961829, 14.560434], [17.1552809, 13.8020062, 15.7453714], [16.0009333, 10.7553082, 14.8538092], [13.6071789, 13.5605175, 15.4238817], [16.0438174, 14.0025369, 12.5508057]]\n", - "4\n", - "[[1, 2], [1, 3], [1, 4], [1, 5]]\n" - ] - }, - { - "data": { - "text/plain": [ - "[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 8\n", - " Formula = Cl6-Fe2\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = -2\n", - " Spin = None\n", - " Smiles = ['[Cl-]', '[Cl-]', '[Cl-]', '[Cl-]', '[Cl-]', '[Cl-]']\n", - " Origin = cell.reconstruct\n", - " Number of Ligands = 6\n", - " Number of Metals = 2\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 15\n", - " Formula = H10-C4-O\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = 0\n", - " Spin = 1\n", - " Smiles = [H]C([H])([H])C([H])([H])OC([H])([H])C([H])([H])[H]\n", - " Origin = cell.reconstruct\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 7\n", - " Formula = H2-O-Cl3-Fe\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = -1\n", - " Spin = 5\n", - " Smiles = ['[H]O[H]', '[Cl-]', '[Cl-]', '[Cl-]']\n", - " Origin = cell.reconstruct\n", - " Number of Ligands = 4\n", - " Number of Metals = 1\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 15\n", - " Formula = H10-C4-O\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = 0\n", - " Spin = 1\n", - " Smiles = [H]C([H])([H])C([H])([H])OC([H])([H])C([H])([H])[H]\n", - " Origin = cell.reconstruct\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 7\n", - " Formula = H2-O-Cl3-Fe\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = -1\n", - " Spin = 5\n", - " Smiles = ['[H]O[H]', '[Cl-]', '[Cl-]', '[Cl-]']\n", - " Origin = cell.reconstruct\n", - " Number of Ligands = 4\n", - " Number of Metals = 1\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 53\n", - " Formula = H36-C16-N\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = 1\n", - " Spin = 1\n", - " Smiles = [H]C([H])([H])C([H])([H])C([H])([H])C([H])([H])[N+](C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])(C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H]\n", - " Origin = cell.reconstruct\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 53\n", - " Formula = H36-C16-N\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = 1\n", - " Spin = 1\n", - " Smiles = [H]C([H])([H])C([H])([H])C([H])([H])C([H])([H])[N+](C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])(C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H]\n", - " Origin = cell.reconstruct\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 53\n", - " Formula = H36-C16-N\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = 1\n", - " Spin = 1\n", - " Smiles = [H]C([H])([H])C([H])([H])C([H])([H])C([H])([H])[N+](C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])(C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H]\n", - " Origin = cell.reconstruct\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 53\n", - " Formula = H36-C16-N\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = 1\n", - " Spin = 1\n", - " Smiles = [H]C([H])([H])C([H])([H])C([H])([H])C([H])([H])[N+](C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])(C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H])C([H])([H])C([H])([H])C([H])([H])C([H])([H])[H]\n", - " Origin = cell.reconstruct\n", - " ---------------------------------------------------]" - ] - }, - "execution_count": 21, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "newcell.assign_spin(debug=2)" - ] - }, - { - "cell_type": "code", - "execution_count": 22, - "id": "c261aa9e", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Fe 5\n", - "Fe 5\n", - "Fe 5\n", - "Fe 5\n" - ] - } - ], - "source": [ - "for mol in newcell.moleclist:\n", - " if mol.iscomplex:\n", - " for met in mol.metals:\n", - " print(met.label, met.spin)" - ] - }, - { - "cell_type": "code", - "execution_count": 23, - "id": "6a57c925", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "SAVING cell2mol CELL object to INOVAL/INOVAL.cell\n" - ] - } - ], - "source": [ - "newcell.save(\"INOVAL/INOVAL.cell\")" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "cell2mol", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.10.6" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/cell2mol/test/test_one_by_one_YOBCUO.ipynb b/cell2mol/test/test_one_by_one_YOBCUO.ipynb deleted file mode 100644 index de5f553c6..000000000 --- a/cell2mol/test/test_one_by_one_YOBCUO.ipynb +++ /dev/null @@ -1,3637 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 1, - "id": "4b985e29", - "metadata": {}, - "outputs": [], - "source": [ - "import cell2mol\n", - "import os\n", - "from cell2mol.elementdata import ElementData\n", - "# from cell2mol.read_write import writexyz\n", - "elemdatabase = ElementData()" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "b06260dd", - "metadata": {}, - "outputs": [], - "source": [ - "infopath = \"YOBCUO/YOBCUO.info\"" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "bc3b2bd0", - "metadata": {}, - "outputs": [], - "source": [ - "from cell2mol.read_write import readinfo\n", - "from cell2mol.classes import cell\n", - "from cell2mol.cell_reconstruction import classify_fragments, fragments_reconstruct\n", - "from cell2mol.charge_assignment import *" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "23e75d0d", - "metadata": {}, - "outputs": [], - "source": [ - "name = \"YOBCUO\"" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "id": "48e219ea", - "metadata": {}, - "outputs": [], - "source": [ - "debug=0" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "id": "09c5cef3", - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "INITIATING cell object from input\n", - "MOLECULE.SPLIT COMPLEX: labels=['Ni', 'Br', 'S', 'N', 'N', 'O', 'O', 'O', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'C', 'H', 'C', 'C', 'H', 'C', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H']\n", - "MOLECULE.SPLIT COMPLEX: metal_idx=[0]\n", - "MOLECULE.SPLIT COMPLEX: rest_idx=[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80]\n", - "SPLIT COMPLEX: rest labels: ['Br', 'S', 'N', 'N', 'O', 'O', 'O', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'C', 'H', 'C', 'C', 'H', 'C', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H']\n", - "SPLIT COMPLEX: rest coord: [[4.012023394278142, 4.750791406668023, 4.714416770700044], [5.949426487810387, 1.2014430849788849, 2.5457174636797735], [6.0568882968445825, 2.721592986760149, 6.563471553451206], [6.177930194174854, 1.2175254761223722, 4.145939863080052], [5.197105007489062, 2.454953815632631, 2.384935308078946], [7.190579802393569, 1.0915384340082355, 1.818198207366575], [7.3303039573833075, 4.040592100379413, 3.9875574411449084], [5.430248167258659, 3.544461820336439, 7.594157162862482], [5.885595043772907, 4.8398922795653805, 7.822731794518884], [5.242405259096973, 5.606131419886057, 8.804222863783638], [5.564374850873971, 6.476946804544374, 9.007000358533936], [4.133608773813493, 5.1019640228942515, 9.486347158254315], [3.691058867510802, 5.636191278278275, 10.134875181405414], [3.685318363639092, 3.832467898481009, 9.21617714305939], [2.9324076260189207, 3.498252384574955, 9.688924675199138], [4.310922511527051, 3.0128272578947026, 8.256083698980317], [7.081251517288205, 5.429647909566654, 7.066015778606529], [7.1532335009583035, 4.932039470483259, 6.201311747738395], [6.9070098474014205, 6.897131247997751, 6.719254263915192], [6.051561357468108, 7.025404985609995, 6.259305311325758], [7.639628121071289, 7.18351894386999, 6.135319071932086], [6.919560235599224, 7.43025836103706, 7.543162822466697], [8.374488403166609, 5.179497596993124, 7.833130640403513], [8.354084487642726, 5.676870902078801, 8.677036979502386], [9.136364225877227, 5.4794625219152735, 7.2951903436793515], [8.462725377923515, 4.221772010332543, 8.02110977754876], [3.6735036067175417, 1.6767421734412897, 7.8899243371580345], [4.263067942365968, 1.2293257598889535, 7.217198999544621], [2.302040466151859, 1.9089399827965807, 7.235197002037251], [1.673715015312245, 2.251141573156514, 7.905122650374033], [1.9645042149029748, 1.0621492005644193, 6.8732371741299145], [2.3928918965897616, 2.561210672781133, 6.509277568167842], [3.5426010666649983, 0.7401995537343833, 9.098190237829927], [4.433243989419275, 0.5498207779510305, 9.460949976959158], [3.1182658918783464, -0.09629753914247496, 8.81902122138869], [2.9941333115605593, 1.1708949921888254, 9.786913799881235], [6.680216526688073, 1.6796776149834785, 6.985024767389694], [6.807307213759941, 1.6335434818289327, 7.9251204309214], [7.221755082758913, 0.5564235242884544, 6.220909572674815], [7.980932220230586, -0.3775611386562501, 6.943229406045698], [8.118638148072712, -0.23084020403466066, 7.87112642344351], [8.539283404241827, -1.506533164878776, 6.359894147479013], [9.080243822475072, -2.10361457725853, 6.863238283856232], [8.277068994232968, -1.7338425948979987, 5.008844093698923], [8.642660203660375, -2.5069922280743104, 4.593490191730117], [7.497132830030541, -0.8650884377465548, 4.2465286992333064], [7.3294096379077525, -1.0573989577745726, 3.3316302391912824], [6.952478914861996, 0.31238324861650246, 4.836863180991569], [4.873955172740991, -0.15240186322355243, 2.11136567019097], [3.6259286613003763, -0.2763591817644456, 2.789490408552173], [2.76361160732669, -1.2817741838985075, 2.406932866681049], [1.945578229771062, -1.3811773370912497, 2.879680398820796], [3.03940301395948, -2.1625951195527864, 1.3544496764731426], [4.2609793843556565, -2.0278328271604265, 0.7177203438449887], [4.471577244169171, -2.626274453105415, 0.00999889027368332], [5.20390858700859, -1.0474817405892927, 1.0680814590348524], [3.1699118869367844, 0.6349259265539631, 3.9315636556122815], [3.743630016028633, 0.49135927340171015, 4.713476875014317], [2.241891768125119, 0.4253913400102414, 4.165537688016472], [3.2323790465529374, 1.570384565035922, 3.6475951718396757], [2.046118375754139, -3.2317339717155766, 0.9592935328571778], [2.389829130140187, -3.7273798172429005, 0.18797913714524644], [1.1916241954758757, -2.813118322479124, 0.7239196558146724], [1.9128173539479125, -3.8472026213116, 1.709810236799848], [6.499227772778744, -1.0394078622404492, 0.258371324671977], [6.605268604043136, -0.16858692348126345, -0.17998002492629975], [6.463900738674405, -1.7444049986260475, -0.4199533914946995], [7.258875795164324, -1.1986966108298742, 0.8559050074272923], [8.684406569796144, 3.4702932870179106, 3.9789583955095407], [8.6538448030932, 2.493143635542384, 4.1395405733048944], [9.246321297716626, 3.8906174627646593, 4.677480870029058], [9.22774139441108, 3.7690886074794645, 2.602911116045242], [8.921382100078995, 3.10096859929669, 1.9397847130945642], [10.217064746049516, 3.800362441785969, 2.603711027267137], [8.623430568500558, 5.145132928914125, 2.329741433768214], [9.160834824154383, 5.85847059182421, 2.75769393748186], [8.571741618857212, 5.32187876071091, 1.357849299166195], [7.2383637606152895, 5.069833854013349, 2.9422734519340543], [6.980992810835878, 5.942649851763241, 3.3316302391912824], [6.567546649995907, 4.815734879788717, 2.2597492018524306]]\n", - "SPLIT COMPLEX: rest indices: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80]\n", - "SPLIT COMPLEX: rest radii: [1.2, 1.05, 0.71, 0.71, 0.66, 0.66, 0.66, 0.73, 0.73, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.73, 0.31, 0.73, 0.31, 0.31, 0.31, 0.73, 0.31, 0.31, 0.31, 0.73, 0.31, 0.73, 0.31, 0.31, 0.31, 0.73, 0.31, 0.31, 0.31, 0.73, 0.31, 0.73, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.73, 0.73, 0.73, 0.31, 0.73, 0.73, 0.31, 0.73, 0.73, 0.31, 0.31, 0.31, 0.73, 0.31, 0.31, 0.31, 0.73, 0.31, 0.31, 0.31, 0.73, 0.31, 0.31, 0.73, 0.31, 0.31, 0.73, 0.31, 0.31, 0.73, 0.31, 0.31]\n", - "SPLIT COMPLEX: splitting species with 80 atoms in block\n", - "labels=['Br', 'S', 'N', 'N', 'O', 'O', 'O', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'C', 'H', 'C', 'C', 'H', 'C', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] 80\n", - "indices=None\n", - "SPLIT COMPLEX: received 3 blocks\n", - "PREPARING BLOCK: [6, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79]\n", - "CREATING LIGAND: H8-C4-O\n", - "PREPARING BLOCK: [1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67]\n", - "CREATING LIGAND: H33-C28-N2-O2-S\n", - "PREPARING BLOCK: [0]\n", - "CREATING LIGAND: Br\n", - "LIGAND.SPLIT_LIGAND: self.indices=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]\n", - "LIGAND.SPLIT_LIGAND: conn_idx=[0]\n", - "LIGAND.SPLIT_LIGAND: conn_labels=['O']\n", - "LIGAND.SPLIT_LIGAND: conn_coord=[[7.3303039573833075, 4.040592100379413, 3.9875574411449084]]\n", - "LIGAND.SPLIT_LIGAND: conn_radii=[0.66]\n", - "blocklist=[[0]]\n", - "LIGAND.SPLIT_LIGAND: block=[0]\n", - "LIGAND.SPLIT_LIGAND: self.indices=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65]\n", - "LIGAND.SPLIT_LIGAND: conn_idx=[0, 1, 2, 3]\n", - "LIGAND.SPLIT_LIGAND: conn_labels=['S', 'N', 'N', 'O']\n", - "LIGAND.SPLIT_LIGAND: conn_coord=[[5.949426487810387, 1.2014430849788849, 2.5457174636797735], [6.0568882968445825, 2.721592986760149, 6.563471553451206], [6.177930194174854, 1.2175254761223722, 4.145939863080052], [5.197105007489062, 2.454953815632631, 2.384935308078946]]\n", - "LIGAND.SPLIT_LIGAND: conn_radii=[1.05, 0.71, 0.71, 0.66]\n", - "blocklist=[[0, 2, 3], [1]]\n", - "LIGAND.SPLIT_LIGAND: block=[0, 2, 3]\n", - "LIGAND.SPLIT_LIGAND: block=[1]\n", - "LIGAND.SPLIT_LIGAND: self.indices=[0]\n", - "LIGAND.SPLIT_LIGAND: conn_idx=[0]\n", - "LIGAND.SPLIT_LIGAND: conn_labels=['Br']\n", - "LIGAND.SPLIT_LIGAND: conn_coord=[[4.012023394278142, 4.750791406668023, 4.714416770700044]]\n", - "LIGAND.SPLIT_LIGAND: conn_radii=[1.2]\n", - "blocklist=[[0]]\n", - "LIGAND.SPLIT_LIGAND: block=[0]\n", - "LIGAND.Get_denticity: checking connectivity of ligand H8-C4-O\n", - "LIGAND.Get_denticity: initial connectivity is 1\n", - "Entering COORD_CORR_NONHAPTIC:\n", - "\tmconnec=1 in atom idx=0, label=O\n", - "\tevaluating coordination with metal \n", - "------------- Cell2mol METAL Object --------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Sub-Type = metal\n", - " Label = Ni\n", - " Atomic Number = 28\n", - " Index in Molecule = 0\n", - " Metal Adjacency (mconnec) = 6\n", - " Regular Adjacencies (connec) = 6\n", - "----------------------------------------------------\n", - "\n", - "ADD_ATOM: Metalist length 1\n", - "ADD_ATOM: Ligand Atoms 13\n", - "ADD_ATOM: site= 0\n", - "ADD_ATOM: evaluating apos=array([7.33030396, 4.0405921 , 3.98755744]) and tgt.coord=[5.665023451384952, 3.065812711707335, 4.60288914858738]\n", - "ADD_ATOM: received tmpconnec[posadded]=1\n", - "ADD_ATOM: Chosen Metal index None. H is added at site 0\n", - "\tconnectivity verified for atom 0 with label O\n", - "LIGAND.Get_denticity: final connectivity is 1\n", - "LIGAND.Get_denticity: checking connectivity of ligand H33-C28-N2-O2-S\n", - "LIGAND.Get_denticity: initial connectivity is 4\n", - "Entering COORD_CORR_NONHAPTIC:\n", - "\tmconnec=1 in atom idx=0, label=S\n", - "\tevaluating coordination with metal \n", - "------------- Cell2mol METAL Object --------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Sub-Type = metal\n", - " Label = Ni\n", - " Atomic Number = 28\n", - " Index in Molecule = 0\n", - " Metal Adjacency (mconnec) = 6\n", - " Regular Adjacencies (connec) = 6\n", - "----------------------------------------------------\n", - "\n", - "ADD_ATOM: Metalist length 1\n", - "ADD_ATOM: Ligand Atoms 66\n", - "ADD_ATOM: site= 0\n", - "ADD_ATOM: evaluating apos=array([5.94942649, 1.20144308, 2.54571746]) and tgt.coord=[5.665023451384952, 3.065812711707335, 4.60288914858738]\n", - "ADD_ATOM: received tmpconnec[posadded]=2\n", - "ADD_ATOM: Chosen Metal index None. H was added at site 0 but RESET due to connec=2\n", - "\tcorrecting mconnec of atom 0 with label S\n", - "ATOM.RESET_MCONN: resetting mconnec (and connec) for atom self.label='S'\n", - "ATOM.RESET_MCONN: updating ligand atoms and madjnum\n", - "ATOM.RESET_MCONN: initial lig.madjnum=array([1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0])\n", - "ATOM.RESET_MCONN: initial lig.madjmat=array([[0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " ...,\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0]], dtype=object)\n", - "ATOM.RESET_MCONN: final lig.madjnum=array([0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0])\n", - "ATOM.RESET_MCONN: final lig.madjmat=array([[-2, -2, -2, ..., -2, -2, -2],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " ...,\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0]], dtype=object)\n", - "ATOM.RESET_MCONN: updating molecule atoms and madjnum\n", - "GROUP.REMOVE_ATOM: deleting atom index=0 from group with 3 atoms\n", - "GROUP.REMOVE_ATOM. Group after removing atom:\n", - "------------- Cell2mol GROUP Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = group\n", - " Number of Atoms = 2\n", - " Formula = N-O\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_ligand\n", - " Number of Metals = 1\n", - "---------------------------------------------------\n", - "\n", - "\tmconnec=1 in atom idx=1, label=O\n", - "\tevaluating coordination with metal \n", - "------------- Cell2mol METAL Object --------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Sub-Type = metal\n", - " Label = Ni\n", - " Atomic Number = 28\n", - " Index in Molecule = 0\n", - " Metal Adjacency (mconnec) = 6\n", - " Regular Adjacencies (connec) = 6\n", - "----------------------------------------------------\n", - "\n", - "ADD_ATOM: Metalist length 1\n", - "ADD_ATOM: Ligand Atoms 66\n", - "ADD_ATOM: site= 1\n", - "ADD_ATOM: evaluating apos=array([6.0568883 , 2.72159299, 6.56347155]) and tgt.coord=[5.665023451384952, 3.065812711707335, 4.60288914858738]\n", - "ADD_ATOM: received tmpconnec[posadded]=1\n", - "ADD_ATOM: Chosen Metal index None. H is added at site 1\n", - "\tconnectivity verified for atom 1 with label O\n", - "Entering COORD_CORR_NONHAPTIC:\n", - "\tmconnec=1 in atom idx=0, label=N\n", - "\tevaluating coordination with metal \n", - "------------- Cell2mol METAL Object --------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Sub-Type = metal\n", - " Label = Ni\n", - " Atomic Number = 28\n", - " Index in Molecule = 0\n", - " Metal Adjacency (mconnec) = 6\n", - " Regular Adjacencies (connec) = 6\n", - "----------------------------------------------------\n", - "\n", - "ADD_ATOM: Metalist length 1\n", - "ADD_ATOM: Ligand Atoms 66\n", - "ADD_ATOM: site= 0\n", - "ADD_ATOM: evaluating apos=array([5.94942649, 1.20144308, 2.54571746]) and tgt.coord=[5.665023451384952, 3.065812711707335, 4.60288914858738]\n", - "ADD_ATOM: received tmpconnec[posadded]=2\n", - "ADD_ATOM: Chosen Metal index None. H was added at site 0 but RESET due to connec=2\n", - "\tcorrecting mconnec of atom 0 with label N\n", - "ATOM.RESET_MCONN: resetting mconnec (and connec) for atom self.label='N'\n", - "ATOM.RESET_MCONN: updating ligand atoms and madjnum\n", - "ATOM.RESET_MCONN: initial lig.madjnum=array([0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0])\n", - "ATOM.RESET_MCONN: initial lig.madjmat=array([[-2, -2, -2, ..., -2, -2, -2],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " ...,\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0]], dtype=object)\n", - "ATOM.RESET_MCONN: final lig.madjnum=array([0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0])\n", - "ATOM.RESET_MCONN: final lig.madjmat=array([[-2, -2, -2, ..., -2, -2, -2],\n", - " [-2, -2, -2, ..., -2, -2, -2],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " ...,\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0]], dtype=object)\n", - "ATOM.RESET_MCONN: updating molecule atoms and madjnum\n", - "GROUP.REMOVE_ATOM: deleting atom index=0 from group with 1 atoms\n", - "GROUP.REMOVE_ATOM. Group after removing atom:\n", - "------------- Cell2mol GROUP Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = group\n", - " Number of Atoms = 0\n", - " Formula = \n", - " Has Adjacency Matrix = YES\n", - " Origin = split_ligand\n", - " Number of Metals = 1\n", - "---------------------------------------------------\n", - "\n", - "LIGAND.Get_denticity: final connectivity is 2\n", - "LIGAND.Get_denticity: checking connectivity of ligand Br\n", - "LIGAND.Get_denticity: initial connectivity is 1\n", - "Entering COORD_CORR_NONHAPTIC:\n", - "\tmconnec=1 in atom idx=0, label=Br\n", - "\tevaluating coordination with metal \n", - "------------- Cell2mol METAL Object --------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Sub-Type = metal\n", - " Label = Ni\n", - " Atomic Number = 28\n", - " Index in Molecule = 0\n", - " Metal Adjacency (mconnec) = 6\n", - " Regular Adjacencies (connec) = 6\n", - "----------------------------------------------------\n", - "\n", - "ADD_ATOM: Metalist length 1\n", - "ADD_ATOM: Ligand Atoms 1\n", - "ADD_ATOM: site= 0\n", - "ADD_ATOM: evaluating apos=array([4.01202339, 4.75079141, 4.71441677]) and tgt.coord=[5.665023451384952, 3.065812711707335, 4.60288914858738]\n", - "ADD_ATOM: received tmpconnec[posadded]=1\n", - "ADD_ATOM: Chosen Metal index None. H is added at site 0\n", - "\tconnectivity verified for atom 0 with label Br\n", - "LIGAND.Get_denticity: final connectivity is 1\n" - ] - } - ], - "source": [ - "print(f\"INITIATING cell object from input\") \n", - "\n", - "# Reads reference molecules from info file, as well as labels and coordinates\n", - "labels, pos, ref_labels, ref_fracs, cellvec, cellparam = readinfo(infopath)\n", - "\n", - "# Initiates cell\n", - "newcell = cell(name, labels, pos, cellvec, cellparam)\n", - "newcell.get_reference_molecules(ref_labels, ref_fracs, debug=debug) \n", - "newcell.assess_errors()" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "id": "8e7b1211", - "metadata": { - "scrolled": false - }, - "outputs": [ - { - "data": { - "text/plain": [ - "False" - ] - }, - "execution_count": 7, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "newcell.check_missing_H(debug=debug) " - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "id": "ef78dbd0", - "metadata": { - "scrolled": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "CLASSIFY_FRAGMENTS. 24 Blocks sorted as (Molec, Frag, H): 0 8 16\n", - "\n", - "##############################################\n", - "FRAG_RECONSTRUCT. 8 molecules submitted to SEQUENTIAL with Heavy\n", - "##############################################\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 8\n", - " Formula = H2-C6\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 8\n", - " Formula = H2-C6\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 8\n", - " Formula = H2-C6\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 4\n", - " Formula = H3-C\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 8\n", - " Formula = H2-C6\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 4\n", - " Formula = H3-C\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 8\n", - " Formula = H2-C6\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 17\n", - " Formula = H8-C9\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 8\n", - " Formula = H2-C6\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 17\n", - " Formula = H8-C9\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 8\n", - " Formula = H2-C6\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 44\n", - " Formula = H20-C16-N2-O3-S-Ni-Br\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - " Number of Ligands = 4\n", - " Number of Metals = 1\n", - "---------------------------------------------------\n", - "]\n", - "goodlist=[]\n", - "avglist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 52\n", - " Formula = H22-C22-N2-O3-S-Ni-Br\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - "]\n", - "badlist=[]\n", - "goodlist=[]\n", - "avglist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 69\n", - " Formula = H30-C31-N2-O3-S-Ni-Br\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - "]\n", - "badlist=[]\n", - "goodlist=[]\n", - "avglist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 73\n", - " Formula = H33-C32-N2-O3-S-Ni-Br\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - "]\n", - "badlist=[]\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 73\n", - " Formula = H33-C32-N2-O3-S-Ni-Br\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 4\n", - " Formula = H3-C\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 73\n", - " Formula = H33-C32-N2-O3-S-Ni-Br\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 8\n", - " Formula = H2-C6\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 8\n", - " Formula = H2-C6\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 73\n", - " Formula = H33-C32-N2-O3-S-Ni-Br\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - "]\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 73\n", - " Formula = H33-C32-N2-O3-S-Ni-Br\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 4\n", - " Formula = H3-C\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "goodlist=[]\n", - "avglist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 48\n", - " Formula = H23-C17-N2-O3-S-Ni-Br\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - "]\n", - "badlist=[]\n", - "goodlist=[]\n", - "avglist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 56\n", - " Formula = H25-C23-N2-O3-S-Ni-Br\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - "]\n", - "badlist=[]\n", - "goodlist=[]\n", - "avglist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 73\n", - " Formula = H33-C32-N2-O3-S-Ni-Br\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - "]\n", - "badlist=[]\n", - "FRAG_RECONSTRUCT. 0 molecules and 2 fragments out of SEQUENTIAL with Heavy\n", - "FRAG_RECONSTRUCT. 18 molecules submitted to sequential with All\n", - "H33-C32-N2-O3-S-Ni-Br Rec. Fragment ['Ni', 'Br', 'S', 'N', 'N', 'O', 'O', 'O', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'C', 'C', 'C', 'H', 'C', 'C', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H']\n", - "H33-C32-N2-O3-S-Ni-Br Rec. Fragment ['Ni', 'Br', 'S', 'N', 'N', 'O', 'O', 'O', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'C', 'C', 'C', 'H', 'C', 'C', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'H']\n", - "H H ['H']\n", - "H H ['H']\n", - "H H ['H']\n", - "H H ['H']\n", - "H H ['H']\n", - "H H ['H']\n", - "H H ['H']\n", - "H H ['H']\n", - "H H ['H']\n", - "H H ['H']\n", - "H H ['H']\n", - "H H ['H']\n", - "H H ['H']\n", - "H H ['H']\n", - "H H ['H']\n", - "H H ['H']\n", - "sublist 2 ['H33-C32-N2-O3-S-Ni-Br', 'H']\n", - "list1 2 ['H33-C32-N2-O3-S-Ni-Br', 'H33-C32-N2-O3-S-Ni-Br']\n", - "list2 16 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 1 ['H33-C32-N2-O3-S-Ni-Br']\n", - "keeplist2 15 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 73\n", - " Formula = H33-C32-N2-O3-S-Ni-Br\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = H\n", - " Number of Atoms = 1\n", - " Formula = H\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "sublist 2 ['H33-C32-N2-O3-S-Ni-Br', 'H']\n", - "list1 2 ['H33-C32-N2-O3-S-Ni-Br', 'H33-C32-N2-O3-S-Ni-Br']\n", - "list2 16 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 1 ['H33-C32-N2-O3-S-Ni-Br']\n", - "keeplist2 15 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Heavy\n", - " Number of Atoms = 73\n", - " Formula = H33-C32-N2-O3-S-Ni-Br\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = H\n", - " Number of Atoms = 1\n", - " Formula = H\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "sublist 2 ['H33-C32-N2-O3-S-Ni-Br', 'H']\n", - "list1 2 ['H33-C32-N2-O3-S-Ni-Br', 'H33-C32-N2-O3-S-Ni-Br']\n", - "list2 16 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 1 ['H33-C32-N2-O3-S-Ni-Br']\n", - "keeplist2 15 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "goodlist=[]\n", - "avglist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 74\n", - " Formula = H34-C32-N2-O3-S-Ni-Br\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - "]\n", - "badlist=[]\n", - "sublist 2 ['H34-C32-N2-O3-S-Ni-Br', 'H']\n", - "list1 2 ['H34-C32-N2-O3-S-Ni-Br', 'H33-C32-N2-O3-S-Ni-Br']\n", - "list2 15 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 1 ['H33-C32-N2-O3-S-Ni-Br']\n", - "keeplist2 14 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 74\n", - " Formula = H34-C32-N2-O3-S-Ni-Br\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = H\n", - " Number of Atoms = 1\n", - " Formula = H\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "sublist 2 ['H34-C32-N2-O3-S-Ni-Br', 'H']\n", - "list1 2 ['H34-C32-N2-O3-S-Ni-Br', 'H33-C32-N2-O3-S-Ni-Br']\n", - "list2 15 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 1 ['H33-C32-N2-O3-S-Ni-Br']\n", - "keeplist2 14 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 74\n", - " Formula = H34-C32-N2-O3-S-Ni-Br\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = H\n", - " Number of Atoms = 1\n", - " Formula = H\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "sublist 2 ['H34-C32-N2-O3-S-Ni-Br', 'H']\n", - "list1 2 ['H34-C32-N2-O3-S-Ni-Br', 'H33-C32-N2-O3-S-Ni-Br']\n", - "list2 15 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 1 ['H33-C32-N2-O3-S-Ni-Br']\n", - "keeplist2 14 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "goodlist=[]\n", - "avglist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 75\n", - " Formula = H35-C32-N2-O3-S-Ni-Br\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - "]\n", - "badlist=[]\n", - "sublist 2 ['H35-C32-N2-O3-S-Ni-Br', 'H']\n", - "list1 2 ['H35-C32-N2-O3-S-Ni-Br', 'H33-C32-N2-O3-S-Ni-Br']\n", - "list2 14 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 1 ['H33-C32-N2-O3-S-Ni-Br']\n", - "keeplist2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 75\n", - " Formula = H35-C32-N2-O3-S-Ni-Br\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = H\n", - " Number of Atoms = 1\n", - " Formula = H\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "sublist 2 ['H35-C32-N2-O3-S-Ni-Br', 'H']\n", - "list1 2 ['H35-C32-N2-O3-S-Ni-Br', 'H33-C32-N2-O3-S-Ni-Br']\n", - "list2 14 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 1 ['H33-C32-N2-O3-S-Ni-Br']\n", - "keeplist2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 75\n", - " Formula = H35-C32-N2-O3-S-Ni-Br\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = H\n", - " Number of Atoms = 1\n", - " Formula = H\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "sublist 2 ['H35-C32-N2-O3-S-Ni-Br', 'H']\n", - "list1 2 ['H35-C32-N2-O3-S-Ni-Br', 'H33-C32-N2-O3-S-Ni-Br']\n", - "list2 14 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 1 ['H33-C32-N2-O3-S-Ni-Br']\n", - "keeplist2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 75\n", - " Formula = H35-C32-N2-O3-S-Ni-Br\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = H\n", - " Number of Atoms = 1\n", - " Formula = H\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "sublist 2 ['H35-C32-N2-O3-S-Ni-Br', 'H']\n", - "list1 2 ['H35-C32-N2-O3-S-Ni-Br', 'H33-C32-N2-O3-S-Ni-Br']\n", - "list2 14 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 1 ['H33-C32-N2-O3-S-Ni-Br']\n", - "keeplist2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "goodlist=[]\n", - "avglist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 76\n", - " Formula = H36-C32-N2-O3-S-Ni-Br\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - "]\n", - "badlist=[]\n", - "sublist 2 ['H36-C32-N2-O3-S-Ni-Br', 'H']\n", - "list1 2 ['H36-C32-N2-O3-S-Ni-Br', 'H33-C32-N2-O3-S-Ni-Br']\n", - "list2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 1 ['H33-C32-N2-O3-S-Ni-Br']\n", - "keeplist2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 76\n", - " Formula = H36-C32-N2-O3-S-Ni-Br\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = H\n", - " Number of Atoms = 1\n", - " Formula = H\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "sublist 2 ['H36-C32-N2-O3-S-Ni-Br', 'H']\n", - "list1 2 ['H36-C32-N2-O3-S-Ni-Br', 'H33-C32-N2-O3-S-Ni-Br']\n", - "list2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 1 ['H33-C32-N2-O3-S-Ni-Br']\n", - "keeplist2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 76\n", - " Formula = H36-C32-N2-O3-S-Ni-Br\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = H\n", - " Number of Atoms = 1\n", - " Formula = H\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "sublist 2 ['H36-C32-N2-O3-S-Ni-Br', 'H']\n", - "list1 2 ['H36-C32-N2-O3-S-Ni-Br', 'H33-C32-N2-O3-S-Ni-Br']\n", - "list2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 1 ['H33-C32-N2-O3-S-Ni-Br']\n", - "keeplist2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 76\n", - " Formula = H36-C32-N2-O3-S-Ni-Br\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = H\n", - " Number of Atoms = 1\n", - " Formula = H\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "sublist 2 ['H36-C32-N2-O3-S-Ni-Br', 'H']\n", - "list1 2 ['H36-C32-N2-O3-S-Ni-Br', 'H33-C32-N2-O3-S-Ni-Br']\n", - "list2 13 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 1 ['H33-C32-N2-O3-S-Ni-Br']\n", - "keeplist2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "goodlist=[]\n", - "avglist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 77\n", - " Formula = H37-C32-N2-O3-S-Ni-Br\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - "]\n", - "badlist=[]\n", - "sublist 2 ['H37-C32-N2-O3-S-Ni-Br', 'H']\n", - "list1 2 ['H37-C32-N2-O3-S-Ni-Br', 'H33-C32-N2-O3-S-Ni-Br']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 1 ['H33-C32-N2-O3-S-Ni-Br']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 77\n", - " Formula = H37-C32-N2-O3-S-Ni-Br\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = H\n", - " Number of Atoms = 1\n", - " Formula = H\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "sublist 2 ['H37-C32-N2-O3-S-Ni-Br', 'H']\n", - "list1 2 ['H37-C32-N2-O3-S-Ni-Br', 'H33-C32-N2-O3-S-Ni-Br']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 1 ['H33-C32-N2-O3-S-Ni-Br']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 77\n", - " Formula = H37-C32-N2-O3-S-Ni-Br\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = H\n", - " Number of Atoms = 1\n", - " Formula = H\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "sublist 2 ['H37-C32-N2-O3-S-Ni-Br', 'H']\n", - "list1 2 ['H37-C32-N2-O3-S-Ni-Br', 'H33-C32-N2-O3-S-Ni-Br']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 1 ['H33-C32-N2-O3-S-Ni-Br']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 77\n", - " Formula = H37-C32-N2-O3-S-Ni-Br\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = H\n", - " Number of Atoms = 1\n", - " Formula = H\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "sublist 2 ['H37-C32-N2-O3-S-Ni-Br', 'H']\n", - "list1 2 ['H37-C32-N2-O3-S-Ni-Br', 'H33-C32-N2-O3-S-Ni-Br']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 1 ['H33-C32-N2-O3-S-Ni-Br']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 77\n", - " Formula = H37-C32-N2-O3-S-Ni-Br\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = H\n", - " Number of Atoms = 1\n", - " Formula = H\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "sublist 2 ['H37-C32-N2-O3-S-Ni-Br', 'H']\n", - "list1 2 ['H37-C32-N2-O3-S-Ni-Br', 'H33-C32-N2-O3-S-Ni-Br']\n", - "list2 12 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 1 ['H33-C32-N2-O3-S-Ni-Br']\n", - "keeplist2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "goodlist=[]\n", - "avglist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 78\n", - " Formula = H38-C32-N2-O3-S-Ni-Br\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - "]\n", - "badlist=[]\n", - "sublist 2 ['H38-C32-N2-O3-S-Ni-Br', 'H']\n", - "list1 2 ['H38-C32-N2-O3-S-Ni-Br', 'H33-C32-N2-O3-S-Ni-Br']\n", - "list2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 1 ['H33-C32-N2-O3-S-Ni-Br']\n", - "keeplist2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 78\n", - " Formula = H38-C32-N2-O3-S-Ni-Br\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = H\n", - " Number of Atoms = 1\n", - " Formula = H\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "sublist 2 ['H38-C32-N2-O3-S-Ni-Br', 'H']\n", - "list1 2 ['H38-C32-N2-O3-S-Ni-Br', 'H33-C32-N2-O3-S-Ni-Br']\n", - "list2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 1 ['H33-C32-N2-O3-S-Ni-Br']\n", - "keeplist2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 78\n", - " Formula = H38-C32-N2-O3-S-Ni-Br\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = H\n", - " Number of Atoms = 1\n", - " Formula = H\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "sublist 2 ['H38-C32-N2-O3-S-Ni-Br', 'H']\n", - "list1 2 ['H38-C32-N2-O3-S-Ni-Br', 'H33-C32-N2-O3-S-Ni-Br']\n", - "list2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 1 ['H33-C32-N2-O3-S-Ni-Br']\n", - "keeplist2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 78\n", - " Formula = H38-C32-N2-O3-S-Ni-Br\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = H\n", - " Number of Atoms = 1\n", - " Formula = H\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "sublist 2 ['H38-C32-N2-O3-S-Ni-Br', 'H']\n", - "list1 2 ['H38-C32-N2-O3-S-Ni-Br', 'H33-C32-N2-O3-S-Ni-Br']\n", - "list2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 1 ['H33-C32-N2-O3-S-Ni-Br']\n", - "keeplist2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 78\n", - " Formula = H38-C32-N2-O3-S-Ni-Br\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = H\n", - " Number of Atoms = 1\n", - " Formula = H\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "sublist 2 ['H38-C32-N2-O3-S-Ni-Br', 'H']\n", - "list1 2 ['H38-C32-N2-O3-S-Ni-Br', 'H33-C32-N2-O3-S-Ni-Br']\n", - "list2 11 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 1 ['H33-C32-N2-O3-S-Ni-Br']\n", - "keeplist2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "goodlist=[]\n", - "avglist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 79\n", - " Formula = H39-C32-N2-O3-S-Ni-Br\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - "]\n", - "badlist=[]\n", - "sublist 2 ['H39-C32-N2-O3-S-Ni-Br', 'H']\n", - "list1 2 ['H39-C32-N2-O3-S-Ni-Br', 'H33-C32-N2-O3-S-Ni-Br']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 1 ['H33-C32-N2-O3-S-Ni-Br']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 79\n", - " Formula = H39-C32-N2-O3-S-Ni-Br\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = H\n", - " Number of Atoms = 1\n", - " Formula = H\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "sublist 2 ['H39-C32-N2-O3-S-Ni-Br', 'H']\n", - "list1 2 ['H39-C32-N2-O3-S-Ni-Br', 'H33-C32-N2-O3-S-Ni-Br']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 1 ['H33-C32-N2-O3-S-Ni-Br']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 79\n", - " Formula = H39-C32-N2-O3-S-Ni-Br\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = H\n", - " Number of Atoms = 1\n", - " Formula = H\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "sublist 2 ['H39-C32-N2-O3-S-Ni-Br', 'H']\n", - "list1 2 ['H39-C32-N2-O3-S-Ni-Br', 'H33-C32-N2-O3-S-Ni-Br']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 1 ['H33-C32-N2-O3-S-Ni-Br']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 79\n", - " Formula = H39-C32-N2-O3-S-Ni-Br\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = H\n", - " Number of Atoms = 1\n", - " Formula = H\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "sublist 2 ['H39-C32-N2-O3-S-Ni-Br', 'H']\n", - "list1 2 ['H39-C32-N2-O3-S-Ni-Br', 'H33-C32-N2-O3-S-Ni-Br']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 1 ['H33-C32-N2-O3-S-Ni-Br']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 79\n", - " Formula = H39-C32-N2-O3-S-Ni-Br\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = H\n", - " Number of Atoms = 1\n", - " Formula = H\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "sublist 2 ['H39-C32-N2-O3-S-Ni-Br', 'H']\n", - "list1 2 ['H39-C32-N2-O3-S-Ni-Br', 'H33-C32-N2-O3-S-Ni-Br']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 1 ['H33-C32-N2-O3-S-Ni-Br']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 79\n", - " Formula = H39-C32-N2-O3-S-Ni-Br\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = H\n", - " Number of Atoms = 1\n", - " Formula = H\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "sublist 2 ['H39-C32-N2-O3-S-Ni-Br', 'H']\n", - "list1 2 ['H39-C32-N2-O3-S-Ni-Br', 'H33-C32-N2-O3-S-Ni-Br']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 1 ['H33-C32-N2-O3-S-Ni-Br']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 79\n", - " Formula = H39-C32-N2-O3-S-Ni-Br\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = H\n", - " Number of Atoms = 1\n", - " Formula = H\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "sublist 2 ['H39-C32-N2-O3-S-Ni-Br', 'H']\n", - "list1 2 ['H39-C32-N2-O3-S-Ni-Br', 'H33-C32-N2-O3-S-Ni-Br']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 1 ['H33-C32-N2-O3-S-Ni-Br']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 79\n", - " Formula = H39-C32-N2-O3-S-Ni-Br\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = H\n", - " Number of Atoms = 1\n", - " Formula = H\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "sublist 2 ['H39-C32-N2-O3-S-Ni-Br', 'H']\n", - "list1 2 ['H39-C32-N2-O3-S-Ni-Br', 'H33-C32-N2-O3-S-Ni-Br']\n", - "list2 10 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 1 ['H33-C32-N2-O3-S-Ni-Br']\n", - "keeplist2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "goodlist=[]\n", - "avglist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 80\n", - " Formula = H40-C32-N2-O3-S-Ni-Br\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - "]\n", - "badlist=[]\n", - "sublist 2 ['H40-C32-N2-O3-S-Ni-Br', 'H']\n", - "list1 2 ['H40-C32-N2-O3-S-Ni-Br', 'H33-C32-N2-O3-S-Ni-Br']\n", - "list2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 1 ['H33-C32-N2-O3-S-Ni-Br']\n", - "keeplist2 8 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 80\n", - " Formula = H40-C32-N2-O3-S-Ni-Br\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = H\n", - " Number of Atoms = 1\n", - " Formula = H\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "sublist 2 ['H40-C32-N2-O3-S-Ni-Br', 'H']\n", - "list1 2 ['H40-C32-N2-O3-S-Ni-Br', 'H33-C32-N2-O3-S-Ni-Br']\n", - "list2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 1 ['H33-C32-N2-O3-S-Ni-Br']\n", - "keeplist2 8 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 80\n", - " Formula = H40-C32-N2-O3-S-Ni-Br\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = H\n", - " Number of Atoms = 1\n", - " Formula = H\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "sublist 2 ['H40-C32-N2-O3-S-Ni-Br', 'H']\n", - "list1 2 ['H40-C32-N2-O3-S-Ni-Br', 'H33-C32-N2-O3-S-Ni-Br']\n", - "list2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 1 ['H33-C32-N2-O3-S-Ni-Br']\n", - "keeplist2 8 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 80\n", - " Formula = H40-C32-N2-O3-S-Ni-Br\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = H\n", - " Number of Atoms = 1\n", - " Formula = H\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "sublist 2 ['H40-C32-N2-O3-S-Ni-Br', 'H']\n", - "list1 2 ['H40-C32-N2-O3-S-Ni-Br', 'H33-C32-N2-O3-S-Ni-Br']\n", - "list2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 1 ['H33-C32-N2-O3-S-Ni-Br']\n", - "keeplist2 8 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 80\n", - " Formula = H40-C32-N2-O3-S-Ni-Br\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = H\n", - " Number of Atoms = 1\n", - " Formula = H\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "sublist 2 ['H40-C32-N2-O3-S-Ni-Br', 'H']\n", - "list1 2 ['H40-C32-N2-O3-S-Ni-Br', 'H33-C32-N2-O3-S-Ni-Br']\n", - "list2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 1 ['H33-C32-N2-O3-S-Ni-Br']\n", - "keeplist2 8 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 80\n", - " Formula = H40-C32-N2-O3-S-Ni-Br\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = H\n", - " Number of Atoms = 1\n", - " Formula = H\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "sublist 2 ['H40-C32-N2-O3-S-Ni-Br', 'H']\n", - "list1 2 ['H40-C32-N2-O3-S-Ni-Br', 'H33-C32-N2-O3-S-Ni-Br']\n", - "list2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 1 ['H33-C32-N2-O3-S-Ni-Br']\n", - "keeplist2 8 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 80\n", - " Formula = H40-C32-N2-O3-S-Ni-Br\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = H\n", - " Number of Atoms = 1\n", - " Formula = H\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "sublist 2 ['H40-C32-N2-O3-S-Ni-Br', 'H']\n", - "list1 2 ['H40-C32-N2-O3-S-Ni-Br', 'H33-C32-N2-O3-S-Ni-Br']\n", - "list2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 1 ['H33-C32-N2-O3-S-Ni-Br']\n", - "keeplist2 8 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "goodlist=[]\n", - "avglist=[]\n", - "badlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 80\n", - " Formula = H40-C32-N2-O3-S-Ni-Br\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = H\n", - " Number of Atoms = 1\n", - " Formula = H\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.get_moleclist\n", - "---------------------------------------------------\n", - "]\n", - "sublist 2 ['H40-C32-N2-O3-S-Ni-Br', 'H']\n", - "list1 2 ['H40-C32-N2-O3-S-Ni-Br', 'H33-C32-N2-O3-S-Ni-Br']\n", - "list2 9 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 1 ['H33-C32-N2-O3-S-Ni-Br']\n", - "keeplist2 8 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "MOLECULE.SPLIT COMPLEX: labels=['Ni', 'Br', 'S', 'N', 'N', 'O', 'O', 'O', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'C', 'H', 'C', 'C', 'H', 'C', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H']\n", - "MOLECULE.SPLIT COMPLEX: metal_idx=[0]\n", - "MOLECULE.SPLIT COMPLEX: rest_idx=[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80]\n", - "SPLIT COMPLEX: rest labels: ['Br', 'S', 'N', 'N', 'O', 'O', 'O', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'C', 'H', 'C', 'C', 'H', 'C', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H']\n", - "SPLIT COMPLEX: rest coord: [[9.2242858, 8.5325201, 15.2833638], [7.2868827, 12.0818685, 17.4520631], [7.058379, 12.0657861, 15.8518407], [7.1794209, 10.5617186, 13.434309], [5.9060053, 9.2427195, 16.0102231], [8.0392042, 10.8283577, 17.6128452], [6.0457294, 12.1917731, 18.1795823], [8.362354100000001, 13.435713400000001, 17.8864149], [8.0324007, 14.3307933, 18.9296991], [8.9753299, 15.3111444, 19.2800602], [6.7724085, 15.027716600000002, 20.4177339], [6.7370814999999995, 14.3227194, 19.7394092], [5.9774335, 14.4820082, 19.1418755], [4.959240299999999, 15.0171542, 14.9889365], [6.6310406, 13.451898499999999, 20.1777605], [5.7391764, 14.1484, 15.7512518], [10.1969062, 15.4459067, 18.6433309], [9.4926792, 12.7919523, 15.2843037], [11.190190900000001, 16.5150455, 19.038487], [4.593649, 15.7903038, 15.4042904], [11.3234919, 17.1305142, 18.2879703], [8.764731999999999, 15.909586000000001, 19.9877817], [10.4726976, 14.565085700000001, 17.5908477], [10.8464801, 17.0106914, 19.8098014], [11.290731000000001, 14.6644889, 17.1181001], [12.044685099999999, 16.0964299, 19.2738609], [4.0085678, 9.5142229, 17.3948694], [4.5824644, 10.7901679, 15.85824], [4.5519027, 9.8130183, 16.0188222], [5.9068996, 14.3407105, 16.6661503], [3.019244500000001, 9.4829491, 17.3940695], [4.1560654, 15.3869261, 13.1345423], [4.6128787, 8.1381786, 17.6680391], [4.6645676, 7.9614328, 18.6399312], [4.0754744, 7.424841, 17.2400866], [4.3149271, 10.182343, 18.0579958], [9.6103806, 13.559670700000002, 17.2082901], [10.0039302, 11.712927, 16.3501854], [6.2838303, 12.9709283, 15.1609174], [10.0663974, 12.648385600000001, 16.0662169], [6.6687626, 8.4675767, 17.7380313], [5.9979455, 8.2134777, 17.0555071], [6.2553164, 7.3406617, 16.6661503], [9.5509909, 9.4508437, 10.7816034], [7.1847479, 6.2579066, 13.7384752], [8.9253867, 10.2704843, 11.7416968], [10.8434173, 10.7221009, 13.488503], [6.0145542, 12.726888, 13.776871], [7.8060611, 9.7388497, 12.4036234], [6.5560927, 11.6036339, 13.0127558], [4.8618208, 8.103814, 12.1646499], [4.099945, 7.803849, 12.7025902], [6.1550577, 7.8536636, 12.9317648], [7.993904, 7.6771801, 11.1935577], [6.316749, 5.8530532, 12.4546177], [7.3507142, 8.4434193, 12.1750488], [5.255376999999999, 13.6608727, 13.0545511], [6.0830757, 8.3512721, 13.7964688], [3.9899879, 9.3926941, 15.3202997], [6.429002, 11.6497681, 12.0726601], [6.3292994, 6.3861803, 13.2785263], [4.8822247, 7.6064407, 11.3207436], [4.7735838, 9.0615395, 11.9766708], [5.5966811, 6.0997926, 13.8624615], [9.1027004, 8.1813475, 10.5114334], [10.3039016, 9.7850592, 10.3088559], [7.6719344, 6.8063647, 10.9907802], [9.5452504, 7.6471203, 9.8629054], [10.9342688, 11.3743716, 12.7625835], [8.9732413, 12.0539858, 12.7805815], [10.9944175, 12.8579202, 15.8322429], [9.5628056, 11.6065694, 12.1078562], [11.5625942, 11.03217, 12.0926579], [11.271805, 12.2211624, 13.1245434], [9.6937082, 12.543112, 10.8995903], [10.118043400000001, 13.3796091, 11.1787593], [10.2421759, 12.1124166, 10.2108667], [4.6970258000000005, 14.7898447, 13.6378864], [5.1176711, 13.5141518, 12.1266541], [8.8030653, 12.7334908, 10.5368306]]\n", - "SPLIT COMPLEX: rest indices: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80]\n", - "SPLIT COMPLEX: rest radii: [1.2, 1.05, 0.71, 0.71, 0.66, 0.66, 0.66, 0.73, 0.73, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.73, 0.31, 0.73, 0.31, 0.31, 0.31, 0.73, 0.31, 0.31, 0.31, 0.73, 0.31, 0.73, 0.31, 0.31, 0.31, 0.73, 0.31, 0.31, 0.31, 0.73, 0.31, 0.73, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.73, 0.73, 0.73, 0.31, 0.73, 0.73, 0.31, 0.73, 0.73, 0.31, 0.31, 0.31, 0.73, 0.31, 0.31, 0.31, 0.73, 0.31, 0.31, 0.31, 0.73, 0.31, 0.31, 0.73, 0.31, 0.31, 0.73, 0.31, 0.31, 0.73, 0.31, 0.31]\n", - "SPLIT COMPLEX: splitting species with 80 atoms in block\n", - "labels=['Br', 'S', 'N', 'N', 'O', 'O', 'O', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'C', 'H', 'C', 'C', 'H', 'C', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] 80\n", - "indices=None\n", - "SPLIT COMPLEX: received 3 blocks\n", - "PREPARING BLOCK: [1, 2, 3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 29, 31, 36, 37, 38, 39, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79]\n", - "CREATING LIGAND: H33-C28-N2-O2-S\n", - "PREPARING BLOCK: [4, 26, 27, 28, 30, 32, 33, 34, 35, 40, 41, 42, 58]\n", - "CREATING LIGAND: H8-C4-O\n", - "PREPARING BLOCK: [0]\n", - "CREATING LIGAND: Br\n", - "LIGAND.SPLIT_LIGAND: self.indices=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65]\n", - "LIGAND.SPLIT_LIGAND: conn_idx=[0, 1, 2, 3]\n", - "LIGAND.SPLIT_LIGAND: conn_labels=['S', 'N', 'N', 'O']\n", - "LIGAND.SPLIT_LIGAND: conn_coord=[[7.2868827, 12.0818685, 17.4520631], [7.058379, 12.0657861, 15.8518407], [7.1794209, 10.5617186, 13.434309], [8.0392042, 10.8283577, 17.6128452]]\n", - "LIGAND.SPLIT_LIGAND: conn_radii=[1.05, 0.71, 0.71, 0.66]\n", - "blocklist=[[0, 1, 3], [2]]\n", - "LIGAND.SPLIT_LIGAND: block=[0, 1, 3]\n", - "LIGAND.SPLIT_LIGAND: block=[2]\n", - "LIGAND.SPLIT_LIGAND: self.indices=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]\n", - "LIGAND.SPLIT_LIGAND: conn_idx=[0]\n", - "LIGAND.SPLIT_LIGAND: conn_labels=['O']\n", - "LIGAND.SPLIT_LIGAND: conn_coord=[[5.9060053, 9.2427195, 16.0102231]]\n", - "LIGAND.SPLIT_LIGAND: conn_radii=[0.66]\n", - "blocklist=[[0]]\n", - "LIGAND.SPLIT_LIGAND: block=[0]\n", - "LIGAND.SPLIT_LIGAND: self.indices=[0]\n", - "LIGAND.SPLIT_LIGAND: conn_idx=[0]\n", - "LIGAND.SPLIT_LIGAND: conn_labels=['Br']\n", - "LIGAND.SPLIT_LIGAND: conn_coord=[[9.2242858, 8.5325201, 15.2833638]]\n", - "LIGAND.SPLIT_LIGAND: conn_radii=[1.2]\n", - "blocklist=[[0]]\n", - "LIGAND.SPLIT_LIGAND: block=[0]\n", - "ADD_ATOM: Metalist length 1\n", - "ADD_ATOM: Ligand Atoms 66\n", - "ADD_ATOM: site= 0\n", - "ADD_ATOM: evaluating apos=array([ 7.2868827, 12.0818685, 17.4520631]) and tgt.coord=[7.5712858, 10.2174988, 15.3948914]\n", - "ADD_ATOM: received tmpconnec[posadded]=2\n", - "ADD_ATOM: Chosen Metal index None. H was added at site 0 but RESET due to connec=2\n", - "ADD_ATOM: Metalist length 1\n", - "ADD_ATOM: Ligand Atoms 66\n", - "ADD_ATOM: site= 1\n", - "ADD_ATOM: evaluating apos=array([ 7.058379 , 12.0657861, 15.8518407]) and tgt.coord=[7.5712858, 10.2174988, 15.3948914]\n", - "ADD_ATOM: received tmpconnec[posadded]=1\n", - "ADD_ATOM: Chosen Metal index None. H is added at site 1\n", - "ADD_ATOM: Metalist length 1\n", - "ADD_ATOM: Ligand Atoms 66\n", - "ADD_ATOM: site= 0\n", - "ADD_ATOM: evaluating apos=array([ 7.2868827, 12.0818685, 17.4520631]) and tgt.coord=[7.5712858, 10.2174988, 15.3948914]\n", - "ADD_ATOM: received tmpconnec[posadded]=2\n", - "ADD_ATOM: Chosen Metal index None. H was added at site 0 but RESET due to connec=2\n", - "ADD_ATOM: Metalist length 1\n", - "ADD_ATOM: Ligand Atoms 13\n", - "ADD_ATOM: site= 0\n", - "ADD_ATOM: evaluating apos=array([ 5.9060053, 9.2427195, 16.0102231]) and tgt.coord=[7.5712858, 10.2174988, 15.3948914]\n", - "ADD_ATOM: received tmpconnec[posadded]=1\n", - "ADD_ATOM: Chosen Metal index None. H is added at site 0\n", - "ADD_ATOM: Metalist length 1\n", - "ADD_ATOM: Ligand Atoms 1\n", - "ADD_ATOM: site= 0\n", - "ADD_ATOM: evaluating apos=array([ 9.2242858, 8.5325201, 15.2833638]) and tgt.coord=[7.5712858, 10.2174988, 15.3948914]\n", - "ADD_ATOM: received tmpconnec[posadded]=1\n", - "ADD_ATOM: Chosen Metal index None. H is added at site 0\n", - "reordered_newmolec=------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 81\n", - " Formula = H41-C32-N2-O3-S-Ni-Br\n", - " Has Adjacency Matrix = YES\n", - " Number of Ligands = 3\n", - " Number of Metals = 1\n", - "---------------------------------------------------\n", - "\n", - "COMPARE_SPECIES. Comparing:\n", - "------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 81\n", - " Formula = H41-C32-N2-O3-S-Ni-Br\n", - " Has Adjacency Matrix = YES\n", - " Number of Ligands = 3\n", - " Number of Metals = 1\n", - "---------------------------------------------------\n", - "\n", - "------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 81\n", - " Formula = H41-C32-N2-O3-S-Ni-Br\n", - " Has Adjacency Matrix = YES\n", - " Number of Ligands = 3\n", - " Number of Metals = 1\n", - "---------------------------------------------------\n", - "\n", - "['Ni', 'Br', 'S', 'N', 'N', 'O', 'O', 'O', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'C', 'H', 'C', 'C', 'H', 'C', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H']\n", - "['Ni', 'Br', 'S', 'N', 'N', 'O', 'O', 'O', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'C', 'H', 'C', 'C', 'H', 'C', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H']\n", - "mol1.adj_types=array([[0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " ...,\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0]])\n", - "mol2.adj_types=array([[0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " ...,\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0]])\n", - "goodlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 81\n", - " Formula = H41-C32-N2-O3-S-Ni-Br\n", - " Has Adjacency Matrix = YES\n", - " Number of Ligands = 3\n", - " Number of Metals = 1\n", - "---------------------------------------------------\n", - "]\n", - "avglist=[]\n", - "badlist=[]\n", - "sublist 2 ['H33-C32-N2-O3-S-Ni-Br', 'H']\n", - "list1 1 ['H33-C32-N2-O3-S-Ni-Br']\n", - "list2 8 ['H', 'H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 0 []\n", - "keeplist2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "goodlist=[]\n", - "avglist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 74\n", - " Formula = H34-C32-N2-O3-S-Ni-Br\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - "]\n", - "badlist=[]\n", - "sublist 2 ['H34-C32-N2-O3-S-Ni-Br', 'H']\n", - "list1 1 ['H34-C32-N2-O3-S-Ni-Br']\n", - "list2 7 ['H', 'H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 0 []\n", - "keeplist2 6 ['H', 'H', 'H', 'H', 'H', 'H']\n", - "\n", - "goodlist=[]\n", - "avglist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 75\n", - " Formula = H35-C32-N2-O3-S-Ni-Br\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - "]\n", - "badlist=[]\n", - "sublist 2 ['H35-C32-N2-O3-S-Ni-Br', 'H']\n", - "list1 1 ['H35-C32-N2-O3-S-Ni-Br']\n", - "list2 6 ['H', 'H', 'H', 'H', 'H', 'H']\n", - "keeplist1 0 []\n", - "keeplist2 5 ['H', 'H', 'H', 'H', 'H']\n", - "\n", - "goodlist=[]\n", - "avglist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 76\n", - " Formula = H36-C32-N2-O3-S-Ni-Br\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - "]\n", - "badlist=[]\n", - "sublist 2 ['H36-C32-N2-O3-S-Ni-Br', 'H']\n", - "list1 1 ['H36-C32-N2-O3-S-Ni-Br']\n", - "list2 5 ['H', 'H', 'H', 'H', 'H']\n", - "keeplist1 0 []\n", - "keeplist2 4 ['H', 'H', 'H', 'H']\n", - "\n", - "goodlist=[]\n", - "avglist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 77\n", - " Formula = H37-C32-N2-O3-S-Ni-Br\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - "]\n", - "badlist=[]\n", - "sublist 2 ['H37-C32-N2-O3-S-Ni-Br', 'H']\n", - "list1 1 ['H37-C32-N2-O3-S-Ni-Br']\n", - "list2 4 ['H', 'H', 'H', 'H']\n", - "keeplist1 0 []\n", - "keeplist2 3 ['H', 'H', 'H']\n", - "\n", - "goodlist=[]\n", - "avglist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 78\n", - " Formula = H38-C32-N2-O3-S-Ni-Br\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - "]\n", - "badlist=[]\n", - "sublist 2 ['H38-C32-N2-O3-S-Ni-Br', 'H']\n", - "list1 1 ['H38-C32-N2-O3-S-Ni-Br']\n", - "list2 3 ['H', 'H', 'H']\n", - "keeplist1 0 []\n", - "keeplist2 2 ['H', 'H']\n", - "\n", - "goodlist=[]\n", - "avglist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 79\n", - " Formula = H39-C32-N2-O3-S-Ni-Br\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - "]\n", - "badlist=[]\n", - "sublist 2 ['H39-C32-N2-O3-S-Ni-Br', 'H']\n", - "list1 1 ['H39-C32-N2-O3-S-Ni-Br']\n", - "list2 2 ['H', 'H']\n", - "keeplist1 0 []\n", - "keeplist2 1 ['H']\n", - "\n", - "goodlist=[]\n", - "avglist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = Rec. Fragment\n", - " Number of Atoms = 80\n", - " Formula = H40-C32-N2-O3-S-Ni-Br\n", - " Has Adjacency Matrix = YES\n", - "---------------------------------------------------\n", - "]\n", - "badlist=[]\n", - "sublist 2 ['H40-C32-N2-O3-S-Ni-Br', 'H']\n", - "list1 1 ['H40-C32-N2-O3-S-Ni-Br']\n", - "list2 1 ['H']\n", - "keeplist1 0 []\n", - "keeplist2 0 []\n", - "\n", - "MOLECULE.SPLIT COMPLEX: labels=['Ni', 'Br', 'S', 'N', 'N', 'O', 'O', 'O', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'C', 'H', 'C', 'C', 'H', 'C', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H']\n", - "MOLECULE.SPLIT COMPLEX: metal_idx=[0]\n", - "MOLECULE.SPLIT COMPLEX: rest_idx=[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80]\n", - "SPLIT COMPLEX: rest labels: ['Br', 'S', 'N', 'N', 'O', 'O', 'O', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'C', 'H', 'C', 'C', 'H', 'C', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H']\n", - "SPLIT COMPLEX: rest coord: [[4.0120234, 4.7507914, 4.7144168], [5.9494265, 1.2014431, 2.5457175], [6.0568883, 2.721593, 6.5634716], [6.1779302, 1.2175255, 4.1459399], [5.197105, 2.4549538, 2.3849353], [7.1905798, 1.0915384, 1.8181982], [7.330304, 4.0405921, 3.9875574], [5.4302482, 3.5444618, 7.5941572], [5.885595, 4.8398923, 7.8227318], [5.2424053, 5.6061314, 8.8042229], [5.5643749, 6.4769468, 9.0070004], [4.1336088, 5.101964, 9.4863472], [3.6910589, 5.6361913, 10.1348752], [3.6853184, 3.8324679, 9.2161771], [2.9324076, 3.4982524, 9.6889247], [4.3109225, 3.0128273, 8.2560837], [7.0812515, 5.4296479, 7.0660158], [7.1532335, 4.9320395, 6.2013117], [6.9070098, 6.8971312, 6.7192543], [6.0515614, 7.025405, 6.2593053], [7.6396281, 7.1835189, 6.1353191], [6.9195602, 7.4302584, 7.5431628], [8.3744884, 5.1794976, 7.8331306], [8.3540845, 5.6768709, 8.677037], [9.1363642, 5.4794625, 7.2951903], [8.4627254, 4.221772, 8.0211098], [3.6735036, 1.6767422, 7.8899243], [4.2630679, 1.2293257000000004, 7.217199], [2.3020405, 1.90894, 7.235197], [1.673715, 2.2511416, 7.9051227], [1.9645042000000004, 1.0621492000000003, 6.8732372], [2.3928919, 2.5612107, 6.5092776], [3.5426010000000003, 0.7401994999999992, 9.0981902], [4.433244, 0.5498207999999991, 9.46095], [3.1182659, -0.09629750000000037, 8.8190212], [2.9941332999999997, 1.1708949999999998, 9.7869138], [6.6802165, 1.6796776, 6.9850248], [6.8073072, 1.6335435, 7.9251204], [7.2217551, 0.5564234999999993, 6.2209096], [7.980932200000001, -0.3775611000000012, 6.9432294], [8.118638100000002, -0.23084020000000116, 7.8711264], [8.539283399999999, -1.5065332000000007, 6.3598941], [9.080243799999998, -2.1036146000000002, 6.8632383], [8.277069000000001, -1.7338426, 5.0088441], [8.642660199999998, -2.5069922, 4.5934902], [7.4971328, -0.8650884000000012, 4.2465287], [7.329409600000001, -1.0573990000000002, 3.3316302], [6.9524789, 0.3123831999999993, 4.8368632], [4.8739551, -0.15240190000000098, 2.1113657], [3.6259286, -0.2763591999999999, 2.7894904], [2.7636116, -1.281774200000001, 2.4069329], [1.9455782, -1.381177300000001, 2.8796804], [3.039403, -2.1625951000000008, 1.3544497], [4.2609794, -2.0278328000000005, 0.7177203], [4.4715772000000005, -2.6262745, 0.0099989], [5.2039086, -1.0474818, 1.0680815], [3.1699119, 0.6349258999999989, 3.9315637], [3.7436300000000005, 0.49135929999999917, 4.7134769], [2.2418917, 0.42539129999999936, 4.1655377], [3.232379, 1.5703846, 3.6475952], [2.0461183, -3.2317340000000003, 0.9592935], [2.3898291, -3.7273798000000005, 0.1879791], [1.1916242000000001, -2.8131183, 0.7239197], [1.9128173, -3.8472026, 1.7098102], [6.4992277, -1.0394079000000005, 0.2583713], [6.605268600000001, -0.1685869999999996, -0.17998000000000047], [6.4639008, -1.7444049999999995, -0.41995329999999953], [7.258875799999999, -1.1986966, 0.855905], [8.6844066, 3.4702933, 3.9789584], [8.6538448, 2.4931436, 4.1395406], [9.2463213, 3.8906175, 4.6774809], [9.2277414, 3.7690886, 2.6029111], [8.9213821, 3.1009686, 1.9397847], [10.2170647, 3.8003624, 2.603711], [8.6234306, 5.1451329, 2.3297414], [9.1608348, 5.8584706, 2.7576939], [8.5717416, 5.3218788, 1.3578493], [7.2383638, 5.0698339, 2.9422735], [6.9809928, 5.9426499, 3.3316302], [6.5675466, 4.8157349, 2.2597492]]\n", - "SPLIT COMPLEX: rest indices: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80]\n", - "SPLIT COMPLEX: rest radii: [1.2, 1.05, 0.71, 0.71, 0.66, 0.66, 0.66, 0.73, 0.73, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.73, 0.31, 0.73, 0.31, 0.31, 0.31, 0.73, 0.31, 0.31, 0.31, 0.73, 0.31, 0.73, 0.31, 0.31, 0.31, 0.73, 0.31, 0.31, 0.31, 0.73, 0.31, 0.73, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.73, 0.73, 0.73, 0.31, 0.73, 0.73, 0.31, 0.73, 0.73, 0.31, 0.31, 0.31, 0.73, 0.31, 0.31, 0.31, 0.73, 0.31, 0.31, 0.31, 0.73, 0.31, 0.31, 0.73, 0.31, 0.31, 0.73, 0.31, 0.31, 0.73, 0.31, 0.31]\n", - "SPLIT COMPLEX: splitting species with 80 atoms in block\n", - "labels=['Br', 'S', 'N', 'N', 'O', 'O', 'O', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'C', 'H', 'C', 'C', 'H', 'C', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] 80\n", - "indices=None\n", - "SPLIT COMPLEX: received 3 blocks\n", - "PREPARING BLOCK: [6, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79]\n", - "CREATING LIGAND: H8-C4-O\n", - "PREPARING BLOCK: [1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67]\n", - "CREATING LIGAND: H33-C28-N2-O2-S\n", - "PREPARING BLOCK: [0]\n", - "CREATING LIGAND: Br\n", - "LIGAND.SPLIT_LIGAND: self.indices=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]\n", - "LIGAND.SPLIT_LIGAND: conn_idx=[0]\n", - "LIGAND.SPLIT_LIGAND: conn_labels=['O']\n", - "LIGAND.SPLIT_LIGAND: conn_coord=[[7.330304, 4.0405921, 3.9875574]]\n", - "LIGAND.SPLIT_LIGAND: conn_radii=[0.66]\n", - "blocklist=[[0]]\n", - "LIGAND.SPLIT_LIGAND: block=[0]\n", - "LIGAND.SPLIT_LIGAND: self.indices=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65]\n", - "LIGAND.SPLIT_LIGAND: conn_idx=[0, 1, 2, 3]\n", - "LIGAND.SPLIT_LIGAND: conn_labels=['S', 'N', 'N', 'O']\n", - "LIGAND.SPLIT_LIGAND: conn_coord=[[5.9494265, 1.2014431, 2.5457175], [6.0568883, 2.721593, 6.5634716], [6.1779302, 1.2175255, 4.1459399], [5.197105, 2.4549538, 2.3849353]]\n", - "LIGAND.SPLIT_LIGAND: conn_radii=[1.05, 0.71, 0.71, 0.66]\n", - "blocklist=[[0, 2, 3], [1]]\n", - "LIGAND.SPLIT_LIGAND: block=[0, 2, 3]\n", - "LIGAND.SPLIT_LIGAND: block=[1]\n", - "LIGAND.SPLIT_LIGAND: self.indices=[0]\n", - "LIGAND.SPLIT_LIGAND: conn_idx=[0]\n", - "LIGAND.SPLIT_LIGAND: conn_labels=['Br']\n", - "LIGAND.SPLIT_LIGAND: conn_coord=[[4.0120234, 4.7507914, 4.7144168]]\n", - "LIGAND.SPLIT_LIGAND: conn_radii=[1.2]\n", - "blocklist=[[0]]\n", - "LIGAND.SPLIT_LIGAND: block=[0]\n", - "ADD_ATOM: Metalist length 1\n", - "ADD_ATOM: Ligand Atoms 13\n", - "ADD_ATOM: site= 0\n", - "ADD_ATOM: evaluating apos=array([7.330304 , 4.0405921, 3.9875574]) and tgt.coord=[5.6650235, 3.0658127, 4.6028891]\n", - "ADD_ATOM: received tmpconnec[posadded]=1\n", - "ADD_ATOM: Chosen Metal index None. H is added at site 0\n", - "ADD_ATOM: Metalist length 1\n", - "ADD_ATOM: Ligand Atoms 66\n", - "ADD_ATOM: site= 0\n", - "ADD_ATOM: evaluating apos=array([5.9494265, 1.2014431, 2.5457175]) and tgt.coord=[5.6650235, 3.0658127, 4.6028891]\n", - "ADD_ATOM: received tmpconnec[posadded]=2\n", - "ADD_ATOM: Chosen Metal index None. H was added at site 0 but RESET due to connec=2\n", - "ADD_ATOM: Metalist length 1\n", - "ADD_ATOM: Ligand Atoms 66\n", - "ADD_ATOM: site= 1\n", - "ADD_ATOM: evaluating apos=array([6.0568883, 2.721593 , 6.5634716]) and tgt.coord=[5.6650235, 3.0658127, 4.6028891]\n", - "ADD_ATOM: received tmpconnec[posadded]=1\n", - "ADD_ATOM: Chosen Metal index None. H is added at site 1\n", - "ADD_ATOM: Metalist length 1\n", - "ADD_ATOM: Ligand Atoms 66\n", - "ADD_ATOM: site= 0\n", - "ADD_ATOM: evaluating apos=array([5.9494265, 1.2014431, 2.5457175]) and tgt.coord=[5.6650235, 3.0658127, 4.6028891]\n", - "ADD_ATOM: received tmpconnec[posadded]=2\n", - "ADD_ATOM: Chosen Metal index None. H was added at site 0 but RESET due to connec=2\n", - "ADD_ATOM: Metalist length 1\n", - "ADD_ATOM: Ligand Atoms 1\n", - "ADD_ATOM: site= 0\n", - "ADD_ATOM: evaluating apos=array([4.0120234, 4.7507914, 4.7144168]) and tgt.coord=[5.6650235, 3.0658127, 4.6028891]\n", - "ADD_ATOM: received tmpconnec[posadded]=1\n", - "ADD_ATOM: Chosen Metal index None. H is added at site 0\n", - "reordered_newmolec=------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 81\n", - " Formula = H41-C32-N2-O3-S-Ni-Br\n", - " Has Adjacency Matrix = YES\n", - " Number of Ligands = 3\n", - " Number of Metals = 1\n", - "---------------------------------------------------\n", - "\n", - "COMPARE_SPECIES. Comparing:\n", - "------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 81\n", - " Formula = H41-C32-N2-O3-S-Ni-Br\n", - " Has Adjacency Matrix = YES\n", - " Number of Ligands = 3\n", - " Number of Metals = 1\n", - "---------------------------------------------------\n", - "\n", - "------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 81\n", - " Formula = H41-C32-N2-O3-S-Ni-Br\n", - " Has Adjacency Matrix = YES\n", - " Number of Ligands = 3\n", - " Number of Metals = 1\n", - "---------------------------------------------------\n", - "\n", - "['Ni', 'Br', 'S', 'N', 'N', 'O', 'O', 'O', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'C', 'H', 'C', 'C', 'H', 'C', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H']\n", - "['Ni', 'Br', 'S', 'N', 'N', 'O', 'O', 'O', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'C', 'H', 'C', 'C', 'H', 'C', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H']\n", - "mol1.adj_types=array([[0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " ...,\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0]])\n", - "mol2.adj_types=array([[0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " ...,\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0],\n", - " [0, 0, 0, ..., 0, 0, 0]])\n", - "goodlist=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 81\n", - " Formula = H41-C32-N2-O3-S-Ni-Br\n", - " Has Adjacency Matrix = YES\n", - " Number of Ligands = 3\n", - " Number of Metals = 1\n", - "---------------------------------------------------\n", - "]\n", - "avglist=[]\n", - "badlist=[]\n", - "FINISHED succesfully\n", - "finalmols=[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 81\n", - " Formula = H41-C32-N2-O3-S-Ni-Br\n", - " Has Adjacency Matrix = YES\n", - " Number of Ligands = 3\n", - " Number of Metals = 1\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 81\n", - " Formula = H41-C32-N2-O3-S-Ni-Br\n", - " Has Adjacency Matrix = YES\n", - " Number of Ligands = 3\n", - " Number of Metals = 1\n", - "---------------------------------------------------\n", - "]\n", - "remfrag=[]\n", - "FRAG_RECONSTRUCT. No remaining Molecules after Hydrogen reconstruction\n", - "MOLECULE.SPLIT COMPLEX: labels=['Ni', 'Br', 'S', 'N', 'N', 'O', 'O', 'O', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'C', 'H', 'C', 'C', 'H', 'C', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H']\n", - "MOLECULE.SPLIT COMPLEX: metal_idx=[0]\n", - "MOLECULE.SPLIT COMPLEX: rest_idx=[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80]\n", - "SPLIT COMPLEX: rest labels: ['Br', 'S', 'N', 'N', 'O', 'O', 'O', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'C', 'H', 'C', 'C', 'H', 'C', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H']\n", - "SPLIT COMPLEX: rest coord: [[9.2242858, 8.5325201, 15.2833638], [7.2868827, 12.0818685, 17.4520631], [7.058379, 12.0657861, 15.8518407], [7.1794209, 10.5617186, 13.434309], [5.9060053, 9.2427195, 16.0102231], [8.0392042, 10.8283577, 17.6128452], [6.0457294, 12.1917731, 18.1795823], [8.362354100000001, 13.435713400000001, 17.8864149], [8.0324007, 14.3307933, 18.9296991], [8.9753299, 15.3111444, 19.2800602], [6.7724085, 15.027716600000002, 20.4177339], [6.7370814999999995, 14.3227194, 19.7394092], [5.9774335, 14.4820082, 19.1418755], [4.959240299999999, 15.0171542, 14.9889365], [6.6310406, 13.451898499999999, 20.1777605], [5.7391764, 14.1484, 15.7512518], [10.1969062, 15.4459067, 18.6433309], [9.4926792, 12.7919523, 15.2843037], [11.190190900000001, 16.5150455, 19.038487], [4.593649, 15.7903038, 15.4042904], [11.3234919, 17.1305142, 18.2879703], [8.764731999999999, 15.909586000000001, 19.9877817], [10.4726976, 14.565085700000001, 17.5908477], [10.8464801, 17.0106914, 19.8098014], [11.290731000000001, 14.6644889, 17.1181001], [12.044685099999999, 16.0964299, 19.2738609], [4.0085678, 9.5142229, 17.3948694], [4.5824644, 10.7901679, 15.85824], [4.5519027, 9.8130183, 16.0188222], [5.9068996, 14.3407105, 16.6661503], [3.019244500000001, 9.4829491, 17.3940695], [4.1560654, 15.3869261, 13.1345423], [4.6128787, 8.1381786, 17.6680391], [4.6645676, 7.9614328, 18.6399312], [4.0754744, 7.424841, 17.2400866], [4.3149271, 10.182343, 18.0579958], [9.6103806, 13.559670700000002, 17.2082901], [10.0039302, 11.712927, 16.3501854], [6.2838303, 12.9709283, 15.1609174], [10.0663974, 12.648385600000001, 16.0662169], [6.6687626, 8.4675767, 17.7380313], [5.9979455, 8.2134777, 17.0555071], [6.2553164, 7.3406617, 16.6661503], [9.5509909, 9.4508437, 10.7816034], [7.1847479, 6.2579066, 13.7384752], [8.9253867, 10.2704843, 11.7416968], [10.8434173, 10.7221009, 13.488503], [6.0145542, 12.726888, 13.776871], [7.8060611, 9.7388497, 12.4036234], [6.5560927, 11.6036339, 13.0127558], [4.8618208, 8.103814, 12.1646499], [4.099945, 7.803849, 12.7025902], [6.1550577, 7.8536636, 12.9317648], [7.993904, 7.6771801, 11.1935577], [6.316749, 5.8530532, 12.4546177], [7.3507142, 8.4434193, 12.1750488], [5.255376999999999, 13.6608727, 13.0545511], [6.0830757, 8.3512721, 13.7964688], [3.9899879, 9.3926941, 15.3202997], [6.429002, 11.6497681, 12.0726601], [6.3292994, 6.3861803, 13.2785263], [4.8822247, 7.6064407, 11.3207436], [4.7735838, 9.0615395, 11.9766708], [5.5966811, 6.0997926, 13.8624615], [9.1027004, 8.1813475, 10.5114334], [10.3039016, 9.7850592, 10.3088559], [7.6719344, 6.8063647, 10.9907802], [9.5452504, 7.6471203, 9.8629054], [10.9342688, 11.3743716, 12.7625835], [8.9732413, 12.0539858, 12.7805815], [10.9944175, 12.8579202, 15.8322429], [9.5628056, 11.6065694, 12.1078562], [11.5625942, 11.03217, 12.0926579], [11.271805, 12.2211624, 13.1245434], [9.6937082, 12.543112, 10.8995903], [10.118043400000001, 13.3796091, 11.1787593], [10.2421759, 12.1124166, 10.2108667], [4.6970258000000005, 14.7898447, 13.6378864], [5.1176711, 13.5141518, 12.1266541], [8.8030653, 12.7334908, 10.5368306]]\n", - "SPLIT COMPLEX: rest indices: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80]\n", - "SPLIT COMPLEX: rest radii: [1.2, 1.05, 0.71, 0.71, 0.66, 0.66, 0.66, 0.73, 0.73, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.73, 0.31, 0.73, 0.31, 0.31, 0.31, 0.73, 0.31, 0.31, 0.31, 0.73, 0.31, 0.73, 0.31, 0.31, 0.31, 0.73, 0.31, 0.31, 0.31, 0.73, 0.31, 0.73, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.73, 0.73, 0.73, 0.31, 0.73, 0.73, 0.31, 0.73, 0.73, 0.31, 0.31, 0.31, 0.73, 0.31, 0.31, 0.31, 0.73, 0.31, 0.31, 0.31, 0.73, 0.31, 0.31, 0.73, 0.31, 0.31, 0.73, 0.31, 0.31, 0.73, 0.31, 0.31]\n", - "SPLIT COMPLEX: splitting species with 80 atoms in block\n", - "labels=['Br', 'S', 'N', 'N', 'O', 'O', 'O', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'C', 'H', 'C', 'C', 'H', 'C', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] 80\n", - "indices=None\n", - "SPLIT COMPLEX: received 3 blocks\n", - "PREPARING BLOCK: [1, 2, 3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 29, 31, 36, 37, 38, 39, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79]\n", - "CREATING LIGAND: H33-C28-N2-O2-S\n", - "PREPARING BLOCK: [4, 26, 27, 28, 30, 32, 33, 34, 35, 40, 41, 42, 58]\n", - "CREATING LIGAND: H8-C4-O\n", - "PREPARING BLOCK: [0]\n", - "CREATING LIGAND: Br\n", - "MOLECULE.SPLIT COMPLEX: labels=['Ni', 'Br', 'S', 'N', 'N', 'O', 'O', 'O', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'C', 'H', 'C', 'C', 'H', 'C', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H']\n", - "MOLECULE.SPLIT COMPLEX: metal_idx=[0]\n", - "MOLECULE.SPLIT COMPLEX: rest_idx=[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80]\n", - "SPLIT COMPLEX: rest labels: ['Br', 'S', 'N', 'N', 'O', 'O', 'O', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'C', 'H', 'C', 'C', 'H', 'C', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H']\n", - "SPLIT COMPLEX: rest coord: [[4.0120234, 4.7507914, 4.7144168], [5.9494265, 1.2014431, 2.5457175], [6.0568883, 2.721593, 6.5634716], [6.1779302, 1.2175255, 4.1459399], [5.197105, 2.4549538, 2.3849353], [7.1905798, 1.0915384, 1.8181982], [7.330304, 4.0405921, 3.9875574], [5.4302482, 3.5444618, 7.5941572], [5.885595, 4.8398923, 7.8227318], [5.2424053, 5.6061314, 8.8042229], [5.5643749, 6.4769468, 9.0070004], [4.1336088, 5.101964, 9.4863472], [3.6910589, 5.6361913, 10.1348752], [3.6853184, 3.8324679, 9.2161771], [2.9324076, 3.4982524, 9.6889247], [4.3109225, 3.0128273, 8.2560837], [7.0812515, 5.4296479, 7.0660158], [7.1532335, 4.9320395, 6.2013117], [6.9070098, 6.8971312, 6.7192543], [6.0515614, 7.025405, 6.2593053], [7.6396281, 7.1835189, 6.1353191], [6.9195602, 7.4302584, 7.5431628], [8.3744884, 5.1794976, 7.8331306], [8.3540845, 5.6768709, 8.677037], [9.1363642, 5.4794625, 7.2951903], [8.4627254, 4.221772, 8.0211098], [3.6735036, 1.6767422, 7.8899243], [4.2630679, 1.2293257000000004, 7.217199], [2.3020405, 1.90894, 7.235197], [1.673715, 2.2511416, 7.9051227], [1.9645042000000004, 1.0621492000000003, 6.8732372], [2.3928919, 2.5612107, 6.5092776], [3.5426010000000003, 0.7401994999999992, 9.0981902], [4.433244, 0.5498207999999991, 9.46095], [3.1182659, -0.09629750000000037, 8.8190212], [2.9941332999999997, 1.1708949999999998, 9.7869138], [6.6802165, 1.6796776, 6.9850248], [6.8073072, 1.6335435, 7.9251204], [7.2217551, 0.5564234999999993, 6.2209096], [7.980932200000001, -0.3775611000000012, 6.9432294], [8.118638100000002, -0.23084020000000116, 7.8711264], [8.539283399999999, -1.5065332000000007, 6.3598941], [9.080243799999998, -2.1036146000000002, 6.8632383], [8.277069000000001, -1.7338426, 5.0088441], [8.642660199999998, -2.5069922, 4.5934902], [7.4971328, -0.8650884000000012, 4.2465287], [7.329409600000001, -1.0573990000000002, 3.3316302], [6.9524789, 0.3123831999999993, 4.8368632], [4.8739551, -0.15240190000000098, 2.1113657], [3.6259286, -0.2763591999999999, 2.7894904], [2.7636116, -1.281774200000001, 2.4069329], [1.9455782, -1.381177300000001, 2.8796804], [3.039403, -2.1625951000000008, 1.3544497], [4.2609794, -2.0278328000000005, 0.7177203], [4.4715772000000005, -2.6262745, 0.0099989], [5.2039086, -1.0474818, 1.0680815], [3.1699119, 0.6349258999999989, 3.9315637], [3.7436300000000005, 0.49135929999999917, 4.7134769], [2.2418917, 0.42539129999999936, 4.1655377], [3.232379, 1.5703846, 3.6475952], [2.0461183, -3.2317340000000003, 0.9592935], [2.3898291, -3.7273798000000005, 0.1879791], [1.1916242000000001, -2.8131183, 0.7239197], [1.9128173, -3.8472026, 1.7098102], [6.4992277, -1.0394079000000005, 0.2583713], [6.605268600000001, -0.1685869999999996, -0.17998000000000047], [6.4639008, -1.7444049999999995, -0.41995329999999953], [7.258875799999999, -1.1986966, 0.855905], [8.6844066, 3.4702933, 3.9789584], [8.6538448, 2.4931436, 4.1395406], [9.2463213, 3.8906175, 4.6774809], [9.2277414, 3.7690886, 2.6029111], [8.9213821, 3.1009686, 1.9397847], [10.2170647, 3.8003624, 2.603711], [8.6234306, 5.1451329, 2.3297414], [9.1608348, 5.8584706, 2.7576939], [8.5717416, 5.3218788, 1.3578493], [7.2383638, 5.0698339, 2.9422735], [6.9809928, 5.9426499, 3.3316302], [6.5675466, 4.8157349, 2.2597492]]\n", - "SPLIT COMPLEX: rest indices: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80]\n", - "SPLIT COMPLEX: rest radii: [1.2, 1.05, 0.71, 0.71, 0.66, 0.66, 0.66, 0.73, 0.73, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.73, 0.31, 0.73, 0.31, 0.31, 0.31, 0.73, 0.31, 0.31, 0.31, 0.73, 0.31, 0.73, 0.31, 0.31, 0.31, 0.73, 0.31, 0.31, 0.31, 0.73, 0.31, 0.73, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.31, 0.73, 0.73, 0.73, 0.73, 0.31, 0.73, 0.73, 0.31, 0.73, 0.73, 0.31, 0.31, 0.31, 0.73, 0.31, 0.31, 0.31, 0.73, 0.31, 0.31, 0.31, 0.73, 0.31, 0.31, 0.73, 0.31, 0.31, 0.73, 0.31, 0.31, 0.73, 0.31, 0.31]\n", - "SPLIT COMPLEX: splitting species with 80 atoms in block\n", - "labels=['Br', 'S', 'N', 'N', 'O', 'O', 'O', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'C', 'H', 'C', 'C', 'H', 'C', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H'] 80\n", - "indices=None\n", - "SPLIT COMPLEX: received 3 blocks\n", - "PREPARING BLOCK: [6, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79]\n", - "CREATING LIGAND: H8-C4-O\n", - "PREPARING BLOCK: [1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67]\n", - "CREATING LIGAND: H33-C28-N2-O2-S\n", - "PREPARING BLOCK: [0]\n", - "CREATING LIGAND: Br\n" - ] - }, - { - "data": { - "text/plain": [ - "[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 81\n", - " Formula = H41-C32-N2-O3-S-Ni-Br\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.reconstruct\n", - " Number of Ligands = 3\n", - " Number of Metals = 1\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 81\n", - " Formula = H41-C32-N2-O3-S-Ni-Br\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.reconstruct\n", - " Number of Ligands = 3\n", - " Number of Metals = 1\n", - " ---------------------------------------------------]" - ] - }, - "execution_count": 8, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "newcell.reconstruct(debug=2)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "4c3495ee", - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "66dcdfda", - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "ae9ae751", - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "1ae1d484", - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "76d0cd3a", - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "1f6bed3c", - "metadata": {}, - "outputs": [], - "source": [ - "initial_fragments = newcell.get_moleclist().copy()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "fa81c740", - "metadata": {}, - "outputs": [], - "source": [ - "molecules, fragments, hydrogens = classify_fragments(initial_fragments, newcell.refmoleclist, debug=debug)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "0e176777", - "metadata": {}, - "outputs": [], - "source": [ - "molecules" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "d78c48bf", - "metadata": {}, - "outputs": [], - "source": [ - "fragments" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "02c08ed9", - "metadata": {}, - "outputs": [], - "source": [ - "hydrogens" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "3e4d99e8", - "metadata": {}, - "outputs": [], - "source": [ - "if len(fragments) > 0 or len(hydrogens) > 0: newcell.is_fragmented = True\n", - "else: newcell.is_fragmented = False" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "d257813f", - "metadata": { - "scrolled": false - }, - "outputs": [], - "source": [ - "newcell.is_fragmented " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "ad74d1cd", - "metadata": { - "scrolled": true - }, - "outputs": [], - "source": [ - "newcell.refmoleclist[0].eleccount" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "664172cc", - "metadata": { - "scrolled": false - }, - "outputs": [], - "source": [ - "reconstructed_molecules, Warning = fragments_reconstruct(molecules, \n", - " fragments, \n", - " hydrogens, \n", - " newcell.refmoleclist, \n", - " newcell.cellvec, \n", - " newcell.refmoleclist[0].cov_factor, \n", - " newcell.refmoleclist[0].metal_factor,\n", - " debug = 1)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "bb973908", - "metadata": {}, - "outputs": [], - "source": [ - "adj_types1 = np.load(\"YOBCUO/adj_types1.npy\")\n", - "adj_types2 = np.load(\"YOBCUO/adj_types2.npy\")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "323f05af", - "metadata": {}, - "outputs": [], - "source": [ - "adj_types2.shape" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "6669a3de", - "metadata": {}, - "outputs": [], - "source": [ - "elems = elemdatabase.elementnr.keys()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "46899a3c", - "metadata": {}, - "outputs": [], - "source": [ - "print(\"elem1 - elem2 : reordered - reference\")\n", - "for kdx, (elem, row1) in enumerate(zip(elems, adj_types1)):\n", - " for ldx, (elem2, val1) in enumerate(zip(elems, row1)):\n", - " val2 = adj_types2[kdx, ldx]\n", - " if val1 != val2: \n", - " print(f\"{kdx} {ldx} {elem} - {elem2} : {val1} - {val2}\")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "c16c9621", - "metadata": {}, - "outputs": [], - "source": [ - "newcell.refmoleclist[0].metals[0]" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "6ce769af", - "metadata": {}, - "outputs": [], - "source": [ - "for atom in newcell.refmoleclist[0].metals[0].get_coord_sphere():\n", - " print(atom.label, atom.parents_index)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "21928f17", - "metadata": {}, - "outputs": [], - "source": [ - "elem_mol1=np.array([0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0,\n", - " 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0])" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "68fd5555", - "metadata": {}, - "outputs": [], - "source": [ - "elem_mol2 = np.array([0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0,\n", - " 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0])" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "f67a62c6", - "metadata": {}, - "outputs": [], - "source": [ - "for idx, (elem, count1, count2) in enumerate(zip(elems, elem_mol1, elem_mol2)):\n", - " if count1 != 0 or count2 != 0:\n", - " print(f\"{idx} {elem} {count1} {count2}\")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "04afa605", - "metadata": {}, - "outputs": [], - "source": [ - "ref = newcell.refmoleclist[0]" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "6e1da269", - "metadata": {}, - "outputs": [], - "source": [ - "ref.set_adj_types()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "fb771a08", - "metadata": {}, - "outputs": [], - "source": [ - "ref.adj_types.shape" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "591f14d2", - "metadata": {}, - "outputs": [], - "source": [ - "newcell.refmoleclist[0].adj_types[10]" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "59085e50", - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "0e6b8155", - "metadata": {}, - "outputs": [], - "source": [ - "reconstructed_molecules" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "efeb3875", - "metadata": {}, - "outputs": [], - "source": [ - "Warning" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "47a6974e", - "metadata": {}, - "outputs": [], - "source": [ - "Warning" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "2d061e78", - "metadata": { - "scrolled": false - }, - "outputs": [], - "source": [ - "for fra in fragments:\n", - " print(fra.coord, fra.frac_coord)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "93fd5a67", - "metadata": { - "scrolled": true - }, - "outputs": [], - "source": [ - "newcell.reconstruct(debug=debug) " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "f1f64cf3", - "metadata": {}, - "outputs": [], - "source": [ - "newcell.refmoleclist[0]" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "1d8b4a16", - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "987d9a2d", - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": 9, - "id": "1a4d5062", - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "data": { - "text/plain": [ - "False" - ] - }, - "execution_count": 9, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "newcell.error_reconstruction" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "id": "5eb92088", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "False" - ] - }, - "execution_count": 10, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "newcell.is_fragmented" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "id": "690f9d22", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 81\n", - " Formula = H41-C32-N2-O3-S-Ni-Br\n", - " Has Adjacency Matrix = YES\n", - " Number of Ligands = 3\n", - " Number of Metals = 1\n", - " ---------------------------------------------------]" - ] - }, - "execution_count": 11, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "newcell.refmoleclist" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "id": "71ca48b4", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 81\n", - " Formula = H41-C32-N2-O3-S-Ni-Br\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.reconstruct\n", - " Number of Ligands = 3\n", - " Number of Metals = 1\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 81\n", - " Formula = H41-C32-N2-O3-S-Ni-Br\n", - " Has Adjacency Matrix = YES\n", - " Origin = cell.reconstruct\n", - " Number of Ligands = 3\n", - " Number of Metals = 1\n", - " ---------------------------------------------------]" - ] - }, - "execution_count": 12, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "newcell.moleclist" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "id": "f10195bc", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[------------- Cell2mol LIGAND Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = ligand\n", - " Number of Atoms = 66\n", - " Formula = H33-C28-N2-O2-S\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_complex\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol LIGAND Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = ligand\n", - " Number of Atoms = 13\n", - " Formula = H8-C4-O\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_complex\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol LIGAND Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = ligand\n", - " Number of Atoms = 1\n", - " Formula = Br\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_complex\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol METAL Object --------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Sub-Type = metal\n", - " Label = Ni\n", - " Atomic Number = 28\n", - " Index in Molecule = 0\n", - " Metal Adjacency (mconnec) = 6\n", - " Regular Adjacencies (connec) = 6\n", - " Coordination Sphere Formula = N2-O2-S-Br\n", - " ----------------------------------------------------]" - ] - }, - "execution_count": 13, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "newcell.get_unique_species(debug=debug)" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "id": "25e6cdaa", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "LIGAND.SPLIT_LIGAND: self.indices=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65]\n", - "LIGAND.SPLIT_LIGAND: conn_idx=[0, 1, 2, 3]\n", - "LIGAND.SPLIT_LIGAND: conn_labels=['S', 'N', 'N', 'O']\n", - "LIGAND.SPLIT_LIGAND: conn_coord=[[7.2868827, 12.0818685, 17.4520631], [7.058379, 12.0657861, 15.8518407], [7.1794209, 10.5617186, 13.434309], [8.0392042, 10.8283577, 17.6128452]]\n", - "LIGAND.SPLIT_LIGAND: conn_radii=[1.05, 0.71, 0.71, 0.66]\n", - "blocklist=[[0, 1, 3], [2]]\n", - "LIGAND.SPLIT_LIGAND: block=[0, 1, 3]\n", - "LIGAND.SPLIT_LIGAND: block=[2]\n", - "ADD_ATOM: Metalist length 1\n", - "ADD_ATOM: Ligand Atoms 66\n", - "ADD_ATOM: site= 0\n", - "ADD_ATOM: evaluating apos=array([ 7.2868827, 12.0818685, 17.4520631]) and tgt.coord=[7.5712858, 10.2174988, 15.3948914]\n", - "ADD_ATOM: received tmpconnec[posadded]=2\n", - "ADD_ATOM: Chosen Metal index None. H was added at site 0 but RESET due to connec=2\n", - "ADD_ATOM: Metalist length 1\n", - "ADD_ATOM: Ligand Atoms 66\n", - "ADD_ATOM: site= 1\n", - "ADD_ATOM: evaluating apos=array([ 7.058379 , 12.0657861, 15.8518407]) and tgt.coord=[7.5712858, 10.2174988, 15.3948914]\n", - "ADD_ATOM: received tmpconnec[posadded]=1\n", - "ADD_ATOM: Chosen Metal index None. H is added at site 1\n", - "ADD_ATOM: Metalist length 1\n", - "ADD_ATOM: Ligand Atoms 66\n", - "ADD_ATOM: site= 0\n", - "ADD_ATOM: evaluating apos=array([ 7.2868827, 12.0818685, 17.4520631]) and tgt.coord=[7.5712858, 10.2174988, 15.3948914]\n", - "ADD_ATOM: received tmpconnec[posadded]=2\n", - "ADD_ATOM: Chosen Metal index None. H was added at site 0 but RESET due to connec=2\n", - "protonation_states=[------------- Cell2mol Protonation ----------------\n", - " Status = True\n", - " Labels = ['S', 'N', 'N', 'O', 'O', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'C', 'H', 'C', 'C', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H']\n", - " Type = Non-local\n", - " Atoms added in positions = [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n", - " 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]\n", - " Atoms blocked (no atoms added) = [1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n", - " 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]\n", - "---------------------------------------------------\n", - "]\n", - "smiles='[H][C+]([N-][c-]1[c+](C([H])(C([H])([H])[H])C([H])([H])[H])[c-]([H])[c+]([H])[c+]([H])[c-]1C([H])(C([H])([H])[H])C([H])([H])[H])[C+]1[C-]([H])[C-]([H])[C+]([H])[C-]([H])[C-]1[N-][S+2]([O-])([O-])[C+]1[C+](C([H])([H])[H])[C-]([H])[C+](C([H])([H])[H])[C-]([H])[C+]1C([H])([H])[H]'\n", - "smiles='[H]C(=Nc1c(C([H])(C([H])([H])[H])C([H])([H])[H])c([H])c([H])c([H])c1C([H])(C([H])([H])[H])C([H])([H])[H])c1c([H])c([H])c([H])c([H])c1N=S(=O)([O-])c1c(C([H])([H])[H])c([H])c(C([H])([H])[H])c([H])c1C([H])([H])[H]'\n", - "smiles='[H]C(=Nc1c(C([H])(C([H])([H])[H])C([H])([H])[H])c([H])c([H])c([H])c1C([H])(C([H])([H])[H])C([H])([H])[H])c1c([H])c([H])c([H])c([H])c1[N-][S+3](=O)([O-])c1c(C([H])([H])[H])c([H])c(C([H])([H])[H])c([H])c1C([H])([H])[H]'\n", - "smiles='[H][C+]([N-][c-]1[c+](C([H])(C([H])([H])[H])C([H])([H])[H])[c-]([H])[c+]([H])[c+]([H])[c-]1C([H])(C([H])([H])[H])C([H])([H])[H])[C+]1[C-]([H])[C-]([H])[C+]([H])[C-]([H])[C-]1[N-][S+2]([O-])([O-])[c-]1[c+](C([H])([H])[H])[c-]([H])[c+](C([H])([H])[H])[c-]([H])[c+]1C([H])([H])[H]'\n", - "smiles='[H][C+]([N-][c-]1[c+](C([H])(C([H])([H])[H])C([H])([H])[H])[c-]([H])[c+]([H])[c+]([H])[c-]1C([H])(C([H])([H])[H])C([H])([H])[H])[C+]1[C-]([H])[C-]([H])[C+]([H])[C-]([H])[C-]1[N-][S+2]([O-])([O-])[c+]1[c+](C([H])([H])[H])[c+]([H])[c+](C([H])([H])[H])[c-]([H])[c+]1C([H])([H])[H]'\n", - "smiles='[H]C([N-]c1c(C([H])(C([H])([H])[H])C([H])([H])[H])c([H])c([H])c([H])c1C([H])(C([H])([H])[H])C([H])([H])[H])=C1C([H])=C([H])[C-]([H])C([H])=C1[N-]S(#[O+])([O-])c1c(C([H])([H])[H])c([H])c(C([H])([H])[H])c([H])c1C([H])([H])[H]'\n", - "smiles='[H][C+]1[C+](C([H])([H])[H])[C+]([S+2]([O-])([O-])[N-][c+]2[c+]([H])[c+]([H])[c+]([H])[c+]([H])[c-]2[C-]([H])[N-][c+]2[c+](C([H])(C([H])([H])[H])C([H])([H])[H])[c-]([H])[c-]([H])[c+]([H])[c-]2C([H])(C([H])([H])[H])C([H])([H])[H])[C-](C([H])([H])[H])[C+]([H])[C-]1C([H])([H])[H]'\n", - "H33-C28-N2-O2-S\n", - "spec.protonation_states=[------------- Cell2mol Protonation ----------------\n", - " Status = True\n", - " Labels = ['S', 'N', 'N', 'O', 'O', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'C', 'H', 'C', 'C', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H']\n", - " Type = Non-local\n", - " Atoms added in positions = [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n", - " 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]\n", - " Atoms blocked (no atoms added) = [1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n", - " 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]\n", - "---------------------------------------------------\n", - "]\n", - "\n", - "LIGAND.SPLIT_LIGAND: self.indices=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]\n", - "LIGAND.SPLIT_LIGAND: conn_idx=[0]\n", - "LIGAND.SPLIT_LIGAND: conn_labels=['O']\n", - "LIGAND.SPLIT_LIGAND: conn_coord=[[5.9060053, 9.2427195, 16.0102231]]\n", - "LIGAND.SPLIT_LIGAND: conn_radii=[0.66]\n", - "blocklist=[[0]]\n", - "LIGAND.SPLIT_LIGAND: block=[0]\n", - "ADD_ATOM: Metalist length 1\n", - "ADD_ATOM: Ligand Atoms 13\n", - "ADD_ATOM: site= 0\n", - "ADD_ATOM: evaluating apos=array([ 5.9060053, 9.2427195, 16.0102231]) and tgt.coord=[7.5712858, 10.2174988, 15.3948914]\n", - "ADD_ATOM: received tmpconnec[posadded]=1\n", - "ADD_ATOM: Chosen Metal index None. H is added at site 0\n", - "protonation_states=[------------- Cell2mol Protonation ----------------\n", - " Status = True\n", - " Labels = ['O', 'C', 'H', 'C', 'H', 'C', 'H', 'H', 'H', 'H', 'C', 'H', 'H']\n", - " Type = Local\n", - " Atoms added in positions = [0 0 0 0 0 0 0 0 0 0 0 0 0]\n", - " Atoms blocked (no atoms added) = [1 0 0 0 0 0 0 0 0 0 0 0 0]\n", - "---------------------------------------------------\n", - "]\n", - "smiles='[H]C1([H])OC([H])([H])C([H])([H])C1([H])[H]'\n", - "smiles='[H]C1([H])OC([H])([H])C([H])([H])C1([H])[H]'\n", - "smiles='[H]C1([H])OC([H])([H])C([H])([H])C1([H])[H]'\n", - "smiles='[H]C1([H])OC([H])([H])C([H])([H])C1([H])[H]'\n", - "smiles='[H]C1([H])OC([H])([H])C([H])([H])C1([H])[H]'\n", - "H8-C4-O\n", - "spec.protonation_states=[------------- Cell2mol Protonation ----------------\n", - " Status = True\n", - " Labels = ['O', 'C', 'H', 'C', 'H', 'C', 'H', 'H', 'H', 'H', 'C', 'H', 'H']\n", - " Type = Local\n", - " Atoms added in positions = [0 0 0 0 0 0 0 0 0 0 0 0 0]\n", - " Atoms blocked (no atoms added) = [1 0 0 0 0 0 0 0 0 0 0 0 0]\n", - "---------------------------------------------------\n", - "]\n", - "\n", - "LIGAND.SPLIT_LIGAND: self.indices=[0]\n", - "LIGAND.SPLIT_LIGAND: conn_idx=[0]\n", - "LIGAND.SPLIT_LIGAND: conn_labels=['Br']\n", - "LIGAND.SPLIT_LIGAND: conn_coord=[[9.2242858, 8.5325201, 15.2833638]]\n", - "LIGAND.SPLIT_LIGAND: conn_radii=[1.2]\n", - "blocklist=[[0]]\n", - "LIGAND.SPLIT_LIGAND: block=[0]\n", - "ADD_ATOM: Metalist length 1\n", - "ADD_ATOM: Ligand Atoms 1\n", - "ADD_ATOM: site= 0\n", - "ADD_ATOM: evaluating apos=array([ 9.2242858, 8.5325201, 15.2833638]) and tgt.coord=[7.5712858, 10.2174988, 15.3948914]\n", - "ADD_ATOM: received tmpconnec[posadded]=1\n", - "ADD_ATOM: Chosen Metal index None. H is added at site 0\n", - "protonation_states=[------------- Cell2mol Protonation ----------------\n", - " Status = True\n", - " Labels = ['Br']\n", - " Type = Local\n", - " Atoms added in positions = [0]\n", - " Atoms blocked (no atoms added) = [1]\n", - "---------------------------------------------------\n", - "]\n", - "smiles='[Br-]'\n", - "smiles='[Br-]'\n", - "smiles='[Br-]'\n", - "smiles='[Br-]'\n", - "smiles='[Br-]'\n", - "Br\n", - "spec.protonation_states=[------------- Cell2mol Protonation ----------------\n", - " Status = True\n", - " Labels = ['Br']\n", - " Type = Local\n", - " Atoms added in positions = [0]\n", - " Atoms blocked (no atoms added) = [1]\n", - "---------------------------------------------------\n", - "]\n", - "\n", - "\n", - "[[-1], [0], [-1], [2, 3]]\n" - ] - } - ], - "source": [ - "selected_cs = []\n", - "for idx, spec in enumerate(newcell.unique_species):\n", - "# print(\"doing\", spec)\n", - " if spec.subtype != \"metal\":\n", - " spec.get_protonation_states()\n", - " spec.get_possible_cs()\n", - " print(spec.formula)\n", - " selected_cs.append(list([cs.corr_total_charge for cs in spec.possible_cs]))\n", - " print(f\"{spec.protonation_states=}\")\n", - "# for prot in spec.protonation_states :\n", - "# for sub_spec, sub_prot in zip(spec.coord, prot.coords):\n", - "# print(sub_spec, sub_prot, (sub_spec == sub_prot)) \n", - "# print(\"==========\") \n", - "# for cs in spec.possible_cs :\n", - "# for sub_spec, sub_cs_prot in zip(spec.coord, cs.protonation.coords):\n", - "# print(sub_spec, sub_cs_prot, (sub_spec == sub_cs_prot)) \n", - " \n", - "# print(\"==========\") \n", - "# for prot, cs in zip(spec.protonation_states, spec.possible_cs) :\n", - "# for sub_prot, sub_cs_prot in zip(prot.coords, cs.protonation.coords):\n", - "# print(sub_prot, sub_cs_prot, (sub_prot == sub_cs_prot)) \n", - " else :\n", - " spec.get_possible_cs()\n", - " selected_cs.append(spec.possible_cs) \n", - " print(\"\")\n", - "print(selected_cs)" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "id": "2972ca26", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[[-1], [0], [-1], [2, 3]]" - ] - }, - "execution_count": 15, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "selected_cs" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "id": "2de46e92", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "BALANCE: iterlist [[-1], [0], [-1], [2, 3]]\n", - "BALANCE: unique_indices [0, 1, 2, 3, 1, 0, 2, 3]\n", - "BALANCE: tmpdistr [(-1, 0, -1, 2), (-1, 0, -1, 3)]\n", - "BALANCE: alldistr added: [-1, 0, -1, 2, 0, -1, -1, 2]\n", - "d=[-1, 0, -1, 2, 0, -1, -1, 2]\n", - "BALANCE: alldistr added: [-1, 0, -1, 3, 0, -1, -1, 3]\n", - "d=[-1, 0, -1, 2, 0, -1, -1, 2]\n", - "d=[-1, 0, -1, 3, 0, -1, -1, 3]\n" - ] - } - ], - "source": [ - "final_charge_distribution = balance_charge(newcell.unique_indices, newcell.unique_species, debug=2)" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "id": "6e2772ef", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[[-1, 0, -1, 2, 0, -1, -1, 2]]" - ] - }, - "execution_count": 17, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "final_charge_distribution" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "86a83037", - "metadata": {}, - "outputs": [], - "source": [ - "def set_charges_create_bonds (specie, unique_indices, unique_species, final_charge_distribution):\n", - " \n", - " spec = unique_species[specie.unique_index]\n", - " indices = [index for index, value in enumerate(unique_indices) if value == specie.unique_index]\n", - " target_charge = [final_charge_distribution[i] for i in indices][0] \n", - " if debug > 1: print(spec, indices, target_charge)\n", - " \n", - " if (specie.subtype == \"molecule\" and specie.iscomplex == False) or (specie.subtype == \"ligand\"):\n", - " formula = specie.formula\n", - " charge_list = [cs.corr_total_charge for cs in spec.possible_cs]\n", - " \n", - " elif specie.subtype == \"metal\":\n", - " formula = specie.label\n", - " charge_list = spec.possible_cs\n", - " \n", - " if target_charge in charge_list: \n", - " if debug > 1: print(f\"Target charge {target_charge} of {formula} exists in {charge_list}.\" )\n", - " else:\n", - " if debug > 1: print(f\"ERROR: Target charge {target_charge} of {formula} does not exist in {charge_list}.\" )\n", - " return None\n", - " \n", - " if (specie.subtype == \"molecule\" and specie.iscomplex == False) or (specie.subtype == \"ligand\"):\n", - " print(specie.formula)\n", - " specie.get_protonation_states(debug=0)\n", - " specie.get_possible_cs(debug=0)\n", - " formula = specie.formula\n", - " charge_list = [cs.corr_total_charge for cs in specie.possible_cs] \n", - " \n", - " if target_charge in charge_list:\n", - " if debug > 1: print(f\"Target charge {target_charge} of {formula} exists in {charge_list}.\")\n", - " idx = charge_list.index(target_charge)\n", - " cs = specie.possible_cs[idx]\n", - " prot = cs.protonation\n", - " specie.set_charges(cs.corr_total_charge, cs.corr_atom_charges, cs.smiles, cs.rdkit_obj)\n", - " specie.create_bonds(debug=0)\n", - " else:\n", - " if debug > 1: print(f\"ERROR: Target charge {target_charge} of {formula} does not exist in {charge_list}.\" )\n", - " return None\n", - " \n", - " elif specie.subtype == \"metal\":\n", - " print(specie.label)\n", - " specie.get_possible_cs(debug=0)\n", - " formula = specie.label\n", - " charge_list = spec.possible_cs \n", - "\n", - " if target_charge in charge_list:\n", - " if debug > 1: print(f\"Target charge {target_charge} of {formula} exists in {charge_list}.\" )\n", - " idx = charge_list.index(target_charge)\n", - " cs = specie.possible_cs[idx]\n", - " specie.set_charge(cs) \n", - " else:\n", - " if debug > 1: print(f\"ERROR: Target charge {target_charge} of {formula} does not exist in {charge_list}.\" )\n", - " return None " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "b8f13537", - "metadata": {}, - "outputs": [], - "source": [ - "def prepare_mols_v4 (moleclist: list, unique_indices: list, unique_species: list, \n", - " selected_cs: list, final_charge_distribution: list, debug: int=0):\n", - " count = 0 \n", - " for mol in moleclist:\n", - " if mol.iscomplex == False:\n", - " set_charges_create_bonds(mol, unique_indices, unique_species, final_charge_distribution)\n", - " count += 1\n", - " \n", - " elif mol.iscomplex:\n", - " tmp_atcharge = np.zeros((mol.natoms))\n", - " tmp_smiles = []\n", - " \n", - " for lig in mol.ligands: \n", - " set_charges_create_bonds(lig, unique_indices, unique_species, final_charge_distribution)\n", - " count += 1\n", - " \n", - " tmp_smiles.append(lig.smiles)\n", - " parent_indices = lig.get_parent_indices(\"molecule\")\n", - " for kdx, a in enumerate(parent_indices):\n", - " tmp_atcharge[a] = lig.atomic_charges[kdx]\n", - " \n", - " for met in mol.metals: \n", - " set_charges_create_bonds(met, unique_indices, unique_species, final_charge_distribution)\n", - " count += 1\n", - " parent_index = met.get_parent_index(\"molecule\")\n", - " tmp_atcharge[parent_index] = met.charge \n", - " \n", - " mol.set_charges(int(sum(tmp_atcharge)), atomic_charges=tmp_atcharge, smiles=tmp_smiles)\n", - "\n", - " if count != len(final_charge_distribution):\n", - " Warning = True\n", - " else:\n", - " Warning = False\n", - " \n", - " return moleclist, Warning\n", - " \n", - " \n", - "# ref_data, target_data = arrange_data_for_reorder(spec, mol)\n", - "# print(f\"{spec.labels=}\")\n", - "# print(f\"{mol.labels=}\")\n", - "# print(ref_data, target_data)\n", - "# dummy1, dummy2, map12 = reorder(ref_data, target_data, spec.coord, mol.coord)\n", - " \n", - "# print(\"*****Before function reorder within class****\")\n", - "# print(cs.protonation)\n", - "# prot = cs.protonation.reorder(map12, debug=debug)\n", - "# print(\"*****After function reorder within class****\")\n", - "# print(cs.protonation)\n", - "# print(prot)\n", - "# ref_data, target_data = arrange_data_for_reorder(mol, spec)\n", - "# print(f\"{spec.labels=}\")\n", - "# print(f\"{mol.labels=}\")\n", - "# print(ref_data, target_data)\n", - "# dummy1, dummy2, map12 = reorder(ref_data, target_data, mol.coord, spec.coord)\n", - "# reordered_prot_spec = reorder_protonation(spec.possible_cs[0].protonation, map12, debug=debug) \n", - "# print(\"**************** After reorder **************** mol vs reordered_protonation\") \n", - "# for l_mol, c_mol, l_prot, c_prot in zip(mol.labels, mol.coord, prot.labels, prot.coords):\n", - "# print(l_mol, l_prot, (l_mol == l_prot), c_mol, c_prot, (c_mol==c_prot) ) \n", - "# print(\"**************** After reorder **************** mol vs reordered_protonation_spec\") \n", - "# for l_mol, c_mol, l_prot, c_prot in zip(mol.labels, mol.coord, reordered_prot_spec.labels, reordered_prot_spec.coords):\n", - "# print(l_mol, l_prot, (l_mol == l_prot), c_mol, c_prot, (c_mol==c_prot) ) " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "dcd86634", - "metadata": {}, - "outputs": [], - "source": [ - "newcell.moleclist, newcell.error_prepare_mols = prepare_mols_v4(newcell.moleclist, \n", - " newcell.unique_indices, \n", - " newcell.unique_species, \n", - " selected_cs, \n", - " final_charge_distribution[0], \n", - " debug=debug)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "775c5aea", - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": 18, - "id": "dde2bc83", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "smiles='[H][C+]([N-][c-]1[c+](C([H])(C([H])([H])[H])C([H])([H])[H])[c-]([H])[c+]([H])[c+]([H])[c-]1C([H])(C([H])([H])[H])C([H])([H])[H])[C+]1[C-]([H])[C-]([H])[C+]([H])[C-]([H])[C-]1[N-][S+2]([O-])([O-])[C+]1[C+](C([H])([H])[H])[C-]([H])[C+](C([H])([H])[H])[C-]([H])[C+]1C([H])([H])[H]'\n", - "smiles='[H]C(=Nc1c(C([H])(C([H])([H])[H])C([H])([H])[H])c([H])c([H])c([H])c1C([H])(C([H])([H])[H])C([H])([H])[H])c1c([H])c([H])c([H])c([H])c1N=S(=O)([O-])c1c(C([H])([H])[H])c([H])c(C([H])([H])[H])c([H])c1C([H])([H])[H]'\n", - "smiles='[H]C(=Nc1c(C([H])(C([H])([H])[H])C([H])([H])[H])c([H])c([H])c([H])c1C([H])(C([H])([H])[H])C([H])([H])[H])c1c([H])c([H])c([H])c([H])c1[N-][S+3](=O)([O-])c1c(C([H])([H])[H])c([H])c(C([H])([H])[H])c([H])c1C([H])([H])[H]'\n", - "smiles='[H][C+]([N-][c-]1[c+](C([H])(C([H])([H])[H])C([H])([H])[H])[c-]([H])[c+]([H])[c+]([H])[c-]1C([H])(C([H])([H])[H])C([H])([H])[H])[C+]1[C-]([H])[C-]([H])[C+]([H])[C-]([H])[C-]1[N-][S+2]([O-])([O-])[c-]1[c+](C([H])([H])[H])[c-]([H])[c+](C([H])([H])[H])[c-]([H])[c+]1C([H])([H])[H]'\n", - "smiles='[H][C+]([N-][c-]1[c+](C([H])(C([H])([H])[H])C([H])([H])[H])[c-]([H])[c+]([H])[c+]([H])[c-]1C([H])(C([H])([H])[H])C([H])([H])[H])[C+]1[C-]([H])[C-]([H])[C+]([H])[C-]([H])[C-]1[N-][S+2]([O-])([O-])[c+]1[c+](C([H])([H])[H])[c+]([H])[c+](C([H])([H])[H])[c-]([H])[c+]1C([H])([H])[H]'\n", - "smiles='[H]C([N-]c1c(C([H])(C([H])([H])[H])C([H])([H])[H])c([H])c([H])c([H])c1C([H])(C([H])([H])[H])C([H])([H])[H])=C1C([H])=C([H])[C-]([H])C([H])=C1[N-]S(#[O+])([O-])c1c(C([H])([H])[H])c([H])c(C([H])([H])[H])c([H])c1C([H])([H])[H]'\n", - "smiles='[H][C+]1[C+](C([H])([H])[H])[C+]([S+2]([O-])([O-])[N-][c+]2[c+]([H])[c+]([H])[c+]([H])[c+]([H])[c-]2[C-]([H])[N-][c+]2[c+](C([H])(C([H])([H])[H])C([H])([H])[H])[c-]([H])[c-]([H])[c+]([H])[c-]2C([H])(C([H])([H])[H])C([H])([H])[H])[C-](C([H])([H])[H])[C+]([H])[C-]1C([H])([H])[H]'\n", - "smiles='[H]C1([H])OC([H])([H])C([H])([H])C1([H])[H]'\n", - "smiles='[H]C1([H])OC([H])([H])C([H])([H])C1([H])[H]'\n", - "smiles='[H]C1([H])OC([H])([H])C([H])([H])C1([H])[H]'\n", - "smiles='[H]C1([H])OC([H])([H])C([H])([H])C1([H])[H]'\n", - "smiles='[H]C1([H])OC([H])([H])C([H])([H])C1([H])[H]'\n", - "smiles='[Br-]'\n", - "smiles='[Br-]'\n", - "smiles='[Br-]'\n", - "smiles='[Br-]'\n", - "smiles='[Br-]'\n", - "d=[-1, 0, -1, 2, 0, -1, -1, 2]\n", - "d=[-1, 0, -1, 2, 0, -1, -1, 2]\n", - "d=[-1, 0, -1, 3, 0, -1, -1, 3]\n", - "H33-C28-N2-O2-S\n", - "protonation_states=[------------- Cell2mol Protonation ----------------\n", - " Status = True\n", - " Labels = ['S', 'N', 'N', 'O', 'O', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'H', 'H', 'C', 'H', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'C', 'H', 'C', 'C', 'H', 'C', 'C', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H']\n", - " Type = Non-local\n", - " Atoms added in positions = [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n", - " 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]\n", - " Atoms blocked (no atoms added) = [1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n", - " 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]\n", - "---------------------------------------------------\n", - "]\n", - "smiles='[H][C+]([N-][c-]1[c+](C([H])(C([H])([H])[H])C([H])([H])[H])[c-]([H])[c+]([H])[c+]([H])[c-]1C([H])(C([H])([H])[H])C([H])([H])[H])[C+]1[C-]([H])[C-]([H])[C+]([H])[C-]([H])[C-]1[N-][S+2]([O-])([O-])[C+]1[C+](C([H])([H])[H])[C-]([H])[C+](C([H])([H])[H])[C-]([H])[C+]1C([H])([H])[H]'\n", - "smiles='[H]C(=Nc1c(C([H])(C([H])([H])[H])C([H])([H])[H])c([H])c([H])c([H])c1C([H])(C([H])([H])[H])C([H])([H])[H])c1c([H])c([H])c([H])c([H])c1N=S(=O)([O-])c1c(C([H])([H])[H])c([H])c(C([H])([H])[H])c([H])c1C([H])([H])[H]'\n", - "smiles='[H]C(=Nc1c(C([H])(C([H])([H])[H])C([H])([H])[H])c([H])c([H])c([H])c1C([H])(C([H])([H])[H])C([H])([H])[H])c1c([H])c([H])c([H])c([H])c1[N-][S+3](=O)([O-])c1c(C([H])([H])[H])c([H])c(C([H])([H])[H])c([H])c1C([H])([H])[H]'\n", - "smiles='[H][C+]([N-][c-]1[c+](C([H])(C([H])([H])[H])C([H])([H])[H])[c-]([H])[c+]([H])[c+]([H])[c-]1C([H])(C([H])([H])[H])C([H])([H])[H])[C+]1[C-]([H])[C-]([H])[C+]([H])[C-]([H])[C-]1[N-][S+2]([O-])([O-])[c-]1[c+](C([H])([H])[H])[c-]([H])[c+](C([H])([H])[H])[c-]([H])[c+]1C([H])([H])[H]'\n", - "smiles='[H][C+]([N-][c-]1[c+](C([H])(C([H])([H])[H])C([H])([H])[H])[c-]([H])[c+]([H])[c+]([H])[c-]1C([H])(C([H])([H])[H])C([H])([H])[H])[C+]1[C-]([H])[C-]([H])[C+]([H])[C-]([H])[C-]1[N-][S+2]([O-])([O-])[c+]1[c+](C([H])([H])[H])[c+]([H])[c+](C([H])([H])[H])[c-]([H])[c+]1C([H])([H])[H]'\n", - "smiles='[H]C([N-]c1c(C([H])(C([H])([H])[H])C([H])([H])[H])c([H])c([H])c([H])c1C([H])(C([H])([H])[H])C([H])([H])[H])=C1C([H])=C([H])[C-]([H])C([H])=C1[N-]S(#[O+])([O-])c1c(C([H])([H])[H])c([H])c(C([H])([H])[H])c([H])c1C([H])([H])[H]'\n", - "smiles='[H][C+]1[C+](C([H])([H])[H])[C+]([S+2]([O-])([O-])[N-][c+]2[c+]([H])[c+]([H])[c+]([H])[c+]([H])[c-]2[C-]([H])[N-][c+]2[c+](C([H])(C([H])([H])[H])C([H])([H])[H])[c-]([H])[c-]([H])[c+]([H])[c-]2C([H])(C([H])([H])[H])C([H])([H])[H])[C-](C([H])([H])[H])[C+]([H])[C-]1C([H])([H])[H]'\n", - "H8-C4-O\n", - "protonation_states=[------------- Cell2mol Protonation ----------------\n", - " Status = True\n", - " Labels = ['O', 'C', 'H', 'C', 'H', 'C', 'H', 'H', 'H', 'H', 'C', 'H', 'H']\n", - " Type = Local\n", - " Atoms added in positions = [0 0 0 0 0 0 0 0 0 0 0 0 0]\n", - " Atoms blocked (no atoms added) = [1 0 0 0 0 0 0 0 0 0 0 0 0]\n", - "---------------------------------------------------\n", - "]\n", - "smiles='[H]C1([H])OC([H])([H])C([H])([H])C1([H])[H]'\n", - "smiles='[H]C1([H])OC([H])([H])C([H])([H])C1([H])[H]'\n", - "smiles='[H]C1([H])OC([H])([H])C([H])([H])C1([H])[H]'\n", - "smiles='[H]C1([H])OC([H])([H])C([H])([H])C1([H])[H]'\n", - "smiles='[H]C1([H])OC([H])([H])C([H])([H])C1([H])[H]'\n", - "Br\n", - "protonation_states=[------------- Cell2mol Protonation ----------------\n", - " Status = True\n", - " Labels = ['Br']\n", - " Type = Local\n", - " Atoms added in positions = [0]\n", - " Atoms blocked (no atoms added) = [1]\n", - "---------------------------------------------------\n", - "]\n", - "smiles='[Br-]'\n", - "smiles='[Br-]'\n", - "smiles='[Br-]'\n", - "smiles='[Br-]'\n", - "smiles='[Br-]'\n", - "Ni\n", - "H8-C4-O\n", - "LIGAND.SPLIT_LIGAND: self.indices=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]\n", - "LIGAND.SPLIT_LIGAND: conn_idx=[0]\n", - "LIGAND.SPLIT_LIGAND: conn_labels=['O']\n", - "LIGAND.SPLIT_LIGAND: conn_coord=[[7.330304, 4.0405921, 3.9875574]]\n", - "LIGAND.SPLIT_LIGAND: conn_radii=[0.66]\n", - "blocklist=[[0]]\n", - "LIGAND.SPLIT_LIGAND: block=[0]\n", - "ADD_ATOM: Metalist length 1\n", - "ADD_ATOM: Ligand Atoms 13\n", - "ADD_ATOM: site= 0\n", - "ADD_ATOM: evaluating apos=array([7.330304 , 4.0405921, 3.9875574]) and tgt.coord=[5.6650235, 3.0658127, 4.6028891]\n", - "ADD_ATOM: received tmpconnec[posadded]=1\n", - "ADD_ATOM: Chosen Metal index None. H is added at site 0\n", - "protonation_states=[------------- Cell2mol Protonation ----------------\n", - " Status = True\n", - " Labels = ['O', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H', 'C', 'H', 'H']\n", - " Type = Local\n", - " Atoms added in positions = [0 0 0 0 0 0 0 0 0 0 0 0 0]\n", - " Atoms blocked (no atoms added) = [1 0 0 0 0 0 0 0 0 0 0 0 0]\n", - "---------------------------------------------------\n", - "]\n", - "smiles='[H]C1([H])OC([H])([H])C([H])([H])C1([H])[H]'\n", - "smiles='[H]C1([H])OC([H])([H])C([H])([H])C1([H])[H]'\n", - "smiles='[H]C1([H])OC([H])([H])C([H])([H])C1([H])[H]'\n", - "smiles='[H]C1([H])OC([H])([H])C([H])([H])C1([H])[H]'\n", - "smiles='[H]C1([H])OC([H])([H])C([H])([H])C1([H])[H]'\n", - "H33-C28-N2-O2-S\n", - "LIGAND.SPLIT_LIGAND: self.indices=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65]\n", - "LIGAND.SPLIT_LIGAND: conn_idx=[0, 1, 2, 3]\n", - "LIGAND.SPLIT_LIGAND: conn_labels=['S', 'N', 'N', 'O']\n", - "LIGAND.SPLIT_LIGAND: conn_coord=[[5.9494265, 1.2014431, 2.5457175], [6.0568883, 2.721593, 6.5634716], [6.1779302, 1.2175255, 4.1459399], [5.197105, 2.4549538, 2.3849353]]\n", - "LIGAND.SPLIT_LIGAND: conn_radii=[1.05, 0.71, 0.71, 0.66]\n", - "blocklist=[[0, 2, 3], [1]]\n", - "LIGAND.SPLIT_LIGAND: block=[0, 2, 3]\n", - "LIGAND.SPLIT_LIGAND: block=[1]\n", - "ADD_ATOM: Metalist length 1\n", - "ADD_ATOM: Ligand Atoms 66\n", - "ADD_ATOM: site= 0\n", - "ADD_ATOM: evaluating apos=array([5.9494265, 1.2014431, 2.5457175]) and tgt.coord=[5.6650235, 3.0658127, 4.6028891]\n", - "ADD_ATOM: received tmpconnec[posadded]=2\n", - "ADD_ATOM: Chosen Metal index None. H was added at site 0 but RESET due to connec=2\n", - "ADD_ATOM: Metalist length 1\n", - "ADD_ATOM: Ligand Atoms 66\n", - "ADD_ATOM: site= 1\n", - "ADD_ATOM: evaluating apos=array([6.0568883, 2.721593 , 6.5634716]) and tgt.coord=[5.6650235, 3.0658127, 4.6028891]\n", - "ADD_ATOM: received tmpconnec[posadded]=1\n", - "ADD_ATOM: Chosen Metal index None. H is added at site 1\n", - "ADD_ATOM: Metalist length 1\n", - "ADD_ATOM: Ligand Atoms 66\n", - "ADD_ATOM: site= 0\n", - "ADD_ATOM: evaluating apos=array([5.9494265, 1.2014431, 2.5457175]) and tgt.coord=[5.6650235, 3.0658127, 4.6028891]\n", - "ADD_ATOM: received tmpconnec[posadded]=2\n", - "ADD_ATOM: Chosen Metal index None. H was added at site 0 but RESET due to connec=2\n", - "protonation_states=[------------- Cell2mol Protonation ----------------\n", - " Status = True\n", - " Labels = ['S', 'N', 'N', 'O', 'O', 'C', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'C', 'C', 'H', 'C', 'C', 'H', 'C', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H', 'C', 'H', 'H', 'H']\n", - " Type = Non-local\n", - " Atoms added in positions = [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n", - " 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]\n", - " Atoms blocked (no atoms added) = [1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n", - " 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]\n", - "---------------------------------------------------\n", - "]\n", - "smiles='[H][C+]1[C-]([H])[C+](C([H])(C([H])([H])[H])C([H])([H])[H])[C+]([N-][C-]([H])[c+]2[c-]([H])[c+]([H])[c-]([H])[c+]([H])[c-]2[N-][S+2]([O-])([O-])[c+]2[c-](C([H])([H])[H])[c+]([H])[c-](C([H])([H])[H])[c+]([H])[c-]2C([H])([H])[H])[C+](C([H])(C([H])([H])[H])C([H])([H])[H])[C-]1[H]'\n", - "smiles='[H]C(=Nc1c(C([H])(C([H])([H])[H])C([H])([H])[H])c([H])c([H])c([H])c1C([H])(C([H])([H])[H])C([H])([H])[H])c1c([H])c([H])c([H])c([H])c1N=S(=O)([O-])c1c(C([H])([H])[H])c([H])c(C([H])([H])[H])c([H])c1C([H])([H])[H]'\n", - "smiles='[H]C([N-]c1c(C([H])(C([H])([H])[H])C([H])([H])[H])c([H])c([H])c([H])c1C([H])(C([H])([H])[H])C([H])([H])[H])=C1C(=[N+]=[S+3]([O-])([O-])c2c(C([H])([H])[H])c([H])c(C([H])([H])[H])c([H])c2C([H])([H])[H])C([H])=C([H])C([H])=C1[H]'\n", - "smiles='[H][c+]1[c-]([H])[c+]([H])[c-]([N-][S+2]([O-])([O-])[c+]2[c-](C([H])([H])[H])[c+]([H])[c-](C([H])([H])[H])[c+]([H])[c-]2C([H])([H])[H])[c+]([C-]([H])[N-][c-]2[c+](C([H])(C([H])([H])[H])C([H])([H])[H])[c-]([H])[c+]([H])[c-]([H])[c+]2C([H])(C([H])([H])[H])C([H])([H])[H])[c-]1[H]'\n", - "smiles='[H][c+]1[c+](C([H])(C([H])([H])[H])C([H])([H])[H])[c+]([N-][C-]([H])[c+]2[c-]([H])[c+]([H])[c-]([H])[c+]([H])[c-]2[N-][S+2]([O-])([O-])[c+]2[c-](C([H])([H])[H])[c+]([H])[c-](C([H])([H])[H])[c+]([H])[c-]2C([H])([H])[H])[c+](C([H])(C([H])([H])[H])C([H])([H])[H])[c-]([H])[c+]1[H]'\n", - "smiles='[H]c1c([H])c([H])c([C-]([H])[N-]c2c(C([H])(C([H])([H])[H])C([H])([H])[H])c([H])c([H])c([H])c2C([H])(C([H])([H])[H])C([H])([H])[H])c([N-]S(#[O+])([O-])c2c(C([H])([H])[H])c([H])c(C([H])([H])[H])c([H])c2C([H])([H])[H])c1[H]'\n", - "smiles='[H][C+]([N-][c+]1[c+](C([H])(C([H])([H])[H])C([H])([H])[H])[c+]([H])[c+]([H])[c+]([H])[c-]1C([H])(C([H])([H])[H])C([H])([H])[H])[c-]1[c+]([H])[c-]([H])[c+]([H])[c-]([H])[c+]1[N-][S+2]([O-])([O-])[c-]1[c+](C([H])([H])[H])[c-]([H])[c+](C([H])([H])[H])[c-]([H])[c+]1C([H])([H])[H]'\n", - "Br\n", - "LIGAND.SPLIT_LIGAND: self.indices=[0]\n", - "LIGAND.SPLIT_LIGAND: conn_idx=[0]\n", - "LIGAND.SPLIT_LIGAND: conn_labels=['Br']\n", - "LIGAND.SPLIT_LIGAND: conn_coord=[[4.0120234, 4.7507914, 4.7144168]]\n", - "LIGAND.SPLIT_LIGAND: conn_radii=[1.2]\n", - "blocklist=[[0]]\n", - "LIGAND.SPLIT_LIGAND: block=[0]\n", - "ADD_ATOM: Metalist length 1\n", - "ADD_ATOM: Ligand Atoms 1\n", - "ADD_ATOM: site= 0\n", - "ADD_ATOM: evaluating apos=array([4.0120234, 4.7507914, 4.7144168]) and tgt.coord=[5.6650235, 3.0658127, 4.6028891]\n", - "ADD_ATOM: received tmpconnec[posadded]=1\n", - "ADD_ATOM: Chosen Metal index None. H is added at site 0\n", - "protonation_states=[------------- Cell2mol Protonation ----------------\n", - " Status = True\n", - " Labels = ['Br']\n", - " Type = Local\n", - " Atoms added in positions = [0]\n", - " Atoms blocked (no atoms added) = [1]\n", - "---------------------------------------------------\n", - "]\n", - "smiles='[Br-]'\n", - "smiles='[Br-]'\n", - "smiles='[Br-]'\n", - "smiles='[Br-]'\n", - "smiles='[Br-]'\n", - "Ni\n" - ] - }, - { - "data": { - "text/plain": [ - "[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 81\n", - " Formula = H41-C32-N2-O3-S-Ni-Br\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = 0\n", - " Smiles = ['[H]C(=Nc1c(C([H])(C([H])([H])[H])C([H])([H])[H])c([H])c([H])c([H])c1C([H])(C([H])([H])[H])C([H])([H])[H])c1c([H])c([H])c([H])c([H])c1N=S(=O)([O-])c1c(C([H])([H])[H])c([H])c(C([H])([H])[H])c([H])c1C([H])([H])[H]', '[H]C1([H])OC([H])([H])C([H])([H])C1([H])[H]', '[Br-]']\n", - " Origin = cell.reconstruct\n", - " Number of Ligands = 3\n", - " Number of Metals = 1\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 81\n", - " Formula = H41-C32-N2-O3-S-Ni-Br\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = 0\n", - " Smiles = ['[H]C1([H])OC([H])([H])C([H])([H])C1([H])[H]', '[H]C(=Nc1c(C([H])(C([H])([H])[H])C([H])([H])[H])c([H])c([H])c([H])c1C([H])(C([H])([H])[H])C([H])([H])[H])c1c([H])c([H])c([H])c([H])c1N=S(=O)([O-])c1c(C([H])([H])[H])c([H])c(C([H])([H])[H])c([H])c1C([H])([H])[H]', '[Br-]']\n", - " Origin = cell.reconstruct\n", - " Number of Ligands = 3\n", - " Number of Metals = 1\n", - " ---------------------------------------------------]" - ] - }, - "execution_count": 18, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "newcell.assign_charges(debug=debug)" - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "id": "d6340c3e", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "False" - ] - }, - "execution_count": 19, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "newcell.error_prepare_mols" - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "id": "63c1a8cf", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 81\n", - " Formula = H41-C32-N2-O3-S-Ni-Br\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = 0\n", - " Smiles = ['[H]C(=Nc1c(C([H])(C([H])([H])[H])C([H])([H])[H])c([H])c([H])c([H])c1C([H])(C([H])([H])[H])C([H])([H])[H])c1c([H])c([H])c([H])c([H])c1N=S(=O)([O-])c1c(C([H])([H])[H])c([H])c(C([H])([H])[H])c([H])c1C([H])([H])[H]', '[H]C1([H])OC([H])([H])C([H])([H])C1([H])[H]', '[Br-]']\n", - " Origin = cell.reconstruct\n", - " Number of Ligands = 3\n", - " Number of Metals = 1\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 81\n", - " Formula = H41-C32-N2-O3-S-Ni-Br\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = 0\n", - " Smiles = ['[H]C1([H])OC([H])([H])C([H])([H])C1([H])[H]', '[H]C(=Nc1c(C([H])(C([H])([H])[H])C([H])([H])[H])c([H])c([H])c([H])c1C([H])(C([H])([H])[H])C([H])([H])[H])c1c([H])c([H])c([H])c([H])c1N=S(=O)([O-])c1c(C([H])([H])[H])c([H])c(C([H])([H])[H])c([H])c1C([H])([H])[H]', '[Br-]']\n", - " Origin = cell.reconstruct\n", - " Number of Ligands = 3\n", - " Number of Metals = 1\n", - " ---------------------------------------------------]" - ] - }, - "execution_count": 20, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "newcell.moleclist" - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "id": "7f30d977", - "metadata": { - "scrolled": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "------------- Cell2mol GROUP Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = group\n", - " Number of Atoms = 2\n", - " Formula = N-O\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_ligand\n", - " Number of Metals = 1\n", - "---------------------------------------------------\n", - "\n", - "['Ni', 'N', 'O'] [[7.5712858, 10.2174988, 15.3948914], [7.058379, 12.0657861, 15.8518407], [8.0392042, 10.8283577, 17.6128452]]\n", - "------------- Cell2mol GROUP Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = group\n", - " Number of Atoms = 0\n", - " Formula = \n", - " Has Adjacency Matrix = YES\n", - " Origin = split_ligand\n", - " Number of Metals = 1\n", - "---------------------------------------------------\n", - "\n", - "['Ni'] [[7.5712858, 10.2174988, 15.3948914]]\n", - "------------- Cell2mol GROUP Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = group\n", - " Number of Atoms = 1\n", - " Formula = O\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_ligand\n", - " Number of Metals = 1\n", - "---------------------------------------------------\n", - "\n", - "['Ni', 'O'] [[7.5712858, 10.2174988, 15.3948914], [5.9060053, 9.2427195, 16.0102231]]\n", - "------------- Cell2mol GROUP Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = group\n", - " Number of Atoms = 1\n", - " Formula = Br\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_ligand\n", - " Number of Metals = 1\n", - "---------------------------------------------------\n", - "\n", - "['Ni', 'Br'] [[7.5712858, 10.2174988, 15.3948914], [9.2242858, 8.5325201, 15.2833638]]\n", - "coord_group=[------------- Cell2mol GROUP Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = group\n", - " Number of Atoms = 2\n", - " Formula = N-O\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_ligand\n", - " Number of Metals = 1\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol GROUP Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = group\n", - " Number of Atoms = 1\n", - " Formula = O\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_ligand\n", - " Number of Metals = 1\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol GROUP Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = group\n", - " Number of Atoms = 1\n", - " Formula = Br\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_ligand\n", - " Number of Metals = 1\n", - "---------------------------------------------------\n", - "]\n", - "coord_nr=3\n", - "symbols=['Ni', 'N', 'O', 'O', 'Br']\n", - "positions=[[7.5712858, 10.2174988, 15.3948914], [7.058379, 12.0657861, 15.8518407], [8.0392042, 10.8283577, 17.6128452], [5.9060053, 9.2427195, 16.0102231], [9.2242858, 8.5325201, 15.2833638]]\n", - "4\n", - "[[1, 2], [1, 3], [1, 4], [1, 5]]\n", - "------------- Cell2mol GROUP Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = group\n", - " Number of Atoms = 1\n", - " Formula = O\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_ligand\n", - " Number of Metals = 1\n", - "---------------------------------------------------\n", - "\n", - "['Ni', 'O'] [[5.6650235, 3.0658127, 4.6028891], [7.330304, 4.0405921, 3.9875574]]\n", - "------------- Cell2mol GROUP Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = group\n", - " Number of Atoms = 2\n", - " Formula = N-O\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_ligand\n", - " Number of Metals = 1\n", - "---------------------------------------------------\n", - "\n", - "['Ni', 'N', 'O'] [[5.6650235, 3.0658127, 4.6028891], [6.1779302, 1.2175255, 4.1459399], [5.197105, 2.4549538, 2.3849353]]\n", - "------------- Cell2mol GROUP Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = group\n", - " Number of Atoms = 0\n", - " Formula = \n", - " Has Adjacency Matrix = YES\n", - " Origin = split_ligand\n", - " Number of Metals = 1\n", - "---------------------------------------------------\n", - "\n", - "['Ni'] [[5.6650235, 3.0658127, 4.6028891]]\n", - "------------- Cell2mol GROUP Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = group\n", - " Number of Atoms = 1\n", - " Formula = Br\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_ligand\n", - " Number of Metals = 1\n", - "---------------------------------------------------\n", - "\n", - "['Ni', 'Br'] [[5.6650235, 3.0658127, 4.6028891], [4.0120234, 4.7507914, 4.7144168]]\n", - "coord_group=[------------- Cell2mol GROUP Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = group\n", - " Number of Atoms = 1\n", - " Formula = O\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_ligand\n", - " Number of Metals = 1\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol GROUP Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = group\n", - " Number of Atoms = 2\n", - " Formula = N-O\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_ligand\n", - " Number of Metals = 1\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol GROUP Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = group\n", - " Number of Atoms = 1\n", - " Formula = Br\n", - " Has Adjacency Matrix = YES\n", - " Origin = split_ligand\n", - " Number of Metals = 1\n", - "---------------------------------------------------\n", - "]\n", - "coord_nr=3\n", - "symbols=['Ni', 'O', 'N', 'O', 'Br']\n", - "positions=[[5.6650235, 3.0658127, 4.6028891], [7.330304, 4.0405921, 3.9875574], [6.1779302, 1.2175255, 4.1459399], [5.197105, 2.4549538, 2.3849353], [4.0120234, 4.7507914, 4.7144168]]\n", - "4\n", - "[[1, 2], [1, 3], [1, 4], [1, 5]]\n" - ] - }, - { - "data": { - "text/plain": [ - "[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 81\n", - " Formula = H41-C32-N2-O3-S-Ni-Br\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = 0\n", - " Spin = 3\n", - " Smiles = ['[H]C(=Nc1c(C([H])(C([H])([H])[H])C([H])([H])[H])c([H])c([H])c([H])c1C([H])(C([H])([H])[H])C([H])([H])[H])c1c([H])c([H])c([H])c([H])c1N=S(=O)([O-])c1c(C([H])([H])[H])c([H])c(C([H])([H])[H])c([H])c1C([H])([H])[H]', '[H]C1([H])OC([H])([H])C([H])([H])C1([H])[H]', '[Br-]']\n", - " Origin = cell.reconstruct\n", - " Number of Ligands = 3\n", - " Number of Metals = 1\n", - " ---------------------------------------------------,\n", - " ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 81\n", - " Formula = H41-C32-N2-O3-S-Ni-Br\n", - " Has Adjacency Matrix = YES\n", - " Total Charge = 0\n", - " Spin = 3\n", - " Smiles = ['[H]C1([H])OC([H])([H])C([H])([H])C1([H])[H]', '[H]C(=Nc1c(C([H])(C([H])([H])[H])C([H])([H])[H])c([H])c([H])c([H])c1C([H])(C([H])([H])[H])C([H])([H])[H])c1c([H])c([H])c([H])c([H])c1N=S(=O)([O-])c1c(C([H])([H])[H])c([H])c(C([H])([H])[H])c([H])c1C([H])([H])[H]', '[Br-]']\n", - " Origin = cell.reconstruct\n", - " Number of Ligands = 3\n", - " Number of Metals = 1\n", - " ---------------------------------------------------]" - ] - }, - "execution_count": 21, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "newcell.assign_spin(debug=2)" - ] - }, - { - "cell_type": "code", - "execution_count": 22, - "id": "3a80dacb", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "False" - ] - }, - "execution_count": 22, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "newcell.error_prepare_mols" - ] - }, - { - "cell_type": "code", - "execution_count": 23, - "id": "c261aa9e", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Ni 3\n", - "Ni 3\n" - ] - } - ], - "source": [ - "for mol in newcell.moleclist:\n", - " if mol.iscomplex:\n", - " for met in mol.metals:\n", - " print(met.label, met.spin)" - ] - }, - { - "cell_type": "code", - "execution_count": 24, - "id": "6a57c925", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "SAVING cell2mol CELL object to YOBCUO/YOBCUO.cell\n" - ] - } - ], - "source": [ - "newcell.save(f\"{name}/{name}.cell\")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "d0f11a25", - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "cell2mol", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.10.6" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/cell2mol/test/test_one_by_one_template.ipynb b/cell2mol/test/test_one_by_one_template.ipynb deleted file mode 100644 index dbe74f677..000000000 --- a/cell2mol/test/test_one_by_one_template.ipynb +++ /dev/null @@ -1,184 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "name = \"\"\n", - "infopath = f\"{name}/{name}.info\"\n", - "debug=2" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from cell2mol.read_write import readinfo\n", - "from cell2mol.classes import cell\n", - "from cell2mol.charge_assignment import *" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "print(f\"INITIATING cell object from input\") \n", - "\n", - "# Reads reference molecules from info file, as well as labels and coordinates\n", - "labels, pos, ref_labels, ref_fracs, cellvec, cellparam = readinfo(infopath)\n", - "# Initiates cell\n", - "newcell = cell(name, labels, pos, cellvec, cellparam)\n", - "\n", - "# Loads the reference molecules and checks_missing_H\n", - "newcell.get_reference_molecules(ref_labels, ref_fracs, debug=debug) \n", - "newcell.assess_errors()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "newcell.check_missing_H(debug=debug) " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "newcell.reconstruct(debug=debug) " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "newcell.error_reconstruction" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "newcell.is_fragmented" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "newcell.assign_charges(debug=debug)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "newcell.error_prepare_mols" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "newcell.create_bonds(debug=debug)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "newcell.assign_spin(debug=debug)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "newcell.get_unique_species(debug=debug)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "selected_cs = []\n", - "for idx, spec in enumerate(newcell.unique_species):\n", - "# print(\"doing\", spec)\n", - " if spec.subtype != \"metal\":\n", - " spec.get_protonation_states()\n", - " spec.get_possible_cs()\n", - " print(spec.formula)\n", - " selected_cs.append(list([cs.corr_total_charge for cs in spec.possible_cs]))\n", - " print(f\"{spec.protonation_states=}\")\n", - " else :\n", - " spec.get_possible_cs()\n", - " selected_cs.append(spec.possible_cs) \n", - " print(\"\")\n", - "print(selected_cs)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "final_charge_distribution = balance_charge(newcell.unique_indices, newcell.unique_species, debug=debug)" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "cell2mol", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.10.6" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/cell2mol/test/test_pickle.py b/cell2mol/test/test_pickle.py deleted file mode 100644 index cf87104a7..000000000 --- a/cell2mol/test/test_pickle.py +++ /dev/null @@ -1,65 +0,0 @@ -#!/usr/bin/env python - -import os -import pytest -import numpy as np -import pickle - -from cell2mol.c2m_module import cell2mol -from cell2mol.c2m_module import load_cell_reset_charges - - -def run_cell2mol(infofile): - dir_path = os.path.dirname(os.path.realpath(__file__)) - - root = infofile.split(".") - refcode = root[0] - outfile = f"Cell_{refcode}.gmol" - - infopath = os.path.join(dir_path, "infodata", infofile) - outpath = os.path.join(dir_path, "infodata", outfile) - - cell = cell2mol(infopath, refcode, outpath) - - return cell - - -@pytest.mark.parametrize("refcode",["DAPGAF", "EGITOF", "ISIPIJ", "KANYUT", "YOXKUS", "ROKQAM", "LOKXUG"]) -def test_check_info_vs_pickle(refcode): - infofile = f"{refcode}.info" - cell = run_cell2mol(infofile) - dir_path = os.path.dirname(os.path.realpath(__file__)) - cellpath = os.path.join(dir_path, "infodata", f"Cell_{refcode}.gmol") - - file = open(cellpath, "rb") - result = pickle.load(file) - print("=======Result======") - print(result.refcode) - print(result.cellvec) - print(result.cellparam) - print(result.labels) - print(result.atom_coord) - print(result.warning_list) - - assert cell.refcode == result.refcode - assert cell.cellvec == result.cellvec - assert cell.cellparam == result.cellparam - assert cell.labels == result.labels - assert np.allclose(cell.atom_coord, result.atom_coord) - assert cell.warning_list == result.warning_list - assert cell.warning_after_reconstruction == result.warning_after_reconstruction - - -@pytest.mark.parametrize("refcode",["DAPGAF", "EGITOF", "ISIPIJ", "KANYUT", "YOXKUS", "ROKQAM", "LOKXUG"]) -def test_load_cell_reset_charges (refcode): - - dir_path = os.path.dirname(os.path.realpath(__file__)) - cellpath = os.path.join(dir_path, "infodata", f"Cell_{refcode}.gmol") - - file = open(cellpath, "rb") - cell = pickle.load(file) - - temp = load_cell_reset_charges(cellpath) - - assert temp.warning_list == cell.warning_after_reconstruction - assert temp.warning_after_reconstruction == cell.warning_after_reconstruction diff --git a/cell2mol/test/test_refmoleclist.ipynb b/cell2mol/test/test_refmoleclist.ipynb deleted file mode 100644 index a8466428f..000000000 --- a/cell2mol/test/test_refmoleclist.ipynb +++ /dev/null @@ -1,336 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [], - "source": [ - "import cell2mol\n", - "import numpy as np" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [], - "source": [ - "ref_cell = np.load(\"BACZUB/Ref_Cell_BACZUB.cell\", allow_pickle=True)" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "------------- Cell2mol CELL Object ----------------\n", - " Version = 0.1\n", - " Type = cell\n", - " Name (Refcode) = BACZUB\n", - " Num Atoms = 52\n", - " Cell Parameters a:c = [7.378, 9.749, 10.942]\n", - " Cell Parameters al:ga = [91.34, 96.05, 107.23]\n", - "---------------------------------------------------\n", - " # of Ref Molecules: = 3\n", - " With Formulae: \n", - " 0: H9-C10-Cl-Fe-Hg \n", - " 1: H9-C10-Cl-Fe-Hg \n", - " 2: Cl6-Hg2 " - ] - }, - "execution_count": 7, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "ref_cell" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "===== REFERENCE MOLECULE =====\n", - "H9-C10-Cl-Fe-Hg specie molecule\n", - "['Hg', 'Fe', 'Cl', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H']\n", - "[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21]\n", - "===== METALS =====\n", - "Hg atom metal 0\n", - "PARENT:\t: H9-C10-Cl-Fe-Hg specie molecule\n", - "Fe atom metal 1\n", - "PARENT:\t: H9-C10-Cl-Fe-Hg specie molecule\n", - "===== LIGAND 0 =====\n", - "H5-C5 specie ligand\n", - "['C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H']\n", - "[3, 4, 5, 6, 7, 8, 9, 10, 11, 12]\n", - "PARENT:\t: H9-C10-Cl-Fe-Hg specie molecule\n", - "===== GROUP 0 =====\n", - "C5 specie group\n", - "['C', 'C', 'C', 'C', 'C']\n", - "[0, 2, 4, 6, 8]\n", - "PARENT:\t: H5-C5 specie ligand\n", - "===== ATOMS =====\n", - "C atom metal [1.088207063968434, 4.309352587547709, 1.5686258268701916] 0\n", - "PARENT:\t: H5-C5 specie ligand\n", - "C atom metal [1.0397715909633676, 3.638400052685908, 0.36499880736037693] 2\n", - "PARENT:\t: H5-C5 specie ligand\n", - "C atom metal [1.6288999872619745, 2.4157695326489255, 0.5757421663720231] 4\n", - "PARENT:\t: H5-C5 specie ligand\n", - "C atom metal [2.047083955789577, 2.334447308344994, 1.9879399329449103] 6\n", - "PARENT:\t: H5-C5 specie ligand\n", - "C atom metal [1.6834475642260016, 3.552077268693482, 2.559336875419786] 8\n", - "PARENT:\t: H5-C5 specie ligand\n", - "===== LIGAND 1 =====\n", - "H4-C5 specie ligand\n", - "['C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H']\n", - "[13, 14, 15, 16, 17, 18, 19, 20, 21]\n", - "PARENT:\t: H9-C10-Cl-Fe-Hg specie molecule\n", - "===== GROUP 0 =====\n", - "C5 specie group\n", - "['C', 'C', 'C', 'C', 'C']\n", - "[0, 1, 3, 5, 7]\n", - "PARENT:\t: H4-C5 specie ligand\n", - "===== ATOMS =====\n", - "C atom metal [-1.2757991550702044, 2.060766775585443, 3.361030684443471] 0\n", - "PARENT:\t: H4-C5 specie ligand\n", - "C atom metal [-1.867597191548076, 3.011023862021328, 2.5441285917797702] 1\n", - "PARENT:\t: H4-C5 specie ligand\n", - "C atom metal [-2.009598694552083, 2.51376054758525, 1.2025407135355277] 3\n", - "PARENT:\t: H4-C5 specie ligand\n", - "C atom metal [-1.478218441311459, 1.2250348551990857, 1.2351298927641328] 5\n", - "PARENT:\t: H4-C5 specie ligand\n", - "C atom metal [-1.012973100540437, 0.9240043790765426, 2.5495601216512047] 7\n", - "PARENT:\t: H4-C5 specie ligand\n", - "===== LIGAND 2 =====\n", - "Cl specie ligand\n", - "['Cl']\n", - "[2]\n", - "PARENT:\t: H9-C10-Cl-Fe-Hg specie molecule\n", - "===== GROUP 0 =====\n", - "Cl specie group\n", - "['Cl']\n", - "[0]\n", - "PARENT:\t: Cl specie ligand\n", - "===== ATOMS =====\n", - "Cl atom metal [-0.3928769966037601, 2.3016163714687834, 7.603055514033566] 0\n", - "PARENT:\t: Cl specie ligand\n", - "\n", - "===== REFERENCE MOLECULE =====\n", - "H9-C10-Cl-Fe-Hg specie molecule\n", - "['Hg', 'Fe', 'Cl', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H']\n", - "[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21]\n", - "===== METALS =====\n", - "Hg atom metal 0\n", - "PARENT:\t: H9-C10-Cl-Fe-Hg specie molecule\n", - "Fe atom metal 1\n", - "PARENT:\t: H9-C10-Cl-Fe-Hg specie molecule\n", - "===== LIGAND 0 =====\n", - "H5-C5 specie ligand\n", - "['C', 'H', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H']\n", - "[3, 4, 5, 6, 7, 8, 9, 10, 11, 12]\n", - "PARENT:\t: H9-C10-Cl-Fe-Hg specie molecule\n", - "===== GROUP 0 =====\n", - "C5 specie group\n", - "['C', 'C', 'C', 'C', 'C']\n", - "[0, 2, 4, 6, 8]\n", - "PARENT:\t: H5-C5 specie ligand\n", - "===== ATOMS =====\n", - "C atom metal [2.2488128756294996, 4.376589855872433, 9.294433915998171] 0\n", - "PARENT:\t: H5-C5 specie ligand\n", - "C atom metal [2.2972483486345654, 5.047542390734234, 10.498060935507986] 2\n", - "PARENT:\t: H5-C5 specie ligand\n", - "C atom metal [1.7081199523359591, 6.270172910771218, 10.287317576496338] 4\n", - "PARENT:\t: H5-C5 specie ligand\n", - "C atom metal [1.2899359838083557, 6.351495135075149, 8.87511980992345] 6\n", - "PARENT:\t: H5-C5 specie ligand\n", - "C atom metal [1.6535723753719318, 5.133865174726661, 8.303722867448576] 8\n", - "PARENT:\t: H5-C5 specie ligand\n", - "===== LIGAND 1 =====\n", - "H4-C5 specie ligand\n", - "['C', 'C', 'H', 'C', 'H', 'C', 'H', 'C', 'H']\n", - "[13, 14, 15, 16, 17, 18, 19, 20, 21]\n", - "PARENT:\t: H9-C10-Cl-Fe-Hg specie molecule\n", - "===== GROUP 0 =====\n", - "C5 specie group\n", - "['C', 'C', 'C', 'C', 'C']\n", - "[0, 1, 3, 5, 7]\n", - "PARENT:\t: H4-C5 specie ligand\n", - "===== ATOMS =====\n", - "C atom metal [4.612819094668138, 6.625175667834701, 7.502029058424891] 0\n", - "PARENT:\t: H4-C5 specie ligand\n", - "C atom metal [5.20461713114601, 5.674918581398816, 8.318931151088591] 1\n", - "PARENT:\t: H4-C5 specie ligand\n", - "C atom metal [5.346618634150017, 6.172181895834893, 9.660519029332834] 3\n", - "PARENT:\t: H4-C5 specie ligand\n", - "C atom metal [4.815238380909393, 7.460907588221057, 9.627929850104229] 5\n", - "PARENT:\t: H4-C5 specie ligand\n", - "C atom metal [4.34999304013837, 7.7619380643436005, 8.313499621217158] 7\n", - "PARENT:\t: H4-C5 specie ligand\n", - "===== LIGAND 2 =====\n", - "Cl specie ligand\n", - "['Cl']\n", - "[2]\n", - "PARENT:\t: H9-C10-Cl-Fe-Hg specie molecule\n", - "===== GROUP 0 =====\n", - "Cl specie group\n", - "['Cl']\n", - "[0]\n", - "PARENT:\t: Cl specie ligand\n", - "===== ATOMS =====\n", - "Cl atom metal [3.729896936201694, 6.38432607195136, 3.2600042288347955] 0\n", - "PARENT:\t: Cl specie ligand\n", - "\n", - "===== REFERENCE MOLECULE =====\n", - "Cl6-Hg2 specie molecule\n", - "['Hg', 'Cl', 'Cl', 'Cl', 'Hg', 'Cl', 'Cl', 'Cl']\n", - "[0, 1, 2, 3, 4, 5, 6, 7]\n", - "===== METALS =====\n", - "Hg atom metal 0\n", - "PARENT:\t: Cl6-Hg2 specie molecule\n", - "Hg atom metal 4\n", - "PARENT:\t: Cl6-Hg2 specie molecule\n", - "===== LIGAND 0 =====\n", - "Cl specie ligand\n", - "['Cl']\n", - "[7]\n", - "PARENT:\t: Cl6-Hg2 specie molecule\n", - "===== GROUP 0 =====\n", - "Cl specie group\n", - "['Cl']\n", - "[0]\n", - "PARENT:\t: Cl specie ligand\n", - "===== ATOMS =====\n", - "Cl atom metal [3.467119889580811, 3.2061438651914775, 5.753076439823084] 0\n", - "PARENT:\t: Cl specie ligand\n", - "===== LIGAND 1 =====\n", - "Cl specie ligand\n", - "['Cl']\n", - "[6]\n", - "PARENT:\t: Cl6-Hg2 specie molecule\n", - "===== GROUP 0 =====\n", - "Cl specie group\n", - "['Cl']\n", - "[0]\n", - "PARENT:\t: Cl specie ligand\n", - "===== ATOMS =====\n", - "Cl atom metal [2.9351152741778943, 0.5309238179055397, 9.052187683732207] 0\n", - "PARENT:\t: Cl specie ligand\n", - "===== LIGAND 2 =====\n", - "Cl specie ligand\n", - "['Cl']\n", - "[5]\n", - "PARENT:\t: Cl6-Hg2 specie molecule\n", - "===== GROUP 0 =====\n", - "Cl specie group\n", - "['Cl']\n", - "[0]\n", - "PARENT:\t: Cl specie ligand\n", - "===== ATOMS =====\n", - "Cl atom metal [1.3562607787141432, -0.06389919010860623, 5.119760056813859] 0\n", - "PARENT:\t: Cl specie ligand\n", - "===== LIGAND 3 =====\n", - "Cl specie ligand\n", - "['Cl']\n", - "[3]\n", - "PARENT:\t: Cl6-Hg2 specie molecule\n", - "===== GROUP 0 =====\n", - "Cl specie group\n", - "['Cl']\n", - "[0]\n", - "PARENT:\t: Cl specie ligand\n", - "===== ATOMS =====\n", - "Cl atom metal [2.7576337144776764, -3.8316994367601804, 5.1099833030452775] 0\n", - "PARENT:\t: Cl specie ligand\n", - "===== LIGAND 4 =====\n", - "Cl specie ligand\n", - "['Cl']\n", - "[2]\n", - "PARENT:\t: Cl6-Hg2 specie molecule\n", - "===== GROUP 0 =====\n", - "Cl specie group\n", - "['Cl']\n", - "[0]\n", - "PARENT:\t: Cl specie ligand\n", - "===== ATOMS =====\n", - "Cl atom metal [3.2896383298805927, -1.1564793894742424, 1.8108720591361558] 0\n", - "PARENT:\t: Cl specie ligand\n", - "===== LIGAND 5 =====\n", - "Cl specie ligand\n", - "['Cl']\n", - "[1]\n", - "PARENT:\t: Cl6-Hg2 specie molecule\n", - "===== GROUP 0 =====\n", - "Cl specie group\n", - "['Cl']\n", - "[0]\n", - "PARENT:\t: Cl specie ligand\n", - "===== ATOMS =====\n", - "Cl atom metal [4.868492825344344, -0.5616563814600966, 5.7432996860545025] 0\n", - "PARENT:\t: Cl specie ligand\n", - "\n" - ] - } - ], - "source": [ - "for ref in ref_cell.refmoleclist:\n", - " print(\"===== REFERENCE MOLECULE =====\")\n", - " print(ref.formula, ref.type, ref.subtype)\n", - " print(ref.labels)\n", - " print(ref.parent_indices)\n", - " if ref.iscomplex:\n", - " print(\"===== METALS =====\")\n", - " for metal in ref.metals:\n", - " print(metal.label, metal.type, metal.subtype, metal.parent_index)\n", - " print(\"PARENT:\\t:\", metal.parent.formula, metal.parent.type, metal.parent.subtype)\n", - " for ligand_idx, ligand in enumerate(ref.ligands):\n", - " print(f\"===== LIGAND {ligand_idx} =====\")\n", - " print(ligand.formula, ligand.type, ligand.subtype)\n", - " print(ligand.labels)\n", - " print(ligand.parent_indices)\n", - " print(\"PARENT:\\t:\", ligand.parent.formula, ligand.parent.type, ligand.parent.subtype)\n", - " for group_idx, group in enumerate(ligand.groups):\n", - " print(f\"===== GROUP {group_idx} =====\")\n", - " print(group.formula, group.type, group.subtype)\n", - " print(group.labels)\n", - " print(group.parent_indices)\n", - " print(\"PARENT:\\t:\", group.parent.formula, group.parent.type, group.parent.subtype)\n", - " print(\"===== ATOMS =====\")\n", - " for atom in group.atoms:\n", - " print(atom.label, atom.type, atom.subtype, atom.coord, atom.parent_index)\n", - " print(\"PARENT:\\t:\", atom.parent.formula, atom.parent.type, atom.parent.subtype)\n", - " print(\"\")" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "cell2mol", - "language": "python", - "name": "cell2mol" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.10.6" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/cell2mol/test/test_script.ipynb b/cell2mol/test/test_script.ipynb deleted file mode 100644 index 7bbae11bd..000000000 --- a/cell2mol/test/test_script.ipynb +++ /dev/null @@ -1,2380 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "import sys\n", - "sys.path.append(\"/Users/sergivela/Documents/Programes/cell2mol_dev/cell2mol\")\n", - "\n", - "import cell2mol\n", - "from cell2mol.read_write import *\n", - "from cell2mol.classes import *" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [], - "source": [ - "debug = 2\n", - "infopath = \"/Users/sergivela/Documents/Programes/cell2mol_dev/cell2mol/cell2mol/test/infodata/AFUGIS.info\"" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [], - "source": [ - "labels, pos, ref_labels, ref_fracs, cellvec, cellparam = readinfo(infopath)\n", - "newcell = cell(\"name\", labels, pos, cellvec, cellparam)" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "SPECIE.SET_ATOMS: creating atom for label Fe\n", - "SPECIE.SET_ATOMS: ismetal=True\n", - "SPECIE.SET_ATOMS: added atom to specie: \n", - "------------- Cell2mol METAL Object --------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Sub-Type = metal\n", - " Label = Fe\n", - " Atomic Number = 26\n", - " Index in Parent (molecule) = 0\n", - "----------------------------------------------------\n", - "\n", - "SPECIE.SET_ATOMS: creating atom for label N\n", - "SPECIE.SET_ATOMS: ismetal=False\n", - "SPECIE.SET_ATOMS: added atom to specie: \n", - "------------- Cell2mol ATOM Object ----------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Label = N\n", - " Atomic Number = 7\n", - " Index in Parent (molecule) = 1\n", - "----------------------------------------------------\n", - "\n", - "SPECIE.SET_ATOMS: creating atom for label N\n", - "SPECIE.SET_ATOMS: ismetal=False\n", - "SPECIE.SET_ATOMS: added atom to specie: \n", - "------------- Cell2mol ATOM Object ----------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Label = N\n", - " Atomic Number = 7\n", - " Index in Parent (molecule) = 2\n", - "----------------------------------------------------\n", - "\n", - "SPECIE.SET_ATOMS: creating atom for label C\n", - "SPECIE.SET_ATOMS: ismetal=False\n", - "SPECIE.SET_ATOMS: added atom to specie: \n", - "------------- Cell2mol ATOM Object ----------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Label = C\n", - " Atomic Number = 6\n", - " Index in Parent (molecule) = 3\n", - "----------------------------------------------------\n", - "\n", - "SPECIE.SET_ATOMS: creating atom for label H\n", - "SPECIE.SET_ATOMS: ismetal=False\n", - "SPECIE.SET_ATOMS: added atom to specie: \n", - "------------- Cell2mol ATOM Object ----------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Label = H\n", - " Atomic Number = 1\n", - " Index in Parent (molecule) = 4\n", - "----------------------------------------------------\n", - "\n", - "SPECIE.SET_ATOMS: creating atom for label C\n", - "SPECIE.SET_ATOMS: ismetal=False\n", - "SPECIE.SET_ATOMS: added atom to specie: \n", - "------------- Cell2mol ATOM Object ----------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Label = C\n", - " Atomic Number = 6\n", - " Index in Parent (molecule) = 5\n", - "----------------------------------------------------\n", - "\n", - "SPECIE.SET_ATOMS: creating atom for label H\n", - "SPECIE.SET_ATOMS: ismetal=False\n", - "SPECIE.SET_ATOMS: added atom to specie: \n", - "------------- Cell2mol ATOM Object ----------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Label = H\n", - " Atomic Number = 1\n", - " Index in Parent (molecule) = 6\n", - "----------------------------------------------------\n", - "\n", - "SPECIE.SET_ATOMS: creating atom for label C\n", - "SPECIE.SET_ATOMS: ismetal=False\n", - "SPECIE.SET_ATOMS: added atom to specie: \n", - "------------- Cell2mol ATOM Object ----------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Label = C\n", - " Atomic Number = 6\n", - " Index in Parent (molecule) = 7\n", - "----------------------------------------------------\n", - "\n", - "SPECIE.SET_ATOMS: creating atom for label H\n", - "SPECIE.SET_ATOMS: ismetal=False\n", - "SPECIE.SET_ATOMS: added atom to specie: \n", - "------------- Cell2mol ATOM Object ----------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Label = H\n", - " Atomic Number = 1\n", - " Index in Parent (molecule) = 8\n", - "----------------------------------------------------\n", - "\n", - "SPECIE.SET_ATOMS: creating atom for label H\n", - "SPECIE.SET_ATOMS: ismetal=False\n", - "SPECIE.SET_ATOMS: added atom to specie: \n", - "------------- Cell2mol ATOM Object ----------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Label = H\n", - " Atomic Number = 1\n", - " Index in Parent (molecule) = 9\n", - "----------------------------------------------------\n", - "\n", - "SPECIE.SET_ATOMS: creating atom for label H\n", - "SPECIE.SET_ATOMS: ismetal=False\n", - "SPECIE.SET_ATOMS: added atom to specie: \n", - "------------- Cell2mol ATOM Object ----------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Label = H\n", - " Atomic Number = 1\n", - " Index in Parent (molecule) = 10\n", - "----------------------------------------------------\n", - "\n", - "SPECIE.SET_ATOMS: creating atom for label C\n", - "SPECIE.SET_ATOMS: ismetal=False\n", - "SPECIE.SET_ATOMS: added atom to specie: \n", - "------------- Cell2mol ATOM Object ----------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Label = C\n", - " Atomic Number = 6\n", - " Index in Parent (molecule) = 11\n", - "----------------------------------------------------\n", - "\n", - "SPECIE.SET_ATOMS: creating atom for label H\n", - "SPECIE.SET_ATOMS: ismetal=False\n", - "SPECIE.SET_ATOMS: added atom to specie: \n", - "------------- Cell2mol ATOM Object ----------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Label = H\n", - " Atomic Number = 1\n", - " Index in Parent (molecule) = 12\n", - "----------------------------------------------------\n", - "\n", - "SPECIE.SET_ATOMS: creating atom for label H\n", - "SPECIE.SET_ATOMS: ismetal=False\n", - "SPECIE.SET_ATOMS: added atom to specie: \n", - "------------- Cell2mol ATOM Object ----------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Label = H\n", - " Atomic Number = 1\n", - " Index in Parent (molecule) = 13\n", - "----------------------------------------------------\n", - "\n", - "SPECIE.SET_ATOMS: creating atom for label H\n", - "SPECIE.SET_ATOMS: ismetal=False\n", - "SPECIE.SET_ATOMS: added atom to specie: \n", - "------------- Cell2mol ATOM Object ----------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Label = H\n", - " Atomic Number = 1\n", - " Index in Parent (molecule) = 14\n", - "----------------------------------------------------\n", - "\n", - "SPECIE.SET_ATOMS: creating atom for label C\n", - "SPECIE.SET_ATOMS: ismetal=False\n", - "SPECIE.SET_ATOMS: added atom to specie: \n", - "------------- Cell2mol ATOM Object ----------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Label = C\n", - " Atomic Number = 6\n", - " Index in Parent (molecule) = 15\n", - "----------------------------------------------------\n", - "\n", - "SPECIE.SET_ATOMS: creating atom for label H\n", - "SPECIE.SET_ATOMS: ismetal=False\n", - "SPECIE.SET_ATOMS: added atom to specie: \n", - "------------- Cell2mol ATOM Object ----------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Label = H\n", - " Atomic Number = 1\n", - " Index in Parent (molecule) = 16\n", - "----------------------------------------------------\n", - "\n", - "SPECIE.SET_ATOMS: creating atom for label C\n", - "SPECIE.SET_ATOMS: ismetal=False\n", - "SPECIE.SET_ATOMS: added atom to specie: \n", - "------------- Cell2mol ATOM Object ----------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Label = C\n", - " Atomic Number = 6\n", - " Index in Parent (molecule) = 17\n", - "----------------------------------------------------\n", - "\n", - "SPECIE.SET_ATOMS: creating atom for label H\n", - "SPECIE.SET_ATOMS: ismetal=False\n", - "SPECIE.SET_ATOMS: added atom to specie: \n", - "------------- Cell2mol ATOM Object ----------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Label = H\n", - " Atomic Number = 1\n", - " Index in Parent (molecule) = 18\n", - "----------------------------------------------------\n", - "\n", - "SPECIE.SET_ATOMS: creating atom for label H\n", - "SPECIE.SET_ATOMS: ismetal=False\n", - "SPECIE.SET_ATOMS: added atom to specie: \n", - "------------- Cell2mol ATOM Object ----------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Label = H\n", - " Atomic Number = 1\n", - " Index in Parent (molecule) = 19\n", - "----------------------------------------------------\n", - "\n", - "SPECIE.SET_ATOMS: creating atom for label H\n", - "SPECIE.SET_ATOMS: ismetal=False\n", - "SPECIE.SET_ATOMS: added atom to specie: \n", - "------------- Cell2mol ATOM Object ----------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Label = H\n", - " Atomic Number = 1\n", - " Index in Parent (molecule) = 20\n", - "----------------------------------------------------\n", - "\n", - "SPECIE.SET_ATOMS: creating atom for label C\n", - "SPECIE.SET_ATOMS: ismetal=False\n", - "SPECIE.SET_ATOMS: added atom to specie: \n", - "------------- Cell2mol ATOM Object ----------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Label = C\n", - " Atomic Number = 6\n", - " Index in Parent (molecule) = 21\n", - "----------------------------------------------------\n", - "\n", - "SPECIE.SET_ATOMS: creating atom for label H\n", - "SPECIE.SET_ATOMS: ismetal=False\n", - "SPECIE.SET_ATOMS: added atom to specie: \n", - "------------- Cell2mol ATOM Object ----------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Label = H\n", - " Atomic Number = 1\n", - " Index in Parent (molecule) = 22\n", - "----------------------------------------------------\n", - "\n", - "SPECIE.SET_ATOMS: creating atom for label H\n", - "SPECIE.SET_ATOMS: ismetal=False\n", - "SPECIE.SET_ATOMS: added atom to specie: \n", - "------------- Cell2mol ATOM Object ----------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Label = H\n", - " Atomic Number = 1\n", - " Index in Parent (molecule) = 23\n", - "----------------------------------------------------\n", - "\n", - "SPECIE.SET_ATOMS: creating atom for label H\n", - "SPECIE.SET_ATOMS: ismetal=False\n", - "SPECIE.SET_ATOMS: added atom to specie: \n", - "------------- Cell2mol ATOM Object ----------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Label = H\n", - " Atomic Number = 1\n", - " Index in Parent (molecule) = 24\n", - "----------------------------------------------------\n", - "\n", - "SPECIE.SET_ATOMS: creating atom for label N\n", - "SPECIE.SET_ATOMS: ismetal=False\n", - "SPECIE.SET_ATOMS: added atom to specie: \n", - "------------- Cell2mol ATOM Object ----------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Label = N\n", - " Atomic Number = 7\n", - " Index in Parent (molecule) = 25\n", - "----------------------------------------------------\n", - "\n", - "SPECIE.SET_ATOMS: creating atom for label N\n", - "SPECIE.SET_ATOMS: ismetal=False\n", - "SPECIE.SET_ATOMS: added atom to specie: \n", - "------------- Cell2mol ATOM Object ----------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Label = N\n", - " Atomic Number = 7\n", - " Index in Parent (molecule) = 26\n", - "----------------------------------------------------\n", - "\n", - "SPECIE.SET_ATOMS: creating atom for label C\n", - "SPECIE.SET_ATOMS: ismetal=False\n", - "SPECIE.SET_ATOMS: added atom to specie: \n", - "------------- Cell2mol ATOM Object ----------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Label = C\n", - " Atomic Number = 6\n", - " Index in Parent (molecule) = 27\n", - "----------------------------------------------------\n", - "\n", - "SPECIE.SET_ATOMS: creating atom for label C\n", - "SPECIE.SET_ATOMS: ismetal=False\n", - "SPECIE.SET_ATOMS: added atom to specie: \n", - "------------- Cell2mol ATOM Object ----------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Label = C\n", - " Atomic Number = 6\n", - " Index in Parent (molecule) = 28\n", - "----------------------------------------------------\n", - "\n", - "SPECIE.SET_ATOMS: creating atom for label C\n", - "SPECIE.SET_ATOMS: ismetal=False\n", - "SPECIE.SET_ATOMS: added atom to specie: \n", - "------------- Cell2mol ATOM Object ----------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Label = C\n", - " Atomic Number = 6\n", - " Index in Parent (molecule) = 29\n", - "----------------------------------------------------\n", - "\n", - "SPECIE.SET_ATOMS: creating atom for label H\n", - "SPECIE.SET_ATOMS: ismetal=False\n", - "SPECIE.SET_ATOMS: added atom to specie: \n", - "------------- Cell2mol ATOM Object ----------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Label = H\n", - " Atomic Number = 1\n", - " Index in Parent (molecule) = 30\n", - "----------------------------------------------------\n", - "\n", - "SPECIE.SET_ATOMS: creating atom for label C\n", - "SPECIE.SET_ATOMS: ismetal=False\n", - "SPECIE.SET_ATOMS: added atom to specie: \n", - "------------- Cell2mol ATOM Object ----------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Label = C\n", - " Atomic Number = 6\n", - " Index in Parent (molecule) = 31\n", - "----------------------------------------------------\n", - "\n", - "SPECIE.SET_ATOMS: creating atom for label C\n", - "SPECIE.SET_ATOMS: ismetal=False\n", - "SPECIE.SET_ATOMS: added atom to specie: \n", - "------------- Cell2mol ATOM Object ----------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Label = C\n", - " Atomic Number = 6\n", - " Index in Parent (molecule) = 32\n", - "----------------------------------------------------\n", - "\n", - "SPECIE.SET_ATOMS: creating atom for label C\n", - "SPECIE.SET_ATOMS: ismetal=False\n", - "SPECIE.SET_ATOMS: added atom to specie: \n", - "------------- Cell2mol ATOM Object ----------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Label = C\n", - " Atomic Number = 6\n", - " Index in Parent (molecule) = 33\n", - "----------------------------------------------------\n", - "\n", - "SPECIE.SET_ATOMS: creating atom for label H\n", - "SPECIE.SET_ATOMS: ismetal=False\n", - "SPECIE.SET_ATOMS: added atom to specie: \n", - "------------- Cell2mol ATOM Object ----------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Label = H\n", - " Atomic Number = 1\n", - " Index in Parent (molecule) = 34\n", - "----------------------------------------------------\n", - "\n", - "SPECIE.SET_ATOMS: creating atom for label H\n", - "SPECIE.SET_ATOMS: ismetal=False\n", - "SPECIE.SET_ATOMS: added atom to specie: \n", - "------------- Cell2mol ATOM Object ----------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Label = H\n", - " Atomic Number = 1\n", - " Index in Parent (molecule) = 35\n", - "----------------------------------------------------\n", - "\n", - "SPECIE.SET_ATOMS: creating atom for label H\n", - "SPECIE.SET_ATOMS: ismetal=False\n", - "SPECIE.SET_ATOMS: added atom to specie: \n", - "------------- Cell2mol ATOM Object ----------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Label = H\n", - " Atomic Number = 1\n", - " Index in Parent (molecule) = 36\n", - "----------------------------------------------------\n", - "\n", - "SPECIE.SET_ATOMS: creating atom for label C\n", - "SPECIE.SET_ATOMS: ismetal=False\n", - "SPECIE.SET_ATOMS: added atom to specie: \n", - "------------- Cell2mol ATOM Object ----------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Label = C\n", - " Atomic Number = 6\n", - " Index in Parent (molecule) = 37\n", - "----------------------------------------------------\n", - "\n", - "SPECIE.SET_ATOMS: creating atom for label H\n", - "SPECIE.SET_ATOMS: ismetal=False\n", - "SPECIE.SET_ATOMS: added atom to specie: \n", - "------------- Cell2mol ATOM Object ----------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Label = H\n", - " Atomic Number = 1\n", - " Index in Parent (molecule) = 38\n", - "----------------------------------------------------\n", - "\n", - "SPECIE.SET_ATOMS: creating atom for label H\n", - "SPECIE.SET_ATOMS: ismetal=False\n", - "SPECIE.SET_ATOMS: added atom to specie: \n", - "------------- Cell2mol ATOM Object ----------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Label = H\n", - " Atomic Number = 1\n", - " Index in Parent (molecule) = 39\n", - "----------------------------------------------------\n", - "\n", - "SPECIE.SET_ATOMS: creating atom for label H\n", - "SPECIE.SET_ATOMS: ismetal=False\n", - "SPECIE.SET_ATOMS: added atom to specie: \n", - "------------- Cell2mol ATOM Object ----------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Label = H\n", - " Atomic Number = 1\n", - " Index in Parent (molecule) = 40\n", - "----------------------------------------------------\n", - "\n", - "SPECIE.SET_ATOMS: creating atom for label C\n", - "SPECIE.SET_ATOMS: ismetal=False\n", - "SPECIE.SET_ATOMS: added atom to specie: \n", - "------------- Cell2mol ATOM Object ----------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Label = C\n", - " Atomic Number = 6\n", - " Index in Parent (molecule) = 41\n", - "----------------------------------------------------\n", - "\n", - "SPECIE.SET_ATOMS: creating atom for label H\n", - "SPECIE.SET_ATOMS: ismetal=False\n", - "SPECIE.SET_ATOMS: added atom to specie: \n", - "------------- Cell2mol ATOM Object ----------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Label = H\n", - " Atomic Number = 1\n", - " Index in Parent (molecule) = 42\n", - "----------------------------------------------------\n", - "\n", - "SPECIE.SET_ATOMS: creating atom for label H\n", - "SPECIE.SET_ATOMS: ismetal=False\n", - "SPECIE.SET_ATOMS: added atom to specie: \n", - "------------- Cell2mol ATOM Object ----------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Label = H\n", - " Atomic Number = 1\n", - " Index in Parent (molecule) = 43\n", - "----------------------------------------------------\n", - "\n", - "SPECIE.SET_ATOMS: creating atom for label H\n", - "SPECIE.SET_ATOMS: ismetal=False\n", - "SPECIE.SET_ATOMS: added atom to specie: \n", - "------------- Cell2mol ATOM Object ----------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Label = H\n", - " Atomic Number = 1\n", - " Index in Parent (molecule) = 44\n", - "----------------------------------------------------\n", - "\n", - "SPECIE.SET_ATOMS: creating atom for label C\n", - "SPECIE.SET_ATOMS: ismetal=False\n", - "SPECIE.SET_ATOMS: added atom to specie: \n", - "------------- Cell2mol ATOM Object ----------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Label = C\n", - " Atomic Number = 6\n", - " Index in Parent (molecule) = 45\n", - "----------------------------------------------------\n", - "\n", - "SPECIE.SET_ATOMS: creating atom for label H\n", - "SPECIE.SET_ATOMS: ismetal=False\n", - "SPECIE.SET_ATOMS: added atom to specie: \n", - "------------- Cell2mol ATOM Object ----------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Label = H\n", - " Atomic Number = 1\n", - " Index in Parent (molecule) = 46\n", - "----------------------------------------------------\n", - "\n", - "SPECIE.SET_ATOMS: creating atom for label H\n", - "SPECIE.SET_ATOMS: ismetal=False\n", - "SPECIE.SET_ATOMS: added atom to specie: \n", - "------------- Cell2mol ATOM Object ----------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Label = H\n", - " Atomic Number = 1\n", - " Index in Parent (molecule) = 47\n", - "----------------------------------------------------\n", - "\n", - "SPECIE.SET_ATOMS: creating atom for label H\n", - "SPECIE.SET_ATOMS: ismetal=False\n", - "SPECIE.SET_ATOMS: added atom to specie: \n", - "------------- Cell2mol ATOM Object ----------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Label = H\n", - " Atomic Number = 1\n", - " Index in Parent (molecule) = 48\n", - "----------------------------------------------------\n", - "\n", - "SPECIE.SET_ATOMS: creating atom for label C\n", - "SPECIE.SET_ATOMS: ismetal=False\n", - "SPECIE.SET_ATOMS: added atom to specie: \n", - "------------- Cell2mol ATOM Object ----------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Label = C\n", - " Atomic Number = 6\n", - " Index in Parent (molecule) = 49\n", - "----------------------------------------------------\n", - "\n", - "SPECIE.SET_ATOMS: creating atom for label H\n", - "SPECIE.SET_ATOMS: ismetal=False\n", - "SPECIE.SET_ATOMS: added atom to specie: \n", - "------------- Cell2mol ATOM Object ----------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Label = H\n", - " Atomic Number = 1\n", - " Index in Parent (molecule) = 50\n", - "----------------------------------------------------\n", - "\n", - "SPECIE.SET_ATOMS: creating atom for label H\n", - "SPECIE.SET_ATOMS: ismetal=False\n", - "SPECIE.SET_ATOMS: added atom to specie: \n", - "------------- Cell2mol ATOM Object ----------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Label = H\n", - " Atomic Number = 1\n", - " Index in Parent (molecule) = 51\n", - "----------------------------------------------------\n", - "\n", - "SPECIE.SET_ATOMS: creating atom for label H\n", - "SPECIE.SET_ATOMS: ismetal=False\n", - "SPECIE.SET_ATOMS: added atom to specie: \n", - "------------- Cell2mol ATOM Object ----------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Label = H\n", - " Atomic Number = 1\n", - " Index in Parent (molecule) = 52\n", - "----------------------------------------------------\n", - "\n", - "SPECIE.SET_ATOMS: creating atom for label C\n", - "SPECIE.SET_ATOMS: ismetal=False\n", - "SPECIE.SET_ATOMS: added atom to specie: \n", - "------------- Cell2mol ATOM Object ----------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Label = C\n", - " Atomic Number = 6\n", - " Index in Parent (molecule) = 53\n", - "----------------------------------------------------\n", - "\n", - "SPECIE.SET_ATOMS: creating atom for label H\n", - "SPECIE.SET_ATOMS: ismetal=False\n", - "SPECIE.SET_ATOMS: added atom to specie: \n", - "------------- Cell2mol ATOM Object ----------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Label = H\n", - " Atomic Number = 1\n", - " Index in Parent (molecule) = 54\n", - "----------------------------------------------------\n", - "\n", - "SPECIE.SET_ATOMS: creating atom for label H\n", - "SPECIE.SET_ATOMS: ismetal=False\n", - "SPECIE.SET_ATOMS: added atom to specie: \n", - "------------- Cell2mol ATOM Object ----------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Label = H\n", - " Atomic Number = 1\n", - " Index in Parent (molecule) = 55\n", - "----------------------------------------------------\n", - "\n", - "SPECIE.SET_ATOMS: creating atom for label H\n", - "SPECIE.SET_ATOMS: ismetal=False\n", - "SPECIE.SET_ATOMS: added atom to specie: \n", - "------------- Cell2mol ATOM Object ----------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Label = H\n", - " Atomic Number = 1\n", - " Index in Parent (molecule) = 56\n", - "----------------------------------------------------\n", - "\n", - "SPECIE.SET_ATOMS: creating atom for label C\n", - "SPECIE.SET_ATOMS: ismetal=False\n", - "SPECIE.SET_ATOMS: added atom to specie: \n", - "------------- Cell2mol ATOM Object ----------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Label = C\n", - " Atomic Number = 6\n", - " Index in Parent (molecule) = 57\n", - "----------------------------------------------------\n", - "\n", - "SPECIE.SET_ATOMS: creating atom for label C\n", - "SPECIE.SET_ATOMS: ismetal=False\n", - "SPECIE.SET_ATOMS: added atom to specie: \n", - "------------- Cell2mol ATOM Object ----------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Label = C\n", - " Atomic Number = 6\n", - " Index in Parent (molecule) = 58\n", - "----------------------------------------------------\n", - "\n", - "SPECIE.SET_ATOMS: creating atom for label C\n", - "SPECIE.SET_ATOMS: ismetal=False\n", - "SPECIE.SET_ATOMS: added atom to specie: \n", - "------------- Cell2mol ATOM Object ----------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Label = C\n", - " Atomic Number = 6\n", - " Index in Parent (molecule) = 59\n", - "----------------------------------------------------\n", - "\n", - "SPECIE.SET_ATOMS: creating atom for label H\n", - "SPECIE.SET_ATOMS: ismetal=False\n", - "SPECIE.SET_ATOMS: added atom to specie: \n", - "------------- Cell2mol ATOM Object ----------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Label = H\n", - " Atomic Number = 1\n", - " Index in Parent (molecule) = 60\n", - "----------------------------------------------------\n", - "\n", - "SPECIE.SET_ATOMS: creating atom for label C\n", - "SPECIE.SET_ATOMS: ismetal=False\n", - "SPECIE.SET_ATOMS: added atom to specie: \n", - "------------- Cell2mol ATOM Object ----------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Label = C\n", - " Atomic Number = 6\n", - " Index in Parent (molecule) = 61\n", - "----------------------------------------------------\n", - "\n", - "SPECIE.SET_ATOMS: creating atom for label H\n", - "SPECIE.SET_ATOMS: ismetal=False\n", - "SPECIE.SET_ATOMS: added atom to specie: \n", - "------------- Cell2mol ATOM Object ----------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Label = H\n", - " Atomic Number = 1\n", - " Index in Parent (molecule) = 62\n", - "----------------------------------------------------\n", - "\n", - "SPECIE.SET_ATOMS: creating atom for label C\n", - "SPECIE.SET_ATOMS: ismetal=False\n", - "SPECIE.SET_ATOMS: added atom to specie: \n", - "------------- Cell2mol ATOM Object ----------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Label = C\n", - " Atomic Number = 6\n", - " Index in Parent (molecule) = 63\n", - "----------------------------------------------------\n", - "\n", - "SPECIE.SET_ATOMS: creating atom for label H\n", - "SPECIE.SET_ATOMS: ismetal=False\n", - "SPECIE.SET_ATOMS: added atom to specie: \n", - "------------- Cell2mol ATOM Object ----------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Label = H\n", - " Atomic Number = 1\n", - " Index in Parent (molecule) = 64\n", - "----------------------------------------------------\n", - "\n", - "SPECIE.SET_ATOMS: creating atom for label C\n", - "SPECIE.SET_ATOMS: ismetal=False\n", - "SPECIE.SET_ATOMS: added atom to specie: \n", - "------------- Cell2mol ATOM Object ----------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Label = C\n", - " Atomic Number = 6\n", - " Index in Parent (molecule) = 65\n", - "----------------------------------------------------\n", - "\n", - "SPECIE.SET_ATOMS: creating atom for label C\n", - "SPECIE.SET_ATOMS: ismetal=False\n", - "SPECIE.SET_ATOMS: added atom to specie: \n", - "------------- Cell2mol ATOM Object ----------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Label = C\n", - " Atomic Number = 6\n", - " Index in Parent (molecule) = 66\n", - "----------------------------------------------------\n", - "\n", - "SPECIE.SET_ATOMS: creating atom for label H\n", - "SPECIE.SET_ATOMS: ismetal=False\n", - "SPECIE.SET_ATOMS: added atom to specie: \n", - "------------- Cell2mol ATOM Object ----------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Label = H\n", - " Atomic Number = 1\n", - " Index in Parent (molecule) = 67\n", - "----------------------------------------------------\n", - "\n", - "SPECIE.SET_ATOMS: creating atom for label C\n", - "SPECIE.SET_ATOMS: ismetal=False\n", - "SPECIE.SET_ATOMS: added atom to specie: \n", - "------------- Cell2mol ATOM Object ----------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Label = C\n", - " Atomic Number = 6\n", - " Index in Parent (molecule) = 68\n", - "----------------------------------------------------\n", - "\n", - "SPECIE.SET_ATOMS: creating atom for label H\n", - "SPECIE.SET_ATOMS: ismetal=False\n", - "SPECIE.SET_ATOMS: added atom to specie: \n", - "------------- Cell2mol ATOM Object ----------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Label = H\n", - " Atomic Number = 1\n", - " Index in Parent (molecule) = 69\n", - "----------------------------------------------------\n", - "\n", - "SPECIE.SET_ATOMS: creating atom for label H\n", - "SPECIE.SET_ATOMS: ismetal=False\n", - "SPECIE.SET_ATOMS: added atom to specie: \n", - "------------- Cell2mol ATOM Object ----------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Label = H\n", - " Atomic Number = 1\n", - " Index in Parent (molecule) = 70\n", - "----------------------------------------------------\n", - "\n", - "SPECIE.SET_ATOMS: creating atom for label H\n", - "SPECIE.SET_ATOMS: ismetal=False\n", - "SPECIE.SET_ATOMS: added atom to specie: \n", - "------------- Cell2mol ATOM Object ----------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Label = H\n", - " Atomic Number = 1\n", - " Index in Parent (molecule) = 71\n", - "----------------------------------------------------\n", - "\n", - "SPECIE.SET_ATOMS: creating atom for label C\n", - "SPECIE.SET_ATOMS: ismetal=False\n", - "SPECIE.SET_ATOMS: added atom to specie: \n", - "------------- Cell2mol ATOM Object ----------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Label = C\n", - " Atomic Number = 6\n", - " Index in Parent (molecule) = 72\n", - "----------------------------------------------------\n", - "\n", - "SPECIE.SET_ATOMS: creating atom for label H\n", - "SPECIE.SET_ATOMS: ismetal=False\n", - "SPECIE.SET_ATOMS: added atom to specie: \n", - "------------- Cell2mol ATOM Object ----------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Label = H\n", - " Atomic Number = 1\n", - " Index in Parent (molecule) = 73\n", - "----------------------------------------------------\n", - "\n", - "SPECIE.SET_ATOMS: creating atom for label H\n", - "SPECIE.SET_ATOMS: ismetal=False\n", - "SPECIE.SET_ATOMS: added atom to specie: \n", - "------------- Cell2mol ATOM Object ----------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Label = H\n", - " Atomic Number = 1\n", - " Index in Parent (molecule) = 74\n", - "----------------------------------------------------\n", - "\n", - "SPECIE.SET_ATOMS: creating atom for label H\n", - "SPECIE.SET_ATOMS: ismetal=False\n", - "SPECIE.SET_ATOMS: added atom to specie: \n", - "------------- Cell2mol ATOM Object ----------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Label = H\n", - " Atomic Number = 1\n", - " Index in Parent (molecule) = 75\n", - "----------------------------------------------------\n", - "\n", - "SPECIE.SET_ATOMS: creating atom for label C\n", - "SPECIE.SET_ATOMS: ismetal=False\n", - "SPECIE.SET_ATOMS: added atom to specie: \n", - "------------- Cell2mol ATOM Object ----------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Label = C\n", - " Atomic Number = 6\n", - " Index in Parent (molecule) = 76\n", - "----------------------------------------------------\n", - "\n", - "SPECIE.SET_ATOMS: creating atom for label H\n", - "SPECIE.SET_ATOMS: ismetal=False\n", - "SPECIE.SET_ATOMS: added atom to specie: \n", - "------------- Cell2mol ATOM Object ----------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Label = H\n", - " Atomic Number = 1\n", - " Index in Parent (molecule) = 77\n", - "----------------------------------------------------\n", - "\n", - "SPECIE.SET_ATOMS: creating atom for label C\n", - "SPECIE.SET_ATOMS: ismetal=False\n", - "SPECIE.SET_ATOMS: added atom to specie: \n", - "------------- Cell2mol ATOM Object ----------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Label = C\n", - " Atomic Number = 6\n", - " Index in Parent (molecule) = 78\n", - "----------------------------------------------------\n", - "\n", - "SPECIE.SET_ATOMS: creating atom for label H\n", - "SPECIE.SET_ATOMS: ismetal=False\n", - "SPECIE.SET_ATOMS: added atom to specie: \n", - "------------- Cell2mol ATOM Object ----------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Label = H\n", - " Atomic Number = 1\n", - " Index in Parent (molecule) = 79\n", - "----------------------------------------------------\n", - "\n", - "SPECIE.SET_ATOMS: creating atom for label H\n", - "SPECIE.SET_ATOMS: ismetal=False\n", - "SPECIE.SET_ATOMS: added atom to specie: \n", - "------------- Cell2mol ATOM Object ----------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Label = H\n", - " Atomic Number = 1\n", - " Index in Parent (molecule) = 80\n", - "----------------------------------------------------\n", - "\n", - "SPECIE.SET_ATOMS: creating atom for label H\n", - "SPECIE.SET_ATOMS: ismetal=False\n", - "SPECIE.SET_ATOMS: added atom to specie: \n", - "------------- Cell2mol ATOM Object ----------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Label = H\n", - " Atomic Number = 1\n", - " Index in Parent (molecule) = 81\n", - "----------------------------------------------------\n", - "\n", - "SPECIE.SET_ATOMS: creating atom for label C\n", - "SPECIE.SET_ATOMS: ismetal=False\n", - "SPECIE.SET_ATOMS: added atom to specie: \n", - "------------- Cell2mol ATOM Object ----------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Label = C\n", - " Atomic Number = 6\n", - " Index in Parent (molecule) = 82\n", - "----------------------------------------------------\n", - "\n", - "SPECIE.SET_ATOMS: creating atom for label H\n", - "SPECIE.SET_ATOMS: ismetal=False\n", - "SPECIE.SET_ATOMS: added atom to specie: \n", - "------------- Cell2mol ATOM Object ----------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Label = H\n", - " Atomic Number = 1\n", - " Index in Parent (molecule) = 83\n", - "----------------------------------------------------\n", - "\n", - "SPECIE.SET_ATOMS: creating atom for label H\n", - "SPECIE.SET_ATOMS: ismetal=False\n", - "SPECIE.SET_ATOMS: added atom to specie: \n", - "------------- Cell2mol ATOM Object ----------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Label = H\n", - " Atomic Number = 1\n", - " Index in Parent (molecule) = 84\n", - "----------------------------------------------------\n", - "\n", - "SPECIE.SET_ATOMS: creating atom for label H\n", - "SPECIE.SET_ATOMS: ismetal=False\n", - "SPECIE.SET_ATOMS: added atom to specie: \n", - "------------- Cell2mol ATOM Object ----------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Label = H\n", - " Atomic Number = 1\n", - " Index in Parent (molecule) = 85\n", - "----------------------------------------------------\n", - "\n", - "SPECIE.SET_ATOMS: creating atom for label C\n", - "SPECIE.SET_ATOMS: ismetal=False\n", - "SPECIE.SET_ATOMS: added atom to specie: \n", - "------------- Cell2mol ATOM Object ----------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Label = C\n", - " Atomic Number = 6\n", - " Index in Parent (molecule) = 86\n", - "----------------------------------------------------\n", - "\n", - "SPECIE.SET_ATOMS: creating atom for label C\n", - "SPECIE.SET_ATOMS: ismetal=False\n", - "SPECIE.SET_ATOMS: added atom to specie: \n", - "------------- Cell2mol ATOM Object ----------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Label = C\n", - " Atomic Number = 6\n", - " Index in Parent (molecule) = 87\n", - "----------------------------------------------------\n", - "\n", - "SPECIE.SET_ATOMS: creating atom for label C\n", - "SPECIE.SET_ATOMS: ismetal=False\n", - "SPECIE.SET_ATOMS: added atom to specie: \n", - "------------- Cell2mol ATOM Object ----------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Label = C\n", - " Atomic Number = 6\n", - " Index in Parent (molecule) = 88\n", - "----------------------------------------------------\n", - "\n", - "SPECIE.SET_ATOMS: creating atom for label H\n", - "SPECIE.SET_ATOMS: ismetal=False\n", - "SPECIE.SET_ATOMS: added atom to specie: \n", - "------------- Cell2mol ATOM Object ----------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Label = H\n", - " Atomic Number = 1\n", - " Index in Parent (molecule) = 89\n", - "----------------------------------------------------\n", - "\n", - "SPECIE.SET_ATOMS: creating atom for label C\n", - "SPECIE.SET_ATOMS: ismetal=False\n", - "SPECIE.SET_ATOMS: added atom to specie: \n", - "------------- Cell2mol ATOM Object ----------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Label = C\n", - " Atomic Number = 6\n", - " Index in Parent (molecule) = 90\n", - "----------------------------------------------------\n", - "\n", - "SPECIE.SET_ATOMS: creating atom for label H\n", - "SPECIE.SET_ATOMS: ismetal=False\n", - "SPECIE.SET_ATOMS: added atom to specie: \n", - "------------- Cell2mol ATOM Object ----------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Label = H\n", - " Atomic Number = 1\n", - " Index in Parent (molecule) = 91\n", - "----------------------------------------------------\n", - "\n", - "SPECIE.SET_ATOMS: creating atom for label C\n", - "SPECIE.SET_ATOMS: ismetal=False\n", - "SPECIE.SET_ATOMS: added atom to specie: \n", - "------------- Cell2mol ATOM Object ----------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Label = C\n", - " Atomic Number = 6\n", - " Index in Parent (molecule) = 92\n", - "----------------------------------------------------\n", - "\n", - "SPECIE.SET_ATOMS: creating atom for label H\n", - "SPECIE.SET_ATOMS: ismetal=False\n", - "SPECIE.SET_ATOMS: added atom to specie: \n", - "------------- Cell2mol ATOM Object ----------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Label = H\n", - " Atomic Number = 1\n", - " Index in Parent (molecule) = 93\n", - "----------------------------------------------------\n", - "\n", - "SPECIE.SET_ATOMS: creating atom for label C\n", - "SPECIE.SET_ATOMS: ismetal=False\n", - "SPECIE.SET_ATOMS: added atom to specie: \n", - "------------- Cell2mol ATOM Object ----------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Label = C\n", - " Atomic Number = 6\n", - " Index in Parent (molecule) = 94\n", - "----------------------------------------------------\n", - "\n", - "SPECIE.SET_ATOMS: creating atom for label C\n", - "SPECIE.SET_ATOMS: ismetal=False\n", - "SPECIE.SET_ATOMS: added atom to specie: \n", - "------------- Cell2mol ATOM Object ----------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Label = C\n", - " Atomic Number = 6\n", - " Index in Parent (molecule) = 95\n", - "----------------------------------------------------\n", - "\n", - "SPECIE.SET_ATOMS: creating atom for label H\n", - "SPECIE.SET_ATOMS: ismetal=False\n", - "SPECIE.SET_ATOMS: added atom to specie: \n", - "------------- Cell2mol ATOM Object ----------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Label = H\n", - " Atomic Number = 1\n", - " Index in Parent (molecule) = 96\n", - "----------------------------------------------------\n", - "\n", - "SPECIE.SET_ATOMS: creating atom for label C\n", - "SPECIE.SET_ATOMS: ismetal=False\n", - "SPECIE.SET_ATOMS: added atom to specie: \n", - "------------- Cell2mol ATOM Object ----------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Label = C\n", - " Atomic Number = 6\n", - " Index in Parent (molecule) = 97\n", - "----------------------------------------------------\n", - "\n", - "SPECIE.SET_ATOMS: creating atom for label H\n", - "SPECIE.SET_ATOMS: ismetal=False\n", - "SPECIE.SET_ATOMS: added atom to specie: \n", - "------------- Cell2mol ATOM Object ----------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Label = H\n", - " Atomic Number = 1\n", - " Index in Parent (molecule) = 98\n", - "----------------------------------------------------\n", - "\n", - "SPECIE.SET_ATOMS: creating atom for label H\n", - "SPECIE.SET_ATOMS: ismetal=False\n", - "SPECIE.SET_ATOMS: added atom to specie: \n", - "------------- Cell2mol ATOM Object ----------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Label = H\n", - " Atomic Number = 1\n", - " Index in Parent (molecule) = 99\n", - "----------------------------------------------------\n", - "\n", - "SPECIE.SET_ATOMS: creating atom for label H\n", - "SPECIE.SET_ATOMS: ismetal=False\n", - "SPECIE.SET_ATOMS: added atom to specie: \n", - "------------- Cell2mol ATOM Object ----------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Label = H\n", - " Atomic Number = 1\n", - " Index in Parent (molecule) = 100\n", - "----------------------------------------------------\n", - "\n", - "SPECIE.SET_ATOMS: creating atom for label C\n", - "SPECIE.SET_ATOMS: ismetal=False\n", - "SPECIE.SET_ATOMS: added atom to specie: \n", - "------------- Cell2mol ATOM Object ----------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Label = C\n", - " Atomic Number = 6\n", - " Index in Parent (molecule) = 101\n", - "----------------------------------------------------\n", - "\n", - "SPECIE.SET_ATOMS: creating atom for label H\n", - "SPECIE.SET_ATOMS: ismetal=False\n", - "SPECIE.SET_ATOMS: added atom to specie: \n", - "------------- Cell2mol ATOM Object ----------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Label = H\n", - " Atomic Number = 1\n", - " Index in Parent (molecule) = 102\n", - "----------------------------------------------------\n", - "\n", - "SPECIE.SET_ATOMS: creating atom for label H\n", - "SPECIE.SET_ATOMS: ismetal=False\n", - "SPECIE.SET_ATOMS: added atom to specie: \n", - "------------- Cell2mol ATOM Object ----------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Label = H\n", - " Atomic Number = 1\n", - " Index in Parent (molecule) = 103\n", - "----------------------------------------------------\n", - "\n", - "SPECIE.SET_ATOMS: creating atom for label H\n", - "SPECIE.SET_ATOMS: ismetal=False\n", - "SPECIE.SET_ATOMS: added atom to specie: \n", - "------------- Cell2mol ATOM Object ----------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Label = H\n", - " Atomic Number = 1\n", - " Index in Parent (molecule) = 104\n", - "----------------------------------------------------\n", - "\n", - "SPECIE.SET_ATOMS: creating atom for label C\n", - "SPECIE.SET_ATOMS: ismetal=False\n", - "SPECIE.SET_ATOMS: added atom to specie: \n", - "------------- Cell2mol ATOM Object ----------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Label = C\n", - " Atomic Number = 6\n", - " Index in Parent (molecule) = 105\n", - "----------------------------------------------------\n", - "\n", - "SPECIE.SET_ATOMS: creating atom for label H\n", - "SPECIE.SET_ATOMS: ismetal=False\n", - "SPECIE.SET_ATOMS: added atom to specie: \n", - "------------- Cell2mol ATOM Object ----------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Label = H\n", - " Atomic Number = 1\n", - " Index in Parent (molecule) = 106\n", - "----------------------------------------------------\n", - "\n", - "SPECIE.SET_ATOMS: creating atom for label C\n", - "SPECIE.SET_ATOMS: ismetal=False\n", - "SPECIE.SET_ATOMS: added atom to specie: \n", - "------------- Cell2mol ATOM Object ----------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Label = C\n", - " Atomic Number = 6\n", - " Index in Parent (molecule) = 107\n", - "----------------------------------------------------\n", - "\n", - "SPECIE.SET_ATOMS: creating atom for label H\n", - "SPECIE.SET_ATOMS: ismetal=False\n", - "SPECIE.SET_ATOMS: added atom to specie: \n", - "------------- Cell2mol ATOM Object ----------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Label = H\n", - " Atomic Number = 1\n", - " Index in Parent (molecule) = 108\n", - "----------------------------------------------------\n", - "\n", - "SPECIE.SET_ATOMS: creating atom for label H\n", - "SPECIE.SET_ATOMS: ismetal=False\n", - "SPECIE.SET_ATOMS: added atom to specie: \n", - "------------- Cell2mol ATOM Object ----------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Label = H\n", - " Atomic Number = 1\n", - " Index in Parent (molecule) = 109\n", - "----------------------------------------------------\n", - "\n", - "SPECIE.SET_ATOMS: creating atom for label H\n", - "SPECIE.SET_ATOMS: ismetal=False\n", - "SPECIE.SET_ATOMS: added atom to specie: \n", - "------------- Cell2mol ATOM Object ----------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Label = H\n", - " Atomic Number = 1\n", - " Index in Parent (molecule) = 110\n", - "----------------------------------------------------\n", - "\n", - "SPECIE.SET_ATOMS: creating atom for label C\n", - "SPECIE.SET_ATOMS: ismetal=False\n", - "SPECIE.SET_ATOMS: added atom to specie: \n", - "------------- Cell2mol ATOM Object ----------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Label = C\n", - " Atomic Number = 6\n", - " Index in Parent (molecule) = 111\n", - "----------------------------------------------------\n", - "\n", - "SPECIE.SET_ATOMS: creating atom for label H\n", - "SPECIE.SET_ATOMS: ismetal=False\n", - "SPECIE.SET_ATOMS: added atom to specie: \n", - "------------- Cell2mol ATOM Object ----------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Label = H\n", - " Atomic Number = 1\n", - " Index in Parent (molecule) = 112\n", - "----------------------------------------------------\n", - "\n", - "SPECIE.SET_ATOMS: creating atom for label H\n", - "SPECIE.SET_ATOMS: ismetal=False\n", - "SPECIE.SET_ATOMS: added atom to specie: \n", - "------------- Cell2mol ATOM Object ----------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Label = H\n", - " Atomic Number = 1\n", - " Index in Parent (molecule) = 113\n", - "----------------------------------------------------\n", - "\n", - "SPECIE.SET_ATOMS: creating atom for label H\n", - "SPECIE.SET_ATOMS: ismetal=False\n", - "SPECIE.SET_ATOMS: added atom to specie: \n", - "------------- Cell2mol ATOM Object ----------------\n", - " Version = 0.1\n", - " Type = atom\n", - " Label = H\n", - " Atomic Number = 1\n", - " Index in Parent (molecule) = 114\n", - "----------------------------------------------------\n", - "\n" - ] - }, - { - "data": { - "text/plain": [ - "[------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 115\n", - " Formula = H68-C42-N4-Fe\n", - " Has Adjacency Matrix = YES\n", - " # Ligands = 2\n", - " # Metals = 1\n", - " ---------------------------------------------------]" - ] - }, - "execution_count": 4, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "newcell.get_reference_molecules(ref_labels, ref_fracs, debug=debug)" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 115\n", - " Formula = H68-C42-N4-Fe\n", - " Has Adjacency Matrix = YES\n", - " # Ligands = 2\n", - " # Metals = 1\n", - "---------------------------------------------------\n", - "\n" - ] - } - ], - "source": [ - "for ref in newcell.refmoleclist:\n", - " if ref.iscomplex: ref.split_complex()\n", - " print(ref)" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "LIGAND.SPLIT_LIGAND: self.indices=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23]\n", - "LIGAND.SPLIT_LIGAND: conn_idx=[0, 1, 2]\n", - "labels=['N', 'N', 'C'] 3\n", - "indices=None\n", - "LIGAND.SPLIT_LIGAND: block=[0, 1, 2]\n", - "LIGAND.SPLIT_LIGAND: gr_indices=[0, 1, 2]\n", - "[------------- Cell2mol GROUP Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = group\n", - " Number of Atoms = 3\n", - " Formula = C-N2\n", - " Has Adjacency Matrix = NO \n", - " Has Parent = YES\n", - "---------------------------------------------------\n", - "]\n", - "LIGAND.SPLIT_LIGAND: self.indices=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89]\n", - "LIGAND.SPLIT_LIGAND: conn_idx=[0, 1]\n", - "labels=['N', 'N'] 2\n", - "indices=None\n", - "LIGAND.SPLIT_LIGAND: block=[1]\n", - "LIGAND.SPLIT_LIGAND: gr_indices=[1]\n", - "LIGAND.SPLIT_LIGAND: block=[0]\n", - "LIGAND.SPLIT_LIGAND: gr_indices=[0]\n", - "[------------- Cell2mol GROUP Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = group\n", - " Number of Atoms = 1\n", - " Formula = N\n", - " Has Adjacency Matrix = NO \n", - " Has Parent = YES\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol GROUP Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = group\n", - " Number of Atoms = 1\n", - " Formula = N\n", - " Has Adjacency Matrix = NO \n", - " Has Parent = YES\n", - "---------------------------------------------------\n", - "]\n" - ] - } - ], - "source": [ - "for ref in newcell.refmoleclist:\n", - " for lig in ref.ligands:\n", - " lig.split_ligand(debug=debug)\n", - " print(lig.groups)" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "------------- Cell2mol LIGAND Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = ligand\n", - " Number of Atoms = 24\n", - " Formula = H15-C7-N2\n", - " Has Adjacency Matrix = NO \n", - " Has Parent = YES\n", - " # Groups = 1\n", - "---------------------------------------------------\n", - "\n", - "------------- Cell2mol GROUP Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = group\n", - " Number of Atoms = 3\n", - " Formula = C-N2\n", - " Has Adjacency Matrix = NO \n", - " Has Parent = YES\n", - "---------------------------------------------------\n", - "\n", - "------------- Cell2mol LIGAND Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = ligand\n", - " Number of Atoms = 90\n", - " Formula = H53-C35-N2\n", - " Has Adjacency Matrix = NO \n", - " Has Parent = YES\n", - " # Groups = 2\n", - "---------------------------------------------------\n", - "\n", - "------------- Cell2mol GROUP Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = group\n", - " Number of Atoms = 1\n", - " Formula = N\n", - " Has Adjacency Matrix = NO \n", - " Has Parent = YES\n", - "---------------------------------------------------\n", - "\n", - "------------- Cell2mol GROUP Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = group\n", - " Number of Atoms = 1\n", - " Formula = N\n", - " Has Adjacency Matrix = NO \n", - " Has Parent = YES\n", - "---------------------------------------------------\n", - "\n" - ] - } - ], - "source": [ - "for ref in newcell.refmoleclist:\n", - " for lig in ref.ligands:\n", - " print(lig)\n", - " for gr in lig.groups:\n", - " print(gr)" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "LIGAND.Get_denticity: checking connectivity of ligand H15-C7-N2\n", - "LIGAND.Get_denticity: initial connectivity is 3\n", - "LIGAND.Get_denticity: checking denticity of group \n", - "------------- Cell2mol GROUP Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = group\n", - " Number of Atoms = 3\n", - " Formula = C-N2\n", - " Has Adjacency Matrix = NO \n", - " Has Parent = YES\n", - "---------------------------------------------------\n", - "\n", - "Entering COORD_CORR_NONHAPTIC:\n", - "\tconnectivity=1 in atom idx=0, label=N\n", - "\tconnectivity verified for atom 0 with label N\n", - "\tconnectivity=1 in atom idx=1, label=N\n", - "\tconnectivity verified for atom 1 with label N\n", - "\tconnectivity=1 in atom idx=2, label=C\n", - "\tcorrected mconnec of atom 2 with label C\n", - "ATOM.RESET_MCONN: resetting mconnec for atom self.label='C' with self.parent_index=3\n", - "ATOM.RESET_MCONN: updating ligand atoms and madjnum\n", - "ATOM.RESET_MCONN: initial self.parent.madjnum=[1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "ATOM.RESET_MCONN: final self.parent.madjnum=[1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n", - "ATOM.RESET_MCONN: updating molecule atoms and madjnum\n", - "GROUP.REMOVE_ATOM: deleting atom index=2 from group\n", - "LIGAND.Get_denticity: final connectivity is 2\n", - "LIGAND.Get_denticity: checking connectivity of ligand H53-C35-N2\n", - "LIGAND.Get_denticity: initial connectivity is 2\n", - "LIGAND.Get_denticity: checking denticity of group \n", - "------------- Cell2mol GROUP Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = group\n", - " Number of Atoms = 1\n", - " Formula = N\n", - " Has Adjacency Matrix = NO \n", - " Has Parent = YES\n", - "---------------------------------------------------\n", - "\n", - "Entering COORD_CORR_NONHAPTIC:\n", - "\tconnectivity=1 in atom idx=0, label=N\n", - "\tconnectivity verified for atom 0 with label N\n", - "LIGAND.Get_denticity: checking denticity of group \n", - "------------- Cell2mol GROUP Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = group\n", - " Number of Atoms = 1\n", - " Formula = N\n", - " Has Adjacency Matrix = NO \n", - " Has Parent = YES\n", - "---------------------------------------------------\n", - "\n", - "Entering COORD_CORR_NONHAPTIC:\n", - "\tconnectivity=1 in atom idx=0, label=N\n", - "\tconnectivity verified for atom 0 with label N\n", - "LIGAND.Get_denticity: final connectivity is 2\n" - ] - } - ], - "source": [ - "for ref in newcell.refmoleclist:\n", - " for lig in ref.ligands:\n", - " lig.get_denticity(debug=debug)" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[------------- Cell2mol LIGAND Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = ligand\n", - " Number of Atoms = 24\n", - " Formula = H15-C7-N2\n", - " Has Adjacency Matrix = NO \n", - " Has Parent = YES\n", - " # Groups = 1\n", - "---------------------------------------------------\n", - ", ------------- Cell2mol LIGAND Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = ligand\n", - " Number of Atoms = 90\n", - " Formula = H53-C35-N2\n", - " Has Adjacency Matrix = NO \n", - " Has Parent = YES\n", - " # Groups = 2\n", - "---------------------------------------------------\n", - "]\n" - ] - } - ], - "source": [ - "for ref in newcell.refmoleclist:\n", - " print(ref.ligands)" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "CLASSIFY FRAGMENTS, preparing block ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 4\n", - " Formula = H3-C\n", - " Has Adjacency Matrix = YES\n", - " Has Parent = YES\n", - "---------------------------------------------------\n", - "\n", - "CLASSIFY FRAGMENTS, preparing block ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 4\n", - " Formula = H3-C\n", - " Has Adjacency Matrix = YES\n", - " Has Parent = YES\n", - "---------------------------------------------------\n", - "\n", - "CLASSIFY FRAGMENTS, preparing block ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-C\n", - " Has Adjacency Matrix = YES\n", - " Has Parent = YES\n", - "---------------------------------------------------\n", - "\n", - "CLASSIFY FRAGMENTS, preparing block ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 2\n", - " Formula = H-C\n", - " Has Adjacency Matrix = YES\n", - " Has Parent = YES\n", - "---------------------------------------------------\n", - "\n", - "CLASSIFY FRAGMENTS, preparing block ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 2\n", - " Formula = H-C\n", - " Has Adjacency Matrix = YES\n", - " Has Parent = YES\n", - "---------------------------------------------------\n", - "\n", - "CLASSIFY FRAGMENTS, preparing block ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 4\n", - " Formula = H3-C\n", - " Has Adjacency Matrix = YES\n", - " Has Parent = YES\n", - "---------------------------------------------------\n", - "\n", - "CLASSIFY FRAGMENTS, preparing block ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 4\n", - " Formula = H3-C\n", - " Has Adjacency Matrix = YES\n", - " Has Parent = YES\n", - "---------------------------------------------------\n", - "\n", - "CLASSIFY FRAGMENTS, preparing block ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 8\n", - " Formula = H5-C3\n", - " Has Adjacency Matrix = YES\n", - " Has Parent = YES\n", - "---------------------------------------------------\n", - "\n", - "CLASSIFY FRAGMENTS, preparing block ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 8\n", - " Formula = H5-C3\n", - " Has Adjacency Matrix = YES\n", - " Has Parent = YES\n", - "---------------------------------------------------\n", - "\n", - "CLASSIFY FRAGMENTS, preparing block ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-C\n", - " Has Adjacency Matrix = YES\n", - " Has Parent = YES\n", - "---------------------------------------------------\n", - "\n", - "CLASSIFY FRAGMENTS, preparing block ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 15\n", - " Formula = H9-C6\n", - " Has Adjacency Matrix = YES\n", - " Has Parent = YES\n", - "---------------------------------------------------\n", - "\n", - "CLASSIFY FRAGMENTS, preparing block ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 4\n", - " Formula = H3-C\n", - " Has Adjacency Matrix = YES\n", - " Has Parent = YES\n", - "---------------------------------------------------\n", - "\n", - "CLASSIFY FRAGMENTS, preparing block ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 4\n", - " Formula = H3-C\n", - " Has Adjacency Matrix = YES\n", - " Has Parent = YES\n", - "---------------------------------------------------\n", - "\n", - "CLASSIFY FRAGMENTS, preparing block ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 15\n", - " Formula = H9-C6\n", - " Has Adjacency Matrix = YES\n", - " Has Parent = YES\n", - "---------------------------------------------------\n", - "\n", - "CLASSIFY FRAGMENTS, preparing block ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 59\n", - " Formula = H28-C26-N4-Fe\n", - " Has Adjacency Matrix = YES\n", - " Has Parent = YES\n", - " # Ligands = 2\n", - " # Metals = 1\n", - "---------------------------------------------------\n", - "\n", - "CLASSIFY FRAGMENTS, preparing block ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 4\n", - " Formula = H3-C\n", - " Has Adjacency Matrix = YES\n", - " Has Parent = YES\n", - "---------------------------------------------------\n", - "\n", - "CLASSIFY FRAGMENTS, preparing block ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-C\n", - " Has Adjacency Matrix = YES\n", - " Has Parent = YES\n", - "---------------------------------------------------\n", - "\n", - "CLASSIFY FRAGMENTS, preparing block ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 3\n", - " Formula = H2-C\n", - " Has Adjacency Matrix = YES\n", - " Has Parent = YES\n", - "---------------------------------------------------\n", - "\n", - "CLASSIFY FRAGMENTS, preparing block ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 59\n", - " Formula = H28-C26-N4-Fe\n", - " Has Adjacency Matrix = YES\n", - " Has Parent = YES\n", - " # Ligands = 2\n", - " # Metals = 1\n", - "---------------------------------------------------\n", - "\n", - "CLASSIFY FRAGMENTS, preparing block ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 4\n", - " Formula = H3-C\n", - " Has Adjacency Matrix = YES\n", - " Has Parent = YES\n", - "---------------------------------------------------\n", - "\n", - "CLASSIFY FRAGMENTS, preparing block ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = H\n", - " Has Adjacency Matrix = YES\n", - " Has Parent = YES\n", - "---------------------------------------------------\n", - "\n", - "CLASSIFY FRAGMENTS, preparing block ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = H\n", - " Has Adjacency Matrix = YES\n", - " Has Parent = YES\n", - "---------------------------------------------------\n", - "\n", - "CLASSIFY FRAGMENTS, preparing block ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = H\n", - " Has Adjacency Matrix = YES\n", - " Has Parent = YES\n", - "---------------------------------------------------\n", - "\n", - "CLASSIFY FRAGMENTS, preparing block ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = H\n", - " Has Adjacency Matrix = YES\n", - " Has Parent = YES\n", - "---------------------------------------------------\n", - "\n", - "CLASSIFY FRAGMENTS, preparing block ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = H\n", - " Has Adjacency Matrix = YES\n", - " Has Parent = YES\n", - "---------------------------------------------------\n", - "\n", - "CLASSIFY FRAGMENTS, preparing block ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = H\n", - " Has Adjacency Matrix = YES\n", - " Has Parent = YES\n", - "---------------------------------------------------\n", - "\n", - "CLASSIFY FRAGMENTS, preparing block ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = H\n", - " Has Adjacency Matrix = YES\n", - " Has Parent = YES\n", - "---------------------------------------------------\n", - "\n", - "CLASSIFY FRAGMENTS, preparing block ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = H\n", - " Has Adjacency Matrix = YES\n", - " Has Parent = YES\n", - "---------------------------------------------------\n", - "\n", - "CLASSIFY FRAGMENTS, preparing block ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = H\n", - " Has Adjacency Matrix = YES\n", - " Has Parent = YES\n", - "---------------------------------------------------\n", - "\n", - "CLASSIFY FRAGMENTS, preparing block ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = H\n", - " Has Adjacency Matrix = YES\n", - " Has Parent = YES\n", - "---------------------------------------------------\n", - "\n", - "CLASSIFY FRAGMENTS, preparing block ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = H\n", - " Has Adjacency Matrix = YES\n", - " Has Parent = YES\n", - "---------------------------------------------------\n", - "\n", - "CLASSIFY FRAGMENTS, preparing block ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = H\n", - " Has Adjacency Matrix = YES\n", - " Has Parent = YES\n", - "---------------------------------------------------\n", - "\n", - "CLASSIFY FRAGMENTS, preparing block ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = H\n", - " Has Adjacency Matrix = YES\n", - " Has Parent = YES\n", - "---------------------------------------------------\n", - "\n", - "CLASSIFY FRAGMENTS, preparing block ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = H\n", - " Has Adjacency Matrix = YES\n", - " Has Parent = YES\n", - "---------------------------------------------------\n", - "\n", - "CLASSIFY FRAGMENTS, preparing block ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = H\n", - " Has Adjacency Matrix = YES\n", - " Has Parent = YES\n", - "---------------------------------------------------\n", - "\n", - "CLASSIFY FRAGMENTS, preparing block ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = H\n", - " Has Adjacency Matrix = YES\n", - " Has Parent = YES\n", - "---------------------------------------------------\n", - "\n", - "CLASSIFY FRAGMENTS, preparing block ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = H\n", - " Has Adjacency Matrix = YES\n", - " Has Parent = YES\n", - "---------------------------------------------------\n", - "\n", - "CLASSIFY FRAGMENTS, preparing block ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 1\n", - " Formula = H\n", - " Has Adjacency Matrix = YES\n", - " Has Parent = YES\n", - "---------------------------------------------------\n", - "\n", - "CLASSIFY FRAGMENTS, preparing reference ------------- Cell2mol MOLECULE Object --------------\n", - " Version = 0.1\n", - " Type = specie\n", - " Sub-Type = molecule\n", - " Number of Atoms = 115\n", - " Formula = H68-C42-N4-Fe\n", - " Has Adjacency Matrix = YES\n", - " # Ligands = 2\n", - " # Metals = 1\n", - "---------------------------------------------------\n", - "\n", - "38 Blocks sorted as (Molec, Frag, H): 0 20 18\n", - "\n", - "##############################################\n", - "FRAG_RECONSTRUCT. 20 molecules submitted to SEQUENTIAL with Heavy\n", - "##############################################\n", - "FRAG_RECONSTRUCT. 0 molecules and 2 fragments out of SEQUENTIAL with Heavy\n", - "FRAG_RECONSTRUCT. 20 molecules submitted to sequential with All\n", - "FINISHED succesfully\n", - "FRAG_RECONSTRUCT. No remaining Molecules after Hydrogen reconstruction\n" - ] - }, - { - "data": { - "text/plain": [ - "[]" - ] - }, - "execution_count": 10, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "newcell.reconstruct(debug=debug)" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": {}, - "outputs": [], - "source": [ - "moleclist = newcell.get_moleclist()" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "4 [[-1.1937221 -2.1865769 12.7667211]\n", - " [-0.3117672 -1.7814696 12.9064746]\n", - " [-1.4016727 -2.7846598 13.5149354]\n", - " [-1.8724681 -1.4818892 12.7140174]]\n", - "done\n", - "4 [[ 5.7246437 11.1653886 2.0376774]\n", - " [ 4.8426888 10.7602813 1.8979239]\n", - " [ 5.9325943 11.7634715 1.2894631]\n", - " [ 6.4033897 10.4607009 2.0903811]]\n", - "done\n", - "3 [[-1.1746916 -1.9618068 10.3109675]\n", - " [-0.3397163 -1.4504087 10.3423528]\n", - " [-1.935401 -1.3526957 10.4148944]]\n", - "done\n", - "2 [[ 2.4747013 -1.4929587 8.5501323]\n", - " [ 3.0981737 -0.7860424 8.6679753]]\n", - "done\n", - "2 [[ 2.0562203 10.4717704 6.2542662]\n", - " [ 1.4327479 9.7648541 6.1364232]]\n", - "done\n", - "4 [[5.510898 7.9858255 7.1215079]\n", - " [4.8465157 7.2667646 7.1001895]\n", - " [5.786693 8.2028764 6.2060039]\n", - " [5.1200057 8.7795856 7.5413606]]\n", - "done\n", - "4 [[-0.9799764 0.9929862 7.6828907]\n", - " [-0.3155941 1.7120471 7.704209 ]\n", - " [-1.2557714 0.7759353 8.5983947]\n", - " [-0.5890841 0.1992261 7.2630379]]\n", - "done\n", - "8 [[ 2.8326606 -2.0473122 10.9743526]\n", - " [ 2.3795898 -0.7192609 11.5959893]\n", - " [ 1.4107112 -0.7395424 11.739888 ]\n", - " [ 2.6050304 0.0184195 10.9907855]\n", - " [ 2.834744 -0.5887768 12.45346 ]\n", - " [ 4.3580551 -2.0470271 10.830898 ]\n", - " [ 4.7700326 -2.0230027 11.7191619]\n", - " [ 4.6377056 -1.2599973 10.3201462]]\n", - "done\n", - "8 [[ 1.698261 11.0261239 3.8300459]\n", - " [ 2.1513319 9.6980726 3.2084092]\n", - " [ 3.1202104 9.7183542 3.0645105]\n", - " [ 1.9258912 8.9603922 3.8136131]\n", - " [ 1.6961777 9.5675885 2.3509385]\n", - " [ 0.1728666 11.0258388 3.9735006]\n", - " [-0.239111 11.0018145 3.0852367]\n", - " [-0.106784 10.2388091 4.4842523]]\n", - "done\n", - "3 [[ 5.7056132 10.9406185 4.493431 ]\n", - " [ 4.870638 10.4292204 4.4620457]\n", - " [ 6.4663226 10.3315074 4.3895042]]\n", - "done\n", - "15 [[-2.8130411 7.9055708 3.496947 ]\n", - " [-2.6509481 8.8372725 3.594508 ]\n", - " [-1.7671795 6.9979231 3.5773349]\n", - " [-0.8877695 7.3161324 3.7455128]\n", - " [-1.9794711 5.6258931 3.416411 ]\n", - " [-0.8491295 4.6601881 3.7315967]\n", - " [-0.9785995 3.8371379 3.1785044]\n", - " [ 0.551592 5.2053421 3.4549025]\n", - " [ 0.6018914 5.5220512 2.5285913]\n", - " [ 0.7393012 5.9486259 4.0652878]\n", - " [ 1.2120387 4.4950829 3.5930275]\n", - " [-0.9826363 4.2714408 5.2086315]\n", - " [-1.8932336 3.9535702 5.3813989]\n", - " [-0.3420344 3.5597123 5.4184099]\n", - " [-0.7981628 5.0528438 5.7707545]]\n", - "done\n", - "4 [[ 4.5904826 8.4281619 11.3332112]\n", - " [ 4.5150475 7.8061049 12.0877914]\n", - " [ 4.5827675 7.9244098 10.4933577]\n", - " [ 3.8348578 9.052905 11.3475715]]\n", - "done\n", - "4 [[-0.0595609 0.5506498 3.4711873]\n", - " [ 0.0158741 1.1727069 2.7166071]\n", - " [-0.0518459 1.054402 4.3110408]\n", - " [ 0.6960638 -0.0740933 3.4568271]]\n", - "done\n", - "15 [[ 7.3439627 1.0732409 11.3074515]\n", - " [ 7.1818697 0.1415392 11.2098906]\n", - " [ 6.2981011 1.9808886 11.2270637]\n", - " [ 5.4186911 1.6626793 11.0588857]\n", - " [ 6.5103927 3.3529187 11.3879875]\n", - " [ 5.3800511 4.3186237 11.0728018]\n", - " [ 5.5095211 5.1416738 11.6258942]\n", - " [ 3.9793296 3.7734696 11.349496 ]\n", - " [ 3.9290302 3.4567605 12.2758072]\n", - " [ 3.7916204 3.0301858 10.7391107]\n", - " [ 3.3188829 4.4837288 11.211371 ]\n", - " [ 5.5135579 4.7073709 9.595767 ]\n", - " [ 6.4241553 5.0252415 9.4229997]\n", - " [ 4.872956 5.4190994 9.3859887]\n", - " [ 5.3290844 3.9259679 9.033644 ]]\n", - "done\n", - "59 [[-1.5697763 6.4322604 10.8860888]\n", - " [ 0.2757902 6.7705989 11.9064375]\n", - " [ 0.1212497 6.4153917 9.696733 ]\n", - " [ 0.887948 6.6792211 10.7426637]\n", - " [ 1.8268149 6.7968117 10.6591669]\n", - " [ 1.0401875 7.1377638 13.0981916]\n", - " [ 1.8035454 7.723407 12.8250504]\n", - " [ 0.1387715 7.9156116 14.0409357]\n", - " [-0.1752884 8.7299146 13.5948792]\n", - " [-0.630909 7.3612757 14.2892054]\n", - " [ 1.5966688 5.8972786 13.8055457]\n", - " [ 2.153565 5.3873519 13.180356 ]\n", - " [ 0.8545012 5.3361721 14.1145135]\n", - " [ 2.1375648 6.1748788 14.5734499]\n", - " [ 0.6545531 6.2325542 8.3461277]\n", - " [ 0.2447106 5.400337 7.9721686]\n", - " [ 0.231786 7.3899531 7.4510538]\n", - " [-0.7464811 7.4558627 7.4421711]\n", - " [ 0.5576129 7.2337953 6.5405833]\n", - " [ 0.611821 8.2247157 7.7959963]\n", - " [ 2.1699792 6.0628496 8.2857258]\n", - " [ 2.4411132 5.3347911 8.8826391]\n", - " [ 2.6032173 6.8951187 8.5687859]\n", - " [ 2.4385425 5.8495198 7.3681491]\n", - " [-2.871495 8.0034826 10.5601255]\n", - " [-2.8441724 5.2350904 11.8378931]\n", - " [-4.9690155 9.2149635 11.4475012]\n", - " [-3.8182764 8.1627699 11.4590486]\n", - " [-3.8596029 7.2913622 12.6078699]\n", - " [-4.2318054 7.6999659 13.3802154]\n", - " [-3.464292 5.9759369 12.8120226]\n", - " [-3.7155627 5.4093224 14.2476051]\n", - " [-2.5385698 4.5130655 14.6686422]\n", - " [-1.6976938 5.0021916 14.5542042]\n", - " [-2.5266843 3.7070023 14.1115527]\n", - " [-2.5893726 8.8818689 9.4503878]\n", - " [-3.155124 8.6511214 8.1806145]\n", - " [-2.7816692 9.482333 7.1209157]\n", - " [-3.1557607 9.3363939 6.2592997]\n", - " [-1.8769739 10.5149735 7.3019735]\n", - " [-1.6325684 9.900424 9.6378115]\n", - " [-4.1459232 7.5305456 7.9286437]\n", - " [-3.4619145 6.3589668 7.2109264]\n", - " [-2.7317475 6.0162559 7.7678679]\n", - " [-3.101618 6.6668344 6.3525674]\n", - " [-3.0632704 3.8268178 11.6908855]\n", - " [-1.991002 2.9047436 11.7271562]\n", - " [-2.2535965 1.541542 11.5324784]\n", - " [-1.5328031 0.9229945 11.5563135]\n", - " [-0.5451277 3.3231097 11.9320491]\n", - " [-0.5329781 4.291727 12.1810591]\n", - " [ 0.2317729 3.1584212 10.6180107]\n", - " [-0.2313824 3.6402706 9.9011817]\n", - " [ 0.2879914 2.2069701 10.3882464]\n", - " [ 1.1351132 3.5229705 10.7243063]\n", - " [ 0.1482511 2.5319248 13.0517058]\n", - " [ 1.0606393 2.867941 13.1729538]\n", - " [ 0.1790213 1.5821705 12.810246 ]\n", - " [-0.3525243 2.6402476 13.8865258]]\n", - "done\n", - "4 [[ 5.7593356 -0.7832187 14.3040098]\n", - " [ 5.750095 -0.3890004 13.4068633]\n", - " [ 6.5870432 -1.2930653 14.4283668]\n", - " [ 4.989027 -1.3810045 14.4061602]]\n", - "done\n", - "3 [[-1.3147007 4.3558226 0.4555313]\n", - " [-1.3694382 5.1574552 1.0155817]\n", - " [-0.5734455 3.7928486 0.7624265]]\n", - "done\n", - "3 [[ 5.8456223 4.6229892 14.3488672]\n", - " [ 5.9003599 3.8213565 13.7888168]\n", - " [ 5.1043671 5.1859632 14.041972 ]]\n", - "done\n", - "59 [[ 6.100698 2.5465513 3.9183098]\n", - " [ 4.2551314 2.2082128 2.897961 ]\n", - " [ 4.4096719 2.5634201 5.1076655]\n", - " [ 3.6429737 2.2995906 4.0617348]\n", - " [ 2.7041067 2.182 4.1452316]\n", - " [ 3.4907341 1.8410479 1.7062069]\n", - " [ 2.7273762 1.2554047 1.9793481]\n", - " [ 4.3921502 1.0632001 0.7634628]\n", - " [ 4.70621 0.2488972 1.2095194]\n", - " [ 5.1618306 1.617536 0.5151931]\n", - " [ 2.9342528 3.0815331 0.9988528]\n", - " [ 2.3773566 3.5914598 1.6240425]\n", - " [ 3.6764204 3.6426397 0.689885 ]\n", - " [ 2.3933568 2.8039329 0.2309486]\n", - " [ 3.8763685 2.7462575 6.4582708]\n", - " [ 4.2862111 3.5784747 6.8322299]\n", - " [ 4.2991356 1.5888586 7.3533447]\n", - " [ 5.2774027 1.5229491 7.3622274]\n", - " [ 3.9733088 1.7450164 8.2638153]\n", - " [ 3.9191007 0.7540961 7.0084023]\n", - " [ 2.3609424 2.9159621 6.5186728]\n", - " [ 2.0898084 3.6440206 5.9217594]\n", - " [ 1.9277044 2.0836931 6.2356127]\n", - " [ 2.0923791 3.129292 7.4362494]\n", - " [ 7.4024166 0.9753291 4.244273 ]\n", - " [ 7.3750941 3.7437214 2.9665054]\n", - " [ 9.4999371 -0.2361517 3.3568974]\n", - " [ 8.349198 0.8160418 3.3453499]\n", - " [ 8.3905245 1.6874495 2.1965286]\n", - " [ 8.762727 1.2788458 1.4241831]\n", - " [ 7.9952136 3.0028749 1.992376 ]\n", - " [ 8.2464843 3.5694893 0.5567934]\n", - " [ 7.0694914 4.4657462 0.1357563]\n", - " [ 6.2286154 3.9766201 0.2501943]\n", - " [ 7.057606 5.2718094 0.6928459]\n", - " [ 7.1202943 0.0969429 5.3540107]\n", - " [ 7.6860457 0.3276903 6.623784 ]\n", - " [ 7.3125908 -0.5035212 7.6834828]\n", - " [ 7.6866823 -0.3575822 8.5450988]\n", - " [ 6.4078955 -1.5361618 7.502425 ]\n", - " [ 6.16349 -0.9216123 5.166587 ]\n", - " [ 8.6768448 1.4482662 6.8757548]\n", - " [ 7.9928361 2.619845 7.5934721]\n", - " [ 7.2626691 2.9625559 7.0365306]\n", - " [ 7.6325396 2.3119774 8.4518311]\n", - " [ 7.594192 5.1519939 3.1135131]\n", - " [ 6.5219237 6.0740681 3.0772423]\n", - " [ 6.7845182 7.4372698 3.2719201]\n", - " [ 6.0637247 8.0558172 3.248085 ]\n", - " [ 5.0760493 5.655702 2.8723494]\n", - " [ 5.0638998 4.6870847 2.6233394]\n", - " [ 4.2991487 5.8203905 4.1863878]\n", - " [ 4.762304 5.3385412 4.9032168]\n", - " [ 4.2429302 6.7718416 4.4161521]\n", - " [ 3.3958085 5.4558413 4.0800922]\n", - " [ 4.3826705 6.4468869 1.7526927]\n", - " [ 3.4702823 6.1108708 1.6314447]\n", - " [ 4.3519004 7.3966412 1.9941525]\n", - " [ 4.8834459 6.3385641 0.9178727]]\n", - "done\n", - "4 [[-1.228414 9.7620304 0.5003887]\n", - " [-1.2191734 9.3678121 1.3975352]\n", - " [-2.0561215 10.271877 0.3760317]\n", - " [-0.4581054 10.3598162 0.3982383]]\n", - "done\n", - "1 [[-1.2023902 9.4237515 11.6007267]]\n", - "done\n", - "1 [[-5.0255074 9.78435 9.4496476]]\n", - "done\n", - "1 [[ 9.5564291 -0.8055383 5.3547509]]\n", - "done\n", - "1 [[ 3.6715298 -0.370977 4.4428 ]]\n", - "done\n", - "1 [[ 2.1352697 -1.1256925 6.5761138]]\n", - "done\n", - "1 [[ 2.3956519 10.1045042 8.2282847]]\n", - "done\n", - "1 [[ 5.7333119 -0.4449397 3.2036718]]\n", - "done\n", - "1 [[6.7631161 5.6457398 7.0542959]]\n", - "done\n", - "1 [[-2.2321945 3.333072 7.7501026]]\n", - "done\n", - "1 [[-0.078407 7.4874983 0.8053593]]\n", - "done\n", - "1 [[ 4.6093287 1.4913134 13.9990392]]\n", - "done\n", - "1 [[ 3.2045418 11.3871354 0.0429328]]\n", - "done\n", - "1 [[ 1.3263798 -2.4083237 14.7614658]]\n", - "done\n", - "1 [[6.4083925 7.2013318 8.8160193]]\n", - "done\n", - "1 [[-1.8774709 1.7774799 5.9883792]]\n", - "done\n", - "1 [[8.2570098 7.5897151 0.4767016]]\n", - "done\n", - "1 [[-3.7260882 1.3890966 14.3276969]]\n", - "done\n", - "1 [[ 0.8593918 9.3497887 10.3615985]]\n", - "done\n" - ] - } - ], - "source": [ - "for b in moleclist:\n", - " print(b.natoms, np.array(b.coord))\n", - " compute_centroid(np.array(b.coord))\n", - " print(\"done\")\n", - " b.get_centroid()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "classify_fragments(moleclist, newcell.refmoleclist, debug=2)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "cell2mol", - "language": "python", - "name": "cell2mol" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.10.6" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/cell2mol/unitcell.py b/cell2mol/unitcell.py deleted file mode 100644 index 7a516d873..000000000 --- a/cell2mol/unitcell.py +++ /dev/null @@ -1,130 +0,0 @@ -import os -import sys -import logging -from cell2mol.refcell import process_refcell -from contextlib import redirect_stdout -from ase.io import read -from cell2mol.classes import cell -from cell2mol.final_c2m_module import cell2mol_mode -from cell2mol.other import handle_error -from cell2mol.read_write import print_refmoleclist, print_unique_species, print_moleclist -import copy - -VERSION = "2.0" -COV_FACTOR = 1.3 -METAL_FACTOR = 1.0 - -# Set up logging for debug information -logging.basicConfig(level=logging.DEBUG, format="%(asctime)s - %(levelname)s - %(message)s") - -def process_unitcell(input_path, name, current_dir, cif_bond_info, debug=0): - # Set up file paths - cell_fname = os.path.join(current_dir, f"Cell_{name}.cell") - ref_cell_fname = os.path.join(current_dir, f"Ref_Cell_{name}.cell") - output_fname = os.path.join(current_dir, "cell2mol.out") - - # Process reference cell - logging.info("Starting the cell2mol process for the reference cell") - refcell = process_refcell(input_path, name, current_dir, cif_bond_info, debug=debug) - - if refcell.error_case != 0: - logging.error("Error encountered while processing the reference cell") - return refcell - else: - # Redirect stdout to file for logging - with open(output_fname, "a") as output, redirect_stdout(output): - logging.info(f"cell2mol version {VERSION}") - logging.info(f"Initializing cell object from input path: {input_path}") - logging.info(f"Debug level: {debug}") - - # Read CIF file and initialize unit cell parameters - structure = read(input_path) - cell_labels, cell_pos, cell_fracs, cell_vector, cell_param, sym_ops = get_cell_parameters(structure) - - # Create and process unit cell - newcell = cell(name, cell_labels, cell_pos, cell_fracs, cell_vector, cell_param) - newcell.set_subtype("unitcell") - perform_cell2mol(newcell, refcell, sym_ops, cell_fname, ref_cell_fname, debug) - refcell.save(ref_cell_fname) - newcell.save(cell_fname) - - # Print summary information for the unit cell - summary_fname = os.path.join(current_dir, "unitcell_summary.out") - with open(summary_fname, "w") as summary: - with redirect_stdout(summary): - print(name) - print_refmoleclist(newcell) - print_unique_species(newcell) - print_moleclist(newcell) - - summary_fname_ref = os.path.join(current_dir, "reference_summary.out") - with open(summary_fname_ref, "a") as summary_ref: - with redirect_stdout(summary_ref): - print("************ After charge assignment of unit cell ************") - print_refmoleclist(refcell) - - # Handle error cases for the unit cell - if hasattr(newcell, 'error_case'): - error_fname = os.path.join(current_dir, f"unitcell_error_{newcell.error_case}.out") - with open(error_fname, "w") as error_output: - with redirect_stdout(error_output): - handle_error(newcell.error_case) - - if hasattr(refcell, 'error_case') and refcell.error_case != 0: - error_fname_ref = os.path.join(current_dir, f"reference_error_{refcell.error_case}.out") - with open(error_fname_ref, "w") as error_output_ref: - with redirect_stdout(error_output_ref): - handle_error(refcell.error_case) - - return newcell - -def get_cell_parameters(structure): - """Extracts cell parameters and symmetry operations from structure.""" - wrap_keywords = {'pbc': True, 'center': (0.5, 0.5, 0.5)} - cell_labels = [] - for l, n, m in zip(structure.get_chemical_symbols(), structure.get_atomic_numbers(), structure.get_masses()): - if n == 1 and (m > 2 or m== 2.01355) : # Deuterium - cell_labels.append("D") - else: - cell_labels.append(l) - - cell_pos = structure.get_positions(wrap=True, **wrap_keywords) - cell_fracs = structure.get_scaled_positions() - cell_vector = structure.cell.array - cell_param = structure.cell.cellpar() - space_group = structure.info.get('spacegroup') - sym_ops = space_group.get_op() if space_group else None - - return cell_labels, cell_pos, cell_fracs, cell_vector, cell_param, sym_ops - - -def perform_cell2mol(newcell, refcell, sym_ops, cell_fname, ref_cell_fname, debug): - """Handles the reconstruction, charge assignment, and spin assignment for molecules.""" - cov_factor = refcell.refmoleclist[0].cov_factor if refcell.refmoleclist else COV_FACTOR - - # Copy reference molecules from refcell - newcell.refmoleclist = copy.deepcopy(refcell.refmoleclist) - - newcell.has_isolated_H = refcell.has_isolated_H - newcell.has_missing_H = refcell.has_missing_H - newcell.error_get_poscharges = refcell.error_get_poscharges - logging.info("Starting the cell2mol process for the unit cell") - - # Step-by-step molecule reconstruction and error assessment - mode = "reconstruction" - cell2mol_mode(newcell, refcell, sym_ops, mode, debug) - newcell.assess_errors(mode=mode) - - if newcell.error_case == 0 : - mode = "charge_assignment" - cell2mol_mode(newcell, refcell, sym_ops, mode, debug) - newcell.assess_errors(mode=mode) - -if __name__ == "__main__": - input = sys.argv[1] - current_dir = os.getcwd() - input_path = os.path.normpath(input) - dir, file = os.path.split(input_path) - name, extension = os.path.splitext(file) - - process_unitcell(input_path, name, current_dir, debug=1) diff --git a/cell2mol/utils/__init__.py b/cell2mol/utils/__init__.py new file mode 100644 index 000000000..81ffa7621 --- /dev/null +++ b/cell2mol/utils/__init__.py @@ -0,0 +1,3 @@ +from .pydantic import BaseModel + +__all__ = ["BaseModel"] diff --git a/cell2mol/utils/config.py b/cell2mol/utils/config.py new file mode 100644 index 000000000..c92c93ed2 --- /dev/null +++ b/cell2mol/utils/config.py @@ -0,0 +1,41 @@ +from .defaults import ( + DEFAULT_VERSION, + DEFAULT_CUTOFF, + DEFAULT_COV_FACTOR, + DEFAULT_METAL_FACTOR, +) + +# Error Codes +ERR_CELL2MOL = 50 +ERR_INPUT = 95 +ERR_ASE_PARSE = 96 +ERR_GENERAL = 97 +ERR_TIMEOUT = 98 +ERR_MEMORY = 99 + +# runtime-configurable values +VERSION = DEFAULT_VERSION +CUTOFF = DEFAULT_CUTOFF +COV_FACTOR = DEFAULT_COV_FACTOR +METAL_FACTOR = DEFAULT_METAL_FACTOR + +USE_BOND_INFO = False +MAX_METALS = 6 +TIMEOUT = 600 # seconds +MAX_MEM_GB = 10 # GB + + +def dump(): + """Return runtime configuration as a formatted string.""" + lines = [ + "cell2mol runtime configuration:", + f" VERSION = {VERSION}", + f" USE_BOND_INFO = {USE_BOND_INFO}", + f" CUTOFF = {CUTOFF}", + f" COV_FACTOR = {COV_FACTOR}", + f" METAL_FACTOR = {METAL_FACTOR}", + f" MAX METALS = {MAX_METALS}", + f" TIMEOUT LIMIT = {TIMEOUT} seconds", + f" MEMORY LIMIT = {MAX_MEM_GB} GB", + ] + return "\n".join(lines) diff --git a/cell2mol/utils/defaults.py b/cell2mol/utils/defaults.py new file mode 100644 index 000000000..8300e7730 --- /dev/null +++ b/cell2mol/utils/defaults.py @@ -0,0 +1,7 @@ +DEFAULT_VERSION = "2.0" +DEFAULT_CUTOFF = 0.45 +DEFAULT_COV_FACTOR = 1.0 +# DEFAULT_METAL_FACTOR = 1.0 +DEFAULT_METAL_FACTOR = 1.15 + +DEFAULT_USE_BOND_INFO = False diff --git a/cell2mol/utils/exceptions.py b/cell2mol/utils/exceptions.py new file mode 100644 index 000000000..c06cea8d8 --- /dev/null +++ b/cell2mol/utils/exceptions.py @@ -0,0 +1,4 @@ +class ASEParseError(Exception): + """Raised when ASE cannot parse the structure file.""" + + pass diff --git a/cell2mol/utils/limits.py b/cell2mol/utils/limits.py new file mode 100644 index 000000000..95dc58bdd --- /dev/null +++ b/cell2mol/utils/limits.py @@ -0,0 +1,52 @@ +import signal +from contextlib import contextmanager +import platform + + +# Define a specific exception for timeouts +class ProcessingTimeoutError(Exception): + pass + + +@contextmanager +def set_time_limit(seconds): + """Context manager to raise a TimeoutError if execution takes too long.""" + + def signal_handler(signum, frame): + raise ProcessingTimeoutError(f"Process timed out after {seconds} seconds") + + # Register the signal function handler + signal.signal(signal.SIGALRM, signal_handler) + signal.alarm(seconds) + try: + yield + finally: + # Disable the alarm + signal.alarm(0) + + +def set_memory_limit(max_mem_gb): + """ + Sets a soft limit on memory usage. + Args: + max_mem_gb (float): Maximum memory allowed in Gigabytes. + """ + # The 'resource' module is not available on Windows. + if platform.system() == "Windows": + return + + try: + import resource + except ImportError: + return + + # Convert GB to Bytes + max_mem_bytes = int(max_mem_gb * 1024 * 1024 * 1024) + + # Get current limits (soft, hard) + # RLIMIT_AS = Address Space limit (Virtual Memory) + soft, hard = resource.getrlimit(resource.RLIMIT_AS) + + # Set the new limit. + # The soft limit cannot exceed the hard limit. + resource.setrlimit(resource.RLIMIT_AS, (max_mem_bytes, hard)) diff --git a/cell2mol/utils/object_store.py b/cell2mol/utils/object_store.py new file mode 100644 index 000000000..a0f87bee5 --- /dev/null +++ b/cell2mol/utils/object_store.py @@ -0,0 +1,42 @@ +"""Object store for serialization/deserialization of object graphs.""" + +from __future__ import annotations + +from typing import TYPE_CHECKING, Any + +if TYPE_CHECKING: + from cell2mol.utils.pydantic import BaseModel + + +class ObjectStore: + """Registry of serialized/deserialized objects by UUID. + + Used during serialization to collect objects and break cycles, + and during deserialization to resolve references. + """ + + def __init__(self) -> None: + self._objects: dict[str, dict[str, Any] | BaseModel] = {} + + def __contains__(self, id: str) -> bool: + return id in self._objects + + def reserve(self, id: str) -> None: + """Reserve a slot to break cycles during serialization.""" + self._objects[id] = {} + + def set(self, id: str, data: dict[str, Any] | BaseModel) -> None: + """Store an object or its serialized data.""" + self._objects[id] = data + + def get(self, id: str) -> dict[str, Any] | BaseModel | None: + """Get an object or its serialized data by ID.""" + return self._objects.get(id) + + def items(self): + """Iterate over (id, object) pairs.""" + return self._objects.items() + + def to_dict(self) -> dict[str, dict[str, Any]]: + """Export as a plain dict (for JSON serialization).""" + return dict(self._objects) diff --git a/cell2mol/utils/pydantic.py b/cell2mol/utils/pydantic.py new file mode 100644 index 000000000..b1ff3ec66 --- /dev/null +++ b/cell2mol/utils/pydantic.py @@ -0,0 +1,406 @@ +"""Pydantic utilities for cell2mol serialization. + +This module provides a BaseModel class with support for serializing object graphs +with circular references using a central object store pattern. + +JSON Format: + { + "_format": "cell2mol-store", + "_version": "2.0", + "objects": { + "uuid-1": {"_type": "Metal", "label": "Re", ...}, + "uuid-2": {"_type": "Ligand", "metals": ["uuid-1"], ...} + }, + "root": "uuid-root" + } + +All BaseModel instances are stored exactly once in the "objects" dict. +References between objects use UUID strings. + +Serialization: + Uses model_dump() with a context containing the object store. + A @model_serializer collects objects into the store and returns UUIDs. + +Deserialization: + Three-pass approach: + 1. Create all objects (refs are UUID strings) + 2. Resolve all refs by replacing UUIDs with actual objects + 3. Call model_post_init on all objects +""" + +from __future__ import annotations + +import json +import types +import typing +import uuid +from abc import ABC, abstractmethod +from typing import TYPE_CHECKING, Annotated, Any, get_args, get_origin + +try: + from typing import Self # py3.11+ +except ImportError: + from typing_extensions import Self # py3.10 + +import numpy as np +import pydantic +import pydantic.fields +from pydantic import SerializationInfo, model_serializer +from typing_extensions import deprecated + +from cell2mol.utils.object_store import ObjectStore +from cell2mol.utils.type_registry import TypeRegistry, get_type + +if TYPE_CHECKING: + pass + + +# ============================================================================= +# Value Serialization +# ============================================================================= + + +def _serialize_value(value: Any, context: dict[str, Any]) -> Any: + """Recursively serialize a value to JSON-compatible format. + + - BaseModel: add to store, return UUID + - NDArray: convert to list + - RDKit Mol: convert to JSON string + - NumPy scalars: convert to Python natives + - Lists/dicts: recurse + """ + if value is None: + return None + + # BaseModel → trigger serialization, return UUID + if isinstance(value, pydantic.BaseModel) and hasattr(value, "id"): + value.model_dump(mode="json", context=context) + return value.id + + # NumPy array → list + if isinstance(value, np.ndarray): + return [_serialize_value(v, context) for v in value.tolist()] + + # NumPy scalars → Python natives + if isinstance(value, np.integer): + return int(value) + if isinstance(value, np.floating): + return float(value) + if isinstance(value, np.bool_): + return bool(value) + + # RDKit Mol → JSON + if hasattr(value, "__class__") and value.__class__.__name__ == "Mol": + from rdkit import Chem + + return Chem.MolToJSON(value) + + # List/tuple → recurse + if isinstance(value, (list, tuple)): + return [_serialize_value(v, context) for v in value] + + # Dict → recurse values + if isinstance(value, dict): + return {k: _serialize_value(v, context) for k, v in value.items()} + + return value + + +# ============================================================================= +# BaseModel with Central Object Store Serialization +# ============================================================================= + + +class BaseModel(pydantic.BaseModel, ABC): + """Base model with central object store serialization support. + + All subclasses are automatically registered in the type registry. + + Serialization uses Pydantic's native model_dump() with a context: + store = {} + data = obj.model_dump(context={"store": store}) + # store now contains all objects, data is the root UUID + + Deserialization uses a two-pass approach: + 1. model_construct() to create objects (refs are UUID strings) + 2. Resolve refs by replacing UUIDs with actual objects + """ + + model_config = pydantic.ConfigDict( + arbitrary_types_allowed=True, + validate_assignment=True, # Coerce numpy types on assignment + ) + + id: str = pydantic.Field(default_factory=lambda: str(uuid.uuid4()), frozen=True) + + def __init_subclass__(cls, **kwargs: Any) -> None: + """Automatically register subclasses in the type registry.""" + super().__init_subclass__(**kwargs) + TypeRegistry.get_instance().register(cls) + + @classmethod + @deprecated( + "The constructor using keyword arguments should be used instead. " + "This method is not safe." + ) + @abstractmethod + def from_positional(cls, *args: Any, **kwargs: Any) -> Self: + raise NotImplementedError("This method should be implemented by the subclass") + + # ========================================================================= + # Serialization with Central Object Store + # ========================================================================= + + @model_serializer(mode="wrap") + def _serialize_to_store( + self, handler: Any, info: SerializationInfo + ) -> dict[str, Any] | str: + """Serialize this object, collecting it into the store if context provided. + + If context contains a 'store' ObjectStore: + - Add this object to the store (if not already there) + - Return just the UUID (as a reference) + + If no context: + - Return normal serialization (for debugging/inspection) + """ + store: ObjectStore | None = None + if info.context: + store = info.context.get("store") + + if store is None: + return handler(self) + + if self.id in store: + return self.id + + store.reserve(self.id) + + # Serialize each field (can't use handler(self) due to Pydantic caching with cycles) + data: dict[str, Any] = {"_type": type(self).__name__} + for field_name in type(self).model_fields: + value = getattr(self, field_name) + data[field_name] = _serialize_value(value, info.context) + + store.set(self.id, data) + return self.id + + def to_dict_store(self) -> dict[str, Any]: + """Serialize to a dict with central object store. + + Returns a dict with: + - "_format": "cell2mol-store" + - "_version": "2.0" + - "objects": dict mapping UUID -> serialized object data + - "root": UUID of the root object + + All BaseModel references are replaced with UUID strings. + Each object appears exactly once in the store. + """ + store = ObjectStore() + + # Use model_dump with store context + # The model_serializer will populate the store + root_id = self.model_dump(mode="json", context={"store": store}) + + return { + "_format": "cell2mol-store", + "_version": "2.0", + "objects": store.to_dict(), + "root": root_id, + } + + def to_json(self, indent: int = 2, separators=None) -> str: + """Serialize to JSON string with central object store.""" + # if separators is not None: + # return json.dumps(self.to_dict_store(), separators=separators) + return json.dumps(self.to_dict_store(), indent=indent) + + # ========================================================================= + # Deserialization with Two-Pass Reference Resolution + # ========================================================================= + + @classmethod + def from_dict_store(cls, data: dict[str, Any]) -> Self: + """Deserialize from a dict with central object store. + + Uses a two-pass approach: + 1. Create all objects using model_construct() (refs stay as UUID strings) + 2. Resolve all Ref fields by replacing UUIDs with actual objects + + Args: + data: Dict with "_format", "objects", and "root" keys + + Returns: + The reconstructed root object with all references resolved + """ + format_version = data.get("_format") + if format_version != "cell2mol-store": + raise ValueError( + f"Invalid format: {format_version}. Expected 'cell2mol-store'" + ) + + store = data["objects"] + root_id = data["root"] + + # Handle case where root_id might be a dict (shouldn't happen but be safe) + if isinstance(root_id, dict): + root_id = root_id.get("id", list(store.keys())[0]) + + # Pass 1: Create all objects WITHOUT calling model_post_init + # Ref fields will temporarily hold UUID strings + registry: dict[str, BaseModel] = {} + + for obj_id, obj_data in store.items(): + type_name = obj_data.get("_type") + if not type_name: + raise ValueError(f"Missing '_type' in object {obj_id}") + + obj_cls = get_type(type_name) + + # Prepare data without _type + construct_data = {k: v for k, v in obj_data.items() if k != "_type"} + + # Create object without calling model_post_init + # (model_post_init may access refs which are still strings) + obj = _construct_without_post_init(obj_cls, construct_data) + registry[obj_id] = obj + + # Pass 2: Resolve all fields that contain UUIDs + for obj_id, obj in registry.items(): + _resolve_object_refs(obj, registry) + + # Pass 3: Call model_post_init on all objects now that refs are resolved + for obj_id, obj in registry.items(): + if hasattr(obj, "model_post_init"): + obj.model_post_init(None) + + root = registry.get(root_id) + if root is None: + raise ValueError(f"Root object '{root_id}' not found in store") + + return root # type: ignore[return-value] + + @classmethod + def from_json(cls, json_str: str) -> Self: + """Deserialize from JSON string with central object store.""" + data = json.loads(json_str) + return cls.from_dict_store(data) + + +# ============================================================================= +# Construction Helper +# ============================================================================= + + +def _construct_without_post_init( + cls: type["BaseModel"], data: dict[str, Any] +) -> "BaseModel": + """Create a pydantic model instance without calling model_post_init. + + This is used during deserialization when refs are still UUID strings. + We need to skip model_post_init until refs are resolved. + + This replicates the logic of model_construct but skips the post_init call. + """ + obj = cls.__new__(cls) + fields_set: set[str] = set() + fields_values: dict[str, Any] = {} + + for name, field in cls.model_fields.items(): + if name in data: + value = data[name] + # Convert values to expected types (NDArray, RDKit Mol, etc.) + value = _convert_field_value(value, field) + fields_values[name] = value + fields_set.add(name) + elif not field.is_required(): + fields_values[name] = field.get_default(call_default_factory=True) + + # Set pydantic internal state + object.__setattr__(obj, "__pydantic_fields_set__", fields_set) + object.__setattr__(obj, "__pydantic_extra__", None) + object.__setattr__(obj, "__pydantic_private__", None) + + # Set field values + for k, v in fields_values.items(): + object.__setattr__(obj, k, v) + + # Deliberately skip model_post_init - caller will call it after refs are resolved + return obj + + +def _convert_field_value(value: Any, field: pydantic.fields.FieldInfo) -> Any: + """Convert deserialized values to expected types using field metadata. + + Pydantic stores Annotated types as: annotation=base_type, metadata=[markers]. + For Union types (Optional), we need to extract the non-None type. + """ + if value is None: + return value + + # Check field metadata first (direct Annotated case) + for meta in field.metadata: + if hasattr(meta, "_validate"): + try: + return meta._validate(value) + except Exception: + pass + + # Handle Union types (Optional[X] = Union[X, None]) + annotation = field.annotation + origin = get_origin(annotation) + if origin is types.UnionType or origin is typing.Union: + for arg in get_args(annotation): + if arg is type(None): + continue + # Check if arg is Annotated with custom validator + if get_origin(arg) is Annotated: + for meta in get_args(arg)[1:]: + if hasattr(meta, "_validate"): + try: + return meta._validate(value) + except Exception: + pass + + return value + + +# ============================================================================= +# Reference Resolution Helpers +# ============================================================================= + + +def _resolve_object_refs(obj: BaseModel, registry: dict[str, BaseModel]) -> None: + """Resolve all fields that contain UUIDs by replacing them with objects.""" + for field_name in type(obj).model_fields: + # Skip the id field - it's a UUID that identifies the object itself, + # not a reference to another object + if field_name == "id": + continue + value = getattr(obj, field_name, None) + resolved = _resolve_value(value, registry) + if resolved is not value: # Only set if changed + # Use object.__setattr__ to bypass frozen field protection + object.__setattr__(obj, field_name, resolved) + + +def _resolve_value(value: Any, registry: dict[str, BaseModel]) -> Any: + """Resolve a value, replacing UUID strings with objects from registry.""" + if value is None: + return None + + # Single UUID string → resolve to object if in registry + if isinstance(value, str): + return registry.get(value, value) + + # List of values -> resolve each + if isinstance(value, list): + return [_resolve_value(item, registry) for item in value] + + # Dict -> resolve values + if isinstance(value, dict): + return {k: _resolve_value(v, registry) for k, v in value.items()} + + # Already an object or other type -> return as-is + return value diff --git a/cell2mol/utils/type_registry.py b/cell2mol/utils/type_registry.py new file mode 100644 index 000000000..8166ca477 --- /dev/null +++ b/cell2mol/utils/type_registry.py @@ -0,0 +1,58 @@ +"""Type registry for deserialization of object graphs.""" + +from __future__ import annotations + +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from cell2mol.utils.pydantic import BaseModel + + +class TypeRegistry: + """Registry mapping type names to classes for deserialization. + + Uses singleton pattern for global access, but can be cleared for testing. + """ + + _instance: TypeRegistry | None = None + + def __init__(self) -> None: + self._types: dict[str, type[BaseModel]] = {} + + @classmethod + def get_instance(cls) -> TypeRegistry: + """Get the global registry instance.""" + if cls._instance is None: + cls._instance = cls() + return cls._instance + + def register(self, type_cls: type[BaseModel]) -> None: + """Register a class by its name.""" + self._types[type_cls.__name__] = type_cls + + def get(self, name: str) -> type[BaseModel]: + """Get a class by name. Raises ValueError if not found.""" + if name not in self._types: + raise ValueError( + f"Unknown type '{name}'. Available: {list(self._types.keys())}" + ) + return self._types[name] + + def clear(self) -> None: + """Clear all registered types (useful for testing).""" + self._types.clear() + + def __contains__(self, name: str) -> bool: + return name in self._types + + +# Convenience functions for backwards compatibility +def register_type(cls: type[BaseModel]) -> type[BaseModel]: + """Register a class in the global type registry.""" + TypeRegistry.get_instance().register(cls) + return cls + + +def get_type(type_name: str) -> type[BaseModel]: + """Get a class from the global type registry by name.""" + return TypeRegistry.get_instance().get(type_name) diff --git a/cell2mol/write_results.py b/cell2mol/write_results.py new file mode 100644 index 000000000..0680e9849 --- /dev/null +++ b/cell2mol/write_results.py @@ -0,0 +1,709 @@ +#!/usr/bin/env python + +from cell2mol.utils import config +import sys +import re +import os +import traceback +from collections import Counter +from ase.io import read +from cell2mol.elementdata import ElementData +import logging + +elemdatabase = ElementData() +logger = logging.getLogger(__name__) + + +def exit_with_error_input(message): + """Logs the error message to a file and exits the program.""" + error_log_path = os.path.join(os.getcwd(), "error_InputFile.out") + with open(error_log_path, "w") as error_log: + error_log.write(f"Error: {message}\n") + + +def exit_with_error_exception(exc, error_log_path=None): + exc_type = type(exc).__name__ + if error_log_path is None: + error_log_path = os.path.join(os.getcwd(), f"error_{exc_type}.out") + + try: + with open(error_log_path, "w") as error_log: + error_log.write(f"Error Type: {exc_type}\n") + + # Handle MemoryError specifically to avoid allocating traceback string + if isinstance(exc, MemoryError): + error_log.write( + "Memory limit exceeded. Full traceback omitted to save RAM.\n" + ) + else: + error_log.write(traceback.format_exc()) + + except (MemoryError, OSError): + # Fallback to stderr if file writing fails + sys.stderr.write( + f"FATAL: Could not write to {error_log_path} due to {exc_type}\n" + ) + + +def compare_formula_xyz_vs_cif(xyzfile: str, formula_str_from_cif: str) -> dict: + """ + Compare the elements from CIF with the elements in the XYZ file. + """ + element_pattern = r"([A-Z][a-z]*)(\d*)" + parsed_formula_cif = dict() + for element, count in re.findall(element_pattern, formula_str_from_cif): + parsed_formula_cif[element] = int(count) if count else 1 + mol = read(xyzfile, format="xyz") + element_list = mol.get_chemical_symbols() + element_list_count = dict(Counter(element_list)) + comparison_result = { + "in_formula_cif": parsed_formula_cif, + "in_list_xyz": element_list_count, + "missing_in_xyz": { + k: v - element_list_count.get(k, 0) + for k, v in parsed_formula_cif.items() + if element_list_count.get(k, 0) < v + }, + "extra_in_xyz": { + k: v - parsed_formula_cif.get(k, 0) + for k, v in element_list_count.items() + if parsed_formula_cif.get(k, 0) < v + }, + } + return comparison_result + + +def readxyz(file): + labels = [] + pos = [] + xyz = open(file, "r") + n_atoms = xyz.readline() + title = xyz.readline() + for line in xyz: + line_data = line.split() + if len(line_data) == 4: + label, x, y, z = line.split() + pos.append([float(x), float(y), float(z)]) + labels.append(label) + else: + print("I can't read the xyz. It has =/ than 4 columns") + xyz.close() + + return labels, pos + + +def printxyz(labels, pos): + print(len(labels)) + print("") + for idx, l in enumerate(labels): + print("%s %.6f %.6f %.6f" % (l, pos[idx][0], pos[idx][1], pos[idx][2])) + + +def writexyz(fdir, fname, labels, pos, charge: int = 0, spin: int = 1, info: str = ""): + """Writes an XYZ file with given labels and positions.""" + os.makedirs(fdir, exist_ok=True) + + fullname = os.path.join(fdir, fname) + natoms = len(labels) + + with open(fullname, "w") as fil: + print(natoms, file=fil) + print(f"{charge=} {spin=} {info}", file=fil) + for label, (x, y, z) in zip(labels, pos): + fil.write(f"{label:<2} {x:15.8f} {y:15.8f} {z:15.8f}\n") + + +def extract_refmoleclist_xyz(fdir, refmoleclist, name: str): + """Extracts reference molecules to XYZ files. + + Args: + fdir (str): Directory to save the XYZ files. + refmoleclist (list): List of reference molecule objects. + name (str): Base name for the output files. + """ + for i, ref in enumerate(refmoleclist): + if ref.iscomplex: + if ref.totcharge_cif is not None: + N = 0 + for atom in ref.labels: + N += elemdatabase.elementnr[atom] + N -= ref.totcharge_cif + if N % 2 == 0: + spin = 1 + else: + spin = 2 + writexyz( + fdir, + f"{name}_Ref_{i}_{ref.formula}_charge_{ref.totcharge_cif}_lowspin_{spin}.xyz", + ref.labels, + ref.coord, + charge=ref.totcharge_cif, + spin=spin, + ) + logger.debug( + "Ref molecule %s %s total charge %s lowest spin multiplicity %s", + i, + ref.formula, + ref.totcharge_cif, + spin, + ) + else: + writexyz( + fdir, + f"{name}_Ref_{i}_{ref.formula}.xyz", + ref.labels, + ref.coord, + charge="", + spin="", + ) + logger.debug( + "Ref molecule %s %s without charge and spin information", + i, + ref.formula, + ) + + +def get_reference_error_message(error_case): + """ + Return an error message for a given error case. + """ + + # --- Critical System Errors --- + if error_case == config.ERR_MEMORY: + return "Process terminated: Memory limit exceeded" + + elif error_case == config.ERR_TIMEOUT: + return f"Process terminated: Execution timed out (> {config.TIMEOUT}s)" + + elif error_case == config.ERR_GENERAL: + return "Process terminated: General error occurred" + + # --- Standard Processing Errors --- + elif error_case == 0: + return "No errors found" + + elif error_case == 1: + return "Isolated hydrogens found" + + elif error_case == 2: + return "Missing hydrogens in water molecules" + + elif error_case == 3: + return "Missing hydrogens in coordinated water molecules" + + elif error_case == 4: + return "Missing hydrogens in carbon atoms" + + elif error_case == 5: + return "Some unique species have no possible charge states" + + elif error_case == 8: + return "Error in assigning charges" + + elif error_case == 9: + return "Error in creating bonds" + + elif error_case == 10: + return "Error in assigning spin multiplicity" + + elif error_case == -1: + return "Empty reference molecules list" + + else: + return f"Unhandled error case: {error_case}" + + +def get_reference_warning_messages(refcell): + """ + Returns a list of messages based on potential_warnings. + Triggers 'Warning' for True and 'Skipped' for None. + """ + + # Mapping for triggered warnings (status is True) + warning_map = { + "cif_mismatch": "CIF formula mismatch detected", + "over_polynuclear_limit": f"Polynuclear complex exceeds metal center limit (> max_metals {config.MAX_METALS})", + "mixed_metals": "Mixed metal types detected", + "is_mismatch_adj": "Adjacency matrix does not match CIF bond connectivity.", + "metal_coord_diff": "Final metal coordination differs from CIF bond connectivity.", + } + + # Mapping for skipped checks (status is None) + skip_map = { + "cif_mismatch": "CIF formula check skipped (No _chemical_formula_moiety in CIF)", + "is_mismatch_adj": "Adjacency check skipped (No _geom_bond in CIF)", + "metal_coord_diff": "Metal coordination check skipped (No _geom_bond in CIF)", + } + + messages = [] + + if not refcell.potential_warnings: + return messages + + for key, status in refcell.potential_warnings.items(): + # Case 1: The check failed (Warning) + if status is True: + messages.append(warning_map.get(key, f"Warning: {key}")) + + # Case 2: The check was skipped (None) + elif status is None: + # Only add a message if the key is in our skip_map + if key in skip_map: + messages.append(f"Skipped: {skip_map[key]}") + else: + messages.append( + f"Skipped: Check for {key} was skipped due to missing reference data." + ) + + return messages + + +def get_unitcell_error_message(error_case): + """ + Return an error message for a given error case. + """ + + # --- Critical System Errors --- + if error_case == config.ERR_MEMORY: + return "Process terminated: Memory limit exceeded" + + elif error_case == config.ERR_TIMEOUT: + return f"Process terminated: Execution timed out (> {config.TIMEOUT}s)" + + elif error_case == config.ERR_GENERAL: + return "Process terminated: General error occurred" + + # --- Standard Processing Errors --- + elif error_case == 0: + return "No errors found" + + # elif error_case == 1: + # return "Isolated hydrogens found" + + # elif error_case == 2: + # return "Missing hydrogens" + + elif error_case == 3: + return "Error in reconstructing fragments" + + elif error_case == 4: + return "Error in unit cell construction" + + # elif error_case == 5: + # return "Some unique species have no possible charge states" + + elif error_case == 6: + return "Multiple valid charge distributions detected" + + elif error_case == 7: + return "No valid charge distribution detected" + + elif error_case == 8: + return "Error in assigning charges" + + elif error_case == 9: + return "Error in creating bonds" + + elif error_case == 10: + return "Error in assigning spin multiplicity" + + else: + return f"Unhandled error case: {error_case}" + + +def get_molecule_error_message(error_case): + """ + Return an error message for a given error case. + """ + + # --- Critical System Errors --- + if error_case == config.ERR_MEMORY: + return "Process terminated: Memory limit exceeded" + + elif error_case == config.ERR_TIMEOUT: + return f"Process terminated: Execution timed out (> {config.TIMEOUT}s)" + + elif error_case == config.ERR_GENERAL: + return "Process terminated: General error occurred" + + # --- Standard Processing Errors --- + elif error_case == 0: + return "No errors found" + + elif error_case == 5: + return "Some unique species have no possible charge states" + + elif error_case == 6: + return "Multiple valid charge distributions detected" + + elif error_case == 7: + return "No valid charge distribution detected" + + elif error_case == 8: + return "Error in assigning charges" + + elif error_case == 9: + return "Error in creating bonds" + + elif error_case == 10: + return "Error in assigning spin multiplicity" + + else: + return f"Unhandled error case: {error_case}" + + +def write_cell_molecules_info(cell, file=None): + """ + Write molecule information within a cell to a file-like object. + """ + if cell.subtype == "reference": + cell_type = "Reference" + molecule_list = getattr(cell, "refmoleclist", None) + elif cell.subtype == "unitcell": + cell_type = "Unitcell" + molecule_list = getattr(cell, "moleclist", None) + else: + return + + if molecule_list is None: + print(f"\nNo molecules found in the {cell_type} cell.", file=file) + return + + print(f"\nMolecules in {cell.subtype}:", file=file) + + for i, mol in enumerate(molecule_list): + # Pass the index to keep the output numbered + write_molecule_info(mol, file=file, index=i) + + +def write_molecule_info(mol, file=None, index=None): + """ + Writes detailed molecule information to a file-like object or the console. + """ + if mol is None: + print("\nNo molecule object.", file=file) + return + + # Start header + prefix = f"Molecule {index}:" if index is not None else "Molecule:" + mol_info_parts = [f"{prefix} {mol.formula}"] + + # Append classification tags + if mol.iscomplex: + mol_info_parts.append("(TM Complex)") + if mol.has_ia_iia: + mol_info_parts.append("(Complex with Alkali or Alkaline metals)") + if mol.has_post_transition_metal: + mol_info_parts.append("(Complex with Post-Transition metals)") + if mol.is_non_complex_molecule: + mol_info_parts.append("(Non-complex)") + + # Append properties + if mol.totcharge is not None: + mol_info_parts.append(f"totcharge={mol.totcharge}") + if getattr(mol, "totcharge_cif", None) is not None: + mol_info_parts.append(f"totcharge_cif={mol.totcharge_cif}") + if getattr(mol, "spin", None) is not None: + mol_info_parts.append(f"spin_multiplicity={mol.spin}") + if mol.smiles is not None: + mol_info_parts.append(f"smiles={mol.smiles}") + + print(" ".join(mol_info_parts), file=file) + + # -------------------- + # Metals (Coordination Centers) + # -------------------- + if not mol.is_non_complex_molecule and hasattr(mol, "metals"): + for met in mol.metals: + met_info = f"\t{met.formula} ({met.subtype})" + + labels = getattr(met, "atom_site_label", None) + if labels: + met_info += f" atom_site_label={labels}" + + # Oxidation state + if met.charge is not None: + met_info += f" metal_OS={met.charge}" + elif getattr(met, "possible_cs", None) is not None: + met_info += f" metal_possible_OS={met.possible_cs}" + + if getattr(met, "spin", None) is not None: + met_info += f" metal_spin={met.spin}" + + print(met_info, file=file) + + # Coordination details + if getattr(met, "coord_sphere_formula", None): + print( + f"\t|--coord_sphere_formula={met.coord_sphere_formula}", file=file + ) + + if all( + hasattr(met, attr) + for attr in ("coord_nr", "coord_geometry", "geom_deviation") + ): + print( + f"\t|--coord_nr={met.coord_nr} coord_geometry={met.coord_geometry} geom_deviation={met.geom_deviation}", + file=file, + ) + + if getattr(met, "groups", None): + for group in met.groups: + group_info = f"\t|--(group) {group.labels}" + group_atom_site_labels = [ + a.atom_site_label + for a in group.atoms + if a.atom_site_label is not None + ] + if group_atom_site_labels: + group_info += f" atom_site_labels={group_atom_site_labels}" + if hasattr(group, "denticity"): + group_info += f" denticity={group.denticity}" + if getattr(group, "is_haptic", False): + group_info += f" haptic_type={group.haptic_type}" + + print(group_info, file=file) + + # Metal-Metal Bonds + if hasattr(met, "metals") and hasattr(met, "coord_nr_with_metal_bonds"): + bonded_metals = [m.label for m in met.metals] + if bonded_metals: + print( + f"\t|--bonded metals={bonded_metals} coord_nr_with_metal_bonds={met.coord_nr_with_metal_bonds} " + f"coord_geometry_with_metal_bonds={getattr(met, 'coord_geometry_with_metal_bonds', 'N/A')} " + f"geom_deviation_with_metal_bonds={getattr(met, 'geom_deviation_with_metal_bonds', 'N/A')}", + file=file, + ) + + # -------------------- + # Ligands + # -------------------- + if not mol.is_non_complex_molecule and getattr(mol, "ligands", None): + for lig in mol.ligands: + lig_info = f"\t{lig.formula} ({lig.subtype})" + for attr in ("smiles", "denticity", "totcharge"): + val = getattr(lig, attr, None) + if val is not None: + lig_info += f" {attr}={val}" + if ( + getattr(lig, "possible_cs", None) is not None + and getattr(lig, "totcharge", None) is None + ): + status = "Exists" if lig.possible_cs else "Does not exist" + lig_info += f" lig.possible_cs {status}" + + print(lig_info, file=file) + + if getattr(lig, "groups", None): + for group in lig.groups: + group_info = f"\t|--(group) {group.labels}" + group_atom_site_labels = [ + a.atom_site_label + for a in group.atoms + if a.atom_site_label is not None + ] + if group_atom_site_labels: + group_info += f" atom_site_labels={group_atom_site_labels}" + if hasattr(group, "denticity"): + group_info += f" denticity={group.denticity}" + if getattr(group, "is_haptic", False): + group_info += f" haptic_type={group.haptic_type}" + + if getattr(group, "metals", None): + labels = [ + getattr(m, "atom_site_label", None) or m.label + for m in group.metals + ] + group_info += f" connected_metals={labels}" + print(group_info, file=file) + + +def write_unique_species(object, file): + """ + Write unique species information to a file-like object. + + Args: + object: Object containing unique_species. + file: File-like object opened for writing. + """ + + unique_species = getattr(object, "unique_species", None) + if not unique_species: + print(f"\nNo unique species found in the {object.subtype} object.", file=file) + return + + print(f"\nUnique Species in {object.subtype}:", file=file) + + for specie in unique_species: + parts = [ + f"unique_index={specie.unique_index}", + f"{specie.formula}", + f"({specie.subtype})", + ] + + if specie.subtype == "metal": + parts.append(f"coord_sphere_formula={specie.coord_sphere_formula}") + if getattr(specie, "charge", None) is not None: + parts.append(f"charge={specie.charge}") + + elif specie.subtype == "ligand": + parts.append(f"denticity={specie.denticity}") + if specie.is_haptic: + parts.append(f"haptic_type={specie.haptic_type}") + if getattr(specie, "smiles", None) is not None: + parts.append(f"smiles={specie.smiles}") + if getattr(specie, "totcharge", None) is not None: + parts.append(f"totcharge={specie.totcharge}") + if getattr(specie, "groups", None) is not None: + parts.append(f"groups={[group.formula for group in specie.groups]}") + + else: + if getattr(specie, "smiles", None) is not None: + parts.append(f"smiles={specie.smiles}") + if getattr(specie, "totcharge", None) is not None: + parts.append(f"totcharge={specie.totcharge}") + + print("\t" + " ".join(parts), file=file) + + +def write_possible_charges(object, file=None): + """ + Write the possible charges for each species in the object. + + Args: + object: Object containing species_list. + file: File-like object (e.g., opened file). Defaults to None (console). + """ + if object.species_list is not None: + print(f"\nPossible charges of species in {object.subtype}:", file=file) + for specie in object.species_list: + # Base species information + info = f"\tunique_index={specie.unique_index} {specie.formula} ({specie.subtype})" + + # Add coordination sphere for metals + if specie.subtype == "metal": + info += f" coord_sphere_formula={getattr(specie, 'coord_sphere_formula', 'N/A')}" + + # Add charge state information + if getattr(specie, "possible_cs", None) is not None: + if specie.subtype == "metal": + info += f" possible_cs={specie.possible_cs}" + else: + # Non-metals use a new line for charge states as per original logic + info += f"\n\tpossible_cs={specie.possible_cs}" + else: + info += " NO POSSIBLE CHARGE STATES FOUND" + + print(info, file=file) + else: + print("\nNo species list found in the cell object.", file=file) + print("", file=file) + + +def write_possible_and_selected_cs(newcell, refcell, file=None): + """ + Write possible charge states and selected charge state for unique species. + + Args: + newcell: Unit cell object. + refcell: Reference cell object. + file: File-like object. Defaults to None. + """ + + print( + "\nPossible charge states and charge of selected charge state for unique species:", + file=file, + ) + + # Check unique species and their selected charge states + for idx, (specie, select) in enumerate( + zip(refcell.unique_species, refcell.selected_cs) + ): + print( + f"Unique unique_index={specie.unique_index} formula={specie.formula}", + file=file, + ) + print( + f"charge of selected charge state={select}\npossible_cs={specie.possible_cs}\n", + file=file, + ) + + # Reference cell species vs unique index mapping + print("Species list in the reference and their unique indices:", file=file) + for specie, idx in zip(refcell.species_list, refcell.unique_indices): + print( + f"\tformula={specie.formula} unique_index={specie.unique_index}", file=file + ) + if idx != specie.unique_index: + print( + f"\tWARNING: formula={specie.formula} unique_index={specie.unique_index} " + f"differs from refcell unique indices {idx=}", + file=file, + ) + + # Unit cell species vs unique index mapping + print("Species list in the unit cell and their unique indices:", file=file) + for specie, idx in zip(newcell.species_list, newcell.unique_indices): + print( + f"\tformula={specie.formula} unique_index={specie.unique_index}", file=file + ) + if idx != specie.unique_index: + print( + f"\tWARNING: formula={specie.formula} unique_index={specie.unique_index} " + f"differs from newcell unique indices {idx=}", + file=file, + ) + + +def log_charge_state_details(newcell, refcell) -> None: + """ + Logs the available charge candidates for unique species and validates + consistency between species objects and the unique_indices mapping. + """ + + logger.debug("#### Charge State & Index Validation ####") + + # --- 1. Log Charge Options for Unique Species --- + if hasattr(refcell, "selected_cs") and refcell.selected_cs: + for specie, options in zip(refcell.unique_species, refcell.selected_cs): + logger.debug( + "Unique Specie %s (Formula: %s):", specie.unique_index, specie.formula + ) + logger.debug(" > Possible Charge Options: %s", options) + # logger.debug(" > Full Possible States: %s", specie.possible_cs) + else: + logger.warning("RefCell has no 'selected_cs' populated to display.") + + # --- 2. Validate Indices in Reference and Unit Cells --- + _validate_species_indices(refcell, "Reference Cell") + _validate_species_indices(newcell, "Unit Cell") + + +def _validate_species_indices(cell, label: str) -> None: + """Helper to check consistency between species objects and cell mapping lists.""" + logger.debug("--- Validating %s Indices ---", label) + + if not hasattr(cell, "species_list") or not hasattr(cell, "unique_indices"): + logger.warning( + "Skipping validation: %s missing species list or indices.", label + ) + return + + for i, (specie, mapped_idx) in enumerate( + zip(cell.species_list, cell.unique_indices) + ): + # Check consistency: The index stored in the list must match the specie's internal ID + if mapped_idx != specie.unique_index: + logger.warning( + "MISMATCH at list index %d: Species %s claims UniqueID %s, " + "but mapping list has %s.", + i, + specie.formula, + specie.unique_index, + mapped_idx, + ) + else: + # Verbose logging only if needed + logger.debug( + "\t[OK] %s (UniqueID: %s)", specie.formula, specie.unique_index + ) diff --git a/cell2mol/xyz2mol.py b/cell2mol/xyz2mol.py deleted file mode 100644 index b5ecaa42f..000000000 --- a/cell2mol/xyz2mol.py +++ /dev/null @@ -1,1235 +0,0 @@ -#!/usr/bin/env python - -################# -#### XYZ2MOL #### -################# - -import copy -import itertools -import rdkit -from rdkit.Chem import rdmolops -from rdkit.Chem import rdchem - -try: - from rdkit.Chem import rdEHTTools # requires RDKit 2019.9.1 or later -except ImportError: - rdEHTTools = None - -from collections import defaultdict - -import numpy as np -import networkx as nx - -from rdkit import Chem -from rdkit.Chem import AllChem, rdmolops - -from cell2mol.elementdata import ElementData -from cell2mol.connectivity import labels2formula -elemdatabase = ElementData() - -############################### -#### RUBEN Changes for V14 #### -############################### -valence_electrons = [] -for i in elemdatabase.elementsym: - try: - valence_electrons.append( - elemdatabase.valenceelectrons[elemdatabase.elementsym[i]] - ) - except KeyError: - continue - -atomic_valence_electrons = dict(zip(elemdatabase.elementsym, valence_electrons)) - - -def get_atomic_valences(k): - symb = elemdatabase.elementsym[k] - block = elemdatabase.elementblock[symb] - group = elemdatabase.elementgroup[symb] - period = elemdatabase.elementperiod[symb] - ave = elemdatabase.valenceelectrons[symb] - if k == 5: # B - return [3, 4] - if k == 6: # C - return [2, 4] - if k == 7: # N - return [3, 4] - if k == 8: # O - return [2, 1, 3] - if k == 13: # Al - return [3, 4, 5] - if k == 15: # P - return [6, 5, 3] # [5,4,3] - if k == 16 : # S - return [2, 4, 6] - if k == 33: # As - return [6, 5, 3] # [5,4,3] - if k == 51: # Sb - return [6, 5, 3] # [5,4,3] - if group == 17: # F, Cl, Br, I - return [1, 2] # Cl [1, 7] - if block == "s" and period == 1: - av = 2 - ave - elif group == 1 and period != 1: - av = 0 - elif group == 2: - av = 0 - elif group == 18: - av = 0 - elif block == "p" and group != 18: - av = 8 - ave - elif block in "d": - av = 20 - else: - av = 1 - return [av] - - -atomic_valence = defaultdict(list) -for k in elemdatabase.elementsym: - try: - # print(f"Getting atomic valence for element number {k}={elemdatabase.elementsym[k]}") - av = get_atomic_valences(k) - atomic_valence[k].extend(av) - # print(f"Got atomic valence {atomic_valence[k]} as a result.") - except KeyError: - continue -# atomic_valence = defaultdict(list) - -# atomic_valence[1] = [1] -# atomic_valence[5] = [3, 4] -# atomic_valence[6] = [4, 2] -# atomic_valence[7] = [3, 4] -# atomic_valence[8] = [2, 1, 3] # [2,1,3] -# atomic_valence[9] = [1, 7] -# atomic_valence[13] = [3, 4] -# atomic_valence[14] = [4] -# atomic_valence[15] = [3, 5] # [5,4,3] -# atomic_valence[16] = [2, 4, 6] # [6,3,2] -# atomic_valence[17] = [1, 7] -# atomic_valence[18] = [0] -# atomic_valence[32] = [4] -# atomic_valence[33] = [5, 3] -# atomic_valence[35] = [1, 7] -# atomic_valence[34] = [2] -# atomic_valence[52] = [2] -# atomic_valence[53] = [1, 7] - - - -# print(f"XYZ2MOL: {atomic_valence=}") -# print(f"XYZ2MOL: {atomic_valence_electrons=}") -############################### - - -def str_atom(atom): - """ - convert integer atom to string atom - """ - atom = elemdatabase.elementsym[atom] - return atom - - -def int_atom(atom): - """ - convert str atom to integer atom - """ - atom = elemdatabase.elementnr[atom] - return atom - - -def get_UA(maxValence_list, valence_list): - """ """ - UA = [] - DU = [] - for i, (maxValence, valence) in enumerate(zip(maxValence_list, valence_list)): - if not maxValence - valence > 0: - continue - UA.append(i) - DU.append(maxValence - valence) - return UA, DU - - -def get_BO(AC, UA, DU, valences, UA_pairs, use_graph=True): - """ """ - BO = AC.copy() - DU_save = [] - - while DU_save != DU: - for i, j in UA_pairs: - BO[i, j] += 1 - BO[j, i] += 1 - - BO_valence = list(BO.sum(axis=1)) - DU_save = copy.copy(DU) - UA, DU = get_UA(valences, BO_valence) - UA_pairs = get_UA_pairs(UA, AC, use_graph=use_graph)[0] - #UA_pairs = get_UA_pairs_new(UA, AC, DU, use_graph=use_graph)[0] - - return BO - - -def valences_not_too_large(BO, valences): - """ """ - number_of_bonds_list = BO.sum(axis=1) - for valence, number_of_bonds in zip(valences, number_of_bonds_list): - if number_of_bonds > valence: - return False - - return True - - -def charge_is_OK( - BO, - AC, - charge, - DU, - atomic_valence_electrons, - atoms, - valences, - allow_charged_fragments=True, - allow_carbenes=True, -): - # total charge - Q = 0 - - # charge fragment list - q_list = [] - - if allow_charged_fragments: - - BO_valences = list(BO.sum(axis=1)) - for i, atom in enumerate(atoms): - q = get_atomic_charge(atom, atomic_valence_electrons[atom], BO_valences[i]) - Q += q - if atom == 6: - number_of_single_bonds_to_C = list(BO[i, :]).count(1) - if not allow_carbenes and number_of_single_bonds_to_C == 2 and BO_valences[i] == 2: - Q += 1 - q = 2 - print("Carbenes are not allowed in this molecule") - if number_of_single_bonds_to_C == 3 and Q + 1 < charge: - Q += 2 - q = 1 - - if q != 0: - q_list.append(q) - - return charge == Q - - -def BO_is_OK( - BO, - AC, - charge, - DU, - atomic_valence_electrons, - atoms, - valences, - allow_charged_fragments=True, - allow_carbenes=True, -): - """ - Sanity of bond-orders - - args: - BO - - AC - - charge - - DU - - - - optional - allow_charges_fragments - - - - returns: - boolean - true of molecule is OK, false if not - """ - - if not valences_not_too_large(BO, valences): - return False - - check_sum = (BO - AC).sum() == sum(DU) - check_charge = charge_is_OK( - BO, - AC, - charge, - DU, - atomic_valence_electrons, - atoms, - valences, - allow_charged_fragments, - allow_carbenes=True - ) - - if check_charge and check_sum: - return True - - return False - - -def get_atomic_charge(atom, atomic_valence_electrons, BO_valence): - """ """ - label = elemdatabase.elementsym[atom] - group = elemdatabase.elementgroup[label] - - found = False - # Alkali except H - if group == 1 and label != "H" and BO_valence == 0 and not found: - charge = 1 - found = True - # Hydrogen - elif atom == 1 and not found: - charge = 1 - BO_valence - found = True - # Alkaline earth metals - elif group == 2 and BO_valence == 0 and not found: - charge = 2 - found = True - # Boron - elif atom == 5 and not found: - charge = 3 - BO_valence - found = True - # elif atom == 6 and BO_valence == 2 and not found: - # charge = 0 - # found = True - # elif atom == 13 and not found and not found: - # charge = 3 - BO_valence - # found = True - # Ionic Bonds are not correctly captured, exceptions are needed for atoms with tendency to form them - elif atom == 15 and BO_valence == 5 and not found: # PX5 - charge = 0 - found = True - elif atom == 15 and BO_valence == 6 and not found: # PX6 - charge = -1 - found = True - elif atom == 16 and BO_valence == 6 and not found: # SX6 - charge = 0 - found = True - elif atom == 33 and BO_valence == 6 and not found: # AsX6 - charge = -1 - found = True - elif atom == 51 and BO_valence == 6 and not found: # SbX6 - charge = -1 - found = True - elif atom == 50 and BO_valence == 4 and not found: # SnX4 - charge = 0 - found = True - - else: - charge = atomic_valence_electrons - 8 + BO_valence - - return charge - - -def clean_charges(mol): - """ - This hack should not be needed anymore, but is kept just in case - - """ - - Chem.SanitizeMol(mol) - # rxn_smarts = ['[N+:1]=[*:2]-[C-:3]>>[N+0:1]-[*:2]=[C-0:3]', - # '[N+:1]=[*:2]-[O-:3]>>[N+0:1]-[*:2]=[O-0:3]', - # '[N+:1]=[*:2]-[*:3]=[*:4]-[O-:5]>>[N+0:1]-[*:2]=[*:3]-[*:4]=[O-0:5]', - # '[#8:1]=[#6:2]([!-:6])[*:3]=[*:4][#6-:5]>>[*-:1][*:2]([*:6])=[*:3][*:4]=[*+0:5]', - # '[O:1]=[c:2][c-:3]>>[*-:1][*:2][*+0:3]', - # '[O:1]=[C:2][C-:3]>>[*-:1][*:2]=[*+0:3]'] - - rxn_smarts = [ - "[#6,#7:1]1=[#6,#7:2][#6,#7:3]=[#6,#7:4][CX3-,NX3-:5][#6,#7:6]1=[#6,#7:7]>>" - "[#6,#7:1]1=[#6,#7:2][#6,#7:3]=[#6,#7:4][-0,-0:5]=[#6,#7:6]1[#6-,#7-:7]", - "[#6,#7:1]1=[#6,#7:2][#6,#7:3](=[#6,#7:4])[#6,#7:5]=[#6,#7:6][CX3-,NX3-:7]1>>" - "[#6,#7:1]1=[#6,#7:2][#6,#7:3]([#6-,#7-:4])=[#6,#7:5][#6,#7:6]=[-0,-0:7]1", - ] - - fragments = Chem.GetMolFrags(mol, asMols=True, sanitizeFrags=False) - - for i, fragment in enumerate(fragments): - for smarts in rxn_smarts: - patt = Chem.MolFromSmarts( - smarts.split(">>")[0] - ) # Construct a molecule from a SMARTS string. - while fragment.HasSubstructMatch(patt): - rxn = AllChem.ReactionFromSmarts(smarts) - ps = rxn.RunReactants((fragment,)) - fragment = ps[0][0] - Chem.SanitizeMol(fragment) - if i == 0: - mol = fragment - else: - mol = Chem.CombineMols(mol, fragment) - - return mol - - -def BO2mol( - mol, - BO_matrix, - atoms, - atomic_valence_electrons, - mol_charge, - allow_charged_fragments=True, -): - """ - based on code written by Paolo Toscani - - From bond order, atoms, valence structure and total charge, generate an - rdkit molecule. - - args: - mol - rdkit molecule - BO_matrix - bond order matrix of molecule - atoms - list of integer atomic symbols - atomic_valence_electrons - - mol_charge - total charge of molecule - - optional: - allow_charged_fragments - bool - allow charged fragments - - returns - mol - updated rdkit molecule with bond connectivity - - """ - - l = len(BO_matrix) - l2 = len(atoms) - BO_valences = list(BO_matrix.sum(axis=1)) - # print("BO_valences", BO_valences) #Sergi - - if l != l2: - raise RuntimeError( - "sizes of adjMat ({0:d}) and Atoms {1:d} differ".format(l, l2) - ) - - rwMol = Chem.RWMol(mol) - - bondTypeDict = { - 1: Chem.BondType.SINGLE, - 2: Chem.BondType.DOUBLE, - 3: Chem.BondType.TRIPLE, - } - - for i in range(l): - for j in range(i + 1, l): - bo = int(round(BO_matrix[i, j])) - if bo == 0: - continue - bt = bondTypeDict.get(bo, Chem.BondType.SINGLE) - rwMol.AddBond(i, j, bt) - - mol = rwMol.GetMol() - - if allow_charged_fragments: - mol = set_atomic_charges( - mol, atoms, atomic_valence_electrons, BO_valences, BO_matrix, mol_charge - ) - else: - mol = set_atomic_radicals(mol, atoms, atomic_valence_electrons, BO_valences) - - return mol - - -def set_atomic_charges( - mol, atoms, atomic_valence_electrons, BO_valences, BO_matrix, mol_charge -): - """ """ - q = 0 - for i, atom in enumerate(atoms): - a = mol.GetAtomWithIdx(i) - charge = get_atomic_charge(atom, atomic_valence_electrons[atom], BO_valences[i]) - q += charge - if atom == 6: - number_of_single_bonds_to_C = list(BO_matrix[i, :]).count(1) - # if number_of_single_bonds_to_C == 2 and BO_valences[i] == 2: - # q += 1 - # charge = 0 - if BO_valences[i] == 2: - print("set_atomic_charges", "carbon atom SetNumRadicalElectrons 2") - a.SetNumRadicalElectrons(2) - charge = 0 - if number_of_single_bonds_to_C == 3 and q + 1 < mol_charge: - q += 2 - charge = 1 - - if abs(charge) > 0: - a.SetFormalCharge(int(charge)) - - # mol = clean_charges(mol) - - return mol - - -# def set_atomic_radicals(mol, atoms, atomic_valence_electrons, BO_valences): -# """ - -# The number of radical electrons = absolute atomic charge - -# """ -# for i, atom in enumerate(atoms): -# a = mol.GetAtomWithIdx(i) -# charge = get_atomic_charge(atom, atomic_valence_electrons[atom], BO_valences[i]) - -# if abs(charge) > 0: -# a.SetNumRadicalElectrons(abs(int(charge))) - -# return mol - -def set_atomic_radicals( - mol, atoms, atomic_valence_electrons, BO_valences, use_atom_maps=True -): - """The number of radical electrons = absolute atomic charge.""" - atomic_valence[8] = [2, 1] - atomic_valence[7] = [3, 2] - atomic_valence[6] = [4, 2] - - for i, atom in enumerate(atoms): - a = mol.GetAtomWithIdx(i) - if use_atom_maps: - a.SetAtomMapNum(i + 1) - charge = get_atomic_charge(atom, atomic_valence_electrons[atom], BO_valences[i]) - - if abs(charge) > 0: - a.SetNumRadicalElectrons(abs(int(charge))) - - return mol - -def get_bonds(UA, AC): - """ """ - bonds = [] - - for k, i in enumerate(UA): - for j in UA[k + 1 :]: - if AC[i, j] == 1: - bonds.append(tuple(sorted([i, j]))) - - return bonds - -# def get_UA_pairs_new(UA, AC, DU, use_graph=True): -# """""" -# N_UA = 10000 -# matching_ids = dict() -# matching_ids2 = dict() -# for i, du in zip(UA, DU): -# if du > 1: -# matching_ids[i] = N_UA -# matching_ids2[N_UA] = i -# N_UA += 1 - -# bonds = get_bonds(UA, AC) -# for i, j in bonds: -# if i in matching_ids: -# bonds.append(tuple(sorted([matching_ids[i], j]))) - -# elif j in matching_ids: -# bonds.append(tuple(sorted([i, matching_ids[j]]))) - -# if len(bonds) == 0: -# return [()] - -# if use_graph: -# G = nx.Graph() -# G.add_edges_from(bonds) -# UA_pairs = [list(nx.max_weight_matching(G))] -# UA_pair = UA_pairs[0] - -# remove_pairs = [] -# add_pairs = [] -# for i, j in UA_pair: -# if i in matching_ids2 and j in matching_ids2: -# remove_pairs.append(tuple([i, j])) -# add_pairs.append(tuple([matching_ids2[i], matching_ids2[j]])) -# # UA_pair.remove(tuple([i,j])) -# # UA_pair.append(tuple([matching_ids2[i], matching_ids2[j]])) -# elif i in matching_ids2: -# # UA_pair.remove(tuple([i,j])) -# remove_pairs.append(tuple([i, j])) -# add_pairs.append(tuple([matching_ids2[i], j])) -# # UA_pair.append(tuple([matching_ids2[i],j])) -# elif j in matching_ids2: -# remove_pairs.append(tuple([i, j])) -# add_pairs.append(tuple([i, matching_ids2[j]])) - -# # UA_pair.remove(tuple([i,j])) -# # UA_pair.append(tuple([i,matching_ids2[j]])) -# for p1, p2 in zip(remove_pairs, add_pairs): -# UA_pair.remove(p1) -# UA_pair.append(p2) -# return [UA_pair] - -# max_atoms_in_combo = 0 -# UA_pairs = [()] -# for combo in list(itertools.combinations(bonds, int(len(UA) / 2))): -# flat_list = [item for sublist in combo for item in sublist] -# atoms_in_combo = len(set(flat_list)) -# if atoms_in_combo > max_atoms_in_combo: -# max_atoms_in_combo = atoms_in_combo -# UA_pairs = [combo] - -# elif atoms_in_combo == max_atoms_in_combo: -# UA_pairs.append(combo) - -# return UA_pairs - -def get_UA_pairs(UA, AC, use_graph=True): - """ """ - - bonds = get_bonds(UA, AC) - - if len(bonds) == 0: - return [()] - - if use_graph: - G = nx.Graph() - G.add_edges_from(bonds) - UA_pairs = [list(nx.max_weight_matching(G))] - return UA_pairs - - max_atoms_in_combo = 0 - UA_pairs = [()] - for combo in list(itertools.combinations(bonds, int(len(UA) / 2))): - flat_list = [item for sublist in combo for item in sublist] - atoms_in_combo = len(set(flat_list)) - if atoms_in_combo > max_atoms_in_combo: - max_atoms_in_combo = atoms_in_combo - UA_pairs = [combo] - - elif atoms_in_combo == max_atoms_in_combo: - UA_pairs.append(combo) - - return UA_pairs - -# def AC2BO_new( -# AC, atoms, charge, allow_charged_fragments=True, use_graph=True, allow_carbenes=True -# ): -# """Implemenation of algorithm shown in Figure 2. - -# UA: unsaturated atoms - -# DU: degree of unsaturation (u matrix in Figure) - -# best_BO: Bcurr in Figure -# """ - -# global atomic_valence -# global atomic_valence_electrons - -# # make a list of valences, e.g. for CO: [[4],[2,1]] -# valences_list_of_lists = [] -# AC_valence = list(AC.sum(axis=1)) - -# for i, (atomicNum, valence) in enumerate(zip(atoms, AC_valence)): -# # valence can't be smaller than number of neighbourgs -# possible_valence = [x for x in atomic_valence[atomicNum] if x >= valence] -# if atomicNum == 6 and valence == 1: -# possible_valence.remove(2) -# if atomicNum == 6 and not allow_carbenes and valence == 2: -# possible_valence.remove(2) -# if atomicNum == 6 and valence == 2: -# possible_valence.append(3) -# if atomicNum == 16 and valence == 1: -# possible_valence = [1, 2] - -# if not possible_valence: -# print( -# "Valence of atom", -# i, -# "is", -# valence, -# "which bigger than allowed max", -# max(atomic_valence[atomicNum]), -# ". Stopping", -# ) -# sys.exit() -# valences_list_of_lists.append(possible_valence) - -# # convert [[4],[2,1]] to [[4,2],[4,1]] -# valences_list = itertools.product(*valences_list_of_lists) - -# best_BO = AC.copy() - -# O_valences = [ -# v_list -# for v_list, atomicNum in zip(valences_list_of_lists, atoms) -# if atomicNum == 8 -# ] -# N_valences = [ -# v_list -# for v_list, atomicNum in zip(valences_list_of_lists, atoms) -# if atomicNum == 7 -# ] -# C_valences = [ -# v_list -# for v_list, atomicNum in zip(valences_list_of_lists, atoms) -# if atomicNum == 6 -# ] -# P_valences = [ -# v_list -# for v_list, atomicNum in zip(valences_list_of_lists, atoms) -# if atomicNum == 15 -# ] -# S_valences = [ -# v_list -# for v_list, atomicNum in zip(valences_list_of_lists, atoms) -# if atomicNum == 16 -# ] - -# O_sums = [] -# for v_list in itertools.product(*O_valences): -# O_sums.append(v_list) -# # if sum(v_list) not in O_sums: -# # O_sums.append(v_list)) - -# N_sums = [] -# for v_list in itertools.product(*N_valences): -# N_sums.append(v_list) -# # if sum(v_list) not in N_sums: -# # N_sums.append(sum(v_list)) - -# C_sums = [] -# for v_list in itertools.product(*C_valences): -# C_sums.append(v_list) -# # if sum(v_list) not in C_sums: -# # C_sums.append(sum(v_list)) - -# P_sums = [] -# for v_list in itertools.product(*P_valences): -# P_sums.append(v_list) - -# S_sums = [] -# for v_list in itertools.product(*S_valences): -# S_sums.append(v_list) - -# order_dict = dict() -# for i, v_list in enumerate( -# itertools.product(*[O_sums, N_sums, C_sums, P_sums, S_sums]) -# ): -# order_dict[v_list] = i - -# valence_order_list = [] -# for valence_list in valences_list: -# C_sum = [] -# N_sum = [] -# O_sum = [] -# P_sum = [] -# S_sum = [] -# for v, atomicNum in zip(valence_list, atoms): -# if atomicNum == 6: -# C_sum.append(v) -# if atomicNum == 7: -# N_sum.append(v) -# if atomicNum == 8: -# O_sum.append(v) -# if atomicNum == 15: -# P_sum.append(v) -# if atomicNum == 16: -# S_sum.append(v) - -# order_idx = order_dict[ -# (tuple(O_sum), tuple(N_sum), tuple(C_sum), tuple(P_sum), tuple(S_sum)) -# ] -# valence_order_list.append(order_idx) - -# sorted_valences_list = [ -# y -# for x, y in sorted( -# zip(valence_order_list, list(itertools.product(*valences_list_of_lists))) -# ) -# ] - -# for valences in sorted_valences_list: # valences_list: -# UA, DU_from_AC = get_UA(valences, AC_valence) -# check_len = len(UA) == 0 -# if check_len: -# check_bo = BO_is_OK( -# AC, -# AC, -# charge, -# DU_from_AC, -# atomic_valence_electrons, -# atoms, -# valences, -# allow_charged_fragments=allow_charged_fragments, -# allow_carbenes=allow_carbenes, -# ) -# else: -# check_bo = None - -# if check_len and check_bo: -# return AC, atomic_valence_electrons - -# UA_pairs_list = get_UA_pairs(UA, AC, DU_from_AC, use_graph=use_graph) -# for UA_pairs in UA_pairs_list: -# BO = get_BO(AC, UA, DU_from_AC, valences, UA_pairs, use_graph=use_graph) -# status = BO_is_OK( -# BO, -# AC, -# charge, -# DU_from_AC, -# atomic_valence_electrons, -# atoms, -# valences, -# allow_charged_fragments=allow_charged_fragments, -# allow_carbenes=allow_carbenes, -# ) -# charge_OK = charge_is_OK( -# BO, -# AC, -# charge, -# DU_from_AC, -# atomic_valence_electrons, -# atoms, -# valences, -# allow_charged_fragments=allow_charged_fragments, -# allow_carbenes=allow_carbenes, -# ) - -# if status: -# return BO, atomic_valence_electrons -# elif ( -# BO.sum() >= best_BO.sum() -# and valences_not_too_large(BO, valences) -# and charge_OK -# ): -# best_BO = BO.copy() - -# return best_BO, atomic_valence_electrons - -def AC2BO (AC, atoms, charge, allow_charged_fragments=True, use_graph=True, allow_carbenes=True): - """ - implemenation of algorithm shown in Figure 2 - UA: unsaturated atoms - DU: degree of unsaturation (u matrix in Figure) - best_BO: Bcurr in Figure - """ - - # make a list of valences, e.g. for CO: [[4],[2,1]] - valences_list_of_lists = [] - AC_valence = list(AC.sum(axis=1)) - #print(f"{AC_valence=}") - formula = labels2formula([elemdatabase.elementsym[atom] for atom in atoms]) - wrong = 0 - - for i, (atomicNum, valence) in enumerate(zip(atoms, AC_valence)): - # valence can't be smaller than number of neighbours - if len(atomic_valence[atomicNum]) == 0: - print( - "In AC2BO", - i, - "Atomic number", - atomicNum, - "Has no possible valences assigned in database", - ) - possible_valence = [x for x in atomic_valence[atomicNum] if x >= valence] - if atomicNum == 6 and valence == 1: - if 2 in possible_valence: - possible_valence.remove(2) - if atomicNum == 6 and not allow_carbenes and valence == 2: - if 2 in possible_valence: - possible_valence.remove(2) - if atomicNum == 6 and valence == 2: - possible_valence.append(3) - if atomicNum == 7: - #print("Possible valences for:", atomicNum,"are",possible_valence, valence) - if valence not in possible_valence: - possible_valence.append(valence) - # if atomicNum == 15: - # print("Possible valences for:", atomicNum,"are",possible_valence, valence) - if len(possible_valence) == 0: - element = elemdatabase.elementsym[atomicNum] - if elemdatabase.elementgroup[element] == 1 or elemdatabase.elementgroup[element] == 2 : # Alkali and Alkaline earth metals - print('WARNING!! Valence of atom', element, i,\ - 'is', valence,'which is bigger than allowed max',max(atomic_valence[atomicNum]),'. Stopping') - possible_valence.append(valence) - elif elemdatabase.elementperiod[element] < 3 : # e.g. HOLMOK - print('WARNING!! Valence of atom', element, i,\ - 'is', valence,'which bigger than allowed max',max(atomic_valence[atomicNum]),'. Stopping') - possible_valence.append(valence) - # wrong += 1 - else: - possible_valence.append(valence) - # sys.exit() - valences_list_of_lists.append(possible_valence) - #print(f"{wrong=}") - if wrong > 0: - # print(f"AC2BO: {wrong=}") - return None, atomic_valence_electrons - - #print(f"\tAC2BO: {valences_list_of_lists=}") - - # convert [[4],[2,1]] to [[4,2],[4,1]] - valences_list = [] - for i in itertools.product(*valences_list_of_lists): - tmp = [] - for j in i: - tmp.append(j) - valences_list.append(tmp) - - best_BO = AC.copy() - BO_is_OK_list = [] - max_count = max(1000, int(len(valences_list)*0.3)) - #print(f"AC2BO: {formula=} {len(valences_list)=} {max_count=}") - - count = 0 - for valences in valences_list: - - #print(f"\tSending", valences, AC_valence, "to get_UA") - UA, DU_from_AC = get_UA(valences, AC_valence) - - check_len = len(UA) == 0 - #print (f"\tAC2BO: check_len", check_len) - #print(f"\tUA", UA) - if check_len: - check_bo = BO_is_OK( - AC, - AC, - charge, - DU_from_AC, - atomic_valence_electrons, - atoms, - valences, - allow_charged_fragments=allow_charged_fragments, - allow_carbenes=allow_carbenes, - ) - else: - check_bo = None - - if check_len and check_bo: - #print(f"\tAC2BO: {formula=} return AC", check_len, check_bo, f"{charge=} {count=}") - return AC, atomic_valence_electrons - - UA_pairs_list = get_UA_pairs(UA, AC, use_graph=use_graph) - for UA_pairs in UA_pairs_list: - BO = get_BO(AC, UA, DU_from_AC, valences, UA_pairs, use_graph=use_graph) - status = BO_is_OK( - BO, - AC, - charge, - DU_from_AC, - atomic_valence_electrons, - atoms, - valences, - allow_charged_fragments=allow_charged_fragments, - allow_carbenes=allow_carbenes, - ) - charge_OK = charge_is_OK( - BO, - AC, - charge, - DU_from_AC, - atomic_valence_electrons, - atoms, - valences, - allow_charged_fragments=allow_charged_fragments, - allow_carbenes=allow_carbenes, - ) - if status: - print(f"\tAC2BO: {formula=} status", status, f"{charge=} {count=}") - return BO, atomic_valence_electrons - elif ( - BO.sum() >= best_BO.sum() - and valences_not_too_large(BO, valences) - and charge_OK - ): - #print(f"\tAC2BO: status", status, "BO.sum()", BO.sum(), "best_BO.sum()", best_BO.sum()) - best_BO = BO.copy() - - count += 1 - if count > max_count : - print(f"\tOver maximum counts AC2BO: {formula=} {charge=} {count=}") - return best_BO, atomic_valence_electrons - - return best_BO, atomic_valence_electrons - - -def AC2mol(mol, AC, atoms, charge, allow_charged_fragments=True, use_graph=True, allow_carbenes=True): - """ """ - - # convert AC matrix to bond order (BO) matrix - BO, atomic_valence_electrons = AC2BO( - AC, - atoms, - charge, - allow_charged_fragments=allow_charged_fragments, - use_graph=use_graph, - allow_carbenes=allow_carbenes, - ) - if BO is None: - return [], None - - # add BO connectivity and charge info to mol object - mol = BO2mol( - mol, - BO, - atoms, - atomic_valence_electrons, - charge, - allow_charged_fragments=allow_charged_fragments, - ) - - # If charge is not correct don't return mol - # if Chem.GetFormalCharge(mol) != charge: ## SERGI MOD - # return [] ## SERGI MOD - - # BO2mol returns an arbitrary resonance form. Let's make the rest - # mols = rdchem.ResonanceMolSupplier(mol, Chem.UNCONSTRAINED_CATIONS, Chem.UNCONSTRAINED_ANIONS) - # mols = [mol for mol in mols] - - return [mol], BO - - -def get_proto_mol(atoms): - """ """ - mol = Chem.MolFromSmarts("[#" + str(atoms[0]) + "]") - rwMol = Chem.RWMol(mol) - for i in range(1, len(atoms)): - #print(f"XYZ2MOL.PROTO_MOL: doing {atoms[i]=}") - a = Chem.Atom(int(atoms[i])) - rwMol.AddAtom(a) - - mol = rwMol.GetMol() - - return mol - - -def read_xyz_file(filename, look_for_charge=True): - """ """ - - atomic_symbols = [] - xyz_coordinates = [] - charge = 0 - title = "" - - with open(filename, "r") as file: - for line_number, line in enumerate(file): - if line_number == 0: - num_atoms = int(line) - elif line_number == 1: - title = line - if "charge=" in line: - charge = int(line.split("=")[1]) - else: - atomic_symbol, x, y, z = line.split() - atomic_symbols.append(atomic_symbol) - xyz_coordinates.append([float(x), float(y), float(z)]) - - atoms = [int_atom(atom) for atom in atomic_symbols] - - return atoms, charge, xyz_coordinates - - -#def xyz2AC(atoms, xyz, charge, covalent_factor, use_huckel=False): -# """ -# -# atoms and coordinates to atom connectivity (AC) -# -# args: -# atoms - int atom types -# xyz - coordinates -# charge - molecule charge -# -# optional: -# use_huckel - Use Huckel method for atom connecitivty -# -# returns -# ac - atom connectivity matrix -# mol - rdkit molecule -# -# """ -# -# if use_huckel: -# return xyz2AC_huckel(atoms, xyz, charge) -# else: -# return xyz2AC_vdW(atoms, xyz, covalent_factor) -# -# -#def xyz2AC_vdW(atoms, xyz, covalent_factor): -# -# # Get mol template -# mol = get_proto_mol(atoms) -# -# # Set coordinates -# conf = Chem.Conformer(mol.GetNumAtoms()) -# for i in range(mol.GetNumAtoms()): -# conf.SetAtomPosition(i, (xyz[i][0], xyz[i][1], xyz[i][2])) -# mol.AddConformer(conf) -# -# AC = get_AC(mol, covalent_factor) -# -# return AC, mol -# -# -#def get_AC(mol, covalent_factor=1.3): -# """ -# -# Generate adjacent matrix from atoms and coordinates. -# -# AC is a (num_atoms, num_atoms) matrix with 1 being covalent bond and 0 is not -# -# -# covalent_factor - 1.3 is an arbitrary factor -# -# args: -# mol - rdkit molobj with 3D conformer -# -# optional -# covalent_factor - increase covalent bond length threshold with facto -# -# returns: -# AC - adjacent matrix -# -# """ -# -# # Calculate distance matrix -# dMat = Chem.Get3DDistanceMatrix(mol) -# -# pt = Chem.GetPeriodicTable() -# num_atoms = mol.GetNumAtoms() -# AC = np.zeros((num_atoms, num_atoms), dtype=int) -# -# for i in range(num_atoms): -# a_i = mol.GetAtomWithIdx(i) -# Rcov_i = pt.GetRcovalent(a_i.GetAtomicNum()) * covalent_factor -# for j in range(i + 1, num_atoms): -# a_j = mol.GetAtomWithIdx(j) -# Rcov_j = pt.GetRcovalent(a_j.GetAtomicNum()) * covalent_factor -# if dMat[i, j] <= Rcov_i + Rcov_j: -# AC[i, j] = 1 -# AC[j, i] = 1 -# -# return AC -# -# -## http://rdkit.blogspot.com/2019/06/doing-extended-hueckel-calculations.html -# -# -#def xyz2AC_huckel(atomicNumList, xyz, charge): -# """ -# -# args -# atomicNumList - atom type list -# xyz - coordinates -# charge - molecule charge -# -# returns -# ac - atom connectivity -# mol - rdkit molecule -# -# """ -# mol = get_proto_mol(atomicNumList) -# -# conf = Chem.Conformer(mol.GetNumAtoms()) -# for i in range(mol.GetNumAtoms()): -# conf.SetAtomPosition(i, (xyz[i][0], xyz[i][1], xyz[i][2])) -# mol.AddConformer(conf) -# -# num_atoms = len(atomicNumList) -# AC = np.zeros((num_atoms, num_atoms)).astype(int) -# -# mol_huckel = Chem.Mol(mol) -# mol_huckel.GetAtomWithIdx(0).SetFormalCharge( -# charge -# ) # mol charge arbitrarily added to 1st atom -# -# passed, result = rdEHTTools.RunMol(mol_huckel) -# opop = ( -# result.GetReducedOverlapPopulationMatrix() -# ) # The reduced overlap population matrix provides the Mulliken overlap population between atoms in the molecule. It's returned as a vector representing a symmetric matrix -# tri = np.zeros((num_atoms, num_atoms)) -# tri[ -# np.tril(np.ones((num_atoms, num_atoms), dtype=bool)) -# ] = opop # lower triangular to square matrix -# for i in range(num_atoms): -# for j in range(i + 1, num_atoms): -# pair_pop = abs(tri[j, i]) -# if pair_pop >= 0.15: # arbitry cutoff for bond. May need adjustment -# AC[i, j] = 1 -# AC[j, i] = 1 -# -# return AC, mol - - -def chiral_stereo_check(mol): - """ - Find and embed chiral information into the model based on the coordinates - - args: - mol - rdkit molecule, with embeded conformer - - """ - try: - Chem.SanitizeMol(mol, sanitizeOps=Chem.SanitizeFlags.SANITIZE_ALL ^ Chem.SanitizeFlags.SANITIZE_PROPERTIES, - catchErrors=True) - Chem.DetectBondStereochemistry(mol, -1) - Chem.AssignStereochemistry(mol, flagPossibleStereoCenters=True, force=True) - Chem.AssignAtomChiralTagsFromStructure(mol, -1) - return True - - except rdkit.Chem.rdchem.AtomValenceException as e: - print(f"Failed to process molecule: {e}") - return False - - - -def xyz2mol( - atoms, - coordinates, - AC, - covalent_factor, - charge=0, - allow_charged_fragments=True, - use_graph=True, - use_huckel=False, - embed_chiral=True, - exportBO=False, - allow_carbenes=False -): - """ - Generate a rdkit molobj from atoms, coordinates and a total_charge. - - args: - atoms - list of atom types (int) - coordinates - 3xN Cartesian coordinates - charge - total charge of the system (default: 0) - - optional: - allow_charged_fragments - alternatively radicals are made - use_graph - use graph (networkx) - use_huckel - Use Huckel method for atom connectivity prediction - embed_chiral - embed chiral information to the molecule - - returns: - mols - list of rdkit molobjects - - """ - AC = np.array(AC) - mol = get_proto_mol(atoms) - # Get atom connectivity (AC) matrix, list of atomic numbers, molecular charge, - # and mol object with no connectivity information - #AC, mol = xyz2AC(atoms, coordinates, charge, covalent_factor, use_huckel=use_huckel) - # Convert AC to bond order matrix and add connectivity and charge info to - # mol object - new_mols, BO = AC2mol( - mol, - AC, - atoms, - charge, - allow_charged_fragments=allow_charged_fragments, - use_graph=use_graph, - allow_carbenes=False - ) - - # Check for stereocenters and chiral centers -> Move to get_charge function - # if embed_chiral: - # chiral_stereo_check(new_mol)) - - if exportBO: - return new_mols, BO - else: - return new_mols - - -######################## -#### END OF XYZ2MOL #### -######################## diff --git a/cell2mol/xyz_molecule.py b/cell2mol/xyz_molecule.py deleted file mode 100644 index 4f393fc62..000000000 --- a/cell2mol/xyz_molecule.py +++ /dev/null @@ -1,104 +0,0 @@ -import os -import sys -import logging -from contextlib import redirect_stdout -from ase.io import read -from cell2mol.classes import molecule -from cell2mol.connectivity import split_species - -# Constants -VERSION = "2.0" -COV_FACTOR = 1.3 -METAL_FACTOR = 1.0 - -def get_molecule (input_path, name, input_charge, current_dir, debug=2): - - molec_fname = os.path.join(current_dir, f"Molecule_{name}.mol") - output_fname = os.path.join(current_dir, "mol.out") - - with open(output_fname, "w") as output: - with redirect_stdout(output): - print(f"cell2mol version {VERSION}") - print(f"INITIATING molceule object from input path: {input_path}") - print(f"Debug level: {debug}") - - structure = read(input_path) - labels = structure.get_chemical_symbols() - coords = structure.get_positions() - blocklist = split_species(labels, coords, cov_factor=COV_FACTOR) - print(f"The number of molecules in the xyz : blocklist={len(blocklist)}") - if len(blocklist) > 1: - print("Input file includes more than one molecules. Stopping") - return - if len(blocklist) == 0: - print("No molecule found from the input file") - return - - newmolec = molecule(labels, coords) - newmolec.set_adjacency_parameters(cov_factor=COV_FACTOR, metal_factor=METAL_FACTOR) - newmolec.set_atoms(create_adjacencies=True, debug=debug) - - if newmolec.iscomplex: - newmolec.split_complex() - elif newmolec.has_IA_IIA: - newmolec.split_IA_IIA() - else: - newmolec.add_parent(newmolec, indices=[*range(0,newmolec.natoms,1)]) - - if newmolec.iscomplex: - if debug >= 0: print(f"GET_MOLECULE: working with {newmolec.formula} with transition metals") - newmolec.get_hapticity(debug=debug) - if len(newmolec.ligands) == 0 : - print(f"GET_MOLECULE: {newmolec.formula} is a metal cluster") - else: - for lig in newmolec.ligands: - lig.get_denticity(debug=debug) - for met in newmolec.metals: - met.get_connected_metals(debug=debug) - met.get_coordination_geometry(debug=debug) - met.get_coord_sphere_formula(debug=debug) - elif newmolec.has_IA_IIA: - if debug >= 0: print(f"GET_MOLECULE: working with {newmolec.formula} with alkali or alkali earth metals") - if len(newmolec.ligands) == 0 : - pass - else: - for lig in newmolec.ligands: - lig.get_denticity(debug=debug) - for met in newmolec.metals: - met.get_connected_metals(debug=debug) - met.get_coordination_geometry(debug=debug) - met.get_coord_sphere_formula(debug=debug) - newmolec.input_charge = input_charge - if input_charge is not None: - newmolec.get_unique_species() - newmolec.get_selected_cs() - newmolec.balance_charges_for_molecules(input_charge=input_charge) - if any([ - newmolec.error_get_poscharges, - newmolec.error_multiple_distrib, - newmolec.error_empty_distrib, - ]): - print("[ERROR] Charge assignment failed.") - newmolec.save(molec_fname) - return newmolec - - newmolec.assign_charges_for_molecule() - newmolec.create_bonds() - if newmolec.error_create_bonds: - print("[ERROR] Create Bonds failed.") - newmolec.error_case = 8 - - newmolec.save(molec_fname) - return newmolec - -# Run the main function -if __name__ == "__main__": - - input = sys.argv[1] - current_dir = os.getcwd() - input_path = os.path.normpath(input) - dir, file = os.path.split(input_path) - name, extension = os.path.splitext(file) - - # Example usage, replace with actual arguments - get_molecule(input_path, name, current_dir, debug=1) \ No newline at end of file diff --git a/cell2mol/xyz_unitcell.py b/cell2mol/xyz_unitcell.py deleted file mode 100644 index 53bbb9605..000000000 --- a/cell2mol/xyz_unitcell.py +++ /dev/null @@ -1,14 +0,0 @@ -import os -import sys -import logging -from contextlib import redirect_stdout -from ase.io import read -from cell2mol.classes import molecule - -def process_unitcell_from_xyz(input_path, name, cell_para, current_dir, debug_mode): - labels, pos, ref_labels, ref_fracs, cellvec, cellparam = readinfo(infopath) - atoms = read(input_path) - newcell = cell(name, labels, pos, cellvec, cellparam) - - ## Get the fragments, which is the moleclist of a fragmented cell - fragments = newcell.get_moleclist(cov_factor=cov_factor, metal_factor=metal_factor, debug=debug) \ No newline at end of file diff --git a/environment.yml b/environment.yml deleted file mode 100644 index 4bb6a847e..000000000 --- a/environment.yml +++ /dev/null @@ -1,206 +0,0 @@ -name: cell2mol -channels: - - conda-forge - - defaults -dependencies: - - argon2-cffi=21.3.0 - - argon2-cffi-bindings=21.2.0 - - asttokens=2.0.5 - - attrs=21.4.0 - - backcall=0.2.0 - - beautifulsoup4=4.11.1 - - bleach=4.1.0 - - boost=1.74.0 - - boost-cpp=1.74.0 - - brotli=1.0.9 - - bzip2=1.0.8 - - ca-certificates=2022.07.19 - - cairo=1.16.0 - - certifi=2022.9.24 - - cffi=1.15.0 - - contourpy=1.0.5 - - cycler=0.11.0 - - debugpy=1.5.1 - - decorator=5.1.1 - - defusedxml=0.7.1 - - entrypoints=0.4 - - executing=0.8.3 - - expat=2.4.9 - - fontconfig=2.14.0 - - fonttools=4.25.0 - - freetype=2.12.1 - - gettext=0.19.8.1 - - glib=2.74.0 - - glib-tools=2.74.0 - - greenlet=1.1.1 - - gst-plugins-base=1.20.3 - - gstreamer=1.20.3 - - icu=70.1 - - importlib-metadata=4.11.3 - - iniconfig=1.1.1 - - ipykernel=6.9.1 - - ipython=8.3.0 - - ipython_genutils=0.2.0 - - ipywidgets=8.0.2 - - jedi=0.18.1 - - jinja2=3.0.3 - - jpeg=9e - - jsonschema=4.4.0 - - jupyter=1.0.0 - - jupyter_client=7.2.2 - - jupyter_console=6.4.3 - - jupyter_core=4.10.0 - - jupyter_server=1.17.0 - - jupyterlab=3.4.0 - - jupyterlab_pygments=0.1.2 - - jupyterlab_server=2.12.0 - - jupyterlab_widgets=3.0.3 - - kiwisolver=1.4.2 - - krb5=1.19.3 - - lcms2=2.12 - - lerc=4.0.0 - - libblas=3.9.0 - - libcblas=3.9.0 - - libclang=14.0.6 - - libclang13=14.0.6 - - libcxx=14.0.6 - - libdeflate=1.14 - - libedit=3.1.20210910 - - libffi=3.4.2 - - libflac=1.3.4 - - libgfortran5=11.3.0 - - libglib=2.74.0 - - libiconv=1.17 - - liblapack=3.9.0 - - libllvm14=14.0.6 - - libogg=1.3.4 - - libopenblas=0.3.21 - - libopus=1.3.1 - - libpng=1.6.38 - - libpq=14.5 - - libsndfile=1.0.31 - - libsodium=1.0.18 - - libsqlite=3.39.4 - - libtiff=4.4.0 - - libtool=2.4.6 - - libuuid=2.32.1 - - libvorbis=1.3.7 - - libwebp-base=1.2.4 - - libxcb=1.13 - - libxml2=2.10.3 - - libzlib=1.2.13 - - llvm-openmp=14.0.4 - - lz4-c=1.9.3 - - markdown=3.3.4 - - markupsafe=2.1.1 - - matplotlib-base=3.6.1 - - matplotlib-inline=0.1.6 - - mistune=2.0.4 - - munkres=1.1.4 - - mysql-common=8.0.31 - - mysql-libs=8.0.31 - - nbclient=0.7.0 - - nbconvert=7.2.1 - - nbconvert-core=7.2.1 - - nbconvert-pandoc=7.2.1 - - nbformat=5.7.0 - - ncurses=6.3 - - nest-asyncio=1.5.6 - - networkx=2.8.7 - - notebook=6.4.12 - - nspr=4.32 - - nss=3.78 - - numpy=1.23.1 - - openjpeg=2.5.0 - - openssl=1.1.1q - - packaging=21.3 - - pandas=1.5.0 - - pandoc=2.19.2 - - pandocfilters=1.5.0 - - parso=0.8.3 - - pcre2=10.37 - - pexpect=4.8.0 - - pickleshare=0.7.5 - - pillow=9.2.0 - - pip=22.3 - - pixman=0.40.0 - - pkgutil-resolve-name=1.3.10 - - pluggy=1.0.0 - - ply=3.11 - - portaudio=19.6.0 - - prometheus_client=0.15.0 - - prompt-toolkit=3.0.31 - - psutil=5.9.2 - - pthread-stubs=0.4 - - ptyprocess=0.7.0 - - pure_eval=0.2.2 - - py=1.11.0 - - py3dmol=1.8.1 - - pycairo=1.21.0 - - pycifrw=4.4.3 - - pycparser=2.21 - - pygments=2.13.0 - - pyparsing=3.0.9 - - pyqt=5.15.7 - - pyqt5-sip=12.11.0 - - pyrsistent=0.18.1 - - pytest=7.1.3 - - python=3.10.6 - - python-dateutil=2.8.2 - - python-fastjsonschema=2.16.2 - - python_abi=3.10 - - pytz=2022.4 - - pyzmq=24.0.1 - - qt-main=5.15.6 - - qtconsole=5.3.2 - - qtconsole-base=5.3.2 - - qtpy=2.2.1 - - rdkit=2022.03.5 - - readline=8.1.2 - - reportlab=3.5.68 - - scipy=1.9.1 - - send2trash=1.8.0 - - setuptools=65.4.1 - - sip=6.7.2 - - six=1.16.0 - - soupsieve=2.3.2.post1 - - sqlalchemy=1.4.42 - - sqlite=3.39.4 - - stack_data=0.5.1 - - terminado=0.16.0 - - tinycss2=1.1.1 - - tk=8.6.12 - - toml=0.10.2 - - tomli=2.0.1 - - tornado=6.2 - - traitlets=5.4.0 - - typing_extensions=4.4.0 - - tzdata=2022e - - unicodedata2=14.0.0 - - wcwidth=0.2.5 - - webencodings=0.5.1 - - wheel=0.37.1 - - widgetsnbextension=4.0.3 - - xorg-kbproto=1.0.7 - - xorg-libice=1.0.10 - - xorg-libsm=1.2.3 - - xorg-libx11=1.7.2 - - xorg-libxau=1.0.9 - - xorg-libxdmcp=1.1.3 - - xorg-libxext=1.3.4 - - xorg-libxrender=0.9.10 - - xorg-renderproto=0.11.1 - - xorg-xextproto=7.3.0 - - xorg-xproto=7.0.31 - - xz=5.2.6 - - zeromq=4.3.4 - - zipp=3.9.0 - - zlib=1.2.13 - - zstd=1.5.2 - - pip: - - cosymlib==0.10.9 - - huckelpy==0.2.3 - - pyyaml==6.0 - - symgroupy==0.5.10 - - wfnsympy==0.3.5 - - scikit-learn==1.3.2 diff --git a/environment_linux.yml b/environment_linux.yml deleted file mode 100644 index 6f6130971..000000000 --- a/environment_linux.yml +++ /dev/null @@ -1,261 +0,0 @@ -name: cell2mol_v2 -channels: - - defaults - - conda-forge - - https://repo.anaconda.com/pkgs/main - - https://repo.anaconda.com/pkgs/r -dependencies: - - _libgcc_mutex=0.1 - - _openmp_mutex=4.5 - - annotated-types=0.7.0 - - anyio=4.7.0 - - argon2-cffi=21.3.0 - - argon2-cffi-bindings=21.2.0 - - arrow=1.3.0 - - asttokens=3.0.0 - - async-lru=2.0.4 - - attrs=24.3.0 - - babel=2.16.0 - - backports=1.0 - - backports.functools_lru_cache=2.0.0 - - beautifulsoup4=4.12.3 - - blas=2.131 - - blas-devel=3.9.0 - - bleach=6.2.0 - - bleach-with-css=6.2.0 - - brotli=1.1.0 - - brotli-bin=1.1.0 - - brotli-python=1.0.9 - - bzip2=1.0.8 - - ca-certificates=2025.4.26 - - cached-property=1.5.2 - - cached_property=1.5.2 - - cairo=1.18.4 - - certifi=2025.4.26 - - cffi=1.17.1 - - chardet=5.2.0 - - charset-normalizer=3.3.2 - - comm=0.2.1 - - contourpy=1.3.2 - - cycler=0.12.1 - - cyrus-sasl=2.1.27 - - debugpy=1.8.11 - - decorator=5.1.1 - - defusedxml=0.7.1 - - exceptiongroup=1.3.0 - - executing=0.8.3 - - flit-core=3.12.0 - - font-ttf-dejavu-sans-mono=2.37 - - font-ttf-inconsolata=3.000 - - font-ttf-source-code-pro=2.038 - - font-ttf-ubuntu=0.83 - - fontconfig=2.15.0 - - fonts-conda-ecosystem=1 - - fonts-conda-forge=1 - - fonttools=4.57.0 - - fqdn=1.5.1 - - freetype=2.13.3 - - freetype-py=2.3.0 - - greenlet=3.2.1 - - h11=0.14.0 - - h2=4.2.0 - - hpack=4.1.0 - - httpcore=1.0.2 - - httpx=0.28.1 - - hyperframe=6.1.0 - - icu=75.1 - - idna=3.7 - - importlib-metadata=8.6.1 - - importlib_resources=6.5.2 - - ipykernel=6.29.5 - - ipython=9.1.0 - - ipython_pygments_lexers=1.1.1 - - isoduration=20.11.0 - - jedi=0.19.2 - - jinja2=3.1.6 - - joblib=1.4.2 - - json5=0.9.25 - - jsonpointer=3.0.0 - - jsonschema=4.23.0 - - jsonschema-specifications=2023.7.1 - - jsonschema-with-format-nongpl=4.23.0 - - jupyter-lsp=2.2.5 - - jupyter_client=8.6.3 - - jupyter_core=5.7.2 - - jupyter_events=0.12.0 - - jupyter_server=2.15.0 - - jupyter_server_terminals=0.5.3 - - jupyterlab=4.3.4 - - jupyterlab_pygments=0.3.0 - - jupyterlab_server=2.27.3 - - keyutils=1.6.1 - - kiwisolver=1.4.7 - - krb5=1.21.3 - - lcms2=2.17 - - ld_impl_linux-64=2.43 - - lerc=4.0.0 - - libblas=3.9.0 - - libboost=1.86.0 - - libboost-python=1.86.0 - - libbrotlicommon=1.1.0 - - libbrotlidec=1.1.0 - - libbrotlienc=1.1.0 - - libcblas=3.9.0 - - libcxx=20.1.4 - - libcxxabi=20.1.4 - - libdeflate=1.22 - - libedit=3.1.20191231 - - libexpat=2.7.0 - - libffi=3.4.4 - - libfreetype=2.13.3 - - libfreetype6=2.13.3 - - libgcc=15.1.0 - - libgcc-ng=15.1.0 - - libgfortran=3.0.0 - - libgfortran-ng=11.3.0 - - libgfortran5=11.3.0 - - libglib=2.84.0 - - libgomp=15.1.0 - - libiconv=1.18 - - libjpeg-turbo=3.1.0 - - liblapack=3.9.0 - - liblapacke=3.9.0 - - liblzma=5.6.4 - - liblzma-devel=5.6.4 - - libnsl=2.0.1 - - libntlm=1.8 - - libopenblas=0.3.29 - - libpng=1.6.47 - - libpq=17.5 - - librdkit=2025.03.2 - - libsodium=1.0.18 - - libsqlite=3.45.2 - - libstdcxx=15.1.0 - - libstdcxx-ng=15.1.0 - - libtiff=4.7.0 - - libuuid=2.38.1 - - libwebp-base=1.5.0 - - libxcb=1.17.0 - - libxcrypt=4.4.36 - - libzlib=1.3.1 - - llvm-openmp=20.1.4 - - markupsafe=3.0.2 - - matplotlib-base=3.10.1 - - matplotlib-inline=0.1.6 - - mistune=3.1.2 - - munkres=1.1.4 - - nbclient=0.10.2 - - nbconvert-core=7.16.6 - - nbformat=5.10.4 - - ncurses=6.4.20240210 - - nest-asyncio=1.6.0 - - networkx=3.4.2 - - nomkl=3.0 - - notebook=7.3.2 - - notebook-shim=0.2.4 - - numpy=2.2.5 - - openblas=0.3.29 - - openblas-devel=0.3.29 - - openjpeg=2.5.3 - - openldap=2.6.9 - - openssl=3.5.0 - - overrides=7.4.0 - - packaging=25.0 - - pandas=2.2.3 - - pandocfilters=1.5.0 - - parso=0.8.4 - - pcre2=10.44 - - pexpect=4.8.0 - - pickleshare=0.7.5 - - pillow=11.2.1 - - pip=25.1.1 - - pixman=0.46.0 - - pkgutil-resolve-name=1.3.10 - - platformdirs=4.3.7 - - prometheus_client=0.21.1 - - prompt-toolkit=3.0.43 - - prompt_toolkit=3.0.43 - - psutil=5.9.0 - - pthread-stubs=0.4 - - ptyprocess=0.7.0 - - pure_eval=0.2.2 - - pycairo=1.28.0 - - pycparser=2.21 - - pydantic=2.11.4 - - pydantic-core=2.33.2 - - pygments=2.19.1 - - pyparsing=3.2.3 - - pysocks=1.7.1 - - python=3.11.8 - - python-dateutil=2.9.0.post0 - - python-fastjsonschema=2.20.0 - - python-json-logger=3.2.1 - - python-tzdata=2025.2 - - python_abi=3.11 - - pytz=2025.2 - - pyyaml=6.0.2 - - pyzmq=26.2.0 - - qhull=2020.2 - - rdkit=2025.03.2 - - readline=8.2 - - referencing=0.30.2 - - reportlab=4.4.0 - - requests=2.32.3 - - rfc3339-validator=0.1.4 - - rfc3986-validator=0.1.1 - - rlpycairo=0.2.0 - - rpds-py=0.22.3 - - scikit-learn=1.6.1 - - scipy=1.15.2 - - send2trash=1.8.2 - - setuptools=78.1.1 - - six=1.17.0 - - sniffio=1.3.0 - - soupsieve=2.5 - - sqlalchemy=2.0.40 - - sqlite=3.45.2 - - stack_data=0.2.0 - - terminado=0.17.1 - - threadpoolctl=3.5.0 - - tinycss2=1.4.0 - - tk=8.6.13 - - tomli=2.2.1 - - tornado=6.4.2 - - traitlets=5.14.3 - - types-python-dateutil=2.9.0.20241206 - - typing-extensions=4.13.2 - - typing-inspection=0.4.0 - - typing_extensions=4.13.2 - - typing_utils=0.1.0 - - tzdata=2025b - - unicodedata2=16.0.0 - - uri-template=1.3.0 - - urllib3=2.3.0 - - wcwidth=0.2.5 - - webcolors=24.11.1 - - webencodings=0.5.1 - - websocket-client=1.8.0 - - wheel=0.45.1 - - xorg-libice=1.1.2 - - xorg-libsm=1.2.6 - - xorg-libx11=1.8.12 - - xorg-libxau=1.0.12 - - xorg-libxdmcp=1.1.5 - - xorg-libxext=1.3.6 - - xorg-libxrender=0.9.12 - - xz=5.6.4 - - xz-gpl-tools=5.6.4 - - xz-tools=5.6.4 - - yaml=0.2.5 - - zeromq=4.3.5 - - zipp=3.21.0 - - zlib=1.3.1 - - zstandard=0.23.0 - - zstd=1.5.7 - - pip: - - ase==3.25.0 - - cosymlib==0.11.1 - - huckelpy==0.2.3 - - pointgroup==0.4.3 - - symgroupy==0.5.11 - - wfnsympy==0.3.5 diff --git a/environment_no_builds.yml b/environment_no_builds.yml deleted file mode 100644 index 2ef63d142..000000000 --- a/environment_no_builds.yml +++ /dev/null @@ -1,212 +0,0 @@ -name: cell2mol_v2 -channels: - - conda-forge - - defaults -dependencies: - - annotated-types=0.7.0 - - anyio=4.7.0 - - appnope=0.1.2 - - argon2-cffi=21.3.0 - - argon2-cffi-bindings=21.2.0 - - asttokens=3.0.0 - - async-lru=2.0.4 - - attrs=24.3.0 - - babel=2.16.0 - - beautifulsoup4=4.12.3 - - blas=2.131 - - blas-devel=3.9.0 - - bleach=6.2.0 - - brotli=1.1.0 - - brotli-bin=1.1.0 - - brotli-python=1.0.9 - - bzip2=1.0.8 - - ca-certificates=2025.4.26 - - cairo=1.18.4 - - certifi=2025.4.26 - - cffi=1.17.1 - - chardet=5.2.0 - - charset-normalizer=3.3.2 - - comm=0.2.1 - - contourpy=1.3.2 - - cycler=0.12.1 - - cyrus-sasl=2.1.27 - - debugpy=1.8.11 - - decorator=5.1.1 - - defusedxml=0.7.1 - - executing=0.8.3 - - font-ttf-dejavu-sans-mono=2.37 - - font-ttf-inconsolata=3.000 - - font-ttf-source-code-pro=2.038 - - font-ttf-ubuntu=0.83 - - fontconfig=2.15.0 - - fonts-conda-ecosystem=1 - - fonts-conda-forge=1 - - fonttools=4.57.0 - - freetype=2.13.3 - - freetype-py=2.3.0 - - greenlet=3.2.1 - - h11=0.14.0 - - httpcore=1.0.2 - - httpx=0.28.1 - - icu=75.1 - - idna=3.7 - - ipykernel=6.29.5 - - ipython=9.1.0 - - ipython_pygments_lexers=1.1.1 - - jedi=0.19.2 - - jinja2=3.1.6 - - joblib=1.4.2 - - json5=0.9.25 - - jsonschema=4.23.0 - - jsonschema-specifications=2023.7.1 - - jupyter-lsp=2.2.5 - - jupyter_client=8.6.3 - - jupyter_core=5.7.2 - - jupyter_events=0.12.0 - - jupyter_server=2.15.0 - - jupyter_server_terminals=0.5.3 - - jupyterlab=4.3.4 - - jupyterlab_pygments=0.3.0 - - jupyterlab_server=2.27.3 - - kiwisolver=1.4.7 - - krb5=1.21.3 - - lcms2=2.17 - - lerc=4.0.0 - - libblas=3.9.0 - - libboost=1.86.0 - - libboost-python=1.86.0 - - libbrotlicommon=1.1.0 - - libbrotlidec=1.1.0 - - libbrotlienc=1.1.0 - - libcblas=3.9.0 - - libcxx=20.1.4 - - libdeflate=1.22 - - libedit=3.1.20191231 - - libexpat=2.7.0 - - libffi=3.4.4 - - libfreetype=2.13.3 - - libfreetype6=2.13.3 - - libgfortran=5.0.0 - - libgfortran5=11.3.0 - - libglib=2.84.0 - - libiconv=1.18 - - libintl=0.24.1 - - libjpeg-turbo=3.1.0 - - liblapack=3.9.0 - - liblapacke=3.9.0 - - libntlm=1.8 - - libopenblas=0.3.29 - - libpng=1.6.47 - - libpq=17.5 - - librdkit=2025.03.2 - - libsodium=1.0.18 - - libsqlite=3.45.2 - - libtiff=4.7.0 - - libwebp-base=1.5.0 - - libxcb=1.17.0 - - libzlib=1.3.1 - - llvm-openmp=20.1.4 - - markupsafe=3.0.2 - - matplotlib-base=3.10.1 - - matplotlib-inline=0.1.6 - - mistune=3.1.2 - - munkres=1.1.4 - - nbclient=0.10.2 - - nbconvert-core=7.16.6 - - nbformat=5.10.4 - - ncurses=6.4 - - nest-asyncio=1.6.0 - - networkx=3.4.2 - - nomkl=3.0 - - notebook=7.3.2 - - notebook-shim=0.2.4 - - numpy=2.2.5 - - openblas=0.3.29 - - openblas-devel=0.3.29 - - openjpeg=2.5.3 - - openldap=2.6.9 - - openssl=3.5.0 - - overrides=7.4.0 - - packaging=25.0 - - pandas=2.2.3 - - pandocfilters=1.5.0 - - parso=0.8.4 - - pcre2=10.44 - - pexpect=4.8.0 - - pillow=11.2.1 - - pip=25.1 - - pixman=0.46.0 - - platformdirs=4.3.7 - - prometheus_client=0.21.1 - - prompt-toolkit=3.0.43 - - prompt_toolkit=3.0.43 - - psutil=5.9.0 - - pthread-stubs=0.4 - - ptyprocess=0.7.0 - - pure_eval=0.2.2 - - pycairo=1.28.0 - - pycparser=2.21 - - pydantic=2.11.4 - - pydantic-core=2.33.2 - - pygments=2.19.1 - - pyparsing=3.2.3 - - pysocks=1.7.1 - - python=3.11.8 - - python-dateutil=2.9.0.post0 - - python-fastjsonschema=2.20.0 - - python-json-logger=3.2.1 - - python-tzdata=2025.2 - - python_abi=3.11 - - pytz=2025.2 - - pyyaml=6.0.2 - - pyzmq=26.2.0 - - qhull=2020.2 - - rdkit=2025.03.2 - - readline=8.2 - - referencing=0.30.2 - - reportlab=4.4.0 - - requests=2.32.3 - - rfc3339-validator=0.1.4 - - rfc3986-validator=0.1.1 - - rlpycairo=0.2.0 - - rpds-py=0.22.3 - - scikit-learn=1.6.1 - - scipy=1.15.2 - - send2trash=1.8.2 - - setuptools=78.1.1 - - six=1.17.0 - - sniffio=1.3.0 - - soupsieve=2.5 - - sqlalchemy=2.0.40 - - sqlite=3.45.2 - - stack_data=0.2.0 - - terminado=0.17.1 - - threadpoolctl=3.5.0 - - tinycss2=1.4.0 - - tk=8.6.13 - - tornado=6.4.2 - - traitlets=5.14.3 - - typing-extensions=4.13.2 - - typing-inspection=0.4.0 - - typing_extensions=4.13.2 - - tzdata=2025b - - unicodedata2=16.0.0 - - urllib3=2.3.0 - - wcwidth=0.2.5 - - webencodings=0.5.1 - - websocket-client=1.8.0 - - wheel=0.45.1 - - xorg-libxau=1.0.12 - - xorg-libxdmcp=1.1.5 - - xz=5.6.4 - - yaml=0.2.5 - - zeromq=4.3.5 - - zlib=1.3.1 - - zstd=1.5.7 - - pip: - - ase==3.25.0 - - cosymlib==0.11.1 - - huckelpy==0.2.3 - - pointgroup==0.4.3 - - symgroupy==0.5.11 - - wfnsympy==0.3.5 diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 000000000..f3b8dd48d --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,36 @@ +[project] +name = "cell2mol" +version = "2.0.0" +description = "Encoding chemistry to interpret crystallographic data" +readme = "README.md" +requires-python = ">=3.9" +dependencies = [ + "ase>=3.26.0", + "networkx>=3.2.1", + "numpy>=2.0.2", + "pandas>=2.3.3", + "pydantic>=2.12.2", + "pydantic-numpy>=6.0.0", + "pyyaml>=6.0.3", + "rdkit>=2025.9.1", + "scikit-learn>=1.6.1", + "scipy>=1.13.1", +] + +[dependency-groups] +test = [ + "pytest>=7.0", +] +dev = [ + "ipython>=8.18.0,<9.0.0", + "pre-commit>=4.0.0", + "ruff>=0.14.0", + { include-group = "test" }, +] + +[tool.ruff] +fix = true + +[build-system] +requires = ["hatchling"] +build-backend = "hatchling.build" diff --git a/requirements.txt b/requirements.txt index 8b12b0746..476c02937 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,13 +1,9 @@ -ipython==8.3.0 -ipywidgets==8.0.2 -markdown==3.3.4 -networkx==2.8.7 -numpy==1.23.1 -pandas==1.5.0 -py3dmol==1.8.1 -pycifrw==4.4.3 -pytest==7.1.3 -rdkit==2022.3.5 -scipy==1.9.1 -setuptools==65.4.1 -cosymlib==0.10.9 +numpy +networkx +rdkit +ase +scipy +scikit-learn +pydantic +pyyaml +pandas diff --git a/requirements_new.txt b/requirements_new.txt deleted file mode 100644 index 26e1e32d2..000000000 --- a/requirements_new.txt +++ /dev/null @@ -1,15 +0,0 @@ -python < 3.12 -numpy -networkx -rdkit -ase -cosymlib -matplotlib -PyYAML>=5.1 -symgroupy>=0.5.9 -wfnsympy>=0.3.5 -huckelpy>=0.2 -pointgroup>=0.4 -scipy -scikit-learn -pydantic diff --git a/cell2mol/test/AFUGIS/cif2cell.err b/tests/__init__.py similarity index 100% rename from cell2mol/test/AFUGIS/cif2cell.err rename to tests/__init__.py diff --git a/tests/fixtures/Cells_YOXKUS.cell b/tests/fixtures/Cells_YOXKUS.cell new file mode 100644 index 000000000..c19915313 Binary files /dev/null and b/tests/fixtures/Cells_YOXKUS.cell differ diff --git a/tests/test_serialization.py b/tests/test_serialization.py new file mode 100644 index 000000000..839dabfa9 --- /dev/null +++ b/tests/test_serialization.py @@ -0,0 +1,499 @@ +"""Tests for JSON serialization/deserialization with central object store. + +The new serialization format uses a central object store pattern: +- All objects are stored exactly once in an "objects" dict +- All references between objects use UUID strings +- This enables true object identity and round-trip serialization +""" + +from pathlib import Path + +import pytest + +from cell2mol.classes import Cells, Group, Metal +from cell2mol.utils.pydantic import get_type +from cell2mol.utils.type_registry import TypeRegistry + + +@pytest.fixture +def cells_pickle_path(): + """Path to the test cells pickle file.""" + path = Path(__file__).parent / "fixtures" / "Cells_YOXKUS.cell" + if not path.exists(): + pytest.skip(f"Test file not found: {path}") + return path + + +def save_and_reload(cells: Cells, tmp_path: Path) -> Cells: + """Helper to save as JSON and reload.""" + json_path = tmp_path / "test.json" + cells.save(json_path, format="json") + return Cells.load(json_path, format="json") + + +class TestSerialization: + """Test serialization round-trip.""" + + def test_load_pickle_save_json_load_json(self, cells_pickle_path, tmp_path): + """Test that we can load pickle, save as JSON, and reload.""" + cells = Cells.load(cells_pickle_path, format="pickle") + cells_loaded = save_and_reload(cells, tmp_path) + + assert cells_loaded.name == cells.name + assert len(cells_loaded.reference.refmoleclist or []) == len( + cells.reference.refmoleclist or [] + ) + + def test_json_to_json_round_trip(self, cells_pickle_path, tmp_path): + """Test JSON -> JSON -> JSON round-trip works correctly.""" + cells = Cells.load(cells_pickle_path, format="pickle") + + # First round: pickle -> JSON -> load + json_path1 = tmp_path / "test1.json" + cells.save(json_path1, format="json") + cells1 = Cells.load(json_path1, format="json") + + # Second round: JSON -> JSON -> load + json_path2 = tmp_path / "test2.json" + cells1.save(json_path2, format="json") + cells2 = Cells.load(json_path2, format="json") + + # Verify data integrity after two round-trips + assert cells2.name == cells.name + mol = cells2.reference.refmoleclist[0] + for lig in mol.ligands or []: + for metal in lig.metals or []: + assert isinstance(metal, Metal), ( + "Metal should still be resolved after 2 round-trips" + ) + + def test_multiple_round_trips(self, cells_pickle_path, tmp_path): + """Test that multiple round-trips preserve data integrity.""" + cells = Cells.load(cells_pickle_path, format="pickle") + + # Do 5 round-trips + current = cells + for i in range(5): + json_path = tmp_path / f"test_{i}.json" + current.save(json_path, format="json") + current = Cells.load(json_path, format="json") + + # Verify final state + assert current.name == cells.name + mol = current.reference.refmoleclist[0] + assert isinstance(mol.metals[0], Metal) + assert mol.metals[0] is mol.ligands[0].metals[0] + + +class TestMetalsResolution: + """Test that metal references are properly resolved.""" + + def test_ligand_metals_are_objects(self, cells_pickle_path, tmp_path): + """Test that ligand.metals are Metal objects, not UUID strings.""" + cells = Cells.load(cells_pickle_path, format="pickle") + cells_loaded = save_and_reload(cells, tmp_path) + + metals_checked = 0 + for mol in cells_loaded.reference.refmoleclist or []: + for lig in mol.ligands or []: + assert lig.metals is not None, "Ligand should have metals" + for metal in lig.metals: + assert isinstance(metal, Metal), ( + f"Metal should be Metal object, not {type(metal)}: {metal}" + ) + assert hasattr(metal, "label"), "Metal should have label attribute" + metals_checked += 1 + + assert metals_checked > 0, "Should have checked at least one metal" + + def test_group_metals_are_objects(self, cells_pickle_path, tmp_path): + """Test that group.metals and group.closest_metal are Metal objects.""" + cells = Cells.load(cells_pickle_path, format="pickle") + cells_loaded = save_and_reload(cells, tmp_path) + + groups_with_metals_checked = 0 + + for mol in cells_loaded.reference.refmoleclist or []: + for lig in mol.ligands or []: + for group in lig.groups or []: + assert isinstance(group, Group), ( + f"Group should be Group object: {type(group)}" + ) + + # Check group.metals + if group.metals: + for metal in group.metals: + assert isinstance(metal, Metal), ( + f"Group.metals should contain Metal objects: {type(metal)}" + ) + groups_with_metals_checked += 1 + + # Check group.closest_metal + if group.closest_metal is not None: + assert isinstance(group.closest_metal, Metal), ( + f"Group.closest_metal should be Metal: {type(group.closest_metal)}" + ) + + assert groups_with_metals_checked > 0, ( + "Should have checked at least one group with metals" + ) + + def test_metal_parents_are_objects(self, cells_pickle_path, tmp_path): + """Test that metal.parents are properly resolved to objects.""" + cells = Cells.load(cells_pickle_path, format="pickle") + cells_loaded = save_and_reload(cells, tmp_path) + + parents_checked = 0 + for mol in cells_loaded.reference.refmoleclist or []: + for metal in mol.metals or []: + if metal.parents: + for parent in metal.parents: + assert not isinstance(parent, str), ( + f"Parent should be object, not UUID: {parent}" + ) + parents_checked += 1 + + assert parents_checked > 0, "Should have checked at least one parent" + + +class TestObjectIdentity: + """Test that same UUID = same Python object instance.""" + + def test_molecule_metal_is_ligand_metal(self, cells_pickle_path, tmp_path): + """Test that mol.metals[i] is the same instance as lig.metals[j] when UUIDs match.""" + cells = Cells.load(cells_pickle_path, format="pickle") + cells_loaded = save_and_reload(cells, tmp_path) + + mol = cells_loaded.reference.refmoleclist[0] + mol_metal = mol.metals[0] + + # Track if we found and verified at least one match + matches_found = 0 + + for lig in mol.ligands or []: + for lig_metal in lig.metals or []: + if lig_metal.id == mol_metal.id: + assert mol_metal is lig_metal, ( + f"Metal with same UUID should be same instance.\n" + f" mol_metal id(): {id(mol_metal)}\n" + f" lig_metal id(): {id(lig_metal)}\n" + f" UUID: {mol_metal.id}" + ) + matches_found += 1 + + assert matches_found > 0, ( + f"Should find at least one matching metal. " + f"mol_metal.id={mol_metal.id}, " + f"ligand metals: {[m.id for lig in (mol.ligands or []) for m in (lig.metals or [])]}" + ) + + def test_group_metal_is_molecule_metal(self, cells_pickle_path, tmp_path): + """Test that group.metals[i] is the same instance as mol.metals[j].""" + cells = Cells.load(cells_pickle_path, format="pickle") + cells_loaded = save_and_reload(cells, tmp_path) + + mol = cells_loaded.reference.refmoleclist[0] + mol_metals_by_id: dict[str, Metal] = {} + for m in mol.metals or []: + mol_metals_by_id[m.id] = m + + matches_found = 0 + for lig in mol.ligands or []: + for group in lig.groups or []: + for group_metal in group.metals or []: + if group_metal.id in mol_metals_by_id: + mol_metal = mol_metals_by_id[group_metal.id] + assert group_metal is mol_metal, ( + "Group metal should be same instance as molecule metal" + ) + matches_found += 1 + + assert matches_found > 0, "Should find at least one matching metal in groups" + + +class TestUnitcell: + """Test that unitcell is also properly deserialized.""" + + def test_unitcell_molecules_resolved(self, cells_pickle_path, tmp_path): + """Test that unitcell molecules are properly resolved.""" + cells = Cells.load(cells_pickle_path, format="pickle") + cells_loaded = save_and_reload(cells, tmp_path) + + assert cells_loaded.unitcell is not None, "Unitcell should exist" + assert cells_loaded.unitcell.moleclist is not None, ( + "Unitcell should have molecules" + ) + + metals_checked = 0 + for mol in cells_loaded.unitcell.moleclist or []: + for lig in mol.ligands or []: + for metal in lig.metals or []: + assert isinstance(metal, Metal), ( + f"Unitcell ligand metal should be Metal object: {type(metal)}" + ) + metals_checked += 1 + + assert metals_checked > 0, "Should have checked at least one unitcell metal" + + +class TestObjectStore: + """Test the central object store format.""" + + def test_no_duplicate_objects_in_json(self, cells_pickle_path, tmp_path): + """Test that each object appears exactly once in the JSON store.""" + import json + + cells = Cells.load(cells_pickle_path, format="pickle") + json_path = tmp_path / "test.json" + cells.save(json_path, format="json") + + with open(json_path) as f: + data = json.load(f) + + assert data["_format"] == "cell2mol-store" + assert "objects" in data + assert "root" in data + + # Count objects by type + type_counts: dict[str, int] = {} + for obj_id, obj_data in data["objects"].items(): + obj_type = obj_data["_type"] + type_counts[obj_type] = type_counts.get(obj_type, 0) + 1 + + # Each UUID should appear exactly once as a key + uuids = list(data["objects"].keys()) + assert len(uuids) == len(set(uuids)), "Each UUID should be unique" + + print(f"Object counts by type: {type_counts}") + + def test_all_references_are_uuids(self, cells_pickle_path, tmp_path): + """Test that all object references in the JSON are UUID strings.""" + import json + + cells = Cells.load(cells_pickle_path, format="pickle") + json_path = tmp_path / "test.json" + cells.save(json_path, format="json") + + with open(json_path) as f: + data = json.load(f) + + objects = data["objects"] + valid_uuids = set(objects.keys()) + + def check_references(value, path=""): + """Check that string values that look like UUIDs are valid references.""" + if isinstance(value, str): + # If it looks like a UUID and is in our valid set, it's a reference + if len(value) == 36 and value.count("-") == 4: + if value in valid_uuids: + return # Valid reference + elif isinstance(value, list): + for i, item in enumerate(value): + check_references(item, f"{path}[{i}]") + elif isinstance(value, dict): + for k, v in value.items(): + if k not in ("_type", "id"): + check_references(v, f"{path}.{k}") + + for obj_id, obj_data in objects.items(): + check_references(obj_data, obj_id) + + +class TestTypeRegistry: + """Test the type registry for deserialization.""" + + def test_all_classes_registered(self): + """Test that all cell2mol classes are in the type registry.""" + # Import to trigger registration + + expected_types = [ + "Atom", + "Bond", + "Cell", + "Cells", + "ChargeState", + "Group", + "Ligand", + "Metal", + "Molecule", + "Protonation", + "Specie", + ] + + registry = TypeRegistry.get_instance() + for type_name in expected_types: + assert type_name in registry, f"{type_name} should be registered" + assert get_type(type_name) is not None + + def test_unknown_type_raises_error(self): + """Test that unknown types raise a clear error.""" + with pytest.raises(ValueError, match="Unknown type"): + get_type("NonExistentClass") + + +class TestGroupsResolution: + """Test that group references are properly resolved.""" + + def test_ligand_groups_are_objects(self, cells_pickle_path, tmp_path): + """Test that ligand.groups are Group objects.""" + cells = Cells.load(cells_pickle_path, format="pickle") + cells_loaded = save_and_reload(cells, tmp_path) + + groups_checked = 0 + for mol in cells_loaded.reference.refmoleclist or []: + for lig in mol.ligands or []: + for group in lig.groups or []: + assert isinstance(group, Group), ( + f"Should be Group object: {type(group)}" + ) + assert hasattr(group, "formula"), "Group should have formula" + groups_checked += 1 + + assert groups_checked > 0, "Should have checked at least one group" + + +class TestEdgeCases: + """Test edge cases and potential fragility.""" + + def test_numpy_arrays_preserved(self, cells_pickle_path, tmp_path): + """Test that numpy arrays are preserved after round-trip.""" + import numpy as np + + cells = Cells.load(cells_pickle_path, format="pickle") + cells_loaded = save_and_reload(cells, tmp_path) + + # cell_vector and cell_param should be numpy arrays + assert isinstance(cells_loaded.cell_vector, np.ndarray), ( + f"cell_vector should be ndarray, got {type(cells_loaded.cell_vector)}" + ) + assert isinstance(cells_loaded.cell_param, np.ndarray), ( + f"cell_param should be ndarray, got {type(cells_loaded.cell_param)}" + ) + + # Values should match + np.testing.assert_array_almost_equal( + cells_loaded.cell_vector, cells.cell_vector + ) + np.testing.assert_array_almost_equal(cells_loaded.cell_param, cells.cell_param) + + def test_rdkit_mol_preserved(self, cells_pickle_path, tmp_path): + """Test that RDKit Mol objects are preserved after round-trip.""" + from rdkit.Chem import Mol + + cells = Cells.load(cells_pickle_path, format="pickle") + cells_loaded = save_and_reload(cells, tmp_path) + + # Find a species with rdkit_obj + rdkit_checked = 0 + for mol in cells_loaded.reference.refmoleclist or []: + if mol.rdkit_obj is not None: + assert isinstance(mol.rdkit_obj, Mol), ( + f"rdkit_obj should be Mol, got {type(mol.rdkit_obj)}" + ) + rdkit_checked += 1 + + for lig in mol.ligands or []: + if lig.rdkit_obj is not None: + assert isinstance(lig.rdkit_obj, Mol), ( + f"Ligand rdkit_obj should be Mol, got {type(lig.rdkit_obj)}" + ) + rdkit_checked += 1 + + # Note: rdkit_obj might be None in test data, so we just log + print(f"Checked {rdkit_checked} RDKit Mol objects") + + def test_charge_state_fields_preserved(self, cells_pickle_path, tmp_path): + """Test that ChargeState computed fields are preserved.""" + cells = Cells.load(cells_pickle_path, format="pickle") + cells_loaded = save_and_reload(cells, tmp_path) + + charge_states_checked = 0 + for mol in cells_loaded.reference.refmoleclist or []: + for lig in mol.ligands or []: + if hasattr(lig, "possible_cs") and lig.possible_cs: + for cs in lig.possible_cs: + # These should have values (computed originally, saved, restored) + assert cs.uncorr_abstotal is not None, ( + "uncorr_abstotal should be set" + ) + assert cs.corr_total_charge is not None, ( + "corr_total_charge should be set" + ) + charge_states_checked += 1 + + print(f"Checked {charge_states_checked} ChargeState objects") + + def test_frozen_fields_preserved(self, cells_pickle_path, tmp_path): + """Test that frozen fields (version, type) are preserved correctly.""" + cells = Cells.load(cells_pickle_path, format="pickle") + cells_loaded = save_and_reload(cells, tmp_path) + + assert cells_loaded.version == cells.version + assert cells_loaded.type == cells.type + + # Check nested objects too + for mol in cells_loaded.reference.refmoleclist or []: + assert mol.type == "specie" + + def test_atom_bonds_resolved(self, cells_pickle_path, tmp_path): + """Test that Atom.bonds list is resolved (bonds are Bond objects, not UUIDs).""" + + cells = Cells.load(cells_pickle_path, format="pickle") + cells_loaded = save_and_reload(cells, tmp_path) + + atoms_with_bonds_checked = 0 + for mol in cells_loaded.reference.refmoleclist or []: + for atom in mol.atoms or []: + if atom.bonds: + for bond in atom.bonds: + # Bond should be an object, not a UUID string + assert not isinstance(bond, str), ( + f"Bond should be object, not UUID string: {bond}" + ) + atoms_with_bonds_checked += 1 + + # Not all molecules may have bonds populated, so this may be 0 + # Just ensure we don't crash when iterating + + def test_bond_atom_refs_resolved(self, cells_pickle_path, tmp_path): + """Test that Bond.atom1 and Bond.atom2 are resolved Atom objects.""" + from cell2mol.classes import Atom + + cells = Cells.load(cells_pickle_path, format="pickle") + cells_loaded = save_and_reload(cells, tmp_path) + + bonds_checked = 0 + for mol in cells_loaded.reference.refmoleclist or []: + for atom in mol.atoms or []: + if atom.bonds: + for bond in atom.bonds: + assert isinstance(bond.atom1, Atom), ( + f"atom1 should be Atom, got {type(bond.atom1)}" + ) + assert isinstance(bond.atom2, Atom), ( + f"atom2 should be Atom, got {type(bond.atom2)}" + ) + assert hasattr(bond.atom1, "label") + assert hasattr(bond.atom2, "coord") + bonds_checked += 1 + + assert bonds_checked > 0, "Should have checked at least one bond" + + def test_deeply_nested_references(self, cells_pickle_path, tmp_path): + """Test that deeply nested references are all resolved.""" + cells = Cells.load(cells_pickle_path, format="pickle") + cells_loaded = save_and_reload(cells, tmp_path) + + # Navigate deep: Cells -> Cell -> Molecule -> Ligand -> Group -> Metal -> parents + mol = cells_loaded.reference.refmoleclist[0] + lig = mol.ligands[0] + group = lig.groups[0] + metal = group.metals[0] if group.metals else None + + if metal and metal.parents: + parent = metal.parents[0] + # Parent should be a Molecule/Specie, not a string + assert not isinstance(parent, str), ( + "Deeply nested parent should be resolved" + ) + assert hasattr(parent, "formula"), "Parent should have formula attribute" diff --git a/utils/BVS/Metal_Oxidation_State_assignment_BVS.ipynb b/utils/BVS/Metal_Oxidation_State_assignment_BVS.ipynb index 9d4b2e91e..792b33ddd 100644 --- a/utils/BVS/Metal_Oxidation_State_assignment_BVS.ipynb +++ b/utils/BVS/Metal_Oxidation_State_assignment_BVS.ipynb @@ -7,7 +7,6 @@ "metadata": {}, "outputs": [], "source": [ - "import numpy as np\n", "import pandas as pd\n", "from ast import literal_eval" ] @@ -19,7 +18,7 @@ "metadata": {}, "outputs": [], "source": [ - "metal = \"Cr\" # Fe Mn Ru Re Cr Co Ni Cu" + "metal = \"Cr\" # Fe Mn Ru Re Cr Co Ni Cu" ] }, { @@ -30,10 +29,10 @@ "outputs": [], "source": [ "# Metal Oxidation State (OS) determined by cell2mol or BVS (for only cases that cell reconstruction finished successfully)\n", - "df_bvs = pd.read_csv(f\"results/BVS_result_{metal}.txt\",delimiter=\"\\t\") \n", + "df_bvs = pd.read_csv(f\"results/BVS_result_{metal}.txt\", delimiter=\"\\t\")\n", "\n", "# Metal OS extracted from .cif file\n", - "df_cif = pd.read_csv(f\"results/cif_charge_{metal}.txt\",delimiter=\"\\t\") " + "df_cif = pd.read_csv(f\"results/cif_charge_{metal}.txt\", delimiter=\"\\t\")" ] }, { @@ -64,8 +63,8 @@ "source": [ "# Check the metal element\n", "print(len(df_bvs))\n", - "print(len(df_bvs['refcode'].unique()))\n", - "df_bvs['metal'].unique()" + "print(len(df_bvs[\"refcode\"].unique()))\n", + "df_bvs[\"metal\"].unique()" ] }, { @@ -96,8 +95,8 @@ "source": [ "# Check the metal element\n", "print(len(df_cif))\n", - "print(len(df_cif['refcode'].unique()))\n", - "df_cif['metal'].unique()" + "print(len(df_cif[\"refcode\"].unique()))\n", + "df_cif[\"metal\"].unique()" ] }, { @@ -107,13 +106,15 @@ "metadata": {}, "outputs": [], "source": [ - "df = df_bvs.merge(df_cif, on='refcode', how='left')\n", - "df = df.drop(['metal_y', 'unique_indices'], axis=1)\n", - "df = df.rename(columns={'metal_x': 'metal'})\n", - "df['dictionary'] = df.dictionary.apply(lambda x: literal_eval(str(x)))\n", - "cols = ['refcode', 'metal', 'charge_cif', 'charge_cell2mol', 'charge_BVS', 'dictionary']\n", - "df = df[cols] \n", - "df = df.rename(columns={'charge_cif': 'Cif', 'charge_cell2mol' :'cell2mol', 'charge_BVS' : 'BVS'})" + "df = df_bvs.merge(df_cif, on=\"refcode\", how=\"left\")\n", + "df = df.drop([\"metal_y\", \"unique_indices\"], axis=1)\n", + "df = df.rename(columns={\"metal_x\": \"metal\"})\n", + "df[\"dictionary\"] = df.dictionary.apply(lambda x: literal_eval(str(x)))\n", + "cols = [\"refcode\", \"metal\", \"charge_cif\", \"charge_cell2mol\", \"charge_BVS\", \"dictionary\"]\n", + "df = df[cols]\n", + "df = df.rename(\n", + " columns={\"charge_cif\": \"Cif\", \"charge_cell2mol\": \"cell2mol\", \"charge_BVS\": \"BVS\"}\n", + ")" ] }, { @@ -125,16 +126,21 @@ "source": [ "thre_max = 0.5\n", "\n", - "df['bvs_min'] = df.dictionary.apply(lambda x: sorted(x, key=x.get)[0])\n", - "df['min'] = df.dictionary.apply(lambda x: x[sorted(x, key=x.get)[0]])\n", - "df['bvs_second_min'] = df.dictionary.apply(lambda x: sorted(x, key=x.get)[1])\n", - "df['second_min'] = df.dictionary.apply(lambda x: x[sorted(x, key=x.get)[1]])\n", + "df[\"bvs_min\"] = df.dictionary.apply(lambda x: sorted(x, key=x.get)[0])\n", + "df[\"min\"] = df.dictionary.apply(lambda x: x[sorted(x, key=x.get)[0]])\n", + "df[\"bvs_second_min\"] = df.dictionary.apply(lambda x: sorted(x, key=x.get)[1])\n", + "df[\"second_min\"] = df.dictionary.apply(lambda x: x[sorted(x, key=x.get)[1]])\n", "\n", - "condition = (lambda x: \n", - " x[sorted(x, key=x.get)[1]]- x[sorted(x, key=x.get)[0]] # (second_min_delta - min_delta)\n", - " if (x[sorted(x, key=x.get)[0]] <= thre_max and x[sorted(x, key=x.get)[1]] <= thre_max) \n", - " else None)\n", - "df['diff'] = df.dictionary.apply(condition)" + "condition = (\n", + " lambda x: x[sorted(x, key=x.get)[1]]\n", + " - x[sorted(x, key=x.get)[0]] # (second_min_delta - min_delta)\n", + " if (\n", + " x[sorted(x, key=x.get)[0]] <= thre_max\n", + " and x[sorted(x, key=x.get)[1]] <= thre_max\n", + " )\n", + " else None\n", + ")\n", + "df[\"diff\"] = df.dictionary.apply(condition)" ] }, { @@ -426,8 +432,8 @@ } ], "source": [ - "print(len(df['refcode'].unique()))\n", - "df['metal'].unique()" + "print(len(df[\"refcode\"].unique()))\n", + "df[\"metal\"].unique()" ] }, { @@ -465,11 +471,15 @@ "\n", "# cell2mol works\n", "print(f\"\\ncell2mol works : {len(df[df['cell2mol'] != 9999])}\")\n", - "print(f\"cell2mol works, Same metal charge by cell2mol and cif : {len( df[(df['cell2mol'] == df['Cif']) & (df['cell2mol'] != 9999)] )}\")\n", - "print(f\"cell2mol works, Different metal charge by cell2mol and cif : : {len( df[(df['cell2mol'] != df['Cif']) & (df['cell2mol'] != 9999) ] )}\")\n", + "print(\n", + " f\"cell2mol works, Same metal charge by cell2mol and cif : {len(df[(df['cell2mol'] == df['Cif']) & (df['cell2mol'] != 9999)])}\"\n", + ")\n", + "print(\n", + " f\"cell2mol works, Different metal charge by cell2mol and cif : : {len(df[(df['cell2mol'] != df['Cif']) & (df['cell2mol'] != 9999)])}\"\n", + ")\n", "\n", "# cell2mol doesn't work ==> cell2mol code : 9999\n", - "print(f\"\\ncell2mol doesn't work : {len(df[df['cell2mol'] == 9999])}\") " + "print(f\"\\ncell2mol doesn't work : {len(df[df['cell2mol'] == 9999])}\")" ] }, { @@ -506,7 +516,9 @@ ], "source": [ "print(f\"Total cases : {len(df)}\")\n", - "print(f\"Missing bond valence paramenters for all oxidation states : {len(df[(df['min'] == 9999.0)])}\\n\") # BVS code : 9999" + "print(\n", + " f\"Missing bond valence paramenters for all oxidation states : {len(df[(df['min'] == 9999.0)])}\\n\"\n", + ") # BVS code : 9999" ] }, { @@ -534,9 +546,15 @@ } ], "source": [ - "print(f\"Only one OS available by BVS : {len( df[(df['min'] !=9999.0) & (df['second_min'] == 9999.0)] )}\")\n", - "print(f\"Only one OS available by BVS, delta > 0.5 : {len( df[(df['min'] > 0.5) & (df['min'] != 9999.0) & (df['second_min'] == 9999.0)])}\") # BVS code : 8888\n", - "print(f\"Only one OS available by BVS, delta <= 0.5 : {len( df[(df['min'] <= 0.5) & (df['min'] != 9999.0) & (df['second_min'] == 9999.0)])}\")" + "print(\n", + " f\"Only one OS available by BVS : {len(df[(df['min'] != 9999.0) & (df['second_min'] == 9999.0)])}\"\n", + ")\n", + "print(\n", + " f\"Only one OS available by BVS, delta > 0.5 : {len(df[(df['min'] > 0.5) & (df['min'] != 9999.0) & (df['second_min'] == 9999.0)])}\"\n", + ") # BVS code : 8888\n", + "print(\n", + " f\"Only one OS available by BVS, delta <= 0.5 : {len(df[(df['min'] <= 0.5) & (df['min'] != 9999.0) & (df['second_min'] == 9999.0)])}\"\n", + ")" ] }, { @@ -565,10 +583,18 @@ } ], "source": [ - "print(f\"More than one OS available by BVS : {len(df[(df['min'] !=9999.0) & (df['second_min'] != 9999.0)])}\")\n", - "print(f\"OS with smallest Δ > 0.5, Another OS with 2nd smallest Δ > 0.5 : {len( df[(df['min'] > 0.5) & (df['min'] !=9999.0) & (df['second_min'] != 9999.0)] )}\") # BVS code : 8888\n", - "print(f\"OS with smallest Δ ≤ 0.5, Another OS with 2nd smallest Δ > 0.5 : {len( df[(df['min'] <= 0.5) & (df['second_min'] > 0.5) & (df['min'] !=9999.0) & (df['second_min'] != 9999.0)] )}\")\n", - "print(f\"OS with smallest Δ ≤ 0.5, Another OS with 2nd smallest Δ ≤ 0.5 : {len( df[(df['min'] <= 0.5) & (df['second_min'] <= 0.5) & (df['min'] !=9999.0) & (df['second_min'] != 9999.0) ] )}\") # BVS code : 7777" + "print(\n", + " f\"More than one OS available by BVS : {len(df[(df['min'] != 9999.0) & (df['second_min'] != 9999.0)])}\"\n", + ")\n", + "print(\n", + " f\"OS with smallest Δ > 0.5, Another OS with 2nd smallest Δ > 0.5 : {len(df[(df['min'] > 0.5) & (df['min'] != 9999.0) & (df['second_min'] != 9999.0)])}\"\n", + ") # BVS code : 8888\n", + "print(\n", + " f\"OS with smallest Δ ≤ 0.5, Another OS with 2nd smallest Δ > 0.5 : {len(df[(df['min'] <= 0.5) & (df['second_min'] > 0.5) & (df['min'] != 9999.0) & (df['second_min'] != 9999.0)])}\"\n", + ")\n", + "print(\n", + " f\"OS with smallest Δ ≤ 0.5, Another OS with 2nd smallest Δ ≤ 0.5 : {len(df[(df['min'] <= 0.5) & (df['second_min'] <= 0.5) & (df['min'] != 9999.0) & (df['second_min'] != 9999.0)])}\"\n", + ") # BVS code : 7777" ] }, { @@ -595,8 +621,12 @@ } ], "source": [ - "print(f\"Same metal charge by BVS and cif : { len ( df[(df['Cif'] == df['bvs_min']) & (df['min'] != 9999.0)] ) }\")\n", - "print(f\"Different metal charge by BVS and cif : { len ( df[(df['Cif'] != df['bvs_min']) & (df['min'] != 9999.0)] ) }\")" + "print(\n", + " f\"Same metal charge by BVS and cif : {len(df[(df['Cif'] == df['bvs_min']) & (df['min'] != 9999.0)])}\"\n", + ")\n", + "print(\n", + " f\"Different metal charge by BVS and cif : {len(df[(df['Cif'] != df['bvs_min']) & (df['min'] != 9999.0)])}\"\n", + ")" ] }, { @@ -619,14 +649,26 @@ } ], "source": [ - "print(f\"Only one OS, BVS = cif : { len ( df[(df['min'] !=9999.0) & (df['second_min'] == 9999.0)& (df['Cif'] == df['bvs_min'])] ) }\")\n", - "print(f\"Only one OS, BVS != cif : { len ( df[(df['min'] !=9999.0) & (df['second_min'] == 9999.0)& (df['Cif'] != df['bvs_min'])] ) }\")\n", + "print(\n", + " f\"Only one OS, BVS = cif : {len(df[(df['min'] != 9999.0) & (df['second_min'] == 9999.0) & (df['Cif'] == df['bvs_min'])])}\"\n", + ")\n", + "print(\n", + " f\"Only one OS, BVS != cif : {len(df[(df['min'] != 9999.0) & (df['second_min'] == 9999.0) & (df['Cif'] != df['bvs_min'])])}\"\n", + ")\n", "\n", - "print(f\"Only one OS, delta > 0.5, BVS = cif : { len ( df[(df['min'] > 0.5) & (df['min'] != 9999.0) & (df['second_min'] == 9999.0) & (df['Cif'] == df['bvs_min'])] ) }\")\n", - "print(f\"Only one OS, delta > 0.5, BVS != cif : { len ( df[(df['min'] > 0.5) & (df['min'] != 9999.0) & (df['second_min'] == 9999.0) & (df['Cif'] != df['bvs_min'])] ) }\")\n", + "print(\n", + " f\"Only one OS, delta > 0.5, BVS = cif : {len(df[(df['min'] > 0.5) & (df['min'] != 9999.0) & (df['second_min'] == 9999.0) & (df['Cif'] == df['bvs_min'])])}\"\n", + ")\n", + "print(\n", + " f\"Only one OS, delta > 0.5, BVS != cif : {len(df[(df['min'] > 0.5) & (df['min'] != 9999.0) & (df['second_min'] == 9999.0) & (df['Cif'] != df['bvs_min'])])}\"\n", + ")\n", "\n", - "print(f\"Only one OS, delta <= 0.5, BVS = cif : { len ( df[(df['min'] <= 0.5) & (df['min'] != 9999.0) & (df['second_min'] == 9999.0) & (df['Cif'] == df['bvs_min'])] ) }\")\n", - "print(f\"Only one OS, delta <= 0.5, BVS != cif : { len ( df[(df['min'] <= 0.5) & (df['min'] != 9999.0) & (df['second_min'] == 9999.0) & (df['Cif'] != df['bvs_min'])] ) }\")" + "print(\n", + " f\"Only one OS, delta <= 0.5, BVS = cif : {len(df[(df['min'] <= 0.5) & (df['min'] != 9999.0) & (df['second_min'] == 9999.0) & (df['Cif'] == df['bvs_min'])])}\"\n", + ")\n", + "print(\n", + " f\"Only one OS, delta <= 0.5, BVS != cif : {len(df[(df['min'] <= 0.5) & (df['min'] != 9999.0) & (df['second_min'] == 9999.0) & (df['Cif'] != df['bvs_min'])])}\"\n", + ")" ] }, { @@ -660,26 +702,54 @@ } ], "source": [ - "print(f\"More than one OS, BVS = cif : { len( df[(df['min'] !=9999.0) & (df['second_min'] != 9999.0) & (df['Cif'] == df['bvs_min']) ] ) }\")\n", - "print(f\"More than one OS, BVS != cif : { len( df[(df['min'] !=9999.0) & (df['second_min'] != 9999.0) & (df['Cif'] != df['bvs_min']) ] ) }\")\n", + "print(\n", + " f\"More than one OS, BVS = cif : {len(df[(df['min'] != 9999.0) & (df['second_min'] != 9999.0) & (df['Cif'] == df['bvs_min'])])}\"\n", + ")\n", + "print(\n", + " f\"More than one OS, BVS != cif : {len(df[(df['min'] != 9999.0) & (df['second_min'] != 9999.0) & (df['Cif'] != df['bvs_min'])])}\"\n", + ")\n", "print(\"\")\n", - "print(f\"OS with smallest Δ > 0.5, Another OS with 2nd smallest Δ > 0.5, BVS = cif : { len( df[(df['min'] > 0.5) & (df['min'] !=9999.0) & (df['second_min'] != 9999.0) & (df['Cif'] == df['bvs_min'])]) }\")\n", - "print(f\"OS with smallest Δ > 0.5, Another OS with 2nd smallest Δ > 0.5, BVS != cif : { len( df[(df['min'] > 0.5) & (df['min'] !=9999.0) & (df['second_min'] != 9999.0) & (df['Cif'] != df['bvs_min'])]) }\")\n", - "print(f\"Another OS by BVS = cif : { len( df[(df['min'] > 0.5) & (df['min'] !=9999.0) & (df['second_min'] != 9999.0) & (df['Cif'] != df['bvs_min']) & (df['Cif'] == df['bvs_second_min']) ]) }\")\n", - "print(f\"Another OS by BVS != cif : { len( df[(df['min'] > 0.5) & (df['min'] !=9999.0) & (df['second_min'] != 9999.0) & (df['Cif'] != df['bvs_min']) & (df['Cif'] != df['bvs_second_min']) ]) }\")\n", + "print(\n", + " f\"OS with smallest Δ > 0.5, Another OS with 2nd smallest Δ > 0.5, BVS = cif : {len(df[(df['min'] > 0.5) & (df['min'] != 9999.0) & (df['second_min'] != 9999.0) & (df['Cif'] == df['bvs_min'])])}\"\n", + ")\n", + "print(\n", + " f\"OS with smallest Δ > 0.5, Another OS with 2nd smallest Δ > 0.5, BVS != cif : {len(df[(df['min'] > 0.5) & (df['min'] != 9999.0) & (df['second_min'] != 9999.0) & (df['Cif'] != df['bvs_min'])])}\"\n", + ")\n", + "print(\n", + " f\"Another OS by BVS = cif : {len(df[(df['min'] > 0.5) & (df['min'] != 9999.0) & (df['second_min'] != 9999.0) & (df['Cif'] != df['bvs_min']) & (df['Cif'] == df['bvs_second_min'])])}\"\n", + ")\n", + "print(\n", + " f\"Another OS by BVS != cif : {len(df[(df['min'] > 0.5) & (df['min'] != 9999.0) & (df['second_min'] != 9999.0) & (df['Cif'] != df['bvs_min']) & (df['Cif'] != df['bvs_second_min'])])}\"\n", + ")\n", "\n", "print(\"\")\n", - "print(f\"OS with smallest Δ ≤ 0.5, Another OS with 2nd smallest Δ > 0.5 , BVS = cif : { len(df[(df['min'] <= 0.5) & (df['second_min'] > 0.5) & (df['min'] !=9999.0) & (df['second_min'] != 9999.0) & (df['Cif'] == df['bvs_min'])]) }\")\n", - "print(f\"OS with smallest Δ ≤ 0.5, Another OS with 2nd smallest Δ > 0.5 , BVS != cif : { len(df[(df['min'] <= 0.5) & (df['second_min'] > 0.5) & (df['min'] !=9999.0) & (df['second_min'] != 9999.0) & (df['Cif'] != df['bvs_min'])]) }\")\n", - "print(f\"Another OS by BVS = cif : { len( df[(df['min'] <= 0.5) & (df['second_min'] > 0.5) & (df['min'] !=9999.0) & (df['second_min'] != 9999.0) & (df['Cif'] != df['bvs_min']) & (df['Cif'] == df['bvs_second_min']) ]) }\")\n", - "print(f\"Another OS by BVS != cif : { len( df[(df['min'] <= 0.5) & (df['second_min'] > 0.5) & (df['min'] !=9999.0) & (df['second_min'] != 9999.0) & (df['Cif'] != df['bvs_min']) & (df['Cif'] != df['bvs_second_min']) ]) }\")\n", + "print(\n", + " f\"OS with smallest Δ ≤ 0.5, Another OS with 2nd smallest Δ > 0.5 , BVS = cif : {len(df[(df['min'] <= 0.5) & (df['second_min'] > 0.5) & (df['min'] != 9999.0) & (df['second_min'] != 9999.0) & (df['Cif'] == df['bvs_min'])])}\"\n", + ")\n", + "print(\n", + " f\"OS with smallest Δ ≤ 0.5, Another OS with 2nd smallest Δ > 0.5 , BVS != cif : {len(df[(df['min'] <= 0.5) & (df['second_min'] > 0.5) & (df['min'] != 9999.0) & (df['second_min'] != 9999.0) & (df['Cif'] != df['bvs_min'])])}\"\n", + ")\n", + "print(\n", + " f\"Another OS by BVS = cif : {len(df[(df['min'] <= 0.5) & (df['second_min'] > 0.5) & (df['min'] != 9999.0) & (df['second_min'] != 9999.0) & (df['Cif'] != df['bvs_min']) & (df['Cif'] == df['bvs_second_min'])])}\"\n", + ")\n", + "print(\n", + " f\"Another OS by BVS != cif : {len(df[(df['min'] <= 0.5) & (df['second_min'] > 0.5) & (df['min'] != 9999.0) & (df['second_min'] != 9999.0) & (df['Cif'] != df['bvs_min']) & (df['Cif'] != df['bvs_second_min'])])}\"\n", + ")\n", "\n", "\n", "print(\"\")\n", - "print(f\"OS with smallest Δ ≤ 0.5, Another OS with 2nd smallest Δ ≤ 0.5, BVS = cif : { len(df[(df['min'] <= 0.5) & (df['second_min'] <= 0.5) & (df['min'] !=9999.0) & (df['second_min'] != 9999.0) & (df['Cif'] == df['bvs_min'])]) }\")\n", - "print(f\"OS with smallest Δ ≤ 0.5, Another OS with 2nd smallest Δ ≤ 0.5, BVS != cif : { len(df[(df['min'] <= 0.5) & (df['second_min'] <= 0.5) & (df['min'] !=9999.0) & (df['second_min'] != 9999.0) & (df['Cif'] != df['bvs_min'])]) }\")\n", - "print(f\"Another OS by BVS = cif : { len( df[(df['min'] <= 0.5) & (df['second_min'] <= 0.5) & (df['min'] !=9999.0) & (df['second_min'] != 9999.0) & (df['Cif'] != df['bvs_min']) & (df['Cif'] == df['bvs_second_min']) ]) }\")\n", - "print(f\"Another OS by BVS != cif : { len( df[(df['min'] <= 0.5) & (df['second_min'] <= 0.5) & (df['min'] !=9999.0) & (df['second_min'] != 9999.0) & (df['Cif'] != df['bvs_min']) & (df['Cif'] != df['bvs_second_min']) ]) }\")" + "print(\n", + " f\"OS with smallest Δ ≤ 0.5, Another OS with 2nd smallest Δ ≤ 0.5, BVS = cif : {len(df[(df['min'] <= 0.5) & (df['second_min'] <= 0.5) & (df['min'] != 9999.0) & (df['second_min'] != 9999.0) & (df['Cif'] == df['bvs_min'])])}\"\n", + ")\n", + "print(\n", + " f\"OS with smallest Δ ≤ 0.5, Another OS with 2nd smallest Δ ≤ 0.5, BVS != cif : {len(df[(df['min'] <= 0.5) & (df['second_min'] <= 0.5) & (df['min'] != 9999.0) & (df['second_min'] != 9999.0) & (df['Cif'] != df['bvs_min'])])}\"\n", + ")\n", + "print(\n", + " f\"Another OS by BVS = cif : {len(df[(df['min'] <= 0.5) & (df['second_min'] <= 0.5) & (df['min'] != 9999.0) & (df['second_min'] != 9999.0) & (df['Cif'] != df['bvs_min']) & (df['Cif'] == df['bvs_second_min'])])}\"\n", + ")\n", + "print(\n", + " f\"Another OS by BVS != cif : {len(df[(df['min'] <= 0.5) & (df['second_min'] <= 0.5) & (df['min'] != 9999.0) & (df['second_min'] != 9999.0) & (df['Cif'] != df['bvs_min']) & (df['Cif'] != df['bvs_second_min'])])}\"\n", + ")" ] } ], diff --git a/utils/BVS/bvparm2020.txt b/utils/BVS/bvparm2020.txt index d41e7d3a6..5fce323ed 100644 --- a/utils/BVS/bvparm2020.txt +++ b/utils/BVS/bvparm2020.txt @@ -293,4 +293,4 @@ Cu 3 F -1 1.58 0.37 e unchecked Cu 3 Cl -1 2.078 0.37 l 'from transition metal complexes' Cu 3 N -3 1.768 0.37 l 'from transition metal complexes' Cu 3 N -3 1.753 0.37 t ? -Cu 3 C -4 1.84 0.37 l 'from transition metal complexes' \ No newline at end of file +Cu 3 C -4 1.84 0.37 l 'from transition metal complexes' diff --git a/utils/BVS/run_BVS.py b/utils/BVS/run_BVS.py index 0e6b87963..6da7666f9 100644 --- a/utils/BVS/run_BVS.py +++ b/utils/BVS/run_BVS.py @@ -6,41 +6,39 @@ import sys import pandas as pd import argparse -import cell2mol import itertools from cell2mol.formal_charge import classify_mols -from cell2mol.tmcharge_common import Cell -def determine_charge_BVS (get_dict, thre_max): - +def determine_charge_BVS(get_dict, thre_max): sort = sorted(get_dict, key=get_dict.get) - mean_values = sum(get_dict[key] for key in get_dict.keys())/len(get_dict) + mean_values = sum(get_dict[key] for key in get_dict.keys()) / len(get_dict) min_delta = get_dict[sort[0]] - second_min_delta = get_dict[sort[1]] + second_min_delta = get_dict[sort[1]] if np.isclose(mean_values, 9999): charge_BVS = 9999 - print(f"No valid charge by BVS") + print("No valid charge by BVS") - elif min_delta > thre_max : + elif min_delta > thre_max: charge_BVS = 8888 print(f"Minimum delta exceeds threshold value {thre_max}") - elif min_delta <= thre_max and second_min_delta <= thre_max : + elif min_delta <= thre_max and second_min_delta <= thre_max: print("charge of 1st minimum delta {} : {}".format(sort[0], min_delta)) print("charge of 2nd minimum delta {} : {}".format(sort[1], second_min_delta)) charge_BVS = 7777 - print(f"Multiple deltas are less than the threshold value") + print("Multiple deltas are less than the threshold value") else: charge_BVS = sort[0] print(f"{charge_BVS=}") return charge_BVS - + + def parsing_arguments_BVS(): parser = argparse.ArgumentParser( prog="BVS", description="BVS get metal charge from cell object" @@ -56,31 +54,32 @@ def parsing_arguments_BVS(): ) args = parser.parse_args() - + return args.filename - - + + def bond_valence_sum(cell, bv_para, result, thre_max): - if not any(cell.warning_list[:5]): print("Cell reconstruction successfully finished.\n") - print("====================================== BVS ======================================") + print( + "====================================== BVS ======================================" + ) print("Classify unique species\n") - - - molec_indices, ligand_indices, unique_indices, unique_species = classify_mols(cell.moleclist) - + + molec_indices, ligand_indices, unique_indices, unique_species = classify_mols( + cell.moleclist + ) + print(f"{len(unique_species)} Species (Ligand or Molecules) to Characterize\n") - - with open(result,'a') as data: - for idx, spec in enumerate(unique_species): + with open(result, "a") as data: + for idx, spec in enumerate(unique_species): if spec[0] == "Metal": print("Metal indice of unique species:{}".format(idx)) metal = spec[1] mol = spec[2] - + try: print("metal.totcharge by cell2mol : {}\n".format(metal.totcharge)) except AttributeError: @@ -91,23 +90,35 @@ def bond_valence_sum(cell, bv_para, result, thre_max): metal_index = mol.coord.index(metal.coord) sphere_index = np.where(mol.mconmat[metal_index] == 1)[0] - possible_charge_metal = list(df[df['atom_1']== metal.label].atom_1_valence.unique()) + possible_charge_metal = list( + df[df["atom_1"] == metal.label].atom_1_valence.unique() + ) - if 9 in possible_charge_metal: # 9 : OS didn't be specified in the original reference + if ( + 9 in possible_charge_metal + ): # 9 : OS didn't be specified in the original reference possible_charge_metal.remove(9) - # print(metal.label, possible_charge_metal) + # print(metal.label, possible_charge_metal) get_dict = {} - print("Possible charges of Metal {} by BVS : {}".format(metal.label, possible_charge_metal)) + print( + "Possible charges of Metal {} by BVS : {}".format( + metal.label, possible_charge_metal + ) + ) for charge in possible_charge_metal: - print("============================== OS : +{} Metal : {} ================================".format(charge, metal.label)) + print( + "============================== OS : +{} Metal : {} ================================".format( + charge, metal.label + ) + ) S = [] # valence list for a metal–ligand bond for index in sphere_index: -# print("index in sphere_index", index) + # print("index in sphere_index", index) condition = ( (bv_para["atom_1"] == metal.label) & (bv_para["atom_1_valence"] == charge) @@ -122,10 +133,10 @@ def bond_valence_sum(cell, bv_para, result, thre_max): bond_length = np.linalg.norm( np.array(metal.coord) - mol.coord[index] ) -# print(bv_para[condition]) -# print("R0_list", R0_list) -# print("B_list", B_list) -# print("bond_length", bond_length) + # print(bv_para[condition]) + # print("R0_list", R0_list) + # print("B_list", B_list) + # print("bond_length", bond_length) S_sub = [ np.exp((R0 - bond_length) / B) @@ -134,7 +145,10 @@ def bond_valence_sum(cell, bv_para, result, thre_max): S.append(S_sub) print( "OS : +{} Bond : {}-{} S : {} sets of parameters".format( - charge, metal.label, mol.labels[index], len(S_sub) + charge, + metal.label, + mol.labels[index], + len(S_sub), ) ) @@ -153,9 +167,13 @@ def bond_valence_sum(cell, bv_para, result, thre_max): delta_comb = [sum(s) - charge for s in combination] delta = min(delta_comb, key=abs) delta = abs(delta) -# print("OS \t: \t +{}".format(charge)) -# print("Trial OS: \t +{:.6f}".format(delta + charge)) - print("OS : +{} \t Trial OS : {:.6f} \t Delta : {:.6f}\n".format(charge, delta + charge, delta)) + # print("OS \t: \t +{}".format(charge)) + # print("Trial OS: \t +{:.6f}".format(delta + charge)) + print( + "OS : +{} \t Trial OS : {:.6f} \t Delta : {:.6f}\n".format( + charge, delta + charge, delta + ) + ) else: delta = 9999 print( @@ -163,38 +181,50 @@ def bond_valence_sum(cell, bv_para, result, thre_max): ) get_dict[charge] = delta - get_dict.update((key, round(val, 6)) for key, val in get_dict.items()) + get_dict.update( + (key, round(val, 6)) for key, val in get_dict.items() + ) print("Charge and Delta pairs", get_dict) - - charge_BVS = determine_charge_BVS (get_dict, thre_max) - - data.write("%s\t%s\t%d\t%d\t%s\t%d\n" % (cell.refcode, metal.label, metal.totcharge, charge_BVS, get_dict, idx)) + + charge_BVS = determine_charge_BVS(get_dict, thre_max) + + data.write( + "%s\t%s\t%d\t%d\t%s\t%d\n" + % ( + cell.refcode, + metal.label, + metal.totcharge, + charge_BVS, + get_dict, + idx, + ) + ) print( "***************************************************************************************" ) -if __name__ == "__main__" : +if __name__ == "__main__": pwd = os.getcwd() filename = parsing_arguments_BVS() print(filename) - df = pd.read_csv("bvparm2020.txt",delimiter="\t") - result = "BVS_result.txt" - file = open(filename,'rb') + df = pd.read_csv("bvparm2020.txt", delimiter="\t") + result = "BVS_result.txt" + file = open(filename, "rb") cell = pickle.load(file) fail_reconstruct = "fail_in_reconstruct.txt" - + if any(cell.warning_list[:5]): - with open(fail_reconstruct,'a') as fail: + with open(fail_reconstruct, "a") as fail: fail.write("%s\n" % (cell.refcode)) else: output_dir = pwd + "/" + cell.refcode if not os.path.exists(output_dir): os.makedirs(output_dir) output_fname = output_dir + "/bvs_output.out" - + thre_max = 0.5 - + sys.stdout = open(output_fname, "w") print("[Refcode]", cell.refcode) bond_valence_sum(cell, df, result, thre_max) diff --git a/utils/export_TMC.py b/utils/export_TMC.py index 0b0f09860..26cc5adb2 100755 --- a/utils/export_TMC.py +++ b/utils/export_TMC.py @@ -2,8 +2,8 @@ import sys import os -from cell2mol.tmcharge_common import cell, atom, molecule, ligand, metal -from cell2mol.readwrite import writexyz, print_molecule +from cell2mol.tmcharge_common import cell +from cell2mol.readwrite import print_molecule pwd = os.getcwd() pwd = pwd.replace("\\", "/") @@ -33,21 +33,20 @@ printed_formulas = [] printed_natoms = [] for idx, mol in enumerate(cell.moleclist): - savemol = False if mol.type == "Complex": if hasattr(mol, "formula"): if mol.formula not in printed_formulas: - savemol = True + savemol = True printed_formulas.append(mol.formula) count += 1 else: - if mol.natoms not in printed_natoms: - savemol = True + if mol.natoms not in printed_natoms: + savemol = True printed_natoms.append(mol.natoms) count += 1 - + if savemol: - namemol = mol.refcode+"_TMC_"+str(count) + namemol = mol.refcode + "_TMC_" + str(count) print_molecule(mol, namemol, "gmol", pwd) ### To avoid repetition diff --git a/utils/export_cellvectors.py b/utils/export_cellvectors.py index 80560595e..e8a1c7fd9 100755 --- a/utils/export_cellvectors.py +++ b/utils/export_cellvectors.py @@ -2,8 +2,7 @@ import sys import os -from cell2mol.tmcharge_common import cell, atom, molecule, ligand, metal -from cell2mol.readwrite import writexyz, print_molecule +from cell2mol.tmcharge_common import cell pwd = os.getcwd() pwd = pwd.replace("\\", "/") @@ -28,9 +27,9 @@ with open(pwd + "/" + gmolfile, "rb") as pickle_file: cell = pickle.load(pickle_file) - namecell = cell.refcode+"_unit_cell.xyz" + namecell = cell.refcode + "_unit_cell.xyz" with open(namecell, "w") as fil: for l in cell.cellvec: print(*l) - #print(cell.cellparam) + # print(cell.cellparam) diff --git a/utils/export_ligands.py b/utils/export_ligands.py index a1dc3d64b..9a3abe47c 100755 --- a/utils/export_ligands.py +++ b/utils/export_ligands.py @@ -2,8 +2,8 @@ import sys import os -from cell2mol.tmcharge_common import cell, atom, molecule, ligand, metal -from cell2mol.readwrite import writexyz, print_molecule +from cell2mol.tmcharge_common import cell +from cell2mol.readwrite import print_molecule pwd = os.getcwd() pwd = pwd.replace("\\", "/") @@ -30,8 +30,6 @@ cell = pickle.load(pickle_file) for idx, mol in enumerate(cell.speclist): - if mol.type == "Ligand": - - namemol = mol.refcode+"_lig_"+str(idx) + namemol = mol.refcode + "_lig_" + str(idx) print_molecule(mol, namemol, "gmol", pwd) diff --git a/utils/export_other.py b/utils/export_other.py index 7bd849970..799603a11 100755 --- a/utils/export_other.py +++ b/utils/export_other.py @@ -2,8 +2,8 @@ import sys import os -from cell2mol.tmcharge_common import cell, atom, molecule, ligand, metal -from cell2mol.readwrite import writexyz, print_molecule +from cell2mol.tmcharge_common import cell +from cell2mol.readwrite import print_molecule pwd = os.getcwd() pwd = pwd.replace("\\", "/") @@ -30,8 +30,6 @@ cell = pickle.load(pickle_file) for idx, mol in enumerate(cell.speclist): - if mol.type == "Other": - - namemol = mol.refcode+"_oth_"+str(idx) + namemol = mol.refcode + "_oth_" + str(idx) print_molecule(mol, namemol, "gmol", pwd) diff --git a/utils/export_unique_species.py b/utils/export_unique_species.py index 654b97c1b..b51fd810a 100755 --- a/utils/export_unique_species.py +++ b/utils/export_unique_species.py @@ -2,7 +2,7 @@ import sys import os -from cell2mol.tmcharge_common import cell, atom, molecule, ligand, metal +from cell2mol.tmcharge_common import cell from cell2mol.readwrite import writexyz, print_molecule pwd = os.getcwd() @@ -30,13 +30,12 @@ cell = pickle.load(pickle_file) for idx, mol in enumerate(cell.speclist): - if mol.type == "Other": - namexyz = mol.refcode+"_spec_"+str(idx)+".xyz" - if hasattr(mol, "totcharge") and hasattr(mol, "spin"): + namexyz = mol.refcode + "_spec_" + str(idx) + ".xyz" + if hasattr(mol, "totcharge") and hasattr(mol, "spin"): writexyz(pwd, namexyz, mol.labels, mol.coord, mol.totcharge, mol.spin) - else : + else: writexyz(pwd, namexyz, mol.labels, mol.coord) - - namemol = mol.refcode+"_spec_"+str(idx) + + namemol = mol.refcode + "_spec_" + str(idx) print_molecule(mol, namemol, "gmol", pwd) diff --git a/utils/export_unitcell.py b/utils/export_unitcell.py index 3f2f512b8..41ecc207d 100755 --- a/utils/export_unitcell.py +++ b/utils/export_unitcell.py @@ -2,8 +2,7 @@ import sys import os -from cell2mol.tmcharge_common import cell, atom, molecule, ligand, metal -from cell2mol.readwrite import writexyz, print_molecule +from cell2mol.tmcharge_common import cell pwd = os.getcwd() pwd = pwd.replace("\\", "/") @@ -29,13 +28,17 @@ with open(pwd + "/" + gmolfile, "rb") as pickle_file: cell = pickle.load(pickle_file) - namecell = cell.refcode+"_unit_cell.xyz" + namecell = cell.refcode + "_unit_cell.xyz" - #print_molecule(cell, namecell, "xyz", pwd) + # print_molecule(cell, namecell, "xyz", pwd) with open(namecell, "w") as fil: print(len(cell.labels), file=fil) print("", file=fil) for mol in cell.moleclist: - #print(mol.labels, mol.natoms, len(mol.atoms)) + # print(mol.labels, mol.natoms, len(mol.atoms)) for a in mol.atoms: - print("%s %.6f %.6f %.6f" % (a.label, a.coord[0], a.coord[1], a.coord[2]),file=fil) + print( + "%s %.6f %.6f %.6f" + % (a.label, a.coord[0], a.coord[1], a.coord[2]), + file=fil, + ) diff --git a/utils/extract_metal_os.py b/utils/extract_metal_os.py index d0147e975..5b05cf99e 100755 --- a/utils/extract_metal_os.py +++ b/utils/extract_metal_os.py @@ -2,15 +2,12 @@ import sys import os -from cell2mol.tmcharge_common import cell, atom, molecule, ligand, metal -from cell2mol.readwrite import writexyz, print_molecule ######################################## def get_cell_info(fil): - list_of_metals = [] list_of_charges = [] - with open(fil, 'rb') as gmol: + with open(fil, "rb") as gmol: loaded_cell = pickle.load(gmol) donelist = [] @@ -31,6 +28,8 @@ def get_cell_info(fil): list_of_charges.append(met.totcharge) return list_of_metals, list_of_charges + + ######################################## pwd = os.getcwd() @@ -39,17 +38,17 @@ def get_cell_info(fil): cellfile = sys.argv[1] if cellfile.endswith(".gmol"): - - splitname=cellfile.split(".") - splitname=splitname[0].split("_") - refcode=splitname[1] + splitname = cellfile.split(".") + splitname = splitname[0].split("_") + refcode = splitname[1] list_of_metals, list_of_charges = get_cell_info(cellfile) - - if len(list_of_charges) == 1: print(refcode, list_of_charges[0]) - if len(list_of_charges) != 1: print(refcode, list_of_charges) - + + if len(list_of_charges) == 1: + print(refcode, list_of_charges[0]) + if len(list_of_charges) != 1: + print(refcode, list_of_charges) + else: print("File does not have .gmol extension") exit() - diff --git a/utils/gmol2xyz.py b/utils/gmol2xyz.py index 478dc3291..9dc7d5ec7 100755 --- a/utils/gmol2xyz.py +++ b/utils/gmol2xyz.py @@ -2,8 +2,7 @@ import sys import os -from cell2mol.tmcharge_common import cell, atom, molecule, ligand, metal -from cell2mol.readwrite import writexyz, print_molecule +from cell2mol.readwrite import writexyz pwd = os.getcwd() pwd = pwd.replace("\\", "/") @@ -12,29 +11,28 @@ if gmolfile.endswith(".gmol"): - - splitname=gmolfile.split(".") + splitname = gmolfile.split(".") if len(splitname) == 2: - namexyz = splitname[0]+".xyz" + namexyz = splitname[0] + ".xyz" with open(pwd + "/" + gmolfile, "rb") as pickle_file: mol = pickle.load(pickle_file) - if hasattr(mol, "totcharge"): + if hasattr(mol, "totcharge"): remainder = (mol.eleccount + mol.totcharge) % 2 else: remainder = mol.eleccount % 2 - if remainder == 0: + if remainder == 0: spin = 1 else: spin = 2 - - #namexyz = mol.name+".xyz" - if hasattr(mol, "totcharge") and hasattr(mol, "spin"): + + # namexyz = mol.name+".xyz" + if hasattr(mol, "totcharge") and hasattr(mol, "spin"): writexyz(pwd, namexyz, mol.labels, mol.coord, mol.totcharge, mol.spin) print("All info available", mol.refcode) - elif hasattr(mol, "totcharge") and not hasattr(mol, "spin"): + elif hasattr(mol, "totcharge") and not hasattr(mol, "spin"): writexyz(pwd, namexyz, mol.labels, mol.coord, mol.totcharge, spin) print("Assuming spin for", mol.refcode) else: @@ -43,4 +41,3 @@ else: print("File does not have .gmol extension") exit() - diff --git a/utils/print_info_cell.py b/utils/print_info_cell.py index 3e312207c..f629b4a61 100755 --- a/utils/print_info_cell.py +++ b/utils/print_info_cell.py @@ -2,8 +2,7 @@ import sys import os -from cell2mol.tmcharge_common import cell, atom, molecule, ligand, metal -from cell2mol.readwrite import writexyz, print_molecule +from cell2mol.tmcharge_common import cell pwd = os.getcwd() pwd = pwd.replace("\\", "/") @@ -19,42 +18,86 @@ if not hasattr(cell, "cellvec"): print("Please load a cell object. Stopping") exit() - + print("cell Warning List", cell.warning_list) print("") print("#### PRINTING MOLS ####") for mol in cell.moleclist: - if hasattr(mol, "totcharge"): print("MOL:", mol.type, mol.formula, mol.totcharge, mol.totmconnec) - if not hasattr(mol, "totcharge"): print("MOL:", mol.type, mol.formula, mol.totmconnec) + if hasattr(mol, "totcharge"): + print("MOL:", mol.type, mol.formula, mol.totcharge, mol.totmconnec) + if not hasattr(mol, "totcharge"): + print("MOL:", mol.type, mol.formula, mol.totmconnec) if mol.type == "Complex": - for lig in mol.ligandlist: - if hasattr(lig, "totcharge"): print(" LIG:", lig.formula, lig.totcharge, lig.totmconnec, lig.smiles) - if not hasattr(lig, "totcharge"): print(" LIG:", lig.formula, lig.totmconnec) - for met in mol.metalist: - if hasattr(met, "totcharge"): print(" MET:", met.atlist, met.label, met.totcharge, met.totmconnec) - if not hasattr(met, "totcharge"): print(" MET:", met.atlist, met.label, met.totmconnec) + for lig in mol.ligandlist: + if hasattr(lig, "totcharge"): + print( + " LIG:", + lig.formula, + lig.totcharge, + lig.totmconnec, + lig.smiles, + ) + if not hasattr(lig, "totcharge"): + print(" LIG:", lig.formula, lig.totmconnec) + for met in mol.metalist: + if hasattr(met, "totcharge"): + print( + " MET:", + met.atlist, + met.label, + met.totcharge, + met.totmconnec, + ) + if not hasattr(met, "totcharge"): + print(" MET:", met.atlist, met.label, met.totmconnec) print("") print("#### PRINTING SPECS ####") for mol in cell.speclist: if mol.type != "Metal": - if hasattr(mol, "totcharge"): print("MOL:", mol.type, mol.formula, mol.totcharge, mol.totmconnec, mol.smiles) - if not hasattr(mol, "totcharge"): print("MOL:", mol.type, mol.formula, mol.totmconnec) + if hasattr(mol, "totcharge"): + print( + "MOL:", + mol.type, + mol.formula, + mol.totcharge, + mol.totmconnec, + mol.smiles, + ) + if not hasattr(mol, "totcharge"): + print("MOL:", mol.type, mol.formula, mol.totmconnec) else: - if hasattr(mol, "totcharge"): print("MOL:", mol.type, mol.label, mol.totcharge, mol.totmconnec) - if not hasattr(mol, "totcharge"): print("MOL:", mol.type, mol.label, mol.totmconnec) + if hasattr(mol, "totcharge"): + print("MOL:", mol.type, mol.label, mol.totcharge, mol.totmconnec) + if not hasattr(mol, "totcharge"): + print("MOL:", mol.type, mol.label, mol.totmconnec) if mol.type == "Complex": - for lig in mol.ligandlist: - if hasattr(lig, "totcharge"): print(" LIG:", lig.formula, lig.totcharge, lig.totmconnec, lig.smiles) - if not hasattr(lig, "totcharge"): print(" LIG:", lig.formula, lig.totmconnec) - for met in mol.metalist: - if hasattr(met, "totcharge"): print(" MET:", met.atlist, met.label, met.totcharge, met.totmconnec) - if not hasattr(met, "totcharge"): print(" MET:", met.atlist, met.label, met.totmconnec) - - + for lig in mol.ligandlist: + if hasattr(lig, "totcharge"): + print( + " LIG:", + lig.formula, + lig.totcharge, + lig.totmconnec, + lig.smiles, + ) + if not hasattr(lig, "totcharge"): + print(" LIG:", lig.formula, lig.totmconnec) + for met in mol.metalist: + if hasattr(met, "totcharge"): + print( + " MET:", + met.atlist, + met.label, + met.totcharge, + met.totmconnec, + ) + if not hasattr(met, "totcharge"): + print(" MET:", met.atlist, met.label, met.totmconnec) + + else: print("File does not have .gmol extension") exit() - diff --git a/uv.lock b/uv.lock new file mode 100644 index 000000000..bc2168365 --- /dev/null +++ b/uv.lock @@ -0,0 +1,2663 @@ +version = 1 +revision = 3 +requires-python = ">=3.9" +resolution-markers = [ + "python_full_version >= '3.12'", + "python_full_version == '3.11.*'", + "python_full_version == '3.10.*'", + "python_full_version < '3.10'", +] + +[[package]] +name = "annotated-types" +version = "0.7.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ee/67/531ea369ba64dcff5ec9c3402f9f51bf748cec26dde048a2f973a4eea7f5/annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89", size = 16081, upload-time = "2024-05-20T21:33:25.928Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53", size = 13643, upload-time = "2024-05-20T21:33:24.1Z" }, +] + +[[package]] +name = "ase" +version = "3.26.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "matplotlib", version = "3.9.4", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, + { name = "matplotlib", version = "3.10.7", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, + { name = "numpy", version = "2.0.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.10.*'" }, + { name = "numpy", version = "2.3.4", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "scipy", version = "1.13.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, + { name = "scipy", version = "1.15.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.10.*'" }, + { name = "scipy", version = "1.16.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/30/33/2ffa44950267450f6a5cdb711c68e12d0d72d626e246e5897e3bada7bac6/ase-3.26.0.tar.gz", hash = "sha256:a071a355775b0a8062d23e9266e9d811b19d9f6d9ec5215e8032f7d93dc65075", size = 2405567, upload-time = "2025-08-12T13:06:55.589Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/dd/f0/6e52d797bee63530f4b778cb4cbb3a01970f104197c364a8ff51bc9f5a21/ase-3.26.0-py3-none-any.whl", hash = "sha256:77fd0e609bd3868006d4bb3bb95cdc4081d9e292ac84f6c9fb564b5751d2689e", size = 2946787, upload-time = "2025-08-12T13:06:53.316Z" }, +] + +[[package]] +name = "asttokens" +version = "3.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/4a/e7/82da0a03e7ba5141f05cce0d302e6eed121ae055e0456ca228bf693984bc/asttokens-3.0.0.tar.gz", hash = "sha256:0dcd8baa8d62b0c1d118b399b2ddba3c4aff271d0d7a9e0d4c1681c79035bbc7", size = 61978, upload-time = "2024-11-30T04:30:14.439Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/25/8a/c46dcc25341b5bce5472c718902eb3d38600a903b14fa6aeecef3f21a46f/asttokens-3.0.0-py3-none-any.whl", hash = "sha256:e3078351a059199dd5138cb1c706e6430c05eff2ff136af5eb4790f9d28932e2", size = 26918, upload-time = "2024-11-30T04:30:10.946Z" }, +] + +[[package]] +name = "cell2mol" +version = "2.0.0" +source = { editable = "." } +dependencies = [ + { name = "ase" }, + { name = "networkx", version = "3.2.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, + { name = "networkx", version = "3.4.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.10.*'" }, + { name = "networkx", version = "3.5", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "numpy", version = "2.0.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.10.*'" }, + { name = "numpy", version = "2.3.4", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "pandas" }, + { name = "pydantic" }, + { name = "pydantic-numpy", version = "6.0.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, + { name = "pydantic-numpy", version = "8.0.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, + { name = "pyyaml" }, + { name = "rdkit" }, + { name = "scikit-learn", version = "1.6.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, + { name = "scikit-learn", version = "1.7.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, + { name = "scipy", version = "1.13.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, + { name = "scipy", version = "1.15.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.10.*'" }, + { name = "scipy", version = "1.16.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, +] + +[package.dev-dependencies] +dev = [ + { name = "ipython", version = "8.18.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, + { name = "ipython", version = "8.37.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, + { name = "pre-commit", version = "4.3.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, + { name = "pre-commit", version = "4.5.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, + { name = "pytest", version = "8.4.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, + { name = "pytest", version = "9.0.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, + { name = "ruff" }, +] +test = [ + { name = "pytest", version = "8.4.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, + { name = "pytest", version = "9.0.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, +] + +[package.metadata] +requires-dist = [ + { name = "ase", specifier = ">=3.26.0" }, + { name = "networkx", specifier = ">=3.2.1" }, + { name = "numpy", specifier = ">=2.0.2" }, + { name = "pandas", specifier = ">=2.3.3" }, + { name = "pydantic", specifier = ">=2.12.2" }, + { name = "pydantic-numpy", specifier = ">=6.0.0" }, + { name = "pyyaml", specifier = ">=6.0.3" }, + { name = "rdkit", specifier = ">=2025.9.1" }, + { name = "scikit-learn", specifier = ">=1.6.1" }, + { name = "scipy", specifier = ">=1.13.1" }, +] + +[package.metadata.requires-dev] +dev = [ + { name = "ipython", specifier = ">=8.18.0,<9.0.0" }, + { name = "pre-commit", specifier = ">=4.0.0" }, + { name = "pytest", specifier = ">=7.0" }, + { name = "ruff", specifier = ">=0.14.0" }, +] +test = [{ name = "pytest", specifier = ">=7.0" }] + +[[package]] +name = "cfgv" +version = "3.4.0" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version < '3.10'", +] +sdist = { url = "https://files.pythonhosted.org/packages/11/74/539e56497d9bd1d484fd863dd69cbbfa653cd2aa27abfe35653494d85e94/cfgv-3.4.0.tar.gz", hash = "sha256:e52591d4c5f5dead8e0f673fb16db7949d2cfb3f7da4582893288f0ded8fe560", size = 7114, upload-time = "2023-08-12T20:38:17.776Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c5/55/51844dd50c4fc7a33b653bfaba4c2456f06955289ca770a5dbd5fd267374/cfgv-3.4.0-py2.py3-none-any.whl", hash = "sha256:b7265b1f29fd3316bfcd2b330d63d024f2bfd8bcb8b0272f8e19a504856c48f9", size = 7249, upload-time = "2023-08-12T20:38:16.269Z" }, +] + +[[package]] +name = "cfgv" +version = "3.5.0" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version >= '3.12'", + "python_full_version == '3.11.*'", + "python_full_version == '3.10.*'", +] +sdist = { url = "https://files.pythonhosted.org/packages/4e/b5/721b8799b04bf9afe054a3899c6cf4e880fcf8563cc71c15610242490a0c/cfgv-3.5.0.tar.gz", hash = "sha256:d5b1034354820651caa73ede66a6294d6e95c1b00acc5e9b098e917404669132", size = 7334, upload-time = "2025-11-19T20:55:51.612Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/db/3c/33bac158f8ab7f89b2e59426d5fe2e4f63f7ed25df84c036890172b412b5/cfgv-3.5.0-py2.py3-none-any.whl", hash = "sha256:a8dc6b26ad22ff227d2634a65cb388215ce6cc96bbcc5cfde7641ae87e8dacc0", size = 7445, upload-time = "2025-11-19T20:55:50.744Z" }, +] + +[[package]] +name = "colorama" +version = "0.4.6" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d8/53/6f443c9a4a8358a93a6792e2acffb9d9d5cb0a5cfd8802644b7b1c9a02e4/colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44", size = 27697, upload-time = "2022-10-25T02:36:22.414Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335, upload-time = "2022-10-25T02:36:20.889Z" }, +] + +[[package]] +name = "compress-pickle" +version = "2.1.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/c8/23/a448abd4e98b64ad5b99537a2b4df3f6a829e6fac749afbaf921f89c0941/compress_pickle-2.1.0.tar.gz", hash = "sha256:3e944ce0eeab5b6331324d62351c957d41c9327c8417d439843e88fe69b77991", size = 16360, upload-time = "2021-09-21T18:13:58.57Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f3/4f/f94ac1b84d2169cf2ebf64353ce98fd743f85d30678059c514d9b3d6644c/compress_pickle-2.1.0-py3-none-any.whl", hash = "sha256:598650da4686d9bd97bee185b61e74d7fe1872bb0c23909d5ed2d8793b4a8818", size = 24694, upload-time = "2021-09-21T18:13:57.047Z" }, +] + +[package.optional-dependencies] +lz4 = [ + { name = "lz4" }, +] + +[[package]] +name = "contourpy" +version = "1.3.0" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version < '3.10'", +] +dependencies = [ + { name = "numpy", version = "2.0.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/f5/f6/31a8f28b4a2a4fa0e01085e542f3081ab0588eff8e589d39d775172c9792/contourpy-1.3.0.tar.gz", hash = "sha256:7ffa0db17717a8ffb127efd0c95a4362d996b892c2904db72428d5b52e1938a4", size = 13464370, upload-time = "2024-08-27T21:00:03.328Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6c/e0/be8dcc796cfdd96708933e0e2da99ba4bb8f9b2caa9d560a50f3f09a65f3/contourpy-1.3.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:880ea32e5c774634f9fcd46504bf9f080a41ad855f4fef54f5380f5133d343c7", size = 265366, upload-time = "2024-08-27T20:50:09.947Z" }, + { url = "https://files.pythonhosted.org/packages/50/d6/c953b400219443535d412fcbbc42e7a5e823291236bc0bb88936e3cc9317/contourpy-1.3.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:76c905ef940a4474a6289c71d53122a4f77766eef23c03cd57016ce19d0f7b42", size = 249226, upload-time = "2024-08-27T20:50:16.1Z" }, + { url = "https://files.pythonhosted.org/packages/6f/b4/6fffdf213ffccc28483c524b9dad46bb78332851133b36ad354b856ddc7c/contourpy-1.3.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:92f8557cbb07415a4d6fa191f20fd9d2d9eb9c0b61d1b2f52a8926e43c6e9af7", size = 308460, upload-time = "2024-08-27T20:50:22.536Z" }, + { url = "https://files.pythonhosted.org/packages/cf/6c/118fc917b4050f0afe07179a6dcbe4f3f4ec69b94f36c9e128c4af480fb8/contourpy-1.3.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:36f965570cff02b874773c49bfe85562b47030805d7d8360748f3eca570f4cab", size = 347623, upload-time = "2024-08-27T20:50:28.806Z" }, + { url = "https://files.pythonhosted.org/packages/f9/a4/30ff110a81bfe3abf7b9673284d21ddce8cc1278f6f77393c91199da4c90/contourpy-1.3.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cacd81e2d4b6f89c9f8a5b69b86490152ff39afc58a95af002a398273e5ce589", size = 317761, upload-time = "2024-08-27T20:50:35.126Z" }, + { url = "https://files.pythonhosted.org/packages/99/e6/d11966962b1aa515f5586d3907ad019f4b812c04e4546cc19ebf62b5178e/contourpy-1.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:69375194457ad0fad3a839b9e29aa0b0ed53bb54db1bfb6c3ae43d111c31ce41", size = 322015, upload-time = "2024-08-27T20:50:40.318Z" }, + { url = "https://files.pythonhosted.org/packages/4d/e3/182383743751d22b7b59c3c753277b6aee3637049197624f333dac5b4c80/contourpy-1.3.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:7a52040312b1a858b5e31ef28c2e865376a386c60c0e248370bbea2d3f3b760d", size = 1262672, upload-time = "2024-08-27T20:50:55.643Z" }, + { url = "https://files.pythonhosted.org/packages/78/53/974400c815b2e605f252c8fb9297e2204347d1755a5374354ee77b1ea259/contourpy-1.3.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:3faeb2998e4fcb256542e8a926d08da08977f7f5e62cf733f3c211c2a5586223", size = 1321688, upload-time = "2024-08-27T20:51:11.293Z" }, + { url = "https://files.pythonhosted.org/packages/52/29/99f849faed5593b2926a68a31882af98afbeac39c7fdf7de491d9c85ec6a/contourpy-1.3.0-cp310-cp310-win32.whl", hash = "sha256:36e0cff201bcb17a0a8ecc7f454fe078437fa6bda730e695a92f2d9932bd507f", size = 171145, upload-time = "2024-08-27T20:51:15.2Z" }, + { url = "https://files.pythonhosted.org/packages/a9/97/3f89bba79ff6ff2b07a3cbc40aa693c360d5efa90d66e914f0ff03b95ec7/contourpy-1.3.0-cp310-cp310-win_amd64.whl", hash = "sha256:87ddffef1dbe5e669b5c2440b643d3fdd8622a348fe1983fad7a0f0ccb1cd67b", size = 216019, upload-time = "2024-08-27T20:51:19.365Z" }, + { url = "https://files.pythonhosted.org/packages/b3/1f/9375917786cb39270b0ee6634536c0e22abf225825602688990d8f5c6c19/contourpy-1.3.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:0fa4c02abe6c446ba70d96ece336e621efa4aecae43eaa9b030ae5fb92b309ad", size = 266356, upload-time = "2024-08-27T20:51:24.146Z" }, + { url = "https://files.pythonhosted.org/packages/05/46/9256dd162ea52790c127cb58cfc3b9e3413a6e3478917d1f811d420772ec/contourpy-1.3.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:834e0cfe17ba12f79963861e0f908556b2cedd52e1f75e6578801febcc6a9f49", size = 250915, upload-time = "2024-08-27T20:51:28.683Z" }, + { url = "https://files.pythonhosted.org/packages/e1/5d/3056c167fa4486900dfbd7e26a2fdc2338dc58eee36d490a0ed3ddda5ded/contourpy-1.3.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dbc4c3217eee163fa3984fd1567632b48d6dfd29216da3ded3d7b844a8014a66", size = 310443, upload-time = "2024-08-27T20:51:33.675Z" }, + { url = "https://files.pythonhosted.org/packages/ca/c2/1a612e475492e07f11c8e267ea5ec1ce0d89971be496c195e27afa97e14a/contourpy-1.3.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4865cd1d419e0c7a7bf6de1777b185eebdc51470800a9f42b9e9decf17762081", size = 348548, upload-time = "2024-08-27T20:51:39.322Z" }, + { url = "https://files.pythonhosted.org/packages/45/cf/2c2fc6bb5874158277b4faf136847f0689e1b1a1f640a36d76d52e78907c/contourpy-1.3.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:303c252947ab4b14c08afeb52375b26781ccd6a5ccd81abcdfc1fafd14cf93c1", size = 319118, upload-time = "2024-08-27T20:51:44.717Z" }, + { url = "https://files.pythonhosted.org/packages/03/33/003065374f38894cdf1040cef474ad0546368eea7e3a51d48b8a423961f8/contourpy-1.3.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:637f674226be46f6ba372fd29d9523dd977a291f66ab2a74fbeb5530bb3f445d", size = 323162, upload-time = "2024-08-27T20:51:49.683Z" }, + { url = "https://files.pythonhosted.org/packages/42/80/e637326e85e4105a802e42959f56cff2cd39a6b5ef68d5d9aee3ea5f0e4c/contourpy-1.3.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:76a896b2f195b57db25d6b44e7e03f221d32fe318d03ede41f8b4d9ba1bff53c", size = 1265396, upload-time = "2024-08-27T20:52:04.926Z" }, + { url = "https://files.pythonhosted.org/packages/7c/3b/8cbd6416ca1bbc0202b50f9c13b2e0b922b64be888f9d9ee88e6cfabfb51/contourpy-1.3.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:e1fd23e9d01591bab45546c089ae89d926917a66dceb3abcf01f6105d927e2cb", size = 1324297, upload-time = "2024-08-27T20:52:21.843Z" }, + { url = "https://files.pythonhosted.org/packages/4d/2c/021a7afaa52fe891f25535506cc861c30c3c4e5a1c1ce94215e04b293e72/contourpy-1.3.0-cp311-cp311-win32.whl", hash = "sha256:d402880b84df3bec6eab53cd0cf802cae6a2ef9537e70cf75e91618a3801c20c", size = 171808, upload-time = "2024-08-27T20:52:25.163Z" }, + { url = "https://files.pythonhosted.org/packages/8d/2f/804f02ff30a7fae21f98198828d0857439ec4c91a96e20cf2d6c49372966/contourpy-1.3.0-cp311-cp311-win_amd64.whl", hash = "sha256:6cb6cc968059db9c62cb35fbf70248f40994dfcd7aa10444bbf8b3faeb7c2d67", size = 217181, upload-time = "2024-08-27T20:52:29.13Z" }, + { url = "https://files.pythonhosted.org/packages/c9/92/8e0bbfe6b70c0e2d3d81272b58c98ac69ff1a4329f18c73bd64824d8b12e/contourpy-1.3.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:570ef7cf892f0afbe5b2ee410c507ce12e15a5fa91017a0009f79f7d93a1268f", size = 267838, upload-time = "2024-08-27T20:52:33.911Z" }, + { url = "https://files.pythonhosted.org/packages/e3/04/33351c5d5108460a8ce6d512307690b023f0cfcad5899499f5c83b9d63b1/contourpy-1.3.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:da84c537cb8b97d153e9fb208c221c45605f73147bd4cadd23bdae915042aad6", size = 251549, upload-time = "2024-08-27T20:52:39.179Z" }, + { url = "https://files.pythonhosted.org/packages/51/3d/aa0fe6ae67e3ef9f178389e4caaaa68daf2f9024092aa3c6032e3d174670/contourpy-1.3.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0be4d8425bfa755e0fd76ee1e019636ccc7c29f77a7c86b4328a9eb6a26d0639", size = 303177, upload-time = "2024-08-27T20:52:44.789Z" }, + { url = "https://files.pythonhosted.org/packages/56/c3/c85a7e3e0cab635575d3b657f9535443a6f5d20fac1a1911eaa4bbe1aceb/contourpy-1.3.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9c0da700bf58f6e0b65312d0a5e695179a71d0163957fa381bb3c1f72972537c", size = 341735, upload-time = "2024-08-27T20:52:51.05Z" }, + { url = "https://files.pythonhosted.org/packages/dd/8d/20f7a211a7be966a53f474bc90b1a8202e9844b3f1ef85f3ae45a77151ee/contourpy-1.3.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:eb8b141bb00fa977d9122636b16aa67d37fd40a3d8b52dd837e536d64b9a4d06", size = 314679, upload-time = "2024-08-27T20:52:58.473Z" }, + { url = "https://files.pythonhosted.org/packages/6e/be/524e377567defac0e21a46e2a529652d165fed130a0d8a863219303cee18/contourpy-1.3.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3634b5385c6716c258d0419c46d05c8aa7dc8cb70326c9a4fb66b69ad2b52e09", size = 320549, upload-time = "2024-08-27T20:53:06.593Z" }, + { url = "https://files.pythonhosted.org/packages/0f/96/fdb2552a172942d888915f3a6663812e9bc3d359d53dafd4289a0fb462f0/contourpy-1.3.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:0dce35502151b6bd35027ac39ba6e5a44be13a68f55735c3612c568cac3805fd", size = 1263068, upload-time = "2024-08-27T20:53:23.442Z" }, + { url = "https://files.pythonhosted.org/packages/2a/25/632eab595e3140adfa92f1322bf8915f68c932bac468e89eae9974cf1c00/contourpy-1.3.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:aea348f053c645100612b333adc5983d87be69acdc6d77d3169c090d3b01dc35", size = 1322833, upload-time = "2024-08-27T20:53:39.243Z" }, + { url = "https://files.pythonhosted.org/packages/73/e3/69738782e315a1d26d29d71a550dbbe3eb6c653b028b150f70c1a5f4f229/contourpy-1.3.0-cp312-cp312-win32.whl", hash = "sha256:90f73a5116ad1ba7174341ef3ea5c3150ddf20b024b98fb0c3b29034752c8aeb", size = 172681, upload-time = "2024-08-27T20:53:43.05Z" }, + { url = "https://files.pythonhosted.org/packages/0c/89/9830ba00d88e43d15e53d64931e66b8792b46eb25e2050a88fec4a0df3d5/contourpy-1.3.0-cp312-cp312-win_amd64.whl", hash = "sha256:b11b39aea6be6764f84360fce6c82211a9db32a7c7de8fa6dd5397cf1d079c3b", size = 218283, upload-time = "2024-08-27T20:53:47.232Z" }, + { url = "https://files.pythonhosted.org/packages/53/a1/d20415febfb2267af2d7f06338e82171824d08614084714fb2c1dac9901f/contourpy-1.3.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:3e1c7fa44aaae40a2247e2e8e0627f4bea3dd257014764aa644f319a5f8600e3", size = 267879, upload-time = "2024-08-27T20:53:51.597Z" }, + { url = "https://files.pythonhosted.org/packages/aa/45/5a28a3570ff6218d8bdfc291a272a20d2648104815f01f0177d103d985e1/contourpy-1.3.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:364174c2a76057feef647c802652f00953b575723062560498dc7930fc9b1cb7", size = 251573, upload-time = "2024-08-27T20:53:55.659Z" }, + { url = "https://files.pythonhosted.org/packages/39/1c/d3f51540108e3affa84f095c8b04f0aa833bb797bc8baa218a952a98117d/contourpy-1.3.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:32b238b3b3b649e09ce9aaf51f0c261d38644bdfa35cbaf7b263457850957a84", size = 303184, upload-time = "2024-08-27T20:54:00.225Z" }, + { url = "https://files.pythonhosted.org/packages/00/56/1348a44fb6c3a558c1a3a0cd23d329d604c99d81bf5a4b58c6b71aab328f/contourpy-1.3.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d51fca85f9f7ad0b65b4b9fe800406d0d77017d7270d31ec3fb1cc07358fdea0", size = 340262, upload-time = "2024-08-27T20:54:05.234Z" }, + { url = "https://files.pythonhosted.org/packages/2b/23/00d665ba67e1bb666152131da07e0f24c95c3632d7722caa97fb61470eca/contourpy-1.3.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:732896af21716b29ab3e988d4ce14bc5133733b85956316fb0c56355f398099b", size = 313806, upload-time = "2024-08-27T20:54:09.889Z" }, + { url = "https://files.pythonhosted.org/packages/5a/42/3cf40f7040bb8362aea19af9a5fb7b32ce420f645dd1590edcee2c657cd5/contourpy-1.3.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d73f659398a0904e125280836ae6f88ba9b178b2fed6884f3b1f95b989d2c8da", size = 319710, upload-time = "2024-08-27T20:54:14.536Z" }, + { url = "https://files.pythonhosted.org/packages/05/32/f3bfa3fc083b25e1a7ae09197f897476ee68e7386e10404bdf9aac7391f0/contourpy-1.3.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:c6c7c2408b7048082932cf4e641fa3b8ca848259212f51c8c59c45aa7ac18f14", size = 1264107, upload-time = "2024-08-27T20:54:29.735Z" }, + { url = "https://files.pythonhosted.org/packages/1c/1e/1019d34473a736664f2439542b890b2dc4c6245f5c0d8cdfc0ccc2cab80c/contourpy-1.3.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:f317576606de89da6b7e0861cf6061f6146ead3528acabff9236458a6ba467f8", size = 1322458, upload-time = "2024-08-27T20:54:45.507Z" }, + { url = "https://files.pythonhosted.org/packages/22/85/4f8bfd83972cf8909a4d36d16b177f7b8bdd942178ea4bf877d4a380a91c/contourpy-1.3.0-cp313-cp313-win32.whl", hash = "sha256:31cd3a85dbdf1fc002280c65caa7e2b5f65e4a973fcdf70dd2fdcb9868069294", size = 172643, upload-time = "2024-08-27T20:55:52.754Z" }, + { url = "https://files.pythonhosted.org/packages/cc/4a/fb3c83c1baba64ba90443626c228ca14f19a87c51975d3b1de308dd2cf08/contourpy-1.3.0-cp313-cp313-win_amd64.whl", hash = "sha256:4553c421929ec95fb07b3aaca0fae668b2eb5a5203d1217ca7c34c063c53d087", size = 218301, upload-time = "2024-08-27T20:55:56.509Z" }, + { url = "https://files.pythonhosted.org/packages/76/65/702f4064f397821fea0cb493f7d3bc95a5d703e20954dce7d6d39bacf378/contourpy-1.3.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:345af746d7766821d05d72cb8f3845dfd08dd137101a2cb9b24de277d716def8", size = 278972, upload-time = "2024-08-27T20:54:50.347Z" }, + { url = "https://files.pythonhosted.org/packages/80/85/21f5bba56dba75c10a45ec00ad3b8190dbac7fd9a8a8c46c6116c933e9cf/contourpy-1.3.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:3bb3808858a9dc68f6f03d319acd5f1b8a337e6cdda197f02f4b8ff67ad2057b", size = 263375, upload-time = "2024-08-27T20:54:54.909Z" }, + { url = "https://files.pythonhosted.org/packages/0a/64/084c86ab71d43149f91ab3a4054ccf18565f0a8af36abfa92b1467813ed6/contourpy-1.3.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:420d39daa61aab1221567b42eecb01112908b2cab7f1b4106a52caaec8d36973", size = 307188, upload-time = "2024-08-27T20:55:00.184Z" }, + { url = "https://files.pythonhosted.org/packages/3d/ff/d61a4c288dc42da0084b8d9dc2aa219a850767165d7d9a9c364ff530b509/contourpy-1.3.0-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4d63ee447261e963af02642ffcb864e5a2ee4cbfd78080657a9880b8b1868e18", size = 345644, upload-time = "2024-08-27T20:55:05.673Z" }, + { url = "https://files.pythonhosted.org/packages/ca/aa/00d2313d35ec03f188e8f0786c2fc61f589306e02fdc158233697546fd58/contourpy-1.3.0-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:167d6c890815e1dac9536dca00828b445d5d0df4d6a8c6adb4a7ec3166812fa8", size = 317141, upload-time = "2024-08-27T20:55:11.047Z" }, + { url = "https://files.pythonhosted.org/packages/8d/6a/b5242c8cb32d87f6abf4f5e3044ca397cb1a76712e3fa2424772e3ff495f/contourpy-1.3.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:710a26b3dc80c0e4febf04555de66f5fd17e9cf7170a7b08000601a10570bda6", size = 323469, upload-time = "2024-08-27T20:55:15.914Z" }, + { url = "https://files.pythonhosted.org/packages/6f/a6/73e929d43028a9079aca4bde107494864d54f0d72d9db508a51ff0878593/contourpy-1.3.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:75ee7cb1a14c617f34a51d11fa7524173e56551646828353c4af859c56b766e2", size = 1260894, upload-time = "2024-08-27T20:55:31.553Z" }, + { url = "https://files.pythonhosted.org/packages/2b/1e/1e726ba66eddf21c940821df8cf1a7d15cb165f0682d62161eaa5e93dae1/contourpy-1.3.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:33c92cdae89ec5135d036e7218e69b0bb2851206077251f04a6c4e0e21f03927", size = 1314829, upload-time = "2024-08-27T20:55:47.837Z" }, + { url = "https://files.pythonhosted.org/packages/b3/e3/b9f72758adb6ef7397327ceb8b9c39c75711affb220e4f53c745ea1d5a9a/contourpy-1.3.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:a11077e395f67ffc2c44ec2418cfebed032cd6da3022a94fc227b6faf8e2acb8", size = 265518, upload-time = "2024-08-27T20:56:01.333Z" }, + { url = "https://files.pythonhosted.org/packages/ec/22/19f5b948367ab5260fb41d842c7a78dae645603881ea6bc39738bcfcabf6/contourpy-1.3.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:e8134301d7e204c88ed7ab50028ba06c683000040ede1d617298611f9dc6240c", size = 249350, upload-time = "2024-08-27T20:56:05.432Z" }, + { url = "https://files.pythonhosted.org/packages/26/76/0c7d43263dd00ae21a91a24381b7e813d286a3294d95d179ef3a7b9fb1d7/contourpy-1.3.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e12968fdfd5bb45ffdf6192a590bd8ddd3ba9e58360b29683c6bb71a7b41edca", size = 309167, upload-time = "2024-08-27T20:56:10.034Z" }, + { url = "https://files.pythonhosted.org/packages/96/3b/cadff6773e89f2a5a492c1a8068e21d3fccaf1a1c1df7d65e7c8e3ef60ba/contourpy-1.3.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fd2a0fc506eccaaa7595b7e1418951f213cf8255be2600f1ea1b61e46a60c55f", size = 348279, upload-time = "2024-08-27T20:56:15.41Z" }, + { url = "https://files.pythonhosted.org/packages/e1/86/158cc43aa549d2081a955ab11c6bdccc7a22caacc2af93186d26f5f48746/contourpy-1.3.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4cfb5c62ce023dfc410d6059c936dcf96442ba40814aefbfa575425a3a7f19dc", size = 318519, upload-time = "2024-08-27T20:56:21.813Z" }, + { url = "https://files.pythonhosted.org/packages/05/11/57335544a3027e9b96a05948c32e566328e3a2f84b7b99a325b7a06d2b06/contourpy-1.3.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:68a32389b06b82c2fdd68276148d7b9275b5f5cf13e5417e4252f6d1a34f72a2", size = 321922, upload-time = "2024-08-27T20:56:26.983Z" }, + { url = "https://files.pythonhosted.org/packages/0b/e3/02114f96543f4a1b694333b92a6dcd4f8eebbefcc3a5f3bbb1316634178f/contourpy-1.3.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:94e848a6b83da10898cbf1311a815f770acc9b6a3f2d646f330d57eb4e87592e", size = 1258017, upload-time = "2024-08-27T20:56:42.246Z" }, + { url = "https://files.pythonhosted.org/packages/f3/3b/bfe4c81c6d5881c1c643dde6620be0b42bf8aab155976dd644595cfab95c/contourpy-1.3.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:d78ab28a03c854a873787a0a42254a0ccb3cb133c672f645c9f9c8f3ae9d0800", size = 1316773, upload-time = "2024-08-27T20:56:58.58Z" }, + { url = "https://files.pythonhosted.org/packages/f1/17/c52d2970784383cafb0bd918b6fb036d98d96bbf0bc1befb5d1e31a07a70/contourpy-1.3.0-cp39-cp39-win32.whl", hash = "sha256:81cb5ed4952aae6014bc9d0421dec7c5835c9c8c31cdf51910b708f548cf58e5", size = 171353, upload-time = "2024-08-27T20:57:02.718Z" }, + { url = "https://files.pythonhosted.org/packages/53/23/db9f69676308e094d3c45f20cc52e12d10d64f027541c995d89c11ad5c75/contourpy-1.3.0-cp39-cp39-win_amd64.whl", hash = "sha256:14e262f67bd7e6eb6880bc564dcda30b15e351a594657e55b7eec94b6ef72843", size = 211817, upload-time = "2024-08-27T20:57:06.328Z" }, + { url = "https://files.pythonhosted.org/packages/d1/09/60e486dc2b64c94ed33e58dcfb6f808192c03dfc5574c016218b9b7680dc/contourpy-1.3.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:fe41b41505a5a33aeaed2a613dccaeaa74e0e3ead6dd6fd3a118fb471644fd6c", size = 261886, upload-time = "2024-08-27T20:57:10.863Z" }, + { url = "https://files.pythonhosted.org/packages/19/20/b57f9f7174fcd439a7789fb47d764974ab646fa34d1790551de386457a8e/contourpy-1.3.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eca7e17a65f72a5133bdbec9ecf22401c62bcf4821361ef7811faee695799779", size = 311008, upload-time = "2024-08-27T20:57:15.588Z" }, + { url = "https://files.pythonhosted.org/packages/74/fc/5040d42623a1845d4f17a418e590fd7a79ae8cb2bad2b2f83de63c3bdca4/contourpy-1.3.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:1ec4dc6bf570f5b22ed0d7efba0dfa9c5b9e0431aeea7581aa217542d9e809a4", size = 215690, upload-time = "2024-08-27T20:57:19.321Z" }, + { url = "https://files.pythonhosted.org/packages/2b/24/dc3dcd77ac7460ab7e9d2b01a618cb31406902e50e605a8d6091f0a8f7cc/contourpy-1.3.0-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:00ccd0dbaad6d804ab259820fa7cb0b8036bda0686ef844d24125d8287178ce0", size = 261894, upload-time = "2024-08-27T20:57:23.873Z" }, + { url = "https://files.pythonhosted.org/packages/b1/db/531642a01cfec39d1682e46b5457b07cf805e3c3c584ec27e2a6223f8f6c/contourpy-1.3.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8ca947601224119117f7c19c9cdf6b3ab54c5726ef1d906aa4a69dfb6dd58102", size = 311099, upload-time = "2024-08-27T20:57:28.58Z" }, + { url = "https://files.pythonhosted.org/packages/38/1e/94bda024d629f254143a134eead69e21c836429a2a6ce82209a00ddcb79a/contourpy-1.3.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:c6ec93afeb848a0845a18989da3beca3eec2c0f852322efe21af1931147d12cb", size = 215838, upload-time = "2024-08-27T20:57:32.913Z" }, +] + +[[package]] +name = "contourpy" +version = "1.3.2" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version == '3.10.*'", +] +dependencies = [ + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.10.*'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/66/54/eb9bfc647b19f2009dd5c7f5ec51c4e6ca831725f1aea7a993034f483147/contourpy-1.3.2.tar.gz", hash = "sha256:b6945942715a034c671b7fc54f9588126b0b8bf23db2696e3ca8328f3ff0ab54", size = 13466130, upload-time = "2025-04-15T17:47:53.79Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/12/a3/da4153ec8fe25d263aa48c1a4cbde7f49b59af86f0b6f7862788c60da737/contourpy-1.3.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ba38e3f9f330af820c4b27ceb4b9c7feee5fe0493ea53a8720f4792667465934", size = 268551, upload-time = "2025-04-15T17:34:46.581Z" }, + { url = "https://files.pythonhosted.org/packages/2f/6c/330de89ae1087eb622bfca0177d32a7ece50c3ef07b28002de4757d9d875/contourpy-1.3.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:dc41ba0714aa2968d1f8674ec97504a8f7e334f48eeacebcaa6256213acb0989", size = 253399, upload-time = "2025-04-15T17:34:51.427Z" }, + { url = "https://files.pythonhosted.org/packages/c1/bd/20c6726b1b7f81a8bee5271bed5c165f0a8e1f572578a9d27e2ccb763cb2/contourpy-1.3.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9be002b31c558d1ddf1b9b415b162c603405414bacd6932d031c5b5a8b757f0d", size = 312061, upload-time = "2025-04-15T17:34:55.961Z" }, + { url = "https://files.pythonhosted.org/packages/22/fc/a9665c88f8a2473f823cf1ec601de9e5375050f1958cbb356cdf06ef1ab6/contourpy-1.3.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8d2e74acbcba3bfdb6d9d8384cdc4f9260cae86ed9beee8bd5f54fee49a430b9", size = 351956, upload-time = "2025-04-15T17:35:00.992Z" }, + { url = "https://files.pythonhosted.org/packages/25/eb/9f0a0238f305ad8fb7ef42481020d6e20cf15e46be99a1fcf939546a177e/contourpy-1.3.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e259bced5549ac64410162adc973c5e2fb77f04df4a439d00b478e57a0e65512", size = 320872, upload-time = "2025-04-15T17:35:06.177Z" }, + { url = "https://files.pythonhosted.org/packages/32/5c/1ee32d1c7956923202f00cf8d2a14a62ed7517bdc0ee1e55301227fc273c/contourpy-1.3.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ad687a04bc802cbe8b9c399c07162a3c35e227e2daccf1668eb1f278cb698631", size = 325027, upload-time = "2025-04-15T17:35:11.244Z" }, + { url = "https://files.pythonhosted.org/packages/83/bf/9baed89785ba743ef329c2b07fd0611d12bfecbedbdd3eeecf929d8d3b52/contourpy-1.3.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:cdd22595308f53ef2f891040ab2b93d79192513ffccbd7fe19be7aa773a5e09f", size = 1306641, upload-time = "2025-04-15T17:35:26.701Z" }, + { url = "https://files.pythonhosted.org/packages/d4/cc/74e5e83d1e35de2d28bd97033426b450bc4fd96e092a1f7a63dc7369b55d/contourpy-1.3.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:b4f54d6a2defe9f257327b0f243612dd051cc43825587520b1bf74a31e2f6ef2", size = 1374075, upload-time = "2025-04-15T17:35:43.204Z" }, + { url = "https://files.pythonhosted.org/packages/0c/42/17f3b798fd5e033b46a16f8d9fcb39f1aba051307f5ebf441bad1ecf78f8/contourpy-1.3.2-cp310-cp310-win32.whl", hash = "sha256:f939a054192ddc596e031e50bb13b657ce318cf13d264f095ce9db7dc6ae81c0", size = 177534, upload-time = "2025-04-15T17:35:46.554Z" }, + { url = "https://files.pythonhosted.org/packages/54/ec/5162b8582f2c994721018d0c9ece9dc6ff769d298a8ac6b6a652c307e7df/contourpy-1.3.2-cp310-cp310-win_amd64.whl", hash = "sha256:c440093bbc8fc21c637c03bafcbef95ccd963bc6e0514ad887932c18ca2a759a", size = 221188, upload-time = "2025-04-15T17:35:50.064Z" }, + { url = "https://files.pythonhosted.org/packages/b3/b9/ede788a0b56fc5b071639d06c33cb893f68b1178938f3425debebe2dab78/contourpy-1.3.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6a37a2fb93d4df3fc4c0e363ea4d16f83195fc09c891bc8ce072b9d084853445", size = 269636, upload-time = "2025-04-15T17:35:54.473Z" }, + { url = "https://files.pythonhosted.org/packages/e6/75/3469f011d64b8bbfa04f709bfc23e1dd71be54d05b1b083be9f5b22750d1/contourpy-1.3.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:b7cd50c38f500bbcc9b6a46643a40e0913673f869315d8e70de0438817cb7773", size = 254636, upload-time = "2025-04-15T17:35:58.283Z" }, + { url = "https://files.pythonhosted.org/packages/8d/2f/95adb8dae08ce0ebca4fd8e7ad653159565d9739128b2d5977806656fcd2/contourpy-1.3.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d6658ccc7251a4433eebd89ed2672c2ed96fba367fd25ca9512aa92a4b46c4f1", size = 313053, upload-time = "2025-04-15T17:36:03.235Z" }, + { url = "https://files.pythonhosted.org/packages/c3/a6/8ccf97a50f31adfa36917707fe39c9a0cbc24b3bbb58185577f119736cc9/contourpy-1.3.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:70771a461aaeb335df14deb6c97439973d253ae70660ca085eec25241137ef43", size = 352985, upload-time = "2025-04-15T17:36:08.275Z" }, + { url = "https://files.pythonhosted.org/packages/1d/b6/7925ab9b77386143f39d9c3243fdd101621b4532eb126743201160ffa7e6/contourpy-1.3.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:65a887a6e8c4cd0897507d814b14c54a8c2e2aa4ac9f7686292f9769fcf9a6ab", size = 323750, upload-time = "2025-04-15T17:36:13.29Z" }, + { url = "https://files.pythonhosted.org/packages/c2/f3/20c5d1ef4f4748e52d60771b8560cf00b69d5c6368b5c2e9311bcfa2a08b/contourpy-1.3.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3859783aefa2b8355697f16642695a5b9792e7a46ab86da1118a4a23a51a33d7", size = 326246, upload-time = "2025-04-15T17:36:18.329Z" }, + { url = "https://files.pythonhosted.org/packages/8c/e5/9dae809e7e0b2d9d70c52b3d24cba134dd3dad979eb3e5e71f5df22ed1f5/contourpy-1.3.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:eab0f6db315fa4d70f1d8ab514e527f0366ec021ff853d7ed6a2d33605cf4b83", size = 1308728, upload-time = "2025-04-15T17:36:33.878Z" }, + { url = "https://files.pythonhosted.org/packages/e2/4a/0058ba34aeea35c0b442ae61a4f4d4ca84d6df8f91309bc2d43bb8dd248f/contourpy-1.3.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:d91a3ccc7fea94ca0acab82ceb77f396d50a1f67412efe4c526f5d20264e6ecd", size = 1375762, upload-time = "2025-04-15T17:36:51.295Z" }, + { url = "https://files.pythonhosted.org/packages/09/33/7174bdfc8b7767ef2c08ed81244762d93d5c579336fc0b51ca57b33d1b80/contourpy-1.3.2-cp311-cp311-win32.whl", hash = "sha256:1c48188778d4d2f3d48e4643fb15d8608b1d01e4b4d6b0548d9b336c28fc9b6f", size = 178196, upload-time = "2025-04-15T17:36:55.002Z" }, + { url = "https://files.pythonhosted.org/packages/5e/fe/4029038b4e1c4485cef18e480b0e2cd2d755448bb071eb9977caac80b77b/contourpy-1.3.2-cp311-cp311-win_amd64.whl", hash = "sha256:5ebac872ba09cb8f2131c46b8739a7ff71de28a24c869bcad554477eb089a878", size = 222017, upload-time = "2025-04-15T17:36:58.576Z" }, + { url = "https://files.pythonhosted.org/packages/34/f7/44785876384eff370c251d58fd65f6ad7f39adce4a093c934d4a67a7c6b6/contourpy-1.3.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:4caf2bcd2969402bf77edc4cb6034c7dd7c0803213b3523f111eb7460a51b8d2", size = 271580, upload-time = "2025-04-15T17:37:03.105Z" }, + { url = "https://files.pythonhosted.org/packages/93/3b/0004767622a9826ea3d95f0e9d98cd8729015768075d61f9fea8eeca42a8/contourpy-1.3.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:82199cb78276249796419fe36b7386bd8d2cc3f28b3bc19fe2454fe2e26c4c15", size = 255530, upload-time = "2025-04-15T17:37:07.026Z" }, + { url = "https://files.pythonhosted.org/packages/e7/bb/7bd49e1f4fa805772d9fd130e0d375554ebc771ed7172f48dfcd4ca61549/contourpy-1.3.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:106fab697af11456fcba3e352ad50effe493a90f893fca6c2ca5c033820cea92", size = 307688, upload-time = "2025-04-15T17:37:11.481Z" }, + { url = "https://files.pythonhosted.org/packages/fc/97/e1d5dbbfa170725ef78357a9a0edc996b09ae4af170927ba8ce977e60a5f/contourpy-1.3.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d14f12932a8d620e307f715857107b1d1845cc44fdb5da2bc8e850f5ceba9f87", size = 347331, upload-time = "2025-04-15T17:37:18.212Z" }, + { url = "https://files.pythonhosted.org/packages/6f/66/e69e6e904f5ecf6901be3dd16e7e54d41b6ec6ae3405a535286d4418ffb4/contourpy-1.3.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:532fd26e715560721bb0d5fc7610fce279b3699b018600ab999d1be895b09415", size = 318963, upload-time = "2025-04-15T17:37:22.76Z" }, + { url = "https://files.pythonhosted.org/packages/a8/32/b8a1c8965e4f72482ff2d1ac2cd670ce0b542f203c8e1d34e7c3e6925da7/contourpy-1.3.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f26b383144cf2d2c29f01a1e8170f50dacf0eac02d64139dcd709a8ac4eb3cfe", size = 323681, upload-time = "2025-04-15T17:37:33.001Z" }, + { url = "https://files.pythonhosted.org/packages/30/c6/12a7e6811d08757c7162a541ca4c5c6a34c0f4e98ef2b338791093518e40/contourpy-1.3.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:c49f73e61f1f774650a55d221803b101d966ca0c5a2d6d5e4320ec3997489441", size = 1308674, upload-time = "2025-04-15T17:37:48.64Z" }, + { url = "https://files.pythonhosted.org/packages/2a/8a/bebe5a3f68b484d3a2b8ffaf84704b3e343ef1addea528132ef148e22b3b/contourpy-1.3.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:3d80b2c0300583228ac98d0a927a1ba6a2ba6b8a742463c564f1d419ee5b211e", size = 1380480, upload-time = "2025-04-15T17:38:06.7Z" }, + { url = "https://files.pythonhosted.org/packages/34/db/fcd325f19b5978fb509a7d55e06d99f5f856294c1991097534360b307cf1/contourpy-1.3.2-cp312-cp312-win32.whl", hash = "sha256:90df94c89a91b7362e1142cbee7568f86514412ab8a2c0d0fca72d7e91b62912", size = 178489, upload-time = "2025-04-15T17:38:10.338Z" }, + { url = "https://files.pythonhosted.org/packages/01/c8/fadd0b92ffa7b5eb5949bf340a63a4a496a6930a6c37a7ba0f12acb076d6/contourpy-1.3.2-cp312-cp312-win_amd64.whl", hash = "sha256:8c942a01d9163e2e5cfb05cb66110121b8d07ad438a17f9e766317bcb62abf73", size = 223042, upload-time = "2025-04-15T17:38:14.239Z" }, + { url = "https://files.pythonhosted.org/packages/2e/61/5673f7e364b31e4e7ef6f61a4b5121c5f170f941895912f773d95270f3a2/contourpy-1.3.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:de39db2604ae755316cb5967728f4bea92685884b1e767b7c24e983ef5f771cb", size = 271630, upload-time = "2025-04-15T17:38:19.142Z" }, + { url = "https://files.pythonhosted.org/packages/ff/66/a40badddd1223822c95798c55292844b7e871e50f6bfd9f158cb25e0bd39/contourpy-1.3.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:3f9e896f447c5c8618f1edb2bafa9a4030f22a575ec418ad70611450720b5b08", size = 255670, upload-time = "2025-04-15T17:38:23.688Z" }, + { url = "https://files.pythonhosted.org/packages/1e/c7/cf9fdee8200805c9bc3b148f49cb9482a4e3ea2719e772602a425c9b09f8/contourpy-1.3.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:71e2bd4a1c4188f5c2b8d274da78faab884b59df20df63c34f74aa1813c4427c", size = 306694, upload-time = "2025-04-15T17:38:28.238Z" }, + { url = "https://files.pythonhosted.org/packages/dd/e7/ccb9bec80e1ba121efbffad7f38021021cda5be87532ec16fd96533bb2e0/contourpy-1.3.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:de425af81b6cea33101ae95ece1f696af39446db9682a0b56daaa48cfc29f38f", size = 345986, upload-time = "2025-04-15T17:38:33.502Z" }, + { url = "https://files.pythonhosted.org/packages/dc/49/ca13bb2da90391fa4219fdb23b078d6065ada886658ac7818e5441448b78/contourpy-1.3.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:977e98a0e0480d3fe292246417239d2d45435904afd6d7332d8455981c408b85", size = 318060, upload-time = "2025-04-15T17:38:38.672Z" }, + { url = "https://files.pythonhosted.org/packages/c8/65/5245ce8c548a8422236c13ffcdcdada6a2a812c361e9e0c70548bb40b661/contourpy-1.3.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:434f0adf84911c924519d2b08fc10491dd282b20bdd3fa8f60fd816ea0b48841", size = 322747, upload-time = "2025-04-15T17:38:43.712Z" }, + { url = "https://files.pythonhosted.org/packages/72/30/669b8eb48e0a01c660ead3752a25b44fdb2e5ebc13a55782f639170772f9/contourpy-1.3.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:c66c4906cdbc50e9cba65978823e6e00b45682eb09adbb78c9775b74eb222422", size = 1308895, upload-time = "2025-04-15T17:39:00.224Z" }, + { url = "https://files.pythonhosted.org/packages/05/5a/b569f4250decee6e8d54498be7bdf29021a4c256e77fe8138c8319ef8eb3/contourpy-1.3.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:8b7fc0cd78ba2f4695fd0a6ad81a19e7e3ab825c31b577f384aa9d7817dc3bef", size = 1379098, upload-time = "2025-04-15T17:43:29.649Z" }, + { url = "https://files.pythonhosted.org/packages/19/ba/b227c3886d120e60e41b28740ac3617b2f2b971b9f601c835661194579f1/contourpy-1.3.2-cp313-cp313-win32.whl", hash = "sha256:15ce6ab60957ca74cff444fe66d9045c1fd3e92c8936894ebd1f3eef2fff075f", size = 178535, upload-time = "2025-04-15T17:44:44.532Z" }, + { url = "https://files.pythonhosted.org/packages/12/6e/2fed56cd47ca739b43e892707ae9a13790a486a3173be063681ca67d2262/contourpy-1.3.2-cp313-cp313-win_amd64.whl", hash = "sha256:e1578f7eafce927b168752ed7e22646dad6cd9bca673c60bff55889fa236ebf9", size = 223096, upload-time = "2025-04-15T17:44:48.194Z" }, + { url = "https://files.pythonhosted.org/packages/54/4c/e76fe2a03014a7c767d79ea35c86a747e9325537a8b7627e0e5b3ba266b4/contourpy-1.3.2-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:0475b1f6604896bc7c53bb070e355e9321e1bc0d381735421a2d2068ec56531f", size = 285090, upload-time = "2025-04-15T17:43:34.084Z" }, + { url = "https://files.pythonhosted.org/packages/7b/e2/5aba47debd55d668e00baf9651b721e7733975dc9fc27264a62b0dd26eb8/contourpy-1.3.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:c85bb486e9be652314bb5b9e2e3b0d1b2e643d5eec4992c0fbe8ac71775da739", size = 268643, upload-time = "2025-04-15T17:43:38.626Z" }, + { url = "https://files.pythonhosted.org/packages/a1/37/cd45f1f051fe6230f751cc5cdd2728bb3a203f5619510ef11e732109593c/contourpy-1.3.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:745b57db7758f3ffc05a10254edd3182a2a83402a89c00957a8e8a22f5582823", size = 310443, upload-time = "2025-04-15T17:43:44.522Z" }, + { url = "https://files.pythonhosted.org/packages/8b/a2/36ea6140c306c9ff6dd38e3bcec80b3b018474ef4d17eb68ceecd26675f4/contourpy-1.3.2-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:970e9173dbd7eba9b4e01aab19215a48ee5dd3f43cef736eebde064a171f89a5", size = 349865, upload-time = "2025-04-15T17:43:49.545Z" }, + { url = "https://files.pythonhosted.org/packages/95/b7/2fc76bc539693180488f7b6cc518da7acbbb9e3b931fd9280504128bf956/contourpy-1.3.2-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c6c4639a9c22230276b7bffb6a850dfc8258a2521305e1faefe804d006b2e532", size = 321162, upload-time = "2025-04-15T17:43:54.203Z" }, + { url = "https://files.pythonhosted.org/packages/f4/10/76d4f778458b0aa83f96e59d65ece72a060bacb20cfbee46cf6cd5ceba41/contourpy-1.3.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cc829960f34ba36aad4302e78eabf3ef16a3a100863f0d4eeddf30e8a485a03b", size = 327355, upload-time = "2025-04-15T17:44:01.025Z" }, + { url = "https://files.pythonhosted.org/packages/43/a3/10cf483ea683f9f8ab096c24bad3cce20e0d1dd9a4baa0e2093c1c962d9d/contourpy-1.3.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:d32530b534e986374fc19eaa77fcb87e8a99e5431499949b828312bdcd20ac52", size = 1307935, upload-time = "2025-04-15T17:44:17.322Z" }, + { url = "https://files.pythonhosted.org/packages/78/73/69dd9a024444489e22d86108e7b913f3528f56cfc312b5c5727a44188471/contourpy-1.3.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:e298e7e70cf4eb179cc1077be1c725b5fd131ebc81181bf0c03525c8abc297fd", size = 1372168, upload-time = "2025-04-15T17:44:33.43Z" }, + { url = "https://files.pythonhosted.org/packages/0f/1b/96d586ccf1b1a9d2004dd519b25fbf104a11589abfd05484ff12199cca21/contourpy-1.3.2-cp313-cp313t-win32.whl", hash = "sha256:d0e589ae0d55204991450bb5c23f571c64fe43adaa53f93fc902a84c96f52fe1", size = 189550, upload-time = "2025-04-15T17:44:37.092Z" }, + { url = "https://files.pythonhosted.org/packages/b0/e6/6000d0094e8a5e32ad62591c8609e269febb6e4db83a1c75ff8868b42731/contourpy-1.3.2-cp313-cp313t-win_amd64.whl", hash = "sha256:78e9253c3de756b3f6a5174d024c4835acd59eb3f8e2ca13e775dbffe1558f69", size = 238214, upload-time = "2025-04-15T17:44:40.827Z" }, + { url = "https://files.pythonhosted.org/packages/33/05/b26e3c6ecc05f349ee0013f0bb850a761016d89cec528a98193a48c34033/contourpy-1.3.2-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:fd93cc7f3139b6dd7aab2f26a90dde0aa9fc264dbf70f6740d498a70b860b82c", size = 265681, upload-time = "2025-04-15T17:44:59.314Z" }, + { url = "https://files.pythonhosted.org/packages/2b/25/ac07d6ad12affa7d1ffed11b77417d0a6308170f44ff20fa1d5aa6333f03/contourpy-1.3.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:107ba8a6a7eec58bb475329e6d3b95deba9440667c4d62b9b6063942b61d7f16", size = 315101, upload-time = "2025-04-15T17:45:04.165Z" }, + { url = "https://files.pythonhosted.org/packages/8f/4d/5bb3192bbe9d3f27e3061a6a8e7733c9120e203cb8515767d30973f71030/contourpy-1.3.2-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:ded1706ed0c1049224531b81128efbd5084598f18d8a2d9efae833edbd2b40ad", size = 220599, upload-time = "2025-04-15T17:45:08.456Z" }, + { url = "https://files.pythonhosted.org/packages/ff/c0/91f1215d0d9f9f343e4773ba6c9b89e8c0cc7a64a6263f21139da639d848/contourpy-1.3.2-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:5f5964cdad279256c084b69c3f412b7801e15356b16efa9d78aa974041903da0", size = 266807, upload-time = "2025-04-15T17:45:15.535Z" }, + { url = "https://files.pythonhosted.org/packages/d4/79/6be7e90c955c0487e7712660d6cead01fa17bff98e0ea275737cc2bc8e71/contourpy-1.3.2-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:49b65a95d642d4efa8f64ba12558fcb83407e58a2dfba9d796d77b63ccfcaff5", size = 318729, upload-time = "2025-04-15T17:45:20.166Z" }, + { url = "https://files.pythonhosted.org/packages/87/68/7f46fb537958e87427d98a4074bcde4b67a70b04900cfc5ce29bc2f556c1/contourpy-1.3.2-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:8c5acb8dddb0752bf252e01a3035b21443158910ac16a3b0d20e7fed7d534ce5", size = 221791, upload-time = "2025-04-15T17:45:24.794Z" }, +] + +[[package]] +name = "contourpy" +version = "1.3.3" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version >= '3.12'", + "python_full_version == '3.11.*'", +] +dependencies = [ + { name = "numpy", version = "2.3.4", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/58/01/1253e6698a07380cd31a736d248a3f2a50a7c88779a1813da27503cadc2a/contourpy-1.3.3.tar.gz", hash = "sha256:083e12155b210502d0bca491432bb04d56dc3432f95a979b429f2848c3dbe880", size = 13466174, upload-time = "2025-07-26T12:03:12.549Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/91/2e/c4390a31919d8a78b90e8ecf87cd4b4c4f05a5b48d05ec17db8e5404c6f4/contourpy-1.3.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:709a48ef9a690e1343202916450bc48b9e51c049b089c7f79a267b46cffcdaa1", size = 288773, upload-time = "2025-07-26T12:01:02.277Z" }, + { url = "https://files.pythonhosted.org/packages/0d/44/c4b0b6095fef4dc9c420e041799591e3b63e9619e3044f7f4f6c21c0ab24/contourpy-1.3.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:23416f38bfd74d5d28ab8429cc4d63fa67d5068bd711a85edb1c3fb0c3e2f381", size = 270149, upload-time = "2025-07-26T12:01:04.072Z" }, + { url = "https://files.pythonhosted.org/packages/30/2e/dd4ced42fefac8470661d7cb7e264808425e6c5d56d175291e93890cce09/contourpy-1.3.3-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:929ddf8c4c7f348e4c0a5a3a714b5c8542ffaa8c22954862a46ca1813b667ee7", size = 329222, upload-time = "2025-07-26T12:01:05.688Z" }, + { url = "https://files.pythonhosted.org/packages/f2/74/cc6ec2548e3d276c71389ea4802a774b7aa3558223b7bade3f25787fafc2/contourpy-1.3.3-cp311-cp311-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:9e999574eddae35f1312c2b4b717b7885d4edd6cb46700e04f7f02db454e67c1", size = 377234, upload-time = "2025-07-26T12:01:07.054Z" }, + { url = "https://files.pythonhosted.org/packages/03/b3/64ef723029f917410f75c09da54254c5f9ea90ef89b143ccadb09df14c15/contourpy-1.3.3-cp311-cp311-manylinux_2_26_s390x.manylinux_2_28_s390x.whl", hash = "sha256:0bf67e0e3f482cb69779dd3061b534eb35ac9b17f163d851e2a547d56dba0a3a", size = 380555, upload-time = "2025-07-26T12:01:08.801Z" }, + { url = "https://files.pythonhosted.org/packages/5f/4b/6157f24ca425b89fe2eb7e7be642375711ab671135be21e6faa100f7448c/contourpy-1.3.3-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:51e79c1f7470158e838808d4a996fa9bac72c498e93d8ebe5119bc1e6becb0db", size = 355238, upload-time = "2025-07-26T12:01:10.319Z" }, + { url = "https://files.pythonhosted.org/packages/98/56/f914f0dd678480708a04cfd2206e7c382533249bc5001eb9f58aa693e200/contourpy-1.3.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:598c3aaece21c503615fd59c92a3598b428b2f01bfb4b8ca9c4edeecc2438620", size = 1326218, upload-time = "2025-07-26T12:01:12.659Z" }, + { url = "https://files.pythonhosted.org/packages/fb/d7/4a972334a0c971acd5172389671113ae82aa7527073980c38d5868ff1161/contourpy-1.3.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:322ab1c99b008dad206d406bb61d014cf0174df491ae9d9d0fac6a6fda4f977f", size = 1392867, upload-time = "2025-07-26T12:01:15.533Z" }, + { url = "https://files.pythonhosted.org/packages/75/3e/f2cc6cd56dc8cff46b1a56232eabc6feea52720083ea71ab15523daab796/contourpy-1.3.3-cp311-cp311-win32.whl", hash = "sha256:fd907ae12cd483cd83e414b12941c632a969171bf90fc937d0c9f268a31cafff", size = 183677, upload-time = "2025-07-26T12:01:17.088Z" }, + { url = "https://files.pythonhosted.org/packages/98/4b/9bd370b004b5c9d8045c6c33cf65bae018b27aca550a3f657cdc99acdbd8/contourpy-1.3.3-cp311-cp311-win_amd64.whl", hash = "sha256:3519428f6be58431c56581f1694ba8e50626f2dd550af225f82fb5f5814d2a42", size = 225234, upload-time = "2025-07-26T12:01:18.256Z" }, + { url = "https://files.pythonhosted.org/packages/d9/b6/71771e02c2e004450c12b1120a5f488cad2e4d5b590b1af8bad060360fe4/contourpy-1.3.3-cp311-cp311-win_arm64.whl", hash = "sha256:15ff10bfada4bf92ec8b31c62bf7c1834c244019b4a33095a68000d7075df470", size = 193123, upload-time = "2025-07-26T12:01:19.848Z" }, + { url = "https://files.pythonhosted.org/packages/be/45/adfee365d9ea3d853550b2e735f9d66366701c65db7855cd07621732ccfc/contourpy-1.3.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:b08a32ea2f8e42cf1d4be3169a98dd4be32bafe4f22b6c4cb4ba810fa9e5d2cb", size = 293419, upload-time = "2025-07-26T12:01:21.16Z" }, + { url = "https://files.pythonhosted.org/packages/53/3e/405b59cfa13021a56bba395a6b3aca8cec012b45bf177b0eaf7a202cde2c/contourpy-1.3.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:556dba8fb6f5d8742f2923fe9457dbdd51e1049c4a43fd3986a0b14a1d815fc6", size = 273979, upload-time = "2025-07-26T12:01:22.448Z" }, + { url = "https://files.pythonhosted.org/packages/d4/1c/a12359b9b2ca3a845e8f7f9ac08bdf776114eb931392fcad91743e2ea17b/contourpy-1.3.3-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:92d9abc807cf7d0e047b95ca5d957cf4792fcd04e920ca70d48add15c1a90ea7", size = 332653, upload-time = "2025-07-26T12:01:24.155Z" }, + { url = "https://files.pythonhosted.org/packages/63/12/897aeebfb475b7748ea67b61e045accdfcf0d971f8a588b67108ed7f5512/contourpy-1.3.3-cp312-cp312-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:b2e8faa0ed68cb29af51edd8e24798bb661eac3bd9f65420c1887b6ca89987c8", size = 379536, upload-time = "2025-07-26T12:01:25.91Z" }, + { url = "https://files.pythonhosted.org/packages/43/8a/a8c584b82deb248930ce069e71576fc09bd7174bbd35183b7943fb1064fd/contourpy-1.3.3-cp312-cp312-manylinux_2_26_s390x.manylinux_2_28_s390x.whl", hash = "sha256:626d60935cf668e70a5ce6ff184fd713e9683fb458898e4249b63be9e28286ea", size = 384397, upload-time = "2025-07-26T12:01:27.152Z" }, + { url = "https://files.pythonhosted.org/packages/cc/8f/ec6289987824b29529d0dfda0d74a07cec60e54b9c92f3c9da4c0ac732de/contourpy-1.3.3-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4d00e655fcef08aba35ec9610536bfe90267d7ab5ba944f7032549c55a146da1", size = 362601, upload-time = "2025-07-26T12:01:28.808Z" }, + { url = "https://files.pythonhosted.org/packages/05/0a/a3fe3be3ee2dceb3e615ebb4df97ae6f3828aa915d3e10549ce016302bd1/contourpy-1.3.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:451e71b5a7d597379ef572de31eeb909a87246974d960049a9848c3bc6c41bf7", size = 1331288, upload-time = "2025-07-26T12:01:31.198Z" }, + { url = "https://files.pythonhosted.org/packages/33/1d/acad9bd4e97f13f3e2b18a3977fe1b4a37ecf3d38d815333980c6c72e963/contourpy-1.3.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:459c1f020cd59fcfe6650180678a9993932d80d44ccde1fa1868977438f0b411", size = 1403386, upload-time = "2025-07-26T12:01:33.947Z" }, + { url = "https://files.pythonhosted.org/packages/cf/8f/5847f44a7fddf859704217a99a23a4f6417b10e5ab1256a179264561540e/contourpy-1.3.3-cp312-cp312-win32.whl", hash = "sha256:023b44101dfe49d7d53932be418477dba359649246075c996866106da069af69", size = 185018, upload-time = "2025-07-26T12:01:35.64Z" }, + { url = "https://files.pythonhosted.org/packages/19/e8/6026ed58a64563186a9ee3f29f41261fd1828f527dd93d33b60feca63352/contourpy-1.3.3-cp312-cp312-win_amd64.whl", hash = "sha256:8153b8bfc11e1e4d75bcb0bff1db232f9e10b274e0929de9d608027e0d34ff8b", size = 226567, upload-time = "2025-07-26T12:01:36.804Z" }, + { url = "https://files.pythonhosted.org/packages/d1/e2/f05240d2c39a1ed228d8328a78b6f44cd695f7ef47beb3e684cf93604f86/contourpy-1.3.3-cp312-cp312-win_arm64.whl", hash = "sha256:07ce5ed73ecdc4a03ffe3e1b3e3c1166db35ae7584be76f65dbbe28a7791b0cc", size = 193655, upload-time = "2025-07-26T12:01:37.999Z" }, + { url = "https://files.pythonhosted.org/packages/68/35/0167aad910bbdb9599272bd96d01a9ec6852f36b9455cf2ca67bd4cc2d23/contourpy-1.3.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:177fb367556747a686509d6fef71d221a4b198a3905fe824430e5ea0fda54eb5", size = 293257, upload-time = "2025-07-26T12:01:39.367Z" }, + { url = "https://files.pythonhosted.org/packages/96/e4/7adcd9c8362745b2210728f209bfbcf7d91ba868a2c5f40d8b58f54c509b/contourpy-1.3.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:d002b6f00d73d69333dac9d0b8d5e84d9724ff9ef044fd63c5986e62b7c9e1b1", size = 274034, upload-time = "2025-07-26T12:01:40.645Z" }, + { url = "https://files.pythonhosted.org/packages/73/23/90e31ceeed1de63058a02cb04b12f2de4b40e3bef5e082a7c18d9c8ae281/contourpy-1.3.3-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:348ac1f5d4f1d66d3322420f01d42e43122f43616e0f194fc1c9f5d830c5b286", size = 334672, upload-time = "2025-07-26T12:01:41.942Z" }, + { url = "https://files.pythonhosted.org/packages/ed/93/b43d8acbe67392e659e1d984700e79eb67e2acb2bd7f62012b583a7f1b55/contourpy-1.3.3-cp313-cp313-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:655456777ff65c2c548b7c454af9c6f33f16c8884f11083244b5819cc214f1b5", size = 381234, upload-time = "2025-07-26T12:01:43.499Z" }, + { url = "https://files.pythonhosted.org/packages/46/3b/bec82a3ea06f66711520f75a40c8fc0b113b2a75edb36aa633eb11c4f50f/contourpy-1.3.3-cp313-cp313-manylinux_2_26_s390x.manylinux_2_28_s390x.whl", hash = "sha256:644a6853d15b2512d67881586bd03f462c7ab755db95f16f14d7e238f2852c67", size = 385169, upload-time = "2025-07-26T12:01:45.219Z" }, + { url = "https://files.pythonhosted.org/packages/4b/32/e0f13a1c5b0f8572d0ec6ae2f6c677b7991fafd95da523159c19eff0696a/contourpy-1.3.3-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4debd64f124ca62069f313a9cb86656ff087786016d76927ae2cf37846b006c9", size = 362859, upload-time = "2025-07-26T12:01:46.519Z" }, + { url = "https://files.pythonhosted.org/packages/33/71/e2a7945b7de4e58af42d708a219f3b2f4cff7386e6b6ab0a0fa0033c49a9/contourpy-1.3.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:a15459b0f4615b00bbd1e91f1b9e19b7e63aea7483d03d804186f278c0af2659", size = 1332062, upload-time = "2025-07-26T12:01:48.964Z" }, + { url = "https://files.pythonhosted.org/packages/12/fc/4e87ac754220ccc0e807284f88e943d6d43b43843614f0a8afa469801db0/contourpy-1.3.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:ca0fdcd73925568ca027e0b17ab07aad764be4706d0a925b89227e447d9737b7", size = 1403932, upload-time = "2025-07-26T12:01:51.979Z" }, + { url = "https://files.pythonhosted.org/packages/a6/2e/adc197a37443f934594112222ac1aa7dc9a98faf9c3842884df9a9d8751d/contourpy-1.3.3-cp313-cp313-win32.whl", hash = "sha256:b20c7c9a3bf701366556e1b1984ed2d0cedf999903c51311417cf5f591d8c78d", size = 185024, upload-time = "2025-07-26T12:01:53.245Z" }, + { url = "https://files.pythonhosted.org/packages/18/0b/0098c214843213759692cc638fce7de5c289200a830e5035d1791d7a2338/contourpy-1.3.3-cp313-cp313-win_amd64.whl", hash = "sha256:1cadd8b8969f060ba45ed7c1b714fe69185812ab43bd6b86a9123fe8f99c3263", size = 226578, upload-time = "2025-07-26T12:01:54.422Z" }, + { url = "https://files.pythonhosted.org/packages/8a/9a/2f6024a0c5995243cd63afdeb3651c984f0d2bc727fd98066d40e141ad73/contourpy-1.3.3-cp313-cp313-win_arm64.whl", hash = "sha256:fd914713266421b7536de2bfa8181aa8c699432b6763a0ea64195ebe28bff6a9", size = 193524, upload-time = "2025-07-26T12:01:55.73Z" }, + { url = "https://files.pythonhosted.org/packages/c0/b3/f8a1a86bd3298513f500e5b1f5fd92b69896449f6cab6a146a5d52715479/contourpy-1.3.3-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:88df9880d507169449d434c293467418b9f6cbe82edd19284aa0409e7fdb933d", size = 306730, upload-time = "2025-07-26T12:01:57.051Z" }, + { url = "https://files.pythonhosted.org/packages/3f/11/4780db94ae62fc0c2053909b65dc3246bd7cecfc4f8a20d957ad43aa4ad8/contourpy-1.3.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:d06bb1f751ba5d417047db62bca3c8fde202b8c11fb50742ab3ab962c81e8216", size = 287897, upload-time = "2025-07-26T12:01:58.663Z" }, + { url = "https://files.pythonhosted.org/packages/ae/15/e59f5f3ffdd6f3d4daa3e47114c53daabcb18574a26c21f03dc9e4e42ff0/contourpy-1.3.3-cp313-cp313t-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e4e6b05a45525357e382909a4c1600444e2a45b4795163d3b22669285591c1ae", size = 326751, upload-time = "2025-07-26T12:02:00.343Z" }, + { url = "https://files.pythonhosted.org/packages/0f/81/03b45cfad088e4770b1dcf72ea78d3802d04200009fb364d18a493857210/contourpy-1.3.3-cp313-cp313t-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:ab3074b48c4e2cf1a960e6bbeb7f04566bf36b1861d5c9d4d8ac04b82e38ba20", size = 375486, upload-time = "2025-07-26T12:02:02.128Z" }, + { url = "https://files.pythonhosted.org/packages/0c/ba/49923366492ffbdd4486e970d421b289a670ae8cf539c1ea9a09822b371a/contourpy-1.3.3-cp313-cp313t-manylinux_2_26_s390x.manylinux_2_28_s390x.whl", hash = "sha256:6c3d53c796f8647d6deb1abe867daeb66dcc8a97e8455efa729516b997b8ed99", size = 388106, upload-time = "2025-07-26T12:02:03.615Z" }, + { url = "https://files.pythonhosted.org/packages/9f/52/5b00ea89525f8f143651f9f03a0df371d3cbd2fccd21ca9b768c7a6500c2/contourpy-1.3.3-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:50ed930df7289ff2a8d7afeb9603f8289e5704755c7e5c3bbd929c90c817164b", size = 352548, upload-time = "2025-07-26T12:02:05.165Z" }, + { url = "https://files.pythonhosted.org/packages/32/1d/a209ec1a3a3452d490f6b14dd92e72280c99ae3d1e73da74f8277d4ee08f/contourpy-1.3.3-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:4feffb6537d64b84877da813a5c30f1422ea5739566abf0bd18065ac040e120a", size = 1322297, upload-time = "2025-07-26T12:02:07.379Z" }, + { url = "https://files.pythonhosted.org/packages/bc/9e/46f0e8ebdd884ca0e8877e46a3f4e633f6c9c8c4f3f6e72be3fe075994aa/contourpy-1.3.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:2b7e9480ffe2b0cd2e787e4df64270e3a0440d9db8dc823312e2c940c167df7e", size = 1391023, upload-time = "2025-07-26T12:02:10.171Z" }, + { url = "https://files.pythonhosted.org/packages/b9/70/f308384a3ae9cd2209e0849f33c913f658d3326900d0ff5d378d6a1422d2/contourpy-1.3.3-cp313-cp313t-win32.whl", hash = "sha256:283edd842a01e3dcd435b1c5116798d661378d83d36d337b8dde1d16a5fc9ba3", size = 196157, upload-time = "2025-07-26T12:02:11.488Z" }, + { url = "https://files.pythonhosted.org/packages/b2/dd/880f890a6663b84d9e34a6f88cded89d78f0091e0045a284427cb6b18521/contourpy-1.3.3-cp313-cp313t-win_amd64.whl", hash = "sha256:87acf5963fc2b34825e5b6b048f40e3635dd547f590b04d2ab317c2619ef7ae8", size = 240570, upload-time = "2025-07-26T12:02:12.754Z" }, + { url = "https://files.pythonhosted.org/packages/80/99/2adc7d8ffead633234817ef8e9a87115c8a11927a94478f6bb3d3f4d4f7d/contourpy-1.3.3-cp313-cp313t-win_arm64.whl", hash = "sha256:3c30273eb2a55024ff31ba7d052dde990d7d8e5450f4bbb6e913558b3d6c2301", size = 199713, upload-time = "2025-07-26T12:02:14.4Z" }, + { url = "https://files.pythonhosted.org/packages/72/8b/4546f3ab60f78c514ffb7d01a0bd743f90de36f0019d1be84d0a708a580a/contourpy-1.3.3-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:fde6c716d51c04b1c25d0b90364d0be954624a0ee9d60e23e850e8d48353d07a", size = 292189, upload-time = "2025-07-26T12:02:16.095Z" }, + { url = "https://files.pythonhosted.org/packages/fd/e1/3542a9cb596cadd76fcef413f19c79216e002623158befe6daa03dbfa88c/contourpy-1.3.3-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:cbedb772ed74ff5be440fa8eee9bd49f64f6e3fc09436d9c7d8f1c287b121d77", size = 273251, upload-time = "2025-07-26T12:02:17.524Z" }, + { url = "https://files.pythonhosted.org/packages/b1/71/f93e1e9471d189f79d0ce2497007731c1e6bf9ef6d1d61b911430c3db4e5/contourpy-1.3.3-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:22e9b1bd7a9b1d652cd77388465dc358dafcd2e217d35552424aa4f996f524f5", size = 335810, upload-time = "2025-07-26T12:02:18.9Z" }, + { url = "https://files.pythonhosted.org/packages/91/f9/e35f4c1c93f9275d4e38681a80506b5510e9327350c51f8d4a5a724d178c/contourpy-1.3.3-cp314-cp314-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:a22738912262aa3e254e4f3cb079a95a67132fc5a063890e224393596902f5a4", size = 382871, upload-time = "2025-07-26T12:02:20.418Z" }, + { url = "https://files.pythonhosted.org/packages/b5/71/47b512f936f66a0a900d81c396a7e60d73419868fba959c61efed7a8ab46/contourpy-1.3.3-cp314-cp314-manylinux_2_26_s390x.manylinux_2_28_s390x.whl", hash = "sha256:afe5a512f31ee6bd7d0dda52ec9864c984ca3d66664444f2d72e0dc4eb832e36", size = 386264, upload-time = "2025-07-26T12:02:21.916Z" }, + { url = "https://files.pythonhosted.org/packages/04/5f/9ff93450ba96b09c7c2b3f81c94de31c89f92292f1380261bd7195bea4ea/contourpy-1.3.3-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f64836de09927cba6f79dcd00fdd7d5329f3fccc633468507079c829ca4db4e3", size = 363819, upload-time = "2025-07-26T12:02:23.759Z" }, + { url = "https://files.pythonhosted.org/packages/3e/a6/0b185d4cc480ee494945cde102cb0149ae830b5fa17bf855b95f2e70ad13/contourpy-1.3.3-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:1fd43c3be4c8e5fd6e4f2baeae35ae18176cf2e5cced681cca908addf1cdd53b", size = 1333650, upload-time = "2025-07-26T12:02:26.181Z" }, + { url = "https://files.pythonhosted.org/packages/43/d7/afdc95580ca56f30fbcd3060250f66cedbde69b4547028863abd8aa3b47e/contourpy-1.3.3-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:6afc576f7b33cf00996e5c1102dc2a8f7cc89e39c0b55df93a0b78c1bd992b36", size = 1404833, upload-time = "2025-07-26T12:02:28.782Z" }, + { url = "https://files.pythonhosted.org/packages/e2/e2/366af18a6d386f41132a48f033cbd2102e9b0cf6345d35ff0826cd984566/contourpy-1.3.3-cp314-cp314-win32.whl", hash = "sha256:66c8a43a4f7b8df8b71ee1840e4211a3c8d93b214b213f590e18a1beca458f7d", size = 189692, upload-time = "2025-07-26T12:02:30.128Z" }, + { url = "https://files.pythonhosted.org/packages/7d/c2/57f54b03d0f22d4044b8afb9ca0e184f8b1afd57b4f735c2fa70883dc601/contourpy-1.3.3-cp314-cp314-win_amd64.whl", hash = "sha256:cf9022ef053f2694e31d630feaacb21ea24224be1c3ad0520b13d844274614fd", size = 232424, upload-time = "2025-07-26T12:02:31.395Z" }, + { url = "https://files.pythonhosted.org/packages/18/79/a9416650df9b525737ab521aa181ccc42d56016d2123ddcb7b58e926a42c/contourpy-1.3.3-cp314-cp314-win_arm64.whl", hash = "sha256:95b181891b4c71de4bb404c6621e7e2390745f887f2a026b2d99e92c17892339", size = 198300, upload-time = "2025-07-26T12:02:32.956Z" }, + { url = "https://files.pythonhosted.org/packages/1f/42/38c159a7d0f2b7b9c04c64ab317042bb6952b713ba875c1681529a2932fe/contourpy-1.3.3-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:33c82d0138c0a062380332c861387650c82e4cf1747aaa6938b9b6516762e772", size = 306769, upload-time = "2025-07-26T12:02:34.2Z" }, + { url = "https://files.pythonhosted.org/packages/c3/6c/26a8205f24bca10974e77460de68d3d7c63e282e23782f1239f226fcae6f/contourpy-1.3.3-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:ea37e7b45949df430fe649e5de8351c423430046a2af20b1c1961cae3afcda77", size = 287892, upload-time = "2025-07-26T12:02:35.807Z" }, + { url = "https://files.pythonhosted.org/packages/66/06/8a475c8ab718ebfd7925661747dbb3c3ee9c82ac834ccb3570be49d129f4/contourpy-1.3.3-cp314-cp314t-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d304906ecc71672e9c89e87c4675dc5c2645e1f4269a5063b99b0bb29f232d13", size = 326748, upload-time = "2025-07-26T12:02:37.193Z" }, + { url = "https://files.pythonhosted.org/packages/b4/a3/c5ca9f010a44c223f098fccd8b158bb1cb287378a31ac141f04730dc49be/contourpy-1.3.3-cp314-cp314t-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:ca658cd1a680a5c9ea96dc61cdbae1e85c8f25849843aa799dfd3cb370ad4fbe", size = 375554, upload-time = "2025-07-26T12:02:38.894Z" }, + { url = "https://files.pythonhosted.org/packages/80/5b/68bd33ae63fac658a4145088c1e894405e07584a316738710b636c6d0333/contourpy-1.3.3-cp314-cp314t-manylinux_2_26_s390x.manylinux_2_28_s390x.whl", hash = "sha256:ab2fd90904c503739a75b7c8c5c01160130ba67944a7b77bbf36ef8054576e7f", size = 388118, upload-time = "2025-07-26T12:02:40.642Z" }, + { url = "https://files.pythonhosted.org/packages/40/52/4c285a6435940ae25d7410a6c36bda5145839bc3f0beb20c707cda18b9d2/contourpy-1.3.3-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b7301b89040075c30e5768810bc96a8e8d78085b47d8be6e4c3f5a0b4ed478a0", size = 352555, upload-time = "2025-07-26T12:02:42.25Z" }, + { url = "https://files.pythonhosted.org/packages/24/ee/3e81e1dd174f5c7fefe50e85d0892de05ca4e26ef1c9a59c2a57e43b865a/contourpy-1.3.3-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:2a2a8b627d5cc6b7c41a4beff6c5ad5eb848c88255fda4a8745f7e901b32d8e4", size = 1322295, upload-time = "2025-07-26T12:02:44.668Z" }, + { url = "https://files.pythonhosted.org/packages/3c/b2/6d913d4d04e14379de429057cd169e5e00f6c2af3bb13e1710bcbdb5da12/contourpy-1.3.3-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:fd6ec6be509c787f1caf6b247f0b1ca598bef13f4ddeaa126b7658215529ba0f", size = 1391027, upload-time = "2025-07-26T12:02:47.09Z" }, + { url = "https://files.pythonhosted.org/packages/93/8a/68a4ec5c55a2971213d29a9374913f7e9f18581945a7a31d1a39b5d2dfe5/contourpy-1.3.3-cp314-cp314t-win32.whl", hash = "sha256:e74a9a0f5e3fff48fb5a7f2fd2b9b70a3fe014a67522f79b7cca4c0c7e43c9ae", size = 202428, upload-time = "2025-07-26T12:02:48.691Z" }, + { url = "https://files.pythonhosted.org/packages/fa/96/fd9f641ffedc4fa3ace923af73b9d07e869496c9cc7a459103e6e978992f/contourpy-1.3.3-cp314-cp314t-win_amd64.whl", hash = "sha256:13b68d6a62db8eafaebb8039218921399baf6e47bf85006fd8529f2a08ef33fc", size = 250331, upload-time = "2025-07-26T12:02:50.137Z" }, + { url = "https://files.pythonhosted.org/packages/ae/8c/469afb6465b853afff216f9528ffda78a915ff880ed58813ba4faf4ba0b6/contourpy-1.3.3-cp314-cp314t-win_arm64.whl", hash = "sha256:b7448cb5a725bb1e35ce88771b86fba35ef418952474492cf7c764059933ff8b", size = 203831, upload-time = "2025-07-26T12:02:51.449Z" }, + { url = "https://files.pythonhosted.org/packages/a5/29/8dcfe16f0107943fa92388c23f6e05cff0ba58058c4c95b00280d4c75a14/contourpy-1.3.3-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:cd5dfcaeb10f7b7f9dc8941717c6c2ade08f587be2226222c12b25f0483ed497", size = 278809, upload-time = "2025-07-26T12:02:52.74Z" }, + { url = "https://files.pythonhosted.org/packages/85/a9/8b37ef4f7dafeb335daee3c8254645ef5725be4d9c6aa70b50ec46ef2f7e/contourpy-1.3.3-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:0c1fc238306b35f246d61a1d416a627348b5cf0648648a031e14bb8705fcdfe8", size = 261593, upload-time = "2025-07-26T12:02:54.037Z" }, + { url = "https://files.pythonhosted.org/packages/0a/59/ebfb8c677c75605cc27f7122c90313fd2f375ff3c8d19a1694bda74aaa63/contourpy-1.3.3-pp311-pypy311_pp73-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:70f9aad7de812d6541d29d2bbf8feb22ff7e1c299523db288004e3157ff4674e", size = 302202, upload-time = "2025-07-26T12:02:55.947Z" }, + { url = "https://files.pythonhosted.org/packages/3c/37/21972a15834d90bfbfb009b9d004779bd5a07a0ec0234e5ba8f64d5736f4/contourpy-1.3.3-pp311-pypy311_pp73-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5ed3657edf08512fc3fe81b510e35c2012fbd3081d2e26160f27ca28affec989", size = 329207, upload-time = "2025-07-26T12:02:57.468Z" }, + { url = "https://files.pythonhosted.org/packages/0c/58/bd257695f39d05594ca4ad60df5bcb7e32247f9951fd09a9b8edb82d1daa/contourpy-1.3.3-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:3d1a3799d62d45c18bafd41c5fa05120b96a28079f2393af559b843d1a966a77", size = 225315, upload-time = "2025-07-26T12:02:58.801Z" }, +] + +[[package]] +name = "cycler" +version = "0.12.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a9/95/a3dbbb5028f35eafb79008e7522a75244477d2838f38cbb722248dabc2a8/cycler-0.12.1.tar.gz", hash = "sha256:88bb128f02ba341da8ef447245a9e138fae777f6a23943da4540077d3601eb1c", size = 7615, upload-time = "2023-10-07T05:32:18.335Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e7/05/c19819d5e3d95294a6f5947fb9b9629efb316b96de511b418c53d245aae6/cycler-0.12.1-py3-none-any.whl", hash = "sha256:85cef7cff222d8644161529808465972e51340599459b8ac3ccbac5a854e0d30", size = 8321, upload-time = "2023-10-07T05:32:16.783Z" }, +] + +[[package]] +name = "decorator" +version = "5.2.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/43/fa/6d96a0978d19e17b68d634497769987b16c8f4cd0a7a05048bec693caa6b/decorator-5.2.1.tar.gz", hash = "sha256:65f266143752f734b0a7cc83c46f4618af75b8c5911b00ccb61d0ac9b6da0360", size = 56711, upload-time = "2025-02-24T04:41:34.073Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/4e/8c/f3147f5c4b73e7550fe5f9352eaa956ae838d5c51eb58e7a25b9f3e2643b/decorator-5.2.1-py3-none-any.whl", hash = "sha256:d316bb415a2d9e2d2b3abcc4084c6502fc09240e292cd76a76afc106a1c8e04a", size = 9190, upload-time = "2025-02-24T04:41:32.565Z" }, +] + +[[package]] +name = "distlib" +version = "0.4.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/96/8e/709914eb2b5749865801041647dc7f4e6d00b549cfe88b65ca192995f07c/distlib-0.4.0.tar.gz", hash = "sha256:feec40075be03a04501a973d81f633735b4b69f98b05450592310c0f401a4e0d", size = 614605, upload-time = "2025-07-17T16:52:00.465Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/33/6b/e0547afaf41bf2c42e52430072fa5658766e3d65bd4b03a563d1b6336f57/distlib-0.4.0-py2.py3-none-any.whl", hash = "sha256:9659f7d87e46584a30b5780e43ac7a2143098441670ff0a49d5f9034c54a6c16", size = 469047, upload-time = "2025-07-17T16:51:58.613Z" }, +] + +[[package]] +name = "exceptiongroup" +version = "1.3.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions", marker = "python_full_version < '3.11'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/0b/9f/a65090624ecf468cdca03533906e7c69ed7588582240cfe7cc9e770b50eb/exceptiongroup-1.3.0.tar.gz", hash = "sha256:b241f5885f560bc56a59ee63ca4c6a8bfa46ae4ad651af316d4e81817bb9fd88", size = 29749, upload-time = "2025-05-10T17:42:51.123Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/36/f4/c6e662dade71f56cd2f3735141b265c3c79293c109549c1e6933b0651ffc/exceptiongroup-1.3.0-py3-none-any.whl", hash = "sha256:4d111e6e0c13d0644cad6ddaa7ed0261a0b36971f6d23e7ec9b4b9097da78a10", size = 16674, upload-time = "2025-05-10T17:42:49.33Z" }, +] + +[[package]] +name = "executing" +version = "2.2.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/cc/28/c14e053b6762b1044f34a13aab6859bbf40456d37d23aa286ac24cfd9a5d/executing-2.2.1.tar.gz", hash = "sha256:3632cc370565f6648cc328b32435bd120a1e4ebb20c77e3fdde9a13cd1e533c4", size = 1129488, upload-time = "2025-09-01T09:48:10.866Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c1/ea/53f2148663b321f21b5a606bd5f191517cf40b7072c0497d3c92c4a13b1e/executing-2.2.1-py2.py3-none-any.whl", hash = "sha256:760643d3452b4d777d295bb167ccc74c64a81df23fb5e08eff250c425a4b2017", size = 28317, upload-time = "2025-09-01T09:48:08.5Z" }, +] + +[[package]] +name = "filelock" +version = "3.19.1" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version < '3.10'", +] +sdist = { url = "https://files.pythonhosted.org/packages/40/bb/0ab3e58d22305b6f5440629d20683af28959bf793d98d11950e305c1c326/filelock-3.19.1.tar.gz", hash = "sha256:66eda1888b0171c998b35be2bcc0f6d75c388a7ce20c3f3f37aa8e96c2dddf58", size = 17687, upload-time = "2025-08-14T16:56:03.016Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/42/14/42b2651a2f46b022ccd948bca9f2d5af0fd8929c4eec235b8d6d844fbe67/filelock-3.19.1-py3-none-any.whl", hash = "sha256:d38e30481def20772f5baf097c122c3babc4fcdb7e14e57049eb9d88c6dc017d", size = 15988, upload-time = "2025-08-14T16:56:01.633Z" }, +] + +[[package]] +name = "filelock" +version = "3.20.1" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version >= '3.12'", + "python_full_version == '3.11.*'", + "python_full_version == '3.10.*'", +] +sdist = { url = "https://files.pythonhosted.org/packages/a7/23/ce7a1126827cedeb958fc043d61745754464eb56c5937c35bbf2b8e26f34/filelock-3.20.1.tar.gz", hash = "sha256:b8360948b351b80f420878d8516519a2204b07aefcdcfd24912a5d33127f188c", size = 19476, upload-time = "2025-12-15T23:54:28.027Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e3/7f/a1a97644e39e7316d850784c642093c99df1290a460df4ede27659056834/filelock-3.20.1-py3-none-any.whl", hash = "sha256:15d9e9a67306188a44baa72f569d2bfd803076269365fdea0934385da4dc361a", size = 16666, upload-time = "2025-12-15T23:54:26.874Z" }, +] + +[[package]] +name = "fonttools" +version = "4.60.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/4b/42/97a13e47a1e51a5a7142475bbcf5107fe3a68fc34aef331c897d5fb98ad0/fonttools-4.60.1.tar.gz", hash = "sha256:ef00af0439ebfee806b25f24c8f92109157ff3fac5731dc7867957812e87b8d9", size = 3559823, upload-time = "2025-09-29T21:13:27.129Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/26/70/03e9d89a053caff6ae46053890eba8e4a5665a7c5638279ed4492e6d4b8b/fonttools-4.60.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:9a52f254ce051e196b8fe2af4634c2d2f02c981756c6464dc192f1b6050b4e28", size = 2810747, upload-time = "2025-09-29T21:10:59.653Z" }, + { url = "https://files.pythonhosted.org/packages/6f/41/449ad5aff9670ab0df0f61ee593906b67a36d7e0b4d0cd7fa41ac0325bf5/fonttools-4.60.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c7420a2696a44650120cdd269a5d2e56a477e2bfa9d95e86229059beb1c19e15", size = 2346909, upload-time = "2025-09-29T21:11:02.882Z" }, + { url = "https://files.pythonhosted.org/packages/9a/18/e5970aa96c8fad1cb19a9479cc3b7602c0c98d250fcdc06a5da994309c50/fonttools-4.60.1-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ee0c0b3b35b34f782afc673d503167157094a16f442ace7c6c5e0ca80b08f50c", size = 4864572, upload-time = "2025-09-29T21:11:05.096Z" }, + { url = "https://files.pythonhosted.org/packages/ce/20/9b2b4051b6ec6689480787d506b5003f72648f50972a92d04527a456192c/fonttools-4.60.1-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:282dafa55f9659e8999110bd8ed422ebe1c8aecd0dc396550b038e6c9a08b8ea", size = 4794635, upload-time = "2025-09-29T21:11:08.651Z" }, + { url = "https://files.pythonhosted.org/packages/10/52/c791f57347c1be98f8345e3dca4ac483eb97666dd7c47f3059aeffab8b59/fonttools-4.60.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:4ba4bd646e86de16160f0fb72e31c3b9b7d0721c3e5b26b9fa2fc931dfdb2652", size = 4843878, upload-time = "2025-09-29T21:11:10.893Z" }, + { url = "https://files.pythonhosted.org/packages/69/e9/35c24a8d01644cee8c090a22fad34d5b61d1e0a8ecbc9945ad785ebf2e9e/fonttools-4.60.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:0b0835ed15dd5b40d726bb61c846a688f5b4ce2208ec68779bc81860adb5851a", size = 4954555, upload-time = "2025-09-29T21:11:13.24Z" }, + { url = "https://files.pythonhosted.org/packages/f7/86/fb1e994971be4bdfe3a307de6373ef69a9df83fb66e3faa9c8114893d4cc/fonttools-4.60.1-cp310-cp310-win32.whl", hash = "sha256:1525796c3ffe27bb6268ed2a1bb0dcf214d561dfaf04728abf01489eb5339dce", size = 2232019, upload-time = "2025-09-29T21:11:15.73Z" }, + { url = "https://files.pythonhosted.org/packages/40/84/62a19e2bd56f0e9fb347486a5b26376bade4bf6bbba64dda2c103bd08c94/fonttools-4.60.1-cp310-cp310-win_amd64.whl", hash = "sha256:268ecda8ca6cb5c4f044b1fb9b3b376e8cd1b361cef275082429dc4174907038", size = 2276803, upload-time = "2025-09-29T21:11:18.152Z" }, + { url = "https://files.pythonhosted.org/packages/ea/85/639aa9bface1537e0fb0f643690672dde0695a5bbbc90736bc571b0b1941/fonttools-4.60.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:7b4c32e232a71f63a5d00259ca3d88345ce2a43295bb049d21061f338124246f", size = 2831872, upload-time = "2025-09-29T21:11:20.329Z" }, + { url = "https://files.pythonhosted.org/packages/6b/47/3c63158459c95093be9618794acb1067b3f4d30dcc5c3e8114b70e67a092/fonttools-4.60.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:3630e86c484263eaac71d117085d509cbcf7b18f677906824e4bace598fb70d2", size = 2356990, upload-time = "2025-09-29T21:11:22.754Z" }, + { url = "https://files.pythonhosted.org/packages/94/dd/1934b537c86fcf99f9761823f1fc37a98fbd54568e8e613f29a90fed95a9/fonttools-4.60.1-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5c1015318e4fec75dd4943ad5f6a206d9727adf97410d58b7e32ab644a807914", size = 5042189, upload-time = "2025-09-29T21:11:25.061Z" }, + { url = "https://files.pythonhosted.org/packages/d2/d2/9f4e4c4374dd1daa8367784e1bd910f18ba886db1d6b825b12edf6db3edc/fonttools-4.60.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:e6c58beb17380f7c2ea181ea11e7db8c0ceb474c9dd45f48e71e2cb577d146a1", size = 4978683, upload-time = "2025-09-29T21:11:27.693Z" }, + { url = "https://files.pythonhosted.org/packages/cc/c4/0fb2dfd1ecbe9a07954cc13414713ed1eab17b1c0214ef07fc93df234a47/fonttools-4.60.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:ec3681a0cb34c255d76dd9d865a55f260164adb9fa02628415cdc2d43ee2c05d", size = 5021372, upload-time = "2025-09-29T21:11:30.257Z" }, + { url = "https://files.pythonhosted.org/packages/0c/d5/495fc7ae2fab20223cc87179a8f50f40f9a6f821f271ba8301ae12bb580f/fonttools-4.60.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:f4b5c37a5f40e4d733d3bbaaef082149bee5a5ea3156a785ff64d949bd1353fa", size = 5132562, upload-time = "2025-09-29T21:11:32.737Z" }, + { url = "https://files.pythonhosted.org/packages/bc/fa/021dab618526323c744e0206b3f5c8596a2e7ae9aa38db5948a131123e83/fonttools-4.60.1-cp311-cp311-win32.whl", hash = "sha256:398447f3d8c0c786cbf1209711e79080a40761eb44b27cdafffb48f52bcec258", size = 2230288, upload-time = "2025-09-29T21:11:35.015Z" }, + { url = "https://files.pythonhosted.org/packages/bb/78/0e1a6d22b427579ea5c8273e1c07def2f325b977faaf60bb7ddc01456cb1/fonttools-4.60.1-cp311-cp311-win_amd64.whl", hash = "sha256:d066ea419f719ed87bc2c99a4a4bfd77c2e5949cb724588b9dd58f3fd90b92bf", size = 2278184, upload-time = "2025-09-29T21:11:37.434Z" }, + { url = "https://files.pythonhosted.org/packages/e3/f7/a10b101b7a6f8836a5adb47f2791f2075d044a6ca123f35985c42edc82d8/fonttools-4.60.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:7b0c6d57ab00dae9529f3faf187f2254ea0aa1e04215cf2f1a8ec277c96661bc", size = 2832953, upload-time = "2025-09-29T21:11:39.616Z" }, + { url = "https://files.pythonhosted.org/packages/ed/fe/7bd094b59c926acf2304d2151354ddbeb74b94812f3dc943c231db09cb41/fonttools-4.60.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:839565cbf14645952d933853e8ade66a463684ed6ed6c9345d0faf1f0e868877", size = 2352706, upload-time = "2025-09-29T21:11:41.826Z" }, + { url = "https://files.pythonhosted.org/packages/c0/ca/4bb48a26ed95a1e7eba175535fe5805887682140ee0a0d10a88e1de84208/fonttools-4.60.1-cp312-cp312-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:8177ec9676ea6e1793c8a084a90b65a9f778771998eb919d05db6d4b1c0b114c", size = 4923716, upload-time = "2025-09-29T21:11:43.893Z" }, + { url = "https://files.pythonhosted.org/packages/b8/9f/2cb82999f686c1d1ddf06f6ae1a9117a880adbec113611cc9d22b2fdd465/fonttools-4.60.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:996a4d1834524adbb423385d5a629b868ef9d774670856c63c9a0408a3063401", size = 4968175, upload-time = "2025-09-29T21:11:46.439Z" }, + { url = "https://files.pythonhosted.org/packages/18/79/be569699e37d166b78e6218f2cde8c550204f2505038cdd83b42edc469b9/fonttools-4.60.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:a46b2f450bc79e06ef3b6394f0c68660529ed51692606ad7f953fc2e448bc903", size = 4911031, upload-time = "2025-09-29T21:11:48.977Z" }, + { url = "https://files.pythonhosted.org/packages/cc/9f/89411cc116effaec5260ad519162f64f9c150e5522a27cbb05eb62d0c05b/fonttools-4.60.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:6ec722ee589e89a89f5b7574f5c45604030aa6ae24cb2c751e2707193b466fed", size = 5062966, upload-time = "2025-09-29T21:11:54.344Z" }, + { url = "https://files.pythonhosted.org/packages/62/a1/f888221934b5731d46cb9991c7a71f30cb1f97c0ef5fcf37f8da8fce6c8e/fonttools-4.60.1-cp312-cp312-win32.whl", hash = "sha256:b2cf105cee600d2de04ca3cfa1f74f1127f8455b71dbad02b9da6ec266e116d6", size = 2218750, upload-time = "2025-09-29T21:11:56.601Z" }, + { url = "https://files.pythonhosted.org/packages/88/8f/a55b5550cd33cd1028601df41acd057d4be20efa5c958f417b0c0613924d/fonttools-4.60.1-cp312-cp312-win_amd64.whl", hash = "sha256:992775c9fbe2cf794786fa0ffca7f09f564ba3499b8fe9f2f80bd7197db60383", size = 2267026, upload-time = "2025-09-29T21:11:58.852Z" }, + { url = "https://files.pythonhosted.org/packages/7c/5b/cdd2c612277b7ac7ec8c0c9bc41812c43dc7b2d5f2b0897e15fdf5a1f915/fonttools-4.60.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:6f68576bb4bbf6060c7ab047b1574a1ebe5c50a17de62830079967b211059ebb", size = 2825777, upload-time = "2025-09-29T21:12:01.22Z" }, + { url = "https://files.pythonhosted.org/packages/d6/8a/de9cc0540f542963ba5e8f3a1f6ad48fa211badc3177783b9d5cadf79b5d/fonttools-4.60.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:eedacb5c5d22b7097482fa834bda0dafa3d914a4e829ec83cdea2a01f8c813c4", size = 2348080, upload-time = "2025-09-29T21:12:03.785Z" }, + { url = "https://files.pythonhosted.org/packages/2d/8b/371ab3cec97ee3fe1126b3406b7abd60c8fec8975fd79a3c75cdea0c3d83/fonttools-4.60.1-cp313-cp313-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:b33a7884fabd72bdf5f910d0cf46be50dce86a0362a65cfc746a4168c67eb96c", size = 4903082, upload-time = "2025-09-29T21:12:06.382Z" }, + { url = "https://files.pythonhosted.org/packages/04/05/06b1455e4bc653fcb2117ac3ef5fa3a8a14919b93c60742d04440605d058/fonttools-4.60.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:2409d5fb7b55fd70f715e6d34e7a6e4f7511b8ad29a49d6df225ee76da76dd77", size = 4960125, upload-time = "2025-09-29T21:12:09.314Z" }, + { url = "https://files.pythonhosted.org/packages/8e/37/f3b840fcb2666f6cb97038793606bdd83488dca2d0b0fc542ccc20afa668/fonttools-4.60.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:c8651e0d4b3bdeda6602b85fdc2abbefc1b41e573ecb37b6779c4ca50753a199", size = 4901454, upload-time = "2025-09-29T21:12:11.931Z" }, + { url = "https://files.pythonhosted.org/packages/fd/9e/eb76f77e82f8d4a46420aadff12cec6237751b0fb9ef1de373186dcffb5f/fonttools-4.60.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:145daa14bf24824b677b9357c5e44fd8895c2a8f53596e1b9ea3496081dc692c", size = 5044495, upload-time = "2025-09-29T21:12:15.241Z" }, + { url = "https://files.pythonhosted.org/packages/f8/b3/cede8f8235d42ff7ae891bae8d619d02c8ac9fd0cfc450c5927a6200c70d/fonttools-4.60.1-cp313-cp313-win32.whl", hash = "sha256:2299df884c11162617a66b7c316957d74a18e3758c0274762d2cc87df7bc0272", size = 2217028, upload-time = "2025-09-29T21:12:17.96Z" }, + { url = "https://files.pythonhosted.org/packages/75/4d/b022c1577807ce8b31ffe055306ec13a866f2337ecee96e75b24b9b753ea/fonttools-4.60.1-cp313-cp313-win_amd64.whl", hash = "sha256:a3db56f153bd4c5c2b619ab02c5db5192e222150ce5a1bc10f16164714bc39ac", size = 2266200, upload-time = "2025-09-29T21:12:20.14Z" }, + { url = "https://files.pythonhosted.org/packages/9a/83/752ca11c1aa9a899b793a130f2e466b79ea0cf7279c8d79c178fc954a07b/fonttools-4.60.1-cp314-cp314-macosx_10_13_universal2.whl", hash = "sha256:a884aef09d45ba1206712c7dbda5829562d3fea7726935d3289d343232ecb0d3", size = 2822830, upload-time = "2025-09-29T21:12:24.406Z" }, + { url = "https://files.pythonhosted.org/packages/57/17/bbeab391100331950a96ce55cfbbff27d781c1b85ebafb4167eae50d9fe3/fonttools-4.60.1-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:8a44788d9d91df72d1a5eac49b31aeb887a5f4aab761b4cffc4196c74907ea85", size = 2345524, upload-time = "2025-09-29T21:12:26.819Z" }, + { url = "https://files.pythonhosted.org/packages/3d/2e/d4831caa96d85a84dd0da1d9f90d81cec081f551e0ea216df684092c6c97/fonttools-4.60.1-cp314-cp314-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:e852d9dda9f93ad3651ae1e3bb770eac544ec93c3807888798eccddf84596537", size = 4843490, upload-time = "2025-09-29T21:12:29.123Z" }, + { url = "https://files.pythonhosted.org/packages/49/13/5e2ea7c7a101b6fc3941be65307ef8df92cbbfa6ec4804032baf1893b434/fonttools-4.60.1-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:154cb6ee417e417bf5f7c42fe25858c9140c26f647c7347c06f0cc2d47eff003", size = 4944184, upload-time = "2025-09-29T21:12:31.414Z" }, + { url = "https://files.pythonhosted.org/packages/0c/2b/cf9603551c525b73fc47c52ee0b82a891579a93d9651ed694e4e2cd08bb8/fonttools-4.60.1-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:5664fd1a9ea7f244487ac8f10340c4e37664675e8667d6fee420766e0fb3cf08", size = 4890218, upload-time = "2025-09-29T21:12:33.936Z" }, + { url = "https://files.pythonhosted.org/packages/fd/2f/933d2352422e25f2376aae74f79eaa882a50fb3bfef3c0d4f50501267101/fonttools-4.60.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:583b7f8e3c49486e4d489ad1deacfb8d5be54a8ef34d6df824f6a171f8511d99", size = 4999324, upload-time = "2025-09-29T21:12:36.637Z" }, + { url = "https://files.pythonhosted.org/packages/38/99/234594c0391221f66216bc2c886923513b3399a148defaccf81dc3be6560/fonttools-4.60.1-cp314-cp314-win32.whl", hash = "sha256:66929e2ea2810c6533a5184f938502cfdaea4bc3efb7130d8cc02e1c1b4108d6", size = 2220861, upload-time = "2025-09-29T21:12:39.108Z" }, + { url = "https://files.pythonhosted.org/packages/3e/1d/edb5b23726dde50fc4068e1493e4fc7658eeefcaf75d4c5ffce067d07ae5/fonttools-4.60.1-cp314-cp314-win_amd64.whl", hash = "sha256:f3d5be054c461d6a2268831f04091dc82753176f6ea06dc6047a5e168265a987", size = 2270934, upload-time = "2025-09-29T21:12:41.339Z" }, + { url = "https://files.pythonhosted.org/packages/fb/da/1392aaa2170adc7071fe7f9cfd181a5684a7afcde605aebddf1fb4d76df5/fonttools-4.60.1-cp314-cp314t-macosx_10_13_universal2.whl", hash = "sha256:b6379e7546ba4ae4b18f8ae2b9bc5960936007a1c0e30b342f662577e8bc3299", size = 2894340, upload-time = "2025-09-29T21:12:43.774Z" }, + { url = "https://files.pythonhosted.org/packages/bf/a7/3b9f16e010d536ce567058b931a20b590d8f3177b2eda09edd92e392375d/fonttools-4.60.1-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:9d0ced62b59e0430b3690dbc5373df1c2aa7585e9a8ce38eff87f0fd993c5b01", size = 2375073, upload-time = "2025-09-29T21:12:46.437Z" }, + { url = "https://files.pythonhosted.org/packages/9b/b5/e9bcf51980f98e59bb5bb7c382a63c6f6cac0eec5f67de6d8f2322382065/fonttools-4.60.1-cp314-cp314t-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:875cb7764708b3132637f6c5fb385b16eeba0f7ac9fa45a69d35e09b47045801", size = 4849758, upload-time = "2025-09-29T21:12:48.694Z" }, + { url = "https://files.pythonhosted.org/packages/e3/dc/1d2cf7d1cba82264b2f8385db3f5960e3d8ce756b4dc65b700d2c496f7e9/fonttools-4.60.1-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a184b2ea57b13680ab6d5fbde99ccef152c95c06746cb7718c583abd8f945ccc", size = 5085598, upload-time = "2025-09-29T21:12:51.081Z" }, + { url = "https://files.pythonhosted.org/packages/5d/4d/279e28ba87fb20e0c69baf72b60bbf1c4d873af1476806a7b5f2b7fac1ff/fonttools-4.60.1-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:026290e4ec76583881763fac284aca67365e0be9f13a7fb137257096114cb3bc", size = 4957603, upload-time = "2025-09-29T21:12:53.423Z" }, + { url = "https://files.pythonhosted.org/packages/78/d4/ff19976305e0c05aa3340c805475abb00224c954d3c65e82c0a69633d55d/fonttools-4.60.1-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:f0e8817c7d1a0c2eedebf57ef9a9896f3ea23324769a9a2061a80fe8852705ed", size = 4974184, upload-time = "2025-09-29T21:12:55.962Z" }, + { url = "https://files.pythonhosted.org/packages/63/22/8553ff6166f5cd21cfaa115aaacaa0dc73b91c079a8cfd54a482cbc0f4f5/fonttools-4.60.1-cp314-cp314t-win32.whl", hash = "sha256:1410155d0e764a4615774e5c2c6fc516259fe3eca5882f034eb9bfdbee056259", size = 2282241, upload-time = "2025-09-29T21:12:58.179Z" }, + { url = "https://files.pythonhosted.org/packages/8a/cb/fa7b4d148e11d5a72761a22e595344133e83a9507a4c231df972e657579b/fonttools-4.60.1-cp314-cp314t-win_amd64.whl", hash = "sha256:022beaea4b73a70295b688f817ddc24ed3e3418b5036ffcd5658141184ef0d0c", size = 2345760, upload-time = "2025-09-29T21:13:00.375Z" }, + { url = "https://files.pythonhosted.org/packages/a4/7f/1c9a6cc6e7374ab59bbe91cb3b8a65ce0907c59f8f35368bb3bf941bd458/fonttools-4.60.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:122e1a8ada290423c493491d002f622b1992b1ab0b488c68e31c413390dc7eb2", size = 2816178, upload-time = "2025-09-29T21:13:02.915Z" }, + { url = "https://files.pythonhosted.org/packages/ca/ac/acb4dcf1932566c0b57b5261f93a8b97cb3ebae08d07aff1288e7c9d7faa/fonttools-4.60.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:a140761c4ff63d0cb9256ac752f230460ee225ccef4ad8f68affc723c88e2036", size = 2349175, upload-time = "2025-09-29T21:13:05.432Z" }, + { url = "https://files.pythonhosted.org/packages/3e/ac/0b2f8d62c857adfe96551d56abbbc3d2eda2e4715a2e91c5eb7815bb38e1/fonttools-4.60.1-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0eae96373e4b7c9e45d099d7a523444e3554360927225c1cdae221a58a45b856", size = 4840452, upload-time = "2025-09-29T21:13:08.679Z" }, + { url = "https://files.pythonhosted.org/packages/2d/e1/b2e2ae805f263507e050f1ebfc2fb3654124161f3bea466a1b2a4485c705/fonttools-4.60.1-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:596ecaca36367027d525b3b426d8a8208169d09edcf8c7506aceb3a38bfb55c7", size = 4774040, upload-time = "2025-09-29T21:13:11.424Z" }, + { url = "https://files.pythonhosted.org/packages/9d/91/05949ba6f757014f343632b142543576eb100aeb261c036b86e7d1fc50f0/fonttools-4.60.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:2ee06fc57512144d8b0445194c2da9f190f61ad51e230f14836286470c99f854", size = 4823746, upload-time = "2025-09-29T21:13:14.08Z" }, + { url = "https://files.pythonhosted.org/packages/1b/cf/db9a1bd8d835dc17f09104f83b9d8c078d7bebbaaa9bd41378bf10f025de/fonttools-4.60.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:b42d86938e8dda1cd9a1a87a6d82f1818eaf933348429653559a458d027446da", size = 4934001, upload-time = "2025-09-29T21:13:16.435Z" }, + { url = "https://files.pythonhosted.org/packages/87/4a/c58503524f7e6c73eb33b944f27535460e1050a58c99bd5b441242fcca86/fonttools-4.60.1-cp39-cp39-win32.whl", hash = "sha256:8b4eb332f9501cb1cd3d4d099374a1e1306783ff95489a1026bde9eb02ccc34a", size = 1499091, upload-time = "2025-09-29T21:13:19.072Z" }, + { url = "https://files.pythonhosted.org/packages/69/8f/3394936411aec5f26a1fdf8d7fdc1da7c276e0c627cd71b7b266b2431681/fonttools-4.60.1-cp39-cp39-win_amd64.whl", hash = "sha256:7473a8ed9ed09aeaa191301244a5a9dbe46fe0bf54f9d6cd21d83044c3321217", size = 1543835, upload-time = "2025-09-29T21:13:21.606Z" }, + { url = "https://files.pythonhosted.org/packages/c7/93/0dd45cd283c32dea1545151d8c3637b4b8c53cdb3a625aeb2885b184d74d/fonttools-4.60.1-py3-none-any.whl", hash = "sha256:906306ac7afe2156fcf0042173d6ebbb05416af70f6b370967b47f8f00103bbb", size = 1143175, upload-time = "2025-09-29T21:13:24.134Z" }, +] + +[[package]] +name = "identify" +version = "2.6.15" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ff/e7/685de97986c916a6d93b3876139e00eef26ad5bbbd61925d670ae8013449/identify-2.6.15.tar.gz", hash = "sha256:e4f4864b96c6557ef2a1e1c951771838f4edc9df3a72ec7118b338801b11c7bf", size = 99311, upload-time = "2025-10-02T17:43:40.631Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0f/1c/e5fd8f973d4f375adb21565739498e2e9a1e54c858a97b9a8ccfdc81da9b/identify-2.6.15-py2.py3-none-any.whl", hash = "sha256:1181ef7608e00704db228516541eb83a88a9f94433a8c80bb9b5bd54b1d81757", size = 99183, upload-time = "2025-10-02T17:43:39.137Z" }, +] + +[[package]] +name = "importlib-resources" +version = "6.5.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "zipp", marker = "python_full_version < '3.10'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/cf/8c/f834fbf984f691b4f7ff60f50b514cc3de5cc08abfc3295564dd89c5e2e7/importlib_resources-6.5.2.tar.gz", hash = "sha256:185f87adef5bcc288449d98fb4fba07cea78bc036455dd44c5fc4a2fe78fed2c", size = 44693, upload-time = "2025-01-03T18:51:56.698Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a4/ed/1f1afb2e9e7f38a545d628f864d562a5ae64fe6f7a10e28ffb9b185b4e89/importlib_resources-6.5.2-py3-none-any.whl", hash = "sha256:789cfdc3ed28c78b67a06acb8126751ced69a3d5f79c095a98298cd8a760ccec", size = 37461, upload-time = "2025-01-03T18:51:54.306Z" }, +] + +[[package]] +name = "iniconfig" +version = "2.1.0" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version < '3.10'", +] +sdist = { url = "https://files.pythonhosted.org/packages/f2/97/ebf4da567aa6827c909642694d71c9fcf53e5b504f2d96afea02718862f3/iniconfig-2.1.0.tar.gz", hash = "sha256:3abbd2e30b36733fee78f9c7f7308f2d0050e88f0087fd25c2645f63c773e1c7", size = 4793, upload-time = "2025-03-19T20:09:59.721Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2c/e1/e6716421ea10d38022b952c159d5161ca1193197fb744506875fbb87ea7b/iniconfig-2.1.0-py3-none-any.whl", hash = "sha256:9deba5723312380e77435581c6bf4935c94cbfab9b1ed33ef8d238ea168eb760", size = 6050, upload-time = "2025-03-19T20:10:01.071Z" }, +] + +[[package]] +name = "iniconfig" +version = "2.3.0" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version >= '3.12'", + "python_full_version == '3.11.*'", + "python_full_version == '3.10.*'", +] +sdist = { url = "https://files.pythonhosted.org/packages/72/34/14ca021ce8e5dfedc35312d08ba8bf51fdd999c576889fc2c24cb97f4f10/iniconfig-2.3.0.tar.gz", hash = "sha256:c76315c77db068650d49c5b56314774a7804df16fee4402c1f19d6d15d8c4730", size = 20503, upload-time = "2025-10-18T21:55:43.219Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/cb/b1/3846dd7f199d53cb17f49cba7e651e9ce294d8497c8c150530ed11865bb8/iniconfig-2.3.0-py3-none-any.whl", hash = "sha256:f631c04d2c48c52b84d0d0549c99ff3859c98df65b3101406327ecc7d53fbf12", size = 7484, upload-time = "2025-10-18T21:55:41.639Z" }, +] + +[[package]] +name = "ipython" +version = "8.18.1" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version < '3.10'", +] +dependencies = [ + { name = "colorama", marker = "python_full_version < '3.10' and sys_platform == 'win32'" }, + { name = "decorator", marker = "python_full_version < '3.10'" }, + { name = "exceptiongroup", marker = "python_full_version < '3.10'" }, + { name = "jedi", marker = "python_full_version < '3.10'" }, + { name = "matplotlib-inline", marker = "python_full_version < '3.10'" }, + { name = "pexpect", marker = "python_full_version < '3.10' and sys_platform != 'win32'" }, + { name = "prompt-toolkit", marker = "python_full_version < '3.10'" }, + { name = "pygments", marker = "python_full_version < '3.10'" }, + { name = "stack-data", marker = "python_full_version < '3.10'" }, + { name = "traitlets", marker = "python_full_version < '3.10'" }, + { name = "typing-extensions", marker = "python_full_version < '3.10'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/b1/b9/3ba6c45a6df813c09a48bac313c22ff83efa26cbb55011218d925a46e2ad/ipython-8.18.1.tar.gz", hash = "sha256:ca6f079bb33457c66e233e4580ebfc4128855b4cf6370dddd73842a9563e8a27", size = 5486330, upload-time = "2023-11-27T09:58:34.596Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/47/6b/d9fdcdef2eb6a23f391251fde8781c38d42acd82abe84d054cb74f7863b0/ipython-8.18.1-py3-none-any.whl", hash = "sha256:e8267419d72d81955ec1177f8a29aaa90ac80ad647499201119e2f05e99aa397", size = 808161, upload-time = "2023-11-27T09:58:30.538Z" }, +] + +[[package]] +name = "ipython" +version = "8.37.0" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version >= '3.12'", + "python_full_version == '3.11.*'", + "python_full_version == '3.10.*'", +] +dependencies = [ + { name = "colorama", marker = "python_full_version >= '3.10' and sys_platform == 'win32'" }, + { name = "decorator", marker = "python_full_version >= '3.10'" }, + { name = "exceptiongroup", marker = "python_full_version == '3.10.*'" }, + { name = "jedi", marker = "python_full_version >= '3.10'" }, + { name = "matplotlib-inline", marker = "python_full_version >= '3.10'" }, + { name = "pexpect", marker = "python_full_version >= '3.10' and sys_platform != 'emscripten' and sys_platform != 'win32'" }, + { name = "prompt-toolkit", marker = "python_full_version >= '3.10'" }, + { name = "pygments", marker = "python_full_version >= '3.10'" }, + { name = "stack-data", marker = "python_full_version >= '3.10'" }, + { name = "traitlets", marker = "python_full_version >= '3.10'" }, + { name = "typing-extensions", marker = "python_full_version >= '3.10' and python_full_version < '3.12'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/85/31/10ac88f3357fc276dc8a64e8880c82e80e7459326ae1d0a211b40abf6665/ipython-8.37.0.tar.gz", hash = "sha256:ca815841e1a41a1e6b73a0b08f3038af9b2252564d01fc405356d34033012216", size = 5606088, upload-time = "2025-05-31T16:39:09.613Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/91/d0/274fbf7b0b12643cbbc001ce13e6a5b1607ac4929d1b11c72460152c9fc3/ipython-8.37.0-py3-none-any.whl", hash = "sha256:ed87326596b878932dbcb171e3e698845434d8c61b8d8cd474bf663041a9dcf2", size = 831864, upload-time = "2025-05-31T16:39:06.38Z" }, +] + +[[package]] +name = "jedi" +version = "0.19.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "parso" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/72/3a/79a912fbd4d8dd6fbb02bf69afd3bb72cf0c729bb3063c6f4498603db17a/jedi-0.19.2.tar.gz", hash = "sha256:4770dc3de41bde3966b02eb84fbcf557fb33cce26ad23da12c742fb50ecb11f0", size = 1231287, upload-time = "2024-11-11T01:41:42.873Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c0/5a/9cac0c82afec3d09ccd97c8b6502d48f165f9124db81b4bcb90b4af974ee/jedi-0.19.2-py2.py3-none-any.whl", hash = "sha256:a8ef22bde8490f57fe5c7681a3c83cb58874daf72b4784de3cce5b6ef6edb5b9", size = 1572278, upload-time = "2024-11-11T01:41:40.175Z" }, +] + +[[package]] +name = "joblib" +version = "1.5.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/e8/5d/447af5ea094b9e4c4054f82e223ada074c552335b9b4b2d14bd9b35a67c4/joblib-1.5.2.tar.gz", hash = "sha256:3faa5c39054b2f03ca547da9b2f52fde67c06240c31853f306aea97f13647b55", size = 331077, upload-time = "2025-08-27T12:15:46.575Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1e/e8/685f47e0d754320684db4425a0967f7d3fa70126bffd76110b7009a0090f/joblib-1.5.2-py3-none-any.whl", hash = "sha256:4e1f0bdbb987e6d843c70cf43714cb276623def372df3c22fe5266b2670bc241", size = 308396, upload-time = "2025-08-27T12:15:45.188Z" }, +] + +[[package]] +name = "kiwisolver" +version = "1.4.7" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version < '3.10'", +] +sdist = { url = "https://files.pythonhosted.org/packages/85/4d/2255e1c76304cbd60b48cee302b66d1dde4468dc5b1160e4b7cb43778f2a/kiwisolver-1.4.7.tar.gz", hash = "sha256:9893ff81bd7107f7b685d3017cc6583daadb4fc26e4a888350df530e41980a60", size = 97286, upload-time = "2024-09-04T09:39:44.302Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/97/14/fc943dd65268a96347472b4fbe5dcc2f6f55034516f80576cd0dd3a8930f/kiwisolver-1.4.7-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:8a9c83f75223d5e48b0bc9cb1bf2776cf01563e00ade8775ffe13b0b6e1af3a6", size = 122440, upload-time = "2024-09-04T09:03:44.9Z" }, + { url = "https://files.pythonhosted.org/packages/1e/46/e68fed66236b69dd02fcdb506218c05ac0e39745d696d22709498896875d/kiwisolver-1.4.7-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:58370b1ffbd35407444d57057b57da5d6549d2d854fa30249771775c63b5fe17", size = 65758, upload-time = "2024-09-04T09:03:46.582Z" }, + { url = "https://files.pythonhosted.org/packages/ef/fa/65de49c85838681fc9cb05de2a68067a683717321e01ddafb5b8024286f0/kiwisolver-1.4.7-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:aa0abdf853e09aff551db11fce173e2177d00786c688203f52c87ad7fcd91ef9", size = 64311, upload-time = "2024-09-04T09:03:47.973Z" }, + { url = "https://files.pythonhosted.org/packages/42/9c/cc8d90f6ef550f65443bad5872ffa68f3dee36de4974768628bea7c14979/kiwisolver-1.4.7-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:8d53103597a252fb3ab8b5845af04c7a26d5e7ea8122303dd7a021176a87e8b9", size = 1637109, upload-time = "2024-09-04T09:03:49.281Z" }, + { url = "https://files.pythonhosted.org/packages/55/91/0a57ce324caf2ff5403edab71c508dd8f648094b18cfbb4c8cc0fde4a6ac/kiwisolver-1.4.7-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:88f17c5ffa8e9462fb79f62746428dd57b46eb931698e42e990ad63103f35e6c", size = 1617814, upload-time = "2024-09-04T09:03:51.444Z" }, + { url = "https://files.pythonhosted.org/packages/12/5d/c36140313f2510e20207708adf36ae4919416d697ee0236b0ddfb6fd1050/kiwisolver-1.4.7-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:88a9ca9c710d598fd75ee5de59d5bda2684d9db36a9f50b6125eaea3969c2599", size = 1400881, upload-time = "2024-09-04T09:03:53.357Z" }, + { url = "https://files.pythonhosted.org/packages/56/d0/786e524f9ed648324a466ca8df86298780ef2b29c25313d9a4f16992d3cf/kiwisolver-1.4.7-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f4d742cb7af1c28303a51b7a27aaee540e71bb8e24f68c736f6f2ffc82f2bf05", size = 1512972, upload-time = "2024-09-04T09:03:55.082Z" }, + { url = "https://files.pythonhosted.org/packages/67/5a/77851f2f201e6141d63c10a0708e996a1363efaf9e1609ad0441b343763b/kiwisolver-1.4.7-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e28c7fea2196bf4c2f8d46a0415c77a1c480cc0724722f23d7410ffe9842c407", size = 1444787, upload-time = "2024-09-04T09:03:56.588Z" }, + { url = "https://files.pythonhosted.org/packages/06/5f/1f5eaab84355885e224a6fc8d73089e8713dc7e91c121f00b9a1c58a2195/kiwisolver-1.4.7-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:e968b84db54f9d42046cf154e02911e39c0435c9801681e3fc9ce8a3c4130278", size = 2199212, upload-time = "2024-09-04T09:03:58.557Z" }, + { url = "https://files.pythonhosted.org/packages/b5/28/9152a3bfe976a0ae21d445415defc9d1cd8614b2910b7614b30b27a47270/kiwisolver-1.4.7-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:0c18ec74c0472de033e1bebb2911c3c310eef5649133dd0bedf2a169a1b269e5", size = 2346399, upload-time = "2024-09-04T09:04:00.178Z" }, + { url = "https://files.pythonhosted.org/packages/26/f6/453d1904c52ac3b400f4d5e240ac5fec25263716723e44be65f4d7149d13/kiwisolver-1.4.7-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:8f0ea6da6d393d8b2e187e6a5e3fb81f5862010a40c3945e2c6d12ae45cfb2ad", size = 2308688, upload-time = "2024-09-04T09:04:02.216Z" }, + { url = "https://files.pythonhosted.org/packages/5a/9a/d4968499441b9ae187e81745e3277a8b4d7c60840a52dc9d535a7909fac3/kiwisolver-1.4.7-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:f106407dda69ae456dd1227966bf445b157ccc80ba0dff3802bb63f30b74e895", size = 2445493, upload-time = "2024-09-04T09:04:04.571Z" }, + { url = "https://files.pythonhosted.org/packages/07/c9/032267192e7828520dacb64dfdb1d74f292765f179e467c1cba97687f17d/kiwisolver-1.4.7-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:84ec80df401cfee1457063732d90022f93951944b5b58975d34ab56bb150dfb3", size = 2262191, upload-time = "2024-09-04T09:04:05.969Z" }, + { url = "https://files.pythonhosted.org/packages/6c/ad/db0aedb638a58b2951da46ddaeecf204be8b4f5454df020d850c7fa8dca8/kiwisolver-1.4.7-cp310-cp310-win32.whl", hash = "sha256:71bb308552200fb2c195e35ef05de12f0c878c07fc91c270eb3d6e41698c3bcc", size = 46644, upload-time = "2024-09-04T09:04:07.408Z" }, + { url = "https://files.pythonhosted.org/packages/12/ca/d0f7b7ffbb0be1e7c2258b53554efec1fd652921f10d7d85045aff93ab61/kiwisolver-1.4.7-cp310-cp310-win_amd64.whl", hash = "sha256:44756f9fd339de0fb6ee4f8c1696cfd19b2422e0d70b4cefc1cc7f1f64045a8c", size = 55877, upload-time = "2024-09-04T09:04:08.869Z" }, + { url = "https://files.pythonhosted.org/packages/97/6c/cfcc128672f47a3e3c0d918ecb67830600078b025bfc32d858f2e2d5c6a4/kiwisolver-1.4.7-cp310-cp310-win_arm64.whl", hash = "sha256:78a42513018c41c2ffd262eb676442315cbfe3c44eed82385c2ed043bc63210a", size = 48347, upload-time = "2024-09-04T09:04:10.106Z" }, + { url = "https://files.pythonhosted.org/packages/e9/44/77429fa0a58f941d6e1c58da9efe08597d2e86bf2b2cce6626834f49d07b/kiwisolver-1.4.7-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:d2b0e12a42fb4e72d509fc994713d099cbb15ebf1103545e8a45f14da2dfca54", size = 122442, upload-time = "2024-09-04T09:04:11.432Z" }, + { url = "https://files.pythonhosted.org/packages/e5/20/8c75caed8f2462d63c7fd65e16c832b8f76cda331ac9e615e914ee80bac9/kiwisolver-1.4.7-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:2a8781ac3edc42ea4b90bc23e7d37b665d89423818e26eb6df90698aa2287c95", size = 65762, upload-time = "2024-09-04T09:04:12.468Z" }, + { url = "https://files.pythonhosted.org/packages/f4/98/fe010f15dc7230f45bc4cf367b012d651367fd203caaa992fd1f5963560e/kiwisolver-1.4.7-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:46707a10836894b559e04b0fd143e343945c97fd170d69a2d26d640b4e297935", size = 64319, upload-time = "2024-09-04T09:04:13.635Z" }, + { url = "https://files.pythonhosted.org/packages/8b/1b/b5d618f4e58c0675654c1e5051bcf42c776703edb21c02b8c74135541f60/kiwisolver-1.4.7-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ef97b8df011141c9b0f6caf23b29379f87dd13183c978a30a3c546d2c47314cb", size = 1334260, upload-time = "2024-09-04T09:04:14.878Z" }, + { url = "https://files.pythonhosted.org/packages/b8/01/946852b13057a162a8c32c4c8d2e9ed79f0bb5d86569a40c0b5fb103e373/kiwisolver-1.4.7-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3ab58c12a2cd0fc769089e6d38466c46d7f76aced0a1f54c77652446733d2d02", size = 1426589, upload-time = "2024-09-04T09:04:16.514Z" }, + { url = "https://files.pythonhosted.org/packages/70/d1/c9f96df26b459e15cf8a965304e6e6f4eb291e0f7a9460b4ad97b047561e/kiwisolver-1.4.7-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:803b8e1459341c1bb56d1c5c010406d5edec8a0713a0945851290a7930679b51", size = 1541080, upload-time = "2024-09-04T09:04:18.322Z" }, + { url = "https://files.pythonhosted.org/packages/d3/73/2686990eb8b02d05f3de759d6a23a4ee7d491e659007dd4c075fede4b5d0/kiwisolver-1.4.7-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f9a9e8a507420fe35992ee9ecb302dab68550dedc0da9e2880dd88071c5fb052", size = 1470049, upload-time = "2024-09-04T09:04:20.266Z" }, + { url = "https://files.pythonhosted.org/packages/a7/4b/2db7af3ed3af7c35f388d5f53c28e155cd402a55432d800c543dc6deb731/kiwisolver-1.4.7-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:18077b53dc3bb490e330669a99920c5e6a496889ae8c63b58fbc57c3d7f33a18", size = 1426376, upload-time = "2024-09-04T09:04:22.419Z" }, + { url = "https://files.pythonhosted.org/packages/05/83/2857317d04ea46dc5d115f0df7e676997bbd968ced8e2bd6f7f19cfc8d7f/kiwisolver-1.4.7-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:6af936f79086a89b3680a280c47ea90b4df7047b5bdf3aa5c524bbedddb9e545", size = 2222231, upload-time = "2024-09-04T09:04:24.526Z" }, + { url = "https://files.pythonhosted.org/packages/0d/b5/866f86f5897cd4ab6d25d22e403404766a123f138bd6a02ecb2cdde52c18/kiwisolver-1.4.7-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:3abc5b19d24af4b77d1598a585b8a719beb8569a71568b66f4ebe1fb0449460b", size = 2368634, upload-time = "2024-09-04T09:04:25.899Z" }, + { url = "https://files.pythonhosted.org/packages/c1/ee/73de8385403faba55f782a41260210528fe3273d0cddcf6d51648202d6d0/kiwisolver-1.4.7-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:933d4de052939d90afbe6e9d5273ae05fb836cc86c15b686edd4b3560cc0ee36", size = 2329024, upload-time = "2024-09-04T09:04:28.523Z" }, + { url = "https://files.pythonhosted.org/packages/a1/e7/cd101d8cd2cdfaa42dc06c433df17c8303d31129c9fdd16c0ea37672af91/kiwisolver-1.4.7-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:65e720d2ab2b53f1f72fb5da5fb477455905ce2c88aaa671ff0a447c2c80e8e3", size = 2468484, upload-time = "2024-09-04T09:04:30.547Z" }, + { url = "https://files.pythonhosted.org/packages/e1/72/84f09d45a10bc57a40bb58b81b99d8f22b58b2040c912b7eb97ebf625bf2/kiwisolver-1.4.7-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:3bf1ed55088f214ba6427484c59553123fdd9b218a42bbc8c6496d6754b1e523", size = 2284078, upload-time = "2024-09-04T09:04:33.218Z" }, + { url = "https://files.pythonhosted.org/packages/d2/d4/71828f32b956612dc36efd7be1788980cb1e66bfb3706e6dec9acad9b4f9/kiwisolver-1.4.7-cp311-cp311-win32.whl", hash = "sha256:4c00336b9dd5ad96d0a558fd18a8b6f711b7449acce4c157e7343ba92dd0cf3d", size = 46645, upload-time = "2024-09-04T09:04:34.371Z" }, + { url = "https://files.pythonhosted.org/packages/a1/65/d43e9a20aabcf2e798ad1aff6c143ae3a42cf506754bcb6a7ed8259c8425/kiwisolver-1.4.7-cp311-cp311-win_amd64.whl", hash = "sha256:929e294c1ac1e9f615c62a4e4313ca1823ba37326c164ec720a803287c4c499b", size = 56022, upload-time = "2024-09-04T09:04:35.786Z" }, + { url = "https://files.pythonhosted.org/packages/35/b3/9f75a2e06f1b4ca00b2b192bc2b739334127d27f1d0625627ff8479302ba/kiwisolver-1.4.7-cp311-cp311-win_arm64.whl", hash = "sha256:e33e8fbd440c917106b237ef1a2f1449dfbb9b6f6e1ce17c94cd6a1e0d438376", size = 48536, upload-time = "2024-09-04T09:04:37.525Z" }, + { url = "https://files.pythonhosted.org/packages/97/9c/0a11c714cf8b6ef91001c8212c4ef207f772dd84540104952c45c1f0a249/kiwisolver-1.4.7-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:5360cc32706dab3931f738d3079652d20982511f7c0ac5711483e6eab08efff2", size = 121808, upload-time = "2024-09-04T09:04:38.637Z" }, + { url = "https://files.pythonhosted.org/packages/f2/d8/0fe8c5f5d35878ddd135f44f2af0e4e1d379e1c7b0716f97cdcb88d4fd27/kiwisolver-1.4.7-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:942216596dc64ddb25adb215c3c783215b23626f8d84e8eff8d6d45c3f29f75a", size = 65531, upload-time = "2024-09-04T09:04:39.694Z" }, + { url = "https://files.pythonhosted.org/packages/80/c5/57fa58276dfdfa612241d640a64ca2f76adc6ffcebdbd135b4ef60095098/kiwisolver-1.4.7-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:48b571ecd8bae15702e4f22d3ff6a0f13e54d3d00cd25216d5e7f658242065ee", size = 63894, upload-time = "2024-09-04T09:04:41.6Z" }, + { url = "https://files.pythonhosted.org/packages/8b/e9/26d3edd4c4ad1c5b891d8747a4f81b1b0aba9fb9721de6600a4adc09773b/kiwisolver-1.4.7-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ad42ba922c67c5f219097b28fae965e10045ddf145d2928bfac2eb2e17673640", size = 1369296, upload-time = "2024-09-04T09:04:42.886Z" }, + { url = "https://files.pythonhosted.org/packages/b6/67/3f4850b5e6cffb75ec40577ddf54f7b82b15269cc5097ff2e968ee32ea7d/kiwisolver-1.4.7-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:612a10bdae23404a72941a0fc8fa2660c6ea1217c4ce0dbcab8a8f6543ea9e7f", size = 1461450, upload-time = "2024-09-04T09:04:46.284Z" }, + { url = "https://files.pythonhosted.org/packages/52/be/86cbb9c9a315e98a8dc6b1d23c43cffd91d97d49318854f9c37b0e41cd68/kiwisolver-1.4.7-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9e838bba3a3bac0fe06d849d29772eb1afb9745a59710762e4ba3f4cb8424483", size = 1579168, upload-time = "2024-09-04T09:04:47.91Z" }, + { url = "https://files.pythonhosted.org/packages/0f/00/65061acf64bd5fd34c1f4ae53f20b43b0a017a541f242a60b135b9d1e301/kiwisolver-1.4.7-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:22f499f6157236c19f4bbbd472fa55b063db77a16cd74d49afe28992dff8c258", size = 1507308, upload-time = "2024-09-04T09:04:49.465Z" }, + { url = "https://files.pythonhosted.org/packages/21/e4/c0b6746fd2eb62fe702118b3ca0cb384ce95e1261cfada58ff693aeec08a/kiwisolver-1.4.7-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:693902d433cf585133699972b6d7c42a8b9f8f826ebcaf0132ff55200afc599e", size = 1464186, upload-time = "2024-09-04T09:04:50.949Z" }, + { url = "https://files.pythonhosted.org/packages/0a/0f/529d0a9fffb4d514f2782c829b0b4b371f7f441d61aa55f1de1c614c4ef3/kiwisolver-1.4.7-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:4e77f2126c3e0b0d055f44513ed349038ac180371ed9b52fe96a32aa071a5107", size = 2247877, upload-time = "2024-09-04T09:04:52.388Z" }, + { url = "https://files.pythonhosted.org/packages/d1/e1/66603ad779258843036d45adcbe1af0d1a889a07af4635f8b4ec7dccda35/kiwisolver-1.4.7-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:657a05857bda581c3656bfc3b20e353c232e9193eb167766ad2dc58b56504948", size = 2404204, upload-time = "2024-09-04T09:04:54.385Z" }, + { url = "https://files.pythonhosted.org/packages/8d/61/de5fb1ca7ad1f9ab7970e340a5b833d735df24689047de6ae71ab9d8d0e7/kiwisolver-1.4.7-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:4bfa75a048c056a411f9705856abfc872558e33c055d80af6a380e3658766038", size = 2352461, upload-time = "2024-09-04T09:04:56.307Z" }, + { url = "https://files.pythonhosted.org/packages/ba/d2/0edc00a852e369827f7e05fd008275f550353f1f9bcd55db9363d779fc63/kiwisolver-1.4.7-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:34ea1de54beef1c104422d210c47c7d2a4999bdecf42c7b5718fbe59a4cac383", size = 2501358, upload-time = "2024-09-04T09:04:57.922Z" }, + { url = "https://files.pythonhosted.org/packages/84/15/adc15a483506aec6986c01fb7f237c3aec4d9ed4ac10b756e98a76835933/kiwisolver-1.4.7-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:90da3b5f694b85231cf93586dad5e90e2d71b9428f9aad96952c99055582f520", size = 2314119, upload-time = "2024-09-04T09:04:59.332Z" }, + { url = "https://files.pythonhosted.org/packages/36/08/3a5bb2c53c89660863a5aa1ee236912269f2af8762af04a2e11df851d7b2/kiwisolver-1.4.7-cp312-cp312-win32.whl", hash = "sha256:18e0cca3e008e17fe9b164b55735a325140a5a35faad8de92dd80265cd5eb80b", size = 46367, upload-time = "2024-09-04T09:05:00.804Z" }, + { url = "https://files.pythonhosted.org/packages/19/93/c05f0a6d825c643779fc3c70876bff1ac221f0e31e6f701f0e9578690d70/kiwisolver-1.4.7-cp312-cp312-win_amd64.whl", hash = "sha256:58cb20602b18f86f83a5c87d3ee1c766a79c0d452f8def86d925e6c60fbf7bfb", size = 55884, upload-time = "2024-09-04T09:05:01.924Z" }, + { url = "https://files.pythonhosted.org/packages/d2/f9/3828d8f21b6de4279f0667fb50a9f5215e6fe57d5ec0d61905914f5b6099/kiwisolver-1.4.7-cp312-cp312-win_arm64.whl", hash = "sha256:f5a8b53bdc0b3961f8b6125e198617c40aeed638b387913bf1ce78afb1b0be2a", size = 48528, upload-time = "2024-09-04T09:05:02.983Z" }, + { url = "https://files.pythonhosted.org/packages/c4/06/7da99b04259b0f18b557a4effd1b9c901a747f7fdd84cf834ccf520cb0b2/kiwisolver-1.4.7-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:2e6039dcbe79a8e0f044f1c39db1986a1b8071051efba3ee4d74f5b365f5226e", size = 121913, upload-time = "2024-09-04T09:05:04.072Z" }, + { url = "https://files.pythonhosted.org/packages/97/f5/b8a370d1aa593c17882af0a6f6755aaecd643640c0ed72dcfd2eafc388b9/kiwisolver-1.4.7-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:a1ecf0ac1c518487d9d23b1cd7139a6a65bc460cd101ab01f1be82ecf09794b6", size = 65627, upload-time = "2024-09-04T09:05:05.119Z" }, + { url = "https://files.pythonhosted.org/packages/2a/fc/6c0374f7503522539e2d4d1b497f5ebad3f8ed07ab51aed2af988dd0fb65/kiwisolver-1.4.7-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:7ab9ccab2b5bd5702ab0803676a580fffa2aa178c2badc5557a84cc943fcf750", size = 63888, upload-time = "2024-09-04T09:05:06.191Z" }, + { url = "https://files.pythonhosted.org/packages/bf/3e/0b7172793d0f41cae5c923492da89a2ffcd1adf764c16159ca047463ebd3/kiwisolver-1.4.7-cp313-cp313-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f816dd2277f8d63d79f9c8473a79fe54047bc0467754962840782c575522224d", size = 1369145, upload-time = "2024-09-04T09:05:07.919Z" }, + { url = "https://files.pythonhosted.org/packages/77/92/47d050d6f6aced2d634258123f2688fbfef8ded3c5baf2c79d94d91f1f58/kiwisolver-1.4.7-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cf8bcc23ceb5a1b624572a1623b9f79d2c3b337c8c455405ef231933a10da379", size = 1461448, upload-time = "2024-09-04T09:05:10.01Z" }, + { url = "https://files.pythonhosted.org/packages/9c/1b/8f80b18e20b3b294546a1adb41701e79ae21915f4175f311a90d042301cf/kiwisolver-1.4.7-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:dea0bf229319828467d7fca8c7c189780aa9ff679c94539eed7532ebe33ed37c", size = 1578750, upload-time = "2024-09-04T09:05:11.598Z" }, + { url = "https://files.pythonhosted.org/packages/a4/fe/fe8e72f3be0a844f257cadd72689c0848c6d5c51bc1d60429e2d14ad776e/kiwisolver-1.4.7-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7c06a4c7cf15ec739ce0e5971b26c93638730090add60e183530d70848ebdd34", size = 1507175, upload-time = "2024-09-04T09:05:13.22Z" }, + { url = "https://files.pythonhosted.org/packages/39/fa/cdc0b6105d90eadc3bee525fecc9179e2b41e1ce0293caaf49cb631a6aaf/kiwisolver-1.4.7-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:913983ad2deb14e66d83c28b632fd35ba2b825031f2fa4ca29675e665dfecbe1", size = 1463963, upload-time = "2024-09-04T09:05:15.925Z" }, + { url = "https://files.pythonhosted.org/packages/6e/5c/0c03c4e542720c6177d4f408e56d1c8315899db72d46261a4e15b8b33a41/kiwisolver-1.4.7-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:5337ec7809bcd0f424c6b705ecf97941c46279cf5ed92311782c7c9c2026f07f", size = 2248220, upload-time = "2024-09-04T09:05:17.434Z" }, + { url = "https://files.pythonhosted.org/packages/3d/ee/55ef86d5a574f4e767df7da3a3a7ff4954c996e12d4fbe9c408170cd7dcc/kiwisolver-1.4.7-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:4c26ed10c4f6fa6ddb329a5120ba3b6db349ca192ae211e882970bfc9d91420b", size = 2404463, upload-time = "2024-09-04T09:05:18.997Z" }, + { url = "https://files.pythonhosted.org/packages/0f/6d/73ad36170b4bff4825dc588acf4f3e6319cb97cd1fb3eb04d9faa6b6f212/kiwisolver-1.4.7-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:c619b101e6de2222c1fcb0531e1b17bbffbe54294bfba43ea0d411d428618c27", size = 2352842, upload-time = "2024-09-04T09:05:21.299Z" }, + { url = "https://files.pythonhosted.org/packages/0b/16/fa531ff9199d3b6473bb4d0f47416cdb08d556c03b8bc1cccf04e756b56d/kiwisolver-1.4.7-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:073a36c8273647592ea332e816e75ef8da5c303236ec0167196793eb1e34657a", size = 2501635, upload-time = "2024-09-04T09:05:23.588Z" }, + { url = "https://files.pythonhosted.org/packages/78/7e/aa9422e78419db0cbe75fb86d8e72b433818f2e62e2e394992d23d23a583/kiwisolver-1.4.7-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:3ce6b2b0231bda412463e152fc18335ba32faf4e8c23a754ad50ffa70e4091ee", size = 2314556, upload-time = "2024-09-04T09:05:25.907Z" }, + { url = "https://files.pythonhosted.org/packages/a8/b2/15f7f556df0a6e5b3772a1e076a9d9f6c538ce5f05bd590eca8106508e06/kiwisolver-1.4.7-cp313-cp313-win32.whl", hash = "sha256:f4c9aee212bc89d4e13f58be11a56cc8036cabad119259d12ace14b34476fd07", size = 46364, upload-time = "2024-09-04T09:05:27.184Z" }, + { url = "https://files.pythonhosted.org/packages/0b/db/32e897e43a330eee8e4770bfd2737a9584b23e33587a0812b8e20aac38f7/kiwisolver-1.4.7-cp313-cp313-win_amd64.whl", hash = "sha256:8a3ec5aa8e38fc4c8af308917ce12c536f1c88452ce554027e55b22cbbfbff76", size = 55887, upload-time = "2024-09-04T09:05:28.372Z" }, + { url = "https://files.pythonhosted.org/packages/c8/a4/df2bdca5270ca85fd25253049eb6708d4127be2ed0e5c2650217450b59e9/kiwisolver-1.4.7-cp313-cp313-win_arm64.whl", hash = "sha256:76c8094ac20ec259471ac53e774623eb62e6e1f56cd8690c67ce6ce4fcb05650", size = 48530, upload-time = "2024-09-04T09:05:30.225Z" }, + { url = "https://files.pythonhosted.org/packages/11/88/37ea0ea64512997b13d69772db8dcdc3bfca5442cda3a5e4bb943652ee3e/kiwisolver-1.4.7-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:3f9362ecfca44c863569d3d3c033dbe8ba452ff8eed6f6b5806382741a1334bd", size = 122449, upload-time = "2024-09-04T09:05:55.311Z" }, + { url = "https://files.pythonhosted.org/packages/4e/45/5a5c46078362cb3882dcacad687c503089263c017ca1241e0483857791eb/kiwisolver-1.4.7-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:e8df2eb9b2bac43ef8b082e06f750350fbbaf2887534a5be97f6cf07b19d9583", size = 65757, upload-time = "2024-09-04T09:05:56.906Z" }, + { url = "https://files.pythonhosted.org/packages/8a/be/a6ae58978772f685d48dd2e84460937761c53c4bbd84e42b0336473d9775/kiwisolver-1.4.7-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:f32d6edbc638cde7652bd690c3e728b25332acbadd7cad670cc4a02558d9c417", size = 64312, upload-time = "2024-09-04T09:05:58.384Z" }, + { url = "https://files.pythonhosted.org/packages/f4/04/18ef6f452d311e1e1eb180c9bf5589187fa1f042db877e6fe443ef10099c/kiwisolver-1.4.7-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:e2e6c39bd7b9372b0be21456caab138e8e69cc0fc1190a9dfa92bd45a1e6e904", size = 1626966, upload-time = "2024-09-04T09:05:59.855Z" }, + { url = "https://files.pythonhosted.org/packages/21/b1/40655f6c3fa11ce740e8a964fa8e4c0479c87d6a7944b95af799c7a55dfe/kiwisolver-1.4.7-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:dda56c24d869b1193fcc763f1284b9126550eaf84b88bbc7256e15028f19188a", size = 1607044, upload-time = "2024-09-04T09:06:02.16Z" }, + { url = "https://files.pythonhosted.org/packages/fd/93/af67dbcfb9b3323bbd2c2db1385a7139d8f77630e4a37bb945b57188eb2d/kiwisolver-1.4.7-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:79849239c39b5e1fd906556c474d9b0439ea6792b637511f3fe3a41158d89ca8", size = 1391879, upload-time = "2024-09-04T09:06:03.908Z" }, + { url = "https://files.pythonhosted.org/packages/40/6f/d60770ef98e77b365d96061d090c0cd9e23418121c55fff188fa4bdf0b54/kiwisolver-1.4.7-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5e3bc157fed2a4c02ec468de4ecd12a6e22818d4f09cde2c31ee3226ffbefab2", size = 1504751, upload-time = "2024-09-04T09:06:05.58Z" }, + { url = "https://files.pythonhosted.org/packages/fa/3a/5f38667d313e983c432f3fcd86932177519ed8790c724e07d77d1de0188a/kiwisolver-1.4.7-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3da53da805b71e41053dc670f9a820d1157aae77b6b944e08024d17bcd51ef88", size = 1436990, upload-time = "2024-09-04T09:06:08.126Z" }, + { url = "https://files.pythonhosted.org/packages/cb/3b/1520301a47326e6a6043b502647e42892be33b3f051e9791cc8bb43f1a32/kiwisolver-1.4.7-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:8705f17dfeb43139a692298cb6637ee2e59c0194538153e83e9ee0c75c2eddde", size = 2191122, upload-time = "2024-09-04T09:06:10.345Z" }, + { url = "https://files.pythonhosted.org/packages/cf/c4/eb52da300c166239a2233f1f9c4a1b767dfab98fae27681bfb7ea4873cb6/kiwisolver-1.4.7-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:82a5c2f4b87c26bb1a0ef3d16b5c4753434633b83d365cc0ddf2770c93829e3c", size = 2338126, upload-time = "2024-09-04T09:06:12.321Z" }, + { url = "https://files.pythonhosted.org/packages/1a/cb/42b92fd5eadd708dd9107c089e817945500685f3437ce1fd387efebc6d6e/kiwisolver-1.4.7-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:ce8be0466f4c0d585cdb6c1e2ed07232221df101a4c6f28821d2aa754ca2d9e2", size = 2298313, upload-time = "2024-09-04T09:06:14.562Z" }, + { url = "https://files.pythonhosted.org/packages/4f/eb/be25aa791fe5fc75a8b1e0c965e00f942496bc04635c9aae8035f6b76dcd/kiwisolver-1.4.7-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:409afdfe1e2e90e6ee7fc896f3df9a7fec8e793e58bfa0d052c8a82f99c37abb", size = 2437784, upload-time = "2024-09-04T09:06:16.767Z" }, + { url = "https://files.pythonhosted.org/packages/c5/22/30a66be7f3368d76ff95689e1c2e28d382383952964ab15330a15d8bfd03/kiwisolver-1.4.7-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:5b9c3f4ee0b9a439d2415012bd1b1cc2df59e4d6a9939f4d669241d30b414327", size = 2253988, upload-time = "2024-09-04T09:06:18.705Z" }, + { url = "https://files.pythonhosted.org/packages/35/d3/5f2ecb94b5211c8a04f218a76133cc8d6d153b0f9cd0b45fad79907f0689/kiwisolver-1.4.7-cp39-cp39-win32.whl", hash = "sha256:a79ae34384df2b615eefca647a2873842ac3b596418032bef9a7283675962644", size = 46980, upload-time = "2024-09-04T09:06:20.106Z" }, + { url = "https://files.pythonhosted.org/packages/ef/17/cd10d020578764ea91740204edc6b3236ed8106228a46f568d716b11feb2/kiwisolver-1.4.7-cp39-cp39-win_amd64.whl", hash = "sha256:cf0438b42121a66a3a667de17e779330fc0f20b0d97d59d2f2121e182b0505e4", size = 55847, upload-time = "2024-09-04T09:06:21.407Z" }, + { url = "https://files.pythonhosted.org/packages/91/84/32232502020bd78d1d12be7afde15811c64a95ed1f606c10456db4e4c3ac/kiwisolver-1.4.7-cp39-cp39-win_arm64.whl", hash = "sha256:764202cc7e70f767dab49e8df52c7455e8de0df5d858fa801a11aa0d882ccf3f", size = 48494, upload-time = "2024-09-04T09:06:22.648Z" }, + { url = "https://files.pythonhosted.org/packages/ac/59/741b79775d67ab67ced9bb38552da688c0305c16e7ee24bba7a2be253fb7/kiwisolver-1.4.7-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:94252291e3fe68001b1dd747b4c0b3be12582839b95ad4d1b641924d68fd4643", size = 59491, upload-time = "2024-09-04T09:06:24.188Z" }, + { url = "https://files.pythonhosted.org/packages/58/cc/fb239294c29a5656e99e3527f7369b174dd9cc7c3ef2dea7cb3c54a8737b/kiwisolver-1.4.7-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:5b7dfa3b546da08a9f622bb6becdb14b3e24aaa30adba66749d38f3cc7ea9706", size = 57648, upload-time = "2024-09-04T09:06:25.559Z" }, + { url = "https://files.pythonhosted.org/packages/3b/ef/2f009ac1f7aab9f81efb2d837301d255279d618d27b6015780115ac64bdd/kiwisolver-1.4.7-pp310-pypy310_pp73-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bd3de6481f4ed8b734da5df134cd5a6a64fe32124fe83dde1e5b5f29fe30b1e6", size = 84257, upload-time = "2024-09-04T09:06:27.038Z" }, + { url = "https://files.pythonhosted.org/packages/81/e1/c64f50987f85b68b1c52b464bb5bf73e71570c0f7782d626d1eb283ad620/kiwisolver-1.4.7-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a91b5f9f1205845d488c928e8570dcb62b893372f63b8b6e98b863ebd2368ff2", size = 80906, upload-time = "2024-09-04T09:06:28.48Z" }, + { url = "https://files.pythonhosted.org/packages/fd/71/1687c5c0a0be2cee39a5c9c389e546f9c6e215e46b691d00d9f646892083/kiwisolver-1.4.7-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:40fa14dbd66b8b8f470d5fc79c089a66185619d31645f9b0773b88b19f7223c4", size = 79951, upload-time = "2024-09-04T09:06:29.966Z" }, + { url = "https://files.pythonhosted.org/packages/ea/8b/d7497df4a1cae9367adf21665dd1f896c2a7aeb8769ad77b662c5e2bcce7/kiwisolver-1.4.7-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:eb542fe7933aa09d8d8f9d9097ef37532a7df6497819d16efe4359890a2f417a", size = 55715, upload-time = "2024-09-04T09:06:31.489Z" }, + { url = "https://files.pythonhosted.org/packages/d5/df/ce37d9b26f07ab90880923c94d12a6ff4d27447096b4c849bfc4339ccfdf/kiwisolver-1.4.7-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:8b01aac285f91ca889c800042c35ad3b239e704b150cfd3382adfc9dcc780e39", size = 58666, upload-time = "2024-09-04T09:06:43.756Z" }, + { url = "https://files.pythonhosted.org/packages/b0/d3/e4b04f43bc629ac8e186b77b2b1a251cdfa5b7610fa189dc0db622672ce6/kiwisolver-1.4.7-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:48be928f59a1f5c8207154f935334d374e79f2b5d212826307d072595ad76a2e", size = 57088, upload-time = "2024-09-04T09:06:45.406Z" }, + { url = "https://files.pythonhosted.org/packages/30/1c/752df58e2d339e670a535514d2db4fe8c842ce459776b8080fbe08ebb98e/kiwisolver-1.4.7-pp39-pypy39_pp73-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f37cfe618a117e50d8c240555331160d73d0411422b59b5ee217843d7b693608", size = 84321, upload-time = "2024-09-04T09:06:47.557Z" }, + { url = "https://files.pythonhosted.org/packages/f0/f8/fe6484e847bc6e238ec9f9828089fb2c0bb53f2f5f3a79351fde5b565e4f/kiwisolver-1.4.7-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:599b5c873c63a1f6ed7eead644a8a380cfbdf5db91dcb6f85707aaab213b1674", size = 80776, upload-time = "2024-09-04T09:06:49.235Z" }, + { url = "https://files.pythonhosted.org/packages/9b/57/d7163c0379f250ef763aba85330a19feefb5ce6cb541ade853aaba881524/kiwisolver-1.4.7-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:801fa7802e5cfabe3ab0c81a34c323a319b097dfb5004be950482d882f3d7225", size = 79984, upload-time = "2024-09-04T09:06:51.336Z" }, + { url = "https://files.pythonhosted.org/packages/8c/95/4a103776c265d13b3d2cd24fb0494d4e04ea435a8ef97e1b2c026d43250b/kiwisolver-1.4.7-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:0c6c43471bc764fad4bc99c5c2d6d16a676b1abf844ca7c8702bdae92df01ee0", size = 55811, upload-time = "2024-09-04T09:06:53.078Z" }, +] + +[[package]] +name = "kiwisolver" +version = "1.4.9" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version >= '3.12'", + "python_full_version == '3.11.*'", + "python_full_version == '3.10.*'", +] +sdist = { url = "https://files.pythonhosted.org/packages/5c/3c/85844f1b0feb11ee581ac23fe5fce65cd049a200c1446708cc1b7f922875/kiwisolver-1.4.9.tar.gz", hash = "sha256:c3b22c26c6fd6811b0ae8363b95ca8ce4ea3c202d3d0975b2914310ceb1bcc4d", size = 97564, upload-time = "2025-08-10T21:27:49.279Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c6/5d/8ce64e36d4e3aac5ca96996457dcf33e34e6051492399a3f1fec5657f30b/kiwisolver-1.4.9-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:b4b4d74bda2b8ebf4da5bd42af11d02d04428b2c32846e4c2c93219df8a7987b", size = 124159, upload-time = "2025-08-10T21:25:35.472Z" }, + { url = "https://files.pythonhosted.org/packages/96/1e/22f63ec454874378175a5f435d6ea1363dd33fb2af832c6643e4ccea0dc8/kiwisolver-1.4.9-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:fb3b8132019ea572f4611d770991000d7f58127560c4889729248eb5852a102f", size = 66578, upload-time = "2025-08-10T21:25:36.73Z" }, + { url = "https://files.pythonhosted.org/packages/41/4c/1925dcfff47a02d465121967b95151c82d11027d5ec5242771e580e731bd/kiwisolver-1.4.9-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:84fd60810829c27ae375114cd379da1fa65e6918e1da405f356a775d49a62bcf", size = 65312, upload-time = "2025-08-10T21:25:37.658Z" }, + { url = "https://files.pythonhosted.org/packages/d4/42/0f333164e6307a0687d1eb9ad256215aae2f4bd5d28f4653d6cd319a3ba3/kiwisolver-1.4.9-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:b78efa4c6e804ecdf727e580dbb9cba85624d2e1c6b5cb059c66290063bd99a9", size = 1628458, upload-time = "2025-08-10T21:25:39.067Z" }, + { url = "https://files.pythonhosted.org/packages/86/b6/2dccb977d651943995a90bfe3495c2ab2ba5cd77093d9f2318a20c9a6f59/kiwisolver-1.4.9-cp310-cp310-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d4efec7bcf21671db6a3294ff301d2fc861c31faa3c8740d1a94689234d1b415", size = 1225640, upload-time = "2025-08-10T21:25:40.489Z" }, + { url = "https://files.pythonhosted.org/packages/50/2b/362ebd3eec46c850ccf2bfe3e30f2fc4c008750011f38a850f088c56a1c6/kiwisolver-1.4.9-cp310-cp310-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:90f47e70293fc3688b71271100a1a5453aa9944a81d27ff779c108372cf5567b", size = 1244074, upload-time = "2025-08-10T21:25:42.221Z" }, + { url = "https://files.pythonhosted.org/packages/6f/bb/f09a1e66dab8984773d13184a10a29fe67125337649d26bdef547024ed6b/kiwisolver-1.4.9-cp310-cp310-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:8fdca1def57a2e88ef339de1737a1449d6dbf5fab184c54a1fca01d541317154", size = 1293036, upload-time = "2025-08-10T21:25:43.801Z" }, + { url = "https://files.pythonhosted.org/packages/ea/01/11ecf892f201cafda0f68fa59212edaea93e96c37884b747c181303fccd1/kiwisolver-1.4.9-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:9cf554f21be770f5111a1690d42313e140355e687e05cf82cb23d0a721a64a48", size = 2175310, upload-time = "2025-08-10T21:25:45.045Z" }, + { url = "https://files.pythonhosted.org/packages/7f/5f/bfe11d5b934f500cc004314819ea92427e6e5462706a498c1d4fc052e08f/kiwisolver-1.4.9-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:fc1795ac5cd0510207482c3d1d3ed781143383b8cfd36f5c645f3897ce066220", size = 2270943, upload-time = "2025-08-10T21:25:46.393Z" }, + { url = "https://files.pythonhosted.org/packages/3d/de/259f786bf71f1e03e73d87e2db1a9a3bcab64d7b4fd780167123161630ad/kiwisolver-1.4.9-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:ccd09f20ccdbbd341b21a67ab50a119b64a403b09288c27481575105283c1586", size = 2440488, upload-time = "2025-08-10T21:25:48.074Z" }, + { url = "https://files.pythonhosted.org/packages/1b/76/c989c278faf037c4d3421ec07a5c452cd3e09545d6dae7f87c15f54e4edf/kiwisolver-1.4.9-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:540c7c72324d864406a009d72f5d6856f49693db95d1fbb46cf86febef873634", size = 2246787, upload-time = "2025-08-10T21:25:49.442Z" }, + { url = "https://files.pythonhosted.org/packages/a2/55/c2898d84ca440852e560ca9f2a0d28e6e931ac0849b896d77231929900e7/kiwisolver-1.4.9-cp310-cp310-win_amd64.whl", hash = "sha256:ede8c6d533bc6601a47ad4046080d36b8fc99f81e6f1c17b0ac3c2dc91ac7611", size = 73730, upload-time = "2025-08-10T21:25:51.102Z" }, + { url = "https://files.pythonhosted.org/packages/e8/09/486d6ac523dd33b80b368247f238125d027964cfacb45c654841e88fb2ae/kiwisolver-1.4.9-cp310-cp310-win_arm64.whl", hash = "sha256:7b4da0d01ac866a57dd61ac258c5607b4cd677f63abaec7b148354d2b2cdd536", size = 65036, upload-time = "2025-08-10T21:25:52.063Z" }, + { url = "https://files.pythonhosted.org/packages/6f/ab/c80b0d5a9d8a1a65f4f815f2afff9798b12c3b9f31f1d304dd233dd920e2/kiwisolver-1.4.9-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:eb14a5da6dc7642b0f3a18f13654847cd8b7a2550e2645a5bda677862b03ba16", size = 124167, upload-time = "2025-08-10T21:25:53.403Z" }, + { url = "https://files.pythonhosted.org/packages/a0/c0/27fe1a68a39cf62472a300e2879ffc13c0538546c359b86f149cc19f6ac3/kiwisolver-1.4.9-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:39a219e1c81ae3b103643d2aedb90f1ef22650deb266ff12a19e7773f3e5f089", size = 66579, upload-time = "2025-08-10T21:25:54.79Z" }, + { url = "https://files.pythonhosted.org/packages/31/a2/a12a503ac1fd4943c50f9822678e8015a790a13b5490354c68afb8489814/kiwisolver-1.4.9-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:2405a7d98604b87f3fc28b1716783534b1b4b8510d8142adca34ee0bc3c87543", size = 65309, upload-time = "2025-08-10T21:25:55.76Z" }, + { url = "https://files.pythonhosted.org/packages/66/e1/e533435c0be77c3f64040d68d7a657771194a63c279f55573188161e81ca/kiwisolver-1.4.9-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:dc1ae486f9abcef254b5618dfb4113dd49f94c68e3e027d03cf0143f3f772b61", size = 1435596, upload-time = "2025-08-10T21:25:56.861Z" }, + { url = "https://files.pythonhosted.org/packages/67/1e/51b73c7347f9aabdc7215aa79e8b15299097dc2f8e67dee2b095faca9cb0/kiwisolver-1.4.9-cp311-cp311-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8a1f570ce4d62d718dce3f179ee78dac3b545ac16c0c04bb363b7607a949c0d1", size = 1246548, upload-time = "2025-08-10T21:25:58.246Z" }, + { url = "https://files.pythonhosted.org/packages/21/aa/72a1c5d1e430294f2d32adb9542719cfb441b5da368d09d268c7757af46c/kiwisolver-1.4.9-cp311-cp311-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:cb27e7b78d716c591e88e0a09a2139c6577865d7f2e152488c2cc6257f460872", size = 1263618, upload-time = "2025-08-10T21:25:59.857Z" }, + { url = "https://files.pythonhosted.org/packages/a3/af/db1509a9e79dbf4c260ce0cfa3903ea8945f6240e9e59d1e4deb731b1a40/kiwisolver-1.4.9-cp311-cp311-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:15163165efc2f627eb9687ea5f3a28137217d217ac4024893d753f46bce9de26", size = 1317437, upload-time = "2025-08-10T21:26:01.105Z" }, + { url = "https://files.pythonhosted.org/packages/e0/f2/3ea5ee5d52abacdd12013a94130436e19969fa183faa1e7c7fbc89e9a42f/kiwisolver-1.4.9-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:bdee92c56a71d2b24c33a7d4c2856bd6419d017e08caa7802d2963870e315028", size = 2195742, upload-time = "2025-08-10T21:26:02.675Z" }, + { url = "https://files.pythonhosted.org/packages/6f/9b/1efdd3013c2d9a2566aa6a337e9923a00590c516add9a1e89a768a3eb2fc/kiwisolver-1.4.9-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:412f287c55a6f54b0650bd9b6dce5aceddb95864a1a90c87af16979d37c89771", size = 2290810, upload-time = "2025-08-10T21:26:04.009Z" }, + { url = "https://files.pythonhosted.org/packages/fb/e5/cfdc36109ae4e67361f9bc5b41323648cb24a01b9ade18784657e022e65f/kiwisolver-1.4.9-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:2c93f00dcba2eea70af2be5f11a830a742fe6b579a1d4e00f47760ef13be247a", size = 2461579, upload-time = "2025-08-10T21:26:05.317Z" }, + { url = "https://files.pythonhosted.org/packages/62/86/b589e5e86c7610842213994cdea5add00960076bef4ae290c5fa68589cac/kiwisolver-1.4.9-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:f117e1a089d9411663a3207ba874f31be9ac8eaa5b533787024dc07aeb74f464", size = 2268071, upload-time = "2025-08-10T21:26:06.686Z" }, + { url = "https://files.pythonhosted.org/packages/3b/c6/f8df8509fd1eee6c622febe54384a96cfaf4d43bf2ccec7a0cc17e4715c9/kiwisolver-1.4.9-cp311-cp311-win_amd64.whl", hash = "sha256:be6a04e6c79819c9a8c2373317d19a96048e5a3f90bec587787e86a1153883c2", size = 73840, upload-time = "2025-08-10T21:26:07.94Z" }, + { url = "https://files.pythonhosted.org/packages/e2/2d/16e0581daafd147bc11ac53f032a2b45eabac897f42a338d0a13c1e5c436/kiwisolver-1.4.9-cp311-cp311-win_arm64.whl", hash = "sha256:0ae37737256ba2de764ddc12aed4956460277f00c4996d51a197e72f62f5eec7", size = 65159, upload-time = "2025-08-10T21:26:09.048Z" }, + { url = "https://files.pythonhosted.org/packages/86/c9/13573a747838aeb1c76e3267620daa054f4152444d1f3d1a2324b78255b5/kiwisolver-1.4.9-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:ac5a486ac389dddcc5bef4f365b6ae3ffff2c433324fb38dd35e3fab7c957999", size = 123686, upload-time = "2025-08-10T21:26:10.034Z" }, + { url = "https://files.pythonhosted.org/packages/51/ea/2ecf727927f103ffd1739271ca19c424d0e65ea473fbaeea1c014aea93f6/kiwisolver-1.4.9-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:f2ba92255faa7309d06fe44c3a4a97efe1c8d640c2a79a5ef728b685762a6fd2", size = 66460, upload-time = "2025-08-10T21:26:11.083Z" }, + { url = "https://files.pythonhosted.org/packages/5b/5a/51f5464373ce2aeb5194508298a508b6f21d3867f499556263c64c621914/kiwisolver-1.4.9-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:4a2899935e724dd1074cb568ce7ac0dce28b2cd6ab539c8e001a8578eb106d14", size = 64952, upload-time = "2025-08-10T21:26:12.058Z" }, + { url = "https://files.pythonhosted.org/packages/70/90/6d240beb0f24b74371762873e9b7f499f1e02166a2d9c5801f4dbf8fa12e/kiwisolver-1.4.9-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:f6008a4919fdbc0b0097089f67a1eb55d950ed7e90ce2cc3e640abadd2757a04", size = 1474756, upload-time = "2025-08-10T21:26:13.096Z" }, + { url = "https://files.pythonhosted.org/packages/12/42/f36816eaf465220f683fb711efdd1bbf7a7005a2473d0e4ed421389bd26c/kiwisolver-1.4.9-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:67bb8b474b4181770f926f7b7d2f8c0248cbcb78b660fdd41a47054b28d2a752", size = 1276404, upload-time = "2025-08-10T21:26:14.457Z" }, + { url = "https://files.pythonhosted.org/packages/2e/64/bc2de94800adc830c476dce44e9b40fd0809cddeef1fde9fcf0f73da301f/kiwisolver-1.4.9-cp312-cp312-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:2327a4a30d3ee07d2fbe2e7933e8a37c591663b96ce42a00bc67461a87d7df77", size = 1294410, upload-time = "2025-08-10T21:26:15.73Z" }, + { url = "https://files.pythonhosted.org/packages/5f/42/2dc82330a70aa8e55b6d395b11018045e58d0bb00834502bf11509f79091/kiwisolver-1.4.9-cp312-cp312-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:7a08b491ec91b1d5053ac177afe5290adacf1f0f6307d771ccac5de30592d198", size = 1343631, upload-time = "2025-08-10T21:26:17.045Z" }, + { url = "https://files.pythonhosted.org/packages/22/fd/f4c67a6ed1aab149ec5a8a401c323cee7a1cbe364381bb6c9c0d564e0e20/kiwisolver-1.4.9-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:d8fc5c867c22b828001b6a38d2eaeb88160bf5783c6cb4a5e440efc981ce286d", size = 2224963, upload-time = "2025-08-10T21:26:18.737Z" }, + { url = "https://files.pythonhosted.org/packages/45/aa/76720bd4cb3713314677d9ec94dcc21ced3f1baf4830adde5bb9b2430a5f/kiwisolver-1.4.9-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:3b3115b2581ea35bb6d1f24a4c90af37e5d9b49dcff267eeed14c3893c5b86ab", size = 2321295, upload-time = "2025-08-10T21:26:20.11Z" }, + { url = "https://files.pythonhosted.org/packages/80/19/d3ec0d9ab711242f56ae0dc2fc5d70e298bb4a1f9dfab44c027668c673a1/kiwisolver-1.4.9-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:858e4c22fb075920b96a291928cb7dea5644e94c0ee4fcd5af7e865655e4ccf2", size = 2487987, upload-time = "2025-08-10T21:26:21.49Z" }, + { url = "https://files.pythonhosted.org/packages/39/e9/61e4813b2c97e86b6fdbd4dd824bf72d28bcd8d4849b8084a357bc0dd64d/kiwisolver-1.4.9-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ed0fecd28cc62c54b262e3736f8bb2512d8dcfdc2bcf08be5f47f96bf405b145", size = 2291817, upload-time = "2025-08-10T21:26:22.812Z" }, + { url = "https://files.pythonhosted.org/packages/a0/41/85d82b0291db7504da3c2defe35c9a8a5c9803a730f297bd823d11d5fb77/kiwisolver-1.4.9-cp312-cp312-win_amd64.whl", hash = "sha256:f68208a520c3d86ea51acf688a3e3002615a7f0238002cccc17affecc86a8a54", size = 73895, upload-time = "2025-08-10T21:26:24.37Z" }, + { url = "https://files.pythonhosted.org/packages/e2/92/5f3068cf15ee5cb624a0c7596e67e2a0bb2adee33f71c379054a491d07da/kiwisolver-1.4.9-cp312-cp312-win_arm64.whl", hash = "sha256:2c1a4f57df73965f3f14df20b80ee29e6a7930a57d2d9e8491a25f676e197c60", size = 64992, upload-time = "2025-08-10T21:26:25.732Z" }, + { url = "https://files.pythonhosted.org/packages/31/c1/c2686cda909742ab66c7388e9a1a8521a59eb89f8bcfbee28fc980d07e24/kiwisolver-1.4.9-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:a5d0432ccf1c7ab14f9949eec60c5d1f924f17c037e9f8b33352fa05799359b8", size = 123681, upload-time = "2025-08-10T21:26:26.725Z" }, + { url = "https://files.pythonhosted.org/packages/ca/f0/f44f50c9f5b1a1860261092e3bc91ecdc9acda848a8b8c6abfda4a24dd5c/kiwisolver-1.4.9-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:efb3a45b35622bb6c16dbfab491a8f5a391fe0e9d45ef32f4df85658232ca0e2", size = 66464, upload-time = "2025-08-10T21:26:27.733Z" }, + { url = "https://files.pythonhosted.org/packages/2d/7a/9d90a151f558e29c3936b8a47ac770235f436f2120aca41a6d5f3d62ae8d/kiwisolver-1.4.9-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:1a12cf6398e8a0a001a059747a1cbf24705e18fe413bc22de7b3d15c67cffe3f", size = 64961, upload-time = "2025-08-10T21:26:28.729Z" }, + { url = "https://files.pythonhosted.org/packages/e9/e9/f218a2cb3a9ffbe324ca29a9e399fa2d2866d7f348ec3a88df87fc248fc5/kiwisolver-1.4.9-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:b67e6efbf68e077dd71d1a6b37e43e1a99d0bff1a3d51867d45ee8908b931098", size = 1474607, upload-time = "2025-08-10T21:26:29.798Z" }, + { url = "https://files.pythonhosted.org/packages/d9/28/aac26d4c882f14de59041636292bc838db8961373825df23b8eeb807e198/kiwisolver-1.4.9-cp313-cp313-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5656aa670507437af0207645273ccdfee4f14bacd7f7c67a4306d0dcaeaf6eed", size = 1276546, upload-time = "2025-08-10T21:26:31.401Z" }, + { url = "https://files.pythonhosted.org/packages/8b/ad/8bfc1c93d4cc565e5069162f610ba2f48ff39b7de4b5b8d93f69f30c4bed/kiwisolver-1.4.9-cp313-cp313-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:bfc08add558155345129c7803b3671cf195e6a56e7a12f3dde7c57d9b417f525", size = 1294482, upload-time = "2025-08-10T21:26:32.721Z" }, + { url = "https://files.pythonhosted.org/packages/da/f1/6aca55ff798901d8ce403206d00e033191f63d82dd708a186e0ed2067e9c/kiwisolver-1.4.9-cp313-cp313-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:40092754720b174e6ccf9e845d0d8c7d8e12c3d71e7fc35f55f3813e96376f78", size = 1343720, upload-time = "2025-08-10T21:26:34.032Z" }, + { url = "https://files.pythonhosted.org/packages/d1/91/eed031876c595c81d90d0f6fc681ece250e14bf6998c3d7c419466b523b7/kiwisolver-1.4.9-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:497d05f29a1300d14e02e6441cf0f5ee81c1ff5a304b0d9fb77423974684e08b", size = 2224907, upload-time = "2025-08-10T21:26:35.824Z" }, + { url = "https://files.pythonhosted.org/packages/e9/ec/4d1925f2e49617b9cca9c34bfa11adefad49d00db038e692a559454dfb2e/kiwisolver-1.4.9-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:bdd1a81a1860476eb41ac4bc1e07b3f07259e6d55bbf739b79c8aaedcf512799", size = 2321334, upload-time = "2025-08-10T21:26:37.534Z" }, + { url = "https://files.pythonhosted.org/packages/43/cb/450cd4499356f68802750c6ddc18647b8ea01ffa28f50d20598e0befe6e9/kiwisolver-1.4.9-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:e6b93f13371d341afee3be9f7c5964e3fe61d5fa30f6a30eb49856935dfe4fc3", size = 2488313, upload-time = "2025-08-10T21:26:39.191Z" }, + { url = "https://files.pythonhosted.org/packages/71/67/fc76242bd99f885651128a5d4fa6083e5524694b7c88b489b1b55fdc491d/kiwisolver-1.4.9-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:d75aa530ccfaa593da12834b86a0724f58bff12706659baa9227c2ccaa06264c", size = 2291970, upload-time = "2025-08-10T21:26:40.828Z" }, + { url = "https://files.pythonhosted.org/packages/75/bd/f1a5d894000941739f2ae1b65a32892349423ad49c2e6d0771d0bad3fae4/kiwisolver-1.4.9-cp313-cp313-win_amd64.whl", hash = "sha256:dd0a578400839256df88c16abddf9ba14813ec5f21362e1fe65022e00c883d4d", size = 73894, upload-time = "2025-08-10T21:26:42.33Z" }, + { url = "https://files.pythonhosted.org/packages/95/38/dce480814d25b99a391abbddadc78f7c117c6da34be68ca8b02d5848b424/kiwisolver-1.4.9-cp313-cp313-win_arm64.whl", hash = "sha256:d4188e73af84ca82468f09cadc5ac4db578109e52acb4518d8154698d3a87ca2", size = 64995, upload-time = "2025-08-10T21:26:43.889Z" }, + { url = "https://files.pythonhosted.org/packages/e2/37/7d218ce5d92dadc5ebdd9070d903e0c7cf7edfe03f179433ac4d13ce659c/kiwisolver-1.4.9-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:5a0f2724dfd4e3b3ac5a82436a8e6fd16baa7d507117e4279b660fe8ca38a3a1", size = 126510, upload-time = "2025-08-10T21:26:44.915Z" }, + { url = "https://files.pythonhosted.org/packages/23/b0/e85a2b48233daef4b648fb657ebbb6f8367696a2d9548a00b4ee0eb67803/kiwisolver-1.4.9-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:1b11d6a633e4ed84fc0ddafd4ebfd8ea49b3f25082c04ad12b8315c11d504dc1", size = 67903, upload-time = "2025-08-10T21:26:45.934Z" }, + { url = "https://files.pythonhosted.org/packages/44/98/f2425bc0113ad7de24da6bb4dae1343476e95e1d738be7c04d31a5d037fd/kiwisolver-1.4.9-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:61874cdb0a36016354853593cffc38e56fc9ca5aa97d2c05d3dcf6922cd55a11", size = 66402, upload-time = "2025-08-10T21:26:47.101Z" }, + { url = "https://files.pythonhosted.org/packages/98/d8/594657886df9f34c4177cc353cc28ca7e6e5eb562d37ccc233bff43bbe2a/kiwisolver-1.4.9-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:60c439763a969a6af93b4881db0eed8fadf93ee98e18cbc35bc8da868d0c4f0c", size = 1582135, upload-time = "2025-08-10T21:26:48.665Z" }, + { url = "https://files.pythonhosted.org/packages/5c/c6/38a115b7170f8b306fc929e166340c24958347308ea3012c2b44e7e295db/kiwisolver-1.4.9-cp313-cp313t-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:92a2f997387a1b79a75e7803aa7ded2cfbe2823852ccf1ba3bcf613b62ae3197", size = 1389409, upload-time = "2025-08-10T21:26:50.335Z" }, + { url = "https://files.pythonhosted.org/packages/bf/3b/e04883dace81f24a568bcee6eb3001da4ba05114afa622ec9b6fafdc1f5e/kiwisolver-1.4.9-cp313-cp313t-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:a31d512c812daea6d8b3be3b2bfcbeb091dbb09177706569bcfc6240dcf8b41c", size = 1401763, upload-time = "2025-08-10T21:26:51.867Z" }, + { url = "https://files.pythonhosted.org/packages/9f/80/20ace48e33408947af49d7d15c341eaee69e4e0304aab4b7660e234d6288/kiwisolver-1.4.9-cp313-cp313t-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:52a15b0f35dad39862d376df10c5230155243a2c1a436e39eb55623ccbd68185", size = 1453643, upload-time = "2025-08-10T21:26:53.592Z" }, + { url = "https://files.pythonhosted.org/packages/64/31/6ce4380a4cd1f515bdda976a1e90e547ccd47b67a1546d63884463c92ca9/kiwisolver-1.4.9-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:a30fd6fdef1430fd9e1ba7b3398b5ee4e2887783917a687d86ba69985fb08748", size = 2330818, upload-time = "2025-08-10T21:26:55.051Z" }, + { url = "https://files.pythonhosted.org/packages/fa/e9/3f3fcba3bcc7432c795b82646306e822f3fd74df0ee81f0fa067a1f95668/kiwisolver-1.4.9-cp313-cp313t-musllinux_1_2_ppc64le.whl", hash = "sha256:cc9617b46837c6468197b5945e196ee9ca43057bb7d9d1ae688101e4e1dddf64", size = 2419963, upload-time = "2025-08-10T21:26:56.421Z" }, + { url = "https://files.pythonhosted.org/packages/99/43/7320c50e4133575c66e9f7dadead35ab22d7c012a3b09bb35647792b2a6d/kiwisolver-1.4.9-cp313-cp313t-musllinux_1_2_s390x.whl", hash = "sha256:0ab74e19f6a2b027ea4f845a78827969af45ce790e6cb3e1ebab71bdf9f215ff", size = 2594639, upload-time = "2025-08-10T21:26:57.882Z" }, + { url = "https://files.pythonhosted.org/packages/65/d6/17ae4a270d4a987ef8a385b906d2bdfc9fce502d6dc0d3aea865b47f548c/kiwisolver-1.4.9-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:dba5ee5d3981160c28d5490f0d1b7ed730c22470ff7f6cc26cfcfaacb9896a07", size = 2391741, upload-time = "2025-08-10T21:26:59.237Z" }, + { url = "https://files.pythonhosted.org/packages/2a/8f/8f6f491d595a9e5912971f3f863d81baddccc8a4d0c3749d6a0dd9ffc9df/kiwisolver-1.4.9-cp313-cp313t-win_arm64.whl", hash = "sha256:0749fd8f4218ad2e851e11cc4dc05c7cbc0cbc4267bdfdb31782e65aace4ee9c", size = 68646, upload-time = "2025-08-10T21:27:00.52Z" }, + { url = "https://files.pythonhosted.org/packages/6b/32/6cc0fbc9c54d06c2969faa9c1d29f5751a2e51809dd55c69055e62d9b426/kiwisolver-1.4.9-cp314-cp314-macosx_10_13_universal2.whl", hash = "sha256:9928fe1eb816d11ae170885a74d074f57af3a0d65777ca47e9aeb854a1fba386", size = 123806, upload-time = "2025-08-10T21:27:01.537Z" }, + { url = "https://files.pythonhosted.org/packages/b2/dd/2bfb1d4a4823d92e8cbb420fe024b8d2167f72079b3bb941207c42570bdf/kiwisolver-1.4.9-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:d0005b053977e7b43388ddec89fa567f43d4f6d5c2c0affe57de5ebf290dc552", size = 66605, upload-time = "2025-08-10T21:27:03.335Z" }, + { url = "https://files.pythonhosted.org/packages/f7/69/00aafdb4e4509c2ca6064646cba9cd4b37933898f426756adb2cb92ebbed/kiwisolver-1.4.9-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:2635d352d67458b66fd0667c14cb1d4145e9560d503219034a18a87e971ce4f3", size = 64925, upload-time = "2025-08-10T21:27:04.339Z" }, + { url = "https://files.pythonhosted.org/packages/43/dc/51acc6791aa14e5cb6d8a2e28cefb0dc2886d8862795449d021334c0df20/kiwisolver-1.4.9-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:767c23ad1c58c9e827b649a9ab7809fd5fd9db266a9cf02b0e926ddc2c680d58", size = 1472414, upload-time = "2025-08-10T21:27:05.437Z" }, + { url = "https://files.pythonhosted.org/packages/3d/bb/93fa64a81db304ac8a246f834d5094fae4b13baf53c839d6bb6e81177129/kiwisolver-1.4.9-cp314-cp314-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:72d0eb9fba308b8311685c2268cf7d0a0639a6cd027d8128659f72bdd8a024b4", size = 1281272, upload-time = "2025-08-10T21:27:07.063Z" }, + { url = "https://files.pythonhosted.org/packages/70/e6/6df102916960fb8d05069d4bd92d6d9a8202d5a3e2444494e7cd50f65b7a/kiwisolver-1.4.9-cp314-cp314-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:f68e4f3eeca8fb22cc3d731f9715a13b652795ef657a13df1ad0c7dc0e9731df", size = 1298578, upload-time = "2025-08-10T21:27:08.452Z" }, + { url = "https://files.pythonhosted.org/packages/7c/47/e142aaa612f5343736b087864dbaebc53ea8831453fb47e7521fa8658f30/kiwisolver-1.4.9-cp314-cp314-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:d84cd4061ae292d8ac367b2c3fa3aad11cb8625a95d135fe93f286f914f3f5a6", size = 1345607, upload-time = "2025-08-10T21:27:10.125Z" }, + { url = "https://files.pythonhosted.org/packages/54/89/d641a746194a0f4d1a3670fb900d0dbaa786fb98341056814bc3f058fa52/kiwisolver-1.4.9-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:a60ea74330b91bd22a29638940d115df9dc00af5035a9a2a6ad9399ffb4ceca5", size = 2230150, upload-time = "2025-08-10T21:27:11.484Z" }, + { url = "https://files.pythonhosted.org/packages/aa/6b/5ee1207198febdf16ac11f78c5ae40861b809cbe0e6d2a8d5b0b3044b199/kiwisolver-1.4.9-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:ce6a3a4e106cf35c2d9c4fa17c05ce0b180db622736845d4315519397a77beaf", size = 2325979, upload-time = "2025-08-10T21:27:12.917Z" }, + { url = "https://files.pythonhosted.org/packages/fc/ff/b269eefd90f4ae14dcc74973d5a0f6d28d3b9bb1afd8c0340513afe6b39a/kiwisolver-1.4.9-cp314-cp314-musllinux_1_2_s390x.whl", hash = "sha256:77937e5e2a38a7b48eef0585114fe7930346993a88060d0bf886086d2aa49ef5", size = 2491456, upload-time = "2025-08-10T21:27:14.353Z" }, + { url = "https://files.pythonhosted.org/packages/fc/d4/10303190bd4d30de547534601e259a4fbf014eed94aae3e5521129215086/kiwisolver-1.4.9-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:24c175051354f4a28c5d6a31c93906dc653e2bf234e8a4bbfb964892078898ce", size = 2294621, upload-time = "2025-08-10T21:27:15.808Z" }, + { url = "https://files.pythonhosted.org/packages/28/e0/a9a90416fce5c0be25742729c2ea52105d62eda6c4be4d803c2a7be1fa50/kiwisolver-1.4.9-cp314-cp314-win_amd64.whl", hash = "sha256:0763515d4df10edf6d06a3c19734e2566368980d21ebec439f33f9eb936c07b7", size = 75417, upload-time = "2025-08-10T21:27:17.436Z" }, + { url = "https://files.pythonhosted.org/packages/1f/10/6949958215b7a9a264299a7db195564e87900f709db9245e4ebdd3c70779/kiwisolver-1.4.9-cp314-cp314-win_arm64.whl", hash = "sha256:0e4e2bf29574a6a7b7f6cb5fa69293b9f96c928949ac4a53ba3f525dffb87f9c", size = 66582, upload-time = "2025-08-10T21:27:18.436Z" }, + { url = "https://files.pythonhosted.org/packages/ec/79/60e53067903d3bc5469b369fe0dfc6b3482e2133e85dae9daa9527535991/kiwisolver-1.4.9-cp314-cp314t-macosx_10_13_universal2.whl", hash = "sha256:d976bbb382b202f71c67f77b0ac11244021cfa3f7dfd9e562eefcea2df711548", size = 126514, upload-time = "2025-08-10T21:27:19.465Z" }, + { url = "https://files.pythonhosted.org/packages/25/d1/4843d3e8d46b072c12a38c97c57fab4608d36e13fe47d47ee96b4d61ba6f/kiwisolver-1.4.9-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:2489e4e5d7ef9a1c300a5e0196e43d9c739f066ef23270607d45aba368b91f2d", size = 67905, upload-time = "2025-08-10T21:27:20.51Z" }, + { url = "https://files.pythonhosted.org/packages/8c/ae/29ffcbd239aea8b93108de1278271ae764dfc0d803a5693914975f200596/kiwisolver-1.4.9-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:e2ea9f7ab7fbf18fffb1b5434ce7c69a07582f7acc7717720f1d69f3e806f90c", size = 66399, upload-time = "2025-08-10T21:27:21.496Z" }, + { url = "https://files.pythonhosted.org/packages/a1/ae/d7ba902aa604152c2ceba5d352d7b62106bedbccc8e95c3934d94472bfa3/kiwisolver-1.4.9-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:b34e51affded8faee0dfdb705416153819d8ea9250bbbf7ea1b249bdeb5f1122", size = 1582197, upload-time = "2025-08-10T21:27:22.604Z" }, + { url = "https://files.pythonhosted.org/packages/f2/41/27c70d427eddb8bc7e4f16420a20fefc6f480312122a59a959fdfe0445ad/kiwisolver-1.4.9-cp314-cp314t-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d8aacd3d4b33b772542b2e01beb50187536967b514b00003bdda7589722d2a64", size = 1390125, upload-time = "2025-08-10T21:27:24.036Z" }, + { url = "https://files.pythonhosted.org/packages/41/42/b3799a12bafc76d962ad69083f8b43b12bf4fe78b097b12e105d75c9b8f1/kiwisolver-1.4.9-cp314-cp314t-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:7cf974dd4e35fa315563ac99d6287a1024e4dc2077b8a7d7cd3d2fb65d283134", size = 1402612, upload-time = "2025-08-10T21:27:25.773Z" }, + { url = "https://files.pythonhosted.org/packages/d2/b5/a210ea073ea1cfaca1bb5c55a62307d8252f531beb364e18aa1e0888b5a0/kiwisolver-1.4.9-cp314-cp314t-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:85bd218b5ecfbee8c8a82e121802dcb519a86044c9c3b2e4aef02fa05c6da370", size = 1453990, upload-time = "2025-08-10T21:27:27.089Z" }, + { url = "https://files.pythonhosted.org/packages/5f/ce/a829eb8c033e977d7ea03ed32fb3c1781b4fa0433fbadfff29e39c676f32/kiwisolver-1.4.9-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:0856e241c2d3df4efef7c04a1e46b1936b6120c9bcf36dd216e3acd84bc4fb21", size = 2331601, upload-time = "2025-08-10T21:27:29.343Z" }, + { url = "https://files.pythonhosted.org/packages/e0/4b/b5e97eb142eb9cd0072dacfcdcd31b1c66dc7352b0f7c7255d339c0edf00/kiwisolver-1.4.9-cp314-cp314t-musllinux_1_2_ppc64le.whl", hash = "sha256:9af39d6551f97d31a4deebeac6f45b156f9755ddc59c07b402c148f5dbb6482a", size = 2422041, upload-time = "2025-08-10T21:27:30.754Z" }, + { url = "https://files.pythonhosted.org/packages/40/be/8eb4cd53e1b85ba4edc3a9321666f12b83113a178845593307a3e7891f44/kiwisolver-1.4.9-cp314-cp314t-musllinux_1_2_s390x.whl", hash = "sha256:bb4ae2b57fc1d8cbd1cf7b1d9913803681ffa903e7488012be5b76dedf49297f", size = 2594897, upload-time = "2025-08-10T21:27:32.803Z" }, + { url = "https://files.pythonhosted.org/packages/99/dd/841e9a66c4715477ea0abc78da039832fbb09dac5c35c58dc4c41a407b8a/kiwisolver-1.4.9-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:aedff62918805fb62d43a4aa2ecd4482c380dc76cd31bd7c8878588a61bd0369", size = 2391835, upload-time = "2025-08-10T21:27:34.23Z" }, + { url = "https://files.pythonhosted.org/packages/0c/28/4b2e5c47a0da96896fdfdb006340ade064afa1e63675d01ea5ac222b6d52/kiwisolver-1.4.9-cp314-cp314t-win_amd64.whl", hash = "sha256:1fa333e8b2ce4d9660f2cda9c0e1b6bafcfb2457a9d259faa82289e73ec24891", size = 79988, upload-time = "2025-08-10T21:27:35.587Z" }, + { url = "https://files.pythonhosted.org/packages/80/be/3578e8afd18c88cdf9cb4cffde75a96d2be38c5a903f1ed0ceec061bd09e/kiwisolver-1.4.9-cp314-cp314t-win_arm64.whl", hash = "sha256:4a48a2ce79d65d363597ef7b567ce3d14d68783d2b2263d98db3d9477805ba32", size = 70260, upload-time = "2025-08-10T21:27:36.606Z" }, + { url = "https://files.pythonhosted.org/packages/a2/63/fde392691690f55b38d5dd7b3710f5353bf7a8e52de93a22968801ab8978/kiwisolver-1.4.9-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:4d1d9e582ad4d63062d34077a9a1e9f3c34088a2ec5135b1f7190c07cf366527", size = 60183, upload-time = "2025-08-10T21:27:37.669Z" }, + { url = "https://files.pythonhosted.org/packages/27/b1/6aad34edfdb7cced27f371866f211332bba215bfd918ad3322a58f480d8b/kiwisolver-1.4.9-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:deed0c7258ceb4c44ad5ec7d9918f9f14fd05b2be86378d86cf50e63d1e7b771", size = 58675, upload-time = "2025-08-10T21:27:39.031Z" }, + { url = "https://files.pythonhosted.org/packages/9d/1a/23d855a702bb35a76faed5ae2ba3de57d323f48b1f6b17ee2176c4849463/kiwisolver-1.4.9-pp310-pypy310_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:0a590506f303f512dff6b7f75fd2fd18e16943efee932008fe7140e5fa91d80e", size = 80277, upload-time = "2025-08-10T21:27:40.129Z" }, + { url = "https://files.pythonhosted.org/packages/5a/5b/5239e3c2b8fb5afa1e8508f721bb77325f740ab6994d963e61b2b7abcc1e/kiwisolver-1.4.9-pp310-pypy310_pp73-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e09c2279a4d01f099f52d5c4b3d9e208e91edcbd1a175c9662a8b16e000fece9", size = 77994, upload-time = "2025-08-10T21:27:41.181Z" }, + { url = "https://files.pythonhosted.org/packages/f9/1c/5d4d468fb16f8410e596ed0eac02d2c68752aa7dc92997fe9d60a7147665/kiwisolver-1.4.9-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:c9e7cdf45d594ee04d5be1b24dd9d49f3d1590959b2271fb30b5ca2b262c00fb", size = 73744, upload-time = "2025-08-10T21:27:42.254Z" }, + { url = "https://files.pythonhosted.org/packages/a3/0f/36d89194b5a32c054ce93e586d4049b6c2c22887b0eb229c61c68afd3078/kiwisolver-1.4.9-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:720e05574713db64c356e86732c0f3c5252818d05f9df320f0ad8380641acea5", size = 60104, upload-time = "2025-08-10T21:27:43.287Z" }, + { url = "https://files.pythonhosted.org/packages/52/ba/4ed75f59e4658fd21fe7dde1fee0ac397c678ec3befba3fe6482d987af87/kiwisolver-1.4.9-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:17680d737d5335b552994a2008fab4c851bcd7de33094a82067ef3a576ff02fa", size = 58592, upload-time = "2025-08-10T21:27:44.314Z" }, + { url = "https://files.pythonhosted.org/packages/33/01/a8ea7c5ea32a9b45ceeaee051a04c8ed4320f5add3c51bfa20879b765b70/kiwisolver-1.4.9-pp311-pypy311_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:85b5352f94e490c028926ea567fc569c52ec79ce131dadb968d3853e809518c2", size = 80281, upload-time = "2025-08-10T21:27:45.369Z" }, + { url = "https://files.pythonhosted.org/packages/da/e3/dbd2ecdce306f1d07a1aaf324817ee993aab7aee9db47ceac757deabafbe/kiwisolver-1.4.9-pp311-pypy311_pp73-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:464415881e4801295659462c49461a24fb107c140de781d55518c4b80cb6790f", size = 78009, upload-time = "2025-08-10T21:27:46.376Z" }, + { url = "https://files.pythonhosted.org/packages/da/e9/0d4add7873a73e462aeb45c036a2dead2562b825aa46ba326727b3f31016/kiwisolver-1.4.9-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:fb940820c63a9590d31d88b815e7a3aa5915cad3ce735ab45f0c730b39547de1", size = 73929, upload-time = "2025-08-10T21:27:48.236Z" }, +] + +[[package]] +name = "lz4" +version = "4.4.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/c6/5a/945f5086326d569f14c84ac6f7fcc3229f0b9b1e8cc536b951fd53dfb9e1/lz4-4.4.4.tar.gz", hash = "sha256:070fd0627ec4393011251a094e08ed9fdcc78cb4e7ab28f507638eee4e39abda", size = 171884, upload-time = "2025-04-01T22:55:58.62Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b0/80/4054e99cda2e003097f59aeb3ad470128f3298db5065174a84564d2d6983/lz4-4.4.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:f170abb8416c4efca48e76cac2c86c3185efdf841aecbe5c190121c42828ced0", size = 220896, upload-time = "2025-04-01T22:55:13.577Z" }, + { url = "https://files.pythonhosted.org/packages/dd/4e/f92424d5734e772b05ddbeec739e2566e2a2336995b36a180e1dd9411e9a/lz4-4.4.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:d33a5105cd96ebd32c3e78d7ece6123a9d2fb7c18b84dec61f27837d9e0c496c", size = 189679, upload-time = "2025-04-01T22:55:15.471Z" }, + { url = "https://files.pythonhosted.org/packages/a2/70/71ffd496067cba6ba352e10b89c0e9cee3e4bc4717ba866b6aa350f4c7ac/lz4-4.4.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:30ebbc5b76b4f0018988825a7e9ce153be4f0d4eba34e6c1f2fcded120573e88", size = 1237940, upload-time = "2025-04-01T22:55:16.498Z" }, + { url = "https://files.pythonhosted.org/packages/6e/59/cf34d1e232b11e1ae7122300be00529f369a7cd80f74ac351d58c4c4eedf/lz4-4.4.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dc64d6dfa7a89397529b22638939e70d85eaedc1bd68e30a29c78bfb65d4f715", size = 1264105, upload-time = "2025-04-01T22:55:17.606Z" }, + { url = "https://files.pythonhosted.org/packages/f9/f6/3a00a98ff5b872d572cc6e9c88e0f6275bea0f3ed1dc1b8f8b736c85784c/lz4-4.4.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a355223a284f42a723c120ce68827de66d5cb872a38732b3d5abbf544fa2fe26", size = 1184179, upload-time = "2025-04-01T22:55:19.206Z" }, + { url = "https://files.pythonhosted.org/packages/bc/de/6aeb602786174bad290609c0c988afb1077b74a80eaea23ebc3b5de6e2fa/lz4-4.4.4-cp310-cp310-win32.whl", hash = "sha256:b28228197775b7b5096898851d59ef43ccaf151136f81d9c436bc9ba560bc2ba", size = 88265, upload-time = "2025-04-01T22:55:20.215Z" }, + { url = "https://files.pythonhosted.org/packages/e4/b5/1f52c8b17d02ae637f85911c0135ca08be1c9bbdfb3e7de1c4ae7af0bac6/lz4-4.4.4-cp310-cp310-win_amd64.whl", hash = "sha256:45e7c954546de4f85d895aa735989d77f87dd649f503ce1c8a71a151b092ed36", size = 99916, upload-time = "2025-04-01T22:55:21.332Z" }, + { url = "https://files.pythonhosted.org/packages/01/e7/123587e7dae6cdba48393e4fdad2b9412f43f51346afe9ca6f697029de11/lz4-4.4.4-cp310-cp310-win_arm64.whl", hash = "sha256:e3fc90f766401684740978cd781d73b9685bd81b5dbf7257542ef9de4612e4d2", size = 89746, upload-time = "2025-04-01T22:55:22.205Z" }, + { url = "https://files.pythonhosted.org/packages/28/e8/63843dc5ecb1529eb38e1761ceed04a0ad52a9ad8929ab8b7930ea2e4976/lz4-4.4.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:ddfc7194cd206496c445e9e5b0c47f970ce982c725c87bd22de028884125b68f", size = 220898, upload-time = "2025-04-01T22:55:23.085Z" }, + { url = "https://files.pythonhosted.org/packages/e4/94/c53de5f07c7dc11cf459aab2a1d754f5df5f693bfacbbe1e4914bfd02f1e/lz4-4.4.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:714f9298c86f8e7278f1c6af23e509044782fa8220eb0260f8f8f1632f820550", size = 189685, upload-time = "2025-04-01T22:55:24.413Z" }, + { url = "https://files.pythonhosted.org/packages/fe/59/c22d516dd0352f2a3415d1f665ccef2f3e74ecec3ca6a8f061a38f97d50d/lz4-4.4.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a8474c91de47733856c6686df3c4aca33753741da7e757979369c2c0d32918ba", size = 1239225, upload-time = "2025-04-01T22:55:25.737Z" }, + { url = "https://files.pythonhosted.org/packages/81/af/665685072e71f3f0e626221b7922867ec249cd8376aca761078c8f11f5da/lz4-4.4.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:80dd27d7d680ea02c261c226acf1d41de2fd77af4fb2da62b278a9376e380de0", size = 1265881, upload-time = "2025-04-01T22:55:26.817Z" }, + { url = "https://files.pythonhosted.org/packages/90/04/b4557ae381d3aa451388a29755cc410066f5e2f78c847f66f154f4520a68/lz4-4.4.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9b7d6dddfd01b49aedb940fdcaf32f41dc58c926ba35f4e31866aeec2f32f4f4", size = 1185593, upload-time = "2025-04-01T22:55:27.896Z" }, + { url = "https://files.pythonhosted.org/packages/7b/e4/03636979f4e8bf92c557f998ca98ee4e6ef92e92eaf0ed6d3c7f2524e790/lz4-4.4.4-cp311-cp311-win32.whl", hash = "sha256:4134b9fd70ac41954c080b772816bb1afe0c8354ee993015a83430031d686a4c", size = 88259, upload-time = "2025-04-01T22:55:29.03Z" }, + { url = "https://files.pythonhosted.org/packages/07/f0/9efe53b4945441a5d2790d455134843ad86739855b7e6199977bf6dc8898/lz4-4.4.4-cp311-cp311-win_amd64.whl", hash = "sha256:f5024d3ca2383470f7c4ef4d0ed8eabad0b22b23eeefde1c192cf1a38d5e9f78", size = 99916, upload-time = "2025-04-01T22:55:29.933Z" }, + { url = "https://files.pythonhosted.org/packages/87/c8/1675527549ee174b9e1db089f7ddfbb962a97314657269b1e0344a5eaf56/lz4-4.4.4-cp311-cp311-win_arm64.whl", hash = "sha256:6ea715bb3357ea1665f77874cf8f55385ff112553db06f3742d3cdcec08633f7", size = 89741, upload-time = "2025-04-01T22:55:31.184Z" }, + { url = "https://files.pythonhosted.org/packages/f7/2d/5523b4fabe11cd98f040f715728d1932eb7e696bfe94391872a823332b94/lz4-4.4.4-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:23ae267494fdd80f0d2a131beff890cf857f1b812ee72dbb96c3204aab725553", size = 220669, upload-time = "2025-04-01T22:55:32.032Z" }, + { url = "https://files.pythonhosted.org/packages/91/06/1a5bbcacbfb48d8ee5b6eb3fca6aa84143a81d92946bdb5cd6b005f1863e/lz4-4.4.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:fff9f3a1ed63d45cb6514bfb8293005dc4141341ce3500abdfeb76124c0b9b2e", size = 189661, upload-time = "2025-04-01T22:55:33.413Z" }, + { url = "https://files.pythonhosted.org/packages/fa/08/39eb7ac907f73e11a69a11576a75a9e36406b3241c0ba41453a7eb842abb/lz4-4.4.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1ea7f07329f85a8eda4d8cf937b87f27f0ac392c6400f18bea2c667c8b7f8ecc", size = 1238775, upload-time = "2025-04-01T22:55:34.835Z" }, + { url = "https://files.pythonhosted.org/packages/e9/26/05840fbd4233e8d23e88411a066ab19f1e9de332edddb8df2b6a95c7fddc/lz4-4.4.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8ccab8f7f7b82f9fa9fc3b0ba584d353bd5aa818d5821d77d5b9447faad2aaad", size = 1265143, upload-time = "2025-04-01T22:55:35.933Z" }, + { url = "https://files.pythonhosted.org/packages/b7/5d/5f2db18c298a419932f3ab2023deb689863cf8fd7ed875b1c43492479af2/lz4-4.4.4-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e43e9d48b2daf80e486213128b0763deed35bbb7a59b66d1681e205e1702d735", size = 1185032, upload-time = "2025-04-01T22:55:37.454Z" }, + { url = "https://files.pythonhosted.org/packages/c4/e6/736ab5f128694b0f6aac58343bcf37163437ac95997276cd0be3ea4c3342/lz4-4.4.4-cp312-cp312-win32.whl", hash = "sha256:33e01e18e4561b0381b2c33d58e77ceee850a5067f0ece945064cbaac2176962", size = 88284, upload-time = "2025-04-01T22:55:38.536Z" }, + { url = "https://files.pythonhosted.org/packages/40/b8/243430cb62319175070e06e3a94c4c7bd186a812e474e22148ae1290d47d/lz4-4.4.4-cp312-cp312-win_amd64.whl", hash = "sha256:d21d1a2892a2dcc193163dd13eaadabb2c1b803807a5117d8f8588b22eaf9f12", size = 99918, upload-time = "2025-04-01T22:55:39.628Z" }, + { url = "https://files.pythonhosted.org/packages/6c/e1/0686c91738f3e6c2e1a243e0fdd4371667c4d2e5009b0a3605806c2aa020/lz4-4.4.4-cp312-cp312-win_arm64.whl", hash = "sha256:2f4f2965c98ab254feddf6b5072854a6935adab7bc81412ec4fe238f07b85f62", size = 89736, upload-time = "2025-04-01T22:55:40.5Z" }, + { url = "https://files.pythonhosted.org/packages/3b/3c/d1d1b926d3688263893461e7c47ed7382a969a0976fc121fc678ec325fc6/lz4-4.4.4-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:ed6eb9f8deaf25ee4f6fad9625d0955183fdc90c52b6f79a76b7f209af1b6e54", size = 220678, upload-time = "2025-04-01T22:55:41.78Z" }, + { url = "https://files.pythonhosted.org/packages/26/89/8783d98deb058800dabe07e6cdc90f5a2a8502a9bad8c5343c641120ace2/lz4-4.4.4-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:18ae4fe3bafb344dbd09f976d45cbf49c05c34416f2462828f9572c1fa6d5af7", size = 189670, upload-time = "2025-04-01T22:55:42.775Z" }, + { url = "https://files.pythonhosted.org/packages/22/ab/a491ace69a83a8914a49f7391e92ca0698f11b28d5ce7b2ececa2be28e9a/lz4-4.4.4-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:57fd20c5fc1a49d1bbd170836fccf9a338847e73664f8e313dce6ac91b8c1e02", size = 1238746, upload-time = "2025-04-01T22:55:43.797Z" }, + { url = "https://files.pythonhosted.org/packages/97/12/a1f2f4fdc6b7159c0d12249456f9fe454665b6126e98dbee9f2bd3cf735c/lz4-4.4.4-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e9cb387c33f014dae4db8cb4ba789c8d2a0a6d045ddff6be13f6c8d9def1d2a6", size = 1265119, upload-time = "2025-04-01T22:55:44.943Z" }, + { url = "https://files.pythonhosted.org/packages/50/6e/e22e50f5207649db6ea83cd31b79049118305be67e96bec60becf317afc6/lz4-4.4.4-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d0be9f68240231e1e44118a4ebfecd8a5d4184f0bdf5c591c98dd6ade9720afd", size = 1184954, upload-time = "2025-04-01T22:55:46.161Z" }, + { url = "https://files.pythonhosted.org/packages/4c/c4/2a458039645fcc6324ece731d4d1361c5daf960b553d1fcb4261ba07d51c/lz4-4.4.4-cp313-cp313-win32.whl", hash = "sha256:e9ec5d45ea43684f87c316542af061ef5febc6a6b322928f059ce1fb289c298a", size = 88289, upload-time = "2025-04-01T22:55:47.601Z" }, + { url = "https://files.pythonhosted.org/packages/00/96/b8e24ea7537ab418074c226279acfcaa470e1ea8271003e24909b6db942b/lz4-4.4.4-cp313-cp313-win_amd64.whl", hash = "sha256:a760a175b46325b2bb33b1f2bbfb8aa21b48e1b9653e29c10b6834f9bb44ead4", size = 99925, upload-time = "2025-04-01T22:55:48.463Z" }, + { url = "https://files.pythonhosted.org/packages/a5/a5/f9838fe6aa132cfd22733ed2729d0592259fff074cefb80f19aa0607367b/lz4-4.4.4-cp313-cp313-win_arm64.whl", hash = "sha256:f4c21648d81e0dda38b4720dccc9006ae33b0e9e7ffe88af6bf7d4ec124e2fba", size = 89743, upload-time = "2025-04-01T22:55:49.716Z" }, + { url = "https://files.pythonhosted.org/packages/60/92/84d57db743cef59b2277cf40577de12ab48cbcd327772273a81a39d70580/lz4-4.4.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:bd1add57b6fe1f96bed2d529de085e9378a3ac04b86f116d10506f85b68e97fc", size = 220887, upload-time = "2025-04-01T22:55:50.607Z" }, + { url = "https://files.pythonhosted.org/packages/87/b7/afa1ba2f827c1ec9d0b571e4fc71a2357a7fc735430cfb9b4c03f94f5d8a/lz4-4.4.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:900912e8a7cf74b4a2bea18a3594ae0bf1138f99919c20017167b6e05f760aa4", size = 189664, upload-time = "2025-04-01T22:55:51.579Z" }, + { url = "https://files.pythonhosted.org/packages/6f/6b/bfa74d3412cc9a5c787b44e1941b3186a813f8354ea633aed785ad8af106/lz4-4.4.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:017f8d269a739405a59d68a4d63d23a8df23e3bb2c70aa069b7563af08dfdffb", size = 1237318, upload-time = "2025-04-01T22:55:52.55Z" }, + { url = "https://files.pythonhosted.org/packages/b8/c7/3e826333be0034ac702a6fa25ed289002c83a154c69d8b9da7f3583157c5/lz4-4.4.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dac522788296a9a02a39f620970dea86c38e141e21e51238f1b5e9fa629f8e69", size = 1263452, upload-time = "2025-04-01T22:55:53.757Z" }, + { url = "https://files.pythonhosted.org/packages/45/e5/06b90dbe76f21475aab0052e0f1a8598d651a5a269f2e9a86f05241142ed/lz4-4.4.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6b56aa9eef830bf6443acd8c4e18b208a8993dc32e0d6ef4263ecfa6afb3f599", size = 1183617, upload-time = "2025-04-01T22:55:54.858Z" }, + { url = "https://files.pythonhosted.org/packages/0b/9e/1781ecb72300aed4d74484dff9a16a585e82c5de47c52930bb6e5a415c40/lz4-4.4.4-cp39-cp39-win32.whl", hash = "sha256:585b42eb37ab16a278c3a917ec23b2beef175aa669f4120142b97aebf90ef775", size = 88266, upload-time = "2025-04-01T22:55:55.988Z" }, + { url = "https://files.pythonhosted.org/packages/f8/2d/2426270bc39cd39a49773559137415b5a1bb43d3be75a44807806f5cb503/lz4-4.4.4-cp39-cp39-win_amd64.whl", hash = "sha256:4ab1537bd3b3bfbafd3c8847e06827129794488304f21945fc2f5b669649d94f", size = 99915, upload-time = "2025-04-01T22:55:56.849Z" }, + { url = "https://files.pythonhosted.org/packages/66/ea/cadcd430073925e1acd7c509333101cc1b922593af6779355bf6cc064c73/lz4-4.4.4-cp39-cp39-win_arm64.whl", hash = "sha256:38730927ad51beb42ab8dbc5555270bfbe86167ba734265f88bbd799fced1004", size = 89747, upload-time = "2025-04-01T22:55:57.749Z" }, +] + +[[package]] +name = "matplotlib" +version = "3.9.4" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version < '3.10'", +] +dependencies = [ + { name = "contourpy", version = "1.3.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, + { name = "cycler", marker = "python_full_version < '3.10'" }, + { name = "fonttools", marker = "python_full_version < '3.10'" }, + { name = "importlib-resources", marker = "python_full_version < '3.10'" }, + { name = "kiwisolver", version = "1.4.7", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, + { name = "numpy", version = "2.0.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, + { name = "packaging", marker = "python_full_version < '3.10'" }, + { name = "pillow", version = "11.3.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, + { name = "pyparsing", marker = "python_full_version < '3.10'" }, + { name = "python-dateutil", marker = "python_full_version < '3.10'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/df/17/1747b4154034befd0ed33b52538f5eb7752d05bb51c5e2a31470c3bc7d52/matplotlib-3.9.4.tar.gz", hash = "sha256:1e00e8be7393cbdc6fedfa8a6fba02cf3e83814b285db1c60b906a023ba41bc3", size = 36106529, upload-time = "2024-12-13T05:56:34.184Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7e/94/27d2e2c30d54b56c7b764acc1874a909e34d1965a427fc7092bb6a588b63/matplotlib-3.9.4-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:c5fdd7abfb706dfa8d307af64a87f1a862879ec3cd8d0ec8637458f0885b9c50", size = 7885089, upload-time = "2024-12-13T05:54:24.224Z" }, + { url = "https://files.pythonhosted.org/packages/c6/25/828273307e40a68eb8e9df832b6b2aaad075864fdc1de4b1b81e40b09e48/matplotlib-3.9.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:d89bc4e85e40a71d1477780366c27fb7c6494d293e1617788986f74e2a03d7ff", size = 7770600, upload-time = "2024-12-13T05:54:27.214Z" }, + { url = "https://files.pythonhosted.org/packages/f2/65/f841a422ec994da5123368d76b126acf4fc02ea7459b6e37c4891b555b83/matplotlib-3.9.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ddf9f3c26aae695c5daafbf6b94e4c1a30d6cd617ba594bbbded3b33a1fcfa26", size = 8200138, upload-time = "2024-12-13T05:54:29.497Z" }, + { url = "https://files.pythonhosted.org/packages/07/06/272aca07a38804d93b6050813de41ca7ab0e29ba7a9dd098e12037c919a9/matplotlib-3.9.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:18ebcf248030173b59a868fda1fe42397253f6698995b55e81e1f57431d85e50", size = 8312711, upload-time = "2024-12-13T05:54:34.396Z" }, + { url = "https://files.pythonhosted.org/packages/98/37/f13e23b233c526b7e27ad61be0a771894a079e0f7494a10d8d81557e0e9a/matplotlib-3.9.4-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:974896ec43c672ec23f3f8c648981e8bc880ee163146e0312a9b8def2fac66f5", size = 9090622, upload-time = "2024-12-13T05:54:36.808Z" }, + { url = "https://files.pythonhosted.org/packages/4f/8c/b1f5bd2bd70e60f93b1b54c4d5ba7a992312021d0ddddf572f9a1a6d9348/matplotlib-3.9.4-cp310-cp310-win_amd64.whl", hash = "sha256:4598c394ae9711cec135639374e70871fa36b56afae17bdf032a345be552a88d", size = 7828211, upload-time = "2024-12-13T05:54:40.596Z" }, + { url = "https://files.pythonhosted.org/packages/74/4b/65be7959a8fa118a3929b49a842de5b78bb55475236fcf64f3e308ff74a0/matplotlib-3.9.4-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:d4dd29641d9fb8bc4492420c5480398dd40a09afd73aebe4eb9d0071a05fbe0c", size = 7894430, upload-time = "2024-12-13T05:54:44.049Z" }, + { url = "https://files.pythonhosted.org/packages/e9/18/80f70d91896e0a517b4a051c3fd540daa131630fd75e02e250365353b253/matplotlib-3.9.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:30e5b22e8bcfb95442bf7d48b0d7f3bdf4a450cbf68986ea45fca3d11ae9d099", size = 7780045, upload-time = "2024-12-13T05:54:46.414Z" }, + { url = "https://files.pythonhosted.org/packages/a2/73/ccb381026e3238c5c25c3609ba4157b2d1a617ec98d65a8b4ee4e1e74d02/matplotlib-3.9.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2bb0030d1d447fd56dcc23b4c64a26e44e898f0416276cac1ebc25522e0ac249", size = 8209906, upload-time = "2024-12-13T05:54:49.459Z" }, + { url = "https://files.pythonhosted.org/packages/ab/33/1648da77b74741c89f5ea95cbf42a291b4b364f2660b316318811404ed97/matplotlib-3.9.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:aca90ed222ac3565d2752b83dbb27627480d27662671e4d39da72e97f657a423", size = 8322873, upload-time = "2024-12-13T05:54:53.066Z" }, + { url = "https://files.pythonhosted.org/packages/57/d3/8447ba78bc6593c9044c372d1609f8ea10fb1e071e7a9e0747bea74fc16c/matplotlib-3.9.4-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:a181b2aa2906c608fcae72f977a4a2d76e385578939891b91c2550c39ecf361e", size = 9099566, upload-time = "2024-12-13T05:54:55.522Z" }, + { url = "https://files.pythonhosted.org/packages/23/e1/4f0e237bf349c02ff9d1b6e7109f1a17f745263809b9714a8576dc17752b/matplotlib-3.9.4-cp311-cp311-win_amd64.whl", hash = "sha256:1f6882828231eca17f501c4dcd98a05abb3f03d157fbc0769c6911fe08b6cfd3", size = 7838065, upload-time = "2024-12-13T05:54:58.337Z" }, + { url = "https://files.pythonhosted.org/packages/1a/2b/c918bf6c19d6445d1cefe3d2e42cb740fb997e14ab19d4daeb6a7ab8a157/matplotlib-3.9.4-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:dfc48d67e6661378a21c2983200a654b72b5c5cdbd5d2cf6e5e1ece860f0cc70", size = 7891131, upload-time = "2024-12-13T05:55:02.837Z" }, + { url = "https://files.pythonhosted.org/packages/c1/e5/b4e8fc601ca302afeeabf45f30e706a445c7979a180e3a978b78b2b681a4/matplotlib-3.9.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:47aef0fab8332d02d68e786eba8113ffd6f862182ea2999379dec9e237b7e483", size = 7776365, upload-time = "2024-12-13T05:55:05.158Z" }, + { url = "https://files.pythonhosted.org/packages/99/06/b991886c506506476e5d83625c5970c656a491b9f80161458fed94597808/matplotlib-3.9.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fba1f52c6b7dc764097f52fd9ab627b90db452c9feb653a59945de16752e965f", size = 8200707, upload-time = "2024-12-13T05:55:09.48Z" }, + { url = "https://files.pythonhosted.org/packages/c3/e2/556b627498cb27e61026f2d1ba86a78ad1b836fef0996bef5440e8bc9559/matplotlib-3.9.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:173ac3748acaac21afcc3fa1633924609ba1b87749006bc25051c52c422a5d00", size = 8313761, upload-time = "2024-12-13T05:55:12.95Z" }, + { url = "https://files.pythonhosted.org/packages/58/ff/165af33ec766ff818306ea88e91f9f60d2a6ed543be1eb122a98acbf3b0d/matplotlib-3.9.4-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:320edea0cadc07007765e33f878b13b3738ffa9745c5f707705692df70ffe0e0", size = 9095284, upload-time = "2024-12-13T05:55:16.199Z" }, + { url = "https://files.pythonhosted.org/packages/9f/8b/3d0c7a002db3b1ed702731c2a9a06d78d035f1f2fb0fb936a8e43cc1e9f4/matplotlib-3.9.4-cp312-cp312-win_amd64.whl", hash = "sha256:a4a4cfc82330b27042a7169533da7991e8789d180dd5b3daeaee57d75cd5a03b", size = 7841160, upload-time = "2024-12-13T05:55:19.991Z" }, + { url = "https://files.pythonhosted.org/packages/49/b1/999f89a7556d101b23a2f0b54f1b6e140d73f56804da1398f2f0bc0924bc/matplotlib-3.9.4-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:37eeffeeca3c940985b80f5b9a7b95ea35671e0e7405001f249848d2b62351b6", size = 7891499, upload-time = "2024-12-13T05:55:22.142Z" }, + { url = "https://files.pythonhosted.org/packages/87/7b/06a32b13a684977653396a1bfcd34d4e7539c5d55c8cbfaa8ae04d47e4a9/matplotlib-3.9.4-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:3e7465ac859ee4abcb0d836137cd8414e7bb7ad330d905abced457217d4f0f45", size = 7776802, upload-time = "2024-12-13T05:55:25.947Z" }, + { url = "https://files.pythonhosted.org/packages/65/87/ac498451aff739e515891bbb92e566f3c7ef31891aaa878402a71f9b0910/matplotlib-3.9.4-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f4c12302c34afa0cf061bea23b331e747e5e554b0fa595c96e01c7b75bc3b858", size = 8200802, upload-time = "2024-12-13T05:55:28.461Z" }, + { url = "https://files.pythonhosted.org/packages/f8/6b/9eb761c00e1cb838f6c92e5f25dcda3f56a87a52f6cb8fdfa561e6cf6a13/matplotlib-3.9.4-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2b8c97917f21b75e72108b97707ba3d48f171541a74aa2a56df7a40626bafc64", size = 8313880, upload-time = "2024-12-13T05:55:30.965Z" }, + { url = "https://files.pythonhosted.org/packages/d7/a2/c8eaa600e2085eec7e38cbbcc58a30fc78f8224939d31d3152bdafc01fd1/matplotlib-3.9.4-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:0229803bd7e19271b03cb09f27db76c918c467aa4ce2ae168171bc67c3f508df", size = 9094637, upload-time = "2024-12-13T05:55:33.701Z" }, + { url = "https://files.pythonhosted.org/packages/71/1f/c6e1daea55b7bfeb3d84c6cb1abc449f6a02b181e7e2a5e4db34c3afb793/matplotlib-3.9.4-cp313-cp313-win_amd64.whl", hash = "sha256:7c0d8ef442ebf56ff5e206f8083d08252ee738e04f3dc88ea882853a05488799", size = 7841311, upload-time = "2024-12-13T05:55:36.737Z" }, + { url = "https://files.pythonhosted.org/packages/c0/3a/2757d3f7d388b14dd48f5a83bea65b6d69f000e86b8f28f74d86e0d375bd/matplotlib-3.9.4-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:a04c3b00066a688834356d196136349cb32f5e1003c55ac419e91585168b88fb", size = 7919989, upload-time = "2024-12-13T05:55:39.024Z" }, + { url = "https://files.pythonhosted.org/packages/24/28/f5077c79a4f521589a37fe1062d6a6ea3534e068213f7357e7cfffc2e17a/matplotlib-3.9.4-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:04c519587f6c210626741a1e9a68eefc05966ede24205db8982841826af5871a", size = 7809417, upload-time = "2024-12-13T05:55:42.412Z" }, + { url = "https://files.pythonhosted.org/packages/36/c8/c523fd2963156692916a8eb7d4069084cf729359f7955cf09075deddfeaf/matplotlib-3.9.4-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:308afbf1a228b8b525fcd5cec17f246bbbb63b175a3ef6eb7b4d33287ca0cf0c", size = 8226258, upload-time = "2024-12-13T05:55:47.259Z" }, + { url = "https://files.pythonhosted.org/packages/f6/88/499bf4b8fa9349b6f5c0cf4cead0ebe5da9d67769129f1b5651e5ac51fbc/matplotlib-3.9.4-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ddb3b02246ddcffd3ce98e88fed5b238bc5faff10dbbaa42090ea13241d15764", size = 8335849, upload-time = "2024-12-13T05:55:49.763Z" }, + { url = "https://files.pythonhosted.org/packages/b8/9f/20a4156b9726188646a030774ee337d5ff695a965be45ce4dbcb9312c170/matplotlib-3.9.4-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:8a75287e9cb9eee48cb79ec1d806f75b29c0fde978cb7223a1f4c5848d696041", size = 9102152, upload-time = "2024-12-13T05:55:51.997Z" }, + { url = "https://files.pythonhosted.org/packages/10/11/237f9c3a4e8d810b1759b67ff2da7c32c04f9c80aa475e7beb36ed43a8fb/matplotlib-3.9.4-cp313-cp313t-win_amd64.whl", hash = "sha256:488deb7af140f0ba86da003e66e10d55ff915e152c78b4b66d231638400b1965", size = 7896987, upload-time = "2024-12-13T05:55:55.941Z" }, + { url = "https://files.pythonhosted.org/packages/56/eb/501b465c9fef28f158e414ea3a417913dc2ac748564c7ed41535f23445b4/matplotlib-3.9.4-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:3c3724d89a387ddf78ff88d2a30ca78ac2b4c89cf37f2db4bd453c34799e933c", size = 7885919, upload-time = "2024-12-13T05:55:59.66Z" }, + { url = "https://files.pythonhosted.org/packages/da/36/236fbd868b6c91309a5206bd90c3f881f4f44b2d997cd1d6239ef652f878/matplotlib-3.9.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:d5f0a8430ffe23d7e32cfd86445864ccad141797f7d25b7c41759a5b5d17cfd7", size = 7771486, upload-time = "2024-12-13T05:56:04.264Z" }, + { url = "https://files.pythonhosted.org/packages/e0/4b/105caf2d54d5ed11d9f4335398f5103001a03515f2126c936a752ccf1461/matplotlib-3.9.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6bb0141a21aef3b64b633dc4d16cbd5fc538b727e4958be82a0e1c92a234160e", size = 8201838, upload-time = "2024-12-13T05:56:06.792Z" }, + { url = "https://files.pythonhosted.org/packages/5d/a7/bb01188fb4013d34d274caf44a2f8091255b0497438e8b6c0a7c1710c692/matplotlib-3.9.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:57aa235109e9eed52e2c2949db17da185383fa71083c00c6c143a60e07e0888c", size = 8314492, upload-time = "2024-12-13T05:56:09.964Z" }, + { url = "https://files.pythonhosted.org/packages/33/19/02e1a37f7141fc605b193e927d0a9cdf9dc124a20b9e68793f4ffea19695/matplotlib-3.9.4-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:b18c600061477ccfdd1e6fd050c33d8be82431700f3452b297a56d9ed7037abb", size = 9092500, upload-time = "2024-12-13T05:56:13.55Z" }, + { url = "https://files.pythonhosted.org/packages/57/68/c2feb4667adbf882ffa4b3e0ac9967f848980d9f8b5bebd86644aa67ce6a/matplotlib-3.9.4-cp39-cp39-win_amd64.whl", hash = "sha256:ef5f2d1b67d2d2145ff75e10f8c008bfbf71d45137c4b648c87193e7dd053eac", size = 7822962, upload-time = "2024-12-13T05:56:16.358Z" }, + { url = "https://files.pythonhosted.org/packages/0c/22/2ef6a364cd3f565442b0b055e0599744f1e4314ec7326cdaaa48a4d864d7/matplotlib-3.9.4-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:44e0ed786d769d85bc787b0606a53f2d8d2d1d3c8a2608237365e9121c1a338c", size = 7877995, upload-time = "2024-12-13T05:56:18.805Z" }, + { url = "https://files.pythonhosted.org/packages/87/b8/2737456e566e9f4d94ae76b8aa0d953d9acb847714f9a7ad80184474f5be/matplotlib-3.9.4-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:09debb9ce941eb23ecdbe7eab972b1c3e0276dcf01688073faff7b0f61d6c6ca", size = 7769300, upload-time = "2024-12-13T05:56:21.315Z" }, + { url = "https://files.pythonhosted.org/packages/b2/1f/e709c6ec7b5321e6568769baa288c7178e60a93a9da9e682b39450da0e29/matplotlib-3.9.4-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bcc53cf157a657bfd03afab14774d54ba73aa84d42cfe2480c91bd94873952db", size = 8313423, upload-time = "2024-12-13T05:56:26.719Z" }, + { url = "https://files.pythonhosted.org/packages/5e/b6/5a1f868782cd13f053a679984e222007ecff654a9bfbac6b27a65f4eeb05/matplotlib-3.9.4-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:ad45da51be7ad02387801fd154ef74d942f49fe3fcd26a64c94842ba7ec0d865", size = 7854624, upload-time = "2024-12-13T05:56:29.359Z" }, +] + +[[package]] +name = "matplotlib" +version = "3.10.7" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version >= '3.12'", + "python_full_version == '3.11.*'", + "python_full_version == '3.10.*'", +] +dependencies = [ + { name = "contourpy", version = "1.3.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.10.*'" }, + { name = "contourpy", version = "1.3.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "cycler", marker = "python_full_version >= '3.10'" }, + { name = "fonttools", marker = "python_full_version >= '3.10'" }, + { name = "kiwisolver", version = "1.4.9", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.10.*'" }, + { name = "numpy", version = "2.3.4", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "packaging", marker = "python_full_version >= '3.10'" }, + { name = "pillow", version = "12.0.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, + { name = "pyparsing", marker = "python_full_version >= '3.10'" }, + { name = "python-dateutil", marker = "python_full_version >= '3.10'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ae/e2/d2d5295be2f44c678ebaf3544ba32d20c1f9ef08c49fe47f496180e1db15/matplotlib-3.10.7.tar.gz", hash = "sha256:a06ba7e2a2ef9131c79c49e63dad355d2d878413a0376c1727c8b9335ff731c7", size = 34804865, upload-time = "2025-10-09T00:28:00.669Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6c/87/3932d5778ab4c025db22710b61f49ccaed3956c5cf46ffb2ffa7492b06d9/matplotlib-3.10.7-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:7ac81eee3b7c266dd92cee1cd658407b16c57eed08c7421fa354ed68234de380", size = 8247141, upload-time = "2025-10-09T00:26:06.023Z" }, + { url = "https://files.pythonhosted.org/packages/45/a8/bfed45339160102bce21a44e38a358a1134a5f84c26166de03fb4a53208f/matplotlib-3.10.7-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:667ecd5d8d37813a845053d8f5bf110b534c3c9f30e69ebd25d4701385935a6d", size = 8107995, upload-time = "2025-10-09T00:26:08.669Z" }, + { url = "https://files.pythonhosted.org/packages/e2/3c/5692a2d9a5ba848fda3f48d2b607037df96460b941a59ef236404b39776b/matplotlib-3.10.7-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:cc1c51b846aca49a5a8b44fbba6a92d583a35c64590ad9e1e950dc88940a4297", size = 8680503, upload-time = "2025-10-09T00:26:10.607Z" }, + { url = "https://files.pythonhosted.org/packages/ab/a0/86ace53c48b05d0e6e9c127b2ace097434901f3e7b93f050791c8243201a/matplotlib-3.10.7-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4a11c2e9e72e7de09b7b72e62f3df23317c888299c875e2b778abf1eda8c0a42", size = 9514982, upload-time = "2025-10-09T00:26:12.594Z" }, + { url = "https://files.pythonhosted.org/packages/a6/81/ead71e2824da8f72640a64166d10e62300df4ae4db01a0bac56c5b39fa51/matplotlib-3.10.7-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:f19410b486fdd139885ace124e57f938c1e6a3210ea13dd29cab58f5d4bc12c7", size = 9566429, upload-time = "2025-10-09T00:26:14.758Z" }, + { url = "https://files.pythonhosted.org/packages/65/7d/954b3067120456f472cce8fdcacaf4a5fcd522478db0c37bb243c7cb59dd/matplotlib-3.10.7-cp310-cp310-win_amd64.whl", hash = "sha256:b498e9e4022f93de2d5a37615200ca01297ceebbb56fe4c833f46862a490f9e3", size = 8108174, upload-time = "2025-10-09T00:26:17.015Z" }, + { url = "https://files.pythonhosted.org/packages/fc/bc/0fb489005669127ec13f51be0c6adc074d7cf191075dab1da9fe3b7a3cfc/matplotlib-3.10.7-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:53b492410a6cd66c7a471de6c924f6ede976e963c0f3097a3b7abfadddc67d0a", size = 8257507, upload-time = "2025-10-09T00:26:19.073Z" }, + { url = "https://files.pythonhosted.org/packages/e2/6a/d42588ad895279ff6708924645b5d2ed54a7fb2dc045c8a804e955aeace1/matplotlib-3.10.7-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d9749313deb729f08207718d29c86246beb2ea3fdba753595b55901dee5d2fd6", size = 8119565, upload-time = "2025-10-09T00:26:21.023Z" }, + { url = "https://files.pythonhosted.org/packages/10/b7/4aa196155b4d846bd749cf82aa5a4c300cf55a8b5e0dfa5b722a63c0f8a0/matplotlib-3.10.7-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:2222c7ba2cbde7fe63032769f6eb7e83ab3227f47d997a8453377709b7fe3a5a", size = 8692668, upload-time = "2025-10-09T00:26:22.967Z" }, + { url = "https://files.pythonhosted.org/packages/e6/e7/664d2b97016f46683a02d854d730cfcf54ff92c1dafa424beebef50f831d/matplotlib-3.10.7-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e91f61a064c92c307c5a9dc8c05dc9f8a68f0a3be199d9a002a0622e13f874a1", size = 9521051, upload-time = "2025-10-09T00:26:25.041Z" }, + { url = "https://files.pythonhosted.org/packages/a8/a3/37aef1404efa615f49b5758a5e0261c16dd88f389bc1861e722620e4a754/matplotlib-3.10.7-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:6f1851eab59ca082c95df5a500106bad73672645625e04538b3ad0f69471ffcc", size = 9576878, upload-time = "2025-10-09T00:26:27.478Z" }, + { url = "https://files.pythonhosted.org/packages/33/cd/b145f9797126f3f809d177ca378de57c45413c5099c5990de2658760594a/matplotlib-3.10.7-cp311-cp311-win_amd64.whl", hash = "sha256:6516ce375109c60ceec579e699524e9d504cd7578506f01150f7a6bc174a775e", size = 8115142, upload-time = "2025-10-09T00:26:29.774Z" }, + { url = "https://files.pythonhosted.org/packages/2e/39/63bca9d2b78455ed497fcf51a9c71df200a11048f48249038f06447fa947/matplotlib-3.10.7-cp311-cp311-win_arm64.whl", hash = "sha256:b172db79759f5f9bc13ef1c3ef8b9ee7b37b0247f987fbbbdaa15e4f87fd46a9", size = 7992439, upload-time = "2025-10-09T00:26:40.32Z" }, + { url = "https://files.pythonhosted.org/packages/be/b3/09eb0f7796932826ec20c25b517d568627754f6c6462fca19e12c02f2e12/matplotlib-3.10.7-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:7a0edb7209e21840e8361e91ea84ea676658aa93edd5f8762793dec77a4a6748", size = 8272389, upload-time = "2025-10-09T00:26:42.474Z" }, + { url = "https://files.pythonhosted.org/packages/11/0b/1ae80ddafb8652fd8046cb5c8460ecc8d4afccb89e2c6d6bec61e04e1eaf/matplotlib-3.10.7-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:c380371d3c23e0eadf8ebff114445b9f970aff2010198d498d4ab4c3b41eea4f", size = 8128247, upload-time = "2025-10-09T00:26:44.77Z" }, + { url = "https://files.pythonhosted.org/packages/7d/18/95ae2e242d4a5c98bd6e90e36e128d71cf1c7e39b0874feaed3ef782e789/matplotlib-3.10.7-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:d5f256d49fea31f40f166a5e3131235a5d2f4b7f44520b1cf0baf1ce568ccff0", size = 8696996, upload-time = "2025-10-09T00:26:46.792Z" }, + { url = "https://files.pythonhosted.org/packages/7e/3d/5b559efc800bd05cb2033aa85f7e13af51958136a48327f7c261801ff90a/matplotlib-3.10.7-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:11ae579ac83cdf3fb72573bb89f70e0534de05266728740d478f0f818983c695", size = 9530153, upload-time = "2025-10-09T00:26:49.07Z" }, + { url = "https://files.pythonhosted.org/packages/88/57/eab4a719fd110312d3c220595d63a3c85ec2a39723f0f4e7fa7e6e3f74ba/matplotlib-3.10.7-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:4c14b6acd16cddc3569a2d515cfdd81c7a68ac5639b76548cfc1a9e48b20eb65", size = 9593093, upload-time = "2025-10-09T00:26:51.067Z" }, + { url = "https://files.pythonhosted.org/packages/31/3c/80816f027b3a4a28cd2a0a6ef7f89a2db22310e945cd886ec25bfb399221/matplotlib-3.10.7-cp312-cp312-win_amd64.whl", hash = "sha256:0d8c32b7ea6fb80b1aeff5a2ceb3fb9778e2759e899d9beff75584714afcc5ee", size = 8122771, upload-time = "2025-10-09T00:26:53.296Z" }, + { url = "https://files.pythonhosted.org/packages/de/77/ef1fc78bfe99999b2675435cc52120887191c566b25017d78beaabef7f2d/matplotlib-3.10.7-cp312-cp312-win_arm64.whl", hash = "sha256:5f3f6d315dcc176ba7ca6e74c7768fb7e4cf566c49cb143f6bc257b62e634ed8", size = 7992812, upload-time = "2025-10-09T00:26:54.882Z" }, + { url = "https://files.pythonhosted.org/packages/02/9c/207547916a02c78f6bdd83448d9b21afbc42f6379ed887ecf610984f3b4e/matplotlib-3.10.7-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:1d9d3713a237970569156cfb4de7533b7c4eacdd61789726f444f96a0d28f57f", size = 8273212, upload-time = "2025-10-09T00:26:56.752Z" }, + { url = "https://files.pythonhosted.org/packages/bc/d0/b3d3338d467d3fc937f0bb7f256711395cae6f78e22cef0656159950adf0/matplotlib-3.10.7-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:37a1fea41153dd6ee061d21ab69c9cf2cf543160b1b85d89cd3d2e2a7902ca4c", size = 8128713, upload-time = "2025-10-09T00:26:59.001Z" }, + { url = "https://files.pythonhosted.org/packages/22/ff/6425bf5c20d79aa5b959d1ce9e65f599632345391381c9a104133fe0b171/matplotlib-3.10.7-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:b3c4ea4948d93c9c29dc01c0c23eef66f2101bf75158c291b88de6525c55c3d1", size = 8698527, upload-time = "2025-10-09T00:27:00.69Z" }, + { url = "https://files.pythonhosted.org/packages/d0/7f/ccdca06f4c2e6c7989270ed7829b8679466682f4cfc0f8c9986241c023b6/matplotlib-3.10.7-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:22df30ffaa89f6643206cf13877191c63a50e8f800b038bc39bee9d2d4957632", size = 9529690, upload-time = "2025-10-09T00:27:02.664Z" }, + { url = "https://files.pythonhosted.org/packages/b8/95/b80fc2c1f269f21ff3d193ca697358e24408c33ce2b106a7438a45407b63/matplotlib-3.10.7-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:b69676845a0a66f9da30e87f48be36734d6748024b525ec4710be40194282c84", size = 9593732, upload-time = "2025-10-09T00:27:04.653Z" }, + { url = "https://files.pythonhosted.org/packages/e1/b6/23064a96308b9aeceeffa65e96bcde459a2ea4934d311dee20afde7407a0/matplotlib-3.10.7-cp313-cp313-win_amd64.whl", hash = "sha256:744991e0cc863dd669c8dc9136ca4e6e0082be2070b9d793cbd64bec872a6815", size = 8122727, upload-time = "2025-10-09T00:27:06.814Z" }, + { url = "https://files.pythonhosted.org/packages/b3/a6/2faaf48133b82cf3607759027f82b5c702aa99cdfcefb7f93d6ccf26a424/matplotlib-3.10.7-cp313-cp313-win_arm64.whl", hash = "sha256:fba2974df0bf8ce3c995fa84b79cde38326e0f7b5409e7a3a481c1141340bcf7", size = 7992958, upload-time = "2025-10-09T00:27:08.567Z" }, + { url = "https://files.pythonhosted.org/packages/4a/f0/b018fed0b599bd48d84c08794cb242227fe3341952da102ee9d9682db574/matplotlib-3.10.7-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:932c55d1fa7af4423422cb6a492a31cbcbdbe68fd1a9a3f545aa5e7a143b5355", size = 8316849, upload-time = "2025-10-09T00:27:10.254Z" }, + { url = "https://files.pythonhosted.org/packages/b0/b7/bb4f23856197659f275e11a2a164e36e65e9b48ea3e93c4ec25b4f163198/matplotlib-3.10.7-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:5e38c2d581d62ee729a6e144c47a71b3f42fb4187508dbbf4fe71d5612c3433b", size = 8178225, upload-time = "2025-10-09T00:27:12.241Z" }, + { url = "https://files.pythonhosted.org/packages/62/56/0600609893ff277e6f3ab3c0cef4eafa6e61006c058e84286c467223d4d5/matplotlib-3.10.7-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:786656bb13c237bbcebcd402f65f44dd61ead60ee3deb045af429d889c8dbc67", size = 8711708, upload-time = "2025-10-09T00:27:13.879Z" }, + { url = "https://files.pythonhosted.org/packages/d8/1a/6bfecb0cafe94d6658f2f1af22c43b76cf7a1c2f0dc34ef84cbb6809617e/matplotlib-3.10.7-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:09d7945a70ea43bf9248f4b6582734c2fe726723204a76eca233f24cffc7ef67", size = 9541409, upload-time = "2025-10-09T00:27:15.684Z" }, + { url = "https://files.pythonhosted.org/packages/08/50/95122a407d7f2e446fd865e2388a232a23f2b81934960ea802f3171518e4/matplotlib-3.10.7-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:d0b181e9fa8daf1d9f2d4c547527b167cb8838fc587deabca7b5c01f97199e84", size = 9594054, upload-time = "2025-10-09T00:27:17.547Z" }, + { url = "https://files.pythonhosted.org/packages/13/76/75b194a43b81583478a81e78a07da8d9ca6ddf50dd0a2ccabf258059481d/matplotlib-3.10.7-cp313-cp313t-win_amd64.whl", hash = "sha256:31963603041634ce1a96053047b40961f7a29eb8f9a62e80cc2c0427aa1d22a2", size = 8200100, upload-time = "2025-10-09T00:27:20.039Z" }, + { url = "https://files.pythonhosted.org/packages/f5/9e/6aefebdc9f8235c12bdeeda44cc0383d89c1e41da2c400caf3ee2073a3ce/matplotlib-3.10.7-cp313-cp313t-win_arm64.whl", hash = "sha256:aebed7b50aa6ac698c90f60f854b47e48cd2252b30510e7a1feddaf5a3f72cbf", size = 8042131, upload-time = "2025-10-09T00:27:21.608Z" }, + { url = "https://files.pythonhosted.org/packages/0d/4b/e5bc2c321b6a7e3a75638d937d19ea267c34bd5a90e12bee76c4d7c7a0d9/matplotlib-3.10.7-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:d883460c43e8c6b173fef244a2341f7f7c0e9725c7fe68306e8e44ed9c8fb100", size = 8273787, upload-time = "2025-10-09T00:27:23.27Z" }, + { url = "https://files.pythonhosted.org/packages/86/ad/6efae459c56c2fbc404da154e13e3a6039129f3c942b0152624f1c621f05/matplotlib-3.10.7-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:07124afcf7a6504eafcb8ce94091c5898bbdd351519a1beb5c45f7a38c67e77f", size = 8131348, upload-time = "2025-10-09T00:27:24.926Z" }, + { url = "https://files.pythonhosted.org/packages/a6/5a/a4284d2958dee4116359cc05d7e19c057e64ece1b4ac986ab0f2f4d52d5a/matplotlib-3.10.7-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c17398b709a6cce3d9fdb1595c33e356d91c098cd9486cb2cc21ea2ea418e715", size = 9533949, upload-time = "2025-10-09T00:27:26.704Z" }, + { url = "https://files.pythonhosted.org/packages/de/ff/f3781b5057fa3786623ad8976fc9f7b0d02b2f28534751fd5a44240de4cf/matplotlib-3.10.7-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7146d64f561498764561e9cd0ed64fcf582e570fc519e6f521e2d0cfd43365e1", size = 9804247, upload-time = "2025-10-09T00:27:28.514Z" }, + { url = "https://files.pythonhosted.org/packages/47/5a/993a59facb8444efb0e197bf55f545ee449902dcee86a4dfc580c3b61314/matplotlib-3.10.7-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:90ad854c0a435da3104c01e2c6f0028d7e719b690998a2333d7218db80950722", size = 9595497, upload-time = "2025-10-09T00:27:30.418Z" }, + { url = "https://files.pythonhosted.org/packages/0d/a5/77c95aaa9bb32c345cbb49626ad8eb15550cba2e6d4c88081a6c2ac7b08d/matplotlib-3.10.7-cp314-cp314-win_amd64.whl", hash = "sha256:4645fc5d9d20ffa3a39361fcdbcec731382763b623b72627806bf251b6388866", size = 8252732, upload-time = "2025-10-09T00:27:32.332Z" }, + { url = "https://files.pythonhosted.org/packages/74/04/45d269b4268d222390d7817dae77b159651909669a34ee9fdee336db5883/matplotlib-3.10.7-cp314-cp314-win_arm64.whl", hash = "sha256:9257be2f2a03415f9105c486d304a321168e61ad450f6153d77c69504ad764bb", size = 8124240, upload-time = "2025-10-09T00:27:33.94Z" }, + { url = "https://files.pythonhosted.org/packages/4b/c7/ca01c607bb827158b439208c153d6f14ddb9fb640768f06f7ca3488ae67b/matplotlib-3.10.7-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:1e4bbad66c177a8fdfa53972e5ef8be72a5f27e6a607cec0d8579abd0f3102b1", size = 8316938, upload-time = "2025-10-09T00:27:35.534Z" }, + { url = "https://files.pythonhosted.org/packages/84/d2/5539e66e9f56d2fdec94bb8436f5e449683b4e199bcc897c44fbe3c99e28/matplotlib-3.10.7-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:d8eb7194b084b12feb19142262165832fc6ee879b945491d1c3d4660748020c4", size = 8178245, upload-time = "2025-10-09T00:27:37.334Z" }, + { url = "https://files.pythonhosted.org/packages/77/b5/e6ca22901fd3e4fe433a82e583436dd872f6c966fca7e63cf806b40356f8/matplotlib-3.10.7-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b4d41379b05528091f00e1728004f9a8d7191260f3862178b88e8fd770206318", size = 9541411, upload-time = "2025-10-09T00:27:39.387Z" }, + { url = "https://files.pythonhosted.org/packages/9e/99/a4524db57cad8fee54b7237239a8f8360bfcfa3170d37c9e71c090c0f409/matplotlib-3.10.7-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4a74f79fafb2e177f240579bc83f0b60f82cc47d2f1d260f422a0627207008ca", size = 9803664, upload-time = "2025-10-09T00:27:41.492Z" }, + { url = "https://files.pythonhosted.org/packages/e6/a5/85e2edf76ea0ad4288d174926d9454ea85f3ce5390cc4e6fab196cbf250b/matplotlib-3.10.7-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:702590829c30aada1e8cef0568ddbffa77ca747b4d6e36c6d173f66e301f89cc", size = 9594066, upload-time = "2025-10-09T00:27:43.694Z" }, + { url = "https://files.pythonhosted.org/packages/39/69/9684368a314f6d83fe5c5ad2a4121a3a8e03723d2e5c8ea17b66c1bad0e7/matplotlib-3.10.7-cp314-cp314t-win_amd64.whl", hash = "sha256:f79d5de970fc90cd5591f60053aecfce1fcd736e0303d9f0bf86be649fa68fb8", size = 8342832, upload-time = "2025-10-09T00:27:45.543Z" }, + { url = "https://files.pythonhosted.org/packages/04/5f/e22e08da14bc1a0894184640d47819d2338b792732e20d292bf86e5ab785/matplotlib-3.10.7-cp314-cp314t-win_arm64.whl", hash = "sha256:cb783436e47fcf82064baca52ce748af71725d0352e1d31564cbe9c95df92b9c", size = 8172585, upload-time = "2025-10-09T00:27:47.185Z" }, + { url = "https://files.pythonhosted.org/packages/1e/6c/a9bcf03e9afb2a873e0a5855f79bce476d1023f26f8212969f2b7504756c/matplotlib-3.10.7-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:5c09cf8f2793f81368f49f118b6f9f937456362bee282eac575cca7f84cda537", size = 8241204, upload-time = "2025-10-09T00:27:48.806Z" }, + { url = "https://files.pythonhosted.org/packages/5b/fd/0e6f5aa762ed689d9fa8750b08f1932628ffa7ed30e76423c399d19407d2/matplotlib-3.10.7-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:de66744b2bb88d5cd27e80dfc2ec9f0517d0a46d204ff98fe9e5f2864eb67657", size = 8104607, upload-time = "2025-10-09T00:27:50.876Z" }, + { url = "https://files.pythonhosted.org/packages/b9/a9/21c9439d698fac5f0de8fc68b2405b738ed1f00e1279c76f2d9aa5521ead/matplotlib-3.10.7-pp310-pypy310_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:53cc80662dd197ece414dd5b66e07370201515a3eaf52e7c518c68c16814773b", size = 8682257, upload-time = "2025-10-09T00:27:52.597Z" }, + { url = "https://files.pythonhosted.org/packages/58/8f/76d5dc21ac64a49e5498d7f0472c0781dae442dd266a67458baec38288ec/matplotlib-3.10.7-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:15112bcbaef211bd663fa935ec33313b948e214454d949b723998a43357b17b0", size = 8252283, upload-time = "2025-10-09T00:27:54.739Z" }, + { url = "https://files.pythonhosted.org/packages/27/0d/9c5d4c2317feb31d819e38c9f947c942f42ebd4eb935fc6fd3518a11eaa7/matplotlib-3.10.7-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:d2a959c640cdeecdd2ec3136e8ea0441da59bcaf58d67e9c590740addba2cb68", size = 8116733, upload-time = "2025-10-09T00:27:56.406Z" }, + { url = "https://files.pythonhosted.org/packages/9a/cc/3fe688ff1355010937713164caacf9ed443675ac48a997bab6ed23b3f7c0/matplotlib-3.10.7-pp311-pypy311_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:3886e47f64611046bc1db523a09dd0a0a6bed6081e6f90e13806dd1d1d1b5e91", size = 8693919, upload-time = "2025-10-09T00:27:58.41Z" }, +] + +[[package]] +name = "matplotlib-inline" +version = "0.1.7" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "traitlets" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/99/5b/a36a337438a14116b16480db471ad061c36c3694df7c2084a0da7ba538b7/matplotlib_inline-0.1.7.tar.gz", hash = "sha256:8423b23ec666be3d16e16b60bdd8ac4e86e840ebd1dd11a30b9f117f2fa0ab90", size = 8159, upload-time = "2024-04-15T13:44:44.803Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/8f/8e/9ad090d3553c280a8060fbf6e24dc1c0c29704ee7d1c372f0c174aa59285/matplotlib_inline-0.1.7-py3-none-any.whl", hash = "sha256:df192d39a4ff8f21b1895d72e6a13f5fcc5099f00fa84384e0ea28c2cc0653ca", size = 9899, upload-time = "2024-04-15T13:44:43.265Z" }, +] + +[[package]] +name = "networkx" +version = "3.2.1" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version < '3.10'", +] +sdist = { url = "https://files.pythonhosted.org/packages/c4/80/a84676339aaae2f1cfdf9f418701dd634aef9cc76f708ef55c36ff39c3ca/networkx-3.2.1.tar.gz", hash = "sha256:9f1bb5cf3409bf324e0a722c20bdb4c20ee39bf1c30ce8ae499c8502b0b5e0c6", size = 2073928, upload-time = "2023-10-28T08:41:39.364Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d5/f0/8fbc882ca80cf077f1b246c0e3c3465f7f415439bdea6b899f6b19f61f70/networkx-3.2.1-py3-none-any.whl", hash = "sha256:f18c69adc97877c42332c170849c96cefa91881c99a7cb3e95b7c659ebdc1ec2", size = 1647772, upload-time = "2023-10-28T08:41:36.945Z" }, +] + +[[package]] +name = "networkx" +version = "3.4.2" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version == '3.10.*'", +] +sdist = { url = "https://files.pythonhosted.org/packages/fd/1d/06475e1cd5264c0b870ea2cc6fdb3e37177c1e565c43f56ff17a10e3937f/networkx-3.4.2.tar.gz", hash = "sha256:307c3669428c5362aab27c8a1260aa8f47c4e91d3891f48be0141738d8d053e1", size = 2151368, upload-time = "2024-10-21T12:39:38.695Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl", hash = "sha256:df5d4365b724cf81b8c6a7312509d0c22386097011ad1abe274afd5e9d3bbc5f", size = 1723263, upload-time = "2024-10-21T12:39:36.247Z" }, +] + +[[package]] +name = "networkx" +version = "3.5" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version >= '3.12'", + "python_full_version == '3.11.*'", +] +sdist = { url = "https://files.pythonhosted.org/packages/6c/4f/ccdb8ad3a38e583f214547fd2f7ff1fc160c43a75af88e6aec213404b96a/networkx-3.5.tar.gz", hash = "sha256:d4c6f9cf81f52d69230866796b82afbccdec3db7ae4fbd1b65ea750feed50037", size = 2471065, upload-time = "2025-05-29T11:35:07.804Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl", hash = "sha256:0030d386a9a06dee3565298b4a734b68589749a544acbb6c412dc9e2489ec6ec", size = 2034406, upload-time = "2025-05-29T11:35:04.961Z" }, +] + +[[package]] +name = "nodeenv" +version = "1.10.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/24/bf/d1bda4f6168e0b2e9e5958945e01910052158313224ada5ce1fb2e1113b8/nodeenv-1.10.0.tar.gz", hash = "sha256:996c191ad80897d076bdfba80a41994c2b47c68e224c542b48feba42ba00f8bb", size = 55611, upload-time = "2025-12-20T14:08:54.006Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/88/b2/d0896bdcdc8d28a7fc5717c305f1a861c26e18c05047949fb371034d98bd/nodeenv-1.10.0-py2.py3-none-any.whl", hash = "sha256:5bb13e3eed2923615535339b3c620e76779af4cb4c6a90deccc9e36b274d3827", size = 23438, upload-time = "2025-12-20T14:08:52.782Z" }, +] + +[[package]] +name = "numpy" +version = "2.0.2" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version < '3.10'", +] +sdist = { url = "https://files.pythonhosted.org/packages/a9/75/10dd1f8116a8b796cb2c737b674e02d02e80454bda953fa7e65d8c12b016/numpy-2.0.2.tar.gz", hash = "sha256:883c987dee1880e2a864ab0dc9892292582510604156762362d9326444636e78", size = 18902015, upload-time = "2024-08-26T20:19:40.945Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/21/91/3495b3237510f79f5d81f2508f9f13fea78ebfdf07538fc7444badda173d/numpy-2.0.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:51129a29dbe56f9ca83438b706e2e69a39892b5eda6cedcb6b0c9fdc9b0d3ece", size = 21165245, upload-time = "2024-08-26T20:04:14.625Z" }, + { url = "https://files.pythonhosted.org/packages/05/33/26178c7d437a87082d11019292dce6d3fe6f0e9026b7b2309cbf3e489b1d/numpy-2.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:f15975dfec0cf2239224d80e32c3170b1d168335eaedee69da84fbe9f1f9cd04", size = 13738540, upload-time = "2024-08-26T20:04:36.784Z" }, + { url = "https://files.pythonhosted.org/packages/ec/31/cc46e13bf07644efc7a4bf68df2df5fb2a1a88d0cd0da9ddc84dc0033e51/numpy-2.0.2-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:8c5713284ce4e282544c68d1c3b2c7161d38c256d2eefc93c1d683cf47683e66", size = 5300623, upload-time = "2024-08-26T20:04:46.491Z" }, + { url = "https://files.pythonhosted.org/packages/6e/16/7bfcebf27bb4f9d7ec67332ffebee4d1bf085c84246552d52dbb548600e7/numpy-2.0.2-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:becfae3ddd30736fe1889a37f1f580e245ba79a5855bff5f2a29cb3ccc22dd7b", size = 6901774, upload-time = "2024-08-26T20:04:58.173Z" }, + { url = "https://files.pythonhosted.org/packages/f9/a3/561c531c0e8bf082c5bef509d00d56f82e0ea7e1e3e3a7fc8fa78742a6e5/numpy-2.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2da5960c3cf0df7eafefd806d4e612c5e19358de82cb3c343631188991566ccd", size = 13907081, upload-time = "2024-08-26T20:05:19.098Z" }, + { url = "https://files.pythonhosted.org/packages/fa/66/f7177ab331876200ac7563a580140643d1179c8b4b6a6b0fc9838de2a9b8/numpy-2.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:496f71341824ed9f3d2fd36cf3ac57ae2e0165c143b55c3a035ee219413f3318", size = 19523451, upload-time = "2024-08-26T20:05:47.479Z" }, + { url = "https://files.pythonhosted.org/packages/25/7f/0b209498009ad6453e4efc2c65bcdf0ae08a182b2b7877d7ab38a92dc542/numpy-2.0.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:a61ec659f68ae254e4d237816e33171497e978140353c0c2038d46e63282d0c8", size = 19927572, upload-time = "2024-08-26T20:06:17.137Z" }, + { url = "https://files.pythonhosted.org/packages/3e/df/2619393b1e1b565cd2d4c4403bdd979621e2c4dea1f8532754b2598ed63b/numpy-2.0.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:d731a1c6116ba289c1e9ee714b08a8ff882944d4ad631fd411106a30f083c326", size = 14400722, upload-time = "2024-08-26T20:06:39.16Z" }, + { url = "https://files.pythonhosted.org/packages/22/ad/77e921b9f256d5da36424ffb711ae79ca3f451ff8489eeca544d0701d74a/numpy-2.0.2-cp310-cp310-win32.whl", hash = "sha256:984d96121c9f9616cd33fbd0618b7f08e0cfc9600a7ee1d6fd9b239186d19d97", size = 6472170, upload-time = "2024-08-26T20:06:50.361Z" }, + { url = "https://files.pythonhosted.org/packages/10/05/3442317535028bc29cf0c0dd4c191a4481e8376e9f0db6bcf29703cadae6/numpy-2.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:c7b0be4ef08607dd04da4092faee0b86607f111d5ae68036f16cc787e250a131", size = 15905558, upload-time = "2024-08-26T20:07:13.881Z" }, + { url = "https://files.pythonhosted.org/packages/8b/cf/034500fb83041aa0286e0fb16e7c76e5c8b67c0711bb6e9e9737a717d5fe/numpy-2.0.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:49ca4decb342d66018b01932139c0961a8f9ddc7589611158cb3c27cbcf76448", size = 21169137, upload-time = "2024-08-26T20:07:45.345Z" }, + { url = "https://files.pythonhosted.org/packages/4a/d9/32de45561811a4b87fbdee23b5797394e3d1504b4a7cf40c10199848893e/numpy-2.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:11a76c372d1d37437857280aa142086476136a8c0f373b2e648ab2c8f18fb195", size = 13703552, upload-time = "2024-08-26T20:08:06.666Z" }, + { url = "https://files.pythonhosted.org/packages/c1/ca/2f384720020c7b244d22508cb7ab23d95f179fcfff33c31a6eeba8d6c512/numpy-2.0.2-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:807ec44583fd708a21d4a11d94aedf2f4f3c3719035c76a2bbe1fe8e217bdc57", size = 5298957, upload-time = "2024-08-26T20:08:15.83Z" }, + { url = "https://files.pythonhosted.org/packages/0e/78/a3e4f9fb6aa4e6fdca0c5428e8ba039408514388cf62d89651aade838269/numpy-2.0.2-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:8cafab480740e22f8d833acefed5cc87ce276f4ece12fdaa2e8903db2f82897a", size = 6905573, upload-time = "2024-08-26T20:08:27.185Z" }, + { url = "https://files.pythonhosted.org/packages/a0/72/cfc3a1beb2caf4efc9d0b38a15fe34025230da27e1c08cc2eb9bfb1c7231/numpy-2.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a15f476a45e6e5a3a79d8a14e62161d27ad897381fecfa4a09ed5322f2085669", size = 13914330, upload-time = "2024-08-26T20:08:48.058Z" }, + { url = "https://files.pythonhosted.org/packages/ba/a8/c17acf65a931ce551fee11b72e8de63bf7e8a6f0e21add4c937c83563538/numpy-2.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:13e689d772146140a252c3a28501da66dfecd77490b498b168b501835041f951", size = 19534895, upload-time = "2024-08-26T20:09:16.536Z" }, + { url = "https://files.pythonhosted.org/packages/ba/86/8767f3d54f6ae0165749f84648da9dcc8cd78ab65d415494962c86fac80f/numpy-2.0.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:9ea91dfb7c3d1c56a0e55657c0afb38cf1eeae4544c208dc465c3c9f3a7c09f9", size = 19937253, upload-time = "2024-08-26T20:09:46.263Z" }, + { url = "https://files.pythonhosted.org/packages/df/87/f76450e6e1c14e5bb1eae6836478b1028e096fd02e85c1c37674606ab752/numpy-2.0.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:c1c9307701fec8f3f7a1e6711f9089c06e6284b3afbbcd259f7791282d660a15", size = 14414074, upload-time = "2024-08-26T20:10:08.483Z" }, + { url = "https://files.pythonhosted.org/packages/5c/ca/0f0f328e1e59f73754f06e1adfb909de43726d4f24c6a3f8805f34f2b0fa/numpy-2.0.2-cp311-cp311-win32.whl", hash = "sha256:a392a68bd329eafac5817e5aefeb39038c48b671afd242710b451e76090e81f4", size = 6470640, upload-time = "2024-08-26T20:10:19.732Z" }, + { url = "https://files.pythonhosted.org/packages/eb/57/3a3f14d3a759dcf9bf6e9eda905794726b758819df4663f217d658a58695/numpy-2.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:286cd40ce2b7d652a6f22efdfc6d1edf879440e53e76a75955bc0c826c7e64dc", size = 15910230, upload-time = "2024-08-26T20:10:43.413Z" }, + { url = "https://files.pythonhosted.org/packages/45/40/2e117be60ec50d98fa08c2f8c48e09b3edea93cfcabd5a9ff6925d54b1c2/numpy-2.0.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:df55d490dea7934f330006d0f81e8551ba6010a5bf035a249ef61a94f21c500b", size = 20895803, upload-time = "2024-08-26T20:11:13.916Z" }, + { url = "https://files.pythonhosted.org/packages/46/92/1b8b8dee833f53cef3e0a3f69b2374467789e0bb7399689582314df02651/numpy-2.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8df823f570d9adf0978347d1f926b2a867d5608f434a7cff7f7908c6570dcf5e", size = 13471835, upload-time = "2024-08-26T20:11:34.779Z" }, + { url = "https://files.pythonhosted.org/packages/7f/19/e2793bde475f1edaea6945be141aef6c8b4c669b90c90a300a8954d08f0a/numpy-2.0.2-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:9a92ae5c14811e390f3767053ff54eaee3bf84576d99a2456391401323f4ec2c", size = 5038499, upload-time = "2024-08-26T20:11:43.902Z" }, + { url = "https://files.pythonhosted.org/packages/e3/ff/ddf6dac2ff0dd50a7327bcdba45cb0264d0e96bb44d33324853f781a8f3c/numpy-2.0.2-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:a842d573724391493a97a62ebbb8e731f8a5dcc5d285dfc99141ca15a3302d0c", size = 6633497, upload-time = "2024-08-26T20:11:55.09Z" }, + { url = "https://files.pythonhosted.org/packages/72/21/67f36eac8e2d2cd652a2e69595a54128297cdcb1ff3931cfc87838874bd4/numpy-2.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c05e238064fc0610c840d1cf6a13bf63d7e391717d247f1bf0318172e759e692", size = 13621158, upload-time = "2024-08-26T20:12:14.95Z" }, + { url = "https://files.pythonhosted.org/packages/39/68/e9f1126d757653496dbc096cb429014347a36b228f5a991dae2c6b6cfd40/numpy-2.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0123ffdaa88fa4ab64835dcbde75dcdf89c453c922f18dced6e27c90d1d0ec5a", size = 19236173, upload-time = "2024-08-26T20:12:44.049Z" }, + { url = "https://files.pythonhosted.org/packages/d1/e9/1f5333281e4ebf483ba1c888b1d61ba7e78d7e910fdd8e6499667041cc35/numpy-2.0.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:96a55f64139912d61de9137f11bf39a55ec8faec288c75a54f93dfd39f7eb40c", size = 19634174, upload-time = "2024-08-26T20:13:13.634Z" }, + { url = "https://files.pythonhosted.org/packages/71/af/a469674070c8d8408384e3012e064299f7a2de540738a8e414dcfd639996/numpy-2.0.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:ec9852fb39354b5a45a80bdab5ac02dd02b15f44b3804e9f00c556bf24b4bded", size = 14099701, upload-time = "2024-08-26T20:13:34.851Z" }, + { url = "https://files.pythonhosted.org/packages/d0/3d/08ea9f239d0e0e939b6ca52ad403c84a2bce1bde301a8eb4888c1c1543f1/numpy-2.0.2-cp312-cp312-win32.whl", hash = "sha256:671bec6496f83202ed2d3c8fdc486a8fc86942f2e69ff0e986140339a63bcbe5", size = 6174313, upload-time = "2024-08-26T20:13:45.653Z" }, + { url = "https://files.pythonhosted.org/packages/b2/b5/4ac39baebf1fdb2e72585c8352c56d063b6126be9fc95bd2bb5ef5770c20/numpy-2.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:cfd41e13fdc257aa5778496b8caa5e856dc4896d4ccf01841daee1d96465467a", size = 15606179, upload-time = "2024-08-26T20:14:08.786Z" }, + { url = "https://files.pythonhosted.org/packages/43/c1/41c8f6df3162b0c6ffd4437d729115704bd43363de0090c7f913cfbc2d89/numpy-2.0.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9059e10581ce4093f735ed23f3b9d283b9d517ff46009ddd485f1747eb22653c", size = 21169942, upload-time = "2024-08-26T20:14:40.108Z" }, + { url = "https://files.pythonhosted.org/packages/39/bc/fd298f308dcd232b56a4031fd6ddf11c43f9917fbc937e53762f7b5a3bb1/numpy-2.0.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:423e89b23490805d2a5a96fe40ec507407b8ee786d66f7328be214f9679df6dd", size = 13711512, upload-time = "2024-08-26T20:15:00.985Z" }, + { url = "https://files.pythonhosted.org/packages/96/ff/06d1aa3eeb1c614eda245c1ba4fb88c483bee6520d361641331872ac4b82/numpy-2.0.2-cp39-cp39-macosx_14_0_arm64.whl", hash = "sha256:2b2955fa6f11907cf7a70dab0d0755159bca87755e831e47932367fc8f2f2d0b", size = 5306976, upload-time = "2024-08-26T20:15:10.876Z" }, + { url = "https://files.pythonhosted.org/packages/2d/98/121996dcfb10a6087a05e54453e28e58694a7db62c5a5a29cee14c6e047b/numpy-2.0.2-cp39-cp39-macosx_14_0_x86_64.whl", hash = "sha256:97032a27bd9d8988b9a97a8c4d2c9f2c15a81f61e2f21404d7e8ef00cb5be729", size = 6906494, upload-time = "2024-08-26T20:15:22.055Z" }, + { url = "https://files.pythonhosted.org/packages/15/31/9dffc70da6b9bbf7968f6551967fc21156207366272c2a40b4ed6008dc9b/numpy-2.0.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1e795a8be3ddbac43274f18588329c72939870a16cae810c2b73461c40718ab1", size = 13912596, upload-time = "2024-08-26T20:15:42.452Z" }, + { url = "https://files.pythonhosted.org/packages/b9/14/78635daab4b07c0930c919d451b8bf8c164774e6a3413aed04a6d95758ce/numpy-2.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f26b258c385842546006213344c50655ff1555a9338e2e5e02a0756dc3e803dd", size = 19526099, upload-time = "2024-08-26T20:16:11.048Z" }, + { url = "https://files.pythonhosted.org/packages/26/4c/0eeca4614003077f68bfe7aac8b7496f04221865b3a5e7cb230c9d055afd/numpy-2.0.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5fec9451a7789926bcf7c2b8d187292c9f93ea30284802a0ab3f5be8ab36865d", size = 19932823, upload-time = "2024-08-26T20:16:40.171Z" }, + { url = "https://files.pythonhosted.org/packages/f1/46/ea25b98b13dccaebddf1a803f8c748680d972e00507cd9bc6dcdb5aa2ac1/numpy-2.0.2-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:9189427407d88ff25ecf8f12469d4d39d35bee1db5d39fc5c168c6f088a6956d", size = 14404424, upload-time = "2024-08-26T20:17:02.604Z" }, + { url = "https://files.pythonhosted.org/packages/c8/a6/177dd88d95ecf07e722d21008b1b40e681a929eb9e329684d449c36586b2/numpy-2.0.2-cp39-cp39-win32.whl", hash = "sha256:905d16e0c60200656500c95b6b8dca5d109e23cb24abc701d41c02d74c6b3afa", size = 6476809, upload-time = "2024-08-26T20:17:13.553Z" }, + { url = "https://files.pythonhosted.org/packages/ea/2b/7fc9f4e7ae5b507c1a3a21f0f15ed03e794c1242ea8a242ac158beb56034/numpy-2.0.2-cp39-cp39-win_amd64.whl", hash = "sha256:a3f4ab0caa7f053f6797fcd4e1e25caee367db3112ef2b6ef82d749530768c73", size = 15911314, upload-time = "2024-08-26T20:17:36.72Z" }, + { url = "https://files.pythonhosted.org/packages/8f/3b/df5a870ac6a3be3a86856ce195ef42eec7ae50d2a202be1f5a4b3b340e14/numpy-2.0.2-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:7f0a0c6f12e07fa94133c8a67404322845220c06a9e80e85999afe727f7438b8", size = 21025288, upload-time = "2024-08-26T20:18:07.732Z" }, + { url = "https://files.pythonhosted.org/packages/2c/97/51af92f18d6f6f2d9ad8b482a99fb74e142d71372da5d834b3a2747a446e/numpy-2.0.2-pp39-pypy39_pp73-macosx_14_0_x86_64.whl", hash = "sha256:312950fdd060354350ed123c0e25a71327d3711584beaef30cdaa93320c392d4", size = 6762793, upload-time = "2024-08-26T20:18:19.125Z" }, + { url = "https://files.pythonhosted.org/packages/12/46/de1fbd0c1b5ccaa7f9a005b66761533e2f6a3e560096682683a223631fe9/numpy-2.0.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:26df23238872200f63518dd2aa984cfca675d82469535dc7162dc2ee52d9dd5c", size = 19334885, upload-time = "2024-08-26T20:18:47.237Z" }, + { url = "https://files.pythonhosted.org/packages/cc/dc/d330a6faefd92b446ec0f0dfea4c3207bb1fef3c4771d19cf4543efd2c78/numpy-2.0.2-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:a46288ec55ebbd58947d31d72be2c63cbf839f0a63b49cb755022310792a3385", size = 15828784, upload-time = "2024-08-26T20:19:11.19Z" }, +] + +[[package]] +name = "numpy" +version = "2.2.6" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version == '3.10.*'", +] +sdist = { url = "https://files.pythonhosted.org/packages/76/21/7d2a95e4bba9dc13d043ee156a356c0a8f0c6309dff6b21b4d71a073b8a8/numpy-2.2.6.tar.gz", hash = "sha256:e29554e2bef54a90aa5cc07da6ce955accb83f21ab5de01a62c8478897b264fd", size = 20276440, upload-time = "2025-05-17T22:38:04.611Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9a/3e/ed6db5be21ce87955c0cbd3009f2803f59fa08df21b5df06862e2d8e2bdd/numpy-2.2.6-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b412caa66f72040e6d268491a59f2c43bf03eb6c96dd8f0307829feb7fa2b6fb", size = 21165245, upload-time = "2025-05-17T21:27:58.555Z" }, + { url = "https://files.pythonhosted.org/packages/22/c2/4b9221495b2a132cc9d2eb862e21d42a009f5a60e45fc44b00118c174bff/numpy-2.2.6-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8e41fd67c52b86603a91c1a505ebaef50b3314de0213461c7a6e99c9a3beff90", size = 14360048, upload-time = "2025-05-17T21:28:21.406Z" }, + { url = "https://files.pythonhosted.org/packages/fd/77/dc2fcfc66943c6410e2bf598062f5959372735ffda175b39906d54f02349/numpy-2.2.6-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:37e990a01ae6ec7fe7fa1c26c55ecb672dd98b19c3d0e1d1f326fa13cb38d163", size = 5340542, upload-time = "2025-05-17T21:28:30.931Z" }, + { url = "https://files.pythonhosted.org/packages/7a/4f/1cb5fdc353a5f5cc7feb692db9b8ec2c3d6405453f982435efc52561df58/numpy-2.2.6-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:5a6429d4be8ca66d889b7cf70f536a397dc45ba6faeb5f8c5427935d9592e9cf", size = 6878301, upload-time = "2025-05-17T21:28:41.613Z" }, + { url = "https://files.pythonhosted.org/packages/eb/17/96a3acd228cec142fcb8723bd3cc39c2a474f7dcf0a5d16731980bcafa95/numpy-2.2.6-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:efd28d4e9cd7d7a8d39074a4d44c63eda73401580c5c76acda2ce969e0a38e83", size = 14297320, upload-time = "2025-05-17T21:29:02.78Z" }, + { url = "https://files.pythonhosted.org/packages/b4/63/3de6a34ad7ad6646ac7d2f55ebc6ad439dbbf9c4370017c50cf403fb19b5/numpy-2.2.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fc7b73d02efb0e18c000e9ad8b83480dfcd5dfd11065997ed4c6747470ae8915", size = 16801050, upload-time = "2025-05-17T21:29:27.675Z" }, + { url = "https://files.pythonhosted.org/packages/07/b6/89d837eddef52b3d0cec5c6ba0456c1bf1b9ef6a6672fc2b7873c3ec4e2e/numpy-2.2.6-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:74d4531beb257d2c3f4b261bfb0fc09e0f9ebb8842d82a7b4209415896adc680", size = 15807034, upload-time = "2025-05-17T21:29:51.102Z" }, + { url = "https://files.pythonhosted.org/packages/01/c8/dc6ae86e3c61cfec1f178e5c9f7858584049b6093f843bca541f94120920/numpy-2.2.6-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:8fc377d995680230e83241d8a96def29f204b5782f371c532579b4f20607a289", size = 18614185, upload-time = "2025-05-17T21:30:18.703Z" }, + { url = "https://files.pythonhosted.org/packages/5b/c5/0064b1b7e7c89137b471ccec1fd2282fceaae0ab3a9550f2568782d80357/numpy-2.2.6-cp310-cp310-win32.whl", hash = "sha256:b093dd74e50a8cba3e873868d9e93a85b78e0daf2e98c6797566ad8044e8363d", size = 6527149, upload-time = "2025-05-17T21:30:29.788Z" }, + { url = "https://files.pythonhosted.org/packages/a3/dd/4b822569d6b96c39d1215dbae0582fd99954dcbcf0c1a13c61783feaca3f/numpy-2.2.6-cp310-cp310-win_amd64.whl", hash = "sha256:f0fd6321b839904e15c46e0d257fdd101dd7f530fe03fd6359c1ea63738703f3", size = 12904620, upload-time = "2025-05-17T21:30:48.994Z" }, + { url = "https://files.pythonhosted.org/packages/da/a8/4f83e2aa666a9fbf56d6118faaaf5f1974d456b1823fda0a176eff722839/numpy-2.2.6-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f9f1adb22318e121c5c69a09142811a201ef17ab257a1e66ca3025065b7f53ae", size = 21176963, upload-time = "2025-05-17T21:31:19.36Z" }, + { url = "https://files.pythonhosted.org/packages/b3/2b/64e1affc7972decb74c9e29e5649fac940514910960ba25cd9af4488b66c/numpy-2.2.6-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:c820a93b0255bc360f53eca31a0e676fd1101f673dda8da93454a12e23fc5f7a", size = 14406743, upload-time = "2025-05-17T21:31:41.087Z" }, + { url = "https://files.pythonhosted.org/packages/4a/9f/0121e375000b5e50ffdd8b25bf78d8e1a5aa4cca3f185d41265198c7b834/numpy-2.2.6-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:3d70692235e759f260c3d837193090014aebdf026dfd167834bcba43e30c2a42", size = 5352616, upload-time = "2025-05-17T21:31:50.072Z" }, + { url = "https://files.pythonhosted.org/packages/31/0d/b48c405c91693635fbe2dcd7bc84a33a602add5f63286e024d3b6741411c/numpy-2.2.6-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:481b49095335f8eed42e39e8041327c05b0f6f4780488f61286ed3c01368d491", size = 6889579, upload-time = "2025-05-17T21:32:01.712Z" }, + { url = "https://files.pythonhosted.org/packages/52/b8/7f0554d49b565d0171eab6e99001846882000883998e7b7d9f0d98b1f934/numpy-2.2.6-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b64d8d4d17135e00c8e346e0a738deb17e754230d7e0810ac5012750bbd85a5a", size = 14312005, upload-time = "2025-05-17T21:32:23.332Z" }, + { url = "https://files.pythonhosted.org/packages/b3/dd/2238b898e51bd6d389b7389ffb20d7f4c10066d80351187ec8e303a5a475/numpy-2.2.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba10f8411898fc418a521833e014a77d3ca01c15b0c6cdcce6a0d2897e6dbbdf", size = 16821570, upload-time = "2025-05-17T21:32:47.991Z" }, + { url = "https://files.pythonhosted.org/packages/83/6c/44d0325722cf644f191042bf47eedad61c1e6df2432ed65cbe28509d404e/numpy-2.2.6-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:bd48227a919f1bafbdda0583705e547892342c26fb127219d60a5c36882609d1", size = 15818548, upload-time = "2025-05-17T21:33:11.728Z" }, + { url = "https://files.pythonhosted.org/packages/ae/9d/81e8216030ce66be25279098789b665d49ff19eef08bfa8cb96d4957f422/numpy-2.2.6-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:9551a499bf125c1d4f9e250377c1ee2eddd02e01eac6644c080162c0c51778ab", size = 18620521, upload-time = "2025-05-17T21:33:39.139Z" }, + { url = "https://files.pythonhosted.org/packages/6a/fd/e19617b9530b031db51b0926eed5345ce8ddc669bb3bc0044b23e275ebe8/numpy-2.2.6-cp311-cp311-win32.whl", hash = "sha256:0678000bb9ac1475cd454c6b8c799206af8107e310843532b04d49649c717a47", size = 6525866, upload-time = "2025-05-17T21:33:50.273Z" }, + { url = "https://files.pythonhosted.org/packages/31/0a/f354fb7176b81747d870f7991dc763e157a934c717b67b58456bc63da3df/numpy-2.2.6-cp311-cp311-win_amd64.whl", hash = "sha256:e8213002e427c69c45a52bbd94163084025f533a55a59d6f9c5b820774ef3303", size = 12907455, upload-time = "2025-05-17T21:34:09.135Z" }, + { url = "https://files.pythonhosted.org/packages/82/5d/c00588b6cf18e1da539b45d3598d3557084990dcc4331960c15ee776ee41/numpy-2.2.6-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:41c5a21f4a04fa86436124d388f6ed60a9343a6f767fced1a8a71c3fbca038ff", size = 20875348, upload-time = "2025-05-17T21:34:39.648Z" }, + { url = "https://files.pythonhosted.org/packages/66/ee/560deadcdde6c2f90200450d5938f63a34b37e27ebff162810f716f6a230/numpy-2.2.6-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:de749064336d37e340f640b05f24e9e3dd678c57318c7289d222a8a2f543e90c", size = 14119362, upload-time = "2025-05-17T21:35:01.241Z" }, + { url = "https://files.pythonhosted.org/packages/3c/65/4baa99f1c53b30adf0acd9a5519078871ddde8d2339dc5a7fde80d9d87da/numpy-2.2.6-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:894b3a42502226a1cac872f840030665f33326fc3dac8e57c607905773cdcde3", size = 5084103, upload-time = "2025-05-17T21:35:10.622Z" }, + { url = "https://files.pythonhosted.org/packages/cc/89/e5a34c071a0570cc40c9a54eb472d113eea6d002e9ae12bb3a8407fb912e/numpy-2.2.6-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:71594f7c51a18e728451bb50cc60a3ce4e6538822731b2933209a1f3614e9282", size = 6625382, upload-time = "2025-05-17T21:35:21.414Z" }, + { url = "https://files.pythonhosted.org/packages/f8/35/8c80729f1ff76b3921d5c9487c7ac3de9b2a103b1cd05e905b3090513510/numpy-2.2.6-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f2618db89be1b4e05f7a1a847a9c1c0abd63e63a1607d892dd54668dd92faf87", size = 14018462, upload-time = "2025-05-17T21:35:42.174Z" }, + { url = "https://files.pythonhosted.org/packages/8c/3d/1e1db36cfd41f895d266b103df00ca5b3cbe965184df824dec5c08c6b803/numpy-2.2.6-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fd83c01228a688733f1ded5201c678f0c53ecc1006ffbc404db9f7a899ac6249", size = 16527618, upload-time = "2025-05-17T21:36:06.711Z" }, + { url = "https://files.pythonhosted.org/packages/61/c6/03ed30992602c85aa3cd95b9070a514f8b3c33e31124694438d88809ae36/numpy-2.2.6-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:37c0ca431f82cd5fa716eca9506aefcabc247fb27ba69c5062a6d3ade8cf8f49", size = 15505511, upload-time = "2025-05-17T21:36:29.965Z" }, + { url = "https://files.pythonhosted.org/packages/b7/25/5761d832a81df431e260719ec45de696414266613c9ee268394dd5ad8236/numpy-2.2.6-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:fe27749d33bb772c80dcd84ae7e8df2adc920ae8297400dabec45f0dedb3f6de", size = 18313783, upload-time = "2025-05-17T21:36:56.883Z" }, + { url = "https://files.pythonhosted.org/packages/57/0a/72d5a3527c5ebffcd47bde9162c39fae1f90138c961e5296491ce778e682/numpy-2.2.6-cp312-cp312-win32.whl", hash = "sha256:4eeaae00d789f66c7a25ac5f34b71a7035bb474e679f410e5e1a94deb24cf2d4", size = 6246506, upload-time = "2025-05-17T21:37:07.368Z" }, + { url = "https://files.pythonhosted.org/packages/36/fa/8c9210162ca1b88529ab76b41ba02d433fd54fecaf6feb70ef9f124683f1/numpy-2.2.6-cp312-cp312-win_amd64.whl", hash = "sha256:c1f9540be57940698ed329904db803cf7a402f3fc200bfe599334c9bd84a40b2", size = 12614190, upload-time = "2025-05-17T21:37:26.213Z" }, + { url = "https://files.pythonhosted.org/packages/f9/5c/6657823f4f594f72b5471f1db1ab12e26e890bb2e41897522d134d2a3e81/numpy-2.2.6-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:0811bb762109d9708cca4d0b13c4f67146e3c3b7cf8d34018c722adb2d957c84", size = 20867828, upload-time = "2025-05-17T21:37:56.699Z" }, + { url = "https://files.pythonhosted.org/packages/dc/9e/14520dc3dadf3c803473bd07e9b2bd1b69bc583cb2497b47000fed2fa92f/numpy-2.2.6-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:287cc3162b6f01463ccd86be154f284d0893d2b3ed7292439ea97eafa8170e0b", size = 14143006, upload-time = "2025-05-17T21:38:18.291Z" }, + { url = "https://files.pythonhosted.org/packages/4f/06/7e96c57d90bebdce9918412087fc22ca9851cceaf5567a45c1f404480e9e/numpy-2.2.6-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:f1372f041402e37e5e633e586f62aa53de2eac8d98cbfb822806ce4bbefcb74d", size = 5076765, upload-time = "2025-05-17T21:38:27.319Z" }, + { url = "https://files.pythonhosted.org/packages/73/ed/63d920c23b4289fdac96ddbdd6132e9427790977d5457cd132f18e76eae0/numpy-2.2.6-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:55a4d33fa519660d69614a9fad433be87e5252f4b03850642f88993f7b2ca566", size = 6617736, upload-time = "2025-05-17T21:38:38.141Z" }, + { url = "https://files.pythonhosted.org/packages/85/c5/e19c8f99d83fd377ec8c7e0cf627a8049746da54afc24ef0a0cb73d5dfb5/numpy-2.2.6-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f92729c95468a2f4f15e9bb94c432a9229d0d50de67304399627a943201baa2f", size = 14010719, upload-time = "2025-05-17T21:38:58.433Z" }, + { url = "https://files.pythonhosted.org/packages/19/49/4df9123aafa7b539317bf6d342cb6d227e49f7a35b99c287a6109b13dd93/numpy-2.2.6-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1bc23a79bfabc5d056d106f9befb8d50c31ced2fbc70eedb8155aec74a45798f", size = 16526072, upload-time = "2025-05-17T21:39:22.638Z" }, + { url = "https://files.pythonhosted.org/packages/b2/6c/04b5f47f4f32f7c2b0e7260442a8cbcf8168b0e1a41ff1495da42f42a14f/numpy-2.2.6-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:e3143e4451880bed956e706a3220b4e5cf6172ef05fcc397f6f36a550b1dd868", size = 15503213, upload-time = "2025-05-17T21:39:45.865Z" }, + { url = "https://files.pythonhosted.org/packages/17/0a/5cd92e352c1307640d5b6fec1b2ffb06cd0dabe7d7b8227f97933d378422/numpy-2.2.6-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:b4f13750ce79751586ae2eb824ba7e1e8dba64784086c98cdbbcc6a42112ce0d", size = 18316632, upload-time = "2025-05-17T21:40:13.331Z" }, + { url = "https://files.pythonhosted.org/packages/f0/3b/5cba2b1d88760ef86596ad0f3d484b1cbff7c115ae2429678465057c5155/numpy-2.2.6-cp313-cp313-win32.whl", hash = "sha256:5beb72339d9d4fa36522fc63802f469b13cdbe4fdab4a288f0c441b74272ebfd", size = 6244532, upload-time = "2025-05-17T21:43:46.099Z" }, + { url = "https://files.pythonhosted.org/packages/cb/3b/d58c12eafcb298d4e6d0d40216866ab15f59e55d148a5658bb3132311fcf/numpy-2.2.6-cp313-cp313-win_amd64.whl", hash = "sha256:b0544343a702fa80c95ad5d3d608ea3599dd54d4632df855e4c8d24eb6ecfa1c", size = 12610885, upload-time = "2025-05-17T21:44:05.145Z" }, + { url = "https://files.pythonhosted.org/packages/6b/9e/4bf918b818e516322db999ac25d00c75788ddfd2d2ade4fa66f1f38097e1/numpy-2.2.6-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:0bca768cd85ae743b2affdc762d617eddf3bcf8724435498a1e80132d04879e6", size = 20963467, upload-time = "2025-05-17T21:40:44Z" }, + { url = "https://files.pythonhosted.org/packages/61/66/d2de6b291507517ff2e438e13ff7b1e2cdbdb7cb40b3ed475377aece69f9/numpy-2.2.6-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:fc0c5673685c508a142ca65209b4e79ed6740a4ed6b2267dbba90f34b0b3cfda", size = 14225144, upload-time = "2025-05-17T21:41:05.695Z" }, + { url = "https://files.pythonhosted.org/packages/e4/25/480387655407ead912e28ba3a820bc69af9adf13bcbe40b299d454ec011f/numpy-2.2.6-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:5bd4fc3ac8926b3819797a7c0e2631eb889b4118a9898c84f585a54d475b7e40", size = 5200217, upload-time = "2025-05-17T21:41:15.903Z" }, + { url = "https://files.pythonhosted.org/packages/aa/4a/6e313b5108f53dcbf3aca0c0f3e9c92f4c10ce57a0a721851f9785872895/numpy-2.2.6-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:fee4236c876c4e8369388054d02d0e9bb84821feb1a64dd59e137e6511a551f8", size = 6712014, upload-time = "2025-05-17T21:41:27.321Z" }, + { url = "https://files.pythonhosted.org/packages/b7/30/172c2d5c4be71fdf476e9de553443cf8e25feddbe185e0bd88b096915bcc/numpy-2.2.6-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e1dda9c7e08dc141e0247a5b8f49cf05984955246a327d4c48bda16821947b2f", size = 14077935, upload-time = "2025-05-17T21:41:49.738Z" }, + { url = "https://files.pythonhosted.org/packages/12/fb/9e743f8d4e4d3c710902cf87af3512082ae3d43b945d5d16563f26ec251d/numpy-2.2.6-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f447e6acb680fd307f40d3da4852208af94afdfab89cf850986c3ca00562f4fa", size = 16600122, upload-time = "2025-05-17T21:42:14.046Z" }, + { url = "https://files.pythonhosted.org/packages/12/75/ee20da0e58d3a66f204f38916757e01e33a9737d0b22373b3eb5a27358f9/numpy-2.2.6-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:389d771b1623ec92636b0786bc4ae56abafad4a4c513d36a55dce14bd9ce8571", size = 15586143, upload-time = "2025-05-17T21:42:37.464Z" }, + { url = "https://files.pythonhosted.org/packages/76/95/bef5b37f29fc5e739947e9ce5179ad402875633308504a52d188302319c8/numpy-2.2.6-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:8e9ace4a37db23421249ed236fdcdd457d671e25146786dfc96835cd951aa7c1", size = 18385260, upload-time = "2025-05-17T21:43:05.189Z" }, + { url = "https://files.pythonhosted.org/packages/09/04/f2f83279d287407cf36a7a8053a5abe7be3622a4363337338f2585e4afda/numpy-2.2.6-cp313-cp313t-win32.whl", hash = "sha256:038613e9fb8c72b0a41f025a7e4c3f0b7a1b5d768ece4796b674c8f3fe13efff", size = 6377225, upload-time = "2025-05-17T21:43:16.254Z" }, + { url = "https://files.pythonhosted.org/packages/67/0e/35082d13c09c02c011cf21570543d202ad929d961c02a147493cb0c2bdf5/numpy-2.2.6-cp313-cp313t-win_amd64.whl", hash = "sha256:6031dd6dfecc0cf9f668681a37648373bddd6421fff6c66ec1624eed0180ee06", size = 12771374, upload-time = "2025-05-17T21:43:35.479Z" }, + { url = "https://files.pythonhosted.org/packages/9e/3b/d94a75f4dbf1ef5d321523ecac21ef23a3cd2ac8b78ae2aac40873590229/numpy-2.2.6-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:0b605b275d7bd0c640cad4e5d30fa701a8d59302e127e5f79138ad62762c3e3d", size = 21040391, upload-time = "2025-05-17T21:44:35.948Z" }, + { url = "https://files.pythonhosted.org/packages/17/f4/09b2fa1b58f0fb4f7c7963a1649c64c4d315752240377ed74d9cd878f7b5/numpy-2.2.6-pp310-pypy310_pp73-macosx_14_0_x86_64.whl", hash = "sha256:7befc596a7dc9da8a337f79802ee8adb30a552a94f792b9c9d18c840055907db", size = 6786754, upload-time = "2025-05-17T21:44:47.446Z" }, + { url = "https://files.pythonhosted.org/packages/af/30/feba75f143bdc868a1cc3f44ccfa6c4b9ec522b36458e738cd00f67b573f/numpy-2.2.6-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ce47521a4754c8f4593837384bd3424880629f718d87c5d44f8ed763edd63543", size = 16643476, upload-time = "2025-05-17T21:45:11.871Z" }, + { url = "https://files.pythonhosted.org/packages/37/48/ac2a9584402fb6c0cd5b5d1a91dcf176b15760130dd386bbafdbfe3640bf/numpy-2.2.6-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:d042d24c90c41b54fd506da306759e06e568864df8ec17ccc17e9e884634fd00", size = 12812666, upload-time = "2025-05-17T21:45:31.426Z" }, +] + +[[package]] +name = "numpy" +version = "2.3.4" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version >= '3.12'", + "python_full_version == '3.11.*'", +] +sdist = { url = "https://files.pythonhosted.org/packages/b5/f4/098d2270d52b41f1bd7db9fc288aaa0400cb48c2a3e2af6fa365d9720947/numpy-2.3.4.tar.gz", hash = "sha256:a7d018bfedb375a8d979ac758b120ba846a7fe764911a64465fd87b8729f4a6a", size = 20582187, upload-time = "2025-10-15T16:18:11.77Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/60/e7/0e07379944aa8afb49a556a2b54587b828eb41dc9adc56fb7615b678ca53/numpy-2.3.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:e78aecd2800b32e8347ce49316d3eaf04aed849cd5b38e0af39f829a4e59f5eb", size = 21259519, upload-time = "2025-10-15T16:15:19.012Z" }, + { url = "https://files.pythonhosted.org/packages/d0/cb/5a69293561e8819b09e34ed9e873b9a82b5f2ade23dce4c51dc507f6cfe1/numpy-2.3.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:7fd09cc5d65bda1e79432859c40978010622112e9194e581e3415a3eccc7f43f", size = 14452796, upload-time = "2025-10-15T16:15:23.094Z" }, + { url = "https://files.pythonhosted.org/packages/e4/04/ff11611200acd602a1e5129e36cfd25bf01ad8e5cf927baf2e90236eb02e/numpy-2.3.4-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:1b219560ae2c1de48ead517d085bc2d05b9433f8e49d0955c82e8cd37bd7bf36", size = 5381639, upload-time = "2025-10-15T16:15:25.572Z" }, + { url = "https://files.pythonhosted.org/packages/ea/77/e95c757a6fe7a48d28a009267408e8aa382630cc1ad1db7451b3bc21dbb4/numpy-2.3.4-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:bafa7d87d4c99752d07815ed7a2c0964f8ab311eb8168f41b910bd01d15b6032", size = 6914296, upload-time = "2025-10-15T16:15:27.079Z" }, + { url = "https://files.pythonhosted.org/packages/a3/d2/137c7b6841c942124eae921279e5c41b1c34bab0e6fc60c7348e69afd165/numpy-2.3.4-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:36dc13af226aeab72b7abad501d370d606326a0029b9f435eacb3b8c94b8a8b7", size = 14591904, upload-time = "2025-10-15T16:15:29.044Z" }, + { url = "https://files.pythonhosted.org/packages/bb/32/67e3b0f07b0aba57a078c4ab777a9e8e6bc62f24fb53a2337f75f9691699/numpy-2.3.4-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a7b2f9a18b5ff9824a6af80de4f37f4ec3c2aab05ef08f51c77a093f5b89adda", size = 16939602, upload-time = "2025-10-15T16:15:31.106Z" }, + { url = "https://files.pythonhosted.org/packages/95/22/9639c30e32c93c4cee3ccdb4b09c2d0fbff4dcd06d36b357da06146530fb/numpy-2.3.4-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:9984bd645a8db6ca15d850ff996856d8762c51a2239225288f08f9050ca240a0", size = 16372661, upload-time = "2025-10-15T16:15:33.546Z" }, + { url = "https://files.pythonhosted.org/packages/12/e9/a685079529be2b0156ae0c11b13d6be647743095bb51d46589e95be88086/numpy-2.3.4-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:64c5825affc76942973a70acf438a8ab618dbd692b84cd5ec40a0a0509edc09a", size = 18884682, upload-time = "2025-10-15T16:15:36.105Z" }, + { url = "https://files.pythonhosted.org/packages/cf/85/f6f00d019b0cc741e64b4e00ce865a57b6bed945d1bbeb1ccadbc647959b/numpy-2.3.4-cp311-cp311-win32.whl", hash = "sha256:ed759bf7a70342f7817d88376eb7142fab9fef8320d6019ef87fae05a99874e1", size = 6570076, upload-time = "2025-10-15T16:15:38.225Z" }, + { url = "https://files.pythonhosted.org/packages/7d/10/f8850982021cb90e2ec31990291f9e830ce7d94eef432b15066e7cbe0bec/numpy-2.3.4-cp311-cp311-win_amd64.whl", hash = "sha256:faba246fb30ea2a526c2e9645f61612341de1a83fb1e0c5edf4ddda5a9c10996", size = 13089358, upload-time = "2025-10-15T16:15:40.404Z" }, + { url = "https://files.pythonhosted.org/packages/d1/ad/afdd8351385edf0b3445f9e24210a9c3971ef4de8fd85155462fc4321d79/numpy-2.3.4-cp311-cp311-win_arm64.whl", hash = "sha256:4c01835e718bcebe80394fd0ac66c07cbb90147ebbdad3dcecd3f25de2ae7e2c", size = 10462292, upload-time = "2025-10-15T16:15:42.896Z" }, + { url = "https://files.pythonhosted.org/packages/96/7a/02420400b736f84317e759291b8edaeee9dc921f72b045475a9cbdb26b17/numpy-2.3.4-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:ef1b5a3e808bc40827b5fa2c8196151a4c5abe110e1726949d7abddfe5c7ae11", size = 20957727, upload-time = "2025-10-15T16:15:44.9Z" }, + { url = "https://files.pythonhosted.org/packages/18/90/a014805d627aa5750f6f0e878172afb6454552da929144b3c07fcae1bb13/numpy-2.3.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:c2f91f496a87235c6aaf6d3f3d89b17dba64996abadccb289f48456cff931ca9", size = 14187262, upload-time = "2025-10-15T16:15:47.761Z" }, + { url = "https://files.pythonhosted.org/packages/c7/e4/0a94b09abe89e500dc748e7515f21a13e30c5c3fe3396e6d4ac108c25fca/numpy-2.3.4-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:f77e5b3d3da652b474cc80a14084927a5e86a5eccf54ca8ca5cbd697bf7f2667", size = 5115992, upload-time = "2025-10-15T16:15:50.144Z" }, + { url = "https://files.pythonhosted.org/packages/88/dd/db77c75b055c6157cbd4f9c92c4458daef0dd9cbe6d8d2fe7f803cb64c37/numpy-2.3.4-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:8ab1c5f5ee40d6e01cbe96de5863e39b215a4d24e7d007cad56c7184fdf4aeef", size = 6648672, upload-time = "2025-10-15T16:15:52.442Z" }, + { url = "https://files.pythonhosted.org/packages/e1/e6/e31b0d713719610e406c0ea3ae0d90760465b086da8783e2fd835ad59027/numpy-2.3.4-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:77b84453f3adcb994ddbd0d1c5d11db2d6bda1a2b7fd5ac5bd4649d6f5dc682e", size = 14284156, upload-time = "2025-10-15T16:15:54.351Z" }, + { url = "https://files.pythonhosted.org/packages/f9/58/30a85127bfee6f108282107caf8e06a1f0cc997cb6b52cdee699276fcce4/numpy-2.3.4-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4121c5beb58a7f9e6dfdee612cb24f4df5cd4db6e8261d7f4d7450a997a65d6a", size = 16641271, upload-time = "2025-10-15T16:15:56.67Z" }, + { url = "https://files.pythonhosted.org/packages/06/f2/2e06a0f2adf23e3ae29283ad96959267938d0efd20a2e25353b70065bfec/numpy-2.3.4-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:65611ecbb00ac9846efe04db15cbe6186f562f6bb7e5e05f077e53a599225d16", size = 16059531, upload-time = "2025-10-15T16:15:59.412Z" }, + { url = "https://files.pythonhosted.org/packages/b0/e7/b106253c7c0d5dc352b9c8fab91afd76a93950998167fa3e5afe4ef3a18f/numpy-2.3.4-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:dabc42f9c6577bcc13001b8810d300fe814b4cfbe8a92c873f269484594f9786", size = 18578983, upload-time = "2025-10-15T16:16:01.804Z" }, + { url = "https://files.pythonhosted.org/packages/73/e3/04ecc41e71462276ee867ccbef26a4448638eadecf1bc56772c9ed6d0255/numpy-2.3.4-cp312-cp312-win32.whl", hash = "sha256:a49d797192a8d950ca59ee2d0337a4d804f713bb5c3c50e8db26d49666e351dc", size = 6291380, upload-time = "2025-10-15T16:16:03.938Z" }, + { url = "https://files.pythonhosted.org/packages/3d/a8/566578b10d8d0e9955b1b6cd5db4e9d4592dd0026a941ff7994cedda030a/numpy-2.3.4-cp312-cp312-win_amd64.whl", hash = "sha256:985f1e46358f06c2a09921e8921e2c98168ed4ae12ccd6e5e87a4f1857923f32", size = 12787999, upload-time = "2025-10-15T16:16:05.801Z" }, + { url = "https://files.pythonhosted.org/packages/58/22/9c903a957d0a8071b607f5b1bff0761d6e608b9a965945411f867d515db1/numpy-2.3.4-cp312-cp312-win_arm64.whl", hash = "sha256:4635239814149e06e2cb9db3dd584b2fa64316c96f10656983b8026a82e6e4db", size = 10197412, upload-time = "2025-10-15T16:16:07.854Z" }, + { url = "https://files.pythonhosted.org/packages/57/7e/b72610cc91edf138bc588df5150957a4937221ca6058b825b4725c27be62/numpy-2.3.4-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:c090d4860032b857d94144d1a9976b8e36709e40386db289aaf6672de2a81966", size = 20950335, upload-time = "2025-10-15T16:16:10.304Z" }, + { url = "https://files.pythonhosted.org/packages/3e/46/bdd3370dcea2f95ef14af79dbf81e6927102ddf1cc54adc0024d61252fd9/numpy-2.3.4-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:a13fc473b6db0be619e45f11f9e81260f7302f8d180c49a22b6e6120022596b3", size = 14179878, upload-time = "2025-10-15T16:16:12.595Z" }, + { url = "https://files.pythonhosted.org/packages/ac/01/5a67cb785bda60f45415d09c2bc245433f1c68dd82eef9c9002c508b5a65/numpy-2.3.4-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:3634093d0b428e6c32c3a69b78e554f0cd20ee420dcad5a9f3b2a63762ce4197", size = 5108673, upload-time = "2025-10-15T16:16:14.877Z" }, + { url = "https://files.pythonhosted.org/packages/c2/cd/8428e23a9fcebd33988f4cb61208fda832800ca03781f471f3727a820704/numpy-2.3.4-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:043885b4f7e6e232d7df4f51ffdef8c36320ee9d5f227b380ea636722c7ed12e", size = 6641438, upload-time = "2025-10-15T16:16:16.805Z" }, + { url = "https://files.pythonhosted.org/packages/3e/d1/913fe563820f3c6b079f992458f7331278dcd7ba8427e8e745af37ddb44f/numpy-2.3.4-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4ee6a571d1e4f0ea6d5f22d6e5fbd6ed1dc2b18542848e1e7301bd190500c9d7", size = 14281290, upload-time = "2025-10-15T16:16:18.764Z" }, + { url = "https://files.pythonhosted.org/packages/9e/7e/7d306ff7cb143e6d975cfa7eb98a93e73495c4deabb7d1b5ecf09ea0fd69/numpy-2.3.4-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:fc8a63918b04b8571789688b2780ab2b4a33ab44bfe8ccea36d3eba51228c953", size = 16636543, upload-time = "2025-10-15T16:16:21.072Z" }, + { url = "https://files.pythonhosted.org/packages/47/6a/8cfc486237e56ccfb0db234945552a557ca266f022d281a2f577b98e955c/numpy-2.3.4-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:40cc556d5abbc54aabe2b1ae287042d7bdb80c08edede19f0c0afb36ae586f37", size = 16056117, upload-time = "2025-10-15T16:16:23.369Z" }, + { url = "https://files.pythonhosted.org/packages/b1/0e/42cb5e69ea901e06ce24bfcc4b5664a56f950a70efdcf221f30d9615f3f3/numpy-2.3.4-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:ecb63014bb7f4ce653f8be7f1df8cbc6093a5a2811211770f6606cc92b5a78fd", size = 18577788, upload-time = "2025-10-15T16:16:27.496Z" }, + { url = "https://files.pythonhosted.org/packages/86/92/41c3d5157d3177559ef0a35da50f0cda7fa071f4ba2306dd36818591a5bc/numpy-2.3.4-cp313-cp313-win32.whl", hash = "sha256:e8370eb6925bb8c1c4264fec52b0384b44f675f191df91cbe0140ec9f0955646", size = 6282620, upload-time = "2025-10-15T16:16:29.811Z" }, + { url = "https://files.pythonhosted.org/packages/09/97/fd421e8bc50766665ad35536c2bb4ef916533ba1fdd053a62d96cc7c8b95/numpy-2.3.4-cp313-cp313-win_amd64.whl", hash = "sha256:56209416e81a7893036eea03abcb91c130643eb14233b2515c90dcac963fe99d", size = 12784672, upload-time = "2025-10-15T16:16:31.589Z" }, + { url = "https://files.pythonhosted.org/packages/ad/df/5474fb2f74970ca8eb978093969b125a84cc3d30e47f82191f981f13a8a0/numpy-2.3.4-cp313-cp313-win_arm64.whl", hash = "sha256:a700a4031bc0fd6936e78a752eefb79092cecad2599ea9c8039c548bc097f9bc", size = 10196702, upload-time = "2025-10-15T16:16:33.902Z" }, + { url = "https://files.pythonhosted.org/packages/11/83/66ac031464ec1767ea3ed48ce40f615eb441072945e98693bec0bcd056cc/numpy-2.3.4-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:86966db35c4040fdca64f0816a1c1dd8dbd027d90fca5a57e00e1ca4cd41b879", size = 21049003, upload-time = "2025-10-15T16:16:36.101Z" }, + { url = "https://files.pythonhosted.org/packages/5f/99/5b14e0e686e61371659a1d5bebd04596b1d72227ce36eed121bb0aeab798/numpy-2.3.4-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:838f045478638b26c375ee96ea89464d38428c69170360b23a1a50fa4baa3562", size = 14302980, upload-time = "2025-10-15T16:16:39.124Z" }, + { url = "https://files.pythonhosted.org/packages/2c/44/e9486649cd087d9fc6920e3fc3ac2aba10838d10804b1e179fb7cbc4e634/numpy-2.3.4-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:d7315ed1dab0286adca467377c8381cd748f3dc92235f22a7dfc42745644a96a", size = 5231472, upload-time = "2025-10-15T16:16:41.168Z" }, + { url = "https://files.pythonhosted.org/packages/3e/51/902b24fa8887e5fe2063fd61b1895a476d0bbf46811ab0c7fdf4bd127345/numpy-2.3.4-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:84f01a4d18b2cc4ade1814a08e5f3c907b079c847051d720fad15ce37aa930b6", size = 6739342, upload-time = "2025-10-15T16:16:43.777Z" }, + { url = "https://files.pythonhosted.org/packages/34/f1/4de9586d05b1962acdcdb1dc4af6646361a643f8c864cef7c852bf509740/numpy-2.3.4-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:817e719a868f0dacde4abdfc5c1910b301877970195db9ab6a5e2c4bd5b121f7", size = 14354338, upload-time = "2025-10-15T16:16:46.081Z" }, + { url = "https://files.pythonhosted.org/packages/1f/06/1c16103b425de7969d5a76bdf5ada0804b476fed05d5f9e17b777f1cbefd/numpy-2.3.4-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:85e071da78d92a214212cacea81c6da557cab307f2c34b5f85b628e94803f9c0", size = 16702392, upload-time = "2025-10-15T16:16:48.455Z" }, + { url = "https://files.pythonhosted.org/packages/34/b2/65f4dc1b89b5322093572b6e55161bb42e3e0487067af73627f795cc9d47/numpy-2.3.4-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:2ec646892819370cf3558f518797f16597b4e4669894a2ba712caccc9da53f1f", size = 16134998, upload-time = "2025-10-15T16:16:51.114Z" }, + { url = "https://files.pythonhosted.org/packages/d4/11/94ec578896cdb973aaf56425d6c7f2aff4186a5c00fac15ff2ec46998b46/numpy-2.3.4-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:035796aaaddfe2f9664b9a9372f089cfc88bd795a67bd1bfe15e6e770934cf64", size = 18651574, upload-time = "2025-10-15T16:16:53.429Z" }, + { url = "https://files.pythonhosted.org/packages/62/b7/7efa763ab33dbccf56dade36938a77345ce8e8192d6b39e470ca25ff3cd0/numpy-2.3.4-cp313-cp313t-win32.whl", hash = "sha256:fea80f4f4cf83b54c3a051f2f727870ee51e22f0248d3114b8e755d160b38cfb", size = 6413135, upload-time = "2025-10-15T16:16:55.992Z" }, + { url = "https://files.pythonhosted.org/packages/43/70/aba4c38e8400abcc2f345e13d972fb36c26409b3e644366db7649015f291/numpy-2.3.4-cp313-cp313t-win_amd64.whl", hash = "sha256:15eea9f306b98e0be91eb344a94c0e630689ef302e10c2ce5f7e11905c704f9c", size = 12928582, upload-time = "2025-10-15T16:16:57.943Z" }, + { url = "https://files.pythonhosted.org/packages/67/63/871fad5f0073fc00fbbdd7232962ea1ac40eeaae2bba66c76214f7954236/numpy-2.3.4-cp313-cp313t-win_arm64.whl", hash = "sha256:b6c231c9c2fadbae4011ca5e7e83e12dc4a5072f1a1d85a0a7b3ed754d145a40", size = 10266691, upload-time = "2025-10-15T16:17:00.048Z" }, + { url = "https://files.pythonhosted.org/packages/72/71/ae6170143c115732470ae3a2d01512870dd16e0953f8a6dc89525696069b/numpy-2.3.4-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:81c3e6d8c97295a7360d367f9f8553973651b76907988bb6066376bc2252f24e", size = 20955580, upload-time = "2025-10-15T16:17:02.509Z" }, + { url = "https://files.pythonhosted.org/packages/af/39/4be9222ffd6ca8a30eda033d5f753276a9c3426c397bb137d8e19dedd200/numpy-2.3.4-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:7c26b0b2bf58009ed1f38a641f3db4be8d960a417ca96d14e5b06df1506d41ff", size = 14188056, upload-time = "2025-10-15T16:17:04.873Z" }, + { url = "https://files.pythonhosted.org/packages/6c/3d/d85f6700d0a4aa4f9491030e1021c2b2b7421b2b38d01acd16734a2bfdc7/numpy-2.3.4-cp314-cp314-macosx_14_0_arm64.whl", hash = "sha256:62b2198c438058a20b6704351b35a1d7db881812d8512d67a69c9de1f18ca05f", size = 5116555, upload-time = "2025-10-15T16:17:07.499Z" }, + { url = "https://files.pythonhosted.org/packages/bf/04/82c1467d86f47eee8a19a464c92f90a9bb68ccf14a54c5224d7031241ffb/numpy-2.3.4-cp314-cp314-macosx_14_0_x86_64.whl", hash = "sha256:9d729d60f8d53a7361707f4b68a9663c968882dd4f09e0d58c044c8bf5faee7b", size = 6643581, upload-time = "2025-10-15T16:17:09.774Z" }, + { url = "https://files.pythonhosted.org/packages/0c/d3/c79841741b837e293f48bd7db89d0ac7a4f2503b382b78a790ef1dc778a5/numpy-2.3.4-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:bd0c630cf256b0a7fd9d0a11c9413b42fef5101219ce6ed5a09624f5a65392c7", size = 14299186, upload-time = "2025-10-15T16:17:11.937Z" }, + { url = "https://files.pythonhosted.org/packages/e8/7e/4a14a769741fbf237eec5a12a2cbc7a4c4e061852b6533bcb9e9a796c908/numpy-2.3.4-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d5e081bc082825f8b139f9e9fe42942cb4054524598aaeb177ff476cc76d09d2", size = 16638601, upload-time = "2025-10-15T16:17:14.391Z" }, + { url = "https://files.pythonhosted.org/packages/93/87/1c1de269f002ff0a41173fe01dcc925f4ecff59264cd8f96cf3b60d12c9b/numpy-2.3.4-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:15fb27364ed84114438fff8aaf998c9e19adbeba08c0b75409f8c452a8692c52", size = 16074219, upload-time = "2025-10-15T16:17:17.058Z" }, + { url = "https://files.pythonhosted.org/packages/cd/28/18f72ee77408e40a76d691001ae599e712ca2a47ddd2c4f695b16c65f077/numpy-2.3.4-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:85d9fb2d8cd998c84d13a79a09cc0c1091648e848e4e6249b0ccd7f6b487fa26", size = 18576702, upload-time = "2025-10-15T16:17:19.379Z" }, + { url = "https://files.pythonhosted.org/packages/c3/76/95650169b465ececa8cf4b2e8f6df255d4bf662775e797ade2025cc51ae6/numpy-2.3.4-cp314-cp314-win32.whl", hash = "sha256:e73d63fd04e3a9d6bc187f5455d81abfad05660b212c8804bf3b407e984cd2bc", size = 6337136, upload-time = "2025-10-15T16:17:22.886Z" }, + { url = "https://files.pythonhosted.org/packages/dc/89/a231a5c43ede5d6f77ba4a91e915a87dea4aeea76560ba4d2bf185c683f0/numpy-2.3.4-cp314-cp314-win_amd64.whl", hash = "sha256:3da3491cee49cf16157e70f607c03a217ea6647b1cea4819c4f48e53d49139b9", size = 12920542, upload-time = "2025-10-15T16:17:24.783Z" }, + { url = "https://files.pythonhosted.org/packages/0d/0c/ae9434a888f717c5ed2ff2393b3f344f0ff6f1c793519fa0c540461dc530/numpy-2.3.4-cp314-cp314-win_arm64.whl", hash = "sha256:6d9cd732068e8288dbe2717177320723ccec4fb064123f0caf9bbd90ab5be868", size = 10480213, upload-time = "2025-10-15T16:17:26.935Z" }, + { url = "https://files.pythonhosted.org/packages/83/4b/c4a5f0841f92536f6b9592694a5b5f68c9ab37b775ff342649eadf9055d3/numpy-2.3.4-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:22758999b256b595cf0b1d102b133bb61866ba5ceecf15f759623b64c020c9ec", size = 21052280, upload-time = "2025-10-15T16:17:29.638Z" }, + { url = "https://files.pythonhosted.org/packages/3e/80/90308845fc93b984d2cc96d83e2324ce8ad1fd6efea81b324cba4b673854/numpy-2.3.4-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:9cb177bc55b010b19798dc5497d540dea67fd13a8d9e882b2dae71de0cf09eb3", size = 14302930, upload-time = "2025-10-15T16:17:32.384Z" }, + { url = "https://files.pythonhosted.org/packages/3d/4e/07439f22f2a3b247cec4d63a713faae55e1141a36e77fb212881f7cda3fb/numpy-2.3.4-cp314-cp314t-macosx_14_0_arm64.whl", hash = "sha256:0f2bcc76f1e05e5ab58893407c63d90b2029908fa41f9f1cc51eecce936c3365", size = 5231504, upload-time = "2025-10-15T16:17:34.515Z" }, + { url = "https://files.pythonhosted.org/packages/ab/de/1e11f2547e2fe3d00482b19721855348b94ada8359aef5d40dd57bfae9df/numpy-2.3.4-cp314-cp314t-macosx_14_0_x86_64.whl", hash = "sha256:8dc20bde86802df2ed8397a08d793da0ad7a5fd4ea3ac85d757bf5dd4ad7c252", size = 6739405, upload-time = "2025-10-15T16:17:36.128Z" }, + { url = "https://files.pythonhosted.org/packages/3b/40/8cd57393a26cebe2e923005db5134a946c62fa56a1087dc7c478f3e30837/numpy-2.3.4-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5e199c087e2aa71c8f9ce1cb7a8e10677dc12457e7cc1be4798632da37c3e86e", size = 14354866, upload-time = "2025-10-15T16:17:38.884Z" }, + { url = "https://files.pythonhosted.org/packages/93/39/5b3510f023f96874ee6fea2e40dfa99313a00bf3ab779f3c92978f34aace/numpy-2.3.4-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:85597b2d25ddf655495e2363fe044b0ae999b75bc4d630dc0d886484b03a5eb0", size = 16703296, upload-time = "2025-10-15T16:17:41.564Z" }, + { url = "https://files.pythonhosted.org/packages/41/0d/19bb163617c8045209c1996c4e427bccbc4bbff1e2c711f39203c8ddbb4a/numpy-2.3.4-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:04a69abe45b49c5955923cf2c407843d1c85013b424ae8a560bba16c92fe44a0", size = 16136046, upload-time = "2025-10-15T16:17:43.901Z" }, + { url = "https://files.pythonhosted.org/packages/e2/c1/6dba12fdf68b02a21ac411c9df19afa66bed2540f467150ca64d246b463d/numpy-2.3.4-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:e1708fac43ef8b419c975926ce1eaf793b0c13b7356cfab6ab0dc34c0a02ac0f", size = 18652691, upload-time = "2025-10-15T16:17:46.247Z" }, + { url = "https://files.pythonhosted.org/packages/f8/73/f85056701dbbbb910c51d846c58d29fd46b30eecd2b6ba760fc8b8a1641b/numpy-2.3.4-cp314-cp314t-win32.whl", hash = "sha256:863e3b5f4d9915aaf1b8ec79ae560ad21f0b8d5e3adc31e73126491bb86dee1d", size = 6485782, upload-time = "2025-10-15T16:17:48.872Z" }, + { url = "https://files.pythonhosted.org/packages/17/90/28fa6f9865181cb817c2471ee65678afa8a7e2a1fb16141473d5fa6bacc3/numpy-2.3.4-cp314-cp314t-win_amd64.whl", hash = "sha256:962064de37b9aef801d33bc579690f8bfe6c5e70e29b61783f60bcba838a14d6", size = 13113301, upload-time = "2025-10-15T16:17:50.938Z" }, + { url = "https://files.pythonhosted.org/packages/54/23/08c002201a8e7e1f9afba93b97deceb813252d9cfd0d3351caed123dcf97/numpy-2.3.4-cp314-cp314t-win_arm64.whl", hash = "sha256:8b5a9a39c45d852b62693d9b3f3e0fe052541f804296ff401a72a1b60edafb29", size = 10547532, upload-time = "2025-10-15T16:17:53.48Z" }, + { url = "https://files.pythonhosted.org/packages/b1/b6/64898f51a86ec88ca1257a59c1d7fd077b60082a119affefcdf1dd0df8ca/numpy-2.3.4-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:6e274603039f924c0fe5cb73438fa9246699c78a6df1bd3decef9ae592ae1c05", size = 21131552, upload-time = "2025-10-15T16:17:55.845Z" }, + { url = "https://files.pythonhosted.org/packages/ce/4c/f135dc6ebe2b6a3c77f4e4838fa63d350f85c99462012306ada1bd4bc460/numpy-2.3.4-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:d149aee5c72176d9ddbc6803aef9c0f6d2ceeea7626574fc68518da5476fa346", size = 14377796, upload-time = "2025-10-15T16:17:58.308Z" }, + { url = "https://files.pythonhosted.org/packages/d0/a4/f33f9c23fcc13dd8412fc8614559b5b797e0aba9d8e01dfa8bae10c84004/numpy-2.3.4-pp311-pypy311_pp73-macosx_14_0_arm64.whl", hash = "sha256:6d34ed9db9e6395bb6cd33286035f73a59b058169733a9db9f85e650b88df37e", size = 5306904, upload-time = "2025-10-15T16:18:00.596Z" }, + { url = "https://files.pythonhosted.org/packages/28/af/c44097f25f834360f9fb960fa082863e0bad14a42f36527b2a121abdec56/numpy-2.3.4-pp311-pypy311_pp73-macosx_14_0_x86_64.whl", hash = "sha256:fdebe771ca06bb8d6abce84e51dca9f7921fe6ad34a0c914541b063e9a68928b", size = 6819682, upload-time = "2025-10-15T16:18:02.32Z" }, + { url = "https://files.pythonhosted.org/packages/c5/8c/cd283b54c3c2b77e188f63e23039844f56b23bba1712318288c13fe86baf/numpy-2.3.4-pp311-pypy311_pp73-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:957e92defe6c08211eb77902253b14fe5b480ebc5112bc741fd5e9cd0608f847", size = 14422300, upload-time = "2025-10-15T16:18:04.271Z" }, + { url = "https://files.pythonhosted.org/packages/b0/f0/8404db5098d92446b3e3695cf41c6f0ecb703d701cb0b7566ee2177f2eee/numpy-2.3.4-pp311-pypy311_pp73-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:13b9062e4f5c7ee5c7e5be96f29ba71bc5a37fed3d1d77c37390ae00724d296d", size = 16760806, upload-time = "2025-10-15T16:18:06.668Z" }, + { url = "https://files.pythonhosted.org/packages/95/8e/2844c3959ce9a63acc7c8e50881133d86666f0420bcde695e115ced0920f/numpy-2.3.4-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:81b3a59793523e552c4a96109dde028aa4448ae06ccac5a76ff6532a85558a7f", size = 12973130, upload-time = "2025-10-15T16:18:09.397Z" }, +] + +[[package]] +name = "packaging" +version = "25.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a1/d4/1fc4078c65507b51b96ca8f8c3ba19e6a61c8253c72794544580a7b6c24d/packaging-25.0.tar.gz", hash = "sha256:d443872c98d677bf60f6a1f2f8c1cb748e8fe762d2bf9d3148b5599295b0fc4f", size = 165727, upload-time = "2025-04-19T11:48:59.673Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/20/12/38679034af332785aac8774540895e234f4d07f7545804097de4b666afd8/packaging-25.0-py3-none-any.whl", hash = "sha256:29572ef2b1f17581046b3a2227d5c611fb25ec70ca1ba8554b24b0e69331a484", size = 66469, upload-time = "2025-04-19T11:48:57.875Z" }, +] + +[[package]] +name = "pandas" +version = "2.3.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy", version = "2.0.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.10.*'" }, + { name = "numpy", version = "2.3.4", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "python-dateutil" }, + { name = "pytz" }, + { name = "tzdata" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/33/01/d40b85317f86cf08d853a4f495195c73815fdf205eef3993821720274518/pandas-2.3.3.tar.gz", hash = "sha256:e05e1af93b977f7eafa636d043f9f94c7ee3ac81af99c13508215942e64c993b", size = 4495223, upload-time = "2025-09-29T23:34:51.853Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3d/f7/f425a00df4fcc22b292c6895c6831c0c8ae1d9fac1e024d16f98a9ce8749/pandas-2.3.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:376c6446ae31770764215a6c937f72d917f214b43560603cd60da6408f183b6c", size = 11555763, upload-time = "2025-09-29T23:16:53.287Z" }, + { url = "https://files.pythonhosted.org/packages/13/4f/66d99628ff8ce7857aca52fed8f0066ce209f96be2fede6cef9f84e8d04f/pandas-2.3.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e19d192383eab2f4ceb30b412b22ea30690c9e618f78870357ae1d682912015a", size = 10801217, upload-time = "2025-09-29T23:17:04.522Z" }, + { url = "https://files.pythonhosted.org/packages/1d/03/3fc4a529a7710f890a239cc496fc6d50ad4a0995657dccc1d64695adb9f4/pandas-2.3.3-cp310-cp310-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5caf26f64126b6c7aec964f74266f435afef1c1b13da3b0636c7518a1fa3e2b1", size = 12148791, upload-time = "2025-09-29T23:17:18.444Z" }, + { url = "https://files.pythonhosted.org/packages/40/a8/4dac1f8f8235e5d25b9955d02ff6f29396191d4e665d71122c3722ca83c5/pandas-2.3.3-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:dd7478f1463441ae4ca7308a70e90b33470fa593429f9d4c578dd00d1fa78838", size = 12769373, upload-time = "2025-09-29T23:17:35.846Z" }, + { url = "https://files.pythonhosted.org/packages/df/91/82cc5169b6b25440a7fc0ef3a694582418d875c8e3ebf796a6d6470aa578/pandas-2.3.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:4793891684806ae50d1288c9bae9330293ab4e083ccd1c5e383c34549c6e4250", size = 13200444, upload-time = "2025-09-29T23:17:49.341Z" }, + { url = "https://files.pythonhosted.org/packages/10/ae/89b3283800ab58f7af2952704078555fa60c807fff764395bb57ea0b0dbd/pandas-2.3.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:28083c648d9a99a5dd035ec125d42439c6c1c525098c58af0fc38dd1a7a1b3d4", size = 13858459, upload-time = "2025-09-29T23:18:03.722Z" }, + { url = "https://files.pythonhosted.org/packages/85/72/530900610650f54a35a19476eca5104f38555afccda1aa11a92ee14cb21d/pandas-2.3.3-cp310-cp310-win_amd64.whl", hash = "sha256:503cf027cf9940d2ceaa1a93cfb5f8c8c7e6e90720a2850378f0b3f3b1e06826", size = 11346086, upload-time = "2025-09-29T23:18:18.505Z" }, + { url = "https://files.pythonhosted.org/packages/c1/fa/7ac648108144a095b4fb6aa3de1954689f7af60a14cf25583f4960ecb878/pandas-2.3.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:602b8615ebcc4a0c1751e71840428ddebeb142ec02c786e8ad6b1ce3c8dec523", size = 11578790, upload-time = "2025-09-29T23:18:30.065Z" }, + { url = "https://files.pythonhosted.org/packages/9b/35/74442388c6cf008882d4d4bdfc4109be87e9b8b7ccd097ad1e7f006e2e95/pandas-2.3.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:8fe25fc7b623b0ef6b5009149627e34d2a4657e880948ec3c840e9402e5c1b45", size = 10833831, upload-time = "2025-09-29T23:38:56.071Z" }, + { url = "https://files.pythonhosted.org/packages/fe/e4/de154cbfeee13383ad58d23017da99390b91d73f8c11856f2095e813201b/pandas-2.3.3-cp311-cp311-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b468d3dad6ff947df92dcb32ede5b7bd41a9b3cceef0a30ed925f6d01fb8fa66", size = 12199267, upload-time = "2025-09-29T23:18:41.627Z" }, + { url = "https://files.pythonhosted.org/packages/bf/c9/63f8d545568d9ab91476b1818b4741f521646cbdd151c6efebf40d6de6f7/pandas-2.3.3-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b98560e98cb334799c0b07ca7967ac361a47326e9b4e5a7dfb5ab2b1c9d35a1b", size = 12789281, upload-time = "2025-09-29T23:18:56.834Z" }, + { url = "https://files.pythonhosted.org/packages/f2/00/a5ac8c7a0e67fd1a6059e40aa08fa1c52cc00709077d2300e210c3ce0322/pandas-2.3.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:1d37b5848ba49824e5c30bedb9c830ab9b7751fd049bc7914533e01c65f79791", size = 13240453, upload-time = "2025-09-29T23:19:09.247Z" }, + { url = "https://files.pythonhosted.org/packages/27/4d/5c23a5bc7bd209231618dd9e606ce076272c9bc4f12023a70e03a86b4067/pandas-2.3.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:db4301b2d1f926ae677a751eb2bd0e8c5f5319c9cb3f88b0becbbb0b07b34151", size = 13890361, upload-time = "2025-09-29T23:19:25.342Z" }, + { url = "https://files.pythonhosted.org/packages/8e/59/712db1d7040520de7a4965df15b774348980e6df45c129b8c64d0dbe74ef/pandas-2.3.3-cp311-cp311-win_amd64.whl", hash = "sha256:f086f6fe114e19d92014a1966f43a3e62285109afe874f067f5abbdcbb10e59c", size = 11348702, upload-time = "2025-09-29T23:19:38.296Z" }, + { url = "https://files.pythonhosted.org/packages/9c/fb/231d89e8637c808b997d172b18e9d4a4bc7bf31296196c260526055d1ea0/pandas-2.3.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:6d21f6d74eb1725c2efaa71a2bfc661a0689579b58e9c0ca58a739ff0b002b53", size = 11597846, upload-time = "2025-09-29T23:19:48.856Z" }, + { url = "https://files.pythonhosted.org/packages/5c/bd/bf8064d9cfa214294356c2d6702b716d3cf3bb24be59287a6a21e24cae6b/pandas-2.3.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:3fd2f887589c7aa868e02632612ba39acb0b8948faf5cc58f0850e165bd46f35", size = 10729618, upload-time = "2025-09-29T23:39:08.659Z" }, + { url = "https://files.pythonhosted.org/packages/57/56/cf2dbe1a3f5271370669475ead12ce77c61726ffd19a35546e31aa8edf4e/pandas-2.3.3-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ecaf1e12bdc03c86ad4a7ea848d66c685cb6851d807a26aa245ca3d2017a1908", size = 11737212, upload-time = "2025-09-29T23:19:59.765Z" }, + { url = "https://files.pythonhosted.org/packages/e5/63/cd7d615331b328e287d8233ba9fdf191a9c2d11b6af0c7a59cfcec23de68/pandas-2.3.3-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b3d11d2fda7eb164ef27ffc14b4fcab16a80e1ce67e9f57e19ec0afaf715ba89", size = 12362693, upload-time = "2025-09-29T23:20:14.098Z" }, + { url = "https://files.pythonhosted.org/packages/a6/de/8b1895b107277d52f2b42d3a6806e69cfef0d5cf1d0ba343470b9d8e0a04/pandas-2.3.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:a68e15f780eddf2b07d242e17a04aa187a7ee12b40b930bfdd78070556550e98", size = 12771002, upload-time = "2025-09-29T23:20:26.76Z" }, + { url = "https://files.pythonhosted.org/packages/87/21/84072af3187a677c5893b170ba2c8fbe450a6ff911234916da889b698220/pandas-2.3.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:371a4ab48e950033bcf52b6527eccb564f52dc826c02afd9a1bc0ab731bba084", size = 13450971, upload-time = "2025-09-29T23:20:41.344Z" }, + { url = "https://files.pythonhosted.org/packages/86/41/585a168330ff063014880a80d744219dbf1dd7a1c706e75ab3425a987384/pandas-2.3.3-cp312-cp312-win_amd64.whl", hash = "sha256:a16dcec078a01eeef8ee61bf64074b4e524a2a3f4b3be9326420cabe59c4778b", size = 10992722, upload-time = "2025-09-29T23:20:54.139Z" }, + { url = "https://files.pythonhosted.org/packages/cd/4b/18b035ee18f97c1040d94debd8f2e737000ad70ccc8f5513f4eefad75f4b/pandas-2.3.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:56851a737e3470de7fa88e6131f41281ed440d29a9268dcbf0002da5ac366713", size = 11544671, upload-time = "2025-09-29T23:21:05.024Z" }, + { url = "https://files.pythonhosted.org/packages/31/94/72fac03573102779920099bcac1c3b05975c2cb5f01eac609faf34bed1ca/pandas-2.3.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:bdcd9d1167f4885211e401b3036c0c8d9e274eee67ea8d0758a256d60704cfe8", size = 10680807, upload-time = "2025-09-29T23:21:15.979Z" }, + { url = "https://files.pythonhosted.org/packages/16/87/9472cf4a487d848476865321de18cc8c920b8cab98453ab79dbbc98db63a/pandas-2.3.3-cp313-cp313-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e32e7cc9af0f1cc15548288a51a3b681cc2a219faa838e995f7dc53dbab1062d", size = 11709872, upload-time = "2025-09-29T23:21:27.165Z" }, + { url = "https://files.pythonhosted.org/packages/15/07/284f757f63f8a8d69ed4472bfd85122bd086e637bf4ed09de572d575a693/pandas-2.3.3-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:318d77e0e42a628c04dc56bcef4b40de67918f7041c2b061af1da41dcff670ac", size = 12306371, upload-time = "2025-09-29T23:21:40.532Z" }, + { url = "https://files.pythonhosted.org/packages/33/81/a3afc88fca4aa925804a27d2676d22dcd2031c2ebe08aabd0ae55b9ff282/pandas-2.3.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:4e0a175408804d566144e170d0476b15d78458795bb18f1304fb94160cabf40c", size = 12765333, upload-time = "2025-09-29T23:21:55.77Z" }, + { url = "https://files.pythonhosted.org/packages/8d/0f/b4d4ae743a83742f1153464cf1a8ecfafc3ac59722a0b5c8602310cb7158/pandas-2.3.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:93c2d9ab0fc11822b5eece72ec9587e172f63cff87c00b062f6e37448ced4493", size = 13418120, upload-time = "2025-09-29T23:22:10.109Z" }, + { url = "https://files.pythonhosted.org/packages/4f/c7/e54682c96a895d0c808453269e0b5928a07a127a15704fedb643e9b0a4c8/pandas-2.3.3-cp313-cp313-win_amd64.whl", hash = "sha256:f8bfc0e12dc78f777f323f55c58649591b2cd0c43534e8355c51d3fede5f4dee", size = 10993991, upload-time = "2025-09-29T23:25:04.889Z" }, + { url = "https://files.pythonhosted.org/packages/f9/ca/3f8d4f49740799189e1395812f3bf23b5e8fc7c190827d55a610da72ce55/pandas-2.3.3-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:75ea25f9529fdec2d2e93a42c523962261e567d250b0013b16210e1d40d7c2e5", size = 12048227, upload-time = "2025-09-29T23:22:24.343Z" }, + { url = "https://files.pythonhosted.org/packages/0e/5a/f43efec3e8c0cc92c4663ccad372dbdff72b60bdb56b2749f04aa1d07d7e/pandas-2.3.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:74ecdf1d301e812db96a465a525952f4dde225fdb6d8e5a521d47e1f42041e21", size = 11411056, upload-time = "2025-09-29T23:22:37.762Z" }, + { url = "https://files.pythonhosted.org/packages/46/b1/85331edfc591208c9d1a63a06baa67b21d332e63b7a591a5ba42a10bb507/pandas-2.3.3-cp313-cp313t-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6435cb949cb34ec11cc9860246ccb2fdc9ecd742c12d3304989017d53f039a78", size = 11645189, upload-time = "2025-09-29T23:22:51.688Z" }, + { url = "https://files.pythonhosted.org/packages/44/23/78d645adc35d94d1ac4f2a3c4112ab6f5b8999f4898b8cdf01252f8df4a9/pandas-2.3.3-cp313-cp313t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:900f47d8f20860de523a1ac881c4c36d65efcb2eb850e6948140fa781736e110", size = 12121912, upload-time = "2025-09-29T23:23:05.042Z" }, + { url = "https://files.pythonhosted.org/packages/53/da/d10013df5e6aaef6b425aa0c32e1fc1f3e431e4bcabd420517dceadce354/pandas-2.3.3-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:a45c765238e2ed7d7c608fc5bc4a6f88b642f2f01e70c0c23d2224dd21829d86", size = 12712160, upload-time = "2025-09-29T23:23:28.57Z" }, + { url = "https://files.pythonhosted.org/packages/bd/17/e756653095a083d8a37cbd816cb87148debcfcd920129b25f99dd8d04271/pandas-2.3.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:c4fc4c21971a1a9f4bdb4c73978c7f7256caa3e62b323f70d6cb80db583350bc", size = 13199233, upload-time = "2025-09-29T23:24:24.876Z" }, + { url = "https://files.pythonhosted.org/packages/04/fd/74903979833db8390b73b3a8a7d30d146d710bd32703724dd9083950386f/pandas-2.3.3-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:ee15f284898e7b246df8087fc82b87b01686f98ee67d85a17b7ab44143a3a9a0", size = 11540635, upload-time = "2025-09-29T23:25:52.486Z" }, + { url = "https://files.pythonhosted.org/packages/21/00/266d6b357ad5e6d3ad55093a7e8efc7dd245f5a842b584db9f30b0f0a287/pandas-2.3.3-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:1611aedd912e1ff81ff41c745822980c49ce4a7907537be8692c8dbc31924593", size = 10759079, upload-time = "2025-09-29T23:26:33.204Z" }, + { url = "https://files.pythonhosted.org/packages/ca/05/d01ef80a7a3a12b2f8bbf16daba1e17c98a2f039cbc8e2f77a2c5a63d382/pandas-2.3.3-cp314-cp314-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6d2cefc361461662ac48810cb14365a365ce864afe85ef1f447ff5a1e99ea81c", size = 11814049, upload-time = "2025-09-29T23:27:15.384Z" }, + { url = "https://files.pythonhosted.org/packages/15/b2/0e62f78c0c5ba7e3d2c5945a82456f4fac76c480940f805e0b97fcbc2f65/pandas-2.3.3-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ee67acbbf05014ea6c763beb097e03cd629961c8a632075eeb34247120abcb4b", size = 12332638, upload-time = "2025-09-29T23:27:51.625Z" }, + { url = "https://files.pythonhosted.org/packages/c5/33/dd70400631b62b9b29c3c93d2feee1d0964dc2bae2e5ad7a6c73a7f25325/pandas-2.3.3-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:c46467899aaa4da076d5abc11084634e2d197e9460643dd455ac3db5856b24d6", size = 12886834, upload-time = "2025-09-29T23:28:21.289Z" }, + { url = "https://files.pythonhosted.org/packages/d3/18/b5d48f55821228d0d2692b34fd5034bb185e854bdb592e9c640f6290e012/pandas-2.3.3-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:6253c72c6a1d990a410bc7de641d34053364ef8bcd3126f7e7450125887dffe3", size = 13409925, upload-time = "2025-09-29T23:28:58.261Z" }, + { url = "https://files.pythonhosted.org/packages/a6/3d/124ac75fcd0ecc09b8fdccb0246ef65e35b012030defb0e0eba2cbbbe948/pandas-2.3.3-cp314-cp314-win_amd64.whl", hash = "sha256:1b07204a219b3b7350abaae088f451860223a52cfb8a6c53358e7948735158e5", size = 11109071, upload-time = "2025-09-29T23:32:27.484Z" }, + { url = "https://files.pythonhosted.org/packages/89/9c/0e21c895c38a157e0faa1fb64587a9226d6dd46452cac4532d80c3c4a244/pandas-2.3.3-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:2462b1a365b6109d275250baaae7b760fd25c726aaca0054649286bcfbb3e8ec", size = 12048504, upload-time = "2025-09-29T23:29:31.47Z" }, + { url = "https://files.pythonhosted.org/packages/d7/82/b69a1c95df796858777b68fbe6a81d37443a33319761d7c652ce77797475/pandas-2.3.3-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:0242fe9a49aa8b4d78a4fa03acb397a58833ef6199e9aa40a95f027bb3a1b6e7", size = 11410702, upload-time = "2025-09-29T23:29:54.591Z" }, + { url = "https://files.pythonhosted.org/packages/f9/88/702bde3ba0a94b8c73a0181e05144b10f13f29ebfc2150c3a79062a8195d/pandas-2.3.3-cp314-cp314t-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a21d830e78df0a515db2b3d2f5570610f5e6bd2e27749770e8bb7b524b89b450", size = 11634535, upload-time = "2025-09-29T23:30:21.003Z" }, + { url = "https://files.pythonhosted.org/packages/a4/1e/1bac1a839d12e6a82ec6cb40cda2edde64a2013a66963293696bbf31fbbb/pandas-2.3.3-cp314-cp314t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2e3ebdb170b5ef78f19bfb71b0dc5dc58775032361fa188e814959b74d726dd5", size = 12121582, upload-time = "2025-09-29T23:30:43.391Z" }, + { url = "https://files.pythonhosted.org/packages/44/91/483de934193e12a3b1d6ae7c8645d083ff88dec75f46e827562f1e4b4da6/pandas-2.3.3-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:d051c0e065b94b7a3cea50eb1ec32e912cd96dba41647eb24104b6c6c14c5788", size = 12699963, upload-time = "2025-09-29T23:31:10.009Z" }, + { url = "https://files.pythonhosted.org/packages/70/44/5191d2e4026f86a2a109053e194d3ba7a31a2d10a9c2348368c63ed4e85a/pandas-2.3.3-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:3869faf4bd07b3b66a9f462417d0ca3a9df29a9f6abd5d0d0dbab15dac7abe87", size = 13202175, upload-time = "2025-09-29T23:31:59.173Z" }, + { url = "https://files.pythonhosted.org/packages/56/b4/52eeb530a99e2a4c55ffcd352772b599ed4473a0f892d127f4147cf0f88e/pandas-2.3.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:c503ba5216814e295f40711470446bc3fd00f0faea8a086cbc688808e26f92a2", size = 11567720, upload-time = "2025-09-29T23:33:06.209Z" }, + { url = "https://files.pythonhosted.org/packages/48/4a/2d8b67632a021bced649ba940455ed441ca854e57d6e7658a6024587b083/pandas-2.3.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a637c5cdfa04b6d6e2ecedcb81fc52ffb0fd78ce2ebccc9ea964df9f658de8c8", size = 10810302, upload-time = "2025-09-29T23:33:35.846Z" }, + { url = "https://files.pythonhosted.org/packages/13/e6/d2465010ee0569a245c975dc6967b801887068bc893e908239b1f4b6c1ac/pandas-2.3.3-cp39-cp39-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:854d00d556406bffe66a4c0802f334c9ad5a96b4f1f868adf036a21b11ef13ff", size = 12154874, upload-time = "2025-09-29T23:33:49.939Z" }, + { url = "https://files.pythonhosted.org/packages/1f/18/aae8c0aa69a386a3255940e9317f793808ea79d0a525a97a903366bb2569/pandas-2.3.3-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bf1f8a81d04ca90e32a0aceb819d34dbd378a98bf923b6398b9a3ec0bf44de29", size = 12790141, upload-time = "2025-09-29T23:34:05.655Z" }, + { url = "https://files.pythonhosted.org/packages/f7/26/617f98de789de00c2a444fbe6301bb19e66556ac78cff933d2c98f62f2b4/pandas-2.3.3-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:23ebd657a4d38268c7dfbdf089fbc31ea709d82e4923c5ffd4fbd5747133ce73", size = 13208697, upload-time = "2025-09-29T23:34:21.835Z" }, + { url = "https://files.pythonhosted.org/packages/b9/fb/25709afa4552042bd0e15717c75e9b4a2294c3dc4f7e6ea50f03c5136600/pandas-2.3.3-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:5554c929ccc317d41a5e3d1234f3be588248e61f08a74dd17c9eabb535777dc9", size = 13879233, upload-time = "2025-09-29T23:34:35.079Z" }, + { url = "https://files.pythonhosted.org/packages/98/af/7be05277859a7bc399da8ba68b88c96b27b48740b6cf49688899c6eb4176/pandas-2.3.3-cp39-cp39-win_amd64.whl", hash = "sha256:d3e28b3e83862ccf4d85ff19cf8c20b2ae7e503881711ff2d534dc8f761131aa", size = 11359119, upload-time = "2025-09-29T23:34:46.339Z" }, +] + +[[package]] +name = "parso" +version = "0.8.5" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d4/de/53e0bcf53d13e005bd8c92e7855142494f41171b34c2536b86187474184d/parso-0.8.5.tar.gz", hash = "sha256:034d7354a9a018bdce352f48b2a8a450f05e9d6ee85db84764e9b6bd96dafe5a", size = 401205, upload-time = "2025-08-23T15:15:28.028Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/16/32/f8e3c85d1d5250232a5d3477a2a28cc291968ff175caeadaf3cc19ce0e4a/parso-0.8.5-py2.py3-none-any.whl", hash = "sha256:646204b5ee239c396d040b90f9e272e9a8017c630092bf59980beb62fd033887", size = 106668, upload-time = "2025-08-23T15:15:25.663Z" }, +] + +[[package]] +name = "pexpect" +version = "4.9.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "ptyprocess" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/42/92/cc564bf6381ff43ce1f4d06852fc19a2f11d180f23dc32d9588bee2f149d/pexpect-4.9.0.tar.gz", hash = "sha256:ee7d41123f3c9911050ea2c2dac107568dc43b2d3b0c7557a33212c398ead30f", size = 166450, upload-time = "2023-11-25T09:07:26.339Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9e/c3/059298687310d527a58bb01f3b1965787ee3b40dce76752eda8b44e9a2c5/pexpect-4.9.0-py2.py3-none-any.whl", hash = "sha256:7236d1e080e4936be2dc3e326cec0af72acf9212a7e1d060210e70a47e253523", size = 63772, upload-time = "2023-11-25T06:56:14.81Z" }, +] + +[[package]] +name = "pillow" +version = "11.3.0" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version < '3.10'", +] +sdist = { url = "https://files.pythonhosted.org/packages/f3/0d/d0d6dea55cd152ce3d6767bb38a8fc10e33796ba4ba210cbab9354b6d238/pillow-11.3.0.tar.gz", hash = "sha256:3828ee7586cd0b2091b6209e5ad53e20d0649bbe87164a459d0676e035e8f523", size = 47113069, upload-time = "2025-07-01T09:16:30.666Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/4c/5d/45a3553a253ac8763f3561371432a90bdbe6000fbdcf1397ffe502aa206c/pillow-11.3.0-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:1b9c17fd4ace828b3003dfd1e30bff24863e0eb59b535e8f80194d9cc7ecf860", size = 5316554, upload-time = "2025-07-01T09:13:39.342Z" }, + { url = "https://files.pythonhosted.org/packages/7c/c8/67c12ab069ef586a25a4a79ced553586748fad100c77c0ce59bb4983ac98/pillow-11.3.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:65dc69160114cdd0ca0f35cb434633c75e8e7fad4cf855177a05bf38678f73ad", size = 4686548, upload-time = "2025-07-01T09:13:41.835Z" }, + { url = "https://files.pythonhosted.org/packages/2f/bd/6741ebd56263390b382ae4c5de02979af7f8bd9807346d068700dd6d5cf9/pillow-11.3.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:7107195ddc914f656c7fc8e4a5e1c25f32e9236ea3ea860f257b0436011fddd0", size = 5859742, upload-time = "2025-07-03T13:09:47.439Z" }, + { url = "https://files.pythonhosted.org/packages/ca/0b/c412a9e27e1e6a829e6ab6c2dca52dd563efbedf4c9c6aa453d9a9b77359/pillow-11.3.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:cc3e831b563b3114baac7ec2ee86819eb03caa1a2cef0b481a5675b59c4fe23b", size = 7633087, upload-time = "2025-07-03T13:09:51.796Z" }, + { url = "https://files.pythonhosted.org/packages/59/9d/9b7076aaf30f5dd17e5e5589b2d2f5a5d7e30ff67a171eb686e4eecc2adf/pillow-11.3.0-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f1f182ebd2303acf8c380a54f615ec883322593320a9b00438eb842c1f37ae50", size = 5963350, upload-time = "2025-07-01T09:13:43.865Z" }, + { url = "https://files.pythonhosted.org/packages/f0/16/1a6bf01fb622fb9cf5c91683823f073f053005c849b1f52ed613afcf8dae/pillow-11.3.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4445fa62e15936a028672fd48c4c11a66d641d2c05726c7ec1f8ba6a572036ae", size = 6631840, upload-time = "2025-07-01T09:13:46.161Z" }, + { url = "https://files.pythonhosted.org/packages/7b/e6/6ff7077077eb47fde78739e7d570bdcd7c10495666b6afcd23ab56b19a43/pillow-11.3.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:71f511f6b3b91dd543282477be45a033e4845a40278fa8dcdbfdb07109bf18f9", size = 6074005, upload-time = "2025-07-01T09:13:47.829Z" }, + { url = "https://files.pythonhosted.org/packages/c3/3a/b13f36832ea6d279a697231658199e0a03cd87ef12048016bdcc84131601/pillow-11.3.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:040a5b691b0713e1f6cbe222e0f4f74cd233421e105850ae3b3c0ceda520f42e", size = 6708372, upload-time = "2025-07-01T09:13:52.145Z" }, + { url = "https://files.pythonhosted.org/packages/6c/e4/61b2e1a7528740efbc70b3d581f33937e38e98ef3d50b05007267a55bcb2/pillow-11.3.0-cp310-cp310-win32.whl", hash = "sha256:89bd777bc6624fe4115e9fac3352c79ed60f3bb18651420635f26e643e3dd1f6", size = 6277090, upload-time = "2025-07-01T09:13:53.915Z" }, + { url = "https://files.pythonhosted.org/packages/a9/d3/60c781c83a785d6afbd6a326ed4d759d141de43aa7365725cbcd65ce5e54/pillow-11.3.0-cp310-cp310-win_amd64.whl", hash = "sha256:19d2ff547c75b8e3ff46f4d9ef969a06c30ab2d4263a9e287733aa8b2429ce8f", size = 6985988, upload-time = "2025-07-01T09:13:55.699Z" }, + { url = "https://files.pythonhosted.org/packages/9f/28/4f4a0203165eefb3763939c6789ba31013a2e90adffb456610f30f613850/pillow-11.3.0-cp310-cp310-win_arm64.whl", hash = "sha256:819931d25e57b513242859ce1876c58c59dc31587847bf74cfe06b2e0cb22d2f", size = 2422899, upload-time = "2025-07-01T09:13:57.497Z" }, + { url = "https://files.pythonhosted.org/packages/db/26/77f8ed17ca4ffd60e1dcd220a6ec6d71210ba398cfa33a13a1cd614c5613/pillow-11.3.0-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:1cd110edf822773368b396281a2293aeb91c90a2db00d78ea43e7e861631b722", size = 5316531, upload-time = "2025-07-01T09:13:59.203Z" }, + { url = "https://files.pythonhosted.org/packages/cb/39/ee475903197ce709322a17a866892efb560f57900d9af2e55f86db51b0a5/pillow-11.3.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:9c412fddd1b77a75aa904615ebaa6001f169b26fd467b4be93aded278266b288", size = 4686560, upload-time = "2025-07-01T09:14:01.101Z" }, + { url = "https://files.pythonhosted.org/packages/d5/90/442068a160fd179938ba55ec8c97050a612426fae5ec0a764e345839f76d/pillow-11.3.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:7d1aa4de119a0ecac0a34a9c8bde33f34022e2e8f99104e47a3ca392fd60e37d", size = 5870978, upload-time = "2025-07-03T13:09:55.638Z" }, + { url = "https://files.pythonhosted.org/packages/13/92/dcdd147ab02daf405387f0218dcf792dc6dd5b14d2573d40b4caeef01059/pillow-11.3.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:91da1d88226663594e3f6b4b8c3c8d85bd504117d043740a8e0ec449087cc494", size = 7641168, upload-time = "2025-07-03T13:10:00.37Z" }, + { url = "https://files.pythonhosted.org/packages/6e/db/839d6ba7fd38b51af641aa904e2960e7a5644d60ec754c046b7d2aee00e5/pillow-11.3.0-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:643f189248837533073c405ec2f0bb250ba54598cf80e8c1e043381a60632f58", size = 5973053, upload-time = "2025-07-01T09:14:04.491Z" }, + { url = "https://files.pythonhosted.org/packages/f2/2f/d7675ecae6c43e9f12aa8d58b6012683b20b6edfbdac7abcb4e6af7a3784/pillow-11.3.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:106064daa23a745510dabce1d84f29137a37224831d88eb4ce94bb187b1d7e5f", size = 6640273, upload-time = "2025-07-01T09:14:06.235Z" }, + { url = "https://files.pythonhosted.org/packages/45/ad/931694675ede172e15b2ff03c8144a0ddaea1d87adb72bb07655eaffb654/pillow-11.3.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:cd8ff254faf15591e724dc7c4ddb6bf4793efcbe13802a4ae3e863cd300b493e", size = 6082043, upload-time = "2025-07-01T09:14:07.978Z" }, + { url = "https://files.pythonhosted.org/packages/3a/04/ba8f2b11fc80d2dd462d7abec16351b45ec99cbbaea4387648a44190351a/pillow-11.3.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:932c754c2d51ad2b2271fd01c3d121daaa35e27efae2a616f77bf164bc0b3e94", size = 6715516, upload-time = "2025-07-01T09:14:10.233Z" }, + { url = "https://files.pythonhosted.org/packages/48/59/8cd06d7f3944cc7d892e8533c56b0acb68399f640786313275faec1e3b6f/pillow-11.3.0-cp311-cp311-win32.whl", hash = "sha256:b4b8f3efc8d530a1544e5962bd6b403d5f7fe8b9e08227c6b255f98ad82b4ba0", size = 6274768, upload-time = "2025-07-01T09:14:11.921Z" }, + { url = "https://files.pythonhosted.org/packages/f1/cc/29c0f5d64ab8eae20f3232da8f8571660aa0ab4b8f1331da5c2f5f9a938e/pillow-11.3.0-cp311-cp311-win_amd64.whl", hash = "sha256:1a992e86b0dd7aeb1f053cd506508c0999d710a8f07b4c791c63843fc6a807ac", size = 6986055, upload-time = "2025-07-01T09:14:13.623Z" }, + { url = "https://files.pythonhosted.org/packages/c6/df/90bd886fabd544c25addd63e5ca6932c86f2b701d5da6c7839387a076b4a/pillow-11.3.0-cp311-cp311-win_arm64.whl", hash = "sha256:30807c931ff7c095620fe04448e2c2fc673fcbb1ffe2a7da3fb39613489b1ddd", size = 2423079, upload-time = "2025-07-01T09:14:15.268Z" }, + { url = "https://files.pythonhosted.org/packages/40/fe/1bc9b3ee13f68487a99ac9529968035cca2f0a51ec36892060edcc51d06a/pillow-11.3.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:fdae223722da47b024b867c1ea0be64e0df702c5e0a60e27daad39bf960dd1e4", size = 5278800, upload-time = "2025-07-01T09:14:17.648Z" }, + { url = "https://files.pythonhosted.org/packages/2c/32/7e2ac19b5713657384cec55f89065fb306b06af008cfd87e572035b27119/pillow-11.3.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:921bd305b10e82b4d1f5e802b6850677f965d8394203d182f078873851dada69", size = 4686296, upload-time = "2025-07-01T09:14:19.828Z" }, + { url = "https://files.pythonhosted.org/packages/8e/1e/b9e12bbe6e4c2220effebc09ea0923a07a6da1e1f1bfbc8d7d29a01ce32b/pillow-11.3.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:eb76541cba2f958032d79d143b98a3a6b3ea87f0959bbe256c0b5e416599fd5d", size = 5871726, upload-time = "2025-07-03T13:10:04.448Z" }, + { url = "https://files.pythonhosted.org/packages/8d/33/e9200d2bd7ba00dc3ddb78df1198a6e80d7669cce6c2bdbeb2530a74ec58/pillow-11.3.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:67172f2944ebba3d4a7b54f2e95c786a3a50c21b88456329314caaa28cda70f6", size = 7644652, upload-time = "2025-07-03T13:10:10.391Z" }, + { url = "https://files.pythonhosted.org/packages/41/f1/6f2427a26fc683e00d985bc391bdd76d8dd4e92fac33d841127eb8fb2313/pillow-11.3.0-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:97f07ed9f56a3b9b5f49d3661dc9607484e85c67e27f3e8be2c7d28ca032fec7", size = 5977787, upload-time = "2025-07-01T09:14:21.63Z" }, + { url = "https://files.pythonhosted.org/packages/e4/c9/06dd4a38974e24f932ff5f98ea3c546ce3f8c995d3f0985f8e5ba48bba19/pillow-11.3.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:676b2815362456b5b3216b4fd5bd89d362100dc6f4945154ff172e206a22c024", size = 6645236, upload-time = "2025-07-01T09:14:23.321Z" }, + { url = "https://files.pythonhosted.org/packages/40/e7/848f69fb79843b3d91241bad658e9c14f39a32f71a301bcd1d139416d1be/pillow-11.3.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:3e184b2f26ff146363dd07bde8b711833d7b0202e27d13540bfe2e35a323a809", size = 6086950, upload-time = "2025-07-01T09:14:25.237Z" }, + { url = "https://files.pythonhosted.org/packages/0b/1a/7cff92e695a2a29ac1958c2a0fe4c0b2393b60aac13b04a4fe2735cad52d/pillow-11.3.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:6be31e3fc9a621e071bc17bb7de63b85cbe0bfae91bb0363c893cbe67247780d", size = 6723358, upload-time = "2025-07-01T09:14:27.053Z" }, + { url = "https://files.pythonhosted.org/packages/26/7d/73699ad77895f69edff76b0f332acc3d497f22f5d75e5360f78cbcaff248/pillow-11.3.0-cp312-cp312-win32.whl", hash = "sha256:7b161756381f0918e05e7cb8a371fff367e807770f8fe92ecb20d905d0e1c149", size = 6275079, upload-time = "2025-07-01T09:14:30.104Z" }, + { url = "https://files.pythonhosted.org/packages/8c/ce/e7dfc873bdd9828f3b6e5c2bbb74e47a98ec23cc5c74fc4e54462f0d9204/pillow-11.3.0-cp312-cp312-win_amd64.whl", hash = "sha256:a6444696fce635783440b7f7a9fc24b3ad10a9ea3f0ab66c5905be1c19ccf17d", size = 6986324, upload-time = "2025-07-01T09:14:31.899Z" }, + { url = "https://files.pythonhosted.org/packages/16/8f/b13447d1bf0b1f7467ce7d86f6e6edf66c0ad7cf44cf5c87a37f9bed9936/pillow-11.3.0-cp312-cp312-win_arm64.whl", hash = "sha256:2aceea54f957dd4448264f9bf40875da0415c83eb85f55069d89c0ed436e3542", size = 2423067, upload-time = "2025-07-01T09:14:33.709Z" }, + { url = "https://files.pythonhosted.org/packages/1e/93/0952f2ed8db3a5a4c7a11f91965d6184ebc8cd7cbb7941a260d5f018cd2d/pillow-11.3.0-cp313-cp313-ios_13_0_arm64_iphoneos.whl", hash = "sha256:1c627742b539bba4309df89171356fcb3cc5a9178355b2727d1b74a6cf155fbd", size = 2128328, upload-time = "2025-07-01T09:14:35.276Z" }, + { url = "https://files.pythonhosted.org/packages/4b/e8/100c3d114b1a0bf4042f27e0f87d2f25e857e838034e98ca98fe7b8c0a9c/pillow-11.3.0-cp313-cp313-ios_13_0_arm64_iphonesimulator.whl", hash = "sha256:30b7c02f3899d10f13d7a48163c8969e4e653f8b43416d23d13d1bbfdc93b9f8", size = 2170652, upload-time = "2025-07-01T09:14:37.203Z" }, + { url = "https://files.pythonhosted.org/packages/aa/86/3f758a28a6e381758545f7cdb4942e1cb79abd271bea932998fc0db93cb6/pillow-11.3.0-cp313-cp313-ios_13_0_x86_64_iphonesimulator.whl", hash = "sha256:7859a4cc7c9295f5838015d8cc0a9c215b77e43d07a25e460f35cf516df8626f", size = 2227443, upload-time = "2025-07-01T09:14:39.344Z" }, + { url = "https://files.pythonhosted.org/packages/01/f4/91d5b3ffa718df2f53b0dc109877993e511f4fd055d7e9508682e8aba092/pillow-11.3.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:ec1ee50470b0d050984394423d96325b744d55c701a439d2bd66089bff963d3c", size = 5278474, upload-time = "2025-07-01T09:14:41.843Z" }, + { url = "https://files.pythonhosted.org/packages/f9/0e/37d7d3eca6c879fbd9dba21268427dffda1ab00d4eb05b32923d4fbe3b12/pillow-11.3.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:7db51d222548ccfd274e4572fdbf3e810a5e66b00608862f947b163e613b67dd", size = 4686038, upload-time = "2025-07-01T09:14:44.008Z" }, + { url = "https://files.pythonhosted.org/packages/ff/b0/3426e5c7f6565e752d81221af9d3676fdbb4f352317ceafd42899aaf5d8a/pillow-11.3.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:2d6fcc902a24ac74495df63faad1884282239265c6839a0a6416d33faedfae7e", size = 5864407, upload-time = "2025-07-03T13:10:15.628Z" }, + { url = "https://files.pythonhosted.org/packages/fc/c1/c6c423134229f2a221ee53f838d4be9d82bab86f7e2f8e75e47b6bf6cd77/pillow-11.3.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:f0f5d8f4a08090c6d6d578351a2b91acf519a54986c055af27e7a93feae6d3f1", size = 7639094, upload-time = "2025-07-03T13:10:21.857Z" }, + { url = "https://files.pythonhosted.org/packages/ba/c9/09e6746630fe6372c67c648ff9deae52a2bc20897d51fa293571977ceb5d/pillow-11.3.0-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c37d8ba9411d6003bba9e518db0db0c58a680ab9fe5179f040b0463644bc9805", size = 5973503, upload-time = "2025-07-01T09:14:45.698Z" }, + { url = "https://files.pythonhosted.org/packages/d5/1c/a2a29649c0b1983d3ef57ee87a66487fdeb45132df66ab30dd37f7dbe162/pillow-11.3.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:13f87d581e71d9189ab21fe0efb5a23e9f28552d5be6979e84001d3b8505abe8", size = 6642574, upload-time = "2025-07-01T09:14:47.415Z" }, + { url = "https://files.pythonhosted.org/packages/36/de/d5cc31cc4b055b6c6fd990e3e7f0f8aaf36229a2698501bcb0cdf67c7146/pillow-11.3.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:023f6d2d11784a465f09fd09a34b150ea4672e85fb3d05931d89f373ab14abb2", size = 6084060, upload-time = "2025-07-01T09:14:49.636Z" }, + { url = "https://files.pythonhosted.org/packages/d5/ea/502d938cbaeec836ac28a9b730193716f0114c41325db428e6b280513f09/pillow-11.3.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:45dfc51ac5975b938e9809451c51734124e73b04d0f0ac621649821a63852e7b", size = 6721407, upload-time = "2025-07-01T09:14:51.962Z" }, + { url = "https://files.pythonhosted.org/packages/45/9c/9c5e2a73f125f6cbc59cc7087c8f2d649a7ae453f83bd0362ff7c9e2aee2/pillow-11.3.0-cp313-cp313-win32.whl", hash = "sha256:a4d336baed65d50d37b88ca5b60c0fa9d81e3a87d4a7930d3880d1624d5b31f3", size = 6273841, upload-time = "2025-07-01T09:14:54.142Z" }, + { url = "https://files.pythonhosted.org/packages/23/85/397c73524e0cd212067e0c969aa245b01d50183439550d24d9f55781b776/pillow-11.3.0-cp313-cp313-win_amd64.whl", hash = "sha256:0bce5c4fd0921f99d2e858dc4d4d64193407e1b99478bc5cacecba2311abde51", size = 6978450, upload-time = "2025-07-01T09:14:56.436Z" }, + { url = "https://files.pythonhosted.org/packages/17/d2/622f4547f69cd173955194b78e4d19ca4935a1b0f03a302d655c9f6aae65/pillow-11.3.0-cp313-cp313-win_arm64.whl", hash = "sha256:1904e1264881f682f02b7f8167935cce37bc97db457f8e7849dc3a6a52b99580", size = 2423055, upload-time = "2025-07-01T09:14:58.072Z" }, + { url = "https://files.pythonhosted.org/packages/dd/80/a8a2ac21dda2e82480852978416cfacd439a4b490a501a288ecf4fe2532d/pillow-11.3.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:4c834a3921375c48ee6b9624061076bc0a32a60b5532b322cc0ea64e639dd50e", size = 5281110, upload-time = "2025-07-01T09:14:59.79Z" }, + { url = "https://files.pythonhosted.org/packages/44/d6/b79754ca790f315918732e18f82a8146d33bcd7f4494380457ea89eb883d/pillow-11.3.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:5e05688ccef30ea69b9317a9ead994b93975104a677a36a8ed8106be9260aa6d", size = 4689547, upload-time = "2025-07-01T09:15:01.648Z" }, + { url = "https://files.pythonhosted.org/packages/49/20/716b8717d331150cb00f7fdd78169c01e8e0c219732a78b0e59b6bdb2fd6/pillow-11.3.0-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:1019b04af07fc0163e2810167918cb5add8d74674b6267616021ab558dc98ced", size = 5901554, upload-time = "2025-07-03T13:10:27.018Z" }, + { url = "https://files.pythonhosted.org/packages/74/cf/a9f3a2514a65bb071075063a96f0a5cf949c2f2fce683c15ccc83b1c1cab/pillow-11.3.0-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:f944255db153ebb2b19c51fe85dd99ef0ce494123f21b9db4877ffdfc5590c7c", size = 7669132, upload-time = "2025-07-03T13:10:33.01Z" }, + { url = "https://files.pythonhosted.org/packages/98/3c/da78805cbdbee9cb43efe8261dd7cc0b4b93f2ac79b676c03159e9db2187/pillow-11.3.0-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1f85acb69adf2aaee8b7da124efebbdb959a104db34d3a2cb0f3793dbae422a8", size = 6005001, upload-time = "2025-07-01T09:15:03.365Z" }, + { url = "https://files.pythonhosted.org/packages/6c/fa/ce044b91faecf30e635321351bba32bab5a7e034c60187fe9698191aef4f/pillow-11.3.0-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:05f6ecbeff5005399bb48d198f098a9b4b6bdf27b8487c7f38ca16eeb070cd59", size = 6668814, upload-time = "2025-07-01T09:15:05.655Z" }, + { url = "https://files.pythonhosted.org/packages/7b/51/90f9291406d09bf93686434f9183aba27b831c10c87746ff49f127ee80cb/pillow-11.3.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:a7bc6e6fd0395bc052f16b1a8670859964dbd7003bd0af2ff08342eb6e442cfe", size = 6113124, upload-time = "2025-07-01T09:15:07.358Z" }, + { url = "https://files.pythonhosted.org/packages/cd/5a/6fec59b1dfb619234f7636d4157d11fb4e196caeee220232a8d2ec48488d/pillow-11.3.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:83e1b0161c9d148125083a35c1c5a89db5b7054834fd4387499e06552035236c", size = 6747186, upload-time = "2025-07-01T09:15:09.317Z" }, + { url = "https://files.pythonhosted.org/packages/49/6b/00187a044f98255225f172de653941e61da37104a9ea60e4f6887717e2b5/pillow-11.3.0-cp313-cp313t-win32.whl", hash = "sha256:2a3117c06b8fb646639dce83694f2f9eac405472713fcb1ae887469c0d4f6788", size = 6277546, upload-time = "2025-07-01T09:15:11.311Z" }, + { url = "https://files.pythonhosted.org/packages/e8/5c/6caaba7e261c0d75bab23be79f1d06b5ad2a2ae49f028ccec801b0e853d6/pillow-11.3.0-cp313-cp313t-win_amd64.whl", hash = "sha256:857844335c95bea93fb39e0fa2726b4d9d758850b34075a7e3ff4f4fa3aa3b31", size = 6985102, upload-time = "2025-07-01T09:15:13.164Z" }, + { url = "https://files.pythonhosted.org/packages/f3/7e/b623008460c09a0cb38263c93b828c666493caee2eb34ff67f778b87e58c/pillow-11.3.0-cp313-cp313t-win_arm64.whl", hash = "sha256:8797edc41f3e8536ae4b10897ee2f637235c94f27404cac7297f7b607dd0716e", size = 2424803, upload-time = "2025-07-01T09:15:15.695Z" }, + { url = "https://files.pythonhosted.org/packages/73/f4/04905af42837292ed86cb1b1dabe03dce1edc008ef14c473c5c7e1443c5d/pillow-11.3.0-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:d9da3df5f9ea2a89b81bb6087177fb1f4d1c7146d583a3fe5c672c0d94e55e12", size = 5278520, upload-time = "2025-07-01T09:15:17.429Z" }, + { url = "https://files.pythonhosted.org/packages/41/b0/33d79e377a336247df6348a54e6d2a2b85d644ca202555e3faa0cf811ecc/pillow-11.3.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:0b275ff9b04df7b640c59ec5a3cb113eefd3795a8df80bac69646ef699c6981a", size = 4686116, upload-time = "2025-07-01T09:15:19.423Z" }, + { url = "https://files.pythonhosted.org/packages/49/2d/ed8bc0ab219ae8768f529597d9509d184fe8a6c4741a6864fea334d25f3f/pillow-11.3.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:0743841cabd3dba6a83f38a92672cccbd69af56e3e91777b0ee7f4dba4385632", size = 5864597, upload-time = "2025-07-03T13:10:38.404Z" }, + { url = "https://files.pythonhosted.org/packages/b5/3d/b932bb4225c80b58dfadaca9d42d08d0b7064d2d1791b6a237f87f661834/pillow-11.3.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:2465a69cf967b8b49ee1b96d76718cd98c4e925414ead59fdf75cf0fd07df673", size = 7638246, upload-time = "2025-07-03T13:10:44.987Z" }, + { url = "https://files.pythonhosted.org/packages/09/b5/0487044b7c096f1b48f0d7ad416472c02e0e4bf6919541b111efd3cae690/pillow-11.3.0-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:41742638139424703b4d01665b807c6468e23e699e8e90cffefe291c5832b027", size = 5973336, upload-time = "2025-07-01T09:15:21.237Z" }, + { url = "https://files.pythonhosted.org/packages/a8/2d/524f9318f6cbfcc79fbc004801ea6b607ec3f843977652fdee4857a7568b/pillow-11.3.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:93efb0b4de7e340d99057415c749175e24c8864302369e05914682ba642e5d77", size = 6642699, upload-time = "2025-07-01T09:15:23.186Z" }, + { url = "https://files.pythonhosted.org/packages/6f/d2/a9a4f280c6aefedce1e8f615baaa5474e0701d86dd6f1dede66726462bbd/pillow-11.3.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:7966e38dcd0fa11ca390aed7c6f20454443581d758242023cf36fcb319b1a874", size = 6083789, upload-time = "2025-07-01T09:15:25.1Z" }, + { url = "https://files.pythonhosted.org/packages/fe/54/86b0cd9dbb683a9d5e960b66c7379e821a19be4ac5810e2e5a715c09a0c0/pillow-11.3.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:98a9afa7b9007c67ed84c57c9e0ad86a6000da96eaa638e4f8abe5b65ff83f0a", size = 6720386, upload-time = "2025-07-01T09:15:27.378Z" }, + { url = "https://files.pythonhosted.org/packages/e7/95/88efcaf384c3588e24259c4203b909cbe3e3c2d887af9e938c2022c9dd48/pillow-11.3.0-cp314-cp314-win32.whl", hash = "sha256:02a723e6bf909e7cea0dac1b0e0310be9d7650cd66222a5f1c571455c0a45214", size = 6370911, upload-time = "2025-07-01T09:15:29.294Z" }, + { url = "https://files.pythonhosted.org/packages/2e/cc/934e5820850ec5eb107e7b1a72dd278140731c669f396110ebc326f2a503/pillow-11.3.0-cp314-cp314-win_amd64.whl", hash = "sha256:a418486160228f64dd9e9efcd132679b7a02a5f22c982c78b6fc7dab3fefb635", size = 7117383, upload-time = "2025-07-01T09:15:31.128Z" }, + { url = "https://files.pythonhosted.org/packages/d6/e9/9c0a616a71da2a5d163aa37405e8aced9a906d574b4a214bede134e731bc/pillow-11.3.0-cp314-cp314-win_arm64.whl", hash = "sha256:155658efb5e044669c08896c0c44231c5e9abcaadbc5cd3648df2f7c0b96b9a6", size = 2511385, upload-time = "2025-07-01T09:15:33.328Z" }, + { url = "https://files.pythonhosted.org/packages/1a/33/c88376898aff369658b225262cd4f2659b13e8178e7534df9e6e1fa289f6/pillow-11.3.0-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:59a03cdf019efbfeeed910bf79c7c93255c3d54bc45898ac2a4140071b02b4ae", size = 5281129, upload-time = "2025-07-01T09:15:35.194Z" }, + { url = "https://files.pythonhosted.org/packages/1f/70/d376247fb36f1844b42910911c83a02d5544ebd2a8bad9efcc0f707ea774/pillow-11.3.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:f8a5827f84d973d8636e9dc5764af4f0cf2318d26744b3d902931701b0d46653", size = 4689580, upload-time = "2025-07-01T09:15:37.114Z" }, + { url = "https://files.pythonhosted.org/packages/eb/1c/537e930496149fbac69efd2fc4329035bbe2e5475b4165439e3be9cb183b/pillow-11.3.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:ee92f2fd10f4adc4b43d07ec5e779932b4eb3dbfbc34790ada5a6669bc095aa6", size = 5902860, upload-time = "2025-07-03T13:10:50.248Z" }, + { url = "https://files.pythonhosted.org/packages/bd/57/80f53264954dcefeebcf9dae6e3eb1daea1b488f0be8b8fef12f79a3eb10/pillow-11.3.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:c96d333dcf42d01f47b37e0979b6bd73ec91eae18614864622d9b87bbd5bbf36", size = 7670694, upload-time = "2025-07-03T13:10:56.432Z" }, + { url = "https://files.pythonhosted.org/packages/70/ff/4727d3b71a8578b4587d9c276e90efad2d6fe0335fd76742a6da08132e8c/pillow-11.3.0-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4c96f993ab8c98460cd0c001447bff6194403e8b1d7e149ade5f00594918128b", size = 6005888, upload-time = "2025-07-01T09:15:39.436Z" }, + { url = "https://files.pythonhosted.org/packages/05/ae/716592277934f85d3be51d7256f3636672d7b1abfafdc42cf3f8cbd4b4c8/pillow-11.3.0-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:41342b64afeba938edb034d122b2dda5db2139b9a4af999729ba8818e0056477", size = 6670330, upload-time = "2025-07-01T09:15:41.269Z" }, + { url = "https://files.pythonhosted.org/packages/e7/bb/7fe6cddcc8827b01b1a9766f5fdeb7418680744f9082035bdbabecf1d57f/pillow-11.3.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:068d9c39a2d1b358eb9f245ce7ab1b5c3246c7c8c7d9ba58cfa5b43146c06e50", size = 6114089, upload-time = "2025-07-01T09:15:43.13Z" }, + { url = "https://files.pythonhosted.org/packages/8b/f5/06bfaa444c8e80f1a8e4bff98da9c83b37b5be3b1deaa43d27a0db37ef84/pillow-11.3.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:a1bc6ba083b145187f648b667e05a2534ecc4b9f2784c2cbe3089e44868f2b9b", size = 6748206, upload-time = "2025-07-01T09:15:44.937Z" }, + { url = "https://files.pythonhosted.org/packages/f0/77/bc6f92a3e8e6e46c0ca78abfffec0037845800ea38c73483760362804c41/pillow-11.3.0-cp314-cp314t-win32.whl", hash = "sha256:118ca10c0d60b06d006be10a501fd6bbdfef559251ed31b794668ed569c87e12", size = 6377370, upload-time = "2025-07-01T09:15:46.673Z" }, + { url = "https://files.pythonhosted.org/packages/4a/82/3a721f7d69dca802befb8af08b7c79ebcab461007ce1c18bd91a5d5896f9/pillow-11.3.0-cp314-cp314t-win_amd64.whl", hash = "sha256:8924748b688aa210d79883357d102cd64690e56b923a186f35a82cbc10f997db", size = 7121500, upload-time = "2025-07-01T09:15:48.512Z" }, + { url = "https://files.pythonhosted.org/packages/89/c7/5572fa4a3f45740eaab6ae86fcdf7195b55beac1371ac8c619d880cfe948/pillow-11.3.0-cp314-cp314t-win_arm64.whl", hash = "sha256:79ea0d14d3ebad43ec77ad5272e6ff9bba5b679ef73375ea760261207fa8e0aa", size = 2512835, upload-time = "2025-07-01T09:15:50.399Z" }, + { url = "https://files.pythonhosted.org/packages/9e/8e/9c089f01677d1264ab8648352dcb7773f37da6ad002542760c80107da816/pillow-11.3.0-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:48d254f8a4c776de343051023eb61ffe818299eeac478da55227d96e241de53f", size = 5316478, upload-time = "2025-07-01T09:15:52.209Z" }, + { url = "https://files.pythonhosted.org/packages/b5/a9/5749930caf674695867eb56a581e78eb5f524b7583ff10b01b6e5048acb3/pillow-11.3.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:7aee118e30a4cf54fdd873bd3a29de51e29105ab11f9aad8c32123f58c8f8081", size = 4686522, upload-time = "2025-07-01T09:15:54.162Z" }, + { url = "https://files.pythonhosted.org/packages/43/46/0b85b763eb292b691030795f9f6bb6fcaf8948c39413c81696a01c3577f7/pillow-11.3.0-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:23cff760a9049c502721bdb743a7cb3e03365fafcdfc2ef9784610714166e5a4", size = 5853376, upload-time = "2025-07-03T13:11:01.066Z" }, + { url = "https://files.pythonhosted.org/packages/5e/c6/1a230ec0067243cbd60bc2dad5dc3ab46a8a41e21c15f5c9b52b26873069/pillow-11.3.0-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:6359a3bc43f57d5b375d1ad54a0074318a0844d11b76abccf478c37c986d3cfc", size = 7626020, upload-time = "2025-07-03T13:11:06.479Z" }, + { url = "https://files.pythonhosted.org/packages/63/dd/f296c27ffba447bfad76c6a0c44c1ea97a90cb9472b9304c94a732e8dbfb/pillow-11.3.0-cp39-cp39-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:092c80c76635f5ecb10f3f83d76716165c96f5229addbd1ec2bdbbda7d496e06", size = 5956732, upload-time = "2025-07-01T09:15:56.111Z" }, + { url = "https://files.pythonhosted.org/packages/a5/a0/98a3630f0b57f77bae67716562513d3032ae70414fcaf02750279c389a9e/pillow-11.3.0-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:cadc9e0ea0a2431124cde7e1697106471fc4c1da01530e679b2391c37d3fbb3a", size = 6624404, upload-time = "2025-07-01T09:15:58.245Z" }, + { url = "https://files.pythonhosted.org/packages/de/e6/83dfba5646a290edd9a21964da07674409e410579c341fc5b8f7abd81620/pillow-11.3.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:6a418691000f2a418c9135a7cf0d797c1bb7d9a485e61fe8e7722845b95ef978", size = 6067760, upload-time = "2025-07-01T09:16:00.003Z" }, + { url = "https://files.pythonhosted.org/packages/bc/41/15ab268fe6ee9a2bc7391e2bbb20a98d3974304ab1a406a992dcb297a370/pillow-11.3.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:97afb3a00b65cc0804d1c7abddbf090a81eaac02768af58cbdcaaa0a931e0b6d", size = 6700534, upload-time = "2025-07-01T09:16:02.29Z" }, + { url = "https://files.pythonhosted.org/packages/64/79/6d4f638b288300bed727ff29f2a3cb63db054b33518a95f27724915e3fbc/pillow-11.3.0-cp39-cp39-win32.whl", hash = "sha256:ea944117a7974ae78059fcc1800e5d3295172bb97035c0c1d9345fca1419da71", size = 6277091, upload-time = "2025-07-01T09:16:04.4Z" }, + { url = "https://files.pythonhosted.org/packages/46/05/4106422f45a05716fd34ed21763f8ec182e8ea00af6e9cb05b93a247361a/pillow-11.3.0-cp39-cp39-win_amd64.whl", hash = "sha256:e5c5858ad8ec655450a7c7df532e9842cf8df7cc349df7225c60d5d348c8aada", size = 6986091, upload-time = "2025-07-01T09:16:06.342Z" }, + { url = "https://files.pythonhosted.org/packages/63/c6/287fd55c2c12761d0591549d48885187579b7c257bef0c6660755b0b59ae/pillow-11.3.0-cp39-cp39-win_arm64.whl", hash = "sha256:6abdbfd3aea42be05702a8dd98832329c167ee84400a1d1f61ab11437f1717eb", size = 2422632, upload-time = "2025-07-01T09:16:08.142Z" }, + { url = "https://files.pythonhosted.org/packages/6f/8b/209bd6b62ce8367f47e68a218bffac88888fdf2c9fcf1ecadc6c3ec1ebc7/pillow-11.3.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:3cee80663f29e3843b68199b9d6f4f54bd1d4a6b59bdd91bceefc51238bcb967", size = 5270556, upload-time = "2025-07-01T09:16:09.961Z" }, + { url = "https://files.pythonhosted.org/packages/2e/e6/231a0b76070c2cfd9e260a7a5b504fb72da0a95279410fa7afd99d9751d6/pillow-11.3.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:b5f56c3f344f2ccaf0dd875d3e180f631dc60a51b314295a3e681fe8cf851fbe", size = 4654625, upload-time = "2025-07-01T09:16:11.913Z" }, + { url = "https://files.pythonhosted.org/packages/13/f4/10cf94fda33cb12765f2397fc285fa6d8eb9c29de7f3185165b702fc7386/pillow-11.3.0-pp310-pypy310_pp73-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:e67d793d180c9df62f1f40aee3accca4829d3794c95098887edc18af4b8b780c", size = 4874207, upload-time = "2025-07-03T13:11:10.201Z" }, + { url = "https://files.pythonhosted.org/packages/72/c9/583821097dc691880c92892e8e2d41fe0a5a3d6021f4963371d2f6d57250/pillow-11.3.0-pp310-pypy310_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:d000f46e2917c705e9fb93a3606ee4a819d1e3aa7a9b442f6444f07e77cf5e25", size = 6583939, upload-time = "2025-07-03T13:11:15.68Z" }, + { url = "https://files.pythonhosted.org/packages/3b/8e/5c9d410f9217b12320efc7c413e72693f48468979a013ad17fd690397b9a/pillow-11.3.0-pp310-pypy310_pp73-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:527b37216b6ac3a12d7838dc3bd75208ec57c1c6d11ef01902266a5a0c14fc27", size = 4957166, upload-time = "2025-07-01T09:16:13.74Z" }, + { url = "https://files.pythonhosted.org/packages/62/bb/78347dbe13219991877ffb3a91bf09da8317fbfcd4b5f9140aeae020ad71/pillow-11.3.0-pp310-pypy310_pp73-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:be5463ac478b623b9dd3937afd7fb7ab3d79dd290a28e2b6df292dc75063eb8a", size = 5581482, upload-time = "2025-07-01T09:16:16.107Z" }, + { url = "https://files.pythonhosted.org/packages/d9/28/1000353d5e61498aaeaaf7f1e4b49ddb05f2c6575f9d4f9f914a3538b6e1/pillow-11.3.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:8dc70ca24c110503e16918a658b869019126ecfe03109b754c402daff12b3d9f", size = 6984596, upload-time = "2025-07-01T09:16:18.07Z" }, + { url = "https://files.pythonhosted.org/packages/9e/e3/6fa84033758276fb31da12e5fb66ad747ae83b93c67af17f8c6ff4cc8f34/pillow-11.3.0-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:7c8ec7a017ad1bd562f93dbd8505763e688d388cde6e4a010ae1486916e713e6", size = 5270566, upload-time = "2025-07-01T09:16:19.801Z" }, + { url = "https://files.pythonhosted.org/packages/5b/ee/e8d2e1ab4892970b561e1ba96cbd59c0d28cf66737fc44abb2aec3795a4e/pillow-11.3.0-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:9ab6ae226de48019caa8074894544af5b53a117ccb9d3b3dcb2871464c829438", size = 4654618, upload-time = "2025-07-01T09:16:21.818Z" }, + { url = "https://files.pythonhosted.org/packages/f2/6d/17f80f4e1f0761f02160fc433abd4109fa1548dcfdca46cfdadaf9efa565/pillow-11.3.0-pp311-pypy311_pp73-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:fe27fb049cdcca11f11a7bfda64043c37b30e6b91f10cb5bab275806c32f6ab3", size = 4874248, upload-time = "2025-07-03T13:11:20.738Z" }, + { url = "https://files.pythonhosted.org/packages/de/5f/c22340acd61cef960130585bbe2120e2fd8434c214802f07e8c03596b17e/pillow-11.3.0-pp311-pypy311_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:465b9e8844e3c3519a983d58b80be3f668e2a7a5db97f2784e7079fbc9f9822c", size = 6583963, upload-time = "2025-07-03T13:11:26.283Z" }, + { url = "https://files.pythonhosted.org/packages/31/5e/03966aedfbfcbb4d5f8aa042452d3361f325b963ebbadddac05b122e47dd/pillow-11.3.0-pp311-pypy311_pp73-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5418b53c0d59b3824d05e029669efa023bbef0f3e92e75ec8428f3799487f361", size = 4957170, upload-time = "2025-07-01T09:16:23.762Z" }, + { url = "https://files.pythonhosted.org/packages/cc/2d/e082982aacc927fc2cab48e1e731bdb1643a1406acace8bed0900a61464e/pillow-11.3.0-pp311-pypy311_pp73-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:504b6f59505f08ae014f724b6207ff6222662aab5cc9542577fb084ed0676ac7", size = 5581505, upload-time = "2025-07-01T09:16:25.593Z" }, + { url = "https://files.pythonhosted.org/packages/34/e7/ae39f538fd6844e982063c3a5e4598b8ced43b9633baa3a85ef33af8c05c/pillow-11.3.0-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:c84d689db21a1c397d001aa08241044aa2069e7587b398c8cc63020390b1c1b8", size = 6984598, upload-time = "2025-07-01T09:16:27.732Z" }, +] + +[[package]] +name = "pillow" +version = "12.0.0" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version >= '3.12'", + "python_full_version == '3.11.*'", + "python_full_version == '3.10.*'", +] +sdist = { url = "https://files.pythonhosted.org/packages/5a/b0/cace85a1b0c9775a9f8f5d5423c8261c858760e2466c79b2dd184638b056/pillow-12.0.0.tar.gz", hash = "sha256:87d4f8125c9988bfbed67af47dd7a953e2fc7b0cc1e7800ec6d2080d490bb353", size = 47008828, upload-time = "2025-10-15T18:24:14.008Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5d/08/26e68b6b5da219c2a2cb7b563af008b53bb8e6b6fcb3fa40715fcdb2523a/pillow-12.0.0-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:3adfb466bbc544b926d50fe8f4a4e6abd8c6bffd28a26177594e6e9b2b76572b", size = 5289809, upload-time = "2025-10-15T18:21:27.791Z" }, + { url = "https://files.pythonhosted.org/packages/cb/e9/4e58fb097fb74c7b4758a680aacd558810a417d1edaa7000142976ef9d2f/pillow-12.0.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:1ac11e8ea4f611c3c0147424eae514028b5e9077dd99ab91e1bd7bc33ff145e1", size = 4650606, upload-time = "2025-10-15T18:21:29.823Z" }, + { url = "https://files.pythonhosted.org/packages/4b/e0/1fa492aa9f77b3bc6d471c468e62bfea1823056bf7e5e4f1914d7ab2565e/pillow-12.0.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:d49e2314c373f4c2b39446fb1a45ed333c850e09d0c59ac79b72eb3b95397363", size = 6221023, upload-time = "2025-10-15T18:21:31.415Z" }, + { url = "https://files.pythonhosted.org/packages/c1/09/4de7cd03e33734ccd0c876f0251401f1314e819cbfd89a0fcb6e77927cc6/pillow-12.0.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:c7b2a63fd6d5246349f3d3f37b14430d73ee7e8173154461785e43036ffa96ca", size = 8024937, upload-time = "2025-10-15T18:21:33.453Z" }, + { url = "https://files.pythonhosted.org/packages/2e/69/0688e7c1390666592876d9d474f5e135abb4acb39dcb583c4dc5490f1aff/pillow-12.0.0-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d64317d2587c70324b79861babb9c09f71fbb780bad212018874b2c013d8600e", size = 6334139, upload-time = "2025-10-15T18:21:35.395Z" }, + { url = "https://files.pythonhosted.org/packages/ed/1c/880921e98f525b9b44ce747ad1ea8f73fd7e992bafe3ca5e5644bf433dea/pillow-12.0.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d77153e14b709fd8b8af6f66a3afbb9ed6e9fc5ccf0b6b7e1ced7b036a228782", size = 7026074, upload-time = "2025-10-15T18:21:37.219Z" }, + { url = "https://files.pythonhosted.org/packages/28/03/96f718331b19b355610ef4ebdbbde3557c726513030665071fd025745671/pillow-12.0.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:32ed80ea8a90ee3e6fa08c21e2e091bba6eda8eccc83dbc34c95169507a91f10", size = 6448852, upload-time = "2025-10-15T18:21:39.168Z" }, + { url = "https://files.pythonhosted.org/packages/3a/a0/6a193b3f0cc9437b122978d2c5cbce59510ccf9a5b48825096ed7472da2f/pillow-12.0.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:c828a1ae702fc712978bda0320ba1b9893d99be0badf2647f693cc01cf0f04fa", size = 7117058, upload-time = "2025-10-15T18:21:40.997Z" }, + { url = "https://files.pythonhosted.org/packages/a7/c4/043192375eaa4463254e8e61f0e2ec9a846b983929a8d0a7122e0a6d6fff/pillow-12.0.0-cp310-cp310-win32.whl", hash = "sha256:bd87e140e45399c818fac4247880b9ce719e4783d767e030a883a970be632275", size = 6295431, upload-time = "2025-10-15T18:21:42.518Z" }, + { url = "https://files.pythonhosted.org/packages/92/c6/c2f2fc7e56301c21827e689bb8b0b465f1b52878b57471a070678c0c33cd/pillow-12.0.0-cp310-cp310-win_amd64.whl", hash = "sha256:455247ac8a4cfb7b9bc45b7e432d10421aea9fc2e74d285ba4072688a74c2e9d", size = 7000412, upload-time = "2025-10-15T18:21:44.404Z" }, + { url = "https://files.pythonhosted.org/packages/b2/d2/5f675067ba82da7a1c238a73b32e3fd78d67f9d9f80fbadd33a40b9c0481/pillow-12.0.0-cp310-cp310-win_arm64.whl", hash = "sha256:6ace95230bfb7cd79ef66caa064bbe2f2a1e63d93471c3a2e1f1348d9f22d6b7", size = 2435903, upload-time = "2025-10-15T18:21:46.29Z" }, + { url = "https://files.pythonhosted.org/packages/0e/5a/a2f6773b64edb921a756eb0729068acad9fc5208a53f4a349396e9436721/pillow-12.0.0-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:0fd00cac9c03256c8b2ff58f162ebcd2587ad3e1f2e397eab718c47e24d231cc", size = 5289798, upload-time = "2025-10-15T18:21:47.763Z" }, + { url = "https://files.pythonhosted.org/packages/2e/05/069b1f8a2e4b5a37493da6c5868531c3f77b85e716ad7a590ef87d58730d/pillow-12.0.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:a3475b96f5908b3b16c47533daaa87380c491357d197564e0ba34ae75c0f3257", size = 4650589, upload-time = "2025-10-15T18:21:49.515Z" }, + { url = "https://files.pythonhosted.org/packages/61/e3/2c820d6e9a36432503ead175ae294f96861b07600a7156154a086ba7111a/pillow-12.0.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:110486b79f2d112cf6add83b28b627e369219388f64ef2f960fef9ebaf54c642", size = 6230472, upload-time = "2025-10-15T18:21:51.052Z" }, + { url = "https://files.pythonhosted.org/packages/4f/89/63427f51c64209c5e23d4d52071c8d0f21024d3a8a487737caaf614a5795/pillow-12.0.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:5269cc1caeedb67e6f7269a42014f381f45e2e7cd42d834ede3c703a1d915fe3", size = 8033887, upload-time = "2025-10-15T18:21:52.604Z" }, + { url = "https://files.pythonhosted.org/packages/f6/1b/c9711318d4901093c15840f268ad649459cd81984c9ec9887756cca049a5/pillow-12.0.0-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:aa5129de4e174daccbc59d0a3b6d20eaf24417d59851c07ebb37aeb02947987c", size = 6343964, upload-time = "2025-10-15T18:21:54.619Z" }, + { url = "https://files.pythonhosted.org/packages/41/1e/db9470f2d030b4995083044cd8738cdd1bf773106819f6d8ba12597d5352/pillow-12.0.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bee2a6db3a7242ea309aa7ee8e2780726fed67ff4e5b40169f2c940e7eb09227", size = 7034756, upload-time = "2025-10-15T18:21:56.151Z" }, + { url = "https://files.pythonhosted.org/packages/cc/b0/6177a8bdd5ee4ed87cba2de5a3cc1db55ffbbec6176784ce5bb75aa96798/pillow-12.0.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:90387104ee8400a7b4598253b4c406f8958f59fcf983a6cea2b50d59f7d63d0b", size = 6458075, upload-time = "2025-10-15T18:21:57.759Z" }, + { url = "https://files.pythonhosted.org/packages/bc/5e/61537aa6fa977922c6a03253a0e727e6e4a72381a80d63ad8eec350684f2/pillow-12.0.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:bc91a56697869546d1b8f0a3ff35224557ae7f881050e99f615e0119bf934b4e", size = 7125955, upload-time = "2025-10-15T18:21:59.372Z" }, + { url = "https://files.pythonhosted.org/packages/1f/3d/d5033539344ee3cbd9a4d69e12e63ca3a44a739eb2d4c8da350a3d38edd7/pillow-12.0.0-cp311-cp311-win32.whl", hash = "sha256:27f95b12453d165099c84f8a8bfdfd46b9e4bda9e0e4b65f0635430027f55739", size = 6298440, upload-time = "2025-10-15T18:22:00.982Z" }, + { url = "https://files.pythonhosted.org/packages/4d/42/aaca386de5cc8bd8a0254516957c1f265e3521c91515b16e286c662854c4/pillow-12.0.0-cp311-cp311-win_amd64.whl", hash = "sha256:b583dc9070312190192631373c6c8ed277254aa6e6084b74bdd0a6d3b221608e", size = 6999256, upload-time = "2025-10-15T18:22:02.617Z" }, + { url = "https://files.pythonhosted.org/packages/ba/f1/9197c9c2d5708b785f631a6dfbfa8eb3fb9672837cb92ae9af812c13b4ed/pillow-12.0.0-cp311-cp311-win_arm64.whl", hash = "sha256:759de84a33be3b178a64c8ba28ad5c135900359e85fb662bc6e403ad4407791d", size = 2436025, upload-time = "2025-10-15T18:22:04.598Z" }, + { url = "https://files.pythonhosted.org/packages/2c/90/4fcce2c22caf044e660a198d740e7fbc14395619e3cb1abad12192c0826c/pillow-12.0.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:53561a4ddc36facb432fae7a9d8afbfaf94795414f5cdc5fc52f28c1dca90371", size = 5249377, upload-time = "2025-10-15T18:22:05.993Z" }, + { url = "https://files.pythonhosted.org/packages/fd/e0/ed960067543d080691d47d6938ebccbf3976a931c9567ab2fbfab983a5dd/pillow-12.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:71db6b4c1653045dacc1585c1b0d184004f0d7e694c7b34ac165ca70c0838082", size = 4650343, upload-time = "2025-10-15T18:22:07.718Z" }, + { url = "https://files.pythonhosted.org/packages/e7/a1/f81fdeddcb99c044bf7d6faa47e12850f13cee0849537a7d27eeab5534d4/pillow-12.0.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:2fa5f0b6716fc88f11380b88b31fe591a06c6315e955c096c35715788b339e3f", size = 6232981, upload-time = "2025-10-15T18:22:09.287Z" }, + { url = "https://files.pythonhosted.org/packages/88/e1/9098d3ce341a8750b55b0e00c03f1630d6178f38ac191c81c97a3b047b44/pillow-12.0.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:82240051c6ca513c616f7f9da06e871f61bfd7805f566275841af15015b8f98d", size = 8041399, upload-time = "2025-10-15T18:22:10.872Z" }, + { url = "https://files.pythonhosted.org/packages/a7/62/a22e8d3b602ae8cc01446d0c57a54e982737f44b6f2e1e019a925143771d/pillow-12.0.0-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:55f818bd74fe2f11d4d7cbc65880a843c4075e0ac7226bc1a23261dbea531953", size = 6347740, upload-time = "2025-10-15T18:22:12.769Z" }, + { url = "https://files.pythonhosted.org/packages/4f/87/424511bdcd02c8d7acf9f65caa09f291a519b16bd83c3fb3374b3d4ae951/pillow-12.0.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b87843e225e74576437fd5b6a4c2205d422754f84a06942cfaf1dc32243e45a8", size = 7040201, upload-time = "2025-10-15T18:22:14.813Z" }, + { url = "https://files.pythonhosted.org/packages/dc/4d/435c8ac688c54d11755aedfdd9f29c9eeddf68d150fe42d1d3dbd2365149/pillow-12.0.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:c607c90ba67533e1b2355b821fef6764d1dd2cbe26b8c1005ae84f7aea25ff79", size = 6462334, upload-time = "2025-10-15T18:22:16.375Z" }, + { url = "https://files.pythonhosted.org/packages/2b/f2/ad34167a8059a59b8ad10bc5c72d4d9b35acc6b7c0877af8ac885b5f2044/pillow-12.0.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:21f241bdd5080a15bc86d3466a9f6074a9c2c2b314100dd896ac81ee6db2f1ba", size = 7134162, upload-time = "2025-10-15T18:22:17.996Z" }, + { url = "https://files.pythonhosted.org/packages/0c/b1/a7391df6adacf0a5c2cf6ac1cf1fcc1369e7d439d28f637a847f8803beb3/pillow-12.0.0-cp312-cp312-win32.whl", hash = "sha256:dd333073e0cacdc3089525c7df7d39b211bcdf31fc2824e49d01c6b6187b07d0", size = 6298769, upload-time = "2025-10-15T18:22:19.923Z" }, + { url = "https://files.pythonhosted.org/packages/a2/0b/d87733741526541c909bbf159e338dcace4f982daac6e5a8d6be225ca32d/pillow-12.0.0-cp312-cp312-win_amd64.whl", hash = "sha256:9fe611163f6303d1619bbcb653540a4d60f9e55e622d60a3108be0d5b441017a", size = 7001107, upload-time = "2025-10-15T18:22:21.644Z" }, + { url = "https://files.pythonhosted.org/packages/bc/96/aaa61ce33cc98421fb6088af2a03be4157b1e7e0e87087c888e2370a7f45/pillow-12.0.0-cp312-cp312-win_arm64.whl", hash = "sha256:7dfb439562f234f7d57b1ac6bc8fe7f838a4bd49c79230e0f6a1da93e82f1fad", size = 2436012, upload-time = "2025-10-15T18:22:23.621Z" }, + { url = "https://files.pythonhosted.org/packages/62/f2/de993bb2d21b33a98d031ecf6a978e4b61da207bef02f7b43093774c480d/pillow-12.0.0-cp313-cp313-ios_13_0_arm64_iphoneos.whl", hash = "sha256:0869154a2d0546545cde61d1789a6524319fc1897d9ee31218eae7a60ccc5643", size = 4045493, upload-time = "2025-10-15T18:22:25.758Z" }, + { url = "https://files.pythonhosted.org/packages/0e/b6/bc8d0c4c9f6f111a783d045310945deb769b806d7574764234ffd50bc5ea/pillow-12.0.0-cp313-cp313-ios_13_0_arm64_iphonesimulator.whl", hash = "sha256:a7921c5a6d31b3d756ec980f2f47c0cfdbce0fc48c22a39347a895f41f4a6ea4", size = 4120461, upload-time = "2025-10-15T18:22:27.286Z" }, + { url = "https://files.pythonhosted.org/packages/5d/57/d60d343709366a353dc56adb4ee1e7d8a2cc34e3fbc22905f4167cfec119/pillow-12.0.0-cp313-cp313-ios_13_0_x86_64_iphonesimulator.whl", hash = "sha256:1ee80a59f6ce048ae13cda1abf7fbd2a34ab9ee7d401c46be3ca685d1999a399", size = 3576912, upload-time = "2025-10-15T18:22:28.751Z" }, + { url = "https://files.pythonhosted.org/packages/a4/a4/a0a31467e3f83b94d37568294b01d22b43ae3c5d85f2811769b9c66389dd/pillow-12.0.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:c50f36a62a22d350c96e49ad02d0da41dbd17ddc2e29750dbdba4323f85eb4a5", size = 5249132, upload-time = "2025-10-15T18:22:30.641Z" }, + { url = "https://files.pythonhosted.org/packages/83/06/48eab21dd561de2914242711434c0c0eb992ed08ff3f6107a5f44527f5e9/pillow-12.0.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:5193fde9a5f23c331ea26d0cf171fbf67e3f247585f50c08b3e205c7aeb4589b", size = 4650099, upload-time = "2025-10-15T18:22:32.73Z" }, + { url = "https://files.pythonhosted.org/packages/fc/bd/69ed99fd46a8dba7c1887156d3572fe4484e3f031405fcc5a92e31c04035/pillow-12.0.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:bde737cff1a975b70652b62d626f7785e0480918dece11e8fef3c0cf057351c3", size = 6230808, upload-time = "2025-10-15T18:22:34.337Z" }, + { url = "https://files.pythonhosted.org/packages/ea/94/8fad659bcdbf86ed70099cb60ae40be6acca434bbc8c4c0d4ef356d7e0de/pillow-12.0.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:a6597ff2b61d121172f5844b53f21467f7082f5fb385a9a29c01414463f93b07", size = 8037804, upload-time = "2025-10-15T18:22:36.402Z" }, + { url = "https://files.pythonhosted.org/packages/20/39/c685d05c06deecfd4e2d1950e9a908aa2ca8bc4e6c3b12d93b9cafbd7837/pillow-12.0.0-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0b817e7035ea7f6b942c13aa03bb554fc44fea70838ea21f8eb31c638326584e", size = 6345553, upload-time = "2025-10-15T18:22:38.066Z" }, + { url = "https://files.pythonhosted.org/packages/38/57/755dbd06530a27a5ed74f8cb0a7a44a21722ebf318edbe67ddbd7fb28f88/pillow-12.0.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f4f1231b7dec408e8670264ce63e9c71409d9583dd21d32c163e25213ee2a344", size = 7037729, upload-time = "2025-10-15T18:22:39.769Z" }, + { url = "https://files.pythonhosted.org/packages/ca/b6/7e94f4c41d238615674d06ed677c14883103dce1c52e4af16f000338cfd7/pillow-12.0.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:6e51b71417049ad6ab14c49608b4a24d8fb3fe605e5dfabfe523b58064dc3d27", size = 6459789, upload-time = "2025-10-15T18:22:41.437Z" }, + { url = "https://files.pythonhosted.org/packages/9c/14/4448bb0b5e0f22dd865290536d20ec8a23b64e2d04280b89139f09a36bb6/pillow-12.0.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:d120c38a42c234dc9a8c5de7ceaaf899cf33561956acb4941653f8bdc657aa79", size = 7130917, upload-time = "2025-10-15T18:22:43.152Z" }, + { url = "https://files.pythonhosted.org/packages/dd/ca/16c6926cc1c015845745d5c16c9358e24282f1e588237a4c36d2b30f182f/pillow-12.0.0-cp313-cp313-win32.whl", hash = "sha256:4cc6b3b2efff105c6a1656cfe59da4fdde2cda9af1c5e0b58529b24525d0a098", size = 6302391, upload-time = "2025-10-15T18:22:44.753Z" }, + { url = "https://files.pythonhosted.org/packages/6d/2a/dd43dcfd6dae9b6a49ee28a8eedb98c7d5ff2de94a5d834565164667b97b/pillow-12.0.0-cp313-cp313-win_amd64.whl", hash = "sha256:4cf7fed4b4580601c4345ceb5d4cbf5a980d030fd5ad07c4d2ec589f95f09905", size = 7007477, upload-time = "2025-10-15T18:22:46.838Z" }, + { url = "https://files.pythonhosted.org/packages/77/f0/72ea067f4b5ae5ead653053212af05ce3705807906ba3f3e8f58ddf617e6/pillow-12.0.0-cp313-cp313-win_arm64.whl", hash = "sha256:9f0b04c6b8584c2c193babcccc908b38ed29524b29dd464bc8801bf10d746a3a", size = 2435918, upload-time = "2025-10-15T18:22:48.399Z" }, + { url = "https://files.pythonhosted.org/packages/f5/5e/9046b423735c21f0487ea6cb5b10f89ea8f8dfbe32576fe052b5ba9d4e5b/pillow-12.0.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:7fa22993bac7b77b78cae22bad1e2a987ddf0d9015c63358032f84a53f23cdc3", size = 5251406, upload-time = "2025-10-15T18:22:49.905Z" }, + { url = "https://files.pythonhosted.org/packages/12/66/982ceebcdb13c97270ef7a56c3969635b4ee7cd45227fa707c94719229c5/pillow-12.0.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:f135c702ac42262573fe9714dfe99c944b4ba307af5eb507abef1667e2cbbced", size = 4653218, upload-time = "2025-10-15T18:22:51.587Z" }, + { url = "https://files.pythonhosted.org/packages/16/b3/81e625524688c31859450119bf12674619429cab3119eec0e30a7a1029cb/pillow-12.0.0-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:c85de1136429c524e55cfa4e033b4a7940ac5c8ee4d9401cc2d1bf48154bbc7b", size = 6266564, upload-time = "2025-10-15T18:22:53.215Z" }, + { url = "https://files.pythonhosted.org/packages/98/59/dfb38f2a41240d2408096e1a76c671d0a105a4a8471b1871c6902719450c/pillow-12.0.0-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:38df9b4bfd3db902c9c2bd369bcacaf9d935b2fff73709429d95cc41554f7b3d", size = 8069260, upload-time = "2025-10-15T18:22:54.933Z" }, + { url = "https://files.pythonhosted.org/packages/dc/3d/378dbea5cd1874b94c312425ca77b0f47776c78e0df2df751b820c8c1d6c/pillow-12.0.0-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:7d87ef5795da03d742bf49439f9ca4d027cde49c82c5371ba52464aee266699a", size = 6379248, upload-time = "2025-10-15T18:22:56.605Z" }, + { url = "https://files.pythonhosted.org/packages/84/b0/d525ef47d71590f1621510327acec75ae58c721dc071b17d8d652ca494d8/pillow-12.0.0-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:aff9e4d82d082ff9513bdd6acd4f5bd359f5b2c870907d2b0a9c5e10d40c88fe", size = 7066043, upload-time = "2025-10-15T18:22:58.53Z" }, + { url = "https://files.pythonhosted.org/packages/61/2c/aced60e9cf9d0cde341d54bf7932c9ffc33ddb4a1595798b3a5150c7ec4e/pillow-12.0.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:8d8ca2b210ada074d57fcee40c30446c9562e542fc46aedc19baf758a93532ee", size = 6490915, upload-time = "2025-10-15T18:23:00.582Z" }, + { url = "https://files.pythonhosted.org/packages/ef/26/69dcb9b91f4e59f8f34b2332a4a0a951b44f547c4ed39d3e4dcfcff48f89/pillow-12.0.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:99a7f72fb6249302aa62245680754862a44179b545ded638cf1fef59befb57ef", size = 7157998, upload-time = "2025-10-15T18:23:02.627Z" }, + { url = "https://files.pythonhosted.org/packages/61/2b/726235842220ca95fa441ddf55dd2382b52ab5b8d9c0596fe6b3f23dafe8/pillow-12.0.0-cp313-cp313t-win32.whl", hash = "sha256:4078242472387600b2ce8d93ade8899c12bf33fa89e55ec89fe126e9d6d5d9e9", size = 6306201, upload-time = "2025-10-15T18:23:04.709Z" }, + { url = "https://files.pythonhosted.org/packages/c0/3d/2afaf4e840b2df71344ababf2f8edd75a705ce500e5dc1e7227808312ae1/pillow-12.0.0-cp313-cp313t-win_amd64.whl", hash = "sha256:2c54c1a783d6d60595d3514f0efe9b37c8808746a66920315bfd34a938d7994b", size = 7013165, upload-time = "2025-10-15T18:23:06.46Z" }, + { url = "https://files.pythonhosted.org/packages/6f/75/3fa09aa5cf6ed04bee3fa575798ddf1ce0bace8edb47249c798077a81f7f/pillow-12.0.0-cp313-cp313t-win_arm64.whl", hash = "sha256:26d9f7d2b604cd23aba3e9faf795787456ac25634d82cd060556998e39c6fa47", size = 2437834, upload-time = "2025-10-15T18:23:08.194Z" }, + { url = "https://files.pythonhosted.org/packages/54/2a/9a8c6ba2c2c07b71bec92cf63e03370ca5e5f5c5b119b742bcc0cde3f9c5/pillow-12.0.0-cp314-cp314-ios_13_0_arm64_iphoneos.whl", hash = "sha256:beeae3f27f62308f1ddbcfb0690bf44b10732f2ef43758f169d5e9303165d3f9", size = 4045531, upload-time = "2025-10-15T18:23:10.121Z" }, + { url = "https://files.pythonhosted.org/packages/84/54/836fdbf1bfb3d66a59f0189ff0b9f5f666cee09c6188309300df04ad71fa/pillow-12.0.0-cp314-cp314-ios_13_0_arm64_iphonesimulator.whl", hash = "sha256:d4827615da15cd59784ce39d3388275ec093ae3ee8d7f0c089b76fa87af756c2", size = 4120554, upload-time = "2025-10-15T18:23:12.14Z" }, + { url = "https://files.pythonhosted.org/packages/0d/cd/16aec9f0da4793e98e6b54778a5fbce4f375c6646fe662e80600b8797379/pillow-12.0.0-cp314-cp314-ios_13_0_x86_64_iphonesimulator.whl", hash = "sha256:3e42edad50b6909089750e65c91aa09aaf1e0a71310d383f11321b27c224ed8a", size = 3576812, upload-time = "2025-10-15T18:23:13.962Z" }, + { url = "https://files.pythonhosted.org/packages/f6/b7/13957fda356dc46339298b351cae0d327704986337c3c69bb54628c88155/pillow-12.0.0-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:e5d8efac84c9afcb40914ab49ba063d94f5dbdf5066db4482c66a992f47a3a3b", size = 5252689, upload-time = "2025-10-15T18:23:15.562Z" }, + { url = "https://files.pythonhosted.org/packages/fc/f5/eae31a306341d8f331f43edb2e9122c7661b975433de5e447939ae61c5da/pillow-12.0.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:266cd5f2b63ff316d5a1bba46268e603c9caf5606d44f38c2873c380950576ad", size = 4650186, upload-time = "2025-10-15T18:23:17.379Z" }, + { url = "https://files.pythonhosted.org/packages/86/62/2a88339aa40c4c77e79108facbd307d6091e2c0eb5b8d3cf4977cfca2fe6/pillow-12.0.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:58eea5ebe51504057dd95c5b77d21700b77615ab0243d8152793dc00eb4faf01", size = 6230308, upload-time = "2025-10-15T18:23:18.971Z" }, + { url = "https://files.pythonhosted.org/packages/c7/33/5425a8992bcb32d1cb9fa3dd39a89e613d09a22f2c8083b7bf43c455f760/pillow-12.0.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:f13711b1a5ba512d647a0e4ba79280d3a9a045aaf7e0cc6fbe96b91d4cdf6b0c", size = 8039222, upload-time = "2025-10-15T18:23:20.909Z" }, + { url = "https://files.pythonhosted.org/packages/d8/61/3f5d3b35c5728f37953d3eec5b5f3e77111949523bd2dd7f31a851e50690/pillow-12.0.0-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6846bd2d116ff42cba6b646edf5bf61d37e5cbd256425fa089fee4ff5c07a99e", size = 6346657, upload-time = "2025-10-15T18:23:23.077Z" }, + { url = "https://files.pythonhosted.org/packages/3a/be/ee90a3d79271227e0f0a33c453531efd6ed14b2e708596ba5dd9be948da3/pillow-12.0.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c98fa880d695de164b4135a52fd2e9cd7b7c90a9d8ac5e9e443a24a95ef9248e", size = 7038482, upload-time = "2025-10-15T18:23:25.005Z" }, + { url = "https://files.pythonhosted.org/packages/44/34/a16b6a4d1ad727de390e9bd9f19f5f669e079e5826ec0f329010ddea492f/pillow-12.0.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:fa3ed2a29a9e9d2d488b4da81dcb54720ac3104a20bf0bd273f1e4648aff5af9", size = 6461416, upload-time = "2025-10-15T18:23:27.009Z" }, + { url = "https://files.pythonhosted.org/packages/b6/39/1aa5850d2ade7d7ba9f54e4e4c17077244ff7a2d9e25998c38a29749eb3f/pillow-12.0.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:d034140032870024e6b9892c692fe2968493790dd57208b2c37e3fb35f6df3ab", size = 7131584, upload-time = "2025-10-15T18:23:29.752Z" }, + { url = "https://files.pythonhosted.org/packages/bf/db/4fae862f8fad0167073a7733973bfa955f47e2cac3dc3e3e6257d10fab4a/pillow-12.0.0-cp314-cp314-win32.whl", hash = "sha256:1b1b133e6e16105f524a8dec491e0586d072948ce15c9b914e41cdadd209052b", size = 6400621, upload-time = "2025-10-15T18:23:32.06Z" }, + { url = "https://files.pythonhosted.org/packages/2b/24/b350c31543fb0107ab2599464d7e28e6f856027aadda995022e695313d94/pillow-12.0.0-cp314-cp314-win_amd64.whl", hash = "sha256:8dc232e39d409036af549c86f24aed8273a40ffa459981146829a324e0848b4b", size = 7142916, upload-time = "2025-10-15T18:23:34.71Z" }, + { url = "https://files.pythonhosted.org/packages/0f/9b/0ba5a6fd9351793996ef7487c4fdbde8d3f5f75dbedc093bb598648fddf0/pillow-12.0.0-cp314-cp314-win_arm64.whl", hash = "sha256:d52610d51e265a51518692045e372a4c363056130d922a7351429ac9f27e70b0", size = 2523836, upload-time = "2025-10-15T18:23:36.967Z" }, + { url = "https://files.pythonhosted.org/packages/f5/7a/ceee0840aebc579af529b523d530840338ecf63992395842e54edc805987/pillow-12.0.0-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:1979f4566bb96c1e50a62d9831e2ea2d1211761e5662afc545fa766f996632f6", size = 5255092, upload-time = "2025-10-15T18:23:38.573Z" }, + { url = "https://files.pythonhosted.org/packages/44/76/20776057b4bfd1aef4eeca992ebde0f53a4dce874f3ae693d0ec90a4f79b/pillow-12.0.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:b2e4b27a6e15b04832fe9bf292b94b5ca156016bbc1ea9c2c20098a0320d6cf6", size = 4653158, upload-time = "2025-10-15T18:23:40.238Z" }, + { url = "https://files.pythonhosted.org/packages/82/3f/d9ff92ace07be8836b4e7e87e6a4c7a8318d47c2f1463ffcf121fc57d9cb/pillow-12.0.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:fb3096c30df99fd01c7bf8e544f392103d0795b9f98ba71a8054bcbf56b255f1", size = 6267882, upload-time = "2025-10-15T18:23:42.434Z" }, + { url = "https://files.pythonhosted.org/packages/9f/7a/4f7ff87f00d3ad33ba21af78bfcd2f032107710baf8280e3722ceec28cda/pillow-12.0.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:7438839e9e053ef79f7112c881cef684013855016f928b168b81ed5835f3e75e", size = 8071001, upload-time = "2025-10-15T18:23:44.29Z" }, + { url = "https://files.pythonhosted.org/packages/75/87/fcea108944a52dad8cca0715ae6247e271eb80459364a98518f1e4f480c1/pillow-12.0.0-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5d5c411a8eaa2299322b647cd932586b1427367fd3184ffbb8f7a219ea2041ca", size = 6380146, upload-time = "2025-10-15T18:23:46.065Z" }, + { url = "https://files.pythonhosted.org/packages/91/52/0d31b5e571ef5fd111d2978b84603fce26aba1b6092f28e941cb46570745/pillow-12.0.0-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d7e091d464ac59d2c7ad8e7e08105eaf9dafbc3883fd7265ffccc2baad6ac925", size = 7067344, upload-time = "2025-10-15T18:23:47.898Z" }, + { url = "https://files.pythonhosted.org/packages/7b/f4/2dd3d721f875f928d48e83bb30a434dee75a2531bca839bb996bb0aa5a91/pillow-12.0.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:792a2c0be4dcc18af9d4a2dfd8a11a17d5e25274a1062b0ec1c2d79c76f3e7f8", size = 6491864, upload-time = "2025-10-15T18:23:49.607Z" }, + { url = "https://files.pythonhosted.org/packages/30/4b/667dfcf3d61fc309ba5a15b141845cece5915e39b99c1ceab0f34bf1d124/pillow-12.0.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:afbefa430092f71a9593a99ab6a4e7538bc9eabbf7bf94f91510d3503943edc4", size = 7158911, upload-time = "2025-10-15T18:23:51.351Z" }, + { url = "https://files.pythonhosted.org/packages/a2/2f/16cabcc6426c32218ace36bf0d55955e813f2958afddbf1d391849fee9d1/pillow-12.0.0-cp314-cp314t-win32.whl", hash = "sha256:3830c769decf88f1289680a59d4f4c46c72573446352e2befec9a8512104fa52", size = 6408045, upload-time = "2025-10-15T18:23:53.177Z" }, + { url = "https://files.pythonhosted.org/packages/35/73/e29aa0c9c666cf787628d3f0dcf379f4791fba79f4936d02f8b37165bdf8/pillow-12.0.0-cp314-cp314t-win_amd64.whl", hash = "sha256:905b0365b210c73afb0ebe9101a32572152dfd1c144c7e28968a331b9217b94a", size = 7148282, upload-time = "2025-10-15T18:23:55.316Z" }, + { url = "https://files.pythonhosted.org/packages/c1/70/6b41bdcddf541b437bbb9f47f94d2db5d9ddef6c37ccab8c9107743748a4/pillow-12.0.0-cp314-cp314t-win_arm64.whl", hash = "sha256:99353a06902c2e43b43e8ff74ee65a7d90307d82370604746738a1e0661ccca7", size = 2525630, upload-time = "2025-10-15T18:23:57.149Z" }, + { url = "https://files.pythonhosted.org/packages/1d/b3/582327e6c9f86d037b63beebe981425d6811104cb443e8193824ef1a2f27/pillow-12.0.0-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:b22bd8c974942477156be55a768f7aa37c46904c175be4e158b6a86e3a6b7ca8", size = 5215068, upload-time = "2025-10-15T18:23:59.594Z" }, + { url = "https://files.pythonhosted.org/packages/fd/d6/67748211d119f3b6540baf90f92fae73ae51d5217b171b0e8b5f7e5d558f/pillow-12.0.0-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:805ebf596939e48dbb2e4922a1d3852cfc25c38160751ce02da93058b48d252a", size = 4614994, upload-time = "2025-10-15T18:24:01.669Z" }, + { url = "https://files.pythonhosted.org/packages/2d/e1/f8281e5d844c41872b273b9f2c34a4bf64ca08905668c8ae730eedc7c9fa/pillow-12.0.0-pp311-pypy311_pp73-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:cae81479f77420d217def5f54b5b9d279804d17e982e0f2fa19b1d1e14ab5197", size = 5246639, upload-time = "2025-10-15T18:24:03.403Z" }, + { url = "https://files.pythonhosted.org/packages/94/5a/0d8ab8ffe8a102ff5df60d0de5af309015163bf710c7bb3e8311dd3b3ad0/pillow-12.0.0-pp311-pypy311_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:aeaefa96c768fc66818730b952a862235d68825c178f1b3ffd4efd7ad2edcb7c", size = 6986839, upload-time = "2025-10-15T18:24:05.344Z" }, + { url = "https://files.pythonhosted.org/packages/20/2e/3434380e8110b76cd9eb00a363c484b050f949b4bbe84ba770bb8508a02c/pillow-12.0.0-pp311-pypy311_pp73-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:09f2d0abef9e4e2f349305a4f8cc784a8a6c2f58a8c4892eea13b10a943bd26e", size = 5313505, upload-time = "2025-10-15T18:24:07.137Z" }, + { url = "https://files.pythonhosted.org/packages/57/ca/5a9d38900d9d74785141d6580950fe705de68af735ff6e727cb911b64740/pillow-12.0.0-pp311-pypy311_pp73-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bdee52571a343d721fb2eb3b090a82d959ff37fc631e3f70422e0c2e029f3e76", size = 5963654, upload-time = "2025-10-15T18:24:09.579Z" }, + { url = "https://files.pythonhosted.org/packages/95/7e/f896623c3c635a90537ac093c6a618ebe1a90d87206e42309cb5d98a1b9e/pillow-12.0.0-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:b290fd8aa38422444d4b50d579de197557f182ef1068b75f5aa8558638b8d0a5", size = 6997850, upload-time = "2025-10-15T18:24:11.495Z" }, +] + +[[package]] +name = "platformdirs" +version = "4.4.0" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version < '3.10'", +] +sdist = { url = "https://files.pythonhosted.org/packages/23/e8/21db9c9987b0e728855bd57bff6984f67952bea55d6f75e055c46b5383e8/platformdirs-4.4.0.tar.gz", hash = "sha256:ca753cf4d81dc309bc67b0ea38fd15dc97bc30ce419a7f58d13eb3bf14c4febf", size = 21634, upload-time = "2025-08-26T14:32:04.268Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/40/4b/2028861e724d3bd36227adfa20d3fd24c3fc6d52032f4a93c133be5d17ce/platformdirs-4.4.0-py3-none-any.whl", hash = "sha256:abd01743f24e5287cd7a5db3752faf1a2d65353f38ec26d98e25a6db65958c85", size = 18654, upload-time = "2025-08-26T14:32:02.735Z" }, +] + +[[package]] +name = "platformdirs" +version = "4.5.1" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version >= '3.12'", + "python_full_version == '3.11.*'", + "python_full_version == '3.10.*'", +] +sdist = { url = "https://files.pythonhosted.org/packages/cf/86/0248f086a84f01b37aaec0fa567b397df1a119f73c16f6c7a9aac73ea309/platformdirs-4.5.1.tar.gz", hash = "sha256:61d5cdcc6065745cdd94f0f878977f8de9437be93de97c1c12f853c9c0cdcbda", size = 21715, upload-time = "2025-12-05T13:52:58.638Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/cb/28/3bfe2fa5a7b9c46fe7e13c97bda14c895fb10fa2ebf1d0abb90e0cea7ee1/platformdirs-4.5.1-py3-none-any.whl", hash = "sha256:d03afa3963c806a9bed9d5125c8f4cb2fdaf74a55ab60e5d59b3fde758104d31", size = 18731, upload-time = "2025-12-05T13:52:56.823Z" }, +] + +[[package]] +name = "pluggy" +version = "1.6.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f9/e2/3e91f31a7d2b083fe6ef3fa267035b518369d9511ffab804f839851d2779/pluggy-1.6.0.tar.gz", hash = "sha256:7dcc130b76258d33b90f61b658791dede3486c3e6bfb003ee5c9bfb396dd22f3", size = 69412, upload-time = "2025-05-15T12:30:07.975Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl", hash = "sha256:e920276dd6813095e9377c0bc5566d94c932c33b27a3e3945d8389c374dd4746", size = 20538, upload-time = "2025-05-15T12:30:06.134Z" }, +] + +[[package]] +name = "pre-commit" +version = "4.3.0" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version < '3.10'", +] +dependencies = [ + { name = "cfgv", version = "3.4.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, + { name = "identify", marker = "python_full_version < '3.10'" }, + { name = "nodeenv", marker = "python_full_version < '3.10'" }, + { name = "pyyaml", marker = "python_full_version < '3.10'" }, + { name = "virtualenv", marker = "python_full_version < '3.10'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ff/29/7cf5bbc236333876e4b41f56e06857a87937ce4bf91e117a6991a2dbb02a/pre_commit-4.3.0.tar.gz", hash = "sha256:499fe450cc9d42e9d58e606262795ecb64dd05438943c62b66f6a8673da30b16", size = 193792, upload-time = "2025-08-09T18:56:14.651Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5b/a5/987a405322d78a73b66e39e4a90e4ef156fd7141bf71df987e50717c321b/pre_commit-4.3.0-py2.py3-none-any.whl", hash = "sha256:2b0747ad7e6e967169136edffee14c16e148a778a54e4f967921aa1ebf2308d8", size = 220965, upload-time = "2025-08-09T18:56:13.192Z" }, +] + +[[package]] +name = "pre-commit" +version = "4.5.1" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version >= '3.12'", + "python_full_version == '3.11.*'", + "python_full_version == '3.10.*'", +] +dependencies = [ + { name = "cfgv", version = "3.5.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, + { name = "identify", marker = "python_full_version >= '3.10'" }, + { name = "nodeenv", marker = "python_full_version >= '3.10'" }, + { name = "pyyaml", marker = "python_full_version >= '3.10'" }, + { name = "virtualenv", marker = "python_full_version >= '3.10'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/40/f1/6d86a29246dfd2e9b6237f0b5823717f60cad94d47ddc26afa916d21f525/pre_commit-4.5.1.tar.gz", hash = "sha256:eb545fcff725875197837263e977ea257a402056661f09dae08e4b149b030a61", size = 198232, upload-time = "2025-12-16T21:14:33.552Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5d/19/fd3ef348460c80af7bb4669ea7926651d1f95c23ff2df18b9d24bab4f3fa/pre_commit-4.5.1-py2.py3-none-any.whl", hash = "sha256:3b3afd891e97337708c1674210f8eba659b52a38ea5f822ff142d10786221f77", size = 226437, upload-time = "2025-12-16T21:14:32.409Z" }, +] + +[[package]] +name = "prompt-toolkit" +version = "3.0.52" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "wcwidth" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/a1/96/06e01a7b38dce6fe1db213e061a4602dd6032a8a97ef6c1a862537732421/prompt_toolkit-3.0.52.tar.gz", hash = "sha256:28cde192929c8e7321de85de1ddbe736f1375148b02f2e17edd840042b1be855", size = 434198, upload-time = "2025-08-27T15:24:02.057Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/84/03/0d3ce49e2505ae70cf43bc5bb3033955d2fc9f932163e84dc0779cc47f48/prompt_toolkit-3.0.52-py3-none-any.whl", hash = "sha256:9aac639a3bbd33284347de5ad8d68ecc044b91a762dc39b7c21095fcd6a19955", size = 391431, upload-time = "2025-08-27T15:23:59.498Z" }, +] + +[[package]] +name = "ptyprocess" +version = "0.7.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/20/e5/16ff212c1e452235a90aeb09066144d0c5a6a8c0834397e03f5224495c4e/ptyprocess-0.7.0.tar.gz", hash = "sha256:5c5d0a3b48ceee0b48485e0c26037c0acd7d29765ca3fbb5cb3831d347423220", size = 70762, upload-time = "2020-12-28T15:15:30.155Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/22/a6/858897256d0deac81a172289110f31629fc4cee19b6f01283303e18c8db3/ptyprocess-0.7.0-py2.py3-none-any.whl", hash = "sha256:4b41f3967fce3af57cc7e94b888626c18bf37a083e3651ca8feeb66d492fef35", size = 13993, upload-time = "2020-12-28T15:15:28.35Z" }, +] + +[[package]] +name = "pure-eval" +version = "0.2.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/cd/05/0a34433a064256a578f1783a10da6df098ceaa4a57bbeaa96a6c0352786b/pure_eval-0.2.3.tar.gz", hash = "sha256:5f4e983f40564c576c7c8635ae88db5956bb2229d7e9237d03b3c0b0190eaf42", size = 19752, upload-time = "2024-07-21T12:58:21.801Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/8e/37/efad0257dc6e593a18957422533ff0f87ede7c9c6ea010a2177d738fb82f/pure_eval-0.2.3-py3-none-any.whl", hash = "sha256:1db8e35b67b3d218d818ae653e27f06c3aa420901fa7b081ca98cbedc874e0d0", size = 11842, upload-time = "2024-07-21T12:58:20.04Z" }, +] + +[[package]] +name = "pydantic" +version = "2.12.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "annotated-types" }, + { name = "pydantic-core" }, + { name = "typing-extensions" }, + { name = "typing-inspection" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/f3/1e/4f0a3233767010308f2fd6bd0814597e3f63f1dc98304a9112b8759df4ff/pydantic-2.12.3.tar.gz", hash = "sha256:1da1c82b0fc140bb0103bc1441ffe062154c8d38491189751ee00fd8ca65ce74", size = 819383, upload-time = "2025-10-17T15:04:21.222Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a1/6b/83661fa77dcefa195ad5f8cd9af3d1a7450fd57cc883ad04d65446ac2029/pydantic-2.12.3-py3-none-any.whl", hash = "sha256:6986454a854bc3bc6e5443e1369e06a3a456af9d339eda45510f517d9ea5c6bf", size = 462431, upload-time = "2025-10-17T15:04:19.346Z" }, +] + +[[package]] +name = "pydantic-core" +version = "2.41.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/df/18/d0944e8eaaa3efd0a91b0f1fc537d3be55ad35091b6a87638211ba691964/pydantic_core-2.41.4.tar.gz", hash = "sha256:70e47929a9d4a1905a67e4b687d5946026390568a8e952b92824118063cee4d5", size = 457557, upload-time = "2025-10-14T10:23:47.909Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a7/3d/9b8ca77b0f76fcdbf8bc6b72474e264283f461284ca84ac3fde570c6c49a/pydantic_core-2.41.4-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:2442d9a4d38f3411f22eb9dd0912b7cbf4b7d5b6c92c4173b75d3e1ccd84e36e", size = 2111197, upload-time = "2025-10-14T10:19:43.303Z" }, + { url = "https://files.pythonhosted.org/packages/59/92/b7b0fe6ed4781642232755cb7e56a86e2041e1292f16d9ae410a0ccee5ac/pydantic_core-2.41.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:30a9876226dda131a741afeab2702e2d127209bde3c65a2b8133f428bc5d006b", size = 1917909, upload-time = "2025-10-14T10:19:45.194Z" }, + { url = "https://files.pythonhosted.org/packages/52/8c/3eb872009274ffa4fb6a9585114e161aa1a0915af2896e2d441642929fe4/pydantic_core-2.41.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d55bbac04711e2980645af68b97d445cdbcce70e5216de444a6c4b6943ebcccd", size = 1969905, upload-time = "2025-10-14T10:19:46.567Z" }, + { url = "https://files.pythonhosted.org/packages/f4/21/35adf4a753bcfaea22d925214a0c5b880792e3244731b3f3e6fec0d124f7/pydantic_core-2.41.4-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e1d778fb7849a42d0ee5927ab0f7453bf9f85eef8887a546ec87db5ddb178945", size = 2051938, upload-time = "2025-10-14T10:19:48.237Z" }, + { url = "https://files.pythonhosted.org/packages/7d/d0/cdf7d126825e36d6e3f1eccf257da8954452934ede275a8f390eac775e89/pydantic_core-2.41.4-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1b65077a4693a98b90ec5ad8f203ad65802a1b9b6d4a7e48066925a7e1606706", size = 2250710, upload-time = "2025-10-14T10:19:49.619Z" }, + { url = "https://files.pythonhosted.org/packages/2e/1c/af1e6fd5ea596327308f9c8d1654e1285cc3d8de0d584a3c9d7705bf8a7c/pydantic_core-2.41.4-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:62637c769dee16eddb7686bf421be48dfc2fae93832c25e25bc7242e698361ba", size = 2367445, upload-time = "2025-10-14T10:19:51.269Z" }, + { url = "https://files.pythonhosted.org/packages/d3/81/8cece29a6ef1b3a92f956ea6da6250d5b2d2e7e4d513dd3b4f0c7a83dfea/pydantic_core-2.41.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2dfe3aa529c8f501babf6e502936b9e8d4698502b2cfab41e17a028d91b1ac7b", size = 2072875, upload-time = "2025-10-14T10:19:52.671Z" }, + { url = "https://files.pythonhosted.org/packages/e3/37/a6a579f5fc2cd4d5521284a0ab6a426cc6463a7b3897aeb95b12f1ba607b/pydantic_core-2.41.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ca2322da745bf2eeb581fc9ea3bbb31147702163ccbcbf12a3bb630e4bf05e1d", size = 2191329, upload-time = "2025-10-14T10:19:54.214Z" }, + { url = "https://files.pythonhosted.org/packages/ae/03/505020dc5c54ec75ecba9f41119fd1e48f9e41e4629942494c4a8734ded1/pydantic_core-2.41.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:e8cd3577c796be7231dcf80badcf2e0835a46665eaafd8ace124d886bab4d700", size = 2151658, upload-time = "2025-10-14T10:19:55.843Z" }, + { url = "https://files.pythonhosted.org/packages/cb/5d/2c0d09fb53aa03bbd2a214d89ebfa6304be7df9ed86ee3dc7770257f41ee/pydantic_core-2.41.4-cp310-cp310-musllinux_1_1_armv7l.whl", hash = "sha256:1cae8851e174c83633f0833e90636832857297900133705ee158cf79d40f03e6", size = 2316777, upload-time = "2025-10-14T10:19:57.607Z" }, + { url = "https://files.pythonhosted.org/packages/ea/4b/c2c9c8f5e1f9c864b57d08539d9d3db160e00491c9f5ee90e1bfd905e644/pydantic_core-2.41.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:a26d950449aae348afe1ac8be5525a00ae4235309b729ad4d3399623125b43c9", size = 2320705, upload-time = "2025-10-14T10:19:59.016Z" }, + { url = "https://files.pythonhosted.org/packages/28/c3/a74c1c37f49c0a02c89c7340fafc0ba816b29bd495d1a31ce1bdeacc6085/pydantic_core-2.41.4-cp310-cp310-win32.whl", hash = "sha256:0cf2a1f599efe57fa0051312774280ee0f650e11152325e41dfd3018ef2c1b57", size = 1975464, upload-time = "2025-10-14T10:20:00.581Z" }, + { url = "https://files.pythonhosted.org/packages/d6/23/5dd5c1324ba80303368f7569e2e2e1a721c7d9eb16acb7eb7b7f85cb1be2/pydantic_core-2.41.4-cp310-cp310-win_amd64.whl", hash = "sha256:a8c2e340d7e454dc3340d3d2e8f23558ebe78c98aa8f68851b04dcb7bc37abdc", size = 2024497, upload-time = "2025-10-14T10:20:03.018Z" }, + { url = "https://files.pythonhosted.org/packages/62/4c/f6cbfa1e8efacd00b846764e8484fe173d25b8dab881e277a619177f3384/pydantic_core-2.41.4-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:28ff11666443a1a8cf2a044d6a545ebffa8382b5f7973f22c36109205e65dc80", size = 2109062, upload-time = "2025-10-14T10:20:04.486Z" }, + { url = "https://files.pythonhosted.org/packages/21/f8/40b72d3868896bfcd410e1bd7e516e762d326201c48e5b4a06446f6cf9e8/pydantic_core-2.41.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:61760c3925d4633290292bad462e0f737b840508b4f722247d8729684f6539ae", size = 1916301, upload-time = "2025-10-14T10:20:06.857Z" }, + { url = "https://files.pythonhosted.org/packages/94/4d/d203dce8bee7faeca791671c88519969d98d3b4e8f225da5b96dad226fc8/pydantic_core-2.41.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eae547b7315d055b0de2ec3965643b0ab82ad0106a7ffd29615ee9f266a02827", size = 1968728, upload-time = "2025-10-14T10:20:08.353Z" }, + { url = "https://files.pythonhosted.org/packages/65/f5/6a66187775df87c24d526985b3a5d78d861580ca466fbd9d4d0e792fcf6c/pydantic_core-2.41.4-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ef9ee5471edd58d1fcce1c80ffc8783a650e3e3a193fe90d52e43bb4d87bff1f", size = 2050238, upload-time = "2025-10-14T10:20:09.766Z" }, + { url = "https://files.pythonhosted.org/packages/5e/b9/78336345de97298cf53236b2f271912ce11f32c1e59de25a374ce12f9cce/pydantic_core-2.41.4-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:15dd504af121caaf2c95cb90c0ebf71603c53de98305621b94da0f967e572def", size = 2249424, upload-time = "2025-10-14T10:20:11.732Z" }, + { url = "https://files.pythonhosted.org/packages/99/bb/a4584888b70ee594c3d374a71af5075a68654d6c780369df269118af7402/pydantic_core-2.41.4-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3a926768ea49a8af4d36abd6a8968b8790f7f76dd7cbd5a4c180db2b4ac9a3a2", size = 2366047, upload-time = "2025-10-14T10:20:13.647Z" }, + { url = "https://files.pythonhosted.org/packages/5f/8d/17fc5de9d6418e4d2ae8c675f905cdafdc59d3bf3bf9c946b7ab796a992a/pydantic_core-2.41.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6916b9b7d134bff5440098a4deb80e4cb623e68974a87883299de9124126c2a8", size = 2071163, upload-time = "2025-10-14T10:20:15.307Z" }, + { url = "https://files.pythonhosted.org/packages/54/e7/03d2c5c0b8ed37a4617430db68ec5e7dbba66358b629cd69e11b4d564367/pydantic_core-2.41.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5cf90535979089df02e6f17ffd076f07237efa55b7343d98760bde8743c4b265", size = 2190585, upload-time = "2025-10-14T10:20:17.3Z" }, + { url = "https://files.pythonhosted.org/packages/be/fc/15d1c9fe5ad9266a5897d9b932b7f53d7e5cfc800573917a2c5d6eea56ec/pydantic_core-2.41.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:7533c76fa647fade2d7ec75ac5cc079ab3f34879626dae5689b27790a6cf5a5c", size = 2150109, upload-time = "2025-10-14T10:20:19.143Z" }, + { url = "https://files.pythonhosted.org/packages/26/ef/e735dd008808226c83ba56972566138665b71477ad580fa5a21f0851df48/pydantic_core-2.41.4-cp311-cp311-musllinux_1_1_armv7l.whl", hash = "sha256:37e516bca9264cbf29612539801ca3cd5d1be465f940417b002905e6ed79d38a", size = 2315078, upload-time = "2025-10-14T10:20:20.742Z" }, + { url = "https://files.pythonhosted.org/packages/90/00/806efdcf35ff2ac0f938362350cd9827b8afb116cc814b6b75cf23738c7c/pydantic_core-2.41.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:0c19cb355224037c83642429b8ce261ae108e1c5fbf5c028bac63c77b0f8646e", size = 2318737, upload-time = "2025-10-14T10:20:22.306Z" }, + { url = "https://files.pythonhosted.org/packages/41/7e/6ac90673fe6cb36621a2283552897838c020db343fa86e513d3f563b196f/pydantic_core-2.41.4-cp311-cp311-win32.whl", hash = "sha256:09c2a60e55b357284b5f31f5ab275ba9f7f70b7525e18a132ec1f9160b4f1f03", size = 1974160, upload-time = "2025-10-14T10:20:23.817Z" }, + { url = "https://files.pythonhosted.org/packages/e0/9d/7c5e24ee585c1f8b6356e1d11d40ab807ffde44d2db3b7dfd6d20b09720e/pydantic_core-2.41.4-cp311-cp311-win_amd64.whl", hash = "sha256:711156b6afb5cb1cb7c14a2cc2c4a8b4c717b69046f13c6b332d8a0a8f41ca3e", size = 2021883, upload-time = "2025-10-14T10:20:25.48Z" }, + { url = "https://files.pythonhosted.org/packages/33/90/5c172357460fc28b2871eb4a0fb3843b136b429c6fa827e4b588877bf115/pydantic_core-2.41.4-cp311-cp311-win_arm64.whl", hash = "sha256:6cb9cf7e761f4f8a8589a45e49ed3c0d92d1d696a45a6feaee8c904b26efc2db", size = 1968026, upload-time = "2025-10-14T10:20:27.039Z" }, + { url = "https://files.pythonhosted.org/packages/e9/81/d3b3e95929c4369d30b2a66a91db63c8ed0a98381ae55a45da2cd1cc1288/pydantic_core-2.41.4-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:ab06d77e053d660a6faaf04894446df7b0a7e7aba70c2797465a0a1af00fc887", size = 2099043, upload-time = "2025-10-14T10:20:28.561Z" }, + { url = "https://files.pythonhosted.org/packages/58/da/46fdac49e6717e3a94fc9201403e08d9d61aa7a770fab6190b8740749047/pydantic_core-2.41.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:c53ff33e603a9c1179a9364b0a24694f183717b2e0da2b5ad43c316c956901b2", size = 1910699, upload-time = "2025-10-14T10:20:30.217Z" }, + { url = "https://files.pythonhosted.org/packages/1e/63/4d948f1b9dd8e991a5a98b77dd66c74641f5f2e5225fee37994b2e07d391/pydantic_core-2.41.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:304c54176af2c143bd181d82e77c15c41cbacea8872a2225dd37e6544dce9999", size = 1952121, upload-time = "2025-10-14T10:20:32.246Z" }, + { url = "https://files.pythonhosted.org/packages/b2/a7/e5fc60a6f781fc634ecaa9ecc3c20171d238794cef69ae0af79ac11b89d7/pydantic_core-2.41.4-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:025ba34a4cf4fb32f917d5d188ab5e702223d3ba603be4d8aca2f82bede432a4", size = 2041590, upload-time = "2025-10-14T10:20:34.332Z" }, + { url = "https://files.pythonhosted.org/packages/70/69/dce747b1d21d59e85af433428978a1893c6f8a7068fa2bb4a927fba7a5ff/pydantic_core-2.41.4-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b9f5f30c402ed58f90c70e12eff65547d3ab74685ffe8283c719e6bead8ef53f", size = 2219869, upload-time = "2025-10-14T10:20:35.965Z" }, + { url = "https://files.pythonhosted.org/packages/83/6a/c070e30e295403bf29c4df1cb781317b6a9bac7cd07b8d3acc94d501a63c/pydantic_core-2.41.4-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:dd96e5d15385d301733113bcaa324c8bcf111275b7675a9c6e88bfb19fc05e3b", size = 2345169, upload-time = "2025-10-14T10:20:37.627Z" }, + { url = "https://files.pythonhosted.org/packages/f0/83/06d001f8043c336baea7fd202a9ac7ad71f87e1c55d8112c50b745c40324/pydantic_core-2.41.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:98f348cbb44fae6e9653c1055db7e29de67ea6a9ca03a5fa2c2e11a47cff0e47", size = 2070165, upload-time = "2025-10-14T10:20:39.246Z" }, + { url = "https://files.pythonhosted.org/packages/14/0a/e567c2883588dd12bcbc110232d892cf385356f7c8a9910311ac997ab715/pydantic_core-2.41.4-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ec22626a2d14620a83ca583c6f5a4080fa3155282718b6055c2ea48d3ef35970", size = 2189067, upload-time = "2025-10-14T10:20:41.015Z" }, + { url = "https://files.pythonhosted.org/packages/f4/1d/3d9fca34273ba03c9b1c5289f7618bc4bd09c3ad2289b5420481aa051a99/pydantic_core-2.41.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:3a95d4590b1f1a43bf33ca6d647b990a88f4a3824a8c4572c708f0b45a5290ed", size = 2132997, upload-time = "2025-10-14T10:20:43.106Z" }, + { url = "https://files.pythonhosted.org/packages/52/70/d702ef7a6cd41a8afc61f3554922b3ed8d19dd54c3bd4bdbfe332e610827/pydantic_core-2.41.4-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:f9672ab4d398e1b602feadcffcdd3af44d5f5e6ddc15bc7d15d376d47e8e19f8", size = 2307187, upload-time = "2025-10-14T10:20:44.849Z" }, + { url = "https://files.pythonhosted.org/packages/68/4c/c06be6e27545d08b802127914156f38d10ca287a9e8489342793de8aae3c/pydantic_core-2.41.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:84d8854db5f55fead3b579f04bda9a36461dab0730c5d570e1526483e7bb8431", size = 2305204, upload-time = "2025-10-14T10:20:46.781Z" }, + { url = "https://files.pythonhosted.org/packages/b0/e5/35ae4919bcd9f18603419e23c5eaf32750224a89d41a8df1a3704b69f77e/pydantic_core-2.41.4-cp312-cp312-win32.whl", hash = "sha256:9be1c01adb2ecc4e464392c36d17f97e9110fbbc906bcbe1c943b5b87a74aabd", size = 1972536, upload-time = "2025-10-14T10:20:48.39Z" }, + { url = "https://files.pythonhosted.org/packages/1e/c2/49c5bb6d2a49eb2ee3647a93e3dae7080c6409a8a7558b075027644e879c/pydantic_core-2.41.4-cp312-cp312-win_amd64.whl", hash = "sha256:d682cf1d22bab22a5be08539dca3d1593488a99998f9f412137bc323179067ff", size = 2031132, upload-time = "2025-10-14T10:20:50.421Z" }, + { url = "https://files.pythonhosted.org/packages/06/23/936343dbcba6eec93f73e95eb346810fc732f71ba27967b287b66f7b7097/pydantic_core-2.41.4-cp312-cp312-win_arm64.whl", hash = "sha256:833eebfd75a26d17470b58768c1834dfc90141b7afc6eb0429c21fc5a21dcfb8", size = 1969483, upload-time = "2025-10-14T10:20:52.35Z" }, + { url = "https://files.pythonhosted.org/packages/13/d0/c20adabd181a029a970738dfe23710b52a31f1258f591874fcdec7359845/pydantic_core-2.41.4-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:85e050ad9e5f6fe1004eec65c914332e52f429bc0ae12d6fa2092407a462c746", size = 2105688, upload-time = "2025-10-14T10:20:54.448Z" }, + { url = "https://files.pythonhosted.org/packages/00/b6/0ce5c03cec5ae94cca220dfecddc453c077d71363b98a4bbdb3c0b22c783/pydantic_core-2.41.4-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:e7393f1d64792763a48924ba31d1e44c2cfbc05e3b1c2c9abb4ceeadd912cced", size = 1910807, upload-time = "2025-10-14T10:20:56.115Z" }, + { url = "https://files.pythonhosted.org/packages/68/3e/800d3d02c8beb0b5c069c870cbb83799d085debf43499c897bb4b4aaff0d/pydantic_core-2.41.4-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:94dab0940b0d1fb28bcab847adf887c66a27a40291eedf0b473be58761c9799a", size = 1956669, upload-time = "2025-10-14T10:20:57.874Z" }, + { url = "https://files.pythonhosted.org/packages/60/a4/24271cc71a17f64589be49ab8bd0751f6a0a03046c690df60989f2f95c2c/pydantic_core-2.41.4-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:de7c42f897e689ee6f9e93c4bec72b99ae3b32a2ade1c7e4798e690ff5246e02", size = 2051629, upload-time = "2025-10-14T10:21:00.006Z" }, + { url = "https://files.pythonhosted.org/packages/68/de/45af3ca2f175d91b96bfb62e1f2d2f1f9f3b14a734afe0bfeff079f78181/pydantic_core-2.41.4-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:664b3199193262277b8b3cd1e754fb07f2c6023289c815a1e1e8fb415cb247b1", size = 2224049, upload-time = "2025-10-14T10:21:01.801Z" }, + { url = "https://files.pythonhosted.org/packages/af/8f/ae4e1ff84672bf869d0a77af24fd78387850e9497753c432875066b5d622/pydantic_core-2.41.4-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d95b253b88f7d308b1c0b417c4624f44553ba4762816f94e6986819b9c273fb2", size = 2342409, upload-time = "2025-10-14T10:21:03.556Z" }, + { url = "https://files.pythonhosted.org/packages/18/62/273dd70b0026a085c7b74b000394e1ef95719ea579c76ea2f0cc8893736d/pydantic_core-2.41.4-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a1351f5bbdbbabc689727cb91649a00cb9ee7203e0a6e54e9f5ba9e22e384b84", size = 2069635, upload-time = "2025-10-14T10:21:05.385Z" }, + { url = "https://files.pythonhosted.org/packages/30/03/cf485fff699b4cdaea469bc481719d3e49f023241b4abb656f8d422189fc/pydantic_core-2.41.4-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1affa4798520b148d7182da0615d648e752de4ab1a9566b7471bc803d88a062d", size = 2194284, upload-time = "2025-10-14T10:21:07.122Z" }, + { url = "https://files.pythonhosted.org/packages/f9/7e/c8e713db32405dfd97211f2fc0a15d6bf8adb7640f3d18544c1f39526619/pydantic_core-2.41.4-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:7b74e18052fea4aa8dea2fb7dbc23d15439695da6cbe6cfc1b694af1115df09d", size = 2137566, upload-time = "2025-10-14T10:21:08.981Z" }, + { url = "https://files.pythonhosted.org/packages/04/f7/db71fd4cdccc8b75990f79ccafbbd66757e19f6d5ee724a6252414483fb4/pydantic_core-2.41.4-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:285b643d75c0e30abda9dc1077395624f314a37e3c09ca402d4015ef5979f1a2", size = 2316809, upload-time = "2025-10-14T10:21:10.805Z" }, + { url = "https://files.pythonhosted.org/packages/76/63/a54973ddb945f1bca56742b48b144d85c9fc22f819ddeb9f861c249d5464/pydantic_core-2.41.4-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:f52679ff4218d713b3b33f88c89ccbf3a5c2c12ba665fb80ccc4192b4608dbab", size = 2311119, upload-time = "2025-10-14T10:21:12.583Z" }, + { url = "https://files.pythonhosted.org/packages/f8/03/5d12891e93c19218af74843a27e32b94922195ded2386f7b55382f904d2f/pydantic_core-2.41.4-cp313-cp313-win32.whl", hash = "sha256:ecde6dedd6fff127c273c76821bb754d793be1024bc33314a120f83a3c69460c", size = 1981398, upload-time = "2025-10-14T10:21:14.584Z" }, + { url = "https://files.pythonhosted.org/packages/be/d8/fd0de71f39db91135b7a26996160de71c073d8635edfce8b3c3681be0d6d/pydantic_core-2.41.4-cp313-cp313-win_amd64.whl", hash = "sha256:d081a1f3800f05409ed868ebb2d74ac39dd0c1ff6c035b5162356d76030736d4", size = 2030735, upload-time = "2025-10-14T10:21:16.432Z" }, + { url = "https://files.pythonhosted.org/packages/72/86/c99921c1cf6650023c08bfab6fe2d7057a5142628ef7ccfa9921f2dda1d5/pydantic_core-2.41.4-cp313-cp313-win_arm64.whl", hash = "sha256:f8e49c9c364a7edcbe2a310f12733aad95b022495ef2a8d653f645e5d20c1564", size = 1973209, upload-time = "2025-10-14T10:21:18.213Z" }, + { url = "https://files.pythonhosted.org/packages/36/0d/b5706cacb70a8414396efdda3d72ae0542e050b591119e458e2490baf035/pydantic_core-2.41.4-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:ed97fd56a561f5eb5706cebe94f1ad7c13b84d98312a05546f2ad036bafe87f4", size = 1877324, upload-time = "2025-10-14T10:21:20.363Z" }, + { url = "https://files.pythonhosted.org/packages/de/2d/cba1fa02cfdea72dfb3a9babb067c83b9dff0bbcb198368e000a6b756ea7/pydantic_core-2.41.4-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a870c307bf1ee91fc58a9a61338ff780d01bfae45922624816878dce784095d2", size = 1884515, upload-time = "2025-10-14T10:21:22.339Z" }, + { url = "https://files.pythonhosted.org/packages/07/ea/3df927c4384ed9b503c9cc2d076cf983b4f2adb0c754578dfb1245c51e46/pydantic_core-2.41.4-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d25e97bc1f5f8f7985bdc2335ef9e73843bb561eb1fa6831fdfc295c1c2061cf", size = 2042819, upload-time = "2025-10-14T10:21:26.683Z" }, + { url = "https://files.pythonhosted.org/packages/6a/ee/df8e871f07074250270a3b1b82aad4cd0026b588acd5d7d3eb2fcb1471a3/pydantic_core-2.41.4-cp313-cp313t-win_amd64.whl", hash = "sha256:d405d14bea042f166512add3091c1af40437c2e7f86988f3915fabd27b1e9cd2", size = 1995866, upload-time = "2025-10-14T10:21:28.951Z" }, + { url = "https://files.pythonhosted.org/packages/fc/de/b20f4ab954d6d399499c33ec4fafc46d9551e11dc1858fb7f5dca0748ceb/pydantic_core-2.41.4-cp313-cp313t-win_arm64.whl", hash = "sha256:19f3684868309db5263a11bace3c45d93f6f24afa2ffe75a647583df22a2ff89", size = 1970034, upload-time = "2025-10-14T10:21:30.869Z" }, + { url = "https://files.pythonhosted.org/packages/54/28/d3325da57d413b9819365546eb9a6e8b7cbd9373d9380efd5f74326143e6/pydantic_core-2.41.4-cp314-cp314-macosx_10_12_x86_64.whl", hash = "sha256:e9205d97ed08a82ebb9a307e92914bb30e18cdf6f6b12ca4bedadb1588a0bfe1", size = 2102022, upload-time = "2025-10-14T10:21:32.809Z" }, + { url = "https://files.pythonhosted.org/packages/9e/24/b58a1bc0d834bf1acc4361e61233ee217169a42efbdc15a60296e13ce438/pydantic_core-2.41.4-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:82df1f432b37d832709fbcc0e24394bba04a01b6ecf1ee87578145c19cde12ac", size = 1905495, upload-time = "2025-10-14T10:21:34.812Z" }, + { url = "https://files.pythonhosted.org/packages/fb/a4/71f759cc41b7043e8ecdaab81b985a9b6cad7cec077e0b92cff8b71ecf6b/pydantic_core-2.41.4-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fc3b4cc4539e055cfa39a3763c939f9d409eb40e85813257dcd761985a108554", size = 1956131, upload-time = "2025-10-14T10:21:36.924Z" }, + { url = "https://files.pythonhosted.org/packages/b0/64/1e79ac7aa51f1eec7c4cda8cbe456d5d09f05fdd68b32776d72168d54275/pydantic_core-2.41.4-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b1eb1754fce47c63d2ff57fdb88c351a6c0150995890088b33767a10218eaa4e", size = 2052236, upload-time = "2025-10-14T10:21:38.927Z" }, + { url = "https://files.pythonhosted.org/packages/e9/e3/a3ffc363bd4287b80f1d43dc1c28ba64831f8dfc237d6fec8f2661138d48/pydantic_core-2.41.4-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e6ab5ab30ef325b443f379ddb575a34969c333004fca5a1daa0133a6ffaad616", size = 2223573, upload-time = "2025-10-14T10:21:41.574Z" }, + { url = "https://files.pythonhosted.org/packages/28/27/78814089b4d2e684a9088ede3790763c64693c3d1408ddc0a248bc789126/pydantic_core-2.41.4-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:31a41030b1d9ca497634092b46481b937ff9397a86f9f51bd41c4767b6fc04af", size = 2342467, upload-time = "2025-10-14T10:21:44.018Z" }, + { url = "https://files.pythonhosted.org/packages/92/97/4de0e2a1159cb85ad737e03306717637842c88c7fd6d97973172fb183149/pydantic_core-2.41.4-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a44ac1738591472c3d020f61c6df1e4015180d6262ebd39bf2aeb52571b60f12", size = 2063754, upload-time = "2025-10-14T10:21:46.466Z" }, + { url = "https://files.pythonhosted.org/packages/0f/50/8cb90ce4b9efcf7ae78130afeb99fd1c86125ccdf9906ef64b9d42f37c25/pydantic_core-2.41.4-cp314-cp314-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d72f2b5e6e82ab8f94ea7d0d42f83c487dc159c5240d8f83beae684472864e2d", size = 2196754, upload-time = "2025-10-14T10:21:48.486Z" }, + { url = "https://files.pythonhosted.org/packages/34/3b/ccdc77af9cd5082723574a1cc1bcae7a6acacc829d7c0a06201f7886a109/pydantic_core-2.41.4-cp314-cp314-musllinux_1_1_aarch64.whl", hash = "sha256:c4d1e854aaf044487d31143f541f7aafe7b482ae72a022c664b2de2e466ed0ad", size = 2137115, upload-time = "2025-10-14T10:21:50.63Z" }, + { url = "https://files.pythonhosted.org/packages/ca/ba/e7c7a02651a8f7c52dc2cff2b64a30c313e3b57c7d93703cecea76c09b71/pydantic_core-2.41.4-cp314-cp314-musllinux_1_1_armv7l.whl", hash = "sha256:b568af94267729d76e6ee5ececda4e283d07bbb28e8148bb17adad93d025d25a", size = 2317400, upload-time = "2025-10-14T10:21:52.959Z" }, + { url = "https://files.pythonhosted.org/packages/2c/ba/6c533a4ee8aec6b812c643c49bb3bd88d3f01e3cebe451bb85512d37f00f/pydantic_core-2.41.4-cp314-cp314-musllinux_1_1_x86_64.whl", hash = "sha256:6d55fb8b1e8929b341cc313a81a26e0d48aa3b519c1dbaadec3a6a2b4fcad025", size = 2312070, upload-time = "2025-10-14T10:21:55.419Z" }, + { url = "https://files.pythonhosted.org/packages/22/ae/f10524fcc0ab8d7f96cf9a74c880243576fd3e72bd8ce4f81e43d22bcab7/pydantic_core-2.41.4-cp314-cp314-win32.whl", hash = "sha256:5b66584e549e2e32a1398df11da2e0a7eff45d5c2d9db9d5667c5e6ac764d77e", size = 1982277, upload-time = "2025-10-14T10:21:57.474Z" }, + { url = "https://files.pythonhosted.org/packages/b4/dc/e5aa27aea1ad4638f0c3fb41132f7eb583bd7420ee63204e2d4333a3bbf9/pydantic_core-2.41.4-cp314-cp314-win_amd64.whl", hash = "sha256:557a0aab88664cc552285316809cab897716a372afaf8efdbef756f8b890e894", size = 2024608, upload-time = "2025-10-14T10:21:59.557Z" }, + { url = "https://files.pythonhosted.org/packages/3e/61/51d89cc2612bd147198e120a13f150afbf0bcb4615cddb049ab10b81b79e/pydantic_core-2.41.4-cp314-cp314-win_arm64.whl", hash = "sha256:3f1ea6f48a045745d0d9f325989d8abd3f1eaf47dd00485912d1a3a63c623a8d", size = 1967614, upload-time = "2025-10-14T10:22:01.847Z" }, + { url = "https://files.pythonhosted.org/packages/0d/c2/472f2e31b95eff099961fa050c376ab7156a81da194f9edb9f710f68787b/pydantic_core-2.41.4-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:6c1fe4c5404c448b13188dd8bd2ebc2bdd7e6727fa61ff481bcc2cca894018da", size = 1876904, upload-time = "2025-10-14T10:22:04.062Z" }, + { url = "https://files.pythonhosted.org/packages/4a/07/ea8eeb91173807ecdae4f4a5f4b150a520085b35454350fc219ba79e66a3/pydantic_core-2.41.4-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:523e7da4d43b113bf8e7b49fa4ec0c35bf4fe66b2230bfc5c13cc498f12c6c3e", size = 1882538, upload-time = "2025-10-14T10:22:06.39Z" }, + { url = "https://files.pythonhosted.org/packages/1e/29/b53a9ca6cd366bfc928823679c6a76c7a4c69f8201c0ba7903ad18ebae2f/pydantic_core-2.41.4-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5729225de81fb65b70fdb1907fcf08c75d498f4a6f15af005aabb1fdadc19dfa", size = 2041183, upload-time = "2025-10-14T10:22:08.812Z" }, + { url = "https://files.pythonhosted.org/packages/c7/3d/f8c1a371ceebcaf94d6dd2d77c6cf4b1c078e13a5837aee83f760b4f7cfd/pydantic_core-2.41.4-cp314-cp314t-win_amd64.whl", hash = "sha256:de2cfbb09e88f0f795fd90cf955858fc2c691df65b1f21f0aa00b99f3fbc661d", size = 1993542, upload-time = "2025-10-14T10:22:11.332Z" }, + { url = "https://files.pythonhosted.org/packages/8a/ac/9fc61b4f9d079482a290afe8d206b8f490e9fd32d4fc03ed4fc698214e01/pydantic_core-2.41.4-cp314-cp314t-win_arm64.whl", hash = "sha256:d34f950ae05a83e0ede899c595f312ca976023ea1db100cd5aa188f7005e3ab0", size = 1973897, upload-time = "2025-10-14T10:22:13.444Z" }, + { url = "https://files.pythonhosted.org/packages/2c/36/f86d582be5fb47d4014506cd9ddd10a3979b6d0f2d237aa6ad3e7033b3ea/pydantic_core-2.41.4-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:646e76293345954acea6966149683047b7b2ace793011922208c8e9da12b0062", size = 2112444, upload-time = "2025-10-14T10:22:16.165Z" }, + { url = "https://files.pythonhosted.org/packages/ba/e5/63c521dc2dd106ba6b5941c080617ea9db252f8a7d5625231e9d761bc28c/pydantic_core-2.41.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:cc8e85a63085a137d286e2791037f5fdfff0aabb8b899483ca9c496dd5797338", size = 1938218, upload-time = "2025-10-14T10:22:19.443Z" }, + { url = "https://files.pythonhosted.org/packages/30/56/c84b638a3e6e9f5a612b9f5abdad73182520423de43669d639ed4f14b011/pydantic_core-2.41.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:692c622c8f859a17c156492783902d8370ac7e121a611bd6fe92cc71acf9ee8d", size = 1971449, upload-time = "2025-10-14T10:22:21.567Z" }, + { url = "https://files.pythonhosted.org/packages/99/c6/e974aade34fc7a0248fdfd0a373d62693502a407c596ab3470165e38183c/pydantic_core-2.41.4-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d1e2906efb1031a532600679b424ef1d95d9f9fb507f813951f23320903adbd7", size = 2054023, upload-time = "2025-10-14T10:22:24.229Z" }, + { url = "https://files.pythonhosted.org/packages/4f/91/2507dda801f50980a38d1353c313e8f51349a42b008e63a4e45bf4620562/pydantic_core-2.41.4-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e04e2f7f8916ad3ddd417a7abdd295276a0bf216993d9318a5d61cc058209166", size = 2251614, upload-time = "2025-10-14T10:22:26.498Z" }, + { url = "https://files.pythonhosted.org/packages/b2/ad/05d886bc96938f4d31bed24e8d3fc3496d9aea7e77bcff6e4b93127c6de7/pydantic_core-2.41.4-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:df649916b81822543d1c8e0e1d079235f68acdc7d270c911e8425045a8cfc57e", size = 2378807, upload-time = "2025-10-14T10:22:28.733Z" }, + { url = "https://files.pythonhosted.org/packages/6a/0a/d26e1bb9a80b9fc12cc30d9288193fbc9e60a799e55843804ee37bd38a9c/pydantic_core-2.41.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:66c529f862fdba70558061bb936fe00ddbaaa0c647fd26e4a4356ef1d6561891", size = 2076891, upload-time = "2025-10-14T10:22:30.853Z" }, + { url = "https://files.pythonhosted.org/packages/d9/66/af014e3a294d9933ebfecf11a5d858709014bd2315fa9616195374dd82f0/pydantic_core-2.41.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:fc3b4c5a1fd3a311563ed866c2c9b62da06cb6398bee186484ce95c820db71cb", size = 2192179, upload-time = "2025-10-14T10:22:33.481Z" }, + { url = "https://files.pythonhosted.org/packages/e7/3e/79783f97024037d0ea6e1b3ebcd761463a925199e04ce2625727e9f27d06/pydantic_core-2.41.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:6e0fc40d84448f941df9b3334c4b78fe42f36e3bf631ad54c3047a0cdddc2514", size = 2153067, upload-time = "2025-10-14T10:22:35.792Z" }, + { url = "https://files.pythonhosted.org/packages/b3/97/ea83b0f87d9e742405fb687d5682e7a26334eef2c82a2de06bfbdc305fab/pydantic_core-2.41.4-cp39-cp39-musllinux_1_1_armv7l.whl", hash = "sha256:44e7625332683b6c1c8b980461475cde9595eff94447500e80716db89b0da005", size = 2319048, upload-time = "2025-10-14T10:22:38.144Z" }, + { url = "https://files.pythonhosted.org/packages/64/4a/36d8c966a0b086362ac10a7ee75978ed15c5f2dfdfc02a1578d19d3802fb/pydantic_core-2.41.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:170ee6835f6c71081d031ef1c3b4dc4a12b9efa6a9540f93f95b82f3c7571ae8", size = 2321830, upload-time = "2025-10-14T10:22:40.337Z" }, + { url = "https://files.pythonhosted.org/packages/a2/6e/d80cc4909dde5f6842861288aa1a7181e7afbfc50940c862ed2848df15bd/pydantic_core-2.41.4-cp39-cp39-win32.whl", hash = "sha256:3adf61415efa6ce977041ba9745183c0e1f637ca849773afa93833e04b163feb", size = 1976706, upload-time = "2025-10-14T10:22:42.61Z" }, + { url = "https://files.pythonhosted.org/packages/29/ee/5bda8d960d4a8b24a7eeb8a856efa9c865a7a6cab714ed387b29507dc278/pydantic_core-2.41.4-cp39-cp39-win_amd64.whl", hash = "sha256:a238dd3feee263eeaeb7dc44aea4ba1364682c4f9f9467e6af5596ba322c2332", size = 2027640, upload-time = "2025-10-14T10:22:44.907Z" }, + { url = "https://files.pythonhosted.org/packages/b0/12/5ba58daa7f453454464f92b3ca7b9d7c657d8641c48e370c3ebc9a82dd78/pydantic_core-2.41.4-graalpy311-graalpy242_311_native-macosx_10_12_x86_64.whl", hash = "sha256:a1b2cfec3879afb742a7b0bcfa53e4f22ba96571c9e54d6a3afe1052d17d843b", size = 2122139, upload-time = "2025-10-14T10:22:47.288Z" }, + { url = "https://files.pythonhosted.org/packages/21/fb/6860126a77725c3108baecd10fd3d75fec25191d6381b6eb2ac660228eac/pydantic_core-2.41.4-graalpy311-graalpy242_311_native-macosx_11_0_arm64.whl", hash = "sha256:d175600d975b7c244af6eb9c9041f10059f20b8bbffec9e33fdd5ee3f67cdc42", size = 1936674, upload-time = "2025-10-14T10:22:49.555Z" }, + { url = "https://files.pythonhosted.org/packages/de/be/57dcaa3ed595d81f8757e2b44a38240ac5d37628bce25fb20d02c7018776/pydantic_core-2.41.4-graalpy311-graalpy242_311_native-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0f184d657fa4947ae5ec9c47bd7e917730fa1cbb78195037e32dcbab50aca5ee", size = 1956398, upload-time = "2025-10-14T10:22:52.19Z" }, + { url = "https://files.pythonhosted.org/packages/2f/1d/679a344fadb9695f1a6a294d739fbd21d71fa023286daeea8c0ed49e7c2b/pydantic_core-2.41.4-graalpy311-graalpy242_311_native-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1ed810568aeffed3edc78910af32af911c835cc39ebbfacd1f0ab5dd53028e5c", size = 2138674, upload-time = "2025-10-14T10:22:54.499Z" }, + { url = "https://files.pythonhosted.org/packages/c4/48/ae937e5a831b7c0dc646b2ef788c27cd003894882415300ed21927c21efa/pydantic_core-2.41.4-graalpy312-graalpy250_312_native-macosx_10_12_x86_64.whl", hash = "sha256:4f5d640aeebb438517150fdeec097739614421900e4a08db4a3ef38898798537", size = 2112087, upload-time = "2025-10-14T10:22:56.818Z" }, + { url = "https://files.pythonhosted.org/packages/5e/db/6db8073e3d32dae017da7e0d16a9ecb897d0a4d92e00634916e486097961/pydantic_core-2.41.4-graalpy312-graalpy250_312_native-macosx_11_0_arm64.whl", hash = "sha256:4a9ab037b71927babc6d9e7fc01aea9e66dc2a4a34dff06ef0724a4049629f94", size = 1920387, upload-time = "2025-10-14T10:22:59.342Z" }, + { url = "https://files.pythonhosted.org/packages/0d/c1/dd3542d072fcc336030d66834872f0328727e3b8de289c662faa04aa270e/pydantic_core-2.41.4-graalpy312-graalpy250_312_native-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e4dab9484ec605c3016df9ad4fd4f9a390bc5d816a3b10c6550f8424bb80b18c", size = 1951495, upload-time = "2025-10-14T10:23:02.089Z" }, + { url = "https://files.pythonhosted.org/packages/2b/c6/db8d13a1f8ab3f1eb08c88bd00fd62d44311e3456d1e85c0e59e0a0376e7/pydantic_core-2.41.4-graalpy312-graalpy250_312_native-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bd8a5028425820731d8c6c098ab642d7b8b999758e24acae03ed38a66eca8335", size = 2139008, upload-time = "2025-10-14T10:23:04.539Z" }, + { url = "https://files.pythonhosted.org/packages/5d/d4/912e976a2dd0b49f31c98a060ca90b353f3b73ee3ea2fd0030412f6ac5ec/pydantic_core-2.41.4-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:1e5ab4fc177dd41536b3c32b2ea11380dd3d4619a385860621478ac2d25ceb00", size = 2106739, upload-time = "2025-10-14T10:23:06.934Z" }, + { url = "https://files.pythonhosted.org/packages/71/f0/66ec5a626c81eba326072d6ee2b127f8c139543f1bf609b4842978d37833/pydantic_core-2.41.4-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:3d88d0054d3fa11ce936184896bed3c1c5441d6fa483b498fac6a5d0dd6f64a9", size = 1932549, upload-time = "2025-10-14T10:23:09.24Z" }, + { url = "https://files.pythonhosted.org/packages/c4/af/625626278ca801ea0a658c2dcf290dc9f21bb383098e99e7c6a029fccfc0/pydantic_core-2.41.4-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7b2a054a8725f05b4b6503357e0ac1c4e8234ad3b0c2ac130d6ffc66f0e170e2", size = 2135093, upload-time = "2025-10-14T10:23:11.626Z" }, + { url = "https://files.pythonhosted.org/packages/20/f6/2fba049f54e0f4975fef66be654c597a1d005320fa141863699180c7697d/pydantic_core-2.41.4-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b0d9db5a161c99375a0c68c058e227bee1d89303300802601d76a3d01f74e258", size = 2187971, upload-time = "2025-10-14T10:23:14.437Z" }, + { url = "https://files.pythonhosted.org/packages/0e/80/65ab839a2dfcd3b949202f9d920c34f9de5a537c3646662bdf2f7d999680/pydantic_core-2.41.4-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:6273ea2c8ffdac7b7fda2653c49682db815aebf4a89243a6feccf5e36c18c347", size = 2147939, upload-time = "2025-10-14T10:23:16.831Z" }, + { url = "https://files.pythonhosted.org/packages/44/58/627565d3d182ce6dfda18b8e1c841eede3629d59c9d7cbc1e12a03aeb328/pydantic_core-2.41.4-pp310-pypy310_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:4c973add636efc61de22530b2ef83a65f39b6d6f656df97f678720e20de26caa", size = 2311400, upload-time = "2025-10-14T10:23:19.234Z" }, + { url = "https://files.pythonhosted.org/packages/24/06/8a84711162ad5a5f19a88cead37cca81b4b1f294f46260ef7334ae4f24d3/pydantic_core-2.41.4-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:b69d1973354758007f46cf2d44a4f3d0933f10b6dc9bf15cf1356e037f6f731a", size = 2316840, upload-time = "2025-10-14T10:23:21.738Z" }, + { url = "https://files.pythonhosted.org/packages/aa/8b/b7bb512a4682a2f7fbfae152a755d37351743900226d29bd953aaf870eaa/pydantic_core-2.41.4-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:3619320641fd212aaf5997b6ca505e97540b7e16418f4a241f44cdf108ffb50d", size = 2149135, upload-time = "2025-10-14T10:23:24.379Z" }, + { url = "https://files.pythonhosted.org/packages/7e/7d/138e902ed6399b866f7cfe4435d22445e16fff888a1c00560d9dc79a780f/pydantic_core-2.41.4-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:491535d45cd7ad7e4a2af4a5169b0d07bebf1adfd164b0368da8aa41e19907a5", size = 2104721, upload-time = "2025-10-14T10:23:26.906Z" }, + { url = "https://files.pythonhosted.org/packages/47/13/0525623cf94627f7b53b4c2034c81edc8491cbfc7c28d5447fa318791479/pydantic_core-2.41.4-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:54d86c0cada6aba4ec4c047d0e348cbad7063b87ae0f005d9f8c9ad04d4a92a2", size = 1931608, upload-time = "2025-10-14T10:23:29.306Z" }, + { url = "https://files.pythonhosted.org/packages/d6/f9/744bc98137d6ef0a233f808bfc9b18cf94624bf30836a18d3b05d08bf418/pydantic_core-2.41.4-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eca1124aced216b2500dc2609eade086d718e8249cb9696660ab447d50a758bd", size = 2132986, upload-time = "2025-10-14T10:23:32.057Z" }, + { url = "https://files.pythonhosted.org/packages/17/c8/629e88920171173f6049386cc71f893dff03209a9ef32b4d2f7e7c264bcf/pydantic_core-2.41.4-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6c9024169becccf0cb470ada03ee578d7348c119a0d42af3dcf9eda96e3a247c", size = 2187516, upload-time = "2025-10-14T10:23:34.871Z" }, + { url = "https://files.pythonhosted.org/packages/2e/0f/4f2734688d98488782218ca61bcc118329bf5de05bb7fe3adc7dd79b0b86/pydantic_core-2.41.4-pp311-pypy311_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:26895a4268ae5a2849269f4991cdc97236e4b9c010e51137becf25182daac405", size = 2146146, upload-time = "2025-10-14T10:23:37.342Z" }, + { url = "https://files.pythonhosted.org/packages/ed/f2/ab385dbd94a052c62224b99cf99002eee99dbec40e10006c78575aead256/pydantic_core-2.41.4-pp311-pypy311_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:ca4df25762cf71308c446e33c9b1fdca2923a3f13de616e2a949f38bf21ff5a8", size = 2311296, upload-time = "2025-10-14T10:23:40.145Z" }, + { url = "https://files.pythonhosted.org/packages/fc/8e/e4f12afe1beeb9823bba5375f8f258df0cc61b056b0195fb1cf9f62a1a58/pydantic_core-2.41.4-pp311-pypy311_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:5a28fcedd762349519276c36634e71853b4541079cab4acaaac60c4421827308", size = 2315386, upload-time = "2025-10-14T10:23:42.624Z" }, + { url = "https://files.pythonhosted.org/packages/48/f7/925f65d930802e3ea2eb4d5afa4cb8730c8dc0d2cb89a59dc4ed2fcb2d74/pydantic_core-2.41.4-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:c173ddcd86afd2535e2b695217e82191580663a1d1928239f877f5a1649ef39f", size = 2147775, upload-time = "2025-10-14T10:23:45.406Z" }, +] + +[[package]] +name = "pydantic-numpy" +version = "6.0.0" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version < '3.10'", +] +dependencies = [ + { name = "compress-pickle", extra = ["lz4"], marker = "python_full_version < '3.10'" }, + { name = "numpy", version = "2.0.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, + { name = "pydantic", marker = "python_full_version < '3.10'" }, + { name = "ruamel-yaml", marker = "python_full_version < '3.10'" }, + { name = "semver", marker = "python_full_version < '3.10'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/a1/bd/7567c0fc922958438e04d1fdc2cefcaa3c3274785e0814d2e17e7d1aeeb1/pydantic_numpy-6.0.0.tar.gz", hash = "sha256:1911cb07781f017a18a7620157fd19a658d81050c64bd9714ab97eff92c7a321", size = 15708, upload-time = "2024-06-17T14:16:55.855Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/8f/86/14a660d63a852da5268b6aeeb2341c975b308794167fa40e991d68975bf3/pydantic_numpy-6.0.0-py3-none-any.whl", hash = "sha256:ca06c79c2c1d0eda6ad654f361733518c4e03875ea95903532e016d893823250", size = 19825, upload-time = "2024-06-17T14:16:52.667Z" }, +] + +[[package]] +name = "pydantic-numpy" +version = "8.0.1" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version >= '3.12'", + "python_full_version == '3.11.*'", + "python_full_version == '3.10.*'", +] +dependencies = [ + { name = "compress-pickle", extra = ["lz4"], marker = "python_full_version >= '3.10'" }, + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.10.*'" }, + { name = "numpy", version = "2.3.4", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "pydantic", marker = "python_full_version >= '3.10'" }, + { name = "ruamel-yaml", marker = "python_full_version >= '3.10'" }, + { name = "semver", marker = "python_full_version >= '3.10'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/b7/b8/8d03bc7bb02a6b2ed2f9da4868cd44261bc0656f9fa797140b0e4f354738/pydantic_numpy-8.0.1.tar.gz", hash = "sha256:85ae382ff4ebd23902791f6710d26f039a6215670d8c128ac30d5b79171fde13", size = 14983, upload-time = "2025-02-22T17:18:19.029Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/90/cb/c13d8a74419dde9590ed6fab293b516f68316ac87d06569b79b5f446d519/pydantic_numpy-8.0.1-py3-none-any.whl", hash = "sha256:bf4cd84f4f864074197e9cfeafddca76bfbd1c2ef48f88be7322cc75838de4ae", size = 20224, upload-time = "2025-02-22T17:18:17.206Z" }, +] + +[[package]] +name = "pygments" +version = "2.19.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/b0/77/a5b8c569bf593b0140bde72ea885a803b82086995367bf2037de0159d924/pygments-2.19.2.tar.gz", hash = "sha256:636cb2477cec7f8952536970bc533bc43743542f70392ae026374600add5b887", size = 4968631, upload-time = "2025-06-21T13:39:12.283Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c7/21/705964c7812476f378728bdf590ca4b771ec72385c533964653c68e86bdc/pygments-2.19.2-py3-none-any.whl", hash = "sha256:86540386c03d588bb81d44bc3928634ff26449851e99741617ecb9037ee5ec0b", size = 1225217, upload-time = "2025-06-21T13:39:07.939Z" }, +] + +[[package]] +name = "pyparsing" +version = "3.2.5" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f2/a5/181488fc2b9d093e3972d2a472855aae8a03f000592dbfce716a512b3359/pyparsing-3.2.5.tar.gz", hash = "sha256:2df8d5b7b2802ef88e8d016a2eb9c7aeaa923529cd251ed0fe4608275d4105b6", size = 1099274, upload-time = "2025-09-21T04:11:06.277Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/10/5e/1aa9a93198c6b64513c9d7752de7422c06402de6600a8767da1524f9570b/pyparsing-3.2.5-py3-none-any.whl", hash = "sha256:e38a4f02064cf41fe6593d328d0512495ad1f3d8a91c4f73fc401b3079a59a5e", size = 113890, upload-time = "2025-09-21T04:11:04.117Z" }, +] + +[[package]] +name = "pytest" +version = "8.4.2" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version < '3.10'", +] +dependencies = [ + { name = "colorama", marker = "python_full_version < '3.10' and sys_platform == 'win32'" }, + { name = "exceptiongroup", marker = "python_full_version < '3.10'" }, + { name = "iniconfig", version = "2.1.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, + { name = "packaging", marker = "python_full_version < '3.10'" }, + { name = "pluggy", marker = "python_full_version < '3.10'" }, + { name = "pygments", marker = "python_full_version < '3.10'" }, + { name = "tomli", marker = "python_full_version < '3.10'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/a3/5c/00a0e072241553e1a7496d638deababa67c5058571567b92a7eaa258397c/pytest-8.4.2.tar.gz", hash = "sha256:86c0d0b93306b961d58d62a4db4879f27fe25513d4b969df351abdddb3c30e01", size = 1519618, upload-time = "2025-09-04T14:34:22.711Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a8/a4/20da314d277121d6534b3a980b29035dcd51e6744bd79075a6ce8fa4eb8d/pytest-8.4.2-py3-none-any.whl", hash = "sha256:872f880de3fc3a5bdc88a11b39c9710c3497a547cfa9320bc3c5e62fbf272e79", size = 365750, upload-time = "2025-09-04T14:34:20.226Z" }, +] + +[[package]] +name = "pytest" +version = "9.0.2" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version >= '3.12'", + "python_full_version == '3.11.*'", + "python_full_version == '3.10.*'", +] +dependencies = [ + { name = "colorama", marker = "python_full_version >= '3.10' and sys_platform == 'win32'" }, + { name = "exceptiongroup", marker = "python_full_version == '3.10.*'" }, + { name = "iniconfig", version = "2.3.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, + { name = "packaging", marker = "python_full_version >= '3.10'" }, + { name = "pluggy", marker = "python_full_version >= '3.10'" }, + { name = "pygments", marker = "python_full_version >= '3.10'" }, + { name = "tomli", marker = "python_full_version == '3.10.*'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/d1/db/7ef3487e0fb0049ddb5ce41d3a49c235bf9ad299b6a25d5780a89f19230f/pytest-9.0.2.tar.gz", hash = "sha256:75186651a92bd89611d1d9fc20f0b4345fd827c41ccd5c299a868a05d70edf11", size = 1568901, upload-time = "2025-12-06T21:30:51.014Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3b/ab/b3226f0bd7cdcf710fbede2b3548584366da3b19b5021e74f5bde2a8fa3f/pytest-9.0.2-py3-none-any.whl", hash = "sha256:711ffd45bf766d5264d487b917733b453d917afd2b0ad65223959f59089f875b", size = 374801, upload-time = "2025-12-06T21:30:49.154Z" }, +] + +[[package]] +name = "python-dateutil" +version = "2.9.0.post0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "six" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/66/c0/0c8b6ad9f17a802ee498c46e004a0eb49bc148f2fd230864601a86dcf6db/python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3", size = 342432, upload-time = "2024-03-01T18:36:20.211Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427", size = 229892, upload-time = "2024-03-01T18:36:18.57Z" }, +] + +[[package]] +name = "pytz" +version = "2025.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f8/bf/abbd3cdfb8fbc7fb3d4d38d320f2441b1e7cbe29be4f23797b4a2b5d8aac/pytz-2025.2.tar.gz", hash = "sha256:360b9e3dbb49a209c21ad61809c7fb453643e048b38924c765813546746e81c3", size = 320884, upload-time = "2025-03-25T02:25:00.538Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/81/c4/34e93fe5f5429d7570ec1fa436f1986fb1f00c3e0f43a589fe2bbcd22c3f/pytz-2025.2-py2.py3-none-any.whl", hash = "sha256:5ddf76296dd8c44c26eb8f4b6f35488f3ccbf6fbbd7adee0b7262d43f0ec2f00", size = 509225, upload-time = "2025-03-25T02:24:58.468Z" }, +] + +[[package]] +name = "pyyaml" +version = "6.0.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/05/8e/961c0007c59b8dd7729d542c61a4d537767a59645b82a0b521206e1e25c2/pyyaml-6.0.3.tar.gz", hash = "sha256:d76623373421df22fb4cf8817020cbb7ef15c725b9d5e45f17e189bfc384190f", size = 130960, upload-time = "2025-09-25T21:33:16.546Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f4/a0/39350dd17dd6d6c6507025c0e53aef67a9293a6d37d3511f23ea510d5800/pyyaml-6.0.3-cp310-cp310-macosx_10_13_x86_64.whl", hash = "sha256:214ed4befebe12df36bcc8bc2b64b396ca31be9304b8f59e25c11cf94a4c033b", size = 184227, upload-time = "2025-09-25T21:31:46.04Z" }, + { url = "https://files.pythonhosted.org/packages/05/14/52d505b5c59ce73244f59c7a50ecf47093ce4765f116cdb98286a71eeca2/pyyaml-6.0.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:02ea2dfa234451bbb8772601d7b8e426c2bfa197136796224e50e35a78777956", size = 174019, upload-time = "2025-09-25T21:31:47.706Z" }, + { url = "https://files.pythonhosted.org/packages/43/f7/0e6a5ae5599c838c696adb4e6330a59f463265bfa1e116cfd1fbb0abaaae/pyyaml-6.0.3-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b30236e45cf30d2b8e7b3e85881719e98507abed1011bf463a8fa23e9c3e98a8", size = 740646, upload-time = "2025-09-25T21:31:49.21Z" }, + { url = "https://files.pythonhosted.org/packages/2f/3a/61b9db1d28f00f8fd0ae760459a5c4bf1b941baf714e207b6eb0657d2578/pyyaml-6.0.3-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:66291b10affd76d76f54fad28e22e51719ef9ba22b29e1d7d03d6777a9174198", size = 840793, upload-time = "2025-09-25T21:31:50.735Z" }, + { url = "https://files.pythonhosted.org/packages/7a/1e/7acc4f0e74c4b3d9531e24739e0ab832a5edf40e64fbae1a9c01941cabd7/pyyaml-6.0.3-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9c7708761fccb9397fe64bbc0395abcae8c4bf7b0eac081e12b809bf47700d0b", size = 770293, upload-time = "2025-09-25T21:31:51.828Z" }, + { url = "https://files.pythonhosted.org/packages/8b/ef/abd085f06853af0cd59fa5f913d61a8eab65d7639ff2a658d18a25d6a89d/pyyaml-6.0.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:418cf3f2111bc80e0933b2cd8cd04f286338bb88bdc7bc8e6dd775ebde60b5e0", size = 732872, upload-time = "2025-09-25T21:31:53.282Z" }, + { url = "https://files.pythonhosted.org/packages/1f/15/2bc9c8faf6450a8b3c9fc5448ed869c599c0a74ba2669772b1f3a0040180/pyyaml-6.0.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:5e0b74767e5f8c593e8c9b5912019159ed0533c70051e9cce3e8b6aa699fcd69", size = 758828, upload-time = "2025-09-25T21:31:54.807Z" }, + { url = "https://files.pythonhosted.org/packages/a3/00/531e92e88c00f4333ce359e50c19b8d1de9fe8d581b1534e35ccfbc5f393/pyyaml-6.0.3-cp310-cp310-win32.whl", hash = "sha256:28c8d926f98f432f88adc23edf2e6d4921ac26fb084b028c733d01868d19007e", size = 142415, upload-time = "2025-09-25T21:31:55.885Z" }, + { url = "https://files.pythonhosted.org/packages/2a/fa/926c003379b19fca39dd4634818b00dec6c62d87faf628d1394e137354d4/pyyaml-6.0.3-cp310-cp310-win_amd64.whl", hash = "sha256:bdb2c67c6c1390b63c6ff89f210c8fd09d9a1217a465701eac7316313c915e4c", size = 158561, upload-time = "2025-09-25T21:31:57.406Z" }, + { url = "https://files.pythonhosted.org/packages/6d/16/a95b6757765b7b031c9374925bb718d55e0a9ba8a1b6a12d25962ea44347/pyyaml-6.0.3-cp311-cp311-macosx_10_13_x86_64.whl", hash = "sha256:44edc647873928551a01e7a563d7452ccdebee747728c1080d881d68af7b997e", size = 185826, upload-time = "2025-09-25T21:31:58.655Z" }, + { url = "https://files.pythonhosted.org/packages/16/19/13de8e4377ed53079ee996e1ab0a9c33ec2faf808a4647b7b4c0d46dd239/pyyaml-6.0.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:652cb6edd41e718550aad172851962662ff2681490a8a711af6a4d288dd96824", size = 175577, upload-time = "2025-09-25T21:32:00.088Z" }, + { url = "https://files.pythonhosted.org/packages/0c/62/d2eb46264d4b157dae1275b573017abec435397aa59cbcdab6fc978a8af4/pyyaml-6.0.3-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:10892704fc220243f5305762e276552a0395f7beb4dbf9b14ec8fd43b57f126c", size = 775556, upload-time = "2025-09-25T21:32:01.31Z" }, + { url = "https://files.pythonhosted.org/packages/10/cb/16c3f2cf3266edd25aaa00d6c4350381c8b012ed6f5276675b9eba8d9ff4/pyyaml-6.0.3-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:850774a7879607d3a6f50d36d04f00ee69e7fc816450e5f7e58d7f17f1ae5c00", size = 882114, upload-time = "2025-09-25T21:32:03.376Z" }, + { url = "https://files.pythonhosted.org/packages/71/60/917329f640924b18ff085ab889a11c763e0b573da888e8404ff486657602/pyyaml-6.0.3-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b8bb0864c5a28024fac8a632c443c87c5aa6f215c0b126c449ae1a150412f31d", size = 806638, upload-time = "2025-09-25T21:32:04.553Z" }, + { url = "https://files.pythonhosted.org/packages/dd/6f/529b0f316a9fd167281a6c3826b5583e6192dba792dd55e3203d3f8e655a/pyyaml-6.0.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:1d37d57ad971609cf3c53ba6a7e365e40660e3be0e5175fa9f2365a379d6095a", size = 767463, upload-time = "2025-09-25T21:32:06.152Z" }, + { url = "https://files.pythonhosted.org/packages/f2/6a/b627b4e0c1dd03718543519ffb2f1deea4a1e6d42fbab8021936a4d22589/pyyaml-6.0.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:37503bfbfc9d2c40b344d06b2199cf0e96e97957ab1c1b546fd4f87e53e5d3e4", size = 794986, upload-time = "2025-09-25T21:32:07.367Z" }, + { url = "https://files.pythonhosted.org/packages/45/91/47a6e1c42d9ee337c4839208f30d9f09caa9f720ec7582917b264defc875/pyyaml-6.0.3-cp311-cp311-win32.whl", hash = "sha256:8098f252adfa6c80ab48096053f512f2321f0b998f98150cea9bd23d83e1467b", size = 142543, upload-time = "2025-09-25T21:32:08.95Z" }, + { url = "https://files.pythonhosted.org/packages/da/e3/ea007450a105ae919a72393cb06f122f288ef60bba2dc64b26e2646fa315/pyyaml-6.0.3-cp311-cp311-win_amd64.whl", hash = "sha256:9f3bfb4965eb874431221a3ff3fdcddc7e74e3b07799e0e84ca4a0f867d449bf", size = 158763, upload-time = "2025-09-25T21:32:09.96Z" }, + { url = "https://files.pythonhosted.org/packages/d1/33/422b98d2195232ca1826284a76852ad5a86fe23e31b009c9886b2d0fb8b2/pyyaml-6.0.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:7f047e29dcae44602496db43be01ad42fc6f1cc0d8cd6c83d342306c32270196", size = 182063, upload-time = "2025-09-25T21:32:11.445Z" }, + { url = "https://files.pythonhosted.org/packages/89/a0/6cf41a19a1f2f3feab0e9c0b74134aa2ce6849093d5517a0c550fe37a648/pyyaml-6.0.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:fc09d0aa354569bc501d4e787133afc08552722d3ab34836a80547331bb5d4a0", size = 173973, upload-time = "2025-09-25T21:32:12.492Z" }, + { url = "https://files.pythonhosted.org/packages/ed/23/7a778b6bd0b9a8039df8b1b1d80e2e2ad78aa04171592c8a5c43a56a6af4/pyyaml-6.0.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:9149cad251584d5fb4981be1ecde53a1ca46c891a79788c0df828d2f166bda28", size = 775116, upload-time = "2025-09-25T21:32:13.652Z" }, + { url = "https://files.pythonhosted.org/packages/65/30/d7353c338e12baef4ecc1b09e877c1970bd3382789c159b4f89d6a70dc09/pyyaml-6.0.3-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:5fdec68f91a0c6739b380c83b951e2c72ac0197ace422360e6d5a959d8d97b2c", size = 844011, upload-time = "2025-09-25T21:32:15.21Z" }, + { url = "https://files.pythonhosted.org/packages/8b/9d/b3589d3877982d4f2329302ef98a8026e7f4443c765c46cfecc8858c6b4b/pyyaml-6.0.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ba1cc08a7ccde2d2ec775841541641e4548226580ab850948cbfda66a1befcdc", size = 807870, upload-time = "2025-09-25T21:32:16.431Z" }, + { url = "https://files.pythonhosted.org/packages/05/c0/b3be26a015601b822b97d9149ff8cb5ead58c66f981e04fedf4e762f4bd4/pyyaml-6.0.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:8dc52c23056b9ddd46818a57b78404882310fb473d63f17b07d5c40421e47f8e", size = 761089, upload-time = "2025-09-25T21:32:17.56Z" }, + { url = "https://files.pythonhosted.org/packages/be/8e/98435a21d1d4b46590d5459a22d88128103f8da4c2d4cb8f14f2a96504e1/pyyaml-6.0.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:41715c910c881bc081f1e8872880d3c650acf13dfa8214bad49ed4cede7c34ea", size = 790181, upload-time = "2025-09-25T21:32:18.834Z" }, + { url = "https://files.pythonhosted.org/packages/74/93/7baea19427dcfbe1e5a372d81473250b379f04b1bd3c4c5ff825e2327202/pyyaml-6.0.3-cp312-cp312-win32.whl", hash = "sha256:96b533f0e99f6579b3d4d4995707cf36df9100d67e0c8303a0c55b27b5f99bc5", size = 137658, upload-time = "2025-09-25T21:32:20.209Z" }, + { url = "https://files.pythonhosted.org/packages/86/bf/899e81e4cce32febab4fb42bb97dcdf66bc135272882d1987881a4b519e9/pyyaml-6.0.3-cp312-cp312-win_amd64.whl", hash = "sha256:5fcd34e47f6e0b794d17de1b4ff496c00986e1c83f7ab2fb8fcfe9616ff7477b", size = 154003, upload-time = "2025-09-25T21:32:21.167Z" }, + { url = "https://files.pythonhosted.org/packages/1a/08/67bd04656199bbb51dbed1439b7f27601dfb576fb864099c7ef0c3e55531/pyyaml-6.0.3-cp312-cp312-win_arm64.whl", hash = "sha256:64386e5e707d03a7e172c0701abfb7e10f0fb753ee1d773128192742712a98fd", size = 140344, upload-time = "2025-09-25T21:32:22.617Z" }, + { url = "https://files.pythonhosted.org/packages/d1/11/0fd08f8192109f7169db964b5707a2f1e8b745d4e239b784a5a1dd80d1db/pyyaml-6.0.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:8da9669d359f02c0b91ccc01cac4a67f16afec0dac22c2ad09f46bee0697eba8", size = 181669, upload-time = "2025-09-25T21:32:23.673Z" }, + { url = "https://files.pythonhosted.org/packages/b1/16/95309993f1d3748cd644e02e38b75d50cbc0d9561d21f390a76242ce073f/pyyaml-6.0.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:2283a07e2c21a2aa78d9c4442724ec1eb15f5e42a723b99cb3d822d48f5f7ad1", size = 173252, upload-time = "2025-09-25T21:32:25.149Z" }, + { url = "https://files.pythonhosted.org/packages/50/31/b20f376d3f810b9b2371e72ef5adb33879b25edb7a6d072cb7ca0c486398/pyyaml-6.0.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ee2922902c45ae8ccada2c5b501ab86c36525b883eff4255313a253a3160861c", size = 767081, upload-time = "2025-09-25T21:32:26.575Z" }, + { url = "https://files.pythonhosted.org/packages/49/1e/a55ca81e949270d5d4432fbbd19dfea5321eda7c41a849d443dc92fd1ff7/pyyaml-6.0.3-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:a33284e20b78bd4a18c8c2282d549d10bc8408a2a7ff57653c0cf0b9be0afce5", size = 841159, upload-time = "2025-09-25T21:32:27.727Z" }, + { url = "https://files.pythonhosted.org/packages/74/27/e5b8f34d02d9995b80abcef563ea1f8b56d20134d8f4e5e81733b1feceb2/pyyaml-6.0.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0f29edc409a6392443abf94b9cf89ce99889a1dd5376d94316ae5145dfedd5d6", size = 801626, upload-time = "2025-09-25T21:32:28.878Z" }, + { url = "https://files.pythonhosted.org/packages/f9/11/ba845c23988798f40e52ba45f34849aa8a1f2d4af4b798588010792ebad6/pyyaml-6.0.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:f7057c9a337546edc7973c0d3ba84ddcdf0daa14533c2065749c9075001090e6", size = 753613, upload-time = "2025-09-25T21:32:30.178Z" }, + { url = "https://files.pythonhosted.org/packages/3d/e0/7966e1a7bfc0a45bf0a7fb6b98ea03fc9b8d84fa7f2229e9659680b69ee3/pyyaml-6.0.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:eda16858a3cab07b80edaf74336ece1f986ba330fdb8ee0d6c0d68fe82bc96be", size = 794115, upload-time = "2025-09-25T21:32:31.353Z" }, + { url = "https://files.pythonhosted.org/packages/de/94/980b50a6531b3019e45ddeada0626d45fa85cbe22300844a7983285bed3b/pyyaml-6.0.3-cp313-cp313-win32.whl", hash = "sha256:d0eae10f8159e8fdad514efdc92d74fd8d682c933a6dd088030f3834bc8e6b26", size = 137427, upload-time = "2025-09-25T21:32:32.58Z" }, + { url = "https://files.pythonhosted.org/packages/97/c9/39d5b874e8b28845e4ec2202b5da735d0199dbe5b8fb85f91398814a9a46/pyyaml-6.0.3-cp313-cp313-win_amd64.whl", hash = "sha256:79005a0d97d5ddabfeeea4cf676af11e647e41d81c9a7722a193022accdb6b7c", size = 154090, upload-time = "2025-09-25T21:32:33.659Z" }, + { url = "https://files.pythonhosted.org/packages/73/e8/2bdf3ca2090f68bb3d75b44da7bbc71843b19c9f2b9cb9b0f4ab7a5a4329/pyyaml-6.0.3-cp313-cp313-win_arm64.whl", hash = "sha256:5498cd1645aa724a7c71c8f378eb29ebe23da2fc0d7a08071d89469bf1d2defb", size = 140246, upload-time = "2025-09-25T21:32:34.663Z" }, + { url = "https://files.pythonhosted.org/packages/9d/8c/f4bd7f6465179953d3ac9bc44ac1a8a3e6122cf8ada906b4f96c60172d43/pyyaml-6.0.3-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:8d1fab6bb153a416f9aeb4b8763bc0f22a5586065f86f7664fc23339fc1c1fac", size = 181814, upload-time = "2025-09-25T21:32:35.712Z" }, + { url = "https://files.pythonhosted.org/packages/bd/9c/4d95bb87eb2063d20db7b60faa3840c1b18025517ae857371c4dd55a6b3a/pyyaml-6.0.3-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:34d5fcd24b8445fadc33f9cf348c1047101756fd760b4dacb5c3e99755703310", size = 173809, upload-time = "2025-09-25T21:32:36.789Z" }, + { url = "https://files.pythonhosted.org/packages/92/b5/47e807c2623074914e29dabd16cbbdd4bf5e9b2db9f8090fa64411fc5382/pyyaml-6.0.3-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:501a031947e3a9025ed4405a168e6ef5ae3126c59f90ce0cd6f2bfc477be31b7", size = 766454, upload-time = "2025-09-25T21:32:37.966Z" }, + { url = "https://files.pythonhosted.org/packages/02/9e/e5e9b168be58564121efb3de6859c452fccde0ab093d8438905899a3a483/pyyaml-6.0.3-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:b3bc83488de33889877a0f2543ade9f70c67d66d9ebb4ac959502e12de895788", size = 836355, upload-time = "2025-09-25T21:32:39.178Z" }, + { url = "https://files.pythonhosted.org/packages/88/f9/16491d7ed2a919954993e48aa941b200f38040928474c9e85ea9e64222c3/pyyaml-6.0.3-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c458b6d084f9b935061bc36216e8a69a7e293a2f1e68bf956dcd9e6cbcd143f5", size = 794175, upload-time = "2025-09-25T21:32:40.865Z" }, + { url = "https://files.pythonhosted.org/packages/dd/3f/5989debef34dc6397317802b527dbbafb2b4760878a53d4166579111411e/pyyaml-6.0.3-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:7c6610def4f163542a622a73fb39f534f8c101d690126992300bf3207eab9764", size = 755228, upload-time = "2025-09-25T21:32:42.084Z" }, + { url = "https://files.pythonhosted.org/packages/d7/ce/af88a49043cd2e265be63d083fc75b27b6ed062f5f9fd6cdc223ad62f03e/pyyaml-6.0.3-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:5190d403f121660ce8d1d2c1bb2ef1bd05b5f68533fc5c2ea899bd15f4399b35", size = 789194, upload-time = "2025-09-25T21:32:43.362Z" }, + { url = "https://files.pythonhosted.org/packages/23/20/bb6982b26a40bb43951265ba29d4c246ef0ff59c9fdcdf0ed04e0687de4d/pyyaml-6.0.3-cp314-cp314-win_amd64.whl", hash = "sha256:4a2e8cebe2ff6ab7d1050ecd59c25d4c8bd7e6f400f5f82b96557ac0abafd0ac", size = 156429, upload-time = "2025-09-25T21:32:57.844Z" }, + { url = "https://files.pythonhosted.org/packages/f4/f4/a4541072bb9422c8a883ab55255f918fa378ecf083f5b85e87fc2b4eda1b/pyyaml-6.0.3-cp314-cp314-win_arm64.whl", hash = "sha256:93dda82c9c22deb0a405ea4dc5f2d0cda384168e466364dec6255b293923b2f3", size = 143912, upload-time = "2025-09-25T21:32:59.247Z" }, + { url = "https://files.pythonhosted.org/packages/7c/f9/07dd09ae774e4616edf6cda684ee78f97777bdd15847253637a6f052a62f/pyyaml-6.0.3-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:02893d100e99e03eda1c8fd5c441d8c60103fd175728e23e431db1b589cf5ab3", size = 189108, upload-time = "2025-09-25T21:32:44.377Z" }, + { url = "https://files.pythonhosted.org/packages/4e/78/8d08c9fb7ce09ad8c38ad533c1191cf27f7ae1effe5bb9400a46d9437fcf/pyyaml-6.0.3-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:c1ff362665ae507275af2853520967820d9124984e0f7466736aea23d8611fba", size = 183641, upload-time = "2025-09-25T21:32:45.407Z" }, + { url = "https://files.pythonhosted.org/packages/7b/5b/3babb19104a46945cf816d047db2788bcaf8c94527a805610b0289a01c6b/pyyaml-6.0.3-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6adc77889b628398debc7b65c073bcb99c4a0237b248cacaf3fe8a557563ef6c", size = 831901, upload-time = "2025-09-25T21:32:48.83Z" }, + { url = "https://files.pythonhosted.org/packages/8b/cc/dff0684d8dc44da4d22a13f35f073d558c268780ce3c6ba1b87055bb0b87/pyyaml-6.0.3-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:a80cb027f6b349846a3bf6d73b5e95e782175e52f22108cfa17876aaeff93702", size = 861132, upload-time = "2025-09-25T21:32:50.149Z" }, + { url = "https://files.pythonhosted.org/packages/b1/5e/f77dc6b9036943e285ba76b49e118d9ea929885becb0a29ba8a7c75e29fe/pyyaml-6.0.3-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:00c4bdeba853cc34e7dd471f16b4114f4162dc03e6b7afcc2128711f0eca823c", size = 839261, upload-time = "2025-09-25T21:32:51.808Z" }, + { url = "https://files.pythonhosted.org/packages/ce/88/a9db1376aa2a228197c58b37302f284b5617f56a5d959fd1763fb1675ce6/pyyaml-6.0.3-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:66e1674c3ef6f541c35191caae2d429b967b99e02040f5ba928632d9a7f0f065", size = 805272, upload-time = "2025-09-25T21:32:52.941Z" }, + { url = "https://files.pythonhosted.org/packages/da/92/1446574745d74df0c92e6aa4a7b0b3130706a4142b2d1a5869f2eaa423c6/pyyaml-6.0.3-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:16249ee61e95f858e83976573de0f5b2893b3677ba71c9dd36b9cf8be9ac6d65", size = 829923, upload-time = "2025-09-25T21:32:54.537Z" }, + { url = "https://files.pythonhosted.org/packages/f0/7a/1c7270340330e575b92f397352af856a8c06f230aa3e76f86b39d01b416a/pyyaml-6.0.3-cp314-cp314t-win_amd64.whl", hash = "sha256:4ad1906908f2f5ae4e5a8ddfce73c320c2a1429ec52eafd27138b7f1cbe341c9", size = 174062, upload-time = "2025-09-25T21:32:55.767Z" }, + { url = "https://files.pythonhosted.org/packages/f1/12/de94a39c2ef588c7e6455cfbe7343d3b2dc9d6b6b2f40c4c6565744c873d/pyyaml-6.0.3-cp314-cp314t-win_arm64.whl", hash = "sha256:ebc55a14a21cb14062aa4162f906cd962b28e2e9ea38f9b4391244cd8de4ae0b", size = 149341, upload-time = "2025-09-25T21:32:56.828Z" }, + { url = "https://files.pythonhosted.org/packages/9f/62/67fc8e68a75f738c9200422bf65693fb79a4cd0dc5b23310e5202e978090/pyyaml-6.0.3-cp39-cp39-macosx_10_13_x86_64.whl", hash = "sha256:b865addae83924361678b652338317d1bd7e79b1f4596f96b96c77a5a34b34da", size = 184450, upload-time = "2025-09-25T21:33:00.618Z" }, + { url = "https://files.pythonhosted.org/packages/ae/92/861f152ce87c452b11b9d0977952259aa7df792d71c1053365cc7b09cc08/pyyaml-6.0.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c3355370a2c156cffb25e876646f149d5d68f5e0a3ce86a5084dd0b64a994917", size = 174319, upload-time = "2025-09-25T21:33:02.086Z" }, + { url = "https://files.pythonhosted.org/packages/d0/cd/f0cfc8c74f8a030017a2b9c771b7f47e5dd702c3e28e5b2071374bda2948/pyyaml-6.0.3-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3c5677e12444c15717b902a5798264fa7909e41153cdf9ef7ad571b704a63dd9", size = 737631, upload-time = "2025-09-25T21:33:03.25Z" }, + { url = "https://files.pythonhosted.org/packages/ef/b2/18f2bd28cd2055a79a46c9b0895c0b3d987ce40ee471cecf58a1a0199805/pyyaml-6.0.3-cp39-cp39-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:5ed875a24292240029e4483f9d4a4b8a1ae08843b9c54f43fcc11e404532a8a5", size = 836795, upload-time = "2025-09-25T21:33:05.014Z" }, + { url = "https://files.pythonhosted.org/packages/73/b9/793686b2d54b531203c160ef12bec60228a0109c79bae6c1277961026770/pyyaml-6.0.3-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0150219816b6a1fa26fb4699fb7daa9caf09eb1999f3b70fb6e786805e80375a", size = 750767, upload-time = "2025-09-25T21:33:06.398Z" }, + { url = "https://files.pythonhosted.org/packages/a9/86/a137b39a611def2ed78b0e66ce2fe13ee701a07c07aebe55c340ed2a050e/pyyaml-6.0.3-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:fa160448684b4e94d80416c0fa4aac48967a969efe22931448d853ada8baf926", size = 727982, upload-time = "2025-09-25T21:33:08.708Z" }, + { url = "https://files.pythonhosted.org/packages/dd/62/71c27c94f457cf4418ef8ccc71735324c549f7e3ea9d34aba50874563561/pyyaml-6.0.3-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:27c0abcb4a5dac13684a37f76e701e054692a9b2d3064b70f5e4eb54810553d7", size = 755677, upload-time = "2025-09-25T21:33:09.876Z" }, + { url = "https://files.pythonhosted.org/packages/29/3d/6f5e0d58bd924fb0d06c3a6bad00effbdae2de5adb5cda5648006ffbd8d3/pyyaml-6.0.3-cp39-cp39-win32.whl", hash = "sha256:1ebe39cb5fc479422b83de611d14e2c0d3bb2a18bbcb01f229ab3cfbd8fee7a0", size = 142592, upload-time = "2025-09-25T21:33:10.983Z" }, + { url = "https://files.pythonhosted.org/packages/f0/0c/25113e0b5e103d7f1490c0e947e303fe4a696c10b501dea7a9f49d4e876c/pyyaml-6.0.3-cp39-cp39-win_amd64.whl", hash = "sha256:2e71d11abed7344e42a8849600193d15b6def118602c4c176f748e4583246007", size = 158777, upload-time = "2025-09-25T21:33:15.55Z" }, +] + +[[package]] +name = "rdkit" +version = "2025.9.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy", version = "2.0.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.10.*'" }, + { name = "numpy", version = "2.3.4", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "pillow", version = "11.3.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, + { name = "pillow", version = "12.0.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/12/86/ffa67bd5a49f5b9e809785b8628f1a53065c7c38f70fad8638a78c459cc9/rdkit-2025.9.1-cp310-cp310-macosx_10_15_x86_64.whl", hash = "sha256:46ea08f6ba7ed57dba015a5e4dc42776dc0359121959a70a5487ca81611ccace", size = 31690565, upload-time = "2025-10-06T09:04:02.002Z" }, + { url = "https://files.pythonhosted.org/packages/dc/8f/cd7fa64e38c94e174cc5dfce939d9aa1a93833252671ff07511591be0686/rdkit-2025.9.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e50a89b2755e25d7d4a69e7125daa9d96242449e2796c7eefb58e468de7933ae", size = 29138210, upload-time = "2025-10-06T09:04:06.436Z" }, + { url = "https://files.pythonhosted.org/packages/26/d1/12b91963ebc0097985bb158097c8fb27a8c89c1fa7ab6b69a504accd0254/rdkit-2025.9.1-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:ed5030c377da16c5888f742cf81e223db29921cf03b62d31209e2aa3c4bc297b", size = 34764104, upload-time = "2025-10-06T09:04:10.347Z" }, + { url = "https://files.pythonhosted.org/packages/1f/14/3faee55479e8a101e646e2e78359a49138fa42bbde328033b235005ef95c/rdkit-2025.9.1-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:e5d6cb67637890bdebe5cb43c2882bd39c7ba1a6c22e0c7609b98a91895a361a", size = 36227927, upload-time = "2025-10-06T09:04:17.736Z" }, + { url = "https://files.pythonhosted.org/packages/37/04/4e0f4ae1e2ea49f8dc828d62882380621b2a06bcba9704bc15549d246843/rdkit-2025.9.1-cp310-cp310-win_amd64.whl", hash = "sha256:707bf5e965b736f3a45f14de29ae569197b5391b7c39c1c53bc6f17bbb36d622", size = 23562396, upload-time = "2025-10-06T09:04:21.661Z" }, + { url = "https://files.pythonhosted.org/packages/36/bf/cd7258a752b21b4c1051b7c0acd6fb2eb7787ebcaa35598843edd6dc9ade/rdkit-2025.9.1-cp311-cp311-macosx_10_15_x86_64.whl", hash = "sha256:00f7c5b3b095843f0f09df61c4e56c7f1468d4943919fa13d4b6155b790e6880", size = 31691070, upload-time = "2025-10-06T09:04:25.405Z" }, + { url = "https://files.pythonhosted.org/packages/99/57/97a248b83abf6f0d8ff659987d1209e84b18927f9c5c8692c21ed00c3ba1/rdkit-2025.9.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:41246621a072c107855a09cb7bb25bf4480a86223ab7f9121f2a08636ddd8c7a", size = 29138690, upload-time = "2025-10-06T09:04:29.072Z" }, + { url = "https://files.pythonhosted.org/packages/12/d0/ddd5f09917cfbcdfdb87fd40870d38b93ef8ef159489c88da2bcaec36a8d/rdkit-2025.9.1-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:9fa4b8c77c5a3107484130c089a3626eb61d078d23e5ebca87a7a84e238f4063", size = 34760030, upload-time = "2025-10-06T09:04:32.914Z" }, + { url = "https://files.pythonhosted.org/packages/ba/7f/7dc9cd00a6820c82c7c06328c8d73fd131a73ed12a499064db7a0a8cbff3/rdkit-2025.9.1-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:fefdb04534f4875aacf6a9a54a8f77ba482c55289f9de5fb8b8f66dccfdc2b05", size = 36226948, upload-time = "2025-10-06T09:04:37.093Z" }, + { url = "https://files.pythonhosted.org/packages/8b/b5/122cf75a4ab4abe430db157b72b42e483d815ee2c7b214ecfa0de8680156/rdkit-2025.9.1-cp311-cp311-win_amd64.whl", hash = "sha256:22dbecbeca83eee100417b3289dceb23974598f01a047284c196f863ee2b9d75", size = 23563087, upload-time = "2025-10-06T09:04:40.412Z" }, + { url = "https://files.pythonhosted.org/packages/d8/37/0875c5af275031b57e3da0e103a85ff2d3fdbacfde5ab459f9bfed4d774e/rdkit-2025.9.1-cp312-cp312-macosx_10_15_x86_64.whl", hash = "sha256:4b068562a0fc9a17db77e76b77e10957c56fa69f0a0b3a25bd6e35e924237e59", size = 31766217, upload-time = "2025-10-06T09:04:43.675Z" }, + { url = "https://files.pythonhosted.org/packages/0e/1b/ceebffc8d123594992f90f453dc666c9730a74841692c862996d335c25b0/rdkit-2025.9.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:58218214f799100f6cb3b12e7bf3abdf3e17c1b5959d42a6c797b0f98f501bab", size = 29182056, upload-time = "2025-10-06T09:04:47.686Z" }, + { url = "https://files.pythonhosted.org/packages/23/8e/f5ffc57520212bcd0937f175e550faf9c1bdab9e6c3b86401e734c01cc06/rdkit-2025.9.1-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:b25c37c452ec41a5b5a2fce9aef9f637b569cfea464c3cfa95e81477123cd08f", size = 34646881, upload-time = "2025-10-06T09:04:52.322Z" }, + { url = "https://files.pythonhosted.org/packages/57/00/83ad99664bb500ee4864964c2b4099bdfb621b58fbc9ae265766e224fbd6/rdkit-2025.9.1-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:cf7f05cea1e1c11662490e9bd5f95d44591dddc4c8f6a792d0eca6394edc606b", size = 36167555, upload-time = "2025-10-06T09:04:56.036Z" }, + { url = "https://files.pythonhosted.org/packages/dd/79/ed349426406a832fe99eb1c206e629e2194a1024cc22a5e8e7db8207b7d0/rdkit-2025.9.1-cp312-cp312-win_amd64.whl", hash = "sha256:a22d77f9b6b3c00d25001d323fb3febde7e96534f6e7cee8b84967220e729eea", size = 23578781, upload-time = "2025-10-06T09:05:00.134Z" }, + { url = "https://files.pythonhosted.org/packages/95/b7/b04ca14b404852700f273767070f5cd5b7500d9ca2257e41ed68de6c3955/rdkit-2025.9.1-cp313-cp313-macosx_10_15_x86_64.whl", hash = "sha256:42f3c4225aa17a53681e38fcbb53e44fa02a7937abe58fcb7605368f396008f3", size = 31765114, upload-time = "2025-10-06T09:05:04.204Z" }, + { url = "https://files.pythonhosted.org/packages/3a/2e/220f55ba68b2745c9f15fe3db94a1013ebd41e087534757a9b1dbaff393a/rdkit-2025.9.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:b6a14105beafa319d781854cc24acd6341cd600cd02e1659f93ac130b9d2787c", size = 29181058, upload-time = "2025-10-06T09:05:07.723Z" }, + { url = "https://files.pythonhosted.org/packages/88/b5/9501e4bc30d787b8266e5edd8268bec71972af1a7f717c7b837fdc1dd98a/rdkit-2025.9.1-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:a6fded29ef405c09e48e2fd62c1680948c98f7d34f11ca209fc7690f44cd0f4e", size = 34645507, upload-time = "2025-10-06T09:05:11.493Z" }, + { url = "https://files.pythonhosted.org/packages/bb/bb/c562dc38db3e23c4a22459552c4642c3e6a59dc50ff42ba917c2d7095110/rdkit-2025.9.1-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:9c6923647f4041df8c39b1aff147b36545e66573f331ce929418176849caebfe", size = 36166073, upload-time = "2025-10-06T09:05:15.796Z" }, + { url = "https://files.pythonhosted.org/packages/d4/01/3ba5d12ce9941767b2c4ab0fa672e2606b1d36b2b7f0798bce846930708b/rdkit-2025.9.1-cp313-cp313-win_amd64.whl", hash = "sha256:5ee6b3f2880a0d62930855ac3d56a21c518d952e9b660f60e2f49d0183e36b9f", size = 23577803, upload-time = "2025-10-06T09:05:19.128Z" }, + { url = "https://files.pythonhosted.org/packages/7d/94/225792e12046b492e5c37671480e58d2bff14035c0d18122fa2b7abca155/rdkit-2025.9.1-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:fa71303ae06d5d7aea6e76a5321a02f83ed4057ca10566269502b511a6ba8c48", size = 31767003, upload-time = "2025-10-06T09:05:22.734Z" }, + { url = "https://files.pythonhosted.org/packages/80/46/b06b28b43d70a83cfd35a1ede3b549d2b2bf9547e898bb95aa84e9ed10e8/rdkit-2025.9.1-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:02c8d361b0e7d0adda46687a82777a34be0b913cbbdacbedb88b7c066262de43", size = 29201272, upload-time = "2025-10-06T09:05:26.205Z" }, + { url = "https://files.pythonhosted.org/packages/ab/80/b9f990de716344e7c09dafaadc1c7397d15e78c02ecb984a2408ca2b3970/rdkit-2025.9.1-cp314-cp314-manylinux_2_28_aarch64.whl", hash = "sha256:3fe0a66acd4065cc379f0d46c9b7c89b3822642a44683311bd269093edbab967", size = 34676950, upload-time = "2025-10-06T09:05:29.88Z" }, + { url = "https://files.pythonhosted.org/packages/fe/76/e1acd4a03f31cf323bd4899062ae954df029d06b1f8794bb1a03dbbf9f5c/rdkit-2025.9.1-cp314-cp314-manylinux_2_28_x86_64.whl", hash = "sha256:1d6c0f30f206067648f567e62e294d98a55bf40c550684f3da54ea061305f5b5", size = 36174898, upload-time = "2025-10-06T09:05:34.096Z" }, + { url = "https://files.pythonhosted.org/packages/d5/0f/39b8fc050830146a011ed86b7c5c738b30fd22fb0532e91984ceef6d00a8/rdkit-2025.9.1-cp314-cp314-win_amd64.whl", hash = "sha256:5393ef7c40c7552d54f569057a4914159b0cd1a634f110e5a884659550f1ff0b", size = 24057571, upload-time = "2025-10-06T09:05:37.368Z" }, + { url = "https://files.pythonhosted.org/packages/30/5a/376cc4eb9792b57531290ea0d3a538c7e93f491f57b890842ba24bf19f8f/rdkit-2025.9.1-cp39-cp39-macosx_10_15_x86_64.whl", hash = "sha256:917749c11d41fb8040f95194fc378fedc373389df1e4a1b411ac4116dd51a868", size = 31691147, upload-time = "2025-10-06T09:05:40.759Z" }, + { url = "https://files.pythonhosted.org/packages/1d/ee/042a156c55854143a21f9bbf140a6c95a7f21ab42cac34dada37ef1cc4d2/rdkit-2025.9.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:4265fc94a06b93217a223e2b9305c15240612e9894e33ac242926b48563388ef", size = 29138719, upload-time = "2025-10-06T09:05:43.984Z" }, + { url = "https://files.pythonhosted.org/packages/24/7e/d4022a3056cf68705bcb574dd2f0951b875d767c83c1932dc9167b694393/rdkit-2025.9.1-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:fceb3224a130f99873159cd82bb76198f13b664b91bb208f56d7c611c18dd65a", size = 34765135, upload-time = "2025-10-06T09:05:47.648Z" }, + { url = "https://files.pythonhosted.org/packages/2a/7b/18ba6ccc7ef20b963e1ef454994500b5f3da040ec2fea4c43b8be5016bce/rdkit-2025.9.1-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:b0fb192846dc0ce40ffe0c3ac3fc349f4f1e221922e44380e99ce177ec3e455f", size = 36228414, upload-time = "2025-10-06T09:05:51.914Z" }, + { url = "https://files.pythonhosted.org/packages/44/fe/429177fa328fa859b58aa3be814c3d8d834af579fb46853923c4fc3a0822/rdkit-2025.9.1-cp39-cp39-win_amd64.whl", hash = "sha256:8dd67e9291aa0561c97a1015d2a62926beafac6d2240e7110578c20fca300f00", size = 23565613, upload-time = "2025-10-06T09:05:56.528Z" }, +] + +[[package]] +name = "ruamel-yaml" +version = "0.18.15" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "ruamel-yaml-clib", marker = "python_full_version < '3.14' and platform_python_implementation == 'CPython'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/3e/db/f3950f5e5031b618aae9f423a39bf81a55c148aecd15a34527898e752cf4/ruamel.yaml-0.18.15.tar.gz", hash = "sha256:dbfca74b018c4c3fba0b9cc9ee33e53c371194a9000e694995e620490fd40700", size = 146865, upload-time = "2025-08-19T11:15:10.694Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d1/e5/f2a0621f1781b76a38194acae72f01e37b1941470407345b6e8653ad7640/ruamel.yaml-0.18.15-py3-none-any.whl", hash = "sha256:148f6488d698b7a5eded5ea793a025308b25eca97208181b6a026037f391f701", size = 119702, upload-time = "2025-08-19T11:15:07.696Z" }, +] + +[[package]] +name = "ruamel-yaml-clib" +version = "0.2.14" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d8/e9/39ec4d4b3f91188fad1842748f67d4e749c77c37e353c4e545052ee8e893/ruamel.yaml.clib-0.2.14.tar.gz", hash = "sha256:803f5044b13602d58ea378576dd75aa759f52116a0232608e8fdada4da33752e", size = 225394, upload-time = "2025-09-22T19:51:23.753Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b4/56/35a0a752415ae01992c68f5a6513bdef0e1b6fbdb60d7619342ce12346a0/ruamel.yaml.clib-0.2.14-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:f8b2acb0ffdd2ce8208accbec2dca4a06937d556fdcaefd6473ba1b5daa7e3c4", size = 269216, upload-time = "2025-09-23T14:24:09.742Z" }, + { url = "https://files.pythonhosted.org/packages/98/6a/9a68184ab93619f4607ff1675e4ef01e8accfcbff0d482f4ca44c10d8eab/ruamel.yaml.clib-0.2.14-cp310-cp310-macosx_13_0_arm64.whl", hash = "sha256:aef953f3b8bd0b50bd52a2e52fb54a6a2171a1889d8dea4a5959d46c6624c451", size = 137092, upload-time = "2025-09-22T19:50:26.906Z" }, + { url = "https://files.pythonhosted.org/packages/2b/3f/cfed5f088628128a9ec66f46794fd4d165642155c7b78c26d83b16c6bf7b/ruamel.yaml.clib-0.2.14-cp310-cp310-manylinux2014_aarch64.whl", hash = "sha256:a0ac90efbc7a77b0d796c03c8cc4e62fd710b3f1e4c32947713ef2ef52e09543", size = 633768, upload-time = "2025-09-22T19:50:31.228Z" }, + { url = "https://files.pythonhosted.org/packages/3a/d5/5ce2cc156c1da48160171968d91f066d305840fbf930ee955a509d025a44/ruamel.yaml.clib-0.2.14-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9bf6b699223afe6c7fe9f2ef76e0bfa6dd892c21e94ce8c957478987ade76cd8", size = 721253, upload-time = "2025-09-22T19:50:28.776Z" }, + { url = "https://files.pythonhosted.org/packages/2b/71/d0b56bc902b38ebe4be8e270f730f929eec4edaf8a0fa7028f4ef64fa950/ruamel.yaml.clib-0.2.14-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d73a0187718f6eec5b2f729b0f98e4603f7bd9c48aa65d01227d1a5dcdfbe9e8", size = 683823, upload-time = "2025-09-22T19:50:29.993Z" }, + { url = "https://files.pythonhosted.org/packages/4b/db/1f37449dd89c540218598316ccafc1a0aed60215e72efa315c5367cfd015/ruamel.yaml.clib-0.2.14-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:81f6d3b19bc703679a5705c6a16dabdc79823c71d791d73c65949be7f3012c02", size = 690370, upload-time = "2025-09-23T18:42:46.797Z" }, + { url = "https://files.pythonhosted.org/packages/5d/53/c498b30f35efcd9f47cb084d7ad9374f2b907470f73913dec6396b81397d/ruamel.yaml.clib-0.2.14-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:b28caeaf3e670c08cb7e8de221266df8494c169bd6ed8875493fab45be9607a4", size = 703578, upload-time = "2025-09-22T19:50:32.531Z" }, + { url = "https://files.pythonhosted.org/packages/34/79/492cfad9baed68914840c39e5f3c1cc251f51a897ddb3f532601215cbb12/ruamel.yaml.clib-0.2.14-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:94f3efb718f8f49b031f2071ec7a27dd20cbfe511b4dfd54ecee54c956da2b31", size = 722544, upload-time = "2025-09-22T19:50:34.157Z" }, + { url = "https://files.pythonhosted.org/packages/ca/f5/479ebfd5ba396e209ade90f7282d84b90c57b3e07be8dc6fcd02a6df7ffc/ruamel.yaml.clib-0.2.14-cp310-cp310-win32.whl", hash = "sha256:27c070cf3888e90d992be75dd47292ff9aa17dafd36492812a6a304a1aedc182", size = 100375, upload-time = "2025-09-22T19:50:36.832Z" }, + { url = "https://files.pythonhosted.org/packages/57/31/a044520fdb3bd409889f67f1efebda0658033c7ab3f390cee37531cc9a9e/ruamel.yaml.clib-0.2.14-cp310-cp310-win_amd64.whl", hash = "sha256:4f4a150a737fccae13fb51234d41304ff2222e3b7d4c8e9428ed1a6ab48389b8", size = 118129, upload-time = "2025-09-22T19:50:35.545Z" }, + { url = "https://files.pythonhosted.org/packages/b3/9f/3c51e9578b8c36fcc4bdd271a1a5bb65963a74a4b6ad1a989768a22f6c2a/ruamel.yaml.clib-0.2.14-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:5bae1a073ca4244620425cd3d3aa9746bde590992b98ee8c7c8be8c597ca0d4e", size = 270207, upload-time = "2025-09-23T14:24:11.445Z" }, + { url = "https://files.pythonhosted.org/packages/4a/16/cb02815bc2ae9c66760c0c061d23c7358f9ba51dae95ac85247662b7fbe2/ruamel.yaml.clib-0.2.14-cp311-cp311-macosx_13_0_arm64.whl", hash = "sha256:0a54e5e40a7a691a426c2703b09b0d61a14294d25cfacc00631aa6f9c964df0d", size = 137780, upload-time = "2025-09-22T19:50:37.734Z" }, + { url = "https://files.pythonhosted.org/packages/31/c6/fc687cd1b93bff8e40861eea46d6dc1a6a778d9a085684e4045ff26a8e40/ruamel.yaml.clib-0.2.14-cp311-cp311-manylinux2014_aarch64.whl", hash = "sha256:10d9595b6a19778f3269399eff6bab642608e5966183abc2adbe558a42d4efc9", size = 641590, upload-time = "2025-09-22T19:50:41.978Z" }, + { url = "https://files.pythonhosted.org/packages/45/5d/65a2bc08b709b08576b3f307bf63951ee68a8e047cbbda6f1c9864ecf9a7/ruamel.yaml.clib-0.2.14-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dba72975485f2b87b786075e18a6e5d07dc2b4d8973beb2732b9b2816f1bad70", size = 738090, upload-time = "2025-09-22T19:50:39.152Z" }, + { url = "https://files.pythonhosted.org/packages/fb/d0/a70a03614d9a6788a3661ab1538879ed2aae4e84d861f101243116308a37/ruamel.yaml.clib-0.2.14-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:29757bdb7c142f9595cc1b62ec49a3d1c83fab9cef92db52b0ccebaad4eafb98", size = 700744, upload-time = "2025-09-22T19:50:40.811Z" }, + { url = "https://files.pythonhosted.org/packages/77/30/c93fa457611f79946d5cb6cc97493ca5425f3f21891d7b1f9b44eaa1b38e/ruamel.yaml.clib-0.2.14-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:557df28dbccf79b152fe2d1b935f6063d9cc431199ea2b0e84892f35c03bb0ee", size = 742321, upload-time = "2025-09-23T18:42:48.916Z" }, + { url = "https://files.pythonhosted.org/packages/40/85/e2c54ad637117cd13244a4649946eaa00f32edcb882d1f92df90e079ab00/ruamel.yaml.clib-0.2.14-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:26a8de280ab0d22b6e3ec745b4a5a07151a0f74aad92dd76ab9c8d8d7087720d", size = 743805, upload-time = "2025-09-22T19:50:43.58Z" }, + { url = "https://files.pythonhosted.org/packages/81/50/f899072c38877d8ef5382e0b3d47f8c4346226c1f52d6945d6f64fec6a2f/ruamel.yaml.clib-0.2.14-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:e501c096aa3889133d674605ebd018471bc404a59cbc17da3c5924421c54d97c", size = 769529, upload-time = "2025-09-22T19:50:45.707Z" }, + { url = "https://files.pythonhosted.org/packages/99/7c/96d4b5075e30c65ea2064e40c2d657c7c235d7b6ef18751cf89a935b9041/ruamel.yaml.clib-0.2.14-cp311-cp311-win32.whl", hash = "sha256:915748cfc25b8cfd81b14d00f4bfdb2ab227a30d6d43459034533f4d1c207a2a", size = 100256, upload-time = "2025-09-22T19:50:48.26Z" }, + { url = "https://files.pythonhosted.org/packages/7d/8c/73ee2babd04e8bfcf1fd5c20aa553d18bf0ebc24b592b4f831d12ae46cc0/ruamel.yaml.clib-0.2.14-cp311-cp311-win_amd64.whl", hash = "sha256:4ccba93c1e5a40af45b2f08e4591969fa4697eae951c708f3f83dcbf9f6c6bb1", size = 118234, upload-time = "2025-09-22T19:50:47.019Z" }, + { url = "https://files.pythonhosted.org/packages/b4/42/ccfb34a25289afbbc42017e4d3d4288e61d35b2e00cfc6b92974a6a1f94b/ruamel.yaml.clib-0.2.14-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:6aeadc170090ff1889f0d2c3057557f9cd71f975f17535c26a5d37af98f19c27", size = 271775, upload-time = "2025-09-23T14:24:12.771Z" }, + { url = "https://files.pythonhosted.org/packages/82/73/e628a92e80197ff6a79ab81ec3fa00d4cc082d58ab78d3337b7ba7043301/ruamel.yaml.clib-0.2.14-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:5e56ac47260c0eed992789fa0b8efe43404a9adb608608631a948cee4fc2b052", size = 138842, upload-time = "2025-09-22T19:50:49.156Z" }, + { url = "https://files.pythonhosted.org/packages/2b/c5/346c7094344a60419764b4b1334d9e0285031c961176ff88ffb652405b0c/ruamel.yaml.clib-0.2.14-cp312-cp312-manylinux2014_aarch64.whl", hash = "sha256:a911aa73588d9a8b08d662b9484bc0567949529824a55d3885b77e8dd62a127a", size = 647404, upload-time = "2025-09-22T19:50:52.921Z" }, + { url = "https://files.pythonhosted.org/packages/df/99/65080c863eb06d4498de3d6c86f3e90595e02e159fd8529f1565f56cfe2c/ruamel.yaml.clib-0.2.14-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a05ba88adf3d7189a974b2de7a9d56731548d35dc0a822ec3dc669caa7019b29", size = 753141, upload-time = "2025-09-22T19:50:50.294Z" }, + { url = "https://files.pythonhosted.org/packages/3d/e3/0de85f3e3333f8e29e4b10244374a202a87665d1131798946ee22cf05c7c/ruamel.yaml.clib-0.2.14-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fb04c5650de6668b853623eceadcdb1a9f2fee381f5d7b6bc842ee7c239eeec4", size = 703477, upload-time = "2025-09-22T19:50:51.508Z" }, + { url = "https://files.pythonhosted.org/packages/d9/25/0d2f09d8833c7fd77ab8efeff213093c16856479a9d293180a0d89f6bed9/ruamel.yaml.clib-0.2.14-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:df3ec9959241d07bc261f4983d25a1205ff37703faf42b474f15d54d88b4f8c9", size = 741157, upload-time = "2025-09-23T18:42:50.408Z" }, + { url = "https://files.pythonhosted.org/packages/d3/8c/959f10c2e2153cbdab834c46e6954b6dd9e3b109c8f8c0a3cf1618310985/ruamel.yaml.clib-0.2.14-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:fbc08c02e9b147a11dfcaa1ac8a83168b699863493e183f7c0c8b12850b7d259", size = 745859, upload-time = "2025-09-22T19:50:54.497Z" }, + { url = "https://files.pythonhosted.org/packages/ed/6b/e580a7c18b485e1a5f30a32cda96b20364b0ba649d9d2baaf72f8bd21f83/ruamel.yaml.clib-0.2.14-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:c099cafc1834d3c5dac305865d04235f7c21c167c8dd31ebc3d6bbc357e2f023", size = 770200, upload-time = "2025-09-22T19:50:55.718Z" }, + { url = "https://files.pythonhosted.org/packages/ef/44/3455eebc761dc8e8fdced90f2b0a3fa61e32ba38b50de4130e2d57db0f21/ruamel.yaml.clib-0.2.14-cp312-cp312-win32.whl", hash = "sha256:b5b0f7e294700b615a3bcf6d28b26e6da94e8eba63b079f4ec92e9ba6c0d6b54", size = 98829, upload-time = "2025-09-22T19:50:58.895Z" }, + { url = "https://files.pythonhosted.org/packages/76/ab/5121f7f3b651db93de546f8c982c241397aad0a4765d793aca1dac5eadee/ruamel.yaml.clib-0.2.14-cp312-cp312-win_amd64.whl", hash = "sha256:a37f40a859b503304dd740686359fcf541d6fb3ff7fc10f539af7f7150917c68", size = 115570, upload-time = "2025-09-22T19:50:57.981Z" }, + { url = "https://files.pythonhosted.org/packages/d7/ae/e3811f05415594025e96000349d3400978adaed88d8f98d494352d9761ee/ruamel.yaml.clib-0.2.14-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:7e4f9da7e7549946e02a6122dcad00b7c1168513acb1f8a726b1aaf504a99d32", size = 269205, upload-time = "2025-09-23T14:24:15.06Z" }, + { url = "https://files.pythonhosted.org/packages/72/06/7d51f4688d6d72bb72fa74254e1593c4f5ebd0036be5b41fe39315b275e9/ruamel.yaml.clib-0.2.14-cp313-cp313-macosx_15_0_arm64.whl", hash = "sha256:dd7546c851e59c06197a7c651335755e74aa383a835878ca86d2c650c07a2f85", size = 137417, upload-time = "2025-09-22T19:50:59.82Z" }, + { url = "https://files.pythonhosted.org/packages/5a/08/b4499234a420ef42960eeb05585df5cc7eb25ccb8c980490b079e6367050/ruamel.yaml.clib-0.2.14-cp313-cp313-manylinux2014_aarch64.whl", hash = "sha256:1c1acc3a0209ea9042cc3cfc0790edd2eddd431a2ec3f8283d081e4d5018571e", size = 642558, upload-time = "2025-09-22T19:51:03.388Z" }, + { url = "https://files.pythonhosted.org/packages/b6/ba/1975a27dedf1c4c33306ee67c948121be8710b19387aada29e2f139c43ee/ruamel.yaml.clib-0.2.14-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2070bf0ad1540d5c77a664de07ebcc45eebd1ddcab71a7a06f26936920692beb", size = 744087, upload-time = "2025-09-22T19:51:00.897Z" }, + { url = "https://files.pythonhosted.org/packages/20/15/8a19a13d27f3bd09fa18813add8380a29115a47b553845f08802959acbce/ruamel.yaml.clib-0.2.14-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9bd8fe07f49c170e09d76773fb86ad9135e0beee44f36e1576a201b0676d3d1d", size = 699709, upload-time = "2025-09-22T19:51:02.075Z" }, + { url = "https://files.pythonhosted.org/packages/19/ee/8d6146a079ad21e534b5083c9ee4a4c8bec42f79cf87594b60978286b39a/ruamel.yaml.clib-0.2.14-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:ff86876889ea478b1381089e55cf9e345707b312beda4986f823e1d95e8c0f59", size = 708926, upload-time = "2025-09-23T18:42:51.707Z" }, + { url = "https://files.pythonhosted.org/packages/a9/f5/426b714abdc222392e68f3b8ad323930d05a214a27c7e7a0f06c69126401/ruamel.yaml.clib-0.2.14-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:1f118b707eece8cf84ecbc3e3ec94d9db879d85ed608f95870d39b2d2efa5dca", size = 740202, upload-time = "2025-09-22T19:51:04.673Z" }, + { url = "https://files.pythonhosted.org/packages/3d/ac/3c5c2b27a183f4fda8a57c82211721c016bcb689a4a175865f7646db9f94/ruamel.yaml.clib-0.2.14-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:b30110b29484adc597df6bd92a37b90e63a8c152ca8136aad100a02f8ba6d1b6", size = 765196, upload-time = "2025-09-22T19:51:05.916Z" }, + { url = "https://files.pythonhosted.org/packages/92/2e/06f56a71fd55021c993ed6e848c9b2e5e9cfce180a42179f0ddd28253f7c/ruamel.yaml.clib-0.2.14-cp313-cp313-win32.whl", hash = "sha256:f4e97a1cf0b7a30af9e1d9dad10a5671157b9acee790d9e26996391f49b965a2", size = 98635, upload-time = "2025-09-22T19:51:08.183Z" }, + { url = "https://files.pythonhosted.org/packages/51/79/76aba16a1689b50528224b182f71097ece338e7a4ab55e84c2e73443b78a/ruamel.yaml.clib-0.2.14-cp313-cp313-win_amd64.whl", hash = "sha256:090782b5fb9d98df96509eecdbcaffd037d47389a89492320280d52f91330d78", size = 115238, upload-time = "2025-09-22T19:51:07.081Z" }, + { url = "https://files.pythonhosted.org/packages/21/e2/a59ff65c26aaf21a24eb38df777cb9af5d87ba8fc8107c163c2da9d1e85e/ruamel.yaml.clib-0.2.14-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:7df6f6e9d0e33c7b1d435defb185095386c469109de723d514142632a7b9d07f", size = 271441, upload-time = "2025-09-23T14:24:16.498Z" }, + { url = "https://files.pythonhosted.org/packages/6b/fa/3234f913fe9a6525a7b97c6dad1f51e72b917e6872e051a5e2ffd8b16fbb/ruamel.yaml.clib-0.2.14-cp314-cp314-macosx_15_0_arm64.whl", hash = "sha256:70eda7703b8126f5e52fcf276e6c0f40b0d314674f896fc58c47b0aef2b9ae83", size = 137970, upload-time = "2025-09-22T19:51:09.472Z" }, + { url = "https://files.pythonhosted.org/packages/ef/ec/4edbf17ac2c87fa0845dd366ef8d5852b96eb58fcd65fc1ecf5fe27b4641/ruamel.yaml.clib-0.2.14-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:a0cb71ccc6ef9ce36eecb6272c81afdc2f565950cdcec33ae8e6cd8f7fc86f27", size = 739639, upload-time = "2025-09-22T19:51:10.566Z" }, + { url = "https://files.pythonhosted.org/packages/15/18/b0e1fafe59051de9e79cdd431863b03593ecfa8341c110affad7c8121efc/ruamel.yaml.clib-0.2.14-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:e7cb9ad1d525d40f7d87b6df7c0ff916a66bc52cb61b66ac1b2a16d0c1b07640", size = 764456, upload-time = "2025-09-22T19:51:11.736Z" }, + { url = "https://files.pythonhosted.org/packages/2a/a0/e709dc2f58054049cd154319a7d37917689785b12ec43ea2df47ea5344ef/ruamel.yaml.clib-0.2.14-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:18c041b28f3456ddef1f1951d4492dbebe0f8114157c1b3c981a4611c2020792", size = 270636, upload-time = "2025-09-23T14:24:17.855Z" }, + { url = "https://files.pythonhosted.org/packages/18/81/491c9e394976e10682a596f2b785ba7066db525cc17f267005ae8ca33c73/ruamel.yaml.clib-0.2.14-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:d8354515ab62f95a07deaf7f845886cc50e2f345ceab240a3d2d09a9f7d77853", size = 137954, upload-time = "2025-09-22T19:51:12.851Z" }, + { url = "https://files.pythonhosted.org/packages/ad/a5/c6d1c767e051bbc00146a93132bf199b3e6ec2c219131b9d3e19eff428f3/ruamel.yaml.clib-0.2.14-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:275f938692013a3883edbd848edde6d9f26825d65c9a2eb1db8baa1adc96a05d", size = 636162, upload-time = "2025-09-22T19:51:16.823Z" }, + { url = "https://files.pythonhosted.org/packages/e3/6f/4746e2e8f60b3489b6cd6fad96a8e2aaa0cf7dd6760de3daad1a6e9f5789/ruamel.yaml.clib-0.2.14-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:16a60d69f4057ad9a92f3444e2367c08490daed6428291aa16cefb445c29b0e9", size = 723934, upload-time = "2025-09-22T19:51:13.948Z" }, + { url = "https://files.pythonhosted.org/packages/26/47/5446e8cea2f6b5391fba653196f38b3f14030c1c324bd9aa67f1773d24ec/ruamel.yaml.clib-0.2.14-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5ac5ff9425d8acb8f59ac5b96bcb7fd3d272dc92d96a7c730025928ffcc88a7a", size = 686265, upload-time = "2025-09-22T19:51:15.142Z" }, + { url = "https://files.pythonhosted.org/packages/52/d7/344d7b3010b6a01af97431bdf89056abb2d8bd704d0f3430e7b50232cce4/ruamel.yaml.clib-0.2.14-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:e1d1735d97fd8a48473af048739379975651fab186f8a25a9f683534e6904179", size = 693042, upload-time = "2025-09-23T18:42:53.238Z" }, + { url = "https://files.pythonhosted.org/packages/b3/d5/a0f2cce1b6cfa9bf1921b8a19ebceafc7a9b3c27882e5af5a07ae080b1bd/ruamel.yaml.clib-0.2.14-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:83bbd8354f6abb3fdfb922d1ed47ad8d1db3ea72b0523dac8d07cdacfe1c0fcf", size = 706110, upload-time = "2025-09-22T19:51:18.467Z" }, + { url = "https://files.pythonhosted.org/packages/42/cd/85b422d24ee2096eaf6faa360c95ef9bdb59097d19b9624cebce4dd9bc2a/ruamel.yaml.clib-0.2.14-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:808c7190a0fe7ae7014c42f73897cf8e9ef14ff3aa533450e51b1e72ec5239ad", size = 725028, upload-time = "2025-09-22T19:51:19.782Z" }, + { url = "https://files.pythonhosted.org/packages/4d/ac/99e6e0ea2584f84f447069d0187fe411e9b5deb7e3ddecda25001cfc7a95/ruamel.yaml.clib-0.2.14-cp39-cp39-win32.whl", hash = "sha256:6d5472f63a31b042aadf5ed28dd3ef0523da49ac17f0463e10fda9c4a2773352", size = 100915, upload-time = "2025-09-22T19:51:21.764Z" }, + { url = "https://files.pythonhosted.org/packages/5d/8d/846e43369658958c99d959bb7774136fff9210f9017d91a4277818ceafbf/ruamel.yaml.clib-0.2.14-cp39-cp39-win_amd64.whl", hash = "sha256:8dd3c2cc49caa7a8d64b67146462aed6723a0495e44bf0aa0a2e94beaa8432f6", size = 118706, upload-time = "2025-09-22T19:51:20.878Z" }, + { url = "https://files.pythonhosted.org/packages/e7/cd/150fdb96b8fab27fe08d8a59fe67554568727981806e6bc2677a16081ec7/ruamel_yaml_clib-0.2.14-cp314-cp314-win32.whl", hash = "sha256:9b4104bf43ca0cd4e6f738cb86326a3b2f6eef00f417bd1e7efb7bdffe74c539", size = 102394, upload-time = "2025-11-14T21:57:36.703Z" }, + { url = "https://files.pythonhosted.org/packages/bd/e6/a3fa40084558c7e1dc9546385f22a93949c890a8b2e445b2ba43935f51da/ruamel_yaml_clib-0.2.14-cp314-cp314-win_amd64.whl", hash = "sha256:13997d7d354a9890ea1ec5937a219817464e5cc344805b37671562a401ca3008", size = 122673, upload-time = "2025-11-14T21:57:38.177Z" }, +] + +[[package]] +name = "ruff" +version = "0.14.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/9e/58/6ca66896635352812de66f71cdf9ff86b3a4f79071ca5730088c0cd0fc8d/ruff-0.14.1.tar.gz", hash = "sha256:1dd86253060c4772867c61791588627320abcb6ed1577a90ef432ee319729b69", size = 5513429, upload-time = "2025-10-16T18:05:41.766Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/8d/39/9cc5ab181478d7a18adc1c1e051a84ee02bec94eb9bdfd35643d7c74ca31/ruff-0.14.1-py3-none-linux_armv6l.whl", hash = "sha256:083bfc1f30f4a391ae09c6f4f99d83074416b471775b59288956f5bc18e82f8b", size = 12445415, upload-time = "2025-10-16T18:04:48.227Z" }, + { url = "https://files.pythonhosted.org/packages/ef/2e/1226961855ccd697255988f5a2474890ac7c5863b080b15bd038df820818/ruff-0.14.1-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:f6fa757cd717f791009f7669fefb09121cc5f7d9bd0ef211371fad68c2b8b224", size = 12784267, upload-time = "2025-10-16T18:04:52.515Z" }, + { url = "https://files.pythonhosted.org/packages/c1/ea/fd9e95863124ed159cd0667ec98449ae461de94acda7101f1acb6066da00/ruff-0.14.1-py3-none-macosx_11_0_arm64.whl", hash = "sha256:d6191903d39ac156921398e9c86b7354d15e3c93772e7dbf26c9fcae59ceccd5", size = 11781872, upload-time = "2025-10-16T18:04:55.396Z" }, + { url = "https://files.pythonhosted.org/packages/1e/5a/e890f7338ff537dba4589a5e02c51baa63020acfb7c8cbbaea4831562c96/ruff-0.14.1-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ed04f0e04f7a4587244e5c9d7df50e6b5bf2705d75059f409a6421c593a35896", size = 12226558, upload-time = "2025-10-16T18:04:58.166Z" }, + { url = "https://files.pythonhosted.org/packages/a6/7a/8ab5c3377f5bf31e167b73651841217542bcc7aa1c19e83030835cc25204/ruff-0.14.1-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5c9e6cf6cd4acae0febbce29497accd3632fe2025c0c583c8b87e8dbdeae5f61", size = 12187898, upload-time = "2025-10-16T18:05:01.455Z" }, + { url = "https://files.pythonhosted.org/packages/48/8d/ba7c33aa55406955fc124e62c8259791c3d42e3075a71710fdff9375134f/ruff-0.14.1-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a6fa2458527794ecdfbe45f654e42c61f2503a230545a91af839653a0a93dbc6", size = 12939168, upload-time = "2025-10-16T18:05:04.397Z" }, + { url = "https://files.pythonhosted.org/packages/b4/c2/70783f612b50f66d083380e68cbd1696739d88e9b4f6164230375532c637/ruff-0.14.1-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:39f1c392244e338b21d42ab29b8a6392a722c5090032eb49bb4d6defcdb34345", size = 14386942, upload-time = "2025-10-16T18:05:07.102Z" }, + { url = "https://files.pythonhosted.org/packages/48/44/cd7abb9c776b66d332119d67f96acf15830d120f5b884598a36d9d3f4d83/ruff-0.14.1-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7382fa12a26cce1f95070ce450946bec357727aaa428983036362579eadcc5cf", size = 13990622, upload-time = "2025-10-16T18:05:09.882Z" }, + { url = "https://files.pythonhosted.org/packages/eb/56/4259b696db12ac152fe472764b4f78bbdd9b477afd9bc3a6d53c01300b37/ruff-0.14.1-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:dd0bf2be3ae8521e1093a487c4aa3b455882f139787770698530d28ed3fbb37c", size = 13431143, upload-time = "2025-10-16T18:05:13.46Z" }, + { url = "https://files.pythonhosted.org/packages/e0/35/266a80d0eb97bd224b3265b9437bd89dde0dcf4faf299db1212e81824e7e/ruff-0.14.1-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cabcaa9ccf8089fb4fdb78d17cc0e28241520f50f4c2e88cb6261ed083d85151", size = 13132844, upload-time = "2025-10-16T18:05:16.1Z" }, + { url = "https://files.pythonhosted.org/packages/65/6e/d31ce218acc11a8d91ef208e002a31acf315061a85132f94f3df7a252b18/ruff-0.14.1-py3-none-manylinux_2_31_riscv64.whl", hash = "sha256:747d583400f6125ec11a4c14d1c8474bf75d8b419ad22a111a537ec1a952d192", size = 13401241, upload-time = "2025-10-16T18:05:19.395Z" }, + { url = "https://files.pythonhosted.org/packages/9f/b5/dbc4221bf0b03774b3b2f0d47f39e848d30664157c15b965a14d890637d2/ruff-0.14.1-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:5a6e74c0efd78515a1d13acbfe6c90f0f5bd822aa56b4a6d43a9ffb2ae6e56cd", size = 12132476, upload-time = "2025-10-16T18:05:22.163Z" }, + { url = "https://files.pythonhosted.org/packages/98/4b/ac99194e790ccd092d6a8b5f341f34b6e597d698e3077c032c502d75ea84/ruff-0.14.1-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:0ea6a864d2fb41a4b6d5b456ed164302a0d96f4daac630aeba829abfb059d020", size = 12139749, upload-time = "2025-10-16T18:05:25.162Z" }, + { url = "https://files.pythonhosted.org/packages/47/26/7df917462c3bb5004e6fdfcc505a49e90bcd8a34c54a051953118c00b53a/ruff-0.14.1-py3-none-musllinux_1_2_i686.whl", hash = "sha256:0826b8764f94229604fa255918d1cc45e583e38c21c203248b0bfc9a0e930be5", size = 12544758, upload-time = "2025-10-16T18:05:28.018Z" }, + { url = "https://files.pythonhosted.org/packages/64/d0/81e7f0648e9764ad9b51dd4be5e5dac3fcfff9602428ccbae288a39c2c22/ruff-0.14.1-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:cbc52160465913a1a3f424c81c62ac8096b6a491468e7d872cb9444a860bc33d", size = 13221811, upload-time = "2025-10-16T18:05:30.707Z" }, + { url = "https://files.pythonhosted.org/packages/c3/07/3c45562c67933cc35f6d5df4ca77dabbcd88fddaca0d6b8371693d29fd56/ruff-0.14.1-py3-none-win32.whl", hash = "sha256:e037ea374aaaff4103240ae79168c0945ae3d5ae8db190603de3b4012bd1def6", size = 12319467, upload-time = "2025-10-16T18:05:33.261Z" }, + { url = "https://files.pythonhosted.org/packages/02/88/0ee4ca507d4aa05f67e292d2e5eb0b3e358fbcfe527554a2eda9ac422d6b/ruff-0.14.1-py3-none-win_amd64.whl", hash = "sha256:59d599cdff9c7f925a017f6f2c256c908b094e55967f93f2821b1439928746a1", size = 13401123, upload-time = "2025-10-16T18:05:35.984Z" }, + { url = "https://files.pythonhosted.org/packages/b8/81/4b6387be7014858d924b843530e1b2a8e531846807516e9bea2ee0936bf7/ruff-0.14.1-py3-none-win_arm64.whl", hash = "sha256:e3b443c4c9f16ae850906b8d0a707b2a4c16f8d2f0a7fe65c475c5886665ce44", size = 12436636, upload-time = "2025-10-16T18:05:38.995Z" }, +] + +[[package]] +name = "scikit-learn" +version = "1.6.1" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version < '3.10'", +] +dependencies = [ + { name = "joblib", marker = "python_full_version < '3.10'" }, + { name = "numpy", version = "2.0.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, + { name = "scipy", version = "1.13.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, + { name = "threadpoolctl", marker = "python_full_version < '3.10'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/9e/a5/4ae3b3a0755f7b35a280ac90b28817d1f380318973cff14075ab41ef50d9/scikit_learn-1.6.1.tar.gz", hash = "sha256:b4fc2525eca2c69a59260f583c56a7557c6ccdf8deafdba6e060f94c1c59738e", size = 7068312, upload-time = "2025-01-10T08:07:55.348Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2e/3a/f4597eb41049110b21ebcbb0bcb43e4035017545daa5eedcfeb45c08b9c5/scikit_learn-1.6.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d056391530ccd1e501056160e3c9673b4da4805eb67eb2bdf4e983e1f9c9204e", size = 12067702, upload-time = "2025-01-10T08:05:56.515Z" }, + { url = "https://files.pythonhosted.org/packages/37/19/0423e5e1fd1c6ec5be2352ba05a537a473c1677f8188b9306097d684b327/scikit_learn-1.6.1-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:0c8d036eb937dbb568c6242fa598d551d88fb4399c0344d95c001980ec1c7d36", size = 11112765, upload-time = "2025-01-10T08:06:00.272Z" }, + { url = "https://files.pythonhosted.org/packages/70/95/d5cb2297a835b0f5fc9a77042b0a2d029866379091ab8b3f52cc62277808/scikit_learn-1.6.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8634c4bd21a2a813e0a7e3900464e6d593162a29dd35d25bdf0103b3fce60ed5", size = 12643991, upload-time = "2025-01-10T08:06:04.813Z" }, + { url = "https://files.pythonhosted.org/packages/b7/91/ab3c697188f224d658969f678be86b0968ccc52774c8ab4a86a07be13c25/scikit_learn-1.6.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:775da975a471c4f6f467725dff0ced5c7ac7bda5e9316b260225b48475279a1b", size = 13497182, upload-time = "2025-01-10T08:06:08.42Z" }, + { url = "https://files.pythonhosted.org/packages/17/04/d5d556b6c88886c092cc989433b2bab62488e0f0dafe616a1d5c9cb0efb1/scikit_learn-1.6.1-cp310-cp310-win_amd64.whl", hash = "sha256:8a600c31592bd7dab31e1c61b9bbd6dea1b3433e67d264d17ce1017dbdce8002", size = 11125517, upload-time = "2025-01-10T08:06:12.783Z" }, + { url = "https://files.pythonhosted.org/packages/6c/2a/e291c29670795406a824567d1dfc91db7b699799a002fdaa452bceea8f6e/scikit_learn-1.6.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:72abc587c75234935e97d09aa4913a82f7b03ee0b74111dcc2881cba3c5a7b33", size = 12102620, upload-time = "2025-01-10T08:06:16.675Z" }, + { url = "https://files.pythonhosted.org/packages/25/92/ee1d7a00bb6b8c55755d4984fd82608603a3cc59959245068ce32e7fb808/scikit_learn-1.6.1-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:b3b00cdc8f1317b5f33191df1386c0befd16625f49d979fe77a8d44cae82410d", size = 11116234, upload-time = "2025-01-10T08:06:21.83Z" }, + { url = "https://files.pythonhosted.org/packages/30/cd/ed4399485ef364bb25f388ab438e3724e60dc218c547a407b6e90ccccaef/scikit_learn-1.6.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dc4765af3386811c3ca21638f63b9cf5ecf66261cc4815c1db3f1e7dc7b79db2", size = 12592155, upload-time = "2025-01-10T08:06:27.309Z" }, + { url = "https://files.pythonhosted.org/packages/a8/f3/62fc9a5a659bb58a03cdd7e258956a5824bdc9b4bb3c5d932f55880be569/scikit_learn-1.6.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:25fc636bdaf1cc2f4a124a116312d837148b5e10872147bdaf4887926b8c03d8", size = 13497069, upload-time = "2025-01-10T08:06:32.515Z" }, + { url = "https://files.pythonhosted.org/packages/a1/a6/c5b78606743a1f28eae8f11973de6613a5ee87366796583fb74c67d54939/scikit_learn-1.6.1-cp311-cp311-win_amd64.whl", hash = "sha256:fa909b1a36e000a03c382aade0bd2063fd5680ff8b8e501660c0f59f021a6415", size = 11139809, upload-time = "2025-01-10T08:06:35.514Z" }, + { url = "https://files.pythonhosted.org/packages/0a/18/c797c9b8c10380d05616db3bfb48e2a3358c767affd0857d56c2eb501caa/scikit_learn-1.6.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:926f207c804104677af4857b2c609940b743d04c4c35ce0ddc8ff4f053cddc1b", size = 12104516, upload-time = "2025-01-10T08:06:40.009Z" }, + { url = "https://files.pythonhosted.org/packages/c4/b7/2e35f8e289ab70108f8cbb2e7a2208f0575dc704749721286519dcf35f6f/scikit_learn-1.6.1-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:2c2cae262064e6a9b77eee1c8e768fc46aa0b8338c6a8297b9b6759720ec0ff2", size = 11167837, upload-time = "2025-01-10T08:06:43.305Z" }, + { url = "https://files.pythonhosted.org/packages/a4/f6/ff7beaeb644bcad72bcfd5a03ff36d32ee4e53a8b29a639f11bcb65d06cd/scikit_learn-1.6.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1061b7c028a8663fb9a1a1baf9317b64a257fcb036dae5c8752b2abef31d136f", size = 12253728, upload-time = "2025-01-10T08:06:47.618Z" }, + { url = "https://files.pythonhosted.org/packages/29/7a/8bce8968883e9465de20be15542f4c7e221952441727c4dad24d534c6d99/scikit_learn-1.6.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2e69fab4ebfc9c9b580a7a80111b43d214ab06250f8a7ef590a4edf72464dd86", size = 13147700, upload-time = "2025-01-10T08:06:50.888Z" }, + { url = "https://files.pythonhosted.org/packages/62/27/585859e72e117fe861c2079bcba35591a84f801e21bc1ab85bce6ce60305/scikit_learn-1.6.1-cp312-cp312-win_amd64.whl", hash = "sha256:70b1d7e85b1c96383f872a519b3375f92f14731e279a7b4c6cfd650cf5dffc52", size = 11110613, upload-time = "2025-01-10T08:06:54.115Z" }, + { url = "https://files.pythonhosted.org/packages/2e/59/8eb1872ca87009bdcdb7f3cdc679ad557b992c12f4b61f9250659e592c63/scikit_learn-1.6.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:2ffa1e9e25b3d93990e74a4be2c2fc61ee5af85811562f1288d5d055880c4322", size = 12010001, upload-time = "2025-01-10T08:06:58.613Z" }, + { url = "https://files.pythonhosted.org/packages/9d/05/f2fc4effc5b32e525408524c982c468c29d22f828834f0625c5ef3d601be/scikit_learn-1.6.1-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:dc5cf3d68c5a20ad6d571584c0750ec641cc46aeef1c1507be51300e6003a7e1", size = 11096360, upload-time = "2025-01-10T08:07:01.556Z" }, + { url = "https://files.pythonhosted.org/packages/c8/e4/4195d52cf4f113573fb8ebc44ed5a81bd511a92c0228889125fac2f4c3d1/scikit_learn-1.6.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c06beb2e839ecc641366000ca84f3cf6fa9faa1777e29cf0c04be6e4d096a348", size = 12209004, upload-time = "2025-01-10T08:07:06.931Z" }, + { url = "https://files.pythonhosted.org/packages/94/be/47e16cdd1e7fcf97d95b3cb08bde1abb13e627861af427a3651fcb80b517/scikit_learn-1.6.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e8ca8cb270fee8f1f76fa9bfd5c3507d60c6438bbee5687f81042e2bb98e5a97", size = 13171776, upload-time = "2025-01-10T08:07:11.715Z" }, + { url = "https://files.pythonhosted.org/packages/34/b0/ca92b90859070a1487827dbc672f998da95ce83edce1270fc23f96f1f61a/scikit_learn-1.6.1-cp313-cp313-win_amd64.whl", hash = "sha256:7a1c43c8ec9fde528d664d947dc4c0789be4077a3647f232869f41d9bf50e0fb", size = 11071865, upload-time = "2025-01-10T08:07:16.088Z" }, + { url = "https://files.pythonhosted.org/packages/12/ae/993b0fb24a356e71e9a894e42b8a9eec528d4c70217353a1cd7a48bc25d4/scikit_learn-1.6.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:a17c1dea1d56dcda2fac315712f3651a1fea86565b64b48fa1bc090249cbf236", size = 11955804, upload-time = "2025-01-10T08:07:20.385Z" }, + { url = "https://files.pythonhosted.org/packages/d6/54/32fa2ee591af44507eac86406fa6bba968d1eb22831494470d0a2e4a1eb1/scikit_learn-1.6.1-cp313-cp313t-macosx_12_0_arm64.whl", hash = "sha256:6a7aa5f9908f0f28f4edaa6963c0a6183f1911e63a69aa03782f0d924c830a35", size = 11100530, upload-time = "2025-01-10T08:07:23.675Z" }, + { url = "https://files.pythonhosted.org/packages/3f/58/55856da1adec655bdce77b502e94a267bf40a8c0b89f8622837f89503b5a/scikit_learn-1.6.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0650e730afb87402baa88afbf31c07b84c98272622aaba002559b614600ca691", size = 12433852, upload-time = "2025-01-10T08:07:26.817Z" }, + { url = "https://files.pythonhosted.org/packages/ff/4f/c83853af13901a574f8f13b645467285a48940f185b690936bb700a50863/scikit_learn-1.6.1-cp313-cp313t-win_amd64.whl", hash = "sha256:3f59fe08dc03ea158605170eb52b22a105f238a5d512c4470ddeca71feae8e5f", size = 11337256, upload-time = "2025-01-10T08:07:31.084Z" }, + { url = "https://files.pythonhosted.org/packages/d2/37/b305b759cc65829fe1b8853ff3e308b12cdd9d8884aa27840835560f2b42/scikit_learn-1.6.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6849dd3234e87f55dce1db34c89a810b489ead832aaf4d4550b7ea85628be6c1", size = 12101868, upload-time = "2025-01-10T08:07:34.189Z" }, + { url = "https://files.pythonhosted.org/packages/83/74/f64379a4ed5879d9db744fe37cfe1978c07c66684d2439c3060d19a536d8/scikit_learn-1.6.1-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:e7be3fa5d2eb9be7d77c3734ff1d599151bb523674be9b834e8da6abe132f44e", size = 11144062, upload-time = "2025-01-10T08:07:37.67Z" }, + { url = "https://files.pythonhosted.org/packages/fd/dc/d5457e03dc9c971ce2b0d750e33148dd060fefb8b7dc71acd6054e4bb51b/scikit_learn-1.6.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:44a17798172df1d3c1065e8fcf9019183f06c87609b49a124ebdf57ae6cb0107", size = 12693173, upload-time = "2025-01-10T08:07:42.713Z" }, + { url = "https://files.pythonhosted.org/packages/79/35/b1d2188967c3204c78fa79c9263668cf1b98060e8e58d1a730fe5b2317bb/scikit_learn-1.6.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b8b7a3b86e411e4bce21186e1c180d792f3d99223dcfa3b4f597ecc92fa1a422", size = 13518605, upload-time = "2025-01-10T08:07:46.551Z" }, + { url = "https://files.pythonhosted.org/packages/fb/d8/8d603bdd26601f4b07e2363032b8565ab82eb857f93d86d0f7956fcf4523/scikit_learn-1.6.1-cp39-cp39-win_amd64.whl", hash = "sha256:7a73d457070e3318e32bdb3aa79a8d990474f19035464dfd8bede2883ab5dc3b", size = 11155078, upload-time = "2025-01-10T08:07:51.376Z" }, +] + +[[package]] +name = "scikit-learn" +version = "1.7.2" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version >= '3.12'", + "python_full_version == '3.11.*'", + "python_full_version == '3.10.*'", +] +dependencies = [ + { name = "joblib", marker = "python_full_version >= '3.10'" }, + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.10.*'" }, + { name = "numpy", version = "2.3.4", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "scipy", version = "1.15.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.10.*'" }, + { name = "scipy", version = "1.16.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "threadpoolctl", marker = "python_full_version >= '3.10'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/98/c2/a7855e41c9d285dfe86dc50b250978105dce513d6e459ea66a6aeb0e1e0c/scikit_learn-1.7.2.tar.gz", hash = "sha256:20e9e49ecd130598f1ca38a1d85090e1a600147b9c02fa6f15d69cb53d968fda", size = 7193136, upload-time = "2025-09-09T08:21:29.075Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ba/3e/daed796fd69cce768b8788401cc464ea90b306fb196ae1ffed0b98182859/scikit_learn-1.7.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:6b33579c10a3081d076ab403df4a4190da4f4432d443521674637677dc91e61f", size = 9336221, upload-time = "2025-09-09T08:20:19.328Z" }, + { url = "https://files.pythonhosted.org/packages/1c/ce/af9d99533b24c55ff4e18d9b7b4d9919bbc6cd8f22fe7a7be01519a347d5/scikit_learn-1.7.2-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:36749fb62b3d961b1ce4fedf08fa57a1986cd409eff2d783bca5d4b9b5fce51c", size = 8653834, upload-time = "2025-09-09T08:20:22.073Z" }, + { url = "https://files.pythonhosted.org/packages/58/0e/8c2a03d518fb6bd0b6b0d4b114c63d5f1db01ff0f9925d8eb10960d01c01/scikit_learn-1.7.2-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:7a58814265dfc52b3295b1900cfb5701589d30a8bb026c7540f1e9d3499d5ec8", size = 9660938, upload-time = "2025-09-09T08:20:24.327Z" }, + { url = "https://files.pythonhosted.org/packages/2b/75/4311605069b5d220e7cf5adabb38535bd96f0079313cdbb04b291479b22a/scikit_learn-1.7.2-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4a847fea807e278f821a0406ca01e387f97653e284ecbd9750e3ee7c90347f18", size = 9477818, upload-time = "2025-09-09T08:20:26.845Z" }, + { url = "https://files.pythonhosted.org/packages/7f/9b/87961813c34adbca21a6b3f6b2bea344c43b30217a6d24cc437c6147f3e8/scikit_learn-1.7.2-cp310-cp310-win_amd64.whl", hash = "sha256:ca250e6836d10e6f402436d6463d6c0e4d8e0234cfb6a9a47835bd392b852ce5", size = 8886969, upload-time = "2025-09-09T08:20:29.329Z" }, + { url = "https://files.pythonhosted.org/packages/43/83/564e141eef908a5863a54da8ca342a137f45a0bfb71d1d79704c9894c9d1/scikit_learn-1.7.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c7509693451651cd7361d30ce4e86a1347493554f172b1c72a39300fa2aea79e", size = 9331967, upload-time = "2025-09-09T08:20:32.421Z" }, + { url = "https://files.pythonhosted.org/packages/18/d6/ba863a4171ac9d7314c4d3fc251f015704a2caeee41ced89f321c049ed83/scikit_learn-1.7.2-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:0486c8f827c2e7b64837c731c8feff72c0bd2b998067a8a9cbc10643c31f0fe1", size = 8648645, upload-time = "2025-09-09T08:20:34.436Z" }, + { url = "https://files.pythonhosted.org/packages/ef/0e/97dbca66347b8cf0ea8b529e6bb9367e337ba2e8be0ef5c1a545232abfde/scikit_learn-1.7.2-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:89877e19a80c7b11a2891a27c21c4894fb18e2c2e077815bcade10d34287b20d", size = 9715424, upload-time = "2025-09-09T08:20:36.776Z" }, + { url = "https://files.pythonhosted.org/packages/f7/32/1f3b22e3207e1d2c883a7e09abb956362e7d1bd2f14458c7de258a26ac15/scikit_learn-1.7.2-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8da8bf89d4d79aaec192d2bda62f9b56ae4e5b4ef93b6a56b5de4977e375c1f1", size = 9509234, upload-time = "2025-09-09T08:20:38.957Z" }, + { url = "https://files.pythonhosted.org/packages/9f/71/34ddbd21f1da67c7a768146968b4d0220ee6831e4bcbad3e03dd3eae88b6/scikit_learn-1.7.2-cp311-cp311-win_amd64.whl", hash = "sha256:9b7ed8d58725030568523e937c43e56bc01cadb478fc43c042a9aca1dacb3ba1", size = 8894244, upload-time = "2025-09-09T08:20:41.166Z" }, + { url = "https://files.pythonhosted.org/packages/a7/aa/3996e2196075689afb9fce0410ebdb4a09099d7964d061d7213700204409/scikit_learn-1.7.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:8d91a97fa2b706943822398ab943cde71858a50245e31bc71dba62aab1d60a96", size = 9259818, upload-time = "2025-09-09T08:20:43.19Z" }, + { url = "https://files.pythonhosted.org/packages/43/5d/779320063e88af9c4a7c2cf463ff11c21ac9c8bd730c4a294b0000b666c9/scikit_learn-1.7.2-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:acbc0f5fd2edd3432a22c69bed78e837c70cf896cd7993d71d51ba6708507476", size = 8636997, upload-time = "2025-09-09T08:20:45.468Z" }, + { url = "https://files.pythonhosted.org/packages/5c/d0/0c577d9325b05594fdd33aa970bf53fb673f051a45496842caee13cfd7fe/scikit_learn-1.7.2-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:e5bf3d930aee75a65478df91ac1225ff89cd28e9ac7bd1196853a9229b6adb0b", size = 9478381, upload-time = "2025-09-09T08:20:47.982Z" }, + { url = "https://files.pythonhosted.org/packages/82/70/8bf44b933837ba8494ca0fc9a9ab60f1c13b062ad0197f60a56e2fc4c43e/scikit_learn-1.7.2-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b4d6e9deed1a47aca9fe2f267ab8e8fe82ee20b4526b2c0cd9e135cea10feb44", size = 9300296, upload-time = "2025-09-09T08:20:50.366Z" }, + { url = "https://files.pythonhosted.org/packages/c6/99/ed35197a158f1fdc2fe7c3680e9c70d0128f662e1fee4ed495f4b5e13db0/scikit_learn-1.7.2-cp312-cp312-win_amd64.whl", hash = "sha256:6088aa475f0785e01bcf8529f55280a3d7d298679f50c0bb70a2364a82d0b290", size = 8731256, upload-time = "2025-09-09T08:20:52.627Z" }, + { url = "https://files.pythonhosted.org/packages/ae/93/a3038cb0293037fd335f77f31fe053b89c72f17b1c8908c576c29d953e84/scikit_learn-1.7.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:0b7dacaa05e5d76759fb071558a8b5130f4845166d88654a0f9bdf3eb57851b7", size = 9212382, upload-time = "2025-09-09T08:20:54.731Z" }, + { url = "https://files.pythonhosted.org/packages/40/dd/9a88879b0c1104259136146e4742026b52df8540c39fec21a6383f8292c7/scikit_learn-1.7.2-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:abebbd61ad9e1deed54cca45caea8ad5f79e1b93173dece40bb8e0c658dbe6fe", size = 8592042, upload-time = "2025-09-09T08:20:57.313Z" }, + { url = "https://files.pythonhosted.org/packages/46/af/c5e286471b7d10871b811b72ae794ac5fe2989c0a2df07f0ec723030f5f5/scikit_learn-1.7.2-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:502c18e39849c0ea1a5d681af1dbcf15f6cce601aebb657aabbfe84133c1907f", size = 9434180, upload-time = "2025-09-09T08:20:59.671Z" }, + { url = "https://files.pythonhosted.org/packages/f1/fd/df59faa53312d585023b2da27e866524ffb8faf87a68516c23896c718320/scikit_learn-1.7.2-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:7a4c328a71785382fe3fe676a9ecf2c86189249beff90bf85e22bdb7efaf9ae0", size = 9283660, upload-time = "2025-09-09T08:21:01.71Z" }, + { url = "https://files.pythonhosted.org/packages/a7/c7/03000262759d7b6f38c836ff9d512f438a70d8a8ddae68ee80de72dcfb63/scikit_learn-1.7.2-cp313-cp313-win_amd64.whl", hash = "sha256:63a9afd6f7b229aad94618c01c252ce9e6fa97918c5ca19c9a17a087d819440c", size = 8702057, upload-time = "2025-09-09T08:21:04.234Z" }, + { url = "https://files.pythonhosted.org/packages/55/87/ef5eb1f267084532c8e4aef98a28b6ffe7425acbfd64b5e2f2e066bc29b3/scikit_learn-1.7.2-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:9acb6c5e867447b4e1390930e3944a005e2cb115922e693c08a323421a6966e8", size = 9558731, upload-time = "2025-09-09T08:21:06.381Z" }, + { url = "https://files.pythonhosted.org/packages/93/f8/6c1e3fc14b10118068d7938878a9f3f4e6d7b74a8ddb1e5bed65159ccda8/scikit_learn-1.7.2-cp313-cp313t-macosx_12_0_arm64.whl", hash = "sha256:2a41e2a0ef45063e654152ec9d8bcfc39f7afce35b08902bfe290c2498a67a6a", size = 9038852, upload-time = "2025-09-09T08:21:08.628Z" }, + { url = "https://files.pythonhosted.org/packages/83/87/066cafc896ee540c34becf95d30375fe5cbe93c3b75a0ee9aa852cd60021/scikit_learn-1.7.2-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:98335fb98509b73385b3ab2bd0639b1f610541d3988ee675c670371d6a87aa7c", size = 9527094, upload-time = "2025-09-09T08:21:11.486Z" }, + { url = "https://files.pythonhosted.org/packages/9c/2b/4903e1ccafa1f6453b1ab78413938c8800633988c838aa0be386cbb33072/scikit_learn-1.7.2-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:191e5550980d45449126e23ed1d5e9e24b2c68329ee1f691a3987476e115e09c", size = 9367436, upload-time = "2025-09-09T08:21:13.602Z" }, + { url = "https://files.pythonhosted.org/packages/b5/aa/8444be3cfb10451617ff9d177b3c190288f4563e6c50ff02728be67ad094/scikit_learn-1.7.2-cp313-cp313t-win_amd64.whl", hash = "sha256:57dc4deb1d3762c75d685507fbd0bc17160144b2f2ba4ccea5dc285ab0d0e973", size = 9275749, upload-time = "2025-09-09T08:21:15.96Z" }, + { url = "https://files.pythonhosted.org/packages/d9/82/dee5acf66837852e8e68df6d8d3a6cb22d3df997b733b032f513d95205b7/scikit_learn-1.7.2-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:fa8f63940e29c82d1e67a45d5297bdebbcb585f5a5a50c4914cc2e852ab77f33", size = 9208906, upload-time = "2025-09-09T08:21:18.557Z" }, + { url = "https://files.pythonhosted.org/packages/3c/30/9029e54e17b87cb7d50d51a5926429c683d5b4c1732f0507a6c3bed9bf65/scikit_learn-1.7.2-cp314-cp314-macosx_12_0_arm64.whl", hash = "sha256:f95dc55b7902b91331fa4e5845dd5bde0580c9cd9612b1b2791b7e80c3d32615", size = 8627836, upload-time = "2025-09-09T08:21:20.695Z" }, + { url = "https://files.pythonhosted.org/packages/60/18/4a52c635c71b536879f4b971c2cedf32c35ee78f48367885ed8025d1f7ee/scikit_learn-1.7.2-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:9656e4a53e54578ad10a434dc1f993330568cfee176dff07112b8785fb413106", size = 9426236, upload-time = "2025-09-09T08:21:22.645Z" }, + { url = "https://files.pythonhosted.org/packages/99/7e/290362f6ab582128c53445458a5befd471ed1ea37953d5bcf80604619250/scikit_learn-1.7.2-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:96dc05a854add0e50d3f47a1ef21a10a595016da5b007c7d9cd9d0bffd1fcc61", size = 9312593, upload-time = "2025-09-09T08:21:24.65Z" }, + { url = "https://files.pythonhosted.org/packages/8e/87/24f541b6d62b1794939ae6422f8023703bbf6900378b2b34e0b4384dfefd/scikit_learn-1.7.2-cp314-cp314-win_amd64.whl", hash = "sha256:bb24510ed3f9f61476181e4db51ce801e2ba37541def12dc9333b946fc7a9cf8", size = 8820007, upload-time = "2025-09-09T08:21:26.713Z" }, +] + +[[package]] +name = "scipy" +version = "1.13.1" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version < '3.10'", +] +dependencies = [ + { name = "numpy", version = "2.0.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ae/00/48c2f661e2816ccf2ecd77982f6605b2950afe60f60a52b4cbbc2504aa8f/scipy-1.13.1.tar.gz", hash = "sha256:095a87a0312b08dfd6a6155cbbd310a8c51800fc931b8c0b84003014b874ed3c", size = 57210720, upload-time = "2024-05-23T03:29:26.079Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/33/59/41b2529908c002ade869623b87eecff3e11e3ce62e996d0bdcb536984187/scipy-1.13.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:20335853b85e9a49ff7572ab453794298bcf0354d8068c5f6775a0eabf350aca", size = 39328076, upload-time = "2024-05-23T03:19:01.687Z" }, + { url = "https://files.pythonhosted.org/packages/d5/33/f1307601f492f764062ce7dd471a14750f3360e33cd0f8c614dae208492c/scipy-1.13.1-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:d605e9c23906d1994f55ace80e0125c587f96c020037ea6aa98d01b4bd2e222f", size = 30306232, upload-time = "2024-05-23T03:19:09.089Z" }, + { url = "https://files.pythonhosted.org/packages/c0/66/9cd4f501dd5ea03e4a4572ecd874936d0da296bd04d1c45ae1a4a75d9c3a/scipy-1.13.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cfa31f1def5c819b19ecc3a8b52d28ffdcc7ed52bb20c9a7589669dd3c250989", size = 33743202, upload-time = "2024-05-23T03:19:15.138Z" }, + { url = "https://files.pythonhosted.org/packages/a3/ba/7255e5dc82a65adbe83771c72f384d99c43063648456796436c9a5585ec3/scipy-1.13.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f26264b282b9da0952a024ae34710c2aff7d27480ee91a2e82b7b7073c24722f", size = 38577335, upload-time = "2024-05-23T03:19:21.984Z" }, + { url = "https://files.pythonhosted.org/packages/49/a5/bb9ded8326e9f0cdfdc412eeda1054b914dfea952bda2097d174f8832cc0/scipy-1.13.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:eccfa1906eacc02de42d70ef4aecea45415f5be17e72b61bafcfd329bdc52e94", size = 38820728, upload-time = "2024-05-23T03:19:28.225Z" }, + { url = "https://files.pythonhosted.org/packages/12/30/df7a8fcc08f9b4a83f5f27cfaaa7d43f9a2d2ad0b6562cced433e5b04e31/scipy-1.13.1-cp310-cp310-win_amd64.whl", hash = "sha256:2831f0dc9c5ea9edd6e51e6e769b655f08ec6db6e2e10f86ef39bd32eb11da54", size = 46210588, upload-time = "2024-05-23T03:19:35.661Z" }, + { url = "https://files.pythonhosted.org/packages/b4/15/4a4bb1b15bbd2cd2786c4f46e76b871b28799b67891f23f455323a0cdcfb/scipy-1.13.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:27e52b09c0d3a1d5b63e1105f24177e544a222b43611aaf5bc44d4a0979e32f9", size = 39333805, upload-time = "2024-05-23T03:19:43.081Z" }, + { url = "https://files.pythonhosted.org/packages/ba/92/42476de1af309c27710004f5cdebc27bec62c204db42e05b23a302cb0c9a/scipy-1.13.1-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:54f430b00f0133e2224c3ba42b805bfd0086fe488835effa33fa291561932326", size = 30317687, upload-time = "2024-05-23T03:19:48.799Z" }, + { url = "https://files.pythonhosted.org/packages/80/ba/8be64fe225360a4beb6840f3cbee494c107c0887f33350d0a47d55400b01/scipy-1.13.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e89369d27f9e7b0884ae559a3a956e77c02114cc60a6058b4e5011572eea9299", size = 33694638, upload-time = "2024-05-23T03:19:55.104Z" }, + { url = "https://files.pythonhosted.org/packages/36/07/035d22ff9795129c5a847c64cb43c1fa9188826b59344fee28a3ab02e283/scipy-1.13.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a78b4b3345f1b6f68a763c6e25c0c9a23a9fd0f39f5f3d200efe8feda560a5fa", size = 38569931, upload-time = "2024-05-23T03:20:01.82Z" }, + { url = "https://files.pythonhosted.org/packages/d9/10/f9b43de37e5ed91facc0cfff31d45ed0104f359e4f9a68416cbf4e790241/scipy-1.13.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:45484bee6d65633752c490404513b9ef02475b4284c4cfab0ef946def50b3f59", size = 38838145, upload-time = "2024-05-23T03:20:09.173Z" }, + { url = "https://files.pythonhosted.org/packages/4a/48/4513a1a5623a23e95f94abd675ed91cfb19989c58e9f6f7d03990f6caf3d/scipy-1.13.1-cp311-cp311-win_amd64.whl", hash = "sha256:5713f62f781eebd8d597eb3f88b8bf9274e79eeabf63afb4a737abc6c84ad37b", size = 46196227, upload-time = "2024-05-23T03:20:16.433Z" }, + { url = "https://files.pythonhosted.org/packages/f2/7b/fb6b46fbee30fc7051913068758414f2721003a89dd9a707ad49174e3843/scipy-1.13.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:5d72782f39716b2b3509cd7c33cdc08c96f2f4d2b06d51e52fb45a19ca0c86a1", size = 39357301, upload-time = "2024-05-23T03:20:23.538Z" }, + { url = "https://files.pythonhosted.org/packages/dc/5a/2043a3bde1443d94014aaa41e0b50c39d046dda8360abd3b2a1d3f79907d/scipy-1.13.1-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:017367484ce5498445aade74b1d5ab377acdc65e27095155e448c88497755a5d", size = 30363348, upload-time = "2024-05-23T03:20:29.885Z" }, + { url = "https://files.pythonhosted.org/packages/e7/cb/26e4a47364bbfdb3b7fb3363be6d8a1c543bcd70a7753ab397350f5f189a/scipy-1.13.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:949ae67db5fa78a86e8fa644b9a6b07252f449dcf74247108c50e1d20d2b4627", size = 33406062, upload-time = "2024-05-23T03:20:36.012Z" }, + { url = "https://files.pythonhosted.org/packages/88/ab/6ecdc526d509d33814835447bbbeedbebdec7cca46ef495a61b00a35b4bf/scipy-1.13.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:de3ade0e53bc1f21358aa74ff4830235d716211d7d077e340c7349bc3542e884", size = 38218311, upload-time = "2024-05-23T03:20:42.086Z" }, + { url = "https://files.pythonhosted.org/packages/0b/00/9f54554f0f8318100a71515122d8f4f503b1a2c4b4cfab3b4b68c0eb08fa/scipy-1.13.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:2ac65fb503dad64218c228e2dc2d0a0193f7904747db43014645ae139c8fad16", size = 38442493, upload-time = "2024-05-23T03:20:48.292Z" }, + { url = "https://files.pythonhosted.org/packages/3e/df/963384e90733e08eac978cd103c34df181d1fec424de383cdc443f418dd4/scipy-1.13.1-cp312-cp312-win_amd64.whl", hash = "sha256:cdd7dacfb95fea358916410ec61bbc20440f7860333aee6d882bb8046264e949", size = 45910955, upload-time = "2024-05-23T03:20:55.091Z" }, + { url = "https://files.pythonhosted.org/packages/7f/29/c2ea58c9731b9ecb30b6738113a95d147e83922986b34c685b8f6eefde21/scipy-1.13.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:436bbb42a94a8aeef855d755ce5a465479c721e9d684de76bf61a62e7c2b81d5", size = 39352927, upload-time = "2024-05-23T03:21:01.95Z" }, + { url = "https://files.pythonhosted.org/packages/5c/c0/e71b94b20ccf9effb38d7147c0064c08c622309fd487b1b677771a97d18c/scipy-1.13.1-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:8335549ebbca860c52bf3d02f80784e91a004b71b059e3eea9678ba994796a24", size = 30324538, upload-time = "2024-05-23T03:21:07.634Z" }, + { url = "https://files.pythonhosted.org/packages/6d/0f/aaa55b06d474817cea311e7b10aab2ea1fd5d43bc6a2861ccc9caec9f418/scipy-1.13.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d533654b7d221a6a97304ab63c41c96473ff04459e404b83275b60aa8f4b7004", size = 33732190, upload-time = "2024-05-23T03:21:14.41Z" }, + { url = "https://files.pythonhosted.org/packages/35/f5/d0ad1a96f80962ba65e2ce1de6a1e59edecd1f0a7b55990ed208848012e0/scipy-1.13.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:637e98dcf185ba7f8e663e122ebf908c4702420477ae52a04f9908707456ba4d", size = 38612244, upload-time = "2024-05-23T03:21:21.827Z" }, + { url = "https://files.pythonhosted.org/packages/8d/02/1165905f14962174e6569076bcc3315809ae1291ed14de6448cc151eedfd/scipy-1.13.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a014c2b3697bde71724244f63de2476925596c24285c7a637364761f8710891c", size = 38845637, upload-time = "2024-05-23T03:21:28.729Z" }, + { url = "https://files.pythonhosted.org/packages/3e/77/dab54fe647a08ee4253963bcd8f9cf17509c8ca64d6335141422fe2e2114/scipy-1.13.1-cp39-cp39-win_amd64.whl", hash = "sha256:392e4ec766654852c25ebad4f64e4e584cf19820b980bc04960bca0b0cd6eaa2", size = 46227440, upload-time = "2024-05-23T03:21:35.888Z" }, +] + +[[package]] +name = "scipy" +version = "1.15.3" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version == '3.10.*'", +] +dependencies = [ + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.10.*'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/0f/37/6964b830433e654ec7485e45a00fc9a27cf868d622838f6b6d9c5ec0d532/scipy-1.15.3.tar.gz", hash = "sha256:eae3cf522bc7df64b42cad3925c876e1b0b6c35c1337c93e12c0f366f55b0eaf", size = 59419214, upload-time = "2025-05-08T16:13:05.955Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/78/2f/4966032c5f8cc7e6a60f1b2e0ad686293b9474b65246b0c642e3ef3badd0/scipy-1.15.3-cp310-cp310-macosx_10_13_x86_64.whl", hash = "sha256:a345928c86d535060c9c2b25e71e87c39ab2f22fc96e9636bd74d1dbf9de448c", size = 38702770, upload-time = "2025-05-08T16:04:20.849Z" }, + { url = "https://files.pythonhosted.org/packages/a0/6e/0c3bf90fae0e910c274db43304ebe25a6b391327f3f10b5dcc638c090795/scipy-1.15.3-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:ad3432cb0f9ed87477a8d97f03b763fd1d57709f1bbde3c9369b1dff5503b253", size = 30094511, upload-time = "2025-05-08T16:04:27.103Z" }, + { url = "https://files.pythonhosted.org/packages/ea/b1/4deb37252311c1acff7f101f6453f0440794f51b6eacb1aad4459a134081/scipy-1.15.3-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:aef683a9ae6eb00728a542b796f52a5477b78252edede72b8327a886ab63293f", size = 22368151, upload-time = "2025-05-08T16:04:31.731Z" }, + { url = "https://files.pythonhosted.org/packages/38/7d/f457626e3cd3c29b3a49ca115a304cebb8cc6f31b04678f03b216899d3c6/scipy-1.15.3-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:1c832e1bd78dea67d5c16f786681b28dd695a8cb1fb90af2e27580d3d0967e92", size = 25121732, upload-time = "2025-05-08T16:04:36.596Z" }, + { url = "https://files.pythonhosted.org/packages/db/0a/92b1de4a7adc7a15dcf5bddc6e191f6f29ee663b30511ce20467ef9b82e4/scipy-1.15.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:263961f658ce2165bbd7b99fa5135195c3a12d9bef045345016b8b50c315cb82", size = 35547617, upload-time = "2025-05-08T16:04:43.546Z" }, + { url = "https://files.pythonhosted.org/packages/8e/6d/41991e503e51fc1134502694c5fa7a1671501a17ffa12716a4a9151af3df/scipy-1.15.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9e2abc762b0811e09a0d3258abee2d98e0c703eee49464ce0069590846f31d40", size = 37662964, upload-time = "2025-05-08T16:04:49.431Z" }, + { url = "https://files.pythonhosted.org/packages/25/e1/3df8f83cb15f3500478c889be8fb18700813b95e9e087328230b98d547ff/scipy-1.15.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:ed7284b21a7a0c8f1b6e5977ac05396c0d008b89e05498c8b7e8f4a1423bba0e", size = 37238749, upload-time = "2025-05-08T16:04:55.215Z" }, + { url = "https://files.pythonhosted.org/packages/93/3e/b3257cf446f2a3533ed7809757039016b74cd6f38271de91682aa844cfc5/scipy-1.15.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:5380741e53df2c566f4d234b100a484b420af85deb39ea35a1cc1be84ff53a5c", size = 40022383, upload-time = "2025-05-08T16:05:01.914Z" }, + { url = "https://files.pythonhosted.org/packages/d1/84/55bc4881973d3f79b479a5a2e2df61c8c9a04fcb986a213ac9c02cfb659b/scipy-1.15.3-cp310-cp310-win_amd64.whl", hash = "sha256:9d61e97b186a57350f6d6fd72640f9e99d5a4a2b8fbf4b9ee9a841eab327dc13", size = 41259201, upload-time = "2025-05-08T16:05:08.166Z" }, + { url = "https://files.pythonhosted.org/packages/96/ab/5cc9f80f28f6a7dff646c5756e559823614a42b1939d86dd0ed550470210/scipy-1.15.3-cp311-cp311-macosx_10_13_x86_64.whl", hash = "sha256:993439ce220d25e3696d1b23b233dd010169b62f6456488567e830654ee37a6b", size = 38714255, upload-time = "2025-05-08T16:05:14.596Z" }, + { url = "https://files.pythonhosted.org/packages/4a/4a/66ba30abe5ad1a3ad15bfb0b59d22174012e8056ff448cb1644deccbfed2/scipy-1.15.3-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:34716e281f181a02341ddeaad584205bd2fd3c242063bd3423d61ac259ca7eba", size = 30111035, upload-time = "2025-05-08T16:05:20.152Z" }, + { url = "https://files.pythonhosted.org/packages/4b/fa/a7e5b95afd80d24313307f03624acc65801846fa75599034f8ceb9e2cbf6/scipy-1.15.3-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:3b0334816afb8b91dab859281b1b9786934392aa3d527cd847e41bb6f45bee65", size = 22384499, upload-time = "2025-05-08T16:05:24.494Z" }, + { url = "https://files.pythonhosted.org/packages/17/99/f3aaddccf3588bb4aea70ba35328c204cadd89517a1612ecfda5b2dd9d7a/scipy-1.15.3-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:6db907c7368e3092e24919b5e31c76998b0ce1684d51a90943cb0ed1b4ffd6c1", size = 25152602, upload-time = "2025-05-08T16:05:29.313Z" }, + { url = "https://files.pythonhosted.org/packages/56/c5/1032cdb565f146109212153339f9cb8b993701e9fe56b1c97699eee12586/scipy-1.15.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:721d6b4ef5dc82ca8968c25b111e307083d7ca9091bc38163fb89243e85e3889", size = 35503415, upload-time = "2025-05-08T16:05:34.699Z" }, + { url = "https://files.pythonhosted.org/packages/bd/37/89f19c8c05505d0601ed5650156e50eb881ae3918786c8fd7262b4ee66d3/scipy-1.15.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:39cb9c62e471b1bb3750066ecc3a3f3052b37751c7c3dfd0fd7e48900ed52982", size = 37652622, upload-time = "2025-05-08T16:05:40.762Z" }, + { url = "https://files.pythonhosted.org/packages/7e/31/be59513aa9695519b18e1851bb9e487de66f2d31f835201f1b42f5d4d475/scipy-1.15.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:795c46999bae845966368a3c013e0e00947932d68e235702b5c3f6ea799aa8c9", size = 37244796, upload-time = "2025-05-08T16:05:48.119Z" }, + { url = "https://files.pythonhosted.org/packages/10/c0/4f5f3eeccc235632aab79b27a74a9130c6c35df358129f7ac8b29f562ac7/scipy-1.15.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:18aaacb735ab38b38db42cb01f6b92a2d0d4b6aabefeb07f02849e47f8fb3594", size = 40047684, upload-time = "2025-05-08T16:05:54.22Z" }, + { url = "https://files.pythonhosted.org/packages/ab/a7/0ddaf514ce8a8714f6ed243a2b391b41dbb65251affe21ee3077ec45ea9a/scipy-1.15.3-cp311-cp311-win_amd64.whl", hash = "sha256:ae48a786a28412d744c62fd7816a4118ef97e5be0bee968ce8f0a2fba7acf3bb", size = 41246504, upload-time = "2025-05-08T16:06:00.437Z" }, + { url = "https://files.pythonhosted.org/packages/37/4b/683aa044c4162e10ed7a7ea30527f2cbd92e6999c10a8ed8edb253836e9c/scipy-1.15.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:6ac6310fdbfb7aa6612408bd2f07295bcbd3fda00d2d702178434751fe48e019", size = 38766735, upload-time = "2025-05-08T16:06:06.471Z" }, + { url = "https://files.pythonhosted.org/packages/7b/7e/f30be3d03de07f25dc0ec926d1681fed5c732d759ac8f51079708c79e680/scipy-1.15.3-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:185cd3d6d05ca4b44a8f1595af87f9c372bb6acf9c808e99aa3e9aa03bd98cf6", size = 30173284, upload-time = "2025-05-08T16:06:11.686Z" }, + { url = "https://files.pythonhosted.org/packages/07/9c/0ddb0d0abdabe0d181c1793db51f02cd59e4901da6f9f7848e1f96759f0d/scipy-1.15.3-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:05dc6abcd105e1a29f95eada46d4a3f251743cfd7d3ae8ddb4088047f24ea477", size = 22446958, upload-time = "2025-05-08T16:06:15.97Z" }, + { url = "https://files.pythonhosted.org/packages/af/43/0bce905a965f36c58ff80d8bea33f1f9351b05fad4beaad4eae34699b7a1/scipy-1.15.3-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:06efcba926324df1696931a57a176c80848ccd67ce6ad020c810736bfd58eb1c", size = 25242454, upload-time = "2025-05-08T16:06:20.394Z" }, + { url = "https://files.pythonhosted.org/packages/56/30/a6f08f84ee5b7b28b4c597aca4cbe545535c39fe911845a96414700b64ba/scipy-1.15.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c05045d8b9bfd807ee1b9f38761993297b10b245f012b11b13b91ba8945f7e45", size = 35210199, upload-time = "2025-05-08T16:06:26.159Z" }, + { url = "https://files.pythonhosted.org/packages/0b/1f/03f52c282437a168ee2c7c14a1a0d0781a9a4a8962d84ac05c06b4c5b555/scipy-1.15.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:271e3713e645149ea5ea3e97b57fdab61ce61333f97cfae392c28ba786f9bb49", size = 37309455, upload-time = "2025-05-08T16:06:32.778Z" }, + { url = "https://files.pythonhosted.org/packages/89/b1/fbb53137f42c4bf630b1ffdfc2151a62d1d1b903b249f030d2b1c0280af8/scipy-1.15.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6cfd56fc1a8e53f6e89ba3a7a7251f7396412d655bca2aa5611c8ec9a6784a1e", size = 36885140, upload-time = "2025-05-08T16:06:39.249Z" }, + { url = "https://files.pythonhosted.org/packages/2e/2e/025e39e339f5090df1ff266d021892694dbb7e63568edcfe43f892fa381d/scipy-1.15.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:0ff17c0bb1cb32952c09217d8d1eed9b53d1463e5f1dd6052c7857f83127d539", size = 39710549, upload-time = "2025-05-08T16:06:45.729Z" }, + { url = "https://files.pythonhosted.org/packages/e6/eb/3bf6ea8ab7f1503dca3a10df2e4b9c3f6b3316df07f6c0ded94b281c7101/scipy-1.15.3-cp312-cp312-win_amd64.whl", hash = "sha256:52092bc0472cfd17df49ff17e70624345efece4e1a12b23783a1ac59a1b728ed", size = 40966184, upload-time = "2025-05-08T16:06:52.623Z" }, + { url = "https://files.pythonhosted.org/packages/73/18/ec27848c9baae6e0d6573eda6e01a602e5649ee72c27c3a8aad673ebecfd/scipy-1.15.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:2c620736bcc334782e24d173c0fdbb7590a0a436d2fdf39310a8902505008759", size = 38728256, upload-time = "2025-05-08T16:06:58.696Z" }, + { url = "https://files.pythonhosted.org/packages/74/cd/1aef2184948728b4b6e21267d53b3339762c285a46a274ebb7863c9e4742/scipy-1.15.3-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:7e11270a000969409d37ed399585ee530b9ef6aa99d50c019de4cb01e8e54e62", size = 30109540, upload-time = "2025-05-08T16:07:04.209Z" }, + { url = "https://files.pythonhosted.org/packages/5b/d8/59e452c0a255ec352bd0a833537a3bc1bfb679944c4938ab375b0a6b3a3e/scipy-1.15.3-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:8c9ed3ba2c8a2ce098163a9bdb26f891746d02136995df25227a20e71c396ebb", size = 22383115, upload-time = "2025-05-08T16:07:08.998Z" }, + { url = "https://files.pythonhosted.org/packages/08/f5/456f56bbbfccf696263b47095291040655e3cbaf05d063bdc7c7517f32ac/scipy-1.15.3-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:0bdd905264c0c9cfa74a4772cdb2070171790381a5c4d312c973382fc6eaf730", size = 25163884, upload-time = "2025-05-08T16:07:14.091Z" }, + { url = "https://files.pythonhosted.org/packages/a2/66/a9618b6a435a0f0c0b8a6d0a2efb32d4ec5a85f023c2b79d39512040355b/scipy-1.15.3-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:79167bba085c31f38603e11a267d862957cbb3ce018d8b38f79ac043bc92d825", size = 35174018, upload-time = "2025-05-08T16:07:19.427Z" }, + { url = "https://files.pythonhosted.org/packages/b5/09/c5b6734a50ad4882432b6bb7c02baf757f5b2f256041da5df242e2d7e6b6/scipy-1.15.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c9deabd6d547aee2c9a81dee6cc96c6d7e9a9b1953f74850c179f91fdc729cb7", size = 37269716, upload-time = "2025-05-08T16:07:25.712Z" }, + { url = "https://files.pythonhosted.org/packages/77/0a/eac00ff741f23bcabd352731ed9b8995a0a60ef57f5fd788d611d43d69a1/scipy-1.15.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:dde4fc32993071ac0c7dd2d82569e544f0bdaff66269cb475e0f369adad13f11", size = 36872342, upload-time = "2025-05-08T16:07:31.468Z" }, + { url = "https://files.pythonhosted.org/packages/fe/54/4379be86dd74b6ad81551689107360d9a3e18f24d20767a2d5b9253a3f0a/scipy-1.15.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:f77f853d584e72e874d87357ad70f44b437331507d1c311457bed8ed2b956126", size = 39670869, upload-time = "2025-05-08T16:07:38.002Z" }, + { url = "https://files.pythonhosted.org/packages/87/2e/892ad2862ba54f084ffe8cc4a22667eaf9c2bcec6d2bff1d15713c6c0703/scipy-1.15.3-cp313-cp313-win_amd64.whl", hash = "sha256:b90ab29d0c37ec9bf55424c064312930ca5f4bde15ee8619ee44e69319aab163", size = 40988851, upload-time = "2025-05-08T16:08:33.671Z" }, + { url = "https://files.pythonhosted.org/packages/1b/e9/7a879c137f7e55b30d75d90ce3eb468197646bc7b443ac036ae3fe109055/scipy-1.15.3-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:3ac07623267feb3ae308487c260ac684b32ea35fd81e12845039952f558047b8", size = 38863011, upload-time = "2025-05-08T16:07:44.039Z" }, + { url = "https://files.pythonhosted.org/packages/51/d1/226a806bbd69f62ce5ef5f3ffadc35286e9fbc802f606a07eb83bf2359de/scipy-1.15.3-cp313-cp313t-macosx_12_0_arm64.whl", hash = "sha256:6487aa99c2a3d509a5227d9a5e889ff05830a06b2ce08ec30df6d79db5fcd5c5", size = 30266407, upload-time = "2025-05-08T16:07:49.891Z" }, + { url = "https://files.pythonhosted.org/packages/e5/9b/f32d1d6093ab9eeabbd839b0f7619c62e46cc4b7b6dbf05b6e615bbd4400/scipy-1.15.3-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:50f9e62461c95d933d5c5ef4a1f2ebf9a2b4e83b0db374cb3f1de104d935922e", size = 22540030, upload-time = "2025-05-08T16:07:54.121Z" }, + { url = "https://files.pythonhosted.org/packages/e7/29/c278f699b095c1a884f29fda126340fcc201461ee8bfea5c8bdb1c7c958b/scipy-1.15.3-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:14ed70039d182f411ffc74789a16df3835e05dc469b898233a245cdfd7f162cb", size = 25218709, upload-time = "2025-05-08T16:07:58.506Z" }, + { url = "https://files.pythonhosted.org/packages/24/18/9e5374b617aba742a990581373cd6b68a2945d65cc588482749ef2e64467/scipy-1.15.3-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0a769105537aa07a69468a0eefcd121be52006db61cdd8cac8a0e68980bbb723", size = 34809045, upload-time = "2025-05-08T16:08:03.929Z" }, + { url = "https://files.pythonhosted.org/packages/e1/fe/9c4361e7ba2927074360856db6135ef4904d505e9b3afbbcb073c4008328/scipy-1.15.3-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9db984639887e3dffb3928d118145ffe40eff2fa40cb241a306ec57c219ebbbb", size = 36703062, upload-time = "2025-05-08T16:08:09.558Z" }, + { url = "https://files.pythonhosted.org/packages/b7/8e/038ccfe29d272b30086b25a4960f757f97122cb2ec42e62b460d02fe98e9/scipy-1.15.3-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:40e54d5c7e7ebf1aa596c374c49fa3135f04648a0caabcb66c52884b943f02b4", size = 36393132, upload-time = "2025-05-08T16:08:15.34Z" }, + { url = "https://files.pythonhosted.org/packages/10/7e/5c12285452970be5bdbe8352c619250b97ebf7917d7a9a9e96b8a8140f17/scipy-1.15.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:5e721fed53187e71d0ccf382b6bf977644c533e506c4d33c3fb24de89f5c3ed5", size = 38979503, upload-time = "2025-05-08T16:08:21.513Z" }, + { url = "https://files.pythonhosted.org/packages/81/06/0a5e5349474e1cbc5757975b21bd4fad0e72ebf138c5592f191646154e06/scipy-1.15.3-cp313-cp313t-win_amd64.whl", hash = "sha256:76ad1fb5f8752eabf0fa02e4cc0336b4e8f021e2d5f061ed37d6d264db35e3ca", size = 40308097, upload-time = "2025-05-08T16:08:27.627Z" }, +] + +[[package]] +name = "scipy" +version = "1.16.2" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version >= '3.12'", + "python_full_version == '3.11.*'", +] +dependencies = [ + { name = "numpy", version = "2.3.4", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/4c/3b/546a6f0bfe791bbb7f8d591613454d15097e53f906308ec6f7c1ce588e8e/scipy-1.16.2.tar.gz", hash = "sha256:af029b153d243a80afb6eabe40b0a07f8e35c9adc269c019f364ad747f826a6b", size = 30580599, upload-time = "2025-09-11T17:48:08.271Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0b/ef/37ed4b213d64b48422df92560af7300e10fe30b5d665dd79932baebee0c6/scipy-1.16.2-cp311-cp311-macosx_10_14_x86_64.whl", hash = "sha256:6ab88ea43a57da1af33292ebd04b417e8e2eaf9d5aa05700be8d6e1b6501cd92", size = 36619956, upload-time = "2025-09-11T17:39:20.5Z" }, + { url = "https://files.pythonhosted.org/packages/85/ab/5c2eba89b9416961a982346a4d6a647d78c91ec96ab94ed522b3b6baf444/scipy-1.16.2-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:c95e96c7305c96ede73a7389f46ccd6c659c4da5ef1b2789466baeaed3622b6e", size = 28931117, upload-time = "2025-09-11T17:39:29.06Z" }, + { url = "https://files.pythonhosted.org/packages/80/d1/eed51ab64d227fe60229a2d57fb60ca5898cfa50ba27d4f573e9e5f0b430/scipy-1.16.2-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:87eb178db04ece7c698220d523c170125dbffebb7af0345e66c3554f6f60c173", size = 20921997, upload-time = "2025-09-11T17:39:34.892Z" }, + { url = "https://files.pythonhosted.org/packages/be/7c/33ea3e23bbadde96726edba6bf9111fb1969d14d9d477ffa202c67bec9da/scipy-1.16.2-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:4e409eac067dcee96a57fbcf424c13f428037827ec7ee3cb671ff525ca4fc34d", size = 23523374, upload-time = "2025-09-11T17:39:40.846Z" }, + { url = "https://files.pythonhosted.org/packages/96/0b/7399dc96e1e3f9a05e258c98d716196a34f528eef2ec55aad651ed136d03/scipy-1.16.2-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:e574be127bb760f0dad24ff6e217c80213d153058372362ccb9555a10fc5e8d2", size = 33583702, upload-time = "2025-09-11T17:39:49.011Z" }, + { url = "https://files.pythonhosted.org/packages/1a/bc/a5c75095089b96ea72c1bd37a4497c24b581ec73db4ef58ebee142ad2d14/scipy-1.16.2-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:f5db5ba6188d698ba7abab982ad6973265b74bb40a1efe1821b58c87f73892b9", size = 35883427, upload-time = "2025-09-11T17:39:57.406Z" }, + { url = "https://files.pythonhosted.org/packages/ab/66/e25705ca3d2b87b97fe0a278a24b7f477b4023a926847935a1a71488a6a6/scipy-1.16.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:ec6e74c4e884104ae006d34110677bfe0098203a3fec2f3faf349f4cb05165e3", size = 36212940, upload-time = "2025-09-11T17:40:06.013Z" }, + { url = "https://files.pythonhosted.org/packages/d6/fd/0bb911585e12f3abdd603d721d83fc1c7492835e1401a0e6d498d7822b4b/scipy-1.16.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:912f46667d2d3834bc3d57361f854226475f695eb08c08a904aadb1c936b6a88", size = 38865092, upload-time = "2025-09-11T17:40:15.143Z" }, + { url = "https://files.pythonhosted.org/packages/d6/73/c449a7d56ba6e6f874183759f8483cde21f900a8be117d67ffbb670c2958/scipy-1.16.2-cp311-cp311-win_amd64.whl", hash = "sha256:91e9e8a37befa5a69e9cacbe0bcb79ae5afb4a0b130fd6db6ee6cc0d491695fa", size = 38687626, upload-time = "2025-09-11T17:40:24.041Z" }, + { url = "https://files.pythonhosted.org/packages/68/72/02f37316adf95307f5d9e579023c6899f89ff3a051fa079dbd6faafc48e5/scipy-1.16.2-cp311-cp311-win_arm64.whl", hash = "sha256:f3bf75a6dcecab62afde4d1f973f1692be013110cad5338007927db8da73249c", size = 25503506, upload-time = "2025-09-11T17:40:30.703Z" }, + { url = "https://files.pythonhosted.org/packages/b7/8d/6396e00db1282279a4ddd507c5f5e11f606812b608ee58517ce8abbf883f/scipy-1.16.2-cp312-cp312-macosx_10_14_x86_64.whl", hash = "sha256:89d6c100fa5c48472047632e06f0876b3c4931aac1f4291afc81a3644316bb0d", size = 36646259, upload-time = "2025-09-11T17:40:39.329Z" }, + { url = "https://files.pythonhosted.org/packages/3b/93/ea9edd7e193fceb8eef149804491890bde73fb169c896b61aa3e2d1e4e77/scipy-1.16.2-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:ca748936cd579d3f01928b30a17dc474550b01272d8046e3e1ee593f23620371", size = 28888976, upload-time = "2025-09-11T17:40:46.82Z" }, + { url = "https://files.pythonhosted.org/packages/91/4d/281fddc3d80fd738ba86fd3aed9202331180b01e2c78eaae0642f22f7e83/scipy-1.16.2-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:fac4f8ce2ddb40e2e3d0f7ec36d2a1e7f92559a2471e59aec37bd8d9de01fec0", size = 20879905, upload-time = "2025-09-11T17:40:52.545Z" }, + { url = "https://files.pythonhosted.org/packages/69/40/b33b74c84606fd301b2915f0062e45733c6ff5708d121dd0deaa8871e2d0/scipy-1.16.2-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:033570f1dcefd79547a88e18bccacff025c8c647a330381064f561d43b821232", size = 23553066, upload-time = "2025-09-11T17:40:59.014Z" }, + { url = "https://files.pythonhosted.org/packages/55/a7/22c739e2f21a42cc8f16bc76b47cff4ed54fbe0962832c589591c2abec34/scipy-1.16.2-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:ea3421209bf00c8a5ef2227de496601087d8f638a2363ee09af059bd70976dc1", size = 33336407, upload-time = "2025-09-11T17:41:06.796Z" }, + { url = "https://files.pythonhosted.org/packages/53/11/a0160990b82999b45874dc60c0c183d3a3a969a563fffc476d5a9995c407/scipy-1.16.2-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:f66bd07ba6f84cd4a380b41d1bf3c59ea488b590a2ff96744845163309ee8e2f", size = 35673281, upload-time = "2025-09-11T17:41:15.055Z" }, + { url = "https://files.pythonhosted.org/packages/96/53/7ef48a4cfcf243c3d0f1643f5887c81f29fdf76911c4e49331828e19fc0a/scipy-1.16.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:5e9feab931bd2aea4a23388c962df6468af3d808ddf2d40f94a81c5dc38f32ef", size = 36004222, upload-time = "2025-09-11T17:41:23.868Z" }, + { url = "https://files.pythonhosted.org/packages/49/7f/71a69e0afd460049d41c65c630c919c537815277dfea214031005f474d78/scipy-1.16.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:03dfc75e52f72cf23ec2ced468645321407faad8f0fe7b1f5b49264adbc29cb1", size = 38664586, upload-time = "2025-09-11T17:41:31.021Z" }, + { url = "https://files.pythonhosted.org/packages/34/95/20e02ca66fb495a95fba0642fd48e0c390d0ece9b9b14c6e931a60a12dea/scipy-1.16.2-cp312-cp312-win_amd64.whl", hash = "sha256:0ce54e07bbb394b417457409a64fd015be623f36e330ac49306433ffe04bc97e", size = 38550641, upload-time = "2025-09-11T17:41:36.61Z" }, + { url = "https://files.pythonhosted.org/packages/92/ad/13646b9beb0a95528ca46d52b7babafbe115017814a611f2065ee4e61d20/scipy-1.16.2-cp312-cp312-win_arm64.whl", hash = "sha256:2a8ffaa4ac0df81a0b94577b18ee079f13fecdb924df3328fc44a7dc5ac46851", size = 25456070, upload-time = "2025-09-11T17:41:41.3Z" }, + { url = "https://files.pythonhosted.org/packages/c1/27/c5b52f1ee81727a9fc457f5ac1e9bf3d6eab311805ea615c83c27ba06400/scipy-1.16.2-cp313-cp313-macosx_10_14_x86_64.whl", hash = "sha256:84f7bf944b43e20b8a894f5fe593976926744f6c185bacfcbdfbb62736b5cc70", size = 36604856, upload-time = "2025-09-11T17:41:47.695Z" }, + { url = "https://files.pythonhosted.org/packages/32/a9/15c20d08e950b540184caa8ced675ba1128accb0e09c653780ba023a4110/scipy-1.16.2-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:5c39026d12edc826a1ef2ad35ad1e6d7f087f934bb868fc43fa3049c8b8508f9", size = 28864626, upload-time = "2025-09-11T17:41:52.642Z" }, + { url = "https://files.pythonhosted.org/packages/4c/fc/ea36098df653cca26062a627c1a94b0de659e97127c8491e18713ca0e3b9/scipy-1.16.2-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:e52729ffd45b68777c5319560014d6fd251294200625d9d70fd8626516fc49f5", size = 20855689, upload-time = "2025-09-11T17:41:57.886Z" }, + { url = "https://files.pythonhosted.org/packages/dc/6f/d0b53be55727f3e6d7c72687ec18ea6d0047cf95f1f77488b99a2bafaee1/scipy-1.16.2-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:024dd4a118cccec09ca3209b7e8e614931a6ffb804b2a601839499cb88bdf925", size = 23512151, upload-time = "2025-09-11T17:42:02.303Z" }, + { url = "https://files.pythonhosted.org/packages/11/85/bf7dab56e5c4b1d3d8eef92ca8ede788418ad38a7dc3ff50262f00808760/scipy-1.16.2-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:7a5dc7ee9c33019973a470556081b0fd3c9f4c44019191039f9769183141a4d9", size = 33329824, upload-time = "2025-09-11T17:42:07.549Z" }, + { url = "https://files.pythonhosted.org/packages/da/6a/1a927b14ddc7714111ea51f4e568203b2bb6ed59bdd036d62127c1a360c8/scipy-1.16.2-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:c2275ff105e508942f99d4e3bc56b6ef5e4b3c0af970386ca56b777608ce95b7", size = 35681881, upload-time = "2025-09-11T17:42:13.255Z" }, + { url = "https://files.pythonhosted.org/packages/c1/5f/331148ea5780b4fcc7007a4a6a6ee0a0c1507a796365cc642d4d226e1c3a/scipy-1.16.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:af80196eaa84f033e48444d2e0786ec47d328ba00c71e4299b602235ffef9acb", size = 36006219, upload-time = "2025-09-11T17:42:18.765Z" }, + { url = "https://files.pythonhosted.org/packages/46/3a/e991aa9d2aec723b4a8dcfbfc8365edec5d5e5f9f133888067f1cbb7dfc1/scipy-1.16.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:9fb1eb735fe3d6ed1f89918224e3385fbf6f9e23757cacc35f9c78d3b712dd6e", size = 38682147, upload-time = "2025-09-11T17:42:25.177Z" }, + { url = "https://files.pythonhosted.org/packages/a1/57/0f38e396ad19e41b4c5db66130167eef8ee620a49bc7d0512e3bb67e0cab/scipy-1.16.2-cp313-cp313-win_amd64.whl", hash = "sha256:fda714cf45ba43c9d3bae8f2585c777f64e3f89a2e073b668b32ede412d8f52c", size = 38520766, upload-time = "2025-09-11T17:43:25.342Z" }, + { url = "https://files.pythonhosted.org/packages/1b/a5/85d3e867b6822d331e26c862a91375bb7746a0b458db5effa093d34cdb89/scipy-1.16.2-cp313-cp313-win_arm64.whl", hash = "sha256:2f5350da923ccfd0b00e07c3e5cfb316c1c0d6c1d864c07a72d092e9f20db104", size = 25451169, upload-time = "2025-09-11T17:43:30.198Z" }, + { url = "https://files.pythonhosted.org/packages/09/d9/60679189bcebda55992d1a45498de6d080dcaf21ce0c8f24f888117e0c2d/scipy-1.16.2-cp313-cp313t-macosx_10_14_x86_64.whl", hash = "sha256:53d8d2ee29b925344c13bda64ab51785f016b1b9617849dac10897f0701b20c1", size = 37012682, upload-time = "2025-09-11T17:42:30.677Z" }, + { url = "https://files.pythonhosted.org/packages/83/be/a99d13ee4d3b7887a96f8c71361b9659ba4ef34da0338f14891e102a127f/scipy-1.16.2-cp313-cp313t-macosx_12_0_arm64.whl", hash = "sha256:9e05e33657efb4c6a9d23bd8300101536abd99c85cca82da0bffff8d8764d08a", size = 29389926, upload-time = "2025-09-11T17:42:35.845Z" }, + { url = "https://files.pythonhosted.org/packages/bf/0a/130164a4881cec6ca8c00faf3b57926f28ed429cd6001a673f83c7c2a579/scipy-1.16.2-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:7fe65b36036357003b3ef9d37547abeefaa353b237e989c21027b8ed62b12d4f", size = 21381152, upload-time = "2025-09-11T17:42:40.07Z" }, + { url = "https://files.pythonhosted.org/packages/47/a6/503ffb0310ae77fba874e10cddfc4a1280bdcca1d13c3751b8c3c2996cf8/scipy-1.16.2-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:6406d2ac6d40b861cccf57f49592f9779071655e9f75cd4f977fa0bdd09cb2e4", size = 23914410, upload-time = "2025-09-11T17:42:44.313Z" }, + { url = "https://files.pythonhosted.org/packages/fa/c7/1147774bcea50d00c02600aadaa919facbd8537997a62496270133536ed6/scipy-1.16.2-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:ff4dc42bd321991fbf611c23fc35912d690f731c9914bf3af8f417e64aca0f21", size = 33481880, upload-time = "2025-09-11T17:42:49.325Z" }, + { url = "https://files.pythonhosted.org/packages/6a/74/99d5415e4c3e46b2586f30cdbecb95e101c7192628a484a40dd0d163811a/scipy-1.16.2-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:654324826654d4d9133e10675325708fb954bc84dae6e9ad0a52e75c6b1a01d7", size = 35791425, upload-time = "2025-09-11T17:42:54.711Z" }, + { url = "https://files.pythonhosted.org/packages/1b/ee/a6559de7c1cc710e938c0355d9d4fbcd732dac4d0d131959d1f3b63eb29c/scipy-1.16.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:63870a84cd15c44e65220eaed2dac0e8f8b26bbb991456a033c1d9abfe8a94f8", size = 36178622, upload-time = "2025-09-11T17:43:00.375Z" }, + { url = "https://files.pythonhosted.org/packages/4e/7b/f127a5795d5ba8ece4e0dce7d4a9fb7cb9e4f4757137757d7a69ab7d4f1a/scipy-1.16.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:fa01f0f6a3050fa6a9771a95d5faccc8e2f5a92b4a2e5440a0fa7264a2398472", size = 38783985, upload-time = "2025-09-11T17:43:06.661Z" }, + { url = "https://files.pythonhosted.org/packages/3e/9f/bc81c1d1e033951eb5912cd3750cc005943afa3e65a725d2443a3b3c4347/scipy-1.16.2-cp313-cp313t-win_amd64.whl", hash = "sha256:116296e89fba96f76353a8579820c2512f6e55835d3fad7780fece04367de351", size = 38631367, upload-time = "2025-09-11T17:43:14.44Z" }, + { url = "https://files.pythonhosted.org/packages/d6/5e/2cc7555fd81d01814271412a1d59a289d25f8b63208a0a16c21069d55d3e/scipy-1.16.2-cp313-cp313t-win_arm64.whl", hash = "sha256:98e22834650be81d42982360382b43b17f7ba95e0e6993e2a4f5b9ad9283a94d", size = 25787992, upload-time = "2025-09-11T17:43:19.745Z" }, + { url = "https://files.pythonhosted.org/packages/8b/ac/ad8951250516db71619f0bd3b2eb2448db04b720a003dd98619b78b692c0/scipy-1.16.2-cp314-cp314-macosx_10_14_x86_64.whl", hash = "sha256:567e77755019bb7461513c87f02bb73fb65b11f049aaaa8ca17cfaa5a5c45d77", size = 36595109, upload-time = "2025-09-11T17:43:35.713Z" }, + { url = "https://files.pythonhosted.org/packages/ff/f6/5779049ed119c5b503b0f3dc6d6f3f68eefc3a9190d4ad4c276f854f051b/scipy-1.16.2-cp314-cp314-macosx_12_0_arm64.whl", hash = "sha256:17d9bb346194e8967296621208fcdfd39b55498ef7d2f376884d5ac47cec1a70", size = 28859110, upload-time = "2025-09-11T17:43:40.814Z" }, + { url = "https://files.pythonhosted.org/packages/82/09/9986e410ae38bf0a0c737ff8189ac81a93b8e42349aac009891c054403d7/scipy-1.16.2-cp314-cp314-macosx_14_0_arm64.whl", hash = "sha256:0a17541827a9b78b777d33b623a6dcfe2ef4a25806204d08ead0768f4e529a88", size = 20850110, upload-time = "2025-09-11T17:43:44.981Z" }, + { url = "https://files.pythonhosted.org/packages/0d/ad/485cdef2d9215e2a7df6d61b81d2ac073dfacf6ae24b9ae87274c4e936ae/scipy-1.16.2-cp314-cp314-macosx_14_0_x86_64.whl", hash = "sha256:d7d4c6ba016ffc0f9568d012f5f1eb77ddd99412aea121e6fa8b4c3b7cbad91f", size = 23497014, upload-time = "2025-09-11T17:43:49.074Z" }, + { url = "https://files.pythonhosted.org/packages/a7/74/f6a852e5d581122b8f0f831f1d1e32fb8987776ed3658e95c377d308ed86/scipy-1.16.2-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:9702c4c023227785c779cba2e1d6f7635dbb5b2e0936cdd3a4ecb98d78fd41eb", size = 33401155, upload-time = "2025-09-11T17:43:54.661Z" }, + { url = "https://files.pythonhosted.org/packages/d9/f5/61d243bbc7c6e5e4e13dde9887e84a5cbe9e0f75fd09843044af1590844e/scipy-1.16.2-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:d1cdf0ac28948d225decdefcc45ad7dd91716c29ab56ef32f8e0d50657dffcc7", size = 35691174, upload-time = "2025-09-11T17:44:00.101Z" }, + { url = "https://files.pythonhosted.org/packages/03/99/59933956331f8cc57e406cdb7a483906c74706b156998f322913e789c7e1/scipy-1.16.2-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:70327d6aa572a17c2941cdfb20673f82e536e91850a2e4cb0c5b858b690e1548", size = 36070752, upload-time = "2025-09-11T17:44:05.619Z" }, + { url = "https://files.pythonhosted.org/packages/c6/7d/00f825cfb47ee19ef74ecf01244b43e95eae74e7e0ff796026ea7cd98456/scipy-1.16.2-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:5221c0b2a4b58aa7c4ed0387d360fd90ee9086d383bb34d9f2789fafddc8a936", size = 38701010, upload-time = "2025-09-11T17:44:11.322Z" }, + { url = "https://files.pythonhosted.org/packages/e4/9f/b62587029980378304ba5a8563d376c96f40b1e133daacee76efdcae32de/scipy-1.16.2-cp314-cp314-win_amd64.whl", hash = "sha256:f5a85d7b2b708025af08f060a496dd261055b617d776fc05a1a1cc69e09fe9ff", size = 39360061, upload-time = "2025-09-11T17:45:09.814Z" }, + { url = "https://files.pythonhosted.org/packages/82/04/7a2f1609921352c7fbee0815811b5050582f67f19983096c4769867ca45f/scipy-1.16.2-cp314-cp314-win_arm64.whl", hash = "sha256:2cc73a33305b4b24556957d5857d6253ce1e2dcd67fa0ff46d87d1670b3e1e1d", size = 26126914, upload-time = "2025-09-11T17:45:14.73Z" }, + { url = "https://files.pythonhosted.org/packages/51/b9/60929ce350c16b221928725d2d1d7f86cf96b8bc07415547057d1196dc92/scipy-1.16.2-cp314-cp314t-macosx_10_14_x86_64.whl", hash = "sha256:9ea2a3fed83065d77367775d689401a703d0f697420719ee10c0780bcab594d8", size = 37013193, upload-time = "2025-09-11T17:44:16.757Z" }, + { url = "https://files.pythonhosted.org/packages/2a/41/ed80e67782d4bc5fc85a966bc356c601afddd175856ba7c7bb6d9490607e/scipy-1.16.2-cp314-cp314t-macosx_12_0_arm64.whl", hash = "sha256:7280d926f11ca945c3ef92ba960fa924e1465f8d07ce3a9923080363390624c4", size = 29390172, upload-time = "2025-09-11T17:44:21.783Z" }, + { url = "https://files.pythonhosted.org/packages/c4/a3/2f673ace4090452696ccded5f5f8efffb353b8f3628f823a110e0170b605/scipy-1.16.2-cp314-cp314t-macosx_14_0_arm64.whl", hash = "sha256:8afae1756f6a1fe04636407ef7dbece33d826a5d462b74f3d0eb82deabefd831", size = 21381326, upload-time = "2025-09-11T17:44:25.982Z" }, + { url = "https://files.pythonhosted.org/packages/42/bf/59df61c5d51395066c35836b78136accf506197617c8662e60ea209881e1/scipy-1.16.2-cp314-cp314t-macosx_14_0_x86_64.whl", hash = "sha256:5c66511f29aa8d233388e7416a3f20d5cae7a2744d5cee2ecd38c081f4e861b3", size = 23915036, upload-time = "2025-09-11T17:44:30.527Z" }, + { url = "https://files.pythonhosted.org/packages/91/c3/edc7b300dc16847ad3672f1a6f3f7c5d13522b21b84b81c265f4f2760d4a/scipy-1.16.2-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:efe6305aeaa0e96b0ccca5ff647a43737d9a092064a3894e46c414db84bc54ac", size = 33484341, upload-time = "2025-09-11T17:44:35.981Z" }, + { url = "https://files.pythonhosted.org/packages/26/c7/24d1524e72f06ff141e8d04b833c20db3021020563272ccb1b83860082a9/scipy-1.16.2-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:7f3a337d9ae06a1e8d655ee9d8ecb835ea5ddcdcbd8d23012afa055ab014f374", size = 35790840, upload-time = "2025-09-11T17:44:41.76Z" }, + { url = "https://files.pythonhosted.org/packages/aa/b7/5aaad984eeedd56858dc33d75efa59e8ce798d918e1033ef62d2708f2c3d/scipy-1.16.2-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:bab3605795d269067d8ce78a910220262711b753de8913d3deeaedb5dded3bb6", size = 36174716, upload-time = "2025-09-11T17:44:47.316Z" }, + { url = "https://files.pythonhosted.org/packages/fd/c2/e276a237acb09824822b0ada11b028ed4067fdc367a946730979feacb870/scipy-1.16.2-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:b0348d8ddb55be2a844c518cd8cc8deeeb8aeba707cf834db5758fc89b476a2c", size = 38790088, upload-time = "2025-09-11T17:44:53.011Z" }, + { url = "https://files.pythonhosted.org/packages/c6/b4/5c18a766e8353015439f3780f5fc473f36f9762edc1a2e45da3ff5a31b21/scipy-1.16.2-cp314-cp314t-win_amd64.whl", hash = "sha256:26284797e38b8a75e14ea6631d29bda11e76ceaa6ddb6fdebbfe4c4d90faf2f9", size = 39457455, upload-time = "2025-09-11T17:44:58.899Z" }, + { url = "https://files.pythonhosted.org/packages/97/30/2f9a5243008f76dfc5dee9a53dfb939d9b31e16ce4bd4f2e628bfc5d89d2/scipy-1.16.2-cp314-cp314t-win_arm64.whl", hash = "sha256:d2a4472c231328d4de38d5f1f68fdd6d28a615138f842580a8a321b5845cf779", size = 26448374, upload-time = "2025-09-11T17:45:03.45Z" }, +] + +[[package]] +name = "semver" +version = "3.0.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/72/d1/d3159231aec234a59dd7d601e9dd9fe96f3afff15efd33c1070019b26132/semver-3.0.4.tar.gz", hash = "sha256:afc7d8c584a5ed0a11033af086e8af226a9c0b206f313e0301f8dd7b6b589602", size = 269730, upload-time = "2025-01-24T13:19:27.617Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a6/24/4d91e05817e92e3a61c8a21e08fd0f390f5301f1c448b137c57c4bc6e543/semver-3.0.4-py3-none-any.whl", hash = "sha256:9c824d87ba7f7ab4a1890799cec8596f15c1241cb473404ea1cb0c55e4b04746", size = 17912, upload-time = "2025-01-24T13:19:24.949Z" }, +] + +[[package]] +name = "six" +version = "1.17.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/94/e7/b2c673351809dca68a0e064b6af791aa332cf192da575fd474ed7d6f16a2/six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81", size = 34031, upload-time = "2024-12-04T17:35:28.174Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274", size = 11050, upload-time = "2024-12-04T17:35:26.475Z" }, +] + +[[package]] +name = "stack-data" +version = "0.6.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "asttokens" }, + { name = "executing" }, + { name = "pure-eval" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/28/e3/55dcc2cfbc3ca9c29519eb6884dd1415ecb53b0e934862d3559ddcb7e20b/stack_data-0.6.3.tar.gz", hash = "sha256:836a778de4fec4dcd1dcd89ed8abff8a221f58308462e1c4aa2a3cf30148f0b9", size = 44707, upload-time = "2023-09-30T13:58:05.479Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f1/7b/ce1eafaf1a76852e2ec9b22edecf1daa58175c090266e9f6c64afcd81d91/stack_data-0.6.3-py3-none-any.whl", hash = "sha256:d5558e0c25a4cb0853cddad3d77da9891a08cb85dd9f9f91b9f8cd66e511e695", size = 24521, upload-time = "2023-09-30T13:58:03.53Z" }, +] + +[[package]] +name = "threadpoolctl" +version = "3.6.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/b7/4d/08c89e34946fce2aec4fbb45c9016efd5f4d7f24af8e5d93296e935631d8/threadpoolctl-3.6.0.tar.gz", hash = "sha256:8ab8b4aa3491d812b623328249fab5302a68d2d71745c8a4c719a2fcaba9f44e", size = 21274, upload-time = "2025-03-13T13:49:23.031Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/32/d5/f9a850d79b0851d1d4ef6456097579a9005b31fea68726a4ae5f2d82ddd9/threadpoolctl-3.6.0-py3-none-any.whl", hash = "sha256:43a0b8fd5a2928500110039e43a5eed8480b918967083ea48dc3ab9f13c4a7fb", size = 18638, upload-time = "2025-03-13T13:49:21.846Z" }, +] + +[[package]] +name = "tomli" +version = "2.3.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/52/ed/3f73f72945444548f33eba9a87fc7a6e969915e7b1acc8260b30e1f76a2f/tomli-2.3.0.tar.gz", hash = "sha256:64be704a875d2a59753d80ee8a533c3fe183e3f06807ff7dc2232938ccb01549", size = 17392, upload-time = "2025-10-08T22:01:47.119Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b3/2e/299f62b401438d5fe1624119c723f5d877acc86a4c2492da405626665f12/tomli-2.3.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:88bd15eb972f3664f5ed4b57c1634a97153b4bac4479dcb6a495f41921eb7f45", size = 153236, upload-time = "2025-10-08T22:01:00.137Z" }, + { url = "https://files.pythonhosted.org/packages/86/7f/d8fffe6a7aefdb61bced88fcb5e280cfd71e08939da5894161bd71bea022/tomli-2.3.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:883b1c0d6398a6a9d29b508c331fa56adbcdff647f6ace4dfca0f50e90dfd0ba", size = 148084, upload-time = "2025-10-08T22:01:01.63Z" }, + { url = "https://files.pythonhosted.org/packages/47/5c/24935fb6a2ee63e86d80e4d3b58b222dafaf438c416752c8b58537c8b89a/tomli-2.3.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d1381caf13ab9f300e30dd8feadb3de072aeb86f1d34a8569453ff32a7dea4bf", size = 234832, upload-time = "2025-10-08T22:01:02.543Z" }, + { url = "https://files.pythonhosted.org/packages/89/da/75dfd804fc11e6612846758a23f13271b76d577e299592b4371a4ca4cd09/tomli-2.3.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a0e285d2649b78c0d9027570d4da3425bdb49830a6156121360b3f8511ea3441", size = 242052, upload-time = "2025-10-08T22:01:03.836Z" }, + { url = "https://files.pythonhosted.org/packages/70/8c/f48ac899f7b3ca7eb13af73bacbc93aec37f9c954df3c08ad96991c8c373/tomli-2.3.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:0a154a9ae14bfcf5d8917a59b51ffd5a3ac1fd149b71b47a3a104ca4edcfa845", size = 239555, upload-time = "2025-10-08T22:01:04.834Z" }, + { url = "https://files.pythonhosted.org/packages/ba/28/72f8afd73f1d0e7829bfc093f4cb98ce0a40ffc0cc997009ee1ed94ba705/tomli-2.3.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:74bf8464ff93e413514fefd2be591c3b0b23231a77f901db1eb30d6f712fc42c", size = 245128, upload-time = "2025-10-08T22:01:05.84Z" }, + { url = "https://files.pythonhosted.org/packages/b6/eb/a7679c8ac85208706d27436e8d421dfa39d4c914dcf5fa8083a9305f58d9/tomli-2.3.0-cp311-cp311-win32.whl", hash = "sha256:00b5f5d95bbfc7d12f91ad8c593a1659b6387b43f054104cda404be6bda62456", size = 96445, upload-time = "2025-10-08T22:01:06.896Z" }, + { url = "https://files.pythonhosted.org/packages/0a/fe/3d3420c4cb1ad9cb462fb52967080575f15898da97e21cb6f1361d505383/tomli-2.3.0-cp311-cp311-win_amd64.whl", hash = "sha256:4dc4ce8483a5d429ab602f111a93a6ab1ed425eae3122032db7e9acf449451be", size = 107165, upload-time = "2025-10-08T22:01:08.107Z" }, + { url = "https://files.pythonhosted.org/packages/ff/b7/40f36368fcabc518bb11c8f06379a0fd631985046c038aca08c6d6a43c6e/tomli-2.3.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:d7d86942e56ded512a594786a5ba0a5e521d02529b3826e7761a05138341a2ac", size = 154891, upload-time = "2025-10-08T22:01:09.082Z" }, + { url = "https://files.pythonhosted.org/packages/f9/3f/d9dd692199e3b3aab2e4e4dd948abd0f790d9ded8cd10cbaae276a898434/tomli-2.3.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:73ee0b47d4dad1c5e996e3cd33b8a76a50167ae5f96a2607cbe8cc773506ab22", size = 148796, upload-time = "2025-10-08T22:01:10.266Z" }, + { url = "https://files.pythonhosted.org/packages/60/83/59bff4996c2cf9f9387a0f5a3394629c7efa5ef16142076a23a90f1955fa/tomli-2.3.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:792262b94d5d0a466afb5bc63c7daa9d75520110971ee269152083270998316f", size = 242121, upload-time = "2025-10-08T22:01:11.332Z" }, + { url = "https://files.pythonhosted.org/packages/45/e5/7c5119ff39de8693d6baab6c0b6dcb556d192c165596e9fc231ea1052041/tomli-2.3.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4f195fe57ecceac95a66a75ac24d9d5fbc98ef0962e09b2eddec5d39375aae52", size = 250070, upload-time = "2025-10-08T22:01:12.498Z" }, + { url = "https://files.pythonhosted.org/packages/45/12/ad5126d3a278f27e6701abde51d342aa78d06e27ce2bb596a01f7709a5a2/tomli-2.3.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:e31d432427dcbf4d86958c184b9bfd1e96b5b71f8eb17e6d02531f434fd335b8", size = 245859, upload-time = "2025-10-08T22:01:13.551Z" }, + { url = "https://files.pythonhosted.org/packages/fb/a1/4d6865da6a71c603cfe6ad0e6556c73c76548557a8d658f9e3b142df245f/tomli-2.3.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:7b0882799624980785240ab732537fcfc372601015c00f7fc367c55308c186f6", size = 250296, upload-time = "2025-10-08T22:01:14.614Z" }, + { url = "https://files.pythonhosted.org/packages/a0/b7/a7a7042715d55c9ba6e8b196d65d2cb662578b4d8cd17d882d45322b0d78/tomli-2.3.0-cp312-cp312-win32.whl", hash = "sha256:ff72b71b5d10d22ecb084d345fc26f42b5143c5533db5e2eaba7d2d335358876", size = 97124, upload-time = "2025-10-08T22:01:15.629Z" }, + { url = "https://files.pythonhosted.org/packages/06/1e/f22f100db15a68b520664eb3328fb0ae4e90530887928558112c8d1f4515/tomli-2.3.0-cp312-cp312-win_amd64.whl", hash = "sha256:1cb4ed918939151a03f33d4242ccd0aa5f11b3547d0cf30f7c74a408a5b99878", size = 107698, upload-time = "2025-10-08T22:01:16.51Z" }, + { url = "https://files.pythonhosted.org/packages/89/48/06ee6eabe4fdd9ecd48bf488f4ac783844fd777f547b8d1b61c11939974e/tomli-2.3.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:5192f562738228945d7b13d4930baffda67b69425a7f0da96d360b0a3888136b", size = 154819, upload-time = "2025-10-08T22:01:17.964Z" }, + { url = "https://files.pythonhosted.org/packages/f1/01/88793757d54d8937015c75dcdfb673c65471945f6be98e6a0410fba167ed/tomli-2.3.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:be71c93a63d738597996be9528f4abe628d1adf5e6eb11607bc8fe1a510b5dae", size = 148766, upload-time = "2025-10-08T22:01:18.959Z" }, + { url = "https://files.pythonhosted.org/packages/42/17/5e2c956f0144b812e7e107f94f1cc54af734eb17b5191c0bbfb72de5e93e/tomli-2.3.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c4665508bcbac83a31ff8ab08f424b665200c0e1e645d2bd9ab3d3e557b6185b", size = 240771, upload-time = "2025-10-08T22:01:20.106Z" }, + { url = "https://files.pythonhosted.org/packages/d5/f4/0fbd014909748706c01d16824eadb0307115f9562a15cbb012cd9b3512c5/tomli-2.3.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4021923f97266babc6ccab9f5068642a0095faa0a51a246a6a02fccbb3514eaf", size = 248586, upload-time = "2025-10-08T22:01:21.164Z" }, + { url = "https://files.pythonhosted.org/packages/30/77/fed85e114bde5e81ecf9bc5da0cc69f2914b38f4708c80ae67d0c10180c5/tomli-2.3.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:a4ea38c40145a357d513bffad0ed869f13c1773716cf71ccaa83b0fa0cc4e42f", size = 244792, upload-time = "2025-10-08T22:01:22.417Z" }, + { url = "https://files.pythonhosted.org/packages/55/92/afed3d497f7c186dc71e6ee6d4fcb0acfa5f7d0a1a2878f8beae379ae0cc/tomli-2.3.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:ad805ea85eda330dbad64c7ea7a4556259665bdf9d2672f5dccc740eb9d3ca05", size = 248909, upload-time = "2025-10-08T22:01:23.859Z" }, + { url = "https://files.pythonhosted.org/packages/f8/84/ef50c51b5a9472e7265ce1ffc7f24cd4023d289e109f669bdb1553f6a7c2/tomli-2.3.0-cp313-cp313-win32.whl", hash = "sha256:97d5eec30149fd3294270e889b4234023f2c69747e555a27bd708828353ab606", size = 96946, upload-time = "2025-10-08T22:01:24.893Z" }, + { url = "https://files.pythonhosted.org/packages/b2/b7/718cd1da0884f281f95ccfa3a6cc572d30053cba64603f79d431d3c9b61b/tomli-2.3.0-cp313-cp313-win_amd64.whl", hash = "sha256:0c95ca56fbe89e065c6ead5b593ee64b84a26fca063b5d71a1122bf26e533999", size = 107705, upload-time = "2025-10-08T22:01:26.153Z" }, + { url = "https://files.pythonhosted.org/packages/19/94/aeafa14a52e16163008060506fcb6aa1949d13548d13752171a755c65611/tomli-2.3.0-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:cebc6fe843e0733ee827a282aca4999b596241195f43b4cc371d64fc6639da9e", size = 154244, upload-time = "2025-10-08T22:01:27.06Z" }, + { url = "https://files.pythonhosted.org/packages/db/e4/1e58409aa78eefa47ccd19779fc6f36787edbe7d4cd330eeeedb33a4515b/tomli-2.3.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:4c2ef0244c75aba9355561272009d934953817c49f47d768070c3c94355c2aa3", size = 148637, upload-time = "2025-10-08T22:01:28.059Z" }, + { url = "https://files.pythonhosted.org/packages/26/b6/d1eccb62f665e44359226811064596dd6a366ea1f985839c566cd61525ae/tomli-2.3.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c22a8bf253bacc0cf11f35ad9808b6cb75ada2631c2d97c971122583b129afbc", size = 241925, upload-time = "2025-10-08T22:01:29.066Z" }, + { url = "https://files.pythonhosted.org/packages/70/91/7cdab9a03e6d3d2bb11beae108da5bdc1c34bdeb06e21163482544ddcc90/tomli-2.3.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0eea8cc5c5e9f89c9b90c4896a8deefc74f518db5927d0e0e8d4a80953d774d0", size = 249045, upload-time = "2025-10-08T22:01:31.98Z" }, + { url = "https://files.pythonhosted.org/packages/15/1b/8c26874ed1f6e4f1fcfeb868db8a794cbe9f227299402db58cfcc858766c/tomli-2.3.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:b74a0e59ec5d15127acdabd75ea17726ac4c5178ae51b85bfe39c4f8a278e879", size = 245835, upload-time = "2025-10-08T22:01:32.989Z" }, + { url = "https://files.pythonhosted.org/packages/fd/42/8e3c6a9a4b1a1360c1a2a39f0b972cef2cc9ebd56025168c4137192a9321/tomli-2.3.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:b5870b50c9db823c595983571d1296a6ff3e1b88f734a4c8f6fc6188397de005", size = 253109, upload-time = "2025-10-08T22:01:34.052Z" }, + { url = "https://files.pythonhosted.org/packages/22/0c/b4da635000a71b5f80130937eeac12e686eefb376b8dee113b4a582bba42/tomli-2.3.0-cp314-cp314-win32.whl", hash = "sha256:feb0dacc61170ed7ab602d3d972a58f14ee3ee60494292d384649a3dc38ef463", size = 97930, upload-time = "2025-10-08T22:01:35.082Z" }, + { url = "https://files.pythonhosted.org/packages/b9/74/cb1abc870a418ae99cd5c9547d6bce30701a954e0e721821df483ef7223c/tomli-2.3.0-cp314-cp314-win_amd64.whl", hash = "sha256:b273fcbd7fc64dc3600c098e39136522650c49bca95df2d11cf3b626422392c8", size = 107964, upload-time = "2025-10-08T22:01:36.057Z" }, + { url = "https://files.pythonhosted.org/packages/54/78/5c46fff6432a712af9f792944f4fcd7067d8823157949f4e40c56b8b3c83/tomli-2.3.0-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:940d56ee0410fa17ee1f12b817b37a4d4e4dc4d27340863cc67236c74f582e77", size = 163065, upload-time = "2025-10-08T22:01:37.27Z" }, + { url = "https://files.pythonhosted.org/packages/39/67/f85d9bd23182f45eca8939cd2bc7050e1f90c41f4a2ecbbd5963a1d1c486/tomli-2.3.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:f85209946d1fe94416debbb88d00eb92ce9cd5266775424ff81bc959e001acaf", size = 159088, upload-time = "2025-10-08T22:01:38.235Z" }, + { url = "https://files.pythonhosted.org/packages/26/5a/4b546a0405b9cc0659b399f12b6adb750757baf04250b148d3c5059fc4eb/tomli-2.3.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a56212bdcce682e56b0aaf79e869ba5d15a6163f88d5451cbde388d48b13f530", size = 268193, upload-time = "2025-10-08T22:01:39.712Z" }, + { url = "https://files.pythonhosted.org/packages/42/4f/2c12a72ae22cf7b59a7fe75b3465b7aba40ea9145d026ba41cb382075b0e/tomli-2.3.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c5f3ffd1e098dfc032d4d3af5c0ac64f6d286d98bc148698356847b80fa4de1b", size = 275488, upload-time = "2025-10-08T22:01:40.773Z" }, + { url = "https://files.pythonhosted.org/packages/92/04/a038d65dbe160c3aa5a624e93ad98111090f6804027d474ba9c37c8ae186/tomli-2.3.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:5e01decd096b1530d97d5d85cb4dff4af2d8347bd35686654a004f8dea20fc67", size = 272669, upload-time = "2025-10-08T22:01:41.824Z" }, + { url = "https://files.pythonhosted.org/packages/be/2f/8b7c60a9d1612a7cbc39ffcca4f21a73bf368a80fc25bccf8253e2563267/tomli-2.3.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:8a35dd0e643bb2610f156cca8db95d213a90015c11fee76c946aa62b7ae7e02f", size = 279709, upload-time = "2025-10-08T22:01:43.177Z" }, + { url = "https://files.pythonhosted.org/packages/7e/46/cc36c679f09f27ded940281c38607716c86cf8ba4a518d524e349c8b4874/tomli-2.3.0-cp314-cp314t-win32.whl", hash = "sha256:a1f7f282fe248311650081faafa5f4732bdbfef5d45fe3f2e702fbc6f2d496e0", size = 107563, upload-time = "2025-10-08T22:01:44.233Z" }, + { url = "https://files.pythonhosted.org/packages/84/ff/426ca8683cf7b753614480484f6437f568fd2fda2edbdf57a2d3d8b27a0b/tomli-2.3.0-cp314-cp314t-win_amd64.whl", hash = "sha256:70a251f8d4ba2d9ac2542eecf008b3c8a9fc5c3f9f02c56a9d7952612be2fdba", size = 119756, upload-time = "2025-10-08T22:01:45.234Z" }, + { url = "https://files.pythonhosted.org/packages/77/b8/0135fadc89e73be292b473cb820b4f5a08197779206b33191e801feeae40/tomli-2.3.0-py3-none-any.whl", hash = "sha256:e95b1af3c5b07d9e643909b5abbec77cd9f1217e6d0bca72b0234736b9fb1f1b", size = 14408, upload-time = "2025-10-08T22:01:46.04Z" }, +] + +[[package]] +name = "traitlets" +version = "5.14.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/eb/79/72064e6a701c2183016abbbfedaba506d81e30e232a68c9f0d6f6fcd1574/traitlets-5.14.3.tar.gz", hash = "sha256:9ed0579d3502c94b4b3732ac120375cda96f923114522847de4b3bb98b96b6b7", size = 161621, upload-time = "2024-04-19T11:11:49.746Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/00/c0/8f5d070730d7836adc9c9b6408dec68c6ced86b304a9b26a14df072a6e8c/traitlets-5.14.3-py3-none-any.whl", hash = "sha256:b74e89e397b1ed28cc831db7aea759ba6640cb3de13090ca145426688ff1ac4f", size = 85359, upload-time = "2024-04-19T11:11:46.763Z" }, +] + +[[package]] +name = "typing-extensions" +version = "4.15.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/72/94/1a15dd82efb362ac84269196e94cf00f187f7ed21c242792a923cdb1c61f/typing_extensions-4.15.0.tar.gz", hash = "sha256:0cea48d173cc12fa28ecabc3b837ea3cf6f38c6d1136f85cbaaf598984861466", size = 109391, upload-time = "2025-08-25T13:49:26.313Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/18/67/36e9267722cc04a6b9f15c7f3441c2363321a3ea07da7ae0c0707beb2a9c/typing_extensions-4.15.0-py3-none-any.whl", hash = "sha256:f0fa19c6845758ab08074a0cfa8b7aecb71c999ca73d62883bc25cc018c4e548", size = 44614, upload-time = "2025-08-25T13:49:24.86Z" }, +] + +[[package]] +name = "typing-inspection" +version = "0.4.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/55/e3/70399cb7dd41c10ac53367ae42139cf4b1ca5f36bb3dc6c9d33acdb43655/typing_inspection-0.4.2.tar.gz", hash = "sha256:ba561c48a67c5958007083d386c3295464928b01faa735ab8547c5692e87f464", size = 75949, upload-time = "2025-10-01T02:14:41.687Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/dc/9b/47798a6c91d8bdb567fe2698fe81e0c6b7cb7ef4d13da4114b41d239f65d/typing_inspection-0.4.2-py3-none-any.whl", hash = "sha256:4ed1cacbdc298c220f1bd249ed5287caa16f34d44ef4e9c3d0cbad5b521545e7", size = 14611, upload-time = "2025-10-01T02:14:40.154Z" }, +] + +[[package]] +name = "tzdata" +version = "2025.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/95/32/1a225d6164441be760d75c2c42e2780dc0873fe382da3e98a2e1e48361e5/tzdata-2025.2.tar.gz", hash = "sha256:b60a638fcc0daffadf82fe0f57e53d06bdec2f36c4df66280ae79bce6bd6f2b9", size = 196380, upload-time = "2025-03-23T13:54:43.652Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5c/23/c7abc0ca0a1526a0774eca151daeb8de62ec457e77262b66b359c3c7679e/tzdata-2025.2-py2.py3-none-any.whl", hash = "sha256:1a403fada01ff9221ca8044d701868fa132215d84beb92242d9acd2147f667a8", size = 347839, upload-time = "2025-03-23T13:54:41.845Z" }, +] + +[[package]] +name = "virtualenv" +version = "20.35.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "distlib" }, + { name = "filelock", version = "3.19.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, + { name = "filelock", version = "3.20.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, + { name = "platformdirs", version = "4.4.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, + { name = "platformdirs", version = "4.5.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, + { name = "typing-extensions", marker = "python_full_version < '3.11'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/20/28/e6f1a6f655d620846bd9df527390ecc26b3805a0c5989048c210e22c5ca9/virtualenv-20.35.4.tar.gz", hash = "sha256:643d3914d73d3eeb0c552cbb12d7e82adf0e504dbf86a3182f8771a153a1971c", size = 6028799, upload-time = "2025-10-29T06:57:40.511Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/79/0c/c05523fa3181fdf0c9c52a6ba91a23fbf3246cc095f26f6516f9c60e6771/virtualenv-20.35.4-py3-none-any.whl", hash = "sha256:c21c9cede36c9753eeade68ba7d523529f228a403463376cf821eaae2b650f1b", size = 6005095, upload-time = "2025-10-29T06:57:37.598Z" }, +] + +[[package]] +name = "wcwidth" +version = "0.2.14" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/24/30/6b0809f4510673dc723187aeaf24c7f5459922d01e2f794277a3dfb90345/wcwidth-0.2.14.tar.gz", hash = "sha256:4d478375d31bc5395a3c55c40ccdf3354688364cd61c4f6adacaa9215d0b3605", size = 102293, upload-time = "2025-09-22T16:29:53.023Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/af/b5/123f13c975e9f27ab9c0770f514345bd406d0e8d3b7a0723af9d43f710af/wcwidth-0.2.14-py2.py3-none-any.whl", hash = "sha256:a7bb560c8aee30f9957e5f9895805edd20602f2d7f720186dfd906e82b4982e1", size = 37286, upload-time = "2025-09-22T16:29:51.641Z" }, +] + +[[package]] +name = "zipp" +version = "3.23.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/e3/02/0f2892c661036d50ede074e376733dca2ae7c6eb617489437771209d4180/zipp-3.23.0.tar.gz", hash = "sha256:a07157588a12518c9d4034df3fbbee09c814741a33ff63c05fa29d26a2404166", size = 25547, upload-time = "2025-06-08T17:06:39.4Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2e/54/647ade08bf0db230bfea292f893923872fd20be6ac6f53b2b936ba839d75/zipp-3.23.0-py3-none-any.whl", hash = "sha256:071652d6115ed432f5ce1d34c336c0adfd6a884660d1e9712a256d3d3bd4b14e", size = 10276, upload-time = "2025-06-08T17:06:38.034Z" }, +]